Changeset f1ee72e


Ignore:
Timestamp:
Jun 23, 2016, 12:23:00 PM (7 years ago)
Author:
Rob Schluntz <rschlunt@…>
Branches:
ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, ctor, deferred_resn, demangler, enum, forall-pointer-decay, gc_noraii, jacob/cs343-translation, jenkins-sandbox, master, memory, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, resolv-new, with_gc
Children:
4d3ca1d8
Parents:
c2931ea (diff), d56c05d0 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge branch 'master' into ctor

Files:
53 added
2 deleted
44 edited
2 moved

Legend:

Unmodified
Added
Removed
  • Jenkinsfile

    rc2931ea rf1ee72e  
    55//===========================================================================================================
    66//Compilation script is done here but environnement set-up and error handling is done in main loop
    7 def cfa_build() {
     7def cfa_build(boolean full_build) {
    88        build_stage 'Checkout'
    99                def install_dir = pwd tmp: true
    1010                //checkout the source code and clean the repo
    1111                checkout scm
     12
     13                //Clean all temporary files to make sure no artifacts of the previous build remain
    1214                sh 'git clean -fdqx'
     15
     16                //Reset the git repo so no local changes persist
    1317                sh 'git reset --hard'
    1418
     
    2630        build_stage 'Test'
    2731
    28                 //Run the tests from the example directory
     32                //Run the tests from the tests directory
    2933                dir ('src/tests') {
    30                         sh './runTests.sh'
     34                        if (full_build) {
     35                                sh 'make all-tests'
     36                        }
     37                        else {
     38                                sh 'make'
     39                        }
    3140                }
    3241
     
    3544                //do a maintainer-clean to make sure we need to remake from scratch
    3645                sh 'make maintainer-clean > /dev/null'
     46}
     47
     48def make_doc() {
     49        def err = null
     50
     51        try {
     52                sh 'make clean > /dev/null'
     53                sh 'make > /dev/null 2>&1'
     54        }
     55
     56        catch (Exception caughtError) {
     57                //rethrow error later
     58                err = caughtError
     59
     60                sh 'cat *.log'
     61        }
     62
     63        finally {
     64                /* Must re-throw exception to propagate error */
     65                if (err) {
     66                        throw err
     67                }
     68        }
     69}
     70
     71def doc_build() {
     72        stage 'Documentation'
     73
     74                status_prefix = 'Documentation'
     75
     76                dir ('doc/user') {
     77                        make_doc()
     78                }
     79
     80                dir ('doc/refrat') {
     81                        make_doc()
     82                }
    3783}
    3884
     
    117163        try {
    118164                //Prevent the build from exceeding 30 minutes
    119                 timeout(30) {
     165                timeout(60) {
    120166
    121167                        //Wrap build to add timestamp to command line
     
    140186                                //Compile using gcc-4.9
    141187                                currentCC = new CC_Desc('gcc-4.9', 'g++-4.9', 'gcc-4.9')
    142                                 cfa_build()
    143 
    144                                 //Compile using gcc-5
    145                                 currentCC = new CC_Desc('gcc-5', 'g++-5', 'gcc-5')
    146                                 cfa_build()
    147 
    148                                 //Compile using gcc-4.9
    149                                 currentCC = new CC_Desc('gcc-6', 'g++-6', 'gcc-6')
    150                                 cfa_build()
     188                                cfa_build(doPromoteBuild2DoLang)
     189
     190                                //Compile latex documentation
     191                                doc_build()
    151192
    152193                                if( doPromoteBuild2DoLang ) {
     194                                        //Compile using gcc-5
     195                                        currentCC = new CC_Desc('gcc-5', 'g++-5', 'gcc-5')
     196                                        cfa_build(true)
     197
     198                                        //Compile using gcc-4.9
     199                                        currentCC = new CC_Desc('gcc-6', 'g++-6', 'gcc-6')
     200                                        cfa_build(true)
     201
     202                                        //Push latest changes to do-lang repo
    153203                                        push_build()
    154204                                }
     
    185235//===========================================================================================================
    186236def notify_result(boolean promote, Exception err, String status, boolean log) {
     237        echo 'Build completed, sending result notification'
    187238        if(promote)     {
    188239                if( err ) {
     
    224275        def project_name = (env.JOB_NAME =~ /(.+)\/.+/)[0][1].toLowerCase()
    225276
    226         sh "git rev-list --format=short ${gitRefOldValue}...${gitRefNewValue} > GIT_LOG"
    227         def gitLog = readFile('GIT_LOG')
    228 
    229         sh "git diff --stat ${gitRefNewValue} ${gitRefOldValue} > GIT_DIFF"
    230         def gitDiff = readFile('GIT_DIFF')
     277        def gitLog = 'Error retrieving git logs'
     278        def gitDiff = 'Error retrieving git diff'
     279
     280        try {
     281
     282                sh "git rev-list --format=short ${gitRefOldValue}...${gitRefNewValue} > GIT_LOG"
     283                gitLog = readFile('GIT_LOG')
     284
     285                sh "git diff --stat ${gitRefNewValue} ${gitRefOldValue} > GIT_DIFF"
     286                gitDiff = readFile('GIT_DIFF')
     287        }
     288        catch (Exception error) {}
    231289
    232290        def email_subject = "[${project_name} git][BUILD# ${env.BUILD_NUMBER} - ${status}] - branch ${env.BRANCH_NAME}"
  • Makefile.am

    rc2931ea rf1ee72e  
    1111## Created On       : Sun May 31 22:14:18 2015
    1212## Last Modified By : Peter A. Buhr
    13 ## Last Modified On : Mon Jan 25 22:16:13 2016
    14 ## Update Count     : 10
     13## Last Modified On : Fri Jun 17 14:56:18 2016
     14## Update Count     : 13
    1515###############################################################################
    1616
     
    2020BACKEND_CC = @BACKEND_CC@               # C compiler used to compile Cforall programs, versus C++ compiler used to build cfa command
    2121
    22 MAINTAINERCLEANFILES = lib/* bin/*
     22MAINTAINERCLEANFILES = lib/* bin/* src/examples/.deps/* src/tests/.deps/* src/tests/.out/*
  • Makefile.in

    rc2931ea rf1ee72e  
    222222SUBDIRS = src/driver src src/libcfa     # order important, src before libcfa because cfa-cpp used to build prelude
    223223EXTRA_DIST = Docs                       # non-source files
    224 MAINTAINERCLEANFILES = lib/* bin/*
     224MAINTAINERCLEANFILES = lib/* bin/* src/examples/.deps/* src/tests/.deps/* src/tests/.out/*
    225225all: config.h
    226226        $(MAKE) $(AM_MAKEFLAGS) all-recursive
  • doc/LaTeXmacros/common.tex

    rc2931ea rf1ee72e  
    1111%% Created On       : Sat Apr  9 10:06:17 2016
    1212%% Last Modified By : Peter A. Buhr
    13 %% Last Modified On : Fri Jun 10 16:35:25 2016
    14 %% Update Count     : 101
     13%% Last Modified On : Mon Jun 20 09:35:20 2016
     14%% Update Count     : 178
    1515%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1616
     
    2323\renewcommand{\floatpagefraction}{0.8}  % float must be greater than X of the page before it is forced onto its own page
    2424\renewcommand{\textfraction}{0.0}       % the entire page maybe devoted to floats with no text on the page at all
     25
     26\lefthyphenmin=4
     27\righthyphenmin=4
     28
    2529\usepackage{pslatex}                            % reduce size of san serif font
     30
     31\usepackage[ignoredisplayed]{enumitem}  % do not affect trivlist
     32\setlist{labelsep=1ex}% global
     33\setlist[itemize]{topsep=0.5ex,parsep=0.25ex,itemsep=0.25ex,listparindent=\parindent,leftmargin=\parindent}% global
     34\setlist[itemize,1]{label=\textbullet}% local
     35%\renewcommand{\labelitemi}{{\raisebox{0.25ex}{\footnotesize$\bullet$}}}
     36\setlist[enumerate]{listparindent=\parindent}% global
     37\setlist[enumerate,2]{leftmargin=\parindent,labelsep=*,align=parleft,label=\alph*.}% local
     38\setlist[description]{listparindent=\parindent,leftmargin=\parindent,labelsep=*}
    2639
    2740% Names used in the document.
     
    2942\newcommand{\CFA}{C$\mathbf\forall$\xspace}              % set language symbolic name
    3043\newcommand{\CFL}{Cforall\xspace}                        % set language text name
    31 \newcommand{\CC}{C\kern-.1em\hbox{+\kern-.25em+}\xspace} % CC symbolic name
     44\newcommand{\CC}{\rm C\kern-.1em\hbox{+\kern-.25em+}\xspace} % CC symbolic name
    3245\def\c11{ISO/IEC C} % C11 name (cannot have numbers in latex command name)
    3346
     
    3548
    3649\makeatletter
    37 % parindent is relative, i.e., toggled on/off in environments like itemize,
    38 % so store the value for use rather than use \parident directly.
    39 \newlength{\parindentlength}
    40 \setlength{\parindentlength}{\parindent}
     50% parindent is relative, i.e., toggled on/off in environments like itemize, so store the value for
     51% use rather than use \parident directly.
     52\newlength{\parindentlnth}
     53\setlength{\parindentlnth}{\parindent}
    4154
    4255% allow escape sequence in lstinline
    4356%\usepackage{etoolbox}
    4457%\patchcmd{\lsthk@TextStyle}{\let\lst@DefEsc\@empty}{}{}{\errmessage{failed to patch}}
    45 
    46 % make fontsize "small" slightly larger, specifically for san serif (helvetica) in program code
    47 %\renewcommand\small{%
    48 %   \@setfontsize\small{8.5}{11}%
    49 %   \abovedisplayskip 8.5pt \@plus 3pt \@minus 4pt
    50 %   \abovedisplayshortskip \z@ \@plus 2pt
    51 %   \belowdisplayshortskip 4pt \@plus 2pt \@minus 2pt
    52 %   \def\@listi{\leftmargin\leftmargini
    53 %               \topsep 4pt \@plus 2pt \@minus 2pt
    54 %               \parsep 2pt \@pluspt \@minuspt
    55 %               \itemsep \parsep}%
    56 %   \belowdisplayskip \abovedisplayskip
    57 %}
    5858
    5959\usepackage{pslatex}                                                                    % reduce size of san serif font
     
    9191\newcommand{\see}[1]{\emph{see} #1}
    9292
    93 % reduce bullet size and spacing for "itemize" macro
    94 \renewcommand{\labelitemi}{{\raisebox{0.25ex}{\footnotesize$\bullet$}}}
    95 \renewenvironment{itemize}{\begin{list}{\labelitemi}{\topsep=5pt\itemsep=5pt\parsep=0pt}}{\end{list}}
    96 
    9793% Define some commands that produce formatted index entries suitable for cross-references.
    9894% ``\spec'' produces entries for specifications of entities.  ``\impl'' produces entries for their
     
    140136}% quote2
    141137\newenvironment{rationale}{%
    142   \begin{quotation}\noindent$\Box$\enspace
     138  \begin{quote2}\noindent$\Box$\enspace
    143139}{%
    144   \hfill\enspace$\Box$\end{quotation}
     140  \hfill\enspace$\Box$\end{quote2}
    145141}%
    146142
     
    154150
    155151% BNF macros
    156 \def\syntax{\paragraph{Syntax}\trivlist\parindent=.5in\item[\hskip.5in]}
    157 \let\endsyntax=\endtrivlist
    158 \newcommand{\lhs}[1]{\par{\emph{#1:}}\index{#1@{\emph{#1}}|italic}}
    159 \newcommand{\rhs}{\hfil\break\hbox{\hskip1in}}
    160 \newcommand{\oldlhs}[1]{\emph{#1: \dots}\index{#1@{\emph{#1}}|italic}}
    161 \newcommand{\nonterm}[1]{\emph{#1\/}\index{#1@{\emph{#1}}|italic}}
     152\newenvironment{syntax}{
     153\paragraph{Syntax}
     154\begin{quote2}
     155\begin{description}[noitemsep,leftmargin=\parindentlnth]
     156}{
     157\end{description}
     158\end{quote2}
     159}
     160% \def\syntax{\paragraph{Syntax}\trivlist\parindent=.5in\item[\hskip.5in]}
     161%\let\endsyntax=\endtrivlist
     162\newcommand{\lhs}[1]{\item[\emph{#1:}\index{#1@{\emph{#1}}|italic}]~\ignorespaces}
     163\newcommand{\oldlhs}[1]{\item[\emph{#1:}\index{#1@{\emph{#1}}|italic}~\dots]~}
     164\newcommand{\rhs}{\hfil\newline}
     165\newcommand{\nonterm}[1]{\emph{#1}\index{#1@{\emph{#1}}|italic}}
    162166\newcommand{\opt}{$_{opt}$\ }
    163167
     
    204208stringstyle=\tt,
    205209tabsize=4,
    206 xleftmargin=\parindentlength,
     210xleftmargin=\parindentlnth,
    207211extendedchars=true,
    208212escapechar=§,
  • doc/bibliography/cfa.bib

    rc2931ea rf1ee72e  
    29242924
    29252925@unpublished{Bilson,
    2926         keywords = {generic programming, generics, polymorphism},
    2927         contributor {a3moss@plg},
    2928         author = {Richard C. Bilson and Glen Ditchfield and Peter A. Buhr},
    2929         title = {Generic Programming with Inferred Models},
     2926    keywords    = {generic programming, generics, polymorphism},
     2927    contributor = {a3moss@plg},
     2928    author      = {Richard C. Bilson and Glen Ditchfield and Peter A. Buhr},
     2929    title       = {Generic Programming with Inferred Models},
    29302930}
    29312931
  • doc/refrat/Makefile

    rc2931ea rf1ee72e  
    11## Define the appropriate configuration variables.
    22
    3 TeXLIB = .:../bibliography/:../LaTeXmacros/:
    4 LaTeX  = TEXINPUTS=${TeXLIB} && export TEXINPUTS && latex
     3TeXLIB = .:../LaTeXmacros:../LaTeXmacros/listings:../LaTeXmacros/enumitem:../bibliography/:
     4LaTeX  = TEXINPUTS=${TeXLIB} && export TEXINPUTS && latex -halt-on-error
    55BibTeX = BIBINPUTS=${TeXLIB} && export BIBINPUTS && bibtex
    66
  • doc/refrat/refrat.tex

    rc2931ea rf1ee72e  
    1111%% Created On       : Wed Apr  6 14:52:25 2016
    1212%% Last Modified By : Peter A. Buhr
    13 %% Last Modified On : Fri Jun  3 09:43:48 2016
    14 %% Update Count     : 66
     13%% Last Modified On : Sat Jun 18 19:21:30 2016
     14%% Update Count     : 74
    1515%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1616
     
    1818
    1919% inline code ©...© (copyright symbol) emacs: C-q M-)
    20 % red highlighting ®...® (registered trademark sumbol) emacs: C-q M-.
    21 % latex escape §...§ (section symbol) emacs: C-q M-'
     20% red highlighting ®...® (registered trademark symbol) emacs: C-q M-.
     21% blue highlighting ß...ß (sharp s symbol) emacs: C-q M-_
     22% green highlighting ¢...¢ (cent symbol) emacs: C-q M-"
     23% LaTex escape §...§ (section symbol) emacs: C-q M-'
    2224% keyword escape ¶...¶ (pilcrow symbol) emacs: C-q M-^
    2325% math escape $...$ (dollar symbol)
     
    3234\usepackage{fullpage,times,comment}
    3335\usepackage{epic,eepic}
    34 \usepackage{upquote}                                                                    % switch curled `' to straight `'
     36\usepackage{upquote}                                                                    % switch curled `'" to straight
    3537\usepackage{xspace}
    3638\usepackage{varioref}                                                                   % extended references
    3739\usepackage{listings}                                                                   % format program code
    38 \usepackage{footmisc}                                                                   % support label/reference in footnote
     40\usepackage[flushmargin]{footmisc}                                              % support label/reference in footnote
    3941\usepackage{latexsym}                                   % \Box glyph
    4042\usepackage{mathptmx}                                   % better math font with "times"
     43\usepackage[usenames]{color}
    4144\usepackage[pagewise]{lineno}
    4245\renewcommand{\linenumberfont}{\scriptsize\sffamily}
     46\input{common}                                          % bespoke macros used in the document
    4347\usepackage[dvips,plainpages=false,pdfpagelabels,pdfpagemode=UseNone,colorlinks=true,pagebackref=true,linkcolor=blue,citecolor=blue,urlcolor=blue,pagebackref=true,breaklinks=true]{hyperref}
    4448\usepackage{breakurl}
     
    4751%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4852
    49 % Bespoke macros used in the document.
    50 \input{common}
    51 
    52 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    53 
    5453% Names used in the document.
    5554
    5655\newcommand{\Version}{1.0.0}
     56
     57\newcommand{\Textbf}[2][red]{{\color{#1}{\textbf{#2}}}}
     58\newcommand{\Emph}[2][red]{{\color{#1}\textbf{\emph{#2}}}}
     59\newcommand{\R}[1]{\Textbf{#1}}
     60\newcommand{\B}[1]{{\Textbf[blue]{#1}}}
     61\newcommand{\G}[1]{{\Textbf[OliveGreen]{#1}}}
    5762
    5863%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     
    7681}% author
    7782\date{
    78 DRAFT\\\today
     83DRAFT \\
     84\today
    7985}% date
    8086
     
    390396\end{itemize}
    391397
     398
    392399\section{Lexical elements}
     400
     401
    393402\subsection{Keywords}
     403
    394404\begin{syntax}
    395405\oldlhs{keyword}
    396         \rhs ©forall©
    397         \rhs ©lvalue©
    398         \rhs ©trait©
    399         \rhs ©dtype©
    400         \rhs ©ftype©
    401         \rhs ©otype©
     406\rhs ©forall©
     407\rhs ©lvalue©
     408\rhs ©trait©
     409\rhs ©dtype©
     410\rhs ©ftype©
     411\rhs ©otype©
    402412\end{syntax}
    403413
     
    11071117\begin{syntax}
    11081118\lhs{unary-expression}
    1109 \rhs \nonterm{postfix-expression}
    1110 \rhs ©++© \nonterm{unary-expression}
    1111 \rhs ©--© \nonterm{unary-expression}
    1112 \rhs \nonterm{unary-operator} \nonterm{cast-expression}
    1113 \rhs ©sizeof© \nonterm{unary-expression}
    1114 \rhs ©sizeof© ©(© \nonterm{type-name} ©)©
    1115 \lhs{unary-operator} one of \rhs ©&© ©*© ©+© ©-© ©~© ©!©
     1119        \rhs \nonterm{postfix-expression}
     1120        \rhs ©++© \nonterm{unary-expression}
     1121        \rhs ©--© \nonterm{unary-expression}
     1122        \rhs \nonterm{unary-operator} \nonterm{cast-expression}
     1123        \rhs ©sizeof© \nonterm{unary-expression}
     1124        \rhs ©sizeof© ©(© \nonterm{type-name} ©)©
     1125\lhs{unary-operator} one of
     1126        \rhs ©&© ©*© ©+© ©-© ©~© ©!©
    11161127\end{syntax}
    11171128
  • doc/user/Makefile

    rc2931ea rf1ee72e  
    11## Define the appropriate configuration variables.
    22
    3 TeXLIB = .:../bibliography/:../LaTeXmacros/:
    4 LaTeX  = TEXINPUTS=${TeXLIB} && export TEXINPUTS && latex
     3TeXLIB = .:../LaTeXmacros:../LaTeXmacros/listings:../LaTeXmacros/enumitem:../bibliography/:
     4LaTeX  = TEXINPUTS=${TeXLIB} && export TEXINPUTS && latex -halt-on-error
    55BibTeX = BIBINPUTS=${TeXLIB} && export BIBINPUTS && bibtex
    66
  • doc/user/user.tex

    rc2931ea rf1ee72e  
    1111%% Created On       : Wed Apr  6 14:53:29 2016
    1212%% Last Modified By : Peter A. Buhr
    13 %% Last Modified On : Fri Jun 10 16:38:22 2016
    14 %% Update Count     : 394
     13%% Last Modified On : Mon Jun 20 10:47:22 2016
     14%% Update Count     : 575
    1515%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1616
     
    2121% blue highlighting ß...ß (sharp s symbol) emacs: C-q M-_
    2222% green highlighting ¢...¢ (cent symbol) emacs: C-q M-"
    23 % Latex escape §...§ (section symbol) emacs: C-q M-'
     23% LaTex escape §...§ (section symbol) emacs: C-q M-'
    2424% keyword escape ¶...¶ (pilcrow symbol) emacs: C-q M-^
    2525% math escape $...$ (dollar symbol)
    2626
    2727\documentclass[twoside,11pt]{article}
     28
    2829%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2930
     
    3435\usepackage{fullpage,times,comment}
    3536\usepackage{epic,eepic}
    36 \usepackage{upquote}                                                                    % switch curled `'" to straight `'"
     37\usepackage{upquote}                                                                    % switch curled `'" to straight
    3738\usepackage{xspace}
    3839\usepackage{varioref}                                                                   % extended references
     
    4950\renewcommand{\UrlFont}{\small\sf}
    5051
     52\makeatletter
     53\renewcommand{\pagestyle}[1]{
     54  \@ifundefined{ps@#1}%
     55    \undefinedpagestyle
     56    {\def\@tempa{#1}\def\@tempb{headings}\def\@tempc{myheadings}%
     57     \ifx\@tempa\@tempb\setlength{\topmargin}{-0.25in}\setlength{\headsep}{0.25in}%
     58     \else\ifx\@tempa\@tempc\setlength{\topmargin}{-0.25in}\setlength{\headsep}{0.25in}\fi\fi%
     59     \@nameuse{ps@#1}}}% pagestyle
     60\makeatother
     61
     62
     63%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     64
    5165% Names used in the document.
    5266
     
    6074\newcommand{\G}[1]{{\Textbf[OliveGreen]{#1}}}
    6175
     76\newsavebox{\LstBox}
     77
    6278%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6379
     
    6783
    6884%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    69 
    70 \begin{document}
    71 \pagestyle{headings}
    72 \linenumbers                                            % comment out to turn off line numbering
    7385
    7486\title{\Huge
     
    7789Version 1.0                                                     \\
    7890\vspace*{0.25in}
    79 \huge``describe not prescribe''         \\
     91\huge``describe not prescribe''
    8092\vspace*{1in}
    8193}% title
     94
    8295\author{\huge
    83 Peter A. Buhr and ...                           \\
     96Peter A. Buhr and ...
    8497}% author
     98
    8599\date{
    86 DRAFT \\
    87 \today
     100DRAFT \\ \today
    88101}% date
    89102
     103%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     104
     105\begin{document}
     106\pagestyle{headings}
    90107\pagenumbering{roman}
    91 \pagestyle{plain}
     108\linenumbers                                            % comment out to turn off line numbering
    92109
    93110\maketitle
     
    107124
    108125\clearpage
     126\markright{\CFA User Manual}
    109127\pagenumbering{arabic}
    110128
     
    471489\end{quote2}
    472490
    473 Unsupported are K\&R C declarations where the base type defaults to ©int©, if no type is specified\footnote{
    474 At least one type specifier shall be given in the declaration specifiers in each declaration, and in the specifier-qualifier list in each structure declaration and type name~\cite[\S~6.7.2(2)]{C11}},
     491Unsupported are K\&R C declarations where the base type defaults to ©int©, if no type is specified,\footnote{
     492At least one type specifier shall be given in the declaration specifiers in each declaration, and in the specifier-qualifier list in each structure declaration and type name~\cite[\S~6.7.2(2)]{C11}}
    475493e.g.:
    476494\begin{lstlisting}
     
    485503Clearly, both styles need to be supported for some time due to existing C-style header-files, particularly for UNIX systems.
    486504
     505
     506\section{Reference Pointers}
     507
     508Program variables are implicit pointers to memory locations generated by the compiler and automatically dereferenced, as in:
     509\begin{quote2}
     510\begin{tabular}{@{}l|l@{}}
     511\multicolumn{1}{c|}{Variables} & \multicolumn{1}{c}{Compiler generated addresses (100, 104) and dereferencing} \\
     512\hline
     513\begin{lstlisting}
     514int x, y;
     515x = 3;
     516y = x;
     517\end{lstlisting}
     518&
     519\begin{lstlisting}
     520int * const x = (int *)100, * const y = (int *)104;
     521*x = 3;         // implicit dereference
     522*y = *x;
     523\end{lstlisting}
     524\end{tabular}
     525\end{quote2}
     526A variable name only points to one location during its lifetime, i.e., it is a \Index{non-mutable} pointer.
     527For example, the variables ©x© and ©y© are constant pointers.
     528Variable addresses are usually not stored in memory and loaded before dereferencing;
     529instead, variable addresses are stored in instructions, so an instruction fetch implicitly gets the variable's address.
     530\begin{quote2}
     531\begin{tabular}{@{}l|l@{}}
     532\begin{lstlisting}
     533x = x + 1
     534&x = *(&x) + 1
     535(100) = *(100) + 1
     536\end{lstlisting}
     537&
     538\begin{lstlisting}
     539ld              r1,(100)                        // address of x
     540add             r1,1
     541st              r1,(100)                        // address of x
     542\end{lstlisting}
     543\end{tabular}
     544\end{quote2}
     545Finally, the non-mutable nature of variables and the fact that there is no storage for a variable address means pointer assignment is impossible.
     546Therefore, the expression ©x = y© only has one meaning, ©*x = *y©, i.e., copy the variable values, so explicitly writing the dereferences is unnecessary even though it occurs implicitly as part of instruction decoding.
     547
     548A variable name is generalized by a \newterm{pointer}, which is a mutable pointer variable that can point to more than one memory location during its life-time (like an integer variable versus a literal).
     549Hence, a pointer occupies memory to store its current address, and the pointer's value is loaded by dereferencing, e.g.:
     550\begin{lstlisting}
     551int x, y, z, ®*® p1, ®*® p2;
     552p1 = ®&®x;                                      // p1 points to x
     553p2 = p1;                                        // p2 also points to x
     554p1 = ®&®y;                                      // p1 points to y
     555p2 = p1 + 1;                            // p2 points to z, pointer arithmetic
     556\end{lstlisting}
     557In many cases, a pointer name is anonymous (dynamically computed), so it cannot be stored directly in an instruction like a variable name.
     558
     559Pointers have a duality: an address in memory or the value at that address.
     560In many cases, the compiler can infer which of these operations are needed:
     561\begin{lstlisting}
     562p2 = p1 + x;                            // compiler infers *p2 = *p1 + x;
     563\end{lstlisting}
     564because adding the integer value of ©x© to the address of ©p1© and storing the resulting address into ©p2© is an unlikely operation.
     565Algol68~\cite{Algol68} inferences pointer dereferencing to select the best meaning for each pointer usage.
     566However, there are ambiguous cases, especially when pointer arithmetic is possible, as in C:
     567\begin{lstlisting}
     568p1 = p2;                                        // p1 = p2 or *p1 = *p2
     569p1 = p1 + 1;                            // p1 = p1 + 1 or *p1 = *p1 + 1
     570\end{lstlisting}
     571
     572Most programming languages pick a default operation and supply an explicit operation to resolve the pointer-duality ambiguity.
     573In C, the default operation for pointers is manipulate the pointer value and the pointed-to value is explicitly accessed by dereferencing ©*©.
     574\begin{lstlisting}
     575p1 = p2;                                        // pointer value assignment
     576*p1 = *p1 + 1;                          // pointed-to value assignment/operation
     577\end{lstlisting}
     578which works well for low-level memory management, such as ©malloc©/©free©, where manipulation of addresses in the primary operation, and data is only occasionally accessed.
     579
     580However, in the majority of pointer usages, the pointed-to value is required rather than the pointer address.
     581\begin{lstlisting}
     582*p2 = ((*p1 + *p2) * (*p2 - *p1)) / (*p1 - *p2);
     583\end{lstlisting}
     584And, it is tedious and error prone to explicitly write the dereferencing, especially when pointer arithmetic with integer values is allowed.
     585It is better to have the compiler generate the dereferencing:
     586\begin{lstlisting}
     587p2 = ((p1 + p2) * (p2 - p1)) / (p1 - p2);
     588\end{lstlisting}
     589
     590To provide this capability, it is necessary to switch the default operation to resolve the pointer-duality ambiguity, which requires a new kind of pointer called a \newterm{reference} pointer.
     591\begin{lstlisting}
     592int x, y, z, ®&® r1, ®&® r2;    // & denotes reference pointer
     593r1 ®:=® &x;                                     // r1 points to x
     594r2 ®:=® &r1;                                    // r2 also points to x
     595r1 ®:=® &y;                                     // r1 points to y
     596r2 ®:=® &r1 + 1;                                // r2 points to z
     597r2 = ((r1 + r2) * (r2 - r1)) / (r1 - r2); // implicit dereferencing
     598\end{lstlisting}
     599Hence, a reference pointer behaves like a variable name for the current variable it is pointing-to, so dereferencing a reference pointer returns the address of its pointed-to value, i.e., the address in the reference pointer.
     600Notice, the explicit operator ©:=© to denote pointer assignment to a reference pointer to support both aspects of pointer duality.
     601Note, \CC deals with the pointer duality by making a reference pointer a constant (©const©), like a plain variable, so there is no reference assignment.
     602
     603Like pointers, it is possible to use ©const© qualifiers with a reference:
     604\begin{lstlisting}
     605const int cx = 5;                       // cannot change cx;
     606const int & r3 = &cx;           // cannot change what r3 is pointing to
     607r3 ®:=® &cx;                                    // can change r3
     608r3 = 7;                                         // error, cannot change cx
     609int & const r4 = &x;            // must be initialized, §\CC§ reference
     610r4 ®:=® &x;                                     // error, cannot change r4
     611const int & const r5 = &cx;     // must be initialized, §\CC§ reference
     612r5 = 7;                                         // error, cannot change cx
     613r5 ®:=® &cx;                                    // error, cannot change r5
     614\end{lstlisting}
     615Note, for type ©& const©, there is no pointer assignment, so ©r4 := &x© is disallowed, and the pointer value cannot be ©0©.
     616Since there is only one meaning for ©r4 = x©, which is to change the value of the variable pointed to by ©r4©, therefore:
     617\begin{itemize}
     618\item
     619it in impossible to take the address of ©r4© as it always means the address of what ©r4© is pointing to.
     620\item
     621the dereference at initialization is optional because there can only be one
     622\begin{lrbox}{\LstBox}%
     623\footnotesize%
     624\begin{lstlisting}%
     625void f( int p ) {...}
     626void (*fp)( int ) = &f;         // equivalent initialization
     627void (*fp)( int ) = f;          // missing dereference allowed
     628\end{lstlisting}%
     629\end{lrbox}%
     630meaning.\footnote{
     631This case is similar to initializing a routine pointer, where the routine constant should be dereferenced.
     632\newline
     633\usebox{\LstBox}
     634}% footnote
     635\begin{lstlisting}
     636int & const r4 = &x;            // equivalent initialization
     637int & const r4 = x;                     // missing dereference allowed
     638\end{lstlisting}
     639\end{itemize}
     640Similarly, when a ©const© reference is used for a parameters type, the call-site argument does not require a reference.
     641\begin{lstlisting}
     642void f( int & ri, int & const cri );
     643f( &x, x );                                     // reference not required for second argument
     644\end{lstlisting}
     645Within routine ©f©, it is possible to change an argument by changing the corresponding parameter, and parameter ©ri© can be locally reassigned within ©f©.
     646
     647Finally, when a reference parameter has a ©const© value, it is possible to pass literals and expressions.
     648\begin{lstlisting}
     649void g( const int & ri, const int & const cri );
     650f( &3, 3 );
     651f( &(x + y), x + y );
     652\end{lstlisting}
     653At the call site, the compiler implicitly creates the necessary temporary that is subsequently pointed to by the reference parameter.
     654Hence, changing the parameter only changes the temporary at the call site.
     655For the non-©const© parameter, requiring the reference on the literal or expression makes it clear that nothing is changing at the call site and allows the call to proceed, where other languages require the programmer to explicitly create the temporary for the argument.
    487656
    488657\section{Type Operators}
     
    808977\subsection{Type Nesting}
    809978
    810 \CFA allows \Index{type nesting}, and type qualification of the nested types, where as C hoists\index{type hoisting} (refactors) nested types into the enclosing scope and has no type qualification.
    811 \begin{quote2}
     979\CFA allows \Index{type nesting}, and type qualification of the nested types (see \VRef[Figure]{f:TypeNestingQualification}), where as C hoists\index{type hoisting} (refactors) nested types into the enclosing scope and has no type qualification.
     980\begin{figure}
    812981\begin{tabular}{@{}l@{\hspace{3em}}l|l@{}}
    813982\multicolumn{1}{c@{\hspace{3em}}}{\textbf{C Type Nesting}}      & \multicolumn{1}{c}{\textbf{C Implicit Hoisting}}      & \multicolumn{1}{|c}{\textbf{\CFA}}    \\
     
    8701039\end{lstlisting}
    8711040\end{tabular}
    872 \end{quote2}
     1041\caption{Type Nesting / Qualification}
     1042\label{f:TypeNestingQualification}
     1043\end{figure}
    8731044In the left example in C, types ©C©, ©U© and ©T© are implicitly hoisted outside of type ©S© into the containing block scope.
    8741045In the right example in \CFA, the types are not hoisted and accessed using the field-selection operator ``©.©'' for type qualification, as does Java, rather than the \CC type-selection operator ``©::©''.
  • src/GenPoly/ScopedMap.h

    rc2931ea rf1ee72e  
    9090                                return next_valid();
    9191                        }
    92                         iterator& operator++ (int) { iterator tmp = *this; ++(*this); return tmp; }
     92                        iterator operator++ (int) { iterator tmp = *this; ++(*this); return tmp; }
    9393
    9494                        iterator& operator-- () {
     
    101101                                return prev_valid();
    102102                        }
    103                         iterator& operator-- (int) { iterator tmp = *this; --(*this); return tmp; }
     103                        iterator operator-- (int) { iterator tmp = *this; --(*this); return tmp; }
    104104
    105105                        bool operator== (const iterator &that) {
     
    166166                                return next_valid();
    167167                        }
    168                         const_iterator& operator++ (int) { const_iterator tmp = *this; ++(*this); return tmp; }
     168                        const_iterator operator++ (int) { const_iterator tmp = *this; ++(*this); return tmp; }
    169169
    170170                        const_iterator& operator-- () {
     
    177177                                return prev_valid();
    178178                        }
    179                         const_iterator& operator-- (int) { const_iterator tmp = *this; --(*this); return tmp; }
     179                        const_iterator operator-- (int) { const_iterator tmp = *this; --(*this); return tmp; }
    180180
    181181                        bool operator== (const const_iterator &that) {
  • src/GenPoly/ScopedSet.h

    rc2931ea rf1ee72e  
    8787                                return next_valid();
    8888                        }
    89                         iterator& operator++ (int) { iterator tmp = *this; ++(*this); return tmp; }
     89                        iterator operator++ (int) { iterator tmp = *this; ++(*this); return tmp; }
    9090
    9191                        iterator& operator-- () {
     
    9898                                return prev_valid();
    9999                        }
    100                         iterator& operator-- (int) { iterator tmp = *this; --(*this); return tmp; }
     100                        iterator operator-- (int) { iterator tmp = *this; --(*this); return tmp; }
    101101
    102102                        bool operator== (const iterator &that) {
     
    163163                                return next_valid();
    164164                        }
    165                         const_iterator& operator++ (int) { const_iterator tmp = *this; ++(*this); return tmp; }
     165                        const_iterator operator++ (int) { const_iterator tmp = *this; ++(*this); return tmp; }
    166166
    167167                        const_iterator& operator-- () {
     
    174174                                return prev_valid();
    175175                        }
    176                         const_iterator& operator-- (int) { const_iterator tmp = *this; --(*this); return tmp; }
     176                        const_iterator operator-- (int) { const_iterator tmp = *this; --(*this); return tmp; }
    177177
    178178                        bool operator== (const const_iterator &that) {
  • src/Parser/lex.cc

    rc2931ea rf1ee72e  
    382382        (yy_c_buf_p) = yy_cp;
    383383
    384 #define YY_NUM_RULES 181
    385 #define YY_END_OF_BUFFER 182
     384#define YY_NUM_RULES 180
     385#define YY_END_OF_BUFFER 181
    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[889] =
     393static yyconst flex_int16_t yy_accept[888] =
    394394    {   0,
    395395        0,    0,    0,    0,    0,    0,  115,  115,  118,  118,
    396       182,  180,    7,    9,    8,  138,  117,  102,  143,  146,
     396      181,  179,    7,    9,    8,  138,  117,  102,  143,  146,
    397397      114,  125,  126,  141,  139,  129,  140,  132,  142,  107,
    398       108,  109,  130,  131,  148,  150,  149,  151,  180,  102,
    399       123,  180,  124,  144,  102,  104,  102,  102,  102,  102,
     398      108,  109,  130,  131,  148,  150,  149,  151,  179,  102,
     399      123,  179,  124,  144,  102,  104,  102,  102,  102,  102,
    400400      102,  102,  102,  102,  102,  102,  102,  102,  102,  102,
    401       102,  102,  127,  147,  128,  145,    7,  180,    4,    4,
    402       181,  105,  181,  106,  115,  116,  122,  118,  119,    7,
    403         9,    0,    8,  155,  175,  102,    0,  167,  137,  160,
     401      102,  102,  127,  147,  128,  145,    7,  179,    4,    4,
     402      180,  105,  180,  106,  115,  116,  122,  118,  119,    7,
     403        9,    0,    8,  155,  174,  102,    0,  167,  137,  160,
    404404      168,  165,  152,  163,  153,  164,  162,    0,  112,    3,
    405405
    406406        0,  166,  112,  110,    0,    0,  110,  110,    0,    0,
    407       110,  109,  109,  109,    0,  109,  174,  135,  136,  134,
    408       156,  158,  154,  159,  157,    0,    0,    0,    0,    0,
     407      110,  109,  109,  109,    0,  109,  135,  136,  134,  156,
     408      158,  154,  159,  157,    0,    0,    0,    0,    0,    0,
     409        0,    0,    0,    0,    0,    0,    0,    0,    0,  103,
     410      173,    0,  117,  114,  102,    0,    0,  170,    0,  102,
     411      102,  102,  102,  102,  102,  102,  102,  102,  102,  102,
     412      102,  102,  102,  102,  102,  102,   38,  102,  102,  102,
     413      102,  102,  102,  102,  102,  102,  102,   56,  102,  102,
     414      102,  102,  102,  102,  102,  102,  102,  102,  102,  102,
     415      102,  102,  102,  102,  169,  161,    7,    0,    0,    0,
     416
     417        2,    0,    5,  105,    0,    0,    0,  115,    0,  121,
     418      120,  120,    0,    0,    0,  118,    0,    0,    0,    0,
    409419        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    410       103,  173,    0,  117,  114,  102,    0,    0,  170,    0,
     420        0,  133,  112,  112,    0,  112,  112,    0,    0,    6,
     421        0,  110,    0,    0,    0,  112,    0,  110,  110,  110,
     422      110,    0,  111,    0,    0,  109,  109,  109,  109,    0,
     423      171,  172,    0,  177,  175,    0,    0,    0,  103,    0,
     424        0,    0,    0,    0,    0,    0,    0,  102,   17,  102,
    411425      102,  102,  102,  102,  102,  102,  102,  102,  102,  102,
    412       102,  102,  102,  102,  102,  102,  102,   38,  102,  102,
    413       102,  102,  102,  102,  102,  102,  102,  102,   56,  102,
     426      102,  102,  102,  102,  102,  102,  102,   14,  102,  102,
     427
    414428      102,  102,  102,  102,  102,  102,  102,  102,  102,  102,
    415       102,  102,  102,  102,  102,  169,  161,    7,    0,    0,
    416 
    417         0,    2,    0,    5,  105,    0,    0,    0,  115,    0,
    418       121,  120,  120,    0,    0,    0,  118,    0,    0,    0,
     429      102,  102,  102,  102,  102,  102,   50,  102,  102,  102,
     430       63,  102,  102,  102,  102,  102,  102,  102,  102,  102,
     431      102,  102,  102,  102,  102,   89,  102,  102,  102,  102,
     432      102,  102,  102,    0,    0,    0,    0,    0,    0,    0,
     433        0,  120,    0,    0,    0,    0,    0,  120,    0,    0,
     434      178,    0,    0,    0,    0,    0,    0,    0,  112,    0,
     435      112,    0,  112,    0,    0,  112,    0,  110,  110,    0,
     436        0,  111,  111,    0,  111,    0,  111,  109,  109,    0,
     437        0,    0,    0,    0,    0,    0,    0,    0,    0,  176,
     438
     439      102,  102,  102,  102,  102,  102,  102,  102,  102,  102,
     440      102,  102,  102,  102,  102,  102,  102,  102,  102,  102,
     441      102,  102,  102,   21,  102,   24,  102,   27,  102,  102,
     442      102,  102,  102,  102,  102,   41,  102,   43,  102,  102,
     443      102,  102,  102,  102,  102,   55,  102,   66,  102,  102,
     444      102,  102,  102,  102,  102,  102,  102,  102,  102,  102,
     445      102,  102,  102,  102,   97,  102,  102,    0,    0,    0,
    419446        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    420         0,    0,  133,  112,  112,    0,  112,  112,    0,    0,
    421         6,    0,  110,    0,    0,    0,  112,    0,  110,  110,
    422       110,  110,    0,  111,    0,    0,  109,  109,  109,  109,
    423         0,  171,  172,    0,  178,  176,    0,    0,    0,  103,
    424         0,    0,    0,    0,    0,    0,    0,    0,  102,   17,
     447        0,  120,    0,    0,    0,    0,    0,  112,    0,    0,
     448        0,    0,    0,    0,  111,  111,    0,  113,    0,  111,
     449
     450      111,    0,    0,    0,    0,    0,    0,    0,    0,    0,
     451        0,    0,    0,    0,  102,  102,   22,  102,  102,  102,
     452      102,  102,  102,  102,   15,  102,  102,  102,  102,  102,
     453      102,  102,  102,  102,  102,  102,  102,  102,  102,   23,
     454       25,  102,   32,  102,  102,  102,  102,   40,  102,  102,
     455      102,  102,   48,  102,  102,   53,  102,  102,   70,  102,
     456      102,  102,   76,  102,  102,  102,  102,  102,   86,   88,
     457      102,  102,   94,  102,  102,  101,    0,    0,    0,    0,
     458        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
     459        0,    0,    0,    0,    0,  113,    0,    0,  111,  113,
     460
     461      113,  113,  113,    0,  111,    0,    0,    0,    0,    0,
     462        0,    0,    0,    0,    0,  102,    0,  102,  102,  102,
    425463      102,  102,  102,  102,  102,  102,  102,  102,  102,  102,
    426       102,  102,  102,  102,  102,  102,  102,  102,   14,  102,
    427 
    428       102,  102,  102,  102,  102,  102,  102,  102,  102,  102,
    429       102,  102,  102,  102,  102,  102,  102,   50,  102,  102,
    430       102,   63,  102,  102,  102,  102,  102,  102,  102,  102,
    431       102,  102,  102,  102,  102,  102,   89,  102,  102,  102,
    432       102,  102,  102,  102,    0,    0,    0,    0,    0,    0,
    433         0,    0,  120,    0,    0,    0,    0,    0,  120,    0,
    434         0,  179,    0,    0,    0,    0,    0,    0,    0,  112,
    435         0,  112,    0,  112,    0,    0,  112,    0,  110,  110,
    436         0,    0,  111,  111,    0,  111,    0,  111,  109,  109,
     464      102,  102,  102,   58,  102,  102,  102,  102,  102,  102,
     465      102,  102,   28,  102,  102,  102,   39,   42,   45,  102,
     466      102,   51,  102,   60,   67,  102,  102,   75,   77,   80,
     467       81,   83,   84,  102,  102,   91,  102,  102,    0,    1,
     468        0,    0,    0,    0,    0,    0,  105,    0,    0,    0,
     469      120,    0,    0,    0,    0,  113,    0,  113,  113,    0,
     470        0,    0,    0,    0,    0,    0,    0,    0,  102,  102,
     471
     472       18,  102,  102,  102,  102,  102,  102,  102,   16,  102,
     473      102,  102,   33,  102,  102,  102,  102,  102,  102,  102,
     474      102,  102,  102,  102,  102,   36,   37,  102,   47,   52,
     475      102,  102,  102,   90,  102,  102,    0,    0,    0,    0,
     476        0,    0,    0,    0,    0,    0,    0,    0,    0,   10,
     477       11,   29,   54,  102,  102,  102,  102,  102,  102,  102,
     478      102,  102,  102,  102,   59,   61,   64,  102,  102,   78,
     479       92,  102,  102,   35,   46,   71,   72,  102,   95,   98,
    437480        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    438 
    439       177,  102,  102,  102,  102,  102,  102,  102,  102,  102,
    440       102,  102,  102,  102,  102,  102,  102,  102,  102,  102,
    441       102,  102,  102,  102,   21,  102,   24,  102,   27,  102,
    442       102,  102,  102,  102,  102,  102,   41,  102,   43,  102,
    443       102,  102,  102,  102,  102,  102,   55,  102,   66,  102,
    444       102,  102,  102,  102,  102,  102,  102,  102,  102,  102,
    445       102,  102,  102,  102,  102,   97,  102,  102,    0,    0,
    446         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    447         0,    0,  120,    0,    0,    0,    0,    0,  112,    0,
    448         0,    0,    0,    0,    0,  111,  111,    0,  113,    0,
    449 
    450       111,  111,    0,    0,    0,    0,    0,    0,    0,    0,
    451         0,    0,    0,    0,    0,  102,  102,   22,  102,  102,
    452       102,  102,  102,  102,  102,   15,  102,  102,  102,  102,
    453       102,  102,  102,  102,  102,  102,  102,  102,  102,  102,
    454        23,   25,  102,   32,  102,  102,  102,  102,   40,  102,
    455       102,  102,  102,   48,  102,  102,   53,  102,  102,   70,
    456       102,  102,  102,   76,  102,  102,  102,  102,  102,   86,
    457        88,  102,  102,   94,  102,  102,  101,    0,    0,    0,
    458         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    459         0,    0,    0,    0,    0,    0,  113,    0,    0,  111,
    460 
    461       113,  113,  113,  113,    0,  111,    0,    0,    0,    0,
    462         0,    0,    0,    0,    0,    0,  102,    0,  102,  102,
    463       102,  102,  102,  102,  102,  102,  102,  102,  102,  102,
    464       102,  102,  102,  102,   58,  102,  102,  102,  102,  102,
    465       102,  102,  102,   28,  102,  102,  102,   39,   42,   45,
    466       102,  102,   51,  102,   60,   67,  102,  102,   75,   77,
    467        80,   81,   83,   84,  102,  102,   91,  102,  102,    0,
    468         1,    0,    0,    0,    0,    0,    0,  105,    0,    0,
    469         0,  120,    0,    0,    0,    0,  113,    0,  113,  113,
    470         0,    0,    0,    0,    0,    0,    0,    0,    0,  102,
    471 
    472       102,   18,  102,  102,  102,  102,  102,  102,  102,   16,
    473       102,  102,  102,   33,  102,  102,  102,  102,  102,  102,
    474       102,  102,  102,  102,  102,  102,   36,   37,  102,   47,
    475        52,  102,  102,  102,   90,  102,  102,    0,    0,    0,
    476         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    477        10,   11,   29,   54,  102,  102,  102,  102,  102,  102,
    478       102,  102,  102,  102,  102,   59,   61,   64,  102,  102,
    479        78,   92,  102,  102,   35,   46,   71,   72,  102,   95,
    480        98,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    481         0,    0,    0,  102,   68,  102,  102,   12,  102,  102,
    482 
    483        30,   34,  102,  102,  102,   65,  102,  102,  102,  102,
    484       102,  102,    0,    0,    0,    0,    0,    0,    0,    0,
    485         0,    0,    0,    0,    0,   57,  102,  102,  102,  102,
    486       102,  102,  102,   49,   62,   73,   79,   93,   99,  102,
    487       102,    0,    0,    0,    0,    0,    0,    0,    0,  102,
    488       102,   13,   19,  102,  102,   31,  102,  102,  102,   26,
    489        87,    0,    0,  102,  102,  102,  102,  102,  102,   74,
    490       100,  102,   85,   20,  102,  102,   44,   82,  102,  102,
    491       102,  102,  102,  102,  102,   96,   69,    0
     481        0,    0,  102,   68,  102,  102,   12,  102,  102,   30,
     482
     483       34,  102,  102,  102,   65,  102,  102,  102,  102,  102,
     484      102,    0,    0,    0,    0,    0,    0,    0,    0,    0,
     485        0,    0,    0,    0,   57,  102,  102,  102,  102,  102,
     486      102,  102,   49,   62,   73,   79,   93,   99,  102,  102,
     487        0,    0,    0,    0,    0,    0,    0,    0,  102,  102,
     488       13,   19,  102,  102,   31,  102,  102,  102,   26,   87,
     489        0,    0,  102,  102,  102,  102,  102,  102,   74,  100,
     490      102,   85,   20,  102,  102,   44,   82,  102,  102,  102,
     491      102,  102,  102,  102,   96,   69,    0
    492492    } ;
    493493
     
    537537    } ;
    538538
    539 static yyconst flex_int16_t yy_base[1063] =
     539static yyconst flex_int16_t yy_base[1062] =
    540540    {   0,
    541         0,   84, 2279, 2277,   94,    0,  177,  178,  179,  180,
    542      2291, 2817,  191, 2817,  197,   55, 2817, 2237,   60,  173,
    543      2817, 2817, 2817,   56,  188, 2817,  191,  189,  204,  216,
    544       275,    0,  152, 2817,  216, 2257,  175,  344,  197,  237,
    545      2817,  159, 2817,  220,  226, 2817,  181,  165,  212,  251,
    546       241,  270,  205,  244,  235,  174,  227,  305,  274,  341,
    547       220,  265, 2817,  227, 2817, 2253,  382,  405, 2817, 2262,
    548      2817, 2228,  211, 2817,    0, 2817,  432,    0, 2817,  398,
    549      2817,  411,  417, 2817,  504, 2227,  258, 2817, 2817, 2817,
    550      2817, 2817, 2245, 2817, 2243, 2817, 2817, 2253,  565, 2817,
    551 
    552      2268, 2817,  424,  419,  504,  522,  296,  237,  265,  417,
    553       386,    0,  298,  285,  311,  403, 2817, 2817, 2817, 2817,
    554      2238, 2817, 2817, 2817, 2237, 2235,  301,  331, 2248,  347,
    555       442,  449,  359,  433,  427,  454, 2227,  465, 2176,  469,
    556      2206, 2817,  319, 2817, 2817,  501, 2201, 2198, 2817, 2169,
    557       425,  307,  467,  320,  337,  470,  431,  345,  509,  356,
    558       439,  410,  490,  481,  500,  498,  502,  504,  424,  505,
    559       541,  510,  465,  528,  542,  271,  520,  521, 2197,  544,
    560       548,  549,  550,  561,  558,  570,  579,  587,  569,  585,
    561       567,  601,  592,  593,  594, 2817, 2817,  665,  671, 2246,
    562 
    563       677, 2817,  683, 2817, 2194,  565, 2188, 2185,    0,  674,
    564      2817, 2817,  689, 2184, 2183, 2181,    0, 2202,  616,  630,
    565       655,  698,  697,  659,  687,  688,  691, 2197,  694,  701,
    566      2174, 2173, 2817,    0,  693,  723,  691,  714, 2171, 2204,
    567      2817,  722,    0,  717,  768,  744,  808,  779,  606, 2817,
    568      2161, 2136,    0,  794, 2180,  786,  702, 2817, 2154, 2129,
    569       830, 2817, 2817, 2162, 2817, 2817,  708,  722, 2140, 2138,
    570       710, 2132, 2131, 2130,    0, 2128,    0, 2097,  721,  727,
    571       747,  748,  674,  591,  610,  723,  766,  793,  767,  770,
    572       769,  792,  810,  763,  775,  806,  812,  820, 2125,  822,
    573 
    574       824,  825,  828,  830,  831,  832,  836,  837,  460,  843,
    575       846,  845,  844,  847,  848,  852,  859,  861,  858,  867,
    576       865, 2124,  868,  869,  870,  873,  871,  872,  874,  875,
    577       881,  876,  880,  882,  887,  888, 2123,  891,  940,  897,
    578       899,  563,  902,  906,  960,  961, 2118, 2115, 2112,    0,
    579      2111,    0,  952,  956, 2110,    0, 2108,    0, 2105,    0,
    580      2126, 2817,  793,  939, 2105, 2101,    0, 2098,    0, 2817,
    581       960,  986,  971, 2817,  977,  992, 1011, 2097, 2817, 2817,
    582       985,  994, 1024,  982, 1058,  922, 1043,  993, 2817, 2817,
    583      2096, 2094, 2091,    0, 2087,    0, 2083,    0, 2081,    0,
    584 
    585      2817,  908,  953,  939,  991,  993,  998, 1003, 1000, 1026,
    586      1006, 1037, 1020, 1038, 1048, 1041, 1049,  970, 1054, 1018,
    587      1050, 1044, 1056, 1045, 2082, 1059, 2079, 1068, 2077, 1057,
    588      1052, 1070, 1072, 1079, 1077, 1081, 2075, 1082, 2072, 1084,
    589      1086, 1087, 1088, 1091, 1089, 1094, 2069, 1096, 2068, 1093,
    590      1098, 1099, 1101, 1105, 1100, 1114, 1111, 1115, 1112, 1117,
    591       686, 1118, 1126, 1130, 1127, 2067, 1131, 1132, 1183, 2062,
    592         0, 2059,    0, 2056,    0, 2055,    0, 1178, 2054,    0,
    593      2052,    0, 2049, 2046, 2045,    0, 2044,    0, 1184, 2042,
    594      1190, 1149, 1206, 1192, 1150, 1185, 2817, 1230, 1242, 1264,
    595 
    596      2051, 2024, 2035, 2034,    0, 2032,    0, 2029,    0, 2026,
    597         0, 2025,    0, 2024,    0, 1166, 1206, 2025, 1207, 1190,
    598      1227, 1145, 1241, 1184, 1135,  134, 1198, 1243, 1223, 1225,
    599      1244, 1186, 1248, 1247, 1249, 1256, 1251, 1261, 1262, 1221,
    600      2022, 1269, 1266, 2019, 1264, 1267, 1268, 1270, 2018, 1276,
    601      1272, 1274, 1277, 2017, 1280, 1288, 2015, 1287, 1290, 2012,
    602      1284, 1291, 1294, 2009, 1188, 1297, 1298, 1300, 1301, 1308,
    603      2008, 1303, 1309, 2007, 1310, 1315, 2005, 2052, 1998,    0,
    604      1997,    0, 1995,    0, 1992,    0, 1991,    0, 1990,    0,
    605      1988,    0, 1955,    0, 1359, 1365, 1393, 1376, 1953, 2817,
    606 
    607      1382, 1369, 1331, 1383, 1952, 2817, 1949,    0, 1946,    0,
    608      1945,    0, 1944,    0,    0,    0, 1945,    0, 1370, 1316,
    609      1317, 1345, 1325, 1372, 1373, 1378, 1377,  384, 1376, 1387,
    610      1390, 1392, 1399, 1397,  773, 1400, 1430, 1407, 1404, 1411,
    611      1410, 1412, 1418, 1942, 1413, 1415, 1423, 1939, 1938, 1937,
    612      1421, 1425, 1935, 1426, 1932, 1931, 1429, 1433, 1930, 1928,
    613      1925, 1924, 1923, 1921, 1435, 1314, 1918, 1439, 1431, 1964,
    614      2817, 1907,    0, 1903,    0,    0,    0, 1890,    0,    0,
    615         0, 2817,    0,    0,    0,    0, 1483, 1886, 2817, 2817,
    616      1489, 1885,    0, 1883,    0,    0,    0,    0, 1880, 1445,
    617 
    618      1465, 1882, 1442, 1470, 1467, 1479,  968, 1447, 1476, 1881,
    619      1478, 1482, 1480, 1485, 1481, 1512, 1487, 1497, 1526, 1501,
    620      1503, 1505, 1507, 1508, 1509, 1510, 1879, 1876, 1511, 1875,
    621      1874, 1515, 1514, 1518, 1872, 1520, 1522,    0,    0,    0,
    622      1866, 1865, 1864, 1570,    0, 1862, 1859, 1858, 1857, 1855,
    623      1855, 1854, 1853, 1851, 1527, 1529, 1532, 1523, 1548, 1533,
    624      1549, 1524, 1551, 1552, 1553, 1848, 1557, 1847, 1559, 1561,
    625      1564, 1569, 1555, 1563, 1846, 1844, 1841, 1840, 1571, 1839,
    626      1837, 1831, 1830, 1829, 1827, 1820, 1818, 1817, 1814, 1813,
    627      1812, 1810, 1793, 1574, 1787, 1575, 1577, 1576, 1578, 1580,
    628 
    629      1581, 1786, 1585, 1608, 1587, 1783, 1588, 1589, 1599, 1597,
    630      1591, 1593, 1773, 1770, 1763, 1761, 1760, 1739, 1738, 1737,
    631      1730, 1728, 1727, 1685, 1684, 1683, 1598, 1604, 1612, 1605,
    632      1613, 1617, 1616, 1682, 1681, 1618, 1677, 1676, 1622, 1623,
    633      1626, 1670, 1669, 1668, 1665, 1448, 1446, 1358, 1317, 1627,
    634      1624, 1318, 1638, 1630, 1634, 1224, 1642, 1643, 1644, 1137,
    635      1136, 1004,  733, 1628, 1649, 1650, 1651, 1652, 1654,  635,
    636       602, 1656,  436,  296, 1658, 1659,  263,  232, 1660, 1662,
    637      1663, 1665, 1666, 1667, 1670,  200,  166, 2817, 1742, 1755,
    638      1768, 1778, 1788, 1801, 1811, 1824, 1837, 1850, 1858, 1868,
    639 
    640      1875, 1882, 1889, 1896, 1903, 1910, 1917, 1924, 1931, 1944,
    641      1951, 1955, 1963, 1966, 1973, 1980, 1987, 1990, 1997, 2003,
    642      2016, 2029, 2036, 2043, 2050, 2057, 2060, 2067, 2070, 2077,
    643      2080, 2087, 2090, 2097, 2100, 2107, 2110, 2117, 2120, 2127,
    644      2135, 2142, 2149, 2156, 2163, 2166, 2173, 2176, 2183, 2186,
    645      2193, 2199, 2212, 2219, 2226, 2229, 2236, 2239, 2246, 2249,
    646      2256, 2259, 2266, 2269, 2276, 2279, 2286, 2293, 2296, 2303,
    647      2306, 2313, 2320, 2327, 2330, 2337, 2340, 2347, 2350, 2357,
    648      2360, 2367, 2370, 2377, 2383, 2396, 2403, 2410, 2413, 2420,
    649      2423, 2430, 2433, 2440, 2443, 2450, 2453, 2460, 2463, 2470,
    650 
    651      2473, 2480, 2483, 2490, 2497, 2500, 2507, 2510, 2517, 2520,
    652      2527, 2530, 2533, 2539, 2546, 2555, 2562, 2569, 2572, 2579,
    653      2582, 2585, 2591, 2598, 2601, 2604, 2607, 2610, 2613, 2616,
    654      2619, 2626, 2629, 2636, 2639, 2642, 2645, 2648, 2658, 2665,
    655      2668, 2671, 2674, 2681, 2688, 2695, 2698, 2705, 2712, 2719,
    656      2726, 2733, 2740, 2747, 2754, 2761, 2768, 2775, 2782, 2789,
    657      2796, 2803
     541        0,   84, 2272, 2269,   94,    0,  177,  178,  179,  180,
     542     2285, 2822,  191, 2822,  197,   55, 2822, 2231,   60,  173,
     543     2822, 2822, 2822,   56,  188, 2822,  191,  189,  204,  216,
     544      275,    0, 2249, 2822,  216, 2247,  152,  344,  155,  220,
     545     2822,  159, 2822,  217,  226, 2822,  185,  154,  212,  251,
     546      237,  270,  235,  257,  241,  205,  193,  305,  314,  333,
     547      238,  228, 2822,  225, 2822, 2242,  402,  390, 2822, 2253,
     548     2822, 2221,  235, 2822,    0, 2822,  426,    0, 2822,  417,
     549     2822,  439,  451, 2822,  498, 2219,  264, 2822, 2822, 2822,
     550     2822, 2822, 2235, 2822, 2232, 2822, 2822, 2244,  559, 2822,
     551
     552     2261, 2822,  438,  444,  511,  534,  289,  253,  197,  380,
     553      305,    0,  319,  280,  198,  322, 2822, 2822, 2822, 2230,
     554     2822, 2822, 2822, 2227, 2224,  218,  255, 2239,  298,  350,
     555      368,  312,  440,  398,  405, 2220,  441, 2168,  446, 2196,
     556     2822,  335, 2822, 2822,  468, 2190, 2189, 2822, 2162,  439,
     557      282,  433,  372,  281,  437,  434,  428,  570,  444,  466,
     558      464,  469,  475,  321,  492,  438,  471,  445,  474,  512,
     559      489,  503,  496,  521,  276,  515,  516, 2189,  526,  510,
     560      519,  525,  543,  522,  560,  553,  523,  561,  551,  544,
     561      599,  582,  593,  584, 2822, 2822,  660,  651, 2236,  666,
     562
     563     2822,  678, 2822, 2183,  607, 2179, 2178,    0,  693, 2822,
     564     2822,  684, 2176, 2156, 2154,    0, 2177,  578,  608,  617,
     565      654,  679,  650,  683,  684,  687, 2172,  690,  691, 2147,
     566     2146, 2822,    0,  683,  710,  686,  700, 2145, 2196, 2822,
     567      714,    0,  427,  746,  764,  786,  808,  621, 2822, 2152,
     568     2125,    0,  794, 2171,  795,  709, 2822, 2147, 2121,  832,
     569     2822, 2822, 2152, 2822, 2822,  711,  714, 2129, 2129,  717,
     570     2125, 2123, 2120,    0, 2117,    0, 2088,  694,  679,  712,
     571      709,  711,  698,  566,  726,  743,  771,  741,  790,  784,
     572      800,  795,  742,  744,  814,  816,  818, 2118,  819,  745,
     573
     574      820,  821,  822,  823,  824,  746,  825,  748,  659,  831,
     575      826,  833,  838,  839,  848,  850,  851,  844,  834,  857,
     576     2116,  858,  859,  860,  862,  861,  864,  865,  867,  868,
     577      866,  871,  876,  872,  878, 2113,  880,  689,  881,  882,
     578      892,  896,  893,  953,  954, 2109, 2108, 2106,    0, 2103,
     579        0,  941,  945, 2102,    0, 2101,    0, 2099,    0, 2118,
     580     2822,  940,  941, 2094, 2088,    0, 2086,    0, 2822,  953,
     581      975,  964, 2822,  981,  997, 1021, 2084, 2822, 2822,  939,
     582      940, 1006,  982, 1041,  310, 1039, 1004, 2822, 2822, 2081,
     583     2079, 2077,    0, 2074,    0, 2071,    0, 2070,    0, 2822,
     584
     585      886,  941,  960,  962,  977,  976,  980,  982, 1017, 1010,
     586     1002,  998, 1022, 1031, 1028, 1033, 1034, 1037, 1040, 1043,
     587     1038, 1041, 1053, 2072, 1055, 2070, 1045, 2067, 1056, 1061,
     588     1063, 1065, 1066, 1067, 1070, 2064, 1071, 2063, 1073, 1074,
     589     1075, 1078, 1080, 1081, 1085, 2062, 1087, 2060, 1084, 1089,
     590     1091, 1097, 1099, 1092, 1102, 1103, 1105, 1106, 1108,  905,
     591     1109, 1116, 1110, 1122, 2057, 1120, 1123, 1179, 2051,    0,
     592     2050,    0, 2049,    0, 2047,    0, 1166, 2044,    0, 2041,
     593        0, 2040, 2039, 2037,    0, 2034,    0, 1173, 2031, 1179,
     594     1137, 1195, 1181, 1178, 1176, 2822, 1219, 1231, 1253, 2042,
     595
     596     2017, 2027, 2024,    0, 2021,    0, 2020,    0, 2019,    0,
     597     2017,    0, 2014,    0, 1141, 1172, 2014, 1180, 1155, 1196,
     598     1157, 1216, 1207, 1231, 1125, 1210, 1232, 1214, 1187, 1236,
     599     1235, 1237, 1238, 1272, 1249, 1252, 1250, 1253, 1254, 2013,
     600     1261, 1256, 2012, 1260, 1263, 1264, 1257, 2010, 1271, 1268,
     601     1269, 1273, 2007, 1275, 1282, 2006, 1283, 1284, 2005, 1276,
     602     1286, 1289, 2003, 1294, 1291, 1296, 1295, 1297, 1310, 2000,
     603     1305, 1308, 1999, 1307, 1300, 1998, 2046, 1960,    0, 1958,
     604        0, 1957,    0, 1954,    0, 1951,    0, 1950,    0, 1949,
     605        0, 1947,    0, 1355, 1361, 1389, 1372, 1944, 2822, 1378,
     606
     607     1325, 1365, 1379, 1941, 2822, 1940,    0, 1939,    0, 1937,
     608        0, 1934,    0,    0,    0, 1936,    0, 1366, 1312, 1311,
     609     1341, 1323, 1368, 1369, 1374, 1356, 1383, 1372, 1388, 1390,
     610     1393, 1395, 1396, 1398, 1400, 1431, 1406, 1407, 1411, 1408,
     611     1413, 1414, 1935, 1409, 1416, 1419, 1933, 1930, 1929, 1422,
     612     1424, 1928, 1429, 1926, 1923, 1425, 1430, 1919, 1915, 1911,
     613     1895, 1894, 1893, 1436, 1433, 1891, 1439, 1440, 1938, 2822,
     614     1884,    0, 1883,    0,    0,    0, 1884,    0,    0,    0,
     615     2822,    0,    0,    0,    0, 1486, 1878, 2822, 2822, 1492,
     616     1877,    0, 1876,    0,    0,    0,    0, 1874, 1447, 1444,
     617
     618     1874, 1449, 1471, 1479, 1450, 1480, 1482, 1469, 1873, 1486,
     619     1490, 1488, 1502, 1452, 1510, 1504, 1491, 1519, 1506, 1498,
     620     1508, 1512, 1513, 1514, 1515, 1872, 1870, 1517, 1867, 1866,
     621     1518, 1520, 1523, 1865, 1521, 1525,    0,    0,    0, 1860,
     622     1857, 1856, 1575,    0, 1855, 1853, 1850, 1849, 1848, 1849,
     623     1846, 1845, 1844, 1531, 1536, 1527, 1528, 1552, 1533, 1537,
     624     1539, 1555, 1557, 1569, 1842, 1560, 1839, 1561, 1559, 1568,
     625     1572, 1567, 1573, 1838, 1837, 1835, 1828, 1574, 1826, 1825,
     626     1819, 1818, 1817, 1815, 1798, 1789, 1788, 1785, 1778, 1775,
     627     1768, 1766, 1576, 1768, 1577, 1581, 1580, 1579, 1584, 1585,
     628
     629     1747, 1586, 1615, 1590, 1746, 1591, 1592, 1602, 1600, 1594,
     630     1606, 1742, 1735, 1733, 1732, 1690, 1689, 1686, 1685, 1683,
     631     1682, 1678, 1677, 1674, 1676, 1607, 1611, 1614, 1612, 1608,
     632     1616, 1620, 1675, 1623, 1624, 1530, 1453, 1630, 1625, 1629,
     633     1438, 1354, 1319, 1318, 1267, 1212, 1210, 1208, 1631, 1636,
     634     1178, 1639, 1635, 1643, 1177, 1644, 1646, 1650, 1126,  964,
     635      937,  903, 1651, 1652, 1654, 1655, 1656, 1658,  788,  752,
     636     1660,  607,  487, 1662, 1663,  394,  357, 1664, 1666, 1668,
     637     1670, 1669, 1672, 1674,  233,  137, 2822, 1747, 1760, 1773,
     638     1783, 1793, 1806, 1816, 1829, 1842, 1855, 1863, 1873, 1880,
     639
     640     1887, 1894, 1901, 1908, 1915, 1922, 1929, 1936, 1949, 1956,
     641     1960, 1968, 1971, 1978, 1985, 1992, 1995, 2002, 2008, 2021,
     642     2034, 2041, 2048, 2055, 2062, 2065, 2072, 2075, 2082, 2085,
     643     2092, 2095, 2102, 2105, 2112, 2115, 2122, 2125, 2132, 2140,
     644     2147, 2154, 2161, 2168, 2171, 2178, 2181, 2188, 2191, 2198,
     645     2204, 2217, 2224, 2231, 2234, 2241, 2244, 2251, 2254, 2261,
     646     2264, 2271, 2274, 2281, 2284, 2291, 2298, 2301, 2308, 2311,
     647     2318, 2325, 2332, 2335, 2342, 2345, 2352, 2355, 2362, 2365,
     648     2372, 2375, 2382, 2388, 2401, 2408, 2415, 2418, 2425, 2428,
     649     2435, 2438, 2445, 2448, 2455, 2458, 2465, 2468, 2475, 2478,
     650
     651     2485, 2488, 2495, 2502, 2505, 2512, 2515, 2522, 2525, 2532,
     652     2535, 2538, 2544, 2551, 2560, 2567, 2574, 2577, 2584, 2587,
     653     2590, 2596, 2603, 2606, 2609, 2612, 2615, 2618, 2621, 2624,
     654     2631, 2634, 2641, 2644, 2647, 2650, 2653, 2663, 2670, 2673,
     655     2676, 2679, 2686, 2693, 2700, 2703, 2710, 2717, 2724, 2731,
     656     2738, 2745, 2752, 2759, 2766, 2773, 2780, 2787, 2794, 2801,
     657     2808
    658658    } ;
    659659
    660 static yyconst flex_int16_t yy_def[1063] =
     660static yyconst flex_int16_t yy_def[1062] =
    661661    {   0,
    662       888,    1,  889,  889,  888,    5,  890,  890,  891,  891,
    663       888,  888,  888,  888,  888,  888,  888,  892,  888,  888,
    664       888,  888,  888,  888,  888,  888,  888,  888,  888,  888,
    665       888,   31,  888,  888,  888,  888,  888,  888,  893,  892,
    666       888,  888,  888,  888,  892,  888,  892,  892,  892,  892,
    667       892,  892,  892,  892,  892,  892,  892,  892,  892,  892,
    668       892,  892,  888,  888,  888,  888,  888,  894,  888,  888,
    669       888,  895,  888,  888,  896,  888,  888,  897,  888,  888,
    670       888,  888,  888,  888,  888,  892,  888,  888,  888,  888,
    671       888,  888,  888,  888,  888,  888,  888,  888,  888,  888,
    672 
    673       898,  888,   99,   30,  888,  888,  888,  888,  899,   30,
    674       888,   31,  888,  888,   31,  888,  888,  888,  888,  888,
    675       888,  888,  888,  888,  888,  888,  888,  888,  888,  888,
    676       888,  888,  888,  888,  888,  888,  888,  888,  888,  888,
    677       900,  888,  888,  888,  888,  892,  901,  902,  888,  888,
    678       892,  892,  892,  892,  892,  892,  892,  892,  892,  892,
    679       892,  892,  892,  892,  892,  892,  892,  892,  892,  892,
    680       892,  892,  892,  892,  892,  892,  892,  892,  892,  892,
    681       892,  892,  892,  892,  892,  892,  892,  892,  892,  892,
    682       892,  892,  892,  892,  892,  888,  888,  888,  894,  894,
    683 
    684       894,  888,  894,  888,  895,  888,  903,  904,  896,  888,
    685       888,  888,  888,  905,  906,  907,  897,  888,  888,  888,
    686       888,  888,  888,  888,  888,  888,  888,  888,  888,  888,
    687       908,  909,  888,   99,  888,  888,  888,  888,   99,  910,
    688       888,  888,  104,  104,  888,  888,  888,  888,  888,  888,
    689       888,  888,  911,  912,  913,  888,  888,  888,  888,  888,
    690       888,  888,  888,  888,  888,  888,  888,  888,  888,  900,
    691       888,  914,  915,  916,  917,  918,  919,  888,  920,  920,
    692       920,  920,  920,  920,  920,  920,  920,  920,  920,  920,
    693       920,  920,  920,  920,  920,  920,  920,  920,  920,  920,
    694 
    695       920,  920,  920,  920,  920,  920,  920,  920,  920,  920,
    696       920,  920,  920,  920,  920,  920,  920,  920,  920,  920,
    697       920,  920,  920,  920,  920,  920,  920,  920,  920,  920,
    698       920,  920,  920,  920,  920,  920,  920,  920,  920,  920,
    699       920,  920,  920,  920,  921,  922,  923,  924,  925,  926,
    700       927,  928,  888,  888,  929,  930,  931,  932,  933,  934,
    701       888,  888,  888,  888,  888,  935,  936,  937,  938,  888,
    702       888,  888,  888,  888,  888,  888,  372,  377,  888,  888,
    703       939,  940,  941,  888,  888,  888,  941,  888,  888,  888,
    704       942,  943,  944,  945,  946,  947,  948,  949,  950,  951,
    705 
    706       888,  952,  952,  952,  952,  952,  952,  952,  952,  952,
    707       952,  952,  952,  952,  952,  952,  952,  952,  952,  952,
    708       952,  952,  952,  952,  952,  952,  952,  952,  952,  952,
    709       952,  952,  952,  952,  952,  952,  952,  952,  952,  952,
    710       952,  952,  952,  952,  952,  952,  952,  952,  952,  952,
    711       952,  952,  952,  952,  952,  952,  952,  952,  952,  952,
    712       952,  952,  952,  952,  952,  952,  952,  952,  953,  954,
    713       955,  956,  957,  958,  959,  960,  961,  888,  962,  963,
    714       964,  965,  966,  966,  967,  968,  969,  970,  888,  489,
    715       888,  971,  888,  971,  888,  888,  888,  888,  888,  888,
    716 
    717       888,  888,  972,  973,  974,  975,  976,  977,  978,  979,
    718       980,  981,  982,  983,  984,  985,  985,  985,  985,  985,
    719       985,  985,  985,  985,  985,  985,  985,  985,  985,  985,
    720       985,  985,  985,  985,  985,  985,  985,  985,  985,  985,
    721       985,  985,  985,  985,  985,  985,  985,  985,  985,  985,
    722       985,  985,  985,  985,  985,  985,  985,  985,  985,  985,
    723       985,  985,  985,  985,  985,  985,  985,  985,  985,  985,
    724       985,  985,  985,  985,  985,  985,  985,  986,  987,  988,
     662      887,    1,  888,  888,  887,    5,  889,  889,  890,  890,
     663      887,  887,  887,  887,  887,  887,  887,  891,  887,  887,
     664      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     665      887,   31,  887,  887,  887,  887,  887,  887,  892,  891,
     666      887,  887,  887,  887,  891,  887,  891,  891,  891,  891,
     667      891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
     668      891,  891,  887,  887,  887,  887,  887,  893,  887,  887,
     669      887,  894,  887,  887,  895,  887,  887,  896,  887,  887,
     670      887,  887,  887,  887,  887,  891,  887,  887,  887,  887,
     671      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     672
     673      897,  887,   99,   30,  887,  887,  887,  887,  898,   30,
     674      887,   31,  887,  887,   31,  887,  887,  887,  887,  887,
     675      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     676      887,  887,  887,  887,  887,  887,  887,  887,  887,  899,
     677      887,  887,  887,  887,  891,  900,  901,  887,  887,  891,
     678      891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
     679      891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
     680      891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
     681      891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
     682      891,  891,  891,  891,  887,  887,  887,  893,  893,  893,
     683
     684      887,  893,  887,  894,  887,  902,  903,  895,  887,  887,
     685      887,  887,  904,  905,  906,  896,  887,  887,  887,  887,
     686      887,  887,  887,  887,  887,  887,  887,  887,  887,  907,
     687      908,  887,   99,  887,  887,  887,  887,   99,  909,  887,
     688      887,  104,  104,  887,  887,  887,  887,  887,  887,  887,
     689      887,  910,  911,  912,  887,  887,  887,  887,  887,  887,
     690      887,  887,  887,  887,  887,  887,  887,  887,  899,  887,
     691      913,  914,  915,  916,  917,  918,  887,  919,  919,  919,
     692      919,  919,  919,  919,  919,  919,  919,  919,  919,  919,
     693      919,  919,  919,  919,  919,  919,  919,  919,  919,  919,
     694
     695      919,  919,  919,  919,  919,  919,  919,  919,  919,  919,
     696      919,  919,  919,  919,  919,  919,  919,  919,  919,  919,
     697      919,  919,  919,  919,  919,  919,  919,  919,  919,  919,
     698      919,  919,  919,  919,  919,  919,  919,  919,  919,  919,
     699      919,  919,  919,  920,  921,  922,  923,  924,  925,  926,
     700      927,  887,  887,  928,  929,  930,  931,  932,  933,  887,
     701      887,  887,  887,  887,  934,  935,  936,  937,  887,  887,
     702      887,  887,  887,  887,  887,  371,  376,  887,  887,  938,
     703      939,  940,  887,  887,  887,  940,  887,  887,  887,  941,
     704      942,  943,  944,  945,  946,  947,  948,  949,  950,  887,
     705
     706      951,  951,  951,  951,  951,  951,  951,  951,  951,  951,
     707      951,  951,  951,  951,  951,  951,  951,  951,  951,  951,
     708      951,  951,  951,  951,  951,  951,  951,  951,  951,  951,
     709      951,  951,  951,  951,  951,  951,  951,  951,  951,  951,
     710      951,  951,  951,  951,  951,  951,  951,  951,  951,  951,
     711      951,  951,  951,  951,  951,  951,  951,  951,  951,  951,
     712      951,  951,  951,  951,  951,  951,  951,  952,  953,  954,
     713      955,  956,  957,  958,  959,  960,  887,  961,  962,  963,
     714      964,  965,  965,  966,  967,  968,  969,  887,  488,  887,
     715      970,  887,  970,  887,  887,  887,  887,  887,  887,  887,
     716
     717      887,  971,  972,  973,  974,  975,  976,  977,  978,  979,
     718      980,  981,  982,  983,  984,  984,  984,  984,  984,  984,
     719      984,  984,  984,  984,  984,  984,  984,  984,  984,  984,
     720      984,  984,  984,  984,  984,  984,  984,  984,  984,  984,
     721      984,  984,  984,  984,  984,  984,  984,  984,  984,  984,
     722      984,  984,  984,  984,  984,  984,  984,  984,  984,  984,
     723      984,  984,  984,  984,  984,  984,  984,  984,  984,  984,
     724      984,  984,  984,  984,  984,  984,  985,  986,  987,  988,
    725725      989,  990,  991,  992,  993,  994,  995,  996,  997,  998,
    726       999, 1000, 1001, 1002,  888,  888,  888,  888, 1003,  888,
    727 
    728       597,  888,  888,  888,  601,  888, 1004, 1005, 1006, 1007,
    729      1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1014, 1014,
    730      1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014,
    731      1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014,
    732      1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014,
    733      1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014,
    734      1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1016,
    735       888, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025,
    736      1026,  888, 1027, 1028, 1029, 1030,  888,  687,  888,  888,
    737       888, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039,
    738 
    739      1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039,
    740      1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039,
    741      1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039,
    742      1039, 1039, 1039, 1039, 1039, 1039, 1039, 1040, 1041, 1042,
    743      1043, 1044, 1045,  888, 1046, 1031, 1033, 1047, 1048, 1038,
    744      1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039,
    745      1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039,
    746      1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039,
    747      1039, 1049, 1050, 1043, 1051, 1044, 1052, 1045, 1053, 1054,
    748      1047, 1055, 1048, 1039, 1039, 1039, 1039, 1039, 1039, 1039,
    749 
    750      1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039,
    751      1039, 1039, 1056, 1049, 1057, 1050, 1058, 1051, 1059, 1052,
    752      1060, 1053, 1061, 1054, 1055, 1039, 1039, 1039, 1039, 1039,
    753      1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039,
    754      1039, 1062, 1056, 1057, 1058, 1059, 1033, 1060, 1061, 1039,
    755      1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039,
    756      1039, 1062, 1033, 1039, 1039, 1039, 1039, 1039, 1039, 1039,
    757      1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039,
    758      1039, 1039, 1039, 1039, 1039, 1039, 1039,    0,  888,  888,
    759       888,  888,  888,  888,  888,  888,  888,  888,  888,  888,
    760 
    761       888,  888,  888,  888,  888,  888,  888,  888,  888,  888,
    762       888,  888,  888,  888,  888,  888,  888,  888,  888,  888,
    763       888,  888,  888,  888,  888,  888,  888,  888,  888,  888,
    764       888,  888,  888,  888,  888,  888,  888,  888,  888,  888,
    765       888,  888,  888,  888,  888,  888,  888,  888,  888,  888,
    766       888,  888,  888,  888,  888,  888,  888,  888,  888,  888,
    767       888,  888,  888,  888,  888,  888,  888,  888,  888,  888,
    768       888,  888,  888,  888,  888,  888,  888,  888,  888,  888,
    769       888,  888,  888,  888,  888,  888,  888,  888,  888,  888,
    770       888,  888,  888,  888,  888,  888,  888,  888,  888,  888,
    771 
    772       888,  888,  888,  888,  888,  888,  888,  888,  888,  888,
    773       888,  888,  888,  888,  888,  888,  888,  888,  888,  888,
    774       888,  888,  888,  888,  888,  888,  888,  888,  888,  888,
    775       888,  888,  888,  888,  888,  888,  888,  888,  888,  888,
    776       888,  888,  888,  888,  888,  888,  888,  888,  888,  888,
    777       888,  888,  888,  888,  888,  888,  888,  888,  888,  888,
    778       888,  888
     726      999, 1000, 1001,  887,  887,  887,  887, 1002,  887,  596,
     727
     728      887,  887,  887,  600,  887, 1003, 1004, 1005, 1006, 1007,
     729     1008, 1009, 1010, 1011, 1012, 1013, 1014, 1013, 1013, 1013,
     730     1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013,
     731     1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013,
     732     1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013,
     733     1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013,
     734     1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1015,  887,
     735     1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025,
     736      887, 1026, 1027, 1028, 1029,  887,  686,  887,  887,  887,
     737     1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1038,
     738
     739     1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038,
     740     1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038,
     741     1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038,
     742     1038, 1038, 1038, 1038, 1038, 1038, 1039, 1040, 1041, 1042,
     743     1043, 1044,  887, 1045, 1030, 1032, 1046, 1047, 1037, 1038,
     744     1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038,
     745     1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038,
     746     1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038,
     747     1048, 1049, 1042, 1050, 1043, 1051, 1044, 1052, 1053, 1046,
     748     1054, 1047, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038,
     749
     750     1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038,
     751     1038, 1055, 1048, 1056, 1049, 1057, 1050, 1058, 1051, 1059,
     752     1052, 1060, 1053, 1054, 1038, 1038, 1038, 1038, 1038, 1038,
     753     1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038,
     754     1061, 1055, 1056, 1057, 1058, 1032, 1059, 1060, 1038, 1038,
     755     1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038,
     756     1061, 1032, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038,
     757     1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038,
     758     1038, 1038, 1038, 1038, 1038, 1038,    0,  887,  887,  887,
     759      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     760
     761      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     762      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     763      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     764      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     765      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     766      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     767      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     768      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     769      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     770      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     771
     772      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     773      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     774      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     775      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     776      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     777      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     778      887
    779779    } ;
    780780
    781 static yyconst flex_int16_t yy_nxt[2903] =
     781static yyconst flex_int16_t yy_nxt[2908] =
    782782    {   0,
    783783       12,   13,   14,   15,   15,   15,   13,   16,   17,   12,
     
    800800       72,   72,   72,   72,   72,   72,   72,   72,   72,   72,
    801801       72,   72,   72,   72,   72,   71,   71,   71,   71,   76,
    802        76,   79,   79,  117,  118,   90,   87,   79,   79,  628,
     802       76,   79,   79,  123,  124,   90,  141,   79,   79,   87,
    803803       76,   76,   80,   81,   82,   82,   82,   80,   82,   81,
    804804
    805        83,   83,   83,   82,   91,   93,  124,  125,  147,   98,
    806        95,   99,   99,   99,   99,   99,   99,   87,   87,   94,
    807       100,   85,   96,   97,   85,  101,   87,  119,  142,   77,
    808        77,   77,   77,   87,  148,  102,  103,  162,  104,  104,
    809       104,  104,  105,  105,  120,  144,  121,  122,  183,  143,
    810       145,  149,   87,  150,  160,  106,  161,   87,  196,  107,
    811       207,  151,  152,  153,   87,  108,  109,  154,  155,  163,
    812       156,  110,   87,  157,  158,  178,  164,  106,   87,   87,
    813       251,  159,  165,  111,   87,  253,  208,   87,  184,   87,
    814       194,  108,  146,   87,  109,  103,   87,  112,  112,  112,
    815 
    816       112,  112,  112,   87,  252,  181,  179,  231,  170,  197,
    817       171,  182,  166,  180,  106,   87,  167,   87,  113,  172,
    818       255,  168,   87,   87,  114,  169,   87,  173,  259,  195,
    819       115,  888,  264,  232,  265,  174,  106,  175,  189,  249,
    820       176,  257,  116,  318,  177,  250,  190,  258,   87,  144,
    821       114,  126,  260,  191,  145,  127,  128,   87,  129,   87,
    822       130,  131,  264,  132,  265,  133,  261,  192,  272,  185,
    823       186,  250,   87,  258,  134,  135,  136,  281,  264,  187,
    824       265,  283,  188,  198,   81,   82,   82,   82,  198,   87,
    825       264,  199,  265,   87,  273,  137,  146,   87,  138,   80,
    826 
    827        81,   82,   82,   82,   80,  284,  201,  202,   87,  287,
    828       193,  201,   82,   81,   82,   82,   82,   82,   82,   81,
    829        83,   83,   83,   82,  299,  139,  140,  203,  203,  203,
    830       203,  203,  203,  210,  211,  250,   87,  888,  210,  710,
    831       212,  243,  243,  243,  243,  212,   99,   99,   99,   99,
    832        99,   99,  258,  249,  213,  213,  213,  213,  264,  266,
    833       265,  250,   87,  267,  264,  212,  265,  888,  266,  888,
    834       257,  301,  256,  264,  244,  265,   87,   87,  258,  242,
    835       264,  214,  265,   87,  212,  264,  268,  265,   87,  212,
    836       212,   87,  279,  212,  212,  888,  264,  888,  265,  280,
    837 
    838       264,  212,  265,  310,  212,  286,  212,  215,  212,  144,
    839       216,  218,   87,  300,  145,  219,  220,   87,  435,   87,
    840       221,  222,   87,  223,  103,  224,  105,  105,  105,  105,
    841       105,  105,  315,   87,  225,  226,  227,  282,  304,  246,
    842       285,  246,   87,  106,  247,  247,  247,  247,  247,  247,
    843        87,  305,   87,   87,   87,  228,   87,   87,  229,  245,
    844       307,   87,   87,  302,  303,  106,  288,  289,  290,  306,
    845       291,  292,   87,   87,  293,  308,  294,  248,  311,  309,
    846        87,  295,  296,  297,  314,  298,  230,  234,  234,  234,
    847       234,  234,  234,   87,   87,  320,   87,  316,  312,  319,
    848 
    849        87,   87,   87,  235,  236,  237,  324,  238,  237,  144,
    850        87,  321,  317,   87,  347,   87,  313,  323,  322,   87,
    851       239,   87,   87,  466,  326,  237,  236,  237,  329,  325,
    852       238,   87,  237,  330,  327,  328,  332,   87,  338,   87,
    853       348,  335,  336,   87,   87,   87,   87,  361,  407,  362,
    854       331,  333,  334,   87,   87,  379,  339,  340,  342,  344,
    855       343,  361,   87,  362,  337,  341,  198,   81,   82,   82,
    856        82,  198,  201,  202,  199,  210,  211,  201,  201,  202,
    857       210,  379,  408,  201,  345,  202,  361,   87,  362,  345,
    858       361,  346,  362,  203,  203,  203,  203,  203,  203,  203,
    859 
    860       203,  203,  203,  203,  203,  203,  203,  203,  203,  203,
    861       203,  353,  353,  353,  353,  362,  362,  363,  361,  361,
    862       362,  362,  361,  364,  362,  361,   87,  362,  361,  361,
    863       362,  362,  361,  370,  362,  370,  370,  888,   87,  264,
    864       371,  265,  371,  406,  354,  372,  372,  372,  372,  372,
    865       372,  389,  374,  264,  374,  265,  370,  374,  370,  391,
    866       235,  236,  237,  570,  238,  237,  247,  247,  247,  247,
    867       247,  247,  376,   87,  374,   87,  374,  389,  373,   87,
    868       409,  374,  237,  236,  237,  392,  402,  238,  888,  237,
    869       105,  105,  105,  105,  105,  105,  246,  403,  246,   87,
    870 
    871        87,  247,  247,  247,  247,  247,  247,  106,  105,  105,
    872       105,  105,  105,  105,  382,   87,  405,  404,   87,   87,
    873       420,   87,   87,  256,  361,   87,  362,   87,  717,  106,
    874       377,  377,  377,  377,  377,  377,  421,  384,  410,  385,
    875       415,  256,  414,  386,   87,   87,  235,  416,  237,  387,
    876       238,  237,  112,  112,  112,  112,  112,  112,   87,  417,
    877       411,  388,   87,  378,   87,  385,  412,  413,  237,  386,
    878       237,  422,   87,  238,   87,  237,   87,   87,  418,  419,
    879        87,  426,   87,   87,   87,  261,  427,  428,   87,   87,
    880       424,  423,  425,  433,  434,   87,   87,   87,   87,   87,
    881 
    882        87,  430,  429,  438,   87,  431,  432,  437,  440,  442,
    883        87,   87,  439,   87,  436,  441,  443,   87,  444,   87,
    884        87,   87,   87,   87,   87,   87,   87,   87,   87,  446,
    885       448,  449,   87,   87,   87,  445,  450,  447,  452,   87,
    886        87,  451,  457,   87,  456,  453,  455,  454,  144,   87,
    887       458,   87,  463,  462,   87,  459,  460,  461,   87,  467,
    888        87,  345,  202,  202,  465,  501,  345,  464,  346,  200,
    889       361,  516,  362,  468,  212,  212,  212,  212,  353,  353,
    890       353,  353,  372,  372,  372,  372,  372,  372,  371,  502,
    891       371,   87,   87,  372,  372,  372,  372,  372,  372,  234,
    892 
    893       234,  234,  234,  234,  234,   87,  518,  478,  489,  489,
    894       489,  489,  489,  489,  243,  243,  243,  243,  105,  105,
    895        87,  517,   87,  757,  235,  496,  237,  533,  238,  237,
    896       493,  497,  375,  377,  377,  377,  377,  377,  377,  493,
    897       494,  490,  497,   87,  382,   87,  237,  376,  237,  495,
    898        87,  238,   87,  237,  520,   87,  493,  497,   87,  888,
    899       496,  521,  519,  888,  522,  493,  378,  384,  497,  385,
    900        87,  525,   87,  386,  523,  498,  536,  498,   87,  387,
    901       499,  499,  499,  499,  499,  499,  384,  524,  385,   87,
    902        87,  388,  386,   87,  527,  385,   87,   87,  503,  386,
    903 
    904        87,   87,   87,  528,   87,  526,   87,  538,   87,   87,
    905       388,   87,  540,  500,  385,  531,  529,  530,  386,  532,
    906        87,  534,   87,  537,   87,  541,  544,  539,  535,   87,
    907       543,   87,  542,   87,   87,  545,   87,  547,   87,   87,
    908        87,   87,  549,   87,  548,   87,   87,  546,   87,  550,
    909        87,   87,   87,   87,  553,  557,  551,   87,  555,  560,
    910       552,  556,  554,   87,   87,  558,   87,   87,  559,   87,
    911        87,  568,  561,  562,  564,  565,  569,  563,   87,   87,
    912       567,  566,   87,   87,   87,  202,  572,   87,   87,   87,
    913       575,  578,  571,  577,  493,  493,  573,   87,  627,  574,
    914 
    915       212,  212,  212,  212,  494,  576,  489,  489,  489,  489,
    916       489,  489,  377,  377,  377,  377,  377,  377,   87,  624,
    917       493,  493,  235,  596,  237,  596,  238,  237,  597,  597,
    918       597,  597,  597,  597,  600,  619,   87,  493,   87,  490,
    919        87,  626,   87,  634,  237,  491,  237,  599,  660,  238,
    920        87,  237,  499,  499,  499,  499,  499,  499,   87,   87,
    921       600,  598,  622,  493,  601,  601,  601,  601,  601,  601,
    922       629,  620,  637,   87,  621,   87,   87,   87,  642,   87,
    923       602,  498,  603,  498,  604,  603,  499,  499,  499,  499,
    924       499,  499,  623,   87,  631,   87,   87,  605,  632,   87,
    925 
    926        87,   87,  603,   87,  603,  633,  625,  604,   87,  603,
    927       630,  635,  636,   87,   87,  643,   87,  638,   87,   87,
    928        87,   87,   87,  641,   87,  639,   87,  644,   87,   87,
    929       640,  648,   87,  645,  646,  647,   87,  649,  651,   87,
    930        87,  650,   87,   87,  652,  654,   87,  653,  655,   87,
    931        87,  656,   87,   87,  665,   87,  658,  662,  657,  661,
    932        87,   87,   87,  659,  666,  664,   87,   87,   87,   87,
    933        87,  667,  888,  689,  663,  702,  735,   87,  703,  668,
    934       669,  489,  489,  489,  489,  489,  489,  597,  597,  597,
    935       597,  597,  597,  596,  705,  596,  689,   87,  597,  597,
    936 
    937       597,  597,  597,  597,  601,  601,  601,  601,  601,  601,
    938       704,  689,  689,  888,  595,  687,  687,  687,  687,  687,
    939       687,  690,   87,  690,   87,   87,  690,  700,   87,   87,
    940        87,  602,  707,  603,  689,  604,  603,  605,  708,   87,
    941       701,  711,   87,  690,   87,  690,  709,  706,  688,   87,
    942       690,   87,   87,  603,  719,  603,   87,  713,  604,   87,
    943       603,  712,   87,   87,   87,   87,  714,   87,  715,  718,
    944        87,  716,  722,   87,  720,   87,  721,   87,   87,  725,
    945       723,   87,   87,   87,  728,   87,  724,   87,  726,  727,
    946       732,   87,  733,  729,   87,  731,  734,   87,  737,   87,
    947 
    948       736,  863,  758,  888,  730,  687,  687,  687,  687,  687,
    949       687,  601,  601,  601,  601,  601,  601,   87,  751,   87,
    950       753,  602,   87,  603,  755,  604,  603,  752,   87,  754,
    951        87,   87,   87,   87,   87,  765,  760,   87,  688,   87,
    952       763,  762,  766,  603,  691,  603,  759,  761,  604,   87,
    953       603,  756,  768,   87,  764,   87,  769,   87,  767,   87,
    954        87,   87,   87,   87,   87,  771,   87,   87,  770,  772,
    955        87,  775,   87,  773,   87,   87,   87,  804,   87,   87,
    956       780,   87,  774,  781,   87,   87,  776,  777,  778,  796,
    957       797,  779,  687,  687,  687,  687,  687,  687,  795,  794,
    958 
    959        87,   87,  801,   87,   87,   87,  802,   87,  799,   87,
    960       798,   87,  805,   87,  806,   87,   87,  803,  800,  808,
    961       807,   87,  810,   87,  809,  744,   87,   87,   87,   87,
    962        87,  829,   87,   87,  834,  831,  832,   87,  811,   87,
    963        87,   87,  835,   87,  837,   87,  812,  828,  827,   87,
    964        87,   87,  830,  826,  838,  833,   87,   87,  839,  840,
    965        87,  841,  836,  851,   87,   87,  853,  852,   87,   87,
    966        87,  850,  856,  858,   87,   87,   87,  859,   87,   87,
    967        87,  865,   87,  854,  860,  857,   87,  861,  864,  855,
    968        87,  868,  867,  866,   87,   87,   87,  869,  870,  871,
    969 
    970       872,   87,   87,   87,   87,  874,   87,  876,   87,  877,
    971        87,   87,   87,  875,   87,   87,  873,   87,   87,   87,
    972       888,  881,   87,  888,  888,  862,  880,  882,   87,   87,
    973       878,  879,  887,   87,   87,   87,  885,  883,  884,  888,
    974       888,  886,   69,   69,   69,   69,   69,   69,   69,   69,
    975        69,   69,   69,   69,   69,   75,   75,   75,   75,   75,
    976        75,   75,   75,   75,   75,   75,   75,   75,   78,   78,
    977        78,   78,   78,   78,   78,   78,   78,   78,   78,   78,
    978        78,   86,  849,  888,   86,  848,   86,   86,   86,   86,
    979        86,  141,  888,  846,  888,  141,  141,  141,  141,  141,
    980 
    981       141,  200,  200,  200,  200,  200,  200,  200,  200,  200,
    982       200,  200,  200,  200,  205,  845,  888,  205,  844,  205,
    983       205,  205,  205,  205,  209,  888,  209,  209,  843,  209,
    984       209,  209,  209,  209,  209,   87,  209,  217,   87,   87,
    985       217,  217,  217,  217,  217,  217,  217,  217,  888,  217,
    986       240,  240,  240,  240,  240,  240,  240,  240,  240,  240,
    987       240,  240,  240,  254,  254,  825,  254,  888,  824,  822,
    988       254,  270,  888,  820,  270,  888,  270,  270,  270,  270,
    989       270,  274,  818,  274,  888,  816,  814,  274,  276,   87,
    990       276,   87,   87,   87,  276,  349,   87,  349,   87,   87,
    991 
    992        87,  349,  351,   87,  351,   87,   87,   87,  351,  355,
    993       888,  355,  793,  791,  888,  355,  357,  888,  357,  788,
    994       786,  784,  357,  359,   87,  359,   87,   87,   87,  359,
    995       366,   87,  366,   87,   87,  750,  366,  368,  747,  368,
    996       746,  744,  206,  368,  240,  240,  240,  240,  240,  240,
    997       240,  240,  240,  240,  240,  240,  240,  381,  740,  381,
    998       383,  383,  739,  383,  383,  383,  671,  383,  254,  254,
    999        87,  254,  393,   87,  393,   87,   87,   87,  393,  395,
    1000        87,  395,   87,   87,   87,  395,  397,   87,  397,   87,
    1001        87,   87,  397,  274,   87,  274,  399,   87,  399,  698,
    1002 
    1003       697,  695,  399,  276,  693,  276,   86,  691,  599,   86,
    1004       686,   86,   86,   86,   86,   86,  200,  200,  200,  200,
    1005       200,  200,  200,  200,  200,  200,  200,  200,  200,  469,
    1006       469,  469,  469,  469,  469,  469,  469,  469,  469,  469,
    1007       469,  469,  470,  685,  470,  683,  681,  679,  470,  472,
    1008       677,  472,  675,  673,  671,  472,  474,   87,  474,   87,
    1009        87,   87,  474,  349,   87,  349,  476,   87,  476,   87,
    1010        87,   87,  476,  351,   87,  351,  479,   87,  479,  618,
    1011       616,  614,  479,  355,  612,  355,  481,  610,  481,  608,
    1012       503,  606,  481,  357,  606,  357,  483,  595,  483,  594,
    1013 
    1014       592,  484,  483,  359,  484,  359,  485,  590,  485,  588,
    1015       586,  584,  485,  366,  582,  366,  487,  580,  487,   87,
    1016        87,   87,  487,  368,   87,  368,  492,   87,  492,   87,
    1017       492,   87,  492,  381,   87,  381,  515,  381,  513,  381,
    1018       383,  383,  511,  383,  383,  383,  509,  383,  504,  507,
    1019       504,  505,  491,  488,  504,  506,  486,  506,  362,  362,
    1020       484,  506,  508,  482,  508,  480,  477,  475,  508,  393,
    1021       473,  393,  510,  471,  510,   87,   87,   87,  510,  395,
    1022       401,  395,  512,  400,  512,  398,  396,  394,  512,  397,
    1023       271,  397,  514,  266,  514,  265,  390,  390,  514,  399,
    1024 
    1025       253,  399,   86,  380,  380,   86,  241,   86,   86,   86,
    1026        86,   86,  469,  469,  469,  469,  469,  469,  469,  469,
    1027       469,  469,  469,  469,  469,  579,  375,  579,  369,  367,
    1028       365,  579,  470,  361,  470,  581,  360,  581,  358,  356,
    1029       352,  581,  472,  350,  472,  583,  206,  583,  202,   87,
    1030       278,  583,  474,  277,  474,  585,  275,  585,  271,  266,
    1031       269,  585,  476,  266,  476,  587,  264,  587,  263,  262,
    1032       241,  587,  479,  233,  479,  589,   85,  589,   85,   87,
    1033       206,  589,  481,  204,  481,  483,   85,  483,  123,   87,
    1034       888,  483,  591,   70,  591,   70,  888,  888,  591,  485,
    1035 
    1036       888,  485,  593,  888,  593,  888,  888,  888,  593,  487,
    1037       888,  487,  492,  888,  492,  888,  492,  888,  492,  383,
    1038       888,  383,  888,  888,  888,  383,  607,  888,  607,  888,
    1039       888,  888,  607,  504,  888,  504,  609,  888,  609,  888,
    1040       888,  888,  609,  506,  888,  506,  611,  888,  611,  888,
    1041       888,  888,  611,  508,  888,  508,  613,  888,  613,  888,
    1042       888,  888,  613,  510,  888,  510,  615,  888,  615,  888,
    1043       888,  888,  615,  512,  888,  512,  617,  888,  617,  888,
    1044       888,  888,  617,  514,  888,  514,   86,  888,  888,   86,
    1045       888,   86,   86,   86,   86,   86,  670,  670,  670,  670,
    1046 
    1047       670,  670,  670,  670,  670,  670,  670,  670,  670,  672,
    1048       888,  672,  888,  888,  888,  672,  579,  888,  579,  674,
    1049       888,  674,  888,  888,  888,  674,  581,  888,  581,  676,
    1050       888,  676,  888,  888,  888,  676,  583,  888,  583,  678,
    1051       888,  678,  888,  888,  888,  678,  585,  888,  585,  680,
    1052       888,  680,  888,  888,  888,  680,  587,  888,  587,  682,
    1053       888,  682,  888,  888,  888,  682,  589,  888,  589,  684,
    1054       888,  684,  888,  888,  888,  684,  591,  888,  591,   86,
    1055       888,   86,  888,  888,  888,   86,  593,  888,  593,  492,
    1056       888,  492,  888,  888,  888,  492,  692,  888,  692,  888,
    1057 
    1058       888,  888,  692,  607,  888,  607,  694,  888,  694,  888,
    1059       888,  888,  694,  609,  888,  609,  696,  888,  696,  888,
    1060       888,  888,  696,  611,  888,  611,  141,  888,  141,  888,
    1061       888,  888,  141,  613,  888,  613,  699,  888,  699,  615,
    1062       888,  615,   86,  888,  888,   86,  888,   86,   86,   86,
    1063        86,   86,  617,  888,  617,  670,  670,  670,  670,  670,
    1064       670,  670,  670,  670,  670,  670,  670,  670,  738,  888,
    1065       738,  888,  888,  888,  738,  672,  888,  672,  205,  888,
    1066       205,  888,  888,  888,  205,  674,  888,  674,  741,  888,
    1067       741,  676,  888,  676,  205,  888,  888,  205,  888,  205,
    1068 
    1069       205,  205,  205,  205,  678,  888,  678,  742,  888,  742,
    1070       680,  888,  680,  682,  888,  682,  743,  888,  743,  684,
    1071       888,  684,   86,  888,   86,  745,  888,  745,  888,  888,
    1072       888,  745,  692,  888,  692,  270,  888,  270,  888,  888,
    1073       888,  270,  694,  888,  694,  748,  888,  748,  696,  888,
    1074       696,  141,  888,  141,  749,  888,  749,  888,  888,  888,
    1075       749,   86,  888,  888,   86,  888,   86,   86,   86,   86,
    1076        86,  782,  888,  782,  738,  888,  738,  205,  888,  205,
    1077       783,  888,  783,  888,  888,  888,  783,  785,  888,  785,
    1078       888,  888,  888,  785,  787,  888,  787,  888,  888,  888,
    1079 
    1080       787,  789,  888,  789,  790,  888,  790,  888,  888,  888,
    1081       790,  792,  888,  792,  888,  888,  888,  792,  813,  888,
    1082       813,  888,  888,  888,  813,  815,  888,  815,  888,  888,
    1083       888,  815,  817,  888,  817,  888,  888,  888,  817,  819,
    1084       888,  819,  888,  888,  888,  819,  821,  888,  821,  888,
    1085       888,  888,  821,  823,  888,  823,  888,  888,  888,  823,
    1086       617,  888,  617,  888,  888,  888,  617,  842,  888,  842,
    1087       888,  888,  888,  842,  678,  888,  678,  888,  888,  888,
    1088       678,  682,  888,  682,  888,  888,  888,  682,   86,  888,
    1089        86,  888,  888,  888,   86,  847,  888,  847,  888,  888,
    1090 
    1091       888,  847,  141,  888,  141,  888,  888,  888,  141,  205,
    1092       888,  205,  888,  888,  888,  205,   11,  888,  888,  888,
    1093       888,  888,  888,  888,  888,  888,  888,  888,  888,  888,
    1094       888,  888,  888,  888,  888,  888,  888,  888,  888,  888,
    1095       888,  888,  888,  888,  888,  888,  888,  888,  888,  888,
    1096       888,  888,  888,  888,  888,  888,  888,  888,  888,  888,
    1097       888,  888,  888,  888,  888,  888,  888,  888,  888,  888,
    1098       888,  888,  888,  888,  888,  888,  888,  888,  888,  888,
    1099       888,  888,  888,  888,  888,  888,  888,  888,  888,  888,
    1100       888,  888,  888,  888,  888,  888,  888,  888,  888,  888,
    1101 
    1102       888,  888
     805       83,   83,   83,   82,   91,   93,   87,  142,  146,   98,
     806       95,   99,   99,   99,   99,   99,   99,  252,  887,   94,
     807      100,   85,   96,   97,   85,  101,  161,  118,  143,   77,
     808       77,   77,   77,  144,  147,  102,  103,   87,  104,  104,
     809      104,  104,  105,  105,  119,   87,  120,  121,  148,  263,
     810      149,  264,  254,  260,  183,  106,  195,   87,  159,  107,
     811      160,  150,  151,  152,   87,  108,  109,  153,  154,  162,
     812      155,  110,   87,  156,  157,  145,  163,  106,   87,  182,
     813       87,  158,  164,  111,  206,   87,  263,   87,  264,   87,
     814       87,  108,  194,   87,  109,  103,  250,  112,  112,  112,
     815
     816      112,  112,  112,   87,  169,  177,  170,  196,  193,   87,
     817      207,  180,  165,  230,  106,  171,  166,  181,  113,  178,
     818      251,  167,   87,  258,  114,  168,  179,  172,   87,  263,
     819      115,  264,  248,   87,   87,  173,  106,  174,  249,  231,
     820      175,  143,  116,  263,  176,  264,  144,  259,  317,  283,
     821      114,  125,  280,  500,  249,  126,  127,   87,  128,  191,
     822      129,  130,  256,  131,  249,  132,   87,  265,  257,  184,
     823      185,  257,  248,   87,  133,  134,  135,  501,  188,  186,
     824      249,  263,  187,  264,  271,   87,  189,  265,  145,  256,
     825      305,  200,  201,  190,  257,  136,  200,  257,  137,  263,
     826
     827      887,  264,  192,  197,   81,   82,   82,   82,  197,   87,
     828      272,  198,  202,  202,  202,  202,  202,  202,   80,   81,
     829       82,   82,   82,   80,   87,  138,  139,  209,  210,  263,
     830      887,  264,  209,  282,  211,  255,  263,  267,  264,  211,
     831       82,   81,   82,   82,   82,   82,   87,  887,  212,  212,
     832      212,  212,   82,   81,   83,   83,   83,   82,  887,  211,
     833       99,   99,   99,   99,   99,   99,  242,  242,  242,  242,
     834      266,  263,  263,  264,  264,  213,  143,  263,  211,  264,
     835       87,  144,  375,  211,  211,   87,   87,  211,  211,   87,
     836       87,   87,  286,  241,  887,  211,   87,   87,  211,  243,
     837
     838      211,  214,  211,  281,  215,  217,  278,  284,  285,  218,
     839      219,  307,  298,  279,  220,  221,   87,  222,   87,  223,
     840       87,   87,  887,   87,  309,  300,   87,   87,  224,  225,
     841      226,  103,  303,  105,  105,  105,  105,  105,  105,   87,
     842      299,   87,  301,  302,   87,  304,  308,  310,   87,  227,
     843      106,  245,  228,  245,  306,   87,  246,  246,  246,  246,
     844      246,  246,   87,  313,   87,  315,  244,   87,   87,  311,
     845      314,   87,  106,   87,   87,   87,  323,   87,   87,  322,
     846      229,  233,  233,  233,  233,  233,  233,  312,  333,  247,
     847      319,  316,  328,  320,  318,   87,   87,  234,  235,  236,
     848
     849      321,  237,  236,   87,  324,   87,  325,  143,  335,  360,
     850      331,  361,   87,   87,  238,  337,  326,  327,   87,  236,
     851      235,  236,   87,  329,  237,  332,  236,  287,  288,  289,
     852      336,  290,  291,  334,   87,  292,   87,  293,  407,  360,
     853      330,  361,  294,  295,  296,   87,  297,  339,  360,  343,
     854      361,   87,  200,  201,  338,  340,  346,  200,  341,   87,
     855      342,  197,   81,   82,   82,   82,  197,  200,  201,  198,
     856      378,  361,  200,  202,  202,  202,  202,  202,  202,  344,
     857      201,  360,  347,  361,  344,  360,  345,  361,  202,  202,
     858      202,  202,  202,  202,  209,  210,  378,  143,  361,  209,
     859
     860      202,  202,  202,  202,  202,  202,  352,  352,  352,  352,
     861      360,   87,  361,  362,  360,  360,  361,  361,  360,  363,
     862      361,  360,  360,  361,  361,  369,  369,  370,  369,  370,
     863      435,   87,  371,  371,  371,  371,  371,  371,  373,  353,
     864      373,   87,  263,  373,  264,  263,   87,  264,  369,  402,
     865       87,  369,  234,  235,  236,  406,  237,  236,  388,  401,
     866      373,   87,  373,   87,   87,  372,  390,  373,  105,  105,
     867      105,  105,  105,  105,  236,  235,  236,  404,   87,  237,
     868      405,  236,  403,  408,  388,  106,  246,  246,  246,  246,
     869      246,  246,  391,   87,   87,   87,   87,   87,   87,  419,
     870
     871       87,  255,  425,  432,   87,  420,  434,  106,  376,  376,
     872      376,  376,  376,  376,  381,  409,  413,  105,  105,  105,
     873      105,  105,  105,   87,  234,  245,  236,  245,  237,  236,
     874      246,  246,  246,  246,  246,  246,   87,  383,  410,  384,
     875       87,  377,   87,  385,  411,  412,  236,   87,  236,  386,
     876      255,  237,   87,  236,  112,  112,  112,  112,  112,  112,
     877      414,  387,  415,  417,  418,  384,   87,  416,   87,  385,
     878       87,   87,   87,   87,   87,   87,   87,   87,   87,  421,
     879      427,  426,  433,   87,  437,   87,   87,  260,  423,  424,
     880       87,   87,  436,  429,  428,  422,   87,  430,  431,  439,
     881
     882       87,  438,   87,   87,  446,  441,  440,  442,  443,   87,
     883       87,   87,   87,   87,   87,  445,   87,   87,   87,   87,
     884       87,  448,  447,   87,   87,  444,  449,  451,   87,  456,
     885       87,  450,   87,   87,   87,  452,  455,  454,   87,  453,
     886      457,  462,  460,  461,   87,   87,  458,  464,   87,  515,
     887      459,  463,  465,  466,  344,  201,  201,   87,  887,  344,
     888      467,  345,  199,  211,  211,  211,  211,  352,  352,  352,
     889      352,  360,  360,  361,  361,  371,  371,  371,  371,  371,
     890      371,  370,  569,  370,  492,  492,  371,  371,  371,  371,
     891      371,  371,  887,   87,  493,  494,  477,  488,  488,  488,
     892
     893      488,  488,  488,  233,  233,  233,  233,  233,  233,  516,
     894      492,  492,   87,  234,   87,  236,   87,  237,  236,  242,
     895      242,  242,  242,  105,  105,  495,  381,  517,   87,   87,
     896      489,  496,   87,  518,   87,  236,  374,  236,  519,  520,
     897      237,  521,  236,  376,  376,  376,  376,  376,  376,  383,
     898       87,  384,  375,  496,   87,  385,  522,  496,  497,  887,
     899      497,  386,   87,  498,  498,  498,  498,  498,  498,   87,
     900      525,  495,  526,  387,   87,  524,  377,  384,  523,  496,
     901       87,  385,  383,   87,  384,   87,   87,  527,  385,   87,
     902       87,  532,   87,   87,  502,   87,  499,   87,  535,  528,
     903
     904      529,  537,  530,  531,  533,   87,  387,   87,   87,  541,
     905      384,  534,  538,   87,  385,   87,  536,   87,   87,   87,
     906      539,  540,   87,   87,  546,   87,   87,   87,  544,  542,
     907       87,  548,   87,   87,  547,  543,   87,   87,  549,   87,
     908      545,   87,  552,   87,   87,  550,  556,  554,  551,   87,
     909      559,   87,  553,  555,   87,   87,  557,   87,   87,  558,
     910       87,   87,   87,  564,  560,  567,  563,  568,   87,  561,
     911      566,  562,   87,  565,   87,   87,  571,   87,   87,  573,
     912      627,  201,  492,  570,  576,  574,  572,  577,  211,  211,
     913      211,  211,  493,   87,  575,  488,  488,  488,  488,  488,
     914
     915      488,  376,  376,  376,  376,  376,  376,   87,  492,   87,
     916      618,  234,  595,  236,  595,  237,  236,  596,  596,  596,
     917      596,  596,  596,  492,   87,  599,  492,  621,  489,   87,
     918       87,  623,   87,  236,  490,  236,  598,  619,  237,   87,
     919      236,  498,  498,  498,  498,  498,  498,  620,   87,  492,
     920      597,  599,  492,  600,  600,  600,  600,  600,  600,   87,
     921      631,  622,   87,  887,  625,  887,   87,  862,   87,  601,
     922      497,  602,  497,  603,  602,  498,  498,  498,  498,  498,
     923      498,  624,  628,   87,   87,  630,  604,   87,   87,   87,
     924       87,  602,  633,  602,  626,  636,  603,  632,  602,  629,
     925
     926      634,   87,   87,  635,   87,   87,   87,  642,   87,   87,
     927      637,  641,   87,   87,  640,   87,   87,  643,  647,  639,
     928       87,   87,  887,   87,   87,   87,  638,   87,   87,  644,
     929      645,  646,  648,  650,   87,   87,   87,  649,   87,  653,
     930      651,   87,  652,   87,  654,  655,   87,   87,   87,   87,
     931      656,  657,   87,  660,  659,  661,  664,   87,  658,   87,
     932       87,  663,   87,   87,   87,  668,  665,  688,  688,  662,
     933      666,  701,  702,  887,  887,   87,  667,  488,  488,  488,
     934      488,  488,  488,  596,  596,  596,  596,  596,  596,  595,
     935      688,  595,  704,   87,  596,  596,  596,  596,  596,  596,
     936
     937      600,  600,  600,  600,  600,  600,  703,  688,   87,  887,
     938      594,  686,  686,  686,  686,  686,  686,  689,   87,  689,
     939       87,   87,  689,  699,   87,  708,   87,  601,  706,  602,
     940      688,  603,  602,  604,  707,   87,  700,  710,  709,  689,
     941       87,  689,   87,  705,  687,   87,  689,   87,   87,  602,
     942       87,  602,   87,  716,  603,  718,  602,  712,   87,   87,
     943       87,   87,  711,   87,  714,   87,   87,  713,   87,  717,
     944      715,   87,  721,  719,   87,  724,   87,   87,  722,  720,
     945      727,   87,   87,   87,  725,   87,  731,  723,   87,  732,
     946      726,   87,   87,  861,  728,  734,   87,  733,  730,   87,
     947
     948      735,   87,   87,  729,   87,   87,  751,  736,  686,  686,
     949      686,  686,  686,  686,  600,  600,  600,  600,  600,  600,
     950      750,   87,  755,   87,  601,  763,  602,  752,  603,  602,
     951      753,   87,   87,  764,   87,  756,  754,  757,   87,  758,
     952       87,  687,   87,   87,  759,  767,  602,  690,  602,  761,
     953       87,  603,  766,  602,   87,  760,   87,  762,   87,  765,
     954       87,  768,   87,  769,   87,   87,   87,   87,  770,   87,
     955       87,   87,   87,   87,  771,   87,  774,   87,  772,   87,
     956       87,  779,   87,   87,  795,   87,  780,  773,   87,   87,
     957      776,   87,  775,  803,  777,  796,  778,  686,  686,  686,
     958
     959      686,  686,  686,  793,   87,  794,  799,   87,  798,   87,
     960      801,   87,   87,   87,  797,  804,  805,  800,  806,   87,
     961       87,   87,  802,  807,   87,   87,   87,  808,   87,   87,
     962      743,   87,   87,   87,  809,  828,   87,   87,   87,  830,
     963      831,  833,   87,   87,   87,  834,   87,  836,  810,  811,
     964      826,  827,   87,  829,   87,  825,  832,  837,   87,   87,
     965       87,  838,  839,   87,   87,  835,   87,   87,   87,  851,
     966      850,  855,   87,  852,  840,   87,   87,   87,  853,  857,
     967      849,   87,   87,   87,  854,  858,  859,   87,   87,  856,
     968      860,   87,  863,  864,  865,   87,   87,  866,   87,  868,
     969
     970      867,  869,   87,   87,   87,  870,   87,   87,   87,  873,
     971       87,  875,   87,  876,   87,   87,   87,  874,   87,  872,
     972       87,   87,   87,  871,   87,  880,   87,   87,   87,  887,
     973      879,  881,  887,  848,  877,  878,  886,  887,  847,  884,
     974      887,  845,  882,  883,  887,  844,  885,   69,   69,   69,
     975       69,   69,   69,   69,   69,   69,   69,   69,   69,   69,
     976       75,   75,   75,   75,   75,   75,   75,   75,   75,   75,
     977       75,   75,   75,   78,   78,   78,   78,   78,   78,   78,
     978       78,   78,   78,   78,   78,   78,   86,  887,  843,   86,
     979      887,   86,   86,   86,   86,   86,  140,  842,   87,   87,
     980
     981      140,  140,  140,  140,  140,  140,  199,  199,  199,  199,
     982      199,  199,  199,  199,  199,  199,  199,  199,  199,  204,
     983       87,  887,  204,  824,  204,  204,  204,  204,  204,  208,
     984      887,  208,  208,  823,  208,  208,  208,  208,  208,  208,
     985      821,  208,  216,  887,  819,  216,  216,  216,  216,  216,
     986      216,  216,  216,  887,  216,  239,  239,  239,  239,  239,
     987      239,  239,  239,  239,  239,  239,  239,  239,  253,  253,
     988      817,  253,  887,  815,  813,  253,  269,   87,   87,  269,
     989       87,  269,  269,  269,  269,  269,  273,   87,  273,   87,
     990       87,   87,  273,  275,   87,  275,   87,   87,   87,  275,
     991
     992      348,   87,  348,  887,  792,  790,  348,  350,  887,  350,
     993      887,  787,  785,  350,  354,  783,  354,   87,   87,   87,
     994      354,  356,   87,  356,   87,   87,   87,  356,  358,  749,
     995      358,  746,  745,  743,  358,  365,  205,  365,  739,  738,
     996      670,  365,  367,   87,  367,   87,   87,   87,  367,  239,
     997      239,  239,  239,  239,  239,  239,  239,  239,  239,  239,
     998      239,  239,  380,   87,  380,  382,  382,   87,  382,  382,
     999      382,   87,  382,  253,  253,   87,  253,  392,   87,  392,
     1000       87,   87,   87,  392,  394,   87,  394,   87,   87,  697,
     1001      394,  396,  696,  396,  694,  692,  690,  396,  273,  598,
     1002
     1003      273,  398,  685,  398,  684,  682,  680,  398,  275,  678,
     1004      275,   86,  676,  674,   86,  672,   86,   86,   86,   86,
     1005       86,  199,  199,  199,  199,  199,  199,  199,  199,  199,
     1006      199,  199,  199,  199,  468,  468,  468,  468,  468,  468,
     1007      468,  468,  468,  468,  468,  468,  468,  469,  670,  469,
     1008       87,   87,   87,  469,  471,   87,  471,   87,   87,   87,
     1009      471,  473,   87,  473,   87,   87,   87,  473,  348,  617,
     1010      348,  475,  615,  475,  613,  611,  609,  475,  350,  607,
     1011      350,  478,  502,  478,  605,  605,  594,  478,  354,  593,
     1012      354,  480,  591,  480,  483,  483,  589,  480,  356,  587,
     1013
     1014      356,  482,  585,  482,  583,  581,  579,  482,  358,   87,
     1015      358,  484,   87,  484,   87,   87,   87,  484,  365,   87,
     1016      365,  486,   87,  486,   87,  514,  512,  486,  367,  510,
     1017      367,  491,  508,  491,  506,  491,  504,  491,  380,  490,
     1018      380,  487,  380,  485,  380,  382,  382,  361,  382,  382,
     1019      382,  361,  382,  503,  483,  503,  481,  479,  476,  503,
     1020      505,  474,  505,  472,  470,   87,  505,  507,   87,  507,
     1021       87,  400,  399,  507,  392,  397,  392,  509,  395,  509,
     1022      393,  270,  265,  509,  394,  264,  394,  511,  389,  511,
     1023      389,  252,  379,  511,  396,  379,  396,  513,  240,  513,
     1024
     1025      374,  368,  366,  513,  398,  364,  398,   86,  360,  359,
     1026       86,  357,   86,   86,   86,   86,   86,  468,  468,  468,
     1027      468,  468,  468,  468,  468,  468,  468,  468,  468,  468,
     1028      578,  355,  578,  351,  349,  205,  578,  469,  201,  469,
     1029      580,   87,  580,  277,  276,  274,  580,  471,  270,  471,
     1030      582,  265,  582,  268,  265,  263,  582,  473,  262,  473,
     1031      584,  261,  584,  240,  232,   85,  584,  475,   85,  475,
     1032      586,   87,  586,  205,  203,   85,  586,  478,  122,  478,
     1033      588,  117,  588,   87,  887,   70,  588,  480,   70,  480,
     1034      482,  887,  482,  887,  887,  887,  482,  590,  887,  590,
     1035
     1036      887,  887,  887,  590,  484,  887,  484,  592,  887,  592,
     1037      887,  887,  887,  592,  486,  887,  486,  491,  887,  491,
     1038      887,  491,  887,  491,  382,  887,  382,  887,  887,  887,
     1039      382,  606,  887,  606,  887,  887,  887,  606,  503,  887,
     1040      503,  608,  887,  608,  887,  887,  887,  608,  505,  887,
     1041      505,  610,  887,  610,  887,  887,  887,  610,  507,  887,
     1042      507,  612,  887,  612,  887,  887,  887,  612,  509,  887,
     1043      509,  614,  887,  614,  887,  887,  887,  614,  511,  887,
     1044      511,  616,  887,  616,  887,  887,  887,  616,  513,  887,
     1045      513,   86,  887,  887,   86,  887,   86,   86,   86,   86,
     1046
     1047       86,  669,  669,  669,  669,  669,  669,  669,  669,  669,
     1048      669,  669,  669,  669,  671,  887,  671,  887,  887,  887,
     1049      671,  578,  887,  578,  673,  887,  673,  887,  887,  887,
     1050      673,  580,  887,  580,  675,  887,  675,  887,  887,  887,
     1051      675,  582,  887,  582,  677,  887,  677,  887,  887,  887,
     1052      677,  584,  887,  584,  679,  887,  679,  887,  887,  887,
     1053      679,  586,  887,  586,  681,  887,  681,  887,  887,  887,
     1054      681,  588,  887,  588,  683,  887,  683,  887,  887,  887,
     1055      683,  590,  887,  590,   86,  887,   86,  887,  887,  887,
     1056       86,  592,  887,  592,  491,  887,  491,  887,  887,  887,
     1057
     1058      491,  691,  887,  691,  887,  887,  887,  691,  606,  887,
     1059      606,  693,  887,  693,  887,  887,  887,  693,  608,  887,
     1060      608,  695,  887,  695,  887,  887,  887,  695,  610,  887,
     1061      610,  140,  887,  140,  887,  887,  887,  140,  612,  887,
     1062      612,  698,  887,  698,  614,  887,  614,   86,  887,  887,
     1063       86,  887,   86,   86,   86,   86,   86,  616,  887,  616,
     1064      669,  669,  669,  669,  669,  669,  669,  669,  669,  669,
     1065      669,  669,  669,  737,  887,  737,  887,  887,  887,  737,
     1066      671,  887,  671,  204,  887,  204,  887,  887,  887,  204,
     1067      673,  887,  673,  740,  887,  740,  675,  887,  675,  204,
     1068
     1069      887,  887,  204,  887,  204,  204,  204,  204,  204,  677,
     1070      887,  677,  741,  887,  741,  679,  887,  679,  681,  887,
     1071      681,  742,  887,  742,  683,  887,  683,   86,  887,   86,
     1072      744,  887,  744,  887,  887,  887,  744,  691,  887,  691,
     1073      269,  887,  269,  887,  887,  887,  269,  693,  887,  693,
     1074      747,  887,  747,  695,  887,  695,  140,  887,  140,  748,
     1075      887,  748,  887,  887,  887,  748,   86,  887,  887,   86,
     1076      887,   86,   86,   86,   86,   86,  781,  887,  781,  737,
     1077      887,  737,  204,  887,  204,  782,  887,  782,  887,  887,
     1078      887,  782,  784,  887,  784,  887,  887,  887,  784,  786,
     1079
     1080      887,  786,  887,  887,  887,  786,  788,  887,  788,  789,
     1081      887,  789,  887,  887,  887,  789,  791,  887,  791,  887,
     1082      887,  887,  791,  812,  887,  812,  887,  887,  887,  812,
     1083      814,  887,  814,  887,  887,  887,  814,  816,  887,  816,
     1084      887,  887,  887,  816,  818,  887,  818,  887,  887,  887,
     1085      818,  820,  887,  820,  887,  887,  887,  820,  822,  887,
     1086      822,  887,  887,  887,  822,  616,  887,  616,  887,  887,
     1087      887,  616,  841,  887,  841,  887,  887,  887,  841,  677,
     1088      887,  677,  887,  887,  887,  677,  681,  887,  681,  887,
     1089      887,  887,  681,   86,  887,   86,  887,  887,  887,   86,
     1090
     1091      846,  887,  846,  887,  887,  887,  846,  140,  887,  140,
     1092      887,  887,  887,  140,  204,  887,  204,  887,  887,  887,
     1093      204,   11,  887,  887,  887,  887,  887,  887,  887,  887,
     1094      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     1095      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     1096      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     1097      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     1098      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     1099      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     1100      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     1101
     1102      887,  887,  887,  887,  887,  887,  887
    11031103    } ;
    11041104
    1105 static yyconst flex_int16_t yy_chk[2903] =
     1105static yyconst flex_int16_t yy_chk[2908] =
    11061106    {   0,
    11071107        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
     
    11241124        5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
    11251125        5,    5,    5,    5,    5,    5,    5,    5,    5,    7,
    1126         8,    9,   10,   33,   33,   20,  526,    9,   10,  526,
     1126        8,    9,   10,   37,   37,   20,   39,    9,   10,  886,
    11271127        7,    8,   13,   13,   13,   13,   13,   13,   15,   15,
    11281128
    1129        15,   15,   15,   15,   20,   25,   37,   37,   42,   28,
    1130        27,   28,   28,   28,   28,   28,   28,   48,  887,   25,
    1131        29,   25,   27,   27,   27,   29,   56,   35,   39,    7,
    1132         8,    9,   10,   47,   42,   29,   30,   48,   30,   30,
    1133        30,   30,   30,   30,   35,   40,   35,   35,   56,   39,
    1134        40,   44,  886,   44,   47,   30,   47,   53,   64,   30,
    1135        73,   45,   45,   45,   49,   30,   30,   45,   45,   49,
    1136        45,   30,   61,   45,   45,   53,   49,   30,   45,   57,
    1137       108,   45,   49,   30,  878,  109,   73,   55,   57,   40,
    1138        61,   30,   40,   51,   30,   31,   54,   31,   31,   31,
    1139 
    1140        31,   31,   31,   50,  108,   55,   54,   87,   51,   64,
    1141        51,   55,   50,   54,   31,  877,   50,   62,   31,   51,
    1142       109,   50,   52,  176,   31,   50,   59,   52,  114,   62,
    1143        31,  115,  127,   87,  127,   52,   31,   52,   59,  107,
    1144        52,  113,   31,  176,   52,  107,   59,  113,  874,   60,
    1145        31,   38,  114,   59,   60,   38,   38,   58,   38,  152,
    1146        38,   38,  128,   38,  128,   38,  115,   60,  143,   58,
    1147        58,  107,  154,  113,   38,   38,   38,  152,  130,   58,
    1148       130,  154,   58,   67,   67,   67,   67,   67,   67,  155,
    1149       133,   67,  133,   60,  143,   38,   60,  158,   38,   80,
    1150 
    1151        80,   80,   80,   80,   80,  155,   68,   68,  160,  158,
    1152        60,   68,   82,   82,   82,   82,   82,   82,   83,   83,
    1153        83,   83,   83,   83,  160,   38,   38,   68,   68,   68,
    1154        68,   68,   68,   77,   77,  111,  628,  110,   77,  628,
    1155        77,  104,  104,  104,  104,   77,  103,  103,  103,  103,
    1156       103,  103,  116,  111,   77,   77,   77,   77,  135,  131,
    1157       135,  111,  162,  134,  134,   77,  134,  110,  132,  104,
    1158       116,  162,  110,  131,  104,  131,  169,  151,  116,  103,
    1159       132,   77,  132,  157,   77,  136,  136,  136,  873,   77,
    1160        77,  161,  151,   77,   77,  110,  138,  104,  138,  151,
    1161 
    1162       140,   77,  140,  169,   77,  157,   77,   77,   77,  146,
    1163        77,   85,  309,  161,  146,   85,   85,  173,  309,  153,
    1164        85,   85,  156,   85,  105,   85,  105,  105,  105,  105,
    1165       105,  105,  173,  164,   85,   85,   85,  153,  164,  106,
    1166       156,  106,  163,  105,  106,  106,  106,  106,  106,  106,
    1167       166,  164,  165,  146,  167,   85,  168,  170,   85,  105,
    1168       166,  159,  172,  163,  163,  105,  159,  159,  159,  165,
    1169       159,  159,  177,  178,  159,  167,  159,  106,  170,  168,
    1170       174,  159,  159,  159,  172,  159,   85,   99,   99,   99,
    1171        99,   99,   99,  171,  175,  178,  180,  174,  171,  177,
    1172 
    1173       181,  182,  183,   99,   99,   99,  182,   99,   99,  192,
    1174       185,  180,  175,  184,  206,  342,  171,  181,  180,  191,
    1175        99,  189,  186,  342,  184,   99,   99,   99,  185,  183,
    1176        99,  187,   99,  186,  184,  184,  187,  190,  191,  188,
    1177       206,  189,  190,  284,  193,  194,  195,  219,  284,  219,
    1178       186,  187,  188,  192,  871,  249,  192,  193,  194,  195,
    1179       194,  220,  285,  220,  190,  193,  198,  198,  198,  198,
    1180       198,  198,  199,  199,  198,  210,  210,  199,  201,  201,
    1181       210,  249,  285,  201,  203,  203,  221,  870,  221,  203,
    1182       224,  203,  224,  199,  199,  199,  199,  199,  199,  201,
    1183 
    1184       201,  201,  201,  201,  201,  203,  203,  203,  203,  203,
    1185       203,  213,  213,  213,  213,  222,  223,  225,  225,  226,
    1186       225,  226,  227,  227,  227,  229,  283,  229,  223,  222,
    1187       223,  222,  230,  237,  230,  235,  235,  244,  461,  267,
    1188       236,  267,  236,  283,  213,  236,  236,  236,  236,  236,
    1189       236,  257,  238,  268,  238,  268,  237,  238,  235,  271,
    1190       242,  242,  242,  461,  242,  242,  246,  246,  246,  246,
    1191       246,  246,  244,  279,  238,  286,  238,  257,  236,  280,
    1192       286,  238,  242,  242,  242,  271,  279,  242,  863,  242,
    1193       245,  245,  245,  245,  245,  245,  248,  280,  248,  281,
    1194 
    1195       282,  248,  248,  248,  248,  248,  248,  245,  256,  256,
    1196       256,  256,  256,  256,  254,  294,  282,  281,  287,  289,
    1197       294,  291,  290,  245,  363,  635,  363,  295,  635,  245,
    1198       247,  247,  247,  247,  247,  247,  295,  254,  287,  254,
    1199       290,  256,  289,  254,  292,  288,  247,  291,  247,  254,
    1200       247,  247,  261,  261,  261,  261,  261,  261,  296,  292,
    1201       288,  254,  293,  247,  297,  254,  288,  288,  247,  254,
    1202       247,  296,  298,  247,  300,  247,  301,  302,  293,  293,
    1203       303,  301,  304,  305,  306,  261,  302,  303,  307,  308,
    1204       298,  297,  300,  307,  308,  310,  313,  312,  311,  314,
    1205 
    1206       315,  305,  304,  312,  316,  306,  306,  311,  314,  316,
    1207       319,  317,  313,  318,  310,  315,  317,  321,  318,  320,
    1208       323,  324,  325,  327,  328,  326,  329,  330,  332,  319,
    1209       321,  323,  333,  331,  334,  318,  324,  320,  326,  335,
    1210       336,  325,  331,  338,  330,  327,  329,  328,  339,  340,
    1211       332,  341,  338,  336,  343,  333,  334,  335,  344,  343,
    1212       402,  345,  345,  346,  341,  386,  345,  340,  345,  346,
    1213       364,  402,  364,  344,  353,  353,  353,  353,  354,  354,
    1214       354,  354,  371,  371,  371,  371,  371,  371,  373,  386,
    1215       373,  404,  339,  373,  373,  373,  373,  373,  373,  375,
    1216 
    1217       375,  375,  375,  375,  375,  403,  404,  353,  372,  372,
    1218       372,  372,  372,  372,  376,  376,  376,  376,  376,  376,
    1219       707,  403,  418,  707,  372,  384,  372,  418,  372,  372,
    1220       381,  384,  375,  377,  377,  377,  377,  377,  377,  382,
    1221       381,  372,  388,  405,  383,  406,  372,  376,  372,  382,
    1222       407,  372,  409,  372,  406,  408,  381,  384,  411,  862,
    1223       388,  407,  405,  387,  408,  382,  377,  383,  388,  383,
    1224       420,  411,  413,  383,  409,  385,  420,  385,  410,  383,
    1225       385,  385,  385,  385,  385,  385,  387,  410,  387,  412,
    1226       414,  383,  387,  416,  413,  383,  422,  424,  387,  383,
    1227 
    1228       415,  417,  421,  414,  431,  412,  419,  422,  423,  430,
    1229       387,  426,  424,  385,  387,  416,  415,  415,  387,  417,
    1230       428,  419,  432,  421,  433,  426,  431,  423,  419,  435,
    1231       430,  434,  428,  436,  438,  432,  440,  434,  441,  442,
    1232       443,  445,  436,  444,  435,  450,  446,  433,  448,  438,
    1233       451,  452,  455,  453,  442,  446,  440,  454,  444,  451,
    1234       441,  445,  443,  457,  459,  448,  456,  458,  450,  460,
    1235       462,  459,  452,  453,  455,  456,  460,  454,  463,  465,
    1236       458,  457,  464,  467,  468,  469,  463,  525,  861,  860,
    1237       465,  469,  462,  468,  492,  495,  463,  522,  525,  464,
    1238 
    1239       478,  478,  478,  478,  492,  467,  489,  489,  489,  489,
    1240       489,  489,  491,  491,  491,  491,  491,  491,  516,  522,
    1241       492,  495,  489,  493,  489,  493,  489,  489,  493,  493,
    1242       493,  493,  493,  493,  496,  516,  524,  494,  532,  489,
    1243       565,  524,  520,  532,  489,  491,  489,  494,  565,  489,
    1244       527,  489,  498,  498,  498,  498,  498,  498,  517,  519,
    1245       496,  493,  520,  494,  499,  499,  499,  499,  499,  499,
    1246       527,  517,  535,  540,  519,  529,  856,  530,  540,  521,
    1247       499,  500,  499,  500,  499,  499,  500,  500,  500,  500,
    1248       500,  500,  521,  523,  529,  528,  531,  499,  530,  534,
    1249 
    1250       533,  535,  499,  537,  499,  531,  523,  499,  536,  499,
    1251       528,  533,  534,  538,  539,  542,  545,  536,  543,  546,
    1252       547,  542,  548,  539,  551,  537,  552,  543,  550,  553,
    1253       538,  548,  555,  545,  546,  547,  561,  550,  552,  558,
    1254       556,  551,  559,  562,  553,  556,  563,  555,  558,  566,
    1255       567,  559,  568,  569,  570,  572,  562,  567,  561,  566,
    1256       570,  573,  575,  563,  572,  569,  666,  576,  620,  621,
    1257       852,  573,  849,  603,  568,  620,  666,  623,  621,  575,
    1258       576,  595,  595,  595,  595,  595,  595,  596,  596,  596,
    1259       596,  596,  596,  598,  623,  598,  603,  622,  598,  598,
    1260 
    1261       598,  598,  598,  598,  601,  601,  601,  601,  601,  601,
    1262       622,  602,  602,  848,  595,  597,  597,  597,  597,  597,
    1263       597,  604,  619,  604,  624,  625,  604,  619,  629,  627,
    1264       626,  597,  625,  597,  602,  597,  597,  601,  626,  630,
    1265       619,  629,  631,  604,  632,  604,  627,  624,  597,  634,
    1266       604,  633,  636,  597,  637,  597,  639,  631,  597,  638,
    1267       597,  630,  641,  640,  642,  645,  632,  646,  633,  636,
    1268       643,  634,  640,  651,  638,  647,  639,  652,  654,  643,
    1269       641,  657,  637,  669,  647,  658,  642,  665,  645,  646,
    1270       657,  668,  658,  651,  703,  654,  665,  700,  669,  708,
    1271 
    1272       668,  847,  708,  846,  652,  687,  687,  687,  687,  687,
    1273       687,  691,  691,  691,  691,  691,  691,  701,  700,  705,
    1274       703,  687,  704,  687,  705,  687,  687,  701,  709,  704,
    1275       711,  706,  713,  715,  712,  716,  711,  714,  687,  717,
    1276       714,  713,  717,  687,  691,  687,  709,  712,  687,  718,
    1277       687,  706,  719,  720,  715,  721,  720,  722,  718,  723,
    1278       724,  725,  726,  729,  716,  722,  733,  732,  721,  723,
    1279       734,  726,  736,  724,  737,  758,  762,  765,  719,  755,
    1280       736,  756,  725,  737,  757,  760,  729,  732,  733,  757,
    1281       758,  734,  744,  744,  744,  744,  744,  744,  756,  755,
    1282 
    1283       759,  761,  762,  763,  764,  765,  763,  773,  760,  767,
    1284       759,  769,  767,  770,  769,  774,  771,  764,  761,  771,
    1285       770,  772,  773,  779,  772,  744,  794,  796,  798,  797,
    1286       799,  798,  800,  801,  804,  800,  801,  803,  774,  805,
    1287       807,  808,  805,  811,  808,  812,  779,  797,  796,  810,
    1288       827,  809,  799,  794,  809,  803,  828,  830,  810,  811,
    1289       804,  812,  807,  828,  829,  831,  830,  829,  833,  832,
    1290       836,  827,  832,  836,  839,  840,  851,  839,  841,  850,
    1291       864,  851,  854,  831,  840,  833,  855,  841,  850,  831,
    1292       853,  855,  854,  853,  857,  858,  859,  857,  858,  859,
    1293 
    1294       864,  865,  866,  867,  868,  866,  869,  868,  872,  869,
    1295       875,  876,  879,  867,  880,  881,  865,  882,  883,  884,
    1296       845,  879,  885,  844,  843,  842,  876,  880,  838,  837,
    1297       872,  875,  885,  835,  834,  826,  883,  881,  882,  825,
    1298       824,  884,  889,  889,  889,  889,  889,  889,  889,  889,
    1299       889,  889,  889,  889,  889,  890,  890,  890,  890,  890,
    1300       890,  890,  890,  890,  890,  890,  890,  890,  891,  891,
    1301       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    1302       891,  892,  823,  822,  892,  821,  892,  892,  892,  892,
    1303       892,  893,  820,  819,  818,  893,  893,  893,  893,  893,
    1304 
    1305       893,  894,  894,  894,  894,  894,  894,  894,  894,  894,
    1306       894,  894,  894,  894,  895,  817,  816,  895,  815,  895,
    1307       895,  895,  895,  895,  896,  814,  896,  896,  813,  896,
    1308       896,  896,  896,  896,  896,  806,  896,  897,  802,  795,
    1309       897,  897,  897,  897,  897,  897,  897,  897,  793,  897,
    1310       898,  898,  898,  898,  898,  898,  898,  898,  898,  898,
    1311       898,  898,  898,  899,  899,  792,  899,  791,  790,  789,
    1312       899,  900,  788,  787,  900,  786,  900,  900,  900,  900,
    1313       900,  901,  785,  901,  784,  783,  782,  901,  902,  781,
    1314       902,  780,  778,  777,  902,  903,  776,  903,  775,  768,
    1315 
    1316       766,  903,  904,  754,  904,  753,  752,  751,  904,  905,
    1317       750,  905,  749,  748,  747,  905,  906,  746,  906,  743,
    1318       742,  741,  906,  907,  735,  907,  731,  730,  728,  907,
    1319       908,  727,  908,  710,  702,  699,  908,  909,  694,  909,
    1320       692,  688,  678,  909,  910,  910,  910,  910,  910,  910,
    1321       910,  910,  910,  910,  910,  910,  910,  911,  674,  911,
    1322       912,  912,  672,  912,  912,  912,  670,  912,  913,  913,
    1323       667,  913,  914,  664,  914,  663,  662,  661,  914,  915,
    1324       660,  915,  659,  656,  655,  915,  916,  653,  916,  650,
    1325       649,  648,  916,  917,  644,  917,  918,  617,  918,  613,
    1326 
    1327       611,  609,  918,  919,  607,  919,  920,  605,  599,  920,
    1328       593,  920,  920,  920,  920,  920,  921,  921,  921,  921,
    1329       921,  921,  921,  921,  921,  921,  921,  921,  921,  922,
    1330       922,  922,  922,  922,  922,  922,  922,  922,  922,  922,
    1331       922,  922,  923,  591,  923,  589,  587,  585,  923,  924,
    1332       583,  924,  581,  579,  578,  924,  925,  577,  925,  574,
    1333       571,  564,  925,  926,  560,  926,  927,  557,  927,  554,
    1334       549,  544,  927,  928,  541,  928,  929,  518,  929,  514,
    1335       512,  510,  929,  930,  508,  930,  931,  506,  931,  504,
    1336       503,  502,  931,  932,  501,  932,  933,  490,  933,  487,
    1337 
    1338       485,  484,  933,  934,  483,  934,  935,  481,  935,  479,
    1339       476,  474,  935,  936,  472,  936,  937,  470,  937,  466,
    1340       449,  447,  937,  938,  439,  938,  939,  437,  939,  429,
    1341       939,  427,  939,  940,  425,  940,  399,  940,  397,  940,
    1342       941,  941,  395,  941,  941,  941,  393,  941,  942,  392,
    1343       942,  391,  378,  368,  942,  943,  366,  943,  365,  361,
    1344       359,  943,  944,  357,  944,  355,  351,  349,  944,  945,
    1345       348,  945,  946,  347,  946,  337,  322,  299,  946,  947,
    1346       278,  947,  948,  276,  948,  274,  273,  272,  948,  949,
    1347       270,  949,  950,  269,  950,  264,  260,  259,  950,  951,
    1348 
    1349       255,  951,  952,  252,  251,  952,  240,  952,  952,  952,
    1350       952,  952,  953,  953,  953,  953,  953,  953,  953,  953,
    1351       953,  953,  953,  953,  953,  954,  239,  954,  232,  231,
    1352       228,  954,  955,  218,  955,  956,  216,  956,  215,  214,
    1353       208,  956,  957,  207,  957,  958,  205,  958,  200,  179,
    1354       150,  958,  959,  148,  959,  960,  147,  960,  141,  139,
    1355       137,  960,  961,  129,  961,  962,  126,  962,  125,  121,
    1356       101,  962,  963,   98,  963,  964,   95,  964,   93,   86,
    1357        72,  964,  965,   70,  965,  966,   66,  966,   36,   18,
    1358        11,  966,  967,    4,  967,    3,    0,    0,  967,  968,
    1359 
    1360         0,  968,  969,    0,  969,    0,    0,    0,  969,  970,
    1361         0,  970,  971,    0,  971,    0,  971,    0,  971,  972,
    1362         0,  972,    0,    0,    0,  972,  973,    0,  973,    0,
    1363         0,    0,  973,  974,    0,  974,  975,    0,  975,    0,
    1364         0,    0,  975,  976,    0,  976,  977,    0,  977,    0,
    1365         0,    0,  977,  978,    0,  978,  979,    0,  979,    0,
    1366         0,    0,  979,  980,    0,  980,  981,    0,  981,    0,
    1367         0,    0,  981,  982,    0,  982,  983,    0,  983,    0,
    1368         0,    0,  983,  984,    0,  984,  985,    0,    0,  985,
    1369         0,  985,  985,  985,  985,  985,  986,  986,  986,  986,
    1370 
    1371       986,  986,  986,  986,  986,  986,  986,  986,  986,  987,
    1372         0,  987,    0,    0,    0,  987,  988,    0,  988,  989,
    1373         0,  989,    0,    0,    0,  989,  990,    0,  990,  991,
    1374         0,  991,    0,    0,    0,  991,  992,    0,  992,  993,
    1375         0,  993,    0,    0,    0,  993,  994,    0,  994,  995,
    1376         0,  995,    0,    0,    0,  995,  996,    0,  996,  997,
    1377         0,  997,    0,    0,    0,  997,  998,    0,  998,  999,
    1378         0,  999,    0,    0,    0,  999, 1000,    0, 1000, 1001,
    1379         0, 1001,    0,    0,    0, 1001, 1002,    0, 1002, 1003,
    1380         0, 1003,    0,    0,    0, 1003, 1004,    0, 1004,    0,
    1381 
    1382         0,    0, 1004, 1005,    0, 1005, 1006,    0, 1006,    0,
    1383         0,    0, 1006, 1007,    0, 1007, 1008,    0, 1008,    0,
    1384         0,    0, 1008, 1009,    0, 1009, 1010,    0, 1010,    0,
    1385         0,    0, 1010, 1011,    0, 1011, 1012,    0, 1012, 1013,
    1386         0, 1013, 1014,    0,    0, 1014,    0, 1014, 1014, 1014,
    1387      1014, 1014, 1015,    0, 1015, 1016, 1016, 1016, 1016, 1016,
    1388      1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1017,    0,
    1389      1017,    0,    0,    0, 1017, 1018,    0, 1018, 1019,    0,
    1390      1019,    0,    0,    0, 1019, 1020,    0, 1020, 1021,    0,
    1391      1021, 1022,    0, 1022, 1023,    0,    0, 1023,    0, 1023,
    1392 
    1393      1023, 1023, 1023, 1023, 1024,    0, 1024, 1025,    0, 1025,
    1394      1026,    0, 1026, 1027,    0, 1027, 1028,    0, 1028, 1029,
    1395         0, 1029, 1030,    0, 1030, 1031,    0, 1031,    0,    0,
    1396         0, 1031, 1032,    0, 1032, 1033,    0, 1033,    0,    0,
    1397         0, 1033, 1034,    0, 1034, 1035,    0, 1035, 1036,    0,
    1398      1036, 1037,    0, 1037, 1038,    0, 1038,    0,    0,    0,
    1399      1038, 1039,    0,    0, 1039,    0, 1039, 1039, 1039, 1039,
    1400      1039, 1040,    0, 1040, 1041,    0, 1041, 1042,    0, 1042,
    1401      1043,    0, 1043,    0,    0,    0, 1043, 1044,    0, 1044,
    1402         0,    0,    0, 1044, 1045,    0, 1045,    0,    0,    0,
    1403 
    1404      1045, 1046,    0, 1046, 1047,    0, 1047,    0,    0,    0,
    1405      1047, 1048,    0, 1048,    0,    0,    0, 1048, 1049,    0,
    1406      1049,    0,    0,    0, 1049, 1050,    0, 1050,    0,    0,
    1407         0, 1050, 1051,    0, 1051,    0,    0,    0, 1051, 1052,
    1408         0, 1052,    0,    0,    0, 1052, 1053,    0, 1053,    0,
    1409         0,    0, 1053, 1054,    0, 1054,    0,    0,    0, 1054,
    1410      1055,    0, 1055,    0,    0,    0, 1055, 1056,    0, 1056,
    1411         0,    0,    0, 1056, 1057,    0, 1057,    0,    0,    0,
    1412      1057, 1058,    0, 1058,    0,    0,    0, 1058, 1059,    0,
    1413      1059,    0,    0,    0, 1059, 1060,    0, 1060,    0,    0,
    1414 
    1415         0, 1060, 1061,    0, 1061,    0,    0,    0, 1061, 1062,
    1416         0, 1062,    0,    0,    0, 1062,  888,  888,  888,  888,
     1129       15,   15,   15,   15,   20,   25,   48,   39,   42,   28,
     1130       27,   28,   28,   28,   28,   28,   28,  109,  115,   25,
     1131       29,   25,   27,   27,   27,   29,   48,   35,   40,    7,
     1132        8,    9,   10,   40,   42,   29,   30,   47,   30,   30,
     1133       30,   30,   30,   30,   35,   57,   35,   35,   44,  126,
     1134       44,  126,  109,  115,   57,   30,   64,   56,   47,   30,
     1135       47,   45,   45,   45,   49,   30,   30,   45,   45,   49,
     1136       45,   30,   40,   45,   45,   40,   49,   30,   45,   56,
     1137       62,   45,   49,   30,   73,  885,  127,   53,  127,   51,
     1138       61,   30,   62,   55,   30,   31,  108,   31,   31,   31,
     1139
     1140       31,   31,   31,   50,   51,   53,   51,   64,   61,   54,
     1141       73,   55,   50,   87,   31,   51,   50,   55,   31,   54,
     1142      108,   50,   52,  114,   31,   50,   54,   52,  175,  129,
     1143       31,  129,  107,  154,  151,   52,   31,   52,  107,   87,
     1144       52,   60,   31,  132,   52,  132,   60,  114,  175,  154,
     1145       31,   38,  151,  385,  111,   38,   38,   58,   38,   60,
     1146       38,   38,  113,   38,  107,   38,   59,  130,  113,   58,
     1147       58,  116,  111,  164,   38,   38,   38,  385,   59,   58,
     1148      111,  130,   58,  130,  142,   60,   59,  131,   60,  116,
     1149      164,   68,   68,   59,  113,   38,   68,  116,   38,  131,
     1150
     1151      110,  131,   60,   67,   67,   67,   67,   67,   67,  877,
     1152      142,   67,   68,   68,   68,   68,   68,   68,   80,   80,
     1153       80,   80,   80,   80,  153,   38,   38,   77,   77,  134,
     1154      110,  134,   77,  153,   77,  110,  135,  135,  135,   77,
     1155       82,   82,   82,   82,   82,   82,  876,  243,   77,   77,
     1156       77,   77,   83,   83,   83,   83,   83,   83,  110,   77,
     1157      103,  103,  103,  103,  103,  103,  104,  104,  104,  104,
     1158      133,  133,  137,  133,  137,   77,  145,  139,   77,  139,
     1159      157,  145,  243,   77,   77,  152,  156,   77,   77,  155,
     1160      166,  150,  157,  103,  104,   77,  159,  168,   77,  104,
     1161
     1162       77,   77,   77,  152,   77,   85,  150,  155,  156,   85,
     1163       85,  166,  159,  150,   85,   85,  161,   85,  160,   85,
     1164      145,  162,  104,  167,  168,  161,  169,  163,   85,   85,
     1165       85,  105,  163,  105,  105,  105,  105,  105,  105,  873,
     1166      160,  171,  162,  162,  165,  163,  167,  169,  173,   85,
     1167      105,  106,   85,  106,  165,  172,  106,  106,  106,  106,
     1168      106,  106,  180,  171,  170,  173,  105,  176,  177,  170,
     1169      172,  181,  105,  174,  184,  187,  181,  182,  179,  180,
     1170       85,   99,   99,   99,   99,   99,   99,  170,  187,  106,
     1171      177,  174,  184,  179,  176,  183,  190,   99,   99,   99,
     1172
     1173      179,   99,   99,  189,  182,  186,  183,  191,  189,  218,
     1174      186,  218,  185,  188,   99,  190,  183,  183,  284,   99,
     1175       99,   99,  158,  185,   99,  186,   99,  158,  158,  158,
     1176      189,  158,  158,  188,  192,  158,  194,  158,  284,  219,
     1177      185,  219,  158,  158,  158,  193,  158,  192,  220,  194,
     1178      220,  191,  198,  198,  191,  192,  205,  198,  193,  872,
     1179      193,  197,  197,  197,  197,  197,  197,  200,  200,  197,
     1180      248,  221,  200,  198,  198,  198,  198,  198,  198,  202,
     1181      202,  223,  205,  223,  202,  221,  202,  221,  200,  200,
     1182      200,  200,  200,  200,  209,  209,  248,  338,  222,  209,
     1183
     1184      202,  202,  202,  202,  202,  202,  212,  212,  212,  212,
     1185      222,  309,  222,  224,  224,  225,  224,  225,  226,  226,
     1186      226,  228,  229,  228,  229,  234,  234,  235,  236,  235,
     1187      309,  279,  235,  235,  235,  235,  235,  235,  237,  212,
     1188      237,  338,  266,  237,  266,  267,  278,  267,  234,  279,
     1189      283,  236,  241,  241,  241,  283,  241,  241,  256,  278,
     1190      237,  281,  237,  282,  280,  235,  270,  237,  244,  244,
     1191      244,  244,  244,  244,  241,  241,  241,  281,  285,  241,
     1192      282,  241,  280,  285,  256,  244,  245,  245,  245,  245,
     1193      245,  245,  270,  288,  293,  286,  294,  300,  306,  293,
     1194
     1195      308,  244,  300,  306,  870,  294,  308,  244,  246,  246,
     1196      246,  246,  246,  246,  253,  286,  288,  255,  255,  255,
     1197      255,  255,  255,  287,  246,  247,  246,  247,  246,  246,
     1198      247,  247,  247,  247,  247,  247,  290,  253,  287,  253,
     1199      869,  246,  289,  253,  287,  287,  246,  292,  246,  253,
     1200      255,  246,  291,  246,  260,  260,  260,  260,  260,  260,
     1201      289,  253,  290,  292,  292,  253,  295,  291,  296,  253,
     1202      297,  299,  301,  302,  303,  304,  305,  307,  311,  295,
     1203      302,  301,  307,  310,  311,  312,  319,  260,  297,  299,
     1204      313,  314,  310,  304,  303,  296,  318,  305,  305,  313,
     1205
     1206      315,  312,  316,  317,  319,  315,  314,  316,  317,  320,
     1207      322,  323,  324,  326,  325,  318,  327,  328,  331,  329,
     1208      330,  322,  320,  332,  334,  317,  323,  325,  333,  330,
     1209      335,  324,  337,  339,  340,  326,  329,  328,  401,  327,
     1210      331,  337,  334,  335,  341,  343,  332,  340,  342,  401,
     1211      333,  339,  341,  342,  344,  344,  345,  460,  862,  344,
     1212      343,  344,  345,  352,  352,  352,  352,  353,  353,  353,
     1213      353,  362,  363,  362,  363,  370,  370,  370,  370,  370,
     1214      370,  372,  460,  372,  380,  381,  372,  372,  372,  372,
     1215      372,  372,  861,  402,  380,  381,  352,  371,  371,  371,
     1216
     1217      371,  371,  371,  374,  374,  374,  374,  374,  374,  402,
     1218      380,  381,  403,  371,  404,  371,  860,  371,  371,  375,
     1219      375,  375,  375,  375,  375,  383,  382,  403,  406,  405,
     1220      371,  383,  407,  404,  408,  371,  374,  371,  405,  406,
     1221      371,  407,  371,  376,  376,  376,  376,  376,  376,  382,
     1222      412,  382,  375,  387,  411,  382,  408,  383,  384,  386,
     1223      384,  382,  410,  384,  384,  384,  384,  384,  384,  409,
     1224      411,  387,  412,  382,  413,  410,  376,  382,  409,  387,
     1225      415,  382,  386,  414,  386,  416,  417,  413,  386,  418,
     1226      421,  417,  419,  422,  386,  420,  384,  427,  419,  414,
     1227
     1228      414,  421,  415,  416,  418,  423,  386,  425,  429,  427,
     1229      386,  418,  422,  430,  386,  431,  420,  432,  433,  434,
     1230      423,  425,  435,  437,  433,  439,  440,  441,  431,  429,
     1231      442,  435,  443,  444,  434,  430,  449,  445,  437,  447,
     1232      432,  450,  441,  451,  454,  439,  445,  443,  440,  452,
     1233      450,  453,  442,  444,  455,  456,  447,  457,  458,  449,
     1234      459,  461,  463,  455,  451,  458,  454,  459,  462,  452,
     1235      457,  453,  466,  456,  464,  467,  462,  525,  859,  463,
     1236      525,  468,  491,  461,  467,  464,  462,  468,  477,  477,
     1237      477,  477,  491,  515,  466,  488,  488,  488,  488,  488,
     1238
     1239      488,  490,  490,  490,  490,  490,  490,  519,  491,  521,
     1240      515,  488,  492,  488,  492,  488,  488,  492,  492,  492,
     1241      492,  492,  492,  494,  516,  495,  493,  519,  488,  855,
     1242      851,  521,  518,  488,  490,  488,  493,  516,  488,  529,
     1243      488,  497,  497,  497,  497,  497,  497,  518,  520,  494,
     1244      492,  495,  493,  498,  498,  498,  498,  498,  498,  523,
     1245      529,  520,  526,  848,  523,  847,  528,  846,  522,  498,
     1246      499,  498,  499,  498,  498,  499,  499,  499,  499,  499,
     1247      499,  522,  526,  524,  527,  528,  498,  531,  530,  532,
     1248      533,  498,  531,  498,  524,  534,  498,  530,  498,  527,
     1249
     1250      532,  535,  537,  533,  536,  538,  539,  541,  542,  547,
     1251      535,  539,  544,  541,  538,  545,  546,  542,  547,  537,
     1252      550,  551,  845,  549,  534,  552,  536,  554,  560,  544,
     1253      545,  546,  549,  551,  555,  557,  558,  550,  561,  555,
     1254      552,  562,  554,  565,  557,  558,  564,  567,  566,  568,
     1255      560,  561,  575,  565,  564,  566,  569,  571,  562,  574,
     1256      572,  568,  569,  620,  619,  575,  571,  601,  601,  567,
     1257      572,  619,  620,  844,  843,  622,  574,  594,  594,  594,
     1258      594,  594,  594,  595,  595,  595,  595,  595,  595,  597,
     1259      601,  597,  622,  621,  597,  597,  597,  597,  597,  597,
     1260
     1261      600,  600,  600,  600,  600,  600,  621,  602,  626,  842,
     1262      594,  596,  596,  596,  596,  596,  596,  603,  618,  603,
     1263      623,  624,  603,  618,  628,  626,  625,  596,  624,  596,
     1264      602,  596,  596,  600,  625,  627,  618,  628,  627,  603,
     1265      629,  603,  630,  623,  596,  631,  603,  632,  633,  596,
     1266      634,  596,  635,  634,  596,  636,  596,  630,  637,  638,
     1267      640,  644,  629,  639,  632,  641,  642,  631,  645,  635,
     1268      633,  646,  639,  637,  650,  642,  651,  656,  640,  638,
     1269      646,  653,  657,  636,  644,  665,  656,  641,  664,  657,
     1270      645,  667,  668,  841,  650,  665,  700,  664,  653,  699,
     1271
     1272      667,  702,  705,  651,  714,  837,  700,  668,  686,  686,
     1273      686,  686,  686,  686,  690,  690,  690,  690,  690,  690,
     1274      699,  708,  705,  703,  686,  714,  686,  702,  686,  686,
     1275      703,  704,  706,  715,  707,  706,  704,  707,  710,  708,
     1276      712,  686,  711,  717,  710,  718,  686,  690,  686,  712,
     1277      720,  686,  717,  686,  713,  711,  716,  713,  719,  716,
     1278      721,  719,  715,  720,  722,  723,  724,  725,  721,  728,
     1279      731,  718,  732,  735,  722,  733,  725,  736,  723,  756,
     1280      757,  735,  836,  754,  756,  759,  736,  724,  755,  760,
     1281      731,  761,  728,  764,  732,  757,  733,  743,  743,  743,
     1282
     1283      743,  743,  743,  754,  758,  755,  760,  762,  759,  763,
     1284      762,  769,  766,  768,  758,  766,  768,  761,  769,  772,
     1285      770,  764,  763,  770,  771,  773,  778,  771,  793,  795,
     1286      743,  798,  797,  796,  772,  797,  799,  800,  802,  799,
     1287      800,  803,  804,  806,  807,  804,  810,  807,  773,  778,
     1288      795,  796,  809,  798,  808,  793,  802,  808,  811,  826,
     1289      830,  809,  810,  827,  829,  806,  828,  803,  831,  828,
     1290      827,  831,  832,  829,  811,  834,  835,  839,  830,  835,
     1291      826,  840,  838,  849,  830,  838,  839,  853,  850,  832,
     1292      840,  852,  849,  850,  852,  854,  856,  853,  857,  856,
     1293
     1294      854,  857,  858,  863,  864,  858,  865,  866,  867,  865,
     1295      868,  867,  871,  868,  874,  875,  878,  866,  879,  864,
     1296      880,  882,  881,  863,  883,  878,  884,  833,  825,  824,
     1297      875,  879,  823,  822,  871,  874,  884,  821,  820,  882,
     1298      819,  818,  880,  881,  817,  816,  883,  888,  888,  888,
    14171299      888,  888,  888,  888,  888,  888,  888,  888,  888,  888,
    1418       888,  888,  888,  888,  888,  888,  888,  888,  888,  888,
    1419       888,  888,  888,  888,  888,  888,  888,  888,  888,  888,
    1420       888,  888,  888,  888,  888,  888,  888,  888,  888,  888,
    1421       888,  888,  888,  888,  888,  888,  888,  888,  888,  888,
    1422       888,  888,  888,  888,  888,  888,  888,  888,  888,  888,
    1423       888,  888,  888,  888,  888,  888,  888,  888,  888,  888,
    1424       888,  888,  888,  888,  888,  888,  888,  888,  888,  888,
    1425 
    1426       888,  888
     1300      889,  889,  889,  889,  889,  889,  889,  889,  889,  889,
     1301      889,  889,  889,  890,  890,  890,  890,  890,  890,  890,
     1302      890,  890,  890,  890,  890,  890,  891,  815,  814,  891,
     1303      813,  891,  891,  891,  891,  891,  892,  812,  805,  801,
     1304
     1305      892,  892,  892,  892,  892,  892,  893,  893,  893,  893,
     1306      893,  893,  893,  893,  893,  893,  893,  893,  893,  894,
     1307      794,  792,  894,  791,  894,  894,  894,  894,  894,  895,
     1308      790,  895,  895,  789,  895,  895,  895,  895,  895,  895,
     1309      788,  895,  896,  787,  786,  896,  896,  896,  896,  896,
     1310      896,  896,  896,  785,  896,  897,  897,  897,  897,  897,
     1311      897,  897,  897,  897,  897,  897,  897,  897,  898,  898,
     1312      784,  898,  783,  782,  781,  898,  899,  780,  779,  899,
     1313      777,  899,  899,  899,  899,  899,  900,  776,  900,  775,
     1314      774,  767,  900,  901,  765,  901,  753,  752,  751,  901,
     1315
     1316      902,  750,  902,  749,  748,  747,  902,  903,  746,  903,
     1317      745,  742,  741,  903,  904,  740,  904,  734,  730,  729,
     1318      904,  905,  727,  905,  726,  709,  701,  905,  906,  698,
     1319      906,  693,  691,  687,  906,  907,  677,  907,  673,  671,
     1320      669,  907,  908,  666,  908,  663,  662,  661,  908,  909,
     1321      909,  909,  909,  909,  909,  909,  909,  909,  909,  909,
     1322      909,  909,  910,  660,  910,  911,  911,  659,  911,  911,
     1323      911,  658,  911,  912,  912,  655,  912,  913,  654,  913,
     1324      652,  649,  648,  913,  914,  647,  914,  643,  616,  612,
     1325      914,  915,  610,  915,  608,  606,  604,  915,  916,  598,
     1326
     1327      916,  917,  592,  917,  590,  588,  586,  917,  918,  584,
     1328      918,  919,  582,  580,  919,  578,  919,  919,  919,  919,
     1329      919,  920,  920,  920,  920,  920,  920,  920,  920,  920,
     1330      920,  920,  920,  920,  921,  921,  921,  921,  921,  921,
     1331      921,  921,  921,  921,  921,  921,  921,  922,  577,  922,
     1332      576,  573,  570,  922,  923,  563,  923,  559,  556,  553,
     1333      923,  924,  548,  924,  543,  540,  517,  924,  925,  513,
     1334      925,  926,  511,  926,  509,  507,  505,  926,  927,  503,
     1335      927,  928,  502,  928,  501,  500,  489,  928,  929,  486,
     1336      929,  930,  484,  930,  483,  482,  480,  930,  931,  478,
     1337
     1338      931,  932,  475,  932,  473,  471,  469,  932,  933,  465,
     1339      933,  934,  448,  934,  446,  438,  436,  934,  935,  428,
     1340      935,  936,  426,  936,  424,  398,  396,  936,  937,  394,
     1341      937,  938,  392,  938,  391,  938,  390,  938,  939,  377,
     1342      939,  367,  939,  365,  939,  940,  940,  364,  940,  940,
     1343      940,  360,  940,  941,  358,  941,  356,  354,  350,  941,
     1344      942,  348,  942,  347,  346,  336,  942,  943,  321,  943,
     1345      298,  277,  275,  943,  944,  273,  944,  945,  272,  945,
     1346      271,  269,  268,  945,  946,  263,  946,  947,  259,  947,
     1347      258,  254,  251,  947,  948,  250,  948,  949,  239,  949,
     1348
     1349      238,  231,  230,  949,  950,  227,  950,  951,  217,  215,
     1350      951,  214,  951,  951,  951,  951,  951,  952,  952,  952,
     1351      952,  952,  952,  952,  952,  952,  952,  952,  952,  952,
     1352      953,  213,  953,  207,  206,  204,  953,  954,  199,  954,
     1353      955,  178,  955,  149,  147,  146,  955,  956,  140,  956,
     1354      957,  138,  957,  136,  128,  125,  957,  958,  124,  958,
     1355      959,  120,  959,  101,   98,   95,  959,  960,   93,  960,
     1356      961,   86,  961,   72,   70,   66,  961,  962,   36,  962,
     1357      963,   33,  963,   18,   11,    4,  963,  964,    3,  964,
     1358      965,    0,  965,    0,    0,    0,  965,  966,    0,  966,
     1359
     1360        0,    0,    0,  966,  967,    0,  967,  968,    0,  968,
     1361        0,    0,    0,  968,  969,    0,  969,  970,    0,  970,
     1362        0,  970,    0,  970,  971,    0,  971,    0,    0,    0,
     1363      971,  972,    0,  972,    0,    0,    0,  972,  973,    0,
     1364      973,  974,    0,  974,    0,    0,    0,  974,  975,    0,
     1365      975,  976,    0,  976,    0,    0,    0,  976,  977,    0,
     1366      977,  978,    0,  978,    0,    0,    0,  978,  979,    0,
     1367      979,  980,    0,  980,    0,    0,    0,  980,  981,    0,
     1368      981,  982,    0,  982,    0,    0,    0,  982,  983,    0,
     1369      983,  984,    0,    0,  984,    0,  984,  984,  984,  984,
     1370
     1371      984,  985,  985,  985,  985,  985,  985,  985,  985,  985,
     1372      985,  985,  985,  985,  986,    0,  986,    0,    0,    0,
     1373      986,  987,    0,  987,  988,    0,  988,    0,    0,    0,
     1374      988,  989,    0,  989,  990,    0,  990,    0,    0,    0,
     1375      990,  991,    0,  991,  992,    0,  992,    0,    0,    0,
     1376      992,  993,    0,  993,  994,    0,  994,    0,    0,    0,
     1377      994,  995,    0,  995,  996,    0,  996,    0,    0,    0,
     1378      996,  997,    0,  997,  998,    0,  998,    0,    0,    0,
     1379      998,  999,    0,  999, 1000,    0, 1000,    0,    0,    0,
     1380     1000, 1001,    0, 1001, 1002,    0, 1002,    0,    0,    0,
     1381
     1382     1002, 1003,    0, 1003,    0,    0,    0, 1003, 1004,    0,
     1383     1004, 1005,    0, 1005,    0,    0,    0, 1005, 1006,    0,
     1384     1006, 1007,    0, 1007,    0,    0,    0, 1007, 1008,    0,
     1385     1008, 1009,    0, 1009,    0,    0,    0, 1009, 1010,    0,
     1386     1010, 1011,    0, 1011, 1012,    0, 1012, 1013,    0,    0,
     1387     1013,    0, 1013, 1013, 1013, 1013, 1013, 1014,    0, 1014,
     1388     1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015,
     1389     1015, 1015, 1015, 1016,    0, 1016,    0,    0,    0, 1016,
     1390     1017,    0, 1017, 1018,    0, 1018,    0,    0,    0, 1018,
     1391     1019,    0, 1019, 1020,    0, 1020, 1021,    0, 1021, 1022,
     1392
     1393        0,    0, 1022,    0, 1022, 1022, 1022, 1022, 1022, 1023,
     1394        0, 1023, 1024,    0, 1024, 1025,    0, 1025, 1026,    0,
     1395     1026, 1027,    0, 1027, 1028,    0, 1028, 1029,    0, 1029,
     1396     1030,    0, 1030,    0,    0,    0, 1030, 1031,    0, 1031,
     1397     1032,    0, 1032,    0,    0,    0, 1032, 1033,    0, 1033,
     1398     1034,    0, 1034, 1035,    0, 1035, 1036,    0, 1036, 1037,
     1399        0, 1037,    0,    0,    0, 1037, 1038,    0,    0, 1038,
     1400        0, 1038, 1038, 1038, 1038, 1038, 1039,    0, 1039, 1040,
     1401        0, 1040, 1041,    0, 1041, 1042,    0, 1042,    0,    0,
     1402        0, 1042, 1043,    0, 1043,    0,    0,    0, 1043, 1044,
     1403
     1404        0, 1044,    0,    0,    0, 1044, 1045,    0, 1045, 1046,
     1405        0, 1046,    0,    0,    0, 1046, 1047,    0, 1047,    0,
     1406        0,    0, 1047, 1048,    0, 1048,    0,    0,    0, 1048,
     1407     1049,    0, 1049,    0,    0,    0, 1049, 1050,    0, 1050,
     1408        0,    0,    0, 1050, 1051,    0, 1051,    0,    0,    0,
     1409     1051, 1052,    0, 1052,    0,    0,    0, 1052, 1053,    0,
     1410     1053,    0,    0,    0, 1053, 1054,    0, 1054,    0,    0,
     1411        0, 1054, 1055,    0, 1055,    0,    0,    0, 1055, 1056,
     1412        0, 1056,    0,    0,    0, 1056, 1057,    0, 1057,    0,
     1413        0,    0, 1057, 1058,    0, 1058,    0,    0,    0, 1058,
     1414
     1415     1059,    0, 1059,    0,    0,    0, 1059, 1060,    0, 1060,
     1416        0,    0,    0, 1060, 1061,    0, 1061,    0,    0,    0,
     1417     1061,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     1418      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     1419      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     1420      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     1421      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     1422      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     1423      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     1424      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     1425
     1426      887,  887,  887,  887,  887,  887,  887
    14271427    } ;
    14281428
    14291429/* Table of booleans, true if rule could match eol. */
    1430 static yyconst flex_int32_t yy_rule_can_match_eol[182] =
     1430static yyconst flex_int32_t yy_rule_can_match_eol[181] =
    14311431    {   0,
    143214321, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     
    14391439    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    14401440    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    1441     0, 0,     };
     1441    0,     };
    14421442
    14431443static yy_state_type yy_last_accepting_state;
     
    14671467 * Created On       : Sat Sep 22 08:58:10 2001
    14681468 * Last Modified By : Peter A. Buhr
    1469  * Last Modified On : Mon Jun  6 18:08:27 2016
    1470  * Update Count     : 451
     1469 * Last Modified On : Wed Jun 22 21:20:18 2016
     1470 * Update Count     : 456
    14711471 */
    14721472#line 20 "lex.ll"
     
    15021502
    15031503void rm_underscore() {
    1504         // remove underscores in numeric constant
    1505         int j = 0;
     1504        // Remove underscores in numeric constant by copying the non-underscore characters to the front of the string.
     1505        yyleng = 0;
    15061506        for ( int i = 0; yytext[i] != '\0'; i += 1 ) {
    15071507                if ( yytext[i] != '_' ) {
    1508                         yytext[j] = yytext[i];
    1509                         j += 1;
     1508                        yytext[yyleng] = yytext[i];
     1509                        yyleng += 1;
    15101510                } // if
    15111511        } // for
    1512         yyleng = j;
    15131512        yytext[yyleng] = '\0';
    15141513}
     
    15231522// ' stop highlighting
    15241523// display/white-space characters
    1525 // operators
    1526 
    1527 
    1528 
    1529 
    1530 #line 1531 "Parser/lex.cc"
     1524// overloadable operators
     1525// op_binary_not_over "?"|"->"|"."|"&&"|"||"|"@="
     1526// operator {op_unary_pre_post}|{op_binary_over}|{op_binary_not_over}
     1527
     1528
     1529
     1530
     1531#line 1532 "Parser/lex.cc"
    15311532
    15321533#define INITIAL 0
     
    17201721        register int yy_act;
    17211722   
    1722 #line 139 "lex.ll"
     1723#line 138 "lex.ll"
    17231724
    17241725                                   /* line directives */
    1725 #line 1726 "Parser/lex.cc"
     1726#line 1727 "Parser/lex.cc"
    17261727
    17271728        if ( !(yy_init) )
     
    17771778                                {
    17781779                                yy_current_state = (int) yy_def[yy_current_state];
    1779                                 if ( yy_current_state >= 889 )
     1780                                if ( yy_current_state >= 888 )
    17801781                                        yy_c = yy_meta[(unsigned int) yy_c];
    17811782                                }
     
    17831784                        ++yy_cp;
    17841785                        }
    1785                 while ( yy_base[yy_current_state] != 2817 );
     1786                while ( yy_base[yy_current_state] != 2822 );
    17861787
    17871788yy_find_action:
     
    18201821/* rule 1 can match eol */
    18211822YY_RULE_SETUP
    1822 #line 141 "lex.ll"
     1823#line 140 "lex.ll"
    18231824{
    18241825        /* " stop highlighting */
     
    18471848/* rule 2 can match eol */
    18481849YY_RULE_SETUP
    1849 #line 164 "lex.ll"
     1850#line 163 "lex.ll"
    18501851;
    18511852        YY_BREAK
     
    18531854case 3:
    18541855YY_RULE_SETUP
    1855 #line 167 "lex.ll"
     1856#line 166 "lex.ll"
    18561857{ BEGIN COMMENT; }
    18571858        YY_BREAK
     
    18591860/* rule 4 can match eol */
    18601861YY_RULE_SETUP
     1862#line 167 "lex.ll"
     1863;
     1864        YY_BREAK
     1865case 5:
     1866YY_RULE_SETUP
    18611867#line 168 "lex.ll"
    1862 ;
    1863         YY_BREAK
    1864 case 5:
    1865 YY_RULE_SETUP
    1866 #line 169 "lex.ll"
    18671868{ BEGIN 0; }
    18681869        YY_BREAK
     
    18711872/* rule 6 can match eol */
    18721873YY_RULE_SETUP
    1873 #line 172 "lex.ll"
     1874#line 171 "lex.ll"
    18741875;
    18751876        YY_BREAK
     
    18771878case 7:
    18781879YY_RULE_SETUP
     1880#line 174 "lex.ll"
     1881{ WHITE_RETURN(' '); }
     1882        YY_BREAK
     1883case 8:
     1884YY_RULE_SETUP
    18791885#line 175 "lex.ll"
    18801886{ WHITE_RETURN(' '); }
    18811887        YY_BREAK
    1882 case 8:
    1883 YY_RULE_SETUP
    1884 #line 176 "lex.ll"
    1885 { WHITE_RETURN(' '); }
    1886         YY_BREAK
    18871888case 9:
    18881889/* rule 9 can match eol */
    18891890YY_RULE_SETUP
    1890 #line 177 "lex.ll"
     1891#line 176 "lex.ll"
    18911892{ NEWLINE_RETURN(); }
    18921893        YY_BREAK
     
    18941895case 10:
    18951896YY_RULE_SETUP
     1897#line 179 "lex.ll"
     1898{ KEYWORD_RETURN(ALIGNAS); }                    // C11
     1899        YY_BREAK
     1900case 11:
     1901YY_RULE_SETUP
    18961902#line 180 "lex.ll"
    1897 { KEYWORD_RETURN(ALIGNAS); }                    // C11
    1898         YY_BREAK
    1899 case 11:
     1903{ KEYWORD_RETURN(ALIGNOF); }                    // C11
     1904        YY_BREAK
     1905case 12:
    19001906YY_RULE_SETUP
    19011907#line 181 "lex.ll"
    1902 { KEYWORD_RETURN(ALIGNOF); }                    // C11
    1903         YY_BREAK
    1904 case 12:
     1908{ KEYWORD_RETURN(ALIGNOF); }                    // GCC
     1909        YY_BREAK
     1910case 13:
    19051911YY_RULE_SETUP
    19061912#line 182 "lex.ll"
    19071913{ KEYWORD_RETURN(ALIGNOF); }                    // GCC
    19081914        YY_BREAK
    1909 case 13:
     1915case 14:
    19101916YY_RULE_SETUP
    19111917#line 183 "lex.ll"
    1912 { KEYWORD_RETURN(ALIGNOF); }                    // GCC
    1913         YY_BREAK
    1914 case 14:
     1918{ KEYWORD_RETURN(ASM); }
     1919        YY_BREAK
     1920case 15:
    19151921YY_RULE_SETUP
    19161922#line 184 "lex.ll"
    1917 { KEYWORD_RETURN(ASM); }
    1918         YY_BREAK
    1919 case 15:
     1923{ KEYWORD_RETURN(ASM); }                                // GCC
     1924        YY_BREAK
     1925case 16:
    19201926YY_RULE_SETUP
    19211927#line 185 "lex.ll"
    19221928{ KEYWORD_RETURN(ASM); }                                // GCC
    19231929        YY_BREAK
    1924 case 16:
     1930case 17:
    19251931YY_RULE_SETUP
    19261932#line 186 "lex.ll"
    1927 { KEYWORD_RETURN(ASM); }                                // GCC
    1928         YY_BREAK
    1929 case 17:
     1933{ KEYWORD_RETURN(AT); }                                 // CFA
     1934        YY_BREAK
     1935case 18:
    19301936YY_RULE_SETUP
    19311937#line 187 "lex.ll"
    1932 { KEYWORD_RETURN(AT); }                                 // CFA
    1933         YY_BREAK
    1934 case 18:
     1938{ KEYWORD_RETURN(ATOMIC); }                             // C11
     1939        YY_BREAK
     1940case 19:
    19351941YY_RULE_SETUP
    19361942#line 188 "lex.ll"
    1937 { KEYWORD_RETURN(ATOMIC); }                             // C11
    1938         YY_BREAK
    1939 case 19:
     1943{ KEYWORD_RETURN(ATTRIBUTE); }                  // GCC
     1944        YY_BREAK
     1945case 20:
    19401946YY_RULE_SETUP
    19411947#line 189 "lex.ll"
    19421948{ KEYWORD_RETURN(ATTRIBUTE); }                  // GCC
    19431949        YY_BREAK
    1944 case 20:
     1950case 21:
    19451951YY_RULE_SETUP
    19461952#line 190 "lex.ll"
    1947 { KEYWORD_RETURN(ATTRIBUTE); }                  // GCC
    1948         YY_BREAK
    1949 case 21:
     1953{ KEYWORD_RETURN(AUTO); }
     1954        YY_BREAK
     1955case 22:
    19501956YY_RULE_SETUP
    19511957#line 191 "lex.ll"
    1952 { KEYWORD_RETURN(AUTO); }
    1953         YY_BREAK
    1954 case 22:
     1958{ KEYWORD_RETURN(BOOL); }                               // C99
     1959        YY_BREAK
     1960case 23:
    19551961YY_RULE_SETUP
    19561962#line 192 "lex.ll"
    1957 { KEYWORD_RETURN(BOOL); }                               // C99
    1958         YY_BREAK
    1959 case 23:
     1963{ KEYWORD_RETURN(BREAK); }
     1964        YY_BREAK
     1965case 24:
    19601966YY_RULE_SETUP
    19611967#line 193 "lex.ll"
    1962 { KEYWORD_RETURN(BREAK); }
    1963         YY_BREAK
    1964 case 24:
     1968{ KEYWORD_RETURN(CASE); }
     1969        YY_BREAK
     1970case 25:
    19651971YY_RULE_SETUP
    19661972#line 194 "lex.ll"
    1967 { KEYWORD_RETURN(CASE); }
    1968         YY_BREAK
    1969 case 25:
     1973{ KEYWORD_RETURN(CATCH); }                              // CFA
     1974        YY_BREAK
     1975case 26:
    19701976YY_RULE_SETUP
    19711977#line 195 "lex.ll"
    1972 { KEYWORD_RETURN(CATCH); }                              // CFA
    1973         YY_BREAK
    1974 case 26:
     1978{ KEYWORD_RETURN(CATCHRESUME); }                // CFA
     1979        YY_BREAK
     1980case 27:
    19751981YY_RULE_SETUP
    19761982#line 196 "lex.ll"
    1977 { KEYWORD_RETURN(CATCHRESUME); }                // CFA
    1978         YY_BREAK
    1979 case 27:
     1983{ KEYWORD_RETURN(CHAR); }
     1984        YY_BREAK
     1985case 28:
    19801986YY_RULE_SETUP
    19811987#line 197 "lex.ll"
    1982 { KEYWORD_RETURN(CHAR); }
    1983         YY_BREAK
    1984 case 28:
     1988{ KEYWORD_RETURN(CHOOSE); }                             // CFA
     1989        YY_BREAK
     1990case 29:
    19851991YY_RULE_SETUP
    19861992#line 198 "lex.ll"
    1987 { KEYWORD_RETURN(CHOOSE); }                             // CFA
    1988         YY_BREAK
    1989 case 29:
     1993{ KEYWORD_RETURN(COMPLEX); }                    // C99
     1994        YY_BREAK
     1995case 30:
    19901996YY_RULE_SETUP
    19911997#line 199 "lex.ll"
    1992 { KEYWORD_RETURN(COMPLEX); }                    // C99
    1993         YY_BREAK
    1994 case 30:
     1998{ KEYWORD_RETURN(COMPLEX); }                    // GCC
     1999        YY_BREAK
     2000case 31:
    19952001YY_RULE_SETUP
    19962002#line 200 "lex.ll"
    19972003{ KEYWORD_RETURN(COMPLEX); }                    // GCC
    19982004        YY_BREAK
    1999 case 31:
     2005case 32:
    20002006YY_RULE_SETUP
    20012007#line 201 "lex.ll"
    2002 { KEYWORD_RETURN(COMPLEX); }                    // GCC
    2003         YY_BREAK
    2004 case 32:
     2008{ KEYWORD_RETURN(CONST); }
     2009        YY_BREAK
     2010case 33:
    20052011YY_RULE_SETUP
    20062012#line 202 "lex.ll"
    2007 { KEYWORD_RETURN(CONST); }
    2008         YY_BREAK
    2009 case 33:
     2013{ KEYWORD_RETURN(CONST); }                              // GCC
     2014        YY_BREAK
     2015case 34:
    20102016YY_RULE_SETUP
    20112017#line 203 "lex.ll"
    20122018{ KEYWORD_RETURN(CONST); }                              // GCC
    20132019        YY_BREAK
    2014 case 34:
     2020case 35:
    20152021YY_RULE_SETUP
    20162022#line 204 "lex.ll"
    2017 { KEYWORD_RETURN(CONST); }                              // GCC
    2018         YY_BREAK
    2019 case 35:
     2023{ KEYWORD_RETURN(CONTINUE); }
     2024        YY_BREAK
     2025case 36:
    20202026YY_RULE_SETUP
    20212027#line 205 "lex.ll"
    2022 { KEYWORD_RETURN(CONTINUE); }
    2023         YY_BREAK
    2024 case 36:
     2028{ KEYWORD_RETURN(DEFAULT); }
     2029        YY_BREAK
     2030case 37:
    20252031YY_RULE_SETUP
    20262032#line 206 "lex.ll"
    2027 { KEYWORD_RETURN(DEFAULT); }
    2028         YY_BREAK
    2029 case 37:
     2033{ KEYWORD_RETURN(DISABLE); }                    // CFA
     2034        YY_BREAK
     2035case 38:
    20302036YY_RULE_SETUP
    20312037#line 207 "lex.ll"
    2032 { KEYWORD_RETURN(DISABLE); }                    // CFA
    2033         YY_BREAK
    2034 case 38:
     2038{ KEYWORD_RETURN(DO); }
     2039        YY_BREAK
     2040case 39:
    20352041YY_RULE_SETUP
    20362042#line 208 "lex.ll"
    2037 { KEYWORD_RETURN(DO); }
    2038         YY_BREAK
    2039 case 39:
     2043{ KEYWORD_RETURN(DOUBLE); }
     2044        YY_BREAK
     2045case 40:
    20402046YY_RULE_SETUP
    20412047#line 209 "lex.ll"
    2042 { KEYWORD_RETURN(DOUBLE); }
    2043         YY_BREAK
    2044 case 40:
     2048{ KEYWORD_RETURN(DTYPE); }                              // CFA
     2049        YY_BREAK
     2050case 41:
    20452051YY_RULE_SETUP
    20462052#line 210 "lex.ll"
    2047 { KEYWORD_RETURN(DTYPE); }                              // CFA
    2048         YY_BREAK
    2049 case 41:
     2053{ KEYWORD_RETURN(ELSE); }
     2054        YY_BREAK
     2055case 42:
    20502056YY_RULE_SETUP
    20512057#line 211 "lex.ll"
    2052 { KEYWORD_RETURN(ELSE); }
    2053         YY_BREAK
    2054 case 42:
     2058{ KEYWORD_RETURN(ENABLE); }                             // CFA
     2059        YY_BREAK
     2060case 43:
    20552061YY_RULE_SETUP
    20562062#line 212 "lex.ll"
    2057 { KEYWORD_RETURN(ENABLE); }                             // CFA
    2058         YY_BREAK
    2059 case 43:
     2063{ KEYWORD_RETURN(ENUM); }
     2064        YY_BREAK
     2065case 44:
    20602066YY_RULE_SETUP
    20612067#line 213 "lex.ll"
    2062 { KEYWORD_RETURN(ENUM); }
    2063         YY_BREAK
    2064 case 44:
     2068{ KEYWORD_RETURN(EXTENSION); }                  // GCC
     2069        YY_BREAK
     2070case 45:
    20652071YY_RULE_SETUP
    20662072#line 214 "lex.ll"
    2067 { KEYWORD_RETURN(EXTENSION); }                  // GCC
    2068         YY_BREAK
    2069 case 45:
     2073{ KEYWORD_RETURN(EXTERN); }
     2074        YY_BREAK
     2075case 46:
    20702076YY_RULE_SETUP
    20712077#line 215 "lex.ll"
    2072 { KEYWORD_RETURN(EXTERN); }
    2073         YY_BREAK
    2074 case 46:
     2078{ KEYWORD_RETURN(FALLTHRU); }                   // CFA
     2079        YY_BREAK
     2080case 47:
    20752081YY_RULE_SETUP
    20762082#line 216 "lex.ll"
    2077 { KEYWORD_RETURN(FALLTHRU); }                   // CFA
    2078         YY_BREAK
    2079 case 47:
     2083{ KEYWORD_RETURN(FINALLY); }                    // CFA
     2084        YY_BREAK
     2085case 48:
    20802086YY_RULE_SETUP
    20812087#line 217 "lex.ll"
    2082 { KEYWORD_RETURN(FINALLY); }                    // CFA
    2083         YY_BREAK
    2084 case 48:
     2088{ KEYWORD_RETURN(FLOAT); }
     2089        YY_BREAK
     2090case 49:
    20852091YY_RULE_SETUP
    20862092#line 218 "lex.ll"
    2087 { KEYWORD_RETURN(FLOAT); }
    2088         YY_BREAK
    2089 case 49:
     2093{ KEYWORD_RETURN(FLOAT); }                              // GCC
     2094        YY_BREAK
     2095case 50:
    20902096YY_RULE_SETUP
    20912097#line 219 "lex.ll"
    2092 { KEYWORD_RETURN(FLOAT); }                              // GCC
    2093         YY_BREAK
    2094 case 50:
     2098{ KEYWORD_RETURN(FOR); }
     2099        YY_BREAK
     2100case 51:
    20952101YY_RULE_SETUP
    20962102#line 220 "lex.ll"
    2097 { KEYWORD_RETURN(FOR); }
    2098         YY_BREAK
    2099 case 51:
     2103{ KEYWORD_RETURN(FORALL); }                             // CFA
     2104        YY_BREAK
     2105case 52:
    21002106YY_RULE_SETUP
    21012107#line 221 "lex.ll"
    2102 { KEYWORD_RETURN(FORALL); }                             // CFA
    2103         YY_BREAK
    2104 case 52:
     2108{ KEYWORD_RETURN(FORTRAN); }
     2109        YY_BREAK
     2110case 53:
    21052111YY_RULE_SETUP
    21062112#line 222 "lex.ll"
    2107 { KEYWORD_RETURN(FORTRAN); }
    2108         YY_BREAK
    2109 case 53:
     2113{ KEYWORD_RETURN(FTYPE); }                              // CFA
     2114        YY_BREAK
     2115case 54:
    21102116YY_RULE_SETUP
    21112117#line 223 "lex.ll"
    2112 { KEYWORD_RETURN(FTYPE); }                              // CFA
    2113         YY_BREAK
    2114 case 54:
     2118{ KEYWORD_RETURN(GENERIC); }                    // C11
     2119        YY_BREAK
     2120case 55:
    21152121YY_RULE_SETUP
    21162122#line 224 "lex.ll"
    2117 { KEYWORD_RETURN(GENERIC); }                    // C11
    2118         YY_BREAK
    2119 case 55:
     2123{ KEYWORD_RETURN(GOTO); }
     2124        YY_BREAK
     2125case 56:
    21202126YY_RULE_SETUP
    21212127#line 225 "lex.ll"
    2122 { KEYWORD_RETURN(GOTO); }
    2123         YY_BREAK
    2124 case 56:
     2128{ KEYWORD_RETURN(IF); }
     2129        YY_BREAK
     2130case 57:
    21252131YY_RULE_SETUP
    21262132#line 226 "lex.ll"
    2127 { KEYWORD_RETURN(IF); }
    2128         YY_BREAK
    2129 case 57:
     2133{ KEYWORD_RETURN(IMAGINARY); }                  // C99
     2134        YY_BREAK
     2135case 58:
    21302136YY_RULE_SETUP
    21312137#line 227 "lex.ll"
    2132 { KEYWORD_RETURN(IMAGINARY); }                  // C99
    2133         YY_BREAK
    2134 case 58:
     2138{ KEYWORD_RETURN(IMAGINARY); }                  // GCC
     2139        YY_BREAK
     2140case 59:
    21352141YY_RULE_SETUP
    21362142#line 228 "lex.ll"
    21372143{ KEYWORD_RETURN(IMAGINARY); }                  // GCC
    21382144        YY_BREAK
    2139 case 59:
     2145case 60:
    21402146YY_RULE_SETUP
    21412147#line 229 "lex.ll"
    2142 { KEYWORD_RETURN(IMAGINARY); }                  // GCC
    2143         YY_BREAK
    2144 case 60:
     2148{ KEYWORD_RETURN(INLINE); }                             // C99
     2149        YY_BREAK
     2150case 61:
    21452151YY_RULE_SETUP
    21462152#line 230 "lex.ll"
    2147 { KEYWORD_RETURN(INLINE); }                             // C99
    2148         YY_BREAK
    2149 case 61:
     2153{ KEYWORD_RETURN(INLINE); }                             // GCC
     2154        YY_BREAK
     2155case 62:
    21502156YY_RULE_SETUP
    21512157#line 231 "lex.ll"
    21522158{ KEYWORD_RETURN(INLINE); }                             // GCC
    21532159        YY_BREAK
    2154 case 62:
     2160case 63:
    21552161YY_RULE_SETUP
    21562162#line 232 "lex.ll"
    2157 { KEYWORD_RETURN(INLINE); }                             // GCC
    2158         YY_BREAK
    2159 case 63:
     2163{ KEYWORD_RETURN(INT); }
     2164        YY_BREAK
     2165case 64:
    21602166YY_RULE_SETUP
    21612167#line 233 "lex.ll"
    2162 { KEYWORD_RETURN(INT); }
    2163         YY_BREAK
    2164 case 64:
     2168{ KEYWORD_RETURN(INT); }                                // GCC
     2169        YY_BREAK
     2170case 65:
    21652171YY_RULE_SETUP
    21662172#line 234 "lex.ll"
    2167 { KEYWORD_RETURN(INT); }                                // GCC
    2168         YY_BREAK
    2169 case 65:
     2173{ KEYWORD_RETURN(LABEL); }                              // GCC
     2174        YY_BREAK
     2175case 66:
    21702176YY_RULE_SETUP
    21712177#line 235 "lex.ll"
    2172 { KEYWORD_RETURN(LABEL); }                              // GCC
    2173         YY_BREAK
    2174 case 66:
     2178{ KEYWORD_RETURN(LONG); }
     2179        YY_BREAK
     2180case 67:
    21752181YY_RULE_SETUP
    21762182#line 236 "lex.ll"
    2177 { KEYWORD_RETURN(LONG); }
    2178         YY_BREAK
    2179 case 67:
     2183{ KEYWORD_RETURN(LVALUE); }                             // CFA
     2184        YY_BREAK
     2185case 68:
    21802186YY_RULE_SETUP
    21812187#line 237 "lex.ll"
    2182 { KEYWORD_RETURN(LVALUE); }                             // CFA
    2183         YY_BREAK
    2184 case 68:
     2188{ KEYWORD_RETURN(NORETURN); }                   // C11
     2189        YY_BREAK
     2190case 69:
    21852191YY_RULE_SETUP
    21862192#line 238 "lex.ll"
    2187 { KEYWORD_RETURN(NORETURN); }                   // C11
    2188         YY_BREAK
    2189 case 69:
     2193{ KEYWORD_RETURN(OFFSETOF); }           // GCC
     2194        YY_BREAK
     2195case 70:
    21902196YY_RULE_SETUP
    21912197#line 239 "lex.ll"
    2192 { KEYWORD_RETURN(OFFSETOF); }           // GCC
    2193         YY_BREAK
    2194 case 70:
     2198{ KEYWORD_RETURN(OTYPE); }                              // CFA
     2199        YY_BREAK
     2200case 71:
    21952201YY_RULE_SETUP
    21962202#line 240 "lex.ll"
    2197 { KEYWORD_RETURN(OTYPE); }                              // CFA
    2198         YY_BREAK
    2199 case 71:
     2203{ KEYWORD_RETURN(REGISTER); }
     2204        YY_BREAK
     2205case 72:
    22002206YY_RULE_SETUP
    22012207#line 241 "lex.ll"
    2202 { KEYWORD_RETURN(REGISTER); }
    2203         YY_BREAK
    2204 case 72:
     2208{ KEYWORD_RETURN(RESTRICT); }                   // C99
     2209        YY_BREAK
     2210case 73:
    22052211YY_RULE_SETUP
    22062212#line 242 "lex.ll"
    2207 { KEYWORD_RETURN(RESTRICT); }                   // C99
    2208         YY_BREAK
    2209 case 73:
     2213{ KEYWORD_RETURN(RESTRICT); }                   // GCC
     2214        YY_BREAK
     2215case 74:
    22102216YY_RULE_SETUP
    22112217#line 243 "lex.ll"
    22122218{ KEYWORD_RETURN(RESTRICT); }                   // GCC
    22132219        YY_BREAK
    2214 case 74:
     2220case 75:
    22152221YY_RULE_SETUP
    22162222#line 244 "lex.ll"
    2217 { KEYWORD_RETURN(RESTRICT); }                   // GCC
    2218         YY_BREAK
    2219 case 75:
     2223{ KEYWORD_RETURN(RETURN); }
     2224        YY_BREAK
     2225case 76:
    22202226YY_RULE_SETUP
    22212227#line 245 "lex.ll"
    2222 { KEYWORD_RETURN(RETURN); }
    2223         YY_BREAK
    2224 case 76:
     2228{ KEYWORD_RETURN(SHORT); }
     2229        YY_BREAK
     2230case 77:
    22252231YY_RULE_SETUP
    22262232#line 246 "lex.ll"
    2227 { KEYWORD_RETURN(SHORT); }
    2228         YY_BREAK
    2229 case 77:
     2233{ KEYWORD_RETURN(SIGNED); }
     2234        YY_BREAK
     2235case 78:
    22302236YY_RULE_SETUP
    22312237#line 247 "lex.ll"
    2232 { KEYWORD_RETURN(SIGNED); }
    2233         YY_BREAK
    2234 case 78:
     2238{ KEYWORD_RETURN(SIGNED); }                             // GCC
     2239        YY_BREAK
     2240case 79:
    22352241YY_RULE_SETUP
    22362242#line 248 "lex.ll"
    22372243{ KEYWORD_RETURN(SIGNED); }                             // GCC
    22382244        YY_BREAK
    2239 case 79:
     2245case 80:
    22402246YY_RULE_SETUP
    22412247#line 249 "lex.ll"
    2242 { KEYWORD_RETURN(SIGNED); }                             // GCC
    2243         YY_BREAK
    2244 case 80:
     2248{ KEYWORD_RETURN(SIZEOF); }
     2249        YY_BREAK
     2250case 81:
    22452251YY_RULE_SETUP
    22462252#line 250 "lex.ll"
    2247 { KEYWORD_RETURN(SIZEOF); }
    2248         YY_BREAK
    2249 case 81:
     2253{ KEYWORD_RETURN(STATIC); }
     2254        YY_BREAK
     2255case 82:
    22502256YY_RULE_SETUP
    22512257#line 251 "lex.ll"
    2252 { KEYWORD_RETURN(STATIC); }
    2253         YY_BREAK
    2254 case 82:
     2258{ KEYWORD_RETURN(STATICASSERT); }               // C11
     2259        YY_BREAK
     2260case 83:
    22552261YY_RULE_SETUP
    22562262#line 252 "lex.ll"
    2257 { KEYWORD_RETURN(STATICASSERT); }               // C11
    2258         YY_BREAK
    2259 case 83:
     2263{ KEYWORD_RETURN(STRUCT); }
     2264        YY_BREAK
     2265case 84:
    22602266YY_RULE_SETUP
    22612267#line 253 "lex.ll"
    2262 { KEYWORD_RETURN(STRUCT); }
    2263         YY_BREAK
    2264 case 84:
     2268{ KEYWORD_RETURN(SWITCH); }
     2269        YY_BREAK
     2270case 85:
    22652271YY_RULE_SETUP
    22662272#line 254 "lex.ll"
    2267 { KEYWORD_RETURN(SWITCH); }
    2268         YY_BREAK
    2269 case 85:
     2273{ KEYWORD_RETURN(THREADLOCAL); }                // C11
     2274        YY_BREAK
     2275case 86:
    22702276YY_RULE_SETUP
    22712277#line 255 "lex.ll"
    2272 { KEYWORD_RETURN(THREADLOCAL); }                // C11
    2273         YY_BREAK
    2274 case 86:
     2278{ KEYWORD_RETURN(THROW); }                              // CFA
     2279        YY_BREAK
     2280case 87:
    22752281YY_RULE_SETUP
    22762282#line 256 "lex.ll"
    2277 { KEYWORD_RETURN(THROW); }                              // CFA
    2278         YY_BREAK
    2279 case 87:
     2283{ KEYWORD_RETURN(THROWRESUME); }                // CFA
     2284        YY_BREAK
     2285case 88:
    22802286YY_RULE_SETUP
    22812287#line 257 "lex.ll"
    2282 { KEYWORD_RETURN(THROWRESUME); }                // CFA
    2283         YY_BREAK
    2284 case 88:
     2288{ KEYWORD_RETURN(TRAIT); }                              // CFA
     2289        YY_BREAK
     2290case 89:
    22852291YY_RULE_SETUP
    22862292#line 258 "lex.ll"
    2287 { KEYWORD_RETURN(TRAIT); }                              // CFA
    2288         YY_BREAK
    2289 case 89:
     2293{ KEYWORD_RETURN(TRY); }                                // CFA
     2294        YY_BREAK
     2295case 90:
    22902296YY_RULE_SETUP
    22912297#line 259 "lex.ll"
    2292 { KEYWORD_RETURN(TRY); }                                // CFA
    2293         YY_BREAK
    2294 case 90:
     2298{ KEYWORD_RETURN(TYPEDEF); }
     2299        YY_BREAK
     2300case 91:
    22952301YY_RULE_SETUP
    22962302#line 260 "lex.ll"
    2297 { KEYWORD_RETURN(TYPEDEF); }
    2298         YY_BREAK
    2299 case 91:
     2303{ KEYWORD_RETURN(TYPEOF); }                             // GCC
     2304        YY_BREAK
     2305case 92:
    23002306YY_RULE_SETUP
    23012307#line 261 "lex.ll"
    23022308{ KEYWORD_RETURN(TYPEOF); }                             // GCC
    23032309        YY_BREAK
    2304 case 92:
     2310case 93:
    23052311YY_RULE_SETUP
    23062312#line 262 "lex.ll"
    23072313{ KEYWORD_RETURN(TYPEOF); }                             // GCC
    23082314        YY_BREAK
    2309 case 93:
     2315case 94:
    23102316YY_RULE_SETUP
    23112317#line 263 "lex.ll"
    2312 { KEYWORD_RETURN(TYPEOF); }                             // GCC
    2313         YY_BREAK
    2314 case 94:
     2318{ KEYWORD_RETURN(UNION); }
     2319        YY_BREAK
     2320case 95:
    23152321YY_RULE_SETUP
    23162322#line 264 "lex.ll"
    2317 { KEYWORD_RETURN(UNION); }
    2318         YY_BREAK
    2319 case 95:
     2323{ KEYWORD_RETURN(UNSIGNED); }
     2324        YY_BREAK
     2325case 96:
    23202326YY_RULE_SETUP
    23212327#line 265 "lex.ll"
    2322 { KEYWORD_RETURN(UNSIGNED); }
    2323         YY_BREAK
    2324 case 96:
     2328{ KEYWORD_RETURN(VALIST); }                     // GCC
     2329        YY_BREAK
     2330case 97:
    23252331YY_RULE_SETUP
    23262332#line 266 "lex.ll"
    2327 { KEYWORD_RETURN(VALIST); }                     // GCC
    2328         YY_BREAK
    2329 case 97:
     2333{ KEYWORD_RETURN(VOID); }
     2334        YY_BREAK
     2335case 98:
    23302336YY_RULE_SETUP
    23312337#line 267 "lex.ll"
    2332 { KEYWORD_RETURN(VOID); }
    2333         YY_BREAK
    2334 case 98:
     2338{ KEYWORD_RETURN(VOLATILE); }
     2339        YY_BREAK
     2340case 99:
    23352341YY_RULE_SETUP
    23362342#line 268 "lex.ll"
    2337 { KEYWORD_RETURN(VOLATILE); }
    2338         YY_BREAK
    2339 case 99:
     2343{ KEYWORD_RETURN(VOLATILE); }                   // GCC
     2344        YY_BREAK
     2345case 100:
    23402346YY_RULE_SETUP
    23412347#line 269 "lex.ll"
    23422348{ KEYWORD_RETURN(VOLATILE); }                   // GCC
    23432349        YY_BREAK
    2344 case 100:
     2350case 101:
    23452351YY_RULE_SETUP
    23462352#line 270 "lex.ll"
    2347 { KEYWORD_RETURN(VOLATILE); }                   // GCC
    2348         YY_BREAK
    2349 case 101:
    2350 YY_RULE_SETUP
    2351 #line 271 "lex.ll"
    23522353{ KEYWORD_RETURN(WHILE); }
    23532354        YY_BREAK
     
    23552356case 102:
    23562357YY_RULE_SETUP
     2358#line 273 "lex.ll"
     2359{ IDENTIFIER_RETURN(); }
     2360        YY_BREAK
     2361case 103:
     2362YY_RULE_SETUP
    23572363#line 274 "lex.ll"
     2364{ ATTRIBUTE_RETURN(); }
     2365        YY_BREAK
     2366case 104:
     2367YY_RULE_SETUP
     2368#line 275 "lex.ll"
     2369{ BEGIN BKQUOTE; }
     2370        YY_BREAK
     2371case 105:
     2372YY_RULE_SETUP
     2373#line 276 "lex.ll"
    23582374{ IDENTIFIER_RETURN(); }
    23592375        YY_BREAK
    2360 case 103:
    2361 YY_RULE_SETUP
    2362 #line 275 "lex.ll"
    2363 { ATTRIBUTE_RETURN(); }
    2364         YY_BREAK
    2365 case 104:
    2366 YY_RULE_SETUP
    2367 #line 276 "lex.ll"
    2368 { BEGIN BKQUOTE; }
    2369         YY_BREAK
    2370 case 105:
     2376case 106:
    23712377YY_RULE_SETUP
    23722378#line 277 "lex.ll"
    2373 { IDENTIFIER_RETURN(); }
    2374         YY_BREAK
    2375 case 106:
    2376 YY_RULE_SETUP
    2377 #line 278 "lex.ll"
    23782379{ BEGIN 0; }
    23792380        YY_BREAK
     
    23812382case 107:
    23822383YY_RULE_SETUP
     2384#line 280 "lex.ll"
     2385{ NUMERIC_RETURN(ZERO); }                               // CFA
     2386        YY_BREAK
     2387case 108:
     2388YY_RULE_SETUP
    23832389#line 281 "lex.ll"
    2384 { NUMERIC_RETURN(ZERO); }                               // CFA
    2385         YY_BREAK
    2386 case 108:
     2390{ NUMERIC_RETURN(ONE); }                                // CFA
     2391        YY_BREAK
     2392case 109:
    23872393YY_RULE_SETUP
    23882394#line 282 "lex.ll"
    2389 { NUMERIC_RETURN(ONE); }                                // CFA
    2390         YY_BREAK
    2391 case 109:
     2395{ NUMERIC_RETURN(INTEGERconstant); }
     2396        YY_BREAK
     2397case 110:
    23922398YY_RULE_SETUP
    23932399#line 283 "lex.ll"
    23942400{ NUMERIC_RETURN(INTEGERconstant); }
    23952401        YY_BREAK
    2396 case 110:
     2402case 111:
    23972403YY_RULE_SETUP
    23982404#line 284 "lex.ll"
    23992405{ NUMERIC_RETURN(INTEGERconstant); }
    24002406        YY_BREAK
    2401 case 111:
     2407case 112:
    24022408YY_RULE_SETUP
    24032409#line 285 "lex.ll"
    2404 { NUMERIC_RETURN(INTEGERconstant); }
    2405         YY_BREAK
    2406 case 112:
     2410{ NUMERIC_RETURN(FLOATINGconstant); }
     2411        YY_BREAK
     2412case 113:
    24072413YY_RULE_SETUP
    24082414#line 286 "lex.ll"
    24092415{ NUMERIC_RETURN(FLOATINGconstant); }
    24102416        YY_BREAK
    2411 case 113:
    2412 YY_RULE_SETUP
    2413 #line 287 "lex.ll"
    2414 { NUMERIC_RETURN(FLOATINGconstant); }
    2415         YY_BREAK
    24162417/* character constant, allows empty value */
    24172418case 114:
    24182419YY_RULE_SETUP
     2420#line 289 "lex.ll"
     2421{ BEGIN QUOTE; rm_underscore(); strtext = new std::string; *strtext += std::string( yytext ); }
     2422        YY_BREAK
     2423case 115:
     2424YY_RULE_SETUP
    24192425#line 290 "lex.ll"
    2420 { BEGIN QUOTE; rm_underscore(); strtext = new std::string; *strtext += std::string( yytext ); }
    2421         YY_BREAK
    2422 case 115:
    2423 YY_RULE_SETUP
    2424 #line 291 "lex.ll"
    24252426{ *strtext += std::string( yytext ); }
    24262427        YY_BREAK
     
    24282429/* rule 116 can match eol */
    24292430YY_RULE_SETUP
    2430 #line 292 "lex.ll"
     2431#line 291 "lex.ll"
    24312432{ BEGIN 0; *strtext += std::string( yytext); RETURN_STR(CHARACTERconstant); }
    24322433        YY_BREAK
     
    24352436case 117:
    24362437YY_RULE_SETUP
     2438#line 295 "lex.ll"
     2439{ BEGIN STRING; rm_underscore(); strtext = new std::string; *strtext += std::string( yytext ); }
     2440        YY_BREAK
     2441case 118:
     2442YY_RULE_SETUP
    24372443#line 296 "lex.ll"
    2438 { BEGIN STRING; rm_underscore(); strtext = new std::string; *strtext += std::string( yytext ); }
    2439         YY_BREAK
    2440 case 118:
    2441 YY_RULE_SETUP
    2442 #line 297 "lex.ll"
    24432444{ *strtext += std::string( yytext ); }
    24442445        YY_BREAK
     
    24462447/* rule 119 can match eol */
    24472448YY_RULE_SETUP
    2448 #line 298 "lex.ll"
     2449#line 297 "lex.ll"
    24492450{ BEGIN 0; *strtext += std::string( yytext ); RETURN_STR(STRINGliteral); }
    24502451        YY_BREAK
     
    24532454case 120:
    24542455YY_RULE_SETUP
    2455 #line 302 "lex.ll"
     2456#line 301 "lex.ll"
    24562457{ rm_underscore(); *strtext += std::string( yytext ); }
    24572458        YY_BREAK
     
    24592460/* rule 121 can match eol */
    24602461YY_RULE_SETUP
     2462#line 302 "lex.ll"
     2463{}                                              // continuation (ALSO HANDLED BY CPP)
     2464        YY_BREAK
     2465case 122:
     2466YY_RULE_SETUP
    24612467#line 303 "lex.ll"
    2462 {}                                              // continuation (ALSO HANDLED BY CPP)
    2463         YY_BREAK
    2464 case 122:
    2465 YY_RULE_SETUP
    2466 #line 304 "lex.ll"
    24672468{ *strtext += std::string( yytext ); } // unknown escape character
    24682469        YY_BREAK
     
    24702471case 123:
    24712472YY_RULE_SETUP
     2473#line 306 "lex.ll"
     2474{ ASCIIOP_RETURN(); }
     2475        YY_BREAK
     2476case 124:
     2477YY_RULE_SETUP
    24722478#line 307 "lex.ll"
    24732479{ ASCIIOP_RETURN(); }
    24742480        YY_BREAK
    2475 case 124:
     2481case 125:
    24762482YY_RULE_SETUP
    24772483#line 308 "lex.ll"
    24782484{ ASCIIOP_RETURN(); }
    24792485        YY_BREAK
    2480 case 125:
     2486case 126:
    24812487YY_RULE_SETUP
    24822488#line 309 "lex.ll"
    24832489{ ASCIIOP_RETURN(); }
    24842490        YY_BREAK
    2485 case 126:
     2491case 127:
    24862492YY_RULE_SETUP
    24872493#line 310 "lex.ll"
    24882494{ ASCIIOP_RETURN(); }
    24892495        YY_BREAK
    2490 case 127:
     2496case 128:
    24912497YY_RULE_SETUP
    24922498#line 311 "lex.ll"
    24932499{ ASCIIOP_RETURN(); }
    24942500        YY_BREAK
    2495 case 128:
     2501case 129:
    24962502YY_RULE_SETUP
    24972503#line 312 "lex.ll"
     2504{ ASCIIOP_RETURN(); }                                   // also operator
     2505        YY_BREAK
     2506case 130:
     2507YY_RULE_SETUP
     2508#line 313 "lex.ll"
    24982509{ ASCIIOP_RETURN(); }
    24992510        YY_BREAK
    2500 case 129:
    2501 YY_RULE_SETUP
    2502 #line 313 "lex.ll"
    2503 { ASCIIOP_RETURN(); }                                   // also operator
    2504         YY_BREAK
    2505 case 130:
     2511case 131:
    25062512YY_RULE_SETUP
    25072513#line 314 "lex.ll"
    25082514{ ASCIIOP_RETURN(); }
    25092515        YY_BREAK
    2510 case 131:
     2516case 132:
    25112517YY_RULE_SETUP
    25122518#line 315 "lex.ll"
    2513 { ASCIIOP_RETURN(); }
    2514         YY_BREAK
    2515 case 132:
     2519{ ASCIIOP_RETURN(); }                                   // also operator
     2520        YY_BREAK
     2521case 133:
    25162522YY_RULE_SETUP
    25172523#line 316 "lex.ll"
    2518 { ASCIIOP_RETURN(); }                                   // also operator
    2519         YY_BREAK
    2520 case 133:
    2521 YY_RULE_SETUP
    2522 #line 317 "lex.ll"
    25232524{ NAMEDOP_RETURN(ELLIPSIS); }
    25242525        YY_BREAK
     
    25262527case 134:
    25272528YY_RULE_SETUP
     2529#line 319 "lex.ll"
     2530{ RETURN_VAL('['); }
     2531        YY_BREAK
     2532case 135:
     2533YY_RULE_SETUP
    25282534#line 320 "lex.ll"
    2529 { RETURN_VAL('['); }
    2530         YY_BREAK
    2531 case 135:
     2535{ RETURN_VAL(']'); }
     2536        YY_BREAK
     2537case 136:
    25322538YY_RULE_SETUP
    25332539#line 321 "lex.ll"
    2534 { RETURN_VAL(']'); }
    2535         YY_BREAK
    2536 case 136:
     2540{ RETURN_VAL('{'); }
     2541        YY_BREAK
     2542case 137:
    25372543YY_RULE_SETUP
    25382544#line 322 "lex.ll"
    2539 { RETURN_VAL('{'); }
    2540         YY_BREAK
    2541 case 137:
    2542 YY_RULE_SETUP
    2543 #line 323 "lex.ll"
    25442545{ RETURN_VAL('}'); }
    25452546        YY_BREAK
     
    25472548case 138:
    25482549YY_RULE_SETUP
     2550#line 325 "lex.ll"
     2551{ ASCIIOP_RETURN(); }
     2552        YY_BREAK
     2553case 139:
     2554YY_RULE_SETUP
    25492555#line 326 "lex.ll"
    25502556{ ASCIIOP_RETURN(); }
    25512557        YY_BREAK
    2552 case 139:
     2558case 140:
    25532559YY_RULE_SETUP
    25542560#line 327 "lex.ll"
    25552561{ ASCIIOP_RETURN(); }
    25562562        YY_BREAK
    2557 case 140:
     2563case 141:
    25582564YY_RULE_SETUP
    25592565#line 328 "lex.ll"
    25602566{ ASCIIOP_RETURN(); }
    25612567        YY_BREAK
    2562 case 141:
     2568case 142:
    25632569YY_RULE_SETUP
    25642570#line 329 "lex.ll"
    25652571{ ASCIIOP_RETURN(); }
    25662572        YY_BREAK
    2567 case 142:
     2573case 143:
    25682574YY_RULE_SETUP
    25692575#line 330 "lex.ll"
    25702576{ ASCIIOP_RETURN(); }
    25712577        YY_BREAK
    2572 case 143:
     2578case 144:
    25732579YY_RULE_SETUP
    25742580#line 331 "lex.ll"
    25752581{ ASCIIOP_RETURN(); }
    25762582        YY_BREAK
    2577 case 144:
     2583case 145:
    25782584YY_RULE_SETUP
    25792585#line 332 "lex.ll"
    25802586{ ASCIIOP_RETURN(); }
    25812587        YY_BREAK
    2582 case 145:
     2588case 146:
    25832589YY_RULE_SETUP
    25842590#line 333 "lex.ll"
    25852591{ ASCIIOP_RETURN(); }
    25862592        YY_BREAK
    2587 case 146:
     2593case 147:
    25882594YY_RULE_SETUP
    25892595#line 334 "lex.ll"
    25902596{ ASCIIOP_RETURN(); }
    25912597        YY_BREAK
    2592 case 147:
     2598case 148:
    25932599YY_RULE_SETUP
    25942600#line 335 "lex.ll"
    25952601{ ASCIIOP_RETURN(); }
    25962602        YY_BREAK
    2597 case 148:
     2603case 149:
    25982604YY_RULE_SETUP
    25992605#line 336 "lex.ll"
    26002606{ ASCIIOP_RETURN(); }
    26012607        YY_BREAK
    2602 case 149:
     2608case 150:
    26032609YY_RULE_SETUP
    26042610#line 337 "lex.ll"
    26052611{ ASCIIOP_RETURN(); }
    26062612        YY_BREAK
    2607 case 150:
     2613case 151:
    26082614YY_RULE_SETUP
    26092615#line 338 "lex.ll"
    26102616{ ASCIIOP_RETURN(); }
    26112617        YY_BREAK
    2612 case 151:
    2613 YY_RULE_SETUP
    2614 #line 339 "lex.ll"
    2615 { ASCIIOP_RETURN(); }
    2616         YY_BREAK
    26172618case 152:
    26182619YY_RULE_SETUP
     2620#line 340 "lex.ll"
     2621{ NAMEDOP_RETURN(ICR); }
     2622        YY_BREAK
     2623case 153:
     2624YY_RULE_SETUP
    26192625#line 341 "lex.ll"
    2620 { NAMEDOP_RETURN(ICR); }
    2621         YY_BREAK
    2622 case 153:
     2626{ NAMEDOP_RETURN(DECR); }
     2627        YY_BREAK
     2628case 154:
    26232629YY_RULE_SETUP
    26242630#line 342 "lex.ll"
    2625 { NAMEDOP_RETURN(DECR); }
    2626         YY_BREAK
    2627 case 154:
     2631{ NAMEDOP_RETURN(EQ); }
     2632        YY_BREAK
     2633case 155:
    26282634YY_RULE_SETUP
    26292635#line 343 "lex.ll"
    2630 { NAMEDOP_RETURN(EQ); }
    2631         YY_BREAK
    2632 case 155:
     2636{ NAMEDOP_RETURN(NE); }
     2637        YY_BREAK
     2638case 156:
    26332639YY_RULE_SETUP
    26342640#line 344 "lex.ll"
    2635 { NAMEDOP_RETURN(NE); }
    2636         YY_BREAK
    2637 case 156:
     2641{ NAMEDOP_RETURN(LS); }
     2642        YY_BREAK
     2643case 157:
    26382644YY_RULE_SETUP
    26392645#line 345 "lex.ll"
    2640 { NAMEDOP_RETURN(LS); }
    2641         YY_BREAK
    2642 case 157:
     2646{ NAMEDOP_RETURN(RS); }
     2647        YY_BREAK
     2648case 158:
    26432649YY_RULE_SETUP
    26442650#line 346 "lex.ll"
    2645 { NAMEDOP_RETURN(RS); }
    2646         YY_BREAK
    2647 case 158:
     2651{ NAMEDOP_RETURN(LE); }
     2652        YY_BREAK
     2653case 159:
    26482654YY_RULE_SETUP
    26492655#line 347 "lex.ll"
    2650 { NAMEDOP_RETURN(LE); }
    2651         YY_BREAK
    2652 case 159:
     2656{ NAMEDOP_RETURN(GE); }
     2657        YY_BREAK
     2658case 160:
    26532659YY_RULE_SETUP
    26542660#line 348 "lex.ll"
    2655 { NAMEDOP_RETURN(GE); }
    2656         YY_BREAK
    2657 case 160:
     2661{ NAMEDOP_RETURN(ANDAND); }
     2662        YY_BREAK
     2663case 161:
    26582664YY_RULE_SETUP
    26592665#line 349 "lex.ll"
    2660 { NAMEDOP_RETURN(ANDAND); }
    2661         YY_BREAK
    2662 case 161:
     2666{ NAMEDOP_RETURN(OROR); }
     2667        YY_BREAK
     2668case 162:
    26632669YY_RULE_SETUP
    26642670#line 350 "lex.ll"
    2665 { NAMEDOP_RETURN(OROR); }
    2666         YY_BREAK
    2667 case 162:
     2671{ NAMEDOP_RETURN(ARROW); }
     2672        YY_BREAK
     2673case 163:
    26682674YY_RULE_SETUP
    26692675#line 351 "lex.ll"
    2670 { NAMEDOP_RETURN(ARROW); }
    2671         YY_BREAK
    2672 case 163:
     2676{ NAMEDOP_RETURN(PLUSassign); }
     2677        YY_BREAK
     2678case 164:
    26732679YY_RULE_SETUP
    26742680#line 352 "lex.ll"
    2675 { NAMEDOP_RETURN(PLUSassign); }
    2676         YY_BREAK
    2677 case 164:
     2681{ NAMEDOP_RETURN(MINUSassign); }
     2682        YY_BREAK
     2683case 165:
    26782684YY_RULE_SETUP
    26792685#line 353 "lex.ll"
    2680 { NAMEDOP_RETURN(MINUSassign); }
    2681         YY_BREAK
    2682 case 165:
     2686{ NAMEDOP_RETURN(MULTassign); }
     2687        YY_BREAK
     2688case 166:
    26832689YY_RULE_SETUP
    26842690#line 354 "lex.ll"
    2685 { NAMEDOP_RETURN(MULTassign); }
    2686         YY_BREAK
    2687 case 166:
     2691{ NAMEDOP_RETURN(DIVassign); }
     2692        YY_BREAK
     2693case 167:
    26882694YY_RULE_SETUP
    26892695#line 355 "lex.ll"
    2690 { NAMEDOP_RETURN(DIVassign); }
    2691         YY_BREAK
    2692 case 167:
     2696{ NAMEDOP_RETURN(MODassign); }
     2697        YY_BREAK
     2698case 168:
    26932699YY_RULE_SETUP
    26942700#line 356 "lex.ll"
    2695 { NAMEDOP_RETURN(MODassign); }
    2696         YY_BREAK
    2697 case 168:
     2701{ NAMEDOP_RETURN(ANDassign); }
     2702        YY_BREAK
     2703case 169:
    26982704YY_RULE_SETUP
    26992705#line 357 "lex.ll"
    2700 { NAMEDOP_RETURN(ANDassign); }
    2701         YY_BREAK
    2702 case 169:
     2706{ NAMEDOP_RETURN(ORassign); }
     2707        YY_BREAK
     2708case 170:
    27032709YY_RULE_SETUP
    27042710#line 358 "lex.ll"
    2705 { NAMEDOP_RETURN(ORassign); }
    2706         YY_BREAK
    2707 case 170:
     2711{ NAMEDOP_RETURN(ERassign); }
     2712        YY_BREAK
     2713case 171:
    27082714YY_RULE_SETUP
    27092715#line 359 "lex.ll"
    2710 { NAMEDOP_RETURN(ERassign); }
    2711         YY_BREAK
    2712 case 171:
     2716{ NAMEDOP_RETURN(LSassign); }
     2717        YY_BREAK
     2718case 172:
    27132719YY_RULE_SETUP
    27142720#line 360 "lex.ll"
    2715 { NAMEDOP_RETURN(LSassign); }
    2716         YY_BREAK
    2717 case 172:
    2718 YY_RULE_SETUP
    2719 #line 361 "lex.ll"
    27202721{ NAMEDOP_RETURN(RSassign); }
    27212722        YY_BREAK
    27222723case 173:
    27232724YY_RULE_SETUP
    2724 #line 363 "lex.ll"
     2725#line 362 "lex.ll"
    27252726{ NAMEDOP_RETURN(ATassign); }
    27262727        YY_BREAK
     2728/* CFA, operator identifier */
    27272729case 174:
    27282730YY_RULE_SETUP
    2729 #line 364 "lex.ll"
    2730 { NAMEDOP_RETURN(REFassign); }
    2731         YY_BREAK
    2732 /* CFA, operator identifier */
     2731#line 365 "lex.ll"
     2732{ IDENTIFIER_RETURN(); }                                // unary
     2733        YY_BREAK
    27332734case 175:
    27342735YY_RULE_SETUP
     2736#line 366 "lex.ll"
     2737{ IDENTIFIER_RETURN(); }
     2738        YY_BREAK
     2739case 176:
     2740YY_RULE_SETUP
    27352741#line 367 "lex.ll"
    2736 { IDENTIFIER_RETURN(); }                                // unary
    2737         YY_BREAK
    2738 case 176:
     2742{ IDENTIFIER_RETURN(); }
     2743        YY_BREAK
     2744case 177:
    27392745YY_RULE_SETUP
    27402746#line 368 "lex.ll"
    2741 { IDENTIFIER_RETURN(); }
    2742         YY_BREAK
    2743 case 177:
    2744 YY_RULE_SETUP
    2745 #line 369 "lex.ll"
    2746 { IDENTIFIER_RETURN(); }
    2747         YY_BREAK
    2748 case 178:
    2749 YY_RULE_SETUP
    2750 #line 370 "lex.ll"
    27512747{ IDENTIFIER_RETURN(); }                // binary
    27522748        YY_BREAK
     
    27772773          an argument list.
    27782774        */
    2779 case 179:
    2780 YY_RULE_SETUP
    2781 #line 397 "lex.ll"
     2775case 178:
     2776YY_RULE_SETUP
     2777#line 395 "lex.ll"
    27822778{
    27832779        // 1 or 2 character unary operator ?
     
    27922788        YY_BREAK
    27932789/* unknown characters */
     2790case 179:
     2791YY_RULE_SETUP
     2792#line 407 "lex.ll"
     2793{ printf("unknown character(s):\"%s\" on line %d\n", yytext, yylineno); }
     2794        YY_BREAK
    27942795case 180:
    27952796YY_RULE_SETUP
    27962797#line 409 "lex.ll"
    2797 { printf("unknown character(s):\"%s\" on line %d\n", yytext, yylineno); }
    2798         YY_BREAK
    2799 case 181:
    2800 YY_RULE_SETUP
    2801 #line 411 "lex.ll"
    28022798ECHO;
    28032799        YY_BREAK
    2804 #line 2805 "Parser/lex.cc"
     2800#line 2801 "Parser/lex.cc"
    28052801case YY_STATE_EOF(INITIAL):
    28062802case YY_STATE_EOF(COMMENT):
     
    30993095                        {
    31003096                        yy_current_state = (int) yy_def[yy_current_state];
    3101                         if ( yy_current_state >= 889 )
     3097                        if ( yy_current_state >= 888 )
    31023098                                yy_c = yy_meta[(unsigned int) yy_c];
    31033099                        }
     
    31273123                {
    31283124                yy_current_state = (int) yy_def[yy_current_state];
    3129                 if ( yy_current_state >= 889 )
     3125                if ( yy_current_state >= 888 )
    31303126                        yy_c = yy_meta[(unsigned int) yy_c];
    31313127                }
    31323128        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
    3133         yy_is_jam = (yy_current_state == 888);
     3129        yy_is_jam = (yy_current_state == 887);
    31343130
    31353131        return yy_is_jam ? 0 : yy_current_state;
     
    37773773#define YYTABLES_NAME "yytables"
    37783774
    3779 #line 411 "lex.ll"
     3775#line 409 "lex.ll"
    37803776
    37813777
  • src/Parser/lex.ll

    rc2931ea rf1ee72e  
    1010 * Created On       : Sat Sep 22 08:58:10 2001
    1111 * Last Modified By : Peter A. Buhr
    12  * Last Modified On : Mon Jun  6 18:08:27 2016
    13  * Update Count     : 451
     12 * Last Modified On : Wed Jun 22 21:20:18 2016
     13 * Update Count     : 456
    1414 */
    1515
     
    4949
    5050void rm_underscore() {
    51         // remove underscores in numeric constant
    52         int j = 0;
     51        // Remove underscores in numeric constant by copying the non-underscore characters to the front of the string.
     52        yyleng = 0;
    5353        for ( int i = 0; yytext[i] != '\0'; i += 1 ) {
    5454                if ( yytext[i] != '_' ) {
    55                         yytext[j] = yytext[i];
    56                         j += 1;
     55                        yytext[yyleng] = yytext[i];
     56                        yyleng += 1;
    5757                } // if
    5858        } // for
    59         yyleng = j;
    6059        yytext[yyleng] = '\0';
    6160}
     
    121120h_white [ ]|{h_tab}
    122121
    123                                 // operators
     122                                // overloadable operators
    124123op_unary_only "~"|"!"
    125124op_unary_binary "+"|"-"|"*"
     
    129128op_binary_only "/"|"%"|"^"|"&"|"|"|"<"|">"|"="|"=="|"!="|"<<"|">>"|"<="|">="|"+="|"-="|"*="|"/="|"%="|"&="|"|="|"^="|"<<="|">>="
    130129op_binary_over {op_unary_binary}|{op_binary_only}
    131 op_binary_not_over "?"|"->"|"&&"|"||"
    132 operator {op_unary_pre_post}|{op_binary_over}|{op_binary_not_over}
     130                                // op_binary_not_over "?"|"->"|"."|"&&"|"||"|"@="
     131                                // operator {op_unary_pre_post}|{op_binary_over}|{op_binary_not_over}
    133132
    134133%x COMMENT
     
    362361
    363362"@="                    { NAMEDOP_RETURN(ATassign); }
    364 ":="                    { NAMEDOP_RETURN(REFassign); }
    365363
    366364                                /* CFA, operator identifier */
  • src/Parser/parser.cc

    rc2931ea rf1ee72e  
    6767
    6868/* Line 268 of yacc.c  */
    69 #line 44 "parser.yy"
     69#line 42 "parser.yy"
    7070
    7171#define YYDEBUG_LEXER_TEXT (yylval)                                             // lexer loads this up each time
     
    223223     ORassign = 361,
    224224     ATassign = 362,
    225      REFassign = 363,
    226      THEN = 364
     225     THEN = 363
    227226   };
    228227#endif
     
    333332#define ORassign 361
    334333#define ATassign 362
    335 #define REFassign 363
    336 #define THEN 364
     334#define THEN 363
    337335
    338336
     
    344342
    345343/* Line 293 of yacc.c  */
    346 #line 112 "parser.yy"
     344#line 110 "parser.yy"
    347345
    348346        Token tok;
     
    361359
    362360/* Line 293 of yacc.c  */
    363 #line 364 "Parser/parser.cc"
     361#line 362 "Parser/parser.cc"
    364362} YYSTYPE;
    365363# define YYSTYPE_IS_TRIVIAL 1
     
    373371
    374372/* Line 343 of yacc.c  */
    375 #line 376 "Parser/parser.cc"
     373#line 374 "Parser/parser.cc"
    376374
    377375#ifdef short
     
    592590#define YYFINAL  251
    593591/* YYLAST -- Last index in YYTABLE.  */
    594 #define YYLAST   11311
     592#define YYLAST   11428
    595593
    596594/* YYNTOKENS -- Number of terminals.  */
    597 #define YYNTOKENS  134
     595#define YYNTOKENS  133
    598596/* YYNNTS -- Number of nonterminals.  */
    599597#define YYNNTS  241
    600598/* YYNRULES -- Number of rules.  */
    601 #define YYNRULES  756
     599#define YYNRULES  755
    602600/* YYNRULES -- Number of states.  */
    603 #define YYNSTATES  1583
     601#define YYNSTATES  1581
    604602
    605603/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
    606604#define YYUNDEFTOK  2
    607 #define YYMAXUTOK   364
     605#define YYMAXUTOK   363
    608606
    609607#define YYTRANSLATE(YYX)                                                \
     
    616614       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    617615       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    618        2,     2,     2,   123,     2,     2,     2,   126,   120,     2,
    619      110,   111,   119,   121,   117,   122,   114,   125,     2,     2,
    620        2,     2,     2,     2,     2,     2,     2,     2,   118,   133,
    621      127,   132,   128,   131,     2,     2,     2,     2,     2,     2,
     616       2,     2,     2,   122,     2,     2,     2,   125,   119,     2,
     617     109,   110,   118,   120,   116,   121,   113,   124,     2,     2,
     618       2,     2,     2,     2,     2,     2,     2,     2,   117,   132,
     619     126,   131,   127,   130,     2,     2,     2,     2,     2,     2,
    622620       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    623621       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    624        2,   112,     2,   113,   129,     2,     2,     2,     2,     2,
     622       2,   111,     2,   112,   128,     2,     2,     2,     2,     2,
    625623       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    626624       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    627        2,     2,     2,   115,   130,   116,   124,     2,     2,     2,
     625       2,     2,     2,   114,   129,   115,   123,     2,     2,     2,
    628626       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    629627       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     
    649647      85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
    650648      95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
    651      105,   106,   107,   108,   109
     649     105,   106,   107,   108
    652650};
    653651
     
    668666     307,   311,   313,   317,   319,   323,   325,   329,   331,   335,
    669667     337,   341,   343,   349,   354,   360,   362,   364,   368,   372,
    670      376,   379,   380,   382,   385,   391,   398,   406,   408,   412,
    671      414,   416,   418,   420,   422,   424,   426,   428,   430,   432,
    672      434,   438,   439,   441,   443,   445,   447,   449,   451,   453,
    673      455,   457,   464,   469,   472,   480,   482,   486,   488,   491,
    674      493,   496,   498,   501,   504,   510,   518,   524,   534,   540,
    675      550,   552,   556,   558,   560,   564,   568,   571,   573,   576,
    676      579,   580,   582,   585,   589,   590,   592,   595,   599,   603,
    677      608,   609,   611,   613,   616,   622,   630,   637,   644,   649,
    678      653,   658,   661,   665,   668,   672,   676,   680,   684,   690,
    679      694,   698,   703,   705,   711,   718,   724,   731,   741,   752,
    680      762,   773,   776,   778,   781,   784,   787,   789,   796,   805,
    681      816,   829,   844,   845,   847,   848,   850,   852,   856,   861,
    682      869,   870,   872,   876,   878,   882,   884,   886,   888,   892,
    683      894,   896,   898,   902,   903,   905,   909,   914,   916,   920,
    684      922,   924,   928,   932,   936,   940,   944,   947,   951,   958,
    685      962,   966,   971,   973,   976,   979,   983,   989,   998,  1006,
    686     1014,  1020,  1030,  1033,  1036,  1042,  1046,  1052,  1057,  1061,
    687     1066,  1071,  1079,  1083,  1087,  1091,  1095,  1100,  1107,  1109,
    688     1111,  1113,  1115,  1117,  1119,  1121,  1123,  1124,  1126,  1128,
    689     1131,  1133,  1135,  1137,  1139,  1141,  1143,  1145,  1146,  1152,
    690     1154,  1157,  1161,  1163,  1166,  1168,  1170,  1172,  1174,  1176,
    691     1178,  1180,  1182,  1184,  1186,  1188,  1190,  1192,  1194,  1196,
    692     1198,  1200,  1202,  1204,  1206,  1208,  1210,  1212,  1215,  1218,
    693     1222,  1226,  1228,  1232,  1234,  1237,  1240,  1243,  1248,  1253,
    694     1258,  1263,  1265,  1268,  1271,  1275,  1277,  1280,  1283,  1285,
    695     1288,  1291,  1295,  1297,  1300,  1303,  1305,  1307,  1312,  1315,
    696     1316,  1323,  1331,  1334,  1337,  1340,  1342,  1345,  1348,  1352,
    697     1355,  1359,  1361,  1364,  1368,  1371,  1374,  1379,  1380,  1382,
    698     1385,  1388,  1390,  1391,  1393,  1396,  1399,  1405,  1408,  1409,
    699     1417,  1420,  1425,  1426,  1429,  1430,  1432,  1434,  1436,  1442,
    700     1448,  1454,  1456,  1462,  1468,  1478,  1480,  1486,  1487,  1489,
    701     1491,  1497,  1499,  1501,  1507,  1513,  1515,  1519,  1523,  1528,
    702     1530,  1532,  1534,  1536,  1539,  1541,  1545,  1549,  1551,  1554,
    703     1556,  1560,  1562,  1564,  1566,  1568,  1570,  1572,  1574,  1576,
    704     1578,  1580,  1582,  1585,  1587,  1589,  1591,  1594,  1595,  1598,
    705     1601,  1603,  1608,  1609,  1611,  1614,  1618,  1623,  1626,  1629,
    706     1631,  1634,  1636,  1639,  1645,  1651,  1659,  1666,  1668,  1671,
    707     1674,  1678,  1680,  1683,  1686,  1691,  1694,  1699,  1700,  1705,
    708     1708,  1710,  1712,  1714,  1715,  1718,  1724,  1730,  1744,  1746,
    709     1748,  1752,  1756,  1759,  1763,  1767,  1770,  1775,  1777,  1784,
    710     1794,  1795,  1807,  1809,  1813,  1817,  1821,  1823,  1825,  1831,
    711     1834,  1840,  1841,  1843,  1845,  1849,  1850,  1852,  1854,  1856,
    712     1858,  1859,  1866,  1869,  1871,  1874,  1879,  1882,  1886,  1890,
    713     1894,  1899,  1905,  1911,  1917,  1924,  1926,  1928,  1930,  1934,
    714     1935,  1941,  1942,  1944,  1946,  1949,  1956,  1958,  1962,  1963,
    715     1965,  1970,  1972,  1974,  1976,  1978,  1981,  1983,  1986,  1989,
    716     1991,  1995,  1998,  2002,  2006,  2009,  2014,  2019,  2023,  2032,
    717     2036,  2039,  2041,  2044,  2051,  2060,  2064,  2067,  2071,  2075,
    718     2080,  2085,  2089,  2091,  2093,  2095,  2100,  2107,  2111,  2114,
    719     2118,  2122,  2127,  2132,  2136,  2139,  2141,  2144,  2147,  2149,
    720     2153,  2156,  2160,  2164,  2167,  2172,  2177,  2181,  2188,  2197,
    721     2201,  2204,  2206,  2209,  2212,  2215,  2219,  2223,  2226,  2231,
    722     2236,  2240,  2247,  2256,  2260,  2263,  2265,  2268,  2271,  2273,
    723     2275,  2278,  2282,  2286,  2289,  2294,  2301,  2310,  2312,  2315,
    724     2318,  2320,  2323,  2326,  2330,  2334,  2336,  2341,  2346,  2350,
    725     2356,  2365,  2369,  2372,  2376,  2378,  2384,  2390,  2397,  2404,
    726     2406,  2409,  2412,  2414,  2417,  2420,  2424,  2428,  2430,  2435,
    727     2440,  2444,  2450,  2459,  2463,  2465,  2468,  2470,  2473,  2480,
    728     2486,  2493,  2501,  2509,  2511,  2514,  2517,  2519,  2522,  2525,
    729     2529,  2533,  2535,  2540,  2545,  2549,  2558,  2562,  2564,  2566,
    730     2569,  2571,  2573,  2576,  2580,  2583,  2587,  2590,  2594,  2598,
    731     2601,  2606,  2610,  2613,  2617,  2620,  2625,  2629,  2632,  2639,
    732     2646,  2653,  2661,  2663,  2666,  2668,  2670,  2672,  2675,  2679,
    733     2682,  2686,  2689,  2693,  2697,  2702,  2705,  2709,  2714,  2717,
    734     2723,  2729,  2736,  2743,  2744,  2746,  2747
     668     375,   376,   378,   381,   387,   394,   402,   404,   408,   410,
     669     412,   414,   416,   418,   420,   422,   424,   426,   428,   430,
     670     434,   435,   437,   439,   441,   443,   445,   447,   449,   451,
     671     453,   460,   465,   468,   476,   478,   482,   484,   487,   489,
     672     492,   494,   497,   500,   506,   514,   520,   530,   536,   546,
     673     548,   552,   554,   556,   560,   564,   567,   569,   572,   575,
     674     576,   578,   581,   585,   586,   588,   591,   595,   599,   604,
     675     605,   607,   609,   612,   618,   626,   633,   640,   645,   649,
     676     654,   657,   661,   664,   668,   672,   676,   680,   686,   690,
     677     694,   699,   701,   707,   714,   720,   727,   737,   748,   758,
     678     769,   772,   774,   777,   780,   783,   785,   792,   801,   812,
     679     825,   840,   841,   843,   844,   846,   848,   852,   857,   865,
     680     866,   868,   872,   874,   878,   880,   882,   884,   888,   890,
     681     892,   894,   898,   899,   901,   905,   910,   912,   916,   918,
     682     920,   924,   928,   932,   936,   940,   943,   947,   954,   958,
     683     962,   967,   969,   972,   975,   979,   985,   994,  1002,  1010,
     684    1016,  1026,  1029,  1032,  1038,  1042,  1048,  1053,  1057,  1062,
     685    1067,  1075,  1079,  1083,  1087,  1091,  1096,  1103,  1105,  1107,
     686    1109,  1111,  1113,  1115,  1117,  1119,  1120,  1122,  1124,  1127,
     687    1129,  1131,  1133,  1135,  1137,  1139,  1141,  1142,  1148,  1150,
     688    1153,  1157,  1159,  1162,  1164,  1166,  1168,  1170,  1172,  1174,
     689    1176,  1178,  1180,  1182,  1184,  1186,  1188,  1190,  1192,  1194,
     690    1196,  1198,  1200,  1202,  1204,  1206,  1208,  1211,  1214,  1218,
     691    1222,  1224,  1228,  1230,  1233,  1236,  1239,  1244,  1249,  1254,
     692    1259,  1261,  1264,  1267,  1271,  1273,  1276,  1279,  1281,  1284,
     693    1287,  1291,  1293,  1296,  1299,  1301,  1303,  1308,  1311,  1312,
     694    1319,  1327,  1330,  1333,  1336,  1338,  1341,  1344,  1348,  1351,
     695    1355,  1357,  1360,  1364,  1367,  1370,  1375,  1376,  1378,  1381,
     696    1384,  1386,  1387,  1389,  1392,  1395,  1401,  1404,  1405,  1413,
     697    1416,  1421,  1422,  1425,  1426,  1428,  1430,  1432,  1438,  1444,
     698    1450,  1452,  1458,  1464,  1474,  1476,  1482,  1483,  1485,  1487,
     699    1493,  1495,  1497,  1503,  1509,  1511,  1515,  1519,  1524,  1526,
     700    1528,  1530,  1532,  1535,  1537,  1541,  1545,  1547,  1550,  1552,
     701    1556,  1558,  1560,  1562,  1564,  1566,  1568,  1570,  1572,  1574,
     702    1576,  1578,  1581,  1583,  1585,  1587,  1590,  1591,  1594,  1597,
     703    1599,  1604,  1605,  1607,  1610,  1614,  1619,  1622,  1625,  1627,
     704    1630,  1632,  1635,  1641,  1647,  1655,  1662,  1664,  1667,  1670,
     705    1674,  1676,  1679,  1682,  1687,  1690,  1695,  1696,  1701,  1704,
     706    1706,  1708,  1710,  1711,  1714,  1720,  1726,  1740,  1742,  1744,
     707    1748,  1752,  1755,  1759,  1763,  1766,  1771,  1773,  1780,  1790,
     708    1791,  1803,  1805,  1809,  1813,  1817,  1819,  1821,  1827,  1830,
     709    1836,  1837,  1839,  1841,  1845,  1846,  1848,  1850,  1852,  1854,
     710    1855,  1862,  1865,  1867,  1870,  1875,  1878,  1882,  1886,  1890,
     711    1895,  1901,  1907,  1913,  1920,  1922,  1924,  1926,  1930,  1931,
     712    1937,  1938,  1940,  1942,  1945,  1952,  1954,  1958,  1959,  1961,
     713    1966,  1968,  1970,  1972,  1974,  1977,  1979,  1982,  1985,  1987,
     714    1991,  1994,  1998,  2002,  2005,  2010,  2015,  2019,  2028,  2032,
     715    2035,  2037,  2040,  2047,  2056,  2060,  2063,  2067,  2071,  2076,
     716    2081,  2085,  2087,  2089,  2091,  2096,  2103,  2107,  2110,  2114,
     717    2118,  2123,  2128,  2132,  2135,  2137,  2140,  2143,  2145,  2149,
     718    2152,  2156,  2160,  2163,  2168,  2173,  2177,  2184,  2193,  2197,
     719    2200,  2202,  2205,  2208,  2211,  2215,  2219,  2222,  2227,  2232,
     720    2236,  2243,  2252,  2256,  2259,  2261,  2264,  2267,  2269,  2271,
     721    2274,  2278,  2282,  2285,  2290,  2297,  2306,  2308,  2311,  2314,
     722    2316,  2319,  2322,  2326,  2330,  2332,  2337,  2342,  2346,  2352,
     723    2361,  2365,  2368,  2372,  2374,  2380,  2386,  2393,  2400,  2402,
     724    2405,  2408,  2410,  2413,  2416,  2420,  2424,  2426,  2431,  2436,
     725    2440,  2446,  2455,  2459,  2461,  2464,  2466,  2469,  2476,  2482,
     726    2489,  2497,  2505,  2507,  2510,  2513,  2515,  2518,  2521,  2525,
     727    2529,  2531,  2536,  2541,  2545,  2554,  2558,  2560,  2562,  2565,
     728    2567,  2569,  2572,  2576,  2579,  2583,  2586,  2590,  2594,  2597,
     729    2602,  2606,  2609,  2613,  2616,  2621,  2625,  2628,  2635,  2642,
     730    2649,  2657,  2659,  2662,  2664,  2666,  2668,  2671,  2675,  2678,
     731    2682,  2685,  2689,  2693,  2698,  2701,  2705,  2710,  2713,  2719,
     732    2725,  2732,  2739,  2740,  2742,  2743
    735733};
    736734
     
    738736static const yytype_int16 yyrhs[] =
    739737{
    740      303,     0,    -1,    -1,    -1,    79,    -1,    80,    -1,    81,
    741       -1,    72,    -1,    76,    -1,   141,    -1,    72,    -1,    76,
    742       -1,    72,    -1,   141,    -1,    83,    -1,    84,    -1,    82,
    743       -1,   142,    82,    -1,    72,    -1,   141,    -1,   110,   170,
    744      111,    -1,   110,   174,   111,    -1,   143,    -1,   144,   112,
    745      135,   165,   136,   113,    -1,   144,   110,   145,   111,    -1,
    746      144,   114,   140,    -1,   144,   114,   112,   135,   147,   136,
    747      113,    -1,   144,    85,   140,    -1,   144,    85,   112,   135,
    748      147,   136,   113,    -1,   144,    86,    -1,   144,    87,    -1,
    749      110,   276,   111,   115,   280,   373,   116,    -1,   144,   115,
    750      145,   116,    -1,   146,    -1,   145,   117,   146,    -1,    -1,
    751      165,    -1,   140,   118,   165,    -1,   112,   135,   165,   136,
    752      113,   118,   165,    -1,   112,   135,   165,   117,   168,   136,
    753      113,   118,   165,    -1,   148,    -1,   147,   117,   148,    -1,
    754      140,    -1,   140,   114,   148,    -1,   140,   114,   112,   135,
    755      147,   136,   113,    -1,   140,    85,   148,    -1,   140,    85,
    756      112,   135,   147,   136,   113,    -1,   144,    -1,   137,    -1,
    757      142,    -1,    40,   152,    -1,   150,   152,    -1,   151,   152,
    758       -1,    86,   149,    -1,    87,   149,    -1,    37,   149,    -1,
    759       37,   110,   276,   111,    -1,    38,   110,   276,   117,   140,
    760      111,    -1,    76,    -1,    76,   110,   277,   111,    -1,    76,
    761      110,   146,   111,    -1,    66,   149,    -1,    66,   110,   276,
    762      111,    -1,    94,   140,    -1,   119,    -1,   120,    -1,   121,
    763       -1,   122,    -1,   123,    -1,   124,    -1,   149,    -1,   110,
    764      276,   111,   152,    -1,   110,   276,   111,   167,    -1,   152,
    765       -1,   153,   119,   152,    -1,   153,   125,   152,    -1,   153,
    766      126,   152,    -1,   153,    -1,   154,   121,   153,    -1,   154,
    767      122,   153,    -1,   154,    -1,   155,    88,   154,    -1,   155,
    768       89,   154,    -1,   155,    -1,   156,   127,   155,    -1,   156,
    769      128,   155,    -1,   156,    90,   155,    -1,   156,    91,   155,
    770       -1,   156,    -1,   157,    92,   156,    -1,   157,    93,   156,
    771       -1,   157,    -1,   158,   120,   157,    -1,   158,    -1,   159,
    772      129,   158,    -1,   159,    -1,   160,   130,   159,    -1,   160,
    773       -1,   161,    94,   160,    -1,   161,    -1,   162,    95,   161,
    774       -1,   162,    -1,   162,   131,   170,   118,   163,    -1,   162,
    775      131,   118,   163,    -1,   162,   131,   170,   118,   167,    -1,
    776      163,    -1,   163,    -1,   149,   132,   165,    -1,   149,   108,
    777      165,    -1,   149,   169,   165,    -1,   167,   374,    -1,    -1,
    778      165,    -1,   112,   113,    -1,   112,   135,   165,   136,   113,
    779       -1,   112,   135,   117,   168,   136,   113,    -1,   112,   135,
    780      165,   117,   168,   136,   113,    -1,   166,    -1,   168,   117,
    781      166,    -1,    97,    -1,    98,    -1,    99,    -1,   100,    -1,
    782      101,    -1,   102,    -1,   103,    -1,   104,    -1,   105,    -1,
    783      106,    -1,   165,    -1,   170,   117,   165,    -1,    -1,   170,
    784       -1,   173,    -1,   174,    -1,   178,    -1,   179,    -1,   191,
    785       -1,   193,    -1,   194,    -1,   199,    -1,   129,   144,   115,
    786      145,   116,   133,    -1,   140,   118,   313,   172,    -1,   115,
    787      116,    -1,   115,   135,   135,   210,   175,   136,   116,    -1,
    788      176,    -1,   175,   135,   176,    -1,   213,    -1,    40,   213,
    789       -1,   309,    -1,   172,   136,    -1,   172,    -1,   177,   172,
    790       -1,   171,   133,    -1,    41,   110,   170,   111,   172,    -1,
    791       41,   110,   170,   111,   172,    42,   172,    -1,    43,   110,
    792      170,   111,   184,    -1,    43,   110,   170,   111,   115,   135,
    793      206,   185,   116,    -1,    53,   110,   170,   111,   184,    -1,
    794       53,   110,   170,   111,   115,   135,   206,   187,   116,    -1,
    795      164,    -1,   164,    96,   164,    -1,   311,    -1,   180,    -1,
    796      181,   117,   180,    -1,    44,   181,   118,    -1,    45,   118,
    797       -1,   182,    -1,   183,   182,    -1,   183,   172,    -1,    -1,
    798      186,    -1,   183,   177,    -1,   186,   183,   177,    -1,    -1,
    799      188,    -1,   183,   190,    -1,   183,   177,   189,    -1,   188,
    800      183,   190,    -1,   188,   183,   177,   189,    -1,    -1,   190,
    801       -1,    56,    -1,    56,   133,    -1,    47,   110,   170,   111,
    802      172,    -1,    46,   172,    47,   110,   170,   111,   133,    -1,
    803       48,   110,   135,   192,   111,   172,    -1,   171,   136,   133,
    804      171,   133,   171,    -1,   213,   171,   133,   171,    -1,    51,
    805      140,   133,    -1,    51,   119,   170,   133,    -1,    50,   133,
    806       -1,    50,   140,   133,    -1,    49,   133,    -1,    49,   140,
    807      133,    -1,    52,   171,   133,    -1,    61,   166,   133,    -1,
    808       62,   166,   133,    -1,    62,   166,    63,   165,   133,    -1,
    809       57,   174,   195,    -1,    57,   174,   197,    -1,    57,   174,
    810      195,   197,    -1,   196,    -1,    58,   110,    96,   111,   174,
    811       -1,   196,    58,   110,    96,   111,   174,    -1,    59,   110,
    812       96,   111,   174,    -1,   196,    59,   110,    96,   111,   174,
    813       -1,    58,   110,   135,   135,   198,   136,   111,   174,   136,
    814       -1,   196,    58,   110,   135,   135,   198,   136,   111,   174,
    815      136,    -1,    59,   110,   135,   135,   198,   136,   111,   174,
    816      136,    -1,   196,    59,   110,   135,   135,   198,   136,   111,
    817      174,   136,    -1,    60,   174,    -1,   226,    -1,   226,   310,
    818       -1,   226,   358,    -1,   367,   140,    -1,   367,    -1,    64,
    819      200,   110,   142,   111,   133,    -1,    64,   200,   110,   142,
    820      118,   201,   111,   133,    -1,    64,   200,   110,   142,   118,
    821      201,   118,   201,   111,   133,    -1,    64,   200,   110,   142,
    822      118,   201,   118,   201,   118,   204,   111,   133,    -1,    64,
    823      200,    51,   110,   142,   118,   118,   201,   118,   204,   118,
    824      205,   111,   133,    -1,    -1,    11,    -1,    -1,   202,    -1,
    825      203,    -1,   202,   117,   203,    -1,   142,   110,   164,   111,
    826       -1,   112,   164,   113,   142,   110,   164,   111,    -1,    -1,
    827      142,    -1,   204,   117,   142,    -1,   140,    -1,   205,   117,
    828      140,    -1,   136,    -1,   207,    -1,   213,    -1,   207,   135,
    829      213,    -1,   136,    -1,   209,    -1,   223,    -1,   209,   135,
    830      223,    -1,    -1,   211,    -1,    29,   212,   133,    -1,   211,
    831       29,   212,   133,    -1,   275,    -1,   212,   117,   275,    -1,
    832      214,    -1,   223,    -1,   215,   136,   133,    -1,   220,   136,
    833      133,    -1,   217,   136,   133,    -1,   294,   136,   133,    -1,
    834      297,   136,   133,    -1,   216,   278,    -1,   232,   216,   278,
    835       -1,   215,   136,   117,   135,   273,   278,    -1,   368,   273,
    836      312,    -1,   371,   273,   312,    -1,   228,   371,   273,   312,
    837       -1,   218,    -1,   228,   218,    -1,   232,   218,    -1,   232,
    838      228,   218,    -1,   217,   136,   117,   135,   273,    -1,   112,
    839      113,   273,   110,   135,   261,   136,   111,    -1,   371,   273,
    840      110,   135,   261,   136,   111,    -1,   219,   273,   110,   135,
    841      261,   136,   111,    -1,   112,   135,   263,   136,   113,    -1,
    842      112,   135,   263,   136,   117,   135,   264,   136,   113,    -1,
    843        3,   216,    -1,     3,   218,    -1,   220,   136,   117,   135,
    844      140,    -1,     3,   226,   310,    -1,   221,   136,   117,   135,
    845      310,    -1,   228,     3,   226,   310,    -1,   226,     3,   310,
    846       -1,   226,     3,   228,   310,    -1,     3,   140,   132,   165,
    847       -1,   222,   136,   117,   135,   140,   132,   165,    -1,   224,
    848      136,   133,    -1,   221,   136,   133,    -1,   222,   136,   133,
    849       -1,   241,   136,   133,    -1,   225,   310,   312,   278,    -1,
    850      224,   117,   313,   310,   312,   278,    -1,   237,    -1,   241,
    851       -1,   243,    -1,   284,    -1,   238,    -1,   242,    -1,   244,
    852       -1,   285,    -1,    -1,   228,    -1,   229,    -1,   228,   229,
    853       -1,   230,    -1,   315,    -1,    10,    -1,    12,    -1,    11,
    854       -1,    14,    -1,    67,    -1,    -1,    13,   110,   231,   287,
    855      111,    -1,   233,    -1,   228,   233,    -1,   232,   228,   233,
    856       -1,   234,    -1,   233,   234,    -1,   235,    -1,     5,    -1,
    857        7,    -1,     4,    -1,     6,    -1,     8,    -1,     9,    -1,
    858       69,    -1,    71,    -1,    16,    -1,    21,    -1,    20,    -1,
    859       18,    -1,    19,    -1,    17,    -1,    22,    -1,    23,    -1,
    860       15,    -1,    25,    -1,    26,    -1,    27,    -1,    24,    -1,
    861      238,    -1,   232,   238,    -1,   237,   234,    -1,   237,   234,
    862      228,    -1,   237,   234,   238,    -1,   239,    -1,   227,   240,
    863      227,    -1,   236,    -1,   228,   236,    -1,   239,   229,    -1,
    864      239,   236,    -1,    28,   110,   277,   111,    -1,    28,   110,
    865      170,   111,    -1,    78,   110,   277,   111,    -1,    78,   110,
    866      170,   111,    -1,   242,    -1,   232,   242,    -1,   241,   234,
    867       -1,   241,   234,   228,    -1,   245,    -1,   228,   245,    -1,
    868      242,   229,    -1,   244,    -1,   232,   244,    -1,   243,   234,
    869       -1,   243,   234,   228,    -1,    74,    -1,   228,    74,    -1,
    870      244,   229,    -1,   246,    -1,   257,    -1,   248,   115,   249,
    871      116,    -1,   248,   275,    -1,    -1,   248,   275,   247,   115,
    872      249,   116,    -1,   248,   110,   293,   111,   115,   249,   116,
    873       -1,   248,   286,    -1,    31,   313,    -1,    32,   313,    -1,
    874      250,    -1,   249,   250,    -1,   251,   133,    -1,    40,   251,
    875      133,    -1,   252,   133,    -1,    40,   252,   133,    -1,   367,
    876       -1,   367,   275,    -1,   251,   117,   275,    -1,   251,   117,
    877       -1,   226,   253,    -1,   252,   117,   313,   253,    -1,    -1,
    878      255,    -1,   319,   254,    -1,   332,   254,    -1,   358,    -1,
    879       -1,   255,    -1,   118,   164,    -1,    30,   313,    -1,   256,
    880      115,   259,   373,   116,    -1,   256,   275,    -1,    -1,   256,
    881      275,   258,   115,   259,   373,   116,    -1,   275,   260,    -1,
    882      259,   117,   275,   260,    -1,    -1,   132,   164,    -1,    -1,
    883      262,    -1,   264,    -1,   263,    -1,   263,   136,   117,   135,
    884      264,    -1,   264,   136,   117,   135,    96,    -1,   263,   136,
    885      117,   135,    96,    -1,   268,    -1,   264,   136,   117,   135,
    886      268,    -1,   263,   136,   117,   135,   268,    -1,   263,   136,
    887      117,   135,   264,   136,   117,   135,   268,    -1,   269,    -1,
    888      264,   136,   117,   135,   269,    -1,    -1,   266,    -1,   267,
    889       -1,   267,   136,   117,   135,    96,    -1,   271,    -1,   270,
    890       -1,   267,   136,   117,   135,   271,    -1,   267,   136,   117,
    891      135,   270,    -1,   270,    -1,   363,   273,   374,    -1,   371,
    892      273,   374,    -1,   228,   371,   273,   374,    -1,   218,    -1,
    893      271,    -1,   363,    -1,   371,    -1,   228,   371,    -1,   372,
    894       -1,   225,   337,   374,    -1,   225,   341,   374,    -1,   225,
    895       -1,   225,   352,    -1,   140,    -1,   272,   117,   140,    -1,
    896      138,    -1,    74,    -1,    75,    -1,   139,    -1,    74,    -1,
    897       75,    -1,   140,    -1,    74,    -1,    75,    -1,   367,    -1,
    898      226,    -1,   226,   358,    -1,   367,    -1,   372,    -1,   226,
    899       -1,   226,   346,    -1,    -1,   132,   279,    -1,   107,   279,
    900       -1,   165,    -1,   115,   280,   373,   116,    -1,    -1,   279,
    901       -1,   281,   279,    -1,   280,   117,   279,    -1,   280,   117,
    902      281,   279,    -1,   282,   118,    -1,   275,   118,    -1,   283,
    903       -1,   282,   283,    -1,    80,    -1,   114,   275,    -1,   112,
    904      135,   165,   136,   113,    -1,   112,   135,   311,   136,   113,
    905       -1,   112,   135,   164,    96,   164,   136,   113,    -1,   114,
    906      112,   135,   147,   136,   113,    -1,   285,    -1,   232,   285,
    907       -1,   284,   234,    -1,   284,   234,   228,    -1,   286,    -1,
    908      228,   286,    -1,   285,   229,    -1,    75,   110,   293,   111,
    909       -1,   288,   374,    -1,   287,   117,   288,   374,    -1,    -1,
    910      290,   275,   289,   291,    -1,   226,   337,    -1,    33,    -1,
    911       35,    -1,    34,    -1,    -1,   291,   292,    -1,   130,   275,
    912      110,   293,   111,    -1,   130,   115,   135,   299,   116,    -1,
    913      130,   110,   135,   287,   136,   111,   115,   135,   299,   116,</