Changes in / [66f8528:5802a4f]


Ignore:
Files:
7 added
40 deleted
70 edited

Legend:

Unmodified
Added
Removed
  • .gitignore

    r66f8528 r5802a4f  
    2929src/driver/cfa-cpp
    3030
    31 src/prelude/builtins.cf
    32 src/prelude/extras.cf
     31src/libcfa/builtins.cf
     32src/libcfa/extras.cf
    3333src/libcfa/libcfa-prelude.c
    3434
  • Jenkinsfile

    r66f8528 r5802a4f  
    2323                //escapes the sandbox
    2424                //Also specify the compiler by hand
    25                 sh "./configure CXX=${currentCC.cpp_cc} ${flags} --with-backend-compiler=${currentCC.cfa_backend_cc} --prefix=${install_dir} --enable-silent-rules --quiet"
     25                sh "./configure CXX=${currentCC.cpp_cc} CXXFLAGS=${flags} CFAFLAGS=${flags} --with-backend-compiler=${currentCC.cfa_backend_cc} --prefix=${install_dir} --enable-silent-rules --quiet"
    2626
    2727                //Compile the project
     
    3333                dir ('src/tests') {
    3434                        if (full_build) {
    35                                 sh 'make all-tests debug=yes'
    36                                 sh 'make all-tests debug=no'
     35                                sh 'make all-tests'
    3736                        }
    3837                        else {
     
    167166
    168167                                bIsFullBuild = isFullBuild == 'true'
    169                                 architectureFlag = ''
    170                                 if (buildArchitecture == '64-bit') {
    171                                         architectureFlag = '--host=x86_64 CXXFLAGS="-m64" CFAFLAGS="-m64"'
    172                                 } else if (buildArchitecture == '32-bit'){
    173                                         architectureFlag = '--host=i386 CXXFLAGS="-m32" CFAFLAGS="-m32"'
    174                                 } else {
    175                                         architectureFlag = 'ERROR'
    176                                 }
     168                                architectureFlag = buildArchitecture == '64-bit' ? '-m64' : (buildArchitecture == '32-bit' ? '-m32' : 'ERROR')
    177169
    178170                                echo "FULL BUILD = ${isFullBuild}\nArchitecture = ${buildArchitecture} (flag ${architectureFlag})"
  • Makefile.am

    r66f8528 r5802a4f  
    1111## Created On       : Sun May 31 22:14:18 2015
    1212## Last Modified By : Peter A. Buhr
    13 ## Last Modified On : Wed Dec 14 14:20:48 2016
    14 ## Update Count     : 15
     13## Last Modified On : Fri Jun 17 14:56:18 2016
     14## Update Count     : 13
    1515###############################################################################
    1616
    1717AUTOMAKE_OPTIONS = foreign              # do not require all the GNU file names
    18 SUBDIRS = src/driver src src/prelude src/libcfa # order important, src before prelude because cfa-cpp used to build prelude
     18SUBDIRS = src/driver src src/libcfa     # order important, src before libcfa because cfa-cpp used to build prelude
    1919EXTRA_DIST = Docs                       # non-source files
    2020BACKEND_CC = @BACKEND_CC@               # C compiler used to compile Cforall programs, versus C++ compiler used to build cfa command
  • Makefile.in

    r66f8528 r5802a4f  
    3535PRE_UNINSTALL = :
    3636POST_UNINSTALL = :
    37 build_triplet = @build@
    38 host_triplet = @host@
    3937subdir = .
    4038DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
    4139        $(srcdir)/Makefile.in $(srcdir)/config.h.in \
    4240        $(top_srcdir)/configure INSTALL automake/compile \
    43         automake/config.guess automake/config.sub automake/depcomp \
    44         automake/install-sh automake/missing automake/ylwrap
     41        automake/depcomp automake/install-sh automake/missing \
     42        automake/ylwrap
    4543ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
    4644am__aclocal_m4_deps = $(top_srcdir)/configure.ac
     
    126124BACKEND_CC = @BACKEND_CC@               # C compiler used to compile Cforall programs, versus C++ compiler used to build cfa command
    127125CC = @CC@
    128 CCAS = @CCAS@
    129 CCASDEPMODE = @CCASDEPMODE@
    130 CCASFLAGS = @CCASFLAGS@
    131126CCDEPMODE = @CCDEPMODE@
    132127CFA_BACKEND_CC = @CFA_BACKEND_CC@
     
    163158LIBS = @LIBS@
    164159LTLIBOBJS = @LTLIBOBJS@
    165 MACHINE_TYPE = @MACHINE_TYPE@
    166160MAINT = @MAINT@
    167161MAKEINFO = @MAKEINFO@
     
    195189am__untar = @am__untar@
    196190bindir = @bindir@
    197 build = @build@
    198191build_alias = @build_alias@
    199 build_cpu = @build_cpu@
    200 build_os = @build_os@
    201 build_vendor = @build_vendor@
    202192builddir = @builddir@
    203193datadir = @datadir@
     
    206196dvidir = @dvidir@
    207197exec_prefix = @exec_prefix@
    208 host = @host@
    209198host_alias = @host_alias@
    210 host_cpu = @host_cpu@
    211 host_os = @host_os@
    212 host_vendor = @host_vendor@
    213199htmldir = @htmldir@
    214200includedir = @includedir@
     
    235221top_srcdir = @top_srcdir@
    236222AUTOMAKE_OPTIONS = foreign              # do not require all the GNU file names
    237 SUBDIRS = src/driver src src/prelude src/libcfa # order important, src before prelude because cfa-cpp used to build prelude
     223SUBDIRS = src/driver src src/libcfa     # order important, src before libcfa because cfa-cpp used to build prelude
    238224EXTRA_DIST = Docs                       # non-source files
    239225MAINTAINERCLEANFILES = lib/* bin/* src/examples/.deps/* src/tests/.deps/* src/tests/.out/*
  • aclocal.m4

    r66f8528 r5802a4f  
    6060_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
    6161
    62 # Figure out how to run the assembler.                      -*- Autoconf -*-
    63 
    64 # Copyright (C) 2001, 2003, 2004, 2005, 2006  Free Software Foundation, Inc.
    65 #
    66 # This file is free software; the Free Software Foundation
    67 # gives unlimited permission to copy and/or distribute it,
    68 # with or without modifications, as long as this notice is preserved.
    69 
    70 # serial 5
    71 
    72 # AM_PROG_AS
    73 # ----------
    74 AC_DEFUN([AM_PROG_AS],
    75 [# By default we simply use the C compiler to build assembly code.
    76 AC_REQUIRE([AC_PROG_CC])
    77 test "${CCAS+set}" = set || CCAS=$CC
    78 test "${CCASFLAGS+set}" = set || CCASFLAGS=$CFLAGS
    79 AC_ARG_VAR([CCAS],      [assembler compiler command (defaults to CC)])
    80 AC_ARG_VAR([CCASFLAGS], [assembler compiler flags (defaults to CFLAGS)])
    81 _AM_IF_OPTION([no-dependencies],, [_AM_DEPENDENCIES([CCAS])])dnl
    82 ])
    83 
    8462# AM_AUX_DIR_EXPAND                                         -*- Autoconf -*-
    8563
     
    135113# expand $ac_aux_dir to an absolute path
    136114am_aux_dir=`cd $ac_aux_dir && pwd`
    137 ])
    138 
    139 # AM_COND_IF                                            -*- Autoconf -*-
    140 
    141 # Copyright (C) 2008, 2010 Free Software Foundation, Inc.
    142 #
    143 # This file is free software; the Free Software Foundation
    144 # gives unlimited permission to copy and/or distribute it,
    145 # with or without modifications, as long as this notice is preserved.
    146 
    147 # serial 3
    148 
    149 # _AM_COND_IF
    150 # _AM_COND_ELSE
    151 # _AM_COND_ENDIF
    152 # --------------
    153 # These macros are only used for tracing.
    154 m4_define([_AM_COND_IF])
    155 m4_define([_AM_COND_ELSE])
    156 m4_define([_AM_COND_ENDIF])
    157 
    158 
    159 # AM_COND_IF(COND, [IF-TRUE], [IF-FALSE])
    160 # ---------------------------------------
    161 # If the shell condition COND is true, execute IF-TRUE, otherwise execute
    162 # IF-FALSE.  Allow automake to learn about conditional instantiating macros
    163 # (the AC_CONFIG_FOOS).
    164 AC_DEFUN([AM_COND_IF],
    165 [m4_ifndef([_AM_COND_VALUE_$1],
    166            [m4_fatal([$0: no such condition "$1"])])dnl
    167 _AM_COND_IF([$1])dnl
    168 if test -z "$$1_TRUE"; then :
    169   m4_n([$2])[]dnl
    170 m4_ifval([$3],
    171 [_AM_COND_ELSE([$1])dnl
    172 else
    173   $3
    174 ])dnl
    175 _AM_COND_ENDIF([$1])dnl
    176 fi[]dnl
    177115])
    178116
  • configure

    r66f8528 r5802a4f  
    616616YFLAGS
    617617YACC
    618 am__fastdepCCAS_FALSE
    619 am__fastdepCCAS_TRUE
    620 CCASDEPMODE
    621 CCASFLAGS
    622 CCAS
    623618am__fastdepCC_FALSE
    624619am__fastdepCC_TRUE
     
    644639CXXFLAGS
    645640CXX
    646 MACHINE_TYPE
    647 host_os
    648 host_vendor
    649 host_cpu
    650 host
    651 build_os
    652 build_vendor
    653 build_cpu
    654 build
    655641CFA_FLAGS
    656642CFA_LIBDIR
     
    658644CFA_INCDIR
    659645CFA_PREFIX
    660 BUILD_NO_LIB_FALSE
    661 BUILD_NO_LIB_TRUE
    662 BUILD_DEBUG_FALSE
    663 BUILD_DEBUG_TRUE
    664 BUILD_RELEASE_FALSE
    665 BUILD_RELEASE_TRUE
    666646CFA_BACKEND_CC
    667647BACKEND_CC
     
    740720enable_maintainer_mode
    741721with_backend_compiler
    742 enable_target_release
    743 enable_target_debug
    744722enable_dependency_tracking
    745723'
     
    755733CC
    756734CFLAGS
    757 CCAS
    758 CCASFLAGS
    759735YACC
    760736YFLAGS
     
    13631339  --program-suffix=SUFFIX            append SUFFIX to installed program names
    13641340  --program-transform-name=PROGRAM   run sed PROGRAM on installed program names
    1365 
    1366 System types:
    1367   --build=BUILD     configure for building on BUILD [guessed]
    1368   --host=HOST       cross-compile to build programs to run on HOST [BUILD]
    13691341_ACEOF
    13701342fi
     
    13841356  --disable-maintainer-mode  disable make rules and dependencies not useful
    13851357                          (and sometimes confusing) to the casual installer
    1386   --enable-target-release Build and install the release target
    1387   --enable-target-debug   Build and install the debug target
    13881358  --disable-dependency-tracking  speeds up one-time build
    13891359  --enable-dependency-tracking   do not reject slow dependency extractors
     
    14041374  CC          C compiler command
    14051375  CFLAGS      C compiler flags
    1406   CCAS        assembler compiler command (defaults to CC)
    1407   CCASFLAGS   assembler compiler flags (defaults to CFLAGS)
    14081376  YACC        The `Yet Another Compiler Compiler' implementation to use.
    14091377              Defaults to the first program found out of: `bison -y', `byacc',
     
    31113079
    31123080
    3113 
    3114 
    3115 # Check whether --enable-target-release was given.
    3116 if test "${enable_target_release+set}" = set; then :
    3117   enableval=$enable_target_release;
    3118 fi
    3119 
    3120 # Check whether --enable-target-debug was given.
    3121 if test "${enable_target_debug+set}" = set; then :
    3122   enableval=$enable_target_debug;
    3123 fi
    3124 
    3125 
    3126 case "$enable_target_release" in
    3127         yes)
    3128                 case "$enable_target_debug" in
    3129                         yes)
    3130                                 build_release="yes"
    3131                                 build_debug="yes"
    3132                                 ;;
    3133                         no)
    3134                                 build_release="yes"
    3135                                 build_debug="no"
    3136                                 ;;
    3137                         *)
    3138                                 build_release="yes"
    3139                                 build_debug="no"
    3140                                 ;;
    3141                 esac
    3142                 ;;
    3143         no)
    3144                 case "$enable_target_debug" in
    3145                         yes)
    3146                                 build_release="no"
    3147                                 build_debug="yes"
    3148                                 ;;
    3149                         no)
    3150                                 build_release="no"
    3151                                 build_debug="no"
    3152                                 ;;
    3153                         *)
    3154                                 build_release="no"
    3155                                 build_debug="yes"
    3156                                 ;;
    3157                 esac
    3158                 ;;
    3159         *)
    3160                 case "$enable_target_debug" in
    3161                         yes)
    3162                                 build_release="no"
    3163                                 build_debug="yes"
    3164                                 ;;
    3165                         no)
    3166                                 build_release="yes"
    3167                                 build_debug="no"
    3168                                 ;;
    3169                         *)
    3170                                 build_release="yes"
    3171                                 build_debug="yes"
    3172                                 ;;
    3173                 esac
    3174                 ;;
    3175 esac
    3176 
    3177  if test "x$build_release" = "xyes"; then
    3178   BUILD_RELEASE_TRUE=
    3179   BUILD_RELEASE_FALSE='#'
    3180 else
    3181   BUILD_RELEASE_TRUE='#'
    3182   BUILD_RELEASE_FALSE=
    3183 fi
    3184 
    3185  if test "x$build_debug" = "xyes"; then
    3186   BUILD_DEBUG_TRUE=
    3187   BUILD_DEBUG_FALSE='#'
    3188 else
    3189   BUILD_DEBUG_TRUE='#'
    3190   BUILD_DEBUG_FALSE=
    3191 fi
    3192 
    3193  if test "x$build_release$build_debug" = "xnono"; then
    3194   BUILD_NO_LIB_TRUE=
    3195   BUILD_NO_LIB_FALSE='#'
    3196 else
    3197   BUILD_NO_LIB_TRUE='#'
    3198   BUILD_NO_LIB_FALSE=
    3199 fi
    3200 
    3201 
    32023081if test "x$prefix" = "xNONE"; then
    32033082        cfa_prefix=${ac_default_prefix}
     
    32583137
    32593138CFA_FLAGS=${CFAFLAGS}
    3260 
    3261 
    3262 # Make sure we can run config.sub.
    3263 $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
    3264   as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
    3265 
    3266 { $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
    3267 $as_echo_n "checking build system type... " >&6; }
    3268 if ${ac_cv_build+:} false; then :
    3269   $as_echo_n "(cached) " >&6
    3270 else
    3271   ac_build_alias=$build_alias
    3272 test "x$ac_build_alias" = x &&
    3273   ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
    3274 test "x$ac_build_alias" = x &&
    3275   as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
    3276 ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
    3277   as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
    3278 
    3279 fi
    3280 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
    3281 $as_echo "$ac_cv_build" >&6; }
    3282 case $ac_cv_build in
    3283 *-*-*) ;;
    3284 *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;;
    3285 esac
    3286 build=$ac_cv_build
    3287 ac_save_IFS=$IFS; IFS='-'
    3288 set x $ac_cv_build
    3289 shift
    3290 build_cpu=$1
    3291 build_vendor=$2
    3292 shift; shift
    3293 # Remember, the first character of IFS is used to create $*,
    3294 # except with old shells:
    3295 build_os=$*
    3296 IFS=$ac_save_IFS
    3297 case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
    3298 
    3299 
    3300 { $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
    3301 $as_echo_n "checking host system type... " >&6; }
    3302 if ${ac_cv_host+:} false; then :
    3303   $as_echo_n "(cached) " >&6
    3304 else
    3305   if test "x$host_alias" = x; then
    3306   ac_cv_host=$ac_cv_build
    3307 else
    3308   ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
    3309     as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
    3310 fi
    3311 
    3312 fi
    3313 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
    3314 $as_echo "$ac_cv_host" >&6; }
    3315 case $ac_cv_host in
    3316 *-*-*) ;;
    3317 *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;;
    3318 esac
    3319 host=$ac_cv_host
    3320 ac_save_IFS=$IFS; IFS='-'
    3321 set x $ac_cv_host
    3322 shift
    3323 host_cpu=$1
    3324 host_vendor=$2
    3325 shift; shift
    3326 # Remember, the first character of IFS is used to create $*,
    3327 # except with old shells:
    3328 host_os=$*
    3329 IFS=$ac_save_IFS
    3330 case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
    3331 
    3332 
    3333 MACHINE_TYPE=$host_cpu
    33343139
    33353140
     
    46984503  am__fastdepCC_TRUE='#'
    46994504  am__fastdepCC_FALSE=
    4700 fi
    4701 
    4702 
    4703 # By default we simply use the C compiler to build assembly code.
    4704 
    4705 test "${CCAS+set}" = set || CCAS=$CC
    4706 test "${CCASFLAGS+set}" = set || CCASFLAGS=$CFLAGS
    4707 
    4708 
    4709 
    4710 depcc="$CCAS"   am_compiler_list=
    4711 
    4712 { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
    4713 $as_echo_n "checking dependency style of $depcc... " >&6; }
    4714 if ${am_cv_CCAS_dependencies_compiler_type+:} false; then :
    4715   $as_echo_n "(cached) " >&6
    4716 else
    4717   if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
    4718   # We make a subdir and do the tests there.  Otherwise we can end up
    4719   # making bogus files that we don't know about and never remove.  For
    4720   # instance it was reported that on HP-UX the gcc test will end up
    4721   # making a dummy file named `D' -- because `-MD' means `put the output
    4722   # in D'.
    4723   rm -rf conftest.dir
    4724   mkdir conftest.dir
    4725   # Copy depcomp to subdir because otherwise we won't find it if we're
    4726   # using a relative directory.
    4727   cp "$am_depcomp" conftest.dir
    4728   cd conftest.dir
    4729   # We will build objects and dependencies in a subdirectory because
    4730   # it helps to detect inapplicable dependency modes.  For instance
    4731   # both Tru64's cc and ICC support -MD to output dependencies as a
    4732   # side effect of compilation, but ICC will put the dependencies in
    4733   # the current directory while Tru64 will put them in the object
    4734   # directory.
    4735   mkdir sub
    4736 
    4737   am_cv_CCAS_dependencies_compiler_type=none
    4738   if test "$am_compiler_list" = ""; then
    4739      am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
    4740   fi
    4741   am__universal=false
    4742 
    4743 
    4744   for depmode in $am_compiler_list; do
    4745     # Setup a source with many dependencies, because some compilers
    4746     # like to wrap large dependency lists on column 80 (with \), and
    4747     # we should not choose a depcomp mode which is confused by this.
    4748     #
    4749     # We need to recreate these files for each test, as the compiler may
    4750     # overwrite some of them when testing with obscure command lines.
    4751     # This happens at least with the AIX C compiler.
    4752     : > sub/conftest.c
    4753     for i in 1 2 3 4 5 6; do
    4754       echo '#include "conftst'$i'.h"' >> sub/conftest.c
    4755       # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
    4756       # Solaris 8's {/usr,}/bin/sh.
    4757       touch sub/conftst$i.h
    4758     done
    4759     echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
    4760 
    4761     # We check with `-c' and `-o' for the sake of the "dashmstdout"
    4762     # mode.  It turns out that the SunPro C++ compiler does not properly
    4763     # handle `-M -o', and we need to detect this.  Also, some Intel
    4764     # versions had trouble with output in subdirs
    4765     am__obj=sub/conftest.${OBJEXT-o}
    4766     am__minus_obj="-o $am__obj"
    4767     case $depmode in
    4768     gcc)
    4769       # This depmode causes a compiler race in universal mode.
    4770       test "$am__universal" = false || continue
    4771       ;;
    4772     nosideeffect)
    4773       # after this tag, mechanisms are not by side-effect, so they'll
    4774       # only be used when explicitly requested
    4775       if test "x$enable_dependency_tracking" = xyes; then
    4776         continue
    4777       else
    4778         break
    4779       fi
    4780       ;;
    4781     msvc7 | msvc7msys | msvisualcpp | msvcmsys)
    4782       # This compiler won't grok `-c -o', but also, the minuso test has
    4783       # not run yet.  These depmodes are late enough in the game, and
    4784       # so weak that their functioning should not be impacted.
    4785       am__obj=conftest.${OBJEXT-o}
    4786       am__minus_obj=
    4787       ;;
    4788     none) break ;;
    4789     esac
    4790     if depmode=$depmode \
    4791        source=sub/conftest.c object=$am__obj \
    4792        depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
    4793        $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
    4794          >/dev/null 2>conftest.err &&
    4795        grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
    4796        grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
    4797        grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
    4798        ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
    4799       # icc doesn't choke on unknown options, it will just issue warnings
    4800       # or remarks (even with -Werror).  So we grep stderr for any message
    4801       # that says an option was ignored or not supported.
    4802       # When given -MP, icc 7.0 and 7.1 complain thusly:
    4803       #   icc: Command line warning: ignoring option '-M'; no argument required
    4804       # The diagnosis changed in icc 8.0:
    4805       #   icc: Command line remark: option '-MP' not supported
    4806       if (grep 'ignoring option' conftest.err ||
    4807           grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
    4808         am_cv_CCAS_dependencies_compiler_type=$depmode
    4809         break
    4810       fi
    4811     fi
    4812   done
    4813 
    4814   cd ..
    4815   rm -rf conftest.dir
    4816 else
    4817   am_cv_CCAS_dependencies_compiler_type=none
    4818 fi
    4819 
    4820 fi
    4821 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CCAS_dependencies_compiler_type" >&5
    4822 $as_echo "$am_cv_CCAS_dependencies_compiler_type" >&6; }
    4823 CCASDEPMODE=depmode=$am_cv_CCAS_dependencies_compiler_type
    4824 
    4825  if
    4826   test "x$enable_dependency_tracking" != xno \
    4827   && test "$am_cv_CCAS_dependencies_compiler_type" = gcc3; then
    4828   am__fastdepCCAS_TRUE=
    4829   am__fastdepCCAS_FALSE='#'
    4830 else
    4831   am__fastdepCCAS_TRUE='#'
    4832   am__fastdepCCAS_FALSE=
    48334505fi
    48344506
     
    61845856
    61855857
    6186 ac_config_files="$ac_config_files Makefile src/driver/Makefile src/Makefile src/examples/Makefile src/tests/Makefile src/prelude/Makefile src/libcfa/Makefile"
     5858ac_config_files="$ac_config_files Makefile src/driver/Makefile src/Makefile src/examples/Makefile src/tests/Makefile src/libcfa/Makefile"
    61875859
    61885860
     
    63085980Usually this means the macro was only invoked conditionally." "$LINENO" 5
    63095981fi
    6310 if test -z "${BUILD_RELEASE_TRUE}" && test -z "${BUILD_RELEASE_FALSE}"; then
    6311   as_fn_error $? "conditional \"BUILD_RELEASE\" was never defined.
    6312 Usually this means the macro was only invoked conditionally." "$LINENO" 5
    6313 fi
    6314 if test -z "${BUILD_DEBUG_TRUE}" && test -z "${BUILD_DEBUG_FALSE}"; then
    6315   as_fn_error $? "conditional \"BUILD_DEBUG\" was never defined.
    6316 Usually this means the macro was only invoked conditionally." "$LINENO" 5
    6317 fi
    6318 if test -z "${BUILD_NO_LIB_TRUE}" && test -z "${BUILD_NO_LIB_FALSE}"; then
    6319   as_fn_error $? "conditional \"BUILD_NO_LIB\" was never defined.
    6320 Usually this means the macro was only invoked conditionally." "$LINENO" 5
    6321 fi
    63225982if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
    63235983  as_fn_error $? "conditional \"AMDEP\" was never defined.
     
    63305990if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
    63315991  as_fn_error $? "conditional \"am__fastdepCC\" was never defined.
    6332 Usually this means the macro was only invoked conditionally." "$LINENO" 5
    6333 fi
    6334 if test -z "${am__fastdepCCAS_TRUE}" && test -z "${am__fastdepCCAS_FALSE}"; then
    6335   as_fn_error $? "conditional \"am__fastdepCCAS\" was never defined.
    63365992Usually this means the macro was only invoked conditionally." "$LINENO" 5
    63375993fi
     
    69476603    "src/examples/Makefile") CONFIG_FILES="$CONFIG_FILES src/examples/Makefile" ;;
    69486604    "src/tests/Makefile") CONFIG_FILES="$CONFIG_FILES src/tests/Makefile" ;;
    6949     "src/prelude/Makefile") CONFIG_FILES="$CONFIG_FILES src/prelude/Makefile" ;;
    69506605    "src/libcfa/Makefile") CONFIG_FILES="$CONFIG_FILES src/libcfa/Makefile" ;;
    69516606
     
    76787333
    76797334
    7680 if test -z "$BUILD_RELEASE_TRUE"; then :
    7681   if test -z "$BUILD_DEBUG_TRUE"; then :
    7682   { $as_echo "$as_me:${as_lineno-$LINENO}: Building libcfa for target: release & debug" >&5
    7683 $as_echo "$as_me: Building libcfa for target: release & debug" >&6;}
    7684 else
    7685   { $as_echo "$as_me:${as_lineno-$LINENO}: Building libcfa for target: release" >&5
    7686 $as_echo "$as_me: Building libcfa for target: release" >&6;}
    7687 fi
    7688 else
    7689   if test -z "$BUILD_DEBUG_TRUE"; then :
    7690   { $as_echo "$as_me:${as_lineno-$LINENO}: Building libcfa for target: debug" >&5
    7691 $as_echo "$as_me: Building libcfa for target: debug" >&6;}
    7692 else
    7693   { $as_echo "$as_me:${as_lineno-$LINENO}: Running cfa without libcfa" >&5
    7694 $as_echo "$as_me: Running cfa without libcfa" >&6;}
    7695 fi
    7696 fi
    7697 
    76987335# Final text
    76997336{ $as_echo "$as_me:${as_lineno-$LINENO}: result: Cforall configuraton completed. Type \"make -j 8 install\"." >&5
  • configure.ac

    r66f8528 r5802a4f  
    5353AC_SUBST(CFA_BACKEND_CC)
    5454
    55 
    56 
    57 AC_ARG_ENABLE(target-release, AS_HELP_STRING([--enable-target-release], [Build and install the release target]))
    58 AC_ARG_ENABLE(target-debug, AS_HELP_STRING([--enable-target-debug], [Build and install the debug target]))
    59 
    60 case "$enable_target_release" in
    61         yes)
    62                 case "$enable_target_debug" in
    63                         yes)
    64                                 build_release="yes"
    65                                 build_debug="yes"
    66                                 ;;
    67                         no)
    68                                 build_release="yes"
    69                                 build_debug="no"
    70                                 ;;
    71                         *)
    72                                 build_release="yes"
    73                                 build_debug="no"
    74                                 ;;
    75                 esac
    76                 ;;
    77         no)
    78                 case "$enable_target_debug" in
    79                         yes)
    80                                 build_release="no"
    81                                 build_debug="yes"
    82                                 ;;
    83                         no)
    84                                 build_release="no"
    85                                 build_debug="no"
    86                                 ;;
    87                         *)
    88                                 build_release="no"
    89                                 build_debug="yes"
    90                                 ;;
    91                 esac
    92                 ;;
    93         *)
    94                 case "$enable_target_debug" in
    95                         yes)
    96                                 build_release="no"
    97                                 build_debug="yes"
    98                                 ;;
    99                         no)
    100                                 build_release="yes"
    101                                 build_debug="no"
    102                                 ;;
    103                         *)
    104                                 build_release="yes"
    105                                 build_debug="yes"
    106                                 ;;
    107                 esac
    108                 ;;
    109 esac
    110 
    111 AM_CONDITIONAL([BUILD_RELEASE], [test "x$build_release" = "xyes"])
    112 AM_CONDITIONAL([BUILD_DEBUG], [test "x$build_debug" = "xyes"])
    113 AM_CONDITIONAL([BUILD_NO_LIB], [test "x$build_release$build_debug" = "xnono"])
    114 
    11555if test "x$prefix" = "xNONE"; then
    11656        cfa_prefix=${ac_default_prefix}
     
    14888AC_SUBST(CFA_FLAGS, ${CFAFLAGS})
    14989
    150 AC_CANONICAL_HOST
    151 AC_SUBST([MACHINE_TYPE],[$host_cpu])
    152 
    15390# Checks for programs.
    15491AC_PROG_CXX
    15592AC_PROG_CC
    156 AM_PROG_AS
    15793AM_PROG_CC_C_O  # deprecated
    15894# These are often not installed and people miss seeing the "no", so stop the configure.
     
    192128        src/examples/Makefile
    193129        src/tests/Makefile
    194         src/prelude/Makefile
    195130        src/libcfa/Makefile
    196131        ])
     
    198133AC_OUTPUT
    199134
    200 AM_COND_IF([BUILD_RELEASE],
    201         [AM_COND_IF([BUILD_DEBUG],
    202                 [AC_MSG_NOTICE(Building libcfa for target: release & debug)],
    203                 [AC_MSG_NOTICE(Building libcfa for target: release)])],
    204         [AM_COND_IF([BUILD_DEBUG],
    205                 [AC_MSG_NOTICE(Building libcfa for target: debug)],
    206                 [AC_MSG_NOTICE(Running cfa without libcfa)])])
    207 
    208135# Final text
    209136AC_MSG_RESULT(Cforall configuraton completed. Type "make -j 8 install".)
  • doc/proposals/concurrency/Makefile

    r66f8528 r5802a4f  
    99SOURCES = ${addsuffix .tex, \
    1010concurrency \
    11 style \
    12 glossary \
    1311}
    1412
  • doc/proposals/concurrency/concurrency.tex

    r66f8528 r5802a4f  
    11% requires tex packages: texlive-base texlive-latex-base tex-common texlive-humanities texlive-latex-extra texlive-fonts-recommended
    22
    3 % inline code ©...© (copyright symbol) emacs: C-q M-)
    4 % red highlighting ®...® (registered trademark symbol) emacs: C-q M-.
    5 % blue highlighting ß...ß (sharp s symbol) emacs: C-q M-_
    6 % green highlighting ¢...¢ (cent symbol) emacs: C-q M-"
    7 % LaTex escape §...§ (section symbol) emacs: C-q M-'
    8 % keyword escape ¶...¶ (pilcrow symbol) emacs: C-q M-^
     3% inline code �...� (copyright symbol) emacs: C-q M-)
     4% red highlighting �...� (registered trademark symbol) emacs: C-q M-.
     5% blue highlighting �...� (sharp s symbol) emacs: C-q M-_
     6% green highlighting �...� (cent symbol) emacs: C-q M-"
     7% LaTex escape �...� (section symbol) emacs: C-q M-'
     8% keyword escape �...� (pilcrow symbol) emacs: C-q M-^
    99% math escape $...$ (dollar symbol)
    1010
     
    100100
    101101\section{Introduction}
    102 This proposal provides a minimal core concurrency API that is both simple, efficient and can be reused to build higher-level features. The simplest possible concurrency core is a thread and a lock but this low-level approach is hard to master. An easier approach for users is to support higher-level constructs as the basis of the concurrency in \CFA. Indeed, for highly productive parallel programming, high-level approaches are much more popular~\cite{HPP:Study}. Examples are task based, message passing and implicit threading.
    103 
    104 There are actually two problems that need to be solved in the design of the concurrency for a programming language: which concurrency tools are available to the users and which parallelism tools are available. While these two concepts are often seen together, they are in fact distinct concepts that require different sorts of tools~\cite{Buhr05a}. Concurrency tools need to handle mutual exclusion and synchronization, while parallelism tools are more about performance, cost and resource utilization.
     102This proposal provides a minimal core concurrency API that is both simple, efficient and can be reused to build higher-level features. The simplest possible concurrency core is a thread and a lock but this low-level approach is hard to master. An easier approach for users is to support higher-level constructs as the basis of the concurrency in \CFA. Indeed, for highly productive parallel programming, high-level approaches are much more popular~\cite{HPP:Study}. Examples are task based parallelism, message passing and implicit threading.
     103
     104There are actually two problems that need to be solved in the design of the concurrency for a programming language. Which concurrency tools are available to the users and which parallelism tools are available. While these two concepts are often seen together, they are in fact distinct concepts that require different sorts of tools~\cite{Buhr05a}. Concurrency tools need to handle mutual exclusion and synchronization, while parallelism tools are more about performance, cost and resource utilization.
    105105
    106106%  #####  ####### #     #  #####  #     # ######  ######  ####### #     #  #####  #     #
     
    113113
    114114\section{Concurrency}
    115 Several tool can be used to solve concurrency challenges. Since these challenges always appear with the use of mutable shared-state, some languages and libraries simply disallow mutable shared-state (Erlang~\cite{Erlang}, Haskell~\cite{Haskell}, Akka (Scala)~\cite{Akka}). In these paradigms, interaction among concurrent objects relies on message passing~\cite{Thoth,Harmony,V-Kernel} or other paradigms that closely relate to networking concepts (channels\cit for example). However, in languages that use routine calls as their core abstraction mechanism, these approaches force a clear distinction between concurrent and non-concurrent paradigms (i.e., message passing versus routine call). Which in turn means that, in order to be effective, programmers need to learn two sets of designs patterns. This distinction can be hidden away in library code, but effective use of the librairy still has to take both paradigms into account. Approaches based on shared memory are more closely related to non-concurrent paradigms since they often rely on basic constructs like routine calls and objects. At a lower level these can be implemented as locks and atomic operations. Many such mechanisms have been proposed, including semaphores~\cite{Dijkstra68b} and path expressions~\cite{Campbell74}. However, for productivity reasons it is desireable to have a higher-level construct be the core concurrency paradigm~\cite{HPP:Study}. An approach that is worth mentionning because it is gaining in popularity is transactionnal memory~\cite{Dice10}[Check citation]. While this approach is even pursued by system languages like \CC\cit, the performance and feature set is currently too restrictive to add such a paradigm to a language like C or \CC\cit, which is why it was rejected as the core paradigm for concurrency in \CFA. One of the most natural, elegant, and efficient mechanisms for synchronization and communication, especially for shared memory systems, is the \emph{monitor}. Monitors were first proposed by Brinch Hansen~\cite{Hansen73} and later described and extended by C.A.R.~Hoare~\cite{Hoare74}. Many programming languages---e.g., Concurrent Pascal~\cite{ConcurrentPascal}, Mesa~\cite{Mesa}, Modula~\cite{Modula-2}, Turing~\cite{Turing:old}, Modula-3~\cite{Modula-3}, NeWS~\cite{NeWS}, Emerald~\cite{Emerald}, \uC~\cite{Buhr92a} and Java~\cite{Java}---provide monitors as explicit language constructs. In addition, operating-system kernels and device drivers have a monitor-like structure, although they often use lower-level primitives such as semaphores or locks to simulate monitors. For these reasons, this project proposes monitors as the core concurrency construct.
     115Several tool can be used to solve concurrency challenges. Since these challenges always appear with the use of mutable shared state, some languages and libraries simply disallow mutable shared-state (Erlang~\cite{Erlang}, Haskell~\cite{Haskell}, Akka (Scala)~\cite{Akka}). In these paradigms, interaction among concurrent objects relies on message passing~\cite{Thoth,Harmony,V-Kernel} or other paradigms that closely relate to networking concepts. However, in languages that use routine calls as their core abstraction mechanism, these approaches force a clear distinction between concurrent and non-concurrent paradigms (i.e. message passing versus routine call). Which in turn means that, in order to be effective, programmers need to learn two sets of designs patterns. This distinction can be hidden away in library code, but effective use of the librairy will still have to take both paradigms into account. Approaches based on shared memory are more closely related to non-concurrent paradigms since they often rely on non-concurrent constructs like routine calls and objects. At a lower level these can be implemented as locks and atomic operations. Many such mechanisms have been proposed, including semaphores~\cite{Dijkstra68b} and path expressions~\cite{Campbell74}. However, for productivity reasons it is desireable to have a higher-level construct to be the core concurrency paradigm~\cite{HPP:Study}. An approach that is worth mentionning because it is gaining in popularity is transactionnal memory~\cite{Dice10}[Check citation]. While this approach is even pursued by system languages like \CC\cit, the performance and feature set is currently too restrictive to be possible to add such a paradigm to a language like C or \CC\cit, which is why it was rejected as the core paradigm for concurrency in \CFA. One of the most natural, elegant, and efficient mechanisms for synchronization and communication, especially for shared memory systems, is the \emph{monitor}. Monitors were first proposed by Brinch Hansen~\cite{Hansen73} and later described and extended by C.A.R.~Hoare~\cite{Hoare74}. Many programming languages---e.g., Concurrent Pascal~\cite{ConcurrentPascal}, Mesa~\cite{Mesa}, Modula~\cite{Modula-2}, Turing~\cite{Turing:old}, Modula-3~\cite{Modula-3}, NeWS~\cite{NeWS}, Emerald~\cite{Emerald}, \uC~\cite{Buhr92a} and Java~\cite{Java}---provide monitors as explicit language constructs. In addition, operating-system kernels and device drivers have a monitor-like structure, although they often use lower-level primitives such as semaphores or locks to simulate monitors. For these reasons, this project proposes Monitors as the core concurrency construct.
    116116
    117117% #     # ####### #     # ### ####### ####### ######   #####
     
    144144
    145145\subsubsection{Call semantics} \label{call}
    146 The above monitor example displays some of the intrinsic characteristics. Indeed, it is necessary to use pass-by-reference over pass-by-value for monitor routines. This semantics is important because at their core, monitors are implicit mutual-exclusion objects (locks), and these objects cannot be copied. Therefore, monitors are implicitly non-copyable.
    147 
    148 Another aspect to consider is when a monitor acquires its mutual exclusion. For example, a monitor may need to be passed through multiple helper routines that do not acquire the monitor mutual-exclusion on entry. Pass through can be both generic helper routines (\code{swap}, \code{sort}, etc.) or specific helper routines like the following to implement an atomic counter :
    149 
    150 \begin{lstlisting}
    151         mutex struct counter_t { /*...see section §\ref{data}§...*/ };
    152 
    153         void ?{}(counter_t & nomutex this); //constructor
    154         size_t ++?(counter_t & mutex this); //increment
     146The above monitor example displays some of their intrinsic characteristics. Indeed, it is necessary to use pass-by-reference over pass-by-value for monitor routines. This semantics is important because at their core, monitors are implicit mutual-exclusion objects (locks), and these objects cannot be copied. Therefore, monitors are implicitly non-copyable.
     147
     148Another aspect to consider is when a monitor acquires its mutual exclusion. For example, a monitor may need to be passed through multiple helper routines that do not acquire the monitor mutual exclusion on entry. Pass through can be both generic helper routines (\code{swap}, \code{sort}, etc.) or specific helper routines like the following to implement an atomic large counter :
     149
     150\begin{lstlisting}
     151        mutex struct counter_t { /*...*/ };
     152
     153        void ?{}(counter_t & nomutex this);
     154        size_t ++?(counter_t & mutex this);
    155155
    156156        //need for mutex is platform dependent here
    157         void ?{}(size_t * this, counter_t & mutex cnt); //conversion
    158 \end{lstlisting}
    159 
    160 Here, the constructor(\code{?\{\}}) uses the \code{nomutex} keyword to signify that it does not acquire the monitor mutual exclusion when constructing. This semantics is because an object not yet constructed should never be shared and therefore does not require mutual exclusion. The prefix increment operator uses \code{mutex} to protect the incrementing process from race conditions. Finally, there is a conversion operator from \code{counter_t} to \code{size_t}. This conversion may or may not require the \code{mutex} key word depending on whether or not reading an \code{size_t} is an atomic operation or not.
    161 
    162 Having both \code{mutex} and \code{nomutex} keywords could be argued to be redundant based on the meaning of a routine having neither of these keywords. For example, given a routine without wualifiers \code{void foo(counter_t & this)} then one could argue that it should default to the safest option \code{mutex}. On the other hand, the option of having routine \code{void foo(counter_t & this)} mean \code{nomutex} is unsafe by default and may easily cause subtle errors. It can be argued that \code{nomutex} is the more "normal" behaviour, the \code{nomutex} keyword effectively stating explicitly that "this routine has nothing special". Another alternative is to make having exactly one of these keywords mandatory, which would provide the same semantics but without the ambiguity of supporting routine \code{void foo(counter_t & this)}. Mandatory keywords would also have the added benefice of being self-documented but at the cost of extra typing. In the end, which solution should be picked is still up for debate. For the reminder of this proposal, the explicit approach is used for clarity.
    163 
    164 The next semantic decision is to establish when mutex/nomutex may be used as a type qualifier. Consider the following declarations:
     157        void ?{}(size_t * this, counter_t & mutex cnt);
     158\end{lstlisting}
     159*semantics of the declaration of \code{mutex struct counter_t} are discussed in details in section \ref{data}
     160
     161Here, the constructor(\code(?{})) uses the \code{nomutex} keyword to signify that it does not acquire the monitor mutual exclusion when constructing. This semantics is because object not yet constructed should never be shared and therefore do not require mutual exclusion. The prefix increment operator uses \code{mutex} to protect the incrementing process from race conditions. Finally, there is a conversion operator from \code{counter_t} to \code{size_t}. This conversion may or may not require the \code{mutex} key word depending on whether or not reading an \code{size_t} is an atomic operation or not.
     162
     163Having both \code{mutex} and \code{nomutex} keywords could be argued to be redundant based on the meaning of a routine having neither of these keywords. If there were a meaning to routine \code{void foo(counter_t & this)} then one could argue that it should default to the safest option : \code{mutex}. On the other hand, the option of having routine \code{void foo(counter_t & this)} mean \code{nomutex} is unsafe by default and may easily cause subtle errors. It can be argued that this is the more "normal" behavior, \code{nomutex} effectively stating explicitly that "this routine has nothing special". Another alternative is to make having exactly one of these keywords mandatory, which would provide the same semantics but without the ambiguity of supporting routine \code{void foo(counter_t & this)}. Mandatory keywords would also have the added benefice of being self-documented but at the cost of extra typing. In the end, which solution should be picked is still up for debate. For the reminder of this proposal, the explicit approach is used for clarity.
     164
     165Regardless of which keyword is kept, it is important to establish when mutex/nomutex may be used as a type qualifier. Consider :
    165166\begin{lstlisting}
    166167        int f1(monitor & mutex m);
     
    170171        int f5(graph(monitor*) & mutex m);
    171172\end{lstlisting}
    172 The problem is to indentify which object(s) should be acquired. Furthermore, each object needs to be acquired only once. In the case of simple routines like \code{f1} and \code{f2} it is easy to identify an exhaustive list of objects to acquire on entry. Adding indirections (\code{f3}) still allows the compiler and programmer to indentify which object is acquired. However, adding in arrays (\code{f4}) makes it much harder. Array lengths are not necessarily known in C and even then making sure we only acquire objects once becomes also none trivial. This can be extended to absurd limits like \code{f5}, which uses a graph of monitors. To keep everyone as sane as possible~\cite{Chicken}, this projects imposes the requirement that a routine may only acquire one monitor per parameter and it must be the type of the parameter (ignoring potential qualifiers and indirections). Also note that while routine \code{f3} can be supported, meaning that monitor \code{**m} is be acquired, passing an array to this routine would be type safe and yet result in undefined behavior because only the first element of the array is acquired. However, this ambiguity is part of the C type system with respects to arrays. For this reason, it would also be reasonnable to disallow mutex in the context where arrays may be passed.
     173
     174The problem is to indentify which object(s) should be acquired. Furthermore, each object needs to be acquired only once. In case of simple routines like \code{f1} and \code{f2} it is easy to identify an exhaustive list of objects to acquire on entering. Adding indirections (\code{f3}) still allows the compiler and programmer to indentify which object is acquired. However, adding in arrays (\code{f4}) makes it much harder. Array lengths are not necessarily known in C and even then making sure we only acquire objects once becomes also none trivial. This can be extended to absurd limits like \code{f5}, which uses a graph of monitors. To keep everyone as sane as possible~\cite{Chicken}, this projects imposes the requirement that a routine may only acquire one monitor per parameter and it must be the type of the parameter (ignoring potential qualifiers and indirections). Also note that while routine \code{f3} can be supported, meaning that monitor \code{**m} will be acquired, passing an array to this routine would be type safe and result in undefined behavior. For this reason, it would also be reasonnable to disallow mutex in the context where arrays may be passed.
    173175
    174176% ######     #    #######    #
     
    181183
    182184\subsubsection{Data semantics} \label{data}
    183 Once the call semantics are established, the next step is to establish data semantics. Indeed, until now a monitor is used simply as a generic handle but in most cases monitors contian shared data. This data should be intrinsic to the monitor declaration to prevent any accidental use of data without its appropriate protection. For example, here is a complete version of the counter showed in section \ref{call}:
     185Once the call semantics are established, the next step is to establish data semantics. Indeed, until now a monitor is used simply as a generic handle but in most cases monitors contian shared data. This data should be intrinsic to the monitor declaration to prevent any accidental use of data without its appripriate protection. For example here is a more fleshed-out version of the counter showed in \ref{call}:
    184186\begin{lstlisting}
    185187        mutex struct counter_t {
     
    201203\end{lstlisting}
    202204
    203 This simple counter is used as follows:
     205This simple counter offers an example of monitor usage. Notice how the counter is used without any explicit synchronisation and yet supports thread-safe semantics for both reading and writting :
    204206\begin{center}
    205207\begin{tabular}{c @{\hskip 0.35in} c @{\hskip 0.35in} c}
    206208\begin{lstlisting}
    207         //shared counter
    208209        counter_t cnt;
    209210
    210         //multiple threads access counter
    211211        thread 1 : cnt++;
    212212        thread 2 : cnt++;
     
    218218\end{center}
    219219
    220 Notice how the counter is used without any explicit synchronisation and yet supports thread-safe semantics for both reading and writting. Unlike object-oriented monitors, where calling a mutex member \emph{implicitly} acquires mutual-exclusion, \CFA uses an explicit mechanism to acquire mutual-exclusion. A consequence of this approach is that it extends to multi-monitor calls.
     220These simple mutual exclusion semantics also naturally expand to multi-monitor calls.
    221221\begin{lstlisting}
    222222        int f(MonitorA & mutex a, MonitorB & mutex b);
     
    226226        f(a,b);
    227227\end{lstlisting}
    228 This code acquires both locks before entering the critical section, called \emph{\gls{group-acquire}}. In practice, writing multi-locking routines that do not lead to deadlocks is tricky. Having language support for such a feature is therefore a significant asset for \CFA. In the case presented above, \CFA guarantees that the order of aquisition is consistent across calls to routines using the same monitors as arguments. However, since \CFA monitors use multi-acquisition locks, users can effectively force the acquiring order. For example, notice which routines use \code{mutex}/\code{nomutex} and how this affects aquiring order :
    229 \begin{lstlisting}
    230         void foo(A & mutex a, B & mutex b) { //acquire a & b
     228
     229This code acquires both locks before entering the critical section (Referenced as \gls{group-acquire} from now on). In practice, writing multi-locking routines that can not lead to deadlocks can be tricky. Having language support for such a feature is therefore a significant asset for \CFA. In the case presented above, \CFA guarantees that the order of aquisition will be consistent across calls to routines using the same monitors as arguments. However, since \CFA monitors use multi-acquiring locks users can effectively force the acquiring order. For example, notice which routines use \code{mutex}/\code{nomutex} and how this affects aquiring order :
     230\begin{lstlisting}
     231        void foo(A & mutex a, B & mutex a) {
    231232                //...
    232233        }
    233234
    234         void bar(A & mutex a, B & nomutex b) { //acquire a
     235        void bar(A & mutex a, B & nomutex a)
    235236                //...
    236                 foo(a, b); //acquire b
     237                foo(a, b);
    237238                //...
    238239        }
    239240
    240         void baz(A & nomutex a, B & mutex b) { //acquire b
     241        void baz(A & nomutex a, B & mutex a)
    241242                //...
    242                 foo(a, b); //acquire a
     243                foo(a, b);
    243244                //...
    244245        }
    245246\end{lstlisting}
    246247
    247 The multi-acquisition monitor lock allows a monitor lock to be acquired by both \code{bar} or \code{baz} and acquired again in \code{foo}. In the calls to \code{bar} and \code{baz} the monitors are acquired in opposite order. such use leads to nested monitor call problems~\cite{Lister77}, which is a specific implementation of the lock acquiring order problem. In the example above, the user uses implicit ordering in the case of function \code{foo} but explicit ordering in the case of \code{bar} and \code{baz}. This subtle mistake means that calling these routines concurrently may lead to deadlock and is therefore undefined behavior. As shown on several occasion\cit, solving this problem requires :
     248Such a use will lead to nested monitor call problems~\cite{Lister77}, which are a specific implementation of the lock acquiring order problem. In the example above, the user uses implicit ordering in the case of function \code{foo} but explicit ordering in the case of \code{bar} and \code{baz}. This subtle mistake means that calling these routines concurrently may lead to deadlocks, depending on the implicit ordering matching the explicit ordering. As shown on several occasion\cit, solving this problems requires to :
    248249\begin{enumerate}
    249         \item Dynamically tracking of the monitor-call order.
     250        \item Dynamically track the monitor call order.
    250251        \item Implement rollback semantics.
    251252\end{enumerate}
    252253
    253 While the first requirement is already a significant constraint on the system, implementing a general rollback semantics in a C-like language is prohibitively complex \cit. In \CFA, users simply need to be carefull when acquiring multiple monitors at the same time.
     254While the first requirement is already a significant constraint on the system, implementing a general rollback semantics in a C-like language is prohibitively complex \cit. In \CFA users simply need to be carefull when acquiring multiple monitors at the same time.
    254255
    255256% ######  ####### #######    #    ### #        #####
     
    270271
    271272\subsubsection{Implementation Details: Interaction with polymorphism}
    272 At first glance, interaction between monitors and \CFA's concept of polymorphism seems complex to support. However, it is shown that entry-point locking can solve most of the issues.
    273 
    274 Before looking into complex control flow, it is important to present the difference between the two acquiring options : \gls{callsite-locking} and \gls{entry-point-locking}, i.e. acquiring the monitors before making a mutex call or as the first instruction of the mutex call. For example:
    275 
    276 \begin{center}
    277 \begin{tabular}{|c|c|c|}
    278 Code & \gls{callsite-locking} & \gls{entry-point-locking} \\
    279 \CFA & pseudo-code & pseudo-code \\
    280 \hline
    281 \begin{lstlisting}
    282 void foo(monitor & mutex a) {
    283 
    284 
    285 
    286         //Do Work
    287         //...
    288 
    289 }
    290 
    291 void main() {
    292         monitor a;
    293 
    294 
    295 
    296         foo(a);
    297 
    298 }
    299 \end{lstlisting} &\begin{lstlisting}
    300 foo(& a) {
    301 
    302 
    303 
    304         //Do Work
    305         //...
    306 
    307 }
    308 
    309 main() {
    310         monitor a;
    311         //calling routine
    312         //handles concurrency
    313         acquire(a);
    314         foo(a);
    315         release(a);
    316 }
    317 \end{lstlisting} &\begin{lstlisting}
    318 foo(& a) {
    319         //called routine
    320         //handles concurrency
    321         acquire(a);
    322         //Do Work
    323         //...
    324         release(a);
    325 }
    326 
    327 main() {
    328         monitor a;
    329 
    330 
    331 
    332         foo(a);
    333 
    334 }
    335 \end{lstlisting}
    336 \end{tabular}
    337 \end{center}
    338 
    339 First of all, interaction between \code{otype} polymorphism and monitors is impossible since monitors do not support copying. Therefore, the main question is how to support \code{dtype} polymorphism. Since a monitor's main purpose is to ensure mutual exclusion when accessing shared data, this implies that mutual exclusion is only required for routines that do in fact access shared data. However, since \code{dtype} polymorphism always handles incomplete types (by definition), no \code{dtype} polymorphic routine can access shared data since the data requires knowledge about the type. Therefore, the only concern when combining \code{dtype} polymorphism and monitors is to protect access to routines. \Gls{callsite-locking} would require a significant amount of work, since any \code{dtype} routine may have to obtain some lock before calling a routine, depending on whether or not the type passed is a monitor. However, with \gls{entry-point-locking} calling a monitor routine becomes exactly the same as calling it from anywhere else.
    340 
    341 
     273At first glance, interaction between monitors and \CFA's concept of polymorphism seem complex to support. However, it can be reasoned that entry-point locking can solve most of the issues that could be present with polymorphism.
     274
     275First of all, interaction between \code{otype} polymorphism and monitors is impossible since monitors do not support copying. Therefore, the main question is how to support \code{dtype} polymorphism. Since a monitor's main purpose is to ensure mutual exclusion when accessing shared data, this implies that mutual exclusion is only required for routines that do in fact access shared data. However, since \code{dtype} polymorphism always handles incomplete types (by definition), no \code{dtype} polymorphic routine can access shared data since the data requires knowledge about the type. Therefore the only concern when combining \code{dtype} polymorphism and monitors is to protect access to routines. \Gls{callsite-locking}\footnotemark would require a significant amount of work, since any \code{dtype} routine may have to obtain some lock before calling a routine, depending on whether or not the type passed is a monitor. However, with \gls{entry-point-locking}\footnotemark[\value{footnote}] calling a monitor routine becomes exactly the same as calling it from anywhere else.
     276\footnotetext{See glossary for a definition of \gls{callsite-locking} and \gls{entry-point-locking}}
    342277
    343278% ### #     # #######         #####   #####  #     # ####### ######
     
    350285
    351286\subsection{Internal scheduling} \label{insched}
    352 Monitors also need to schedule waiting threads internally as a mean of synchronization. Internal scheduling is one of the simple examples of such a feature. It allows users to declare condition variables and have threads wait and signaled from them. Here is a simple example of such a technique :
     287Monitors also need to schedule waiting threads within it as a mean of synchronization. Internal scheduling is one of the simple examples of such a feature. It allows users to declare condition variables and have threads wait and signaled from them. Here is a simple example of such a technique :
    353288
    354289\begin{lstlisting}
     
    368303\end{lstlisting}
    369304
    370 Note that in \CFA, \code{condition} have no particular need to be stored inside a monitor, beyond any software engineering reasons. Here routine \code{foo} waits for the \code{signal} from \code{bar} before making further progress, effectively ensuring a basic ordering. This semantic can easily be extended to multi-monitor calls by offering the same guarantee.
     305Here routine \code{foo} waits for the \code{signal} from \code{bar} before making further progress, effectively ensuring a basic ordering. This semantic can easily be extended to multi-monitor calls by offering the same guarantee.
    371306\begin{center}
    372307\begin{tabular}{ c @{\hskip 0.65in} c }
     
    402337condition e;
    403338
    404 //acquire a & b
    405339void foo(monitor & mutex a,
    406340           monitor & mutex b) {
    407341
    408         wait(e); //release a & b
     342        wait(e);
    409343}
    410344
     
    418352condition e;
    419353
     354void bar(monitor & mutex a,
     355           monitor & nomutex b) {
     356        foo(a,b);
     357}
     358
     359void foo(monitor & mutex a,
     360           monitor & mutex b) {
     361        wait(e);
     362}
     363
     364bar(a, b);
     365\end{lstlisting} &\begin{lstlisting}
     366condition e;
     367
     368void bar(monitor & mutex a,
     369           monitor & nomutex b) {
     370        baz(a,b);
     371}
     372
     373void baz(monitor & nomutex a,
     374           monitor & mutex b) {
     375        wait(e);
     376}
     377
     378bar(a, b);
     379\end{lstlisting}
     380\end{tabular}
     381\end{center}
     382
     383Note that in \CFA, \code{condition} have no particular need to be stored inside a monitor, beyond any software engineering reasons. Context 1 is the simplest way of acquiring more than one monitor (\gls{group-acquire}), using a routine wiht multiple parameters having the \code{mutex} keyword. Context 2 also uses \gls{group-acquire} as well in routine \code{foo}. However, the routine is called by routine \code{bar} which only acquires monitor \code{a}. Since monitors can be acquired multiple times this will not cause a deadlock by itself but it does force the acquiring order to \code{a} then \code{b}. Context 3 also forces the acquiring order to be \code{a} then \code{b} but does not use \gls{group-acquire}. The previous example tries to illustrate the semantics that must be established to support releasing monitors in a \code{wait} statement. In all cases the behavior of the wait statment is to release all the locks that were acquired my the inner-most monitor call. That is \code{a & b} in context 1 and 2 and \code{b} only in context 3. Here are a few other examples of this behavior.
     384
     385
     386\begin{center}
     387\begin{tabular}{|c|c|c|}
     388\begin{lstlisting}
     389condition e;
     390
     391//acquire a
     392void foo(monitor & nomutex a,
     393           monitor & mutex b) {
     394        bar(a,b);
     395}
     396
    420397//acquire a
    421398void bar(monitor & mutex a,
    422399           monitor & nomutex b) {
    423         foo(a,b);
    424 }
    425 
    426 //acquire a & b
    427 void foo(monitor & mutex a,
    428            monitor & mutex b) {
    429         wait(e);  //release a & b
    430 }
    431 
    432 bar(a, b);
    433 \end{lstlisting} &\begin{lstlisting}
    434 condition e;
    435 
    436 //acquire a
    437 void bar(monitor & mutex a,
    438            monitor & nomutex b) {
    439         baz(a,b);
    440 }
    441 
    442 //acquire b
    443 void baz(monitor & nomutex a,
    444            monitor & mutex b) {
    445         wait(e);  //release b
    446 }
    447 
    448 bar(a, b);
    449 \end{lstlisting}
    450 \end{tabular}
    451 \end{center}
    452 
    453 Context 1 is the simplest way of acquiring more than one monitor (\gls{group-acquire}), using a routine with multiple parameters having the \code{mutex} keyword. Context 2 also uses \gls{group-acquire} as well in routine \code{foo}. However, the routine is called by routine \code{bar}, which only acquires monitor \code{a}. Since monitors can be acquired multiple times this does not cause a deadlock by itself but it does force the acquiring order to \code{a} then \code{b}. Context 3 also forces the acquiring order to be \code{a} then \code{b} but does not use \gls{group-acquire}. The previous example tries to illustrate the semantics that must be established to support releasing monitors in a \code{wait} statement. In all cases, the behavior of the wait statment is to release all the locks that were acquired my the inner-most monitor call. That is \code{a & b} in context 1 and 2 and \code{b} only in context 3. Here are a few other examples of this behavior.
    454 
    455 
    456 \begin{center}
    457 \begin{tabular}{|c|c|c|}
    458 \begin{lstlisting}
    459 condition e;
    460 
    461 //acquire b
    462 void foo(monitor & nomutex a,
    463            monitor & mutex b) {
    464         bar(a,b);
    465 }
    466 
    467 //acquire a
    468 void bar(monitor & mutex a,
    469            monitor & nomutex b) {
    470 
    471         wait(e); //release a
    472                   //keep b
     400
     401        //release a
     402        //keep b
     403        wait(e);
    473404}
    474405
     
    487418           monitor & nomutex b) {
    488419
    489         wait(e); //release b
    490                   //keep a
     420        //release b
     421        //keep a
     422        wait(e);
    491423}
    492424
     
    505437           monitor & nomutex b) {
    506438
    507         wait(e); //release a & b
    508                   //keep none
     439        //release a & b
     440        //keep none
     441        wait(e);
    509442}
    510443
     
    513446\end{tabular}
    514447\end{center}
    515 Note the right-most example is actually a trick pulled on the reader. Monitor state information is stored in thread local storage rather then in the routine context, which means that helper routines and other \code{nomutex} routines are invisible to the runtime system in regards to concurrency. This means that in the right-most example, the routine parameters are completly unnecessary. However, calling this routine from outside a valid monitor context is undefined.
    516 
    517 These semantics imply that in order to release of subset of the monitors currently held, users must write (and name) a routine that only acquires the desired subset and simply calls wait. While users can use this method, \CFA offers the \code{wait_release}\footnote{Not sure if an overload of \code{wait} would work...} which will release only the specified monitors. In the center previous examples, the code in the center uses the \code{bar} routine to only release monitor \code{b}. Using the \code{wait_release} helper, this can be rewritten without having the name two routines :
    518 \begin{center}
    519 \begin{tabular}{ c c c }
    520 \begin{lstlisting}
    521         condition e;
    522 
    523         //acquire a & b
    524         void foo(monitor & mutex a,
    525                    monitor & mutex b) {
    526                 bar(a,b);
    527         }
    528 
    529         //acquire b
    530         void bar(monitor & mutex a,
    531                    monitor & nomutex b) {
    532 
    533                 wait(e); //release b
    534                           //keep a
    535         }
    536 
    537         foo(a, b);
    538 \end{lstlisting} &\begin{lstlisting}
    539         =>
    540 \end{lstlisting} &\begin{lstlisting}
    541         condition e;
    542 
    543         //acquire a & b
    544         void foo(monitor & mutex a,
    545                    monitor & mutex b) {
    546                 wait_release(e,b); //release b
    547                                          //keep a
    548         }
    549 
    550         foo(a, b);
    551 \end{lstlisting}
    552 \end{tabular}
    553 \end{center}
    554 
    555 Regardless of the context in which the \code{wait} statement is used, \code{signal} must be called holding the same set of monitors. In all cases, signal only needs a single parameter, the condition variable that needs to be signalled. But \code{signal} needs to be called from the same monitor(s) that call to \code{wait}. Otherwise, mutual exclusion cannot be properly transferred back to the waiting monitor.
     448Note the right-most example which uses a helper routine and therefore is not relevant to find which monitors will be released.
     449
     450These semantics imply that in order to release of subset of the monitors currently held, users must write (and name) a routine that only acquires the desired subset and simply calls wait. While users can use this method, \CFA offers the \code{wait_release}\footnote{Not sure if an overload of \code{wait} would work...} which will release only the specified monitors.
     451
     452Regardless of the context in which the \code{wait} statement is used, \code{signal} must used holding the same set of monitors. In all cases, signal only needs a single parameter, the condition variable that needs to be signalled. But \code{signal} needs to be called from the same monitor(s) that call to \code{wait}. Otherwise, mutual exclusion cannot be properly transferred back to the waiting monitor.
    556453
    557454Finally, an additional semantic which can be very usefull is the \code{signal_block} routine. This routine behaves like signal for all of the semantics discussed above, but with the subtelty that mutual exclusion is transferred to the waiting task immediately rather than wating for the end of the critical section.
     
    567464\newpage
    568465\subsection{External scheduling} \label{extsched}
    569 An alternative to internal scheduling is to use external scheduling instead. This method is more constrained and explicit which may help users tone down the undeterministic nature of concurrency. Indeed, as the following examples demonstrates, external scheduling allows users to wait for events from other threads without the concern of unrelated events occuring. External scheduling can generally be done either in terms of control flow (ex: \uC) or in terms of data (ex: Go). Of course, both of these paradigms have their own strenghts and weaknesses but for this project control flow semantics where chosen to stay consistent with the rest of the languages semantics. Two challenges specific to \CFA arise when trying to add external scheduling with loose object definitions and multi-monitor routines. The following example shows a simple use \code{accept} versus \code{wait}/\code{signal} and its advantages.
     466As one might expect, the alternative to Internal scheduling is to use External scheduling instead. This method is somewhat more robust to deadlocks since one of the threads keeps a relatively tight control on scheduling. Indeed, as the following examples will demonstrate, external scheduling allows users to wait for events from other threads without the concern of unrelated events occuring. External scheduling can generally be done either in terms of control flow (ex: \uC) or in terms of data (ex: Go). Of course, both of these paradigms have their own strenghts and weaknesses but for this project control flow semantics where chosen to stay consistent with the rest of the languages semantics. Two challenges specific to \CFA arise when trying to add external scheduling with loose object definitions and multi-monitor routines. The following example shows what a simple use \code{accept} versus \code{wait}/\code{signal} and its advantages.
    570467
    571468\begin{center}
     
    585482
    586483        public:
    587                 void f() { /*...*/ }
     484                void f();
    588485                void g() { _Accept(f); }
    589486        private:
     
    593490\end{center}
    594491
    595 In the case of internal scheduling, the call to \code{wait} only guarantees that \code{g} is the last routine to access the monitor. This intails that the routine \code{f} may have acquired mutual exclusion several times while routine \code{h} was waiting. On the other hand, external scheduling guarantees that while routine \code{h} was waiting, no routine other than \code{g} could acquire the monitor.
     492In the case of internal scheduling, the call to \code{wait} only guarantees that \code{g} was the last routine to access the monitor. This intails that the routine \code{f} may have acquired mutual exclusion several times while routine \code{h} was waiting. On the other hand, external scheduling guarantees that while routine \code{h} was waiting, no routine other than \code{g} could acquire the monitor.
    596493\\
    597494
     
    776673% #       #     # #     # #     # ####### ####### ####### ####### ###  #####  #     #
    777674\section{Parallelism}
    778 Historically, computer performance was about processor speeds and instructions count. However, with heat dissipation being a direct consequence of speed increase, parallelism has become the new source for increased performance~\cite{Sutter05, Sutter05b}. In this decade, it is not longer reasonnable to create a high-performance application without caring about parallelism. Indeed, parallelism is an important aspect of performance and more specifically throughput and hardware utilization. The lowest-level approach of parallelism is to use \glspl{kthread} in combination with semantics like \code{fork}, \code{join}, etc. However, since these have significant costs and limitations, \glspl{kthread} are now mostly used as an implementation tool rather than a user oriented one. There are several alternatives to solve these issues that all have strengths and weaknesses. While there are many variations of the presented paradigms, most of these variations do not actually change the guarantees or the semantics, they simply move costs in order to achieve better performance for certain workloads.
     675Historically, computer performance was about processor speeds and instructions count. However, with heat dissipation being a direct consequence of speed increase, parallelism has become the new source for increased performance~\cite{Sutter05, Sutter05b}. In this decade, it is not longer reasonnable to create high-performance application without caring about parallelism. Indeed, parallelism is an important aspect of performance and more specifically throughput and hardware utilization. The lowest level approach of parallelism is to use \glspl{kthread} in combination with semantics like \code{fork}, \code{join}, etc. However, since these have significant costs and limitations \glspl{kthread} are now mostly used as an implementation tool rather than a user oriented one. There are several alternatives to solve these issues that all have strengths and weaknesses. While there are many variations of the presented paradigms, most of these variations do not actually change the guarantees or the semantics, they simply move costs in order to achieve better performance for certain workloads.
    779676
    780677\subsection{User-level threads}
    781 A direct improvement on the \gls{kthread} approach is to use \glspl{uthread}. These threads offer most of the same features that the operating system already provide but can be used on a much larger scale. This approach is the most powerfull solution as it allows all the features of multi-threading, while removing several of the more expensives costs of using kernel threads. The down side is that almost none of the low-level threading problems are hidden, users still have to think about data races, deadlocks and synchronization issues. These issues can be somewhat alleviated by a concurrency toolkit with strong garantees but the parallelism toolkit offers very little to reduce complexity in itself.
    782 
    783 Examples of languages that support \glspl{uthread} are Erlang~\cite{Erlang} and \uC~\cite{uC++book}.
    784 
    785 \subsubsection{Fibers : user-level threads without preemption}
    786 A popular varient of \glspl{uthread} is what is often reffered to as \glspl{fiber}. However, \glspl{fiber} do not present meaningful semantical differences with \glspl{uthread}. Advocates of \glspl{fiber} list their high performance and ease of implementation as majors strenghts of \glspl{fiber} but the performance difference between \glspl{uthread} and \glspl{fiber} is controversial and the ease of implementation, while true, is a weak argument in the context of language design. Therefore this proposal largely ignore fibers.
     678A direct improvement on the \gls{kthread} approach is to use \glspl{uthread}. These threads offer most of the same features that the operating system already provide but can be used on a much larger scale. This approach is the most powerfull solution as it allows all the features of multi-threading while removing several of the more expensives costs of using kernel threads. The down side is that almost none of the low-level threading problems are hidden, users still have to think about data races, deadlocks and synchronization issues. These issues can be somewhat alleviated by a concurrency toolkit with strong garantees but the parallelism toolkit offers very little to reduce complexity in itself.
     679
     680Examples of languages that support are Erlang~\cite{Erlang} and \uC~\cite{uC++book}.
     681
     682\subsection{Fibers : user-level threads without preemption}
     683In the middle of the flexibility versus complexity spectrum lay \glspl{fiber} which offer \glspl{uthread} without the complexity of preemption by using cooperative scheduling. On a single core machine this means users need not worry about concurrency. On multi-core machines, while concurrency is still a concern, it is only a problem for fibers across cores but not while on the same core. This extra guarantee plus the fact that creating and destroying fibers are implicit synchronizing points means preventing mutable shared ressources still leaves many control flow options. However, multi-core processors can still execute fibers in parallel. This means users either need to worry about mutual exclusion, deadlocks and race conditions, or limit themselves to subset of concurrency primitives, raising the complexity in both cases. In this aspect, fibers can be seen as a more powerfull alternative to \glspl{job}.
    787684
    788685An example of a language that uses fibers is Go~\cite{Go}
    789686
    790687\subsection{Jobs and thread pools}
    791 The approach on the opposite end of the spectrum is to base parallelism on \glspl{pool}. Indeed, \glspl{pool} offer limited flexibility but at the benefit of a simpler user interface. In \gls{pool} based systems, users express parallelism as units of work and a dependency graph (either explicit or implicit) that tie them together. This approach means users need not worry about concurrency but significantly limits the interaction that can occur among jobs. Indeed, any \gls{job} that blocks also blocks the underlying worker, which effectively means the CPU utilization, and therefore throughput, suffers noticeably. It can be argued that a solution to this problem is to use more workers than available cores. However, unless the number of jobs and the number of workers are comparable, having a significant amount of blocked jobs always results in idles cores.
     688The approach on the opposite end of the spectrum is to base parallelism on \glspl{pool}. Indeed, \glspl{pool} offer limited flexibility but at the benefit of a simpler user interface. In \gls{pool} based systems, users express parallelism as units of work and the dependency graph (either explicit or implicit) that tie them together. This approach means users need not worry about concurrency but significantly limits the interaction that can occur between different jobs. Indeed, any \gls{job} that blocks also blocks the underlying worker, which effectively means the CPU utilization, and therefore throughput, suffers noticeably. It can be argued that a solution to this problem is to use more workers than available cores. However, unless the number of jobs and the number of workers are comparable, having a significant amount of blocked jobs will always results in idles cores.
    792689
    793690The gold standard of this implementation is Intel's TBB library~\cite{TBB}.
    794691
    795692\subsection{Paradigm performance}
    796 While the choice between the three paradigms listed above may have significant performance implication, it is difficult to pindown the performance implications of chosing a model at the language level. Indeed, in many situations one of these paradigms may show better performance but it all strongly depends on the workload. Having a large amount of mostly independent units of work to execute almost guarantess that the \gls{pool} based system has the best performance thanks to the lower memory overhead. However, interactions between jobs can easily exacerbate contention. User-level threads allow fine-grain context switching, which results in better resource utilisation, but context switches will be more expansive and the extra control means users need to tweak more variables to get the desired performance. Furthermore, if the units of uninterrupted work are large enough the paradigm choice is largely amorticised by the actual work done.
     693While the choice between the three paradigms listed above may have significant performance implication, it is difficult to pindown the performance implications of chosing a model at the language level. Indeed, in many situations one of these paradigms may show better performance but it all strongly depends on the workload. Having a large amount of mostly independent units of work to execute almost guarantess that the \gls{pool} based system has the best performance thanks to the lower memory overhead. However, interactions between jobs can easily exacerbate contention. User-level threads may allows fine grain context switching which may result in better resource utilisation but context switches will be more expansive and it is also harder for users to get perfect tunning. As with every example, fibers sit somewhat in the middle of the spectrum. Furthermore, if the units of uninterrupted work are large enough the paradigm choice will be largely amorticised by the actual work done.
    797694
    798695%  #####  #######    #          ####### ######  ######
     
    805702
    806703\section{\CFA 's Thread Building Blocks}
    807 As a system-level language, \CFA should offer both performance and flexibilty as its primary goals, simplicity and user-friendliness being a secondary concern. Therefore, the core of parallelism in \CFA should prioritize power and efficiency. With this said, deconstructing popular paradigms in order to get simple building blocks yields \glspl{uthread} as the core parallelism block. \Glspl{pool} and other parallelism paradigms can then be built on top of the underlying threading model.
     704As a system level language, \CFA should offer both performance and flexibilty as its primary goals, simplicity and user-friendliness being a secondary concern. Therefore, the core of parallelism in \CFA should prioritize power and efficiency. With this said, it is possible to deconstruct the three paradigms details aboved in order to get simple building blocks. Here is a table showing the core caracteristics of the mentionned paradigms :
     705\begin{center}
     706\begin{tabular}[t]{| r | c | c |}
     707\cline{2-3}
     708\multicolumn{1}{ c| }{} & Has a stack & Preemptive \\
     709\hline
     710\Glspl{pool} & X & X \\
     711\hline
     712\Glspl{fiber} & \checkmark & X \\
     713\hline
     714\Glspl{uthread} & \checkmark & \checkmark \\
     715\hline
     716\end{tabular}
     717\end{center}
     718
     719This table is missing several variations (for example jobs on \glspl{uthread} or \glspl{fiber}), but these variation affect mostly performance and do not effect the guarantees as the presented paradigm do.
     720
     721As shown in section \ref{cfaparadigms} these different blocks being available in \CFA it is trivial to reproduce any of these paradigm.
    808722
    809723% ####### #     # ######  #######    #    ######   #####
     
    816730
    817731\subsection{Thread Interface}
    818 The basic building blocks of \CFA are \glspl{cfathread}. By default these are implemented as \glspl{uthread}, and as such, offer a flexible and lightweight threading interface (lightweight compared to \glspl{kthread}). A thread can be declared using a struct declaration with prefix \code{thread} as follows :
     732The basic building blocks of \CFA are \glspl{cfathread}. By default these are implemented as \glspl{uthread} and as such offer a flexible and lightweight threading interface (lightweight comparatievely to \glspl{kthread}). A thread can be declared using a struct declaration with prefix \code{thread} as follows :
    819733
    820734\begin{lstlisting}
     
    822736\end{lstlisting}
    823737
    824 Obviously, for this thread implementation to be usefull it must run some user code. Several other threading interfaces use a function-pointer representation as the interface of threads (for example : \Csharp~\cite{Csharp} and Scala~\cite{Scala}). However, this proposal considers that statically tying a \code{main} routine to a thread superseeds this approach. Since the \code{main} routine is already a special routine in \CFA (where the program begins), the existing syntax for declaring routines names with special semantics can be extended, i.e. operator overloading. As such the \code{main} routine of a thread can be defined as :
     738Obviously, for this thread implementation to be usefull it must run some user code. Several other threading interfaces use some function pointer representation as the interface of threads (for example : \Csharp~\cite{Csharp} and Scala~\cite{Scala}). However, this proposal considers that statically tying a \code{main} routine to a thread superseeds this approach. Since the \code{main} routine is definitely a special routine in \CFA, the existing syntax for declaring routines with unordinary name can be extended, i.e. operator overloading. As such the \code{main} routine of a thread can be defined as :
    825739\begin{lstlisting}
    826740        thread struct foo {};
    827741
    828         void ?main(foo* this) {
    829                 sout | "Hello World!" | endl;
    830         }
    831 \end{lstlisting}
    832 
    833 In this example, threads of type \code{foo} will start there execution in the \code{void ?main(foo*)} routine which in this case prints \code{"Hello World!"}. While this proposoal encourages this approach which is enforces strongly type programming. Users may prefer to use the routine based thread semantics for the sake of simplicity. With these semantics it is trivial to write a thread type that takes a function pointer as parameter and executes it on its stack asynchronously :
     742        void ?main(thread foo* this) {
     743                /*... Some useful code ...*/
     744        }
     745\end{lstlisting}
     746
     747With these semantics it is trivial to write a thread type that takes a function pointer as parameter and executes it on its stack asynchronously :
    834748\begin{lstlisting}
    835749        typedef void (*voidFunc)(void);
     
    840754
    841755        //ctor
    842         void ?{}(FuncRunner* this, voidFunc inFunc) {
     756        void ?{}(thread FuncRunner* this, voidFunc inFunc) {
    843757                func = inFunc;
    844758        }
    845759
    846760        //main
    847         void ?main(FuncRunner* this) {
     761        void ?main(thread FuncRunner* this) {
    848762                this->func();
    849763        }
    850764\end{lstlisting}
    851765
    852 Of course for threads to be useful, it must be possible to start and stop threads and wait for them to complete execution. While using an \acrshort{api} such as \code{fork} and \code{join} is relatively common in the literature, such an interface is unnecessary. Indeed, the simplest approach is to use \acrshort{raii} principles and have threads \code{fork} once the constructor has completed and \code{join} before the destructor runs.
    853 \begin{lstlisting}
    854 thread struct World; //FuncRunner declared above
    855 
    856 void ?main(thread World* this) {
     766% In this example \code{func} is a function pointer stored in \acrfull{tls}, which is \CFA is both easy to use and completly typesafe.
     767
     768Of course for threads to be useful, it must be possible to start and stop threads and wait for them to complete execution. While using an \acrshort{api} such as \code{fork} and \code{join} is relatively common in the literature, such an interface is not needed. Indeed, the simplest approach is to use \acrshort{raii} principles and have threads \code{fork} once the constructor has completed and \code{join} before the destructor runs.
     769\begin{lstlisting}
     770thread struct FuncRunner; //FuncRunner declared above
     771
     772void world() {
    857773        sout | "World!" | endl;
    858774}
    859775
    860776void main() {
    861         World w;
     777        FuncRunner run = {world};
    862778        //Thread run forks here
    863779
     
    868784}
    869785\end{lstlisting}
    870 This semantic has several advantages over explicit semantics : typesafety is guaranteed, a thread is always started and stopped exaclty once and users cannot make any progamming errors. However, one of the apparent drawbacks of this system is that threads now always form a lattice, that is they are always destroyed in opposite order of construction. While this seems like a significant limitation, existing \CFA semantics can solve this problem. Indeed, by using dynamic allocation to create threads will naturally let threads outlive the scope in which the thread was created much like dynamically allocating memory will let objects outlive the scope in which thy were created :
    871 
     786This semantic has several advantages over explicit semantics : typesafety is guaranteed, a thread is always started and stopped exaclty once and users cannot make any progamming errors. Furthermore it naturally follows the memory allocation semantics, which means users do not need to learn multiple semantics.
     787
     788These semantics also naturally scale to multiple threads meaning basic synchronisation is very simple :
    872789\begin{lstlisting}
    873790        thread struct MyThread {
     
    876793
    877794        //ctor
    878         void ?{}(MyThread* this,
    879                      bool is_special = false) {
    880                 //...
    881         }
     795        void ?{}(thread MyThread* this) {}
    882796
    883797        //main
    884         void ?main(MyThread* this) {
    885                 //...
    886         }
    887 
    888         void foo() {
    889                 MyThread* special_thread;
    890                 {
    891                         MyThread thrds = {false};
    892                         //Start a thread at the beginning of the scope
    893 
    894                         DoStuff();
    895 
    896                         //create a other thread that will outlive the thread in this scope
    897                         special_thread = new MyThread{true};
    898 
    899                         //Wait for the thread to finish
    900                 }
    901                 DoMoreStuff();
    902 
    903                 //Now wait for the special
    904         }
    905 \end{lstlisting}
    906 
    907 Another advantage of this semantic is that it naturally scale to multiple threads meaning basic synchronisation is very simple :
    908 
    909 \begin{lstlisting}
    910         thread struct MyThread {
    911                 //...
    912         };
    913 
    914         //ctor
    915         void ?{}(MyThread* this) {}
    916 
    917         //main
    918         void ?main(MyThread* this) {
     798        void ?main(thread MyThread* this) {
    919799                //...
    920800        }
     
    928808                //Wait for the 10 threads to finish
    929809        }
    930 \end{lstlisting}
    931 
    932 \subsection{Coroutines : A stepping stone}\label{coroutine}
    933 While the main focus of this proposal is concurrency and paralellism, it is important to adress coroutines which are actually a significant underlying aspect of the concurrency system. Indeed, while having nothing todo with parallelism and arguably very little to do with concurrency, coroutines need to deal with context-switchs and and other context management operations. Therefore, this proposal includes coroutines both as an intermediate step for the implementation of threads and a first class feature of \CFA.
    934 
    935 The core API of coroutines revolve around two features : independent stacks and suspedn/resume. Much like threads the syntax for declaring a coroutine is declaring a type and a main routine for it to start :
    936 \begin{lstlisting}
    937         coroutine struct MyCoroutine {
    938                 //...
    939         };
    940 
    941         //ctor
    942         void ?{}(MyCoroutine* this) {
    943 
    944         }
    945 
    946         //main
    947         void ?main(MyCoroutine* this) {
    948                 sout | "Hello World!" | endl;
    949         }
    950 \end{lstlisting}
    951 
    952 One a coroutine is created, users can context switch to it using \code{suspend} and come back using \code{resume}. Here is an example of a solution to the fibonnaci problem using coroutines :
    953 \begin{lstlisting}
    954         coroutine struct Fibonacci {
    955                 int fn; // used for communication
    956         };
    957 
    958         void ?main(Fibonacci* this) {
    959                 int fn1, fn2;           // retained between resumes
    960                 this->fn = 0;
    961                 fn1 = this->fn;
    962                 suspend(this);          // return to last resume
    963 
    964                 this->fn = 1;
    965                 fn2 = fn1;
    966                 fn1 = this->fn;
    967                 suspend(this);          // return to last resume
    968 
    969                 for ( ;; ) {
    970                         this->fn = fn1 + fn2;
    971                         fn2 = fn1;
    972                         fn1 = this->fn;
    973                         suspend(this);  // return to last resume
    974                 }
    975         }
    976 
    977         int next(Fibonacci& this) {
    978                 resume(&this); // transfer to last suspend
    979                 return this.fn;
    980         }
    981 
    982         void main() {
    983                 Fibonacci f1, f2;
    984                 for ( int i = 1; i <= 10; i += 1 ) {
    985                         sout | next(f1) | '§\verb+ +§' | next(f2) | endl;
    986                 }
     810
     811        void bar() {
     812                MyThread* thrds = new MyThread[10];
     813                //Start 10 threads at the beginning of the scope
     814
     815                DoStuff();
     816
     817                //Wait for the 10 threads to finish
     818                delete MyThread;
    987819        }
    988820\end{lstlisting}
    989821
    990822\newpage
    991 \bf{WORK IN PROGRESS}
     823\large{\textbf{WORK IN PROGRESS}}
    992824\subsection{The \CFA Kernel : Processors, Clusters and Threads}\label{kernel}
    993825
  • doc/proposals/concurrency/glossary.tex

    r66f8528 r5802a4f  
    1414
    1515\longnewglossaryentry{group-acquire}
    16 {name={bulked acquiring}}
     16{name={grouped acquiring}}
    1717{
    1818Implicitly acquiring several monitors when entering a monitor.
  • doc/proposals/concurrency/style.tex

    r66f8528 r5802a4f  
    22
    33\lstset{
    4 morekeywords=[2]{nomutex,mutex,thread,wait,wait_release,signal,signal_block,accept,monitor,suspend,resume,coroutine},
     4morekeywords=[2]{nomutex,mutex,thread,wait,wait_release,signal,signal_block,accept,monitor},
    55keywordstyle=[2]\color{blue},                           % second set of keywords for concurency
    66basicstyle=\linespread{0.9}\tt\small,           % reduce line spacing and use typewriter font
  • doc/proposals/concurrency/version

    r66f8528 r5802a4f  
    1 0.7.48
     10.5.150
  • doc/working/resolver_design.md

    r66f8528 r5802a4f  
    13821382hypothesis needs to be empirically validated.
    13831383
    1384 Another approach would be to abandon expression-tree ordering for
    1385 subexpression matching, and order by "most constrained symbol"; symbols would 
    1386 be more constrained if there were fewer matching declarations, fewer
    1387 subexpressions yet to resolve, or possibly fewer possible types the expression
    1388 could resolve to. Ordering the expressions in a priority-queue by this metric
    1389 would not necessarily produce a top-down or a bottom-up order, but would add
    1390 opportunities for pruning based on memoized upper and lower bounds.
    1391 
    13921384Both Baker and Cormack explicitly generate all possible interpretations of a
    13931385given expression; thinking of the set of interpretations of an expression as a
  • src/CodeGen/CodeGenerator.cc

    r66f8528 r5802a4f  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Dec 13 14:51:27 2016
    13 // Update Count     : 362
     12// Last Modified On : Thu Aug  4 13:35:30 2016
     13// Update Count     : 352
    1414//
    1515
     
    5757                if ( decl->get_extension() ) {
    5858                        output << "__extension__ ";
    59                 } // if
    60         } // extension
    61 
    62         void CodeGenerator::asmName( DeclarationWithType * decl ) {
    63                 if ( ConstantExpr * asmName = decl->get_asmName() ) {
    64                         output << " asm ( " << asmName->get_constant()->get_value() << " )";
    6559                } // if
    6660        } // extension
     
    147141                } // if
    148142
    149                 asmName( functionDecl );
    150 
    151143                // acceptAll( functionDecl->get_oldDecls(), *this );
    152144                if ( functionDecl->get_statements() ) {
     
    161153                handleStorageClass( objectDecl );
    162154                output << genType( objectDecl->get_type(), mangleName( objectDecl ) );
    163 
    164                 asmName( objectDecl );
    165155
    166156                if ( objectDecl->get_init() ) {
  • src/CodeGen/CodeGenerator.h

    r66f8528 r5802a4f  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Dec 13 13:51:53 2016
    13 // Update Count     : 39
     12// Last Modified On : Thu Aug  4 13:37:07 2016
     13// Update Count     : 38
    1414//
    1515
     
    108108                };
    109109
    110                 void asmName( DeclarationWithType *decl );
    111 
    112110                void extension( Expression *expr );
    113111                void extension( Declaration *decl );
  • src/CodeGen/GenType.cc

    r66f8528 r5802a4f  
    204204        void GenType::visit( ZeroType *zeroType ) {
    205205                // ideally these wouldn't hit codegen at all, but should be safe to make them ints
    206                 typeString = "long int " + typeString;
     206                typeString = "int " + typeString;
    207207                handleQualifiers( zeroType );
    208208        }
     
    210210        void GenType::visit( OneType *oneType ) {
    211211                // ideally these wouldn't hit codegen at all, but should be safe to make them ints
    212                 typeString = "long int " + typeString;
     212                typeString = "int " + typeString;
    213213                handleQualifiers( oneType );
    214214        }
  • src/CodeGen/OperatorTable.cc

    r66f8528 r5802a4f  
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Dec 13 14:33:05 2016
    13 // Update Count     : 10
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Thu Apr 14 16:48:27 2016
     13// Update Count     : 9
    1414//
    1515
     
    2121                const OperatorInfo tableValues[] = {
    2222                        {       "?[?]",         "",             "_operator_index",                              OT_INDEX                        },
    23                         {       "?{}",          "=",    "_constructor",                                 OT_CTOR                         },
     23                        {       "?{}",          "=",            "_constructor",                                 OT_CTOR                         },
    2424                        {       "^?{}",         "",             "_destructor",                                  OT_DTOR                         },
    2525                        {       "?()",          "",             "_operator_call",                               OT_CALL                         },
  • src/Common/Assert.cc

    r66f8528 r5802a4f  
    1 //
     1// 
    22// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
    33//
    44// The contents of this file are covered under the licence agreement in the
    55// file "LICENCE" distributed with Cforall.
    6 //
    7 // Assert.cc --
    8 //
     6// 
     7// Assert.cc -- 
     8// 
    99// Author           : Peter A. Buhr
    1010// Created On       : Thu Aug 18 13:26:59 2016
     
    1212// Last Modified On : Fri Aug 19 17:07:08 2016
    1313// Update Count     : 10
    14 //
     14// 
    1515
    1616#include <assert.h>
     
    3535        va_start( args, fmt );
    3636        vfprintf( stderr, fmt, args );
    37         va_end( args );
    38         fprintf( stderr, "\n" );
    3937        abort();
    4038}
     
    4543// compile-command: "make install" //
    4644// End:  //
     45
  • src/Common/utility.h

    r66f8528 r5802a4f  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Dec 14 21:25:25 2016
    13 // Update Count     : 31
     12// Last Modified On : Fri Sep 23 11:46:47 2016
     13// Update Count     : 28
    1414//
    1515
     
    3636}
    3737
    38 template< typename T, typename U >
     38template<typename T, typename U>
    3939struct maybeBuild_t {
    4040        static T * doit( const U *orig ) {
  • src/InitTweak/FixInit.cc

    r66f8528 r5802a4f  
    346346
    347347                        if ( VariableExpr * function = dynamic_cast< VariableExpr * > ( appExpr->get_function() ) ) {
    348                                 if ( LinkageSpec::isBuiltin( function->get_var()->get_linkage() ) ) {
     348                                if ( function->get_var()->get_linkage() == LinkageSpec::Intrinsic ) {
    349349                                        // optimization: don't need to copy construct in order to call intrinsic functions
    350350                                        return appExpr;
  • src/InitTweak/InitTweak.cc

    r66f8528 r5802a4f  
    304304
    305305        namespace {
    306                 DeclarationWithType * getCalledFunction( Expression * expr );
    307 
    308                 template<typename CallExpr>
    309                 DeclarationWithType * handleDerefCalledFunction( CallExpr * expr ) {
    310                         // (*f)(x) => should get "f"
    311                         std::string name = getFunctionName( expr );
    312                         assertf( name == "*?", "Unexpected untyped expression: %s", name.c_str() );
    313                         assertf( ! expr->get_args().empty(), "Can't get called function from dereference with no arguments" );
    314                         return getCalledFunction( expr->get_args().front() );
    315                 }
    316 
    317306                DeclarationWithType * getCalledFunction( Expression * expr ) {
    318307                        assert( expr );
     
    323312                        } else if ( CastExpr * castExpr = dynamic_cast< CastExpr * >( expr ) ) {
    324313                                return getCalledFunction( castExpr->get_arg() );
    325                         } else if ( UntypedExpr * untypedExpr = dynamic_cast< UntypedExpr * >( expr ) ) {
    326                                 return handleDerefCalledFunction( untypedExpr );
    327                         } else if ( ApplicationExpr * appExpr = dynamic_cast< ApplicationExpr * > ( expr ) ) {
    328                                 return handleDerefCalledFunction( appExpr );
    329314                        }
    330315                        return nullptr;
     
    392377
    393378        namespace {
    394                 std::string funcName( Expression * func );
    395 
    396                 template<typename CallExpr>
    397                 std::string handleDerefName( CallExpr * expr ) {
    398                         // (*f)(x) => should get name "f"
    399                         std::string name = getFunctionName( expr );
    400                         assertf( name == "*?", "Unexpected untyped expression: %s", name.c_str() );
    401                         assertf( ! expr->get_args().empty(), "Can't get function name from dereference with no arguments" );
    402                         return funcName( expr->get_args().front() );
    403                 }
    404 
    405379                std::string funcName( Expression * func ) {
    406380                        if ( NameExpr * nameExpr = dynamic_cast< NameExpr * >( func ) ) {
     
    414388                        } else if ( UntypedMemberExpr * memberExpr = dynamic_cast< UntypedMemberExpr * > ( func ) ) {
    415389                                return funcName( memberExpr->get_member() );
    416                         } else if ( UntypedExpr * untypedExpr = dynamic_cast< UntypedExpr * >( func ) ) {
    417                                 return handleDerefName( untypedExpr );
    418                         } else if ( ApplicationExpr * appExpr = dynamic_cast< ApplicationExpr * >( func ) ) {
    419                                 return handleDerefName( appExpr );
    420390                        } else {
    421391                                assertf( false, "Unexpected expression type being called as a function in call expression" );
     
    425395
    426396        std::string getFunctionName( Expression * expr ) {
    427                 // there's some unforunate overlap here with getCalledFunction. Ideally this would be able to use getCalledFunction and
    428                 // return the name of the DeclarationWithType, but this needs to work for NameExpr and UntypedMemberExpr, where getCalledFunction
    429                 // can't possibly do anything reasonable.
    430397                if ( ApplicationExpr * appExpr = dynamic_cast< ApplicationExpr * >( expr ) ) {
    431398                        return funcName( appExpr->get_function() );
  • src/Makefile.am

    r66f8528 r5802a4f  
    4141driver_cfa_cpp_SOURCES = ${SRC}
    4242driver_cfa_cpp_LDADD = ${LEXLIB} -ldl                   # yywrap
    43 driver_cfa_cpp_CXXFLAGS = -Wno-deprecated -Wall -DDEBUG_ALL -I${abs_top_srcdir}/src/include -DYY_NO_INPUT -O2
     43driver_cfa_cpp_CXXFLAGS = -Wno-deprecated -Wall -DDEBUG_ALL -I${abs_top_srcdir}/src/include -DYY_NO_INPUT
    4444driver_cfa_cpp_LDFLAGS = -Xlinker -export-dynamic
    4545
  • src/Makefile.in

    r66f8528 r5802a4f  
    6969PRE_UNINSTALL = :
    7070POST_UNINSTALL = :
    71 build_triplet = @build@
    72 host_triplet = @host@
    7371DIST_COMMON = $(srcdir)/CodeGen/module.mk $(srcdir)/Common/module.mk \
    7472        $(srcdir)/ControlStruct/module.mk $(srcdir)/GenPoly/module.mk \
     
    261259BACKEND_CC = @BACKEND_CC@
    262260CC = @CC@
    263 CCAS = @CCAS@
    264 CCASDEPMODE = @CCASDEPMODE@
    265 CCASFLAGS = @CCASFLAGS@
    266261CCDEPMODE = @CCDEPMODE@
    267262CFA_BACKEND_CC = @CFA_BACKEND_CC@
     
    298293LIBS = @LIBS@
    299294LTLIBOBJS = @LTLIBOBJS@
    300 MACHINE_TYPE = @MACHINE_TYPE@
    301295MAINT = @MAINT@
    302296MAKEINFO = @MAKEINFO@
     
    330324am__untar = @am__untar@
    331325bindir = @bindir@
    332 build = @build@
    333326build_alias = @build_alias@
    334 build_cpu = @build_cpu@
    335 build_os = @build_os@
    336 build_vendor = @build_vendor@
    337327builddir = @builddir@
    338328datadir = @datadir@
     
    341331dvidir = @dvidir@
    342332exec_prefix = @exec_prefix@
    343 host = @host@
    344333host_alias = @host_alias@
    345 host_cpu = @host_cpu@
    346 host_os = @host_os@
    347 host_vendor = @host_vendor@
    348334htmldir = @htmldir@
    349335includedir = @includedir@
     
    432418driver_cfa_cpp_SOURCES = ${SRC}
    433419driver_cfa_cpp_LDADD = ${LEXLIB} -ldl                   # yywrap
    434 driver_cfa_cpp_CXXFLAGS = -Wno-deprecated -Wall -DDEBUG_ALL -I${abs_top_srcdir}/src/include -DYY_NO_INPUT -O2
     420driver_cfa_cpp_CXXFLAGS = -Wno-deprecated -Wall -DDEBUG_ALL -I${abs_top_srcdir}/src/include -DYY_NO_INPUT
    435421driver_cfa_cpp_LDFLAGS = -Xlinker -export-dynamic
    436422all: $(BUILT_SOURCES)
  • src/Parser/DeclarationNode.cc

    r66f8528 r5802a4f  
    1010// Created On       : Sat May 16 12:34:05 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Dec 13 14:43:38 2016
    13 // Update Count     : 660
     12// Last Modified On : Mon Oct  3 18:03:08 2016
     13// Update Count     : 651
    1414//
    1515
     
    4848                type( nullptr ),
    4949                storageClass( NoStorageClass ),
    50                 bitfieldWidth( nullptr ),
    5150                isInline( false ),
    5251                isNoreturn( false ),
     52                bitfieldWidth( nullptr ),
     53                initializer( nullptr ),
    5354                hasEllipsis( false ),
    5455                linkage( ::linkage ),
    55                 asmName( nullptr ),
    56                 initializer( nullptr ),
    5756                extension( false ) {
    5857
     
    7675        delete type;
    7776        delete bitfieldWidth;
    78         // asmName, no delete, passed to next stage
    7977        delete initializer;
    8078}
     
    9290        newnode->set_next( maybeClone( get_next() ) );
    9391        newnode->linkage = linkage;
    94         newnode->asmName = maybeClone( asmName );
    9592
    9693//      newnode->variable.name = variable.name ? new string( *variable.name ) : nullptr;
     
    286283        DeclarationNode * newnode = new DeclarationNode;
    287284        newnode->type = nullptr;
    288         assert( ! newnode->name );
     285        assert( ! newnode->name ); 
    289286//      newnode->variable.name = name;
    290287        newnode->name = name;
     
    375372        newnode->type = new TypeData( TypeData::Builtin );
    376373        newnode->builtin = bt;
    377         newnode->type->builtintype = newnode->builtin;
    378374        return newnode;
    379375} // DeclarationNode::newBuiltinType
     
    644640}
    645641
    646 DeclarationNode * DeclarationNode::addAsmName( ConstantExpr * newname ) {
    647         assert( ! asmName );
    648         asmName = newname;
    649         return this;
    650 }
    651 
    652642DeclarationNode * DeclarationNode::addBitfield( ExpressionNode * size ) {
    653643        bitfieldWidth = size;
     
    956946
    957947        if ( type ) {
    958                 return buildDecl( type, name ? *name : string( "" ), storageClass, maybeBuild< Expression >( bitfieldWidth ), isInline, isNoreturn, linkage, asmName, maybeBuild< Initializer >(initializer) )->set_extension( extension );
     948                return buildDecl( type, name ? *name : string( "" ), storageClass, maybeBuild< Expression >( bitfieldWidth ), isInline, isNoreturn, linkage, maybeBuild< Initializer >(initializer) )->set_extension( extension );
    959949        } // if
    960950
    961951        if ( ! isInline && ! isNoreturn ) {
    962952                assertf( name, "ObjectDecl are assumed to have names\n" );
    963                 return (new ObjectDecl( *name, storageClass, linkage, maybeBuild< Expression >( bitfieldWidth ), nullptr, maybeBuild< Initializer >( initializer ) ))->set_asmName( asmName )->set_extension( extension );
     953                return (new ObjectDecl( *name, storageClass, linkage, maybeBuild< Expression >( bitfieldWidth ), nullptr, maybeBuild< Initializer >( initializer ) ))->set_extension( extension );
    964954        } // if
    965955
  • src/Parser/ExpressionNode.cc

    r66f8528 r5802a4f  
    4646// type.
    4747
    48 Type::Qualifiers emptyQualifiers;                               // no qualifiers on constants
     48static Type::Qualifiers emptyQualifiers;                                // no qualifiers on constants
    4949
    5050static inline bool checkU( char c ) { return c == 'u' || c == 'U'; }
     
    172172} // build_constantStr
    173173
    174 Expression *build_constantZeroOne( const std::string & str ) {
    175         Expression * ret = new ConstantExpr( Constant( str == "0" ? (Type*)new ZeroType( emptyQualifiers ) : (Type*)new OneType( emptyQualifiers ), str ) );
    176         delete &str;                                                                            // created by lex
    177         return ret;
    178 } // build_constantChar
    179 
    180174Expression * build_field_name_FLOATINGconstant( const std::string & str ) {
    181175        // str is of the form A.B -> separate at the . and return member expression
  • src/Parser/ParseNode.h

    r66f8528 r5802a4f  
    1010// Created On       : Sat May 16 13:28:16 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Dec 13 15:37:33 2016
    13 // Update Count     : 643
     12// Last Modified On : Mon Oct  3 18:03:08 2016
     13// Update Count     : 636
    1414//
    1515
     
    154154Expression * build_constantFloat( const std::string &str );
    155155Expression * build_constantChar( const std::string &str );
    156 Expression * build_constantZeroOne( const std::string &str );
    157156ConstantExpr * build_constantStr( const std::string &str );
    158157Expression * build_field_name_FLOATINGconstant( const std::string & str );
     
    205204        enum Aggregate { Struct, Union, Trait, NoAggregate };
    206205        enum TypeClass { Otype, Dtype, Ftype, NoTypeClass };
    207         enum BuiltinType { Valist, Zero, One, NoBuiltinType };
     206        enum BuiltinType { Valist };
    208207
    209208        static const char * storageName[];
     
    257256        DeclarationNode * addAssertions( DeclarationNode * );
    258257        DeclarationNode * addName( std::string * );
    259         DeclarationNode * addAsmName( ConstantExpr * );
    260258        DeclarationNode * addBitfield( ExpressionNode * size );
    261259        DeclarationNode * addVarArgs();
     
    310308        TypeData * type;
    311309        StorageClass storageClass;
     310        bool isInline, isNoreturn;
     311        std::list< std::string > attributes;
    312312        ExpressionNode * bitfieldWidth;
    313         bool isInline, isNoreturn;
    314313        std::unique_ptr<ExpressionNode> enumeratorValue;
     314        InitializerNode * initializer;
    315315        bool hasEllipsis;
    316316        LinkageSpec::Spec linkage;
    317         ConstantExpr *asmName;
    318         std::list< std::string > attributes;
    319         InitializerNode * initializer;
    320317        bool extension = false;
    321318        std::string error;
  • src/Parser/TypeData.cc

    r66f8528 r5802a4f  
    1010// Created On       : Sat May 16 15:12:51 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Dec 13 13:40:33 2016
    13 // Update Count     : 420
     12// Last Modified On : Sat Sep 24 11:14:26 2016
     13// Update Count     : 415
    1414//
    1515
     
    215215                break;
    216216          case Builtin:
    217                 assert( builtintype == DeclarationNode::Zero || builtintype == DeclarationNode::One );
    218                 newtype->builtintype = builtintype;
     217                assert( false );
     218                // newtype->builtin = builtin;
    219219                break;
    220220        } // switch
     
    444444                return buildTypeof( td );
    445445          case TypeData::Builtin:
    446                 if(td->builtintype == DeclarationNode::Zero) {
    447                         return new ZeroType( emptyQualifiers );
    448                 }
    449                 else if(td->builtintype == DeclarationNode::One) {
    450                         return new OneType( emptyQualifiers );
    451                 }
    452                 else {
    453                         return new VarArgsType( buildQualifiers( td ) );
    454                 }
     446                return new VarArgsType( buildQualifiers( td ) );
    455447          case TypeData::Symbolic:
    456448          case TypeData::Enum:
     
    582574                const_cast<TypeData *>(td)->basictype = DeclarationNode::Int;
    583575                goto Integral;
    584           default:
    585                 assert(false);
    586                 return nullptr;
    587576        } // switch
    588577
     
    721710} // buildTypeof
    722711
    723 Declaration * buildDecl( const TypeData * td, const string &name, DeclarationNode::StorageClass sc, Expression * bitfieldWidth, bool isInline, bool isNoreturn, LinkageSpec::Spec linkage, ConstantExpr *asmName, Initializer * init ) {
     712Declaration * buildDecl( const TypeData * td, const string &name, DeclarationNode::StorageClass sc, Expression * bitfieldWidth, bool isInline, bool isNoreturn, LinkageSpec::Spec linkage, Initializer * init ) {
    724713        if ( td->kind == TypeData::Function ) {
    725714                FunctionDecl * decl;
     
    743732                } // for
    744733                buildList( td->function.oldDeclList, decl->get_oldDecls() );
    745                 return decl->set_asmName( asmName );
     734                return decl;
    746735        } else if ( td->kind == TypeData::Aggregate ) {
    747736                return buildAggregate( td );
     
    751740                return buildSymbolic( td, name, sc );
    752741        } else {
    753                 return (new ObjectDecl( name, sc, linkage, bitfieldWidth, typebuild( td ), init, list< Attribute * >(), isInline, isNoreturn ))->set_asmName( asmName );
     742                return new ObjectDecl( name, sc, linkage, bitfieldWidth, typebuild( td ), init, list< Attribute * >(), isInline, isNoreturn );
    754743        } // if
    755744        return nullptr;
     
    769758                        break;
    770759                  default:
    771                         ft->get_returnVals().push_back( dynamic_cast< DeclarationWithType* >( buildDecl( td->base,  "", DeclarationNode::NoStorageClass, nullptr, false, false, LinkageSpec::Cforall, nullptr ) ) );
     760                        ft->get_returnVals().push_back( dynamic_cast< DeclarationWithType* >( buildDecl( td->base,  "", DeclarationNode::NoStorageClass, nullptr, false, false, LinkageSpec::Cforall ) ) );
    772761                } // switch
    773762        } else {
  • src/Parser/TypeData.h

    r66f8528 r5802a4f  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // TypeData.h --
     7// TypeData.h -- 
    88//
    99// Author           : Rodolfo G. Esteves
    1010// Created On       : Sat May 16 15:18:36 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Dec 13 13:39:39 2016
    13 // Update Count     : 143
     12// Last Modified On : Mon Oct  3 12:34:08 2016
     13// Update Count     : 142
    1414//
    1515
     
    7474        DeclarationNode::Signedness signedness = DeclarationNode::NoSignedness;
    7575        DeclarationNode::Length length = DeclarationNode::NoLength;
    76         DeclarationNode::BuiltinType builtintype = DeclarationNode::NoBuiltinType;
    7776        typedef std::bitset< DeclarationNode::NoQualifier > Qualifiers;
    7877        Qualifiers qualifiers;
     
    111110TupleType * buildTuple( const TypeData * );
    112111TypeofType * buildTypeof( const TypeData * );
    113 Declaration * buildDecl( const TypeData *, const std::string &, DeclarationNode::StorageClass, Expression *, bool isInline, bool isNoreturn, LinkageSpec::Spec, ConstantExpr *asmName, Initializer * init = nullptr );
     112Declaration * buildDecl( const TypeData *, const std::string &, DeclarationNode::StorageClass, Expression *, bool isInline, bool isNoreturn, LinkageSpec::Spec, Initializer * init = nullptr );
    114113FunctionType * buildFunction( const TypeData * );
    115114
  • src/Parser/lex.cc

    r66f8528 r5802a4f  
    382382        (yy_c_buf_p) = yy_cp;
    383383
    384 #define YY_NUM_RULES 185
    385 #define YY_END_OF_BUFFER 186
     384#define YY_NUM_RULES 183
     385#define YY_END_OF_BUFFER 184
    386386/* This struct is not used in this scanner,
    387387   but its presence is necessary. */
     
    391391        flex_int32_t yy_nxt;
    392392        };
    393 static yyconst flex_int16_t yy_accept[905] =
     393static yyconst flex_int16_t yy_accept[895] =
    394394    {   0,
    395         0,    0,    0,    0,    0,    0,  120,  120,  123,  123,
    396       186,  184,    7,    9,    8,  143,  122,  105,  148,  151,
    397       119,  130,  131,  146,  144,  134,  145,  137,  147,  110,
    398       111,  112,  135,  136,  153,  155,  154,  156,  184,  105,
    399       128,  184,  129,  149,  105,  107,  105,  105,  105,  105,
    400       105,  105,  105,  105,  105,  105,  105,  105,  105,  105,
    401       105,  105,  105,  132,  152,  133,  150,    7,  184,    4,
    402         4,  185,  108,  185,  109,  120,  121,  127,  123,  124,
    403         7,    9,    0,    8,  160,  179,  105,    0,  172,  142,
    404       165,  173,  170,  157,  168,  158,  169,  167,    0,  116,
    405 
    406         3,    0,  171,  115,  113,    0,    0,  113,  113,    0,
    407         0,  113,  112,  112,  112,    0,  112,  140,  141,  139,
    408       161,  163,  159,  164,  162,    0,    0,    0,    0,    0,
     395        0,    0,    0,    0,    0,    0,  118,  118,  121,  121,
     396      184,  182,    7,    9,    8,  141,  120,  103,  146,  149,
     397      117,  128,  129,  144,  142,  132,  143,  135,  145,  108,
     398      109,  110,  133,  134,  151,  153,  152,  154,  182,  103,
     399      126,  182,  127,  147,  103,  105,  103,  103,  103,  103,
     400      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
     401      103,  103,  130,  150,  131,  148,    7,  182,    4,    4,
     402      183,  106,  183,  107,  118,  119,  125,  121,  122,    7,
     403        9,    0,    8,  158,  177,  103,    0,  170,  140,  163,
     404      171,  168,  155,  166,  156,  167,  165,    0,  114,    3,
     405
     406        0,  169,  113,  111,    0,    0,  111,  111,    0,    0,
     407      111,  110,  110,  110,    0,  110,  138,  139,  137,  159,
     408      161,  157,  162,  160,    0,    0,    0,    0,    0,    0,
     409        0,    0,    0,    0,    0,    0,    0,    0,    0,  104,
     410      176,    0,  120,  117,  103,    0,    0,  173,    0,  103,
     411      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
     412      103,  103,  103,  103,  103,  103,   38,  103,  103,  103,
     413      103,  103,  103,  103,  103,  103,  103,   57,  103,  103,
     414      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
     415      103,  103,  103,  103,  172,  164,    7,    0,    0,    0,
     416
     417        2,    0,    5,  106,    0,    0,    0,  118,    0,  124,
     418      123,  123,    0,    0,    0,  121,    0,    0,    0,    0,
    409419        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    410       106,  178,    0,  122,  119,  105,    0,    0,  175,    0,
    411       105,  105,  105,  105,  105,  105,  105,  105,  105,  105,
    412       105,  105,  105,  105,  105,  105,  105,   38,  105,  105,
    413       105,  105,  105,  105,  105,  105,  105,  105,   57,  105,
    414       105,  105,  105,  105,  105,  105,  105,  105,  105,  105,
    415       105,  105,  105,  105,  105,  105,  105,  174,  166,    7,
    416 
    417         0,    0,    0,    2,    0,    5,  108,    0,    0,    0,
    418       120,    0,  126,  125,  125,    0,    0,    0,  123,    0,
     420        0,  136,  114,  115,    0,  115,  115,    0,    0,    6,
     421      115,  111,    0,    0,    0,  115,    0,  111,  111,  111,
     422      111,    0,  112,    0,    0,  110,  110,  110,  110,    0,
     423      174,  175,    0,  180,  178,    0,    0,    0,  104,    0,
     424        0,    0,    0,    0,    0,    0,    0,  103,   17,  103,
     425      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
     426      103,  103,  103,  103,  103,  103,  103,   14,  103,  103,
     427
     428      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
     429      103,  103,  103,  103,  103,  103,   51,  103,  103,  103,
     430       64,  103,  103,  103,  103,  103,  103,  103,  103,  103,
     431      103,  103,  103,  103,  103,   90,  103,  103,  103,  103,
     432      103,  103,  103,    0,    0,    0,    0,    0,    0,    0,
     433        0,  123,    0,    0,    0,    0,    0,  123,    0,    0,
     434      181,    0,    0,    0,    0,    0,    0,    0,  115,    0,
     435      115,    0,  115,    0,  115,    0,    0,  115,    0,  111,
     436      111,    0,    0,  112,  112,    0,  112,    0,  112,  110,
     437      110,    0,    0,    0,    0,    0,    0,    0,    0,    0,
     438
     439        0,  179,  103,  103,  103,  103,  103,  103,  103,  103,
     440      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
     441      103,  103,  103,  103,  103,   21,  103,   24,  103,   27,
     442      103,  103,  103,  103,  103,  103,  103,   41,  103,   43,
     443      103,  103,  103,  103,  103,  103,  103,   56,  103,   67,
     444      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
     445      103,  103,  103,  103,  103,  103,   98,  103,  103,    0,
    419446        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    420         0,    0,    0,    0,  138,  116,  117,    0,  117,  117,
    421         0,    0,    6,  117,  113,    0,    0,    0,  117,    0,
    422       113,  113,  113,  113,    0,  114,    0,    0,  112,  112,
    423       112,  112,    0,  176,  177,    0,  182,  180,    0,    0,
    424         0,  106,    0,    0,    0,    0,    0,    0,    0,    0,
    425       105,   17,  105,  105,  105,  105,  105,  105,  105,  105,
    426       105,  105,  105,  105,  105,  105,  105,  105,  105,  105,
    427 
    428        14,  105,  105,  105,  105,  105,  105,  105,  105,  105,
    429       105,  105,  105,  105,  105,  105,  105,  105,  105,   51,
    430       105,  105,  105,   64,  105,  105,  105,  105,  105,  105,
    431       105,  105,  105,  105,  105,  105,  105,  105,  105,   91,
    432       105,  105,  105,  105,  105,  105,  105,  105,    0,    0,
    433         0,    0,    0,    0,    0,    0,  125,    0,    0,    0,
    434         0,    0,  125,    0,    0,  183,    0,    0,    0,    0,
    435         0,    0,    0,  117,    0,  117,    0,  117,    0,  117,
    436         0,    0,  117,    0,  113,  113,    0,    0,  114,  114,
    437         0,  114,    0,  114,  112,  112,    0,    0,    0,    0,
    438 
    439         0,    0,    0,    0,    0,    0,  181,  105,  105,  105,
    440       105,  105,  105,  105,  105,  105,  105,  105,  105,  105,
    441       105,  105,  105,  105,  105,  105,  105,  105,  105,  105,
    442        21,  105,   24,  105,   27,  105,  105,  105,  105,  105,
    443       105,  105,   41,  105,   43,  105,  105,  105,  105,  105,
    444       105,  105,   56,  105,   67,  105,  105,  105,  105,  105,
    445       105,  105,  105,  105,  105,  105,  105,  105,  105,  105,
    446       105,  105,   99,  105,  105,  105,    0,    0,    0,    0,
     447        0,    0,    0,  123,    0,    0,    0,    0,    0,  115,
     448        0,    0,    0,    0,    0,    0,    0,  112,  112,    0,
     449
     450      116,    0,  112,  112,    0,    0,    0,    0,    0,    0,
     451        0,    0,    0,    0,    0,    0,    0,  103,  103,   22,
     452      103,  103,  103,  103,  103,  103,  103,   15,  103,  103,
     453      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
     454      103,  103,   23,   25,  103,   32,  103,  103,  103,  103,
     455       40,  103,  103,  103,  103,   49,  103,  103,   54,  103,
     456      103,   71,  103,  103,  103,   77,  103,  103,  103,  103,
     457      103,   87,   89,  103,  103,   95,  103,  103,  102,    0,
    447458        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    448       125,    0,    0,    0,    0,    0,  117,    0,    0,    0,
    449 
    450         0,    0,    0,    0,  114,  114,    0,  118,    0,  114,
    451       114,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    452         0,    0,    0,    0,  105,  105,   22,  105,  105,  105,
    453       105,  105,  105,  105,   15,  105,  105,  105,  105,  105,
    454       105,  105,  105,  105,  105,  105,  105,  105,  105,   23,
    455        25,  105,   32,  105,  105,  105,  105,   40,  105,  105,
    456       105,  105,   49,  105,  105,   54,  105,  105,   71,   72,
    457       105,  105,  105,   78,  105,  105,  105,  105,  105,   88,
    458        90,  105,  105,   96,  105,  105,  103,  105,    0,    0,
     459        0,    0,    0,    0,    0,    0,    0,    0,  116,    0,
     460
     461        0,  112,  116,  116,  116,  116,    0,  112,    0,    0,
     462        0,    0,    0,    0,    0,    0,    0,    0,  103,    0,
     463      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
     464      103,  103,  103,  103,  103,  103,   59,  103,  103,  103,
     465      103,  103,  103,  103,  103,   28,  103,  103,  103,   39,
     466       42,   45,  103,  103,   52,  103,   61,   68,  103,  103,
     467       76,   78,   81,   82,   84,   85,  103,  103,   92,  103,
     468      103,    0,    1,    0,    0,    0,    0,    0,    0,  106,
     469        0,    0,    0,  123,    0,    0,    0,    0,  116,    0,
     470      116,  116,    0,    0,    0,    0,    0,    0,    0,    0,
     471
     472        0,  103,  103,   18,  103,  103,  103,  103,  103,  103,
     473      103,   16,  103,  103,  103,   33,  103,  103,  103,  103,
     474      103,  103,  103,  103,  103,  103,  103,  103,   36,   37,
     475      103,   48,   53,  103,  103,  103,   91,  103,  103,    0,
    459476        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    460 
    461         0,    0,    0,    0,    0,    0,    0,  118,    0,    0,
    462       114,  118,  118,  118,  118,    0,  114,    0,    0,    0,
    463         0,    0,    0,    0,    0,    0,    0,  105,    0,  105,
    464       105,  105,  105,  105,  105,  105,  105,  105,  105,  105,
    465       105,  105,  105,  105,  105,   59,  105,  105,  105,  105,
    466       105,  105,  105,  105,   28,  105,  105,  105,   39,   42,
    467        45,  105,  105,   52,  105,   61,   68,  105,  105,   77,
    468        79,   82,   83,   85,   86,  105,  105,   93,  105,  105,
    469       104,    0,    1,    0,    0,    0,    0,    0,    0,  108,
    470         0,    0,    0,  125,    0,    0,    0,    0,  118,    0,
    471 
    472       118,  118,    0,    0,    0,    0,    0,    0,    0,    0,
    473         0,  105,  105,   18,  105,  105,  105,  105,  105,  105,
    474       105,   16,  105,  105,  105,   33,  105,  105,  105,  105,
    475       105,  105,  105,  105,  105,  105,  105,  105,   36,   37,
    476       105,   48,   53,  105,  105,  105,   92,  105,  105,    0,
    477         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    478         0,    0,   10,   11,   29,   55,  105,  105,  105,  105,
    479       105,  105,  105,  105,  105,  105,  105,   60,   62,   65,
    480       105,  105,   80,   94,  105,  105,   35,  105,   47,   73,
    481        74,  105,   97,  100,    0,    0,    0,    0,    0,    0,
    482 
    483         0,    0,    0,    0,    0,    0,  105,   69,  105,  105,
    484        12,  105,  105,   30,   34,  105,  105,  105,   66,  105,
    485       105,  105,  105,  105,  105,  105,    0,    0,    0,    0,
     477        0,    0,   10,   11,   29,   55,  103,  103,  103,  103,
     478      103,  103,  103,  103,  103,  103,  103,   60,   62,   65,
     479      103,  103,   79,   93,  103,  103,   35,  103,   47,   72,
     480       73,  103,   96,   99,    0,    0,    0,    0,    0,    0,
     481        0,    0,    0,    0,    0,    0,  103,   69,  103,  103,
     482
     483       12,  103,  103,   30,   34,  103,  103,  103,   66,  103,
     484      103,  103,  103,  103,  103,  103,    0,    0,    0,    0,
    486485        0,    0,    0,    0,    0,    0,    0,    0,    0,   58,
    487       105,  105,  105,  105,  105,  105,  105,   50,   63,   75,
    488        81,   95,  101,  105,  105,  105,    0,    0,    0,    0,
    489         0,    0,    0,    0,  105,  105,   13,   19,  105,  105,
    490        31,  105,  105,  105,   26,   46,   89,    0,    0,  105,
    491       105,  105,  105,  105,  105,   76,  102,  105,   87,   20,
    492       105,  105,   44,   84,  105,  105,  105,  105,  105,  105,
    493 
    494       105,   98,   70,    0
     486      103,  103,  103,  103,  103,  103,  103,   50,   63,   74,
     487       80,   94,  100,  103,  103,  103,    0,    0,    0,    0,
     488        0,    0,    0,    0,  103,  103,   13,   19,  103,  103,
     489       31,  103,  103,  103,   26,   46,   88,    0,    0,  103,
     490      103,  103,  103,  103,  103,   75,  101,  103,   86,   20,
     491      103,  103,   44,   83,  103,  103,  103,  103,  103,  103,
     492      103,   97,   70,    0
     493
    495494    } ;
    496495
     
    540539    } ;
    541540
    542 static yyconst flex_int16_t yy_base[1079] =
     541static yyconst flex_int16_t yy_base[1069] =
    543542    {   0,
    544         0,   84, 2323, 2322,   94,    0,  177,  178,  179,  180,
    545      2338, 2866,  191, 2866,  197,   55, 2866, 2283,   60,  173,
    546      2866, 2866, 2866,   56,  188, 2866,  191,  189,  204,  216,
    547       275,    0, 2300, 2866,  216, 2298,  152,  344,  155,  220,
    548      2866,  159, 2866,  217,  226, 2866,  185,  154,  212,  251,
    549       237,  270,  235,  257,  241,  279,  193,  305,  314,  333,
    550       238,  228,  227, 2866,  225, 2866, 2295,  402,  390, 2866,
    551      2306, 2866, 2273,  235, 2866,    0, 2866,  426,    0, 2866,
    552       417, 2866,  439,  451, 2866,  498, 2270,  264, 2866, 2866,
    553      2866, 2866, 2866, 2286, 2866, 2285, 2866, 2866, 2297,  559,
    554 
    555      2866, 2313, 2866,  438,  444,  511,  534,  289,  253,  197,
    556       380,  305,    0,  319,  280,  198,  322, 2866, 2866, 2866,
    557      2281, 2866, 2866, 2866, 2278, 2277,  218,  312, 2292,  350,
    558       459,  368,  398,  440,  405,  448, 2272,  441, 2219,  458,
    559      2247, 2866,  335, 2866, 2866,  321, 2243, 2242, 2866, 2214,
    560       444,  297,  433,  372,  425,  454,  434,  461,  570,  455,
    561       468,  385,  474,  475,  494,  492,  489,  464,  488,  491,
    562       513,  503,  430,  521,  517,  519,  516,  522, 2240,  526,
    563       523,  276,  460,  524,  542,  555,  554,  561,  325,  558,
    564       584,  552,  600,  586,  593,  588,  595, 2866, 2866,  667,
    565 
    566       655, 2287,  682, 2866,  688, 2866, 2236,  590, 2232, 2230,
    567         0,  648, 2866, 2866,  675, 2227, 2224, 2223,    0, 2246,
    568       578,  631,  654,  685,  698,  660,  689,  670,  692, 2242,
    569       695,  701, 2200, 2198, 2866,    0,  693,  720,  685,  711,
    570      2197, 2247, 2866,  737,  745,  666,  757,  763,  797,  780,
    571       599, 2866, 2203, 2178,    0,  805, 2224,  806,  617, 2866,
    572      2199, 2172,  819, 2866, 2866, 2203, 2866, 2866,  707,  722,
    573      2182, 2182,  699, 2177, 2174, 2171,    0, 2170,    0, 2141,
    574       743,  724,  739,  689,  741,  720,  623,  759,  762,  804,
    575       681,  795,  749,  746,  799,  801,  765,  784,  803,  811,
    576 
    577      2170,  814,  818,  827,  831,  817,  821,  833,  835,  841,
    578       842,  834,  843,  844,  845,  847,  849,  857,  858,  860,
    579       851,  859,  866, 2167,  867,  868,  869,  871,  873,  874,
    580       763,  875,  876,  880,  881,  884,  887,  888,  885, 2164,
    581       891,  936,  894,  897,  905,  899,  901,  902,  965,  961,
    582      2160, 2159, 2157,    0, 2154,    0,  952,  956, 2153,    0,
    583      2152,    0, 2150,    0, 2169, 2866,  951,  952, 2148, 2145,
    584         0, 2143,    0, 2866,  967,  986,  978, 2866,  992, 1032,
    585      2140, 1008, 1054, 2136, 2866, 2866,  915,  951, 1040,  993,
    586      1079,  956, 1071,  994, 2866, 2866, 2132, 2130, 2128,    0,
    587 
    588      2125,    0, 2123,    0, 2121,    0, 2866,  935,  969,  973,
    589       968, 1012,  975, 1056,  992, 1058,  997, 1032,  993, 1000,
    590      1060, 1061, 1066, 1070, 1073, 1030, 1071, 1069, 1072, 1078,
    591      2121,  700, 2118, 1085, 2117, 1079, 1081, 1089, 1087, 1098,
    592      1096, 1099, 2116, 1101, 2114, 1105, 1106, 1107, 1109, 1112,
    593      1113, 1114, 2111, 1115, 2108, 1117, 1119, 1120, 1118, 1124,
    594      1126, 1121, 1136, 1130, 1134, 1135, 1149, 1137, 1138, 1150,
    595      1152, 1153, 2107, 1151, 1154, 1167, 1205, 2103,    0, 2101,
    596         0, 2098,    0, 2095,    0, 1204, 2094,    0, 2093,    0,
    597      2091, 2088, 2085,    0, 2084,    0, 1208, 2083, 1214, 1230,
    598 
    599      1216, 1255, 1221, 1172, 1169, 2866, 1271, 1289, 1282, 2093,
    600      2066, 2075, 2074,    0, 2073,    0, 2071,    0, 2068,    0,
    601      2065,    0, 2064,    0, 1190, 1159, 2066, 1193, 1195, 1197,
    602      1212, 1237, 1231, 1265, 1248, 1266, 1267, 1213, 1268, 1269,
    603      1283, 1270, 1271,  234, 1285, 1273, 1274, 1287, 1293, 2064,
    604      1306, 1301, 2061, 1290, 1303, 1305, 1308, 2058, 1312, 1309,
    605      1311, 1313, 2057, 1314, 1319, 2056, 1316, 1322, 2054, 2051,
    606      1315, 1327, 1330, 2050, 1333, 1332, 1336, 1334, 1338, 1345,
    607      2049, 1335, 1348, 2047, 1346, 1349, 2044, 1351, 2093, 2039,
    608         0, 2037,    0, 2004,    0, 2002,    0, 2001,    0, 1998,
    609 
    610         0, 1995,    0, 1994,    0, 1394, 1404, 1428, 1415, 1993,
    611      2866, 1421, 1370, 1391, 1419, 1991, 2866, 1988,    0, 1985,
    612         0, 1984,    0, 1983,    0,    0,    0, 1984,    0, 1352,
    613      1406, 1408, 1359, 1354, 1409, 1415, 1412, 1411, 1423, 1433,
    614      1425, 1430, 1435, 1437, 1439, 1448, 1442, 1449, 1440, 1444,
    615      1453, 1450, 1452, 1456, 1981, 1458, 1460, 1463, 1980, 1979,
    616      1977, 1466, 1467, 1974, 1470, 1973, 1972, 1469, 1473, 1970,
    617      1963, 1961, 1960, 1957, 1953, 1475, 1479, 1949, 1476, 1477,
    618      1945, 1992, 2866, 1938,    0, 1937,    0,    0,    0, 1938,
    619         0,    0,    0, 2866,    0,    0,    0,    0, 1525, 1932,
    620 
    621      2866, 2866, 1531, 1931,    0, 1930,    0,    0,    0,    0,
    622      1928, 1488, 1483, 1928, 1491, 1507, 1518, 1490, 1519, 1521,
    623      1508, 1927, 1525, 1529, 1527, 1541, 1530, 1384, 1543, 1539,
    624      1558, 1547, 1549, 1512, 1545, 1552, 1553, 1554, 1926, 1924,
    625      1557, 1921, 1920, 1556, 1537, 1560, 1919, 1561, 1564,    0,
    626         0,    0, 1914, 1911, 1910, 1612,    0, 1909, 1907, 1904,
    627      1903, 1902, 1903, 1900, 1899, 1898, 1568, 1572, 1566, 1577,
    628      1590, 1570, 1578, 1579, 1591, 1596, 1625, 1896, 1598, 1893,
    629      1599, 1603, 1604, 1608, 1606, 1612, 1892, 1613, 1891, 1889,
    630      1886, 1614, 1885, 1884, 1879, 1872, 1870, 1869, 1866, 1865,
    631 
    632      1864, 1862, 1845, 1836, 1835, 1832, 1616, 1828, 1617, 1622,
    633      1620, 1619, 1624, 1626, 1825, 1628, 1644, 1630, 1818, 1631,
    634      1639, 1645, 1647, 1634, 1649, 1651, 1813, 1812, 1791, 1790,
    635      1789, 1782, 1780, 1779, 1737, 1735, 1733, 1732, 1730, 1732,
    636      1652, 1654, 1655, 1657, 1659, 1662, 1663, 1731, 1729, 1668,
    637      1727, 1724, 1669, 1670, 1664, 1675, 1719, 1718, 1671, 1629,
    638      1564, 1468, 1350, 1269, 1678, 1681, 1239, 1682, 1688, 1689,
    639      1238, 1690, 1692, 1696, 1206, 1171, 1157, 1035, 1031, 1691,
    640      1697, 1700, 1704, 1702, 1706,  998,  560, 1701,  527,  395,
    641      1707, 1710,  357,  300, 1708, 1713, 1715, 1718, 1716, 1719,
    642 
    643      1720,  233,  137, 2866, 1794, 1807, 1820, 1830, 1840, 1853,
    644      1863, 1876, 1889, 1902, 1910, 1920, 1927, 1934, 1941, 1948,
    645      1955, 1962, 1969, 1976, 1983, 1990, 1994, 2002, 2008, 2015,
    646      2022, 2029, 2036, 2039, 2046, 2052, 2065, 2078, 2085, 2092,
    647      2099, 2106, 2109, 2116, 2119, 2126, 2129, 2136, 2139, 2146,
    648      2149, 2156, 2159, 2166, 2169, 2176, 2184, 2191, 2198, 2205,
    649      2212, 2215, 2222, 2225, 2232, 2235, 2242, 2248, 2261, 2268,
    650      2275, 2278, 2285, 2288, 2295, 2298, 2305, 2308, 2315, 2318,
    651      2325, 2328, 2335, 2342, 2345, 2352, 2355, 2362, 2369, 2376,
    652      2379, 2386, 2389, 2396, 2399, 2406, 2409, 2416, 2419, 2426,
    653 
    654      2432, 2445, 2452, 2459, 2462, 2469, 2472, 2479, 2482, 2489,
    655      2492, 2499, 2502, 2509, 2512, 2519, 2522, 2529, 2532, 2539,
    656      2546, 2549, 2556, 2559, 2566, 2569, 2576, 2579, 2582, 2588,
    657      2595, 2604, 2611, 2618, 2621, 2628, 2631, 2634, 2640, 2647,
    658      2650, 2653, 2656, 2659, 2662, 2665, 2668, 2675, 2678, 2685,
    659      2688, 2691, 2694, 2697, 2707, 2714, 2717, 2720, 2723, 2730,
    660      2737, 2744, 2747, 2754, 2761, 2768, 2775, 2782, 2789, 2796,
    661      2803, 2810, 2817, 2824, 2831, 2838, 2845, 2852
     543        0,   84, 2307, 2305,   94,    0,  177,  178,  179,  180,
     544     2319, 2845,  191, 2845,  197,   55, 2845, 2265,   60,  173,
     545     2845, 2845, 2845,   56,  188, 2845,  191,  189,  204,  216,
     546      275,    0, 2284, 2845,  216, 2283,  152,  344,  155,  220,
     547     2845,  159, 2845,  217,  226, 2845,  185,  154,  212,  251,
     548      237,  270,  235,  257,  241,  205,  193,  305,  314,  333,
     549      238,  228, 2845,  225, 2845, 2278,  402,  390, 2845, 2287,
     550     2845, 2255,  235, 2845,    0, 2845,  426,    0, 2845,  417,
     551     2845,  439,  451, 2845,  498, 2254,  264, 2845, 2845, 2845,
     552     2845, 2845, 2271, 2845, 2268, 2845, 2845, 2278,  559, 2845,
     553
     554     2295, 2845,  438,  444,  511,  534,  289,  253,  197,  380,
     555      305,    0,  319,  280,  198,  322, 2845, 2845, 2845, 2265,
     556     2845, 2845, 2845, 2263, 2260,  218,  255, 2273,  298,  350,
     557      368,  312,  440,  398,  405, 2254,  441, 2203,  446, 2232,
     558     2845,  335, 2845, 2845,  468, 2226, 2223, 2845, 2196,  439,
     559      282,  433,  372,  281,  437,  434,  428,  570,  444,  466,
     560      464,  469,  475,  321,  492,  438,  471,  445,  474,  512,
     561      489,  503,  496,  521,  276,  515,  516, 2224,  526,  510,
     562      519,  525,  543,  522,  560,  553,  523,  561,  551,  544,
     563      599,  582,  593,  584, 2845, 2845,  660,  651, 2272,  666,
     564
     565     2845,  678, 2845, 2219,  607, 2213, 2212,    0,  693, 2845,
     566     2845,  684, 2211, 2209, 2206,    0, 2227,  578,  608,  617,
     567      654,  679,  650,  683,  684,  687, 2224,  690,  691, 2201,
     568     2199, 2845,    0,  683,  710,  686,  700, 2179, 2230, 2845,
     569      730,  722,  427,  747,  756,  787,  770,  621, 2845, 2188,
     570     2161,    0,  795, 2205,  796,  700, 2845, 2181, 2156,  809,
     571     2845, 2845, 2188, 2845, 2845,  728,  733, 2165, 2163,  701,
     572     2159, 2158, 2156,    0, 2153,    0, 2122,  736,  746,  747,
     573      716,  689,  748,  566,  789,  659,  801,  751,  754,  785,
     574      776,  787,  808,  796,  739,  711,  806, 2152,  807,  815,
     575
     576      817,  821,  809,  819,  827,  830,  831,  832,  833,  834,
     577      839,  840,  841,  842,  846,  853,  854,  844,  847,  855,
     578     2151,  860,  862,  861,  866,  864,  867,  869,  870,  872,
     579      873,  874,  878,  875,  883, 2149,  882,  928,  885,  888,
     580      894,  899,  892,  956,  958, 2143, 2140, 2139,    0, 2138,
     581        0,  945,  949, 2136,    0, 2133,    0, 2132,    0, 2153,
     582     2845,  930,  944, 2131, 2126,    0, 2125,    0, 2845,  959,
     583      979,  970, 2845,  985, 1025, 2124, 1001, 1047, 2122, 2845,
     584     2845,  943,  987, 1033,  986, 1072,  310, 1064,  987, 2845,
     585     2845, 2119, 2115, 2111,    0, 2109,    0, 2107,    0, 2104,
     586
     587        0, 2845,  913,  947,  964,  966, 1005,  927, 1049,  939,
     588     1051,  968,  991,  986, 1041, 1053, 1003, 1059, 1063, 1066,
     589     1023, 1064, 1062, 1065,  978, 2105, 1072, 2103, 1078, 2100,
     590     1071, 1074, 1076, 1080, 1091, 1093, 1095, 2097, 1094, 2096,
     591     1082, 1098, 1099, 1100, 1101, 1105, 1106, 2095, 1107, 2093,
     592     1110, 1112, 1111, 1117, 1118, 1113, 1119, 1123, 1126, 1127,
     593     1129, 1130, 1131, 1140, 1142, 1143, 2090, 1144, 1147, 1195,
     594     2084,    0, 2083,    0, 2082,    0, 2080,    0, 1190, 2077,
     595        0, 2074,    0, 2073, 2072, 2070,    0, 2067,    0, 1197,
     596     2064, 1203, 1219, 1205, 1244, 1210, 1202, 1200, 2845, 1260,
     597
     598     1278, 1271, 2075, 2050, 2060, 2057,    0, 2054,    0, 2053,
     599        0, 2052,    0, 2050,    0, 2047,    0, 1164, 1152, 2047,
     600     1184, 1182, 1226, 1157, 1227, 1196, 1254, 1146, 1237, 1255,
     601     1256, 1204, 1258, 1271, 1261, 1260, 1292, 1274, 1262, 1277,
     602     1278, 1280, 2046, 1186, 1289, 2045, 1279, 1282, 1290, 1295,
     603     2043, 1299, 1300, 1301, 1303, 2040, 1306, 1302, 2037, 1310,
     604     1311, 2036, 1309, 1312, 1315, 2035, 1220, 1314, 1316, 1322,
     605     1326, 1333, 2033, 1328, 1329, 2030, 1330, 1335, 2029, 2078,
     606     2023,    0, 2020,    0, 2019,    0, 2018,    0, 2016,    0,
     607     1983,    0, 1981,    0, 1980,    0, 1379, 1385, 1413, 1396,
     608
     609     1977, 2845, 1402, 1351, 1389, 1403, 1974, 2845, 1973,    0,
     610     1972,    0, 1970,    0, 1967,    0,    0,    0, 1967,    0,
     611     1390, 1336, 1397, 1365, 1345, 1392, 1393, 1409, 1381, 1407,
     612     1412, 1414, 1419, 1420, 1422, 1424, 1427, 1431,  926, 1429,
     613     1432, 1438, 1433, 1435, 1440, 1966, 1437, 1441, 1445, 1965,
     614     1963, 1960, 1450, 1453, 1959, 1455, 1958, 1956, 1456, 1459,
     615     1953, 1952, 1951, 1949, 1942, 1940, 1458, 1461, 1939, 1464,
     616     1462, 1986, 2845, 1929,    0, 1925,    0,    0,    0, 1924,
     617        0,    0,    0, 2845,    0,    0,    0,    0, 1511, 1918,
     618     2845, 2845, 1517, 1917,    0, 1916,    0,    0,    0,    0,
     619
     620     1914, 1474, 1468, 1914, 1443, 1493, 1498, 1476, 1504, 1505,
     621     1494, 1913, 1334, 1509, 1506, 1510, 1511, 1545, 1525, 1518,
     622     1543, 1530, 1523, 1529, 1531, 1534, 1535, 1539, 1912, 1910,
     623     1540, 1907, 1906, 1542, 1538, 1544, 1905, 1546, 1550,    0,
     624        0,    0, 1900, 1897, 1896, 1596,    0, 1895, 1893, 1890,
     625     1889, 1888, 1889, 1886, 1885, 1884, 1552, 1557, 1573, 1549,
     626     1551, 1553, 1575, 1555, 1577, 1582, 1607, 1882, 1583, 1879,
     627     1584, 1589, 1585, 1590, 1591, 1594, 1878, 1597, 1877, 1875,
     628     1872, 1598, 1871, 1870, 1865, 1862, 1861, 1860, 1858, 1851,
     629     1849, 1848, 1845, 1844, 1843, 1841, 1600, 1827, 1601, 1605,
     630
     631     1608, 1602, 1609, 1610, 1818, 1614, 1629, 1615, 1817, 1604,
     632     1616, 1625, 1630, 1380, 1631, 1633, 1811, 1804, 1801, 1794,
     633     1792, 1791, 1770, 1769, 1768, 1761, 1759, 1758, 1716, 1716,
     634     1634, 1636, 1635, 1637, 1640, 1641, 1645, 1715, 1713, 1647,
     635     1712, 1711, 1648, 1652, 1653, 1654, 1703, 1701, 1700, 1698,
     636     1696, 1476, 1472, 1343, 1657, 1667, 1259, 1656, 1660, 1668,
     637     1150, 1671, 1675, 1676, 1031, 1027,  793,  752,  675, 1669,
     638     1677, 1680, 1681, 1682, 1684,  645,  607, 1686,  487,  441,
     639     1688, 1690,  394,  357, 1693, 1694, 1695, 1697, 1696, 1698,
     640     1700,  233,  137, 2845, 1773, 1786, 1799, 1809, 1819, 1832,
     641
     642     1842, 1855, 1868, 1881, 1889, 1899, 1906, 1913, 1920, 1927,
     643     1934, 1941, 1948, 1955, 1962, 1969, 1973, 1981, 1987, 1994,
     644     2001, 2008, 2015, 2018, 2025, 2031, 2044, 2057, 2064, 2071,
     645     2078, 2085, 2088, 2095, 2098, 2105, 2108, 2115, 2118, 2125,
     646     2128, 2135, 2138, 2145, 2148, 2155, 2163, 2170, 2177, 2184,
     647     2191, 2194, 2201, 2204, 2211, 2214, 2221, 2227, 2240, 2247,
     648     2254, 2257, 2264, 2267, 2274, 2277, 2284, 2287, 2294, 2297,
     649     2304, 2307, 2314, 2321, 2324, 2331, 2334, 2341, 2348, 2355,
     650     2358, 2365, 2368, 2375, 2378, 2385, 2388, 2395, 2398, 2405,
     651     2411, 2424, 2431, 2438, 2441, 2448, 2451, 2458, 2461, 2468,
     652
     653     2471, 2478, 2481, 2488, 2491, 2498, 2501, 2508, 2511, 2518,
     654     2525, 2528, 2535, 2538, 2545, 2548, 2555, 2558, 2561, 2567,
     655     2574, 2583, 2590, 2597, 2600, 2607, 2610, 2613, 2619, 2626,
     656     2629, 2632, 2635, 2638, 2641, 2644, 2647, 2654, 2657, 2664,
     657     2667, 2670, 2673, 2676, 2686, 2693, 2696, 2699, 2702, 2709,
     658     2716, 2723, 2726, 2733, 2740, 2747, 2754, 2761, 2768, 2775,
     659     2782, 2789, 2796, 2803, 2810, 2817, 2824, 2831
    662660    } ;
    663661
    664 static yyconst flex_int16_t yy_def[1079] =
     662static yyconst flex_int16_t yy_def[1069] =
    665663    {   0,
    666       904,    1,  905,  905,  904,    5,  906,  906,  907,  907,
    667       904,  904,  904,  904,  904,  904,  904,  908,  904,  904,
    668       904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
    669       904,   31,  904,  904,  904,  904,  904,  904,  909,  908,
    670       904,  904,  904,  904,  908,  904,  908,  908,  908,  908,
    671       908,  908,  908,  908,  908,  908,  908,  908,  908,  908,
    672       908,  908,  908,  904,  904,  904,  904,  904,  910,  904,
    673       904,  904,  911,  904,  904,  912,  904,  904,  913,  904,
    674       904,  904,  904,  904,  904,  904,  908,  904,  904,  904,
    675       904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
    676 
    677       904,  914,  904,  904,   30,  904,  904,  904,  904,  915,
    678        30,  904,   31,  904,  904,   31,  904,  904,  904,  904,
    679       904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
    680       904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
    681       916,  904,  904,  904,  904,  908,  917,  918,  904,  904,
    682       908,  908,  908,  908,  908,  908,  908,  908,  908,  908,
    683       908,  908,  908,  908,  908,  908,  908,  908,  908,  908,
    684       908,  908,  908,  908,  908,  908,  908,  908,  908,  908,
    685       908,  908,  908,  908,  908,  908,  908,  908,  908,  908,
    686       908,  908,  908,  908,  908,  908,  908,  904,  904,  904,
    687 
    688       910,  910,  910,  904,  910,  904,  911,  904,  919,  920,
    689       912,  904,  904,  904,  904,  921,  922,  923,  913,  904,
    690       904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
    691       904,  904,  924,  925,  904,  100,  904,  904,  904,  904,
    692       100,  914,  904,  100,  111,  245,  904,  904,  904,  904,
    693       904,  904,  904,  904,  926,  927,  928,  904,  904,  904,
    694       904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
    695       904,  929,  904,  930,  931,  932,  933,  934,  935,  904,
    696       936,  936,  936,  936,  936,  936,  936,  936,  936,  936,
    697       936,  936,  936,  936,  936,  936,  936,  936,  936,  936,
    698 
    699       936,  936,  936,  936,  936,  936,  936,  936,  936,  936,
    700       936,  936,  936,  936,  936,  936,  936,  936,  936,  936,
    701       936,  936,  936,  936,  936,  936,  936,  936,  936,  936,
    702       936,  936,  936,  936,  936,  936,  936,  936,  936,  936,
    703       936,  936,  936,  936,  936,  936,  936,  936,  937,  938,
    704       939,  940,  941,  942,  943,  944,  904,  904,  945,  946,
    705       947,  948,  949,  950,  904,  904,  904,  904,  904,  951,
    706       952,  953,  954,  904,  904,  904,  904,  904,  904,  904,
    707       380,  904,  376,  383,  904,  904,  955,  956,  957,  904,
    708       904,  904,  957,  904,  904,  904,  958,  959,  960,  961,
    709 
    710       962,  963,  964,  965,  966,  967,  904,  968,  968,  968,
    711       968,  968,  968,  968,  968,  968,  968,  968,  968,  968,
    712       968,  968,  968,  968,  968,  968,  968,  968,  968,  968,
    713       968,  968,  968,  968,  968,  968,  968,  968,  968,  968,
    714       968,  968,  968,  968,  968,  968,  968,  968,  968,  968,
    715       968,  968,  968,  968,  968,  968,  968,  968,  968,  968,
    716       968,  968,  968,  968,  968,  968,  968,  968,  968,  968,
    717       968,  968,  968,  968,  968,  968,  969,  970,  971,  972,
    718       973,  974,  975,  976,  977,  904,  978,  979,  980,  981,
    719       982,  982,  983,  984,  985,  986,  904,  497,  904,  904,
    720 
    721       987,  904,  987,  904,  904,  904,  904,  904,  904,  904,
    722       904,  988,  989,  990,  991,  992,  993,  994,  995,  996,
    723       997,  998,  999, 1000, 1001, 1001, 1001, 1001, 1001, 1001,
    724      1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001,
    725      1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001,
    726      1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001,
    727      1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001,
    728      1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001,
    729      1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1002, 1003,
    730      1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013,
    731 
    732      1014, 1015, 1016, 1017, 1018,  904,  904,  904,  904, 1019,
    733       904,  608,  904,  904,  904,  612,  904, 1020, 1021, 1022,
    734      1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1030,
    735      1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030,
    736      1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030,
    737      1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030,
    738      1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030,
    739      1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030,
    740      1030, 1032,  904, 1033, 1034, 1035, 1036, 1037, 1038, 1039,
    741      1040, 1041, 1042,  904, 1043, 1044, 1045, 1046,  904,  699,
    742 
    743       904,  904,  904, 1047, 1048, 1049, 1050, 1051, 1052, 1053,
    744      1054, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055,
    745      1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055,
    746      1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055,
    747      1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1056,
    748      1057, 1058, 1059, 1060, 1061,  904, 1062, 1047, 1049, 1063,
    749      1064, 1054, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055,
    750      1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055,
    751      1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055,
    752      1055, 1055, 1055, 1055, 1065, 1066, 1059, 1067, 1060, 1068,
    753 
    754      1061, 1069, 1070, 1063, 1071, 1064, 1055, 1055, 1055, 1055,
    755      1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055,
    756      1055, 1055, 1055, 1055, 1055, 1055, 1072, 1065, 1073, 1066,
    757      1074, 1067, 1075, 1068, 1076, 1069, 1077, 1070, 1071, 1055,
    758      1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055,
    759      1055, 1055, 1055, 1055, 1055, 1055, 1078, 1072, 1073, 1074,
    760      1075, 1049, 1076, 1077, 1055, 1055, 1055, 1055, 1055, 1055,
    761      1055, 1055, 1055, 1055, 1055, 1055, 1055, 1078, 1049, 1055,
    762      1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055,
    763      1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055,
    764 
    765      1055, 1055, 1055,    0,  904,  904,  904,  904,  904,  904,
    766       904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
    767       904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
    768       904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
    769       904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
    770       904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
    771       904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
    772       904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
    773       904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
    774       904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
    775 
    776       904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
    777       904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
    778       904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
    779       904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
    780       904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
    781       904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
    782       904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
    783       904,  904,  904,  904,  904,  904,  904,  904
     664      894,    1,  895,  895,  894,    5,  896,  896,  897,  897,
     665      894,  894,  894,  894,  894,  894,  894,  898,  894,  894,
     666      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     667      894,   31,  894,  894,  894,  894,  894,  894,  899,  898,
     668      894,  894,  894,  894,  898,  894,  898,  898,  898,  898,
     669      898,  898,  898,  898,  898,  898,  898,  898,  898,  898,
     670      898,  898,  894,  894,  894,  894,  894,  900,  894,  894,
     671      894,  901,  894,  894,  902,  894,  894,  903,  894,  894,
     672      894,  894,  894,  894,  894,  898,  894,  894,  894,  894,
     673      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     674
     675      904,  894,  894,   30,  894,  894,  894,  894,  905,   30,
     676      894,   31,  894,  894,   31,  894,  894,  894,  894,  894,
     677      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     678      894,  894,  894,  894,  894,  894,  894,  894,  894,  906,
     679      894,  894,  894,  894,  898,  907,  908,  894,  894,  898,
     680      898,  898,  898,  898,  898,  898,  898,  898,  898,  898,
     681      898,  898,  898,  898,  898,  898,  898,  898,  898,  898,
     682      898,  898,  898,  898,  898,  898,  898,  898,  898,  898,
     683      898,  898,  898,  898,  898,  898,  898,  898,  898,  898,
     684      898,  898,  898,  898,  894,  894,  894,  900,  900,  900,
     685
     686      894,  900,  894,  901,  894,  909,  910,  902,  894,  894,
     687      894,  894,  911,  912,  913,  903,  894,  894,  894,  894,
     688      894,  894,  894,  894,  894,  894,  894,  894,  894,  914,
     689      915,  894,   99,  894,  894,  894,  894,   99,  904,  894,
     690       99,  110,  242,  894,  894,  894,  894,  894,  894,  894,
     691      894,  916,  917,  918,  894,  894,  894,  894,  894,  894,
     692      894,  894,  894,  894,  894,  894,  894,  894,  919,  894,
     693      920,  921,  922,  923,  924,  925,  894,  926,  926,  926,
     694      926,  926,  926,  926,  926,  926,  926,  926,  926,  926,
     695      926,  926,  926,  926,  926,  926,  926,  926,  926,  926,
     696
     697      926,  926,  926,  926,  926,  926,  926,  926,  926,  926,
     698      926,  926,  926,  926,  926,  926,  926,  926,  926,  926,
     699      926,  926,  926,  926,  926,  926,  926,  926,  926,  926,
     700      926,  926,  926,  926,  926,  926,  926,  926,  926,  926,
     701      926,  926,  926,  927,  928,  929,  930,  931,  932,  933,
     702      934,  894,  894,  935,  936,  937,  938,  939,  940,  894,
     703      894,  894,  894,  894,  941,  942,  943,  944,  894,  894,
     704      894,  894,  894,  894,  894,  375,  894,  371,  378,  894,
     705      894,  945,  946,  947,  894,  894,  894,  947,  894,  894,
     706      894,  948,  949,  950,  951,  952,  953,  954,  955,  956,
     707
     708      957,  894,  958,  958,  958,  958,  958,  958,  958,  958,
     709      958,  958,  958,  958,  958,  958,  958,  958,  958,  958,
     710      958,  958,  958,  958,  958,  958,  958,  958,  958,  958,
     711      958,  958,  958,  958,  958,  958,  958,  958,  958,  958,
     712      958,  958,  958,  958,  958,  958,  958,  958,  958,  958,
     713      958,  958,  958,  958,  958,  958,  958,  958,  958,  958,
     714      958,  958,  958,  958,  958,  958,  958,  958,  958,  959,
     715      960,  961,  962,  963,  964,  965,  966,  967,  894,  968,
     716      969,  970,  971,  972,  972,  973,  974,  975,  976,  894,
     717      490,  894,  894,  977,  894,  977,  894,  894,  894,  894,
     718
     719      894,  894,  894,  894,  978,  979,  980,  981,  982,  983,
     720      984,  985,  986,  987,  988,  989,  990,  991,  991,  991,
     721      991,  991,  991,  991,  991,  991,  991,  991,  991,  991,
     722      991,  991,  991,  991,  991,  991,  991,  991,  991,  991,
     723      991,  991,  991,  991,  991,  991,  991,  991,  991,  991,
     724      991,  991,  991,  991,  991,  991,  991,  991,  991,  991,
     725      991,  991,  991,  991,  991,  991,  991,  991,  991,  991,
     726      991,  991,  991,  991,  991,  991,  991,  991,  991,  992,
     727      993,  994,  995,  996,  997,  998,  999, 1000, 1001, 1002,
     728     1003, 1004, 1005, 1006, 1007, 1008,  894,  894,  894,  894,
     729
     730     1009,  894,  599,  894,  894,  894,  603,  894, 1010, 1011,
     731     1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021,
     732     1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020,
     733     1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020,
     734     1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020,
     735     1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020,
     736     1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020,
     737     1020, 1022,  894, 1023, 1024, 1025, 1026, 1027, 1028, 1029,
     738     1030, 1031, 1032,  894, 1033, 1034, 1035, 1036,  894,  689,
     739      894,  894,  894, 1037, 1038, 1039, 1040, 1041, 1042, 1043,
     740
     741     1044, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045,
     742     1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045,
     743     1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045,
     744     1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1046,
     745     1047, 1048, 1049, 1050, 1051,  894, 1052, 1037, 1039, 1053,
     746     1054, 1044, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045,
     747     1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045,
     748     1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045,
     749     1045, 1045, 1045, 1045, 1055, 1056, 1049, 1057, 1050, 1058,
     750     1051, 1059, 1060, 1053, 1061, 1054, 1045, 1045, 1045, 1045,
     751
     752     1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045,
     753     1045, 1045, 1045, 1045, 1045, 1045, 1062, 1055, 1063, 1056,
     754     1064, 1057, 1065, 1058, 1066, 1059, 1067, 1060, 1061, 1045,
     755     1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045,
     756     1045, 1045, 1045, 1045, 1045, 1045, 1068, 1062, 1063, 1064,
     757     1065, 1039, 1066, 1067, 1045, 1045, 1045, 1045, 1045, 1045,
     758     1045, 1045, 1045, 1045, 1045, 1045, 1045, 1068, 1039, 1045,
     759     1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045,
     760     1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045,
     761     1045, 1045, 1045,    0,  894,  894,  894,  894,  894,  894,
     762
     763      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     764      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     765      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     766      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     767      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     768      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     769      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     770      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     771      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     772      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     773
     774      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     775      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     776      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     777      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     778      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     779      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     780      894,  894,  894,  894,  894,  894,  894,  894
    784781    } ;
    785782
    786 static yyconst flex_int16_t yy_nxt[2952] =
     783static yyconst flex_int16_t yy_nxt[2931] =
    787784    {   0,
    788785       12,   13,   14,   15,   15,   15,   13,   16,   17,   12,
     
    794791       50,   51,   52,   53,   18,   54,   18,   55,   18,   18,
    795792       56,   18,   57,   58,   59,   60,   61,   62,   18,   18,
    796        63,   64,   65,   66,   67,   68,   85,   93,   86,   86,
    797        68,   89,   90,   69,   72,   72,   72,   72,   72,   72,
    798 
    799        72,   72,   72,   72,   73,   72,   72,   72,   72,   72,
     793       18,   63,   64,   65,   66,   67,   84,   92,   85,   85,
     794       67,   88,   89,   68,   71,   71,   71,   71,   71,   71,
     795
     796       71,   71,   71,   71,   72,   71,   71,   71,   71,   71,
     797       71,   71,   71,   71,   71,   71,   71,   71,   71,   71,
     798       71,   71,   71,   71,   71,   71,   71,   71,   71,   72,
    800799       72,   72,   72,   72,   72,   72,   72,   72,   72,   72,
    801        72,   72,   72,   72,   72,   72,   72,   72,   72,   73,
    802        73,   73,   73,   73,   73,   73,   73,   73,   73,   73,
    803        73,   73,   73,   73,   73,   72,   74,   72,   72,   73,
    804        75,   73,   73,   73,   73,   73,   73,   73,   73,   73,
    805        73,   73,   73,   73,   73,   73,   73,   73,   73,   73,
    806        73,   73,   73,   73,   73,   72,   72,   72,   72,   77,
    807        77,   80,   80,  124,  125,   91,  142,   80,   80,   88,
    808        77,   77,   81,   82,   83,   83,   83,   81,   83,   82,
    809 
    810        84,   84,   84,   83,   92,   94,   88,  143,  147,   99,
    811        96,  100,  100,  100,  100,  100,  100,  255,  904,   95,
    812       101,   86,   97,   98,   86,  102,  162,  119,  144,   78,
    813        78,   78,   78,  145,  148,  103,  104,   88,  105,  105,
    814       105,  105,  106,  106,  120,   88,  121,  122,  149,  266,
    815       150,  267,  257,  263,  185,  107,  198,  648,  160,  108,
    816       161,  151,  152,  153,   88,  109,  110,  154,  155,  163,
    817       156,  111,   88,  157,  158,  146,  164,  107,   88,   88,
    818        88,  159,  165,  112,  209,   88,   88,   88,  197,   88,
    819        88,  109,  196,   88,  110,  104,  253,  113,  113,  113,
    820 
    821       113,  113,  113,   88,  170,  178,  171,  199,  195,   88,
    822       210,  181,  166,  233,  107,  172,  167,  182,  114,  179,
    823       254,  168,   88,  261,  115,  169,  180,  173,   88,  144,
    824       116,   88,  251,  326,  145,  174,  107,  175,  252,  234,
    825       176,  144,  117,  266,  177,  267,  145,  262,  183,   88,
    826       115,  126,   88,  184,  252,  127,  128,   88,  129,  193,
    827       130,  131,  259,  132,  252,  133,   88,  283,  260,  186,
    828       187,  260,  251,   88,  134,  135,  136,   88,  190,  188,
    829       252,  266,  189,  267,  274,   88,  191,  268,  146,  259,
    830       337,  203,  204,  192,  260,  137,  203,  260,  138,  266,
    831 
    832       904,  267,  194,  200,   82,   83,   83,   83,  200,   88,
    833       275,  201,  205,  205,  205,  205,  205,  205,   81,   82,
    834        83,   83,   83,   81,   88,  139,  140,  212,  213,  266,
    835       904,  267,  212,  285,  214,  258,  266,   88,  267,  214,
    836        83,   82,   83,   83,   83,   83,  303,   88,  215,  215,
    837       215,  215,   83,   82,   84,   84,   84,   83,  904,  214,
    838       244,  244,  244,  244,  244,  244,  245,  245,  245,  245,
    839       269,  266,  266,  267,  267,  216,  268,   88,  214,  266,
    840       270,  267,   88,  214,  214,   88,   88,  214,  214,  266,
    841       266,  267,  267,  286,  904,  214,   88,  317,  214,  246,
    842 
    843       214,  217,  214,  284,  218,  220,   88,   88,  288,  221,
    844       222,  281,   88,   88,  223,  224,   88,  225,  282,  226,
    845        88,  327,  904,  301,  287,  289,   88,   88,  227,  228,
    846       229,  104,  306,  106,  106,  106,  106,  106,  106,  311,
    847        88,   88,  302,   88,   88,  307,   88,  304,  305,  230,
    848       107,  248,  231,  248,  309,   88,  249,  249,  249,  249,
    849       249,  249,  310,  308,  313,   88,  247,  312,   88,   88,
    850       314,   88,  107,   88,   88,   88,   88,  316,   88,   88,
    851       232,  236,  236,  236,  236,  236,  236,  319,  315,  250,
    852       318,  320,  325,  323,   88,  321,  322,  237,  238,  239,
    853 
    854       324,  240,  239,  328,   88,  329,   88,   88,  144,  365,
    855        88,  366,   88,   88,  241,  330,  331,  333,  335,  239,
    856       238,  239,   88,  341,  240,  332,  239,  290,  291,  292,
    857       338,  293,  294,  336,  334,  295,   88,  296,   88,  351,
    858        88,  339,  297,  298,  299,   88,  300,   88,  385,  212,
    859       213,  343,   88,  347,  212,  342,  203,  204,  345,  344,
    860       346,  203,  365,  340,  366,  352,  395,  348,  200,   82,
    861        83,   83,   83,  200,  385,   88,  201,  205,  205,  205,
    862       205,  205,  205,  203,  204,  365,  904,  366,  203,  349,
    863       204,  365,  395,  366,  349,  414,  350,  357,  357,  357,
    864 
    865       357,  365,  366,  366,  205,  205,  205,  205,  205,  205,
    866       205,  205,  205,  205,  205,  205,  365,  366,  366,  367,
    867       365,  382,  366,  365,  368,  366,  365,  374,  366,  365,
    868       358,  366,  365,   88,  366,  374,  374,  375,  266,  375,
    869       267,   88,  376,  376,  376,  376,  376,  376,  397,  378,
    870       374,  378,   88,  266,  378,  267,  420,  411,  374,  380,
    871       380,  380,  380,  380,  380,  104,  550,  245,  245,  245,
    872       245,  378,   88,  378,  398,  377,   88,  413,  378,  106,
    873       106,  106,  106,  106,  106,  249,  249,  249,  249,  249,
    874       249,   88,  381,   88,  409,   88,  107,  248,   88,  248,
    875 
    876       246,   88,  249,  249,  249,  249,  249,  249,  408,  410,
    877       412,   88,  258,  423,   88,   88,  415,   88,  107,  383,
    878       383,  383,  383,  383,  383,  388,  427,  422,  106,  106,
    879       106,  106,  106,  106,  416,  237,   88,  239,  461,  240,
    880       239,  113,  113,  113,  113,  113,  113,   88,  390,  428,
    881       391,   88,  384,   88,  392,   88,   88,  239,  426,  239,
    882       393,  258,  240,   88,  239,  421,   88,  424,  425,   88,
    883        88,  417,  394,   88,  263,  432,  391,  418,  419,   88,
    884       392,  430,  429,   88,  431,   88,   88,   88,  433,  435,
    885       434,  436,  439,   88,   88,   88,   88,   88,  440,   88,
    886 
    887       441,   88,  444,   88,  443,  442,  437,  438,  446,   88,
    888        88,   88,   88,  445,  448,  449,  447,  450,   88,   88,
    889        88,   88,  452,   88,  457,   88,   88,   88,   88,  453,
    890       455,  454,   88,   88,  451,  456,   88,   88,  459,   88,
    891        88,  464,  458,   88,  144,  463,   88,  462,  460,   88,
    892       469,   88,  470,   88,   88,  465,  474,   88,  468,  466,
    893       502,  467,  472,  204,  471,  473,  349,  204,  475,  202,
    894       503,  349,  476,  350,  214,  214,  214,  214,  357,  357,
    895       357,  357,  365,  365,  366,  366,  502,   88,   88,  376,
    896       376,  376,  376,  376,  376,  375,  502,  375,  525,  510,
    897 
    898       376,  376,  376,  376,  376,  376,  504,  486,  497,  497,
    899       497,  497,  497,  497,  236,  236,  236,  236,  236,  236,
    900        88,   88,  502,  511,  237,   88,  239,   88,  240,  239,
    901       245,  245,  245,  245,  106,  106,  505,  526,  530,  528,
    902       527,  498,  506,  506,   88,   88,  239,  379,  239,   88,
    903        88,  240,   88,  239,  380,  380,  380,  380,  380,  380,
    904       388,  505,  534,  382,   88,  537,  532,  536,  506,  506,
    905       237,  238,  239,  529,  240,  239,  383,  383,  383,  383,
    906       383,  383,   88,  390,   88,  391,  904,  381,  545,  392,
    907       904,  904,  239,  238,  239,  393,  507,  240,  507,  239,
    908 
    909       535,  508,  508,  508,  508,  508,  508,  394,   88,  384,
    910        88,  391,   88,   88,  390,  392,  391,  531,   88,  533,
    911       392,   88,   88,   88,   88,   88,  512,  542,  538,  539,
    912        88,   88,  547,   88,  509,  540,  541,   88,  394,   88,
    913       543,   88,  391,  548,  546,  549,  392,  544,   88,  551,
    914        88,   88,  552,   88,  554,  553,  556,   88,   88,   88,
    915       558,   88,  555,  557,   88,   88,   88,   88,  559,   88,
    916        88,   88,   88,   88,  562,  566,   88,  560,   88,  564,
    917       561,  570,   88,  563,  567,  565,   88,   88,   88,   88,
    918        88,  571,  568,  569,  578,  574,  572,  575,  573,  577,
    919 
    920       576,   88,   88,   88,   88,   88,   88,  204,  579,   88,
    921       582,   88,  581,  589,  580,  587,  585,  502,  611,   88,
    922       583,  584,  588,   88,  631,  586,  214,  214,  214,  214,
    923       497,  497,  497,  497,  497,  497,  380,  380,  380,  380,
    924       380,  380,   88,  502,  611,   88,  237,   88,  239,   88,
    925       240,  239,  383,  383,  383,  383,  383,  383,   88,  630,
    926       632,  502,  634,  498,   88,   88,  502,  633,  239,  499,
    927       239,  503,  607,  240,  607,  239,  610,  608,  608,  608,
    928       608,  608,  608,   88,  642,  500,  635,  502,  637,   88,
    929        88,   88,  502,  508,  508,  508,  508,  508,  508,  507,
    930 
    931        88,  507,  636,  639,  508,  508,  508,  508,  508,  508,
    932       609,  612,  612,  612,  612,  612,  612,   88,   88,   88,
    933        88,   88,   88,   88,  904,   88,   88,  613,  638,  614,
    934       644,  615,  614,  646,  641,   88,  647,   88,  640,   88,
    935       645,  643,   88,  651,  616,   88,  649,  650,  652,  614,
    936       653,  614,  654,   88,  615,   88,  614,   88,   88,  656,
    937        88,   88,  655,   88,   88,   88,   88,   88,   88,  659,
    938       657,   88,  658,  660,   88,  662,  665,  666,  661,   88,
    939       663,  664,   88,  667,   88,   88,   88,   88,   88,  668,
    940        88,  676,  669,  671,  672,  673,  677,   88,   88,  670,
    941 
    942        88,   88,  675,   88,   88,  904,   88,  777,  674,  712,
    943       678,   88,  701,  701,  680,  679,  497,  497,  497,  497,
    944       497,  497,  713,  717,  716,  681,  608,  608,  608,  608,
    945       608,  608,  607,  701,  607,  701,   88,  608,  608,  608,
    946       608,  608,  608,  612,  612,  612,  612,  612,  612,  606,
    947       699,  699,  699,  699,  699,  699,  701,  702,   88,  702,
    948        88,   88,  702,   88,   88,  714,  613,   88,  614,  715,
    949       615,  614,  720,  731,  719,   88,  616,   88,  722,  702,
    950       721,  702,   88,  700,  718,   88,  702,   88,  614,   88,
    951       614,   88,   88,  615,   88,  614,   88,  725,  723,  724,
    952 
    953        88,   88,   88,  729,   88,   88,  727,  732,   88,  726,
    954        88,  730,   88,  728,  734,   88,  733,  737,   88,   88,
    955       735,   88,   88,  879,  740,   88,  736,   88,   88,   88,
    956       744,   88,  745,  738,  739,   88,  746,  748,  741,  743,
    957        88,  747,   88,   88,  749,  764,  742,  699,  699,  699,
    958       699,  699,  699,  612,  612,  612,  612,  612,  612,   88,
    959        88,  763,  768,  613,   88,  614,  766,  615,  614,  765,
    960        88,   88,  783,   88,  769,  767,  770,   88,  771,   88,
    961       700,   88,   88,  772,  780,  614,  703,  614,  774,   88,
    962       615,   88,  614,   88,  773,   88,  775,   88,  778,   88,
    963 
    964       779,   88,  781,  776,   88,   88,   88,  784,   88,   88,
    965        88,  791,   88,   88,  782,  787,   88,  785,   88,  904,
    966        88,  793,   88,  809,   88,  794,  786,  788,  790,   88,
    967        88,   88,  789,  792,  699,  699,  699,  699,  699,  699,
    968       807,  808,   88,   88,  810,  812,  815,  813,   88,  817,
    969        88,   88,  811,  818,  819,   88,   88,  814,   88,  821,
    970        88,  816,  820,  822,   88,   88,   88,  756,   88,   88,
    971       848,   88,   88,  823,   88,  843,   88,   88,   88,  845,
    972        88,  846,   88,   88,  904,  849,   88,  824,  825,  826,
    973       841,   88,  842,  844,  851,  840,   88,   88,  847,   88,
    974 
    975       852,   88,  854,   88,   88,  850,   88,   88,  853,   88,
    976       867,   88,  855,  866,   88,   88,   88,  871,  868,  856,
    977        88,   88,   88,  873,  874,  865,  904,   88,  876,  869,
    978        88,  875,  872,   88,   88,  870,  877,  882,  881,  880,
    979        88,   88,   88,   88,   88,  885,  884,  886,   88,   88,
    980       883,  887,   88,   88,   88,  890,   88,  892,   88,   88,
    981        88,  893,   88,  888,  889,   88,  891,   88,   88,  897,
    982        88,   88,   88,  904,  878,  894,   88,  896,  898,   88,
    983       895,   88,  903,   88,   88,  904,  901,  904,  864,  899,
    984       904,  900,  863,  902,   70,   70,   70,   70,   70,   70,
    985 
    986        70,   70,   70,   70,   70,   70,   70,   76,   76,   76,
    987        76,   76,   76,   76,   76,   76,   76,   76,   76,   76,
    988        79,   79,   79,   79,   79,   79,   79,   79,   79,   79,
    989        79,   79,   79,   87,  904,  861,   87,  904,   87,   87,
    990        87,   87,   87,  141,  860,  904,  859,  141,  141,  141,
    991       141,  141,  141,  202,  202,  202,  202,  202,  202,  202,
    992       202,  202,  202,  202,  202,  202,  207,  904,  858,  207,
    993        88,  207,  207,  207,  207,  207,  211,   88,  211,  211,
    994        88,  211,  211,  211,  211,  211,  211,  904,  211,  219,
    995       839,  904,  219,  219,  219,  219,  219,  219,  219,  219,
    996 
    997       838,  219,  242,  242,  242,  242,  242,  242,  242,  242,
    998       242,  242,  242,  242,  242,  256,  256,  836,  256,  904,
    999       834,  904,  256,  272,  832,  904,  272,  830,  272,  272,
    1000       272,  272,  272,  276,  828,  276,   88,   88,   88,  276,
    1001       278,   88,  278,   88,   88,   88,  278,  353,   88,  353,
    1002        88,   88,   88,  353,  355,   88,  355,  904,  806,  804,
    1003       355,  359,  904,  359,  904,  801,  799,  359,  361,  797,
    1004       361,   88,   88,   88,  361,  363,   88,  363,   88,   88,
    1005        88,  363,  370,  762,  370,  759,  758,  756,  370,  372,
    1006       208,  372,  752,  751,  683,  372,  387,   88,  387,  389,
    1007 
    1008       389,   88,  389,  389,  389,   88,  389,  256,  256,   88,
    1009       256,  272,   88,   88,  272,   88,  272,  272,  272,  272,
    1010       272,  399,   88,  399,   88,   88,   88,  399,  401,   88,
    1011       401,   88,   88,   88,  401,  403,   88,  403,  710,  709,
    1012       707,  403,  276,  705,  276,  405,  703,  405,  610,  698,
    1013       697,  405,  278,  695,  278,   87,  693,  691,   87,  689,
    1014        87,   87,   87,   87,   87,  202,  202,  202,  202,  202,
    1015       202,  202,  202,  202,  202,  202,  202,  202,  477,  477,
    1016       477,  477,  477,  477,  477,  477,  477,  477,  477,  477,
    1017       477,  478,  687,  478,  685,  683,   88,  478,  480,   88,
    1018 
    1019       480,   88,   88,   88,  480,  482,   88,  482,   88,   88,
    1020        88,  482,  353,   88,  353,  484,   88,  484,   88,  629,
    1021       627,  484,  355,  625,  355,  487,  623,  487,  621,  619,
    1022       512,  487,  359,  617,  359,  489,  617,  489,  606,  605,
    1023       603,  489,  361,  492,  361,  491,  492,  491,  601,  599,
    1024       597,  491,  363,  595,  363,  493,  593,  493,  591,   88,
    1025        88,  493,  370,   88,  370,  495,   88,  495,   88,   88,
    1026        88,  495,  372,   88,  372,  501,  524,  501,  522,  501,
    1027       520,  501,  387,  518,  387,  516,  387,  514,  387,  389,
    1028       389,  500,  389,  389,  389,  499,  389,  513,  496,  513,
    1029 
    1030       494,  366,  366,  513,  515,  492,  515,  490,  488,  485,
    1031       515,  517,  483,  517,  481,  479,   88,  517,  399,   88,
    1032       399,  519,   88,  519,  407,  406,  404,  519,  401,  402,
    1033       401,  521,  400,  521,  273,  268,  267,  521,  403,  396,
    1034       403,  523,  396,  523,  255,  386,  386,  523,  405,  243,
    1035       405,   87,  379,  373,   87,  371,   87,   87,   87,   87,
    1036        87,  477,  477,  477,  477,  477,  477,  477,  477,  477,
    1037       477,  477,  477,  477,  590,  369,  590,  365,  364,  362,
    1038       590,  478,  360,  478,  592,  356,  592,  354,  208,  204,
    1039       592,  480,   88,  480,  594,  280,  594,  279,  277,  273,
    1040 
    1041       594,  482,  268,  482,  596,  271,  596,  268,  266,  265,
    1042       596,  484,  264,  484,  598,  243,  598,  235,   86,   86,
    1043       598,  487,   88,  487,  600,  208,  600,  206,   86,  123,
    1044       600,  489,  118,  489,  491,   88,  491,  904,   71,   71,
    1045       491,  602,  904,  602,  904,  904,  904,  602,  493,  904,
    1046       493,  604,  904,  604,  904,  904,  904,  604,  495,  904,
    1047       495,  501,  904,  501,  904,  501,  904,  501,  389,  904,
    1048       389,  904,  904,  904,  389,  618,  904,  618,  904,  904,
    1049       904,  618,  513,  904,  513,  620,  904,  620,  904,  904,
    1050       904,  620,  515,  904,  515,  622,  904,  622,  904,  904,
    1051 
    1052       904,  622,  517,  904,  517,  624,  904,  624,  904,  904,
    1053       904,  624,  519,  904,  519,  626,  904,  626,  904,  904,
    1054       904,  626,  521,  904,  521,  628,  904,  628,  904,  904,
    1055       904,  628,  523,  904,  523,   87,  904,  904,   87,  904,
    1056        87,   87,   87,   87,   87,  682,  682,  682,  682,  682,
    1057       682,  682,  682,  682,  682,  682,  682,  682,  684,  904,
    1058       684,  904,  904,  904,  684,  590,  904,  590,  686,  904,
    1059       686,  904,  904,  904,  686,  592,  904,  592,  688,  904,
    1060       688,  904,  904,  904,  688,  594,  904,  594,  690,  904,
    1061       690,  904,  904,  904,  690,  596,  904,  596,  692,  904,
    1062 
    1063       692,  904,  904,  904,  692,  598,  904,  598,  694,  904,
    1064       694,  904,  904,  904,  694,  600,  904,  600,  696,  904,
    1065       696,  904,  904,  904,  696,  602,  904,  602,   87,  904,
    1066        87,  904,  904,  904,   87,  604,  904,  604,  501,  904,
    1067       501,  904,  904,  904,  501,  704,  904,  704,  904,  904,
    1068       904,  704,  618,  904,  618,  706,  904,  706,  904,  904,
    1069       904,  706,  620,  904,  620,  708,  904,  708,  904,  904,
    1070       904,  708,  622,  904,  622,  141,  904,  141,  904,  904,
    1071       904,  141,  624,  904,  624,  711,  904,  711,  626,  904,
    1072       626,   87,  904,  904,   87,  904,   87,   87,   87,   87,
    1073 
    1074        87,  628,  904,  628,  682,  682,  682,  682,  682,  682,
    1075       682,  682,  682,  682,  682,  682,  682,  750,  904,  750,
    1076       904,  904,  904,  750,  684,  904,  684,  207,  904,  207,
    1077       904,  904,  904,  207,  686,  904,  686,  753,  904,  753,
    1078       688,  904,  688,  207,  904,  904,  207,  904,  207,  207,
    1079       207,  207,  207,  690,  904,  690,  754,  904,  754,  692,
    1080       904,  692,  694,  904,  694,  755,  904,  755,  696,  904,
    1081       696,   87,  904,   87,  757,  904,  757,  904,  904,  904,
    1082       757,  704,  904,  704,  272,  904,  272,  904,  904,  904,
    1083       272,  706,  904,  706,  760,  904,  760,  708,  904,  708,
    1084 
    1085       141,  904,  141,  761,  904,  761,  904,  904,  904,  761,
    1086        87,  904,  904,   87,  904,   87,   87,   87,   87,   87,
    1087       795,  904,  795,  750,  904,  750,  207,  904,  207,  796,
    1088       904,  796,  904,  904,  904,  796,  798,  904,  798,  904,
    1089       904,  904,  798,  800,  904,  800,  904,  904,  904,  800,
    1090       802,  904,  802,  803,  904,  803,  904,  904,  904,  803,
    1091       805,  904,  805,  904,  904,  904,  805,  827,  904,  827,
    1092       904,  904,  904,  827,  829,  904,  829,  904,  904,  904,
    1093       829,  831,  904,  831,  904,  904,  904,  831,  833,  904,
    1094       833,  904,  904,  904,  833,  835,  904,  835,  904,  904,
    1095 
    1096       904,  835,  837,  904,  837,  904,  904,  904,  837,  628,
    1097       904,  628,  904,  904,  904,  628,  857,  904,  857,  904,
    1098       904,  904,  857,  690,  904,  690,  904,  904,  904,  690,
    1099       694,  904,  694,  904,  904,  904,  694,   87,  904,   87,
    1100       904,  904,  904,   87,  862,  904,  862,  904,  904,  904,
    1101       862,  141,  904,  141,  904,  904,  904,  141,  207,  904,
    1102       207,  904,  904,  904,  207,   11,  904,  904,  904,  904,
    1103       904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
    1104       904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
    1105       904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
    1106 
    1107       904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
    1108       904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
    1109       904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
    1110       904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
    1111       904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
    1112       904
     800       72,   72,   72,   72,   72,   71,   73,   71,   71,   72,
     801       74,   72,   72,   72,   72,   72,   72,   72,   72,   72,
     802       72,   72,   72,   72,   72,   72,   72,   72,   72,   72,
     803       72,   72,   72,   72,   72,   71,   71,   71,   71,   76,
     804       76,   79,   79,  123,  124,   90,  141,   79,   79,   87,
     805       76,   76,   80,   81,   82,   82,   82,   80,   82,   81,
     806
     807       83,   83,   83,   82,   91,   93,   87,  142,  146,   98,
     808       95,   99,   99,   99,   99,   99,   99,  252,  894,   94,
     809      100,   85,   96,   97,   85,  101,  161,  118,  143,   77,
     810       77,   77,   77,  144,  147,  102,  103,   87,  104,  104,
     811      104,  104,  105,  105,  119,   87,  120,  121,  148,  263,
     812      149,  264,  254,  260,  183,  106,  195,   87,  159,  107,
     813      160,  150,  151,  152,   87,  108,  109,  153,  154,  162,
     814      155,  110,   87,  156,  157,  145,  163,  106,   87,  182,
     815       87,  158,  164,  111,  206,   87,  263,   87,  264,   87,
     816       87,  108,  194,   87,  109,  103,  250,  112,  112,  112,
     817
     818      112,  112,  112,   87,  169,  177,  170,  196,  193,   87,
     819      207,  180,  165,  230,  106,  171,  166,  181,  113,  178,
     820      251,  167,   87,  258,  114,  168,  179,  172,   87,  263,
     821      115,  264,  248,   87,   87,  173,  106,  174,  249,  231,
     822      175,  143,  116,  263,  176,  264,  144,  259,  317,  283,
     823      114,  125,  280,  503,  249,  126,  127,   87,  128,  191,
     824      129,  130,  256,  131,  249,  132,   87,  265,  257,  184,
     825      185,  257,  248,   87,  133,  134,  135,  504,  188,  186,
     826      249,  263,  187,  264,  271,   87,  189,  265,  145,  256,
     827      305,  200,  201,  190,  257,  136,  200,  257,  137,  263,
     828
     829      894,  264,  192,  197,   81,   82,   82,   82,  197,   87,
     830      272,  198,  202,  202,  202,  202,  202,  202,   80,   81,
     831       82,   82,   82,   80,   87,  138,  139,  209,  210,  263,
     832      894,  264,  209,  282,  211,  255,  263,  267,  264,  211,
     833       82,   81,   82,   82,   82,   82,   87,  894,  212,  212,
     834      212,  212,   82,   81,   83,   83,   83,   82,  894,  211,
     835      241,  241,  241,  241,  241,  241,  242,  242,  242,  242,
     836      266,  263,  263,  264,  264,  213,  143,  263,  211,  264,
     837       87,  144,  377,  211,  211,   87,   87,  211,  211,   87,
     838       87,   87,  286,   87,  894,  211,   87,   87,  211,  243,
     839
     840      211,  214,  211,  281,  215,  217,  278,  284,  285,  218,
     841      219,  307,  298,  279,  220,  221,   87,  222,   87,  223,
     842       87,   87,  894,   87,  309,  300,   87,   87,  224,  225,
     843      226,  103,  303,  105,  105,  105,  105,  105,  105,   87,
     844      299,   87,  301,  302,   87,  304,  308,  310,   87,  227,
     845      106,  245,  228,  245,  306,   87,  246,  246,  246,  246,
     846      246,  246,   87,  313,   87,  315,  244,   87,   87,  311,
     847      314,   87,  106,   87,   87,   87,  323,   87,   87,  322,
     848      229,  233,  233,  233,  233,  233,  233,  312,  333,  247,
     849      319,  316,  328,  320,  318,   87,   87,  234,  235,  236,
     850
     851      321,  237,  236,   87,  324,   87,  325,  143,  335,  360,
     852      331,  361,   87,   87,  238,  337,  326,  327,   87,  236,
     853      235,  236,   87,  329,  237,  332,  236,  287,  288,  289,
     854      336,  290,  291,  334,   87,  292,   87,  293,  409,  360,
     855      330,  361,  294,  295,  296,   87,  297,  339,  360,  343,
     856      361,   87,  200,  201,  338,  340,  346,  200,  341,   87,
     857      342,  197,   81,   82,   82,   82,  197,  200,  201,  198,
     858      380,  361,  200,  202,  202,  202,  202,  202,  202,  344,
     859      201,  360,  347,  361,  344,  360,  345,  361,  202,  202,
     860      202,  202,  202,  202,  209,  210,  380,   87,  361,  209,
     861
     862      202,  202,  202,  202,  202,  202,  352,  352,  352,  352,
     863      360,   87,  361,  362,  360,  360,  361,  361,  360,  363,
     864      361,  360,  360,  361,  361,  369,  369,  370,  369,  370,
     865      894,  411,  371,  371,  371,  371,  371,  371,  373,  353,
     866      373,   87,  103,  373,  242,  242,  242,  242,  369,  390,
     867      392,  369,  375,  375,  375,  375,  375,  375,  407,  263,
     868      373,  264,  373,   87,  263,  372,  264,  373,   87,  105,
     869      105,  105,  105,  105,  105,  390,  393,  243,  246,  246,
     870      246,  246,  246,  246,  406,  376,  106,  245,   87,  245,
     871      424,   87,  246,  246,  246,  246,  246,  246,   87,   87,
     872
     873       87,  403,  255,   87,  423,  408,   87,  894,  106,  378,
     874      378,  378,  378,  378,  378,  383,  404,  405,  105,  105,
     875      105,  105,  105,  105,  416,  234,  415,  236,   87,  237,
     876      236,  112,  112,  112,  112,  112,  112,   87,  385,   87,
     877      386,   87,  379,  418,  387,   87,  410,  236,   87,  236,
     878      388,  255,  237,   87,  236,  419,  420,  422,   87,   87,
     879       87,   87,  389,  417,  260,  421,  386,   87,  412,   87,
     880      387,   87,  427,   87,  413,  414,  425,  426,  428,   87,
     881      429,  430,   87,   87,   87,   87,   87,  434,  435,  431,
     882      436,   87,   87,   87,   87,  438,   87,  439,   87,   87,
     883
     884      432,  433,  441,  443,  437,   87,   87,   87,  440,  442,
     885      444,  445,   87,   87,   87,  447,   87,  448,   87,   87,
     886      449,   87,   87,  450,   87,   87,   87,   87,  446,  451,
     887       87,  453,  452,  458,   87,   87,  143,   87,  454,  457,
     888       87,  456,  455,  464,   87,  462,   87,  459,  463,  460,
     889      721,   87,  461,  466,  467,  465,  468,  344,  201,  469,
     890      201,  360,  344,  361,  345,   87,  199,  211,  211,  211,
     891      211,  352,  352,  352,  352,  360,  518,  361,   87,   87,
     892       87,  371,  371,  371,  371,  371,  371,  370,  495,  370,
     893      523,   87,  371,  371,  371,  371,  371,  371,  496,   87,
     894
     895      479,  490,  490,  490,  490,  490,  490,  233,  233,  233,
     896      233,  233,  233,  525,  495,  519,   87,  234,   87,  236,
     897       87,  237,  236,  242,  242,  242,  242,  105,  105,  498,
     898       87,  520,  495,  527,  491,  499,  499,  521,   87,  236,
     899      374,  236,  497,   87,  237,  542,  236,  375,  375,  375,
     900      375,  375,  375,  383,  498,   87,  377,   87,  495,  528,
     901      529,  499,  499,  234,  235,  236,  522,  237,  236,  378,
     902      378,  378,  378,  378,  378,   87,  385,  533,  386,   87,
     903      376,  538,  387,   87,  894,  236,  235,  236,  388,  500,
     904      237,  500,  236,   87,  501,  501,  501,  501,  501,  501,
     905
     906      389,   87,  379,   87,  386,   87,  530,  385,  387,  386,
     907      524,   87,  526,  387,   87,   87,   87,   87,   87,  505,
     908      535,  531,  532,   87,   87,  540,   87,  502,   87,  534,
     909       87,  389,   87,  536,   87,  386,  541,  539,  543,  387,
     910      537,  547,  544,   87,  545,   87,   87,   87,  546,  549,
     911       87,   87,   87,   87,  553,  548,  551,   87,   87,   87,
     912      550,  552,   87,   87,   87,   87,  555,  559,  557,   87,
     913       87,   87,  554,  562,  556,   87,  560,  558,   87,   87,
     914      567,   87,   87,   87,  563,  561,  570,  566,  571,  564,
     915      565,  569,   87,  568,   87,   87,   87,  201,   87,   87,
     916
     917      574,  630,   87,  580,   87,  573,  577,  572,  579,   87,
     918      575,  576,  211,  211,  211,  211,   87,  622,  578,  490,
     919      490,  490,  490,  490,  490,  375,  375,  375,  375,  375,
     920      375,  626,  645,  621,   87,  234,   87,  236,   87,  237,
     921      236,  378,  378,  378,  378,  378,  378,  495,   87,  602,
     922      495,  623,  491,  628,  624,  495,   87,  236,  492,  236,
     923      496,  598,  237,  598,  236,  601,  599,  599,  599,  599,
     924      599,  599,   87,  495,  493,  602,  495,  634,   87,   87,
     925      662,  495,  501,  501,  501,  501,  501,  501,  500,   87,
     926      500,  625,  627,  501,  501,  501,  501,  501,  501,  600,
     927
     928      603,  603,  603,  603,  603,  603,   87,   87,   87,  631,
     929       87,   87,   87,   87,   87,  639,  604,  629,  605,  635,
     930      606,  605,  632,   87,  637,  638,   87,  633,  636,   87,
     931       87,   87,   87,  607,   87,  640,  641,  644,  605,  643,
     932      605,   87,   87,  606,   87,  605,  642,   87,  647,  648,
     933      646,   87,   87,   87,   87,   87,  650,  649,   87,  656,
     934      651,   87,   87,   87,   87,  653,   87,   87,   87,  652,
     935      654,  657,  658,  655,   87,  664,  663,  660,   87,  667,
     936       87,   87,   87,  659,  661,   87,   87,   87,   87,  668,
     937      666,  669,  762,  691,  691,  704,  665,   87,  894,  670,
     938
     939      671,  490,  490,  490,  490,  490,  490,  599,  599,  599,
     940      599,  599,  599,  598,  707,  598,  691,   87,  599,  599,
     941      599,  599,  599,  599,  603,  603,  603,  603,  603,  603,
     942      706,  691,   87,   87,  597,  689,  689,  689,  689,  689,
     943      689,  692,   87,  692,   87,   87,  692,  702,  844,   87,
     944      711,  604,  709,  605,  691,  606,  605,  607,  705,   87,
     945      703,   87,  712,  692,   87,  692,   87,  708,  690,  710,
     946      692,   87,   87,  605,   87,  605,   87,  713,  606,   87,
     947      605,   87,  719,   87,   87,   87,  715,   87,  714,   87,
     948       87,  717,   87,   87,  716,   87,  722,   87,  718,  724,
     949
     950      720,  727,   87,  725,  723,   87,  730,   87,   87,  726,
     951       87,   87,  728,   87,   87,  729,   87,  734,  735,  736,
     952       87,  755,  731,  737,  733,  738,   87,  894,   87,  739,
     953      754,  869,  732,  689,  689,  689,  689,  689,  689,  603,
     954      603,  603,  603,  603,  603,   87,   87,  753,  758,  604,
     955       87,  605,  756,  606,  605,  757,   87,   87,   87,  759,
     956      760,   87,   87,   87,  761,  765,  690,  764,  767,  770,
     957       87,  605,  693,  605,  763,   87,  606,   87,  605,  769,
     958      768,   87,   87,   87,  766,  771,   87,   87,  772,  773,
     959       87,   87,   87,  774,   87,   87,   87,   87,   87,  775,
     960
     961      777,   87,   87,   87,   87,   87,  783,   87,  776,   87,
     962      778,  784,  781,  801,  780,  779,  800,  782,  689,  689,
     963      689,  689,  689,  689,  797,   87,  798,   87,  802,   87,
     964      799,  807,  805,  804,   87,   87,   87,   87,  808,  809,
     965      811,   87,   87,   87,  803,  812,   87,  806,  810,   87,
     966       87,  746,   87,   87,   87,  838,   87,   87,  813,   87,
     967       87,   87,   87,  833,  835,  836,   87,   87,   87,  814,
     968      839,  841,  815,  816,  831,  832,  834,   87,  840,  830,
     969      842,   87,   87,   87,  837,   87,   87,   87,   87,   87,
     970      857,  843,   87,   87,  845,  856,  861,   87,  858,   87,
     971
     972       87,  846,  863,  864,   87,   87,   87,  855,   87,   87,
     973      859,  872,   87,  865,  862,  867,  860,  866,  870,   87,
     974       87,   87,  873,   87,  871,  874,  875,   87,   87,   87,
     975      876,  877,   87,   87,   87,  880,   87,  882,   87,  883,
     976       87,  878,   87,  881,  879,   87,   87,   87,   87,   87,
     977       87,  894,   87,  894,  887,  894,  894,  886,  868,  888,
     978      884,  885,  893,   87,   87,   87,  891,   87,   87,  889,
     979      890,  894,  892,   69,   69,   69,   69,   69,   69,   69,
     980       69,   69,   69,   69,   69,   69,   75,   75,   75,   75,
     981       75,   75,   75,   75,   75,   75,   75,   75,   75,   78,
     982
     983       78,   78,   78,   78,   78,   78,   78,   78,   78,   78,
     984       78,   78,   86,  894,  854,   86,  894,   86,   86,   86,
     985       86,   86,  140,  853,  894,  851,  140,  140,  140,  140,
     986      140,  140,  199,  199,  199,  199,  199,  199,  199,  199,
     987      199,  199,  199,  199,  199,  204,  894,  850,  204,  894,
     988      204,  204,  204,  204,  204,  208,  849,  208,  208,  894,
     989      208,  208,  208,  208,  208,  208,  848,  208,  216,   87,
     990       87,  216,  216,  216,  216,  216,  216,  216,  216,   87,
     991      216,  239,  239,  239,  239,  239,  239,  239,  239,  239,
     992      239,  239,  239,  239,  253,  253,  894,  253,  829,  894,
     993
     994      828,  253,  269,  826,  894,  269,  824,  269,  269,  269,
     995      269,  269,  273,  894,  273,  822,  894,  820,  273,  275,
     996      818,  275,   87,   87,   87,  275,  348,   87,  348,   87,
     997       87,   87,  348,  350,   87,  350,   87,   87,   87,  350,
     998      354,   87,  354,  894,  796,  794,  354,  356,  894,  356,
     999      894,  791,  789,  356,  358,  787,  358,   87,   87,   87,
     1000      358,  365,   87,  365,   87,   87,   87,  365,  367,  752,
     1001      367,  749,  748,  746,  367,  382,  205,  382,  384,  384,
     1002      742,  384,  384,  384,  741,  384,  253,  253,  673,  253,
     1003      269,   87,   87,  269,   87,  269,  269,  269,  269,  269,
     1004
     1005      394,   87,  394,   87,   87,   87,  394,  396,   87,  396,
     1006       87,   87,   87,  396,  398,   87,  398,   87,   87,   87,
     1007      398,  273,  700,  273,  400,  699,  400,  697,  695,  693,
     1008      400,  275,  601,  275,   86,  688,  687,   86,  685,   86,
     1009       86,   86,   86,   86,  199,  199,  199,  199,  199,  199,
     1010      199,  199,  199,  199,  199,  199,  199,  470,  470,  470,
     1011      470,  470,  470,  470,  470,  470,  470,  470,  470,  470,
     1012      471,  683,  471,  681,  679,  677,  471,  473,  675,  473,
     1013      673,   87,   87,  473,  475,   87,  475,   87,   87,   87,
     1014      475,  348,   87,  348,  477,   87,  477,   87,   87,   87,
     1015
     1016      477,  350,  620,  350,  480,  618,  480,  616,  614,  612,
     1017      480,  354,  610,  354,  482,  505,  482,  608,  608,  597,
     1018      482,  356,  596,  356,  484,  594,  484,  485,  485,  592,
     1019      484,  358,  590,  358,  486,  588,  486,  586,  584,  582,
     1020      486,  365,   87,  365,  488,   87,  488,   87,   87,   87,
     1021      488,  367,   87,  367,  494,   87,  494,   87,  494,  517,
     1022      494,  382,  515,  382,  513,  382,  511,  382,  384,  384,
     1023      509,  384,  384,  384,  507,  384,  506,  493,  506,  492,
     1024      489,  487,  506,  508,  361,  508,  361,  485,  483,  508,
     1025      510,  481,  510,  478,  476,  474,  510,  394,  472,  394,
     1026
     1027      512,   87,  512,   87,   87,  402,  512,  396,  401,  396,
     1028      514,  399,  514,  397,  395,  270,  514,  398,  265,  398,
     1029      516,  264,  516,  391,  391,  252,  516,  400,  381,  400,
     1030       86,  381,  240,   86,  374,   86,   86,   86,   86,   86,
     1031      470,  470,  470,  470,  470,  470,  470,  470,  470,  470,
     1032      470,  470,  470,  581,  368,  581,  366,  364,  360,  581,
     1033      471,  359,  471,  583,  357,  583,  355,  351,  349,  583,
     1034      473,  205,  473,  585,  201,  585,   87,  277,  276,  585,
     1035      475,  274,  475,  587,  270,  587,  265,  268,  265,  587,
     1036      477,  263,  477,  589,  262,  589,  261,  240,  232,  589,
     1037
     1038      480,   85,  480,  591,   85,  591,   87,  205,  203,  591,
     1039      482,   85,  482,  484,  122,  484,  117,   87,  894,  484,
     1040      593,   70,  593,   70,  894,  894,  593,  486,  894,  486,
     1041      595,  894,  595,  894,  894,  894,  595,  488,  894,  488,
     1042      494,  894,  494,  894,  494,  894,  494,  384,  894,  384,
     1043      894,  894,  894,  384,  609,  894,  609,  894,  894,  894,
     1044      609,  506,  894,  506,  611,  894,  611,  894,  894,  894,
     1045      611,  508,  894,  508,  613,  894,  613,  894,  894,  894,
     1046      613,  510,  894,  510,  615,  894,  615,  894,  894,  894,
     1047      615,  512,  894,  512,  617,  894,  617,  894,  894,  894,
     1048
     1049      617,  514,  894,  514,  619,  894,  619,  894,  894,  894,
     1050      619,  516,  894,  516,   86,  894,  894,   86,  894,   86,
     1051       86,   86,   86,   86,  672,  672,  672,  672,  672,  672,
     1052      672,  672,  672,  672,  672,  672,  672,  674,  894,  674,
     1053      894,  894,  894,  674,  581,  894,  581,  676,  894,  676,
     1054      894,  894,  894,  676,  583,  894,  583,  678,  894,  678,
     1055      894,  894,  894,  678,  585,  894,  585,  680,  894,  680,
     1056      894,  894,  894,  680,  587,  894,  587,  682,  894,  682,
     1057      894,  894,  894,  682,  589,  894,  589,  684,  894,  684,
     1058      894,  894,  894,  684,  591,  894,  591,  686,  894,  686,
     1059
     1060      894,  894,  894,  686,  593,  894,  593,   86,  894,   86,
     1061      894,  894,  894,   86,  595,  894,  595,  494,  894,  494,
     1062      894,  894,  894,  494,  694,  894,  694,  894,  894,  894,
     1063      694,  609,  894,  609,  696,  894,  696,  894,  894,  894,
     1064      696,  611,  894,  611,  698,  894,  698,  894,  894,  894,
     1065      698,  613,  894,  613,  140,  894,  140,  894,  894,  894,
     1066      140,  615,  894,  615,  701,  894,  701,  617,  894,  617,
     1067       86,  894,  894,   86,  894,   86,   86,   86,   86,   86,
     1068      619,  894,  619,  672,  672,  672,  672,  672,  672,  672,
     1069      672,  672,  672,  672,  672,  672,  740,  894,  740,  894,
     1070
     1071      894,  894,  740,  674,  894,  674,  204,  894,  204,  894,
     1072      894,  894,  204,  676,  894,  676,  743,  894,  743,  678,
     1073      894,  678,  204,  894,  894,  204,  894,  204,  204,  204,
     1074      204,  204,  680,  894,  680,  744,  894,  744,  682,  894,
     1075      682,  684,  894,  684,  745,  894,  745,  686,  894,  686,
     1076       86,  894,   86,  747,  894,  747,  894,  894,  894,  747,
     1077      694,  894,  694,  269,  894,  269,  894,  894,  894,  269,
     1078      696,  894,  696,  750,  894,  750,  698,  894,  698,  140,
     1079      894,  140,  751,  894,  751,  894,  894,  894,  751,   86,
     1080      894,  894,   86,  894,   86,   86,   86,   86,   86,  785,
     1081
     1082      894,  785,  740,  894,  740,  204,  894,  204,  786,  894,
     1083      786,  894,  894,  894,  786,  788,  894,  788,  894,  894,
     1084      894,  788,  790,  894,  790,  894,  894,  894,  790,  792,
     1085      894,  792,  793,  894,  793,  894,  894,  894,  793,  795,
     1086      894,  795,  894,  894,  894,  795,  817,  894,  817,  894,
     1087      894,  894,  817,  819,  894,  819,  894,  894,  894,  819,
     1088      821,  894,  821,  894,  894,  894,  821,  823,  894,  823,
     1089      894,  894,  894,  823,  825,  894,  825,  894,  894,  894,
     1090      825,  827,  894,  827,  894,  894,  894,  827,  619,  894,
     1091      619,  894,  894,  894,  619,  847,  894,  847,  894,  894,
     1092
     1093      894,  847,  680,  894,  680,  894,  894,  894,  680,  684,
     1094      894,  684,  894,  894,  894,  684,   86,  894,   86,  894,
     1095      894,  894,   86,  852,  894,  852,  894,  894,  894,  852,
     1096      140,  894,  140,  894,  894,  894,  140,  204,  894,  204,
     1097      894,  894,  894,  204,   11,  894,  894,  894,  894,  894,
     1098      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     1099      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     1100      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     1101      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     1102      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     1103
     1104      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     1105      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     1106      894,  894,  894,  894,  894,  894,  894,  894,  894,  894
    11131107    } ;
    11141108
    1115 static yyconst flex_int16_t yy_chk[2952] =
     1109static yyconst flex_int16_t yy_chk[2931] =
    11161110    {   0,
    11171111        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
     
    11341128        5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
    11351129        5,    5,    5,    5,    5,    5,    5,    5,    5,    7,
    1136         8,    9,   10,   37,   37,   20,   39,    9,   10,  903,
     1130        8,    9,   10,   37,   37,   20,   39,    9,   10,  893,
    11371131        7,    8,   13,   13,   13,   13,   13,   13,   15,   15,
    11381132
    11391133       15,   15,   15,   15,   20,   25,   48,   39,   42,   28,
    1140        27,   28,   28,   28,   28,   28,   28,  110,  116,   25,
     1134       27,   28,   28,   28,   28,   28,   28,  109,  115,   25,
    11411135       29,   25,   27,   27,   27,   29,   48,   35,   40,    7,
    11421136        8,    9,   10,   40,   42,   29,   30,   47,   30,   30,
    1143        30,   30,   30,   30,   35,   57,   35,   35,   44,  127,
    1144        44,  127,  110,  116,   57,   30,   65,  544,   47,   30,
     1137       30,   30,   30,   30,   35,   57,   35,   35,   44,  126,
     1138       44,  126,  109,  115,   57,   30,   64,   56,   47,   30,
    11451139       47,   45,   45,   45,   49,   30,   30,   45,   45,   49,
    1146        45,   30,   40,   45,   45,   40,   49,   30,   45,   63,
    1147        62,   45,   49,   30,   74,  902,  544,   53,   63,   51,
    1148        61,   30,   62,   55,   30,   31,  109,   31,   31,   31,
    1149 
    1150        31,   31,   31,   50,   51,   53,   51,   65,   61,   54,
    1151        74,   55,   50,   88,   31,   51,   50,   55,   31,   54,
    1152       109,   50,   52,  115,   31,   50,   54,   52,  182,  146,
    1153        31,   56,  108,  182,  146,   52,   31,   52,  108,   88,
    1154        52,   60,   31,  128,   52,  128,   60,  115,   56,  152,
    1155        31,   38,  894,   56,  112,   38,   38,   58,   38,   60,
    1156        38,   38,  114,   38,  108,   38,   59,  152,  114,   58,
    1157        58,  117,  112,  146,   38,   38,   38,  189,   59,   58,
    1158       112,  130,   58,  130,  143,   60,   59,  132,   60,  117,
    1159       189,   69,   69,   59,  114,   38,   69,  117,   38,  132,
    1160 
    1161       111,  132,   60,   68,   68,   68,   68,   68,   68,  893,
    1162       143,   68,   69,   69,   69,   69,   69,   69,   81,   81,
    1163        81,   81,   81,   81,  154,   38,   38,   78,   78,  133,
    1164       111,  133,   78,  154,   78,  111,  135,  162,  135,   78,
    1165        83,   83,   83,   83,   83,   83,  162,  890,   78,   78,
    1166        78,   78,   84,   84,   84,   84,   84,   84,  111,   78,
    1167       104,  104,  104,  104,  104,  104,  105,  105,  105,  105,
    1168       134,  134,  138,  134,  138,   78,  131,  155,   78,  136,
    1169       136,  136,  173,   78,   78,  153,  157,   78,   78,  140,
    1170       131,  140,  131,  155,  105,   78,  151,  173,   78,  105,
    1171 
    1172        78,   78,   78,  153,   78,   86,  156,  160,  157,   86,
    1173        86,  151,  183,  158,   86,   86,  168,   86,  151,   86,
    1174       161,  183,  105,  160,  156,  158,  163,  164,   86,   86,
    1175        86,  106,  164,  106,  106,  106,  106,  106,  106,  168,
    1176       169,  167,  161,  170,  166,  164,  165,  163,  163,   86,
    1177       106,  107,   86,  107,  166,  172,  107,  107,  107,  107,
    1178       107,  107,  167,  165,  170,  171,  106,  169,  177,  175,
    1179       171,  176,  106,  174,  178,  181,  184,  172,  180,  889,
    1180        86,  100,  100,  100,  100,  100,  100,  175,  171,  107,
    1181       174,  176,  181,  180,  185,  177,  178,  100,  100,  100,
    1182 
    1183       180,  100,  100,  184,  192,  185,  187,  186,  193,  221,
    1184       190,  221,  887,  188,  100,  185,  185,  187,  188,  100,
    1185       100,  100,  159,  192,  100,  186,  100,  159,  159,  159,
    1186       190,  159,  159,  188,  187,  159,  191,  159,  194,  208,
    1187       196,  191,  159,  159,  159,  195,  159,  197,  251,  212,
    1188       212,  194,  193,  196,  212,  193,  201,  201,  195,  194,
    1189       195,  201,  222,  191,  222,  208,  259,  197,  200,  200,
    1190       200,  200,  200,  200,  251,  287,  200,  201,  201,  201,
    1191       201,  201,  201,  203,  203,  223,  246,  223,  203,  205,
    1192       205,  226,  259,  226,  205,  287,  205,  215,  215,  215,
    1193 
    1194       215,  228,  224,  228,  203,  203,  203,  203,  203,  203,
    1195       205,  205,  205,  205,  205,  205,  224,  225,  224,  227,
    1196       227,  246,  227,  229,  229,  229,  231,  239,  231,  225,
    1197       215,  225,  232,  291,  232,  237,  237,  238,  269,  238,
    1198       269,  284,  238,  238,  238,  238,  238,  238,  273,  240,
    1199       239,  240,  432,  270,  240,  270,  291,  284,  237,  244,
    1200       244,  244,  244,  244,  244,  245,  432,  245,  245,  245,
    1201       245,  240,  286,  240,  273,  238,  282,  286,  240,  247,
    1202       247,  247,  247,  247,  247,  248,  248,  248,  248,  248,
    1203       248,  283,  244,  285,  282,  281,  247,  250,  294,  250,
    1204 
    1205       245,  293,  250,  250,  250,  250,  250,  250,  281,  283,
    1206       285,  288,  247,  294,  289,  331,  288,  297,  247,  249,
    1207       249,  249,  249,  249,  249,  256,  297,  293,  258,  258,
    1208       258,  258,  258,  258,  289,  249,  298,  249,  331,  249,
    1209       249,  263,  263,  263,  263,  263,  263,  292,  256,  298,
    1210       256,  295,  249,  296,  256,  299,  290,  249,  296,  249,
    1211       256,  258,  249,  300,  249,  292,  302,  295,  295,  306,
    1212       303,  290,  256,  307,  263,  303,  256,  290,  290,  304,
    1213       256,  300,  299,  305,  302,  308,  312,  309,  304,  306,
    1214       305,  307,  309,  310,  311,  313,  314,  315,  310,  316,
    1215 
    1216       311,  317,  314,  321,  313,  312,  308,  308,  316,  318,
    1217       319,  322,  320,  315,  318,  319,  317,  320,  323,  325,
    1218       326,  327,  321,  328,  327,  329,  330,  332,  333,  322,
    1219       325,  323,  334,  335,  320,  326,  336,  339,  329,  337,
    1220       338,  334,  328,  341,  342,  333,  343,  332,  330,  344,
    1221       339,  346,  341,  347,  348,  335,  346,  345,  338,  336,
    1222       387,  337,  344,  350,  343,  345,  349,  349,  347,  350,
    1223       387,  349,  348,  349,  357,  357,  357,  357,  358,  358,
    1224       358,  358,  367,  368,  367,  368,  387,  408,  342,  375,
    1225       375,  375,  375,  375,  375,  377,  388,  377,  408,  392,
    1226 
    1227       377,  377,  377,  377,  377,  377,  388,  357,  376,  376,
    1228       376,  376,  376,  376,  379,  379,  379,  379,  379,  379,
    1229       411,  409,  388,  392,  376,  410,  376,  413,  376,  376,
    1230       382,  382,  382,  382,  382,  382,  390,  409,  413,  411,
    1231       410,  376,  390,  394,  415,  419,  376,  379,  376,  417,
    1232       886,  376,  420,  376,  380,  380,  380,  380,  380,  380,
    1233       389,  394,  417,  382,  412,  420,  415,  419,  390,  394,
    1234       380,  380,  380,  412,  380,  380,  383,  383,  383,  383,
    1235       383,  383,  426,  389,  418,  389,  879,  380,  426,  389,
    1236       878,  393,  380,  380,  380,  389,  391,  380,  391,  380,
    1237 
    1238       418,  391,  391,  391,  391,  391,  391,  389,  414,  383,
    1239       416,  389,  421,  422,  393,  389,  393,  414,  423,  416,
    1240       393,  428,  424,  427,  429,  425,  393,  424,  421,  421,
    1241       430,  436,  428,  437,  391,  422,  423,  434,  393,  439,
    1242       425,  438,  393,  429,  427,  430,  393,  425,  441,  434,
    1243       440,  442,  436,  444,  438,  437,  440,  446,  447,  448,
    1244       442,  449,  439,  441,  450,  451,  452,  454,  444,  456,
    1245       459,  457,  458,  462,  448,  452,  460,  446,  461,  450,
    1246       447,  458,  464,  449,  454,  451,  465,  466,  463,  468,
    1247       469,  459,  456,  457,  466,  462,  460,  463,  461,  465,
    1248 
    1249       464,  467,  470,  474,  471,  472,  475,  477,  467,  877,
    1250       470,  526,  469,  477,  468,  475,  472,  504,  505,  476,
    1251       470,  471,  476,  876,  526,  474,  486,  486,  486,  486,
    1252       497,  497,  497,  497,  497,  497,  499,  499,  499,  499,
    1253       499,  499,  525,  504,  505,  528,  497,  529,  497,  530,
    1254       497,  497,  500,  500,  500,  500,  500,  500,  875,  525,
    1255       528,  501,  530,  497,  531,  538,  503,  529,  497,  499,
    1256       497,  501,  502,  497,  502,  497,  503,  502,  502,  502,
    1257       502,  502,  502,  533,  538,  500,  531,  501,  533,  532,
    1258       871,  867,  503,  507,  507,  507,  507,  507,  507,  509,
    1259 
    1260       535,  509,  532,  535,  509,  509,  509,  509,  509,  509,
    1261       502,  508,  508,  508,  508,  508,  508,  534,  536,  537,
    1262       539,  540,  542,  543,  864,  546,  547,  508,  534,  508,
    1263       540,  508,  508,  542,  537,  541,  543,  545,  536,  548,
    1264       541,  539,  554,  547,  508,  549,  545,  546,  548,  508,
    1265       549,  508,  551,  552,  508,  555,  508,  556,  551,  554,
    1266       557,  560,  552,  561,  559,  562,  564,  571,  567,  557,
    1267       555,  565,  556,  559,  568,  561,  565,  567,  560,  572,
    1268       562,  564,  573,  568,  576,  575,  578,  582,  577,  571,
    1269       579,  580,  572,  575,  576,  577,  582,  580,  585,  573,
    1270 
    1271       583,  586,  579,  588,  630,  863,  634,  728,  578,  630,
    1272       583,  633,  613,  613,  586,  585,  606,  606,  606,  606,
    1273       606,  606,  630,  634,  633,  588,  607,  607,  607,  607,
    1274       607,  607,  609,  614,  609,  613,  728,  609,  609,  609,
    1275       609,  609,  609,  612,  612,  612,  612,  612,  612,  606,
    1276       608,  608,  608,  608,  608,  608,  614,  615,  631,  615,
    1277       632,  635,  615,  638,  637,  631,  608,  636,  608,  632,
    1278       608,  608,  637,  648,  636,  639,  612,  641,  639,  615,
    1279       638,  615,  642,  608,  635,  640,  615,  643,  608,  644,
    1280       608,  645,  649,  608,  647,  608,  650,  642,  640,  641,
    1281 
    1282       646,  648,  652,  646,  653,  651,  644,  649,  654,  643,
    1283       656,  647,  657,  645,  651,  658,  650,  654,  662,  663,
    1284       652,  668,  665,  862,  658,  669,  653,  676,  679,  680,
    1285       668,  677,  669,  656,  657,  713,  676,  679,  662,  665,
    1286       712,  677,  718,  715,  680,  713,  663,  699,  699,  699,
    1287       699,  699,  699,  703,  703,  703,  703,  703,  703,  716,
    1288       721,  712,  718,  699,  734,  699,  716,  699,  699,  715,
    1289       717,  719,  734,  720,  719,  717,  720,  723,  721,  725,
    1290       699,  724,  727,  723,  731,  699,  703,  699,  725,  745,
    1291       699,  730,  699,  726,  724,  729,  726,  735,  729,  732,
    1292 
    1293       730,  733,  732,  727,  736,  737,  738,  735,  744,  741,
    1294       731,  745,  746,  748,  733,  738,  749,  736,  769,  861,
    1295       767,  748,  772,  769,  768,  749,  737,  741,  744,  770,
    1296       773,  774,  741,  746,  756,  756,  756,  756,  756,  756,
    1297       767,  768,  771,  775,  770,  772,  775,  773,  776,  777,
    1298       779,  781,  771,  779,  781,  782,  783,  774,  785,  783,
    1299       784,  776,  782,  784,  786,  788,  792,  756,  807,  809,
    1300       817,  812,  811,  785,  810,  811,  813,  777,  814,  813,
    1301       816,  814,  818,  820,  860,  818,  824,  786,  788,  792,
    1302       809,  821,  810,  812,  821,  807,  817,  822,  816,  823,
    1303 
    1304       822,  825,  824,  826,  841,  820,  842,  843,  823,  844,
    1305       843,  845,  825,  842,  846,  847,  855,  846,  844,  826,
    1306       850,  853,  854,  850,  853,  841,  859,  856,  855,  845,
    1307       865,  854,  847,  866,  868,  845,  856,  868,  866,  865,
    1308       869,  870,  872,  880,  873,  872,  870,  873,  874,  881,
    1309       869,  874,  882,  888,  884,  882,  883,  884,  885,  891,
    1310       895,  885,  892,  880,  881,  896,  883,  897,  899,  895,
    1311       898,  900,  901,  858,  857,  888,  852,  892,  896,  851,
    1312       891,  849,  901,  848,  840,  839,  899,  838,  837,  897,
    1313       836,  898,  835,  900,  905,  905,  905,  905,  905,  905,
    1314 
    1315       905,  905,  905,  905,  905,  905,  905,  906,  906,  906,
    1316       906,  906,  906,  906,  906,  906,  906,  906,  906,  906,
    1317       907,  907,  907,  907,  907,  907,  907,  907,  907,  907,
    1318       907,  907,  907,  908,  834,  833,  908,  832,  908,  908,
    1319       908,  908,  908,  909,  831,  830,  829,  909,  909,  909,
    1320       909,  909,  909,  910,  910,  910,  910,  910,  910,  910,
    1321       910,  910,  910,  910,  910,  910,  911,  828,  827,  911,
    1322       819,  911,  911,  911,  911,  911,  912,  815,  912,  912,
    1323       808,  912,  912,  912,  912,  912,  912,  806,  912,  913,
    1324       805,  804,  913,  913,  913,  913,  913,  913,  913,  913,
    1325 
    1326       803,  913,  914,  914,  914,  914,  914,  914,  914,  914,
    1327       914,  914,  914,  914,  914,  915,  915,  802,  915,  801,
    1328       800,  799,  915,  916,  798,  797,  916,  796,  916,  916,
    1329       916,  916,  916,  917,  795,  917,  794,  793,  791,  917,
    1330       918,  790,  918,  789,  787,  780,  918,  919,  778,  919,
    1331       766,  765,  764,  919,  920,  763,  920,  762,  761,  760,
    1332       920,  921,  759,  921,  758,  755,  754,  921,  922,  753,
    1333       922,  747,  743,  742,  922,  923,  740,  923,  739,  722,
    1334       714,  923,  924,  711,  924,  706,  704,  700,  924,  925,
    1335       690,  925,  686,  684,  682,  925,  926,  681,  926,  927,
    1336 
    1337       927,  678,  927,  927,  927,  675,  927,  928,  928,  674,
    1338       928,  929,  673,  672,  929,  671,  929,  929,  929,  929,
    1339       929,  930,  670,  930,  667,  666,  664,  930,  931,  661,
    1340       931,  660,  659,  655,  931,  932,  628,  932,  624,  622,
    1341       620,  932,  933,  618,  933,  934,  616,  934,  610,  604,
    1342       602,  934,  935,  600,  935,  936,  598,  596,  936,  594,
    1343       936,  936,  936,  936,  936,  937,  937,  937,  937,  937,
    1344       937,  937,  937,  937,  937,  937,  937,  937,  938,  938,
    1345       938,  938,  938,  938,  938,  938,  938,  938,  938,  938,
    1346       938,  939,  592,  939,  590,  589,  587,  939,  940,  584,
    1347 
    1348       940,  581,  574,  570,  940,  941,  569,  941,  566,  563,
    1349       558,  941,  942,  553,  942,  943,  550,  943,  527,  523,
    1350       521,  943,  944,  519,  944,  945,  517,  945,  515,  513,
    1351       512,  945,  946,  511,  946,  947,  510,  947,  498,  495,
    1352       493,  947,  948,  492,  948,  949,  491,  949,  489,  487,
    1353       484,  949,  950,  482,  950,  951,  480,  951,  478,  473,
    1354       455,  951,  952,  453,  952,  953,  445,  953,  443,  435,
    1355       433,  953,  954,  431,  954,  955,  405,  955,  403,  955,
    1356       401,  955,  956,  399,  956,  398,  956,  397,  956,  957,
    1357       957,  384,  957,  957,  957,  381,  957,  958,  372,  958,
    1358 
    1359       370,  369,  365,  958,  959,  363,  959,  361,  359,  355,
    1360       959,  960,  353,  960,  352,  351,  340,  960,  961,  324,
    1361       961,  962,  301,  962,  280,  278,  276,  962,  963,  275,
    1362       963,  964,  274,  964,  272,  271,  266,  964,  965,  262,
    1363       965,  966,  261,  966,  257,  254,  253,  966,  967,  242,
    1364       967,  968,  241,  234,  968,  233,  968,  968,  968,  968,
    1365       968,  969,  969,  969,  969,  969,  969,  969,  969,  969,
    1366       969,  969,  969,  969,  970,  230,  970,  220,  218,  217,
    1367       970,  971,  216,  971,  972,  210,  972,  209,  207,  202,
    1368       972,  973,  179,  973,  974,  150,  974,  148,  147,  141,
    1369 
    1370       974,  975,  139,  975,  976,  137,  976,  129,  126,  125,
    1371       976,  977,  121,  977,  978,  102,  978,   99,   96,   94,
    1372       978,  979,   87,  979,  980,   73,  980,   71,   67,   36,
    1373       980,  981,   33,  981,  982,   18,  982,   11,    4,    3,
    1374       982,  983,    0,  983,    0,    0,    0,  983,  984,    0,
    1375       984,  985,    0,  985,    0,    0,    0,  985,  986,    0,
    1376       986,  987,    0,  987,    0,  987,    0,  987,  988,    0,
    1377       988,    0,    0,    0,  988,  989,    0,  989,    0,    0,
    1378         0,  989,  990,    0,  990,  991,    0,  991,    0,    0,
    1379         0,  991,  992,    0,  992,  993,    0,  993,    0,    0,
    1380 
    1381         0,  993,  994,    0,  994,  995,    0,  995,    0,    0,
    1382         0,  995,  996,    0,  996,  997,    0,  997,    0,    0,
    1383         0,  997,  998,    0,  998,  999,    0,  999,    0,    0,
    1384         0,  999, 1000,    0, 1000, 1001,    0,    0, 1001,    0,
    1385      1001, 1001, 1001, 1001, 1001, 1002, 1002, 1002, 1002, 1002,
    1386      1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1003,    0,
    1387      1003,    0,    0,    0, 1003, 1004,    0, 1004, 1005,    0,
    1388      1005,    0,    0,    0, 1005, 1006,    0, 1006, 1007,    0,
    1389      1007,    0,    0,    0, 1007, 1008,    0, 1008, 1009,    0,
    1390      1009,    0,    0,    0, 1009, 1010,    0, 1010, 1011,    0,
    1391 
    1392      1011,    0,    0,    0, 1011, 1012,    0, 1012, 1013,    0,
    1393      1013,    0,    0,    0, 1013, 1014,    0, 1014, 1015,    0,
    1394      1015,    0,    0,    0, 1015, 1016,    0, 1016, 1017,    0,
    1395      1017,    0,    0,    0, 1017, 1018,    0, 1018, 1019,    0,
    1396      1019,    0,    0,    0, 1019, 1020,    0, 1020,    0,    0,
    1397         0, 1020, 1021,    0, 1021, 1022,    0, 1022,    0,    0,
    1398         0, 1022, 1023,    0, 1023, 1024,    0, 1024,    0,    0,
    1399         0, 1024, 1025,    0, 1025, 1026,    0, 1026,    0,    0,
    1400         0, 1026, 1027,    0, 1027, 1028,    0, 1028, 1029,    0,
    1401      1029, 1030,    0,    0, 1030,    0, 1030, 1030, 1030, 1030,
    1402 
    1403      1030, 1031,    0, 1031, 1032, 1032, 1032, 1032, 1032, 1032,
    1404      1032, 1032, 1032, 1032, 1032, 1032, 1032, 1033,    0, 1033,
    1405         0,    0,    0, 1033, 1034,    0, 1034, 1035,    0, 1035,
    1406         0,    0,    0, 1035, 1036,    0, 1036, 1037,    0, 1037,
    1407      1038,    0, 1038, 1039,    0,    0, 1039,    0, 1039, 1039,
    1408      1039, 1039, 1039, 1040,    0, 1040, 1041,    0, 1041, 1042,
    1409         0, 1042, 1043,    0, 1043, 1044,    0, 1044, 1045,    0,
    1410      1045, 1046,    0, 1046, 1047,    0, 1047,    0,    0,    0,
    1411      1047, 1048,    0, 1048, 1049,    0, 1049,    0,    0,    0,
    1412      1049, 1050,    0, 1050, 1051,    0, 1051, 1052,    0, 1052,
    1413 
    1414      1053,    0, 1053, 1054,    0, 1054,    0,    0,    0, 1054,
    1415      1055,    0,    0, 1055,    0, 1055, 1055, 1055, 1055, 1055,
    1416      1056,    0, 1056, 1057,    0, 1057, 1058,    0, 1058, 1059,
    1417         0, 1059,    0,    0,    0, 1059, 1060,    0, 1060,    0,
    1418         0,    0, 1060, 1061,    0, 1061,    0,    0,    0, 1061,
    1419      1062,    0, 1062, 1063,    0, 1063,    0,    0,    0, 1063,
    1420      1064,    0, 1064,    0,    0,    0, 1064, 1065,    0, 1065,
    1421         0,    0,    0, 1065, 1066,    0, 1066,    0,    0,    0,
    1422      1066, 1067,    0, 1067,    0,    0,    0, 1067, 1068,    0,
    1423      1068,    0,    0,    0, 1068, 1069,    0, 1069,    0,    0,
    1424 
    1425         0, 1069, 1070,    0, 1070,    0,    0,    0, 1070, 1071,
    1426         0, 1071,    0,    0,    0, 1071, 1072,    0, 1072,    0,
    1427         0,    0, 1072, 1073,    0, 1073,    0,    0,    0, 1073,
    1428      1074,    0, 1074,    0,    0,    0, 1074, 1075,    0, 1075,
    1429         0,    0,    0, 1075, 1076,    0, 1076,    0,    0,    0,
    1430      1076, 1077,    0, 1077,    0,    0,    0, 1077, 1078,    0,
    1431      1078,    0,    0,    0, 1078,  904,  904,  904,  904,  904,
    1432       904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
    1433       904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
    1434       904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
    1435 
    1436       904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
    1437       904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
    1438       904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
    1439       904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
    1440       904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
    1441       904
     1140       45,   30,   40,   45,   45,   40,   49,   30,   45,   56,
     1141       62,   45,   49,   30,   73,  892,  127,   53,  127,   51,
     1142       61,   30,   62,   55,   30,   31,  108,   31,   31,   31,
     1143
     1144       31,   31,   31,   50,   51,   53,   51,   64,   61,   54,
     1145       73,   55,   50,   87,   31,   51,   50,   55,   31,   54,
     1146      108,   50,   52,  114,   31,   50,   54,   52,  175,  129,
     1147       31,  129,  107,  154,  151,   52,   31,   52,  107,   87,
     1148       52,   60,   31,  132,   52,  132,   60,  114,  175,  154,
     1149       31,   38,  151,  387,  111,   38,   38,   58,   38,   60,
     1150       38,   38,  113,   38,  107,   38,   59,  130,  113,   58,
     1151       58,  116,  111,  164,   38,   38,   38,  387,   59,   58,
     1152      111,  130,   58,  130,  142,   60,   59,  131,   60,  116,
     1153      164,   68,   68,   59,  113,   38,   68,  116,   38,  131,
     1154
     1155      110,  131,   60,   67,   67,   67,   67,   67,   67,  884,
     1156      142,   67,   68,   68,   68,   68,   68,   68,   80,   80,
     1157       80,   80,   80,   80,  153,   38,   38,   77,   77,  134,
     1158      110,  134,   77,  153,   77,  110,  135,  135,  135,   77,
     1159       82,   82,   82,   82,   82,   82,  883,  243,   77,   77,
     1160       77,   77,   83,   83,   83,   83,   83,   83,  110,   77,
     1161      103,  103,  103,  103,  103,  103,  104,  104,  104,  104,
     1162      133,  133,  137,  133,  137,   77,  145,  139,   77,  139,
     1163      157,  145,  243,   77,   77,  152,  156,   77,   77,  155,
     1164      166,  150,  157,  880,  104,   77,  159,  168,   77,  104,
     1165
     1166       77,   77,   77,  152,   77,   85,  150,  155,  156,   85,
     1167       85,  166,  159,  150,   85,   85,  161,   85,  160,   85,
     1168      145,  162,  104,  167,  168,  161,  169,  163,   85,   85,
     1169       85,  105,  163,  105,  105,  105,  105,  105,  105,  879,
     1170      160,  171,  162,  162,  165,  163,  167,  169,  173,   85,
     1171      105,  106,   85,  106,  165,  172,  106,  106,  106,  106,
     1172      106,  106,  180,  171,  170,  173,  105,  176,  177,  170,
     1173      172,  181,  105,  174,  184,  187,  181,  182,  179,  180,
     1174       85,   99,   99,   99,   99,   99,   99,  170,  187,  106,
     1175      177,  174,  184,  179,  176,  183,  190,   99,   99,   99,
     1176
     1177      179,   99,   99,  189,  182,  186,  183,  191,  189,  218,
     1178      186,  218,  185,  188,   99,  190,  183,  183,  284,   99,
     1179       99,   99,  158,  185,   99,  186,   99,  158,  158,  158,
     1180      189,  158,  158,  188,  192,  158,  194,  158,  284,  219,
     1181      185,  219,  158,  158,  158,  193,  158,  192,  220,  194,
     1182      220,  191,  198,  198,  191,  192,  205,  198,  193,  877,
     1183      193,  197,  197,  197,  197,  197,  197,  200,  200,  197,
     1184      248,  221,  200,  198,  198,  198,  198,  198,  198,  202,
     1185      202,  223,  205,  223,  202,  221,  202,  221,  200,  200,
     1186      200,  200,  200,  200,  209,  209,  248,  876,  222,  209,
     1187
     1188      202,  202,  202,  202,  202,  202,  212,  212,  212,  212,
     1189      222,  286,  222,  224,  224,  225,  224,  225,  226,  226,
     1190      226,  228,  229,  228,  229,  234,  234,  235,  236,  235,
     1191      869,  286,  235,  235,  235,  235,  235,  235,  237,  212,
     1192      237,  282,  242,  237,  242,  242,  242,  242,  234,  256,
     1193      270,  236,  241,  241,  241,  241,  241,  241,  282,  266,
     1194      237,  266,  237,  296,  267,  235,  267,  237,  281,  244,
     1195      244,  244,  244,  244,  244,  256,  270,  242,  245,  245,
     1196      245,  245,  245,  245,  281,  241,  244,  247,  278,  247,
     1197      296,  295,  247,  247,  247,  247,  247,  247,  279,  280,
     1198
     1199      283,  278,  244,  288,  295,  283,  289,  868,  244,  246,
     1200      246,  246,  246,  246,  246,  253,  279,  280,  255,  255,
     1201      255,  255,  255,  255,  289,  246,  288,  246,  291,  246,
     1202      246,  260,  260,  260,  260,  260,  260,  290,  253,  292,
     1203      253,  285,  246,  291,  253,  867,  285,  246,  294,  246,
     1204      253,  255,  246,  287,  246,  292,  292,  294,  297,  299,
     1205      293,  303,  253,  290,  260,  293,  253,  300,  287,  301,
     1206      253,  304,  300,  302,  287,  287,  297,  299,  301,  305,
     1207      302,  303,  306,  307,  308,  309,  310,  306,  307,  304,
     1208      308,  311,  312,  313,  314,  310,  318,  311,  315,  319,
     1209
     1210      305,  305,  313,  315,  309,  316,  317,  320,  312,  314,
     1211      316,  317,  322,  324,  323,  318,  326,  319,  325,  327,
     1212      320,  328,  329,  322,  330,  331,  332,  334,  317,  323,
     1213      333,  325,  324,  330,  337,  335,  338,  339,  326,  329,
     1214      340,  328,  327,  337,  343,  334,  341,  331,  335,  332,
     1215      639,  342,  333,  340,  341,  339,  342,  344,  344,  343,
     1216      345,  362,  344,  362,  344,  403,  345,  352,  352,  352,
     1217      352,  353,  353,  353,  353,  363,  403,  363,  639,  408,
     1218      338,  370,  370,  370,  370,  370,  370,  372,  382,  372,
     1219      408,  410,  372,  372,  372,  372,  372,  372,  382,  404,
     1220
     1221      352,  371,  371,  371,  371,  371,  371,  374,  374,  374,
     1222      374,  374,  374,  410,  382,  404,  405,  371,  406,  371,
     1223      412,  371,  371,  377,  377,  377,  377,  377,  377,  385,
     1224      425,  405,  383,  412,  371,  385,  389,  406,  414,  371,
     1225      374,  371,  383,  413,  371,  425,  371,  375,  375,  375,
     1226      375,  375,  375,  384,  389,  417,  377,  407,  383,  413,
     1227      414,  385,  389,  375,  375,  375,  407,  375,  375,  378,
     1228      378,  378,  378,  378,  378,  421,  384,  417,  384,  866,
     1229      375,  421,  384,  865,  388,  375,  375,  375,  384,  386,
     1230      375,  386,  375,  415,  386,  386,  386,  386,  386,  386,
     1231
     1232      384,  409,  378,  411,  384,  416,  415,  388,  384,  388,
     1233      409,  418,  411,  388,  423,  419,  422,  424,  420,  388,
     1234      419,  416,  416,  431,  427,  423,  432,  386,  433,  418,
     1235      429,  388,  434,  420,  441,  388,  424,  422,  427,  388,
     1236      420,  433,  429,  435,  431,  436,  439,  437,  432,  435,
     1237      442,  443,  444,  445,  441,  434,  437,  446,  447,  449,
     1238      436,  439,  451,  453,  452,  456,  443,  447,  445,  454,
     1239      455,  457,  442,  452,  444,  458,  449,  446,  459,  460,
     1240      457,  461,  462,  463,  453,  451,  460,  456,  461,  454,
     1241      455,  459,  464,  458,  465,  466,  468,  470,  528,  469,
     1242
     1243      464,  528,  861,  470,  519,  463,  466,  462,  469,  524,
     1244      464,  465,  479,  479,  479,  479,  518,  519,  468,  490,
     1245      490,  490,  490,  490,  490,  492,  492,  492,  492,  492,
     1246      492,  524,  544,  518,  522,  490,  521,  490,  544,  490,
     1247      490,  493,  493,  493,  493,  493,  493,  497,  526,  498,
     1248      494,  521,  490,  526,  522,  496,  532,  490,  492,  490,
     1249      494,  495,  490,  495,  490,  496,  495,  495,  495,  495,
     1250      495,  495,  567,  497,  493,  498,  494,  532,  523,  525,
     1251      567,  496,  500,  500,  500,  500,  500,  500,  502,  529,
     1252      502,  523,  525,  502,  502,  502,  502,  502,  502,  495,
     1253
     1254      501,  501,  501,  501,  501,  501,  527,  530,  531,  529,
     1255      533,  857,  536,  535,  539,  537,  501,  527,  501,  533,
     1256      501,  501,  530,  534,  535,  536,  538,  531,  534,  540,
     1257      541,  547,  542,  501,  548,  538,  539,  542,  501,  541,
     1258      501,  545,  549,  501,  537,  501,  540,  550,  547,  548,
     1259      545,  552,  553,  554,  558,  555,  550,  549,  557,  558,
     1260      552,  563,  560,  561,  564,  554,  568,  565,  569,  553,
     1261      555,  560,  561,  557,  570,  569,  568,  564,  571,  572,
     1262      574,  575,  577,  563,  565,  572,  713,  578,  622,  574,
     1263      571,  575,  713,  604,  604,  622,  570,  625,  854,  577,
     1264
     1265      578,  597,  597,  597,  597,  597,  597,  598,  598,  598,
     1266      598,  598,  598,  600,  625,  600,  604,  624,  600,  600,
     1267      600,  600,  600,  600,  603,  603,  603,  603,  603,  603,
     1268      624,  605,  814,  629,  597,  599,  599,  599,  599,  599,
     1269      599,  606,  621,  606,  626,  627,  606,  621,  814,  623,
     1270      629,  599,  627,  599,  605,  599,  599,  603,  623,  630,
     1271      621,  628,  630,  606,  631,  606,  632,  626,  599,  628,
     1272      606,  633,  634,  599,  635,  599,  636,  631,  599,  637,
     1273      599,  640,  637,  638,  641,  643,  633,  644,  632,  647,
     1274      642,  635,  645,  648,  634,  705,  640,  649,  636,  642,
     1275
     1276      638,  645,  653,  643,  641,  654,  649,  656,  659,  644,
     1277      667,  660,  647,  668,  671,  648,  670,  659,  660,  667,
     1278      703,  705,  653,  668,  656,  670,  702,  853,  708,  671,
     1279      703,  852,  654,  689,  689,  689,  689,  689,  689,  693,
     1280      693,  693,  693,  693,  693,  706,  711,  702,  708,  689,
     1281      707,  689,  706,  689,  689,  707,  709,  710,  715,  709,
     1282      710,  714,  716,  717,  711,  716,  689,  715,  718,  721,
     1283      720,  689,  693,  689,  714,  723,  689,  719,  689,  720,
     1284      719,  724,  722,  725,  717,  722,  726,  727,  723,  724,
     1285      735,  728,  731,  725,  734,  721,  736,  718,  738,  726,
     1286
     1287      728,  760,  739,  761,  757,  762,  738,  764,  727,  758,
     1288      731,  739,  735,  761,  734,  731,  760,  736,  746,  746,
     1289      746,  746,  746,  746,  757,  759,  758,  763,  762,  765,
     1290      759,  767,  765,  764,  766,  769,  771,  773,  769,  771,
     1291      773,  772,  774,  775,  763,  774,  776,  766,  772,  778,
     1292      782,  746,  797,  799,  802,  807,  810,  800,  775,  767,
     1293      801,  803,  804,  801,  803,  804,  806,  808,  811,  776,
     1294      808,  811,  778,  782,  799,  800,  802,  812,  810,  797,
     1295      812,  807,  813,  815,  806,  816,  831,  833,  832,  834,
     1296      833,  813,  835,  836,  815,  832,  836,  837,  834,  840,
     1297
     1298      843,  816,  840,  843,  844,  845,  846,  831,  858,  855,
     1299      835,  858,  859,  844,  837,  846,  835,  845,  855,  856,
     1300      860,  870,  859,  862,  856,  860,  862,  863,  864,  871,
     1301      863,  864,  872,  873,  874,  872,  875,  874,  878,  875,
     1302      881,  870,  882,  873,  871,  885,  886,  887,  889,  888,
     1303      890,  851,  891,  850,  885,  849,  848,  882,  847,  886,
     1304      878,  881,  891,  842,  841,  839,  889,  838,  830,  887,
     1305      888,  829,  890,  895,  895,  895,  895,  895,  895,  895,
     1306      895,  895,  895,  895,  895,  895,  896,  896,  896,  896,
     1307      896,  896,  896,  896,  896,  896,  896,  896,  896,  897,
     1308
     1309      897,  897,  897,  897,  897,  897,  897,  897,  897,  897,
     1310      897,  897,  898,  828,  827,  898,  826,  898,  898,  898,
     1311      898,  898,  899,  825,  824,  823,  899,  899,  899,  899,
     1312      899,  899,  900,  900,  900,  900,  900,  900,  900,  900,
     1313      900,  900,  900,  900,  900,  901,  822,  821,  901,  820,
     1314      901,  901,  901,  901,  901,  902,  819,  902,  902,  818,
     1315      902,  902,  902,  902,  902,  902,  817,  902,  903,  809,
     1316      805,  903,  903,  903,  903,  903,  903,  903,  903,  798,
     1317      903,  904,  904,  904,  904,  904,  904,  904,  904,  904,
     1318      904,  904,  904,  904,  905,  905,  796,  905,  795,  794,
     1319
     1320      793,  905,  906,  792,  791,  906,  790,  906,  906,  906,
     1321      906,  906,  907,  789,  907,  788,  787,  786,  907,  908,
     1322      785,  908,  784,  783,  781,  908,  909,  780,  909,  779,
     1323      777,  770,  909,  910,  768,  910,  756,  755,  754,  910,
     1324      911,  753,  911,  752,  751,  750,  911,  912,  749,  912,
     1325      748,  745,  744,  912,  913,  743,  913,  737,  733,  732,
     1326      913,  914,  730,  914,  729,  712,  704,  914,  915,  701,
     1327      915,  696,  694,  690,  915,  916,  680,  916,  917,  917,
     1328      676,  917,  917,  917,  674,  917,  918,  918,  672,  918,
     1329      919,  669,  666,  919,  665,  919,  919,  919,  919,  919,
     1330
     1331      920,  664,  920,  663,  662,  661,  920,  921,  658,  921,
     1332      657,  655,  652,  921,  922,  651,  922,  650,  646,  619,
     1333      922,  923,  615,  923,  924,  613,  924,  611,  609,  607,
     1334      924,  925,  601,  925,  926,  595,  593,  926,  591,  926,
     1335      926,  926,  926,  926,  927,  927,  927,  927,  927,  927,
     1336      927,  927,  927,  927,  927,  927,  927,  928,  928,  928,
     1337      928,  928,  928,  928,  928,  928,  928,  928,  928,  928,
     1338      929,  589,  929,  587,  585,  583,  929,  930,  581,  930,
     1339      580,  579,  576,  930,  931,  573,  931,  566,  562,  559,
     1340      931,  932,  556,  932,  933,  551,  933,  546,  543,  520,
     1341
     1342      933,  934,  516,  934,  935,  514,  935,  512,  510,  508,
     1343      935,  936,  506,  936,  937,  505,  937,  504,  503,  491,
     1344      937,  938,  488,  938,  939,  486,  939,  485,  484,  482,
     1345      939,  940,  480,  940,  941,  477,  941,  475,  473,  471,
     1346      941,  942,  467,  942,  943,  450,  943,  448,  440,  438,
     1347      943,  944,  430,  944,  945,  428,  945,  426,  945,  400,
     1348      945,  946,  398,  946,  396,  946,  394,  946,  947,  947,
     1349      393,  947,  947,  947,  392,  947,  948,  379,  948,  376,
     1350      367,  365,  948,  949,  364,  949,  360,  358,  356,  949,
     1351      950,  354,  950,  350,  348,  347,  950,  951,  346,  951,
     1352
     1353      952,  336,  952,  321,  298,  277,  952,  953,  275,  953,
     1354      954,  273,  954,  272,  271,  269,  954,  955,  268,  955,
     1355      956,  263,  956,  259,  258,  254,  956,  957,  251,  957,
     1356      958,  250,  239,  958,  238,  958,  958,  958,  958,  958,
     1357      959,  959,  959,  959,  959,  959,  959,  959,  959,  959,
     1358      959,  959,  959,  960,  231,  960,  230,  227,  217,  960,
     1359      961,  215,  961,  962,  214,  962,  213,  207,  206,  962,
     1360      963,  204,  963,  964,  199,  964,  178,  149,  147,  964,
     1361      965,  146,  965,  966,  140,  966,  138,  136,  128,  966,
     1362      967,  125,  967,  968,  124,  968,  120,  101,   98,  968,
     1363
     1364      969,   95,  969,  970,   93,  970,   86,   72,   70,  970,
     1365      971,   66,  971,  972,   36,  972,   33,   18,   11,  972,
     1366      973,    4,  973,    3,    0,    0,  973,  974,    0,  974,
     1367      975,    0,  975,    0,    0,    0,  975,  976,    0,  976,
     1368      977,    0,  977,    0,  977,    0,  977,  978,    0,  978,
     1369        0,    0,    0,  978,  979,    0,  979,    0,    0,    0,
     1370      979,  980,    0,  980,  981,    0,  981,    0,    0,    0,
     1371      981,  982,    0,  982,  983,    0,  983,    0,    0,    0,
     1372      983,  984,    0,  984,  985,    0,  985,    0,    0,    0,
     1373      985,  986,    0,  986,  987,    0,  987,    0,    0,    0,
     1374
     1375      987,  988,    0,  988,  989,    0,  989,    0,    0,    0,
     1376      989,  990,    0,  990,  991,    0,    0,  991,    0,  991,
     1377      991,  991,  991,  991,  992,  992,  992,  992,  992,  992,
     1378      992,  992,  992,  992,  992,  992,  992,  993,    0,  993,
     1379        0,    0,    0,  993,  994,    0,  994,  995,    0,  995,
     1380        0,    0,    0,  995,  996,    0,  996,  997,    0,  997,
     1381        0,    0,    0,  997,  998,    0,  998,  999,    0,  999,
     1382        0,    0,    0,  999, 1000,    0, 1000, 1001,    0, 1001,
     1383        0,    0,    0, 1001, 1002,    0, 1002, 1003,    0, 1003,
     1384        0,    0,    0, 1003, 1004,    0, 1004, 1005,    0, 1005,
     1385
     1386        0,    0,    0, 1005, 1006,    0, 1006, 1007,    0, 1007,
     1387        0,    0,    0, 1007, 1008,    0, 1008, 1009,    0, 1009,
     1388        0,    0,    0, 1009, 1010,    0, 1010,    0,    0,    0,
     1389     1010, 1011,    0, 1011, 1012,    0, 1012,    0,    0,    0,
     1390     1012, 1013,    0, 1013, 1014,    0, 1014,    0,    0,    0,
     1391     1014, 1015,    0, 1015, 1016,    0, 1016,    0,    0,    0,
     1392     1016, 1017,    0, 1017, 1018,    0, 1018, 1019,    0, 1019,
     1393     1020,    0,    0, 1020,    0, 1020, 1020, 1020, 1020, 1020,
     1394     1021,    0, 1021, 1022, 1022, 1022, 1022, 1022, 1022, 1022,
     1395     1022, 1022, 1022, 1022, 1022, 1022, 1023,    0, 1023,    0,
     1396
     1397        0,    0, 1023, 1024,    0, 1024, 1025,    0, 1025,    0,
     1398        0,    0, 1025, 1026,    0, 1026, 1027,    0, 1027, 1028,
     1399        0, 1028, 1029,    0,    0, 1029,    0, 1029, 1029, 1029,
     1400     1029, 1029, 1030,    0, 1030, 1031,    0, 1031, 1032,    0,
     1401     1032, 1033,    0, 1033, 1034,    0, 1034, 1035,    0, 1035,
     1402     1036,    0, 1036, 1037,    0, 1037,    0,    0,    0, 1037,
     1403     1038,    0, 1038, 1039,    0, 1039,    0,    0,    0, 1039,
     1404     1040,    0, 1040, 1041,    0, 1041, 1042,    0, 1042, 1043,
     1405        0, 1043, 1044,    0, 1044,    0,    0,    0, 1044, 1045,
     1406        0,    0, 1045,    0, 1045, 1045, 1045, 1045, 1045, 1046,
     1407
     1408        0, 1046, 1047,    0, 1047, 1048,    0, 1048, 1049,    0,
     1409     1049,    0,    0,    0, 1049, 1050,    0, 1050,    0,    0,
     1410        0, 1050, 1051,    0, 1051,    0,    0,    0, 1051, 1052,
     1411        0, 1052, 1053,    0, 1053,    0,    0,    0, 1053, 1054,
     1412        0, 1054,    0,    0,    0, 1054, 1055,    0, 1055,    0,
     1413        0,    0, 1055, 1056,    0, 1056,    0,    0,    0, 1056,
     1414     1057,    0, 1057,    0,    0,    0, 1057, 1058,    0, 1058,
     1415        0,    0,    0, 1058, 1059,    0, 1059,    0,    0,    0,
     1416     1059, 1060,    0, 1060,    0,    0,    0, 1060, 1061,    0,
     1417     1061,    0,    0,    0, 1061, 1062,    0, 1062,    0,    0,
     1418
     1419        0, 1062, 1063,    0, 1063,    0,    0,    0, 1063, 1064,
     1420        0, 1064,    0,    0,    0, 1064, 1065,    0, 1065,    0,
     1421        0,    0, 1065, 1066,    0, 1066,    0,    0,    0, 1066,
     1422     1067,    0, 1067,    0,    0,    0, 1067, 1068,    0, 1068,
     1423        0,    0,    0, 1068,  894,  894,  894,  894,  894,  894,
     1424      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     1425      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     1426      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     1427      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     1428      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     1429
     1430      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     1431      894,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     1432      894,  894,  894,  894,  894,  894,  894,  894,  894,  894
    14421433    } ;
    14431434
    14441435/* Table of booleans, true if rule could match eol. */
    1445 static yyconst flex_int32_t yy_rule_can_match_eol[186] =
     1436static yyconst flex_int32_t yy_rule_can_match_eol[184] =
    14461437    {   0,
    144714381, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     
    14501441    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    14511442    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    1452     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    1453     0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     1443    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
     1444    0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    14541445    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    14551446    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    1456     0, 0, 0, 0, 0, 0,     };
     1447    0, 0, 0, 0,     };
    14571448
    14581449static yy_state_type yy_last_accepting_state;
     
    14821473 * Created On       : Sat Sep 22 08:58:10 2001
    14831474 * Last Modified By : Peter A. Buhr
    1484  * Last Modified On : Tue Nov 29 11:32:00 2016
    1485  * Update Count     : 501
     1475 * Last Modified On : Wed Oct 26 17:32:30 2016
     1476 * Update Count     : 499
    14861477 */
    14871478#line 20 "lex.ll"
     
    15441535
    15451536
    1546 #line 1547 "Parser/lex.cc"
     1537#line 1538 "Parser/lex.cc"
    15471538
    15481539#define INITIAL 0
     
    17391730
    17401731                                   /* line directives */
    1741 #line 1742 "Parser/lex.cc"
     1732#line 1733 "Parser/lex.cc"
    17421733
    17431734        if ( !(yy_init) )
     
    17931784                                {
    17941785                                yy_current_state = (int) yy_def[yy_current_state];
    1795                                 if ( yy_current_state >= 905 )
     1786                                if ( yy_current_state >= 895 )
    17961787                                        yy_c = yy_meta[(unsigned int) yy_c];
    17971788                                }
     
    17991790                        ++yy_cp;
    18001791                        }
    1801                 while ( yy_base[yy_current_state] != 2866 );
     1792                while ( yy_base[yy_current_state] != 2845 );
    18021793
    18031794yy_find_action:
     
    22152206YY_RULE_SETUP
    22162207#line 239 "lex.ll"
    2217 { NUMERIC_RETURN(ONE_T); }                              // CFA
     2208{ KEYWORD_RETURN(OTYPE); }                              // CFA
    22182209        YY_BREAK
    22192210case 72:
    22202211YY_RULE_SETUP
    22212212#line 240 "lex.ll"
    2222 { KEYWORD_RETURN(OTYPE); }                              // CFA
     2213{ KEYWORD_RETURN(REGISTER); }
    22232214        YY_BREAK
    22242215case 73:
    22252216YY_RULE_SETUP
    22262217#line 241 "lex.ll"
    2227 { KEYWORD_RETURN(REGISTER); }
     2218{ KEYWORD_RETURN(RESTRICT); }                   // C99
    22282219        YY_BREAK
    22292220case 74:
    22302221YY_RULE_SETUP
    22312222#line 242 "lex.ll"
    2232 { KEYWORD_RETURN(RESTRICT); }                   // C99
     2223{ KEYWORD_RETURN(RESTRICT); }                   // GCC
    22332224        YY_BREAK
    22342225case 75:
     
    22402231YY_RULE_SETUP
    22412232#line 244 "lex.ll"
    2242 { KEYWORD_RETURN(RESTRICT); }                   // GCC
     2233{ KEYWORD_RETURN(RETURN); }
    22432234        YY_BREAK
    22442235case 77:
    22452236YY_RULE_SETUP
    22462237#line 245 "lex.ll"
    2247 { KEYWORD_RETURN(RETURN); }
     2238{ KEYWORD_RETURN(SHORT); }
    22482239        YY_BREAK
    22492240case 78:
    22502241YY_RULE_SETUP
    22512242#line 246 "lex.ll"
    2252 { KEYWORD_RETURN(SHORT); }
     2243{ KEYWORD_RETURN(SIGNED); }
    22532244        YY_BREAK
    22542245case 79:
    22552246YY_RULE_SETUP
    22562247#line 247 "lex.ll"
    2257 { KEYWORD_RETURN(SIGNED); }
     2248{ KEYWORD_RETURN(SIGNED); }                             // GCC
    22582249        YY_BREAK
    22592250case 80:
     
    22652256YY_RULE_SETUP
    22662257#line 249 "lex.ll"
    2267 { KEYWORD_RETURN(SIGNED); }                             // GCC
     2258{ KEYWORD_RETURN(SIZEOF); }
    22682259        YY_BREAK
    22692260case 82:
    22702261YY_RULE_SETUP
    22712262#line 250 "lex.ll"
    2272 { KEYWORD_RETURN(SIZEOF); }
     2263{ KEYWORD_RETURN(STATIC); }
    22732264        YY_BREAK
    22742265case 83:
    22752266YY_RULE_SETUP
    22762267#line 251 "lex.ll"
    2277 { KEYWORD_RETURN(STATIC); }
     2268{ KEYWORD_RETURN(STATICASSERT); }               // C11
    22782269        YY_BREAK
    22792270case 84:
    22802271YY_RULE_SETUP
    22812272#line 252 "lex.ll"
    2282 { KEYWORD_RETURN(STATICASSERT); }               // C11
     2273{ KEYWORD_RETURN(STRUCT); }
    22832274        YY_BREAK
    22842275case 85:
    22852276YY_RULE_SETUP
    22862277#line 253 "lex.ll"
    2287 { KEYWORD_RETURN(STRUCT); }
     2278{ KEYWORD_RETURN(SWITCH); }
    22882279        YY_BREAK
    22892280case 86:
    22902281YY_RULE_SETUP
    22912282#line 254 "lex.ll"
    2292 { KEYWORD_RETURN(SWITCH); }
     2283{ KEYWORD_RETURN(THREADLOCAL); }                // C11
    22932284        YY_BREAK
    22942285case 87:
    22952286YY_RULE_SETUP
    22962287#line 255 "lex.ll"
    2297 { KEYWORD_RETURN(THREADLOCAL); }                // C11
     2288{ KEYWORD_RETURN(THROW); }                              // CFA
    22982289        YY_BREAK
    22992290case 88:
    23002291YY_RULE_SETUP
    23012292#line 256 "lex.ll"
    2302 { KEYWORD_RETURN(THROW); }                              // CFA
     2293{ KEYWORD_RETURN(THROWRESUME); }                // CFA
    23032294        YY_BREAK
    23042295case 89:
    23052296YY_RULE_SETUP
    23062297#line 257 "lex.ll"
    2307 { KEYWORD_RETURN(THROWRESUME); }                // CFA
     2298{ KEYWORD_RETURN(TRAIT); }                              // CFA
    23082299        YY_BREAK
    23092300case 90:
    23102301YY_RULE_SETUP
    23112302#line 258 "lex.ll"
    2312 { KEYWORD_RETURN(TRAIT); }                              // CFA
     2303{ KEYWORD_RETURN(TRY); }                                // CFA
    23132304        YY_BREAK
    23142305case 91:
    23152306YY_RULE_SETUP
    23162307#line 259 "lex.ll"
    2317 { KEYWORD_RETURN(TRY); }                                // CFA
     2308{ KEYWORD_RETURN(TYPEDEF); }
    23182309        YY_BREAK
    23192310case 92:
    23202311YY_RULE_SETUP
    23212312#line 260 "lex.ll"
    2322 { KEYWORD_RETURN(TYPEDEF); }
     2313{ KEYWORD_RETURN(TYPEOF); }                             // GCC
    23232314        YY_BREAK
    23242315case 93:
     
    23352326YY_RULE_SETUP
    23362327#line 263 "lex.ll"
    2337 { KEYWORD_RETURN(TYPEOF); }                             // GCC
     2328{ KEYWORD_RETURN(UNION); }
    23382329        YY_BREAK
    23392330case 96:
    23402331YY_RULE_SETUP
    23412332#line 264 "lex.ll"
    2342 { KEYWORD_RETURN(UNION); }
     2333{ KEYWORD_RETURN(UNSIGNED); }
    23432334        YY_BREAK
    23442335case 97:
    23452336YY_RULE_SETUP
    23462337#line 265 "lex.ll"
    2347 { KEYWORD_RETURN(UNSIGNED); }
     2338{ KEYWORD_RETURN(VALIST); }                     // GCC
    23482339        YY_BREAK
    23492340case 98:
    23502341YY_RULE_SETUP
    23512342#line 266 "lex.ll"
    2352 { KEYWORD_RETURN(VALIST); }                     // GCC
     2343{ KEYWORD_RETURN(VOID); }
    23532344        YY_BREAK
    23542345case 99:
    23552346YY_RULE_SETUP
    23562347#line 267 "lex.ll"
    2357 { KEYWORD_RETURN(VOID); }
     2348{ KEYWORD_RETURN(VOLATILE); }
    23582349        YY_BREAK
    23592350case 100:
    23602351YY_RULE_SETUP
    23612352#line 268 "lex.ll"
    2362 { KEYWORD_RETURN(VOLATILE); }
     2353{ KEYWORD_RETURN(VOLATILE); }                   // GCC
    23632354        YY_BREAK
    23642355case 101:
     
    23702361YY_RULE_SETUP
    23712362#line 270 "lex.ll"
    2372 { KEYWORD_RETURN(VOLATILE); }                   // GCC
    2373         YY_BREAK
     2363{ KEYWORD_RETURN(WHILE); }
     2364        YY_BREAK
     2365/* identifier */
    23742366case 103:
    23752367YY_RULE_SETUP
    2376 #line 271 "lex.ll"
    2377 { KEYWORD_RETURN(WHILE); }
     2368#line 273 "lex.ll"
     2369{ IDENTIFIER_RETURN(); }
    23782370        YY_BREAK
    23792371case 104:
    23802372YY_RULE_SETUP
    2381 #line 272 "lex.ll"
    2382 { NUMERIC_RETURN(ZERO_T); }                             // CFA
    2383         YY_BREAK
    2384 /* identifier */
     2373#line 274 "lex.ll"
     2374{ ATTRIBUTE_RETURN(); }
     2375        YY_BREAK
    23852376case 105:
    23862377YY_RULE_SETUP
    23872378#line 275 "lex.ll"
     2379{ BEGIN BKQUOTE; }
     2380        YY_BREAK
     2381case 106:
     2382YY_RULE_SETUP
     2383#line 276 "lex.ll"
    23882384{ IDENTIFIER_RETURN(); }
    23892385        YY_BREAK
    2390 case 106:
    2391 YY_RULE_SETUP
    2392 #line 276 "lex.ll"
    2393 { ATTRIBUTE_RETURN(); }
    2394         YY_BREAK
    23952386case 107:
    23962387YY_RULE_SETUP
    23972388#line 277 "lex.ll"
    2398 { BEGIN BKQUOTE; }
    2399         YY_BREAK
     2389{ BEGIN 0; }
     2390        YY_BREAK
     2391/* numeric constants */
    24002392case 108:
    24012393YY_RULE_SETUP
    2402 #line 278 "lex.ll"
    2403 { IDENTIFIER_RETURN(); }
     2394#line 280 "lex.ll"
     2395{ NUMERIC_RETURN(ZERO); }                               // CFA
    24042396        YY_BREAK
    24052397case 109:
    24062398YY_RULE_SETUP
    2407 #line 279 "lex.ll"
    2408 { BEGIN 0; }
    2409         YY_BREAK
    2410 /* numeric constants */
     2399#line 281 "lex.ll"
     2400{ NUMERIC_RETURN(ONE); }                                // CFA
     2401        YY_BREAK
    24112402case 110:
    24122403YY_RULE_SETUP
    24132404#line 282 "lex.ll"
    2414 { NUMERIC_RETURN(ZERO); }                               // CFA
     2405{ NUMERIC_RETURN(INTEGERconstant); }
    24152406        YY_BREAK
    24162407case 111:
    24172408YY_RULE_SETUP
    24182409#line 283 "lex.ll"
    2419 { NUMERIC_RETURN(ONE); }                                // CFA
     2410{ NUMERIC_RETURN(INTEGERconstant); }
    24202411        YY_BREAK
    24212412case 112:
     
    24272418YY_RULE_SETUP
    24282419#line 285 "lex.ll"
    2429 { NUMERIC_RETURN(INTEGERconstant); }
     2420{ NUMERIC_RETURN(REALDECIMALconstant); } // must appear before floating_constant
    24302421        YY_BREAK
    24312422case 114:
    24322423YY_RULE_SETUP
    24332424#line 286 "lex.ll"
    2434 { NUMERIC_RETURN(INTEGERconstant); }
     2425{ NUMERIC_RETURN(REALFRACTIONconstant); } // must appear before floating_constant
    24352426        YY_BREAK
    24362427case 115:
    24372428YY_RULE_SETUP
    24382429#line 287 "lex.ll"
    2439 { NUMERIC_RETURN(REALDECIMALconstant); } // must appear before floating_constant
     2430{ NUMERIC_RETURN(FLOATINGconstant); }
    24402431        YY_BREAK
    24412432case 116:
    24422433YY_RULE_SETUP
    24432434#line 288 "lex.ll"
    2444 { NUMERIC_RETURN(REALFRACTIONconstant); } // must appear before floating_constant
    2445         YY_BREAK
     2435{ NUMERIC_RETURN(FLOATINGconstant); }
     2436        YY_BREAK
     2437/* character constant, allows empty value */
    24462438case 117:
    24472439YY_RULE_SETUP
    2448 #line 289 "lex.ll"
    2449 { NUMERIC_RETURN(FLOATINGconstant); }
     2440#line 291 "lex.ll"
     2441{ BEGIN QUOTE; rm_underscore(); strtext = new std::string( yytext, yyleng ); }
    24502442        YY_BREAK
    24512443case 118:
    24522444YY_RULE_SETUP
    2453 #line 290 "lex.ll"
    2454 { NUMERIC_RETURN(FLOATINGconstant); }
    2455         YY_BREAK
    2456 /* character constant, allows empty value */
     2445#line 292 "lex.ll"
     2446{ strtext->append( yytext, yyleng ); }
     2447        YY_BREAK
    24572448case 119:
     2449/* rule 119 can match eol */
    24582450YY_RULE_SETUP
    24592451#line 293 "lex.ll"
    2460 { BEGIN QUOTE; rm_underscore(); strtext = new std::string( yytext, yyleng ); }
    2461         YY_BREAK
    2462 case 120:
    2463 YY_RULE_SETUP
    2464 #line 294 "lex.ll"
    2465 { strtext->append( yytext, yyleng ); }
    2466         YY_BREAK
    2467 case 121:
    2468 /* rule 121 can match eol */
    2469 YY_RULE_SETUP
    2470 #line 295 "lex.ll"
    24712452{ BEGIN 0; strtext->append( yytext, yyleng ); RETURN_STR(CHARACTERconstant); }
    24722453        YY_BREAK
    24732454/* ' stop highlighting */
    24742455/* string constant */
     2456case 120:
     2457YY_RULE_SETUP
     2458#line 297 "lex.ll"
     2459{ BEGIN STRING; rm_underscore(); strtext = new std::string( yytext, yyleng ); }
     2460        YY_BREAK
     2461case 121:
     2462YY_RULE_SETUP
     2463#line 298 "lex.ll"
     2464{ strtext->append( yytext, yyleng ); }
     2465        YY_BREAK
    24752466case 122:
     2467/* rule 122 can match eol */
    24762468YY_RULE_SETUP
    24772469#line 299 "lex.ll"
    2478 { BEGIN STRING; rm_underscore(); strtext = new std::string( yytext, yyleng ); }
    2479         YY_BREAK
     2470{ BEGIN 0; strtext->append( yytext, yyleng ); RETURN_STR(STRINGliteral); }
     2471        YY_BREAK
     2472/* " stop highlighting */
     2473/* common character/string constant */
    24802474case 123:
    24812475YY_RULE_SETUP
    2482 #line 300 "lex.ll"
    2483 { strtext->append( yytext, yyleng ); }
     2476#line 303 "lex.ll"
     2477{ rm_underscore(); strtext->append( yytext, yyleng ); }
    24842478        YY_BREAK
    24852479case 124:
    24862480/* rule 124 can match eol */
    24872481YY_RULE_SETUP
    2488 #line 301 "lex.ll"
    2489 { BEGIN 0; strtext->append( yytext, yyleng ); RETURN_STR(STRINGliteral); }
    2490         YY_BREAK
    2491 /* " stop highlighting */
    2492 /* common character/string constant */
     2482#line 304 "lex.ll"
     2483{}                                              // continuation (ALSO HANDLED BY CPP)
     2484        YY_BREAK
    24932485case 125:
    24942486YY_RULE_SETUP
    24952487#line 305 "lex.ll"
    2496 { rm_underscore(); strtext->append( yytext, yyleng ); }
    2497         YY_BREAK
     2488{ strtext->append( yytext, yyleng ); } // unknown escape character
     2489        YY_BREAK
     2490/* punctuation */
    24982491case 126:
    2499 /* rule 126 can match eol */
    2500 YY_RULE_SETUP
    2501 #line 306 "lex.ll"
    2502 {}                                              // continuation (ALSO HANDLED BY CPP)
     2492YY_RULE_SETUP
     2493#line 308 "lex.ll"
     2494{ ASCIIOP_RETURN(); }
    25032495        YY_BREAK
    25042496case 127:
    25052497YY_RULE_SETUP
    2506 #line 307 "lex.ll"
    2507 { strtext->append( yytext, yyleng ); } // unknown escape character
    2508         YY_BREAK
    2509 /* punctuation */
     2498#line 309 "lex.ll"
     2499{ ASCIIOP_RETURN(); }
     2500        YY_BREAK
    25102501case 128:
    25112502YY_RULE_SETUP
     
    25312522YY_RULE_SETUP
    25322523#line 314 "lex.ll"
    2533 { ASCIIOP_RETURN(); }
     2524{ ASCIIOP_RETURN(); }                                   // also operator
    25342525        YY_BREAK
    25352526case 133:
     
    25412532YY_RULE_SETUP
    25422533#line 316 "lex.ll"
     2534{ ASCIIOP_RETURN(); }
     2535        YY_BREAK
     2536case 135:
     2537YY_RULE_SETUP
     2538#line 317 "lex.ll"
    25432539{ ASCIIOP_RETURN(); }                                   // also operator
    25442540        YY_BREAK
    2545 case 135:
    2546 YY_RULE_SETUP
    2547 #line 317 "lex.ll"
     2541case 136:
     2542YY_RULE_SETUP
     2543#line 318 "lex.ll"
     2544{ NAMEDOP_RETURN(ELLIPSIS); }
     2545        YY_BREAK
     2546/* alternative C99 brackets, "<:" & "<:<:" handled by preprocessor */
     2547case 137:
     2548YY_RULE_SETUP
     2549#line 321 "lex.ll"
     2550{ RETURN_VAL('['); }
     2551        YY_BREAK
     2552case 138:
     2553YY_RULE_SETUP
     2554#line 322 "lex.ll"
     2555{ RETURN_VAL(']'); }
     2556        YY_BREAK
     2557case 139:
     2558YY_RULE_SETUP
     2559#line 323 "lex.ll"
     2560{ RETURN_VAL('{'); }
     2561        YY_BREAK
     2562case 140:
     2563YY_RULE_SETUP
     2564#line 324 "lex.ll"
     2565{ RETURN_VAL('}'); }
     2566        YY_BREAK
     2567/* operators */
     2568case 141:
     2569YY_RULE_SETUP
     2570#line 327 "lex.ll"
    25482571{ ASCIIOP_RETURN(); }
    25492572        YY_BREAK
    2550 case 136:
    2551 YY_RULE_SETUP
    2552 #line 318 "lex.ll"
     2573case 142:
     2574YY_RULE_SETUP
     2575#line 328 "lex.ll"
    25532576{ ASCIIOP_RETURN(); }
    25542577        YY_BREAK
    2555 case 137:
    2556 YY_RULE_SETUP
    2557 #line 319 "lex.ll"
    2558 { ASCIIOP_RETURN(); }                                   // also operator
    2559         YY_BREAK
    2560 case 138:
    2561 YY_RULE_SETUP
    2562 #line 320 "lex.ll"
    2563 { NAMEDOP_RETURN(ELLIPSIS); }
    2564         YY_BREAK
    2565 /* alternative C99 brackets, "<:" & "<:<:" handled by preprocessor */
    2566 case 139:
    2567 YY_RULE_SETUP
    2568 #line 323 "lex.ll"
    2569 { RETURN_VAL('['); }
    2570         YY_BREAK
    2571 case 140:
    2572 YY_RULE_SETUP
    2573 #line 324 "lex.ll"
    2574 { RETURN_VAL(']'); }
    2575         YY_BREAK
    2576 case 141:
    2577 YY_RULE_SETUP
    2578 #line 325 "lex.ll"
    2579 { RETURN_VAL('{'); }
    2580         YY_BREAK
    2581 case 142:
    2582 YY_RULE_SETUP
    2583 #line 326 "lex.ll"
    2584 { RETURN_VAL('}'); }
    2585         YY_BREAK
    2586 /* operators */
    25872578case 143:
    25882579YY_RULE_SETUP
     
    26472638case 155:
    26482639YY_RULE_SETUP
    2649 #line 341 "lex.ll"
    2650 { ASCIIOP_RETURN(); }
     2640#line 342 "lex.ll"
     2641{ NAMEDOP_RETURN(ICR); }
    26512642        YY_BREAK
    26522643case 156:
    26532644YY_RULE_SETUP
    2654 #line 342 "lex.ll"
    2655 { ASCIIOP_RETURN(); }
     2645#line 343 "lex.ll"
     2646{ NAMEDOP_RETURN(DECR); }
    26562647        YY_BREAK
    26572648case 157:
    26582649YY_RULE_SETUP
    26592650#line 344 "lex.ll"
    2660 { NAMEDOP_RETURN(ICR); }
     2651{ NAMEDOP_RETURN(EQ); }
    26612652        YY_BREAK
    26622653case 158:
    26632654YY_RULE_SETUP
    26642655#line 345 "lex.ll"
    2665 { NAMEDOP_RETURN(DECR); }
     2656{ NAMEDOP_RETURN(NE); }
    26662657        YY_BREAK
    26672658case 159:
    26682659YY_RULE_SETUP
    26692660#line 346 "lex.ll"
    2670 { NAMEDOP_RETURN(EQ); }
     2661{ NAMEDOP_RETURN(LS); }
    26712662        YY_BREAK
    26722663case 160:
    26732664YY_RULE_SETUP
    26742665#line 347 "lex.ll"
    2675 { NAMEDOP_RETURN(NE); }
     2666{ NAMEDOP_RETURN(RS); }
    26762667        YY_BREAK
    26772668case 161:
    26782669YY_RULE_SETUP
    26792670#line 348 "lex.ll"
    2680 { NAMEDOP_RETURN(LS); }
     2671{ NAMEDOP_RETURN(LE); }
    26812672        YY_BREAK
    26822673case 162:
    26832674YY_RULE_SETUP
    26842675#line 349 "lex.ll"
    2685 { NAMEDOP_RETURN(RS); }
     2676{ NAMEDOP_RETURN(GE); }
    26862677        YY_BREAK
    26872678case 163:
    26882679YY_RULE_SETUP
    26892680#line 350 "lex.ll"
    2690 { NAMEDOP_RETURN(LE); }
     2681{ NAMEDOP_RETURN(ANDAND); }
    26912682        YY_BREAK
    26922683case 164:
    26932684YY_RULE_SETUP
    26942685#line 351 "lex.ll"
    2695 { NAMEDOP_RETURN(GE); }
     2686{ NAMEDOP_RETURN(OROR); }
    26962687        YY_BREAK
    26972688case 165:
    26982689YY_RULE_SETUP
    26992690#line 352 "lex.ll"
    2700 { NAMEDOP_RETURN(ANDAND); }
     2691{ NAMEDOP_RETURN(ARROW); }
    27012692        YY_BREAK
    27022693case 166:
    27032694YY_RULE_SETUP
    27042695#line 353 "lex.ll"
    2705 { NAMEDOP_RETURN(OROR); }
     2696{ NAMEDOP_RETURN(PLUSassign); }
    27062697        YY_BREAK
    27072698case 167:
    27082699YY_RULE_SETUP
    27092700#line 354 "lex.ll"
    2710 { NAMEDOP_RETURN(ARROW); }
     2701{ NAMEDOP_RETURN(MINUSassign); }
    27112702        YY_BREAK
    27122703case 168:
    27132704YY_RULE_SETUP
    27142705#line 355 "lex.ll"
    2715 { NAMEDOP_RETURN(PLUSassign); }
     2706{ NAMEDOP_RETURN(MULTassign); }
    27162707        YY_BREAK
    27172708case 169:
    27182709YY_RULE_SETUP
    27192710#line 356 "lex.ll"
    2720 { NAMEDOP_RETURN(MINUSassign); }
     2711{ NAMEDOP_RETURN(DIVassign); }
    27212712        YY_BREAK
    27222713case 170:
    27232714YY_RULE_SETUP
    27242715#line 357 "lex.ll"
    2725 { NAMEDOP_RETURN(MULTassign); }
     2716{ NAMEDOP_RETURN(MODassign); }
    27262717        YY_BREAK
    27272718case 171:
    27282719YY_RULE_SETUP
    27292720#line 358 "lex.ll"
    2730 { NAMEDOP_RETURN(DIVassign); }
     2721{ NAMEDOP_RETURN(ANDassign); }
    27312722        YY_BREAK
    27322723case 172:
    27332724YY_RULE_SETUP
    27342725#line 359 "lex.ll"
    2735 { NAMEDOP_RETURN(MODassign); }
     2726{ NAMEDOP_RETURN(ORassign); }
    27362727        YY_BREAK
    27372728case 173:
    27382729YY_RULE_SETUP
    27392730#line 360 "lex.ll"
    2740 { NAMEDOP_RETURN(ANDassign); }
     2731{ NAMEDOP_RETURN(ERassign); }
    27412732        YY_BREAK
    27422733case 174:
    27432734YY_RULE_SETUP
    27442735#line 361 "lex.ll"
    2745 { NAMEDOP_RETURN(ORassign); }
     2736{ NAMEDOP_RETURN(LSassign); }
    27462737        YY_BREAK
    27472738case 175:
    27482739YY_RULE_SETUP
    27492740#line 362 "lex.ll"
    2750 { NAMEDOP_RETURN(ERassign); }
     2741{ NAMEDOP_RETURN(RSassign); }
    27512742        YY_BREAK
    27522743case 176:
    27532744YY_RULE_SETUP
    2754 #line 363 "lex.ll"
    2755 { NAMEDOP_RETURN(LSassign); }
    2756         YY_BREAK
     2745#line 364 "lex.ll"
     2746{ NAMEDOP_RETURN(ATassign); }                   // CFA
     2747        YY_BREAK
     2748/* CFA, operator identifier */
    27572749case 177:
    27582750YY_RULE_SETUP
    2759 #line 364 "lex.ll"
    2760 { NAMEDOP_RETURN(RSassign); }
     2751#line 367 "lex.ll"
     2752{ IDENTIFIER_RETURN(); }                                // unary
    27612753        YY_BREAK
    27622754case 178:
    27632755YY_RULE_SETUP
    2764 #line 366 "lex.ll"
    2765 { NAMEDOP_RETURN(ATassign); }                   // CFA
    2766         YY_BREAK
    2767 /* CFA, operator identifier */
     2756#line 368 "lex.ll"
     2757{ IDENTIFIER_RETURN(); }
     2758        YY_BREAK
    27682759case 179:
    27692760YY_RULE_SETUP
    27702761#line 369 "lex.ll"
    2771 { IDENTIFIER_RETURN(); }                                // unary
     2762{ IDENTIFIER_RETURN(); }
    27722763        YY_BREAK
    27732764case 180:
    27742765YY_RULE_SETUP
    27752766#line 370 "lex.ll"
    2776 { IDENTIFIER_RETURN(); }
    2777         YY_BREAK
    2778 case 181:
    2779 YY_RULE_SETUP
    2780 #line 371 "lex.ll"
    2781 { IDENTIFIER_RETURN(); }
    2782         YY_BREAK
    2783 case 182:
    2784 YY_RULE_SETUP
    2785 #line 372 "lex.ll"
    27862767{ IDENTIFIER_RETURN(); }                // binary
    27872768        YY_BREAK
     
    28122793          an argument list.
    28132794        */
    2814 case 183:
    2815 YY_RULE_SETUP
    2816 #line 399 "lex.ll"
     2795case 181:
     2796YY_RULE_SETUP
     2797#line 397 "lex.ll"
    28172798{
    28182799        // 1 or 2 character unary operator ?
     
    28272808        YY_BREAK
    28282809/* unknown characters */
    2829 case 184:
     2810case 182:
     2811YY_RULE_SETUP
     2812#line 409 "lex.ll"
     2813{ printf("unknown character(s):\"%s\" on line %d\n", yytext, yylineno); }
     2814        YY_BREAK
     2815case 183:
    28302816YY_RULE_SETUP
    28312817#line 411 "lex.ll"
    2832 { printf("unknown character(s):\"%s\" on line %d\n", yytext, yylineno); }
    2833         YY_BREAK
    2834 case 185:
    2835 YY_RULE_SETUP
    2836 #line 413 "lex.ll"
    28372818ECHO;
    28382819        YY_BREAK
    2839 #line 2840 "Parser/lex.cc"
     2820#line 2821 "Parser/lex.cc"
    28402821case YY_STATE_EOF(INITIAL):
    28412822case YY_STATE_EOF(COMMENT):
     
    31343115                        {
    31353116                        yy_current_state = (int) yy_def[yy_current_state];
    3136                         if ( yy_current_state >= 905 )
     3117                        if ( yy_current_state >= 895 )
    31373118                                yy_c = yy_meta[(unsigned int) yy_c];
    31383119                        }
     
    31623143                {
    31633144                yy_current_state = (int) yy_def[yy_current_state];
    3164                 if ( yy_current_state >= 905 )
     3145                if ( yy_current_state >= 895 )
    31653146                        yy_c = yy_meta[(unsigned int) yy_c];
    31663147                }
    31673148        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
    3168         yy_is_jam = (yy_current_state == 904);
     3149        yy_is_jam = (yy_current_state == 894);
    31693150
    31703151        return yy_is_jam ? 0 : yy_current_state;
     
    38123793#define YYTABLES_NAME "yytables"
    38133794
    3814 #line 413 "lex.ll"
     3795#line 411 "lex.ll"
    38153796
    38163797
  • src/Parser/lex.ll

    r66f8528 r5802a4f  
    1010 * Created On       : Sat Sep 22 08:58:10 2001
    1111 * Last Modified By : Peter A. Buhr
    12  * Last Modified On : Tue Nov 29 11:32:00 2016
    13  * Update Count     : 501
     12 * Last Modified On : Wed Oct 26 17:32:30 2016
     13 * Update Count     : 499
    1414 */
    1515
     
    237237_Noreturn               { KEYWORD_RETURN(NORETURN); }                   // C11
    238238__builtin_offsetof { KEYWORD_RETURN(OFFSETOF); }                // GCC
    239 one_t                   { NUMERIC_RETURN(ONE_T); }                              // CFA
    240239otype                   { KEYWORD_RETURN(OTYPE); }                              // CFA
    241240register                { KEYWORD_RETURN(REGISTER); }
     
    270269__volatile__    { KEYWORD_RETURN(VOLATILE); }                   // GCC
    271270while                   { KEYWORD_RETURN(WHILE); }
    272 zero_t                  { NUMERIC_RETURN(ZERO_T); }                             // CFA
    273271
    274272                                /* identifier */
  • src/Parser/parser.cc

    r66f8528 r5802a4f  
    145145     SIGNED = 277,
    146146     UNSIGNED = 278,
    147      ZERO_T = 279,
    148      ONE_T = 280,
    149      VALIST = 281,
    150      BOOL = 282,
    151      COMPLEX = 283,
    152      IMAGINARY = 284,
    153      TYPEOF = 285,
    154      LABEL = 286,
    155      ENUM = 287,
    156      STRUCT = 288,
    157      UNION = 289,
    158      OTYPE = 290,
    159      FTYPE = 291,
    160      DTYPE = 292,
    161      TRAIT = 293,
    162      SIZEOF = 294,
    163      OFFSETOF = 295,
    164      ATTRIBUTE = 296,
    165      EXTENSION = 297,
    166      IF = 298,
    167      ELSE = 299,
    168      SWITCH = 300,
    169      CASE = 301,
    170      DEFAULT = 302,
    171      DO = 303,
    172      WHILE = 304,
    173      FOR = 305,
    174      BREAK = 306,
    175      CONTINUE = 307,
    176      GOTO = 308,
    177      RETURN = 309,
    178      CHOOSE = 310,
    179      DISABLE = 311,
    180      ENABLE = 312,
    181      FALLTHRU = 313,
    182      TRY = 314,
    183      CATCH = 315,
    184      CATCHRESUME = 316,
    185      FINALLY = 317,
    186      THROW = 318,
    187      THROWRESUME = 319,
    188      AT = 320,
    189      ASM = 321,
    190      ALIGNAS = 322,
    191      ALIGNOF = 323,
    192      ATOMIC = 324,
    193      GENERIC = 325,
    194      NORETURN = 326,
    195      STATICASSERT = 327,
    196      THREADLOCAL = 328,
    197      IDENTIFIER = 329,
    198      QUOTED_IDENTIFIER = 330,
    199      TYPEDEFname = 331,
    200      TYPEGENname = 332,
    201      ATTR_IDENTIFIER = 333,
    202      ATTR_TYPEDEFname = 334,
    203      ATTR_TYPEGENname = 335,
    204      INTEGERconstant = 336,
    205      CHARACTERconstant = 337,
    206      STRINGliteral = 338,
    207      REALDECIMALconstant = 339,
    208      REALFRACTIONconstant = 340,
    209      FLOATINGconstant = 341,
    210      ZERO = 342,
    211      ONE = 343,
    212      ARROW = 344,
    213      ICR = 345,
    214      DECR = 346,
    215      LS = 347,
    216      RS = 348,
    217      LE = 349,
    218      GE = 350,
    219      EQ = 351,
    220      NE = 352,
    221      ANDAND = 353,
    222      OROR = 354,
    223      ELLIPSIS = 355,
    224      MULTassign = 356,
    225      DIVassign = 357,
    226      MODassign = 358,
    227      PLUSassign = 359,
    228      MINUSassign = 360,
    229      LSassign = 361,
    230      RSassign = 362,
    231      ANDassign = 363,
    232      ERassign = 364,
    233      ORassign = 365,
    234      ATassign = 366,
    235      THEN = 367
     147     VALIST = 279,
     148     BOOL = 280,
     149     COMPLEX = 281,
     150     IMAGINARY = 282,
     151     TYPEOF = 283,
     152     LABEL = 284,
     153     ENUM = 285,
     154     STRUCT = 286,
     155     UNION = 287,
     156     OTYPE = 288,
     157     FTYPE = 289,
     158     DTYPE = 290,
     159     TRAIT = 291,
     160     SIZEOF = 292,
     161     OFFSETOF = 293,
     162     ATTRIBUTE = 294,
     163     EXTENSION = 295,
     164     IF = 296,
     165     ELSE = 297,
     166     SWITCH = 298,
     167     CASE = 299,
     168     DEFAULT = 300,
     169     DO = 301,
     170     WHILE = 302,
     171     FOR = 303,
     172     BREAK = 304,
     173     CONTINUE = 305,
     174     GOTO = 306,
     175     RETURN = 307,
     176     CHOOSE = 308,
     177     DISABLE = 309,
     178     ENABLE = 310,
     179     FALLTHRU = 311,
     180     TRY = 312,
     181     CATCH = 313,
     182     CATCHRESUME = 314,
     183     FINALLY = 315,
     184     THROW = 316,
     185     THROWRESUME = 317,
     186     AT = 318,
     187     ASM = 319,
     188     ALIGNAS = 320,
     189     ALIGNOF = 321,
     190     ATOMIC = 322,
     191     GENERIC = 323,
     192     NORETURN = 324,
     193     STATICASSERT = 325,
     194     THREADLOCAL = 326,
     195     IDENTIFIER = 327,
     196     QUOTED_IDENTIFIER = 328,
     197     TYPEDEFname = 329,
     198     TYPEGENname = 330,
     199     ATTR_IDENTIFIER = 331,
     200     ATTR_TYPEDEFname = 332,
     201     ATTR_TYPEGENname = 333,
     202     INTEGERconstant = 334,
     203     CHARACTERconstant = 335,
     204     STRINGliteral = 336,
     205     REALDECIMALconstant = 337,
     206     REALFRACTIONconstant = 338,
     207     FLOATINGconstant = 339,
     208     ZERO = 340,
     209     ONE = 341,
     210     ARROW = 342,
     211     ICR = 343,
     212     DECR = 344,
     213     LS = 345,
     214     RS = 346,
     215     LE = 347,
     216     GE = 348,
     217     EQ = 349,
     218     NE = 350,
     219     ANDAND = 351,
     220     OROR = 352,
     221     ELLIPSIS = 353,
     222     MULTassign = 354,
     223     DIVassign = 355,
     224     MODassign = 356,
     225     PLUSassign = 357,
     226     MINUSassign = 358,
     227     LSassign = 359,
     228     RSassign = 360,
     229     ANDassign = 361,
     230     ERassign = 362,
     231     ORassign = 363,
     232     ATassign = 364,
     233     THEN = 365
    236234   };
    237235#endif
     
    258256#define SIGNED 277
    259257#define UNSIGNED 278
    260 #define ZERO_T 279
    261 #define ONE_T 280
    262 #define VALIST 281
    263 #define BOOL 282
    264 #define COMPLEX 283
    265 #define IMAGINARY 284
    266 #define TYPEOF 285
    267 #define LABEL 286
    268 #define ENUM 287
    269 #define STRUCT 288
    270 #define UNION 289
    271 #define OTYPE 290
    272 #define FTYPE 291
    273 #define DTYPE 292
    274 #define TRAIT 293
    275 #define SIZEOF 294
    276 #define OFFSETOF 295
    277 #define ATTRIBUTE 296
    278 #define EXTENSION 297
    279 #define IF 298
    280 #define ELSE 299
    281 #define SWITCH 300
    282 #define CASE 301
    283 #define DEFAULT 302
    284 #define DO 303
    285 #define WHILE 304
    286 #define FOR 305
    287 #define BREAK 306
    288 #define CONTINUE 307
    289 #define GOTO 308
    290 #define RETURN 309
    291 #define CHOOSE 310
    292 #define DISABLE 311
    293 #define ENABLE 312
    294 #define FALLTHRU 313
    295 #define TRY 314
    296 #define CATCH 315
    297 #define CATCHRESUME 316
    298 #define FINALLY 317
    299 #define THROW 318
    300 #define THROWRESUME 319
    301 #define AT 320
    302 #define ASM 321
    303 #define ALIGNAS 322
    304 #define ALIGNOF 323
    305 #define ATOMIC 324
    306 #define GENERIC 325
    307 #define NORETURN 326
    308 #define STATICASSERT 327
    309 #define THREADLOCAL 328
    310 #define IDENTIFIER 329
    311 #define QUOTED_IDENTIFIER 330
    312 #define TYPEDEFname 331
    313 #define TYPEGENname 332
    314 #define ATTR_IDENTIFIER 333
    315 #define ATTR_TYPEDEFname 334
    316 #define ATTR_TYPEGENname 335
    317 #define INTEGERconstant 336
    318 #define CHARACTERconstant 337
    319 #define STRINGliteral 338
    320 #define REALDECIMALconstant 339
    321 #define REALFRACTIONconstant 340
    322 #define FLOATINGconstant 341
    323 #define ZERO 342
    324 #define ONE 343
    325 #define ARROW 344
    326 #define ICR 345
    327 #define DECR 346
    328 #define LS 347
    329 #define RS 348
    330 #define LE 349
    331 #define GE 350
    332 #define EQ 351
    333 #define NE 352
    334 #define ANDAND 353
    335 #define OROR 354
    336 #define ELLIPSIS 355
    337 #define MULTassign 356
    338 #define DIVassign 357
    339 #define MODassign 358
    340 #define PLUSassign 359
    341 #define MINUSassign 360
    342 #define LSassign 361
    343 #define RSassign 362
    344 #define ANDassign 363
    345 #define ERassign 364
    346 #define ORassign 365
    347 #define ATassign 366
    348 #define THEN 367
     258#define VALIST 279
     259#define BOOL 280
     260#define COMPLEX 281
     261#define IMAGINARY 282
     262#define TYPEOF 283
     263#define LABEL 284
     264#define ENUM 285
     265#define STRUCT 286
     266#define UNION 287
     267#define OTYPE 288
     268#define FTYPE 289
     269#define DTYPE 290
     270#define TRAIT 291
     271#define SIZEOF 292
     272#define OFFSETOF 293
     273#define ATTRIBUTE 294
     274#define EXTENSION 295
     275#define IF 296
     276#define ELSE 297
     277#define SWITCH 298
     278#define CASE 299
     279#define DEFAULT 300
     280#define DO 301
     281#define WHILE 302
     282#define FOR 303
     283#define BREAK 304
     284#define CONTINUE 305
     285#define GOTO 306
     286#define RETURN 307
     287#define CHOOSE 308
     288#define DISABLE 309
     289#define ENABLE 310
     290#define FALLTHRU 311
     291#define TRY 312
     292#define CATCH 313
     293#define CATCHRESUME 314
     294#define FINALLY 315
     295#define THROW 316
     296#define THROWRESUME 317
     297#define AT 318
     298#define ASM 319
     299#define ALIGNAS 320
     300#define ALIGNOF 321
     301#define ATOMIC 322
     302#define GENERIC 323
     303#define NORETURN 324
     304#define STATICASSERT 325
     305#define THREADLOCAL 326
     306#define IDENTIFIER 327
     307#define QUOTED_IDENTIFIER 328
     308#define TYPEDEFname 329
     309#define TYPEGENname 330
     310#define ATTR_IDENTIFIER 331
     311#define ATTR_TYPEDEFname 332
     312#define ATTR_TYPEGENname 333
     313#define INTEGERconstant 334
     314#define CHARACTERconstant 335
     315#define STRINGliteral 336
     316#define REALDECIMALconstant 337
     317#define REALFRACTIONconstant 338
     318#define FLOATINGconstant 339
     319#define ZERO 340
     320#define ONE 341
     321#define ARROW 342
     322#define ICR 343
     323#define DECR 344
     324#define LS 345
     325#define RS 346
     326#define LE 347
     327#define GE 348
     328#define EQ 349
     329#define NE 350
     330#define ANDAND 351
     331#define OROR 352
     332#define ELLIPSIS 353
     333#define MULTassign 354
     334#define DIVassign 355
     335#define MODassign 356
     336#define PLUSassign 357
     337#define MINUSassign 358
     338#define LSassign 359
     339#define RSassign 360
     340#define ANDassign 361
     341#define ERassign 362
     342#define ORassign 363
     343#define ATassign 364
     344#define THEN 365
    349345
    350346
     
    376372
    377373/* Line 293 of yacc.c  */
    378 #line 379 "Parser/parser.cc"
     374#line 375 "Parser/parser.cc"
    379375} YYSTYPE;
    380376# define YYSTYPE_IS_TRIVIAL 1
     
    388384
    389385/* Line 343 of yacc.c  */
    390 #line 391 "Parser/parser.cc"
     386#line 387 "Parser/parser.cc"
    391387
    392388#ifdef short
     
    605601
    606602/* YYFINAL -- State number of the termination state.  */
    607 #define YYFINAL  251
     603#define YYFINAL  249
    608604/* YYLAST -- Last index in YYTABLE.  */
    609 #define YYLAST   10624
     605#define YYLAST   10266
    610606
    611607/* YYNTOKENS -- Number of terminals.  */
    612 #define YYNTOKENS  137
     608#define YYNTOKENS  135
    613609/* YYNNTS -- Number of nonterminals.  */
    614610#define YYNNTS  243
    615611/* YYNRULES -- Number of rules.  */
    616 #define YYNRULES  757
     612#define YYNRULES  755
    617613/* YYNRULES -- Number of states.  */
    618 #define YYNSTATES  1540
     614#define YYNSTATES  1538
    619615
    620616/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
    621617#define YYUNDEFTOK  2
    622 #define YYMAXUTOK   367
     618#define YYMAXUTOK   365
    623619
    624620#define YYTRANSLATE(YYX)                                                \
     
    631627       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    632628       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    633        2,     2,     2,   125,     2,     2,     2,   128,   122,     2,
    634      113,   114,   121,   123,   120,   124,   117,   127,     2,     2,
    635        2,     2,     2,     2,     2,     2,     2,     2,   134,   136,
    636      129,   135,   130,   133,     2,     2,     2,     2,     2,     2,
     629       2,     2,     2,   123,     2,     2,     2,   126,   120,     2,
     630     111,   112,   119,   121,   118,   122,   115,   125,     2,     2,
     631       2,     2,     2,     2,     2,     2,     2,     2,   132,   134,
     632     127,   133,   128,   131,     2,     2,     2,     2,     2,     2,
    637633       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    638634       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    639        2,   115,     2,   116,   131,     2,     2,     2,     2,     2,
     635       2,   113,     2,   114,   129,     2,     2,     2,     2,     2,
    640636       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    641637       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    642        2,     2,     2,   118,   132,   119,   126,     2,     2,     2,
     638       2,     2,     2,   116,   130,   117,   124,     2,     2,     2,
    643639       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    644640       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     
    664660      85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
    665661      95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
    666      105,   106,   107,   108,   109,   110,   111,   112
     662     105,   106,   107,   108,   109,   110
    667663};
    668664
     
    705701    1119,  1125,  1127,  1130,  1134,  1136,  1139,  1141,  1143,  1145,
    706702    1147,  1149,  1151,  1153,  1155,  1157,  1159,  1161,  1163,  1165,
    707     1167,  1169,  1171,  1173,  1175,  1177,  1179,  1181,  1183,  1185,
    708     1187,  1190,  1193,  1197,  1201,  1203,  1207,  1209,  1212,  1215,
    709     1218,  1223,  1228,  1233,  1238,  1240,  1243,  1246,  1250,  1252,
    710     1255,  1258,  1260,  1263,  1266,  1270,  1272,  1275,  1278,  1280,
    711     1282,  1287,  1290,  1291,  1298,  1306,  1309,  1312,  1315,  1316,
    712     1319,  1322,  1326,  1329,  1333,  1335,  1338,  1342,  1345,  1348,
    713     1353,  1354,  1356,  1359,  1362,  1364,  1365,  1367,  1370,  1373,
    714     1379,  1382,  1383,  1391,  1394,  1399,  1400,  1403,  1404,  1406,
    715     1408,  1410,  1416,  1422,  1428,  1430,  1436,  1442,  1452,  1454,
    716     1460,  1461,  1463,  1465,  1471,  1473,  1475,  1481,  1487,  1489,
    717     1493,  1497,  1502,  1504,  1506,  1508,  1510,  1513,  1515,  1519,
    718     1523,  1525,  1528,  1530,  1534,  1536,  1538,  1540,  1542,  1544,
    719     1546,  1548,  1550,  1552,  1554,  1556,  1559,  1561,  1563,  1565,
    720     1568,  1569,  1572,  1575,  1577,  1582,  1583,  1585,  1588,  1592,
    721     1597,  1600,  1603,  1605,  1608,  1611,  1617,  1623,  1631,  1638,
    722     1640,  1643,  1646,  1650,  1652,  1655,  1658,  1663,  1666,  1671,
    723     1672,  1677,  1680,  1682,  1684,  1686,  1687,  1690,  1696,  1702,
    724     1716,  1718,  1720,  1724,  1728,  1731,  1735,  1739,  1742,  1747,
    725     1749,  1756,  1766,  1767,  1779,  1781,  1785,  1789,  1793,  1795,
    726     1797,  1803,  1806,  1812,  1813,  1815,  1817,  1821,  1822,  1824,
    727     1826,  1828,  1830,  1831,  1838,  1841,  1843,  1846,  1851,  1854,
    728     1858,  1862,  1866,  1871,  1877,  1883,  1889,  1896,  1898,  1900,
    729     1902,  1906,  1907,  1913,  1914,  1916,  1918,  1921,  1928,  1930,
    730     1934,  1935,  1937,  1942,  1944,  1946,  1948,  1950,  1953,  1955,
    731     1958,  1961,  1963,  1967,  1970,  1974,  1978,  1981,  1986,  1991,
    732     1995,  2004,  2008,  2011,  2013,  2016,  2023,  2032,  2036,  2039,
    733     2043,  2047,  2052,  2057,  2061,  2063,  2065,  2067,  2072,  2079,
    734     2083,  2086,  2090,  2094,  2099,  2104,  2108,  2111,  2113,  2116,
    735     2119,  2121,  2125,  2128,  2132,  2136,  2139,  2144,  2149,  2153,
    736     2160,  2169,  2173,  2176,  2178,  2181,  2184,  2187,  2191,  2195,
    737     2198,  2203,  2208,  2212,  2219,  2228,  2232,  2235,  2237,  2240,
    738     2243,  2245,  2247,  2250,  2254,  2258,  2261,  2266,  2273,  2282,
    739     2284,  2287,  2290,  2292,  2295,  2298,  2302,  2306,  2308,  2313,
    740     2318,  2322,  2328,  2337,  2341,  2344,  2348,  2350,  2356,  2362,
    741     2369,  2376,  2378,  2381,  2384,  2386,  2389,  2392,  2396,  2400,
    742     2402,  2407,  2412,  2416,  2422,  2431,  2435,  2437,  2440,  2442,
    743     2445,  2452,  2458,  2465,  2473,  2481,  2483,  2486,  2489,  2491,
    744     2494,  2497,  2501,  2505,  2507,  2512,  2517,  2521,  2530,  2534,
    745     2536,  2538,  2541,  2543,  2545,  2548,  2552,  2555,  2559,  2562,
    746     2566,  2570,  2573,  2578,  2582,  2585,  2589,  2592,  2597,  2601,
    747     2604,  2611,  2618,  2625,  2633,  2635,  2638,  2640,  2642,  2644,
    748     2647,  2651,  2654,  2658,  2661,  2665,  2669,  2674,  2677,  2681,
    749     2686,  2689,  2695,  2702,  2709,  2710,  2712,  2713
     703    1167,  1169,  1171,  1173,  1175,  1177,  1179,  1181,  1183,  1186,
     704    1189,  1193,  1197,  1199,  1203,  1205,  1208,  1211,  1214,  1219,
     705    1224,  1229,  1234,  1236,  1239,  1242,  1246,  1248,  1251,  1254,
     706    1256,  1259,  1262,  1266,  1268,  1271,  1274,  1276,  1278,  1283,
     707    1286,  1287,  1294,  1302,  1305,  1308,  1311,  1312,  1315,  1318,
     708    1322,  1325,  1329,  1331,  1334,  1338,  1341,  1344,  1349,  1350,
     709    1352,  1355,  1358,  1360,  1361,  1363,  1366,  1369,  1375,  1378,
     710    1379,  1387,  1390,  1395,  1396,  1399,  1400,  1402,  1404,  1406,
     711    1412,  1418,  1424,  1426,  1432,  1438,  1448,  1450,  1456,  1457,
     712    1459,  1461,  1467,  1469,  1471,  1477,  1483,  1485,  1489,  1493,
     713    1498,  1500,  1502,  1504,  1506,  1509,  1511,  1515,  1519,  1521,
     714    1524,  1526,  1530,  1532,  1534,  1536,  1538,  1540,  1542,  1544,
     715    1546,  1548,  1550,  1552,  1555,  1557,  1559,  1561,  1564,  1565,
     716    1568,  1571,  1573,  1578,  1579,  1581,  1584,  1588,  1593,  1596,
     717    1599,  1601,  1604,  1607,  1613,  1619,  1627,  1634,  1636,  1639,
     718    1642,  1646,  1648,  1651,  1654,  1659,  1662,  1667,  1668,  1673,
     719    1676,  1678,  1680,  1682,  1683,  1686,  1692,  1698,  1712,  1714,
     720    1716,  1720,  1724,  1727,  1731,  1735,  1738,  1743,  1745,  1752,
     721    1762,  1763,  1775,  1777,  1781,  1785,  1789,  1791,  1793,  1799,
     722    1802,  1808,  1809,  1811,  1813,  1817,  1818,  1820,  1822,  1824,
     723    1826,  1827,  1834,  1837,  1839,  1842,  1847,  1850,  1854,  1858,
     724    1862,  1867,  1873,  1879,  1885,  1892,  1894,  1896,  1898,  1902,
     725    1903,  1909,  1910,  1912,  1914,  1917,  1924,  1926,  1930,  1931,
     726    1933,  1938,  1940,  1942,  1944,  1946,  1949,  1951,  1954,  1957,
     727    1959,  1963,  1966,  1970,  1974,  1977,  1982,  1987,  1991,  2000,
     728    2004,  2007,  2009,  2012,  2019,  2028,  2032,  2035,  2039,  2043,
     729    2048,  2053,  2057,  2059,  2061,  2063,  2068,  2075,  2079,  2082,
     730    2086,  2090,  2095,  2100,  2104,  2107,  2109,  2112,  2115,  2117,
     731    2121,  2124,  2128,  2132,  2135,  2140,  2145,  2149,  2156,  2165,
     732    2169,  2172,  2174,  2177,  2180,  2183,  2187,  2191,  2194,  2199,
     733    2204,  2208,  2215,  2224,  2228,  2231,  2233,  2236,  2239,  2241,
     734    2243,  2246,  2250,  2254,  2257,  2262,  2269,  2278,  2280,  2283,
     735    2286,  2288,  2291,  2294,  2298,  2302,  2304,  2309,  2314,  2318,
     736    2324,  2333,  2337,  2340,  2344,  2346,  2352,  2358,  2365,  2372,
     737    2374,  2377,  2380,  2382,  2385,  2388,  2392,  2396,  2398,  2403,
     738    2408,  2412,  2418,  2427,  2431,  2433,  2436,  2438,  2441,  2448,
     739    2454,  2461,  2469,  2477,  2479,  2482,  2485,  2487,  2490,  2493,
     740    2497,  2501,  2503,  2508,  2513,  2517,  2526,  2530,  2532,  2534,
     741    2537,  2539,  2541,  2544,  2548,  2551,  2555,  2558,  2562,  2566,
     742    2569,  2574,  2578,  2581,  2585,  2588,  2593,  2597,  2600,  2607,
     743    2614,  2621,  2629,  2631,  2634,  2636,  2638,  2640,  2643,  2647,
     744    2650,  2654,  2657,  2661,  2665,  2670,  2673,  2677,  2682,  2685,
     745    2691,  2698,  2705,  2706,  2708,  2709
    750746};
    751747
     
    753749static const yytype_int16 yyrhs[] =
    754750{
    755      308,     0,    -1,    -1,    -1,    81,    -1,    84,    -1,    85,
    756       -1,    86,    -1,    82,    -1,    74,    -1,    78,    -1,   144,
    757       -1,    74,    -1,    78,    -1,    74,    -1,   144,    -1,    87,
    758       -1,    88,    -1,   146,    -1,    83,    -1,   146,    83,    -1,
    759       74,    -1,   144,    -1,   174,    -1,   113,   176,   114,    -1,
    760      113,   180,   114,    -1,   147,    -1,   148,   115,   138,   171,
    761      139,   116,    -1,   148,   113,   149,   114,    -1,   148,   117,
    762      143,    -1,   148,   117,   115,   138,   151,   139,   116,    -1,
    763      148,    85,    -1,   148,    89,   143,    -1,   148,    89,   115,
    764      138,   151,   139,   116,    -1,   148,    90,    -1,   148,    91,
    765       -1,   113,   281,   114,   118,   285,   378,   119,    -1,   148,
    766      118,   149,   119,    -1,   150,    -1,   149,   120,   150,    -1,
    767       -1,   171,    -1,   152,    -1,   151,   120,   152,    -1,   153,
    768       -1,    84,   152,    -1,    84,   115,   138,   151,   139,   116,
    769       -1,   153,   117,   152,    -1,   153,   117,   115,   138,   151,
    770      139,   116,    -1,   153,    89,   152,    -1,   153,    89,   115,
    771      138,   151,   139,   116,    -1,    81,   154,    -1,    86,   154,
    772       -1,   143,   154,    -1,    -1,   154,    85,    -1,   148,    -1,
    773      140,    -1,   145,    -1,    42,   158,    -1,   156,   158,    -1,
    774      157,   158,    -1,    90,   155,    -1,    91,   155,    -1,    39,
    775      155,    -1,    39,   113,   281,   114,    -1,    68,   155,    -1,
    776       68,   113,   281,   114,    -1,    40,   113,   281,   120,   143,
    777      114,    -1,    78,    -1,    78,   113,   150,   114,    -1,    78,
    778      113,   282,   114,    -1,   121,    -1,   122,    -1,   123,    -1,
    779      124,    -1,   125,    -1,   126,    -1,   155,    -1,   113,   281,
    780      114,   158,    -1,   158,    -1,   159,   121,   158,    -1,   159,
    781      127,   158,    -1,   159,   128,   158,    -1,   159,    -1,   160,
    782      123,   159,    -1,   160,   124,   159,    -1,   160,    -1,   161,
    783       92,   160,    -1,   161,    93,   160,    -1,   161,    -1,   162,
    784      129,   161,    -1,   162,   130,   161,    -1,   162,    94,   161,
    785       -1,   162,    95,   161,    -1,   162,    -1,   163,    96,   162,
    786       -1,   163,    97,   162,    -1,   163,    -1,   164,   122,   163,
    787       -1,   164,    -1,   165,   131,   164,    -1,   165,    -1,   166,
    788      132,   165,    -1,   166,    -1,   167,    98,   166,    -1,   167,
    789       -1,   168,    99,   167,    -1,   168,    -1,   168,   133,   176,
    790      134,   169,    -1,   168,   133,   134,   169,    -1,   169,    -1,
    791      169,    -1,   155,   173,   171,    -1,    -1,   171,    -1,   135,
    792       -1,   111,    -1,   101,    -1,   102,    -1,   103,    -1,   104,
    793       -1,   105,    -1,   106,    -1,   107,    -1,   108,    -1,   109,
    794       -1,   110,    -1,   115,   138,   120,   175,   139,   116,    -1,
    795      115,   138,   171,   120,   175,   139,   116,    -1,   172,    -1,
    796      175,   120,   172,    -1,   171,    -1,   176,   120,   171,    -1,
    797       -1,   176,    -1,   179,    -1,   180,    -1,   184,    -1,   185,
    798       -1,   197,    -1,   199,    -1,   200,    -1,   205,    -1,   131,
    799      148,   118,   149,   119,   136,    -1,    74,   134,   318,   178,
    800       -1,   118,   119,    -1,   118,   138,   138,   216,   181,   139,
    801      119,    -1,   182,    -1,   181,   138,   182,    -1,   219,    -1,
    802       42,   219,    -1,   314,    -1,   178,   139,    -1,   178,    -1,
    803      183,   178,    -1,   177,   136,    -1,    43,   113,   176,   114,
    804      178,    -1,    43,   113,   176,   114,   178,    44,   178,    -1,
    805       45,   113,   176,   114,   190,    -1,    45,   113,   176,   114,
    806      118,   138,   212,   191,   119,    -1,    55,   113,   176,   114,
    807      190,    -1,    55,   113,   176,   114,   118,   138,   212,   193,
    808      119,    -1,   170,    -1,   170,   100,   170,    -1,   316,    -1,
    809      186,    -1,   187,   120,   186,    -1,    46,   187,   134,    -1,
    810       47,   134,    -1,   188,    -1,   189,   188,    -1,   189,   178,
    811       -1,    -1,   192,    -1,   189,   183,    -1,   192,   189,   183,
    812       -1,    -1,   194,    -1,   189,   196,    -1,   189,   183,   195,
    813       -1,   194,   189,   196,    -1,   194,   189,   183,   195,    -1,
    814       -1,   196,    -1,    58,    -1,    58,   136,    -1,    49,   113,
    815      176,   114,   178,    -1,    48,   178,    49,   113,   176,   114,
    816      136,    -1,    50,   113,   138,   198,   114,   178,    -1,   177,
    817      139,   136,   177,   136,   177,    -1,   219,   177,   136,   177,
    818       -1,    53,    74,   136,    -1,    53,   121,   176,   136,    -1,
    819       52,   136,    -1,    52,    74,   136,    -1,    51,   136,    -1,
    820       51,    74,   136,    -1,    54,   177,   136,    -1,    63,   172,
    821      136,    -1,    64,   172,   136,    -1,    64,   172,    65,   171,
    822      136,    -1,    59,   180,   201,    -1,    59,   180,   203,    -1,
    823       59,   180,   201,   203,    -1,   202,    -1,    60,   113,   100,
    824      114,   180,    -1,   202,    60,   113,   100,   114,   180,    -1,
    825       61,   113,   100,   114,   180,    -1,   202,    61,   113,   100,
    826      114,   180,    -1,    60,   113,   138,   138,   204,   139,   114,
    827      180,   139,    -1,   202,    60,   113,   138,   138,   204,   139,
    828      114,   180,   139,    -1,    61,   113,   138,   138,   204,   139,
    829      114,   180,   139,    -1,   202,    61,   113,   138,   138,   204,
    830      139,   114,   180,   139,    -1,    62,   180,    -1,   232,    -1,
    831      232,   315,    -1,   232,   363,    -1,   372,   143,    -1,   372,
    832       -1,    66,   206,   113,   145,   114,   136,    -1,    66,   206,
    833      113,   145,   134,   207,   114,   136,    -1,    66,   206,   113,
    834      145,   134,   207,   134,   207,   114,   136,    -1,    66,   206,
    835      113,   145,   134,   207,   134,   207,   134,   210,   114,   136,
    836       -1,    66,   206,    53,   113,   145,   134,   134,   207,   134,
    837      210,   134,   211,   114,   136,    -1,    -1,    11,    -1,    -1,
    838      208,    -1,   209,    -1,   208,   120,   209,    -1,   145,   113,
    839      170,   114,    -1,   115,   170,   116,   145,   113,   170,   114,
    840       -1,    -1,   145,    -1,   210,   120,   145,    -1,   143,    -1,
    841      211,   120,   143,    -1,   139,    -1,   213,    -1,   219,    -1,
    842      213,   138,   219,    -1,   139,    -1,   215,    -1,   229,    -1,
    843      215,   138,   229,    -1,    -1,   217,    -1,    31,   218,   136,
    844       -1,   217,    31,   218,   136,    -1,   280,    -1,   218,   120,
    845      280,    -1,   220,    -1,   229,    -1,   221,   139,   136,    -1,
    846      226,   139,   136,    -1,   223,   139,   136,    -1,   299,   139,
    847      136,    -1,   302,   139,   136,    -1,   222,   283,    -1,   238,
    848      222,   283,    -1,   221,   139,   120,   138,   278,   283,    -1,
    849      373,   278,   317,    -1,   376,   278,   317,    -1,   234,   376,
    850      278,   317,    -1,   224,    -1,   234,   224,    -1,   238,   224,
    851       -1,   238,   234,   224,    -1,   223,   139,   120,   138,   278,
    852       -1,   376,   278,   113,   138,   266,   139,   114,    -1,   225,
    853      278,   113,   138,   266,   139,   114,    -1,   115,   138,   268,
    854      139,   116,    -1,   115,   138,   268,   139,   120,   138,   269,
    855      139,   116,    -1,     3,   222,    -1,     3,   224,    -1,   226,
    856      139,   120,   138,   143,    -1,     3,   232,   315,    -1,   227,
    857      139,   120,   138,   315,    -1,   234,     3,   232,   315,    -1,
    858      232,     3,   315,    -1,   232,     3,   234,   315,    -1,     3,
    859      143,   135,   171,    -1,   228,   139,   120,   138,   143,   135,
    860      171,    -1,   230,   139,   136,    -1,   227,   139,   136,    -1,
    861      228,   139,   136,    -1,   246,   139,   136,    -1,   231,   315,
    862      317,   283,    -1,   230,   120,   318,   315,   317,   283,    -1,
    863      242,    -1,   246,    -1,   248,    -1,   289,    -1,   243,    -1,
    864      247,    -1,   249,    -1,   290,    -1,    -1,   234,    -1,   235,
    865       -1,   234,   235,    -1,   236,    -1,   320,    -1,    10,    -1,
    866       12,    -1,    11,    -1,    14,    -1,    69,    -1,    -1,    13,
    867      113,   237,   292,   114,    -1,   239,    -1,   234,   239,    -1,
    868      238,   234,   239,    -1,   240,    -1,   239,   240,    -1,     5,
     751     306,     0,    -1,    -1,    -1,    79,    -1,    82,    -1,    83,
     752      -1,    84,    -1,    80,    -1,    72,    -1,    76,    -1,   142,
     753      -1,    72,    -1,    76,    -1,    72,    -1,   142,    -1,    85,
     754      -1,    86,    -1,   144,    -1,    81,    -1,   144,    81,    -1,
     755      72,    -1,   142,    -1,   172,    -1,   111,   174,   112,    -1,
     756     111,   178,   112,    -1,   145,    -1,   146,   113,   136,   169,
     757     137,   114,    -1,   146,   111,   147,   112,    -1,   146,   115,
     758     141,    -1,   146,   115,   113,   136,   149,   137,   114,    -1,
     759     146,    83,    -1,   146,    87,   141,    -1,   146,    87,   113,
     760     136,   149,   137,   114,    -1,   146,    88,    -1,   146,    89,
     761      -1,   111,   279,   112,   116,   283,   376,   117,    -1,   146,
     762     116,   147,   117,    -1,   148,    -1,   147,   118,   148,    -1,
     763      -1,   169,    -1,   150,    -1,   149,   118,   150,    -1,   151,
     764      -1,    82,   150,    -1,    82,   113,   136,   149,   137,   114,
     765      -1,   151,   115,   150,    -1,   151,   115,   113,   136,   149,
     766     137,   114,    -1,   151,    87,   150,    -1,   151,    87,   113,
     767     136,   149,   137,   114,    -1,    79,   152,    -1,    84,   152,
     768      -1,   141,   152,    -1,    -1,   152,    83,    -1,   146,    -1,
     769     138,    -1,   143,    -1,    40,   156,    -1,   154,   156,    -1,
     770     155,   156,    -1,    88,   153,    -1,    89,   153,    -1,    37,
     771     153,    -1,    37,   111,   279,   112,    -1,    66,   153,    -1,
     772      66,   111,   279,   112,    -1,    38,   111,   279,   118,   141,
     773     112,    -1,    76,    -1,    76,   111,   148,   112,    -1,    76,
     774     111,   280,   112,    -1,   119,    -1,   120,    -1,   121,    -1,
     775     122,    -1,   123,    -1,   124,    -1,   153,    -1,   111,   279,
     776     112,   156,    -1,   156,    -1,   157,   119,   156,    -1,   157,
     777     125,   156,    -1,   157,   126,   156,    -1,   157,    -1,   158,
     778     121,   157,    -1,   158,   122,   157,    -1,   158,    -1,   159,
     779      90,   158,    -1,   159,    91,   158,    -1,   159,    -1,   160,
     780     127,   159,    -1,   160,   128,   159,    -1,   160,    92,   159,
     781      -1,   160,    93,   159,    -1,   160,    -1,   161,    94,   160,
     782      -1,   161,    95,   160,    -1,   161,    -1,   162,   120,   161,
     783      -1,   162,    -1,   163,   129,   162,    -1,   163,    -1,   164,
     784     130,   163,    -1,   164,    -1,   165,    96,   164,    -1,   165,
     785      -1,   166,    97,   165,    -1,   166,    -1,   166,   131,   174,
     786     132,   167,    -1,   166,   131,   132,   167,    -1,   167,    -1,
     787     167,    -1,   153,   171,   169,    -1,    -1,   169,    -1,   133,
     788      -1,   109,    -1,    99,    -1,   100,    -1,   101,    -1,   102,
     789      -1,   103,    -1,   104,    -1,   105,    -1,   106,    -1,   107,
     790      -1,   108,    -1,   113,   136,   118,   173,   137,   114,    -1,
     791     113,   136,   169,   118,   173,   137,   114,    -1,   170,    -1,
     792     173,   118,   170,    -1,   169,    -1,   174,   118,   169,    -1,
     793      -1,   174,    -1,   177,    -1,   178,    -1,   182,    -1,   183,
     794      -1,   195,    -1,   197,    -1,   198,    -1,   203,    -1,   129,
     795     146,   116,   147,   117,   134,    -1,    72,   132,   316,   176,
     796      -1,   116,   117,    -1,   116,   136,   136,   214,   179,   137,
     797     117,    -1,   180,    -1,   179,   136,   180,    -1,   217,    -1,
     798      40,   217,    -1,   312,    -1,   176,   137,    -1,   176,    -1,
     799     181,   176,    -1,   175,   134,    -1,    41,   111,   174,   112,
     800     176,    -1,    41,   111,   174,   112,   176,    42,   176,    -1,
     801      43,   111,   174,   112,   188,    -1,    43,   111,   174,   112,
     802     116,   136,   210,   189,   117,    -1,    53,   111,   174,   112,
     803     188,    -1,    53,   111,   174,   112,   116,   136,   210,   191,
     804     117,    -1,   168,    -1,   168,    98,   168,    -1,   314,    -1,
     805     184,    -1,   185,   118,   184,    -1,    44,   185,   132,    -1,
     806      45,   132,    -1,   186,    -1,   187,   186,    -1,   187,   176,
     807      -1,    -1,   190,    -1,   187,   181,    -1,   190,   187,   181,
     808      -1,    -1,   192,    -1,   187,   194,    -1,   187,   181,   193,
     809      -1,   192,   187,   194,    -1,   192,   187,   181,   193,    -1,
     810      -1,   194,    -1,    56,    -1,    56,   134,    -1,    47,   111,
     811     174,   112,   176,    -1,    46,   176,    47,   111,   174,   112,
     812     134,    -1,    48,   111,   136,   196,   112,   176,    -1,   175,
     813     137,   134,   175,   134,   175,    -1,   217,   175,   134,   175,
     814      -1,    51,    72,   134,    -1,    51,   119,   174,   134,    -1,
     815      50,   134,    -1,    50,    72,   134,    -1,    49,   134,    -1,
     816      49,    72,   134,    -1,    52,   175,   134,    -1,    61,   170,
     817     134,    -1,    62,   170,   134,    -1,    62,   170,    63,   169,
     818     134,    -1,    57,   178,   199,    -1,    57,   178,   201,    -1,
     819      57,   178,   199,   201,    -1,   200,    -1,    58,   111,    98,
     820     112,   178,    -1,   200,    58,   111,    98,   112,   178,    -1,
     821      59,   111,    98,   112,   178,    -1,   200,    59,   111,    98,
     822     112,   178,    -1,    58,   111,   136,   136,   202,   137,   112,
     823     178,   137,    -1,   200,    58,   111,   136,   136,   202,   137,
     824     112,   178,   137,    -1,    59,   111,   136,   136,   202,   137,
     825     112,   178,   137,    -1,   200,    59,   111,   136,   136,   202,
     826     137,   112,   178,   137,    -1,    60,   178,    -1,   230,    -1,
     827     230,   313,    -1,   230,   361,    -1,   370,   141,    -1,   370,
     828      -1,    64,   204,   111,   143,   112,   134,    -1,    64,   204,
     829     111,   143,   132,   205,   112,   134,    -1,    64,   204,   111,
     830     143,   132,   205,   132,   205,   112,   134,    -1,    64,   204,
     831     111,   143,   132,   205,   132,   205,   132,   208,   112,   134,
     832      -1,    64,   204,    51,   111,   143,   132,   132,   205,   132,
     833     208,   132,   209,   112,   134,    -1,    -1,    11,    -1,    -1,
     834     206,    -1,   207,    -1,   206,   118,   207,    -1,   143,   111,
     835     168,   112,    -1,   113,   168,   114,   143,   111,   168,   112,
     836      -1,    -1,   143,    -1,   208,   118,   143,    -1,   141,    -1,
     837     209,   118,   141,    -1,   137,    -1,   211,    -1,   217,    -1,
     838     211,   136,   217,    -1,   137,    -1,   213,    -1,   227,    -1,
     839     213,   136,   227,    -1,    -1,   215,    -1,    29,   216,   134,
     840      -1,   215,    29,   216,   134,    -1,   278,    -1,   216,   118,
     841     278,    -1,   218,    -1,   227,    -1,   219,   137,   134,    -1,
     842     224,   137,   134,    -1,   221,   137,   134,    -1,   297,   137,
     843     134,    -1,   300,   137,   134,    -1,   220,   281,    -1,   236,
     844     220,   281,    -1,   219,   137,   118,   136,   276,   281,    -1,
     845     371,   276,   315,    -1,   374,   276,   315,    -1,   232,   374,
     846     276,   315,    -1,   222,    -1,   232,   222,    -1,   236,   222,
     847      -1,   236,   232,   222,    -1,   221,   137,   118,   136,   276,
     848      -1,   374,   276,   111,   136,   264,   137,   112,    -1,   223,
     849     276,   111,   136,   264,   137,   112,    -1,   113,   136,   266,
     850     137,   114,    -1,   113,   136,   266,   137,   118,   136,   267,
     851     137,   114,    -1,     3,   220,    -1,     3,   222,    -1,   224,
     852     137,   118,   136,   141,    -1,     3,   230,   313,    -1,   225,
     853     137,   118,   136,   313,    -1,   232,     3,   230,   313,    -1,
     854     230,     3,   313,    -1,   230,     3,   232,   313,    -1,     3,
     855     141,   133,   169,    -1,   226,   137,   118,   136,   141,   133,
     856     169,    -1,   228,   137,   134,    -1,   225,   137,   134,    -1,
     857     226,   137,   134,    -1,   244,   137,   134,    -1,   229,   313,
     858     315,   281,    -1,   228,   118,   316,   313,   315,   281,    -1,
     859     240,    -1,   244,    -1,   246,    -1,   287,    -1,   241,    -1,
     860     245,    -1,   247,    -1,   288,    -1,    -1,   232,    -1,   233,
     861      -1,   232,   233,    -1,   234,    -1,   318,    -1,    10,    -1,
     862      12,    -1,    11,    -1,    14,    -1,    67,    -1,    -1,    13,
     863     111,   235,   290,   112,    -1,   237,    -1,   232,   237,    -1,
     864     236,   232,   237,    -1,   238,    -1,   237,   238,    -1,     5,
    869865      -1,     7,    -1,     4,    -1,     6,    -1,     8,    -1,     9,
    870       -1,    71,    -1,    73,    -1,    16,    -1,    21,    -1,    20,
     866      -1,    69,    -1,    71,    -1,    16,    -1,    21,    -1,    20,
    871867      -1,    18,    -1,    19,    -1,    17,    -1,    22,    -1,    23,
    872       -1,    15,    -1,    27,    -1,    28,    -1,    29,    -1,    26,
    873       -1,    24,    -1,    25,    -1,   243,    -1,   238,   243,    -1,
    874      242,   240,    -1,   242,   240,   234,    -1,   242,   240,   243,
    875       -1,   244,    -1,   233,   245,   233,    -1,   241,    -1,   234,
    876      241,    -1,   244,   235,    -1,   244,   241,    -1,    30,   113,
    877      282,   114,    -1,    30,   113,   176,   114,    -1,    80,   113,
    878      282,   114,    -1,    80,   113,   176,   114,    -1,   247,    -1,
    879      238,   247,    -1,   246,   240,    -1,   246,   240,   234,    -1,
    880      250,    -1,   234,   250,    -1,   247,   235,    -1,   249,    -1,
    881      238,   249,    -1,   248,   240,    -1,   248,   240,   234,    -1,
    882       76,    -1,   234,    76,    -1,   249,   235,    -1,   251,    -1,
    883      262,    -1,   253,   118,   254,   119,    -1,   253,   280,    -1,
    884       -1,   253,   280,   252,   118,   254,   119,    -1,   253,   113,
    885      298,   114,   118,   254,   119,    -1,   253,   291,    -1,    33,
    886      318,    -1,    34,   318,    -1,    -1,   254,   255,    -1,   256,
    887      136,    -1,    42,   256,   136,    -1,   257,   136,    -1,    42,
    888      257,   136,    -1,   372,    -1,   372,   280,    -1,   256,   120,
    889      280,    -1,   256,   120,    -1,   232,   258,    -1,   257,   120,
    890      318,   258,    -1,    -1,   260,    -1,   324,   259,    -1,   337,
    891      259,    -1,   363,    -1,    -1,   260,    -1,   134,   170,    -1,
    892       32,   318,    -1,   261,   118,   264,   378,   119,    -1,   261,
    893      280,    -1,    -1,   261,   280,   263,   118,   264,   378,   119,
    894       -1,   280,   265,    -1,   264,   120,   280,   265,    -1,    -1,
    895      135,   170,    -1,    -1,   267,    -1,   269,    -1,   268,    -1,
    896      268,   139,   120,   138,   269,    -1,   269,   139,   120,   138,
    897      100,    -1,   268,   139,   120,   138,   100,    -1,   273,    -1,
    898      269,   139,   120,   138,   273,    -1,   268,   139,   120,   138,
    899      273,    -1,   268,   139,   120,   138,   269,   139,   120,   138,
    900      273,    -1,   274,    -1,   269,   139,   120,   138,   274,    -1,
    901       -1,   271,    -1,   272,    -1,   272,   139,   120,   138,   100,
    902       -1,   276,    -1,   275,    -1,   272,   139,   120,   138,   276,
    903       -1,   272,   139,   120,   138,   275,    -1,   275,    -1,   368,
    904      278,   379,    -1,   376,   278,   379,    -1,   234,   376,   278,
    905      379,    -1,   224,    -1,   276,    -1,   368,    -1,   376,    -1,
    906      234,   376,    -1,   377,    -1,   231,   342,   379,    -1,   231,
    907      346,   379,    -1,   231,    -1,   231,   357,    -1,   143,    -1,
    908      277,   120,   143,    -1,   141,    -1,    76,    -1,    77,    -1,
    909      142,    -1,    76,    -1,    77,    -1,   143,    -1,    76,    -1,
    910       77,    -1,   372,    -1,   232,    -1,   232,   363,    -1,   372,
    911       -1,   377,    -1,   232,    -1,   232,   351,    -1,    -1,   135,
    912      284,    -1,   111,   284,    -1,   171,    -1,   118,   285,   378,
    913      119,    -1,    -1,   284,    -1,   286,   284,    -1,   285,   120,
    914      284,    -1,   285,   120,   286,   284,    -1,   287,   134,    -1,
    915      280,   134,    -1,   288,    -1,   287,   288,    -1,   117,   280,
    916       -1,   115,   138,   171,   139,   116,    -1,   115,   138,   316,
    917      139,   116,    -1,   115,   138,   170,   100,   170,   139,   116,
    918       -1,   117,   115,   138,   151,   139,   116,    -1,   290,    -1,
    919      238,   290,    -1,   289,   240,    -1,   289,   240,   234,    -1,
    920      291,    -1,   234,   291,    -1,   290,   235,    -1,    77,   113,
    921      298,   114,    -1,   293,   379,    -1,   292,   120,   293,   379,
    922       -1,    -1,   295,   280,   294,   296,    -1,   232,   342,    -1,
    923       35,    -1,    37,    -1,    36,    -1,    -1,   296,   297,    -1,
    924      132,   280,   113,   298,   114,    -1,   132,   118,   138,   304,
    925      119,    -1,   132,   113,   138,   292,   139,   114,   118,   138,
    926      304,   119,   113,   298,   114,    -1,   282,    -1,   171,    -1,
    927      298,   120,   282,    -1,   298,   120,   171,    -1,    35,   300,
    928       -1,   239,    35,   300,    -1,   299,   120,   300,    -1,   301,
    929      296,    -1,   301,   296,   135,   282,    -1,   280,    -1,   279,
    930      113,   138,   292,   139,   114,    -1,    38,   280,   113,   138,
    931      292,   139,   114,   118,   119,    -1,    -1,    38,   280,   113,
    932      138,   292,   139,   114,   118,   303,   304,   119,    -1,   305,
    933       -1,   304,   138,   305,    -1,   306,   139,   136,    -1,   307,
    934      139,   136,    -1,   222,    -1,   224,    -1,   306,   139,   120,
    935      138,   278,    -1,   232,   315,    -1,   307,   139,   120,   138,
    936      315,    -1,    -1,   309,    -1,   311,    -1,   309,   138,   311,
    937       -1,    -1,   309,    -1,   219,    -1,   313,    -1,   205,    -1,
    938       -1,     5,    83,   312,   118,   310,   119,    -1,    42,   311,
    939       -1,   314,    -1,   329,   180,    -1,   333,   138,   214,   180,
    940       -1,   223,   180,    -1,   231,   329,   180,    -1,   234,   329,
    941      180,    -1,   238,   329,   180,    -1,   238,   234,   329,   180,
    942       -1,   231,   333,   138,   214,   180,    -1,   234,   333,   138,
    943      214,   180,    -1,   238,   333,   138,   214,   180,    -1,   238,
    944      234,   333,   138,   214,   180,    -1,   324,    -1,   337,    -1,
    945      329,    -1,   170,   126,   170,    -1,    -1,    66,   113,   145,
    946      114,   318,    -1,    -1,   319,    -1,   320,    -1,   319,   320,
    947       -1,    41,   113,   113,   321,   114,   114,    -1,   322,    -1,
    948      321,   120,   322,    -1,    -1,   323,    -1,   323,   113,   177,
    949      114,    -1,   278,    -1,   240,    -1,   241,    -1,   235,    -1,
    950      325,   318,    -1,   326,    -1,   327,   318,    -1,   328,   318,
    951       -1,   141,    -1,   113,   325,   114,    -1,   156,   324,    -1,
    952      156,   234,   324,    -1,   113,   326,   114,    -1,   325,   355,
    953       -1,   113,   326,   114,   355,    -1,   113,   327,   114,   356,
    954       -1,   113,   327,   114,    -1,   113,   326,   114,   113,   138,
    955      270,   139,   114,    -1,   113,   328,   114,    -1,   330,   318,
    956       -1,   331,    -1,   332,   318,    -1,   325,   113,   138,   270,
    957      139,   114,    -1,   113,   331,   114,   113,   138,   270,   139,
    958      114,    -1,   113,   330,   114,    -1,   156,   329,    -1,   156,
    959      234,   329,    -1,   113,   331,   114,    -1,   113,   331,   114,
    960      355,    -1,   113,   332,   114,   356,    -1,   113,   332,   114,
    961       -1,   334,    -1,   335,    -1,   336,    -1,   325,   113,   277,
    962      114,    -1,   113,   335,   114,   113,   277,   114,    -1,   113,
    963      334,   114,    -1,   156,   333,    -1,   156,   234,   333,    -1,
    964      113,   335,   114,    -1,   113,   335,   114,   355,    -1,   113,
    965      336,   114,   356,    -1,   113,   336,   114,    -1,   338,   318,
    966       -1,   339,    -1,   340,   318,    -1,   341,   318,    -1,   347,
    967       -1,   113,   338,   114,    -1,   156,   337,    -1,   156,   234,
    968      337,    -1,   113,   339,   114,    -1,   338,   355,    -1,   113,
    969      339,   114,   355,    -1,   113,   340,   114,   356,    -1,   113,
    970      340,   114,    -1,   338,   113,   138,   270,   139,   114,    -1,
    971      113,   339,   114,   113,   138,   270,   139,   114,    -1,   113,
    972      341,   114,    -1,   325,   318,    -1,   343,    -1,   344,   318,
    973       -1,   345,   318,    -1,   156,   342,    -1,   156,   234,   342,
    974       -1,   113,   343,   114,    -1,   325,   361,    -1,   113,   343,
    975      114,   355,    -1,   113,   344,   114,   356,    -1,   113,   344,
    976      114,    -1,   325,   113,   138,   270,   139,   114,    -1,   113,
    977      343,   114,   113,   138,   270,   139,   114,    -1,   113,   345,
    978      114,    -1,   347,   318,    -1,   348,    -1,   349,   318,    -1,
    979      350,   318,    -1,    76,    -1,    77,    -1,   156,   346,    -1,
    980      156,   234,   346,    -1,   113,   348,   114,    -1,   347,   361,
    981       -1,   113,   348,   114,   361,    -1,   347,   113,   138,   270,
    982      139,   114,    -1,   113,   348,   114,   113,   138,   270,   139,
    983      114,    -1,   352,    -1,   353,   318,    -1,   354,   318,    -1,
    984      156,    -1,   156,   234,    -1,   156,   351,    -1,   156,   234,
    985      351,    -1,   113,   352,   114,    -1,   355,    -1,   113,   352,
    986      114,   355,    -1,   113,   353,   114,   356,    -1,   113,   353,
    987      114,    -1,   113,   138,   270,   139,   114,    -1,   113,   352,
    988      114,   113,   138,   270,   139,   114,    -1,   113,   354,   114,
    989       -1,   115,   116,    -1,   115,   116,   356,    -1,   356,    -1,
    990      115,   138,   171,   139,   116,    -1,   115,   138,   121,   139,
    991      116,    -1,   356,   115,   138,   171,   139,   116,    -1,   356,
    992      115,   138,   121,   139,   116,    -1,   358,    -1,   359,   318,
    993       -1,   360,   318,    -1,   156,    -1,   156,   234,    -1,   156,
    994      357,    -1,   156,   234,   357,    -1,   113,   358,   114,    -1,
    995      361,    -1,   113,   358,   114,   361,    -1,   113,   359,   114,
    996      356,    -1,   113,   359,   114,    -1,   113,   138,   270,   139,
    997      114,    -1,   113,   358,   114,   113,   138,   270,   139,   114,
    998       -1,   113,   360,   114,    -1,   362,    -1,   362,   356,    -1,
    999      356,    -1,   115,   116,    -1,   115,   138,   234,   121,   139,
    1000      116,    -1,   115,   138,   234,   139,   116,    -1,   115,   138,
    1001      234,   171,   139,   116,    -1,   115,   138,     7,   233,   171,
    1002      139,   116,    -1,   115,   138,   234,     7,   171,   139,   116,
    1003       -1,   364,    -1,   365,   318,    -1,   366,   318,    -1,   156,
    1004       -1,   156,   234,    -1,   156,   363,    -1,   156,   234,   363,
    1005       -1,   113,   364,   114,    -1,   355,    -1,   113,   364,   114,
    1006      355,    -1,   113,   365,   114,   356,    -1,   113,   365,   114,
    1007       -1,   113,   364,   114,   113,   138,   270,   139,   114,    -1,
    1008      113,   366,   114,    -1,   368,    -1,   376,    -1,   234,   376,
    1009       -1,   369,    -1,   370,    -1,   156,   232,    -1,   234,   156,
    1010      232,    -1,   156,   377,    -1,   234,   156,   377,    -1,   156,
    1011      367,    -1,   234,   156,   367,    -1,   115,   116,   232,    -1,
    1012      371,   232,    -1,   115,   116,   356,   232,    -1,   371,   356,
    1013      232,    -1,   356,   232,    -1,   115,   116,   369,    -1,   371,
    1014      369,    -1,   115,   116,   356,   369,    -1,   371,   356,   369,
    1015       -1,   356,   369,    -1,   115,   138,   234,   121,   139,   116,
    1016       -1,   115,   138,   234,   171,   139,   116,    -1,   115,   138,
    1017      238,   171,   139,   116,    -1,   115,   138,   238,   234,   171,
    1018      139,   116,    -1,   376,    -1,   234,   376,    -1,   373,    -1,
    1019      374,    -1,   375,    -1,   156,   232,    -1,   234,   156,   232,
    1020       -1,   156,   377,    -1,   234,   156,   377,    -1,   156,   372,
    1021       -1,   234,   156,   372,    -1,   115,   116,   232,    -1,   115,
    1022      116,   356,   232,    -1,   356,   232,    -1,   115,   116,   374,
    1023       -1,   115,   116,   356,   374,    -1,   356,   374,    -1,   115,
    1024      138,   269,   139,   116,    -1,   376,   113,   138,   266,   139,
    1025      114,    -1,   225,   113,   138,   266,   139,   114,    -1,    -1,
    1026      120,    -1,    -1,   135,   171,    -1
     868      -1,    15,    -1,    25,    -1,    26,    -1,    27,    -1,    24,
     869      -1,   241,    -1,   236,   241,    -1,   240,   238,    -1,   240,
     870     238,   232,    -1,   240,   238,   241,    -1,   242,    -1,   231,
     871     243,   231,    -1,   239,    -1,   232,   239,    -1,   242,   233,
     872      -1,   242,   239,    -1,    28,   111,   280,   112,    -1,    28,
     873     111,   174,   112,    -1,    78,   111,   280,   112,    -1,    78,
     874     111,   174,   112,    -1,   245,    -1,   236,   245,    -1,   244,
     875     238,    -1,   244,   238,   232,    -1,   248,    -1,   232,   248,
     876      -1,   245,   233,    -1,   247,    -1,   236,   247,    -1,   246,
     877     238,    -1,   246,   238,   232,    -1,    74,    -1,   232,    74,
     878      -1,   247,   233,    -1,   249,    -1,   260,    -1,   251,   116,
     879     252,   117,    -1,   251,   278,    -1,    -1,   251,   278,   250,
     880     116,   252,   117,    -1,   251,   111,   296,   112,   116,   252,
     881     117,    -1,   251,   289,    -1,    31,   316,    -1,    32,   316,
     882      -1,    -1,   252,   253,    -1,   254,   134,    -1,    40,   254,
     883     134,    -1,   255,   134,    -1,    40,   255,   134,    -1,   370,
     884      -1,   370,   278,    -1,   254,   118,   278,    -1,   254,   118,
     885      -1,   230,   256,    -1,   255,   118,   316,   256,    -1,    -1,
     886     258,    -1,   322,   257,    -1,   335,   257,    -1,   361,    -1,
     887      -1,   258,    -1,   132,   168,    -1,    30,   316,    -1,   259,
     888     116,   262,   376,   117,    -1,   259,   278,    -1,    -1,   259,
     889     278,   261,   116,   262,   376,   117,    -1,   278,   263,    -1,
     890     262,   118,   278,   263,    -1,    -1,   133,   168,    -1,    -1,
     891     265,    -1,   267,    -1,   266,    -1,   266,   137,   118,   136,
     892     267,    -1,   267,   137,   118,   136,    98,    -1,   266,   137,
     893     118,   136,    98,    -1,   271,    -1,   267,   137,   118,   136,
     894     271,    -1,   266,   137,   118,   136,   271,    -1,   266,   137,
     895     118,   136,   267,   137,   118,   136,   271,    -1,   272,    -1,
     896     267,   137,   118,   136,   272,    -1,    -1,   269,    -1,   270,
     897      -1,   270,   137,   118,   136,    98,    -1,   274,    -1,   273,
     898      -1,   270,   137,   118,   136,   274,    -1,   270,   137,   118,
     899     136,   273,    -1,   273,    -1,   366,   276,   377,    -1,   374,
     900     276,   377,    -1,   232,   374,   276,   377,    -1,   222,    -1,
     901     274,    -1,   366,    -1,   374,    -1,   232,   374,    -1,   375,
     902      -1,   229,   340,   377,    -1,   229,   344,   377,    -1,   229,
     903      -1,   229,   355,    -1,   141,    -1,   275,   118,   141,    -1,
     904     139,    -1,    74,    -1,    75,    -1,   140,    -1,    74,    -1,
     905      75,    -1,   141,    -1,    74,    -1,    75,    -1,   370,    -1,
     906     230,    -1,   230,   361,    -1,   370,    -1,   375,    -1,   230,
     907      -1,   230,   349,    -1,    -1,   133,   282,    -1,   109,   282,
     908      -1,   169,    -1,   116,   283,   376,   117,    -1,    -1,   282,
     909      -1,   284,   282,    -1,   283,   118,   282,    -1,   283,   118,
     910     284,   282,    -1,   285,   132,    -1,   278,   132,    -1,   286,
     911      -1,   285,   286,    -1,   115,   278,    -1,   113,   136,   169,
     912     137,   114,    -1,   113,   136,   314,   137,   114,    -1,   113,
     913     136,   168,    98,   168,   137,   114,    -1,   115,   113,   136,
     914     149,   137,   114,    -1,   288,    -1,   236,   288,    -1,   287,
     915     238,    -1,   287,   238,   232,    -1,   289,    -1,   232,   289,
     916      -1,   288,   233,    -1,    75,   111,   296,   112,    -1,   291,
     917     377,    -1,   290,   118,   291,   377,    -1,    -1,   293,   278,
     918     292,   294,    -1,   230,   340,    -1,    33,    -1,    35,    -1,
     919      34,    -1,    -1,   294,   295,    -1,   130,   278,   111,   296,
     920     112,    -1,   130,   116,   136,   302,   117,    -1,   130,   111,
     921     136,   290,   137,   112,   116,   136,   302,   117,   111,   296,
     922     112,    -1,   280,    -1,   169,    -1,   296,   118,   280,    -1,
     923     296,   118,   169,    -1,    33,   298,    -1,   237,    33,   298,
     924      -1,   297,   118,   298,    -1,   299,   294,    -1,   299,   294,
     925     133,   280,    -1,   278,    -1,   277,   111,   136,   290,   137,
     926     112,    -1,    36,   278,   111,   136,   290,   137,   112,   116,
     927     117,    -1,    -1,    36,   278,   111,   136,   290,   137,   112,
     928     116,   301,   302,   117,    -1,   303,    -1,   302,   136,   303,
     929      -1,   304,   137,   134,    -1,   305,   137,   134,    -1,   220,
     930      -1,   222,    -1,   304,   137,   118,   136,   276,    -1,   230,
     931     313,    -1,   305,   137,   118,   136,   313,    -1,    -1,   307,
     932      -1,   309,    -1,   307,   136,   309,    -1,    -1,   307,    -1,
     933     217,    -1,   311,    -1,   203,    -1,    -1,     5,    81,   310,
     934     116,   308,   117,    -1,    40,   309,    -1,   312,    -1,   327,
     935     178,    -1,   331,   136,   212,   178,    -1,   221,   178,    -1,
     936     229,   327,   178,    -1,   232,   327,   178,    -1,   236,   327,
     937     178,    -1,   236,   232,   327,   178,    -1,   229,   331,   136,
     938     212,   178,    -1,   232,   331,   136,   212,   178,    -1,   236,
     939     331,   136,   212,   178,    -1,   236,   232,   331,   136,   212,
     940     178,    -1,   322,    -1,   335,    -1,   327,    -1,   168,   124,
     941     168,    -1,    -1,    64,   111,   144,   112,   316,    -1,    -1,
     942     317,    -1,   318,    -1,   317,   318,    -1,    39,   111,   111,
     943     319,   112,   112,    -1,   320,    -1,   319,   118,   320,    -1,
     944      -1,   321,    -1,   321,   111,   175,   112,    -1,   276,    -1,
     945     238,    -1,   239,    -1,   233,    -1,   323,   316,    -1,   324,
     946      -1,   325,   316,    -1,   326,   316,    -1,   139,    -1,   111,
     947     323,   112,    -1,   154,   322,    -1,   154,   232,   322,    -1,
     948     111,   324,   112,    -1,   323,   353,    -1,   111,   324,   112,
     949     353,    -1,   111,   325,   112,   354,    -1,   111,   325,   112,
     950      -1,   111,   324,   112,   111,   136,   268,   137,   112,    -1,
     951     111,   326,   112,    -1,   328,   316,    -1,   329,    -1,   330,
     952     316,    -1,   323,   111,   136,   268,   137,   112,    -1,   111,
     953     329,   112,   111,   136,   268,   137,   112,    -1,   111,   328,
     954     112,    -1,   154,   327,    -1,   154,   232,   327,    -1,   111,
     955     329,   112,    -1,   111,   329,   112,   353,    -1,   111,   330,
     956     112,   354,    -1,   111,   330,   112,    -1,   332,    -1,   333,
     957      -1,   334,    -1,   323,   111,   275,   112,    -1,   111,   333,
     958     112,   111,   275,   112,    -1,   111,   332,   112,    -1,   154,
     959     331,    -1,   154,   232,   331,    -1,   111,   333,   112,    -1,
     960     111,   333,   112,   353,    -1,   111,   334,   112,   354,    -1,
     961     111,   334,   112,    -1,   336,   316,    -1,   337,    -1,   338,
     962     316,    -1,   339,   316,    -1,   345,    -1,   111,   336,   112,
     963      -1,   154,   335,    -1,   154,   232,   335,    -1,   111,   337,
     964     112,    -1,   336,   353,    -1,   111,   337,   112,   353,    -1,
     965     111,   338,   112,   354,    -1,   111,   338,   112,    -1,   336,
     966     111,   136,   268,   137,   112,    -1,   111,   337,   112,   111,
     967     136,   268,   137,   112,    -1,   111,   339,   112,    -1,   323,
     968     316,    -1,   341,    -1,   342,   316,    -1,   343,   316,    -1,
     969     154,   340,    -1,   154,   232,   340,    -1,   111,   341,   112,
     970      -1,   323,   359,    -1,   111,   341,   112,   353,    -1,   111,
     971     342,   112,   354,    -1,   111,   342,   112,    -1,   323,   111,
     972     136,   268,   137,   112,    -1,   111,   341,   112,   111,   136,
     973     268,   137,   112,    -1,   111,   343,   112,    -1,   345,   316,
     974      -1,   346,    -1,   347,   316,    -1,   348,   316,    -1,    74,
     975      -1,    75,    -1,   154,   344,    -1,   154,   232,   344,    -1,
     976     111,   346,   112,    -1,   345,   359,    -1,   111,   346,   112,
     977     359,    -1,   345,   111,   136,   268,   137,   112,    -1,   111,
     978     346,   112,   111,   136,   268,   137,   112,    -1,   350,    -1,
     979     351,   316,    -1,   352,   316,    -1,   154,    -1,   154,   232,
     980      -1,   154,   349,    -1,   154,   232,   349,    -1,   111,   350,
     981     112,    -1,   353,    -1,   111,   350,   112,   353,    -1,   111,
     982     351,   112,   354,    -1,   111,   351,   112,    -1,   111,   136,
     983     268,   137,   112,    -1,   111,   350,   112,   111,   136,   268,
     984     137,   112,    -1,   111,   352,   112,    -1,   113,   114,    -1,
     985     113,   114,   354,    -1,   354,    -1,   113,   136,   169,   137,
     986     114,    -1,   113,   136,   119,   137,   114,    -1,   354,   113,
     987     136,   169,   137,   114,    -1,   354,   113,   136,   119,   137,
     988     114,    -1,   356,    -1,   357,   316,    -1,   358,   316,    -1,
     989     154,    -1,   154,   232,    -1,   154,   355,    -1,   154,   232,
     990     355,    -1,   111,   356,   112,    -1,   359,    -1,   111,   356,
     991     112,   359,    -1,   111,   357,   112,   354,    -1,   111,   357,
     992     112,    -1,   111,   136,   268,   137,   112,    -1,   111,   356,
     993     112,   111,   136,   268,   137,   112,    -1,   111,   358,   112,
     994      -1,   360,    -1,   360,   354,    -1,   354,    -1,   113,   114,
     995      -1,   113,   136,   232,   119,   137,   114,    -1,   113,   136,
     996     232,   137,   114,    -1,   113,   136,   232,   169,   137,   114,
     997      -1,   113,   136,     7,   231,   169,   137,   114,    -1,   113,
     998     136,   232,     7,   169,   137,   114,    -1,   362,    -1,   363,
     999     316,    -1,   364,   316,    -1,   154,    -1,   154,   232,    -1,
     1000     154,   361,    -1,   154,   232,   361,    -1,   111,   362,   112,
     1001      -1,   353,    -1,   111,   362,   112,   353,    -1,   111,   363,
     1002     112,   354,    -1,   111,   363,   112,    -1,   111,   362,   112,
     1003     111,   136,   268,   137,   112,    -1,   111,   364,   112,    -1,
     1004     366,    -1,   374,    -1,   232,   374,    -1,   367,    -1,   368,
     1005      -1,   154,   230,    -1,   232,   154,   230,    -1,   154,   375,
     1006      -1,   232,   154,   375,    -1,   154,   365,    -1,   232,   154,
     1007     365,    -1,   113,   114,   230,    -1,   369,   230,    -1,   113,
     1008     114,   354,   230,    -1,   369,   354,   230,    -1,   354,   230,
     1009      -1,   113,   114,   367,    -1,   369,   367,    -1,   113,   114,
     1010     354,   367,    -1,   369,   354,   367,    -1,   354,   367,    -1,
     1011     113,   136,   232,   119,   137,   114,    -1,   113,   136,   232,
     1012     169,   137,   114,    -1,   113,   136,   236,   169,   137,   114,
     1013      -1,   113,   136,   236,   232,   169,   137,   114,    -1,   374,
     1014      -1,   232,   374,    -1,   371,    -1,   372,    -1,   373,    -1,
     1015     154,   230,    -1,   232,   154,   230,    -1,   154,   375,    -1,
     1016     232,   154,   375,    -1,   154,   370,    -1,   232,   154,   370,
     1017      -1,   113,   114,   230,    -1,   113,   114,   354,   230,    -1,
     1018     354,   230,    -1,   113,   114,   372,    -1,   113,   114,   354,
     1019     372,    -1,   354,   372,    -1,   113,   136,   267,   137,   114,
     1020      -1,   374,   111,   136,   264,   137,   112,    -1,   223,   111,
     1021     136,   264,   137,   112,    -1,    -1,   118,    -1,    -1,   133,
     1022     169,    -1
    10271023};
    10281024
     
    10301026static const yytype_uint16 yyrline[] =
    10311027{
    1032        0,   306,   306,   310,   317,   318,   319,   320,   321,   325,
    1033      326,   327,   331,   332,   336,   337,   341,   342,   346,   350,
    1034      351,   362,   364,   366,   367,   369,   374,   375,   381,   383,
    1035      385,   387,   389,   391,   393,   395,   397,   399,   408,   409,
    1036      415,   416,   420,   421,   425,   426,   428,   430,   432,   434,
    1037      436,   441,   443,   445,   457,   458,   466,   469,   471,   473,
    1038      478,   491,   493,   495,   497,   499,   501,   503,   505,   507,
    1039      509,   511,   518,   519,   525,   526,   527,   528,   532,   533,
    1040      540,   541,   543,   545,   550,   551,   553,   558,   559,   561,
    1041      566,   567,   569,   571,   573,   578,   579,   581,   586,   587,
    1042      592,   593,   598,   599,   604,   605,   610,   611,   616,   617,
    1043      620,   627,   632,   633,   641,   642,   646,   647,   648,   649,
    1044      650,   651,   652,   653,   654,   655,   656,   657,   667,   669,
    1045      674,   675,   680,   681,   687,   688,   694,   695,   696,   697,
    1046      698,   699,   700,   701,   702,   712,   719,   721,   731,   732,
    1047      737,   739,   745,   747,   751,   752,   757,   762,   765,   767,
    1048      769,   779,   781,   792,   793,   795,   799,   801,   805,   806,
    1049      811,   812,   816,   821,   822,   826,   828,   834,   835,   839,
    1050      841,   843,   845,   851,   852,   856,   858,   863,   865,   867,
    1051      872,   874,   879,   881,   885,   888,   892,   895,   899,   901,
    1052      903,   905,   910,   912,   914,   919,   921,   923,   925,   927,
    1053      932,   934,   936,   938,   943,   955,   956,   961,   963,   968,
    1054      972,   974,   976,   978,   980,   986,   987,   993,   994,   998,
    1055      999,  1004,  1006,  1012,  1013,  1015,  1021,  1026,  1036,  1038,
    1056     1042,  1043,  1048,  1050,  1054,  1055,  1059,  1061,  1065,  1066,
    1057     1070,  1071,  1075,  1076,  1091,  1092,  1093,  1094,  1095,  1099,
    1058     1104,  1111,  1121,  1126,  1131,  1139,  1144,  1149,  1154,  1159,
    1059     1189,  1194,  1201,  1203,  1210,  1215,  1220,  1231,  1236,  1241,
    1060     1246,  1251,  1260,  1265,  1273,  1274,  1275,  1276,  1282,  1287,
    1061     1295,  1296,  1297,  1298,  1302,  1303,  1304,  1305,  1310,  1311,
    1062     1320,  1321,  1326,  1327,  1332,  1334,  1336,  1338,  1340,  1343,
    1063     1342,  1354,  1355,  1357,  1367,  1368,  1373,  1375,  1377,  1379,
    1064     1381,  1384,  1386,  1389,  1394,  1396,  1398,  1400,  1402,  1404,
    1065     1406,  1408,  1410,  1412,  1414,  1416,  1418,  1420,  1422,  1428,
    1066     1429,  1431,  1433,  1435,  1440,  1441,  1447,  1448,  1450,  1452,
    1067     1457,  1459,  1461,  1463,  1468,  1469,  1471,  1473,  1478,  1479,
    1068     1481,  1486,  1487,  1489,  1491,  1496,  1498,  1500,  1505,  1506,
    1069     1510,  1512,  1518,  1517,  1521,  1523,  1528,  1530,  1536,  1537,
    1070     1542,  1543,  1545,  1546,  1555,  1556,  1558,  1560,  1565,  1567,
    1071     1573,  1574,  1576,  1579,  1582,  1587,  1588,  1593,  1598,  1602,
    1072     1604,  1610,  1609,  1616,  1618,  1624,  1625,  1633,  1634,  1638,
    1073     1639,  1640,  1642,  1644,  1651,  1652,  1654,  1656,  1661,  1662,
    1074     1668,  1669,  1673,  1674,  1679,  1680,  1681,  1683,  1691,  1692,
    1075     1694,  1697,  1699,  1703,  1704,  1705,  1707,  1709,  1713,  1718,
    1076     1726,  1727,  1736,  1738,  1743,  1744,  1745,  1749,  1750,  1751,
    1077     1755,  1756,  1757,  1761,  1762,  1763,  1768,  1769,  1770,  1771,
    1078     1777,  1778,  1780,  1785,  1786,  1791,  1792,  1793,  1794,  1795,
    1079     1810,  1811,  1816,  1817,  1823,  1825,  1828,  1830,  1832,  1855,
    1080     1856,  1858,  1860,  1865,  1866,  1868,  1873,  1878,  1879,  1885,
    1081     1884,  1888,  1892,  1894,  1896,  1902,  1903,  1908,  1913,  1915,
    1082     1920,  1922,  1923,  1925,  1930,  1932,  1934,  1939,  1941,  1946,
    1083     1951,  1959,  1965,  1964,  1978,  1979,  1984,  1985,  1989,  1994,
    1084     1999,  2007,  2012,  2023,  2024,  2029,  2030,  2036,  2037,  2041,
    1085     2042,  2043,  2046,  2045,  2056,  2065,  2071,  2077,  2086,  2092,
    1086     2098,  2104,  2110,  2118,  2124,  2132,  2138,  2147,  2148,  2149,
    1087     2153,  2159,  2160,  2166,  2167,  2171,  2172,  2177,  2183,  2184,
    1088     2187,  2189,  2190,  2194,  2195,  2196,  2197,  2231,  2233,  2234,
    1089     2236,  2241,  2246,  2251,  2253,  2255,  2260,  2262,  2264,  2266,
    1090     2271,  2273,  2282,  2284,  2285,  2290,  2292,  2294,  2299,  2301,
    1091     2303,  2308,  2310,  2312,  2321,  2322,  2323,  2327,  2329,  2331,
    1092     2336,  2338,  2340,  2345,  2347,  2349,  2364,  2366,  2367,  2369,
    1093     2374,  2375,  2380,  2382,  2384,  2389,  2391,  2393,  2395,  2400,
    1094     2402,  2404,  2414,  2416,  2417,  2419,  2424,  2426,  2428,  2433,
    1095     2435,  2437,  2439,  2444,  2446,  2448,  2479,  2481,  2482,  2484,
    1096     2489,  2494,  2502,  2504,  2506,  2511,  2513,  2518,  2520,  2534,
    1097     2535,  2537,  2542,  2544,  2546,  2548,  2550,  2555,  2556,  2558,
    1098     2560,  2565,  2567,  2569,  2575,  2577,  2579,  2583,  2585,  2587,
    1099     2589,  2603,  2604,  2606,  2611,  2613,  2615,  2617,  2619,  2624,
    1100     2625,  2627,  2629,  2634,  2636,  2638,  2644,  2645,  2647,  2656,
    1101     2659,  2661,  2664,  2666,  2668,  2681,  2682,  2684,  2689,  2691,
    1102     2693,  2695,  2697,  2702,  2703,  2705,  2707,  2712,  2714,  2722,
    1103     2723,  2724,  2729,  2730,  2734,  2736,  2738,  2740,  2742,  2744,
    1104     2751,  2753,  2755,  2757,  2759,  2762,  2764,  2766,  2768,  2770,
    1105     2775,  2777,  2779,  2784,  2810,  2811,  2813,  2817,  2818,  2822,
    1106     2824,  2826,  2828,  2830,  2832,  2839,  2841,  2843,  2845,  2847,
    1107     2849,  2854,  2861,  2863,  2881,  2883,  2888,  2889
     1028       0,   305,   305,   309,   316,   317,   318,   319,   320,   324,
     1029     325,   326,   330,   331,   335,   336,   340,   341,   345,   349,
     1030     350,   361,   363,   365,   366,   368,   373,   374,   380,   382,
     1031     384,   386,   388,   390,   392,   394,   396,   398,   407,   408,
     1032     414,   415,   419,   420,   424,   425,   427,   429,   431,   433,
     1033     435,   440,   442,   444,   450,   451,   459,   462,   464,   466,
     1034     471,   484,   486,   488,   490,   492,   494,   496,   498,   500,
     1035     502,   504,   511,   512,   518,   519,   520,   521,   525,   526,
     1036     533,   534,   536,   538,   543,   544,   546,   551,   552,   554,
     1037     559,   560,   562,   564,   566,   571,   572,   574,   579,   580,
     1038     585,   586,   591,   592,   597,   598,   603,   604,   609,   610,
     1039     613,   620,   625,   626,   634,   635,   639,   640,   641,   642,
     1040     643,   644,   645,   646,   647,   648,   649,   650,   660,   662,
     1041     667,   668,   673,   674,   680,   681,   687,   688,   689,   690,
     1042     691,   692,   693,   694,   695,   705,   712,   714,   724,   725,
     1043     730,   732,   738,   740,   744,   745,   750,   755,   758,   760,
     1044     762,   772,   774,   785,   786,   788,   792,   794,   798,   799,
     1045     804,   805,   809,   814,   815,   819,   821,   827,   828,   832,
     1046     834,   836,   838,   844,   845,   849,   851,   856,   858,   860,
     1047     865,   867,   872,   874,   878,   881,   885,   888,   892,   894,
     1048     896,   898,   903,   905,   907,   912,   914,   916,   918,   920,
     1049     925,   927,   929,   931,   936,   948,   949,   954,   956,   961,
     1050     965,   967,   969,   971,   973,   979,   980,   986,   987,   991,
     1051     992,   997,   999,  1005,  1006,  1008,  1013,  1018,  1028,  1030,
     1052    1034,  1035,  1040,  1042,  1046,  1047,  1051,  1053,  1057,  1058,
     1053    1062,  1063,  1067,  1068,  1083,  1084,  1085,  1086,  1087,  1091,
     1054    1096,  1103,  1113,  1118,  1123,  1131,  1136,  1141,  1146,  1151,
     1055    1181,  1186,  1193,  1195,  1202,  1207,  1212,  1223,  1228,  1233,
     1056    1238,  1243,  1252,  1257,  1265,  1266,  1267,  1268,  1274,  1279,
     1057    1287,  1288,  1289,  1290,  1294,  1295,  1296,  1297,  1302,  1303,
     1058    1312,  1313,  1318,  1319,  1324,  1326,  1328,  1330,  1332,  1335,
     1059    1334,  1346,  1347,  1349,  1359,  1360,  1365,  1367,  1369,  1371,
     1060    1373,  1376,  1378,  1381,  1386,  1388,  1390,  1392,  1394,  1396,
     1061    1398,  1400,  1402,  1404,  1406,  1408,  1410,  1416,  1417,  1419,
     1062    1421,  1423,  1428,  1429,  1435,  1436,  1438,  1440,  1445,  1447,
     1063    1449,  1451,  1456,  1457,  1459,  1461,  1466,  1467,  1469,  1474,
     1064    1475,  1477,  1479,  1484,  1486,  1488,  1493,  1494,  1498,  1500,
     1065    1506,  1505,  1509,  1511,  1516,  1518,  1524,  1525,  1530,  1531,
     1066    1533,  1534,  1543,  1544,  1546,  1548,  1553,  1555,  1561,  1562,
     1067    1564,  1567,  1570,  1575,  1576,  1581,  1586,  1590,  1592,  1598,
     1068    1597,  1604,  1606,  1612,  1613,  1621,  1622,  1626,  1627,  1628,
     1069    1630,  1632,  1639,  1640,  1642,  1644,  1649,  1650,  1656,  1657,
     1070    1661,  1662,  1667,  1668,  1669,  1671,  1679,  1680,  1682,  1685,
     1071    1687,  1691,  1692,  1693,  1695,  1697,  1701,  1706,  1714,  1715,
     1072    1724,  1726,  1731,  1732,  1733,  1737,  1738,  1739,  1743,  1744,
     1073    1745,  1749,  1750,  1751,  1756,  1757,  1758,  1759,  1765,  1766,
     1074    1768,  1773,  1774,  1779,  1780,  1781,  1782,  1783,  1798,  1799,
     1075    1804,  1805,  1811,  1813,  1816,  1818,  1820,  1843,  1844,  1846,
     1076    1848,  1853,  1854,  1856,  1861,  1866,  1867,  1873,  1872,  1876,
     1077    1880,  1882,  1884,  1890,  1891,  1896,  1901,  1903,  1908,  1910,
     1078    1911,  1913,  1918,  1920,  1922,  1927,  1929,  1934,  1939,  1947,
     1079    1953,  1952,  1966,  1967,  1972,  1973,  1977,  1982,  1987,  1995,
     1080    2000,  2011,  2012,  2017,  2018,  2024,  2025,  2029,  2030,  2031,
     1081    2034,  2033,  2044,  2053,  2059,  2065,  2074,  2080,  2086,  2092,
     1082    2098,  2106,  2112,  2120,  2126,  2135,  2136,  2137,  2141,  2145,
     1083    2147,  2152,  2153,  2157,  2158,  2163,  2169,  2170,  2173,  2175,
     1084    2176,  2180,  2181,  2182,  2183,  2217,  2219,  2220,  2222,  2227,
     1085    2232,  2237,  2239,  2241,  2246,  2248,  2250,  2252,  2257,  2259,
     1086    2268,  2270,  2271,  2276,  2278,  2280,  2285,  2287,  2289,  2294,
     1087    2296,  2298,  2307,  2308,  2309,  2313,  2315,  2317,  2322,  2324,
     1088    2326,  2331,  2333,  2335,  2350,  2352,  2353,  2355,  2360,  2361,
     1089    2366,  2368,  2370,  2375,  2377,  2379,  2381,  2386,  2388,  2390,
     1090    2400,  2402,  2403,  2405,  2410,  2412,  2414,  2419,  2421,  2423,
     1091    2425,  2430,  2432,  2434,  2465,  2467,  2468,  2470,  2475,  2480,
     1092    2488,  2490,  2492,  2497,  2499,  2504,  2506,  2520,  2521,  2523,
     1093    2528,  2530,  2532,  2534,  2536,  2541,  2542,  2544,  2546,  2551,
     1094    2553,  2555,  2561,  2563,  2565,  2569,  2571,  2573,  2575,  2589,
     1095    2590,  2592,  2597,  2599,  2601,  2603,  2605,  2610,  2611,  2613,
     1096    2615,  2620,  2622,  2624,  2630,  2631,  2633,  2642,  2645,  2647,
     1097    2650,  2652,  2654,  2667,  2668,  2670,  2675,  2677,  2679,  2681,
     1098    2683,  2688,  2689,  2691,  2693,  2698,  2700,  2708,  2709,  2710,
     1099    2715,  2716,  2720,  2722,  2724,  2726,  2728,  2730,  2737,  2739,
     1100    2741,  2743,  2745,  2748,  2750,  2752,  2754,  2756,  2761,  2763,
     1101    2765,  2770,  2796,  2797,  2799,  2803,  2804,  2808,  2810,  2812,
     1102    2814,  2816,  2818,  2825,  2827,  2829,  2831,  2833,  2835,  2840,
     1103    2847,  2849,  2867,  2869,  2874,  2875
    11081104};
    11091105#endif
     
    11171113  "STATIC", "INLINE", "FORTRAN", "CONST", "VOLATILE", "RESTRICT", "FORALL",
    11181114  "LVALUE", "VOID", "CHAR", "SHORT", "INT", "LONG", "FLOAT", "DOUBLE",
    1119   "SIGNED", "UNSIGNED", "ZERO_T", "ONE_T", "VALIST", "BOOL", "COMPLEX",
    1120   "IMAGINARY", "TYPEOF", "LABEL", "ENUM", "STRUCT", "UNION", "OTYPE",
    1121   "FTYPE", "DTYPE", "TRAIT", "SIZEOF", "OFFSETOF", "ATTRIBUTE",
    1122   "EXTENSION", "IF", "ELSE", "SWITCH", "CASE", "DEFAULT", "DO", "WHILE",
    1123   "FOR", "BREAK", "CONTINUE", "GOTO", "RETURN", "CHOOSE", "DISABLE",
    1124   "ENABLE", "FALLTHRU", "TRY", "CATCH", "CATCHRESUME", "FINALLY", "THROW",
    1125   "THROWRESUME", "AT", "ASM", "ALIGNAS", "ALIGNOF", "ATOMIC", "GENERIC",
    1126   "NORETURN", "STATICASSERT", "THREADLOCAL", "IDENTIFIER",
    1127   "QUOTED_IDENTIFIER", "TYPEDEFname", "TYPEGENname", "ATTR_IDENTIFIER",
    1128   "ATTR_TYPEDEFname", "ATTR_TYPEGENname", "INTEGERconstant",
    1129   "CHARACTERconstant", "STRINGliteral", "REALDECIMALconstant",
    1130   "REALFRACTIONconstant", "FLOATINGconstant", "ZERO", "ONE", "ARROW",
    1131   "ICR", "DECR", "LS", "RS", "LE", "GE", "EQ", "NE", "ANDAND", "OROR",
    1132   "ELLIPSIS", "MULTassign", "DIVassign", "MODassign", "PLUSassign",
    1133   "MINUSassign", "LSassign", "RSassign", "ANDassign", "ERassign",
    1134   "ORassign", "ATassign", "THEN", "'('", "')'", "'['", "']'", "'.'", "'{'",
    1135   "'}'", "','", "'*'", "'&'", "'+'", "'-'", "'!'", "'~'", "'/'", "'%'",
    1136   "'<'", "'>'", "'^'", "'|'", "'?'", "':'", "'='", "';'", "$accept",
    1137   "push", "pop", "constant", "identifier", "no_01_identifier",
    1138   "no_attr_identifier", "zero_one", "string_literal",
     1115  "SIGNED", "UNSIGNED", "VALIST", "BOOL", "COMPLEX", "IMAGINARY", "TYPEOF",
     1116  "LABEL", "ENUM", "STRUCT", "UNION", "OTYPE", "FTYPE", "DTYPE", "TRAIT",
     1117  "SIZEOF", "OFFSETOF", "ATTRIBUTE", "EXTENSION", "IF", "ELSE", "SWITCH",
     1118  "CASE", "DEFAULT", "DO", "WHILE", "FOR", "BREAK", "CONTINUE", "GOTO",
     1119  "RETURN", "CHOOSE", "DISABLE", "ENABLE", "FALLTHRU", "TRY", "CATCH",
     1120  "CATCHRESUME", "FINALLY", "THROW", "THROWRESUME", "AT", "ASM", "ALIGNAS",
     1121  "ALIGNOF", "ATOMIC", "GENERIC", "NORETURN", "STATICASSERT",
     1122  "THREADLOCAL", "IDENTIFIER", "QUOTED_IDENTIFIER", "TYPEDEFname",
     1123  "TYPEGENname", "ATTR_IDENTIFIER", "ATTR_TYPEDEFname", "ATTR_TYPEGENname",
     1124  "INTEGERconstant", "CHARACTERconstant", "STRINGliteral",
     1125  "REALDECIMALconstant", "REALFRACTIONconstant", "FLOATINGconstant",
     1126  "ZERO", "ONE", "ARROW", "ICR", "DECR", "LS", "RS", "LE", "GE", "EQ",
     1127  "NE", "ANDAND", "OROR", "ELLIPSIS", "MULTassign", "DIVassign",
     1128  "MODassign", "PLUSassign", "MINUSassign", "LSassign", "RSassign",
     1129  "ANDassign", "ERassign", "ORassign", "ATassign", "THEN", "'('", "')'",
     1130  "'['", "']'", "'.'", "'{'", "'}'", "','", "'*'", "'&'", "'+'", "'-'",
     1131  "'!'", "'~'", "'/'", "'%'", "'<'", "'>'", "'^'", "'|'", "'?'", "':'",
     1132  "'='", "';'", "$accept", "push", "pop", "constant", "identifier",
     1133  "no_01_identifier", "no_attr_identifier", "zero_one", "string_literal",
    11391134  "string_literal_list", "primary_expression", "postfix_expression",
    11401135  "argument_expression_list", "argument_expression", "field_list", "field",
     
    12401235     345,   346,   347,   348,   349,   350,   351,   352,   353,   354,
    12411236     355,   356,   357,   358,   359,   360,   361,   362,   363,   364,
    1242      365,   366,   367,    40,    41,    91,    93,    46,   123,   125,
    1243       44,    42,    38,    43,    45,    33,   126,    47,    37,    60,
    1244       62,    94,   124,    63,    58,    61,    59
     1237     365,    40,    41,    91,    93,    46,   123,   125,    44,    42,
     1238      38,    43,    45,    33,   126,    47,    37,    60,    62,    94,
     1239     124,    63,    58,    61,    59
    12451240};
    12461241# endif
     
    12491244static const yytype_uint16 yyr1[] =
    12501245{
    1251        0,   137,   138,   139,   140,   140,   140,   140,   140,   141,
    1252      141,   141,   142,   142,   143,   143,   144,   144,   145,   146,
    1253      146,   147,   147,   147,   147,   147,   148,   148,   148,   148,
    1254      148,   148,   148,   148,   148,   148,   148,   148,   149,   149,
    1255      150,   150,   151,   151,   152,   152,   152,   152,   152,   152,
    1256      152,   153,   153,   153,   154,   154,   155,   155,   155,   155,
    1257      155,   155,   155,   155,   155,   155,   155,   155,   155,   155,
    1258      155,   155,   156,   156,   157,   157,   157,   157,   158,   158,
    1259      159,   159,   159,   159,   160,   160,   160,   161,   161,   161,
    1260      162,   162,   162,   162,   162,   163,   163,   163,   164,   164,
    1261      165,   165,   166,   166,   167,   167,   168,   168,   169,   169,
    1262      169,   170,   171,   171,   172,   172,   173,   173,   173,   173,
    1263      173,   173,   173,   173,   173,   173,   173,   173,   174,   174,
    1264      175,   175,   176,   176,   177,   177,   178,   178,   178,   178,
    1265      178,   178,   178,   178,   178,   179,   180,   180,   181,   181,
    1266      182,   182,   182,   182,   183,   183,   184,   185,   185,   185,
    1267      185,   185,   185,   186,   186,   186,   187,   187,   188,   188,
    1268      189,   189,   190,   191,   191,   192,   192,   193,   193,   194,
    1269      194,   194,   194,   195,   195,   196,   196,   197,   197,   197,
    1270      198,   198,   199,   199,   199,   199,   199,   199,   199,   199,
    1271      199,   199,   200,   200,   200,   201,   201,   201,   201,   201,
    1272      202,   202,   202,   202,   203,   204,   204,   204,   204,   204,
    1273      205,   205,   205,   205,   205,   206,   206,   207,   207,   208,
    1274      208,   209,   209,   210,   210,   210,   211,   211,   212,   212,
    1275      213,   213,   214,   214,   215,   215,   216,   216,   217,   217,
    1276      218,   218,   219,   219,   220,   220,   220,   220,   220,   221,
    1277      221,   221,   222,   222,   222,   223,   223,   223,   223,   223,
    1278      224,   224,   225,   225,   226,   226,   226,   227,   227,   227,
    1279      227,   227,   228,   228,   229,   229,   229,   229,   230,   230,
    1280      231,   231,   231,   231,   232,   232,   232,   232,   233,   233,
    1281      234,   234,   235,   235,   236,   236,   236,   236,   236,   237,
    1282      236,   238,   238,   238,   239,   239,   240,   240,   240,   240,
    1283      240,   240,   240,   240,   241,   241,   241,   241,   241,   241,
    1284      241,   241,   241,   241,   241,   241,   241,   241,   241,   242,
    1285      242,   242,   242,   242,   243,   243,   244,   244,   244,   244,
    1286      245,   245,   245,   245,   246,   246,   246,   246,   247,   247,
    1287      247,   248,   248,   248,   248,   249,   249,   249,   250,   250,
    1288      251,   251,   252,   251,   251,   251,   253,   253,   254,   254,
    1289      255,   255,   255,   255,   256,   256,   256,   256,   257,   257,
    1290      258,   258,   258,   258,   258,   259,   259,   260,   261,   262,
    1291      262,   263,   262,   264,   264,   265,   265,   266,   266,   267,
    1292      267,   267,   267,   267,   268,   268,   268,   268,   269,   269,
    1293      270,   270,   271,   271,   272,   272,   272,   272,   273,   273,
    1294      273,   273,   273,   274,   274,   274,   274,   274,   275,   275,
    1295      276,   276,   277,   277,   278,   278,   278,   279,   279,   279,
    1296      280,   280,   280,   281,   281,   281,   282,   282,   282,   282,
    1297      283,   283,   283,   284,   284,   285,   285,   285,   285,   285,
    1298      286,   286,   287,   287,   288,   288,   288,   288,   288,   289,
    1299      289,   289,   289,   290,   290,   290,   291,   292,   292,   294,
    1300      293,   293,   295,   295,   295,   296,   296,   297,   297,   297,
    1301      298,   298,   298,   298,   299,   299,   299,   300,   300,   301,
    1302      301,   302,   303,   302,   304,   304,   305,   305,   306,   306,
    1303      306,   307,   307,   308,   308,   309,   309,   310,   310,   311,
    1304      311,   311,   312,   311,   311,   313,   313,   313,   314,   314,
    1305      314,   314,   314,   314,   314,   314,   314,   315,   315,   315,
    1306      316,   317,   317,   318,   318,   319,   319,   320,   321,   321,
    1307      322,   322,   322,   323,   323,   323,   323,   324,   324,   324,
    1308      324,   325,   325,   326,   326,   326,   327,   327,   327,   327,
    1309      328,   328,   329,   329,   329,   330,   330,   330,   331,   331,
    1310      331,   332,   332,   332,   333,   333,   333,   334,   334,   334,
    1311      335,   335,   335,   336,   336,   336,   337,   337,   337,   337,
    1312      338,   338,   339,   339,   339,   340,   340,   340,   340,   341,
    1313      341,   341,   342,   342,   342,   342,   343,   343,   343,   344,
    1314      344,   344,   344,   345,   345,   345,   346,   346,   346,   346,
    1315      347,   347,   348,   348,   348,   349,   349,   350,   350,   351,
    1316      351,   351,   352,   352,   352,   352,   352,   353,   353,   353,
    1317      353,   354,   354,   354,   355,   355,   355,   356,   356,   356,
    1318      356,   357,   357,   357,   358,   358,   358,   358,   358,   359,
    1319      359,   359,   359,   360,   360,   360,   361,   361,   361,   362,
    1320      362,   362,   362,   362,   362,   363,   363,   363,   364,   364,
    1321      364,   364,   364,   365,   365,   365,   365,   366,   366,   367,
    1322      367,   367,   368,   368,   369,   369,   369,   369,   369,   369,
    1323      370,   370,   370,   370,   370,   370,   370,   370,   370,   370,
    1324      371,   371,   371,   371,   372,   372,   372,   373,   373,   374,
    1325      374,   374,   374,   374,   374,   375,   375,   375,   375,   375,
    1326      375,   376,   377,   377,   378,   378,   379,   379
     1246       0,   135,   136,   137,   138,   138,   138,   138,   138,   139,
     1247     139,   139,   140,   140,   141,   141,   142,   142,   143,   144,
     1248     144,   145,   145,   145,   145,   145,   146,   146,   146,   146,
     1249     146,   146,   146,   146,   146,   146,   146,   146,   147,   147,
     1250     148,   148,   149,   149,   150,   150,   150,   150,   150,   150,
     1251     150,   151,   151,   151,   152,   152,   153,   153,   153,   153,
     1252     153,   153,   153,   153,   153,   153,   153,   153,   153,   153,
     1253     153,   153,   154,   154,   155,   155,   155,   155,   156,   156,
     1254     157,   157,   157,   157,   158,   158,   158,   159,   159,   159,
     1255     160,   160,   160,   160,   160,   161,   161,   161,   162,   162,
     1256     163,   163,   164,   164,   165,   165,   166,   166,   167,   167,
     1257     167,   168,   169,   169,   170,   170,   171,   171,   171,   171,
     1258     171,   171,   171,   171,   171,   171,   171,   171,   172,   172,
     1259     173,   173,   174,   174,   175,   175,   176,   176,   176,   176,
     1260     176,   176,   176,   176,   176,   177,   178,   178,   179,   179,
     1261     180,   180,   180,   180,   181,   181,   182,   183,   183,   183,
     1262     183,   183,   183,   184,   184,   184,   185,   185,   186,   186,
     1263     187,   187,   188,   189,   189,   190,   190,   191,   191,   192,
     1264     192,   192,   192,   193,   193,   194,   194,   195,   195,   195,
     1265     196,   196,   197,   197,   197,   197,   197,   197,   197,   197,
     1266     197,   197,   198,   198,   198,   199,   199,   199,   199,   199,
     1267     200,   200,   200,   200,   201,   202,   202,   202,   202,   202,
     1268     203,   203,   203,   203,   203,   204,   204,   205,   205,   206,
     1269     206,   207,   207,   208,   208,   208,   209,   209,   210,   210,
     1270     211,   211,   212,   212,   213,   213,   214,   214,   215,   215,
     1271     216,   216,   217,   217,   218,   218,   218,   218,   218,   219,
     1272     219,   219,   220,   220,   220,   221,   221,   221,   221,   221,
     1273     222,   222,   223,   223,   224,   224,   224,   225,   225,   225,
     1274     225,   225,   226,   226,   227,   227,   227,   227,   228,   228,
     1275     229,   229,   229,   229,   230,   230,   230,   230,   231,   231,
     1276     232,   232,   233,   233,   234,   234,   234,   234,   234,   235,
     1277     234,   236,   236,   236,   237,   237,   238,   238,   238,   238,
     1278     238,   238,   238,   238,   239,   239,   239,   239,   239,   239,
     1279     239,   239,   239,   239,   239,   239,   239,   240,   240,   240,
     1280     240,   240,   241,   241,   242,   242,   242,   242,   243,   243,
     1281     243,   243,   244,   244,   244,   244,   245,   245,   245,   246,
     1282     246,   246,   246,   247,   247,   247,   248,   248,   249,   249,
     1283     250,   249,   249,   249,   251,   251,   252,   252,   253,   253,
     1284     253,   253,   254,   254,   254,   254,   255,   255,   256,   256,
     1285     256,   256,   256,   257,   257,   258,   259,   260,   260,   261,
     1286     260,   262,   262,   263,   263,   264,   264,   265,   265,   265,
     1287     265,   265,   266,   266,   266,   266,   267,   267,   268,   268,
     1288     269,   269,   270,   270,   270,   270,   271,   271,   271,   271,
     1289     271,   272,   272,   272,   272,   272,   273,   273,   274,   274,
     1290     275,   275,   276,   276,   276,   277,   277,   277,   278,   278,
     1291     278,   279,   279,   279,   280,   280,   280,   280,   281,   281,
     1292     281,   282,   282,   283,   283,   283,   283,   283,   284,   284,
     1293     285,   285,   286,   286,   286,   286,   286,   287,   287,   287,
     1294     287,   288,   288,   288,   289,   290,   290,   292,   291,   291,
     1295     293,   293,   293,   294,   294,   295,   295,   295,   296,   296,
     1296     296,   296,   297,   297,   297,   298,   298,   299,   299,   300,
     1297     301,   300,   302,   302,   303,   303,   304,   304,   304,   305,
     1298     305,   306,   306,   307,   307,   308,   308,   309,   309,   309,
     1299     310,   309,   309,   311,   311,   311,   312,   312,   312,   312,
     1300     312,   312,   312,   312,   312,   313,   313,   313,   314,   315,
     1301     315,   316,   316,   317,   317,   318,   319,   319,   320,   320,
     1302     320,   321,   321,   321,   321,   322,   322,   322,   322,   323,
     1303     323,   324,   324,   324,   325,   325,   325,   325,   326,   326,
     1304     327,   327,   327,   328,   328,   328,   329,   329,   329,   330,
     1305     330,   330,   331,   331,   331,   332,   332,   332,   333,   333,
     1306     333,   334,   334,   334,   335,   335,   335,   335,   336,   336,
     1307     337,   337,   337,   338,   338,   338,   338,   339,   339,   339,
     1308     340,   340,   340,   340,   341,   341,   341,   342,   342,   342,
     1309     342,   343,   343,   343,   344,   344,   344,   344,   345,   345,
     1310     346,   346,   346,   347,   347,   348,   348,   349,   349,   349,
     1311     350,   350,   350,   350,   350,   351,   351,   351,   351,   352,
     1312     352,   352,   353,   353,   353,   354,   354,   354,   354,   355,
     1313     355,   355,   356,   356,   356,   356,   356,   357,   357,   357,
     1314     357,   358,   358,   358,   359,   359,   359,   360,   360,   360,
     1315     360,   360,   360,   361,   361,   361,   362,   362,   362,   362,
     1316     362,   363,   363,   363,   363,   364,   364,   365,   365,   365,
     1317     366,   366,   367,   367,   367,   367,   367,   367,   368,   368,
     1318     368,   368,   368,   368,   368,   368,   368,   368,   369,   369,
     1319     369,   369,   370,   370,   370,   371,   371,   372,   372,   372,
     1320     372,   372,   372,   373,   373,   373,   373,   373,   373,   374,
     1321     375,   375,   376,   376,   377,   377
    13271322};
    13281323
     
    13631358       5,     1,     2,     3,     1,     2,     1,     1,     1,     1,
    13641359       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
    1365        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
    1366        2,     2,     3,     3,     1,     3,     1,     2,     2,     2,
    1367        4,     4,     4,     4,     1,     2,     2,     3,     1,     2,
    1368        2,     1,     2,     2,     3,     1,     2,     2,     1,     1,
    1369        4,     2,     0,     6,     7,     2,     2,     2,     0,     2,
    1370        2,     3,     2,     3,     1,     2,     3,     2,     2,     4,
    1371        0,     1,     2,     2,     1,     0,     1,     2,     2,     5,
    1372        2,     0,     7,     2,     4,     0,     2,     0,     1,     1,
    1373        1,     5,     5,     5,     1,     5,     5,     9,     1,     5,
    1374        0,     1,     1,     5,     1,     1,     5,     5,     1,     3,
    1375        3,     4,     1,     1,     1,     1,     2,     1,     3,     3,
    1376        1,     2,     1,     3,     1,     1,     1,     1,     1,     1,
    1377        1,     1,     1,     1,     1,     2,     1,     1,     1,     2,
    1378        0,     2,     2,     1,     4,     0,     1,     2,     3,     4,
    1379        2,     2,     1,     2,     2,     5,     5,     7,     6,     1,
    1380        2,     2,     3,     1,     2,     2,     4,     2,     4,     0,
    1381        4,     2,     1,     1,     1,     0,     2,     5,     5,    13,
    1382        1,     1,     3,     3,     2,     3,     3,     2,     4,     1,
    1383        6,     9,     0,    11,     1,     3,     3,     3,     1,     1,
    1384        5,     2,     5,     0,     1,     1,     3,     0,     1,     1,
    1385        1,     1,     0,     6,     2,     1,     2,     4,     2,     3,
    1386        3,     3,     4,     5,     5,     5,     6,     1,     1,     1,
    1387        3,     0,     5,     0,     1,     1,     2,     6,     1,     3,
    1388        0,     1,     4,     1,     1,     1,     1,     2,     1,     2,
    1389        2,     1,     3,     2,     3,     3,     2,     4,     4,     3,
    1390        8,     3,     2,     1,     2,     6,     8,     3,     2,     3,
    1391        3,     4,     4,     3,     1,     1,     1,     4,     6,     3,
    1392        2,     3,     3,     4,     4,     3,     2,     1,     2,     2,
    1393        1,     3,     2,     3,     3,     2,     4,     4,     3,     6,
    1394        8,     3,     2,     1,     2,     2,     2,     3,     3,     2,
    1395        4,     4,     3,     6,     8,     3,     2,     1,     2,     2,
    1396        1,     1,     2,     3,     3,     2,     4,     6,     8,     1,
     1360       1,     1,     1,     1,     1,     1,     1,     1,     2,     2,
     1361       3,     3,     1,     3,     1,     2,     2,     2,     4,     4,
     1362       4,     4,     1,     2,     2,     3,     1,     2,     2,     1,
     1363       2,     2,     3,     1,     2,     2,     1,     1,     4,     2,
     1364       0,     6,     7,     2,     2,     2,     0,     2,     2,     3,
     1365       2,     3,     1,     2,     3,     2,     2,     4,     0,     1,
     1366       2,     2,     1,     0,     1,     2,     2,     5,     2,     0,
     1367       7,     2,     4,     0,     2,     0,     1,     1,     1,     5,
     1368       5,     5,     1,     5,     5,     9,     1,     5,     0,     1,
     1369       1,     5,     1,     1,     5,     5,     1,     3,     3,     4,
     1370       1,     1,     1,     1,     2,     1,     3,     3,     1,     2,
     1371       1,     3,     1,     1,     1,     1,     1,     1,     1,     1,
     1372       1,     1,     1,     2,     1,     1,     1,     2,     0,     2,
     1373       2,     1,     4,     0,     1,     2,     3,     4,     2,     2,
     1374       1,     2,     2,     5,     5,     7,     6,     1,     2,     2,
     1375       3,     1,     2,     2,     4,     2,     4,     0,     4,     2,
     1376       1,     1,     1,     0,     2,     5,     5,    13,     1,     1,
     1377       3,     3,     2,     3,     3,     2,     4,     1,     6,     9,
     1378       0,    11,     1,     3,     3,     3,     1,     1,     5,     2,
     1379       5,     0,     1,     1,     3,     0,     1,     1,     1,     1,
     1380       0,     6,     2,     1,     2,     4,     2,     3,     3,     3,
     1381       4,     5,     5,     5,     6,     1,     1,     1,     3,     0,
     1382       5,     0,     1,     1,     2,     6,     1,     3,     0,     1,
     1383       4,     1,     1,     1,     1,     2,     1,     2,     2,     1,
     1384       3,     2,     3,     3,     2,     4,     4,     3,     8,     3,
     1385       2,     1,     2,     6,     8,     3,     2,     3,     3,     4,
     1386       4,     3,     1,     1,     1,     4,     6,     3,     2,     3,
     1387       3,     4,     4,     3,     2,     1,     2,     2,     1,     3,
     1388       2,     3,     3,     2,     4,     4,     3,     6,     8,     3,
     1389       2,     1,     2,     2,     2,     3,     3,     2,     4,     4,
     1390       3,     6,     8,     3,     2,     1,     2,     2,     1,     1,
     1391       2,     3,     3,     2,     4,     6,     8,     1,     2,     2,
     1392       1,     2,     2,     3,     3,     1,     4,     4,     3,     5,
     1393       8,     3,     2,     3,     1,     5,     5,     6,     6,     1,
    13971394       2,     2,     1,     2,     2,     3,     3,     1,     4,     4,
    1398        3,     5,     8,     3,     2,     3,     1,     5,     5,     6,
    1399        6,     1,     2,     2,     1,     2,     2,     3,     3,     1,
    1400        4,     4,     3,     5,     8,     3,     1,     2,     1,     2,
    1401        6,     5,     6,     7,     7,     1,     2,     2,     1,     2,
    1402        2,     3,     3,     1,     4,     4,     3,     8,     3,     1,
    1403        1,     2,     1,     1,     2,     3,     2,     3,     2,     3,
    1404        3,     2,     4,     3,     2,     3,     2,     4,     3,     2,
    1405        6,     6,     6,     7,     1,     2,     1,     1,     1,     2,
    1406        3,     2,     3,     2,     3,     3,     4,     2,     3,     4,
    1407        2,     5,     6,     6,     0,     1,     0,     2
     1395       3,     5,     8,     3,     1,     2,     1,     2,     6,     5,
     1396       6,     7,     7,     1,     2,     2,     1,     2,     2,     3,
     1397       3,     1,     4,     4,     3,     8,     3,     1,     1,     2,
     1398       1,     1,     2,     3,     2,     3,     2,     3,     3,     2,
     1399       4,     3,     2,     3,     2,     4,     3,     2,     6,     6,
     1400       6,     7,     1,     2,     1,     1,     1,     2,     3,     2,
     1401       3,     2,     3,     3,     4,     2,     3,     4,     2,     5,
     1402       6,     6,     0,     1,     0,     2
    14081403};
    14091404
     
    14151410     298,   298,   318,   316,   319,   317,   320,   321,   304,   306,
    14161411     305,     0,   307,   332,   324,   329,   327,   328,   326,   325,
    1417      330,   331,   337,   338,   336,   333,   334,   335,   553,   553,
    1418      553,     0,     0,     0,   298,   225,   308,   322,   323,     9,
    1419      365,     0,    10,    16,    17,     0,     2,    72,    73,   571,
    1420       11,   298,   531,   529,   252,     3,   460,     3,   265,     0,
    1421        3,     3,     3,   253,     3,     0,     0,     0,   299,   300,
    1422      302,   298,   311,   314,   346,   290,   339,   344,   291,   354,
    1423      292,   361,   358,   368,     0,     0,   369,   293,   479,   483,
    1424        3,     3,     0,     2,   525,   530,   535,   303,     0,     0,
    1425      553,   583,   553,     2,   594,   595,   596,   298,     0,   737,
    1426      738,     0,    14,     0,    15,   298,   274,   275,     0,   299,
    1427      294,   295,   296,   297,   532,   309,   398,   554,   555,   376,
    1428      377,    14,   451,   452,    13,   447,   450,     0,   509,   504,
    1429      495,   451,   452,     0,     0,   534,   226,     0,   298,     0,
    1430        0,     0,     0,     0,     0,     0,     0,   298,   298,     0,
    1431      739,   299,   588,   600,   743,   736,   734,   741,     0,     0,
    1432        0,   259,     2,     0,   538,   445,   446,   444,     0,     0,
    1433        0,     0,   553,     0,   640,   641,     0,     0,   551,   547,
    1434      553,   568,   553,   553,   549,     2,   548,   553,   607,   553,
    1435      553,   610,     0,     0,     0,   298,   298,   316,   366,     2,
    1436      298,   266,   301,   312,   347,   359,   484,     0,     2,     0,
    1437      460,   267,   299,   340,   355,   362,   480,     0,     2,     0,
    1438      315,   341,   348,   349,     0,   356,   360,   363,   367,   452,
    1439      298,   378,   371,   375,     0,   400,   481,   485,     0,     0,
    1440        0,     1,   298,     2,   536,   582,   584,   298,     2,   747,
    1441      299,   750,   551,   551,     0,   299,     0,     0,   277,   553,
    1442      549,     2,   298,     0,     0,   298,   556,     2,   507,     2,
    1443      560,     0,     0,     0,     0,     0,     0,    21,    69,     4,
    1444        8,    19,     5,     6,     7,     0,     0,   298,     2,    74,
    1445       75,    76,    77,    57,    22,    58,    18,    26,    56,    78,
    1446      298,     0,    80,    84,    87,    90,    95,    98,   100,   102,
    1447      104,   106,   108,   112,   501,    23,   458,   500,     0,   456,
    1448      457,     0,   572,   587,   590,   593,   599,   602,   605,     2,
    1449      745,   298,   748,     2,    72,   298,     3,   432,     0,   440,
    1450      299,   298,   311,   339,   291,   354,   361,     3,     3,   414,
    1451      418,   428,   433,   479,   298,   434,   712,   713,   298,   435,
    1452      437,     2,   589,   601,   735,     2,     2,   254,     2,   465,
    1453        0,   463,   462,   461,   146,     2,     2,   256,     2,     2,
    1454      255,     2,   285,     2,   286,     0,   284,     0,     0,     0,
    1455        0,     0,     0,     0,     0,     0,   573,   612,     0,   460,
    1456        2,   567,   576,   666,   569,   570,   539,   298,     2,   606,
    1457      615,   608,   609,     0,   280,   298,   298,   345,   299,     0,
    1458      299,   298,   740,   744,   742,   540,   298,   551,   260,   268,
    1459      313,     0,     2,   541,   298,   505,   342,   343,   287,   357,
    1460      364,     0,   298,     0,   754,   405,     0,   482,   506,   257,
    1461      258,   526,   298,   442,     0,   298,   242,     0,     2,   244,
    1462        0,   299,     0,   262,     2,   263,   282,     0,     0,     2,
    1463      298,   551,   298,   492,   494,   493,     0,     0,   756,     0,
    1464      298,     0,   298,   496,   298,   566,   564,   565,   563,     0,
    1465      558,   561,     0,     0,   298,    64,   298,    78,    59,   298,
    1466       66,   298,   298,    62,    63,     2,   132,     0,     0,   454,
    1467        0,   453,   734,   298,    20,    31,     0,    34,    35,    40,
    1468        2,     0,    40,   118,   119,   120,   121,   122,   123,   124,
    1469      125,   126,   127,   117,   116,     0,    60,    61,     0,     0,
     1412     330,   331,   336,   333,   334,   335,   551,   551,   551,     0,
     1413       0,     0,   298,   225,   308,   322,   323,     9,   363,     0,
     1414      10,    16,    17,     0,     2,    72,    73,   569,    11,   298,
     1415     529,   527,   252,     3,   458,     3,   265,     0,     3,     3,
     1416       3,   253,     3,     0,     0,     0,   299,   300,   302,   298,
     1417     311,   314,   344,   290,   337,   342,   291,   352,   292,   359,
     1418     356,   366,     0,     0,   367,   293,   477,   481,     3,     3,
     1419       0,     2,   523,   528,   533,   303,     0,     0,   551,   581,
     1420     551,     2,   592,   593,   594,   298,     0,   735,   736,     0,
     1421      14,     0,    15,   298,   274,   275,     0,   299,   294,   295,
     1422     296,   297,   530,   309,   396,   552,   553,   374,   375,    14,
     1423     449,   450,    13,   445,   448,     0,   507,   502,   493,   449,
     1424     450,     0,     0,   532,   226,     0,   298,     0,     0,     0,
     1425       0,     0,     0,     0,     0,   298,   298,     0,   737,   299,
     1426     586,   598,   741,   734,   732,   739,     0,     0,     0,   259,
     1427       2,     0,   536,   443,   444,   442,     0,     0,     0,     0,
     1428     551,     0,   638,   639,     0,     0,   549,   545,   551,   566,
     1429     551,   551,   547,     2,   546,   551,   605,   551,   551,   608,
     1430       0,     0,     0,   298,   298,   316,   364,     2,   298,   266,
     1431     301,   312,   345,   357,   482,     0,     2,     0,   458,   267,
     1432     299,   338,   353,   360,   478,     0,     2,     0,   315,   339,
     1433     346,   347,     0,   354,   358,   361,   365,   450,   298,   376,
     1434     369,   373,     0,   398,   479,   483,     0,     0,     0,     1,
     1435     298,     2,   534,   580,   582,   298,     2,   745,   299,   748,
     1436     549,   549,     0,   299,     0,     0,   277,   551,   547,     2,
     1437     298,     0,     0,   298,   554,     2,   505,     2,   558,     0,
     1438       0,     0,     0,     0,     0,    21,    69,     4,     8,    19,
     1439       5,     6,     7,     0,     0,   298,     2,    74,    75,    76,
     1440      77,    57,    22,    58,    18,    26,    56,    78,   298,     0,
     1441      80,    84,    87,    90,    95,    98,   100,   102,   104,   106,
     1442     108,   112,   499,    23,   456,   498,     0,   454,   455,     0,
     1443     570,   585,   588,   591,   597,   600,   603,     2,   743,   298,
     1444     746,     2,    72,   298,     3,   430,     0,   438,   299,   298,
     1445     311,   337,   291,   352,   359,     3,     3,   412,   416,   426,
     1446     431,   477,   298,   432,   710,   711,   298,   433,   435,     2,
     1447     587,   599,   733,     2,     2,   254,     2,   463,     0,   461,
     1448     460,   459,   146,     2,     2,   256,     2,     2,   255,     2,
     1449     285,     2,   286,     0,   284,     0,     0,     0,     0,     0,
     1450       0,     0,     0,     0,   571,   610,     0,   458,     2,   565,
     1451     574,   664,   567,   568,   537,   298,     2,   604,   613,   606,
     1452     607,     0,   280,   298,   298,   343,   299,     0,   299,   298,
     1453     738,   742,   740,   538,   298,   549,   260,   268,   313,     0,
     1454       2,   539,   298,   503,   340,   341,   287,   355,   362,     0,
     1455     298,     0,   752,   403,     0,   480,   504,   257,   258,   524,
     1456     298,   440,     0,   298,   242,     0,     2,   244,     0,   299,
     1457       0,   262,     2,   263,   282,     0,     0,     2,   298,   549,
     1458     298,   490,   492,   491,     0,     0,   754,     0,   298,     0,
     1459     298,   494,   298,   564,   562,   563,   561,     0,   556,   559,
     1460       0,     0,   298,    64,   298,    78,    59,   298,    66,   298,
     1461     298,    62,    63,     2,   132,     0,     0,   452,     0,   451,
     1462     732,   298,    20,    31,     0,    34,    35,    40,     2,     0,
     1463      40,   118,   119,   120,   121,   122,   123,   124,   125,   126,
     1464     127,   117,   116,     0,    60,    61,     0,     0,     0,     0,
    14701465       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    1471        0,     0,     0,     0,     0,     0,     0,     2,   652,   459,
    1472      649,   553,   553,   657,   486,   298,     2,   591,   592,     0,
    1473      603,   604,     0,   746,   749,   298,   298,     0,   714,   299,
    1474      718,   709,   710,   716,     0,     2,     2,   674,   553,   756,
    1475      623,   553,   553,   756,   553,   637,   553,   553,   688,   441,
    1476      671,   553,   553,   679,   686,   298,   436,   299,     0,     0,
    1477      298,   724,   299,   729,   756,   721,   298,   726,   756,   298,
    1478      298,     0,     0,    21,     2,     0,    22,     0,   466,   754,
    1479        0,     0,   472,   246,     0,   298,     0,     0,     0,   551,
    1480      575,   579,   581,   611,   614,   618,   621,   574,   613,     0,
    1481      288,   664,     0,   298,   281,     0,     0,     0,     0,   279,
    1482        2,     0,   264,   542,   298,     0,     0,   298,     2,   370,
    1483      390,   379,     0,     0,   384,   378,   755,     0,     0,   403,
    1484        0,   299,     3,   421,     3,   425,   424,   597,     0,   537,
    1485      298,    72,     3,   298,   440,   299,     3,   434,   435,     2,
    1486        0,     0,     0,   491,   310,   298,     0,   487,   489,     3,
    1487        2,     2,     0,   508,     3,     0,   560,   134,     0,     0,
    1488      227,     0,     0,     0,     0,    41,     0,     0,   298,    24,
    1489        0,    25,     0,   698,   703,   455,   695,   553,   553,     0,
    1490      114,     3,     2,    32,     0,    38,     0,     2,    29,     0,
    1491      113,    81,    82,    83,    85,    86,    88,    89,    93,    94,
    1492       91,    92,    96,    97,    99,   101,   103,   105,   107,     0,
    1493        0,   298,     0,     0,     0,   653,   654,   650,   651,   503,
    1494      502,   298,     0,   720,   298,   725,   299,   298,   668,   711,
    1495      667,     2,   298,     0,     0,     0,     0,     0,     0,     0,
    1496        0,   689,     0,   675,   626,   642,   676,     2,   622,   629,
    1497      438,   624,   625,   439,     2,   636,   645,   638,   639,   672,
    1498      673,   687,   715,   719,   717,   756,   272,     2,   751,     2,
    1499      429,   723,   728,   430,     3,   408,     3,     3,     3,   460,
    1500        0,     0,     2,   474,   471,   755,     0,   467,     2,   470,
    1501      473,     0,   298,   247,   269,     3,   276,   278,     0,   460,
    1502        2,   577,   578,     2,   616,   617,     0,   665,   543,     3,
    1503      351,   350,   353,   352,   298,   544,     0,   545,   378,     0,
    1504        0,   298,     0,     0,   698,   388,   391,   395,   553,   395,
    1505      394,   387,   380,   553,   382,   385,   298,   405,   399,   111,
    1506      406,   754,     0,     0,   443,   245,     0,     0,     3,     2,
    1507      674,   436,     0,   533,     0,   756,   757,   495,     0,   298,
    1508      298,   298,     0,   557,   559,   135,     0,     0,   220,     0,
    1509        0,     0,   228,   229,    65,     0,    67,    70,    71,     0,
    1510      133,     0,     0,     0,   699,   700,   696,   697,   465,    79,
    1511      115,   130,     3,   114,     0,    28,    40,     3,     0,    37,
    1512      110,     0,     3,   656,   660,   663,   655,     3,   598,   722,
    1513      727,     2,    72,   298,     3,     3,   299,     0,     3,   628,
    1514      632,   635,   644,   678,   682,   685,   298,     3,   627,   643,
    1515      677,   298,   298,   431,   298,   298,     0,     0,     0,     0,
    1516      261,   111,     0,     3,     3,     0,   468,     0,   464,     0,
    1517        0,   250,   298,     0,     0,   134,     0,     0,     0,     0,
    1518        0,   134,     0,     0,   114,   114,    21,     0,     0,     3,
    1519      136,   137,     2,   148,   138,   139,   140,   141,   142,   143,
    1520      150,   152,     0,     0,     0,   289,   298,   298,   553,     0,
    1521      546,   298,   381,   383,     0,   397,   699,   392,   396,   393,
    1522      386,   390,   373,   404,     0,   585,     2,   670,   669,     0,
    1523      675,     2,   488,   490,   510,     3,   518,   519,     0,     2,
    1524      514,     3,     3,     0,     0,   562,   227,     0,     0,     0,
    1525      227,     0,     0,   702,   706,   708,   701,   754,   114,     0,
    1526        3,    54,     0,    54,    54,     3,    42,    44,    39,     0,
    1527        3,   109,     0,     2,   658,   659,     0,   298,     0,     0,
    1528        0,     3,   644,     0,     2,   630,   631,     2,   646,     2,
    1529      680,   681,     0,     0,    72,     0,     3,     3,     3,     3,
    1530      416,   415,   419,   753,     2,     2,   752,     0,     0,     0,
    1531        0,     3,   469,     3,     0,   248,   151,     3,   299,   298,
    1532        0,     0,     0,     0,     2,     0,   196,     0,   194,     0,
    1533        0,     0,     0,     0,     0,     0,   553,     0,   156,   153,
    1534      298,     0,     0,   271,   283,     3,     3,   552,   619,   374,
    1535      389,   402,   298,   270,   298,     0,   521,   498,   298,     0,
    1536        0,   497,   512,     0,     0,     0,   221,     0,   230,    68,
    1537        2,   704,   705,     0,   131,   128,     0,    51,     2,    45,
    1538       52,    53,     0,     0,     0,     0,    27,     0,   661,   298,
    1539      586,   730,   731,   732,     0,   683,   298,   298,   298,     3,
    1540        3,     0,   691,     0,     0,     0,     0,   298,   298,     3,
    1541      550,   475,   476,     0,   251,   299,     0,     0,     0,     0,
    1542      298,   197,   195,   192,     0,   198,     0,     0,     0,     0,
    1543      202,   205,   203,   199,     0,   200,   134,    40,   149,   147,
    1544      249,     0,     0,   423,   427,   426,     0,   515,     2,   516,
    1545        2,   517,   511,   298,   233,     0,   231,     0,   233,   298,
    1546       36,   129,    55,     0,    43,    33,     2,    49,     2,    47,
    1547       30,     3,   733,     3,     3,     3,     0,     0,   690,   692,
    1548      633,   647,   273,     2,   413,     3,   412,     0,   478,   134,
    1549        0,     0,   134,     3,     0,   134,   193,     0,     2,     2,
    1550      214,   204,     0,     0,     0,   145,     0,   580,   620,     2,
    1551        0,     0,     2,   234,     0,     0,   222,     0,     3,     3,
    1552        0,     0,     0,     0,     0,     0,   693,   694,   298,     0,
    1553      477,   157,     0,     0,     2,   170,   134,   159,     0,   187,
    1554        0,   134,     0,     2,   161,     0,     2,     0,     2,     2,
    1555        2,   201,    37,   298,   520,   522,   513,     0,     0,     0,
    1556        0,     0,     0,     3,     3,   662,   634,   648,   684,   417,
    1557      134,   163,   166,     0,   165,   169,     3,   172,   171,     0,
    1558      134,   189,   134,     3,     0,   298,     0,   298,     0,     2,
    1559        0,     2,   144,     2,   235,   236,     0,   232,   223,   707,
    1560       46,     0,     0,   158,     0,     0,   168,   238,   173,     2,
    1561      240,   188,     0,   191,   177,   206,     3,   215,   219,   208,
    1562        3,     0,   298,     0,   298,     0,     0,     0,    50,    48,
    1563      164,   167,   134,     0,   174,   298,   134,   134,     0,   178,
    1564        0,     0,   698,   216,   217,   218,     0,   207,     3,   209,
    1565        3,   298,   224,   237,   154,   175,   160,   134,   241,   190,
    1566      185,   183,   179,   162,   134,     0,   699,     0,     0,     0,
    1567        0,   155,   176,   186,   180,   184,   183,   181,     3,     3,
    1568        0,     0,   499,   182,   210,   212,     3,     3,   211,   213
     1466       0,     0,     0,     0,     0,     2,   650,   457,   647,   551,
     1467     551,   655,   484,   298,     2,   589,   590,     0,   601,   602,
     1468       0,   744,   747,   298,   298,     0,   712,   299,   716,   707,
     1469     708,   714,     0,     2,     2,   672,   551,   754,   621,   551,
     1470     551,   754,   551,   635,   551,   551,   686,   439,   669,   551,
     1471     551,   677,   684,   298,   434,   299,     0,     0,   298,   722,
     1472     299,   727,   754,   719,   298,   724,   754,   298,   298,     0,
     1473       0,    21,     2,     0,    22,     0,   464,   752,     0,     0,
     1474     470,   246,     0,   298,     0,     0,     0,   549,   573,   577,
     1475     579,   609,   612,   616,   619,   572,   611,     0,   288,   662,
     1476       0,   298,   281,     0,     0,     0,     0,   279,     2,     0,
     1477     264,   540,   298,     0,     0,   298,     2,   368,   388,   377,
     1478       0,     0,   382,   376,   753,     0,     0,   401,     0,   299,
     1479       3,   419,     3,   423,   422,   595,     0,   535,   298,    72,
     1480       3,   298,   438,   299,     3,   432,   433,     2,     0,     0,
     1481       0,   489,   310,   298,     0,   485,   487,     3,     2,     2,
     1482       0,   506,     3,     0,   558,   134,     0,     0,   227,     0,
     1483       0,     0,     0,    41,     0,     0,   298,    24,     0,    25,
     1484       0,   696,   701,   453,   693,   551,   551,     0,   114,     3,
     1485       2,    32,     0,    38,     0,     2,    29,     0,   113,    81,
     1486      82,    83,    85,    86,    88,    89,    93,    94,    91,    92,
     1487      96,    97,    99,   101,   103,   105,   107,     0,     0,   298,
     1488       0,     0,     0,   651,   652,   648,   649,   501,   500,   298,
     1489       0,   718,   298,   723,   299,   298,   666,   709,   665,     2,
     1490     298,     0,     0,     0,     0,     0,     0,     0,     0,   687,
     1491       0,   673,   624,   640,   674,     2,   620,   627,   436,   622,
     1492     623,   437,     2,   634,   643,   636,   637,   670,   671,   685,
     1493     713,   717,   715,   754,   272,     2,   749,     2,   427,   721,
     1494     726,   428,     3,   406,     3,     3,     3,   458,     0,     0,
     1495       2,   472,   469,   753,     0,   465,     2,   468,   471,     0,
     1496     298,   247,   269,     3,   276,   278,     0,   458,     2,   575,
     1497     576,     2,   614,   615,     0,   663,   541,     3,   349,   348,
     1498     351,   350,   298,   542,     0,   543,   376,     0,     0,   298,
     1499       0,     0,   696,   386,   389,   393,   551,   393,   392,   385,
     1500     378,   551,   380,   383,   298,   403,   397,   111,   404,   752,
     1501       0,     0,   441,   245,     0,     0,     3,     2,   672,   434,
     1502       0,   531,     0,   754,   755,   493,     0,   298,   298,   298,
     1503       0,   555,   557,   135,     0,     0,   220,     0,     0,     0,
     1504     228,   229,    65,     0,    67,    70,    71,     0,   133,     0,
     1505       0,     0,   697,   698,   694,   695,   463,    79,   115,   130,
     1506       3,   114,     0,    28,    40,     3,     0,    37,   110,     0,
     1507       3,   654,   658,   661,   653,     3,   596,   720,   725,     2,
     1508      72,   298,     3,     3,   299,     0,     3,   626,   630,   633,
     1509     642,   676,   680,   683,   298,     3,   625,   641,   675,   298,
     1510     298,   429,   298,   298,     0,     0,     0,     0,   261,   111,
     1511       0,     3,     3,     0,   466,     0,   462,     0,     0,   250,
     1512     298,     0,     0,   134,     0,     0,     0,     0,     0,   134,
     1513       0,     0,   114,   114,    21,     0,     0,     3,   136,   137,
     1514       2,   148,   138,   139,   140,   141,   142,   143,   150,   152,
     1515       0,     0,     0,   289,   298,   298,   551,     0,   544,   298,
     1516     379,   381,     0,   395,   697,   390,   394,   391,   384,   388,
     1517     371,   402,     0,   583,     2,   668,   667,     0,   673,     2,
     1518     486,   488,   508,     3,   516,   517,     0,     2,   512,     3,
     1519       3,     0,     0,   560,   227,     0,     0,     0,   227,     0,
     1520       0,   700,   704,   706,   699,   752,   114,     0,     3,    54,
     1521       0,    54,    54,     3,    42,    44,    39,     0,     3,   109,
     1522       0,     2,   656,   657,     0,   298,     0,     0,     0,     3,
     1523     642,     0,     2,   628,   629,     2,   644,     2,   678,   679,
     1524       0,     0,    72,     0,     3,     3,     3,     3,   414,   413,
     1525     417,   751,     2,     2,   750,     0,     0,     0,     0,     3,
     1526     467,     3,     0,   248,   151,     3,   299,   298,     0,     0,
     1527       0,     0,     2,     0,   196,     0,   194,     0,     0,     0,
     1528       0,     0,     0,     0,   551,     0,   156,   153,   298,     0,
     1529       0,   271,   283,     3,     3,   550,   617,   372,   387,   400,
     1530     298,   270,   298,     0,   519,   496,   298,     0,     0,   495,
     1531     510,     0,     0,     0,   221,     0,   230,    68,     2,   702,
     1532     703,     0,   131,   128,     0,    51,     2,    45,    52,    53,
     1533       0,     0,     0,     0,    27,     0,   659,   298,   584,   728,
     1534     729,   730,     0,   681,   298,   298,   298,     3,     3,     0,
     1535     689,     0,     0,     0,     0,   298,   298,     3,   548,   473,
     1536     474,     0,   251,   299,     0,     0,     0,     0,   298,   197,
     1537     195,   192,     0,   198,     0,     0,     0,     0,   202,   205,
     1538     203,   199,     0,   200,   134,    40,   149,   147,   249,     0,
     1539       0,   421,   425,   424,     0,   513,     2,   514,     2,   515,
     1540     509,   298,   233,     0,   231,     0,   233,   298,    36,   129,
     1541      55,     0,    43,    33,     2,    49,     2,    47,    30,     3,
     1542     731,     3,     3,     3,     0,     0,   688,   690,   631,   645,
     1543     273,     2,   411,     3,   410,     0,   476,   134,     0,     0,
     1544     134,     3,     0,   134,   193,     0,     2,     2,   214,   204,
     1545       0,     0,     0,   145,     0,   578,   618,     2,     0,     0,
     1546       2,   234,     0,     0,   222,     0,     3,     3,     0,     0,
     1547       0,     0,     0,     0,   691,   692,   298,     0,   475,   157,
     1548       0,     0,     2,   170,   134,   159,     0,   187,     0,   134,
     1549       0,     2,   161,     0,     2,     0,     2,     2,     2,   201,
     1550      37,   298,   518,   520,   511,     0,     0,     0,     0,     0,
     1551       0,     3,     3,   660,   632,   646,   682,   415,   134,   163,
     1552     166,     0,   165,   169,     3,   172,   171,     0,   134,   189,
     1553     134,     3,     0,   298,     0,   298,     0,     2,     0,     2,
     1554     144,     2,   235,   236,     0,   232,   223,   705,    46,     0,
     1555       0,   158,     0,     0,   168,   238,   173,     2,   240,   188,
     1556       0,   191,   177,   206,     3,   215,   219,   208,     3,     0,
     1557     298,     0,   298,     0,     0,     0,    50,    48,   164,   167,
     1558     134,     0,   174,   298,   134,   134,     0,   178,     0,     0,
     1559     696,   216,   217,   218,     0,   207,     3,   209,     3,   298,
     1560     224,   237,   154,   175,   160,   134,   241,   190,   185,   183,
     1561     179,   162,   134,     0,   697,     0,     0,     0,     0,   155,
     1562     176,   186,   180,   184,   183,   181,     3,     3,     0,     0,
     1563     497,   182,   210,   212,     3,     3,   211,   213
    15691564};
    15701565
     
    15721567static const yytype_int16 yydefgoto[] =
    15731568{
    1574       -1,   802,   466,   303,    49,   135,   136,   304,   305,   306,
    1575      307,   308,   754,   755,  1115,  1116,  1117,  1227,   309,   380,
    1576      311,   312,   313,   314,   315,   316,   317,   318,   319,   320,
    1577      321,   322,   323,  1012,   516,   961,   545,   325,   962,   935,
    1578     1038,  1504,  1040,  1041,  1042,  1043,  1505,  1044,  1045,  1422,
    1579     1423,  1385,  1386,  1387,  1483,  1484,  1488,  1489,  1524,  1525,
    1580     1046,  1344,  1047,  1048,  1280,  1281,  1282,  1466,  1049,   147,
    1581      941,   942,   943,  1364,  1446,  1458,  1459,   467,   468,   862,
    1582      863,  1020,    53,    54,    55,    56,    57,   347,   159,    60,
    1583       61,    62,    63,    64,   349,    66,    67,   265,    69,    70,
    1584      275,   351,   352,    73,    74,    75,   120,    77,   205,   354,
    1585      121,    80,   122,    82,    83,   453,    84,   452,   681,   682,
    1586      683,   895,  1067,   896,    85,    86,   456,   454,   689,   844,
    1587      845,   357,   358,   692,   693,   694,   359,   360,   361,   362,
    1588      464,   178,   137,   138,   520,   327,   171,   638,   639,   640,
    1589      641,   642,    87,   123,    89,   487,   488,   927,   489,   278,
    1590      493,   328,    90,   139,   140,    91,  1303,  1089,  1090,  1091,
    1591     1092,    92,    93,   710,    94,   274,    95,    96,   188,  1014,
    1592      672,   411,   127,    97,   499,   500,   501,   189,   269,   191,
    1593      192,   193,   270,   100,   101,   102,   103,   104,   105,   106,
    1594      196,   197,   198,   199,   200,   814,   600,   601,   602,   603,
    1595      201,   605,   606,   607,   569,   570,   571,   572,   744,   107,
    1596      609,   610,   611,   612,   613,   614,   955,   746,   747,   748,
    1597      590,   365,   366,   367,   368,   329,   165,   109,   110,   111,
    1598      370,   687,   717
     1569      -1,   800,   464,   301,    47,   133,   134,   302,   303,   304,
     1570     305,   306,   752,   753,  1113,  1114,  1115,  1225,   307,   378,
     1571     309,   310,   311,   312,   313,   314,   315,   316,   317,   318,
     1572     319,   320,   321,  1010,   514,   959,   543,   323,   960,   933,
     1573    1036,  1502,  1038,  1039,  1040,  1041,  1503,  1042,  1043,  1420,
     1574    1421,  1383,  1384,  1385,  1481,  1482,  1486,  1487,  1522,  1523,
     1575    1044,  1342,  1045,  1046,  1278,  1279,  1280,  1464,  1047,   145,
     1576     939,   940,   941,  1362,  1444,  1456,  1457,   465,   466,   860,
     1577     861,  1018,    51,    52,    53,    54,    55,   345,   157,    58,
     1578      59,    60,    61,    62,   347,    64,    65,   263,    67,    68,
     1579     273,   349,   350,    71,    72,    73,   118,    75,   203,   352,
     1580     119,    78,   120,    80,    81,   451,    82,   450,   679,   680,
     1581     681,   893,  1065,   894,    83,    84,   454,   452,   687,   842,
     1582     843,   355,   356,   690,   691,   692,   357,   358,   359,   360,
     1583     462,   176,   135,   136,   518,   325,   169,   636,   637,   638,
     1584     639,   640,    85,   121,    87,   485,   486,   925,   487,   276,
     1585     491,   326,    88,   137,   138,    89,  1301,  1087,  1088,  1089,
     1586    1090,    90,    91,   708,    92,   272,    93,    94,   186,  1012,
     1587     670,   409,   125,    95,   497,   498,   499,   187,   267,   189,
     1588     190,   191,   268,    98,    99,   100,   101,   102,   103,   104,
     1589     194,   195,   196,   197,   198,   812,   598,   599,   600,   601,
     1590     199,   603,   604,   605,   567,   568,   569,   570,   742,   105,
     1591     607,   608,   609,   610,   611,   612,   953,   744,   745,   746,
     1592     588,   363,   364,   365,   366,   327,   163,   107,   108,   109,
     1593     368,   685,   715
    15991594};
    16001595
    16011596/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    16021597   STATE-NUM.  */
    1603 #define YYPACT_NINF -1267
     1598#define YYPACT_NINF -1333
    16041599static const yytype_int16 yypact[] =
    16051600{
    1606     5235,  8510, -1267,   -14, -1267, -1267, -1267, -1267, -1267, -1267,
    1607    -1267,   -27, -1267, -1267, -1267, -1267, -1267, -1267, -1267, -1267,
    1608    -1267, -1267, -1267, -1267, -1267, -1267, -1267, -1267,    84,    84,
    1609       84,  1541,   905,   123,  6677,   163, -1267, -1267, -1267, -1267,
    1610    -1267,   157, -1267, -1267, -1267,  1043,    81, -1267, -1267, -1267,
    1611    -1267,  4048, -1267, -1267, -1267, -1267,   225,   198, -1267,  1956,
    1612    -1267, -1267, -1267, -1267,   217,  1716,   371,    37,  6797, -1267,
    1613    -1267,  4048,   829, -1267, -1267,  1101,   380,  3172,   661,   839,
    1614     1101,   977, -1267, -1267,  1289,   340, -1267,  1101,  1140, -1267,
    1615      273, -1267,   439,   447, -1267, -1267, -1267, -1267,   337,   198,
    1616       84, -1267,    84, -1267, -1267, -1267, -1267,  7269,  1956, -1267,
    1617    -1267,  1956, -1267,   325, -1267,  7582, -1267, -1267,  2178,  8744,
    1618    -1267,   675,   675,   675, -1267, -1267, -1267,    84, -1267, -1267,
    1619    -1267,   360,   395,   436, -1267, -1267, -1267,   466, -1267, -1267,
    1620    -1267, -1267, -1267,   503,   515, -1267, -1267,   272,  8119,  1675,
    1621      307,   370,   377,   524,   565,   568,   580,  8828,  6307,   594,
    1622    -1267,  4677, -1267, -1267, -1267, -1267,   613, -1267,   271,  9583,
    1623     9583, -1267,   610,   339, -1267, -1267, -1267, -1267,   618,   379,
    1624      421,   468,    84,   603, -1267, -1267,  1716,  2591,   687, -1267,
    1625       90, -1267,    84,    84,   198, -1267, -1267,    91, -1267,    84,
    1626       84, -1267,  2973,   652,   657,   675,  6831, -1267, -1267, -1267,
    1627     4048, -1267, -1267,  1101, -1267, -1267, -1267,   198, -1267,  1956,
    1628      225, -1267,  7235, -1267,   675,   675,   675,   198, -1267,  1541,
    1629    -1267,  3826, -1267, -1267,   642,   675, -1267,   675, -1267,   157,
    1630     8119, -1267,   665, -1267,   905,   685,   675, -1267,  1541,   689,
    1631      710, -1267,  6677,   291, -1267, -1267, -1267,  8477, -1267, -1267,
    1632     4354, -1267,   687,     8,  9760,  8744,  2178,  2973, -1267,   101,
    1633    -1267, -1267,  7582,  1956,   740, 10515, -1267, -1267,   378, -1267,
    1634    10178,   730,   705,  9819,   773,  9760,  9878, -1267,   794, -1267,
    1635    -1267, -1267, -1267, -1267, -1267,  9937,  9937,  7885,    81, -1267,
    1636    -1267, -1267, -1267, -1267, -1267, -1267,   834, -1267,  1184,  2546,
    1637     8119,  9760, -1267,   525,   415,   844,   338,   853,   823,   831,
    1638      841,   886,    56, -1267, -1267, -1267,   518, -1267,   528, -1267,
    1639    -1267,  1675, -1267, -1267,   456,   900, -1267,   490,   900, -1267,
    1640    -1267,  7269, -1267,   940,   946,  8236, -1267, -1267,   536,  1525,
    1641     7667,  6831,  1101, -1267,  1101,   675,   675, -1267, -1267, -1267,
    1642    -1267, -1267, -1267,   675,  7269,  1956, -1267, -1267,  8828,  1786,
    1643    -1267, -1267, -1267, -1267, -1267, -1267, -1267, -1267, -1267,  9524,
    1644     9760, -1267, -1267, -1267, -1267, -1267, -1267, -1267, -1267, -1267,
    1645    -1267, -1267, -1267, -1267, -1267,  2178, -1267,   446,   945,   961,
    1646      968,   800,   973,   976,   981,  2591, -1267, -1267,   939,   225,
    1647      982, -1267, -1267,   987, -1267, -1267, -1267,  8477, -1267, -1267,
    1648    -1267, -1267, -1267,  2973, -1267,  8119,  8119, -1267,   675,  2178,
    1649    10547,  7742, -1267, -1267, -1267, -1267,  8477,     8, -1267, -1267,
    1650     1101,   198, -1267, -1267,  8477, -1267,  5404, -1267, -1267,   675,
    1651      675,   579,  8594,   994,   993,   983,   998,   675, -1267, -1267,
    1652    -1267, -1267,  9019, -1267,   616, 10212, -1267,   198,  1004, -1267,
    1653     2178, 10298,  9996, -1267, -1267, -1267, -1267,   843,  2973, -1267,
    1654     7742,   687,  5806, -1267, -1267, -1267,  1900,   626,   990,   905,
    1655    10515,  1647,  7582, -1267, 10515, -1267, -1267, -1267, -1267,   627,
    1656    -1267,  1013,   705,   154,  7885, -1267,  8860, -1267, -1267,  7885,
    1657    -1267,  8002,  7885, -1267, -1267,    81, -1267,   640,  1015,   658,
    1658     1021, -1267, -1267,  6061, -1267, -1267,   315, -1267, -1267,  9760,
    1659    -1267,   368,  9760, -1267, -1267, -1267, -1267, -1267, -1267, -1267,
    1660    -1267, -1267, -1267, -1267, -1267,  9760, -1267, -1267,  9760,  9760,
    1661     9760,  9760,  9760,  9760,  9760,  9760,  9760,  9760,  9760,  9760,
    1662     9760,  9760,  9760,  9760,  9760,  9760,  3432,   518,  1212, -1267,
    1663    -1267,    84,    84, -1267, -1267,  8119, -1267, -1267,   987,   291,
    1664    -1267,   987, 10055, -1267, -1267,  8828,  6061,  1020, -1267,  8744,
    1665    -1267, -1267,   613, -1267,  1023,  1793,  1025,  1950,   136,   990,
    1666    -1267,    84,    84,   990,   407, -1267,    84,    84,   987, -1267,
    1667    -1267,    84,    84, -1267,   900,  8944,  1956, 10447,   356,   541,
    1668     8944, -1267,  4354, -1267,   990, -1267,  7269, -1267,   126,  7354,
    1669     7354,  1956,  9642,  1003, -1267,   789,  1008,  1010, -1267,  1026,
    1670     9583,   449, -1267,  1114,  1956,  7354,   291,  2178,   291,   687,
    1671      707,   900, -1267, -1267,   766,   900, -1267, -1267, -1267,   705,
    1672    -1267,   900,   198,  9019, -1267,   643,  1041,   647,  1045, -1267,
    1673      940,   198, -1267, -1267,  8477,   198,  1042,  8860,    81, -1267,
    1674     1307, -1267,   471,   481,   905, -1267,   905,  1047,  9760, -1267,
    1675      905, 10447, -1267, -1267,  1056, -1267, -1267, -1267,   291, -1267,
    1676    10373,   946, -1267,  7354,   694,  7667, -1267, -1267,   613,  1052,
    1677     1057,  1900,  2267, -1267, -1267, 10515,  9760, -1267, -1267,  1055,
    1678    -1267, -1267,  1048, -1267,  1055,  1063, 10178,  9760,  1046,  1051,
    1679      117,  1065,  1062,  1070,  1074, -1267,  1081,  1082,  6061, -1267,
    1680     9760, -1267,   658,  1520, -1267, -1267, -1267,    84,    84,  9701,
    1681     9760,  1077, -1267, -1267,   679, -1267,  9760, -1267, -1267,   821,
    1682    -1267, -1267, -1267, -1267,   525,   525,   415,   415,   844,   844,
    1683      844,   844,   338,   338,   853,   823,   831,   841,   886,  9760,
    1684      397,  9019,  1085,  1086,  1087,  1212, -1267, -1267, -1267, -1267,
    1685    -1267,  9019,   691, -1267,  7269, -1267,  6430,  8353, -1267, -1267,
    1686    -1267,  1793,  9019,   856,  1089,  1091,  1092,  1093,  1096,  1098,
    1687     1104, -1267,  3291,  1950, -1267, -1267, -1267, -1267, -1267, -1267,
    1688    -1267, -1267, -1267, -1267, -1267, -1267, -1267, -1267, -1267, -1267,
    1689    -1267,   987, -1267, -1267, -1267,   990, -1267, -1267, -1267, -1267,
    1690    -1267, -1267, -1267, -1267, -1267, -1267,  1105,  1106, -1267,   225,
    1691     1077,  9642, -1267, -1267, -1267,  9524,  1108, -1267, -1267, -1267,
    1692    -1267,   905,  5524,  1197, -1267, -1267, -1267, -1267,  1095,   225,
    1693    -1267, -1267,   987, -1267, -1267,   987,  1117,   987, -1267, -1267,
    1694    -1267, -1267, -1267, -1267,  6307, -1267,   198, -1267, -1267,   505,
    1695      507,  6307,  1549,  9760,  2098, -1267, -1267,  1099,    38,  1099,
    1696    -1267,   905, -1267,    84, -1267, -1267,  8627,   983, -1267, -1267,
    1697    -1267,   993,  1120,  1115, -1267, -1267,  1122,  1123, -1267,   694,
    1698     1698, -1267,   576, -1267,  2267,   990, -1267, -1267,  1126, 10515,
    1699     7582,  8119,  1129, -1267, -1267,  1125,  1135,  1118, -1267,  9760,
    1700     1141,   190,  1136, -1267,  1142,   291,  1142, -1267, -1267,  1142,
    1701    -1267,  1147,  1152,  1154,  1520, -1267, -1267, -1267,  9524, -1267,
    1702    -1267, -1267,  1163,  9760,   986, -1267,  9760, -1267,   986, -1267,
    1703    -1267,  9760, -1267,   894,   900, -1267, -1267, -1267, -1267, -1267,
    1704    -1267, -1267,   946,  8236, -1267, -1267,  6553,  1171, -1267,   898,
    1705      900, -1267,   920,   936,   900, -1267,   675,  7112, -1267, -1267,
    1706    -1267,  9019,  9019, -1267,  7742,  7742,  1172,  1167,  1168,  1175,
    1707    -1267,   670,   111,  1077, -1267,   986, -1267,  9583, -1267,  9760,
    1708      540, -1267,  5932,  1180,  1181,  9465,  1182,  1185,    -8,    40,
    1709       86,  9760,  1191,   198,  9760,  9760,  1177,   585,  1169, -1267,
    1710    -1267, -1267,  1187, -1267, -1267, -1267, -1267, -1267, -1267, -1267,
    1711    -1267, -1267,   905,  1195,  9760, -1267,  9019,  9019,    84,  1201,
    1712    -1267,  8711, -1267, -1267,   862, -1267,  2098, -1267, -1267, -1267,
    1713    -1267,  1307, -1267, -1267,  1198, -1267, -1267, -1267, -1267,  1202,
    1714     1698, -1267, -1267,  1196, -1267,  1055, -1267, -1267,  2178,  1210,
    1715    -1267, -1267, -1267,   704,  1217, -1267,   117,  1214,  9760,  1200,
    1716      117,   117,  1224,   950,   900, -1267, -1267,  1026,  9760,  1230,
    1717     1163, -1267,   943, -1267, -1267,  1220, -1267,    78, -1267,  1231,
    1718     1220, -1267,  1234, -1267, -1267,   987,  1236,  6184,  1235,  1239,
    1719     1241, -1267, -1267,  1238, -1267, -1267,   987, -1267, -1267, -1267,
    1720    -1267,   987,  9760,  9760,   946,  1243, -1267, -1267, -1267, -1267,
    1721    -1267, -1267, -1267, -1267, -1267, -1267, -1267,  9760,  9760,  1244,
    1722     1248,  1220, -1267, -1267,   905, -1267, -1267, -1267,  7070,  7582,
    1723     9760,  9760,  1318,  9760, -1267,  1233, -1267,  1246, -1267,  1250,
    1724     9760,  1254,  9760,   938,  1255,    47,    84,  1805, -1267, -1267,
    1725     5524,  1256,   554, -1267, -1267, -1267, -1267, -1267, -1267, -1267,
    1726    -1267, -1267,  9281, -1267,  7742,  1260, -1267, -1267,  7582,   555,
    1727      561, -1267,  1273,  1262,   705,  1283, -1267,   256, -1267, -1267,
    1728    -1267, -1267,   987,  1282, -1267, -1267,  1288,  1321, -1267, -1267,
    1729     1321,  1321,   986,  1292,  1699,  1866, -1267,  1295, -1267,  9019,
    1730    -1267, -1267, -1267, -1267,  1298, -1267,  9019,  9019,  9019, -1267,
    1731    -1267,  1300, -1267,  1301,  1310,  1311,   725,  7429,  7548, -1267,
    1732    -1267, -1267, -1267,  1305, -1267,  7817,   709,   755,  1317,   758,
    1733     5667, -1267, -1267, -1267,   582, -1267,   768,  1319,  1323,   198,
    1734     1369,   935, -1267, -1267,  9760, -1267,  9465,  9760, -1267, -1267,
    1735    -1267,  1320,  1326, -1267, -1267, -1267,  1324, -1267, -1267, -1267,
    1736    -1267, -1267, -1267,  7582,   705,  1330, -1267,  1313,   705,  9019,
    1737    -1267, -1267, -1267,   986, -1267, -1267, -1267, -1267, -1267, -1267,
    1738    -1267, -1267, -1267, -1267, -1267, -1267,  1337,  1340, -1267, -1267,
    1739    -1267, -1267, -1267, -1267, -1267,  1343, -1267,  1342, -1267,  9465,
    1740      276,  9760,  9465, -1267,  1346,  9760, -1267,   281,  1361,  1363,
    1741    -1267, -1267,  1355,  1356,  1339, -1267,   901, -1267, -1267, -1267,
    1742     1956,  2178,  1347, -1267,   401,  9760, -1267,   783, -1267,  1220,
    1743      986,   986,  1362,  1364,  1365,  1367, -1267, -1267,  7742,  1357,
    1744    -1267,  1438,  9760,  1352, -1267, -1267,  9375, -1267,   791, -1267,
    1745     1360,  9465,  1368, -1267, -1267,  1386, -1267,  1389, -1267,  1407,
    1746     1409, -1267,  1376,  7582, -1267, -1267, -1267,   705,   291,  1403,
    1747     1382,  1405,  1404,  1220,  1220, -1267, -1267, -1267, -1267, -1267,
    1748     9465,   240, -1267,   474, -1267, -1267,  6917, -1267, -1267,  1385,
    1749     9760, -1267,  9760,  6917,   198,  8860,   198,  8860,  1410, -1267,
    1750     1411, -1267, -1267,  1408, -1267, -1267,   802, -1267, -1267, -1267,
    1751    -1267,  1422,  1423, -1267,  9760,  9760, -1267, -1267,   979,    59,
    1752    -1267, -1267,  1390, -1267,   979, -1267, -1267,  2042,   291, -1267,
    1753    -1267,   198,  8860,   198,  8860,  1427,  1412,   291, -1267, -1267,
    1754    -1267, -1267,  9375,  1425,   979,  6995,  9760,  9285,  1426,   979,
    1755     1435,  2042,  2360, -1267, -1267, -1267,  1436, -1267, -1267, -1267,
    1756    -1267,  8119, -1267, -1267, -1267,  9148, -1267,  9375, -1267, -1267,
    1757     1416,  9058, -1267, -1267,  9285,   198,  2360,   198,  1441,  1445,
    1758      814, -1267,  9148, -1267, -1267, -1267,  9058, -1267, -1267, -1267,
    1759      198,   198, -1267, -1267, -1267, -1267, -1267, -1267, -1267, -1267
     1601    6694,  7975, -1333,   -14, -1333, -1333, -1333, -1333, -1333, -1333,
     1602   -1333,    26, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
     1603   -1333, -1333, -1333, -1333, -1333, -1333,   109,   109,   109,   759,
     1604     860,    66,  6930,   241, -1333, -1333, -1333, -1333, -1333,   199,
     1605   -1333, -1333, -1333,  1264,   207, -1333, -1333, -1333, -1333,  8320,
     1606   -1333, -1333, -1333, -1333,     3,   216, -1333,  1096, -1333, -1333,
     1607   -1333, -1333,   265,  1996,   389,    54,  5394, -1333, -1333,  8320,
     1608     780, -1333, -1333,   554,   416,  3688,   749,   995,   554,  1130,
     1609   -1333, -1333,   768,   826, -1333,   554,  1144, -1333,   313, -1333,
     1610     443,   462, -1333, -1333, -1333, -1333,   358,   216,   109, -1333,
     1611     109, -1333, -1333, -1333, -1333,  8461,  1096, -1333, -1333,  1096,
     1612   -1333,   414, -1333,  8545, -1333, -1333,  2376,  8575, -1333,  1138,
     1613    1138,  1138, -1333, -1333, -1333,   109, -1333, -1333, -1333,   370,
     1614     444,   488, -1333, -1333, -1333,   518, -1333, -1333, -1333, -1333,
     1615   -1333,   525,   576, -1333, -1333,    50,  8059,  1902,   238,   538,
     1616     578,   604,   613,   618,   635,  8659,  6327,   649, -1333,  8431,
     1617   -1333, -1333, -1333, -1333,   661, -1333,   -10,  9338,  9338, -1333,
     1618     662,   181, -1333, -1333, -1333, -1333,   680,   348,   393,   400,
     1619     109,   685, -1333, -1333,  1996,  2098,   801, -1333,    51, -1333,
     1620     109,   109,   216, -1333, -1333,   180, -1333,   109,   109, -1333,
     1621    2242,   712,   751,  1138,  6116, -1333, -1333, -1333,  8320, -1333,
     1622   -1333,   554, -1333, -1333, -1333,   216, -1333,  1096,     3, -1333,
     1623    7196, -1333,  1138,  1138,  1138,   216, -1333,   759, -1333,  4572,
     1624   -1333, -1333,   739,  1138, -1333,  1138, -1333,   199,  8059, -1333,
     1625     775, -1333,   860,   777,  1138, -1333,   759,   771,   804, -1333,
     1626    6930,   594, -1333, -1333, -1333,  4461, -1333, -1333,  5315, -1333,
     1627     801,   101,  9515,  8575,  2376,  2242, -1333,   187, -1333, -1333,
     1628    8545,  1096,   786, 10191, -1333, -1333,   434, -1333,  9931,   803,
     1629     866,  9574,   842,  9515,  9633, -1333,   845, -1333, -1333, -1333,
     1630   -1333, -1333, -1333,  9692,  9692,  7829,   207, -1333, -1333, -1333,
     1631   -1333, -1333, -1333, -1333,   885, -1333,  1691,  2462,  8059,  9515,
     1632   -1333,   558,   367,   614,   669,   742,   852,   846,   858,   883,
     1633     -13, -1333, -1333, -1333,   737, -1333,   269, -1333, -1333,  1902,
     1634   -1333, -1333,   465,   880, -1333,   586,   880, -1333, -1333,  8461,
     1635   -1333,   890,   897,  8174, -1333, -1333,  1514,  1088,  7619,  6116,
     1636     554, -1333,   554,  1138,  1138, -1333, -1333, -1333, -1333, -1333,
     1637   -1333,  1138,  8461,  1096, -1333, -1333,  8659,  1872, -1333, -1333,
     1638   -1333, -1333, -1333, -1333, -1333, -1333, -1333,  9279,  9515, -1333,
     1639   -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
     1640   -1333, -1333, -1333,  2376, -1333,   105,   903,   926,   928,   796,
     1641     931,   941,   943,  2098, -1333, -1333,   952,     3,   954, -1333,
     1642   -1333,   961, -1333, -1333, -1333,  4461, -1333, -1333, -1333, -1333,
     1643   -1333,  2242, -1333,  8059,  8059, -1333,  1138,  2376,  6237,  7691,
     1644   -1333, -1333, -1333, -1333,  4461,   101, -1333, -1333,   554,   216,
     1645   -1333, -1333,  4461, -1333,  5995, -1333, -1333,  1138,  1138,   394,
     1646    7535,   966,   959,   955,   974,  1138, -1333, -1333, -1333, -1333,
     1647    5606, -1333,   424,  5852, -1333,   216,   977, -1333,  2376, 10015,
     1648    9751, -1333, -1333, -1333, -1333,   884,  2242, -1333,  7691,   801,
     1649    6812, -1333, -1333, -1333,  1296,   456,   986,   860, 10191,  1468,
     1650    8545, -1333, 10191, -1333, -1333, -1333, -1333,   473, -1333,   988,
     1651     866,   242,  7829, -1333,  8689, -1333, -1333,  7829, -1333,  7944,
     1652    7829, -1333, -1333,   207, -1333,   485,  1009,   881,  1014, -1333,
     1653   -1333,  6085, -1333, -1333,   360, -1333, -1333,  9515, -1333,   362,
     1654    9515, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
     1655   -1333, -1333, -1333,  9515, -1333, -1333,  9515,  9515,  9515,  9515,
     1656    9515,  9515,  9515,  9515,  9515,  9515,  9515,  9515,  9515,  9515,
     1657    9515,  9515,  9515,  9515,  3091,   737,  1207, -1333, -1333,   109,
     1658     109, -1333, -1333,  8059, -1333, -1333,   961,   594, -1333,   961,
     1659    9810, -1333, -1333,  8659,  6085,   993, -1333,  8575, -1333, -1333,
     1660     661, -1333,  1039,   587,  1045,  2359,   209,   986, -1333,   109,
     1661     109,   986,   212, -1333,   109,   109,   961, -1333, -1333,   109,
     1662     109, -1333,   880,  8773,  1096, 10160,   415,   496,  8773, -1333,
     1663    5315, -1333,   986, -1333,  8461, -1333,   126,  7313,  7313,  1096,
     1664    9397,  1029, -1333,  1354,  1033,  1043, -1333,  1060,  9338,   407,
     1665   -1333,  1151,  1096,  7313,   594,  2376,   594,   801,   631,   880,
     1666   -1333, -1333,   692,   880, -1333, -1333, -1333,   866, -1333,   880,
     1667     216,  5606, -1333,   494,  1073,   520,  1074, -1333,   890,   216,
     1668   -1333, -1333,  4461,   216,  1071,  8689,   207, -1333,   972, -1333,
     1669     401,   438,   860, -1333,   860,  1075,  9515, -1333,   860, 10160,
     1670   -1333, -1333,  1079, -1333, -1333, -1333,   594, -1333, 10088,   897,
     1671   -1333,  7313,   960,  7619, -1333, -1333,   661,  1076,  1081,  1296,
     1672    2130, -1333, -1333, 10191,  9515, -1333, -1333,  1085, -1333, -1333,
     1673    1093, -1333,  1085,  1098,  9931,  9515,  1097,  1094,    38,  1119,
     1674    1115,  1124,  1125, -1333,  1126,  1127,  6085, -1333,  9515, -1333,
     1675     881,  1631, -1333, -1333, -1333,   109,   109,  9456,  9515,  1132,
     1676   -1333, -1333,   577, -1333,  9515, -1333, -1333,   843, -1333, -1333,
     1677   -1333, -1333,   558,   558,   367,   367,   614,   614,   614,   614,
     1678     669,   669,   742,   852,   846,   858,   883,  9515,   296,  5606,
     1679    1131,  1133,  1136,  1207, -1333, -1333, -1333, -1333, -1333,  5606,
     1680     616, -1333,  8461, -1333,  6448,  8289, -1333, -1333, -1333,   587,
     1681    5606,   990,  1140,  1141,  1142,  1145,  1146,  1147,  1149, -1333,
     1682    2845,  2359, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
     1683   -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,   961,
     1684   -1333, -1333, -1333,   986, -1333, -1333, -1333, -1333, -1333, -1333,
     1685   -1333, -1333, -1333, -1333,  1150,  1152, -1333,     3,  1132,  9397,
     1686   -1333, -1333, -1333,  9279,  1154, -1333, -1333, -1333, -1333,   860,
     1687    5689,  1243, -1333, -1333, -1333, -1333,  1143,     3, -1333, -1333,
     1688     961, -1333, -1333,   961,    14,   961, -1333, -1333, -1333, -1333,
     1689   -1333, -1333,  6327, -1333,   216, -1333, -1333,   452,   487,  6327,
     1690    1790,  9515,  2983, -1333, -1333,  1153,    20,  1153, -1333,   860,
     1691   -1333,   109, -1333, -1333,  8090,   955, -1333, -1333, -1333,   959,
     1692    1161,  1157, -1333, -1333,  1163,  1164, -1333,   960,  1700, -1333,
     1693     539, -1333,  2130,   986, -1333, -1333,  1167, 10191,  8545,  8059,
     1694    1169, -1333, -1333,  1165,  1170,  1171, -1333,  9515,  1173,   310,
     1695    1177, -1333,  1180,   594,  1180, -1333, -1333,  1180, -1333,  1195,
     1696    1197,  1201,  1631, -1333, -1333, -1333,  9279, -1333, -1333, -1333,
     1697    1196,  9515,   730, -1333,  9515, -1333,   730, -1333, -1333,  9515,
     1698   -1333,   748,   880, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
     1699     897,  8174, -1333, -1333,  6569,  1203, -1333,   758,   880, -1333,
     1700     763,   830,   880, -1333,  1138,  4995, -1333, -1333, -1333,  5606,
     1701    5606, -1333,  7691,  7691,  1205,  1210,  1223,  1209, -1333,   551,
     1702     162,  1132, -1333,   730, -1333,  9338, -1333,  9515,   513, -1333,
     1703    5964,  1214,  1227,  9220,  1234,  1235,    42,   160,   163,  9515,
     1704    1237,   216,  9515,  9515,  1226,   304,  1229, -1333, -1333, -1333,
     1705    1244, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
     1706     860,  1248,  9515, -1333,  5606,  5606,   109,  1254, -1333,  8205,
     1707   -1333, -1333,   773, -1333,  2983, -1333, -1333, -1333, -1333,   972,
     1708   -1333, -1333,  1250, -1333, -1333, -1333, -1333,  1257,  1700, -1333,
     1709   -1333,  1241, -1333,  1085, -1333, -1333,  2376,  1256, -1333, -1333,
     1710   -1333,   617,  1258, -1333,    38,  1266,  9515,  1245,    38,    38,
     1711    1274,   878,   880, -1333, -1333,  1060,  9515,  1276,  1196, -1333,
     1712     841, -1333, -1333,  1270, -1333,   215, -1333,  1279,  1270, -1333,
     1713    1282, -1333, -1333,   961,  1283,  6206,  1284,  1285,  1286, -1333,
     1714   -1333,  1290, -1333, -1333,   961, -1333, -1333, -1333, -1333,   961,
     1715    9515,  9515,   897,  1291, -1333, -1333, -1333, -1333, -1333, -1333,
     1716   -1333, -1333, -1333, -1333, -1333,  9515,  9515,  1295,  1297,  1270,
     1717   -1333, -1333,   860, -1333, -1333, -1333,  7124,  8545,  9515,  9515,
     1718    1350,  9515, -1333,  1278, -1333,  1280, -1333,  1288,  9515,  1293,
     1719    9515,  1056,  1298,    72,   109,  2402, -1333, -1333,  5689,  1287,
     1720     521, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
     1721    9036, -1333,  7691,  1305, -1333, -1333,  8545,   522,   524, -1333,
     1722    1308,  1302,   866,  1318, -1333,   325, -1333, -1333, -1333, -1333,
     1723     961,  1324, -1333, -1333,  1328,  1363, -1333, -1333,  1363,  1363,
     1724     730,  1333,  1026,  1220, -1333,  1339, -1333,  5606, -1333, -1333,
     1725   -1333, -1333,  1340, -1333,  5606,  5606,  5606, -1333, -1333,  1341,
     1726   -1333,  1342,  1345,  1347,   600,  7385,  7502, -1333, -1333, -1333,
     1727   -1333,  1352, -1333,  7763,   633,   634,  1353,   658,  5821, -1333,
     1728   -1333, -1333,   528, -1333,   659,  1362,  1364,   216,  1401,   965,
     1729   -1333, -1333,  9515, -1333,  9220,  9515, -1333, -1333, -1333,  1365,
     1730    1367, -1333, -1333, -1333,  1358, -1333, -1333, -1333, -1333, -1333,
     1731   -1333,  8545,   866,  1373, -1333,  1368,   866,  5606, -1333, -1333,
     1732   -1333,   730, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
     1733   -1333, -1333, -1333, -1333,  1384,  1391, -1333, -1333, -1333, -1333,
     1734   -1333, -1333, -1333,  1404, -1333,  1408, -1333,  9220,   198,  9515,
     1735    9220, -1333,  1406,  9515, -1333,   323,  1378,  1427, -1333, -1333,
     1736    1416,  1417,  1395, -1333,   910, -1333, -1333, -1333,  1096,  2376,
     1737    1413, -1333,   326,  9515, -1333,   663, -1333,  1270,   730,   730,
     1738    1420,  1424,  1425,  1434, -1333, -1333,  7691,  1429, -1333,  1489,
     1739    9515,  1426, -1333, -1333,  9130, -1333,   689, -1333,  1414,  9220,
     1740    1418, -1333, -1333,  1445, -1333,  1449, -1333,  1467,  1469, -1333,
     1741    1435,  8545, -1333, -1333, -1333,   866,   594,  1456,  1436,  1460,
     1742    1466,  1270,  1270, -1333, -1333, -1333, -1333, -1333,  9220,   194,
     1743   -1333,   376, -1333, -1333,  7048, -1333, -1333,  1447,  9515, -1333,
     1744    9515,  7048,   216,  8689,   216,  8689,  1470, -1333,  1471, -1333,
     1745   -1333,  1477, -1333, -1333,   720, -1333, -1333, -1333, -1333,  1473,
     1746    1481, -1333,  9515,  9515, -1333, -1333,   991,    94, -1333, -1333,
     1747    1462, -1333,   991, -1333, -1333,  2158,   594, -1333, -1333,   216,
     1748    8689,   216,  8689,  1487,  1463,   594, -1333, -1333, -1333, -1333,
     1749    9130,  1484,   991,  5522,  9515,  9040,  1485,   991,  1493,  2158,
     1750    3005, -1333, -1333, -1333,  1494, -1333, -1333, -1333, -1333,  8059,
     1751   -1333, -1333, -1333,  8905, -1333,  9130, -1333, -1333,  1474,  8815,
     1752   -1333, -1333,  9040,   216,  3005,   216,  1498,  1500,   729, -1333,
     1753    8905, -1333, -1333, -1333,  8815, -1333, -1333, -1333,   216,   216,
     1754   -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333
    17601755};
    17611756
     
    17631758static const yytype_int16 yypgoto[] =
    17641759{
    1765    -1267,  4051,  2784, -1267,   133, -1267,  1353,   867,  -240, -1267,
    1766    -1267,   504,  -528,  -489,  -834, -1001, -1267,   -77,  4776,     0,
    1767    -1267,   793,   489,   531,   722,   534,   999,  1001,  1005,  1007,
    1768     1002, -1267,   711,  -584,  4023,  -739, -1267, -1267,   606,  -227,
    1769     -674,  -263, -1267,   335, -1267,   382,  -963, -1267, -1267,   119,
    1770    -1267,  -732, -1049,   228, -1267, -1267, -1267, -1267,    54, -1266,
    1771    -1267, -1267, -1267, -1267, -1267, -1267,   302, -1050,    23, -1267,
    1772     -171, -1267,   482,   277, -1267,   153, -1267,  -355, -1267, -1267,
    1773    -1267,   538,  -612, -1267, -1267,     9,  -990,   219,  2319, -1267,
    1774    -1267, -1267,  -124, -1267,   110,    36,  -188,  1213,  3869, -1267,
    1775    -1267,    12,    61,   970,  1623, -1267,  1495, -1267, -1267,    21,
    1776     1827, -1267,  2153,  1937, -1267, -1267, -1267,  -641, -1267,   911,
    1777      914,   521,   695,   -93, -1267, -1267, -1267,   906,   690,  -521,
    1778    -1267,  -507,  -417,  -420, -1267, -1267,  -914,  -941,  -147,   -54,
    1779     1019,    19, -1267,  2311,   381,  -366,  -185,  -122,   649,   745,
    1780    -1267,   964, -1267,  2435,  1823,  -463,   895, -1267, -1267,   693,
    1781    -1267,  -225, -1267,   103, -1267, -1267, -1267, -1263,   408, -1267,
    1782    -1267, -1267,  1139, -1267,    42, -1267, -1267,  -832,   -94, -1230,
    1783     -162,  2364, -1267,  3117, -1267,   908, -1267,  -103,   120,  -184,
    1784     -183,  -178,     7,   -40,   -39,   -36,  1505,     4,    32,    71,
    1785       92,  -173,  -172,  -170,  -168,  -306,  -510,  -503,  -496,  -559,
    1786     -313,  -498, -1267, -1267,  -514,  1064,  1072,  1076,  1925,  4399,
    1787     -524,  -566,  -556,  -543,  -548, -1267,  -508,  -723,  -722,  -717,
    1788     -582,  -166,  -229, -1267, -1267,   283,   102,     6, -1267,  3380,
    1789      108,  -611,  -462
     1760   -1333,  3826,  2645, -1333,   849, -1333,   762,   867,  -112,   956,
     1761   -1333,   580,  -517,  -490,  -904,  -999, -1333,   -62,  4003,     0,
     1762   -1333,   676,   547,   572,   581,   571,  1057,  1058,  1059,  1055,
     1763    1061, -1333,   963,  -485,  4467,  -910, -1333, -1333,   665,   184,
     1764    -691,   319, -1333,   356, -1333,   440, -1283, -1333, -1333,   176,
     1765   -1333, -1072, -1062,   285, -1333, -1333, -1333, -1333,   107, -1332,
     1766   -1333, -1333, -1333, -1333, -1333, -1333,   359, -1109,    16, -1333,
     1767    -288, -1333,   535,   330, -1333,   208, -1333,  -237, -1333, -1333,
     1768   -1333,   596,  -693, -1333, -1333,     9,  -933,   372,  2238, -1333,
     1769   -1333, -1333,   -57, -1333,   110,    36,  -194,  1419,  3198, -1333,
     1770   -1333,    12,    61,  1486,  1572, -1333,  1265, -1333, -1333,    21,
     1771    1950, -1333,  2034,  1735, -1333, -1333, -1333,  -611, -1333,   975,
     1772     976,   584,   761,   136, -1333, -1333, -1333,   967,   755,  -456,
     1773   -1333,  -528,  -433,   832, -1333, -1333,  -922,  -915,  -420,  1560,
     1774    1084,    19, -1333,   388,   467,  -359,  -203,  -145,   706,   811,
     1775   -1333,  1028, -1333,  2348,   798,  -442,   958, -1333, -1333,   740,
     1776   -1333,  -233, -1333,   118, -1333, -1333, -1333, -1243,   466, -1333,
     1777   -1333, -1333,  1188, -1333,    -1, -1333, -1333,  -832,  -108, -1152,
     1778    -131,  3669, -1333,  4255, -1333,   951, -1333,  -125,   120,  -178,
     1779    -173,  -170,     7,   -41,   -40,   -39,   619,    -5,    25,    46,
     1780      -4,  -167,  -166,  -158,  -157,  -296,  -519,  -516,  -510,  -538,
     1781    -311,  -552, -1333, -1333,  -514,  1111,  1112,  1114,  1610,  4174,
     1782    -565,  -560,  -546,  -522,  -389, -1333,  -475,  -720,  -716,  -715,
     1783    -584,  -222,  -287, -1333, -1333,    47,   102,   -51, -1333,  3453,
     1784     108,  -602,  -196
    17901785};
    17911786
     
    17931788   positive, shift that token.  If negative, reduce the rule which
    17941789   number is the opposite.  If YYTABLE_NINF, syntax error.  */
    1795 #define YYTABLE_NINF -529
     1790#define YYTABLE_NINF -527
    17961791static const yytype_int16 yytable[] =
    17971792{
    1798       51,   115,   398,   399,   759,   151,   152,    99,   400,   153,
    1799      116,   745,    71,   401,   402,   451,   403,   427,   404,   951,
    1800      952,    78,   734,    52,   268,   953,   409,   719,   856,   808,
    1801     1051,   724,  1167,   833,    51,   438,   604,   118,   815,   809,
    1802     1362,    99,   503,   599,   906,   149,    71,   382,   383,   154,
    1803      819,    51,   810,   936,   786,    78,   826,    52,   162,   666,
    1804      668,    72,   662,   706,  1152,   187,  1175,   203,   210,   124,
    1805      517,    51,   194,   816,   408,   217,   145,   155,   227,    33,
    1806      220,   671,   398,   399,   406,   804,   125,   160,   400,   675,
    1807     1150,  1151,   805,   401,   402,    72,   403,   807,   404,   806,
    1808      473,   475,   108,   108,   910,  -239,  -239,   115,   424,   848,
    1809       65,  1229,  1284,   261,  1177,   115,   156,   204,   267,   272,
    1810       98,   474,   846,   846,   865,    33,   723,   262,  1176,   213,
    1811      263,    33,    33,   469,  1120,   623,   108,   820,   846,   627,
    1812     1443,   823,    33,   259,    65,   736,   151,   152,   310,   149,
    1813      153,   160,  1424,   410,    98,   565,   162,   115,   345,   167,
    1814     1179,   210,   840,   342,   406,   150,   843,  1234,   372,   951,
    1815      952,    98,   900,   108,   146,   953,  1178,    33,  -239,   591,
    1816      713,  1161,   918,  1285,   326,   190,   187,   187,    98,   566,
    1817      154,    98,   177,   340,   162,  1235,   846,   157,   665,   667,
    1818      291,   804,   267,   253,   418,   410,   410,  1180,   805,   790,
    1819       51,  1157,   847,   847,   479,   806,   410,   162,   155,    58,
    1820      117,  1512,   210,   167,   660,  1424,   151,   152,   847,   441,
    1821      153,  1314,   939,  1317,  1319,   808,   144,  1158,   437,   474,
    1822      310,   177,   429,   879,   177,   809,   432,  1061,  1527,   817,
    1823     1050,   596,    51,    58,   999,   819,   330,   156,   810,    99,
    1824      272,   716,   728,  1152,    71,   272,   267,   267,   729,    98,
    1825      148,   976,   115,    78,   162,    52,   326,   517,    78,   407,
    1826     1167,    98,   517,   440,   604,   517,   847,   211,   730,  1000,
    1827      221,   804,   481,   469,   461,  1184,  1185,   310,   805,   498,
    1828     1074,   649,   657,   987,  1099,   806,   397,   190,   432,  1065,
    1829      310,   486,   469,    72,   707,   695,   172,  1152,   434,   886,
    1830      469,   706,  1382,  1383,  1100,   281,   568,  1382,  1383,   664,
    1831       98,   149,   445,   519,   164,   669,   169,   182,   372,   780,
    1832     1454,   115,    98,  1150,  1151,   345,   160,   584,   330,   597,
    1833      615,   458,   177,   808,   108,  1097,   795,  1181,  1051,   407,
    1834      170,   972,    65,   809,   620,   112,  1158,   470,   620,  1224,
    1835     1307,   977,    98,  1003,   202,   657,   810,   583,    43,    44,
    1836      434,   588,   988,  -294,   624,   282,   477,  1470,   628,   112,
    1837     1308,   376,   174,   248,  1384,   267,   816,   842,   164,  1393,
    1838      621,   833,    43,    44,   625,   187,   177,   377,   696,  1482,
    1839     1166,   213,   372,   177,   112,  1487,   141,   142,   167,   876,
    1840      253,   332,  1498,   267,  1500,   310,   310,    43,    44,   267,
    1841      752,   620,   555,   556,   254,  1507,  1167,  1152,    78,   251,
    1842     1514,   439,   112,  1167,  1138,  1140,  1106,  -524,    33,   591,
    1843      253,    98,   115,   593,   591,    43,    44,    78,   244,   386,
    1844      264,   326,   326,  1082,  1419,    78,  1085,   557,   558,   598,
    1845      267,    58,   836,   -12,   706,   387,   837,  1118,   267,  1369,
    1846      620,   177,    51,   757,   333,   372,   712,   869,   680,    99,
    1847      940,   334,   115,   433,    71,  1167,  1223,   658,   177,   389,
    1848      604,   118,   177,    78,   310,    52,   115,   998,  -448,   310,
    1849      491,   310,   310,   492,  1215,   390,   695,   740,   857,   743,
    1850      824,  1407,   596,   345,  1511,   190,   486,   470,   326,   416,
    1851      486,   971,   213,   330,   330,  1408,  1413,  1414,   551,   552,
    1852      519,   391,   519,    72,  1522,   519,   470,   326,   519,  -449,
    1853      469,  1526,   435,   867,   470,   433,  1000,   392,  1106,   253,
    1854      332,   410,   443,   900,   858,   980,   635,   568,   568,   576,
    1855      658,   410,   707,  1259,  1260,   310,   915,   897,  1050,   277,
    1856      521,  1147,  1148,   859,   108,   620,   345,  1149,   393,   615,
    1857      704,   901,    65,   164,  1455,   597,  1343,   597,   797,  1039,
    1858      330,   903,    98,   579,   394,   410,   598,   902,  1456,   696,
    1859       39,   326,   175,   176,    42,   620,   279,   904,   998,   330,
    1860      620,   793,   615,    43,    44,   901,   620,   903,   280,   620,
    1861      620,   567,   518,   410,   695,   835,  1195,  1196,   335,    47,
    1862       48,  1062,   574,  1063,   695,   620,   548,   267,   575,   371,
    1863      849,   832,   549,   550,  1428,   695,   588,   838,  1345,   287,
    1864     1164,   839,   841,   864,  1010,     2,   207,     4,     5,     6,
    1865        7,  1392,    43,    44,  1164,  1298,  1165,   115,   440,   336,
    1866      894,  1300,   337,   330,  1055,     8,     9,    10,    11,    12,
    1867     1290,  1299,   838,   676,   338,    78,  1081,  1301,   512,   575,
    1868      378,    58,   740,   620,   920,   615,  1093,   371,   398,   399,
    1869      706,   712,   712,   680,   400,   803,    33,   598,  1346,   401,
    1870      402,    78,   403,   834,   404,   707,   375,   696,   593,   384,
    1871      697,   388,    37,  1016,    38,   684,   698,   696,   345,   396,
    1872      714,   725,   743,   743,    36,   498,   715,   726,   696,   177,
    1873     1428,   486,   213,   408,   739,  1428,  1462,   880,  1463,  1356,
    1874      740,   882,  1172,   740,   177,   425,   213,   740,   951,   952,
    1875      426,   742,   899,   410,   953,  1428,   673,   177,   448,    47,
    1876       48,  1409,  1428,  -372,   470,   568,  -112,   521,   291,   521,
    1877     -112,   406,   521,   965,   620,   521,   983,    -3,  1421,   966,
    1878      898,   597,   699,  -401,  1068,   978,  1068,   919,  1142,   596,
    1879      470,   698,  1509,   597,  1460,    47,    48,   591,  1211,  1321,
    1880      870,  1460,   410,  1339,   575,   459,  1323,  1324,  1325,   740,
    1881      979,   803,   598,     2,   207,     4,     5,     6,     7,   518,
    1882     1335,  1332,  -295,   502,   518,  1333,   460,   518,   704,     8,
    1883        9,    10,    11,    12,   695,   695,   940,   213,   482,   177,
    1884      940,   940,   310,   112,   229,   141,   142,    50,   114,  1340,
    1885     1480,  1421,  1342,  1508,    71,   740,    43,    44,   740,   873,
    1886       33,   410,  1347,    78,   345,   731,   506,   732,   740,  1368,
    1887      733,   345,   894,   737,   894,  1162,   797,  1410,   114,   114,
    1888       37,    50,    38,  1407,   852,  1429,   115,   511,    36,   695,
    1889      695,   740,    50,   418,   653,   410,  1476,   524,    50,   920,
    1890      920,   803,  1477,    72,   712,  1213,    50,  1039,  1532,  1217,
    1891      115,   310,    50,   598,   575,    50,   553,   554,    50,  1086,
    1892      969,   966,   680,  1266,  1267,   561,  1269,   696,   696,   559,
    1893      560,   114,   114,  1274,   743,  1276,   479,   332,   410,  1494,
    1894      684,   707,   562,   657,   108,   486,  1088,   326,   897,   817,
    1895      332,   596,    65,   563,  1305,    50,   332,   410,    50,   112,
    1896     -296,   141,   142,   345,   564,    50,   407,     8,     9,    10,
    1897       11,    12,    43,    44,  1206,  1352,  1353,   878,  1277,  1278,
    1898     1279,   704,   696,   696,   620,   620,   885,  1123,  1106,   410,
    1899      887,  1134,  1064,   410,   898,   339,    50,   112,    33,   832,
    1900     1402,   966,   310,  1355,  1111,  1382,  1383,  1112,    50,  1113,
    1901       43,    44,   108,  1137,  1169,   596,  1230,  1231,   707,   330,
    1902      764,   765,   230,    78,   598,   231,    36,   440,   235,  1139,
    1903      237,   596,   659,    50,    50,  1294,   585,   246,  1228,   650,
    1904      112,   115,    -3,  1220,  1363,   410,   894,  1111,  1363,    50,
    1905     1112,   894,  1113,    43,    44,   651,  1381,    50,   508,  1389,
    1906      920,    58,   652,    72,   766,   767,    50,   654,   267,    50,
    1907      655,   834,   695,   772,   773,   656,   114,   680,   661,   695,
    1908      695,   695,   258,   546,   547,     2,   207,     4,     5,     6,
    1909        7,   114,   685,   686,  1388,   114,   690,    39,   688,    50,
    1910      114,    42,  -243,  1427,   108,   716,   727,   345,  1431,   741,
    1911       43,    44,   470,    50,    50,   749,   798,   -14,   546,   800,
    1912       50,   811,   -15,  -297,   854,   861,   855,    50,  1295,  1087,
    1913        8,     9,    10,    11,    12,   881,    45,  1453,   658,   883,
    1914      888,   931,   695,   899,    47,    48,   908,  1444,   272,   115,
    1915     -422,  -528,    37,   546,    38,   715,   923,   933,   220,   944,
    1916      937,    33,   945,   230,   946,   696,   898,   938,   947,   684,
    1917      310,   898,   696,   696,   696,   948,   949,   963,    50,   973,
    1918      974,   975,    71,   989,   620,   990,   991,   992,   115,    36,
    1919      993,    78,   994,    68,   119,    50,    50,  1086,   995,  -410,
    1920     -409,  1060,     8,     9,    10,    11,    12,  1018,  1052,   213,
    1921     1054,  1058,    50,   893,  1075,  1076,    50,   704,  1077,  1078,
    1922     1084,    58,  1521,  1094,  1088,   740,   636,    68,  1521,  1095,
    1923      496,    72,  1096,    33,  1098,   696,  1101,   620,   620,  1521,
    1924      958,  1103,    50,  1521,   161,   272,  1104,  1405,  1105,   525,
    1925      310,   108,    50,   526,   527,   528,  1520,   768,   769,   770,
    1926      771,    36,  1169,  1108,   222,  1132,  1153,  1154,  1155,  1156,
    1927       50,    78,   108,  1170,  1171,  1173,    50,   529,  1174,   530,
    1928       65,   531,   532,   115,  1182,  1188,    -3,   398,   399,  1193,
    1929      108,  1186,  1086,   400,   704,  1198,  1203,  1201,   401,   402,
    1930      260,   403,   230,   404,   235,   567,   440,   410,   491,  1207,
    1931     1214,    72,   114,    47,    48,  1212,  1216,    50,  1219,  1088,
    1932     1232,   761,   762,   763,   684,    50,  1225,  1236,  1238,    50,
    1933     1240,  1241,  1245,    50,   113,  1242,   114,  1243,   114,  1252,
    1934     1261,   267,   331,   112,  1262,   141,   239,  1268,  1183,  1271,
    1935      260,   350,   108,  1493,  1296,  1289,    43,    44,   620,  1404,
    1936      470,    39,  1272,   184,   185,    42,  1273,   211,   221,   406,
    1937     1275,  1283,  1302,   114,    43,    44,  1304,  1306,   114,   909,
    1938      405,  1310,   240,   115,  1311,   108,  1312,   241,  1315,    58,
    1939      230,  1320,  1086,   657,  1322,   423,  1328,  1329,   428,   430,
    1940      892,  1338,   410,   161,  1330,  1331,   115,  1087,    47,    48,
    1941     1341,  1279,  1348,   115,  1357,   115,  1349,   115,  1169,  1088,
    1942     1358,   893,  1359,  1365,   446,  1169,   114,    78,   449,  1366,
    1943      450,   151,   152,  1376,    78,   153,  1377,  -411,  1380,   457,
    1944     1391,  1395,    50,  1397,    50,    68,  1406,  1492,  1399,  1400,
    1945      471,  1467,   115,  1467,   115,  1401,  1415,  1333,  1416,  1417,
    1946      478,  1418,  1420,    50,   439,   115,  1425,    72,   430,    58,
    1947      970,  1492,  1492,   177,    72,    76,  1430,  1169,    50,   162,
    1948     1434,   310,   114,  1436,  1432,   108,    78,  1438,  1467,  1440,
    1949     1467,    50,  1442,   114,    50,   114,  1492,  1447,  1448,  1449,
    1950     1450,  1461,  1087,   372,  1471,  1473,  1486,  1475,   108,    76,
    1951        8,     9,    10,    11,    12,   108,   470,   326,  1478,  1479,
    1952     1501,  1187,   959,   470,  1506,  1513,    72,    50,  1502,  1515,
    1953     1517,   114,  1523,   114,   260,  1530,   163,   114,   589,  1531,
    1954      774,    33,  1011,   775,   617,   114,   223,   778,   776,  1110,
    1955      195,   777,  1288,   218,  1481,  1394,   228,   622,    50,    50,
    1956     1533,   622,  1351,  1218,   407,  1367,  1464,   108,   889,    36,
    1957     1192,   890,  1200,    50,  1069,   470,   911,  1073,   792,    39,
    1958     1017,   184,   185,    42,   909,   860,   463,  1107,   658,   330,
    1959      925,   477,    43,    44,  1350,   131,  1297,   132,   133,   134,
    1960     1083,   709,  1087,    39,     0,   184,   185,    42,    43,    44,
    1961      471,   782,     0,   742,   934,   410,    43,    44,   595,   783,
    1962      596,    47,    48,   784,   350,    58,    47,    48,     0,   471,
    1963      909,     0,    58,   353,   163,     0,     0,   471,     0,     0,
    1964        0,     0,   892,     0,   410,     0,   373,     0,    50,     0,
    1965       47,    48,     0,     0,     0,   691,     0,     0,   430,     0,
    1966       50,     0,  1121,     0,     0,     8,     9,    10,    11,    12,
    1967        0,   214,   163,   705,     0,    68,   496,     0,     0,     0,
    1968      233,     0,     0,   430,    58,     0,     0,   430,     8,     9,
    1969       10,    11,    12,     0,     0,   163,    33,     0,  1468,     0,
    1970     1468,   112,   636,   141,   142,     0,   447,   442,   114,     0,
    1971     1011,     0,     0,     0,    43,    44,   350,     0,     0,    33,
    1972        0,     0,   214,     0,    36,     0,     0,    76,     0,    39,
    1973        0,     0,    76,    42,     0,  1468,     0,  1468,     0,    50,
    1974      720,    50,    43,    44,     0,   721,     0,    36,   114,  1465,
    1975        0,  1469,     0,   112,     0,     0,   546,     0,     0,     0,
    1976     1111,   785,     0,  1112,   214,  1113,    43,    44,    45,     0,
    1977       39,    50,   184,   185,    42,     0,    47,    48,   622,   796,
    1978        0,     0,     0,    43,    44,     0,  1497,     0,  1499,   909,
    1979      813,   919,   114,   596,  1316,   508,     0,     0,   113,    47,
    1980       48,     0,     0,     0,     0,   636,     0,    79,   589,   186,
    1981        0,   114,     0,   589,     0,   114,   373,    47,    48,   622,
    1982        0,     0,   350,   350,     0,   214,   223,     0,     0,     0,
    1983     1528,     0,  1529,     0,     0,     0,     0,     0,   350,     0,
    1984       39,    79,   175,   176,    42,  1536,  1537,    39,   909,   909,
    1985        0,    42,     0,    43,    44,     0,   691,     0,     0,   753,
    1986       43,    44,   114,   214,   758,     0,     0,   471,   214,     0,
    1987      525,   216,     0,     0,   526,   527,   528,     0,   224,   375,
    1988        0,     0,     0,   497,     0,     0,   801,   243,   596,     0,
    1989      373,     0,    76,   471,    47,    48,   350,     0,   529,   114,
    1990      530,     0,   531,  1287,     0,   924,   353,     0,   430,     0,
    1991        0,    76,   463,    50,     0,     0,     0,     0,    50,    76,
    1992      112,     0,   216,     0,     0,     0,     0,  1111,     0,     0,
    1993     1112,   705,  1113,    43,    44,    50,   954,   353,     0,     0,
     1793      49,   113,   149,   150,   151,   449,   396,    97,   266,   425,
     1794     114,   397,    69,   757,   398,   436,    50,   399,   400,   732,
     1795     949,    76,   380,   381,   950,   951,   401,   402,  1049,   831,
     1796     814,   143,    49,   806,   934,   854,   602,   116,   152,    97,
     1797     693,   805,   743,   147,    69,   704,   717,   807,    50,    49,
     1798     722,   597,   784,    76,   259,   407,   160,   813,  1360,    31,
     1799     404,    70,  1118,   185,   664,   666,   208,   122,   153,    49,
     1800     192,   808,   904,   215,   802,   621,   225,   803,   218,   625,
     1801    1148,  1149,   201,   804,   563,   158,   396,  1165,  1150,   154,
     1802      31,   397,   422,    70,   398,   522,   162,   399,   400,   844,
     1803     844,   279,   106,   106,   340,   113,   401,   402,   374,  1159,
     1804      63,  1227,   167,   113,  1173,   844,   265,   270,   564,   289,
     1805      96,   589,  1182,  1183,   375,   260,  1056,   211,   261,   471,
     1806     473,   721,   202,   408,   106,  1282,   168,   123,  -239,  -239,
     1807     404,   257,    63,   149,   150,   151,   308,   147,    31,   158,
     1808     734,   937,    96,  1510,   160,   113,   343,   165,  1441,   208,
     1809     162,   280,   251,   148,   408,   406,   370,  1048,   501,    96,
     1810     949,   106,   846,   844,   950,   951,  1174,   142,   660,   152,
     1811    1525,   405,   324,   188,   185,   185,    96,   863,   711,    96,
     1812     802,   338,   160,   803,   845,   845,  1222,   669,   467,   804,
     1813     265,   908,  1509,   898,   658,   673,  1283,   817,    49,   153,
     1814     845,  -239,   472,   824,   788,   160,   251,   330,   408,    31,
     1815     208,   165,  1520,   149,   150,   151,    31,   439,  1422,  1524,
     1816     154,  1312,  1175,  1315,  1317,  1177,   435,   472,   308,   806,
     1817     427,   693,  1380,  1381,   430,   916,   998,   985,    31,   459,
     1818      49,    31,   144,   807,   328,   431,   705,    97,   270,   714,
     1819    1155,   405,    69,   270,   265,   265,    50,    96,   845,   974,
     1820     113,    76,   160,   997,   324,  1059,    76,   808,   655,    96,
     1821     802,   438,  1178,   803,   602,   647,  1156,  1150,   582,   804,
     1822     479,   416,  1452,   408,  1176,   308,   793,   496,   477,   384,
     1823     408,  1422,  1232,   704,   395,   188,   430,  1072,   308,   484,
     1824     146,    70,  1426,   662,  1382,   385,   432,   431,  1156,   667,
     1825     815,   155,   594,   822,   566,   594,  1468,  1164,    96,   147,
     1826    1233,   517,   170,  1148,  1149,  1165,   370,   840,  1179,   113,
     1827      96,  1150,   519,   343,   158,   443,   328,   595,   613,   251,
     1828     330,   655,   106,   814,   727,   162,  1049,   806,   467,   693,
     1829      63,  1496,   618,  1498,   456,   468,   618,  1380,  1381,   693,
     1830      96,   807,    56,   115,   728,   581,   285,   467,   432,   586,
     1831     693,   572,   622,   180,   475,   467,   626,   573,   726,    41,
     1832      42,   589,   200,   265,  1480,   808,   589,   831,   619,   656,
     1833    1485,   818,   623,   185,    56,   821,  1063,  1367,  1426,   211,
     1834     370,   172,   817,  1426,   738,   510,   165,   376,   141,  -294,
     1835    1505,   265,  1097,   308,   308,  1512,   838,   265,   969,   618,
     1836     841,   246,   110,  1426,   110,   884,    76,  1305,   209,  1391,
     1837    1426,   219,  1098,   249,  1405,    41,    42,    41,    42,    96,
     1838     113,   591,  1095,   252,  1417,    76,   704,  1306,  1406,   324,
     1839     324,  1150,  -522,    76,  1411,  1412,   387,   596,   265,   251,
     1840     240,   243,   656,   750,  1116,   755,   265,  1104,   618,   515,
     1841      49,   -12,   388,   370,   710,  1083,   678,    97,   549,   550,
     1842     113,  1165,    69,   855,  1453,  1048,    50,   682,  1165,   116,
     1843     602,    76,   308,  1221,   113,   978,   674,   308,  1454,   308,
     1844     308,   389,   573,   998,   705,   996,   867,   741,   391,   899,
     1845     856,   343,   633,   188,   484,   468,   324,   390,   484,   834,
     1846     211,   328,   328,   835,   392,   900,   695,   865,   517,   857,
     1847     517,    70,   696,   517,   468,   324,   517,   262,   414,   519,
     1848    1165,   519,   468,   895,   519,  -446,   901,   519,     2,   205,
     1849       4,     5,     6,     7,   489,   566,   566,   490,   712,  1147,
     1850     899,   433,   902,   308,   713,  1343,   574,  1341,   408,   693,
     1851     693,   441,   106,   618,   343,   723,  1060,   613,   702,  1104,
     1852      63,   724,   437,   595,   898,   595,   795,   737,   328,  -447,
     1853      96,  1136,  1138,   738,   596,   901,   878,   663,   665,   324,
     1854     836,  1213,   738,   618,   837,   467,   938,   328,   618,   791,
     1855     613,  1061,    56,    35,   618,    36,   996,   618,   618,   275,
     1856     453,  1162,   880,   833,   693,   693,   277,  1001,   738,  1162,
     1857    1296,   913,  1298,   618,  1008,   265,   738,  1163,   847,   830,
     1858     331,   516,  1390,   836,   586,  1288,  1297,  1079,  1299,    37,
     1859     839,   862,  1344,    40,  1053,  -112,   110,   705,   161,  -112,
     1860    1257,  1258,    41,    42,   897,   113,   438,   546,   892,    41,
     1861      42,   328,   193,   547,   548,   216,   515,   278,   226,   963,
     1862     332,   515,   704,    76,   515,   964,  1091,   577,   799,   408,
     1863     594,   618,   918,   613,   551,   552,    45,    46,  1014,   710,
     1864     710,   678,   396,   801,  1330,   596,   333,   397,  1331,    76,
     1865     398,   832,   682,   399,   400,   334,   591,  1080,   976,  1209,
     1866     335,  1458,   401,   402,   696,   573,   343,  1460,  1458,  1461,
     1867     741,   741,   868,   496,   408,  1337,  1338,   336,   778,   484,
     1868     211,   738,   738,     2,   205,     4,     5,     6,     7,   589,
     1869     369,   553,   554,   111,   211,   635,   161,   404,  1354,   949,
     1870    1340,  1345,   373,   950,   951,  1408,   738,   738,   371,   382,
     1871    1292,  1405,   468,   566,     2,   205,     4,     5,     6,     7,
     1872    1506,   386,   618,  1507,   981,   671,   555,   556,   896,   595,
     1873    1140,  1427,   110,   871,   161,   408,  1211,   738,   468,  1109,
     1874    1215,   595,  1110,   227,  1111,    41,    42,   693,    35,   394,
     1875      36,   697,  1333,   423,   693,   693,   693,   161,   977,   801,
     1876     596,   129,  1474,   130,   131,   132,   557,   558,  1475,   440,
     1877     110,  1530,   139,   237,    41,    42,   702,   573,   565,    35,
     1878     408,    36,    56,    41,    42,   211,    45,    46,   516,  1121,
     1879     308,   408,   424,   516,   214,   406,   516,    48,   112,  1132,
     1880    1160,   408,    69,   446,  1135,   716,   594,   720,  1407,   238,
     1881     241,    76,   343,    -3,   239,   330,   408,   693,   405,   343,
     1882     892,  -370,   892,  -399,   795,  1419,   112,   112,   110,    48,
     1883     139,   140,   480,   705,   113,   457,   175,   416,   651,   408,
     1884      48,    41,    42,   110,   500,   214,    48,   918,   918,   801,
     1885    1109,    70,   710,  1110,    48,  1111,    41,    42,   113,   308,
     1886      48,   596,   110,    48,   139,   140,    48,  1084,   458,   655,
     1887     678,  1137,   242,   594,   895,    41,    42,   289,   371,   112,
     1888     112,   682,   741,   504,  1226,   175,   509,   214,   175,   506,
     1889     967,   964,   106,   484,  1086,   324,   522,  1478,  1419,   729,
     1890      63,   730,   559,    48,   731,   560,    48,   735,  1204,   562,
     1891     705,   343,   938,    48,   544,   545,   938,   938,   561,  1218,
     1892    1492,   408,   740,   337,   408,   477,   330,   408,  -295,   702,
     1893      45,    46,   618,   618,   583,     8,     9,    10,    11,    12,
     1894    1062,    -3,   896,   461,    48,   648,   876,   830,   214,   544,
     1895     308,   851,   371,  1350,  1351,   883,    48,  1400,   964,   885,
     1896     106,  1066,  1167,  1066,    31,  1380,  1381,   328,   649,  1104,
     1897     650,    76,   596,   652,    37,   438,   182,   183,    40,  1228,
     1898    1229,    48,    48,   653,   544,   654,   214,    41,    42,   113,
     1899     656,   214,    34,   657,   892,   897,   175,    48,   659,   892,
     1900     903,   917,   905,   594,   256,    48,   453,   684,   918,    45,
     1901      46,    70,   683,   890,    48,   408,   265,    48,   686,   832,
     1902     688,    45,    46,  -243,   112,   678,   762,   763,   110,   725,
     1903    1303,   815,   330,   594,   891,  1109,   682,   796,  1110,   112,
     1904    1111,    41,    42,   112,  1275,  1276,  1277,    48,   112,   714,
     1905     175,   739,   106,   764,   765,   343,   747,   175,   770,   771,
     1906     468,    48,    48,  -296,   766,   767,   768,   769,    48,  1314,
     1907       8,     9,    10,    11,    12,    48,   214,  -297,     8,     9,
     1908      10,    11,    12,   798,     8,     9,    10,    11,    12,   809,
     1909      37,   -14,   182,   183,    40,   -15,   270,   113,    37,    31,
     1910     173,   174,    40,    41,    42,   852,   218,    31,   853,  1037,
     1911     859,    41,    42,    31,   896,   879,   881,   886,   308,   896,
     1912    1361,  -420,   906,  -526,  1361,   175,    48,    34,   921,   593,
     1913      69,   594,   618,   713,   929,    34,   113,    45,    46,    76,
     1914     931,    34,   175,    48,    48,  1084,   175,     8,     9,    10,
     1915      11,    12,   759,   760,   761,   111,   214,   211,   936,   935,
     1916      48,   942,    56,   943,    48,   702,   944,   945,   946,   947,
     1917    1058,   635,  1086,   971,   634,   972,    31,  1019,   973,    70,
     1918     961,  1403,   987,   988,   989,   618,   618,   990,   991,   992,
     1919      48,   993,  -408,   270,  -407,    74,  1518,   214,   308,   106,
     1920      48,  1016,  1050,  1073,    34,  1074,  1052,  1075,  1076,  1082,
     1921    1167,  1092,  1093,   738,  1096,   891,   751,  1068,    48,    76,
     1922     106,   756,   110,  1442,    48,  1099,   956,    74,    63,  1109,
     1923    1085,   113,  1110,  1094,  1111,    41,    42,  1101,   106,  1102,
     1924    1084,   396,   702,  1103,  1106,  1130,   397,  1151,   565,   398,
     1925     408,  1154,   399,   400,   438,  1168,    45,    46,  1152,    70,
     1926     112,   401,   402,  1316,   221,    48,    37,  1086,  1169,   461,
     1927      40,  1153,  1170,    48,   635,  1171,  1172,    48,  1180,    41,
     1928      42,    48,  1264,  1265,   112,  1267,   112,  1491,  1184,   265,
     1929    1191,    -3,  1272,  1186,  1274,   404,  1196,  1199,    37,  1201,
     1930     106,   489,    40,  1205,  1210,    43,   618,  1402,   468,  1214,
     1931    1212,    41,    42,    45,    46,   214,  1217,  1181,  1230,   655,
     1932    1223,   112,    56,  1234,  1236,  1238,   112,  1266,  1239,  1240,
     1933    1241,   113,  1243,   106,  1287,  1250,   864,   709,   866,  1259,
     1934    1084,  1260,  1269,   214,  1270,    45,    46,  1294,   214,    66,
     1935     117,   351,  1271,   957,   113,  1300,   110,  1273,   139,   140,
     1936    1304,   113,  1281,   113,  1302,   113,  1167,  1086,  1019,    41,
     1937      42,  1308,  1309,  1167,   112,    76,  1310,  1313,   149,   150,
     1938     151,    66,    76,  1318,  1320,  1326,  1327,  1328,   912,  1329,
     1939      48,  1277,    48,   175,  1339,  1490,  1336,   850,   159,  1465,
     1940     113,  1465,   113,  1346,  1357,  1347,  1393,  1355,   175,  1356,
     1941    1466,    48,  1466,   113,  1363,    70,   405,   214,   220,  1490,
     1942    1490,   175,    70,   877,   445,  1167,    48,   160,  1374,   308,
     1943     112,   214,  1364,   106,    76,  1375,  1465,  1037,  1465,    48,
     1944     656,   112,    48,   112,  1490,    74,  -409,  1466,  1389,  1466,
     1945      74,   370,  1378,  1386,   258,  1395,   106,  1397,  1398,  1399,
     1946    1404,  1418,  1413,   106,   468,   324,  1414,  1415,   209,   219,
     1947     110,   468,   139,   140,    70,    48,  1416,  1331,  1428,   112,
     1948    1262,   112,  1430,    41,    42,   112,   228,  1432,  1423,   229,
     1949      56,  1434,   233,   112,   235,  1436,   329,  1438,  1445,  1440,
     1950    1446,   244,  1447,   175,   258,   348,    48,    48,  1085,   718,
     1951    1448,  1459,  1469,  1471,   719,   106,    37,  1476,   173,   174,
     1952      40,    48,   214,   468,  1473,  1477,  1484,  1500,  1499,    41,
     1953      42,  1504,  1511,  1353,   403,  1513,  1515,   328,  1521,   475,
     1954    1528,   970,  1529,   874,   221,  1185,   772,   775,   773,   421,
     1955     774,   975,   426,   428,   776,   369,  1108,   159,  1286,  1479,
     1956    1392,  1531,   986,  1348,  1216,   437,  1365,  1349,   212,  1462,
     1957      56,     8,     9,    10,    11,    12,  1190,   231,   444,   907,
     1958     887,   888,   447,  1198,   448,   909,  1379,   544,  1067,  1387,
     1959    1071,   790,  1105,   455,  1015,  1081,    48,   858,   707,    66,
     1960      31,   923,  1295,  1085,   469,   932,   780,   781,    48,   782,
     1961      74,     0,     0,     0,   476,     0,     0,     0,     0,   212,
     1962       0,     0,   428,     0,   351,     0,   506,   228,    34,    74,
     1963       0,     0,     0,  1425,     0,  1100,     0,    74,  1429,     0,
    19941964       8,     9,    10,    11,    12,     0,     0,     0,     0,     0,
    1995        0,     0,     0,   214,    39,   353,     0,    76,    42,   114,
    1996        0,  1318,     0,     0,   216,   355,     0,    43,    44,     0,
    1997        0,    33,     0,     0,   691,     0,     0,     0,     0,   866,
    1998        0,   868,     0,     0,   691,   215,     0,   622,     0,     0,
    1999      986,     0,     0,   711,     0,   691,     0,     0,   353,    36,
    2000        0,    47,    48,     0,    39,   997,   184,   185,    42,     0,
    2001       39,   114,   175,   176,    42,     0,     0,    43,    44,     0,
    2002        0,     0,     0,    43,    44,   216,     0,     0,     0,     0,
    2003        0,   914,     0,   214,     0,     0,   215,     0,     0,     0,
    2004        0,     0,     0,   595,     0,   596,     0,     0,     0,   214,
    2005        0,    47,    48,     0,     0,    68,   909,     0,     0,    79,
    2006        0,   353,     0,   216,    79,     0,     0,     0,   216,     0,
    2007        0,     0,     0,   909,   214,     0,     0,   796,   215,   114,
    2008        0,   114,   114,     0,   705,     0,     0,  1066,     8,     9,
    2009       10,    11,    12,     0,     0,   412,    39,     0,   184,   185,
    2010       42,     0,   420,     0,   353,   353,     0,     0,     0,    43,
    2011       44,     0,     0,  1080,     0,     0,     0,     0,     0,    33,
    2012      353,     0,   430,   119,     0,     0,     0,     0,     0,     0,
    2013        0,     0,     0,    81,     0,  1491,     0,   410,   353,   215,
    2014        0,     0,     0,    47,    48,   909,   909,    36,     0,    76,
    2015        0,     0,    39,   216,   184,   185,    42,     0,   224,     0,
    2016      114,     0,     0,     0,     0,    43,    44,    81,     0,     0,
    2017        0,     0,     0,     0,   412,    76,   589,   215,   353,     0,
    2018        0,     0,   215,     0,     0,     0,     0,     0,     0,   428,
    2019        0,   892,   214,   410,   691,   691,     0,   350,   350,    47,
    2020       48,     0,     0,     0,   225,     0,     0,    50,    50,     0,
    2021        0,     0,     0,   353,     0,  1168,     0,   114,   114,     0,
    2022      214,     0,     0,     0,    79,   214,     0,     0,     0,     0,
    2023        0,   573,    39,   216,   184,   185,    42,     0,   355,   577,
    2024        0,     0,   580,    79,     0,    43,    44,     0,     0,   691,
    2025      691,    79,     0,     0,     0,   114,   353,     8,     9,    10,
    2026       11,    12,     0,     0,     0,     0,   353,   215,     0,   355,
    2027        0,   266,   223,     0,   216,     0,     0,   353,  1102,    47,
    2028       48,     0,     0,     0,     0,     0,     0,   355,    33,    79,
    2029        0,   356,     0,     0,   214,     0,     0,  1114,     0,    59,
    2030       59,  1114,   412,     0,     0,     0,   420,     0,   214,     0,
    2031        0,     0,     0,     0,    50,   114,    36,     0,     0,     0,
    2032      705,    39,     0,   143,   114,    42,     0,     0,     0,   497,
    2033      355,     0,     0,    59,    43,    44,     0,    76,    50,    50,
    2034        0,     0,     0,     0,     0,     0,     0,   215,  1114,     0,
    2035        8,     9,    10,    11,    12,     0,     0,     0,     0,   353,
    2036      711,     0,  1265,    50,     0,     0,   353,    59,    47,    48,
    2037       59,     0,   126,   129,   130,   242,   245,     0,     0,     0,
    2038        0,    33,   412,    68,     0,    81,     0,     0,   215,     0,
    2039       81,     0,   216,   355,     0,   691,     0,   705,     0,   214,
    2040        0,   119,     0,     0,     0,     0,     0,     0,     0,    36,
    2041        0,     0,     0,     0,    39,    88,   184,   185,    42,     0,
    2042      216,     0,     0,     0,     0,   216,     0,    43,    44,     0,
    2043        0,     0,   691,     0,     0,     0,   355,   355,     0,   691,
    2044      691,   691,     0,     0,   255,  1114,   256,     0,     0,    88,
    2045      350,   350,   355,  1491,     0,   410,     0,   348,     0,     0,
    2046        0,    47,    48,  1168,     0,     0,     0,     0,     0,     0,
    2047      355,     0,   573,   573,     0,     0,   353,   353,     0,   353,
    2048      353,    79,     0,     0,   225,     0,   226,     0,     0,     0,
    2049        0,     0,     0,     0,   216,     0,   119,    76,     0,     0,
    2050        0,     0,   691,     0,     0,     0,   215,    79,   216,     0,
    2051      355,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2052        0,    59,     0,     0,     0,     0,   395,     0,     0,     0,
    2053        0,   353,   353,     0,   215,   455,   414,   415,     0,   215,
    2054        0,   419,     0,   421,   422,   355,     0,     0,     0,     0,
    2055       81,    59,     0,     0,     0,   871,     0,     0,     0,   874,
    2056        0,     0,     0,     0,   356,  1114,     0,  1114,  1114,    81,
    2057        0,   350,     0,   363,     0,     0,     0,    81,     0,     0,
    2058        0,     8,     9,    10,    11,    12,     0,     0,   355,   214,
    2059        0,     0,     0,     0,     0,   356,   119,     0,   355,   216,
    2060        0,     0,   353,     0,   224,     0,     0,     0,   215,   355,
    2061        0,     0,    33,   356,     0,    81,     0,     0,     0,  1168,
    2062        0,     0,   215,     0,     0,     0,  1168,   533,   534,   535,
    2063      536,   537,   538,   539,   540,   541,   542,   543,     0,     0,
    2064       36,     0,     0,     0,   223,    39,  1114,   184,   185,    42,
    2065        0,     0,     0,     0,     0,     0,   356,     0,    43,    44,
    2066        0,   544,     0,     0,     0,    76,     0,    88,     0,    79,
    2067      637,     0,    88,     0,     0,     0,     0,   353,  1168,   353,
    2068        0,     0,     0,     0,   186,  1516,     0,     0,     0,     0,
    2069      573,   355,    47,    48,     0,     0,     0,     0,   355,     0,
    2070        0,     0,     0,  1114,  1114,     0,     0,     0,     0,     0,
    2071        0,     0,     0,   215,   353,     0,     0,     0,     0,   356,
    2072        0,   353,   353,   353,     0,     0,     0,     0,     0,     0,
    2073      348,     0,   353,   353,     0,     0,     0,     0,     0,     0,
    2074        0,  1445,     0,     0,     0,    76,     0,     0,     0,     0,
     1965     634,     0,     0,     0,  1112,   351,   112,     0,  1112,     0,
     1966       0,   212,     0,     0,     0,     0,     0,  1451,     0,    31,
     1967     968,     0,   740,   351,   408,    74,     0,     0,     0,     0,
     1968      45,    46,     0,     0,     0,     0,     0,    48,   258,    48,
     1969       0,     0,   587,     0,   494,     0,   112,    34,   615,     0,
     1970       0,     0,     0,  1085,   523,  1112,     0,     0,   524,   525,
     1971     526,   620,   214,     0,     0,   620,   351,     0,  1463,    48,
     1972    1467,     0,   212,     0,     0,     0,    56,     0,   410,     0,
     1973       0,   213,   527,    56,   528,   418,   529,   530,     0,     0,
     1974     112,   917,  1009,   594,     0,     0,     0,     0,     0,    45,
     1975      46,     0,  1519,   634,     0,  1495,     0,  1497,  1519,   112,
     1976     212,  1145,  1146,   112,   469,   212,   228,     0,   233,  1519,
     1977       0,     0,     0,  1519,     0,     0,     0,     0,   348,   351,
     1978     495,     0,   213,   469,   907,    56,     0,     0,     0,     0,
     1979       0,   469,    37,     0,   182,   183,    40,     0,     0,  1526,
     1980       0,  1527,  1112,     0,     0,    41,    42,   410,     0,   689,
     1981     112,     0,   428,     0,  1534,  1535,  1193,  1194,     0,     0,
     1982       0,     0,   351,   351,   213,     0,     0,   703,     0,    66,
     1983     907,   890,     0,   408,     0,     0,     0,   428,   351,    45,
     1984      46,   428,     8,     9,    10,    11,    12,   112,     0,     0,
     1985     212,     0,     0,     0,   228,     0,   351,     0,     0,     0,
     1986       0,    48,  1119,     0,   571,     0,    48,    74,     0,     0,
     1987     348,    31,   575,     0,    37,   578,   173,   174,    40,     0,
     1988      77,     0,     0,    48,     0,   213,     0,    41,    42,     0,
     1989       0,     0,     0,    74,   214,     0,   351,     0,     0,    34,
     1990       0,     0,     0,     0,    37,     0,     0,   112,    40,     0,
     1991    1009,     0,    77,   373,     0,   783,     0,    41,    42,     0,
     1992       0,     0,  1112,   213,  1112,  1112,     0,     0,   213,     0,
     1993     212,   351,   620,   794,     0,   410,     0,     0,     0,   418,
     1994       0,     0,     0,    43,   811,     0,   212,     0,     0,   222,
     1995     694,    45,    46,     0,     0,     0,     0,     0,     0,   112,
     1996       0,     0,   587,     0,    79,     0,     0,   587,     0,     0,
     1997       0,   212,     0,   620,   351,     0,   348,   348,     0,     0,
     1998       0,     0,     0,     0,   351,     0,     0,     0,     0,   907,
     1999     221,   214,   348,     0,     0,   351,    79,     0,    37,  1319,
     2000     182,   183,    40,  1112,     0,     0,  1321,  1322,  1323,     0,
     2001     689,    41,    42,   213,     0,   410,     0,     0,     0,     0,
     2002       0,   469,     0,     0,     0,     0,     0,   112,     0,   112,
     2003     112,     0,     0,   223,     0,     0,   353,   184,     8,     9,
     2004      10,    11,    12,     0,     0,    45,    46,   469,   907,   907,
     2005     348,     0,     0,     0,     0,    74,     0,     0,     0,   922,
     2006    1112,  1112,   428,     0,     0,     0,     0,    31,     0,  1366,
     2007       8,     9,    10,    11,    12,     0,     0,   351,     0,     0,
     2008       0,     0,     0,     0,   351,   703,     0,     0,     0,   212,
     2009     952,     0,     0,   213,     0,    34,     0,     0,  1443,    31,
     2010      37,     0,   182,   183,    40,   571,   571,     0,   112,     0,
     2011       0,     0,     0,    41,    42,     0,     0,   212,     0,     0,
     2012     354,     0,   212,     0,     0,     0,     0,    34,   689,     0,
     2013      77,     0,    37,     0,   213,    77,    40,   175,   689,   184,
     2014     494,   620,     0,     0,   984,    41,    42,    45,    46,   689,
     2015       0,   694,     0,     0,     0,    48,    48,     0,  1493,   995,
     2016      37,     0,   182,   183,    40,   112,   112,  1501,    57,    57,
     2017       0,   709,     0,    41,    42,     0,     0,     0,     0,    45,
     2018      46,     0,     8,     9,    10,    11,    12,     0,   869,     0,
     2019       0,   212,   872,     0,   351,   351,     0,   351,   351,  1489,
     2020      57,   408,     0,   112,     0,   212,     0,    45,    46,    66,
     2021       0,    31,     0,     0,    79,    74,     0,     0,     0,    79,
     2022       0,     0,     0,     0,     0,     0,   495,     0,     0,   222,
     2023       0,   794,     0,     0,    57,     0,     0,    57,   703,    34,
     2024       0,  1064,     0,     0,    37,     0,   182,   183,    40,   351,
     2025     351,     0,   213,     0,     0,     0,   907,    41,    42,     0,
     2026       0,     0,    48,   112,     0,     0,     0,  1078,     0,   694,
     2027       0,     0,   112,   907,     0,     0,   428,   117,    86,   694,
     2028     213,     0,     0,   264,     0,   213,    48,    48,     0,     0,
     2029     694,    45,    46,     0,     0,    77,   212,     0,     0,     8,
     2030       9,    10,    11,    12,     0,     0,     0,     0,     0,   353,
     2031      86,    48,     0,   223,    77,     0,     0,     0,     0,     0,
     2032     351,     0,    77,   571,   346,     0,     0,     0,    31,     0,
     2033     587,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2034     353,     0,     0,   426,     0,   907,   907,   224,   689,   689,
     2035       0,   348,   348,     0,   213,     0,    34,     0,   353,     0,
     2036      77,    37,   221,   182,   183,    40,     0,     0,   213,  1166,
     2037       0,     0,     0,     0,    41,    42,     0,     0,    37,    79,
     2038     182,   183,    40,    74,     0,     0,     0,     0,    57,     0,
     2039       0,    41,    42,   354,     0,   351,     0,   351,    79,     0,
     2040     593,   353,   594,   689,   689,     0,    79,     0,    45,    46,
     2041       0,     0,     0,     0,     0,   523,     0,   264,    57,   524,
     2042     525,   526,     0,     0,   354,    45,    46,     0,     0,     0,
     2043       0,     0,   351,     0,   361,     0,   410,     0,     0,   351,
     2044     351,   351,   354,   527,    79,   528,     0,   529,  1285,     0,
     2045     351,   351,     0,     0,     0,     0,     0,     0,     0,   213,
     2046       0,     0,     0,    74,   353,     0,     0,     0,     0,     0,
     2047       0,     0,     0,     0,   703,     0,     0,     0,     0,     0,
     2048       0,     0,     0,     0,     0,   354,   212,     0,     0,   694,
     2049     694,   531,   532,   533,   534,   535,   536,   537,   538,   539,
     2050     540,   541,   351,     0,     0,     0,     0,   353,   353,     0,
     2051       0,  1122,     0,     0,     0,     0,  1263,     0,     0,     0,
     2052       0,     0,     0,   353,     0,   542,     0,  1133,    86,     0,
     2053       0,     0,     0,    86,     0,     0,     0,    66,     0,     0,
     2054       0,   353,     0,     0,   694,   694,     0,     0,   354,   689,
     2055       0,   703,    77,     0,     0,   117,     0,     0,     0,     0,
    20752056       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2076        0,     0,   356,   356,     0,     0,   226,     0,     0,     0,
    2077        0,   214,     0,     0,     0,     0,     0,     0,   356,     0,
    2078      718,    59,   722,     0,   353,     0,     0,     0,     0,   216,
    2079        0,     0,     0,     0,     0,     0,   356,     0,     0,     0,
    2080        0,  1495,     0,   412,     0,     0,     0,    81,   355,   355,
    2081     1503,   355,   355,     0,     0,     0,     0,     0,     0,   168,
    2082        0,   173,   348,     0,   179,   180,   181,     0,   183,    79,
    2083        0,     0,    88,    81,     0,     0,   356,     0,     0,     0,
    2084        0,     0,   234,     0,     0,     0,   363,     0,     0,     0,
    2085        0,    88,     0,   353,   249,   250,     0,     0,     0,    88,
    2086        0,     0,     0,   355,   355,     0,     0,     0,   214,     0,
    2087        0,   356,     0,     0,     0,     0,     0,   363,  1124,     0,
    2088        0,     0,     0,     0,     0,   348,     0,     0,     0,     0,
    2089        0,     0,     0,     0,  1135,   363,     0,    88,     0,     0,
    2090        0,    76,     0,   215,     0,     0,     0,     0,    76,     0,
    2091        0,     0,     0,     0,   356,   787,   788,     0,     0,     0,
    2092        0,     0,     0,     0,   356,     0,   853,     0,   348,   348,
    2093      225,     0,     0,     0,   355,   356,     0,     0,   363,     0,
    2094        0,     0,   818,     0,   348,   821,   822,     0,   825,     0,
    2095      827,   828,     0,     0,     0,   829,   830,     0,     0,     0,
    2096       76,     0,     0,     8,     9,    10,    11,    12,     0,   412,
    2097        0,   216,     0,     0,     0,   905,   224,   907,     0,     0,
    2098        0,   455,     0,     0,     0,     0,     0,     0,     0,     0,
    2099        0,     0,     0,     0,    33,    81,     0,    79,     0,     0,
    2100        0,   363,   348,     0,     0,     0,     0,     0,  1221,   355,
    2101        0,   355,     0,     0,     0,     0,     0,   356,     0,     0,
    2102        0,     0,    36,     0,   356,     0,     0,    39,     0,   184,
    2103      185,    42,     0,     0,     0,     0,     0,     0,     0,     0,
    2104       43,    44,     0,     0,   363,   363,   355,     0,     0,     0,
    2105        0,     0,     0,   355,   355,   355,     0,     0,     0,     0,
    2106      363,     0,     0,     0,   355,   355,   266,     0,   216,     0,
    2107        0,     0,     0,     0,    47,    48,     0,    79,   363,     0,
    2108        0,     0,     0,     0,     0,   215,     0,     0,     0,    88,
    2109        0,   956,   957,     0,     0,     0,     0,     0,     0,     0,
    2110        0,     0,     0,     0,     0,     0,     0,     0,   587,     0,
    2111      594,     0,     0,     0,     0,    88,   355,     0,   363,     0,
    2112        0,   618,   619,     0,     0,   128,   128,   128,     0,     0,
    2113        0,     0,     0,     0,   356,   356,     0,   356,   356,     0,
    2114        0,     0,     0,     0,     0,     0,   637,     0,     0,     0,
    2115        0,     0,  1021,   363,     0,    81,     0,     0,     0,     0,
    2116        0,    59,     8,     9,    10,    11,    12,    13,    14,    15,
     2057       0,   351,     0,     0,     0,     0,     0,     0,    77,     0,
     2058       0,   353,     0,     0,     0,     0,   689,     0,     0,     0,
     2059       0,   354,   354,   689,   689,   689,     0,   346,     0,     0,
     2060       0,     0,   410,     0,   348,   348,     0,   354,     0,     0,
     2061       0,     0,     0,     0,     0,     0,   353,  1166,     0,    74,
     2062       0,     0,     0,     0,     0,   354,    74,   224,   166,     0,
     2063     171,     0,     0,   177,   178,   179,    79,   181,     0,     0,
     2064       0,  1219,     0,     0,     0,     0,     0,     0,    57,   213,
     2065     117,   232,     0,     0,     0,     0,   689,     0,     0,   353,
     2066       0,     0,    79,   247,   248,   354,     0,     0,   212,   353,
     2067       0,     0,     0,     0,     0,   222,     0,     0,    74,     0,
     2068     353,     0,     0,     0,     0,     0,     0,     0,     0,   346,
     2069    1293,     0,     0,    86,     0,     0,     0,     0,     0,     0,
     2070     354,     0,     0,     0,     0,     0,     0,   361,     0,     0,
     2071       0,     0,    86,     0,     0,     0,     0,     0,     0,     0,
     2072      86,     0,     0,     0,     0,   348,     0,   694,     0,     0,
     2073       0,     0,     0,     0,   694,   694,   694,     0,   361,     0,
     2074      77,     0,     0,   354,     0,     0,     0,     0,     0,     0,
     2075     117,     0,   346,   354,     0,     0,   361,     0,    86,   223,
     2076       0,     0,   353,     0,   354,   212,     0,     0,     0,   353,
     2077       0,     0,     0,  1166,     0,     0,     0,     0,     0,     0,
     2078    1166,     0,   994,     0,     0,     8,     9,    10,    11,    12,
     2079       0,     0,     0,     0,     0,   346,   346,   694,     0,   361,
     2080       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2081       0,   346,   281,   282,    31,   283,     0,     0,     0,     0,
     2082       0,     0,     0,     0,    79,     0,     0,     0,     0,     0,
     2083       0,   213,  1166,     0,     0,     0,     0,     0,     0,  1514,
     2084       0,   284,    34,     0,     0,     0,   354,   285,     0,     0,
     2085       0,   286,     0,   354,   287,   288,   289,   290,   291,   292,
     2086      41,    42,   361,   293,   294,     0,     0,     0,     0,   346,
     2087       0,     0,     0,     0,     0,     0,     0,     0,     0,   353,
     2088     353,     0,   353,   353,     0,     0,   295,     0,   376,     0,
     2089       0,     0,     0,     0,   342,    46,   297,   298,   299,   300,
     2090      77,     0,     0,     0,     0,   361,   361,     0,     0,     0,
     2091       0,     0,     0,     0,     0,     0,     0,   585,     0,   592,
     2092       0,   361,     0,     8,     9,    10,    11,    12,   213,     0,
     2093     616,   617,     0,     0,   353,   353,     0,     0,     0,   361,
     2094       0,     0,     0,     0,     0,     8,     9,    10,    11,    12,
     2095      86,     0,    31,     0,     0,     0,     0,     0,     0,     0,
     2096       0,     0,     0,   354,   354,     0,   354,   354,     0,     0,
     2097       0,     0,     0,     0,    31,     0,    86,     0,     0,   361,
     2098      34,     0,     0,     0,    79,    37,     0,   182,   183,    40,
     2099       0,     0,     0,     0,     0,     0,     0,     0,    41,    42,
     2100       0,     0,    34,     0,     0,   353,     0,    37,     0,   182,
     2101     183,    40,     0,     0,   361,     0,     0,     0,   354,   354,
     2102      41,    42,     0,     0,   890,     0,   408,     0,    57,     0,
     2103       0,     0,    45,    46,     0,     0,     0,     0,     0,     0,
     2104       0,     0,     0,     0,     0,     0,  1489,   222,   408,     0,
     2105     346,     0,     0,     0,    45,    46,     0,   361,   281,   282,
     2106       0,   283,     0,     0,     0,     0,     0,   361,    77,     0,
     2107       0,     0,     0,   224,     0,     0,     0,     0,   361,     0,
     2108     353,     0,   353,     0,     0,     0,     0,   284,     0,   354,
     2109       0,     0,     0,   285,     0,     0,    57,   286,     0,     0,
     2110     287,   288,   289,   290,   291,   292,    41,    42,     0,   293,
     2111     294,     0,     0,     0,     0,     0,     0,   353,     0,     0,
     2112       0,     0,     0,     0,   353,   353,   353,     0,     0,     0,
     2113       0,   223,   295,     0,   376,   353,   353,     0,    86,     0,
     2114      45,    46,   297,   298,   299,   300,     0,     0,    77,     0,
     2115       0,     0,    79,   777,     0,     0,     0,     0,     0,     0,
     2116     361,     0,     0,     0,   354,     0,   354,   361,     0,     0,
     2117     346,   346,     0,     0,     0,     0,     0,     0,     0,     0,
     2118       0,     0,     0,     0,     0,     0,     0,   353,    57,     0,
     2119       0,     0,     0,     0,   210,     0,     0,     0,     0,     0,
     2120       0,   354,     0,   230,     0,   234,     0,   236,   354,   354,
     2121     354,     0,     0,     0,   245,     0,     0,     0,     0,   354,
     2122     354,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2123       0,     0,    79,     0,     0,     0,     0,     0,     0,     0,
     2124       0,     0,     0,     0,     0,   210,     0,   234,   236,   245,
     2125       0,     0,     0,     0,     0,     0,   353,     0,     0,     0,
     2126       0,     0,     0,     0,     0,   910,     0,   911,     0,     0,
     2127       0,   354,     0,     0,   914,   915,     0,   361,   361,   920,
     2128     361,   361,     0,     0,     0,     0,     0,   210,     0,     0,
     2129       0,     0,   926,     0,     0,     0,     0,   930,    86,     0,
     2130       0,     0,     0,     0,    77,     0,     0,     0,     0,     0,
     2131       0,    77,     0,     0,     0,     0,     0,     0,     0,     0,
     2132       0,     0,     0,     0,   592,     0,     0,     0,     0,     0,
     2133       0,     0,   361,   361,    57,    57,     0,     0,     0,     0,
     2134     354,     0,     0,     0,     0,     0,     0,     0,   210,     0,
     2135     234,   236,   245,     0,     0,     0,    57,     0,     0,     0,
     2136       0,     0,     0,    77,     0,     0,     0,     0,     0,     0,
     2137       0,     0,     0,     0,    57,     0,     0,     0,     0,     0,
     2138       0,     0,     0,     0,     0,     0,   210,     0,    79,     0,
     2139       0,   210,     0,     0,     0,    79,     0,     0,     0,     0,
     2140       0,     0,     0,   361,     0,     0,   493,     0,     0,     0,
     2141       0,     0,     0,     0,     0,     0,     0,  1004,     0,  1005,
     2142    1006,  1007,     0,   346,   346,     0,     0,     0,     0,     0,
     2143       0,    57,   164,     0,     0,     0,    57,     0,  1051,     0,
     2144       0,     0,     0,     0,     0,   224,     0,    79,     0,   217,
     2145       0,     0,  1057,     0,     0,     0,     0,   210,     0,     0,
     2146       0,     0,     0,     0,     0,     0,    86,     0,     0,    57,
     2147       0,     0,     0,     0,     0,     0,   210,     0,   361,     0,
     2148     361,   234,   236,     0,     0,     0,     0,     0,     0,   245,
     2149       0,  1077,     0,     0,     0,     0,   164,     0,     0,     0,
     2150     271,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2151       0,     0,     0,     0,     0,   361,     0,     0,     0,     0,
     2152       0,     0,   361,   361,   361,     0,     0,     0,     0,   164,
     2153       0,   210,     0,   361,   361,  1107,     0,     0,     0,   367,
     2154    1117,     0,   372,     0,   346,  1120,    86,     0,     0,   210,
     2155    1124,     0,     0,     0,   210,  1126,   210,  1127,  1128,     0,
     2156       0,  1131,     0,     0,     0,     0,     0,     0,     0,    57,
     2157    1143,     0,   210,     0,     0,   210,   210,     0,     0,     0,
     2158       0,     0,     0,   210,     0,   361,  1157,  1158,     0,     0,
     2159       0,   164,    57,     0,     0,     0,     0,   210,     0,    57,
     2160       0,     0,     0,   217,   210,     0,     0,     0,     0,     0,
     2161       0,     0,  1187,     0,     0,  1189,     0,     0,     0,     0,
     2162       0,   164,     0,     0,     0,   124,   127,   128,     8,     9,
     2163      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2164      20,    21,    22,    23,    24,    25,   372,     0,     0,     0,
     2165       0,    57,     0,   164,   361,     0,     0,    31,  1203,     0,
     2166       0,     0,     0,     0,  1207,  1208,     0,     0,     0,     0,
     2167       0,     0,     0,     0,     0,     0,     0,     0,   520,     0,
     2168       0,     0,     0,  1224,     0,    34,     0,     0,  1231,     0,
     2169       0,   164,     0,  1235,     0,     0,     0,   253,     0,   254,
     2170       0,     0,    86,     0,  1242,     0,     0,     0,     0,    86,
     2171       0,     0,     0,     0,     0,   210,     0,  1249,     0,  1251,
     2172    1252,  1253,  1254,     0,     0,     0,   590,     0,     0,     0,
     2173       0,   614,     0,     0,  1261,     0,  1157,     0,     0,     0,
     2174     171,     0,     0,   210,     0,     0,     0,     0,   210,     0,
     2175       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2176       0,    86,     0,     0,     0,     0,     0,     0,  1289,  1290,
     2177       0,     0,     0,     0,     0,     0,     0,     0,     0,   393,
     2178       0,     0,     0,     0,     0,     0,     0,     0,     0,   412,
     2179     413,     0,     0,     0,   417,     0,   419,   420,     0,     0,
     2180     156,     0,     0,     0,     0,     0,   164,   164,     0,     0,
     2181       0,     0,   367,     0,     0,     0,     0,   210,     0,     0,
     2182       0,     0,  1324,  1325,     0,     0,     0,     0,     0,     0,
     2183       0,   210,  1335,   520,     0,     0,     0,     0,     0,     0,
     2184       0,     0,     0,     0,     0,     0,     0,   250,     0,     0,
     2185       0,     0,   493,     0,     0,     0,     0,   255,     0,     0,
     2186       0,   706,     0,     0,     0,     0,     0,     0,     0,     0,
     2187       0,     0,     0,   164,     0,     0,     0,     0,     0,     0,
     2188       0,     0,     0,     0,     0,   520,     0,   520,     0,     0,
     2189     520,     0,   164,   520,  1370,     0,  1371,  1372,  1373,     0,
     2190       0,     0,     0,     0,   367,     0,     0,     0,  1377,     0,
     2191       0,   210,     0,     0,     0,     0,  1388,     0,     0,     0,
     2192       0,     0,   210,     0,     0,     0,   383,     0,     0,     0,
     2193       0,     0,     0,     0,     0,     0,     0,     0,     0,   210,
     2194       0,  1409,  1410,     0,     0,     0,     0,     0,     0,   415,
     2195       0,     0,     0,     0,     0,     0,   164,     0,     0,     0,
     2196       0,     0,     0,   429,     0,     0,     0,   367,     0,     0,
     2197     797,     0,   434,     0,     0,     0,     0,     0,     0,     0,
     2198       0,     0,   442,     0,     0,     0,  1449,  1450,     0,     0,
     2199       0,     0,     0,     0,     0,     0,   590,     0,     0,  1455,
     2200       0,   590,     0,     0,     0,     0,  1455,   460,     0,     0,
     2201     367,   367,   470,     0,     0,     0,     0,     0,     0,     0,
     2202       0,     0,     0,     0,     0,   478,   367,     0,     0,     0,
     2203       0,   488,     0,   492,     0,     0,     0,     0,     0,  1488,
     2204       0,     0,     0,  1494,     0,     0,     0,     0,     0,     0,
     2205     210,     0,   521,     0,     0,     0,     0,     0,   520,     0,
     2206       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2207       0,  1516,     0,  1517,     0,     0,     0,     0,     0,     0,
     2208     210,     0,     0,     0,   367,     0,   919,     0,     0,     0,
     2209       0,     0,     0,   580,     0,     0,     0,   584,     0,     0,
     2210       0,  1532,  1533,     0,     0,     0,     0,     0,     0,  1536,
     2211    1537,     0,   210,     0,     0,     0,     0,     0,     0,   706,
     2212       0,     0,     0,   210,     0,   627,     0,     0,     0,   628,
     2213     629,     0,   630,     0,     0,     0,     0,     0,     0,   641,
     2214     642,     0,   643,   644,     0,   645,     0,   646,     0,     0,
     2215       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2216       0,     0,     0,     0,   580,     0,     0,     0,   785,   786,
     2217       0,     0,   661,     0,     0,     0,     0,   614,     0,     0,
     2218       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2219       0,     0,   210,     0,     0,   816,   672,     0,   819,   820,
     2220       0,   823,     0,   825,   826,     0,   210,     0,   827,   828,
     2221       0,   126,   126,   126,   503,     0,   505,   508,     0,     0,
     2222       0,     0,   698,     0,     0,     0,   511,   512,   701,     0,
     2223       0,     0,     0,   460,     0,     0,     0,     0,     0,     0,
     2224       0,   505,   505,     0,     0,     0,     0,     0,     0,     0,
     2225       0,     0,     0,     0,     0,     0,     0,     0,     0,   339,
     2226     362,     0,     0,     0,     0,   367,     0,     0,     0,   736,
     2227       0,     0,   706,     0,     0,     0,   505,     0,     0,     0,
     2228       0,     0,     0,   126,   754,   126,     0,   520,     0,     0,
     2229       0,     0,   411,     0,   210,     0,     0,     0,     0,   411,
     2230       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2231     274,   505,   164,     0,     0,     0,     0,     0,     0,     0,
     2232       0,   779,     0,     0,     0,     0,     0,     0,     0,     0,
     2233     789,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2234       0,     0,     0,     0,   954,   955,     0,     0,     0,     0,
     2235     810,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2236       0,     0,     0,     0,   590,   126,     0,     0,     0,     0,
     2237       0,   411,     0,   126,     0,   126,   126,     0,     0,     0,
     2238     126,     0,   126,   126,     0,   367,   367,     0,   849,     0,
     2239       0,   210,     0,     0,   463,     2,   205,     4,     5,     6,
     2240       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2241      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
     2242       0,    26,    27,    28,   882,     0,     0,     0,   411,     0,
     2243      31,     0,   889,     0,     0,     0,   411,   576,     0,   411,
     2244     579,     0,   520,     0,     0,     0,     0,   362,     0,     0,
     2245       0,   606,   126,     0,     0,     0,     0,     0,    34,     0,
     2246      35,     0,    36,   250,     0,    38,    39,     0,     0,     0,
     2247     624,     0,     0,     0,   927,   928,     0,     0,     0,   505,
     2248     505,   505,   505,   505,   505,   505,   505,   505,   505,   505,
     2249     505,   505,   505,   505,   505,   505,   505,     0,     0,   411,
     2250    1069,     0,     0,   411,     0,     0,   962,    -3,   706,     0,
     2251       0,   966,     8,     9,    10,    11,    12,    13,    14,    15,
    21172252      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    2118       26,    27,   215,   348,     0,   355,     0,     0,     0,   356,
    2119      356,     0,  1070,    33,     0,     0,   363,   128,     0,   128,
    2120        0,     0,     0,     0,     0,     0,   363,     0,     0,     0,
    2121        0,     0,   226,     0,     0,     0,     0,   363,     0,     0,
    2122        0,    36,     0,     0,   276,     0,     0,     0,     0,    59,
    2123        0,     0,     0,    79,     0,     0,     0,     0,     0,     0,
    2124       79,     0,     0,     0,     0,     0,     0,  1071,     0,   637,
     2253    -298,     0,     0,   362,     0,     0,     0,     0,     0,     0,
     2254       0,    31,     0,   322,     0,     0,     0,     0,     0,   217,
     2255       0,     0,     0,   344,     0,     0,     0,     0,     0,     0,
     2256       0,     0,     0,     0,   379,   379,     0,     0,     0,    34,
     2257       0,   999,     0,     0,     0,     0,     0,     0,  1000,   411,
     2258    -298,     0,   362,     0,     0,   706,     0,     0,     0,     0,
     2259       0,  1002,     0,  1003,     0,     0,     0,     0,     0,     0,
     2260       0,     0,     0,     0,     0,     0,  1013,     0,     0,     0,
     2261       0,     0,  1017,     0,     0,     0,     0,     0,     0,   505,
     2262       0,   411,     0,     0,  1054,   362,     0,  1055,     0,     0,
     2263       0,     0,     0,     0,     0,   322,     0,     0,   367,   367,
     2264       0,     0,   210,     0,     0,     0,   217,     0,     0,     0,
     2265       0,     0,     0,     0,     0,  1195,     0,     0,     0,   474,
     2266       0,     0,     0,     0,     0,     0,     0,     0,     0,   411,
     2267     411,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2268     505,     0,     0,     0,     0,     0,     0,   792,   362,     0,
     2269       0,     0,     0,     0,     0,     0,     0,   606,     0,   606,
     2270     606,     0,     0,     0,     0,     0,   606,     0,     0,     0,
     2271     505,     0,     0,     0,     0,     0,   829,   362,     0,     0,
     2272       0,     0,   362,     0,     0,     0,     0,     0,     0,     0,
     2273       0,   362,   362,     0,     0,  1125,     0,     0,     0,     0,
     2274       0,     0,     0,     0,     0,     0,     0,   362,     0,     0,
     2275       0,     0,   411,   870,   126,   126,   411,   873,     0,   367,
     2276       0,     0,     0,   875,     0,     0,     0,     0,     0,     0,
     2277       0,     0,     0,     0,   379,     0,     0,     0,     0,     0,
     2278       0,   126,   411,  1284,   126,   126,     0,   126,     0,   126,
     2279     126,     0,     0,     0,   126,   126,  1188,     0,     0,     0,
     2280       0,     0,     0,     0,     0,   362,   606,     0,     0,     0,
     2281       0,     0,     0,     0,     0,     0,   520,     0,   520,     0,
     2282       0,     0,     0,     0,   505,     0,     0,     0,     0,     0,
     2283    1200,     0,     0,     0,     0,  1202,     0,     0,     0,     0,
     2284     362,     0,     0,  1206,   411,   411,     0,     0,     0,     0,
     2285       0,     0,     0,   520,     0,   520,     0,     0,     0,     0,
     2286       0,     0,     0,     0,     0,     0,     0,   700,     0,     0,
     2287     505,     0,     0,     0,     0,     0,     0,  1237,     0,     0,
     2288       0,     0,   164,     0,     0,     0,     0,   411,  1244,     0,
     2289       0,  1245,     0,  1246,     0,     0,     0,     0,     0,     0,
     2290       0,     0,   505,   606,     0,   606,   733,     0,  1255,  1256,
     2291       0,     0,     0,     0,   505,   606,     0,     0,   749,     0,
     2292       0,     0,     0,     0,   733,     0,     0,   733,  1268,     0,
     2293     126,   126,  1141,     0,     0,     8,     9,    10,    11,    12,
     2294     758,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2295       0,     0,     0,   505,     0,     0,     0,     0,     0,     0,
     2296       0,     0,   281,   282,    31,   283,     0,     0,     0,     0,
     2297     787,     0,     0,     0,  1307,     0,     0,   344,     0,     0,
     2298       0,   749,  1311,     0,     0,     0,   362,     0,     0,     0,
     2299       0,   284,    34,   362,   411,     0,   411,   285,     0,     0,
     2300     411,   286,     0,     0,   287,   288,   289,   290,   291,   292,
     2301      41,    42,     0,   293,   294,     0,     0,     0,     0,     0,
     2302       0,   606,   606,     0,     0,     0,     0,   848,     0,   505,
     2303       0,     0,     0,     0,     0,   379,   295,     0,   376,     0,
     2304       0,     0,     0,     0,  1142,    46,   297,   298,   299,   300,
     2305       0,     0,  1358,     0,  1359,     0,   411,     0,     0,     0,
    21252306       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2126      356,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2127        0,     0,     0,     0,     0,     0,     0,    88,   996,   128,
    2128        0,     8,     9,    10,    11,    12,     0,   128,     0,   128,
    2129      128,     0,    79,     0,   128,     0,   128,   128,     0,   363,
    2130        0,     0,   225,   348,   348,     0,   363,     0,     0,     0,
    2131      283,   284,    33,   285,     0,     0,     0,     0,     0,     0,
    2132        0,    59,     0,    81,     0,     0,     0,     0,     0,     0,
    2133        0,     0,     0,     0,     0,   356,     0,   356,     0,   286,
    2134       36,     0,     0,  1021,     0,   287,     0,     0,     0,   288,
    2135        0,     0,   289,   290,   291,   292,   293,   294,    43,    44,
    2136        0,   295,   296,     0,     0,     0,   128,     0,     0,     0,
    2137        0,     0,   356,     0,     0,     0,     0,     0,     0,   356,
    2138      356,   356,     0,     0,   297,     0,   378,     0,     0,     0,
    2139      356,   356,   344,    48,   299,   300,   301,   302,     0,     0,
    2140        0,     0,  1197,    81,     0,     0,     0,     0,     0,     0,
    2141        0,   166,     0,     0,     0,     0,   363,   363,     0,   363,
    2142      363,     0,     0,     0,     0,     0,     0,     0,   219,     0,
    2143        0,     0,     0,     0,     0,     0,     0,    88,     0,     0,
    2144        0,     0,   356,     0,     0,     0,     0,     0,     0,     0,
    2145        0,   283,   284,     0,   285,  1264,   912,     0,   913,     0,
    2146        0,     0,     0,     0,     0,   916,   917,    59,    59,     0,
    2147      922,   363,   363,     0,     0,   166,     0,     0,     0,   273,
    2148      286,     0,     0,   928,     0,     0,   287,     0,   932,    59,
    2149      288,     0,     0,   289,   290,   291,   292,   293,   294,    43,
    2150       44,     0,   295,   296,     0,     0,     0,    59,   166,     0,
    2151        0,   356,     0,     0,     0,   594,     0,     0,   369,     0,
    2152        0,   374,     0,     0,     0,   297,     0,   378,     0,     0,
    2153     1286,     0,     0,    47,    48,   299,   300,   301,   302,     0,
    2154        0,     0,   363,     0,     0,     0,   779,     0,     0,     0,
    2155        0,     0,     0,     0,     0,     0,   348,   348,     0,    81,
    2156        0,     0,     0,     0,    59,     0,    81,     0,     0,    59,
    2157      166,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2158        0,     0,   219,     0,   226,     0,     0,     0,     0,     0,
     2307    1368,     0,  1369,     0,     0,   411,  1123,     0,     0,     0,
     2308       0,   126,     0,     0,     0,   362,   126,  1376,   505,   505,
     2309       0,   411,  1134,     0,   606,   606,  1139,     0,     0,     0,
     2310       0,     0,  1394,  1396,     0,     0,   362,   362,     0,     0,
     2311       0,   924,     0,  1401,     0,     0,  1206,     0,     0,     0,
    21592312       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2160      166,     0,    59,     0,     0,    88,     0,     0,  1006,     0,
    2161     1007,  1008,  1009,     0,     0,     0,     0,   363,    81,   363,
    2162        0,     0,     0,     0,     0,   374,     0,     0,     0,  1053,
    2163        0,     0,   166,     0,     0,     0,     0,     0,     0,     0,
    2164        0,     0,     0,  1059,     0,     0,     0,     0,     0,     0,
    2165        0,     0,     0,     0,   363,     0,     0,   522,     0,     0,
    2166        0,   363,   363,   363,     0,     0,     0,     0,   128,   128,
    2167      166,     0,   363,   363,     0,     0,     0,   348,     0,     0,
    2168        0,     0,  1079,     0,     0,    88,     0,     0,     0,     0,
    2169        0,     0,     0,     0,     0,   128,     0,     0,   128,   128,
    2170        0,   128,    59,   128,   128,   592,     0,     0,   128,   128,
    2171      616,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2172        0,     0,     0,     0,   363,    59,  1109,     0,     0,     0,
    2173        0,  1119,    59,     0,     0,     0,  1122,     0,     0,     0,
    2174        0,  1126,     0,     0,     0,     0,  1128,     0,  1129,  1130,
    2175        0,     0,  1133,     0,     0,     0,     0,     0,     0,     0,
    2176        0,  1145,     0,     0,     0,     0,     0,     0,     0,     0,
    2177        0,     0,     0,     0,     0,     0,     0,  1159,  1160,     0,
    2178        0,     0,     0,     0,    59,   166,   166,     0,     0,     0,
    2179        0,   369,     0,   363,     0,     0,     0,     0,     0,     0,
    2180        0,     0,     0,  1189,     0,     0,  1191,     0,     0,     0,
    2181        0,     0,   522,     0,     0,     0,     8,     9,    10,    11,
    2182       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2183       22,    23,    24,    25,    26,    27,  -298,     0,     0,     0,
    2184      708,    88,     0,     0,   128,   128,     0,    33,    88,  1205,
    2185        0,     0,   166,     0,     0,  1209,  1210,     0,     0,     0,
    2186        0,     0,     0,     0,   522,     0,   522,     0,     0,   522,
    2187        0,   166,   522,     0,  1226,    36,     0,     0,     0,  1233,
    2188        0,     0,     0,   369,  1237,     0,  -298,     0,     0,     0,
    2189        0,     0,     0,     0,     0,  1244,     0,     0,     0,     0,
    2190       88,     0,     0,     0,     0,     0,     0,     0,  1251,     0,
    2191     1253,  1254,  1255,  1256,     0,     0,     0,   212,     0,     0,
    2192        0,     0,     0,     0,     0,  1263,   232,  1159,   236,     0,
    2193      238,   173,     0,     0,     0,   166,     0,   247,     0,     0,
    2194        0,     0,     0,     0,     0,     0,   369,     0,     0,   799,
    2195        0,     0,     0,     0,     0,     0,     0,     0,     0,  1291,
    2196     1292,     0,     0,     0,     0,     0,     0,     0,   212,     0,
    2197      236,   238,   247,     0,     0,   592,     0,     0,     0,     0,
    2198      592,     0,     0,     0,     0,     0,     0,     0,     0,   369,
    2199      369,     0,     0,     0,     0,   128,     0,     0,     0,     0,
    2200      128,     0,     0,     0,     0,   369,     0,     0,     0,     0,
    2201      212,     0,     0,  1326,  1327,     0,     0,     0,     0,     0,
    2202        0,     0,     0,  1337,     0,     0,     0,     0,     0,     0,
    2203        0,     0,     0,     0,     0,     0,     0,   522,     8,     9,
    2204       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2205       20,    21,    22,    23,    24,    25,    26,    27,     0,     0,
    2206       28,    29,    30,   369,     0,   921,     0,     0,     0,    33,
    2207        0,   212,     0,   236,   238,   247,     0,   158,     0,     0,
    2208        0,     0,     0,     0,     0,  1372,     0,  1373,  1374,  1375,
    2209        0,     0,     0,     0,     0,     0,     0,    36,   708,  1379,
    2210        0,     0,    39,     0,    40,    41,    42,  1390,     0,   212,
    2211        0,     0,     0,     0,   212,    43,    44,     0,     0,     0,
    2212        0,     0,     0,     0,   252,     0,     0,     0,     0,   495,
    2213        0,     0,  1411,  1412,   257,     0,     0,     0,     0,     0,
    2214        0,    45,     0,    46,     0,     0,     0,     0,     0,    47,
    2215       48,   324,     0,     0,     0,   128,   616,     0,     0,     0,
    2216        0,   346,     0,     0,     0,     0,     0,     0,     0,     0,
    2217        0,     0,   381,   381,     0,     0,     0,  1451,  1452,     0,
    2218      212,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2219     1457,     0,     0,     0,     0,     0,     0,  1457,     0,   212,
    2220        0,     0,     0,   385,   236,   238,     0,     0,     0,     0,
    2221        0,     0,   247,     0,     0,     0,     0,     0,     0,     0,
    2222        0,     0,     0,     0,     0,     0,   417,     0,     0,     0,
    2223     1490,     0,     0,     0,  1496,     0,     0,     0,     0,     0,
    2224      431,     0,     0,   324,   369,     0,     0,     0,     0,   436,
    2225        0,   708,     0,     0,   212,     0,     0,     0,     0,   444,
    2226        0,     0,  1518,     0,  1519,     0,   522,   476,     0,     0,
    2227        0,     0,   212,     0,     0,     0,     0,   212,     0,   212,
    2228        0,     0,     0,   128,   462,     0,     0,     0,     0,   472,
    2229        0,   166,  1534,  1535,     0,   212,     0,     0,   212,   212,
    2230     1538,  1539,   480,     0,     0,     0,   212,     0,   490,     0,
    2231      494,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2232      212,     0,     0,     0,     0,     0,     0,   212,     0,   523,
     2313       0,     0,     0,   749,     0,   948,     0,     0,  1424,     0,
     2314       0,     0,     0,     0,     0,   958,     0,  1431,     0,     0,
     2315    1433,   965,  1435,  1437,  1439,     0,     0,     0,     0,     0,
     2316       0,     0,     0,     0,     0,     0,   411,     0,   411,     0,
     2317       0,     0,     0,   411,     0,     0,     0,     0,     0,     0,
     2318       0,     0,   606,     0,     0,     0,     0,     0,     0,     0,
     2319       0,   982,   983,  1470,     0,  1472,     0,  1206,     0,     0,
     2320       0,     0,     0,     0,     0,   411,  1220,   344,     0,     0,
     2321       0,     0,     0,  1483,     0,     0,     0,     0,     0,     0,
     2322       0,     0,     0,     0,     0,     0,     0,     0,     0,   362,
    22332323       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2234        0,     0,     0,   592,     8,     9,    10,    11,    12,    13,
    2235       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2236       24,    25,    26,    27,   369,   369,    28,    29,    30,     0,
    2237      582,     0,     0,     0,   586,    33,     0,     0,     0,     0,
    2238        0,     0,   381,     0,     0,     0,     0,     0,     0,     0,
    2239        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2240        0,     0,   629,    36,     0,     0,   630,   631,     0,   632,
    2241      208,    41,     0,     0,     0,     0,   643,   644,     0,   645,
    2242      646,   522,   647,     0,   648,     0,     0,     0,     0,     0,
    2243        0,     0,     0,     0,     0,     0,     0,     0,   212,     0,
    2244        0,   582,     0,     0,     0,     0,     0,     0,     0,   663,
    2245        0,     0,     0,     0,     0,    47,    48,     0,     0,     0,
    2246        0,     0,     0,     0,     0,     0,   212,     0,     0,     0,
    2247        0,   212,     0,   674,     0,   702,     0,     0,     0,     0,
    2248        0,     0,     0,     0,     0,     0,     0,   708,     0,     0,
    2249        0,     0,     0,     0,     0,     0,     0,     0,     0,   700,
    2250        0,     0,     0,     0,     0,   703,     0,     0,     0,     0,
    2251      462,     0,     0,     0,   735,     0,     0,     0,     0,     0,
    2252        0,     0,     0,     0,     0,     0,   751,     0,   219,     0,
    2253        0,     0,   735,     0,     0,   735,   341,   364,     0,     0,
    2254      212,     0,     0,     0,     0,     0,   738,     0,   760,     0,
    2255        0,     0,     0,     0,   212,     0,     0,     0,     0,     0,
    2256        0,   756,     0,     0,   708,     0,     0,     0,     0,   413,
    2257        0,     0,     0,     0,     0,   495,   413,     0,   789,     0,
    2258        0,     0,     0,     0,     0,   346,     0,     0,     0,   751,
    2259        0,     0,     0,     0,     0,     0,     0,     0,   781,     0,
    2260        0,     0,     0,     0,     0,     0,     0,   791,     0,     0,
    2261        0,     0,     0,     0,     0,     0,     0,   369,   369,     0,
    2262        0,     0,     0,     0,     0,   219,     0,   812,     0,     0,
    2263        0,     0,     0,     0,   212,   850,     0,     0,     0,     0,
    2264        0,     0,     0,   381,     0,   212,     0,     0,   413,     0,
    2265        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2266        0,     0,   212,     0,     0,   851,     0,     8,     9,    10,
    2267       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2268       21,    22,    23,    24,    25,    26,    27,     0,     0,    28,
    2269       29,    30,     0,     0,     0,     0,     0,     0,    33,     0,
    2270        0,   884,     0,     0,     0,   413,     0,     0,     0,   891,
    2271        0,     0,     0,   413,   578,     0,   413,   581,     0,   926,
    2272        0,     0,     0,     0,   364,     0,    36,     0,   608,     0,
    2273        0,    39,     0,   208,    41,    42,     0,     0,   369,     0,
    2274      252,   751,     0,   950,    43,    44,     0,   626,     0,     0,
    2275        0,   929,   930,   960,     0,     0,     0,     0,     0,   967,
    2276        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2277       45,     0,   271,   212,     0,     0,   413,     0,    47,    48,
    2278      413,     0,     0,   964,     0,     0,     0,     0,   968,     0,
    2279        0,     0,     0,     0,     0,   522,     0,   522,     0,   984,
    2280      985,     0,     0,   212,     0,     0,     0,     0,     0,     0,
    2281      364,     0,     0,     0,     0,   346,     0,     0,     0,     0,
    2282        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2283        0,     0,   522,     0,   522,   212,     0,     0,     0,     0,
    2284        0,     0,     0,     0,     0,     0,   212,     0,  1001,     0,
    2285        0,     0,     0,     0,  1013,  1002,   413,     0,   381,   364,
    2286        0,   166,     0,     0,     0,     0,     0,     0,  1004,     0,
    2287     1005,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2288        0,     0,     0,  1015,     0,     0,     0,   346,     0,  1019,
    2289        0,     0,     0,     0,   346,     0,     0,     0,   413,     0,
    2290        0,  1056,   364,     0,  1057,     0,     0,     0,     0,     0,
    2291        0,     0,     0,     0,     0,   212,     0,     0,     0,     0,
    2292        0,     0,     0,     0,     0,     0,     0,     0,     0,   212,
    2293        0,     0,     0,     0,   324,     0,     0,     0,     0,     0,
    2294        0,     0,     0,     0,     0,     0,   413,   413,     0,     0,
    2295        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2296        0,   381,     0,     0,   794,   364,   960,     0,     0,   735,
    2297        0,     0,     0,     0,   608,     0,   608,   608,     0,     0,
    2298        0,     0,     0,   608,     0,     0,     0,     0,     0,  1131,
    2299        0,     0,     0,   831,   364,     0,     0,     0,     0,   364,
    2300     1146,     0,     0,     0,     0,     0,     0,     0,   364,   364,
    2301        0,     0,  1127,     0,     0,     0,     0,   212,     0,     0,
    2302      381,     0,  1163,     0,   364,     0,     0,     0,     0,   413,
    2303      872,     0,     0,   413,   875,     0,     0,   960,   960,   505,
    2304      877,   507,   510,     0,     0,     0,     0,     0,     0,     0,
    2305        0,   513,   514,     0,     0,     0,     0,  1194,     0,   413,
    2306        0,     0,     0,     0,     0,     0,   507,   507,     0,     0,
    2307        0,     0,     0,  1190,     0,     0,     0,     0,     0,     0,
    2308        0,     0,   364,   608,     0,     0,     0,     0,     0,     0,
    2309        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2310        0,   507,     0,     0,     0,     0,     0,  1202,     0,     0,
    2311        0,   960,  1204,     0,   212,     0,     0,   364,     0,     0,
    2312     1208,   413,   413,     0,     0,     0,     0,     0,     0,     0,
    2313      850,     0,     0,     0,     0,     0,   507,     0,     0,     0,
    2314        0,     0,     0,     0,     0,  1249,  1250,     0,     0,     0,
    2315        0,     0,     0,     0,  1239,     0,     0,     0,     0,     0,
    2316        0,     0,     0,     0,   413,  1246,     0,     0,  1247,     0,
    2317     1248,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2318      608,     0,   608,     0,     0,  1257,  1258,     0,     0,     0,
    2319        0,     0,   608,     0,     0,     0,     0,     0,     0,     0,
    2320        0,     0,     0,     0,     0,  1270,     0,     0,     0,     0,
    2321        0,     0,     0,     0,     0,  -523,     0,     0,     1,     2,
    2322        3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     2324       0,   126,     0,     0,     0,     0,  1011,     0,     0,     0,
     2325     379,     0,     0,     0,     0,     8,     9,    10,    11,    12,
    23232326      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2324       23,    24,    25,    26,    27,     0,     0,    28,    29,    30,
    2325       31,  1309,     0,    32,     0,     0,    33,    34,     0,  1313,
    2326        0,     0,     0,   364,     0,     0,     0,     0,     0,     0,
    2327      364,   413,     0,   413,     0,     0,     0,   413,     0,     0,
    2328        0,    35,     0,     0,    36,     0,    37,  1354,    38,    39,
    2329      735,    40,    41,    42,     0,     0,     0,     0,   608,   608,
    2330        0,     0,    43,    44,   507,   507,   507,   507,   507,   507,
    2331      507,   507,   507,   507,   507,   507,   507,   507,   507,   507,
    2332      507,   507,     0,     0,     0,     0,     0,     0,    45,  1360,
    2333       46,  1361,     0,   413,     0,     0,    47,    48,     0,     0,
    2334        0,     0,     0,     0,     0,     0,     0,  1370,     0,  1371,
    2335        0,     0,   413,  1125,     0,     0,     0,     0,     0,     0,
    2336        0,     0,   364,     0,  1378,   212,     0,     0,   413,  1136,
    2337        0,   608,   608,  1141,     0,     0,     0,     0,     0,  1396,
    2338     1398,     0,     0,   364,   364,     0,     0,     0,     0,     0,
    2339     1403,     0,     0,  1208,     8,     9,    10,    11,    12,    13,
    2340       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2341       24,    25,    26,    27,  -299,  1426,     0,     0,     0,     0,
    2342        0,     0,     0,     0,  1433,    33,     0,  1435,     0,  1437,
    2343     1439,  1441,     0,     0,     0,     0,     0,     0,     0,     0,
    2344        0,     0,     0,   413,   507,   413,     0,     0,     0,     0,
    2345      413,     0,     0,    36,     0,     0,     0,     0,     0,   608,
    2346        0,     0,     0,     0,  -299,     0,     0,     0,     0,     0,
    2347     1472,     0,  1474,     0,  1208,     0,     0,     0,     0,     0,
    2348        0,     0,   413,  1222,     0,     0,     0,     0,     0,     0,
    2349     1485,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2350        0,     0,     0,     0,   324,   507,   364,     1,     2,   207,
     2327      23,    24,    25,     0,     0,    26,    27,    28,     0,   344,
     2328       0,     0,     0,     0,    31,     0,   344,     0,     0,     0,
     2329       0,     0,     0,     0,     0,     0,   505,     0,     0,     0,
     2330       0,     0,     0,     0,     0,     0,   362,     0,     0,     0,
     2331       0,     0,    34,   505,     0,     0,     0,     0,     0,   206,
     2332      39,     0,     0,     0,     0,     0,   322,   204,     2,   205,
    23512333       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    23522334      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2353       24,    25,    26,    27,     0,   507,    28,    29,    30,    31,
    2354        0,     0,    32,   283,   284,    33,  1022,  1023,     0,  1024,
    2355        0,     0,  1025,  1026,  1027,  1028,  1029,  1030,  1031,  1032,
    2356        0,     0,     0,  1033,     0,     0,     0,  1034,  1035,     0,
    2357       35,     0,   286,    36,     0,    37,     0,    38,  1036,     0,
    2358       40,    41,   288,   364,     0,   289,   290,   291,   292,   293,
    2359      294,    43,    44,     0,   295,   296,     0,     0,     0,     0,
     2335      24,    25,     0,   379,    26,    27,    28,     0,   958,   362,
     2336     362,   733,     0,    31,    45,    46,     0,     0,     0,   126,
    23602337       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2361        0,     0,     0,     0,     0,     0,     0,   297,     0,   298,
    2362        0,     0,   172,     0,     0,    47,    48,   299,   300,   301,
    2363      302,     0,     0,     0,     0,  1037,   364,   364,     0,     0,
    2364     -134,     0,     0,     0,     0,     0,     0,     0,     0,   507,
    2365        1,     2,   207,     4,     5,     6,     7,     8,     9,    10,
    2366       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2367       21,    22,    23,    24,    25,    26,    27,     0,     0,    28,
    2368       29,    30,    31,     0,     0,    32,   283,   284,    33,   285,
    2369        0,     0,     0,     0,     0,   507,     0,     0,     0,     0,
    2370        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2371        0,     0,     0,     0,     0,   286,    36,     0,    37,     0,
    2372       38,   287,     0,    40,    41,   288,     0,   507,   289,   290,
    2373      291,   292,   293,   294,    43,    44,     0,   295,   296,   507,
    2374        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2375        0,     0,     0,     0,     0,     0,     0,   364,     0,     0,
    2376      297,     0,   298,     0,     0,     0,     0,     0,    47,    48,
    2377      299,   300,   301,   302,     0,     0,     0,     0,   507,     0,
    2378        0,     0,     0,  -134,     0,     0,     0,     0,     0,     1,
    2379        2,     3,     4,     5,     6,     7,     8,     9,    10,    11,
    2380       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2381       22,    23,    24,    25,    26,    27,     0,     0,    28,    29,
    2382       30,    31,     0,     0,    32,     0,     0,    33,    34,     0,
    2383        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2384        0,     0,     0,     0,     0,     0,   413,     0,     0,     0,
    2385        0,     0,    35,     0,   507,    36,     0,    37,     0,    38,
    2386       39,     0,    40,    41,    42,     0,     0,     0,     0,     0,
    2387      413,   413,     0,    43,    44,     0,     0,     0,     0,     0,
    2388        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2389        0,     0,     0,     0,     0,   413,     0,     0,     0,    45,
    2390        0,    46,     0,     0,     0,  -527,     0,    47,    48,     0,
    2391        0,     0,     0,   507,   507,     1,     2,   207,     4,     5,
     2338       0,  1129,     0,     0,     0,   505,   505,     0,     0,     0,
     2339       0,    34,  1144,    35,     0,    36,    37,     0,   206,    39,
     2340      40,     0,     0,     0,     0,     0,     0,     0,     0,    41,
     2341      42,     0,   379,     0,  1161,     0,     0,     0,     0,     0,
     2342       0,     0,     0,     0,     0,     0,     0,     0,     0,   958,
     2343     958,     0,     0,     0,     0,    43,     0,   207,     0,     0,
     2344       0,     0,     0,    45,    46,     0,     0,     0,     0,  1192,
     2345       0,     0,     0,     0,     0,     1,     2,   205,     4,     5,
    23922346       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    23932347      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    2394       26,    27,     0,     0,    28,    29,    30,    31,     0,     0,
    2395       32,   283,   284,    33,   285,     0,     0,     0,     0,     0,
     2348     362,     0,    26,    27,    28,    29,     0,     0,    30,     0,
     2349       0,    31,     0,     0,     0,     0,     0,     0,     0,     0,
     2350       0,     0,     0,   958,     0,     0,     0,     0,     0,     0,
     2351       0,     0,     0,     0,     0,     0,     0,     0,     0,    34,
     2352       0,    35,   848,    36,     0,     0,    38,    39,     0,     0,
     2353       0,     0,     0,     0,     0,     0,     0,  1247,  1248,     0,
     2354       2,   205,     4,     5,     6,     7,     8,     9,    10,    11,
     2355      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     2356      22,    23,    24,    25,     0,    44,    26,    27,    28,   411,
     2357       0,    45,    46,     0,     0,    31,     0,     0,     0,     0,
     2358       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2359       0,     0,     0,   411,   411,     0,     0,     0,     0,     0,
     2360       0,     0,     0,    34,     0,    35,     0,    36,     0,     0,
     2361      38,    39,     0,     0,     0,     0,     0,     0,   411,     0,
     2362       0,     0,     1,     2,   205,     4,     5,     6,     7,     8,
     2363       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2364      19,    20,    21,    22,    23,    24,    25,     0,  -418,    26,
     2365      27,    28,    29,     0,     0,    30,   281,   282,    31,  1020,
     2366    1021,     0,  1022,     0,     0,  1023,  1024,  1025,  1026,  1027,
     2367    1028,  1029,  1030,     0,     0,     0,  1031,     0,     0,  1352,
     2368    1032,  1033,   733,    33,     0,   284,    34,     0,    35,     0,
     2369      36,  1034,     0,    38,    39,   286,     0,     0,   287,   288,
     2370     289,   290,   291,   292,    41,    42,     0,   293,   294,     0,
    23962371       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    23972372       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2398      286,    36,     0,    37,     0,    38,   287,     0,    40,    41,
    2399      288,     0,     0,   289,   290,   291,   292,   293,   294,    43,
    2400       44,     0,   295,   296,     0,     0,     0,     0,     0,     0,
     2373     295,     0,   296,     0,     0,   170,     0,     0,    45,    46,
     2374     297,   298,   299,   300,     0,     0,     0,     0,  1035,     0,
     2375       0,     0,     0,  -134,     1,     2,   205,     4,     5,     6,
     2376       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2377      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
     2378       0,    26,    27,    28,    29,     0,     0,    30,   281,   282,
     2379      31,   283,     8,     9,    10,    11,    12,    13,    14,    15,
     2380      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     2381       0,     0,    26,    27,    28,     0,     0,   284,    34,     0,
     2382      35,    31,    36,   285,     0,    38,    39,   286,     0,     0,
     2383     287,   288,   289,   290,   291,   292,    41,    42,     0,   293,
     2384     294,     0,     0,     0,     0,     0,     0,     0,     0,    34,
     2385       0,     0,     0,     0,   110,     0,    38,    39,     0,     0,
     2386       0,     0,   295,     0,   296,     0,     0,    41,    42,     0,
     2387      45,    46,   297,   298,   299,   300,     0,     0,     0,     0,
     2388       0,     0,     0,     0,     0,  -134,     0,     0,     0,     0,
     2389       0,     0,     0,     0,     0,     0,   322,     1,     2,   205,
     2390       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
     2391      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2392      24,    25,     0,     0,    26,    27,    28,    29,     0,     0,
     2393      30,   281,   282,    31,   283,     8,     9,    10,    11,    12,
     2394      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2395      23,    24,    25,  -299,     0,     0,     0,     0,     0,     0,
     2396     284,    34,     0,    35,    31,    36,   285,     0,    38,    39,
     2397     286,     0,     0,   287,   288,   289,   290,   291,   292,    41,
     2398      42,     0,   293,   294,     0,     0,     0,     0,     0,     0,
     2399       0,     0,    34,     0,     0,     0,     0,     0,     0,     0,
     2400       0,     0,     0,  -299,     0,   295,     0,   296,     0,     0,
     2401       0,     0,     0,    45,    46,   297,   298,   299,   300,     2,
     2402     205,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     2403      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2404      23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
     2405       0,     0,   281,   282,    31,   283,     8,     9,    10,    11,
     2406      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     2407      22,    23,    24,    25,     0,     0,    26,    27,    28,     0,
     2408       0,   284,    34,     0,    35,    31,    36,   285,     0,    38,
     2409      39,   286,     0,     0,   287,   288,   289,   290,   291,   292,
     2410      41,    42,     0,   293,   294,     0,     0,     0,     0,     0,
     2411       0,     0,     0,    34,     0,     0,     0,     0,     0,     0,
     2412      38,    39,     0,     0,     0,     0,   295,     0,   341,     0,
     2413       0,     0,     0,   748,   342,    46,   297,   298,   299,   300,
     2414       2,   205,     4,     5,     6,     7,     8,     9,    10,    11,
     2415      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     2416      22,    23,    24,    25,     0,     0,    26,    27,    28,     0,
     2417       0,     0,     0,   281,   282,    31,   283,     8,     9,    10,
     2418      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2419      21,    22,    23,    24,    25,     0,     0,    26,    27,    28,
     2420       0,     0,   284,    34,     0,    35,    31,    36,   285,     0,
     2421      38,    39,   286,     0,     0,   287,   288,   289,   290,   291,
     2422     292,    41,    42,     0,   293,   294,     0,     0,     0,     0,
     2423       0,     0,     0,     0,    34,     0,     0,     0,     0,     0,
     2424       0,   206,    39,     0,     0,     0,     0,   295,     0,   341,
     2425       0,     0,     0,     0,   748,    45,    46,   297,   298,   299,
     2426     300,     2,   205,     4,     5,     6,     7,     8,     9,    10,
     2427      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2428      21,    22,    23,    24,    25,     0,     0,    26,    27,    28,
     2429       0,     0,     0,     0,   281,   282,    31,   283,     0,     0,
    24012430       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2402        0,     0,     0,     0,     0,   297,     0,   298,     0,     0,
    2403        0,     0,     0,    47,    48,   299,   300,   301,   302,     0,
    2404        0,     0,     0,     0,     0,     2,   207,     4,     5,     6,
     2431       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2432       0,     0,     0,   284,    34,     0,    35,     0,    36,   285,
     2433       0,    38,    39,   286,     0,     0,   287,   288,   289,   290,
     2434     291,   292,    41,    42,     0,   293,   294,     0,     0,     0,
     2435       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2436       0,     0,     0,     0,     0,     0,     0,     0,   295,     0,
     2437     341,     0,     0,     0,     0,     0,   342,    46,   297,   298,
     2438     299,   300,     2,   205,     4,     5,     6,     7,     8,     9,
     2439      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2440      20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
     2441      28,     0,     0,     0,     0,   281,   282,    31,   283,     0,
     2442       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2443       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2444       0,     0,     0,     0,   284,    34,     0,    35,     0,    36,
     2445     285,     0,   206,    39,   286,     0,     0,   287,   288,   289,
     2446     290,   291,   292,    41,    42,     0,   293,   294,     0,     0,
     2447       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2448       0,     0,     0,     0,     0,     0,     0,     0,     0,   295,
     2449       0,   979,     0,     0,     0,     0,     0,   980,    46,   297,
     2450     298,   299,   300,     2,   205,     4,     5,     6,     7,     8,
     2451       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2452      19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
     2453      27,    28,     0,     0,     0,     0,   281,   282,    31,   283,
     2454       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2455       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2456       0,     0,     0,     0,     0,   284,    34,     0,    35,     0,
     2457      36,   285,     0,   206,    39,   286,     0,     0,   287,   288,
     2458     289,   290,   291,   292,    41,    42,     0,   293,   294,     0,
     2459       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2460       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2461     295,     0,   376,     0,     0,     0,     0,     0,    45,    46,
     2462     297,   298,   299,   300,  -521,     0,     0,     1,     2,     3,
     2463       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
     2464      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2465      24,    25,     0,     0,    26,    27,    28,    29,     0,     0,
     2466      30,     0,     0,    31,    32,     0,     0,     0,     0,     0,
     2467       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2468       0,     0,     0,     0,     0,     0,     0,     0,    33,     0,
     2469       0,    34,     0,    35,     0,    36,    37,     0,    38,    39,
     2470      40,     0,     0,     0,     0,     0,     0,     0,     0,    41,
     2471      42,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2472       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2473       0,     0,     0,     0,     0,    43,     0,    44,     0,     0,
     2474       0,     0,     0,    45,    46,     1,     2,     3,     4,     5,
     2475       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     2476      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     2477       0,     0,    26,    27,    28,    29,     0,     0,    30,     0,
     2478       0,    31,    32,     0,     0,     0,     0,     0,     0,     0,
     2479       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2480       0,     0,     0,     0,     0,     0,    33,     0,     0,    34,
     2481       0,    35,     0,    36,    37,     0,    38,    39,    40,     0,
     2482       0,     0,     0,     0,     0,     0,     0,    41,    42,     0,
     2483       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2484       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2485       0,     0,     0,    43,     0,    44,     0,     0,     0,  -525,
     2486       0,    45,    46,     1,     2,     3,     4,     5,     6,     7,
     2487       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2488      18,    19,    20,    21,    22,    23,    24,    25,     0,     0,
     2489      26,    27,    28,    29,     0,     0,    30,     0,     0,    31,
     2490      32,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2491       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2492       0,     0,     0,     0,    33,     0,     0,    34,     0,    35,
     2493       0,    36,    37,     0,    38,    39,    40,     0,     0,     0,
     2494       0,     0,     0,     0,     0,    41,    42,     0,     0,     0,
     2495       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2496       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2497       0,    43,     0,    44,     0,     0,     0,     0,     0,    45,
     2498      46,     1,     2,   205,     4,     5,     6,     7,     8,     9,
     2499      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2500      20,    21,    22,    23,    24,    25,  -298,     0,    26,    27,
     2501      28,    29,     0,     0,    30,     0,     0,    31,     0,     0,
     2502       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2503       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2504       0,     0,     0,     0,     0,    34,     0,    35,     0,    36,
     2505       0,     0,    38,    39,     0,     0,  -298,   204,     2,   205,
     2506       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
     2507      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2508      24,    25,     0,     0,    26,    27,    28,     0,     0,     0,
     2509       0,    44,     0,    31,     0,     0,     0,    45,    46,     0,
     2510       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2511       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2512       0,    34,     0,    35,     0,    36,     0,     0,   206,    39,
     2513       2,   205,     4,     5,     6,     7,     8,     9,    10,    11,
     2514      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     2515      22,    23,    24,    25,     0,     0,    26,    27,    28,     0,
     2516       0,     0,     0,     0,     0,    31,     0,   207,     0,     0,
     2517       0,     0,     0,    45,    46,     0,     0,     0,     0,     0,
     2518       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2519       0,     0,     0,    34,     0,    35,     0,    36,    37,     0,
     2520     206,    39,    40,     0,     0,     0,     0,     0,     0,     0,
     2521       0,    41,    42,     0,     0,     0,     0,     0,     0,     0,
     2522       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2523       0,     0,     0,     0,     0,     0,     0,    43,     0,   207,
     2524       0,     0,     0,     0,     0,    45,    46,     2,   205,     4,
     2525       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     2526      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2527      25,     0,     0,    26,    27,    28,     0,     0,     0,     0,
     2528       0,     0,    31,     0,     0,     0,     0,     0,     0,     0,
     2529       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2530       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2531      34,     0,    35,     0,    36,     0,     0,    38,    39,     2,
     2532     205,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     2533      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2534      23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
     2535       0,     0,     0,     0,    31,  -405,   668,     0,     0,     0,
     2536       0,     0,    45,    46,     0,     0,     0,     0,     0,     0,
     2537       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2538       0,     0,    34,     0,    35,     0,    36,     0,     0,    38,
     2539      39,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2540       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2541       0,     0,     0,  1332,     0,     0,     0,     0,     0,     0,
     2542       0,     0,     0,     0,     0,     0,     0,     0,   668,     0,
     2543       0,     0,     0,     0,    45,    46,     2,   205,     4,     5,
     2544       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     2545      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     2546       0,     0,    26,    27,    28,     0,     0,     0,     0,     0,
     2547       0,    31,     0,     0,     0,     8,     9,    10,    11,    12,
     2548      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2549      23,    24,    25,     0,     0,    26,    27,    28,     0,    34,
     2550       0,    35,     0,    36,    31,   675,    38,    39,     0,     0,
     2551       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2552       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2553    1334,     0,    34,     0,     0,     0,     0,     0,     0,    38,
     2554      39,     0,     0,     0,     0,   668,     0,     0,     0,     0,
     2555       0,    45,    46,     2,   205,     4,     5,     6,     7,     8,
     2556       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2557      19,    20,    21,    22,    23,    24,    25,     0,   676,    26,
     2558      27,    28,   677,     0,    45,    46,     0,     0,    31,     0,
     2559       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2560       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2561       0,     0,     0,     0,     0,     0,    34,     0,    35,     0,
     2562      36,     0,     0,   206,    39,     2,   205,     4,     5,     6,
     2563       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2564      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
     2565       0,    26,    27,    28,     0,     0,     0,     0,     0,     0,
     2566      31,     0,   269,     0,     0,     0,     0,     0,    45,    46,
     2567       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2568       0,     0,     0,     0,     0,     0,     0,     0,    34,     0,
     2569      35,     0,    36,     0,     0,    38,    39,     2,   205,     4,
     2570       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     2571      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2572      25,     0,     0,    26,    27,    28,     0,     0,     0,     0,
     2573       0,     0,    31,     0,   668,     0,     0,     0,     0,     0,
     2574      45,    46,     0,     0,     0,     0,     0,     0,     0,     0,
     2575       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2576      34,     0,    35,     0,    36,     0,     0,   206,    39,     8,
     2577       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2578      19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
     2579      27,    28,     0,     0,     0,     0,   281,   282,    31,   283,
     2580       0,     0,     0,     0,     0,     0,   207,     0,     0,     0,
     2581       0,     0,    45,    46,     0,     0,     0,     0,     0,     0,
     2582       0,     0,     0,     0,     0,   284,    34,     0,     0,     0,
     2583       0,   285,     0,    38,    39,   286,     0,     0,   287,   288,
     2584     289,   290,   291,   292,    41,    42,     0,   293,   294,     0,
     2585       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2586       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2587     295,     0,   513,     0,     0,   170,     0,     0,    45,    46,
     2588     297,   298,   299,   300,     8,     9,    10,    11,    12,    13,
     2589      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2590      24,    25,     0,     0,    26,    27,    28,     0,     0,     0,
     2591       0,   281,   282,    31,   283,     8,     9,    10,    11,    12,
     2592      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2593      23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
     2594     284,    34,     0,     0,    31,     0,   285,     0,    38,    39,
     2595     286,     0,     0,   287,   288,   289,   290,   291,   292,    41,
     2596      42,     0,   293,   294,     0,     0,     0,     0,     0,     0,
     2597       0,     0,    34,     0,     0,     0,     0,   110,     0,    38,
     2598      39,     0,     0,     0,     0,   295,   -40,   296,     0,     0,
     2599      41,    42,     0,    45,    46,   297,   298,   299,   300,     8,
     2600       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2601      19,    20,    21,    22,    23,    24,    25,     0,    44,    26,
     2602      27,    28,     0,     0,    45,    46,   281,   282,    31,   283,
     2603       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2604      18,    19,    20,    21,    22,    23,    24,    25,     0,     0,
     2605      26,    27,    28,     0,     0,   284,    34,     0,     0,    31,
     2606     675,   285,     0,    38,    39,   286,     0,     0,   287,   288,
     2607     289,   290,   291,   292,    41,    42,     0,   293,   294,     0,
     2608       0,     0,     0,     0,     0,     0,     0,    34,     0,     0,
     2609       0,     0,     0,     0,    38,    39,     0,     0,     0,     0,
     2610     295,     0,   296,     0,     0,     0,     0,     0,    45,    46,
     2611     297,   298,   299,   300,     8,     9,    10,    11,    12,    13,
     2612      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2613      24,    25,     0,   676,    26,    27,    28,  1070,     0,    45,
     2614      46,   281,   282,    31,   283,     8,     9,    10,    11,    12,
     2615      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2616      23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
     2617     284,    34,     0,     0,    31,   675,   285,     0,    38,    39,
     2618     286,     0,     0,   287,   288,   289,   290,   291,   292,    41,
     2619      42,     0,   293,   294,     0,     0,     0,     0,     0,     0,
     2620       0,     0,    34,     0,     0,     0,     0,     0,     0,    38,
     2621      39,     0,     0,     0,     0,   295,     0,   341,     0,     0,
     2622       0,     0,     0,    45,    46,   297,   298,   299,   300,     8,
     2623       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2624      19,    20,    21,    22,    23,    24,    25,     0,   676,    26,
     2625      27,    28,  1197,     0,    45,    46,   281,   282,    31,   283,
     2626       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2627      18,    19,    20,    21,    22,    23,    24,    25,     0,     0,
     2628      26,    27,    28,     0,     0,   284,    34,     0,     0,    31,
     2629       0,   285,     0,    38,    39,   286,     0,     0,   287,   288,
     2630     289,   290,   291,   292,    41,    42,     0,   293,   294,     0,
     2631       0,     0,     0,     0,     0,     0,     0,    34,     0,     0,
     2632       0,     0,    37,     0,    38,    39,    40,     0,     0,     0,
     2633     295,     0,   376,     0,     0,    41,    42,     0,    45,    46,
     2634     297,   298,   299,   300,     0,     0,     0,     0,     0,     0,
     2635       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2636       0,    43,     0,    44,     0,     0,     0,     0,     0,    45,
     2637      46,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2638      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
     2639       0,    26,    27,    28,     0,     0,     0,     0,     0,     0,
     2640      31,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2641      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
     2642       0,    26,    27,    28,     0,     0,     0,     0,    34,     0,
     2643      31,     0,     0,    37,     0,   206,    39,    40,     0,     0,
     2644       0,     0,     0,     0,     0,     0,    41,    42,     0,     0,
     2645       0,     0,     0,     0,     0,     0,     0,     0,    34,     0,
     2646       0,     0,     0,     0,     0,    38,    39,     0,     0,     0,
     2647       0,     0,    43,     0,   269,     0,     0,     0,     0,     0,
     2648      45,    46,     0,     0,     0,     8,     9,    10,    11,    12,
     2649      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2650      23,    24,    25,     0,   256,    26,    27,    28,     0,     0,
     2651      45,    46,     0,     0,    31,     8,     9,    10,    11,    12,
     2652      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2653      23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
     2654       0,     0,    34,     0,    31,     0,     0,     0,     0,    38,
     2655      39,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2656       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2657       0,     0,    34,     0,     0,     0,     0,     0,     0,   206,
     2658      39,     0,     0,     0,     0,     0,     0,     0,    44,     0,
     2659       0,     0,     0,     0,    45,    46,     0,     0,     0,     8,
     2660       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2661      19,    20,    21,    22,    23,    24,    25,     0,   269,    26,
     2662      27,    28,     0,     0,    45,    46,     0,     0,    31,     8,
     2663       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2664      19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
     2665      27,    28,     0,     0,     0,     0,    34,     0,    31,     0,
     2666       0,     0,     0,    38,    39,     0,     0,     0,     0,     0,
     2667       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2668       0,     0,     0,     0,     0,     0,    34,     0,     0,     0,
     2669       0,     0,     0,    38,    39,     0,     0,     0,     0,     0,
     2670       0,     0,   337,     0,     0,     0,     0,     0,    45,    46,
     2671       0,     0,     0,     8,     9,    10,    11,    12,    13,    14,
     2672      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2673      25,     0,   676,    26,    27,    28,     0,     0,    45,    46,
     2674       0,     0,    31,     0,     0,     0,     0,     0,     0,     0,
     2675       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2676       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2677      34,     0,     0,     0,     0,     0,     0,    38,    39,     0,
     2678       0,     0,   281,   282,     0,   283,  1021,     0,  1022,     0,
     2679       0,  1023,  1024,  1025,  1026,  1027,  1028,  1029,  1030,     0,
     2680       0,  1508,  1031,     0,     0,     0,  1032,  1033,     0,    33,
     2681       0,   284,     0,     0,     0,     0,   668,  1034,     0,     0,
     2682       0,   286,    45,    46,   287,   288,   289,   290,   291,   292,
     2683      41,    42,     0,   293,   294,     0,     0,     0,     0,     0,
     2684       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2685       0,     0,     0,     0,     0,     0,   295,     0,   376,     0,
     2686       0,   170,     0,     0,    45,    46,   297,   298,   299,   300,
     2687       0,     0,   281,   282,  1035,   283,  1021,     0,  1022,  -134,
     2688       0,  1023,  1024,  1025,  1026,  1027,  1028,  1029,  1030,     0,
     2689       0,     0,  1031,     0,     0,     0,  1032,  1033,     0,    33,
     2690       0,   284,     0,     0,     0,     0,     0,  1034,     0,     0,
     2691       0,   286,     0,     0,   287,   288,   289,   290,   291,   292,
     2692      41,    42,     0,   293,   294,     0,     0,     0,     0,     0,
     2693       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2694       0,     0,     0,     0,     0,     0,   295,     0,   376,     0,
     2695       0,   170,     0,     0,    45,    46,   297,   298,   299,   300,
     2696       0,     0,     0,     0,  1035,     0,     0,     0,     0,  -134,
     2697       2,   205,     4,     5,     6,     7,     8,     9,    10,    11,
     2698      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     2699      22,    23,    24,    25,     0,     0,    26,    27,    28,     0,
     2700       0,     0,     0,     0,     0,    31,     0,   281,   282,     0,
     2701     283,  1021,     0,  1022,  1380,  1381,  1023,  1024,  1025,  1026,
     2702    1027,  1028,  1029,  1030,     0,     0,  1508,  1031,     0,     0,
     2703       0,  1032,  1033,    34,    33,    35,   284,    36,     0,     0,
     2704      38,    39,  1034,     0,     0,     0,   286,     0,     0,   287,
     2705     288,   289,   290,   291,   292,    41,    42,     0,   293,   294,
     2706       0,     0,     0,     0,  1291,     0,     0,     0,     0,     0,
     2707       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2708       0,   295,     0,   376,     0,     0,   170,     0,     0,    45,
     2709      46,   297,   298,   299,   300,     0,     0,   281,   282,  1035,
     2710     283,  1021,     0,  1022,  1380,  1381,  1023,  1024,  1025,  1026,
     2711    1027,  1028,  1029,  1030,     0,     0,     0,  1031,     0,     0,
     2712       0,  1032,  1033,     0,    33,     0,   284,     0,     0,     0,
     2713       0,     0,  1034,     0,     0,     0,   286,     0,     0,   287,
     2714     288,   289,   290,   291,   292,    41,    42,     0,   293,   294,
     2715       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2716       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2717       0,   295,     0,   376,     0,     0,   170,     0,     0,    45,
     2718      46,   297,   298,   299,   300,     0,     0,   281,   282,  1035,
     2719     283,  1021,     0,  1022,     0,     0,  1023,  1024,  1025,  1026,
     2720    1027,  1028,  1029,  1030,     0,     0,     0,  1031,     0,     0,
     2721       0,  1032,  1033,     0,    33,     0,   284,     0,     0,     0,
     2722       0,     0,  1034,     0,     0,     0,   286,     0,     0,   287,
     2723     288,   289,   290,   291,   292,    41,    42,     0,   293,   294,
     2724       0,     0,     0,     0,     0,     0,   281,   282,     0,   283,
     2725       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2726       0,   295,     0,   376,     0,     0,   170,     0,     0,    45,
     2727      46,   297,   298,   299,   300,   284,     0,     0,     0,  1035,
     2728       0,   631,     0,   139,   140,   286,     0,     0,   287,   288,
     2729     289,   290,   291,   292,    41,    42,     0,   293,   294,     0,
     2730       0,     0,     0,     0,     0,   281,   282,     0,   283,     0,
     2731       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2732     295,     0,   632,     0,   633,   377,     0,     0,    45,    46,
     2733     297,   298,   299,   300,   284,     0,     0,     0,     0,     0,
     2734     285,     0,     0,     0,   286,     0,     0,   287,   288,   289,
     2735     290,   291,   292,    41,    42,     0,   293,   294,     0,     0,
     2736       0,     0,     0,     0,   281,   282,     0,   283,     0,     0,
     2737       0,     0,     0,     0,     0,     0,     0,     0,     0,   295,
     2738       0,   376,     0,     0,   377,     0,     0,    45,    46,   297,
     2739     298,   299,   300,   284,     0,     0,     0,     0,     0,   285,
     2740       0,     0,     0,   286,     0,     0,   287,   288,   289,   290,
     2741     291,   292,    41,    42,     0,   293,   294,     0,     0,     0,
     2742       0,     0,     0,   281,   282,     0,   283,     0,     0,     0,
     2743       0,     0,     0,     0,     0,     0,     0,     0,   295,     0,
     2744     376,     0,     0,     0,     0,   748,    45,    46,   297,   298,
     2745     299,   300,   284,     0,     0,     0,     0,     0,   285,     0,
     2746       0,     0,   286,     0,     0,   287,   288,   289,   290,   291,
     2747     292,    41,    42,     0,   293,   294,     0,     0,     0,     0,
     2748       0,     0,   281,   282,     0,   283,     0,     0,     0,     0,
     2749       0,     0,     0,     0,     0,     0,     0,   295,     0,   376,
     2750       0,     0,   956,     0,     0,    45,    46,   297,   298,   299,
     2751     300,   284,     0,     0,     0,     0,     0,   285,     0,     0,
     2752       0,   286,     0,     0,   287,   288,   289,   290,   291,   292,
     2753      41,    42,     0,   293,   294,     0,     0,     0,     0,     0,
     2754       0,   281,   282,     0,   283,     0,     0,     0,     0,     0,
     2755       0,     0,     0,     0,     0,     0,   295,     0,   376,     0,
     2756       0,     0,     0,     0,    45,    46,   297,   298,   299,   300,
     2757     284,     0,     0,     0,     0,     0,   285,     0,     0,     0,
     2758     286,     0,     0,   287,   288,   289,   290,   291,   292,    41,
     2759      42,     0,   293,   294,     0,     0,     0,     0,     0,     0,
     2760     281,   282,     0,   283,     0,     0,     0,     0,     0,     0,
     2761       0,     0,     0,     0,     0,   502,     0,   376,     0,     0,
     2762       0,     0,     0,    45,    46,   297,   298,   299,   300,   284,
     2763       0,     0,     0,     0,     0,   285,     0,     0,     0,   286,
     2764       0,     0,   287,   288,   289,   290,   291,   292,    41,    42,
     2765       0,   293,   294,     0,     0,     0,     0,     0,     0,   281,
     2766     282,     0,   283,     0,     0,     0,     0,     0,     0,     0,
     2767       0,     0,     0,     0,   507,     0,   376,     0,     0,     0,
     2768       0,     0,    45,    46,   297,   298,   299,   300,   284,     0,
     2769       0,     0,     0,     0,   285,     0,     0,     0,   286,     0,
     2770       0,   287,   288,   289,   290,   291,   292,    41,    42,     0,
     2771     293,   294,     0,     0,     0,     0,     0,     0,   281,   282,
     2772       0,   283,     0,     0,     0,     0,     0,     0,     0,     0,
     2773       0,     0,     0,   510,     0,   376,     0,     0,     0,     0,
     2774       0,    45,    46,   297,   298,   299,   300,   284,     0,     0,
     2775       0,     0,     0,   285,     0,     0,     0,   286,     0,     0,
     2776     287,   288,   289,   290,   291,   292,    41,    42,     0,   293,
     2777     294,     0,     0,     0,     0,     0,     0,   281,   282,     0,
     2778     283,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2779       0,     0,   295,     0,   376,     0,     0,     0,     0,     0,
     2780     699,    46,   297,   298,   299,   300,   284,     0,     0,     0,
     2781       0,     0,   285,     0,     0,     0,   286,     0,     0,   287,
     2782     288,   289,   290,   291,   292,    41,    42,     0,   293,   294,
     2783       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2784       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2785       0,   295,     0,   376,     0,     0,     0,     0,     0,   342,
     2786      46,   297,   298,   299,   300,     2,   205,     4,     5,     6,
     2787       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2788      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
     2789       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2790      31,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2791       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2792       0,     0,     0,     0,     0,     0,     0,     0,    34,     0,
     2793      35,     0,    36,    37,     0,   173,   174,    40,     0,     0,
     2794       0,     0,     0,     0,     0,     0,    41,    42,   204,     2,
     2795     205,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     2796      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2797      23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
     2798       0,     0,     0,     0,    31,     0,     0,     0,     0,     0,
     2799       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2800       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2801       0,     0,    34,     0,    35,     0,    36,     0,     0,   206,
     2802      39,   463,     2,   205,     4,     5,     6,     7,     8,     9,
     2803      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2804      20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
     2805      28,     0,     0,     0,     0,     0,     0,    31,     0,     0,
     2806       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2807       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2808       0,     0,     0,     0,     0,    34,     0,    35,     0,    36,
     2809       0,     0,    38,    39,     2,   205,     4,     5,     6,     7,
     2810       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2811      18,    19,    20,    21,    22,    23,    24,    25,     0,     0,
     2812      26,    27,    28,     0,     0,     0,     0,     0,     0,    31,
     2813       0,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2814      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
     2815       0,    26,    27,    28,   481,   482,   483,    34,     0,    35,
     2816      31,    36,     0,     0,   206,    39,     0,     0,     0,     0,
     2817       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2818       0,     0,     0,     0,     0,     0,     0,     0,    34,     0,
     2819       0,     0,     0,     0,     0,    38,    39
     2820};
     2821
     2822#define yypact_value_is_default(yystate) \
     2823  ((yystate) == (-1333))
     2824
     2825#define yytable_value_is_error(yytable_value) \
     2826  YYID (0)
     2827
     2828static const yytype_int16 yycheck[] =
     2829{
     2830       0,     1,    43,    43,    43,   238,   184,     0,   116,   203,
     2831       1,   184,     0,   530,   184,   218,     0,   184,   184,   509,
     2832     740,     0,   167,   168,   740,   740,   184,   184,   860,   613,
     2833     595,    32,    32,   593,   725,   637,   347,     1,    43,    32,
     2834     460,   593,   517,    43,    32,   478,   488,   593,    32,    49,
     2835     492,   347,   566,    32,   105,   186,    49,   595,  1301,    39,
     2836     185,     0,   966,    63,   423,   424,    66,    81,    43,    69,
     2837      63,   593,   683,    66,   593,   362,    69,   593,    69,   366,
     2838    1002,  1003,    28,   593,    97,    49,   264,  1020,  1003,    43,
     2839      39,   264,   200,    32,   264,    81,    49,   264,   264,   627,
     2840     628,    51,     0,     1,   155,   105,   264,   264,   118,  1013,
     2841       0,  1110,   109,   113,    72,   643,   116,   117,   131,    81,
     2842       0,   343,  1032,  1033,   134,   106,   112,    66,   109,   260,
     2843     261,   490,    78,   113,    32,    63,   133,   111,    44,    45,
     2844     265,   105,    32,   184,   184,   184,   146,   147,    39,   113,
     2845     509,   113,    32,  1485,   147,   155,   156,    49,  1401,   159,
     2846     113,   111,   111,    43,   113,    64,   159,   860,   280,    49,
     2847     890,    69,   628,   701,   890,   890,   134,   111,   415,   184,
     2848    1512,   185,   146,    63,   184,   185,    66,   643,   484,    69,
     2849     709,   155,   185,   709,   627,   628,  1106,   434,   255,   709,
     2850     200,   686,  1485,   678,   407,   442,   134,   596,   208,   184,
     2851     643,   117,   111,   602,   573,   208,   111,   112,   113,    39,
     2852     220,   113,  1505,   264,   264,   264,    39,   220,  1380,  1512,
     2853     184,  1230,    72,  1232,  1233,    72,   217,   111,   238,   799,
     2854     204,   661,    44,    45,   208,   701,   811,   799,    39,   250,
     2855     250,    39,    11,   799,   146,   208,   478,   250,   258,   133,
     2856      98,   265,   250,   263,   264,   265,   250,   147,   701,   783,
     2857     270,   250,   265,   811,   238,   886,   255,   799,   403,   159,
     2858     799,   220,   119,   799,   595,   393,   124,  1202,   339,   799,
     2859     271,   111,    98,   113,   134,   295,   583,   278,   111,   118,
     2860     113,  1453,    87,   736,   184,   185,   270,   909,   308,   273,
     2861     111,   250,  1384,   421,   116,   134,   208,   270,   124,   427,
     2862     111,   114,   113,   111,   324,   113,  1435,  1020,   208,   329,
     2863     115,   295,   116,  1255,  1256,  1268,   329,   624,  1029,   339,
     2864     220,  1256,   295,   343,   308,   227,   238,   347,   348,   111,
     2865     112,   476,   250,   918,   112,   308,  1188,   917,   415,   779,
     2866     250,  1470,   362,  1472,   246,   255,   366,    44,    45,   789,
     2867     250,   917,     0,     1,   132,   339,    72,   434,   270,   343,
     2868     800,   112,   363,   118,   264,   442,   367,   118,   500,    85,
     2869      86,   613,     3,   393,  1456,   917,   618,   981,   362,   403,
     2870    1462,   597,   366,   403,    32,   601,   891,  1311,  1480,   348,
     2871     403,    55,   801,  1485,   118,   111,   308,   113,    30,     3,
     2872    1482,   421,   112,   423,   424,  1487,   622,   427,   132,   429,
     2873     626,   118,    72,  1505,    72,   672,   415,   112,    66,   116,
     2874    1512,    69,   132,     0,   118,    85,    86,    85,    86,   329,
     2875     450,   343,   937,    97,  1376,   434,   889,   132,   132,   423,
     2876     424,  1376,     0,   442,  1368,  1369,   118,   347,   468,   111,
     2877      82,    83,   476,   113,   964,   113,   476,   952,   478,   295,
     2878     480,   111,   134,   476,   484,   927,   450,   480,   121,   122,
     2879     490,  1424,   480,   638,   118,  1188,   480,   450,  1431,   463,
     2880     811,   480,   502,  1105,   504,   792,   112,   507,   132,   509,
     2881     510,   118,   118,  1078,   736,   811,   647,   517,   118,   118,
     2882     113,   521,   115,   403,   488,   415,   490,   134,   492,   114,
     2883     469,   423,   424,   118,   134,   134,   112,   645,   502,   132,
     2884     504,   480,   118,   507,   434,   509,   510,   133,   192,   502,
     2885    1483,   504,   442,   678,   507,   111,   118,   510,     4,     5,
     2886       6,     7,     8,     9,   130,   565,   566,   133,   112,  1002,
     2887     118,   215,   134,   573,   118,  1268,   111,  1268,   113,   999,
     2888    1000,   225,   480,   583,   584,   112,   134,   587,   478,  1064,
     2889     480,   118,   220,   593,  1069,   595,   584,   112,   490,   111,
     2890     480,   990,   991,   118,   484,   118,   112,   423,   424,   573,
     2891     114,  1096,   118,   613,   118,   672,   728,   509,   618,   583,
     2892     620,   134,   250,    69,   624,    71,   922,   627,   628,   111,
     2893     242,   118,   112,   614,  1054,  1055,   111,   833,   118,   118,
     2894     118,   698,   118,   643,   847,   645,   118,   134,   629,   613,
     2895     112,   295,  1343,   114,   618,   134,   134,   118,   134,    72,
     2896     624,   642,   134,    76,   867,   114,    72,   889,    49,   118,
     2897    1155,  1156,    85,    86,   678,   675,   615,   119,   678,    85,
     2898      86,   573,    63,   125,   126,    66,   502,   111,    69,   112,
     2899     112,   507,  1125,   672,   510,   118,   929,   111,   111,   113,
     2900     113,   701,   702,   703,    90,    91,   119,   120,   853,   709,
     2901     710,   675,   890,   593,   114,   595,   112,   890,   118,   698,
     2902     890,   613,   675,   890,   890,   112,   618,   923,   112,   112,
     2903     112,  1424,   890,   890,   118,   118,   736,  1428,  1431,  1430,
     2904     740,   741,   111,   724,   113,   112,   112,   112,   564,   713,
     2905     689,   118,   118,     4,     5,     6,     7,     8,     9,   981,
     2906     111,    92,    93,     1,   703,   377,   147,   892,  1285,  1489,
     2907     112,   112,   111,  1489,  1489,   112,   118,   118,   159,   117,
     2908    1200,   118,   672,   783,     4,     5,     6,     7,     8,     9,
     2909    1483,   111,   792,  1484,   794,   439,   127,   128,   678,   799,
     2910     994,   112,    72,   111,   185,   113,  1094,   118,   698,    79,
     2911    1098,   811,    82,    33,    84,    85,    86,  1237,    69,   134,
     2912      71,   465,  1255,   111,  1244,  1245,  1246,   208,   792,   709,
     2913     710,    72,   112,    74,    75,    76,    94,    95,   118,   220,
     2914      72,   112,    74,    75,    85,    86,   736,   118,   111,    69,
     2915     113,    71,   480,    85,    86,   794,   119,   120,   502,   111,
     2916     860,   113,   111,   507,    66,    64,   510,     0,     1,   111,
     2917    1015,   113,   860,   134,   111,   487,   113,   489,  1363,   111,
     2918      82,   860,   882,   134,   116,   112,   113,  1307,   892,   889,
     2919     890,   116,   892,   116,   882,  1380,    29,    30,    72,    32,
     2920      74,    75,   116,  1125,   904,   134,    57,   111,   112,   113,
     2921      43,    85,    86,    72,   111,   117,    49,   917,   918,   799,
     2922      79,   860,   922,    82,    57,    84,    85,    86,   928,   929,
     2923      63,   811,    72,    66,    74,    75,    69,   928,   134,  1064,
     2924     904,   111,   116,   113,  1069,    85,    86,    81,   329,    82,
     2925      83,   904,   952,   111,   113,   106,   111,   159,   109,   283,
     2926     117,   118,   860,   927,   928,   929,    81,  1452,  1453,   502,
     2927     860,   504,   120,   106,   507,   129,   109,   510,  1086,    96,
     2928    1202,   981,  1094,   116,   308,   309,  1098,  1099,   130,   111,
     2929    1465,   113,   111,   113,   113,   111,   112,   113,     3,   889,
     2930     119,   120,  1002,  1003,   114,    10,    11,    12,    13,    14,
     2931     890,   114,   892,   251,   147,   112,   660,   981,   220,   343,
     2932    1020,   633,   403,    58,    59,   669,   159,   117,   118,   673,
     2933     928,   895,  1020,   897,    39,    44,    45,   929,   112,  1514,
     2934     112,  1020,   922,   112,    72,   984,    74,    75,    76,  1111,
     2935    1112,   184,   185,   112,   378,   112,   258,    85,    86,  1059,
     2936    1064,   263,    67,   111,  1064,  1069,   217,   200,   114,  1069,
     2937     682,   111,   684,   113,   113,   208,   688,   118,  1078,   119,
     2938     120,  1020,   116,   111,   217,   113,  1086,   220,   133,   981,
     2939     116,   119,   120,   116,   227,  1059,   549,   550,    72,   111,
     2940    1212,   111,   112,   113,   132,    79,  1059,   114,    82,   242,
     2941      84,    85,    86,   246,    58,    59,    60,   250,   251,   133,
     2942     271,   112,  1020,   551,   552,  1125,   112,   278,   557,   558,
     2943    1020,   264,   265,     3,   553,   554,   555,   556,   271,   113,
     2944      10,    11,    12,    13,    14,   278,   348,     3,    10,    11,
     2945      12,    13,    14,   114,    10,    11,    12,    13,    14,   114,
     2946      72,   132,    74,    75,    76,   132,  1166,  1167,    72,    39,
     2947      74,    75,    76,    85,    86,   132,  1167,    39,   118,   860,
     2948      29,    85,    86,    39,  1064,   112,   112,   116,  1188,  1069,
     2949    1302,   112,   117,   117,  1306,   346,   329,    67,   117,   111,
     2950    1188,   113,  1202,   118,   111,    67,  1206,   119,   120,  1188,
     2951     112,    67,   363,   346,   347,  1206,   367,    10,    11,    12,
     2952      13,    14,   546,   547,   548,   463,   428,  1166,   134,   132,
     2953     363,   112,   860,   118,   367,  1125,   112,   112,   112,   112,
     2954     884,   853,  1206,   112,   377,   112,    39,   859,   112,  1188,
     2955     118,  1359,   112,   112,   112,  1255,  1256,   112,   112,   112,
     2956     393,   112,   112,  1263,   112,     0,  1499,   469,  1268,  1167,
     2957     403,   117,    29,   112,    67,   118,   133,   114,   114,   112,
     2958    1268,   112,   112,   118,   111,   132,   524,   899,   421,  1268,
     2959    1188,   529,    72,  1405,   427,   118,   116,    32,  1188,    79,
     2960     928,  1301,    82,   132,    84,    85,    86,   112,  1206,   112,
     2961    1301,  1489,  1202,   112,   118,   112,  1489,   112,   111,  1489,
     2962     113,   112,  1489,  1489,  1263,   111,   119,   120,   118,  1268,
     2963     463,  1489,  1489,   113,    69,   468,    72,  1301,   111,   577,
     2964      76,   118,  1023,   476,   956,   111,   111,   480,   111,    85,
     2965      86,   484,  1168,  1169,   487,  1171,   489,  1465,   132,  1359,
     2966     112,   117,  1178,   134,  1180,  1490,   112,   117,    72,   112,
     2967    1268,   130,    76,   117,   116,   111,  1376,  1358,  1268,   134,
     2968     114,    85,    86,   119,   120,   587,   112,  1031,   118,  1514,
     2969     114,   524,  1020,   114,   112,   112,   529,    47,   114,   114,
     2970     114,  1401,   112,  1301,   117,   114,   644,   111,   646,   114,
     2971    1401,   114,   134,   615,   134,   119,   120,   112,   620,     0,
     2972       1,   156,   134,   747,  1424,   117,    72,   134,    74,    75,
     2973     112,  1431,   134,  1433,   132,  1435,  1424,  1401,  1050,    85,
     2974      86,   117,   114,  1431,   577,  1424,    83,   114,  1489,  1489,
     2975    1489,    32,  1431,   114,   114,   114,   114,   112,   696,   112,
     2976     593,    60,   595,   614,   111,  1465,   114,   113,    49,  1433,
     2977    1470,  1435,  1472,   111,   116,   111,    98,   112,   629,   112,
     2978    1433,   614,  1435,  1483,   111,  1424,  1490,   689,    69,  1489,
     2979    1490,   642,  1431,   661,   229,  1483,   629,  1490,   114,  1499,
     2980     633,   703,   134,  1401,  1483,   114,  1470,  1188,  1472,   642,
     2981    1514,   644,   645,   646,  1514,   250,   112,  1470,   112,  1472,
     2982     255,  1514,   114,  1339,   105,    98,  1424,   111,   111,   134,
     2983     117,    42,   112,  1431,  1424,  1499,   112,   112,  1166,  1167,
     2984      72,  1431,    74,    75,  1483,   678,   112,   118,   134,   682,
     2985    1162,   684,   134,    85,    86,   688,    70,   112,   132,    73,
     2986    1188,   112,    76,   696,    78,    98,   147,    98,   112,   134,
     2987     134,    85,   112,   724,   155,   156,   709,   710,  1206,   111,
     2988     114,   134,   112,   112,   116,  1483,    72,   114,    74,    75,
     2989      76,   724,   794,  1483,   117,   114,   134,   134,   111,    85,
     2990      86,   117,   117,  1284,   185,   112,   112,  1499,   134,  1489,
     2991     112,   779,   112,   657,   349,  1035,   559,   562,   560,   200,
     2992     561,   789,   203,   204,   563,   111,   961,   208,  1188,  1453,
     2993    1345,  1524,   800,  1277,  1099,  1263,  1306,  1278,    66,  1431,
     2994    1268,    10,    11,    12,    13,    14,  1050,    75,   229,   686,
     2995     675,   675,   233,  1069,   235,   688,  1337,   981,   897,  1340,
     2996     905,   577,   956,   244,   853,   925,   799,   639,   480,   250,
     2997      39,   713,  1206,  1301,   255,   724,   565,   565,   811,   565,
     2998     415,    -1,    -1,    -1,   265,    -1,    -1,    -1,    -1,   117,
     2999      -1,    -1,   273,    -1,   429,    -1,  1020,   211,    67,   434,
     3000      -1,    -1,    -1,  1384,    -1,   943,    -1,   442,  1389,    -1,
     3001      10,    11,    12,    13,    14,    -1,    -1,    -1,    -1,    -1,
     3002     853,    -1,    -1,    -1,   962,   460,   859,    -1,   966,    -1,
     3003      -1,   159,    -1,    -1,    -1,    -1,    -1,  1418,    -1,    39,
     3004     777,    -1,   111,   478,   113,   480,    -1,    -1,    -1,    -1,
     3005     119,   120,    -1,    -1,    -1,    -1,    -1,   890,   339,   892,
     3006      -1,    -1,   343,    -1,   278,    -1,   899,    67,   349,    -1,
     3007      -1,    -1,    -1,  1401,    83,  1013,    -1,    -1,    87,    88,
     3008      89,   362,   984,    -1,    -1,   366,   521,    -1,  1432,   922,
     3009    1434,    -1,   220,    -1,    -1,    -1,  1424,    -1,   188,    -1,
     3010      -1,    66,   111,  1431,   113,   195,   115,   116,    -1,    -1,
     3011     943,   111,   849,   113,    -1,    -1,    -1,    -1,    -1,   119,
     3012     120,    -1,  1503,   956,    -1,  1469,    -1,  1471,  1509,   962,
     3013     258,   999,  1000,   966,   415,   263,   350,    -1,   352,  1520,
     3014      -1,    -1,    -1,  1524,    -1,    -1,    -1,    -1,   429,   584,
     3015     278,    -1,   117,   434,   891,  1483,    -1,    -1,    -1,    -1,
     3016      -1,   442,    72,    -1,    74,    75,    76,    -1,    -1,  1513,
     3017      -1,  1515,  1110,    -1,    -1,    85,    86,   267,    -1,   460,
     3018    1013,    -1,   463,    -1,  1528,  1529,  1054,  1055,    -1,    -1,
     3019      -1,    -1,   627,   628,   159,    -1,    -1,   478,    -1,   480,
     3020     937,   111,    -1,   113,    -1,    -1,    -1,   488,   643,   119,
     3021     120,   492,    10,    11,    12,    13,    14,  1050,    -1,    -1,
     3022     348,    -1,    -1,    -1,   438,    -1,   661,    -1,    -1,    -1,
     3023      -1,  1064,   969,    -1,   324,    -1,  1069,   672,    -1,    -1,
     3024     521,    39,   332,    -1,    72,   335,    74,    75,    76,    -1,
     3025       0,    -1,    -1,  1086,    -1,   220,    -1,    85,    86,    -1,
     3026      -1,    -1,    -1,   698,  1166,    -1,   701,    -1,    -1,    67,
     3027      -1,    -1,    -1,    -1,    72,    -1,    -1,  1110,    76,    -1,
     3028    1017,    -1,    32,   111,    -1,   566,    -1,    85,    86,    -1,
     3029      -1,    -1,  1230,   258,  1232,  1233,    -1,    -1,   263,    -1,
     3030     428,   736,   583,   584,    -1,   395,    -1,    -1,    -1,   399,
     3031      -1,    -1,    -1,   111,   595,    -1,   444,    -1,    -1,    69,
     3032     460,   119,   120,    -1,    -1,    -1,    -1,    -1,    -1,  1162,
     3033      -1,    -1,   613,    -1,     0,    -1,    -1,   618,    -1,    -1,
     3034      -1,   469,    -1,   624,   779,    -1,   627,   628,    -1,    -1,
     3035      -1,    -1,    -1,    -1,   789,    -1,    -1,    -1,    -1,  1096,
     3036     795,  1263,   643,    -1,    -1,   800,    32,    -1,    72,  1237,
     3037      74,    75,    76,  1311,    -1,    -1,  1244,  1245,  1246,    -1,
     3038     661,    85,    86,   348,    -1,   475,    -1,    -1,    -1,    -1,
     3039      -1,   672,    -1,    -1,    -1,    -1,    -1,  1230,    -1,  1232,
     3040    1233,    -1,    -1,    69,    -1,    -1,   156,   111,    10,    11,
     3041      12,    13,    14,    -1,    -1,   119,   120,   698,  1155,  1156,
     3042     701,    -1,    -1,    -1,    -1,   860,    -1,    -1,    -1,   710,
     3043    1368,  1369,   713,    -1,    -1,    -1,    -1,    39,    -1,  1307,
     3044      10,    11,    12,    13,    14,    -1,    -1,   882,    -1,    -1,
     3045      -1,    -1,    -1,    -1,   889,   736,    -1,    -1,    -1,   587,
     3046     741,    -1,    -1,   428,    -1,    67,    -1,    -1,  1406,    39,
     3047      72,    -1,    74,    75,    76,   565,   566,    -1,  1311,    -1,
     3048      -1,    -1,    -1,    85,    86,    -1,    -1,   615,    -1,    -1,
     3049     156,    -1,   620,    -1,    -1,    -1,    -1,    67,   779,    -1,
     3050     250,    -1,    72,    -1,   469,   255,    76,  1358,   789,   111,
     3051     724,   792,    -1,    -1,   795,    85,    86,   119,   120,   800,
     3052      -1,   661,    -1,    -1,    -1,  1358,  1359,    -1,  1466,   810,
     3053      72,    -1,    74,    75,    76,  1368,  1369,  1475,     0,     1,
     3054      -1,   111,    -1,    85,    86,    -1,    -1,    -1,    -1,   119,
     3055     120,    -1,    10,    11,    12,    13,    14,    -1,   648,    -1,
     3056      -1,   689,   652,    -1,   999,  1000,    -1,  1002,  1003,   111,
     3057      32,   113,    -1,  1406,    -1,   703,    -1,   119,   120,   860,
     3058      -1,    39,    -1,    -1,   250,  1020,    -1,    -1,    -1,   255,
     3059      -1,    -1,    -1,    -1,    -1,    -1,   724,    -1,    -1,   349,
     3060      -1,   882,    -1,    -1,    66,    -1,    -1,    69,   889,    67,
     3061      -1,   892,    -1,    -1,    72,    -1,    74,    75,    76,  1054,
     3062    1055,    -1,   587,    -1,    -1,    -1,  1363,    85,    86,    -1,
     3063      -1,    -1,  1465,  1466,    -1,    -1,    -1,   918,    -1,   779,
     3064      -1,    -1,  1475,  1380,    -1,    -1,   927,   928,     0,   789,
     3065     615,    -1,    -1,   111,    -1,   620,  1489,  1490,    -1,    -1,
     3066     800,   119,   120,    -1,    -1,   415,   794,    -1,    -1,    10,
     3067      11,    12,    13,    14,    -1,    -1,    -1,    -1,    -1,   429,
     3068      32,  1514,    -1,   349,   434,    -1,    -1,    -1,    -1,    -1,
     3069    1125,    -1,   442,   783,   156,    -1,    -1,    -1,    39,    -1,
     3070     981,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3071     460,    -1,    -1,   994,    -1,  1452,  1453,    69,   999,  1000,
     3072      -1,  1002,  1003,    -1,   689,    -1,    67,    -1,   478,    -1,
     3073     480,    72,  1167,    74,    75,    76,    -1,    -1,   703,  1020,
     3074      -1,    -1,    -1,    -1,    85,    86,    -1,    -1,    72,   415,
     3075      74,    75,    76,  1188,    -1,    -1,    -1,    -1,   220,    -1,
     3076      -1,    85,    86,   429,    -1,  1200,    -1,  1202,   434,    -1,
     3077     111,   521,   113,  1054,  1055,    -1,   442,    -1,   119,   120,
     3078      -1,    -1,    -1,    -1,    -1,    83,    -1,   111,   250,    87,
     3079      88,    89,    -1,    -1,   460,   119,   120,    -1,    -1,    -1,
     3080      -1,    -1,  1237,    -1,   156,    -1,   896,    -1,    -1,  1244,
     3081    1245,  1246,   478,   111,   480,   113,    -1,   115,   116,    -1,
     3082    1255,  1256,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   794,
     3083      -1,    -1,    -1,  1268,   584,    -1,    -1,    -1,    -1,    -1,
     3084      -1,    -1,    -1,    -1,  1125,    -1,    -1,    -1,    -1,    -1,
     3085      -1,    -1,    -1,    -1,    -1,   521,   984,    -1,    -1,   999,
     3086    1000,    99,   100,   101,   102,   103,   104,   105,   106,   107,
     3087     108,   109,  1307,    -1,    -1,    -1,    -1,   627,   628,    -1,
     3088      -1,   971,    -1,    -1,    -1,    -1,  1167,    -1,    -1,    -1,
     3089      -1,    -1,    -1,   643,    -1,   133,    -1,   987,   250,    -1,
     3090      -1,    -1,    -1,   255,    -1,    -1,    -1,  1188,    -1,    -1,
     3091      -1,   661,    -1,    -1,  1054,  1055,    -1,    -1,   584,  1200,
     3092      -1,  1202,   672,    -1,    -1,  1206,    -1,    -1,    -1,    -1,
     3093      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3094      -1,  1376,    -1,    -1,    -1,    -1,    -1,    -1,   698,    -1,
     3095      -1,   701,    -1,    -1,    -1,    -1,  1237,    -1,    -1,    -1,
     3096      -1,   627,   628,  1244,  1245,  1246,    -1,   429,    -1,    -1,
     3097      -1,    -1,  1062,    -1,  1255,  1256,    -1,   643,    -1,    -1,
     3098      -1,    -1,    -1,    -1,    -1,    -1,   736,  1268,    -1,  1424,
     3099      -1,    -1,    -1,    -1,    -1,   661,  1431,   349,    53,    -1,
     3100      55,    -1,    -1,    58,    59,    60,   672,    62,    -1,    -1,
     3101      -1,  1101,    -1,    -1,    -1,    -1,    -1,    -1,   480,   984,
     3102    1301,    76,    -1,    -1,    -1,    -1,  1307,    -1,    -1,   779,
     3103      -1,    -1,   698,    88,    89,   701,    -1,    -1,  1166,   789,
     3104      -1,    -1,    -1,    -1,    -1,   795,    -1,    -1,  1483,    -1,
     3105     800,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   521,
     3106    1200,    -1,    -1,   415,    -1,    -1,    -1,    -1,    -1,    -1,
     3107     736,    -1,    -1,    -1,    -1,    -1,    -1,   429,    -1,    -1,
     3108      -1,    -1,   434,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3109     442,    -1,    -1,    -1,    -1,  1376,    -1,  1237,    -1,    -1,
     3110      -1,    -1,    -1,    -1,  1244,  1245,  1246,    -1,   460,    -1,
     3111     860,    -1,    -1,   779,    -1,    -1,    -1,    -1,    -1,    -1,
     3112    1401,    -1,   584,   789,    -1,    -1,   478,    -1,   480,   795,
     3113      -1,    -1,   882,    -1,   800,  1263,    -1,    -1,    -1,   889,
     3114      -1,    -1,    -1,  1424,    -1,    -1,    -1,    -1,    -1,    -1,
     3115    1431,    -1,     7,    -1,    -1,    10,    11,    12,    13,    14,
     3116      -1,    -1,    -1,    -1,    -1,   627,   628,  1307,    -1,   521,
     3117      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3118      -1,   643,    37,    38,    39,    40,    -1,    -1,    -1,    -1,
     3119      -1,    -1,    -1,    -1,   860,    -1,    -1,    -1,    -1,    -1,
     3120      -1,  1166,  1483,    -1,    -1,    -1,    -1,    -1,    -1,  1490,
     3121      -1,    66,    67,    -1,    -1,    -1,   882,    72,    -1,    -1,
     3122      -1,    76,    -1,   889,    79,    80,    81,    82,    83,    84,
     3123      85,    86,   584,    88,    89,    -1,    -1,    -1,    -1,   701,
     3124      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   999,
     3125    1000,    -1,  1002,  1003,    -1,    -1,   111,    -1,   113,    -1,
     3126      -1,    -1,    -1,    -1,   119,   120,   121,   122,   123,   124,
     3127    1020,    -1,    -1,    -1,    -1,   627,   628,    -1,    -1,    -1,
     3128      -1,    -1,    -1,    -1,    -1,    -1,    -1,   342,    -1,   344,
     3129      -1,   643,    -1,    10,    11,    12,    13,    14,  1263,    -1,
     3130     355,   356,    -1,    -1,  1054,  1055,    -1,    -1,    -1,   661,
     3131      -1,    -1,    -1,    -1,    -1,    10,    11,    12,    13,    14,
     3132     672,    -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3133      -1,    -1,    -1,   999,  1000,    -1,  1002,  1003,    -1,    -1,
     3134      -1,    -1,    -1,    -1,    39,    -1,   698,    -1,    -1,   701,
     3135      67,    -1,    -1,    -1,  1020,    72,    -1,    74,    75,    76,
     3136      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    85,    86,
     3137      -1,    -1,    67,    -1,    -1,  1125,    -1,    72,    -1,    74,
     3138      75,    76,    -1,    -1,   736,    -1,    -1,    -1,  1054,  1055,
     3139      85,    86,    -1,    -1,   111,    -1,   113,    -1,   860,    -1,
     3140      -1,    -1,   119,   120,    -1,    -1,    -1,    -1,    -1,    -1,
     3141      -1,    -1,    -1,    -1,    -1,    -1,   111,  1167,   113,    -1,
     3142     882,    -1,    -1,    -1,   119,   120,    -1,   779,    37,    38,
     3143      -1,    40,    -1,    -1,    -1,    -1,    -1,   789,  1188,    -1,
     3144      -1,    -1,    -1,   795,    -1,    -1,    -1,    -1,   800,    -1,
     3145    1200,    -1,  1202,    -1,    -1,    -1,    -1,    66,    -1,  1125,
     3146      -1,    -1,    -1,    72,    -1,    -1,   928,    76,    -1,    -1,
     3147      79,    80,    81,    82,    83,    84,    85,    86,    -1,    88,
     3148      89,    -1,    -1,    -1,    -1,    -1,    -1,  1237,    -1,    -1,
     3149      -1,    -1,    -1,    -1,  1244,  1245,  1246,    -1,    -1,    -1,
     3150      -1,  1167,   111,    -1,   113,  1255,  1256,    -1,   860,    -1,
     3151     119,   120,   121,   122,   123,   124,    -1,    -1,  1268,    -1,
     3152      -1,    -1,  1188,   132,    -1,    -1,    -1,    -1,    -1,    -1,
     3153     882,    -1,    -1,    -1,  1200,    -1,  1202,   889,    -1,    -1,
     3154    1002,  1003,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3155      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1307,  1020,    -1,
     3156      -1,    -1,    -1,    -1,    66,    -1,    -1,    -1,    -1,    -1,
     3157      -1,  1237,    -1,    75,    -1,    77,    -1,    79,  1244,  1245,
     3158    1246,    -1,    -1,    -1,    86,    -1,    -1,    -1,    -1,  1255,
     3159    1256,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3160      -1,    -1,  1268,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3161      -1,    -1,    -1,    -1,    -1,   117,    -1,   119,   120,   121,
     3162      -1,    -1,    -1,    -1,    -1,    -1,  1376,    -1,    -1,    -1,
     3163      -1,    -1,    -1,    -1,    -1,   690,    -1,   692,    -1,    -1,
     3164      -1,  1307,    -1,    -1,   699,   700,    -1,   999,  1000,   704,
     3165    1002,  1003,    -1,    -1,    -1,    -1,    -1,   159,    -1,    -1,
     3166      -1,    -1,   717,    -1,    -1,    -1,    -1,   722,  1020,    -1,
     3167      -1,    -1,    -1,    -1,  1424,    -1,    -1,    -1,    -1,    -1,
     3168      -1,  1431,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3169      -1,    -1,    -1,    -1,   749,    -1,    -1,    -1,    -1,    -1,
     3170      -1,    -1,  1054,  1055,  1166,  1167,    -1,    -1,    -1,    -1,
     3171    1376,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   220,    -1,
     3172     222,   223,   224,    -1,    -1,    -1,  1188,    -1,    -1,    -1,
     3173      -1,    -1,    -1,  1483,    -1,    -1,    -1,    -1,    -1,    -1,
     3174      -1,    -1,    -1,    -1,  1206,    -1,    -1,    -1,    -1,    -1,
     3175      -1,    -1,    -1,    -1,    -1,    -1,   258,    -1,  1424,    -1,
     3176      -1,   263,    -1,    -1,    -1,  1431,    -1,    -1,    -1,    -1,
     3177      -1,    -1,    -1,  1125,    -1,    -1,   278,    -1,    -1,    -1,
     3178      -1,    -1,    -1,    -1,    -1,    -1,    -1,   842,    -1,   844,
     3179     845,   846,    -1,  1255,  1256,    -1,    -1,    -1,    -1,    -1,
     3180      -1,  1263,    49,    -1,    -1,    -1,  1268,    -1,   863,    -1,
     3181      -1,    -1,    -1,    -1,    -1,  1167,    -1,  1483,    -1,    66,
     3182      -1,    -1,   877,    -1,    -1,    -1,    -1,   329,    -1,    -1,
     3183      -1,    -1,    -1,    -1,    -1,    -1,  1188,    -1,    -1,  1301,
     3184      -1,    -1,    -1,    -1,    -1,    -1,   348,    -1,  1200,    -1,
     3185    1202,   353,   354,    -1,    -1,    -1,    -1,    -1,    -1,   361,
     3186      -1,   916,    -1,    -1,    -1,    -1,   113,    -1,    -1,    -1,
     3187     117,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3188      -1,    -1,    -1,    -1,    -1,  1237,    -1,    -1,    -1,    -1,
     3189      -1,    -1,  1244,  1245,  1246,    -1,    -1,    -1,    -1,   146,
     3190      -1,   403,    -1,  1255,  1256,   960,    -1,    -1,    -1,   156,
     3191     965,    -1,   159,    -1,  1376,   970,  1268,    -1,    -1,   421,
     3192     975,    -1,    -1,    -1,   426,   980,   428,   982,   983,    -1,
     3193      -1,   986,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1401,
     3194     995,    -1,   444,    -1,    -1,   447,   448,    -1,    -1,    -1,
     3195      -1,    -1,    -1,   455,    -1,  1307,  1011,  1012,    -1,    -1,
     3196      -1,   208,  1424,    -1,    -1,    -1,    -1,   469,    -1,  1431,
     3197      -1,    -1,    -1,   220,   476,    -1,    -1,    -1,    -1,    -1,
     3198      -1,    -1,  1037,    -1,    -1,  1040,    -1,    -1,    -1,    -1,
     3199      -1,   238,    -1,    -1,    -1,    26,    27,    28,    10,    11,
     3200      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     3201      22,    23,    24,    25,    26,    27,   263,    -1,    -1,    -1,
     3202      -1,  1483,    -1,   270,  1376,    -1,    -1,    39,  1083,    -1,
     3203      -1,    -1,    -1,    -1,  1089,  1090,    -1,    -1,    -1,    -1,
     3204      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   295,    -1,
     3205      -1,    -1,    -1,  1108,    -1,    67,    -1,    -1,  1113,    -1,
     3206      -1,   308,    -1,  1118,    -1,    -1,    -1,    98,    -1,   100,
     3207      -1,    -1,  1424,    -1,  1129,    -1,    -1,    -1,    -1,  1431,
     3208      -1,    -1,    -1,    -1,    -1,   587,    -1,  1142,    -1,  1144,
     3209    1145,  1146,  1147,    -1,    -1,    -1,   343,    -1,    -1,    -1,
     3210      -1,   348,    -1,    -1,  1159,    -1,  1161,    -1,    -1,    -1,
     3211    1165,    -1,    -1,   615,    -1,    -1,    -1,    -1,   620,    -1,
     3212      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3213      -1,  1483,    -1,    -1,    -1,    -1,    -1,    -1,  1193,  1194,
     3214      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   180,
     3215      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   190,
     3216     191,    -1,    -1,    -1,   195,    -1,   197,   198,    -1,    -1,
     3217      44,    -1,    -1,    -1,    -1,    -1,   423,   424,    -1,    -1,
     3218      -1,    -1,   429,    -1,    -1,    -1,    -1,   689,    -1,    -1,
     3219      -1,    -1,  1247,  1248,    -1,    -1,    -1,    -1,    -1,    -1,
     3220      -1,   703,  1257,   450,    -1,    -1,    -1,    -1,    -1,    -1,
     3221      -1,    -1,    -1,    -1,    -1,    -1,    -1,    91,    -1,    -1,
     3222      -1,    -1,   724,    -1,    -1,    -1,    -1,   101,    -1,    -1,
     3223      -1,   478,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3224      -1,    -1,    -1,   490,    -1,    -1,    -1,    -1,    -1,    -1,
     3225      -1,    -1,    -1,    -1,    -1,   502,    -1,   504,    -1,    -1,
     3226     507,    -1,   509,   510,  1319,    -1,  1321,  1322,  1323,    -1,
     3227      -1,    -1,    -1,    -1,   521,    -1,    -1,    -1,  1333,    -1,
     3228      -1,   783,    -1,    -1,    -1,    -1,  1341,    -1,    -1,    -1,
     3229      -1,    -1,   794,    -1,    -1,    -1,   170,    -1,    -1,    -1,
     3230      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   811,
     3231      -1,  1366,  1367,    -1,    -1,    -1,    -1,    -1,    -1,   193,
     3232      -1,    -1,    -1,    -1,    -1,    -1,   573,    -1,    -1,    -1,
     3233      -1,    -1,    -1,   207,    -1,    -1,    -1,   584,    -1,    -1,
     3234     587,    -1,   216,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3235      -1,    -1,   226,    -1,    -1,    -1,  1411,  1412,    -1,    -1,
     3236      -1,    -1,    -1,    -1,    -1,    -1,   613,    -1,    -1,  1424,
     3237      -1,   618,    -1,    -1,    -1,    -1,  1431,   251,    -1,    -1,
     3238     627,   628,   256,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3239      -1,    -1,    -1,    -1,    -1,   269,   643,    -1,    -1,    -1,
     3240      -1,   275,    -1,   277,    -1,    -1,    -1,    -1,    -1,  1464,
     3241      -1,    -1,    -1,  1468,    -1,    -1,    -1,    -1,    -1,    -1,
     3242     922,    -1,   296,    -1,    -1,    -1,    -1,    -1,   675,    -1,
     3243      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3244      -1,  1496,    -1,  1498,    -1,    -1,    -1,    -1,    -1,    -1,
     3245     952,    -1,    -1,    -1,   701,    -1,   703,    -1,    -1,    -1,
     3246      -1,    -1,    -1,   337,    -1,    -1,    -1,   341,    -1,    -1,
     3247      -1,  1526,  1527,    -1,    -1,    -1,    -1,    -1,    -1,  1534,
     3248    1535,    -1,   984,    -1,    -1,    -1,    -1,    -1,    -1,   736,
     3249      -1,    -1,    -1,   995,    -1,   369,    -1,    -1,    -1,   373,
     3250     374,    -1,   376,    -1,    -1,    -1,    -1,    -1,    -1,   383,
     3251     384,    -1,   386,   387,    -1,   389,    -1,   391,    -1,    -1,
     3252      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3253      -1,    -1,    -1,    -1,   408,    -1,    -1,    -1,   569,   570,
     3254      -1,    -1,   416,    -1,    -1,    -1,    -1,   794,    -1,    -1,
     3255      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3256      -1,    -1,  1064,    -1,    -1,   596,   440,    -1,   599,   600,
     3257      -1,   602,    -1,   604,   605,    -1,  1078,    -1,   609,   610,
     3258      -1,    26,    27,    28,   281,    -1,   283,   284,    -1,    -1,
     3259      -1,    -1,   466,    -1,    -1,    -1,   293,   294,   472,    -1,
     3260      -1,    -1,    -1,   477,    -1,    -1,    -1,    -1,    -1,    -1,
     3261      -1,   308,   309,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3262      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   155,
     3263     156,    -1,    -1,    -1,    -1,   882,    -1,    -1,    -1,   513,
     3264      -1,    -1,   889,    -1,    -1,    -1,   343,    -1,    -1,    -1,
     3265      -1,    -1,    -1,    98,   528,   100,    -1,   904,    -1,    -1,
     3266      -1,    -1,   188,    -1,  1166,    -1,    -1,    -1,    -1,   195,
     3267      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3268     125,   378,   929,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3269      -1,   565,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3270     574,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3271      -1,    -1,    -1,    -1,   745,   746,    -1,    -1,    -1,    -1,
     3272     594,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3273      -1,    -1,    -1,    -1,   981,   180,    -1,    -1,    -1,    -1,
     3274      -1,   267,    -1,   188,    -1,   190,   191,    -1,    -1,    -1,
     3275     195,    -1,   197,   198,    -1,  1002,  1003,    -1,   632,    -1,
     3276      -1,  1263,    -1,    -1,     3,     4,     5,     6,     7,     8,
     3277       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3278      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
     3279      -1,    30,    31,    32,   668,    -1,    -1,    -1,   324,    -1,
     3280      39,    -1,   676,    -1,    -1,    -1,   332,   333,    -1,   335,
     3281     336,    -1,  1059,    -1,    -1,    -1,    -1,   343,    -1,    -1,
     3282      -1,   347,   267,    -1,    -1,    -1,    -1,    -1,    67,    -1,
     3283      69,    -1,    71,   707,    -1,    74,    75,    -1,    -1,    -1,
     3284     366,    -1,    -1,    -1,   718,   719,    -1,    -1,    -1,   546,
     3285     547,   548,   549,   550,   551,   552,   553,   554,   555,   556,
     3286     557,   558,   559,   560,   561,   562,   563,    -1,    -1,   395,
     3287     901,    -1,    -1,   399,    -1,    -1,   750,   116,  1125,    -1,
     3288      -1,   755,    10,    11,    12,    13,    14,    15,    16,    17,
     3289      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     3290      28,    -1,    -1,   429,    -1,    -1,    -1,    -1,    -1,    -1,
     3291      -1,    39,    -1,   146,    -1,    -1,    -1,    -1,    -1,  1166,
     3292      -1,    -1,    -1,   156,    -1,    -1,    -1,    -1,    -1,    -1,
     3293      -1,    -1,    -1,    -1,   167,   168,    -1,    -1,    -1,    67,
     3294      -1,   815,    -1,    -1,    -1,    -1,    -1,    -1,   822,   475,
     3295      78,    -1,   478,    -1,    -1,  1202,    -1,    -1,    -1,    -1,
     3296      -1,   835,    -1,   837,    -1,    -1,    -1,    -1,    -1,    -1,
     3297      -1,    -1,    -1,    -1,    -1,    -1,   850,    -1,    -1,    -1,
     3298      -1,    -1,   856,    -1,    -1,    -1,    -1,    -1,    -1,   686,
     3299      -1,   517,    -1,    -1,   868,   521,    -1,   871,    -1,    -1,
     3300      -1,    -1,    -1,    -1,    -1,   238,    -1,    -1,  1255,  1256,
     3301      -1,    -1,  1514,    -1,    -1,    -1,  1263,    -1,    -1,    -1,
     3302      -1,    -1,    -1,    -1,    -1,  1056,    -1,    -1,    -1,   262,
     3303      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   565,
     3304     566,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3305     747,    -1,    -1,    -1,    -1,    -1,    -1,   583,   584,    -1,
     3306      -1,    -1,    -1,    -1,    -1,    -1,    -1,   593,    -1,   595,
     3307     596,    -1,    -1,    -1,    -1,    -1,   602,    -1,    -1,    -1,
     3308     777,    -1,    -1,    -1,    -1,    -1,   612,   613,    -1,    -1,
     3309      -1,    -1,   618,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3310      -1,   627,   628,    -1,    -1,   979,    -1,    -1,    -1,    -1,
     3311      -1,    -1,    -1,    -1,    -1,    -1,    -1,   643,    -1,    -1,
     3312      -1,    -1,   648,   649,   569,   570,   652,   653,    -1,  1376,
     3313      -1,    -1,    -1,   659,    -1,    -1,    -1,    -1,    -1,    -1,
     3314      -1,    -1,    -1,    -1,   377,    -1,    -1,    -1,    -1,    -1,
     3315      -1,   596,   678,  1184,   599,   600,    -1,   602,    -1,   604,
     3316     605,    -1,    -1,    -1,   609,   610,  1040,    -1,    -1,    -1,
     3317      -1,    -1,    -1,    -1,    -1,   701,   702,    -1,    -1,    -1,
     3318      -1,    -1,    -1,    -1,    -1,    -1,  1433,    -1,  1435,    -1,
     3319      -1,    -1,    -1,    -1,   891,    -1,    -1,    -1,    -1,    -1,
     3320    1074,    -1,    -1,    -1,    -1,  1079,    -1,    -1,    -1,    -1,
     3321     736,    -1,    -1,  1087,   740,   741,    -1,    -1,    -1,    -1,
     3322      -1,    -1,    -1,  1470,    -1,  1472,    -1,    -1,    -1,    -1,
     3323      -1,    -1,    -1,    -1,    -1,    -1,    -1,   470,    -1,    -1,
     3324     937,    -1,    -1,    -1,    -1,    -1,    -1,  1121,    -1,    -1,
     3325      -1,    -1,  1499,    -1,    -1,    -1,    -1,   783,  1132,    -1,
     3326      -1,  1135,    -1,  1137,    -1,    -1,    -1,    -1,    -1,    -1,
     3327      -1,    -1,   969,   799,    -1,   801,   509,    -1,  1152,  1153,
     3328      -1,    -1,    -1,    -1,   981,   811,    -1,    -1,   521,    -1,
     3329      -1,    -1,    -1,    -1,   527,    -1,    -1,   530,  1172,    -1,
     3330     745,   746,     7,    -1,    -1,    10,    11,    12,    13,    14,
     3331     543,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3332      -1,    -1,    -1,  1020,    -1,    -1,    -1,    -1,    -1,    -1,
     3333      -1,    -1,    37,    38,    39,    40,    -1,    -1,    -1,    -1,
     3334     573,    -1,    -1,    -1,  1218,    -1,    -1,   580,    -1,    -1,
     3335      -1,   584,  1226,    -1,    -1,    -1,   882,    -1,    -1,    -1,
     3336      -1,    66,    67,   889,   890,    -1,   892,    72,    -1,    -1,
     3337     896,    76,    -1,    -1,    79,    80,    81,    82,    83,    84,
     3338      85,    86,    -1,    88,    89,    -1,    -1,    -1,    -1,    -1,
     3339      -1,   917,   918,    -1,    -1,    -1,    -1,   630,    -1,  1096,
     3340      -1,    -1,    -1,    -1,    -1,   638,   111,    -1,   113,    -1,
     3341      -1,    -1,    -1,    -1,   119,   120,   121,   122,   123,   124,
     3342      -1,    -1,  1296,    -1,  1298,    -1,   952,    -1,    -1,    -1,
     3343      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3344    1314,    -1,  1316,    -1,    -1,   971,   972,    -1,    -1,    -1,
     3345      -1,   896,    -1,    -1,    -1,   981,   901,  1331,  1155,  1156,
     3346      -1,   987,   988,    -1,   990,   991,   992,    -1,    -1,    -1,
     3347      -1,    -1,  1346,  1347,    -1,    -1,  1002,  1003,    -1,    -1,
     3348      -1,   714,    -1,  1357,    -1,    -1,  1360,    -1,    -1,    -1,
     3349      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3350      -1,    -1,    -1,   736,    -1,   738,    -1,    -1,  1382,    -1,
     3351      -1,    -1,    -1,    -1,    -1,   748,    -1,  1391,    -1,    -1,
     3352    1394,   754,  1396,  1397,  1398,    -1,    -1,    -1,    -1,    -1,
     3353      -1,    -1,    -1,    -1,    -1,    -1,  1062,    -1,  1064,    -1,
     3354      -1,    -1,    -1,  1069,    -1,    -1,    -1,    -1,    -1,    -1,
     3355      -1,    -1,  1078,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3356      -1,   794,   795,  1437,    -1,  1439,    -1,  1441,    -1,    -1,
     3357      -1,    -1,    -1,    -1,    -1,  1101,  1102,   810,    -1,    -1,
     3358      -1,    -1,    -1,  1457,    -1,    -1,    -1,    -1,    -1,    -1,
     3359      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1125,
     3360      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3361      -1,  1056,    -1,    -1,    -1,    -1,   849,    -1,    -1,    -1,
     3362     853,    -1,    -1,    -1,    -1,    10,    11,    12,    13,    14,
     3363      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3364      25,    26,    27,    -1,    -1,    30,    31,    32,    -1,   882,
     3365      -1,    -1,    -1,    -1,    39,    -1,   889,    -1,    -1,    -1,
     3366      -1,    -1,    -1,    -1,    -1,    -1,  1363,    -1,    -1,    -1,
     3367      -1,    -1,    -1,    -1,    -1,    -1,  1202,    -1,    -1,    -1,
     3368      -1,    -1,    67,  1380,    -1,    -1,    -1,    -1,    -1,    74,
     3369      75,    -1,    -1,    -1,    -1,    -1,   929,     3,     4,     5,
     3370       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     3371      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3372      26,    27,    -1,   956,    30,    31,    32,    -1,   961,  1255,
     3373    1256,   964,    -1,    39,   119,   120,    -1,    -1,    -1,  1184,
     3374      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3375      -1,   984,    -1,    -1,    -1,  1452,  1453,    -1,    -1,    -1,
     3376      -1,    67,   995,    69,    -1,    71,    72,    -1,    74,    75,
     3377      76,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    85,
     3378      86,    -1,  1015,    -1,  1017,    -1,    -1,    -1,    -1,    -1,
     3379      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1032,
     3380    1033,    -1,    -1,    -1,    -1,   111,    -1,   113,    -1,    -1,
     3381      -1,    -1,    -1,   119,   120,    -1,    -1,    -1,    -1,  1052,
     3382      -1,    -1,    -1,    -1,    -1,     3,     4,     5,     6,     7,
     3383       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     3384      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     3385    1376,    -1,    30,    31,    32,    33,    -1,    -1,    36,    -1,
     3386      -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3387      -1,    -1,    -1,  1106,    -1,    -1,    -1,    -1,    -1,    -1,
     3388      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,
     3389      -1,    69,  1125,    71,    -1,    -1,    74,    75,    -1,    -1,
     3390      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1140,  1141,    -1,
     3391       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
     3392      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     3393      24,    25,    26,    27,    -1,   113,    30,    31,    32,  1465,
     3394      -1,   119,   120,    -1,    -1,    39,    -1,    -1,    -1,    -1,
     3395      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3396      -1,    -1,    -1,  1489,  1490,    -1,    -1,    -1,    -1,    -1,
     3397      -1,    -1,    -1,    67,    -1,    69,    -1,    71,    -1,    -1,
     3398      74,    75,    -1,    -1,    -1,    -1,    -1,    -1,  1514,    -1,
     3399      -1,    -1,     3,     4,     5,     6,     7,     8,     9,    10,
     3400      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3401      21,    22,    23,    24,    25,    26,    27,    -1,   112,    30,
     3402      31,    32,    33,    -1,    -1,    36,    37,    38,    39,    40,
     3403      41,    -1,    43,    -1,    -1,    46,    47,    48,    49,    50,
     3404      51,    52,    53,    -1,    -1,    -1,    57,    -1,    -1,  1282,
     3405      61,    62,  1285,    64,    -1,    66,    67,    -1,    69,    -1,
     3406      71,    72,    -1,    74,    75,    76,    -1,    -1,    79,    80,
     3407      81,    82,    83,    84,    85,    86,    -1,    88,    89,    -1,
     3408      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3409      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3410     111,    -1,   113,    -1,    -1,   116,    -1,    -1,   119,   120,
     3411     121,   122,   123,   124,    -1,    -1,    -1,    -1,   129,    -1,
     3412      -1,    -1,    -1,   134,     3,     4,     5,     6,     7,     8,
     3413       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3414      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
     3415      -1,    30,    31,    32,    33,    -1,    -1,    36,    37,    38,
     3416      39,    40,    10,    11,    12,    13,    14,    15,    16,    17,
     3417      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     3418      -1,    -1,    30,    31,    32,    -1,    -1,    66,    67,    -1,
     3419      69,    39,    71,    72,    -1,    74,    75,    76,    -1,    -1,
     3420      79,    80,    81,    82,    83,    84,    85,    86,    -1,    88,
     3421      89,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,
     3422      -1,    -1,    -1,    -1,    72,    -1,    74,    75,    -1,    -1,
     3423      -1,    -1,   111,    -1,   113,    -1,    -1,    85,    86,    -1,
     3424     119,   120,   121,   122,   123,   124,    -1,    -1,    -1,    -1,
     3425      -1,    -1,    -1,    -1,    -1,   134,    -1,    -1,    -1,    -1,
     3426      -1,    -1,    -1,    -1,    -1,    -1,  1499,     3,     4,     5,
     3427       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     3428      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3429      26,    27,    -1,    -1,    30,    31,    32,    33,    -1,    -1,
     3430      36,    37,    38,    39,    40,    10,    11,    12,    13,    14,
     3431      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3432      25,    26,    27,    28,    -1,    -1,    -1,    -1,    -1,    -1,
     3433      66,    67,    -1,    69,    39,    71,    72,    -1,    74,    75,
     3434      76,    -1,    -1,    79,    80,    81,    82,    83,    84,    85,
     3435      86,    -1,    88,    89,    -1,    -1,    -1,    -1,    -1,    -1,
     3436      -1,    -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3437      -1,    -1,    -1,    78,    -1,   111,    -1,   113,    -1,    -1,
     3438      -1,    -1,    -1,   119,   120,   121,   122,   123,   124,     4,
     3439       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     3440      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3441      25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,
     3442      -1,    -1,    37,    38,    39,    40,    10,    11,    12,    13,
     3443      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     3444      24,    25,    26,    27,    -1,    -1,    30,    31,    32,    -1,
     3445      -1,    66,    67,    -1,    69,    39,    71,    72,    -1,    74,
     3446      75,    76,    -1,    -1,    79,    80,    81,    82,    83,    84,
     3447      85,    86,    -1,    88,    89,    -1,    -1,    -1,    -1,    -1,
     3448      -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,
     3449      74,    75,    -1,    -1,    -1,    -1,   111,    -1,   113,    -1,
     3450      -1,    -1,    -1,   118,   119,   120,   121,   122,   123,   124,
     3451       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
     3452      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     3453      24,    25,    26,    27,    -1,    -1,    30,    31,    32,    -1,
     3454      -1,    -1,    -1,    37,    38,    39,    40,    10,    11,    12,
     3455      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3456      23,    24,    25,    26,    27,    -1,    -1,    30,    31,    32,
     3457      -1,    -1,    66,    67,    -1,    69,    39,    71,    72,    -1,
     3458      74,    75,    76,    -1,    -1,    79,    80,    81,    82,    83,
     3459      84,    85,    86,    -1,    88,    89,    -1,    -1,    -1,    -1,
     3460      -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,    -1,
     3461      -1,    74,    75,    -1,    -1,    -1,    -1,   111,    -1,   113,
     3462      -1,    -1,    -1,    -1,   118,   119,   120,   121,   122,   123,
     3463     124,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     3464      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3465      23,    24,    25,    26,    27,    -1,    -1,    30,    31,    32,
     3466      -1,    -1,    -1,    -1,    37,    38,    39,    40,    -1,    -1,
     3467      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3468      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3469      -1,    -1,    -1,    66,    67,    -1,    69,    -1,    71,    72,
     3470      -1,    74,    75,    76,    -1,    -1,    79,    80,    81,    82,
     3471      83,    84,    85,    86,    -1,    88,    89,    -1,    -1,    -1,
     3472      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3473      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,
     3474     113,    -1,    -1,    -1,    -1,    -1,   119,   120,   121,   122,
     3475     123,   124,     4,     5,     6,     7,     8,     9,    10,    11,
     3476      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     3477      22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
     3478      32,    -1,    -1,    -1,    -1,    37,    38,    39,    40,    -1,
     3479      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3480      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3481      -1,    -1,    -1,    -1,    66,    67,    -1,    69,    -1,    71,
     3482      72,    -1,    74,    75,    76,    -1,    -1,    79,    80,    81,
     3483      82,    83,    84,    85,    86,    -1,    88,    89,    -1,    -1,
     3484      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3485      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,
     3486      -1,   113,    -1,    -1,    -1,    -1,    -1,   119,   120,   121,
     3487     122,   123,   124,     4,     5,     6,     7,     8,     9,    10,
     3488      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3489      21,    22,    23,    24,    25,    26,    27,    -1,    -1,    30,
     3490      31,    32,    -1,    -1,    -1,    -1,    37,    38,    39,    40,
     3491      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3492      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3493      -1,    -1,    -1,    -1,    -1,    66,    67,    -1,    69,    -1,
     3494      71,    72,    -1,    74,    75,    76,    -1,    -1,    79,    80,
     3495      81,    82,    83,    84,    85,    86,    -1,    88,    89,    -1,
     3496      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3497      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3498     111,    -1,   113,    -1,    -1,    -1,    -1,    -1,   119,   120,
     3499     121,   122,   123,   124,     0,    -1,    -1,     3,     4,     5,
     3500       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     3501      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3502      26,    27,    -1,    -1,    30,    31,    32,    33,    -1,    -1,
     3503      36,    -1,    -1,    39,    40,    -1,    -1,    -1,    -1,    -1,
     3504      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3505      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    64,    -1,
     3506      -1,    67,    -1,    69,    -1,    71,    72,    -1,    74,    75,
     3507      76,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    85,
     3508      86,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3509      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3510      -1,    -1,    -1,    -1,    -1,   111,    -1,   113,    -1,    -1,
     3511      -1,    -1,    -1,   119,   120,     3,     4,     5,     6,     7,
     3512       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     3513      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     3514      -1,    -1,    30,    31,    32,    33,    -1,    -1,    36,    -1,
     3515      -1,    39,    40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3516      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3517      -1,    -1,    -1,    -1,    -1,    -1,    64,    -1,    -1,    67,
     3518      -1,    69,    -1,    71,    72,    -1,    74,    75,    76,    -1,
     3519      -1,    -1,    -1,    -1,    -1,    -1,    -1,    85,    86,    -1,
     3520      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3521      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3522      -1,    -1,    -1,   111,    -1,   113,    -1,    -1,    -1,   117,
     3523      -1,   119,   120,     3,     4,     5,     6,     7,     8,     9,
     3524      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3525      20,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
     3526      30,    31,    32,    33,    -1,    -1,    36,    -1,    -1,    39,
     3527      40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3528      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3529      -1,    -1,    -1,    -1,    64,    -1,    -1,    67,    -1,    69,
     3530      -1,    71,    72,    -1,    74,    75,    76,    -1,    -1,    -1,
     3531      -1,    -1,    -1,    -1,    -1,    85,    86,    -1,    -1,    -1,
     3532      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3533      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3534      -1,   111,    -1,   113,    -1,    -1,    -1,    -1,    -1,   119,
     3535     120,     3,     4,     5,     6,     7,     8,     9,    10,    11,
     3536      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     3537      22,    23,    24,    25,    26,    27,    28,    -1,    30,    31,
     3538      32,    33,    -1,    -1,    36,    -1,    -1,    39,    -1,    -1,
     3539      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3540      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3541      -1,    -1,    -1,    -1,    -1,    67,    -1,    69,    -1,    71,
     3542      -1,    -1,    74,    75,    -1,    -1,    78,     3,     4,     5,
     3543       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     3544      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3545      26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,
     3546      -1,   113,    -1,    39,    -1,    -1,    -1,   119,   120,    -1,
     3547      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3548      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3549      -1,    67,    -1,    69,    -1,    71,    -1,    -1,    74,    75,
     3550       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
     3551      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     3552      24,    25,    26,    27,    -1,    -1,    30,    31,    32,    -1,
     3553      -1,    -1,    -1,    -1,    -1,    39,    -1,   113,    -1,    -1,
     3554      -1,    -1,    -1,   119,   120,    -1,    -1,    -1,    -1,    -1,
     3555      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3556      -1,    -1,    -1,    67,    -1,    69,    -1,    71,    72,    -1,
     3557      74,    75,    76,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3558      -1,    85,    86,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3559      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3560      -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,   113,
     3561      -1,    -1,    -1,    -1,    -1,   119,   120,     4,     5,     6,
    24053562       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    24063563      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    2407       27,     0,     0,    28,    29,    30,     0,     0,     0,     0,
    2408      283,   284,    33,   285,     0,     0,     0,     0,     0,     0,
    2409        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2410        0,     0,     0,     0,     0,     0,     0,     0,     0,   286,
    2411       36,     0,    37,     0,    38,   287,     0,    40,    41,   288,
    2412        0,   507,   289,   290,   291,   292,   293,   294,    43,    44,
    2413        0,   295,   296,     0,     0,     0,     0,     0,   507,     0,
    2414        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2415        0,     0,     0,     0,   297,     0,   343,     0,     0,     0,
    2416        0,   750,   344,    48,   299,   300,   301,   302,     2,   207,
     3564      27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,
     3565      -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3566      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3567      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3568      67,    -1,    69,    -1,    71,    -1,    -1,    74,    75,     4,
     3569       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     3570      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3571      25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,
     3572      -1,    -1,    -1,    -1,    39,   112,   113,    -1,    -1,    -1,
     3573      -1,    -1,   119,   120,    -1,    -1,    -1,    -1,    -1,    -1,
     3574      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3575      -1,    -1,    67,    -1,    69,    -1,    71,    -1,    -1,    74,
     3576      75,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3577      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3578      -1,    -1,    -1,    98,    -1,    -1,    -1,    -1,    -1,    -1,
     3579      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   113,    -1,
     3580      -1,    -1,    -1,    -1,   119,   120,     4,     5,     6,     7,
     3581       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     3582      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     3583      -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,    -1,
     3584      -1,    39,    -1,    -1,    -1,    10,    11,    12,    13,    14,
     3585      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3586      25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    67,
     3587      -1,    69,    -1,    71,    39,    40,    74,    75,    -1,    -1,
     3588      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3589      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3590      98,    -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    74,
     3591      75,    -1,    -1,    -1,    -1,   113,    -1,    -1,    -1,    -1,
     3592      -1,   119,   120,     4,     5,     6,     7,     8,     9,    10,
     3593      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3594      21,    22,    23,    24,    25,    26,    27,    -1,   113,    30,
     3595      31,    32,   117,    -1,   119,   120,    -1,    -1,    39,    -1,
     3596      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3597      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3598      -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    69,    -1,
     3599      71,    -1,    -1,    74,    75,     4,     5,     6,     7,     8,
     3600       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3601      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
     3602      -1,    30,    31,    32,    -1,    -1,    -1,    -1,    -1,    -1,
     3603      39,    -1,   113,    -1,    -1,    -1,    -1,    -1,   119,   120,
     3604      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3605      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,
     3606      69,    -1,    71,    -1,    -1,    74,    75,     4,     5,     6,
     3607       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     3608      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3609      27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,
     3610      -1,    -1,    39,    -1,   113,    -1,    -1,    -1,    -1,    -1,
     3611     119,   120,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3612      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3613      67,    -1,    69,    -1,    71,    -1,    -1,    74,    75,    10,
     3614      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3615      21,    22,    23,    24,    25,    26,    27,    -1,    -1,    30,
     3616      31,    32,    -1,    -1,    -1,    -1,    37,    38,    39,    40,
     3617      -1,    -1,    -1,    -1,    -1,    -1,   113,    -1,    -1,    -1,
     3618      -1,    -1,   119,   120,    -1,    -1,    -1,    -1,    -1,    -1,
     3619      -1,    -1,    -1,    -1,    -1,    66,    67,    -1,    -1,    -1,
     3620      -1,    72,    -1,    74,    75,    76,    -1,    -1,    79,    80,
     3621      81,    82,    83,    84,    85,    86,    -1,    88,    89,    -1,
     3622      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3623      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3624     111,    -1,   113,    -1,    -1,   116,    -1,    -1,   119,   120,
     3625     121,   122,   123,   124,    10,    11,    12,    13,    14,    15,
     3626      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3627      26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,
     3628      -1,    37,    38,    39,    40,    10,    11,    12,    13,    14,
     3629      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3630      25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,
     3631      66,    67,    -1,    -1,    39,    -1,    72,    -1,    74,    75,
     3632      76,    -1,    -1,    79,    80,    81,    82,    83,    84,    85,
     3633      86,    -1,    88,    89,    -1,    -1,    -1,    -1,    -1,    -1,
     3634      -1,    -1,    67,    -1,    -1,    -1,    -1,    72,    -1,    74,
     3635      75,    -1,    -1,    -1,    -1,   111,   112,   113,    -1,    -1,
     3636      85,    86,    -1,   119,   120,   121,   122,   123,   124,    10,
     3637      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3638      21,    22,    23,    24,    25,    26,    27,    -1,   113,    30,
     3639      31,    32,    -1,    -1,   119,   120,    37,    38,    39,    40,
     3640      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3641      20,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
     3642      30,    31,    32,    -1,    -1,    66,    67,    -1,    -1,    39,
     3643      40,    72,    -1,    74,    75,    76,    -1,    -1,    79,    80,
     3644      81,    82,    83,    84,    85,    86,    -1,    88,    89,    -1,
     3645      -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,
     3646      -1,    -1,    -1,    -1,    74,    75,    -1,    -1,    -1,    -1,
     3647     111,    -1,   113,    -1,    -1,    -1,    -1,    -1,   119,   120,
     3648     121,   122,   123,   124,    10,    11,    12,    13,    14,    15,
     3649      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3650      26,    27,    -1,   113,    30,    31,    32,   117,    -1,   119,
     3651     120,    37,    38,    39,    40,    10,    11,    12,    13,    14,
     3652      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3653      25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,
     3654      66,    67,    -1,    -1,    39,    40,    72,    -1,    74,    75,
     3655      76,    -1,    -1,    79,    80,    81,    82,    83,    84,    85,
     3656      86,    -1,    88,    89,    -1,    -1,    -1,    -1,    -1,    -1,
     3657      -1,    -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    74,
     3658      75,    -1,    -1,    -1,    -1,   111,    -1,   113,    -1,    -1,
     3659      -1,    -1,    -1,   119,   120,   121,   122,   123,   124,    10,
     3660      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3661      21,    22,    23,    24,    25,    26,    27,    -1,   113,    30,
     3662      31,    32,   117,    -1,   119,   120,    37,    38,    39,    40,
     3663      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3664      20,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
     3665      30,    31,    32,    -1,    -1,    66,    67,    -1,    -1,    39,
     3666      -1,    72,    -1,    74,    75,    76,    -1,    -1,    79,    80,
     3667      81,    82,    83,    84,    85,    86,    -1,    88,    89,    -1,
     3668      -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,
     3669      -1,    -1,    72,    -1,    74,    75,    76,    -1,    -1,    -1,
     3670     111,    -1,   113,    -1,    -1,    85,    86,    -1,   119,   120,
     3671     121,   122,   123,   124,    -1,    -1,    -1,    -1,    -1,    -1,
     3672      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3673      -1,   111,    -1,   113,    -1,    -1,    -1,    -1,    -1,   119,
     3674     120,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3675      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
     3676      -1,    30,    31,    32,    -1,    -1,    -1,    -1,    -1,    -1,
     3677      39,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3678      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
     3679      -1,    30,    31,    32,    -1,    -1,    -1,    -1,    67,    -1,
     3680      39,    -1,    -1,    72,    -1,    74,    75,    76,    -1,    -1,
     3681      -1,    -1,    -1,    -1,    -1,    -1,    85,    86,    -1,    -1,
     3682      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,
     3683      -1,    -1,    -1,    -1,    -1,    74,    75,    -1,    -1,    -1,
     3684      -1,    -1,   111,    -1,   113,    -1,    -1,    -1,    -1,    -1,
     3685     119,   120,    -1,    -1,    -1,    10,    11,    12,    13,    14,
     3686      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3687      25,    26,    27,    -1,   113,    30,    31,    32,    -1,    -1,
     3688     119,   120,    -1,    -1,    39,    10,    11,    12,    13,    14,
     3689      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3690      25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,
     3691      -1,    -1,    67,    -1,    39,    -1,    -1,    -1,    -1,    74,
     3692      75,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3693      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3694      -1,    -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    74,
     3695      75,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   113,    -1,
     3696      -1,    -1,    -1,    -1,   119,   120,    -1,    -1,    -1,    10,
     3697      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3698      21,    22,    23,    24,    25,    26,    27,    -1,   113,    30,
     3699      31,    32,    -1,    -1,   119,   120,    -1,    -1,    39,    10,
     3700      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3701      21,    22,    23,    24,    25,    26,    27,    -1,    -1,    30,
     3702      31,    32,    -1,    -1,    -1,    -1,    67,    -1,    39,    -1,
     3703      -1,    -1,    -1,    74,    75,    -1,    -1,    -1,    -1,    -1,
     3704      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3705      -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,
     3706      -1,    -1,    -1,    74,    75,    -1,    -1,    -1,    -1,    -1,
     3707      -1,    -1,   113,    -1,    -1,    -1,    -1,    -1,   119,   120,
     3708      -1,    -1,    -1,    10,    11,    12,    13,    14,    15,    16,
     3709      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3710      27,    -1,   113,    30,    31,    32,    -1,    -1,   119,   120,
     3711      -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3712      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3713      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3714      67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75,    -1,
     3715      -1,    -1,    37,    38,    -1,    40,    41,    -1,    43,    -1,
     3716      -1,    46,    47,    48,    49,    50,    51,    52,    53,    -1,
     3717      -1,    56,    57,    -1,    -1,    -1,    61,    62,    -1,    64,
     3718      -1,    66,    -1,    -1,    -1,    -1,   113,    72,    -1,    -1,
     3719      -1,    76,   119,   120,    79,    80,    81,    82,    83,    84,
     3720      85,    86,    -1,    88,    89,    -1,    -1,    -1,    -1,    -1,
     3721      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3722      -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,   113,    -1,
     3723      -1,   116,    -1,    -1,   119,   120,   121,   122,   123,   124,
     3724      -1,    -1,    37,    38,   129,    40,    41,    -1,    43,   134,
     3725      -1,    46,    47,    48,    49,    50,    51,    52,    53,    -1,
     3726      -1,    -1,    57,    -1,    -1,    -1,    61,    62,    -1,    64,
     3727      -1,    66,    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,
     3728      -1,    76,    -1,    -1,    79,    80,    81,    82,    83,    84,
     3729      85,    86,    -1,    88,    89,    -1,    -1,    -1,    -1,    -1,
     3730      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3731      -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,   113,    -1,
     3732      -1,   116,    -1,    -1,   119,   120,   121,   122,   123,   124,
     3733      -1,    -1,    -1,    -1,   129,    -1,    -1,    -1,    -1,   134,
    24173734       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    24183735      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2419       24,    25,    26,    27,     0,     0,    28,    29,    30,     0,
    2420        0,     0,     0,   283,   284,    33,   285,     0,     0,     0,
    2421      507,   507,     0,     0,     0,     0,     0,     0,     0,     0,
    2422        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2423        0,     0,   286,    36,     0,    37,     0,    38,   287,     0,
    2424       40,    41,   288,     0,     0,   289,   290,   291,   292,   293,
    2425      294,    43,    44,     0,   295,   296,     0,     0,     0,     0,
    2426        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2427        0,     0,     0,     0,     0,     0,     0,   297,     0,   343,
    2428        0,     0,     0,     0,   750,    47,    48,   299,   300,   301,
    2429      302,     2,   207,     4,     5,     6,     7,     8,     9,    10,
    2430       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2431       21,    22,    23,    24,    25,    26,    27,     0,     0,    28,
    2432       29,    30,     0,     0,     0,     0,   283,   284,    33,   285,
    2433        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2434        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2435        0,     0,     0,     0,     0,   286,    36,     0,    37,     0,
    2436       38,   287,     0,    40,    41,   288,     0,     0,   289,   290,
    2437      291,   292,   293,   294,    43,    44,     0,   295,   296,     0,
    2438        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2439        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2440      297,     0,   343,     0,     0,     0,     0,     0,   344,    48,
    2441      299,   300,   301,   302,     2,   207,     4,     5,     6,     7,
    2442        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2443       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    2444        0,     0,    28,    29,    30,     0,     0,     0,     0,   283,
    2445      284,    33,   285,     0,     0,     0,     0,     0,     0,     0,
    2446        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2447        0,     0,     0,     0,     0,     0,     0,     0,   286,    36,
    2448        0,    37,     0,    38,   287,     0,   208,    41,   288,     0,
    2449        0,   289,   290,   291,   292,   293,   294,    43,    44,     0,
    2450      295,   296,     0,     0,     0,     0,     0,     0,     0,     0,
    2451        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2452        0,     0,     0,   297,     0,   981,     0,     0,     0,     0,
    2453        0,   982,    48,   299,   300,   301,   302,     2,   207,     4,
     3736      24,    25,    26,    27,    -1,    -1,    30,    31,    32,    -1,
     3737      -1,    -1,    -1,    -1,    -1,    39,    -1,    37,    38,    -1,
     3738      40,    41,    -1,    43,    44,    45,    46,    47,    48,    49,
     3739      50,    51,    52,    53,    -1,    -1,    56,    57,    -1,    -1,
     3740      -1,    61,    62,    67,    64,    69,    66,    71,    -1,    -1,
     3741      74,    75,    72,    -1,    -1,    -1,    76,    -1,    -1,    79,
     3742      80,    81,    82,    83,    84,    85,    86,    -1,    88,    89,
     3743      -1,    -1,    -1,    -1,    98,    -1,    -1,    -1,    -1,    -1,
     3744      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3745      -1,   111,    -1,   113,    -1,    -1,   116,    -1,    -1,   119,
     3746     120,   121,   122,   123,   124,    -1,    -1,    37,    38,   129,
     3747      40,    41,    -1,    43,    44,    45,    46,    47,    48,    49,
     3748      50,    51,    52,    53,    -1,    -1,    -1,    57,    -1,    -1,
     3749      -1,    61,    62,    -1,    64,    -1,    66,    -1,    -1,    -1,
     3750      -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,    79,
     3751      80,    81,    82,    83,    84,    85,    86,    -1,    88,    89,
     3752      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3753      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3754      -1,   111,    -1,   113,    -1,    -1,   116,    -1,    -1,   119,
     3755     120,   121,   122,   123,   124,    -1,    -1,    37,    38,   129,
     3756      40,    41,    -1,    43,    -1,    -1,    46,    47,    48,    49,
     3757      50,    51,    52,    53,    -1,    -1,    -1,    57,    -1,    -1,
     3758      -1,    61,    62,    -1,    64,    -1,    66,    -1,    -1,    -1,
     3759      -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,    79,
     3760      80,    81,    82,    83,    84,    85,    86,    -1,    88,    89,
     3761      -1,    -1,    -1,    -1,    -1,    -1,    37,    38,    -1,    40,
     3762      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3763      -1,   111,    -1,   113,    -1,    -1,   116,    -1,    -1,   119,
     3764     120,   121,   122,   123,   124,    66,    -1,    -1,    -1,   129,
     3765      -1,    72,    -1,    74,    75,    76,    -1,    -1,    79,    80,
     3766      81,    82,    83,    84,    85,    86,    -1,    88,    89,    -1,
     3767      -1,    -1,    -1,    -1,    -1,    37,    38,    -1,    40,    -1,
     3768      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3769     111,    -1,   113,    -1,   115,   116,    -1,    -1,   119,   120,
     3770     121,   122,   123,   124,    66,    -1,    -1,    -1,    -1,    -1,
     3771      72,    -1,    -1,    -1,    76,    -1,    -1,    79,    80,    81,
     3772      82,    83,    84,    85,    86,    -1,    88,    89,    -1,    -1,
     3773      -1,    -1,    -1,    -1,    37,    38,    -1,    40,    -1,    -1,
     3774      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,
     3775      -1,   113,    -1,    -1,   116,    -1,    -1,   119,   120,   121,
     3776     122,   123,   124,    66,    -1,    -1,    -1,    -1,    -1,    72,
     3777      -1,    -1,    -1,    76,    -1,    -1,    79,    80,    81,    82,
     3778      83,    84,    85,    86,    -1,    88,    89,    -1,    -1,    -1,
     3779      -1,    -1,    -1,    37,    38,    -1,    40,    -1,    -1,    -1,
     3780      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,
     3781     113,    -1,    -1,    -1,    -1,   118,   119,   120,   121,   122,
     3782     123,   124,    66,    -1,    -1,    -1,    -1,    -1,    72,    -1,
     3783      -1,    -1,    76,    -1,    -1,    79,    80,    81,    82,    83,
     3784      84,    85,    86,    -1,    88,    89,    -1,    -1,    -1,    -1,
     3785      -1,    -1,    37,    38,    -1,    40,    -1,    -1,    -1,    -1,
     3786      -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,   113,
     3787      -1,    -1,   116,    -1,    -1,   119,   120,   121,   122,   123,
     3788     124,    66,    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,
     3789      -1,    76,    -1,    -1,    79,    80,    81,    82,    83,    84,
     3790      85,    86,    -1,    88,    89,    -1,    -1,    -1,    -1,    -1,
     3791      -1,    37,    38,    -1,    40,    -1,    -1,    -1,    -1,    -1,
     3792      -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,   113,    -1,
     3793      -1,    -1,    -1,    -1,   119,   120,   121,   122,   123,   124,
     3794      66,    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,
     3795      76,    -1,    -1,    79,    80,    81,    82,    83,    84,    85,
     3796      86,    -1,    88,    89,    -1,    -1,    -1,    -1,    -1,    -1,
     3797      37,    38,    -1,    40,    -1,    -1,    -1,    -1,    -1,    -1,
     3798      -1,    -1,    -1,    -1,    -1,   111,    -1,   113,    -1,    -1,
     3799      -1,    -1,    -1,   119,   120,   121,   122,   123,   124,    66,
     3800      -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    76,
     3801      -1,    -1,    79,    80,    81,    82,    83,    84,    85,    86,
     3802      -1,    88,    89,    -1,    -1,    -1,    -1,    -1,    -1,    37,
     3803      38,    -1,    40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3804      -1,    -1,    -1,    -1,   111,    -1,   113,    -1,    -1,    -1,
     3805      -1,    -1,   119,   120,   121,   122,   123,   124,    66,    -1,
     3806      -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,
     3807      -1,    79,    80,    81,    82,    83,    84,    85,    86,    -1,
     3808      88,    89,    -1,    -1,    -1,    -1,    -1,    -1,    37,    38,
     3809      -1,    40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3810      -1,    -1,    -1,   111,    -1,   113,    -1,    -1,    -1,    -1,
     3811      -1,   119,   120,   121,   122,   123,   124,    66,    -1,    -1,
     3812      -1,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,
     3813      79,    80,    81,    82,    83,    84,    85,    86,    -1,    88,
     3814      89,    -1,    -1,    -1,    -1,    -1,    -1,    37,    38,    -1,
     3815      40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3816      -1,    -1,   111,    -1,   113,    -1,    -1,    -1,    -1,    -1,
     3817     119,   120,   121,   122,   123,   124,    66,    -1,    -1,    -1,
     3818      -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,    79,
     3819      80,    81,    82,    83,    84,    85,    86,    -1,    88,    89,
     3820      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3821      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3822      -1,   111,    -1,   113,    -1,    -1,    -1,    -1,    -1,   119,
     3823     120,   121,   122,   123,   124,     4,     5,     6,     7,     8,
     3824       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3825      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
     3826      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3827      39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3828      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3829      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,
     3830      69,    -1,    71,    72,    -1,    74,    75,    76,    -1,    -1,
     3831      -1,    -1,    -1,    -1,    -1,    -1,    85,    86,     3,     4,
    24543832       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    24553833      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2456       25,    26,    27,     0,     0,    28,    29,    30,     0,     0,
    2457        0,     0,   283,   284,    33,   285,     0,     0,     0,     0,
    2458        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2459        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2460        0,   286,    36,     0,    37,     0,    38,   287,     0,   208,
    2461       41,   288,     0,     0,   289,   290,   291,   292,   293,   294,
    2462       43,    44,     0,   295,   296,     0,     0,     0,     0,     0,
    2463        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2464        0,     0,     0,     0,     0,     0,   297,     0,   378,     0,
    2465        0,     0,     0,     0,    47,    48,   299,   300,   301,   302,
    2466        1,     2,     3,     4,     5,     6,     7,     8,     9,    10,
    2467       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2468       21,    22,    23,    24,    25,    26,    27,     0,     0,    28,
    2469       29,    30,    31,     0,     0,    32,     0,     0,    33,    34,
    2470        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2471        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2472        0,     0,     0,    35,     0,     0,    36,     0,    37,     0,
    2473       38,    39,     0,    40,    41,    42,     0,     0,     0,     0,
    2474        0,     0,     0,     0,    43,    44,     0,     0,     0,     0,
    2475        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2476        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2477       45,     0,    46,     0,     0,     0,     0,     0,    47,    48,
    2478      206,     2,   207,     4,     5,     6,     7,     8,     9,    10,
    2479       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2480       21,    22,    23,    24,    25,    26,    27,     0,     0,    28,
    2481       29,    30,     0,     0,     0,     0,     0,     0,    33,     0,
    2482        0,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2483       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    2484       27,     0,     0,    28,    29,    30,    36,     0,    37,     0,
    2485       38,    39,    33,   208,    41,    42,     0,     0,     0,     0,
    2486        0,     0,     0,     0,    43,    44,     0,     0,     0,     0,
    2487        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2488       36,     0,     0,     0,     0,     0,     0,    40,    41,     0,
    2489       45,     0,   209,     0,     0,     0,     0,     0,    47,    48,
    2490        1,     2,   207,     4,     5,     6,     7,     8,     9,    10,
    2491       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2492       21,    22,    23,    24,    25,    26,    27,  -298,     0,    28,
    2493       29,    30,    31,     0,     0,    32,     0,     0,    33,     0,
    2494        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2495        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2496        0,     0,     0,     0,     0,     0,    36,     0,    37,     0,
    2497       38,     0,     0,    40,    41,     0,     0,  -298,     1,     2,
    2498      207,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    2499       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2500       23,    24,    25,    26,    27,     0,     0,    28,    29,    30,
    2501       31,     0,    46,    32,     0,     0,    33,     0,    47,    48,
    2502        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2503        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2504        0,     0,     0,     0,    36,     0,    37,     0,    38,     0,
    2505        0,    40,    41,   206,     2,   207,     4,     5,     6,     7,
    2506        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2507       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    2508        0,     0,    28,    29,    30,     0,     0,     0,     0,     0,
    2509       46,    33,     0,     0,     0,     0,    47,    48,     0,  1143,
    2510        0,     0,     8,     9,    10,    11,    12,     0,     0,     0,
    2511        0,     0,     0,     0,     0,     0,     0,     0,     0,    36,
    2512        0,    37,     0,    38,     0,     0,   208,    41,     0,     0,
    2513        0,   283,   284,    33,   285,     0,     0,     0,     0,     0,
    2514        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2515        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2516      286,    36,     0,     0,     0,   209,   287,     0,     0,     0,
    2517      288,    47,    48,   289,   290,   291,   292,   293,   294,    43,
    2518       44,     0,   295,   296,     0,     0,     0,     0,     0,     0,
    2519        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2520        0,     0,     0,     0,     0,   297,     0,   378,     0,     0,
    2521        0,     0,     0,  1144,    48,   299,   300,   301,   302,     2,
    2522      207,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    2523       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2524       23,    24,    25,    26,    27,     0,     0,    28,    29,    30,
    2525        0,     0,     0,     0,     0,     0,    33,     0,     0,     8,
    2526        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2527       19,    20,    21,    22,    23,    24,    25,    26,    27,     0,
    2528        0,    28,    29,    30,    36,     0,    37,     0,    38,    39,
    2529       33,   208,    41,    42,     0,     0,     0,     0,     0,     0,
    2530        0,     0,    43,    44,     0,     0,     0,     0,     0,     0,
    2531        0,     0,     0,     0,     0,     0,     0,     0,    36,     0,
    2532        0,     0,     0,     0,     0,    40,    41,     0,    45,     0,
    2533      209,     0,     0,     0,     0,     0,    47,    48,     2,   207,
    2534        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    2535       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2536       24,    25,    26,    27,   258,     0,    28,    29,    30,     0,
    2537       47,    48,     0,     0,     0,    33,     0,     0,     0,     0,
    2538        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2539        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2540        0,     0,     0,    36,     0,    37,     0,    38,     0,     0,
    2541       40,    41,     0,     2,   207,     4,     5,     6,     7,     8,
    2542        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2543       19,    20,    21,    22,    23,    24,    25,    26,    27,     0,
    2544        0,    28,    29,    30,     0,     0,     0,     0,  -407,   670,
    2545       33,     0,     0,     0,     0,    47,    48,     0,     0,     0,
    2546        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2547        0,     0,     0,     0,     0,     0,     0,     0,    36,     0,
    2548       37,     0,    38,     0,     0,    40,    41,     0,     0,     0,
    2549        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2550        0,     0,     0,     0,     0,     0,     0,     0,     0,  1334,
    2551        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2552        0,     0,     0,     0,   670,     0,     0,     0,     0,     0,
    2553       47,    48,     2,   207,     4,     5,     6,     7,     8,     9,
    2554       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2555       20,    21,    22,    23,    24,    25,    26,    27,     0,     0,
    2556       28,    29,    30,     0,     0,     0,     0,     0,     0,    33,
    2557        0,     0,     8,     9,    10,    11,    12,    13,    14,    15,
    2558       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    2559       26,    27,     0,     0,    28,    29,    30,    36,     0,    37,
    2560        0,    38,     0,    33,    40,    41,     0,     0,     0,     0,
    2561        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2562        0,     0,     0,     0,     0,     0,     0,     0,  1336,     0,
    2563        0,    36,     0,     0,     0,     0,     0,     0,    40,    41,
    2564        0,     0,     0,   670,     0,     0,     0,     0,     0,    47,
    2565       48,     2,   207,     4,     5,     6,     7,     8,     9,    10,
    2566       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2567       21,    22,    23,    24,    25,    26,    27,    46,     0,    28,
    2568       29,    30,     0,    47,    48,     0,     0,     0,    33,     0,
    2569        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2570        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2571        0,     0,     0,     0,     0,     0,    36,     0,    37,     0,
    2572       38,     0,     0,   208,    41,     0,     2,   207,     4,     5,
    2573        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    2574       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    2575       26,    27,     0,     0,    28,    29,    30,     0,     0,     0,
    2576        0,     0,   271,    33,     0,     0,     0,     0,    47,    48,
    2577        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2578        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2579        0,    36,     0,    37,     0,    38,     0,     0,    40,    41,
    2580        0,     2,   207,     4,     5,     6,     7,     8,     9,    10,
    2581       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2582       21,    22,    23,    24,    25,    26,    27,     0,     0,    28,
    2583       29,    30,     0,     0,     0,     0,     0,   670,    33,     0,
    2584        0,     0,     0,    47,    48,     0,     0,     0,     0,     0,
    2585        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2586        0,     0,     0,     0,     0,     0,    36,     0,    37,     0,
    2587       38,     0,     0,   208,    41,     8,     9,    10,    11,    12,
    2588       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2589       23,    24,    25,    26,    27,     0,     0,    28,    29,    30,
    2590        0,     0,     0,     0,   283,   284,    33,   285,     0,     0,
    2591        0,     0,   209,     0,     0,     0,     0,     0,    47,    48,
    2592        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2593        0,     0,     0,   286,    36,     0,     0,     0,     0,   287,
    2594        0,    40,    41,   288,     0,     0,   289,   290,   291,   292,
    2595      293,   294,    43,    44,     0,   295,   296,     0,     0,     0,
    2596        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2597        0,     0,     0,     0,     0,     0,     0,     0,   297,     0,
    2598      515,     0,     0,   172,     0,     0,    47,    48,   299,   300,
    2599      301,   302,     8,     9,    10,    11,    12,    13,    14,    15,
    2600       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    2601       26,    27,     0,     0,    28,    29,    30,     0,     0,     0,
    2602        0,   283,   284,    33,   285,     0,     0,     0,     0,     0,
    2603        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2604        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2605      286,    36,     0,     0,     0,     0,   287,     0,    40,    41,
    2606      288,     0,     0,   289,   290,   291,   292,   293,   294,    43,
    2607       44,     0,   295,   296,     0,     0,     0,     0,     0,     0,
    2608        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2609        0,     0,     0,     0,     0,   297,   -40,   298,     0,     0,
    2610        0,     0,     0,    47,    48,   299,   300,   301,   302,     8,
    2611        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2612       19,    20,    21,    22,    23,    24,    25,    26,    27,     0,
    2613        0,    28,    29,    30,     0,     0,     0,     0,   283,   284,
    2614       33,   285,     0,     0,     0,     0,     0,     0,     0,     0,
    2615        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2616        0,     0,     0,     0,     0,     0,     0,   286,    36,     0,
    2617        0,     0,     0,   287,     0,    40,    41,   288,     0,     0,
    2618      289,   290,   291,   292,   293,   294,    43,    44,     0,   295,
    2619      296,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2620        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2621        0,     0,   297,     0,   298,     0,     0,     0,     0,     0,
    2622       47,    48,   299,   300,   301,   302,     8,     9,    10,    11,
    2623       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2624       22,    23,    24,    25,    26,    27,     0,     0,    28,    29,
    2625       30,     0,     0,     0,     0,   283,   284,    33,   285,     0,
    2626        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2627        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2628        0,     0,     0,     0,   286,    36,     0,     0,     0,     0,
    2629      287,     0,    40,    41,   288,     0,     0,   289,   290,   291,
    2630      292,   293,   294,    43,    44,     0,   295,   296,     0,     0,
    2631        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2632        0,     0,     0,     0,     0,     0,     0,     0,     0,   297,
    2633        0,   343,     0,     0,     0,     0,     0,    47,    48,   299,
    2634      300,   301,   302,     8,     9,    10,    11,    12,    13,    14,
    2635       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2636       25,    26,    27,     0,     0,    28,    29,    30,     0,     0,
    2637        0,     0,   283,   284,    33,   285,     0,     0,     0,     0,
    2638        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2639        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2640        0,   286,    36,     0,     0,     0,     0,   287,     0,    40,
    2641       41,   288,     0,     0,   289,   290,   291,   292,   293,   294,
    2642       43,    44,     0,   295,   296,     0,     0,     0,     0,     0,
    2643        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2644        0,     0,     0,     0,     0,     0,   297,     0,   378,     0,
    2645        0,     0,     0,     0,    47,    48,   299,   300,   301,   302,
    2646      465,     2,   207,     4,     5,     6,     7,     8,     9,    10,
    2647       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2648       21,    22,    23,    24,    25,    26,    27,     0,     0,    28,
    2649       29,    30,     0,     0,     0,     0,     0,     0,    33,     0,
    2650        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2651       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    2652        0,     0,    28,    29,    30,     0,    36,     0,    37,     0,
    2653       38,    33,     0,    40,    41,     0,     0,     0,     0,     0,
    2654        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2655        0,     0,     0,     0,     0,     0,     0,     0,     0,    36,
    2656        0,     0,     0,     0,   112,     0,    40,    41,     0,     0,
    2657        0,     0,     0,     0,     0,    -3,     0,    43,    44,     0,
    2658        0,     0,     0,     0,     8,     9,    10,    11,    12,    13,
    2659       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2660       24,    25,    26,    27,     0,    46,    28,    29,    30,     0,
    2661        0,    47,    48,     0,     0,    33,   677,     8,     9,    10,
    2662       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2663       21,    22,    23,    24,    25,    26,    27,     0,     0,    28,
    2664       29,    30,     0,    36,     0,     0,     0,     0,    33,   677,
    2665       40,    41,     0,     0,     0,     0,     0,     0,     0,     0,
    2666        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2667        0,     0,     0,     0,     0,     0,    36,     0,     0,     0,
    2668        0,     0,     0,    40,    41,     0,     0,     0,     0,   678,
    2669        0,     0,     0,   679,     0,    47,    48,     0,     0,     0,
    2670        0,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2671       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    2672       27,     0,   678,    28,    29,    30,  1072,     0,    47,    48,
    2673        0,     0,    33,   677,     8,     9,    10,    11,    12,    13,
    2674       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2675       24,    25,    26,    27,     0,     0,    28,    29,    30,     0,
    2676       36,     0,     0,     0,     0,    33,     0,    40,    41,     0,
    2677        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2678        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2679        0,     0,     0,    36,     0,     0,     0,     0,     0,     0,
    2680      208,    41,     0,     0,     0,     0,   678,     0,     0,     0,
    2681     1199,     0,    47,    48,     0,     0,     0,     0,     8,     9,
    2682       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2683       20,    21,    22,    23,    24,    25,    26,    27,     0,   271,
    2684       28,    29,    30,     0,     0,    47,    48,     0,     0,    33,
    2685        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2686       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    2687        0,     0,    28,    29,    30,     0,     0,    36,     0,     0,
    2688        0,    33,     0,     0,    40,    41,     0,     0,     0,     0,
    2689        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2690        0,     0,     0,     0,     0,     0,     0,     0,     0,    36,
    2691        0,     0,     0,     0,     0,     0,    40,    41,     0,     0,
    2692        0,     0,     0,   339,     0,     0,     0,     0,     0,    47,
    2693       48,     0,     0,     0,     8,     9,    10,    11,    12,    13,
    2694       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2695       24,    25,    26,    27,     0,   678,    28,    29,    30,     0,
    2696        0,    47,    48,     0,     0,    33,     0,     0,     0,     0,
    2697        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2698        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2699        0,     0,     0,    36,     0,     0,     0,     0,     0,     0,
    2700       40,    41,     0,     2,   207,     4,     5,     6,     7,     8,
    2701        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2702       19,    20,    21,    22,    23,    24,    25,    26,    27,     0,
    2703        0,    28,    29,    30,     0,     0,     0,     0,     0,   670,
    2704       33,     0,     0,     0,     0,    47,    48,     0,     0,     0,
    2705        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2706        0,     0,     0,     0,     0,     0,     0,     0,    36,     0,
    2707       37,     0,    38,     0,     0,    40,    41,   283,   284,     0,
    2708      285,  1023,     0,  1024,     0,     0,  1025,  1026,  1027,  1028,
    2709     1029,  1030,  1031,  1032,     0,     0,  1510,  1033,     0,     0,
    2710        0,  1034,  1035,     0,    35,     0,   286,     0,     0,     0,
    2711        0,     0,  1036,  -420,     0,     0,   288,     0,     0,   289,
    2712      290,   291,   292,   293,   294,    43,    44,     0,   295,   296,
    2713        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2714        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2715        0,   297,     0,   378,     0,     0,   172,     0,     0,    47,
    2716       48,   299,   300,   301,   302,     0,     0,   283,   284,  1037,
    2717      285,  1023,     0,  1024,  -134,     0,  1025,  1026,  1027,  1028,
    2718     1029,  1030,  1031,  1032,     0,     0,     0,  1033,     0,     0,
    2719        0,  1034,  1035,     0,    35,     0,   286,     0,     0,     0,
    2720        0,     0,  1036,     0,     0,     0,   288,     0,     0,   289,
    2721      290,   291,   292,   293,   294,    43,    44,     0,   295,   296,
    2722        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2723        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2724        0,   297,     0,   378,     0,     0,   172,     0,     0,    47,
    2725       48,   299,   300,   301,   302,     0,     0,     0,     0,  1037,
    2726        0,     0,     0,     0,  -134,     2,   207,     4,     5,     6,
    2727        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2728       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    2729       27,     0,     0,    28,    29,    30,     0,     0,     0,     0,
    2730        0,     0,    33,     0,   283,   284,     0,   285,  1023,     0,
    2731     1024,  1382,  1383,  1025,  1026,  1027,  1028,  1029,  1030,  1031,
    2732     1032,     0,     0,  1510,  1033,     0,     0,     0,  1034,  1035,
    2733       36,    35,    37,   286,    38,     0,     0,    40,    41,  1036,
    2734        0,     0,     0,   288,     0,     0,   289,   290,   291,   292,
    2735      293,   294,    43,    44,     0,   295,   296,     0,     0,     0,
    2736        0,  1293,     0,     0,     0,     0,     0,     0,     0,     0,
    2737        0,     0,     0,     0,     0,     0,     0,     0,   297,     0,
    2738      378,     0,     0,   172,     0,     0,    47,    48,   299,   300,
    2739      301,   302,     0,     0,   283,   284,  1037,   285,  1023,     0,
    2740     1024,  1382,  1383,  1025,  1026,  1027,  1028,  1029,  1030,  1031,
    2741     1032,     0,     0,     0,  1033,     0,     0,     0,  1034,  1035,
    2742        0,    35,     0,   286,     0,     0,     0,     0,     0,  1036,
    2743        0,     0,     0,   288,     0,     0,   289,   290,   291,   292,
    2744      293,   294,    43,    44,     0,   295,   296,     0,     0,     0,
    2745        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2746        0,     0,     0,     0,     0,     0,     0,     0,   297,     0,
    2747      378,     0,     0,   172,     0,     0,    47,    48,   299,   300,
    2748      301,   302,     0,     0,   283,   284,  1037,   285,  1023,     0,
    2749     1024,     0,     0,  1025,  1026,  1027,  1028,  1029,  1030,  1031,
    2750     1032,     0,     0,     0,  1033,     0,     0,     0,  1034,  1035,
    2751        0,    35,     0,   286,     0,     0,     0,     0,     0,  1036,
    2752        0,     0,     0,   288,     0,     0,   289,   290,   291,   292,
    2753      293,   294,    43,    44,     0,   295,   296,     0,     0,     0,
    2754        0,     0,     0,   283,   284,     0,   285,     0,     0,     0,
    2755        0,     0,     0,     0,     0,     0,     0,     0,   297,     0,
    2756      378,     0,     0,   172,     0,     0,    47,    48,   299,   300,
    2757      301,   302,   286,     0,     0,     0,  1037,     0,   633,     0,
    2758      141,   142,   288,     0,     0,   289,   290,   291,   292,   293,
    2759      294,    43,    44,     0,   295,   296,     0,     0,     0,     0,
    2760        0,     0,   283,   284,     0,   285,     0,     0,     0,     0,
    2761        0,     0,     0,     0,     0,     0,     0,   297,     0,   634,
    2762        0,   635,   379,     0,     0,    47,    48,   299,   300,   301,
    2763      302,   286,     0,     0,     0,     0,     0,   287,     0,     0,
    2764        0,   288,     0,     0,   289,   290,   291,   292,   293,   294,
    2765       43,    44,     0,   295,   296,     0,     0,     0,     0,     0,
    2766        0,   283,   284,     0,   285,     0,     0,     0,     0,     0,
    2767        0,     0,     0,     0,     0,     0,   297,     0,   378,     0,
    2768        0,   379,     0,     0,    47,    48,   299,   300,   301,   302,
    2769      286,     0,     0,     0,     0,     0,   287,     0,     0,     0,
    2770      288,     0,     0,   289,   290,   291,   292,   293,   294,    43,
    2771       44,     0,   295,   296,     0,     0,     0,     0,     0,     0,
    2772      283,   284,     0,   285,     0,     0,     0,     0,     0,     0,
    2773        0,     0,     0,     0,     0,   297,     0,   378,     0,     0,
    2774        0,     0,   750,    47,    48,   299,   300,   301,   302,   286,
    2775        0,     0,     0,     0,     0,   287,     0,     0,     0,   288,
    2776        0,     0,   289,   290,   291,   292,   293,   294,    43,    44,
    2777        0,   295,   296,     0,     0,     0,     0,     0,     0,   283,
    2778      284,     0,   285,     0,     0,     0,     0,     0,     0,     0,
    2779        0,     0,     0,     0,   297,     0,   378,     0,     0,   958,
    2780        0,     0,    47,    48,   299,   300,   301,   302,   286,     0,
    2781        0,     0,     0,     0,   287,     0,     0,     0,   288,     0,
    2782        0,   289,   290,   291,   292,   293,   294,    43,    44,     0,
    2783      295,   296,     0,     0,     0,     0,     0,     0,   283,   284,
    2784        0,   285,     0,     0,     0,     0,     0,     0,     0,     0,
    2785        0,     0,     0,   297,     0,   378,     0,     0,     0,     0,
    2786        0,    47,    48,   299,   300,   301,   302,   286,     0,     0,
    2787        0,     0,     0,   287,     0,     0,     0,   288,     0,     0,
    2788      289,   290,   291,   292,   293,   294,    43,    44,     0,   295,
    2789      296,     0,     0,     0,     0,     0,     0,   283,   284,     0,
    2790      285,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2791        0,     0,   504,     0,   378,     0,     0,     0,     0,     0,
    2792       47,    48,   299,   300,   301,   302,   286,     0,     0,     0,
    2793        0,     0,   287,     0,     0,     0,   288,     0,     0,   289,
    2794      290,   291,   292,   293,   294,    43,    44,     0,   295,   296,
    2795        0,     0,     0,     0,     0,     0,   283,   284,     0,   285,
    2796        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2797        0,   509,     0,   378,     0,     0,     0,     0,     0,    47,
    2798       48,   299,   300,   301,   302,   286,     0,     0,     0,     0,
    2799        0,   287,     0,     0,     0,   288,     0,     0,   289,   290,
    2800      291,   292,   293,   294,    43,    44,     0,   295,   296,     0,
    2801        0,     0,     0,     0,     0,   283,   284,     0,   285,     0,
    2802        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2803      512,     0,   378,     0,     0,     0,     0,     0,    47,    48,
    2804      299,   300,   301,   302,   286,     0,     0,     0,     0,     0,
    2805      287,     0,     0,     0,   288,     0,     0,   289,   290,   291,
    2806      292,   293,   294,    43,    44,     0,   295,   296,     0,     0,
    2807        0,     0,     0,     0,   283,   284,     0,   285,     0,     0,
    2808        0,     0,     0,     0,     0,     0,     0,     0,     0,   297,
    2809        0,   378,     0,     0,     0,     0,     0,   701,    48,   299,
    2810      300,   301,   302,   286,     0,     0,     0,     0,     0,   287,
    2811        0,     0,     0,   288,     0,     0,   289,   290,   291,   292,
    2812      293,   294,    43,    44,     0,   295,   296,     0,     0,     0,
    2813        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2814        0,     0,     0,     0,     0,     0,     0,     0,   297,     0,
    2815      378,     0,     0,     0,     0,     0,   344,    48,   299,   300,
    2816      301,   302,     2,   207,     4,     5,     6,     7,     8,     9,
    2817       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2818       20,    21,    22,    23,    24,    25,    26,    27,     0,     0,
    2819        0,     0,     0,     0,     0,     0,     0,     0,     0,    33,
    2820        0,     0,     8,     9,    10,    11,    12,    13,    14,    15,
    2821       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    2822       26,    27,     0,     0,    28,    29,    30,    36,     0,    37,
    2823        0,    38,    39,    33,   175,   176,    42,     0,     0,     0,
    2824        0,     0,     0,     0,     0,    43,    44,     0,     0,     0,
    2825        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2826        0,    36,     0,     0,     0,     0,   112,     0,    40,    41,
    2827        0,     0,     0,     0,     0,     0,     0,     0,     0,    43,
    2828       44,   206,     2,   207,     4,     5,     6,     7,     8,     9,
    2829       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2830       20,    21,    22,    23,    24,    25,    26,    27,     0,     0,
    2831       28,    29,    30,     0,     0,     0,     0,     0,     0,    33,
    2832        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2833        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2834        0,     0,     0,     0,     0,     0,     0,    36,     0,    37,
    2835        0,    38,     0,     0,   208,    41,   465,     2,   207,     4,
    2836        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    2837       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2838       25,    26,    27,     0,     0,    28,    29,    30,     0,     0,
    2839        0,     0,     0,     0,    33,     0,     0,     0,     0,     0,
    2840        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2841        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2842        0,     0,    36,     0,    37,     0,    38,     0,     0,    40,
    2843       41,     2,   207,     4,     5,     6,     7,     8,     9,    10,
    2844       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2845       21,    22,    23,    24,    25,    26,    27,     0,     0,    28,
    2846       29,    30,     0,     0,     0,     0,     0,     0,    33,     0,
    2847        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2848        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2849        0,     0,     0,     0,     0,     0,    36,     0,    37,     0,
    2850       38,     0,     0,   208,    41,     8,     9,    10,    11,    12,
    2851       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2852       23,    24,    25,    26,    27,     0,     0,    28,    29,    30,
    2853      483,   484,   485,     0,     0,     0,    33,     8,     9,    10,
    2854       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2855       21,    22,    23,    24,    25,    26,    27,     0,     0,    28,
    2856       29,    30,     0,     0,    36,     0,     0,     0,    33,     0,
    2857        0,    40,    41,     0,     0,     0,     0,     0,     0,     0,
    2858        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2859        0,     0,     0,     0,     0,     0,    36,     0,     0,     0,
    2860        0,     0,     0,   208,    41
    2861 };
    2862 
    2863 #define yypact_value_is_default(yystate) \
    2864   ((yystate) == (-1267))
    2865 
    2866 #define yytable_value_is_error(yytable_value) \
    2867   YYID (0)
    2868 
    2869 static const yytype_int16 yycheck[] =
    2870 {
    2871        0,     1,   186,   186,   532,    45,    45,     0,   186,    45,
    2872        1,   519,     0,   186,   186,   240,   186,   205,   186,   742,
    2873      742,     0,   511,     0,   118,   742,   188,   490,   639,   595,
    2874      862,   494,  1022,   615,    34,   220,   349,     1,   597,   595,
    2875     1303,    34,   282,   349,   685,    45,    34,   169,   170,    45,
    2876      598,    51,   595,   727,   568,    34,   604,    34,    51,   425,
    2877      426,     0,   417,   480,  1005,    65,    74,    30,    68,    83,
    2878      297,    71,    65,   597,    66,    68,    34,    45,    71,    41,
    2879       71,   436,   266,   266,   187,   595,   113,    51,   266,   444,
    2880     1004,  1005,   595,   266,   266,    34,   266,   595,   266,   595,
    2881      262,   263,     0,     1,   688,    46,    47,   107,   202,   630,
    2882        0,  1112,    65,   107,    74,   115,    45,    80,   118,   119,
    2883        0,   113,   629,   630,   645,    41,   492,   108,   136,    68,
    2884      111,    41,    41,   257,   968,   364,    34,   599,   645,   368,
    2885     1403,   603,    41,   107,    34,   511,   186,   186,   148,   149,
    2886      186,   115,  1382,   115,    34,    99,   149,   157,   158,    51,
    2887       74,   161,   624,   157,   267,    45,   628,    89,   161,   892,
    2888      892,    51,   680,    71,    11,   892,   136,    41,   119,   345,
    2889      486,  1015,   703,   136,   148,    65,   186,   187,    68,   133,
    2890      186,    71,    59,   157,   187,   117,   703,   116,   425,   426,
    2891       83,   711,   202,   113,   113,   115,   115,   121,   711,   575,
    2892      210,   100,   629,   630,   113,   711,   115,   210,   186,     0,
    2893        1,  1487,   222,   115,   409,  1455,   266,   266,   645,   222,
    2894      266,  1232,   115,  1234,  1235,   801,   113,   126,   219,   113,
    2895      240,   108,   206,   663,   111,   801,   210,   888,  1514,   113,
    2896      862,   115,   252,    34,   813,   803,   148,   186,   801,   252,
    2897      260,   135,   502,  1204,   252,   265,   266,   267,   114,   149,
    2898      113,   785,   272,   252,   267,   252,   240,   504,   257,   187,
    2899     1270,   161,   509,   222,   597,   512,   703,    68,   134,   813,
    2900       71,   801,   273,   417,   252,  1034,  1035,   297,   801,   280,
    2901      911,   395,   405,   801,   114,   801,   186,   187,   272,   893,
    2902      310,   275,   436,   252,   480,   462,   118,  1258,   210,   674,
    2903      444,   738,    46,    47,   134,    53,   326,    46,    47,   423,
    2904      210,   331,   229,   297,    51,   429,   111,   120,   331,   566,
    2905      100,   341,   222,  1257,  1258,   345,   310,   341,   240,   349,
    2906      350,   248,   219,   919,   252,   939,   585,  1031,  1190,   267,
    2907      135,   781,   252,   919,   364,    74,   126,   257,   368,  1108,
    2908      114,   791,   252,   835,     3,   478,   919,   341,    87,    88,
    2909      272,   345,   802,     3,   365,   113,   266,  1437,   369,    74,
    2910      134,   120,    57,   120,   118,   395,   920,   626,   115,   118,
    2911      364,   983,    87,    88,   368,   405,   273,   136,   462,  1458,
    2912     1022,   350,   405,   280,    74,  1464,    76,    77,   310,   659,
    2913      113,   114,  1472,   423,  1474,   425,   426,    87,    88,   429,
    2914      115,   431,    94,    95,    99,  1484,  1426,  1378,   417,     0,
    2915     1489,   222,    74,  1433,   992,   993,   954,     0,    41,   615,
    2916      113,   331,   452,   345,   620,    87,    88,   436,   118,   120,
    2917      135,   425,   426,   925,  1378,   444,   929,   129,   130,   349,
    2918      470,   252,   116,   113,   891,   136,   120,   966,   478,  1313,
    2919      480,   348,   482,   115,   114,   478,   486,   649,   452,   482,
    2920      730,   114,   492,   210,   482,  1485,  1107,   405,   365,   120,
    2921      813,   465,   369,   482,   504,   482,   506,   813,   113,   509,
    2922      132,   511,   512,   135,  1098,   136,   663,   120,   640,   519,
    2923      113,   120,   115,   523,  1487,   405,   490,   417,   492,   194,
    2924      494,   134,   471,   425,   426,   134,  1370,  1371,   123,   124,
    2925      504,   120,   506,   482,  1507,   509,   436,   511,   512,   113,
    2926      674,  1514,   217,   647,   444,   272,  1080,   136,  1066,   113,
    2927      114,   115,   227,  1071,   115,   794,   117,   567,   568,   113,
    2928      478,   115,   738,  1157,  1158,   575,   700,   680,  1190,   113,
    2929      297,  1001,  1002,   134,   482,   585,   586,  1004,   120,   589,
    2930      480,   120,   482,   310,   120,   595,  1270,   597,   586,   862,
    2931      492,   120,   482,   113,   136,   115,   486,   136,   134,   663,
    2932       74,   575,    76,    77,    78,   615,   113,   136,   924,   511,
    2933      620,   585,   622,    87,    88,   120,   626,   120,   113,   629,
    2934      630,   113,   297,   115,   781,   616,  1056,  1057,   114,   121,
    2935      122,   136,   114,   136,   791,   645,   121,   647,   120,   113,
    2936      631,   615,   127,   128,  1386,   802,   620,   116,  1270,    74,
    2937      120,   120,   626,   644,   849,     4,     5,     6,     7,     8,
    2938        9,  1345,    87,    88,   120,   120,   136,   677,   617,   114,
    2939      680,   120,   114,   575,   869,    10,    11,    12,    13,    14,
    2940      136,   136,   116,   114,   114,   674,   120,   136,   113,   120,
    2941      115,   482,   120,   703,   704,   705,   931,   113,   892,   892,
    2942     1127,   711,   712,   677,   892,   595,    41,   597,   136,   892,
    2943      892,   700,   892,   615,   892,   891,   113,   781,   620,   119,
    2944      114,   113,    71,   855,    73,   452,   120,   791,   738,   136,
    2945      114,   114,   742,   743,    69,   726,   120,   120,   802,   616,
    2946     1482,   715,   691,    66,   114,  1487,  1430,   114,  1432,  1287,
    2947      120,   114,  1025,   120,   631,   113,   705,   120,  1491,  1491,
    2948      113,   113,   680,   115,  1491,  1507,   441,   644,   136,   121,
    2949      122,  1365,  1514,   118,   674,   785,   116,   504,    83,   506,
    2950      120,   894,   509,   114,   794,   512,   796,   136,  1382,   120,
    2951      680,   801,   467,   118,   897,   114,   899,   113,   996,   115,
    2952      700,   120,  1486,   813,  1426,   121,   122,   983,   114,  1239,
    2953      113,  1433,   115,   114,   120,   136,  1246,  1247,  1248,   120,
    2954      794,   711,   712,     4,     5,     6,     7,     8,     9,   504,
    2955     1257,   116,     3,   113,   509,   120,   136,   512,   738,    10,
    2956       11,    12,    13,    14,  1001,  1002,  1096,   796,   118,   726,
    2957     1100,  1101,   862,    74,    35,    76,    77,     0,     1,   114,
    2958     1454,  1455,   114,  1485,   862,   120,    87,    88,   120,   113,
    2959       41,   115,   114,   862,   884,   504,   113,   506,   120,  1309,
    2960      509,   891,   892,   512,   894,  1017,   884,   114,    31,    32,
    2961       71,    34,    73,   120,   115,   114,   906,   113,    69,  1056,
    2962     1057,   120,    45,   113,   114,   115,   114,    83,    51,   919,
    2963      920,   801,   120,   862,   924,  1096,    59,  1190,   114,  1100,
    2964      930,   931,    65,   813,   120,    68,    92,    93,    71,   930,
    2965      119,   120,   906,  1170,  1171,   122,  1173,  1001,  1002,    96,
    2966       97,    84,    85,  1180,   954,  1182,   113,   114,   115,  1467,
    2967      677,  1127,   131,  1066,   862,   929,   930,   931,  1071,   113,
    2968      114,   115,   862,   132,  1214,   108,   114,   115,   111,    74,
    2969        3,    76,    77,   983,    98,   118,   894,    10,    11,    12,
    2970       13,    14,    87,    88,  1088,    60,    61,   662,    60,    61,
    2971       62,   891,  1056,  1057,  1004,  1005,   671,   113,  1516,   115,
    2972      675,   113,   892,   115,   894,   115,   149,    74,    41,   983,
    2973      119,   120,  1022,  1286,    81,    46,    47,    84,   161,    86,
    2974       87,    88,   930,   113,  1022,   115,  1113,  1114,  1204,   931,
    2975      551,   552,    72,  1022,   924,    75,    69,   986,    78,   113,
    2976       80,   115,   113,   186,   187,  1202,   116,    87,   115,   114,
    2977       74,  1061,   116,   113,  1304,   115,  1066,    81,  1308,   202,
    2978       84,  1071,    86,    87,    88,   114,  1339,   210,   285,  1342,
    2979     1080,   862,   114,  1022,   553,   554,   219,   114,  1088,   222,
    2980      114,   983,  1239,   559,   560,   114,   229,  1061,   116,  1246,
    2981     1247,  1248,   115,   310,   311,     4,     5,     6,     7,     8,
    2982        9,   244,   118,   120,  1341,   248,   118,    74,   135,   252,
    2983      253,    78,   118,  1386,  1022,   135,   113,  1127,  1391,   114,
    2984       87,    88,  1022,   266,   267,   114,   116,   134,   345,   116,
    2985      273,   116,   134,     3,   134,    31,   120,   280,  1202,   930,
    2986       10,    11,    12,    13,    14,   114,   113,  1420,  1066,   114,
    2987      118,   113,  1309,  1071,   121,   122,   119,  1407,  1168,  1169,
    2988      114,   119,    71,   380,    73,   120,   119,   114,  1169,   114,
    2989      134,    41,   120,   213,   114,  1239,  1066,   136,   114,   906,
    2990     1190,  1071,  1246,  1247,  1248,   114,   114,   120,   331,   114,
    2991      114,   114,  1190,   114,  1204,   114,   114,   114,  1208,    69,
    2992      114,  1190,   114,     0,     1,   348,   349,  1208,   114,   114,
    2993      114,   886,    10,    11,    12,    13,    14,   119,    31,  1168,
    2994      135,   114,   365,   134,   114,   120,   369,  1127,   116,   116,
    2995      114,  1022,  1505,   114,  1208,   120,   379,    34,  1511,   114,
    2996      280,  1190,   134,    41,   113,  1309,   120,  1257,  1258,  1522,
    2997      118,   114,   395,  1526,    51,  1265,   114,  1361,   114,    85,
    2998     1270,  1169,   405,    89,    90,    91,  1501,   555,   556,   557,
    2999      558,    69,  1270,   120,    71,   114,   114,   120,   120,   114,
    3000      423,  1270,  1190,   113,   113,   113,   429,   113,   113,   115,
    3001     1190,   117,   118,  1303,   113,   136,   119,  1491,  1491,   114,
    3002     1208,   134,  1303,  1491,  1204,   114,   114,   119,  1491,  1491,
    3003      107,  1491,   352,  1491,   354,   113,  1265,   115,   132,   119,
    3004      116,  1270,   465,   121,   122,   118,   136,   470,   114,  1303,
    3005      120,   548,   549,   550,  1061,   478,   116,   116,   114,   482,
    3006      114,   116,   114,   486,     1,   116,   489,   116,   491,   116,
    3007      116,  1361,   149,    74,   116,    76,    77,    49,  1033,   136,
    3008      157,   158,  1270,  1467,   114,   119,    87,    88,  1378,  1360,
    3009     1270,    74,   136,    76,    77,    78,   136,  1168,  1169,  1492,
    3010      136,   136,   119,   526,    87,    88,   134,   114,   531,   688,
    3011      187,   119,   113,  1403,   116,  1303,    85,   118,   116,  1190,
    3012      440,   116,  1403,  1516,   116,   202,   116,   116,   205,   206,
    3013      113,   116,   115,   210,   114,   114,  1426,  1208,   121,   122,
    3014      113,    62,   113,  1433,   114,  1435,   113,  1437,  1426,  1403,
    3015      114,   134,   118,   113,   231,  1433,   579,  1426,   235,   136,
    3016      237,  1491,  1491,   116,  1433,  1491,   116,   114,   116,   246,
    3017      114,   100,   595,   100,   597,   252,   119,  1467,   113,   113,
    3018      257,  1435,  1472,  1437,  1474,   136,   114,   120,   114,   114,
    3019      267,   114,    44,   616,  1265,  1485,   134,  1426,   275,  1270,
    3020      779,  1491,  1492,  1360,  1433,     0,   136,  1485,   631,  1492,
    3021      114,  1501,   635,   114,   136,  1403,  1485,   100,  1472,   100,
    3022     1474,   644,   136,   646,   647,   648,  1516,   114,   136,   114,
    3023      116,   136,  1303,  1516,   114,   114,   136,   119,  1426,    34,
    3024       10,    11,    12,    13,    14,  1433,  1426,  1501,   116,   116,
    3025      113,  1037,   749,  1433,   119,   119,  1485,   680,   136,   114,
    3026      114,   684,   136,   686,   341,   114,    51,   690,   345,   114,
    3027      561,    41,   851,   562,   351,   698,    71,   565,   563,   963,
    3028       65,   564,  1190,    68,  1455,  1347,    71,   364,   711,   712,
    3029     1526,   368,  1280,  1101,  1492,  1308,  1433,  1485,   677,    69,
    3030     1052,   677,  1071,   726,   899,  1485,   690,   907,   579,    74,
    3031      855,    76,    77,    78,   893,   641,   253,   958,  1516,  1501,
    3032      715,  1491,    87,    88,  1279,    74,  1208,    76,    77,    78,
    3033      927,   482,  1403,    74,    -1,    76,    77,    78,    87,    88,
    3034      417,   567,    -1,   113,   726,   115,    87,    88,   113,   567,
    3035      115,   121,   122,   567,   431,  1426,   121,   122,    -1,   436,
    3036      939,    -1,  1433,   158,   149,    -1,    -1,   444,    -1,    -1,
    3037       -1,    -1,   113,    -1,   115,    -1,   161,    -1,   801,    -1,
    3038      121,   122,    -1,    -1,    -1,   462,    -1,    -1,   465,    -1,
    3039      813,    -1,   971,    -1,    -1,    10,    11,    12,    13,    14,
    3040       -1,    68,   187,   480,    -1,   482,   726,    -1,    -1,    -1,
    3041       77,    -1,    -1,   490,  1485,    -1,    -1,   494,    10,    11,
    3042       12,    13,    14,    -1,    -1,   210,    41,    -1,  1435,    -1,
    3043     1437,    74,   855,    76,    77,    -1,   231,   222,   861,    -1,
    3044     1019,    -1,    -1,    -1,    87,    88,   523,    -1,    -1,    41,
    3045       -1,    -1,   119,    -1,    69,    -1,    -1,   252,    -1,    74,
    3046       -1,    -1,   257,    78,    -1,  1472,    -1,  1474,    -1,   892,
    3047      113,   894,    87,    88,    -1,   118,    -1,    69,   901,  1434,
    3048       -1,  1436,    -1,    74,    -1,    -1,   983,    -1,    -1,    -1,
    3049       81,   568,    -1,    84,   161,    86,    87,    88,   113,    -1,
    3050       74,   924,    76,    77,    78,    -1,   121,   122,   585,   586,
    3051       -1,    -1,    -1,    87,    88,    -1,  1471,    -1,  1473,  1098,
    3052      597,   113,   945,   115,   115,  1022,    -1,    -1,   465,   121,
    3053      122,    -1,    -1,    -1,    -1,   958,    -1,     0,   615,   113,
    3054       -1,   964,    -1,   620,    -1,   968,   331,   121,   122,   626,
    3055       -1,    -1,   629,   630,    -1,   222,   351,    -1,    -1,    -1,
    3056     1515,    -1,  1517,    -1,    -1,    -1,    -1,    -1,   645,    -1,
    3057       74,    34,    76,    77,    78,  1530,  1531,    74,  1157,  1158,
    3058       -1,    78,    -1,    87,    88,    -1,   663,    -1,    -1,   526,
    3059       87,    88,  1015,   260,   531,    -1,    -1,   674,   265,    -1,
    3060       85,    68,    -1,    -1,    89,    90,    91,    -1,    71,   113,
    3061       -1,    -1,    -1,   280,    -1,    -1,   113,    84,   115,    -1,
    3062      405,    -1,   417,   700,   121,   122,   703,    -1,   113,  1052,
    3063      115,    -1,   117,   118,    -1,   712,   431,    -1,   715,    -1,
    3064       -1,   436,   579,  1066,    -1,    -1,    -1,    -1,  1071,   444,
    3065       74,    -1,   119,    -1,    -1,    -1,    -1,    81,    -1,    -1,
    3066       84,   738,    86,    87,    88,  1088,   743,   462,    -1,    -1,
    3067       10,    11,    12,    13,    14,    -1,    -1,    -1,    -1,    -1,
    3068       -1,    -1,    -1,   350,    74,   480,    -1,   482,    78,  1112,
    3069       -1,   115,    -1,    -1,   161,   158,    -1,    87,    88,    -1,
    3070       -1,    41,    -1,    -1,   781,    -1,    -1,    -1,    -1,   646,
    3071       -1,   648,    -1,    -1,   791,    68,    -1,   794,    -1,    -1,
    3072      797,    -1,    -1,   113,    -1,   802,    -1,    -1,   523,    69,
    3073       -1,   121,   122,    -1,    74,   812,    76,    77,    78,    -1,
    3074       74,  1164,    76,    77,    78,    -1,    -1,    87,    88,    -1,
    3075       -1,    -1,    -1,    87,    88,   222,    -1,    -1,    -1,    -1,
    3076       -1,   698,    -1,   430,    -1,    -1,   119,    -1,    -1,    -1,
    3077       -1,    -1,    -1,   113,    -1,   115,    -1,    -1,    -1,   446,
    3078       -1,   121,   122,    -1,    -1,   862,  1365,    -1,    -1,   252,
    3079       -1,   586,    -1,   260,   257,    -1,    -1,    -1,   265,    -1,
    3080       -1,    -1,    -1,  1382,   471,    -1,    -1,   884,   161,  1232,
    3081       -1,  1234,  1235,    -1,   891,    -1,    -1,   894,    10,    11,
    3082       12,    13,    14,    -1,    -1,   190,    74,    -1,    76,    77,
    3083       78,    -1,   197,    -1,   629,   630,    -1,    -1,    -1,    87,
    3084       88,    -1,    -1,   920,    -1,    -1,    -1,    -1,    -1,    41,
    3085      645,    -1,   929,   930,    -1,    -1,    -1,    -1,    -1,    -1,
    3086       -1,    -1,    -1,     0,    -1,   113,    -1,   115,   663,   222,
    3087       -1,    -1,    -1,   121,   122,  1454,  1455,    69,    -1,   674,
    3088       -1,    -1,    74,   350,    76,    77,    78,    -1,   351,    -1,
    3089     1313,    -1,    -1,    -1,    -1,    87,    88,    34,    -1,    -1,
    3090       -1,    -1,    -1,    -1,   269,   700,   983,   260,   703,    -1,
    3091       -1,    -1,   265,    -1,    -1,    -1,    -1,    -1,    -1,   996,
    3092       -1,   113,   589,   115,  1001,  1002,    -1,  1004,  1005,   121,
    3093      122,    -1,    -1,    -1,    71,    -1,    -1,  1360,  1361,    -1,
    3094       -1,    -1,    -1,   738,    -1,  1022,    -1,  1370,  1371,    -1,
    3095      617,    -1,    -1,    -1,   417,   622,    -1,    -1,    -1,    -1,
    3096       -1,   326,    74,   430,    76,    77,    78,    -1,   431,   334,
    3097       -1,    -1,   337,   436,    -1,    87,    88,    -1,    -1,  1056,
    3098     1057,   444,    -1,    -1,    -1,  1408,   781,    10,    11,    12,
    3099       13,    14,    -1,    -1,    -1,    -1,   791,   350,    -1,   462,
    3100       -1,   113,   797,    -1,   471,    -1,    -1,   802,   945,   121,
    3101      122,    -1,    -1,    -1,    -1,    -1,    -1,   480,    41,   482,
    3102       -1,   158,    -1,    -1,   691,    -1,    -1,   964,    -1,     0,
    3103        1,   968,   397,    -1,    -1,    -1,   401,    -1,   705,    -1,
    3104       -1,    -1,    -1,    -1,  1467,  1468,    69,    -1,    -1,    -1,
    3105     1127,    74,    -1,    32,  1477,    78,    -1,    -1,    -1,   726,
    3106      523,    -1,    -1,    34,    87,    88,    -1,   862,  1491,  1492,
    3107       -1,    -1,    -1,    -1,    -1,    -1,    -1,   430,  1015,    -1,
    3108       10,    11,    12,    13,    14,    -1,    -1,    -1,    -1,   884,
    3109      113,    -1,  1169,  1516,    -1,    -1,   891,    68,   121,   122,
    3110       71,    -1,    28,    29,    30,    84,    85,    -1,    -1,    -1,
    3111       -1,    41,   477,  1190,    -1,   252,    -1,    -1,   471,    -1,
    3112      257,    -1,   589,   586,    -1,  1202,    -1,  1204,    -1,   796,
    3113       -1,  1208,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    69,
    3114       -1,    -1,    -1,    -1,    74,     0,    76,    77,    78,    -1,
    3115      617,    -1,    -1,    -1,    -1,   622,    -1,    87,    88,    -1,
    3116       -1,    -1,  1239,    -1,    -1,    -1,   629,   630,    -1,  1246,
    3117     1247,  1248,    -1,    -1,   100,  1112,   102,    -1,    -1,    34,
    3118     1257,  1258,   645,   113,    -1,   115,    -1,   158,    -1,    -1,
    3119       -1,   121,   122,  1270,    -1,    -1,    -1,    -1,    -1,    -1,
    3120      663,    -1,   567,   568,    -1,    -1,  1001,  1002,    -1,  1004,
    3121     1005,   674,    -1,    -1,   351,    -1,    71,    -1,    -1,    -1,
    3122       -1,    -1,    -1,    -1,   691,    -1,  1303,  1022,    -1,    -1,
    3123       -1,    -1,  1309,    -1,    -1,    -1,   589,   700,   705,    -1,
    3124      703,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3125       -1,   222,    -1,    -1,    -1,    -1,   182,    -1,    -1,    -1,
    3126       -1,  1056,  1057,    -1,   617,   244,   192,   193,    -1,   622,
    3127       -1,   197,    -1,   199,   200,   738,    -1,    -1,    -1,    -1,
    3128      417,   252,    -1,    -1,    -1,   650,    -1,    -1,    -1,   654,
    3129       -1,    -1,    -1,    -1,   431,  1232,    -1,  1234,  1235,   436,
    3130       -1,  1378,    -1,   158,    -1,    -1,    -1,   444,    -1,    -1,
    3131       -1,    10,    11,    12,    13,    14,    -1,    -1,   781,   986,
    3132       -1,    -1,    -1,    -1,    -1,   462,  1403,    -1,   791,   796,
    3133       -1,    -1,  1127,    -1,   797,    -1,    -1,    -1,   691,   802,
    3134       -1,    -1,    41,   480,    -1,   482,    -1,    -1,    -1,  1426,
    3135       -1,    -1,   705,    -1,    -1,    -1,  1433,   101,   102,   103,
    3136      104,   105,   106,   107,   108,   109,   110,   111,    -1,    -1,
    3137       69,    -1,    -1,    -1,  1169,    74,  1313,    76,    77,    78,
    3138       -1,    -1,    -1,    -1,    -1,    -1,   523,    -1,    87,    88,
    3139       -1,   135,    -1,    -1,    -1,  1190,    -1,   252,    -1,   862,
    3140      379,    -1,   257,    -1,    -1,    -1,    -1,  1202,  1485,  1204,
    3141       -1,    -1,    -1,    -1,   113,  1492,    -1,    -1,    -1,    -1,
    3142      785,   884,   121,   122,    -1,    -1,    -1,    -1,   891,    -1,
    3143       -1,    -1,    -1,  1370,  1371,    -1,    -1,    -1,    -1,    -1,
    3144       -1,    -1,    -1,   796,  1239,    -1,    -1,    -1,    -1,   586,
    3145       -1,  1246,  1247,  1248,    -1,    -1,    -1,    -1,    -1,    -1,
    3146      431,    -1,  1257,  1258,    -1,    -1,    -1,    -1,    -1,    -1,
    3147       -1,  1408,    -1,    -1,    -1,  1270,    -1,    -1,    -1,    -1,
    3148       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3149       -1,    -1,   629,   630,    -1,    -1,   351,    -1,    -1,    -1,
    3150       -1,  1168,    -1,    -1,    -1,    -1,    -1,    -1,   645,    -1,
    3151      489,   482,   491,    -1,  1309,    -1,    -1,    -1,    -1,   986,
    3152       -1,    -1,    -1,    -1,    -1,    -1,   663,    -1,    -1,    -1,
    3153       -1,  1468,    -1,   898,    -1,    -1,    -1,   674,  1001,  1002,
    3154     1477,  1004,  1005,    -1,    -1,    -1,    -1,    -1,    -1,    55,
    3155       -1,    57,   523,    -1,    60,    61,    62,    -1,    64,  1022,
    3156       -1,    -1,   417,   700,    -1,    -1,   703,    -1,    -1,    -1,
    3157       -1,    -1,    78,    -1,    -1,    -1,   431,    -1,    -1,    -1,
    3158       -1,   436,    -1,  1378,    90,    91,    -1,    -1,    -1,   444,
    3159       -1,    -1,    -1,  1056,  1057,    -1,    -1,    -1,  1265,    -1,
    3160       -1,   738,    -1,    -1,    -1,    -1,    -1,   462,   973,    -1,
    3161       -1,    -1,    -1,    -1,    -1,   586,    -1,    -1,    -1,    -1,
    3162       -1,    -1,    -1,    -1,   989,   480,    -1,   482,    -1,    -1,
    3163       -1,  1426,    -1,   986,    -1,    -1,    -1,    -1,  1433,    -1,
    3164       -1,    -1,    -1,    -1,   781,   571,   572,    -1,    -1,    -1,
    3165       -1,    -1,    -1,    -1,   791,    -1,   635,    -1,   629,   630,
    3166      797,    -1,    -1,    -1,  1127,   802,    -1,    -1,   523,    -1,
    3167       -1,    -1,   598,    -1,   645,   601,   602,    -1,   604,    -1,
    3168      606,   607,    -1,    -1,    -1,   611,   612,    -1,    -1,    -1,
    3169     1485,    -1,    -1,    10,    11,    12,    13,    14,    -1,  1064,
    3170       -1,  1168,    -1,    -1,    -1,   684,  1169,   686,    -1,    -1,
    3171       -1,   690,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3172       -1,    -1,    -1,    -1,    41,   862,    -1,  1190,    -1,    -1,
    3173       -1,   586,   703,    -1,    -1,    -1,    -1,    -1,  1103,  1202,
    3174       -1,  1204,    -1,    -1,    -1,    -1,    -1,   884,    -1,    -1,
    3175       -1,    -1,    69,    -1,   891,    -1,    -1,    74,    -1,    76,
    3176       77,    78,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3177       87,    88,    -1,    -1,   629,   630,  1239,    -1,    -1,    -1,
    3178       -1,    -1,    -1,  1246,  1247,  1248,    -1,    -1,    -1,    -1,
    3179      645,    -1,    -1,    -1,  1257,  1258,   113,    -1,  1265,    -1,
    3180       -1,    -1,    -1,    -1,   121,   122,    -1,  1270,   663,    -1,
    3181       -1,    -1,    -1,    -1,    -1,  1168,    -1,    -1,    -1,   674,
    3182       -1,   747,   748,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3183       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   344,    -1,
    3184      346,    -1,    -1,    -1,    -1,   700,  1309,    -1,   703,    -1,
    3185       -1,   357,   358,    -1,    -1,    28,    29,    30,    -1,    -1,
    3186       -1,    -1,    -1,    -1,  1001,  1002,    -1,  1004,  1005,    -1,
    3187       -1,    -1,    -1,    -1,    -1,    -1,   855,    -1,    -1,    -1,
    3188       -1,    -1,   861,   738,    -1,  1022,    -1,    -1,    -1,    -1,
    3189       -1,   862,    10,    11,    12,    13,    14,    15,    16,    17,
    3190       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    3191       28,    29,  1265,   884,    -1,  1378,    -1,    -1,    -1,  1056,
    3192     1057,    -1,   901,    41,    -1,    -1,   781,   100,    -1,   102,
    3193       -1,    -1,    -1,    -1,    -1,    -1,   791,    -1,    -1,    -1,
    3194       -1,    -1,   797,    -1,    -1,    -1,    -1,   802,    -1,    -1,
    3195       -1,    69,    -1,    -1,   127,    -1,    -1,    -1,    -1,   930,
    3196       -1,    -1,    -1,  1426,    -1,    -1,    -1,    -1,    -1,    -1,
    3197     1433,    -1,    -1,    -1,    -1,    -1,    -1,   903,    -1,   958,
    3198       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3199     1127,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3200       -1,    -1,    -1,    -1,    -1,    -1,    -1,   862,     7,   182,
    3201       -1,    10,    11,    12,    13,    14,    -1,   190,    -1,   192,
    3202      193,    -1,  1485,    -1,   197,    -1,   199,   200,    -1,   884,
    3203       -1,    -1,  1169,  1004,  1005,    -1,   891,    -1,    -1,    -1,
    3204       39,    40,    41,    42,    -1,    -1,    -1,    -1,    -1,    -1,
    3205       -1,  1022,    -1,  1190,    -1,    -1,    -1,    -1,    -1,    -1,
    3206       -1,    -1,    -1,    -1,    -1,  1202,    -1,  1204,    -1,    68,
    3207       69,    -1,    -1,  1052,    -1,    74,    -1,    -1,    -1,    78,
    3208       -1,    -1,    81,    82,    83,    84,    85,    86,    87,    88,
    3209       -1,    90,    91,    -1,    -1,    -1,   269,    -1,    -1,    -1,
    3210       -1,    -1,  1239,    -1,    -1,    -1,    -1,    -1,    -1,  1246,
    3211     1247,  1248,    -1,    -1,   113,    -1,   115,    -1,    -1,    -1,
    3212     1257,  1258,   121,   122,   123,   124,   125,   126,    -1,    -1,
    3213       -1,    -1,  1058,  1270,    -1,    -1,    -1,    -1,    -1,    -1,
    3214       -1,    51,    -1,    -1,    -1,    -1,  1001,  1002,    -1,  1004,
    3215     1005,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    68,    -1,
    3216       -1,    -1,    -1,    -1,    -1,    -1,    -1,  1022,    -1,    -1,
    3217       -1,    -1,  1309,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3218       -1,    39,    40,    -1,    42,  1164,   692,    -1,   694,    -1,
    3219       -1,    -1,    -1,    -1,    -1,   701,   702,  1168,  1169,    -1,
    3220      706,  1056,  1057,    -1,    -1,   115,    -1,    -1,    -1,   119,
    3221       68,    -1,    -1,   719,    -1,    -1,    74,    -1,   724,  1190,
    3222       78,    -1,    -1,    81,    82,    83,    84,    85,    86,    87,
    3223       88,    -1,    90,    91,    -1,    -1,    -1,  1208,   148,    -1,
    3224       -1,  1378,    -1,    -1,    -1,   751,    -1,    -1,   158,    -1,
    3225       -1,   161,    -1,    -1,    -1,   113,    -1,   115,    -1,    -1,
    3226     1186,    -1,    -1,   121,   122,   123,   124,   125,   126,    -1,
    3227       -1,    -1,  1127,    -1,    -1,    -1,   134,    -1,    -1,    -1,
    3228       -1,    -1,    -1,    -1,    -1,    -1,  1257,  1258,    -1,  1426,
    3229       -1,    -1,    -1,    -1,  1265,    -1,  1433,    -1,    -1,  1270,
    3230      210,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3231       -1,    -1,   222,    -1,  1169,    -1,    -1,    -1,    -1,    -1,
    3232       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3233      240,    -1,  1303,    -1,    -1,  1190,    -1,    -1,   844,    -1,
    3234      846,   847,   848,    -1,    -1,    -1,    -1,  1202,  1485,  1204,
    3235       -1,    -1,    -1,    -1,    -1,   265,    -1,    -1,    -1,   865,
    3236       -1,    -1,   272,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3237       -1,    -1,    -1,   879,    -1,    -1,    -1,    -1,    -1,    -1,
    3238       -1,    -1,    -1,    -1,  1239,    -1,    -1,   297,    -1,    -1,
    3239       -1,  1246,  1247,  1248,    -1,    -1,    -1,    -1,   571,   572,
    3240      310,    -1,  1257,  1258,    -1,    -1,    -1,  1378,    -1,    -1,
    3241       -1,    -1,   918,    -1,    -1,  1270,    -1,    -1,    -1,    -1,
    3242       -1,    -1,    -1,    -1,    -1,   598,    -1,    -1,   601,   602,
    3243       -1,   604,  1403,   606,   607,   345,    -1,    -1,   611,   612,
    3244      350,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3245       -1,    -1,    -1,    -1,  1309,  1426,   962,    -1,    -1,    -1,
    3246       -1,   967,  1433,    -1,    -1,    -1,   972,    -1,    -1,    -1,
    3247       -1,   977,    -1,    -1,    -1,    -1,   982,    -1,   984,   985,
    3248       -1,    -1,   988,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3249       -1,   997,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3250       -1,    -1,    -1,    -1,    -1,    -1,    -1,  1013,  1014,    -1,
    3251       -1,    -1,    -1,    -1,  1485,   425,   426,    -1,    -1,    -1,
    3252       -1,   431,    -1,  1378,    -1,    -1,    -1,    -1,    -1,    -1,
    3253       -1,    -1,    -1,  1039,    -1,    -1,  1042,    -1,    -1,    -1,
    3254       -1,    -1,   452,    -1,    -1,    -1,    10,    11,    12,    13,
    3255       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3256       24,    25,    26,    27,    28,    29,    30,    -1,    -1,    -1,
    3257      480,  1426,    -1,    -1,   747,   748,    -1,    41,  1433,  1085,
    3258       -1,    -1,   492,    -1,    -1,  1091,  1092,    -1,    -1,    -1,
    3259       -1,    -1,    -1,    -1,   504,    -1,   506,    -1,    -1,   509,
    3260       -1,   511,   512,    -1,  1110,    69,    -1,    -1,    -1,  1115,
    3261       -1,    -1,    -1,   523,  1120,    -1,    80,    -1,    -1,    -1,
    3262       -1,    -1,    -1,    -1,    -1,  1131,    -1,    -1,    -1,    -1,
    3263     1485,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1144,    -1,
    3264     1146,  1147,  1148,  1149,    -1,    -1,    -1,    68,    -1,    -1,
    3265       -1,    -1,    -1,    -1,    -1,  1161,    77,  1163,    79,    -1,
    3266       81,  1167,    -1,    -1,    -1,   575,    -1,    88,    -1,    -1,
    3267       -1,    -1,    -1,    -1,    -1,    -1,   586,    -1,    -1,   589,
    3268       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1195,
    3269     1196,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   119,    -1,
    3270      121,   122,   123,    -1,    -1,   615,    -1,    -1,    -1,    -1,
    3271      620,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   629,
    3272      630,    -1,    -1,    -1,    -1,   898,    -1,    -1,    -1,    -1,
    3273      903,    -1,    -1,    -1,    -1,   645,    -1,    -1,    -1,    -1,
    3274      161,    -1,    -1,  1249,  1250,    -1,    -1,    -1,    -1,    -1,
    3275       -1,    -1,    -1,  1259,    -1,    -1,    -1,    -1,    -1,    -1,
    3276       -1,    -1,    -1,    -1,    -1,    -1,    -1,   677,    10,    11,
    3277       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3278       22,    23,    24,    25,    26,    27,    28,    29,    -1,    -1,
    3279       32,    33,    34,   703,    -1,   705,    -1,    -1,    -1,    41,
    3280       -1,   222,    -1,   224,   225,   226,    -1,    46,    -1,    -1,
    3281       -1,    -1,    -1,    -1,    -1,  1321,    -1,  1323,  1324,  1325,
    3282       -1,    -1,    -1,    -1,    -1,    -1,    -1,    69,   738,  1335,
    3283       -1,    -1,    74,    -1,    76,    77,    78,  1343,    -1,   260,
    3284       -1,    -1,    -1,    -1,   265,    87,    88,    -1,    -1,    -1,
    3285       -1,    -1,    -1,    -1,    93,    -1,    -1,    -1,    -1,   280,
    3286       -1,    -1,  1368,  1369,   103,    -1,    -1,    -1,    -1,    -1,
    3287       -1,   113,    -1,   115,    -1,    -1,    -1,    -1,    -1,   121,
    3288      122,   148,    -1,    -1,    -1,  1058,   796,    -1,    -1,    -1,
    3289       -1,   158,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3290       -1,    -1,   169,   170,    -1,    -1,    -1,  1413,  1414,    -1,
    3291      331,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3292     1426,    -1,    -1,    -1,    -1,    -1,    -1,  1433,    -1,   350,
    3293       -1,    -1,    -1,   172,   355,   356,    -1,    -1,    -1,    -1,
    3294       -1,    -1,   363,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3295       -1,    -1,    -1,    -1,    -1,    -1,   195,    -1,    -1,    -1,
    3296     1466,    -1,    -1,    -1,  1470,    -1,    -1,    -1,    -1,    -1,
    3297      209,    -1,    -1,   240,   884,    -1,    -1,    -1,    -1,   218,
    3298       -1,   891,    -1,    -1,   405,    -1,    -1,    -1,    -1,   228,
    3299       -1,    -1,  1498,    -1,  1500,    -1,   906,   264,    -1,    -1,
    3300       -1,    -1,   423,    -1,    -1,    -1,    -1,   428,    -1,   430,
    3301       -1,    -1,    -1,  1186,   253,    -1,    -1,    -1,    -1,   258,
    3302       -1,   931,  1528,  1529,    -1,   446,    -1,    -1,   449,   450,
    3303     1536,  1537,   271,    -1,    -1,    -1,   457,    -1,   277,    -1,
    3304      279,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3305      471,    -1,    -1,    -1,    -1,    -1,    -1,   478,    -1,   298,
    3306       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3307       -1,    -1,    -1,   983,    10,    11,    12,    13,    14,    15,
    3308       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3309       26,    27,    28,    29,  1004,  1005,    32,    33,    34,    -1,
    3310      339,    -1,    -1,    -1,   343,    41,    -1,    -1,    -1,    -1,
    3311       -1,    -1,   379,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3312       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3313       -1,    -1,   371,    69,    -1,    -1,   375,   376,    -1,   378,
    3314       76,    77,    -1,    -1,    -1,    -1,   385,   386,    -1,   388,
    3315      389,  1061,   391,    -1,   393,    -1,    -1,    -1,    -1,    -1,
    3316       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   589,    -1,
    3317       -1,   410,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   418,
    3318       -1,    -1,    -1,    -1,    -1,   121,   122,    -1,    -1,    -1,
    3319       -1,    -1,    -1,    -1,    -1,    -1,   617,    -1,    -1,    -1,
    3320       -1,   622,    -1,   442,    -1,   472,    -1,    -1,    -1,    -1,
    3321       -1,    -1,    -1,    -1,    -1,    -1,    -1,  1127,    -1,    -1,
    3322       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   468,
    3323       -1,    -1,    -1,    -1,    -1,   474,    -1,    -1,    -1,    -1,
    3324      479,    -1,    -1,    -1,   511,    -1,    -1,    -1,    -1,    -1,
    3325       -1,    -1,    -1,    -1,    -1,    -1,   523,    -1,  1168,    -1,
    3326       -1,    -1,   529,    -1,    -1,   532,   157,   158,    -1,    -1,
    3327      691,    -1,    -1,    -1,    -1,    -1,   515,    -1,   545,    -1,
    3328       -1,    -1,    -1,    -1,   705,    -1,    -1,    -1,    -1,    -1,
    3329       -1,   530,    -1,    -1,  1204,    -1,    -1,    -1,    -1,   190,
    3330       -1,    -1,    -1,    -1,    -1,   726,   197,    -1,   575,    -1,
    3331       -1,    -1,    -1,    -1,    -1,   582,    -1,    -1,    -1,   586,
    3332       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   567,    -1,
    3333       -1,    -1,    -1,    -1,    -1,    -1,    -1,   576,    -1,    -1,
    3334       -1,    -1,    -1,    -1,    -1,    -1,    -1,  1257,  1258,    -1,
    3335       -1,    -1,    -1,    -1,    -1,  1265,    -1,   596,    -1,    -1,
    3336       -1,    -1,    -1,    -1,   785,   632,    -1,    -1,    -1,    -1,
    3337       -1,    -1,    -1,   640,    -1,   796,    -1,    -1,   269,    -1,
    3338       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3339       -1,    -1,   813,    -1,    -1,   634,    -1,    10,    11,    12,
    3340       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3341       23,    24,    25,    26,    27,    28,    29,    -1,    -1,    32,
    3342       33,    34,    -1,    -1,    -1,    -1,    -1,    -1,    41,    -1,
    3343       -1,   670,    -1,    -1,    -1,   326,    -1,    -1,    -1,   678,
    3344       -1,    -1,    -1,   334,   335,    -1,   337,   338,    -1,   716,
    3345       -1,    -1,    -1,    -1,   345,    -1,    69,    -1,   349,    -1,
    3346       -1,    74,    -1,    76,    77,    78,    -1,    -1,  1378,    -1,
    3347      709,   738,    -1,   740,    87,    88,    -1,   368,    -1,    -1,
    3348       -1,   720,   721,   750,    -1,    -1,    -1,    -1,    -1,   756,
    3349       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3350      113,    -1,   115,   924,    -1,    -1,   397,    -1,   121,   122,
    3351      401,    -1,    -1,   752,    -1,    -1,    -1,    -1,   757,    -1,
    3352       -1,    -1,    -1,    -1,    -1,  1435,    -1,  1437,    -1,   796,
    3353      797,    -1,    -1,   954,    -1,    -1,    -1,    -1,    -1,    -1,
    3354      431,    -1,    -1,    -1,    -1,   812,    -1,    -1,    -1,    -1,
    3355       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3356       -1,    -1,  1472,    -1,  1474,   986,    -1,    -1,    -1,    -1,
    3357       -1,    -1,    -1,    -1,    -1,    -1,   997,    -1,   817,    -1,
    3358       -1,    -1,    -1,    -1,   851,   824,   477,    -1,   855,   480,
    3359       -1,  1501,    -1,    -1,    -1,    -1,    -1,    -1,   837,    -1,
    3360      839,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3361       -1,    -1,    -1,   852,    -1,    -1,    -1,   884,    -1,   858,
    3362       -1,    -1,    -1,    -1,   891,    -1,    -1,    -1,   519,    -1,
    3363       -1,   870,   523,    -1,   873,    -1,    -1,    -1,    -1,    -1,
    3364       -1,    -1,    -1,    -1,    -1,  1066,    -1,    -1,    -1,    -1,
    3365       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1080,
    3366       -1,    -1,    -1,    -1,   931,    -1,    -1,    -1,    -1,    -1,
    3367       -1,    -1,    -1,    -1,    -1,    -1,   567,   568,    -1,    -1,
    3368       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3369       -1,   958,    -1,    -1,   585,   586,   963,    -1,    -1,   966,
    3370       -1,    -1,    -1,    -1,   595,    -1,   597,   598,    -1,    -1,
    3371       -1,    -1,    -1,   604,    -1,    -1,    -1,    -1,    -1,   986,
    3372       -1,    -1,    -1,   614,   615,    -1,    -1,    -1,    -1,   620,
    3373      997,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   629,   630,
    3374       -1,    -1,   981,    -1,    -1,    -1,    -1,  1168,    -1,    -1,
    3375     1017,    -1,  1019,    -1,   645,    -1,    -1,    -1,    -1,   650,
    3376      651,    -1,    -1,   654,   655,    -1,    -1,  1034,  1035,   283,
    3377      661,   285,   286,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3378       -1,   295,   296,    -1,    -1,    -1,    -1,  1054,    -1,   680,
    3379       -1,    -1,    -1,    -1,    -1,    -1,   310,   311,    -1,    -1,
    3380       -1,    -1,    -1,  1042,    -1,    -1,    -1,    -1,    -1,    -1,
    3381       -1,    -1,   703,   704,    -1,    -1,    -1,    -1,    -1,    -1,
    3382       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3383       -1,   345,    -1,    -1,    -1,    -1,    -1,  1076,    -1,    -1,
    3384       -1,  1108,  1081,    -1,  1265,    -1,    -1,   738,    -1,    -1,
    3385     1089,   742,   743,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3386     1127,    -1,    -1,    -1,    -1,    -1,   380,    -1,    -1,    -1,
    3387       -1,    -1,    -1,    -1,    -1,  1142,  1143,    -1,    -1,    -1,
    3388       -1,    -1,    -1,    -1,  1123,    -1,    -1,    -1,    -1,    -1,
    3389       -1,    -1,    -1,    -1,   785,  1134,    -1,    -1,  1137,    -1,
    3390     1139,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3391      801,    -1,   803,    -1,    -1,  1154,  1155,    -1,    -1,    -1,
    3392       -1,    -1,   813,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3393       -1,    -1,    -1,    -1,    -1,  1174,    -1,    -1,    -1,    -1,
    3394       -1,    -1,    -1,    -1,    -1,     0,    -1,    -1,     3,     4,
    3395        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    3396       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3397       25,    26,    27,    28,    29,    -1,    -1,    32,    33,    34,
    3398       35,  1220,    -1,    38,    -1,    -1,    41,    42,    -1,  1228,
    3399       -1,    -1,    -1,   884,    -1,    -1,    -1,    -1,    -1,    -1,
    3400      891,   892,    -1,   894,    -1,    -1,    -1,   898,    -1,    -1,
    3401       -1,    66,    -1,    -1,    69,    -1,    71,  1284,    73,    74,
    3402     1287,    76,    77,    78,    -1,    -1,    -1,    -1,   919,   920,
    3403       -1,    -1,    87,    88,   548,   549,   550,   551,   552,   553,
    3404      554,   555,   556,   557,   558,   559,   560,   561,   562,   563,
    3405      564,   565,    -1,    -1,    -1,    -1,    -1,    -1,   113,  1298,
    3406      115,  1300,    -1,   954,    -1,    -1,   121,   122,    -1,    -1,
    3407       -1,    -1,    -1,    -1,    -1,    -1,    -1,  1316,    -1,  1318,
    3408       -1,    -1,   973,   974,    -1,    -1,    -1,    -1,    -1,    -1,
    3409       -1,    -1,   983,    -1,  1333,  1516,    -1,    -1,   989,   990,
    3410       -1,   992,   993,   994,    -1,    -1,    -1,    -1,    -1,  1348,
    3411     1349,    -1,    -1,  1004,  1005,    -1,    -1,    -1,    -1,    -1,
    3412     1359,    -1,    -1,  1362,    10,    11,    12,    13,    14,    15,
    3413       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3414       26,    27,    28,    29,    30,  1384,    -1,    -1,    -1,    -1,
    3415       -1,    -1,    -1,    -1,  1393,    41,    -1,  1396,    -1,  1398,
    3416     1399,  1400,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3417       -1,    -1,    -1,  1064,   688,  1066,    -1,    -1,    -1,    -1,
    3418     1071,    -1,    -1,    69,    -1,    -1,    -1,    -1,    -1,  1080,
    3419       -1,    -1,    -1,    -1,    80,    -1,    -1,    -1,    -1,    -1,
    3420     1439,    -1,  1441,    -1,  1443,    -1,    -1,    -1,    -1,    -1,
    3421       -1,    -1,  1103,  1104,    -1,    -1,    -1,    -1,    -1,    -1,
    3422     1459,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3423       -1,    -1,    -1,    -1,  1501,   749,  1127,     3,     4,     5,
    3424        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    3425       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3426       26,    27,    28,    29,    -1,   779,    32,    33,    34,    35,
    3427       -1,    -1,    38,    39,    40,    41,    42,    43,    -1,    45,
    3428       -1,    -1,    48,    49,    50,    51,    52,    53,    54,    55,
    3429       -1,    -1,    -1,    59,    -1,    -1,    -1,    63,    64,    -1,
    3430       66,    -1,    68,    69,    -1,    71,    -1,    73,    74,    -1,
    3431       76,    77,    78,  1204,    -1,    81,    82,    83,    84,    85,
    3432       86,    87,    88,    -1,    90,    91,    -1,    -1,    -1,    -1,
    3433       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3434       -1,    -1,    -1,    -1,    -1,    -1,    -1,   113,    -1,   115,
    3435       -1,    -1,   118,    -1,    -1,   121,   122,   123,   124,   125,
    3436      126,    -1,    -1,    -1,    -1,   131,  1257,  1258,    -1,    -1,
    3437      136,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   893,
    3438        3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    3439       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3440       23,    24,    25,    26,    27,    28,    29,    -1,    -1,    32,
    3441       33,    34,    35,    -1,    -1,    38,    39,    40,    41,    42,
    3442       -1,    -1,    -1,    -1,    -1,   939,    -1,    -1,    -1,    -1,
    3443       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3444       -1,    -1,    -1,    -1,    -1,    68,    69,    -1,    71,    -1,
    3445       73,    74,    -1,    76,    77,    78,    -1,   971,    81,    82,
    3446       83,    84,    85,    86,    87,    88,    -1,    90,    91,   983,
    3447       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3448       -1,    -1,    -1,    -1,    -1,    -1,    -1,  1378,    -1,    -1,
    3449      113,    -1,   115,    -1,    -1,    -1,    -1,    -1,   121,   122,
    3450      123,   124,   125,   126,    -1,    -1,    -1,    -1,  1022,    -1,
    3451       -1,    -1,    -1,   136,    -1,    -1,    -1,    -1,    -1,     3,
    3452        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    3453       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3454       24,    25,    26,    27,    28,    29,    -1,    -1,    32,    33,
    3455       34,    35,    -1,    -1,    38,    -1,    -1,    41,    42,    -1,
    3456       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3457       -1,    -1,    -1,    -1,    -1,    -1,  1467,    -1,    -1,    -1,
    3458       -1,    -1,    66,    -1,  1098,    69,    -1,    71,    -1,    73,
    3459       74,    -1,    76,    77,    78,    -1,    -1,    -1,    -1,    -1,
    3460     1491,  1492,    -1,    87,    88,    -1,    -1,    -1,    -1,    -1,
    3461       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3462       -1,    -1,    -1,    -1,    -1,  1516,    -1,    -1,    -1,   113,
    3463       -1,   115,    -1,    -1,    -1,   119,    -1,   121,   122,    -1,
    3464       -1,    -1,    -1,  1157,  1158,     3,     4,     5,     6,     7,
    3465        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    3466       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    3467       28,    29,    -1,    -1,    32,    33,    34,    35,    -1,    -1,
    3468       38,    39,    40,    41,    42,    -1,    -1,    -1,    -1,    -1,
     3834      25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,
     3835      -1,    -1,    -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,
    34693836      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    34703837      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3471       68,    69,    -1,    71,    -1,    73,    74,    -1,    76,    77,
    3472       78,    -1,    -1,    81,    82,    83,    84,    85,    86,    87,
    3473       88,    -1,    90,    91,    -1,    -1,    -1,    -1,    -1,    -1,
    3474       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3475       -1,    -1,    -1,    -1,    -1,   113,    -1,   115,    -1,    -1,
    3476       -1,    -1,    -1,   121,   122,   123,   124,   125,   126,    -1,
    3477       -1,    -1,    -1,    -1,    -1,     4,     5,     6,     7,     8,
    3478        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3479       19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
    3480       29,    -1,    -1,    32,    33,    34,    -1,    -1,    -1,    -1,
    3481       39,    40,    41,    42,    -1,    -1,    -1,    -1,    -1,    -1,
    3482       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3483       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    68,
    3484       69,    -1,    71,    -1,    73,    74,    -1,    76,    77,    78,
    3485       -1,  1365,    81,    82,    83,    84,    85,    86,    87,    88,
    3486       -1,    90,    91,    -1,    -1,    -1,    -1,    -1,  1382,    -1,
    3487       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3488       -1,    -1,    -1,    -1,   113,    -1,   115,    -1,    -1,    -1,
    3489       -1,   120,   121,   122,   123,   124,   125,   126,     4,     5,
    3490        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    3491       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3492       26,    27,    28,    29,    -1,    -1,    32,    33,    34,    -1,
    3493       -1,    -1,    -1,    39,    40,    41,    42,    -1,    -1,    -1,
    3494     1454,  1455,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3495       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3496       -1,    -1,    68,    69,    -1,    71,    -1,    73,    74,    -1,
    3497       76,    77,    78,    -1,    -1,    81,    82,    83,    84,    85,
    3498       86,    87,    88,    -1,    90,    91,    -1,    -1,    -1,    -1,
    3499       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3500       -1,    -1,    -1,    -1,    -1,    -1,    -1,   113,    -1,   115,
    3501       -1,    -1,    -1,    -1,   120,   121,   122,   123,   124,   125,
    3502      126,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    3503       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3504       23,    24,    25,    26,    27,    28,    29,    -1,    -1,    32,
    3505       33,    34,    -1,    -1,    -1,    -1,    39,    40,    41,    42,
     3838      -1,    -1,    67,    -1,    69,    -1,    71,    -1,    -1,    74,
     3839      75,     3,     4,     5,     6,     7,     8,     9,    10,    11,
     3840      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     3841      22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
     3842      32,    -1,    -1,    -1,    -1,    -1,    -1,    39,    -1,    -1,
    35063843      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    35073844      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3508       -1,    -1,    -1,    -1,    -1,    68,    69,    -1,    71,    -1,
    3509       73,    74,    -1,    76,    77,    78,    -1,    -1,    81,    82,
    3510       83,    84,    85,    86,    87,    88,    -1,    90,    91,    -1,
     3845      -1,    -1,    -1,    -1,    -1,    67,    -1,    69,    -1,    71,
     3846      -1,    -1,    74,    75,     4,     5,     6,     7,     8,     9,
     3847      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3848      20,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
     3849      30,    31,    32,    -1,    -1,    -1,    -1,    -1,    -1,    39,
     3850      -1,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3851      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
     3852      -1,    30,    31,    32,    33,    34,    35,    67,    -1,    69,
     3853      39,    71,    -1,    -1,    74,    75,    -1,    -1,    -1,    -1,
    35113854      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3512       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3513      113,    -1,   115,    -1,    -1,    -1,    -1,    -1,   121,   122,
    3514      123,   124,   125,   126,     4,     5,     6,     7,     8,     9,
    3515       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3516       20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
    3517       -1,    -1,    32,    33,    34,    -1,    -1,    -1,    -1,    39,
    3518       40,    41,    42,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3519       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3520       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    68,    69,
    3521       -1,    71,    -1,    73,    74,    -1,    76,    77,    78,    -1,
    3522       -1,    81,    82,    83,    84,    85,    86,    87,    88,    -1,
    3523       90,    91,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3524       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3525       -1,    -1,    -1,   113,    -1,   115,    -1,    -1,    -1,    -1,
    3526       -1,   121,   122,   123,   124,   125,   126,     4,     5,     6,
    3527        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    3528       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3529       27,    28,    29,    -1,    -1,    32,    33,    34,    -1,    -1,
    3530       -1,    -1,    39,    40,    41,    42,    -1,    -1,    -1,    -1,
    3531       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3532       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3533       -1,    68,    69,    -1,    71,    -1,    73,    74,    -1,    76,
    3534       77,    78,    -1,    -1,    81,    82,    83,    84,    85,    86,
    3535       87,    88,    -1,    90,    91,    -1,    -1,    -1,    -1,    -1,
    3536       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3537       -1,    -1,    -1,    -1,    -1,    -1,   113,    -1,   115,    -1,
    3538       -1,    -1,    -1,    -1,   121,   122,   123,   124,   125,   126,
    3539        3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    3540       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3541       23,    24,    25,    26,    27,    28,    29,    -1,    -1,    32,
    3542       33,    34,    35,    -1,    -1,    38,    -1,    -1,    41,    42,
    3543       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3544       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3545       -1,    -1,    -1,    66,    -1,    -1,    69,    -1,    71,    -1,
    3546       73,    74,    -1,    76,    77,    78,    -1,    -1,    -1,    -1,
    3547       -1,    -1,    -1,    -1,    87,    88,    -1,    -1,    -1,    -1,
    3548       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3549       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3550      113,    -1,   115,    -1,    -1,    -1,    -1,    -1,   121,   122,
    3551        3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    3552       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3553       23,    24,    25,    26,    27,    28,    29,    -1,    -1,    32,
    3554       33,    34,    -1,    -1,    -1,    -1,    -1,    -1,    41,    -1,
    3555       -1,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3556       19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
    3557       29,    -1,    -1,    32,    33,    34,    69,    -1,    71,    -1,
    3558       73,    74,    41,    76,    77,    78,    -1,    -1,    -1,    -1,
    3559       -1,    -1,    -1,    -1,    87,    88,    -1,    -1,    -1,    -1,
    3560       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3561       69,    -1,    -1,    -1,    -1,    -1,    -1,    76,    77,    -1,
    3562      113,    -1,   115,    -1,    -1,    -1,    -1,    -1,   121,   122,
    3563        3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    3564       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3565       23,    24,    25,    26,    27,    28,    29,    30,    -1,    32,
    3566       33,    34,    35,    -1,    -1,    38,    -1,    -1,    41,    -1,
    3567       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3568       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3569       -1,    -1,    -1,    -1,    -1,    -1,    69,    -1,    71,    -1,
    3570       73,    -1,    -1,    76,    77,    -1,    -1,    80,     3,     4,
    3571        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    3572       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3573       25,    26,    27,    28,    29,    -1,    -1,    32,    33,    34,
    3574       35,    -1,   115,    38,    -1,    -1,    41,    -1,   121,   122,
    3575       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3576       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3577       -1,    -1,    -1,    -1,    69,    -1,    71,    -1,    73,    -1,
    3578       -1,    76,    77,     3,     4,     5,     6,     7,     8,     9,
    3579       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3580       20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
    3581       -1,    -1,    32,    33,    34,    -1,    -1,    -1,    -1,    -1,
    3582      115,    41,    -1,    -1,    -1,    -1,   121,   122,    -1,     7,
    3583       -1,    -1,    10,    11,    12,    13,    14,    -1,    -1,    -1,
    3584       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    69,
    3585       -1,    71,    -1,    73,    -1,    -1,    76,    77,    -1,    -1,
    3586       -1,    39,    40,    41,    42,    -1,    -1,    -1,    -1,    -1,
    3587       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3588       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3589       68,    69,    -1,    -1,    -1,   115,    74,    -1,    -1,    -1,
    3590       78,   121,   122,    81,    82,    83,    84,    85,    86,    87,
    3591       88,    -1,    90,    91,    -1,    -1,    -1,    -1,    -1,    -1,
    3592       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3593       -1,    -1,    -1,    -1,    -1,   113,    -1,   115,    -1,    -1,
    3594       -1,    -1,    -1,   121,   122,   123,   124,   125,   126,     4,
    3595        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    3596       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3597       25,    26,    27,    28,    29,    -1,    -1,    32,    33,    34,
    3598       -1,    -1,    -1,    -1,    -1,    -1,    41,    -1,    -1,    10,
    3599       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3600       21,    22,    23,    24,    25,    26,    27,    28,    29,    -1,
    3601       -1,    32,    33,    34,    69,    -1,    71,    -1,    73,    74,
    3602       41,    76,    77,    78,    -1,    -1,    -1,    -1,    -1,    -1,
    3603       -1,    -1,    87,    88,    -1,    -1,    -1,    -1,    -1,    -1,
    3604       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    69,    -1,
    3605       -1,    -1,    -1,    -1,    -1,    76,    77,    -1,   113,    -1,
    3606      115,    -1,    -1,    -1,    -1,    -1,   121,   122,     4,     5,
    3607        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    3608       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3609       26,    27,    28,    29,   115,    -1,    32,    33,    34,    -1,
    3610      121,   122,    -1,    -1,    -1,    41,    -1,    -1,    -1,    -1,
    3611       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3612       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3613       -1,    -1,    -1,    69,    -1,    71,    -1,    73,    -1,    -1,
    3614       76,    77,    -1,     4,     5,     6,     7,     8,     9,    10,
    3615       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3616       21,    22,    23,    24,    25,    26,    27,    28,    29,    -1,
    3617       -1,    32,    33,    34,    -1,    -1,    -1,    -1,   114,   115,
    3618       41,    -1,    -1,    -1,    -1,   121,   122,    -1,    -1,    -1,
    3619       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3620       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    69,    -1,
    3621       71,    -1,    73,    -1,    -1,    76,    77,    -1,    -1,    -1,
    3622       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3623       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   100,
    3624       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3625       -1,    -1,    -1,    -1,   115,    -1,    -1,    -1,    -1,    -1,
    3626      121,   122,     4,     5,     6,     7,     8,     9,    10,    11,
    3627       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3628       22,    23,    24,    25,    26,    27,    28,    29,    -1,    -1,
    3629       32,    33,    34,    -1,    -1,    -1,    -1,    -1,    -1,    41,
    3630       -1,    -1,    10,    11,    12,    13,    14,    15,    16,    17,
    3631       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    3632       28,    29,    -1,    -1,    32,    33,    34,    69,    -1,    71,
    3633       -1,    73,    -1,    41,    76,    77,    -1,    -1,    -1,    -1,
    3634       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3635       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   100,    -1,
    3636       -1,    69,    -1,    -1,    -1,    -1,    -1,    -1,    76,    77,
    3637       -1,    -1,    -1,   115,    -1,    -1,    -1,    -1,    -1,   121,
    3638      122,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    3639       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3640       23,    24,    25,    26,    27,    28,    29,   115,    -1,    32,
    3641       33,    34,    -1,   121,   122,    -1,    -1,    -1,    41,    -1,
    3642       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3643       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3644       -1,    -1,    -1,    -1,    -1,    -1,    69,    -1,    71,    -1,
    3645       73,    -1,    -1,    76,    77,    -1,     4,     5,     6,     7,
    3646        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    3647       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    3648       28,    29,    -1,    -1,    32,    33,    34,    -1,    -1,    -1,
    3649       -1,    -1,   115,    41,    -1,    -1,    -1,    -1,   121,   122,
    3650       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3651       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3652       -1,    69,    -1,    71,    -1,    73,    -1,    -1,    76,    77,
    3653       -1,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    3654       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3655       23,    24,    25,    26,    27,    28,    29,    -1,    -1,    32,
    3656       33,    34,    -1,    -1,    -1,    -1,    -1,   115,    41,    -1,
    3657       -1,    -1,    -1,   121,   122,    -1,    -1,    -1,    -1,    -1,
    3658       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3659       -1,    -1,    -1,    -1,    -1,    -1,    69,    -1,    71,    -1,
    3660       73,    -1,    -1,    76,    77,    10,    11,    12,    13,    14,
    3661       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3662       25,    26,    27,    28,    29,    -1,    -1,    32,    33,    34,
    3663       -1,    -1,    -1,    -1,    39,    40,    41,    42,    -1,    -1,
    3664       -1,    -1,   115,    -1,    -1,    -1,    -1,    -1,   121,   122,
    3665       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3666       -1,    -1,    -1,    68,    69,    -1,    -1,    -1,    -1,    74,
    3667       -1,    76,    77,    78,    -1,    -1,    81,    82,    83,    84,
    3668       85,    86,    87,    88,    -1,    90,    91,    -1,    -1,    -1,
    3669       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3670       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   113,    -1,
    3671      115,    -1,    -1,   118,    -1,    -1,   121,   122,   123,   124,
    3672      125,   126,    10,    11,    12,    13,    14,    15,    16,    17,
    3673       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    3674       28,    29,    -1,    -1,    32,    33,    34,    -1,    -1,    -1,
    3675       -1,    39,    40,    41,    42,    -1,    -1,    -1,    -1,    -1,
    3676       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3677       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3678       68,    69,    -1,    -1,    -1,    -1,    74,    -1,    76,    77,
    3679       78,    -1,    -1,    81,    82,    83,    84,    85,    86,    87,
    3680       88,    -1,    90,    91,    -1,    -1,    -1,    -1,    -1,    -1,
    3681       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3682       -1,    -1,    -1,    -1,    -1,   113,   114,   115,    -1,    -1,
    3683       -1,    -1,    -1,   121,   122,   123,   124,   125,   126,    10,
    3684       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3685       21,    22,    23,    24,    25,    26,    27,    28,    29,    -1,
    3686       -1,    32,    33,    34,    -1,    -1,    -1,    -1,    39,    40,
    3687       41,    42,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3688       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3689       -1,    -1,    -1,    -1,    -1,    -1,    -1,    68,    69,    -1,
    3690       -1,    -1,    -1,    74,    -1,    76,    77,    78,    -1,    -1,
    3691       81,    82,    83,    84,    85,    86,    87,    88,    -1,    90,
    3692       91,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3693       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3694       -1,    -1,   113,    -1,   115,    -1,    -1,    -1,    -1,    -1,
    3695      121,   122,   123,   124,   125,   126,    10,    11,    12,    13,
    3696       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3697       24,    25,    26,    27,    28,    29,    -1,    -1,    32,    33,
    3698       34,    -1,    -1,    -1,    -1,    39,    40,    41,    42,    -1,
    3699       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3700       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3701       -1,    -1,    -1,    -1,    68,    69,    -1,    -1,    -1,    -1,
    3702       74,    -1,    76,    77,    78,    -1,    -1,    81,    82,    83,
    3703       84,    85,    86,    87,    88,    -1,    90,    91,    -1,    -1,
    3704       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3705       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   113,
    3706       -1,   115,    -1,    -1,    -1,    -1,    -1,   121,   122,   123,
    3707      124,   125,   126,    10,    11,    12,    13,    14,    15,    16,
    3708       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3709       27,    28,    29,    -1,    -1,    32,    33,    34,    -1,    -1,
    3710       -1,    -1,    39,    40,    41,    42,    -1,    -1,    -1,    -1,
    3711       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3712       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3713       -1,    68,    69,    -1,    -1,    -1,    -1,    74,    -1,    76,
    3714       77,    78,    -1,    -1,    81,    82,    83,    84,    85,    86,
    3715       87,    88,    -1,    90,    91,    -1,    -1,    -1,    -1,    -1,
    3716       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3717       -1,    -1,    -1,    -1,    -1,    -1,   113,    -1,   115,    -1,
    3718       -1,    -1,    -1,    -1,   121,   122,   123,   124,   125,   126,
    3719        3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    3720       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3721       23,    24,    25,    26,    27,    28,    29,    -1,    -1,    32,
    3722       33,    34,    -1,    -1,    -1,    -1,    -1,    -1,    41,    -1,
    3723       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3724       20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
    3725       -1,    -1,    32,    33,    34,    -1,    69,    -1,    71,    -1,
    3726       73,    41,    -1,    76,    77,    -1,    -1,    -1,    -1,    -1,
    3727       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3728       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    69,
    3729       -1,    -1,    -1,    -1,    74,    -1,    76,    77,    -1,    -1,
    3730       -1,    -1,    -1,    -1,    -1,   118,    -1,    87,    88,    -1,
    3731       -1,    -1,    -1,    -1,    10,    11,    12,    13,    14,    15,
    3732       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3733       26,    27,    28,    29,    -1,   115,    32,    33,    34,    -1,
    3734       -1,   121,   122,    -1,    -1,    41,    42,    10,    11,    12,
    3735       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3736       23,    24,    25,    26,    27,    28,    29,    -1,    -1,    32,
    3737       33,    34,    -1,    69,    -1,    -1,    -1,    -1,    41,    42,
    3738       76,    77,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3739       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3740       -1,    -1,    -1,    -1,    -1,    -1,    69,    -1,    -1,    -1,
    3741       -1,    -1,    -1,    76,    77,    -1,    -1,    -1,    -1,   115,
    3742       -1,    -1,    -1,   119,    -1,   121,   122,    -1,    -1,    -1,
    3743       -1,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3744       19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
    3745       29,    -1,   115,    32,    33,    34,   119,    -1,   121,   122,
    3746       -1,    -1,    41,    42,    10,    11,    12,    13,    14,    15,
    3747       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3748       26,    27,    28,    29,    -1,    -1,    32,    33,    34,    -1,
    3749       69,    -1,    -1,    -1,    -1,    41,    -1,    76,    77,    -1,
    3750       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3751       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3752       -1,    -1,    -1,    69,    -1,    -1,    -1,    -1,    -1,    -1,
    3753       76,    77,    -1,    -1,    -1,    -1,   115,    -1,    -1,    -1,
    3754      119,    -1,   121,   122,    -1,    -1,    -1,    -1,    10,    11,
    3755       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3756       22,    23,    24,    25,    26,    27,    28,    29,    -1,   115,
    3757       32,    33,    34,    -1,    -1,   121,   122,    -1,    -1,    41,
    3758       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3759       20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
    3760       -1,    -1,    32,    33,    34,    -1,    -1,    69,    -1,    -1,
    3761       -1,    41,    -1,    -1,    76,    77,    -1,    -1,    -1,    -1,
    3762       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3763       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    69,
    3764       -1,    -1,    -1,    -1,    -1,    -1,    76,    77,    -1,    -1,
    3765       -1,    -1,    -1,   115,    -1,    -1,    -1,    -1,    -1,   121,
    3766      122,    -1,    -1,    -1,    10,    11,    12,    13,    14,    15,
    3767       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3768       26,    27,    28,    29,    -1,   115,    32,    33,    34,    -1,
    3769       -1,   121,   122,    -1,    -1,    41,    -1,    -1,    -1,    -1,
    3770       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3771       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3772       -1,    -1,    -1,    69,    -1,    -1,    -1,    -1,    -1,    -1,
    3773       76,    77,    -1,     4,     5,     6,     7,     8,     9,    10,
    3774       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3775       21,    22,    23,    24,    25,    26,    27,    28,    29,    -1,
    3776       -1,    32,    33,    34,    -1,    -1,    -1,    -1,    -1,   115,
    3777       41,    -1,    -1,    -1,    -1,   121,   122,    -1,    -1,    -1,
    3778       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3779       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    69,    -1,
    3780       71,    -1,    73,    -1,    -1,    76,    77,    39,    40,    -1,
    3781       42,    43,    -1,    45,    -1,    -1,    48,    49,    50,    51,
    3782       52,    53,    54,    55,    -1,    -1,    58,    59,    -1,    -1,
    3783       -1,    63,    64,    -1,    66,    -1,    68,    -1,    -1,    -1,
    3784       -1,    -1,    74,   114,    -1,    -1,    78,    -1,    -1,    81,
    3785       82,    83,    84,    85,    86,    87,    88,    -1,    90,    91,
    3786       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3787       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3788       -1,   113,    -1,   115,    -1,    -1,   118,    -1,    -1,   121,
    3789      122,   123,   124,   125,   126,    -1,    -1,    39,    40,   131,
    3790       42,    43,    -1,    45,   136,    -1,    48,    49,    50,    51,
    3791       52,    53,    54,    55,    -1,    -1,    -1,    59,    -1,    -1,
    3792       -1,    63,    64,    -1,    66,    -1,    68,    -1,    -1,    -1,
    3793       -1,    -1,    74,    -1,    -1,    -1,    78,    -1,    -1,    81,
    3794       82,    83,    84,    85,    86,    87,    88,    -1,    90,    91,
    3795       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3796       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3797       -1,   113,    -1,   115,    -1,    -1,   118,    -1,    -1,   121,
    3798      122,   123,   124,   125,   126,    -1,    -1,    -1,    -1,   131,
    3799       -1,    -1,    -1,    -1,   136,     4,     5,     6,     7,     8,
    3800        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3801       19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
    3802       29,    -1,    -1,    32,    33,    34,    -1,    -1,    -1,    -1,
    3803       -1,    -1,    41,    -1,    39,    40,    -1,    42,    43,    -1,
    3804       45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
    3805       55,    -1,    -1,    58,    59,    -1,    -1,    -1,    63,    64,
    3806       69,    66,    71,    68,    73,    -1,    -1,    76,    77,    74,
    3807       -1,    -1,    -1,    78,    -1,    -1,    81,    82,    83,    84,
    3808       85,    86,    87,    88,    -1,    90,    91,    -1,    -1,    -1,
    3809       -1,   100,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3810       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   113,    -1,
    3811      115,    -1,    -1,   118,    -1,    -1,   121,   122,   123,   124,
    3812      125,   126,    -1,    -1,    39,    40,   131,    42,    43,    -1,
    3813       45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
    3814       55,    -1,    -1,    -1,    59,    -1,    -1,    -1,    63,    64,
    3815       -1,    66,    -1,    68,    -1,    -1,    -1,    -1,    -1,    74,
    3816       -1,    -1,    -1,    78,    -1,    -1,    81,    82,    83,    84,
    3817       85,    86,    87,    88,    -1,    90,    91,    -1,    -1,    -1,
    3818       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3819       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   113,    -1,
    3820      115,    -1,    -1,   118,    -1,    -1,   121,   122,   123,   124,
    3821      125,   126,    -1,    -1,    39,    40,   131,    42,    43,    -1,
    3822       45,    -1,    -1,    48,    49,    50,    51,    52,    53,    54,
    3823       55,    -1,    -1,    -1,    59,    -1,    -1,    -1,    63,    64,
    3824       -1,    66,    -1,    68,    -1,    -1,    -1,    -1,    -1,    74,
    3825       -1,    -1,    -1,    78,    -1,    -1,    81,    82,    83,    84,
    3826       85,    86,    87,    88,    -1,    90,    91,    -1,    -1,    -1,
    3827       -1,    -1,    -1,    39,    40,    -1,    42,    -1,    -1,    -1,
    3828       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   113,    -1,
    3829      115,    -1,    -1,   118,    -1,    -1,   121,   122,   123,   124,
    3830      125,   126,    68,    -1,    -1,    -1,   131,    -1,    74,    -1,
    3831       76,    77,    78,    -1,    -1,    81,    82,    83,    84,    85,
    3832       86,    87,    88,    -1,    90,    91,    -1,    -1,    -1,    -1,
    3833       -1,    -1,    39,    40,    -1,    42,    -1,    -1,    -1,    -1,
    3834       -1,    -1,    -1,    -1,    -1,    -1,    -1,   113,    -1,   115,
    3835       -1,   117,   118,    -1,    -1,   121,   122,   123,   124,   125,
    3836      126,    68,    -1,    -1,    -1,    -1,    -1,    74,    -1,    -1,
    3837       -1,    78,    -1,    -1,    81,    82,    83,    84,    85,    86,
    3838       87,    88,    -1,    90,    91,    -1,    -1,    -1,    -1,    -1,
    3839       -1,    39,    40,    -1,    42,    -1,    -1,    -1,    -1,    -1,
    3840       -1,    -1,    -1,    -1,    -1,    -1,   113,    -1,   115,    -1,
    3841       -1,   118,    -1,    -1,   121,   122,   123,   124,   125,   126,
    3842       68,    -1,    -1,    -1,    -1,    -1,    74,    -1,    -1,    -1,
    3843       78,    -1,    -1,    81,    82,    83,    84,    85,    86,    87,
    3844       88,    -1,    90,    91,    -1,    -1,    -1,    -1,    -1,    -1,
    3845       39,    40,    -1,    42,    -1,    -1,    -1,    -1,    -1,    -1,
    3846       -1,    -1,    -1,    -1,    -1,   113,    -1,   115,    -1,    -1,
    3847       -1,    -1,   120,   121,   122,   123,   124,   125,   126,    68,
    3848       -1,    -1,    -1,    -1,    -1,    74,    -1,    -1,    -1,    78,
    3849       -1,    -1,    81,    82,    83,    84,    85,    86,    87,    88,
    3850       -1,    90,    91,    -1,    -1,    -1,    -1,    -1,    -1,    39,
    3851       40,    -1,    42,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3852       -1,    -1,    -1,    -1,   113,    -1,   115,    -1,    -1,   118,
    3853       -1,    -1,   121,   122,   123,   124,   125,   126,    68,    -1,
    3854       -1,    -1,    -1,    -1,    74,    -1,    -1,    -1,    78,    -1,
    3855       -1,    81,    82,    83,    84,    85,    86,    87,    88,    -1,
    3856       90,    91,    -1,    -1,    -1,    -1,    -1,    -1,    39,    40,
    3857       -1,    42,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3858       -1,    -1,    -1,   113,    -1,   115,    -1,    -1,    -1,    -1,
    3859       -1,   121,   122,   123,   124,   125,   126,    68,    -1,    -1,
    3860       -1,    -1,    -1,    74,    -1,    -1,    -1,    78,    -1,    -1,
    3861       81,    82,    83,    84,    85,    86,    87,    88,    -1,    90,
    3862       91,    -1,    -1,    -1,    -1,    -1,    -1,    39,    40,    -1,
    3863       42,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3864       -1,    -1,   113,    -1,   115,    -1,    -1,    -1,    -1,    -1,
    3865      121,   122,   123,   124,   125,   126,    68,    -1,    -1,    -1,
    3866       -1,    -1,    74,    -1,    -1,    -1,    78,    -1,    -1,    81,
    3867       82,    83,    84,    85,    86,    87,    88,    -1,    90,    91,
    3868       -1,    -1,    -1,    -1,    -1,    -1,    39,    40,    -1,    42,
    3869       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3870       -1,   113,    -1,   115,    -1,    -1,    -1,    -1,    -1,   121,
    3871      122,   123,   124,   125,   126,    68,    -1,    -1,    -1,    -1,
    3872       -1,    74,    -1,    -1,    -1,    78,    -1,    -1,    81,    82,
    3873       83,    84,    85,    86,    87,    88,    -1,    90,    91,    -1,
    3874       -1,    -1,    -1,    -1,    -1,    39,    40,    -1,    42,    -1,
    3875       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3876      113,    -1,   115,    -1,    -1,    -1,    -1,    -1,   121,   122,
    3877      123,   124,   125,   126,    68,    -1,    -1,    -1,    -1,    -1,
    3878       74,    -1,    -1,    -1,    78,    -1,    -1,    81,    82,    83,
    3879       84,    85,    86,    87,    88,    -1,    90,    91,    -1,    -1,
    3880       -1,    -1,    -1,    -1,    39,    40,    -1,    42,    -1,    -1,
    3881       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   113,
    3882       -1,   115,    -1,    -1,    -1,    -1,    -1,   121,   122,   123,
    3883      124,   125,   126,    68,    -1,    -1,    -1,    -1,    -1,    74,
    3884       -1,    -1,    -1,    78,    -1,    -1,    81,    82,    83,    84,
    3885       85,    86,    87,    88,    -1,    90,    91,    -1,    -1,    -1,
    3886       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3887       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   113,    -1,
    3888      115,    -1,    -1,    -1,    -1,    -1,   121,   122,   123,   124,
    3889      125,   126,     4,     5,     6,     7,     8,     9,    10,    11,
    3890       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3891       22,    23,    24,    25,    26,    27,    28,    29,    -1,    -1,
    3892       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    41,
    3893       -1,    -1,    10,    11,    12,    13,    14,    15,    16,    17,
    3894       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    3895       28,    29,    -1,    -1,    32,    33,    34,    69,    -1,    71,
    3896       -1,    73,    74,    41,    76,    77,    78,    -1,    -1,    -1,
    3897       -1,    -1,    -1,    -1,    -1,    87,    88,    -1,    -1,    -1,
    3898       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3899       -1,    69,    -1,    -1,    -1,    -1,    74,    -1,    76,    77,
    3900       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    87,
    3901       88,     3,     4,     5,     6,     7,     8,     9,    10,    11,
    3902       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3903       22,    23,    24,    25,    26,    27,    28,    29,    -1,    -1,
    3904       32,    33,    34,    -1,    -1,    -1,    -1,    -1,    -1,    41,
    3905       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3906       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3907       -1,    -1,    -1,    -1,    -1,    -1,    -1,    69,    -1,    71,
    3908       -1,    73,    -1,    -1,    76,    77,     3,     4,     5,     6,
    3909        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    3910       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3911       27,    28,    29,    -1,    -1,    32,    33,    34,    -1,    -1,
    3912       -1,    -1,    -1,    -1,    41,    -1,    -1,    -1,    -1,    -1,
    3913       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3914       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3915       -1,    -1,    69,    -1,    71,    -1,    73,    -1,    -1,    76,
    3916       77,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    3917       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3918       23,    24,    25,    26,    27,    28,    29,    -1,    -1,    32,
    3919       33,    34,    -1,    -1,    -1,    -1,    -1,    -1,    41,    -1,
    3920       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3921       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3922       -1,    -1,    -1,    -1,    -1,    -1,    69,    -1,    71,    -1,
    3923       73,    -1,    -1,    76,    77,    10,    11,    12,    13,    14,
    3924       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3925       25,    26,    27,    28,    29,    -1,    -1,    32,    33,    34,
    3926       35,    36,    37,    -1,    -1,    -1,    41,    10,    11,    12,
    3927       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3928       23,    24,    25,    26,    27,    28,    29,    -1,    -1,    32,
    3929       33,    34,    -1,    -1,    69,    -1,    -1,    -1,    41,    -1,
    3930       -1,    76,    77,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3931       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3932       -1,    -1,    -1,    -1,    -1,    -1,    69,    -1,    -1,    -1,
    3933       -1,    -1,    -1,    76,    77
     3855      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,
     3856      -1,    -1,    -1,    -1,    -1,    74,    75
    39343857};
    39353858
     
    39403863       0,     3,     4,     5,     6,     7,     8,     9,    10,    11,
    39413864      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3942       22,    23,    24,    25,    26,    27,    28,    29,    32,    33,
    3943       34,    35,    38,    41,    42,    66,    69,    71,    73,    74,
    3944       76,    77,    78,    87,    88,   113,   115,   121,   122,   141,
    3945      144,   156,   205,   219,   220,   221,   222,   223,   224,   225,
    3946      226,   227,   228,   229,   230,   231,   232,   233,   234,   235,
    3947      236,   238,   239,   240,   241,   242,   243,   244,   246,   247,
    3948      248,   249,   250,   251,   253,   261,   262,   289,   290,   291,
    3949      299,   302,   308,   309,   311,   313,   314,   320,   325,   329,
    3950      330,   331,   332,   333,   334,   335,   336,   356,   373,   374,
    3951      375,   376,    74,   143,   144,   156,   222,   224,   232,   234,
    3952      243,   247,   249,   290,    83,   113,   318,   319,   320,   318,
    3953      318,    74,    76,    77,    78,   142,   143,   279,   280,   300,
    3954      301,    76,    77,   280,   113,   311,    11,   206,   113,   156,
    3955      325,   330,   331,   332,   334,   335,   336,   116,   138,   225,
    3956      232,   234,   329,   333,   372,   373,   376,   377,   139,   111,
    3957      135,   283,   118,   139,   180,    76,    77,   141,   278,   139,
    3958      139,   139,   120,   139,    76,    77,   113,   156,   315,   324,
    3959      325,   326,   327,   328,   329,   333,   337,   338,   339,   340,
    3960      341,   347,     3,    30,    80,   245,     3,     5,    76,   115,
    3961      156,   224,   235,   239,   241,   250,   291,   329,   333,   376,
    3962      222,   224,   234,   243,   247,   249,   290,   329,   333,    35,
    3963      240,   240,   235,   241,   139,   240,   235,   240,   235,    77,
    3964      113,   118,   280,   291,   118,   280,   240,   235,   120,   139,
    3965      139,     0,   138,   113,   180,   318,   318,   138,   115,   232,
    3966      234,   374,   278,   278,   135,   234,   113,   156,   315,   325,
    3967      329,   115,   156,   376,   312,   237,   320,   113,   296,   113,
    3968      113,    53,   113,    39,    40,    42,    68,    74,    78,    81,
    3969       82,    83,    84,    85,    86,    90,    91,   113,   115,   123,
    3970      124,   125,   126,   140,   144,   145,   146,   147,   148,   155,
     3865      22,    23,    24,    25,    26,    27,    30,    31,    32,    33,
     3866      36,    39,    40,    64,    67,    69,    71,    72,    74,    75,
     3867      76,    85,    86,   111,   113,   119,   120,   139,   142,   154,
     3868     203,   217,   218,   219,   220,   221,   222,   223,   224,   225,
     3869     226,   227,   228,   229,   230,   231,   232,   233,   234,   236,
     3870     237,   238,   239,   240,   241,   242,   244,   245,   246,   247,
     3871     248,   249,   251,   259,   260,   287,   288,   289,   297,   300,
     3872     306,   307,   309,   311,   312,   318,   323,   327,   328,   329,
     3873     330,   331,   332,   333,   334,   354,   371,   372,   373,   374,
     3874      72,   141,   142,   154,   220,   222,   230,   232,   241,   245,
     3875     247,   288,    81,   111,   316,   317,   318,   316,   316,    72,
     3876      74,    75,    76,   140,   141,   277,   278,   298,   299,    74,
     3877      75,   278,   111,   309,    11,   204,   111,   154,   323,   328,
     3878     329,   330,   332,   333,   334,   114,   136,   223,   230,   232,
     3879     327,   331,   370,   371,   374,   375,   137,   109,   133,   281,
     3880     116,   137,   178,    74,    75,   139,   276,   137,   137,   137,
     3881     118,   137,    74,    75,   111,   154,   313,   322,   323,   324,
     3882     325,   326,   327,   331,   335,   336,   337,   338,   339,   345,
     3883       3,    28,    78,   243,     3,     5,    74,   113,   154,   222,
     3884     233,   237,   239,   248,   289,   327,   331,   374,   220,   222,
     3885     232,   241,   245,   247,   288,   327,   331,    33,   238,   238,
     3886     233,   239,   137,   238,   233,   238,   233,    75,   111,   116,
     3887     278,   289,   116,   278,   238,   233,   118,   137,   137,     0,
     3888     136,   111,   178,   316,   316,   136,   113,   230,   232,   372,
     3889     276,   276,   133,   232,   111,   154,   313,   323,   327,   113,
     3890     154,   374,   310,   235,   318,   111,   294,   111,   111,    51,
     3891     111,    37,    38,    40,    66,    72,    76,    79,    80,    81,
     3892      82,    83,    84,    88,    89,   111,   113,   121,   122,   123,
     3893     124,   138,   142,   143,   144,   145,   146,   153,   154,   155,
    39713894     156,   157,   158,   159,   160,   161,   162,   163,   164,   165,
    3972      166,   167,   168,   169,   171,   174,   232,   282,   298,   372,
    3973      377,   234,   114,   114,   114,   114,   114,   114,   114,   115,
    3974      232,   356,   374,   115,   121,   156,   171,   224,   225,   231,
    3975      234,   238,   239,   243,   246,   247,   249,   268,   269,   273,
    3976      274,   275,   276,   290,   356,   368,   369,   370,   371,   376,
    3977      377,   113,   329,   333,   376,   113,   120,   136,   115,   118,
    3978      156,   171,   284,   284,   119,   138,   120,   136,   113,   120,
    3979      136,   120,   136,   120,   136,   318,   136,   325,   326,   327,
    3980      328,   338,   339,   340,   341,   234,   324,   337,    66,   317,
    3981      115,   318,   355,   356,   318,   318,   180,   138,   113,   318,
    3982      355,   318,   318,   234,   315,   113,   113,   233,   234,   232,
    3983      234,   138,   232,   372,   377,   180,   138,   278,   283,   224,
    3984      239,   329,   333,   180,   138,   300,   234,   243,   136,   234,
    3985      234,   298,   254,   252,   264,   280,   263,   234,   300,   136,
    3986      136,   311,   138,   143,   277,     3,   139,   214,   215,   229,
    3987      231,   234,   138,   317,   113,   317,   171,   325,   234,   113,
    3988      138,   278,   118,    35,    36,    37,   232,   292,   293,   295,
    3989      138,   132,   135,   297,   138,   235,   240,   241,   278,   321,
    3990      322,   323,   113,   145,   113,   155,   113,   155,   158,   113,
    3991      155,   113,   113,   155,   155,   115,   171,   176,   180,   232,
    3992      281,   372,   376,   138,    83,    85,    89,    90,    91,   113,
    3993      115,   117,   118,   101,   102,   103,   104,   105,   106,   107,
    3994      108,   109,   110,   111,   135,   173,   158,   158,   121,   127,
    3995      128,   123,   124,    92,    93,    94,    95,   129,   130,    96,
    3996       97,   122,   131,   132,    98,    99,   133,   113,   156,   351,
    3997      352,   353,   354,   355,   114,   120,   113,   355,   356,   113,
    3998      355,   356,   138,   232,   374,   116,   138,   139,   232,   234,
    3999      367,   368,   376,   377,   139,   113,   115,   156,   325,   342,
    4000      343,   344,   345,   346,   347,   348,   349,   350,   356,   357,
    4001      358,   359,   360,   361,   362,   156,   376,   234,   139,   139,
    4002      156,   232,   234,   369,   278,   232,   356,   369,   278,   138,
    4003      138,   138,   138,    74,   115,   117,   144,   280,   284,   285,
    4004      286,   287,   288,   138,   138,   138,   138,   138,   138,   315,
    4005      114,   114,   114,   114,   114,   114,   114,   324,   337,   113,
    4006      283,   116,   214,   138,   315,   176,   282,   176,   282,   315,
    4007      115,   214,   317,   180,   138,   214,   114,    42,   115,   119,
    4008      232,   255,   256,   257,   372,   118,   120,   378,   135,   265,
    4009      118,   234,   270,   271,   272,   275,   276,   114,   120,   180,
    4010      138,   121,   171,   138,   231,   234,   269,   368,   376,   309,
    4011      310,   113,   156,   342,   114,   120,   135,   379,   280,   292,
    4012      113,   118,   280,   282,   292,   114,   120,   113,   145,   114,
    4013      134,   281,   281,   281,   150,   171,   282,   281,   138,   114,
    4014      120,   114,   113,   156,   355,   363,   364,   365,   366,   114,
    4015      120,   171,   115,   143,   149,   150,   138,   115,   143,   149,
    4016      171,   158,   158,   158,   159,   159,   160,   160,   161,   161,
    4017      161,   161,   162,   162,   163,   164,   165,   166,   167,   134,
    4018      176,   138,   352,   353,   354,   234,   351,   318,   318,   171,
    4019      282,   138,   277,   232,   356,   369,   234,   238,   116,   376,
    4020      116,   113,   138,   325,   343,   344,   345,   348,   358,   359,
    4021      360,   116,   138,   234,   342,   346,   357,   113,   318,   361,
    4022      379,   318,   318,   379,   113,   318,   361,   318,   318,   318,
    4023      318,   356,   232,   367,   377,   278,   116,   120,   116,   120,
    4024      379,   232,   369,   379,   266,   267,   268,   269,   266,   278,
    4025      171,   138,   115,   280,   134,   120,   378,   284,   115,   134,
    4026      288,    31,   216,   217,   278,   266,   143,   315,   143,   317,
    4027      113,   355,   356,   113,   355,   356,   145,   356,   180,   270,
    4028      114,   114,   114,   114,   138,   180,   214,   180,   118,   256,
    4029      257,   138,   113,   134,   156,   258,   260,   324,   325,   337,
    4030      363,   120,   136,   120,   136,   280,   254,   280,   119,   169,
    4031      170,   264,   139,   139,   143,   229,   139,   139,   266,   113,
    4032      156,   376,   139,   119,   234,   293,   171,   294,   139,   138,
    4033      138,   113,   139,   114,   322,   176,   177,   134,   136,   115,
    4034      145,   207,   208,   209,   114,   120,   114,   114,   114,   114,
    4035      171,   364,   365,   366,   234,   363,   318,   318,   118,   158,
    4036      171,   172,   175,   120,   138,   114,   120,   171,   138,   119,
    4037      169,   134,   270,   114,   114,   114,   351,   270,   114,   232,
    4038      369,   115,   121,   156,   171,   171,   234,   348,   270,   114,
    4039      114,   114,   114,   114,   114,   114,     7,   234,   342,   346,
    4040      357,   138,   138,   379,   138,   138,   139,   139,   139,   139,
    4041      283,   169,   170,   171,   316,   138,   284,   286,   119,   138,
    4042      218,   280,    42,    43,    45,    48,    49,    50,    51,    52,
    4043       53,    54,    55,    59,    63,    64,    74,   131,   177,   178,
    4044      179,   180,   181,   182,   184,   185,   197,   199,   200,   205,
    4045      219,   314,    31,   139,   135,   283,   138,   138,   114,   139,
    4046      180,   254,   136,   136,   325,   170,   234,   259,   260,   259,
    4047      280,   318,   119,   265,   378,   114,   120,   116,   116,   139,
    4048      234,   120,   379,   296,   114,   292,   222,   224,   232,   304,
    4049      305,   306,   307,   298,   114,   114,   134,   170,   113,   114,
    4050      134,   120,   143,   114,   114,   114,   363,   285,   120,   139,
    4051      175,    81,    84,    86,   143,   151,   152,   153,   150,   139,
    4052      151,   169,   139,   113,   355,   356,   139,   138,   139,   139,
    4053      139,   171,   114,   139,   113,   355,   356,   113,   361,   113,
    4054      361,   356,   233,     7,   121,   139,   171,   270,   270,   269,
    4055      273,   273,   274,   114,   120,   120,   114,   100,   126,   139,
    4056      139,   151,   284,   171,   120,   136,   219,   223,   234,   238,
    4057      113,   113,   178,   113,   113,    74,   136,    74,   136,    74,
    4058      121,   177,   113,   180,   172,   172,   134,   148,   136,   139,
    4059      138,   139,   218,   114,   171,   270,   270,   318,   114,   119,
    4060      258,   119,   138,   114,   138,   139,   315,   119,   138,   139,
    4061      139,   114,   118,   207,   116,   170,   136,   207,   209,   114,
    4062      113,   355,   356,   378,   172,   116,   139,   154,   115,   152,
    4063      154,   154,   120,   139,    89,   117,   116,   139,   114,   138,
    4064      114,   116,   116,   116,   139,   114,   138,   138,   138,   171,
    4065      171,   139,   116,   139,   139,   139,   139,   138,   138,   170,
    4066      170,   116,   116,   139,   280,   234,   176,   176,    49,   176,
    4067      138,   136,   136,   136,   176,   136,   176,    60,    61,    62,
    4068      201,   202,   203,   136,    65,   136,   318,   118,   182,   119,
    4069      136,   139,   139,   100,   275,   276,   114,   305,   120,   136,
    4070      120,   136,   119,   303,   134,   145,   114,   114,   134,   138,
    4071      119,   116,    85,   138,   152,   116,   115,   152,   115,   152,
    4072      116,   270,   116,   270,   270,   270,   139,   139,   116,   116,
    4073      114,   114,   116,   120,   100,   269,   100,   139,   116,   114,
    4074      114,   113,   114,   177,   198,   219,   136,   114,   113,   113,
    4075      180,   203,    60,    61,   171,   178,   149,   114,   114,   118,
    4076      138,   138,   304,   145,   210,   113,   136,   210,   270,   151,
    4077      138,   138,   139,   139,   139,   139,   116,   116,   138,   139,
    4078      116,   178,    46,    47,   118,   188,   189,   190,   176,   178,
    4079      139,   114,   177,   118,   190,   100,   138,   100,   138,   113,
    4080      113,   136,   119,   138,   278,   315,   119,   120,   134,   170,
    4081      114,   139,   139,   151,   151,   114,   114,   114,   114,   273,
    4082       44,   170,   186,   187,   316,   134,   138,   178,   188,   114,
    4083      136,   178,   136,   138,   114,   138,   114,   138,   100,   138,
    4084      100,   138,   136,   304,   145,   143,   211,   114,   136,   114,
    4085      116,   139,   139,   178,   100,   120,   134,   139,   212,   213,
    4086      219,   136,   177,   177,   212,   180,   204,   232,   372,   180,
    4087      204,   114,   138,   114,   138,   119,   114,   120,   116,   116,
    4088      170,   186,   189,   191,   192,   138,   136,   189,   193,   194,
    4089      139,   113,   156,   315,   363,   143,   139,   180,   204,   180,
    4090      204,   113,   136,   143,   178,   183,   119,   189,   219,   177,
    4091       58,   183,   196,   119,   189,   114,   234,   114,   139,   139,
    4092      298,   178,   183,   136,   195,   196,   183,   196,   180,   180,
    4093      114,   114,   114,   195,   139,   139,   180,   180,   139,   139
     3895     166,   167,   169,   172,   230,   280,   296,   370,   375,   232,
     3896     112,   112,   112,   112,   112,   112,   112,   113,   230,   354,
     3897     372,   113,   119,   154,   169,   222,   223,   229,   232,   236,
     3898     237,   241,   244,   245,   247,   266,   267,   271,   272,   273,
     3899     274,   288,   354,   366,   367,   368,   369,   374,   375,   111,
     3900     327,   331,   374,   111,   118,   134,   113,   116,   154,   169,
     3901     282,   282,   117,   136,   118,   134,   111,   118,   134,   118,
     3902     134,   118,   134,   316,   134,   323,   324,   325,   326,   336,
     3903     337,   338,   339,   232,   322,   335,    64,   315,   113,   316,
     3904     353,   354,   316,   316,   178,   136,   111,   316,   353,   316,
     3905     316,   232,   313,   111,   111,   231,   232,   230,   232,   136,
     3906     230,   370,   375,   178,   136,   276,   281,   222,   237,   327,
     3907     331,   178,   136,   298,   232,   241,   134,   232,   232,   296,
     3908     252,   250,   262,   278,   261,   232,   298,   134,   134,   309,
     3909     136,   141,   275,     3,   137,   212,   213,   227,   229,   232,
     3910     136,   315,   111,   315,   169,   323,   232,   111,   136,   276,
     3911     116,    33,    34,    35,   230,   290,   291,   293,   136,   130,
     3912     133,   295,   136,   233,   238,   239,   276,   319,   320,   321,
     3913     111,   143,   111,   153,   111,   153,   156,   111,   153,   111,
     3914     111,   153,   153,   113,   169,   174,   178,   230,   279,   370,
     3915     374,   136,    81,    83,    87,    88,    89,   111,   113,   115,
     3916     116,    99,   100,   101,   102,   103,   104,   105,   106,   107,
     3917     108,   109,   133,   171,   156,   156,   119,   125,   126,   121,
     3918     122,    90,    91,    92,    93,   127,   128,    94,    95,   120,
     3919     129,   130,    96,    97,   131,   111,   154,   349,   350,   351,
     3920     352,   353,   112,   118,   111,   353,   354,   111,   353,   354,
     3921     136,   230,   372,   114,   136,   137,   230,   232,   365,   366,
     3922     374,   375,   137,   111,   113,   154,   323,   340,   341,   342,
     3923     343,   344,   345,   346,   347,   348,   354,   355,   356,   357,
     3924     358,   359,   360,   154,   374,   232,   137,   137,   154,   230,
     3925     232,   367,   276,   230,   354,   367,   276,   136,   136,   136,
     3926     136,    72,   113,   115,   142,   278,   282,   283,   284,   285,
     3927     286,   136,   136,   136,   136,   136,   136,   313,   112,   112,
     3928     112,   112,   112,   112,   112,   322,   335,   111,   281,   114,
     3929     212,   136,   313,   174,   280,   174,   280,   313,   113,   212,
     3930     315,   178,   136,   212,   112,    40,   113,   117,   230,   253,
     3931     254,   255,   370,   116,   118,   376,   133,   263,   116,   232,
     3932     268,   269,   270,   273,   274,   112,   118,   178,   136,   119,
     3933     169,   136,   229,   232,   267,   366,   374,   307,   308,   111,
     3934     154,   340,   112,   118,   133,   377,   278,   290,   111,   116,
     3935     278,   280,   290,   112,   118,   111,   143,   112,   132,   279,
     3936     279,   279,   148,   169,   280,   279,   136,   112,   118,   112,
     3937     111,   154,   353,   361,   362,   363,   364,   112,   118,   169,
     3938     113,   141,   147,   148,   136,   113,   141,   147,   169,   156,
     3939     156,   156,   157,   157,   158,   158,   159,   159,   159,   159,
     3940     160,   160,   161,   162,   163,   164,   165,   132,   174,   136,
     3941     350,   351,   352,   232,   349,   316,   316,   169,   280,   136,
     3942     275,   230,   354,   367,   232,   236,   114,   374,   114,   111,
     3943     136,   323,   341,   342,   343,   346,   356,   357,   358,   114,
     3944     136,   232,   340,   344,   355,   111,   316,   359,   377,   316,
     3945     316,   377,   111,   316,   359,   316,   316,   316,   316,   354,
     3946     230,   365,   375,   276,   114,   118,   114,   118,   377,   230,
     3947     367,   377,   264,   265,   266,   267,   264,   276,   169,   136,
     3948     113,   278,   132,   118,   376,   282,   113,   132,   286,    29,
     3949     214,   215,   276,   264,   141,   313,   141,   315,   111,   353,
     3950     354,   111,   353,   354,   144,   354,   178,   268,   112,   112,
     3951     112,   112,   136,   178,   212,   178,   116,   254,   255,   136,
     3952     111,   132,   154,   256,   258,   322,   323,   335,   361,   118,
     3953     134,   118,   134,   278,   252,   278,   117,   167,   168,   262,
     3954     137,   137,   141,   227,   137,   137,   264,   111,   154,   374,
     3955     137,   117,   232,   291,   169,   292,   137,   136,   136,   111,
     3956     137,   112,   320,   174,   175,   132,   134,   113,   143,   205,
     3957     206,   207,   112,   118,   112,   112,   112,   112,   169,   362,
     3958     363,   364,   232,   361,   316,   316,   116,   156,   169,   170,
     3959     173,   118,   136,   112,   118,   169,   136,   117,   167,   132,
     3960     268,   112,   112,   112,   349,   268,   112,   230,   367,   113,
     3961     119,   154,   169,   169,   232,   346,   268,   112,   112,   112,
     3962     112,   112,   112,   112,     7,   232,   340,   344,   355,   136,
     3963     136,   377,   136,   136,   137,   137,   137,   137,   281,   167,
     3964     168,   169,   314,   136,   282,   284,   117,   136,   216,   278,
     3965      40,    41,    43,    46,    47,    48,    49,    50,    51,    52,
     3966      53,    57,    61,    62,    72,   129,   175,   176,   177,   178,
     3967     179,   180,   182,   183,   195,   197,   198,   203,   217,   312,
     3968      29,   137,   133,   281,   136,   136,   112,   137,   178,   252,
     3969     134,   134,   323,   168,   232,   257,   258,   257,   278,   316,
     3970     117,   263,   376,   112,   118,   114,   114,   137,   232,   118,
     3971     377,   294,   112,   290,   220,   222,   230,   302,   303,   304,
     3972     305,   296,   112,   112,   132,   168,   111,   112,   132,   118,
     3973     141,   112,   112,   112,   361,   283,   118,   137,   173,    79,
     3974      82,    84,   141,   149,   150,   151,   148,   137,   149,   167,
     3975     137,   111,   353,   354,   137,   136,   137,   137,   137,   169,
     3976     112,   137,   111,   353,   354,   111,   359,   111,   359,   354,
     3977     231,     7,   119,   137,   169,   268,   268,   267,   271,   271,
     3978     272,   112,   118,   118,   112,    98,   124,   137,   137,   149,
     3979     282,   169,   118,   134,   217,   221,   232,   236,   111,   111,
     3980     176,   111,   111,    72,   134,    72,   134,    72,   119,   175,
     3981     111,   178,   170,   170,   132,   146,   134,   137,   136,   137,
     3982     216,   112,   169,   268,   268,   316,   112,   117,   256,   117,
     3983     136,   112,   136,   137,   313,   117,   136,   137,   137,   112,
     3984     116,   205,   114,   168,   134,   205,   207,   112,   111,   353,
     3985     354,   376,   170,   114,   137,   152,   113,   150,   152,   152,
     3986     118,   137,    87,   115,   114,   137,   112,   136,   112,   114,
     3987     114,   114,   137,   112,   136,   136,   136,   169,   169,   137,
     3988     114,   137,   137,   137,   137,   136,   136,   168,   168,   114,
     3989     114,   137,   278,   232,   174,   174,    47,   174,   136,   134,
     3990     134,   134,   174,   134,   174,    58,    59,    60,   199,   200,
     3991     201,   134,    63,   134,   316,   116,   180,   117,   134,   137,
     3992     137,    98,   273,   274,   112,   303,   118,   134,   118,   134,
     3993     117,   301,   132,   143,   112,   112,   132,   136,   117,   114,
     3994      83,   136,   150,   114,   113,   150,   113,   150,   114,   268,
     3995     114,   268,   268,   268,   137,   137,   114,   114,   112,   112,
     3996     114,   118,    98,   267,    98,   137,   114,   112,   112,   111,
     3997     112,   175,   196,   217,   134,   112,   111,   111,   178,   201,
     3998      58,    59,   169,   176,   147,   112,   112,   116,   136,   136,
     3999     302,   143,   208,   111,   134,   208,   268,   149,   136,   136,
     4000     137,   137,   137,   137,   114,   114,   136,   137,   114,   176,
     4001      44,    45,   116,   186,   187,   188,   174,   176,   137,   112,
     4002     175,   116,   188,    98,   136,    98,   136,   111,   111,   134,
     4003     117,   136,   276,   313,   117,   118,   132,   168,   112,   137,
     4004     137,   149,   149,   112,   112,   112,   112,   271,    42,   168,
     4005     184,   185,   314,   132,   136,   176,   186,   112,   134,   176,
     4006     134,   136,   112,   136,   112,   136,    98,   136,    98,   136,
     4007     134,   302,   143,   141,   209,   112,   134,   112,   114,   137,
     4008     137,   176,    98,   118,   132,   137,   210,   211,   217,   134,
     4009     175,   175,   210,   178,   202,   230,   370,   178,   202,   112,
     4010     136,   112,   136,   117,   112,   118,   114,   114,   168,   184,
     4011     187,   189,   190,   136,   134,   187,   191,   192,   137,   111,
     4012     154,   313,   361,   141,   137,   178,   202,   178,   202,   111,
     4013     134,   141,   176,   181,   117,   187,   217,   175,    56,   181,
     4014     194,   117,   187,   112,   232,   112,   137,   137,   296,   176,
     4015     181,   134,   193,   194,   181,   194,   178,   178,   112,   112,
     4016     112,   193,   137,   137,   178,   178,   137,   137
    40944017};
    40954018
     
    49284851
    49294852/* Line 1806 of yacc.c  */
    4930 #line 306 "parser.yy"
     4853#line 305 "parser.yy"
    49314854    { typedefTable.enterScope(); }
    49324855    break;
     
    49354858
    49364859/* Line 1806 of yacc.c  */
    4937 #line 310 "parser.yy"
     4860#line 309 "parser.yy"
    49384861    { typedefTable.leaveScope(); }
    49394862    break;
     
    49424865
    49434866/* Line 1806 of yacc.c  */
     4867#line 316 "parser.yy"
     4868    { (yyval.en) = new ExpressionNode( build_constantInteger( *(yyvsp[(1) - (1)].tok) ) ); }
     4869    break;
     4870
     4871  case 5:
     4872
     4873/* Line 1806 of yacc.c  */
    49444874#line 317 "parser.yy"
    4945     { (yyval.en) = new ExpressionNode( build_constantInteger( *(yyvsp[(1) - (1)].tok) ) ); }
    4946     break;
    4947 
    4948   case 5:
     4875    { (yyval.en) = new ExpressionNode( build_constantFloat( *(yyvsp[(1) - (1)].tok) ) ); }
     4876    break;
     4877
     4878  case 6:
    49494879
    49504880/* Line 1806 of yacc.c  */
     
    49534883    break;
    49544884
    4955   case 6:
     4885  case 7:
    49564886
    49574887/* Line 1806 of yacc.c  */
     
    49604890    break;
    49614891
    4962   case 7:
     4892  case 8:
    49634893
    49644894/* Line 1806 of yacc.c  */
    49654895#line 320 "parser.yy"
    4966     { (yyval.en) = new ExpressionNode( build_constantFloat( *(yyvsp[(1) - (1)].tok) ) ); }
    4967     break;
    4968 
    4969   case 8:
    4970 
    4971 /* Line 1806 of yacc.c  */
    4972 #line 321 "parser.yy"
    49734896    { (yyval.en) = new ExpressionNode( build_constantChar( *(yyvsp[(1) - (1)].tok) ) ); }
    49744897    break;
     
    49774900
    49784901/* Line 1806 of yacc.c  */
    4979 #line 346 "parser.yy"
     4902#line 345 "parser.yy"
    49804903    { (yyval.constant) = build_constantStr( *(yyvsp[(1) - (1)].str) ); }
    49814904    break;
     
    49844907
    49854908/* Line 1806 of yacc.c  */
    4986 #line 350 "parser.yy"
     4909#line 349 "parser.yy"
    49874910    { (yyval.str) = (yyvsp[(1) - (1)].tok); }
    49884911    break;
     
    49914914
    49924915/* Line 1806 of yacc.c  */
    4993 #line 352 "parser.yy"
     4916#line 351 "parser.yy"
    49944917    {
    49954918                        appendStr( (yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].tok) );                                            // append 2nd juxtaposed string to 1st
     
    50024925
    50034926/* Line 1806 of yacc.c  */
    5004 #line 363 "parser.yy"
     4927#line 362 "parser.yy"
    50054928    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (1)].tok) ) ); }
    50064929    break;
     
    50094932
    50104933/* Line 1806 of yacc.c  */
    5011 #line 365 "parser.yy"
    5012     { (yyval.en) = new ExpressionNode( build_constantZeroOne( *(yyvsp[(1) - (1)].tok) ) ); }
     4934#line 364 "parser.yy"
     4935    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (1)].tok) ) ); }
    50134936    break;
    50144937
     
    50164939
    50174940/* Line 1806 of yacc.c  */
    5018 #line 368 "parser.yy"
     4941#line 367 "parser.yy"
    50194942    { (yyval.en) = (yyvsp[(2) - (3)].en); }
    50204943    break;
     
    50234946
    50244947/* Line 1806 of yacc.c  */
    5025 #line 370 "parser.yy"
     4948#line 369 "parser.yy"
    50264949    { (yyval.en) = new ExpressionNode( build_valexpr( (yyvsp[(2) - (3)].sn) ) ); }
    50274950    break;
     
    50304953
    50314954/* Line 1806 of yacc.c  */
    5032 #line 380 "parser.yy"
     4955#line 379 "parser.yy"
    50334956    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Index, (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en) ) ); }
    50344957    break;
     
    50374960
    50384961/* Line 1806 of yacc.c  */
    5039 #line 382 "parser.yy"
     4962#line 381 "parser.yy"
    50404963    { (yyval.en) = new ExpressionNode( build_func( (yyvsp[(1) - (4)].en), (yyvsp[(3) - (4)].en) ) ); }
    50414964    break;
     
    50444967
    50454968/* Line 1806 of yacc.c  */
    5046 #line 384 "parser.yy"
     4969#line 383 "parser.yy"
    50474970    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(1) - (3)].en), build_varref( (yyvsp[(3) - (3)].tok) ) ) ); }
    50484971    break;
     
    50514974
    50524975/* Line 1806 of yacc.c  */
    5053 #line 386 "parser.yy"
     4976#line 385 "parser.yy"
    50544977    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(1) - (7)].en), build_tuple( (yyvsp[(5) - (7)].en) ) ) ); }
    50554978    break;
     
    50584981
    50594982/* Line 1806 of yacc.c  */
    5060 #line 388 "parser.yy"
     4983#line 387 "parser.yy"
    50614984    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(1) - (2)].en), build_field_name_REALFRACTIONconstant( *(yyvsp[(2) - (2)].tok) ) ) ); }
    50624985    break;
     
    50654988
    50664989/* Line 1806 of yacc.c  */
    5067 #line 390 "parser.yy"
     4990#line 389 "parser.yy"
    50684991    { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(1) - (3)].en), build_varref( (yyvsp[(3) - (3)].tok) ) ) ); }
    50694992    break;
     
    50724995
    50734996/* Line 1806 of yacc.c  */
    5074 #line 392 "parser.yy"
     4997#line 391 "parser.yy"
    50754998    { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(1) - (7)].en), build_tuple( (yyvsp[(5) - (7)].en) ) ) ); }
    50764999    break;
     
    50795002
    50805003/* Line 1806 of yacc.c  */
    5081 #line 394 "parser.yy"
     5004#line 393 "parser.yy"
    50825005    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::IncrPost, (yyvsp[(1) - (2)].en) ) ); }
    50835006    break;
     
    50865009
    50875010/* Line 1806 of yacc.c  */
    5088 #line 396 "parser.yy"
     5011#line 395 "parser.yy"
    50895012    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::DecrPost, (yyvsp[(1) - (2)].en) ) ); }
    50905013    break;
     
    50935016
    50945017/* Line 1806 of yacc.c  */
    5095 #line 398 "parser.yy"
     5018#line 397 "parser.yy"
    50965019    { (yyval.en) = new ExpressionNode( build_compoundLiteral( (yyvsp[(2) - (7)].decl), new InitializerNode( (yyvsp[(5) - (7)].in), true ) ) ); }
    50975020    break;
     
    51005023
    51015024/* Line 1806 of yacc.c  */
    5102 #line 400 "parser.yy"
     5025#line 399 "parser.yy"
    51035026    {
    51045027                        Token fn;
     
    51115034
    51125035/* Line 1806 of yacc.c  */
    5113 #line 410 "parser.yy"
     5036#line 409 "parser.yy"
    51145037    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) )); }
    51155038    break;
     
    51185041
    51195042/* Line 1806 of yacc.c  */
    5120 #line 415 "parser.yy"
     5043#line 414 "parser.yy"
     5044    { (yyval.en) = 0; }
     5045    break;
     5046
     5047  case 43:
     5048
     5049/* Line 1806 of yacc.c  */
     5050#line 420 "parser.yy"
     5051    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) ); }
     5052    break;
     5053
     5054  case 45:
     5055
     5056/* Line 1806 of yacc.c  */
     5057#line 426 "parser.yy"
     5058    { (yyval.en) = new ExpressionNode( build_fieldSel( new ExpressionNode( build_field_name_REALDECIMALconstant( *(yyvsp[(1) - (2)].tok) ) ), maybeMoveBuild<Expression>( (yyvsp[(2) - (2)].en) ) ) ); }
     5059    break;
     5060
     5061  case 46:
     5062
     5063/* Line 1806 of yacc.c  */
     5064#line 428 "parser.yy"
     5065    { (yyval.en) = new ExpressionNode( build_fieldSel( new ExpressionNode( build_field_name_REALDECIMALconstant( *(yyvsp[(1) - (6)].tok) ) ), build_tuple( (yyvsp[(4) - (6)].en) ) ) ); }
     5066    break;
     5067
     5068  case 47:
     5069
     5070/* Line 1806 of yacc.c  */
     5071#line 430 "parser.yy"
     5072    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(1) - (3)].en), maybeMoveBuild<Expression>( (yyvsp[(3) - (3)].en) ) ) ); }
     5073    break;
     5074
     5075  case 48:
     5076
     5077/* Line 1806 of yacc.c  */
     5078#line 432 "parser.yy"
     5079    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(1) - (7)].en), build_tuple( (yyvsp[(5) - (7)].en) ) ) ); }
     5080    break;
     5081
     5082  case 49:
     5083
     5084/* Line 1806 of yacc.c  */
     5085#line 434 "parser.yy"
     5086    { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(1) - (3)].en), maybeMoveBuild<Expression>( (yyvsp[(3) - (3)].en) ) ) ); }
     5087    break;
     5088
     5089  case 50:
     5090
     5091/* Line 1806 of yacc.c  */
     5092#line 436 "parser.yy"
     5093    { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(1) - (7)].en), build_tuple( (yyvsp[(5) - (7)].en) ) ) ); }
     5094    break;
     5095
     5096  case 51:
     5097
     5098/* Line 1806 of yacc.c  */
     5099#line 441 "parser.yy"
     5100    { (yyval.en) = new ExpressionNode( build_field_name_fraction_constants( build_constantInteger( *(yyvsp[(1) - (2)].tok) ), (yyvsp[(2) - (2)].en) ) ); }
     5101    break;
     5102
     5103  case 52:
     5104
     5105/* Line 1806 of yacc.c  */
     5106#line 443 "parser.yy"
     5107    { (yyval.en) = new ExpressionNode( build_field_name_fraction_constants( build_field_name_FLOATINGconstant( *(yyvsp[(1) - (2)].tok) ), (yyvsp[(2) - (2)].en) ) ); }
     5108    break;
     5109
     5110  case 53:
     5111
     5112/* Line 1806 of yacc.c  */
     5113#line 445 "parser.yy"
     5114    { (yyval.en) = new ExpressionNode( build_field_name_fraction_constants( build_varref( (yyvsp[(1) - (2)].tok) ), (yyvsp[(2) - (2)].en) ) ); }
     5115    break;
     5116
     5117  case 54:
     5118
     5119/* Line 1806 of yacc.c  */
     5120#line 450 "parser.yy"
    51215121    { (yyval.en) = nullptr; }
    51225122    break;
    51235123
    5124   case 43:
    5125 
    5126 /* Line 1806 of yacc.c  */
    5127 #line 421 "parser.yy"
    5128     { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) ); }
    5129     break;
    5130 
    5131   case 45:
    5132 
    5133 /* Line 1806 of yacc.c  */
    5134 #line 427 "parser.yy"
    5135     { (yyval.en) = new ExpressionNode( build_fieldSel( new ExpressionNode( build_field_name_REALDECIMALconstant( *(yyvsp[(1) - (2)].tok) ) ), maybeMoveBuild<Expression>( (yyvsp[(2) - (2)].en) ) ) ); }
    5136     break;
    5137 
    5138   case 46:
    5139 
    5140 /* Line 1806 of yacc.c  */
    5141 #line 429 "parser.yy"
    5142     { (yyval.en) = new ExpressionNode( build_fieldSel( new ExpressionNode( build_field_name_REALDECIMALconstant( *(yyvsp[(1) - (6)].tok) ) ), build_tuple( (yyvsp[(4) - (6)].en) ) ) ); }
    5143     break;
    5144 
    5145   case 47:
    5146 
    5147 /* Line 1806 of yacc.c  */
    5148 #line 431 "parser.yy"
    5149     { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(1) - (3)].en), maybeMoveBuild<Expression>( (yyvsp[(3) - (3)].en) ) ) ); }
    5150     break;
    5151 
    5152   case 48:
    5153 
    5154 /* Line 1806 of yacc.c  */
    5155 #line 433 "parser.yy"
    5156     { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(1) - (7)].en), build_tuple( (yyvsp[(5) - (7)].en) ) ) ); }
    5157     break;
    5158 
    5159   case 49:
    5160 
    5161 /* Line 1806 of yacc.c  */
    5162 #line 435 "parser.yy"
    5163     { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(1) - (3)].en), maybeMoveBuild<Expression>( (yyvsp[(3) - (3)].en) ) ) ); }
    5164     break;
    5165 
    5166   case 50:
    5167 
    5168 /* Line 1806 of yacc.c  */
    5169 #line 437 "parser.yy"
    5170     { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(1) - (7)].en), build_tuple( (yyvsp[(5) - (7)].en) ) ) ); }
    5171     break;
    5172 
    5173   case 51:
    5174 
    5175 /* Line 1806 of yacc.c  */
    5176 #line 442 "parser.yy"
    5177     { (yyval.en) = new ExpressionNode( build_field_name_fraction_constants( build_constantInteger( *(yyvsp[(1) - (2)].tok) ), (yyvsp[(2) - (2)].en) ) ); }
    5178     break;
    5179 
    5180   case 52:
    5181 
    5182 /* Line 1806 of yacc.c  */
    5183 #line 444 "parser.yy"
    5184     { (yyval.en) = new ExpressionNode( build_field_name_fraction_constants( build_field_name_FLOATINGconstant( *(yyvsp[(1) - (2)].tok) ), (yyvsp[(2) - (2)].en) ) ); }
    5185     break;
    5186 
    5187   case 53:
    5188 
    5189 /* Line 1806 of yacc.c  */
    5190 #line 446 "parser.yy"
    5191     {
    5192                         if( (*(yyvsp[(1) - (2)].tok)) == "0" || (*(yyvsp[(1) - (2)].tok)) == "1" ) {
    5193                                 (yyval.en) = new ExpressionNode( build_field_name_fraction_constants( build_constantZeroOne( *(yyvsp[(1) - (2)].tok) ), (yyvsp[(2) - (2)].en) ) );
    5194                         } else {
    5195                                 (yyval.en) = new ExpressionNode( build_field_name_fraction_constants( build_varref( (yyvsp[(1) - (2)].tok) ), (yyvsp[(2) - (2)].en) ) );
    5196                         }
    5197                 }
    5198     break;
    5199 
    5200   case 54:
    5201 
    5202 /* Line 1806 of yacc.c  */
    5203 #line 457 "parser.yy"
    5204     { (yyval.en) = nullptr; }
    5205     break;
    5206 
    52075124  case 55:
    52085125
    52095126/* Line 1806 of yacc.c  */
    5210 #line 459 "parser.yy"
     5127#line 452 "parser.yy"
    52115128    {
    52125129                        Expression * constant = build_field_name_REALFRACTIONconstant( *(yyvsp[(2) - (2)].tok) );
     
    52185135
    52195136/* Line 1806 of yacc.c  */
    5220 #line 470 "parser.yy"
     5137#line 463 "parser.yy"
    52215138    { (yyval.en) = (yyvsp[(1) - (1)].en); }
    52225139    break;
     
    52255142
    52265143/* Line 1806 of yacc.c  */
     5144#line 465 "parser.yy"
     5145    { (yyval.en) = new ExpressionNode( (yyvsp[(1) - (1)].constant) ); }
     5146    break;
     5147
     5148  case 59:
     5149
     5150/* Line 1806 of yacc.c  */
     5151#line 467 "parser.yy"
     5152    { (yyval.en) = (yyvsp[(2) - (2)].en)->set_extension( true ); }
     5153    break;
     5154
     5155  case 60:
     5156
     5157/* Line 1806 of yacc.c  */
    52275158#line 472 "parser.yy"
    5228     { (yyval.en) = new ExpressionNode( (yyvsp[(1) - (1)].constant) ); }
    5229     break;
    5230 
    5231   case 59:
    5232 
    5233 /* Line 1806 of yacc.c  */
    5234 #line 474 "parser.yy"
    5235     { (yyval.en) = (yyvsp[(2) - (2)].en)->set_extension( true ); }
    5236     break;
    5237 
    5238   case 60:
    5239 
    5240 /* Line 1806 of yacc.c  */
    5241 #line 479 "parser.yy"
    52425159    {
    52435160                        switch ( (yyvsp[(1) - (2)].op) ) {
     
    52575174
    52585175/* Line 1806 of yacc.c  */
    5259 #line 492 "parser.yy"
     5176#line 485 "parser.yy"
    52605177    { (yyval.en) = new ExpressionNode( build_unary_val( (yyvsp[(1) - (2)].op), (yyvsp[(2) - (2)].en) ) ); }
    52615178    break;
     
    52645181
    52655182/* Line 1806 of yacc.c  */
    5266 #line 494 "parser.yy"
     5183#line 487 "parser.yy"
    52675184    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::Incr, (yyvsp[(2) - (2)].en) ) ); }
    52685185    break;
     
    52715188
    52725189/* Line 1806 of yacc.c  */
    5273 #line 496 "parser.yy"
     5190#line 489 "parser.yy"
    52745191    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::Decr, (yyvsp[(2) - (2)].en) ) ); }
    52755192    break;
     
    52785195
    52795196/* Line 1806 of yacc.c  */
    5280 #line 498 "parser.yy"
     5197#line 491 "parser.yy"
    52815198    { (yyval.en) = new ExpressionNode( build_sizeOfexpr( (yyvsp[(2) - (2)].en) ) ); }
    52825199    break;
     
    52855202
    52865203/* Line 1806 of yacc.c  */
    5287 #line 500 "parser.yy"
     5204#line 493 "parser.yy"
    52885205    { (yyval.en) = new ExpressionNode( build_sizeOftype( (yyvsp[(3) - (4)].decl) ) ); }
    52895206    break;
     
    52925209
    52935210/* Line 1806 of yacc.c  */
    5294 #line 502 "parser.yy"
     5211#line 495 "parser.yy"
    52955212    { (yyval.en) = new ExpressionNode( build_alignOfexpr( (yyvsp[(2) - (2)].en) ) ); }
    52965213    break;
     
    52995216
    53005217/* Line 1806 of yacc.c  */
    5301 #line 504 "parser.yy"
     5218#line 497 "parser.yy"
    53025219    { (yyval.en) = new ExpressionNode( build_alignOftype( (yyvsp[(3) - (4)].decl) ) ); }
    53035220    break;
     
    53065223
    53075224/* Line 1806 of yacc.c  */
    5308 #line 506 "parser.yy"
     5225#line 499 "parser.yy"
    53095226    { (yyval.en) = new ExpressionNode( build_offsetOf( (yyvsp[(3) - (6)].decl), build_varref( (yyvsp[(5) - (6)].tok) ) ) ); }
    53105227    break;
     
    53135230
    53145231/* Line 1806 of yacc.c  */
    5315 #line 508 "parser.yy"
     5232#line 501 "parser.yy"
    53165233    { (yyval.en) = new ExpressionNode( build_attrexpr( build_varref( (yyvsp[(1) - (1)].tok) ), nullptr ) ); }
    53175234    break;
     
    53205237
    53215238/* Line 1806 of yacc.c  */
    5322 #line 510 "parser.yy"
     5239#line 503 "parser.yy"
    53235240    { (yyval.en) = new ExpressionNode( build_attrexpr( build_varref( (yyvsp[(1) - (4)].tok) ), (yyvsp[(3) - (4)].en) ) ); }
    53245241    break;
     
    53275244
    53285245/* Line 1806 of yacc.c  */
     5246#line 505 "parser.yy"
     5247    { (yyval.en) = new ExpressionNode( build_attrtype( build_varref( (yyvsp[(1) - (4)].tok) ), (yyvsp[(3) - (4)].decl) ) ); }
     5248    break;
     5249
     5250  case 72:
     5251
     5252/* Line 1806 of yacc.c  */
     5253#line 511 "parser.yy"
     5254    { (yyval.op) = OperKinds::PointTo; }
     5255    break;
     5256
     5257  case 73:
     5258
     5259/* Line 1806 of yacc.c  */
    53295260#line 512 "parser.yy"
    5330     { (yyval.en) = new ExpressionNode( build_attrtype( build_varref( (yyvsp[(1) - (4)].tok) ), (yyvsp[(3) - (4)].decl) ) ); }
    5331     break;
    5332 
    5333   case 72:
     5261    { (yyval.op) = OperKinds::AddressOf; }
     5262    break;
     5263
     5264  case 74:
    53345265
    53355266/* Line 1806 of yacc.c  */
    53365267#line 518 "parser.yy"
    5337     { (yyval.op) = OperKinds::PointTo; }
    5338     break;
    5339 
    5340   case 73:
     5268    { (yyval.op) = OperKinds::UnPlus; }
     5269    break;
     5270
     5271  case 75:
    53415272
    53425273/* Line 1806 of yacc.c  */
    53435274#line 519 "parser.yy"
    5344     { (yyval.op) = OperKinds::AddressOf; }
    5345     break;
    5346 
    5347   case 74:
    5348 
    5349 /* Line 1806 of yacc.c  */
    5350 #line 525 "parser.yy"
    5351     { (yyval.op) = OperKinds::UnPlus; }
    5352     break;
    5353 
    5354   case 75:
    5355 
    5356 /* Line 1806 of yacc.c  */
    5357 #line 526 "parser.yy"
    53585275    { (yyval.op) = OperKinds::UnMinus; }
    53595276    break;
     
    53625279
    53635280/* Line 1806 of yacc.c  */
     5281#line 520 "parser.yy"
     5282    { (yyval.op) = OperKinds::Neg; }
     5283    break;
     5284
     5285  case 77:
     5286
     5287/* Line 1806 of yacc.c  */
     5288#line 521 "parser.yy"
     5289    { (yyval.op) = OperKinds::BitNeg; }
     5290    break;
     5291
     5292  case 79:
     5293
     5294/* Line 1806 of yacc.c  */
    53645295#line 527 "parser.yy"
    5365     { (yyval.op) = OperKinds::Neg; }
    5366     break;
    5367 
    5368   case 77:
    5369 
    5370 /* Line 1806 of yacc.c  */
    5371 #line 528 "parser.yy"
    5372     { (yyval.op) = OperKinds::BitNeg; }
    5373     break;
    5374 
    5375   case 79:
    5376 
    5377 /* Line 1806 of yacc.c  */
    5378 #line 534 "parser.yy"
    53795296    { (yyval.en) = new ExpressionNode( build_cast( (yyvsp[(2) - (4)].decl), (yyvsp[(4) - (4)].en) ) ); }
    53805297    break;
     
    53835300
    53845301/* Line 1806 of yacc.c  */
    5385 #line 542 "parser.yy"
     5302#line 535 "parser.yy"
    53865303    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Mul, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    53875304    break;
     
    53905307
    53915308/* Line 1806 of yacc.c  */
    5392 #line 544 "parser.yy"
     5309#line 537 "parser.yy"
    53935310    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Div, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    53945311    break;
     
    53975314
    53985315/* Line 1806 of yacc.c  */
    5399 #line 546 "parser.yy"
     5316#line 539 "parser.yy"
    54005317    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Mod, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54015318    break;
     
    54045321
    54055322/* Line 1806 of yacc.c  */
    5406 #line 552 "parser.yy"
     5323#line 545 "parser.yy"
    54075324    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Plus, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54085325    break;
     
    54115328
    54125329/* Line 1806 of yacc.c  */
    5413 #line 554 "parser.yy"
     5330#line 547 "parser.yy"
    54145331    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Minus, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54155332    break;
     
    54185335
    54195336/* Line 1806 of yacc.c  */
    5420 #line 560 "parser.yy"
     5337#line 553 "parser.yy"
    54215338    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LShift, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54225339    break;
     
    54255342
    54265343/* Line 1806 of yacc.c  */
    5427 #line 562 "parser.yy"
     5344#line 555 "parser.yy"
    54285345    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::RShift, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54295346    break;
     
    54325349
    54335350/* Line 1806 of yacc.c  */
    5434 #line 568 "parser.yy"
     5351#line 561 "parser.yy"
    54355352    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54365353    break;
     
    54395356
    54405357/* Line 1806 of yacc.c  */
    5441 #line 570 "parser.yy"
     5358#line 563 "parser.yy"
    54425359    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::GThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54435360    break;
     
    54465363
    54475364/* Line 1806 of yacc.c  */
    5448 #line 572 "parser.yy"
     5365#line 565 "parser.yy"
    54495366    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LEThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54505367    break;
     
    54535370
    54545371/* Line 1806 of yacc.c  */
    5455 #line 574 "parser.yy"
     5372#line 567 "parser.yy"
    54565373    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::GEThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54575374    break;
     
    54605377
    54615378/* Line 1806 of yacc.c  */
    5462 #line 580 "parser.yy"
     5379#line 573 "parser.yy"
    54635380    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Eq, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54645381    break;
     
    54675384
    54685385/* Line 1806 of yacc.c  */
    5469 #line 582 "parser.yy"
     5386#line 575 "parser.yy"
    54705387    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Neq, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54715388    break;
     
    54745391
    54755392/* Line 1806 of yacc.c  */
    5476 #line 588 "parser.yy"
     5393#line 581 "parser.yy"
    54775394    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::BitAnd, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54785395    break;
     
    54815398
    54825399/* Line 1806 of yacc.c  */
    5483 #line 594 "parser.yy"
     5400#line 587 "parser.yy"
    54845401    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Xor, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54855402    break;
     
    54885405
    54895406/* Line 1806 of yacc.c  */
    5490 #line 600 "parser.yy"
     5407#line 593 "parser.yy"
    54915408    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::BitOr, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54925409    break;
     
    54955412
    54965413/* Line 1806 of yacc.c  */
    5497 #line 606 "parser.yy"
     5414#line 599 "parser.yy"
    54985415    { (yyval.en) = new ExpressionNode( build_and_or( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en), true ) ); }
    54995416    break;
     
    55025419
    55035420/* Line 1806 of yacc.c  */
    5504 #line 612 "parser.yy"
     5421#line 605 "parser.yy"
    55055422    { (yyval.en) = new ExpressionNode( build_and_or( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en), false ) ); }
    55065423    break;
     
    55095426
    55105427/* Line 1806 of yacc.c  */
    5511 #line 618 "parser.yy"
     5428#line 611 "parser.yy"
    55125429    { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[(1) - (5)].en), (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].en) ) ); }
    55135430    break;
     
    55165433
    55175434/* Line 1806 of yacc.c  */
    5518 #line 621 "parser.yy"
     5435#line 614 "parser.yy"
    55195436    { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[(1) - (4)].en), (yyvsp[(1) - (4)].en), (yyvsp[(4) - (4)].en) ) ); }
    55205437    break;
     
    55235440
    55245441/* Line 1806 of yacc.c  */
     5442#line 627 "parser.yy"
     5443    { (yyval.en) = new ExpressionNode( build_binary_ptr( (yyvsp[(2) - (3)].op), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     5444    break;
     5445
     5446  case 114:
     5447
     5448/* Line 1806 of yacc.c  */
    55255449#line 634 "parser.yy"
    5526     { (yyval.en) = new ExpressionNode( build_binary_ptr( (yyvsp[(2) - (3)].op), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    5527     break;
    5528 
    5529   case 114:
     5450    { (yyval.en) = nullptr; }
     5451    break;
     5452
     5453  case 116:
     5454
     5455/* Line 1806 of yacc.c  */
     5456#line 639 "parser.yy"
     5457    { (yyval.op) = OperKinds::Assign; }
     5458    break;
     5459
     5460  case 117:
     5461
     5462/* Line 1806 of yacc.c  */
     5463#line 640 "parser.yy"
     5464    { (yyval.op) = OperKinds::AtAssn; }
     5465    break;
     5466
     5467  case 118:
    55305468
    55315469/* Line 1806 of yacc.c  */
    55325470#line 641 "parser.yy"
    5533     { (yyval.en) = nullptr; }
    5534     break;
    5535 
    5536   case 116:
     5471    { (yyval.op) = OperKinds::MulAssn; }
     5472    break;
     5473
     5474  case 119:
     5475
     5476/* Line 1806 of yacc.c  */
     5477#line 642 "parser.yy"
     5478    { (yyval.op) = OperKinds::DivAssn; }
     5479    break;
     5480
     5481  case 120:
     5482
     5483/* Line 1806 of yacc.c  */
     5484#line 643 "parser.yy"
     5485    { (yyval.op) = OperKinds::ModAssn; }
     5486    break;
     5487
     5488  case 121:
     5489
     5490/* Line 1806 of yacc.c  */
     5491#line 644 "parser.yy"
     5492    { (yyval.op) = OperKinds::PlusAssn; }
     5493    break;
     5494
     5495  case 122:
     5496
     5497/* Line 1806 of yacc.c  */
     5498#line 645 "parser.yy"
     5499    { (yyval.op) = OperKinds::MinusAssn; }
     5500    break;
     5501
     5502  case 123:
    55375503
    55385504/* Line 1806 of yacc.c  */
    55395505#line 646 "parser.yy"
    5540     { (yyval.op) = OperKinds::Assign; }
    5541     break;
    5542 
    5543   case 117:
     5506    { (yyval.op) = OperKinds::LSAssn; }
     5507    break;
     5508
     5509  case 124:
    55445510
    55455511/* Line 1806 of yacc.c  */
    55465512#line 647 "parser.yy"
    5547     { (yyval.op) = OperKinds::AtAssn; }
    5548     break;
    5549 
    5550   case 118:
     5513    { (yyval.op) = OperKinds::RSAssn; }
     5514    break;
     5515
     5516  case 125:
    55515517
    55525518/* Line 1806 of yacc.c  */
    55535519#line 648 "parser.yy"
    5554     { (yyval.op) = OperKinds::MulAssn; }
    5555     break;
    5556 
    5557   case 119:
     5520    { (yyval.op) = OperKinds::AndAssn; }
     5521    break;
     5522
     5523  case 126:
    55585524
    55595525/* Line 1806 of yacc.c  */
    55605526#line 649 "parser.yy"
    5561     { (yyval.op) = OperKinds::DivAssn; }
    5562     break;
    5563 
    5564   case 120:
     5527    { (yyval.op) = OperKinds::ERAssn; }
     5528    break;
     5529
     5530  case 127:
    55655531
    55665532/* Line 1806 of yacc.c  */
    55675533#line 650 "parser.yy"
    5568     { (yyval.op) = OperKinds::ModAssn; }
    5569     break;
    5570 
    5571   case 121:
    5572 
    5573 /* Line 1806 of yacc.c  */
    5574 #line 651 "parser.yy"
    5575     { (yyval.op) = OperKinds::PlusAssn; }
    5576     break;
    5577 
    5578   case 122:
    5579 
    5580 /* Line 1806 of yacc.c  */
    5581 #line 652 "parser.yy"
    5582     { (yyval.op) = OperKinds::MinusAssn; }
    5583     break;
    5584 
    5585   case 123:
    5586 
    5587 /* Line 1806 of yacc.c  */
    5588 #line 653 "parser.yy"
    5589     { (yyval.op) = OperKinds::LSAssn; }
    5590     break;
    5591 
    5592   case 124:
    5593 
    5594 /* Line 1806 of yacc.c  */
    5595 #line 654 "parser.yy"
    5596     { (yyval.op) = OperKinds::RSAssn; }
    5597     break;
    5598 
    5599   case 125:
    5600 
    5601 /* Line 1806 of yacc.c  */
    5602 #line 655 "parser.yy"
    5603     { (yyval.op) = OperKinds::AndAssn; }
    5604     break;
    5605 
    5606   case 126:
    5607 
    5608 /* Line 1806 of yacc.c  */
    5609 #line 656 "parser.yy"
    5610     { (yyval.op) = OperKinds::ERAssn; }
    5611     break;
    5612 
    5613   case 127:
    5614 
    5615 /* Line 1806 of yacc.c  */
    5616 #line 657 "parser.yy"
    56175534    { (yyval.op) = OperKinds::OrAssn; }
    56185535    break;
     
    56215538
    56225539/* Line 1806 of yacc.c  */
    5623 #line 668 "parser.yy"
     5540#line 661 "parser.yy"
    56245541    { (yyval.en) = new ExpressionNode( build_tuple( (ExpressionNode *)(new ExpressionNode( nullptr ) )->set_last( (yyvsp[(4) - (6)].en) ) ) ); }
    56255542    break;
     
    56285545
    56295546/* Line 1806 of yacc.c  */
    5630 #line 670 "parser.yy"
     5547#line 663 "parser.yy"
    56315548    { (yyval.en) = new ExpressionNode( build_tuple( (ExpressionNode *)(yyvsp[(3) - (7)].en)->set_last( (yyvsp[(5) - (7)].en) ) ) ); }
    56325549    break;
     
    56355552
    56365553/* Line 1806 of yacc.c  */
    5637 #line 676 "parser.yy"
     5554#line 669 "parser.yy"
    56385555    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) ); }
    56395556    break;
     
    56425559
    56435560/* Line 1806 of yacc.c  */
    5644 #line 682 "parser.yy"
     5561#line 675 "parser.yy"
    56455562    { (yyval.en) = new ExpressionNode( build_comma( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    56465563    break;
     
    56495566
    56505567/* Line 1806 of yacc.c  */
    5651 #line 687 "parser.yy"
    5652     { (yyval.en) = nullptr; }
     5568#line 680 "parser.yy"
     5569    { (yyval.en) = 0; }
    56535570    break;
    56545571
     
    56565573
    56575574/* Line 1806 of yacc.c  */
     5575#line 689 "parser.yy"
     5576    { (yyval.sn) = (yyvsp[(1) - (1)].sn); }
     5577    break;
     5578
     5579  case 144:
     5580
     5581/* Line 1806 of yacc.c  */
    56585582#line 696 "parser.yy"
    5659     { (yyval.sn) = (yyvsp[(1) - (1)].sn); }
    5660     break;
    5661 
    5662   case 144:
    5663 
    5664 /* Line 1806 of yacc.c  */
    5665 #line 703 "parser.yy"
    56665583    {
    56675584                        Token fn;
     
    56745591
    56755592/* Line 1806 of yacc.c  */
    5676 #line 713 "parser.yy"
     5593#line 706 "parser.yy"
    56775594    {
    56785595                        (yyval.sn) = (yyvsp[(4) - (4)].sn)->add_label( (yyvsp[(1) - (4)].tok) );
     
    56835600
    56845601/* Line 1806 of yacc.c  */
     5602#line 713 "parser.yy"
     5603    { (yyval.sn) = new StatementNode( build_compound( (StatementNode *)0 ) ); }
     5604    break;
     5605
     5606  case 147:
     5607
     5608/* Line 1806 of yacc.c  */
    56855609#line 720 "parser.yy"
    5686     { (yyval.sn) = new StatementNode( build_compound( (StatementNode *)0 ) ); }
    5687     break;
    5688 
    5689   case 147:
    5690 
    5691 /* Line 1806 of yacc.c  */
    5692 #line 727 "parser.yy"
    56935610    { (yyval.sn) = new StatementNode( build_compound( (yyvsp[(5) - (7)].sn) ) ); }
    56945611    break;
     
    56975614
    56985615/* Line 1806 of yacc.c  */
     5616#line 726 "parser.yy"
     5617    { if ( (yyvsp[(1) - (3)].sn) != 0 ) { (yyvsp[(1) - (3)].sn)->set_last( (yyvsp[(3) - (3)].sn) ); (yyval.sn) = (yyvsp[(1) - (3)].sn); } }
     5618    break;
     5619
     5620  case 150:
     5621
     5622/* Line 1806 of yacc.c  */
     5623#line 731 "parser.yy"
     5624    { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); }
     5625    break;
     5626
     5627  case 151:
     5628
     5629/* Line 1806 of yacc.c  */
    56995630#line 733 "parser.yy"
    5700     { if ( (yyvsp[(1) - (3)].sn) != 0 ) { (yyvsp[(1) - (3)].sn)->set_last( (yyvsp[(3) - (3)].sn) ); (yyval.sn) = (yyvsp[(1) - (3)].sn); } }
    5701     break;
    5702 
    5703   case 150:
    5704 
    5705 /* Line 1806 of yacc.c  */
    5706 #line 738 "parser.yy"
    5707     { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); }
    5708     break;
    5709 
    5710   case 151:
    5711 
    5712 /* Line 1806 of yacc.c  */
    5713 #line 740 "parser.yy"
    57145631    {   // mark all fields in list
    57155632                        for ( DeclarationNode *iter = (yyvsp[(2) - (2)].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
     
    57225639
    57235640/* Line 1806 of yacc.c  */
     5641#line 739 "parser.yy"
     5642    { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); }
     5643    break;
     5644
     5645  case 155:
     5646
     5647/* Line 1806 of yacc.c  */
    57245648#line 746 "parser.yy"
    5725     { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); }
    5726     break;
    5727 
    5728   case 155:
    5729 
    5730 /* Line 1806 of yacc.c  */
    5731 #line 753 "parser.yy"
    57325649    { if ( (yyvsp[(1) - (2)].sn) != 0 ) { (yyvsp[(1) - (2)].sn)->set_last( (yyvsp[(2) - (2)].sn) ); (yyval.sn) = (yyvsp[(1) - (2)].sn); } }
    57335650    break;
     
    57365653
    57375654/* Line 1806 of yacc.c  */
    5738 #line 758 "parser.yy"
     5655#line 751 "parser.yy"
    57395656    { (yyval.sn) = new StatementNode( build_expr( (yyvsp[(1) - (2)].en) ) ); }
    57405657    break;
     
    57435660
    57445661/* Line 1806 of yacc.c  */
    5745 #line 764 "parser.yy"
     5662#line 757 "parser.yy"
    57465663    { (yyval.sn) = new StatementNode( build_if( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn), nullptr ) ); }
    57475664    break;
     
    57505667
    57515668/* Line 1806 of yacc.c  */
    5752 #line 766 "parser.yy"
     5669#line 759 "parser.yy"
    57535670    { (yyval.sn) = new StatementNode( build_if( (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].sn), (yyvsp[(7) - (7)].sn) ) ); }
    57545671    break;
     
    57575674
    57585675/* Line 1806 of yacc.c  */
    5759 #line 768 "parser.yy"
     5676#line 761 "parser.yy"
    57605677    { (yyval.sn) = new StatementNode( build_switch( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); }
    57615678    break;
     
    57645681
    57655682/* Line 1806 of yacc.c  */
    5766 #line 770 "parser.yy"
     5683#line 763 "parser.yy"
    57675684    {
    57685685                        StatementNode *sw = new StatementNode( build_switch( (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ) );
     
    57725689                        // therefore, are removed from the grammar even though C allows it. The change also applies to choose
    57735690                        // statement.
    5774                         (yyval.sn) = (yyvsp[(7) - (9)].decl) ? new StatementNode( build_compound( (StatementNode *)((new StatementNode( (yyvsp[(7) - (9)].decl) ))->set_last( sw )) ) ) : sw;
     5691                        (yyval.sn) = (yyvsp[(7) - (9)].decl) != 0 ? new StatementNode( build_compound( (StatementNode *)((new StatementNode( (yyvsp[(7) - (9)].decl) ))->set_last( sw )) ) ) : sw;
    57755692                }
    57765693    break;
     
    57795696
    57805697/* Line 1806 of yacc.c  */
    5781 #line 780 "parser.yy"
     5698#line 773 "parser.yy"
    57825699    { (yyval.sn) = new StatementNode( build_switch( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); }
    57835700    break;
     
    57865703
    57875704/* Line 1806 of yacc.c  */
    5788 #line 782 "parser.yy"
     5705#line 775 "parser.yy"
    57895706    {
    57905707                        StatementNode *sw = new StatementNode( build_switch( (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ) );
    5791                         (yyval.sn) = (yyvsp[(7) - (9)].decl) ? new StatementNode( build_compound( (StatementNode *)((new StatementNode( (yyvsp[(7) - (9)].decl) ))->set_last( sw )) ) ) : sw;
     5708                        (yyval.sn) = (yyvsp[(7) - (9)].decl) != 0 ? new StatementNode( build_compound( (StatementNode *)((new StatementNode( (yyvsp[(7) - (9)].decl) ))->set_last( sw )) ) ) : sw;
    57925709                }
    57935710    break;
     
    57965713
    57975714/* Line 1806 of yacc.c  */
     5715#line 785 "parser.yy"
     5716    { (yyval.en) = (yyvsp[(1) - (1)].en); }
     5717    break;
     5718
     5719  case 164:
     5720
     5721/* Line 1806 of yacc.c  */
     5722#line 787 "parser.yy"
     5723    { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     5724    break;
     5725
     5726  case 166:
     5727
     5728/* Line 1806 of yacc.c  */
    57985729#line 792 "parser.yy"
    5799     { (yyval.en) = (yyvsp[(1) - (1)].en); }
    5800     break;
    5801 
    5802   case 164:
     5730    { (yyval.sn) = new StatementNode( build_case( (yyvsp[(1) - (1)].en) ) ); }
     5731    break;
     5732
     5733  case 167:
    58035734
    58045735/* Line 1806 of yacc.c  */
    58055736#line 794 "parser.yy"
    5806     { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    5807     break;
    5808 
    5809   case 166:
     5737    { (yyval.sn) = (StatementNode *)((yyvsp[(1) - (3)].sn)->set_last( new StatementNode( build_case( (yyvsp[(3) - (3)].en) ) ) ) ); }
     5738    break;
     5739
     5740  case 168:
     5741
     5742/* Line 1806 of yacc.c  */
     5743#line 798 "parser.yy"
     5744    { (yyval.sn) = (yyvsp[(2) - (3)].sn); }
     5745    break;
     5746
     5747  case 169:
    58105748
    58115749/* Line 1806 of yacc.c  */
    58125750#line 799 "parser.yy"
    5813     { (yyval.sn) = new StatementNode( build_case( (yyvsp[(1) - (1)].en) ) ); }
    5814     break;
    5815 
    5816   case 167:
    5817 
    5818 /* Line 1806 of yacc.c  */
    5819 #line 801 "parser.yy"
    5820     { (yyval.sn) = (StatementNode *)((yyvsp[(1) - (3)].sn)->set_last( new StatementNode( build_case( (yyvsp[(3) - (3)].en) ) ) ) ); }
    5821     break;
    5822 
    5823   case 168:
     5751    { (yyval.sn) = new StatementNode( build_default() ); }
     5752    break;
     5753
     5754  case 171:
    58245755
    58255756/* Line 1806 of yacc.c  */
    58265757#line 805 "parser.yy"
    5827     { (yyval.sn) = (yyvsp[(2) - (3)].sn); }
    5828     break;
    5829 
    5830   case 169:
    5831 
    5832 /* Line 1806 of yacc.c  */
    5833 #line 806 "parser.yy"
    5834     { (yyval.sn) = new StatementNode( build_default() ); }
    5835     break;
    5836 
    5837   case 171:
    5838 
    5839 /* Line 1806 of yacc.c  */
    5840 #line 812 "parser.yy"
    58415758    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (2)].sn)->set_last( (yyvsp[(2) - (2)].sn) )); }
    58425759    break;
     
    58455762
    58465763/* Line 1806 of yacc.c  */
    5847 #line 816 "parser.yy"
     5764#line 809 "parser.yy"
    58485765    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[(2) - (2)].sn) ) ) ); }
    58495766    break;
     
    58525769
    58535770/* Line 1806 of yacc.c  */
    5854 #line 821 "parser.yy"
    5855     { (yyval.sn) = nullptr; }
     5771#line 814 "parser.yy"
     5772    { (yyval.sn) = 0; }
    58565773    break;
    58575774
     
    58595776
    58605777/* Line 1806 of yacc.c  */
     5778#line 820 "parser.yy"
     5779    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[(2) - (2)].sn) ) ) ); }
     5780    break;
     5781
     5782  case 176:
     5783
     5784/* Line 1806 of yacc.c  */
     5785#line 822 "parser.yy"
     5786    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_last( (yyvsp[(2) - (3)].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[(3) - (3)].sn) ) ) ) ) ); }
     5787    break;
     5788
     5789  case 177:
     5790
     5791/* Line 1806 of yacc.c  */
    58615792#line 827 "parser.yy"
    5862     { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[(2) - (2)].sn) ) ) ); }
    5863     break;
    5864 
    5865   case 176:
    5866 
    5867 /* Line 1806 of yacc.c  */
    5868 #line 829 "parser.yy"
    5869     { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_last( (yyvsp[(2) - (3)].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[(3) - (3)].sn) ) ) ) ) ); }
    5870     break;
    5871 
    5872   case 177:
    5873 
    5874 /* Line 1806 of yacc.c  */
    5875 #line 834 "parser.yy"
    5876     { (yyval.sn) = nullptr; }
     5793    { (yyval.sn) = 0; }
    58775794    break;
    58785795
     
    58805797
    58815798/* Line 1806 of yacc.c  */
    5882 #line 840 "parser.yy"
     5799#line 833 "parser.yy"
    58835800    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); }
    58845801    break;
     
    58875804
    58885805/* Line 1806 of yacc.c  */
    5889 #line 842 "parser.yy"
     5806#line 835 "parser.yy"
    58905807    { (yyval.sn) = (yyvsp[(1) - (3)].sn)->append_last_case( new StatementNode( build_compound( (StatementNode *)(yyvsp[(2) - (3)].sn)->set_last( (yyvsp[(3) - (3)].sn) ) ) ) ); }
    58915808    break;
     
    58945811
    58955812/* Line 1806 of yacc.c  */
     5813#line 837 "parser.yy"
     5814    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_last( (yyvsp[(2) - (3)].sn)->append_last_case( (yyvsp[(3) - (3)].sn) ))); }
     5815    break;
     5816
     5817  case 182:
     5818
     5819/* Line 1806 of yacc.c  */
     5820#line 839 "parser.yy"
     5821    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (4)].sn)->set_last( (yyvsp[(2) - (4)].sn)->append_last_case( new StatementNode( build_compound( (StatementNode *)(yyvsp[(3) - (4)].sn)->set_last( (yyvsp[(4) - (4)].sn) ) ) ) ) ) ); }
     5822    break;
     5823
     5824  case 183:
     5825
     5826/* Line 1806 of yacc.c  */
    58965827#line 844 "parser.yy"
    5897     { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_last( (yyvsp[(2) - (3)].sn)->append_last_case( (yyvsp[(3) - (3)].sn) ))); }
    5898     break;
    5899 
    5900   case 182:
    5901 
    5902 /* Line 1806 of yacc.c  */
    5903 #line 846 "parser.yy"
    5904     { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (4)].sn)->set_last( (yyvsp[(2) - (4)].sn)->append_last_case( new StatementNode( build_compound( (StatementNode *)(yyvsp[(3) - (4)].sn)->set_last( (yyvsp[(4) - (4)].sn) ) ) ) ) ) ); }
    5905     break;
    5906 
    5907   case 183:
    5908 
    5909 /* Line 1806 of yacc.c  */
    5910 #line 851 "parser.yy"
    59115828    { (yyval.sn) = new StatementNode( build_branch( BranchStmt::Break ) ); }
    59125829    break;
     
    59155832
    59165833/* Line 1806 of yacc.c  */
     5834#line 850 "parser.yy"
     5835    { (yyval.sn) = 0; }
     5836    break;
     5837
     5838  case 186:
     5839
     5840/* Line 1806 of yacc.c  */
     5841#line 852 "parser.yy"
     5842    { (yyval.sn) = 0; }
     5843    break;
     5844
     5845  case 187:
     5846
     5847/* Line 1806 of yacc.c  */
    59175848#line 857 "parser.yy"
    5918     { (yyval.sn) = nullptr; }
    5919     break;
    5920 
    5921   case 186:
     5849    { (yyval.sn) = new StatementNode( build_while( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); }
     5850    break;
     5851
     5852  case 188:
    59225853
    59235854/* Line 1806 of yacc.c  */
    59245855#line 859 "parser.yy"
    5925     { (yyval.sn) = nullptr; }
    5926     break;
    5927 
    5928   case 187:
    5929 
    5930 /* Line 1806 of yacc.c  */
    5931 #line 864 "parser.yy"
    5932     { (yyval.sn) = new StatementNode( build_while( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); }
    5933     break;
    5934 
    5935   case 188:
     5856    { (yyval.sn) = new StatementNode( build_while( (yyvsp[(5) - (7)].en), (yyvsp[(2) - (7)].sn), true ) ); }
     5857    break;
     5858
     5859  case 189:
     5860
     5861/* Line 1806 of yacc.c  */
     5862#line 861 "parser.yy"
     5863    { (yyval.sn) = new StatementNode( build_for( (yyvsp[(4) - (6)].fctl), (yyvsp[(6) - (6)].sn) ) ); }
     5864    break;
     5865
     5866  case 190:
    59365867
    59375868/* Line 1806 of yacc.c  */
    59385869#line 866 "parser.yy"
    5939     { (yyval.sn) = new StatementNode( build_while( (yyvsp[(5) - (7)].en), (yyvsp[(2) - (7)].sn), true ) ); }
    5940     break;
    5941 
    5942   case 189:
     5870    { (yyval.fctl) = new ForCtl( (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].en) ); }
     5871    break;
     5872
     5873  case 191:
    59435874
    59445875/* Line 1806 of yacc.c  */
    59455876#line 868 "parser.yy"
    5946     { (yyval.sn) = new StatementNode( build_for( (yyvsp[(4) - (6)].fctl), (yyvsp[(6) - (6)].sn) ) ); }
    5947     break;
    5948 
    5949   case 190:
     5877    { (yyval.fctl) = new ForCtl( (yyvsp[(1) - (4)].decl), (yyvsp[(2) - (4)].en), (yyvsp[(4) - (4)].en) ); }
     5878    break;
     5879
     5880  case 192:
    59505881
    59515882/* Line 1806 of yacc.c  */
    59525883#line 873 "parser.yy"
    5953     { (yyval.fctl) = new ForCtl( (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].en) ); }
    5954     break;
    5955 
    5956   case 191:
    5957 
    5958 /* Line 1806 of yacc.c  */
    5959 #line 875 "parser.yy"
    5960     { (yyval.fctl) = new ForCtl( (yyvsp[(1) - (4)].decl), (yyvsp[(2) - (4)].en), (yyvsp[(4) - (4)].en) ); }
    5961     break;
    5962 
    5963   case 192:
     5884    { (yyval.sn) = new StatementNode( build_branch( (yyvsp[(2) - (3)].tok), BranchStmt::Goto ) ); }
     5885    break;
     5886
     5887  case 193:
     5888
     5889/* Line 1806 of yacc.c  */
     5890#line 877 "parser.yy"
     5891    { (yyval.sn) = new StatementNode( build_computedgoto( (yyvsp[(3) - (4)].en) ) ); }
     5892    break;
     5893
     5894  case 194:
    59645895
    59655896/* Line 1806 of yacc.c  */
    59665897#line 880 "parser.yy"
    5967     { (yyval.sn) = new StatementNode( build_branch( (yyvsp[(2) - (3)].tok), BranchStmt::Goto ) ); }
    5968     break;
    5969 
    5970   case 193:
     5898    { (yyval.sn) = new StatementNode( build_branch( BranchStmt::Continue ) ); }
     5899    break;
     5900
     5901  case 195:
    59715902
    59725903/* Line 1806 of yacc.c  */
    59735904#line 884 "parser.yy"
    5974     { (yyval.sn) = new StatementNode( build_computedgoto( (yyvsp[(3) - (4)].en) ) ); }
    5975     break;
    5976 
    5977   case 194:
     5905    { (yyval.sn) = new StatementNode( build_branch( (yyvsp[(2) - (3)].tok), BranchStmt::Continue ) ); }
     5906    break;
     5907
     5908  case 196:
    59785909
    59795910/* Line 1806 of yacc.c  */
    59805911#line 887 "parser.yy"
    5981     { (yyval.sn) = new StatementNode( build_branch( BranchStmt::Continue ) ); }
    5982     break;
    5983 
    5984   case 195:
     5912    { (yyval.sn) = new StatementNode( build_branch( BranchStmt::Break ) ); }
     5913    break;
     5914
     5915  case 197:
    59855916
    59865917/* Line 1806 of yacc.c  */
    59875918#line 891 "parser.yy"
    5988     { (yyval.sn) = new StatementNode( build_branch( (yyvsp[(2) - (3)].tok), BranchStmt::Continue ) ); }
    5989     break;
    5990 
    5991   case 196:
    5992 
    5993 /* Line 1806 of yacc.c  */
    5994 #line 894 "parser.yy"
    5995     { (yyval.sn) = new StatementNode( build_branch( BranchStmt::Break ) ); }
    5996     break;
    5997 
    5998   case 197:
    5999 
    6000 /* Line 1806 of yacc.c  */
    6001 #line 898 "parser.yy"
    60025919    { (yyval.sn) = new StatementNode( build_branch( (yyvsp[(2) - (3)].tok), BranchStmt::Break ) ); }
    60035920    break;
     
    60065923
    60075924/* Line 1806 of yacc.c  */
    6008 #line 900 "parser.yy"
     5925#line 893 "parser.yy"
    60095926    { (yyval.sn) = new StatementNode( build_return( (yyvsp[(2) - (3)].en) ) ); }
    60105927    break;
     
    60135930
    60145931/* Line 1806 of yacc.c  */
    6015 #line 902 "parser.yy"
     5932#line 895 "parser.yy"
    60165933    { (yyval.sn) = new StatementNode( build_throw( (yyvsp[(2) - (3)].en) ) ); }
    60175934    break;
     
    60205937
    60215938/* Line 1806 of yacc.c  */
     5939#line 897 "parser.yy"
     5940    { (yyval.sn) = new StatementNode( build_throw( (yyvsp[(2) - (3)].en) ) ); }
     5941    break;
     5942
     5943  case 201:
     5944
     5945/* Line 1806 of yacc.c  */
     5946#line 899 "parser.yy"
     5947    { (yyval.sn) = new StatementNode( build_throw( (yyvsp[(2) - (5)].en) ) ); }
     5948    break;
     5949
     5950  case 202:
     5951
     5952/* Line 1806 of yacc.c  */
    60225953#line 904 "parser.yy"
    6023     { (yyval.sn) = new StatementNode( build_throw( (yyvsp[(2) - (3)].en) ) ); }
    6024     break;
    6025 
    6026   case 201:
     5954    { (yyval.sn) = new StatementNode( build_try( (yyvsp[(2) - (3)].sn), (yyvsp[(3) - (3)].sn), 0 ) ); }
     5955    break;
     5956
     5957  case 203:
    60275958
    60285959/* Line 1806 of yacc.c  */
    60295960#line 906 "parser.yy"
    6030     { (yyval.sn) = new StatementNode( build_throw( (yyvsp[(2) - (5)].en) ) ); }
    6031     break;
    6032 
    6033   case 202:
    6034 
    6035 /* Line 1806 of yacc.c  */
    6036 #line 911 "parser.yy"
    6037     { (yyval.sn) = new StatementNode( build_try( (yyvsp[(2) - (3)].sn), (yyvsp[(3) - (3)].sn), 0 ) ); }
    6038     break;
    6039 
    6040   case 203:
    6041 
    6042 /* Line 1806 of yacc.c  */
    6043 #line 913 "parser.yy"
    60445961    { (yyval.sn) = new StatementNode( build_try( (yyvsp[(2) - (3)].sn), 0, (yyvsp[(3) - (3)].sn) ) ); }
    60455962    break;
     
    60485965
    60495966/* Line 1806 of yacc.c  */
     5967#line 908 "parser.yy"
     5968    { (yyval.sn) = new StatementNode( build_try( (yyvsp[(2) - (4)].sn), (yyvsp[(3) - (4)].sn), (yyvsp[(4) - (4)].sn) ) ); }
     5969    break;
     5970
     5971  case 206:
     5972
     5973/* Line 1806 of yacc.c  */
    60505974#line 915 "parser.yy"
    6051     { (yyval.sn) = new StatementNode( build_try( (yyvsp[(2) - (4)].sn), (yyvsp[(3) - (4)].sn), (yyvsp[(4) - (4)].sn) ) ); }
    6052     break;
    6053 
    6054   case 206:
    6055 
    6056 /* Line 1806 of yacc.c  */
    6057 #line 922 "parser.yy"
    60585975    { (yyval.sn) = new StatementNode( build_catch( 0, (yyvsp[(5) - (5)].sn), true ) ); }
    60595976    break;
     
    60625979
    60635980/* Line 1806 of yacc.c  */
    6064 #line 924 "parser.yy"
     5981#line 917 "parser.yy"
    60655982    { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (6)].sn)->set_last( new StatementNode( build_catch( 0, (yyvsp[(6) - (6)].sn), true ) ) ); }
    60665983    break;
     
    60695986
    60705987/* Line 1806 of yacc.c  */
     5988#line 919 "parser.yy"
     5989    { (yyval.sn) = new StatementNode( build_catch( 0, (yyvsp[(5) - (5)].sn), true ) ); }
     5990    break;
     5991
     5992  case 209:
     5993
     5994/* Line 1806 of yacc.c  */
     5995#line 921 "parser.yy"
     5996    { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (6)].sn)->set_last( new StatementNode( build_catch( 0, (yyvsp[(6) - (6)].sn), true ) ) ); }
     5997    break;
     5998
     5999  case 210:
     6000
     6001/* Line 1806 of yacc.c  */
    60716002#line 926 "parser.yy"
    6072     { (yyval.sn) = new StatementNode( build_catch( 0, (yyvsp[(5) - (5)].sn), true ) ); }
    6073     break;
    6074 
    6075   case 209:
     6003    { (yyval.sn) = new StatementNode( build_catch( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ) ); }
     6004    break;
     6005
     6006  case 211:
    60766007
    60776008/* Line 1806 of yacc.c  */
    60786009#line 928 "parser.yy"
    6079     { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (6)].sn)->set_last( new StatementNode( build_catch( 0, (yyvsp[(6) - (6)].sn), true ) ) ); }
    6080     break;
    6081 
    6082   case 210:
    6083 
    6084 /* Line 1806 of yacc.c  */
    6085 #line 933 "parser.yy"
     6010    { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (10)].sn)->set_last( new StatementNode( build_catch( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ) ); }
     6011    break;
     6012
     6013  case 212:
     6014
     6015/* Line 1806 of yacc.c  */
     6016#line 930 "parser.yy"
    60866017    { (yyval.sn) = new StatementNode( build_catch( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ) ); }
    60876018    break;
    60886019
    6089   case 211:
    6090 
    6091 /* Line 1806 of yacc.c  */
    6092 #line 935 "parser.yy"
     6020  case 213:
     6021
     6022/* Line 1806 of yacc.c  */
     6023#line 932 "parser.yy"
    60936024    { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (10)].sn)->set_last( new StatementNode( build_catch( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ) ); }
    60946025    break;
    60956026
    6096   case 212:
     6027  case 214:
    60976028
    60986029/* Line 1806 of yacc.c  */
    60996030#line 937 "parser.yy"
    6100     { (yyval.sn) = new StatementNode( build_catch( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ) ); }
    6101     break;
    6102 
    6103   case 213:
    6104 
    6105 /* Line 1806 of yacc.c  */
    6106 #line 939 "parser.yy"
    6107     { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (10)].sn)->set_last( new StatementNode( build_catch( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ) ); }
    6108     break;
    6109 
    6110   case 214:
    6111 
    6112 /* Line 1806 of yacc.c  */
    6113 #line 944 "parser.yy"
    61146031    {
    61156032                        (yyval.sn) = new StatementNode( build_finally( (yyvsp[(2) - (2)].sn) ) );
     
    61206037
    61216038/* Line 1806 of yacc.c  */
    6122 #line 957 "parser.yy"
     6039#line 950 "parser.yy"
    61236040    {
    61246041                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    61306047
    61316048/* Line 1806 of yacc.c  */
    6132 #line 962 "parser.yy"
     6049#line 955 "parser.yy"
    61336050    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    61346051    break;
     
    61376054
    61386055/* Line 1806 of yacc.c  */
    6139 #line 964 "parser.yy"
     6056#line 957 "parser.yy"
    61406057    {
    61416058                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    61476064
    61486065/* Line 1806 of yacc.c  */
    6149 #line 973 "parser.yy"
     6066#line 966 "parser.yy"
    61506067    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (6)].flag), (yyvsp[(4) - (6)].constant), 0 ) ); }
    61516068    break;
     
    61546071
    61556072/* Line 1806 of yacc.c  */
    6156 #line 975 "parser.yy"
     6073#line 968 "parser.yy"
    61576074    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (8)].flag), (yyvsp[(4) - (8)].constant), (yyvsp[(6) - (8)].en) ) ); }
    61586075    break;
     
    61616078
    61626079/* Line 1806 of yacc.c  */
    6163 #line 977 "parser.yy"
     6080#line 970 "parser.yy"
    61646081    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (10)].flag), (yyvsp[(4) - (10)].constant), (yyvsp[(6) - (10)].en), (yyvsp[(8) - (10)].en) ) ); }
    61656082    break;
     
    61686085
    61696086/* Line 1806 of yacc.c  */
     6087#line 972 "parser.yy"
     6088    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (12)].flag), (yyvsp[(4) - (12)].constant), (yyvsp[(6) - (12)].en), (yyvsp[(8) - (12)].en), (yyvsp[(10) - (12)].en) ) ); }
     6089    break;
     6090
     6091  case 224:
     6092
     6093/* Line 1806 of yacc.c  */
     6094#line 974 "parser.yy"
     6095    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (14)].flag), (yyvsp[(5) - (14)].constant), 0, (yyvsp[(8) - (14)].en), (yyvsp[(10) - (14)].en), (yyvsp[(12) - (14)].label) ) ); }
     6096    break;
     6097
     6098  case 225:
     6099
     6100/* Line 1806 of yacc.c  */
    61706101#line 979 "parser.yy"
    6171     { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (12)].flag), (yyvsp[(4) - (12)].constant), (yyvsp[(6) - (12)].en), (yyvsp[(8) - (12)].en), (yyvsp[(10) - (12)].en) ) ); }
    6172     break;
    6173 
    6174   case 224:
     6102    { (yyval.flag) = false; }
     6103    break;
     6104
     6105  case 226:
    61756106
    61766107/* Line 1806 of yacc.c  */
    61776108#line 981 "parser.yy"
    6178     { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (14)].flag), (yyvsp[(5) - (14)].constant), 0, (yyvsp[(8) - (14)].en), (yyvsp[(10) - (14)].en), (yyvsp[(12) - (14)].label) ) ); }
    6179     break;
    6180 
    6181   case 225:
     6109    { (yyval.flag) = true; }
     6110    break;
     6111
     6112  case 227:
    61826113
    61836114/* Line 1806 of yacc.c  */
    61846115#line 986 "parser.yy"
    6185     { (yyval.flag) = false; }
    6186     break;
    6187 
    6188   case 226:
    6189 
    6190 /* Line 1806 of yacc.c  */
    6191 #line 988 "parser.yy"
    6192     { (yyval.flag) = true; }
    6193     break;
    6194 
    6195   case 227:
     6116    { (yyval.en) = 0; }
     6117    break;
     6118
     6119  case 230:
    61966120
    61976121/* Line 1806 of yacc.c  */
    61986122#line 993 "parser.yy"
    6199     { (yyval.en) = nullptr; }
    6200     break;
    6201 
    6202   case 230:
     6123    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) ); }
     6124    break;
     6125
     6126  case 231:
     6127
     6128/* Line 1806 of yacc.c  */
     6129#line 998 "parser.yy"
     6130    { (yyval.en) = new ExpressionNode( build_asmexpr( 0, (yyvsp[(1) - (4)].constant), (yyvsp[(3) - (4)].en) ) ); }
     6131    break;
     6132
     6133  case 232:
    62036134
    62046135/* Line 1806 of yacc.c  */
    62056136#line 1000 "parser.yy"
    6206     { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) ); }
    6207     break;
    6208 
    6209   case 231:
     6137    { (yyval.en) = new ExpressionNode( build_asmexpr( (yyvsp[(2) - (7)].en), (yyvsp[(4) - (7)].constant), (yyvsp[(6) - (7)].en) ) ); }
     6138    break;
     6139
     6140  case 233:
    62106141
    62116142/* Line 1806 of yacc.c  */
    62126143#line 1005 "parser.yy"
    6213     { (yyval.en) = new ExpressionNode( build_asmexpr( 0, (yyvsp[(1) - (4)].constant), (yyvsp[(3) - (4)].en) ) ); }
    6214     break;
    6215 
    6216   case 232:
     6144    { (yyval.en) = 0; }
     6145    break;
     6146
     6147  case 234:
    62176148
    62186149/* Line 1806 of yacc.c  */
    62196150#line 1007 "parser.yy"
    6220     { (yyval.en) = new ExpressionNode( build_asmexpr( (yyvsp[(2) - (7)].en), (yyvsp[(4) - (7)].constant), (yyvsp[(6) - (7)].en) ) ); }
    6221     break;
    6222 
    6223   case 233:
    6224 
    6225 /* Line 1806 of yacc.c  */
    6226 #line 1012 "parser.yy"
    6227     { (yyval.en) = nullptr; }
    6228     break;
    6229 
    6230   case 234:
     6151    { (yyval.en) = new ExpressionNode( (yyvsp[(1) - (1)].constant) ); }
     6152    break;
     6153
     6154  case 235:
     6155
     6156/* Line 1806 of yacc.c  */
     6157#line 1009 "parser.yy"
     6158    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( new ExpressionNode( (yyvsp[(3) - (3)].constant) ) ); }
     6159    break;
     6160
     6161  case 236:
    62316162
    62326163/* Line 1806 of yacc.c  */
    62336164#line 1014 "parser.yy"
    6234     { (yyval.en) = new ExpressionNode( (yyvsp[(1) - (1)].constant) ); }
    6235     break;
    6236 
    6237   case 235:
    6238 
    6239 /* Line 1806 of yacc.c  */
    6240 #line 1017 "parser.yy"
    6241     { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( new ExpressionNode( (yyvsp[(3) - (3)].constant) ) ); }
    6242     break;
    6243 
    6244   case 236:
    6245 
    6246 /* Line 1806 of yacc.c  */
    6247 #line 1022 "parser.yy"
    62486165    {
    62496166                        (yyval.label) = new LabelNode(); (yyval.label)->labels.push_back( *(yyvsp[(1) - (1)].tok) );
     
    62556172
    62566173/* Line 1806 of yacc.c  */
    6257 #line 1027 "parser.yy"
     6174#line 1019 "parser.yy"
    62586175    {
    62596176                        (yyval.label) = (yyvsp[(1) - (3)].label); (yyvsp[(1) - (3)].label)->labels.push_back( *(yyvsp[(3) - (3)].tok) );
     
    62656182
    62666183/* Line 1806 of yacc.c  */
    6267 #line 1037 "parser.yy"
    6268     { (yyval.decl) = nullptr; }
     6184#line 1029 "parser.yy"
     6185    { (yyval.decl) = 0; }
    62696186    break;
    62706187
     
    62726189
    62736190/* Line 1806 of yacc.c  */
    6274 #line 1044 "parser.yy"
     6191#line 1036 "parser.yy"
    62756192    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    62766193    break;
     
    62796196
    62806197/* Line 1806 of yacc.c  */
    6281 #line 1049 "parser.yy"
    6282     { (yyval.decl) = nullptr; }
     6198#line 1041 "parser.yy"
     6199    { (yyval.decl) = 0; }
    62836200    break;
    62846201
     
    62866203
    62876204/* Line 1806 of yacc.c  */
    6288 #line 1056 "parser.yy"
     6205#line 1048 "parser.yy"
    62896206    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    62906207    break;
     
    62936210
    62946211/* Line 1806 of yacc.c  */
    6295 #line 1070 "parser.yy"
     6212#line 1062 "parser.yy"
    62966213    {}
    62976214    break;
     
    63006217
    63016218/* Line 1806 of yacc.c  */
    6302 #line 1071 "parser.yy"
     6219#line 1063 "parser.yy"
    63036220    {}
    63046221    break;
     
    63076224
    63086225/* Line 1806 of yacc.c  */
    6309 #line 1100 "parser.yy"
     6226#line 1092 "parser.yy"
    63106227    {
    63116228                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    63176234
    63186235/* Line 1806 of yacc.c  */
    6319 #line 1107 "parser.yy"
     6236#line 1099 "parser.yy"
    63206237    {
    63216238                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    63276244
    63286245/* Line 1806 of yacc.c  */
    6329 #line 1112 "parser.yy"
     6246#line 1104 "parser.yy"
    63306247    {
    63316248                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (6)].tok), TypedefTable::ID );
     
    63376254
    63386255/* Line 1806 of yacc.c  */
    6339 #line 1122 "parser.yy"
     6256#line 1114 "parser.yy"
    63406257    {
    63416258                        typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
    6342                         (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) )->addAsmName( (yyvsp[(3) - (3)].constant) );
     6259                        (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) );
    63436260                }
    63446261    break;
     
    63476264
    63486265/* Line 1806 of yacc.c  */
    6349 #line 1127 "parser.yy"
     6266#line 1119 "parser.yy"
    63506267    {
    63516268                        typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
    6352                         (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) )->addAsmName( (yyvsp[(3) - (3)].constant) );
     6269                        (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) );
    63536270                }
    63546271    break;
     
    63576274
    63586275/* Line 1806 of yacc.c  */
    6359 #line 1132 "parser.yy"
     6276#line 1124 "parser.yy"
    63606277    {
    63616278                        typedefTable.setNextIdentifier( *(yyvsp[(3) - (4)].tok) );
    6362                         (yyval.decl) = (yyvsp[(2) - (4)].decl)->addQualifiers( (yyvsp[(1) - (4)].decl) )->addName( (yyvsp[(3) - (4)].tok) )->addAsmName( (yyvsp[(4) - (4)].constant) );
     6279                        (yyval.decl) = (yyvsp[(2) - (4)].decl)->addQualifiers( (yyvsp[(1) - (4)].decl) )->addName( (yyvsp[(3) - (4)].tok) );
    63636280                }
    63646281    break;
     
    63676284
    63686285/* Line 1806 of yacc.c  */
    6369 #line 1140 "parser.yy"
     6286#line 1132 "parser.yy"
    63706287    {
    63716288                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    63776294
    63786295/* Line 1806 of yacc.c  */
    6379 #line 1145 "parser.yy"
     6296#line 1137 "parser.yy"
    63806297    {
    63816298                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    63876304
    63886305/* Line 1806 of yacc.c  */
    6389 #line 1150 "parser.yy"
     6306#line 1142 "parser.yy"
    63906307    {
    63916308                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    63976314
    63986315/* Line 1806 of yacc.c  */
    6399 #line 1155 "parser.yy"
     6316#line 1147 "parser.yy"
    64006317    {
    64016318                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    64076324
    64086325/* Line 1806 of yacc.c  */
    6409 #line 1160 "parser.yy"
     6326#line 1152 "parser.yy"
    64106327    {
    64116328                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::ID );
     
    64176334
    64186335/* Line 1806 of yacc.c  */
    6419 #line 1191 "parser.yy"
     6336#line 1183 "parser.yy"
    64206337    {
    64216338                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
     
    64266343
    64276344/* Line 1806 of yacc.c  */
    6428 #line 1195 "parser.yy"
     6345#line 1187 "parser.yy"
    64296346    {
    64306347                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
     
    64356352
    64366353/* Line 1806 of yacc.c  */
    6437 #line 1202 "parser.yy"
     6354#line 1194 "parser.yy"
    64386355    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
    64396356    break;
     
    64426359
    64436360/* Line 1806 of yacc.c  */
    6444 #line 1206 "parser.yy"
     6361#line 1198 "parser.yy"
    64456362    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (9)].decl)->appendList( (yyvsp[(7) - (9)].decl) ) ); }
    64466363    break;
     
    64496366
    64506367/* Line 1806 of yacc.c  */
    6451 #line 1211 "parser.yy"
     6368#line 1203 "parser.yy"
    64526369    {
    64536370                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    64596376
    64606377/* Line 1806 of yacc.c  */
    6461 #line 1216 "parser.yy"
     6378#line 1208 "parser.yy"
    64626379    {
    64636380                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    64696386
    64706387/* Line 1806 of yacc.c  */
    6471 #line 1221 "parser.yy"
     6388#line 1213 "parser.yy"
    64726389    {
    64736390                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::TD );
     
    64796396
    64806397/* Line 1806 of yacc.c  */
    6481 #line 1232 "parser.yy"
     6398#line 1224 "parser.yy"
    64826399    {
    64836400                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    64896406
    64906407/* Line 1806 of yacc.c  */
    6491 #line 1237 "parser.yy"
     6408#line 1229 "parser.yy"
    64926409    {
    64936410                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    64996416
    65006417/* Line 1806 of yacc.c  */
    6501 #line 1242 "parser.yy"
     6418#line 1234 "parser.yy"
    65026419    {
    65036420                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    65096426
    65106427/* Line 1806 of yacc.c  */
    6511 #line 1247 "parser.yy"
     6428#line 1239 "parser.yy"
    65126429    {
    65136430                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    65196436
    65206437/* Line 1806 of yacc.c  */
    6521 #line 1252 "parser.yy"
     6438#line 1244 "parser.yy"
    65226439    {
    65236440                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    65296446
    65306447/* Line 1806 of yacc.c  */
    6531 #line 1261 "parser.yy"
     6448#line 1253 "parser.yy"
    65326449    {
    65336450                        typedefTable.addToEnclosingScope( *(yyvsp[(2) - (4)].tok), TypedefTable::TD );
     
    65396456
    65406457/* Line 1806 of yacc.c  */
    6541 #line 1266 "parser.yy"
     6458#line 1258 "parser.yy"
    65426459    {
    65436460                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (7)].tok), TypedefTable::TD );
     
    65496466
    65506467/* Line 1806 of yacc.c  */
    6551 #line 1283 "parser.yy"
     6468#line 1275 "parser.yy"
    65526469    {
    65536470                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    6554                         (yyval.decl) = ( (yyvsp[(2) - (4)].decl)->addType( (yyvsp[(1) - (4)].decl) ))->addAsmName( (yyvsp[(3) - (4)].constant) )->addInitializer( (yyvsp[(4) - (4)].in) );
     6471                        (yyval.decl) = ( (yyvsp[(2) - (4)].decl)->addType( (yyvsp[(1) - (4)].decl) ))->addInitializer( (yyvsp[(4) - (4)].in) );
    65556472                }
    65566473    break;
     
    65596476
    65606477/* Line 1806 of yacc.c  */
    6561 #line 1288 "parser.yy"
     6478#line 1280 "parser.yy"
    65626479    {
    65636480                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    6564                         (yyval.decl) = (yyvsp[(1) - (6)].decl)->appendList( (yyvsp[(1) - (6)].decl)->cloneBaseType( (yyvsp[(4) - (6)].decl)->addAsmName( (yyvsp[(5) - (6)].constant) )->addInitializer( (yyvsp[(6) - (6)].in) ) ) );
     6481                        (yyval.decl) = (yyvsp[(1) - (6)].decl)->appendList( (yyvsp[(1) - (6)].decl)->cloneBaseType( (yyvsp[(4) - (6)].decl)->addInitializer( (yyvsp[(6) - (6)].in) ) ) );
    65656482                }
    65666483    break;
     
    65696486
    65706487/* Line 1806 of yacc.c  */
    6571 #line 1310 "parser.yy"
    6572     { (yyval.decl) = nullptr; }
     6488#line 1302 "parser.yy"
     6489    { (yyval.decl) = 0; }
    65736490    break;
    65746491
     
    65766493
    65776494/* Line 1806 of yacc.c  */
    6578 #line 1322 "parser.yy"
     6495#line 1314 "parser.yy"
    65796496    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    65806497    break;
     
    65836500
    65846501/* Line 1806 of yacc.c  */
     6502#line 1325 "parser.yy"
     6503    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Const ); }
     6504    break;
     6505
     6506  case 305:
     6507
     6508/* Line 1806 of yacc.c  */
     6509#line 1327 "parser.yy"
     6510    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Restrict ); }
     6511    break;
     6512
     6513  case 306:
     6514
     6515/* Line 1806 of yacc.c  */
     6516#line 1329 "parser.yy"
     6517    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Volatile ); }
     6518    break;
     6519
     6520  case 307:
     6521
     6522/* Line 1806 of yacc.c  */
     6523#line 1331 "parser.yy"
     6524    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Lvalue ); }
     6525    break;
     6526
     6527  case 308:
     6528
     6529/* Line 1806 of yacc.c  */
    65856530#line 1333 "parser.yy"
    6586     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Const ); }
    6587     break;
    6588 
    6589   case 305:
     6531    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Atomic ); }
     6532    break;
     6533
     6534  case 309:
    65906535
    65916536/* Line 1806 of yacc.c  */
    65926537#line 1335 "parser.yy"
    6593     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Restrict ); }
    6594     break;
    6595 
    6596   case 306:
    6597 
    6598 /* Line 1806 of yacc.c  */
    6599 #line 1337 "parser.yy"
    6600     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Volatile ); }
    6601     break;
    6602 
    6603   case 307:
    6604 
    6605 /* Line 1806 of yacc.c  */
    6606 #line 1339 "parser.yy"
    6607     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Lvalue ); }
    6608     break;
    6609 
    6610   case 308:
    6611 
    6612 /* Line 1806 of yacc.c  */
    6613 #line 1341 "parser.yy"
    6614     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Atomic ); }
    6615     break;
    6616 
    6617   case 309:
    6618 
    6619 /* Line 1806 of yacc.c  */
    6620 #line 1343 "parser.yy"
    66216538    {
    66226539                        typedefTable.enterScope();
     
    66276544
    66286545/* Line 1806 of yacc.c  */
    6629 #line 1347 "parser.yy"
     6546#line 1339 "parser.yy"
    66306547    {
    66316548                        typedefTable.leaveScope();
     
    66376554
    66386555/* Line 1806 of yacc.c  */
    6639 #line 1356 "parser.yy"
     6556#line 1348 "parser.yy"
    66406557    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    66416558    break;
     
    66446561
    66456562/* Line 1806 of yacc.c  */
    6646 #line 1358 "parser.yy"
     6563#line 1350 "parser.yy"
    66476564    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    66486565    break;
     
    66516568
    66526569/* Line 1806 of yacc.c  */
    6653 #line 1369 "parser.yy"
     6570#line 1361 "parser.yy"
    66546571    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    66556572    break;
     
    66586575
    66596576/* Line 1806 of yacc.c  */
    6660 #line 1374 "parser.yy"
     6577#line 1366 "parser.yy"
    66616578    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Extern ); }
    66626579    break;
     
    66656582
    66666583/* Line 1806 of yacc.c  */
    6667 #line 1376 "parser.yy"
     6584#line 1368 "parser.yy"
    66686585    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Static ); }
    66696586    break;
     
    66726589
    66736590/* Line 1806 of yacc.c  */
    6674 #line 1378 "parser.yy"
     6591#line 1370 "parser.yy"
    66756592    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Auto ); }
    66766593    break;
     
    66796596
    66806597/* Line 1806 of yacc.c  */
     6598#line 1372 "parser.yy"
     6599    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Register ); }
     6600    break;
     6601
     6602  case 320:
     6603
     6604/* Line 1806 of yacc.c  */
     6605#line 1375 "parser.yy"
     6606    { (yyval.decl) = new DeclarationNode; (yyval.decl)->isInline = true; }
     6607    break;
     6608
     6609  case 321:
     6610
     6611/* Line 1806 of yacc.c  */
     6612#line 1377 "parser.yy"
     6613    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Fortran ); }
     6614    break;
     6615
     6616  case 322:
     6617
     6618/* Line 1806 of yacc.c  */
    66816619#line 1380 "parser.yy"
    6682     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Register ); }
    6683     break;
    6684 
    6685   case 320:
    6686 
    6687 /* Line 1806 of yacc.c  */
    6688 #line 1383 "parser.yy"
    6689     { (yyval.decl) = new DeclarationNode; (yyval.decl)->isInline = true; }
    6690     break;
    6691 
    6692   case 321:
    6693 
    6694 /* Line 1806 of yacc.c  */
    6695 #line 1385 "parser.yy"
    6696     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Fortran ); }
    6697     break;
    6698 
    6699   case 322:
    6700 
    6701 /* Line 1806 of yacc.c  */
    6702 #line 1388 "parser.yy"
    67036620    { (yyval.decl) = new DeclarationNode; (yyval.decl)->isNoreturn = true; }
    67046621    break;
     
    67076624
    67086625/* Line 1806 of yacc.c  */
    6709 #line 1390 "parser.yy"
     6626#line 1382 "parser.yy"
    67106627    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Threadlocal ); }
    67116628    break;
     
    67146631
    67156632/* Line 1806 of yacc.c  */
     6633#line 1387 "parser.yy"
     6634    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Char ); }
     6635    break;
     6636
     6637  case 325:
     6638
     6639/* Line 1806 of yacc.c  */
     6640#line 1389 "parser.yy"
     6641    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Double ); }
     6642    break;
     6643
     6644  case 326:
     6645
     6646/* Line 1806 of yacc.c  */
     6647#line 1391 "parser.yy"
     6648    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Float ); }
     6649    break;
     6650
     6651  case 327:
     6652
     6653/* Line 1806 of yacc.c  */
     6654#line 1393 "parser.yy"
     6655    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Int ); }
     6656    break;
     6657
     6658  case 328:
     6659
     6660/* Line 1806 of yacc.c  */
    67166661#line 1395 "parser.yy"
    6717     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Char ); }
    6718     break;
    6719 
    6720   case 325:
     6662    { (yyval.decl) = DeclarationNode::newLength( DeclarationNode::Long ); }
     6663    break;
     6664
     6665  case 329:
    67216666
    67226667/* Line 1806 of yacc.c  */
    67236668#line 1397 "parser.yy"
    6724     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Double ); }
    6725     break;
    6726 
    6727   case 326:
     6669    { (yyval.decl) = DeclarationNode::newLength( DeclarationNode::Short ); }
     6670    break;
     6671
     6672  case 330:
    67286673
    67296674/* Line 1806 of yacc.c  */
    67306675#line 1399 "parser.yy"
    6731     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Float ); }
    6732     break;
    6733 
    6734   case 327:
     6676    { (yyval.decl) = DeclarationNode::newSignedNess( DeclarationNode::Signed ); }
     6677    break;
     6678
     6679  case 331:
    67356680
    67366681/* Line 1806 of yacc.c  */
    67376682#line 1401 "parser.yy"
    6738     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Int ); }
    6739     break;
    6740 
    6741   case 328:
     6683    { (yyval.decl) = DeclarationNode::newSignedNess( DeclarationNode::Unsigned ); }
     6684    break;
     6685
     6686  case 332:
    67426687
    67436688/* Line 1806 of yacc.c  */
    67446689#line 1403 "parser.yy"
    6745     { (yyval.decl) = DeclarationNode::newLength( DeclarationNode::Long ); }
    6746     break;
    6747 
    6748   case 329:
     6690    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Void ); }
     6691    break;
     6692
     6693  case 333:
    67496694
    67506695/* Line 1806 of yacc.c  */
    67516696#line 1405 "parser.yy"
    6752     { (yyval.decl) = DeclarationNode::newLength( DeclarationNode::Short ); }
    6753     break;
    6754 
    6755   case 330:
     6697    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Bool ); }
     6698    break;
     6699
     6700  case 334:
    67566701
    67576702/* Line 1806 of yacc.c  */
    67586703#line 1407 "parser.yy"
    6759     { (yyval.decl) = DeclarationNode::newSignedNess( DeclarationNode::Signed ); }
    6760     break;
    6761 
    6762   case 331:
     6704    { (yyval.decl) = DeclarationNode::newComplexType( DeclarationNode::Complex ); }
     6705    break;
     6706
     6707  case 335:
    67636708
    67646709/* Line 1806 of yacc.c  */
    67656710#line 1409 "parser.yy"
    6766     { (yyval.decl) = DeclarationNode::newSignedNess( DeclarationNode::Unsigned ); }
    6767     break;
    6768 
    6769   case 332:
     6711    { (yyval.decl) = DeclarationNode::newComplexType( DeclarationNode::Imaginary ); }
     6712    break;
     6713
     6714  case 336:
    67706715
    67716716/* Line 1806 of yacc.c  */
    67726717#line 1411 "parser.yy"
    6773     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Void ); }
    6774     break;
    6775 
    6776   case 333:
    6777 
    6778 /* Line 1806 of yacc.c  */
    6779 #line 1413 "parser.yy"
    6780     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Bool ); }
    6781     break;
    6782 
    6783   case 334:
    6784 
    6785 /* Line 1806 of yacc.c  */
    6786 #line 1415 "parser.yy"
    6787     { (yyval.decl) = DeclarationNode::newComplexType( DeclarationNode::Complex ); }
    6788     break;
    6789 
    6790   case 335:
    6791 
    6792 /* Line 1806 of yacc.c  */
    6793 #line 1417 "parser.yy"
    6794     { (yyval.decl) = DeclarationNode::newComplexType( DeclarationNode::Imaginary ); }
    6795     break;
    6796 
    6797   case 336:
    6798 
    6799 /* Line 1806 of yacc.c  */
    6800 #line 1419 "parser.yy"
    68016718    { (yyval.decl) = DeclarationNode::newBuiltinType( DeclarationNode::Valist ); }
    68026719    break;
    68036720
    6804   case 337:
    6805 
    6806 /* Line 1806 of yacc.c  */
    6807 #line 1421 "parser.yy"
    6808     { (yyval.decl) = DeclarationNode::newBuiltinType( DeclarationNode::Zero ); }
    6809     break;
    6810 
    68116721  case 338:
    68126722
    68136723/* Line 1806 of yacc.c  */
    6814 #line 1423 "parser.yy"
    6815     { (yyval.decl) = DeclarationNode::newBuiltinType( DeclarationNode::One ); }
     6724#line 1418 "parser.yy"
     6725    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     6726    break;
     6727
     6728  case 339:
     6729
     6730/* Line 1806 of yacc.c  */
     6731#line 1420 "parser.yy"
     6732    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    68166733    break;
    68176734
     
    68196736
    68206737/* Line 1806 of yacc.c  */
     6738#line 1422 "parser.yy"
     6739    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     6740    break;
     6741
     6742  case 341:
     6743
     6744/* Line 1806 of yacc.c  */
     6745#line 1424 "parser.yy"
     6746    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addType( (yyvsp[(1) - (3)].decl) ); }
     6747    break;
     6748
     6749  case 343:
     6750
     6751/* Line 1806 of yacc.c  */
    68216752#line 1430 "parser.yy"
     6753    { (yyval.decl) = (yyvsp[(2) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     6754    break;
     6755
     6756  case 345:
     6757
     6758/* Line 1806 of yacc.c  */
     6759#line 1437 "parser.yy"
    68226760    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    68236761    break;
    68246762
    6825   case 341:
    6826 
    6827 /* Line 1806 of yacc.c  */
    6828 #line 1432 "parser.yy"
     6763  case 346:
     6764
     6765/* Line 1806 of yacc.c  */
     6766#line 1439 "parser.yy"
    68296767    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    68306768    break;
    68316769
    6832   case 342:
    6833 
    6834 /* Line 1806 of yacc.c  */
    6835 #line 1434 "parser.yy"
     6770  case 347:
     6771
     6772/* Line 1806 of yacc.c  */
     6773#line 1441 "parser.yy"
     6774    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addType( (yyvsp[(2) - (2)].decl) ); }
     6775    break;
     6776
     6777  case 348:
     6778
     6779/* Line 1806 of yacc.c  */
     6780#line 1446 "parser.yy"
     6781    { (yyval.decl) = (yyvsp[(3) - (4)].decl); }
     6782    break;
     6783
     6784  case 349:
     6785
     6786/* Line 1806 of yacc.c  */
     6787#line 1448 "parser.yy"
     6788    { (yyval.decl) = DeclarationNode::newTypeof( (yyvsp[(3) - (4)].en) ); }
     6789    break;
     6790
     6791  case 350:
     6792
     6793/* Line 1806 of yacc.c  */
     6794#line 1450 "parser.yy"
     6795    { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].decl) ); }
     6796    break;
     6797
     6798  case 351:
     6799
     6800/* Line 1806 of yacc.c  */
     6801#line 1452 "parser.yy"
     6802    { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
     6803    break;
     6804
     6805  case 353:
     6806
     6807/* Line 1806 of yacc.c  */
     6808#line 1458 "parser.yy"
     6809    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     6810    break;
     6811
     6812  case 354:
     6813
     6814/* Line 1806 of yacc.c  */
     6815#line 1460 "parser.yy"
     6816    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     6817    break;
     6818
     6819  case 355:
     6820
     6821/* Line 1806 of yacc.c  */
     6822#line 1462 "parser.yy"
    68366823    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    68376824    break;
    68386825
    6839   case 343:
    6840 
    6841 /* Line 1806 of yacc.c  */
    6842 #line 1436 "parser.yy"
    6843     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addType( (yyvsp[(1) - (3)].decl) ); }
    6844     break;
    6845 
    6846   case 345:
    6847 
    6848 /* Line 1806 of yacc.c  */
    6849 #line 1442 "parser.yy"
    6850     { (yyval.decl) = (yyvsp[(2) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    6851     break;
    6852 
    6853   case 347:
    6854 
    6855 /* Line 1806 of yacc.c  */
    6856 #line 1449 "parser.yy"
     6826  case 357:
     6827
     6828/* Line 1806 of yacc.c  */
     6829#line 1468 "parser.yy"
    68576830    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    68586831    break;
    68596832
    6860   case 348:
    6861 
    6862 /* Line 1806 of yacc.c  */
    6863 #line 1451 "parser.yy"
     6833  case 358:
     6834
     6835/* Line 1806 of yacc.c  */
     6836#line 1470 "parser.yy"
    68646837    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    68656838    break;
    68666839
    6867   case 349:
    6868 
    6869 /* Line 1806 of yacc.c  */
    6870 #line 1453 "parser.yy"
    6871     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addType( (yyvsp[(2) - (2)].decl) ); }
    6872     break;
    6873 
    6874   case 350:
    6875 
    6876 /* Line 1806 of yacc.c  */
    6877 #line 1458 "parser.yy"
    6878     { (yyval.decl) = (yyvsp[(3) - (4)].decl); }
    6879     break;
    6880 
    6881   case 351:
    6882 
    6883 /* Line 1806 of yacc.c  */
    6884 #line 1460 "parser.yy"
    6885     { (yyval.decl) = DeclarationNode::newTypeof( (yyvsp[(3) - (4)].en) ); }
    6886     break;
    6887 
    6888   case 352:
    6889 
    6890 /* Line 1806 of yacc.c  */
    6891 #line 1462 "parser.yy"
    6892     { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].decl) ); }
    6893     break;
    6894 
    6895   case 353:
    6896 
    6897 /* Line 1806 of yacc.c  */
    6898 #line 1464 "parser.yy"
    6899     { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
    6900     break;
    6901 
    6902   case 355:
    6903 
    6904 /* Line 1806 of yacc.c  */
    6905 #line 1470 "parser.yy"
     6840  case 360:
     6841
     6842/* Line 1806 of yacc.c  */
     6843#line 1476 "parser.yy"
    69066844    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    69076845    break;
    69086846
    6909   case 356:
    6910 
    6911 /* Line 1806 of yacc.c  */
    6912 #line 1472 "parser.yy"
     6847  case 361:
     6848
     6849/* Line 1806 of yacc.c  */
     6850#line 1478 "parser.yy"
    69136851    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    69146852    break;
    69156853
    6916   case 357:
    6917 
    6918 /* Line 1806 of yacc.c  */
    6919 #line 1474 "parser.yy"
     6854  case 362:
     6855
     6856/* Line 1806 of yacc.c  */
     6857#line 1480 "parser.yy"
    69206858    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    69216859    break;
    69226860
    6923   case 359:
    6924 
    6925 /* Line 1806 of yacc.c  */
    6926 #line 1480 "parser.yy"
    6927     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    6928     break;
    6929 
    6930   case 360:
    6931 
    6932 /* Line 1806 of yacc.c  */
    6933 #line 1482 "parser.yy"
     6861  case 363:
     6862
     6863/* Line 1806 of yacc.c  */
     6864#line 1485 "parser.yy"
     6865    { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(1) - (1)].tok) ); }
     6866    break;
     6867
     6868  case 364:
     6869
     6870/* Line 1806 of yacc.c  */
     6871#line 1487 "parser.yy"
     6872    { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(2) - (2)].tok) )->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     6873    break;
     6874
     6875  case 365:
     6876
     6877/* Line 1806 of yacc.c  */
     6878#line 1489 "parser.yy"
    69346879    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    69356880    break;
    69366881
    6937   case 362:
    6938 
    6939 /* Line 1806 of yacc.c  */
    6940 #line 1488 "parser.yy"
    6941     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    6942     break;
    6943 
    6944   case 363:
    6945 
    6946 /* Line 1806 of yacc.c  */
    6947 #line 1490 "parser.yy"
    6948     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    6949     break;
    6950 
    6951   case 364:
    6952 
    6953 /* Line 1806 of yacc.c  */
    6954 #line 1492 "parser.yy"
    6955     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    6956     break;
    6957 
    6958   case 365:
    6959 
    6960 /* Line 1806 of yacc.c  */
    6961 #line 1497 "parser.yy"
    6962     { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(1) - (1)].tok) ); }
    6963     break;
    6964 
    6965   case 366:
     6882  case 368:
    69666883
    69676884/* Line 1806 of yacc.c  */
    69686885#line 1499 "parser.yy"
    6969     { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(2) - (2)].tok) )->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    6970     break;
    6971 
    6972   case 367:
     6886    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (4)].aggKey), nullptr, nullptr, (yyvsp[(3) - (4)].decl), true ); }
     6887    break;
     6888
     6889  case 369:
    69736890
    69746891/* Line 1806 of yacc.c  */
    69756892#line 1501 "parser.yy"
    6976     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    6977     break;
    6978 
    6979   case 370:
    6980 
    6981 /* Line 1806 of yacc.c  */
    6982 #line 1511 "parser.yy"
    6983     { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (4)].aggKey), nullptr, nullptr, (yyvsp[(3) - (4)].decl), true ); }
    6984     break;
    6985 
    6986   case 371:
    6987 
    6988 /* Line 1806 of yacc.c  */
    6989 #line 1513 "parser.yy"
    69906893    {
    69916894                        typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) );
     
    69946897    break;
    69956898
     6899  case 370:
     6900
     6901/* Line 1806 of yacc.c  */
     6902#line 1506 "parser.yy"
     6903    { typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) ); }
     6904    break;
     6905
     6906  case 371:
     6907
     6908/* Line 1806 of yacc.c  */
     6909#line 1508 "parser.yy"
     6910    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (6)].aggKey), (yyvsp[(2) - (6)].tok), nullptr, (yyvsp[(5) - (6)].decl), true ); }
     6911    break;
     6912
    69966913  case 372:
    69976914
    69986915/* Line 1806 of yacc.c  */
    6999 #line 1518 "parser.yy"
    7000     { typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) ); }
     6916#line 1510 "parser.yy"
     6917    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (7)].aggKey), nullptr, (yyvsp[(3) - (7)].en), (yyvsp[(6) - (7)].decl), false ); }
    70016918    break;
    70026919
     
    70046921
    70056922/* Line 1806 of yacc.c  */
    7006 #line 1520 "parser.yy"
    7007     { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (6)].aggKey), (yyvsp[(2) - (6)].tok), nullptr, (yyvsp[(5) - (6)].decl), true ); }
     6923#line 1512 "parser.yy"
     6924    { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
    70086925    break;
    70096926
     
    70116928
    70126929/* Line 1806 of yacc.c  */
    7013 #line 1522 "parser.yy"
    7014     { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (7)].aggKey), nullptr, (yyvsp[(3) - (7)].en), (yyvsp[(6) - (7)].decl), false ); }
     6930#line 1517 "parser.yy"
     6931    { (yyval.aggKey) = DeclarationNode::Struct; }
    70156932    break;
    70166933
     
    70186935
    70196936/* Line 1806 of yacc.c  */
     6937#line 1519 "parser.yy"
     6938    { (yyval.aggKey) = DeclarationNode::Union; }
     6939    break;
     6940
     6941  case 376:
     6942
     6943/* Line 1806 of yacc.c  */
    70206944#line 1524 "parser.yy"
    7021     { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
    7022     break;
    7023 
    7024   case 376:
    7025 
    7026 /* Line 1806 of yacc.c  */
    7027 #line 1529 "parser.yy"
    7028     { (yyval.aggKey) = DeclarationNode::Struct; }
     6945    { (yyval.decl) = 0; }
    70296946    break;
    70306947
     
    70326949
    70336950/* Line 1806 of yacc.c  */
    7034 #line 1531 "parser.yy"
    7035     { (yyval.aggKey) = DeclarationNode::Union; }
    7036     break;
    7037 
    7038   case 378:
    7039 
    7040 /* Line 1806 of yacc.c  */
    7041 #line 1536 "parser.yy"
    7042     { (yyval.decl) = nullptr; }
     6951#line 1526 "parser.yy"
     6952    { (yyval.decl) = (yyvsp[(1) - (2)].decl) != 0 ? (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ) : (yyvsp[(2) - (2)].decl); }
    70436953    break;
    70446954
     
    70466956
    70476957/* Line 1806 of yacc.c  */
    7048 #line 1538 "parser.yy"
    7049     { (yyval.decl) = (yyvsp[(1) - (2)].decl) ? (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ) : (yyvsp[(2) - (2)].decl); }
     6958#line 1532 "parser.yy"
     6959    { (yyval.decl) = (yyvsp[(2) - (3)].decl)->set_extension( true ); }
    70506960    break;
    70516961
     
    70536963
    70546964/* Line 1806 of yacc.c  */
    7055 #line 1544 "parser.yy"
    7056     { (yyval.decl) = (yyvsp[(2) - (3)].decl)->set_extension( true ); }
    7057     break;
    7058 
    7059   case 383:
    7060 
    7061 /* Line 1806 of yacc.c  */
    7062 #line 1547 "parser.yy"
     6965#line 1535 "parser.yy"
    70636966    {   // mark all fields in list
    70646967                        for ( DeclarationNode *iter = (yyvsp[(2) - (3)].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
     
    70686971    break;
    70696972
     6973  case 383:
     6974
     6975/* Line 1806 of yacc.c  */
     6976#line 1545 "parser.yy"
     6977    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addName( (yyvsp[(2) - (2)].tok) ); }
     6978    break;
     6979
     6980  case 384:
     6981
     6982/* Line 1806 of yacc.c  */
     6983#line 1547 "parser.yy"
     6984    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(1) - (3)].decl)->cloneType( (yyvsp[(3) - (3)].tok) ) ); }
     6985    break;
     6986
    70706987  case 385:
    70716988
    70726989/* Line 1806 of yacc.c  */
    7073 #line 1557 "parser.yy"
    7074     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addName( (yyvsp[(2) - (2)].tok) ); }
     6990#line 1549 "parser.yy"
     6991    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(1) - (2)].decl)->cloneType( 0 ) ); }
    70756992    break;
    70766993
     
    70786995
    70796996/* Line 1806 of yacc.c  */
    7080 #line 1559 "parser.yy"
    7081     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(1) - (3)].decl)->cloneType( (yyvsp[(3) - (3)].tok) ) ); }
     6997#line 1554 "parser.yy"
     6998    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    70826999    break;
    70837000
     
    70857002
    70867003/* Line 1806 of yacc.c  */
     7004#line 1556 "parser.yy"
     7005    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(1) - (4)].decl)->cloneBaseType( (yyvsp[(4) - (4)].decl) ) ); }
     7006    break;
     7007
     7008  case 388:
     7009
     7010/* Line 1806 of yacc.c  */
    70877011#line 1561 "parser.yy"
    7088     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(1) - (2)].decl)->cloneType( 0 ) ); }
    7089     break;
    7090 
    7091   case 388:
     7012    { (yyval.decl) = DeclarationNode::newName( 0 ); /* XXX */ }
     7013    break;
     7014
     7015  case 389:
     7016
     7017/* Line 1806 of yacc.c  */
     7018#line 1563 "parser.yy"
     7019    { (yyval.decl) = DeclarationNode::newBitfield( (yyvsp[(1) - (1)].en) ); }
     7020    break;
     7021
     7022  case 390:
    70927023
    70937024/* Line 1806 of yacc.c  */
    70947025#line 1566 "parser.yy"
    7095     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    7096     break;
    7097 
    7098   case 389:
    7099 
    7100 /* Line 1806 of yacc.c  */
    7101 #line 1568 "parser.yy"
    7102     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(1) - (4)].decl)->cloneBaseType( (yyvsp[(4) - (4)].decl) ) ); }
    7103     break;
    7104 
    7105   case 390:
    7106 
    7107 /* Line 1806 of yacc.c  */
    7108 #line 1573 "parser.yy"
    7109     { (yyval.decl) = DeclarationNode::newName( 0 ); /* XXX */ }
     7026    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
    71107027    break;
    71117028
     
    71137030
    71147031/* Line 1806 of yacc.c  */
     7032#line 1569 "parser.yy"
     7033    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
     7034    break;
     7035
     7036  case 393:
     7037
     7038/* Line 1806 of yacc.c  */
    71157039#line 1575 "parser.yy"
    7116     { (yyval.decl) = DeclarationNode::newBitfield( (yyvsp[(1) - (1)].en) ); }
    7117     break;
    7118 
    7119   case 392:
    7120 
    7121 /* Line 1806 of yacc.c  */
    7122 #line 1578 "parser.yy"
    7123     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
    7124     break;
    7125 
    7126   case 393:
    7127 
    7128 /* Line 1806 of yacc.c  */
    7129 #line 1581 "parser.yy"
    7130     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
     7040    { (yyval.en) = 0; }
     7041    break;
     7042
     7043  case 394:
     7044
     7045/* Line 1806 of yacc.c  */
     7046#line 1577 "parser.yy"
     7047    { (yyval.en) = (yyvsp[(1) - (1)].en); }
    71317048    break;
    71327049
     
    71347051
    71357052/* Line 1806 of yacc.c  */
    7136 #line 1587 "parser.yy"
    7137     { (yyval.en) = nullptr; }
    7138     break;
    7139 
    7140   case 396:
    7141 
    7142 /* Line 1806 of yacc.c  */
    7143 #line 1589 "parser.yy"
    7144     { (yyval.en) = (yyvsp[(1) - (1)].en); }
     7053#line 1582 "parser.yy"
     7054    { (yyval.en) = (yyvsp[(2) - (2)].en); }
    71457055    break;
    71467056
     
    71487058
    71497059/* Line 1806 of yacc.c  */
    7150 #line 1594 "parser.yy"
    7151     { (yyval.en) = (yyvsp[(2) - (2)].en); }
    7152     break;
    7153 
    7154   case 399:
    7155 
    7156 /* Line 1806 of yacc.c  */
    7157 #line 1603 "parser.yy"
     7060#line 1591 "parser.yy"
    71587061    { (yyval.decl) = DeclarationNode::newEnum( nullptr, (yyvsp[(3) - (5)].decl) ); }
    71597062    break;
    71607063
    7161   case 400:
    7162 
    7163 /* Line 1806 of yacc.c  */
    7164 #line 1605 "parser.yy"
     7064  case 398:
     7065
     7066/* Line 1806 of yacc.c  */
     7067#line 1593 "parser.yy"
    71657068    {
    71667069                        typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) );
     
    71697072    break;
    71707073
     7074  case 399:
     7075
     7076/* Line 1806 of yacc.c  */
     7077#line 1598 "parser.yy"
     7078    { typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) ); }
     7079    break;
     7080
     7081  case 400:
     7082
     7083/* Line 1806 of yacc.c  */
     7084#line 1600 "parser.yy"
     7085    { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (7)].tok), (yyvsp[(5) - (7)].decl) ); }
     7086    break;
     7087
    71717088  case 401:
    71727089
    71737090/* Line 1806 of yacc.c  */
    7174 #line 1610 "parser.yy"
    7175     { typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) ); }
     7091#line 1605 "parser.yy"
     7092    { (yyval.decl) = DeclarationNode::newEnumConstant( (yyvsp[(1) - (2)].tok), (yyvsp[(2) - (2)].en) ); }
    71767093    break;
    71777094
     
    71797096
    71807097/* Line 1806 of yacc.c  */
     7098#line 1607 "parser.yy"
     7099    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( DeclarationNode::newEnumConstant( (yyvsp[(3) - (4)].tok), (yyvsp[(4) - (4)].en) ) ); }
     7100    break;
     7101
     7102  case 403:
     7103
     7104/* Line 1806 of yacc.c  */
    71817105#line 1612 "parser.yy"
    7182     { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (7)].tok), (yyvsp[(5) - (7)].decl) ); }
    7183     break;
    7184 
    7185   case 403:
    7186 
    7187 /* Line 1806 of yacc.c  */
    7188 #line 1617 "parser.yy"
    7189     { (yyval.decl) = DeclarationNode::newEnumConstant( (yyvsp[(1) - (2)].tok), (yyvsp[(2) - (2)].en) ); }
     7106    { (yyval.en) = 0; }
    71907107    break;
    71917108
     
    71937110
    71947111/* Line 1806 of yacc.c  */
    7195 #line 1619 "parser.yy"
    7196     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( DeclarationNode::newEnumConstant( (yyvsp[(3) - (4)].tok), (yyvsp[(4) - (4)].en) ) ); }
     7112#line 1614 "parser.yy"
     7113    { (yyval.en) = (yyvsp[(2) - (2)].en); }
    71977114    break;
    71987115
     
    72007117
    72017118/* Line 1806 of yacc.c  */
    7202 #line 1624 "parser.yy"
    7203     { (yyval.en) = nullptr; }
    7204     break;
    7205 
    7206   case 406:
    7207 
    7208 /* Line 1806 of yacc.c  */
    7209 #line 1626 "parser.yy"
    7210     { (yyval.en) = (yyvsp[(2) - (2)].en); }
    7211     break;
    7212 
    7213   case 407:
     7119#line 1621 "parser.yy"
     7120    { (yyval.decl) = 0; }
     7121    break;
     7122
     7123  case 409:
     7124
     7125/* Line 1806 of yacc.c  */
     7126#line 1629 "parser.yy"
     7127    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     7128    break;
     7129
     7130  case 410:
     7131
     7132/* Line 1806 of yacc.c  */
     7133#line 1631 "parser.yy"
     7134    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
     7135    break;
     7136
     7137  case 411:
    72147138
    72157139/* Line 1806 of yacc.c  */
    72167140#line 1633 "parser.yy"
    7217     { (yyval.decl) = nullptr; }
    7218     break;
    7219 
    7220   case 411:
     7141    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
     7142    break;
     7143
     7144  case 413:
    72217145
    72227146/* Line 1806 of yacc.c  */
     
    72257149    break;
    72267150
    7227   case 412:
     7151  case 414:
    72287152
    72297153/* Line 1806 of yacc.c  */
    72307154#line 1643 "parser.yy"
     7155    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     7156    break;
     7157
     7158  case 415:
     7159
     7160/* Line 1806 of yacc.c  */
     7161#line 1645 "parser.yy"
     7162    { (yyval.decl) = (yyvsp[(1) - (9)].decl)->appendList( (yyvsp[(5) - (9)].decl) )->appendList( (yyvsp[(9) - (9)].decl) ); }
     7163    break;
     7164
     7165  case 417:
     7166
     7167/* Line 1806 of yacc.c  */
     7168#line 1651 "parser.yy"
     7169    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     7170    break;
     7171
     7172  case 418:
     7173
     7174/* Line 1806 of yacc.c  */
     7175#line 1656 "parser.yy"
     7176    { (yyval.decl) = 0; }
     7177    break;
     7178
     7179  case 421:
     7180
     7181/* Line 1806 of yacc.c  */
     7182#line 1663 "parser.yy"
    72317183    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    72327184    break;
    72337185
    7234   case 413:
    7235 
    7236 /* Line 1806 of yacc.c  */
    7237 #line 1645 "parser.yy"
    7238     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    7239     break;
    7240 
    7241   case 415:
    7242 
    7243 /* Line 1806 of yacc.c  */
    7244 #line 1653 "parser.yy"
     7186  case 424:
     7187
     7188/* Line 1806 of yacc.c  */
     7189#line 1670 "parser.yy"
    72457190    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    72467191    break;
    72477192
    7248   case 416:
    7249 
    7250 /* Line 1806 of yacc.c  */
    7251 #line 1655 "parser.yy"
     7193  case 425:
     7194
     7195/* Line 1806 of yacc.c  */
     7196#line 1672 "parser.yy"
    72527197    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    72537198    break;
    72547199
    7255   case 417:
    7256 
    7257 /* Line 1806 of yacc.c  */
    7258 #line 1657 "parser.yy"
    7259     { (yyval.decl) = (yyvsp[(1) - (9)].decl)->appendList( (yyvsp[(5) - (9)].decl) )->appendList( (yyvsp[(9) - (9)].decl) ); }
    7260     break;
    7261 
    7262   case 419:
    7263 
    7264 /* Line 1806 of yacc.c  */
    7265 #line 1663 "parser.yy"
    7266     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    7267     break;
    7268 
    7269   case 420:
    7270 
    7271 /* Line 1806 of yacc.c  */
    7272 #line 1668 "parser.yy"
    7273     { (yyval.decl) = nullptr; }
    7274     break;
    7275 
    7276   case 423:
    7277 
    7278 /* Line 1806 of yacc.c  */
    7279 #line 1675 "parser.yy"
    7280     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    7281     break;
    7282 
    7283   case 426:
    7284 
    7285 /* Line 1806 of yacc.c  */
    7286 #line 1682 "parser.yy"
    7287     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    7288     break;
    7289 
    72907200  case 427:
    72917201
    72927202/* Line 1806 of yacc.c  */
     7203#line 1681 "parser.yy"
     7204    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
     7205    break;
     7206
     7207  case 428:
     7208
     7209/* Line 1806 of yacc.c  */
    72937210#line 1684 "parser.yy"
    7294     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     7211    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
    72957212    break;
    72967213
     
    72987215
    72997216/* Line 1806 of yacc.c  */
    7300 #line 1693 "parser.yy"
    7301     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
    7302     break;
    7303 
    7304   case 430:
     7217#line 1686 "parser.yy"
     7218    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addName( (yyvsp[(3) - (4)].tok) )->addQualifiers( (yyvsp[(1) - (4)].decl) ); }
     7219    break;
     7220
     7221  case 434:
    73057222
    73067223/* Line 1806 of yacc.c  */
    73077224#line 1696 "parser.yy"
    7308     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
    7309     break;
    7310 
    7311   case 431:
    7312 
    7313 /* Line 1806 of yacc.c  */
    7314 #line 1698 "parser.yy"
    7315     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addName( (yyvsp[(3) - (4)].tok) )->addQualifiers( (yyvsp[(1) - (4)].decl) ); }
     7225    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    73167226    break;
    73177227
     
    73197229
    73207230/* Line 1806 of yacc.c  */
    7321 #line 1708 "parser.yy"
    7322     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    7323     break;
    7324 
    7325   case 438:
    7326 
    7327 /* Line 1806 of yacc.c  */
    7328 #line 1714 "parser.yy"
     7231#line 1702 "parser.yy"
    73297232    {
    73307233                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    7331                         (yyval.decl) = (yyvsp[(2) - (3)].decl)->addType( (yyvsp[(1) - (3)].decl) )->addInitializer( (yyvsp[(3) - (3)].en) ? new InitializerNode( (yyvsp[(3) - (3)].en) ) : nullptr );
     7234                        (yyval.decl) = (yyvsp[(2) - (3)].decl)->addType( (yyvsp[(1) - (3)].decl) )->addInitializer( new InitializerNode( (yyvsp[(3) - (3)].en) ) );
    73327235                }
    73337236    break;
    73347237
    7335   case 439:
    7336 
    7337 /* Line 1806 of yacc.c  */
    7338 #line 1719 "parser.yy"
     7238  case 437:
     7239
     7240/* Line 1806 of yacc.c  */
     7241#line 1707 "parser.yy"
    73397242    {
    73407243                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    7341                         (yyval.decl) = (yyvsp[(2) - (3)].decl)->addType( (yyvsp[(1) - (3)].decl) )->addInitializer( (yyvsp[(3) - (3)].en) ? new InitializerNode( (yyvsp[(3) - (3)].en) ) : nullptr );
     7244                        (yyval.decl) = (yyvsp[(2) - (3)].decl)->addType( (yyvsp[(1) - (3)].decl) )->addInitializer( new InitializerNode( (yyvsp[(3) - (3)].en) ) );
    73427245                }
    73437246    break;
    73447247
     7248  case 439:
     7249
     7250/* Line 1806 of yacc.c  */
     7251#line 1716 "parser.yy"
     7252    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
     7253    break;
     7254
     7255  case 440:
     7256
     7257/* Line 1806 of yacc.c  */
     7258#line 1725 "parser.yy"
     7259    { (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) ); }
     7260    break;
     7261
    73457262  case 441:
    73467263
    73477264/* Line 1806 of yacc.c  */
    7348 #line 1728 "parser.yy"
     7265#line 1727 "parser.yy"
     7266    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( DeclarationNode::newName( (yyvsp[(3) - (3)].tok) ) ); }
     7267    break;
     7268
     7269  case 453:
     7270
     7271/* Line 1806 of yacc.c  */
     7272#line 1752 "parser.yy"
    73497273    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    73507274    break;
    73517275
    7352   case 442:
    7353 
    7354 /* Line 1806 of yacc.c  */
    7355 #line 1737 "parser.yy"
    7356     { (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) ); }
    7357     break;
    7358 
    7359   case 443:
    7360 
    7361 /* Line 1806 of yacc.c  */
    7362 #line 1739 "parser.yy"
    7363     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( DeclarationNode::newName( (yyvsp[(3) - (3)].tok) ) ); }
    7364     break;
    7365 
    7366   case 455:
    7367 
    7368 /* Line 1806 of yacc.c  */
    7369 #line 1764 "parser.yy"
     7276  case 457:
     7277
     7278/* Line 1806 of yacc.c  */
     7279#line 1760 "parser.yy"
    73707280    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    73717281    break;
    73727282
     7283  case 458:
     7284
     7285/* Line 1806 of yacc.c  */
     7286#line 1765 "parser.yy"
     7287    { (yyval.in) = 0; }
     7288    break;
     7289
    73737290  case 459:
    73747291
    73757292/* Line 1806 of yacc.c  */
    7376 #line 1772 "parser.yy"
    7377     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
     7293#line 1767 "parser.yy"
     7294    { (yyval.in) = (yyvsp[(2) - (2)].in); }
    73787295    break;
    73797296
     
    73817298
    73827299/* Line 1806 of yacc.c  */
    7383 #line 1777 "parser.yy"
    7384     { (yyval.in) = nullptr; }
     7300#line 1769 "parser.yy"
     7301    { (yyval.in) = (yyvsp[(2) - (2)].in)->set_maybeConstructed( false ); }
    73857302    break;
    73867303
     
    73887305
    73897306/* Line 1806 of yacc.c  */
     7307#line 1773 "parser.yy"
     7308    { (yyval.in) = new InitializerNode( (yyvsp[(1) - (1)].en) ); }
     7309    break;
     7310
     7311  case 462:
     7312
     7313/* Line 1806 of yacc.c  */
     7314#line 1774 "parser.yy"
     7315    { (yyval.in) = new InitializerNode( (yyvsp[(2) - (4)].in), true ); }
     7316    break;
     7317
     7318  case 463:
     7319
     7320/* Line 1806 of yacc.c  */
    73907321#line 1779 "parser.yy"
    7391     { (yyval.in) = (yyvsp[(2) - (2)].in); }
    7392     break;
    7393 
    7394   case 462:
     7322    { (yyval.in) = 0; }
     7323    break;
     7324
     7325  case 465:
    73957326
    73967327/* Line 1806 of yacc.c  */
    73977328#line 1781 "parser.yy"
    7398     { (yyval.in) = (yyvsp[(2) - (2)].in)->set_maybeConstructed( false ); }
    7399     break;
    7400 
    7401   case 463:
    7402 
    7403 /* Line 1806 of yacc.c  */
    7404 #line 1785 "parser.yy"
    7405     { (yyval.in) = new InitializerNode( (yyvsp[(1) - (1)].en) ); }
    7406     break;
    7407 
    7408   case 464:
    7409 
    7410 /* Line 1806 of yacc.c  */
    7411 #line 1786 "parser.yy"
    7412     { (yyval.in) = new InitializerNode( (yyvsp[(2) - (4)].in), true ); }
    7413     break;
    7414 
    7415   case 465:
    7416 
    7417 /* Line 1806 of yacc.c  */
    7418 #line 1791 "parser.yy"
    7419     { (yyval.in) = nullptr; }
     7329    { (yyval.in) = (yyvsp[(2) - (2)].in)->set_designators( (yyvsp[(1) - (2)].en) ); }
     7330    break;
     7331
     7332  case 466:
     7333
     7334/* Line 1806 of yacc.c  */
     7335#line 1782 "parser.yy"
     7336    { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (3)].in)->set_last( (yyvsp[(3) - (3)].in) ) ); }
    74207337    break;
    74217338
     
    74237340
    74247341/* Line 1806 of yacc.c  */
    7425 #line 1793 "parser.yy"
    7426     { (yyval.in) = (yyvsp[(2) - (2)].in)->set_designators( (yyvsp[(1) - (2)].en) ); }
    7427     break;
    7428 
    7429   case 468:
    7430 
    7431 /* Line 1806 of yacc.c  */
    7432 #line 1794 "parser.yy"
    7433     { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (3)].in)->set_last( (yyvsp[(3) - (3)].in) ) ); }
     7342#line 1784 "parser.yy"
     7343    { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (4)].in)->set_last( (yyvsp[(4) - (4)].in)->set_designators( (yyvsp[(3) - (4)].en) ) ) ); }
    74347344    break;
    74357345
     
    74377347
    74387348/* Line 1806 of yacc.c  */
    7439 #line 1796 "parser.yy"
    7440     { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (4)].in)->set_last( (yyvsp[(4) - (4)].in)->set_designators( (yyvsp[(3) - (4)].en) ) ) ); }
     7349#line 1800 "parser.yy"
     7350    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (2)].tok) ) ); }
    74417351    break;
    74427352
     
    74447354
    74457355/* Line 1806 of yacc.c  */
     7356#line 1806 "parser.yy"
     7357    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (2)].en)->set_last( (yyvsp[(2) - (2)].en) ) ); }
     7358    break;
     7359
     7360  case 472:
     7361
     7362/* Line 1806 of yacc.c  */
    74467363#line 1812 "parser.yy"
    7447     { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (2)].tok) ) ); }
     7364    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(2) - (2)].tok) ) ); }
    74487365    break;
    74497366
     
    74517368
    74527369/* Line 1806 of yacc.c  */
    7453 #line 1818 "parser.yy"
    7454     { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (2)].en)->set_last( (yyvsp[(2) - (2)].en) ) ); }
     7370#line 1815 "parser.yy"
     7371    { (yyval.en) = (yyvsp[(3) - (5)].en); }
    74557372    break;
    74567373
     
    74587375
    74597376/* Line 1806 of yacc.c  */
    7460 #line 1824 "parser.yy"
    7461     { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(2) - (2)].tok) ) ); }
     7377#line 1817 "parser.yy"
     7378    { (yyval.en) = (yyvsp[(3) - (5)].en); }
    74627379    break;
    74637380
     
    74657382
    74667383/* Line 1806 of yacc.c  */
    7467 #line 1827 "parser.yy"
    7468     { (yyval.en) = (yyvsp[(3) - (5)].en); }
     7384#line 1819 "parser.yy"
     7385    { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].en) ) ); }
    74697386    break;
    74707387
     
    74727389
    74737390/* Line 1806 of yacc.c  */
    7474 #line 1829 "parser.yy"
    7475     { (yyval.en) = (yyvsp[(3) - (5)].en); }
    7476     break;
    7477 
    7478   case 477:
    7479 
    7480 /* Line 1806 of yacc.c  */
    7481 #line 1831 "parser.yy"
    7482     { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].en) ) ); }
     7391#line 1821 "parser.yy"
     7392    { (yyval.en) = (yyvsp[(4) - (6)].en); }
    74837393    break;
    74847394
     
    74867396
    74877397/* Line 1806 of yacc.c  */
    7488 #line 1833 "parser.yy"
    7489     { (yyval.en) = (yyvsp[(4) - (6)].en); }
     7398#line 1845 "parser.yy"
     7399    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     7400    break;
     7401
     7402  case 479:
     7403
     7404/* Line 1806 of yacc.c  */
     7405#line 1847 "parser.yy"
     7406    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    74907407    break;
    74917408
     
    74937410
    74947411/* Line 1806 of yacc.c  */
     7412#line 1849 "parser.yy"
     7413    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     7414    break;
     7415
     7416  case 482:
     7417
     7418/* Line 1806 of yacc.c  */
     7419#line 1855 "parser.yy"
     7420    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     7421    break;
     7422
     7423  case 483:
     7424
     7425/* Line 1806 of yacc.c  */
    74957426#line 1857 "parser.yy"
    7496     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    7497     break;
    7498 
    7499   case 481:
    7500 
    7501 /* Line 1806 of yacc.c  */
    7502 #line 1859 "parser.yy"
    75037427    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    75047428    break;
    75057429
    7506   case 482:
    7507 
    7508 /* Line 1806 of yacc.c  */
    7509 #line 1861 "parser.yy"
    7510     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    7511     break;
    7512 
    75137430  case 484:
    75147431
    75157432/* Line 1806 of yacc.c  */
    7516 #line 1867 "parser.yy"
    7517     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    7518     break;
    7519 
    7520   case 485:
    7521 
    7522 /* Line 1806 of yacc.c  */
    7523 #line 1869 "parser.yy"
    7524     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     7433#line 1862 "parser.yy"
     7434    { (yyval.decl) = DeclarationNode::newFromTypeGen( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
    75257435    break;
    75267436
     
    75287438
    75297439/* Line 1806 of yacc.c  */
    7530 #line 1874 "parser.yy"
    7531     { (yyval.decl) = DeclarationNode::newFromTypeGen( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
     7440#line 1868 "parser.yy"
     7441    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(3) - (4)].decl) ); }
     7442    break;
     7443
     7444  case 487:
     7445
     7446/* Line 1806 of yacc.c  */
     7447#line 1873 "parser.yy"
     7448    { typedefTable.addToEnclosingScope( *(yyvsp[(2) - (2)].tok), TypedefTable::TD ); }
    75327449    break;
    75337450
     
    75357452
    75367453/* Line 1806 of yacc.c  */
    7537 #line 1880 "parser.yy"
    7538     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(3) - (4)].decl) ); }
    7539     break;
    7540 
    7541   case 489:
     7454#line 1875 "parser.yy"
     7455    { (yyval.decl) = DeclarationNode::newTypeParam( (yyvsp[(1) - (4)].tclass), (yyvsp[(2) - (4)].tok) )->addAssertions( (yyvsp[(4) - (4)].decl) ); }
     7456    break;
     7457
     7458  case 490:
     7459
     7460/* Line 1806 of yacc.c  */
     7461#line 1881 "parser.yy"
     7462    { (yyval.tclass) = DeclarationNode::Otype; }
     7463    break;
     7464
     7465  case 491:
     7466
     7467/* Line 1806 of yacc.c  */
     7468#line 1883 "parser.yy"
     7469    { (yyval.tclass) = DeclarationNode::Ftype; }
     7470    break;
     7471
     7472  case 492:
    75427473
    75437474/* Line 1806 of yacc.c  */
    75447475#line 1885 "parser.yy"
    7545     { typedefTable.addToEnclosingScope( *(yyvsp[(2) - (2)].tok), TypedefTable::TD ); }
    7546     break;
    7547 
    7548   case 490:
    7549 
    7550 /* Line 1806 of yacc.c  */
    7551 #line 1887 "parser.yy"
    7552     { (yyval.decl) = DeclarationNode::newTypeParam( (yyvsp[(1) - (4)].tclass), (yyvsp[(2) - (4)].tok) )->addAssertions( (yyvsp[(4) - (4)].decl) ); }
    7553     break;
    7554 
    7555   case 492:
    7556 
    7557 /* Line 1806 of yacc.c  */
    7558 #line 1893 "parser.yy"
    7559     { (yyval.tclass) = DeclarationNode::Otype; }
     7476    { (yyval.tclass) = DeclarationNode::Dtype; }
    75607477    break;
    75617478
     
    75637480
    75647481/* Line 1806 of yacc.c  */
    7565 #line 1895 "parser.yy"
    7566     { (yyval.tclass) = DeclarationNode::Ftype; }
     7482#line 1890 "parser.yy"
     7483    { (yyval.decl) = 0; }
    75677484    break;
    75687485
     
    75707487
    75717488/* Line 1806 of yacc.c  */
     7489#line 1892 "parser.yy"
     7490    { (yyval.decl) = (yyvsp[(1) - (2)].decl) != 0 ? (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ) : (yyvsp[(2) - (2)].decl); }
     7491    break;
     7492
     7493  case 495:
     7494
     7495/* Line 1806 of yacc.c  */
    75727496#line 1897 "parser.yy"
    7573     { (yyval.tclass) = DeclarationNode::Dtype; }
    7574     break;
    7575 
    7576   case 495:
    7577 
    7578 /* Line 1806 of yacc.c  */
    7579 #line 1902 "parser.yy"
    7580     { (yyval.decl) = nullptr; }
    7581     break;
    7582 
    7583   case 496:
    7584 
    7585 /* Line 1806 of yacc.c  */
    7586 #line 1904 "parser.yy"
    7587     { (yyval.decl) = (yyvsp[(1) - (2)].decl) ? (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ) : (yyvsp[(2) - (2)].decl); }
    7588     break;
    7589 
    7590   case 497:
    7591 
    7592 /* Line 1806 of yacc.c  */
    7593 #line 1909 "parser.yy"
    75947497    {
    75957498                        typedefTable.openTrait( *(yyvsp[(2) - (5)].tok) );
     
    75987501    break;
    75997502
     7503  case 496:
     7504
     7505/* Line 1806 of yacc.c  */
     7506#line 1902 "parser.yy"
     7507    { (yyval.decl) = (yyvsp[(4) - (5)].decl); }
     7508    break;
     7509
     7510  case 497:
     7511
     7512/* Line 1806 of yacc.c  */
     7513#line 1904 "parser.yy"
     7514    { (yyval.decl) = 0; }
     7515    break;
     7516
    76007517  case 498:
    76017518
    76027519/* Line 1806 of yacc.c  */
     7520#line 1909 "parser.yy"
     7521    { (yyval.en) = new ExpressionNode( build_typevalue( (yyvsp[(1) - (1)].decl) ) ); }
     7522    break;
     7523
     7524  case 500:
     7525
     7526/* Line 1806 of yacc.c  */
     7527#line 1912 "parser.yy"
     7528    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( new ExpressionNode( build_typevalue( (yyvsp[(3) - (3)].decl) ) ) ) ); }
     7529    break;
     7530
     7531  case 501:
     7532
     7533/* Line 1806 of yacc.c  */
    76037534#line 1914 "parser.yy"
    7604     { (yyval.decl) = (yyvsp[(4) - (5)].decl); }
    7605     break;
    7606 
    7607   case 499:
    7608 
    7609 /* Line 1806 of yacc.c  */
    7610 #line 1916 "parser.yy"
    7611     { (yyval.decl) = nullptr; }
    7612     break;
    7613 
    7614   case 500:
     7535    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) )); }
     7536    break;
     7537
     7538  case 502:
     7539
     7540/* Line 1806 of yacc.c  */
     7541#line 1919 "parser.yy"
     7542    { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
     7543    break;
     7544
     7545  case 503:
    76157546
    76167547/* Line 1806 of yacc.c  */
    76177548#line 1921 "parser.yy"
    7618     { (yyval.en) = new ExpressionNode( build_typevalue( (yyvsp[(1) - (1)].decl) ) ); }
    7619     break;
    7620 
    7621   case 502:
    7622 
    7623 /* Line 1806 of yacc.c  */
    7624 #line 1924 "parser.yy"
    7625     { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( new ExpressionNode( build_typevalue( (yyvsp[(3) - (3)].decl) ) ) ) ); }
    7626     break;
    7627 
    7628   case 503:
    7629 
    7630 /* Line 1806 of yacc.c  */
    7631 #line 1926 "parser.yy"
    7632     { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) )); }
     7549    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) ); }
    76337550    break;
    76347551
     
    76367553
    76377554/* Line 1806 of yacc.c  */
    7638 #line 1931 "parser.yy"
    7639     { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
     7555#line 1923 "parser.yy"
     7556    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl)->copyStorageClasses( (yyvsp[(1) - (3)].decl) ) ); }
    76407557    break;
    76417558
     
    76437560
    76447561/* Line 1806 of yacc.c  */
    7645 #line 1933 "parser.yy"
    7646     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) ); }
     7562#line 1928 "parser.yy"
     7563    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addAssertions( (yyvsp[(2) - (2)].decl) ); }
    76477564    break;
    76487565
     
    76507567
    76517568/* Line 1806 of yacc.c  */
     7569#line 1930 "parser.yy"
     7570    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addAssertions( (yyvsp[(2) - (4)].decl) )->addType( (yyvsp[(4) - (4)].decl) ); }
     7571    break;
     7572
     7573  case 507:
     7574
     7575/* Line 1806 of yacc.c  */
    76527576#line 1935 "parser.yy"
    7653     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl)->copyStorageClasses( (yyvsp[(1) - (3)].decl) ) ); }
    7654     break;
    7655 
    7656   case 507:
    7657 
    7658 /* Line 1806 of yacc.c  */
    7659 #line 1940 "parser.yy"
    7660     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addAssertions( (yyvsp[(2) - (2)].decl) ); }
    7661     break;
    7662 
    7663   case 508:
    7664 
    7665 /* Line 1806 of yacc.c  */
    7666 #line 1942 "parser.yy"
    7667     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addAssertions( (yyvsp[(2) - (4)].decl) )->addType( (yyvsp[(4) - (4)].decl) ); }
    7668     break;
    7669 
    7670   case 509:
    7671 
    7672 /* Line 1806 of yacc.c  */
    7673 #line 1947 "parser.yy"
    76747577    {
    76757578                        typedefTable.addToEnclosingScope( *(yyvsp[(1) - (1)].tok), TypedefTable::TD );
     
    76787581    break;
    76797582
    7680   case 510:
    7681 
    7682 /* Line 1806 of yacc.c  */
    7683 #line 1952 "parser.yy"
     7583  case 508:
     7584
     7585/* Line 1806 of yacc.c  */
     7586#line 1940 "parser.yy"
    76847587    {
    76857588                        typedefTable.addToEnclosingScope( *(yyvsp[(1) - (6)].tok), TypedefTable::TG );
     
    76887591    break;
    76897592
    7690   case 511:
    7691 
    7692 /* Line 1806 of yacc.c  */
    7693 #line 1960 "parser.yy"
     7593  case 509:
     7594
     7595/* Line 1806 of yacc.c  */
     7596#line 1948 "parser.yy"
    76947597    {
    76957598                        typedefTable.addToEnclosingScope( *(yyvsp[(2) - (9)].tok), TypedefTable::ID );
     
    76987601    break;
    76997602
    7700   case 512:
    7701 
    7702 /* Line 1806 of yacc.c  */
    7703 #line 1965 "parser.yy"
     7603  case 510:
     7604
     7605/* Line 1806 of yacc.c  */
     7606#line 1953 "parser.yy"
    77047607    {
    77057608                        typedefTable.enterTrait( *(yyvsp[(2) - (8)].tok) );
     
    77087611    break;
    77097612
    7710   case 513:
    7711 
    7712 /* Line 1806 of yacc.c  */
    7713 #line 1970 "parser.yy"
     7613  case 511:
     7614
     7615/* Line 1806 of yacc.c  */
     7616#line 1958 "parser.yy"
    77147617    {
    77157618                        typedefTable.leaveTrait();
     
    77197622    break;
    77207623
    7721   case 515:
    7722 
    7723 /* Line 1806 of yacc.c  */
    7724 #line 1980 "parser.yy"
     7624  case 513:
     7625
     7626/* Line 1806 of yacc.c  */
     7627#line 1968 "parser.yy"
    77257628    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    77267629    break;
    77277630
    7728   case 518:
    7729 
    7730 /* Line 1806 of yacc.c  */
    7731 #line 1990 "parser.yy"
     7631  case 516:
     7632
     7633/* Line 1806 of yacc.c  */
     7634#line 1978 "parser.yy"
    77327635    {
    77337636                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    77367639    break;
    77377640
    7738   case 519:
    7739 
    7740 /* Line 1806 of yacc.c  */
    7741 #line 1995 "parser.yy"
     7641  case 517:
     7642
     7643/* Line 1806 of yacc.c  */
     7644#line 1983 "parser.yy"
    77427645    {
    77437646                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    77467649    break;
    77477650
    7748   case 520:
    7749 
    7750 /* Line 1806 of yacc.c  */
    7751 #line 2000 "parser.yy"
     7651  case 518:
     7652
     7653/* Line 1806 of yacc.c  */
     7654#line 1988 "parser.yy"
    77527655    {
    77537656                        typedefTable.addToEnclosingScope2( *(yyvsp[(5) - (5)].tok), TypedefTable::ID );
     
    77567659    break;
    77577660
    7758   case 521:
    7759 
    7760 /* Line 1806 of yacc.c  */
    7761 #line 2008 "parser.yy"
     7661  case 519:
     7662
     7663/* Line 1806 of yacc.c  */
     7664#line 1996 "parser.yy"
    77627665    {
    77637666                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    77667669    break;
    77677670
    7768   case 522:
    7769 
    7770 /* Line 1806 of yacc.c  */
    7771 #line 2013 "parser.yy"
     7671  case 520:
     7672
     7673/* Line 1806 of yacc.c  */
     7674#line 2001 "parser.yy"
    77727675    {
    77737676                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    77767679    break;
    77777680
    7778   case 523:
    7779 
    7780 /* Line 1806 of yacc.c  */
    7781 #line 2023 "parser.yy"
     7681  case 521:
     7682
     7683/* Line 1806 of yacc.c  */
     7684#line 2011 "parser.yy"
    77827685    {}
    77837686    break;
    77847687
     7688  case 522:
     7689
     7690/* Line 1806 of yacc.c  */
     7691#line 2013 "parser.yy"
     7692    { parseTree = parseTree != nullptr ? parseTree->appendList( (yyvsp[(1) - (1)].decl) ) : (yyvsp[(1) - (1)].decl);    }
     7693    break;
     7694
    77857695  case 524:
    77867696
    77877697/* Line 1806 of yacc.c  */
    7788 #line 2025 "parser.yy"
    7789     { parseTree = parseTree ? parseTree->appendList( (yyvsp[(1) - (1)].decl) ) : (yyvsp[(1) - (1)].decl);       }
    7790     break;
    7791 
    7792   case 526:
    7793 
    7794 /* Line 1806 of yacc.c  */
    7795 #line 2031 "parser.yy"
    7796     { (yyval.decl) = (yyvsp[(1) - (3)].decl) ? (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ) : (yyvsp[(3) - (3)].decl); }
    7797     break;
    7798 
    7799   case 527:
    7800 
    7801 /* Line 1806 of yacc.c  */
    7802 #line 2036 "parser.yy"
    7803     { (yyval.decl) = nullptr; }
    7804     break;
    7805 
    7806   case 531:
    7807 
    7808 /* Line 1806 of yacc.c  */
    7809 #line 2044 "parser.yy"
     7698#line 2019 "parser.yy"
     7699    { (yyval.decl) = (yyvsp[(1) - (3)].decl) != nullptr ? (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ) : (yyvsp[(3) - (3)].decl); }
     7700    break;
     7701
     7702  case 525:
     7703
     7704/* Line 1806 of yacc.c  */
     7705#line 2024 "parser.yy"
     7706    { (yyval.decl) = 0; }
     7707    break;
     7708
     7709  case 529:
     7710
     7711/* Line 1806 of yacc.c  */
     7712#line 2032 "parser.yy"
    78107713    {}
    78117714    break;
    78127715
    7813   case 532:
    7814 
    7815 /* Line 1806 of yacc.c  */
    7816 #line 2046 "parser.yy"
     7716  case 530:
     7717
     7718/* Line 1806 of yacc.c  */
     7719#line 2034 "parser.yy"
    78177720    {
    78187721                        linkageStack.push( linkage );                           // handle nested extern "C"/"Cforall"
     
    78217724    break;
    78227725
    7823   case 533:
    7824 
    7825 /* Line 1806 of yacc.c  */
    7826 #line 2051 "parser.yy"
     7726  case 531:
     7727
     7728/* Line 1806 of yacc.c  */
     7729#line 2039 "parser.yy"
    78277730    {
    78287731                        linkage = linkageStack.top();
     
    78327735    break;
    78337736
    7834   case 534:
    7835 
    7836 /* Line 1806 of yacc.c  */
    7837 #line 2057 "parser.yy"
     7737  case 532:
     7738
     7739/* Line 1806 of yacc.c  */
     7740#line 2045 "parser.yy"
    78387741    {   // mark all fields in list
    78397742                        for ( DeclarationNode *iter = (yyvsp[(2) - (2)].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
     
    78437746    break;
    78447747
    7845   case 536:
    7846 
    7847 /* Line 1806 of yacc.c  */
    7848 #line 2072 "parser.yy"
     7748  case 534:
     7749
     7750/* Line 1806 of yacc.c  */
     7751#line 2060 "parser.yy"
    78497752    {
    78507753                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78547757    break;
    78557758
    7856   case 537:
    7857 
    7858 /* Line 1806 of yacc.c  */
    7859 #line 2078 "parser.yy"
     7759  case 535:
     7760
     7761/* Line 1806 of yacc.c  */
     7762#line 2066 "parser.yy"
    78607763    {
    78617764                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78657768    break;
    78667769
    7867   case 538:
    7868 
    7869 /* Line 1806 of yacc.c  */
    7870 #line 2087 "parser.yy"
     7770  case 536:
     7771
     7772/* Line 1806 of yacc.c  */
     7773#line 2075 "parser.yy"
    78717774    {
    78727775                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78767779    break;
    78777780
    7878   case 539:
    7879 
    7880 /* Line 1806 of yacc.c  */
    7881 #line 2093 "parser.yy"
     7781  case 537:
     7782
     7783/* Line 1806 of yacc.c  */
     7784#line 2081 "parser.yy"
    78827785    {
    78837786                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78877790    break;
    78887791
    7889   case 540:
    7890 
    7891 /* Line 1806 of yacc.c  */
    7892 #line 2099 "parser.yy"
     7792  case 538:
     7793
     7794/* Line 1806 of yacc.c  */
     7795#line 2087 "parser.yy"
    78937796    {
    78947797                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78987801    break;
    78997802
    7900   case 541:
    7901 
    7902 /* Line 1806 of yacc.c  */
    7903 #line 2105 "parser.yy"
     7803  case 539:
     7804
     7805/* Line 1806 of yacc.c  */
     7806#line 2093 "parser.yy"
    79047807    {
    79057808                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79097812    break;
    79107813
    7911   case 542:
    7912 
    7913 /* Line 1806 of yacc.c  */
    7914 #line 2111 "parser.yy"
     7814  case 540:
     7815
     7816/* Line 1806 of yacc.c  */
     7817#line 2099 "parser.yy"
    79157818    {
    79167819                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79207823    break;
    79217824
    7922   case 543:
    7923 
    7924 /* Line 1806 of yacc.c  */
    7925 #line 2119 "parser.yy"
     7825  case 541:
     7826
     7827/* Line 1806 of yacc.c  */
     7828#line 2107 "parser.yy"
    79267829    {
    79277830                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79317834    break;
    79327835
    7933   case 544:
    7934 
    7935 /* Line 1806 of yacc.c  */
    7936 #line 2125 "parser.yy"
     7836  case 542:
     7837
     7838/* Line 1806 of yacc.c  */
     7839#line 2113 "parser.yy"
    79377840    {
    79387841                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79427845    break;
    79437846
    7944   case 545:
    7945 
    7946 /* Line 1806 of yacc.c  */
    7947 #line 2133 "parser.yy"
     7847  case 543:
     7848
     7849/* Line 1806 of yacc.c  */
     7850#line 2121 "parser.yy"
    79487851    {
    79497852                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79537856    break;
    79547857
    7955   case 546:
    7956 
    7957 /* Line 1806 of yacc.c  */
    7958 #line 2139 "parser.yy"
     7858  case 544:
     7859
     7860/* Line 1806 of yacc.c  */
     7861#line 2127 "parser.yy"
    79597862    {
    79607863                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79647867    break;
    79657868
     7869  case 548:
     7870
     7871/* Line 1806 of yacc.c  */
     7872#line 2142 "parser.yy"
     7873    { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     7874    break;
     7875
    79667876  case 550:
    79677877
    79687878/* Line 1806 of yacc.c  */
    7969 #line 2154 "parser.yy"
    7970     { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     7879#line 2147 "parser.yy"
     7880    { delete (yyvsp[(3) - (5)].str); }
    79717881    break;
    79727882
     
    79747884
    79757885/* Line 1806 of yacc.c  */
     7886#line 2152 "parser.yy"
     7887    { (yyval.decl) = 0; }
     7888    break;
     7889
     7890  case 554:
     7891
     7892/* Line 1806 of yacc.c  */
    79767893#line 2159 "parser.yy"
    7977     { (yyval.constant) = nullptr; }
    7978     break;
    7979 
    7980   case 552:
    7981 
    7982 /* Line 1806 of yacc.c  */
    7983 #line 2161 "parser.yy"
    7984     { (yyval.constant) = (yyvsp[(3) - (5)].constant); }
    7985     break;
    7986 
    7987   case 553:
    7988 
    7989 /* Line 1806 of yacc.c  */
    7990 #line 2166 "parser.yy"
    7991     { (yyval.decl) = nullptr; }
    7992     break;
    7993 
    7994   case 556:
    7995 
    7996 /* Line 1806 of yacc.c  */
    7997 #line 2173 "parser.yy"
    79987894    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    79997895    break;
    80007896
    8001   case 557:
    8002 
    8003 /* Line 1806 of yacc.c  */
    8004 #line 2179 "parser.yy"
    8005     { (yyval.decl) = nullptr; }
     7897  case 555:
     7898
     7899/* Line 1806 of yacc.c  */
     7900#line 2165 "parser.yy"
     7901    { (yyval.decl) = 0; }
     7902    break;
     7903
     7904  case 560:
     7905
     7906/* Line 1806 of yacc.c  */
     7907#line 2176 "parser.yy"
     7908    { delete (yyvsp[(3) - (4)].en); }
     7909    break;
     7910
     7911  case 561:
     7912
     7913/* Line 1806 of yacc.c  */
     7914#line 2180 "parser.yy"
     7915    { delete (yyvsp[(1) - (1)].tok); }
    80067916    break;
    80077917
     
    80097919
    80107920/* Line 1806 of yacc.c  */
    8011 #line 2190 "parser.yy"
    8012     { delete (yyvsp[(3) - (4)].en); }
     7921#line 2181 "parser.yy"
     7922    { delete (yyvsp[(1) - (1)].decl); }
    80137923    break;
    80147924
     
    80167926
    80177927/* Line 1806 of yacc.c  */
    8018 #line 2194 "parser.yy"
    8019     { delete (yyvsp[(1) - (1)].tok); }
     7928#line 2182 "parser.yy"
     7929    { delete (yyvsp[(1) - (1)].decl); }
    80207930    break;
    80217931
     
    80237933
    80247934/* Line 1806 of yacc.c  */
    8025 #line 2195 "parser.yy"
     7935#line 2183 "parser.yy"
    80267936    { delete (yyvsp[(1) - (1)].decl); }
    80277937    break;
     
    80307940
    80317941/* Line 1806 of yacc.c  */
    8032 #line 2196 "parser.yy"
    8033     { delete (yyvsp[(1) - (1)].decl); }
    8034     break;
    8035 
    8036   case 566:
    8037 
    8038 /* Line 1806 of yacc.c  */
    8039 #line 2197 "parser.yy"
    8040     { delete (yyvsp[(1) - (1)].decl); }
     7942#line 2218 "parser.yy"
     7943    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    80417944    break;
    80427945
     
    80447947
    80457948/* Line 1806 of yacc.c  */
    8046 #line 2232 "parser.yy"
     7949#line 2221 "parser.yy"
    80477950    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    80487951    break;
    80497952
     7953  case 568:
     7954
     7955/* Line 1806 of yacc.c  */
     7956#line 2223 "parser.yy"
     7957    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     7958    break;
     7959
    80507960  case 569:
    80517961
    80527962/* Line 1806 of yacc.c  */
    8053 #line 2235 "parser.yy"
    8054     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8055     break;
    8056 
    8057   case 570:
    8058 
    8059 /* Line 1806 of yacc.c  */
    8060 #line 2237 "parser.yy"
    8061     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8062     break;
    8063 
    8064   case 571:
    8065 
    8066 /* Line 1806 of yacc.c  */
    8067 #line 2242 "parser.yy"
     7963#line 2228 "parser.yy"
    80687964    {
    80697965                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     
    80727968    break;
    80737969
     7970  case 570:
     7971
     7972/* Line 1806 of yacc.c  */
     7973#line 2233 "parser.yy"
     7974    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     7975    break;
     7976
     7977  case 571:
     7978
     7979/* Line 1806 of yacc.c  */
     7980#line 2238 "parser.yy"
     7981    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     7982    break;
     7983
    80747984  case 572:
    80757985
    80767986/* Line 1806 of yacc.c  */
     7987#line 2240 "parser.yy"
     7988    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     7989    break;
     7990
     7991  case 573:
     7992
     7993/* Line 1806 of yacc.c  */
     7994#line 2242 "parser.yy"
     7995    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     7996    break;
     7997
     7998  case 574:
     7999
     8000/* Line 1806 of yacc.c  */
    80778001#line 2247 "parser.yy"
     8002    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     8003    break;
     8004
     8005  case 575:
     8006
     8007/* Line 1806 of yacc.c  */
     8008#line 2249 "parser.yy"
     8009    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8010    break;
     8011
     8012  case 576:
     8013
     8014/* Line 1806 of yacc.c  */
     8015#line 2251 "parser.yy"
     8016    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8017    break;
     8018
     8019  case 577:
     8020
     8021/* Line 1806 of yacc.c  */
     8022#line 2253 "parser.yy"
    80788023    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    80798024    break;
    80808025
    8081   case 573:
    8082 
    8083 /* Line 1806 of yacc.c  */
    8084 #line 2252 "parser.yy"
     8026  case 578:
     8027
     8028/* Line 1806 of yacc.c  */
     8029#line 2258 "parser.yy"
     8030    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     8031    break;
     8032
     8033  case 579:
     8034
     8035/* Line 1806 of yacc.c  */
     8036#line 2260 "parser.yy"
     8037    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8038    break;
     8039
     8040  case 580:
     8041
     8042/* Line 1806 of yacc.c  */
     8043#line 2269 "parser.yy"
     8044    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8045    break;
     8046
     8047  case 582:
     8048
     8049/* Line 1806 of yacc.c  */
     8050#line 2272 "parser.yy"
     8051    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8052    break;
     8053
     8054  case 583:
     8055
     8056/* Line 1806 of yacc.c  */
     8057#line 2277 "parser.yy"
     8058    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
     8059    break;
     8060
     8061  case 584:
     8062
     8063/* Line 1806 of yacc.c  */
     8064#line 2279 "parser.yy"
     8065    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     8066    break;
     8067
     8068  case 585:
     8069
     8070/* Line 1806 of yacc.c  */
     8071#line 2281 "parser.yy"
     8072    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8073    break;
     8074
     8075  case 586:
     8076
     8077/* Line 1806 of yacc.c  */
     8078#line 2286 "parser.yy"
    80858079    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    80868080    break;
    80878081
    8088   case 574:
    8089 
    8090 /* Line 1806 of yacc.c  */
    8091 #line 2254 "parser.yy"
     8082  case 587:
     8083
     8084/* Line 1806 of yacc.c  */
     8085#line 2288 "parser.yy"
    80928086    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    80938087    break;
    80948088
    8095   case 575:
    8096 
    8097 /* Line 1806 of yacc.c  */
    8098 #line 2256 "parser.yy"
     8089  case 588:
     8090
     8091/* Line 1806 of yacc.c  */
     8092#line 2290 "parser.yy"
    80998093    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    81008094    break;
    81018095
    8102   case 576:
    8103 
    8104 /* Line 1806 of yacc.c  */
    8105 #line 2261 "parser.yy"
     8096  case 589:
     8097
     8098/* Line 1806 of yacc.c  */
     8099#line 2295 "parser.yy"
     8100    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8101    break;
     8102
     8103  case 590:
     8104
     8105/* Line 1806 of yacc.c  */
     8106#line 2297 "parser.yy"
     8107    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8108    break;
     8109
     8110  case 591:
     8111
     8112/* Line 1806 of yacc.c  */
     8113#line 2299 "parser.yy"
     8114    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8115    break;
     8116
     8117  case 595:
     8118
     8119/* Line 1806 of yacc.c  */
     8120#line 2314 "parser.yy"
     8121    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addIdList( (yyvsp[(3) - (4)].decl) ); }
     8122    break;
     8123
     8124  case 596:
     8125
     8126/* Line 1806 of yacc.c  */
     8127#line 2316 "parser.yy"
     8128    { (yyval.decl) = (yyvsp[(2) - (6)].decl)->addIdList( (yyvsp[(5) - (6)].decl) ); }
     8129    break;
     8130
     8131  case 597:
     8132
     8133/* Line 1806 of yacc.c  */
     8134#line 2318 "parser.yy"
     8135    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8136    break;
     8137
     8138  case 598:
     8139
     8140/* Line 1806 of yacc.c  */
     8141#line 2323 "parser.yy"
     8142    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     8143    break;
     8144
     8145  case 599:
     8146
     8147/* Line 1806 of yacc.c  */
     8148#line 2325 "parser.yy"
     8149    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     8150    break;
     8151
     8152  case 600:
     8153
     8154/* Line 1806 of yacc.c  */
     8155#line 2327 "parser.yy"
     8156    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8157    break;
     8158
     8159  case 601:
     8160
     8161/* Line 1806 of yacc.c  */
     8162#line 2332 "parser.yy"
     8163    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8164    break;
     8165
     8166  case 602:
     8167
     8168/* Line 1806 of yacc.c  */
     8169#line 2334 "parser.yy"
     8170    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8171    break;
     8172
     8173  case 603:
     8174
     8175/* Line 1806 of yacc.c  */
     8176#line 2336 "parser.yy"
     8177    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8178    break;
     8179
     8180  case 604:
     8181
     8182/* Line 1806 of yacc.c  */
     8183#line 2351 "parser.yy"
     8184    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8185    break;
     8186
     8187  case 606:
     8188
     8189/* Line 1806 of yacc.c  */
     8190#line 2354 "parser.yy"
     8191    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8192    break;
     8193
     8194  case 607:
     8195
     8196/* Line 1806 of yacc.c  */
     8197#line 2356 "parser.yy"
     8198    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8199    break;
     8200
     8201  case 609:
     8202
     8203/* Line 1806 of yacc.c  */
     8204#line 2362 "parser.yy"
     8205    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8206    break;
     8207
     8208  case 610:
     8209
     8210/* Line 1806 of yacc.c  */
     8211#line 2367 "parser.yy"
     8212    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     8213    break;
     8214
     8215  case 611:
     8216
     8217/* Line 1806 of yacc.c  */
     8218#line 2369 "parser.yy"
     8219    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     8220    break;
     8221
     8222  case 612:
     8223
     8224/* Line 1806 of yacc.c  */
     8225#line 2371 "parser.yy"
     8226    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8227    break;
     8228
     8229  case 613:
     8230
     8231/* Line 1806 of yacc.c  */
     8232#line 2376 "parser.yy"
    81068233    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    81078234    break;
    81088235
    8109   case 577:
    8110 
    8111 /* Line 1806 of yacc.c  */
    8112 #line 2263 "parser.yy"
     8236  case 614:
     8237
     8238/* Line 1806 of yacc.c  */
     8239#line 2378 "parser.yy"
    81138240    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    81148241    break;
    81158242
    8116   case 578:
    8117 
    8118 /* Line 1806 of yacc.c  */
    8119 #line 2265 "parser.yy"
     8243  case 615:
     8244
     8245/* Line 1806 of yacc.c  */
     8246#line 2380 "parser.yy"
    81208247    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    81218248    break;
    81228249
    8123   case 579:
    8124 
    8125 /* Line 1806 of yacc.c  */
    8126 #line 2267 "parser.yy"
     8250  case 616:
     8251
     8252/* Line 1806 of yacc.c  */
     8253#line 2382 "parser.yy"
    81278254    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    81288255    break;
    81298256
    8130   case 580:
    8131 
    8132 /* Line 1806 of yacc.c  */
    8133 #line 2272 "parser.yy"
     8257  case 617:
     8258
     8259/* Line 1806 of yacc.c  */
     8260#line 2387 "parser.yy"
     8261    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
     8262    break;
     8263
     8264  case 618:
     8265
     8266/* Line 1806 of yacc.c  */
     8267#line 2389 "parser.yy"
    81348268    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    81358269    break;
    81368270
    8137   case 581:
    8138 
    8139 /* Line 1806 of yacc.c  */
    8140 #line 2274 "parser.yy"
     8271  case 619:
     8272
     8273/* Line 1806 of yacc.c  */
     8274#line 2391 "parser.yy"
    81418275    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    81428276    break;
    81438277
    8144   case 582:
    8145 
    8146 /* Line 1806 of yacc.c  */
    8147 #line 2283 "parser.yy"
     8278  case 620:
     8279
     8280/* Line 1806 of yacc.c  */
     8281#line 2401 "parser.yy"
    81488282    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    81498283    break;
    81508284
    8151   case 584:
    8152 
    8153 /* Line 1806 of yacc.c  */
    8154 #line 2286 "parser.yy"
     8285  case 622:
     8286
     8287/* Line 1806 of yacc.c  */
     8288#line 2404 "parser.yy"
    81558289    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    81568290    break;
    81578291
    8158   case 585:
    8159 
    8160 /* Line 1806 of yacc.c  */
    8161 #line 2291 "parser.yy"
     8292  case 623:
     8293
     8294/* Line 1806 of yacc.c  */
     8295#line 2406 "parser.yy"
     8296    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8297    break;
     8298
     8299  case 624:
     8300
     8301/* Line 1806 of yacc.c  */
     8302#line 2411 "parser.yy"
     8303    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     8304    break;
     8305
     8306  case 625:
     8307
     8308/* Line 1806 of yacc.c  */
     8309#line 2413 "parser.yy"
     8310    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     8311    break;
     8312
     8313  case 626:
     8314
     8315/* Line 1806 of yacc.c  */
     8316#line 2415 "parser.yy"
     8317    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8318    break;
     8319
     8320  case 627:
     8321
     8322/* Line 1806 of yacc.c  */
     8323#line 2420 "parser.yy"
     8324    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     8325    break;
     8326
     8327  case 628:
     8328
     8329/* Line 1806 of yacc.c  */
     8330#line 2422 "parser.yy"
     8331    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8332    break;
     8333
     8334  case 629:
     8335
     8336/* Line 1806 of yacc.c  */
     8337#line 2424 "parser.yy"
     8338    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8339    break;
     8340
     8341  case 630:
     8342
     8343/* Line 1806 of yacc.c  */
     8344#line 2426 "parser.yy"
     8345    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8346    break;
     8347
     8348  case 631:
     8349
     8350/* Line 1806 of yacc.c  */
     8351#line 2431 "parser.yy"
    81628352    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    81638353    break;
    81648354
    8165   case 586:
    8166 
    8167 /* Line 1806 of yacc.c  */
    8168 #line 2293 "parser.yy"
     8355  case 632:
     8356
     8357/* Line 1806 of yacc.c  */
     8358#line 2433 "parser.yy"
    81698359    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    81708360    break;
    81718361
    8172   case 587:
    8173 
    8174 /* Line 1806 of yacc.c  */
    8175 #line 2295 "parser.yy"
     8362  case 633:
     8363
     8364/* Line 1806 of yacc.c  */
     8365#line 2435 "parser.yy"
    81768366    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    81778367    break;
    81788368
    8179   case 588:
    8180 
    8181 /* Line 1806 of yacc.c  */
    8182 #line 2300 "parser.yy"
    8183     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    8184     break;
    8185 
    8186   case 589:
    8187 
    8188 /* Line 1806 of yacc.c  */
    8189 #line 2302 "parser.yy"
    8190     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8191     break;
    8192 
    8193   case 590:
    8194 
    8195 /* Line 1806 of yacc.c  */
    8196 #line 2304 "parser.yy"
    8197     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8198     break;
    8199 
    8200   case 591:
    8201 
    8202 /* Line 1806 of yacc.c  */
    8203 #line 2309 "parser.yy"
    8204     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8205     break;
    8206 
    8207   case 592:
    8208 
    8209 /* Line 1806 of yacc.c  */
    8210 #line 2311 "parser.yy"
    8211     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8212     break;
    8213 
    8214   case 593:
    8215 
    8216 /* Line 1806 of yacc.c  */
    8217 #line 2313 "parser.yy"
    8218     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8219     break;
    8220 
    8221   case 597:
    8222 
    8223 /* Line 1806 of yacc.c  */
    8224 #line 2328 "parser.yy"
    8225     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addIdList( (yyvsp[(3) - (4)].decl) ); }
    8226     break;
    8227 
    8228   case 598:
    8229 
    8230 /* Line 1806 of yacc.c  */
    8231 #line 2330 "parser.yy"
    8232     { (yyval.decl) = (yyvsp[(2) - (6)].decl)->addIdList( (yyvsp[(5) - (6)].decl) ); }
    8233     break;
    8234 
    8235   case 599:
    8236 
    8237 /* Line 1806 of yacc.c  */
    8238 #line 2332 "parser.yy"
    8239     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8240     break;
    8241 
    8242   case 600:
    8243 
    8244 /* Line 1806 of yacc.c  */
    8245 #line 2337 "parser.yy"
    8246     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    8247     break;
    8248 
    8249   case 601:
    8250 
    8251 /* Line 1806 of yacc.c  */
    8252 #line 2339 "parser.yy"
    8253     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8254     break;
    8255 
    8256   case 602:
    8257 
    8258 /* Line 1806 of yacc.c  */
    8259 #line 2341 "parser.yy"
    8260     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8261     break;
    8262 
    8263   case 603:
    8264 
    8265 /* Line 1806 of yacc.c  */
    8266 #line 2346 "parser.yy"
    8267     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8268     break;
    8269 
    8270   case 604:
    8271 
    8272 /* Line 1806 of yacc.c  */
    8273 #line 2348 "parser.yy"
    8274     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8275     break;
    8276 
    8277   case 605:
    8278 
    8279 /* Line 1806 of yacc.c  */
    8280 #line 2350 "parser.yy"
    8281     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8282     break;
    8283 
    8284   case 606:
    8285 
    8286 /* Line 1806 of yacc.c  */
    8287 #line 2365 "parser.yy"
     8369  case 634:
     8370
     8371/* Line 1806 of yacc.c  */
     8372#line 2466 "parser.yy"
    82888373    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    82898374    break;
    82908375
    8291   case 608:
    8292 
    8293 /* Line 1806 of yacc.c  */
    8294 #line 2368 "parser.yy"
     8376  case 636:
     8377
     8378/* Line 1806 of yacc.c  */
     8379#line 2469 "parser.yy"
    82958380    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    82968381    break;
    82978382
    8298   case 609:
    8299 
    8300 /* Line 1806 of yacc.c  */
    8301 #line 2370 "parser.yy"
     8383  case 637:
     8384
     8385/* Line 1806 of yacc.c  */
     8386#line 2471 "parser.yy"
    83028387    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    83038388    break;
    83048389
    8305   case 611:
    8306 
    8307 /* Line 1806 of yacc.c  */
    8308 #line 2376 "parser.yy"
    8309     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8310     break;
    8311 
    8312   case 612:
    8313 
    8314 /* Line 1806 of yacc.c  */
    8315 #line 2381 "parser.yy"
    8316     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    8317     break;
    8318 
    8319   case 613:
    8320 
    8321 /* Line 1806 of yacc.c  */
    8322 #line 2383 "parser.yy"
    8323     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8324     break;
    8325 
    8326   case 614:
    8327 
    8328 /* Line 1806 of yacc.c  */
    8329 #line 2385 "parser.yy"
    8330     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8331     break;
    8332 
    8333   case 615:
    8334 
    8335 /* Line 1806 of yacc.c  */
    8336 #line 2390 "parser.yy"
    8337     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    8338     break;
    8339 
    8340   case 616:
    8341 
    8342 /* Line 1806 of yacc.c  */
    8343 #line 2392 "parser.yy"
    8344     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8345     break;
    8346 
    8347   case 617:
    8348 
    8349 /* Line 1806 of yacc.c  */
    8350 #line 2394 "parser.yy"
    8351     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8352     break;
    8353 
    8354   case 618:
    8355 
    8356 /* Line 1806 of yacc.c  */
    8357 #line 2396 "parser.yy"
    8358     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8359     break;
    8360 
    8361   case 619:
    8362 
    8363 /* Line 1806 of yacc.c  */
    8364 #line 2401 "parser.yy"
    8365     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    8366     break;
    8367 
    8368   case 620:
    8369 
    8370 /* Line 1806 of yacc.c  */
    8371 #line 2403 "parser.yy"
    8372     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    8373     break;
    8374 
    8375   case 621:
    8376 
    8377 /* Line 1806 of yacc.c  */
    8378 #line 2405 "parser.yy"
    8379     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8380     break;
    8381 
    8382   case 622:
    8383 
    8384 /* Line 1806 of yacc.c  */
    8385 #line 2415 "parser.yy"
    8386     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8387     break;
    8388 
    8389   case 624:
    8390 
    8391 /* Line 1806 of yacc.c  */
    8392 #line 2418 "parser.yy"
    8393     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8394     break;
    8395 
    8396   case 625:
    8397 
    8398 /* Line 1806 of yacc.c  */
    8399 #line 2420 "parser.yy"
    8400     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8401     break;
    8402 
    8403   case 626:
    8404 
    8405 /* Line 1806 of yacc.c  */
    8406 #line 2425 "parser.yy"
    8407     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    8408     break;
    8409 
    8410   case 627:
    8411 
    8412 /* Line 1806 of yacc.c  */
    8413 #line 2427 "parser.yy"
    8414     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8415     break;
    8416 
    8417   case 628:
    8418 
    8419 /* Line 1806 of yacc.c  */
    8420 #line 2429 "parser.yy"
    8421     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8422     break;
    8423 
    8424   case 629:
    8425 
    8426 /* Line 1806 of yacc.c  */
    8427 #line 2434 "parser.yy"
    8428     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    8429     break;
    8430 
    8431   case 630:
    8432 
    8433 /* Line 1806 of yacc.c  */
    8434 #line 2436 "parser.yy"
    8435     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8436     break;
    8437 
    8438   case 631:
    8439 
    8440 /* Line 1806 of yacc.c  */
    8441 #line 2438 "parser.yy"
    8442     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8443     break;
    8444 
    8445   case 632:
    8446 
    8447 /* Line 1806 of yacc.c  */
    8448 #line 2440 "parser.yy"
    8449     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8450     break;
    8451 
    8452   case 633:
    8453 
    8454 /* Line 1806 of yacc.c  */
    8455 #line 2445 "parser.yy"
    8456     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    8457     break;
    8458 
    8459   case 634:
    8460 
    8461 /* Line 1806 of yacc.c  */
    8462 #line 2447 "parser.yy"
    8463     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    8464     break;
    8465 
    8466   case 635:
    8467 
    8468 /* Line 1806 of yacc.c  */
    8469 #line 2449 "parser.yy"
    8470     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8471     break;
    8472 
    8473   case 636:
    8474 
    8475 /* Line 1806 of yacc.c  */
    8476 #line 2480 "parser.yy"
    8477     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8478     break;
    8479 
    84808390  case 638:
    84818391
    84828392/* Line 1806 of yacc.c  */
    8483 #line 2483 "parser.yy"
    8484     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8485     break;
    8486 
    8487   case 639:
    8488 
    8489 /* Line 1806 of yacc.c  */
    8490 #line 2485 "parser.yy"
    8491     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8492     break;
    8493 
    8494   case 640:
    8495 
    8496 /* Line 1806 of yacc.c  */
    8497 #line 2490 "parser.yy"
     8393#line 2476 "parser.yy"
    84988394    {
    84998395                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     
    85028398    break;
    85038399
    8504   case 641:
    8505 
    8506 /* Line 1806 of yacc.c  */
    8507 #line 2495 "parser.yy"
     8400  case 639:
     8401
     8402/* Line 1806 of yacc.c  */
     8403#line 2481 "parser.yy"
    85088404    {
    85098405                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     
    85128408    break;
    85138409
     8410  case 640:
     8411
     8412/* Line 1806 of yacc.c  */
     8413#line 2489 "parser.yy"
     8414    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     8415    break;
     8416
     8417  case 641:
     8418
     8419/* Line 1806 of yacc.c  */
     8420#line 2491 "parser.yy"
     8421    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     8422    break;
     8423
    85148424  case 642:
    85158425
    85168426/* Line 1806 of yacc.c  */
    8517 #line 2503 "parser.yy"
     8427#line 2493 "parser.yy"
     8428    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8429    break;
     8430
     8431  case 643:
     8432
     8433/* Line 1806 of yacc.c  */
     8434#line 2498 "parser.yy"
     8435    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     8436    break;
     8437
     8438  case 644:
     8439
     8440/* Line 1806 of yacc.c  */
     8441#line 2500 "parser.yy"
     8442    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8443    break;
     8444
     8445  case 645:
     8446
     8447/* Line 1806 of yacc.c  */
     8448#line 2505 "parser.yy"
     8449    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
     8450    break;
     8451
     8452  case 646:
     8453
     8454/* Line 1806 of yacc.c  */
     8455#line 2507 "parser.yy"
     8456    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     8457    break;
     8458
     8459  case 648:
     8460
     8461/* Line 1806 of yacc.c  */
     8462#line 2522 "parser.yy"
     8463    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8464    break;
     8465
     8466  case 649:
     8467
     8468/* Line 1806 of yacc.c  */
     8469#line 2524 "parser.yy"
     8470    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8471    break;
     8472
     8473  case 650:
     8474
     8475/* Line 1806 of yacc.c  */
     8476#line 2529 "parser.yy"
     8477    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
     8478    break;
     8479
     8480  case 651:
     8481
     8482/* Line 1806 of yacc.c  */
     8483#line 2531 "parser.yy"
     8484    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
     8485    break;
     8486
     8487  case 652:
     8488
     8489/* Line 1806 of yacc.c  */
     8490#line 2533 "parser.yy"
    85188491    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    85198492    break;
    85208493
    8521   case 643:
    8522 
    8523 /* Line 1806 of yacc.c  */
    8524 #line 2505 "parser.yy"
     8494  case 653:
     8495
     8496/* Line 1806 of yacc.c  */
     8497#line 2535 "parser.yy"
    85258498    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    85268499    break;
    85278500
    8528   case 644:
    8529 
    8530 /* Line 1806 of yacc.c  */
    8531 #line 2507 "parser.yy"
     8501  case 654:
     8502
     8503/* Line 1806 of yacc.c  */
     8504#line 2537 "parser.yy"
    85328505    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    85338506    break;
    85348507
    8535   case 645:
    8536 
    8537 /* Line 1806 of yacc.c  */
    8538 #line 2512 "parser.yy"
     8508  case 656:
     8509
     8510/* Line 1806 of yacc.c  */
     8511#line 2543 "parser.yy"
     8512    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8513    break;
     8514
     8515  case 657:
     8516
     8517/* Line 1806 of yacc.c  */
     8518#line 2545 "parser.yy"
     8519    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8520    break;
     8521
     8522  case 658:
     8523
     8524/* Line 1806 of yacc.c  */
     8525#line 2547 "parser.yy"
     8526    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8527    break;
     8528
     8529  case 659:
     8530
     8531/* Line 1806 of yacc.c  */
     8532#line 2552 "parser.yy"
     8533    { (yyval.decl) = DeclarationNode::newFunction( nullptr, nullptr, (yyvsp[(3) - (5)].decl), nullptr ); }
     8534    break;
     8535
     8536  case 660:
     8537
     8538/* Line 1806 of yacc.c  */
     8539#line 2554 "parser.yy"
     8540    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     8541    break;
     8542
     8543  case 661:
     8544
     8545/* Line 1806 of yacc.c  */
     8546#line 2556 "parser.yy"
     8547    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8548    break;
     8549
     8550  case 662:
     8551
     8552/* Line 1806 of yacc.c  */
     8553#line 2562 "parser.yy"
     8554    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
     8555    break;
     8556
     8557  case 663:
     8558
     8559/* Line 1806 of yacc.c  */
     8560#line 2564 "parser.yy"
     8561    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false )->addArray( (yyvsp[(3) - (3)].decl) ); }
     8562    break;
     8563
     8564  case 665:
     8565
     8566/* Line 1806 of yacc.c  */
     8567#line 2570 "parser.yy"
     8568    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(3) - (5)].en), 0, false ); }
     8569    break;
     8570
     8571  case 666:
     8572
     8573/* Line 1806 of yacc.c  */
     8574#line 2572 "parser.yy"
     8575    { (yyval.decl) = DeclarationNode::newVarArray( 0 ); }
     8576    break;
     8577
     8578  case 667:
     8579
     8580/* Line 1806 of yacc.c  */
     8581#line 2574 "parser.yy"
     8582    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newArray( (yyvsp[(4) - (6)].en), 0, false ) ); }
     8583    break;
     8584
     8585  case 668:
     8586
     8587/* Line 1806 of yacc.c  */
     8588#line 2576 "parser.yy"
     8589    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newVarArray( 0 ) ); }
     8590    break;
     8591
     8592  case 670:
     8593
     8594/* Line 1806 of yacc.c  */
     8595#line 2591 "parser.yy"
     8596    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8597    break;
     8598
     8599  case 671:
     8600
     8601/* Line 1806 of yacc.c  */
     8602#line 2593 "parser.yy"
     8603    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8604    break;
     8605
     8606  case 672:
     8607
     8608/* Line 1806 of yacc.c  */
     8609#line 2598 "parser.yy"
     8610    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
     8611    break;
     8612
     8613  case 673:
     8614
     8615/* Line 1806 of yacc.c  */
     8616#line 2600 "parser.yy"
     8617    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
     8618    break;
     8619
     8620  case 674:
     8621
     8622/* Line 1806 of yacc.c  */
     8623#line 2602 "parser.yy"
     8624    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     8625    break;
     8626
     8627  case 675:
     8628
     8629/* Line 1806 of yacc.c  */
     8630#line 2604 "parser.yy"
     8631    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     8632    break;
     8633
     8634  case 676:
     8635
     8636/* Line 1806 of yacc.c  */
     8637#line 2606 "parser.yy"
     8638    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8639    break;
     8640
     8641  case 678:
     8642
     8643/* Line 1806 of yacc.c  */
     8644#line 2612 "parser.yy"
     8645    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8646    break;
     8647
     8648  case 679:
     8649
     8650/* Line 1806 of yacc.c  */
     8651#line 2614 "parser.yy"
     8652    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8653    break;
     8654
     8655  case 680:
     8656
     8657/* Line 1806 of yacc.c  */
     8658#line 2616 "parser.yy"
     8659    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8660    break;
     8661
     8662  case 681:
     8663
     8664/* Line 1806 of yacc.c  */
     8665#line 2621 "parser.yy"
     8666    { (yyval.decl) = DeclarationNode::newFunction( nullptr, nullptr, (yyvsp[(3) - (5)].decl), nullptr ); }
     8667    break;
     8668
     8669  case 682:
     8670
     8671/* Line 1806 of yacc.c  */
     8672#line 2623 "parser.yy"
     8673    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     8674    break;
     8675
     8676  case 683:
     8677
     8678/* Line 1806 of yacc.c  */
     8679#line 2625 "parser.yy"
     8680    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8681    break;
     8682
     8683  case 685:
     8684
     8685/* Line 1806 of yacc.c  */
     8686#line 2632 "parser.yy"
    85398687    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    85408688    break;
    85418689
    8542   case 646:
    8543 
    8544 /* Line 1806 of yacc.c  */
    8545 #line 2514 "parser.yy"
     8690  case 687:
     8691
     8692/* Line 1806 of yacc.c  */
     8693#line 2643 "parser.yy"
     8694    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
     8695    break;
     8696
     8697  case 688:
     8698
     8699/* Line 1806 of yacc.c  */
     8700#line 2646 "parser.yy"
     8701    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
     8702    break;
     8703
     8704  case 689:
     8705
     8706/* Line 1806 of yacc.c  */
     8707#line 2648 "parser.yy"
     8708    { (yyval.decl) = DeclarationNode::newArray( 0, (yyvsp[(3) - (5)].decl), false ); }
     8709    break;
     8710
     8711  case 690:
     8712
     8713/* Line 1806 of yacc.c  */
     8714#line 2651 "parser.yy"
     8715    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
     8716    break;
     8717
     8718  case 691:
     8719
     8720/* Line 1806 of yacc.c  */
     8721#line 2653 "parser.yy"
     8722    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl), true ); }
     8723    break;
     8724
     8725  case 692:
     8726
     8727/* Line 1806 of yacc.c  */
     8728#line 2655 "parser.yy"
     8729    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(3) - (7)].decl), true ); }
     8730    break;
     8731
     8732  case 694:
     8733
     8734/* Line 1806 of yacc.c  */
     8735#line 2669 "parser.yy"
     8736    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8737    break;
     8738
     8739  case 695:
     8740
     8741/* Line 1806 of yacc.c  */
     8742#line 2671 "parser.yy"
     8743    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8744    break;
     8745
     8746  case 696:
     8747
     8748/* Line 1806 of yacc.c  */
     8749#line 2676 "parser.yy"
     8750    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
     8751    break;
     8752
     8753  case 697:
     8754
     8755/* Line 1806 of yacc.c  */
     8756#line 2678 "parser.yy"
     8757    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
     8758    break;
     8759
     8760  case 698:
     8761
     8762/* Line 1806 of yacc.c  */
     8763#line 2680 "parser.yy"
     8764    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     8765    break;
     8766
     8767  case 699:
     8768
     8769/* Line 1806 of yacc.c  */
     8770#line 2682 "parser.yy"
     8771    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     8772    break;
     8773
     8774  case 700:
     8775
     8776/* Line 1806 of yacc.c  */
     8777#line 2684 "parser.yy"
     8778    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8779    break;
     8780
     8781  case 702:
     8782
     8783/* Line 1806 of yacc.c  */
     8784#line 2690 "parser.yy"
    85468785    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    85478786    break;
    85488787
    8549   case 647:
    8550 
    8551 /* Line 1806 of yacc.c  */
    8552 #line 2519 "parser.yy"
    8553     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    8554     break;
    8555 
    8556   case 648:
    8557 
    8558 /* Line 1806 of yacc.c  */
    8559 #line 2521 "parser.yy"
     8788  case 703:
     8789
     8790/* Line 1806 of yacc.c  */
     8791#line 2692 "parser.yy"
     8792    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8793    break;
     8794
     8795  case 704:
     8796
     8797/* Line 1806 of yacc.c  */
     8798#line 2694 "parser.yy"
     8799    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8800    break;
     8801
     8802  case 705:
     8803
     8804/* Line 1806 of yacc.c  */
     8805#line 2699 "parser.yy"
    85608806    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    85618807    break;
    85628808
    8563   case 650:
    8564 
    8565 /* Line 1806 of yacc.c  */
    8566 #line 2536 "parser.yy"
    8567     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8568     break;
    8569 
    8570   case 651:
    8571 
    8572 /* Line 1806 of yacc.c  */
    8573 #line 2538 "parser.yy"
    8574     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8575     break;
    8576 
    8577   case 652:
    8578 
    8579 /* Line 1806 of yacc.c  */
    8580 #line 2543 "parser.yy"
    8581     { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    8582     break;
    8583 
    8584   case 653:
    8585 
    8586 /* Line 1806 of yacc.c  */
    8587 #line 2545 "parser.yy"
    8588     { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    8589     break;
    8590 
    8591   case 654:
    8592 
    8593 /* Line 1806 of yacc.c  */
    8594 #line 2547 "parser.yy"
    8595     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    8596     break;
    8597 
    8598   case 655:
    8599 
    8600 /* Line 1806 of yacc.c  */
    8601 #line 2549 "parser.yy"
    8602     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8603     break;
    8604 
    8605   case 656:
    8606 
    8607 /* Line 1806 of yacc.c  */
    8608 #line 2551 "parser.yy"
     8809  case 706:
     8810
     8811/* Line 1806 of yacc.c  */
     8812#line 2701 "parser.yy"
    86098813    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    86108814    break;
    86118815
    8612   case 658:
    8613 
    8614 /* Line 1806 of yacc.c  */
    8615 #line 2557 "parser.yy"
    8616     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8617     break;
    8618 
    8619   case 659:
    8620 
    8621 /* Line 1806 of yacc.c  */
    8622 #line 2559 "parser.yy"
    8623     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8624     break;
    8625 
    8626   case 660:
    8627 
    8628 /* Line 1806 of yacc.c  */
    8629 #line 2561 "parser.yy"
    8630     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8631     break;
    8632 
    8633   case 661:
    8634 
    8635 /* Line 1806 of yacc.c  */
    8636 #line 2566 "parser.yy"
    8637     { (yyval.decl) = DeclarationNode::newFunction( nullptr, nullptr, (yyvsp[(3) - (5)].decl), nullptr ); }
    8638     break;
    8639 
    8640   case 662:
    8641 
    8642 /* Line 1806 of yacc.c  */
    8643 #line 2568 "parser.yy"
    8644     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    8645     break;
    8646 
    8647   case 663:
    8648 
    8649 /* Line 1806 of yacc.c  */
    8650 #line 2570 "parser.yy"
    8651     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8652     break;
    8653 
    8654   case 664:
    8655 
    8656 /* Line 1806 of yacc.c  */
    8657 #line 2576 "parser.yy"
    8658     { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
    8659     break;
    8660 
    8661   case 665:
    8662 
    8663 /* Line 1806 of yacc.c  */
    8664 #line 2578 "parser.yy"
    8665     { (yyval.decl) = DeclarationNode::newArray( 0, 0, false )->addArray( (yyvsp[(3) - (3)].decl) ); }
    8666     break;
    8667 
    8668   case 667:
    8669 
    8670 /* Line 1806 of yacc.c  */
    8671 #line 2584 "parser.yy"
    8672     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(3) - (5)].en), 0, false ); }
    8673     break;
    8674 
    8675   case 668:
    8676 
    8677 /* Line 1806 of yacc.c  */
    8678 #line 2586 "parser.yy"
    8679     { (yyval.decl) = DeclarationNode::newVarArray( 0 ); }
    8680     break;
    8681 
    8682   case 669:
    8683 
    8684 /* Line 1806 of yacc.c  */
    8685 #line 2588 "parser.yy"
    8686     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newArray( (yyvsp[(4) - (6)].en), 0, false ) ); }
    8687     break;
    8688 
    8689   case 670:
    8690 
    8691 /* Line 1806 of yacc.c  */
    8692 #line 2590 "parser.yy"
    8693     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newVarArray( 0 ) ); }
    8694     break;
    8695 
    8696   case 672:
    8697 
    8698 /* Line 1806 of yacc.c  */
    8699 #line 2605 "parser.yy"
    8700     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8701     break;
    8702 
    8703   case 673:
    8704 
    8705 /* Line 1806 of yacc.c  */
    8706 #line 2607 "parser.yy"
    8707     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8708     break;
    8709 
    8710   case 674:
    8711 
    8712 /* Line 1806 of yacc.c  */
    8713 #line 2612 "parser.yy"
    8714     { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    8715     break;
    8716 
    8717   case 675:
    8718 
    8719 /* Line 1806 of yacc.c  */
    8720 #line 2614 "parser.yy"
    8721     { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    8722     break;
    8723 
    8724   case 676:
    8725 
    8726 /* Line 1806 of yacc.c  */
    8727 #line 2616 "parser.yy"
    8728     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    8729     break;
    8730 
    8731   case 677:
    8732 
    8733 /* Line 1806 of yacc.c  */
    8734 #line 2618 "parser.yy"
    8735     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8736     break;
    8737 
    8738   case 678:
    8739 
    8740 /* Line 1806 of yacc.c  */
    8741 #line 2620 "parser.yy"
    8742     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8743     break;
    8744 
    8745   case 680:
    8746 
    8747 /* Line 1806 of yacc.c  */
    8748 #line 2626 "parser.yy"
    8749     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8750     break;
    8751 
    8752   case 681:
    8753 
    8754 /* Line 1806 of yacc.c  */
    8755 #line 2628 "parser.yy"
    8756     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8757     break;
    8758 
    8759   case 682:
    8760 
    8761 /* Line 1806 of yacc.c  */
    8762 #line 2630 "parser.yy"
    8763     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8764     break;
    8765 
    8766   case 683:
    8767 
    8768 /* Line 1806 of yacc.c  */
    8769 #line 2635 "parser.yy"
    8770     { (yyval.decl) = DeclarationNode::newFunction( nullptr, nullptr, (yyvsp[(3) - (5)].decl), nullptr ); }
    8771     break;
    8772 
    8773   case 684:
    8774 
    8775 /* Line 1806 of yacc.c  */
    8776 #line 2637 "parser.yy"
    8777     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    8778     break;
    8779 
    8780   case 685:
    8781 
    8782 /* Line 1806 of yacc.c  */
    8783 #line 2639 "parser.yy"
    8784     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8785     break;
    8786 
    8787   case 687:
    8788 
    8789 /* Line 1806 of yacc.c  */
    8790 #line 2646 "parser.yy"
    8791     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    8792     break;
    8793 
    8794   case 689:
    8795 
    8796 /* Line 1806 of yacc.c  */
    8797 #line 2657 "parser.yy"
    8798     { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
    8799     break;
    8800 
    8801   case 690:
    8802 
    8803 /* Line 1806 of yacc.c  */
    8804 #line 2660 "parser.yy"
     8816  case 709:
     8817
     8818/* Line 1806 of yacc.c  */
     8819#line 2711 "parser.yy"
     8820    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     8821    break;
     8822
     8823  case 712:
     8824
     8825/* Line 1806 of yacc.c  */
     8826#line 2721 "parser.yy"
     8827    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     8828    break;
     8829
     8830  case 713:
     8831
     8832/* Line 1806 of yacc.c  */
     8833#line 2723 "parser.yy"
     8834    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     8835    break;
     8836
     8837  case 714:
     8838
     8839/* Line 1806 of yacc.c  */
     8840#line 2725 "parser.yy"
     8841    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     8842    break;
     8843
     8844  case 715:
     8845
     8846/* Line 1806 of yacc.c  */
     8847#line 2727 "parser.yy"
     8848    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     8849    break;
     8850
     8851  case 716:
     8852
     8853/* Line 1806 of yacc.c  */
     8854#line 2729 "parser.yy"
     8855    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     8856    break;
     8857
     8858  case 717:
     8859
     8860/* Line 1806 of yacc.c  */
     8861#line 2731 "parser.yy"
     8862    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     8863    break;
     8864
     8865  case 718:
     8866
     8867/* Line 1806 of yacc.c  */
     8868#line 2738 "parser.yy"
     8869    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     8870    break;
     8871
     8872  case 719:
     8873
     8874/* Line 1806 of yacc.c  */
     8875#line 2740 "parser.yy"
     8876    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     8877    break;
     8878
     8879  case 720:
     8880
     8881/* Line 1806 of yacc.c  */
     8882#line 2742 "parser.yy"
     8883    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     8884    break;
     8885
     8886  case 721:
     8887
     8888/* Line 1806 of yacc.c  */
     8889#line 2744 "parser.yy"
     8890    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
     8891    break;
     8892
     8893  case 722:
     8894
     8895/* Line 1806 of yacc.c  */
     8896#line 2746 "parser.yy"
     8897    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     8898    break;
     8899
     8900  case 723:
     8901
     8902/* Line 1806 of yacc.c  */
     8903#line 2749 "parser.yy"
     8904    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     8905    break;
     8906
     8907  case 724:
     8908
     8909/* Line 1806 of yacc.c  */
     8910#line 2751 "parser.yy"
     8911    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     8912    break;
     8913
     8914  case 725:
     8915
     8916/* Line 1806 of yacc.c  */
     8917#line 2753 "parser.yy"
     8918    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     8919    break;
     8920
     8921  case 726:
     8922
     8923/* Line 1806 of yacc.c  */
     8924#line 2755 "parser.yy"
     8925    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
     8926    break;
     8927
     8928  case 727:
     8929
     8930/* Line 1806 of yacc.c  */
     8931#line 2757 "parser.yy"
     8932    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     8933    break;
     8934
     8935  case 728:
     8936
     8937/* Line 1806 of yacc.c  */
     8938#line 2762 "parser.yy"
    88058939    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
    88068940    break;
    88078941
    8808   case 691:
    8809 
    8810 /* Line 1806 of yacc.c  */
    8811 #line 2662 "parser.yy"
    8812     { (yyval.decl) = DeclarationNode::newArray( 0, (yyvsp[(3) - (5)].decl), false ); }
    8813     break;
    8814 
    8815   case 692:
    8816 
    8817 /* Line 1806 of yacc.c  */
    8818 #line 2665 "parser.yy"
     8942  case 729:
     8943
     8944/* Line 1806 of yacc.c  */
     8945#line 2764 "parser.yy"
    88198946    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
    88208947    break;
    88218948
    8822   case 693:
    8823 
    8824 /* Line 1806 of yacc.c  */
    8825 #line 2667 "parser.yy"
    8826     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl), true ); }
    8827     break;
    8828 
    8829   case 694:
    8830 
    8831 /* Line 1806 of yacc.c  */
    8832 #line 2669 "parser.yy"
    8833     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(3) - (7)].decl), true ); }
    8834     break;
    8835 
    8836   case 696:
    8837 
    8838 /* Line 1806 of yacc.c  */
    8839 #line 2683 "parser.yy"
    8840     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8841     break;
    8842 
    8843   case 697:
    8844 
    8845 /* Line 1806 of yacc.c  */
    8846 #line 2685 "parser.yy"
    8847     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8848     break;
    8849 
    8850   case 698:
    8851 
    8852 /* Line 1806 of yacc.c  */
    8853 #line 2690 "parser.yy"
    8854     { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    8855     break;
    8856 
    8857   case 699:
    8858 
    8859 /* Line 1806 of yacc.c  */
    8860 #line 2692 "parser.yy"
    8861     { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    8862     break;
    8863 
    8864   case 700:
    8865 
    8866 /* Line 1806 of yacc.c  */
    8867 #line 2694 "parser.yy"
    8868     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    8869     break;
    8870 
    8871   case 701:
    8872 
    8873 /* Line 1806 of yacc.c  */
    8874 #line 2696 "parser.yy"
    8875     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8876     break;
    8877 
    8878   case 702:
    8879 
    8880 /* Line 1806 of yacc.c  */
    8881 #line 2698 "parser.yy"
    8882     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8883     break;
    8884 
    8885   case 704:
    8886 
    8887 /* Line 1806 of yacc.c  */
    8888 #line 2704 "parser.yy"
    8889     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8890     break;
    8891 
    8892   case 705:
    8893 
    8894 /* Line 1806 of yacc.c  */
    8895 #line 2706 "parser.yy"
    8896     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8897     break;
    8898 
    8899   case 706:
    8900 
    8901 /* Line 1806 of yacc.c  */
    8902 #line 2708 "parser.yy"
    8903     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8904     break;
    8905 
    8906   case 707:
    8907 
    8908 /* Line 1806 of yacc.c  */
    8909 #line 2713 "parser.yy"
    8910     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    8911     break;
    8912 
    8913   case 708:
    8914 
    8915 /* Line 1806 of yacc.c  */
    8916 #line 2715 "parser.yy"
    8917     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8918     break;
    8919 
    8920   case 711:
    8921 
    8922 /* Line 1806 of yacc.c  */
    8923 #line 2725 "parser.yy"
     8949  case 730:
     8950
     8951/* Line 1806 of yacc.c  */
     8952#line 2769 "parser.yy"
     8953    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), true ); }
     8954    break;
     8955
     8956  case 731:
     8957
     8958/* Line 1806 of yacc.c  */
     8959#line 2771 "parser.yy"
     8960    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl)->addQualifiers( (yyvsp[(3) - (7)].decl) ), true ); }
     8961    break;
     8962
     8963  case 733:
     8964
     8965/* Line 1806 of yacc.c  */
     8966#line 2798 "parser.yy"
    89248967    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    89258968    break;
    89268969
    8927   case 714:
    8928 
    8929 /* Line 1806 of yacc.c  */
    8930 #line 2735 "parser.yy"
     8970  case 737:
     8971
     8972/* Line 1806 of yacc.c  */
     8973#line 2809 "parser.yy"
    89318974    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    89328975    break;
    89338976
    8934   case 715:
    8935 
    8936 /* Line 1806 of yacc.c  */
    8937 #line 2737 "parser.yy"
     8977  case 738:
     8978
     8979/* Line 1806 of yacc.c  */
     8980#line 2811 "parser.yy"
    89388981    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    89398982    break;
    89408983
    8941   case 716:
    8942 
    8943 /* Line 1806 of yacc.c  */
    8944 #line 2739 "parser.yy"
     8984  case 739:
     8985
     8986/* Line 1806 of yacc.c  */
     8987#line 2813 "parser.yy"
    89458988    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    89468989    break;
    89478990
    8948   case 717:
    8949 
    8950 /* Line 1806 of yacc.c  */
    8951 #line 2741 "parser.yy"
     8991  case 740:
     8992
     8993/* Line 1806 of yacc.c  */
     8994#line 2815 "parser.yy"
    89528995    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    89538996    break;
    89548997
    8955   case 718:
    8956 
    8957 /* Line 1806 of yacc.c  */
    8958 #line 2743 "parser.yy"
     8998  case 741:
     8999
     9000/* Line 1806 of yacc.c  */
     9001#line 2817 "parser.yy"
    89599002    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    89609003    break;
    89619004
    8962   case 719:
    8963 
    8964 /* Line 1806 of yacc.c  */
    8965 #line 2745 "parser.yy"
     9005  case 742:
     9006
     9007/* Line 1806 of yacc.c  */
     9008#line 2819 "parser.yy"
    89669009    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    89679010    break;
    89689011
    8969   case 720:
    8970 
    8971 /* Line 1806 of yacc.c  */
    8972 #line 2752 "parser.yy"
    8973     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    8974     break;
    8975 
    8976   case 721:
    8977 
    8978 /* Line 1806 of yacc.c  */
    8979 #line 2754 "parser.yy"
     9012  case 743:
     9013
     9014/* Line 1806 of yacc.c  */
     9015#line 2826 "parser.yy"
     9016    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
     9017    break;
     9018
     9019  case 744:
     9020
     9021/* Line 1806 of yacc.c  */
     9022#line 2828 "parser.yy"
     9023    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
     9024    break;
     9025
     9026  case 745:
     9027
     9028/* Line 1806 of yacc.c  */
     9029#line 2830 "parser.yy"
    89809030    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    89819031    break;
    89829032
    8983   case 722:
    8984 
    8985 /* Line 1806 of yacc.c  */
    8986 #line 2756 "parser.yy"
    8987     { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    8988     break;
    8989 
    8990   case 723:
    8991 
    8992 /* Line 1806 of yacc.c  */
    8993 #line 2758 "parser.yy"
    8994     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
    8995     break;
    8996 
    8997   case 724:
    8998 
    8999 /* Line 1806 of yacc.c  */
    9000 #line 2760 "parser.yy"
     9033  case 746:
     9034
     9035/* Line 1806 of yacc.c  */
     9036#line 2832 "parser.yy"
     9037    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
     9038    break;
     9039
     9040  case 747:
     9041
     9042/* Line 1806 of yacc.c  */
     9043#line 2834 "parser.yy"
     9044    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
     9045    break;
     9046
     9047  case 748:
     9048
     9049/* Line 1806 of yacc.c  */
     9050#line 2836 "parser.yy"
    90019051    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    90029052    break;
    90039053
    9004   case 725:
    9005 
    9006 /* Line 1806 of yacc.c  */
    9007 #line 2763 "parser.yy"
    9008     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    9009     break;
    9010 
    9011   case 726:
    9012 
    9013 /* Line 1806 of yacc.c  */
    9014 #line 2765 "parser.yy"
    9015     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    9016     break;
    9017 
    9018   case 727:
    9019 
    9020 /* Line 1806 of yacc.c  */
    9021 #line 2767 "parser.yy"
    9022     { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    9023     break;
    9024 
    9025   case 728:
    9026 
    9027 /* Line 1806 of yacc.c  */
    9028 #line 2769 "parser.yy"
    9029     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
    9030     break;
    9031 
    9032   case 729:
    9033 
    9034 /* Line 1806 of yacc.c  */
    9035 #line 2771 "parser.yy"
    9036     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    9037     break;
    9038 
    9039   case 730:
    9040 
    9041 /* Line 1806 of yacc.c  */
    9042 #line 2776 "parser.yy"
    9043     { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
    9044     break;
    9045 
    9046   case 731:
    9047 
    9048 /* Line 1806 of yacc.c  */
    9049 #line 2778 "parser.yy"
    9050     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
    9051     break;
    9052 
    9053   case 732:
    9054 
    9055 /* Line 1806 of yacc.c  */
    9056 #line 2783 "parser.yy"
    9057     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), true ); }
    9058     break;
    9059 
    9060   case 733:
    9061 
    9062 /* Line 1806 of yacc.c  */
    9063 #line 2785 "parser.yy"
    9064     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl)->addQualifiers( (yyvsp[(3) - (7)].decl) ), true ); }
    9065     break;
    9066 
    9067   case 735:
    9068 
    9069 /* Line 1806 of yacc.c  */
    9070 #line 2812 "parser.yy"
    9071     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    9072     break;
    9073 
    9074   case 739:
    9075 
    9076 /* Line 1806 of yacc.c  */
    9077 #line 2823 "parser.yy"
    9078     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    9079     break;
    9080 
    9081   case 740:
    9082 
    9083 /* Line 1806 of yacc.c  */
    9084 #line 2825 "parser.yy"
    9085     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    9086     break;
    9087 
    9088   case 741:
    9089 
    9090 /* Line 1806 of yacc.c  */
    9091 #line 2827 "parser.yy"
    9092     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    9093     break;
    9094 
    9095   case 742:
    9096 
    9097 /* Line 1806 of yacc.c  */
    9098 #line 2829 "parser.yy"
    9099     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    9100     break;
    9101 
    9102   case 743:
    9103 
    9104 /* Line 1806 of yacc.c  */
    9105 #line 2831 "parser.yy"
    9106     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    9107     break;
    9108 
    9109   case 744:
    9110 
    9111 /* Line 1806 of yacc.c  */
    9112 #line 2833 "parser.yy"
    9113     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    9114     break;
    9115 
    9116   case 745:
    9117 
    9118 /* Line 1806 of yacc.c  */
    9119 #line 2840 "parser.yy"
    9120     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
    9121     break;
    9122 
    9123   case 746:
    9124 
    9125 /* Line 1806 of yacc.c  */
    9126 #line 2842 "parser.yy"
    9127     { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
    9128     break;
    9129 
    9130   case 747:
    9131 
    9132 /* Line 1806 of yacc.c  */
    9133 #line 2844 "parser.yy"
    9134     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    9135     break;
    9136 
    9137   case 748:
    9138 
    9139 /* Line 1806 of yacc.c  */
    9140 #line 2846 "parser.yy"
    9141     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
    9142     break;
    9143 
    91449054  case 749:
    91459055
    91469056/* Line 1806 of yacc.c  */
     9057#line 2841 "parser.yy"
     9058    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
     9059    break;
     9060
     9061  case 750:
     9062
     9063/* Line 1806 of yacc.c  */
    91479064#line 2848 "parser.yy"
    9148     { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
    9149     break;
    9150 
    9151   case 750:
     9065    { (yyval.decl) = DeclarationNode::newFunction( nullptr, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), nullptr ); }
     9066    break;
     9067
     9068  case 751:
    91529069
    91539070/* Line 1806 of yacc.c  */
    91549071#line 2850 "parser.yy"
    9155     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    9156     break;
    9157 
    9158   case 751:
    9159 
    9160 /* Line 1806 of yacc.c  */
    9161 #line 2855 "parser.yy"
    9162     { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
    9163     break;
    9164 
    9165   case 752:
    9166 
    9167 /* Line 1806 of yacc.c  */
    9168 #line 2862 "parser.yy"
    91699072    { (yyval.decl) = DeclarationNode::newFunction( nullptr, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), nullptr ); }
    91709073    break;
    91719074
    9172   case 753:
    9173 
    9174 /* Line 1806 of yacc.c  */
    9175 #line 2864 "parser.yy"
    9176     { (yyval.decl) = DeclarationNode::newFunction( nullptr, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), nullptr ); }
    9177     break;
    9178 
    9179   case 756:
    9180 
    9181 /* Line 1806 of yacc.c  */
    9182 #line 2888 "parser.yy"
    9183     { (yyval.en) = nullptr; }
    9184     break;
    9185 
    9186   case 757:
    9187 
    9188 /* Line 1806 of yacc.c  */
    9189 #line 2890 "parser.yy"
     9075  case 754:
     9076
     9077/* Line 1806 of yacc.c  */
     9078#line 2874 "parser.yy"
     9079    { (yyval.en) = 0; }
     9080    break;
     9081
     9082  case 755:
     9083
     9084/* Line 1806 of yacc.c  */
     9085#line 2876 "parser.yy"
    91909086    { (yyval.en) = (yyvsp[(2) - (2)].en); }
    91919087    break;
     
    91949090
    91959091/* Line 1806 of yacc.c  */
    9196 #line 9197 "Parser/parser.cc"
     9092#line 9093 "Parser/parser.cc"
    91979093      default: break;
    91989094    }
     
    94259321
    94269322/* Line 2067 of yacc.c  */
    9427 #line 2893 "parser.yy"
     9323#line 2879 "parser.yy"
    94289324
    94299325// ----end of grammar----
  • src/Parser/parser.h

    r66f8528 r5802a4f  
    5959     SIGNED = 277,
    6060     UNSIGNED = 278,
    61      ZERO_T = 279,
    62      ONE_T = 280,
    63      VALIST = 281,
    64      BOOL = 282,
    65      COMPLEX = 283,
    66      IMAGINARY = 284,
    67      TYPEOF = 285,
    68      LABEL = 286,
    69      ENUM = 287,
    70      STRUCT = 288,
    71      UNION = 289,
    72      OTYPE = 290,
    73      FTYPE = 291,
    74      DTYPE = 292,
    75      TRAIT = 293,
    76      SIZEOF = 294,
    77      OFFSETOF = 295,
    78      ATTRIBUTE = 296,
    79      EXTENSION = 297,
    80      IF = 298,
    81      ELSE = 299,
    82      SWITCH = 300,
    83      CASE = 301,
    84      DEFAULT = 302,
    85      DO = 303,
    86      WHILE = 304,
    87      FOR = 305,
    88      BREAK = 306,
    89      CONTINUE = 307,
    90      GOTO = 308,
    91      RETURN = 309,
    92      CHOOSE = 310,
    93      DISABLE = 311,
    94      ENABLE = 312,
    95      FALLTHRU = 313,
    96      TRY = 314,
    97      CATCH = 315,
    98      CATCHRESUME = 316,
    99      FINALLY = 317,
    100      THROW = 318,
    101      THROWRESUME = 319,
    102      AT = 320,
    103      ASM = 321,
    104      ALIGNAS = 322,
    105      ALIGNOF = 323,
    106      ATOMIC = 324,
    107      GENERIC = 325,
    108      NORETURN = 326,
    109      STATICASSERT = 327,
    110      THREADLOCAL = 328,
    111      IDENTIFIER = 329,
    112      QUOTED_IDENTIFIER = 330,
    113      TYPEDEFname = 331,
    114      TYPEGENname = 332,
    115      ATTR_IDENTIFIER = 333,
    116      ATTR_TYPEDEFname = 334,
    117      ATTR_TYPEGENname = 335,
    118      INTEGERconstant = 336,
    119      CHARACTERconstant = 337,
    120      STRINGliteral = 338,
    121      REALDECIMALconstant = 339,
    122      REALFRACTIONconstant = 340,
    123      FLOATINGconstant = 341,
    124      ZERO = 342,
    125      ONE = 343,
    126      ARROW = 344,
    127      ICR = 345,
    128      DECR = 346,
    129      LS = 347,
    130      RS = 348,
    131      LE = 349,
    132      GE = 350,
    133      EQ = 351,
    134      NE = 352,
    135      ANDAND = 353,
    136      OROR = 354,
    137      ELLIPSIS = 355,
    138      MULTassign = 356,
    139      DIVassign = 357,
    140      MODassign = 358,
    141      PLUSassign = 359,
    142      MINUSassign = 360,
    143      LSassign = 361,
    144      RSassign = 362,
    145      ANDassign = 363,
    146      ERassign = 364,
    147      ORassign = 365,
    148      ATassign = 366,
    149      THEN = 367
     61     VALIST = 279,
     62     BOOL = 280,
     63     COMPLEX = 281,
     64     IMAGINARY = 282,
     65     TYPEOF = 283,
     66     LABEL = 284,
     67     ENUM = 285,
     68     STRUCT = 286,
     69     UNION = 287,
     70     OTYPE = 288,
     71     FTYPE = 289,
     72     DTYPE = 290,
     73     TRAIT = 291,
     74     SIZEOF = 292,
     75     OFFSETOF = 293,
     76     ATTRIBUTE = 294,
     77     EXTENSION = 295,
     78     IF = 296,
     79     ELSE = 297,
     80     SWITCH = 298,
     81     CASE = 299,
     82     DEFAULT = 300,
     83     DO = 301,
     84     WHILE = 302,
     85     FOR = 303,
     86     BREAK = 304,
     87     CONTINUE = 305,
     88     GOTO = 306,
     89     RETURN = 307,
     90     CHOOSE = 308,
     91     DISABLE = 309,
     92     ENABLE = 310,
     93     FALLTHRU = 311,
     94     TRY = 312,
     95     CATCH = 313,
     96     CATCHRESUME = 314,
     97     FINALLY = 315,
     98     THROW = 316,
     99     THROWRESUME = 317,
     100     AT = 318,
     101     ASM = 319,
     102     ALIGNAS = 320,
     103     ALIGNOF = 321,
     104     ATOMIC = 322,
     105     GENERIC = 323,
     106     NORETURN = 324,
     107     STATICASSERT = 325,
     108     THREADLOCAL = 326,
     109     IDENTIFIER = 327,
     110     QUOTED_IDENTIFIER = 328,
     111     TYPEDEFname = 329,
     112     TYPEGENname = 330,
     113     ATTR_IDENTIFIER = 331,
     114     ATTR_TYPEDEFname = 332,
     115     ATTR_TYPEGENname = 333,
     116     INTEGERconstant = 334,
     117     CHARACTERconstant = 335,
     118     STRINGliteral = 336,
     119     REALDECIMALconstant = 337,
     120     REALFRACTIONconstant = 338,
     121     FLOATINGconstant = 339,
     122     ZERO = 340,
     123     ONE = 341,
     124     ARROW = 342,
     125     ICR = 343,
     126     DECR = 344,
     127     LS = 345,
     128     RS = 346,
     129     LE = 347,
     130     GE = 348,
     131     EQ = 349,
     132     NE = 350,
     133     ANDAND = 351,
     134     OROR = 352,
     135     ELLIPSIS = 353,
     136     MULTassign = 354,
     137     DIVassign = 355,
     138     MODassign = 356,
     139     PLUSassign = 357,
     140     MINUSassign = 358,
     141     LSassign = 359,
     142     RSassign = 360,
     143     ANDassign = 361,
     144     ERassign = 362,
     145     ORassign = 363,
     146     ATassign = 364,
     147     THEN = 365
    150148   };
    151149#endif
     
    172170#define SIGNED 277
    173171#define UNSIGNED 278
    174 #define ZERO_T 279
    175 #define ONE_T 280
    176 #define VALIST 281
    177 #define BOOL 282
    178 #define COMPLEX 283
    179 #define IMAGINARY 284
    180 #define TYPEOF 285
    181 #define LABEL 286
    182 #define ENUM 287
    183 #define STRUCT 288
    184 #define UNION 289
    185 #define OTYPE 290
    186 #define FTYPE 291
    187 #define DTYPE 292
    188 #define TRAIT 293
    189 #define SIZEOF 294
    190 #define OFFSETOF 295
    191 #define ATTRIBUTE 296
    192 #define EXTENSION 297
    193 #define IF 298
    194 #define ELSE 299
    195 #define SWITCH 300
    196 #define CASE 301
    197 #define DEFAULT 302
    198 #define DO 303
    199 #define WHILE 304
    200 #define FOR 305
    201 #define BREAK 306
    202 #define CONTINUE 307
    203 #define GOTO 308
    204 #define RETURN 309
    205 #define CHOOSE 310
    206 #define DISABLE 311
    207 #define ENABLE 312
    208 #define FALLTHRU 313
    209 #define TRY 314
    210 #define CATCH 315
    211 #define CATCHRESUME 316
    212 #define FINALLY 317
    213 #define THROW 318
    214 #define THROWRESUME 319
    215 #define AT 320
    216 #define ASM 321
    217 #define ALIGNAS 322
    218 #define ALIGNOF 323
    219 #define ATOMIC 324
    220 #define GENERIC 325
    221 #define NORETURN 326
    222 #define STATICASSERT 327
    223 #define THREADLOCAL 328
    224 #define IDENTIFIER 329
    225 #define QUOTED_IDENTIFIER 330
    226 #define TYPEDEFname 331
    227 #define TYPEGENname 332
    228 #define ATTR_IDENTIFIER 333
    229 #define ATTR_TYPEDEFname 334
    230 #define ATTR_TYPEGENname 335
    231 #define INTEGERconstant 336
    232 #define CHARACTERconstant 337
    233 #define STRINGliteral 338
    234 #define REALDECIMALconstant 339
    235 #define REALFRACTIONconstant 340
    236 #define FLOATINGconstant 341
    237 #define ZERO 342
    238 #define ONE 343
    239 #define ARROW 344
    240 #define ICR 345
    241 #define DECR 346
    242 #define LS 347
    243 #define RS 348
    244 #define LE 349
    245 #define GE 350
    246 #define EQ 351
    247 #define NE 352
    248 #define ANDAND 353
    249 #define OROR 354
    250 #define ELLIPSIS 355
    251 #define MULTassign 356
    252 #define DIVassign 357
    253 #define MODassign 358
    254 #define PLUSassign 359
    255 #define MINUSassign 360
    256 #define LSassign 361
    257 #define RSassign 362
    258 #define ANDassign 363
    259 #define ERassign 364
    260 #define ORassign 365
    261 #define ATassign 366
    262 #define THEN 367
     172#define VALIST 279
     173#define BOOL 280
     174#define COMPLEX 281
     175#define IMAGINARY 282
     176#define TYPEOF 283
     177#define LABEL 284
     178#define ENUM 285
     179#define STRUCT 286
     180#define UNION 287
     181#define OTYPE 288
     182#define FTYPE 289
     183#define DTYPE 290
     184#define TRAIT 291
     185#define SIZEOF 292
     186#define OFFSETOF 293
     187#define ATTRIBUTE 294
     188#define EXTENSION 295
     189#define IF 296
     190#define ELSE 297
     191#define SWITCH 298
     192#define CASE 299
     193#define DEFAULT 300
     194#define DO 301
     195#define WHILE 302
     196#define FOR 303
     197#define BREAK 304
     198#define CONTINUE 305
     199#define GOTO 306
     200#define RETURN 307
     201#define CHOOSE 308
     202#define DISABLE 309
     203#define ENABLE 310
     204#define FALLTHRU 311
     205#define TRY 312
     206#define CATCH 313
     207#define CATCHRESUME 314
     208#define FINALLY 315
     209#define THROW 316
     210#define THROWRESUME 317
     211#define AT 318
     212#define ASM 319
     213#define ALIGNAS 320
     214#define ALIGNOF 321
     215#define ATOMIC 322
     216#define GENERIC 323
     217#define NORETURN 324
     218#define STATICASSERT 325
     219#define THREADLOCAL 326
     220#define IDENTIFIER 327
     221#define QUOTED_IDENTIFIER 328
     222#define TYPEDEFname 329
     223#define TYPEGENname 330
     224#define ATTR_IDENTIFIER 331
     225#define ATTR_TYPEDEFname 332
     226#define ATTR_TYPEGENname 333
     227#define INTEGERconstant 334
     228#define CHARACTERconstant 335
     229#define STRINGliteral 336
     230#define REALDECIMALconstant 337
     231#define REALFRACTIONconstant 338
     232#define FLOATINGconstant 339
     233#define ZERO 340
     234#define ONE 341
     235#define ARROW 342
     236#define ICR 343
     237#define DECR 344
     238#define LS 345
     239#define RS 346
     240#define LE 347
     241#define GE 348
     242#define EQ 349
     243#define NE 350
     244#define ANDAND 351
     245#define OROR 352
     246#define ELLIPSIS 353
     247#define MULTassign 354
     248#define DIVassign 355
     249#define MODassign 356
     250#define PLUSassign 357
     251#define MINUSassign 358
     252#define LSassign 359
     253#define RSassign 360
     254#define ANDassign 361
     255#define ERassign 362
     256#define ORassign 363
     257#define ATassign 364
     258#define THEN 365
    263259
    264260
     
    290286
    291287/* Line 2068 of yacc.c  */
    292 #line 293 "Parser/parser.h"
     288#line 289 "Parser/parser.h"
    293289} YYSTYPE;
    294290# define YYSTYPE_IS_TRIVIAL 1
  • src/Parser/parser.yy

    r66f8528 r5802a4f  
    1010// Created On       : Sat Sep  1 20:22:55 2001
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Dec 14 21:28:22 2016
    13 // Update Count     : 2090
     12// Last Modified On : Wed Oct 26 17:35:53 2016
     13// Update Count     : 2066
    1414//
    1515
     
    7878%token RESTRICT                                                                                 // C99
    7979%token FORALL LVALUE                                                                    // CFA
    80 %token VOID CHAR SHORT INT LONG FLOAT DOUBLE SIGNED UNSIGNED ZERO_T ONE_T
     80%token VOID CHAR SHORT INT LONG FLOAT DOUBLE SIGNED UNSIGNED
    8181%token VALIST                                                                                   // GCC
    8282%token BOOL COMPLEX IMAGINARY                                                   // C99
     
    153153%type<fctl> for_control_expression
    154154%type<en> subrange
    155 %type<constant> asm_name_opt
    156155%type<en> asm_operands_opt asm_operands_list asm_operand
    157156%type<label> label_list
     
    363362                { $$ = new ExpressionNode( build_varref( $1 ) ); }
    364363        | zero_one
    365                 { $$ = new ExpressionNode( build_constantZeroOne( *$1 ) ); }
     364                { $$ = new ExpressionNode( build_varref( $1 ) ); }
    366365        | tuple
    367366        | '(' comma_expression ')'
     
    413412argument_expression:
    414413        // empty
    415                 { $$ = nullptr; }                                                               // use default argument
     414                { $$ = 0; }                                                                             // use default argument
    416415        | assignment_expression
    417416        ;
     
    444443                { $$ = new ExpressionNode( build_field_name_fraction_constants( build_field_name_FLOATINGconstant( *$1 ), $2 ) ); }
    445444        | no_attr_identifier fraction_constants
    446                 {
    447                         if( (*$1) == "0" || (*$1) == "1" ) {
    448                                 $$ = new ExpressionNode( build_field_name_fraction_constants( build_constantZeroOne( *$1 ), $2 ) );
    449                         } else {
    450                                 $$ = new ExpressionNode( build_field_name_fraction_constants( build_varref( $1 ), $2 ) );
    451                         }
    452                 }
     445                { $$ = new ExpressionNode( build_field_name_fraction_constants( build_varref( $1 ), $2 ) ); }
    453446        ;
    454447
     
    685678comma_expression_opt:
    686679        // empty
    687                 { $$ = nullptr; }
     680                { $$ = 0; }
    688681        | comma_expression
    689682        ;
     
    721714        | '{'
    722715                // Two scopes are necessary because the block itself has a scope, but every declaration within the block also
    723                 // requires its own scope.
     716                // requires its own scope
    724717          push push
    725718          local_label_declaration_opt                                           // GCC, local labels
     
    775768                        // therefore, are removed from the grammar even though C allows it. The change also applies to choose
    776769                        // statement.
    777                         $$ = $7 ? new StatementNode( build_compound( (StatementNode *)((new StatementNode( $7 ))->set_last( sw )) ) ) : sw;
     770                        $$ = $7 != 0 ? new StatementNode( build_compound( (StatementNode *)((new StatementNode( $7 ))->set_last( sw )) ) ) : sw;
    778771                }
    779772        | CHOOSE '(' comma_expression ')' case_clause           // CFA
     
    782775                {
    783776                        StatementNode *sw = new StatementNode( build_switch( $3, $8 ) );
    784                         $$ = $7 ? new StatementNode( build_compound( (StatementNode *)((new StatementNode( $7 ))->set_last( sw )) ) ) : sw;
     777                        $$ = $7 != 0 ? new StatementNode( build_compound( (StatementNode *)((new StatementNode( $7 ))->set_last( sw )) ) ) : sw;
    785778                }
    786779        ;
     
    819812switch_clause_list_opt:                                                                 // CFA
    820813        // empty
    821                 { $$ = nullptr; }
     814                { $$ = 0; }
    822815        | switch_clause_list
    823816        ;
     
    832825choose_clause_list_opt:                                                                 // CFA
    833826        // empty
    834                 { $$ = nullptr; }
     827                { $$ = 0; }
    835828        | choose_clause_list
    836829        ;
     
    855848fall_through:                                                                                   // CFA
    856849        FALLTHRU
    857                 { $$ = nullptr; }
     850                { $$ = 0; }
    858851        | FALLTHRU ';'
    859                 { $$ = nullptr; }
     852                { $$ = 0; }
    860853        ;
    861854
     
    991984asm_operands_opt:                                                                               // GCC
    992985        // empty
    993                 { $$ = nullptr; }                                                               // use default argument
     986                { $$ = 0; }                                                                             // use default argument
    994987        | asm_operands_list
    995988        ;
     
    10101003asm_clobbers_list_opt:                                                                  // GCC
    10111004        // empty
    1012                 { $$ = nullptr; }                                                               // use default argument
     1005                { $$ = 0; }                                                                             // use default argument
    10131006        | string_literal
    10141007                { $$ = new ExpressionNode( $1 ); }
    10151008        | asm_clobbers_list_opt ',' string_literal
    1016                 // set_last return ParseNode *
    10171009                { $$ = (ExpressionNode *)$1->set_last( new ExpressionNode( $3 ) ); }
    10181010        ;
     
    10351027declaration_list_opt:                                                                   // used at beginning of switch statement
    10361028        pop
    1037                 { $$ = nullptr; }
     1029                { $$ = 0; }
    10381030        | declaration_list
    10391031        ;
     
    10471039old_declaration_list_opt:                                                               // used to declare parameter types in K&R style functions
    10481040        pop
    1049                 { $$ = nullptr; }
     1041                { $$ = 0; }
    10501042        | old_declaration_list
    10511043        ;
     
    11221114                {
    11231115                        typedefTable.setNextIdentifier( *$2 );
    1124                         $$ = $1->addName( $2 )->addAsmName( $3 );
     1116                        $$ = $1->addName( $2 );
    11251117                }
    11261118        | new_abstract_tuple identifier_or_type_name asm_name_opt
    11271119                {
    11281120                        typedefTable.setNextIdentifier( *$2 );
    1129                         $$ = $1->addName( $2 )->addAsmName( $3 );
     1121                        $$ = $1->addName( $2 );
    11301122                }
    11311123        | type_qualifier_list new_abstract_tuple identifier_or_type_name asm_name_opt
    11321124                {
    11331125                        typedefTable.setNextIdentifier( *$3 );
    1134                         $$ = $2->addQualifiers( $1 )->addName( $3 )->addAsmName( $4 );
     1126                        $$ = $2->addQualifiers( $1 )->addName( $3 );
    11351127                }
    11361128        ;
     
    12831275                {
    12841276                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    1285                         $$ = ( $2->addType( $1 ))->addAsmName( $3 )->addInitializer( $4 );
     1277                        $$ = ( $2->addType( $1 ))->addInitializer( $4 );
    12861278                }
    12871279        | declaring_list ',' attribute_list_opt declarator asm_name_opt initializer_opt
    12881280                {
    12891281                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    1290                         $$ = $1->appendList( $1->cloneBaseType( $4->addAsmName( $5 )->addInitializer( $6 ) ) );
     1282                        $$ = $1->appendList( $1->cloneBaseType( $4->addInitializer( $6 ) ) );
    12911283                }
    12921284        ;
     
    13081300type_qualifier_list_opt:                                                                // GCC, used in asm_statement
    13091301        // empty
    1310                 { $$ = nullptr; }
     1302                { $$ = 0; }
    13111303        | type_qualifier_list
    13121304        ;
     
    14181410        | VALIST                                                                                        // GCC, __builtin_va_list
    14191411                { $$ = DeclarationNode::newBuiltinType( DeclarationNode::Valist ); }
    1420         | ZERO_T
    1421                 { $$ = DeclarationNode::newBuiltinType( DeclarationNode::Zero ); }
    1422         | ONE_T
    1423                 { $$ = DeclarationNode::newBuiltinType( DeclarationNode::One ); }
    14241412        ;
    14251413
     
    15341522field_declaration_list:
    15351523        // empty
    1536                 { $$ = nullptr; }
     1524                { $$ = 0; }
    15371525        | field_declaration_list field_declaration
    1538                 { $$ = $1 ? $1->appendList( $2 ) : $2; }
     1526                { $$ = $1 != 0 ? $1->appendList( $2 ) : $2; }
    15391527        ;
    15401528
     
    15851573bit_subrange_size_opt:
    15861574        // empty
    1587                 { $$ = nullptr; }
     1575                { $$ = 0; }
    15881576        | bit_subrange_size
    15891577                { $$ = $1; }
     
    16221610enumerator_value_opt:
    16231611        // empty
    1624                 { $$ = nullptr; }
     1612                { $$ = 0; }
    16251613        | '=' constant_expression
    16261614                { $$ = $2; }
     
    16311619new_parameter_type_list_opt:                                                    // CFA
    16321620        // empty
    1633                 { $$ = nullptr; }
     1621                { $$ = 0; }
    16341622        | new_parameter_type_list
    16351623        ;
     
    16661654parameter_type_list_opt:
    16671655        // empty
    1668                 { $$ = nullptr; }
     1656                { $$ = 0; }
    16691657        | parameter_type_list
    16701658        ;
     
    17141702                {
    17151703                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    1716                         $$ = $2->addType( $1 )->addInitializer( $3 ? new InitializerNode( $3 ) : nullptr );
     1704                        $$ = $2->addType( $1 )->addInitializer( new InitializerNode( $3 ) );
    17171705                }
    17181706        | declaration_specifier type_parameter_redeclarator assignment_opt
    17191707                {
    17201708                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    1721                         $$ = $2->addType( $1 )->addInitializer( $3 ? new InitializerNode( $3 ) : nullptr );
     1709                        $$ = $2->addType( $1 )->addInitializer( new InitializerNode( $3 ) );
    17221710                }
    17231711        ;
     
    17751763initializer_opt:
    17761764        // empty
    1777                 { $$ = nullptr; }
     1765                { $$ = 0; }
    17781766        | '=' initializer
    17791767                { $$ = $2; }
     
    17891777initializer_list:
    17901778        // empty
    1791                 { $$ = nullptr; }
     1779                { $$ = 0; }
    17921780        | initializer
    17931781        | designation initializer                                       { $$ = $2->set_designators( $1 ); }
     
    19001888assertion_list_opt:                                                                             // CFA
    19011889        // empty
    1902                 { $$ = nullptr; }
     1890                { $$ = 0; }
    19031891        | assertion_list_opt assertion
    1904                 { $$ = $1 ? $1->appendList( $2 ) : $2; }
     1892                { $$ = $1 != 0 ? $1->appendList( $2 ) : $2; }
    19051893        ;
    19061894
     
    19141902                { $$ = $4; }
    19151903        | '|' '(' push type_parameter_list pop ')' '{' push trait_declaration_list '}' '(' type_name_list ')'
    1916                 { $$ = nullptr; }
     1904                { $$ = 0; }
    19171905        ;
    19181906
     
    20232011                {}                                                                                              // empty input file
    20242012        | external_definition_list
    2025                 { parseTree = parseTree ? parseTree->appendList( $1 ) : $1;     }
     2013                { parseTree = parseTree != nullptr ? parseTree->appendList( $1 ) : $1;  }
    20262014        ;
    20272015
     
    20292017        external_definition
    20302018        | external_definition_list push external_definition
    2031                 { $$ = $1 ? $1->appendList( $3 ) : $3; }
     2019                { $$ = $1 != nullptr ? $1->appendList( $3 ) : $3; }
    20322020        ;
    20332021
    20342022external_definition_list_opt:
    20352023        // empty
    2036                 { $$ = nullptr; }
     2024                { $$ = 0; }
    20372025        | external_definition_list
    20382026        ;
     
    21572145asm_name_opt:                                                                                   // GCC
    21582146        // empty
    2159                 { $$ = nullptr; }
    2160         | ASM '(' string_literal ')' attribute_list_opt
    2161                 { $$ = $3; }
     2147        | ASM '(' string_literal_list ')' attribute_list_opt { delete $3; }     // FIX ME: unimplemented
    21622148        ;
    21632149
    21642150attribute_list_opt:                                                                             // GCC
    21652151        // empty
    2166                 { $$ = nullptr; }
     2152                { $$ = 0; }
    21672153        | attribute_list
    21682154        ;
     
    21772163        ATTRIBUTE '(' '(' attribute_parameter_list ')' ')'
    21782164        //              { $$ = DeclarationNode::newQualifier( DeclarationNode::Attribute ); }
    2179                 { $$ = nullptr; }
     2165                { $$ = 0; }
    21802166        ;
    21812167
     
    28862872assignment_opt:
    28872873        // empty
    2888                 { $$ = nullptr; }
     2874                { $$ = 0; }
    28892875        | '=' assignment_expression
    28902876                { $$ = $2; }
  • src/Parser/parseutility.cc

    r66f8528 r5802a4f  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // parseutility.cc --
     7// parseutility.cc -- 
    88//
    99// Author           : Rodolfo G. Esteves
     
    1212// Last Modified On : Sun Aug 14 23:45:03 2016
    1313// Update Count     : 3
    14 //
     14// 
    1515
    1616#include "parseutility.h"
     
    2626        UntypedExpr *comparison = new UntypedExpr( new NameExpr( "?!=?" ) );
    2727        comparison->get_args().push_back( orig );
    28         comparison->get_args().push_back( new ConstantExpr( Constant( new ZeroType( emptyQualifiers ), "0" ) ) );
     28        comparison->get_args().push_back( new NameExpr( "0" ) );
    2929        return new CastExpr( comparison, new BasicType( Type::Qualifiers(), BasicType::SignedInt ) );
    3030}
  • src/ResolvExpr/CommonType.cc

    r66f8528 r5802a4f  
    4242                virtual void visit( OneType *oneType );
    4343
    44                 void getCommonWithVoidPointer( PointerType* voidPointer, PointerType* otherPointer );
    4544                template< typename RefType > void handleRefType( RefType *inst, Type *other );
    4645
     
    144143        }
    145144
    146         void CommonType::getCommonWithVoidPointer( PointerType* voidPointer, PointerType* otherPointer ) {
    147                 if ( TypeInstType* var = dynamic_cast< TypeInstType* >( otherPointer->get_base() ) ) {
    148                         OpenVarSet::const_iterator entry = openVars.find( var->get_name() );
    149                         if ( entry != openVars.end() ) {
    150                                 AssertionSet need, have;
    151                                 WidenMode widen( widenFirst, widenSecond );
    152                                 if ( entry != openVars.end() && ! bindVar(var, voidPointer->get_base(), entry->second, env, need, have, openVars, widen, indexer ) ) return;
    153                         }
     145        /// true if a common type for t must be a complete type
     146        bool requiredComplete( Type * t ) {
     147                if ( TypeInstType * inst = dynamic_cast< TypeInstType * > ( t ) ) {
     148                        return inst->get_baseType()->isComplete();
    154149                }
    155                 result = voidPointer->clone();
    156                 result->get_qualifiers() += otherPointer->get_qualifiers();
     150                return false;
    157151        }
    158152
    159153        void CommonType::visit( PointerType *pointerType ) {
    160154                if ( PointerType *otherPointer = dynamic_cast< PointerType* >( type2 ) ) {
    161                         if ( widenFirst && dynamic_cast< VoidType* >( otherPointer->get_base() ) && ! isFtype(pointerType->get_base(), indexer) ) {
    162                                 getCommonWithVoidPointer( otherPointer, pointerType );
     155                        // Note: relationship between formal and actual types is antisymmetric
     156                        //   void free(void *);
     157                        //   forall(otype T) void foo(T *);
     158                        //
     159                        // should be able to pass T* to free, but should not be able to pass a void* to foo.
     160                        // because of this, the requiredComplete check occurs only on the first, since it corresponds
     161                        // to the formal parameter type (though this may be incorrect in some cases, in which case
     162                        // perhaps the widen mode needs to incorporate another bit for whether this is a formal or actual context)
     163                        if ( widenFirst && dynamic_cast< VoidType* >( otherPointer->get_base() ) && ! isFtype(pointerType->get_base(), indexer) && ! requiredComplete( pointerType->get_base() ) ) {
     164                                result = otherPointer->clone();
     165                                result->get_qualifiers() += pointerType->get_qualifiers();
    163166                        } else if ( widenSecond && dynamic_cast< VoidType* >( pointerType->get_base() ) && ! isFtype(otherPointer->get_base(), indexer) ) {
    164                                 getCommonWithVoidPointer( pointerType, otherPointer );
     167                                result = pointerType->clone();
     168                                result->get_qualifiers() += otherPointer->get_qualifiers();
    165169                        } else if ( ( pointerType->get_base()->get_qualifiers() >= otherPointer->get_base()->get_qualifiers() || widenFirst )
    166170                                           && ( pointerType->get_base()->get_qualifiers() <= otherPointer->get_base()->get_qualifiers() || widenSecond ) ) {
     
    252256                                        result->get_qualifiers() += zeroType->get_qualifiers();
    253257                                }
    254                         } else if ( widenSecond && dynamic_cast< OneType* >( type2 ) ) {
    255                                 result = new BasicType( zeroType->get_qualifiers(), BasicType::SignedInt );
    256                                 result->get_qualifiers() += type2->get_qualifiers();
    257258                        }
    258259                }
     
    266267                                        result->get_qualifiers() += oneType->get_qualifiers();
    267268                                }
    268                         } else if ( widenSecond && dynamic_cast< ZeroType* >( type2 ) ) {
    269                                 result = new BasicType( oneType->get_qualifiers(), BasicType::SignedInt );
    270                                 result->get_qualifiers() += type2->get_qualifiers();
    271269                        }
    272270                }
  • src/ResolvExpr/Resolver.cc

    r66f8528 r5802a4f  
    404404        template< typename AggrInst >
    405405        TypeSubstitution makeGenericSubstitutuion( AggrInst * inst ) {
    406                 assert( inst );
    407                 assert( inst->get_baseParameters() );
    408406                std::list< TypeDecl * > baseParams = *inst->get_baseParameters();
    409407                std::list< Expression * > typeSubs = inst->get_parameters();
     
    446444
    447445        void Resolver::resolveAggrInit( ReferenceToType * inst, InitIterator & init, InitIterator & initEnd ) {
     446
    448447                if ( StructInstType * sit = dynamic_cast< StructInstType * >( inst ) ) {
    449448                        TypeSubstitution sub = makeGenericSubstitutuion( sit );
     
    456455                        }
    457456                } else if ( UnionInstType * uit = dynamic_cast< UnionInstType * >( inst ) ) {
    458                         TypeSubstitution sub = makeGenericSubstitutuion( uit );
     457                        TypeSubstitution sub = makeGenericSubstitutuion( sit );
    459458                        UnionDecl * un = uit->get_baseUnion();
    460459                        // only resolve to the first member of a union
  • src/ResolvExpr/Unify.cc

    r66f8528 r5802a4f  
    3131
    3232namespace ResolvExpr {
     33        struct WidenMode {
     34                WidenMode( bool widenFirst, bool widenSecond ): widenFirst( widenFirst ), widenSecond( widenSecond ) {}
     35                WidenMode &operator|=( const WidenMode &other ) { widenFirst |= other.widenFirst; widenSecond |= other.widenSecond; return *this; }
     36                WidenMode &operator&=( const WidenMode &other ) { widenFirst &= other.widenFirst; widenSecond &= other.widenSecond; return *this; }
     37                WidenMode operator|( const WidenMode &other ) { WidenMode newWM( *this ); newWM |= other; return newWM; }
     38                WidenMode operator&( const WidenMode &other ) { WidenMode newWM( *this ); newWM &= other; return newWM; }
     39                operator bool() { return widenFirst && widenSecond; }
     40
     41                bool widenFirst : 1, widenSecond : 1;
     42        };
    3343
    3444        class Unify : public Visitor {
  • src/ResolvExpr/Unify.h

    r66f8528 r5802a4f  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // Unify.h --
     7// Unify.h -- 
    88//
    99// Author           : Richard C. Bilson
     
    2727
    2828namespace ResolvExpr {
    29         struct WidenMode {
    30                 WidenMode( bool widenFirst, bool widenSecond ): widenFirst( widenFirst ), widenSecond( widenSecond ) {}
    31                 WidenMode &operator|=( const WidenMode &other ) { widenFirst |= other.widenFirst; widenSecond |= other.widenSecond; return *this; }
    32                 WidenMode &operator&=( const WidenMode &other ) { widenFirst &= other.widenFirst; widenSecond &= other.widenSecond; return *this; }
    33                 WidenMode operator|( const WidenMode &other ) { WidenMode newWM( *this ); newWM |= other; return newWM; }
    34                 WidenMode operator&( const WidenMode &other ) { WidenMode newWM( *this ); newWM &= other; return newWM; }
    35                 operator bool() { return widenFirst && widenSecond; }
    36 
    37                 bool widenFirst : 1, widenSecond : 1;
    38         };
    39 
    40         bool bindVar( TypeInstType *typeInst, Type *other, const TypeDecl::Data & data, TypeEnvironment &env, AssertionSet &needAssertions, AssertionSet &haveAssertions, const OpenVarSet &openVars, WidenMode widenMode, const SymTab::Indexer &indexer );
    4129        bool unify( Type *type1, Type *type2, TypeEnvironment &env, AssertionSet &needAssertions, AssertionSet &haveAssertions, OpenVarSet &openVars, const SymTab::Indexer &indexer );
    4230        bool unify( Type *type1, Type *type2, TypeEnvironment &env, AssertionSet &needAssertions, AssertionSet &haveAssertions, OpenVarSet &openVars, const SymTab::Indexer &indexer, Type *&commonType );
  • src/SymTab/Autogen.h

    r66f8528 r5802a4f  
    8888                if ( forward ) {
    8989                        // generate: for ( int i = 0; i < 0; ++i )
    90                         begin = new ConstantExpr( Constant( new ZeroType( emptyQualifiers ), "0" ) );
     90                        begin = new NameExpr( "0" );
    9191                        end = array->get_dimension()->clone();
    9292                        cmp = new NameExpr( "?<?" );
     
    9696                        begin = new UntypedExpr( new NameExpr( "?-?" ) );
    9797                        ((UntypedExpr*)begin)->get_args().push_back( array->get_dimension()->clone() );
    98                         ((UntypedExpr*)begin)->get_args().push_back( new ConstantExpr( Constant( new OneType( emptyQualifiers ), "1" ) ) );
    99                         end = new ConstantExpr( Constant( new ZeroType( emptyQualifiers ), "0" ) );
     98                        ((UntypedExpr*)begin)->get_args().push_back( new NameExpr( "1" ) );
     99                        end = new NameExpr( "0" );
    100100                        cmp = new NameExpr( "?>=?" );
    101101                        update = new NameExpr( "--?" );
     
    175175} // namespace SymTab
    176176#endif // AUTOGEN_H
     177
  • src/SynTree/Declaration.h

    r66f8528 r5802a4f  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Dec 13 13:37:33 2016
    13 // Update Count     : 49
     12// Last Modified On : Thu Aug 18 23:50:24 2016
     13// Update Count     : 40
    1414//
    1515
     
    6969
    7070        std::string get_mangleName() const { return mangleName; }
    71         DeclarationWithType * set_mangleName( std::string newValue ) { mangleName = newValue; return this; }
     71        void set_mangleName( std::string newValue ) { mangleName = newValue; }
    7272
    7373        std::string get_scopedMangleName() const { return mangleName + "_" + std::to_string(scopeLevel); }
    7474
    7575        int get_scopeLevel() const { return scopeLevel; }
    76         DeclarationWithType * set_scopeLevel( int newValue ) { scopeLevel = newValue; return this; }
    77 
    78         ConstantExpr *get_asmName() const { return asmName; }
    79         DeclarationWithType * set_asmName( ConstantExpr *newValue ) { asmName = newValue; return this; }
     76        void set_scopeLevel( int newValue ) { scopeLevel = newValue; }
    8077
    8178        std::list< Attribute * >& get_attributes() { return attributes; }
     
    9087        // this represents the type with all types and typedefs expanded it is generated by SymTab::Validate::Pass2
    9188        std::string mangleName;
    92         // need to remember the scope level at which the variable was declared, so that shadowed identifiers can be accessed
     89        // need to remember the scope level at which the variable was declared, so that
     90        // shadowed identifiers can be accessed
    9391        int scopeLevel = 0;
    9492
    95         ConstantExpr *asmName;
    9693        std::list< Attribute * > attributes;
    9794};
     
    109106        Initializer *get_init() const { return init; }
    110107        void set_init( Initializer *newValue ) { init = newValue; }
    111 
    112108        Expression *get_bitfieldWidth() const { return bitfieldWidth; }
    113109        void set_bitfieldWidth( Expression *newValue ) { bitfieldWidth = newValue; }
  • src/SynTree/DeclarationWithType.cc

    r66f8528 r5802a4f  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Dec 13 14:49:43 2016
    13 // Update Count     : 7
     12// Last Modified On : Thu Aug 18 23:50:41 2016
     13// Update Count     : 4
    1414//
    1515
     
    2020
    2121DeclarationWithType::DeclarationWithType( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Spec linkage, const std::list< Attribute * > & attributes )
    22         : Declaration( name, sc, linkage ), asmName( nullptr ), attributes( attributes ) {
     22                : Declaration( name, sc, linkage ), attributes( attributes ) {
    2323}
    2424
     
    2626                : Declaration( other ), mangleName( other.mangleName ), scopeLevel( other.scopeLevel ) {
    2727        cloneAll( other.attributes, attributes );
    28         asmName = maybeClone( other.asmName );
    2928}
    3029
    3130DeclarationWithType::~DeclarationWithType() {
    3231        deleteAll( attributes );
    33         delete asmName;
    3432}
    3533
  • src/SynTree/Expression.cc

    r66f8528 r5802a4f  
    438438}
    439439
    440 NameExpr::NameExpr( std::string _name, Expression *_aname ) : Expression( _aname ), name(_name) {
    441         assertf(_name != "0", "Zero is not a valid name\n");
    442         assertf(_name != "1", "One is not a valid name\n");
    443 }
     440NameExpr::NameExpr( std::string _name, Expression *_aname ) : Expression( _aname ), name(_name) {}
    444441
    445442NameExpr::NameExpr( const NameExpr &other ) : Expression( other ), name( other.name ) {
  • src/SynTree/Type.h

    r66f8528 r5802a4f  
    8282        ForallList forall;
    8383};
    84 
    85 extern Type::Qualifiers emptyQualifiers;                                // no qualifiers on constants
    8684
    8785class VoidType : public Type {
  • src/driver/Makefile.am

    r66f8528 r5802a4f  
    1616
    1717# applies to both programs
    18 AM_CXXFLAGS = -Wall -O2
    19 if BUILD_NO_LIB
    20 else
    21 AM_CXXFLAGS += -DHAVE_LIBCFA
    22 endif
    23 if BUILD_DEBUG
    24 AM_CXXFLAGS += -DHAVE_LIBCFA_DEBUG
    25 endif
    26 if BUILD_RELEASE
    27 AM_CXXFLAGS += -DHAVE_LIBCFA_RELEASE
    28 endif
     18AM_CXXFLAGS = -Wall
    2919
    3020bin_PROGRAMS = cfa
  • src/driver/Makefile.in

    r66f8528 r5802a4f  
    3636PRE_UNINSTALL = :
    3737POST_UNINSTALL = :
    38 build_triplet = @build@
    39 host_triplet = @host@
    40 @BUILD_NO_LIB_FALSE@am__append_1 = -DHAVE_LIBCFA
    41 @BUILD_DEBUG_TRUE@am__append_2 = -DHAVE_LIBCFA_DEBUG
    42 @BUILD_RELEASE_TRUE@am__append_3 = -DHAVE_LIBCFA_RELEASE
    4338bin_PROGRAMS = cfa$(EXEEXT)
    4439cc1lib_PROGRAMS = cc1$(EXEEXT)
     
    9792BACKEND_CC = @BACKEND_CC@
    9893CC = @CC@
    99 CCAS = @CCAS@
    100 CCASDEPMODE = @CCASDEPMODE@
    101 CCASFLAGS = @CCASFLAGS@
    10294CCDEPMODE = @CCDEPMODE@
    10395CFA_BACKEND_CC = @CFA_BACKEND_CC@
     
    134126LIBS = @LIBS@
    135127LTLIBOBJS = @LTLIBOBJS@
    136 MACHINE_TYPE = @MACHINE_TYPE@
    137128MAINT = @MAINT@
    138129MAKEINFO = @MAKEINFO@
     
    166157am__untar = @am__untar@
    167158bindir = @bindir@
    168 build = @build@
    169159build_alias = @build_alias@
    170 build_cpu = @build_cpu@
    171 build_os = @build_os@
    172 build_vendor = @build_vendor@
    173160builddir = @builddir@
    174161datadir = @datadir@
     
    177164dvidir = @dvidir@
    178165exec_prefix = @exec_prefix@
    179 host = @host@
    180166host_alias = @host_alias@
    181 host_cpu = @host_cpu@
    182 host_os = @host_os@
    183 host_vendor = @host_vendor@
    184167htmldir = @htmldir@
    185168includedir = @includedir@
     
    207190
    208191# applies to both programs
    209 AM_CXXFLAGS = -Wall -O2 $(am__append_1) $(am__append_2) \
    210         $(am__append_3)
     192AM_CXXFLAGS = -Wall
    211193cfa_SOURCES = cfa.cc
    212194
  • src/driver/cfa.cc

    r66f8528 r5802a4f  
    231231        } // if
    232232
     233        string d;
     234        if ( debug ) {
     235                d = "-d";
     236        } // if
     237
    233238        // add the CFA include-library paths, which allow direct access to header files without directory qualification
     239
    234240        args[nargs] = "-I" CFA_INCDIR;
    235241        nargs += 1;
     
    238244                nargs += 1;
    239245        } // if
    240         args[nargs] = "-I" CFA_INCDIR "/concurrency";
    241         nargs += 1;
    242246        args[nargs] = "-I" CFA_INCDIR "/containers";
    243247        nargs += 1;
    244248
    245 #ifdef HAVE_LIBCFA
    246249        if ( link ) {
    247                 #if ! defined(HAVE_LIBCFA_RELEASE)
    248                         if( !debug ) {
    249                                 cerr << "error: Option -nodebug is not available, libcfa was not installed." << endl;
    250                                 exit( EXIT_FAILURE );
    251                                 }
    252                 #endif
    253                 #if ! defined(HAVE_LIBCFA_DEBUG)
    254                         if( debug ) {
    255                                 cerr << "error: Option -debug is not available, libcfa-d was not installed." << endl;
    256                                 exit( EXIT_FAILURE );
    257                                 }
    258                 #endif
    259 
    260250                // include the cfa library in case it's needed
    261251                args[nargs] = "-L" CFA_LIBDIR;
    262252                nargs += 1;
    263                 if( debug ) {
    264                         args[nargs] = "-lcfa-d";
    265                 } else {
    266                         args[nargs] = "-lcfa";
    267                 }
    268                 nargs += 1;
    269         } // if
    270 #endif //HAVE_LIBCFA
     253                args[nargs] = "-lcfa";
     254                nargs += 1;
     255        } // if
    271256
    272257        // add the correct set of flags based on the type of compile this is
  • src/examples/Makefile.am

    r66f8528 r5802a4f  
    1616
    1717# applies to both programs
    18 CFLAGS =
    19 AM_CFLAGS = -g -Wall -Wno-unused-function -O2
     18CFLAGS = -g -Wall -Wno-unused-function # TEMPORARY: does not build with -O2
    2019CC = @CFA_BINDIR@/cfa
    2120
    22 noinst_PROGRAMS = fstream_test vector_test avl_test Bench # build but do not install
     21noinst_PROGRAMS = fstream_test vector_test avl_test # build but do not install
    2322fstream_test_SOURCES = fstream_test.c
    2423vector_test_SOURCES = vector_int.c array.c vector_test.c
    2524avl_test_SOURCES = avltree/avl_test.c avltree/avl0.c avltree/avl1.c avltree/avl2.c avltree/avl3.c avltree/avl4.c avltree/avl-private.c
    26 
    27 Bench : Bench.c
    28         @for ccflags in "-debug" "-nodebug"; do \
    29                 echo ${CC} ${AM_CFLAGS} ${CFLAGS} $${ccflags} -lrt Bench.c;\
    30                 ${CC} ${AM_CFLAGS} ${CFLAGS} $${ccflags} -lrt Bench.c;\
    31                 ./a.out ; \
    32         done ; \
    33         rm -f ./a.out ;
  • src/examples/Makefile.in

    r66f8528 r5802a4f  
    3636PRE_UNINSTALL = :
    3737POST_UNINSTALL = :
    38 build_triplet = @build@
    39 host_triplet = @host@
    4038noinst_PROGRAMS = fstream_test$(EXEEXT) vector_test$(EXEEXT) \
    41         avl_test$(EXEEXT) Bench$(EXEEXT)
     39        avl_test$(EXEEXT)
    4240subdir = src/examples
    4341DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
     
    5149CONFIG_CLEAN_VPATH_FILES =
    5250PROGRAMS = $(noinst_PROGRAMS)
    53 Bench_SOURCES = Bench.c
    54 Bench_OBJECTS = Bench.$(OBJEXT)
    55 Bench_LDADD = $(LDADD)
    5651am_avl_test_OBJECTS = avl_test.$(OBJEXT) avl0.$(OBJEXT) avl1.$(OBJEXT) \
    5752        avl2.$(OBJEXT) avl3.$(OBJEXT) avl4.$(OBJEXT) \
     
    8984am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
    9085am__v_GEN_0 = @echo "  GEN   " $@;
    91 SOURCES = Bench.c $(avl_test_SOURCES) $(fstream_test_SOURCES) \
     86SOURCES = $(avl_test_SOURCES) $(fstream_test_SOURCES) \
    9287        $(vector_test_SOURCES)
    93 DIST_SOURCES = Bench.c $(avl_test_SOURCES) $(fstream_test_SOURCES) \
     88DIST_SOURCES = $(avl_test_SOURCES) $(fstream_test_SOURCES) \
    9489        $(vector_test_SOURCES)
    9590ETAGS = etags
     
    106101BACKEND_CC = @BACKEND_CC@
    107102CC = @CFA_BINDIR@/cfa
    108 CCAS = @CCAS@
    109 CCASDEPMODE = @CCASDEPMODE@
    110 CCASFLAGS = @CCASFLAGS@
    111103CCDEPMODE = @CCDEPMODE@
    112104CFA_BACKEND_CC = @CFA_BACKEND_CC@
     
    118110
    119111# applies to both programs
    120 CFLAGS =
     112CFLAGS = -g -Wall -Wno-unused-function # TEMPORARY: does not build with -O2
    121113CPP = @CPP@
    122114CPPFLAGS = @CPPFLAGS@
     
    145137LIBS = @LIBS@
    146138LTLIBOBJS = @LTLIBOBJS@
    147 MACHINE_TYPE = @MACHINE_TYPE@
    148139MAINT = @MAINT@
    149140MAKEINFO = @MAKEINFO@
     
    177168am__untar = @am__untar@
    178169bindir = @bindir@
    179 build = @build@
    180170build_alias = @build_alias@
    181 build_cpu = @build_cpu@
    182 build_os = @build_os@
    183 build_vendor = @build_vendor@
    184171builddir = @builddir@
    185172datadir = @datadir@
     
    188175dvidir = @dvidir@
    189176exec_prefix = @exec_prefix@
    190 host = @host@
    191177host_alias = @host_alias@
    192 host_cpu = @host_cpu@
    193 host_os = @host_os@
    194 host_vendor = @host_vendor@
    195178htmldir = @htmldir@
    196179includedir = @includedir@
     
    216199top_builddir = @top_builddir@
    217200top_srcdir = @top_srcdir@
    218 AM_CFLAGS = -g -Wall -Wno-unused-function -O2
    219201fstream_test_SOURCES = fstream_test.c
    220202vector_test_SOURCES = vector_int.c array.c vector_test.c
     
    273255        -rm -f *.tab.c
    274256
    275 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Bench.Po@am__quote@
    276257@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/array.Po@am__quote@
    277258@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/avl-private.Po@am__quote@
     
    599580
    600581
    601 Bench : Bench.c
    602         @for ccflags in "-debug" "-nodebug"; do \
    603                 echo ${CC} ${AM_CFLAGS} ${CFLAGS} $${ccflags} -lrt Bench.c;\
    604                 ${CC} ${AM_CFLAGS} ${CFLAGS} $${ccflags} -lrt Bench.c;\
    605                 ./a.out ; \
    606         done ; \
    607         rm -f ./a.out ;
    608 
    609582# Tell versions [3.59,3.63) of GNU make to not export all variables.
    610583# Otherwise a system limit (for SysV at least) may be exceeded.
  • src/libcfa/Makefile.am

    r66f8528 r5802a4f  
    1111## Created On       : Sun May 31 08:54:01 2015
    1212## Last Modified By : Peter A. Buhr
    13 ## Last Modified On : Wed Dec 14 15:17:30 2016
    14 ## Update Count     : 211
     13## Last Modified On : Fri Aug 26 12:03:37 2016
     14## Update Count     : 199
    1515###############################################################################
    1616
     
    1818AUTOMAKE_OPTIONS = subdir-objects
    1919
    20 lib_LIBRARIES =
     20lib_LIBRARIES = libcfa.a
    2121
    22 if BUILD_RELEASE
    23 lib_LIBRARIES += libcfa.a
    24 endif
     22# put into lib for now
     23cfalibdir = ${libdir}
     24cfalib_DATA = builtins.cf extras.cf prelude.cf
    2525
    26 if BUILD_DEBUG
    27 lib_LIBRARIES += libcfa-d.a
    28 endif
     26# create extra forward types/declarations to reduce inclusion of library files
     27extras.cf : extras.regx extras.c
     28        ${AM_V_GEN}@BACKEND_CC@ @CFA_FLAGS@ -E ${srcdir}/extras.c | grep -f extras.regx > ${srcdir}/extras.cf
    2929
    30 libcfa_a-libcfa-prelude.o : libcfa-prelude.c
    31          ${AM_V_GEN}@BACKEND_CC@ @CFA_FLAGS@ -O2 -c -o $@ $<
     30# create forward declarations for gcc builtins
     31builtins.cf : builtins.c
     32        ${AM_V_GEN}if [ -e $< ] ; then \
     33                @BACKEND_CC@ -E -P $^ | sed -e "/targetm/s/.*//" -e "/_Decimal/s/.*//" -e "s/void (const char \*)0();//" -e "s/\"//g" -e "s/\(__builtin_\) /\1/" > $@ ; \
     34        fi
    3235
    33 libcfa_d_a-libcfa-prelude.o : libcfa-prelude.c
    34          ${AM_V_GEN}@BACKEND_CC@ @CFA_FLAGS@ -D__CFA_DEBUG__ -O0 -c -o $@ $<
     36builtins.c : builtins.def prototypes.awk
     37        ${AM_V_GEN}if [ -e $< ] ; then \
     38                @BACKEND_CC@ -E prototypes.c | awk -f prototypes.awk > $@ ; \
     39        fi
    3540
    36 EXTRA_FLAGS = -g -Wall -Wno-unused-function -I${abs_top_srcdir}/src/libcfa/libhdr -imacros libcfa-prelude.c @CFA_FLAGS@
     41builtins.def :
    3742
    38 AM_CCASFLAGS = @CFA_FLAGS@
    39 CFLAGS = -quiet -no-include-stdhdr -XCFA -t -B${abs_top_srcdir}/src/driver ${EXTRA_FLAGS}
     43prototypes.awk :
     44
     45MAINTAINERCLEANFILES = builtins.cf extras.cf ${addprefix ${libdir}/,${cfalib_DATA}} ${addprefix ${libdir}/,${lib_LIBRARIES}}
     46
     47#--------------------------------------------------
     48
     49libcfa-prelude.c : ${srcdir}/prelude.cf ${srcdir}/extras.cf ${srcdir}/builtins.cf
     50        ${AM_V_GEN}${abs_top_srcdir}/src/driver/cfa-cpp -l ${srcdir}/prelude.cf $@  # use src/cfa-cpp as not in lib until after install
     51
     52libcfa-prelude.o : libcfa-prelude.c
     53         ${AM_V_GEN}@BACKEND_CC@ @CFA_FLAGS@ -c -o $@ $<
     54
     55CFLAGS = -quiet -no-include-stdhdr -g -Wall -Wno-unused-function @CFA_FLAGS@ -B${abs_top_srcdir}/src/driver -XCFA -t # TEMPORARY: does not build with -O2
    4056CC = ${abs_top_srcdir}/src/driver/cfa
    4157
    42 headers = limits stdlib math iostream fstream iterator rational assert containers/vector concurrency/threads
    43 runtimehdrs = concurrency
     58headers = limits stdlib math iostream fstream iterator rational containers/vector
    4459libobjs = ${headers:=.o}
    4560
     
    4863        @true
    4964
    50 concurrency/libcfa_a-invoke.o : concurrency/invoke.c
    51         ${AM_V_CC}@BACKEND_CC@ -DHAVE_CONFIG_H -I. -I../.. -O2 ${EXTRA_FLAGS} -c -o $@ $<
    52 
    53 concurrency/libcfa_d_a-invoke.o : concurrency/invoke.c
    54         ${AM_V_CC}@BACKEND_CC@ -DHAVE_CONFIG_H -I. -I../.. -D__CFA_DEBUG__ -O0 ${EXTRA_FLAGS} -c -o $@ $<
    55 
    5665${libobjs} : ${abs_top_srcdir}/src/driver/cfa-cpp ${cfalib_DATA} # add dependency to cfa-cpp so all libraries are rebuilt with new translator
    5766
    58 libsrc = libcfa-prelude.c ${headers:=.c} concurrency/CtxSwitch-@MACHINE_TYPE@.S concurrency/invoke.c
    59 
    60 libcfa_a_SOURCES = ${libsrc}
    61 libcfa_a_CFLAGS = -nodebug -O2
    62 libcfa_d_a_SOURCES = ${libsrc}
    63 libcfa_d_a_CFLAGS = -debug -O0
     67libcfa_a_SOURCES = libcfa-prelude.c ${headers:=.c}
    6468
    6569stdhdr = ${shell echo stdhdr/*}
    6670
    67 nobase_include_HEADERS = ${headers} ${stdhdr} concurrency/invoke.h
     71nobase_include_HEADERS = ${headers} ${stdhdr}
    6872
    6973CLEANFILES = libcfa-prelude.c
  • src/libcfa/Makefile.in

    r66f8528 r5802a4f  
    1818######################## -*- Mode: Makefile-Automake -*- ######################
    1919###############################################################################
     20
    2021
    2122
     
    3738PRE_UNINSTALL = :
    3839POST_UNINSTALL = :
    39 build_triplet = @build@
    40 host_triplet = @host@
    41 @BUILD_RELEASE_TRUE@am__append_1 = libcfa.a
    42 @BUILD_DEBUG_TRUE@am__append_2 = libcfa-d.a
    4340subdir = src/libcfa
    4441DIST_COMMON = $(nobase_include_HEADERS) $(srcdir)/Makefile.am \
     
    7976         $(am__cd) "$$dir" && rm -f $$files; }; \
    8077  }
    81 am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)"
     78am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(cfalibdir)" \
     79        "$(DESTDIR)$(includedir)"
    8280LIBRARIES = $(lib_LIBRARIES)
    8381AR = ar
     
    8987am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
    9088am__v_at_0 = @
    91 libcfa_d_a_AR = $(AR) $(ARFLAGS)
    92 libcfa_d_a_LIBADD =
    93 am__dirstamp = $(am__leading_dot)dirstamp
    94 am__objects_1 = libcfa_d_a-limits.$(OBJEXT) \
    95         libcfa_d_a-stdlib.$(OBJEXT) libcfa_d_a-math.$(OBJEXT) \
    96         libcfa_d_a-iostream.$(OBJEXT) libcfa_d_a-fstream.$(OBJEXT) \
    97         libcfa_d_a-iterator.$(OBJEXT) libcfa_d_a-rational.$(OBJEXT) \
    98         libcfa_d_a-assert.$(OBJEXT) \
    99         containers/libcfa_d_a-vector.$(OBJEXT) \
    100         concurrency/libcfa_d_a-threads.$(OBJEXT)
    101 am__objects_2 = libcfa_d_a-libcfa-prelude.$(OBJEXT) $(am__objects_1) \
    102         concurrency/CtxSwitch-@MACHINE_TYPE@.$(OBJEXT) \
    103         concurrency/libcfa_d_a-invoke.$(OBJEXT)
    104 am_libcfa_d_a_OBJECTS = $(am__objects_2)
    105 libcfa_d_a_OBJECTS = $(am_libcfa_d_a_OBJECTS)
    10689libcfa_a_AR = $(AR) $(ARFLAGS)
    10790libcfa_a_LIBADD =
    108 am__objects_3 = libcfa_a-limits.$(OBJEXT) libcfa_a-stdlib.$(OBJEXT) \
    109         libcfa_a-math.$(OBJEXT) libcfa_a-iostream.$(OBJEXT) \
    110         libcfa_a-fstream.$(OBJEXT) libcfa_a-iterator.$(OBJEXT) \
    111         libcfa_a-rational.$(OBJEXT) libcfa_a-assert.$(OBJEXT) \
    112         containers/libcfa_a-vector.$(OBJEXT) \
    113         concurrency/libcfa_a-threads.$(OBJEXT)
    114 am__objects_4 = libcfa_a-libcfa-prelude.$(OBJEXT) $(am__objects_3) \
    115         concurrency/CtxSwitch-@MACHINE_TYPE@.$(OBJEXT) \
    116         concurrency/libcfa_a-invoke.$(OBJEXT)
    117 am_libcfa_a_OBJECTS = $(am__objects_4)
     91am__dirstamp = $(am__leading_dot)dirstamp
     92am__objects_1 = limits.$(OBJEXT) stdlib.$(OBJEXT) math.$(OBJEXT) \
     93        iostream.$(OBJEXT) fstream.$(OBJEXT) iterator.$(OBJEXT) \
     94        rational.$(OBJEXT) containers/vector.$(OBJEXT)
     95am_libcfa_a_OBJECTS = libcfa-prelude.$(OBJEXT) $(am__objects_1)
    11896libcfa_a_OBJECTS = $(am_libcfa_a_OBJECTS)
    11997DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
     
    12199am__depfiles_maybe = depfiles
    122100am__mv = mv -f
    123 CPPASCOMPILE = $(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
    124         $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS)
    125 AM_V_CPPAS = $(am__v_CPPAS_@AM_V@)
    126 am__v_CPPAS_ = $(am__v_CPPAS_@AM_DEFAULT_V@)
    127 am__v_CPPAS_0 = @echo "  CPPAS " $@;
    128 AM_V_lt = $(am__v_lt_@AM_V@)
    129 am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
    130 am__v_lt_0 = --silent
    131101COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
    132102        $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
     
    142112am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
    143113am__v_GEN_0 = @echo "  GEN   " $@;
    144 SOURCES = $(libcfa_d_a_SOURCES) $(libcfa_a_SOURCES)
    145 DIST_SOURCES = $(libcfa_d_a_SOURCES) $(libcfa_a_SOURCES)
     114SOURCES = $(libcfa_a_SOURCES)
     115DIST_SOURCES = $(libcfa_a_SOURCES)
     116DATA = $(cfalib_DATA)
    146117HEADERS = $(nobase_include_HEADERS)
    147118ETAGS = etags
     
    158129BACKEND_CC = @BACKEND_CC@
    159130CC = ${abs_top_srcdir}/src/driver/cfa
    160 CCAS = @CCAS@
    161 CCASDEPMODE = @CCASDEPMODE@
    162 CCASFLAGS = @CCASFLAGS@
    163131CCDEPMODE = @CCDEPMODE@
    164132CFA_BACKEND_CC = @CFA_BACKEND_CC@
     
    168136CFA_LIBDIR = @CFA_LIBDIR@
    169137CFA_PREFIX = @CFA_PREFIX@
    170 CFLAGS = -quiet -no-include-stdhdr -XCFA -t -B${abs_top_srcdir}/src/driver ${EXTRA_FLAGS}
     138CFLAGS = -quiet -no-include-stdhdr -g -Wall -Wno-unused-function @CFA_FLAGS@ -B${abs_top_srcdir}/src/driver -XCFA -t # TEMPORARY: does not build with -O2
    171139CPP = @CPP@
    172140CPPFLAGS = @CPPFLAGS@
     
    195163LIBS = @LIBS@
    196164LTLIBOBJS = @LTLIBOBJS@
    197 MACHINE_TYPE = @MACHINE_TYPE@
    198165MAINT = @MAINT@
    199166MAKEINFO = @MAKEINFO@
     
    227194am__untar = @am__untar@
    228195bindir = @bindir@
    229 build = @build@
    230196build_alias = @build_alias@
    231 build_cpu = @build_cpu@
    232 build_os = @build_os@
    233 build_vendor = @build_vendor@
    234197builddir = @builddir@
    235198datadir = @datadir@
     
    238201dvidir = @dvidir@
    239202exec_prefix = @exec_prefix@
    240 host = @host@
    241203host_alias = @host_alias@
    242 host_cpu = @host_cpu@
    243 host_os = @host_os@
    244 host_vendor = @host_vendor@
    245204htmldir = @htmldir@
    246205includedir = @includedir@
     
    269228# create object files in directory with source files
    270229AUTOMAKE_OPTIONS = subdir-objects
    271 lib_LIBRARIES = $(am__append_1) $(am__append_2)
    272 EXTRA_FLAGS = -g -Wall -Wno-unused-function -I${abs_top_srcdir}/src/libcfa/libhdr -imacros libcfa-prelude.c @CFA_FLAGS@
    273 AM_CCASFLAGS = @CFA_FLAGS@
    274 headers = limits stdlib math iostream fstream iterator rational assert containers/vector concurrency/threads
    275 runtimehdrs = concurrency
     230lib_LIBRARIES = libcfa.a
     231
     232# put into lib for now
     233cfalibdir = ${libdir}
     234cfalib_DATA = builtins.cf extras.cf prelude.cf
     235MAINTAINERCLEANFILES = builtins.cf extras.cf ${addprefix ${libdir}/,${cfalib_DATA}} ${addprefix ${libdir}/,${lib_LIBRARIES}}
     236headers = limits stdlib math iostream fstream iterator rational containers/vector
    276237libobjs = ${headers:=.o}
    277 libsrc = libcfa-prelude.c ${headers:=.c} concurrency/CtxSwitch-@MACHINE_TYPE@.S concurrency/invoke.c
    278 libcfa_a_SOURCES = ${libsrc}
    279 libcfa_a_CFLAGS = -nodebug -O2
    280 libcfa_d_a_SOURCES = ${libsrc}
    281 libcfa_d_a_CFLAGS = -debug -O0
     238libcfa_a_SOURCES = libcfa-prelude.c ${headers:=.c}
    282239stdhdr = ${shell echo stdhdr/*}
    283 nobase_include_HEADERS = ${headers} ${stdhdr} concurrency/invoke.h
     240nobase_include_HEADERS = ${headers} ${stdhdr}
    284241CLEANFILES = libcfa-prelude.c
    285242all: all-am
    286243
    287244.SUFFIXES:
    288 .SUFFIXES: .S .c .o .obj
     245.SUFFIXES: .c .o .obj
    289246$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
    290247        @for dep in $?; do \
     
    353310        @$(MKDIR_P) containers/$(DEPDIR)
    354311        @: > containers/$(DEPDIR)/$(am__dirstamp)
    355 containers/libcfa_d_a-vector.$(OBJEXT): containers/$(am__dirstamp) \
     312containers/vector.$(OBJEXT): containers/$(am__dirstamp) \
    356313        containers/$(DEPDIR)/$(am__dirstamp)
    357 concurrency/$(am__dirstamp):
    358         @$(MKDIR_P) concurrency
    359         @: > concurrency/$(am__dirstamp)
    360 concurrency/$(DEPDIR)/$(am__dirstamp):
    361         @$(MKDIR_P) concurrency/$(DEPDIR)
    362         @: > concurrency/$(DEPDIR)/$(am__dirstamp)
    363 concurrency/libcfa_d_a-threads.$(OBJEXT): concurrency/$(am__dirstamp) \
    364         concurrency/$(DEPDIR)/$(am__dirstamp)
    365 concurrency/CtxSwitch-@MACHINE_TYPE@.$(OBJEXT):  \
    366         concurrency/$(am__dirstamp) \
    367         concurrency/$(DEPDIR)/$(am__dirstamp)
    368 concurrency/libcfa_d_a-invoke.$(OBJEXT): concurrency/$(am__dirstamp) \
    369         concurrency/$(DEPDIR)/$(am__dirstamp)
    370 libcfa-d.a: $(libcfa_d_a_OBJECTS) $(libcfa_d_a_DEPENDENCIES) $(EXTRA_libcfa_d_a_DEPENDENCIES)
    371         $(AM_V_at)-rm -f libcfa-d.a
    372         $(AM_V_AR)$(libcfa_d_a_AR) libcfa-d.a $(libcfa_d_a_OBJECTS) $(libcfa_d_a_LIBADD)
    373         $(AM_V_at)$(RANLIB) libcfa-d.a
    374 containers/libcfa_a-vector.$(OBJEXT): containers/$(am__dirstamp) \
    375         containers/$(DEPDIR)/$(am__dirstamp)
    376 concurrency/libcfa_a-threads.$(OBJEXT): concurrency/$(am__dirstamp) \
    377         concurrency/$(DEPDIR)/$(am__dirstamp)
    378 concurrency/libcfa_a-invoke.$(OBJEXT): concurrency/$(am__dirstamp) \
    379         concurrency/$(DEPDIR)/$(am__dirstamp)
    380314libcfa.a: $(libcfa_a_OBJECTS) $(libcfa_a_DEPENDENCIES) $(EXTRA_libcfa_a_DEPENDENCIES)
    381315        $(AM_V_at)-rm -f libcfa.a
     
    385319mostlyclean-compile:
    386320        -rm -f *.$(OBJEXT)
    387         -rm -f concurrency/CtxSwitch-@MACHINE_TYPE@.$(OBJEXT)
    388         -rm -f concurrency/libcfa_a-invoke.$(OBJEXT)
    389         -rm -f concurrency/libcfa_a-threads.$(OBJEXT)
    390         -rm -f concurrency/libcfa_d_a-invoke.$(OBJEXT)
    391         -rm -f concurrency/libcfa_d_a-threads.$(OBJEXT)
    392         -rm -f containers/libcfa_a-vector.$(OBJEXT)
    393         -rm -f containers/libcfa_d_a-vector.$(OBJEXT)
     321        -rm -f containers/vector.$(OBJEXT)
    394322
    395323distclean-compile:
    396324        -rm -f *.tab.c
    397325
    398 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_a-assert.Po@am__quote@
    399 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_a-fstream.Po@am__quote@
    400 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_a-iostream.Po@am__quote@
    401 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_a-iterator.Po@am__quote@
    402 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_a-libcfa-prelude.Po@am__quote@
    403 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_a-limits.Po@am__quote@
    404 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_a-math.Po@am__quote@
    405 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_a-rational.Po@am__quote@
    406 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_a-stdlib.Po@am__quote@
    407 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_d_a-assert.Po@am__quote@
    408 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_d_a-fstream.Po@am__quote@
    409 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_d_a-iostream.Po@am__quote@
    410 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_d_a-iterator.Po@am__quote@
    411 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_d_a-libcfa-prelude.Po@am__quote@
    412 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_d_a-limits.Po@am__quote@
    413 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_d_a-math.Po@am__quote@
    414 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_d_a-rational.Po@am__quote@
    415 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_d_a-stdlib.Po@am__quote@
    416 @AMDEP_TRUE@@am__include@ @am__quote@concurrency/$(DEPDIR)/CtxSwitch-@MACHINE_TYPE@.Po@am__quote@
    417 @AMDEP_TRUE@@am__include@ @am__quote@concurrency/$(DEPDIR)/libcfa_a-invoke.Po@am__quote@
    418 @AMDEP_TRUE@@am__include@ @am__quote@concurrency/$(DEPDIR)/libcfa_a-threads.Po@am__quote@
    419 @AMDEP_TRUE@@am__include@ @am__quote@concurrency/$(DEPDIR)/libcfa_d_a-invoke.Po@am__quote@
    420 @AMDEP_TRUE@@am__include@ @am__quote@concurrency/$(DEPDIR)/libcfa_d_a-threads.Po@am__quote@
    421 @AMDEP_TRUE@@am__include@ @am__quote@containers/$(DEPDIR)/libcfa_a-vector.Po@am__quote@
    422 @AMDEP_TRUE@@am__include@ @am__quote@containers/$(DEPDIR)/libcfa_d_a-vector.Po@am__quote@
    423 
    424 .S.o:
    425 @am__fastdepCCAS_TRUE@  $(AM_V_CPPAS)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
    426 @am__fastdepCCAS_TRUE@  $(CPPASCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
    427 @am__fastdepCCAS_TRUE@  $(am__mv) $$depbase.Tpo $$depbase.Po
    428 @AMDEP_TRUE@@am__fastdepCCAS_FALSE@     $(AM_V_CPPAS)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
    429 @AMDEP_TRUE@@am__fastdepCCAS_FALSE@     DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    430 @am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CPPASCOMPILE) -c -o $@ $<
    431 
    432 .S.obj:
    433 @am__fastdepCCAS_TRUE@  $(AM_V_CPPAS)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
    434 @am__fastdepCCAS_TRUE@  $(CPPASCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
    435 @am__fastdepCCAS_TRUE@  $(am__mv) $$depbase.Tpo $$depbase.Po
    436 @AMDEP_TRUE@@am__fastdepCCAS_FALSE@     $(AM_V_CPPAS)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
    437 @AMDEP_TRUE@@am__fastdepCCAS_FALSE@     DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    438 @am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CPPASCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
     326@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fstream.Po@am__quote@
     327@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iostream.Po@am__quote@
     328@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iterator.Po@am__quote@
     329@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa-prelude.Po@am__quote@
     330@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/limits.Po@am__quote@
     331@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/math.Po@am__quote@
     332@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rational.Po@am__quote@
     333@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stdlib.Po@am__quote@
     334@AMDEP_TRUE@@am__include@ @am__quote@containers/$(DEPDIR)/vector.Po@am__quote@
    439335
    440336.c.o:
     
    453349@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    454350@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
    455 
    456 libcfa_d_a-libcfa-prelude.obj: libcfa-prelude.c
    457 @am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-libcfa-prelude.obj -MD -MP -MF $(DEPDIR)/libcfa_d_a-libcfa-prelude.Tpo -c -o libcfa_d_a-libcfa-prelude.obj `if test -f 'libcfa-prelude.c'; then $(CYGPATH_W) 'libcfa-prelude.c'; else $(CYGPATH_W) '$(srcdir)/libcfa-prelude.c'; fi`
    458 @am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-libcfa-prelude.Tpo $(DEPDIR)/libcfa_d_a-libcfa-prelude.Po
    459 @AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='libcfa-prelude.c' object='libcfa_d_a-libcfa-prelude.obj' libtool=no @AMDEPBACKSLASH@
    460 @AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    461 @am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-libcfa-prelude.obj `if test -f 'libcfa-prelude.c'; then $(CYGPATH_W) 'libcfa-prelude.c'; else $(CYGPATH_W) '$(srcdir)/libcfa-prelude.c'; fi`
    462 
    463 libcfa_d_a-limits.o: limits.c
    464 @am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-limits.o -MD -MP -MF $(DEPDIR)/libcfa_d_a-limits.Tpo -c -o libcfa_d_a-limits.o `test -f 'limits.c' || echo '$(srcdir)/'`limits.c
    465 @am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-limits.Tpo $(DEPDIR)/libcfa_d_a-limits.Po
    466 @AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='limits.c' object='libcfa_d_a-limits.o' libtool=no @AMDEPBACKSLASH@
    467 @AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    468 @am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-limits.o `test -f 'limits.c' || echo '$(srcdir)/'`limits.c
    469 
    470 libcfa_d_a-limits.obj: limits.c
    471 @am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-limits.obj -MD -MP -MF $(DEPDIR)/libcfa_d_a-limits.Tpo -c -o libcfa_d_a-limits.obj `if test -f 'limits.c'; then $(CYGPATH_W) 'limits.c'; else $(CYGPATH_W) '$(srcdir)/limits.c'; fi`
    472 @am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-limits.Tpo $(DEPDIR)/libcfa_d_a-limits.Po
    473 @AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='limits.c' object='libcfa_d_a-limits.obj' libtool=no @AMDEPBACKSLASH@
    474 @AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    475 @am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-limits.obj `if test -f 'limits.c'; then $(CYGPATH_W) 'limits.c'; else $(CYGPATH_W) '$(srcdir)/limits.c'; fi`
    476 
    477 libcfa_d_a-stdlib.o: stdlib.c
    478 @am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-stdlib.o -MD -MP -MF $(DEPDIR)/libcfa_d_a-stdlib.Tpo -c -o libcfa_d_a-stdlib.o `test -f 'stdlib.c' || echo '$(srcdir)/'`stdlib.c
    479 @am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-stdlib.Tpo $(DEPDIR)/libcfa_d_a-stdlib.Po
    480 @AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='stdlib.c' object='libcfa_d_a-stdlib.o' libtool=no @AMDEPBACKSLASH@
    481 @AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    482 @am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-stdlib.o `test -f 'stdlib.c' || echo '$(srcdir)/'`stdlib.c
    483 
    484 libcfa_d_a-stdlib.obj: stdlib.c
    485 @am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-stdlib.obj -MD -MP -MF $(DEPDIR)/libcfa_d_a-stdlib.Tpo -c -o libcfa_d_a-stdlib.obj `if test -f 'stdlib.c'; then $(CYGPATH_W) 'stdlib.c'; else $(CYGPATH_W) '$(srcdir)/stdlib.c'; fi`
    486 @am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-stdlib.Tpo $(DEPDIR)/libcfa_d_a-stdlib.Po
    487 @AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='stdlib.c' object='libcfa_d_a-stdlib.obj' libtool=no @AMDEPBACKSLASH@
    488 @AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    489 @am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-stdlib.obj `if test -f 'stdlib.c'; then $(CYGPATH_W) 'stdlib.c'; else $(CYGPATH_W) '$(srcdir)/stdlib.c'; fi`
    490 
    491 libcfa_d_a-math.o: math.c
    492 @am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-math.o -MD -MP -MF $(DEPDIR)/libcfa_d_a-math.Tpo -c -o libcfa_d_a-math.o `test -f 'math.c' || echo '$(srcdir)/'`math.c
    493 @am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-math.Tpo $(DEPDIR)/libcfa_d_a-math.Po
    494 @AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='math.c' object='libcfa_d_a-math.o' libtool=no @AMDEPBACKSLASH@
    495 @AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    496 @am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-math.o `test -f 'math.c' || echo '$(srcdir)/'`math.c
    497 
    498 libcfa_d_a-math.obj: math.c
    499 @am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-math.obj -MD -MP -MF $(DEPDIR)/libcfa_d_a-math.Tpo -c -o libcfa_d_a-math.obj `if test -f 'math.c'; then $(CYGPATH_W) 'math.c'; else $(CYGPATH_W) '$(srcdir)/math.c'; fi`
    500 @am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-math.Tpo $(DEPDIR)/libcfa_d_a-math.Po
    501 @AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='math.c' object='libcfa_d_a-math.obj' libtool=no @AMDEPBACKSLASH@
    502 @AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    503 @am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-math.obj `if test -f 'math.c'; then $(CYGPATH_W) 'math.c'; else $(CYGPATH_W) '$(srcdir)/math.c'; fi`
    504 
    505 libcfa_d_a-iostream.o: iostream.c
    506 @am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-iostream.o -MD -MP -MF $(DEPDIR)/libcfa_d_a-iostream.Tpo -c -o libcfa_d_a-iostream.o `test -f 'iostream.c' || echo '$(srcdir)/'`iostream.c
    507 @am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-iostream.Tpo $(DEPDIR)/libcfa_d_a-iostream.Po
    508 @AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='iostream.c' object='libcfa_d_a-iostream.o' libtool=no @AMDEPBACKSLASH@
    509 @AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    510 @am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-iostream.o `test -f 'iostream.c' || echo '$(srcdir)/'`iostream.c
    511 
    512 libcfa_d_a-iostream.obj: iostream.c
    513 @am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-iostream.obj -MD -MP -MF $(DEPDIR)/libcfa_d_a-iostream.Tpo -c -o libcfa_d_a-iostream.obj `if test -f 'iostream.c'; then $(CYGPATH_W) 'iostream.c'; else $(CYGPATH_W) '$(srcdir)/iostream.c'; fi`
    514 @am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-iostream.Tpo $(DEPDIR)/libcfa_d_a-iostream.Po
    515 @AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='iostream.c' object='libcfa_d_a-iostream.obj' libtool=no @AMDEPBACKSLASH@
    516 @AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    517 @am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-iostream.obj `if test -f 'iostream.c'; then $(CYGPATH_W) 'iostream.c'; else $(CYGPATH_W) '$(srcdir)/iostream.c'; fi`
    518 
    519 libcfa_d_a-fstream.o: fstream.c
    520 @am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-fstream.o -MD -MP -MF $(DEPDIR)/libcfa_d_a-fstream.Tpo -c -o libcfa_d_a-fstream.o `test -f 'fstream.c' || echo '$(srcdir)/'`fstream.c
    521 @am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-fstream.Tpo $(DEPDIR)/libcfa_d_a-fstream.Po
    522 @AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='fstream.c' object='libcfa_d_a-fstream.o' libtool=no @AMDEPBACKSLASH@
    523 @AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    524 @am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-fstream.o `test -f 'fstream.c' || echo '$(srcdir)/'`fstream.c
    525 
    526 libcfa_d_a-fstream.obj: fstream.c
    527 @am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-fstream.obj -MD -MP -MF $(DEPDIR)/libcfa_d_a-fstream.Tpo -c -o libcfa_d_a-fstream.obj `if test -f 'fstream.c'; then $(CYGPATH_W) 'fstream.c'; else $(CYGPATH_W) '$(srcdir)/fstream.c'; fi`
    528 @am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-fstream.Tpo $(DEPDIR)/libcfa_d_a-fstream.Po
    529 @AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='fstream.c' object='libcfa_d_a-fstream.obj' libtool=no @AMDEPBACKSLASH@
    530 @AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    531 @am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-fstream.obj `if test -f 'fstream.c'; then $(CYGPATH_W) 'fstream.c'; else $(CYGPATH_W) '$(srcdir)/fstream.c'; fi`
    532 
    533 libcfa_d_a-iterator.o: iterator.c
    534 @am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-iterator.o -MD -MP -MF $(DEPDIR)/libcfa_d_a-iterator.Tpo -c -o libcfa_d_a-iterator.o `test -f 'iterator.c' || echo '$(srcdir)/'`iterator.c
    535 @am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-iterator.Tpo $(DEPDIR)/libcfa_d_a-iterator.Po
    536 @AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='iterator.c' object='libcfa_d_a-iterator.o' libtool=no @AMDEPBACKSLASH@
    537 @AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    538 @am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-iterator.o `test -f 'iterator.c' || echo '$(srcdir)/'`iterator.c
    539 
    540 libcfa_d_a-iterator.obj: iterator.c
    541 @am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-iterator.obj -MD -MP -MF $(DEPDIR)/libcfa_d_a-iterator.Tpo -c -o libcfa_d_a-iterator.obj `if test -f 'iterator.c'; then $(CYGPATH_W) 'iterator.c'; else $(CYGPATH_W) '$(srcdir)/iterator.c'; fi`
    542 @am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-iterator.Tpo $(DEPDIR)/libcfa_d_a-iterator.Po
    543 @AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='iterator.c' object='libcfa_d_a-iterator.obj' libtool=no @AMDEPBACKSLASH@
    544 @AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    545 @am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-iterator.obj `if test -f 'iterator.c'; then $(CYGPATH_W) 'iterator.c'; else $(CYGPATH_W) '$(srcdir)/iterator.c'; fi`
    546 
    547 libcfa_d_a-rational.o: rational.c
    548 @am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-rational.o -MD -MP -MF $(DEPDIR)/libcfa_d_a-rational.Tpo -c -o libcfa_d_a-rational.o `test -f 'rational.c' || echo '$(srcdir)/'`rational.c
    549 @am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-rational.Tpo $(DEPDIR)/libcfa_d_a-rational.Po
    550 @AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='rational.c' object='libcfa_d_a-rational.o' libtool=no @AMDEPBACKSLASH@
    551 @AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    552 @am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-rational.o `test -f 'rational.c' || echo '$(srcdir)/'`rational.c
    553 
    554 libcfa_d_a-rational.obj: rational.c
    555 @am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-rational.obj -MD -MP -MF $(DEPDIR)/libcfa_d_a-rational.Tpo -c -o libcfa_d_a-rational.obj `if test -f 'rational.c'; then $(CYGPATH_W) 'rational.c'; else $(CYGPATH_W) '$(srcdir)/rational.c'; fi`
    556 @am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-rational.Tpo $(DEPDIR)/libcfa_d_a-rational.Po
    557 @AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='rational.c' object='libcfa_d_a-rational.obj' libtool=no @AMDEPBACKSLASH@
    558 @AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    559 @am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-rational.obj `if test -f 'rational.c'; then $(CYGPATH_W) 'rational.c'; else $(CYGPATH_W) '$(srcdir)/rational.c'; fi`
    560 
    561 libcfa_d_a-assert.o: assert.c
    562 @am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-assert.o -MD -MP -MF $(DEPDIR)/libcfa_d_a-assert.Tpo -c -o libcfa_d_a-assert.o `test -f 'assert.c' || echo '$(srcdir)/'`assert.c
    563 @am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-assert.Tpo $(DEPDIR)/libcfa_d_a-assert.Po
    564 @AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='assert.c' object='libcfa_d_a-assert.o' libtool=no @AMDEPBACKSLASH@
    565 @AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    566 @am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-assert.o `test -f 'assert.c' || echo '$(srcdir)/'`assert.c
    567 
    568 libcfa_d_a-assert.obj: assert.c
    569 @am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-assert.obj -MD -MP -MF $(DEPDIR)/libcfa_d_a-assert.Tpo -c -o libcfa_d_a-assert.obj `if test -f 'assert.c'; then $(CYGPATH_W) 'assert.c'; else $(CYGPATH_W) '$(srcdir)/assert.c'; fi`
    570 @am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-assert.Tpo $(DEPDIR)/libcfa_d_a-assert.Po
    571 @AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='assert.c' object='libcfa_d_a-assert.obj' libtool=no @AMDEPBACKSLASH@
    572 @AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    573 @am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-assert.obj `if test -f 'assert.c'; then $(CYGPATH_W) 'assert.c'; else $(CYGPATH_W) '$(srcdir)/assert.c'; fi`
    574 
    575 containers/libcfa_d_a-vector.o: containers/vector.c
    576 @am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT containers/libcfa_d_a-vector.o -MD -MP -MF containers/$(DEPDIR)/libcfa_d_a-vector.Tpo -c -o containers/libcfa_d_a-vector.o `test -f 'containers/vector.c' || echo '$(srcdir)/'`containers/vector.c
    577 @am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) containers/$(DEPDIR)/libcfa_d_a-vector.Tpo containers/$(DEPDIR)/libcfa_d_a-vector.Po
    578 @AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='containers/vector.c' object='containers/libcfa_d_a-vector.o' libtool=no @AMDEPBACKSLASH@
    579 @AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    580 @am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o containers/libcfa_d_a-vector.o `test -f 'containers/vector.c' || echo '$(srcdir)/'`containers/vector.c
    581 
    582 containers/libcfa_d_a-vector.obj: containers/vector.c
    583 @am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT containers/libcfa_d_a-vector.obj -MD -MP -MF containers/$(DEPDIR)/libcfa_d_a-vector.Tpo -c -o containers/libcfa_d_a-vector.obj `if test -f 'containers/vector.c'; then $(CYGPATH_W) 'containers/vector.c'; else $(CYGPATH_W) '$(srcdir)/containers/vector.c'; fi`
    584 @am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) containers/$(DEPDIR)/libcfa_d_a-vector.Tpo containers/$(DEPDIR)/libcfa_d_a-vector.Po
    585 @AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='containers/vector.c' object='containers/libcfa_d_a-vector.obj' libtool=no @AMDEPBACKSLASH@
    586 @AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    587 @am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o containers/libcfa_d_a-vector.obj `if test -f 'containers/vector.c'; then $(CYGPATH_W) 'containers/vector.c'; else $(CYGPATH_W) '$(srcdir)/containers/vector.c'; fi`
    588 
    589 concurrency/libcfa_d_a-threads.o: concurrency/threads.c
    590 @am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT concurrency/libcfa_d_a-threads.o -MD -MP -MF concurrency/$(DEPDIR)/libcfa_d_a-threads.Tpo -c -o concurrency/libcfa_d_a-threads.o `test -f 'concurrency/threads.c' || echo '$(srcdir)/'`concurrency/threads.c
    591 @am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) concurrency/$(DEPDIR)/libcfa_d_a-threads.Tpo concurrency/$(DEPDIR)/libcfa_d_a-threads.Po
    592 @AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='concurrency/threads.c' object='concurrency/libcfa_d_a-threads.o' libtool=no @AMDEPBACKSLASH@
    593 @AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    594 @am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o concurrency/libcfa_d_a-threads.o `test -f 'concurrency/threads.c' || echo '$(srcdir)/'`concurrency/threads.c
    595 
    596 concurrency/libcfa_d_a-threads.obj: concurrency/threads.c
    597 @am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT concurrency/libcfa_d_a-threads.obj -MD -MP -MF concurrency/$(DEPDIR)/libcfa_d_a-threads.Tpo -c -o concurrency/libcfa_d_a-threads.obj `if test -f 'concurrency/threads.c'; then $(CYGPATH_W) 'concurrency/threads.c'; else $(CYGPATH_W) '$(srcdir)/concurrency/threads.c'; fi`
    598 @am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) concurrency/$(DEPDIR)/libcfa_d_a-threads.Tpo concurrency/$(DEPDIR)/libcfa_d_a-threads.Po
    599 @AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='concurrency/threads.c' object='concurrency/libcfa_d_a-threads.obj' libtool=no @AMDEPBACKSLASH@
    600 @AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    601 @am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o concurrency/libcfa_d_a-threads.obj `if test -f 'concurrency/threads.c'; then $(CYGPATH_W) 'concurrency/threads.c'; else $(CYGPATH_W) '$(srcdir)/concurrency/threads.c'; fi`
    602 
    603 concurrency/libcfa_d_a-invoke.obj: concurrency/invoke.c
    604 @am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT concurrency/libcfa_d_a-invoke.obj -MD -MP -MF concurrency/$(DEPDIR)/libcfa_d_a-invoke.Tpo -c -o concurrency/libcfa_d_a-invoke.obj `if test -f 'concurrency/invoke.c'; then $(CYGPATH_W) 'concurrency/invoke.c'; else $(CYGPATH_W) '$(srcdir)/concurrency/invoke.c'; fi`
    605 @am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) concurrency/$(DEPDIR)/libcfa_d_a-invoke.Tpo concurrency/$(DEPDIR)/libcfa_d_a-invoke.Po
    606 @AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='concurrency/invoke.c' object='concurrency/libcfa_d_a-invoke.obj' libtool=no @AMDEPBACKSLASH@
    607 @AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    608 @am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o concurrency/libcfa_d_a-invoke.obj `if test -f 'concurrency/invoke.c'; then $(CYGPATH_W) 'concurrency/invoke.c'; else $(CYGPATH_W) '$(srcdir)/concurrency/invoke.c'; fi`
    609 
    610 libcfa_a-libcfa-prelude.obj: libcfa-prelude.c
    611 @am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-libcfa-prelude.obj -MD -MP -MF $(DEPDIR)/libcfa_a-libcfa-prelude.Tpo -c -o libcfa_a-libcfa-prelude.obj `if test -f 'libcfa-prelude.c'; then $(CYGPATH_W) 'libcfa-prelude.c'; else $(CYGPATH_W) '$(srcdir)/libcfa-prelude.c'; fi`
    612 @am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-libcfa-prelude.Tpo $(DEPDIR)/libcfa_a-libcfa-prelude.Po
    613 @AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='libcfa-prelude.c' object='libcfa_a-libcfa-prelude.obj' libtool=no @AMDEPBACKSLASH@
    614 @AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    615 @am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-libcfa-prelude.obj `if test -f 'libcfa-prelude.c'; then $(CYGPATH_W) 'libcfa-prelude.c'; else $(CYGPATH_W) '$(srcdir)/libcfa-prelude.c'; fi`
    616 
    617 libcfa_a-limits.o: limits.c
    618 @am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-limits.o -MD -MP -MF $(DEPDIR)/libcfa_a-limits.Tpo -c -o libcfa_a-limits.o `test -f 'limits.c' || echo '$(srcdir)/'`limits.c
    619 @am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-limits.Tpo $(DEPDIR)/libcfa_a-limits.Po
    620 @AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='limits.c' object='libcfa_a-limits.o' libtool=no @AMDEPBACKSLASH@
    621 @AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    622 @am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-limits.o `test -f 'limits.c' || echo '$(srcdir)/'`limits.c
    623 
    624 libcfa_a-limits.obj: limits.c
    625 @am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-limits.obj -MD -MP -MF $(DEPDIR)/libcfa_a-limits.Tpo -c -o libcfa_a-limits.obj `if test -f 'limits.c'; then $(CYGPATH_W) 'limits.c'; else $(CYGPATH_W) '$(srcdir)/limits.c'; fi`
    626 @am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-limits.Tpo $(DEPDIR)/libcfa_a-limits.Po
    627 @AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='limits.c' object='libcfa_a-limits.obj' libtool=no @AMDEPBACKSLASH@
    628 @AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    629 @am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-limits.obj `if test -f 'limits.c'; then $(CYGPATH_W) 'limits.c'; else $(CYGPATH_W) '$(srcdir)/limits.c'; fi`
    630 
    631 libcfa_a-stdlib.o: stdlib.c
    632 @am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-stdlib.o -MD -MP -MF $(DEPDIR)/libcfa_a-stdlib.Tpo -c -o libcfa_a-stdlib.o `test -f 'stdlib.c' || echo '$(srcdir)/'`stdlib.c
    633 @am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-stdlib.Tpo $(DEPDIR)/libcfa_a-stdlib.Po
    634 @AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='stdlib.c' object='libcfa_a-stdlib.o' libtool=no @AMDEPBACKSLASH@
    635 @AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    636 @am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-stdlib.o `test -f 'stdlib.c' || echo '$(srcdir)/'`stdlib.c
    637 
    638 libcfa_a-stdlib.obj: stdlib.c
    639 @am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-stdlib.obj -MD -MP -MF $(DEPDIR)/libcfa_a-stdlib.Tpo -c -o libcfa_a-stdlib.obj `if test -f 'stdlib.c'; then $(CYGPATH_W) 'stdlib.c'; else $(CYGPATH_W) '$(srcdir)/stdlib.c'; fi`
    640 @am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-stdlib.Tpo $(DEPDIR)/libcfa_a-stdlib.Po
    641 @AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='stdlib.c' object='libcfa_a-stdlib.obj' libtool=no @AMDEPBACKSLASH@
    642 @AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    643 @am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-stdlib.obj `if test -f 'stdlib.c'; then $(CYGPATH_W) 'stdlib.c'; else $(CYGPATH_W) '$(srcdir)/stdlib.c'; fi`
    644 
    645 libcfa_a-math.o: math.c
    646 @am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-math.o -MD -MP -MF $(DEPDIR)/libcfa_a-math.Tpo -c -o libcfa_a-math.o `test -f 'math.c' || echo '$(srcdir)/'`math.c
    647 @am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-math.Tpo $(DEPDIR)/libcfa_a-math.Po
    648 @AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='math.c' object='libcfa_a-math.o' libtool=no @AMDEPBACKSLASH@
    649 @AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    650 @am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-math.o `test -f 'math.c' || echo '$(srcdir)/'`math.c
    651 
    652 libcfa_a-math.obj: math.c
    653 @am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-math.obj -MD -MP -MF $(DEPDIR)/libcfa_a-math.Tpo -c -o libcfa_a-math.obj `if test -f 'math.c'; then $(CYGPATH_W) 'math.c'; else $(CYGPATH_W) '$(srcdir)/math.c'; fi`
    654 @am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-math.Tpo $(DEPDIR)/libcfa_a-math.Po
    655 @AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='math.c' object='libcfa_a-math.obj' libtool=no @AMDEPBACKSLASH@
    656 @AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    657 @am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-math.obj `if test -f 'math.c'; then $(CYGPATH_W) 'math.c'; else $(CYGPATH_W) '$(srcdir)/math.c'; fi`
    658 
    659 libcfa_a-iostream.o: iostream.c
    660 @am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-iostream.o -MD -MP -MF $(DEPDIR)/libcfa_a-iostream.Tpo -c -o libcfa_a-iostream.o `test -f 'iostream.c' || echo '$(srcdir)/'`iostream.c
    661 @am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-iostream.Tpo $(DEPDIR)/libcfa_a-iostream.Po
    662 @AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='iostream.c' object='libcfa_a-iostream.o' libtool=no @AMDEPBACKSLASH@
    663 @AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    664 @am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-iostream.o `test -f 'iostream.c' || echo '$(srcdir)/'`iostream.c
    665 
    666 libcfa_a-iostream.obj: iostream.c
    667 @am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-iostream.obj -MD -MP -MF $(DEPDIR)/libcfa_a-iostream.Tpo -c -o libcfa_a-iostream.obj `if test -f 'iostream.c'; then $(CYGPATH_W) 'iostream.c'; else $(CYGPATH_W) '$(srcdir)/iostream.c'; fi`
    668 @am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-iostream.Tpo $(DEPDIR)/libcfa_a-iostream.Po
    669 @AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='iostream.c' object='libcfa_a-iostream.obj' libtool=no @AMDEPBACKSLASH@
    670 @AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    671 @am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-iostream.obj `if test -f 'iostream.c'; then $(CYGPATH_W) 'iostream.c'; else $(CYGPATH_W) '$(srcdir)/iostream.c'; fi`
    672 
    673 libcfa_a-fstream.o: fstream.c
    674 @am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-fstream.o -MD -MP -MF $(DEPDIR)/libcfa_a-fstream.Tpo -c -o libcfa_a-fstream.o `test -f 'fstream.c' || echo '$(srcdir)/'`fstream.c
    675 @am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-fstream.Tpo $(DEPDIR)/libcfa_a-fstream.Po
    676 @AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='fstream.c' object='libcfa_a-fstream.o' libtool=no @AMDEPBACKSLASH@
    677 @AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    678 @am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-fstream.o `test -f 'fstream.c' || echo '$(srcdir)/'`fstream.c
    679 
    680 libcfa_a-fstream.obj: fstream.c
    681 @am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-fstream.obj -MD -MP -MF $(DEPDIR)/libcfa_a-fstream.Tpo -c -o libcfa_a-fstream.obj `if test -f 'fstream.c'; then $(CYGPATH_W) 'fstream.c'; else $(CYGPATH_W) '$(srcdir)/fstream.c'; fi`
    682 @am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-fstream.Tpo $(DEPDIR)/libcfa_a-fstream.Po
    683 @AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='fstream.c' object='libcfa_a-fstream.obj' libtool=no @AMDEPBACKSLASH@
    684 @AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    685 @am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-fstream.obj `if test -f 'fstream.c'; then $(CYGPATH_W) 'fstream.c'; else $(CYGPATH_W) '$(srcdir)/fstream.c'; fi`
    686 
    687 libcfa_a-iterator.o: iterator.c
    688 @am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-iterator.o -MD -MP -MF $(DEPDIR)/libcfa_a-iterator.Tpo -c -o libcfa_a-iterator.o `test -f 'iterator.c' || echo '$(srcdir)/'`iterator.c
    689 @am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-iterator.Tpo $(DEPDIR)/libcfa_a-iterator.Po
    690 @AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='iterator.c' object='libcfa_a-iterator.o' libtool=no @AMDEPBACKSLASH@
    691 @AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    692 @am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-iterator.o `test -f 'iterator.c' || echo '$(srcdir)/'`iterator.c
    693 
    694 libcfa_a-iterator.obj: iterator.c
    695 @am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-iterator.obj -MD -MP -MF $(DEPDIR)/libcfa_a-iterator.Tpo -c -o libcfa_a-iterator.obj `if test -f 'iterator.c'; then $(CYGPATH_W) 'iterator.c'; else $(CYGPATH_W) '$(srcdir)/iterator.c'; fi`
    696 @am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-iterator.Tpo $(DEPDIR)/libcfa_a-iterator.Po
    697 @AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='iterator.c' object='libcfa_a-iterator.obj' libtool=no @AMDEPBACKSLASH@
    698 @AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    699 @am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-iterator.obj `if test -f 'iterator.c'; then $(CYGPATH_W) 'iterator.c'; else $(CYGPATH_W) '$(srcdir)/iterator.c'; fi`
    700 
    701 libcfa_a-rational.o: rational.c
    702 @am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-rational.o -MD -MP -MF $(DEPDIR)/libcfa_a-rational.Tpo -c -o libcfa_a-rational.o `test -f 'rational.c' || echo '$(srcdir)/'`rational.c
    703 @am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-rational.Tpo $(DEPDIR)/libcfa_a-rational.Po
    704 @AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='rational.c' object='libcfa_a-rational.o' libtool=no @AMDEPBACKSLASH@
    705 @AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    706 @am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-rational.o `test -f 'rational.c' || echo '$(srcdir)/'`rational.c
    707 
    708 libcfa_a-rational.obj: rational.c
    709 @am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-rational.obj -MD -MP -MF $(DEPDIR)/libcfa_a-rational.Tpo -c -o libcfa_a-rational.obj `if test -f 'rational.c'; then $(CYGPATH_W) 'rational.c'; else $(CYGPATH_W) '$(srcdir)/rational.c'; fi`
    710 @am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-rational.Tpo $(DEPDIR)/libcfa_a-rational.Po
    711 @AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='rational.c' object='libcfa_a-rational.obj' libtool=no @AMDEPBACKSLASH@
    712 @AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    713 @am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-rational.obj `if test -f 'rational.c'; then $(CYGPATH_W) 'rational.c'; else $(CYGPATH_W) '$(srcdir)/rational.c'; fi`
    714 
    715 libcfa_a-assert.o: assert.c
    716 @am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-assert.o -MD -MP -MF $(DEPDIR)/libcfa_a-assert.Tpo -c -o libcfa_a-assert.o `test -f 'assert.c' || echo '$(srcdir)/'`assert.c
    717 @am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-assert.Tpo $(DEPDIR)/libcfa_a-assert.Po
    718 @AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='assert.c' object='libcfa_a-assert.o' libtool=no @AMDEPBACKSLASH@
    719 @AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    720 @am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-assert.o `test -f 'assert.c' || echo '$(srcdir)/'`assert.c
    721 
    722 libcfa_a-assert.obj: assert.c
    723 @am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-assert.obj -MD -MP -MF $(DEPDIR)/libcfa_a-assert.Tpo -c -o libcfa_a-assert.obj `if test -f 'assert.c'; then $(CYGPATH_W) 'assert.c'; else $(CYGPATH_W) '$(srcdir)/assert.c'; fi`
    724 @am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-assert.Tpo $(DEPDIR)/libcfa_a-assert.Po
    725 @AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='assert.c' object='libcfa_a-assert.obj' libtool=no @AMDEPBACKSLASH@
    726 @AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    727 @am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-assert.obj `if test -f 'assert.c'; then $(CYGPATH_W) 'assert.c'; else $(CYGPATH_W) '$(srcdir)/assert.c'; fi`
    728 
    729 containers/libcfa_a-vector.o: containers/vector.c
    730 @am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT containers/libcfa_a-vector.o -MD -MP -MF containers/$(DEPDIR)/libcfa_a-vector.Tpo -c -o containers/libcfa_a-vector.o `test -f 'containers/vector.c' || echo '$(srcdir)/'`containers/vector.c
    731 @am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) containers/$(DEPDIR)/libcfa_a-vector.Tpo containers/$(DEPDIR)/libcfa_a-vector.Po
    732 @AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='containers/vector.c' object='containers/libcfa_a-vector.o' libtool=no @AMDEPBACKSLASH@
    733 @AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    734 @am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o containers/libcfa_a-vector.o `test -f 'containers/vector.c' || echo '$(srcdir)/'`containers/vector.c
    735 
    736 containers/libcfa_a-vector.obj: containers/vector.c
    737 @am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT containers/libcfa_a-vector.obj -MD -MP -MF containers/$(DEPDIR)/libcfa_a-vector.Tpo -c -o containers/libcfa_a-vector.obj `if test -f 'containers/vector.c'; then $(CYGPATH_W) 'containers/vector.c'; else $(CYGPATH_W) '$(srcdir)/containers/vector.c'; fi`
    738 @am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) containers/$(DEPDIR)/libcfa_a-vector.Tpo containers/$(DEPDIR)/libcfa_a-vector.Po
    739 @AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='containers/vector.c' object='containers/libcfa_a-vector.obj' libtool=no @AMDEPBACKSLASH@
    740 @AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    741 @am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o containers/libcfa_a-vector.obj `if test -f 'containers/vector.c'; then $(CYGPATH_W) 'containers/vector.c'; else $(CYGPATH_W) '$(srcdir)/containers/vector.c'; fi`
    742 
    743 concurrency/libcfa_a-threads.o: concurrency/threads.c
    744 @am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT concurrency/libcfa_a-threads.o -MD -MP -MF concurrency/$(DEPDIR)/libcfa_a-threads.Tpo -c -o concurrency/libcfa_a-threads.o `test -f 'concurrency/threads.c' || echo '$(srcdir)/'`concurrency/threads.c
    745 @am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) concurrency/$(DEPDIR)/libcfa_a-threads.Tpo concurrency/$(DEPDIR)/libcfa_a-threads.Po
    746 @AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='concurrency/threads.c' object='concurrency/libcfa_a-threads.o' libtool=no @AMDEPBACKSLASH@
    747 @AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    748 @am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o concurrency/libcfa_a-threads.o `test -f 'concurrency/threads.c' || echo '$(srcdir)/'`concurrency/threads.c
    749 
    750 concurrency/libcfa_a-threads.obj: concurrency/threads.c
    751 @am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT concurrency/libcfa_a-threads.obj -MD -MP -MF concurrency/$(DEPDIR)/libcfa_a-threads.Tpo -c -o concurrency/libcfa_a-threads.obj `if test -f 'concurrency/threads.c'; then $(CYGPATH_W) 'concurrency/threads.c'; else $(CYGPATH_W) '$(srcdir)/concurrency/threads.c'; fi`
    752 @am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) concurrency/$(DEPDIR)/libcfa_a-threads.Tpo concurrency/$(DEPDIR)/libcfa_a-threads.Po
    753 @AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='concurrency/threads.c' object='concurrency/libcfa_a-threads.obj' libtool=no @AMDEPBACKSLASH@
    754 @AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    755 @am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o concurrency/libcfa_a-threads.obj `if test -f 'concurrency/threads.c'; then $(CYGPATH_W) 'concurrency/threads.c'; else $(CYGPATH_W) '$(srcdir)/concurrency/threads.c'; fi`
    756 
    757 concurrency/libcfa_a-invoke.obj: concurrency/invoke.c
    758 @am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT concurrency/libcfa_a-invoke.obj -MD -MP -MF concurrency/$(DEPDIR)/libcfa_a-invoke.Tpo -c -o concurrency/libcfa_a-invoke.obj `if test -f 'concurrency/invoke.c'; then $(CYGPATH_W) 'concurrency/invoke.c'; else $(CYGPATH_W) '$(srcdir)/concurrency/invoke.c'; fi`
    759 @am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) concurrency/$(DEPDIR)/libcfa_a-invoke.Tpo concurrency/$(DEPDIR)/libcfa_a-invoke.Po
    760 @AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='concurrency/invoke.c' object='concurrency/libcfa_a-invoke.obj' libtool=no @AMDEPBACKSLASH@
    761 @AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    762 @am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o concurrency/libcfa_a-invoke.obj `if test -f 'concurrency/invoke.c'; then $(CYGPATH_W) 'concurrency/invoke.c'; else $(CYGPATH_W) '$(srcdir)/concurrency/invoke.c'; fi`
     351install-cfalibDATA: $(cfalib_DATA)
     352        @$(NORMAL_INSTALL)
     353        test -z "$(cfalibdir)" || $(MKDIR_P) "$(DESTDIR)$(cfalibdir)"
     354        @list='$(cfalib_DATA)'; test -n "$(cfalibdir)" || list=; \
     355        for p in $$list; do \
     356          if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
     357          echo "$$d$$p"; \
     358        done | $(am__base_list) | \
     359        while read files; do \
     360          echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(cfalibdir)'"; \
     361          $(INSTALL_DATA) $$files "$(DESTDIR)$(cfalibdir)" || exit $$?; \
     362        done
     363
     364uninstall-cfalibDATA:
     365        @$(NORMAL_UNINSTALL)
     366        @list='$(cfalib_DATA)'; test -n "$(cfalibdir)" || list=; \
     367        files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
     368        dir='$(DESTDIR)$(cfalibdir)'; $(am__uninstall_files_from_dir)
    763369install-nobase_includeHEADERS: $(nobase_include_HEADERS)
    764370        @$(NORMAL_INSTALL)
     
    867473check-am: all-am
    868474check: check-am
    869 all-am: Makefile $(LIBRARIES) $(HEADERS)
     475all-am: Makefile $(LIBRARIES) $(DATA) $(HEADERS)
    870476installdirs:
    871         for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)"; do \
     477        for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(cfalibdir)" "$(DESTDIR)$(includedir)"; do \
    872478          test -z "$$dir" || $(MKDIR_P) "$$dir"; \
    873479        done
     
    899505        -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
    900506        -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
    901         -rm -f concurrency/$(DEPDIR)/$(am__dirstamp)
    902         -rm -f concurrency/$(am__dirstamp)
    903507        -rm -f containers/$(DEPDIR)/$(am__dirstamp)
    904508        -rm -f containers/$(am__dirstamp)
     
    907511        @echo "This command is intended for maintainers to use"
    908512        @echo "it deletes files that may require special tools to rebuild."
     513        -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
    909514clean: clean-am
    910515
     
    912517
    913518distclean: distclean-am
    914         -rm -rf ./$(DEPDIR) concurrency/$(DEPDIR) containers/$(DEPDIR)
     519        -rm -rf ./$(DEPDIR) containers/$(DEPDIR)
    915520        -rm -f Makefile
    916521distclean-am: clean-am distclean-compile distclean-generic \
     
    929534info-am:
    930535
    931 install-data-am: install-nobase_includeHEADERS
     536install-data-am: install-cfalibDATA install-nobase_includeHEADERS
    932537
    933538install-dvi: install-dvi-am
     
    958563
    959564maintainer-clean: maintainer-clean-am
    960         -rm -rf ./$(DEPDIR) concurrency/$(DEPDIR) containers/$(DEPDIR)
     565        -rm -rf ./$(DEPDIR) containers/$(DEPDIR)
    961566        -rm -f Makefile
    962567maintainer-clean-am: distclean-am maintainer-clean-generic \
     
    975580ps-am:
    976581
    977 uninstall-am: uninstall-libLIBRARIES uninstall-nobase_includeHEADERS
     582uninstall-am: uninstall-cfalibDATA uninstall-libLIBRARIES \
     583        uninstall-nobase_includeHEADERS
    978584
    979585.MAKE: install-am install-strip
     
    982588        clean-libLIBRARIES ctags distclean distclean-compile \
    983589        distclean-generic distclean-tags distdir dvi dvi-am html \
    984         html-am info info-am install install-am install-data \
    985         install-data-am install-dvi install-dvi-am install-exec \
    986         install-exec-am install-html install-html-am install-info \
    987         install-info-am install-libLIBRARIES install-man \
     590        html-am info info-am install install-am install-cfalibDATA \
     591        install-data install-data-am install-dvi install-dvi-am \
     592        install-exec install-exec-am install-html install-html-am \
     593        install-info install-info-am install-libLIBRARIES install-man \
    988594        install-nobase_includeHEADERS install-pdf install-pdf-am \
    989595        install-ps install-ps-am install-strip installcheck \
     
    991597        maintainer-clean-generic maintainer-clean-local mostlyclean \
    992598        mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \
    993         tags uninstall uninstall-am uninstall-libLIBRARIES \
    994         uninstall-nobase_includeHEADERS
    995 
    996 
    997 libcfa_a-libcfa-prelude.o : libcfa-prelude.c
    998          ${AM_V_GEN}@BACKEND_CC@ @CFA_FLAGS@ -O2 -c -o $@ $<
    999 
    1000 libcfa_d_a-libcfa-prelude.o : libcfa-prelude.c
    1001          ${AM_V_GEN}@BACKEND_CC@ @CFA_FLAGS@ -D__CFA_DEBUG__ -O0 -c -o $@ $<
     599        tags uninstall uninstall-am uninstall-cfalibDATA \
     600        uninstall-libLIBRARIES uninstall-nobase_includeHEADERS
     601
     602
     603# create extra forward types/declarations to reduce inclusion of library files
     604extras.cf : extras.regx extras.c
     605        ${AM_V_GEN}@BACKEND_CC@ @CFA_FLAGS@ -E ${srcdir}/extras.c | grep -f extras.regx > ${srcdir}/extras.cf
     606
     607# create forward declarations for gcc builtins
     608builtins.cf : builtins.c
     609        ${AM_V_GEN}if [ -e $< ] ; then \
     610                @BACKEND_CC@ -E -P $^ | sed -e "/targetm/s/.*//" -e "/_Decimal/s/.*//" -e "s/void (const char \*)0();//" -e "s/\"//g" -e "s/\(__builtin_\) /\1/" > $@ ; \
     611        fi
     612
     613builtins.c : builtins.def prototypes.awk
     614        ${AM_V_GEN}if [ -e $< ] ; then \
     615                @BACKEND_CC@ -E prototypes.c | awk -f prototypes.awk > $@ ; \
     616        fi
     617
     618builtins.def :
     619
     620prototypes.awk :
     621
     622#--------------------------------------------------
     623
     624libcfa-prelude.c : ${srcdir}/prelude.cf ${srcdir}/extras.cf ${srcdir}/builtins.cf
     625        ${AM_V_GEN}${abs_top_srcdir}/src/driver/cfa-cpp -l ${srcdir}/prelude.cf $@  # use src/cfa-cpp as not in lib until after install
     626
     627libcfa-prelude.o : libcfa-prelude.c
     628         ${AM_V_GEN}@BACKEND_CC@ @CFA_FLAGS@ -c -o $@ $<
    1002629
    1003630# extensionless header files are overridden by -o flag in default makerule => explicitly override default rule to silently do nothing
     
    1005632        @true
    1006633
    1007 concurrency/libcfa_a-invoke.o : concurrency/invoke.c
    1008         ${AM_V_CC}@BACKEND_CC@ -DHAVE_CONFIG_H -I. -I../.. -O2 ${EXTRA_FLAGS} -c -o $@ $<
    1009 
    1010 concurrency/libcfa_d_a-invoke.o : concurrency/invoke.c
    1011         ${AM_V_CC}@BACKEND_CC@ -DHAVE_CONFIG_H -I. -I../.. -D__CFA_DEBUG__ -O0 ${EXTRA_FLAGS} -c -o $@ $<
    1012 
    1013634${libobjs} : ${abs_top_srcdir}/src/driver/cfa-cpp ${cfalib_DATA} # add dependency to cfa-cpp so all libraries are rebuilt with new translator
    1014635
  • src/libcfa/stdhdr/assert.h

    r66f8528 r5802a4f  
    1414//
    1515
    16 #ifdef __CFORALL__
    1716extern "C" {
    18 #endif //__CFORALL__
    19 
    20 // has internal check for multiple expansion
    21 #include_next <assert.h>
    22 
    23 #ifdef __CFORALL__
     17#include_next <assert.h>                                                                // has internal check for multiple expansion
    2418} // extern "C"
    25 #endif //__CFORALL__
    2619
    2720// Local Variables: //
  • src/main.cc

    r66f8528 r5802a4f  
    1010// Created On       : Fri May 15 23:12:02 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Dec 14 14:35:54 2016
    13 // Update Count     : 436
     12// Last Modified On : Sun Oct 30 10:11:38 2016
     13// Update Count     : 435
    1414//
    1515
     
    178178                if ( ! nopreludep ) {                                                   // include gcc builtins
    179179                        // -l is for initial build ONLY and builtins.cf is not in the lib directory so access it here.
    180                         FILE * builtins = fopen( libcfap | treep ? "../prelude/builtins.cf" : CFA_LIBDIR "/builtins.cf", "r" );
     180                        FILE * builtins = fopen( libcfap | treep ? "builtins.cf" : CFA_LIBDIR "/builtins.cf", "r" );
    181181                        assertf( builtins, "cannot open builtins.cf\n" );
    182182                        parse( builtins, LinkageSpec::Compiler );
    183183
    184184                        // read the extra prelude in, if not generating the cfa library
    185                         FILE * extras = fopen( libcfap | treep ? "../prelude/extras.cf" : CFA_LIBDIR "/extras.cf", "r" );
     185                        FILE * extras = fopen( libcfap | treep ? "extras.cf" : CFA_LIBDIR "/extras.cf", "r" );
    186186                        assertf( extras, "cannot open extras.cf\n" );
    187187                        parse( extras, LinkageSpec::C );
     
    189189                        if ( ! libcfap ) {
    190190                                // read the prelude in, if not generating the cfa library
    191                                 FILE * prelude = fopen( treep ? "../prelude/prelude.cf" : CFA_LIBDIR "/prelude.cf", "r" );
     191                                FILE * prelude = fopen( treep ? "prelude.cf" : CFA_LIBDIR "/prelude.cf", "r" );
    192192                                assertf( prelude, "cannot open prelude.cf\n" );
    193193                                parse( prelude, LinkageSpec::Intrinsic );
  • src/tests/.expect/32/declarationSpecifier.txt

    r66f8528 r5802a4f  
    2020static inline void ___constructor__F_P13s__anonymous013s__anonymous0_autogen___1(struct __anonymous0 *___dst__P13s__anonymous0_1, struct __anonymous0 ___src__13s__anonymous0_1);
    2121static inline void ___destructor__F_P13s__anonymous0_autogen___1(struct __anonymous0 *___dst__P13s__anonymous0_1);
    22 static inline void ___constructor__F_P13s__anonymous0_autogen___1(struct __anonymous0 *___dst__P13s__anonymous0_1){
    23     ((void)((*((int *)(&(*___dst__P13s__anonymous0_1).__i__i_1)))) /* ?{} */);
    24 }
    25 static inline void ___constructor__F_P13s__anonymous013s__anonymous0_autogen___1(struct __anonymous0 *___dst__P13s__anonymous0_1, struct __anonymous0 ___src__13s__anonymous0_1){
    26     ((void)((*((int *)(&(*___dst__P13s__anonymous0_1).__i__i_1)))=___src__13s__anonymous0_1.__i__i_1) /* ?{} */);
    27 }
    28 static inline void ___destructor__F_P13s__anonymous0_autogen___1(struct __anonymous0 *___dst__P13s__anonymous0_1){
    29     ((void)((*((int *)(&(*___dst__P13s__anonymous0_1).__i__i_1)))) /* ^?{} */);
    30 }
    3122static inline struct __anonymous0 ___operator_assign__F13s__anonymous0_P13s__anonymous013s__anonymous0_autogen___1(struct __anonymous0 *___dst__P13s__anonymous0_1, struct __anonymous0 ___src__13s__anonymous0_1){
    3223    ((void)((*___dst__P13s__anonymous0_1).__i__i_1=___src__13s__anonymous0_1.__i__i_1));
    3324    return ((struct __anonymous0 )___src__13s__anonymous0_1);
     25}
     26static inline void ___constructor__F_P13s__anonymous0_autogen___1(struct __anonymous0 *___dst__P13s__anonymous0_1){
     27    ((void)((*((int *)(&(*___dst__P13s__anonymous0_1).__i__i_1)))) /* ?{} */);
     28}
     29static inline void ___constructor__F_P13s__anonymous013s__anonymous0_autogen___1(struct __anonymous0 *___dst__P13s__anonymous0_1, struct __anonymous0 ___src__13s__anonymous0_1){
     30    ((void)((*((int *)(&(*___dst__P13s__anonymous0_1).__i__i_1)))=___src__13s__anonymous0_1.__i__i_1) /* ?{} */);
     31}
     32static inline void ___destructor__F_P13s__anonymous0_autogen___1(struct __anonymous0 *___dst__P13s__anonymous0_1){
     33    ((void)((*((int *)(&(*___dst__P13s__anonymous0_1).__i__i_1)))) /* ^?{} */);
    3434}
    3535static inline void ___constructor__F_P13s__anonymous0i_autogen___1(struct __anonymous0 *___dst__P13s__anonymous0_1, int __i__i_1){
     
    4444static inline void ___constructor__F_P13s__anonymous113s__anonymous1_autogen___1(struct __anonymous1 *___dst__P13s__anonymous1_1, struct __anonymous1 ___src__13s__anonymous1_1);
    4545static inline void ___destructor__F_P13s__anonymous1_autogen___1(struct __anonymous1 *___dst__P13s__anonymous1_1);
    46 static inline void ___constructor__F_P13s__anonymous1_autogen___1(struct __anonymous1 *___dst__P13s__anonymous1_1){
    47     ((void)((*((int *)(&(*___dst__P13s__anonymous1_1).__i__i_1)))) /* ?{} */);
    48 }
    49 static inline void ___constructor__F_P13s__anonymous113s__anonymous1_autogen___1(struct __anonymous1 *___dst__P13s__anonymous1_1, struct __anonymous1 ___src__13s__anonymous1_1){
    50     ((void)((*((int *)(&(*___dst__P13s__anonymous1_1).__i__i_1)))=___src__13s__anonymous1_1.__i__i_1) /* ?{} */);
    51 }
    52 static inline void ___destructor__F_P13s__anonymous1_autogen___1(struct __anonymous1 *___dst__P13s__anonymous1_1){
    53     ((void)((*((int *)(&(*___dst__P13s__anonymous1_1).__i__i_1)))) /* ^?{} */);
    54 }
    5546static inline struct __anonymous1 ___operator_assign__F13s__anonymous1_P13s__anonymous113s__anonymous1_autogen___1(struct __anonymous1 *___dst__P13s__anonymous1_1, struct __anonymous1 ___src__13s__anonymous1_1){
    5647    ((void)((*___dst__P13s__anonymous1_1).__i__i_1=___src__13s__anonymous1_1.__i__i_1));
    5748    return ((struct __anonymous1 )___src__13s__anonymous1_1);
     49}
     50static inline void ___constructor__F_P13s__anonymous1_autogen___1(struct __anonymous1 *___dst__P13s__anonymous1_1){
     51    ((void)((*((int *)(&(*___dst__P13s__anonymous1_1).__i__i_1)))) /* ?{} */);
     52}
     53static inline void ___constructor__F_P13s__anonymous113s__anonymous1_autogen___1(struct __anonymous1 *___dst__P13s__anonymous1_1, struct __anonymous1 ___src__13s__anonymous1_1){
     54    ((void)((*((int *)(&(*___dst__P13s__anonymous1_1).__i__i_1)))=___src__13s__anonymous1_1.__i__i_1) /* ?{} */);
     55}
     56static inline void ___destructor__F_P13s__anonymous1_autogen___1(struct __anonymous1 *___dst__P13s__anonymous1_1){
     57    ((void)((*((int *)(&(*___dst__P13s__anonymous1_1).__i__i_1)))) /* ^?{} */);
    5858}
    5959static inline void ___constructor__F_P13s__anonymous1i_autogen___1(struct __anonymous1 *___dst__P13s__anonymous1_1, int __i__i_1){
     
    6868static inline void ___constructor__F_P13s__anonymous213s__anonymous2_autogen___1(struct __anonymous2 *___dst__P13s__anonymous2_1, struct __anonymous2 ___src__13s__anonymous2_1);
    6969static inline void ___destructor__F_P13s__anonymous2_autogen___1(struct __anonymous2 *___dst__P13s__anonymous2_1);
    70 static inline void ___constructor__F_P13s__anonymous2_autogen___1(struct __anonymous2 *___dst__P13s__anonymous2_1){
    71     ((void)((*((int *)(&(*___dst__P13s__anonymous2_1).__i__i_1)))) /* ?{} */);
    72 }
    73 static inline void ___constructor__F_P13s__anonymous213s__anonymous2_autogen___1(struct __anonymous2 *___dst__P13s__anonymous2_1, struct __anonymous2 ___src__13s__anonymous2_1){
    74     ((void)((*((int *)(&(*___dst__P13s__anonymous2_1).__i__i_1)))=___src__13s__anonymous2_1.__i__i_1) /* ?{} */);
    75 }
    76 static inline void ___destructor__F_P13s__anonymous2_autogen___1(struct __anonymous2 *___dst__P13s__anonymous2_1){
    77     ((void)((*((int *)(&(*___dst__P13s__anonymous2_1).__i__i_1)))) /* ^?{} */);
    78 }
    7970static inline struct __anonymous2 ___operator_assign__F13s__anonymous2_P13s__anonymous213s__anonymous2_autogen___1(struct __anonymous2 *___dst__P13s__anonymous2_1, struct __anonymous2 ___src__13s__anonymous2_1){
    8071    ((void)((*___dst__P13s__anonymous2_1).__i__i_1=___src__13s__anonymous2_1.__i__i_1));
    8172    return ((struct __anonymous2 )___src__13s__anonymous2_1);
     73}
     74static inline void ___constructor__F_P13s__anonymous2_autogen___1(struct __anonymous2 *___dst__P13s__anonymous2_1){
     75    ((void)((*((int *)(&(*___dst__P13s__anonymous2_1).__i__i_1)))) /* ?{} */);
     76}
     77static inline void ___constructor__F_P13s__anonymous213s__anonymous2_autogen___1(struct __anonymous2 *___dst__P13s__anonymous2_1, struct __anonymous2 ___src__13s__anonymous2_1){
     78    ((void)((*((int *)(&(*___dst__P13s__anonymous2_1).__i__i_1)))=___src__13s__anonymous2_1.__i__i_1) /* ?{} */);
     79}
     80static inline void ___destructor__F_P13s__anonymous2_autogen___1(struct __anonymous2 *___dst__P13s__anonymous2_1){
     81    ((void)((*((int *)(&(*___dst__P13s__anonymous2_1).__i__i_1)))) /* ^?{} */);
    8282}
    8383static inline void ___constructor__F_P13s__anonymous2i_autogen___1(struct __anonymous2 *___dst__P13s__anonymous2_1, int __i__i_1){
     
    9292static inline void ___constructor__F_P13s__anonymous313s__anonymous3_autogen___1(struct __anonymous3 *___dst__P13s__anonymous3_1, struct __anonymous3 ___src__13s__anonymous3_1);
    9393static inline void ___destructor__F_P13s__anonymous3_autogen___1(struct __anonymous3 *___dst__P13s__anonymous3_1);
    94 static inline void ___constructor__F_P13s__anonymous3_autogen___1(struct __anonymous3 *___dst__P13s__anonymous3_1){
    95     ((void)((*((int *)(&(*___dst__P13s__anonymous3_1).__i__i_1)))) /* ?{} */);
    96 }
    97 static inline void ___constructor__F_P13s__anonymous313s__anonymous3_autogen___1(struct __anonymous3 *___dst__P13s__anonymous3_1, struct __anonymous3 ___src__13s__anonymous3_1){
    98     ((void)((*((int *)(&(*___dst__P13s__anonymous3_1).__i__i_1)))=___src__13s__anonymous3_1.__i__i_1) /* ?{} */);
    99 }
    100 static inline void ___destructor__F_P13s__anonymous3_autogen___1(struct __anonymous3 *___dst__P13s__anonymous3_1){
    101     ((void)((*((int *)(&(*___dst__P13s__anonymous3_1).__i__i_1)))) /* ^?{} */);
    102 }
    10394static inline struct __anonymous3 ___operator_assign__F13s__anonymous3_P13s__anonymous313s__anonymous3_autogen___1(struct __anonymous3 *___dst__P13s__anonymous3_1, struct __anonymous3 ___src__13s__anonymous3_1){
    10495    ((void)((*___dst__P13s__anonymous3_1).__i__i_1=___src__13s__anonymous3_1.__i__i_1));
    10596    return ((struct __anonymous3 )___src__13s__anonymous3_1);
     97}
     98static inline void ___constructor__F_P13s__anonymous3_autogen___1(struct __anonymous3 *___dst__P13s__anonymous3_1){
     99    ((void)((*((int *)(&(*___dst__P13s__anonymous3_1).__i__i_1)))) /* ?{} */);
     100}
     101static inline void ___constructor__F_P13s__anonymous313s__anonymous3_autogen___1(struct __anonymous3 *___dst__P13s__anonymous3_1, struct __anonymous3 ___src__13s__anonymous3_1){
     102    ((void)((*((int *)(&(*___dst__P13s__anonymous3_1).__i__i_1)))=___src__13s__anonymous3_1.__i__i_1) /* ?{} */);
     103}
     104static inline void ___destructor__F_P13s__anonymous3_autogen___1(struct __anonymous3 *___dst__P13s__anonymous3_1){
     105    ((void)((*((int *)(&(*___dst__P13s__anonymous3_1).__i__i_1)))) /* ^?{} */);
    106106}
    107107static inline void ___constructor__F_P13s__anonymous3i_autogen___1(struct __anonymous3 *___dst__P13s__anonymous3_1, int __i__i_1){
     
    116116static inline void ___constructor__F_P13s__anonymous413s__anonymous4_autogen___1(struct __anonymous4 *___dst__P13s__anonymous4_1, struct __anonymous4 ___src__13s__anonymous4_1);
    117117static inline void ___destructor__F_P13s__anonymous4_autogen___1(struct __anonymous4 *___dst__P13s__anonymous4_1);
    118 static inline void ___constructor__F_P13s__anonymous4_autogen___1(struct __anonymous4 *___dst__P13s__anonymous4_1){
    119     ((void)((*((int *)(&(*___dst__P13s__anonymous4_1).__i__i_1)))) /* ?{} */);
    120 }
    121 static inline void ___constructor__F_P13s__anonymous413s__anonymous4_autogen___1(struct __anonymous4 *___dst__P13s__anonymous4_1, struct __anonymous4 ___src__13s__anonymous4_1){
    122     ((void)((*((int *)(&(*___dst__P13s__anonymous4_1).__i__i_1)))=___src__13s__anonymous4_1.__i__i_1) /* ?{} */);
    123 }
    124 static inline void ___destructor__F_P13s__anonymous4_autogen___1(struct __anonymous4 *___dst__P13s__anonymous4_1){
    125     ((void)((*((int *)(&(*___dst__P13s__anonymous4_1).__i__i_1)))) /* ^?{} */);
    126 }
    127118static inline struct __anonymous4 ___operator_assign__F13s__anonymous4_P13s__anonymous413s__anonymous4_autogen___1(struct __anonymous4 *___dst__P13s__anonymous4_1, struct __anonymous4 ___src__13s__anonymous4_1){
    128119    ((void)((*___dst__P13s__anonymous4_1).__i__i_1=___src__13s__anonymous4_1.__i__i_1));
    129120    return ((struct __anonymous4 )___src__13s__anonymous4_1);
     121}
     122static inline void ___constructor__F_P13s__anonymous4_autogen___1(struct __anonymous4 *___dst__P13s__anonymous4_1){
     123    ((void)((*((int *)(&(*___dst__P13s__anonymous4_1).__i__i_1)))) /* ?{} */);
     124}
     125static inline void ___constructor__F_P13s__anonymous413s__anonymous4_autogen___1(struct __anonymous4 *___dst__P13s__anonymous4_1, struct __anonymous4 ___src__13s__anonymous4_1){
     126    ((void)((*((int *)(&(*___dst__P13s__anonymous4_1).__i__i_1)))=___src__13s__anonymous4_1.__i__i_1) /* ?{} */);
     127}
     128static inline void ___destructor__F_P13s__anonymous4_autogen___1(struct __anonymous4 *___dst__P13s__anonymous4_1){
     129    ((void)((*((int *)(&(*___dst__P13s__anonymous4_1).__i__i_1)))) /* ^?{} */);
    130130}
    131131static inline void ___constructor__F_P13s__anonymous4i_autogen___1(struct __anonymous4 *___dst__P13s__anonymous4_1, int __i__i_1){
     
    140140static inline void ___constructor__F_P13s__anonymous513s__anonymous5_autogen___1(struct __anonymous5 *___dst__P13s__anonymous5_1, struct __anonymous5 ___src__13s__anonymous5_1);
    141141static inline void ___destructor__F_P13s__anonymous5_autogen___1(struct __anonymous5 *___dst__P13s__anonymous5_1);
    142 static inline void ___constructor__F_P13s__anonymous5_autogen___1(struct __anonymous5 *___dst__P13s__anonymous5_1){
    143     ((void)((*((int *)(&(*___dst__P13s__anonymous5_1).__i__i_1)))) /* ?{} */);
    144 }
    145 static inline void ___constructor__F_P13s__anonymous513s__anonymous5_autogen___1(struct __anonymous5 *___dst__P13s__anonymous5_1, struct __anonymous5 ___src__13s__anonymous5_1){
    146     ((void)((*((int *)(&(*___dst__P13s__anonymous5_1).__i__i_1)))=___src__13s__anonymous5_1.__i__i_1) /* ?{} */);
    147 }
    148 static inline void ___destructor__F_P13s__anonymous5_autogen___1(struct __anonymous5 *___dst__P13s__anonymous5_1){
    149     ((void)((*((int *)(&(*___dst__P13s__anonymous5_1).__i__i_1)))) /* ^?{} */);
    150 }
    151142static inline struct __anonymous5 ___operator_assign__F13s__anonymous5_P13s__anonymous513s__anonymous5_autogen___1(struct __anonymous5 *___dst__P13s__anonymous5_1, struct __anonymous5 ___src__13s__anonymous5_1){
    152143    ((void)((*___dst__P13s__anonymous5_1).__i__i_1=___src__13s__anonymous5_1.__i__i_1));
    153144    return ((struct __anonymous5 )___src__13s__anonymous5_1);
     145}
     146static inline void ___constructor__F_P13s__anonymous5_autogen___1(struct __anonymous5 *___dst__P13s__anonymous5_1){
     147    ((void)((*((int *)(&(*___dst__P13s__anonymous5_1).__i__i_1)))) /* ?{} */);
     148}
     149static inline void ___constructor__F_P13s__anonymous513s__anonymous5_autogen___1(struct __anonymous5 *___dst__P13s__anonymous5_1, struct __anonymous5 ___src__13s__anonymous5_1){
     150    ((void)((*((int *)(&(*___dst__P13s__anonymous5_1).__i__i_1)))=___src__13s__anonymous5_1.__i__i_1) /* ?{} */);
     151}
     152static inline void ___destructor__F_P13s__anonymous5_autogen___1(struct __anonymous5 *___dst__P13s__anonymous5_1){
     153    ((void)((*((int *)(&(*___dst__P13s__anonymous5_1).__i__i_1)))) /* ^?{} */);
    154154}
    155155static inline void ___constructor__F_P13s__anonymous5i_autogen___1(struct __anonymous5 *___dst__P13s__anonymous5_1, int __i__i_1){
     
    164164static inline void ___constructor__F_P13s__anonymous613s__anonymous6_autogen___1(struct __anonymous6 *___dst__P13s__anonymous6_1, struct __anonymous6 ___src__13s__anonymous6_1);
    165165static inline void ___destructor__F_P13s__anonymous6_autogen___1(struct __anonymous6 *___dst__P13s__anonymous6_1);
    166 static inline void ___constructor__F_P13s__anonymous6_autogen___1(struct __anonymous6 *___dst__P13s__anonymous6_1){
    167     ((void)((*((int *)(&(*___dst__P13s__anonymous6_1).__i__i_1)))) /* ?{} */);
    168 }
    169 static inline void ___constructor__F_P13s__anonymous613s__anonymous6_autogen___1(struct __anonymous6 *___dst__P13s__anonymous6_1, struct __anonymous6 ___src__13s__anonymous6_1){
    170     ((void)((*((int *)(&(*___dst__P13s__anonymous6_1).__i__i_1)))=___src__13s__anonymous6_1.__i__i_1) /* ?{} */);
    171 }
    172 static inline void ___destructor__F_P13s__anonymous6_autogen___1(struct __anonymous6 *___dst__P13s__anonymous6_1){
    173     ((void)((*((int *)(&(*___dst__P13s__anonymous6_1).__i__i_1)))) /* ^?{} */);
    174 }
    175166static inline struct __anonymous6 ___operator_assign__F13s__anonymous6_P13s__anonymous613s__anonymous6_autogen___1(struct __anonymous6 *___dst__P13s__anonymous6_1, struct __anonymous6 ___src__13s__anonymous6_1){
    176167    ((void)((*___dst__P13s__anonymous6_1).__i__i_1=___src__13s__anonymous6_1.__i__i_1));
    177168    return ((struct __anonymous6 )___src__13s__anonymous6_1);
     169}
     170static inline void ___constructor__F_P13s__anonymous6_autogen___1(struct __anonymous6 *___dst__P13s__anonymous6_1){
     171    ((void)((*((int *)(&(*___dst__P13s__anonymous6_1).__i__i_1)))) /* ?{} */);
     172}
     173static inline void ___constructor__F_P13s__anonymous613s__anonymous6_autogen___1(struct __anonymous6 *___dst__P13s__anonymous6_1, struct __anonymous6 ___src__13s__anonymous6_1){
     174    ((void)((*((int *)(&(*___dst__P13s__anonymous6_1).__i__i_1)))=___src__13s__anonymous6_1.__i__i_1) /* ?{} */);
     175}
     176static inline void ___destructor__F_P13s__anonymous6_autogen___1(struct __anonymous6 *___dst__P13s__anonymous6_1){
     177    ((void)((*((int *)(&(*___dst__P13s__anonymous6_1).__i__i_1)))) /* ^?{} */);
    178178}
    179179static inline void ___constructor__F_P13s__anonymous6i_autogen___1(struct __anonymous6 *___dst__P13s__anonymous6_1, int __i__i_1){
     
    188188static inline void ___constructor__F_P13s__anonymous713s__anonymous7_autogen___1(struct __anonymous7 *___dst__P13s__anonymous7_1, struct __anonymous7 ___src__13s__anonymous7_1);
    189189static inline void ___destructor__F_P13s__anonymous7_autogen___1(struct __anonymous7 *___dst__P13s__anonymous7_1);
    190 static inline void ___constructor__F_P13s__anonymous7_autogen___1(struct __anonymous7 *___dst__P13s__anonymous7_1){
    191     ((void)((*((int *)(&(*___dst__P13s__anonymous7_1).__i__i_1)))) /* ?{} */);
    192 }
    193 static inline void ___constructor__F_P13s__anonymous713s__anonymous7_autogen___1(struct __anonymous7 *___dst__P13s__anonymous7_1, struct __anonymous7 ___src__13s__anonymous7_1){
    194     ((void)((*((int *)(&(*___dst__P13s__anonymous7_1).__i__i_1)))=___src__13s__anonymous7_1.__i__i_1) /* ?{} */);
    195 }
    196 static inline void ___destructor__F_P13s__anonymous7_autogen___1(struct __anonymous7 *___dst__P13s__anonymous7_1){
    197     ((void)((*((int *)(&(*___dst__P13s__anonymous7_1).__i__i_1)))) /* ^?{} */);
    198 }
    199190static inline struct __anonymous7 ___operator_assign__F13s__anonymous7_P13s__anonymous713s__anonymous7_autogen___1(struct __anonymous7 *___dst__P13s__anonymous7_1, struct __anonymous7 ___src__13s__anonymous7_1){
    200191    ((void)((*___dst__P13s__anonymous7_1).__i__i_1=___src__13s__anonymous7_1.__i__i_1));
    201192    return ((struct __anonymous7 )___src__13s__anonymous7_1);
     193}
     194static inline void ___constructor__F_P13s__anonymous7_autogen___1(struct __anonymous7 *___dst__P13s__anonymous7_1){
     195    ((void)((*((int *)(&(*___dst__P13s__anonymous7_1).__i__i_1)))) /* ?{} */);
     196}
     197static inline void ___constructor__F_P13s__anonymous713s__anonymous7_autogen___1(struct __anonymous7 *___dst__P13s__anonymous7_1, struct __anonymous7 ___src__13s__anonymous7_1){
     198    ((void)((*((int *)(&(*___dst__P13s__anonymous7_1).__i__i_1)))=___src__13s__anonymous7_1.__i__i_1) /* ?{} */);
     199}
     200static inline void ___destructor__F_P13s__anonymous7_autogen___1(struct __anonymous7 *___dst__P13s__anonymous7_1){
     201    ((void)((*((int *)(&(*___dst__P13s__anonymous7_1).__i__i_1)))) /* ^?{} */);
    202202}
    203203static inline void ___constructor__F_P13s__anonymous7i_autogen___1(struct __anonymous7 *___dst__P13s__anonymous7_1, int __i__i_1){
     
    220220static inline void ___constructor__F_P13s__anonymous813s__anonymous8_autogen___1(struct __anonymous8 *___dst__P13s__anonymous8_1, struct __anonymous8 ___src__13s__anonymous8_1);
    221221static inline void ___destructor__F_P13s__anonymous8_autogen___1(struct __anonymous8 *___dst__P13s__anonymous8_1);
    222 static inline void ___constructor__F_P13s__anonymous8_autogen___1(struct __anonymous8 *___dst__P13s__anonymous8_1){
    223     ((void)((*((short *)(&(*___dst__P13s__anonymous8_1).__i__s_1)))) /* ?{} */);
    224 }
    225 static inline void ___constructor__F_P13s__anonymous813s__anonymous8_autogen___1(struct __anonymous8 *___dst__P13s__anonymous8_1, struct __anonymous8 ___src__13s__anonymous8_1){
    226     ((void)((*((short *)(&(*___dst__P13s__anonymous8_1).__i__s_1)))=___src__13s__anonymous8_1.__i__s_1) /* ?{} */);
    227 }
    228 static inline void ___destructor__F_P13s__anonymous8_autogen___1(struct __anonymous8 *___dst__P13s__anonymous8_1){
    229     ((void)((*((short *)(&(*___dst__P13s__anonymous8_1).__i__s_1)))) /* ^?{} */);
    230 }
    231222static inline struct __anonymous8 ___operator_assign__F13s__anonymous8_P13s__anonymous813s__anonymous8_autogen___1(struct __anonymous8 *___dst__P13s__anonymous8_1, struct __anonymous8 ___src__13s__anonymous8_1){
    232223    ((void)((*___dst__P13s__anonymous8_1).__i__s_1=___src__13s__anonymous8_1.__i__s_1));
    233224    return ((struct __anonymous8 )___src__13s__anonymous8_1);
     225}
     226static inline void ___constructor__F_P13s__anonymous8_autogen___1(struct __anonymous8 *___dst__P13s__anonymous8_1){
     227    ((void)((*((short *)(&(*___dst__P13s__anonymous8_1).__i__s_1)))) /* ?{} */);
     228}
     229static inline void ___constructor__F_P13s__anonymous813s__anonymous8_autogen___1(struct __anonymous8 *___dst__P13s__anonymous8_1, struct __anonymous8 ___src__13s__anonymous8_1){
     230    ((void)((*((short *)(&(*___dst__P13s__anonymous8_1).__i__s_1)))=___src__13s__anonymous8_1.__i__s_1) /* ?{} */);
     231}
     232static inline void ___destructor__F_P13s__anonymous8_autogen___1(struct __anonymous8 *___dst__P13s__anonymous8_1){
     233    ((void)((*((short *)(&(*___dst__P13s__anonymous8_1).__i__s_1)))) /* ^?{} */);
    234234}
    235235static inline void ___constructor__F_P13s__anonymous8s_autogen___1(struct __anonymous8 *___dst__P13s__anonymous8_1, short __i__s_1){
     
    244244static inline void ___constructor__F_P13s__anonymous913s__anonymous9_autogen___1(struct __anonymous9 *___dst__P13s__anonymous9_1, struct __anonymous9 ___src__13s__anonymous9_1);
    245245static inline void ___destructor__F_P13s__anonymous9_autogen___1(struct __anonymous9 *___dst__P13s__anonymous9_1);
    246 static inline void ___constructor__F_P13s__anonymous9_autogen___1(struct __anonymous9 *___dst__P13s__anonymous9_1){
    247     ((void)((*((short *)(&(*___dst__P13s__anonymous9_1).__i__s_1)))) /* ?{} */);
    248 }
    249 static inline void ___constructor__F_P13s__anonymous913s__anonymous9_autogen___1(struct __anonymous9 *___dst__P13s__anonymous9_1, struct __anonymous9 ___src__13s__anonymous9_1){
    250     ((void)((*((short *)(&(*___dst__P13s__anonymous9_1).__i__s_1)))=___src__13s__anonymous9_1.__i__s_1) /* ?{} */);
    251 }
    252 static inline void ___destructor__F_P13s__anonymous9_autogen___1(struct __anonymous9 *___dst__P13s__anonymous9_1){
    253     ((void)((*((short *)(&(*___dst__P13s__anonymous9_1).__i__s_1)))) /* ^?{} */);
    254 }
    255246static inline struct __anonymous9 ___operator_assign__F13s__anonymous9_P13s__anonymous913s__anonymous9_autogen___1(struct __anonymous9 *___dst__P13s__anonymous9_1, struct __anonymous9 ___src__13s__anonymous9_1){
    256247    ((void)((*___dst__P13s__anonymous9_1).__i__s_1=___src__13s__anonymous9_1.__i__s_1));
    257248    return ((struct __anonymous9 )___src__13s__anonymous9_1);
     249}
     250static inline void ___constructor__F_P13s__anonymous9_autogen___1(struct __anonymous9 *___dst__P13s__anonymous9_1){
     251    ((void)((*((short *)(&(*___dst__P13s__anonymous9_1).__i__s_1)))) /* ?{} */);
     252}
     253static inline void ___constructor__F_P13s__anonymous913s__anonymous9_autogen___1(struct __anonymous9 *___dst__P13s__anonymous9_1, struct __anonymous9 ___src__13s__anonymous9_1){
     254    ((void)((*((short *)(&(*___dst__P13s__anonymous9_1).__i__s_1)))=___src__13s__anonymous9_1.__i__s_1) /* ?{} */);
     255}
     256static inline void ___destructor__F_P13s__anonymous9_autogen___1(struct __anonymous9 *___dst__P13s__anonymous9_1){
     257    ((void)((*((short *)(&(*___dst__P13s__anonymous9_1).__i__s_1)))) /* ^?{} */);
    258258}
    259259static inline void ___constructor__F_P13s__anonymous9s_autogen___1(struct __anonymous9 *___dst__P13s__anonymous9_1, short __i__s_1){
     
    268268static inline void ___constructor__F_P14s__anonymous1014s__anonymous10_autogen___1(struct __anonymous10 *___dst__P14s__anonymous10_1, struct __anonymous10 ___src__14s__anonymous10_1);
    269269static inline void ___destructor__F_P14s__anonymous10_autogen___1(struct __anonymous10 *___dst__P14s__anonymous10_1);
    270 static inline void ___constructor__F_P14s__anonymous10_autogen___1(struct __anonymous10 *___dst__P14s__anonymous10_1){
    271     ((void)((*((short *)(&(*___dst__P14s__anonymous10_1).__i__s_1)))) /* ?{} */);
    272 }
    273 static inline void ___constructor__F_P14s__anonymous1014s__anonymous10_autogen___1(struct __anonymous10 *___dst__P14s__anonymous10_1, struct __anonymous10 ___src__14s__anonymous10_1){
    274     ((void)((*((short *)(&(*___dst__P14s__anonymous10_1).__i__s_1)))=___src__14s__anonymous10_1.__i__s_1) /* ?{} */);
    275 }
    276 static inline void ___destructor__F_P14s__anonymous10_autogen___1(struct __anonymous10 *___dst__P14s__anonymous10_1){
    277     ((void)((*((short *)(&(*___dst__P14s__anonymous10_1).__i__s_1)))) /* ^?{} */);
    278 }
    279270static inline struct __anonymous10 ___operator_assign__F14s__anonymous10_P14s__anonymous1014s__anonymous10_autogen___1(struct __anonymous10 *___dst__P14s__anonymous10_1, struct __anonymous10 ___src__14s__anonymous10_1){
    280271    ((void)((*___dst__P14s__anonymous10_1).__i__s_1=___src__14s__anonymous10_1.__i__s_1));
    281272    return ((struct __anonymous10 )___src__14s__anonymous10_1);
     273}
     274static inline void ___constructor__F_P14s__anonymous10_autogen___1(struct __anonymous10 *___dst__P14s__anonymous10_1){
     275    ((void)((*((short *)(&(*___dst__P14s__anonymous10_1).__i__s_1)))) /* ?{} */);
     276}
     277static inline void ___constructor__F_P14s__anonymous1014s__anonymous10_autogen___1(struct __anonymous10 *___dst__P14s__anonymous10_1, struct __anonymous10 ___src__14s__anonymous10_1){
     278    ((void)((*((short *)(&(*___dst__P14s__anonymous10_1).__i__s_1)))=___src__14s__anonymous10_1.__i__s_1) /* ?{} */);
     279}
     280static inline void ___destructor__F_P14s__anonymous10_autogen___1(struct __anonymous10 *___dst__P14s__anonymous10_1){
     281    ((void)((*((short *)(&(*___dst__P14s__anonymous10_1).__i__s_1)))) /* ^?{} */);
    282282}
    283283static inline void ___constructor__F_P14s__anonymous10s_autogen___1(struct __anonymous10 *___dst__P14s__anonymous10_1, short __i__s_1){
     
    292292static inline void ___constructor__F_P14s__anonymous1114s__anonymous11_autogen___1(struct __anonymous11 *___dst__P14s__anonymous11_1, struct __anonymous11 ___src__14s__anonymous11_1);
    293293static inline void ___destructor__F_P14s__anonymous11_autogen___1(struct __anonymous11 *___dst__P14s__anonymous11_1);
    294 static inline void ___constructor__F_P14s__anonymous11_autogen___1(struct __anonymous11 *___dst__P14s__anonymous11_1){
    295     ((void)((*((short *)(&(*___dst__P14s__anonymous11_1).__i__s_1)))) /* ?{} */);
    296 }
    297 static inline void ___constructor__F_P14s__anonymous1114s__anonymous11_autogen___1(struct __anonymous11 *___dst__P14s__anonymous11_1, struct __anonymous11 ___src__14s__anonymous11_1){
    298     ((void)((*((short *)(&(*___dst__P14s__anonymous11_1).__i__s_1)))=___src__14s__anonymous11_1.__i__s_1) /* ?{} */);
    299 }
    300 static inline void ___destructor__F_P14s__anonymous11_autogen___1(struct __anonymous11 *___dst__P14s__anonymous11_1){
    301     ((void)((*((short *)(&(*___dst__P14s__anonymous11_1).__i__s_1)))) /* ^?{} */);
    302 }
    303294static inline struct __anonymous11 ___operator_assign__F14s__anonymous11_P14s__anonymous1114s__anonymous11_autogen___1(struct __anonymous11 *___dst__P14s__anonymous11_1, struct __anonymous11 ___src__14s__anonymous11_1){
    304295    ((void)((*___dst__P14s__anonymous11_1).__i__s_1=___src__14s__anonymous11_1.__i__s_1));
    305296    return ((struct __anonymous11 )___src__14s__anonymous11_1);
     297}
     298static inline void ___constructor__F_P14s__anonymous11_autogen___1(struct __anonymous11 *___dst__P14s__anonymous11_1){
     299    ((void)((*((short *)(&(*___dst__P14s__anonymous11_1).__i__s_1)))) /* ?{} */);
     300}
     301static inline void ___constructor__F_P14s__anonymous1114s__anonymous11_autogen___1(struct __anonymous11 *___dst__P14s__anonymous11_1, struct __anonymous11 ___src__14s__anonymous11_1){
     302    ((void)((*((short *)(&(*___dst__P14s__anonymous11_1).__i__s_1)))=___src__14s__anonymous11_1.__i__s_1) /* ?{} */);
     303}
     304static inline void ___destructor__F_P14s__anonymous11_autogen___1(struct __anonymous11 *___dst__P14s__anonymous11_1){
     305    ((void)((*((short *)(&(*___dst__P14s__anonymous11_1).__i__s_1)))) /* ^?{} */);
    306306}
    307307static inline void ___constructor__F_P14s__anonymous11s_autogen___1(struct __anonymous11 *___dst__P14s__anonymous11_1, short __i__s_1){
     
    316316static inline void ___constructor__F_P14s__anonymous1214s__anonymous12_autogen___1(struct __anonymous12 *___dst__P14s__anonymous12_1, struct __anonymous12 ___src__14s__anonymous12_1);
    317317static inline void ___destructor__F_P14s__anonymous12_autogen___1(struct __anonymous12 *___dst__P14s__anonymous12_1);
    318 static inline void ___constructor__F_P14s__anonymous12_autogen___1(struct __anonymous12 *___dst__P14s__anonymous12_1){
    319     ((void)((*((short *)(&(*___dst__P14s__anonymous12_1).__i__s_1)))) /* ?{} */);
    320 }
    321 static inline void ___constructor__F_P14s__anonymous1214s__anonymous12_autogen___1(struct __anonymous12 *___dst__P14s__anonymous12_1, struct __anonymous12 ___src__14s__anonymous12_1){
    322     ((void)((*((short *)(&(*___dst__P14s__anonymous12_1).__i__s_1)))=___src__14s__anonymous12_1.__i__s_1) /* ?{} */);
    323 }
    324 static inline void ___destructor__F_P14s__anonymous12_autogen___1(struct __anonymous12 *___dst__P14s__anonymous12_1){
    325     ((void)((*((short *)(&(*___dst__P14s__anonymous12_1).__i__s_1)))) /* ^?{} */);
    326 }
    327318static inline struct __anonymous12 ___operator_assign__F14s__anonymous12_P14s__anonymous1214s__anonymous12_autogen___1(struct __anonymous12 *___dst__P14s__anonymous12_1, struct __anonymous12 ___src__14s__anonymous12_1){
    328319    ((void)((*___dst__P14s__anonymous12_1).__i__s_1=___src__14s__anonymous12_1.__i__s_1));
    329320    return ((struct __anonymous12 )___src__14s__anonymous12_1);
     321}
     322static inline void ___constructor__F_P14s__anonymous12_autogen___1(struct __anonymous12 *___dst__P14s__anonymous12_1){
     323    ((void)((*((short *)(&(*___dst__P14s__anonymous12_1).__i__s_1)))) /* ?{} */);
     324}
     325static inline void ___constructor__F_P14s__anonymous1214s__anonymous12_autogen___1(struct __anonymous12 *___dst__P14s__anonymous12_1, struct __anonymous12 ___src__14s__anonymous12_1){
     326    ((void)((*((short *)(&(*___dst__P14s__anonymous12_1).__i__s_1)))=___src__14s__anonymous12_1.__i__s_1) /* ?{} */);
     327}
     328static inline void ___destructor__F_P14s__anonymous12_autogen___1(struct __anonymous12 *___dst__P14s__anonymous12_1){
     329    ((void)((*((short *)(&(*___dst__P14s__anonymous12_1).__i__s_1)))) /* ^?{} */);
    330330}
    331331static inline void ___constructor__F_P14s__anonymous12s_autogen___1(struct __anonymous12 *___dst__P14s__anonymous12_1, short __i__s_1){
     
    340340static inline void ___constructor__F_P14s__anonymous1314s__anonymous13_autogen___1(struct __anonymous13 *___dst__P14s__anonymous13_1, struct __anonymous13 ___src__14s__anonymous13_1);
    341341static inline void ___destructor__F_P14s__anonymous13_autogen___1(struct __anonymous13 *___dst__P14s__anonymous13_1);
    342 static inline void ___constructor__F_P14s__anonymous13_autogen___1(struct __anonymous13 *___dst__P14s__anonymous13_1){
    343     ((void)((*((short *)(&(*___dst__P14s__anonymous13_1).__i__s_1)))) /* ?{} */);
    344 }
    345 static inline void ___constructor__F_P14s__anonymous1314s__anonymous13_autogen___1(struct __anonymous13 *___dst__P14s__anonymous13_1, struct __anonymous13 ___src__14s__anonymous13_1){
    346     ((void)((*((short *)(&(*___dst__P14s__anonymous13_1).__i__s_1)))=___src__14s__anonymous13_1.__i__s_1) /* ?{} */);
    347 }
    348 static inline void ___destructor__F_P14s__anonymous13_autogen___1(struct __anonymous13 *___dst__P14s__anonymous13_1){
    349     ((void)((*((short *)(&(*___dst__P14s__anonymous13_1).__i__s_1)))) /* ^?{} */);
    350 }
    351342static inline struct __anonymous13 ___operator_assign__F14s__anonymous13_P14s__anonymous1314s__anonymous13_autogen___1(struct __anonymous13 *___dst__P14s__anonymous13_1, struct __anonymous13 ___src__14s__anonymous13_1){
    352343    ((void)((*___dst__P14s__anonymous13_1).__i__s_1=___src__14s__anonymous13_1.__i__s_1));
    353344    return ((struct __anonymous13 )___src__14s__anonymous13_1);
     345}
     346static inline void ___constructor__F_P14s__anonymous13_autogen___1(struct __anonymous13 *___dst__P14s__anonymous13_1){
     347    ((void)((*((short *)(&(*___dst__P14s__anonymous13_1).__i__s_1)))) /* ?{} */);
     348}
     349static inline void ___constructor__F_P14s__anonymous1314s__anonymous13_autogen___1(struct __anonymous13 *___dst__P14s__anonymous13_1, struct __anonymous13 ___src__14s__anonymous13_1){
     350    ((void)((*((short *)(&(*___dst__P14s__anonymous13_1).__i__s_1)))=___src__14s__anonymous13_1.__i__s_1) /* ?{} */);
     351}
     352static inline void ___destructor__F_P14s__anonymous13_autogen___1(struct __anonymous13 *___dst__P14s__anonymous13_1){
     353    ((void)((*((short *)(&(*___dst__P14s__anonymous13_1).__i__s_1)))) /* ^?{} */);
    354354}
    355355static inline void ___constructor__F_P14s__anonymous13s_autogen___1(struct __anonymous13 *___dst__P14s__anonymous13_1, short __i__s_1){
     
    364364static inline void ___constructor__F_P14s__anonymous1414s__anonymous14_autogen___1(struct __anonymous14 *___dst__P14s__anonymous14_1, struct __anonymous14 ___src__14s__anonymous14_1);
    365365static inline void ___destructor__F_P14s__anonymous14_autogen___1(struct __anonymous14 *___dst__P14s__anonymous14_1);
    366 static inline void ___constructor__F_P14s__anonymous14_autogen___1(struct __anonymous14 *___dst__P14s__anonymous14_1){
    367     ((void)((*((short *)(&(*___dst__P14s__anonymous14_1).__i__s_1)))) /* ?{} */);
    368 }
    369 static inline void ___constructor__F_P14s__anonymous1414s__anonymous14_autogen___1(struct __anonymous14 *___dst__P14s__anonymous14_1, struct __anonymous14 ___src__14s__anonymous14_1){
    370     ((void)((*((short *)(&(*___dst__P14s__anonymous14_1).__i__s_1)))=___src__14s__anonymous14_1.__i__s_1) /* ?{} */);
    371 }
    372 static inline void ___destructor__F_P14s__anonymous14_autogen___1(struct __anonymous14 *___dst__P14s__anonymous14_1){
    373     ((void)((*((short *)(&(*___dst__P14s__anonymous14_1).__i__s_1)))) /* ^?{} */);
    374 }
    375366static inline struct __anonymous14 ___operator_assign__F14s__anonymous14_P14s__anonymous1414s__anonymous14_autogen___1(struct __anonymous14 *___dst__P14s__anonymous14_1, struct __anonymous14 ___src__14s__anonymous14_1){
    376367    ((void)((*___dst__P14s__anonymous14_1).__i__s_1=___src__14s__anonymous14_1.__i__s_1));
    377368    return ((struct __anonymous14 )___src__14s__anonymous14_1);
     369}
     370static inline void ___constructor__F_P14s__anonymous14_autogen___1(struct __anonymous14 *___dst__P14s__anonymous14_1){
     371    ((void)((*((short *)(&(*___dst__P14s__anonymous14_1).__i__s_1)))) /* ?{} */);
     372}
     373static inline void ___constructor__F_P14s__anonymous1414s__anonymous14_autogen___1(struct __anonymous14 *___dst__P14s__anonymous14_1, struct __anonymous14 ___src__14s__anonymous14_1){
     374    ((void)((*((short *)(&(*___dst__P14s__anonymous14_1).__i__s_1)))=___src__14s__anonymous14_1.__i__s_1) /* ?{} */);
     375}
     376static inline void ___destructor__F_P14s__anonymous14_autogen___1(struct __anonymous14 *___dst__P14s__anonymous14_1){
     377    ((void)((*((short *)(&(*___dst__P14s__anonymous14_1).__i__s_1)))) /* ^?{} */);
    378378}
    379379static inline void ___constructor__F_P14s__anonymous14s_autogen___1(struct __anonymous14 *___dst__P14s__anonymous14_1, short __i__s_1){
     
    388388static inline void ___constructor__F_P14s__anonymous1514s__anonymous15_autogen___1(struct __anonymous15 *___dst__P14s__anonymous15_1, struct __anonymous15 ___src__14s__anonymous15_1);
    389389static inline void ___destructor__F_P14s__anonymous15_autogen___1(struct __anonymous15 *___dst__P14s__anonymous15_1);
    390 static inline void ___constructor__F_P14s__anonymous15_autogen___1(struct __anonymous15 *___dst__P14s__anonymous15_1){
    391     ((void)((*((short *)(&(*___dst__P14s__anonymous15_1).__i__s_1)))) /* ?{} */);
    392 }
    393 static inline void ___constructor__F_P14s__anonymous1514s__anonymous15_autogen___1(struct __anonymous15 *___dst__P14s__anonymous15_1, struct __anonymous15 ___src__14s__anonymous15_1){
    394     ((void)((*((short *)(&(*___dst__P14s__anonymous15_1).__i__s_1)))=___src__14s__anonymous15_1.__i__s_1) /* ?{} */);
    395 }
    396 static inline void ___destructor__F_P14s__anonymous15_autogen___1(struct __anonymous15 *___dst__P14s__anonymous15_1){
    397     ((void)((*((short *)(&(*___dst__P14s__anonymous15_1).__i__s_1)))) /* ^?{} */);
    398 }
    399390static inline struct __anonymous15 ___operator_assign__F14s__anonymous15_P14s__anonymous1514s__anonymous15_autogen___1(struct __anonymous15 *___dst__P14s__anonymous15_1, struct __anonymous15 ___src__14s__anonymous15_1){
    400391    ((void)((*___dst__P14s__anonymous15_1).__i__s_1=___src__14s__anonymous15_1.__i__s_1));
    401392    return ((struct __anonymous15 )___src__14s__anonymous15_1);
     393}
     394static inline void ___constructor__F_P14s__anonymous15_autogen___1(struct __anonymous15 *___dst__P14s__anonymous15_1){
     395    ((void)((*((short *)(&(*___dst__P14s__anonymous15_1).__i__s_1)))) /* ?{} */);
     396}
     397static inline void ___constructor__F_P14s__anonymous1514s__anonymous15_autogen___1(struct __anonymous15 *___dst__P14s__anonymous15_1, struct __anonymous15 ___src__14s__anonymous15_1){
     398    ((void)((*((short *)(&(*___dst__P14s__anonymous15_1).__i__s_1)))=___src__14s__anonymous15_1.__i__s_1) /* ?{} */);
     399}
     400static inline void ___destructor__F_P14s__anonymous15_autogen___1(struct __anonymous15 *___dst__P14s__anonymous15_1){
     401    ((void)((*((short *)(&(*___dst__P14s__anonymous15_1).__i__s_1)))) /* ^?{} */);
    402402}
    403403static inline void ___constructor__F_P14s__anonymous15s_autogen___1(struct __anonymous15 *___dst__P14s__anonymous15_1, short __i__s_1){
     
    428428static inline void ___constructor__F_P14s__anonymous1614s__anonymous16_autogen___1(struct __anonymous16 *___dst__P14s__anonymous16_1, struct __anonymous16 ___src__14s__anonymous16_1);
    429429static inline void ___destructor__F_P14s__anonymous16_autogen___1(struct __anonymous16 *___dst__P14s__anonymous16_1);
    430 static inline void ___constructor__F_P14s__anonymous16_autogen___1(struct __anonymous16 *___dst__P14s__anonymous16_1){
    431     ((void)((*((int *)(&(*___dst__P14s__anonymous16_1).__i__i_1)))) /* ?{} */);
    432 }
    433 static inline void ___constructor__F_P14s__anonymous1614s__anonymous16_autogen___1(struct __anonymous16 *___dst__P14s__anonymous16_1, struct __anonymous16 ___src__14s__anonymous16_1){
    434     ((void)((*((int *)(&(*___dst__P14s__anonymous16_1).__i__i_1)))=___src__14s__anonymous16_1.__i__i_1) /* ?{} */);
    435 }
    436 static inline void ___destructor__F_P14s__anonymous16_autogen___1(struct __anonymous16 *___dst__P14s__anonymous16_1){
    437     ((void)((*((int *)(&(*___dst__P14s__anonymous16_1).__i__i_1)))) /* ^?{} */);
    438 }
    439430static inline struct __anonymous16 ___operator_assign__F14s__anonymous16_P14s__anonymous1614s__anonymous16_autogen___1(struct __anonymous16 *___dst__P14s__anonymous16_1, struct __anonymous16 ___src__14s__anonymous16_1){
    440431    ((void)((*___dst__P14s__anonymous16_1).__i__i_1=___src__14s__anonymous16_1.__i__i_1));
    441432    return ((struct __anonymous16 )___src__14s__anonymous16_1);
     433}
     434static inline void ___constructor__F_P14s__anonymous16_autogen___1(struct __anonymous16 *___dst__P14s__anonymous16_1){
     435    ((void)((*((int *)(&(*___dst__P14s__anonymous16_1).__i__i_1)))) /* ?{} */);
     436}
     437static inline void ___constructor__F_P14s__anonymous1614s__anonymous16_autogen___1(struct __anonymous16 *___dst__P14s__anonymous16_1, struct __anonymous16 ___src__14s__anonymous16_1){
     438    ((void)((*((int *)(&(*___dst__P14s__anonymous16_1).__i__i_1)))=___src__14s__anonymous16_1.__i__i_1) /* ?{} */);
     439}
     440static inline void ___destructor__F_P14s__anonymous16_autogen___1(struct __anonymous16 *___dst__P14s__anonymous16_1){
     441    ((void)((*((int *)(&(*___dst__P14s__anonymous16_1).__i__i_1)))) /* ^?{} */);
    442442}
    443443static inline void ___constructor__F_P14s__anonymous16i_autogen___1(struct __anonymous16 *___dst__P14s__anonymous16_1, int __i__i_1){
     
    452452static inline void ___constructor__F_P14s__anonymous1714s__anonymous17_autogen___1(struct __anonymous17 *___dst__P14s__anonymous17_1, struct __anonymous17 ___src__14s__anonymous17_1);
    453453static inline void ___destructor__F_P14s__anonymous17_autogen___1(struct __anonymous17 *___dst__P14s__anonymous17_1);
    454 static inline void ___constructor__F_P14s__anonymous17_autogen___1(struct __anonymous17 *___dst__P14s__anonymous17_1){
    455     ((void)((*((int *)(&(*___dst__P14s__anonymous17_1).__i__i_1)))) /* ?{} */);
    456 }
    457 static inline void ___constructor__F_P14s__anonymous1714s__anonymous17_autogen___1(struct __anonymous17 *___dst__P14s__anonymous17_1, struct __anonymous17 ___src__14s__anonymous17_1){
    458     ((void)((*((int *)(&(*___dst__P14s__anonymous17_1).__i__i_1)))=___src__14s__anonymous17_1.__i__i_1) /* ?{} */);
    459 }
    460 static inline void ___destructor__F_P14s__anonymous17_autogen___1(struct __anonymous17 *___dst__P14s__anonymous17_1){
    461     ((void)((*((int *)(&(*___dst__P14s__anonymous17_1).__i__i_1)))) /* ^?{} */);
    462 }
    463454static inline struct __anonymous17 ___operator_assign__F14s__anonymous17_P14s__anonymous1714s__anonymous17_autogen___1(struct __anonymous17 *___dst__P14s__anonymous17_1, struct __anonymous17 ___src__14s__anonymous17_1){
    464455    ((void)((*___dst__P14s__anonymous17_1).__i__i_1=___src__14s__anonymous17_1.__i__i_1));
    465456    return ((struct __anonymous17 )___src__14s__anonymous17_1);
     457}
     458static inline void ___constructor__F_P14s__anonymous17_autogen___1(struct __anonymous17 *___dst__P14s__anonymous17_1){
     459    ((void)((*((int *)(&(*___dst__P14s__anonymous17_1).__i__i_1)))) /* ?{} */);
     460}
     461static inline void ___constructor__F_P14s__anonymous1714s__anonymous17_autogen___1(struct __anonymous17 *___dst__P14s__anonymous17_1, struct __anonymous17 ___src__14s__anonymous17_1){
     462    ((void)((*((int *)(&(*___dst__P14s__anonymous17_1).__i__i_1)))=___src__14s__anonymous17_1.__i__i_1) /* ?{} */);
     463}
     464static inline void ___destructor__F_P14s__anonymous17_autogen___1(struct __anonymous17 *___dst__P14s__anonymous17_1){
     465    ((void)((*((int *)(&(*___dst__P14s__anonymous17_1).__i__i_1)))) /* ^?{} */);
    466466}
    467467static inline void ___constructor__F_P14s__anonymous17i_autogen___1(struct __anonymous17 *___dst__P14s__anonymous17_1, int __i__i_1){
     
    476476static inline void ___constructor__F_P14s__anonymous1814s__anonymous18_autogen___1(struct __anonymous18 *___dst__P14s__anonymous18_1, struct __anonymous18 ___src__14s__anonymous18_1);
    477477static inline void ___destructor__F_P14s__anonymous18_autogen___1(struct __anonymous18 *___dst__P14s__anonymous18_1);
    478 static inline void ___constructor__F_P14s__anonymous18_autogen___1(struct __anonymous18 *___dst__P14s__anonymous18_1){
    479     ((void)((*((int *)(&(*___dst__P14s__anonymous18_1).__i__i_1)))) /* ?{} */);
    480 }
    481 static inline void ___constructor__F_P14s__anonymous1814s__anonymous18_autogen___1(struct __anonymous18 *___dst__P14s__anonymous18_1, struct __anonymous18 ___src__14s__anonymous18_1){
    482     ((void)((*((int *)(&(*___dst__P14s__anonymous18_1).__i__i_1)))=___src__14s__anonymous18_1.__i__i_1) /* ?{} */);
    483 }
    484 static inline void ___destructor__F_P14s__anonymous18_autogen___1(struct __anonymous18 *___dst__P14s__anonymous18_1){
    485     ((void)((*((int *)(&(*___dst__P14s__anonymous18_1).__i__i_1)))) /* ^?{} */);
    486 }
    487478static inline struct __anonymous18 ___operator_assign__F14s__anonymous18_P14s__anonymous1814s__anonymous18_autogen___1(struct __anonymous18 *___dst__P14s__anonymous18_1, struct __anonymous18 ___src__14s__anonymous18_1){
    488479    ((void)((*___dst__P14s__anonymous18_1).__i__i_1=___src__14s__anonymous18_1.__i__i_1));
    489480    return ((struct __anonymous18 )___src__14s__anonymous18_1);
     481}
     482static inline void ___constructor__F_P14s__anonymous18_autogen___1(struct __anonymous18 *___dst__P14s__anonymous18_1){
     483    ((void)((*((int *)(&(*___dst__P14s__anonymous18_1).__i__i_1)))) /* ?{} */);
     484}
     485static inline void ___constructor__F_P14s__anonymous1814s__anonymous18_autogen___1(struct __anonymous18 *___dst__P14s__anonymous18_1, struct __anonymous18 ___src__14s__anonymous18_1){
     486    ((void)((*((int *)(&(*___dst__P14s__anonymous18_1).__i__i_1)))=___src__14s__anonymous18_1.__i__i_1) /* ?{} */);
     487}
     488static inline void ___destructor__F_P14s__anonymous18_autogen___1(struct __anonymous18 *___dst__P14s__anonymous18_1){
     489    ((void)((*((int *)(&(*___dst__P14s__anonymous18_1).__i__i_1)))) /* ^?{} */);
    490490}
    491491static inline void ___constructor__F_P14s__anonymous18i_autogen___1(struct __anonymous18 *___dst__P14s__anonymous18_1, int __i__i_1){
     
    500500static inline void ___constructor__F_P14s__anonymous1914s__anonymous19_autogen___1(struct __anonymous19 *___dst__P14s__anonymous19_1, struct __anonymous19 ___src__14s__anonymous19_1);
    501501static inline void ___destructor__F_P14s__anonymous19_autogen___1(struct __anonymous19 *___dst__P14s__anonymous19_1);
    502 static inline void ___constructor__F_P14s__anonymous19_autogen___1(struct __anonymous19 *___dst__P14s__anonymous19_1){
    503     ((void)((*((int *)(&(*___dst__P14s__anonymous19_1).__i__i_1)))) /* ?{} */);
    504 }
    505 static inline void ___constructor__F_P14s__anonymous1914s__anonymous19_autogen___1(struct __anonymous19 *___dst__P14s__anonymous19_1, struct __anonymous19 ___src__14s__anonymous19_1){
    506     ((void)((*((int *)(&(*___dst__P14s__anonymous19_1).__i__i_1)))=___src__14s__anonymous19_1.__i__i_1) /* ?{} */);
    507 }
    508 static inline void ___destructor__F_P14s__anonymous19_autogen___1(struct __anonymous19 *___dst__P14s__anonymous19_1){
    509     ((void)((*((int *)(&(*___dst__P14s__anonymous19_1).__i__i_1)))) /* ^?{} */);
    510 }
    511502static inline struct __anonymous19 ___operator_assign__F14s__anonymous19_P14s__anonymous1914s__anonymous19_autogen___1(struct __anonymous19 *___dst__P14s__anonymous19_1, struct __anonymous19 ___src__14s__anonymous19_1){
    512503    ((void)((*___dst__P14s__anonymous19_1).__i__i_1=___src__14s__anonymous19_1.__i__i_1));
    513504    return ((struct __anonymous19 )___src__14s__anonymous19_1);
     505}
     506static inline void ___constructor__F_P14s__anonymous19_autogen___1(struct __anonymous19 *___dst__P14s__anonymous19_1){
     507    ((void)((*((int *)(&(*___dst__P14s__anonymous19_1).__i__i_1)))) /* ?{} */);
     508}
     509static inline void ___constructor__F_P14s__anonymous1914s__anonymous19_autogen___1(struct __anonymous19 *___dst__P14s__anonymous19_1, struct __anonymous19 ___src__14s__anonymous19_1){
     510    ((void)((*((int *)(&(*___dst__P14s__anonymous19_1).__i__i_1)))=___src__14s__anonymous19_1.__i__i_1) /* ?{} */);
     511}
     512static inline void ___destructor__F_P14s__anonymous19_autogen___1(struct __anonymous19 *___dst__P14s__anonymous19_1){
     513    ((void)((*((int *)(&(*___dst__P14s__anonymous19_1).__i__i_1)))) /* ^?{} */);
    514514}
    515515static inline void ___constructor__F_P14s__anonymous19i_autogen___1(struct __anonymous19 *___dst__P14s__anonymous19_1, int __i__i_1){
     
    524524static inline void ___constructor__F_P14s__anonymous2014s__anonymous20_autogen___1(struct __anonymous20 *___dst__P14s__anonymous20_1, struct __anonymous20 ___src__14s__anonymous20_1);
    525525static inline void ___destructor__F_P14s__anonymous20_autogen___1(struct __anonymous20 *___dst__P14s__anonymous20_1);
    526 static inline void ___constructor__F_P14s__anonymous20_autogen___1(struct __anonymous20 *___dst__P14s__anonymous20_1){
    527     ((void)((*((int *)(&(*___dst__P14s__anonymous20_1).__i__i_1)))) /* ?{} */);
    528 }
    529 static inline void ___constructor__F_P14s__anonymous2014s__anonymous20_autogen___1(struct __anonymous20 *___dst__P14s__anonymous20_1, struct __anonymous20 ___src__14s__anonymous20_1){
    530     ((void)((*((int *)(&(*___dst__P14s__anonymous20_1).__i__i_1)))=___src__14s__anonymous20_1.__i__i_1) /* ?{} */);
    531 }
    532 static inline void ___destructor__F_P14s__anonymous20_autogen___1(struct __anonymous20 *___dst__P14s__anonymous20_1){
    533     ((void)((*((int *)(&(*___dst__P14s__anonymous20_1).__i__i_1)))) /* ^?{} */);
    534 }
    535526static inline struct __anonymous20 ___operator_assign__F14s__anonymous20_P14s__anonymous2014s__anonymous20_autogen___1(struct __anonymous20 *___dst__P14s__anonymous20_1, struct __anonymous20 ___src__14s__anonymous20_1){
    536527    ((void)((*___dst__P14s__anonymous20_1).__i__i_1=___src__14s__anonymous20_1.__i__i_1));
    537528    return ((struct __anonymous20 )___src__14s__anonymous20_1);
     529}
     530static inline void ___constructor__F_P14s__anonymous20_autogen___1(struct __anonymous20 *___dst__P14s__anonymous20_1){
     531    ((void)((*((int *)(&(*___dst__P14s__anonymous20_1).__i__i_1)))) /* ?{} */);
     532}
     533static inline void ___constructor__F_P14s__anonymous2014s__anonymous20_autogen___1(struct __anonymous20 *___dst__P14s__anonymous20_1, struct __anonymous20 ___src__14s__anonymous20_1){
     534    ((void)((*((int *)(&(*___dst__P14s__anonymous20_1).__i__i_1)))=___src__14s__anonymous20_1.__i__i_1) /* ?{} */);
     535}
     536static inline void ___destructor__F_P14s__anonymous20_autogen___1(struct __anonymous20 *___dst__P14s__anonymous20_1){
     537    ((void)((*((int *)(&(*___dst__P14s__anonymous20_1).__i__i_1)))) /* ^?{} */);
    538538}
    539539static inline void ___constructor__F_P14s__anonymous20i_autogen___1(struct __anonymous20 *___dst__P14s__anonymous20_1, int __i__i_1){
     
    548548static inline void ___constructor__F_P14s__anonymous2114s__anonymous21_autogen___1(struct __anonymous21 *___dst__P14s__anonymous21_1, struct __anonymous21 ___src__14s__anonymous21_1);
    549549static inline void ___destructor__F_P14s__anonymous21_autogen___1(struct __anonymous21 *___dst__P14s__anonymous21_1);
    550 static inline void ___constructor__F_P14s__anonymous21_autogen___1(struct __anonymous21 *___dst__P14s__anonymous21_1){
    551     ((void)((*((int *)(&(*___dst__P14s__anonymous21_1).__i__i_1)))) /* ?{} */);
    552 }
    553 static inline void ___constructor__F_P14s__anonymous2114s__anonymous21_autogen___1(struct __anonymous21 *___dst__P14s__anonymous21_1, struct __anonymous21 ___src__14s__anonymous21_1){
    554     ((void)((*((int *)(&(*___dst__P14s__anonymous21_1).__i__i_1)))=___src__14s__anonymous21_1.__i__i_1) /* ?{} */);
    555 }
    556 static inline void ___destructor__F_P14s__anonymous21_autogen___1(struct __anonymous21 *___dst__P14s__anonymous21_1){
    557     ((void)((*((int *)(&(*___dst__P14s__anonymous21_1).__i__i_1)))) /* ^?{} */);
    558 }
    559550static inline struct __anonymous21 ___operator_assign__F14s__anonymous21_P14s__anonymous2114s__anonymous21_autogen___1(struct __anonymous21 *___dst__P14s__anonymous21_1, struct __anonymous21 ___src__14s__anonymous21_1){
    560551    ((void)((*___dst__P14s__anonymous21_1).__i__i_1=___src__14s__anonymous21_1.__i__i_1));
    561552    return ((struct __anonymous21 )___src__14s__anonymous21_1);
     553}
     554static inline void ___constructor__F_P14s__anonymous21_autogen___1(struct __anonymous21 *___dst__P14s__anonymous21_1){
     555    ((void)((*((int *)(&(*___dst__P14s__anonymous21_1).__i__i_1)))) /* ?{} */);
     556}
     557static inline void ___constructor__F_P14s__anonymous2114s__anonymous21_autogen___1(struct __anonymous21 *___dst__P14s__anonymous21_1, struct __anonymous21 ___src__14s__anonymous21_1){
     558    ((void)((*((int *)(&(*___dst__P14s__anonymous21_1).__i__i_1)))=___src__14s__anonymous21_1.__i__i_1) /* ?{} */);
     559}
     560static inline void ___destructor__F_P14s__anonymous21_autogen___1(struct __anonymous21 *___dst__P14s__anonymous21_1){
     561    ((void)((*((int *)(&(*___dst__P14s__anonymous21_1).__i__i_1)))) /* ^?{} */);
    562562}
    563563static inline void ___constructor__F_P14s__anonymous21i_autogen___1(struct __anonymous21 *___dst__P14s__anonymous21_1, int __i__i_1){
     
    572572static inline void ___constructor__F_P14s__anonymous2214s__anonymous22_autogen___1(struct __anonymous22 *___dst__P14s__anonymous22_1, struct __anonymous22 ___src__14s__anonymous22_1);
    573573static inline void ___destructor__F_P14s__anonymous22_autogen___1(struct __anonymous22 *___dst__P14s__anonymous22_1);
    574 static inline void ___constructor__F_P14s__anonymous22_autogen___1(struct __anonymous22 *___dst__P14s__anonymous22_1){
    575     ((void)((*((int *)(&(*___dst__P14s__anonymous22_1).__i__i_1)))) /* ?{} */);
    576 }
    577 static inline void ___constructor__F_P14s__anonymous2214s__anonymous22_autogen___1(struct __anonymous22 *___dst__P14s__anonymous22_1, struct __anonymous22 ___src__14s__anonymous22_1){
    578     ((void)((*((int *)(&(*___dst__P14s__anonymous22_1).__i__i_1)))=___src__14s__anonymous22_1.__i__i_1) /* ?{} */);
    579 }
    580 static inline void ___destructor__F_P14s__anonymous22_autogen___1(struct __anonymous22 *___dst__P14s__anonymous22_1){
    581     ((void)((*((int *)(&(*___dst__P14s__anonymous22_1).__i__i_1)))) /* ^?{} */);
    582 }
    583574static inline struct __anonymous22 ___operator_assign__F14s__anonymous22_P14s__anonymous2214s__anonymous22_autogen___1(struct __anonymous22 *___dst__P14s__anonymous22_1, struct __anonymous22 ___src__14s__anonymous22_1){
    584575    ((void)((*___dst__P14s__anonymous22_1).__i__i_1=___src__14s__anonymous22_1.__i__i_1));
    585576    return ((struct __anonymous22 )___src__14s__anonymous22_1);
     577}
     578static inline void ___constructor__F_P14s__anonymous22_autogen___1(struct __anonymous22 *___dst__P14s__anonymous22_1){
     579    ((void)((*((int *)(&(*___dst__P14s__anonymous22_1).__i__i_1)))) /* ?{} */);
     580}
     581static inline void ___constructor__F_P14s__anonymous2214s__anonymous22_autogen___1(struct __anonymous22 *___dst__P14s__anonymous22_1, struct __anonymous22 ___src__14s__anonymous22_1){
     582    ((void)((*((int *)(&(*___dst__P14s__anonymous22_1).__i__i_1)))=___src__14s__anonymous22_1.__i__i_1) /* ?{} */);
     583}
     584static inline void ___destructor__F_P14s__anonymous22_autogen___1(struct __anonymous22 *___dst__P14s__anonymous22_1){
     585    ((void)((*((int *)(&(*___dst__P14s__anonymous22_1).__i__i_1)))) /* ^?{} */);
    586586}
    587587static inline void ___constructor__F_P14s__anonymous22i_autogen___1(struct __anonymous22 *___dst__P14s__anonymous22_1, int __i__i_1){
     
    596596static inline void ___constructor__F_P14s__anonymous2314s__anonymous23_autogen___1(struct __anonymous23 *___dst__P14s__anonymous23_1, struct __anonymous23 ___src__14s__anonymous23_1);
    597597static inline void ___destructor__F_P14s__anonymous23_autogen___1(struct __anonymous23 *___dst__P14s__anonymous23_1);
    598 static inline void ___constructor__F_P14s__anonymous23_autogen___1(struct __anonymous23 *___dst__P14s__anonymous23_1){
    599     ((void)((*((int *)(&(*___dst__P14s__anonymous23_1).__i__i_1)))) /* ?{} */);
    600 }
    601 static inline void ___constructor__F_P14s__anonymous2314s__anonymous23_autogen___1(struct __anonymous23 *___dst__P14s__anonymous23_1, struct __anonymous23 ___src__14s__anonymous23_1){
    602     ((void)((*((int *)(&(*___dst__P14s__anonymous23_1).__i__i_1)))=___src__14s__anonymous23_1.__i__i_1) /* ?{} */);
    603 }
    604 static inline void ___destructor__F_P14s__anonymous23_autogen___1(struct __anonymous23 *___dst__P14s__anonymous23_1){
    605     ((void)((*((int *)(&(*___dst__P14s__anonymous23_1).__i__i_1)))) /* ^?{} */);
    606 }
    607598static inline struct __anonymous23 ___operator_assign__F14s__anonymous23_P14s__anonymous2314s__anonymous23_autogen___1(struct __anonymous23 *___dst__P14s__anonymous23_1, struct __anonymous23 ___src__14s__anonymous23_1){
    608599    ((void)((*___dst__P14s__anonymous23_1).__i__i_1=___src__14s__anonymous23_1.__i__i_1));
    609600    return ((struct __anonymous23 )___src__14s__anonymous23_1);
     601}
     602static inline void ___constructor__F_P14s__anonymous23_autogen___1(struct __anonymous23 *___dst__P14s__anonymous23_1){
     603    ((void)((*((int *)(&(*___dst__P14s__anonymous23_1).__i__i_1)))) /* ?{} */);
     604}
     605static inline void ___constructor__F_P14s__anonymous2314s__anonymous23_autogen___1(struct __anonymous23 *___dst__P14s__anonymous23_1, struct __anonymous23 ___src__14s__anonymous23_1){
     606    ((void)((*((int *)(&(*___dst__P14s__anonymous23_1).__i__i_1)))=___src__14s__anonymous23_1.__i__i_1) /* ?{} */);
     607}
     608static inline void ___destructor__F_P14s__anonymous23_autogen___1(struct __anonymous23 *___dst__P14s__anonymous23_1){
     609    ((void)((*((int *)(&(*___dst__P14s__anonymous23_1).__i__i_1)))) /* ^?{} */);
    610610}
    611611static inline void ___constructor__F_P14s__anonymous23i_autogen___1(struct __anonymous23 *___dst__P14s__anonymous23_1, int __i__i_1){
     
    622622static inline volatile const short __f48__FCVs___1();
    623623int main(int __argc__i_1, const char **__argv__PPCc_1){
    624     int ___retval_main__i_1;
    625     ((void)(___retval_main__i_1=((int )0)) /* ?{} */);
    626     return ((int )___retval_main__i_1);
    627 }
     624    int _retVal0 = { 0 };
     625    ((void)(_retVal0=0) /* ?{} */);
     626    return ((int )_retVal0);
     627}
  • src/tests/.expect/32/extension.txt

    r66f8528 r5802a4f  
    6161}
    6262static inline void ___constructor__F_P2uU2uU_autogen___1(union U *___dst__P2uU_1, union U ___src__2uU_1){
    63     ((void)__builtin_memcpy(((void *)___dst__P2uU_1), ((const void *)(&___src__2uU_1)), sizeof(union U )));
     63    void *_tmp_cp_ret0;
     64    ((void)((_tmp_cp_ret0=__builtin_memcpy(((void *)___dst__P2uU_1), ((const void *)(&___src__2uU_1)), sizeof(union U ))) , _tmp_cp_ret0));
     65    ((void)(_tmp_cp_ret0) /* ^?{} */);
    6466}
    6567static inline void ___destructor__F_P2uU_autogen___1(union U *___dst__P2uU_1){
    6668}
    6769static inline union U ___operator_assign__F2uU_P2uU2uU_autogen___1(union U *___dst__P2uU_1, union U ___src__2uU_1){
    68     ((void)__builtin_memcpy(((void *)___dst__P2uU_1), ((const void *)(&___src__2uU_1)), sizeof(union U )));
     70    void *_tmp_cp_ret1;
     71    ((void)((_tmp_cp_ret1=__builtin_memcpy(((void *)___dst__P2uU_1), ((const void *)(&___src__2uU_1)), sizeof(union U ))) , _tmp_cp_ret1));
     72    ((void)(_tmp_cp_ret1) /* ^?{} */);
    6973    return ((union U )___src__2uU_1);
    7074}
    7175static inline void ___constructor__F_P2uUi_autogen___1(union U *___dst__P2uU_1, int __src__i_1){
    72     ((void)__builtin_memcpy(((void *)___dst__P2uU_1), ((const void *)(&__src__i_1)), sizeof(int )));
     76    void *_tmp_cp_ret2;
     77    ((void)((_tmp_cp_ret2=__builtin_memcpy(((void *)___dst__P2uU_1), ((const void *)(&__src__i_1)), sizeof(int ))) , _tmp_cp_ret2));
     78    ((void)(_tmp_cp_ret2) /* ^?{} */);
    7379}
    7480__extension__ enum E {
     
    9197    __extension__ int __c__i_2;
    9298    ((void)(__extension__ __a__i_2=(__extension__ __b__i_2+__extension__ __c__i_2)));
    93     int _tmp_cp_ret0;
    94     ((void)((_tmp_cp_ret0=__extension__ __fred__Fi_i__1(3)) , _tmp_cp_ret0));
    95     ((void)(_tmp_cp_ret0) /* ^?{} */);
     99    int _tmp_cp_ret3;
     100    ((void)((_tmp_cp_ret3=__extension__ __fred__Fi_i__1(3)) , _tmp_cp_ret3));
     101    ((void)(_tmp_cp_ret3) /* ^?{} */);
    96102    ((void)__extension__ sizeof(3));
    97     ((void)__extension__ (((int )(3!=((int )0))) || ((int )(4!=((int )0)))));
     103    ((void)__extension__ (((int )(3!=0)) || ((int )(4!=0))));
    98104    ((void)__extension__ __alignof__(__extension__ __a__i_2));
    99     ((void)(((int )(__extension__ __a__i_2!=((int )0))) || ((int )((((int )(__extension__ __b__i_2!=((int )0))) && ((int )(__extension__ __c__i_2!=((int )0))))!=((int )0)))));
    100     ((void)(((int )((__extension__ __a__i_2>__extension__ __b__i_2)!=((int )0))) ? __extension__ __c__i_2 : __extension__ __c__i_2));
     105    ((void)(((int )(__extension__ __a__i_2!=0)) || ((int )((((int )(__extension__ __b__i_2!=0)) && ((int )(__extension__ __c__i_2!=0)))!=0))));
     106    ((void)(((int )((__extension__ __a__i_2>__extension__ __b__i_2)!=0)) ? __extension__ __c__i_2 : __extension__ __c__i_2));
    101107    ((void)(__extension__ __a__i_2=__extension__ (__extension__ __b__i_2+__extension__ __c__i_2)));
    102108    ((void)((__extension__ __a__i_2 , __extension__ __b__i_2) , __extension__ __c__i_2));
  • src/tests/.expect/32/gccExtensions.txt

    r66f8528 r5802a4f  
    55extern void exit(int __status);
    66extern int printf(const char *__restrict __format, ...);
    7 extern int __x__i_1 asm ( "xx" );
     7extern int __x__i_1;
    88int main(int __argc__i_1, const char **__argv__PPCc_1){
    99    int ___retval_main__i_1;
     
    1111    asm ( "nop" :  :  :  );
    1212    asm ( "nop" :  :  :  );
    13     static int __y__i_2 asm ( "yy" );
    14     static int *__z__Pi_2 asm ( "zz" );
     13    static int __y__i_2;
     14    static int *__z__Pi_2;
    1515    int __src__i_2;
    1616    int __dst__i_2;
     
    160160    int __m2__A0A0i_2[((unsigned int )10)][((unsigned int )10)];
    161161    int __m3__A0A0i_2[((unsigned int )10)][((unsigned int )10)];
    162     ((void)(___retval_main__i_1=((int )0)) /* ?{} */);
     162    ((void)(___retval_main__i_1=0) /* ?{} */);
    163163    return ((int )___retval_main__i_1);
    164164}
  • src/tests/.expect/64/declarationSpecifier.txt

    r66f8528 r5802a4f  
    623623int main(int __argc__i_1, const char **__argv__PPCc_1){
    624624    int ___retval_main__i_1;
    625     ((void)(___retval_main__i_1=((int )0)) /* ?{} */);
     625    ((void)(___retval_main__i_1=0) /* ?{} */);
    626626    return ((int )___retval_main__i_1);
    627627}
  • src/tests/.expect/64/extension.txt

    r66f8528 r5802a4f  
    6161}
    6262static inline void ___constructor__F_P2uU2uU_autogen___1(union U *___dst__P2uU_1, union U ___src__2uU_1){
    63     ((void)__builtin_memcpy(((void *)___dst__P2uU_1), ((const void *)(&___src__2uU_1)), sizeof(union U )));
     63    void *_tmp_cp_ret0;
     64    ((void)((_tmp_cp_ret0=__builtin_memcpy(((void *)___dst__P2uU_1), ((const void *)(&___src__2uU_1)), sizeof(union U ))) , _tmp_cp_ret0));
     65    ((void)(_tmp_cp_ret0) /* ^?{} */);
    6466}
    6567static inline void ___destructor__F_P2uU_autogen___1(union U *___dst__P2uU_1){
    6668}
    6769static inline union U ___operator_assign__F2uU_P2uU2uU_autogen___1(union U *___dst__P2uU_1, union U ___src__2uU_1){
    68     ((void)__builtin_memcpy(((void *)___dst__P2uU_1), ((const void *)(&___src__2uU_1)), sizeof(union U )));
     70    void *_tmp_cp_ret1;
     71    ((void)((_tmp_cp_ret1=__builtin_memcpy(((void *)___dst__P2uU_1), ((const void *)(&___src__2uU_1)), sizeof(union U ))) , _tmp_cp_ret1));
     72    ((void)(_tmp_cp_ret1) /* ^?{} */);
    6973    return ((union U )___src__2uU_1);
    7074}
    7175static inline void ___constructor__F_P2uUi_autogen___1(union U *___dst__P2uU_1, int __src__i_1){
    72     ((void)__builtin_memcpy(((void *)___dst__P2uU_1), ((const void *)(&__src__i_1)), sizeof(int )));
     76    void *_tmp_cp_ret2;
     77    ((void)((_tmp_cp_ret2=__builtin_memcpy(((void *)___dst__P2uU_1), ((const void *)(&__src__i_1)), sizeof(int ))) , _tmp_cp_ret2));
     78    ((void)(_tmp_cp_ret2) /* ^?{} */);
    7379}
    7480__extension__ enum E {
     
    9197    __extension__ int __c__i_2;
    9298    ((void)(__extension__ __a__i_2=(__extension__ __b__i_2+__extension__ __c__i_2)));
    93     int _tmp_cp_ret0;
    94     ((void)((_tmp_cp_ret0=__extension__ __fred__Fi_i__1(3)) , _tmp_cp_ret0));
    95     ((void)(_tmp_cp_ret0) /* ^?{} */);
     99    int _tmp_cp_ret3;
     100    ((void)((_tmp_cp_ret3=__extension__ __fred__Fi_i__1(3)) , _tmp_cp_ret3));
     101    ((void)(_tmp_cp_ret3) /* ^?{} */);
    96102    ((void)__extension__ sizeof(3));
    97     ((void)__extension__ (((int )(3!=((int )0))) || ((int )(4!=((int )0)))));
     103    ((void)__extension__ (((int )(3!=0)) || ((int )(4!=0))));
    98104    ((void)__extension__ __alignof__(__extension__ __a__i_2));
    99     ((void)(((int )(__extension__ __a__i_2!=((int )0))) || ((int )((((int )(__extension__ __b__i_2!=((int )0))) && ((int )(__extension__ __c__i_2!=((int )0))))!=((int )0)))));
    100     ((void)(((int )((__extension__ __a__i_2>__extension__ __b__i_2)!=((int )0))) ? __extension__ __c__i_2 : __extension__ __c__i_2));
     105    ((void)(((int )(__extension__ __a__i_2!=0)) || ((int )((((int )(__extension__ __b__i_2!=0)) && ((int )(__extension__ __c__i_2!=0)))!=0))));
     106    ((void)(((int )((__extension__ __a__i_2>__extension__ __b__i_2)!=0)) ? __extension__ __c__i_2 : __extension__ __c__i_2));
    101107    ((void)(__extension__ __a__i_2=__extension__ (__extension__ __b__i_2+__extension__ __c__i_2)));
    102108    ((void)((__extension__ __a__i_2 , __extension__ __b__i_2) , __extension__ __c__i_2));
  • src/tests/.expect/64/gccExtensions.txt

    r66f8528 r5802a4f  
    55extern void exit(int __status);
    66extern int printf(const char *__restrict __format, ...);
    7 extern int __x__i_1 asm ( "xx" );
     7extern int __x__i_1;
    88int main(int __argc__i_1, const char **__argv__PPCc_1){
    99    int ___retval_main__i_1;
     
    1111    asm ( "nop" :  :  :  );
    1212    asm ( "nop" :  :  :  );
    13     static int __y__i_2 asm ( "yy" );
    14     static int *__z__Pi_2 asm ( "zz" );
     13    static int __y__i_2;
     14    static int *__z__Pi_2;
    1515    int __src__i_2;
    1616    int __dst__i_2;
     
    160160    int __m2__A0A0i_2[((long unsigned int )10)][((long unsigned int )10)];
    161161    int __m3__A0A0i_2[((long unsigned int )10)][((long unsigned int )10)];
    162     ((void)(___retval_main__i_1=((int )0)) /* ?{} */);
     162    ((void)(___retval_main__i_1=0) /* ?{} */);
    163163    return ((int )___retval_main__i_1);
    164164}
  • src/tests/.expect/castError.txt

    r66f8528 r5802a4f  
     1CFA Version 1.0.0 (debug)
    12Error: Can't choose between 3 alternatives for expression Cast of:
    23  Name: f
  • src/tests/.expect/completeTypeError.txt

    r66f8528 r5802a4f  
     1CFA Version 1.0.0 (debug)
    12Error: No reasonable alternatives for expression Applying untyped:
    23  Name: *?
  • src/tests/.expect/constant0-1DP.txt

    r66f8528 r5802a4f  
     1CFA Version 1.0.0 (debug)
    12Error: duplicate object definition for 0: signed int
    23Error: duplicate object definition for 0: const signed int
  • src/tests/.expect/constant0-1NDDP.txt

    r66f8528 r5802a4f  
     1CFA Version 1.0.0 (debug)
    12Error: duplicate object definition for 0: signed int
    23Error: duplicate object definition for 0: const signed int
  • src/tests/.expect/declarationErrors.txt

    r66f8528 r5802a4f  
     1CFA Version 1.0.0 (debug)
    12Error: duplicate static in declaration of x1: static const volatile short int
    23
  • src/tests/.expect/dtor-early-exit-ERR1.txt

    r66f8528 r5802a4f  
     1CFA Version 1.0.0 (debug)
    12Error: jump to label 'L1' crosses initialization of y Branch (Goto)
    23
  • src/tests/.expect/dtor-early-exit-ERR2.txt

    r66f8528 r5802a4f  
     1CFA Version 1.0.0 (debug)
    12Error: jump to label 'L2' crosses initialization of y Branch (Goto)
    23
  • src/tests/.expect/memberCtors-ERR1.txt

    r66f8528 r5802a4f  
     1CFA Version 1.0.0 (debug)
    12Error: in void ?{}(struct B *b), field a2 used before being constructed
    23make: *** [memberCtors-ERR1] Error 1
  • src/tests/.expect/scopeErrors.txt

    r66f8528 r5802a4f  
     1CFA Version 1.0.0 (debug)
    12Error: duplicate object definition for thisIsAnError: signed int
    23Error: duplicate function definition for butThisIsAnError: function
  • src/tests/Makefile.am

    r66f8528 r5802a4f  
    1515###############################################################################
    1616
    17 debug=yes
    18 
    1917# applies to both programs
    20 EXTRA_FLAGS =
    21 CFLAGS = -g -Wall -Wno-unused-function @CFA_FLAGS@ ${EXTRA_FLAGS}
     18CFLAGS = -g -Wall -Wno-unused-function @CFA_FLAGS@ # TEMPORARY: does not build with -O2
    2219CC = @CFA_BINDIR@/cfa
    2320
     
    3330
    3431all-tests :
    35         @+python test.py --all --debug=${debug}         # '@' => do not echo command (SILENT), '+' => allows recursive make from within python program
     32        @+python test.py --all          # '@' => do not echo command (SILENT), '+' => allows recursive make from within python program
    3633
    3734clean-local :
     
    5754
    5855declarationSpecifier: declarationSpecifier.c
    59         ${CC} ${CFLAGS} -CFA -XCFA -p ${<} -o ${@}
     56        ${CC} ${CFALGS} -CFA -XCFA -p ${<} -o ${@}
    6057
    6158gccExtensions : gccExtensions.c
     
    6663
    6764memberCtors-ERR1: memberCtors.c
    68         ${CC} ${CFLAGS} -DERR1 ${<} -o ${@}
     65        ${CC} ${CFALGS} -DERR1 ${<} -o ${@}
    6966
    7067completeTypeError : completeTypeError.c
    71         ${CC} ${CFLAGS} -DERR1 ${<} -o ${@}
     68        ${CC} ${CFALGS} -DERR1 ${<} -o ${@}
  • src/tests/Makefile.in

    r66f8528 r5802a4f  
    3535PRE_UNINSTALL = :
    3636POST_UNINSTALL = :
    37 build_triplet = @build@
    38 host_triplet = @host@
    3937EXTRA_PROGRAMS = fstream_test$(EXEEXT) vector_test$(EXEEXT) \
    4038        avl_test$(EXEEXT) constant0-1DP$(EXEEXT) \
     
    113111BACKEND_CC = @BACKEND_CC@
    114112CC = @CFA_BINDIR@/cfa
    115 CCAS = @CCAS@
    116 CCASDEPMODE = @CCASDEPMODE@
    117 CCASFLAGS = @CCASFLAGS@
    118113CCDEPMODE = @CCDEPMODE@
    119114CFA_BACKEND_CC = @CFA_BACKEND_CC@
     
    123118CFA_LIBDIR = @CFA_LIBDIR@
    124119CFA_PREFIX = @CFA_PREFIX@
    125 CFLAGS = -g -Wall -Wno-unused-function @CFA_FLAGS@ ${EXTRA_FLAGS}
     120
     121# applies to both programs
     122CFLAGS = -g -Wall -Wno-unused-function @CFA_FLAGS@ # TEMPORARY: does not build with -O2
    126123CPP = @CPP@
    127124CPPFLAGS = @CPPFLAGS@
     
    150147LIBS = @LIBS@
    151148LTLIBOBJS = @LTLIBOBJS@
    152 MACHINE_TYPE = @MACHINE_TYPE@
    153149MAINT = @MAINT@
    154150MAKEINFO = @MAKEINFO@
     
    182178am__untar = @am__untar@
    183179bindir = @bindir@
    184 build = @build@
    185180build_alias = @build_alias@
    186 build_cpu = @build_cpu@
    187 build_os = @build_os@
    188 build_vendor = @build_vendor@
    189181builddir = @builddir@
    190182datadir = @datadir@
     
    193185dvidir = @dvidir@
    194186exec_prefix = @exec_prefix@
    195 host = @host@
    196187host_alias = @host_alias@
    197 host_cpu = @host_cpu@
    198 host_os = @host_os@
    199 host_vendor = @host_vendor@
    200188htmldir = @htmldir@
    201189includedir = @includedir@
     
    221209top_builddir = @top_builddir@
    222210top_srcdir = @top_srcdir@
    223 debug = yes
    224 
    225 # applies to both programs
    226 EXTRA_FLAGS =
    227211fstream_test_SOURCES = fstream_test.c
    228212vector_test_SOURCES = vector/vector_int.c vector/array.c vector/vector_test.c
     
    654638
    655639all-tests :
    656         @+python test.py --all --debug=${debug}         # '@' => do not echo command (SILENT), '+' => allows recursive make from within python program
     640        @+python test.py --all          # '@' => do not echo command (SILENT), '+' => allows recursive make from within python program
    657641
    658642clean-local :
     
    678662
    679663declarationSpecifier: declarationSpecifier.c
    680         ${CC} ${CFLAGS} -CFA -XCFA -p ${<} -o ${@}
     664        ${CC} ${CFALGS} -CFA -XCFA -p ${<} -o ${@}
    681665
    682666gccExtensions : gccExtensions.c
     
    687671
    688672memberCtors-ERR1: memberCtors.c
    689         ${CC} ${CFLAGS} -DERR1 ${<} -o ${@}
     673        ${CC} ${CFALGS} -DERR1 ${<} -o ${@}
    690674
    691675completeTypeError : completeTypeError.c
    692         ${CC} ${CFLAGS} -DERR1 ${<} -o ${@}
     676        ${CC} ${CFALGS} -DERR1 ${<} -o ${@}
    693677
    694678# Tell versions [3.59,3.63) of GNU make to not export all variables.
  • src/tests/test.py

    r66f8528 r5802a4f  
    104104#               running test functions
    105105################################################################################
    106 def run_single_test(test, generate, dry_run, debug):
     106def run_single_test(test, generate, dry_run):
    107107
    108108        # find the output file based on the test name and options flag
     
    113113        sh("rm -f %s > /dev/null 2>&1" % test.name, dry_run)
    114114
    115         options = "-debug" if debug else "-nodebug";
    116 
    117115        # build, skipping to next test on error
    118         make_ret, _ = sh("""%s EXTRA_FLAGS="-quiet %s" %s 2> %s 1> /dev/null""" % (make_cmd, options, test.name, out_file), dry_run)
     116        make_ret, _ = sh("%s %s 2> %s 1> /dev/null" % (make_cmd, test.name, out_file), dry_run)
    119117
    120118        # if the make command succeds continue otherwise skip to diff
     
    167165        return retcode, error
    168166
    169 def run_test_instance(t, generate, dry_run, debug) :
     167def run_test_instance(t, generate, dry_run) :
    170168        # print formated name
    171169        name_txt = "%20s  " % t.name
    172170
    173171        #run the test instance and collect the result
    174         test_failed, error = run_single_test(t, generate, dry_run, debug)
     172        test_failed, error = run_single_test(t, generate, dry_run)
    175173
    176174        # update output based on current action
     
    196194
    197195# run the given list of tests with the given parameters
    198 def run_tests(tests, generate, dry_run, jobs, debug) :
     196def run_tests(tests, generate, dry_run, jobs) :
    199197        # clean the sandbox from previous commands
    200198        sh("%s clean > /dev/null 2>&1" % make_cmd, dry_run)
     
    209207        pool = Pool(jobs)
    210208        try :
    211                 results = pool.map_async(partial(run_test_instance, generate=generate, dry_run=dry_run, debug=debug), tests ).get(99999999)
     209                results = pool.map_async(partial(run_test_instance, generate=generate, dry_run=dry_run), tests ).get(99999999)
    212210        except KeyboardInterrupt:
    213211                pool.terminate()
     
    224222        return 0
    225223
    226 def yes_no(string):
    227         if string == "yes" :
    228                 return True
    229         if string == "no" :
    230                 return False
    231         raise argparse.ArgumentTypeError(msg)
    232         return False
    233 
    234 
    235224################################################################################
    236225#               main loop
     
    238227# create a parser with the arguments for the tests script
    239228parser = argparse.ArgumentParser(description='Script which runs cforall tests')
    240 parser.add_argument('--debug', help='Run all tests in debug or release', type=yes_no, default='no')
    241229parser.add_argument('--dry-run', help='Don\'t run the tests, only output the commands', action='store_true')
    242230parser.add_argument('--list', help='List all test available', action='store_true')
     
    308296        sys.exit(1)
    309297
    310 print('Running (%s) on %i cores' % ("debug" if options.debug else "no debug", options.jobs))
     298print('Running on %i cores' % options.jobs)
    311299make_cmd = "make" if make_flags else ("make -j%i" % options.jobs)
    312300
     
    317305else :
    318306        # otherwise run all tests and make sure to return the correct error code
    319         sys.exit( run_tests(tests, options.regenerate_expected, options.dry_run, options.jobs, options.debug) )
     307        sys.exit( run_tests(tests, options.regenerate_expected, options.dry_run, options.jobs) )
Note: See TracChangeset for help on using the changeset viewer.