Changes in / [d2ded3e7:698664b3]
- Files:
-
- 3 added
- 9 deleted
- 25 edited
-
.gitignore (modified) (1 diff)
-
doc/TeX/cfa.sty (added)
-
doc/man/README (added)
-
doc/man/cfa.1 (added)
-
doc/refrat/Makefile (deleted)
-
doc/refrat/indexstyle (deleted)
-
doc/refrat/predefined.sed (deleted)
-
doc/refrat/refrat.bib (deleted)
-
doc/refrat/refrat.tex (modified) (1 diff)
-
src/CodeGen/CodeGenerator.cc (modified) (3 diffs)
-
src/CodeGen/CodeGenerator.h (modified) (2 diffs)
-
src/GenPoly/PolyMutator.cc (modified) (3 diffs)
-
src/GenPoly/PolyMutator.h (modified) (2 diffs)
-
src/GenPoly/Specialize.cc (modified) (2 diffs)
-
src/Parser/ExpressionNode.cc (modified) (5 diffs)
-
src/Parser/InitializerNode.cc (modified) (2 diffs)
-
src/Parser/ParseNode.cc (modified) (2 diffs)
-
src/Parser/ParseNode.h (modified) (4 diffs)
-
src/Parser/lex.cc (modified) (23 diffs)
-
src/Parser/lex.ll (modified) (7 diffs)
-
src/Parser/parser.cc (modified) (183 diffs)
-
src/Parser/parser.h (modified) (4 diffs)
-
src/Parser/parser.yy (modified) (14 diffs)
-
src/SymTab/Indexer.h (modified) (2 diffs)
-
src/SymTab/Validate.cc (modified) (2 diffs)
-
src/SynTree/ArrayType.cc (modified) (2 diffs)
-
src/SynTree/BasicType.cc (modified) (2 diffs)
-
src/SynTree/Expression.cc (modified) (3 diffs)
-
src/SynTree/Initializer.cc (modified) (2 diffs)
-
src/driver/cfa.cc (modified) (2 diffs)
-
src/examples/alloc.c (deleted)
-
src/examples/asm.c (deleted)
-
src/examples/constructors.c (deleted)
-
src/examples/control_structures.c (modified) (2 diffs)
-
src/examples/nestedfunc.c (deleted)
-
src/examples/poly-bench.c (deleted)
-
src/examples/sum.c (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
.gitignore
rd2ded3e7 r698664b3 27 27 # generated by bison and lex from cfa.yy and lex.ll, respectively 28 28 src/Parser/parser.output 29 30 # generated by latex31 doc/refrat/refrat.aux32 doc/refrat/refrat.bbl33 doc/refrat/refrat.blg34 doc/refrat/refrat.brf35 doc/refrat/refrat.dvi36 doc/refrat/refrat.idx37 doc/refrat/refrat.ilg38 doc/refrat/refrat.ind39 doc/refrat/refrat.log40 doc/refrat/refrat.out41 doc/refrat/refrat.pdf42 doc/refrat/refrat.ps43 doc/refrat/refrat.toc -
doc/refrat/refrat.tex
rd2ded3e7 r698664b3 1 % requires tex packages: texlive-base texlive-latex-base tex-common texlive-humanities texlive-latex-extra texlive-fonts-recommended2 3 \documentclass[openright,twoside]{report}4 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5 6 % Latex packages used in the document.7 8 \usepackage{fullpage,times}9 \usepackage{xspace}10 \usepackage{varioref}11 \usepackage{listings}12 \usepackage{comment}13 \usepackage{latexsym} % \Box14 \usepackage{mathptmx} % better math font with "times"15 \usepackage[pagewise]{lineno}16 \renewcommand{\linenumberfont}{\scriptsize\sffamily}17 \usepackage[dvips,plainpages=false,pdfpagelabels,pdfpagemode=UseNone,colorlinks=true,pagebackref=true,linkcolor=blue,citecolor=blue,urlcolor=blue,pagebackref=true,breaklinks=true]{hyperref}18 \usepackage{breakurl}19 \urlstyle{sf}20 21 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%22 23 % Names used in the document.24 25 \newcommand{\CFA}{Cforall\xspace} % set language text name26 \newcommand{\CFAA}{C$\forall$\xspace} % set language symbolic name27 \newcommand{\CC}{C\kern-.1em\hbox{+\kern-.25em+}\xspace} % CC symbolic name28 \def\c11{ISO/IEC C} % C11 name (cannot have numbers in latex command name)29 30 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%31 32 % Bespoke macros used in the document.33 34 \makeatletter35 % index macros36 \newcommand{\italic}[1]{\emph{\hyperpage{#1}}}37 \newcommand{\definition}[1]{\textbf{\hyperpage{#1}}}38 \newcommand{\see}[1]{\emph{see} #1}39 40 % Define some commands that produce formatted index entries suitable for cross-references.41 % ``\spec'' produces entries for specifications of entities. ``\impl'' produces entries for their42 % implementations, and ``\use'' for their uses.43 44 % \newcommand{\bold}[1]{{\bf #1}}45 % \def\spec{\@bsphack\begingroup46 % \def\protect##1{\string##1\space}\@sanitize47 % \@wrxref{|bold}}48 \def\impl{\@bsphack\begingroup49 \def\protect##1{\string##1\space}\@sanitize50 \@wrxref{|definition}}51 \newcommand{\indexcode}[1]{{\lstinline$#1$}}52 \def\use{\@bsphack\begingroup53 \def\protect##1{\string##1\space}\@sanitize54 \@wrxref{|hyperpage}}55 \def\@wrxref#1#2{\let\thepage\relax56 \xdef\@gtempa{\write\@indexfile{\string57 \indexentry{#2@{\lstinline$#2$}#1}{\thepage}}}\endgroup\@gtempa58 \if@nobreak \ifvmode\nobreak\fi\fi\@esphack}59 %\newcommand{\use}[1]{\index{#1@{\lstinline$#1$}}}60 %\newcommand{\impl}[1]{\index{\protect#1@{\lstinline$\protect#1$}|definition}}61 62 % text inline and lowercase index: \Index{Inline and index text}63 % text inline and as-in index: \Index{Inline and Index text}64 % text inline but index with different as-is text: \Index[index text]{inline text}65 \newcommand{\Index}{\@ifstar\@sIndex\@Index}66 \newcommand{\@Index}[2][\@empty]{\lowercase{\def\temp{#2}}#2\ifx#1\@empty\index{\temp}\else\index{#1@{\protect#2}}\fi}67 \newcommand{\@sIndex}[2][\@empty]{#2\ifx#1\@empty\index{#2}\else\index{#1@{\protect#2}}\fi}68 \makeatother69 70 % blocks and titles71 \newcommand{\define}[1]{\emph{#1\/}\index{#1}}72 \newenvironment{rationale}{%73 \begin{quotation}\noindent$\Box$\enspace74 }{%75 \hfill\enspace$\Box$\end{quotation}76 }%77 \newcommand{\rewrite}{\(\Rightarrow\)}78 \newcommand{\rewriterules}{\paragraph{Rewrite Rules}~\par\noindent}79 \newcommand{\examples}{\paragraph{Examples}~\par\noindent}80 \newcommand{\semantics}{\paragraph{Semantics}~\par\noindent}81 \newcommand{\constraints}{\paragraph{Constraints}~\par\noindent}82 \newcommand{\predefined}{\paragraph{Predefined Identifiers}~\par\noindent}83 84 % BNF macros85 \def\syntax{\paragraph{Syntax}\trivlist\parindent=.5in\item[\hskip.5in]}86 \let\endsyntax=\endtrivlist87 \newcommand{\lhs}[1]{\par{\emph{#1:}}\index{#1@{\emph{#1}}|italic}}88 \newcommand{\rhs}{\hfil\break\hbox{\hskip1in}}89 \newcommand{\oldlhs}[1]{\emph{#1: \ldots}\index{#1@{\emph{#1}}|italic}}90 \newcommand{\nonterm}[1]{\emph{#1\/}\index{#1@{\emph{#1}}|italic}}91 \newcommand{\opt}{$_{opt}$\ }92 93 % adjust varioref package with default "section" and "page" titles, and optional title with faraway page numbers94 % \VRef{label} => Section 2.7, \VPageref{label} => page 1795 % \VRef[Figure]{label} => Figure 3.4, \VPageref{label} => page 1796 \renewcommand{\reftextfaceafter}{\unskip}97 \renewcommand{\reftextfacebefore}{\unskip}98 \renewcommand{\reftextafter}{\unskip}99 \renewcommand{\reftextbefore}{\unskip}100 \renewcommand{\reftextfaraway}[1]{\unskip, p.~\pageref{#1}}101 \renewcommand{\reftextpagerange}[2]{\unskip, pp.~\pageref{#1}--\pageref{#2}}102 \newcommand{\VRef}[2][Section]{\ifx#1\@empty\else{#1}\nobreakspace\fi\vref{#2}}103 \newcommand{\VPageref}[2][page]{\ifx#1\@empty\else{#1}\nobreakspace\fi\pageref{#2}}104 105 % adjust listings macros106 \lstdefinelanguage{CFA}[ANSI]{C}%107 {morekeywords={asm,_Alignas,_Alignof,_At,_Atomic,_Bool,catch,catchResume,choose,_Complex,context,disable,dtype,enable,108 fallthru,finally,forall,ftype,_Generic,_Imaginary,inline,lvalue,_Noreturn,restrict,_Static_assert,109 _Thread_local,throw,throwResume,try,type,},110 }%111 112 \lstset{113 language=CFA,114 columns=fullflexible,115 basicstyle=\sf\small,116 tabsize=4,117 xleftmargin=\parindent,118 escapechar=@,119 %fancyvrb=true,120 %showtabs=true,121 keepspaces=true,122 showtabs=true,123 tab=,124 }%125 126 \makeatletter127 % replace/adjust listings characters that look bad in sanserif128 \lst@CCPutMacro129 \lst@ProcessOther{"2D}{\lst@ttfamily{-{}}{{\ttfamily\upshape -}}} % replace minus130 \lst@ProcessOther{"3C}{\lst@ttfamily{<}{\texttt{<}}} % replace less than131 \lst@ProcessOther{"3E}{\lst@ttfamily{<}{\texttt{>}}} % replace greater than132 \lst@ProcessOther{"5E}{\raisebox{0.4ex}{$\scriptstyle\land\,$}} % replace circumflex133 \lst@ProcessLetter{"5F}{\lst@ttfamily{\char95}{{\makebox[1.2ex][c]{\rule{1ex}{0.1ex}}}}} % replace underscore134 \lst@ProcessOther{"7E}{\raisebox{0.3ex}{$\scriptstyle\sim\,$}} % replace tilde135 %\lst@ProcessOther{"7E}{\raisebox{-.4ex}[1ex][0pt]{\textasciitilde}} % lower tilde136 \@empty\z@\@empty137 \makeatother138 139 \setcounter{secnumdepth}{3} % number subsubsections140 \setcounter{tocdepth}{3} % subsubsections in table of contents141 \makeindex142 143 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%144 145 \begin{document}146 \pagestyle{headings}147 \linenumbers % comment out to turn off line numbering148 149 \title{\CFA (\CFAA) Reference Manual and Rationale}150 \author{Glen Ditchfield \and Peter A. Buhr}151 \date{DRAFT\\\today}152 153 \pagenumbering{roman}154 \pagestyle{plain}155 156 \maketitle157 158 \vspace*{\fill}159 \thispagestyle{empty}160 \noindent161 \copyright\,2015 Glen Ditchfield \\ \\162 \noindent163 This work is licensed under the Creative Commons Attribution 4.0 International License. To view a164 copy of this license, visit {\small\url{http://creativecommons.org/licenses/by/4.0}}.165 \vspace*{1in}166 167 \clearpage168 \pdfbookmark[1]{Contents}{section}169 \tableofcontents170 171 \clearpage172 \pagenumbering{arabic}173 174 175 \chapter*{Introduction}\addcontentsline{toc}{chapter}{Introduction}176 177 This document is a reference manual and rationale for \CFA, a polymorphic extension of the C178 programming language. It makes frequent reference to the {\c11} standard \cite{ANS:C11}, and179 occasionally compares \CFA to {\CC} \cite{c++}.180 181 The manual deliberately imitates the ordering of the {\c11} standard (although the section numbering182 differs). Unfortunately, this means the manual contains more ``forward references'' than usual,183 making it harder to follow if the reader does not have a copy of the {\c11} standard. For a simple184 introduction to \CFA, see the companion document ``An Overview of \CFA''185 \cite{Ditchfield96:Overview}.186 187 \begin{rationale}188 Commentary (like this) is quoted with quads. Commentary usually deals with subtle points, the189 rationale behind a rule, and design decisions.190 \end{rationale}191 192 % No ``Scope'' or ``Normative references'' chapters yet.193 194 195 \setcounter{chapter}{2}196 \chapter{Terms, definitions, and symbols}197 198 Terms from the {\c11} standard used in this document have the same meaning as in the {\c11}199 standard.200 201 % No ``Conformance'' or ``Environment'' chapters yet.202 203 204 \setcounter{chapter}{5}205 \chapter{Language}206 207 208 \section{Notation}209 The syntax notation used in this document is the same as in the {\c11} standard, with one exception:210 ellipsis in the definition of a nonterminal, as in ``\emph{declaration:} \ldots'', indicates that211 these rules extend a previous definition, which occurs in this document or in the {\c11} standard.212 213 214 \section{Concepts}215 216 217 \subsection{Scopes of identifiers}\index{scopes}218 219 \CFA's scope rules differ from C's in one major respect: a declaration of an identifier may220 overload\index{overloading} outer declarations of lexically identical identifiers in the same221 \Index{name space}, instead of hiding them. The outer declaration is hidden if the two declarations222 have \Index{compatible type}, or if one declares an array type and the other declares a pointer type223 and the element type and pointed-at type are compatible, or if one has function type and the other224 is a pointer to a compatible function type, or if one declaration is a \lstinline$type$\use{type} or225 \lstinline$typedef$\use{typedef} declaration and the other is not. The outer declaration becomes226 \Index{visible} when the scope of the inner declaration terminates.227 \begin{rationale}228 Hence, a \CFA program can declare an \lstinline$int v$ and a \lstinline$float v$ in the same229 scope; a {\CC} program can not.230 \end{rationale}231 232 233 \subsection{Linkage of identifiers}234 \index{linkage}235 236 \CFA's linkage rules differ from C's in only one respect: instances of a particular identifier with237 external or internal linkage do not necessarily denote the same object or function. Instead, in the238 set of translation units and libraries that constitutes an entire program, any two instances of a239 particular identifier with \Index{external linkage} denote the same object or function if they have240 \Index{compatible type}s, or if one declares an array type and the other declares a pointer type and241 the element type and pointed-at type are compatible, or if one has function type and the other is a242 pointer to a compatible function type. Within one translation unit, each instance of an identifier243 with \Index{internal linkage} denotes the same object or function in the same circumstances.244 Identifiers with \Index{no linkage} always denote unique entities.245 \begin{rationale}246 A \CFA program can declare an \lstinline$extern int v$ and an \lstinline$extern float v$; a C247 program cannot.248 \end{rationale}249 250 251 \setcounter{subsection}{8}252 \subsection{Generic Types}253 254 255 \subsubsection{Semantics}256 257 \CFA provides a capability for generic types; using this capability a single "generic type258 generator" can be written that can represent multiple concrete type instantiations by substitution259 of the "type parameters" of the generic type for concrete types. Syntactically a generic type260 generator is represented by putting a forall specifier on a struct or union declaration, as defined261 in \VRef{forall}. An instantiation of the generic type is written by specifying the type parameters262 in parentheses after the name of the generic type generator:263 \begin{lstlisting}264 forall( type T | sumable( T ) ) struct pair {265 T x;266 T y;267 };268 pair( int ) p = { 3, 14 };269 \end{lstlisting}270 271 The type parameters in an instantiation of a generic type must satisfy any constraints in the forall272 specifier on the type generator declaration, e.g., \lstinline$sumable$. The instantiation then has273 the semantics that would result if the type parameters were substituted into the type generator274 declaration by macro substitution.275 276 Polymorphic functions may have generic types as parameters, and those generic types may use type277 parameters of the polymorphic function as type parameters of the generic type:278 \begin{lstlisting}279 forall( type T ) void swap( pair(T) *p ) {280 T z = p->x;281 p->x = p->y;282 p->y = z;283 }284 \end{lstlisting}285 286 287 \subsubsection{Constraints}288 289 To avoid unduly constraining implementors, the generic type generator definition must be visible at290 any point where it is instantiated. Forward declarations of generic type generators are not291 forbidden, but the definition must be visible to instantiate the generic type. Equivalently,292 instantiations of generic types are not allowed to be incomplete types.293 294 \examples295 \begin{lstlisting}296 forall( type T ) struct A;297 298 forall( type T ) struct B {299 A(T) *a; // legal, but cannot instantiate B(T)300 };301 302 B(T) x; // illegal, *x.a is of an incomplete generic type303 304 forall( type T ) struct A {305 B( T ) *b;306 };307 308 B( T ) y; // legal, *x.a is now of a complete generic type309 310 311 // box.h:312 forall( type T ) struct box;313 forall( type T ) box( T ) *make_box( T );314 forall( type T ) void use_box( box( T ) *b );315 316 // main.c:317 box( int ) *b = make_box( 42 ); // illegal, def'n of box not visible318 use_box( b ); // illegal319 \end{lstlisting}320 321 322 \section{Conversions}323 \CFA defines situations where values of one type are automatically converted to another type.324 These conversions are called \define{implicit conversion}s. The programmer can request325 \define{explicit conversion}s using cast expressions.326 327 328 \subsection{Arithmetic operands}329 330 331 \setcounter{subsubsection}{8}332 \subsubsection{Safe arithmetic conversions}333 334 In C, a pattern of conversions known as the \define{usual arithmetic conversion}s is used with most335 binary arithmetic operators to convert the operands to a common type and determine the type of the336 operator's result. In \CFA, these conversions play a role in overload resolution, and337 collectively are called the \define{safe arithmetic conversion}s.338 339 Let \(int_r\) and \(unsigned_r\) be the signed and unsigned integer types with integer conversion340 rank\index{integer conversion rank}\index{rank|see{integer conversion rank}} $r$. Let341 \(unsigned_{mr}\) be the unsigned integer type with maximal rank.342 343 The following conversions are \emph{direct} safe arithmetic conversions.344 \begin{itemize}345 \item346 The \Index{integer promotion}s.347 348 \item349 For every rank $r$ greater than or equal to the rank of \lstinline$int$, conversion from \(int_r\)350 to \(unsigned_r\).351 352 \item353 For every rank $r$ greater than or equal to the rank of \lstinline$int$, where \(int_{r+1}\) exists354 and can represent all values of \(unsigned_r\), conversion from \(unsigned_r\) to \(int_{r+1}\).355 356 \item357 Conversion from \(unsigned_{mr}\) to \lstinline$float$.358 359 \item360 Conversion from an enumerated type to its compatible integer type.361 362 \item363 Conversion from \lstinline$float$ to \lstinline$double$, and from \lstinline$double$ to364 \lstinline$long double$.365 366 \item367 Conversion from \lstinline$float _Complex$ to \lstinline$double _Complex$,368 and from \lstinline$double _Complex$ to \lstinline$long double _Complex$.369 370 \begin{sloppypar}371 \item372 Conversion from \lstinline$float _Imaginary$ to \lstinline$double _Imaginary$, and from373 \lstinline$double _Imaginary$ to \lstinline$long double$ \lstinline$_Imaginary$, if the374 implementation supports imaginary types.375 \end{sloppypar}376 \end{itemize}377 378 If type \lstinline$T$ can be converted to type \lstinline$U$ by a safe direct arithmetic conversion379 and type \lstinline$U$ can be converted to type \lstinline$V$ by a safe arithmetic conversion, then380 the conversion from \lstinline$T$ to type \lstinline$V$ is an \emph{indirect} safe arithmetic381 conversion.382 383 \begin{rationale}384 Note that {\c11} does not include conversion from \Index{real type}s to \Index{complex type}s in the385 usual arithmetic conversions, and \CFA does not include them as safe conversions.386 \end{rationale}387 388 389 \subsection{Other operands}390 391 392 \setcounter{subsubsection}{3}393 \subsubsection{Anonymous structures and unions}394 \label{anon-conv}395 396 If an expression's type is a pointer to a structure or union type that has a member that is an397 \Index{anonymous structure} or an \Index{anonymous union}, it can be implicitly398 converted\index{implicit conversion} to a pointer to the anonymous structure's or anonymous union's399 type. The result of the conversion is a pointer to the member.400 401 \examples402 \begin{lstlisting}403 struct point {404 int x, y;405 };406 void move_by(struct point * p1, struct point * p2) {@\impl{move_by}@407 p1->x += p2.x;408 p1->y += p2.y;409 }410 411 struct color_point {412 enum { RED, BLUE, GREEN } color;413 struct point;414 } cp1, cp2;415 move_to(&cp1, &cp2);416 \end{lstlisting}417 Thanks to implicit conversion, the two arguments that \lstinline$move_by()$ receives are pointers to418 \lstinline$cp1$'s second member and \lstinline$cp2$'s second member.419 420 421 \subsubsection{Specialization}422 A function or value whose type is polymorphic may be implicitly converted to one whose type is423 \Index{less polymorphic} by binding values to one or more of its \Index{inferred parameter}. Any424 value that is legal for the inferred parameter may be used, including other inferred parameters.425 426 If, after the inferred parameter binding, an \Index{assertion parameter} has no inferred parameters427 in its type, then an object or function must be visible at the point of the specialization that has428 the same identifier as the assertion parameter and has a type that is compatible\index{compatible429 type} with or can be specialized to the type of the assertion parameter. The assertion parameter430 is bound to that object or function.431 432 The type of the specialization is the type of the original with the bound inferred parameters and433 the bound assertion parameters replaced by their bound values.434 435 \examples436 The type437 \begin{lstlisting}438 forall( type T, type U ) void (*)( T, U );439 \end{lstlisting}440 can be specialized to (among other things)441 \begin{lstlisting}442 forall( type T ) void (*)( T, T ); // U bound to T443 forall( type T ) void (*)( T, real ); // U bound to real444 forall( type U ) void (*)( real, U ); // T bound to real445 void f( real, real ); // both bound to real446 \end{lstlisting}447 448 The type449 \begin{lstlisting}450 forall( type T | T ?+?( T, T )) T (*)( T );451 \end{lstlisting}452 can be specialized to (among other things)453 \begin{lstlisting}454 int (*)( int ); // T bound to int, and T ?+?(T, T ) bound to int ?+?( int, int )455 \end{lstlisting}456 457 458 \subsubsection{Safe conversions}459 460 A \define{direct safe conversion} is one of the following conversions:461 \begin{itemize}462 \item463 a direct safe arithmetic conversion;464 \item465 from any object type or incomplete type to \lstinline$void$;466 \item467 from a pointer to any non-\lstinline$void$ type to a pointer to \lstinline$void$;468 \item469 from a pointer to any type to a pointer to a more qualified version of the type\index{qualified470 type};471 \item472 from a pointer to a structure or union type to a pointer to the type of a member of the structure or473 union that is an \Index{anonymous structure} or an \Index{anonymous union};474 \item475 within the scope of an initialized \Index{type declaration}, conversions between a type and its476 implementation or between a pointer to a type and a pointer to its implementation.477 \end{itemize}478 479 Conversions that are not safe conversions are \define{unsafe conversion}s.480 \begin{rationale}481 As in C, there is an implicit conversion from \lstinline$void *$ to any pointer type. This is482 clearly dangerous, and {\CC} does not have this implicit conversion.483 \CFA\index{deficiencies!void * conversion} keeps it, in the interest of remaining as pure a484 superset of C as possible, but discourages it by making it unsafe.485 \end{rationale}486 487 488 \subsection{Conversion cost}489 490 The \define{conversion cost} of a safe\index{safe conversion}491 conversion\footnote{Unsafe\index{unsafe conversion} conversions do not have defined conversion492 costs.} is a measure of how desirable or undesirable it is. It is defined as follows.493 \begin{itemize}494 \item495 The cost of a conversion from any type to itself is 0.496 497 \item498 The cost of a direct safe conversion is 1.499 500 \item501 The cost of an indirect safe arithmetic conversion is the smallest number of direct conversions502 needed to make up the conversion.503 \end{itemize}504 505 \examples506 In the following, assume an implementation that does not provide any extended integer types.507 508 \begin{itemize}509 \item510 The cost of an implicit conversion from \lstinline$int$ to \lstinline$long$ is 1. The cost of an511 implicit conversion from \lstinline$long$ to \lstinline$double$ is 3, because it is defined in terms512 of conversions from \lstinline$long$ to \lstinline$unsigned long$, then to \lstinline$float$, and513 then to \lstinline$double$.514 515 \item516 If \lstinline$int$ can represent all the values of \lstinline$unsigned short$, then the cost of an517 implicit conversion from \lstinline$unsigned short$ to \lstinline$unsigned$ is 2:518 \lstinline$unsigned short$ to \lstinline$int$ to \lstinline$unsigned$. Otherwise,519 \lstinline$unsigned short$ is converted directly to \lstinline$unsigned$, and the cost is 1.520 521 \item522 If \lstinline$long$ can represent all the values of \lstinline$unsigned$, then the conversion cost523 of \lstinline$unsigned$ to \lstinline$long$ is 1. Otherwise, the conversion is an unsafe524 conversion, and its conversion cost is undefined.525 \end{itemize}526 527 \section{Lexical elements}528 \subsection{Keywords}529 \begin{syntax}530 \oldlhs{keyword}531 \rhs \lstinline$forall$532 \rhs \lstinline$lvalue$533 \rhs \lstinline$context$534 \rhs \lstinline$dtype$535 \rhs \lstinline$ftype$536 \rhs \lstinline$type$537 \end{syntax}538 539 540 \subsection{Identifiers}541 542 \CFA allows operator \Index{overloading} by associating operators with special function543 identifiers. Furthermore, the constants ``\lstinline$0$'' and ``\lstinline$1$'' have special status544 for many of C's data types (and for many programmer-defined data types as well), so \CFA treats them545 as overloadable identifiers. Programmers can use these identifiers to declare functions and objects546 that implement operators and constants for their own types.547 548 549 \setcounter{subsubsection}{2}550 \subsubsection{Constant identifiers}551 552 \begin{syntax}553 \oldlhs{identifier}554 \rhs \lstinline$0$555 \rhs \lstinline$1$556 \end{syntax}557 558 \index{constant identifiers}\index{identifiers!for constants} The tokens ``\lstinline$0$''\impl{0}559 and ``\lstinline$1$''\impl{1} are identifiers. No other tokens defined by the rules for integer560 constants are considered to be identifiers.561 \begin{rationale}562 Why ``\lstinline$0$'' and ``\lstinline$1$''? Those integers have special status in C. All scalar563 types can be incremented and decremented, which is defined in terms of adding or subtracting 1. The564 operations ``\lstinline$&&$'', ``\lstinline$||$'', and ``\lstinline$!$'' can be applied to any565 scalar arguments, and are defined in terms of comparison against 0. A \nonterm{constant-expression}566 that evaluates to 0 is effectively compatible with every pointer type.567 568 In C, the integer constants 0 and 1 suffice because the integer promotion rules can convert them to569 any arithmetic type, and the rules for pointer expressions treat constant expressions evaluating to570 0 as a special case. However, user-defined arithmetic types often need the equivalent of a 1 or 0571 for their functions or operators, polymorphic functions often need 0 and 1 constants of a type572 matching their polymorphic parameters, and user-defined pointer-like types may need a null value.573 Defining special constants for a user-defined type is more efficient than defining a conversion to574 the type from \lstinline$_Bool$.575 576 Why \emph{just} ``\lstinline$0$'' and ``\lstinline$1$''? Why not other integers? No other integers577 have special status in C. A facility that let programmers declare specific578 constants---``\lstinline$const Rational 12$'', for instance---would not be much of an improvement.579 Some facility for defining the creation of values of programmer-defined types from arbitrary integer580 tokens would be needed. The complexity of such a feature doesn't seem worth the gain.581 \end{rationale}582 583 584 \subsubsection{Operator identifiers}585 586 \index{operator identifiers}\index{identifiers!for operators} Table \ref{opids} lists the587 programmer-definable operator identifiers and the operations they are associated with. Functions588 that are declared with (or pointed at by function pointers that are declared with) these identifiers589 can be called by expressions that use the operator tokens and syntax, or the operator identifiers590 and ``function call'' syntax. The relationships between operators and function calls are discussed591 in descriptions of the operators.592 593 \begin{table}[hbt]594 \hfil595 \begin{tabular}[t]{ll}596 %identifier & operation \\ \hline597 \lstinline$?[?]$ & subscripting \impl{?[?]}\\598 \lstinline$?()$ & function call \impl{?()}\\599 \lstinline$?++$ & postfix increment \impl{?++}\\600 \lstinline$?--$ & postfix decrement \impl{?--}\\601 \lstinline$++?$ & prefix increment \impl{++?}\\602 \lstinline$--?$ & prefix decrement \impl{--?}\\603 \lstinline$*?$ & dereference \impl{*?}\\604 \lstinline$+?$ & unary plus \impl{+?}\\605 \lstinline$-?$ & arithmetic negation \impl{-?}\\606 \lstinline$~?$ & bitwise negation \impl{~?}\\607 \lstinline$!?$ & logical complement \impl{"!?}\\608 \lstinline$?*?$ & multiplication \impl{?*?}\\609 \lstinline$?/?$ & division \impl{?/?}\\610 \end{tabular}\hfil611 \begin{tabular}[t]{ll}612 %identifier & operation \\ \hline613 \lstinline$?%?$ & remainder \impl{?%?}\\614 \lstinline$?+?$ & addition \impl{?+?}\\615 \lstinline$?-?$ & subtraction \impl{?-?}\\616 \lstinline$?<<?$ & left shift \impl{?<<?}\\617 \lstinline$?>>?$ & right shift \impl{?>>?}\\618 \lstinline$?<?$ & less than \impl{?<?}\\619 \lstinline$?<=?$ & less than or equal \impl{?<=?}\\620 \lstinline$?>=?$ & greater than or equal \impl{?>=?}\\621 \lstinline$?>?$ & greater than \impl{?>?}\\622 \lstinline$?==?$ & equality \impl{?==?}\\623 \lstinline$?!=?$ & inequality \impl{?"!=?}\\624 \lstinline$?&?$ & bitwise AND \impl{?&?}\\625 \end{tabular}\hfil626 \begin{tabular}[t]{ll}627 %identifier & operation \\ \hline628 \lstinline$?^?$ & exclusive OR \impl{?^?}\\629 \lstinline$?|?$ & inclusive OR \impl{?"|?}\\630 \lstinline$?=?$ & simple assignment \impl{?=?}\\631 \lstinline$?*=?$ & multiplication assignment \impl{?*=?}\\632 \lstinline$?/=?$ & division assignment \impl{?/=?}\\633 \lstinline$?%=?$ & remainder assignment \impl{?%=?}\\634 \lstinline$?+=?$ & addition assignment \impl{?+=?}\\635 \lstinline$?-=?$ & subtraction assignment \impl{?-=?}\\636 \lstinline$?<<=?$ & left-shift assignment \impl{?<<=?}\\637 \lstinline$?>>=?$ & right-shift assignment \impl{?>>=?}\\638 \lstinline$?&=?$ & bitwise AND assignment \impl{?&=?}\\639 \lstinline$?^=?$ & exclusive OR assignment \impl{?^=?}\\640 \lstinline$?|=?$ & inclusive OR assignment \impl{?"|=?}\\641 \end{tabular}642 \hfil643 \caption{Operator Identifiers}644 \label{opids}645 \end{table}646 647 \begin{rationale}648 Operator identifiers are made up of the characters of the operator token, with question marks added649 to mark the positions of the arguments of operators. The question marks serve as mnemonic devices;650 programmers can not create new operators by arbitrarily mixing question marks and other651 non-alphabetic characters. Note that prefix and postfix versions of the increment and decrement652 operators are distinguished by the position of the question mark.653 \end{rationale}654 655 \begin{rationale}656 The use of ``\lstinline$?$'' in identifiers means that some C programs are not \CFA programs. For657 instance, the sequence of characters ``\lstinline$(i < 0)?--i:i$'' is legal in a C program, but a658 \CFA compiler detects a syntax error because it treats ``\lstinline$?--$'' as an identifier, not659 as the two tokens ``\lstinline$?$'' and ``\lstinline$--$''.660 \end{rationale}661 662 \begin{rationale}663 Certain operators \emph{cannot} be defined by the programmer:664 \begin{itemize}665 \item666 The logical operators ``\lstinline$&&$'' and ``\lstinline$||$'', and the conditional operator667 ``\lstinline$?:$''. These operators do not always evaluate their operands, and hence can not be668 properly defined by functions unless some mechanism like call-by-name is added to the language.669 Note that the definitions of ``\lstinline$&&$'' and ``\lstinline$||$'' say that they work by670 checking that their arguments are unequal to 0, so defining ``\lstinline$!=$'' and ``\lstinline$0$''671 for user-defined types is enough to allow them to be used in logical expressions.672 673 \item674 The comma operator\index{comma expression}. It is a control-flow operator like those above.675 Changing its meaning seems pointless and confusing.676 677 \item678 The ``address of'' operator. It would seem useful to define a unary ``\lstinline$&$'' operator that679 returns values of some programmer-defined pointer-like type. The problem lies with the type of the680 operator. Consider the expression ``\lstinline$p = &x$'', where \lstinline$x$ is of type681 \lstinline$T$ and \lstinline$p$ has the programmer-defined type \lstinline$T_ptr$. The expression682 might be treated as a call to the unary function ``\lstinline$&?$''. Now what is the type of the683 function's parameter? It can not be \lstinline$T$, because then \lstinline$x$ would be passed by684 value, and there is no way to create a useful pointer-like result from a value. Hence the parameter685 must have type \lstinline$T *$. But then the expression must be rewritten as ``\lstinline$p = &?( &x )$''686 ---which doesn't seem like progress!687 688 The rule for address-of expressions would have to be something like ``keep applying address-of689 functions until you get one that takes a pointer argument, then use the built-in operator and690 stop''. It seems simpler to define a conversion function from \lstinline$T *$ to \lstinline$T_ptr$.691 692 \item693 The \lstinline$sizeof$ operator. It is already defined for every object type, and intimately tied694 into the language's storage allocation model. Redefining it seems pointless.695 696 \item697 The ``member of'' operators ``\lstinline$.$'' and ``\lstinline$->$''. These are not really infix698 operators, since their right ``operand'' is not a value or object.699 700 \item701 Cast operators\index{cast expression}. Anything that can be done with an explicit cast can be done702 with a function call. The difference in syntax is small.703 \end{itemize}704 \end{rationale}705 706 707 \section{Expressions}708 709 \CFA allows operators and identifiers to be overloaded. Hence, each expression can have a number710 of \define{interpretation}s, each of which has a different type. The interpretations that are711 potentially executable are called \define{valid interpretation}s. The set of interpretations712 depends on the kind of expression and on the interpretations of the subexpressions that it contains.713 The rules for determining the valid interpretations of an expression are discussed below for each714 kind of expression. Eventually the context of the outermost expression chooses one interpretation715 of that expression.716 717 An \define{ambiguous interpretation} is an interpretation which does not specify the exact object or718 function denoted by every identifier in the expression. An expression can have some interpretations719 that are ambiguous and others that are unambiguous. An expression that is chosen to be executed720 shall not be ambiguous.721 722 The \define{best valid interpretations} are the valid interpretations that use the fewest723 unsafe\index{unsafe conversion} conversions. Of these, the best are those where the functions and724 objects involved are the least polymorphic\index{less polymorphic}. Of these, the best have the725 lowest total \Index{conversion cost}, including all implicit conversions in the argument726 expressions. Of these, the best have the highest total conversion cost for the implicit conversions727 (if any) applied to the argument expressions. If there is no single best valid interpretation, or if728 the best valid interpretation is ambiguous, then the resulting interpretation is729 ambiguous\index{ambiguous interpretation}.730 731 \begin{rationale}732 \CFA's rules for selecting the best interpretation are designed to allow overload resolution to733 mimic C's operator semantics. In C, the ``usual arithmetic conversions'' are applied to the734 operands of binary operators if necessary to convert the operands to types with a common real type.735 In \CFA, those conversions are ``safe''. The ``fewest unsafe conversions'' rule ensures that the736 usual conversions are done, if possible. The ``lowest total expression cost'' rule chooses the737 proper common type. The odd-looking ``highest argument conversion cost'' rule ensures that, when738 unary expressions must be converted, conversions of function results are preferred to conversion of739 function arguments: \lstinline$(double)-i$ will be preferred to \lstinline$-(double)i$.740 741 The ``least polymorphic'' rule reduces the number of polymorphic function calls, since such742 functions are presumably more expensive than monomorphic functions and since the more specific743 function is presumably more appropriate. It also gives preference to monomorphic values (such as the744 \lstinline$int$ \lstinline$0$) over polymorphic values (such as the \Index{null pointer}745 \lstinline$0$\use{0}). However, interpretations that call polymorphic functions are preferred to746 interpretations that perform unsafe conversions, because those conversions potentially lose accuracy747 or violate strong typing.748 749 There are two notable differences between \CFA's overload resolution rules and the rules for750 {\CC} defined in \cite{c++}. First, the result type of a function plays a role. In {\CC}, a751 function call must be completely resolved based on the arguments to the call in most circumstances.752 In \CFA, a function call may have several interpretations, each with a different result type, and753 the interpretations of the containing context choose among them. Second, safe conversions are used754 to choose among interpretations of all sorts of functions; in {\CC}, the ``usual arithmetic755 conversions'' are a separate set of rules that apply only to the built-in operators.756 \end{rationale}757 758 Expressions involving certain operators\index{operator identifiers} are considered to be equivalent759 to function calls. A transformation from ``operator'' syntax to ``function call'' syntax is defined760 by \define{rewrite rules}. Each operator has a set of predefined functions that overload its761 identifier. Overload resolution determines which member of the set is executed in a given762 expression. The functions have \Index{internal linkage} and are implicitly declared with \Index{file763 scope}. The predefined functions and rewrite rules are discussed below for each of these764 operators.765 \begin{rationale}766 Predefined functions and constants have internal linkage because that simplifies optimization in767 traditional compile-and-link environments. For instance, ``\lstinline$an_int + an_int$'' is768 equivalent to ``\lstinline$?+?(an_int, an_int)$''. If integer addition has not been redefined in769 the current scope, a compiler can generate code to perform the addition directly. If predefined770 functions had external linkage, this optimization would be difficult.771 \end{rationale}772 773 \begin{rationale}774 Since each subsection describes the interpretations of an expression in terms of the interpretations775 of its subexpressions, this chapter can be taken as describing an overload resolution algorithm that776 uses one bottom-up pass over an expression tree. Such an algorithm was first described (for Ada) by777 Baker~\cite{Bak:overload}. It is extended here to handle polymorphic functions and arithmetic778 conversions. The overload resolution rules and the predefined functions have been chosen so that, in779 programs that do not introduce overloaded declarations, expressions will have the same meaning in C780 and in \CFA.781 \end{rationale}782 783 \begin{rationale}784 Expression syntax is quoted from the {\c11} standard. The syntax itself defines the precedence and785 associativity of operators. The sections are arranged in decreasing order of precedence, with all786 operators in a section having the same precedence.787 \end{rationale}788 789 790 \subsection{Primary expressions}791 792 \begin{syntax}793 \lhs{primary-expression}794 \rhs \nonterm{identifier}795 \rhs \nonterm{constant}796 \rhs \nonterm{string-literal}797 \rhs \lstinline$($ \nonterm{expression} \lstinline$)$798 \rhs \nonterm{generic-selection}799 \end{syntax}800 801 \predefined802 \begin{lstlisting}803 const int 1;@\use{1}@804 const int 0;@\use{0}@805 forall( dtype DT ) DT *const 0;806 forall( ftype FT ) FT *const 0;807 \end{lstlisting}808 809 \semantics810 The \Index{valid interpretation} of an \nonterm{identifier} are given by the visible\index{visible}811 declarations of the identifier.812 813 A \nonterm{constant} or \nonterm{string-literal} has one valid interpretation, which has the type814 and value defined by {\c11}. The predefined integer identifiers ``\lstinline$1$'' and815 ``\lstinline$0$'' have the integer values 1 and 0, respectively. The other two predefined816 ``\lstinline$0$'' identifiers are bound to polymorphic pointer values that, when817 specialized\index{specialization} with a data type or function type respectively, produce a null818 pointer of that type.819 820 A parenthesised expression has the same interpretations as the contained \nonterm{expression}.821 822 \examples823 The expression \lstinline$(void *)0$\use{0} specializes the (polymorphic) null pointer to a null824 pointer to \lstinline$void$. \lstinline$(const void *)0$ does the same, and also uses a safe825 conversion from \lstinline$void *$ to \lstinline$const void *$. In each case, the null pointer826 conversion is better\index{best valid interpretations} than the unsafe conversion of the integer827 \lstinline$0$ to a pointer.828 829 \begin{rationale}830 Note that the predefined identifiers have addresses.831 832 \CFA does not have C's concept of ``null pointer constants'', which are not typed values but833 special strings of tokens. The C token ``\lstinline$0$'' is an expression of type \lstinline$int$834 with the value ``zero'', and it \emph{also} is a null pointer constant. Similarly,835 ``\lstinline$(void *)0$ is an expression of type \lstinline$(void *)$ whose value is a null pointer,836 and it also is a null pointer constant. However, in C, ``\lstinline$(void *)(void *)0$'' is837 \emph{not} a null pointer constant, even though it is null-valued, a pointer, and constant! The838 semantics of C expressions contain many special cases to deal with subexpressions that are null839 pointer constants.840 841 \CFA handles these cases through overload resolution. The declaration842 \begin{lstlisting}843 forall( dtype DT ) DT *const 0;844 \end{lstlisting}845 means that \lstinline$0$ is a polymorphic object, and contains a value that can have \emph{any}846 pointer-to-object type or pointer-to-incomplete type. The only such value is the null pointer.847 Therefore the type \emph{alone} is enough to identify a null pointer. Where C defines an operator848 with a special case for the null pointer constant, \CFA defines predefined functions with a849 polymorphic object parameter.850 \end{rationale}851 852 853 \subsubsection{Generic selection}854 855 \constraints The best interpretation of the controlling expression shall be856 unambiguous\index{ambiguous interpretation}, and shall have type compatible with at most one of the857 types named in its generic association list. If a generic selection has no \lstinline$default$858 generic association, the best interpretation of its controlling expression shall have type859 compatible with exactly one of the types named in its generic association list.860 861 \semantics862 A generic selection has the same interpretations as its result expression.863 864 865 \subsection{Postfix operators}866 867 \begin{syntax}868 \lhs{postfix-expression}869 \rhs \nonterm{primary-expression}870 \rhs \nonterm{postfix-expression} \lstinline$[$ \nonterm{expression} \lstinline$]$871 \rhs \nonterm{postfix-expression} \lstinline$($872 \nonterm{argument-expression-list}\opt \lstinline$)$873 \rhs \nonterm{postfix-expression} \lstinline$.$ \nonterm{identifier}874 \rhs \nonterm{postfix-expression} \lstinline$->$ \nonterm{identifier}875 \rhs \nonterm{postfix-expression} \lstinline$++$876 \rhs \nonterm{postfix-expression} \lstinline$--$877 \rhs \lstinline$($ \nonterm{type-name} \lstinline$)$ \lstinline${$ \nonterm{initializer-list} \lstinline$}$878 \rhs \lstinline$($ \nonterm{type-name} \lstinline$)$ \lstinline${$ \nonterm{initializer-list} \lstinline$,$ \lstinline$}$879 \lhs{argument-expression-list}880 \rhs \nonterm{assignment-expression}881 \rhs \nonterm{argument-expression-list} \lstinline$,$882 \nonterm{assignment-expression}883 \end{syntax}884 885 \rewriterules886 \begin{lstlisting}887 a[b] @\rewrite@ ?[?]( b, a ) // if a has integer type */@\use{?[?]}@888 a[b] @\rewrite@ ?[?]( a, b ) // otherwise889 a( ${\em arguments }$ ) @\rewrite@ ?()( a, ${\em arguments} )$@\use{?()}@890 a++ @\rewrite@ ?++(&( a ))@\use{?++}@891 a-- @\rewrite@ ?--(&( a ))@\use{?--}@892 \end{lstlisting}893 894 895 \subsubsection{Array subscripting}896 897 \predefined898 \begin{lstlisting}899 forall( type T ) lvalue T ?[?]( T *, ptrdiff_t );@\use{ptrdiff_t}@900 forall( type T ) lvalue _Atomic T ?[?]( _Atomic T *, ptrdiff_t );901 forall( type T ) lvalue const T ?[?]( const T *, ptrdiff_t );902 forall( type T ) lvalue restrict T ?[?]( restrict T *, ptrdiff_t );903 forall( type T ) lvalue volatile T ?[?]( volatile T *, ptrdiff_t );904 forall( type T ) lvalue _Atomic const T ?[?]( _Atomic const T *, ptrdiff_t );905 forall( type T ) lvalue _Atomic restrict T ?[?]( _Atomic restrict T *, ptrdiff_t );906 forall( type T ) lvalue _Atomic volatile T ?[?]( _Atomic volatile T *, ptrdiff_t );907 forall( type T ) lvalue const restrict T ?[?]( const restrict T *, ptrdiff_t );908 forall( type T ) lvalue const volatile T ?[?]( const volatile T *, ptrdiff_t );909 forall( type T ) lvalue restrict volatile T ?[?]( restrict volatile T *, ptrdiff_t );910 forall( type T ) lvalue _Atomic const restrict T ?[?]( _Atomic const restrict T *, ptrdiff_t );911 forall( type T ) lvalue _Atomic const volatile T ?[?]( _Atomic const volatile T *, ptrdiff_t );912 forall( type T ) lvalue _Atomic restrict volatile T ?[?]( _Atomic restrict volatile T *, ptrdiff_t );913 forall( type T ) lvalue const restrict volatile T ?[?]( const restrict volatile T *, ptrdiff_t );914 forall( type T ) lvalue _Atomic const restrict volatile T ?[?]( _Atomic const restrict volatile T *, ptrdiff_t );915 \end{lstlisting}916 \semantics917 The interpretations of subscript expressions are the interpretations of the corresponding function918 call expressions.919 \begin{rationale}920 C defines subscripting as pointer arithmetic in a way that makes \lstinline$a[i]$ and921 \lstinline$i[a]$ equivalent. \CFA provides the equivalence through a rewrite rule to reduce the922 number of overloadings of \lstinline$?[?]$.923 924 Subscript expressions are rewritten as function calls that pass the first parameter by value. This925 is somewhat unfortunate, since array-like types tend to be large. The alternative is to use the926 rewrite rule ``\lstinline$a[b]$ \rewrite \lstinline$?[?](&(a), b)$''. However, C semantics forbid927 this approach: the \lstinline$a$ in ``\lstinline$a[b]$'' can be an arbitrary pointer value, which928 does not have an address.929 930 The repetitive form of the predefined identifiers shows up a deficiency\index{deficiencies!pointers931 to qualified types} of \CFA's type system. Type qualifiers are not included in type values, so932 polymorphic functions that take pointers to arbitrary types often come in one flavor for each933 possible qualification of the pointed-at type.934 \end{rationale}935 936 937 \subsubsection{Function calls}938 939 \semantics940 A \define{function designator} is an interpretation of an expression that has function type. The941 \nonterm{postfix-expression} in a function call may have some interpretations that are function942 designators and some that are not.943 944 For those interpretations of the \nonterm{postfix-expression} that are not function designators, the945 expression is rewritten and becomes a call of a function named ``\lstinline$?()$''. The valid946 interpretations of the rewritten expression are determined in the manner described below.947 948 Each combination of function designators and argument interpretations is considered. For those949 interpretations of the \nonterm{postfix-expression} that are \Index{monomorphic function}950 designators, the combination has a \Index{valid interpretation} if the function designator accepts951 the number of arguments given, and each argument interpretation matches the corresponding explicit952 parameter:953 \begin{itemize}954 \item955 if the argument corresponds to a parameter in the function designator's prototype, the argument956 interpretation must have the same type as the corresponding parameter, or be implicitly convertible957 to the parameter's type958 \item959 if the function designator's type does not include a prototype or if the argument corresponds to960 ``\lstinline$...$'' in a prototype, a \Index{default argument promotion} is applied to it.961 \end{itemize}962 The type of the valid interpretation is the return type of the function designator.963 964 For those combinations where the interpretation of the \nonterm{postfix-expression} is a965 \Index{polymorphic function} designator and the function designator accepts the number of arguments966 given, there shall be at least one set of \define{implicit argument}s for the implicit parameters967 such that968 \begin{itemize}969 \item970 If the declaration of the implicit parameter uses \Index{type-class} \lstinline$type$\use{type}, the971 implicit argument must be an object type; if it uses \lstinline$dtype$, the implicit argument must972 be an object type or an incomplete type; and if it uses \lstinline$ftype$, the implicit argument973 must be a function type.974 975 \item976 if an explicit parameter's type uses any implicit parameters, then the corresponding explicit977 argument must have a type that is (or can be safely converted\index{safe conversion} to) the type978 produced by substituting the implicit arguments for the implicit parameters in the explicit979 parameter type.980 981 \item982 the remaining explicit arguments must match the remaining explicit parameters, as described for983 monomorphic function designators.984 985 \item986 for each \Index{assertion parameter} in the function designator's type, there must be an object or987 function with the same identifier that is visible at the call site and whose type is compatible with988 or can be specialized to the type of the assertion declaration.989 \end{itemize}990 There is a valid interpretation for each such set of implicit parameters. The type of each valid991 interpretation is the return type of the function designator with implicit parameter values992 substituted for the implicit arguments.993 994 A valid interpretation is ambiguous\index{ambiguous interpretation} if the function designator or995 any of the argument interpretations is ambiguous.996 997 Every valid interpretation whose return type is not compatible with any other valid interpretation's998 return type is an interpretation of the function call expression.999 1000 Every set of valid interpretations that have mutually compatible\index{compatible type} result types1001 also produces an interpretation of the function call expression. The type of the interpretation is1002 the \Index{composite type} of the types of the valid interpretations, and the value of the1003 interpretation is that of the \Index{best valid interpretation}.1004 \begin{rationale}1005 One desirable property of a polymorphic programming language is \define{generalizability}: the1006 ability to replace an abstraction with a more general but equivalent abstraction without requiring1007 changes in any of the uses of the original\cite{Cormack90}. For instance, it should be possible to1008 replace a function ``\lstinline$int f( int );$'' with ``\lstinline$forall( type T ) T f( T );$''1009 without affecting any calls of \lstinline$f$.1010 1011 \CFA\index{deficiencies!generalizability} does not fully possess this property, because1012 \Index{unsafe conversion} are not done when arguments are passed to polymorphic parameters.1013 Consider1014 \begin{lstlisting}1015 float g( float, float );1016 int i;1017 float f;1018 double d;1019 f = g( f, f ); // (1)1020 f = g( i, f ); // (2) (safe conversion to float)1021 f = g( d, f ); // (3) (unsafe conversion to float)1022 \end{lstlisting}1023 If \lstinline$g$ was replaced by ``\lstinline$forall( type T ) T g( T, T );$'', the first and second1024 calls would be unaffected, but the third would change: \lstinline$f$ would be converted to1025 \lstinline$double$, and the result would be a \lstinline$double$.1026 1027 Another example is the function ``\lstinline$void h( int *);$''. This function can be passed a1028 \lstinline$void *$ argument, but the generalization ``\lstinline$forall( type T ) void h( T *);$''1029 can not. In this case, \lstinline$void$ is not a valid value for \lstinline$T$ because it is not an1030 object type. If unsafe conversions were allowed, \lstinline$T$ could be inferred to be \emph{any}1031 object type, which is undesirable.1032 \end{rationale}1033 1034 \examples1035 A function called ``\lstinline$?()$'' might be part of a numerical differentiation package.1036 \begin{lstlisting}1037 extern type Derivative;1038 extern double ?()( Derivative, double );1039 extern Derivative derivative_of( double (*f)( double ) );1040 extern double sin( double );1041 1042 Derivative sin_dx = derivative_of( sin );1043 double d;1044 d = sin_dx( 12.9 );1045 \end{lstlisting}1046 Here, the only interpretation of \lstinline$sin_dx$ is as an object of type \lstinline$Derivative$.1047 For that interpretation, the function call is treated as ``\lstinline$?()( sin_dx, 12.9 )$''.1048 \begin{lstlisting}1049 int f( long ); // (1)1050 int f( int, int ); // (2)1051 int f( int *); // (3)1052 1053 int i = f( 5 ); // calls (1)1054 \end{lstlisting}1055 Function (1) provides a valid interpretation of ``\lstinline$f( 5 )$'', using an implicit1056 \lstinline$int$ to \lstinline$long$ conversion. The other functions do not, since the second1057 requires two arguments, and since there is no implicit conversion from \lstinline$int$ to1058 \lstinline$int *$ that could be used with the third function.1059 1060 \begin{lstlisting}1061 forall( type T ) T h( T );1062 double d = h( 1.5 );1063 \end{lstlisting}1064 ``\lstinline$1.5$'' is a \lstinline$double$ constant, so \lstinline$T$ is inferred to be1065 \lstinline$double$, and the result of the function call is a \lstinline$double$.1066 1067 \begin{lstlisting}1068 forall( type T, type U ) void g( T, U ); // (4)1069 forall( type T ) void g( T, T ); // (5)1070 forall( type T ) void g( T, long ); // (6)1071 void g( long, long ); // (7)1072 double d;1073 int i;1074 int *p;1075 1076 g( d, d ); // calls (5)1077 g( d, i ); // calls (6)1078 g( i, i ); // calls (7)1079 g( i, p ); // calls (4)1080 \end{lstlisting}1081 The first call has valid interpretations for all four versions of \lstinline$g$. (6) and (7) are1082 discarded because they involve unsafe \lstinline$double$-to-\lstinline$long$ conversions. (5) is1083 chosen because it is less polymorphic than (4).1084 1085 For the second call, (7) is again discarded. Of the remaining interpretations for (4), (5), and (6)1086 (with \lstinline$i$ converted to \lstinline$long$), (6) is chosen because it is the least1087 polymorphic.1088 1089 The third call has valid interpretations for all of the functions; (7) is chosen since it is not1090 polymorphic at all.1091 1092 The fourth call has no interpretation for (5), because its arguments must have compatible type. (4)1093 is chosen because it does not involve unsafe conversions.1094 \begin{lstlisting}1095 forall( type T ) T min( T, T );1096 double max( double, double );1097 context min_max( T ) {@\impl{min_max}@1098 T min( T, T );1099 T max( T, T );1100 }1101 forall( type U | min_max( U ) ) void shuffle( U, U );1102 shuffle(9, 10);1103 \end{lstlisting}1104 The only possibility for \lstinline$U$ is \lstinline$double$, because that is the type used in the1105 only visible \lstinline$max$ function. 9 and 10 must be converted to \lstinline$double$, and1106 \lstinline$min$ must be specialized with \lstinline$T$ bound to \lstinline$double$.1107 \begin{lstlisting}1108 extern void q( int ); // (8)1109 extern void q( void * ); // (9)1110 extern void r();1111 q( 0 );1112 r( 0 );1113 \end{lstlisting}1114 The \lstinline$int 0$ could be passed to (8), or the \lstinline$(void *)$ \Index{specialization} of1115 the null pointer\index{null pointer} \lstinline$0$\use{0} could be passed to (9). The former is1116 chosen because the \lstinline$int$ \lstinline$0$ is \Index{less polymorphic}. For1117 the same reason, \lstinline$int$ \lstinline$0$ is passed to \lstinline$r()$, even though it has1118 \emph{no} declared parameter types.1119 1120 1121 \subsubsection{Structure and union members}1122 1123 \semantics In the member selection expression ``\lstinline$s$.\lstinline$m$'', there shall be at1124 least one interpretation of \lstinline$s$ whose type is a structure type or union type containing a1125 member named \lstinline$m$. If two or more interpretations of \lstinline$s$ have members named1126 \lstinline$m$ with mutually compatible types, then the expression has an \Index{ambiguous1127 interpretation} whose type is the composite type of the types of the members. If an interpretation1128 of \lstinline$s$ has a member \lstinline$m$ whose type is not compatible with any other1129 \lstinline$s$'s \lstinline$m$, then the expression has an interpretation with the member's type. The1130 expression has no other interpretations.1131 1132 The expression ``\lstinline$p->m$'' has the same interpretations as the expression1133 ``\lstinline$(*p).m$''.1134 1135 1136 \subsubsection{Postfix increment and decrement operators}1137 1138 \predefined1139 \begin{lstlisting}1140 _Bool ?++( volatile _Bool * ),1141 ?++( _Atomic volatile _Bool * );1142 char ?++( volatile char * ),1143 ?++( _Atomic volatile char * );1144 signed char ?++( volatile signed char * ),1145 ?++( _Atomic volatile signed char * );1146 unsigned char ?++( volatile signed char * ),1147 ?++( _Atomic volatile signed char * );1148 short int ?++( volatile short int * ),1149 ?++( _Atomic volatile short int * );1150 unsigned short int ?++( volatile unsigned short int * ),1151 ?++( _Atomic volatile unsigned short int * );1152 int ?++( volatile int * ),1153 ?++( _Atomic volatile int * );1154 unsigned int ?++( volatile unsigned int * ),1155 ?++( _Atomic volatile unsigned int * );1156 long int ?++( volatile long int * ),1157 ?++( _Atomic volatile long int * );1158 long unsigned int ?++( volatile long unsigned int * ),1159 ?++( _Atomic volatile long unsigned int * );1160 long long int ?++( volatile long long int * ),1161 ?++( _Atomic volatile long long int * );1162 long long unsigned ?++( volatile long long unsigned int * ),1163 ?++( _Atomic volatile long long unsigned int * );1164 float ?++( volatile float * ),1165 ?++( _Atomic volatile float * );1166 double ?++( volatile double * ),1167 ?++( _Atomic volatile double * );1168 long double ?++( volatile long double * ),1169 ?++( _Atomic volatile long double * );1170 1171 forall( type T ) T * ?++( T * restrict volatile * ),1172 * ?++( T * _Atomic restrict volatile * );1173 1174 forall( type T ) _Atomic T * ?++( _Atomic T * restrict volatile * ),1175 * ?++( _Atomic T * _Atomic restrict volatile * );1176 1177 forall( type T ) const T * ?++( const T * restrict volatile * ),1178 * ?++( const T * _Atomic restrict volatile * );1179 1180 forall( type T ) volatile T * ?++( volatile T * restrict volatile * ),1181 * ?++( volatile T * _Atomic restrict volatile * );1182 1183 forall( type T ) restrict T * ?++( restrict T * restrict volatile * ),1184 * ?++( restrict T * _Atomic restrict volatile * );1185 1186 forall( type T ) _Atomic const T * ?++( _Atomic const T * restrict volatile * ),1187 * ?++( _Atomic const T * _Atomic restrict volatile * );1188 1189 forall( type T ) _Atomic restrict T * ?++( _Atomic restrict T * restrict volatile * ),1190 * ?++( _Atomic restrict T * _Atomic restrict volatile * );1191 1192 forall( type T ) _Atomic volatile T * ?++( _Atomic volatile T * restrict volatile * ),1193 * ?++( _Atomic volatile T * _Atomic restrict volatile * );1194 1195 forall( type T ) const restrict T * ?++( const restrict T * restrict volatile * ),1196 * ?++( const restrict T * _Atomic restrict volatile * );1197 1198 forall( type T ) const volatile T * ?++( const volatile T * restrict volatile * ),1199 * ?++( const volatile T * _Atomic restrict volatile * );1200 1201 forall( type T ) restrict volatile T * ?++( restrict volatile T * restrict volatile * ),1202 * ?++( restrict volatile T * _Atomic restrict volatile * );1203 1204 forall( type T ) _Atomic const restrict T * ?++( _Atomic const restrict T * restrict volatile * ),1205 * ?++( _Atomic const restrict T * _Atomic restrict volatile * );1206 1207 forall( type T ) _Atomic const volatile T * ?++( _Atomic const volatile T * restrict volatile * ),1208 * ?++( _Atomic const volatile T * _Atomic restrict volatile * );1209 1210 forall( type T ) _Atomic restrict volatile T * ?++( _Atomic restrict volatile T * restrict volatile * ),1211 * ?++( _Atomic restrict volatile T * _Atomic restrict volatile * );1212 1213 forall( type T ) const restrict volatile T * ?++( const restrict volatile T * restrict volatile * ),1214 * ?++( const restrict volatile T * _Atomic restrict volatile * );1215 1216 forall( type T ) _Atomic const restrict volatile T * ?++( _Atomic const restrict volatile T * restrict volatile * ),1217 * ?++( _Atomic const restrict volatile T * _Atomic restrict volatile * );1218 1219 _Bool ?--( volatile _Bool * ),1220 ?--( _Atomic volatile _Bool * );1221 char ?--( volatile char * ),1222 ?--( _Atomic volatile char * );1223 signed char ?--( volatile signed char * ),1224 ?--( _Atomic volatile signed char * );1225 unsigned char ?--( volatile signed char * ),1226 ?--( _Atomic volatile signed char * );1227 short int ?--( volatile short int * ),1228 ?--( _Atomic volatile short int * );1229 unsigned short int ?--( volatile unsigned short int * ),1230 ?--( _Atomic volatile unsigned short int * );1231 int ?--( volatile int * ),1232 ?--( _Atomic volatile int * );1233 unsigned int ?--( volatile unsigned int * ),1234 ?--( _Atomic volatile unsigned int * );1235 long int ?--( volatile long int * ),1236 ?--( _Atomic volatile long int * );1237 long unsigned int ?--( volatile long unsigned int * ),1238 ?--( _Atomic volatile long unsigned int * );1239 long long int ?--( volatile long long int * ),1240 ?--( _Atomic volatile long long int * );1241 long long unsigned ?--( volatile long long unsigned int * ),1242 ?--( _Atomic volatile long long unsigned int * );1243 float ?--( volatile float * ),1244 ?--( _Atomic volatile float * );1245 double ?--( volatile double * ),1246 ?--( _Atomic volatile double * );1247 long double ?--( volatile long double * ),1248 ?--( _Atomic volatile long double * );1249 1250 forall( type T ) T * ?--( T * restrict volatile * ),1251 * ?--( T * _Atomic restrict volatile * );1252 1253 forall( type T ) _Atomic T * ?--( _Atomic T * restrict volatile * ),1254 * ?--( _Atomic T * _Atomic restrict volatile * );1255 1256 forall( type T ) const T * ?--( const T * restrict volatile * ),1257 * ?--( const T * _Atomic restrict volatile * );1258 1259 forall( type T ) volatile T * ?--( volatile T * restrict volatile * ),1260 * ?--( volatile T * _Atomic restrict volatile * );1261 1262 forall( type T ) restrict T * ?--( restrict T * restrict volatile * ),1263 * ?--( restrict T * _Atomic restrict volatile * );1264 1265 forall( type T ) _Atomic const T * ?--( _Atomic const T * restrict volatile * ),1266 * ?--( _Atomic const T * _Atomic restrict volatile * );1267 1268 forall( type T ) _Atomic restrict T * ?--( _Atomic restrict T * restrict volatile * ),1269 * ?--( _Atomic restrict T * _Atomic restrict volatile * );1270 1271 forall( type T ) _Atomic volatile T * ?--( _Atomic volatile T * restrict volatile * ),1272 * ?--( _Atomic volatile T * _Atomic restrict volatile * );1273 1274 forall( type T ) const restrict T * ?--( const restrict T * restrict volatile * ),1275 * ?--( const restrict T * _Atomic restrict volatile * );1276 1277 forall( type T ) const volatile T * ?--( const volatile T * restrict volatile * ),1278 * ?--( const volatile T * _Atomic restrict volatile * );1279 1280 forall( type T ) restrict volatile T * ?--( restrict volatile T * restrict volatile * ),1281 * ?--( restrict volatile T * _Atomic restrict volatile * );1282 1283 forall( type T ) _Atomic const restrict T * ?--( _Atomic const restrict T * restrict volatile * ),1284 * ?--( _Atomic const restrict T * _Atomic restrict volatile * );1285 1286 forall( type T ) _Atomic const volatile T * ?--( _Atomic const volatile T * restrict volatile * ),1287 * ?--( _Atomic const volatile T * _Atomic restrict volatile * );1288 1289 forall( type T ) _Atomic restrict volatile T * ?--( _Atomic restrict volatile T * restrict volatile * ),1290 * ?--( _Atomic restrict volatile T * _Atomic restrict volatile * );1291 1292 forall( type T ) const restrict volatile T * ?--( const restrict volatile T * restrict volatile * ),1293 * ?--( const restrict volatile T * _Atomic restrict volatile * );1294 1295 forall( type T ) _Atomic const restrict volatile T * ?--( _Atomic const restrict volatile T * restrict volatile * ),1296 * ?--( _Atomic const restrict volatile T * _Atomic restrict volatile * );1297 \end{lstlisting}1298 For every extended integer type \lstinline$X$ there exist1299 % Don't use predefined: keep this out of prelude.cf.1300 \begin{lstlisting}1301 X ?++( volatile X * ), ?++( _Atomic volatile X * ),1302 ?--( volatile X * ), ?--( _Atomic volatile X * );1303 \end{lstlisting}1304 For every complete enumerated type \lstinline$E$ there exist1305 % Don't use predefined: keep this out of prelude.cf.1306 \begin{lstlisting}1307 E ?++( volatile E * ), ?++( _Atomic volatile E * ),1308 ?--( volatile E * ), ?--( _Atomic volatile E * );1309 \end{lstlisting}1310 1311 \begin{rationale}1312 Note that ``\lstinline$++$'' and ``\lstinline$--$'' are rewritten as function calls that are given a1313 pointer to that operand. (This is true of all operators that modify an operand.) As Hamish Macdonald1314 has pointed out, this forces the modified operand of such expressions to be an lvalue. This1315 partially enforces the C semantic rule that such operands must be \emph{modifiable} lvalues.1316 \end{rationale}1317 1318 \begin{rationale}1319 In C, a semantic rule requires that pointer operands of increment and decrement be pointers to1320 object types. Hence, \lstinline$void *$ objects cannot be incremented. In \CFA, the restriction1321 follows from the use of a \lstinline$type$ parameter in the predefined function definitions, as1322 opposed to \lstinline$dtype$, since only object types can be inferred arguments corresponding to the1323 type parameter \lstinline$T$.1324 \end{rationale}1325 1326 \semantics1327 First, each interpretation of the operand of an increment or decrement expression is considered1328 separately. For each interpretation that is a bit-field or is declared with the1329 \lstinline$register$\index{register@{\lstinline$register$}} \index{Itorage-class specifier}, the1330 expression has one valid interpretation, with the type of the operand, and the expression is1331 ambiguous if the operand is.1332 1333 For the remaining interpretations, the expression is rewritten, and the interpretations of the1334 expression are the interpretations of the corresponding function call. Finally, all interpretations1335 of the expression produced for the different interpretations of the operand are combined to produce1336 the interpretations of the expression as a whole; where interpretations have compatible result1337 types, the best interpretations are selected in the manner described for function call expressions.1338 1339 \examples1340 \begin{lstlisting}1341 volatile short int vs; vs++; // rewritten as ?++( &(vs) )1342 short int s; s++;1343 const short int cs; cs++;1344 _Atomic short int as; as++;1345 \end{lstlisting}1346 \begin{sloppypar}1347 Since \lstinline$&(vs)$ has type \lstinline$volatile short int *$, the best valid interpretation of1348 \lstinline$vs++$ calls the \lstinline$?++$ function with the \lstinline$volatile short *$ parameter.1349 \lstinline$s++$ does the same, applying the safe conversion from \lstinline$short int *$ to1350 \lstinline$volatile short int *$. Note that there is no conversion that adds an \lstinline$_Atomic$1351 qualifier, so the \lstinline$_Atomic volatile short int$ overloading does not provide a valid1352 interpretation.1353 \end{sloppypar}1354 1355 There is no safe conversion from \lstinline$const short int *$ to \lstinline$volatile short int *$,1356 and no \lstinline$?++$ function that accepts a \lstinline$const *$ parameter, so \lstinline$cs++$1357 has no valid interpretations.1358 1359 The best valid interpretation of \lstinline$as++$ calls the \lstinline$short ?++$ function with the1360 \lstinline$_Atomic volatile short int *$ parameter, applying a safe conversion to add the1361 \lstinline$volatile$ qualifier.1362 1363 \begin{lstlisting}1364 char * const restrict volatile * restrict volatile pqpc; pqpc++1365 char * * restrict volatile ppc; ppc++;1366 \end{lstlisting}1367 Since \lstinline$&(pqpc)$ has type \lstinline$char * const restrict volatile * restrict volatile *$,1368 the best valid interpretation of \lstinline$pqpc++$ calls the polymorphic \lstinline$?++$ function1369 with the \lstinline$const restrict volatile T * restrict volatile *$ parameter, inferring1370 \lstinline$T$ to be \lstinline$char *$.1371 1372 \begin{sloppypar}1373 \lstinline$ppc++$ calls the same function, again inferring \lstinline$T$ to be \lstinline$char *$,1374 and using the safe conversions from \lstinline$T$ to \lstinline$T const restrict volatile$.1375 \end{sloppypar}1376 1377 \begin{rationale}1378 Increment and decrement expressions show up a deficiency of \CFA's type system. There is no such1379 thing as a pointer to a register object or bit-field\index{deficiencies!pointers to bit-fields}.1380 Therefore, there is no way to define a function that alters them, and hence no way to define1381 increment and decrement functions for them. As a result, the semantics of increment and decrement1382 expressions must treat them specially. This holds true for all of the operators that may modify1383 such objects.1384 \end{rationale}1385 1386 \begin{rationale}1387 The polymorphic overloadings for pointer increment and decrement can be understood by considering1388 increasingly complex types.1389 \begin{enumerate}1390 \item1391 ``\lstinline$char * p; p++;$''. The argument to \lstinline$?++$ has type \lstinline$char * *$, and1392 the result has type \lstinline$char *$. The expression would be valid if \lstinline$?++$ were1393 declared by1394 \begin{lstlisting}1395 forall( type T ) T * ?++( T * * );1396 \end{lstlisting}1397 with \lstinline$T$ inferred to be \lstinline$char$.1398 1399 \item1400 ``\lstinline$char *restrict volatile qp; qp++$''. The result again has type \lstinline$char *$, but1401 the argument now has type \lstinline$char *restrict volatile *$, so it cannot be passed to the1402 hypothetical function declared in point 1. Hence the actual predefined function is1403 \begin{lstlisting}1404 forall( type T ) T * ?++( T * restrict volatile * );1405 \end{lstlisting}1406 which also accepts a \lstinline$char * *$ argument, because of the safe conversions that add1407 \lstinline$volatile$ and \lstinline$restrict$ qualifiers. (The parameter is not const-qualified, so1408 constant pointers cannot be incremented.)1409 1410 \item1411 ``\lstinline$char *_Atomic ap; ap++$''. The result again has type \lstinline$char *$, but no safe1412 conversion adds an \lstinline$_Atomic$ qualifier, so the function in point 2 is not applicable. A1413 separate overloading of \lstinline$?++$ is required.1414 1415 \item1416 ``\lstinline$char const volatile * pq; pq++$''. Here the result has type1417 \lstinline$char const volatile *$, so a new overloading is needed:1418 \begin{lstlisting}1419 forall( type T ) T const volatile * ?++( T const volatile *restrict volatile * );1420 \end{lstlisting}1421 One overloading is needed for each combination of qualifiers in the pointed-at1422 type\index{deficiencies!pointers to qualified types}.1423 1424 \item1425 ``\lstinline$float *restrict * prp; prp++$''. The \lstinline$restrict$ qualifier is handled just1426 like \lstinline$const$ and \lstinline$volatile$ in the previous case:1427 \begin{lstlisting}1428 forall( type T ) T restrict * ?++( T restrict *restrict volatile * );1429 \end{lstlisting}1430 with \lstinline$T$ inferred to be \lstinline$float *$. This looks odd, because {\c11} contains a1431 constraint that requires restrict-qualified types to be pointer-to-object types, and \lstinline$T$1432 is not syntactically a pointer type. \CFA loosens the constraint.1433 \end{enumerate}1434 \end{rationale}1435 1436 1437 \subsubsection{Compound literals}1438 1439 \semantics1440 A compound literal has one interpretation, with the type given by the \nonterm{type-name} of the1441 compound literal.1442 1443 1444 \subsection{Unary operators}1445 1446 \begin{syntax}1447 \lhs{unary-expression}1448 \rhs \nonterm{postfix-expression}1449 \rhs \lstinline$++$ \nonterm{unary-expression}1450 \rhs \lstinline$--$ \nonterm{unary-expression}1451 \rhs \nonterm{unary-operator} \nonterm{cast-expression}1452 \rhs \lstinline$sizeof$ \nonterm{unary-expression}1453 \rhs \lstinline$sizeof$ \lstinline$($ \nonterm{type-name} \lstinline$)$1454 \lhs{unary-operator} one of \rhs \lstinline$&$ \lstinline$*$ \lstinline$+$ \lstinline$-$ \lstinline$~$ \lstinline$!$1455 \end{syntax}1456 1457 \rewriterules1458 \begin{lstlisting}1459 *a @\rewrite@ *?(a) @\use{*?}@1460 +a @\rewrite@ +?(a) @\use{+?}@1461 -a @\rewrite@ -?(a) @\use{-?}@1462 ~a @\rewrite@ ~?(a) @\use{~?}@1463 !a @\rewrite@ !?(a) @\use{"!?}@1464 ++a @\rewrite@ ++?(&(a)) @\use{++?}@1465 --a @\rewrite@ --?(&(a)) @\use{--?}@1466 \end{lstlisting}1467 1468 1469 \subsubsection{Prefix increment and decrement operators}1470 1471 \predefined1472 \begin{lstlisting}1473 _Bool ++?( volatile _Bool * ),1474 ++?( _Atomic volatile _Bool * );1475 char ++?( volatile char * ),1476 ++?( _Atomic volatile char * );1477 signed char ++?( volatile signed char * ),1478 ++?( _Atomic volatile signed char * );1479 unsigned char ++?( volatile signed char * ),1480 ++?( _Atomic volatile signed char * );1481 short int ++?( volatile short int * ),1482 ++?( _Atomic volatile short int * );1483 unsigned short int ++?( volatile unsigned short int * ),1484 ++?( _Atomic volatile unsigned short int * );1485 int ++?( volatile int * ),1486 ++?( _Atomic volatile int * );1487 unsigned int ++?( volatile unsigned int * ),1488 ++?( _Atomic volatile unsigned int * );1489 long int ++?( volatile long int * ),1490 ++?( _Atomic volatile long int * );1491 long unsigned int ++?( volatile long unsigned int * ),1492 ++?( _Atomic volatile long unsigned int * );1493 long long int ++?( volatile long long int * ),1494 ++?( _Atomic volatile long long int * );1495 long long unsigned ++?( volatile long long unsigned int * ),1496 ++?( _Atomic volatile long long unsigned int * );1497 float ++?( volatile float * ),1498 ++?( _Atomic volatile float * );1499 double ++?( volatile double * ),1500 ++?( _Atomic volatile double * );1501 long double ++?( volatile long double * ),1502 ++?( _Atomic volatile long double * );1503 1504 forall( type T ) T * ++?( T * restrict volatile * ),1505 * ++?( T * _Atomic restrict volatile * );1506 1507 forall( type T ) _Atomic T * ++?( _Atomic T * restrict volatile * ),1508 * ++?( _Atomic T * _Atomic restrict volatile * );1509 1510 forall( type T ) const T * ++?( const T * restrict volatile * ),1511 * ++?( const T * _Atomic restrict volatile * );1512 1513 forall( type T ) volatile T * ++?( volatile T * restrict volatile * ),1514 * ++?( volatile T * _Atomic restrict volatile * );1515 1516 forall( type T ) restrict T * ++?( restrict T * restrict volatile * ),1517 * ++?( restrict T * _Atomic restrict volatile * );1518 1519 forall( type T ) _Atomic const T * ++?( _Atomic const T * restrict volatile * ),1520 * ++?( _Atomic const T * _Atomic restrict volatile * );1521 1522 forall( type T ) _Atomic volatile T * ++?( _Atomic volatile T * restrict volatile * ),1523 * ++?( _Atomic volatile T * _Atomic restrict volatile * );1524 1525 forall( type T ) _Atomic restrict T * ++?( _Atomic restrict T * restrict volatile * ),1526 * ++?( _Atomic restrict T * _Atomic restrict volatile * );1527 1528 forall( type T ) const volatile T * ++?( const volatile T * restrict volatile * ),1529 * ++?( const volatile T * _Atomic restrict volatile * );1530 1531 forall( type T ) const restrict T * ++?( const restrict T * restrict volatile * ),1532 * ++?( const restrict T * _Atomic restrict volatile * );1533 1534 forall( type T ) restrict volatile T * ++?( restrict volatile T * restrict volatile * ),1535 * ++?( restrict volatile T * _Atomic restrict volatile * );1536 1537 forall( type T ) _Atomic const volatile T * ++?( _Atomic const volatile T * restrict volatile * ),1538 * ++?( _Atomic const volatile T * _Atomic restrict volatile * );1539 1540 forall( type T ) _Atomic const restrict T * ++?( _Atomic const restrict T * restrict volatile * ),1541 * ++?( _Atomic const restrict T * _Atomic restrict volatile * );1542 1543 forall( type T ) _Atomic restrict volatile T * ++?( _Atomic restrict volatile T * restrict volatile * ),1544 * ++?( _Atomic restrict volatile T * _Atomic restrict volatile * );1545 1546 forall( type T ) const restrict volatile T * ++?( const restrict volatile T * restrict volatile * ),1547 * ++?( const restrict volatile T * _Atomic restrict volatile * );1548 1549 forall( type T ) _Atomic const restrict volatile T * ++?( _Atomic const restrict volatile T * restrict volatile * ),1550 * ++?( _Atomic const restrict volatile T * _Atomic restrict volatile * );1551 1552 _Bool --?( volatile _Bool * ),1553 --?( _Atomic volatile _Bool * );1554 char --?( volatile char * ),1555 --?( _Atomic volatile char * );1556 signed char --?( volatile signed char * ),1557 --?( _Atomic volatile signed char * );1558 unsigned char --?( volatile signed char * ),1559 --?( _Atomic volatile signed char * );1560 short int --?( volatile short int * ),1561 --?( _Atomic volatile short int * );1562 unsigned short int --?( volatile unsigned short int * ),1563 --?( _Atomic volatile unsigned short int * );1564 int --?( volatile int * ),1565 --?( _Atomic volatile int * );1566 unsigned int --?( volatile unsigned int * ),1567 --?( _Atomic volatile unsigned int * );1568 long int --?( volatile long int * ),1569 --?( _Atomic volatile long int * );1570 long unsigned int --?( volatile long unsigned int * ),1571 --?( _Atomic volatile long unsigned int * );1572 long long int --?( volatile long long int * ),1573 --?( _Atomic volatile long long int * );1574 long long unsigned --?( volatile long long unsigned int * ),1575 --?( _Atomic volatile long long unsigned int * );1576 float --?( volatile float * ),1577 --?( _Atomic volatile float * );1578 double --?( volatile double * ),1579 --?( _Atomic volatile double * );1580 long double --?( volatile long double * ),1581 --?( _Atomic volatile long double * );1582 1583 forall( type T ) T * --?( T * restrict volatile * ),1584 * --?( T * _Atomic restrict volatile * );1585 1586 forall( type T ) _Atomic T * --?( _Atomic T * restrict volatile * ),1587 * --?( _Atomic T * _Atomic restrict volatile * );1588 1589 forall( type T ) const T * --?( const T * restrict volatile * ),1590 * --?( const T * _Atomic restrict volatile * );1591 1592 forall( type T ) volatile T * --?( volatile T * restrict volatile * ),1593 * --?( volatile T * _Atomic restrict volatile * );1594 1595 forall( type T ) restrict T * --?( restrict T * restrict volatile * ),1596 * --?( restrict T * _Atomic restrict volatile * );1597 1598 forall( type T ) _Atomic const T * --?( _Atomic const T * restrict volatile * ),1599 * --?( _Atomic const T * _Atomic restrict volatile * );1600 1601 forall( type T ) _Atomic volatile T * --?( _Atomic volatile T * restrict volatile * ),1602 * --?( _Atomic volatile T * _Atomic restrict volatile * );1603 1604 forall( type T ) _Atomic restrict T * --?( _Atomic restrict T * restrict volatile * ),1605 * --?( _Atomic restrict T * _Atomic restrict volatile * );1606 1607 forall( type T ) const volatile T * --?( const volatile T * restrict volatile * ),1608 * --?( const volatile T * _Atomic restrict volatile * );1609 1610 forall( type T ) const restrict T * --?( const restrict T * restrict volatile * ),1611 * --?( const restrict T * _Atomic restrict volatile * );1612 1613 forall( type T ) restrict volatile T * --?( restrict volatile T * restrict volatile * ),1614 * --?( restrict volatile T * _Atomic restrict volatile * );1615 1616 forall( type T ) _Atomic const volatile T * --?( _Atomic const volatile T * restrict volatile * ),1617 * --?( _Atomic const volatile T * _Atomic restrict volatile * );1618 1619 forall( type T ) _Atomic const restrict T * --?( _Atomic const restrict T * restrict volatile * ),1620 * --?( _Atomic const restrict T * _Atomic restrict volatile * );1621 1622 forall( type T ) _Atomic restrict volatile T * --?( _Atomic restrict volatile T * restrict volatile * ),1623 * --?( _Atomic restrict volatile T * _Atomic restrict volatile * );1624 1625 forall( type T ) const restrict volatile T * --?( const restrict volatile T * restrict volatile * ),1626 * --?( const restrict volatile T * _Atomic restrict volatile * );1627 1628 forall( type T ) _Atomic const restrict volatile T * --?( _Atomic const restrict volatile T * restrict volatile * ),1629 * --?( _Atomic const restrict volatile T * _Atomic restrict volatile * );1630 \end{lstlisting}1631 For every extended integer type \lstinline$X$ there exist1632 % Don't use predefined: keep this out of prelude.cf.1633 \begin{lstlisting}1634 X ++?( volatile X * ),1635 ++?( _Atomic volatile X * ),1636 --?( volatile X * ),1637 --?( _Atomic volatile X * );1638 \end{lstlisting}1639 For every complete enumerated type \lstinline$E$ there exist1640 % Don't use predefined: keep this out of prelude.cf.1641 \begin{lstlisting}1642 E ++?( volatile E * ),1643 ++?( _Atomic volatile E * ),1644 ?--( volatile E * ),1645 ?--( _Atomic volatile E * );1646 \end{lstlisting}1647 1648 \semantics1649 The interpretations of prefix increment and decrement expressions are1650 determined in the same way as the interpretations of postfix increment and1651 decrement expressions.1652 1653 1654 \subsubsection{Address and indirection operators}1655 1656 \predefined1657 \begin{lstlisting}1658 forall( type T ) lvalue T *?( T * );1659 forall( type T ) _Atomic lvalue T *?( _Atomic T * );1660 forall( type T ) const lvalue T *?( const T * );1661 forall( type T ) volatile lvalue T *?( volatile T * );1662 forall( type T ) restrict lvalue T *?( restrict T * );1663 forall( type T ) _Atomic const lvalue T *?( _Atomic const T * );1664 forall( type T ) _Atomic volatile lvalue T *?( _Atomic volatile T * );1665 forall( type T ) _Atomic restrict lvalue T *?( _Atomic restrict T * );1666 forall( type T ) const volatile lvalue T *?( const volatile T * );1667 forall( type T ) const restrict lvalue T *?( const restrict T * );1668 forall( type T ) restrict volatile lvalue T *?( restrict volatile T * );1669 forall( type T ) _Atomic const volatile lvalue T *?( _Atomic const volatile T * );1670 forall( type T ) _Atomic const restrict lvalue T *?( _Atomic const restrict T * );1671 forall( type T ) _Atomic restrict volatile lvalue T *?( _Atomic restrict volatile T * );1672 forall( type T ) const restrict volatile lvalue T *?( const restrict volatile T * );1673 forall( type T ) _Atomic const restrict volatile lvalue T *?( _Atomic const restrict volatile T * );1674 1675 forall( ftype FT ) FT *?( FT * );1676 \end{lstlisting}1677 1678 \constraints1679 The operand of the unary ``\lstinline$&$'' operator shall have exactly one1680 \Index{interpretation}\index{ambiguous interpretation}, which shall be unambiguous.1681 1682 \semantics1683 The ``\lstinline$&$'' expression has one interpretation which is of type \lstinline$T *$, where1684 \lstinline$T$ is the type of the operand.1685 1686 The interpretations of an indirection expression are the interpretations of the corresponding1687 function call.1688 1689 1690 \subsubsection{Unary arithmetic operators}1691 1692 \predefined1693 \begin{lstlisting}1694 int1695 +?( int ),1696 -?( int ),1697 ~?( int );1698 unsigned int1699 +?( unsigned int ),1700 -?( unsigned int ),1701 ~?( unsigned int );1702 long int1703 +?( long int ),1704 -?( long int ),1705 ~?( long int );1706 long unsigned int1707 +?( long unsigned int ),1708 -?( long unsigned int ),1709 ~?( long unsigned int );1710 long long int1711 +?( long long int ),1712 -?( long long int ),1713 ~?( long long int );1714 long long unsigned int1715 +?( long long unsigned int ),1716 -?( long long unsigned int ),1717 ~?( long long unsigned int );1718 float1719 +?( float ),1720 -?( float );1721 double1722 +?( double ),1723 -?( double );1724 long double1725 +?( long double ),1726 -?( long double );1727 _Complex float1728 +?( _Complex float ),1729 -?( _Complex float );1730 _Complex double1731 +?( _Complex double ),1732 -?( _Complex double );1733 _Complex long double1734 +?( _Complex long double ),1735 -?( _Complex long double );1736 1737 int !?( int ),1738 !?( unsigned int ),1739 !?( long ),1740 !?( long unsigned int ),1741 !?( long long int ),1742 !?( long long unsigned int ),1743 !?( float ),1744 !?( double ),1745 !?( long double ),1746 !?( _Complex float ),1747 !?( _Complex double ),1748 !?( _Complex long double );1749 1750 forall( dtype DT ) int !?( const restrict volatile DT * );1751 forall( dtype DT ) int !?( _Atomic const restrict volatile DT * );1752 forall( ftype FT ) int !?( FT * );1753 \end{lstlisting}1754 For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the1755 rank of \lstinline$int$ there exist1756 % Don't use predefined: keep this out of prelude.cf.1757 \begin{lstlisting}1758 X +?( X ), -?( X ), ~?( X );1759 int !?( X );1760 \end{lstlisting}1761 1762 \semantics1763 The interpretations of a unary arithmetic expression are the interpretations of the corresponding1764 function call.1765 1766 \examples1767 \begin{lstlisting}1768 long int li;1769 void eat_double( double );@\use{eat_double}@1770 1771 eat_double(-li ); // @\rewrite@ eat_double( -?( li ) );1772 \end{lstlisting}1773 The valid interpretations of ``\lstinline$-li$'' (assuming no extended integer types exist) are1774 \begin{center}1775 \begin{tabular}{llc}1776 interpretation & result type & expression conversion cost \\1777 \hline1778 \lstinline$-?( (int)li )$ & \lstinline$int$ & (unsafe) \\1779 \lstinline$-?( (unsigned)li)$ & \lstinline$unsigned int$ & (unsafe) \\1780 \lstinline$-?( (long)li)$ & \lstinline$long$ & 0 \\1781 \lstinline$-?( (long unsigned int)li)$ & \lstinline$long unsigned int$ & 1 \\1782 \lstinline$-?( (long long int)li)$ & \lstinline$long long int$ & 2 \\1783 \lstinline$-?( (long long unsigned int)li)$ & \lstinline$long long unsigned int$& 3 \\1784 \lstinline$-?( (float)li)$ & \lstinline$float$ & 4 \\1785 \lstinline$-?( (double)li)$ & \lstinline$double$ & 5 \\1786 \lstinline$-?( (long double)li)$ & \lstinline$long double$ & 6 \\1787 \lstinline$-?( (_Complex float)li)$ & \lstinline$float$ & (unsafe) \\1788 \lstinline$-?( (_Complex double)li)$ & \lstinline$double$ & (unsafe) \\1789 \lstinline$-?( (_Complex long double)li)$ & \lstinline$long double$ & (unsafe) \\1790 \end{tabular}1791 \end{center}1792 The valid interpretations of the \lstinline$eat_double$ call, with the cost of the argument1793 conversion and the cost of the entire expression, are1794 \begin{center}1795 \begin{tabular}{lcc}1796 interpretation & argument cost & expression cost \\1797 \hline1798 \lstinline$eat_double( (double)-?( (int)li) )$ & 7 & (unsafe) \\1799 \lstinline$eat_double( (double)-?( (unsigned)li) )$ & 6 & (unsafe) \\1800 \lstinline$eat_double( (double)-?(li) )$ & 5 & \(0+5=5\) \\1801 \lstinline$eat_double( (double)-?( (long unsigned int)li) )$ & 4 & \(1+4=5\) \\1802 \lstinline$eat_double( (double)-?( (long long int)li) )$ & 3 & \(2+3=5\) \\1803 \lstinline$eat_double( (double)-?( (long long unsigned int)li) )$& 2 & \(3+2=5\) \\1804 \lstinline$eat_double( (double)-?( (float)li) )$ & 1 & \(4+1=5\) \\1805 \lstinline$eat_double( (double)-?( (double)li) )$ & 0 & \(5+0=5\) \\1806 \lstinline$eat_double( (double)-?( (long double)li) )$ & (unsafe) & (unsafe) \\1807 \lstinline$eat_double( (double)-?( (_Complex float)li) )$ & (unsafe) & (unsafe) \\1808 \lstinline$eat_double( (double)-?( (_Complex double)li) )$ & (unsafe) & (unsafe) \\1809 \lstinline$eat_double( (double)-?( (_Complex long double)li) )$ & (unsafe) & (unsafe) \\1810 \end{tabular}1811 \end{center}1812 Each has result type \lstinline$void$, so the best must be selected. The interpretations involving1813 unsafe conversions are discarded. The remainder have equal expression conversion costs, so the1814 ``highest argument conversion cost'' rule is invoked, and the chosen interpretation is1815 \lstinline$eat_double( (double)-?(li) )$.1816 1817 1818 \subsubsection{The \lstinline$sizeof$ and \lstinline$_Alignof$ operators}1819 1820 \constraints1821 The operand of \lstinline$sizeof$ or \lstinline$_Alignof$ shall not be \lstinline$type$,1822 \lstinline$dtype$, or \lstinline$ftype$.1823 1824 When the \lstinline$sizeof$\use{sizeof} operator is applied to an expression, the expression shall1825 have exactly one \Index{interpretation}\index{ambiguous interpretation}, which shall1826 be unambiguous. \semantics A \lstinline$sizeof$ or \lstinline$_Alignof$ expression has one1827 interpretation, of type \lstinline$size_t$.1828 1829 When \lstinline$sizeof$ is applied to an identifier declared by a \nonterm{type-declaration} or a1830 \nonterm{type-parameter}, it yields the size in bytes of the type that implements the operand. When1831 the operand is an opaque type or an inferred type parameter\index{inferred parameter}, the1832 expression is not a constant expression.1833 1834 When \lstinline$_Alignof$ is applied to an identifier declared by a \nonterm{type-declaration} or a1835 \nonterm{type-parameter}, it yields the alignment requirement of the type that implements the1836 operand. When the operand is an opaque type or an inferred type parameter\index{inferred1837 parameter}, the expression is not a constant expression.1838 \begin{rationale}1839 \begin{lstlisting}1840 type Pair = struct { int first, second; };1841 size_t p_size = sizeof(Pair); // constant expression1842 1843 extern type Rational;@\use{Rational}@1844 size_t c_size = sizeof(Rational); // non-constant expression1845 1846 forall(type T) T f(T p1, T p2) {1847 size_t t_size = sizeof(T); // non-constant expression1848 ...1849 }1850 \end{lstlisting}1851 ``\lstinline$sizeof Rational$'', although not statically known, is fixed. Within \lstinline$f()$,1852 ``\lstinline$sizeof(T)$'' is fixed for each call of \lstinline$f()$, but may vary from call to call.1853 \end{rationale}1854 1855 1856 \subsection{Cast operators}1857 1858 \begin{syntax}1859 \lhs{cast-expression}1860 \rhs \nonterm{unary-expression}1861 \rhs \lstinline$($ \nonterm{type-name} \lstinline$)$ \nonterm{cast-expression}1862 \end{syntax}1863 1864 \constraints1865 The \nonterm{type-name} in a \nonterm{cast-expression} shall not be \lstinline$type$,1866 \lstinline$dtype$, or \lstinline$ftype$.1867 1868 \semantics1869 1870 In a \Index{cast expression} ``\lstinline$($\nonterm{type-name}\lstinline$)e$'', if1871 \nonterm{type-name} is the type of an interpretation of \lstinline$e$, then that interpretation is1872 the only interpretation of the cast expression; otherwise, \lstinline$e$ shall have some1873 interpretation that can be converted to \nonterm{type-name}, and the interpretation of the cast1874 expression is the cast of the interpretation that can be converted at the lowest cost. The cast1875 expression's interpretation is ambiguous\index{ambiguous interpretation} if more than one1876 interpretation can be converted at the lowest cost or if the selected interpretation is ambiguous.1877 1878 \begin{rationale}1879 Casts can be used to eliminate ambiguity in expressions by selecting interpretations of1880 subexpressions, and to specialize polymorphic functions and values.1881 \end{rationale}1882 1883 1884 \subsection{Multiplicative operators}1885 1886 \begin{syntax}1887 \lhs{multiplicative-expression}1888 \rhs \nonterm{cast-expression}1889 \rhs \nonterm{multiplicative-expression} \lstinline$*$ \nonterm{cast-expression}1890 \rhs \nonterm{multiplicative-expression} \lstinline$/$ \nonterm{cast-expression}1891 \rhs \nonterm{multiplicative-expression} \lstinline$%$ \nonterm{cast-expression}1892 \end{syntax}1893 1894 \rewriterules1895 \begin{lstlisting}1896 a * b @\rewrite@ ?*?( a, b )@\use{?*?}@1897 a / b @\rewrite@ ?/?( a, b )@\use{?/?}@1898 a % b @\rewrite@ ?%?( a, b )@\use{?%?}@1899 \end{lstlisting}1900 1901 \predefined1902 \begin{lstlisting}1903 int?*?( int, int ),1904 ?/?( int, int ),1905 ?%?( int, int );1906 unsigned int?*?( unsigned int, unsigned int ),1907 ?/?( unsigned int, unsigned int ),1908 ?%?( unsigned int, unsigned int );1909 long int?*?( long int, long int ),1910 ?/?( long, long ),1911 ?%?( long, long );1912 long unsigned int?*?( long unsigned int, long unsigned int ),1913 ?/?( long unsigned int, long unsigned int ),1914 ?%?( long unsigned int, long unsigned int );1915 long long int?*?( long long int, long long int ),1916 ?/?( long long int, long long int ),1917 ?%?( long long int, long long int );1918 long long unsigned int ?*?( long long unsigned int, long long unsigned int ),1919 ?/?( long long unsigned int, long long unsigned int ),1920 ?%?( long long unsigned int, long long unsigned int );1921 float?*?( float, float ),1922 ?/?( float, float );1923 double?*?( double, double ),1924 ?/?( double, double );1925 long double?*?( long double, long double ),1926 ?/?( long double, long double );1927 _Complex float?*?( float, _Complex float ),1928 ?/?( float, _Complex float ),1929 ?*?( _Complex float, float ),1930 ?/?( _Complex float, float ),1931 ?*?( _Complex float, _Complex float ),1932 ?/?( _Complex float, _Complex float );1933 _Complex double?*?( double, _Complex double ),1934 ?/?( double, _Complex double ),1935 ?*?( _Complex double, double ),1936 ?/?( _Complex double, double ),1937 ?*?( _Complex double, _Complex double ),1938 ?/?( _Complex double, _Complex double );1939 _Complex long double?*?( long double, _Complex long double ),1940 ?/?( long double, _Complex long double ),1941 ?*?( _Complex long double, long double ),1942 ?/?( _Complex long double, long double ),1943 ?*?( _Complex long double, _Complex long double ),1944 ?/?( _Complex long double, _Complex long double );1945 \end{lstlisting}1946 For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the1947 rank of \lstinline$int$ there exist1948 % Don't use predefined: keep this out of prelude.cf.1949 \begin{lstlisting}1950 X ?*?( X ), ?/?( X ), ?%?( X );1951 \end{lstlisting}1952 1953 \begin{rationale}1954 {\c11} does not include conversions from the \Index{real type}s to \Index{complex type}s in the1955 \Index{usual arithmetic conversion}s. Instead it specifies conversion of the result of binary1956 operations on arguments from mixed type domains. \CFA's predefined operators match that pattern.1957 \end{rationale}1958 1959 \semantics1960 The interpretations of multiplicative expressions are the interpretations of the corresponding1961 function call.1962 1963 \examples1964 \begin{lstlisting}1965 int i;1966 long li;1967 void eat_double( double );@\use{eat_double}@1968 eat_double( li % i );1969 \end{lstlisting}1970 ``\lstinline$li % i$'' is rewritten as ``\lstinline$?%?(li, i )$''. The valid interpretations1971 of \lstinline$?%?(li, i )$, the cost\index{conversion cost} of converting their arguments, and1972 the cost of converting the result to \lstinline$double$ (assuming no extended integer types are1973 present ) are1974 \begin{center}1975 \begin{tabular}{lcc}1976 interpretation & argument cost & result cost \\1977 \hline1978 \lstinline$ ?%?( (int)li, i )$ & (unsafe) & 6 \\1979 \lstinline$ ?%?( (unsigned)li,(unsigned)i )$ & (unsafe) & 5 \\1980 \lstinline$ ?%?(li,(long)i )$ & 1 & 4 \\1981 \lstinline$ ?%?( (long unsigned)li,(long unsigned)i )$ & 3 & 3 \\1982 \lstinline$ ?%?( (long long)li,(long long)i )$ & 5 & 2 \\1983 \lstinline$ ?%?( (long long unsigned)li, (long long unsigned)i )$ & 7 & 1 \\1984 \end{tabular}1985 \end{center}1986 The best interpretation of \lstinline$eat_double( li, i )$ is1987 \lstinline$eat_double( (double)?%?(li, (long)i ))$, which has no unsafe conversions and the1988 lowest total cost.1989 1990 \begin{rationale}1991 {\c11} defines most arithmetic operations to apply an \Index{integer promotion} to any argument that1992 belongs to a type that has an \Index{integer conversion rank} less than that of \lstinline$int$.If1993 \lstinline$s$ is a \lstinline$short int$, ``\lstinline$s *s$'' does not have type \lstinline$short int$;1994 it is treated as ``\lstinline$( (int)s ) * ( (int)s )$'', and has type \lstinline$int$. \CFA matches1995 that pattern; it does not predefine ``\lstinline$short ?*?( short, short )$''.1996 1997 These ``missing'' operators limit polymorphism. Consider1998 \begin{lstlisting}1999 forall( type T | T ?*?( T, T ) ) T square( T );2000 short s;2001 square( s );2002 \end{lstlisting}2003 Since \CFA does not define a multiplication operator for \lstinline$short int$,2004 \lstinline$square( s )$ is treated as \lstinline$square( (int)s )$, and the result has type2005 \lstinline$int$. This is mildly surprising, but it follows the {\c11} operator pattern.2006 2007 A more troubling example is2008 \begin{lstlisting}2009 forall( type T | ?*?( T, T ) ) T product( T[], int n );2010 short sa[5];2011 product( sa, 5);2012 \end{lstlisting}2013 This has no valid interpretations, because \CFA has no conversion from ``array of2014 \lstinline$short int$'' to ``array of \lstinline$int$''. The alternatives in such situations2015 include2016 \begin{itemize}2017 \item2018 Defining monomorphic overloadings of \lstinline$product$ for \lstinline$short$ and the other2019 ``small'' types.2020 \item2021 Defining ``\lstinline$short ?*?( short, short )$'' within the scope containing the call to2022 \lstinline$product$.2023 \item2024 Defining \lstinline$product$ to take as an argument a conversion function from the ``small'' type to2025 the operator's argument type.2026 \end{itemize}2027 \end{rationale}2028 2029 2030 \subsection{Additive operators}2031 2032 \begin{syntax}2033 \lhs{additive-expression}2034 \rhs \nonterm{multiplicative-expression}2035 \rhs \nonterm{additive-expression} \lstinline$+$ \nonterm{multiplicative-expression}2036 \rhs \nonterm{additive-expression} \lstinline$-$ \nonterm{multiplicative-expression}2037 \end{syntax}2038 2039 \rewriterules2040 \begin{lstlisting}2041 a + b @\rewrite@ ?+?( a, b )@\use{?+?}@2042 a - b @\rewrite@ ?-?( a, b )@\use{?-?}@2043 \end{lstlisting}2044 2045 \predefined2046 \begin{lstlisting}2047 int?+?( int, int ),2048 ?-?( int, int );2049 unsigned int?+?( unsigned int, unsigned int ),2050 ?-?( unsigned int, unsigned int );2051 long int?+?( long int, long int ),2052 ?-?( long int, long int );2053 long unsigned int?+?( long unsigned int, long unsigned int ),2054 ?-?( long unsigned int, long unsigned int );2055 long long int?+?( long long int, long long int ),2056 ?-?( long long int, long long int );2057 long long unsigned int ?+?( long long unsigned int, long long unsigned int ),2058 ?-?( long long unsigned int, long long unsigned int );2059 float?+?( float, float ),2060 ?-?( float, float );2061 double?+?( double, double ),2062 ?-?( double, double );2063 long double?+?( long double, long double ),2064 ?-?( long double, long double );2065 _Complex float?+?( _Complex float, float ),2066 ?-?( _Complex float, float ),2067 ?+?( float, _Complex float ),2068 ?-?( float, _Complex float ),2069 ?+?( _Complex float, _Complex float ),2070 ?-?( _Complex float, _Complex float );2071 _Complex double?+?( _Complex double, double ),2072 ?-?( _Complex double, double ),2073 ?+?( double, _Complex double ),2074 ?-?( double, _Complex double ),2075 ?+?( _Complex double, _Complex double ),2076 ?-?( _Complex double, _Complex double );2077 _Complex long double?+?( _Complex long double, long double ),2078 ?-?( _Complex long double, long double ),2079 ?+?( long double, _Complex long double ),2080 ?-?( long double, _Complex long double ),2081 ?+?( _Complex long double, _Complex long double ),2082 ?-?( _Complex long double, _Complex long double );2083 2084 forall( type T ) T2085 * ?+?( T *, ptrdiff_t ),2086 * ?+?( ptrdiff_t, T * ),2087 * ?-?( T *, ptrdiff_t );2088 2089 forall( type T ) _Atomic T2090 * ?+?( _Atomic T *, ptrdiff_t ),2091 * ?+?( ptrdiff_t, _Atomic T * ),2092 * ?-?( _Atomic T *, ptrdiff_t );2093 2094 forall( type T ) const T2095 * ?+?( const T *, ptrdiff_t ),2096 * ?+?( ptrdiff_t, const T * ),2097 * ?-?( const T *, ptrdiff_t );2098 2099 forall( type T ) restrict T2100 * ?+?( restrict T *, ptrdiff_t ),2101 * ?+?( ptrdiff_t, restrict T * ),2102 * ?-?( restrict T *, ptrdiff_t );2103 2104 forall( type T ) volatile T2105 * ?+?( volatile T *, ptrdiff_t ),2106 * ?+?( ptrdiff_t, volatile T * ),2107 * ?-?( volatile T *, ptrdiff_t );2108 2109 forall( type T ) _Atomic const T2110 * ?+?( _Atomic const T *, ptrdiff_t ),2111 * ?+?( ptrdiff_t, _Atomic const T * ),2112 * ?-?( _Atomic const T *, ptrdiff_t );2113 2114 forall( type T ) _Atomic restrict T2115 * ?+?( _Atomic restrict T *, ptrdiff_t ),2116 * ?+?( ptrdiff_t, _Atomic restrict T * ),2117 * ?-?( _Atomic restrict T *, ptrdiff_t );2118 2119 forall( type T ) _Atomic volatile T2120 * ?+?( _Atomic volatile T *, ptrdiff_t ),2121 * ?+?( ptrdiff_t, _Atomic volatile T * ),2122 * ?-?( _Atomic volatile T *, ptrdiff_t );2123 2124 forall( type T ) const restrict T2125 * ?+?( const restrict T *, ptrdiff_t ),2126 * ?+?( ptrdiff_t, const restrict T * ),2127 * ?-?( const restrict T *, ptrdiff_t );2128 2129 forall( type T ) const volatile T2130 * ?+?( const volatile T *, ptrdiff_t ),2131 * ?+?( ptrdiff_t, const volatile T * ),2132 * ?-?( const volatile T *, ptrdiff_t );2133 2134 forall( type T ) restrict volatile T2135 * ?+?( restrict volatile T *, ptrdiff_t ),2136 * ?+?( ptrdiff_t, restrict volatile T * ),2137 * ?-?( restrict volatile T *, ptrdiff_t );2138 2139 forall( type T ) _Atomic const restrict T2140 * ?+?( _Atomic const restrict T *, ptrdiff_t ),2141 * ?+?( ptrdiff_t, _Atomic const restrict T * ),2142 * ?-?( _Atomic const restrict T *, ptrdiff_t );2143 2144 forall( type T ) ptrdiff_t2145 * ?-?( const restrict volatile T *, const restrict volatile T * ),2146 * ?-?( _Atomic const restrict volatile T *, _Atomic const restrict volatile T * );2147 \end{lstlisting}2148 For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the2149 rank of \lstinline$int$ there exist2150 % Don't use predefined: keep this out of prelude.cf.2151 \begin{lstlisting}2152 X ?+?( X ), ?-?( X );2153 \end{lstlisting}2154 2155 \semantics2156 The interpretations of additive expressions are the interpretations of the corresponding function2157 calls.2158 2159 \begin{rationale}2160 \lstinline$ptrdiff_t$ is an implementation-defined identifier defined in \lstinline$<stddef.h>$ that2161 is synonymous with a signed integral type that is large enough to hold the difference between two2162 pointers. It seems reasonable to use it for pointer addition as well. (This is technically a2163 difference between \CFA and C, which only specifies that pointer addition uses an \emph{integral}2164 argument.) Hence it is also used for subscripting, which is defined in terms of pointer addition.2165 The {\c11} standard uses \lstinline$size_t$ in several cases where a library function takes an2166 argument that is used as a subscript, but \lstinline$size_t$ is unsuitable here because it is an2167 unsigned type.2168 \end{rationale}2169 2170 2171 \subsection{Bitwise shift operators}2172 2173 \begin{syntax}2174 \lhs{shift-expression}2175 \rhs \nonterm{additive-expression}2176 \rhs \nonterm{shift-expression} \lstinline$<<$ \nonterm{additive-expression}2177 \rhs \nonterm{shift-expression} \lstinline$>>$ \nonterm{additive-expression}2178 \end{syntax}2179 2180 \rewriterules \use{?>>?}%use{?<<?}2181 \begin{lstlisting}2182 a << b @\rewrite@ ?<<?( a, b )2183 a >> b @\rewrite@ ?>>?( a, b )2184 \end{lstlisting}2185 2186 \predefined2187 \begin{lstlisting}2188 int ?<<?( int, int ),2189 ?>>?( int, int );2190 unsigned int ?<<?( unsigned int, int ),2191 ?>>?( unsigned int, int );2192 long int ?<<?( long int, int ),2193 ?>>?( long int, int );2194 long unsigned int ?<<?( long unsigned int, int ),2195 ?>>?( long unsigned int, int );2196 long long int ?<<?( long long int, int ),2197 ?>>?( long long int, int );2198 long long unsigned int ?<<?( long long unsigned int, int ),2199 ?>>?( long long unsigned int, int);2200 \end{lstlisting}2201 For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the2202 rank of \lstinline$int$ there exist2203 % Don't use predefined: keep this out of prelude.cf.2204 \begin{lstlisting}2205 X ?<<?( X, int ), ?>>?( X, int );2206 \end{lstlisting}2207 2208 \begin{rationale}2209 The bitwise shift operators break the usual pattern: they do not convert both operands to a common2210 type. The right operand only undergoes \Index{integer promotion}.2211 \end{rationale}2212 2213 \semantics2214 The interpretations of a bitwise shift expression are the interpretations of the corresponding2215 function calls.2216 2217 2218 \subsection{Relational operators}2219 2220 \begin{syntax}2221 \lhs{relational-expression}2222 \rhs \nonterm{shift-expression}2223 \rhs \nonterm{relational-expression} \lstinline$< $ \nonterm{shift-expression}2224 \rhs \nonterm{relational-expression} \lstinline$> $ \nonterm{shift-expression}2225 \rhs \nonterm{relational-expression} \lstinline$<=$ \nonterm{shift-expression}2226 \rhs \nonterm{relational-expression} \lstinline$>=$ \nonterm{shift-expression}2227 \end{syntax}2228 2229 \rewriterules\use{?>?}\use{?>=?}%use{?<?}%use{?<=?}2230 \begin{lstlisting}2231 a < b @\rewrite@ ?<?( a, b )2232 a > b @\rewrite@ ?>?( a, b )2233 a <= b @\rewrite@ ?<=?( a, b )2234 a >= b @\rewrite@ ?>=?( a, b )2235 \end{lstlisting}2236 2237 \predefined2238 \begin{lstlisting}2239 int ?<?( int, int ),2240 ?<=?( int, int ),2241 ?>?( int, int ),2242 ?>=?( int, int );2243 int ?<?( unsigned int, unsigned int ),2244 ?<=?( unsigned int, unsigned int ),2245 ?>?( unsigned int, unsigned int ),2246 ?>=?( unsigned int, unsigned int );2247 int ?<?( long int, long int ),2248 ?<=?( long int, long int ),2249 ?>?( long int, long int ),2250 ?>=?( long int, long int );2251 int ?<?( long unsigned int, long unsigned ),2252 ?<=?( long unsigned int, long unsigned ),2253 ?>?( long unsigned int, long unsigned ),2254 ?>=?( long unsigned int, long unsigned );2255 int ?<?( long long int, long long int ),2256 ?<=?( long long int, long long int ),2257 ?>?( long long int, long long int ),2258 ?>=?( long long int, long long int );2259 int ?<?( long long unsigned int, long long unsigned ),2260 ?<=?( long long unsigned int, long long unsigned ),2261 ?>?( long long unsigned int, long long unsigned ),2262 ?>=?( long long unsigned int, long long unsigned );2263 int ?<?( float, float ),2264 ?<=?( float, float ),2265 ?>?( float, float ),2266 ?>=?( float, float );2267 int ?<?( double, double ),2268 ?<=?( double, double ),2269 ?>?( double, double ),2270 ?>=?( double, double );2271 int ?<?( long double, long double ),2272 ?<=?( long double, long double ),2273 ?>?( long double, long double ),2274 ?>=?( long double, long double );2275 2276 forall( dtype DT ) int2277 ?<?( const restrict volatile DT *, const restrict volatile DT * ),2278 ?<?( _Atomic const restrict volatile DT *, _Atomic const restrict volatile DT * ),2279 ?<=?( const restrict volatile DT *, const restrict volatile DT * ),2280 ?<=?( _Atomic const restrict volatile DT *, _Atomic const restrict volatile DT * ),2281 ?>?( const restrict volatile DT *, const restrict volatile DT * ),2282 ?>?( _Atomic const restrict volatile DT *, _Atomic const restrict volatile DT * ),2283 ?>=?( const restrict volatile DT *, const restrict volatile DT * ),2284 ?>=?( _Atomic const restrict volatile DT *, _Atomic const restrict volatile DT * );2285 \end{lstlisting}2286 For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the2287 rank of \lstinline$int$ there exist2288 % Don't use predefined: keep this out of prelude.cf.2289 \begin{lstlisting}2290 int ?<?( X, X ),2291 ?<=?( X, X ),2292 ?<?( X, X ),2293 ?>=?( X, X );2294 \end{lstlisting}2295 2296 \semantics2297 The interpretations of a relational expression are the interpretations of the corresponding function2298 call.2299 2300 2301 \subsection{Equality operators}2302 2303 \begin{syntax}2304 \lhs{equality-expression}2305 \rhs \nonterm{relational-expression}2306 \rhs \nonterm{equality-expression} \lstinline$==$ \nonterm{relational-expression}2307 \rhs \nonterm{equality-expression} \lstinline$!=$ \nonterm{relational-expression}2308 \end{syntax}2309 2310 \rewriterules2311 \begin{lstlisting}2312 a == b @\rewrite@ ?==?( a, b )@\use{?==?}@2313 a != b @\rewrite@ ?!=?( a, b )@\use{?"!=?}@2314 \end{lstlisting}2315 2316 \predefined2317 \begin{lstlisting}2318 int ?==?( int, int ),2319 ?!=?( int, int ),2320 ?==?( unsigned int, unsigned int ),2321 ?!=?( unsigned int, unsigned int ),2322 ?==?( long int, long int ),2323 ?!=?( long int, long int ),2324 ?==?( long unsigned int, long unsigned int ),2325 ?!=?( long unsigned int, long unsigned int ),2326 ?==?( long long int, long long int ),2327 ?!=?( long long int, long long int ),2328 ?==?( long long unsigned int, long long unsigned int ),2329 ?!=?( long long unsigned int, long long unsigned int ),2330 ?==?( float, float ),2331 ?!=?( float, float ),2332 ?==?( _Complex float, float ),2333 ?!=?( _Complex float, float ),2334 ?==?( float, _Complex float ),2335 ?!=?( float, _Complex float ),2336 ?==?( _Complex float, _Complex float ),2337 ?!=?( _Complex float, _Complex float ),2338 ?==?( double, double ),2339 ?!=?( double, double ),2340 ?==?( _Complex double, double ),2341 ?!=?( _Complex double, double ),2342 ?==?( double, _Complex double ),2343 ?!=?( double, _Complex double ),2344 ?==?( _Complex double, _Complex double ),2345 ?!=?( _Complex double, _Complex double ),2346 ?==?( long double, long double ),2347 ?!=?( long double, long double ),2348 ?==?( _Complex long double, long double ),2349 ?!=?( _Complex long double, long double ),2350 ?==?( long double, _Complex long double ),2351 ?!=?( long double, _Complex long double ),2352 ?==?( _Complex long double, _Complex long double ),2353 ?!=?( _Complex long double, _Complex long double );2354 2355 forall( dtype DT ) int2356 ?==?( const restrict volatile DT *, const restrict volatile DT * ),2357 ?!=?( const restrict volatile DT *, const restrict volatile DT * ),2358 ?==?( const restrict volatile DT *, const restrict volatile void * ),2359 ?!=?( const restrict volatile DT *, const restrict volatile void * ),2360 ?==?( const restrict volatile void *, const restrict volatile DT * ),2361 ?!=?( const restrict volatile void *, const restrict volatile DT * ),2362 ?==?( const restrict volatile DT *, forall( dtype DT2) const DT2 * ),2363 ?!=?( const restrict volatile DT *, forall( dtype DT2) const DT2 * ),2364 ?==?( forall( dtype DT2) const DT2*, const restrict volatile DT * ),2365 ?!=?( forall( dtype DT2) const DT2*, const restrict volatile DT * ),2366 ?==?( forall( dtype DT2) const DT2*, forall( dtype DT3) const DT3 * ),2367 ?!=?( forall( dtype DT2) const DT2*, forall( dtype DT3) const DT3 * ),2368 2369 ?==?( _Atomic const restrict volatile DT *, _Atomic const restrict volatile DT * ),2370 ?!=?( _Atomic const restrict volatile DT *, _Atomic const restrict volatile DT * ),2371 ?==?( _Atomic const restrict volatile DT *, const restrict volatile void * ),2372 ?!=?( _Atomic const restrict volatile DT *, const restrict volatile void * ),2373 ?==?( const restrict volatile void *, _Atomic const restrict volatile DT * ),2374 ?!=?( const restrict volatile void *, _Atomic const restrict volatile DT * ),2375 ?==?( _Atomic const restrict volatile DT *, forall( dtype DT2) const DT2 * ),2376 ?!=?( _Atomic const restrict volatile DT *, forall( dtype DT2) const DT2 * ),2377 ?==?( forall( dtype DT2) const DT2*, _Atomic const restrict volatile DT * ),2378 ?!=?( forall( dtype DT2) const DT2*, _Atomic const restrict volatile DT * );2379 2380 forall( ftype FT ) int2381 ?==?( FT *, FT * ),2382 ?!=?( FT *, FT * ),2383 ?==?( FT *, forall( ftype FT2) FT2 * ),2384 ?!=?( FT *, forall( ftype FT2) FT2 * ),2385 ?==?( forall( ftype FT2) FT2*, FT * ),2386 ?!=?( forall( ftype FT2) FT2*, FT * ),2387 ?==?( forall( ftype FT2) FT2*, forall( ftype FT3) FT3 * ),2388 ?!=?( forall( ftype FT2) FT2*, forall( ftype FT3) FT3 * );2389 \end{lstlisting}2390 For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the2391 rank of \lstinline$int$ there exist2392 % Don't use predefined: keep this out of prelude.cf.2393 \begin{lstlisting}2394 int ?==?( X, X ),2395 ?!=?( X, X );2396 \end{lstlisting}2397 2398 \begin{rationale}2399 The polymorphic equality operations come in three styles: comparisons between pointers of compatible2400 types, between pointers to \lstinline$void$ and pointers to object types or incomplete types, and2401 between the \Index{null pointer} constant and pointers to any type. In the last case, a special2402 constraint rule for null pointer constant operands has been replaced by a consequence of the \CFA2403 type system.2404 \end{rationale}2405 2406 \semantics2407 The interpretations of an equality expression are the interpretations of the corresponding function2408 call.2409 2410 \begin{sloppypar}2411 The result of an equality comparison between two pointers to predefined functions or predefined2412 values is implementation-defined.2413 \end{sloppypar}2414 \begin{rationale}2415 The implementation-defined status of equality comparisons allows implementations to use one library2416 routine to implement many predefined functions. These optimization are particularly important when2417 the predefined functions are polymorphic, as is the case for most pointer operations2418 \end{rationale}2419 2420 2421 \subsection{Bitwise AND operator}2422 2423 \begin{syntax}2424 \lhs{AND-expression}2425 \rhs \nonterm{equality-expression}2426 \rhs \nonterm{AND-expression} \lstinline$&$ \nonterm{equality-expression}2427 \end{syntax}2428 2429 \rewriterules2430 \begin{lstlisting}2431 a & b @\rewrite@ ?&?( a, b )@\use{?&?}@2432 \end{lstlisting}2433 2434 \predefined2435 \begin{lstlisting}2436 int ?&?( int, int );2437 unsigned int ?&?( unsigned int, unsigned int );2438 long int ?&?( long int, long int );2439 long unsigned int ?&?( long unsigned int, long unsigned int );2440 long long int ?&?( long long int, long long int );2441 long long unsigned int ?&?( long long unsigned int, long long unsigned int );2442 \end{lstlisting}2443 For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the2444 rank of \lstinline$int$ there exist2445 % Don't use predefined: keep this out of prelude.cf.2446 \begin{lstlisting}2447 int ?&?( X, X );2448 \end{lstlisting}2449 2450 \semantics2451 The interpretations of a bitwise AND expression are the interpretations of the corresponding2452 function call.2453 2454 2455 \subsection{Bitwise exclusive OR operator}2456 2457 \begin{syntax}2458 \lhs{exclusive-OR-expression}2459 \rhs \nonterm{AND-expression}2460 \rhs \nonterm{exclusive-OR-expression} \lstinline$^$ \nonterm{AND-expression}2461 \end{syntax}2462 2463 \rewriterules2464 \begin{lstlisting}2465 a ^ b @\rewrite@ ?^?( a, b )@\use{?^?}@2466 \end{lstlisting}2467 2468 \predefined2469 \begin{lstlisting}2470 int ?^?( int, int );2471 unsigned int ?^?( unsigned int, unsigned int );2472 long int ?^?( long int, long int );2473 long unsigned int ?^?( long unsigned int, long unsigned int );2474 long long int ?^?( long long int, long long int );2475 long long unsigned int ?^?( long long unsigned int, long long unsigned int );2476 \end{lstlisting}2477 For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the2478 rank of \lstinline$int$ there exist2479 % Don't use predefined: keep this out of prelude.cf.2480 \begin{lstlisting}2481 int ?^?( X, X );2482 \end{lstlisting}2483 2484 \semantics2485 The interpretations of a bitwise exclusive OR expression are the interpretations of the2486 corresponding function call.2487 2488 2489 \subsection{Bitwise inclusive OR operator}2490 2491 \begin{syntax}2492 \lhs{inclusive-OR-expression}2493 \rhs \nonterm{exclusive-OR-expression}2494 \rhs \nonterm{inclusive-OR-expression} \lstinline$|$ \nonterm{exclusive-OR-expression}2495 \end{syntax}2496 2497 \rewriterules\use{?"|?}2498 \begin{lstlisting}2499 a | b @\rewrite@ ?|?( a, b )2500 \end{lstlisting}2501 2502 \predefined2503 \begin{lstlisting}2504 int ?|?( int, int );2505 unsigned int ?|?( unsigned int, unsigned int );2506 long int ?|?( long int, long int );2507 long unsigned int ?|?( long unsigned int, long unsigned int );2508 long long int ?|?( long long int, long long int );2509 long long unsigned int ?|?( long long unsigned int, long long unsigned int );2510 \end{lstlisting}2511 For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the2512 rank of \lstinline$int$ there exist2513 % Don't use predefined: keep this out of prelude.cf.2514 \begin{lstlisting}2515 int ?|?( X, X );2516 \end{lstlisting}2517 2518 \semantics2519 The interpretations of a bitwise inclusive OR expression are the interpretations of the2520 corresponding function call.2521 2522 2523 \subsection{Logical AND operator}2524 2525 \begin{syntax}2526 \lhs{logical-AND-expression}2527 \rhs \nonterm{inclusive-OR-expression}2528 \rhs \nonterm{logical-AND-expression} \lstinline$&&$ \nonterm{inclusive-OR-expression}2529 \end{syntax}2530 2531 \semantics The operands of the expression ``\lstinline$a && b$'' are treated as2532 ``\lstinline$(int)((a)!=0)$'' and ``\lstinline$(int)((b)!=0)$'', which shall both be2533 unambiguous. The expression has only one interpretation, which is of type \lstinline$int$.2534 \begin{rationale}2535 When the operands of a logical expression are values of built-in types, and ``\lstinline$!=$'' has2536 not been redefined for those types, the compiler can optimize away the function calls.2537 2538 A common C idiom omits comparisons to \lstinline$0$ in the controlling expressions of loops and2539 \lstinline$if$ statements. For instance, the loop below iterates as long as \lstinline$rp$ points2540 at a \lstinline$Rational$ value that is non-zero.2541 2542 \begin{lstlisting}2543 extern type Rational;@\use{Rational}@2544 extern const Rational 0;@\use{0}@2545 extern int ?!=?( Rational, Rational );2546 Rational *rp;2547 2548 while ( rp && *rp ) { ... }2549 \end{lstlisting}2550 The logical expression calls the \lstinline$Rational$ inequality operator, passing2551 it \lstinline$*rp$ and the \lstinline$Rational 0$, and getting a 1 or 0 as a result. In2552 contrast, {\CC} would apply a programmer-defined \lstinline$Rational$-to-\lstinline$int$2553 conversion to \lstinline$*rp$ in the equivalent situation. The conversion to \lstinline$int$ would2554 produce a general integer value, which is unfortunate, and possibly dangerous if the conversion was2555 not written with this situation in mind.2556 \end{rationale}2557 2558 2559 \subsection{Logical OR operator}2560 2561 \begin{syntax}2562 \lhs{logical-OR-expression}2563 \rhs \nonterm{logical-AND-expression}2564 \rhs \nonterm{logical-OR-expression} \lstinline$||$ \nonterm{logical-AND-expression}2565 \end{syntax}2566 2567 \semantics2568 2569 The operands of the expression ``\lstinline$a || b$'' are treated as ``\lstinline$(int)((a)!=0)$''2570 and ``\lstinline$(int)((b))!=0)$'', which shall both be unambiguous. The expression has only one2571 interpretation, which is of type \lstinline$int$.2572 2573 2574 \subsection{Conditional operator}2575 2576 \begin{syntax}2577 \lhs{conditional-expression}2578 \rhs \nonterm{logical-OR-expression}2579 \rhs \nonterm{logical-OR-expression} \lstinline$?$ \nonterm{expression}2580 \lstinline$:$ \nonterm{conditional-expression}2581 \end{syntax}2582 2583 \semantics2584 In the conditional expression\use{?:} ``\lstinline$a?b:c$'', if the second and2585 third operands both have an interpretation with \lstinline$void$ type, then the expression has an2586 interpretation with type \lstinline$void$, equivalent to2587 \begin{lstlisting}2588 ( int)(( a)!=0) ? ( void)( b) : ( void)( c)2589 \end{lstlisting}2590 2591 If the second and third operands both have interpretations with non-\lstinline$void$ types, the2592 expression is treated as if it were the call ``\lstinline$cond((a)!=0, b, c)$'',2593 with \lstinline$cond$ declared as2594 \begin{lstlisting}2595 forall( type T ) T cond( int, T, T );2596 2597 forall( dtype D ) void2598 * cond( int, D *, void * ),2599 * cond( int, void *, D * );2600 2601 forall( dtype D ) _atomic void2602 * cond( int, _Atomic D *, _Atomic void * ),2603 * cond( int, _Atomic void *, _Atomic D * );2604 2605 forall( dtype D ) const void2606 * cond( int, const D *, const void * ),2607 * cond( int, const void *, const D * );2608 2609 forall( dtype D ) restrict void2610 * cond( int, restrict D *, restrict void * ),2611 * cond( int, restrict void *, restrict D * );2612 2613 forall( dtype D ) volatile void2614 * cond( int, volatile D *, volatile void * ),2615 * cond( int, volatile void *, volatile D * );2616 2617 forall( dtype D ) _Atomic const void2618 * cond( int, _Atomic const D *, _Atomic const void * ),2619 * cond( int, _Atomic const void *, _Atomic const D * );2620 2621 forall( dtype D ) _Atomic restrict void2622 * cond( int, _Atomic restrict D *, _Atomic restrict void * ),2623 * cond( int, _Atomic restrict void *, _Atomic restrict D * );2624 2625 forall( dtype D ) _Atomic volatile void2626 * cond( int, _Atomic volatile D *, _Atomic volatile void * ),2627 * cond( int, _Atomic volatile void *, _Atomic volatile D * );2628 2629 forall( dtype D ) const restrict void2630 * cond( int, const restrict D *, const restrict void * ),2631 * cond( int, const restrict void *, const restrict D * );2632 2633 forall( dtype D ) const volatile void2634 * cond( int, const volatile D *, const volatile void * ),2635 * cond( int, const volatile void *, const volatile D * );2636 2637 forall( dtype D ) restrict volatile void2638 * cond( int, restrict volatile D *, restrict volatile void * ),2639 * cond( int, restrict volatile void *, restrict volatile D * );2640 2641 forall( dtype D ) _Atomic const restrict void2642 * cond( int, _Atomic const restrict D *, _Atomic const restrict void * ),2643 * cond( int, _Atomic const restrict void *, _Atomic const restrict D * );2644 2645 forall( dtype D ) _Atomic const volatile void2646 * cond( int, _Atomic const volatile D *, _Atomic const volatile void * ),2647 * cond( int, _Atomic const volatile void *, _Atomic const volatile D * );2648 2649 forall( dtype D ) _Atomic restrict volatile void2650 * cond( int, _Atomic restrict volatile D *,2651 _Atomic restrict volatile void * ),2652 * cond( int, _Atomic restrict volatile void *,2653 _Atomic restrict volatile D * );2654 2655 forall( dtype D ) const restrict volatile void2656 * cond( int, const restrict volatile D *,2657 const restrict volatile void * ),2658 * cond( int, const restrict volatile void *,2659 const restrict volatile D * );2660 2661 forall( dtype D ) _Atomic const restrict volatile void2662 * cond( int, _Atomic const restrict volatile D *,2663 _Atomic const restrict volatile void * ),2664 * cond( int, _Atomic const restrict volatile void *,2665 _Atomic const restrict volatile D * );2666 \end{lstlisting}2667 2668 \begin{rationale}2669 The object of the above is to apply the \Index{usual arithmetic conversion}s when the second and2670 third operands have arithmetic type, and to combine the qualifiers of the second and third operands2671 if they are pointers.2672 \end{rationale}2673 2674 \examples2675 \begin{lstlisting}2676 #include <stdlib.h>2677 int i;2678 long l;2679 rand() ? i : l;2680 \end{lstlisting}2681 The best interpretation infers the expression's type to be \lstinline$long$ and applies the safe2682 \lstinline$int$-to-\lstinline$long$ conversion to \lstinline$i$.2683 2684 \begin{lstlisting}2685 const int *cip;2686 volatile int *vip;2687 rand() ? cip : vip;2688 \end{lstlisting}2689 The expression has type \lstinline$const volatile int *$, with safe conversions applied to the second2690 and third operands to add \lstinline$volatile$ and \lstinline$const$ qualifiers, respectively.2691 2692 \begin{lstlisting}2693 rand() ? cip : 0;2694 \end{lstlisting}2695 The expression has type \lstinline$const int *$, with a specialization conversion applied to2696 \lstinline$0$.2697 2698 2699 \subsection{Assignment operators}2700 2701 \begin{syntax}2702 \lhs{assignment-expression}2703 \rhs \nonterm{conditional-expression}2704 \rhs \nonterm{unary-expression} \nonterm{assignment-operator}2705 \nonterm{assignment-expression}2706 \lhs{assignment-operator} one of2707 \rhs \lstinline$=$\ \ \lstinline$*=$\ \ \lstinline$/=$\ \ \lstinline$%=$\ \ \lstinline$+=$\ \ \lstinline$-=$\ \2708 \lstinline$<<=$\ \ \lstinline$>>=$\ \ \lstinline$&=$\ \ \lstinline$^=$\ \ \lstinline$|=$2709 \end{syntax}2710 2711 \rewriterules2712 Let ``\(\leftarrow\)'' be any of the assignment operators. Then2713 \use{?=?}\use{?*=?}\use{?/=?}\use{?%=?}\use{?+=?}\use{?-=?}2714 \use{?>>=?}\use{?&=?}\use{?^=?}\use{?"|=?}%use{?<<=?}2715 \begin{lstlisting}2716 a @$\leftarrow$@ b @\rewrite@ ?@$\leftarrow$@?( &( a ), b )2717 \end{lstlisting}2718 2719 \semantics2720 Each interpretation of the left operand of an assignment expression is considered separately. For2721 each interpretation that is a bit-field or is declared with the \lstinline$register$ storage class2722 specifier, the expression has one valid interpretation, with the type of the left operand. The2723 right operand is cast to that type, and the assignment expression is ambiguous if either operand is.2724 For the remaining interpretations, the expression is rewritten, and the interpretations of the2725 assignment expression are the interpretations of the corresponding function call. Finally, all2726 interpretations of the expression produced for the different interpretations of the left operand are2727 combined to produce the interpretations of the expression as a whole; where interpretations have2728 compatible result types, the best interpretations are selected in the manner described for function2729 call expressions.2730 2731 2732 \subsubsection{Simple assignment}2733 2734 \predefined2735 \begin{lstlisting}2736 _Bool2737 ?=?( volatile _Bool *, _Bool ),2738 ?=?( volatile _Bool *, forall( dtype D ) D * ),2739 ?=?( volatile _Bool *, forall( ftype F ) F * ),2740 ?=?( _Atomic volatile _Bool *, _Bool ),2741 ?=?( _Atomic volatile _Bool *, forall( dtype D ) D * ),2742 ?=?( _Atomic volatile _Bool *, forall( ftype F ) F * );2743 char2744 ?=?( volatile char *, char ),2745 ?=?( _Atomic volatile char *, char );2746 unsigned char2747 ?=?( volatile unsigned char *, unsigned char ),2748 ?=?( _Atomic volatile unsigned char *, unsigned char );2749 signed char2750 ?=?( volatile signed char *, signed char ),2751 ?=?( _Atomic volatile signed char *, signed char );2752 short int2753 ?=?( volatile short int *, short int ),2754 ?=?( _Atomic volatile short int *, short int );2755 unsigned short2756 ?=?( volatile unsigned int *, unsigned int ),2757 ?=?( _Atomic volatile unsigned int *, unsigned int );2758 int2759 ?=?( volatile int *, int ),2760 ?=?( _Atomic volatile int *, int );2761 unsigned int2762 ?=?( volatile unsigned int *, unsigned int ),2763 ?=?( _Atomic volatile unsigned int *, unsigned int );2764 long int2765 ?=?( volatile long int *, long int ),2766 ?=?( _Atomic volatile long int *, long int );2767 unsigned long int2768 ?=?( volatile unsigned long int *, unsigned long int ),2769 ?=?( _Atomic volatile unsigned long int *, unsigned long int );2770 long long int2771 ?=?( volatile long long int *, long long int ),2772 ?=?( _Atomic volatile long long int *, long long int );2773 unsigned long long int2774 ?=?( volatile unsigned long long int *, unsigned long long int ),2775 ?=?( _Atomic volatile unsigned long long int *, unsigned long long int );2776 float2777 ?=?( volatile float *, float ),2778 ?=?( _Atomic volatile float *, float );2779 double2780 ?=?( volatile double *, double ),2781 ?=?( _Atomic volatile double *, double );2782 long double2783 ?=?( volatile long double *, long double ),2784 ?=?( _Atomic volatile long double *, long double );2785 _Complex float2786 ?=?( volatile float *, float ),2787 ?=?( _Atomic volatile float *, float );2788 _Complex double2789 ?=?( volatile double *, double ),2790 ?=?( _Atomic volatile double *, double );2791 _Complex long double2792 ?=?( volatile _Complex long double *, _Complex long double ),2793 ?=?( _Atomic volatile _Complex long double *, _Atomic _Complex long double );2794 2795 forall( ftype FT ) FT2796 * ?=?( FT * volatile *, FT * ),2797 * ?=?( FT * volatile *, forall( ftype F ) F * );2798 2799 forall( ftype FT ) FT const2800 * ?=?( FT const * volatile *, FT const * ),2801 * ?=?( FT const * volatile *, forall( ftype F ) F * );2802 2803 forall( ftype FT ) FT volatile2804 * ?=?( FT volatile * volatile *, FT * ),2805 * ?=?( FT volatile * volatile *, forall( ftype F ) F * );2806 2807 forall( ftype FT ) FT const2808 * ?=?( FT const volatile * volatile *, FT const * ),2809 * ?=?( FT const volatile * volatile *, forall( ftype F ) F * );2810 2811 forall( dtype DT ) DT2812 * ?=?( DT * restrict volatile *, DT * ),2813 * ?=?( DT * restrict volatile *, void * ),2814 * ?=?( DT * restrict volatile *, forall( dtype D ) D * ),2815 * ?=?( DT * _Atomic restrict volatile *, DT * ),2816 * ?=?( DT * _Atomic restrict volatile *, void * ),2817 * ?=?( DT * _Atomic restrict volatile *, forall( dtype D ) D * );2818 2819 forall( dtype DT ) DT _Atomic2820 * ?=?( _Atomic DT * restrict volatile *, DT _Atomic * ),2821 * ?=?( _Atomic DT * restrict volatile *, void * ),2822 * ?=?( _Atomic DT * restrict volatile *, forall( dtype D ) D * ),2823 * ?=?( _Atomic DT * _Atomic restrict volatile *, DT _Atomic * ),2824 * ?=?( _Atomic DT * _Atomic restrict volatile *, void * ),2825 * ?=?( _Atomic DT * _Atomic restrict volatile *, forall( dtype D ) D * );2826 2827 forall( dtype DT ) DT const2828 * ?=?( DT const * restrict volatile *, DT const * ),2829 * ?=?( DT const * restrict volatile *, void const * ),2830 * ?=?( DT const * restrict volatile *, forall( dtype D ) D * ),2831 * ?=?( DT const * _Atomic restrict volatile *, DT const * ),2832 * ?=?( DT const * _Atomic restrict volatile *, void const * ),2833 * ?=?( DT const * _Atomic restrict volatile *, forall( dtype D ) D * );2834 2835 forall( dtype DT ) DT restrict2836 * ?=?( restrict DT * restrict volatile *, DT restrict * ),2837 * ?=?( restrict DT * restrict volatile *, void * ),2838 * ?=?( restrict DT * restrict volatile *, forall( dtype D ) D * ),2839 * ?=?( restrict DT * _Atomic restrict volatile *, DT restrict * ),2840 * ?=?( restrict DT * _Atomic restrict volatile *, void * ),2841 * ?=?( restrict DT * _Atomic restrict volatile *, forall( dtype D ) D * );2842 2843 forall( dtype DT ) DT volatile2844 * ?=?( DT volatile * restrict volatile *, DT volatile * ),2845 * ?=?( DT volatile * restrict volatile *, void volatile * ),2846 * ?=?( DT volatile * restrict volatile *, forall( dtype D ) D * ),2847 * ?=?( DT volatile * _Atomic restrict volatile *, DT volatile * ),2848 * ?=?( DT volatile * _Atomic restrict volatile *, void volatile * ),2849 * ?=?( DT volatile * _Atomic restrict volatile *, forall( dtype D ) D * );2850 2851 forall( dtype DT ) DT _Atomic const2852 * ?=?( DT _Atomic const * restrict volatile *, DT _Atomic const * ),2853 * ?=?( DT _Atomic const * restrict volatile *, void const * ),2854 * ?=?( DT _Atomic const * restrict volatile *, forall( dtype D ) D * ),2855 * ?=?( DT _Atomic const * _Atomic restrict volatile *, DT _Atomic const * ),2856 * ?=?( DT _Atomic const * _Atomic restrict volatile *, void const * ),2857 * ?=?( DT _Atomic const * _Atomic restrict volatile *, forall( dtype D ) D * );2858 2859 forall( dtype DT ) DT _Atomic restrict2860 * ?=?( _Atomic restrict DT * restrict volatile *, DT _Atomic restrict * ),2861 * ?=?( _Atomic restrict DT * restrict volatile *, void * ),2862 * ?=?( _Atomic restrict DT * restrict volatile *, forall( dtype D ) D * ),2863 * ?=?( _Atomic restrict DT * _Atomic restrict volatile *, DT _Atomic restrict * ),2864 * ?=?( _Atomic restrict DT * _Atomic restrict volatile *, void * ),2865 * ?=?( _Atomic restrict DT * _Atomic restrict volatile *, forall( dtype D ) D * );2866 2867 forall( dtype DT ) DT _Atomic volatile2868 * ?=?( DT _Atomic volatile * restrict volatile *, DT _Atomic volatile * ),2869 * ?=?( DT _Atomic volatile * restrict volatile *, void volatile * ),2870 * ?=?( DT _Atomic volatile * restrict volatile *, forall( dtype D ) D * ),2871 * ?=?( DT _Atomic volatile * _Atomic restrict volatile *, DT _Atomic volatile * ),2872 * ?=?( DT _Atomic volatile * _Atomic restrict volatile *, void volatile * ),2873 * ?=?( DT _Atomic volatile * _Atomic restrict volatile *, forall( dtype D ) D * );2874 2875 forall( dtype DT ) DT const restrict2876 * ?=?( DT const restrict * restrict volatile *, DT const restrict * ),2877 * ?=?( DT const restrict * restrict volatile *, void const * ),2878 * ?=?( DT const restrict * restrict volatile *, forall( dtype D ) D * ),2879 * ?=?( DT const restrict * _Atomic restrict volatile *, DT const restrict * ),2880 * ?=?( DT const restrict * _Atomic restrict volatile *, void const * ),2881 * ?=?( DT const restrict * _Atomic restrict volatile *, forall( dtype D ) D * );2882 2883 forall( dtype DT ) DT const volatile2884 * ?=?( DT const volatile * restrict volatile *, DT const volatile * ),2885 * ?=?( DT const volatile * restrict volatile *, void const volatile * ),2886 * ?=?( DT const volatile * restrict volatile *, forall( dtype D ) D * ),2887 * ?=?( DT const volatile * _Atomic restrict volatile *, DT const volatile * ),2888 * ?=?( DT const volatile * _Atomic restrict volatile *, void const volatile * ),2889 * ?=?( DT const volatile * _Atomic restrict volatile *, forall( dtype D ) D * );2890 2891 forall( dtype DT ) DT restrict volatile2892 * ?=?( DT restrict volatile * restrict volatile *, DT restrict volatile * ),2893 * ?=?( DT restrict volatile * restrict volatile *, void volatile * ),2894 * ?=?( DT restrict volatile * restrict volatile *, forall( dtype D ) D * ),2895 * ?=?( DT restrict volatile * _Atomic restrict volatile *, DT restrict volatile * ),2896 * ?=?( DT restrict volatile * _Atomic restrict volatile *, void volatile * ),2897 * ?=?( DT restrict volatile * _Atomic restrict volatile *, forall( dtype D ) D * );2898 2899 forall( dtype DT ) DT _Atomic const restrict2900 * ?=?( DT _Atomic const restrict * restrict volatile *,2901 DT _Atomic const restrict * ),2902 * ?=?( DT _Atomic const restrict * restrict volatile *,2903 void const * ),2904 * ?=?( DT _Atomic const restrict * restrict volatile *,2905 forall( dtype D ) D * ),2906 * ?=?( DT _Atomic const restrict * _Atomic restrict volatile *,2907 DT _Atomic const restrict * ),2908 * ?=?( DT _Atomic const restrict * _Atomic restrict volatile *,2909 void const * ),2910 * ?=?( DT _Atomic const restrict * _Atomic restrict volatile *,2911 forall( dtype D ) D * );2912 2913 forall( dtype DT ) DT _Atomic const volatile2914 * ?=?( DT _Atomic const volatile * restrict volatile *,2915 DT _Atomic const volatile * ),2916 * ?=?( DT _Atomic const volatile * restrict volatile *,2917 void const volatile * ),2918 * ?=?( DT _Atomic const volatile * restrict volatile *,2919 forall( dtype D ) D * ),2920 * ?=?( DT _Atomic const volatile * _Atomic restrict volatile *,2921 DT _Atomic const volatile * ),2922 * ?=?( DT _Atomic const volatile * _Atomic restrict volatile *,2923 void const volatile * ),2924 * ?=?( DT _Atomic const volatile * _Atomic restrict volatile *,2925 forall( dtype D ) D * );2926 2927 forall( dtype DT ) DT _Atomic restrict volatile2928 * ?=?( DT _Atomic restrict volatile * restrict volatile *,2929 DT _Atomic restrict volatile * ),2930 * ?=?( DT _Atomic restrict volatile * restrict volatile *,2931 void volatile * ),2932 * ?=?( DT _Atomic restrict volatile * restrict volatile *,2933 forall( dtype D ) D * ),2934 * ?=?( DT _Atomic restrict volatile * _Atomic restrict volatile *,2935 DT _Atomic restrict volatile * ),2936 * ?=?( DT _Atomic restrict volatile * _Atomic restrict volatile *,2937 void volatile * ),2938 * ?=?( DT _Atomic restrict volatile * _Atomic restrict volatile *,2939 forall( dtype D ) D * );2940 2941 forall( dtype DT ) DT const restrict volatile2942 * ?=?( DT const restrict volatile * restrict volatile *,2943 DT const restrict volatile * ),2944 * ?=?( DT const restrict volatile * restrict volatile *,2945 void const volatile * ),2946 * ?=?( DT const restrict volatile * restrict volatile *,2947 forall( dtype D ) D * ),2948 * ?=?( DT const restrict volatile * _Atomic restrict volatile *,2949 DT const restrict volatile * ),2950 * ?=?( DT const restrict volatile * _Atomic restrict volatile *,2951 void const volatile * ),2952 * ?=?( DT const restrict volatile * _Atomic restrict volatile *,2953 forall( dtype D ) D * );2954 2955 forall( dtype DT ) DT _Atomic const restrict volatile2956 * ?=?( DT _Atomic const restrict volatile * restrict volatile *,2957 DT _Atomic const restrict volatile * ),2958 * ?=?( DT _Atomic const restrict volatile * restrict volatile *,2959 void const volatile * ),2960 * ?=?( DT _Atomic const restrict volatile * restrict volatile *,2961 forall( dtype D ) D * ),2962 * ?=?( DT _Atomic const restrict volatile * _Atomic restrict volatile *,2963 DT _Atomic const restrict volatile * ),2964 * ?=?( DT _Atomic const restrict volatile * _Atomic restrict volatile *,2965 void const volatile * ),2966 * ?=?( DT _Atomic const restrict volatile * _Atomic restrict volatile *,2967 forall( dtype D ) D * );2968 2969 forall( dtype DT ) void2970 * ?=?( void * restrict volatile *, DT * );2971 2972 forall( dtype DT ) void const2973 * ?=?( void const * restrict volatile *, DT const * );2974 2975 forall( dtype DT ) void volatile2976 * ?=?( void volatile * restrict volatile *, DT volatile * );2977 2978 forall( dtype DT ) void const volatile2979 * ?=?( void const volatile * restrict volatile *, DT const volatile * );2980 \end{lstlisting}2981 \begin{rationale}2982 The pattern of overloadings for simple assignment resembles that of pointer increment and decrement,2983 except that the polymorphic pointer assignment functions declare a \lstinline$dtype$ parameter,2984 instead of a \lstinline$type$ parameter, because the left operand may be a pointer to an incomplete2985 type.2986 \end{rationale}2987 2988 For every complete structure or union type \lstinline$S$ there exist2989 % Don't use predefined: keep this out of prelude.cf.2990 \begin{lstlisting}2991 S ?=?( S volatile *, S ), ?=?( S _Atomic volatile *, S );2992 \end{lstlisting}2993 2994 For every extended integer type \lstinline$X$ there exist2995 % Don't use predefined: keep this out of prelude.cf.2996 \begin{lstlisting}2997 X ?=?( X volatile *, X ), ?=?( X _Atomic volatile *, X );2998 \end{lstlisting}2999 3000 For every complete enumerated type \lstinline$E$ there exist3001 % Don't use predefined: keep this out of prelude.cf.3002 \begin{lstlisting}3003 E ?=?( E volatile *, int ), ?=?( E _Atomic volatile *, int );3004 \end{lstlisting}3005 \begin{rationale}3006 The right-hand argument is \lstinline$int$ because enumeration constants have type \lstinline$int$.3007 \end{rationale}3008 3009 \semantics3010 The structure assignment functions provide member-wise assignment; each non-array member and each3011 element of each array member of the right argument is assigned to the corresponding member or3012 element of the left argument using the assignment function defined for its type. All other3013 assignment functions have the same effect as the corresponding C assignment expression.3014 \begin{rationale}3015 Note that, by default, union assignment\index{deficiencies!union assignment} uses C semantics---that3016 is, bitwise copy---even if some of the union members have programmer-defined assignment functions.3017 \end{rationale}3018 3019 3020 \subsubsection{Compound assignment}3021 3022 \predefined3023 \begin{lstlisting}3024 forall( type T ) T3025 * ?+=?( T * restrict volatile *, ptrdiff_t ),3026 * ?-=?( T * restrict volatile *, ptrdiff_t ),3027 * ?+=?( T * _Atomic restrict volatile *, ptrdiff_t ),3028 * ?-=?( T * _Atomic restrict volatile *, ptrdiff_t );3029 3030 forall( type T ) T _Atomic3031 * ?+=?( T _Atomic * restrict volatile *, ptrdiff_t ),3032 * ?-=?( T _Atomic * restrict volatile *, ptrdiff_t ),3033 * ?+=?( T _Atomic * _Atomic restrict volatile *, ptrdiff_t ),3034 * ?-=?( T _Atomic * _Atomic restrict volatile *, ptrdiff_t );3035 3036 forall( type T ) T const3037 * ?+=?( T const * restrict volatile *, ptrdiff_t ),3038 * ?-=?( T const * restrict volatile *, ptrdiff_t ),3039 * ?+=?( T const * _Atomic restrict volatile *, ptrdiff_t ),3040 * ?-=?( T const * _Atomic restrict volatile *, ptrdiff_t );3041 3042 forall( type T ) T restrict3043 * ?+=?( T restrict * restrict volatile *, ptrdiff_t ),3044 * ?-=?( T restrict * restrict volatile *, ptrdiff_t ),3045 * ?+=?( T restrict * _Atomic restrict volatile *, ptrdiff_t ),3046 * ?-=?( T restrict * _Atomic restrict volatile *, ptrdiff_t );3047 3048 forall( type T ) T volatile3049 * ?+=?( T volatile * restrict volatile *, ptrdiff_t ),3050 * ?-=?( T volatile * restrict volatile *, ptrdiff_t ),3051 * ?+=?( T volatile * _Atomic restrict volatile *, ptrdiff_t ),3052 * ?-=?( T volatile * _Atomic restrict volatile *, ptrdiff_t );3053 3054 forall( type T ) T _Atomic const3055 * ?+=?( T _Atomic const restrict volatile *, ptrdiff_t ),3056 * ?-=?( T _Atomic const restrict volatile *, ptrdiff_t ),3057 * ?+=?( T _Atomic const _Atomic restrict volatile *, ptrdiff_t ),3058 * ?-=?( T _Atomic const _Atomic restrict volatile *, ptrdiff_t );3059 3060 forall( type T ) T _Atomic restrict3061 * ?+=?( T _Atomic restrict * restrict volatile *, ptrdiff_t ),3062 * ?-=?( T _Atomic restrict * restrict volatile *, ptrdiff_t ),3063 * ?+=?( T _Atomic restrict * _Atomic restrict volatile *, ptrdiff_t ),3064 * ?-=?( T _Atomic restrict * _Atomic restrict volatile *, ptrdiff_t );3065 3066 forall( type T ) T _Atomic volatile3067 * ?+=?( T _Atomic volatile * restrict volatile *, ptrdiff_t ),3068 * ?-=?( T _Atomic volatile * restrict volatile *, ptrdiff_t ),3069 * ?+=?( T _Atomic volatile * _Atomic restrict volatile *, ptrdiff_t ),3070 * ?-=?( T _Atomic volatile * _Atomic restrict volatile *, ptrdiff_t );3071 3072 forall( type T ) T const restrict3073 * ?+=?( T const restrict * restrict volatile *, ptrdiff_t ),3074 * ?-=?( T const restrict * restrict volatile *, ptrdiff_t ),3075 * ?+=?( T const restrict * _Atomic restrict volatile *, ptrdiff_t ),3076 * ?-=?( T const restrict * _Atomic restrict volatile *, ptrdiff_t );3077 3078 forall( type T ) T const volatile3079 * ?+=?( T const volatile * restrict volatile *, ptrdiff_t ),3080 * ?-=?( T const volatile * restrict volatile *, ptrdiff_t ),3081 * ?+=?( T const volatile * _Atomic restrict volatile *, ptrdiff_t ),3082 * ?-=?( T const volatile * _Atomic restrict volatile *, ptrdiff_t );3083 3084 forall( type T ) T restrict volatile3085 * ?+=?( T restrict volatile * restrict volatile *, ptrdiff_t ),3086 * ?-=?( T restrict volatile * restrict volatile *, ptrdiff_t ),3087 * ?+=?( T restrict volatile * _Atomic restrict volatile *, ptrdiff_t ),3088 * ?-=?( T restrict volatile * _Atomic restrict volatile *, ptrdiff_t );3089 3090 forall( type T ) T _Atomic const restrict3091 * ?+=?( T _Atomic const restrict * restrict volatile *, ptrdiff_t ),3092 * ?-=?( T _Atomic const restrict * restrict volatile *, ptrdiff_t ),3093 * ?+=?( T _Atomic const restrict * _Atomic restrict volatile *, ptrdiff_t ),3094 * ?-=?( T _Atomic const restrict * _Atomic restrict volatile *, ptrdiff_t );3095 3096 forall( type T ) T _Atomic const volatile3097 * ?+=?( T _Atomic const volatile * restrict volatile *, ptrdiff_t ),3098 * ?-=?( T _Atomic const volatile * restrict volatile *, ptrdiff_t ),3099 * ?+=?( T _Atomic const volatile * _Atomic restrict volatile *, ptrdiff_t ),3100 * ?-=?( T _Atomic const volatile * _Atomic restrict volatile *, ptrdiff_t );3101 3102 forall( type T ) T _Atomic restrict volatile3103 * ?+=?( T _Atomic restrict volatile * restrict volatile *, ptrdiff_t ),3104 * ?-=?( T _Atomic restrict volatile * restrict volatile *, ptrdiff_t ),3105 * ?+=?( T _Atomic restrict volatile * _Atomic restrict volatile *, ptrdiff_t ),3106 * ?-=?( T _Atomic restrict volatile * _Atomic restrict volatile *, ptrdiff_t );3107 3108 forall( type T ) T const restrict volatile3109 * ?+=?( T const restrict volatile * restrict volatile *, ptrdiff_t ),3110 * ?-=?( T const restrict volatile * restrict volatile *, ptrdiff_t ),3111 * ?+=?( T const restrict volatile * _Atomic restrict volatile *, ptrdiff_t ),3112 * ?-=?( T const restrict volatile * _Atomic restrict volatile *, ptrdiff_t );3113 3114 forall( type T ) T _Atomic const restrict volatile3115 * ?+=?( T _Atomic const restrict volatile * restrict volatile *, ptrdiff_t ),3116 * ?-=?( T _Atomic const restrict volatile * restrict volatile *, ptrdiff_t ),3117 * ?+=?( T _Atomic const restrict volatile * _Atomic restrict volatile *, ptrdiff_t ),3118 * ?-=?( T _Atomic const restrict volatile * _Atomic restrict volatile *, ptrdiff_t );3119 3120 _Bool3121 ?*=?( _Bool volatile *, _Bool ),3122 ?/=?( _Bool volatile *, _Bool ),3123 ?+=?( _Bool volatile *, _Bool ),3124 ?-=?( _Bool volatile *, _Bool ),3125 ?%=?( _Bool volatile *, _Bool ),3126 ?<<=?( _Bool volatile *, int ),3127 ?>>=?( _Bool volatile *, int ),3128 ?&=?( _Bool volatile *, _Bool ),3129 ?^=?( _Bool volatile *, _Bool ),3130 ?|=?( _Bool volatile *, _Bool );3131 char3132 ?*=?( char volatile *, char ),3133 ?/=?( char volatile *, char ),3134 ?+=?( char volatile *, char ),3135 ?-=?( char volatile *, char ),3136 ?%=?( char volatile *, char ),3137 ?<<=?( char volatile *, int ),3138 ?>>=?( char volatile *, int ),3139 ?&=?( char volatile *, char ),3140 ?^=?( char volatile *, char ),3141 ?|=?( char volatile *, char );3142 unsigned char3143 ?*=?( unsigned char volatile *, unsigned char ),3144 ?/=?( unsigned char volatile *, unsigned char ),3145 ?+=?( unsigned char volatile *, unsigned char ),3146 ?-=?( unsigned char volatile *, unsigned char ),3147 ?%=?( unsigned char volatile *, unsigned char ),3148 ?<<=?( unsigned char volatile *, int ),3149 ?>>=?( unsigned char volatile *, int ),3150 ?&=?( unsigned char volatile *, unsigned char ),3151 ?^=?( unsigned char volatile *, unsigned char ),3152 ?|=?( unsigned char volatile *, unsigned char );3153 signed char3154 ?*=?( signed char volatile *, signed char ),3155 ?/=?( signed char volatile *, signed char ),3156 ?+=?( signed char volatile *, signed char ),3157 ?-=?( signed char volatile *, signed char ),3158 ?%=?( signed char volatile *, signed char ),3159 ?<<=?( signed char volatile *, int ),3160 ?>>=?( signed char volatile *, int ),3161 ?&=?( signed char volatile *, signed char ),3162 ?^=?( signed char volatile *, signed char ),3163 ?|=?( signed char volatile *, signed char );3164 short int3165 ?*=?( short int volatile *, short int ),3166 ?/=?( short int volatile *, short int ),3167 ?+=?( short int volatile *, short int ),3168 ?-=?( short int volatile *, short int ),3169 ?%=?( short int volatile *, short int ),3170 ?<<=?( short int volatile *, int ),3171 ?>>=?( short int volatile *, int ),3172 ?&=?( short int volatile *, short int ),3173 ?^=?( short int volatile *, short int ),3174 ?|=?( short int volatile *, short int );3175 unsigned short int3176 ?*=?( unsigned short int volatile *, unsigned short int ),3177 ?/=?( unsigned short int volatile *, unsigned short int ),3178 ?+=?( unsigned short int volatile *, unsigned short int ),3179 ?-=?( unsigned short int volatile *, unsigned short int ),3180 ?%=?( unsigned short int volatile *, unsigned short int ),3181 ?<<=?( unsigned short int volatile *, int ),3182 ?>>=?( unsigned short int volatile *, int ),3183 ?&=?( unsigned short int volatile *, unsigned short int ),3184 ?^=?( unsigned short int volatile *, unsigned short int ),3185 ?|=?( unsigned short int volatile *, unsigned short int );3186 int3187 ?*=?( int volatile *, int ),3188 ?/=?( int volatile *, int ),3189 ?+=?( int volatile *, int ),3190 ?-=?( int volatile *, int ),3191 ?%=?( int volatile *, int ),3192 ?<<=?( int volatile *, int ),3193 ?>>=?( int volatile *, int ),3194 ?&=?( int volatile *, int ),3195 ?^=?( int volatile *, int ),3196 ?|=?( int volatile *, int );3197 unsigned int3198 ?*=?( unsigned int volatile *, unsigned int ),3199 ?/=?( unsigned int volatile *, unsigned int ),3200 ?+=?( unsigned int volatile *, unsigned int ),3201 ?-=?( unsigned int volatile *, unsigned int ),3202 ?%=?( unsigned int volatile *, unsigned int ),3203 ?<<=?( unsigned int volatile *, int ),3204 ?>>=?( unsigned int volatile *, int ),3205 ?&=?( unsigned int volatile *, unsigned int ),3206 ?^=?( unsigned int volatile *, unsigned int ),3207 ?|=?( unsigned int volatile *, unsigned int );3208 long int3209 ?*=?( long int volatile *, long int ),3210 ?/=?( long int volatile *, long int ),3211 ?+=?( long int volatile *, long int ),3212 ?-=?( long int volatile *, long int ),3213 ?%=?( long int volatile *, long int ),3214 ?<<=?( long int volatile *, int ),3215 ?>>=?( long int volatile *, int ),3216 ?&=?( long int volatile *, long int ),3217 ?^=?( long int volatile *, long int ),3218 ?|=?( long int volatile *, long int );3219 unsigned long int3220 ?*=?( unsigned long int volatile *, unsigned long int ),3221 ?/=?( unsigned long int volatile *, unsigned long int ),3222 ?+=?( unsigned long int volatile *, unsigned long int ),3223 ?-=?( unsigned long int volatile *, unsigned long int ),3224 ?%=?( unsigned long int volatile *, unsigned long int ),3225 ?<<=?( unsigned long int volatile *, int ),3226 ?>>=?( unsigned long int volatile *, int ),3227 ?&=?( unsigned long int volatile *, unsigned long int ),3228 ?^=?( unsigned long int volatile *, unsigned long int ),3229 ?|=?( unsigned long int volatile *, unsigned long int );3230 long long int3231 ?*=?( long long int volatile *, long long int ),3232 ?/=?( long long int volatile *, long long int ),3233 ?+=?( long long int volatile *, long long int ),3234 ?-=?( long long int volatile *, long long int ),3235 ?%=?( long long int volatile *, long long int ),3236 ?<<=?( long long int volatile *, int ),3237 ?>>=?( long long int volatile *, int ),3238 ?&=?( long long int volatile *, long long int ),3239 ?^=?( long long int volatile *, long long int ),3240 ?|=?( long long int volatile *, long long int );3241 unsigned long long int3242 ?*=?( unsigned long long int volatile *, unsigned long long int ),3243 ?/=?( unsigned long long int volatile *, unsigned long long int ),3244 ?+=?( unsigned long long int volatile *, unsigned long long int ),3245 ?-=?( unsigned long long int volatile *, unsigned long long int ),3246 ?%=?( unsigned long long int volatile *, unsigned long long int ),3247 ?<<=?( unsigned long long int volatile *, int ),3248 ?>>=?( unsigned long long int volatile *, int ),3249 ?&=?( unsigned long long int volatile *, unsigned long long int ),3250 ?^=?( unsigned long long int volatile *, unsigned long long int ),3251 ?|=?( unsigned long long int volatile *, unsigned long long int );3252 float3253 ?*=?( float volatile *, float ),3254 ?/=?( float volatile *, float ),3255 ?+=?( float volatile *, float ),3256 ?-=?( float volatile *, float );3257 double3258 ?*=?( double volatile *, double ),3259 ?/=?( double volatile *, double ),3260 ?+=?( double volatile *, double ),3261 ?-=?( double volatile *, double );3262 long double3263 ?*=?( long double volatile *, long double ),3264 ?/=?( long double volatile *, long double ),3265 ?+=?( long double volatile *, long double ),3266 ?-=?( long double volatile *, long double );3267 _Complex float3268 ?*=?( _Complex float volatile *, _Complex float ),3269 ?/=?( _Complex float volatile *, _Complex float ),3270 ?+=?( _Complex float volatile *, _Complex float ),3271 ?-=?( _Complex float volatile *, _Complex float );3272 _Complex double3273 ?*=?( _Complex double volatile *, _Complex double ),3274 ?/=?( _Complex double volatile *, _Complex double ),3275 ?+=?( _Complex double volatile *, _Complex double ),3276 ?-=?( _Complex double volatile *, _Complex double );3277 _Complex long double3278 ?*=?( _Complex long double volatile *, _Complex long double ),3279 ?/=?( _Complex long double volatile *, _Complex long double ),3280 ?+=?( _Complex long double volatile *, _Complex long double ),3281 ?-=?( _Complex long double volatile *, _Complex long double );3282 \end{lstlisting}3283 3284 For every extended integer type \lstinline$X$ there exist3285 % Don't use predefined: keep this out of prelude.cf.3286 \begin{lstlisting}3287 ?*=?( X volatile *, X ),3288 ?/=?( X volatile *, X ),3289 ?+=?( X volatile *, X ),3290 ?-=?( X volatile *, X ),3291 ?%=?( X volatile *, X ),3292 ?<<=?( X volatile *, int ),3293 ?>>=?( X volatile *, int ),3294 ?&=?( X volatile *, X ),3295 ?^=?( X volatile *, X ),3296 ?|=?( X volatile *, X );3297 \end{lstlisting}3298 3299 For every complete enumerated type \lstinline$E$ there exist3300 % Don't use predefined: keep this out of prelude.cf.3301 \begin{lstlisting}3302 ?*=?( E volatile *, E ),3303 ?/=?( E volatile *, E ),3304 ?+=?( E volatile *, E ),3305 ?-=?( E volatile *, E ),3306 ?%=?( E volatile *, E ),3307 ?<<=?( E volatile *, int ),3308 ?>>=?( E volatile *, int ),3309 ?&=?( E volatile *, E ),3310 ?^=?( E volatile *, E ),3311 ?|=?( E volatile *, E );3312 \end{lstlisting}3313 3314 3315 \subsection{Comma operator}3316 3317 \begin{syntax}3318 \lhs{expression}3319 \rhs \nonterm{assignment-expression}3320 \rhs \nonterm{expression} \lstinline$,$ \nonterm{assignment-expression}3321 \end{syntax}3322 3323 \semantics3324 In the comma expression ``\lstinline$a, b$'', the first operand is interpreted as3325 ``\lstinline$( void )(a)$'', which shall be unambiguous\index{ambiguous interpretation}. The3326 interpretations of the expression are the interpretations of the second operand.3327 3328 3329 \section{Constant expressions}3330 3331 3332 \section{Declarations}3333 3334 \begin{syntax}3335 \oldlhs{declaration}3336 \rhs \nonterm{type-declaration}3337 \rhs \nonterm{spec-definition}3338 \end{syntax}3339 3340 \constraints3341 If an identifier has \Index{no linkage}, there shall be no more than one declaration of the3342 identifier ( in a declarator or type specifier ) with compatible types in the same scope and in the3343 same name space, except that:3344 \begin{itemize}3345 \item3346 a typedef name may be redefined to denote the same type as it currently does, provided that type is3347 not a variably modified type;3348 \item3349 tags may be redeclared as specified in section 6.7.2.3 of the {\c11} standard.3350 \end{itemize}3351 \begin{rationale}3352 This constraint adds the phrase ``with compatible types'' to the {\c11} constraint, to allow3353 overloading.3354 \end{rationale}3355 3356 An identifier declared by a type declaration shall not be redeclared as a parameter in a function3357 definition whose declarator includes an identifier list.3358 \begin{rationale}3359 This restriction echos {\c11}'s ban on the redeclaration of typedef names as parameters. This3360 avoids an ambiguity between old-style function declarations and new-style function prototypes:3361 \begin{lstlisting}3362 void f( Complex, // ... 3000 characters ...3363 void g( Complex, // ... 3000 characters ...3364 int Complex; { ... }3365 \end{lstlisting}3366 Without the rule, \lstinline$Complex$ would be a type in the first case, and a parameter name in the3367 second.3368 \end{rationale}3369 3370 3371 \setcounter{subsection}{1}3372 \subsection{Type specifiers}3373 3374 \begin{syntax}3375 \oldlhs{type-specifier}3376 \rhs \nonterm{forall-specifier}3377 \end{syntax}3378 3379 \semantics3380 Forall specifiers are discussed in \VRef{forall}.3381 3382 3383 \subsubsection{Structure and union specifiers}3384 3385 \semantics3386 \CFA extends the {\c11} definition of \define{anonymous structure} to include structure3387 specifiers with tags, and extends the {\c11} definition of \define{anonymous union} to include union3388 specifiers with tags.3389 \begin{rationale}3390 This extension imitates an extension in the Plan 9 C compiler \cite{Thompson90new}.3391 \end{rationale}3392 3393 \examples3394 \begin{lstlisting}3395 struct point {@\impl{point}@3396 int x, y;3397 };3398 struct color_point {@\impl{color_point}@3399 enum { RED, BLUE, GREEN } color;3400 struct point;3401 };3402 struct color_point cp;3403 cp.x = 0;3404 cp.color = RED;3405 3406 struct literal {@\impl{literal}@3407 enum { NUMBER, STRING } tag;3408 union {3409 double n;3410 char *s;3411 };3412 };3413 struct literal *next;3414 int length;3415 extern int strlen( const char * );3416 ...3417 if ( next->tag == STRING ) length = strlen( next->s );3418 \end{lstlisting}3419 3420 3421 \setcounter{subsubsection}{4}3422 \subsubsection{Forall specifiers}3423 \label{forall}3424 3425 \begin{syntax}3426 \lhs{forall-specifier}3427 \rhs \lstinline$forall$ \lstinline$($ \nonterm{type-parameter-list} \lstinline$)$3428 \end{syntax}3429 3430 \begin{comment}3431 \constraints3432 If the \nonterm{declaration-specifiers} of a declaration that contains a \nonterm{forall-specifier}3433 declares a structure or union tag, the types of the members of the structure or union shall not use3434 any of the type identifiers declared by the \nonterm{type-parameter-list}.3435 \begin{rationale}3436 This sort of declaration is illegal because the scope of the type identifiers ends at the end of the3437 declaration, but the scope of the structure tag does not.3438 \begin{lstlisting}3439 forall( type T ) struct Pair { T a, b; } mkPair( T, T ); // illegal3440 \end{lstlisting}3441 If an instance of \lstinline$struct Pair$ was declared later in the current scope, what would the3442 members' type be?3443 \end{rationale}3444 \end{comment}3445 3446 \semantics3447 The \nonterm{type-parameter-list}s and assertions of the \nonterm{forall-specifier}s declare type3448 identifiers, function and object identifiers with \Index{no linkage}.3449 3450 If, in the declaration ``\lstinline$T D$'', \lstinline$T$ contains \nonterm{forall-specifier}s and3451 \lstinline$D$ has the form3452 \begin{lstlisting}3453 D( @\normalsize\nonterm{parameter-type-list}@ )3454 \end{lstlisting}3455 then a type identifier declared by one of the \nonterm{forall-specifier}s is an \define{inferred3456 parameter} of the function declarator if and only if it is not an inferred parameter of a function3457 declarator in \lstinline$D$, and it is used in the type of a parameter in the following3458 \nonterm{type-parameter-list} or it and an inferred parameter are used as arguments of a3459 \Index{specification} in one of the \nonterm{forall-specifier}s. The identifiers declared by3460 assertions that use an inferred parameter of a function declarator are \Index{assertion parameter}s3461 of that function declarator.3462 3463 \begin{comment}3464 \begin{rationale}3465 Since every inferred parameter is used by some parameter, inference can be understood as a single3466 bottom-up pass over the expression tree, that only needs to apply local reasoning at each node.3467 3468 If this restriction were lifted, it would be possible to write3469 \begin{lstlisting}3470 forall( type T ) T * alloc( void );@\use{alloc}@3471 int *p = alloc();3472 \end{lstlisting}3473 Here \lstinline$alloc()$ would receive \lstinline$int$ as an inferred argument, and return an3474 \lstinline$int *$. In general, if a call to \lstinline$alloc()$ is a subexpression of an expression3475 involving polymorphic functions and overloaded identifiers, there could be considerable distance3476 between the call and the subexpression that causes \lstinline$T$ to be bound.3477 3478 With the current restriction, \lstinline$alloc()$ must be given an argument that determines3479 \lstinline$T$:3480 \begin{lstlisting}3481 forall( type T ) T * alloc( T initial_value );@\use{alloc}@3482 \end{lstlisting}3483 \end{rationale}3484 \end{comment}3485 3486 If a function declarator is part of a function definition, its inferred parameters and assertion3487 parameters have \Index{block scope}; otherwise, identifiers declared by assertions have a3488 \define{declaration scope}, which terminates at the end of the \nonterm{declaration}.3489 3490 A function type that has at least one inferred parameter is a \define{polymorphic function} type.3491 Function types with no inferred parameters are \define{monomorphic function} types. One function3492 type is \define{less polymorphic} than another if it has fewer inferred parameters, or if it has the3493 same number of inferred parameters and fewer of its explicit parameters have types that depend on an3494 inferred parameter.3495 3496 The names of inferred parameters and the order of identifiers in forall specifiers are not relevant3497 to polymorphic function type compatibility. Let $f$ and $g$ be two polymorphic function types with3498 the same number of inferred parameters, and let $f_i$ and $g_i$ be the inferred parameters of $f$3499 and $g$ in their order of occurance in the function types' \nonterm{parameter-type-list}s. Let $f'$3500 be $f$ with every occurrence of $f_i$ replaced by $g_i$, for all $i$. Then $f$ and $g$ are3501 \Index{compatible type}s if $f'$'s and $g$'s return types and parameter lists are compatible, and if3502 for every assertion parameter of $f'$ there is an assertion parameter in $g$ with the same3503 identifier and compatible type, and vice versa.3504 3505 \examples3506 Consider these analogous monomorphic and polymorphic declarations.3507 \begin{lstlisting}3508 int fi( int );3509 forall( type T ) T fT( T );3510 \end{lstlisting}3511 \lstinline$fi()$ takes an \lstinline$int$ and returns an \lstinline$int$. \lstinline$fT()$ takes a3512 \lstinline$T$ and returns a \lstinline$T$, for any type \lstinline$T$.3513 \begin{lstlisting}3514 int (*pfi )( int ) = fi;3515 forall( type T ) T (*pfT )( T ) = fT;3516 \end{lstlisting}3517 \lstinline$pfi$ and \lstinline$pfT$ are pointers to functions. \lstinline$pfT$ is not3518 polymorphic, but the function it points at is.3519 \begin{lstlisting}3520 int (*fvpfi( void ))( int ) {3521 return pfi;3522 }3523 forall( type T ) T (*fvpfT( void ))( T ) {3524 return pfT;3525 }3526 \end{lstlisting}3527 \lstinline$fvpfi()$ and \lstinline$fvpfT()$ are functions taking no arguments and returning pointers3528 to functions. \lstinline$fvpfT()$ is monomorphic, but the function that its return value points3529 at is polymorphic.3530 \begin{lstlisting}3531 forall( type T ) int ( *fTpfi( T ) )( int );3532 forall( type T ) T ( *fTpfT( T ) )( T );3533 forall( type T, type U ) U ( *fTpfU( T ) )( U );3534 \end{lstlisting}3535 \lstinline$fTpfi()$ is a polymorphic function that returns a pointer to a monomorphic function3536 taking an integer and returning an integer. It could return \lstinline$pfi$. \lstinline$fTpfT()$3537 is subtle: it is a polymorphic function returning a \emph{monomorphic} function taking and returning3538 \lstinline$T$, where \lstinline$T$ is an inferred parameter of \lstinline$fTpfT()$. For instance,3539 in the expression ``\lstinline$fTpfT(17)$'', \lstinline$T$ is inferred to be \lstinline$int$, and3540 the returned value would have type \lstinline$int ( * )( int )$. ``\lstinline$fTpfT(17)(13)$'' and3541 ``\lstinline$fTpfT("yes")("no")$'' are legal, but ``\lstinline$fTpfT(17)("no")$'' is illegal.3542 \lstinline$fTpfU()$ is polymorphic ( in type \lstinline$T$), and returns a pointer to a function that3543 is polymorphic ( in type \lstinline$U$). ``\lstinline$f5(17)("no")$'' is a legal expression of type3544 \lstinline$char *$.3545 \begin{lstlisting}3546 forall( type T, type U, type V ) U * f( T *, U, V * const );3547 forall( type U, type V, type W ) U * g( V *, U, W * const );3548 \end{lstlisting}3549 The functions \lstinline$f()$ and \lstinline$g()$ have compatible types. Let \(f\) and \(g\) be3550 their types; then \(f_1\) = \lstinline$T$, \(f_2\) = \lstinline$U$, \(f_3\) = \lstinline$V$, \(g_1\)3551 = \lstinline$V$, \(g_2\) = \lstinline$U$, and \(g_3\) = \lstinline$W$. Replacing every \(f_i\)3552 by \(g_i\) in \(f\) gives3553 \begin{lstlisting}3554 forall( type V, type U, type W ) U * f( V *, U, W * const );3555 \end{lstlisting}3556 which has a return type and parameter list that is compatible with \(g\).3557 \begin{rationale}3558 The word ``\lstinline$type$'' in a forall specifier is redundant at the moment, but I want to leave3559 room for inferred parameters of ordinary types in case parameterized types get added one day.3560 3561 Even without parameterized types, I might try to allow3562 \begin{lstlisting}3563 forall( int n ) int sum( int vector[n] );3564 \end{lstlisting}3565 but C currently rewrites array parameters as pointer parameters, so the effects of such a change3566 require more thought.3567 \end{rationale}3568 3569 \begin{rationale}3570 A polymorphic declaration must do two things: it must introduce type parameters, and it must apply3571 assertions to those types. Adding this to existing C declaration syntax and semantics was delicate,3572 and not entirely successful.3573 3574 C depends on declaration-before-use, so a forall specifier must introduce type names before they can3575 be used in the declaration specifiers. This could be done by making the forall specifier part of3576 the declaration specifiers, or by making it a new introductory clause of declarations.3577 3578 Assertions are also part of polymorphic function types, because it must be clear which functions3579 have access to the assertion parameters declared by the assertions. All attempts to put assertions3580 inside an introductory clause produced complex semantics and confusing code. Building them into the3581 declaration specifiers could be done by placing them in the function's parameter list, or in a3582 forall specifier that is a declaration specifier. Assertions are also used with type parameters of3583 specifications, and by type declarations. For consistency's sake it seems best to attach assertions3584 to the type declarations in forall specifiers, which means that forall specifiers must be3585 declaration specifiers.3586 \end{rationale}3587 %HERE3588 3589 3590 \subsection{Type qualifiers}3591 3592 \CFA defines a new type qualifier \lstinline$lvalue$\impl{lvalue}\index{lvalue}.3593 \begin{syntax}3594 \oldlhs{type-qualifier}3595 \rhs \lstinline$lvalue$3596 \end{syntax}3597 3598 \constraints3599 \lstinline$restrict$\index{register@{\lstinline$restrict$}} Types other than type parameters and3600 pointer types whose referenced type is an object type shall not be restrict-qualified.3601 3602 \semantics3603 An object's type may be a restrict-qualified type parameter. \lstinline$restrict$ does not3604 establish any special semantics in that case.3605 3606 \begin{rationale}3607 \CFA loosens the constraint on the restrict qualifier so that restrict-qualified pointers may be3608 passed to polymorphic functions.3609 \end{rationale}3610 3611 \lstinline$lvalue$ may be used to qualify the return type of a function type. Let \lstinline$T$ be3612 an unqualified version of a type; then the result of calling a function with return type3613 \lstinline$lvalue T$ is a \Index{modifiable lvalue} of type \lstinline$T$.3614 \lstinline$const$\use{const} and \lstinline$volatile$\use{volatile} qualifiers may also be added to3615 indicate that the function result is a constant or volatile lvalue.3616 \begin{rationale}3617 The \lstinline$const$ and \lstinline$volatile$ qualifiers can only be sensibly used to qualify the3618 return type of a function if the \lstinline$lvalue$ qualifier is also used.3619 \end{rationale}3620 3621 An {lvalue}-qualified type may be used in a \Index{cast expression} if the operand is an lvalue; the3622 result of the expression is an lvalue.3623 3624 \begin{rationale}3625 \lstinline$lvalue$ provides some of the functionality of {\CC}'s ``\lstinline$T&$'' ( reference to3626 object of type \lstinline$T$) type. Reference types have four uses in {\CC}.3627 \begin{itemize}3628 \item3629 They are necessary for user-defined operators that return lvalues, such as ``subscript'' and3630 ``dereference''.3631 3632 \item3633 A reference can be used to define an alias for a complicated lvalue expression, as a way of getting3634 some of the functionality of the Pascal \lstinline$with$ statement. The following {\CC} code gives3635 an example.3636 \begin{lstlisting}3637 {3638 char &code = long_name.some_field[i].data->code;3639 code = toupper( code );3640 }3641 \end{lstlisting}3642 This is not very useful.3643 3644 \item3645 A reference parameter can be used to allow a function to modify an argument without forcing the3646 caller to pass the address of the argument. This is most useful for user-defined assignment3647 operators. In {\CC}, plain assignment is done by a function called ``\lstinline$operator=$'', and3648 the two expressions3649 \begin{lstlisting}3650 a = b;3651 operator=( a, b );3652 \end{lstlisting}3653 are equivalent. If \lstinline$a$ and \lstinline$b$ are of type \lstinline$T$, then the first3654 parameter of \lstinline$operator=$ must have type ``\lstinline$T&$''. It cannot have type3655 \lstinline$T$, because then assignment couldn't alter the variable, and it can't have type3656 ``\lstinline$T *$'', because the assignment would have to be written ``\lstinline$&a = b;$''.3657 3658 In the case of user-defined operators, this could just as well be handled by using pointer types and3659 by changing the rewrite rules so that ``\lstinline$a = b;$'' is equivalent to3660 ``\lstinline$operator=(&( a), b )$''. Reference parameters of ``normal'' functions are Bad Things,3661 because they remove a useful property of C function calls: an argument can only be modified by a3662 function if it is preceded by ``\lstinline$&$''.3663 3664 \item3665 References to \Index{const-qualified} types can be used instead of value parameters. Given the3666 {\CC} function call ``\lstinline$fiddle( a_thing )$'', where the type of \lstinline$a_thing$ is3667 \lstinline$Thing$, the type of \lstinline$fiddle$ could be either of3668 \begin{lstlisting}3669 void fiddle( Thing );3670 void fiddle( const Thing & );3671 \end{lstlisting}3672 If the second form is used, then constructors and destructors are not invoked to create a temporary3673 variable at the call site ( and it is bad style for the caller to make any assumptions about such3674 things), and within \lstinline$fiddle$ the parameter is subject to the usual problems caused by3675 aliases. The reference form might be chosen for efficiency's sake if \lstinline$Thing$s are too3676 large or their constructors or destructors are too expensive. An implementation may switch between3677 them without causing trouble for well-behaved clients. This leaves the implementor to define ``too3678 large'' and ``too expensive''.3679 3680 I propose to push this job onto the compiler by allowing it to implement3681 \begin{lstlisting}3682 void fiddle( const volatile Thing );3683 \end{lstlisting}3684 with call-by-reference. Since it knows all about the size of \lstinline$Thing$s and the parameter3685 passing mechanism, it should be able to come up with a better definition of ``too large'', and may3686 be able to make a good guess at ``too expensive''.3687 \end{itemize}3688 3689 In summary, since references are only really necessary for returning lvalues, I'll only provide3690 lvalue functions.3691 \end{rationale}3692 3693 3694 \setcounter{subsection}{8}3695 \subsection{Initialization}3696 3697 An expression that is used as an \nonterm{initializer} is treated as being cast to the type of the3698 object being initialized. An expression used in an \nonterm{initializer-list} is treated as being3699 cast to the type of the aggregate member that it initializes. In either case the cast must have a3700 single unambiguous \Index{interpretation}.3701 3702 3703 \setcounter{subsection}{10}3704 \subsection{Specification definitions}3705 3706 \begin{syntax}3707 \lhs{spec-definition}3708 \rhs \lstinline$spec$ \nonterm{identifier}3709 \lstinline$($ \nonterm{type-parameter-list} \lstinline$)$3710 \lstinline${$ \nonterm{spec-declaration-list}\opt \lstinline$}$3711 \lhs{spec-declaration-list}3712 \rhs \nonterm{spec-declaration} \lstinline$;$3713 \rhs \nonterm{spec-declaration-list} \nonterm{spec-declaration} \lstinline$;$3714 \lhs{spec-declaration}3715 \rhs \nonterm{specifier-qualifier-list} \nonterm{declarator-list}3716 \lhs{declarator-list}3717 \rhs \nonterm{declarator}3718 \rhs \nonterm{declarator-list} \lstinline$,$ \nonterm{declarator}3719 \end{syntax}3720 \begin{rationale}3721 The declarations allowed in a specification are much the same as those allowed in a structure,3722 except that bit fields are not allowed, and \Index{incomplete type}s and function types are allowed.3723 \end{rationale}3724 3725 \semantics3726 A \define{specification definition} defines a name for a \define{specification}: a parameterized3727 collection of object and function declarations.3728 3729 The declarations in a specification consist of the declarations in the3730 \nonterm{spec-declaration-list} and declarations produced by any assertions in the3731 \nonterm{spec-parameter-list}. If the collection contains two declarations that declare the same3732 identifier and have compatible types, they are combined into one declaration with the composite type3733 constructed from the two types.3734 3735 3736 \subsubsection{Assertions}3737 3738 \begin{syntax}3739 \lhs{assertion-list}3740 \rhs \nonterm{assertion}3741 \rhs \nonterm{assertion-list} \nonterm{assertion}3742 \lhs{assertion}3743 \rhs \lstinline$|$ \nonterm{identifier} \lstinline$($ \nonterm{type-name-list} \lstinline$)$3744 \rhs \lstinline$|$ \nonterm{spec-declaration}3745 \lhs{type-name-list}3746 \rhs \nonterm{type-name}3747 \rhs \nonterm{type-name-list} \lstinline$,$ \nonterm{type-name}3748 \end{syntax}3749 3750 \constraints3751 The \nonterm{identifier} in an assertion that is not a \nonterm{spec-declaration} shall be the name3752 of a specification. The \nonterm{type-name-list} shall contain one \nonterm{type-name} argument for3753 each \nonterm{type-parameter} in that specification's \nonterm{spec-parameter-list}. If the3754 \nonterm{type-parameter} uses type-class \lstinline$type$\use{type}, the argument shall be the type3755 name of an \Index{object type}; if it uses \lstinline$dtype$, the argument shall be the type name of3756 an object type or an \Index{incomplete type}; and if it uses \lstinline$ftype$, the argument shall3757 be the type name of a \Index{function type}.3758 3759 \semantics3760 An \define{assertion} is a declaration of a collection of objects and functions, called3761 \define{assertion parameters}.3762 3763 The assertion parameters produced by an assertion that applies the name of a specification to type3764 arguments are found by taking the declarations specified in the specification and treating each of3765 the specification's parameters as a synonym for the corresponding \nonterm{type-name} argument.3766 3767 The collection of assertion parameters produced by the \nonterm{assertion-list} are found by3768 combining the declarations produced by each assertion. If the collection contains two declarations3769 that declare the same identifier and have compatible types, they are combined into one declaration3770 with the \Index{composite type} constructed from the two types.3771 3772 \examples3773 \begin{lstlisting}3774 forall( type T | T ?*?( T, T ))@\use{?*?}@3775 T square( T val ) {@\impl{square}@3776 return val + val;3777 }3778 3779 context summable( type T ) {@\impl{summable}@3780 T ?+=?( T *, T );@\use{?+=?}@3781 const T 0;@\use{0}@3782 };3783 context list_of( type List, type Element ) {@\impl{list_of}@3784 Element car( List );3785 List cdr( List );3786 List cons( Element, List );3787 List nil;3788 int is_nil( List );3789 };3790 context sum_list( type List, type Element | summable( Element ) | list_of( List, Element ) ) {};3791 \end{lstlisting}3792 \lstinline$sum_list$ contains seven declarations, which describe a list whose elements can be added3793 up. The assertion ``\lstinline$|sum_list( i_list, int )$''\use{sum_list} produces the assertion3794 parameters3795 \begin{lstlisting}3796 int ?+=?( int *, int );3797 const int 0;3798 int car( i_list );3799 i_list cdr( i_list );3800 i_list cons( int, i_list );3801 i_list nil;3802 int is_nil;3803 \end{lstlisting}3804 3805 3806 \subsection{Type declarations}3807 3808 \begin{syntax}3809 \lhs{type-parameter-list}3810 \rhs \nonterm{type-parameter}3811 \rhs \nonterm{type-parameter-list} \lstinline$,$ \nonterm{type-parameter}3812 \lhs{type-parameter}3813 \rhs \nonterm{type-class} \nonterm{identifier} \nonterm{assertion-list}\opt3814 \lhs{type-class}3815 \rhs \lstinline$type$3816 \rhs \lstinline$dtype$3817 \rhs \lstinline$ftype$3818 \lhs{type-declaration}3819 \rhs \nonterm{storage-class-specifier}\opt \lstinline$type$ \nonterm{type-declarator-list} \verb|;|3820 \lhs{type-declarator-list}3821 \rhs \nonterm{type-declarator}3822 \rhs \nonterm{type-declarator-list} \lstinline$,$ \nonterm{type-declarator}3823 \lhs{type-declarator}3824 \rhs \nonterm{identifier} \nonterm{assertion-list}\opt \lstinline$=$ \nonterm{type-name}3825 \rhs \nonterm{identifier} \nonterm{assertion-list}\opt3826 \end{syntax}3827 3828 \constraints3829 If a type declaration has block scope, and the declared identifier has external or internal linkage,3830 the declaration shall have no initializer for the identifier.3831 3832 \semantics3833 A \nonterm{type-parameter} or a \nonterm{type-declarator} declares an identifier to be a \Index{type3834 name} for a type incompatible with all other types.3835 3836 An identifier declared by a \nonterm{type-parameter} has \Index{no linkage}. Identifiers declared3837 with type-class \lstinline$type$\use{type} are \Index{object type}s; those declared with type-class3838 \lstinline$dtype$\use{dtype} are \Index{incomplete type}s; and those declared with type-class3839 \lstinline$ftype$\use{ftype} are \Index{function type}s. The identifier has \Index{block scope} that3840 terminates at the end of the \nonterm{spec-declaration-list} or polymorphic function that contains3841 the \nonterm{type-parameter}.3842 3843 A \nonterm{type-declarator} with an \Index{initializer} is a \define{type definition}. The declared3844 identifier is an \Index{incomplete type} within the initializer, and an \Index{object type} after3845 the end of the initializer. The type in the initializer is called the \define{implementation3846 type}. Within the scope of the declaration, \Index{implicit conversion}s can be performed between3847 the defined type and the implementation type, and between pointers to the defined type and pointers3848 to the implementation type.3849 3850 A type declaration without an \Index{initializer} and without a \Index{storage-class specifier} or3851 with storage-class specifier \lstinline$static$\use{static} defines an \Index{incomplete type}. If a3852 \Index{translation unit} or \Index{block} contains one or more such declarations for an identifier,3853 it must contain exactly one definition of the identifier ( but not in an enclosed block, which would3854 define a new type known only within that block).3855 \begin{rationale}3856 Incomplete type declarations allow compact mutually-recursive types.3857 \begin{lstlisting}3858 type t1; // Incomplete type declaration.3859 type t2 = struct { t1 * p; ... };3860 type t1 = struct { t2 * p; ... };3861 \end{lstlisting}3862 Without them, mutual recursion could be handled by declaring mutually recursive structures, then3863 initializing the types to those structures.3864 \begin{lstlisting}3865 struct s1;3866 type t2 = struct s2 { struct s1 * p; ... };3867 type t1 = struct s1 { struct s2 * p; ... };3868 \end{lstlisting}3869 This introduces extra names, and may force the programmer to cast between the types and their3870 implementations.3871 \end{rationale}3872 3873 A type declaration without an initializer and with \Index{storage-class specifier}3874 \lstinline$extern$\use{extern} is an \define{opaque type declaration}. Opaque types are3875 \Index{object type}s. An opaque type is not a \nonterm{constant-expression}; neither is a structure3876 or union that has a member whose type is not a \nonterm{constant-expression}. Every other3877 \Index{object type} is a \nonterm{constant-expression}. Objects with static storage duration shall3878 be declared with a type that is a \nonterm{constant-expression}.3879 \begin{rationale}3880 Type declarations can declare identifiers with external linkage, whereas typedef declarations3881 declare identifiers that only exist within a translation unit. These opaque types can be used in3882 declarations, but the implementation of the type is not visible.3883 3884 Static objects can not have opaque types because space for them would have to be allocated at3885 program start-up. This is a deficiency\index{deficiencies!static opaque objects}, but I don't want3886 to deal with ``module initialization'' code just now.3887 \end{rationale}3888 3889 An \Index{incomplete type} which is not a qualified version\index{qualified type} of a type is a3890 value of \Index{type-class} \lstinline$dtype$. An object type\index{object types} which is not a3891 qualified version of a type is a value of type-classes \lstinline$type$ and \lstinline$dtype$. A3892 \Index{function type} is a value of type-class \lstinline$ftype$.3893 \begin{rationale}3894 Syntactically, a type value is a \nonterm{type-name}, which is a declaration for an object which3895 omits the identifier being declared.3896 3897 Object types are precisely the types that can be instantiated. Type qualifiers are not included in3898 type values because the compiler needs the information they provide at compile time to detect3899 illegal statements or to produce efficient machine instructions. For instance, the code that a3900 compiler must generate to manipulate an object that has volatile-qualified type may be different3901 from the code to manipulate an ordinary object.3902 3903 Type qualifiers are a weak point of C's type system. Consider the standard library function3904 \lstinline$strchr()$ which, given a string and a character, returns a pointer to the first3905 occurrence of the character in the string.3906 \begin{lstlisting}3907 char *strchr( const char *s, int c ) {@\impl{strchr}@3908 char real_c = c; // done because c was declared as int.3909 for ( ; *s != real_c; s++ )3910 if ( *s == '\0' ) return NULL;3911 return ( char * )s;3912 }3913 \end{lstlisting}3914 The parameter \lstinline$s$ must be \lstinline$const char *$, because \lstinline$strchr()$ might be3915 used to search a constant string, but the return type must be \lstinline$char *$, because the result3916 might be used to modify a non-constant string. Hence the body must perform a cast, and ( even worse)3917 \lstinline$strchr()$ provides a type-safe way to attempt to modify constant strings. What is needed3918 is some way to say that \lstinline$s$'s type might contain qualifiers, and the result type has3919 exactly the same qualifiers. Polymorphic functions do not provide a fix for this3920 deficiency\index{deficiencies!pointers to qualified types}, because type qualifiers are not part of3921 type values. Instead, overloading can be used to define \lstinline$strchr()$ for each combination3922 of qualifiers.3923 \end{rationale}3924 3925 \begin{rationale}3926 Since \Index{incomplete type}s are not type values, they can not be used as the initializer in a3927 type declaration, or as the type of a structure or union member. This prevents the declaration of3928 types that contain each other.3929 \begin{lstlisting}3930 type t1;3931 type t2 = t1; // illegal: incomplete type t1.3932 type t1 = t2;3933 \end{lstlisting}3934 3935 The initializer in a file-scope declaration must be a constant expression. This means type3936 declarations can not build on opaque types, which is a deficiency\index{deficiencies!nesting opaque3937 types}.3938 \begin{lstlisting}3939 extern type Huge; // extended-precision integer type.3940 type Rational = struct {3941 Huge numerator, denominator; // illegal3942 };3943 struct Pair {3944 Huge first, second; // legal3945 };3946 \end{lstlisting}3947 Without this restriction, \CFA might require ``module initialization'' code ( since3948 \lstinline$Rational$ has external linkage, it must be created before any other translation unit3949 instantiates it), and would force an ordering on the initialization of the translation unit that3950 defines \lstinline$Huge$ and the translation that declares \lstinline$Rational$.3951 3952 A benefit of the restriction is that it prevents the declaration in separate translation units of3953 types that contain each other, which would be hard to prevent otherwise.3954 \begin{lstlisting}3955 // File a.c:3956 extern type t1;3957 type t2 = struct { t1 f1; ... } // illegal3958 // File b.c:3959 extern type t2;3960 type t1 = struct { t2 f2; ... } // illegal3961 \end{lstlisting}3962 \end{rationale}3963 3964 \begin{rationale}3965 Since a \nonterm{type-declaration} is a \nonterm{declaration} and not a3966 \nonterm{struct-declaration}, type declarations can not be structure members. The form of3967 \nonterm{type-declaration} forbids arrays of, pointers to, and functions returning \lstinline$type$.3968 Hence the syntax of \nonterm{type-specifier} does not have to be extended to allow type-valued3969 expressions. It also side-steps the problem of type-valued expressions producing different values3970 in different declarations.3971 3972 Since a type declaration is not a \nonterm{parameter-declaration}, functions can not have explicit3973 type parameters. This may be too restrictive, but it attempts to make compilation simpler. Recall3974 that when traditional C scanners read in an identifier, they look it up in the symbol table to3975 determine whether or not it is a typedef name, and return a ``type'' or ``identifier'' token3976 depending on what they find. A type parameter would add a type name to the current scope. The3977 scope manipulations involved in parsing the declaration of a function that takes function pointer3978 parameters and returns a function pointer may just be too complicated.3979 3980 Explicit type parameters don't seem to be very useful, anyway, because their scope would not include3981 the return type of the function. Consider the following attempt to define a type-safe memory3982 allocation function.3983 \begin{lstlisting}3984 #include <stdlib.h>3985 T * new( type T ) { return ( T * )malloc( sizeof( T) ); };3986 @\ldots@3987 int * ip = new( int );3988 \end{lstlisting}3989 This looks sensible, but \CFA's declaration-before-use rules mean that ``\lstinline$T$'' in the3990 function body refers to the parameter, but the ``\lstinline$T$'' in the return type refers to the3991 meaning of \lstinline$T$ in the scope that contains \lstinline$new$; it could be undefined, or a3992 type name, or a function or variable name. Nothing good can result from such a situation.3993 \end{rationale}3994 3995 \examples3996 Since type declarations create new types, instances of types are always passed by value.3997 \begin{lstlisting}3998 type A1 = int[2];3999 void f1( A1 a ) { a[0] = 0; };4000 typedef int A2[2];4001 void f2( A2 a ) { a[0] = 0; };4002 A1 v1;4003 A2 v2;4004 f1( v1 );4005 f2( v2 );4006 \end{lstlisting}4007 \lstinline$V1$ is passed by value, so \lstinline$f1()$'s assignment to \lstinline$a[0]$ does not4008 modify v1. \lstinline$V2$ is converted to a pointer, so \lstinline$f2()$ modifies4009 \lstinline$v2[0]$.4010 4011 A translation unit containing the declarations4012 \begin{lstlisting}4013 extern type Complex;@\use{Complex}@ // opaque type declaration.4014 extern float abs( Complex );@\use{abs}@4015 \end{lstlisting}4016 can contain declarations of complex numbers, which can be passed to \lstinline$abs$. Some other4017 translation unit must implement \lstinline$Complex$ and \lstinline$abs$. That unit might contain4018 the declarations4019 \begin{lstlisting}4020 type Complex = struct { float re, im; };@\impl{Complex}@4021 Complex cplx_i = { 0.0, 1.0 };@\impl{cplx_i}@4022 float abs( Complex c ) {@\impl{abs( Complex )}@4023 return sqrt( c.re * c.re + c.im * c.im );4024 }4025 \end{lstlisting}4026 Note that \lstinline$c$ is implicitly converted to a \lstinline$struct$ so that its components can4027 be retrieved.4028 4029 \begin{lstlisting}4030 type Time_of_day = int;@\impl{Time_of_day}@ // seconds since midnight.4031 Time_of_day ?+?( Time_of_day t1, int seconds ) {@\impl{?+?}@4032 return (( int)t1 + seconds ) % 86400;4033 }4034 \end{lstlisting}4035 \lstinline$t1$ must be cast to its implementation type to prevent infinite recursion.4036 4037 \begin{rationale}4038 Within the scope of a type definition, an instance of the type can be viewed as having that type or4039 as having the implementation type. In the \lstinline$Time_of_day$ example, the difference is4040 important. Different languages have treated the distinction between the abstraction and the4041 implementation in different ways.4042 \begin{itemize}4043 \item4044 Inside a Clu cluster \cite{clu}, the declaration of an instance states which view applies. Two4045 primitives called \lstinline$up$ and \lstinline$down$ can be used to convert between the views.4046 \item4047 The Simula class \cite{Simula87} is essentially a record type. Since the only operations on a4048 record are member selection and assignment, which can not be overloaded, there is never any4049 ambiguity as to whether the abstraction or the implementation view is being used. In {\CC}4050 \cite{c++}, operations on class instances include assignment and ``\lstinline$&$'', which can be4051 overloaded. A ``scope resolution'' operator can be used inside the class to specify whether the4052 abstract or implementation version of the operation should be used.4053 \item4054 An Ada derived type definition \cite{ada} creates a new type from an old type, and also implicitly4055 declares derived subprograms that correspond to the existing subprograms that use the old type as a4056 parameter type or result type. The derived subprograms are clones of the existing subprograms with4057 the old type replaced by the derived type. Literals and aggregates of the old type are also cloned.4058 In other words, the abstract view provides exactly the same operations as the implementation view.4059 This allows the abstract view to be used in all cases.4060 4061 The derived subprograms can be replaced by programmer-specified subprograms. This is an exception4062 to the normal scope rules, which forbid duplicate definitions of a subprogram in a scope. In this4063 case, explicit conversions between the derived type and the old type can be used.4064 \end{itemize}4065 \CFA's rules are like Clu's, except that implicit conversions and4066 conversion costs allow it to do away with most uses of \lstinline$up$ and \lstinline$down$.4067 \end{rationale}4068 4069 4070 \subsubsection{Default functions and objects}4071 4072 A declaration\index{type declaration} of a type identifier \lstinline$T$ with type-class4073 \lstinline$type$ implicitly declares a \define{default assignment} function4074 \lstinline$T ?=?( T *, T )$\use{?=?}, with the same \Index{scope} and \Index{linkage} as the4075 identifier \lstinline$T$.4076 \begin{rationale}4077 Assignment is central to C's imperative programming style, and every existing C object type has4078 assignment defined for it ( except for array types, which are treated as pointer types for purposes4079 of assignment). Without this rule, nearly every inferred type parameter would need an accompanying4080 assignment assertion parameter. If a type parameter should not have an assignment operation,4081 \lstinline$dtype$ should be used. If a type should not have assignment defined, the user can define4082 an assignment function that causes a run-time error, or provide an external declaration but no4083 definition and thus cause a link-time error.4084 \end{rationale}4085 4086 A definition\index{type definition} of a type identifier \lstinline$T$ with \Index{implementation4087 type} \lstinline$I$ and type-class \lstinline$type$ implicitly defines a default assignment4088 function. A definition\index{type definition} of a type identifier \lstinline$T$ with implementation4089 type \lstinline$I$ and an assertion list implicitly defines \define{default function}s and4090 \define{default object}s as declared by the assertion declarations. The default objects and4091 functions have the same \Index{scope} and \Index{linkage} as the identifier \lstinline$T$. Their4092 values are determined as follows:4093 \begin{itemize}4094 \item4095 If at the definition of \lstinline$T$ there is visible a declaration of an object with the same name4096 as the default object, and if the type of that object with all occurrence of \lstinline$I$ replaced4097 by \lstinline$T$ is compatible with the type of the default object, then the default object is4098 initialized with that object. Otherwise the scope of the declaration of \lstinline$T$ must contain4099 a definition of the default object.4100 4101 \item4102 If at the definition of \lstinline$T$ there is visible a declaration of a function with the same4103 name as the default function, and if the type of that function with all occurrence of \lstinline$I$4104 replaced by \lstinline$T$ is compatible with the type of the default function, then the default4105 function calls that function after converting its arguments and returns the converted result.4106 4107 Otherwise, if \lstinline$I$ contains exactly one anonymous member\index{anonymous member} such that4108 at the definition of \lstinline$T$ there is visible a declaration of a function with the same name4109 as the default function, and the type of that function with all occurrences of the anonymous4110 member's type in its parameter list replaced by \lstinline$T$ is compatible with the type of the4111 default function, then the default function calls that function after converting its arguments and4112 returns the result.4113 4114 Otherwise the scope of the declaration of \lstinline$T$ must contain a definition of the default4115 function.4116 \end{itemize}4117 \begin{rationale}4118 Note that a pointer to a default function will not compare as equal to a pointer to the inherited4119 function.4120 \end{rationale}4121 4122 A function or object with the same type and name as a default function or object that is declared4123 within the scope of the definition of \lstinline$T$ replaces the default function or object.4124 4125 \examples4126 \begin{lstlisting}4127 context s( type T ) {4128 T a, b;4129 }4130 struct impl { int left, right; } a = { 0, 0 };4131 type Pair | s( Pair ) = struct impl;4132 Pair b = { 1, 1 };4133 \end{lstlisting}4134 The definition of \lstinline$Pair$ implicitly defines two objects \lstinline$a$ and \lstinline$b$.4135 \lstinline$Pair a$ inherits its value from the \lstinline$struct impl a$. The definition of4136 \lstinline$Pair b$ is compulsory because there is no \lstinline$struct impl b$ to construct a value4137 from.4138 \begin{lstlisting}4139 context ss( type T ) {4140 T clone( T );4141 void munge( T * );4142 }4143 type Whatsit | ss( Whatsit );@\use{Whatsit}@4144 type Doodad | ss( Doodad ) = struct doodad {@\use{Doodad}@4145 Whatsit; // anonymous member4146 int extra;4147 };4148 Doodad clone( Doodad ) { ... }4149 \end{lstlisting}4150 The definition of \lstinline$Doodad$ implicitly defines three functions:4151 \begin{lstlisting}4152 Doodad ?=?( Doodad *, Doodad );4153 Doodad clone( Doodad );4154 void munge( Doodad * );4155 \end{lstlisting}4156 The assignment function inherits \lstinline$struct doodad$'s assignment function because the types4157 match when \lstinline$struct doodad$ is replaced by \lstinline$Doodad$ throughout.4158 \lstinline$munge()$ inherits \lstinline$Whatsit$'s \lstinline$munge()$ because the types match when4159 \lstinline$Whatsit$ is replaced by \lstinline$Doodad$ in the parameter list. \lstinline$clone()$4160 does \emph{not} inherit \lstinline$Whatsit$'s \lstinline$clone()$: replacement in the parameter4161 list yields ``\lstinline$Whatsit clone( Doodad )$'', which is not compatible with4162 \lstinline$Doodad$'s \lstinline$clone()$'s type. Hence the definition of4163 ``\lstinline$Doodad clone( Doodad )$'' is necessary.4164 4165 Default functions and objects are subject to the normal scope rules.4166 \begin{lstlisting}4167 type T = @\ldots@;4168 T a_T = @\ldots@; // Default assignment used.4169 T ?=?( T *, T );4170 T a_T = @\ldots@; // Programmer-defined assignment called.4171 \end{lstlisting}4172 \begin{rationale}4173 A compiler warning would be helpful in this situation.4174 \end{rationale}4175 4176 \begin{rationale}4177 The \emph{class} construct of object-oriented programming languages performs three independent4178 functions. It \emph{encapsulates} a data structure; it defines a \emph{subtype} relationship, whereby4179 instances of one class may be used in contexts that require instances of another; and it allows one4180 class to \emph{inherit} the implementation of another.4181 4182 In \CFA, encapsulation is provided by opaque types and the scope rules, and subtyping is provided4183 by specifications and assertions. Inheritance is provided by default functions and objects.4184 \end{rationale}4185 4186 4187 \section{Statements and blocks}4188 4189 \begin{syntax}4190 \oldlhs{statement}4191 \rhs \nonterm{exception-statement}4192 \end{syntax}4193 4194 Many statements contain expressions, which may have more than one interpretation. The following4195 sections describe how the \CFA translator selects an interpretation. In all cases the result of the4196 selection shall be a single unambiguous \Index{interpretation}.4197 4198 4199 \subsection{Labeled statements}4200 4201 \begin{syntax}4202 \oldlhs{labeled-statement}4203 \rhs \lstinline$case$ \nonterm{case-value-list} : \nonterm{statement}4204 \lhs{case-value-list}4205 \rhs \nonterm{case-value}4206 \rhs \nonterm{case-value-list} \lstinline$,$ \nonterm{case-value}4207 \lhs{case-value}4208 \rhs \nonterm{constant-expression}4209 \rhs \nonterm{subrange}4210 \lhs{subrange}4211 \rhs \nonterm{constant-expression} \lstinline$~$ \nonterm{constant-expression}4212 \end{syntax}4213 4214 The following have identical meaning:4215 \begin{lstlisting}4216 case 1: case 2: case 3: case 4: case 5:4217 case 1, 2, 3, 4, 5:4218 case 1~5:4219 \end{lstlisting}4220 Multiple subranges are allowed:4221 \begin{lstlisting}4222 case 1~4, 9~14, 27~32:4223 \end{lstlisting}4224 The \lstinline$case$ and \lstinline$default$ clauses are restricted within the \lstinline$switch$ and \lstinline$choose$ statements, precluding Duff's device.4225 4226 4227 \subsection{Expression and null statements}4228 4229 The expression in an expression statement is treated as being cast to \lstinline$void$.4230 4231 4232 \subsection{Selection statements}4233 4234 \begin{syntax}4235 \oldlhs{selection-statement}4236 \rhs \lstinline$choose$ \lstinline$($ \nonterm{expression} \lstinline$)$ \nonterm{statement}4237 \end{syntax}4238 4239 The controlling expression \lstinline$E$ in the \lstinline$switch$ and \lstinline$choose$ statement:4240 \begin{lstlisting}4241 switch ( E ) ...4242 choose ( E ) ...4243 \end{lstlisting}4244 may have more than one interpretation, but it shall have only one interpretation with an integral type.4245 An \Index{integer promotion} is performed on the expression if necessary.4246 The constant expressions in \lstinline$case$ statements with the switch are converted to the promoted type.4247 4248 4249 \setcounter{subsubsection}{3}4250 \subsubsection{The \lstinline$choose$ statement}4251 4252 The \lstinline$choose$ statement is the same as the \lstinline$switch$ statement except control transfers to the end of the \lstinline$choose$ statement at a \lstinline$case$ or \lstinline$default$ labeled statement.4253 The \lstinline$fallthru$ statement is used to fall through to the next \lstinline$case$ or \lstinline$default$ labeled statement.4254 The following have identical meaning:4255 \begin{flushleft}4256 \begin{tabular}{@{\hspace{2em}}l@{\hspace{2em}}l@{}}4257 \begin{lstlisting}4258 switch (...) {4259 case 1: ... ; break;4260 case 2: ... ; break;4261 case 3: ... ; // fall through4262 case 4: ... ; // fall through4263 default: ... break;4264 }4265 \end{lstlisting}4266 &4267 \begin{lstlisting}4268 choose (...) {4269 case 1: ... ; // exit4270 case 2: ... ; // exit4271 case 3: ... ; fallthru;4272 case 4: ... ; fallthru;4273 default: ... ; // exit4274 }4275 \end{lstlisting}4276 \end{tabular}4277 \end{flushleft}4278 The \lstinline$choose$ statement addresses the problem of accidental fall-through associated with the \lstinline$switch$ statement.4279 4280 4281 \subsection{Iteration statements}4282 4283 The controlling expression \lstinline$E$ in the loops4284 \begin{lstlisting}4285 if ( E ) ...4286 while ( E ) ...4287 do ... while ( E );4288 \end{lstlisting}4289 is treated as ``\lstinline$( int )((E)!=0)$''.4290 4291 The statement4292 \begin{lstlisting}4293 for ( a; b; c ) @\ldots@4294 \end{lstlisting}4295 is treated as4296 \begin{lstlisting}4297 for ( ( void )( a ); ( int )(( b )!=0); ( void )( c ) ) ...4298 \end{lstlisting}4299 4300 4301 \subsection{Jump statements}4302 4303 \begin{syntax}4304 \oldlhs{jump-statement}4305 \rhs \lstinline$continue$ \nonterm{identifier}\opt4306 \rhs \lstinline$break$ \nonterm{identifier}\opt4307 \rhs \ldots4308 \rhs \lstinline$throw$ \nonterm{assignment-expression}\opt4309 \rhs \lstinline$throwResume$ \nonterm{assignment-expression}\opt \nonterm{at-expression}\opt4310 \lhs{at-expression} \lstinline$_At$ \nonterm{assignment-expression}4311 \end{syntax}4312 4313 Labeled \lstinline$continue$ and \lstinline$break$ allow useful but restricted control-flow that reduces the need for the \lstinline$goto$ statement for exiting multiple nested control-structures.4314 \begin{lstlisting}4315 L1: { // compound4316 L2: switch ( ... ) { // switch4317 case ...:4318 L3: for ( ;; ) { // outer for4319 L4: for ( ;; ) { // inner for4320 continue L1; // error: not enclosing iteration4321 continue L2; // error: not enclosing iteration4322 continue L3; // next iteration of outer for4323 continue L4; // next iteration of inner for4324 break L1; // exit compound4325 break L2; // exit switch4326 break L3; // exit outer for4327 break L4; // exit inner for4328 } // for4329 } // for4330 break; // exit switch4331 default:4332 break L1; // exit compound4333 } // switch4334 ...4335 } // compound4336 \end{lstlisting}4337 4338 4339 \setcounter{subsubsection}{1}4340 \subsubsection{The \lstinline$continue$ statement}4341 4342 The identifier in a \lstinline$continue$ statement shall name a label located on an enclosing iteration statement.4343 4344 4345 \subsubsection{The \lstinline$break$ statement}4346 4347 The identifier in a \lstinline$break$ statement shall name a label located on an enclosing compound, selection or iteration statement.4348 4349 4350 \subsubsection{The \lstinline$return$ statement}4351 4352 An expression in a \lstinline$return$ statement is treated as being cast to the result type of the function.4353 4354 4355 \subsubsection{The \lstinline$throw$ statement}4356 4357 When an exception is raised, \Index{propagation} directs control from a raise in the source execution to a handler in the faulting execution.4358 4359 4360 \subsubsection{The \lstinline$throwResume$ statement}4361 4362 4363 \subsection{Exception statements}4364 4365 \begin{syntax}4366 \lhs{exception-statement}4367 \rhs \lstinline$try$ \nonterm{compound-statement} \nonterm{handler-list}4368 \rhs \lstinline$try$ \nonterm{compound-statement} \nonterm{finally-clause}4369 \rhs \lstinline$try$ \nonterm{compound-statement} \nonterm{handler-list} \nonterm{finally-clause}4370 \lhs{handler-list}4371 \rhs \nonterm{handler-clause}4372 \rhs \lstinline$catch$ \lstinline$($ \ldots \lstinline$)$ \nonterm{compound-statement}4373 \rhs \nonterm{handler-clause} \lstinline$catch$ \lstinline$($ \ldots \lstinline$)$ \nonterm{compound-statement}4374 \rhs \lstinline$catchResume$ \lstinline$($ \ldots \lstinline$)$ \nonterm{compound-statement}4375 \rhs \nonterm{handler-clause} \lstinline$catchResume$ \lstinline$($ \ldots \lstinline$)$ \nonterm{compound-statement}4376 \lhs{handler-clause}4377 \rhs \lstinline$catch$ \lstinline$($ \nonterm{exception-declaration} \lstinline$)$ \nonterm{compound-statement}4378 \rhs \nonterm{handler-clause} \lstinline$catch$ \lstinline$($ \nonterm{exception-declaration} \lstinline$)$ \nonterm{compound-statement}4379 \rhs \lstinline$catchResume$ \lstinline$($ \nonterm{exception-declaration} \lstinline$)$ \nonterm{compound-statement}4380 \rhs \nonterm{handler-clause} \lstinline$catchResume$ \lstinline$($ \nonterm{exception-declaration} \lstinline$)$ \nonterm{compound-statement}4381 \lhs{finally-clause}4382 \rhs \lstinline$finally$ \nonterm{compound-statement}4383 \lhs{exception-declaration}4384 \rhs \nonterm{type-specifier}4385 \rhs \nonterm{type-specifier} \nonterm{declarator}4386 \rhs \nonterm{type-specifier} \nonterm{abstract-declarator}4387 \rhs \nonterm{new-abstract-declarator-tuple} \nonterm{identifier}4388 \rhs \nonterm{new-abstract-declarator-tuple}4389 \lhs{asynchronous-statement}4390 \rhs \lstinline$enable$ \nonterm{identifier-list} \nonterm{compound-statement}4391 \rhs \lstinline$disable$ \nonterm{identifier-list} \nonterm{compound-statement}4392 \end{syntax}4393 4394 \Index{Exception statement}s allow a dynamic call to a handler for \Index{recovery} (\Index{termination}) or \Index{correction} (\Index{resumption}) of an \Index{abnormal event}.4395 4396 4397 \subsubsection{The \lstinline$try$ statement}4398 4399 The \lstinline$try$ statement is a block with associated handlers, called a \Index{guarded block};4400 all other blocks are \Index{unguarded block}s.4401 A \lstinline$goto$, \lstinline$break$, \lstinline$return$, or \lstinline$continue$ statement can be used to transfer control out of a try block or handler, but not into one.4402 4403 4404 \subsubsection{The \lstinline$enable$/\lstinline$disable$ statements}4405 4406 The \lstinline$enable$/\lstinline$disable$ statements toggle delivery of \Index{asynchronous exception}s.4407 4408 4409 \setcounter{section}{9}4410 \section{Preprocessing directives}4411 4412 4413 \setcounter{subsection}{7}4414 \subsection{Predefined macro names}4415 4416 The implementation shall define the macro names \lstinline$__LINE__$, \lstinline$__FILE__$,4417 \lstinline$__DATE__$, and \lstinline$__TIME__$, as in the {\c11} standard. It shall not define the4418 macro name \lstinline$__STDC__$.4419 4420 In addition, the implementation shall define the macro name \lstinline$__CFORALL__$ to be the4421 decimal constant 1.4422 4423 4424 \appendix4425 4426 4427 \chapter{Examples}4428 4429 4430 \section{C types}4431 This section gives example specifications for some groups of types that are important in the C4432 language, in terms of the predefined operations that can be applied to those types.4433 4434 4435 \subsection{Scalar, arithmetic, and integral types}4436 4437 The pointer, integral, and floating-point types are all \define{scalar types}. All of these types4438 can be logically negated and compared. The assertion ``\lstinline$scalar( Complex )$'' should be read4439 as ``type \lstinline$Complex$ is scalar''.4440 \begin{lstlisting}4441 context scalar( type T ) {@\impl{scalar}@4442 int !?( T );4443 int ?<?( T, T ), ?<=?( T, T ), ?==?( T, T ), ?>=?( T, T ), ?>?( T, T ), ?!=?( T, T );4444 };4445 \end{lstlisting}4446 4447 The integral and floating-point types are \define{arithmetic types}, which support the basic4448 arithmetic operators. The use of an assertion in the \nonterm{spec-parameter-list} declares that,4449 in order to be arithmetic, a type must also be scalar ( and hence that scalar operations are4450 available ). This is equivalent to inheritance of specifications.4451 \begin{lstlisting}4452 context arithmetic( type T | scalar( T ) ) {@\impl{arithmetic}@@\use{scalar}@4453 T +?( T ), -?( T );4454 T ?*?( T, T ), ?/?( T, T ), ?+?( T, T ), ?-?( T, T );4455 };4456 \end{lstlisting}4457 4458 The various flavors of \lstinline$char$ and \lstinline$int$ and the enumerated types make up the4459 \define{integral types}.4460 \begin{lstlisting}4461 context integral( type T | arithmetic( T ) ) {@\impl{integral}@@\use{arithmetic}@4462 T ~?( T );4463 T ?&?( T, T ), ?|?( T, T ), ?^?( T, T );4464 T ?%?( T, T );4465 T ?<<?( T, T ), ?>>?( T, T );4466 };4467 \end{lstlisting}4468 4469 4470 \subsection{Modifiable types}4471 \index{modifiable lvalue}4472 4473 The only operation that can be applied to all modifiable lvalues is simple assignment.4474 \begin{lstlisting}4475 context m_lvalue( type T ) {@\impl{m_lvalue}@4476 T ?=?( T *, T );4477 };4478 \end{lstlisting}4479 4480 Modifiable scalar lvalues are scalars and are modifiable lvalues, and assertions in the4481 \nonterm{spec-parameter-list} reflect those relationships. This is equivalent to multiple4482 inheritance of specifications. Scalars can also be incremented and decremented.4483 \begin{lstlisting}4484 context m_l_scalar( type T | scalar( T ) | m_lvalue( T ) ) {@\impl{m_l_scalar}@4485 T ?++( T * ), ?--( T * );@\use{scalar}@@\use{m_lvalue}@4486 T ++?( T * ), --?( T * );4487 };4488 \end{lstlisting}4489 4490 Modifiable arithmetic lvalues are both modifiable scalar lvalues and arithmetic. Note that this4491 results in the ``inheritance'' of \lstinline$scalar$ along both paths.4492 \begin{lstlisting}4493 context m_l_arithmetic( type T | m_l_scalar( T ) | arithmetic( T ) ) {@\impl{m_l_arithmetic}@4494 T ?/=?( T *, T ), ?*=?( T *, T );@\use{m_l_scalar}@@\use{arithmetic}@4495 T ?+=?( T *, T ), ?-=?( T *, T );4496 };4497 4498 context m_l_integral( type T | m_l_arithmetic( T ) | integral( T ) ) {@\impl{m_l_integral}@4499 T ?&=?( T *, T ), ?|=?( T *, T ), ?^=?( T *, T );@\use{m_l_arithmetic}@4500 T ?%=?( T *, T ), ?<<=?( T *, T ), ?>>=?( T *, T );@\use{integral}@4501 };4502 \end{lstlisting}4503 4504 4505 \subsection{Pointer and array types}4506 4507 Array types can barely be said to exist in {\c11}, since in most cases an array name is treated as a4508 constant pointer to the first element of the array, and the subscript expression4509 ``\lstinline$a[i]$'' is equivalent to the dereferencing expression ``\lstinline$(*( a+( i )))$''.4510 Technically, pointer arithmetic and pointer comparisons other than ``\lstinline$==$'' and4511 ``\lstinline$!=$'' are only defined for pointers to array elements, but the type system does not4512 enforce those restrictions. Consequently, there is no need for a separate ``array type''4513 specification.4514 4515 Pointer types are scalar types. Like other scalar types, they have ``\lstinline$+$'' and4516 ``\lstinline$-$'' operators, but the types do not match the types of the operations in4517 \lstinline$arithmetic$, so these operators cannot be consolidated in \lstinline$scalar$.4518 \begin{lstlisting}4519 context pointer( type P | scalar( P ) ) {@\impl{pointer}@@\use{scalar}@4520 P ?+?( P, long int ), ?+?( long int, P ), ?-?( P, long int );4521 ptrdiff_t ?-?( P, P );4522 };4523 4524 context m_l_pointer( type P | pointer( P ) | m_l_scalar( P ) ) {@\impl{m_l_pointer}@4525 P ?+=?( P *, long int ), ?-=?( P *, long int );4526 P ?=?( P *, void * );4527 void * ?=?( void **, P );4528 };4529 \end{lstlisting}4530 4531 Specifications that define the dereference operator ( or subscript operator ) require two4532 parameters, one for the pointer type and one for the pointed-at ( or element ) type. Different4533 specifications are needed for each set of \Index{type qualifier}s, because qualifiers are not4534 included in types. The assertion ``\lstinline$|ptr_to( Safe_pointer, int )$'' should be read as4535 ``\lstinline$Safe_pointer$ acts like a pointer to \lstinline$int$''.4536 \begin{lstlisting}4537 context ptr_to( type P | pointer( P ), type T ) {@\impl{ptr_to}@@\use{pointer}@4538 lvalue T *?( P ); lvalue T ?[?]( P, long int );4539 };4540 4541 context ptr_to_const( type P | pointer( P ), type T ) {@\impl{ptr_to_const}@4542 const lvalue T *?( P ); const lvalue T ?[?]( P, long int );@\use{pointer}@4543 };4544 4545 context ptr_to_volatile( type P | pointer( P ), type T ) }@\impl{ptr_to_volatile}@4546 volatile lvalue T *?( P ); volatile lvalue T ?[?]( P, long int );@\use{pointer}@4547 };4548 \end{lstlisting}4549 \begin{lstlisting}4550 context ptr_to_const_volatile( type P | pointer( P ), type T ) }@\impl{ptr_to_const_volatile}@4551 const volatile lvalue T *?( P );@\use{pointer}@4552 const volatile lvalue T ?[?]( P, long int );4553 };4554 \end{lstlisting}4555 4556 Assignment to pointers is more complicated than is the case with other types, because the target's4557 type can have extra type qualifiers in the pointed-at type: a ``\lstinline$T *$'' can be assigned to4558 a ``\lstinline$const T *$'', a ``\lstinline$volatile T *$'', and a ``\lstinline$const volatile T *$''.4559 Again, the pointed-at type is passed in, so that assertions can connect these specifications to the4560 ``\lstinline$ptr_to$'' specifications.4561 \begin{lstlisting}4562 context m_l_ptr_to( type P | m_l_pointer( P ),@\use{m_l_pointer}@@\impl{m_l_ptr_to}@ type T | ptr_to( P, T )@\use{ptr_to}@ {4563 P ?=?( P *, T * );4564 T * ?=?( T **, P );4565 };4566 4567 context m_l_ptr_to_const( type P | m_l_pointer( P ),@\use{m_l_pointer}@@\impl{m_l_ptr_to_const}@ type T | ptr_to_const( P, T )@\use{ptr_to_const}@) {4568 P ?=?( P *, const T * );4569 const T * ?=?( const T **, P );4570 };4571 4572 context m_l_ptr_to_volatile( type P | m_l_pointer( P ),@\use{m_l_pointer}@@\impl{m_l_ptr_to_volatile}@ type T | ptr_to_volatile( P, T )) {@\use{ptr_to_volatile}@4573 P ?=?( P *, volatile T * );4574 volatile T * ?=?( volatile T **, P );4575 };4576 4577 context m_l_ptr_to_const_volatile( type P | ptr_to_const_volatile( P ),@\use{ptr_to_const_volatile}@@\impl{m_l_ptr_to_const_volatile}@4578 type T | m_l_ptr_to_volatile( P, T ) | m_l_ptr_to_const( P )) {@\use{m_l_ptr_to_const}@@\use{m_l_ptr_to_volatile}@4579 P ?=?( P *, const volatile T * );4580 const volatile T * ?=?( const volatile T **, P );4581 };4582 \end{lstlisting}4583 4584 Note the regular manner in which type qualifiers appear in those specifications. An alternative4585 specification can make use of the fact that qualification of the pointed-at type is part of a4586 pointer type to capture that regularity.4587 \begin{lstlisting}4588 context m_l_ptr_like( type MyP | m_l_pointer( MyP ),@\use{m_l_pointer}@@\impl{m_l_ptr_like}@ type CP | m_l_pointer( CP ) ) {4589 MyP ?=?( MyP *, CP );4590 CP ?=?( CP *, MyP );4591 };4592 \end{lstlisting}4593 The assertion ``\lstinline$| m_l_ptr_like( Safe_ptr, const int * )$'' should be read as4594 ``\lstinline$Safe_ptr$ is a pointer type like \lstinline$const int *$''. This specification has two4595 defects, compared to the original four: there is no automatic assertion that dereferencing a4596 \lstinline$MyP$ produces an lvalue of the type that \lstinline$CP$ points at, and the4597 ``\lstinline$|m_l_pointer( CP )$'' assertion provides only a weak assurance that the argument passed4598 to \lstinline$CP$ really is a pointer type.4599 4600 4601 \section{Relationships between operations}4602 4603 Different operators often have related meanings; for instance, in C, ``\lstinline$+$'',4604 ``\lstinline$+=$'', and the two versions of ``\lstinline$++$'' perform variations of addition.4605 Languages like {\CC} and Ada allow programmers to define operators for new types, but do not4606 require that these relationships be preserved, or even that all of the operators be implemented.4607 Completeness and consistency is left to the good taste and discretion of the programmer. It is4608 possible to encourage these attributes by providing generic operator functions, or member functions4609 of abstract classes, that are defined in terms of other, related operators.4610 4611 In \CFA, polymorphic functions provide the equivalent of these generic operators, and4612 specifications explicitly define the minimal implementation that a programmer should provide. This4613 section shows a few examples.4614 4615 4616 \subsection{Relational and equality operators}4617 4618 The different comparison operators have obvious relationships, but there is no obvious subset of the4619 operations to use in the implementation of the others. However, it is usually convenient to4620 implement a single comparison function that returns a negative integer, 0, or a positive integer if4621 its first argument is respectively less than, equal to, or greater than its second argument; the4622 library function \lstinline$strcmp$ is an example.4623 4624 C and \CFA have an extra, non-obvious comparison operator: ``\lstinline$!$'', logical negation,4625 returns 1 if its operand compares equal to 0, and 0 otherwise.4626 \begin{lstlisting}4627 context comparable( type T ) {4628 const T 0;4629 int compare( T, T );4630 }4631 4632 forall( type T | comparable( T ) ) int ?<?( T l, T r ) {4633 return compare( l, r ) < 0;4634 }4635 // ... similarly for <=, ==, >=, >, and !=.4636 4637 forall( type T | comparable( T ) ) int !?( T operand ) {4638 return !compare( operand, 0 );4639 }4640 \end{lstlisting}4641 4642 4643 \subsection{Arithmetic and integer operations}4644 4645 A complete arithmetic type would provide the arithmetic operators and the corresponding assignment4646 operators. Of these, the assignment operators are more likely to be implemented directly, because4647 it is usually more efficient to alter the contents of an existing object than to create and return a4648 new one. Similarly, a complete integral type would provide integral operations based on integral4649 assignment operations.4650 \begin{lstlisting}4651 context arith_base( type T ) {4652 const T 1;4653 T ?+=?( T *, T ), ?-=?( T *, T ), ?*=?( T *, T ), ?/=?( T *, T );4654 }4655 4656 forall( type T | arith_base( T ) ) T ?+?( T l, T r ) {4657 return l += r;4658 }4659 4660 forall( type T | arith_base( T ) ) T ?++( T * operand ) {4661 T temporary = *operand;4662 *operand += 1;4663 return temporary;4664 }4665 4666 forall( type T | arith_base( T ) ) T ++?( T * operand ) {4667 return *operand += 1;4668 }4669 // ... similarly for -, --, *, and /.4670 4671 context int_base( type T ) {4672 T ?&=?( T *, T ), ?|=?( T *, T ), ?^=?( T *, T );4673 T ?%=?( T *, T ), ?<<=?( T *, T ), ?>>=?( T *, T );4674 }4675 4676 forall( type T | int_base( T ) ) T ?&?( T l, T r ) {4677 return l &= r;4678 }4679 // ... similarly for |, ^, %, <<, and >>.4680 \end{lstlisting}4681 4682 Note that, although an arithmetic type would certainly provide comparison functions, and an integral4683 type would provide arithmetic operations, there does not have to be any relationship among4684 \lstinline$int_base$, \lstinline$arith_base$ and \lstinline$comparable$. Note also that these4685 declarations provide guidance and assistance, but they do not define an absolutely minimal set of4686 requirements. A truly minimal implementation of an arithmetic type might only provide4687 \lstinline$0$, \lstinline$1$, and \lstinline$?-=?$, which would be used by polymorphic4688 \lstinline$?+=?$, \lstinline$?*=?$, and \lstinline$?/=?$ functions.4689 4690 Note also that \lstinline$short$ is an integer type in C11 terms, but has no operations!4691 4692 4693 \chapter{TODO}4694 Review index entries.4695 4696 Restrict allowed to qualify anything, or type/dtype parameters, but only affects pointers. This gets4697 into \lstinline$noalias$ territory. Qualifying anything (``\lstinline$short restrict rs$'') means4698 pointer parameters of \lstinline$?++$, etc, would need restrict qualifiers.4699 4700 Enumerated types. Constants are not ints. Overloading. Definition should be ``representable as an4701 integer type'', not ``as an int''. C11 usual conversions freely convert to and from ordinary4702 integer types via assignment, which works between any integer types. Does enum Color ?*?( enum4703 Color, enum Color ) really make sense? ?++ does, but it adds (int)1.4704 4705 Operators on {,signed,unsigned} char and other small types. ?<? harmless; ?*? questionable for4706 chars. Generic selections make these choices visible. Safe conversion operators? Predefined4707 ``promotion'' function?4708 4709 \lstinline$register$ assignment might be handled as assignment to a temporary with copying back and4710 forth, but copying must not be done by assignment.4711 4712 Don't use ptrdiff\_t by name in the predefineds.4713 4714 Polymorphic objects. Polymorphic typedefs and type declarations.4715 4716 4717 \bibliographystyle{plain}4718 \bibliography{refrat}4719 4720 4721 \addcontentsline{toc}{chapter}{\indexname} % add index name to table of contents4722 \begin{theindex}4723 Italic page numbers give the location of the main entry for the referenced term. Plain page numbers4724 denote uses of the indexed term. Entries for grammar non-terminals are italicized. A typewriter4725 font is used for grammar terminals and program identifiers.4726 \indexspace4727 \input{refrat.ind}4728 \end{theindex}4729 4730 \end{document}4731 4732 % Local Variables: %4733 % tab-width: 4 %4734 % fill-column: 100 %4735 % compile-command: "make" %4736 % End: % -
src/CodeGen/CodeGenerator.cc
rd2ded3e7 r698664b3 9 9 // Author : Richard C. Bilson 10 10 // Created On : Mon May 18 07:44:20 2015 11 // Last Modified By : Rob Schluntz12 // Last Modified On : Thu Sep 17 15:24:08201513 // Update Count : 2 3111 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Mon Jul 27 14:40:06 2015 13 // Update Count : 218 14 14 // 15 15 … … 186 186 } 187 187 188 void CodeGenerator::printDesignators( std::list< Expression * > & designators ) {189 typedef std::list< Expression * > DesignatorList;190 if ( designators.size() == 0 ) return;191 for ( DesignatorList::iterator iter = designators.begin(); iter != designators.end(); ++iter ) {192 if ( dynamic_cast< NameExpr * >( *iter ) ) {193 // if expression is a name, then initializing aggregate member194 output << ".";195 (*iter)->accept( *this );196 } else {197 // if not a simple name, it has to be a constant expression, i.e. an array designator198 output << "[";199 (*iter)->accept( *this );200 output << "]";201 }202 }203 output << " = ";204 }205 206 188 void CodeGenerator::visit( SingleInit *init ) { 207 printDesignators( init->get_designators() );208 189 init->get_value()->accept( *this ); 209 190 } 210 191 211 192 void CodeGenerator::visit( ListInit *init ) { 212 printDesignators( init->get_designators() );213 193 output << "{ "; 214 194 genCommaList( init->begin_initializers(), init->end_initializers() ); … … 392 372 393 373 void CodeGenerator::visit( CastExpr *castExpr ) { 394 // if the cast is to an lvalue type, then the cast 395 // should be dropped, since the result of a cast is 396 // never an lvalue in C 397 if ( castExpr->get_results().front()->get_isLvalue() ) { 398 castExpr->get_arg()->accept( *this ); 399 } else { 400 output << "(("; 401 if ( castExpr->get_results().empty() ) { 402 output << "void" ; 403 } else { 404 output << genType( castExpr->get_results().front(), "" ); 405 } // if 406 output << ")"; 407 castExpr->get_arg()->accept( *this ); 408 output << ")"; 409 } 374 output << "(("; 375 if ( castExpr->get_results().empty() ) { 376 output << "void" ; 377 } else { 378 output << genType( castExpr->get_results().front(), "" ); 379 } // if 380 output << ")"; 381 castExpr->get_arg()->accept( *this ); 382 output << ")"; 410 383 } 411 384 -
src/CodeGen/CodeGenerator.h
rd2ded3e7 r698664b3 9 9 // Author : Richard C. Bilson 10 10 // Created On : Mon May 18 07:44:20 2015 11 // Last Modified By : Rob Schluntz12 // Last Modified On : Wed Aug 12 14:27:14201513 // Update Count : 2 711 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Fri Jul 24 13:34:47 2015 13 // Update Count : 25 14 14 // 15 15 … … 95 95 std::ostream &output; 96 96 97 void printDesignators( std::list< Expression * > & );98 97 static std::string printLabels ( std::list < Label > & ); 99 98 void handleStorageClass( Declaration *decl ); -
src/GenPoly/PolyMutator.cc
rd2ded3e7 r698664b3 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Rob Schluntz 12 // Last Modified On : Fri Aug 14 15:28:50201513 // Update Count : 1112 // Last Modified On : Wed Jul 15 14:50:58 2015 13 // Update Count : 3 14 14 // 15 15 … … 20 20 #include "SynTree/Statement.h" 21 21 #include "SynTree/Mutator.h" 22 #include "SynTree/Initializer.h" 22 23 23 24 24 namespace GenPoly { … … 146 146 } 147 147 148 149 Initializer *PolyMutator::mutate( SingleInit *singleInit ) {150 singleInit->set_value( mutateExpression( singleInit->get_value() ) );151 return singleInit;152 }153 154 155 148 /* static class method */ 156 149 void PolyMutator::makeTyVarMap( Type *type, TyVarMap &tyVarMap ) { -
src/GenPoly/PolyMutator.h
rd2ded3e7 r698664b3 9 9 // Author : Richard C. Bilson 10 10 // Created On : Mon May 18 07:44:20 2015 11 // Last Modified By : Rob Schluntz12 // Last Modified On : Fri Aug 14 15:27:38201513 // Update Count : 411 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Tue May 19 07:46:45 2015 13 // Update Count : 1 14 14 // 15 15 … … 45 45 46 46 virtual Expression* mutate(UntypedExpr *untypedExpr); 47 48 virtual Initializer* mutate(SingleInit *SingleInit); 49 47 50 48 // template method 51 49 virtual void doBeginScope() {} -
src/GenPoly/Specialize.cc
rd2ded3e7 r698664b3 9 9 // Author : Richard C. Bilson 10 10 // Created On : Mon May 18 07:44:20 2015 11 // Last Modified By : Rob Schluntz12 // Last Modified On : Tue Sep 22 14:04:13201513 // Update Count : 1511 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sat Jun 13 15:54:07 2015 13 // Update Count : 6 14 14 // 15 15 … … 200 200 Expression * Specialize::mutate( AddressExpr *addrExpr ) { 201 201 addrExpr->get_arg()->acceptMutator( *this ); 202 assert( ! addrExpr->get_results().empty() );203 202 addrExpr->set_arg( doSpecialization( addrExpr->get_results().front(), addrExpr->get_arg() ) ); 204 203 return addrExpr; -
src/Parser/ExpressionNode.cc
rd2ded3e7 r698664b3 10 10 // Created On : Sat May 16 13:17:07 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Mon Oct 5 16:37:24201513 // Update Count : 2 5512 // Last Modified On : Tue Aug 11 15:13:48 2015 13 // Update Count : 200 14 14 // 15 15 … … 32 32 ExpressionNode::ExpressionNode() : ParseNode(), argName( 0 ) {} 33 33 34 ExpressionNode::ExpressionNode( const string *name ) : ParseNode( name), argName( 0 ) {}34 ExpressionNode::ExpressionNode( const string *name_ ) : ParseNode( name_ ), argName( 0 ) {} 35 35 36 36 ExpressionNode::ExpressionNode( const ExpressionNode &other ) : ParseNode( other.name ) { … … 290 290 DesignatorNode::DesignatorNode( ExpressionNode *expr, bool isArrayIndex ) : isArrayIndex( isArrayIndex ) { 291 291 set_argName( expr ); 292 assert( get_argName() );293 294 if ( ! isArrayIndex ) {295 if ( VarRefNode * var = dynamic_cast< VarRefNode * >( expr ) ) {296 297 stringstream ss( var->get_name() );298 double value;299 if ( ss >> value ) {300 // this is a floating point constant. It MUST be301 // ".0" or ".1", otherwise the program is invalid302 if ( ! (var->get_name() == ".0" || var->get_name() == ".1") ) {303 throw SemanticError( "invalid designator name: " + var->get_name() );304 } // if305 var->set_name( var->get_name().substr(1) );306 } // if307 } // if308 } // if309 292 } 310 293 … … 312 295 } 313 296 314 class DesignatorFixer : public Mutator {315 public:316 virtual Expression* mutate( NameExpr *nameExpr ) {317 if ( nameExpr->get_name() == "0" || nameExpr->get_name() == "1" ) {318 Constant val( new BasicType( Type::Qualifiers(), BasicType::SignedInt ), nameExpr->get_name() );319 delete nameExpr;320 return new ConstantExpr( val );321 }322 return nameExpr;323 }324 };325 326 297 Expression *DesignatorNode::build() const { 327 Expression * ret = get_argName()->build();328 329 298 if ( isArrayIndex ) { 330 // need to traverse entire structure and change any instances of 0 or 1 to 331 // ConstantExpr 332 DesignatorFixer fixer; 333 ret = ret->acceptMutator( fixer ); 334 } // if 335 336 return ret; 299 return new NameExpr( get_name(), maybeBuild< Expression >( get_argName() ) ); 300 } else { 301 return new NameExpr( get_name(), maybeBuild< Expression >( get_argName() ) ); 302 } // if 337 303 } 338 304 … … 418 384 419 385 CompositeExprNode::CompositeExprNode( ExpressionNode *f, ExpressionNode *arg1, ExpressionNode *arg2): 420 function( f ), arguments( arg1 ) {421 arguments->set_link( arg2 );386 function( f ), arguments( arg1) { 387 arguments->set_link( arg2); 422 388 } 423 389 -
src/Parser/InitializerNode.cc
rd2ded3e7 r698664b3 10 10 // Created On : Sat May 16 13:20:24 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Thu Oct 8 17:18:55201513 // Update Count : 412 // Last Modified On : Sat Jun 6 15:49:42 2015 13 // Update Count : 3 14 14 // 15 15 … … 80 80 81 81 if ( aggregate ) { 82 //assert( next_init() != 0 );82 assert( next_init() != 0 ); 83 83 84 84 std::list< Initializer *> initlist; -
src/Parser/ParseNode.cc
rd2ded3e7 r698664b3 9 9 // Author : Rodolfo G. Esteves 10 10 // Created On : Sat May 16 13:26:29 2015 11 // Last Modified By : Rob Schluntz12 // Last Modified On : Wed Aug 12 13:26:00201513 // Update Count : 3611 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Thu Jul 30 14:55:54 2015 13 // Update Count : 26 14 14 // 15 15 … … 20 20 int ParseNode::indent_by = 4; 21 21 22 ParseNode::ParseNode() : next( 0 ) {}; 23 ParseNode::ParseNode( const string *name ) : name( *name ), next( 0 ) { delete name; } 24 ParseNode::ParseNode( const string &name ) : name( name ), next( 0 ) { } 22 ParseNode::ParseNode() : name( 0 ), next( 0 ) {}; 23 ParseNode::ParseNode( const string *name_ ) : name( name_ ), next( 0 ) {} 25 24 26 25 ParseNode::~ParseNode() { 27 delete next; 26 delete next; delete name; 28 27 }; 29 28 -
src/Parser/ParseNode.h
rd2ded3e7 r698664b3 9 9 // Author : Rodolfo G. Esteves 10 10 // Created On : Sat May 16 13:28:16 2015 11 // Last Modified By : Rob Schluntz12 // Last Modified On : Wed Aug 12 13:27:11201513 // Update Count : 1 7211 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Tue Aug 11 15:11:29 2015 13 // Update Count : 145 14 14 // 15 15 … … 40 40 ParseNode(); 41 41 ParseNode( const std::string * ); 42 ParseNode( const std::string & ); // for copy constructing subclasses43 42 virtual ~ParseNode(); 44 43 … … 50 49 virtual ParseNode *clone() const { return 0; }; 51 50 52 const std::string &get_name() const { return name; } 53 void set_name( const std::string &newValue ) { name = newValue; } 54 51 const std::string &get_name() const { return *name; } 55 52 virtual void print( std::ostream &, int indent = 0 ) const; 56 53 virtual void printList( std::ostream &, int indent = 0 ) const; … … 58 55 ParseNode &operator,( ParseNode &); 59 56 protected: 60 std::stringname;57 const std::string *name; 61 58 ParseNode *next; 62 59 static int indent_by; -
src/Parser/lex.cc
rd2ded3e7 r698664b3 382 382 (yy_c_buf_p) = yy_cp; 383 383 384 #define YY_NUM_RULES 17 8385 #define YY_END_OF_BUFFER 17 9384 #define YY_NUM_RULES 171 385 #define YY_END_OF_BUFFER 172 386 386 /* This struct is not used in this scanner, 387 387 but its presence is necessary. */ … … 391 391 flex_int32_t yy_nxt; 392 392 }; 393 static yyconst flex_int16_t yy_accept[8 52] =393 static yyconst flex_int16_t yy_accept[826] = 394 394 { 0, 395 0, 0, 0, 0, 0, 0, 113, 113, 116, 116, 396 179, 177, 7, 9, 8, 136, 115, 100, 141, 144, 397 112, 123, 124, 139, 137, 127, 138, 130, 140, 105, 398 106, 107, 128, 129, 146, 148, 147, 149, 177, 100, 399 121, 177, 122, 142, 100, 102, 100, 100, 100, 100, 400 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 401 100, 125, 145, 126, 143, 7, 177, 4, 4, 178, 402 103, 178, 104, 113, 114, 120, 116, 117, 7, 9, 403 0, 8, 153, 172, 100, 0, 165, 135, 158, 166, 404 163, 150, 161, 151, 162, 160, 0, 110, 3, 0, 405 406 164, 110, 108, 0, 0, 108, 108, 0, 0, 108, 407 107, 107, 107, 0, 107, 133, 134, 132, 154, 156, 408 152, 157, 155, 0, 0, 0, 0, 0, 0, 0, 409 0, 0, 0, 0, 0, 0, 0, 0, 101, 171, 410 0, 115, 112, 100, 0, 0, 168, 0, 100, 100, 411 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 412 100, 100, 100, 100, 100, 39, 100, 100, 100, 100, 413 100, 100, 100, 100, 100, 100, 57, 100, 100, 100, 414 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 415 100, 100, 167, 159, 7, 0, 0, 0, 2, 0, 416 417 5, 103, 0, 0, 0, 113, 0, 119, 118, 118, 418 0, 0, 0, 116, 0, 0, 0, 0, 0, 0, 419 0, 0, 0, 0, 0, 0, 0, 0, 0, 131, 420 110, 0, 110, 0, 0, 6, 0, 108, 0, 0, 421 0, 110, 0, 108, 108, 108, 108, 0, 109, 0, 422 0, 107, 107, 107, 107, 0, 169, 170, 0, 175, 423 173, 0, 0, 0, 101, 0, 0, 0, 0, 0, 424 0, 0, 0, 100, 17, 100, 100, 100, 100, 100, 425 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 426 100, 100, 14, 100, 100, 100, 100, 100, 100, 100, 427 428 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 429 100, 51, 100, 100, 100, 64, 100, 100, 100, 100, 430 100, 100, 100, 100, 100, 100, 100, 100, 87, 100, 431 100, 100, 100, 100, 100, 100, 0, 0, 0, 0, 432 0, 0, 0, 0, 118, 0, 0, 0, 0, 0, 433 118, 0, 0, 176, 0, 0, 0, 0, 0, 0, 434 0, 0, 110, 0, 0, 0, 110, 0, 108, 108, 435 0, 0, 109, 109, 0, 109, 0, 109, 107, 107, 395 0, 0, 0, 0, 0, 0, 108, 108, 111, 111, 396 172, 170, 7, 9, 8, 131, 110, 95, 136, 139, 397 107, 118, 119, 134, 132, 122, 133, 125, 135, 100, 398 101, 102, 123, 124, 141, 143, 142, 144, 170, 95, 399 116, 170, 117, 137, 95, 97, 95, 95, 95, 95, 400 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 401 95, 120, 140, 121, 138, 7, 170, 4, 4, 171, 402 98, 171, 99, 108, 109, 115, 111, 112, 7, 9, 403 0, 8, 148, 166, 95, 0, 160, 130, 153, 161, 404 158, 145, 156, 146, 157, 155, 0, 105, 3, 0, 405 406 159, 105, 103, 0, 0, 103, 103, 0, 0, 103, 407 102, 102, 102, 0, 102, 128, 129, 127, 149, 151, 408 147, 152, 150, 0, 0, 0, 0, 0, 0, 0, 409 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 410 110, 107, 95, 0, 0, 163, 95, 95, 95, 95, 411 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 412 95, 95, 36, 95, 95, 95, 95, 95, 95, 95, 413 95, 95, 95, 53, 95, 95, 95, 95, 95, 95, 414 95, 95, 95, 95, 95, 95, 95, 95, 95, 162, 415 154, 7, 0, 0, 0, 2, 0, 5, 98, 0, 416 417 0, 0, 108, 0, 114, 113, 113, 0, 0, 0, 418 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 419 0, 0, 0, 0, 0, 0, 126, 105, 0, 105, 420 0, 0, 6, 0, 103, 0, 0, 0, 105, 0, 421 103, 103, 103, 103, 0, 104, 0, 0, 102, 102, 422 102, 102, 0, 164, 165, 0, 168, 167, 0, 0, 423 0, 96, 0, 0, 0, 0, 0, 0, 0, 95, 424 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 425 95, 95, 95, 95, 95, 95, 95, 95, 14, 95, 426 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 427 428 95, 95, 95, 95, 95, 47, 95, 95, 95, 60, 429 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 430 95, 95, 82, 95, 95, 95, 95, 95, 95, 95, 431 0, 0, 0, 0, 0, 0, 0, 0, 113, 0, 432 0, 0, 0, 0, 113, 0, 0, 169, 0, 0, 433 0, 0, 0, 0, 0, 0, 105, 0, 0, 0, 434 105, 0, 103, 103, 0, 0, 104, 104, 0, 104, 435 0, 104, 102, 102, 0, 0, 0, 0, 0, 0, 436 0, 0, 0, 0, 95, 95, 95, 95, 95, 95, 437 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 438 439 95, 95, 95, 95, 95, 95, 20, 95, 23, 95, 440 25, 95, 95, 95, 95, 95, 95, 39, 40, 95, 441 95, 95, 95, 95, 95, 95, 52, 95, 63, 95, 442 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 443 83, 95, 95, 90, 95, 95, 0, 0, 0, 0, 436 444 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 437 174, 100, 100, 100, 100, 100, 100, 100, 100, 100, 438 439 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 440 100, 100, 100, 21, 100, 24, 100, 27, 100, 100, 441 100, 100, 100, 100, 100, 42, 100, 44, 100, 100, 442 100, 100, 100, 100, 100, 56, 100, 67, 100, 100, 443 100, 100, 100, 100, 100, 100, 100, 100, 100, 88, 444 100, 100, 95, 100, 100, 0, 0, 0, 0, 0, 445 0, 0, 0, 0, 0, 0, 0, 0, 0, 118, 446 0, 0, 0, 0, 0, 110, 0, 0, 0, 0, 447 0, 0, 109, 109, 0, 111, 0, 109, 109, 0, 445 113, 0, 0, 0, 0, 0, 105, 0, 0, 0, 446 0, 0, 0, 104, 104, 0, 106, 0, 104, 104, 448 447 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 449 450 0, 0, 100, 100, 22, 100, 100, 100, 100, 100, 451 100, 100, 15, 100, 100, 100, 100, 100, 100, 100,452 100, 100, 100, 100, 100, 100, 23, 25, 100, 32,453 100, 100, 100, 100, 100, 41, 100, 100, 100, 100,454 49, 100, 100, 54, 100, 100, 100, 100, 100, 75,455 100, 100, 100, 100, 100, 85, 100, 100, 93, 100,456 100, 99, 0, 0, 0, 0, 0, 0, 0, 0,448 0, 0, 0, 95, 95, 21, 95, 95, 95, 95, 449 450 95, 95, 95, 15, 95, 95, 95, 95, 95, 95, 451 95, 95, 95, 95, 95, 95, 95, 22, 24, 95, 452 30, 95, 95, 95, 95, 38, 95, 95, 95, 45, 453 95, 95, 50, 95, 95, 95, 95, 95, 71, 95, 454 95, 95, 95, 95, 81, 95, 95, 88, 95, 95, 455 94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 457 456 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 458 0, 111, 0, 0, 109, 111, 111, 0, 109, 0, 459 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 460 461 0, 100, 100, 100, 100, 100, 100, 100, 100, 100, 462 100, 100, 100, 100, 100, 100, 59, 100, 100, 100, 463 100, 100, 100, 100, 100, 28, 100, 100, 100, 100, 464 40, 43, 46, 100, 100, 52, 100, 61, 68, 100, 465 100, 74, 76, 79, 80, 82, 83, 100, 100, 90, 466 100, 100, 0, 1, 0, 0, 0, 0, 0, 0, 467 103, 0, 0, 0, 118, 0, 0, 0, 0, 111, 457 106, 0, 0, 104, 106, 106, 0, 104, 0, 0, 458 0, 0, 0, 0, 0, 0, 0, 0, 95, 0, 459 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 460 461 95, 95, 95, 95, 95, 55, 95, 95, 95, 95, 462 95, 95, 95, 26, 95, 95, 95, 37, 42, 95, 463 95, 48, 95, 57, 64, 95, 95, 70, 72, 75, 464 76, 78, 79, 95, 85, 95, 95, 0, 1, 0, 465 0, 0, 0, 0, 0, 98, 0, 0, 0, 113, 466 0, 0, 0, 0, 106, 0, 0, 0, 0, 0, 467 0, 0, 0, 0, 0, 95, 95, 17, 95, 95, 468 95, 95, 95, 95, 95, 16, 95, 95, 31, 95, 469 95, 95, 95, 95, 95, 95, 95, 95, 95, 33, 470 95, 35, 95, 44, 49, 95, 95, 84, 95, 95, 471 468 472 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 469 100, 100, 18, 100, 100, 100, 100, 100, 100, 100, 470 16, 100, 100, 33, 100, 100, 100, 100, 100, 100, 471 472 100, 100, 100, 100, 100, 35, 100, 37, 38, 100, 473 48, 53, 100, 100, 100, 89, 100, 100, 0, 0, 473 0, 0, 0, 10, 11, 27, 51, 95, 95, 95, 474 95, 95, 95, 95, 95, 95, 95, 56, 58, 61, 475 95, 95, 73, 86, 95, 34, 43, 66, 67, 89, 476 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 477 0, 0, 0, 95, 65, 95, 95, 12, 95, 28, 478 32, 95, 95, 95, 62, 95, 95, 95, 95, 0, 474 479 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 475 0, 10, 11, 29, 55, 100, 100, 100, 100, 100, 476 100, 100, 100, 100, 100, 60, 62, 65, 100, 100, 477 77, 91, 100, 100, 36, 47, 70, 71, 100, 94, 478 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 479 0, 0, 0, 100, 69, 100, 100, 12, 100, 30, 480 34, 100, 100, 100, 66, 100, 100, 100, 100, 100, 481 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 482 483 0, 0, 0, 0, 58, 100, 100, 100, 100, 100, 484 100, 50, 63, 72, 78, 92, 97, 100, 100, 0, 485 0, 0, 0, 0, 0, 0, 0, 100, 100, 13, 486 19, 31, 100, 100, 100, 26, 86, 0, 0, 100, 487 100, 100, 100, 73, 98, 100, 84, 20, 45, 81, 488 0 480 0, 0, 54, 95, 95, 95, 95, 95, 95, 46, 481 59, 68, 74, 87, 92, 0, 0, 0, 0, 0, 482 483 0, 0, 0, 95, 95, 13, 18, 29, 95, 95, 484 95, 0, 0, 95, 95, 95, 95, 69, 93, 95, 485 80, 19, 41, 77, 0 489 486 } ; 490 487 … … 499 496 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 500 497 42, 11, 43, 11, 11, 44, 11, 45, 11, 46, 501 11, 47, 48, 49, 50, 11, 11, 51, 11, 11,502 5 2, 53, 54, 55, 56, 57, 58, 59, 60, 61,503 504 6 2, 63, 64, 65, 66, 11, 67, 68, 69, 70,505 7 1, 72, 11, 73, 74, 75, 76, 77, 78, 79,506 80, 81, 82, 83, 84, 85, 1, 1, 1, 1,498 11, 11, 47, 48, 49, 11, 11, 50, 11, 11, 499 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 500 501 61, 62, 63, 64, 65, 11, 66, 67, 68, 69, 502 70, 71, 11, 72, 73, 74, 75, 76, 77, 78, 503 79, 80, 81, 82, 83, 84, 1, 1, 1, 1, 507 504 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 508 505 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, … … 521 518 } ; 522 519 523 static yyconst flex_int32_t yy_meta[8 6] =520 static yyconst flex_int32_t yy_meta[85] = 524 521 { 0, 525 522 1, 1, 2, 1, 1, 1, 1, 1, 3, 1, 526 523 4, 1, 1, 5, 1, 1, 1, 1, 1, 1, 527 524 6, 1, 7, 7, 7, 7, 7, 7, 1, 1, 528 1, 8, 1, 1, 1, 9, 9, 9, 9, 9,529 9, 4, 4, 10, 4, 11, 4, 4, 4, 10,530 4, 1, 12, 1, 1, 13, 1, 9, 9, 9,531 9, 9, 9, 4, 4, 4, 4, 10, 4, 4,532 4, 11, 4, 4, 4, 10, 4, 4, 4, 4,533 4,1, 1, 1, 1525 1, 1, 1, 1, 1, 8, 8, 8, 8, 8, 526 8, 4, 4, 9, 4, 10, 4, 4, 9, 4, 527 1, 11, 1, 1, 12, 1, 8, 8, 8, 8, 528 8, 8, 4, 4, 4, 4, 9, 4, 4, 4, 529 10, 4, 4, 4, 9, 4, 4, 4, 4, 4, 530 1, 1, 1, 1 534 531 } ; 535 532 536 static yyconst flex_int16_t yy_base[ 1025] =533 static yyconst flex_int16_t yy_base[999] = 537 534 { 0, 538 0, 84, 2247, 2245, 94, 0, 177, 178, 179, 180, 539 2259, 2762, 191, 2762, 197, 55, 2762, 2203, 60, 173, 540 2762, 2762, 2762, 56, 188, 2762, 191, 189, 204, 216, 541 275, 0, 2222, 2762, 216, 2222, 152, 344, 155, 220, 542 2762, 159, 2762, 217, 226, 2762, 185, 154, 212, 251, 543 237, 270, 235, 257, 241, 193, 305, 314, 333, 238, 544 228, 2762, 225, 2762, 2218, 402, 390, 2762, 2227, 2762, 545 2193, 204, 2762, 0, 2762, 426, 0, 2762, 417, 2762, 546 439, 451, 2762, 498, 2192, 235, 2762, 2762, 2762, 2762, 547 2762, 2210, 2762, 2208, 2762, 2762, 2218, 559, 2762, 2235, 548 549 2762, 605, 413, 498, 516, 289, 253, 197, 293, 305, 550 0, 319, 280, 231, 334, 2762, 2762, 2762, 2205, 2762, 551 2762, 2762, 2203, 2200, 298, 356, 2213, 366, 429, 439, 552 398, 434, 438, 448, 2194, 443, 2143, 459, 2172, 2762, 553 335, 2762, 2762, 495, 2166, 2163, 2762, 2136, 460, 282, 554 297, 329, 409, 437, 442, 281, 503, 414, 474, 372, 555 484, 493, 378, 434, 433, 325, 494, 459, 499, 492, 556 502, 509, 461, 301, 515, 535, 2164, 536, 520, 538, 557 544, 541, 545, 567, 539, 421, 554, 563, 597, 570, 558 571, 548, 2762, 2762, 652, 662, 2212, 668, 2762, 674, 559 560 2762, 2159, 567, 2153, 2152, 0, 645, 2762, 2762, 680, 561 2151, 2149, 2146, 0, 2167, 466, 640, 646, 689, 688, 562 650, 678, 679, 682, 2164, 685, 692, 2141, 2139, 2762, 563 714, 707, 2762, 2136, 2186, 2762, 703, 0, 697, 760, 564 766, 779, 801, 696, 2762, 2144, 2119, 0, 787, 2164, 565 825, 698, 2762, 2138, 2111, 841, 2762, 2762, 2144, 2762, 566 2762, 717, 718, 2123, 2122, 719, 2099, 2097, 2096, 0, 567 2093, 0, 2062, 585, 589, 704, 610, 675, 703, 540, 568 706, 707, 743, 726, 720, 745, 787, 709, 748, 715, 569 756, 759, 2092, 761, 781, 792, 817, 785, 791, 808, 570 571 788, 818, 819, 807, 822, 821, 820, 832, 833, 834, 572 835, 837, 838, 843, 845, 2091, 276, 847, 850, 846, 573 849, 851, 852, 855, 853, 854, 856, 865, 2089, 867, 574 904, 866, 873, 197, 874, 870, 938, 939, 2083, 2080, 575 2079, 0, 2078, 0, 926, 930, 2076, 0, 2073, 0, 576 2070, 0, 2091, 2762, 901, 912, 2070, 2066, 0, 2063, 577 0, 935, 942, 953, 964, 976, 989, 998, 2762, 2762, 578 939, 962, 1014, 987, 1023, 928, 1041, 1005, 2762, 2762, 579 2060, 2059, 2058, 0, 2056, 0, 2053, 0, 2052, 0, 580 2762, 911, 940, 976, 966, 881, 1003, 944, 1000, 974, 581 582 941, 1015, 1018, 1019, 1021, 1006, 1025, 1027, 1039, 1041, 583 1012, 1046, 1048, 2054, 1047, 2052, 975, 2049, 1050, 1051, 584 1057, 1052, 1053, 1054, 1058, 2048, 1068, 2047, 1072, 1055, 585 1074, 1076, 1078, 1079, 1081, 2045, 1080, 2042, 1082, 1085, 586 1084, 1087, 1086, 1091, 1094, 1088, 1095, 1096, 588, 1109, 587 1111, 1110, 2038, 1113, 1114, 1166, 2031, 0, 2029, 0, 588 2027, 0, 2024, 0, 1159, 2022, 0, 2020, 0, 2017, 589 2014, 2013, 0, 2012, 0, 1166, 1172, 1218, 1131, 1229, 590 1155, 1132, 1129, 2762, 1235, 1242, 1253, 2022, 1995, 2004, 591 2003, 0, 2002, 0, 2000, 0, 1997, 0, 1994, 0, 592 593 1993, 0, 1149, 1120, 1995, 1153, 1159, 1164, 1156, 1167, 594 1165, 1161, 233, 1211, 1219, 1162, 1186, 1229, 1173, 1185, 595 166, 1235, 1236, 1222, 1237, 1242, 1993, 1249, 1241, 1990, 596 1171, 1248, 1240, 1251, 1253, 1987, 1254, 1256, 1259, 1260, 597 1986, 1261, 1264, 1985, 1268, 1270, 1267, 1272, 1274, 1983, 598 1278, 921, 1280, 1281, 1282, 1290, 1283, 1288, 1980, 1293, 599 1295, 1977, 2026, 1972, 0, 1970, 0, 1967, 0, 1964, 600 0, 1963, 0, 1962, 0, 1960, 0, 1957, 0, 1341, 601 1347, 1354, 1365, 1954, 2762, 1377, 2762, 1388, 2762, 1953, 602 0, 1952, 0, 1950, 0, 1947, 0, 0, 0, 1949, 603 604 0, 1366, 1297, 1296, 1333, 1306, 1331, 1300, 1301, 1353, 605 1115, 1343, 1367, 1355, 1372, 1373, 1299, 1383, 1402, 1375, 606 1381, 1385, 1378, 1386, 1388, 1948, 1393, 1399, 1404, 1405, 607 1946, 1943, 1942, 1407, 1406, 1941, 1411, 1939, 1906, 1409, 608 1334, 1904, 1903, 1900, 1897, 1896, 1895, 1410, 1413, 1893, 609 1412, 1416, 1940, 2762, 1884, 0, 1883, 0, 0, 0, 610 1885, 0, 0, 0, 2762, 0, 0, 0, 0, 1464, 611 1470, 1516, 1880, 0, 1877, 0, 0, 0, 0, 1876, 612 1425, 1420, 1878, 1424, 1447, 1448, 1429, 1456, 1457, 1451, 613 1876, 1462, 1463, 1475, 1471, 1493, 1481, 1494, 1496, 1495, 614 615 1497, 1499, 1466, 1500, 1483, 1873, 1502, 1872, 1871, 1482, 616 1869, 1866, 1501, 1506, 1508, 1862, 1509, 1514, 0, 0, 617 1855, 1851, 1835, 1834, 1560, 0, 1833, 1831, 1828, 1827, 618 1826, 1827, 1824, 1823, 1822, 1516, 1520, 1522, 1417, 1515, 619 1518, 1512, 1539, 1540, 1552, 1820, 1543, 1817, 1544, 1548, 620 1551, 1556, 1545, 1526, 1816, 1815, 1813, 1810, 1550, 1809, 621 1808, 1803, 1800, 1799, 1798, 1796, 1793, 1792, 1791, 1789, 622 1786, 1785, 1784, 1557, 1785, 1558, 1562, 1561, 1565, 1566, 623 1782, 1567, 1594, 1571, 1781, 1570, 1572, 1578, 1577, 1582, 624 1583, 1777, 1775, 1768, 1766, 1765, 1762, 1761, 1760, 1758, 625 626 1741, 1732, 1731, 1728, 1724, 1576, 1588, 1590, 1591, 1601, 627 1589, 1721, 1714, 1602, 1712, 1711, 1607, 1603, 1608, 1687, 628 1686, 1685, 1678, 1676, 1675, 1633, 1632, 1609, 1611, 1632, 629 1619, 1626, 1620, 1621, 1625, 1596, 1477, 1462, 1152, 1613, 630 1614, 1627, 1631, 1119, 1016, 1615, 762, 725, 676, 549, 631 2762, 1690, 1703, 1716, 1726, 1736, 1749, 1759, 1772, 1785, 632 1798, 1806, 1816, 1823, 1830, 1837, 1844, 1851, 1858, 1865, 633 1872, 1879, 1892, 1899, 1903, 1911, 1914, 1921, 1928, 1935, 634 1938, 1945, 1951, 1964, 1977, 1984, 1991, 1998, 2005, 2008, 635 2015, 2018, 2025, 2028, 2035, 2038, 2045, 2048, 2055, 2058, 636 637 2065, 2068, 2075, 2083, 2090, 2097, 2104, 2111, 2114, 2121, 638 2124, 2131, 2134, 2141, 2147, 2160, 2167, 2174, 2177, 2184, 639 2187, 2194, 2197, 2204, 2207, 2214, 2217, 2224, 2227, 2234, 640 2241, 2244, 2251, 2254, 2261, 2268, 2275, 2278, 2285, 2288, 641 2295, 2298, 2305, 2308, 2315, 2318, 2325, 2331, 2344, 2351, 642 2358, 2361, 2368, 2371, 2378, 2381, 2388, 2391, 2398, 2401, 643 2408, 2411, 2418, 2421, 2428, 2431, 2438, 2445, 2448, 2455, 644 2458, 2465, 2468, 2475, 2478, 2481, 2487, 2494, 2503, 2510, 645 2517, 2520, 2527, 2530, 2533, 2539, 2546, 2549, 2552, 2555, 646 2558, 2561, 2564, 2567, 2574, 2577, 2584, 2587, 2590, 2593, 647 648 2596, 2606, 2613, 2616, 2619, 2626, 2633, 2640, 2643, 2650, 649 2657, 2664, 2671, 2678, 2685, 2692, 2699, 2706, 2713, 2720, 650 2727, 2734, 2741, 2748 535 0, 83, 2266, 2265, 93, 0, 175, 176, 177, 178, 536 2281, 2568, 189, 2568, 195, 54, 2568, 2223, 59, 171, 537 2568, 2568, 2568, 55, 186, 2568, 189, 187, 202, 214, 538 272, 0, 2241, 2568, 214, 2241, 150, 340, 2215, 222, 539 2568, 157, 2568, 2234, 277, 2568, 192, 133, 196, 198, 540 204, 271, 155, 218, 181, 200, 266, 238, 337, 224, 541 227, 2568, 223, 2568, 2231, 372, 400, 2568, 2237, 2568, 542 2206, 213, 2568, 0, 2568, 427, 0, 2568, 363, 2568, 543 381, 393, 2568, 498, 2205, 229, 2568, 2568, 2568, 2568, 544 2568, 2217, 2568, 2216, 2568, 2568, 2228, 558, 2568, 2240, 545 546 2568, 603, 385, 443, 419, 259, 239, 280, 399, 406, 547 0, 305, 240, 335, 411, 2568, 2568, 2568, 2210, 2568, 548 2568, 2568, 2209, 2188, 215, 277, 2203, 310, 383, 384, 549 327, 425, 380, 399, 2180, 448, 2130, 458, 2160, 288, 550 2568, 2568, 486, 2151, 2150, 2568, 420, 423, 439, 456, 551 445, 455, 460, 329, 483, 469, 462, 467, 480, 494, 552 396, 471, 472, 487, 470, 513, 489, 506, 508, 509, 553 386, 510, 516, 2152, 520, 522, 518, 541, 526, 543, 554 540, 551, 549, 553, 565, 598, 572, 581, 557, 2568, 555 2568, 669, 659, 2195, 686, 2568, 692, 2568, 2145, 559, 556 557 2141, 2135, 0, 649, 2568, 2568, 679, 2134, 2133, 2127, 558 0, 2149, 535, 606, 607, 674, 635, 625, 646, 664, 559 689, 2146, 692, 693, 2119, 2118, 2568, 712, 723, 2568, 560 2117, 2165, 2568, 714, 0, 555, 705, 759, 765, 776, 561 593, 2568, 2123, 2099, 0, 784, 2141, 787, 632, 2568, 562 2116, 2087, 798, 2568, 2568, 2119, 2568, 2568, 710, 725, 563 2099, 2094, 720, 2090, 2089, 2085, 0, 2084, 0, 712, 564 548, 710, 766, 767, 597, 745, 711, 777, 764, 788, 565 720, 783, 792, 713, 639, 789, 611, 793, 2086, 794, 566 791, 795, 810, 800, 805, 813, 814, 361, 818, 815, 567 568 816, 821, 825, 822, 826, 828, 829, 836, 838, 2080, 569 841, 842, 843, 839, 844, 845, 846, 849, 847, 853, 570 855, 860, 2079, 859, 905, 864, 866, 872, 870, 871, 571 933, 930, 2075, 2069, 2068, 0, 2067, 0, 920, 924, 572 2061, 0, 2060, 0, 2059, 0, 2074, 2568, 919, 920, 573 2054, 2051, 0, 2045, 0, 935, 941, 953, 963, 974, 574 986, 996, 2568, 2568, 960, 961, 1013, 989, 1047, 926, 575 1045, 968, 2568, 2568, 2044, 2043, 2037, 0, 2036, 0, 576 2035, 0, 2014, 0, 874, 873, 987, 903, 931, 932, 577 984, 920, 994, 995, 974, 976, 1009, 1024, 1017, 992, 578 579 1029, 1027, 952, 1030, 1034, 1040, 2016, 1031, 2011, 1047, 580 2010, 1049, 1043, 1054, 1038, 1056, 1057, 2009, 2003, 1052, 581 1058, 1062, 1069, 1073, 1074, 1075, 2002, 1076, 2001, 1078, 582 1079, 1082, 1083, 1085, 1081, 1086, 1092, 1089, 1099, 583, 583 1108, 1095, 1087, 1995, 1097, 1109, 1160, 1991, 0, 1990, 584 0, 1984, 0, 1983, 0, 1149, 1982, 0, 1978, 0, 585 1977, 1976, 1972, 0, 1971, 0, 1156, 1162, 1207, 1121, 586 1218, 1149, 1120, 1144, 2568, 1224, 1230, 1241, 1981, 1954, 587 1959, 1957, 0, 1953, 0, 1951, 0, 1945, 0, 1944, 588 0, 1943, 0, 1125, 1144, 1940, 1146, 1149, 1147, 1153, 589 590 1150, 1218, 1162, 1110, 1156, 1155, 1164, 1211, 1224, 1225, 591 1226, 164, 1228, 1208, 1170, 1232, 1238, 1939, 1938, 1235, 592 1932, 1227, 1231, 1234, 1242, 1931, 1246, 1247, 1250, 1930, 593 1252, 1255, 1924, 1257, 1261, 1254, 1256, 1258, 1923, 1264, 594 709, 1271, 1262, 1268, 1922, 1273, 1277, 1916, 1274, 1279, 595 1915, 1963, 1905, 0, 1904, 0, 1903, 0, 1897, 0, 596 1896, 0, 1895, 0, 1891, 0, 1890, 0, 1322, 1328, 597 1334, 1345, 1889, 2568, 1356, 2568, 1380, 2568, 1885, 0, 598 1884, 0, 1883, 0, 1850, 0, 0, 0, 1852, 0, 599 1342, 1281, 1315, 1322, 1333, 1289, 1283, 1338, 1340, 1336, 600 601 1361, 1343, 1341, 1362, 1364, 1365, 1367, 1397, 1373, 1314, 602 1376, 1375, 1377, 1847, 1378, 1380, 1382, 1846, 1845, 1381, 603 1387, 1839, 1389, 1838, 1837, 1396, 1391, 1833, 1832, 1831, 604 1827, 1826, 1825, 1392, 1818, 1407, 1394, 1846, 2568, 1793, 605 0, 1792, 0, 0, 0, 1791, 0, 0, 0, 2568, 606 0, 0, 0, 0, 1446, 1452, 1497, 1787, 0, 1786, 607 0, 0, 0, 0, 1782, 1408, 1430, 1784, 1410, 1432, 608 1437, 1411, 1412, 1443, 1433, 1783, 1447, 1445, 1457, 1413, 609 1476, 1463, 1450, 1477, 1475, 1474, 1480, 1479, 1481, 1779, 610 1482, 1778, 1483, 1777, 1773, 1464, 1485, 1772, 1490, 1486, 611 612 0, 0, 1768, 1764, 1763, 1762, 1537, 0, 1758, 1757, 613 1756, 1752, 1751, 1753, 1749, 1748, 1747, 1496, 1497, 1499, 614 1502, 1493, 1492, 1501, 1518, 1519, 1547, 1738, 1522, 1737, 615 1523, 1458, 1528, 1530, 1524, 1734, 1733, 1732, 1715, 1707, 616 1706, 1700, 1694, 1691, 1683, 1682, 1663, 1662, 1661, 1653, 617 1652, 1613, 1612, 1529, 1614, 1534, 1535, 1538, 1536, 1542, 618 1613, 1543, 1562, 1546, 1612, 1544, 1548, 1554, 1550, 1608, 619 1607, 1606, 1605, 1604, 1603, 1602, 1601, 1600, 1598, 1597, 620 1567, 1566, 1505, 1552, 1560, 1565, 1563, 1571, 1564, 1286, 621 1285, 1575, 1188, 1158, 1576, 1001, 997, 950, 901, 753, 622 623 752, 642, 556, 1577, 1580, 519, 1584, 475, 1588, 1589, 624 1590, 471, 407, 1582, 1583, 1594, 1596, 353, 298, 1595, 625 274, 234, 233, 165, 2568, 1669, 1681, 1693, 1702, 1711, 626 1723, 1732, 1744, 1756, 1768, 1775, 1784, 1790, 1796, 1802, 627 1808, 1814, 1820, 1826, 1832, 1838, 1850, 1856, 1859, 1866, 628 1868, 1874, 1880, 1886, 1888, 1894, 1899, 1911, 1923, 1929, 629 1935, 1941, 1947, 1949, 1955, 1957, 1963, 1965, 1971, 1973, 630 1979, 1981, 1987, 1989, 1995, 1997, 2003, 2010, 2016, 2022, 631 2028, 2034, 2036, 2042, 2044, 2050, 2052, 2058, 2063, 2075, 632 2081, 2087, 2089, 2095, 2097, 2103, 2105, 2111, 2113, 2119, 633 634 2121, 2127, 2129, 2135, 2141, 2143, 2149, 2151, 2157, 2163, 635 2169, 2171, 2177, 2179, 2185, 2187, 2193, 2195, 2201, 2203, 636 2209, 2214, 2226, 2232, 2238, 2240, 2246, 2248, 2254, 2256, 637 2262, 2264, 2270, 2272, 2278, 2280, 2286, 2288, 2294, 2296, 638 2302, 2308, 2310, 2316, 2318, 2324, 2326, 2332, 2334, 2336, 639 2341, 2347, 2355, 2361, 2367, 2369, 2375, 2377, 2379, 2384, 640 2390, 2392, 2394, 2396, 2398, 2400, 2402, 2404, 2410, 2412, 641 2418, 2420, 2422, 2424, 2426, 2435, 2441, 2443, 2445, 2451, 642 2457, 2463, 2465, 2471, 2477, 2483, 2489, 2495, 2501, 2507, 643 2513, 2519, 2525, 2531, 2537, 2543, 2549, 2555 644 651 645 } ; 652 646 653 static yyconst flex_int16_t yy_def[ 1025] =647 static yyconst flex_int16_t yy_def[999] = 654 648 { 0, 655 851, 1, 852, 852, 851, 5, 853, 853, 854, 854, 656 851, 851, 851, 851, 851, 851, 851, 855, 851, 851, 657 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 658 851, 31, 851, 851, 851, 851, 851, 851, 856, 855, 659 851, 851, 851, 851, 855, 851, 855, 855, 855, 855, 660 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 661 855, 851, 851, 851, 851, 851, 857, 851, 851, 851, 662 858, 851, 851, 859, 851, 851, 860, 851, 851, 851, 663 851, 851, 851, 851, 855, 851, 851, 851, 851, 851, 664 851, 851, 851, 851, 851, 851, 851, 851, 851, 861, 665 666 851, 851, 30, 851, 851, 851, 851, 862, 30, 851, 667 31, 851, 851, 31, 851, 851, 851, 851, 851, 851, 668 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 669 851, 851, 851, 851, 851, 851, 851, 851, 863, 851, 670 851, 851, 851, 855, 864, 865, 851, 851, 855, 855, 671 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 672 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 673 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 674 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 675 855, 855, 851, 851, 851, 857, 857, 857, 851, 857, 676 677 851, 858, 851, 866, 867, 859, 851, 851, 851, 851, 678 868, 869, 870, 860, 851, 851, 851, 851, 851, 851, 679 851, 851, 851, 851, 851, 851, 851, 871, 872, 851, 680 851, 851, 851, 231, 873, 851, 851, 103, 103, 851, 681 851, 851, 851, 851, 851, 851, 851, 874, 875, 876, 682 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 683 851, 851, 851, 851, 863, 851, 877, 878, 879, 880, 684 881, 882, 851, 883, 883, 883, 883, 883, 883, 883, 685 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 686 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 687 688 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 689 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 690 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 691 883, 883, 883, 883, 883, 883, 884, 885, 886, 887, 692 888, 889, 890, 891, 851, 851, 892, 893, 894, 895, 693 896, 897, 851, 851, 851, 851, 851, 898, 899, 900, 694 901, 851, 851, 851, 851, 851, 851, 851, 851, 851, 695 902, 903, 904, 851, 851, 851, 904, 851, 851, 851, 696 905, 906, 907, 908, 909, 910, 911, 912, 913, 914, 697 851, 915, 915, 915, 915, 915, 915, 915, 915, 915, 698 699 915, 915, 915, 915, 915, 915, 915, 915, 915, 915, 700 915, 915, 915, 915, 915, 915, 915, 915, 915, 915, 701 915, 915, 915, 915, 915, 915, 915, 915, 915, 915, 702 915, 915, 915, 915, 915, 915, 915, 915, 915, 915, 703 915, 915, 915, 915, 915, 915, 915, 915, 915, 915, 704 915, 915, 915, 915, 915, 916, 917, 918, 919, 920, 705 921, 922, 923, 924, 851, 925, 926, 927, 928, 929, 706 929, 930, 931, 932, 933, 851, 851, 851, 934, 851, 707 934, 851, 851, 851, 851, 851, 851, 851, 851, 935, 708 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 709 710 946, 947, 948, 948, 948, 948, 948, 948, 948, 948, 711 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 712 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 713 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 714 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 715 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 716 948, 948, 949, 950, 951, 952, 953, 954, 955, 956, 717 957, 958, 959, 960, 961, 962, 963, 964, 965, 851, 718 851, 851, 851, 966, 851, 851, 851, 851, 851, 967, 719 968, 969, 970, 971, 972, 973, 974, 975, 976, 977, 720 721 978, 977, 977, 977, 977, 977, 977, 977, 977, 977, 722 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 723 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 724 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 725 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 726 977, 977, 979, 851, 980, 981, 982, 983, 984, 985, 727 986, 987, 988, 989, 851, 990, 991, 992, 993, 851, 728 851, 851, 994, 995, 996, 997, 998, 999, 1000, 1001, 729 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 730 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 731 732 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 733 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1003, 1004, 734 982, 1005, 1006, 1007, 851, 1008, 994, 996, 1009, 1010, 735 1001, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 736 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 737 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 738 1002, 1011, 1012, 1005, 1013, 1006, 1014, 1007, 1015, 1016, 739 1009, 1017, 1010, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 740 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 741 1002, 1018, 1011, 1019, 1012, 1020, 1013, 1021, 1014, 1022, 742 743 1015, 1023, 1016, 1017, 1002, 1002, 1002, 1002, 1002, 1002, 744 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1024, 745 1018, 1019, 1020, 1021, 996, 1022, 1023, 1002, 1002, 1002, 746 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1024, 996, 1002, 747 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 748 0, 851, 851, 851, 851, 851, 851, 851, 851, 851, 749 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 750 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 751 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 752 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 753 754 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 755 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 756 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 757 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 758 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 759 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 760 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 761 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 762 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 763 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 764 765 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 766 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 767 851, 851, 851, 851 649 825, 1, 826, 826, 825, 5, 827, 827, 828, 828, 650 825, 825, 825, 825, 825, 825, 825, 829, 825, 825, 651 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 652 825, 31, 825, 825, 825, 825, 825, 825, 830, 829, 653 825, 825, 825, 825, 829, 825, 829, 829, 829, 829, 654 829, 829, 829, 829, 829, 829, 829, 829, 829, 829, 655 829, 825, 825, 825, 825, 825, 831, 825, 825, 825, 656 832, 825, 825, 833, 825, 825, 834, 825, 825, 825, 657 825, 825, 825, 825, 829, 825, 825, 825, 825, 825, 658 825, 825, 825, 825, 825, 825, 825, 825, 825, 835, 659 660 825, 825, 30, 825, 825, 825, 825, 836, 30, 825, 661 31, 825, 825, 31, 825, 825, 825, 825, 825, 825, 662 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 663 825, 825, 825, 825, 825, 825, 825, 825, 837, 825, 664 825, 825, 829, 838, 839, 825, 829, 829, 829, 829, 665 829, 829, 829, 829, 829, 829, 829, 829, 829, 829, 666 829, 829, 829, 829, 829, 829, 829, 829, 829, 829, 667 829, 829, 829, 829, 829, 829, 829, 829, 829, 829, 668 829, 829, 829, 829, 829, 829, 829, 829, 829, 825, 669 825, 825, 831, 831, 831, 825, 831, 825, 832, 825, 670 671 840, 841, 833, 825, 825, 825, 825, 842, 843, 844, 672 834, 825, 825, 825, 825, 825, 825, 825, 825, 825, 673 825, 825, 825, 825, 845, 846, 825, 825, 825, 825, 674 228, 847, 825, 825, 103, 103, 825, 825, 825, 825, 675 825, 825, 825, 825, 848, 849, 850, 825, 825, 825, 676 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 677 825, 837, 825, 851, 852, 853, 854, 855, 856, 857, 678 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 679 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 680 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 681 682 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 683 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 684 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 685 858, 859, 860, 861, 862, 863, 864, 865, 825, 825, 686 866, 867, 868, 869, 870, 871, 825, 825, 825, 825, 687 825, 872, 873, 874, 875, 825, 825, 825, 825, 825, 688 825, 825, 825, 825, 876, 877, 878, 825, 825, 825, 689 878, 825, 825, 825, 879, 880, 881, 882, 883, 884, 690 885, 886, 887, 888, 889, 889, 889, 889, 889, 889, 691 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 692 693 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 694 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 695 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 696 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 697 889, 889, 889, 889, 889, 889, 890, 891, 892, 893, 698 894, 895, 896, 897, 898, 825, 899, 900, 901, 902, 699 903, 903, 904, 905, 906, 907, 825, 825, 825, 908, 700 825, 908, 825, 825, 825, 825, 825, 825, 825, 825, 701 909, 910, 911, 912, 913, 914, 915, 916, 917, 918, 702 919, 920, 921, 922, 922, 922, 922, 922, 922, 922, 703 704 922, 922, 922, 922, 922, 922, 922, 922, 922, 922, 705 922, 922, 922, 922, 922, 922, 922, 922, 922, 922, 706 922, 922, 922, 922, 922, 922, 922, 922, 922, 922, 707 922, 922, 922, 922, 922, 922, 922, 922, 922, 922, 708 922, 922, 922, 922, 922, 922, 922, 922, 922, 922, 709 922, 923, 924, 925, 926, 927, 928, 929, 930, 931, 710 932, 933, 934, 935, 936, 937, 938, 939, 825, 825, 711 825, 825, 940, 825, 825, 825, 825, 825, 941, 942, 712 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 713 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 714 715 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 716 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 717 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 718 951, 951, 951, 951, 951, 951, 951, 953, 825, 954, 719 955, 956, 957, 958, 959, 960, 961, 962, 963, 825, 720 964, 965, 966, 967, 825, 825, 825, 968, 969, 970, 721 971, 972, 973, 974, 975, 976, 976, 976, 976, 976, 722 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 723 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 724 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 725 726 977, 978, 956, 979, 980, 981, 825, 982, 968, 970, 727 983, 984, 975, 976, 976, 976, 976, 976, 976, 976, 728 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 729 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 730 976, 985, 986, 979, 987, 980, 988, 981, 989, 990, 731 983, 991, 984, 976, 976, 976, 976, 976, 976, 976, 732 976, 976, 976, 976, 976, 976, 976, 976, 976, 992, 733 985, 993, 986, 994, 987, 995, 988, 996, 989, 997, 734 990, 991, 976, 976, 976, 976, 976, 976, 976, 976, 735 976, 976, 976, 976, 976, 998, 992, 993, 994, 995, 736 737 970, 996, 997, 976, 976, 976, 976, 976, 976, 976, 738 976, 998, 970, 976, 976, 976, 976, 976, 976, 976, 739 976, 976, 976, 976, 0, 825, 825, 825, 825, 825, 740 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 741 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 742 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 743 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 744 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 745 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 746 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 747 748 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 749 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 750 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 751 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 752 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 753 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 754 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 755 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 756 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 757 825, 825, 825, 825, 825, 825, 825, 825 758 768 759 } ; 769 760 770 static yyconst flex_int16_t yy_nxt[2 848] =761 static yyconst flex_int16_t yy_nxt[2653] = 771 762 { 0, 772 763 12, 13, 14, 15, 15, 15, 13, 16, 17, 12, … … 774 765 28, 29, 30, 31, 32, 32, 32, 32, 33, 34, 775 766 35, 36, 37, 38, 39, 18, 18, 18, 18, 18, 776 18, 18, 18, 40, 18, 18, 18, 18, 18, 40,777 18, 41, 42, 43, 44, 45, 46, 47, 48, 49,778 5 0, 51, 52, 53, 18, 54, 18, 55, 18, 18,779 18, 18, 56, 57, 58, 59, 60, 61, 18, 18,780 18, 62, 63, 64, 65, 66, 83, 91, 84, 84,781 66, 87, 88, 67, 70, 70, 70, 70, 70, 70,782 783 70, 70, 70, 7 0, 71, 70, 70, 70, 70, 70,767 18, 18, 18, 40, 18, 18, 18, 18, 40, 18, 768 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 769 51, 52, 53, 18, 54, 18, 55, 18, 18, 18, 770 18, 56, 57, 58, 59, 60, 61, 18, 18, 18, 771 62, 63, 64, 65, 66, 83, 91, 84, 84, 66, 772 87, 88, 67, 70, 70, 70, 70, 70, 70, 70, 773 774 70, 70, 70, 71, 70, 70, 70, 70, 70, 70, 784 775 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 785 70, 70, 70, 70, 70, 70, 70, 70, 7 0, 71,776 70, 70, 70, 70, 70, 70, 70, 70, 71, 71, 786 777 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 787 71, 71, 71, 71, 71, 70, 72, 70, 70, 71, 788 73, 71, 71, 71, 71, 71, 71, 71, 71, 71, 778 71, 71, 71, 70, 72, 70, 70, 71, 73, 71, 789 779 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 790 71, 71, 71, 71, 71, 70, 70, 70, 70, 75, 791 75, 78, 78, 122, 123, 89, 140, 78, 78, 619, 792 75, 75, 79, 80, 81, 81, 81, 79, 81, 80, 793 794 82, 82, 82, 81, 90, 92, 86, 141, 145, 97, 795 94, 98, 98, 98, 98, 98, 98, 248, 86, 93, 796 99, 84, 95, 96, 84, 100, 160, 117, 142, 76, 797 76, 76, 76, 143, 146, 101, 102, 86, 103, 103, 798 103, 103, 104, 104, 118, 86, 119, 120, 147, 86, 799 148, 851, 250, 204, 181, 105, 193, 453, 158, 106, 800 159, 149, 150, 151, 86, 107, 108, 152, 153, 161, 801 154, 109, 86, 155, 156, 144, 162, 105, 86, 205, 802 86, 157, 163, 110, 228, 86, 256, 86, 611, 86, 803 86, 107, 192, 86, 108, 102, 246, 111, 111, 111, 804 805 111, 111, 111, 86, 168, 176, 169, 194, 191, 86, 806 229, 179, 164, 851, 105, 170, 165, 180, 112, 177, 807 247, 166, 86, 254, 113, 167, 178, 171, 86, 259, 808 114, 260, 244, 86, 86, 172, 105, 173, 245, 438, 809 174, 142, 115, 851, 175, 282, 143, 255, 251, 86, 810 113, 124, 276, 86, 245, 125, 126, 86, 127, 189, 811 128, 129, 252, 130, 245, 131, 86, 277, 253, 182, 812 183, 851, 244, 312, 132, 133, 134, 86, 186, 184, 813 245, 86, 185, 253, 267, 86, 187, 259, 144, 260, 814 278, 198, 199, 188, 253, 135, 198, 259, 136, 260, 815 816 303, 252, 190, 195, 80, 81, 81, 81, 195, 253, 817 268, 196, 200, 200, 200, 200, 200, 200, 79, 80, 818 81, 81, 81, 79, 86, 137, 138, 207, 208, 259, 819 86, 260, 207, 295, 209, 238, 238, 238, 238, 209, 820 81, 80, 81, 81, 81, 81, 261, 300, 210, 210, 821 210, 210, 81, 80, 82, 82, 82, 81, 261, 209, 822 259, 86, 260, 851, 262, 259, 86, 260, 239, 259, 823 259, 260, 260, 86, 259, 211, 260, 279, 209, 259, 824 263, 260, 293, 209, 209, 86, 86, 209, 209, 86, 825 259, 851, 260, 328, 86, 209, 301, 353, 209, 354, 826 827 209, 212, 209, 142, 213, 215, 302, 280, 143, 216, 828 217, 86, 86, 86, 218, 219, 281, 220, 102, 221, 829 104, 104, 104, 104, 104, 104, 86, 274, 222, 223, 830 224, 311, 305, 241, 275, 241, 86, 105, 242, 242, 831 242, 242, 242, 242, 86, 86, 86, 86, 294, 225, 832 298, 86, 226, 240, 86, 86, 306, 296, 297, 105, 833 283, 86, 284, 299, 285, 286, 308, 86, 287, 309, 834 288, 243, 86, 304, 307, 289, 290, 291, 310, 292, 835 227, 231, 231, 231, 231, 231, 231, 86, 86, 317, 836 86, 86, 86, 86, 313, 318, 86, 86, 232, 233, 837 838 86, 86, 233, 315, 327, 142, 86, 319, 323, 314, 839 316, 322, 398, 336, 234, 86, 339, 320, 321, 86, 840 232, 233, 86, 86, 325, 324, 233, 98, 98, 98, 841 98, 98, 98, 329, 330, 332, 334, 86, 335, 326, 842 86, 86, 340, 333, 232, 233, 207, 208, 233, 86, 843 392, 207, 331, 195, 80, 81, 81, 81, 195, 393, 844 237, 196, 86, 198, 199, 556, 232, 233, 198, 198, 845 199, 353, 233, 354, 198, 337, 199, 353, 395, 354, 846 337, 353, 338, 354, 200, 200, 200, 200, 200, 200, 847 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 848 849 200, 200, 345, 345, 345, 345, 354, 354, 355, 353, 850 353, 354, 354, 353, 356, 354, 353, 851, 354, 353, 851 353, 354, 354, 353, 362, 354, 362, 86, 86, 363, 852 363, 363, 363, 363, 363, 346, 231, 231, 231, 231, 853 231, 231, 232, 233, 396, 369, 233, 379, 259, 259, 854 260, 260, 366, 232, 233, 86, 86, 233, 86, 86, 855 397, 86, 364, 399, 232, 233, 409, 86, 381, 234, 856 233, 369, 86, 379, 394, 232, 233, 86, 86, 400, 857 411, 233, 104, 104, 104, 104, 104, 104, 242, 242, 858 242, 242, 242, 242, 382, 86, 404, 86, 405, 105, 859 860 86, 367, 367, 367, 367, 367, 367, 372, 86, 410, 861 401, 86, 406, 86, 86, 251, 402, 403, 241, 233, 862 241, 105, 233, 242, 242, 242, 242, 242, 242, 413, 863 374, 414, 375, 86, 368, 412, 376, 86, 415, 86, 864 86, 233, 377, 86, 86, 422, 233, 104, 104, 104, 865 104, 104, 104, 416, 378, 407, 408, 418, 375, 86, 866 86, 419, 376, 111, 111, 111, 111, 111, 111, 86, 867 86, 86, 86, 86, 86, 423, 417, 424, 425, 427, 868 251, 420, 421, 426, 86, 86, 86, 86, 428, 86, 869 86, 431, 432, 429, 433, 86, 256, 86, 86, 86, 870 871 430, 86, 86, 86, 86, 86, 86, 86, 86, 435, 872 437, 434, 142, 436, 439, 440, 445, 86, 86, 86, 873 441, 444, 86, 443, 442, 86, 86, 446, 450, 447, 874 448, 454, 353, 86, 354, 449, 451, 455, 452, 337, 875 199, 199, 507, 353, 337, 354, 338, 197, 209, 209, 876 209, 209, 345, 345, 345, 345, 86, 363, 363, 363, 877 363, 363, 363, 86, 476, 476, 476, 476, 476, 476, 878 362, 488, 362, 86, 503, 363, 363, 363, 363, 363, 879 363, 465, 233, 644, 480, 233, 231, 231, 231, 231, 880 231, 231, 86, 86, 481, 489, 86, 477, 238, 238, 881 882 238, 238, 104, 104, 233, 509, 512, 480, 504, 233, 883 480, 367, 367, 367, 367, 367, 367, 482, 86, 365, 884 367, 367, 367, 367, 367, 367, 86, 86, 86, 233, 885 483, 366, 233, 480, 372, 511, 484, 506, 233, 528, 886 485, 233, 485, 505, 368, 486, 486, 486, 486, 486, 887 486, 233, 86, 478, 484, 86, 233, 374, 86, 375, 888 233, 851, 484, 376, 86, 233, 508, 86, 86, 377, 889 86, 86, 483, 86, 510, 524, 518, 86, 487, 86, 890 484, 378, 519, 513, 374, 375, 375, 515, 516, 376, 891 376, 86, 514, 86, 520, 517, 490, 522, 86, 86, 892 893 86, 521, 86, 86, 86, 86, 86, 86, 378, 86, 894 86, 534, 375, 527, 523, 526, 376, 525, 531, 536, 895 86, 535, 532, 529, 86, 530, 86, 533, 86, 539, 896 86, 86, 86, 86, 86, 537, 86, 86, 86, 86, 897 86, 540, 544, 86, 538, 542, 86, 86, 86, 545, 898 541, 543, 551, 553, 554, 555, 548, 546, 547, 549, 899 550, 86, 86, 86, 552, 86, 86, 86, 199, 557, 900 691, 86, 86, 560, 563, 562, 480, 480, 585, 558, 901 559, 209, 209, 209, 209, 603, 481, 561, 476, 476, 902 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 903 904 480, 86, 480, 480, 585, 86, 233, 851, 86, 233, 905 584, 86, 233, 86, 86, 233, 86, 86, 602, 86, 906 604, 477, 609, 86, 610, 86, 480, 580, 233, 606, 907 607, 605, 608, 233, 233, 614, 617, 86, 86, 233, 908 367, 367, 367, 367, 367, 367, 581, 615, 581, 627, 909 618, 582, 582, 582, 582, 582, 582, 486, 486, 486, 910 486, 486, 486, 86, 586, 586, 586, 586, 586, 586, 911 485, 86, 485, 478, 86, 486, 486, 486, 486, 486, 912 486, 86, 587, 612, 583, 587, 616, 86, 86, 86, 913 613, 622, 86, 86, 86, 625, 620, 588, 623, 624, 914 915 86, 86, 626, 86, 587, 86, 86, 629, 86, 587, 916 621, 86, 86, 86, 631, 632, 86, 628, 630, 86, 917 86, 637, 86, 634, 86, 633, 86, 635, 636, 638, 918 86, 639, 86, 86, 86, 86, 648, 641, 643, 645, 919 86, 640, 86, 642, 649, 86, 647, 86, 86, 86, 920 650, 86, 86, 86, 697, 646, 683, 684, 86, 688, 921 652, 689, 651, 476, 476, 476, 476, 476, 476, 582, 922 582, 582, 582, 582, 582, 686, 670, 670, 670, 670, 923 670, 670, 581, 86, 581, 86, 86, 582, 582, 582, 924 582, 582, 582, 714, 587, 86, 580, 587, 685, 586, 925 926 586, 586, 586, 586, 586, 86, 687, 86, 692, 671, 927 586, 586, 586, 586, 586, 586, 587, 587, 86, 86, 928 587, 587, 690, 681, 86, 86, 699, 86, 587, 694, 929 86, 587, 588, 86, 693, 86, 682, 86, 86, 587, 930 86, 695, 700, 672, 587, 86, 702, 696, 703, 705, 931 587, 86, 698, 701, 86, 587, 86, 86, 86, 86, 932 704, 86, 86, 86, 86, 86, 709, 706, 86, 86, 933 713, 715, 86, 717, 707, 716, 86, 86, 708, 710, 934 712, 86, 733, 718, 777, 711, 670, 670, 670, 670, 935 670, 670, 670, 670, 670, 670, 670, 670, 732, 86, 936 937 86, 737, 734, 86, 587, 736, 735, 587, 86, 86, 938 587, 738, 739, 587, 86, 86, 745, 851, 86, 671, 939 741, 740, 748, 86, 742, 725, 587, 86, 752, 86, 940 743, 587, 587, 86, 86, 86, 746, 587, 586, 586, 941 586, 586, 586, 586, 744, 86, 86, 86, 86, 86, 942 749, 86, 86, 86, 86, 747, 754, 756, 86, 751, 943 86, 86, 750, 755, 86, 753, 86, 86, 86, 760, 944 86, 672, 86, 757, 86, 761, 783, 778, 86, 776, 945 758, 759, 670, 670, 670, 670, 670, 670, 774, 775, 946 780, 86, 86, 779, 781, 86, 86, 86, 784, 785, 947 948 86, 790, 86, 86, 86, 782, 787, 786, 86, 86, 949 86, 788, 789, 86, 86, 725, 808, 86, 86, 86, 950 812, 810, 86, 86, 86, 791, 813, 815, 86, 86, 951 86, 806, 807, 816, 86, 86, 805, 811, 817, 809, 952 86, 86, 86, 86, 814, 830, 86, 829, 86, 828, 953 818, 819, 831, 86, 86, 86, 832, 834, 833, 86, 954 86, 86, 835, 86, 836, 86, 86, 86, 841, 837, 955 840, 86, 86, 86, 842, 843, 844, 86, 86, 86, 956 845, 847, 848, 86, 86, 846, 849, 851, 851, 850, 780 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 781 71, 71, 71, 70, 70, 70, 70, 75, 75, 78, 782 78, 122, 123, 89, 86, 78, 78, 608, 75, 75, 783 79, 80, 81, 81, 81, 79, 81, 80, 82, 82, 784 785 82, 81, 90, 92, 158, 144, 86, 97, 94, 98, 786 98, 98, 98, 98, 98, 86, 86, 93, 99, 84, 787 95, 96, 84, 100, 173, 117, 76, 76, 76, 76, 788 141, 145, 86, 101, 102, 142, 103, 103, 103, 103, 789 104, 104, 118, 86, 119, 120, 256, 86, 257, 86, 790 176, 86, 159, 105, 190, 86, 177, 106, 162, 160, 791 178, 201, 107, 108, 156, 161, 157, 163, 109, 86, 792 165, 164, 166, 86, 105, 86, 143, 225, 86, 174, 793 110, 167, 243, 251, 86, 86, 175, 202, 107, 86, 794 189, 108, 102, 188, 111, 111, 111, 111, 111, 111, 795 796 245, 183, 241, 226, 191, 244, 252, 242, 256, 184, 797 257, 105, 147, 148, 149, 112, 185, 86, 150, 151, 798 113, 152, 86, 153, 154, 86, 114, 168, 86, 179, 799 180, 155, 105, 242, 247, 169, 264, 170, 115, 181, 800 171, 256, 182, 257, 172, 141, 113, 124, 249, 86, 801 142, 125, 126, 250, 127, 825, 128, 129, 256, 130, 802 257, 131, 265, 186, 79, 80, 81, 81, 81, 79, 803 132, 133, 134, 192, 80, 81, 81, 81, 192, 250, 804 86, 193, 81, 80, 81, 81, 81, 81, 86, 253, 805 135, 143, 278, 136, 81, 80, 82, 82, 82, 81, 806 807 258, 195, 196, 258, 86, 187, 195, 235, 235, 235, 808 235, 256, 86, 257, 256, 256, 257, 257, 416, 825, 809 137, 138, 197, 197, 197, 197, 197, 197, 204, 205, 810 256, 260, 257, 204, 825, 206, 238, 86, 238, 236, 811 206, 239, 239, 239, 239, 239, 239, 86, 825, 207, 812 207, 207, 207, 248, 242, 259, 256, 306, 257, 250, 813 206, 825, 825, 102, 296, 104, 104, 104, 104, 104, 814 104, 86, 241, 240, 86, 208, 825, 249, 206, 256, 815 242, 257, 105, 206, 206, 250, 270, 206, 206, 256, 816 86, 257, 272, 271, 141, 206, 86, 237, 206, 142, 817 818 206, 209, 206, 105, 210, 212, 86, 86, 273, 213, 819 214, 86, 275, 86, 215, 216, 274, 217, 86, 218, 820 86, 86, 86, 86, 276, 825, 86, 291, 219, 220, 821 221, 86, 297, 277, 86, 290, 289, 86, 86, 279, 822 86, 280, 300, 281, 282, 86, 298, 283, 222, 284, 823 294, 223, 292, 293, 285, 286, 287, 86, 288, 86, 824 86, 86, 302, 295, 86, 299, 347, 86, 348, 86, 825 86, 86, 303, 86, 312, 825, 304, 86, 305, 224, 826 228, 228, 228, 228, 228, 228, 309, 301, 307, 308, 827 311, 86, 86, 310, 86, 316, 319, 229, 230, 86, 828 829 86, 230, 86, 313, 86, 317, 141, 333, 86, 360, 830 825, 320, 231, 314, 315, 321, 86, 386, 229, 230, 831 322, 330, 318, 86, 230, 98, 98, 98, 98, 98, 832 98, 323, 86, 334, 86, 324, 326, 347, 347, 348, 833 348, 363, 229, 230, 327, 328, 230, 329, 86, 86, 834 204, 205, 325, 390, 348, 204, 347, 234, 348, 545, 835 195, 196, 86, 229, 230, 195, 347, 363, 348, 230, 836 192, 80, 81, 81, 81, 192, 349, 347, 193, 348, 837 373, 197, 197, 197, 197, 197, 197, 195, 196, 405, 838 86, 348, 195, 331, 196, 347, 825, 348, 331, 403, 839 840 332, 339, 339, 339, 339, 347, 373, 348, 197, 197, 841 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 842 347, 350, 348, 347, 347, 348, 348, 104, 104, 104, 843 104, 104, 104, 340, 228, 228, 228, 228, 228, 228, 844 356, 256, 356, 257, 105, 357, 357, 357, 357, 357, 845 357, 229, 230, 229, 230, 230, 256, 230, 257, 248, 846 86, 86, 86, 86, 86, 105, 231, 392, 375, 402, 847 630, 86, 229, 230, 229, 230, 385, 358, 230, 387, 848 230, 239, 239, 239, 239, 239, 239, 361, 361, 361, 849 361, 361, 361, 238, 376, 238, 86, 398, 239, 239, 850 851 239, 239, 239, 239, 366, 230, 813, 825, 230, 104, 852 104, 104, 104, 104, 104, 86, 391, 86, 86, 362, 853 111, 111, 111, 111, 111, 111, 230, 368, 86, 369, 854 394, 230, 370, 388, 86, 389, 395, 396, 371, 86, 855 86, 248, 86, 86, 86, 86, 86, 408, 393, 399, 856 372, 86, 253, 404, 369, 409, 86, 397, 370, 400, 857 401, 86, 406, 407, 86, 86, 86, 86, 410, 86, 858 415, 411, 86, 86, 412, 418, 86, 86, 422, 86, 859 86, 420, 423, 419, 424, 413, 414, 86, 417, 86, 860 86, 421, 86, 86, 86, 86, 86, 86, 86, 426, 861 862 86, 425, 428, 429, 86, 427, 86, 431, 430, 436, 863 86, 86, 432, 141, 435, 86, 434, 86, 433, 441, 864 437, 86, 86, 86, 86, 86, 445, 438, 439, 440, 865 443, 444, 196, 442, 331, 196, 494, 446, 194, 331, 866 495, 332, 206, 206, 206, 206, 339, 339, 339, 339, 867 347, 347, 348, 348, 86, 825, 86, 357, 357, 357, 868 357, 357, 357, 467, 467, 467, 467, 467, 467, 479, 869 356, 86, 356, 497, 456, 357, 357, 357, 357, 357, 870 357, 230, 86, 86, 230, 228, 228, 228, 228, 228, 871 228, 498, 480, 501, 499, 468, 235, 235, 235, 235, 872 873 104, 104, 230, 86, 825, 471, 471, 230, 361, 361, 874 361, 361, 361, 361, 472, 473, 475, 359, 361, 361, 875 361, 361, 361, 361, 514, 86, 230, 86, 360, 230, 876 471, 471, 474, 366, 474, 86, 230, 475, 86, 230, 877 362, 504, 475, 86, 500, 86, 86, 230, 510, 505, 878 469, 825, 230, 496, 502, 812, 368, 230, 369, 503, 879 86, 370, 230, 475, 476, 825, 476, 371, 86, 477, 880 477, 477, 477, 477, 477, 86, 506, 507, 86, 372, 881 86, 86, 86, 369, 513, 86, 509, 370, 368, 86, 882 369, 86, 515, 370, 86, 511, 518, 508, 86, 481, 883 884 86, 478, 512, 86, 516, 86, 517, 86, 86, 86, 885 519, 372, 524, 86, 522, 369, 521, 526, 523, 370, 886 86, 520, 525, 527, 86, 86, 86, 86, 529, 86, 887 86, 528, 86, 86, 86, 533, 86, 86, 86, 531, 888 86, 540, 530, 86, 534, 532, 86, 543, 86, 549, 889 86, 536, 535, 537, 538, 541, 542, 544, 539, 86, 890 86, 86, 196, 548, 600, 471, 471, 546, 552, 551, 891 550, 206, 206, 206, 206, 472, 86, 547, 467, 467, 892 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 893 471, 471, 574, 591, 471, 86, 230, 86, 86, 230, 894 895 86, 86, 230, 573, 86, 230, 86, 86, 592, 86, 896 468, 595, 593, 86, 597, 86, 569, 230, 574, 471, 897 594, 86, 230, 230, 599, 602, 596, 601, 230, 361, 898 361, 361, 361, 361, 361, 570, 603, 570, 611, 86, 899 571, 571, 571, 571, 571, 571, 477, 477, 477, 477, 900 477, 477, 575, 575, 575, 575, 575, 575, 476, 86, 901 476, 469, 86, 477, 477, 477, 477, 477, 477, 86, 902 576, 604, 572, 576, 598, 86, 86, 86, 86, 86, 903 605, 610, 86, 86, 577, 86, 86, 606, 609, 86, 904 607, 576, 612, 86, 613, 614, 576, 86, 86, 616, 905 906 617, 86, 618, 86, 615, 86, 86, 86, 86, 86, 907 620, 623, 86, 86, 619, 86, 621, 624, 622, 86, 908 627, 625, 86, 629, 86, 86, 628, 626, 86, 631, 909 86, 633, 86, 634, 86, 632, 86, 86, 635, 668, 910 86, 673, 636, 637, 467, 467, 467, 467, 467, 467, 911 571, 571, 571, 571, 571, 571, 655, 655, 655, 655, 912 655, 655, 570, 672, 570, 86, 86, 571, 571, 571, 913 571, 571, 571, 86, 576, 669, 569, 576, 575, 575, 914 575, 575, 575, 575, 86, 686, 670, 86, 656, 86, 915 676, 86, 86, 86, 86, 576, 576, 674, 666, 576, 916 917 576, 671, 575, 575, 575, 575, 575, 575, 675, 678, 918 577, 667, 86, 86, 679, 86, 86, 576, 86, 682, 919 576, 684, 576, 576, 86, 677, 86, 86, 86, 86, 920 680, 86, 86, 86, 657, 683, 687, 681, 86, 685, 921 86, 576, 86, 86, 688, 86, 576, 86, 86, 697, 922 689, 690, 693, 698, 691, 692, 696, 695, 86, 86, 923 700, 86, 86, 86, 86, 694, 720, 699, 655, 655, 924 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 925 714, 86, 719, 86, 86, 726, 576, 716, 86, 576, 926 717, 715, 576, 718, 86, 576, 86, 721, 86, 727, 927 928 656, 86, 722, 730, 723, 724, 707, 576, 86, 86, 929 729, 725, 576, 576, 86, 86, 766, 728, 576, 575, 930 575, 575, 575, 575, 575, 86, 86, 86, 86, 731, 931 86, 86, 86, 86, 86, 738, 86, 86, 732, 733, 932 734, 86, 736, 86, 86, 735, 741, 86, 86, 740, 933 86, 657, 86, 86, 758, 756, 86, 737, 739, 655, 934 655, 655, 655, 655, 655, 755, 759, 754, 757, 86, 935 86, 763, 761, 86, 86, 86, 764, 765, 760, 86, 936 86, 86, 767, 762, 768, 86, 86, 86, 790, 86, 937 769, 707, 786, 86, 86, 86, 788, 86, 86, 86, 938 939 791, 86, 793, 86, 785, 86, 784, 783, 794, 787, 940 795, 86, 789, 86, 86, 86, 86, 792, 805, 806, 941 825, 825, 86, 807, 804, 808, 86, 86, 86, 810, 942 811, 86, 809, 86, 86, 86, 815, 814, 816, 86, 943 86, 86, 817, 818, 819, 86, 86, 86, 822, 821, 944 823, 803, 825, 820, 802, 825, 800, 825, 799, 825, 945 798, 825, 797, 86, 86, 86, 825, 782, 824, 68, 957 946 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 958 959 68, 68, 68, 74, 74, 74, 74, 74, 74, 74, 960 74, 74, 74, 74, 74, 74, 77, 77, 77, 77, 961 77, 77, 77, 77, 77, 77, 77, 77, 77, 85, 962 839, 851, 85, 851, 85, 85, 85, 85, 85, 139, 963 851, 851, 838, 139, 139, 139, 139, 139, 139, 197, 964 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 965 197, 197, 202, 86, 86, 202, 86, 202, 202, 202, 966 202, 202, 206, 86, 206, 206, 86, 206, 206, 206, 967 206, 206, 206, 851, 206, 214, 851, 827, 214, 214, 968 214, 214, 214, 214, 214, 214, 851, 214, 235, 235, 969 970 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 971 235, 249, 249, 826, 249, 851, 824, 851, 249, 265, 972 823, 851, 265, 822, 265, 265, 265, 265, 265, 269, 973 851, 269, 821, 86, 86, 269, 271, 86, 271, 851, 974 804, 851, 271, 341, 803, 341, 801, 851, 799, 341, 975 343, 851, 343, 797, 851, 795, 343, 347, 793, 347, 976 86, 86, 86, 347, 349, 86, 349, 86, 86, 86, 977 349, 351, 86, 351, 86, 86, 86, 351, 358, 86, 978 358, 851, 773, 771, 358, 360, 851, 360, 851, 768, 979 766, 360, 235, 235, 235, 235, 235, 235, 235, 235, 980 981 235, 235, 235, 235, 235, 371, 764, 371, 373, 373, 982 851, 373, 373, 373, 86, 373, 249, 249, 86, 249, 983 383, 86, 383, 86, 86, 86, 383, 385, 86, 385, 984 86, 731, 728, 385, 387, 727, 387, 203, 721, 720, 985 387, 269, 654, 269, 389, 86, 389, 86, 86, 86, 986 389, 271, 86, 271, 85, 86, 86, 85, 86, 85, 987 85, 85, 85, 85, 197, 197, 197, 197, 197, 197, 988 197, 197, 197, 197, 197, 197, 197, 456, 456, 456, 989 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 990 457, 86, 457, 86, 86, 86, 457, 459, 86, 459, 991 992 86, 86, 679, 459, 461, 678, 461, 676, 674, 584, 993 461, 341, 669, 341, 463, 668, 463, 666, 664, 662, 994 463, 343, 660, 343, 466, 658, 466, 656, 654, 86, 995 466, 347, 86, 347, 468, 86, 468, 86, 86, 86, 996 468, 349, 86, 349, 470, 86, 470, 86, 601, 599, 997 470, 351, 597, 351, 472, 595, 472, 593, 591, 490, 998 472, 358, 589, 358, 474, 589, 474, 579, 577, 471, 999 474, 360, 471, 360, 479, 575, 479, 573, 479, 571, 1000 479, 371, 569, 371, 567, 371, 565, 371, 373, 373, 1001 86, 373, 373, 373, 86, 373, 491, 86, 491, 86, 1002 1003 86, 86, 491, 493, 86, 493, 86, 502, 500, 493, 1004 495, 498, 495, 496, 494, 492, 495, 383, 475, 383, 1005 497, 473, 497, 354, 354, 471, 497, 385, 469, 385, 1006 499, 467, 499, 464, 462, 460, 499, 387, 458, 387, 1007 501, 86, 501, 86, 86, 391, 501, 389, 390, 389, 1008 85, 388, 386, 85, 384, 85, 85, 85, 85, 85, 1009 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 1010 456, 456, 456, 564, 266, 564, 261, 260, 380, 564, 1011 457, 380, 457, 566, 248, 566, 370, 370, 236, 566, 1012 459, 365, 459, 568, 361, 568, 359, 357, 353, 568, 1013 1014 461, 352, 461, 570, 350, 570, 348, 344, 342, 570, 1015 463, 203, 463, 572, 199, 572, 86, 273, 272, 572, 1016 466, 270, 466, 574, 266, 574, 261, 264, 261, 574, 1017 468, 259, 468, 470, 258, 470, 257, 236, 230, 470, 1018 576, 84, 576, 84, 86, 203, 576, 472, 201, 472, 1019 578, 84, 578, 121, 116, 86, 578, 474, 851, 474, 1020 479, 69, 479, 69, 479, 851, 479, 373, 851, 373, 1021 851, 851, 851, 373, 590, 851, 590, 851, 851, 851, 1022 590, 491, 851, 491, 592, 851, 592, 851, 851, 851, 1023 592, 493, 851, 493, 594, 851, 594, 851, 851, 851, 1024 1025 594, 495, 851, 495, 596, 851, 596, 851, 851, 851, 1026 596, 497, 851, 497, 598, 851, 598, 851, 851, 851, 1027 598, 499, 851, 499, 600, 851, 600, 851, 851, 851, 1028 600, 501, 851, 501, 85, 851, 851, 85, 851, 85, 1029 85, 85, 85, 85, 653, 653, 653, 653, 653, 653, 1030 653, 653, 653, 653, 653, 653, 653, 655, 851, 655, 1031 851, 851, 851, 655, 564, 851, 564, 657, 851, 657, 1032 851, 851, 851, 657, 566, 851, 566, 659, 851, 659, 1033 851, 851, 851, 659, 568, 851, 568, 661, 851, 661, 1034 851, 851, 851, 661, 570, 851, 570, 663, 851, 663, 1035 1036 851, 851, 851, 663, 572, 851, 572, 665, 851, 665, 1037 851, 851, 851, 665, 574, 851, 574, 667, 851, 667, 1038 851, 851, 851, 667, 576, 851, 576, 85, 851, 85, 1039 851, 851, 851, 85, 578, 851, 578, 479, 851, 479, 1040 851, 851, 851, 479, 673, 851, 673, 851, 851, 851, 1041 673, 590, 851, 590, 675, 851, 675, 851, 851, 851, 1042 675, 592, 851, 592, 677, 851, 677, 851, 851, 851, 1043 677, 594, 851, 594, 139, 851, 139, 851, 851, 851, 1044 139, 596, 851, 596, 680, 851, 680, 598, 851, 598, 1045 85, 851, 851, 85, 851, 85, 85, 85, 85, 85, 1046 1047 600, 851, 600, 653, 653, 653, 653, 653, 653, 653, 1048 653, 653, 653, 653, 653, 653, 719, 851, 719, 851, 1049 851, 851, 719, 655, 851, 655, 202, 851, 202, 851, 1050 851, 851, 202, 657, 851, 657, 722, 851, 722, 659, 1051 851, 659, 202, 851, 851, 202, 851, 202, 202, 202, 1052 202, 202, 661, 851, 661, 723, 851, 723, 663, 851, 1053 663, 665, 851, 665, 724, 851, 724, 667, 851, 667, 1054 85, 851, 85, 726, 851, 726, 851, 851, 851, 726, 1055 673, 851, 673, 265, 851, 265, 851, 851, 851, 265, 1056 675, 851, 675, 729, 851, 729, 677, 851, 677, 139, 1057 1058 851, 139, 730, 851, 730, 851, 851, 851, 730, 85, 1059 851, 851, 85, 851, 85, 85, 85, 85, 85, 762, 1060 851, 762, 719, 851, 719, 763, 851, 763, 851, 851, 1061 851, 763, 765, 851, 765, 851, 851, 851, 765, 767, 1062 851, 767, 851, 851, 851, 767, 769, 851, 769, 770, 1063 851, 770, 851, 851, 851, 770, 772, 851, 772, 851, 1064 851, 851, 772, 792, 851, 792, 851, 851, 851, 792, 1065 794, 851, 794, 851, 851, 851, 794, 796, 851, 796, 1066 851, 851, 851, 796, 798, 851, 798, 851, 851, 851, 1067 798, 800, 851, 800, 851, 851, 851, 800, 802, 851, 1068 1069 802, 851, 851, 851, 802, 600, 851, 600, 851, 851, 1070 851, 600, 820, 851, 820, 851, 851, 851, 820, 661, 1071 851, 661, 851, 851, 851, 661, 665, 851, 665, 851, 1072 851, 851, 665, 85, 851, 85, 851, 851, 851, 85, 1073 825, 851, 825, 851, 851, 851, 825, 139, 851, 139, 1074 851, 851, 851, 139, 202, 851, 202, 851, 851, 851, 1075 202, 11, 851, 851, 851, 851, 851, 851, 851, 851, 1076 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 1077 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 1078 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 1079 1080 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 1081 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 1082 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 1083 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 1084 851, 851, 851, 851, 851, 851, 851 947 68, 74, 74, 74, 74, 74, 74, 74, 74, 74, 948 74, 74, 74, 77, 77, 77, 77, 77, 77, 77, 949 950 77, 77, 77, 77, 77, 85, 825, 781, 85, 85, 951 85, 85, 85, 85, 139, 779, 825, 777, 139, 139, 952 139, 139, 139, 194, 194, 194, 194, 194, 194, 194, 953 194, 194, 194, 194, 194, 199, 825, 775, 199, 199, 954 199, 199, 199, 199, 203, 825, 203, 203, 773, 203, 955 203, 203, 203, 203, 771, 203, 211, 86, 86, 211, 956 211, 211, 211, 211, 211, 211, 86, 211, 232, 232, 957 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 958 246, 246, 246, 86, 86, 86, 246, 262, 86, 86, 959 262, 262, 262, 262, 262, 262, 266, 266, 86, 86, 960 961 86, 266, 268, 268, 86, 825, 753, 268, 335, 335, 962 751, 825, 825, 335, 337, 337, 748, 746, 744, 337, 963 341, 341, 825, 86, 86, 341, 343, 343, 86, 86, 964 86, 343, 345, 345, 86, 86, 713, 345, 352, 352, 965 710, 709, 200, 352, 354, 354, 703, 702, 639, 354, 966 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 967 232, 232, 365, 365, 367, 367, 367, 367, 367, 86, 968 367, 246, 246, 246, 377, 377, 86, 86, 86, 377, 969 379, 379, 86, 86, 86, 379, 381, 381, 86, 86, 970 86, 381, 266, 266, 383, 383, 86, 86, 86, 383, 971 972 268, 268, 85, 86, 664, 85, 85, 85, 85, 85, 973 85, 194, 194, 194, 194, 194, 194, 194, 194, 194, 974 194, 194, 194, 447, 447, 447, 447, 447, 447, 447, 975 447, 447, 447, 447, 447, 448, 448, 663, 661, 659, 976 448, 450, 450, 573, 654, 653, 450, 452, 452, 651, 977 649, 647, 452, 335, 335, 454, 454, 645, 643, 641, 978 454, 337, 337, 457, 457, 639, 86, 86, 457, 341, 979 341, 459, 459, 86, 86, 86, 459, 343, 343, 461, 980 461, 86, 86, 86, 461, 345, 345, 463, 463, 86, 981 86, 86, 463, 352, 352, 465, 465, 590, 588, 586, 982 983 465, 354, 354, 470, 470, 584, 470, 582, 470, 365, 984 365, 580, 365, 481, 365, 367, 367, 367, 367, 367, 985 578, 367, 482, 482, 578, 568, 566, 482, 484, 484, 986 462, 462, 564, 484, 486, 486, 562, 560, 558, 486, 987 377, 377, 488, 488, 556, 554, 86, 488, 379, 379, 988 490, 490, 86, 86, 86, 490, 381, 381, 492, 492, 989 86, 86, 86, 492, 383, 383, 85, 86, 493, 85, 990 85, 85, 85, 85, 85, 447, 447, 447, 447, 447, 991 447, 447, 447, 447, 447, 447, 447, 553, 553, 491, 992 489, 487, 553, 448, 448, 555, 555, 485, 483, 466, 993 994 555, 450, 450, 557, 557, 464, 348, 348, 557, 452, 995 452, 559, 559, 462, 460, 458, 559, 454, 454, 561, 996 561, 455, 453, 451, 561, 457, 457, 563, 563, 449, 997 86, 86, 563, 459, 459, 461, 461, 86, 384, 382, 998 461, 565, 565, 380, 378, 263, 565, 463, 463, 567, 999 567, 258, 257, 374, 567, 465, 465, 470, 470, 374, 1000 470, 245, 470, 367, 367, 364, 364, 233, 367, 579, 1001 579, 359, 355, 353, 579, 482, 482, 581, 581, 351, 1002 347, 346, 581, 484, 484, 583, 583, 344, 342, 338, 1003 583, 486, 486, 585, 585, 336, 200, 196, 585, 488, 1004 1005 488, 587, 587, 86, 269, 267, 587, 490, 490, 589, 1006 589, 263, 258, 261, 589, 492, 492, 85, 258, 256, 1007 85, 85, 85, 85, 85, 85, 638, 638, 638, 638, 1008 638, 638, 638, 638, 638, 638, 638, 638, 640, 640, 1009 255, 254, 233, 640, 553, 553, 642, 642, 227, 84, 1010 84, 642, 555, 555, 644, 644, 86, 200, 198, 644, 1011 557, 557, 646, 646, 84, 146, 140, 646, 559, 559, 1012 648, 648, 121, 116, 86, 648, 561, 561, 650, 650, 1013 825, 69, 69, 650, 563, 563, 652, 652, 825, 825, 1014 825, 652, 565, 565, 85, 85, 825, 825, 825, 85, 1015 1016 567, 567, 470, 470, 825, 825, 825, 470, 658, 658, 1017 825, 825, 825, 658, 579, 579, 660, 660, 825, 825, 1018 825, 660, 581, 581, 662, 662, 825, 825, 825, 662, 1019 583, 583, 139, 139, 825, 825, 825, 139, 585, 585, 1020 665, 665, 587, 587, 85, 825, 825, 85, 85, 85, 1021 85, 85, 85, 589, 589, 638, 638, 638, 638, 638, 1022 638, 638, 638, 638, 638, 638, 638, 701, 701, 825, 1023 825, 825, 701, 640, 640, 199, 199, 825, 825, 825, 1024 199, 642, 642, 704, 704, 644, 644, 199, 825, 825, 1025 199, 199, 199, 199, 199, 199, 646, 646, 705, 705, 1026 1027 648, 648, 650, 650, 706, 706, 652, 652, 85, 85, 1028 708, 708, 825, 825, 825, 708, 658, 658, 262, 262, 1029 825, 825, 825, 262, 660, 660, 711, 711, 662, 662, 1030 139, 139, 712, 712, 825, 825, 825, 712, 85, 825, 1031 825, 85, 85, 85, 85, 85, 85, 742, 742, 701, 1032 701, 743, 743, 825, 825, 825, 743, 745, 745, 825, 1033 825, 825, 745, 747, 747, 825, 825, 825, 747, 749, 1034 749, 750, 750, 825, 825, 825, 750, 752, 752, 825, 1035 825, 825, 752, 770, 770, 825, 825, 825, 770, 772, 1036 772, 825, 825, 825, 772, 774, 774, 825, 825, 825, 1037 1038 774, 776, 776, 825, 825, 825, 776, 778, 778, 825, 1039 825, 825, 778, 780, 780, 825, 825, 825, 780, 589, 1040 589, 825, 825, 825, 589, 796, 796, 825, 825, 825, 1041 796, 646, 646, 825, 825, 825, 646, 650, 650, 825, 1042 825, 825, 650, 85, 85, 825, 825, 825, 85, 801, 1043 801, 825, 825, 825, 801, 139, 139, 825, 825, 825, 1044 139, 199, 199, 825, 825, 825, 199, 11, 825, 825, 1045 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 1046 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 1047 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 1048 1049 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 1050 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 1051 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 1052 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 1053 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 1054 825, 825 1085 1055 } ; 1086 1056 1087 static yyconst flex_int16_t yy_chk[2 848] =1057 static yyconst flex_int16_t yy_chk[2653] = 1088 1058 { 0, 1089 1059 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, … … 1095 1065 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1096 1066 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1097 1, 1, 1, 1, 1, 2, 16, 24, 16, 24,1098 2, 19, 19, 2, 5, 5, 5, 5, 5, 5,1067 1, 1, 1, 1, 2, 16, 24, 16, 24, 2, 1068 19, 19, 2, 5, 5, 5, 5, 5, 5, 5, 1099 1069 1100 1070 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, … … 1105 1075 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 1106 1076 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 1107 5, 5, 5, 5, 5, 5, 5, 5, 5, 7, 1108 8, 9, 10, 37, 37, 20, 39, 9, 10, 521, 1109 7, 8, 13, 13, 13, 13, 13, 13, 15, 15, 1110 1111 15, 15, 15, 15, 20, 25, 48, 39, 42, 28, 1112 27, 28, 28, 28, 28, 28, 28, 108, 521, 25, 1113 29, 25, 27, 27, 27, 29, 48, 35, 40, 7, 1114 8, 9, 10, 40, 42, 29, 30, 47, 30, 30, 1115 30, 30, 30, 30, 35, 56, 35, 35, 44, 334, 1116 44, 114, 108, 72, 56, 30, 63, 334, 47, 30, 1117 47, 45, 45, 45, 49, 30, 30, 45, 45, 49, 1118 45, 30, 40, 45, 45, 40, 49, 30, 45, 72, 1119 61, 45, 49, 30, 86, 513, 114, 53, 513, 51, 1120 60, 30, 61, 55, 30, 31, 107, 31, 31, 31, 1121 1122 31, 31, 31, 50, 51, 53, 51, 63, 60, 54, 1123 86, 55, 50, 109, 31, 51, 50, 55, 31, 54, 1124 107, 50, 52, 113, 31, 50, 54, 52, 317, 125, 1125 31, 125, 106, 156, 150, 52, 31, 52, 106, 317, 1126 52, 59, 31, 109, 52, 156, 59, 113, 109, 151, 1127 31, 38, 150, 174, 110, 38, 38, 57, 38, 59, 1128 38, 38, 112, 38, 106, 38, 58, 151, 112, 57, 1129 57, 109, 110, 174, 38, 38, 38, 166, 58, 57, 1130 110, 152, 57, 115, 141, 59, 58, 126, 59, 126, 1131 152, 67, 67, 58, 112, 38, 67, 128, 38, 128, 1132 1133 166, 115, 59, 66, 66, 66, 66, 66, 66, 115, 1134 141, 66, 67, 67, 67, 67, 67, 67, 79, 79, 1135 79, 79, 79, 79, 160, 38, 38, 76, 76, 131, 1136 163, 131, 76, 160, 76, 103, 103, 103, 103, 76, 1137 81, 81, 81, 81, 81, 81, 129, 163, 76, 76, 1138 76, 76, 82, 82, 82, 82, 82, 82, 130, 76, 1139 129, 153, 129, 103, 132, 132, 158, 132, 103, 133, 1140 130, 133, 130, 186, 136, 76, 136, 153, 76, 134, 1141 134, 134, 158, 76, 76, 165, 164, 76, 76, 154, 1142 138, 103, 138, 186, 155, 76, 164, 216, 76, 216, 1143 1144 76, 76, 76, 144, 76, 84, 165, 154, 144, 84, 1145 84, 168, 149, 173, 84, 84, 155, 84, 104, 84, 1146 104, 104, 104, 104, 104, 104, 159, 149, 84, 84, 1147 84, 173, 168, 105, 149, 105, 161, 104, 105, 105, 1148 105, 105, 105, 105, 170, 162, 167, 144, 159, 84, 1149 162, 169, 84, 104, 171, 157, 169, 161, 161, 104, 1150 157, 172, 157, 162, 157, 157, 170, 175, 157, 171, 1151 157, 105, 179, 167, 169, 157, 157, 157, 172, 157, 1152 84, 98, 98, 98, 98, 98, 98, 176, 178, 179, 1153 180, 185, 280, 182, 175, 180, 181, 183, 98, 98, 1154 1155 192, 850, 98, 178, 185, 189, 187, 181, 183, 176, 1156 178, 182, 280, 192, 98, 188, 203, 181, 181, 184, 1157 98, 98, 190, 191, 184, 183, 98, 102, 102, 102, 1158 102, 102, 102, 187, 188, 190, 191, 274, 191, 184, 1159 449, 275, 203, 190, 102, 102, 207, 207, 102, 189, 1160 274, 207, 189, 195, 195, 195, 195, 195, 195, 275, 1161 102, 195, 277, 196, 196, 449, 102, 102, 196, 198, 1162 198, 217, 102, 217, 198, 200, 200, 218, 277, 218, 1163 200, 221, 200, 221, 196, 196, 196, 196, 196, 196, 1164 198, 198, 198, 198, 198, 198, 200, 200, 200, 200, 1165 1166 200, 200, 210, 210, 210, 210, 219, 220, 222, 222, 1167 223, 222, 223, 224, 224, 224, 226, 239, 226, 220, 1168 219, 220, 219, 227, 232, 227, 232, 278, 849, 232, 1169 232, 232, 232, 232, 232, 210, 231, 231, 231, 231, 1170 231, 231, 237, 237, 278, 244, 237, 252, 262, 263, 1171 262, 263, 239, 231, 231, 279, 276, 231, 281, 282, 1172 279, 288, 232, 281, 237, 237, 288, 290, 266, 231, 1173 237, 244, 285, 252, 276, 231, 231, 848, 284, 282, 1174 290, 231, 240, 240, 240, 240, 240, 240, 241, 241, 1175 241, 241, 241, 241, 266, 283, 284, 286, 285, 240, 1176 1177 289, 242, 242, 242, 242, 242, 242, 249, 291, 289, 1178 283, 292, 286, 294, 847, 240, 283, 283, 243, 242, 1179 243, 240, 242, 243, 243, 243, 243, 243, 243, 292, 1180 249, 294, 249, 295, 242, 291, 249, 298, 295, 287, 1181 301, 242, 249, 299, 296, 301, 242, 251, 251, 251, 1182 251, 251, 251, 296, 249, 287, 287, 298, 249, 304, 1183 300, 299, 249, 256, 256, 256, 256, 256, 256, 297, 1184 302, 303, 307, 306, 305, 302, 297, 303, 304, 306, 1185 251, 300, 300, 305, 308, 309, 310, 311, 307, 312, 1186 313, 310, 311, 308, 312, 314, 256, 315, 320, 318, 1187 1188 309, 321, 319, 322, 323, 325, 326, 324, 327, 313, 1189 315, 312, 331, 314, 318, 319, 324, 328, 332, 330, 1190 320, 323, 336, 322, 321, 333, 335, 325, 330, 326, 1191 327, 335, 355, 396, 355, 328, 332, 336, 333, 337, 1192 337, 338, 396, 356, 337, 356, 337, 338, 345, 345, 1193 345, 345, 346, 346, 346, 346, 331, 362, 362, 362, 1194 362, 362, 362, 392, 363, 363, 363, 363, 363, 363, 1195 364, 376, 364, 552, 392, 364, 364, 364, 364, 364, 1196 364, 345, 363, 552, 371, 363, 365, 365, 365, 365, 1197 365, 365, 393, 401, 371, 376, 398, 363, 366, 366, 1198 1199 366, 366, 366, 366, 363, 398, 401, 372, 393, 363, 1200 371, 367, 367, 367, 367, 367, 367, 372, 395, 365, 1201 368, 368, 368, 368, 368, 368, 400, 417, 394, 367, 1202 374, 366, 367, 372, 373, 400, 374, 395, 368, 417, 1203 375, 368, 375, 394, 367, 375, 375, 375, 375, 375, 1204 375, 367, 399, 368, 378, 397, 367, 373, 406, 373, 1205 368, 377, 374, 373, 411, 368, 397, 402, 845, 373, 1206 403, 404, 378, 405, 399, 411, 406, 407, 375, 408, 1207 378, 373, 407, 402, 377, 373, 377, 404, 404, 373, 1208 377, 409, 403, 410, 408, 405, 377, 409, 412, 415, 1209 1210 413, 408, 419, 420, 422, 423, 424, 430, 377, 421, 1211 425, 423, 377, 415, 410, 413, 377, 412, 421, 425, 1212 427, 424, 421, 419, 429, 420, 431, 422, 432, 430, 1213 433, 434, 437, 435, 439, 427, 441, 440, 443, 442, 1214 446, 431, 435, 444, 429, 433, 445, 447, 448, 437, 1215 432, 434, 444, 446, 447, 448, 441, 439, 440, 442, 1216 443, 450, 452, 451, 445, 454, 455, 611, 456, 450, 1217 611, 844, 504, 452, 456, 455, 479, 482, 483, 450, 1218 451, 465, 465, 465, 465, 504, 479, 454, 476, 476, 1219 476, 476, 476, 476, 477, 477, 477, 477, 477, 477, 1220 1221 481, 503, 479, 482, 483, 506, 476, 839, 509, 476, 1222 481, 507, 477, 512, 516, 477, 508, 511, 503, 510, 1223 506, 476, 511, 531, 512, 519, 481, 477, 476, 508, 1224 509, 507, 510, 476, 477, 516, 519, 520, 517, 477, 1225 478, 478, 478, 478, 478, 478, 480, 517, 480, 531, 1226 520, 480, 480, 480, 480, 480, 480, 485, 485, 485, 1227 485, 485, 485, 514, 486, 486, 486, 486, 486, 486, 1228 487, 515, 487, 478, 524, 487, 487, 487, 487, 487, 1229 487, 518, 486, 514, 480, 486, 518, 522, 523, 525, 1230 515, 524, 533, 529, 526, 528, 522, 486, 525, 526, 1231 1232 532, 528, 529, 534, 486, 535, 537, 533, 538, 486, 1233 523, 539, 540, 542, 535, 537, 543, 532, 534, 547, 1234 545, 543, 546, 539, 548, 538, 549, 540, 542, 545, 1235 551, 546, 553, 554, 555, 557, 556, 548, 551, 553, 1236 558, 547, 556, 549, 557, 560, 555, 561, 604, 603, 1237 558, 617, 608, 609, 617, 554, 603, 604, 606, 608, 1238 561, 609, 560, 580, 580, 580, 580, 580, 580, 581, 1239 581, 581, 581, 581, 581, 606, 582, 582, 582, 582, 1240 582, 582, 583, 607, 583, 605, 641, 583, 583, 583, 1241 583, 583, 583, 641, 582, 612, 580, 582, 605, 586, 1242 1243 586, 586, 586, 586, 586, 610, 607, 614, 612, 582, 1244 588, 588, 588, 588, 588, 588, 582, 586, 602, 613, 1245 586, 582, 610, 602, 615, 616, 619, 620, 588, 614, 1246 623, 588, 586, 621, 613, 618, 602, 622, 624, 586, 1247 625, 615, 620, 588, 586, 627, 622, 616, 623, 625, 1248 588, 628, 618, 621, 619, 588, 629, 630, 635, 634, 1249 624, 640, 648, 637, 651, 649, 630, 627, 652, 739, 1250 640, 648, 682, 651, 628, 649, 684, 681, 629, 634, 1251 637, 687, 682, 652, 739, 635, 670, 670, 670, 670, 1252 670, 670, 671, 671, 671, 671, 671, 671, 681, 685, 1253 1254 686, 687, 684, 690, 670, 686, 685, 670, 688, 689, 1255 671, 688, 689, 671, 692, 693, 696, 838, 703, 670, 1256 692, 690, 699, 695, 693, 671, 670, 694, 703, 837, 1257 694, 670, 671, 697, 710, 705, 697, 671, 672, 672, 1258 672, 672, 672, 672, 695, 696, 698, 700, 699, 701, 1259 700, 702, 704, 713, 707, 698, 705, 710, 714, 702, 1260 715, 717, 701, 707, 742, 704, 718, 740, 736, 717, 1261 741, 672, 737, 713, 738, 718, 745, 740, 754, 738, 1262 714, 715, 725, 725, 725, 725, 725, 725, 736, 737, 1263 742, 743, 744, 741, 743, 747, 749, 753, 747, 749, 1264 1265 750, 754, 759, 751, 745, 744, 751, 750, 752, 774, 1266 776, 752, 753, 778, 777, 725, 778, 779, 780, 782, 1267 783, 780, 786, 784, 787, 759, 784, 787, 806, 789, 1268 788, 776, 777, 788, 790, 791, 774, 782, 789, 779, 1269 807, 811, 808, 809, 786, 808, 783, 807, 836, 806, 1270 790, 791, 809, 810, 814, 818, 810, 814, 811, 817, 1271 819, 828, 817, 829, 818, 840, 841, 846, 829, 819, 1272 828, 831, 833, 834, 831, 833, 834, 835, 832, 842, 1273 835, 841, 842, 843, 830, 840, 843, 827, 826, 846, 1274 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 1275 1276 852, 852, 852, 853, 853, 853, 853, 853, 853, 853, 1277 853, 853, 853, 853, 853, 853, 854, 854, 854, 854, 1278 854, 854, 854, 854, 854, 854, 854, 854, 854, 855, 1279 825, 824, 855, 823, 855, 855, 855, 855, 855, 856, 1280 822, 821, 820, 856, 856, 856, 856, 856, 856, 857, 1281 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 1282 857, 857, 858, 816, 815, 858, 813, 858, 858, 858, 1283 858, 858, 859, 812, 859, 859, 805, 859, 859, 859, 1284 859, 859, 859, 804, 859, 860, 803, 802, 860, 860, 1285 860, 860, 860, 860, 860, 860, 801, 860, 861, 861, 1286 1287 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 1288 861, 862, 862, 800, 862, 799, 798, 797, 862, 863, 1289 796, 795, 863, 794, 863, 863, 863, 863, 863, 864, 1290 793, 864, 792, 785, 781, 864, 865, 775, 865, 773, 1291 772, 771, 865, 866, 770, 866, 769, 768, 767, 866, 1292 867, 766, 867, 765, 764, 763, 867, 868, 762, 868, 1293 761, 760, 758, 868, 869, 757, 869, 756, 755, 748, 1294 869, 870, 746, 870, 735, 734, 733, 870, 871, 732, 1295 871, 731, 730, 729, 871, 872, 728, 872, 727, 724, 1296 723, 872, 873, 873, 873, 873, 873, 873, 873, 873, 1297 1298 873, 873, 873, 873, 873, 874, 722, 874, 875, 875, 1299 721, 875, 875, 875, 716, 875, 876, 876, 712, 876, 1300 877, 711, 877, 709, 708, 706, 877, 878, 691, 878, 1301 683, 680, 675, 878, 879, 673, 879, 661, 657, 655, 1302 879, 880, 653, 880, 881, 650, 881, 647, 646, 645, 1303 881, 882, 644, 882, 883, 643, 642, 883, 639, 883, 1304 883, 883, 883, 883, 884, 884, 884, 884, 884, 884, 1305 884, 884, 884, 884, 884, 884, 884, 885, 885, 885, 1306 885, 885, 885, 885, 885, 885, 885, 885, 885, 885, 1307 886, 638, 886, 636, 633, 632, 886, 887, 631, 887, 1308 1309 626, 600, 596, 887, 888, 594, 888, 592, 590, 584, 1310 888, 889, 578, 889, 890, 576, 890, 574, 572, 570, 1311 890, 891, 568, 891, 892, 566, 892, 564, 563, 562, 1312 892, 893, 559, 893, 894, 550, 894, 544, 541, 536, 1313 894, 895, 530, 895, 896, 527, 896, 505, 501, 499, 1314 896, 897, 497, 897, 898, 495, 898, 493, 491, 490, 1315 898, 899, 489, 899, 900, 488, 900, 474, 472, 471, 1316 900, 901, 470, 901, 902, 468, 902, 466, 902, 463, 1317 902, 903, 461, 903, 459, 903, 457, 903, 904, 904, 1318 453, 904, 904, 904, 438, 904, 905, 436, 905, 428, 1319 1320 426, 418, 905, 906, 416, 906, 414, 389, 387, 906, 1321 907, 385, 907, 383, 382, 381, 907, 908, 360, 908, 1322 909, 358, 909, 357, 353, 351, 909, 910, 349, 910, 1323 911, 347, 911, 343, 341, 340, 911, 912, 339, 912, 1324 913, 329, 913, 316, 293, 273, 913, 914, 271, 914, 1325 915, 269, 268, 915, 267, 915, 915, 915, 915, 915, 1326 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 1327 916, 916, 916, 917, 265, 917, 264, 259, 255, 917, 1328 918, 254, 918, 919, 250, 919, 247, 246, 235, 919, 1329 920, 234, 920, 921, 229, 921, 228, 225, 215, 921, 1330 1331 922, 213, 922, 923, 212, 923, 211, 205, 204, 923, 1332 924, 202, 924, 925, 197, 925, 177, 148, 146, 925, 1333 926, 145, 926, 927, 139, 927, 137, 135, 127, 927, 1334 928, 124, 928, 929, 123, 929, 119, 100, 97, 929, 1335 930, 94, 930, 92, 85, 71, 930, 931, 69, 931, 1336 932, 65, 932, 36, 33, 18, 932, 933, 11, 933, 1337 934, 4, 934, 3, 934, 0, 934, 935, 0, 935, 1338 0, 0, 0, 935, 936, 0, 936, 0, 0, 0, 1339 936, 937, 0, 937, 938, 0, 938, 0, 0, 0, 1340 938, 939, 0, 939, 940, 0, 940, 0, 0, 0, 1341 1342 940, 941, 0, 941, 942, 0, 942, 0, 0, 0, 1343 942, 943, 0, 943, 944, 0, 944, 0, 0, 0, 1344 944, 945, 0, 945, 946, 0, 946, 0, 0, 0, 1345 946, 947, 0, 947, 948, 0, 0, 948, 0, 948, 1346 948, 948, 948, 948, 949, 949, 949, 949, 949, 949, 1347 949, 949, 949, 949, 949, 949, 949, 950, 0, 950, 1348 0, 0, 0, 950, 951, 0, 951, 952, 0, 952, 1349 0, 0, 0, 952, 953, 0, 953, 954, 0, 954, 1350 0, 0, 0, 954, 955, 0, 955, 956, 0, 956, 1351 0, 0, 0, 956, 957, 0, 957, 958, 0, 958, 1352 1353 0, 0, 0, 958, 959, 0, 959, 960, 0, 960, 1354 0, 0, 0, 960, 961, 0, 961, 962, 0, 962, 1355 0, 0, 0, 962, 963, 0, 963, 964, 0, 964, 1356 0, 0, 0, 964, 965, 0, 965, 966, 0, 966, 1357 0, 0, 0, 966, 967, 0, 967, 0, 0, 0, 1358 967, 968, 0, 968, 969, 0, 969, 0, 0, 0, 1359 969, 970, 0, 970, 971, 0, 971, 0, 0, 0, 1360 971, 972, 0, 972, 973, 0, 973, 0, 0, 0, 1361 973, 974, 0, 974, 975, 0, 975, 976, 0, 976, 1362 977, 0, 0, 977, 0, 977, 977, 977, 977, 977, 1363 1364 978, 0, 978, 979, 979, 979, 979, 979, 979, 979, 1365 979, 979, 979, 979, 979, 979, 980, 0, 980, 0, 1366 0, 0, 980, 981, 0, 981, 982, 0, 982, 0, 1367 0, 0, 982, 983, 0, 983, 984, 0, 984, 985, 1368 0, 985, 986, 0, 0, 986, 0, 986, 986, 986, 1369 986, 986, 987, 0, 987, 988, 0, 988, 989, 0, 1370 989, 990, 0, 990, 991, 0, 991, 992, 0, 992, 1371 993, 0, 993, 994, 0, 994, 0, 0, 0, 994, 1372 995, 0, 995, 996, 0, 996, 0, 0, 0, 996, 1373 997, 0, 997, 998, 0, 998, 999, 0, 999, 1000, 1374 1375 0, 1000, 1001, 0, 1001, 0, 0, 0, 1001, 1002, 1376 0, 0, 1002, 0, 1002, 1002, 1002, 1002, 1002, 1003, 1377 0, 1003, 1004, 0, 1004, 1005, 0, 1005, 0, 0, 1378 0, 1005, 1006, 0, 1006, 0, 0, 0, 1006, 1007, 1379 0, 1007, 0, 0, 0, 1007, 1008, 0, 1008, 1009, 1380 0, 1009, 0, 0, 0, 1009, 1010, 0, 1010, 0, 1381 0, 0, 1010, 1011, 0, 1011, 0, 0, 0, 1011, 1382 1012, 0, 1012, 0, 0, 0, 1012, 1013, 0, 1013, 1383 0, 0, 0, 1013, 1014, 0, 1014, 0, 0, 0, 1384 1014, 1015, 0, 1015, 0, 0, 0, 1015, 1016, 0, 1385 1386 1016, 0, 0, 0, 1016, 1017, 0, 1017, 0, 0, 1387 0, 1017, 1018, 0, 1018, 0, 0, 0, 1018, 1019, 1388 0, 1019, 0, 0, 0, 1019, 1020, 0, 1020, 0, 1389 0, 0, 1020, 1021, 0, 1021, 0, 0, 0, 1021, 1390 1022, 0, 1022, 0, 0, 0, 1022, 1023, 0, 1023, 1391 0, 0, 0, 1023, 1024, 0, 1024, 0, 0, 0, 1392 1024, 851, 851, 851, 851, 851, 851, 851, 851, 851, 1393 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 1394 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 1395 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 1396 1397 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 1398 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 1399 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 1400 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 1401 851, 851, 851, 851, 851, 851, 851 1077 5, 5, 5, 5, 5, 5, 5, 7, 8, 9, 1078 10, 37, 37, 20, 48, 9, 10, 512, 7, 8, 1079 13, 13, 13, 13, 13, 13, 15, 15, 15, 15, 1080 1081 15, 15, 20, 25, 48, 42, 53, 28, 27, 28, 1082 28, 28, 28, 28, 28, 512, 824, 25, 29, 25, 1083 27, 27, 27, 29, 53, 35, 7, 8, 9, 10, 1084 40, 42, 55, 29, 30, 40, 30, 30, 30, 30, 1085 30, 30, 35, 47, 35, 35, 125, 49, 125, 50, 1086 55, 56, 49, 30, 63, 51, 55, 30, 50, 49, 1087 56, 72, 30, 30, 47, 49, 47, 50, 30, 54, 1088 51, 50, 51, 40, 30, 60, 40, 86, 61, 54, 1089 30, 51, 107, 113, 823, 822, 54, 72, 30, 58, 1090 61, 30, 31, 60, 31, 31, 31, 31, 31, 31, 1091 1092 108, 58, 106, 86, 63, 107, 113, 106, 126, 58, 1093 126, 31, 45, 45, 45, 31, 58, 57, 45, 45, 1094 31, 45, 52, 45, 45, 821, 31, 52, 45, 57, 1095 57, 45, 31, 106, 108, 52, 140, 52, 31, 57, 1096 52, 128, 57, 128, 52, 59, 31, 38, 112, 819, 1097 59, 38, 38, 112, 38, 114, 38, 38, 131, 38, 1098 131, 38, 140, 59, 79, 79, 79, 79, 79, 79, 1099 38, 38, 38, 66, 66, 66, 66, 66, 66, 112, 1100 154, 66, 81, 81, 81, 81, 81, 81, 59, 114, 1101 38, 59, 154, 38, 82, 82, 82, 82, 82, 82, 1102 1103 129, 67, 67, 130, 818, 59, 67, 103, 103, 103, 1104 103, 133, 298, 133, 129, 130, 129, 130, 298, 109, 1105 38, 38, 67, 67, 67, 67, 67, 67, 76, 76, 1106 134, 134, 134, 76, 103, 76, 105, 171, 105, 103, 1107 76, 105, 105, 105, 105, 105, 105, 161, 109, 76, 1108 76, 76, 76, 109, 110, 132, 132, 171, 132, 115, 1109 76, 813, 103, 104, 161, 104, 104, 104, 104, 104, 1110 104, 147, 110, 105, 148, 76, 109, 115, 76, 136, 1111 110, 136, 104, 76, 76, 115, 147, 76, 76, 138, 1112 149, 138, 148, 147, 143, 76, 151, 104, 76, 143, 1113 1114 76, 76, 76, 104, 76, 84, 152, 150, 149, 84, 1115 84, 153, 151, 157, 84, 84, 150, 84, 158, 84, 1116 156, 165, 162, 163, 152, 812, 808, 158, 84, 84, 1117 84, 159, 162, 153, 155, 157, 156, 143, 164, 155, 1118 167, 155, 165, 155, 155, 160, 163, 155, 84, 155, 1119 160, 84, 159, 159, 155, 155, 155, 168, 155, 169, 1120 170, 172, 167, 160, 166, 164, 213, 173, 213, 177, 1121 806, 175, 168, 176, 177, 236, 169, 179, 170, 84, 1122 98, 98, 98, 98, 98, 98, 175, 166, 172, 173, 1123 176, 181, 178, 175, 180, 179, 181, 98, 98, 271, 1124 1125 183, 98, 182, 178, 184, 180, 186, 200, 189, 236, 1126 803, 181, 98, 178, 178, 182, 185, 271, 98, 98, 1127 183, 189, 180, 187, 98, 102, 102, 102, 102, 102, 1128 102, 184, 188, 200, 440, 185, 187, 214, 215, 214, 1129 215, 241, 102, 102, 187, 188, 102, 188, 275, 186, 1130 204, 204, 186, 275, 217, 204, 218, 102, 218, 440, 1131 193, 193, 287, 102, 102, 193, 217, 241, 217, 102, 1132 192, 192, 192, 192, 192, 192, 219, 219, 192, 219, 1133 249, 193, 193, 193, 193, 193, 193, 195, 195, 287, 1134 285, 216, 195, 197, 197, 220, 802, 220, 197, 285, 1135 1136 197, 207, 207, 207, 207, 216, 249, 216, 195, 195, 1137 195, 195, 195, 195, 197, 197, 197, 197, 197, 197, 1138 221, 221, 221, 223, 224, 223, 224, 237, 237, 237, 1139 237, 237, 237, 207, 228, 228, 228, 228, 228, 228, 1140 229, 259, 229, 259, 237, 229, 229, 229, 229, 229, 1141 229, 228, 228, 234, 234, 228, 260, 234, 260, 237, 1142 541, 272, 277, 270, 284, 237, 228, 277, 263, 284, 1143 541, 281, 228, 228, 234, 234, 270, 229, 228, 272, 1144 234, 238, 238, 238, 238, 238, 238, 239, 239, 239, 1145 239, 239, 239, 240, 263, 240, 276, 281, 240, 240, 1146 1147 240, 240, 240, 240, 246, 239, 801, 800, 239, 248, 1148 248, 248, 248, 248, 248, 279, 276, 273, 274, 239, 1149 253, 253, 253, 253, 253, 253, 239, 246, 278, 246, 1150 279, 239, 246, 273, 282, 274, 279, 279, 246, 280, 1151 286, 248, 291, 283, 288, 290, 292, 291, 278, 282, 1152 246, 294, 253, 286, 246, 292, 295, 280, 246, 283, 1153 283, 293, 288, 290, 296, 297, 300, 301, 293, 299, 1154 297, 294, 302, 304, 295, 300, 303, 305, 304, 306, 1155 307, 302, 305, 301, 306, 296, 296, 308, 299, 309, 1156 314, 303, 311, 312, 313, 315, 316, 317, 319, 307, 1157 1158 318, 306, 309, 311, 320, 308, 321, 313, 312, 318, 1159 324, 322, 314, 325, 317, 326, 316, 327, 315, 324, 1160 319, 329, 330, 328, 386, 385, 329, 320, 321, 322, 1161 327, 328, 332, 326, 331, 331, 385, 330, 332, 331, 1162 386, 331, 339, 339, 339, 339, 340, 340, 340, 340, 1163 349, 350, 349, 350, 388, 799, 325, 356, 356, 356, 1164 356, 356, 356, 357, 357, 357, 357, 357, 357, 370, 1165 358, 392, 358, 388, 339, 358, 358, 358, 358, 358, 1166 358, 357, 389, 390, 357, 359, 359, 359, 359, 359, 1167 359, 389, 370, 392, 390, 357, 360, 360, 360, 360, 1168 1169 360, 360, 357, 403, 798, 365, 366, 357, 361, 361, 1170 361, 361, 361, 361, 365, 366, 372, 359, 362, 362, 1171 362, 362, 362, 362, 403, 395, 361, 396, 360, 361, 1172 365, 366, 368, 367, 372, 391, 362, 368, 387, 362, 1173 361, 395, 372, 400, 391, 393, 394, 361, 400, 396, 1174 362, 797, 361, 387, 393, 796, 367, 362, 367, 394, 1175 397, 367, 362, 368, 369, 371, 369, 367, 399, 369, 1176 369, 369, 369, 369, 369, 398, 397, 397, 402, 367, 1177 401, 404, 408, 367, 402, 405, 399, 367, 371, 415, 1178 371, 406, 404, 371, 413, 401, 408, 398, 410, 371, 1179 1180 412, 369, 401, 420, 405, 414, 406, 416, 417, 421, 1181 410, 371, 415, 422, 414, 371, 413, 417, 414, 371, 1182 423, 412, 416, 420, 424, 425, 426, 428, 422, 430, 1183 431, 421, 435, 432, 433, 426, 434, 436, 443, 424, 1184 438, 435, 423, 437, 428, 425, 442, 438, 445, 443, 1185 439, 431, 430, 432, 433, 436, 437, 439, 434, 441, 1186 446, 504, 447, 442, 504, 473, 470, 441, 447, 446, 1187 445, 456, 456, 456, 456, 470, 494, 441, 467, 467, 1188 467, 467, 467, 467, 468, 468, 468, 468, 468, 468, 1189 473, 470, 474, 494, 472, 495, 467, 497, 499, 467, 1190 1191 498, 501, 468, 472, 500, 468, 506, 505, 495, 794, 1192 467, 499, 497, 503, 501, 507, 468, 467, 474, 472, 1193 498, 515, 467, 468, 503, 506, 500, 505, 468, 469, 1194 469, 469, 469, 469, 469, 471, 507, 471, 515, 793, 1195 471, 471, 471, 471, 471, 471, 476, 476, 476, 476, 1196 476, 476, 477, 477, 477, 477, 477, 477, 478, 514, 1197 478, 469, 508, 478, 478, 478, 478, 478, 478, 502, 1198 477, 508, 471, 477, 502, 509, 510, 511, 522, 513, 1199 509, 514, 523, 516, 477, 524, 520, 510, 513, 517, 1200 511, 477, 516, 525, 517, 520, 477, 527, 528, 523, 1201 1202 524, 529, 525, 531, 522, 536, 532, 537, 534, 538, 1203 528, 532, 535, 543, 527, 540, 529, 534, 531, 544, 1204 537, 535, 542, 540, 546, 549, 538, 536, 547, 542, 1205 550, 544, 592, 546, 597, 543, 791, 790, 547, 592, 1206 596, 597, 549, 550, 569, 569, 569, 569, 569, 569, 1207 570, 570, 570, 570, 570, 570, 571, 571, 571, 571, 1208 571, 571, 572, 596, 572, 610, 593, 572, 572, 572, 1209 572, 572, 572, 594, 571, 593, 569, 571, 575, 575, 1210 575, 575, 575, 575, 595, 610, 594, 600, 571, 598, 1211 600, 599, 603, 591, 602, 571, 575, 598, 591, 575, 1212 1213 571, 595, 577, 577, 577, 577, 577, 577, 599, 602, 1214 575, 591, 601, 604, 603, 605, 606, 575, 607, 606, 1215 577, 608, 575, 577, 609, 601, 612, 611, 613, 615, 1216 604, 616, 620, 617, 577, 607, 611, 605, 621, 609, 1217 623, 577, 627, 634, 612, 637, 577, 626, 608, 627, 1218 613, 615, 620, 634, 616, 617, 626, 623, 636, 666, 1219 637, 669, 672, 673, 680, 621, 673, 636, 655, 655, 1220 655, 655, 655, 655, 656, 656, 656, 656, 656, 656, 1221 666, 667, 672, 670, 675, 680, 655, 669, 671, 655, 1222 670, 667, 656, 671, 674, 656, 678, 674, 677, 681, 1223 1224 655, 683, 675, 684, 677, 678, 656, 655, 679, 732, 1225 683, 679, 655, 656, 682, 696, 732, 682, 656, 657, 1226 657, 657, 657, 657, 657, 686, 685, 681, 684, 685, 1227 688, 687, 689, 691, 693, 696, 697, 700, 686, 687, 1228 688, 699, 691, 723, 722, 689, 700, 718, 719, 699, 1229 720, 657, 724, 721, 722, 720, 783, 693, 697, 707, 1230 707, 707, 707, 707, 707, 719, 723, 718, 721, 725, 1231 726, 727, 725, 729, 731, 735, 729, 731, 724, 733, 1232 754, 734, 733, 726, 734, 756, 757, 759, 763, 758, 1233 735, 707, 758, 760, 762, 766, 760, 764, 727, 767, 1234 1235 764, 769, 767, 784, 757, 768, 756, 754, 768, 759, 1236 769, 785, 762, 763, 787, 789, 786, 766, 785, 786, 1237 782, 781, 788, 787, 784, 788, 792, 795, 804, 792, 1238 795, 805, 789, 814, 815, 807, 805, 804, 807, 809, 1239 810, 811, 809, 810, 811, 816, 820, 817, 816, 815, 1240 817, 780, 779, 814, 778, 777, 776, 775, 774, 773, 1241 772, 771, 770, 765, 761, 755, 753, 752, 820, 826, 1242 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, 1243 826, 827, 827, 827, 827, 827, 827, 827, 827, 827, 1244 827, 827, 827, 828, 828, 828, 828, 828, 828, 828, 1245 1246 828, 828, 828, 828, 828, 829, 751, 750, 829, 829, 1247 829, 829, 829, 829, 830, 749, 748, 747, 830, 830, 1248 830, 830, 830, 831, 831, 831, 831, 831, 831, 831, 1249 831, 831, 831, 831, 831, 832, 746, 745, 832, 832, 1250 832, 832, 832, 832, 833, 744, 833, 833, 743, 833, 1251 833, 833, 833, 833, 742, 833, 834, 741, 740, 834, 1252 834, 834, 834, 834, 834, 834, 739, 834, 835, 835, 1253 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 1254 836, 836, 836, 738, 737, 736, 836, 837, 730, 728, 1255 837, 837, 837, 837, 837, 837, 838, 838, 717, 716, 1256 1257 715, 838, 839, 839, 714, 713, 712, 839, 840, 840, 1258 711, 710, 709, 840, 841, 841, 706, 705, 704, 841, 1259 842, 842, 703, 698, 695, 842, 843, 843, 694, 692, 1260 690, 843, 844, 844, 676, 668, 665, 844, 845, 845, 1261 660, 658, 646, 845, 846, 846, 642, 640, 638, 846, 1262 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 1263 847, 847, 848, 848, 849, 849, 849, 849, 849, 635, 1264 849, 850, 850, 850, 851, 851, 633, 632, 631, 851, 1265 852, 852, 630, 629, 628, 852, 853, 853, 625, 624, 1266 622, 853, 854, 854, 855, 855, 619, 618, 614, 855, 1267 1268 856, 856, 857, 589, 585, 857, 857, 857, 857, 857, 1269 857, 858, 858, 858, 858, 858, 858, 858, 858, 858, 1270 858, 858, 858, 859, 859, 859, 859, 859, 859, 859, 1271 859, 859, 859, 859, 859, 860, 860, 583, 581, 579, 1272 860, 861, 861, 573, 567, 565, 861, 862, 862, 563, 1273 561, 559, 862, 863, 863, 864, 864, 557, 555, 553, 1274 864, 865, 865, 866, 866, 552, 551, 548, 866, 867, 1275 867, 868, 868, 545, 539, 533, 868, 869, 869, 870, 1276 870, 530, 526, 521, 870, 871, 871, 872, 872, 519, 1277 518, 496, 872, 873, 873, 874, 874, 492, 490, 488, 1278 1279 874, 875, 875, 876, 876, 486, 876, 484, 876, 877, 1280 877, 482, 877, 481, 877, 878, 878, 878, 878, 878, 1281 480, 878, 879, 879, 479, 465, 463, 879, 880, 880, 1282 462, 461, 459, 880, 881, 881, 457, 454, 452, 881, 1283 882, 882, 883, 883, 450, 448, 444, 883, 884, 884, 1284 885, 885, 429, 427, 419, 885, 886, 886, 887, 887, 1285 418, 411, 409, 887, 888, 888, 889, 407, 383, 889, 1286 889, 889, 889, 889, 889, 890, 890, 890, 890, 890, 1287 890, 890, 890, 890, 890, 890, 890, 891, 891, 381, 1288 379, 377, 891, 892, 892, 893, 893, 376, 375, 354, 1289 1290 893, 894, 894, 895, 895, 352, 351, 347, 895, 896, 1291 896, 897, 897, 345, 343, 341, 897, 898, 898, 899, 1292 899, 337, 335, 334, 899, 900, 900, 901, 901, 333, 1293 323, 310, 901, 902, 902, 903, 903, 289, 268, 266, 1294 903, 904, 904, 265, 264, 262, 904, 905, 905, 906, 1295 906, 261, 256, 252, 906, 907, 907, 908, 908, 251, 1296 908, 247, 908, 909, 909, 244, 243, 232, 909, 910, 1297 910, 231, 226, 225, 910, 911, 911, 912, 912, 222, 1298 212, 210, 912, 913, 913, 914, 914, 209, 208, 202, 1299 914, 915, 915, 916, 916, 201, 199, 194, 916, 917, 1300 1301 917, 918, 918, 174, 145, 144, 918, 919, 919, 920, 1302 920, 139, 137, 135, 920, 921, 921, 922, 127, 124, 1303 922, 922, 922, 922, 922, 922, 923, 923, 923, 923, 1304 923, 923, 923, 923, 923, 923, 923, 923, 924, 924, 1305 123, 119, 100, 924, 925, 925, 926, 926, 97, 94, 1306 92, 926, 927, 927, 928, 928, 85, 71, 69, 928, 1307 929, 929, 930, 930, 65, 44, 39, 930, 931, 931, 1308 932, 932, 36, 33, 18, 932, 933, 933, 934, 934, 1309 11, 4, 3, 934, 935, 935, 936, 936, 0, 0, 1310 0, 936, 937, 937, 938, 938, 0, 0, 0, 938, 1311 1312 939, 939, 940, 940, 0, 0, 0, 940, 941, 941, 1313 0, 0, 0, 941, 942, 942, 943, 943, 0, 0, 1314 0, 943, 944, 944, 945, 945, 0, 0, 0, 945, 1315 946, 946, 947, 947, 0, 0, 0, 947, 948, 948, 1316 949, 949, 950, 950, 951, 0, 0, 951, 951, 951, 1317 951, 951, 951, 952, 952, 953, 953, 953, 953, 953, 1318 953, 953, 953, 953, 953, 953, 953, 954, 954, 0, 1319 0, 0, 954, 955, 955, 956, 956, 0, 0, 0, 1320 956, 957, 957, 958, 958, 959, 959, 960, 0, 0, 1321 960, 960, 960, 960, 960, 960, 961, 961, 962, 962, 1322 1323 963, 963, 964, 964, 965, 965, 966, 966, 967, 967, 1324 968, 968, 0, 0, 0, 968, 969, 969, 970, 970, 1325 0, 0, 0, 970, 971, 971, 972, 972, 973, 973, 1326 974, 974, 975, 975, 0, 0, 0, 975, 976, 0, 1327 0, 976, 976, 976, 976, 976, 976, 977, 977, 978, 1328 978, 979, 979, 0, 0, 0, 979, 980, 980, 0, 1329 0, 0, 980, 981, 981, 0, 0, 0, 981, 982, 1330 982, 983, 983, 0, 0, 0, 983, 984, 984, 0, 1331 0, 0, 984, 985, 985, 0, 0, 0, 985, 986, 1332 986, 0, 0, 0, 986, 987, 987, 0, 0, 0, 1333 1334 987, 988, 988, 0, 0, 0, 988, 989, 989, 0, 1335 0, 0, 989, 990, 990, 0, 0, 0, 990, 991, 1336 991, 0, 0, 0, 991, 992, 992, 0, 0, 0, 1337 992, 993, 993, 0, 0, 0, 993, 994, 994, 0, 1338 0, 0, 994, 995, 995, 0, 0, 0, 995, 996, 1339 996, 0, 0, 0, 996, 997, 997, 0, 0, 0, 1340 997, 998, 998, 0, 0, 0, 998, 825, 825, 825, 1341 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 1342 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 1343 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 1344 1345 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 1346 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 1347 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 1348 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 1349 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 1350 825, 825 1402 1351 } ; 1403 1352 1404 1353 /* Table of booleans, true if rule could match eol. */ 1405 static yyconst flex_int32_t yy_rule_can_match_eol[17 9] =1354 static yyconst flex_int32_t yy_rule_can_match_eol[172] = 1406 1355 { 0, 1407 1356 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, … … 1410 1359 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1411 1360 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1412 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1,1361 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1413 1362 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1414 1363 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1415 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,};1364 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; 1416 1365 1417 1366 static yy_state_type yy_last_accepting_state; … … 1441 1390 * Created On : Sat Sep 22 08:58:10 2001 1442 1391 * Last Modified By : Peter A. Buhr 1443 * Last Modified On : Thu Oct 8 16:13:0720151444 * Update Count : 4041392 * Last Modified On : Fri Jun 19 11:10:14 2015 1393 * Update Count : 392 1445 1394 */ 1446 1395 #line 20 "lex.ll" … … 1499 1448 1500 1449 1501 #line 1 502"Parser/lex.cc"1450 #line 1451 "Parser/lex.cc" 1502 1451 1503 1452 #define INITIAL 0 … … 1694 1643 1695 1644 /* line directives */ 1696 #line 16 97"Parser/lex.cc"1645 #line 1646 "Parser/lex.cc" 1697 1646 1698 1647 if ( !(yy_init) ) … … 1748 1697 { 1749 1698 yy_current_state = (int) yy_def[yy_current_state]; 1750 if ( yy_current_state >= 8 52)1699 if ( yy_current_state >= 826 ) 1751 1700 yy_c = yy_meta[(unsigned int) yy_c]; 1752 1701 } … … 1754 1703 ++yy_cp; 1755 1704 } 1756 while ( yy_base[yy_current_state] != 2 762);1705 while ( yy_base[yy_current_state] != 2568 ); 1757 1706 1758 1707 yy_find_action: … … 1901 1850 YY_RULE_SETUP 1902 1851 #line 184 "lex.ll" 1903 { KEYWORD_RETURN(AT ); } // CFA1852 { KEYWORD_RETURN(ATOMIC); } // C11 1904 1853 YY_BREAK 1905 1854 case 18: 1906 1855 YY_RULE_SETUP 1907 1856 #line 185 "lex.ll" 1908 { KEYWORD_RETURN(AT OMIC); } // C111857 { KEYWORD_RETURN(ATTRIBUTE); } // GCC 1909 1858 YY_BREAK 1910 1859 case 19: … … 1916 1865 YY_RULE_SETUP 1917 1866 #line 187 "lex.ll" 1918 { KEYWORD_RETURN(A TTRIBUTE); } // GCC1867 { KEYWORD_RETURN(AUTO); } 1919 1868 YY_BREAK 1920 1869 case 21: 1921 1870 YY_RULE_SETUP 1922 1871 #line 188 "lex.ll" 1923 { KEYWORD_RETURN( AUTO); }1872 { KEYWORD_RETURN(BOOL); } // C99 1924 1873 YY_BREAK 1925 1874 case 22: 1926 1875 YY_RULE_SETUP 1927 1876 #line 189 "lex.ll" 1928 { KEYWORD_RETURN(B OOL); } // C991877 { KEYWORD_RETURN(BREAK); } 1929 1878 YY_BREAK 1930 1879 case 23: 1931 1880 YY_RULE_SETUP 1932 1881 #line 190 "lex.ll" 1933 { KEYWORD_RETURN( BREAK); }1882 { KEYWORD_RETURN(CASE); } 1934 1883 YY_BREAK 1935 1884 case 24: 1936 1885 YY_RULE_SETUP 1937 1886 #line 191 "lex.ll" 1938 { KEYWORD_RETURN(CA SE); }1887 { KEYWORD_RETURN(CATCH); } // CFA 1939 1888 YY_BREAK 1940 1889 case 25: 1941 1890 YY_RULE_SETUP 1942 1891 #line 192 "lex.ll" 1943 { KEYWORD_RETURN(C ATCH); } // CFA1892 { KEYWORD_RETURN(CHAR); } 1944 1893 YY_BREAK 1945 1894 case 26: 1946 1895 YY_RULE_SETUP 1947 1896 #line 193 "lex.ll" 1948 { KEYWORD_RETURN(C ATCHRESUME); }// CFA1897 { KEYWORD_RETURN(CHOOSE); } // CFA 1949 1898 YY_BREAK 1950 1899 case 27: 1951 1900 YY_RULE_SETUP 1952 1901 #line 194 "lex.ll" 1953 { KEYWORD_RETURN(C HAR); }1902 { KEYWORD_RETURN(COMPLEX); } // C99 1954 1903 YY_BREAK 1955 1904 case 28: 1956 1905 YY_RULE_SETUP 1957 1906 #line 195 "lex.ll" 1958 { KEYWORD_RETURN(C HOOSE); } // CFA1907 { KEYWORD_RETURN(COMPLEX); } // GCC 1959 1908 YY_BREAK 1960 1909 case 29: 1961 1910 YY_RULE_SETUP 1962 1911 #line 196 "lex.ll" 1963 { KEYWORD_RETURN(COMPLEX); } // C991912 { KEYWORD_RETURN(COMPLEX); } // GCC 1964 1913 YY_BREAK 1965 1914 case 30: 1966 1915 YY_RULE_SETUP 1967 1916 #line 197 "lex.ll" 1968 { KEYWORD_RETURN(CO MPLEX); } // GCC1917 { KEYWORD_RETURN(CONST); } 1969 1918 YY_BREAK 1970 1919 case 31: 1971 1920 YY_RULE_SETUP 1972 1921 #line 198 "lex.ll" 1973 { KEYWORD_RETURN(CO MPLEX); }// GCC1922 { KEYWORD_RETURN(CONST); } // GCC 1974 1923 YY_BREAK 1975 1924 case 32: 1976 1925 YY_RULE_SETUP 1977 1926 #line 199 "lex.ll" 1978 { KEYWORD_RETURN(CONST); } 1927 { KEYWORD_RETURN(CONST); } // GCC 1979 1928 YY_BREAK 1980 1929 case 33: 1981 1930 YY_RULE_SETUP 1982 1931 #line 200 "lex.ll" 1983 { KEYWORD_RETURN(CON ST); } // GCC1932 { KEYWORD_RETURN(CONTEXT); } // CFA 1984 1933 YY_BREAK 1985 1934 case 34: 1986 1935 YY_RULE_SETUP 1987 1936 #line 201 "lex.ll" 1988 { KEYWORD_RETURN(CON ST); } // GCC1937 { KEYWORD_RETURN(CONTINUE); } 1989 1938 YY_BREAK 1990 1939 case 35: 1991 1940 YY_RULE_SETUP 1992 1941 #line 202 "lex.ll" 1993 { KEYWORD_RETURN( CONTEXT); } // CFA1942 { KEYWORD_RETURN(DEFAULT); } 1994 1943 YY_BREAK 1995 1944 case 36: 1996 1945 YY_RULE_SETUP 1997 1946 #line 203 "lex.ll" 1998 { KEYWORD_RETURN( CONTINUE); }1947 { KEYWORD_RETURN(DO); } 1999 1948 YY_BREAK 2000 1949 case 37: 2001 1950 YY_RULE_SETUP 2002 1951 #line 204 "lex.ll" 2003 { KEYWORD_RETURN(D EFAULT); }1952 { KEYWORD_RETURN(DOUBLE); } 2004 1953 YY_BREAK 2005 1954 case 38: 2006 1955 YY_RULE_SETUP 2007 1956 #line 205 "lex.ll" 2008 { KEYWORD_RETURN(D ISABLE); }// CFA1957 { KEYWORD_RETURN(DTYPE); } // CFA 2009 1958 YY_BREAK 2010 1959 case 39: 2011 1960 YY_RULE_SETUP 2012 1961 #line 206 "lex.ll" 2013 { KEYWORD_RETURN( DO); }1962 { KEYWORD_RETURN(ELSE); } 2014 1963 YY_BREAK 2015 1964 case 40: 2016 1965 YY_RULE_SETUP 2017 1966 #line 207 "lex.ll" 2018 { KEYWORD_RETURN( DOUBLE); }1967 { KEYWORD_RETURN(ENUM); } 2019 1968 YY_BREAK 2020 1969 case 41: 2021 1970 YY_RULE_SETUP 2022 1971 #line 208 "lex.ll" 2023 { KEYWORD_RETURN( DTYPE); } // CFA1972 { KEYWORD_RETURN(EXTENSION); } // GCC 2024 1973 YY_BREAK 2025 1974 case 42: 2026 1975 YY_RULE_SETUP 2027 1976 #line 209 "lex.ll" 2028 { KEYWORD_RETURN(E LSE); }1977 { KEYWORD_RETURN(EXTERN); } 2029 1978 YY_BREAK 2030 1979 case 43: 2031 1980 YY_RULE_SETUP 2032 1981 #line 210 "lex.ll" 2033 { KEYWORD_RETURN( ENABLE); }// CFA1982 { KEYWORD_RETURN(FALLTHRU); } // CFA 2034 1983 YY_BREAK 2035 1984 case 44: 2036 1985 YY_RULE_SETUP 2037 1986 #line 211 "lex.ll" 2038 { KEYWORD_RETURN( ENUM); }1987 { KEYWORD_RETURN(FINALLY); } // CFA 2039 1988 YY_BREAK 2040 1989 case 45: 2041 1990 YY_RULE_SETUP 2042 1991 #line 212 "lex.ll" 2043 { KEYWORD_RETURN( EXTENSION); } // GCC1992 { KEYWORD_RETURN(FLOAT); } 2044 1993 YY_BREAK 2045 1994 case 46: 2046 1995 YY_RULE_SETUP 2047 1996 #line 213 "lex.ll" 2048 { KEYWORD_RETURN( EXTERN); }1997 { KEYWORD_RETURN(FLOAT); } // GCC 2049 1998 YY_BREAK 2050 1999 case 47: 2051 2000 YY_RULE_SETUP 2052 2001 #line 214 "lex.ll" 2053 { KEYWORD_RETURN(F ALLTHRU); } // CFA2002 { KEYWORD_RETURN(FOR); } 2054 2003 YY_BREAK 2055 2004 case 48: 2056 2005 YY_RULE_SETUP 2057 2006 #line 215 "lex.ll" 2058 { KEYWORD_RETURN(F INALLY); }// CFA2007 { KEYWORD_RETURN(FORALL); } // CFA 2059 2008 YY_BREAK 2060 2009 case 49: 2061 2010 YY_RULE_SETUP 2062 2011 #line 216 "lex.ll" 2063 { KEYWORD_RETURN(F LOAT); }2012 { KEYWORD_RETURN(FORTRAN); } 2064 2013 YY_BREAK 2065 2014 case 50: 2066 2015 YY_RULE_SETUP 2067 2016 #line 217 "lex.ll" 2068 { KEYWORD_RETURN(F LOAT); } // GCC2017 { KEYWORD_RETURN(FTYPE); } // CFA 2069 2018 YY_BREAK 2070 2019 case 51: 2071 2020 YY_RULE_SETUP 2072 2021 #line 218 "lex.ll" 2073 { KEYWORD_RETURN( FOR); }2022 { KEYWORD_RETURN(GENERIC); } // C11 2074 2023 YY_BREAK 2075 2024 case 52: 2076 2025 YY_RULE_SETUP 2077 2026 #line 219 "lex.ll" 2078 { KEYWORD_RETURN( FORALL); } // CFA2027 { KEYWORD_RETURN(GOTO); } 2079 2028 YY_BREAK 2080 2029 case 53: 2081 2030 YY_RULE_SETUP 2082 2031 #line 220 "lex.ll" 2083 { KEYWORD_RETURN( FORTRAN); }2032 { KEYWORD_RETURN(IF); } 2084 2033 YY_BREAK 2085 2034 case 54: 2086 2035 YY_RULE_SETUP 2087 2036 #line 221 "lex.ll" 2088 { KEYWORD_RETURN( FTYPE); } // CFA2037 { KEYWORD_RETURN(IMAGINARY); } // C99 2089 2038 YY_BREAK 2090 2039 case 55: 2091 2040 YY_RULE_SETUP 2092 2041 #line 222 "lex.ll" 2093 { KEYWORD_RETURN( GENERIC); } // C112042 { KEYWORD_RETURN(IMAGINARY); } // GCC 2094 2043 YY_BREAK 2095 2044 case 56: 2096 2045 YY_RULE_SETUP 2097 2046 #line 223 "lex.ll" 2098 { KEYWORD_RETURN( GOTO); }2047 { KEYWORD_RETURN(IMAGINARY); } // GCC 2099 2048 YY_BREAK 2100 2049 case 57: 2101 2050 YY_RULE_SETUP 2102 2051 #line 224 "lex.ll" 2103 { KEYWORD_RETURN(I F); }2052 { KEYWORD_RETURN(INLINE); } // C99 2104 2053 YY_BREAK 2105 2054 case 58: 2106 2055 YY_RULE_SETUP 2107 2056 #line 225 "lex.ll" 2108 { KEYWORD_RETURN(I MAGINARY); } // C992057 { KEYWORD_RETURN(INLINE); } // GCC 2109 2058 YY_BREAK 2110 2059 case 59: 2111 2060 YY_RULE_SETUP 2112 2061 #line 226 "lex.ll" 2113 { KEYWORD_RETURN(I MAGINARY); }// GCC2062 { KEYWORD_RETURN(INLINE); } // GCC 2114 2063 YY_BREAK 2115 2064 case 60: 2116 2065 YY_RULE_SETUP 2117 2066 #line 227 "lex.ll" 2118 { KEYWORD_RETURN(I MAGINARY); } // GCC2067 { KEYWORD_RETURN(INT); } 2119 2068 YY_BREAK 2120 2069 case 61: 2121 2070 YY_RULE_SETUP 2122 2071 #line 228 "lex.ll" 2123 { KEYWORD_RETURN(IN LINE); } // C992072 { KEYWORD_RETURN(INT); } // GCC 2124 2073 YY_BREAK 2125 2074 case 62: 2126 2075 YY_RULE_SETUP 2127 2076 #line 229 "lex.ll" 2128 { KEYWORD_RETURN( INLINE); } // GCC2077 { KEYWORD_RETURN(LABEL); } // GCC 2129 2078 YY_BREAK 2130 2079 case 63: 2131 2080 YY_RULE_SETUP 2132 2081 #line 230 "lex.ll" 2133 { KEYWORD_RETURN( INLINE); } // GCC2082 { KEYWORD_RETURN(LONG); } 2134 2083 YY_BREAK 2135 2084 case 64: 2136 2085 YY_RULE_SETUP 2137 2086 #line 231 "lex.ll" 2138 { KEYWORD_RETURN( INT); }2087 { KEYWORD_RETURN(LVALUE); } // CFA 2139 2088 YY_BREAK 2140 2089 case 65: 2141 2090 YY_RULE_SETUP 2142 2091 #line 232 "lex.ll" 2143 { KEYWORD_RETURN( INT); } // GCC2092 { KEYWORD_RETURN(NORETURN); } // C11 2144 2093 YY_BREAK 2145 2094 case 66: 2146 2095 YY_RULE_SETUP 2147 2096 #line 233 "lex.ll" 2148 { KEYWORD_RETURN( LABEL); } // GCC2097 { KEYWORD_RETURN(REGISTER); } 2149 2098 YY_BREAK 2150 2099 case 67: 2151 2100 YY_RULE_SETUP 2152 2101 #line 234 "lex.ll" 2153 { KEYWORD_RETURN( LONG); }2102 { KEYWORD_RETURN(RESTRICT); } // C99 2154 2103 YY_BREAK 2155 2104 case 68: 2156 2105 YY_RULE_SETUP 2157 2106 #line 235 "lex.ll" 2158 { KEYWORD_RETURN( LVALUE); } // CFA2107 { KEYWORD_RETURN(RESTRICT); } // GCC 2159 2108 YY_BREAK 2160 2109 case 69: 2161 2110 YY_RULE_SETUP 2162 2111 #line 236 "lex.ll" 2163 { KEYWORD_RETURN( NORETURN); } // C112112 { KEYWORD_RETURN(RESTRICT); } // GCC 2164 2113 YY_BREAK 2165 2114 case 70: 2166 2115 YY_RULE_SETUP 2167 2116 #line 237 "lex.ll" 2168 { KEYWORD_RETURN(RE GISTER); }2117 { KEYWORD_RETURN(RETURN); } 2169 2118 YY_BREAK 2170 2119 case 71: 2171 2120 YY_RULE_SETUP 2172 2121 #line 238 "lex.ll" 2173 { KEYWORD_RETURN( RESTRICT); } // C992122 { KEYWORD_RETURN(SHORT); } 2174 2123 YY_BREAK 2175 2124 case 72: 2176 2125 YY_RULE_SETUP 2177 2126 #line 239 "lex.ll" 2178 { KEYWORD_RETURN( RESTRICT); } // GCC2127 { KEYWORD_RETURN(SIGNED); } 2179 2128 YY_BREAK 2180 2129 case 73: 2181 2130 YY_RULE_SETUP 2182 2131 #line 240 "lex.ll" 2183 { KEYWORD_RETURN( RESTRICT); }// GCC2132 { KEYWORD_RETURN(SIGNED); } // GCC 2184 2133 YY_BREAK 2185 2134 case 74: 2186 2135 YY_RULE_SETUP 2187 2136 #line 241 "lex.ll" 2188 { KEYWORD_RETURN( RETURN); }2137 { KEYWORD_RETURN(SIGNED); } // GCC 2189 2138 YY_BREAK 2190 2139 case 75: 2191 2140 YY_RULE_SETUP 2192 2141 #line 242 "lex.ll" 2193 { KEYWORD_RETURN(S HORT); }2142 { KEYWORD_RETURN(SIZEOF); } 2194 2143 YY_BREAK 2195 2144 case 76: 2196 2145 YY_RULE_SETUP 2197 2146 #line 243 "lex.ll" 2198 { KEYWORD_RETURN(S IGNED); }2147 { KEYWORD_RETURN(STATIC); } 2199 2148 YY_BREAK 2200 2149 case 77: 2201 2150 YY_RULE_SETUP 2202 2151 #line 244 "lex.ll" 2203 { KEYWORD_RETURN(S IGNED); } // GCC2152 { KEYWORD_RETURN(STATICASSERT); } // C11 2204 2153 YY_BREAK 2205 2154 case 78: 2206 2155 YY_RULE_SETUP 2207 2156 #line 245 "lex.ll" 2208 { KEYWORD_RETURN(S IGNED); } // GCC2157 { KEYWORD_RETURN(STRUCT); } 2209 2158 YY_BREAK 2210 2159 case 79: 2211 2160 YY_RULE_SETUP 2212 2161 #line 246 "lex.ll" 2213 { KEYWORD_RETURN(S IZEOF); }2162 { KEYWORD_RETURN(SWITCH); } 2214 2163 YY_BREAK 2215 2164 case 80: 2216 2165 YY_RULE_SETUP 2217 2166 #line 247 "lex.ll" 2218 { KEYWORD_RETURN( STATIC); }2167 { KEYWORD_RETURN(THREADLOCAL); } // C11 2219 2168 YY_BREAK 2220 2169 case 81: 2221 2170 YY_RULE_SETUP 2222 2171 #line 248 "lex.ll" 2223 { KEYWORD_RETURN( STATICASSERT); } // C112172 { KEYWORD_RETURN(THROW); } // CFA 2224 2173 YY_BREAK 2225 2174 case 82: 2226 2175 YY_RULE_SETUP 2227 2176 #line 249 "lex.ll" 2228 { KEYWORD_RETURN( STRUCT); }2177 { KEYWORD_RETURN(TRY); } // CFA 2229 2178 YY_BREAK 2230 2179 case 83: 2231 2180 YY_RULE_SETUP 2232 2181 #line 250 "lex.ll" 2233 { KEYWORD_RETURN( SWITCH); }2182 { KEYWORD_RETURN(TYPE); } // CFA 2234 2183 YY_BREAK 2235 2184 case 84: 2236 2185 YY_RULE_SETUP 2237 2186 #line 251 "lex.ll" 2238 { KEYWORD_RETURN(T HREADLOCAL); } // C112187 { KEYWORD_RETURN(TYPEDEF); } 2239 2188 YY_BREAK 2240 2189 case 85: 2241 2190 YY_RULE_SETUP 2242 2191 #line 252 "lex.ll" 2243 { KEYWORD_RETURN(T HROW); } // CFA2192 { KEYWORD_RETURN(TYPEOF); } // GCC 2244 2193 YY_BREAK 2245 2194 case 86: 2246 2195 YY_RULE_SETUP 2247 2196 #line 253 "lex.ll" 2248 { KEYWORD_RETURN(T HROWRESUME); } // CFA2197 { KEYWORD_RETURN(TYPEOF); } // GCC 2249 2198 YY_BREAK 2250 2199 case 87: 2251 2200 YY_RULE_SETUP 2252 2201 #line 254 "lex.ll" 2253 { KEYWORD_RETURN(T RY); } // CFA2202 { KEYWORD_RETURN(TYPEOF); } // GCC 2254 2203 YY_BREAK 2255 2204 case 88: 2256 2205 YY_RULE_SETUP 2257 2206 #line 255 "lex.ll" 2258 { KEYWORD_RETURN( TYPE); } // CFA2207 { KEYWORD_RETURN(UNION); } 2259 2208 YY_BREAK 2260 2209 case 89: 2261 2210 YY_RULE_SETUP 2262 2211 #line 256 "lex.ll" 2263 { KEYWORD_RETURN( TYPEDEF); }2212 { KEYWORD_RETURN(UNSIGNED); } 2264 2213 YY_BREAK 2265 2214 case 90: 2266 2215 YY_RULE_SETUP 2267 2216 #line 257 "lex.ll" 2268 { KEYWORD_RETURN( TYPEOF); } // GCC2217 { KEYWORD_RETURN(VOID); } 2269 2218 YY_BREAK 2270 2219 case 91: 2271 2220 YY_RULE_SETUP 2272 2221 #line 258 "lex.ll" 2273 { KEYWORD_RETURN( TYPEOF); } // GCC2222 { KEYWORD_RETURN(VOLATILE); } 2274 2223 YY_BREAK 2275 2224 case 92: 2276 2225 YY_RULE_SETUP 2277 2226 #line 259 "lex.ll" 2278 { KEYWORD_RETURN( TYPEOF); }// GCC2227 { KEYWORD_RETURN(VOLATILE); } // GCC 2279 2228 YY_BREAK 2280 2229 case 93: 2281 2230 YY_RULE_SETUP 2282 2231 #line 260 "lex.ll" 2283 { KEYWORD_RETURN( UNION); }2232 { KEYWORD_RETURN(VOLATILE); } // GCC 2284 2233 YY_BREAK 2285 2234 case 94: 2286 2235 YY_RULE_SETUP 2287 2236 #line 261 "lex.ll" 2288 { KEYWORD_RETURN(UNSIGNED); } 2289 YY_BREAK 2237 { KEYWORD_RETURN(WHILE); } 2238 YY_BREAK 2239 /* identifier */ 2290 2240 case 95: 2291 2241 YY_RULE_SETUP 2292 #line 26 2"lex.ll"2293 { KEYWORD_RETURN(VOID); }2242 #line 264 "lex.ll" 2243 { IDENTIFIER_RETURN(); } 2294 2244 YY_BREAK 2295 2245 case 96: 2296 2246 YY_RULE_SETUP 2297 #line 26 3"lex.ll"2298 { KEYWORD_RETURN(VOLATILE); }2247 #line 265 "lex.ll" 2248 { ATTRIBUTE_RETURN(); } 2299 2249 YY_BREAK 2300 2250 case 97: 2301 2251 YY_RULE_SETUP 2302 #line 26 4"lex.ll"2303 { KEYWORD_RETURN(VOLATILE); } // GCC2252 #line 266 "lex.ll" 2253 { BEGIN BKQUOTE; } 2304 2254 YY_BREAK 2305 2255 case 98: 2306 2256 YY_RULE_SETUP 2307 #line 26 5"lex.ll"2308 { KEYWORD_RETURN(VOLATILE); } // GCC2257 #line 267 "lex.ll" 2258 { IDENTIFIER_RETURN(); } 2309 2259 YY_BREAK 2310 2260 case 99: 2311 2261 YY_RULE_SETUP 2312 #line 26 6"lex.ll"2313 { KEYWORD_RETURN(WHILE); }2314 YY_BREAK 2315 /* identifier*/2262 #line 268 "lex.ll" 2263 { BEGIN 0; } 2264 YY_BREAK 2265 /* numeric constants */ 2316 2266 case 100: 2317 2267 YY_RULE_SETUP 2318 #line 2 69"lex.ll"2319 { IDENTIFIER_RETURN(); }2268 #line 271 "lex.ll" 2269 { NUMERIC_RETURN(ZERO); } // CFA 2320 2270 YY_BREAK 2321 2271 case 101: 2322 2272 YY_RULE_SETUP 2323 #line 27 0"lex.ll"2324 { ATTRIBUTE_RETURN(); }2273 #line 272 "lex.ll" 2274 { NUMERIC_RETURN(ONE); } // CFA 2325 2275 YY_BREAK 2326 2276 case 102: 2327 2277 YY_RULE_SETUP 2328 #line 27 1"lex.ll"2329 { BEGIN BKQUOTE; }2278 #line 273 "lex.ll" 2279 { NUMERIC_RETURN(INTEGERconstant); } 2330 2280 YY_BREAK 2331 2281 case 103: 2332 2282 YY_RULE_SETUP 2333 #line 27 2"lex.ll"2334 { IDENTIFIER_RETURN(); }2283 #line 274 "lex.ll" 2284 { NUMERIC_RETURN(INTEGERconstant); } 2335 2285 YY_BREAK 2336 2286 case 104: 2337 2287 YY_RULE_SETUP 2338 #line 273 "lex.ll" 2339 { BEGIN 0; } 2340 YY_BREAK 2341 /* numeric constants */ 2288 #line 275 "lex.ll" 2289 { NUMERIC_RETURN(INTEGERconstant); } 2290 YY_BREAK 2342 2291 case 105: 2343 2292 YY_RULE_SETUP 2344 2293 #line 276 "lex.ll" 2345 { NUMERIC_RETURN( ZERO); } // CFA2294 { NUMERIC_RETURN(FLOATINGconstant); } 2346 2295 YY_BREAK 2347 2296 case 106: 2348 2297 YY_RULE_SETUP 2349 2298 #line 277 "lex.ll" 2350 { NUMERIC_RETURN(ONE); } // CFA 2351 YY_BREAK 2299 { NUMERIC_RETURN(FLOATINGconstant); } 2300 YY_BREAK 2301 /* character constant, allows empty value */ 2352 2302 case 107: 2353 2303 YY_RULE_SETUP 2354 #line 2 78"lex.ll"2355 { NUMERIC_RETURN(INTEGERconstant); }2304 #line 280 "lex.ll" 2305 { BEGIN QUOTE; rm_underscore(); strtext = new std::string; *strtext += std::string( yytext ); } 2356 2306 YY_BREAK 2357 2307 case 108: 2358 2308 YY_RULE_SETUP 2359 #line 2 79"lex.ll"2360 { NUMERIC_RETURN(INTEGERconstant); }2309 #line 281 "lex.ll" 2310 { *strtext += std::string( yytext ); } 2361 2311 YY_BREAK 2362 2312 case 109: 2363 YY_RULE_SETUP 2364 #line 280 "lex.ll" 2365 { NUMERIC_RETURN(INTEGERconstant); } 2366 YY_BREAK 2313 /* rule 109 can match eol */ 2314 YY_RULE_SETUP 2315 #line 282 "lex.ll" 2316 { BEGIN 0; *strtext += std::string( yytext); RETURN_STR(CHARACTERconstant); } 2317 YY_BREAK 2318 /* ' stop highlighting */ 2319 /* string constant */ 2367 2320 case 110: 2368 2321 YY_RULE_SETUP 2369 #line 28 1"lex.ll"2370 { NUMERIC_RETURN(FLOATINGconstant); }2322 #line 286 "lex.ll" 2323 { BEGIN STRING; rm_underscore(); strtext = new std::string; *strtext += std::string( yytext ); } 2371 2324 YY_BREAK 2372 2325 case 111: 2373 2326 YY_RULE_SETUP 2374 #line 282 "lex.ll" 2375 { NUMERIC_RETURN(FLOATINGconstant); } 2376 YY_BREAK 2377 /* character constant, allows empty value */ 2327 #line 287 "lex.ll" 2328 { *strtext += std::string( yytext ); } 2329 YY_BREAK 2378 2330 case 112: 2379 YY_RULE_SETUP 2380 #line 285 "lex.ll" 2381 { BEGIN QUOTE; rm_underscore(); strtext = new std::string; *strtext += std::string( yytext ); } 2382 YY_BREAK 2331 /* rule 112 can match eol */ 2332 YY_RULE_SETUP 2333 #line 288 "lex.ll" 2334 { BEGIN 0; *strtext += std::string( yytext ); RETURN_STR(STRINGliteral); } 2335 YY_BREAK 2336 /* " stop highlighting */ 2337 /* common character/string constant */ 2383 2338 case 113: 2384 2339 YY_RULE_SETUP 2385 #line 2 86"lex.ll"2386 { *strtext += std::string( yytext ); }2340 #line 292 "lex.ll" 2341 { rm_underscore(); *strtext += std::string( yytext ); } 2387 2342 YY_BREAK 2388 2343 case 114: 2389 2344 /* rule 114 can match eol */ 2390 2345 YY_RULE_SETUP 2391 #line 287 "lex.ll" 2392 { BEGIN 0; *strtext += std::string( yytext); RETURN_STR(CHARACTERconstant); } 2393 YY_BREAK 2394 /* ' stop highlighting */ 2395 /* string constant */ 2346 #line 293 "lex.ll" 2347 {} // continuation (ALSO HANDLED BY CPP) 2348 YY_BREAK 2396 2349 case 115: 2397 2350 YY_RULE_SETUP 2398 #line 291 "lex.ll" 2399 { BEGIN STRING; rm_underscore(); strtext = new std::string; *strtext += std::string( yytext ); } 2400 YY_BREAK 2351 #line 294 "lex.ll" 2352 { *strtext += std::string( yytext ); } // unknown escape character 2353 YY_BREAK 2354 /* punctuation */ 2401 2355 case 116: 2402 2356 YY_RULE_SETUP 2403 #line 29 2"lex.ll"2404 { *strtext += std::string( yytext); }2357 #line 297 "lex.ll" 2358 { ASCIIOP_RETURN(); } 2405 2359 YY_BREAK 2406 2360 case 117: 2407 /* rule 117 can match eol */ 2408 YY_RULE_SETUP 2409 #line 293 "lex.ll" 2410 { BEGIN 0; *strtext += std::string( yytext ); RETURN_STR(STRINGliteral); } 2411 YY_BREAK 2412 /* " stop highlighting */ 2413 /* common character/string constant */ 2361 YY_RULE_SETUP 2362 #line 298 "lex.ll" 2363 { ASCIIOP_RETURN(); } 2364 YY_BREAK 2414 2365 case 118: 2415 2366 YY_RULE_SETUP 2416 #line 29 7"lex.ll"2417 { rm_underscore(); *strtext += std::string( yytext); }2367 #line 299 "lex.ll" 2368 { ASCIIOP_RETURN(); } 2418 2369 YY_BREAK 2419 2370 case 119: 2420 /* rule 119 can match eol */ 2421 YY_RULE_SETUP 2422 #line 298 "lex.ll" 2423 {} // continuation (ALSO HANDLED BY CPP) 2371 YY_RULE_SETUP 2372 #line 300 "lex.ll" 2373 { ASCIIOP_RETURN(); } 2424 2374 YY_BREAK 2425 2375 case 120: 2426 2376 YY_RULE_SETUP 2427 #line 299 "lex.ll" 2428 { *strtext += std::string( yytext ); } // unknown escape character 2429 YY_BREAK 2430 /* punctuation */ 2377 #line 301 "lex.ll" 2378 { ASCIIOP_RETURN(); } 2379 YY_BREAK 2431 2380 case 121: 2432 2381 YY_RULE_SETUP … … 2437 2386 YY_RULE_SETUP 2438 2387 #line 303 "lex.ll" 2439 { ASCIIOP_RETURN(); } 2388 { ASCIIOP_RETURN(); } // also operator 2440 2389 YY_BREAK 2441 2390 case 123: … … 2452 2401 YY_RULE_SETUP 2453 2402 #line 306 "lex.ll" 2403 { ASCIIOP_RETURN(); } // also operator 2404 YY_BREAK 2405 case 126: 2406 YY_RULE_SETUP 2407 #line 307 "lex.ll" 2408 { NAMEDOP_RETURN(ELLIPSIS); } 2409 YY_BREAK 2410 /* alternative C99 brackets, "<:" & "<:<:" handled by preprocessor */ 2411 case 127: 2412 YY_RULE_SETUP 2413 #line 310 "lex.ll" 2414 { RETURN_VAL('['); } 2415 YY_BREAK 2416 case 128: 2417 YY_RULE_SETUP 2418 #line 311 "lex.ll" 2419 { RETURN_VAL(']'); } 2420 YY_BREAK 2421 case 129: 2422 YY_RULE_SETUP 2423 #line 312 "lex.ll" 2424 { RETURN_VAL('{'); } 2425 YY_BREAK 2426 case 130: 2427 YY_RULE_SETUP 2428 #line 313 "lex.ll" 2429 { RETURN_VAL('}'); } 2430 YY_BREAK 2431 /* operators */ 2432 case 131: 2433 YY_RULE_SETUP 2434 #line 316 "lex.ll" 2454 2435 { ASCIIOP_RETURN(); } 2455 2436 YY_BREAK 2456 case 1 26:2457 YY_RULE_SETUP 2458 #line 3 07 "lex.ll"2437 case 132: 2438 YY_RULE_SETUP 2439 #line 317 "lex.ll" 2459 2440 { ASCIIOP_RETURN(); } 2460 2441 YY_BREAK 2461 case 127: 2462 YY_RULE_SETUP 2463 #line 308 "lex.ll" 2464 { ASCIIOP_RETURN(); } // also operator 2465 YY_BREAK 2466 case 128: 2467 YY_RULE_SETUP 2468 #line 309 "lex.ll" 2442 case 133: 2443 YY_RULE_SETUP 2444 #line 318 "lex.ll" 2469 2445 { ASCIIOP_RETURN(); } 2470 2446 YY_BREAK 2471 case 1 29:2472 YY_RULE_SETUP 2473 #line 31 0"lex.ll"2447 case 134: 2448 YY_RULE_SETUP 2449 #line 319 "lex.ll" 2474 2450 { ASCIIOP_RETURN(); } 2475 2451 YY_BREAK 2476 case 130:2477 YY_RULE_SETUP2478 #line 311 "lex.ll"2479 { ASCIIOP_RETURN(); } // also operator2480 YY_BREAK2481 case 131:2482 YY_RULE_SETUP2483 #line 312 "lex.ll"2484 { NAMEDOP_RETURN(ELLIPSIS); }2485 YY_BREAK2486 /* alternative C99 brackets, "<:" & "<:<:" handled by preprocessor */2487 case 132:2488 YY_RULE_SETUP2489 #line 315 "lex.ll"2490 { RETURN_VAL('['); }2491 YY_BREAK2492 case 133:2493 YY_RULE_SETUP2494 #line 316 "lex.ll"2495 { RETURN_VAL(']'); }2496 YY_BREAK2497 case 134:2498 YY_RULE_SETUP2499 #line 317 "lex.ll"2500 { RETURN_VAL('{'); }2501 YY_BREAK2502 2452 case 135: 2503 2453 YY_RULE_SETUP 2504 #line 318 "lex.ll" 2505 { RETURN_VAL('}'); } 2506 YY_BREAK 2507 /* operators */ 2454 #line 320 "lex.ll" 2455 { ASCIIOP_RETURN(); } 2456 YY_BREAK 2508 2457 case 136: 2509 2458 YY_RULE_SETUP … … 2553 2502 case 145: 2554 2503 YY_RULE_SETUP 2555 #line 33 0"lex.ll"2556 { ASCIIOP_RETURN(); }2504 #line 331 "lex.ll" 2505 { NAMEDOP_RETURN(ICR); } 2557 2506 YY_BREAK 2558 2507 case 146: 2559 2508 YY_RULE_SETUP 2560 #line 33 1"lex.ll"2561 { ASCIIOP_RETURN(); }2509 #line 332 "lex.ll" 2510 { NAMEDOP_RETURN(DECR); } 2562 2511 YY_BREAK 2563 2512 case 147: 2564 2513 YY_RULE_SETUP 2565 #line 33 2"lex.ll"2566 { ASCIIOP_RETURN(); }2514 #line 333 "lex.ll" 2515 { NAMEDOP_RETURN(EQ); } 2567 2516 YY_BREAK 2568 2517 case 148: 2569 2518 YY_RULE_SETUP 2570 #line 33 3"lex.ll"2571 { ASCIIOP_RETURN(); }2519 #line 334 "lex.ll" 2520 { NAMEDOP_RETURN(NE); } 2572 2521 YY_BREAK 2573 2522 case 149: 2574 2523 YY_RULE_SETUP 2575 #line 33 4"lex.ll"2576 { ASCIIOP_RETURN(); }2524 #line 335 "lex.ll" 2525 { NAMEDOP_RETURN(LS); } 2577 2526 YY_BREAK 2578 2527 case 150: 2579 2528 YY_RULE_SETUP 2580 2529 #line 336 "lex.ll" 2581 { NAMEDOP_RETURN( ICR); }2530 { NAMEDOP_RETURN(RS); } 2582 2531 YY_BREAK 2583 2532 case 151: 2584 2533 YY_RULE_SETUP 2585 2534 #line 337 "lex.ll" 2586 { NAMEDOP_RETURN( DECR); }2535 { NAMEDOP_RETURN(LE); } 2587 2536 YY_BREAK 2588 2537 case 152: 2589 2538 YY_RULE_SETUP 2590 2539 #line 338 "lex.ll" 2591 { NAMEDOP_RETURN( EQ); }2540 { NAMEDOP_RETURN(GE); } 2592 2541 YY_BREAK 2593 2542 case 153: 2594 2543 YY_RULE_SETUP 2595 2544 #line 339 "lex.ll" 2596 { NAMEDOP_RETURN( NE); }2545 { NAMEDOP_RETURN(ANDAND); } 2597 2546 YY_BREAK 2598 2547 case 154: 2599 2548 YY_RULE_SETUP 2600 2549 #line 340 "lex.ll" 2601 { NAMEDOP_RETURN( LS); }2550 { NAMEDOP_RETURN(OROR); } 2602 2551 YY_BREAK 2603 2552 case 155: 2604 2553 YY_RULE_SETUP 2605 2554 #line 341 "lex.ll" 2606 { NAMEDOP_RETURN( RS); }2555 { NAMEDOP_RETURN(ARROW); } 2607 2556 YY_BREAK 2608 2557 case 156: 2609 2558 YY_RULE_SETUP 2610 2559 #line 342 "lex.ll" 2611 { NAMEDOP_RETURN( LE); }2560 { NAMEDOP_RETURN(PLUSassign); } 2612 2561 YY_BREAK 2613 2562 case 157: 2614 2563 YY_RULE_SETUP 2615 2564 #line 343 "lex.ll" 2616 { NAMEDOP_RETURN( GE); }2565 { NAMEDOP_RETURN(MINUSassign); } 2617 2566 YY_BREAK 2618 2567 case 158: 2619 2568 YY_RULE_SETUP 2620 2569 #line 344 "lex.ll" 2621 { NAMEDOP_RETURN( ANDAND); }2570 { NAMEDOP_RETURN(MULTassign); } 2622 2571 YY_BREAK 2623 2572 case 159: 2624 2573 YY_RULE_SETUP 2625 2574 #line 345 "lex.ll" 2626 { NAMEDOP_RETURN( OROR); }2575 { NAMEDOP_RETURN(DIVassign); } 2627 2576 YY_BREAK 2628 2577 case 160: 2629 2578 YY_RULE_SETUP 2630 2579 #line 346 "lex.ll" 2631 { NAMEDOP_RETURN( ARROW); }2580 { NAMEDOP_RETURN(MODassign); } 2632 2581 YY_BREAK 2633 2582 case 161: 2634 2583 YY_RULE_SETUP 2635 2584 #line 347 "lex.ll" 2636 { NAMEDOP_RETURN( PLUSassign); }2585 { NAMEDOP_RETURN(ANDassign); } 2637 2586 YY_BREAK 2638 2587 case 162: 2639 2588 YY_RULE_SETUP 2640 2589 #line 348 "lex.ll" 2641 { NAMEDOP_RETURN( MINUSassign); }2590 { NAMEDOP_RETURN(ORassign); } 2642 2591 YY_BREAK 2643 2592 case 163: 2644 2593 YY_RULE_SETUP 2645 2594 #line 349 "lex.ll" 2646 { NAMEDOP_RETURN( MULTassign); }2595 { NAMEDOP_RETURN(ERassign); } 2647 2596 YY_BREAK 2648 2597 case 164: 2649 2598 YY_RULE_SETUP 2650 2599 #line 350 "lex.ll" 2651 { NAMEDOP_RETURN( DIVassign); }2600 { NAMEDOP_RETURN(LSassign); } 2652 2601 YY_BREAK 2653 2602 case 165: 2654 2603 YY_RULE_SETUP 2655 2604 #line 351 "lex.ll" 2656 { NAMEDOP_RETURN(MODassign); } 2657 YY_BREAK 2605 { NAMEDOP_RETURN(RSassign); } 2606 YY_BREAK 2607 /* CFA, operator identifier */ 2658 2608 case 166: 2659 2609 YY_RULE_SETUP 2660 #line 35 2"lex.ll"2661 { NAMEDOP_RETURN(ANDassign); }2610 #line 354 "lex.ll" 2611 { IDENTIFIER_RETURN(); } // unary 2662 2612 YY_BREAK 2663 2613 case 167: 2664 2614 YY_RULE_SETUP 2665 #line 35 3"lex.ll"2666 { NAMEDOP_RETURN(ORassign); }2615 #line 355 "lex.ll" 2616 { IDENTIFIER_RETURN(); } 2667 2617 YY_BREAK 2668 2618 case 168: 2669 2619 YY_RULE_SETUP 2670 #line 354 "lex.ll"2671 { NAMEDOP_RETURN(ERassign); }2672 YY_BREAK2673 case 169:2674 YY_RULE_SETUP2675 #line 355 "lex.ll"2676 { NAMEDOP_RETURN(LSassign); }2677 YY_BREAK2678 case 170:2679 YY_RULE_SETUP2680 2620 #line 356 "lex.ll" 2681 { NAMEDOP_RETURN(RSassign); }2682 YY_BREAK2683 case 171:2684 YY_RULE_SETUP2685 #line 358 "lex.ll"2686 { NAMEDOP_RETURN(ATassign); }2687 YY_BREAK2688 /* CFA, operator identifier */2689 case 172:2690 YY_RULE_SETUP2691 #line 361 "lex.ll"2692 { IDENTIFIER_RETURN(); } // unary2693 YY_BREAK2694 case 173:2695 YY_RULE_SETUP2696 #line 362 "lex.ll"2697 { IDENTIFIER_RETURN(); }2698 YY_BREAK2699 case 174:2700 YY_RULE_SETUP2701 #line 363 "lex.ll"2702 { IDENTIFIER_RETURN(); }2703 YY_BREAK2704 case 175:2705 YY_RULE_SETUP2706 #line 364 "lex.ll"2707 2621 { IDENTIFIER_RETURN(); } // binary 2708 2622 YY_BREAK … … 2733 2647 an argument list. 2734 2648 */ 2735 case 1 76:2736 YY_RULE_SETUP 2737 #line 3 91"lex.ll"2649 case 169: 2650 YY_RULE_SETUP 2651 #line 383 "lex.ll" 2738 2652 { 2739 2653 // 1 or 2 character unary operator ? … … 2748 2662 YY_BREAK 2749 2663 /* unknown characters */ 2750 case 17 7:2751 YY_RULE_SETUP 2752 #line 403"lex.ll"2664 case 170: 2665 YY_RULE_SETUP 2666 #line 395 "lex.ll" 2753 2667 { printf("unknown character(s):\"%s\" on line %d\n", yytext, yylineno); } 2754 2668 YY_BREAK 2755 case 17 8:2756 YY_RULE_SETUP 2757 #line 405"lex.ll"2669 case 171: 2670 YY_RULE_SETUP 2671 #line 397 "lex.ll" 2758 2672 ECHO; 2759 2673 YY_BREAK 2760 #line 2 761"Parser/lex.cc"2674 #line 2675 "Parser/lex.cc" 2761 2675 case YY_STATE_EOF(INITIAL): 2762 2676 case YY_STATE_EOF(COMMENT): … … 3055 2969 { 3056 2970 yy_current_state = (int) yy_def[yy_current_state]; 3057 if ( yy_current_state >= 8 52)2971 if ( yy_current_state >= 826 ) 3058 2972 yy_c = yy_meta[(unsigned int) yy_c]; 3059 2973 } … … 3083 2997 { 3084 2998 yy_current_state = (int) yy_def[yy_current_state]; 3085 if ( yy_current_state >= 8 52)2999 if ( yy_current_state >= 826 ) 3086 3000 yy_c = yy_meta[(unsigned int) yy_c]; 3087 3001 } 3088 3002 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; 3089 yy_is_jam = (yy_current_state == 8 51);3003 yy_is_jam = (yy_current_state == 825); 3090 3004 3091 3005 return yy_is_jam ? 0 : yy_current_state; … … 3733 3647 #define YYTABLES_NAME "yytables" 3734 3648 3735 #line 405"lex.ll"3649 #line 397 "lex.ll" 3736 3650 3737 3651 -
src/Parser/lex.ll
rd2ded3e7 r698664b3 10 10 * Created On : Sat Sep 22 08:58:10 2001 11 11 * Last Modified By : Peter A. Buhr 12 * Last Modified On : Thu Oct 8 16:13:07201513 * Update Count : 40412 * Last Modified On : Fri Jun 19 11:10:14 2015 13 * Update Count : 392 14 14 */ 15 15 … … 182 182 __asm { KEYWORD_RETURN(ASM); } // GCC 183 183 __asm__ { KEYWORD_RETURN(ASM); } // GCC 184 _At { KEYWORD_RETURN(AT); } // CFA185 184 _Atomic { KEYWORD_RETURN(ATOMIC); } // C11 186 185 __attribute { KEYWORD_RETURN(ATTRIBUTE); } // GCC … … 191 190 case { KEYWORD_RETURN(CASE); } 192 191 catch { KEYWORD_RETURN(CATCH); } // CFA 193 catchResume { KEYWORD_RETURN(CATCHRESUME); } // CFA194 192 char { KEYWORD_RETURN(CHAR); } 195 193 choose { KEYWORD_RETURN(CHOOSE); } // CFA … … 203 201 continue { KEYWORD_RETURN(CONTINUE); } 204 202 default { KEYWORD_RETURN(DEFAULT); } 205 disable { KEYWORD_RETURN(DISABLE); } // CFA206 203 do { KEYWORD_RETURN(DO); } 207 204 double { KEYWORD_RETURN(DOUBLE); } 208 205 dtype { KEYWORD_RETURN(DTYPE); } // CFA 209 206 else { KEYWORD_RETURN(ELSE); } 210 enable { KEYWORD_RETURN(ENABLE); } // CFA211 207 enum { KEYWORD_RETURN(ENUM); } 212 208 __extension__ { KEYWORD_RETURN(EXTENSION); } // GCC … … 251 247 _Thread_local { KEYWORD_RETURN(THREADLOCAL); } // C11 252 248 throw { KEYWORD_RETURN(THROW); } // CFA 253 throwResume { KEYWORD_RETURN(THROWRESUME); } // CFA254 249 try { KEYWORD_RETURN(TRY); } // CFA 255 250 type { KEYWORD_RETURN(TYPE); } // CFA … … 356 351 ">>=" { NAMEDOP_RETURN(RSassign); } 357 352 358 "@=" { NAMEDOP_RETURN(ATassign); }359 360 353 /* CFA, operator identifier */ 361 354 {op_unary}"?" { IDENTIFIER_RETURN(); } // unary 362 355 "?"({op_unary_pre_post}|"()"|"[?]"|"{}") { IDENTIFIER_RETURN(); } 363 "^?{}" { IDENTIFIER_RETURN(); }364 356 "?"{op_binary_over}"?" { IDENTIFIER_RETURN(); } // binary 365 357 /* … … 389 381 an argument list. 390 382 */ 391 {op_unary}"?"( {op_unary_pre_post}|"[?]"|{op_binary_over}"?") {383 {op_unary}"?"(({op_unary_pre_post}|"[?]")|({op_binary_over}"?")) { 392 384 // 1 or 2 character unary operator ? 393 385 int i = yytext[1] == '?' ? 1 : 2; -
src/Parser/parser.cc
rd2ded3e7 r698664b3 166 166 RETURN = 305, 167 167 CHOOSE = 306, 168 DISABLE = 307, 169 ENABLE = 308, 170 FALLTHRU = 309, 171 TRY = 310, 172 CATCH = 311, 173 CATCHRESUME = 312, 174 FINALLY = 313, 175 THROW = 314, 176 THROWRESUME = 315, 177 AT = 316, 178 ASM = 317, 179 ALIGNAS = 318, 180 ALIGNOF = 319, 181 ATOMIC = 320, 182 GENERIC = 321, 183 NORETURN = 322, 184 STATICASSERT = 323, 185 THREADLOCAL = 324, 186 IDENTIFIER = 325, 187 QUOTED_IDENTIFIER = 326, 188 TYPEDEFname = 327, 189 TYPEGENname = 328, 190 ATTR_IDENTIFIER = 329, 191 ATTR_TYPEDEFname = 330, 192 ATTR_TYPEGENname = 331, 193 INTEGERconstant = 332, 194 FLOATINGconstant = 333, 195 CHARACTERconstant = 334, 196 STRINGliteral = 335, 197 ZERO = 336, 198 ONE = 337, 199 ARROW = 338, 200 ICR = 339, 201 DECR = 340, 202 LS = 341, 203 RS = 342, 204 LE = 343, 205 GE = 344, 206 EQ = 345, 207 NE = 346, 208 ANDAND = 347, 209 OROR = 348, 210 ELLIPSIS = 349, 211 MULTassign = 350, 212 DIVassign = 351, 213 MODassign = 352, 214 PLUSassign = 353, 215 MINUSassign = 354, 216 LSassign = 355, 217 RSassign = 356, 218 ANDassign = 357, 219 ERassign = 358, 220 ORassign = 359, 221 ATassign = 360, 222 THEN = 361 168 FALLTHRU = 307, 169 TRY = 308, 170 CATCH = 309, 171 FINALLY = 310, 172 THROW = 311, 173 ASM = 312, 174 ALIGNAS = 313, 175 ALIGNOF = 314, 176 ATOMIC = 315, 177 GENERIC = 316, 178 NORETURN = 317, 179 STATICASSERT = 318, 180 THREADLOCAL = 319, 181 IDENTIFIER = 320, 182 QUOTED_IDENTIFIER = 321, 183 TYPEDEFname = 322, 184 TYPEGENname = 323, 185 ATTR_IDENTIFIER = 324, 186 ATTR_TYPEDEFname = 325, 187 ATTR_TYPEGENname = 326, 188 INTEGERconstant = 327, 189 FLOATINGconstant = 328, 190 CHARACTERconstant = 329, 191 STRINGliteral = 330, 192 ZERO = 331, 193 ONE = 332, 194 ARROW = 333, 195 ICR = 334, 196 DECR = 335, 197 LS = 336, 198 RS = 337, 199 LE = 338, 200 GE = 339, 201 EQ = 340, 202 NE = 341, 203 ANDAND = 342, 204 OROR = 343, 205 ELLIPSIS = 344, 206 MULTassign = 345, 207 DIVassign = 346, 208 MODassign = 347, 209 PLUSassign = 348, 210 MINUSassign = 349, 211 LSassign = 350, 212 RSassign = 351, 213 ANDassign = 352, 214 ERassign = 353, 215 ORassign = 354, 216 THEN = 355 223 217 }; 224 218 #endif … … 273 267 #define RETURN 305 274 268 #define CHOOSE 306 275 #define DISABLE 307 276 #define ENABLE 308 277 #define FALLTHRU 309 278 #define TRY 310 279 #define CATCH 311 280 #define CATCHRESUME 312 281 #define FINALLY 313 282 #define THROW 314 283 #define THROWRESUME 315 284 #define AT 316 285 #define ASM 317 286 #define ALIGNAS 318 287 #define ALIGNOF 319 288 #define ATOMIC 320 289 #define GENERIC 321 290 #define NORETURN 322 291 #define STATICASSERT 323 292 #define THREADLOCAL 324 293 #define IDENTIFIER 325 294 #define QUOTED_IDENTIFIER 326 295 #define TYPEDEFname 327 296 #define TYPEGENname 328 297 #define ATTR_IDENTIFIER 329 298 #define ATTR_TYPEDEFname 330 299 #define ATTR_TYPEGENname 331 300 #define INTEGERconstant 332 301 #define FLOATINGconstant 333 302 #define CHARACTERconstant 334 303 #define STRINGliteral 335 304 #define ZERO 336 305 #define ONE 337 306 #define ARROW 338 307 #define ICR 339 308 #define DECR 340 309 #define LS 341 310 #define RS 342 311 #define LE 343 312 #define GE 344 313 #define EQ 345 314 #define NE 346 315 #define ANDAND 347 316 #define OROR 348 317 #define ELLIPSIS 349 318 #define MULTassign 350 319 #define DIVassign 351 320 #define MODassign 352 321 #define PLUSassign 353 322 #define MINUSassign 354 323 #define LSassign 355 324 #define RSassign 356 325 #define ANDassign 357 326 #define ERassign 358 327 #define ORassign 359 328 #define ATassign 360 329 #define THEN 361 269 #define FALLTHRU 307 270 #define TRY 308 271 #define CATCH 309 272 #define FINALLY 310 273 #define THROW 311 274 #define ASM 312 275 #define ALIGNAS 313 276 #define ALIGNOF 314 277 #define ATOMIC 315 278 #define GENERIC 316 279 #define NORETURN 317 280 #define STATICASSERT 318 281 #define THREADLOCAL 319 282 #define IDENTIFIER 320 283 #define QUOTED_IDENTIFIER 321 284 #define TYPEDEFname 322 285 #define TYPEGENname 323 286 #define ATTR_IDENTIFIER 324 287 #define ATTR_TYPEDEFname 325 288 #define ATTR_TYPEGENname 326 289 #define INTEGERconstant 327 290 #define FLOATINGconstant 328 291 #define CHARACTERconstant 329 292 #define STRINGliteral 330 293 #define ZERO 331 294 #define ONE 332 295 #define ARROW 333 296 #define ICR 334 297 #define DECR 335 298 #define LS 336 299 #define RS 337 300 #define LE 338 301 #define GE 339 302 #define EQ 340 303 #define NE 341 304 #define ANDAND 342 305 #define OROR 343 306 #define ELLIPSIS 344 307 #define MULTassign 345 308 #define DIVassign 346 309 #define MODassign 347 310 #define PLUSassign 348 311 #define MINUSassign 349 312 #define LSassign 350 313 #define RSassign 351 314 #define ANDassign 352 315 #define ERassign 353 316 #define ORassign 354 317 #define THEN 355 330 318 331 319 … … 337 325 338 326 /* Line 293 of yacc.c */ 339 #line 1 10"parser.yy"327 #line 108 "parser.yy" 340 328 341 329 Token tok; … … 354 342 355 343 /* Line 293 of yacc.c */ 356 #line 3 57"Parser/parser.cc"344 #line 345 "Parser/parser.cc" 357 345 } YYSTYPE; 358 346 # define YYSTYPE_IS_TRIVIAL 1 … … 366 354 367 355 /* Line 343 of yacc.c */ 368 #line 3 69"Parser/parser.cc"356 #line 357 "Parser/parser.cc" 369 357 370 358 #ifdef short … … 583 571 584 572 /* YYFINAL -- State number of the termination state. */ 585 #define YYFINAL 24 7573 #define YYFINAL 246 586 574 /* YYLAST -- Last index in YYTABLE. */ 587 #define YYLAST 1 0817575 #define YYLAST 11329 588 576 589 577 /* YYNTOKENS -- Number of terminals. */ 590 #define YYNTOKENS 1 31578 #define YYNTOKENS 125 591 579 /* YYNNTS -- Number of nonterminals. */ 592 580 #define YYNNTS 238 593 581 /* YYNRULES -- Number of rules. */ 594 #define YYNRULES 74 9582 #define YYNRULES 740 595 583 /* YYNRULES -- Number of states. */ 596 #define YYNSTATES 15 70584 #define YYNSTATES 1530 597 585 598 586 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ 599 587 #define YYUNDEFTOK 2 600 #define YYMAXUTOK 3 61588 #define YYMAXUTOK 355 601 589 602 590 #define YYTRANSLATE(YYX) \ … … 609 597 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 610 598 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 611 2, 2, 2, 11 6, 2, 2, 2, 123, 118, 2,612 10 7, 108, 117, 119, 114, 120, 111, 122, 2, 2,613 2, 2, 2, 2, 2, 2, 2, 2, 1 15, 130,614 1 24, 129, 125, 128, 2, 2, 2, 2, 2, 2,599 2, 2, 2, 110, 2, 2, 2, 117, 112, 2, 600 101, 102, 111, 113, 108, 114, 105, 116, 2, 2, 601 2, 2, 2, 2, 2, 2, 2, 2, 109, 124, 602 118, 123, 119, 122, 2, 2, 2, 2, 2, 2, 615 603 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 616 604 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 617 2, 10 9, 2, 110, 126, 2, 2, 2, 2, 2,605 2, 103, 2, 104, 120, 2, 2, 2, 2, 2, 618 606 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 619 607 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 620 2, 2, 2, 1 12, 127, 113, 121, 2, 2, 2,608 2, 2, 2, 106, 121, 107, 115, 2, 2, 2, 621 609 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 622 610 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, … … 641 629 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 642 630 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 643 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 644 105, 106 631 95, 96, 97, 98, 99, 100 645 632 }; 646 633 … … 653 640 17, 19, 21, 23, 25, 27, 29, 32, 34, 36, 654 641 40, 44, 46, 53, 58, 62, 70, 74, 82, 85, 655 88, 96, 101, 103, 107, 108, 110, 114, 122, 132,656 13 4, 138, 140, 144, 152, 156, 164, 166, 168, 170,657 17 3, 176, 179, 182, 185, 188, 191, 196, 198, 203,658 20 8, 211, 216, 219, 221, 223, 225, 227, 229, 234,659 23 9, 241, 245, 249, 253, 255, 259, 263, 265, 269,660 27 3, 275, 279, 283, 287, 291, 293, 297, 301, 303,661 30 7, 309, 313, 315, 319, 321, 325, 327, 331, 333,662 339, 34 4, 350, 352, 354, 358, 362, 365, 366, 368,663 37 1, 377, 384, 392, 394, 398, 400, 402, 404, 406,664 40 8, 410, 412, 414, 416, 418, 420, 424, 425, 427,665 42 9, 431, 433, 435, 437, 439, 441, 443, 450, 455,666 45 8, 466, 468, 472, 474, 477, 479, 482, 484, 487,667 49 0, 496, 504, 510, 520, 526, 536, 538, 542, 544,668 54 6, 550, 554, 557, 559, 562, 565, 566, 568, 571,669 5 75, 576, 578, 581, 585, 589, 594, 595, 597, 599,670 60 2, 608, 616, 623, 630, 635, 639, 644, 647, 651,671 65 4, 658, 662, 666, 670, 676, 680, 684, 689, 691,672 697, 704, 710, 717, 727, 738, 748, 759, 762, 764,673 76 7, 770, 773, 775, 782, 791, 802, 815, 830, 831,674 8 33, 834, 836, 838, 842, 847, 855, 856, 858, 862,675 8 64, 868, 870, 872, 874, 878, 880, 882, 884, 888,676 8 89, 891, 895, 900, 902, 906, 908, 910, 914, 918,677 922, 926, 930, 933, 937, 944, 948, 952, 957, 959,678 9 62, 965, 969, 975, 984, 992, 1000, 1006, 1016, 1019,679 10 22, 1028, 1032, 1038, 1043, 1047, 1052, 1057, 1065, 1069,680 10 73, 1077, 1081, 1086, 1093, 1095, 1097, 1099, 1101, 1103,681 1 105, 1107, 1109, 1110, 1112, 1114, 1117, 1119, 1121, 1123,682 1 125, 1127, 1129, 1131, 1132, 1138, 1140, 1143, 1147, 1149,683 11 52, 1154, 1156, 1158, 1160, 1162, 1164, 1166, 1168, 1170,684 11 72, 1174, 1176, 1178, 1180, 1182, 1184, 1186, 1188, 1190,685 11 92, 1194, 1196, 1199, 1202, 1206, 1210, 1212, 1216, 1218,686 1 221, 1224, 1227, 1232, 1237, 1242, 1247, 1249, 1252, 1255,687 12 59, 1261, 1264, 1267, 1269, 1272, 1275, 1279, 1281, 1284,688 12 87, 1289, 1291, 1296, 1299, 1305, 1313, 1316, 1319, 1322,689 1 324, 1327, 1330, 1334, 1337, 1341, 1343, 1346, 1350, 1353,690 13 56, 1361, 1362, 1364, 1367, 1370, 1372, 1373, 1375, 1378,691 13 81, 1387, 1394, 1397, 1400, 1405, 1406, 1409, 1410, 1412,692 1 414, 1416, 1422, 1428, 1434, 1436, 1442, 1448, 1458, 1460,693 14 66, 1467, 1469, 1471, 1477, 1479, 1481, 1487, 1493, 1495,694 14 99, 1503, 1508, 1510, 1512, 1514, 1516, 1519, 1521, 1525,695 1 529, 1531, 1534, 1536, 1540, 1542, 1544, 1546, 1548, 1550,696 15 52, 1554, 1556, 1558, 1560, 1562, 1565, 1567, 1569, 1571,697 15 74, 1575, 1578, 1581, 1583, 1588, 1589, 1591, 1594, 1598,698 1 603, 1606, 1609, 1611, 1614, 1616, 1619, 1625, 1631, 1639,699 16 46, 1648, 1651, 1654, 1658, 1660, 1663, 1666, 1671, 1674,700 16 79, 1680, 1685, 1688, 1690, 1692, 1694, 1695, 1698, 1704,701 1 710, 1724, 1726, 1728, 1732, 1736, 1739, 1743, 1747, 1750,702 17 55, 1757, 1764, 1774, 1775, 1787, 1789, 1793, 1797, 1801,703 1 803, 1805, 1811, 1814, 1820, 1821, 1823, 1825, 1829, 1830,704 18 32, 1834, 1836, 1838, 1839, 1846, 1849, 1851, 1854, 1859,705 18 62, 1866, 1870, 1874, 1879, 1885, 1891, 1897, 1904, 1906,706 1 908, 1910, 1914, 1915, 1921, 1922, 1924, 1926, 1929, 1936,707 19 38, 1942, 1943, 1945, 1950, 1952, 1954, 1956, 1958, 1961,708 19 63, 1966, 1969, 1971, 1975, 1978, 1982, 1986, 1989, 1994,709 19 99, 2003, 2012, 2016, 2019, 2021, 2024, 2031, 2040, 2044,710 20 47, 2051, 2055, 2060, 2065, 2069, 2071, 2073, 2075, 2080,711 20 87, 2091, 2094, 2098, 2102, 2107, 2112, 2116, 2119, 2121,712 21 24, 2127, 2129, 2133, 2136, 2140, 2144, 2147, 2152, 2157,713 21 61, 2168, 2177, 2181, 2184, 2186, 2189, 2192, 2195, 2199,714 2 203, 2206, 2211, 2216, 2220, 2227, 2236, 2240, 2243, 2245,715 22 48, 2251, 2253, 2255, 2258, 2262, 2266, 2269, 2274, 2281,716 22 90, 2292, 2295, 2298, 2300, 2303, 2306, 2310, 2314, 2316,717 23 21, 2326, 2330, 2336, 2345, 2349, 2352, 2356, 2358, 2364,718 23 70, 2377, 2384, 2386, 2389, 2392, 2394, 2397, 2400, 2404,719 2 408, 2410, 2415, 2420, 2424, 2430, 2439, 2443, 2445, 2448,720 24 50, 2453, 2460, 2466, 2473, 2481, 2489, 2491, 2494, 2497,721 24 99, 2502, 2505, 2509, 2513, 2515, 2520, 2525, 2529, 2538,722 25 42, 2544, 2546, 2549, 2551, 2553, 2556, 2560, 2563, 2567,723 25 70, 2574, 2578, 2581, 2586, 2590, 2593, 2597, 2600, 2605,724 2 609, 2612, 2619, 2626, 2633, 2641, 2643, 2646, 2648, 2650,725 26 52, 2655, 2659, 2662, 2666, 2669, 2673, 2677, 2682, 2685,726 26 89, 2694, 2697, 2703, 2709, 2716, 2723, 2724, 2726, 2727642 88, 96, 98, 102, 103, 105, 109, 117, 127, 129, 643 133, 135, 139, 147, 151, 159, 161, 163, 165, 168, 644 171, 174, 177, 180, 183, 186, 191, 193, 198, 203, 645 206, 211, 214, 216, 218, 220, 222, 224, 229, 234, 646 236, 240, 244, 248, 250, 254, 258, 260, 264, 268, 647 270, 274, 278, 282, 286, 288, 292, 296, 298, 302, 648 304, 308, 310, 314, 316, 320, 322, 326, 328, 334, 649 339, 345, 347, 349, 353, 357, 360, 361, 363, 366, 650 372, 379, 387, 389, 393, 395, 397, 399, 401, 403, 651 405, 407, 409, 411, 413, 415, 419, 420, 422, 424, 652 426, 428, 430, 432, 434, 436, 438, 443, 446, 454, 653 456, 460, 462, 465, 467, 470, 472, 475, 478, 484, 654 492, 498, 508, 514, 524, 526, 530, 532, 534, 538, 655 542, 545, 547, 550, 553, 554, 556, 559, 563, 564, 656 566, 569, 573, 577, 582, 583, 585, 587, 590, 596, 657 604, 611, 618, 623, 627, 632, 635, 639, 642, 646, 658 650, 654, 657, 661, 665, 670, 672, 678, 685, 695, 659 706, 709, 711, 714, 717, 720, 722, 729, 738, 749, 660 762, 777, 778, 780, 781, 783, 785, 789, 794, 802, 661 803, 805, 809, 811, 815, 817, 819, 821, 825, 827, 662 829, 831, 835, 836, 838, 842, 847, 849, 853, 855, 663 857, 861, 865, 869, 873, 877, 880, 884, 891, 895, 664 899, 904, 906, 909, 912, 916, 922, 931, 939, 947, 665 953, 963, 966, 969, 975, 979, 985, 990, 994, 999, 666 1004, 1012, 1016, 1020, 1024, 1028, 1033, 1040, 1042, 1044, 667 1046, 1048, 1050, 1052, 1054, 1056, 1057, 1059, 1061, 1064, 668 1066, 1068, 1070, 1072, 1074, 1076, 1078, 1079, 1085, 1087, 669 1090, 1094, 1096, 1099, 1101, 1103, 1105, 1107, 1109, 1111, 670 1113, 1115, 1117, 1119, 1121, 1123, 1125, 1127, 1129, 1131, 671 1133, 1135, 1137, 1139, 1141, 1143, 1146, 1149, 1153, 1157, 672 1159, 1163, 1165, 1168, 1171, 1174, 1179, 1184, 1189, 1194, 673 1196, 1199, 1202, 1206, 1208, 1211, 1214, 1216, 1219, 1222, 674 1226, 1228, 1231, 1234, 1236, 1238, 1243, 1246, 1252, 1260, 675 1263, 1266, 1269, 1271, 1274, 1277, 1281, 1284, 1288, 1290, 676 1293, 1297, 1300, 1303, 1308, 1309, 1311, 1314, 1317, 1319, 677 1320, 1322, 1325, 1328, 1334, 1341, 1344, 1347, 1352, 1353, 678 1356, 1357, 1359, 1361, 1363, 1369, 1375, 1381, 1383, 1389, 679 1395, 1405, 1407, 1413, 1414, 1416, 1418, 1424, 1426, 1428, 680 1434, 1440, 1442, 1446, 1450, 1455, 1457, 1459, 1461, 1463, 681 1466, 1468, 1472, 1476, 1478, 1481, 1483, 1487, 1489, 1491, 682 1493, 1495, 1497, 1499, 1501, 1503, 1505, 1507, 1509, 1512, 683 1514, 1516, 1518, 1521, 1522, 1525, 1527, 1532, 1534, 1537, 684 1541, 1546, 1549, 1552, 1554, 1557, 1559, 1562, 1568, 1574, 685 1582, 1589, 1591, 1594, 1597, 1601, 1603, 1606, 1609, 1614, 686 1617, 1622, 1623, 1628, 1631, 1633, 1635, 1637, 1638, 1641, 687 1647, 1653, 1667, 1669, 1671, 1675, 1679, 1682, 1686, 1690, 688 1693, 1698, 1700, 1707, 1717, 1718, 1730, 1732, 1736, 1740, 689 1744, 1746, 1748, 1754, 1757, 1763, 1764, 1766, 1768, 1772, 690 1773, 1775, 1777, 1779, 1781, 1782, 1789, 1792, 1794, 1797, 691 1802, 1805, 1809, 1813, 1817, 1822, 1828, 1834, 1840, 1847, 692 1849, 1851, 1853, 1857, 1858, 1864, 1865, 1867, 1869, 1872, 693 1879, 1881, 1885, 1886, 1888, 1893, 1895, 1897, 1899, 1901, 694 1904, 1906, 1909, 1912, 1914, 1918, 1921, 1925, 1929, 1932, 695 1937, 1942, 1946, 1955, 1959, 1962, 1964, 1967, 1974, 1983, 696 1987, 1990, 1994, 1998, 2003, 2008, 2012, 2014, 2016, 2018, 697 2023, 2030, 2034, 2037, 2041, 2045, 2050, 2055, 2059, 2062, 698 2064, 2067, 2070, 2072, 2076, 2079, 2083, 2087, 2090, 2095, 699 2100, 2104, 2111, 2120, 2124, 2127, 2129, 2132, 2135, 2138, 700 2142, 2146, 2149, 2154, 2159, 2163, 2170, 2179, 2183, 2186, 701 2188, 2191, 2194, 2196, 2198, 2201, 2205, 2209, 2212, 2217, 702 2224, 2233, 2235, 2238, 2241, 2243, 2246, 2249, 2253, 2257, 703 2259, 2264, 2269, 2273, 2279, 2288, 2292, 2295, 2299, 2301, 704 2307, 2313, 2320, 2327, 2329, 2332, 2335, 2337, 2340, 2343, 705 2347, 2351, 2353, 2358, 2363, 2367, 2373, 2382, 2386, 2388, 706 2391, 2393, 2396, 2403, 2409, 2416, 2424, 2432, 2434, 2437, 707 2440, 2442, 2445, 2448, 2452, 2456, 2458, 2463, 2468, 2472, 708 2481, 2485, 2487, 2489, 2492, 2494, 2496, 2499, 2503, 2506, 709 2510, 2513, 2517, 2521, 2524, 2529, 2533, 2536, 2540, 2543, 710 2548, 2552, 2555, 2562, 2569, 2576, 2584, 2586, 2589, 2591, 711 2593, 2595, 2598, 2602, 2605, 2609, 2612, 2616, 2620, 2625, 712 2628, 2632, 2637, 2640, 2646, 2652, 2659, 2666, 2667, 2669, 713 2670 727 714 }; 728 715 … … 730 717 static const yytype_int16 yyrhs[] = 731 718 { 732 297, 0, -1, -1, -1, 77, -1, 78, -1, 79, 733 -1, 70, -1, 74, -1, 138, -1, 70, -1, 74, 734 -1, 70, -1, 81, -1, 82, -1, 80, -1, 139, 735 80, -1, 70, -1, 138, -1, 107, 166, 108, -1, 736 107, 170, 108, -1, 140, -1, 141, 109, 132, 161, 737 133, 110, -1, 141, 107, 142, 108, -1, 141, 111, 738 137, -1, 141, 111, 109, 132, 144, 133, 110, -1, 739 141, 83, 137, -1, 141, 83, 109, 132, 144, 133, 740 110, -1, 141, 84, -1, 141, 85, -1, 107, 270, 741 108, 112, 274, 367, 113, -1, 141, 112, 142, 113, 742 -1, 143, -1, 142, 114, 143, -1, -1, 161, -1, 743 137, 115, 161, -1, 109, 132, 161, 133, 110, 115, 744 161, -1, 109, 132, 161, 114, 164, 133, 110, 115, 745 161, -1, 145, -1, 144, 114, 145, -1, 137, -1, 746 137, 111, 145, -1, 137, 111, 109, 132, 144, 133, 747 110, -1, 137, 83, 145, -1, 137, 83, 109, 132, 748 144, 133, 110, -1, 141, -1, 134, -1, 139, -1, 749 84, 146, -1, 85, 146, -1, 38, 148, -1, 147, 750 148, -1, 116, 148, -1, 117, 148, -1, 36, 146, 751 -1, 36, 107, 270, 108, -1, 74, -1, 74, 107, 752 271, 108, -1, 74, 107, 143, 108, -1, 64, 146, 753 -1, 64, 107, 270, 108, -1, 92, 137, -1, 118, 754 -1, 119, -1, 120, -1, 121, -1, 146, -1, 107, 755 270, 108, 148, -1, 107, 270, 108, 163, -1, 148, 756 -1, 149, 117, 148, -1, 149, 122, 148, -1, 149, 757 123, 148, -1, 149, -1, 150, 119, 149, -1, 150, 758 120, 149, -1, 150, -1, 151, 86, 150, -1, 151, 759 87, 150, -1, 151, -1, 152, 124, 151, -1, 152, 760 125, 151, -1, 152, 88, 151, -1, 152, 89, 151, 761 -1, 152, -1, 153, 90, 152, -1, 153, 91, 152, 762 -1, 153, -1, 154, 118, 153, -1, 154, -1, 155, 763 126, 154, -1, 155, -1, 156, 127, 155, -1, 156, 764 -1, 157, 92, 156, -1, 157, -1, 158, 93, 157, 765 -1, 158, -1, 158, 128, 166, 115, 159, -1, 158, 766 128, 115, 159, -1, 158, 128, 166, 115, 163, -1, 767 159, -1, 159, -1, 146, 129, 161, -1, 146, 165, 768 161, -1, 163, 368, -1, -1, 161, -1, 109, 110, 769 -1, 109, 132, 161, 133, 110, -1, 109, 132, 114, 770 164, 133, 110, -1, 109, 132, 161, 114, 164, 133, 771 110, -1, 162, -1, 164, 114, 162, -1, 95, -1, 772 96, -1, 97, -1, 98, -1, 99, -1, 100, -1, 773 101, -1, 102, -1, 103, -1, 104, -1, 161, -1, 774 166, 114, 161, -1, -1, 166, -1, 169, -1, 170, 775 -1, 174, -1, 175, -1, 187, -1, 189, -1, 190, 776 -1, 195, -1, 126, 141, 112, 142, 113, 130, -1, 777 137, 115, 307, 168, -1, 112, 113, -1, 112, 132, 778 132, 206, 171, 133, 113, -1, 172, -1, 171, 132, 779 172, -1, 209, -1, 38, 209, -1, 303, -1, 168, 780 133, -1, 168, -1, 173, 168, -1, 167, 130, -1, 781 39, 107, 166, 108, 168, -1, 39, 107, 166, 108, 782 168, 40, 168, -1, 41, 107, 166, 108, 180, -1, 783 41, 107, 166, 108, 112, 132, 202, 181, 113, -1, 784 51, 107, 166, 108, 180, -1, 51, 107, 166, 108, 785 112, 132, 202, 183, 113, -1, 160, -1, 160, 94, 786 160, -1, 305, -1, 176, -1, 177, 114, 176, -1, 787 42, 177, 115, -1, 43, 115, -1, 178, -1, 179, 788 178, -1, 179, 168, -1, -1, 182, -1, 179, 173, 789 -1, 182, 179, 173, -1, -1, 184, -1, 179, 186, 790 -1, 179, 173, 185, -1, 184, 179, 186, -1, 184, 791 179, 173, 185, -1, -1, 186, -1, 54, -1, 54, 792 130, -1, 45, 107, 166, 108, 168, -1, 44, 168, 793 45, 107, 166, 108, 130, -1, 46, 107, 132, 188, 794 108, 168, -1, 167, 133, 130, 167, 130, 167, -1, 795 209, 167, 130, 167, -1, 49, 137, 130, -1, 49, 796 117, 166, 130, -1, 48, 130, -1, 48, 137, 130, 797 -1, 47, 130, -1, 47, 137, 130, -1, 50, 167, 798 130, -1, 59, 162, 130, -1, 60, 162, 130, -1, 799 60, 162, 61, 161, 130, -1, 55, 170, 191, -1, 800 55, 170, 193, -1, 55, 170, 191, 193, -1, 192, 801 -1, 56, 107, 94, 108, 170, -1, 192, 56, 107, 802 94, 108, 170, -1, 57, 107, 94, 108, 170, -1, 803 192, 57, 107, 94, 108, 170, -1, 56, 107, 132, 804 132, 194, 133, 108, 170, 133, -1, 192, 56, 107, 805 132, 132, 194, 133, 108, 170, 133, -1, 57, 107, 806 132, 132, 194, 133, 108, 170, 133, -1, 192, 57, 807 107, 132, 132, 194, 133, 108, 170, 133, -1, 58, 808 170, -1, 222, -1, 222, 304, -1, 222, 352, -1, 809 361, 137, -1, 361, -1, 62, 196, 107, 139, 108, 810 130, -1, 62, 196, 107, 139, 115, 197, 108, 130, 811 -1, 62, 196, 107, 139, 115, 197, 115, 197, 108, 812 130, -1, 62, 196, 107, 139, 115, 197, 115, 197, 813 115, 200, 108, 130, -1, 62, 196, 49, 107, 139, 814 115, 115, 197, 115, 200, 115, 201, 108, 130, -1, 815 -1, 11, -1, -1, 198, -1, 199, -1, 198, 114, 816 199, -1, 139, 107, 160, 108, -1, 109, 160, 110, 817 139, 107, 160, 108, -1, -1, 139, -1, 200, 114, 818 139, -1, 137, -1, 201, 114, 137, -1, 133, -1, 819 203, -1, 209, -1, 203, 132, 209, -1, 133, -1, 820 205, -1, 219, -1, 205, 132, 219, -1, -1, 207, 821 -1, 28, 208, 130, -1, 207, 28, 208, 130, -1, 822 269, -1, 208, 114, 269, -1, 210, -1, 219, -1, 823 211, 133, 130, -1, 216, 133, 130, -1, 213, 133, 824 130, -1, 288, 133, 130, -1, 291, 133, 130, -1, 825 212, 272, -1, 228, 212, 272, -1, 211, 133, 114, 826 132, 267, 272, -1, 362, 267, 306, -1, 365, 267, 827 306, -1, 224, 365, 267, 306, -1, 214, -1, 224, 828 214, -1, 228, 214, -1, 228, 224, 214, -1, 213, 829 133, 114, 132, 267, -1, 109, 110, 267, 107, 132, 830 255, 133, 108, -1, 365, 267, 107, 132, 255, 133, 831 108, -1, 215, 267, 107, 132, 255, 133, 108, -1, 832 109, 132, 257, 133, 110, -1, 109, 132, 257, 133, 833 114, 132, 258, 133, 110, -1, 3, 212, -1, 3, 834 214, -1, 216, 133, 114, 132, 137, -1, 3, 222, 835 304, -1, 217, 133, 114, 132, 304, -1, 224, 3, 836 222, 304, -1, 222, 3, 304, -1, 222, 3, 224, 837 304, -1, 3, 137, 129, 161, -1, 218, 133, 114, 838 132, 137, 129, 161, -1, 220, 133, 130, -1, 217, 839 133, 130, -1, 218, 133, 130, -1, 237, 133, 130, 840 -1, 221, 304, 306, 272, -1, 220, 114, 307, 304, 841 306, 272, -1, 233, -1, 237, -1, 239, -1, 278, 842 -1, 234, -1, 238, -1, 240, -1, 279, -1, -1, 843 224, -1, 225, -1, 224, 225, -1, 226, -1, 309, 844 -1, 10, -1, 12, -1, 11, -1, 14, -1, 65, 845 -1, -1, 13, 107, 227, 281, 108, -1, 229, -1, 846 224, 229, -1, 228, 224, 229, -1, 230, -1, 229, 847 230, -1, 231, -1, 5, -1, 7, -1, 4, -1, 848 6, -1, 8, -1, 9, -1, 67, -1, 69, -1, 849 16, -1, 21, -1, 20, -1, 18, -1, 19, -1, 850 17, -1, 22, -1, 23, -1, 15, -1, 24, -1, 851 25, -1, 26, -1, 234, -1, 228, 234, -1, 233, 852 230, -1, 233, 230, 224, -1, 233, 230, 234, -1, 853 235, -1, 223, 236, 223, -1, 232, -1, 224, 232, 854 -1, 235, 225, -1, 235, 232, -1, 27, 107, 271, 855 108, -1, 27, 107, 166, 108, -1, 76, 107, 271, 856 108, -1, 76, 107, 166, 108, -1, 238, -1, 228, 857 238, -1, 237, 230, -1, 237, 230, 224, -1, 241, 858 -1, 224, 241, -1, 238, 225, -1, 240, -1, 228, 859 240, -1, 239, 230, -1, 239, 230, 224, -1, 72, 860 -1, 224, 72, -1, 240, 225, -1, 242, -1, 252, 861 -1, 243, 112, 244, 113, -1, 243, 269, -1, 243, 862 269, 112, 244, 113, -1, 243, 107, 287, 108, 112, 863 244, 113, -1, 243, 280, -1, 30, 307, -1, 31, 864 307, -1, 245, -1, 244, 245, -1, 246, 130, -1, 865 38, 246, 130, -1, 247, 130, -1, 38, 247, 130, 866 -1, 361, -1, 361, 269, -1, 246, 114, 269, -1, 867 246, 114, -1, 222, 248, -1, 247, 114, 307, 248, 868 -1, -1, 250, -1, 313, 249, -1, 326, 249, -1, 869 352, -1, -1, 250, -1, 115, 160, -1, 29, 307, 870 -1, 251, 112, 253, 367, 113, -1, 251, 269, 112, 871 253, 367, 113, -1, 251, 269, -1, 269, 254, -1, 872 253, 114, 269, 254, -1, -1, 129, 160, -1, -1, 873 256, -1, 258, -1, 257, -1, 257, 133, 114, 132, 874 258, -1, 258, 133, 114, 132, 94, -1, 257, 133, 875 114, 132, 94, -1, 262, -1, 258, 133, 114, 132, 876 262, -1, 257, 133, 114, 132, 262, -1, 257, 133, 877 114, 132, 258, 133, 114, 132, 262, -1, 263, -1, 878 258, 133, 114, 132, 263, -1, -1, 260, -1, 261, 879 -1, 261, 133, 114, 132, 94, -1, 265, -1, 264, 880 -1, 261, 133, 114, 132, 265, -1, 261, 133, 114, 881 132, 264, -1, 264, -1, 357, 267, 368, -1, 365, 882 267, 368, -1, 224, 365, 267, 368, -1, 214, -1, 883 265, -1, 357, -1, 365, -1, 224, 365, -1, 366, 884 -1, 221, 331, 368, -1, 221, 335, 368, -1, 221, 885 -1, 221, 346, -1, 137, -1, 266, 114, 137, -1, 886 135, -1, 72, -1, 73, -1, 136, -1, 72, -1, 887 73, -1, 137, -1, 72, -1, 73, -1, 361, -1, 888 222, -1, 222, 352, -1, 361, -1, 366, -1, 222, 889 -1, 222, 340, -1, -1, 129, 273, -1, 105, 273, 890 -1, 161, -1, 112, 274, 367, 113, -1, -1, 273, 891 -1, 275, 273, -1, 274, 114, 273, -1, 274, 114, 892 275, 273, -1, 276, 115, -1, 269, 115, -1, 277, 893 -1, 276, 277, -1, 78, -1, 111, 269, -1, 109, 894 132, 161, 133, 110, -1, 109, 132, 305, 133, 110, 895 -1, 109, 132, 160, 94, 160, 133, 110, -1, 111, 896 109, 132, 144, 133, 110, -1, 279, -1, 228, 279, 897 -1, 278, 230, -1, 278, 230, 224, -1, 280, -1, 898 224, 280, -1, 279, 225, -1, 73, 107, 287, 108, 899 -1, 282, 368, -1, 281, 114, 282, 368, -1, -1, 900 284, 269, 283, 285, -1, 222, 331, -1, 32, -1, 901 34, -1, 33, -1, -1, 285, 286, -1, 127, 269, 902 107, 287, 108, -1, 127, 112, 132, 293, 113, -1, 903 127, 107, 132, 281, 133, 108, 112, 132, 293, 113, 904 107, 287, 108, -1, 271, -1, 161, -1, 287, 114, 905 271, -1, 287, 114, 161, -1, 32, 289, -1, 229, 906 32, 289, -1, 288, 114, 289, -1, 290, 285, -1, 907 290, 285, 129, 271, -1, 269, -1, 268, 107, 132, 908 281, 133, 108, -1, 35, 269, 107, 132, 281, 133, 909 108, 112, 113, -1, -1, 35, 269, 107, 132, 281, 910 133, 108, 112, 292, 293, 113, -1, 294, -1, 293, 911 132, 294, -1, 295, 133, 130, -1, 296, 133, 130, 912 -1, 212, -1, 214, -1, 295, 133, 114, 132, 267, 913 -1, 222, 304, -1, 296, 133, 114, 132, 304, -1, 914 -1, 298, -1, 300, -1, 298, 132, 300, -1, -1, 915 298, -1, 209, -1, 302, -1, 195, -1, -1, 5, 916 80, 301, 112, 299, 113, -1, 38, 300, -1, 303, 917 -1, 318, 170, -1, 322, 132, 204, 170, -1, 213, 918 170, -1, 221, 318, 170, -1, 224, 318, 170, -1, 919 228, 318, 170, -1, 228, 224, 318, 170, -1, 221, 920 322, 132, 204, 170, -1, 224, 322, 132, 204, 170, 921 -1, 228, 322, 132, 204, 170, -1, 228, 224, 322, 922 132, 204, 170, -1, 313, -1, 318, -1, 326, -1, 923 160, 121, 160, -1, -1, 62, 107, 139, 108, 307, 924 -1, -1, 308, -1, 309, -1, 308, 309, -1, 37, 925 107, 107, 310, 108, 108, -1, 311, -1, 310, 114, 926 311, -1, -1, 312, -1, 312, 107, 167, 108, -1, 927 267, -1, 231, -1, 232, -1, 225, -1, 314, 307, 928 -1, 315, -1, 316, 307, -1, 317, 307, -1, 135, 929 -1, 107, 314, 108, -1, 117, 313, -1, 117, 224, 930 313, -1, 107, 315, 108, -1, 314, 344, -1, 107, 931 315, 108, 344, -1, 107, 316, 108, 345, -1, 107, 932 316, 108, -1, 107, 315, 108, 107, 132, 259, 133, 933 108, -1, 107, 317, 108, -1, 319, 307, -1, 320, 934 -1, 321, 307, -1, 314, 107, 132, 259, 133, 108, 935 -1, 107, 320, 108, 107, 132, 259, 133, 108, -1, 936 107, 319, 108, -1, 117, 318, -1, 117, 224, 318, 937 -1, 107, 320, 108, -1, 107, 320, 108, 344, -1, 938 107, 321, 108, 345, -1, 107, 321, 108, -1, 323, 939 -1, 324, -1, 325, -1, 314, 107, 266, 108, -1, 940 107, 324, 108, 107, 266, 108, -1, 107, 323, 108, 941 -1, 117, 322, -1, 117, 224, 322, -1, 107, 324, 942 108, -1, 107, 324, 108, 344, -1, 107, 325, 108, 943 345, -1, 107, 325, 108, -1, 327, 307, -1, 328, 944 -1, 329, 307, -1, 330, 307, -1, 336, -1, 107, 945 327, 108, -1, 117, 326, -1, 117, 224, 326, -1, 946 107, 328, 108, -1, 327, 344, -1, 107, 328, 108, 947 344, -1, 107, 329, 108, 345, -1, 107, 329, 108, 948 -1, 327, 107, 132, 259, 133, 108, -1, 107, 328, 949 108, 107, 132, 259, 133, 108, -1, 107, 330, 108, 950 -1, 314, 307, -1, 332, -1, 333, 307, -1, 334, 951 307, -1, 117, 331, -1, 117, 224, 331, -1, 107, 952 332, 108, -1, 314, 350, -1, 107, 332, 108, 344, 953 -1, 107, 333, 108, 345, -1, 107, 333, 108, -1, 954 314, 107, 132, 259, 133, 108, -1, 107, 332, 108, 955 107, 132, 259, 133, 108, -1, 107, 334, 108, -1, 956 336, 307, -1, 337, -1, 338, 307, -1, 339, 307, 957 -1, 72, -1, 73, -1, 117, 335, -1, 117, 224, 958 335, -1, 107, 337, 108, -1, 336, 350, -1, 107, 959 337, 108, 350, -1, 336, 107, 132, 259, 133, 108, 960 -1, 107, 337, 108, 107, 132, 259, 133, 108, -1, 961 341, -1, 342, 307, -1, 343, 307, -1, 117, -1, 962 117, 224, -1, 117, 340, -1, 117, 224, 340, -1, 963 107, 341, 108, -1, 344, -1, 107, 341, 108, 344, 964 -1, 107, 342, 108, 345, -1, 107, 342, 108, -1, 965 107, 132, 259, 133, 108, -1, 107, 341, 108, 107, 966 132, 259, 133, 108, -1, 107, 343, 108, -1, 109, 967 110, -1, 109, 110, 345, -1, 345, -1, 109, 132, 968 161, 133, 110, -1, 109, 132, 117, 133, 110, -1, 969 345, 109, 132, 161, 133, 110, -1, 345, 109, 132, 970 117, 133, 110, -1, 347, -1, 348, 307, -1, 349, 971 307, -1, 117, -1, 117, 224, -1, 117, 346, -1, 972 117, 224, 346, -1, 107, 347, 108, -1, 350, -1, 973 107, 347, 108, 350, -1, 107, 348, 108, 345, -1, 974 107, 348, 108, -1, 107, 132, 259, 133, 108, -1, 975 107, 347, 108, 107, 132, 259, 133, 108, -1, 107, 976 349, 108, -1, 351, -1, 351, 345, -1, 345, -1, 977 109, 110, -1, 109, 132, 224, 117, 133, 110, -1, 978 109, 132, 224, 133, 110, -1, 109, 132, 224, 161, 979 133, 110, -1, 109, 132, 7, 223, 161, 133, 110, 980 -1, 109, 132, 224, 7, 161, 133, 110, -1, 353, 981 -1, 354, 307, -1, 355, 307, -1, 117, -1, 117, 982 224, -1, 117, 352, -1, 117, 224, 352, -1, 107, 983 353, 108, -1, 344, -1, 107, 353, 108, 344, -1, 984 107, 354, 108, 345, -1, 107, 354, 108, -1, 107, 985 353, 108, 107, 132, 259, 133, 108, -1, 107, 355, 986 108, -1, 357, -1, 365, -1, 224, 365, -1, 358, 987 -1, 359, -1, 117, 222, -1, 224, 117, 222, -1, 988 117, 366, -1, 224, 117, 366, -1, 117, 356, -1, 989 224, 117, 356, -1, 109, 110, 222, -1, 360, 222, 990 -1, 109, 110, 345, 222, -1, 360, 345, 222, -1, 991 345, 222, -1, 109, 110, 358, -1, 360, 358, -1, 992 109, 110, 345, 358, -1, 360, 345, 358, -1, 345, 993 358, -1, 109, 132, 224, 117, 133, 110, -1, 109, 994 132, 224, 161, 133, 110, -1, 109, 132, 228, 161, 995 133, 110, -1, 109, 132, 228, 224, 161, 133, 110, 996 -1, 365, -1, 224, 365, -1, 362, -1, 363, -1, 997 364, -1, 117, 222, -1, 224, 117, 222, -1, 117, 998 366, -1, 224, 117, 366, -1, 117, 361, -1, 224, 999 117, 361, -1, 109, 110, 222, -1, 109, 110, 345, 1000 222, -1, 345, 222, -1, 109, 110, 363, -1, 109, 1001 110, 345, 363, -1, 345, 363, -1, 109, 132, 258, 1002 133, 110, -1, 109, 110, 107, 255, 108, -1, 365, 1003 107, 132, 255, 133, 108, -1, 215, 107, 132, 255, 1004 133, 108, -1, -1, 114, -1, -1, 129, 161, -1 719 291, 0, -1, -1, -1, 72, -1, 73, -1, 74, 720 -1, 65, -1, 69, -1, 132, -1, 65, -1, 69, 721 -1, 65, -1, 76, -1, 77, -1, 75, -1, 133, 722 75, -1, 65, -1, 132, -1, 101, 160, 102, -1, 723 101, 164, 102, -1, 134, -1, 135, 103, 126, 155, 724 127, 104, -1, 135, 101, 136, 102, -1, 135, 105, 725 131, -1, 135, 105, 103, 126, 138, 127, 104, -1, 726 135, 78, 131, -1, 135, 78, 103, 126, 138, 127, 727 104, -1, 135, 79, -1, 135, 80, -1, 101, 264, 728 102, 106, 268, 361, 107, -1, 137, -1, 136, 108, 729 137, -1, -1, 155, -1, 131, 109, 155, -1, 103, 730 126, 155, 127, 104, 109, 155, -1, 103, 126, 155, 731 108, 158, 127, 104, 109, 155, -1, 139, -1, 138, 732 108, 139, -1, 131, -1, 131, 105, 139, -1, 131, 733 105, 103, 126, 138, 127, 104, -1, 131, 78, 139, 734 -1, 131, 78, 103, 126, 138, 127, 104, -1, 135, 735 -1, 128, -1, 133, -1, 79, 140, -1, 80, 140, 736 -1, 38, 142, -1, 141, 142, -1, 110, 142, -1, 737 111, 142, -1, 36, 140, -1, 36, 101, 264, 102, 738 -1, 69, -1, 69, 101, 265, 102, -1, 69, 101, 739 137, 102, -1, 59, 140, -1, 59, 101, 264, 102, 740 -1, 87, 131, -1, 112, -1, 113, -1, 114, -1, 741 115, -1, 140, -1, 101, 264, 102, 142, -1, 101, 742 264, 102, 157, -1, 142, -1, 143, 111, 142, -1, 743 143, 116, 142, -1, 143, 117, 142, -1, 143, -1, 744 144, 113, 143, -1, 144, 114, 143, -1, 144, -1, 745 145, 81, 144, -1, 145, 82, 144, -1, 145, -1, 746 146, 118, 145, -1, 146, 119, 145, -1, 146, 83, 747 145, -1, 146, 84, 145, -1, 146, -1, 147, 85, 748 146, -1, 147, 86, 146, -1, 147, -1, 148, 112, 749 147, -1, 148, -1, 149, 120, 148, -1, 149, -1, 750 150, 121, 149, -1, 150, -1, 151, 87, 150, -1, 751 151, -1, 152, 88, 151, -1, 152, -1, 152, 122, 752 160, 109, 153, -1, 152, 122, 109, 153, -1, 152, 753 122, 160, 109, 157, -1, 153, -1, 153, -1, 140, 754 123, 155, -1, 140, 159, 155, -1, 157, 362, -1, 755 -1, 155, -1, 103, 104, -1, 103, 126, 155, 127, 756 104, -1, 103, 126, 108, 158, 127, 104, -1, 103, 757 126, 155, 108, 158, 127, 104, -1, 156, -1, 158, 758 108, 156, -1, 90, -1, 91, -1, 92, -1, 93, 759 -1, 94, -1, 95, -1, 96, -1, 97, -1, 98, 760 -1, 99, -1, 155, -1, 160, 108, 155, -1, -1, 761 160, -1, 163, -1, 164, -1, 168, -1, 169, -1, 762 181, -1, 183, -1, 184, -1, 189, -1, 131, 109, 763 301, 162, -1, 106, 107, -1, 106, 126, 126, 200, 764 165, 127, 107, -1, 166, -1, 165, 126, 166, -1, 765 203, -1, 38, 203, -1, 297, -1, 162, 127, -1, 766 162, -1, 167, 162, -1, 161, 124, -1, 39, 101, 767 160, 102, 162, -1, 39, 101, 160, 102, 162, 40, 768 162, -1, 41, 101, 160, 102, 174, -1, 41, 101, 769 160, 102, 106, 126, 196, 175, 107, -1, 51, 101, 770 160, 102, 174, -1, 51, 101, 160, 102, 106, 126, 771 196, 177, 107, -1, 154, -1, 154, 89, 154, -1, 772 299, -1, 170, -1, 171, 108, 170, -1, 42, 171, 773 109, -1, 43, 109, -1, 172, -1, 173, 172, -1, 774 173, 162, -1, -1, 176, -1, 173, 167, -1, 176, 775 173, 167, -1, -1, 178, -1, 173, 180, -1, 173, 776 167, 179, -1, 178, 173, 180, -1, 178, 173, 167, 777 179, -1, -1, 180, -1, 52, -1, 52, 124, -1, 778 45, 101, 160, 102, 162, -1, 44, 162, 45, 101, 779 160, 102, 124, -1, 46, 101, 126, 182, 102, 162, 780 -1, 161, 127, 124, 161, 124, 161, -1, 203, 161, 781 124, 161, -1, 49, 131, 124, -1, 49, 111, 160, 782 124, -1, 48, 124, -1, 48, 131, 124, -1, 47, 783 124, -1, 47, 131, 124, -1, 50, 161, 124, -1, 784 56, 155, 124, -1, 56, 124, -1, 53, 164, 185, 785 -1, 53, 164, 187, -1, 53, 164, 185, 187, -1, 786 186, -1, 54, 101, 89, 102, 164, -1, 186, 54, 787 101, 89, 102, 164, -1, 54, 101, 126, 126, 188, 788 127, 102, 164, 127, -1, 186, 54, 101, 126, 126, 789 188, 127, 102, 164, 127, -1, 55, 164, -1, 216, 790 -1, 216, 298, -1, 216, 346, -1, 355, 131, -1, 791 355, -1, 57, 190, 101, 133, 102, 124, -1, 57, 792 190, 101, 133, 109, 191, 102, 124, -1, 57, 190, 793 101, 133, 109, 191, 109, 191, 102, 124, -1, 57, 794 190, 101, 133, 109, 191, 109, 191, 109, 194, 102, 795 124, -1, 57, 190, 49, 101, 133, 109, 109, 191, 796 109, 194, 109, 195, 102, 124, -1, -1, 11, -1, 797 -1, 192, -1, 193, -1, 192, 108, 193, -1, 133, 798 101, 154, 102, -1, 103, 154, 104, 133, 101, 154, 799 102, -1, -1, 133, -1, 194, 108, 133, -1, 131, 800 -1, 195, 108, 131, -1, 127, -1, 197, -1, 203, 801 -1, 197, 126, 203, -1, 127, -1, 199, -1, 213, 802 -1, 199, 126, 213, -1, -1, 201, -1, 28, 202, 803 124, -1, 201, 28, 202, 124, -1, 263, -1, 202, 804 108, 263, -1, 204, -1, 213, -1, 205, 127, 124, 805 -1, 210, 127, 124, -1, 207, 127, 124, -1, 282, 806 127, 124, -1, 285, 127, 124, -1, 206, 266, -1, 807 222, 206, 266, -1, 205, 127, 108, 126, 261, 266, 808 -1, 356, 261, 300, -1, 359, 261, 300, -1, 218, 809 359, 261, 300, -1, 208, -1, 218, 208, -1, 222, 810 208, -1, 222, 218, 208, -1, 207, 127, 108, 126, 811 261, -1, 103, 104, 261, 101, 126, 249, 127, 102, 812 -1, 359, 261, 101, 126, 249, 127, 102, -1, 209, 813 261, 101, 126, 249, 127, 102, -1, 103, 126, 251, 814 127, 104, -1, 103, 126, 251, 127, 108, 126, 252, 815 127, 104, -1, 3, 206, -1, 3, 208, -1, 210, 816 127, 108, 126, 131, -1, 3, 216, 298, -1, 211, 817 127, 108, 126, 298, -1, 218, 3, 216, 298, -1, 818 216, 3, 298, -1, 216, 3, 218, 298, -1, 3, 819 131, 123, 155, -1, 212, 127, 108, 126, 131, 123, 820 155, -1, 214, 127, 124, -1, 211, 127, 124, -1, 821 212, 127, 124, -1, 231, 127, 124, -1, 215, 298, 822 300, 266, -1, 214, 108, 301, 298, 300, 266, -1, 823 227, -1, 231, -1, 233, -1, 272, -1, 228, -1, 824 232, -1, 234, -1, 273, -1, -1, 218, -1, 219, 825 -1, 218, 219, -1, 220, -1, 303, -1, 10, -1, 826 12, -1, 11, -1, 14, -1, 60, -1, -1, 13, 827 101, 221, 275, 102, -1, 223, -1, 218, 223, -1, 828 222, 218, 223, -1, 224, -1, 223, 224, -1, 225, 829 -1, 5, -1, 7, -1, 4, -1, 6, -1, 8, 830 -1, 9, -1, 62, -1, 64, -1, 16, -1, 21, 831 -1, 20, -1, 18, -1, 19, -1, 17, -1, 22, 832 -1, 23, -1, 15, -1, 24, -1, 25, -1, 26, 833 -1, 228, -1, 222, 228, -1, 227, 224, -1, 227, 834 224, 218, -1, 227, 224, 228, -1, 229, -1, 217, 835 230, 217, -1, 226, -1, 218, 226, -1, 229, 219, 836 -1, 229, 226, -1, 27, 101, 265, 102, -1, 27, 837 101, 160, 102, -1, 71, 101, 265, 102, -1, 71, 838 101, 160, 102, -1, 232, -1, 222, 232, -1, 231, 839 224, -1, 231, 224, 218, -1, 235, -1, 218, 235, 840 -1, 232, 219, -1, 234, -1, 222, 234, -1, 233, 841 224, -1, 233, 224, 218, -1, 67, -1, 218, 67, 842 -1, 234, 219, -1, 236, -1, 246, -1, 237, 106, 843 238, 107, -1, 237, 263, -1, 237, 263, 106, 238, 844 107, -1, 237, 101, 281, 102, 106, 238, 107, -1, 845 237, 274, -1, 30, 301, -1, 31, 301, -1, 239, 846 -1, 238, 239, -1, 240, 124, -1, 38, 240, 124, 847 -1, 241, 124, -1, 38, 241, 124, -1, 355, -1, 848 355, 263, -1, 240, 108, 263, -1, 240, 108, -1, 849 216, 242, -1, 241, 108, 301, 242, -1, -1, 244, 850 -1, 307, 243, -1, 320, 243, -1, 346, -1, -1, 851 244, -1, 109, 154, -1, 29, 301, -1, 245, 106, 852 247, 361, 107, -1, 245, 263, 106, 247, 361, 107, 853 -1, 245, 263, -1, 263, 248, -1, 247, 108, 263, 854 248, -1, -1, 123, 154, -1, -1, 250, -1, 252, 855 -1, 251, -1, 251, 127, 108, 126, 252, -1, 252, 856 127, 108, 126, 89, -1, 251, 127, 108, 126, 89, 857 -1, 256, -1, 252, 127, 108, 126, 256, -1, 251, 858 127, 108, 126, 256, -1, 251, 127, 108, 126, 252, 859 127, 108, 126, 256, -1, 257, -1, 252, 127, 108, 860 126, 257, -1, -1, 254, -1, 255, -1, 255, 127, 861 108, 126, 89, -1, 259, -1, 258, -1, 255, 127, 862 108, 126, 259, -1, 255, 127, 108, 126, 258, -1, 863 258, -1, 351, 261, 362, -1, 359, 261, 362, -1, 864 218, 359, 261, 362, -1, 208, -1, 259, -1, 351, 865 -1, 359, -1, 218, 359, -1, 360, -1, 215, 325, 866 362, -1, 215, 329, 362, -1, 215, -1, 215, 340, 867 -1, 131, -1, 260, 108, 131, -1, 129, -1, 67, 868 -1, 68, -1, 130, -1, 67, -1, 68, -1, 131, 869 -1, 67, -1, 68, -1, 355, -1, 216, -1, 216, 870 346, -1, 355, -1, 360, -1, 216, -1, 216, 334, 871 -1, -1, 123, 267, -1, 155, -1, 106, 268, 361, 872 107, -1, 267, -1, 269, 267, -1, 268, 108, 267, 873 -1, 268, 108, 269, 267, -1, 270, 109, -1, 263, 874 109, -1, 271, -1, 270, 271, -1, 73, -1, 105, 875 263, -1, 103, 126, 155, 127, 104, -1, 103, 126, 876 299, 127, 104, -1, 103, 126, 154, 89, 154, 127, 877 104, -1, 105, 103, 126, 138, 127, 104, -1, 273, 878 -1, 222, 273, -1, 272, 224, -1, 272, 224, 218, 879 -1, 274, -1, 218, 274, -1, 273, 219, -1, 68, 880 101, 281, 102, -1, 276, 362, -1, 275, 108, 276, 881 362, -1, -1, 278, 263, 277, 279, -1, 216, 325, 882 -1, 32, -1, 34, -1, 33, -1, -1, 279, 280, 883 -1, 121, 263, 101, 281, 102, -1, 121, 106, 126, 884 287, 107, -1, 121, 101, 126, 275, 127, 102, 106, 885 126, 287, 107, 101, 281, 102, -1, 265, -1, 155, 886 -1, 281, 108, 265, -1, 281, 108, 155, -1, 32, 887 283, -1, 223, 32, 283, -1, 282, 108, 283, -1, 888 284, 279, -1, 284, 279, 123, 265, -1, 263, -1, 889 262, 101, 126, 275, 127, 102, -1, 35, 263, 101, 890 126, 275, 127, 102, 106, 107, -1, -1, 35, 263, 891 101, 126, 275, 127, 102, 106, 286, 287, 107, -1, 892 288, -1, 287, 126, 288, -1, 289, 127, 124, -1, 893 290, 127, 124, -1, 206, -1, 208, -1, 289, 127, 894 108, 126, 261, -1, 216, 298, -1, 290, 127, 108, 895 126, 298, -1, -1, 292, -1, 294, -1, 292, 126, 896 294, -1, -1, 292, -1, 203, -1, 296, -1, 189, 897 -1, -1, 5, 75, 295, 106, 293, 107, -1, 38, 898 294, -1, 297, -1, 312, 164, -1, 316, 126, 198, 899 164, -1, 207, 164, -1, 215, 312, 164, -1, 218, 900 312, 164, -1, 222, 312, 164, -1, 222, 218, 312, 901 164, -1, 215, 316, 126, 198, 164, -1, 218, 316, 902 126, 198, 164, -1, 222, 316, 126, 198, 164, -1, 903 222, 218, 316, 126, 198, 164, -1, 307, -1, 312, 904 -1, 320, -1, 154, 115, 154, -1, -1, 57, 101, 905 133, 102, 301, -1, -1, 302, -1, 303, -1, 302, 906 303, -1, 37, 101, 101, 304, 102, 102, -1, 305, 907 -1, 304, 108, 305, -1, -1, 306, -1, 306, 101, 908 161, 102, -1, 261, -1, 225, -1, 226, -1, 219, 909 -1, 308, 301, -1, 309, -1, 310, 301, -1, 311, 910 301, -1, 129, -1, 101, 308, 102, -1, 111, 307, 911 -1, 111, 218, 307, -1, 101, 309, 102, -1, 308, 912 338, -1, 101, 309, 102, 338, -1, 101, 310, 102, 913 339, -1, 101, 310, 102, -1, 101, 309, 102, 101, 914 126, 253, 127, 102, -1, 101, 311, 102, -1, 313, 915 301, -1, 314, -1, 315, 301, -1, 308, 101, 126, 916 253, 127, 102, -1, 101, 314, 102, 101, 126, 253, 917 127, 102, -1, 101, 313, 102, -1, 111, 312, -1, 918 111, 218, 312, -1, 101, 314, 102, -1, 101, 314, 919 102, 338, -1, 101, 315, 102, 339, -1, 101, 315, 920 102, -1, 317, -1, 318, -1, 319, -1, 308, 101, 921 260, 102, -1, 101, 318, 102, 101, 260, 102, -1, 922 101, 317, 102, -1, 111, 316, -1, 111, 218, 316, 923 -1, 101, 318, 102, -1, 101, 318, 102, 338, -1, 924 101, 319, 102, 339, -1, 101, 319, 102, -1, 321, 925 301, -1, 322, -1, 323, 301, -1, 324, 301, -1, 926 330, -1, 101, 321, 102, -1, 111, 320, -1, 111, 927 218, 320, -1, 101, 322, 102, -1, 321, 338, -1, 928 101, 322, 102, 338, -1, 101, 323, 102, 339, -1, 929 101, 323, 102, -1, 321, 101, 126, 253, 127, 102, 930 -1, 101, 322, 102, 101, 126, 253, 127, 102, -1, 931 101, 324, 102, -1, 308, 301, -1, 326, -1, 327, 932 301, -1, 328, 301, -1, 111, 325, -1, 111, 218, 933 325, -1, 101, 326, 102, -1, 308, 344, -1, 101, 934 326, 102, 338, -1, 101, 327, 102, 339, -1, 101, 935 327, 102, -1, 308, 101, 126, 253, 127, 102, -1, 936 101, 326, 102, 101, 126, 253, 127, 102, -1, 101, 937 328, 102, -1, 330, 301, -1, 331, -1, 332, 301, 938 -1, 333, 301, -1, 67, -1, 68, -1, 111, 329, 939 -1, 111, 218, 329, -1, 101, 331, 102, -1, 330, 940 344, -1, 101, 331, 102, 344, -1, 330, 101, 126, 941 253, 127, 102, -1, 101, 331, 102, 101, 126, 253, 942 127, 102, -1, 335, -1, 336, 301, -1, 337, 301, 943 -1, 111, -1, 111, 218, -1, 111, 334, -1, 111, 944 218, 334, -1, 101, 335, 102, -1, 338, -1, 101, 945 335, 102, 338, -1, 101, 336, 102, 339, -1, 101, 946 336, 102, -1, 101, 126, 253, 127, 102, -1, 101, 947 335, 102, 101, 126, 253, 127, 102, -1, 101, 337, 948 102, -1, 103, 104, -1, 103, 104, 339, -1, 339, 949 -1, 103, 126, 155, 127, 104, -1, 103, 126, 111, 950 127, 104, -1, 339, 103, 126, 155, 127, 104, -1, 951 339, 103, 126, 111, 127, 104, -1, 341, -1, 342, 952 301, -1, 343, 301, -1, 111, -1, 111, 218, -1, 953 111, 340, -1, 111, 218, 340, -1, 101, 341, 102, 954 -1, 344, -1, 101, 341, 102, 344, -1, 101, 342, 955 102, 339, -1, 101, 342, 102, -1, 101, 126, 253, 956 127, 102, -1, 101, 341, 102, 101, 126, 253, 127, 957 102, -1, 101, 343, 102, -1, 345, -1, 345, 339, 958 -1, 339, -1, 103, 104, -1, 103, 126, 218, 111, 959 127, 104, -1, 103, 126, 218, 127, 104, -1, 103, 960 126, 218, 155, 127, 104, -1, 103, 126, 7, 217, 961 155, 127, 104, -1, 103, 126, 218, 7, 155, 127, 962 104, -1, 347, -1, 348, 301, -1, 349, 301, -1, 963 111, -1, 111, 218, -1, 111, 346, -1, 111, 218, 964 346, -1, 101, 347, 102, -1, 338, -1, 101, 347, 965 102, 338, -1, 101, 348, 102, 339, -1, 101, 348, 966 102, -1, 101, 347, 102, 101, 126, 253, 127, 102, 967 -1, 101, 349, 102, -1, 351, -1, 359, -1, 218, 968 359, -1, 352, -1, 353, -1, 111, 216, -1, 218, 969 111, 216, -1, 111, 360, -1, 218, 111, 360, -1, 970 111, 350, -1, 218, 111, 350, -1, 103, 104, 216, 971 -1, 354, 216, -1, 103, 104, 339, 216, -1, 354, 972 339, 216, -1, 339, 216, -1, 103, 104, 352, -1, 973 354, 352, -1, 103, 104, 339, 352, -1, 354, 339, 974 352, -1, 339, 352, -1, 103, 126, 218, 111, 127, 975 104, -1, 103, 126, 218, 155, 127, 104, -1, 103, 976 126, 222, 155, 127, 104, -1, 103, 126, 222, 218, 977 155, 127, 104, -1, 359, -1, 218, 359, -1, 356, 978 -1, 357, -1, 358, -1, 111, 216, -1, 218, 111, 979 216, -1, 111, 360, -1, 218, 111, 360, -1, 111, 980 355, -1, 218, 111, 355, -1, 103, 104, 216, -1, 981 103, 104, 339, 216, -1, 339, 216, -1, 103, 104, 982 357, -1, 103, 104, 339, 357, -1, 339, 357, -1, 983 103, 126, 252, 127, 104, -1, 103, 104, 101, 249, 984 102, -1, 359, 101, 126, 249, 127, 102, -1, 209, 985 101, 126, 249, 127, 102, -1, -1, 108, -1, -1, 986 123, 155, -1 1005 987 }; 1006 988 … … 1008 990 static const yytype_uint16 yyrline[] = 1009 991 { 1010 0, 2 90, 290, 296, 305, 306, 307, 311, 312, 313,1011 31 7, 318, 323, 327, 328, 332, 333, 339, 341, 343,1012 34 5, 350, 351, 357, 359, 361, 362, 364, 365, 367,1013 36 9, 371, 379, 380, 386, 387, 388, 393, 395, 400,1014 401, 405, 407, 409, 411, 413, 418, 421, 423, 425,1015 42 7, 429, 431, 433, 435, 441, 443, 445, 447, 449,1016 4 51, 453, 455, 460, 461, 462, 463, 467, 468, 470,1017 4 75, 476, 478, 480, 485, 486, 488, 493, 494, 496,1018 501, 502, 504, 506, 508, 513, 514, 516, 521, 522,1019 52 7, 528, 533, 534, 539, 540, 545, 546, 551, 552,1020 5 54, 556, 561, 566, 567, 569, 571, 577, 578, 584,1021 58 6, 588, 590, 595, 596, 601, 602, 603, 604, 605,1022 60 6, 607, 608, 609, 610, 614, 615, 621, 622, 628,1023 62 9, 630, 631, 632, 633, 634, 635, 636, 645, 652,1024 65 4, 664, 665, 670, 672, 674, 676, 680, 681, 686,1025 6 91, 694, 696, 698, 703, 705, 713, 714, 716, 720,1026 7 21, 726, 727, 732, 733, 737, 742, 743, 747, 749,1027 7 55, 756, 760, 762, 764, 766, 772, 773, 777, 778,1028 7 82, 784, 786, 791, 793, 798, 800, 804, 807, 811,1029 8 14, 818, 820, 824, 826, 833, 835, 837, 846, 848,1030 8 50, 852, 854, 859, 861, 863, 865, 870, 883, 884,1031 88 9, 891, 896, 900, 902, 904, 906, 908, 914, 915,1032 9 21, 922, 926, 927, 932, 934, 940, 941, 943, 948,1033 9 50, 957, 959, 963, 964, 969, 971, 975, 976, 980,1034 98 2, 986, 987, 991, 992, 996, 997, 1012, 1013, 1014,1035 10 15, 1016, 1020, 1025, 1032, 1042, 1047, 1052, 1060, 1065,1036 10 70, 1075, 1080, 1088, 1110, 1115, 1122, 1124, 1131, 1136,1037 11 41, 1152, 1157, 1162, 1167, 1172, 1181, 1186, 1194, 1195,1038 119 6, 1197, 1203, 1208, 1216, 1217, 1218, 1219, 1223, 1224,1039 122 5, 1226, 1231, 1232, 1241, 1242, 1247, 1248, 1253, 1255,1040 125 7, 1259, 1261, 1264, 1263, 1275, 1276, 1278, 1288, 1289,1041 12 94, 1298, 1300, 1302, 1304, 1306, 1308, 1310, 1312, 1317,1042 13 19, 1321, 1323, 1325, 1327, 1329, 1331, 1333, 1335, 1337,1043 133 9, 1345, 1346, 1348, 1350, 1352, 1357, 1358, 1364, 1365,1044 13 67, 1369, 1374, 1376, 1378, 1380, 1385, 1386, 1388, 1390,1045 13 95, 1396, 1398, 1403, 1404, 1406, 1408, 1413, 1415, 1417,1046 14 22, 1423, 1427, 1429, 1431, 1433, 1435, 1440, 1442, 1447,1047 14 49, 1454, 1455, 1457, 1458, 1463, 1464, 1466, 1468, 1473,1048 14 75, 1481, 1482, 1484, 1487, 1490, 1495, 1496, 1501, 1506,1049 15 10, 1512, 1514, 1519, 1521, 1527, 1528, 1536, 1537, 1541,1050 15 42, 1543, 1545, 1547, 1554, 1555, 1557, 1559, 1564, 1565,1051 15 71, 1572, 1576, 1577, 1582, 1583, 1584, 1586, 1594, 1595,1052 15 97, 1600, 1602, 1606, 1607, 1608, 1610, 1612, 1616, 1621,1053 162 9, 1630, 1639, 1641, 1646, 1647, 1648, 1652, 1653, 1654,1054 16 58, 1659, 1660, 1664, 1665, 1666, 1671, 1672, 1673, 1674,1055 16 80, 1681, 1683, 1688, 1689, 1694, 1695, 1696, 1697, 1698,1056 17 13, 1714, 1719, 1720, 1728, 1730, 1732, 1735, 1737, 1739,1057 17 62, 1763, 1765, 1767, 1772, 1773, 1775, 1780, 1785, 1786,1058 17 92, 1791, 1795, 1799, 1801, 1803, 1809, 1810, 1815, 1820,1059 18 22, 1827, 1829, 1830, 1832, 1837, 1839, 1841, 1846, 1848,1060 18 53, 1858, 1866, 1872, 1871, 1885, 1886, 1891, 1892, 1896,1061 19 01, 1906, 1914, 1919, 1930, 1931, 1942, 1943, 1949, 1950,1062 19 54, 1955, 1956, 1959, 1958, 1969, 1974, 1979, 1985, 1994,1063 20 00, 2006, 2012, 2018, 2026, 2032, 2040, 2046, 2055, 2056,1064 2057, 20 61, 2065, 2067, 2072, 2073, 2077, 2078, 2083, 2089,1065 2 090, 2093, 2095, 2096, 2100, 2101, 2102, 2103, 2137, 2139,1066 21 40, 2142, 2147, 2152, 2157, 2159, 2161, 2166, 2168, 2170,1067 217 2, 2177, 2179, 2189, 2191, 2192, 2197, 2199, 2201, 2206,1068 220 8, 2210, 2215, 2217, 2219, 2228, 2229, 2230, 2234, 2236,1069 22 38, 2243, 2245, 2247, 2252, 2254, 2256, 2271, 2273, 2274,1070 227 6, 2281, 2282, 2287, 2289, 2291, 2296, 2298, 2300, 2302,1071 230 7, 2309, 2311, 2321, 2323, 2324, 2326, 2331, 2333, 2335,1072 23 40, 2342, 2344, 2346, 2351, 2353, 2355, 2386, 2388, 2389,1073 239 1, 2396, 2401, 2409, 2411, 2413, 2418, 2420, 2425, 2427,1074 24 41, 2442, 2444, 2449, 2451, 2453, 2455, 2457, 2462, 2463,1075 246 5, 2467, 2472, 2474, 2476, 2482, 2484, 2486, 2490, 2492,1076 2494, 249 6, 2510, 2511, 2513, 2518, 2520, 2522, 2524, 2526,1077 25 31, 2532, 2534, 2536, 2541, 2543, 2545, 2551, 2552, 2554,1078 256 3, 2566, 2568, 2571, 2573, 2575, 2588, 2589, 2591, 2596,1079 25 98, 2600, 2602, 2604, 2609, 2610, 2612, 2614, 2619, 2621,1080 26 29, 2630, 2631, 2636, 2637, 2641, 2643, 2645, 2647, 2649,1081 26 51, 2658, 2660, 2662, 2664, 2666, 2668, 2670, 2672, 2674,1082 26 76, 2681, 2683, 2685, 2690, 2716, 2717, 2719, 2723, 2724,1083 27 28, 2730, 2732, 2734, 2736, 2738, 2745, 2747, 2749, 2751,1084 27 53, 2755, 2760, 2765, 2767, 2769, 2787, 2789, 2794, 2795992 0, 288, 288, 294, 303, 304, 305, 309, 310, 311, 993 315, 316, 320, 324, 325, 329, 330, 336, 338, 340, 994 342, 347, 348, 354, 356, 358, 359, 361, 362, 364, 995 367, 372, 373, 379, 380, 381, 386, 388, 393, 394, 996 398, 400, 402, 404, 406, 411, 414, 416, 418, 420, 997 422, 424, 426, 428, 434, 436, 438, 440, 442, 444, 998 446, 448, 453, 454, 455, 456, 460, 461, 463, 468, 999 469, 471, 473, 478, 479, 481, 486, 487, 489, 494, 1000 495, 497, 499, 501, 506, 507, 509, 514, 515, 520, 1001 521, 526, 527, 532, 533, 538, 539, 544, 545, 547, 1002 549, 554, 559, 560, 562, 564, 570, 571, 577, 579, 1003 581, 583, 588, 589, 594, 595, 596, 597, 598, 599, 1004 600, 601, 602, 603, 607, 608, 614, 615, 621, 622, 1005 623, 624, 625, 626, 627, 628, 632, 639, 641, 651, 1006 652, 657, 659, 661, 663, 667, 668, 673, 678, 681, 1007 683, 685, 690, 692, 700, 701, 703, 707, 708, 713, 1008 714, 719, 720, 724, 729, 730, 734, 736, 742, 743, 1009 747, 749, 751, 753, 759, 760, 764, 765, 769, 771, 1010 773, 778, 780, 785, 787, 791, 794, 798, 801, 805, 1011 807, 809, 814, 816, 818, 827, 829, 831, 836, 838, 1012 843, 856, 857, 862, 864, 869, 873, 875, 877, 879, 1013 881, 887, 888, 894, 895, 899, 900, 905, 907, 913, 1014 914, 916, 921, 923, 930, 932, 936, 937, 942, 944, 1015 948, 949, 953, 955, 959, 960, 964, 965, 969, 970, 1016 985, 986, 987, 988, 989, 993, 998, 1005, 1015, 1020, 1017 1025, 1033, 1038, 1043, 1048, 1053, 1061, 1083, 1088, 1095, 1018 1097, 1104, 1109, 1114, 1125, 1130, 1135, 1140, 1145, 1154, 1019 1159, 1167, 1168, 1169, 1170, 1176, 1181, 1189, 1190, 1191, 1020 1192, 1196, 1197, 1198, 1199, 1204, 1205, 1214, 1215, 1220, 1021 1221, 1226, 1228, 1230, 1232, 1234, 1237, 1236, 1248, 1249, 1022 1251, 1261, 1262, 1267, 1271, 1273, 1275, 1277, 1279, 1281, 1023 1283, 1285, 1290, 1292, 1294, 1296, 1298, 1300, 1302, 1304, 1024 1306, 1308, 1310, 1312, 1318, 1319, 1321, 1323, 1325, 1330, 1025 1331, 1337, 1338, 1340, 1342, 1347, 1349, 1351, 1353, 1358, 1026 1359, 1361, 1363, 1368, 1369, 1371, 1376, 1377, 1379, 1381, 1027 1386, 1388, 1390, 1395, 1396, 1400, 1402, 1404, 1406, 1408, 1028 1413, 1415, 1420, 1422, 1427, 1428, 1430, 1431, 1436, 1437, 1029 1439, 1441, 1446, 1448, 1454, 1455, 1457, 1460, 1463, 1468, 1030 1469, 1474, 1479, 1483, 1485, 1487, 1492, 1494, 1500, 1501, 1031 1509, 1510, 1514, 1515, 1516, 1518, 1520, 1527, 1528, 1530, 1032 1532, 1537, 1538, 1544, 1545, 1549, 1550, 1555, 1556, 1557, 1033 1559, 1567, 1568, 1570, 1573, 1575, 1579, 1580, 1581, 1583, 1034 1585, 1589, 1594, 1602, 1603, 1612, 1614, 1619, 1620, 1621, 1035 1625, 1626, 1627, 1631, 1632, 1633, 1637, 1638, 1639, 1644, 1036 1645, 1646, 1647, 1653, 1654, 1659, 1660, 1664, 1665, 1666, 1037 1667, 1682, 1683, 1688, 1689, 1696, 1698, 1700, 1703, 1705, 1038 1707, 1730, 1731, 1733, 1735, 1740, 1741, 1743, 1748, 1753, 1039 1754, 1760, 1759, 1763, 1767, 1769, 1771, 1777, 1778, 1783, 1040 1788, 1790, 1795, 1797, 1798, 1800, 1805, 1807, 1809, 1814, 1041 1816, 1821, 1826, 1834, 1840, 1839, 1853, 1854, 1859, 1860, 1042 1864, 1869, 1874, 1882, 1887, 1898, 1899, 1910, 1911, 1917, 1043 1918, 1922, 1923, 1924, 1927, 1926, 1937, 1942, 1947, 1953, 1044 1962, 1968, 1974, 1980, 1986, 1994, 2000, 2008, 2014, 2023, 1045 2024, 2025, 2029, 2033, 2035, 2040, 2041, 2045, 2046, 2051, 1046 2057, 2058, 2061, 2063, 2064, 2068, 2069, 2070, 2071, 2105, 1047 2107, 2108, 2110, 2115, 2120, 2125, 2127, 2129, 2134, 2136, 1048 2138, 2140, 2145, 2147, 2157, 2159, 2160, 2165, 2167, 2169, 1049 2174, 2176, 2178, 2183, 2185, 2187, 2196, 2197, 2198, 2202, 1050 2204, 2206, 2211, 2213, 2215, 2220, 2222, 2224, 2239, 2241, 1051 2242, 2244, 2249, 2250, 2255, 2257, 2259, 2264, 2266, 2268, 1052 2270, 2275, 2277, 2279, 2289, 2291, 2292, 2294, 2299, 2301, 1053 2303, 2308, 2310, 2312, 2314, 2319, 2321, 2323, 2354, 2356, 1054 2357, 2359, 2364, 2369, 2377, 2379, 2381, 2386, 2388, 2393, 1055 2395, 2409, 2410, 2412, 2417, 2419, 2421, 2423, 2425, 2430, 1056 2431, 2433, 2435, 2440, 2442, 2444, 2450, 2452, 2454, 2458, 1057 2460, 2462, 2464, 2478, 2479, 2481, 2486, 2488, 2490, 2492, 1058 2494, 2499, 2500, 2502, 2504, 2509, 2511, 2513, 2519, 2520, 1059 2522, 2531, 2534, 2536, 2539, 2541, 2543, 2556, 2557, 2559, 1060 2564, 2566, 2568, 2570, 2572, 2577, 2578, 2580, 2582, 2587, 1061 2589, 2597, 2598, 2599, 2604, 2605, 2609, 2611, 2613, 2615, 1062 2617, 2619, 2626, 2628, 2630, 2632, 2634, 2636, 2638, 2640, 1063 2642, 2644, 2649, 2651, 2653, 2658, 2684, 2685, 2687, 2691, 1064 2692, 2696, 2698, 2700, 2702, 2704, 2706, 2713, 2715, 2717, 1065 2719, 2721, 2723, 2728, 2733, 2735, 2737, 2755, 2757, 2762, 1066 2763 1085 1067 }; 1086 1068 #endif … … 1098 1080 "ATTRIBUTE", "EXTENSION", "IF", "ELSE", "SWITCH", "CASE", "DEFAULT", 1099 1081 "DO", "WHILE", "FOR", "BREAK", "CONTINUE", "GOTO", "RETURN", "CHOOSE", 1100 "DISABLE", "ENABLE", "FALLTHRU", "TRY", "CATCH", "CATCHRESUME", 1101 "FINALLY", "THROW", "THROWRESUME", "AT", "ASM", "ALIGNAS", "ALIGNOF", 1102 "ATOMIC", "GENERIC", "NORETURN", "STATICASSERT", "THREADLOCAL", 1103 "IDENTIFIER", "QUOTED_IDENTIFIER", "TYPEDEFname", "TYPEGENname", 1104 "ATTR_IDENTIFIER", "ATTR_TYPEDEFname", "ATTR_TYPEGENname", 1082 "FALLTHRU", "TRY", "CATCH", "FINALLY", "THROW", "ASM", "ALIGNAS", 1083 "ALIGNOF", "ATOMIC", "GENERIC", "NORETURN", "STATICASSERT", 1084 "THREADLOCAL", "IDENTIFIER", "QUOTED_IDENTIFIER", "TYPEDEFname", 1085 "TYPEGENname", "ATTR_IDENTIFIER", "ATTR_TYPEDEFname", "ATTR_TYPEGENname", 1105 1086 "INTEGERconstant", "FLOATINGconstant", "CHARACTERconstant", 1106 1087 "STRINGliteral", "ZERO", "ONE", "ARROW", "ICR", "DECR", "LS", "RS", "LE", 1107 1088 "GE", "EQ", "NE", "ANDAND", "OROR", "ELLIPSIS", "MULTassign", 1108 1089 "DIVassign", "MODassign", "PLUSassign", "MINUSassign", "LSassign", 1109 "RSassign", "ANDassign", "ERassign", "ORassign", " ATassign", "THEN",1110 "' ('", "')'", "'['", "']'", "'.'", "'{'", "'}'", "','", "':'", "'!'",1111 "' *'", "'&'", "'+'", "'-'", "'~'", "'/'", "'%'", "'<'", "'>'", "'^'",1112 "' |'", "'?'", "'='", "';'", "$accept", "push", "pop", "constant",1113 " identifier", "no_01_identifier", "no_attr_identifier", "zero_one",1090 "RSassign", "ANDassign", "ERassign", "ORassign", "THEN", "'('", "')'", 1091 "'['", "']'", "'.'", "'{'", "'}'", "','", "':'", "'!'", "'*'", "'&'", 1092 "'+'", "'-'", "'~'", "'/'", "'%'", "'<'", "'>'", "'^'", "'|'", "'?'", 1093 "'='", "';'", "$accept", "push", "pop", "constant", "identifier", 1094 "no_01_identifier", "no_attr_identifier", "zero_one", 1114 1095 "string_literal_list", "primary_expression", "postfix_expression", 1115 1096 "argument_expression_list", "argument_expression", "field_list", "field", … … 1214 1195 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 1215 1196 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 1216 355, 356, 357, 358, 359, 360, 361, 40, 41, 91, 1217 93, 46, 123, 125, 44, 58, 33, 42, 38, 43, 1218 45, 126, 47, 37, 60, 62, 94, 124, 63, 61, 1219 59 1197 355, 40, 41, 91, 93, 46, 123, 125, 44, 58, 1198 33, 42, 38, 43, 45, 126, 47, 37, 60, 62, 1199 94, 124, 63, 61, 59 1220 1200 }; 1221 1201 # endif … … 1224 1204 static const yytype_uint16 yyr1[] = 1225 1205 { 1226 0, 1 31, 132, 133, 134, 134, 134, 135, 135, 135,1227 13 6, 136, 137, 138, 138, 139, 139, 140, 140, 140,1228 1 40, 141, 141, 141, 141, 141, 141, 141, 141, 141,1229 1 41, 141, 142, 142, 143, 143, 143, 143, 143, 144,1230 1 44, 145, 145, 145, 145, 145, 146, 146, 146, 146,1231 14 6, 146, 146, 146, 146, 146, 146, 146, 146, 146,1232 14 6, 146, 146, 147, 147, 147, 147, 148, 148, 148,1233 14 9, 149, 149, 149, 150, 150, 150, 151, 151, 151,1234 1 52, 152, 152, 152, 152, 153, 153, 153, 154, 154,1235 1 55, 155, 156, 156, 157, 157, 158, 158, 159, 159,1236 15 9, 159, 160, 161, 161, 161, 161, 162, 162, 163,1237 1 63, 163, 163, 164, 164, 165, 165, 165, 165, 165,1238 1 65, 165, 165, 165, 165, 166, 166, 167, 167, 168,1239 16 8, 168, 168, 168, 168, 168, 168, 168, 169, 170,1240 1 70, 171, 171, 172, 172, 172, 172, 173, 173, 174,1241 1 75, 175, 175, 175, 175, 175, 176, 176, 176, 177,1242 17 7, 178, 178, 179, 179, 180, 181, 181, 182, 182,1243 1 83, 183, 184, 184, 184, 184, 185, 185, 186, 186,1244 18 7, 187, 187, 188, 188, 189, 189, 189, 189, 189,1245 18 9, 189, 189, 189, 189, 190, 190, 190, 191, 191,1246 1 91, 191, 191, 192, 192, 192, 192, 193, 194, 194,1247 1 94, 194, 194, 195, 195, 195, 195, 195, 196, 196,1248 19 7, 197, 198, 198, 199, 199, 200, 200, 200, 201,1249 201, 202, 202, 203, 203, 204, 204, 205, 205, 206,1250 20 6, 207, 207, 208, 208, 209, 209, 210, 210, 210,1251 2 10, 210, 211, 211, 211, 212, 212, 212, 213, 213,1252 2 13, 213, 213, 214, 214, 214, 215, 215, 216, 216,1253 21 6, 217, 217, 217, 217, 217, 218, 218, 219, 219,1254 21 9, 219, 220, 220, 221, 221, 221, 221, 222, 222,1255 2 22, 222, 223, 223, 224, 224, 225, 225, 226, 226,1256 22 6, 226, 226, 227, 226, 228, 228, 228, 229, 229,1257 2 30, 231, 231, 231, 231, 231, 231, 231, 231, 232,1258 2 32, 232, 232, 232, 232, 232, 232, 232, 232, 232,1259 2 32, 233, 233, 233, 233, 233, 234, 234, 235, 235,1260 23 5, 235, 236, 236, 236, 236, 237, 237, 237, 237,1261 23 8, 238, 238, 239, 239, 239, 239, 240, 240, 240,1262 2 41, 241, 242, 242, 242, 242, 242, 243, 243, 244,1263 24 4, 245, 245, 245, 245, 246, 246, 246, 246, 247,1264 24 7, 248, 248, 248, 248, 248, 249, 249, 250, 251,1265 2 52, 252, 252, 253, 253, 254, 254, 255, 255, 256,1266 25 6, 256, 256, 256, 257, 257, 257, 257, 258, 258,1267 25 9, 259, 260, 260, 261, 261, 261, 261, 262, 262,1268 2 62, 262, 262, 263, 263, 263, 263, 263, 264, 264,1269 26 5, 265, 266, 266, 267, 267, 267, 268, 268, 268,1270 26 9, 269, 269, 270, 270, 270, 271, 271, 271, 271,1271 2 72, 272, 272, 273, 273, 274, 274, 274, 274, 274,1272 27 5, 275, 276, 276, 277, 277, 277, 277, 277, 277,1273 27 8, 278, 278, 278, 279, 279, 279, 280, 281, 281,1274 28 3, 282, 282, 284, 284, 284, 285, 285, 286, 286,1275 28 6, 287, 287, 287, 287, 288, 288, 288, 289, 289,1276 2 90, 290, 291, 292, 291, 293, 293, 294, 294, 295,1277 29 5, 295, 296, 296, 297, 297, 298, 298, 299, 299,1278 300, 300, 300, 301, 300, 300, 302, 302, 302, 303,1279 303, 303, 303, 303, 303, 303, 303, 303, 304, 304,1280 304, 30 5, 306, 306, 307, 307, 308, 308, 309, 310,1281 3 10, 311, 311, 311, 312, 312, 312, 312, 313, 313,1282 31 3, 313, 314, 314, 315, 315, 315, 316, 316, 316,1283 31 6, 317, 317, 318, 318, 318, 319, 319, 319, 320,1284 3 20, 320, 321, 321, 321, 322, 322, 322, 323, 323,1285 32 3, 324, 324, 324, 325, 325, 325, 326, 326, 326,1286 32 6, 327, 327, 328, 328, 328, 329, 329, 329, 329,1287 3 30, 330, 330, 331, 331, 331, 331, 332, 332, 332,1288 3 33, 333, 333, 333, 334, 334, 334, 335, 335, 335,1289 33 5, 336, 336, 337, 337, 337, 338, 338, 339, 339,1290 3 40, 340, 340, 341, 341, 341, 341, 341, 342, 342,1291 3 42, 342, 343, 343, 343, 344, 344, 344, 345, 345,1292 34 5, 345, 346, 346, 346, 347, 347, 347, 347, 347,1293 34 8, 348, 348, 348, 349, 349, 349, 350, 350, 350,1294 3 51, 351, 351, 351, 351, 351, 352, 352, 352, 353,1295 3 53, 353, 353, 353, 354, 354, 354, 354, 355, 355,1296 35 6, 356, 356, 357, 357, 358, 358, 358, 358, 358,1297 35 8, 359, 359, 359, 359, 359, 359, 359, 359, 359,1298 35 9, 360, 360, 360, 360, 361, 361, 361, 362, 362,1299 3 63, 363, 363, 363, 363, 363, 364, 364, 364, 364,1300 36 4, 364, 365, 366, 366, 366, 367, 367, 368, 3681206 0, 125, 126, 127, 128, 128, 128, 129, 129, 129, 1207 130, 130, 131, 132, 132, 133, 133, 134, 134, 134, 1208 134, 135, 135, 135, 135, 135, 135, 135, 135, 135, 1209 135, 136, 136, 137, 137, 137, 137, 137, 138, 138, 1210 139, 139, 139, 139, 139, 140, 140, 140, 140, 140, 1211 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 1212 140, 140, 141, 141, 141, 141, 142, 142, 142, 143, 1213 143, 143, 143, 144, 144, 144, 145, 145, 145, 146, 1214 146, 146, 146, 146, 147, 147, 147, 148, 148, 149, 1215 149, 150, 150, 151, 151, 152, 152, 153, 153, 153, 1216 153, 154, 155, 155, 155, 155, 156, 156, 157, 157, 1217 157, 157, 158, 158, 159, 159, 159, 159, 159, 159, 1218 159, 159, 159, 159, 160, 160, 161, 161, 162, 162, 1219 162, 162, 162, 162, 162, 162, 163, 164, 164, 165, 1220 165, 166, 166, 166, 166, 167, 167, 168, 169, 169, 1221 169, 169, 169, 169, 170, 170, 170, 171, 171, 172, 1222 172, 173, 173, 174, 175, 175, 176, 176, 177, 177, 1223 178, 178, 178, 178, 179, 179, 180, 180, 181, 181, 1224 181, 182, 182, 183, 183, 183, 183, 183, 183, 183, 1225 183, 183, 184, 184, 184, 185, 185, 185, 186, 186, 1226 187, 188, 188, 188, 188, 188, 189, 189, 189, 189, 1227 189, 190, 190, 191, 191, 192, 192, 193, 193, 194, 1228 194, 194, 195, 195, 196, 196, 197, 197, 198, 198, 1229 199, 199, 200, 200, 201, 201, 202, 202, 203, 203, 1230 204, 204, 204, 204, 204, 205, 205, 205, 206, 206, 1231 206, 207, 207, 207, 207, 207, 208, 208, 208, 209, 1232 209, 210, 210, 210, 211, 211, 211, 211, 211, 212, 1233 212, 213, 213, 213, 213, 214, 214, 215, 215, 215, 1234 215, 216, 216, 216, 216, 217, 217, 218, 218, 219, 1235 219, 220, 220, 220, 220, 220, 221, 220, 222, 222, 1236 222, 223, 223, 224, 225, 225, 225, 225, 225, 225, 1237 225, 225, 226, 226, 226, 226, 226, 226, 226, 226, 1238 226, 226, 226, 226, 227, 227, 227, 227, 227, 228, 1239 228, 229, 229, 229, 229, 230, 230, 230, 230, 231, 1240 231, 231, 231, 232, 232, 232, 233, 233, 233, 233, 1241 234, 234, 234, 235, 235, 236, 236, 236, 236, 236, 1242 237, 237, 238, 238, 239, 239, 239, 239, 240, 240, 1243 240, 240, 241, 241, 242, 242, 242, 242, 242, 243, 1244 243, 244, 245, 246, 246, 246, 247, 247, 248, 248, 1245 249, 249, 250, 250, 250, 250, 250, 251, 251, 251, 1246 251, 252, 252, 253, 253, 254, 254, 255, 255, 255, 1247 255, 256, 256, 256, 256, 256, 257, 257, 257, 257, 1248 257, 258, 258, 259, 259, 260, 260, 261, 261, 261, 1249 262, 262, 262, 263, 263, 263, 264, 264, 264, 265, 1250 265, 265, 265, 266, 266, 267, 267, 268, 268, 268, 1251 268, 269, 269, 270, 270, 271, 271, 271, 271, 271, 1252 271, 272, 272, 272, 272, 273, 273, 273, 274, 275, 1253 275, 277, 276, 276, 278, 278, 278, 279, 279, 280, 1254 280, 280, 281, 281, 281, 281, 282, 282, 282, 283, 1255 283, 284, 284, 285, 286, 285, 287, 287, 288, 288, 1256 289, 289, 289, 290, 290, 291, 291, 292, 292, 293, 1257 293, 294, 294, 294, 295, 294, 294, 296, 296, 296, 1258 297, 297, 297, 297, 297, 297, 297, 297, 297, 298, 1259 298, 298, 299, 300, 300, 301, 301, 302, 302, 303, 1260 304, 304, 305, 305, 305, 306, 306, 306, 306, 307, 1261 307, 307, 307, 308, 308, 309, 309, 309, 310, 310, 1262 310, 310, 311, 311, 312, 312, 312, 313, 313, 313, 1263 314, 314, 314, 315, 315, 315, 316, 316, 316, 317, 1264 317, 317, 318, 318, 318, 319, 319, 319, 320, 320, 1265 320, 320, 321, 321, 322, 322, 322, 323, 323, 323, 1266 323, 324, 324, 324, 325, 325, 325, 325, 326, 326, 1267 326, 327, 327, 327, 327, 328, 328, 328, 329, 329, 1268 329, 329, 330, 330, 331, 331, 331, 332, 332, 333, 1269 333, 334, 334, 334, 335, 335, 335, 335, 335, 336, 1270 336, 336, 336, 337, 337, 337, 338, 338, 338, 339, 1271 339, 339, 339, 340, 340, 340, 341, 341, 341, 341, 1272 341, 342, 342, 342, 342, 343, 343, 343, 344, 344, 1273 344, 345, 345, 345, 345, 345, 345, 346, 346, 346, 1274 347, 347, 347, 347, 347, 348, 348, 348, 348, 349, 1275 349, 350, 350, 350, 351, 351, 352, 352, 352, 352, 1276 352, 352, 353, 353, 353, 353, 353, 353, 353, 353, 1277 353, 353, 354, 354, 354, 354, 355, 355, 355, 356, 1278 356, 357, 357, 357, 357, 357, 357, 358, 358, 358, 1279 358, 358, 358, 359, 360, 360, 360, 361, 361, 362, 1280 362 1301 1281 }; 1302 1282 … … 1307 1287 1, 1, 1, 1, 1, 1, 2, 1, 1, 3, 1308 1288 3, 1, 6, 4, 3, 7, 3, 7, 2, 2, 1309 7, 4, 1, 3, 0, 1, 3, 7, 9, 1,1310 3, 1, 3, 7, 3, 7, 1, 1, 1, 2,1311 2, 2, 2, 2, 2, 2, 4, 1, 4, 4,1312 2, 4, 2, 1, 1, 1, 1, 1, 4, 4,1313 1, 3, 3, 3, 1, 3, 3, 1, 3, 3,1314 1, 3, 3, 3, 3, 1, 3, 3, 1, 3,1315 1, 3, 1, 3, 1, 3, 1, 3, 1, 5,1316 4, 5, 1, 1, 3, 3, 2, 0, 1, 2,1317 5, 6, 7, 1, 3, 1, 1, 1, 1, 1,1318 1, 1, 1, 1, 1, 1, 3, 0, 1, 1,1319 1, 1, 1, 1, 1, 1, 1, 6, 4, 2,1320 7, 1, 3, 1, 2, 1, 2, 1, 2, 2,1321 5, 7, 5, 9, 5, 9, 1, 3, 1, 1,1322 3, 3, 2, 1, 2, 2, 0, 1, 2, 3,1323 0, 1, 2, 3, 3, 4, 0, 1, 1, 2,1324 5, 7, 6, 6, 4, 3, 4, 2, 3, 2,1325 3, 3, 3, 3, 5, 3, 3, 4, 1, 5,1326 6, 5, 6, 9, 10, 9, 10, 2, 1,2,1327 2, 2, 1, 6, 8, 10, 12, 14, 0, 1,1328 0, 1, 1, 3, 4, 7, 0, 1, 3, 1,1329 3, 1, 1, 1, 3, 1, 1, 1, 3, 0,1330 1, 3, 4, 1, 3, 1, 1, 3, 3, 3,1331 3, 3, 2, 3, 6, 3, 3, 4, 1, 2,1332 2, 3, 5, 8, 7, 7, 5, 9, 2, 2,1333 5, 3, 5, 4, 3, 4, 4, 7, 3, 3,1334 3, 3, 4, 6, 1, 1, 1, 1, 1, 1,1335 1, 1, 0, 1, 1, 2, 1, 1, 1, 1,1336 1, 1, 1, 0, 5, 1, 2, 3, 1, 2,1289 7, 1, 3, 0, 1, 3, 7, 9, 1, 3, 1290 1, 3, 7, 3, 7, 1, 1, 1, 2, 2, 1291 2, 2, 2, 2, 2, 4, 1, 4, 4, 2, 1292 4, 2, 1, 1, 1, 1, 1, 4, 4, 1, 1293 3, 3, 3, 1, 3, 3, 1, 3, 3, 1, 1294 3, 3, 3, 3, 1, 3, 3, 1, 3, 1, 1295 3, 1, 3, 1, 3, 1, 3, 1, 5, 4, 1296 5, 1, 1, 3, 3, 2, 0, 1, 2, 5, 1297 6, 7, 1, 3, 1, 1, 1, 1, 1, 1, 1298 1, 1, 1, 1, 1, 3, 0, 1, 1, 1, 1299 1, 1, 1, 1, 1, 1, 4, 2, 7, 1, 1300 3, 1, 2, 1, 2, 1, 2, 2, 5, 7, 1301 5, 9, 5, 9, 1, 3, 1, 1, 3, 3, 1302 2, 1, 2, 2, 0, 1, 2, 3, 0, 1, 1303 2, 3, 3, 4, 0, 1, 1, 2, 5, 7, 1304 6, 6, 4, 3, 4, 2, 3, 2, 3, 3, 1305 3, 2, 3, 3, 4, 1, 5, 6, 9, 10, 1306 2, 1, 2, 2, 2, 1, 6, 8, 10, 12, 1307 14, 0, 1, 0, 1, 1, 3, 4, 7, 0, 1308 1, 3, 1, 3, 1, 1, 1, 3, 1, 1, 1309 1, 3, 0, 1, 3, 4, 1, 3, 1, 1, 1310 3, 3, 3, 3, 3, 2, 3, 6, 3, 3, 1311 4, 1, 2, 2, 3, 5, 8, 7, 7, 5, 1312 9, 2, 2, 5, 3, 5, 4, 3, 4, 4, 1313 7, 3, 3, 3, 3, 4, 6, 1, 1, 1, 1314 1, 1, 1, 1, 1, 0, 1, 1, 2, 1, 1315 1, 1, 1, 1, 1, 1, 0, 5, 1, 2, 1316 3, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1337 1317 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1338 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1339 1, 1, 2, 2, 3, 3, 1, 3, 1, 2, 1340 2, 2, 4, 4, 4, 4, 1, 2, 2, 3, 1341 1, 2, 2, 1, 2, 2, 3, 1, 2, 2, 1342 1, 1, 4, 2, 5, 7, 2, 2, 2, 1, 1343 2, 2, 3, 2, 3, 1, 2, 3, 2, 2, 1344 4, 0, 1, 2, 2, 1, 0, 1, 2, 2, 1345 5, 6, 2, 2, 4, 0, 2, 0, 1, 1, 1346 1, 5, 5, 5, 1, 5, 5, 9, 1, 5, 1347 0, 1, 1, 5, 1, 1, 5, 5, 1, 3, 1348 3, 4, 1, 1, 1, 1, 2, 1, 3, 3, 1349 1, 2, 1, 3, 1, 1, 1, 1, 1, 1, 1350 1, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1351 0, 2, 2, 1, 4, 0, 1, 2, 3, 4, 1352 2, 2, 1, 2, 1, 2, 5, 5, 7, 6, 1353 1, 2, 2, 3, 1, 2, 2, 4, 2, 4, 1354 0, 4, 2, 1, 1, 1, 0, 2, 5, 5, 1355 13, 1, 1, 3, 3, 2, 3, 3, 2, 4, 1356 1, 6, 9, 0, 11, 1, 3, 3, 3, 1, 1357 1, 5, 2, 5, 0, 1, 1, 3, 0, 1, 1358 1, 1, 1, 0, 6, 2, 1, 2, 4, 2, 1359 3, 3, 3, 4, 5, 5, 5, 6, 1, 1, 1360 1, 3, 0, 5, 0, 1, 1, 2, 6, 1, 1361 3, 0, 1, 4, 1, 1, 1, 1, 2, 1, 1318 1, 1, 1, 1, 1, 2, 2, 3, 3, 1, 1319 3, 1, 2, 2, 2, 4, 4, 4, 4, 1, 1320 2, 2, 3, 1, 2, 2, 1, 2, 2, 3, 1321 1, 2, 2, 1, 1, 4, 2, 5, 7, 2, 1322 2, 2, 1, 2, 2, 3, 2, 3, 1, 2, 1323 3, 2, 2, 4, 0, 1, 2, 2, 1, 0, 1324 1, 2, 2, 5, 6, 2, 2, 4, 0, 2, 1325 0, 1, 1, 1, 5, 5, 5, 1, 5, 5, 1326 9, 1, 5, 0, 1, 1, 5, 1, 1, 5, 1327 5, 1, 3, 3, 4, 1, 1, 1, 1, 2, 1328 1, 3, 3, 1, 2, 1, 3, 1, 1, 1, 1329 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1330 1, 1, 2, 0, 2, 1, 4, 1, 2, 3, 1331 4, 2, 2, 1, 2, 1, 2, 5, 5, 7, 1332 6, 1, 2, 2, 3, 1, 2, 2, 4, 2, 1333 4, 0, 4, 2, 1, 1, 1, 0, 2, 5, 1334 5, 13, 1, 1, 3, 3, 2, 3, 3, 2, 1335 4, 1, 6, 9, 0, 11, 1, 3, 3, 3, 1336 1, 1, 5, 2, 5, 0, 1, 1, 3, 0, 1337 1, 1, 1, 1, 0, 6, 2, 1, 2, 4, 1338 2, 3, 3, 3, 4, 5, 5, 5, 6, 1, 1339 1, 1, 3, 0, 5, 0, 1, 1, 2, 6, 1340 1, 3, 0, 1, 4, 1, 1, 1, 1, 2, 1341 1, 2, 2, 1, 3, 2, 3, 3, 2, 4, 1342 4, 3, 8, 3, 2, 1, 2, 6, 8, 3, 1343 2, 3, 3, 4, 4, 3, 1, 1, 1, 4, 1344 6, 3, 2, 3, 3, 4, 4, 3, 2, 1, 1362 1345 2, 2, 1, 3, 2, 3, 3, 2, 4, 4, 1363 3, 8, 3, 2, 1, 2, 6, 8, 3, 2, 1364 3, 3, 4, 4, 3, 1, 1, 1, 4, 6, 1365 3, 2, 3, 3, 4, 4, 3, 2, 1, 2, 1366 2, 1, 3, 2, 3, 3, 2, 4, 4, 3, 1367 6, 8, 3, 2, 1, 2, 2, 2, 3, 3, 1368 2, 4, 4, 3, 6, 8, 3, 2, 1, 2, 1369 2, 1, 1, 2, 3, 3, 2, 4, 6, 8, 1370 1, 2, 2, 1, 2, 2, 3, 3, 1, 4, 1371 4, 3, 5, 8, 3, 2, 3, 1, 5, 5, 1372 6, 6, 1, 2, 2, 1, 2, 2, 3, 3, 1373 1, 4, 4, 3, 5, 8, 3, 1, 2, 1, 1374 2, 6, 5, 6, 7, 7, 1, 2, 2, 1, 1375 2, 2, 3, 3, 1, 4, 4, 3, 8, 3, 1376 1, 1, 2, 1, 1, 2, 3, 2, 3, 2, 1377 3, 3, 2, 4, 3, 2, 3, 2, 4, 3, 1378 2, 6, 6, 6, 7, 1, 2, 1, 1, 1, 1379 2, 3, 2, 3, 2, 3, 3, 4, 2, 3, 1380 4, 2, 5, 5, 6, 6, 0, 1, 0, 2 1346 3, 6, 8, 3, 2, 1, 2, 2, 2, 3, 1347 3, 2, 4, 4, 3, 6, 8, 3, 2, 1, 1348 2, 2, 1, 1, 2, 3, 3, 2, 4, 6, 1349 8, 1, 2, 2, 1, 2, 2, 3, 3, 1, 1350 4, 4, 3, 5, 8, 3, 2, 3, 1, 5, 1351 5, 6, 6, 1, 2, 2, 1, 2, 2, 3, 1352 3, 1, 4, 4, 3, 5, 8, 3, 1, 2, 1353 1, 2, 6, 5, 6, 7, 7, 1, 2, 2, 1354 1, 2, 2, 3, 3, 1, 4, 4, 3, 8, 1355 3, 1, 1, 2, 1, 1, 2, 3, 2, 3, 1356 2, 3, 3, 2, 4, 3, 2, 3, 2, 4, 1357 3, 2, 6, 6, 6, 7, 1, 2, 1, 1, 1358 1, 2, 3, 2, 3, 2, 3, 3, 4, 2, 1359 3, 4, 2, 5, 5, 6, 6, 0, 1, 0, 1360 2 1381 1361 }; 1382 1362 … … 1386 1366 static const yytype_uint16 yydefact[] = 1387 1367 { 1388 292, 292, 313, 311, 314, 312, 315, 316, 298, 300, 1389 299, 0, 301, 327, 319, 324, 322, 323, 321, 320, 1390 325, 326, 328, 329, 330, 544, 544, 544, 0, 0, 1391 0, 292, 218, 302, 317, 318, 7, 357, 0, 8, 1392 13, 14, 0, 2, 292, 562, 9, 522, 520, 245, 1393 3, 450, 3, 258, 0, 3, 3, 3, 246, 3, 1394 0, 0, 0, 293, 294, 296, 292, 305, 308, 310, 1395 338, 284, 331, 336, 285, 346, 286, 353, 350, 360, 1396 0, 0, 361, 287, 470, 474, 3, 3, 0, 2, 1397 516, 521, 526, 297, 0, 0, 544, 574, 544, 2, 1398 585, 586, 587, 292, 0, 728, 729, 0, 12, 292, 1399 0, 268, 269, 0, 293, 288, 289, 290, 291, 523, 1400 303, 389, 545, 546, 367, 368, 12, 441, 442, 11, 1401 437, 440, 0, 500, 495, 486, 441, 442, 0, 0, 1402 525, 219, 0, 292, 0, 0, 0, 0, 0, 0, 1403 0, 0, 292, 292, 2, 0, 730, 293, 579, 591, 1404 734, 727, 725, 732, 0, 0, 0, 252, 2, 0, 1405 529, 435, 436, 434, 0, 0, 0, 0, 544, 0, 1406 631, 632, 0, 0, 542, 538, 544, 559, 544, 544, 1407 539, 2, 540, 544, 598, 544, 544, 601, 0, 0, 1408 0, 292, 292, 311, 358, 2, 292, 259, 295, 306, 1409 339, 351, 475, 0, 2, 0, 450, 260, 293, 332, 1410 347, 354, 471, 0, 2, 0, 309, 333, 340, 341, 1411 0, 348, 352, 355, 359, 442, 292, 292, 363, 366, 1412 0, 392, 472, 476, 0, 0, 0, 1, 292, 2, 1413 527, 573, 575, 292, 2, 738, 293, 741, 542, 542, 1414 293, 0, 0, 0, 271, 544, 539, 2, 292, 0, 1415 0, 292, 547, 2, 498, 2, 551, 0, 0, 0, 1416 0, 0, 17, 57, 4, 5, 6, 15, 0, 0, 1417 0, 292, 2, 0, 292, 63, 64, 65, 66, 47, 1418 18, 48, 21, 46, 67, 0, 70, 74, 77, 80, 1419 85, 88, 90, 92, 94, 96, 98, 103, 492, 748, 1420 448, 491, 0, 446, 447, 0, 563, 578, 581, 584, 1421 590, 593, 596, 357, 0, 2, 736, 0, 292, 739, 1422 2, 292, 3, 422, 0, 430, 293, 292, 305, 331, 1423 285, 346, 353, 3, 3, 404, 408, 418, 423, 470, 1424 292, 424, 703, 704, 292, 425, 427, 292, 2, 580, 1425 592, 726, 2, 2, 247, 2, 455, 0, 453, 452, 1426 451, 139, 2, 2, 249, 2, 2, 248, 2, 279, 1427 2, 280, 0, 278, 0, 0, 0, 0, 0, 0, 1428 0, 0, 0, 564, 603, 0, 450, 2, 558, 567, 1429 657, 560, 561, 530, 292, 2, 597, 606, 599, 600, 1430 0, 274, 292, 292, 337, 293, 0, 293, 0, 292, 1431 731, 735, 733, 531, 292, 542, 253, 261, 307, 0, 1432 2, 532, 292, 496, 334, 335, 281, 349, 356, 0, 1433 292, 2, 381, 292, 369, 0, 0, 375, 725, 292, 1434 746, 395, 0, 473, 497, 250, 251, 517, 292, 432, 1435 0, 292, 235, 0, 2, 237, 0, 293, 0, 255, 1436 2, 256, 276, 0, 0, 2, 292, 542, 292, 483, 1437 485, 484, 0, 0, 748, 0, 292, 0, 292, 487, 1438 292, 557, 555, 556, 554, 0, 549, 552, 0, 0, 1439 292, 55, 67, 51, 292, 60, 292, 292, 49, 50, 1440 62, 2, 125, 0, 0, 444, 0, 443, 109, 292, 1441 53, 54, 16, 0, 28, 29, 34, 2, 0, 34, 1442 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 1443 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 1368 285, 285, 306, 304, 307, 305, 308, 309, 291, 293, 1369 292, 0, 294, 320, 312, 317, 315, 316, 314, 313, 1370 318, 319, 321, 322, 323, 535, 535, 535, 0, 0, 1371 0, 285, 211, 295, 310, 311, 7, 350, 0, 8, 1372 13, 14, 0, 2, 285, 553, 9, 513, 511, 238, 1373 3, 443, 3, 251, 0, 3, 3, 3, 239, 3, 1374 0, 0, 0, 286, 287, 289, 285, 298, 301, 303, 1375 331, 277, 324, 329, 278, 339, 279, 346, 343, 353, 1376 0, 0, 354, 280, 461, 465, 3, 3, 0, 2, 1377 507, 512, 517, 290, 0, 0, 535, 565, 535, 2, 1378 576, 577, 578, 285, 0, 719, 720, 0, 12, 285, 1379 0, 261, 262, 0, 286, 281, 282, 283, 284, 514, 1380 296, 382, 536, 537, 360, 361, 12, 434, 435, 11, 1381 430, 433, 0, 491, 486, 477, 434, 435, 0, 0, 1382 516, 212, 0, 285, 0, 0, 0, 0, 0, 0, 1383 0, 0, 285, 285, 2, 0, 721, 286, 570, 582, 1384 725, 718, 716, 723, 0, 0, 245, 2, 0, 520, 1385 428, 429, 427, 0, 0, 0, 0, 535, 0, 622, 1386 623, 0, 0, 533, 529, 535, 550, 535, 535, 530, 1387 2, 531, 535, 589, 535, 535, 592, 0, 0, 0, 1388 285, 285, 304, 351, 2, 285, 252, 288, 299, 332, 1389 344, 466, 0, 2, 0, 443, 253, 286, 325, 340, 1390 347, 462, 0, 2, 0, 302, 326, 333, 334, 0, 1391 341, 345, 348, 352, 435, 285, 285, 356, 359, 0, 1392 385, 463, 467, 0, 0, 0, 1, 285, 2, 518, 1393 564, 566, 285, 2, 729, 286, 732, 533, 533, 286, 1394 0, 0, 0, 264, 535, 530, 2, 285, 0, 0, 1395 285, 538, 2, 489, 2, 542, 0, 0, 0, 0, 1396 0, 17, 56, 4, 5, 6, 15, 0, 0, 0, 1397 285, 2, 0, 285, 62, 63, 64, 65, 46, 18, 1398 47, 21, 45, 66, 0, 69, 73, 76, 79, 84, 1399 87, 89, 91, 93, 95, 97, 102, 483, 739, 441, 1400 482, 0, 439, 440, 0, 554, 569, 572, 575, 581, 1401 584, 587, 350, 0, 2, 727, 0, 285, 730, 2, 1402 285, 3, 415, 0, 423, 286, 285, 298, 324, 278, 1403 339, 346, 3, 3, 397, 401, 411, 416, 461, 285, 1404 417, 694, 695, 285, 418, 420, 285, 2, 571, 583, 1405 717, 2, 2, 240, 2, 0, 0, 445, 444, 137, 1406 2, 2, 242, 2, 2, 241, 2, 272, 2, 273, 1407 0, 271, 0, 0, 0, 0, 0, 0, 0, 0, 1408 0, 555, 594, 0, 443, 2, 549, 558, 648, 551, 1409 552, 521, 285, 2, 588, 597, 590, 591, 0, 267, 1410 285, 285, 330, 286, 0, 286, 0, 285, 722, 726, 1411 724, 522, 285, 533, 246, 254, 300, 0, 2, 523, 1412 285, 487, 327, 328, 274, 342, 349, 0, 285, 2, 1413 374, 285, 362, 0, 0, 368, 716, 285, 737, 388, 1414 0, 464, 488, 243, 244, 508, 285, 425, 0, 285, 1415 228, 0, 2, 230, 0, 286, 0, 248, 2, 249, 1416 269, 0, 0, 2, 285, 533, 285, 474, 476, 475, 1417 0, 0, 739, 0, 285, 0, 285, 478, 285, 548, 1418 546, 547, 545, 0, 540, 543, 0, 0, 285, 54, 1419 66, 50, 285, 59, 285, 285, 48, 49, 61, 2, 1420 124, 0, 0, 437, 0, 436, 108, 285, 52, 53, 1421 16, 0, 28, 29, 33, 2, 0, 114, 115, 116, 1422 117, 118, 119, 120, 121, 122, 123, 0, 0, 51, 1444 1423 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1445 0, 0, 0, 106, 2, 643, 449, 640, 544, 544, 1446 648, 477, 292, 2, 582, 583, 0, 594, 595, 0, 1447 2, 737, 740, 109, 292, 2, 292, 0, 705, 293, 1448 709, 700, 701, 707, 0, 2, 2, 665, 544, 748, 1449 614, 544, 544, 748, 544, 628, 544, 544, 679, 431, 1450 662, 544, 544, 670, 677, 292, 426, 293, 0, 0, 1451 292, 715, 293, 720, 748, 712, 292, 717, 748, 292, 1452 292, 292, 0, 109, 0, 17, 5, 2, 0, 0, 1453 456, 746, 0, 0, 462, 239, 0, 292, 0, 0, 1454 0, 542, 566, 570, 572, 602, 605, 609, 612, 565, 1455 604, 0, 282, 655, 0, 292, 275, 0, 0, 0, 1456 0, 273, 2, 0, 257, 533, 292, 0, 0, 0, 1457 0, 292, 292, 0, 0, 689, 379, 382, 386, 544, 1458 386, 694, 385, 686, 544, 544, 362, 370, 378, 371, 1459 544, 373, 376, 292, 747, 0, 0, 393, 746, 293, 1460 3, 411, 3, 415, 414, 588, 0, 528, 292, 3, 1461 3, 292, 430, 293, 3, 424, 425, 2, 0, 0, 1462 0, 482, 304, 292, 478, 480, 3, 2, 2, 0, 1463 499, 3, 0, 551, 127, 0, 0, 220, 0, 0, 1464 2, 0, 0, 35, 0, 0, 109, 292, 19, 0, 1465 20, 0, 689, 445, 0, 107, 3, 2, 26, 2, 1466 0, 32, 0, 2, 24, 0, 104, 105, 71, 72, 1467 73, 75, 76, 78, 79, 83, 84, 81, 82, 86, 1468 87, 89, 91, 93, 95, 97, 0, 0, 749, 292, 1469 0, 0, 0, 644, 645, 641, 642, 494, 493, 292, 1470 0, 3, 292, 711, 292, 716, 293, 292, 292, 292, 1471 659, 702, 658, 2, 292, 0, 0, 0, 0, 0, 1472 0, 0, 0, 680, 0, 666, 617, 633, 667, 2, 1473 613, 620, 428, 615, 616, 429, 2, 627, 636, 629, 1474 630, 663, 664, 678, 706, 710, 708, 748, 266, 2, 1475 742, 2, 419, 714, 719, 420, 0, 398, 3, 3, 1476 3, 3, 450, 3, 0, 2, 465, 461, 747, 0, 1477 457, 464, 2, 460, 463, 0, 292, 240, 262, 3, 1478 270, 272, 0, 450, 2, 568, 569, 2, 607, 608, 1479 0, 656, 534, 3, 343, 342, 345, 344, 292, 535, 1480 0, 536, 292, 372, 374, 2, 0, 0, 0, 0, 1481 102, 388, 690, 691, 383, 387, 384, 687, 688, 377, 1482 381, 364, 395, 390, 396, 0, 0, 0, 433, 238, 1483 0, 0, 3, 2, 665, 426, 0, 524, 0, 748, 1484 486, 0, 292, 292, 292, 0, 548, 550, 128, 0, 1485 0, 213, 0, 0, 0, 221, 222, 56, 61, 292, 1486 0, 59, 58, 0, 126, 690, 455, 68, 69, 108, 1487 113, 3, 107, 0, 0, 0, 23, 34, 3, 0, 1488 31, 100, 0, 3, 647, 651, 654, 646, 3, 589, 1489 3, 713, 718, 2, 292, 3, 3, 293, 0, 3, 1490 619, 623, 626, 635, 669, 673, 676, 292, 3, 618, 1491 634, 668, 292, 292, 421, 292, 292, 743, 0, 0, 1492 0, 0, 254, 0, 102, 0, 3, 3, 0, 458, 1493 0, 454, 0, 0, 243, 292, 0, 0, 127, 0, 1494 0, 0, 0, 0, 127, 0, 0, 107, 107, 2, 1495 0, 0, 0, 3, 129, 130, 2, 141, 131, 132, 1496 133, 134, 135, 136, 143, 145, 0, 0, 0, 283, 1497 292, 292, 544, 0, 537, 292, 109, 693, 697, 699, 1498 692, 380, 394, 391, 576, 2, 661, 660, 0, 666, 1499 2, 479, 481, 501, 3, 509, 510, 0, 2, 505, 1500 3, 3, 0, 0, 553, 220, 0, 0, 0, 220, 1501 0, 3, 36, 746, 107, 0, 3, 658, 41, 3, 1502 39, 3, 33, 0, 3, 99, 101, 0, 2, 649, 1503 650, 0, 0, 292, 0, 0, 0, 3, 635, 0, 1504 2, 621, 622, 2, 637, 2, 671, 672, 0, 0, 1505 3, 0, 3, 3, 3, 3, 406, 405, 409, 2, 1506 2, 745, 744, 110, 0, 0, 0, 0, 3, 459, 1507 3, 0, 241, 144, 3, 293, 292, 0, 0, 0, 1508 0, 2, 189, 0, 187, 0, 0, 0, 0, 0, 1509 0, 0, 0, 109, 0, 544, 149, 146, 292, 0, 1510 0, 265, 277, 3, 3, 543, 610, 365, 2, 695, 1511 696, 292, 264, 292, 0, 512, 489, 292, 0, 0, 1512 488, 503, 0, 0, 0, 214, 0, 223, 107, 0, 1513 0, 114, 111, 0, 0, 0, 0, 0, 0, 22, 1514 0, 652, 292, 577, 263, 721, 722, 723, 0, 674, 1515 292, 292, 292, 3, 3, 0, 682, 0, 0, 0, 1516 0, 292, 292, 3, 541, 466, 467, 0, 0, 244, 1517 293, 0, 0, 0, 0, 292, 190, 188, 0, 185, 1518 191, 0, 0, 0, 0, 195, 198, 196, 192, 0, 1519 193, 34, 127, 142, 140, 242, 0, 0, 292, 413, 1520 417, 416, 0, 506, 2, 507, 2, 508, 502, 292, 1521 226, 0, 224, 0, 226, 3, 658, 30, 112, 2, 1522 44, 2, 42, 40, 27, 110, 25, 3, 724, 3, 1523 3, 3, 0, 0, 681, 683, 624, 638, 267, 2, 1524 403, 3, 402, 0, 469, 466, 127, 0, 0, 127, 1525 3, 0, 127, 186, 0, 2, 2, 207, 197, 0, 1526 0, 0, 0, 138, 571, 611, 3, 2, 0, 0, 1527 2, 227, 0, 0, 215, 0, 0, 0, 0, 0, 1528 0, 0, 0, 0, 684, 685, 292, 0, 468, 150, 1529 0, 0, 2, 163, 127, 152, 0, 180, 0, 127, 1530 0, 2, 154, 0, 2, 0, 2, 2, 2, 194, 1531 31, 0, 292, 511, 513, 504, 0, 0, 0, 0, 1532 112, 37, 3, 3, 653, 625, 639, 675, 407, 127, 1533 156, 159, 0, 158, 162, 3, 165, 164, 0, 127, 1534 182, 127, 3, 0, 292, 0, 292, 0, 2, 0, 1535 2, 137, 698, 2, 228, 229, 0, 225, 216, 0, 1536 0, 0, 151, 0, 0, 161, 231, 166, 2, 233, 1537 181, 0, 184, 170, 199, 3, 208, 212, 201, 3, 1538 0, 292, 0, 292, 0, 0, 0, 38, 45, 43, 1539 157, 160, 127, 0, 167, 292, 127, 127, 0, 171, 1540 0, 0, 689, 209, 210, 211, 0, 200, 3, 202, 1541 3, 292, 217, 230, 147, 168, 153, 127, 234, 183, 1542 178, 176, 172, 155, 127, 0, 690, 0, 0, 0, 1543 0, 148, 169, 179, 173, 177, 176, 174, 3, 3, 1544 0, 0, 490, 175, 203, 205, 3, 3, 204, 206 1424 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1425 105, 2, 634, 442, 631, 535, 535, 639, 468, 285, 1426 2, 573, 574, 0, 585, 586, 0, 2, 728, 731, 1427 108, 285, 2, 285, 0, 696, 286, 700, 691, 692, 1428 698, 0, 2, 2, 656, 535, 739, 605, 535, 535, 1429 739, 535, 619, 535, 535, 670, 424, 653, 535, 535, 1430 661, 668, 285, 419, 286, 0, 0, 285, 706, 286, 1431 711, 739, 703, 285, 708, 739, 285, 285, 285, 0, 1432 108, 0, 17, 5, 2, 0, 0, 447, 737, 0, 1433 0, 453, 232, 0, 285, 0, 0, 0, 533, 557, 1434 561, 563, 593, 596, 600, 603, 556, 595, 0, 275, 1435 646, 0, 285, 268, 0, 0, 0, 0, 266, 2, 1436 0, 250, 524, 285, 0, 0, 0, 0, 285, 285, 1437 0, 0, 680, 372, 375, 379, 535, 379, 685, 378, 1438 677, 535, 535, 355, 363, 371, 364, 535, 366, 369, 1439 285, 738, 0, 0, 386, 737, 286, 3, 404, 3, 1440 408, 407, 579, 0, 519, 285, 3, 3, 285, 423, 1441 286, 3, 417, 418, 2, 0, 0, 0, 473, 297, 1442 285, 469, 471, 3, 2, 2, 0, 490, 3, 0, 1443 542, 126, 0, 0, 213, 0, 0, 2, 0, 0, 1444 34, 0, 0, 108, 285, 19, 0, 20, 0, 680, 1445 438, 0, 106, 3, 2, 26, 2, 0, 31, 0, 1446 2, 24, 103, 104, 70, 71, 72, 74, 75, 77, 1447 78, 82, 83, 80, 81, 85, 86, 88, 90, 92, 1448 94, 96, 0, 0, 740, 285, 0, 0, 0, 635, 1449 636, 632, 633, 485, 484, 285, 0, 3, 285, 702, 1450 285, 707, 286, 285, 285, 285, 650, 693, 649, 2, 1451 285, 0, 0, 0, 0, 0, 0, 0, 0, 671, 1452 0, 657, 608, 624, 658, 2, 604, 611, 421, 606, 1453 607, 422, 2, 618, 627, 620, 621, 654, 655, 669, 1454 697, 701, 699, 739, 259, 2, 733, 2, 412, 705, 1455 710, 413, 0, 391, 3, 3, 3, 3, 443, 3, 1456 0, 2, 456, 452, 738, 0, 448, 455, 2, 451, 1457 454, 0, 285, 233, 255, 3, 263, 265, 0, 443, 1458 2, 559, 560, 2, 598, 599, 0, 647, 525, 3, 1459 336, 335, 338, 337, 285, 526, 0, 527, 285, 365, 1460 367, 2, 0, 0, 0, 0, 101, 381, 681, 682, 1461 376, 380, 377, 678, 679, 370, 374, 357, 388, 383, 1462 389, 0, 0, 0, 426, 231, 0, 0, 3, 2, 1463 656, 419, 0, 515, 0, 739, 477, 0, 285, 285, 1464 285, 0, 539, 541, 127, 0, 0, 206, 0, 0, 1465 0, 214, 215, 55, 60, 285, 0, 58, 57, 0, 1466 125, 681, 0, 67, 68, 107, 112, 3, 106, 0, 1467 0, 0, 23, 33, 3, 0, 99, 0, 3, 638, 1468 642, 645, 637, 3, 580, 3, 704, 709, 2, 285, 1469 3, 3, 286, 0, 3, 610, 614, 617, 626, 660, 1470 664, 667, 285, 3, 609, 625, 659, 285, 285, 414, 1471 285, 285, 734, 0, 0, 0, 0, 247, 0, 101, 1472 0, 3, 3, 0, 449, 0, 446, 0, 0, 236, 1473 285, 0, 0, 126, 0, 0, 0, 0, 0, 126, 1474 0, 0, 0, 2, 0, 0, 3, 128, 129, 2, 1475 139, 130, 131, 132, 133, 134, 135, 141, 143, 0, 1476 0, 0, 276, 285, 285, 535, 0, 528, 285, 108, 1477 684, 688, 690, 683, 373, 387, 384, 567, 2, 652, 1478 651, 0, 657, 2, 470, 472, 492, 3, 500, 501, 1479 0, 2, 496, 3, 3, 0, 0, 544, 213, 0, 1480 0, 0, 213, 0, 3, 35, 737, 106, 0, 3, 1481 649, 40, 3, 38, 3, 32, 0, 3, 98, 100, 1482 0, 2, 640, 641, 0, 0, 285, 0, 0, 0, 1483 3, 626, 0, 2, 612, 613, 2, 628, 2, 662, 1484 663, 0, 0, 3, 0, 3, 3, 3, 3, 399, 1485 398, 402, 2, 2, 736, 735, 109, 0, 0, 0, 1486 0, 3, 450, 3, 0, 234, 142, 3, 286, 285, 1487 0, 0, 0, 0, 2, 187, 0, 185, 0, 0, 1488 0, 0, 0, 0, 191, 0, 108, 535, 147, 144, 1489 285, 0, 0, 258, 270, 3, 3, 534, 601, 358, 1490 2, 686, 687, 285, 257, 285, 0, 503, 480, 285, 1491 0, 0, 479, 494, 0, 0, 0, 207, 0, 216, 1492 106, 0, 0, 113, 110, 0, 0, 0, 0, 0, 1493 0, 22, 0, 643, 285, 568, 256, 712, 713, 714, 1494 0, 665, 285, 285, 285, 3, 3, 0, 673, 0, 1495 0, 0, 0, 285, 285, 3, 532, 457, 458, 0, 1496 0, 237, 286, 0, 0, 0, 0, 285, 188, 186, 1497 0, 183, 189, 0, 0, 0, 192, 195, 193, 190, 1498 126, 140, 138, 235, 0, 0, 285, 406, 410, 409, 1499 0, 497, 2, 498, 2, 499, 493, 285, 219, 0, 1500 217, 0, 219, 3, 649, 30, 111, 2, 43, 2, 1501 41, 39, 27, 109, 25, 3, 715, 3, 3, 3, 1502 0, 0, 672, 674, 615, 629, 260, 2, 396, 3, 1503 395, 0, 460, 457, 126, 0, 0, 126, 3, 0, 1504 126, 184, 0, 2, 200, 194, 0, 136, 562, 602, 1505 3, 2, 0, 0, 2, 220, 0, 0, 208, 0, 1506 0, 0, 0, 0, 0, 0, 0, 0, 675, 676, 1507 285, 0, 459, 148, 0, 0, 2, 161, 126, 150, 1508 0, 178, 0, 126, 0, 2, 152, 0, 2, 2, 1509 0, 285, 502, 504, 495, 0, 0, 0, 0, 111, 1510 36, 3, 3, 644, 616, 630, 666, 400, 126, 154, 1511 157, 0, 156, 160, 3, 163, 162, 0, 126, 180, 1512 126, 3, 0, 285, 0, 2, 689, 2, 221, 222, 1513 0, 218, 209, 0, 0, 0, 149, 0, 0, 159, 1514 224, 164, 2, 226, 179, 0, 182, 168, 196, 3, 1515 201, 205, 0, 285, 0, 0, 0, 37, 44, 42, 1516 155, 158, 126, 0, 165, 285, 126, 126, 0, 169, 1517 0, 0, 680, 202, 203, 204, 197, 3, 285, 210, 1518 223, 145, 166, 151, 126, 227, 181, 176, 174, 170, 1519 153, 126, 0, 681, 0, 0, 146, 167, 177, 171, 1520 175, 174, 172, 3, 0, 481, 173, 198, 3, 199 1545 1521 }; 1546 1522 … … 1548 1524 static const yytype_int16 yydefgoto[] = 1549 1525 { 1550 -1, 83 4, 472, 299, 45, 130, 131, 300, 301, 302,1551 30 3, 780, 781, 1139, 1140, 304, 305, 306, 307, 308,1552 30 9, 310, 311, 312, 313, 314, 315, 316, 317, 1045,1553 52 2, 990, 319, 991, 551, 968, 1072, 1534, 1074, 1075,1554 10 76, 1077, 1535, 1078, 1079, 1451, 1452, 1413, 1414, 1415,1555 1 513, 1514, 1518, 1519, 1554, 1555, 1080, 1371, 1081, 1082,1556 1 305, 1306, 1307, 1495, 1083, 142, 974, 975, 976, 1392,1557 14 76, 1487, 1488, 473, 474, 896, 897, 1053, 48, 49,1558 50, 51, 52, 34 3, 155, 55, 56, 57, 58, 59,1559 34 5, 61, 62, 260, 64, 65, 271, 347, 348, 68,1560 69, 70, 71, 115, 73, 20 1, 350, 116, 76, 117,1561 78, 79, 80, 45 3, 454, 455, 456, 696, 934, 697,1562 81, 82, 4 60, 717, 876, 877, 353, 354, 720, 721,1563 7 22, 355, 356, 357, 358, 470, 337, 132, 133, 526,1564 32 1, 167, 650, 651, 652, 653, 654, 83, 118, 85,1565 49 3, 494, 960, 495, 274, 499, 322, 86, 134, 135,1566 87, 13 29, 1118, 1119, 1120, 1121, 88, 89, 738, 90,1567 2 70, 91, 92, 184, 1047, 684, 408, 122, 93, 505,1568 50 6, 507, 185, 265, 187, 188, 189, 266, 96, 97,1569 98, 99, 100, 101, 102, 19 2, 193, 194, 195, 196,1570 84 6, 610, 611, 612, 613, 197, 615, 616, 617, 576,1571 57 7, 578, 579, 701, 103, 619, 620, 621, 622, 623,1572 62 4, 933, 703, 704, 705, 600, 361, 362, 363, 364,1573 32 3, 161, 105, 106, 107, 366, 715, 5731526 -1, 830, 470, 298, 45, 130, 131, 299, 300, 301, 1527 302, 777, 759, 1132, 1133, 303, 304, 305, 306, 307, 1528 308, 309, 310, 311, 312, 313, 314, 315, 316, 1040, 1529 520, 986, 318, 987, 548, 964, 1065, 1501, 1067, 1068, 1530 1069, 1070, 1502, 1071, 1072, 1430, 1431, 1397, 1398, 1399, 1531 1483, 1484, 1488, 1489, 1519, 1520, 1073, 1359, 1074, 1075, 1532 1296, 1297, 1298, 1469, 1076, 142, 970, 971, 972, 1376, 1533 1450, 1461, 1462, 471, 472, 892, 893, 1048, 48, 49, 1534 50, 51, 52, 342, 155, 55, 56, 57, 58, 59, 1535 344, 61, 62, 259, 64, 65, 270, 346, 347, 68, 1536 69, 70, 71, 115, 73, 200, 349, 116, 76, 117, 1537 78, 79, 80, 451, 452, 453, 454, 693, 930, 694, 1538 81, 82, 458, 714, 872, 873, 352, 353, 717, 718, 1539 719, 354, 355, 356, 357, 468, 336, 132, 133, 524, 1540 320, 166, 647, 648, 649, 650, 651, 83, 118, 85, 1541 491, 492, 956, 493, 273, 497, 321, 86, 134, 135, 1542 87, 1317, 1111, 1112, 1113, 1114, 88, 89, 735, 90, 1543 269, 91, 92, 183, 1042, 681, 406, 122, 93, 503, 1544 504, 505, 184, 264, 186, 187, 188, 265, 96, 97, 1545 98, 99, 100, 101, 102, 191, 192, 193, 194, 195, 1546 842, 607, 608, 609, 610, 196, 612, 613, 614, 573, 1547 574, 575, 576, 698, 103, 616, 617, 618, 619, 620, 1548 621, 929, 700, 701, 702, 597, 360, 361, 362, 363, 1549 322, 161, 105, 106, 107, 365, 712, 570 1574 1550 }; 1575 1551 1576 1552 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing 1577 1553 STATE-NUM. */ 1578 #define YYPACT_NINF -13 621554 #define YYPACT_NINF -1318 1579 1555 static const yytype_int16 yypact[] = 1580 1556 { 1581 5182, 8315, -1362, 65, -1362, -1362, -1362, -1362, -1362, -1362, 1582 -1362, 58, -1362, -1362, -1362, -1362, -1362, -1362, -1362, -1362, 1583 -1362, -1362, -1362, -1362, -1362, 82, 82, 82, 907, 818, 1584 118, 6817, 261, -1362, -1362, -1362, -1362, -1362, 194, -1362, 1585 -1362, -1362, 762, 245, 3620, -1362, -1362, -1362, -1362, -1362, 1586 -1362, 110, 286, -1362, 690, -1362, -1362, -1362, -1362, 307, 1587 1768, 457, 101, 6932, -1362, -1362, 4184, 407, -1362, -1362, 1588 -1362, 1616, 474, 5211, 816, 1213, 1616, 2188, -1362, -1362, 1589 386, 368, -1362, 1616, 2312, -1362, 370, -1362, 505, 519, 1590 -1362, -1362, -1362, -1362, 390, 286, 82, -1362, 82, -1362, 1591 -1362, -1362, -1362, 8539, 690, -1362, -1362, 690, -1362, 9099, 1592 393, -1362, -1362, 2123, 9180, -1362, 951, 951, 951, -1362, 1593 -1362, -1362, 82, -1362, -1362, -1362, 455, 470, 487, -1362, 1594 -1362, -1362, 492, -1362, -1362, -1362, -1362, -1362, 517, 553, 1595 -1362, -1362, 76, 8285, 1659, 753, 483, 539, 586, 596, 1596 599, 606, 7594, 6229, 641, 646, -1362, 8650, -1362, -1362, 1597 -1362, -1362, 673, -1362, 126, 3695, 3695, -1362, 682, 235, 1598 -1362, -1362, -1362, -1362, 693, 419, 442, 449, 82, 685, 1599 -1362, -1362, 1768, 2932, 768, -1362, 90, -1362, 82, 82, 1600 286, -1362, -1362, 121, -1362, 82, 82, -1362, 3090, 696, 1601 779, 951, 6612, -1362, -1362, 728, 3620, -1362, -1362, 1616, 1602 -1362, -1362, -1362, 286, -1362, 690, 110, -1362, 7263, -1362, 1603 951, 951, 951, 286, -1362, 907, -1362, 5761, -1362, -1362, 1604 745, 951, -1362, 951, -1362, 194, 8285, 8427, 777, -1362, 1605 818, 866, 951, -1362, 907, 775, 789, -1362, 6817, 874, 1606 -1362, -1362, -1362, 5519, -1362, -1362, 6022, -1362, 768, 173, 1607 9180, 10174, 2123, 3090, -1362, 265, -1362, -1362, 9099, 690, 1608 879, 6376, -1362, -1362, 507, -1362, 10523, 887, 920, 3349, 1609 10328, 10347, -1362, 895, -1362, -1362, -1362, -1362, 10405, 10405, 1610 874, 7949, 897, 10328, 8397, -1362, -1362, -1362, -1362, -1362, 1611 -1362, 930, -1362, 797, 2723, 10328, -1362, 688, 806, 843, 1612 301, 862, 899, 893, 906, 932, 20, -1362, -1362, 934, 1613 593, -1362, 402, -1362, -1362, 1659, -1362, -1362, 610, 919, 1614 -1362, 621, 919, 946, 194, -1362, -1362, 962, 8539, -1362, 1615 961, 8061, -1362, -1362, 1747, 1347, 7675, 6612, 1616, -1362, 1616 1616, 951, 951, -1362, -1362, -1362, -1362, -1362, -1362, 951, 1617 9209, 690, -1362, -1362, 9247, 1940, -1362, 9032, -1362, -1362, 1618 -1362, -1362, -1362, -1362, -1362, 966, 4295, 10328, -1362, -1362, 1619 -1362, -1362, -1362, -1362, -1362, -1362, -1362, -1362, -1362, -1362, 1620 -1362, -1362, 2123, -1362, 446, 964, 972, 978, 719, 979, 1621 987, 990, 2932, -1362, -1362, 994, 110, 992, -1362, -1362, 1622 995, -1362, -1362, -1362, 5519, -1362, -1362, -1362, -1362, -1362, 1623 3090, -1362, 8285, 8285, -1362, 951, 2123, 6731, 690, 7745, 1624 -1362, -1362, -1362, -1362, 5519, 173, -1362, -1362, 1616, 286, 1625 -1362, -1362, 5519, -1362, 6258, -1362, -1362, 951, 951, 484, 1626 9317, 998, 1130, 4716, -1362, 459, 467, 818, -1362, 8427, 1627 991, 980, 818, 951, -1362, -1362, -1362, -1362, 9608, -1362, 1628 567, 6494, -1362, 286, 999, -1362, 2123, 10603, 10193, -1362, 1629 -1362, -1362, -1362, 793, 3090, -1362, 7815, 768, 6702, -1362, 1630 -1362, -1362, 842, 625, 934, 818, 6376, 494, 9099, -1362, 1631 6376, -1362, -1362, -1362, -1362, 636, -1362, 1005, 920, 328, 1632 7949, -1362, -1362, -1362, 7949, -1362, 8173, 7949, -1362, -1362, 1633 -1362, 1004, -1362, 644, 1013, 617, 1014, -1362, 8787, 5845, 1634 -1362, -1362, -1362, 93, -1362, -1362, 10251, -1362, 164, 10251, 1635 -1362, -1362, -1362, -1362, -1362, -1362, -1362, -1362, -1362, -1362, 1636 10174, 10174, -1362, 10328, 10328, 10328, 10328, 10328, 10328, 10328, 1637 10328, 10328, 10328, 10328, 10328, 10328, 10328, 10328, 10328, 10328, 1638 10328, 4995, 10174, -1362, 593, 1220, -1362, -1362, 82, 82, 1639 -1362, -1362, 8285, -1362, -1362, 995, 874, -1362, 995, 10270, 1640 -1362, -1362, -1362, 5874, 5845, 1015, 8509, 1017, -1362, 9355, 1641 -1362, -1362, 673, -1362, 1019, 506, 1020, 2624, 288, 934, 1642 -1362, 82, 82, 934, 294, -1362, 82, 82, 995, -1362, 1643 -1362, 82, 82, -1362, 919, 9384, 690, 10744, 254, 525, 1644 9384, -1362, 6140, -1362, 934, -1362, 9209, -1362, 255, 7377, 1645 7377, 7377, 690, -1362, 10097, 1009, 565, 966, 409, 1022, 1646 -1362, 1018, 3695, 612, -1362, 1103, 690, 7377, 874, 2123, 1647 874, 768, 628, 919, -1362, -1362, 744, 919, -1362, -1362, 1648 -1362, 920, -1362, 919, 286, 9608, -1362, 659, 1026, 668, 1649 1031, -1362, 1032, 286, -1362, -1362, 5519, 286, 1029, 497, 1650 511, 9465, 6347, 1465, 10328, 2769, -1362, -1362, 1039, 94, 1651 1039, -1362, -1362, -1362, 82, 82, -1362, -1362, 818, -1362, 1652 82, -1362, -1362, 8924, 818, 1033, 10328, -1362, 991, 10744, 1653 -1362, -1362, 1048, -1362, -1362, -1362, 874, -1362, 10674, 10328, 1654 -1362, 7377, 639, 7675, -1362, -1362, 673, 1034, 1044, 842, 1655 1987, -1362, -1362, 6376, -1362, -1362, 1045, -1362, -1362, 1051, 1656 -1362, 1045, 1054, 10523, 10174, 142, 1040, 53, 1055, 1056, 1657 897, 1057, 1061, -1362, 1063, 1066, 8203, 5993, -1362, 10174, 1658 -1362, 617, 1650, -1362, 10116, 10174, 1062, -1362, -1362, 966, 1659 676, -1362, 10174, -1362, -1362, 901, -1362, -1362, -1362, -1362, 1660 -1362, 688, 688, 806, 806, 843, 843, 843, 843, 301, 1661 301, 862, 899, 893, 906, 932, 10328, 912, -1362, 9608, 1662 1069, 1070, 1075, 1220, -1362, -1362, -1362, -1362, -1362, 9608, 1663 680, 10328, 7377, -1362, 9209, -1362, 6465, 8621, 9070, 6229, 1664 -1362, -1362, -1362, 506, 9608, 832, 1076, 1078, 1079, 1080, 1665 1082, 1083, 1088, -1362, 3884, 2624, -1362, -1362, -1362, -1362, 1666 -1362, -1362, -1362, -1362, -1362, -1362, -1362, -1362, -1362, -1362, 1667 -1362, -1362, -1362, 995, -1362, -1362, -1362, 934, -1362, -1362, 1668 -1362, -1362, -1362, -1362, -1362, -1362, 1089, -1362, 1099, 1101, 1669 -1362, -1362, 110, 1062, 10097, -1362, -1362, -1362, 4295, 1100, 1670 -1362, -1362, -1362, -1362, -1362, 818, 5597, 1173, -1362, -1362, 1671 -1362, -1362, 1085, 110, -1362, -1362, 995, -1362, -1362, 995, 1672 28, 995, -1362, -1362, -1362, -1362, -1362, -1362, 8758, -1362, 1673 286, -1362, 8427, -1362, -1362, 1108, 913, 1111, 1112, 1120, 1674 -1362, -1362, 2769, -1362, -1362, -1362, -1362, -1362, -1362, -1362, 1675 1130, -1362, 980, -1362, -1362, 1116, 1128, 1124, -1362, -1362, 1676 1132, 1133, -1362, 639, 1695, -1362, 589, -1362, 1987, 934, 1677 -1362, 1138, 6376, 9494, 8285, 1140, -1362, -1362, 1137, 1144, 1678 1147, -1362, 10328, 146, 128, 1150, -1362, 1153, 1153, 5845, 1679 10174, -1362, -1362, 1153, -1362, 1650, 4295, -1362, -1362, -1362, 1680 -1362, 1152, 10174, 1158, 874, 10097, -1362, 10251, -1362, 874, 1681 -1362, -1362, 10174, -1362, 826, 919, -1362, -1362, -1362, -1362, 1682 -1362, -1362, -1362, 966, 8061, -1362, -1362, 6583, 1161, -1362, 1683 841, 919, -1362, 865, 883, 919, -1362, 951, 4042, -1362, 1684 -1362, -1362, 9608, 9608, -1362, 7745, 7745, -1362, 1156, 1157, 1685 1168, 1169, -1362, 1174, 677, 212, 1062, -1362, 874, -1362, 1686 3695, -1362, 10174, 515, -1362, 5727, 1176, 1179, 9970, 1180, 1687 1184, 11, 62, 64, 10174, 1185, 286, 10174, 10174, 1183, 1688 535, 1182, 1164, -1362, -1362, -1362, 1187, -1362, -1362, -1362, 1689 -1362, -1362, -1362, -1362, -1362, -1362, 818, 1190, 10174, -1362, 1690 9608, 9608, 82, 1194, -1362, 8962, 8895, 888, 919, -1362, 1691 -1362, -1362, -1362, -1362, -1362, -1362, -1362, -1362, 1195, 1695, 1692 -1362, -1362, 1186, -1362, 1045, -1362, -1362, 2123, 1196, -1362, 1693 -1362, -1362, 684, 1203, -1362, 53, 1197, 10328, 1188, 53, 1694 53, 1205, -1362, 1018, 10174, 1207, 1152, 337, 130, 1206, 1695 -1362, 1205, -1362, 1214, 1206, -1362, -1362, 1217, -1362, -1362, 1696 995, 1218, 1222, 6111, 1221, 1223, 1225, -1362, -1362, 1224, 1697 -1362, -1362, 995, -1362, -1362, -1362, -1362, 995, 10174, 10174, 1698 10328, 1226, -1362, -1362, -1362, -1362, -1362, -1362, -1362, -1362, 1699 -1362, -1362, -1362, -1362, 10328, 10328, 1232, 1234, 1206, -1362, 1700 -1362, 818, -1362, -1362, -1362, 7193, 9494, 10174, 10174, 1283, 1701 10174, -1362, -1362, 1215, -1362, 1219, 10174, 1233, 1242, 10174, 1702 900, 1243, 37, 8091, 1006, 82, -1362, -1362, 5597, 1239, 1703 523, -1362, -1362, -1362, -1362, -1362, -1362, -1362, -1362, -1362, 1704 995, 10093, -1362, 7815, 1256, -1362, -1362, 9494, 540, 555, 1705 -1362, 1263, 1262, 920, 1270, -1362, 354, -1362, 10174, 1271, 1706 1269, -1362, -1362, 1273, 206, 262, 874, 1274, 1275, -1362, 1707 1276, -1362, 9608, -1362, -1362, -1362, -1362, -1362, 1277, -1362, 1708 9608, 9608, 9608, -1362, -1362, 1279, -1362, 1282, 1286, 1287, 1709 702, 7447, 7561, -1362, -1362, 388, -1362, 1291, 1292, -1362, 1710 7885, 700, 705, 1296, 731, 5363, -1362, -1362, 575, -1362, 1711 -1362, 741, 1297, 1299, 286, 1349, 974, -1362, -1362, 10174, 1712 -1362, 10251, 9970, -1362, -1362, -1362, 1303, 1304, 9608, -1362, 1713 -1362, -1362, 1312, -1362, -1362, -1362, -1362, -1362, -1362, 9494, 1714 920, 263, -1362, 1293, 920, 1152, 273, -1362, -1362, -1362, 1715 -1362, -1362, -1362, -1362, -1362, 1301, -1362, -1362, -1362, -1362, 1716 -1362, -1362, 1316, 1317, -1362, -1362, -1362, -1362, -1362, -1362, 1717 -1362, 1322, -1362, 1329, -1362, -1362, 9970, 107, 10174, 9970, 1718 -1362, 1332, 10174, -1362, 151, 1351, 1355, -1362, -1362, 1334, 1719 1335, 1320, 924, -1362, -1362, -1362, -1362, -1362, 690, 2123, 1720 1338, 930, 937, 10328, -1362, 742, 1343, 10174, 874, 874, 1721 1352, 1353, 1354, 1357, -1362, -1362, 7745, 1341, -1362, 1417, 1722 10328, 1344, -1362, -1362, 9884, -1362, 785, -1362, 1333, 9970, 1723 1340, -1362, -1362, 1363, -1362, 1364, -1362, 1379, 1382, -1362, 1724 1350, 1371, 9494, -1362, -1362, -1362, 920, 874, 1374, 1365, 1725 1370, -1362, 1206, 1206, -1362, -1362, -1362, -1362, -1362, 9970, 1726 258, -1362, 941, -1362, -1362, 7047, -1362, -1362, 1367, 10174, 1727 -1362, 10174, 7047, 286, 9317, 286, 9317, 1392, -1362, 1396, 1728 -1362, -1362, -1362, 1393, 930, -1362, 803, -1362, -1362, 10174, 1729 1397, 1398, -1362, 10328, 10328, -1362, -1362, 1016, 97, -1362, 1730 -1362, 1383, -1362, 1016, -1362, -1362, 2377, 874, -1362, -1362, 1731 286, 9317, 286, 9317, 1405, 1384, 874, -1362, -1362, -1362, 1732 -1362, -1362, 9884, 1402, 1016, 7122, 10174, 9798, 1406, 1016, 1733 1412, 2377, 2919, -1362, -1362, -1362, 1413, -1362, -1362, -1362, 1734 -1362, 8285, -1362, -1362, -1362, 9705, -1362, 9884, -1362, -1362, 1735 1400, 9612, -1362, -1362, 9798, 286, 2919, 286, 1414, 1419, 1736 807, -1362, 9705, -1362, -1362, -1362, 9612, -1362, -1362, -1362, 1737 286, 286, -1362, -1362, -1362, -1362, -1362, -1362, -1362, -1362 1557 4413, 9104, -1318, 42, -1318, -1318, -1318, -1318, -1318, -1318, 1558 -1318, -27, -1318, -1318, -1318, -1318, -1318, -1318, -1318, -1318, 1559 -1318, -1318, -1318, -1318, -1318, 95, 95, 95, 954, 850, 1560 71, 5300, 201, -1318, -1318, -1318, -1318, -1318, 123, -1318, 1561 -1318, -1318, 776, 164, 8401, -1318, -1318, -1318, -1318, -1318, 1562 -1318, 226, 169, -1318, 1184, -1318, -1318, -1318, -1318, 272, 1563 1531, 387, 89, 3759, -1318, -1318, 8469, 1998, -1318, -1318, 1564 -1318, 935, 392, 5420, 741, 1183, 935, 1282, -1318, -1318, 1565 356, 326, -1318, 935, 1429, -1318, 340, -1318, 453, 463, 1566 -1318, -1318, -1318, -1318, 370, 169, 95, -1318, 95, -1318, 1567 -1318, -1318, -1318, 9340, 1184, -1318, -1318, 1184, -1318, 9399, 1568 389, -1318, -1318, 1617, 9458, -1318, 1087, 1087, 1087, -1318, 1569 -1318, -1318, 95, -1318, -1318, -1318, 386, 435, 438, -1318, 1570 -1318, -1318, 498, -1318, -1318, -1318, -1318, -1318, 510, 531, 1571 -1318, -1318, 34, 7909, 1795, 48, 452, 575, 578, 583, 1572 588, 593, 8673, 6319, 543, 605, -1318, 8537, -1318, -1318, 1573 -1318, -1318, 652, -1318, 172, 5550, -1318, 473, 232, -1318, 1574 -1318, -1318, -1318, 661, 301, 325, 403, 95, 646, -1318, 1575 -1318, 1531, 2279, 739, -1318, 21, -1318, 95, 95, 169, 1576 -1318, -1318, 35, -1318, 95, 95, -1318, 2781, 700, 710, 1577 1087, 10200, -1318, -1318, 717, 8401, -1318, -1318, 935, -1318, 1578 -1318, -1318, 169, -1318, 1184, 226, -1318, 7011, -1318, 1087, 1579 1087, 1087, 169, -1318, 954, -1318, 3330, -1318, -1318, 704, 1580 1087, -1318, 1087, -1318, 123, 7909, 9163, 736, -1318, 850, 1581 769, 1087, -1318, 954, 737, 747, -1318, 5300, 814, -1318, 1582 -1318, -1318, 2451, -1318, -1318, 3603, -1318, 739, 61, 9458, 1583 10457, 1617, 2781, -1318, 68, -1318, -1318, 9399, 1184, 778, 1584 11233, -1318, -1318, 428, -1318, 10968, 787, 870, 10685, 10742, 1585 10799, -1318, 824, -1318, -1318, -1318, -1318, 10856, 10856, 814, 1586 7591, 827, 10742, 8015, -1318, -1318, -1318, -1318, -1318, -1318, 1587 874, -1318, 901, 2137, 10742, -1318, 237, 407, 632, 476, 1588 638, 859, 855, 869, 890, 101, -1318, -1318, 877, 616, 1589 -1318, 336, -1318, -1318, 1795, -1318, -1318, 518, 907, -1318, 1590 633, 907, 892, 123, -1318, -1318, 914, 9340, -1318, 916, 1591 7697, -1318, -1318, 1197, 771, 5233, 10200, 935, -1318, 935, 1592 1087, 1087, -1318, -1318, -1318, -1318, -1318, -1318, 1087, 9517, 1593 1184, -1318, -1318, 9576, 1658, -1318, 9222, -1318, -1318, -1318, 1594 -1318, -1318, -1318, -1318, 924, 4543, 10742, -1318, -1318, -1318, 1595 -1318, -1318, -1318, -1318, -1318, -1318, -1318, -1318, -1318, -1318, 1596 1617, -1318, 676, 942, 945, 946, 690, 947, 948, 958, 1597 2279, -1318, -1318, 952, 226, 957, -1318, -1318, 959, -1318, 1598 -1318, -1318, 2451, -1318, -1318, -1318, -1318, -1318, 2781, -1318, 1599 7909, 7909, -1318, 1087, 1617, 11261, 1184, 7402, -1318, -1318, 1600 -1318, -1318, 2451, 61, -1318, -1318, 935, 169, -1318, -1318, 1601 2451, -1318, 5128, -1318, -1318, 1087, 1087, 364, 9635, 960, 1602 2086, 8865, -1318, 432, 454, 850, -1318, 9163, 955, 944, 1603 850, 1087, -1318, -1318, -1318, -1318, 9936, -1318, 383, 7322, 1604 -1318, 169, 962, -1318, 1617, 11043, 10514, -1318, -1318, -1318, 1605 -1318, 755, 2781, -1318, 7467, 739, 6768, -1318, -1318, -1318, 1606 885, 414, 877, 850, 11233, 619, 9399, -1318, 11233, -1318, 1607 -1318, -1318, -1318, 479, -1318, 964, 870, 125, 7591, -1318, 1608 -1318, -1318, 7591, -1318, 7803, 7591, -1318, -1318, -1318, 969, 1609 -1318, 544, 972, 640, 974, -1318, 8741, 5983, -1318, -1318, 1610 -1318, 103, -1318, -1318, 10571, -1318, 112, -1318, -1318, -1318, 1611 -1318, -1318, -1318, -1318, -1318, -1318, -1318, 10457, 10457, -1318, 1612 10742, 10742, 10742, 10742, 10742, 10742, 10742, 10742, 10742, 10742, 1613 10742, 10742, 10742, 10742, 10742, 10742, 10742, 10742, 10343, 10457, 1614 -1318, 616, 900, -1318, -1318, 95, 95, -1318, -1318, 7909, 1615 -1318, -1318, 959, 814, -1318, 959, 10628, -1318, -1318, -1318, 1616 8333, 5983, 973, 8121, 976, -1318, 9694, -1318, -1318, 652, 1617 -1318, 978, 378, 980, 1782, 139, 877, -1318, 95, 95, 1618 877, 166, -1318, 95, 95, 959, -1318, -1318, 95, 95, 1619 -1318, 907, 9753, 1184, 11174, 137, 273, 9753, -1318, 4101, 1620 -1318, 877, -1318, 9517, -1318, 278, 7119, 7119, 7119, 1184, 1621 -1318, 3868, 982, 220, 924, 302, 984, -1318, 977, 5550, 1622 238, -1318, 1061, 1184, 7119, 814, 1617, 814, 739, 705, 1623 907, -1318, -1318, 765, 907, -1318, -1318, -1318, 870, -1318, 1624 907, 169, 9936, -1318, 570, 1000, 655, 1005, -1318, 1004, 1625 169, -1318, -1318, 2451, 169, 1003, 464, 465, 9812, 6431, 1626 1947, 10742, 2536, -1318, -1318, 1001, 20, 1001, -1318, -1318, 1627 -1318, 95, 95, -1318, -1318, 850, -1318, 95, -1318, -1318, 1628 8924, 850, 1006, 10742, -1318, 955, 11174, -1318, -1318, 1017, 1629 -1318, -1318, -1318, 814, -1318, 11109, 10742, -1318, 7119, 671, 1630 5233, -1318, -1318, 652, 1013, 1014, 885, 2927, -1318, -1318, 1631 11233, -1318, -1318, 1015, -1318, -1318, 1021, -1318, 1015, 1023, 1632 10968, 10457, 243, 1002, 53, 1025, 1026, 827, 1027, 1028, 1633 -1318, 1030, 1032, 8983, 6095, -1318, 10457, -1318, 640, 1104, 1634 -1318, 10400, 10457, 1034, -1318, -1318, 924, 678, -1318, 10457, 1635 -1318, -1318, -1318, -1318, -1318, -1318, -1318, 237, 237, 407, 1636 407, 632, 632, 632, 632, 476, 476, 638, 859, 855, 1637 869, 890, 10742, 716, -1318, 9936, 1038, 1041, 1042, 900, 1638 -1318, -1318, -1318, -1318, -1318, 9936, 679, 10742, 7119, -1318, 1639 9517, -1318, 6543, 8227, 9281, 6319, -1318, -1318, -1318, 378, 1640 9936, 820, 1047, 1051, 1052, 1057, 1058, 1059, 1060, -1318, 1641 3170, 1782, -1318, -1318, -1318, -1318, -1318, -1318, -1318, -1318, 1642 -1318, -1318, -1318, -1318, -1318, -1318, -1318, -1318, -1318, 959, 1643 -1318, -1318, -1318, 877, -1318, -1318, -1318, -1318, -1318, -1318, 1644 -1318, -1318, 1063, -1318, 1064, 1065, -1318, -1318, 226, 1034, 1645 3868, -1318, -1318, -1318, 4543, 1066, -1318, -1318, -1318, -1318, 1646 -1318, 850, 5481, 1140, -1318, -1318, -1318, -1318, 1049, 226, 1647 -1318, -1318, 959, -1318, -1318, 959, 127, 959, -1318, -1318, 1648 -1318, -1318, -1318, -1318, 8605, -1318, 169, -1318, 9163, -1318, 1649 -1318, 1070, 856, 1073, 1076, 1077, -1318, -1318, 2536, -1318, 1650 -1318, -1318, -1318, -1318, -1318, -1318, 2086, -1318, 944, -1318, 1651 -1318, 1075, 1078, 1082, -1318, -1318, 1080, 1096, -1318, 671, 1652 1985, -1318, 514, -1318, 2927, 877, -1318, 1100, 11233, 9871, 1653 7909, 1102, -1318, -1318, 1098, 1110, 1107, -1318, 10742, 12, 1654 400, 1114, -1318, 1112, 1112, 5983, 10457, -1318, -1318, 1112, 1655 -1318, 1104, 4543, -1318, -1318, -1318, -1318, 1115, 10457, 1120, 1656 814, 3868, -1318, 10571, -1318, 814, -1318, 10457, -1318, 825, 1657 907, -1318, -1318, -1318, -1318, -1318, -1318, -1318, 924, 7697, 1658 -1318, -1318, 6655, 1125, -1318, 833, 907, -1318, 845, 852, 1659 907, -1318, 1087, 4145, -1318, -1318, -1318, 9936, 9936, -1318, 1660 7402, 7402, -1318, 1123, 1124, 1126, 1133, -1318, 1134, 553, 1661 38, 1034, -1318, 814, -1318, 5550, -1318, 10457, 466, -1318, 1662 5871, 1136, 1141, 5631, 1149, 1155, 13, 17, 14, 10457, 1663 1156, 169, 3019, 1137, 1150, 1143, -1318, -1318, -1318, 1161, 1664 -1318, -1318, -1318, -1318, -1318, -1318, -1318, -1318, -1318, 850, 1665 1167, 10457, -1318, 9936, 9936, 95, 1169, -1318, 9045, 8803, 1666 867, 907, -1318, -1318, -1318, -1318, -1318, -1318, -1318, -1318, 1667 -1318, 1174, 1985, -1318, -1318, 1158, -1318, 1015, -1318, -1318, 1668 1617, 1173, -1318, -1318, -1318, 686, 1175, -1318, 53, 1178, 1669 10742, 1159, 53, 53, 1176, -1318, 977, 10457, 1185, 1115, 1670 607, 130, 1192, -1318, 1176, -1318, 1198, 1192, -1318, -1318, 1671 1199, -1318, -1318, 959, 1201, 1203, 6207, 1202, 1205, 1207, 1672 -1318, -1318, 1210, -1318, -1318, 959, -1318, -1318, -1318, -1318, 1673 959, 10457, 10457, 10742, 1209, -1318, -1318, -1318, -1318, -1318, 1674 -1318, -1318, -1318, -1318, -1318, -1318, -1318, 10742, 10742, 1212, 1675 1219, 1192, -1318, -1318, 850, -1318, -1318, -1318, 4876, 9871, 1676 10457, 10457, 1262, 10457, -1318, -1318, 1213, -1318, 1214, 10457, 1677 1216, 1220, 10457, 929, -1318, 1223, 5017, 95, -1318, -1318, 1678 5481, 1224, 469, -1318, -1318, -1318, -1318, -1318, -1318, -1318, 1679 -1318, -1318, 959, 10172, -1318, 7467, 1232, -1318, -1318, 9871, 1680 478, 509, -1318, 1236, 1239, 870, 1248, -1318, 541, -1318, 1681 10457, 1250, 1245, -1318, -1318, 1251, 128, 133, 814, 1253, 1682 1254, -1318, 1256, -1318, 9936, -1318, -1318, -1318, -1318, -1318, 1683 1258, -1318, 9936, 9936, 9936, -1318, -1318, 1260, -1318, 1263, 1684 1269, 1270, 589, 7186, 7294, -1318, -1318, 351, -1318, 1273, 1685 1275, -1318, 7532, 721, 742, 1272, 752, 5749, -1318, -1318, 1686 545, -1318, -1318, 768, 1279, 169, 1330, 1332, -1318, -1318, 1687 5631, -1318, -1318, -1318, 1285, 1286, 9936, -1318, -1318, -1318, 1688 1283, -1318, -1318, -1318, -1318, -1318, -1318, 9871, 870, 206, 1689 -1318, 1268, 870, 1115, 327, -1318, -1318, -1318, -1318, -1318, 1690 -1318, -1318, -1318, 1284, -1318, -1318, -1318, -1318, -1318, -1318, 1691 1291, 1294, -1318, -1318, -1318, -1318, -1318, -1318, -1318, 1297, 1692 -1318, 1296, -1318, -1318, 5631, 124, 10457, 5631, -1318, 1299, 1693 10457, -1318, 270, 1314, -1318, -1318, 1306, -1318, -1318, -1318, 1694 -1318, -1318, 1184, 1617, 1301, 874, 879, 10742, -1318, 790, 1695 1307, 10457, 814, 814, 1308, 1310, 1316, 1317, -1318, -1318, 1696 7402, 1320, -1318, 1376, 10742, 1313, -1318, -1318, 10286, -1318, 1697 791, -1318, 1300, 5631, 1305, -1318, -1318, 1323, -1318, 1341, 1698 1329, 9871, -1318, -1318, -1318, 870, 814, 1334, 1327, 1325, 1699 -1318, 1192, 1192, -1318, -1318, -1318, -1318, -1318, 5631, 246, 1700 -1318, 917, -1318, -1318, 6877, -1318, -1318, 1335, 10457, -1318, 1701 10457, 6877, 169, 9635, 1342, -1318, -1318, 1351, 874, -1318, 1702 793, -1318, -1318, 10457, 1357, 1359, -1318, 10742, 10742, -1318, 1703 -1318, 989, 88, -1318, -1318, 1340, -1318, 989, -1318, -1318, 1704 2035, 814, 169, 9635, 1364, 1345, 814, -1318, -1318, -1318, 1705 -1318, -1318, 10286, 1369, 989, 6946, 10457, 10206, 1373, 989, 1706 1380, 2035, 2697, -1318, -1318, -1318, -1318, -1318, 7909, -1318, 1707 -1318, -1318, 10051, -1318, 10286, -1318, -1318, 1347, 9970, -1318, 1708 -1318, 10206, 169, 2697, 1383, 794, -1318, 10051, -1318, -1318, 1709 -1318, 9970, -1318, -1318, 169, -1318, -1318, -1318, -1318, -1318 1738 1710 }; 1739 1711 … … 1741 1713 static const yytype_int16 yypgoto[] = 1742 1714 { 1743 -13 62, 3493, 1093, -1362, 1502, -1362, -1, 2, 435, -1362,1744 458, -522, -509, -926, -270, 4585, -1362, 1298, 508, 516,1745 480, 518, 965, 977, 985, 963, 975, -1362, 450, -552,1746 3932, -889, -691, -949, -1362, 269, -657, -346, -1362, 1391,1747 -13 62, 339, -1080, -1362, -1362, 75, -1362, -1321, -831, 188,1748 -13 62, -1362, -1362, -1362, 7, -1083, -1362, -1362, -1362, -1362,1749 -13 62, -1362, 268, -1220, 39, -1362, -255, -1362, 439, 242,1750 -13 62, 117, -1362, -360, -1362, -1362, -1362, 498, -843, -1362,1751 -13 62, 12, -1020, 26, 1825, -1362, -1362, -1362, -118, -1362,1752 513, 86, -185, 665, 2995, -1362, -1362, 55, 143, 302,1753 -25 4, 1799, -1362, 1348, -1362, -1362, 259, 1704, -1362, 2086,1754 1 311, -1362, -1362, -430, -428, 1135, 1143, 640, 890, 313,1755 -13 62, -1362, 1126, 652, -484, -1362, -469, -299, 976, -1362,1756 -13 62, -931, -975, -226, 1098, 1011, 22, -1362, 189, 264,1757 -13, -195, -156, 609, 711, -1362, 947, -1362, 2242, 541,1758 -4 58, 859, -1362, -1362, 647, -1362, -235, -1362, 24, -1362,1759 -13 62, -1362, -1279, 371, -1362, -1362, -1362, 1122, -1362, 46,1760 -13 62, -1362, -859, -108, -1361, -83, 2954, -1362, 2772, -1362,1761 8 58, -1362, -175, 138, -168, -167, -163, 3, -38, -31,1762 -3 0, 910, 25, 70, 79, -147, -162, -159, -152, -151,1763 -2 87, -573, -525, -485, -559, -293, -488, -1362, -1362, -496,1764 1038, 1041, 1042, 2149, 4025, -548, -554, -520, -498, -453,1765 -13 62, -411, -687, -675, -653, -597, -296, -300, -1362, -1362,1766 829, 71, -28, -1362, 3030, 124, -627, -1901715 -1318, 3762, 2543, -1318, 1454, -1318, -1, 2, -89, -1318, 1716 -1318, -1318, -483, -942, -282, 4006, -1318, 1670, 483, 485, 1717 347, 484, 927, 931, 926, 932, 937, -1318, 792, -594, 1718 4587, 375, -691, -946, -1318, -112, -722, -695, -1318, 412, 1719 -1318, 304, -1184, -1318, -1318, 54, -1318, -1317, -763, 149, 1720 -1318, -1318, -1318, -1318, -3, -1151, -1318, -1318, -1318, -1318, 1721 -1318, -1318, 223, 51, 55, -1318, -364, -1318, 402, 204, 1722 -1318, 86, -1318, -320, -1318, -1318, -1318, 450, -745, -1318, 1723 -1318, 10, -865, 258, 180, -1318, -1318, -1318, -222, -1318, 1724 126, 49, -187, 951, 3574, -1318, -1318, 213, 151, 363, 1725 -251, 2053, -1318, 1304, -1318, -1318, 344, 1615, -1318, 1898, 1726 1496, -1318, -1318, -417, -439, 1083, 1084, 597, 837, 279, 1727 -1318, -1318, 1086, 598, -23, -1318, 37, -463, 807, -1318, 1728 -1318, -923, -977, 142, 669, 965, 280, -1318, 175, -35, 1729 -257, -199, -156, 555, 651, -1318, 888, -1318, 1925, 1031, 1730 -460, 803, -1318, -1318, 594, -1318, -228, -1318, 140, -1318, 1731 -1318, -1318, -1268, 320, -1318, -1318, -1318, 1067, -1318, 6, 1732 -1318, -1318, -851, -86, -1303, -124, 2887, -1318, 2837, -1318, 1733 812, -1318, -168, 585, -176, -173, -171, 4, -41, -39, 1734 -36, 834, 47, 56, 79, -167, -162, -161, -159, -158, 1735 -273, -557, -498, -458, -543, -318, -539, -1318, -1318, -499, 1736 986, 992, 993, 1485, 4182, -565, -577, -550, -542, -536, 1737 -1318, -384, -672, -658, -654, -591, -211, -316, -1318, -1318, 1738 152, 299, -75, -1318, 2880, 592, -631, -200 1767 1739 }; 1768 1740 … … 1770 1742 positive, shift that token. If negative, reduce the rule which 1771 1743 number is the opposite. If YYTABLE_NINF, syntax error. */ 1772 #define YYTABLE_NINF -5 201744 #define YYTABLE_NINF -511 1773 1745 static const yytype_int16 yytable[] = 1774 1746 { 1775 110, 449, 46, 95, 146, 264, 927, 762, 403, 379, 1776 380, 147, 148, 111, 395, 396, 424, 785, 928, 397, 1777 398, 436, 502, 399, 889, 707, 53, 112, 865, 713, 1778 400, 401, 836, 46, 95, 1194, 404, 1085, 746, 47, 1779 929, 702, 751, 1136, 46, 601, 46, 158, 847, 1453, 1780 1390, 840, 614, 1084, 674, 66, 46, 53, 609, 848, 1781 633, 1178, 46, 190, 637, 46, 213, 149, 46, 223, 1782 47, 104, 104, 1144, 683, 257, 174, 140, 216, 814, 1783 837, 108, 687, 988, 927, 841, 66, 113, 403, 207, 1784 421, 945, 217, 1457, 395, 396, 928, 969, 1309, 397, 1785 398, 406, 104, 399, 1176, 1177, 46, 842, 532, 46, 1786 400, 401, 150, 570, 773, 46, 404, 839, 929, 30, 1787 838, 151, 1188, 1453, 339, 277, 258, 30, 199, 259, 1788 156, 30, 108, 287, 108, 475, 1092, 104, 94, -232, 1789 -232, 1202, 931, 67, 146, 119, 46, 158, 571, 1410, 1790 1411, 147, 148, 1473, 46, 851, 880, 881, 30, 46, 1791 369, 858, 972, 108, 944, 120, 836, 1310, 163, 94, 1792 878, 878, 878, 899, 67, 479, 481, 200, 1211, 1212, 1793 145, 1206, 94, 278, 46, 46, 158, 734, 878, 255, 1794 735, 1457, 1204, 1410, 1411, 156, 1457, 249, 186, 407, 1795 46, 94, 777, 407, 94, 741, 209, 149, 46, 158, 1796 -232, 672, 1193, 1254, 837, 165, 1457, 46, 138, 1412, 1797 46, 439, 532, 1457, 146, 139, 532, 669, 415, 320, 1798 407, 147, 148, 163, 108, 405, 1128, 435, 336, 166, 1799 373, 1255, 723, 1129, 437, 1251, 1499, 952, 469, 443, 1800 46, 95, 150, 1127, 838, 670, 374, 970, 1178, 74, 1801 836, 151, 878, 1421, 46, 46, 158, 324, 464, 238, 1802 241, 46, 141, 783, 53, 1194, 108, 698, 46, 840, 1803 480, 1528, 94, 1530, 661, 707, 1030, 47, 426, 520, 1804 74, 487, 430, 825, 467, 94, 475, 1031, 504, 1335, 1805 601, 143, 30, 66, 744, 700, 1184, 1178, 837, 669, 1806 592, 1146, 676, 841, 614, 1339, 475, 1007, 681, 104, 1807 394, 186, 320, 452, 475, 30, 920, 46, 369, 601, 1808 432, 30, 108, 1185, 601, 842, 874, 670, 1010, 339, 1809 879, 879, 879, 532, 94, 1018, 46, 46, 838, 383, 1810 1176, 1177, 1483, 878, 430, 152, 94, 492, 879, 1085, 1811 324, 438, 480, 46, 868, 384, 174, 46, 869, 226, 1812 1393, 1341, 485, 227, 407, 1084, 231, 525, 233, 1185, 1813 156, -110, 851, 634, 572, 242, 94, 638, 1397, 560, 1814 561, 67, 432, 734, 46, 849, 735, 606, 168, 840, 1815 483, 856, -110, 606, 46, 369, 848, 1208, 532, 678, 1816 680, 2, 203, 4, 5, 6, 7, 865, 163, 852, 1817 1126, 178, 46, 855, 591, 562, 563, 598, 46, 461, 1818 46, 1178, 879, 841, 1542, 1194, 756, 1541, 108, 225, 1819 136, 137, 1194, 757, 872, -110, 631, -110, 875, 723, 1820 635, -110, 1372, 336, 46, 842, 108, 1552, 136, 235, 1821 198, 1557, 1333, 94, 1556, 603, -110, -110, 734, 1334, 1822 110, 735, 1442, 1443, 34, 1448, 35, -288, 46, 108, 1823 240, 136, 137, 608, 244, 750, 46, 369, 1142, 209, 1824 46, 95, 1095, 236, 46, 1194, 890, 249, 237, 502, 1825 339, -110, -110, 764, 1114, 247, 1250, 74, 320, 320, 1826 581, 226, 74, 60, 53, 761, 582, -110, 885, -515, 1827 403, 1100, 261, 879, 1012, 395, 396, 47, 825, 702, 1828 397, 398, 778, 386, 399, 761, 452, 784, 761, 452, 1829 186, 400, 401, 66, 60, 452, 324, 324, 404, 387, 1830 1073, 901, 614, 249, 326, 407, 388, 113, 1029, 104, 1831 523, 1031, -10, 390, 108, 649, 136, 137, 475, 818, 1832 1164, 1166, 389, 708, 1100, 1244, 36, -438, 903, 391, 1833 39, 710, 492, 723, 320, 469, 492, 40, 41, 709, 1834 699, 327, 688, 723, -439, 46, 525, 711, 582, 273, 1835 525, 747, 320, 525, 212, 282, 748, 46, 723, 46, 1836 949, 708, 1489, 833, 336, 606, 40, 41, 825, 1489, 1837 209, 239, 324, 607, 275, 710, 94, 923, 46, 1191, 1838 608, 67, 1283, 1284, 497, 870, 498, 1191, 1370, 871, 1839 324, 924, 517, -464, 46, 1192, 712, 328, 867, 827, 1840 226, 461, 231, 1315, 1324, 212, 1512, 900, 46, 902, 1841 276, 46, 1517, 339, 882, 63, 114, 707, 320, 1326, 1842 1325, 1029, 1538, 74, -464, 725, -464, 1034, 898, 823, 1843 -464, 726, 598, 1537, 745, 1327, 749, 1042, 1544, 769, 1844 891, 677, 679, 74, 329, 46, 63, 46, 212, 870, 1845 574, 74, 407, 1110, 330, 1373, 324, 331, 1089, 157, 1846 575, 864, 1199, 509, 332, 1420, 598, 583, 601, 407, 1847 603, 892, 873, 648, 771, 948, 407, 893, 586, 1122, 1848 407, 218, 1049, 742, 772, 904, 1175, 407, 339, 743, 1849 226, 46, 46, 835, 752, 608, 953, 74, 606, 866, 1850 753, 367, 768, 368, 603, 46, 954, 669, 769, 212, 1851 36, 60, 171, 172, 39, 698, 476, 914, 256, 1111, 1852 438, 40, 41, 769, 758, 504, 916, 336, 759, 523, 1853 372, 765, 769, 523, 996, 670, 523, -103, 1009, 1382, 1854 997, -103, 1240, 700, 726, 381, 825, 212, 582, 452, 1855 385, 212, 1491, 422, 1492, 553, 723, 723, 1366, 325, 1856 554, 555, 1358, 1367, 769, 393, 1359, 256, 346, 769, 1857 2, 203, 4, 5, 6, 7, 415, 665, 407, 492, 1858 405, 926, 36, 699, 927, 46, 39, 886, 428, 1369, 1859 807, 1438, 1168, 40, 41, 769, 928, 46, 402, 1374, 1860 1439, 907, 336, 407, 734, 769, 1436, 735, 1450, 1539, 1861 249, 326, 209, 420, 723, 723, 425, 427, 929, 42, 1862 1242, 157, 1073, 160, 1246, 446, 209, 835, 608, 144, 1863 533, 534, 535, 34, 827, 35, 423, 212, 108, 459, 1864 136, 137, 444, 1458, 1189, 1071, 447, 939, 448, 769, 1865 485, 326, 407, 942, 536, 465, 537, 463, 538, 539, 1866 1011, 1505, 36, 63, 823, 1562, 39, 1506, 477, 466, 1867 46, 582, 53, 40, 41, 556, 557, 476, 484, 558, 1868 559, 1510, 1450, 1148, 46, 407, 427, 735, 160, 849, 1869 326, 606, 46, 755, 108, 74, -3, 476, 1160, 739, 1870 407, 66, 564, 565, 159, 476, 1302, 1303, 1304, 740, 1871 46, 8, 9, 10, 11, 12, 1383, 104, 212, 209, 1872 191, 835, 1163, 214, 606, 1115, 224, 126, 462, 127, 1873 128, 129, 1361, 608, 1340, 1342, 1343, 74, 30, 1116, 1874 1165, 488, 606, 1138, 508, 1228, 761, 407, 1138, 732, 1875 287, 60, 516, 256, 823, 1320, 599, 528, 452, 1235, 1876 532, 935, 627, 935, 1000, 997, 33, 566, 212, 567, 1877 1409, 326, 407, 1417, 569, 632, 769, 1002, 335, 632, 1878 1379, 1380, 256, 568, 104, 431, 723, 1430, 997, 67, 1879 795, 796, 797, 798, 723, 723, 723, 1138, 492, 1117, 1880 320, 1436, 1437, -435, 159, 1484, 1485, 1071, 1410, 1411, 1881 1203, 1205, 1207, 572, 791, 792, 457, 370, 1456, 590, 1882 699, 593, 662, 1460, 793, 794, 643, 649, 699, 477, 1883 663, 53, 799, 800, 1054, 1524, 664, 666, 324, 533, 1884 534, 535, 723, 159, 346, 667, 608, 431, 668, 477, 1885 864, 671, 673, 1482, 254, 714, 910, 477, 691, 716, 1886 1196, -236, 754, 536, 766, 537, 159, 538, 1311, 46, 1887 527, 770, 774, 160, -12, 828, 104, 830, 440, 832, 1888 843, 895, 888, 719, 915, 1100, 427, 887, 866, 917, 1889 212, 922, 918, 164, 930, 169, 943, -519, 175, 176, 1890 177, 733, 179, 63, 694, 74, -412, 957, 964, 743, 1891 438, 427, 966, 977, 978, 427, 930, 230, 212, 981, 1892 971, 982, 980, 212, 983, 649, 992, 1004, 1005, 245, 1893 246, 452, 823, 1006, 1020, 339, 1021, 1022, 1023, 1551, 1894 1024, 1025, 973, 256, 346, 1551, 1026, 1037, 67, 476, 1895 36, 1086, 180, 181, 39, 732, 1551, -400, 216, -399, 1896 1551, 40, 41, 1051, 1088, 46, -289, 1071, 1096, 1097, 1897 1098, 207, 217, 8, 9, 10, 11, 12, 1099, 1103, 1898 8, 9, 10, 11, 12, 370, 1104, 693, 1105, 407, 1899 813, 476, 1106, 1107, 53, 694, 1113, 695, 1123, 1115, 1900 30, 769, 1124, 1138, 1138, 1138, 1001, 30, 632, 826, 1901 212, 599, 1125, 1116, 1130, 986, 1134, 104, 1137, 1158, 1902 1179, 1180, 845, 66, 212, 1054, 1181, 1182, 33, 457, 1903 732, 1434, 457, 1197, 1183, 33, 1198, 1200, 457, 104, 1904 599, 1201, 1209, 1213, 1216, 599, 1550, 1215, 1221, 336, 1905 -3, 632, 1226, 1232, 346, 346, 346, 1243, 104, 1236, 1906 761, 1071, 370, 497, 74, 1241, 437, 1252, 1245, 1248, 1907 1256, 53, 346, 1117, 1259, 1261, 1263, 574, 1293, 407, 1908 1264, 1265, 1269, 1266, 1044, 1267, 1276, 575, 209, 527, 1909 719, 1115, 1285, 527, 1286, 1296, 527, 403, 72, 1297, 1910 1196, 477, 1314, 395, 396, 1116, 256, 733, 397, 398, 1911 932, 67, 399, 1299, 1322, 1071, 104, 212, 1071, 400, 1912 401, 669, 1300, 1308, 211, 404, 1328, 1330, 1332, 72, 1913 1289, 1336, 1337, 1338, 1344, 1345, 1346, 1348, 1523, 1354, 1914 46, 46, 1355, 477, 1356, 1357, 346, 1138, 1138, 670, 1915 104, 1364, 1365, 1368, 1375, 958, 1376, 1304, 427, 60, 1916 1433, 1384, 1385, 1071, 219, 1117, 1397, 36, 1071, 180, 1917 181, 39, 930, 1394, 1387, 211, 1404, 1405, 40, 41, 1918 -401, 256, 733, 438, 597, 604, 1475, 985, 67, 1408, 1919 1419, 1427, 1428, 170, 1115, 1423, 628, 629, 1071, 1425, 1920 1429, 1435, 1145, 1440, 605, 1359, 606, 1449, 1116, 1454, 1921 1444, 1445, 1446, 1459, 607, 1447, 1291, 1292, 211, 1294, 1922 1461, 1463, 1465, 1467, 719, 1298, 1469, 74, 1301, 1472, 1923 1471, 53, 1477, 146, 719, 1479, 250, 346, 53, 632, 1924 147, 148, 1017, 632, 826, 1478, 1525, 1490, 46, 719, 1925 1500, 349, 1044, 104, 1502, 1533, 1504, 1508, 1509, 1028, 1926 1196, 1071, 1531, 1516, 1532, 1536, 1071, 1196, 1117, 1543, 1927 1545, 1547, 1560, 46, 46, 158, 104, 1561, 1214, 211, 1928 1553, 801, 804, 104, 1071, 36, 1071, 180, 181, 39, 1929 1071, 53, 457, 1071, 802, 805, 40, 41, 46, 369, 1930 1496, 1071, 1496, 803, 74, 1071, 173, 1313, 212, 1511, 1931 973, 63, 1422, 1563, 973, 973, 724, 211, 476, 1247, 1932 1196, 211, 693, 1378, 407, 445, 1395, 930, 513, 1493, 1933 1101, 413, 695, 632, 1220, 689, 104, 1496, 718, 1496, 1934 936, 530, 531, 690, 1102, 1133, 72, 820, 67, 1050, 1935 894, 72, 959, 552, 433, 67, 173, 1112, 1323, 173, 1936 737, 967, 810, 0, 441, 811, 812, 320, 0, 1109, 1937 2, 203, 4, 5, 6, 7, 0, 427, 114, 0, 1938 0, 0, 0, 0, 930, 930, 0, 1416, 0, 531, 1939 0, 0, 0, 0, 346, 0, 0, 0, 0, 0, 1940 0, 913, 0, 0, 173, 324, 0, 211, 67, 483, 1941 8, 9, 10, 11, 12, 0, 732, 0, 0, 8, 1942 9, 10, 11, 12, 0, 531, 0, 0, 1331, 599, 1943 0, 0, 524, 34, 0, 35, 0, 30, 0, 0, 1944 0, 0, 425, 0, 0, 219, 30, 719, 719, 0, 1945 346, 346, 0, 0, 75, 8, 9, 10, 11, 12, 1946 0, 0, 0, 0, 74, 33, 0, 173, 0, 0, 1947 1195, 74, 0, 0, 33, 0, 0, 0, 0, 36, 1948 0, 60, 30, 39, 0, 75, 212, 0, 211, 0, 1949 40, 41, 0, 0, 0, 0, 732, 0, 0, 0, 1950 0, 457, 0, 0, 0, 719, 719, 771, 0, 407, 1951 33, 632, 72, 0, 0, 1391, 42, 772, 0, 1391, 1952 220, 173, 0, 724, 74, 0, 144, 349, 173, 0, 1953 0, 0, 72, 0, 0, 1003, 0, 0, 211, 0, 1954 72, 0, 0, 0, 0, 1008, 0, 0, 0, 0, 1955 0, 0, 953, 0, 606, 0, 0, 0, 476, 0, 1956 1019, 0, 954, 946, 0, 947, 349, 36, 733, 171, 1957 172, 39, 950, 951, 0, 54, 54, 956, 40, 41, 1958 685, 212, 0, 0, 349, 0, 72, 0, 36, 961, 1959 180, 181, 39, 930, 965, 0, 173, 0, 0, 40, 1960 41, 788, 789, 790, 368, 0, 54, 351, 0, 0, 1961 930, 1290, 210, 173, 727, 0, 0, 173, 0, 993, 1962 0, 1474, 229, 0, 0, 182, 0, 349, 256, 0, 1963 0, 0, 0, 63, 0, 183, 0, 0, 54, 0, 1964 0, 54, 0, 0, 531, 0, 719, 0, 733, 0, 1965 0, 524, 114, 0, 0, 524, 0, 724, 524, 0, 1966 211, 0, 0, 210, 597, 0, 0, 724, 0, 0, 1967 0, 0, 0, 0, 457, 0, 0, 719, 0, 0, 1968 173, 0, 724, 930, 930, 719, 719, 719, 211, 0, 1969 0, 0, 349, 211, 0, 0, 346, 346, 0, 0, 1970 0, 0, 75, 0, 0, 0, 210, 75, 0, 0, 1971 1195, 0, 0, 0, 0, 0, 0, 0, 476, 0, 1972 0, 1038, 1039, 1040, 1041, 476, 1043, 0, 344, 0, 1973 0, 0, 0, 719, 0, 0, 0, 349, 349, 349, 1974 0, 0, 1087, 0, 114, 0, 0, 8, 9, 10, 1975 11, 12, 0, 0, 0, 349, 1093, 0, 1173, 1174, 1976 36, 0, 171, 172, 39, 0, 0, 210, 0, 0, 1977 0, 40, 41, 349, 30, 0, 0, 531, 476, 0, 1978 211, 0, 0, 0, 72, 0, 0, 0, 0, 0, 1979 349, 0, 0, 54, 211, 1108, 0, 372, 0, 0, 1980 0, 220, 33, 0, 0, 210, 0, 36, 0, 210, 1981 0, 39, 0, 0, 0, 912, 1223, 1224, 40, 41, 1982 0, 346, 987, 54, 919, 503, 72, 0, 921, 349, 1983 0, 0, 0, 0, 1135, 0, 77, 0, 0, 0, 1984 0, 1143, 0, 0, 739, 173, 1147, 114, 0, 0, 1985 0, 1151, 0, 1152, 740, 0, 0, 1154, 1155, 1156, 1986 0, 0, 1159, 0, 0, 349, 0, 77, 75, 531, 1987 1195, 1171, 0, 0, 0, 0, 0, 1195, 173, 0, 1988 724, 724, 0, 351, 0, 0, 0, 211, 75, 1186, 1989 1187, 0, 0, 0, 173, 210, 75, 0, 0, 0, 1990 0, 0, 221, 0, 0, 0, 0, 349, 173, 0, 1991 0, 0, 0, 0, 0, 0, 1217, 349, 0, 1219, 1992 349, 0, 351, 0, 0, 219, 0, 349, 0, 0, 1993 1195, 0, 349, 0, 0, 0, 0, 1546, 724, 724, 1994 351, -290, 75, 36, 0, 180, 181, 39, 8, 9, 1995 10, 11, 12, 0, 40, 41, 0, 1234, 0, 0, 1996 0, 0, 0, 1238, 1239, 0, 0, 0, 0, 0, 1997 0, 0, 0, 0, 1249, 30, 210, 0, 0, 1253, 1998 262, 0, 1257, 351, 1258, 0, 0, 1260, 1347, 352, 1999 263, 0, 84, 210, 72, 0, 1349, 1350, 1351, 0, 2000 1268, 0, 0, 33, 344, 173, 0, 0, 0, 0, 2001 0, 0, 0, 1275, 0, 1277, 1278, 1279, 1280, 0, 2002 0, 0, 0, 84, 0, 0, 210, 0, 0, 0, 2003 0, 1287, 0, 1288, 0, 0, 0, 169, 0, 0, 2004 0, 0, 0, 1497, 1386, 1497, 0, 0, 351, 0, 2005 0, 0, 0, 0, 0, 0, 0, 0, 222, 0, 2006 0, 1094, 531, 54, 0, -291, 1316, 1317, 0, 0, 2007 0, 0, 8, 9, 10, 11, 12, 349, 211, 1321, 2008 1497, 0, 1497, 0, 77, 409, 0, 0, 0, 77, 2009 0, 0, 417, 351, 351, 351, 0, 0, 0, 30, 2010 0, 0, 0, 513, 344, 0, 0, 0, 0, 0, 2011 724, 351, 0, 0, 0, 0, 1352, 1353, 724, 724, 2012 724, 0, 0, 0, 0, 0, 1363, 33, 0, 351, 2013 349, 349, 0, 349, 349, 0, 0, 0, 0, 0, 2014 75, 0, 0, 0, 0, 359, 351, 0, 210, 0, 2015 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 2016 0, 0, 0, 0, 409, 0, 724, 0, 0, 344, 2017 173, 0, 0, 0, 0, 0, 210, 0, 1396, 0, 2018 0, 210, 75, 221, 0, 351, 0, 0, 349, 349, 2019 1400, 0, 1401, 1402, 1403, 0, 0, 36, 0, 180, 2020 181, 39, 0, 0, 1407, 0, 0, 1210, 40, 41, 2021 0, 0, 0, 1418, 344, 344, 344, 0, 531, 580, 2022 0, 351, 0, 0, 0, 0, 0, 584, 0, 1431, 2023 587, 0, 344, 0, 1521, 0, 407, 0, 0, 0, 2024 84, 0, 0, 0, 1522, 84, 0, 0, 0, 0, 2025 77, 349, 0, 0, 0, 0, 211, 0, 0, 0, 2026 0, 0, 0, 351, 0, 352, 0, 0, 210, 0, 2027 77, 0, 0, 351, 0, 0, 351, 0, 77, 0, 2028 0, 220, 210, 351, 0, 1480, 1481, 0, 351, 0, 2029 0, 0, 0, 409, 219, 0, 0, 417, 1486, 0, 2030 0, 0, 503, 0, 352, 1486, 344, 0, 0, 0, 2031 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 2032 0, 0, 352, 0, 77, 0, 0, 0, 0, 349, 2033 0, 349, 0, 0, 0, 0, 0, 0, 1520, 222, 2034 0, 0, 1526, 0, 0, 0, 0, 0, 0, 0, 2035 75, 211, 0, 0, 0, 0, 0, 0, 0, 0, 2036 349, 0, 0, 0, 0, 352, 0, 0, 349, 349, 2037 349, 1548, 0, 1549, 0, 210, 0, 0, 0, 349, 2038 349, 0, 409, 0, 8, 9, 10, 11, 12, 0, 2039 0, 0, 0, 72, 0, 0, 0, 344, 0, 0, 2040 0, 1564, 1565, 0, 344, 0, 84, 0, 0, 1568, 2041 1569, 30, 0, 0, 0, 0, 349, 0, 0, 0, 2042 0, 359, 0, 0, 0, 0, 84, 0, 0, 0, 2043 352, 0, 0, 351, 84, 0, 0, 0, 0, 33, 2044 0, 0, 0, 0, 36, 1377, 180, 181, 39, 0, 2045 0, 0, 0, 0, 0, 40, 41, 0, 0, 0, 2046 359, 0, 0, 0, 0, 173, 0, 0, 0, 0, 2047 0, 54, 0, 580, 580, 352, 352, 352, 359, 0, 2048 84, 605, 0, 606, 0, 0, 351, 351, 0, 351, 2049 351, 607, 0, 352, 0, 0, 0, 0, 0, 0, 2050 0, 0, 0, 0, 349, 0, 0, 0, 0, 75, 2051 0, 352, 0, 0, 0, 0, 0, 0, 0, 0, 2052 0, 359, 77, 0, 0, 0, 0, 0, 352, 8, 2053 9, 10, 11, 12, 0, 0, 0, 0, 54, 0, 2054 0, 0, 0, 0, 351, 351, 0, 123, 123, 123, 2055 0, 0, 0, 72, 344, 0, 30, 0, 0, 0, 2056 72, 905, 0, 0, 77, 908, 210, 352, 540, 541, 2057 542, 543, 544, 545, 546, 547, 548, 549, 0, 0, 2058 0, 0, 0, 0, 33, 0, 359, 0, 0, 36, 2059 0, 180, 181, 39, 0, 0, 0, 0, 409, 0, 2060 40, 41, 550, 352, 1494, 0, 1498, 351, 0, 0, 2061 344, 344, 0, 72, 0, 0, 0, 0, 123, 0, 2062 123, 0, 0, 0, 0, 0, 693, 0, 407, 0, 2063 54, 359, 359, 359, 0, 0, 695, 0, 0, 0, 2064 173, 1527, 0, 1529, 272, 352, 0, 0, 0, 359, 2065 220, 0, 0, 0, 0, 352, 0, 0, 352, 0, 2066 0, 0, 0, 221, 0, 352, 0, 359, 0, 0, 2067 352, 0, 75, 0, 0, 0, 0, 0, 84, 8, 2068 9, 10, 11, 12, 359, 351, 1558, 351, 1559, 0, 2069 0, 0, 8, 9, 10, 11, 12, 0, 0, 0, 2070 123, 1566, 1567, 0, 0, 0, 30, 0, 123, 0, 2071 123, 123, 580, 0, 0, 123, 351, 123, 123, 30, 2072 84, 0, 0, 359, 351, 351, 351, 0, 0, 121, 2073 124, 125, 77, 0, 33, 351, 351, 0, 0, 36, 2074 0, 180, 181, 39, 210, 0, 0, 33, 0, 75, 2075 40, 41, 36, 0, 180, 181, 39, 0, 0, 359, 2076 0, 0, 0, 40, 41, 0, 0, 0, 0, 0, 2077 54, 54, 351, 0, 0, 0, 1521, 0, 407, 0, 2078 0, 0, 0, 0, 0, 0, 1522, 123, 0, 182, 2079 0, 0, 0, 54, 0, 0, 0, 0, 0, 183, 2080 251, 359, 252, 0, 0, 0, 0, 0, 208, 0, 2081 0, 359, 54, 0, 359, 352, 0, 0, 228, 222, 2082 232, 359, 234, 0, 162, 409, 359, 0, 0, 243, 2083 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 2084 0, 0, 0, 215, 0, 0, 0, 0, 0, 0, 2085 8, 9, 10, 11, 12, 0, 344, 344, 0, 208, 2086 351, 232, 234, 243, 0, 54, 0, 0, 352, 352, 2087 54, 352, 352, 0, 0, 0, 0, 30, 0, 0, 2088 0, 0, 392, 0, 0, 0, 0, 0, 84, 162, 2089 0, 77, 411, 412, 269, 0, 0, 416, 0, 418, 2090 419, 0, 208, 1149, 54, 33, 0, 0, 0, 75, 2091 36, 0, 180, 181, 39, 0, 75, 0, 0, 1161, 2092 0, 40, 41, 162, 0, 0, 352, 352, 0, 0, 2093 0, 0, 0, 365, 0, 0, 0, 371, 0, 0, 2094 0, 0, 0, 0, 0, 0, 0, 262, 0, 0, 2095 0, 0, 0, 0, 0, 0, 0, 263, 0, 0, 2096 0, 0, 0, 208, 0, 232, 234, 243, 0, 75, 2097 0, 359, 0, 0, 0, 0, 0, 0, 0, 0, 2098 0, 344, 0, 0, 0, 0, 162, 0, 0, 352, 2099 0, 0, 0, 0, 0, 0, 1229, 0, 215, 0, 2100 0, 208, 0, 0, 0, 208, 0, 54, 0, 0, 2101 0, 0, 0, 0, 0, 0, 162, 458, 0, 0, 2102 0, 501, 0, 0, 359, 359, 0, 359, 359, 0, 2103 54, 0, 221, 0, 0, 0, 0, 54, 0, 0, 2104 371, 0, 0, 0, 0, 0, 0, 84, 162, 0, 2105 0, 0, 0, 0, 77, 0, 0, 0, 0, 0, 2106 0, 0, 0, 0, 0, 0, 0, 352, 0, 352, 2107 208, 458, 0, 0, 162, 0, 0, 0, 0, 0, 1747 110, 146, 46, 147, 95, 393, 148, 447, 394, 378, 1748 395, 111, 704, 422, 401, 402, 434, 885, 923, 396, 1749 397, 731, 398, 399, 500, 836, 611, 263, 256, 965, 1750 473, 861, 924, 46, 743, 95, 925, 140, 748, 844, 1751 710, 1078, 1129, 630, 46, 832, 46, 634, 158, 1374, 1752 113, 778, 837, 1137, 1171, 47, 46, 30, 30, 404, 1753 838, 843, 46, 835, 189, 46, 699, 212, 46, 847, 1754 222, 606, 30, 810, 120, 854, 215, 338, 108, 108, 1755 984, 1436, 108, 276, 941, 393, 47, 530, 394, 149, 1756 395, 1432, 671, 156, 401, 402, 923, 927, 150, 396, 1757 397, 1181, 398, 399, 833, 30, 46, 1169, 1170, 46, 1758 924, 419, 680, 1120, 925, 46, 198, 119, 403, 940, 1759 684, 151, 248, 405, 405, 1199, 60, 1177, 286, 598, 1760 -225, -225, 30, 477, 479, 277, 413, 1195, 405, 770, 1761 146, 1197, 147, 1447, 834, 148, 46, 1077, 158, 248, 1762 325, 67, 254, 1178, 46, 1432, 968, 60, 156, 46, 1763 199, 368, 478, 675, 677, 1436, 1394, 1395, 108, 483, 1764 1436, 405, 139, 875, 875, 875, 30, 108, 521, 832, 1765 54, 54, 67, 46, 46, 1187, 158, 1436, 507, 567, 1766 473, 875, 319, 108, 1436, -225, 160, 1066, 108, 46, 1767 530, 335, 530, 30, 138, 669, 774, 46, 1246, 158, 1768 473, 54, 141, 66, 208, 780, 46, 738, 473, 46, 1769 146, 437, 147, 568, 143, 148, 731, 753, 149, 1085, 1770 1396, 1327, 666, 667, 754, 1247, 1329, 150, 833, 747, 1771 845, 864, 603, 54, 66, 865, 54, 467, 1171, 46, 1772 424, 95, 836, 465, 428, 237, 240, 761, 53, 112, 1773 151, 160, 589, 46, 46, 875, 158, 852, 152, 603, 1774 46, 704, 832, 732, 821, 167, 1026, 46, 834, 837, 1775 372, 530, 695, 697, 319, 450, 611, 838, 518, 53, 1776 1013, 338, 741, -455, 1323, 847, 373, 1171, 1025, 104, 1777 104, 731, 47, 1508, 658, 1186, 1139, 1377, 674, 676, 1778 1002, 887, 1394, 1395, 666, 667, 428, 870, 530, 490, 1779 1517, 206, 814, -455, 216, -455, 46, 1521, 368, -455, 1780 104, 833, 673, 343, 173, 1457, 1509, 1201, 678, 523, 1781 381, 888, 156, 645, 74, 46, 46, 889, 550, 165, 1782 1169, 1170, 966, 551, 552, 875, 382, 429, 1192, 1078, 1783 1522, 1178, 46, 916, 441, 104, 46, 108, 436, 136, 1784 137, 834, 836, 60, 1119, 74, 1405, 866, 474, 478, 1785 177, 867, 598, 462, 257, 844, 588, 258, 455, 595, 1786 197, 108, 46, 136, 137, -281, 521, 54, 67, 837, 1787 521, 569, 46, 521, 368, 881, 848, 838, 628, 384, 1788 851, 598, 632, 1171, 459, 335, 598, 752, 861, 429, 1789 46, 108, 1187, 136, 234, 385, 46, 54, 46, -109, 1790 225, 868, 239, 386, 226, 871, 1381, 230, 578, 232, 1791 1421, 1422, 525, 36, 579, 160, 241, 39, 243, 387, 1792 -109, 338, 46, 246, 40, 41, 803, 235, -109, -109, 1793 66, 473, 236, -506, 169, 1077, 685, 1427, 110, 319, 1794 319, 248, 579, 755, -109, 435, 46, 756, 732, 829, 1795 762, 603, 1157, 1159, 46, 722, 368, -10, 46, 604, 1796 95, 723, 46, 886, 433, 1242, 208, 450, 1107, 500, 1797 450, 1088, 1121, 945, 1007, 53, 450, 249, 821, 1122, 1798 1135, 388, 260, 758, 393, 1066, 739, 394, 113, 395, 1799 553, 554, 740, 611, 401, 402, 1236, 389, 396, 397, 1800 775, 398, 399, 758, 899, 781, -431, 1026, 474, -432, 1801 705, 47, 1360, 490, 1093, 319, 104, 490, 485, 495, 1802 646, 496, 699, 732, 326, 502, 706, 523, 474, 557, 1803 558, 523, 707, 319, 523, 1358, 474, 1168, 1024, 1187, 1804 897, 225, 705, 707, 1184, 335, 1187, 1184, 708, 906, 1805 379, 749, 467, 1275, 1276, 94, 1312, 750, 919, 920, 1806 1185, 74, 46, 1303, 559, 560, 74, 1093, 821, 272, 1807 455, 411, 1313, 455, 46, 1367, 46, 343, 720, 455, 1808 729, 274, 60, 338, 876, 877, 94, 1314, 866, 580, 1809 1187, 405, 1103, 173, 431, 46, 208, 145, 319, 94, 1810 709, 895, 275, 1315, 439, 459, 163, 67, 1404, 819, 1811 631, 46, 595, 1321, 635, 185, 765, 366, 94, 704, 1812 1322, 94, 766, 766, 896, 46, 898, -102, 46, 1393, 1813 525, -102, 1401, 1029, 525, 969, 54, 525, 742, 1361, 1814 746, 860, 910, 874, 874, 874, 595, 327, 766, 1037, 1815 328, 1024, 869, 731, 108, 329, 136, 137, 338, 1463, 1816 330, 874, 46, 1346, 46, 331, 1463, 1347, 1482, 66, 1817 1082, 163, 522, 1435, 1487, 948, 367, 343, 1439, -109, 1818 225, -109, 230, 555, 556, -109, 1465, 571, 1466, 405, 1819 744, 1504, 944, 561, 562, 745, 1511, 572, 1044, 94, 1820 -109, -109, 1115, 1456, 583, 323, 405, 335, 46, 46, 1821 1505, 768, 94, 405, 53, 2, 202, 4, 5, 6, 1822 7, 769, 46, 371, 1234, 1104, 74, 912, 1238, 450, 1823 666, 667, 383, 766, 1506, 874, 392, 185, 695, 697, 1824 391, 343, 949, 821, 603, 436, 74, 248, 325, 405, 1825 992, 1004, 950, 1417, 74, 104, 993, 723, 1232, 490, 1826 94, 413, 662, 405, 579, 1005, 403, 430, 598, 225, 1827 1429, 420, 94, 34, 823, 35, 900, 1516, 405, 474, 1828 1349, 421, 335, 1516, 720, 729, 343, 343, 343, 923, 1829 882, 426, 1516, 1354, 766, 997, 1516, 323, 444, 766, 1830 74, 46, 94, 924, 343, 1161, 36, 925, 179, 180, 1831 39, 36, 457, 46, 1355, 39, 481, 40, 41, 682, 1832 766, 474, 40, 41, 1357, 874, 483, 325, 405, 430, 1833 766, 463, 455, 1480, 1429, -3, 903, 208, 405, 1006, 1834 1362, 464, 602, 819, 603, 460, 766, 42, 159, 108, 1835 935, 208, 604, 724, 486, 163, 938, 144, 506, 1182, 1836 729, 1064, 1418, 1437, 190, 1475, 1525, 213, 1415, 766, 1837 223, 1476, 579, 863, 791, 792, 793, 794, 343, 94, 1838 8, 9, 10, 11, 12, 108, 46, 136, 137, 878, 1839 522, 845, 325, 603, 522, 514, 1141, 522, 405, 605, 1840 46, 526, 600, 894, 1153, 732, 405, 30, 46, 2, 1841 202, 4, 5, 6, 7, 286, 1156, 720, 603, 530, 1842 36, 63, 114, 1158, 39, 603, 46, 720, 325, 405, 1843 33, 40, 41, 819, 1328, 1330, 1331, 450, 1220, 1108, 1844 405, 563, 720, 208, 931, 564, 931, 566, 159, 531, 1845 532, 533, 63, 1294, 1295, 185, 736, 1415, 1416, 1131, 1846 565, 369, 758, -428, 1131, 157, 737, 34, 343, 35, 1847 569, 571, 534, 405, 535, 343, 536, 490, 1110, 319, 1848 334, 572, 323, 323, 732, 587, 159, 217, 60, 126, 1849 590, 127, 128, 129, 1227, 1458, 1459, 74, 640, 969, 1850 502, 1394, 1395, 969, 969, 696, 787, 788, 823, 159, 1851 789, 790, 1131, 67, 659, 795, 796, 660, 661, 663, 1852 664, 438, 1064, 668, 255, 1196, 1198, 1200, 860, 646, 1853 665, 670, 253, 711, 688, 751, 1049, 713, -229, 74, 1854 455, 94, 54, 763, 767, 605, 771, 824, 1283, 1284, 1855 826, 1286, 828, 908, 839, 884, 1494, 1290, 323, 891, 1856 1293, -12, 915, 883, 211, 324, 917, 8, 9, 10, 1857 11, 12, 911, 255, 345, 66, 323, 913, 914, 918, 1858 691, 238, 46, 939, 8, 9, 10, 11, 12, -405, 1859 -510, 953, 960, 740, 30, 962, 967, 973, 974, 1093, 1860 977, 338, 978, 400, 979, 721, 976, 450, 819, 54, 1861 999, 30, 988, 1000, 1001, 211, 1319, 33, 418, 1015, 1862 53, 423, 425, 1016, 1017, 343, 157, 646, 369, 1018, 1863 1019, 1020, 1021, 436, 33, 1032, -393, -392, 1079, 720, 1864 720, 323, 1081, 1046, 1089, 1090, 474, 442, 1091, 1092, 1865 1097, 445, 1096, 446, 1099, 600, -282, 831, 211, 605, 1866 1098, 104, 461, 8, 9, 10, 11, 12, 63, 215, 1867 1100, 67, 1106, 475, 1116, 768, 766, 405, 46, 1064, 1868 343, 343, 1117, 482, 862, 769, 1118, 1109, 982, 600, 1869 30, 425, 1123, 1127, 1130, 720, 720, 1151, 1174, 1375, 1870 54, 1172, 1173, 1375, 369, 1175, 74, 1190, 1176, 1108, 1871 455, 1206, 1191, 33, 1400, 1131, 1131, 1131, 211, 36, 1872 1193, 170, 171, 39, 1049, 335, 1194, 1202, 104, 1207, 1873 40, 41, 36, 1189, 170, 171, 39, 1208, -3, 1213, 1874 1515, 1218, 729, 40, 41, 922, 1224, 696, 1110, 495, 1875 1228, 1233, 1235, 1237, 1240, -283, 211, 1413, 255, 1244, 1876 211, 596, 8, 9, 10, 11, 12, 624, 367, 1064, 1877 1248, 1253, 1251, 1255, 72, 1256, 1257, 1285, 53, 1258, 1878 629, 1259, 1261, 1268, 629, 393, 1277, 255, 394, 30, 1879 395, 831, 605, 1278, 401, 402, 1448, 1108, 1087, 396, 1880 397, 1302, 398, 399, 1310, 72, 60, 1288, 1289, 208, 1881 1291, 721, 33, 1316, 1292, 666, 667, 1299, 1318, 104, 1882 1320, 729, 1325, 1064, 1324, 1326, 1064, 1332, 1333, 1281, 1883 1334, 67, 1336, 475, 1342, 1308, 1110, 1343, 54, 54, 1884 218, 1344, 1345, 1356, 46, 46, 211, 1352, 345, 1353, 1885 1363, 1131, 1131, 475, 1493, 1295, 1366, 1368, 1369, 1371, 1886 54, 475, 1378, 1381, 74, 1388, 720, 1064, 1389, -394, 1887 1392, 1403, 1064, 1407, 720, 720, 720, 1409, 1414, 54, 1888 1423, 1419, 1424, 474, 831, 1449, 1428, 716, 1425, 1426, 1889 425, 1108, 1433, 66, 1438, 1442, 605, 1064, 1347, 1440, 1890 1444, 1446, -284, 436, 1453, 730, 1451, 63, 67, 8, 1891 9, 10, 11, 12, 1472, 425, 206, 216, 720, 425, 1892 146, 1452, 147, 343, 343, 148, 211, 348, 1474, 1464, 1893 1110, 1478, 54, 1479, 1486, 1498, 30, 54, 53, 1499, 1894 1495, 1518, 46, 1203, 721, 1500, 1503, 255, 345, 909, 1895 1510, 1064, 1512, 926, 721, 1524, 1064, 1109, 104, 33, 1896 797, 799, 1470, 46, 46, 798, 158, 54, 800, 721, 1897 1189, 1064, 1243, 1064, 801, 926, 211, 1064, 172, 104, 1898 1064, 1406, 1481, 696, 1301, 46, 1064, 368, 1526, 1365, 1899 1064, 696, 1470, 809, 1497, 1239, 1379, 1467, 104, 1212, 1900 443, 686, 687, 1094, 932, 1045, 1095, 1126, 890, 605, 1901 435, 629, 822, 955, 596, 53, 715, 319, 816, 1311, 1902 1105, 72, 323, 734, 74, 841, 72, 806, 172, 210, 1903 474, 172, 963, 807, 808, 0, 0, 474, 0, 0, 1904 343, 0, 0, 596, 0, 1109, 0, 0, 596, 0, 1905 0, 0, 0, 0, 629, 67, 104, 345, 345, 345, 1906 0, 54, 67, 0, 996, 1471, 36, 0, 179, 180, 1907 39, 862, 0, 0, 0, 345, 172, 40, 41, 0, 1908 210, 474, 998, 0, 54, 75, 104, 0, 0, 0, 1909 0, 54, 1003, 716, 0, 1471, 0, 211, 0, 0, 1910 0, 74, 181, 0, 475, 0, 67, 1014, 0, 255, 1911 730, 0, 182, 928, 0, 0, 75, 1189, 0, 0, 1912 218, 0, 1412, 210, 1189, 211, 0, 0, 0, 0, 1913 211, 0, 0, 0, 0, 54, 0, 0, 172, 1109, 1914 407, 0, 1039, 0, 0, 0, 475, 415, 0, 345, 1915 0, 219, 36, 0, 179, 180, 39, 0, 954, 0, 1916 0, 425, 53, 40, 41, 0, 721, 721, 1189, 53, 1917 0, 0, 0, 0, 0, 0, 0, 1364, 0, 0, 1918 104, 0, 0, 210, 255, 730, 72, 0, 261, 0, 1919 981, 0, 172, 36, 0, 170, 171, 39, 262, 172, 1920 0, 348, 0, 104, 40, 41, 72, 0, 0, 0, 1921 104, 0, 0, 53, 72, 0, 0, 211, 0, 407, 1922 0, 210, 721, 721, 0, 210, 716, 0, 0, 371, 1923 926, 211, 0, 0, 0, 0, 716, 0, 350, 345, 1924 348, 629, 0, 0, 1012, 629, 822, 0, 74, 0, 1925 0, 716, 0, 0, 104, 74, 0, 0, 348, 1138, 1926 72, 1023, 8, 9, 10, 11, 12, 172, 0, 0, 1927 0, 0, 0, 0, 577, 8, 9, 10, 11, 12, 1928 0, 0, 581, 0, 172, 584, 0, 0, 172, 30, 1929 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 1930 0, 348, 30, 0, 1166, 1167, 0, 0, 0, 1039, 1931 0, 210, 33, 63, 0, 0, 0, 36, 0, 179, 1932 180, 39, 0, 211, 1468, 33, 0, 0, 40, 41, 1933 36, 0, 75, 0, 39, 629, 0, 75, 0, 0, 1934 0, 40, 41, 0, 0, 0, 0, 407, 0, 0, 1935 172, 415, 0, 602, 1496, 603, 0, 0, 0, 0, 1936 1215, 1216, 1309, 604, 0, 348, 42, 0, 77, 0, 1937 0, 1102, 0, 0, 0, 0, 144, 0, 0, 425, 1938 114, 0, 926, 0, 0, 0, 0, 0, 0, 0, 1939 0, 210, 0, 721, 1523, 84, 345, 0, 0, 77, 1940 0, 721, 721, 721, 0, 0, 1528, 0, 0, 0, 1941 348, 348, 348, 0, 0, 0, 0, 0, 0, 511, 1942 0, 0, 0, 0, 0, 0, 84, 0, 348, 0, 1943 596, 219, 528, 529, 220, 0, 407, 0, 0, 926, 1944 926, 210, 0, 423, 549, 721, 348, 0, 716, 716, 1945 0, 345, 345, 0, 0, 0, 0, 72, 0, 0, 1946 0, 221, 0, 348, 0, 8, 9, 10, 11, 12, 1947 0, 1188, 2, 202, 4, 5, 6, 7, 0, 0, 1948 529, 0, 36, 0, 179, 180, 39, 0, 0, 0, 1949 0, 0, 30, 40, 41, 0, 0, 75, 0, 72, 1950 224, 0, 348, 0, 716, 716, 0, 0, 0, 0, 1951 629, 0, 350, 211, 172, 33, 529, 75, 690, 0, 1952 405, 351, 0, 0, 0, 75, 577, 577, 692, 0, 1953 34, 1335, 35, 0, 0, 0, 0, 0, 348, 1337, 1954 1338, 1339, 0, 0, 0, 0, 481, 172, 358, 0, 1955 0, 350, 0, 0, 0, 0, 949, 0, 603, 0, 1956 323, 0, 210, 172, 0, 0, 950, 730, 0, 350, 1957 36, 75, 179, 180, 39, 0, 0, 172, 0, 348, 1958 0, 40, 41, 1370, 0, 0, 209, 0, 0, 348, 1959 210, 0, 348, 0, 0, 210, 228, 218, 0, 348, 1960 0, 0, 0, 0, 348, 0, 1491, 0, 405, 0, 1961 1282, 0, 350, 0, 901, 77, 1492, 0, 904, 0, 1962 77, 36, 0, 179, 180, 39, 0, 255, 0, 0, 1963 0, 63, 40, 41, 0, 0, 0, 209, 0, 926, 1964 0, 0, 84, 0, 716, 0, 730, 84, 0, 0, 1965 114, 407, 0, 0, 0, 0, 926, 690, 0, 405, 1966 0, 0, 0, 0, 0, 691, 72, 692, 0, 0, 1967 0, 0, 0, 0, 172, 716, 350, 0, 0, 0, 1968 209, 0, 210, 716, 716, 716, 0, 0, 0, 211, 1969 784, 785, 786, 0, 345, 345, 210, 537, 538, 539, 1970 540, 541, 542, 543, 544, 545, 546, 0, 1188, 0, 1971 0, 0, 0, 0, 220, 0, 0, 0, 0, 926, 1972 926, 350, 350, 350, 0, 0, 0, 716, 0, 0, 1973 547, 0, 0, 529, 0, 0, 0, 0, 114, 350, 1974 209, 221, 0, 0, 0, 0, 0, 0, 0, 348, 1975 0, 0, 0, 0, 0, 0, 0, 350, 0, 8, 1976 9, 10, 11, 12, 577, 0, 0, 0, 75, 0, 1977 0, 0, 0, 0, 350, 0, 0, 0, 209, 0, 1978 77, 0, 209, 211, 0, 0, 30, 0, 210, 0, 1979 0, 0, 0, 0, 0, 351, 0, 0, 501, 0, 1980 77, 348, 348, 0, 348, 348, 0, 84, 77, 33, 1981 75, 345, 0, 350, 36, 0, 179, 180, 39, 0, 1982 0, 0, 358, 0, 72, 40, 41, 84, 0, 0, 1983 0, 0, 114, 0, 351, 84, 0, 0, 172, 0, 1984 0, 0, 0, 0, 0, 0, 0, 0, 0, 350, 1985 181, 0, 351, 0, 77, 1188, 0, 348, 348, 0, 1986 182, 358, 1188, 0, 0, 0, 529, 0, 209, 0, 1987 0, 0, 0, 0, 0, 0, 0, 407, 0, 358, 1988 0, 84, 0, 0, 0, 0, 0, 0, 0, 0, 1989 350, 0, 0, 0, 0, 351, 0, 0, 0, 0, 1990 350, 0, 0, 350, 0, 0, 1188, 0, 219, 0, 1991 350, 983, 0, 1513, 0, 350, 0, 0, 0, 0, 1992 348, 0, 358, 0, 469, 2, 202, 4, 5, 6, 1993 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 1994 17, 18, 19, 20, 21, 22, 23, 24, 209, 0, 1995 25, 26, 27, 0, 1142, 0, 0, 529, 30, 351, 1996 0, 0, 0, 218, 0, 209, 0, 0, 0, 0, 1997 1154, 0, 0, 0, 0, 0, 0, 75, 210, 0, 1998 0, 33, 0, 34, 72, 35, 358, 0, 37, 38, 1999 0, 0, 0, 0, 0, 0, 0, 348, 209, 348, 2000 0, 0, 0, 0, 351, 351, 351, 0, 0, 0, 2001 0, 0, 0, 0, 0, 0, 8, 9, 10, 11, 2002 12, 0, 351, 0, 0, 0, 0, -3, 348, 0, 2003 0, 358, 358, 358, 0, 0, 348, 348, 348, 0, 2004 351, 0, 0, 30, 0, 1221, 0, 348, 348, 358, 2005 0, 77, 0, 0, 0, 0, 0, 351, 0, 0, 2006 350, 72, 0, 164, 0, 168, 33, 358, 174, 175, 2007 176, 36, 178, 179, 180, 39, 0, 0, 84, 0, 2008 348, 0, 40, 41, 358, 0, 0, 229, 0, 0, 2009 0, 0, 0, 77, 0, 0, 351, 0, 0, 244, 2010 245, 0, 0, 0, 0, 0, 0, 690, 0, 405, 2011 0, 0, 350, 350, 0, 350, 350, 692, 0, 209, 2012 84, 0, 0, 358, 0, 0, 0, 0, 0, 0, 2013 172, 0, 351, 0, 0, 75, 0, 0, 0, 0, 2014 0, 0, 0, 0, 0, 0, 0, 209, 0, 529, 2015 0, 0, 209, 0, 210, 0, 0, 0, 0, 358, 2016 0, 0, 0, 0, 348, 0, 0, 0, 350, 350, 2017 0, 0, 0, 351, 0, 0, 0, 8, 9, 10, 2018 11, 12, 0, 351, 0, 0, 351, 0, 0, 0, 2019 511, 220, 0, 351, 0, 0, 0, 0, 351, 0, 2020 358, 0, 0, 0, 30, 0, 0, 0, 72, 0, 2021 358, 0, 0, 358, 0, 72, 0, 0, 221, 0, 2022 358, 0, 0, 0, 0, 358, 0, 33, 0, 0, 2023 0, 350, 36, 0, 179, 180, 39, 0, 0, 209, 2024 0, 0, 0, 40, 41, 0, 0, 0, 210, 0, 2025 0, 0, 0, 209, 0, 0, 0, 0, 0, 72, 2026 77, 8, 9, 10, 11, 12, 0, 0, 1491, 0, 2027 405, 0, 0, 501, 219, 0, 0, 0, 1492, 0, 2028 0, 0, 0, 0, 0, 0, 0, 84, 30, 0, 2029 0, 0, 0, 0, 0, 75, 172, 0, 0, 0, 2030 0, 0, 0, 529, 0, 0, 0, 0, 350, 0, 2031 350, 33, 0, 0, 0, 0, 36, 0, 179, 180, 2032 39, 0, 0, 0, 0, 0, 0, 40, 41, 0, 2033 0, 0, 123, 123, 123, 0, 0, 0, 0, 350, 2034 0, 0, 0, 351, 0, 209, 0, 350, 350, 350, 2035 0, 0, 261, 594, 601, 0, 0, 0, 350, 350, 2036 0, 0, 262, 0, 0, 625, 626, 0, 0, 0, 2037 358, 0, 75, 0, 0, 0, 0, 0, 0, 0, 2038 0, 0, 121, 124, 125, 0, 0, 0, 0, 0, 2039 0, 350, 0, 0, 162, 351, 351, 0, 351, 351, 2040 0, 0, 0, 123, 0, 123, 0, 8, 9, 10, 2041 11, 12, 0, 214, 0, 0, 0, 0, 77, 0, 2042 0, 0, 358, 358, 0, 358, 358, 0, 0, 271, 2043 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 2044 0, 0, 0, 0, 0, 84, 0, 0, 0, 0, 2045 0, 351, 351, 250, 0, 251, 0, 33, 0, 162, 2046 0, 0, 36, 0, 268, 0, 39, 0, 0, 0, 2047 0, 0, 0, 40, 41, 350, 0, 0, 358, 358, 2048 0, 0, 0, 0, 123, 0, 0, 0, 0, 0, 2049 0, 0, 123, 162, 123, 123, 0, 0, 736, 123, 2050 0, 123, 123, 364, 0, 0, 0, 370, 737, 0, 2051 0, 0, 0, 0, 351, 0, 0, 0, 0, 75, 2052 0, 0, 0, 0, 0, 278, 75, 279, 0, 0, 2053 0, 0, 0, 0, 390, 209, 0, 0, 0, 0, 2054 0, 358, 0, 0, 409, 410, 0, 0, 280, 414, 2055 0, 416, 417, 0, 281, 162, 0, 220, 282, 0, 2056 0, 283, 284, 285, 286, 40, 41, 214, 287, 288, 2057 75, 123, 0, 0, 0, 0, 289, 0, 77, 0, 2058 0, 0, 0, 0, 221, 162, 456, 0, 0, 0, 2059 290, 351, 374, 351, 0, 0, 0, 0, 0, 292, 2060 376, 294, 295, 296, 297, 84, 0, 0, 0, 370, 2061 0, 0, 0, 1204, 0, 0, 0, 162, 358, 0, 2062 358, 0, 351, 0, 0, 0, 0, 0, 0, 0, 2063 351, 351, 351, 0, 0, 0, 0, 0, 0, 0, 2064 456, 351, 351, 162, 0, 0, 0, 1022, 0, 358, 2065 8, 9, 10, 11, 12, 77, 0, 358, 358, 358, 2066 0, 0, 0, 0, 0, 0, 0, 0, 358, 358, 2067 0, 0, 0, 0, 351, 0, 278, 30, 279, 0, 2068 0, 0, 84, 0, 0, 0, 0, 0, 0, 0, 2069 599, 0, 0, 0, 0, 623, 0, 0, 0, 280, 2070 33, 358, 0, 0, 0, 281, 0, 0, 0, 282, 2071 0, 209, 283, 284, 285, 286, 40, 41, 0, 287, 2072 288, 0, 0, 0, 0, 0, 0, 289, 0, 0, 2073 942, 0, 943, 0, 0, 0, 0, 0, 0, 946, 2074 947, 290, 0, 374, 952, 0, 0, 0, 0, 0, 2075 292, 817, 294, 295, 296, 297, 957, 0, 351, 0, 2076 0, 961, 0, 0, 0, 0, 0, 0, 0, 0, 2077 162, 162, 0, 0, 0, 0, 0, 364, 0, 0, 2078 0, 0, 0, 0, 0, 358, 989, 0, 0, 0, 2079 0, 0, 0, 0, 0, 0, 0, 0, 456, 0, 2080 0, 456, 77, 0, 0, 209, 0, 456, 0, 77, 2081 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 2082 18, 19, 20, 21, 22, 23, 24, -285, 0, 84, 2083 594, 0, 0, 0, 733, 0, 84, 30, 0, 0, 2084 0, 0, 0, 0, 0, 0, 162, 0, 0, 0, 2085 0, 0, 0, 77, 0, 0, 0, 0, 456, 0, 2086 33, 0, 456, 0, 162, 456, 0, 0, 0, 0, 2087 0, -285, 0, 0, 0, 0, 0, 364, 0, 0, 2088 84, 0, 123, 123, 0, 0, 0, 1033, 1034, 1035, 2089 1036, 0, 1038, 0, 0, 0, 0, 0, 0, 0, 2090 0, 0, 0, 0, 0, 0, 0, 0, 1080, 0, 2091 0, 0, 123, 0, 0, 123, 123, 0, 123, 0, 2092 123, 123, 1086, 0, 0, 123, 123, 0, 0, 162, 2093 0, 0, 811, 812, 0, 0, 0, 0, 0, 0, 2094 0, 364, 0, 599, 0, 0, 827, 0, 0, 0, 2095 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2096 0, 1101, 846, 0, 0, 849, 850, 0, 853, 0, 2097 855, 856, 599, 0, 0, 857, 858, 599, 0, 0, 2098 0, 0, 0, 0, 0, 0, 364, 364, 364, 0, 2099 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2100 1128, 0, 0, 123, 364, 0, 0, 1136, 123, 123, 2101 0, 1140, 0, 0, 123, 0, 1144, 0, 1145, 0, 2102 0, 0, 1147, 1148, 1149, 0, 0, 1152, 0, 0, 2103 0, 0, 0, 0, 0, 0, 1164, 0, 0, 733, 2104 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2105 0, 0, 0, 0, 1179, 1180, 0, 0, 933, 934, 2106 456, 0, 0, 0, 936, 0, 0, 0, 0, 0, 2107 0, 0, 0, 0, 0, 0, 0, 0, 364, 1209, 2108 951, 0, 1211, 8, 9, 10, 11, 12, 13, 14, 2109 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2110 0, 0, 25, 26, 27, 0, 0, 207, 0, 0, 2111 30, 0, 0, 0, 733, 0, 0, 227, 0, 231, 2112 1226, 233, 0, 0, 0, 0, 1230, 1231, 242, 0, 2113 0, 0, 0, 33, 0, 0, 0, 1241, 0, 0, 2114 203, 38, 1245, 0, 0, 1249, 0, 1250, 0, 0, 2115 1252, 0, 0, 0, 0, 0, 0, 0, 207, 0, 2116 231, 233, 242, 1260, 0, 0, 0, 0, 364, 0, 2117 0, 0, 623, 0, 0, 364, 1267, 0, 1269, 1270, 2118 1271, 1272, 0, 0, 267, 0, 0, 0, 0, 0, 2119 0, 0, 0, 0, 1279, 0, 1280, 0, 0, 0, 2120 168, 207, 0, 0, 0, 0, 0, 0, 0, 0, 2121 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2122 0, 0, 0, 0, 0, 0, 0, 0, 1304, 1305, 2123 0, 0, 201, 2, 202, 4, 5, 6, 7, 8, 2124 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 2125 19, 20, 21, 22, 23, 24, 0, 0, 25, 26, 2126 27, 207, 0, 231, 233, 242, 30, 0, 456, 0, 2127 0, 0, 0, 0, 0, 153, 0, 0, 1340, 1341, 2128 0, 0, 0, 0, 0, 0, 0, 0, 1351, 33, 2129 0, 34, 0, 35, 36, 0, 203, 38, 39, 207, 2130 0, 0, 0, 207, 0, 40, 41, 0, 0, 0, 2131 162, 0, 0, 0, 0, 0, 0, 0, 0, 499, 2132 0, 247, 0, 0, 0, 364, 0, 0, 0, 0, 2133 42, 252, 204, 0, 0, 0, 1380, 0, 0, 0, 2134 205, 0, 0, 0, 0, 0, 0, 0, 1384, 0, 2135 1385, 1386, 1387, 0, 0, 0, 0, 0, 0, 599, 2136 0, 0, 1391, 0, 0, 0, 0, 0, 207, 0, 2137 0, 1402, 0, 0, 278, 0, 279, 0, 0, 0, 2138 364, 364, 0, 1410, 0, 0, 153, 0, 0, 207, 2139 0, 0, 123, 0, 231, 233, 0, 280, 0, 380, 2140 0, 0, 242, 281, 0, 0, 0, 282, 0, 0, 2141 283, 284, 285, 286, 40, 41, 0, 287, 288, 0, 2142 0, 0, 412, 0, 0, 289, 0, 0, 0, 0, 2143 0, 0, 0, 0, 1454, 1455, 427, 0, 456, 290, 2144 0, 374, 1217, 0, 207, 432, 772, 1460, 292, 376, 2145 294, 295, 296, 297, 1460, 440, 0, 0, 0, 0, 2146 0, 0, 207, 0, 0, 0, 0, 207, 0, 207, 2147 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2148 466, 0, 1490, 0, 0, 476, 207, 0, 0, 207, 2149 207, 0, 0, 0, 0, 0, 733, 0, 484, 0, 2150 0, 0, 0, 0, 494, 207, 498, 0, 0, 0, 2151 1514, 0, 0, 0, 123, 0, 0, 0, 0, 207, 2152 0, 0, 0, 527, 0, 0, 207, 0, 0, 0, 2153 0, 0, 0, 0, 0, 0, 1527, 0, 214, 0, 2154 0, 1529, 0, 0, 0, 0, 0, 0, 0, 0, 2155 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2156 0, 0, 0, 0, 1300, 0, 586, 0, 0, 0, 2157 0, 591, 0, 0, 0, 733, 0, 0, 0, 0, 2158 0, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2159 17, 18, 19, 20, 21, 22, 23, 24, 0, 637, 2160 25, 26, 27, 638, 639, 0, 641, 0, 30, 0, 2161 0, 0, 652, 653, 0, 654, 655, 0, 656, 0, 2162 657, 0, 1162, 364, 364, 8, 9, 10, 11, 12, 2163 0, 33, 214, 0, 0, 0, 0, 586, 203, 38, 2164 207, 0, 0, 0, 0, 672, 0, 0, 0, 0, 2165 0, 278, 30, 279, 0, 0, 0, 0, 0, 0, 2166 0, 0, 0, 0, 0, 0, 0, 0, 207, 0, 2167 683, 0, 0, 207, 280, 33, 0, 0, 0, 0, 2168 281, 689, 622, 0, 282, 0, 0, 283, 284, 285, 2169 286, 40, 41, 0, 287, 288, 0, 0, 0, 0, 2170 0, 0, 289, 0, 725, 0, 0, 0, 0, 0, 2171 728, 0, 0, 0, 0, 466, 290, 0, 374, 0, 2172 0, 0, 0, 0, 0, 292, 1163, 294, 295, 296, 2173 297, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2174 364, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2175 0, 764, 0, 0, 509, 510, 513, 0, 0, 0, 2176 207, 0, 0, 516, 517, 0, 0, 779, 510, 510, 2177 0, 0, 0, 0, 207, 0, 0, 0, 0, 0, 2178 510, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2179 0, 0, 0, 456, 499, 0, 0, 0, 0, 0, 2180 0, 0, 0, 805, 337, 359, 0, 0, 0, 0, 2181 0, 0, 815, 0, 0, 0, 510, 0, 0, 818, 2182 0, 0, 0, 456, 825, 0, 0, 0, 0, 0, 2183 0, 0, 0, 0, 0, 840, 0, 408, 0, 0, 2184 0, 0, 0, 0, 408, 0, 0, 0, 162, 0, 2185 0, 0, 510, 207, 0, 0, 0, 0, 0, 0, 2186 0, 0, 0, 0, 0, 0, 207, 0, 0, 0, 2187 0, 0, 0, 0, 0, 0, 880, 0, 0, 0, 2188 0, 0, 0, -505, 0, 207, 1, 2, 3, 4, 2189 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 2190 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2191 0, 825, 25, 26, 27, 28, 408, 0, 29, 0, 2192 30, 31, 0, 0, 0, 0, 0, 0, 0, 0, 2193 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2194 32, 0, 0, 33, 0, 34, 0, 35, 36, 0, 2195 37, 38, 39, 0, 0, 0, 0, 0, 0, 40, 2196 41, 0, 0, 0, 0, 0, 247, 0, 0, 0, 2197 0, 408, 207, 0, 0, 0, 958, 959, 0, 408, 2198 582, 0, 408, 585, 42, 0, 43, 0, 0, 975, 2199 0, 0, 359, 0, 44, 0, 615, 0, 207, 0, 2200 0, 0, 0, 0, 0, 0, 990, 0, 991, 0, 2201 0, 0, 995, 0, 0, 633, 0, 0, 337, 0, 2202 0, 0, 0, 0, 0, 207, 510, 510, 510, 510, 2203 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 2204 510, 510, 510, 510, 408, 0, 0, 0, 408, 278, 2205 0, 279, 0, 0, 0, 0, 207, 0, 0, 0, 2206 0, 0, 0, 0, 0, 0, 0, 207, 0, 510, 2207 0, 0, 280, 0, 0, 0, 0, 1027, 642, 359, 2208 136, 137, 282, 0, 1028, 283, 643, 285, 286, 40, 2209 41, 0, 287, 288, 0, 0, 0, 1030, 0, 1031, 2210 289, 0, 408, 0, 0, 0, 0, 0, 0, 0, 2211 0, 0, 0, 1043, 290, 0, 644, 0, 645, 375, 2212 1047, 0, 0, 292, 376, 294, 295, 296, 297, 0, 2213 0, 0, 1083, 408, 0, 1084, 359, 0, 0, 0, 2214 0, 0, 0, 0, 0, 0, 207, 0, 0, 0, 2215 0, 0, 0, 591, 0, 0, 0, 0, 0, 0, 2216 0, 0, 0, 0, 0, 0, 0, 510, 0, 0, 2217 0, 0, 0, 0, 0, 408, 0, 0, 337, 359, 2218 0, 0, 0, 0, 0, 0, 0, 0, 0, 510, 2219 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2220 317, 0, 510, 0, 0, 0, 0, 0, 0, 0, 2221 341, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2222 0, 0, 377, 408, 408, 0, 0, 0, 0, 0, 2223 0, 0, 207, 0, 0, 0, 0, 0, 0, 0, 2224 1146, 0, 820, 359, 0, 359, 0, 510, 0, 0, 2225 0, 0, 0, 0, 615, 0, 615, 615, 0, 0, 2226 0, 0, 0, 615, 0, 0, 0, 0, 0, 0, 2227 0, 0, 0, 859, 359, 0, 0, 0, 510, 359, 2228 0, 0, 0, 0, 0, 0, 0, 0, 359, 359, 2229 359, 0, 317, 510, 0, 527, 0, 0, 0, 0, 2230 0, 1210, 0, 0, 0, 0, 359, 0, 0, 0, 2231 0, 408, 902, 0, 0, 408, 905, 480, 0, 0, 2232 0, 0, 907, 0, 0, 0, 207, 0, 0, 0, 2233 1223, 0, 0, 0, 0, 1225, 0, 0, 0, 0, 2234 337, 359, 408, 1229, 408, 0, 0, 0, 408, 201, 2235 2, 202, 4, 5, 6, 7, 8, 9, 10, 11, 2236 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 2237 22, 23, 24, 1254, 0, 25, 26, 27, 0, 0, 2238 359, 615, 0, 30, 0, 1262, 0, 0, 1263, 0, 2239 1264, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2240 0, 0, 0, 0, 1273, 1274, 33, 0, 34, 0, 2241 35, 0, 0, 203, 38, 337, 359, 0, 0, 0, 2242 408, 408, 0, 0, 0, 0, 1287, 0, 0, 0, 2243 0, 0, 377, 0, 0, 0, 0, 0, 0, 0, 2244 0, 0, 0, 0, 510, 0, 0, 0, 0, 204, 2245 0, 0, 1306, 0, 0, 0, 0, 267, 0, 0, 2246 0, 408, 0, 0, 0, 0, 0, 0, 0, 0, 2247 359, 0, 0, 510, 0, 0, 820, 359, 0, 0, 2248 0, 615, 0, 615, 0, 510, 0, 0, 0, 0, 2249 0, 0, 0, 615, 0, 0, 0, 8, 9, 10, 2250 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 2251 21, 22, 23, 24, -285, 0, 25, 26, 27, 0, 2252 0, 0, 0, 0, 30, 0, 510, 0, 0, 0, 2253 0, 0, 0, 727, 0, 0, 0, 0, 0, 0, 2254 0, 0, 0, 0, 1372, 0, 1373, 33, 0, 0, 2255 0, 0, 36, 0, 332, 333, 39, 207, -285, 1382, 2256 0, 1383, 0, 40, 41, 0, 820, 0, 0, 0, 2257 0, 760, 0, 0, 408, 0, 0, 0, 0, 1390, 2258 408, 0, 0, 0, 773, 0, 0, 0, 408, 0, 2259 334, 760, 0, 0, 0, 1408, 510, 0, 109, 0, 2260 0, 615, 615, 1411, 782, 783, 1229, 0, 8, 9, 2261 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2262 20, 21, 22, 23, 24, -286, 804, 359, 1434, 0, 2263 0, 0, 0, 408, 0, 30, 813, 1441, 0, 510, 2264 1443, 1445, 0, 341, 0, 0, 0, 0, 773, 0, 2265 0, 408, 1143, 510, 510, 0, 0, 0, 33, 0, 2266 0, 359, 0, 0, 0, 0, 0, 408, 1155, -286, 2267 615, 615, 1160, 0, 0, 0, 0, 1473, 0, 1229, 2108 2268 0, 0, 359, 359, 0, 0, 0, 0, 0, 0, 2109 54, 208, 0, 0, 0, 0, 232, 234, 352, 0, 2110 123, 123, 0, 0, 243, 0, 352, 352, 352, 0, 2111 0, 0, 0, 0, 0, 0, 0, 352, 352, 0, 2112 0, 602, 0, 0, 0, 0, 626, 0, 0, 0, 2113 123, 77, 0, 123, 123, 279, 123, 280, 123, 123, 2114 0, 0, 0, 123, 123, 359, 0, 208, 0, 0, 2115 0, 0, 0, 0, 352, 0, 0, 0, 0, 0, 2116 0, 0, 0, 281, 0, 208, 0, 0, 0, 282, 2117 208, 0, 208, 283, 0, 0, 284, 285, 286, 287, 2118 40, 41, 0, 288, 289, 0, 0, 0, 222, 208, 2119 0, 290, 208, 208, 0, 0, 0, 0, 0, 0, 2120 0, 0, 162, 162, 0, 0, 510, 0, 208, 365, 2121 84, 0, 0, 0, 0, 293, 377, 295, 296, 297, 2122 298, 123, 208, 359, 0, 359, 123, 123, 0, 208, 2123 458, 0, 123, 458, 0, 0, 0, 0, 0, 458, 2124 0, 0, 352, 0, 0, 0, 0, 0, 0, 0, 2125 0, 0, 0, 0, 359, 0, 0, 0, 0, 0, 2126 0, 0, 359, 359, 359, 0, 736, 0, 0, 0, 2127 0, 0, 0, 359, 359, 0, 0, 0, 162, 0, 2128 0, 0, 815, 816, 0, 0, 153, 84, 0, 0, 2129 458, 77, 0, 0, 458, 0, 162, 458, 77, 0, 2130 0, 0, 0, 0, 0, 0, 0, 0, 0, 365, 2131 359, 0, 850, 0, 0, 853, 854, 0, 857, 0, 2132 859, 860, 0, 0, 0, 861, 862, 0, 0, 0, 2133 0, 0, 248, 0, 0, 0, 0, 0, 0, 0, 2134 0, 0, 253, 0, 208, 0, 0, 0, 0, 0, 2135 0, 77, 0, 0, 0, 0, 0, 0, 0, 0, 2136 0, 0, 162, 0, 0, 0, 0, 0, 0, 0, 2137 0, 0, 208, 0, 365, 0, 602, 208, 0, 831, 2269 0, 0, 0, 0, 1485, 0, 0, 0, 879, 0, 2270 0, 0, 0, 0, 0, 0, 377, 2, 202, 4, 2271 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 2272 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2273 0, 0, 25, 26, 27, 0, 0, 0, 0, 0, 2274 30, 820, 408, 1222, 0, 0, 341, 0, 0, 0, 2275 0, 0, 0, 0, 615, 0, 0, 0, 0, 0, 2276 0, 0, 0, 33, 0, 34, 0, 35, 0, 0, 2277 203, 38, 0, 1, 2, 3, 4, 5, 6, 7, 2138 2278 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 2139 18, 19, 20, 21, 22, 23, 24, 153, 359, 25, 2140 26, 27, 0, 0, 0, 602, 0, 30, 937, 938, 2141 602, 382, 0, 0, 940, 0, 0, 0, 0, 365, 2142 365, 365, 0, 0, 0, 0, 0, 0, 0, 0, 2143 0, 0, 0, 0, 414, 33, 0, 365, 0, 0, 2144 36, 0, 37, 38, 39, 0, 0, 84, 429, 0, 2145 0, 40, 41, 0, 84, 0, 0, 434, 0, 0, 2146 0, 0, 0, 0, 208, 0, 0, 442, 0, 0, 2147 0, 0, 736, 0, 0, 0, 0, 42, 208, 154, 2148 0, 279, 0, 280, 0, 0, 0, 44, 0, 0, 2149 0, 0, 468, 458, 0, 0, 0, 478, 501, 0, 2150 0, 0, 0, 0, 0, 0, 0, 84, 0, 281, 2151 486, 365, 0, 955, 0, 282, 496, 0, 500, 283, 2152 0, 0, 284, 285, 286, 287, 40, 41, 0, 288, 2153 289, 0, 0, 0, 0, 529, 0, 290, 0, 0, 2154 0, 0, 0, 0, 0, 0, 0, 736, 0, 0, 2155 0, 0, 291, 0, 375, 0, 0, 376, 208, 0, 2156 0, 293, 377, 295, 296, 297, 298, 0, 0, 0, 2157 0, 208, 0, 0, 0, 0, 0, 0, 589, 0, 2158 0, 0, 0, 594, 0, 0, 0, 0, 0, 0, 2159 208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2160 0, 0, 365, 0, 0, 0, 626, 0, 0, 365, 2161 0, 640, 0, 0, 123, 641, 642, 0, 644, 0, 2162 0, 0, 0, 0, 0, 655, 656, 0, 657, 658, 2163 0, 659, 0, 660, 0, 0, 0, 0, 0, 0, 2164 0, 1027, 0, 0, 8, 9, 10, 11, 12, 0, 2165 589, 0, 0, 0, 0, 0, 0, 0, 675, 0, 2279 18, 19, 20, 21, 22, 23, 24, 0, 359, 25, 2280 26, 27, 28, 0, 0, 29, 266, 30, 31, 0, 2281 0, 0, 0, 0, 622, 0, 0, 0, 0, 0, 2282 0, 773, 0, 980, 0, 0, 0, 32, 0, 985, 2283 33, 0, 34, 0, 35, 36, 994, 37, 38, 39, 2284 0, 0, 0, 0, 0, 0, 40, 41, 0, 0, 2285 0, 0, 0, 510, 0, 0, 0, 0, 337, 0, 2166 2286 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2167 279, 30, 280, 0, 0, 0, 0, 208, 0, 0, 2168 0, 0, 0, 686, 0, 0, 0, 0, 0, 0, 2169 0, 0, 0, 0, 692, 0, 0, 0, 281, 33, 2170 0, 0, 458, 208, 282, 0, 0, 0, 283, 0, 2171 0, 284, 285, 286, 287, 40, 41, 728, 288, 289, 2172 0, 0, 0, 731, 0, 0, 290, 0, 468, 0, 2173 208, 0, 0, 0, 0, 0, 0, 123, 0, 0, 2174 0, 291, 0, 375, 162, 0, 0, 0, 0, 0, 2175 293, 821, 295, 296, 297, 298, 0, 0, 0, 365, 2176 0, 0, 208, 0, 767, 0, 0, 0, 0, 0, 2177 0, 0, 0, 208, 0, 0, 0, 0, 0, 0, 2178 782, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2179 0, 0, 0, 0, 602, 0, 1225, 0, 0, 1169, 2180 0, 0, 8, 9, 10, 11, 12, 0, 0, 0, 2181 0, 0, 0, 0, 0, 365, 365, 809, 0, 0, 2182 0, 0, 0, 0, 0, 318, 819, 0, 279, 30, 2183 280, 0, 0, 822, 0, 342, 0, 0, 829, 0, 2184 0, 0, 0, 0, 0, 0, 0, 378, 378, 844, 2185 0, 0, 0, 0, 208, 0, 281, 33, 0, 0, 2186 0, 0, 282, 0, 0, 0, 283, 0, 0, 284, 2187 285, 286, 287, 40, 41, 458, 288, 289, 0, 0, 2188 0, 0, 0, 0, 290, 0, 0, 0, 0, 0, 2189 884, 0, 0, 0, 0, 0, 0, 0, 0, 291, 2190 0, 375, 0, 0, 0, 0, 0, 0, 293, 1170, 2191 295, 296, 297, 298, 0, 0, 0, 0, 318, 1312, 2192 0, 0, 0, 0, 0, 829, 0, 338, 360, 0, 2193 0, 0, 0, 736, 0, 0, 0, 0, 0, 0, 2194 208, 0, 0, 482, 8, 9, 10, 11, 12, 13, 2195 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 2196 24, 410, 0, 25, 26, 27, 0, 0, 410, 0, 2197 0, 30, 0, 0, 0, 215, 0, 0, 0, 0, 2198 248, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2199 962, 963, 0, 0, 0, 0, 0, 0, 0, 33, 2200 0, 0, 0, 979, 36, 0, 37, 38, 39, 0, 2201 0, 0, 0, 736, 0, 40, 41, 0, 0, 0, 2202 994, 0, 995, 0, 0, 0, 999, 0, 0, 0, 2203 0, 0, 0, 0, 0, 208, 0, 0, 0, 0, 2204 410, 42, 0, 43, 0, 0, 0, 0, 0, 0, 2205 0, 44, 0, 0, 0, 0, 0, 0, 378, 0, 2206 0, 365, 365, 0, 0, 0, 0, 0, 0, 0, 2207 215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2208 0, 279, 0, 280, 0, 0, 0, 0, 0, 0, 2209 0, 0, 1032, 0, 0, 410, 0, 0, 0, 1033, 2210 0, 0, 0, 410, 585, 0, 410, 588, 0, 281, 2211 0, 0, 1035, 0, 1036, 645, 360, 136, 137, 283, 2212 618, 0, 284, 646, 286, 287, 40, 41, 1048, 288, 2213 289, 0, 0, 0, 0, 1052, 0, 290, 0, 636, 2214 0, 0, 338, 0, 0, 0, 0, 1090, 0, 0, 2215 1091, 0, 291, 0, 647, 0, 648, 376, 0, 0, 2216 730, 293, 377, 295, 296, 297, 298, 0, 594, 410, 2217 0, 0, 0, 410, 0, 0, 0, 0, 0, 0, 2218 0, 0, 0, 0, 0, 0, 365, 0, 0, 0, 2219 0, 0, 0, 0, 0, 0, 0, 0, 763, 0, 2220 0, 0, 0, 0, 360, 0, 0, 0, 0, 0, 2221 0, 776, 0, 0, 0, 0, 0, 0, 763, 0, 2222 0, 763, 0, 0, 0, 0, 0, 410, 0, 0, 2223 0, 0, 786, 787, 0, 0, 0, 0, 0, 0, 2224 0, 0, 0, 0, 458, 0, 458, 0, 0, 0, 2225 0, 0, 0, 0, 808, 0, 1153, 0, 410, 0, 2226 0, 360, 0, 0, 817, 0, 0, 0, 0, 0, 2227 0, 342, 0, 0, 0, 0, 776, 0, 0, 0, 2228 0, 458, 0, 458, 0, 0, 0, 0, 0, 0, 2229 0, 208, 0, 0, 0, 0, 0, 0, 0, 0, 2230 410, 0, 0, 338, 360, 0, 0, 0, 0, 0, 2231 0, 162, 529, 0, 0, 0, 0, 0, 0, 1218, 2232 0, 0, 0, 0, 0, 0, 883, 0, 0, 0, 2233 0, 0, 0, 0, 378, 0, 0, 0, 0, 0, 2234 0, 0, 0, 0, 0, 0, 0, 0, 1231, 410, 2235 410, 0, 0, 1233, 0, 0, 0, 0, 0, 0, 2236 0, 1237, 0, 0, 0, 0, 0, 0, 824, 360, 2237 0, 360, 0, 0, 342, 0, 0, 0, 0, 0, 2238 618, 0, 618, 618, 0, 0, 0, 0, 0, 618, 2239 0, 1262, 0, 0, 0, 0, 0, 0, 0, 863, 2240 360, 0, 0, 1270, 0, 360, 1271, 0, 1272, 0, 2241 0, 0, 0, 0, 360, 360, 360, 0, 0, 0, 2242 0, 0, 1281, 1282, 0, 0, 0, 0, 0, 0, 2243 0, 0, 360, 0, 0, 0, 0, 410, 906, 0, 2244 0, 410, 909, 0, 1295, 0, 0, 0, 911, 776, 2245 0, 984, 0, 0, 0, 0, 0, 989, 0, 0, 2246 0, 0, 0, 0, 998, 0, 338, 360, 410, 0, 2247 410, 1318, 0, 0, 410, 0, 8, 9, 10, 11, 2287 510, 42, 0, 43, 0, 0, 0, 359, 0, 1010, 2288 1011, 44, 341, 0, 0, 0, 0, 0, 0, 0, 2289 0, 0, 0, 0, 0, 0, 0, 341, 0, 0, 2290 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 2291 18, 19, 20, 21, 22, 23, 24, 0, 0, 0, 2292 0, 0, 0, 0, 0, 359, 359, 30, 0, 0, 2293 0, 0, 0, 510, 510, 0, 0, 1041, 0, 0, 2294 0, 377, 0, 0, 0, 0, 0, 0, 0, 0, 2295 33, 0, 0, 0, 1, 2, 202, 4, 5, 6, 2296 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2297 17, 18, 19, 20, 21, 22, 23, 24, 0, 0, 2298 25, 26, 27, 28, 0, 0, 29, 278, 30, 1050, 2299 1051, 0, 1052, 0, 0, 1053, 1054, 1055, 1056, 1057, 2300 1058, 1059, 1060, 0, 1061, 0, 0, 1062, 32, 0, 2301 280, 33, 0, 34, 0, 35, 642, 317, 37, 38, 2302 282, 0, 0, 283, 284, 285, 286, 40, 41, 0, 2303 287, 288, 1124, 1125, 0, 0, 0, 0, 289, 377, 2304 0, 0, 359, 0, 0, 985, 0, 0, 1134, 0, 2305 760, 0, 290, 0, 1063, 0, 278, 167, 279, 0, 2306 0, 292, 293, 294, 295, 296, 297, 0, 0, 1150, 2307 0, 0, 0, 0, 0, -126, 0, 0, 0, 280, 2308 1165, 0, 0, 0, 0, 281, 0, 0, 0, 282, 2309 0, 0, 283, 284, 285, 286, 40, 41, 0, 287, 2310 288, 0, 377, 0, 1183, 0, 0, 289, 0, 0, 2311 0, 0, 0, 0, 0, 0, 0, 0, 0, 1205, 2312 0, 290, 408, 374, 0, 0, 375, 0, 0, 0, 2313 292, 376, 294, 295, 296, 297, 0, 278, 1214, 279, 2314 1051, 0, 1052, 408, 408, 1053, 1054, 1055, 1056, 1057, 2315 1058, 1059, 1060, 0, 1061, 0, 0, 1062, 32, 0, 2316 280, 0, 0, 0, 0, 408, 642, 0, 0, 0, 2317 282, 0, 0, 283, 284, 285, 286, 40, 41, 0, 2318 287, 288, 0, 0, 985, 0, 0, 0, 289, 0, 2319 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2320 0, 0, 290, 879, 374, 0, 0, 167, 0, 0, 2321 0, 292, 376, 294, 295, 296, 297, 0, 1265, 1266, 2322 0, 0, 1, 2, 202, 4, 5, 6, 7, 8, 2323 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 2324 19, 20, 21, 22, 23, 24, 0, 0, 25, 26, 2325 27, 28, 0, 0, 29, 278, 30, 279, 0, 0, 2326 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2327 0, 0, 0, 0, 0, 0, 0, 0, 280, 33, 2328 0, 34, 0, 35, 281, 0, 37, 38, 282, 0, 2329 0, 283, 284, 285, 286, 40, 41, 985, 287, 288, 2330 0, 0, 0, 0, 0, 0, 289, 0, 0, 0, 2331 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2332 290, 0, 1063, 0, 0, 0, 0, 0, 0, 292, 2333 293, 294, 295, 296, 297, 0, 0, 0, 0, 0, 2334 0, 0, 0, -126, 1, 2, 202, 4, 5, 6, 2335 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2336 17, 18, 19, 20, 21, 22, 23, 24, 0, 0, 2337 25, 26, 27, 28, 0, 0, 29, 278, 30, 279, 2338 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2339 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2340 280, 33, 0, 34, 0, 35, 281, 0, 37, 38, 2341 282, 0, 0, 283, 284, 285, 286, 40, 41, 0, 2342 287, 288, 0, 0, 0, 0, 0, 0, 289, 0, 2343 0, 0, 0, 0, 0, 0, 0, 0, 1420, 0, 2344 0, 0, 290, 0, 43, 0, 0, 0, 0, 0, 2345 0, 292, 293, 294, 295, 296, 297, 2, 202, 4, 2346 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 2347 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2348 0, 0, 25, 26, 27, 0, 0, 0, 0, 278, 2349 30, 279, 0, 0, 0, 0, 0, 0, 0, 0, 2350 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2351 1477, 0, 280, 33, 0, 34, 0, 35, 281, 0, 2352 37, 38, 282, 0, 0, 283, 284, 285, 286, 40, 2353 41, 0, 287, 288, 0, 0, 0, 0, 0, 0, 2354 289, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2355 0, 0, 0, 0, 290, 317, 339, 0, 0, 0, 2356 0, 772, 0, 292, 340, 294, 295, 296, 297, 2, 2357 202, 4, 5, 6, 7, 8, 9, 10, 11, 12, 2358 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2359 23, 24, 0, 0, 25, 26, 27, 0, 0, 0, 2360 0, 278, 30, 279, 0, 0, 0, 0, 0, 0, 2361 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2362 0, 0, 0, 0, 280, 33, 0, 34, 0, 35, 2363 281, 0, 37, 38, 282, 0, 0, 283, 284, 285, 2364 286, 40, 41, 0, 287, 288, 0, 0, 0, 0, 2365 0, 0, 289, 0, 0, 0, 0, 0, 0, 0, 2366 0, 0, 0, 0, 0, 0, 290, 0, 921, 0, 2367 0, 0, 0, 772, 0, 292, 340, 294, 295, 296, 2368 297, 2, 202, 4, 5, 6, 7, 8, 9, 10, 2369 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 2370 21, 22, 23, 24, 0, 0, 25, 26, 27, 0, 2371 0, 0, 0, 278, 30, 279, 0, 0, 0, 0, 2372 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2373 0, 0, 0, 0, 0, 0, 280, 33, 0, 34, 2374 0, 35, 281, 0, 37, 38, 282, 0, 0, 283, 2375 284, 285, 286, 40, 41, 0, 287, 288, 0, 0, 2376 0, 0, 0, 0, 289, 0, 0, 0, 0, 0, 2377 0, 0, 0, 0, 0, 0, 0, 0, 290, 0, 2378 921, 0, 0, 0, 0, 772, 0, 292, 593, 294, 2379 295, 296, 297, 2, 202, 4, 5, 6, 7, 8, 2380 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 2381 19, 20, 21, 22, 23, 24, 0, 0, 25, 26, 2382 27, 0, 0, 0, 0, 278, 30, 279, 0, 0, 2383 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2384 0, 0, 0, 0, 0, 0, 0, 0, 280, 33, 2385 0, 34, 0, 35, 281, 0, 37, 38, 282, 0, 2386 0, 283, 284, 285, 286, 40, 41, 0, 287, 288, 2387 0, 0, 0, 0, 0, 0, 289, 0, 0, 0, 2388 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2389 290, 0, 339, 0, 0, 0, 0, 0, 0, 292, 2390 340, 294, 295, 296, 297, 2, 202, 4, 5, 6, 2391 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2392 17, 18, 19, 20, 21, 22, 23, 24, 0, 0, 2393 25, 26, 27, 0, 0, 0, 0, 278, 30, 279, 2394 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2395 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2396 280, 33, 0, 34, 0, 35, 281, 0, 37, 38, 2397 282, 0, 0, 283, 284, 285, 286, 40, 41, 0, 2398 287, 288, 0, 0, 0, 0, 0, 0, 289, 0, 2399 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2400 0, 0, 290, 0, 921, 0, 0, 0, 0, 0, 2401 0, 292, 340, 294, 295, 296, 297, 2, 202, 4, 2402 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 2403 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2404 0, 0, 25, 26, 27, 0, 0, 0, 0, 278, 2405 30, 279, 0, 0, 0, 0, 0, 0, 0, 0, 2406 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2407 0, 0, 280, 33, 0, 34, 0, 35, 281, 0, 2408 203, 38, 282, 0, 0, 283, 284, 285, 286, 40, 2409 41, 0, 287, 288, 0, 0, 0, 0, 0, 0, 2410 289, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2411 0, 0, 0, 0, 290, 0, 1008, 0, 0, 0, 2412 0, 0, 0, 292, 1009, 294, 295, 296, 297, 2, 2413 202, 4, 5, 6, 7, 8, 9, 10, 11, 12, 2414 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2415 23, 24, 0, 0, 25, 26, 27, 0, 0, 0, 2416 0, 278, 30, 279, 0, 0, 0, 0, 0, 0, 2417 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2418 0, 0, 0, 0, 280, 33, 0, 34, 0, 35, 2419 281, 0, 203, 38, 282, 0, 0, 283, 284, 285, 2420 286, 40, 41, 0, 287, 288, 0, 0, 0, 0, 2421 0, 0, 289, 0, 0, 0, 0, 0, 0, 0, 2422 0, 0, 0, 0, 0, 0, 290, 0, 374, 0, 2423 0, 0, 0, 0, 0, 292, 376, 294, 295, 296, 2424 297, 1, 2, 3, 4, 5, 6, 7, 8, 9, 2425 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2426 20, 21, 22, 23, 24, 0, 0, 25, 26, 27, 2427 28, 0, 0, 29, 0, 30, 31, 0, 0, 0, 2428 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2429 0, 0, 0, 0, 0, 32, 0, 0, 33, 0, 2430 34, 0, 35, 36, 0, 37, 38, 39, 0, 0, 2431 0, 0, 0, 0, 40, 41, 0, 0, 0, 0, 2432 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2433 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 2434 0, 43, 0, 0, 0, -509, 0, 0, 0, 44, 2435 1, 2, 202, 4, 5, 6, 7, 8, 9, 10, 2436 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 2437 21, 22, 23, 24, -285, 0, 25, 26, 27, 28, 2438 0, 0, 29, 0, 30, 0, 0, 0, 0, 0, 2439 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2440 0, 0, 0, 0, 0, 0, 0, 33, 0, 34, 2441 0, 35, 0, 0, 37, 38, 0, 0, -285, 1, 2442 2, 202, 4, 5, 6, 7, 8, 9, 10, 11, 2443 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 2444 22, 23, 24, 0, 0, 25, 26, 27, 28, 0, 2445 43, 29, 0, 30, 0, 0, 0, 0, 109, 0, 2446 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2447 0, 0, 0, 0, 0, 0, 33, 0, 34, 0, 2448 35, 0, 0, 37, 38, 2, 202, 4, 5, 6, 2449 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2450 17, 18, 19, 20, 21, 22, 23, 24, 0, 0, 2451 25, 26, 27, 0, 0, 0, 0, 0, 30, 43, 2452 0, 0, 0, 0, 0, 0, 0, 109, 0, 0, 2453 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2454 0, 33, 0, 34, 0, 35, 36, 0, 203, 38, 2455 39, 0, 0, 0, 0, 0, 0, 40, 41, 0, 2456 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2457 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2458 0, 0, 42, 0, 204, 0, 0, 0, 0, 0, 2459 0, 0, 205, 2, 202, 4, 5, 6, 7, 8, 2460 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 2461 19, 20, 21, 22, 23, 24, 0, 0, 25, 26, 2462 27, 0, 0, 0, 0, 0, 30, 0, 0, 0, 2463 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2464 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 2465 0, 34, 0, 35, 0, 0, 37, 38, 0, 0, 2466 2, 202, 4, 5, 6, 7, 8, 9, 10, 11, 2248 2467 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 2249 2468 22, 23, 24, 0, 0, 25, 26, 27, 0, 0, 2250 0, 0, 0, 30, 450, 0, 360, 618, 1015, 1016, 2251 0, 342, 0, 0, 0, 0, 0, 0, 0, 0, 2252 0, 0, 0, 0, 0, 0, 342, 0, 0, 0, 2253 0, 33, 0, 0, 0, 0, 0, 0, 37, 38, 2254 0, 338, 360, 0, 0, 0, 410, 410, 0, 0, 2469 0, -390, 679, 30, 0, 0, 0, 0, 0, 0, 2470 627, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2471 0, 0, 0, 0, 0, 0, 33, 0, 34, 0, 2472 35, 0, 0, 37, 38, 0, 0, 0, 0, 0, 2255 2473 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2256 0, 0, 0, 0, 0, 0, 1046, 1388, 0, 1389, 2257 378, 0, 0, 0, 0, 451, 0, 0, 0, 706, 2258 0, 0, 1398, 109, 1399, 0, 0, 0, 410, 0, 2259 0, 0, 0, 0, 0, 0, 0, 360, 0, 0, 2260 0, 0, 1406, 824, 360, 0, 0, 0, 618, 0, 2261 618, 0, 0, 0, 511, 512, 515, 0, 1424, 1426, 2262 618, 0, 0, 518, 519, 0, 0, 0, 512, 512, 2263 1432, 0, 0, 1237, 0, 0, 0, 0, 0, 0, 2264 512, 0, 0, 0, 0, 0, 318, 0, 0, 0, 2265 0, 0, 0, 0, 0, 1455, 0, 0, 0, 0, 2266 0, 1131, 1132, 0, 1462, 0, 0, 1464, 378, 1466, 2267 1468, 1470, 0, 0, 989, 0, 512, 1141, 0, 763, 2474 0, 0, 0, 0, 0, 1348, 0, 0, 0, 0, 2475 0, 0, 0, 0, 0, 0, 0, 0, 0, 679, 2476 0, 0, 0, 0, 0, 0, 0, 627, 2, 202, 2477 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 2478 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 2479 24, 0, 0, 25, 26, 27, 0, 0, 0, 0, 2480 0, 30, 8, 9, 10, 11, 12, 13, 14, 15, 2481 16, 17, 18, 19, 20, 21, 22, 23, 24, 0, 2482 0, 25, 26, 27, 33, 0, 34, 0, 35, 30, 2483 0, 37, 38, 0, 0, 0, 0, 0, 0, 0, 2268 2484 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2269 0, 0, 0, 824, 0, 0, 0, 0, 0, 1157, 2270 0, 410, 0, 0, 0, 0, 0, 410, 0, 0, 2271 1172, 1501, 512, 1503, 0, 410, 1237, 0, 0, 0, 2272 0, 0, 0, 0, 0, 0, 0, 0, 618, 618, 2273 0, 1515, 378, 0, 1190, 0, 0, 0, 0, 0, 2274 0, 0, 0, 0, 0, 0, 0, 0, 0, 989, 2275 989, 0, 0, 0, 360, 0, 0, 0, 0, 0, 2276 410, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2277 1222, 0, 0, 0, 0, 0, 0, 0, 0, 410, 2278 1150, 279, 0, 280, 0, 0, 0, 0, 0, 360, 2279 0, 0, 0, 0, 0, 410, 1162, 0, 618, 618, 2280 1167, 0, 0, 0, 0, 0, 0, 0, 0, 281, 2281 360, 360, 0, 0, 0, 282, 989, 0, 0, 283, 2282 0, 0, 284, 285, 286, 287, 40, 41, 0, 288, 2283 289, 0, 0, 0, 0, 883, 0, 290, 0, 0, 2284 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2285 1273, 1274, 291, 0, 375, 0, 0, 0, 0, 0, 2286 806, 293, 377, 295, 296, 297, 298, 0, 0, 0, 2287 0, 824, 410, 1230, 0, 0, 0, 0, 0, 0, 2288 0, 0, 0, 0, 618, 0, 0, 0, 512, 512, 2289 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 2290 512, 512, 512, 512, 512, 512, 0, 0, 0, 0, 2291 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2292 0, 0, 0, 0, 0, 0, 0, 0, 360, 0, 2293 989, 512, -514, 0, 0, 1, 2, 3, 4, 5, 2294 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 2295 16, 17, 18, 19, 20, 21, 22, 23, 24, 0, 2296 0, 25, 26, 27, 28, 0, 0, 29, 0, 30, 2297 31, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2298 17, 18, 19, 20, 21, 22, 23, 24, 338, 0, 2299 0, 1381, 0, 763, 32, 0, 0, 33, 30, 34, 2300 0, 35, 36, 0, 37, 38, 39, 0, 360, 0, 2301 0, 0, 0, 40, 41, 0, 0, 0, 0, 0, 2302 0, 0, 0, 0, 0, 0, 33, 0, 0, 512, 2303 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 2304 0, 43, 0, 0, 0, 0, 0, 0, 0, 44, 2305 0, 512, 0, 0, 0, 0, 360, 360, 0, 0, 2306 0, 0, 0, 0, 512, 0, 0, 0, 0, 0, 2307 0, 0, 0, 0, 0, 0, 0, 0, 0, 1441, 2308 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2309 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2310 0, 0, 0, 0, 0, 0, 0, 0, 0, 512, 2311 0, 0, 0, 0, 0, 0, 1, 2, 203, 4, 2312 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 2313 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2314 0, 512, 25, 26, 27, 28, 0, 0, 29, 279, 2315 30, 280, 0, 0, 0, 0, 512, 0, 0, 0, 2316 0, 1507, 0, 0, 0, 0, 0, 0, 0, 0, 2317 0, 0, 0, 0, 0, 0, 0, 281, 33, 0, 2318 34, 360, 35, 282, 0, 37, 38, 283, 0, 0, 2319 284, 285, 286, 287, 40, 41, 0, 288, 289, 0, 2320 0, 0, 0, 0, 0, 290, 0, 0, 0, 0, 2321 0, 0, 0, 318, 0, 0, 0, 0, 0, 0, 2322 291, 0, 1069, 0, 0, 0, 0, 0, 0, 293, 2323 294, 295, 296, 297, 298, 0, 0, 0, 0, 0, 2324 0, 0, 0, -127, 0, 0, 0, 0, 0, 0, 2325 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2326 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2327 0, 410, 471, 2, 203, 4, 5, 6, 7, 8, 2328 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 2329 19, 20, 21, 22, 23, 24, 410, 410, 25, 26, 2330 27, 0, 0, 0, 0, 0, 30, 512, 0, 0, 2331 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2332 0, 410, 0, 0, 0, 0, 0, 0, 0, 0, 2333 0, 0, 0, 0, 33, 0, 34, 512, 35, 0, 2334 0, 37, 38, 0, 0, 0, 0, 0, 0, 512, 2335 1, 2, 203, 4, 5, 6, 7, 8, 9, 10, 2336 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 2337 21, 22, 23, 24, 0, 0, 25, 26, 27, 28, 2338 0, -3, 29, 279, 30, 1055, 1056, 0, 1057, 0, 2339 512, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 0, 2340 0, 0, 1066, 0, 0, 0, 1067, 1068, 0, 32, 2341 0, 281, 33, 0, 34, 0, 35, 645, 0, 37, 2342 38, 283, 0, 0, 284, 285, 286, 287, 40, 41, 2343 0, 288, 289, 0, 0, 0, 0, 0, 0, 290, 2344 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2345 0, 0, 0, 0, 291, 0, 1069, 0, 0, 168, 2346 0, 0, 512, 293, 294, 295, 296, 297, 298, 0, 2347 0, 0, 0, 1070, 0, 0, 0, -127, 0, 0, 2348 1, 2, 203, 4, 5, 6, 7, 8, 9, 10, 2349 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 2350 21, 22, 23, 24, 0, 512, 25, 26, 27, 28, 2351 0, 0, 29, 279, 30, 280, 0, 0, 0, 512, 2352 512, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2353 17, 18, 19, 20, 21, 22, 23, 24, -292, 0, 2354 0, 281, 33, 0, 34, 0, 35, 282, 30, 37, 2355 38, 283, 0, 0, 284, 285, 286, 287, 40, 41, 2356 0, 288, 289, 0, 0, 0, 0, 0, 0, 290, 2357 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 2358 0, 0, 0, 0, 291, 0, 43, -292, 0, 0, 2359 0, 0, 0, 293, 294, 295, 296, 297, 298, 2, 2360 203, 4, 5, 6, 7, 8, 9, 10, 11, 12, 2361 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2362 23, 24, 0, 0, 25, 26, 27, 0, 0, 0, 2363 0, 279, 30, 280, 8, 9, 10, 11, 12, 13, 2364 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 2365 24, -292, 0, 25, 26, 27, 0, 0, 0, 281, 2366 33, 30, 34, 0, 35, 282, 0, 37, 38, 283, 2367 0, 0, 284, 285, 286, 287, 40, 41, 0, 288, 2368 289, 0, 0, 0, 0, 0, 0, 290, 0, 33, 2369 0, 0, 0, 0, 36, 0, 333, 334, 39, 0, 2370 -292, 0, 291, 0, 340, 40, 41, 0, 0, 775, 2371 0, 293, 341, 295, 296, 297, 298, 0, 0, 0, 2372 0, 0, 0, 0, 0, 0, 0, 0, 512, 0, 2373 0, 639, 0, 335, 0, 0, 0, 0, 0, 0, 2374 0, 630, 0, 0, 0, 512, 0, 2, 203, 4, 2375 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 2376 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2377 0, 0, 25, 26, 27, 0, 0, 0, 0, 279, 2378 30, 280, 8, 9, 10, 11, 12, 13, 14, 15, 2379 16, 17, 18, 19, 20, 21, 22, 23, 24, 0, 2380 0, 25, 26, 27, 0, 0, 0, 281, 33, 30, 2381 34, 0, 35, 282, 0, 37, 38, 283, 512, 512, 2382 284, 285, 286, 287, 40, 41, 0, 288, 289, 0, 2383 0, 0, 0, 0, 0, 290, 0, 33, 0, 0, 2384 0, 0, 0, 0, 204, 38, 0, 0, 0, 0, 2385 291, 0, 925, 0, 0, 0, 0, 775, 0, 293, 2386 341, 295, 296, 297, 298, 2, 203, 4, 5, 6, 2387 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2388 17, 18, 19, 20, 21, 22, 23, 24, 0, 268, 2389 25, 26, 27, 0, 0, 0, 0, 279, 30, 280, 2390 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 2391 18, 19, 20, 21, 22, 23, 24, 0, 0, 25, 2392 26, 27, 0, 0, 0, 281, 33, 30, 34, 0, 2393 35, 282, 0, 37, 38, 283, 0, 0, 284, 285, 2394 286, 287, 40, 41, 0, 288, 289, 0, 0, 0, 2395 0, 0, 0, 290, 0, 33, 0, 0, 0, 0, 2396 0, 0, 204, 38, 0, 0, 0, 0, 291, 0, 2397 925, 0, 0, 0, 0, 775, 0, 293, 596, 295, 2398 296, 297, 298, 2, 203, 4, 5, 6, 7, 8, 2399 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 2400 19, 20, 21, 22, 23, 24, 0, 625, 25, 26, 2401 27, 0, 0, 0, 0, 279, 30, 280, 8, 9, 2402 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2403 20, 21, 22, 23, 24, -293, 0, 0, 0, 0, 2404 0, 0, 0, 281, 33, 30, 34, 0, 35, 282, 2405 0, 37, 38, 283, 0, 0, 284, 285, 286, 287, 2406 40, 41, 0, 288, 289, 0, 0, 0, 0, 0, 2407 0, 290, 0, 33, 0, 0, 0, 0, 0, 0, 2408 0, 0, 0, 0, -293, 0, 291, 0, 340, 0, 2409 0, 0, 0, 0, 0, 293, 341, 295, 296, 297, 2410 298, 2, 203, 4, 5, 6, 7, 8, 9, 10, 2411 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 2412 21, 22, 23, 24, 0, 0, 25, 26, 27, 0, 2413 0, 0, 0, 279, 30, 280, 8, 9, 10, 11, 2414 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 2415 22, 23, 24, 0, 0, 25, 26, 27, 489, 490, 2416 491, 281, 33, 30, 34, 0, 35, 282, 0, 37, 2417 38, 283, 0, 0, 284, 285, 286, 287, 40, 41, 2418 0, 288, 289, 0, 0, 0, 0, 0, 0, 290, 2419 0, 33, 0, 0, 0, 0, 0, 0, 37, 38, 2420 0, 0, 0, 0, 291, 0, 925, 0, 0, 0, 2421 0, 0, 0, 293, 341, 295, 296, 297, 298, 2, 2422 203, 4, 5, 6, 7, 8, 9, 10, 11, 12, 2423 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2424 23, 24, 0, 0, 25, 26, 27, 0, 0, 0, 2425 0, 279, 30, 280, 8, 9, 10, 11, 12, 13, 2426 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 2427 24, 0, 0, 25, 26, 27, 0, 0, 0, 281, 2428 33, 30, 34, 0, 35, 282, 0, 204, 38, 283, 2429 0, 0, 284, 285, 286, 287, 40, 41, 0, 288, 2430 289, 0, 0, 0, 0, 0, 0, 290, 0, 33, 2431 0, 0, 0, 0, 108, 0, 37, 38, 0, 0, 2432 0, 0, 291, 0, 1013, 0, 0, 0, 0, 0, 2433 0, 293, 1014, 295, 296, 297, 298, 2, 203, 4, 2434 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 2435 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2436 0, 0, 25, 26, 27, 0, 0, 0, 0, 279, 2437 30, 280, 8, 9, 10, 11, 12, 13, 14, 15, 2438 16, 17, 18, 19, 20, 21, 22, 23, 24, 0, 2439 0, 25, 26, 27, 0, 0, 0, 281, 33, 30, 2440 34, 0, 35, 282, 0, 204, 38, 283, 0, 0, 2441 284, 285, 286, 287, 40, 41, 0, 288, 289, 0, 2442 0, 0, 0, 0, 0, 290, 0, 33, 0, 0, 2443 0, 0, 0, 0, 37, 38, 0, 0, 0, 0, 2444 291, 0, 375, 0, 0, 0, 0, 0, 0, 293, 2445 377, 295, 296, 297, 298, 1, 2, 3, 4, 5, 2446 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 2447 16, 17, 18, 19, 20, 21, 22, 23, 24, 0, 2448 0, 25, 26, 27, 28, 0, 0, 29, 0, 30, 2449 31, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2450 17, 18, 19, 20, 21, 22, 23, 24, 0, 0, 2451 25, 26, 27, 0, 32, 0, 0, 33, 30, 34, 2452 0, 35, 36, 0, 37, 38, 39, 0, 0, 0, 2453 0, 0, 0, 40, 41, 0, 0, 0, 0, 0, 2454 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 2455 0, 0, 0, 204, 38, 0, 0, 0, 0, 42, 2456 0, 43, 0, 0, 0, -518, 0, 0, 0, 44, 2457 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 2458 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 2459 21, 22, 23, 24, 0, 0, 25, 26, 27, 28, 2460 0, 0, 29, 0, 30, 31, 0, 0, 0, 0, 2461 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2462 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 2463 0, 0, 33, 0, 34, 0, 35, 36, 0, 37, 2464 38, 39, 0, 0, 0, 0, 0, 0, 40, 41, 2465 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2466 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2467 0, 0, 0, 0, 42, 0, 43, 0, 0, 0, 2468 0, 0, 0, 0, 44, 202, 2, 203, 4, 5, 2485 0, 0, 33, 1350, 0, 0, 0, 108, 0, 37, 2486 38, 0, 0, 0, 0, 0, 0, 679, 0, 0, 2487 0, 0, 0, 0, 0, 627, 2, 202, 4, 5, 2469 2488 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 2470 2489 16, 17, 18, 19, 20, 21, 22, 23, 24, 0, … … 2472 2491 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2473 2492 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2493 0, 0, 33, 0, 34, 0, 35, 0, 0, 37, 2494 38, 2, 202, 4, 5, 6, 7, 8, 9, 10, 2495 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 2496 21, 22, 23, 24, 0, 0, 25, 26, 27, 0, 2497 0, 0, 0, 0, 30, 679, 0, 0, 0, 0, 2498 0, 0, 0, 627, 0, 0, 0, 0, 0, 0, 2474 2499 0, 0, 0, 0, 0, 0, 0, 33, 0, 34, 2475 0, 35, 36, 0, 204, 38, 39, 0, 0, 0, 2476 0, 0, 0, 40, 41, 0, 0, 0, 0, 0, 2500 0, 35, 0, 0, 37, 38, 2, 202, 4, 5, 2501 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 2502 16, 17, 18, 19, 20, 21, 22, 23, 24, 0, 2503 0, 25, 26, 27, 0, 0, 0, 0, 0, 30, 2504 592, 0, 0, 0, 0, 0, 0, 0, 627, 0, 2477 2505 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2478 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 2479 0, 205, 0, 0, 0, 0, 0, 0, 0, 206, 2480 1, 2, 203, 4, 5, 6, 7, 8, 9, 10, 2506 0, 0, 33, 0, 34, 0, 35, 0, 0, 203, 2507 38, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2508 17, 18, 19, 20, 21, 22, 23, 24, 0, 0, 2509 25, 26, 27, 0, 0, 0, 0, 278, 30, 279, 2510 0, 0, 0, 0, 0, 204, 0, 0, 0, 0, 2511 0, 0, 0, 267, 0, 0, 0, 0, 0, 0, 2512 280, 33, 0, 0, 0, 0, 281, 0, 37, 38, 2513 282, 0, 0, 283, 284, 285, 286, 40, 41, 0, 2514 287, 288, 0, 0, 0, 0, 0, 0, 289, 0, 2515 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2516 0, 0, 290, 0, 519, 0, 0, 167, 0, 0, 2517 0, 292, 293, 294, 295, 296, 297, 8, 9, 10, 2481 2518 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 2482 21, 22, 23, 24, -292, 0, 25, 26, 27, 28, 2483 0, 0, 29, 0, 30, 0, 0, 0, 0, 0, 2519 21, 22, 23, 24, 0, 0, 25, 26, 27, 0, 2520 0, 0, 0, 278, 30, 279, 0, 0, 0, 0, 2521 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2522 0, 0, 0, 0, 0, 0, 280, 33, 0, 0, 2523 0, 0, 281, 0, 37, 38, 282, 0, 0, 283, 2524 284, 285, 286, 40, 41, 0, 287, 288, 0, 0, 2525 0, 0, 0, 0, 289, 0, 0, 0, 0, 0, 2526 0, 0, 0, 0, 0, 0, 0, 0, 290, 0, 2527 592, -3, 0, 0, 0, 0, 0, 292, 593, 294, 2528 295, 296, 297, 8, 9, 10, 11, 12, 13, 14, 2529 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2530 0, 0, 25, 26, 27, 0, 0, 0, 0, 278, 2531 30, 279, 0, 0, 0, 0, 0, 0, 0, 0, 2532 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2533 0, 0, 280, 33, 0, 0, 0, 0, 642, 0, 2534 37, 38, 282, 0, 0, 283, 284, 285, 286, 40, 2535 41, 0, 287, 288, 0, 0, 0, 0, 0, 0, 2536 289, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2537 0, 0, 0, 0, 290, -33, 757, 0, 0, 0, 2538 0, 0, 0, 292, 293, 294, 295, 296, 297, 8, 2539 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 2540 19, 20, 21, 22, 23, 24, 0, 0, 25, 26, 2541 27, 0, 0, 0, 0, 278, 30, 279, 0, 0, 2542 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2543 0, 0, 0, 0, 0, 0, 0, 0, 280, 33, 2544 0, 0, 0, 0, 281, 0, 37, 38, 282, 0, 2545 0, 283, 284, 285, 286, 40, 41, 0, 287, 288, 2546 0, 0, 0, 0, 0, 0, 289, 0, 0, 0, 2547 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2548 290, 0, 291, 0, 0, 0, 0, 0, 0, 292, 2549 293, 294, 295, 296, 297, 8, 9, 10, 11, 12, 2550 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2551 23, 24, 0, 0, 25, 26, 27, 0, 0, 0, 2552 0, 278, 30, 279, 0, 0, 0, 0, 0, 0, 2553 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2554 0, 0, 0, 0, 280, 33, 0, 0, 0, 0, 2555 281, 0, 37, 38, 282, 0, 0, 283, 284, 285, 2556 286, 40, 41, 0, 287, 288, 0, 0, 0, 0, 2557 0, 0, 289, 0, 0, 0, 0, 0, 0, 0, 2558 0, 0, 0, 0, 0, 0, 290, 0, 154, 0, 2559 0, 0, 0, 0, 0, 292, 293, 294, 295, 296, 2560 297, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2561 17, 18, 19, 20, 21, 22, 23, 24, 0, 0, 2562 25, 26, 27, 0, 0, 0, 0, 278, 30, 279, 2484 2563 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2485 2564 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2486 0, 0, 33, 0, 34, 0, 35, 0, 0, 37, 2487 38, 0, 0, -292, 0, 1, 2, 203, 4, 5, 2488 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 2489 16, 17, 18, 19, 20, 21, 22, 23, 24, 0, 2490 0, 25, 26, 27, 28, 0, 43, 29, 0, 30, 2565 280, 33, 0, 0, 0, 0, 281, 0, 37, 38, 2566 282, 0, 0, 283, 284, 285, 286, 40, 41, 0, 2567 287, 288, 0, 0, 0, 0, 0, 0, 289, 0, 2568 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2569 0, 0, 290, 0, 592, 0, 0, 0, 0, 0, 2570 0, 292, 593, 294, 295, 296, 297, 8, 9, 10, 2571 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 2572 21, 22, 23, 24, 0, 0, 25, 26, 27, 0, 2573 0, 0, 0, 278, 30, 279, 0, 0, 0, 0, 2574 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2575 0, 0, 0, 0, 0, 0, 280, 33, 0, 0, 2576 0, 0, 281, 0, 37, 38, 282, 0, 0, 283, 2577 284, 285, 286, 40, 41, 0, 287, 288, 0, 0, 2578 0, 0, 0, 0, 289, 0, 0, 0, 0, 0, 2579 0, 0, 0, 0, 0, 0, 0, 0, 290, 0, 2580 374, 0, 0, 0, 0, 0, 0, 292, 376, 294, 2581 295, 296, 297, 8, 9, 10, 11, 12, 13, 14, 2582 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2583 -285, 0, 25, 26, 27, 0, 0, 0, 0, 0, 2584 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2585 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2586 0, 0, 0, 33, 0, 0, 0, 0, 36, 0, 2587 332, 333, 39, 0, -285, 0, 0, 0, 0, 40, 2588 41, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2589 17, 18, 19, 20, 21, 22, 23, 24, 0, 0, 2590 25, 26, 27, 0, 636, 0, 334, 0, 30, 0, 2591 0, 0, 0, 0, 627, 0, 0, 0, 0, 0, 2592 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2593 0, 33, 0, 0, 0, 0, 36, 0, 37, 38, 2594 39, 0, 0, 0, 0, 0, 0, 40, 41, 8, 2595 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 2596 19, 20, 21, 22, 23, 24, 0, 0, 25, 26, 2597 27, 0, 42, 0, 154, 0, 30, 0, 0, 0, 2598 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 2599 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 2600 0, 0, 0, 0, 36, 0, 37, 38, 39, 0, 2601 0, 0, 0, 0, 0, 40, 41, 8, 9, 10, 2602 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 2603 21, 22, 23, 24, 0, 0, 25, 26, 27, 0, 2604 42, 0, 43, 0, 30, 0, 0, 0, 0, 0, 2605 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2606 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 2607 0, 0, 36, 0, 203, 38, 39, 0, 0, 0, 2608 0, 0, 0, 40, 41, 8, 9, 10, 11, 12, 2609 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2610 23, 24, 0, 0, 25, 26, 27, 0, 42, 0, 2611 266, 0, 30, 0, 0, 0, 0, 0, 205, 0, 2612 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2613 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 2614 36, 0, 332, 333, 39, 0, 0, 0, 0, 0, 2615 0, 40, 41, 8, 9, 10, 11, 12, 13, 14, 2616 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2617 0, 0, 25, 26, 27, 0, 636, 0, 334, 0, 2618 30, 0, 0, 0, 0, 0, 627, 0, 0, 0, 2619 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2620 0, 0, 0, 33, 0, 0, 0, 0, 36, 0, 2621 332, 333, 39, 0, 0, 0, 0, 0, 0, 40, 2622 41, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2623 17, 18, 19, 20, 21, 22, 23, 24, -285, 0, 2624 25, 26, 27, 0, 0, 0, 334, 0, 30, 0, 2491 2625 0, 0, 0, 0, 109, 0, 0, 0, 0, 0, 2492 2626 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2493 0, 0, 0, 0, 0, 0, 0, 33, 0, 34, 2494 0, 35, 0, 0, 37, 38, 202, 2, 203, 4, 2495 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 2627 0, 33, 0, 0, 0, 0, 0, 0, 37, 38, 2628 0, 0, -285, 8, 9, 10, 11, 12, 13, 14, 2629 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2630 -285, 0, 25, 26, 27, 0, 0, 0, 0, 0, 2631 30, 0, 636, 0, 334, 0, 0, 0, 0, 0, 2632 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, 2633 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 2634 37, 38, 0, 0, -285, 8, 9, 10, 11, 12, 2635 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2636 23, 24, 0, 0, 25, 26, 27, 0, 0, 0, 2637 0, 0, 30, 448, 636, 0, 334, 0, 0, 0, 2638 0, 0, 0, 0, 627, 0, 0, 0, 0, 0, 2639 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 2640 0, 0, 37, 38, 8, 9, 10, 11, 12, 13, 2641 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 2642 24, 0, 0, 25, 26, 27, 0, 0, 0, 0, 2643 0, 30, 448, 0, 0, 0, 0, 0, 449, 0, 2644 0, 0, 703, 0, 0, 0, 109, 0, 0, 0, 2645 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 2646 0, 37, 38, 8, 9, 10, 11, 12, 13, 14, 2647 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2648 -285, 0, 25, 26, 27, 0, 0, 0, 0, 0, 2649 30, 0, 0, 0, 0, 0, 0, 449, 0, 0, 2650 0, 937, 0, 0, 0, 109, 0, 0, 0, 0, 2651 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 2652 37, 38, 0, 0, -285, 8, 9, 10, 11, 12, 2653 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2654 23, 24, 0, 0, 25, 26, 27, 0, 0, 0, 2655 0, 0, 30, 448, 0, 0, 334, 0, 0, 0, 2656 0, 0, 0, 0, 109, 0, 0, 0, 0, 0, 2657 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 2658 0, 0, 37, 38, 8, 9, 10, 11, 12, 13, 2659 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 2660 24, 0, 0, 25, 26, 27, 0, 0, 0, 0, 2661 0, 30, 0, 0, 0, 0, 0, 0, 449, 0, 2662 0, 0, 1219, 0, 0, 0, 109, 0, 0, 0, 2663 0, 0, 0, 0, 33, 0, 0, 0, 0, 108, 2664 0, 37, 38, 8, 9, 10, 11, 12, 13, 14, 2496 2665 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2497 2666 0, 0, 25, 26, 27, 0, 0, 0, 0, 0, 2498 30, 43, 0, 0, 0, 0, 0, 0, 0, 109, 2499 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2500 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 2501 34, 0, 35, 0, 0, 204, 38, 2, 203, 4, 2502 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 2503 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2504 0, 0, 25, 26, 27, 0, 0, 0, 0, 0, 2505 30, 0, 205, 0, 0, 0, 0, 0, 0, 0, 2506 268, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2507 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 2508 34, 0, 35, 36, 0, 204, 38, 39, 0, 0, 2509 0, 0, 0, 0, 40, 41, 0, 0, 0, 0, 2510 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2511 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2512 42, 0, 205, 0, 0, 0, 0, 0, 0, 0, 2513 206, 2, 203, 4, 5, 6, 7, 8, 9, 10, 2667 30, 448, 0, 0, 0, 0, 0, 43, 0, 0, 2668 0, 0, 0, 0, 0, 109, 0, 0, 0, 0, 2669 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 2670 37, 38, 8, 9, 10, 11, 12, 13, 14, 15, 2671 16, 17, 18, 19, 20, 21, 22, 23, 24, 0, 2672 0, 25, 26, 27, 0, 0, 0, 0, 0, 30, 2673 0, 0, 0, 0, 0, 0, 449, 0, 0, 0, 2674 0, 0, 0, 0, 109, 0, 0, 0, 0, 0, 2675 0, 0, 33, 0, 0, 0, 0, 0, 0, 37, 2676 38, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2677 17, 18, 19, 20, 21, 22, 23, 24, 0, 0, 2678 25, 26, 27, 0, 0, 0, 0, 0, 30, 0, 2679 0, 0, 0, 636, 0, 334, 0, 0, 0, 0, 2680 0, 0, 0, 109, 0, 0, 0, 0, 0, 0, 2681 0, 33, 0, 0, 0, 0, 0, 0, 37, 38, 2682 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 2683 18, 19, 20, 21, 22, 23, 24, 0, 0, 25, 2684 26, 27, 0, 0, 0, 0, 0, 30, 0, 0, 2685 0, 0, 636, 0, 334, 0, 0, 0, 0, 0, 2686 0, 0, 627, 0, 0, 0, 0, 0, 0, 0, 2687 33, 0, 0, 0, 0, 0, 0, 37, 38, 8, 2688 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 2689 19, 20, 21, 22, 23, 24, 0, 0, 25, 26, 2690 27, 0, 0, 0, 0, 0, 30, 0, 0, 0, 2691 0, 0, 0, 253, 0, 0, 0, 0, 0, 0, 2692 0, 109, 0, 0, 0, 0, 0, 0, 0, 33, 2693 0, 0, 0, 0, 0, 0, 37, 38, 8, 9, 2694 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2695 20, 21, 22, 23, 24, 0, 0, 25, 26, 27, 2696 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 2697 0, 0, 154, 0, 0, 0, 0, 0, 0, 0, 2698 109, 0, 0, 0, 0, 0, 0, 0, 33, 0, 2699 0, 0, 0, 0, 0, 203, 38, 8, 9, 10, 2514 2700 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 2515 2701 21, 22, 23, 24, 0, 0, 25, 26, 27, 0, 2516 2702 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 2517 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2518 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2519 0, 0, 33, 0, 34, 0, 35, 0, 0, 37, 2520 38, 2, 203, 4, 5, 6, 7, 8, 9, 10, 2521 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 2522 21, 22, 23, 24, 0, 0, 25, 26, 27, 0, 2523 0, 0, 0, 0, 30, -397, 682, 0, 0, 0, 2524 0, 0, 0, 0, 630, 0, 0, 0, 0, 0, 2525 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2526 0, 0, 33, 0, 34, 0, 35, 0, 0, 37, 2527 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2528 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2529 0, 1360, 0, 0, 0, 0, 0, 0, 0, 0, 2530 0, 0, 0, 0, 0, 0, 682, 0, 0, 0, 2531 0, 0, 0, 0, 630, 2, 203, 4, 5, 6, 2532 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2703 0, 266, 0, 0, 0, 0, 0, 0, 0, 267, 2704 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 2705 0, 0, 0, 0, 37, 38, 8, 9, 10, 11, 2706 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 2707 22, 23, 24, 0, 0, 25, 26, 27, 0, 0, 2708 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 2709 253, 0, 0, 0, 0, 0, 0, 0, 627, 0, 2710 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 2711 0, 0, 0, 37, 38, 8, 9, 10, 11, 12, 2712 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2713 23, 24, 0, 0, 25, 26, 27, 0, 0, 0, 2714 0, 0, 30, 0, 0, 0, 0, 0, 0, 334, 2715 0, 0, 0, 0, 0, 0, 0, 627, 0, 0, 2716 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 2717 0, 0, 37, 38, 8, 9, 10, 11, 12, 13, 2718 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 2719 24, 0, 0, 25, 26, 27, 0, 0, 0, 0, 2720 0, 30, 0, 0, 0, 0, 0, 0, 449, 0, 2721 0, 0, 0, 0, 0, 0, 109, 0, 0, 0, 2722 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 2723 0, 203, 38, 8, 9, 10, 11, 12, 13, 14, 2724 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2725 0, 0, 25, 26, 27, 0, 0, 0, 0, 0, 2726 30, 0, 0, 0, 0, 0, 0, 266, 0, 0, 2727 0, 0, 0, 0, 0, 622, 0, 0, 0, 0, 2728 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 2729 37, 38, 8, 9, 10, 11, 12, 13, 14, 15, 2730 16, 17, 18, 19, 20, 21, 22, 23, 24, 0, 2731 0, 25, 26, 27, 0, 0, 0, 0, 0, 30, 2732 0, 0, 0, 0, 0, 0, 592, 0, 0, 0, 2733 0, 0, 0, 0, 627, 0, 0, 0, 0, 0, 2734 0, 0, 33, 0, 0, 0, 0, 0, 0, 37, 2735 38, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2533 2736 17, 18, 19, 20, 21, 22, 23, 24, 0, 0, 2534 2737 25, 26, 27, 0, 0, 0, 0, 0, 30, 0, 2535 0, 0, 0, 0, 8, 9, 10, 11, 12, 13, 2536 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 2537 24, 0, 0, 25, 26, 27, 33, 0, 34, 0, 2538 35, 30, 0, 37, 38, 0, 0, 0, 0, 0, 2738 0, 0, 0, 0, 0, 334, 0, 0, 0, 0, 2739 0, 0, 0, 109, 0, 0, 0, 0, 0, 0, 2740 0, 33, 0, 0, 0, 0, 0, 0, 37, 38, 2741 2, 202, 4, 5, 6, 7, 8, 9, 10, 11, 2742 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 2743 22, 23, 24, 0, 0, 25, 26, 27, 0, 0, 2744 0, 0, 0, 30, 43, 0, 0, 0, 0, 0, 2745 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, 2746 0, 0, 0, 0, 0, 0, 33, 0, 34, 0, 2747 35, 0, 0, 37, 38, 0, 278, 0, 279, 1051, 2748 0, 1052, 0, 0, 1053, 1054, 1055, 1056, 1057, 1058, 2749 1059, 1060, 1507, 1061, 0, 0, 1062, 32, 0, 280, 2750 0, 0, 0, 0, 0, 642, 0, 0, -403, 282, 2751 0, 0, 283, 284, 285, 286, 40, 41, 0, 287, 2752 288, 0, 0, 0, 0, 0, 0, 289, 0, 0, 2539 2753 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2540 0, 0, 0, 0, 0, 1362, 0, 0, 0, 33,2541 0, 0, 0, 0, 36, 0, 333, 334, 39, 0,2542 682, 0, 0, 0, 0, 40, 41, 0, 630, 2,2543 203, 4, 5, 6, 7, 8, 9, 10, 11, 12,2544 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,2545 23, 24, 0, 335, 25, 26, 27, 0, 0, 0,2546 0, 109, 30, 0, 0, 0, 0, 0, 0, 0,2754 0, 290, 0, 374, 0, 0, 167, 0, 0, 0, 2755 292, 376, 294, 295, 296, 297, 0, 278, 0, 279, 2756 1051, 0, 1052, 0, -126, 1053, 1054, 1055, 1056, 1057, 2757 1058, 1059, 1060, 0, 1061, 0, 0, 1062, 32, 0, 2758 280, 0, 0, 0, 0, 0, 642, 0, 0, 0, 2759 282, 0, 0, 283, 284, 285, 286, 40, 41, 0, 2760 287, 288, 0, 0, 0, 0, 0, 0, 289, 0, 2547 2761 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2548 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2549 33, 0, 34, 0, 35, 0, 0, 204, 38, 2, 2550 203, 4, 5, 6, 7, 8, 9, 10, 11, 12, 2551 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2552 23, 24, 0, 0, 25, 26, 27, 0, 0, 0, 2553 0, 0, 30, 0, 267, 0, 0, 0, 0, 0, 2554 0, 0, 625, 0, 0, 0, 0, 0, 0, 0, 2555 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2556 33, 0, 34, 0, 35, 0, 0, 37, 38, 2, 2557 203, 4, 5, 6, 7, 8, 9, 10, 11, 12, 2558 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2559 23, 24, 0, 0, 25, 26, 27, 0, 0, 0, 2560 0, 0, 30, 0, 682, 0, 0, 0, 0, 0, 2561 0, 0, 630, 0, 0, 0, 0, 0, 0, 0, 2562 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2563 33, 0, 34, 0, 35, 0, 0, 37, 38, 2, 2564 203, 4, 5, 6, 7, 8, 9, 10, 11, 12, 2565 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2566 23, 24, 0, 0, 25, 26, 27, 0, 0, 0, 2567 0, 0, 30, 0, 595, 0, 0, 0, 0, 0, 2568 0, 0, 630, 0, 0, 0, 0, 0, 0, 0, 2569 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2570 33, 0, 34, 0, 35, 0, 0, 204, 38, 8, 2571 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 2572 19, 20, 21, 22, 23, 24, 0, 0, 25, 26, 2573 27, 0, 0, 0, 0, 279, 30, 280, 0, 0, 2574 0, 0, 0, 0, 205, 0, 0, 0, 0, 0, 2575 0, 0, 268, 0, 0, 0, 0, 0, 0, 0, 2576 0, 0, 0, 281, 33, 0, 0, 0, 0, 282, 2577 0, 37, 38, 283, 0, 0, 284, 285, 286, 287, 2578 40, 41, 0, 288, 289, 0, 0, 0, 0, 0, 2579 0, 290, 0, 0, 0, 0, 0, 0, 0, 0, 2580 0, 0, 0, 0, 0, 0, 291, 0, 521, 0, 2581 0, 168, 0, 0, 0, 293, 294, 295, 296, 297, 2582 298, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2583 17, 18, 19, 20, 21, 22, 23, 24, 0, 0, 2584 25, 26, 27, 0, 0, 0, 0, 279, 30, 280, 2585 0, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2586 17, 18, 19, 20, 21, 22, 23, 24, -292, 0, 2587 25, 26, 27, 0, 0, 281, 33, 0, 30, 0, 2588 0, 282, 0, 37, 38, 283, 0, 0, 284, 285, 2589 286, 287, 40, 41, 0, 288, 289, 0, 0, 0, 2590 0, 0, 0, 290, 0, 0, 33, 0, 0, 0, 2591 0, 36, 0, 333, 334, 39, 0, -292, 291, 0, 2592 595, -3, 40, 41, 0, 0, 0, 293, 596, 295, 2593 296, 297, 298, 8, 9, 10, 11, 12, 13, 14, 2594 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2595 335, 0, 25, 26, 27, 0, 0, 0, 109, 279, 2596 30, 280, 0, 8, 9, 10, 11, 12, 13, 14, 2597 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2598 -292, 0, 25, 26, 27, 0, 0, 281, 33, 0, 2599 30, 0, 0, 645, 0, 37, 38, 283, 0, 0, 2600 284, 285, 286, 287, 40, 41, 0, 288, 289, 0, 2601 0, 0, 0, 0, 0, 290, 0, 0, 33, 0, 2602 0, 0, 0, 0, 0, 37, 38, 0, 0, -292, 2603 291, -34, 760, 0, 0, 0, 0, 0, 0, 293, 2604 294, 295, 296, 297, 298, 8, 9, 10, 11, 12, 2605 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2606 23, 24, 335, 0, 25, 26, 27, 0, 0, 0, 2607 109, 279, 30, 280, 0, 8, 9, 10, 11, 12, 2608 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2609 23, 24, 0, 0, 25, 26, 27, 0, 0, 281, 2610 33, 0, 30, 0, 0, 282, 0, 37, 38, 283, 2611 0, 0, 284, 285, 286, 287, 40, 41, 0, 288, 2612 289, 0, 0, 0, 0, 0, 0, 290, 0, 0, 2613 33, 0, 0, 0, 0, 108, 0, 37, 38, 0, 2614 0, 0, 291, 0, 292, 0, 0, 0, 0, 0, 2615 0, 293, 294, 295, 296, 297, 298, 8, 9, 10, 2616 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 2617 21, 22, 23, 24, 43, 0, 25, 26, 27, 0, 2618 0, 0, 109, 279, 30, 280, 0, 8, 9, 10, 2619 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 2620 21, 22, 23, 24, 0, 0, 25, 26, 27, 0, 2621 0, 281, 33, 0, 30, 450, 0, 282, 0, 37, 2622 38, 283, 0, 0, 284, 285, 286, 287, 40, 41, 2623 0, 288, 289, 0, 0, 0, 0, 0, 0, 290, 2624 0, 0, 33, 0, 0, 0, 0, 0, 0, 37, 2625 38, 0, 0, 0, 291, 0, 154, 0, 0, 0, 2626 0, 0, 0, 293, 294, 295, 296, 297, 298, 8, 2627 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 2628 19, 20, 21, 22, 23, 24, 451, 0, 25, 26, 2629 27, 0, 0, 0, 109, 279, 30, 280, 0, 8, 2630 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 2631 19, 20, 21, 22, 23, 24, 0, 0, 25, 26, 2632 27, 0, 0, 281, 33, 0, 30, 0, 0, 282, 2633 0, 37, 38, 283, 0, 0, 284, 285, 286, 287, 2634 40, 41, 0, 288, 289, 0, 0, 0, 0, 0, 2635 0, 290, 0, 0, 33, 0, 0, 0, 0, 0, 2636 0, 37, 38, 0, 0, 0, 291, 0, 595, 0, 2637 0, 0, 0, 0, 0, 293, 596, 295, 296, 297, 2638 298, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2639 17, 18, 19, 20, 21, 22, 23, 24, 254, 0, 2640 25, 26, 27, 0, 0, 0, 109, 279, 30, 280, 2762 0, 0, 290, 0, 374, 0, 0, 167, 0, 0, 2763 0, 292, 376, 294, 295, 296, 297, 0, 0, 0, 2764 0, 0, 0, 0, 0, -126, 2, 202, 4, 5, 2765 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 2766 16, 17, 18, 19, 20, 21, 22, 23, 24, 0, 2767 0, 25, 26, 27, 0, 0, 0, 0, 0, 30, 2641 2768 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 2642 2769 18, 19, 20, 21, 22, 23, 24, 0, 0, 25, 2643 26, 27, 0, 0, 0, 281, 33, 30, 0, 0, 2644 0, 282, 0, 37, 38, 283, 0, 0, 284, 285, 2645 286, 287, 40, 41, 0, 288, 289, 0, 0, 0, 2646 0, 0, 0, 290, 0, 33, 0, 0, 0, 0, 2647 36, 0, 204, 38, 39, 0, 0, 0, 291, 0, 2648 375, 40, 41, 0, 0, 0, 0, 293, 377, 295, 2649 296, 297, 298, 0, 0, 0, 0, 0, 0, 0, 2650 0, 0, 0, 0, 0, 0, 0, 42, 0, 267, 2651 0, 0, 0, 0, 0, 0, 0, 206, 8, 9, 2770 26, 27, 33, 0, 34, 0, 35, 30, 0, 37, 2771 38, 0, 278, 0, 279, 1051, 0, 1052, 1394, 1395, 2772 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1507, 1061, 2773 33, 1307, 1062, 32, 0, 280, 0, 37, 38, 0, 2774 0, 642, 0, 0, 0, 282, 0, 0, 283, 284, 2775 285, 286, 40, 41, 0, 287, 288, 0, 0, 0, 2776 0, 0, 0, 289, 0, 0, 0, 0, 0, 0, 2777 0, 0, 0, 0, 0, 0, 0, 290, 0, 374, 2778 0, 0, 167, 0, 0, 0, 292, 376, 294, 295, 2779 296, 297, 278, 0, 279, 1051, 0, 1052, 1394, 1395, 2780 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 0, 1061, 2781 0, 0, 1062, 32, 0, 280, 0, 0, 0, 0, 2782 0, 642, 0, 0, 0, 282, 0, 0, 283, 284, 2783 285, 286, 40, 41, 0, 287, 288, 0, 0, 0, 2784 0, 0, 0, 289, 0, 0, 0, 0, 0, 278, 2785 0, 279, 0, 0, 0, 0, 0, 290, 0, 374, 2786 0, 0, 167, 0, 0, 0, 292, 376, 294, 295, 2787 296, 297, 280, 0, 0, 0, 0, 0, 281, 0, 2788 0, 0, 282, 0, 0, 283, 284, 285, 286, 40, 2789 41, 0, 287, 288, 0, 0, 0, 0, 0, 0, 2790 289, 0, 0, 0, 0, 0, 278, 0, 279, 0, 2791 0, 0, 0, 0, 290, 0, 374, 0, 0, 0, 2792 0, 0, 802, 292, 376, 294, 295, 296, 297, 280, 2793 0, 0, 0, 0, 0, 281, 0, 0, 0, 282, 2794 0, 0, 283, 284, 285, 286, 40, 41, 0, 287, 2795 288, 0, 0, 0, 0, 0, 0, 289, 0, 0, 2796 0, 0, 0, 278, 0, 279, 0, 0, 0, 0, 2797 0, 290, 0, 374, 0, 0, 982, 0, 0, 0, 2798 292, 376, 294, 295, 296, 297, 280, 0, 0, 0, 2799 0, 0, 281, 0, 0, 0, 282, 0, 0, 283, 2800 284, 285, 286, 40, 41, 0, 287, 288, 0, 0, 2801 0, 0, 0, 0, 289, 0, 0, 0, 0, 0, 2802 278, 0, 279, 0, 0, 0, 0, 0, 290, 0, 2803 374, 0, 0, 0, 0, 0, 0, 292, 376, 294, 2804 295, 296, 297, 280, 0, 0, 0, 0, 0, 281, 2805 0, 0, 0, 282, 0, 0, 283, 284, 285, 286, 2806 40, 41, 0, 287, 288, 0, 0, 0, 0, 0, 2807 0, 289, 0, 0, 0, 0, 0, 278, 0, 279, 2808 0, 0, 0, 0, 0, 290, 0, 374, 0, 0, 2809 0, 0, 0, 0, 292, 726, 294, 295, 296, 297, 2810 280, 0, 0, 0, 0, 0, 642, 0, 0, 0, 2811 282, 0, 0, 283, 284, 285, 286, 40, 41, 0, 2812 287, 288, 0, 0, 0, 0, 0, 0, 289, 0, 2813 0, 0, 0, 0, 278, 0, 279, 0, 0, 0, 2814 0, 0, 290, 0, 776, 0, 0, 0, 0, 0, 2815 0, 292, 376, 294, 295, 296, 297, 280, 0, 0, 2816 0, 0, 0, 281, 0, 0, 0, 282, 0, 0, 2817 283, 284, 285, 286, 40, 41, 0, 287, 288, 0, 2818 0, 0, 0, 0, 0, 289, 0, 0, 0, 0, 2819 0, 278, 0, 279, 0, 0, 0, 0, 0, 290, 2820 0, 374, 0, 0, 0, 0, 0, 0, 292, 817, 2821 294, 295, 296, 297, 280, 0, 0, 0, 0, 0, 2822 281, 0, 0, 0, 282, 0, 0, 283, 284, 285, 2823 286, 40, 41, 0, 287, 288, 0, 0, 0, 0, 2824 0, 0, 289, 0, 0, 0, 0, 0, 278, 0, 2825 279, 0, 0, 0, 0, 0, 508, 0, 0, 0, 2826 0, 0, 0, 0, 0, 292, 376, 294, 295, 296, 2827 297, 280, 0, 0, 0, 0, 0, 281, 0, 0, 2828 0, 282, 0, 0, 283, 284, 285, 286, 40, 41, 2829 0, 287, 288, 0, 0, 0, 0, 0, 0, 289, 2830 0, 0, 0, 0, 0, 278, 0, 279, 0, 0, 2831 0, 0, 0, 290, 0, 0, 0, 0, 0, 0, 2832 0, 0, 292, 376, 294, 295, 296, 297, 280, 0, 2833 0, 0, 0, 0, 281, 0, 0, 0, 282, 0, 2834 0, 283, 284, 285, 286, 40, 41, 0, 287, 288, 2835 0, 0, 0, 0, 0, 0, 289, 0, 0, 0, 2836 0, 0, 278, 0, 279, 0, 0, 0, 0, 0, 2837 512, 0, 0, 0, 0, 0, 0, 0, 0, 292, 2838 376, 294, 295, 296, 297, 280, 0, 0, 0, 0, 2839 0, 281, 0, 0, 0, 282, 0, 0, 283, 284, 2840 285, 286, 40, 41, 0, 287, 288, 0, 0, 0, 2841 0, 0, 0, 289, 0, 0, 0, 0, 0, 0, 2842 0, 0, 0, 0, 0, 0, 0, 515, 0, 0, 2843 0, 0, 0, 0, 0, 0, 292, 376, 294, 295, 2844 296, 297, 2, 202, 4, 5, 6, 7, 8, 9, 2652 2845 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2653 20, 21, 22, 23, 24, 0, 0, 25, 26, 27, 2654 0, 0, 0, 0, 0, 30, 0, 8, 9, 10, 2655 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 2656 21, 22, 23, 24, -292, 0, 25, 26, 27, 0, 2657 0, 0, 0, 33, 30, 0, 0, 0, 36, 0, 2658 333, 334, 39, 0, 0, 0, 0, 0, 0, 40, 2659 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2660 0, 0, 33, 0, 0, 0, 0, 0, 0, 37, 2661 38, 0, 0, -292, 0, 639, 0, 335, 0, 0, 2662 0, 0, 0, 0, 0, 630, 0, 0, 0, 0, 2663 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2664 0, 0, 0, 0, 639, 0, 335, 0, 0, 0, 2665 0, 0, 0, 0, 109, 8, 9, 10, 11, 12, 2666 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2667 23, 24, -292, 0, 25, 26, 27, 0, 0, 0, 2668 0, 0, 30, 0, 8, 9, 10, 11, 12, 13, 2669 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 2670 24, 0, 0, 25, 26, 27, 0, 0, 0, 0, 2671 33, 30, 450, 0, 0, 0, 0, 37, 38, 0, 2672 0, -292, 8, 9, 10, 11, 12, 13, 14, 15, 2673 16, 17, 18, 19, 20, 21, 22, 23, 24, 33, 2674 0, 25, 26, 27, 0, 0, 37, 38, 0, 30, 2675 450, 0, 639, 0, 335, 0, 0, 0, 0, 0, 2676 0, 0, 630, 0, 0, 0, 0, 0, 0, 0, 2677 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 2678 0, 0, 0, 451, 37, 38, 0, 941, 0, 0, 2679 0, 109, 8, 9, 10, 11, 12, 13, 14, 15, 2680 16, 17, 18, 19, 20, 21, 22, 23, 24, 0, 2681 0, 25, 26, 27, 0, 0, 0, 0, 0, 30, 2682 0, 451, 0, 0, 0, 1227, 0, 0, 0, 109, 2683 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 2684 18, 19, 20, 21, 22, 23, 24, 33, 0, 25, 2685 26, 27, 0, 0, 37, 38, 0, 30, 0, 8, 2686 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 2687 19, 20, 21, 22, 23, 24, 0, 0, 25, 26, 2688 27, 0, 0, 0, 0, 33, 30, 0, 0, 639, 2689 0, 335, 37, 38, 0, 0, 0, 0, 0, 109, 2690 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2691 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 2692 0, 37, 38, 0, 0, 0, 0, 639, 0, 335, 2693 0, 0, 0, 0, 0, 0, 0, 630, 0, 0, 2694 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 2695 18, 19, 20, 21, 22, 23, 24, 0, 154, 25, 2696 26, 27, 0, 0, 0, 0, 109, 30, 0, 8, 2697 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 2698 19, 20, 21, 22, 23, 24, 0, 0, 25, 26, 2699 27, 0, 0, 0, 0, 33, 30, 0, 0, 0, 2700 0, 0, 204, 38, 0, 0, 0, 8, 9, 10, 2701 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 2702 21, 22, 23, 24, 33, 0, 25, 26, 27, 0, 2703 0, 37, 38, 0, 30, 0, 0, 0, 0, 267, 2704 0, 0, 0, 0, 0, 0, 0, 268, 0, 0, 2705 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2706 0, 0, 33, 0, 0, 0, 0, 0, 254, 37, 2707 38, 0, 0, 0, 0, 0, 630, 8, 9, 10, 2708 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 2709 21, 22, 23, 24, 0, 0, 25, 26, 27, 0, 2710 0, 0, 0, 0, 30, 0, 335, 0, 0, 0, 2711 0, 0, 0, 0, 630, 8, 9, 10, 11, 12, 2712 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2713 23, 24, 33, 0, 25, 26, 27, 0, 0, 37, 2714 38, 0, 30, 0, 8, 9, 10, 11, 12, 13, 2715 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 2716 24, 0, 0, 25, 26, 27, 0, 0, 0, 0, 2717 33, 30, 0, 0, 0, 0, 451, 204, 38, 0, 2718 0, 0, 0, 0, 109, 0, 0, 0, 0, 0, 2719 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 2720 0, 0, 0, 0, 0, 0, 37, 38, 0, 0, 2721 0, 0, 0, 0, 267, 0, 0, 0, 0, 0, 2722 0, 0, 625, 0, 0, 8, 9, 10, 11, 12, 2723 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2724 23, 24, 0, 595, 25, 26, 27, 0, 0, 0, 2725 0, 630, 30, 0, 8, 9, 10, 11, 12, 13, 2726 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 2727 24, 0, 0, 25, 26, 27, 0, 0, 0, 0, 2728 33, 30, 0, 0, 0, 0, 0, 37, 38, 0, 2729 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2730 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 2731 0, 0, 0, 0, 0, 0, 37, 38, 0, 0, 2732 0, 0, 0, 0, 335, 0, 0, 0, 0, 0, 2733 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, 2734 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2735 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 2736 0, 109, 2, 203, 4, 5, 6, 7, 8, 9, 2737 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2738 20, 21, 22, 23, 24, 0, 0, 25, 26, 27, 2739 0, 0, 0, 0, 0, 30, 0, 0, 279, 0, 2740 280, 1056, 0, 1057, 0, 0, 1058, 1059, 1060, 1061, 2741 1062, 1063, 1064, 1065, 0, 0, 1540, 1066, 0, 0, 2742 0, 1067, 1068, 33, 32, 34, 281, 35, 0, 0, 2743 37, 38, 645, 0, 0, 0, 283, 0, 0, 284, 2744 285, 286, 287, 40, 41, 0, 288, 289, 0, 0, 2745 0, 0, 0, 0, 290, 0, 0, 0, 0, 0, 2746 0, 0, 0, 0, 0, 0, -410, 0, 0, 291, 2747 0, 375, 0, 0, 168, 0, 0, 0, 293, 377, 2748 295, 296, 297, 298, 0, 0, 0, 0, 1070, 0, 2749 0, 279, -127, 280, 1056, 0, 1057, 0, 0, 1058, 2750 1059, 1060, 1061, 1062, 1063, 1064, 1065, 0, 0, 0, 2751 1066, 0, 0, 0, 1067, 1068, 0, 32, 0, 281, 2752 0, 0, 0, 0, 0, 645, 0, 0, 0, 283, 2753 0, 0, 284, 285, 286, 287, 40, 41, 0, 288, 2754 289, 0, 0, 0, 0, 0, 0, 290, 0, 0, 2755 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2756 0, 0, 291, 0, 375, 0, 0, 168, 0, 0, 2757 0, 293, 377, 295, 296, 297, 298, 0, 0, 0, 2758 0, 1070, 0, 0, 279, -127, 280, 1056, 0, 1057, 2759 1410, 1411, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 2760 0, 0, 1540, 1066, 0, 0, 0, 1067, 1068, 0, 2761 32, 0, 281, 0, 0, 0, 0, 0, 645, 0, 2762 0, 0, 283, 0, 0, 284, 285, 286, 287, 40, 2763 41, 0, 288, 289, 0, 0, 0, 0, 0, 0, 2764 290, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2765 0, 0, 0, 0, 0, 291, 0, 375, 0, 0, 2766 168, 0, 0, 0, 293, 377, 295, 296, 297, 298, 2767 279, 0, 280, 1056, 1070, 1057, 1410, 1411, 1058, 1059, 2768 1060, 1061, 1062, 1063, 1064, 1065, 0, 0, 0, 1066, 2769 0, 0, 0, 1067, 1068, 0, 32, 0, 281, 0, 2770 0, 0, 0, 0, 645, 0, 0, 0, 283, 0, 2771 0, 284, 285, 286, 287, 40, 41, 0, 288, 289, 2772 0, 0, 0, 0, 0, 0, 290, 0, 0, 0, 2773 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2774 0, 291, 0, 375, 0, 0, 168, 0, 0, 0, 2775 293, 377, 295, 296, 297, 298, 279, 0, 280, 1056, 2776 1070, 1057, 0, 0, 1058, 1059, 1060, 1061, 1062, 1063, 2777 1064, 1065, 0, 0, 0, 1066, 0, 0, 0, 1067, 2778 1068, 0, 32, 0, 281, 0, 0, 0, 0, 0, 2779 645, 0, 0, 0, 283, 0, 0, 284, 285, 286, 2780 287, 40, 41, 0, 288, 289, 0, 0, 0, 0, 2781 0, 0, 290, 0, 0, 0, 0, 0, 0, 0, 2782 0, 0, 0, 0, 0, 0, 0, 291, 0, 375, 2783 0, 0, 168, 0, 0, 0, 293, 377, 295, 296, 2784 297, 298, 0, 0, 0, 0, 1070, 2, 203, 4, 2785 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 2786 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2787 0, 0, 25, 26, 27, 0, 0, 0, 0, 0, 2788 30, 0, 0, 279, 0, 280, 0, 0, 0, 0, 2789 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2790 0, 0, 279, 0, 280, 0, 0, 0, 33, 0, 2791 34, 281, 35, 0, 0, 37, 38, 282, 0, 0, 2792 0, 283, 0, 0, 284, 285, 286, 287, 40, 41, 2793 281, 288, 289, 0, 0, 0, 282, 1319, 0, 290, 2794 283, 0, 0, 284, 285, 286, 287, 40, 41, 0, 2795 288, 289, 0, 0, 291, 0, 375, 0, 290, 0, 2796 279, 775, 280, 293, 377, 295, 296, 297, 298, 0, 2797 0, 0, 0, 291, 0, 375, 0, 0, 986, 279, 2798 0, 280, 293, 377, 295, 296, 297, 298, 281, 0, 2799 0, 0, 0, 0, 282, 0, 0, 0, 283, 0, 2800 0, 284, 285, 286, 287, 40, 41, 281, 288, 289, 2801 0, 0, 0, 282, 0, 0, 290, 283, 0, 0, 2802 284, 285, 286, 287, 40, 41, 0, 288, 289, 0, 2803 0, 291, 0, 375, 0, 290, 0, 279, 0, 280, 2804 293, 377, 295, 296, 297, 298, 0, 0, 0, 0, 2805 291, 0, 375, 0, 0, 0, 279, 0, 280, 293, 2806 729, 295, 296, 297, 298, 281, 0, 0, 0, 0, 2807 0, 645, 0, 0, 0, 283, 0, 0, 284, 285, 2808 286, 287, 40, 41, 281, 288, 289, 0, 0, 0, 2809 282, 0, 0, 290, 283, 0, 0, 284, 285, 286, 2810 287, 40, 41, 0, 288, 289, 0, 0, 291, 0, 2811 779, 0, 290, 0, 279, 0, 280, 293, 377, 295, 2812 296, 297, 298, 0, 0, 0, 0, 291, 0, 375, 2813 0, 0, 0, 279, 0, 280, 293, 821, 295, 296, 2814 297, 298, 281, 0, 0, 0, 0, 0, 282, 0, 2815 0, 0, 283, 0, 0, 284, 285, 286, 287, 40, 2816 41, 281, 288, 289, 0, 0, 0, 282, 0, 0, 2817 290, 283, 0, 0, 284, 285, 286, 287, 40, 41, 2818 0, 288, 289, 0, 0, 291, 0, 0, 0, 290, 2819 0, 279, 0, 280, 293, 377, 295, 296, 297, 298, 2820 0, 0, 0, 0, 514, 0, 0, 0, 0, 0, 2821 0, 0, 0, 293, 377, 295, 296, 297, 298, 281, 2822 0, 0, 0, 0, 0, 282, 0, 0, 0, 283, 2823 0, 0, 284, 285, 286, 287, 40, 41, 0, 288, 2824 289, 0, 0, 0, 0, 0, 0, 290, 0, 0, 2825 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2826 0, 0, 517, 0, 0, 0, 0, 0, 0, 0, 2827 0, 293, 377, 295, 296, 297, 298, 2, 203, 4, 2828 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 2829 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2830 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2831 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2846 20, 21, 22, 23, 24, 0, 0, 0, 0, 0, 2847 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 2832 2848 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2833 2849 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 2834 34, 0, 35, 36, 0, 17 1, 172, 39, 0, 0,2835 0, 0, 0, 0, 40, 41, 20 2, 2, 203, 4,2850 34, 0, 35, 36, 0, 170, 171, 39, 0, 0, 2851 0, 0, 0, 0, 40, 41, 201, 2, 202, 4, 2836 2852 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 2837 2853 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, … … 2839 2855 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2840 2856 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2841 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 2842 34, 0, 35, 0, 0, 204, 38, 471, 2, 203, 2857 0, 0, 0, 33, 0, 34, 0, 35, 0, 0, 2858 203, 38, 469, 2, 202, 4, 5, 6, 7, 8, 2859 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 2860 19, 20, 21, 22, 23, 24, 0, 0, 25, 26, 2861 27, 0, 0, 0, 0, 0, 30, 0, 0, 0, 2862 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2863 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 2864 0, 34, 0, 35, 0, 0, 37, 38, 2, 202, 2843 2865 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 2844 2866 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, … … 2846 2868 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 2847 2869 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2848 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 2849 0, 34, 0, 35, 0, 0, 37, 38, 2, 203, 2870 0, 0, 0, 0, 33, 0, 34, 0, 35, 0, 2871 0, 203, 38, 8, 9, 10, 11, 12, 13, 14, 2872 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2873 0, 0, 25, 26, 27, 487, 488, 489, 0, 0, 2874 30, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2875 17, 18, 19, 20, 21, 22, 23, 24, 0, 0, 2876 25, 26, 27, 33, 0, 0, 0, 0, 30, 0, 2877 37, 38, 0, 0, 0, 0, 0, 0, 0, 0, 2878 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2879 0, 33, 0, 0, 0, 0, 0, 0, 203, 38 2880 }; 2881 2882 #define yypact_value_is_default(yystate) \ 2883 ((yystate) == (-1318)) 2884 2885 #define yytable_value_is_error(yytable_value) \ 2886 YYID (0) 2887 2888 static const yytype_int16 yycheck[] = 2889 { 2890 1, 42, 0, 42, 0, 181, 42, 235, 181, 165, 2891 181, 1, 451, 200, 182, 182, 215, 648, 690, 181, 2892 181, 484, 181, 181, 275, 602, 344, 113, 103, 751, 2893 252, 622, 690, 31, 494, 31, 690, 31, 498, 604, 2894 457, 892, 988, 359, 42, 602, 44, 363, 44, 1317, 2895 1, 534, 602, 995, 1031, 0, 54, 37, 37, 183, 2896 602, 604, 60, 602, 60, 63, 450, 63, 66, 605, 2897 66, 344, 37, 572, 101, 611, 66, 152, 65, 65, 2898 771, 1398, 65, 49, 715, 261, 31, 75, 261, 42, 2899 261, 1394, 412, 44, 262, 262, 768, 691, 42, 261, 2900 261, 1043, 261, 261, 602, 37, 104, 1030, 1031, 107, 2901 768, 197, 432, 101, 768, 113, 27, 75, 57, 713, 2902 440, 42, 101, 103, 103, 111, 0, 89, 75, 340, 2903 42, 43, 37, 257, 258, 101, 101, 124, 103, 523, 2904 181, 124, 181, 1411, 602, 181, 144, 892, 144, 101, 2905 102, 0, 103, 115, 152, 1458, 103, 31, 109, 157, 2906 71, 157, 101, 420, 421, 1482, 42, 43, 65, 101, 2907 1487, 103, 101, 636, 637, 638, 37, 65, 290, 736, 2908 0, 1, 31, 181, 182, 1050, 182, 1504, 277, 88, 2909 412, 654, 143, 65, 1511, 107, 44, 892, 65, 197, 2910 75, 152, 75, 37, 29, 404, 103, 205, 78, 205, 2911 432, 31, 11, 0, 63, 103, 214, 490, 440, 217, 2912 261, 217, 261, 122, 101, 261, 689, 102, 181, 102, 2913 106, 103, 400, 400, 109, 105, 103, 181, 736, 496, 2914 101, 104, 103, 63, 31, 108, 66, 248, 1225, 247, 2915 201, 247, 829, 247, 205, 80, 81, 514, 0, 1, 2916 181, 109, 337, 261, 262, 728, 262, 101, 104, 103, 2917 268, 710, 829, 484, 590, 106, 841, 275, 736, 829, 2918 108, 75, 450, 450, 235, 236, 604, 829, 289, 31, 2919 829, 366, 492, 73, 1240, 831, 124, 1274, 841, 0, 2920 1, 764, 247, 1487, 390, 1050, 997, 101, 420, 421, 2921 809, 73, 42, 43, 482, 482, 267, 633, 75, 270, 2922 1504, 63, 579, 103, 66, 105, 324, 1511, 324, 109, 2923 31, 829, 418, 153, 54, 89, 1487, 1059, 424, 290, 2924 108, 103, 293, 105, 0, 343, 344, 109, 111, 123, 2925 1273, 1274, 109, 116, 117, 818, 124, 205, 1053, 1210, 2926 1511, 115, 360, 683, 224, 66, 364, 65, 217, 67, 2927 68, 829, 949, 247, 968, 31, 106, 104, 252, 101, 2928 108, 108, 593, 243, 104, 950, 337, 107, 236, 340, 2929 3, 65, 390, 67, 68, 3, 508, 217, 247, 949, 2930 512, 123, 400, 515, 400, 103, 606, 949, 359, 108, 2931 610, 622, 363, 1390, 239, 366, 627, 506, 1009, 267, 2932 418, 65, 1287, 67, 68, 124, 424, 247, 426, 102, 2933 67, 631, 106, 108, 71, 635, 109, 74, 102, 76, 2934 1382, 1383, 290, 65, 108, 293, 83, 69, 108, 124, 2935 123, 526, 450, 0, 76, 77, 568, 101, 107, 108, 2936 247, 683, 106, 0, 52, 1210, 102, 1390, 469, 420, 2937 421, 101, 108, 508, 123, 217, 474, 512, 689, 101, 2938 515, 103, 1018, 1019, 482, 102, 482, 101, 486, 111, 2939 486, 108, 490, 649, 214, 1126, 345, 448, 958, 750, 2940 451, 918, 102, 725, 820, 247, 457, 95, 824, 109, 2941 993, 108, 123, 514, 690, 1210, 102, 690, 469, 690, 2942 113, 114, 108, 841, 692, 692, 1120, 124, 690, 690, 2943 531, 690, 690, 534, 658, 536, 101, 1102, 412, 101, 2944 108, 486, 1287, 494, 928, 496, 247, 498, 268, 121, 2945 375, 123, 936, 764, 102, 275, 124, 508, 432, 83, 2946 84, 512, 108, 514, 515, 1287, 440, 1030, 841, 1434, 2947 656, 208, 108, 108, 108, 526, 1441, 108, 124, 668, 2948 107, 102, 583, 1177, 1178, 0, 108, 108, 124, 124, 2949 124, 247, 590, 124, 118, 119, 252, 981, 914, 101, 2950 448, 189, 124, 451, 602, 1300, 604, 427, 466, 457, 2951 484, 101, 486, 688, 637, 638, 31, 108, 104, 101, 2952 1485, 103, 108, 343, 212, 623, 475, 42, 579, 44, 2953 455, 654, 101, 124, 222, 460, 44, 486, 1360, 590, 2954 360, 639, 593, 102, 364, 60, 102, 104, 63, 1088, 2955 109, 66, 108, 108, 655, 653, 657, 104, 656, 1354, 2956 508, 108, 1357, 863, 512, 754, 486, 515, 493, 124, 2957 495, 622, 102, 636, 637, 638, 627, 102, 108, 878, 2958 102, 954, 633, 1146, 65, 102, 67, 68, 763, 1434, 2959 102, 654, 690, 104, 692, 102, 1441, 108, 1461, 486, 2960 899, 109, 290, 1398, 1467, 728, 101, 527, 1403, 102, 2961 347, 104, 349, 81, 82, 108, 1438, 101, 1440, 103, 2962 101, 1484, 723, 85, 86, 106, 1489, 111, 884, 144, 2963 123, 124, 960, 1428, 101, 143, 103, 688, 736, 737, 2964 1485, 101, 157, 103, 486, 4, 5, 6, 7, 8, 2965 9, 111, 750, 101, 1118, 955, 412, 102, 1122, 710, 2966 928, 928, 101, 108, 1486, 728, 181, 182, 936, 936, 2967 124, 591, 101, 1089, 103, 624, 432, 101, 102, 103, 2968 102, 102, 111, 1377, 440, 486, 108, 108, 102, 740, 2969 205, 101, 102, 103, 108, 818, 57, 205, 1009, 436, 2970 1394, 101, 217, 62, 591, 64, 101, 1502, 103, 683, 2971 1273, 101, 763, 1508, 672, 689, 636, 637, 638, 1491, 2972 645, 104, 1517, 102, 108, 109, 1521, 235, 124, 108, 2973 486, 829, 247, 1491, 654, 1022, 65, 1491, 67, 68, 2974 69, 65, 106, 841, 102, 69, 261, 76, 77, 437, 2975 108, 725, 76, 77, 102, 818, 101, 102, 103, 267, 2976 108, 124, 710, 1457, 1458, 124, 101, 716, 103, 820, 2977 102, 124, 101, 824, 103, 106, 108, 101, 44, 65, 2978 705, 730, 111, 471, 106, 293, 711, 111, 101, 1045, 2979 764, 892, 102, 102, 60, 102, 102, 63, 108, 108, 2980 66, 108, 108, 623, 557, 558, 559, 560, 728, 324, 2981 10, 11, 12, 13, 14, 65, 914, 67, 68, 639, 2982 508, 101, 102, 103, 512, 101, 101, 515, 103, 344, 2983 928, 104, 340, 653, 101, 1146, 103, 37, 936, 4, 2984 5, 6, 7, 8, 9, 75, 101, 805, 103, 75, 2985 65, 0, 1, 101, 69, 103, 954, 815, 102, 103, 2986 60, 76, 77, 914, 1246, 1247, 1248, 918, 101, 959, 2987 103, 112, 830, 822, 695, 120, 697, 87, 144, 78, 2988 79, 80, 31, 54, 55, 400, 101, 108, 109, 990, 2989 121, 157, 993, 101, 995, 44, 111, 62, 818, 64, 2990 123, 101, 101, 103, 103, 825, 105, 958, 959, 960, 2991 103, 111, 420, 421, 1225, 101, 182, 66, 892, 65, 2992 104, 67, 68, 69, 1110, 108, 109, 683, 104, 1118, 2993 750, 42, 43, 1122, 1123, 450, 553, 554, 825, 205, 2994 555, 556, 1043, 892, 102, 561, 562, 102, 102, 102, 2995 102, 217, 1053, 101, 103, 1056, 1057, 1058, 1009, 884, 2996 102, 104, 103, 108, 104, 101, 891, 123, 106, 725, 2997 918, 486, 892, 104, 102, 490, 102, 104, 1190, 1191, 2998 104, 1193, 104, 671, 104, 108, 1470, 1199, 496, 28, 2999 1202, 109, 680, 109, 63, 144, 684, 10, 11, 12, 3000 13, 14, 102, 152, 153, 892, 514, 102, 104, 106, 3001 109, 80, 1110, 107, 10, 11, 12, 13, 14, 102, 3002 107, 107, 101, 108, 37, 102, 124, 102, 102, 1513, 3003 102, 1206, 102, 182, 102, 466, 109, 1088, 1089, 959, 3004 102, 37, 108, 102, 102, 114, 1235, 60, 197, 102, 3005 892, 200, 201, 102, 102, 975, 205, 982, 324, 102, 3006 102, 102, 102, 1012, 60, 102, 102, 102, 28, 1027, 3007 1028, 579, 123, 107, 104, 102, 1050, 226, 102, 102, 3008 102, 230, 107, 232, 104, 593, 3, 602, 157, 604, 3009 108, 892, 241, 10, 11, 12, 13, 14, 247, 1189, 3010 104, 1050, 102, 252, 102, 101, 108, 103, 1206, 1210, 3011 1030, 1031, 102, 262, 622, 111, 109, 959, 106, 627, 3012 37, 270, 108, 108, 104, 1083, 1084, 102, 102, 1318, 3013 1050, 108, 108, 1322, 400, 102, 892, 101, 104, 1229, 3014 1088, 104, 101, 60, 1356, 1246, 1247, 1248, 217, 65, 3015 101, 67, 68, 69, 1079, 1206, 101, 101, 959, 109, 3016 76, 77, 65, 1050, 67, 68, 69, 124, 107, 102, 3017 1498, 102, 1146, 76, 77, 690, 102, 692, 1229, 121, 3018 107, 106, 104, 124, 108, 3, 255, 1373, 337, 104, 3019 259, 340, 10, 11, 12, 13, 14, 346, 101, 1300, 3020 108, 102, 104, 102, 0, 102, 104, 45, 1050, 104, 3021 359, 104, 102, 104, 363, 1491, 104, 366, 1491, 37, 3022 1491, 736, 737, 104, 1492, 1492, 1415, 1317, 916, 1491, 3023 1491, 107, 1491, 1491, 102, 31, 1210, 124, 124, 1188, 3024 124, 672, 60, 107, 124, 1513, 1513, 124, 109, 1050, 3025 102, 1225, 107, 1354, 104, 104, 1357, 104, 104, 1184, 3026 104, 1210, 104, 412, 104, 1223, 1317, 104, 1188, 1189, 3027 66, 102, 102, 101, 1372, 1373, 345, 104, 427, 104, 3028 101, 1382, 1383, 432, 1470, 55, 54, 102, 102, 106, 3029 1210, 440, 124, 109, 1050, 104, 1254, 1398, 104, 102, 3030 104, 102, 1403, 89, 1262, 1263, 1264, 101, 107, 1229, 3031 102, 104, 102, 1287, 829, 1416, 40, 466, 102, 102, 3032 469, 1411, 109, 1210, 124, 102, 841, 1428, 108, 124, 3033 89, 102, 3, 1282, 109, 484, 102, 486, 1287, 10, 3034 11, 12, 13, 14, 102, 494, 1188, 1189, 1306, 498, 3035 1491, 124, 1491, 1273, 1274, 1491, 425, 153, 107, 124, 3036 1411, 104, 1282, 104, 124, 101, 37, 1287, 1210, 124, 3037 1471, 124, 1470, 1061, 805, 1476, 107, 526, 527, 672, 3038 107, 1482, 102, 691, 815, 102, 1487, 1229, 1189, 60, 3039 563, 565, 1443, 1491, 1492, 564, 1492, 1317, 566, 830, 3040 1287, 1502, 1127, 1504, 567, 713, 475, 1508, 54, 1210, 3041 1511, 1362, 1458, 928, 1210, 1513, 1517, 1513, 1521, 1296, 3042 1521, 936, 1473, 572, 1473, 1123, 1322, 1441, 1229, 1079, 3043 226, 448, 448, 936, 697, 884, 938, 982, 650, 954, 3044 1282, 590, 591, 740, 593, 1287, 460, 1498, 583, 1229, 3045 956, 247, 960, 486, 1210, 604, 252, 571, 104, 63, 3046 1434, 107, 750, 571, 571, -1, -1, 1441, -1, -1, 3047 1390, -1, -1, 622, -1, 1317, -1, -1, 627, -1, 3048 -1, -1, -1, -1, 633, 1434, 1287, 636, 637, 638, 3049 -1, 1411, 1441, -1, 802, 1443, 65, -1, 67, 68, 3050 69, 1009, -1, -1, -1, 654, 152, 76, 77, -1, 3051 114, 1485, 805, -1, 1434, 0, 1317, -1, -1, -1, 3052 -1, 1441, 815, 672, -1, 1473, -1, 596, -1, -1, 3053 -1, 1287, 101, -1, 683, -1, 1485, 830, -1, 688, 3054 689, -1, 111, 692, -1, -1, 31, 1434, -1, -1, 3055 346, -1, 1372, 157, 1441, 624, -1, -1, -1, -1, 3056 629, -1, -1, -1, -1, 1485, -1, -1, 214, 1411, 3057 185, -1, 880, -1, -1, -1, 725, 192, -1, 728, 3058 -1, 66, 65, -1, 67, 68, 69, -1, 737, -1, 3059 -1, 740, 1434, 76, 77, -1, 1027, 1028, 1485, 1441, 3060 -1, -1, -1, -1, -1, -1, -1, 1295, -1, -1, 3061 1411, -1, -1, 217, 763, 764, 412, -1, 101, -1, 3062 769, -1, 268, 65, -1, 67, 68, 69, 111, 275, 3063 -1, 427, -1, 1434, 76, 77, 432, -1, -1, -1, 3064 1441, -1, -1, 1485, 440, -1, -1, 716, -1, 264, 3065 -1, 255, 1083, 1084, -1, 259, 805, -1, -1, 101, 3066 968, 730, -1, -1, -1, -1, 815, -1, 153, 818, 3067 466, 820, -1, -1, 823, 824, 825, -1, 1434, -1, 3068 -1, 830, -1, -1, 1485, 1441, -1, -1, 484, 997, 3069 486, 840, 10, 11, 12, 13, 14, 343, -1, -1, 3070 -1, -1, -1, -1, 319, 10, 11, 12, 13, 14, 3071 -1, -1, 327, -1, 360, 330, -1, -1, 364, 37, 3072 -1, -1, -1, -1, -1, -1, -1, -1, -1, 1485, 3073 -1, 527, 37, -1, 1027, 1028, -1, -1, -1, 1047, 3074 -1, 345, 60, 892, -1, -1, -1, 65, -1, 67, 3075 68, 69, -1, 822, 1442, 60, -1, -1, 76, 77, 3076 65, -1, 247, -1, 69, 914, -1, 252, -1, -1, 3077 -1, 76, 77, -1, -1, -1, -1, 392, -1, -1, 3078 426, 396, -1, 101, 1472, 103, -1, -1, -1, -1, 3079 1083, 1084, 1223, 111, -1, 591, 101, -1, 0, -1, 3080 -1, 950, -1, -1, -1, -1, 111, -1, -1, 958, 3081 959, -1, 1120, -1, -1, -1, -1, -1, -1, -1, 3082 -1, 425, -1, 1254, 1512, 0, 975, -1, -1, 31, 3083 -1, 1262, 1263, 1264, -1, -1, 1524, -1, -1, -1, 3084 636, 637, 638, -1, -1, -1, -1, -1, -1, 279, 3085 -1, -1, -1, -1, -1, -1, 31, -1, 654, -1, 3086 1009, 346, 292, 293, 66, -1, 481, -1, -1, 1177, 3087 1178, 475, -1, 1022, 304, 1306, 672, -1, 1027, 1028, 3088 -1, 1030, 1031, -1, -1, -1, -1, 683, -1, -1, 3089 -1, 66, -1, 689, -1, 10, 11, 12, 13, 14, 3090 -1, 1050, 4, 5, 6, 7, 8, 9, -1, -1, 3091 340, -1, 65, -1, 67, 68, 69, -1, -1, -1, 3092 -1, -1, 37, 76, 77, -1, -1, 412, -1, 725, 3093 32, -1, 728, -1, 1083, 1084, -1, -1, -1, -1, 3094 1089, -1, 427, 1012, 590, 60, 376, 432, 101, -1, 3095 103, 153, -1, -1, -1, 440, 571, 572, 111, -1, 3096 62, 1254, 64, -1, -1, -1, -1, -1, 764, 1262, 3097 1263, 1264, -1, -1, -1, -1, 1491, 623, 153, -1, 3098 -1, 466, -1, -1, -1, -1, 101, -1, 103, -1, 3099 1498, -1, 596, 639, -1, -1, 111, 1146, -1, 484, 3100 65, 486, 67, 68, 69, -1, -1, 653, -1, 805, 3101 -1, 76, 77, 1306, -1, -1, 63, -1, -1, 815, 3102 624, -1, 818, -1, -1, 629, 73, 823, -1, 825, 3103 -1, -1, -1, -1, 830, -1, 101, -1, 103, -1, 3104 1189, -1, 527, -1, 659, 247, 111, -1, 663, -1, 3105 252, 65, -1, 67, 68, 69, -1, 1206, -1, -1, 3106 -1, 1210, 76, 77, -1, -1, -1, 114, -1, 1377, 3107 -1, -1, 247, -1, 1223, -1, 1225, 252, -1, -1, 3108 1229, 696, -1, -1, -1, -1, 1394, 101, -1, 103, 3109 -1, -1, -1, -1, -1, 109, 892, 111, -1, -1, 3110 -1, -1, -1, -1, 750, 1254, 591, -1, -1, -1, 3111 157, -1, 716, 1262, 1263, 1264, -1, -1, -1, 1188, 3112 550, 551, 552, -1, 1273, 1274, 730, 90, 91, 92, 3113 93, 94, 95, 96, 97, 98, 99, -1, 1287, -1, 3114 -1, -1, -1, -1, 346, -1, -1, -1, -1, 1457, 3115 1458, 636, 637, 638, -1, -1, -1, 1306, -1, -1, 3116 123, -1, -1, 593, -1, -1, -1, -1, 1317, 654, 3117 217, 346, -1, -1, -1, -1, -1, -1, -1, 975, 3118 -1, -1, -1, -1, -1, -1, -1, 672, -1, 10, 3119 11, 12, 13, 14, 809, -1, -1, -1, 683, -1, 3120 -1, -1, -1, -1, 689, -1, -1, -1, 255, -1, 3121 412, -1, 259, 1282, -1, -1, 37, -1, 822, -1, 3122 -1, -1, -1, -1, -1, 427, -1, -1, 275, -1, 3123 432, 1027, 1028, -1, 1030, 1031, -1, 412, 440, 60, 3124 725, 1390, -1, 728, 65, -1, 67, 68, 69, -1, 3125 -1, -1, 427, -1, 1050, 76, 77, 432, -1, -1, 3126 -1, -1, 1411, -1, 466, 440, -1, -1, 914, -1, 3127 -1, -1, -1, -1, -1, -1, -1, -1, -1, 764, 3128 101, -1, 484, -1, 486, 1434, -1, 1083, 1084, -1, 3129 111, 466, 1441, -1, -1, -1, 726, -1, 345, -1, 3130 -1, -1, -1, -1, -1, -1, -1, 922, -1, 484, 3131 -1, 486, -1, -1, -1, -1, -1, -1, -1, -1, 3132 805, -1, -1, -1, -1, 527, -1, -1, -1, -1, 3133 815, -1, -1, 818, -1, -1, 1485, -1, 823, -1, 3134 825, 771, -1, 1492, -1, 830, -1, -1, -1, -1, 3135 1146, -1, 527, -1, 3, 4, 5, 6, 7, 8, 3136 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3137 19, 20, 21, 22, 23, 24, 25, 26, 425, -1, 3138 29, 30, 31, -1, 999, -1, -1, 817, 37, 591, 3139 -1, -1, -1, 1189, -1, 442, -1, -1, -1, -1, 3140 1015, -1, -1, -1, -1, -1, -1, 892, 1012, -1, 3141 -1, 60, -1, 62, 1210, 64, 591, -1, 67, 68, 3142 -1, -1, -1, -1, -1, -1, -1, 1223, 475, 1225, 3143 -1, -1, -1, -1, 636, 637, 638, -1, -1, -1, 3144 -1, -1, -1, -1, -1, -1, 10, 11, 12, 13, 3145 14, -1, 654, -1, -1, -1, -1, 106, 1254, -1, 3146 -1, 636, 637, 638, -1, -1, 1262, 1263, 1264, -1, 3147 672, -1, -1, 37, -1, 1090, -1, 1273, 1274, 654, 3148 -1, 683, -1, -1, -1, -1, -1, 689, -1, -1, 3149 975, 1287, -1, 50, -1, 52, 60, 672, 55, 56, 3150 57, 65, 59, 67, 68, 69, -1, -1, 683, -1, 3151 1306, -1, 76, 77, 689, -1, -1, 74, -1, -1, 3152 -1, -1, -1, 725, -1, -1, 728, -1, -1, 86, 3153 87, -1, -1, -1, -1, -1, -1, 101, -1, 103, 3154 -1, -1, 1027, 1028, -1, 1030, 1031, 111, -1, 596, 3155 725, -1, -1, 728, -1, -1, -1, -1, -1, -1, 3156 1206, -1, 764, -1, -1, 1050, -1, -1, -1, -1, 3157 -1, -1, -1, -1, -1, -1, -1, 624, -1, 1009, 3158 -1, -1, 629, -1, 1188, -1, -1, -1, -1, 764, 3159 -1, -1, -1, -1, 1390, -1, -1, -1, 1083, 1084, 3160 -1, -1, -1, 805, -1, -1, -1, 10, 11, 12, 3161 13, 14, -1, 815, -1, -1, 818, -1, -1, -1, 3162 1050, 823, -1, 825, -1, -1, -1, -1, 830, -1, 3163 805, -1, -1, -1, 37, -1, -1, -1, 1434, -1, 3164 815, -1, -1, 818, -1, 1441, -1, -1, 823, -1, 3165 825, -1, -1, -1, -1, 830, -1, 60, -1, -1, 3166 -1, 1146, 65, -1, 67, 68, 69, -1, -1, 716, 3167 -1, -1, -1, 76, 77, -1, -1, -1, 1282, -1, 3168 -1, -1, -1, 730, -1, -1, -1, -1, -1, 1485, 3169 892, 10, 11, 12, 13, 14, -1, -1, 101, -1, 3170 103, -1, -1, 750, 1189, -1, -1, -1, 111, -1, 3171 -1, -1, -1, -1, -1, -1, -1, 892, 37, -1, 3172 -1, -1, -1, -1, -1, 1210, 1372, -1, -1, -1, 3173 -1, -1, -1, 1163, -1, -1, -1, -1, 1223, -1, 3174 1225, 60, -1, -1, -1, -1, 65, -1, 67, 68, 3175 69, -1, -1, -1, -1, -1, -1, 76, 77, -1, 3176 -1, -1, 25, 26, 27, -1, -1, -1, -1, 1254, 3177 -1, -1, -1, 975, -1, 822, -1, 1262, 1263, 1264, 3178 -1, -1, 101, 340, 341, -1, -1, -1, 1273, 1274, 3179 -1, -1, 111, -1, -1, 352, 353, -1, -1, -1, 3180 975, -1, 1287, -1, -1, -1, -1, -1, -1, -1, 3181 -1, -1, 25, 26, 27, -1, -1, -1, -1, -1, 3182 -1, 1306, -1, -1, 44, 1027, 1028, -1, 1030, 1031, 3183 -1, -1, -1, 96, -1, 98, -1, 10, 11, 12, 3184 13, 14, -1, 63, -1, -1, -1, -1, 1050, -1, 3185 -1, -1, 1027, 1028, -1, 1030, 1031, -1, -1, 122, 3186 -1, -1, -1, -1, 37, -1, -1, -1, -1, -1, 3187 -1, -1, -1, -1, -1, 1050, -1, -1, -1, -1, 3188 -1, 1083, 1084, 96, -1, 98, -1, 60, -1, 109, 3189 -1, -1, 65, -1, 114, -1, 69, -1, -1, -1, 3190 -1, -1, -1, 76, 77, 1390, -1, -1, 1083, 1084, 3191 -1, -1, -1, -1, 177, -1, -1, -1, -1, -1, 3192 -1, -1, 185, 143, 187, 188, -1, -1, 101, 192, 3193 -1, 194, 195, 153, -1, -1, -1, 157, 111, -1, 3194 -1, -1, -1, -1, 1146, -1, -1, -1, -1, 1434, 3195 -1, -1, -1, -1, -1, 36, 1441, 38, -1, -1, 3196 -1, -1, -1, -1, 177, 1012, -1, -1, -1, -1, 3197 -1, 1146, -1, -1, 187, 188, -1, -1, 59, 192, 3198 -1, 194, 195, -1, 65, 205, -1, 1189, 69, -1, 3199 -1, 72, 73, 74, 75, 76, 77, 217, 79, 80, 3200 1485, 264, -1, -1, -1, -1, 87, -1, 1210, -1, 3201 -1, -1, -1, -1, 1189, 235, 236, -1, -1, -1, 3202 101, 1223, 103, 1225, -1, -1, -1, -1, -1, 110, 3203 111, 112, 113, 114, 115, 1210, -1, -1, -1, 259, 3204 -1, -1, -1, 124, -1, -1, -1, 267, 1223, -1, 3205 1225, -1, 1254, -1, -1, -1, -1, -1, -1, -1, 3206 1262, 1263, 1264, -1, -1, -1, -1, -1, -1, -1, 3207 290, 1273, 1274, 293, -1, -1, -1, 7, -1, 1254, 3208 10, 11, 12, 13, 14, 1287, -1, 1262, 1263, 1264, 3209 -1, -1, -1, -1, -1, -1, -1, -1, 1273, 1274, 3210 -1, -1, -1, -1, 1306, -1, 36, 37, 38, -1, 3211 -1, -1, 1287, -1, -1, -1, -1, -1, -1, -1, 3212 340, -1, -1, -1, -1, 345, -1, -1, -1, 59, 3213 60, 1306, -1, -1, -1, 65, -1, -1, -1, 69, 3214 -1, 1188, 72, 73, 74, 75, 76, 77, -1, 79, 3215 80, -1, -1, -1, -1, -1, -1, 87, -1, -1, 3216 717, -1, 719, -1, -1, -1, -1, -1, -1, 726, 3217 727, 101, -1, 103, 731, -1, -1, -1, -1, -1, 3218 110, 111, 112, 113, 114, 115, 743, -1, 1390, -1, 3219 -1, 748, -1, -1, -1, -1, -1, -1, -1, -1, 3220 420, 421, -1, -1, -1, -1, -1, 427, -1, -1, 3221 -1, -1, -1, -1, -1, 1390, 773, -1, -1, -1, 3222 -1, -1, -1, -1, -1, -1, -1, -1, 448, -1, 3223 -1, 451, 1434, -1, -1, 1282, -1, 457, -1, 1441, 3224 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 3225 20, 21, 22, 23, 24, 25, 26, 27, -1, 1434, 3226 817, -1, -1, -1, 484, -1, 1441, 37, -1, -1, 3227 -1, -1, -1, -1, -1, -1, 496, -1, -1, -1, 3228 -1, -1, -1, 1485, -1, -1, -1, -1, 508, -1, 3229 60, -1, 512, -1, 514, 515, -1, -1, -1, -1, 3230 -1, 71, -1, -1, -1, -1, -1, 527, -1, -1, 3231 1485, -1, 575, 576, -1, -1, -1, 874, 875, 876, 3232 877, -1, 879, -1, -1, -1, -1, -1, -1, -1, 3233 -1, -1, -1, -1, -1, -1, -1, -1, 895, -1, 3234 -1, -1, 605, -1, -1, 608, 609, -1, 611, -1, 3235 613, 614, 909, -1, -1, 618, 619, -1, -1, 579, 3236 -1, -1, 575, 576, -1, -1, -1, -1, -1, -1, 3237 -1, 591, -1, 593, -1, -1, 596, -1, -1, -1, 3238 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3239 -1, 948, 605, -1, -1, 608, 609, -1, 611, -1, 3240 613, 614, 622, -1, -1, 618, 619, 627, -1, -1, 3241 -1, -1, -1, -1, -1, -1, 636, 637, 638, -1, 3242 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3243 987, -1, -1, 696, 654, -1, -1, 994, 701, 702, 3244 -1, 998, -1, -1, 707, -1, 1003, -1, 1005, -1, 3245 -1, -1, 1009, 1010, 1011, -1, -1, 1014, -1, -1, 3246 -1, -1, -1, -1, -1, -1, 1023, -1, -1, 689, 3247 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3248 -1, -1, -1, -1, 1041, 1042, -1, -1, 701, 702, 3249 710, -1, -1, -1, 707, -1, -1, -1, -1, -1, 3250 -1, -1, -1, -1, -1, -1, -1, -1, 728, 1066, 3251 730, -1, 1069, 10, 11, 12, 13, 14, 15, 16, 3252 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3253 -1, -1, 29, 30, 31, -1, -1, 63, -1, -1, 3254 37, -1, -1, -1, 764, -1, -1, 73, -1, 75, 3255 1107, 77, -1, -1, -1, -1, 1113, 1114, 84, -1, 3256 -1, -1, -1, 60, -1, -1, -1, 1124, -1, -1, 3257 67, 68, 1129, -1, -1, 1132, -1, 1134, -1, -1, 3258 1137, -1, -1, -1, -1, -1, -1, -1, 114, -1, 3259 116, 117, 118, 1150, -1, -1, -1, -1, 818, -1, 3260 -1, -1, 822, -1, -1, 825, 1163, -1, 1165, 1166, 3261 1167, 1168, -1, -1, 111, -1, -1, -1, -1, -1, 3262 -1, -1, -1, -1, 1181, -1, 1183, -1, -1, -1, 3263 1187, 157, -1, -1, -1, -1, -1, -1, -1, -1, 3264 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3265 -1, -1, -1, -1, -1, -1, -1, -1, 1215, 1216, 3266 -1, -1, 3, 4, 5, 6, 7, 8, 9, 10, 3267 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 3268 21, 22, 23, 24, 25, 26, -1, -1, 29, 30, 3269 31, 217, -1, 219, 220, 221, 37, -1, 918, -1, 3270 -1, -1, -1, -1, -1, 43, -1, -1, 1265, 1266, 3271 -1, -1, -1, -1, -1, -1, -1, -1, 1275, 60, 3272 -1, 62, -1, 64, 65, -1, 67, 68, 69, 255, 3273 -1, -1, -1, 259, -1, 76, 77, -1, -1, -1, 3274 960, -1, -1, -1, -1, -1, -1, -1, -1, 275, 3275 -1, 89, -1, -1, -1, 975, -1, -1, -1, -1, 3276 101, 99, 103, -1, -1, -1, 1323, -1, -1, -1, 3277 111, -1, -1, -1, -1, -1, -1, -1, 1335, -1, 3278 1337, 1338, 1339, -1, -1, -1, -1, -1, -1, 1009, 3279 -1, -1, 1349, -1, -1, -1, -1, -1, 324, -1, 3280 -1, 1358, -1, -1, 36, -1, 38, -1, -1, -1, 3281 1030, 1031, -1, 1370, -1, -1, 154, -1, -1, 345, 3282 -1, -1, 1085, -1, 350, 351, -1, 59, -1, 167, 3283 -1, -1, 358, 65, -1, -1, -1, 69, -1, -1, 3284 72, 73, 74, 75, 76, 77, -1, 79, 80, -1, 3285 -1, -1, 190, -1, -1, 87, -1, -1, -1, -1, 3286 -1, -1, -1, -1, 1421, 1422, 204, -1, 1088, 101, 3287 -1, 103, 1085, -1, 400, 213, 108, 1434, 110, 111, 3288 112, 113, 114, 115, 1441, 223, -1, -1, -1, -1, 3289 -1, -1, 418, -1, -1, -1, -1, 423, -1, 425, 3290 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3291 248, -1, 1469, -1, -1, 253, 442, -1, -1, 445, 3292 446, -1, -1, -1, -1, -1, 1146, -1, 266, -1, 3293 -1, -1, -1, -1, 272, 461, 274, -1, -1, -1, 3294 1497, -1, -1, -1, 1207, -1, -1, -1, -1, 475, 3295 -1, -1, -1, 291, -1, -1, 482, -1, -1, -1, 3296 -1, -1, -1, -1, -1, -1, 1523, -1, 1188, -1, 3297 -1, 1528, -1, -1, -1, -1, -1, -1, -1, -1, 3298 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3299 -1, -1, -1, -1, 1207, -1, 334, -1, -1, -1, 3300 -1, 339, -1, -1, -1, 1225, -1, -1, -1, -1, 3301 -1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3302 19, 20, 21, 22, 23, 24, 25, 26, -1, 367, 3303 29, 30, 31, 371, 372, -1, 374, -1, 37, -1, 3304 -1, -1, 380, 381, -1, 383, 384, -1, 386, -1, 3305 388, -1, 7, 1273, 1274, 10, 11, 12, 13, 14, 3306 -1, 60, 1282, -1, -1, -1, -1, 405, 67, 68, 3307 596, -1, -1, -1, -1, 413, -1, -1, -1, -1, 3308 -1, 36, 37, 38, -1, -1, -1, -1, -1, -1, 3309 -1, -1, -1, -1, -1, -1, -1, -1, 624, -1, 3310 438, -1, -1, 629, 59, 60, -1, -1, -1, -1, 3311 65, 449, 111, -1, 69, -1, -1, 72, 73, 74, 3312 75, 76, 77, -1, 79, 80, -1, -1, -1, -1, 3313 -1, -1, 87, -1, 472, -1, -1, -1, -1, -1, 3314 478, -1, -1, -1, -1, 483, 101, -1, 103, -1, 3315 -1, -1, -1, -1, -1, 110, 111, 112, 113, 114, 3316 115, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3317 1390, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3318 -1, 519, -1, -1, 278, 279, 280, -1, -1, -1, 3319 716, -1, -1, 287, 288, -1, -1, 535, 292, 293, 3320 -1, -1, -1, -1, 730, -1, -1, -1, -1, -1, 3321 304, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3322 -1, -1, -1, 1443, 750, -1, -1, -1, -1, -1, 3323 -1, -1, -1, 571, 152, 153, -1, -1, -1, -1, 3324 -1, -1, 580, -1, -1, -1, 340, -1, -1, 587, 3325 -1, -1, -1, 1473, 592, -1, -1, -1, -1, -1, 3326 -1, -1, -1, -1, -1, 603, -1, 185, -1, -1, 3327 -1, -1, -1, -1, 192, -1, -1, -1, 1498, -1, 3328 -1, -1, 376, 809, -1, -1, -1, -1, -1, -1, 3329 -1, -1, -1, -1, -1, -1, 822, -1, -1, -1, 3330 -1, -1, -1, -1, -1, -1, 644, -1, -1, -1, 3331 -1, -1, -1, 0, -1, 841, 3, 4, 5, 6, 3332 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 3333 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3334 -1, 679, 29, 30, 31, 32, 264, -1, 35, -1, 3335 37, 38, -1, -1, -1, -1, -1, -1, -1, -1, 3336 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3337 57, -1, -1, 60, -1, 62, -1, 64, 65, -1, 3338 67, 68, 69, -1, -1, -1, -1, -1, -1, 76, 3339 77, -1, -1, -1, -1, -1, 734, -1, -1, -1, 3340 -1, 319, 928, -1, -1, -1, 744, 745, -1, 327, 3341 328, -1, 330, 331, 101, -1, 103, -1, -1, 757, 3342 -1, -1, 340, -1, 111, -1, 344, -1, 954, -1, 3343 -1, -1, -1, -1, -1, -1, 774, -1, 776, -1, 3344 -1, -1, 780, -1, -1, 363, -1, -1, 366, -1, 3345 -1, -1, -1, -1, -1, 981, 550, 551, 552, 553, 3346 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 3347 564, 565, 566, 567, 392, -1, -1, -1, 396, 36, 3348 -1, 38, -1, -1, -1, -1, 1012, -1, -1, -1, 3349 -1, -1, -1, -1, -1, -1, -1, 1023, -1, 593, 3350 -1, -1, 59, -1, -1, -1, -1, 845, 65, 427, 3351 67, 68, 69, -1, 852, 72, 73, 74, 75, 76, 3352 77, -1, 79, 80, -1, -1, -1, 865, -1, 867, 3353 87, -1, 450, -1, -1, -1, -1, -1, -1, -1, 3354 -1, -1, -1, 881, 101, -1, 103, -1, 105, 106, 3355 888, -1, -1, 110, 111, 112, 113, 114, 115, -1, 3356 -1, -1, 900, 481, -1, 903, 484, -1, -1, -1, 3357 -1, -1, -1, -1, -1, -1, 1102, -1, -1, -1, 3358 -1, -1, -1, 921, -1, -1, -1, -1, -1, -1, 3359 -1, -1, -1, -1, -1, -1, -1, 691, -1, -1, 3360 -1, -1, -1, -1, -1, 523, -1, -1, 526, 527, 3361 -1, -1, -1, -1, -1, -1, -1, -1, -1, 713, 3362 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3363 143, -1, 726, -1, -1, -1, -1, -1, -1, -1, 3364 153, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3365 -1, -1, 165, 571, 572, -1, -1, -1, -1, -1, 3366 -1, -1, 1188, -1, -1, -1, -1, -1, -1, -1, 3367 1008, -1, 590, 591, -1, 593, -1, 771, -1, -1, 3368 -1, -1, -1, -1, 602, -1, 604, 605, -1, -1, 3369 -1, -1, -1, 611, -1, -1, -1, -1, -1, -1, 3370 -1, -1, -1, 621, 622, -1, -1, -1, 802, 627, 3371 -1, -1, -1, -1, -1, -1, -1, -1, 636, 637, 3372 638, -1, 235, 817, -1, 1063, -1, -1, -1, -1, 3373 -1, 1069, -1, -1, -1, -1, 654, -1, -1, -1, 3374 -1, 659, 660, -1, -1, 663, 664, 260, -1, -1, 3375 -1, -1, 670, -1, -1, -1, 1282, -1, -1, -1, 3376 1098, -1, -1, -1, -1, 1103, -1, -1, -1, -1, 3377 688, 689, 690, 1111, 692, -1, -1, -1, 696, 3, 2850 3378 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 2851 3379 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 2852 24, 0, 0, 25, 26, 27, 0, 0, 0, 0, 2853 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 2854 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2855 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 2856 0, 34, 0, 35, 0, 0, 204, 38 2857 }; 2858 2859 #define yypact_value_is_default(yystate) \ 2860 ((yystate) == (-1362)) 2861 2862 #define yytable_value_is_error(yytable_value) \ 2863 YYID (0) 2864 2865 static const yytype_int16 yycheck[] = 2866 { 2867 1, 236, 0, 0, 42, 113, 693, 516, 183, 165, 2868 166, 42, 42, 1, 182, 182, 201, 539, 693, 182, 2869 182, 216, 276, 182, 651, 453, 0, 1, 625, 459, 2870 182, 182, 605, 31, 31, 1055, 183, 896, 496, 0, 2871 693, 452, 500, 992, 42, 341, 44, 44, 607, 1410, 2872 1329, 605, 345, 896, 414, 0, 54, 31, 345, 607, 2873 360, 1036, 60, 60, 364, 63, 63, 42, 66, 66, 2874 31, 0, 1, 999, 434, 103, 54, 31, 66, 575, 2875 605, 70, 442, 774, 771, 605, 31, 1, 263, 63, 2876 198, 718, 66, 1414, 262, 262, 771, 754, 61, 262, 2877 262, 184, 31, 262, 1035, 1036, 104, 605, 80, 107, 2878 262, 262, 42, 93, 525, 113, 263, 605, 771, 37, 2879 605, 42, 1048, 1484, 152, 49, 104, 37, 27, 107, 2880 44, 37, 70, 80, 70, 253, 108, 66, 0, 42, 2881 43, 130, 694, 0, 182, 80, 144, 144, 128, 42, 2882 43, 182, 182, 1432, 152, 608, 640, 641, 37, 157, 2883 157, 614, 109, 70, 716, 107, 739, 130, 44, 31, 2884 639, 640, 641, 657, 31, 258, 259, 76, 1067, 1068, 2885 42, 117, 44, 107, 182, 183, 183, 486, 657, 103, 2886 486, 1512, 130, 42, 43, 109, 1517, 107, 60, 109, 2887 198, 63, 109, 109, 66, 492, 63, 182, 206, 206, 2888 113, 406, 1055, 83, 739, 105, 1537, 215, 29, 112, 2889 218, 218, 80, 1544, 262, 107, 80, 402, 107, 143, 2890 109, 262, 262, 109, 70, 62, 108, 215, 152, 129, 2891 114, 111, 468, 115, 218, 1134, 1466, 731, 249, 225, 2892 248, 248, 182, 107, 739, 402, 130, 115, 1233, 0, 2893 833, 182, 731, 112, 262, 263, 263, 143, 244, 80, 2894 81, 269, 11, 109, 248, 1295, 70, 452, 276, 833, 2895 107, 1501, 144, 1503, 392, 713, 845, 248, 202, 290, 2896 31, 269, 206, 593, 248, 157, 414, 845, 276, 1248, 2897 596, 107, 37, 248, 494, 452, 94, 1282, 833, 484, 2898 338, 1002, 420, 833, 607, 109, 434, 813, 426, 248, 2899 182, 183, 236, 237, 442, 37, 686, 325, 325, 625, 2900 206, 37, 70, 121, 630, 833, 636, 484, 822, 367, 2901 639, 640, 641, 80, 206, 833, 344, 345, 833, 114, 2902 1281, 1282, 94, 822, 268, 110, 218, 271, 657, 1218, 2903 236, 218, 107, 361, 110, 130, 344, 365, 114, 67, 2904 107, 109, 107, 71, 109, 1218, 74, 291, 76, 121, 2905 294, 108, 835, 361, 129, 83, 248, 365, 115, 88, 2906 89, 248, 268, 692, 392, 107, 692, 109, 112, 953, 2907 262, 107, 129, 109, 402, 402, 954, 1064, 80, 422, 2908 423, 4, 5, 6, 7, 8, 9, 1014, 294, 609, 2909 972, 114, 420, 613, 338, 124, 125, 341, 426, 240, 2910 428, 1406, 731, 953, 1517, 1455, 108, 1517, 70, 32, 2911 72, 73, 1462, 115, 634, 108, 360, 110, 638, 675, 2912 364, 114, 1295, 367, 452, 953, 70, 1537, 72, 73, 2913 3, 1544, 108, 325, 1544, 341, 129, 130, 767, 115, 2914 471, 767, 1398, 1399, 67, 1406, 69, 3, 476, 70, 2915 112, 72, 73, 345, 114, 498, 484, 484, 997, 346, 2916 488, 488, 922, 107, 492, 1515, 652, 107, 112, 753, 2917 528, 113, 114, 516, 962, 0, 1133, 248, 422, 423, 2918 108, 209, 253, 0, 488, 516, 114, 129, 109, 0, 2919 695, 932, 129, 822, 824, 693, 693, 488, 828, 940, 2920 693, 693, 533, 114, 693, 536, 450, 538, 539, 453, 2921 402, 693, 693, 488, 31, 459, 422, 423, 695, 130, 2922 896, 659, 845, 107, 108, 109, 114, 471, 845, 488, 2923 291, 1109, 107, 114, 70, 376, 72, 73, 686, 582, 2924 1023, 1024, 130, 114, 985, 1127, 70, 107, 661, 130, 2925 74, 114, 496, 809, 498, 586, 500, 81, 82, 130, 2926 452, 108, 108, 819, 107, 593, 510, 130, 114, 107, 2927 514, 107, 516, 517, 63, 70, 112, 605, 834, 607, 2928 728, 114, 1455, 107, 528, 109, 81, 82, 918, 1462, 2929 477, 80, 498, 117, 107, 114, 488, 130, 626, 114, 2930 492, 488, 1184, 1185, 127, 110, 129, 114, 1295, 114, 2931 516, 130, 107, 78, 642, 130, 457, 108, 626, 594, 2932 348, 462, 350, 130, 114, 114, 1487, 658, 656, 660, 2933 107, 659, 1493, 691, 642, 0, 1, 1095, 582, 114, 2934 130, 958, 1515, 414, 109, 108, 111, 867, 656, 593, 2935 115, 114, 596, 1514, 495, 130, 497, 882, 1519, 114, 2936 78, 422, 423, 434, 108, 693, 31, 695, 157, 110, 2937 107, 442, 109, 114, 108, 130, 582, 108, 903, 44, 2938 117, 625, 1058, 278, 108, 1372, 630, 107, 1014, 109, 2939 596, 109, 636, 111, 107, 726, 109, 115, 107, 964, 2940 109, 66, 888, 108, 117, 107, 1035, 109, 766, 114, 2941 438, 739, 740, 605, 108, 607, 107, 488, 109, 625, 2942 114, 110, 108, 107, 630, 753, 117, 932, 114, 218, 2943 70, 248, 72, 73, 74, 940, 253, 108, 103, 959, 2944 627, 81, 82, 114, 510, 753, 108, 691, 514, 510, 2945 107, 517, 114, 514, 108, 932, 517, 110, 108, 1311, 2946 114, 114, 108, 940, 114, 113, 1096, 256, 114, 713, 2947 107, 260, 1459, 107, 1461, 117, 1032, 1033, 108, 144, 2948 122, 123, 110, 108, 114, 130, 114, 152, 153, 114, 2949 4, 5, 6, 7, 8, 9, 107, 108, 109, 743, 2950 62, 693, 70, 695, 1521, 833, 74, 648, 110, 108, 2951 571, 1393, 1027, 81, 82, 114, 1521, 845, 183, 108, 2952 108, 107, 766, 109, 1153, 114, 114, 1153, 1410, 1516, 2953 107, 108, 719, 198, 1090, 1091, 201, 202, 1521, 107, 2954 1125, 206, 1218, 44, 1129, 130, 733, 739, 740, 117, 2955 83, 84, 85, 67, 829, 69, 107, 346, 70, 112, 2956 72, 73, 227, 108, 1050, 896, 231, 708, 233, 114, 2957 107, 108, 109, 714, 107, 130, 109, 242, 111, 112, 2958 824, 108, 70, 248, 828, 108, 74, 114, 253, 130, 2959 918, 114, 896, 81, 82, 119, 120, 414, 263, 86, 2960 87, 1483, 1484, 107, 932, 109, 271, 1233, 109, 107, 2961 108, 109, 940, 508, 70, 686, 130, 434, 107, 107, 2962 109, 896, 90, 91, 44, 442, 56, 57, 58, 117, 2963 958, 10, 11, 12, 13, 14, 1312, 896, 427, 826, 2964 60, 833, 107, 63, 109, 963, 66, 70, 112, 72, 2965 73, 74, 1281, 845, 1254, 1255, 1256, 728, 37, 963, 2966 107, 112, 109, 994, 107, 107, 997, 109, 999, 486, 2967 80, 488, 107, 338, 918, 1231, 341, 110, 922, 1117, 2968 80, 698, 347, 700, 113, 114, 65, 118, 477, 126, 2969 1366, 108, 109, 1369, 92, 360, 114, 115, 109, 364, 2970 56, 57, 367, 127, 963, 206, 1262, 113, 114, 896, 2971 560, 561, 562, 563, 1270, 1271, 1272, 1048, 962, 963, 2972 964, 114, 115, 107, 144, 114, 115, 1058, 42, 43, 2973 1061, 1062, 1063, 129, 556, 557, 237, 157, 1414, 107, 2974 932, 110, 108, 1419, 558, 559, 110, 888, 940, 414, 2975 108, 1055, 564, 565, 895, 1496, 108, 108, 964, 83, 2976 84, 85, 1318, 183, 429, 108, 958, 268, 108, 434, 2977 1014, 107, 110, 1449, 109, 114, 671, 442, 110, 129, 2978 1055, 112, 107, 107, 110, 109, 206, 111, 112, 1117, 2979 291, 108, 108, 294, 115, 110, 1055, 110, 218, 110, 2980 110, 28, 114, 468, 108, 1546, 471, 115, 1014, 108, 2981 599, 112, 110, 50, 694, 52, 113, 113, 55, 56, 2982 57, 486, 59, 488, 115, 896, 108, 113, 107, 114, 2983 1017, 496, 108, 108, 108, 500, 716, 74, 627, 108, 2984 130, 108, 115, 632, 108, 986, 114, 108, 108, 86, 2985 87, 1095, 1096, 108, 108, 1213, 108, 108, 108, 1535, 2986 108, 108, 757, 528, 529, 1541, 108, 108, 1055, 686, 2987 70, 28, 72, 73, 74, 692, 1552, 108, 1196, 108, 2988 1556, 81, 82, 113, 129, 1213, 3, 1218, 110, 108, 2989 108, 1195, 1196, 10, 11, 12, 13, 14, 108, 113, 2990 10, 11, 12, 13, 14, 325, 108, 107, 114, 109, 2991 575, 728, 110, 110, 1218, 115, 108, 117, 108, 1237, 2992 37, 114, 108, 1254, 1255, 1256, 806, 37, 593, 594, 2993 719, 596, 115, 1237, 114, 112, 114, 1196, 110, 108, 2994 114, 114, 607, 1218, 733, 1086, 108, 108, 65, 450, 2995 767, 1389, 453, 107, 110, 65, 107, 107, 459, 1218, 2996 625, 107, 107, 110, 130, 630, 1531, 115, 108, 1213, 2997 113, 636, 108, 108, 639, 640, 641, 110, 1237, 113, 2998 1311, 1312, 402, 127, 1055, 112, 1290, 110, 130, 114, 2999 114, 1295, 657, 1237, 110, 108, 108, 107, 45, 109, 3000 108, 110, 108, 110, 884, 110, 110, 117, 1195, 510, 3001 675, 1329, 110, 514, 110, 130, 517, 1522, 0, 130, 3002 1295, 686, 113, 1521, 1521, 1329, 691, 692, 1521, 1521, 3003 695, 1218, 1521, 130, 108, 1366, 1295, 826, 1369, 1521, 3004 1521, 1546, 130, 130, 63, 1522, 113, 115, 108, 31, 3005 1191, 110, 113, 110, 110, 110, 110, 110, 1496, 110, 3006 1388, 1389, 110, 728, 108, 108, 731, 1398, 1399, 1546, 3007 1329, 110, 110, 107, 107, 740, 107, 58, 743, 896, 3008 1388, 108, 108, 1414, 66, 1329, 115, 70, 1419, 72, 3009 73, 74, 972, 130, 112, 114, 110, 110, 81, 82, 3010 108, 766, 767, 1290, 341, 342, 1437, 772, 1295, 110, 3011 108, 107, 107, 52, 1432, 94, 353, 354, 1449, 94, 3012 130, 113, 1002, 110, 107, 114, 109, 40, 1432, 115, 3013 108, 108, 108, 130, 117, 108, 1197, 1198, 157, 1200, 3014 130, 108, 108, 94, 809, 1206, 94, 1218, 1209, 108, 3015 130, 1455, 108, 1521, 819, 115, 95, 822, 1462, 824, 3016 1521, 1521, 827, 828, 829, 130, 1497, 130, 1496, 834, 3017 108, 153, 1052, 1432, 108, 1506, 113, 110, 110, 844, 3018 1455, 1512, 107, 130, 130, 113, 1517, 1462, 1432, 113, 3019 108, 108, 108, 1521, 1522, 1522, 1455, 108, 1070, 218, 3020 130, 566, 569, 1462, 1535, 70, 1537, 72, 73, 74, 3021 1541, 1515, 713, 1544, 567, 570, 81, 82, 1546, 1546, 3022 1464, 1552, 1466, 568, 1295, 1556, 54, 1218, 1017, 1484, 3023 1125, 896, 1374, 1556, 1129, 1130, 468, 256, 1055, 1130, 3024 1515, 260, 107, 1305, 109, 227, 1334, 1127, 280, 1462, 3025 940, 190, 117, 918, 1086, 450, 1515, 1501, 462, 1503, 3026 700, 293, 294, 450, 942, 986, 248, 586, 1455, 888, 3027 653, 253, 743, 305, 213, 1462, 104, 960, 1237, 107, 3028 488, 753, 574, -1, 223, 574, 574, 1531, -1, 954, 3029 4, 5, 6, 7, 8, 9, -1, 962, 963, -1, 3030 -1, -1, -1, -1, 1184, 1185, -1, 1368, -1, 341, 3031 -1, -1, -1, -1, 979, -1, -1, -1, -1, -1, 3032 -1, 675, -1, -1, 152, 1531, -1, 346, 1515, 1521, 3033 10, 11, 12, 13, 14, -1, 1153, -1, -1, 10, 3034 11, 12, 13, 14, -1, 377, -1, -1, 1243, 1014, 3035 -1, -1, 291, 67, -1, 69, -1, 37, -1, -1, 3036 -1, -1, 1027, -1, -1, 347, 37, 1032, 1033, -1, 3037 1035, 1036, -1, -1, 0, 10, 11, 12, 13, 14, 3038 -1, -1, -1, -1, 1455, 65, -1, 215, -1, -1, 3039 1055, 1462, -1, -1, 65, -1, -1, -1, -1, 70, 3040 -1, 1218, 37, 74, -1, 31, 1195, -1, 427, -1, 3041 81, 82, -1, -1, -1, -1, 1233, -1, -1, -1, 3042 -1, 922, -1, -1, -1, 1090, 1091, 107, -1, 109, 3043 65, 1096, 414, -1, -1, 1330, 107, 117, -1, 1334, 3044 66, 269, -1, 675, 1515, -1, 117, 429, 276, -1, 3045 -1, -1, 434, -1, -1, 809, -1, -1, 477, -1, 3046 442, -1, -1, -1, -1, 819, -1, -1, -1, -1, 3047 -1, -1, 107, -1, 109, -1, -1, -1, 1295, -1, 3048 834, -1, 117, 720, -1, 722, 468, 70, 1153, 72, 3049 73, 74, 729, 730, -1, 0, 1, 734, 81, 82, 3050 439, 1290, -1, -1, 486, -1, 488, -1, 70, 746, 3051 72, 73, 74, 1393, 751, -1, 344, -1, -1, 81, 3052 82, 553, 554, 555, 107, -1, 31, 153, -1, -1, 3053 1410, 1196, 63, 361, 473, -1, -1, 365, -1, 776, 3054 -1, 1436, 73, -1, -1, 107, -1, 529, 1213, -1, 3055 -1, -1, -1, 1218, -1, 117, -1, -1, 63, -1, 3056 -1, 66, -1, -1, 596, -1, 1231, -1, 1233, -1, 3057 -1, 510, 1237, -1, -1, 514, -1, 809, 517, -1, 3058 599, -1, -1, 114, 821, -1, -1, 819, -1, -1, 3059 -1, -1, -1, -1, 1095, -1, -1, 1262, -1, -1, 3060 428, -1, 834, 1483, 1484, 1270, 1271, 1272, 627, -1, 3061 -1, -1, 594, 632, -1, -1, 1281, 1282, -1, -1, 3062 -1, -1, 248, -1, -1, -1, 157, 253, -1, -1, 3063 1295, -1, -1, -1, -1, -1, -1, -1, 1455, -1, 3064 -1, 878, 879, 880, 881, 1462, 883, -1, 153, -1, 3065 -1, -1, -1, 1318, -1, -1, -1, 639, 640, 641, 3066 -1, -1, 899, -1, 1329, -1, -1, 10, 11, 12, 3067 13, 14, -1, -1, -1, 657, 913, -1, 1032, 1033, 3068 70, -1, 72, 73, 74, -1, -1, 218, -1, -1, 3069 -1, 81, 82, 675, 37, -1, -1, 729, 1515, -1, 3070 719, -1, -1, -1, 686, -1, -1, -1, -1, -1, 3071 692, -1, -1, 218, 733, 952, -1, 107, -1, -1, 3072 -1, 347, 65, -1, -1, 256, -1, 70, -1, 260, 3073 -1, 74, -1, -1, -1, 674, 1090, 1091, 81, 82, 3074 -1, 1406, 774, 248, 683, 276, 728, -1, 687, 731, 3075 -1, -1, -1, -1, 991, -1, 0, -1, -1, -1, 3076 -1, 998, -1, -1, 107, 593, 1003, 1432, -1, -1, 3077 -1, 1008, -1, 1010, 117, -1, -1, 1014, 1015, 1016, 3078 -1, -1, 1019, -1, -1, 767, -1, 31, 414, 821, 3079 1455, 1028, -1, -1, -1, -1, -1, 1462, 626, -1, 3080 1032, 1033, -1, 429, -1, -1, -1, 826, 434, 1046, 3081 1047, -1, -1, -1, 642, 346, 442, -1, -1, -1, 3082 -1, -1, 66, -1, -1, -1, -1, 809, 656, -1, 3083 -1, -1, -1, -1, -1, -1, 1073, 819, -1, 1076, 3084 822, -1, 468, -1, -1, 827, -1, 829, -1, -1, 3085 1515, -1, 834, -1, -1, -1, -1, 1522, 1090, 1091, 3086 486, 3, 488, 70, -1, 72, 73, 74, 10, 11, 3087 12, 13, 14, -1, 81, 82, -1, 1114, -1, -1, 3088 -1, -1, -1, 1120, 1121, -1, -1, -1, -1, -1, 3089 -1, -1, -1, -1, 1131, 37, 427, -1, -1, 1136, 3090 107, -1, 1139, 529, 1141, -1, -1, 1144, 1262, 153, 3091 117, -1, 0, 444, 896, -1, 1270, 1271, 1272, -1, 3092 1157, -1, -1, 65, 429, 753, -1, -1, -1, -1, 3093 -1, -1, -1, 1170, -1, 1172, 1173, 1174, 1175, -1, 3094 -1, -1, -1, 31, -1, -1, 477, -1, -1, -1, 3095 -1, 1188, -1, 1190, -1, -1, -1, 1194, -1, -1, 3096 -1, -1, -1, 1464, 1318, 1466, -1, -1, 594, -1, 3097 -1, -1, -1, -1, -1, -1, -1, -1, 66, -1, 3098 -1, 920, 1014, 488, -1, 3, 1223, 1224, -1, -1, 3099 -1, -1, 10, 11, 12, 13, 14, 979, 1017, 1231, 3100 1501, -1, 1503, -1, 248, 186, -1, -1, -1, 253, 3101 -1, -1, 193, 639, 640, 641, -1, -1, -1, 37, 3102 -1, -1, -1, 1055, 529, -1, -1, -1, -1, -1, 3103 1262, 657, -1, -1, -1, -1, 1273, 1274, 1270, 1271, 3104 1272, -1, -1, -1, -1, -1, 1283, 65, -1, 675, 3105 1032, 1033, -1, 1035, 1036, -1, -1, -1, -1, -1, 3106 686, -1, -1, -1, -1, 153, 692, -1, 599, -1, 3107 -1, -1, -1, 1055, -1, -1, -1, -1, -1, -1, 3108 -1, -1, -1, -1, 265, -1, 1318, -1, -1, 594, 3109 918, -1, -1, -1, -1, -1, 627, -1, 1335, -1, 3110 -1, 632, 728, 347, -1, 731, -1, -1, 1090, 1091, 3111 1347, -1, 1349, 1350, 1351, -1, -1, 70, -1, 72, 3112 73, 74, -1, -1, 1361, -1, -1, 1066, 81, 82, 3113 -1, -1, -1, 1370, 639, 640, 641, -1, 1170, 320, 3114 -1, 767, -1, -1, -1, -1, -1, 328, -1, 1386, 3115 331, -1, 657, -1, 107, -1, 109, -1, -1, -1, 3116 248, -1, -1, -1, 117, 253, -1, -1, -1, -1, 3117 414, 1153, -1, -1, -1, -1, 1195, -1, -1, -1, 3118 -1, -1, -1, 809, -1, 429, -1, -1, 719, -1, 3119 434, -1, -1, 819, -1, -1, 822, -1, 442, -1, 3120 -1, 827, 733, 829, -1, 1442, 1443, -1, 834, -1, 3121 -1, -1, -1, 394, 1196, -1, -1, 398, 1455, -1, 3122 -1, -1, 753, -1, 468, 1462, 731, -1, -1, -1, 3123 -1, -1, -1, -1, -1, -1, 1218, -1, -1, -1, 3124 -1, -1, 486, -1, 488, -1, -1, -1, -1, 1231, 3125 -1, 1233, -1, -1, -1, -1, -1, -1, 1495, 347, 3126 -1, -1, 1499, -1, -1, -1, -1, -1, -1, -1, 3127 896, 1290, -1, -1, -1, -1, -1, -1, -1, -1, 3128 1262, -1, -1, -1, -1, 529, -1, -1, 1270, 1271, 3129 1272, 1528, -1, 1530, -1, 826, -1, -1, -1, 1281, 3130 1282, -1, 483, -1, 10, 11, 12, 13, 14, -1, 3131 -1, -1, -1, 1295, -1, -1, -1, 822, -1, -1, 3132 -1, 1558, 1559, -1, 829, -1, 414, -1, -1, 1566, 3133 1567, 37, -1, -1, -1, -1, 1318, -1, -1, -1, 3134 -1, 429, -1, -1, -1, -1, 434, -1, -1, -1, 3135 594, -1, -1, 979, 442, -1, -1, -1, -1, 65, 3136 -1, -1, -1, -1, 70, 1304, 72, 73, 74, -1, 3137 -1, -1, -1, -1, -1, 81, 82, -1, -1, -1, 3138 468, -1, -1, -1, -1, 1213, -1, -1, -1, -1, 3139 -1, 896, -1, 574, 575, 639, 640, 641, 486, -1, 3140 488, 107, -1, 109, -1, -1, 1032, 1033, -1, 1035, 3141 1036, 117, -1, 657, -1, -1, -1, -1, -1, -1, 3142 -1, -1, -1, -1, 1406, -1, -1, -1, -1, 1055, 3143 -1, 675, -1, -1, -1, -1, -1, -1, -1, -1, 3144 -1, 529, 686, -1, -1, -1, -1, -1, 692, 10, 3145 11, 12, 13, 14, -1, -1, -1, -1, 963, -1, 3146 -1, -1, -1, -1, 1090, 1091, -1, 25, 26, 27, 3147 -1, -1, -1, 1455, 979, -1, 37, -1, -1, -1, 3148 1462, 662, -1, -1, 728, 666, 1017, 731, 95, 96, 3149 97, 98, 99, 100, 101, 102, 103, 104, -1, -1, 3150 -1, -1, -1, -1, 65, -1, 594, -1, -1, 70, 3151 -1, 72, 73, 74, -1, -1, -1, -1, 699, -1, 3152 81, 82, 129, 767, 1463, -1, 1465, 1153, -1, -1, 3153 1035, 1036, -1, 1515, -1, -1, -1, -1, 96, -1, 3154 98, -1, -1, -1, -1, -1, 107, -1, 109, -1, 3155 1055, 639, 640, 641, -1, -1, 117, -1, -1, -1, 3156 1388, 1500, -1, 1502, 122, 809, -1, -1, -1, 657, 3157 1196, -1, -1, -1, -1, 819, -1, -1, 822, -1, 3158 -1, -1, -1, 827, -1, 829, -1, 675, -1, -1, 3159 834, -1, 1218, -1, -1, -1, -1, -1, 686, 10, 3160 11, 12, 13, 14, 692, 1231, 1545, 1233, 1547, -1, 3161 -1, -1, 10, 11, 12, 13, 14, -1, -1, -1, 3162 178, 1560, 1561, -1, -1, -1, 37, -1, 186, -1, 3163 188, 189, 813, -1, -1, 193, 1262, 195, 196, 37, 3164 728, -1, -1, 731, 1270, 1271, 1272, -1, -1, 25, 3165 26, 27, 896, -1, 65, 1281, 1282, -1, -1, 70, 3166 -1, 72, 73, 74, 1195, -1, -1, 65, -1, 1295, 3167 81, 82, 70, -1, 72, 73, 74, -1, -1, 767, 3168 -1, -1, -1, 81, 82, -1, -1, -1, -1, -1, 3169 1195, 1196, 1318, -1, -1, -1, 107, -1, 109, -1, 3170 -1, -1, -1, -1, -1, -1, 117, 265, -1, 107, 3171 -1, -1, -1, 1218, -1, -1, -1, -1, -1, 117, 3172 96, 809, 98, -1, -1, -1, -1, -1, 63, -1, 3173 -1, 819, 1237, -1, 822, 979, -1, -1, 73, 827, 3174 75, 829, 77, -1, 44, 926, 834, -1, -1, 84, 3175 -1, -1, -1, -1, -1, -1, -1, -1, -1, 1290, 3176 -1, -1, -1, 63, -1, -1, -1, -1, -1, -1, 3177 10, 11, 12, 13, 14, -1, 1281, 1282, -1, 114, 3178 1406, 116, 117, 118, -1, 1290, -1, -1, 1032, 1033, 3179 1295, 1035, 1036, -1, -1, -1, -1, 37, -1, -1, 3180 -1, -1, 178, -1, -1, -1, -1, -1, 896, 109, 3181 -1, 1055, 188, 189, 114, -1, -1, 193, -1, 195, 3182 196, -1, 157, 1004, 1329, 65, -1, -1, -1, 1455, 3183 70, -1, 72, 73, 74, -1, 1462, -1, -1, 1020, 3184 -1, 81, 82, 143, -1, -1, 1090, 1091, -1, -1, 3185 -1, -1, -1, 153, -1, -1, -1, 157, -1, -1, 3186 -1, -1, -1, -1, -1, -1, -1, 107, -1, -1, 3187 -1, -1, -1, -1, -1, -1, -1, 117, -1, -1, 3188 -1, -1, -1, 218, -1, 220, 221, 222, -1, 1515, 3189 -1, 979, -1, -1, -1, -1, -1, -1, -1, -1, 3190 -1, 1406, -1, -1, -1, -1, 206, -1, -1, 1153, 3191 -1, -1, -1, -1, -1, -1, 1097, -1, 218, -1, 3192 -1, 256, -1, -1, -1, 260, -1, 1432, -1, -1, 3193 -1, -1, -1, -1, -1, -1, 236, 237, -1, -1, 3194 -1, 276, -1, -1, 1032, 1033, -1, 1035, 1036, -1, 3195 1455, -1, 1196, -1, -1, -1, -1, 1462, -1, -1, 3196 260, -1, -1, -1, -1, -1, -1, 1055, 268, -1, 3197 -1, -1, -1, -1, 1218, -1, -1, -1, -1, -1, 3198 -1, -1, -1, -1, -1, -1, -1, 1231, -1, 1233, 3199 325, 291, -1, -1, 294, -1, -1, -1, -1, -1, 3200 -1, -1, 1090, 1091, -1, -1, -1, -1, -1, -1, 3201 1515, 346, -1, -1, -1, -1, 351, 352, 1262, -1, 3202 578, 579, -1, -1, 359, -1, 1270, 1271, 1272, -1, 3203 -1, -1, -1, -1, -1, -1, -1, 1281, 1282, -1, 3204 -1, 341, -1, -1, -1, -1, 346, -1, -1, -1, 3205 608, 1295, -1, 611, 612, 36, 614, 38, 616, 617, 3206 -1, -1, -1, 621, 622, 1153, -1, 402, -1, -1, 3207 -1, -1, -1, -1, 1318, -1, -1, -1, -1, -1, 3208 -1, -1, -1, 64, -1, 420, -1, -1, -1, 70, 3209 425, -1, 427, 74, -1, -1, 77, 78, 79, 80, 3210 81, 82, -1, 84, 85, -1, -1, -1, 1196, 444, 3211 -1, 92, 447, 448, -1, -1, -1, -1, -1, -1, 3212 -1, -1, 422, 423, -1, -1, 107, -1, 463, 429, 3213 1218, -1, -1, -1, -1, 116, 117, 118, 119, 120, 3214 121, 699, 477, 1231, -1, 1233, 704, 705, -1, 484, 3215 450, -1, 710, 453, -1, -1, -1, -1, -1, 459, 3216 -1, -1, 1406, -1, -1, -1, -1, -1, -1, -1, 3217 -1, -1, -1, -1, 1262, -1, -1, -1, -1, -1, 3218 -1, -1, 1270, 1271, 1272, -1, 486, -1, -1, -1, 3219 -1, -1, -1, 1281, 1282, -1, -1, -1, 498, -1, 3220 -1, -1, 578, 579, -1, -1, 43, 1295, -1, -1, 3221 510, 1455, -1, -1, 514, -1, 516, 517, 1462, -1, 3222 -1, -1, -1, -1, -1, -1, -1, -1, -1, 529, 3223 1318, -1, 608, -1, -1, 611, 612, -1, 614, -1, 3224 616, 617, -1, -1, -1, 621, 622, -1, -1, -1, 3225 -1, -1, 89, -1, -1, -1, -1, -1, -1, -1, 3226 -1, -1, 99, -1, 599, -1, -1, -1, -1, -1, 3227 -1, 1515, -1, -1, -1, -1, -1, -1, -1, -1, 3228 -1, -1, 582, -1, -1, -1, -1, -1, -1, -1, 3229 -1, -1, 627, -1, 594, -1, 596, 632, -1, 599, 3380 24, 25, 26, 1141, -1, 29, 30, 31, -1, -1, 3381 728, 729, -1, 37, -1, 1153, -1, -1, 1156, -1, 3382 1158, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3383 -1, -1, -1, -1, 1172, 1173, 60, -1, 62, -1, 3384 64, -1, -1, 67, 68, 763, 764, -1, -1, -1, 3385 768, 769, -1, -1, -1, -1, 1194, -1, -1, -1, 3386 -1, -1, 375, -1, -1, -1, -1, -1, -1, -1, 3387 -1, -1, -1, -1, 968, -1, -1, -1, -1, 103, 3388 -1, -1, 1220, -1, -1, -1, -1, 111, -1, -1, 3389 -1, 809, -1, -1, -1, -1, -1, -1, -1, -1, 3390 818, -1, -1, 997, -1, -1, 824, 825, -1, -1, 3391 -1, 829, -1, 831, -1, 1009, -1, -1, -1, -1, 3392 -1, -1, -1, 841, -1, -1, -1, 10, 11, 12, 3393 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 3394 23, 24, 25, 26, 27, -1, 29, 30, 31, -1, 3395 -1, -1, -1, -1, 37, -1, 1050, -1, -1, -1, 3396 -1, -1, -1, 476, -1, -1, -1, -1, -1, -1, 3397 -1, -1, -1, -1, 1312, -1, 1314, 60, -1, -1, 3398 -1, -1, 65, -1, 67, 68, 69, 1513, 71, 1327, 3399 -1, 1329, -1, 76, 77, -1, 914, -1, -1, -1, 3400 -1, 514, -1, -1, 922, -1, -1, -1, -1, 1347, 3401 928, -1, -1, -1, 527, -1, -1, -1, 936, -1, 3402 103, 534, -1, -1, -1, 1363, 1120, -1, 111, -1, 3403 -1, 949, 950, 1371, 547, 548, 1374, -1, 10, 11, 3404 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 3405 22, 23, 24, 25, 26, 27, 569, 975, 1396, -1, 3406 -1, -1, -1, 981, -1, 37, 579, 1405, -1, 1163, 3407 1408, 1409, -1, 586, -1, -1, -1, -1, 591, -1, 3408 -1, 999, 1000, 1177, 1178, -1, -1, -1, 60, -1, 3409 -1, 1009, -1, -1, -1, -1, -1, 1015, 1016, 71, 3410 1018, 1019, 1020, -1, -1, -1, -1, 1445, -1, 1447, 3411 -1, -1, 1030, 1031, -1, -1, -1, -1, -1, -1, 3412 -1, -1, -1, -1, 1462, -1, -1, -1, 641, -1, 3413 -1, -1, -1, -1, -1, -1, 649, 4, 5, 6, 3414 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 3415 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3416 -1, -1, 29, 30, 31, -1, -1, -1, -1, -1, 3417 37, 1089, 1090, 1091, -1, -1, 689, -1, -1, -1, 3418 -1, -1, -1, -1, 1102, -1, -1, -1, -1, -1, 3419 -1, -1, -1, 60, -1, 62, -1, 64, -1, -1, 3420 67, 68, -1, 3, 4, 5, 6, 7, 8, 9, 3230 3421 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 3231 20, 21, 22, 23, 24, 25, 26, 154, 1406, 29, 3232 30, 31, -1, -1, -1, 625, -1, 37, 704, 705, 3233 630, 168, -1, -1, 710, -1, -1, -1, -1, 639, 3234 640, 641, -1, -1, -1, -1, -1, -1, -1, -1, 3235 -1, -1, -1, -1, 191, 65, -1, 657, -1, -1, 3236 70, -1, 72, 73, 74, -1, -1, 1455, 205, -1, 3237 -1, 81, 82, -1, 1462, -1, -1, 214, -1, -1, 3238 -1, -1, -1, -1, 719, -1, -1, 224, -1, -1, 3239 -1, -1, 692, -1, -1, -1, -1, 107, 733, 109, 3240 -1, 36, -1, 38, -1, -1, -1, 117, -1, -1, 3241 -1, -1, 249, 713, -1, -1, -1, 254, 753, -1, 3242 -1, -1, -1, -1, -1, -1, -1, 1515, -1, 64, 3243 267, 731, -1, 733, -1, 70, 273, -1, 275, 74, 3244 -1, -1, 77, 78, 79, 80, 81, 82, -1, 84, 3245 85, -1, -1, -1, -1, 292, -1, 92, -1, -1, 3246 -1, -1, -1, -1, -1, -1, -1, 767, -1, -1, 3247 -1, -1, 107, -1, 109, -1, -1, 112, 813, -1, 3248 -1, 116, 117, 118, 119, 120, 121, -1, -1, -1, 3249 -1, 826, -1, -1, -1, -1, -1, -1, 335, -1, 3250 -1, -1, -1, 340, -1, -1, -1, -1, -1, -1, 3251 845, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3252 -1, -1, 822, -1, -1, -1, 826, -1, -1, 829, 3253 -1, 368, -1, -1, 1092, 372, 373, -1, 375, -1, 3254 -1, -1, -1, -1, -1, 382, 383, -1, 385, 386, 3255 -1, 388, -1, 390, -1, -1, -1, -1, -1, -1, 3256 -1, 7, -1, -1, 10, 11, 12, 13, 14, -1, 3257 407, -1, -1, -1, -1, -1, -1, -1, 415, -1, 3422 20, 21, 22, 23, 24, 25, 26, -1, 1146, 29, 3423 30, 31, 32, -1, -1, 35, 103, 37, 38, -1, 3424 -1, -1, -1, -1, 111, -1, -1, -1, -1, -1, 3425 -1, 764, -1, 766, -1, -1, -1, 57, -1, 772, 3426 60, -1, 62, -1, 64, 65, 779, 67, 68, 69, 3427 -1, -1, -1, -1, -1, -1, 76, 77, -1, -1, 3428 -1, -1, -1, 1377, -1, -1, -1, -1, 1206, -1, 3258 3429 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3259 36, 37, 38, -1, -1, -1, -1, 932, -1, -1, 3260 -1, -1, -1, 440, -1, -1, -1, -1, -1, -1, 3261 -1, -1, -1, -1, 451, -1, -1, -1, 64, 65, 3262 -1, -1, 922, 958, 70, -1, -1, -1, 74, -1, 3263 -1, 77, 78, 79, 80, 81, 82, 474, 84, 85, 3264 -1, -1, -1, 480, -1, -1, 92, -1, 485, -1, 3265 985, -1, -1, -1, -1, -1, -1, 1215, -1, -1, 3266 -1, 107, -1, 109, 964, -1, -1, -1, -1, -1, 3267 116, 117, 118, 119, 120, 121, -1, -1, -1, 979, 3268 -1, -1, 1017, -1, 521, -1, -1, -1, -1, -1, 3269 -1, -1, -1, 1028, -1, -1, -1, -1, -1, -1, 3270 537, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3271 -1, -1, -1, -1, 1014, -1, 1092, -1, -1, 7, 3272 -1, -1, 10, 11, 12, 13, 14, -1, -1, -1, 3273 -1, -1, -1, -1, -1, 1035, 1036, 574, -1, -1, 3274 -1, -1, -1, -1, -1, 143, 583, -1, 36, 37, 3275 38, -1, -1, 590, -1, 153, -1, -1, 595, -1, 3276 -1, -1, -1, -1, -1, -1, -1, 165, 166, 606, 3277 -1, -1, -1, -1, 1109, -1, 64, 65, -1, -1, 3278 -1, -1, 70, -1, -1, -1, 74, -1, -1, 77, 3279 78, 79, 80, 81, 82, 1095, 84, 85, -1, -1, 3280 -1, -1, -1, -1, 92, -1, -1, -1, -1, -1, 3281 647, -1, -1, -1, -1, -1, -1, -1, -1, 107, 3282 -1, 109, -1, -1, -1, -1, -1, -1, 116, 117, 3283 118, 119, 120, 121, -1, -1, -1, -1, 236, 1215, 3284 -1, -1, -1, -1, -1, 682, -1, 152, 153, -1, 3285 -1, -1, -1, 1153, -1, -1, -1, -1, -1, -1, 3286 1195, -1, -1, 261, 10, 11, 12, 13, 14, 15, 3287 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 3288 26, 186, -1, 29, 30, 31, -1, -1, 193, -1, 3289 -1, 37, -1, -1, -1, 1195, -1, -1, -1, -1, 3290 737, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3291 747, 748, -1, -1, -1, -1, -1, -1, -1, 65, 3292 -1, -1, -1, 760, 70, -1, 72, 73, 74, -1, 3293 -1, -1, -1, 1233, -1, 81, 82, -1, -1, -1, 3294 777, -1, 779, -1, -1, -1, 783, -1, -1, -1, 3295 -1, -1, -1, -1, -1, 1290, -1, -1, -1, -1, 3296 265, 107, -1, 109, -1, -1, -1, -1, -1, -1, 3297 -1, 117, -1, -1, -1, -1, -1, -1, 376, -1, 3298 -1, 1281, 1282, -1, -1, -1, -1, -1, -1, -1, 3299 1290, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3300 -1, 36, -1, 38, -1, -1, -1, -1, -1, -1, 3301 -1, -1, 849, -1, -1, 320, -1, -1, -1, 856, 3302 -1, -1, -1, 328, 329, -1, 331, 332, -1, 64, 3303 -1, -1, 869, -1, 871, 70, 341, 72, 73, 74, 3304 345, -1, 77, 78, 79, 80, 81, 82, 885, 84, 3305 85, -1, -1, -1, -1, 892, -1, 92, -1, 364, 3306 -1, -1, 367, -1, -1, -1, -1, 904, -1, -1, 3307 907, -1, 107, -1, 109, -1, 111, 112, -1, -1, 3308 478, 116, 117, 118, 119, 120, 121, -1, 925, 394, 3309 -1, -1, -1, 398, -1, -1, -1, -1, -1, -1, 3310 -1, -1, -1, -1, -1, -1, 1406, -1, -1, -1, 3311 -1, -1, -1, -1, -1, -1, -1, -1, 516, -1, 3312 -1, -1, -1, -1, 429, -1, -1, -1, -1, -1, 3313 -1, 529, -1, -1, -1, -1, -1, -1, 536, -1, 3314 -1, 539, -1, -1, -1, -1, -1, 452, -1, -1, 3315 -1, -1, 550, 551, -1, -1, -1, -1, -1, -1, 3316 -1, -1, -1, -1, 1464, -1, 1466, -1, -1, -1, 3317 -1, -1, -1, -1, 572, -1, 1013, -1, 483, -1, 3318 -1, 486, -1, -1, 582, -1, -1, -1, -1, -1, 3319 -1, 589, -1, -1, -1, -1, 594, -1, -1, -1, 3320 -1, 1501, -1, 1503, -1, -1, -1, -1, -1, -1, 3321 -1, 1546, -1, -1, -1, -1, -1, -1, -1, -1, 3322 525, -1, -1, 528, 529, -1, -1, -1, -1, -1, 3323 -1, 1531, 1069, -1, -1, -1, -1, -1, -1, 1076, 3324 -1, -1, -1, -1, -1, -1, 644, -1, -1, -1, 3325 -1, -1, -1, -1, 652, -1, -1, -1, -1, -1, 3326 -1, -1, -1, -1, -1, -1, -1, -1, 1105, 574, 3327 575, -1, -1, 1110, -1, -1, -1, -1, -1, -1, 3328 -1, 1118, -1, -1, -1, -1, -1, -1, 593, 594, 3329 -1, 596, -1, -1, 692, -1, -1, -1, -1, -1, 3330 605, -1, 607, 608, -1, -1, -1, -1, -1, 614, 3331 -1, 1148, -1, -1, -1, -1, -1, -1, -1, 624, 3332 625, -1, -1, 1160, -1, 630, 1163, -1, 1165, -1, 3333 -1, -1, -1, -1, 639, 640, 641, -1, -1, -1, 3334 -1, -1, 1179, 1180, -1, -1, -1, -1, -1, -1, 3335 -1, -1, 657, -1, -1, -1, -1, 662, 663, -1, 3336 -1, 666, 667, -1, 1201, -1, -1, -1, 673, 767, 3337 -1, 769, -1, -1, -1, -1, -1, 775, -1, -1, 3338 -1, -1, -1, -1, 782, -1, 691, 692, 693, -1, 3339 695, 1228, -1, -1, 699, -1, 10, 11, 12, 13, 3340 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 3341 24, 25, 26, -1, -1, 29, 30, 31, -1, -1, 3342 -1, -1, -1, 37, 38, -1, 731, 732, 826, 827, 3343 -1, 829, -1, -1, -1, -1, -1, -1, -1, -1, 3344 -1, -1, -1, -1, -1, -1, 844, -1, -1, -1, 3345 -1, 65, -1, -1, -1, -1, -1, -1, 72, 73, 3346 -1, 766, 767, -1, -1, -1, 771, 772, -1, -1, 3430 1394, 101, -1, 103, -1, -1, -1, 1225, -1, 822, 3431 823, 111, 825, -1, -1, -1, -1, -1, -1, -1, 3432 -1, -1, -1, -1, -1, -1, -1, 840, -1, -1, 3433 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 3434 20, 21, 22, 23, 24, 25, 26, -1, -1, -1, 3435 -1, -1, -1, -1, -1, 1273, 1274, 37, -1, -1, 3436 -1, -1, -1, 1457, 1458, -1, -1, 880, -1, -1, 3437 -1, 884, -1, -1, -1, -1, -1, -1, -1, -1, 3438 60, -1, -1, -1, 3, 4, 5, 6, 7, 8, 3439 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3440 19, 20, 21, 22, 23, 24, 25, 26, -1, -1, 3441 29, 30, 31, 32, -1, -1, 35, 36, 37, 38, 3442 39, -1, 41, -1, -1, 44, 45, 46, 47, 48, 3443 49, 50, 51, -1, 53, -1, -1, 56, 57, -1, 3444 59, 60, -1, 62, -1, 64, 65, 960, 67, 68, 3445 69, -1, -1, 72, 73, 74, 75, 76, 77, -1, 3446 79, 80, 975, 976, -1, -1, -1, -1, 87, 982, 3447 -1, -1, 1390, -1, -1, 988, -1, -1, 991, -1, 3448 993, -1, 101, -1, 103, -1, 36, 106, 38, -1, 3449 -1, 110, 111, 112, 113, 114, 115, -1, -1, 1012, 3450 -1, -1, -1, -1, -1, 124, -1, -1, -1, 59, 3451 1023, -1, -1, -1, -1, 65, -1, -1, -1, 69, 3452 -1, -1, 72, 73, 74, 75, 76, 77, -1, 79, 3453 80, -1, 1045, -1, 1047, -1, -1, 87, -1, -1, 3454 -1, -1, -1, -1, -1, -1, -1, -1, -1, 1062, 3455 -1, 101, 1470, 103, -1, -1, 106, -1, -1, -1, 3456 110, 111, 112, 113, 114, 115, -1, 36, 1081, 38, 3457 39, -1, 41, 1491, 1492, 44, 45, 46, 47, 48, 3458 49, 50, 51, -1, 53, -1, -1, 56, 57, -1, 3459 59, -1, -1, -1, -1, 1513, 65, -1, -1, -1, 3460 69, -1, -1, 72, 73, 74, 75, 76, 77, -1, 3461 79, 80, -1, -1, 1127, -1, -1, -1, 87, -1, 3347 3462 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3348 -1, -1, -1, -1, -1, -1, 884, 1324, -1, 1326, 3349 888, -1, -1, -1, -1, 109, -1, -1, -1, 113, 3350 -1, -1, 1339, 117, 1341, -1, -1, -1, 813, -1, 3351 -1, -1, -1, -1, -1, -1, -1, 822, -1, -1, 3352 -1, -1, 1359, 828, 829, -1, -1, -1, 833, -1, 3353 835, -1, -1, -1, 279, 280, 281, -1, 1375, 1376, 3354 845, -1, -1, 288, 289, -1, -1, -1, 293, 294, 3355 1387, -1, -1, 1390, -1, -1, -1, -1, -1, -1, 3356 305, -1, -1, -1, -1, -1, 964, -1, -1, -1, 3357 -1, -1, -1, -1, -1, 1412, -1, -1, -1, -1, 3358 -1, 979, 980, -1, 1421, -1, -1, 1424, 986, 1426, 3359 1427, 1428, -1, -1, 992, -1, 341, 995, -1, 997, 3463 -1, -1, 101, 1146, 103, -1, -1, 106, -1, -1, 3464 -1, 110, 111, 112, 113, 114, 115, -1, 1161, 1162, 3465 -1, -1, 3, 4, 5, 6, 7, 8, 9, 10, 3466 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 3467 21, 22, 23, 24, 25, 26, -1, -1, 29, 30, 3468 31, 32, -1, -1, 35, 36, 37, 38, -1, -1, 3360 3469 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3361 -1, -1, -1, 918, -1, -1, -1, -1, -1, 1017, 3362 -1, 926, -1, -1, -1, -1, -1, 932, -1, -1, 3363 1028, 1468, 377, 1470, -1, 940, 1473, -1, -1, -1, 3364 -1, -1, -1, -1, -1, -1, -1, -1, 953, 954, 3365 -1, 1488, 1050, -1, 1052, -1, -1, -1, -1, -1, 3366 -1, -1, -1, -1, -1, -1, -1, -1, -1, 1067, 3367 1068, -1, -1, -1, 979, -1, -1, -1, -1, -1, 3368 985, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3369 1088, -1, -1, -1, -1, -1, -1, -1, -1, 1004, 3370 1005, 36, -1, 38, -1, -1, -1, -1, -1, 1014, 3371 -1, -1, -1, -1, -1, 1020, 1021, -1, 1023, 1024, 3372 1025, -1, -1, -1, -1, -1, -1, -1, -1, 64, 3373 1035, 1036, -1, -1, -1, 70, 1134, -1, -1, 74, 3374 -1, -1, 77, 78, 79, 80, 81, 82, -1, 84, 3375 85, -1, -1, -1, -1, 1153, -1, 92, -1, -1, 3470 -1, -1, -1, -1, -1, -1, -1, -1, 59, 60, 3471 -1, 62, -1, 64, 65, -1, 67, 68, 69, -1, 3472 -1, 72, 73, 74, 75, 76, 77, 1240, 79, 80, 3473 -1, -1, -1, -1, -1, -1, 87, -1, -1, -1, 3376 3474 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3377 1168, 1169, 107, -1, 109, -1, -1, -1, -1, -1, 3378 115, 116, 117, 118, 119, 120, 121, -1, -1, -1, 3379 -1, 1096, 1097, 1098, -1, -1, -1, -1, -1, -1, 3380 -1, -1, -1, -1, 1109, -1, -1, -1, 553, 554, 3381 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 3382 565, 566, 567, 568, 569, 570, -1, -1, -1, -1, 3383 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3384 -1, -1, -1, -1, -1, -1, -1, -1, 1153, -1, 3385 1248, 596, 0, -1, -1, 3, 4, 5, 6, 7, 3386 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 3387 18, 19, 20, 21, 22, 23, 24, 25, 26, -1, 3388 -1, 29, 30, 31, 32, -1, -1, 35, -1, 37, 3389 38, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3390 19, 20, 21, 22, 23, 24, 25, 26, 1213, -1, 3391 -1, 1309, -1, 1311, 62, -1, -1, 65, 37, 67, 3392 -1, 69, 70, -1, 72, 73, 74, -1, 1233, -1, 3393 -1, -1, -1, 81, 82, -1, -1, -1, -1, -1, 3394 -1, -1, -1, -1, -1, -1, 65, -1, -1, 694, 3395 -1, -1, -1, -1, -1, -1, -1, -1, -1, 107, 3396 -1, 109, -1, -1, -1, -1, -1, -1, -1, 117, 3397 -1, 716, -1, -1, -1, -1, 1281, 1282, -1, -1, 3398 -1, -1, -1, -1, 729, -1, -1, -1, -1, -1, 3399 -1, -1, -1, -1, -1, -1, -1, -1, -1, 1397, 3475 101, -1, 103, -1, -1, -1, -1, -1, -1, 110, 3476 111, 112, 113, 114, 115, -1, -1, -1, -1, -1, 3477 -1, -1, -1, 124, 3, 4, 5, 6, 7, 8, 3478 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3479 19, 20, 21, 22, 23, 24, 25, 26, -1, -1, 3480 29, 30, 31, 32, -1, -1, 35, 36, 37, 38, 3400 3481 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3401 3482 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3402 -1, -1, -1, -1, -1, -1, -1, -1, -1, 774, 3403 -1, -1, -1, -1, -1, -1, 3, 4, 5, 6, 3483 59, 60, -1, 62, -1, 64, 65, -1, 67, 68, 3484 69, -1, -1, 72, 73, 74, 75, 76, 77, -1, 3485 79, 80, -1, -1, -1, -1, -1, -1, 87, -1, 3486 -1, -1, -1, -1, -1, -1, -1, -1, 1381, -1, 3487 -1, -1, 101, -1, 103, -1, -1, -1, -1, -1, 3488 -1, 110, 111, 112, 113, 114, 115, 4, 5, 6, 3404 3489 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 3405 3490 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3406 -1, 806, 29, 30, 31, 32, -1, -1, 35, 36, 3407 37, 38, -1, -1, -1, -1, 821, -1, -1, -1, 3408 -1, 1479, -1, -1, -1, -1, -1, -1, -1, -1, 3409 -1, -1, -1, -1, -1, -1, -1, 64, 65, -1, 3410 67, 1406, 69, 70, -1, 72, 73, 74, -1, -1, 3411 77, 78, 79, 80, 81, 82, -1, 84, 85, -1, 3412 -1, -1, -1, -1, -1, 92, -1, -1, -1, -1, 3413 -1, -1, -1, 1531, -1, -1, -1, -1, -1, -1, 3414 107, -1, 109, -1, -1, -1, -1, -1, -1, 116, 3415 117, 118, 119, 120, 121, -1, -1, -1, -1, -1, 3416 -1, -1, -1, 130, -1, -1, -1, -1, -1, -1, 3491 -1, -1, 29, 30, 31, -1, -1, -1, -1, 36, 3492 37, 38, -1, -1, -1, -1, -1, -1, -1, -1, 3417 3493 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3418 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3419 -1, 1496, 3, 4, 5, 6, 7, 8, 9, 10, 3420 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 3421 21, 22, 23, 24, 25, 26, 1521, 1522, 29, 30, 3422 31, -1, -1, -1, -1, -1, 37, 972, -1, -1, 3423 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3424 -1, 1546, -1, -1, -1, -1, -1, -1, -1, -1, 3425 -1, -1, -1, -1, 65, -1, 67, 1002, 69, -1, 3426 -1, 72, 73, -1, -1, -1, -1, -1, -1, 1014, 3427 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 3428 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 3429 23, 24, 25, 26, -1, -1, 29, 30, 31, 32, 3430 -1, 112, 35, 36, 37, 38, 39, -1, 41, -1, 3431 1055, 44, 45, 46, 47, 48, 49, 50, 51, -1, 3432 -1, -1, 55, -1, -1, -1, 59, 60, -1, 62, 3433 -1, 64, 65, -1, 67, -1, 69, 70, -1, 72, 3434 73, 74, -1, -1, 77, 78, 79, 80, 81, 82, 3435 -1, 84, 85, -1, -1, -1, -1, -1, -1, 92, 3436 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3437 -1, -1, -1, -1, 107, -1, 109, -1, -1, 112, 3438 -1, -1, 1127, 116, 117, 118, 119, 120, 121, -1, 3439 -1, -1, -1, 126, -1, -1, -1, 130, -1, -1, 3440 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 3441 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 3442 23, 24, 25, 26, -1, 1170, 29, 30, 31, 32, 3443 -1, -1, 35, 36, 37, 38, -1, -1, -1, 1184, 3444 1185, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3445 19, 20, 21, 22, 23, 24, 25, 26, 27, -1, 3446 -1, 64, 65, -1, 67, -1, 69, 70, 37, 72, 3447 73, 74, -1, -1, 77, 78, 79, 80, 81, 82, 3448 -1, 84, 85, -1, -1, -1, -1, -1, -1, 92, 3449 -1, -1, -1, -1, -1, -1, 65, -1, -1, -1, 3450 -1, -1, -1, -1, 107, -1, 109, 76, -1, -1, 3451 -1, -1, -1, 116, 117, 118, 119, 120, 121, 4, 3494 1453, -1, 59, 60, -1, 62, -1, 64, 65, -1, 3495 67, 68, 69, -1, -1, 72, 73, 74, 75, 76, 3496 77, -1, 79, 80, -1, -1, -1, -1, -1, -1, 3497 87, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3498 -1, -1, -1, -1, 101, 1498, 103, -1, -1, -1, 3499 -1, 108, -1, 110, 111, 112, 113, 114, 115, 4, 3452 3500 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 3453 3501 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3454 3502 25, 26, -1, -1, 29, 30, 31, -1, -1, -1, 3455 -1, 36, 37, 38, 10, 11, 12, 13, 14, 15, 3456 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 3457 26, 27, -1, 29, 30, 31, -1, -1, -1, 64, 3458 65, 37, 67, -1, 69, 70, -1, 72, 73, 74, 3459 -1, -1, 77, 78, 79, 80, 81, 82, -1, 84, 3460 85, -1, -1, -1, -1, -1, -1, 92, -1, 65, 3461 -1, -1, -1, -1, 70, -1, 72, 73, 74, -1, 3462 76, -1, 107, -1, 109, 81, 82, -1, -1, 114, 3463 -1, 116, 117, 118, 119, 120, 121, -1, -1, -1, 3464 -1, -1, -1, -1, -1, -1, -1, -1, 1393, -1, 3465 -1, 107, -1, 109, -1, -1, -1, -1, -1, -1, 3466 -1, 117, -1, -1, -1, 1410, -1, 4, 5, 6, 3503 -1, 36, 37, 38, -1, -1, -1, -1, -1, -1, 3504 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3505 -1, -1, -1, -1, 59, 60, -1, 62, -1, 64, 3506 65, -1, 67, 68, 69, -1, -1, 72, 73, 74, 3507 75, 76, 77, -1, 79, 80, -1, -1, -1, -1, 3508 -1, -1, 87, -1, -1, -1, -1, -1, -1, -1, 3509 -1, -1, -1, -1, -1, -1, 101, -1, 103, -1, 3510 -1, -1, -1, 108, -1, 110, 111, 112, 113, 114, 3511 115, 4, 5, 6, 7, 8, 9, 10, 11, 12, 3512 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 3513 23, 24, 25, 26, -1, -1, 29, 30, 31, -1, 3514 -1, -1, -1, 36, 37, 38, -1, -1, -1, -1, 3515 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3516 -1, -1, -1, -1, -1, -1, 59, 60, -1, 62, 3517 -1, 64, 65, -1, 67, 68, 69, -1, -1, 72, 3518 73, 74, 75, 76, 77, -1, 79, 80, -1, -1, 3519 -1, -1, -1, -1, 87, -1, -1, -1, -1, -1, 3520 -1, -1, -1, -1, -1, -1, -1, -1, 101, -1, 3521 103, -1, -1, -1, -1, 108, -1, 110, 111, 112, 3522 113, 114, 115, 4, 5, 6, 7, 8, 9, 10, 3523 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 3524 21, 22, 23, 24, 25, 26, -1, -1, 29, 30, 3525 31, -1, -1, -1, -1, 36, 37, 38, -1, -1, 3526 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3527 -1, -1, -1, -1, -1, -1, -1, -1, 59, 60, 3528 -1, 62, -1, 64, 65, -1, 67, 68, 69, -1, 3529 -1, 72, 73, 74, 75, 76, 77, -1, 79, 80, 3530 -1, -1, -1, -1, -1, -1, 87, -1, -1, -1, 3531 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3532 101, -1, 103, -1, -1, -1, -1, -1, -1, 110, 3533 111, 112, 113, 114, 115, 4, 5, 6, 7, 8, 3534 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3535 19, 20, 21, 22, 23, 24, 25, 26, -1, -1, 3536 29, 30, 31, -1, -1, -1, -1, 36, 37, 38, 3537 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3538 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3539 59, 60, -1, 62, -1, 64, 65, -1, 67, 68, 3540 69, -1, -1, 72, 73, 74, 75, 76, 77, -1, 3541 79, 80, -1, -1, -1, -1, -1, -1, 87, -1, 3542 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3543 -1, -1, 101, -1, 103, -1, -1, -1, -1, -1, 3544 -1, 110, 111, 112, 113, 114, 115, 4, 5, 6, 3467 3545 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 3468 3546 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3469 3547 -1, -1, 29, 30, 31, -1, -1, -1, -1, 36, 3470 37, 38, 10, 11, 12, 13, 14, 15, 16, 17, 3471 18, 19, 20, 21, 22, 23, 24, 25, 26, -1, 3472 -1, 29, 30, 31, -1, -1, -1, 64, 65, 37, 3473 67, -1, 69, 70, -1, 72, 73, 74, 1483, 1484, 3474 77, 78, 79, 80, 81, 82, -1, 84, 85, -1, 3475 -1, -1, -1, -1, -1, 92, -1, 65, -1, -1, 3476 -1, -1, -1, -1, 72, 73, -1, -1, -1, -1, 3477 107, -1, 109, -1, -1, -1, -1, 114, -1, 116, 3478 117, 118, 119, 120, 121, 4, 5, 6, 7, 8, 3479 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3480 19, 20, 21, 22, 23, 24, 25, 26, -1, 117, 3481 29, 30, 31, -1, -1, -1, -1, 36, 37, 38, 3482 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 3483 20, 21, 22, 23, 24, 25, 26, -1, -1, 29, 3484 30, 31, -1, -1, -1, 64, 65, 37, 67, -1, 3485 69, 70, -1, 72, 73, 74, -1, -1, 77, 78, 3486 79, 80, 81, 82, -1, 84, 85, -1, -1, -1, 3487 -1, -1, -1, 92, -1, 65, -1, -1, -1, -1, 3488 -1, -1, 72, 73, -1, -1, -1, -1, 107, -1, 3489 109, -1, -1, -1, -1, 114, -1, 116, 117, 118, 3490 119, 120, 121, 4, 5, 6, 7, 8, 9, 10, 3491 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 3492 21, 22, 23, 24, 25, 26, -1, 117, 29, 30, 3493 31, -1, -1, -1, -1, 36, 37, 38, 10, 11, 3494 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 3495 22, 23, 24, 25, 26, 27, -1, -1, -1, -1, 3496 -1, -1, -1, 64, 65, 37, 67, -1, 69, 70, 3497 -1, 72, 73, 74, -1, -1, 77, 78, 79, 80, 3498 81, 82, -1, 84, 85, -1, -1, -1, -1, -1, 3499 -1, 92, -1, 65, -1, -1, -1, -1, -1, -1, 3500 -1, -1, -1, -1, 76, -1, 107, -1, 109, -1, 3501 -1, -1, -1, -1, -1, 116, 117, 118, 119, 120, 3502 121, 4, 5, 6, 7, 8, 9, 10, 11, 12, 3503 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 3504 23, 24, 25, 26, -1, -1, 29, 30, 31, -1, 3505 -1, -1, -1, 36, 37, 38, 10, 11, 12, 13, 3506 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 3507 24, 25, 26, -1, -1, 29, 30, 31, 32, 33, 3508 34, 64, 65, 37, 67, -1, 69, 70, -1, 72, 3509 73, 74, -1, -1, 77, 78, 79, 80, 81, 82, 3510 -1, 84, 85, -1, -1, -1, -1, -1, -1, 92, 3511 -1, 65, -1, -1, -1, -1, -1, -1, 72, 73, 3512 -1, -1, -1, -1, 107, -1, 109, -1, -1, -1, 3513 -1, -1, -1, 116, 117, 118, 119, 120, 121, 4, 3548 37, 38, -1, -1, -1, -1, -1, -1, -1, -1, 3549 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3550 -1, -1, 59, 60, -1, 62, -1, 64, 65, -1, 3551 67, 68, 69, -1, -1, 72, 73, 74, 75, 76, 3552 77, -1, 79, 80, -1, -1, -1, -1, -1, -1, 3553 87, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3554 -1, -1, -1, -1, 101, -1, 103, -1, -1, -1, 3555 -1, -1, -1, 110, 111, 112, 113, 114, 115, 4, 3514 3556 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 3515 3557 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3516 3558 25, 26, -1, -1, 29, 30, 31, -1, -1, -1, 3517 -1, 36, 37, 38, 10, 11, 12, 13, 14, 15, 3518 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 3519 26, -1, -1, 29, 30, 31, -1, -1, -1, 64, 3520 65, 37, 67, -1, 69, 70, -1, 72, 73, 74, 3521 -1, -1, 77, 78, 79, 80, 81, 82, -1, 84, 3522 85, -1, -1, -1, -1, -1, -1, 92, -1, 65, 3523 -1, -1, -1, -1, 70, -1, 72, 73, -1, -1, 3524 -1, -1, 107, -1, 109, -1, -1, -1, -1, -1, 3525 -1, 116, 117, 118, 119, 120, 121, 4, 5, 6, 3526 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 3527 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3528 -1, -1, 29, 30, 31, -1, -1, -1, -1, 36, 3529 37, 38, 10, 11, 12, 13, 14, 15, 16, 17, 3530 18, 19, 20, 21, 22, 23, 24, 25, 26, -1, 3531 -1, 29, 30, 31, -1, -1, -1, 64, 65, 37, 3532 67, -1, 69, 70, -1, 72, 73, 74, -1, -1, 3533 77, 78, 79, 80, 81, 82, -1, 84, 85, -1, 3534 -1, -1, -1, -1, -1, 92, -1, 65, -1, -1, 3535 -1, -1, -1, -1, 72, 73, -1, -1, -1, -1, 3536 107, -1, 109, -1, -1, -1, -1, -1, -1, 116, 3537 117, 118, 119, 120, 121, 3, 4, 5, 6, 7, 3538 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 3539 18, 19, 20, 21, 22, 23, 24, 25, 26, -1, 3540 -1, 29, 30, 31, 32, -1, -1, 35, -1, 37, 3541 38, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3542 19, 20, 21, 22, 23, 24, 25, 26, -1, -1, 3543 29, 30, 31, -1, 62, -1, -1, 65, 37, 67, 3544 -1, 69, 70, -1, 72, 73, 74, -1, -1, -1, 3545 -1, -1, -1, 81, 82, -1, -1, -1, -1, -1, 3546 -1, -1, -1, -1, -1, -1, 65, -1, -1, -1, 3547 -1, -1, -1, 72, 73, -1, -1, -1, -1, 107, 3548 -1, 109, -1, -1, -1, 113, -1, -1, -1, 117, 3559 -1, 36, 37, 38, -1, -1, -1, -1, -1, -1, 3560 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3561 -1, -1, -1, -1, 59, 60, -1, 62, -1, 64, 3562 65, -1, 67, 68, 69, -1, -1, 72, 73, 74, 3563 75, 76, 77, -1, 79, 80, -1, -1, -1, -1, 3564 -1, -1, 87, -1, -1, -1, -1, -1, -1, -1, 3565 -1, -1, -1, -1, -1, -1, 101, -1, 103, -1, 3566 -1, -1, -1, -1, -1, 110, 111, 112, 113, 114, 3567 115, 3, 4, 5, 6, 7, 8, 9, 10, 11, 3568 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 3569 22, 23, 24, 25, 26, -1, -1, 29, 30, 31, 3570 32, -1, -1, 35, -1, 37, 38, -1, -1, -1, 3571 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3572 -1, -1, -1, -1, -1, 57, -1, -1, 60, -1, 3573 62, -1, 64, 65, -1, 67, 68, 69, -1, -1, 3574 -1, -1, -1, -1, 76, 77, -1, -1, -1, -1, 3575 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3576 -1, -1, -1, -1, -1, -1, -1, -1, -1, 101, 3577 -1, 103, -1, -1, -1, 107, -1, -1, -1, 111, 3549 3578 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 3550 3579 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 3551 23, 24, 25, 26, -1, -1, 29, 30, 31, 32,3552 -1, -1, 35, -1, 37, 38, -1, -1, -1, -1,3580 23, 24, 25, 26, 27, -1, 29, 30, 31, 32, 3581 -1, -1, 35, -1, 37, -1, -1, -1, -1, -1, 3553 3582 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3554 -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, 3555 -1, -1, 65, -1, 67, -1, 69, 70, -1, 72, 3556 73, 74, -1, -1, -1, -1, -1, -1, 81, 82, 3583 -1, -1, -1, -1, -1, -1, -1, 60, -1, 62, 3584 -1, 64, -1, -1, 67, 68, -1, -1, 71, 3, 3585 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 3586 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 3587 24, 25, 26, -1, -1, 29, 30, 31, 32, -1, 3588 103, 35, -1, 37, -1, -1, -1, -1, 111, -1, 3589 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3590 -1, -1, -1, -1, -1, -1, 60, -1, 62, -1, 3591 64, -1, -1, 67, 68, 4, 5, 6, 7, 8, 3592 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3593 19, 20, 21, 22, 23, 24, 25, 26, -1, -1, 3594 29, 30, 31, -1, -1, -1, -1, -1, 37, 103, 3595 -1, -1, -1, -1, -1, -1, -1, 111, -1, -1, 3596 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3597 -1, 60, -1, 62, -1, 64, 65, -1, 67, 68, 3598 69, -1, -1, -1, -1, -1, -1, 76, 77, -1, 3557 3599 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3558 3600 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3559 -1, -1, -1, -1, 107, -1, 109, -1, -1, -1, 3560 -1, -1, -1, -1, 117, 3, 4, 5, 6, 7, 3601 -1, -1, 101, -1, 103, -1, -1, -1, -1, -1, 3602 -1, -1, 111, 4, 5, 6, 7, 8, 9, 10, 3603 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 3604 21, 22, 23, 24, 25, 26, -1, -1, 29, 30, 3605 31, -1, -1, -1, -1, -1, 37, -1, -1, -1, 3606 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3607 -1, -1, -1, -1, -1, -1, -1, -1, -1, 60, 3608 -1, 62, -1, 64, -1, -1, 67, 68, -1, -1, 3609 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 3610 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 3611 24, 25, 26, -1, -1, 29, 30, 31, -1, -1, 3612 -1, 102, 103, 37, -1, -1, -1, -1, -1, -1, 3613 111, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3614 -1, -1, -1, -1, -1, -1, 60, -1, 62, -1, 3615 64, -1, -1, 67, 68, -1, -1, -1, -1, -1, 3616 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3617 -1, -1, -1, -1, -1, 89, -1, -1, -1, -1, 3618 -1, -1, -1, -1, -1, -1, -1, -1, -1, 103, 3619 -1, -1, -1, -1, -1, -1, -1, 111, 4, 5, 3620 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 3621 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 3622 26, -1, -1, 29, 30, 31, -1, -1, -1, -1, 3623 -1, 37, 10, 11, 12, 13, 14, 15, 16, 17, 3624 18, 19, 20, 21, 22, 23, 24, 25, 26, -1, 3625 -1, 29, 30, 31, 60, -1, 62, -1, 64, 37, 3626 -1, 67, 68, -1, -1, -1, -1, -1, -1, -1, 3627 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3628 -1, -1, 60, 89, -1, -1, -1, 65, -1, 67, 3629 68, -1, -1, -1, -1, -1, -1, 103, -1, -1, 3630 -1, -1, -1, -1, -1, 111, 4, 5, 6, 7, 3561 3631 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 3562 3632 18, 19, 20, 21, 22, 23, 24, 25, 26, -1, … … 3564 3634 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3565 3635 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3566 -1, -1, -1, -1, -1, -1, -1, 65, -1, 67, 3567 -1, 69, 70, -1, 72, 73, 74, -1, -1, -1, 3568 -1, -1, -1, 81, 82, -1, -1, -1, -1, -1, 3636 -1, -1, 60, -1, 62, -1, 64, -1, -1, 67, 3637 68, 4, 5, 6, 7, 8, 9, 10, 11, 12, 3638 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 3639 23, 24, 25, 26, -1, -1, 29, 30, 31, -1, 3640 -1, -1, -1, -1, 37, 103, -1, -1, -1, -1, 3641 -1, -1, -1, 111, -1, -1, -1, -1, -1, -1, 3642 -1, -1, -1, -1, -1, -1, -1, 60, -1, 62, 3643 -1, 64, -1, -1, 67, 68, 4, 5, 6, 7, 3644 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 3645 18, 19, 20, 21, 22, 23, 24, 25, 26, -1, 3646 -1, 29, 30, 31, -1, -1, -1, -1, -1, 37, 3647 103, -1, -1, -1, -1, -1, -1, -1, 111, -1, 3569 3648 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3570 -1, -1, -1, -1, -1, -1, -1, -1, -1, 107, 3571 -1, 109, -1, -1, -1, -1, -1, -1, -1, 117, 3572 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 3649 -1, -1, 60, -1, 62, -1, 64, -1, -1, 67, 3650 68, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3651 19, 20, 21, 22, 23, 24, 25, 26, -1, -1, 3652 29, 30, 31, -1, -1, -1, -1, 36, 37, 38, 3653 -1, -1, -1, -1, -1, 103, -1, -1, -1, -1, 3654 -1, -1, -1, 111, -1, -1, -1, -1, -1, -1, 3655 59, 60, -1, -1, -1, -1, 65, -1, 67, 68, 3656 69, -1, -1, 72, 73, 74, 75, 76, 77, -1, 3657 79, 80, -1, -1, -1, -1, -1, -1, 87, -1, 3658 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3659 -1, -1, 101, -1, 103, -1, -1, 106, -1, -1, 3660 -1, 110, 111, 112, 113, 114, 115, 10, 11, 12, 3573 3661 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 3574 23, 24, 25, 26, 27, -1, 29, 30, 31, 32, 3575 -1, -1, 35, -1, 37, -1, -1, -1, -1, -1, 3662 23, 24, 25, 26, -1, -1, 29, 30, 31, -1, 3663 -1, -1, -1, 36, 37, 38, -1, -1, -1, -1, 3664 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3665 -1, -1, -1, -1, -1, -1, 59, 60, -1, -1, 3666 -1, -1, 65, -1, 67, 68, 69, -1, -1, 72, 3667 73, 74, 75, 76, 77, -1, 79, 80, -1, -1, 3668 -1, -1, -1, -1, 87, -1, -1, -1, -1, -1, 3669 -1, -1, -1, -1, -1, -1, -1, -1, 101, -1, 3670 103, 104, -1, -1, -1, -1, -1, 110, 111, 112, 3671 113, 114, 115, 10, 11, 12, 13, 14, 15, 16, 3672 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3673 -1, -1, 29, 30, 31, -1, -1, -1, -1, 36, 3674 37, 38, -1, -1, -1, -1, -1, -1, -1, -1, 3675 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3676 -1, -1, 59, 60, -1, -1, -1, -1, 65, -1, 3677 67, 68, 69, -1, -1, 72, 73, 74, 75, 76, 3678 77, -1, 79, 80, -1, -1, -1, -1, -1, -1, 3679 87, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3680 -1, -1, -1, -1, 101, 102, 103, -1, -1, -1, 3681 -1, -1, -1, 110, 111, 112, 113, 114, 115, 10, 3682 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 3683 21, 22, 23, 24, 25, 26, -1, -1, 29, 30, 3684 31, -1, -1, -1, -1, 36, 37, 38, -1, -1, 3685 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3686 -1, -1, -1, -1, -1, -1, -1, -1, 59, 60, 3687 -1, -1, -1, -1, 65, -1, 67, 68, 69, -1, 3688 -1, 72, 73, 74, 75, 76, 77, -1, 79, 80, 3689 -1, -1, -1, -1, -1, -1, 87, -1, -1, -1, 3690 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3691 101, -1, 103, -1, -1, -1, -1, -1, -1, 110, 3692 111, 112, 113, 114, 115, 10, 11, 12, 13, 14, 3693 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3694 25, 26, -1, -1, 29, 30, 31, -1, -1, -1, 3695 -1, 36, 37, 38, -1, -1, -1, -1, -1, -1, 3696 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3697 -1, -1, -1, -1, 59, 60, -1, -1, -1, -1, 3698 65, -1, 67, 68, 69, -1, -1, 72, 73, 74, 3699 75, 76, 77, -1, 79, 80, -1, -1, -1, -1, 3700 -1, -1, 87, -1, -1, -1, -1, -1, -1, -1, 3701 -1, -1, -1, -1, -1, -1, 101, -1, 103, -1, 3702 -1, -1, -1, -1, -1, 110, 111, 112, 113, 114, 3703 115, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3704 19, 20, 21, 22, 23, 24, 25, 26, -1, -1, 3705 29, 30, 31, -1, -1, -1, -1, 36, 37, 38, 3576 3706 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3577 3707 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3578 -1, -1, 65, -1, 67, -1, 69, -1, -1, 72, 3579 73, -1, -1, 76, -1, 3, 4, 5, 6, 7, 3580 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 3581 18, 19, 20, 21, 22, 23, 24, 25, 26, -1, 3582 -1, 29, 30, 31, 32, -1, 109, 35, -1, 37, 3583 -1, -1, -1, -1, 117, -1, -1, -1, -1, -1, 3708 59, 60, -1, -1, -1, -1, 65, -1, 67, 68, 3709 69, -1, -1, 72, 73, 74, 75, 76, 77, -1, 3710 79, 80, -1, -1, -1, -1, -1, -1, 87, -1, 3584 3711 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3585 -1, -1, -1, -1, -1, -1, -1, 65, -1, 67, 3586 -1, 69, -1, -1, 72, 73, 3, 4, 5, 6, 3587 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 3712 -1, -1, 101, -1, 103, -1, -1, -1, -1, -1, 3713 -1, 110, 111, 112, 113, 114, 115, 10, 11, 12, 3714 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 3715 23, 24, 25, 26, -1, -1, 29, 30, 31, -1, 3716 -1, -1, -1, 36, 37, 38, -1, -1, -1, -1, 3717 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3718 -1, -1, -1, -1, -1, -1, 59, 60, -1, -1, 3719 -1, -1, 65, -1, 67, 68, 69, -1, -1, 72, 3720 73, 74, 75, 76, 77, -1, 79, 80, -1, -1, 3721 -1, -1, -1, -1, 87, -1, -1, -1, -1, -1, 3722 -1, -1, -1, -1, -1, -1, -1, -1, 101, -1, 3723 103, -1, -1, -1, -1, -1, -1, 110, 111, 112, 3724 113, 114, 115, 10, 11, 12, 13, 14, 15, 16, 3725 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3726 27, -1, 29, 30, 31, -1, -1, -1, -1, -1, 3727 37, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3728 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3729 -1, -1, -1, 60, -1, -1, -1, -1, 65, -1, 3730 67, 68, 69, -1, 71, -1, -1, -1, -1, 76, 3731 77, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3732 19, 20, 21, 22, 23, 24, 25, 26, -1, -1, 3733 29, 30, 31, -1, 101, -1, 103, -1, 37, -1, 3734 -1, -1, -1, -1, 111, -1, -1, -1, -1, -1, 3735 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3736 -1, 60, -1, -1, -1, -1, 65, -1, 67, 68, 3737 69, -1, -1, -1, -1, -1, -1, 76, 77, 10, 3738 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 3739 21, 22, 23, 24, 25, 26, -1, -1, 29, 30, 3740 31, -1, 101, -1, 103, -1, 37, -1, -1, -1, 3741 -1, -1, 111, -1, -1, -1, -1, -1, -1, -1, 3742 -1, -1, -1, -1, -1, -1, -1, -1, -1, 60, 3743 -1, -1, -1, -1, 65, -1, 67, 68, 69, -1, 3744 -1, -1, -1, -1, -1, 76, 77, 10, 11, 12, 3745 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 3746 23, 24, 25, 26, -1, -1, 29, 30, 31, -1, 3747 101, -1, 103, -1, 37, -1, -1, -1, -1, -1, 3748 111, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3749 -1, -1, -1, -1, -1, -1, -1, 60, -1, -1, 3750 -1, -1, 65, -1, 67, 68, 69, -1, -1, -1, 3751 -1, -1, -1, 76, 77, 10, 11, 12, 13, 14, 3752 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3753 25, 26, -1, -1, 29, 30, 31, -1, 101, -1, 3754 103, -1, 37, -1, -1, -1, -1, -1, 111, -1, 3755 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3756 -1, -1, -1, -1, -1, 60, -1, -1, -1, -1, 3757 65, -1, 67, 68, 69, -1, -1, -1, -1, -1, 3758 -1, 76, 77, 10, 11, 12, 13, 14, 15, 16, 3759 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3760 -1, -1, 29, 30, 31, -1, 101, -1, 103, -1, 3761 37, -1, -1, -1, -1, -1, 111, -1, -1, -1, 3762 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3763 -1, -1, -1, 60, -1, -1, -1, -1, 65, -1, 3764 67, 68, 69, -1, -1, -1, -1, -1, -1, 76, 3765 77, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3766 19, 20, 21, 22, 23, 24, 25, 26, 27, -1, 3767 29, 30, 31, -1, -1, -1, 103, -1, 37, -1, 3768 -1, -1, -1, -1, 111, -1, -1, -1, -1, -1, 3769 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3770 -1, 60, -1, -1, -1, -1, -1, -1, 67, 68, 3771 -1, -1, 71, 10, 11, 12, 13, 14, 15, 16, 3772 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3773 27, -1, 29, 30, 31, -1, -1, -1, -1, -1, 3774 37, -1, 101, -1, 103, -1, -1, -1, -1, -1, 3775 -1, -1, 111, -1, -1, -1, -1, -1, -1, -1, 3776 -1, -1, -1, 60, -1, -1, -1, -1, -1, -1, 3777 67, 68, -1, -1, 71, 10, 11, 12, 13, 14, 3778 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3779 25, 26, -1, -1, 29, 30, 31, -1, -1, -1, 3780 -1, -1, 37, 38, 101, -1, 103, -1, -1, -1, 3781 -1, -1, -1, -1, 111, -1, -1, -1, -1, -1, 3782 -1, -1, -1, -1, -1, 60, -1, -1, -1, -1, 3783 -1, -1, 67, 68, 10, 11, 12, 13, 14, 15, 3784 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 3785 26, -1, -1, 29, 30, 31, -1, -1, -1, -1, 3786 -1, 37, 38, -1, -1, -1, -1, -1, 103, -1, 3787 -1, -1, 107, -1, -1, -1, 111, -1, -1, -1, 3788 -1, -1, -1, -1, 60, -1, -1, -1, -1, -1, 3789 -1, 67, 68, 10, 11, 12, 13, 14, 15, 16, 3790 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3791 27, -1, 29, 30, 31, -1, -1, -1, -1, -1, 3792 37, -1, -1, -1, -1, -1, -1, 103, -1, -1, 3793 -1, 107, -1, -1, -1, 111, -1, -1, -1, -1, 3794 -1, -1, -1, 60, -1, -1, -1, -1, -1, -1, 3795 67, 68, -1, -1, 71, 10, 11, 12, 13, 14, 3796 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3797 25, 26, -1, -1, 29, 30, 31, -1, -1, -1, 3798 -1, -1, 37, 38, -1, -1, 103, -1, -1, -1, 3799 -1, -1, -1, -1, 111, -1, -1, -1, -1, -1, 3800 -1, -1, -1, -1, -1, 60, -1, -1, -1, -1, 3801 -1, -1, 67, 68, 10, 11, 12, 13, 14, 15, 3802 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 3803 26, -1, -1, 29, 30, 31, -1, -1, -1, -1, 3804 -1, 37, -1, -1, -1, -1, -1, -1, 103, -1, 3805 -1, -1, 107, -1, -1, -1, 111, -1, -1, -1, 3806 -1, -1, -1, -1, 60, -1, -1, -1, -1, 65, 3807 -1, 67, 68, 10, 11, 12, 13, 14, 15, 16, 3588 3808 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3589 3809 -1, -1, 29, 30, 31, -1, -1, -1, -1, -1, 3590 37, 109, -1, -1, -1, -1, -1, -1, -1, 117, 3591 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3592 -1, -1, -1, -1, -1, -1, -1, -1, 65, -1, 3593 67, -1, 69, -1, -1, 72, 73, 4, 5, 6, 3594 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 3595 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3596 -1, -1, 29, 30, 31, -1, -1, -1, -1, -1, 3597 37, -1, 109, -1, -1, -1, -1, -1, -1, -1, 3598 117, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3599 -1, -1, -1, -1, -1, -1, -1, -1, 65, -1, 3600 67, -1, 69, 70, -1, 72, 73, 74, -1, -1, 3601 -1, -1, -1, -1, 81, 82, -1, -1, -1, -1, 3602 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3603 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3604 107, -1, 109, -1, -1, -1, -1, -1, -1, -1, 3605 117, 4, 5, 6, 7, 8, 9, 10, 11, 12, 3810 37, 38, -1, -1, -1, -1, -1, 103, -1, -1, 3811 -1, -1, -1, -1, -1, 111, -1, -1, -1, -1, 3812 -1, -1, -1, 60, -1, -1, -1, -1, -1, -1, 3813 67, 68, 10, 11, 12, 13, 14, 15, 16, 17, 3814 18, 19, 20, 21, 22, 23, 24, 25, 26, -1, 3815 -1, 29, 30, 31, -1, -1, -1, -1, -1, 37, 3816 -1, -1, -1, -1, -1, -1, 103, -1, -1, -1, 3817 -1, -1, -1, -1, 111, -1, -1, -1, -1, -1, 3818 -1, -1, 60, -1, -1, -1, -1, -1, -1, 67, 3819 68, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3820 19, 20, 21, 22, 23, 24, 25, 26, -1, -1, 3821 29, 30, 31, -1, -1, -1, -1, -1, 37, -1, 3822 -1, -1, -1, 101, -1, 103, -1, -1, -1, -1, 3823 -1, -1, -1, 111, -1, -1, -1, -1, -1, -1, 3824 -1, 60, -1, -1, -1, -1, -1, -1, 67, 68, 3825 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 3826 20, 21, 22, 23, 24, 25, 26, -1, -1, 29, 3827 30, 31, -1, -1, -1, -1, -1, 37, -1, -1, 3828 -1, -1, 101, -1, 103, -1, -1, -1, -1, -1, 3829 -1, -1, 111, -1, -1, -1, -1, -1, -1, -1, 3830 60, -1, -1, -1, -1, -1, -1, 67, 68, 10, 3831 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 3832 21, 22, 23, 24, 25, 26, -1, -1, 29, 30, 3833 31, -1, -1, -1, -1, -1, 37, -1, -1, -1, 3834 -1, -1, -1, 103, -1, -1, -1, -1, -1, -1, 3835 -1, 111, -1, -1, -1, -1, -1, -1, -1, 60, 3836 -1, -1, -1, -1, -1, -1, 67, 68, 10, 11, 3837 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 3838 22, 23, 24, 25, 26, -1, -1, 29, 30, 31, 3839 -1, -1, -1, -1, -1, 37, -1, -1, -1, -1, 3840 -1, -1, 103, -1, -1, -1, -1, -1, -1, -1, 3841 111, -1, -1, -1, -1, -1, -1, -1, 60, -1, 3842 -1, -1, -1, -1, -1, 67, 68, 10, 11, 12, 3606 3843 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 3607 3844 23, 24, 25, 26, -1, -1, 29, 30, 31, -1, 3608 3845 -1, -1, -1, -1, 37, -1, -1, -1, -1, -1, 3609 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3610 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3611 -1, -1, 65, -1, 67, -1, 69, -1, -1, 72, 3612 73, 4, 5, 6, 7, 8, 9, 10, 11, 12, 3613 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 3614 23, 24, 25, 26, -1, -1, 29, 30, 31, -1, 3615 -1, -1, -1, -1, 37, 108, 109, -1, -1, -1, 3616 -1, -1, -1, -1, 117, -1, -1, -1, -1, -1, 3617 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3618 -1, -1, 65, -1, 67, -1, 69, -1, -1, 72, 3619 73, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3620 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3621 -1, 94, -1, -1, -1, -1, -1, -1, -1, -1, 3622 -1, -1, -1, -1, -1, -1, 109, -1, -1, -1, 3623 -1, -1, -1, -1, 117, 4, 5, 6, 7, 8, 3624 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3846 -1, 103, -1, -1, -1, -1, -1, -1, -1, 111, 3847 -1, -1, -1, -1, -1, -1, -1, 60, -1, -1, 3848 -1, -1, -1, -1, 67, 68, 10, 11, 12, 13, 3849 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 3850 24, 25, 26, -1, -1, 29, 30, 31, -1, -1, 3851 -1, -1, -1, 37, -1, -1, -1, -1, -1, -1, 3852 103, -1, -1, -1, -1, -1, -1, -1, 111, -1, 3853 -1, -1, -1, -1, -1, -1, 60, -1, -1, -1, 3854 -1, -1, -1, 67, 68, 10, 11, 12, 13, 14, 3855 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3856 25, 26, -1, -1, 29, 30, 31, -1, -1, -1, 3857 -1, -1, 37, -1, -1, -1, -1, -1, -1, 103, 3858 -1, -1, -1, -1, -1, -1, -1, 111, -1, -1, 3859 -1, -1, -1, -1, -1, 60, -1, -1, -1, -1, 3860 -1, -1, 67, 68, 10, 11, 12, 13, 14, 15, 3861 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 3862 26, -1, -1, 29, 30, 31, -1, -1, -1, -1, 3863 -1, 37, -1, -1, -1, -1, -1, -1, 103, -1, 3864 -1, -1, -1, -1, -1, -1, 111, -1, -1, -1, 3865 -1, -1, -1, -1, 60, -1, -1, -1, -1, -1, 3866 -1, 67, 68, 10, 11, 12, 13, 14, 15, 16, 3867 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3868 -1, -1, 29, 30, 31, -1, -1, -1, -1, -1, 3869 37, -1, -1, -1, -1, -1, -1, 103, -1, -1, 3870 -1, -1, -1, -1, -1, 111, -1, -1, -1, -1, 3871 -1, -1, -1, 60, -1, -1, -1, -1, -1, -1, 3872 67, 68, 10, 11, 12, 13, 14, 15, 16, 17, 3873 18, 19, 20, 21, 22, 23, 24, 25, 26, -1, 3874 -1, 29, 30, 31, -1, -1, -1, -1, -1, 37, 3875 -1, -1, -1, -1, -1, -1, 103, -1, -1, -1, 3876 -1, -1, -1, -1, 111, -1, -1, -1, -1, -1, 3877 -1, -1, 60, -1, -1, -1, -1, -1, -1, 67, 3878 68, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3625 3879 19, 20, 21, 22, 23, 24, 25, 26, -1, -1, 3626 3880 29, 30, 31, -1, -1, -1, -1, -1, 37, -1, 3627 -1, -1, -1, -1, 10, 11, 12, 13, 14, 15, 3628 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 3629 26, -1, -1, 29, 30, 31, 65, -1, 67, -1, 3630 69, 37, -1, 72, 73, -1, -1, -1, -1, -1, 3881 -1, -1, -1, -1, -1, 103, -1, -1, -1, -1, 3882 -1, -1, -1, 111, -1, -1, -1, -1, -1, -1, 3883 -1, 60, -1, -1, -1, -1, -1, -1, 67, 68, 3884 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 3885 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 3886 24, 25, 26, -1, -1, 29, 30, 31, -1, -1, 3887 -1, -1, -1, 37, 103, -1, -1, -1, -1, -1, 3888 -1, -1, 111, -1, -1, -1, -1, -1, -1, -1, 3889 -1, -1, -1, -1, -1, -1, 60, -1, 62, -1, 3890 64, -1, -1, 67, 68, -1, 36, -1, 38, 39, 3891 -1, 41, -1, -1, 44, 45, 46, 47, 48, 49, 3892 50, 51, 52, 53, -1, -1, 56, 57, -1, 59, 3893 -1, -1, -1, -1, -1, 65, -1, -1, 102, 69, 3894 -1, -1, 72, 73, 74, 75, 76, 77, -1, 79, 3895 80, -1, -1, -1, -1, -1, -1, 87, -1, -1, 3631 3896 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3632 -1, -1, -1, -1, -1, 94, -1, -1, -1, 65,3633 -1, -1, -1, -1, 70, -1, 72, 73, 74, -1,3634 109, -1, -1, -1, -1, 81, 82, -1, 117, 4,3635 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,3636 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,3637 25, 26, -1, 109, 29, 30, 31, -1, -1, -1,3638 -1, 117, 37, -1, -1, -1, -1, -1, -1, -1,3897 -1, 101, -1, 103, -1, -1, 106, -1, -1, -1, 3898 110, 111, 112, 113, 114, 115, -1, 36, -1, 38, 3899 39, -1, 41, -1, 124, 44, 45, 46, 47, 48, 3900 49, 50, 51, -1, 53, -1, -1, 56, 57, -1, 3901 59, -1, -1, -1, -1, -1, 65, -1, -1, -1, 3902 69, -1, -1, 72, 73, 74, 75, 76, 77, -1, 3903 79, 80, -1, -1, -1, -1, -1, -1, 87, -1, 3639 3904 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3640 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3641 65, -1, 67, -1, 69, -1, -1, 72, 73, 4, 3642 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 3643 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3644 25, 26, -1, -1, 29, 30, 31, -1, -1, -1, 3645 -1, -1, 37, -1, 109, -1, -1, -1, -1, -1, 3646 -1, -1, 117, -1, -1, -1, -1, -1, -1, -1, 3647 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3648 65, -1, 67, -1, 69, -1, -1, 72, 73, 4, 3649 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 3650 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3651 25, 26, -1, -1, 29, 30, 31, -1, -1, -1, 3652 -1, -1, 37, -1, 109, -1, -1, -1, -1, -1, 3653 -1, -1, 117, -1, -1, -1, -1, -1, -1, -1, 3654 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3655 65, -1, 67, -1, 69, -1, -1, 72, 73, 4, 3656 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 3657 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3658 25, 26, -1, -1, 29, 30, 31, -1, -1, -1, 3659 -1, -1, 37, -1, 109, -1, -1, -1, -1, -1, 3660 -1, -1, 117, -1, -1, -1, -1, -1, -1, -1, 3661 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3662 65, -1, 67, -1, 69, -1, -1, 72, 73, 10, 3663 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 3664 21, 22, 23, 24, 25, 26, -1, -1, 29, 30, 3665 31, -1, -1, -1, -1, 36, 37, 38, -1, -1, 3666 -1, -1, -1, -1, 109, -1, -1, -1, -1, -1, 3667 -1, -1, 117, -1, -1, -1, -1, -1, -1, -1, 3668 -1, -1, -1, 64, 65, -1, -1, -1, -1, 70, 3669 -1, 72, 73, 74, -1, -1, 77, 78, 79, 80, 3670 81, 82, -1, 84, 85, -1, -1, -1, -1, -1, 3671 -1, 92, -1, -1, -1, -1, -1, -1, -1, -1, 3672 -1, -1, -1, -1, -1, -1, 107, -1, 109, -1, 3673 -1, 112, -1, -1, -1, 116, 117, 118, 119, 120, 3674 121, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3675 19, 20, 21, 22, 23, 24, 25, 26, -1, -1, 3676 29, 30, 31, -1, -1, -1, -1, 36, 37, 38, 3677 -1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3678 19, 20, 21, 22, 23, 24, 25, 26, 27, -1, 3679 29, 30, 31, -1, -1, 64, 65, -1, 37, -1, 3680 -1, 70, -1, 72, 73, 74, -1, -1, 77, 78, 3681 79, 80, 81, 82, -1, 84, 85, -1, -1, -1, 3682 -1, -1, -1, 92, -1, -1, 65, -1, -1, -1, 3683 -1, 70, -1, 72, 73, 74, -1, 76, 107, -1, 3684 109, 110, 81, 82, -1, -1, -1, 116, 117, 118, 3685 119, 120, 121, 10, 11, 12, 13, 14, 15, 16, 3686 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3687 109, -1, 29, 30, 31, -1, -1, -1, 117, 36, 3688 37, 38, -1, 10, 11, 12, 13, 14, 15, 16, 3689 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3690 27, -1, 29, 30, 31, -1, -1, 64, 65, -1, 3691 37, -1, -1, 70, -1, 72, 73, 74, -1, -1, 3692 77, 78, 79, 80, 81, 82, -1, 84, 85, -1, 3693 -1, -1, -1, -1, -1, 92, -1, -1, 65, -1, 3694 -1, -1, -1, -1, -1, 72, 73, -1, -1, 76, 3695 107, 108, 109, -1, -1, -1, -1, -1, -1, 116, 3696 117, 118, 119, 120, 121, 10, 11, 12, 13, 14, 3697 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3698 25, 26, 109, -1, 29, 30, 31, -1, -1, -1, 3699 117, 36, 37, 38, -1, 10, 11, 12, 13, 14, 3700 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3701 25, 26, -1, -1, 29, 30, 31, -1, -1, 64, 3702 65, -1, 37, -1, -1, 70, -1, 72, 73, 74, 3703 -1, -1, 77, 78, 79, 80, 81, 82, -1, 84, 3704 85, -1, -1, -1, -1, -1, -1, 92, -1, -1, 3705 65, -1, -1, -1, -1, 70, -1, 72, 73, -1, 3706 -1, -1, 107, -1, 109, -1, -1, -1, -1, -1, 3707 -1, 116, 117, 118, 119, 120, 121, 10, 11, 12, 3708 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 3709 23, 24, 25, 26, 109, -1, 29, 30, 31, -1, 3710 -1, -1, 117, 36, 37, 38, -1, 10, 11, 12, 3711 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 3712 23, 24, 25, 26, -1, -1, 29, 30, 31, -1, 3713 -1, 64, 65, -1, 37, 38, -1, 70, -1, 72, 3714 73, 74, -1, -1, 77, 78, 79, 80, 81, 82, 3715 -1, 84, 85, -1, -1, -1, -1, -1, -1, 92, 3716 -1, -1, 65, -1, -1, -1, -1, -1, -1, 72, 3717 73, -1, -1, -1, 107, -1, 109, -1, -1, -1, 3718 -1, -1, -1, 116, 117, 118, 119, 120, 121, 10, 3719 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 3720 21, 22, 23, 24, 25, 26, 109, -1, 29, 30, 3721 31, -1, -1, -1, 117, 36, 37, 38, -1, 10, 3722 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 3723 21, 22, 23, 24, 25, 26, -1, -1, 29, 30, 3724 31, -1, -1, 64, 65, -1, 37, -1, -1, 70, 3725 -1, 72, 73, 74, -1, -1, 77, 78, 79, 80, 3726 81, 82, -1, 84, 85, -1, -1, -1, -1, -1, 3727 -1, 92, -1, -1, 65, -1, -1, -1, -1, -1, 3728 -1, 72, 73, -1, -1, -1, 107, -1, 109, -1, 3729 -1, -1, -1, -1, -1, 116, 117, 118, 119, 120, 3730 121, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3731 19, 20, 21, 22, 23, 24, 25, 26, 109, -1, 3732 29, 30, 31, -1, -1, -1, 117, 36, 37, 38, 3905 -1, -1, 101, -1, 103, -1, -1, 106, -1, -1, 3906 -1, 110, 111, 112, 113, 114, 115, -1, -1, -1, 3907 -1, -1, -1, -1, -1, 124, 4, 5, 6, 7, 3908 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 3909 18, 19, 20, 21, 22, 23, 24, 25, 26, -1, 3910 -1, 29, 30, 31, -1, -1, -1, -1, -1, 37, 3733 3911 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 3734 3912 20, 21, 22, 23, 24, 25, 26, -1, -1, 29, 3735 30, 31, -1, -1, -1, 64, 65, 37, -1, -1, 3736 -1, 70, -1, 72, 73, 74, -1, -1, 77, 78, 3737 79, 80, 81, 82, -1, 84, 85, -1, -1, -1, 3738 -1, -1, -1, 92, -1, 65, -1, -1, -1, -1, 3739 70, -1, 72, 73, 74, -1, -1, -1, 107, -1, 3740 109, 81, 82, -1, -1, -1, -1, 116, 117, 118, 3741 119, 120, 121, -1, -1, -1, -1, -1, -1, -1, 3742 -1, -1, -1, -1, -1, -1, -1, 107, -1, 109, 3743 -1, -1, -1, -1, -1, -1, -1, 117, 10, 11, 3913 30, 31, 60, -1, 62, -1, 64, 37, -1, 67, 3914 68, -1, 36, -1, 38, 39, -1, 41, 42, 43, 3915 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 3916 60, 89, 56, 57, -1, 59, -1, 67, 68, -1, 3917 -1, 65, -1, -1, -1, 69, -1, -1, 72, 73, 3918 74, 75, 76, 77, -1, 79, 80, -1, -1, -1, 3919 -1, -1, -1, 87, -1, -1, -1, -1, -1, -1, 3920 -1, -1, -1, -1, -1, -1, -1, 101, -1, 103, 3921 -1, -1, 106, -1, -1, -1, 110, 111, 112, 113, 3922 114, 115, 36, -1, 38, 39, -1, 41, 42, 43, 3923 44, 45, 46, 47, 48, 49, 50, 51, -1, 53, 3924 -1, -1, 56, 57, -1, 59, -1, -1, -1, -1, 3925 -1, 65, -1, -1, -1, 69, -1, -1, 72, 73, 3926 74, 75, 76, 77, -1, 79, 80, -1, -1, -1, 3927 -1, -1, -1, 87, -1, -1, -1, -1, -1, 36, 3928 -1, 38, -1, -1, -1, -1, -1, 101, -1, 103, 3929 -1, -1, 106, -1, -1, -1, 110, 111, 112, 113, 3930 114, 115, 59, -1, -1, -1, -1, -1, 65, -1, 3931 -1, -1, 69, -1, -1, 72, 73, 74, 75, 76, 3932 77, -1, 79, 80, -1, -1, -1, -1, -1, -1, 3933 87, -1, -1, -1, -1, -1, 36, -1, 38, -1, 3934 -1, -1, -1, -1, 101, -1, 103, -1, -1, -1, 3935 -1, -1, 109, 110, 111, 112, 113, 114, 115, 59, 3936 -1, -1, -1, -1, -1, 65, -1, -1, -1, 69, 3937 -1, -1, 72, 73, 74, 75, 76, 77, -1, 79, 3938 80, -1, -1, -1, -1, -1, -1, 87, -1, -1, 3939 -1, -1, -1, 36, -1, 38, -1, -1, -1, -1, 3940 -1, 101, -1, 103, -1, -1, 106, -1, -1, -1, 3941 110, 111, 112, 113, 114, 115, 59, -1, -1, -1, 3942 -1, -1, 65, -1, -1, -1, 69, -1, -1, 72, 3943 73, 74, 75, 76, 77, -1, 79, 80, -1, -1, 3944 -1, -1, -1, -1, 87, -1, -1, -1, -1, -1, 3945 36, -1, 38, -1, -1, -1, -1, -1, 101, -1, 3946 103, -1, -1, -1, -1, -1, -1, 110, 111, 112, 3947 113, 114, 115, 59, -1, -1, -1, -1, -1, 65, 3948 -1, -1, -1, 69, -1, -1, 72, 73, 74, 75, 3949 76, 77, -1, 79, 80, -1, -1, -1, -1, -1, 3950 -1, 87, -1, -1, -1, -1, -1, 36, -1, 38, 3951 -1, -1, -1, -1, -1, 101, -1, 103, -1, -1, 3952 -1, -1, -1, -1, 110, 111, 112, 113, 114, 115, 3953 59, -1, -1, -1, -1, -1, 65, -1, -1, -1, 3954 69, -1, -1, 72, 73, 74, 75, 76, 77, -1, 3955 79, 80, -1, -1, -1, -1, -1, -1, 87, -1, 3956 -1, -1, -1, -1, 36, -1, 38, -1, -1, -1, 3957 -1, -1, 101, -1, 103, -1, -1, -1, -1, -1, 3958 -1, 110, 111, 112, 113, 114, 115, 59, -1, -1, 3959 -1, -1, -1, 65, -1, -1, -1, 69, -1, -1, 3960 72, 73, 74, 75, 76, 77, -1, 79, 80, -1, 3961 -1, -1, -1, -1, -1, 87, -1, -1, -1, -1, 3962 -1, 36, -1, 38, -1, -1, -1, -1, -1, 101, 3963 -1, 103, -1, -1, -1, -1, -1, -1, 110, 111, 3964 112, 113, 114, 115, 59, -1, -1, -1, -1, -1, 3965 65, -1, -1, -1, 69, -1, -1, 72, 73, 74, 3966 75, 76, 77, -1, 79, 80, -1, -1, -1, -1, 3967 -1, -1, 87, -1, -1, -1, -1, -1, 36, -1, 3968 38, -1, -1, -1, -1, -1, 101, -1, -1, -1, 3969 -1, -1, -1, -1, -1, 110, 111, 112, 113, 114, 3970 115, 59, -1, -1, -1, -1, -1, 65, -1, -1, 3971 -1, 69, -1, -1, 72, 73, 74, 75, 76, 77, 3972 -1, 79, 80, -1, -1, -1, -1, -1, -1, 87, 3973 -1, -1, -1, -1, -1, 36, -1, 38, -1, -1, 3974 -1, -1, -1, 101, -1, -1, -1, -1, -1, -1, 3975 -1, -1, 110, 111, 112, 113, 114, 115, 59, -1, 3976 -1, -1, -1, -1, 65, -1, -1, -1, 69, -1, 3977 -1, 72, 73, 74, 75, 76, 77, -1, 79, 80, 3978 -1, -1, -1, -1, -1, -1, 87, -1, -1, -1, 3979 -1, -1, 36, -1, 38, -1, -1, -1, -1, -1, 3980 101, -1, -1, -1, -1, -1, -1, -1, -1, 110, 3981 111, 112, 113, 114, 115, 59, -1, -1, -1, -1, 3982 -1, 65, -1, -1, -1, 69, -1, -1, 72, 73, 3983 74, 75, 76, 77, -1, 79, 80, -1, -1, -1, 3984 -1, -1, -1, 87, -1, -1, -1, -1, -1, -1, 3985 -1, -1, -1, -1, -1, -1, -1, 101, -1, -1, 3986 -1, -1, -1, -1, -1, -1, 110, 111, 112, 113, 3987 114, 115, 4, 5, 6, 7, 8, 9, 10, 11, 3744 3988 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 3745 22, 23, 24, 25, 26, -1, -1, 29, 30, 31, 3746 -1, -1, -1, -1, -1, 37, -1, 10, 11, 12, 3747 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 3748 23, 24, 25, 26, 27, -1, 29, 30, 31, -1, 3749 -1, -1, -1, 65, 37, -1, -1, -1, 70, -1, 3750 72, 73, 74, -1, -1, -1, -1, -1, -1, 81, 3751 82, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3752 -1, -1, 65, -1, -1, -1, -1, -1, -1, 72, 3753 73, -1, -1, 76, -1, 107, -1, 109, -1, -1, 3754 -1, -1, -1, -1, -1, 117, -1, -1, -1, -1, 3989 22, 23, 24, 25, 26, -1, -1, -1, -1, -1, 3990 -1, -1, -1, -1, -1, 37, -1, -1, -1, -1, 3755 3991 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3756 -1, -1, -1, -1, 107, -1, 109, -1, -1, -1, 3757 -1, -1, -1, -1, 117, 10, 11, 12, 13, 14, 3758 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3759 25, 26, 27, -1, 29, 30, 31, -1, -1, -1, 3760 -1, -1, 37, -1, 10, 11, 12, 13, 14, 15, 3761 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 3762 26, -1, -1, 29, 30, 31, -1, -1, -1, -1, 3763 65, 37, 38, -1, -1, -1, -1, 72, 73, -1, 3764 -1, 76, 10, 11, 12, 13, 14, 15, 16, 17, 3765 18, 19, 20, 21, 22, 23, 24, 25, 26, 65, 3766 -1, 29, 30, 31, -1, -1, 72, 73, -1, 37, 3767 38, -1, 107, -1, 109, -1, -1, -1, -1, -1, 3768 -1, -1, 117, -1, -1, -1, -1, -1, -1, -1, 3769 -1, -1, -1, -1, -1, -1, -1, 65, -1, -1, 3770 -1, -1, -1, 109, 72, 73, -1, 113, -1, -1, 3771 -1, 117, 10, 11, 12, 13, 14, 15, 16, 17, 3772 18, 19, 20, 21, 22, 23, 24, 25, 26, -1, 3773 -1, 29, 30, 31, -1, -1, -1, -1, -1, 37, 3774 -1, 109, -1, -1, -1, 113, -1, -1, -1, 117, 3775 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 3776 20, 21, 22, 23, 24, 25, 26, 65, -1, 29, 3777 30, 31, -1, -1, 72, 73, -1, 37, -1, 10, 3778 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 3779 21, 22, 23, 24, 25, 26, -1, -1, 29, 30, 3780 31, -1, -1, -1, -1, 65, 37, -1, -1, 107, 3781 -1, 109, 72, 73, -1, -1, -1, -1, -1, 117, 3782 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3783 -1, -1, -1, -1, 65, -1, -1, -1, -1, -1, 3784 -1, 72, 73, -1, -1, -1, -1, 107, -1, 109, 3785 -1, -1, -1, -1, -1, -1, -1, 117, -1, -1, 3786 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 3787 20, 21, 22, 23, 24, 25, 26, -1, 109, 29, 3788 30, 31, -1, -1, -1, -1, 117, 37, -1, 10, 3789 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 3790 21, 22, 23, 24, 25, 26, -1, -1, 29, 30, 3791 31, -1, -1, -1, -1, 65, 37, -1, -1, -1, 3792 -1, -1, 72, 73, -1, -1, -1, 10, 11, 12, 3793 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 3794 23, 24, 25, 26, 65, -1, 29, 30, 31, -1, 3795 -1, 72, 73, -1, 37, -1, -1, -1, -1, 109, 3796 -1, -1, -1, -1, -1, -1, -1, 117, -1, -1, 3797 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3798 -1, -1, 65, -1, -1, -1, -1, -1, 109, 72, 3799 73, -1, -1, -1, -1, -1, 117, 10, 11, 12, 3800 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 3801 23, 24, 25, 26, -1, -1, 29, 30, 31, -1, 3802 -1, -1, -1, -1, 37, -1, 109, -1, -1, -1, 3803 -1, -1, -1, -1, 117, 10, 11, 12, 13, 14, 3804 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3805 25, 26, 65, -1, 29, 30, 31, -1, -1, 72, 3806 73, -1, 37, -1, 10, 11, 12, 13, 14, 15, 3807 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 3808 26, -1, -1, 29, 30, 31, -1, -1, -1, -1, 3809 65, 37, -1, -1, -1, -1, 109, 72, 73, -1, 3810 -1, -1, -1, -1, 117, -1, -1, -1, -1, -1, 3811 -1, -1, -1, -1, -1, -1, -1, -1, -1, 65, 3812 -1, -1, -1, -1, -1, -1, 72, 73, -1, -1, 3813 -1, -1, -1, -1, 109, -1, -1, -1, -1, -1, 3814 -1, -1, 117, -1, -1, 10, 11, 12, 13, 14, 3815 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3816 25, 26, -1, 109, 29, 30, 31, -1, -1, -1, 3817 -1, 117, 37, -1, 10, 11, 12, 13, 14, 15, 3818 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 3819 26, -1, -1, 29, 30, 31, -1, -1, -1, -1, 3820 65, 37, -1, -1, -1, -1, -1, 72, 73, -1, 3821 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3822 -1, -1, -1, -1, -1, -1, -1, -1, -1, 65, 3823 -1, -1, -1, -1, -1, -1, 72, 73, -1, -1, 3824 -1, -1, -1, -1, 109, -1, -1, -1, -1, -1, 3825 -1, -1, 117, -1, -1, -1, -1, -1, -1, -1, 3826 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3827 -1, -1, -1, 109, -1, -1, -1, -1, -1, -1, 3828 -1, 117, 4, 5, 6, 7, 8, 9, 10, 11, 3829 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 3830 22, 23, 24, 25, 26, -1, -1, 29, 30, 31, 3831 -1, -1, -1, -1, -1, 37, -1, -1, 36, -1, 3832 38, 39, -1, 41, -1, -1, 44, 45, 46, 47, 3833 48, 49, 50, 51, -1, -1, 54, 55, -1, -1, 3834 -1, 59, 60, 65, 62, 67, 64, 69, -1, -1, 3835 72, 73, 70, -1, -1, -1, 74, -1, -1, 77, 3836 78, 79, 80, 81, 82, -1, 84, 85, -1, -1, 3837 -1, -1, -1, -1, 92, -1, -1, -1, -1, -1, 3838 -1, -1, -1, -1, -1, -1, 108, -1, -1, 107, 3839 -1, 109, -1, -1, 112, -1, -1, -1, 116, 117, 3840 118, 119, 120, 121, -1, -1, -1, -1, 126, -1, 3841 -1, 36, 130, 38, 39, -1, 41, -1, -1, 44, 3842 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, 3843 55, -1, -1, -1, 59, 60, -1, 62, -1, 64, 3844 -1, -1, -1, -1, -1, 70, -1, -1, -1, 74, 3845 -1, -1, 77, 78, 79, 80, 81, 82, -1, 84, 3846 85, -1, -1, -1, -1, -1, -1, 92, -1, -1, 3847 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3848 -1, -1, 107, -1, 109, -1, -1, 112, -1, -1, 3849 -1, 116, 117, 118, 119, 120, 121, -1, -1, -1, 3850 -1, 126, -1, -1, 36, 130, 38, 39, -1, 41, 3851 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 3852 -1, -1, 54, 55, -1, -1, -1, 59, 60, -1, 3853 62, -1, 64, -1, -1, -1, -1, -1, 70, -1, 3854 -1, -1, 74, -1, -1, 77, 78, 79, 80, 81, 3855 82, -1, 84, 85, -1, -1, -1, -1, -1, -1, 3856 92, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3857 -1, -1, -1, -1, -1, 107, -1, 109, -1, -1, 3858 112, -1, -1, -1, 116, 117, 118, 119, 120, 121, 3859 36, -1, 38, 39, 126, 41, 42, 43, 44, 45, 3860 46, 47, 48, 49, 50, 51, -1, -1, -1, 55, 3861 -1, -1, -1, 59, 60, -1, 62, -1, 64, -1, 3862 -1, -1, -1, -1, 70, -1, -1, -1, 74, -1, 3863 -1, 77, 78, 79, 80, 81, 82, -1, 84, 85, 3864 -1, -1, -1, -1, -1, -1, 92, -1, -1, -1, 3865 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3866 -1, 107, -1, 109, -1, -1, 112, -1, -1, -1, 3867 116, 117, 118, 119, 120, 121, 36, -1, 38, 39, 3868 126, 41, -1, -1, 44, 45, 46, 47, 48, 49, 3869 50, 51, -1, -1, -1, 55, -1, -1, -1, 59, 3870 60, -1, 62, -1, 64, -1, -1, -1, -1, -1, 3871 70, -1, -1, -1, 74, -1, -1, 77, 78, 79, 3872 80, 81, 82, -1, 84, 85, -1, -1, -1, -1, 3873 -1, -1, 92, -1, -1, -1, -1, -1, -1, -1, 3874 -1, -1, -1, -1, -1, -1, -1, 107, -1, 109, 3875 -1, -1, 112, -1, -1, -1, 116, 117, 118, 119, 3876 120, 121, -1, -1, -1, -1, 126, 4, 5, 6, 3877 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 3878 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3879 -1, -1, 29, 30, 31, -1, -1, -1, -1, -1, 3880 37, -1, -1, 36, -1, 38, -1, -1, -1, -1, 3881 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3882 -1, -1, 36, -1, 38, -1, -1, -1, 65, -1, 3883 67, 64, 69, -1, -1, 72, 73, 70, -1, -1, 3884 -1, 74, -1, -1, 77, 78, 79, 80, 81, 82, 3885 64, 84, 85, -1, -1, -1, 70, 94, -1, 92, 3886 74, -1, -1, 77, 78, 79, 80, 81, 82, -1, 3887 84, 85, -1, -1, 107, -1, 109, -1, 92, -1, 3888 36, 114, 38, 116, 117, 118, 119, 120, 121, -1, 3889 -1, -1, -1, 107, -1, 109, -1, -1, 112, 36, 3890 -1, 38, 116, 117, 118, 119, 120, 121, 64, -1, 3891 -1, -1, -1, -1, 70, -1, -1, -1, 74, -1, 3892 -1, 77, 78, 79, 80, 81, 82, 64, 84, 85, 3893 -1, -1, -1, 70, -1, -1, 92, 74, -1, -1, 3894 77, 78, 79, 80, 81, 82, -1, 84, 85, -1, 3895 -1, 107, -1, 109, -1, 92, -1, 36, -1, 38, 3896 116, 117, 118, 119, 120, 121, -1, -1, -1, -1, 3897 107, -1, 109, -1, -1, -1, 36, -1, 38, 116, 3898 117, 118, 119, 120, 121, 64, -1, -1, -1, -1, 3899 -1, 70, -1, -1, -1, 74, -1, -1, 77, 78, 3900 79, 80, 81, 82, 64, 84, 85, -1, -1, -1, 3901 70, -1, -1, 92, 74, -1, -1, 77, 78, 79, 3902 80, 81, 82, -1, 84, 85, -1, -1, 107, -1, 3903 109, -1, 92, -1, 36, -1, 38, 116, 117, 118, 3904 119, 120, 121, -1, -1, -1, -1, 107, -1, 109, 3905 -1, -1, -1, 36, -1, 38, 116, 117, 118, 119, 3906 120, 121, 64, -1, -1, -1, -1, -1, 70, -1, 3907 -1, -1, 74, -1, -1, 77, 78, 79, 80, 81, 3908 82, 64, 84, 85, -1, -1, -1, 70, -1, -1, 3909 92, 74, -1, -1, 77, 78, 79, 80, 81, 82, 3910 -1, 84, 85, -1, -1, 107, -1, -1, -1, 92, 3911 -1, 36, -1, 38, 116, 117, 118, 119, 120, 121, 3912 -1, -1, -1, -1, 107, -1, -1, -1, -1, -1, 3913 -1, -1, -1, 116, 117, 118, 119, 120, 121, 64, 3914 -1, -1, -1, -1, -1, 70, -1, -1, -1, 74, 3915 -1, -1, 77, 78, 79, 80, 81, 82, -1, 84, 3916 85, -1, -1, -1, -1, -1, -1, 92, -1, -1, 3917 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3918 -1, -1, 107, -1, -1, -1, -1, -1, -1, -1, 3919 -1, 116, 117, 118, 119, 120, 121, 4, 5, 6, 3920 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 3921 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3922 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3923 37, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3924 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3925 -1, -1, -1, -1, -1, -1, -1, -1, 65, -1, 3926 67, -1, 69, 70, -1, 72, 73, 74, -1, -1, 3927 -1, -1, -1, -1, 81, 82, 3, 4, 5, 6, 3992 -1, -1, -1, -1, -1, -1, -1, -1, 60, -1, 3993 62, -1, 64, 65, -1, 67, 68, 69, -1, -1, 3994 -1, -1, -1, -1, 76, 77, 3, 4, 5, 6, 3928 3995 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 3929 3996 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, … … 3931 3998 37, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3932 3999 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3933 -1, -1, -1, -1, -1, -1, -1, -1, 65, -1, 3934 67, -1, 69, -1, -1, 72, 73, 3, 4, 5, 4000 -1, -1, -1, 60, -1, 62, -1, 64, -1, -1, 4001 67, 68, 3, 4, 5, 6, 7, 8, 9, 10, 4002 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 4003 21, 22, 23, 24, 25, 26, -1, -1, 29, 30, 4004 31, -1, -1, -1, -1, -1, 37, -1, -1, -1, 4005 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4006 -1, -1, -1, -1, -1, -1, -1, -1, -1, 60, 4007 -1, 62, -1, 64, -1, -1, 67, 68, 4, 5, 3935 4008 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 3936 4009 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, … … 3938 4011 -1, 37, -1, -1, -1, -1, -1, -1, -1, -1, 3939 4012 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3940 -1, -1, -1, -1, -1, -1, -1, -1, -1, 65, 3941 -1, 67, -1, 69, -1, -1, 72, 73, 4, 5, 3942 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 3943 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 3944 26, -1, -1, 29, 30, 31, -1, -1, -1, -1, 3945 -1, 37, -1, -1, -1, -1, -1, -1, -1, -1, 4013 -1, -1, -1, -1, 60, -1, 62, -1, 64, -1, 4014 -1, 67, 68, 10, 11, 12, 13, 14, 15, 16, 4015 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 4016 -1, -1, 29, 30, 31, 32, 33, 34, -1, -1, 4017 37, 10, 11, 12, 13, 14, 15, 16, 17, 18, 4018 19, 20, 21, 22, 23, 24, 25, 26, -1, -1, 4019 29, 30, 31, 60, -1, -1, -1, -1, 37, -1, 4020 67, 68, -1, -1, -1, -1, -1, -1, -1, -1, 3946 4021 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3947 -1, -1, -1, -1, -1, -1, -1, -1, -1, 65, 3948 -1, 67, -1, 69, -1, -1, 72, 73 4022 -1, 60, -1, -1, -1, -1, -1, -1, 67, 68 3949 4023 }; 3950 4024 … … 3956 4030 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 3957 4031 22, 23, 24, 25, 26, 29, 30, 31, 32, 35, 3958 37, 38, 62, 65, 67, 69, 70, 72, 73, 74, 3959 81, 82, 107, 109, 117, 135, 138, 195, 209, 210, 3960 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 3961 221, 222, 223, 224, 225, 226, 228, 229, 230, 231, 3962 232, 233, 234, 235, 237, 238, 239, 240, 241, 242, 3963 243, 251, 252, 278, 279, 280, 288, 291, 297, 298, 3964 300, 302, 303, 309, 314, 318, 319, 320, 321, 322, 3965 323, 324, 325, 345, 362, 363, 364, 365, 70, 117, 3966 137, 212, 214, 222, 224, 234, 238, 240, 279, 80, 3967 107, 307, 308, 309, 307, 307, 70, 72, 73, 74, 3968 136, 137, 268, 269, 289, 290, 72, 73, 269, 107, 3969 300, 11, 196, 107, 117, 314, 319, 320, 321, 323, 3970 324, 325, 110, 132, 109, 215, 222, 224, 318, 322, 3971 361, 362, 365, 366, 133, 105, 129, 272, 112, 133, 3972 170, 72, 73, 135, 267, 133, 133, 133, 114, 133, 3973 72, 73, 107, 117, 304, 313, 314, 315, 316, 317, 3974 318, 322, 326, 327, 328, 329, 330, 336, 3, 27, 3975 76, 236, 3, 5, 72, 109, 117, 214, 225, 229, 3976 232, 241, 280, 318, 322, 365, 212, 214, 224, 234, 3977 238, 240, 279, 318, 322, 32, 230, 230, 225, 232, 3978 133, 230, 225, 230, 225, 73, 107, 112, 269, 280, 3979 112, 269, 230, 225, 114, 133, 133, 0, 132, 107, 3980 170, 307, 307, 132, 109, 222, 224, 363, 267, 267, 3981 224, 129, 107, 117, 304, 314, 318, 109, 117, 365, 3982 301, 227, 309, 107, 285, 107, 107, 49, 107, 36, 3983 38, 64, 70, 74, 77, 78, 79, 80, 84, 85, 3984 92, 107, 109, 116, 117, 118, 119, 120, 121, 134, 3985 138, 139, 140, 141, 146, 147, 148, 149, 150, 151, 3986 152, 153, 154, 155, 156, 157, 158, 159, 161, 163, 3987 222, 271, 287, 361, 366, 224, 108, 108, 108, 108, 3988 108, 108, 108, 72, 73, 109, 222, 267, 345, 363, 3989 109, 117, 161, 214, 215, 221, 224, 228, 229, 234, 3990 237, 238, 240, 257, 258, 262, 263, 264, 265, 279, 3991 345, 357, 358, 359, 360, 365, 366, 110, 107, 318, 3992 322, 365, 107, 114, 130, 109, 112, 117, 161, 273, 3993 273, 113, 132, 114, 130, 107, 114, 130, 114, 130, 3994 114, 130, 307, 130, 314, 315, 316, 317, 327, 328, 3995 329, 330, 224, 313, 326, 62, 306, 109, 307, 344, 3996 345, 307, 307, 170, 132, 107, 307, 344, 307, 307, 3997 224, 304, 107, 107, 223, 224, 222, 224, 110, 132, 3998 222, 361, 366, 170, 132, 267, 272, 214, 229, 318, 3999 322, 170, 132, 289, 224, 234, 130, 224, 224, 287, 4000 38, 109, 222, 244, 245, 246, 247, 361, 365, 112, 4001 253, 269, 112, 224, 289, 130, 130, 300, 132, 137, 4002 266, 3, 133, 204, 205, 219, 221, 224, 132, 306, 4003 107, 306, 161, 314, 224, 107, 132, 267, 112, 32, 4004 33, 34, 222, 281, 282, 284, 132, 127, 129, 286, 4005 132, 225, 231, 232, 267, 310, 311, 312, 107, 139, 4006 107, 146, 146, 148, 107, 146, 107, 107, 146, 146, 4007 137, 109, 161, 166, 170, 222, 270, 361, 110, 132, 4008 148, 148, 80, 83, 84, 85, 107, 109, 111, 112, 4009 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 4010 129, 165, 148, 117, 122, 123, 119, 120, 86, 87, 4011 88, 89, 124, 125, 90, 91, 118, 126, 127, 92, 4012 93, 128, 129, 368, 107, 117, 340, 341, 342, 343, 4013 344, 108, 114, 107, 344, 345, 107, 344, 345, 132, 4014 107, 222, 363, 110, 132, 109, 117, 133, 222, 224, 4015 356, 357, 365, 366, 133, 107, 109, 117, 314, 331, 4016 332, 333, 334, 335, 336, 337, 338, 339, 345, 346, 4017 347, 348, 349, 350, 351, 117, 365, 224, 133, 133, 4018 117, 222, 224, 358, 267, 222, 345, 358, 267, 107, 4019 132, 132, 132, 110, 132, 70, 78, 109, 111, 269, 4020 273, 274, 275, 276, 277, 132, 132, 132, 132, 132, 4021 132, 304, 108, 108, 108, 108, 108, 108, 108, 313, 4022 326, 107, 272, 110, 204, 132, 304, 166, 271, 166, 4023 271, 304, 109, 204, 306, 170, 132, 204, 108, 246, 4024 247, 110, 132, 107, 115, 117, 248, 250, 313, 314, 4025 326, 344, 352, 353, 354, 355, 113, 245, 114, 130, 4026 114, 130, 269, 244, 114, 367, 129, 254, 253, 224, 4027 259, 260, 261, 264, 265, 108, 114, 170, 132, 117, 4028 161, 132, 221, 224, 258, 357, 365, 298, 299, 107, 4029 117, 331, 108, 114, 368, 269, 281, 107, 112, 269, 4030 271, 281, 108, 114, 107, 139, 108, 115, 270, 270, 4031 109, 137, 143, 161, 271, 270, 110, 132, 108, 114, 4032 108, 107, 117, 352, 108, 114, 161, 109, 137, 109, 4033 142, 143, 132, 109, 137, 142, 161, 161, 148, 148, 4034 148, 149, 149, 150, 150, 151, 151, 151, 151, 152, 4035 152, 153, 154, 155, 156, 157, 115, 166, 161, 132, 4036 341, 342, 343, 224, 340, 307, 307, 161, 271, 132, 4037 266, 117, 132, 222, 345, 358, 224, 228, 110, 132, 4038 110, 365, 110, 107, 132, 314, 332, 333, 334, 337, 4039 347, 348, 349, 110, 132, 224, 331, 335, 346, 107, 4040 307, 350, 368, 307, 307, 368, 107, 307, 350, 307, 4041 307, 307, 307, 345, 222, 356, 366, 267, 110, 114, 4042 110, 114, 368, 222, 358, 368, 255, 256, 257, 258, 4043 255, 255, 267, 161, 132, 109, 269, 115, 114, 367, 4044 273, 78, 109, 115, 277, 28, 206, 207, 267, 255, 4045 137, 304, 137, 306, 107, 344, 345, 107, 344, 345, 4046 139, 345, 170, 259, 108, 108, 108, 108, 110, 170, 4047 204, 170, 112, 130, 130, 109, 314, 353, 354, 355, 4048 159, 160, 224, 352, 249, 250, 249, 307, 307, 269, 4049 307, 113, 269, 113, 160, 367, 133, 133, 137, 219, 4050 133, 133, 255, 107, 117, 365, 133, 113, 224, 282, 4051 283, 133, 132, 132, 107, 133, 108, 311, 166, 167, 4052 115, 130, 109, 139, 197, 198, 199, 108, 108, 132, 4053 115, 108, 108, 108, 161, 224, 112, 148, 163, 161, 4054 162, 164, 114, 133, 132, 132, 108, 114, 161, 132, 4055 113, 159, 115, 259, 108, 108, 108, 340, 259, 108, 4056 255, 222, 358, 109, 117, 161, 161, 224, 337, 259, 4057 108, 108, 108, 108, 108, 108, 108, 7, 224, 331, 4058 335, 346, 132, 132, 368, 132, 132, 108, 133, 133, 4059 133, 133, 272, 133, 159, 160, 161, 305, 132, 273, 4060 275, 113, 132, 208, 269, 38, 39, 41, 44, 45, 4061 46, 47, 48, 49, 50, 51, 55, 59, 60, 109, 4062 126, 137, 167, 168, 169, 170, 171, 172, 174, 175, 4063 187, 189, 190, 195, 209, 303, 28, 133, 129, 272, 4064 132, 132, 108, 133, 170, 244, 110, 108, 108, 108, 4065 352, 248, 254, 113, 108, 114, 110, 110, 133, 224, 4066 114, 368, 285, 108, 281, 212, 214, 222, 293, 294, 4067 295, 296, 287, 108, 108, 115, 160, 107, 108, 115, 4068 114, 161, 161, 274, 114, 133, 164, 110, 137, 144, 4069 145, 161, 143, 133, 144, 159, 163, 133, 107, 344, 4070 345, 133, 133, 132, 133, 133, 133, 161, 108, 133, 4071 107, 344, 345, 107, 350, 107, 350, 345, 223, 7, 4072 117, 133, 161, 259, 259, 258, 262, 262, 263, 114, 4073 114, 108, 108, 110, 94, 121, 133, 133, 144, 273, 4074 161, 114, 130, 209, 213, 224, 228, 107, 107, 168, 4075 107, 107, 130, 137, 130, 137, 117, 137, 167, 107, 4076 170, 162, 162, 110, 141, 115, 130, 133, 132, 133, 4077 208, 108, 161, 259, 259, 307, 108, 113, 107, 344, 4078 345, 132, 108, 132, 133, 304, 113, 132, 133, 133, 4079 108, 112, 197, 110, 160, 130, 197, 199, 114, 133, 4080 367, 162, 110, 133, 83, 111, 114, 133, 133, 110, 4081 133, 108, 132, 108, 108, 110, 110, 110, 133, 108, 4082 132, 132, 132, 161, 161, 133, 110, 133, 133, 133, 4083 133, 132, 132, 160, 160, 110, 110, 133, 133, 269, 4084 224, 166, 166, 45, 166, 132, 130, 130, 166, 130, 4085 130, 166, 56, 57, 58, 191, 192, 193, 130, 61, 4086 130, 112, 307, 172, 113, 130, 133, 133, 132, 94, 4087 264, 265, 108, 294, 114, 130, 114, 130, 113, 292, 4088 115, 139, 108, 108, 115, 164, 110, 113, 110, 109, 4089 145, 109, 145, 145, 110, 110, 110, 259, 110, 259, 4090 259, 259, 133, 133, 110, 110, 108, 108, 110, 114, 4091 94, 258, 94, 133, 110, 110, 108, 108, 107, 108, 4092 167, 188, 209, 130, 108, 107, 107, 170, 193, 56, 4093 57, 161, 142, 168, 108, 108, 259, 112, 132, 132, 4094 293, 139, 200, 107, 130, 200, 133, 115, 132, 132, 4095 133, 133, 133, 133, 110, 110, 132, 133, 110, 168, 4096 42, 43, 112, 178, 179, 180, 166, 168, 133, 108, 4097 167, 112, 180, 94, 132, 94, 132, 107, 107, 130, 4098 113, 133, 132, 267, 304, 113, 114, 115, 160, 108, 4099 110, 161, 144, 144, 108, 108, 108, 108, 262, 40, 4100 160, 176, 177, 305, 115, 132, 168, 178, 108, 130, 4101 168, 130, 132, 108, 132, 108, 132, 94, 132, 94, 4102 132, 130, 108, 293, 139, 137, 201, 108, 130, 115, 4103 133, 133, 168, 94, 114, 115, 133, 202, 203, 209, 4104 130, 167, 167, 202, 170, 194, 222, 361, 170, 194, 4105 108, 132, 108, 132, 113, 108, 114, 161, 110, 110, 4106 160, 176, 179, 181, 182, 132, 130, 179, 183, 184, 4107 133, 107, 117, 304, 352, 137, 133, 170, 194, 170, 4108 194, 107, 130, 137, 168, 173, 113, 179, 209, 167, 4109 54, 173, 186, 113, 179, 108, 224, 108, 133, 133, 4110 287, 168, 173, 130, 185, 186, 173, 186, 170, 170, 4111 108, 108, 108, 185, 133, 133, 170, 170, 133, 133 4032 37, 38, 57, 60, 62, 64, 65, 67, 68, 69, 4033 76, 77, 101, 103, 111, 129, 132, 189, 203, 204, 4034 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 4035 215, 216, 217, 218, 219, 220, 222, 223, 224, 225, 4036 226, 227, 228, 229, 231, 232, 233, 234, 235, 236, 4037 237, 245, 246, 272, 273, 274, 282, 285, 291, 292, 4038 294, 296, 297, 303, 308, 312, 313, 314, 315, 316, 4039 317, 318, 319, 339, 356, 357, 358, 359, 65, 111, 4040 131, 206, 208, 216, 218, 228, 232, 234, 273, 75, 4041 101, 301, 302, 303, 301, 301, 65, 67, 68, 69, 4042 130, 131, 262, 263, 283, 284, 67, 68, 263, 101, 4043 294, 11, 190, 101, 111, 308, 313, 314, 315, 317, 4044 318, 319, 104, 126, 103, 209, 216, 218, 312, 316, 4045 355, 356, 359, 360, 127, 123, 266, 106, 127, 164, 4046 67, 68, 129, 261, 127, 127, 127, 108, 127, 67, 4047 68, 101, 111, 298, 307, 308, 309, 310, 311, 312, 4048 316, 320, 321, 322, 323, 324, 330, 3, 27, 71, 4049 230, 3, 5, 67, 103, 111, 208, 219, 223, 226, 4050 235, 274, 312, 316, 359, 206, 208, 218, 228, 232, 4051 234, 273, 312, 316, 32, 224, 224, 219, 226, 127, 4052 224, 219, 224, 219, 68, 101, 106, 263, 274, 106, 4053 263, 224, 219, 108, 127, 127, 0, 126, 101, 164, 4054 301, 301, 126, 103, 216, 218, 357, 261, 261, 218, 4055 123, 101, 111, 298, 308, 312, 103, 111, 359, 295, 4056 221, 303, 101, 279, 101, 101, 49, 101, 36, 38, 4057 59, 65, 69, 72, 73, 74, 75, 79, 80, 87, 4058 101, 103, 110, 111, 112, 113, 114, 115, 128, 132, 4059 133, 134, 135, 140, 141, 142, 143, 144, 145, 146, 4060 147, 148, 149, 150, 151, 152, 153, 155, 157, 216, 4061 265, 281, 355, 360, 218, 102, 102, 102, 102, 102, 4062 102, 102, 67, 68, 103, 216, 261, 339, 357, 103, 4063 111, 155, 208, 209, 215, 218, 222, 223, 228, 231, 4064 232, 234, 251, 252, 256, 257, 258, 259, 273, 339, 4065 351, 352, 353, 354, 359, 360, 104, 101, 312, 316, 4066 359, 101, 108, 124, 103, 106, 111, 155, 267, 107, 4067 126, 108, 124, 101, 108, 124, 108, 124, 108, 124, 4068 301, 124, 308, 309, 310, 311, 321, 322, 323, 324, 4069 218, 307, 320, 57, 300, 103, 301, 338, 339, 301, 4070 301, 164, 126, 101, 301, 338, 301, 301, 218, 298, 4071 101, 101, 217, 218, 216, 218, 104, 126, 216, 355, 4072 360, 164, 126, 261, 266, 208, 223, 312, 316, 164, 4073 126, 283, 218, 228, 124, 218, 218, 281, 38, 103, 4074 216, 238, 239, 240, 241, 355, 359, 106, 247, 263, 4075 106, 218, 283, 124, 124, 294, 126, 131, 260, 3, 4076 127, 198, 199, 213, 215, 218, 126, 300, 101, 300, 4077 155, 308, 218, 101, 126, 261, 106, 32, 33, 34, 4078 216, 275, 276, 278, 126, 121, 123, 280, 126, 219, 4079 225, 226, 261, 304, 305, 306, 101, 133, 101, 140, 4080 140, 142, 101, 140, 101, 101, 140, 140, 131, 103, 4081 155, 160, 164, 216, 264, 355, 104, 126, 142, 142, 4082 75, 78, 79, 80, 101, 103, 105, 90, 91, 92, 4083 93, 94, 95, 96, 97, 98, 99, 123, 159, 142, 4084 111, 116, 117, 113, 114, 81, 82, 83, 84, 118, 4085 119, 85, 86, 112, 120, 121, 87, 88, 122, 123, 4086 362, 101, 111, 334, 335, 336, 337, 338, 102, 108, 4087 101, 338, 339, 101, 338, 339, 126, 101, 216, 357, 4088 104, 126, 103, 111, 127, 216, 218, 350, 351, 359, 4089 360, 127, 101, 103, 111, 308, 325, 326, 327, 328, 4090 329, 330, 331, 332, 333, 339, 340, 341, 342, 343, 4091 344, 345, 111, 359, 218, 127, 127, 111, 216, 218, 4092 352, 261, 216, 339, 352, 261, 101, 126, 126, 126, 4093 104, 126, 65, 73, 103, 105, 263, 267, 268, 269, 4094 270, 271, 126, 126, 126, 126, 126, 126, 298, 102, 4095 102, 102, 102, 102, 102, 102, 307, 320, 101, 266, 4096 104, 198, 126, 298, 160, 265, 160, 265, 298, 103, 4097 198, 300, 164, 126, 198, 102, 240, 241, 104, 126, 4098 101, 109, 111, 242, 244, 307, 308, 320, 338, 346, 4099 347, 348, 349, 107, 239, 108, 124, 108, 124, 263, 4100 238, 108, 361, 123, 248, 247, 218, 253, 254, 255, 4101 258, 259, 102, 108, 164, 126, 111, 155, 126, 215, 4102 218, 252, 351, 359, 292, 293, 101, 111, 325, 102, 4103 108, 362, 263, 275, 101, 106, 263, 265, 275, 102, 4104 108, 101, 133, 102, 109, 264, 264, 103, 131, 137, 4105 155, 265, 264, 104, 126, 102, 108, 102, 101, 111, 4106 346, 102, 108, 155, 103, 131, 103, 136, 137, 126, 4107 103, 131, 155, 155, 142, 142, 142, 143, 143, 144, 4108 144, 145, 145, 145, 145, 146, 146, 147, 148, 149, 4109 150, 151, 109, 160, 155, 126, 335, 336, 337, 218, 4110 334, 301, 301, 155, 265, 126, 260, 111, 126, 216, 4111 339, 352, 218, 222, 104, 126, 104, 359, 104, 101, 4112 126, 308, 326, 327, 328, 331, 341, 342, 343, 104, 4113 126, 218, 325, 329, 340, 101, 301, 344, 362, 301, 4114 301, 362, 101, 301, 344, 301, 301, 301, 301, 339, 4115 216, 350, 360, 261, 104, 108, 104, 108, 362, 216, 4116 352, 362, 249, 250, 251, 252, 249, 249, 261, 155, 4117 126, 103, 263, 109, 108, 361, 267, 73, 103, 109, 4118 271, 28, 200, 201, 261, 249, 131, 298, 131, 300, 4119 101, 338, 339, 101, 338, 339, 133, 339, 164, 253, 4120 102, 102, 102, 102, 104, 164, 198, 164, 106, 124, 4121 124, 103, 308, 347, 348, 349, 153, 154, 218, 346, 4122 243, 244, 243, 301, 301, 263, 301, 107, 263, 107, 4123 154, 361, 127, 127, 131, 213, 127, 127, 249, 101, 4124 111, 359, 127, 107, 218, 276, 277, 127, 126, 126, 4125 101, 127, 102, 305, 160, 161, 109, 124, 103, 133, 4126 191, 192, 193, 102, 102, 126, 109, 102, 102, 102, 4127 155, 218, 106, 142, 157, 155, 156, 158, 108, 127, 4128 126, 126, 102, 108, 155, 126, 153, 109, 253, 102, 4129 102, 102, 334, 253, 102, 249, 216, 352, 103, 111, 4130 155, 155, 218, 331, 253, 102, 102, 102, 102, 102, 4131 102, 102, 7, 218, 325, 329, 340, 126, 126, 362, 4132 126, 126, 102, 127, 127, 127, 127, 266, 127, 153, 4133 154, 155, 299, 126, 267, 269, 107, 126, 202, 263, 4134 38, 39, 41, 44, 45, 46, 47, 48, 49, 50, 4135 51, 53, 56, 103, 131, 161, 162, 163, 164, 165, 4136 166, 168, 169, 181, 183, 184, 189, 203, 297, 28, 4137 127, 123, 266, 126, 126, 102, 127, 164, 238, 104, 4138 102, 102, 102, 346, 242, 248, 107, 102, 108, 104, 4139 104, 127, 218, 108, 362, 279, 102, 275, 206, 208, 4140 216, 287, 288, 289, 290, 281, 102, 102, 109, 154, 4141 101, 102, 109, 108, 155, 155, 268, 108, 127, 158, 4142 104, 131, 138, 139, 155, 137, 127, 138, 153, 157, 4143 127, 101, 338, 339, 127, 127, 126, 127, 127, 127, 4144 155, 102, 127, 101, 338, 339, 101, 344, 101, 344, 4145 339, 217, 7, 111, 127, 155, 253, 253, 252, 256, 4146 256, 257, 108, 108, 102, 102, 104, 89, 115, 127, 4147 127, 138, 267, 155, 108, 124, 203, 207, 218, 222, 4148 101, 101, 162, 101, 101, 124, 131, 124, 131, 111, 4149 131, 161, 101, 164, 124, 155, 104, 109, 124, 127, 4150 126, 127, 202, 102, 155, 253, 253, 301, 102, 107, 4151 101, 338, 339, 126, 102, 126, 127, 298, 107, 126, 4152 127, 127, 102, 106, 191, 104, 154, 124, 191, 193, 4153 108, 127, 361, 156, 104, 127, 78, 105, 108, 127, 4154 127, 104, 127, 102, 126, 102, 102, 104, 104, 104, 4155 127, 102, 126, 126, 126, 155, 155, 127, 104, 127, 4156 127, 127, 127, 126, 126, 154, 154, 104, 104, 127, 4157 127, 263, 218, 160, 160, 45, 160, 126, 124, 124, 4158 160, 124, 124, 160, 54, 55, 185, 186, 187, 124, 4159 301, 166, 107, 124, 127, 127, 126, 89, 258, 259, 4160 102, 288, 108, 124, 108, 124, 107, 286, 109, 133, 4161 102, 102, 109, 158, 104, 107, 104, 103, 139, 103, 4162 139, 139, 104, 104, 104, 253, 104, 253, 253, 253, 4163 127, 127, 104, 104, 102, 102, 104, 108, 89, 252, 4164 89, 127, 104, 104, 102, 102, 101, 102, 161, 182, 4165 203, 124, 102, 101, 164, 187, 54, 162, 102, 102, 4166 253, 106, 126, 126, 287, 133, 194, 101, 124, 194, 4167 127, 109, 126, 126, 127, 127, 127, 127, 104, 104, 4168 126, 127, 104, 162, 42, 43, 106, 172, 173, 174, 4169 160, 162, 127, 102, 161, 106, 174, 89, 126, 101, 4170 127, 126, 261, 298, 107, 108, 109, 154, 102, 104, 4171 155, 138, 138, 102, 102, 102, 102, 256, 40, 154, 4172 170, 171, 299, 109, 126, 162, 172, 102, 124, 162, 4173 124, 126, 102, 126, 89, 126, 102, 287, 133, 131, 4174 195, 102, 124, 109, 127, 127, 162, 89, 108, 109, 4175 127, 196, 197, 203, 124, 161, 161, 196, 164, 188, 4176 216, 355, 102, 126, 107, 102, 108, 155, 104, 104, 4177 154, 170, 173, 175, 176, 126, 124, 173, 177, 178, 4178 127, 101, 111, 298, 346, 131, 164, 188, 101, 124, 4179 131, 162, 167, 107, 173, 203, 161, 52, 167, 180, 4180 107, 173, 102, 218, 127, 281, 162, 167, 124, 179, 4181 180, 167, 180, 164, 102, 102, 179, 127, 164, 127 4112 4182 }; 4113 4183 … … 4946 5016 4947 5017 /* Line 1806 of yacc.c */ 4948 #line 2 90"parser.yy"5018 #line 288 "parser.yy" 4949 5019 { 4950 5020 typedefTable.enterScope(); … … 4955 5025 4956 5026 /* Line 1806 of yacc.c */ 4957 #line 29 6"parser.yy"5027 #line 294 "parser.yy" 4958 5028 { 4959 5029 typedefTable.leaveScope(); … … 4964 5034 4965 5035 /* Line 1806 of yacc.c */ 5036 #line 303 "parser.yy" 5037 { (yyval.constant) = new ConstantNode( ConstantNode::Integer, (yyvsp[(1) - (1)].tok) ); } 5038 break; 5039 5040 case 5: 5041 5042 /* Line 1806 of yacc.c */ 5043 #line 304 "parser.yy" 5044 { (yyval.constant) = new ConstantNode( ConstantNode::Float, (yyvsp[(1) - (1)].tok) ); } 5045 break; 5046 5047 case 6: 5048 5049 /* Line 1806 of yacc.c */ 4966 5050 #line 305 "parser.yy" 4967 { (yyval.constant) = new ConstantNode( ConstantNode::Integer, (yyvsp[(1) - (1)].tok) ); }4968 break;4969 4970 case 5:4971 4972 /* Line 1806 of yacc.c */4973 #line 306 "parser.yy"4974 { (yyval.constant) = new ConstantNode( ConstantNode::Float, (yyvsp[(1) - (1)].tok) ); }4975 break;4976 4977 case 6:4978 4979 /* Line 1806 of yacc.c */4980 #line 307 "parser.yy"4981 5051 { (yyval.constant) = new ConstantNode( ConstantNode::Character, (yyvsp[(1) - (1)].tok) ); } 4982 5052 break; … … 4985 5055 4986 5056 /* Line 1806 of yacc.c */ 4987 #line 3 32"parser.yy"5057 #line 329 "parser.yy" 4988 5058 { (yyval.constant) = new ConstantNode( ConstantNode::String, (yyvsp[(1) - (1)].tok) ); } 4989 5059 break; … … 4992 5062 4993 5063 /* Line 1806 of yacc.c */ 4994 #line 33 3"parser.yy"5064 #line 330 "parser.yy" 4995 5065 { (yyval.constant) = (yyvsp[(1) - (2)].constant)->appendstr( (yyvsp[(2) - (2)].tok) ); } 4996 5066 break; … … 4999 5069 5000 5070 /* Line 1806 of yacc.c */ 5001 #line 3 40"parser.yy"5071 #line 337 "parser.yy" 5002 5072 { (yyval.en) = new VarRefNode( (yyvsp[(1) - (1)].tok) ); } 5003 5073 break; … … 5006 5076 5007 5077 /* Line 1806 of yacc.c */ 5008 #line 3 42"parser.yy"5078 #line 339 "parser.yy" 5009 5079 { (yyval.en) = new VarRefNode( (yyvsp[(1) - (1)].tok) ); } 5010 5080 break; … … 5013 5083 5014 5084 /* Line 1806 of yacc.c */ 5015 #line 34 4"parser.yy"5085 #line 341 "parser.yy" 5016 5086 { (yyval.en) = (yyvsp[(2) - (3)].en); } 5017 5087 break; … … 5020 5090 5021 5091 /* Line 1806 of yacc.c */ 5022 #line 34 6"parser.yy"5092 #line 343 "parser.yy" 5023 5093 { (yyval.en) = new ValofExprNode( (yyvsp[(2) - (3)].sn) ); } 5024 5094 break; … … 5027 5097 5028 5098 /* Line 1806 of yacc.c */ 5029 #line 35 6"parser.yy"5099 #line 353 "parser.yy" 5030 5100 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Index ), (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en) ); } 5031 5101 break; … … 5034 5104 5035 5105 /* Line 1806 of yacc.c */ 5036 #line 35 8"parser.yy"5106 #line 355 "parser.yy" 5037 5107 { (yyval.en) = new CompositeExprNode( (yyvsp[(1) - (4)].en), (yyvsp[(3) - (4)].en) ); } 5038 5108 break; … … 5041 5111 5042 5112 /* Line 1806 of yacc.c */ 5113 #line 357 "parser.yy" 5114 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), (yyvsp[(1) - (3)].en), new VarRefNode( (yyvsp[(3) - (3)].tok) )); } 5115 break; 5116 5117 case 26: 5118 5119 /* Line 1806 of yacc.c */ 5043 5120 #line 360 "parser.yy" 5044 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode:: FieldSel ), (yyvsp[(1) - (3)].en), new VarRefNode( (yyvsp[(3) - (3)].tok) )); }5045 break; 5046 5047 case 2 6:5121 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), (yyvsp[(1) - (3)].en), new VarRefNode( (yyvsp[(3) - (3)].tok) )); } 5122 break; 5123 5124 case 28: 5048 5125 5049 5126 /* Line 1806 of yacc.c */ 5050 5127 #line 363 "parser.yy" 5051 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), (yyvsp[(1) - (3)].en), new VarRefNode( (yyvsp[(3) - (3)].tok) )); }5052 break;5053 5054 case 28:5055 5056 /* Line 1806 of yacc.c */5057 #line 366 "parser.yy"5058 5128 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::IncrPost ), (yyvsp[(1) - (2)].en) ); } 5059 5129 break; … … 5062 5132 5063 5133 /* Line 1806 of yacc.c */ 5134 #line 365 "parser.yy" 5135 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::DecrPost ), (yyvsp[(1) - (2)].en) ); } 5136 break; 5137 5138 case 30: 5139 5140 /* Line 1806 of yacc.c */ 5064 5141 #line 368 "parser.yy" 5065 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::DecrPost ), (yyvsp[(1) - (2)].en) ); }5066 break;5067 5068 case 30:5069 5070 /* Line 1806 of yacc.c */5071 #line 370 "parser.yy"5072 5142 { (yyval.en) = 0; } 5073 5143 break; 5074 5144 5075 case 31: 5076 5077 /* Line 1806 of yacc.c */ 5078 #line 372 "parser.yy" 5079 { 5080 Token fn; fn.str = new std::string( "?{}" ); // location undefined 5081 (yyval.en) = new CompositeExprNode( new VarRefNode( fn ), (ExpressionNode *)( (yyvsp[(1) - (4)].en) )->set_link( (yyvsp[(3) - (4)].en) ) ); 5082 } 5145 case 32: 5146 5147 /* Line 1806 of yacc.c */ 5148 #line 374 "parser.yy" 5149 { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) )); } 5083 5150 break; 5084 5151 … … 5086 5153 5087 5154 /* Line 1806 of yacc.c */ 5088 #line 381 "parser.yy" 5089 { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) )); } 5090 break; 5091 5092 case 34: 5093 5094 /* Line 1806 of yacc.c */ 5095 #line 386 "parser.yy" 5155 #line 379 "parser.yy" 5096 5156 { (yyval.en) = 0; } 5097 5157 break; 5098 5158 5159 case 35: 5160 5161 /* Line 1806 of yacc.c */ 5162 #line 382 "parser.yy" 5163 { (yyval.en) = (yyvsp[(3) - (3)].en)->set_argName( (yyvsp[(1) - (3)].tok) ); } 5164 break; 5165 5099 5166 case 36: 5100 5167 5101 5168 /* Line 1806 of yacc.c */ 5169 #line 387 "parser.yy" 5170 { (yyval.en) = (yyvsp[(7) - (7)].en)->set_argName( (yyvsp[(3) - (7)].en) ); } 5171 break; 5172 5173 case 37: 5174 5175 /* Line 1806 of yacc.c */ 5102 5176 #line 389 "parser.yy" 5103 { (yyval.en) = (yyvsp[( 3) - (3)].en)->set_argName( (yyvsp[(1) - (3)].tok)); }5104 break; 5105 5106 case 3 7:5177 { (yyval.en) = (yyvsp[(9) - (9)].en)->set_argName( new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(yyvsp[(3) - (9)].en)->set_link( flattenCommas( (yyvsp[(5) - (9)].en) )))); } 5178 break; 5179 5180 case 39: 5107 5181 5108 5182 /* Line 1806 of yacc.c */ 5109 5183 #line 394 "parser.yy" 5110 { (yyval.en) = (yyvsp[(7) - (7)].en)->set_argName( (yyvsp[(3) - (7)].en) ); } 5111 break; 5112 5113 case 38: 5114 5115 /* Line 1806 of yacc.c */ 5116 #line 396 "parser.yy" 5117 { (yyval.en) = (yyvsp[(9) - (9)].en)->set_argName( new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(yyvsp[(3) - (9)].en)->set_link( flattenCommas( (yyvsp[(5) - (9)].en) )))); } 5184 { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); } 5118 5185 break; 5119 5186 … … 5121 5188 5122 5189 /* Line 1806 of yacc.c */ 5190 #line 399 "parser.yy" 5191 { (yyval.en) = new VarRefNode( (yyvsp[(1) - (1)].tok) ); } 5192 break; 5193 5194 case 41: 5195 5196 /* Line 1806 of yacc.c */ 5123 5197 #line 401 "parser.yy" 5198 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), new VarRefNode( (yyvsp[(1) - (3)].tok) ), (yyvsp[(3) - (3)].en) ); } 5199 break; 5200 5201 case 42: 5202 5203 /* Line 1806 of yacc.c */ 5204 #line 403 "parser.yy" 5205 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), new VarRefNode( (yyvsp[(1) - (7)].tok) ), (yyvsp[(5) - (7)].en) ); } 5206 break; 5207 5208 case 43: 5209 5210 /* Line 1806 of yacc.c */ 5211 #line 405 "parser.yy" 5212 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), new VarRefNode( (yyvsp[(1) - (3)].tok) ), (yyvsp[(3) - (3)].en) ); } 5213 break; 5214 5215 case 44: 5216 5217 /* Line 1806 of yacc.c */ 5218 #line 407 "parser.yy" 5219 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), new VarRefNode( (yyvsp[(1) - (7)].tok) ), (yyvsp[(5) - (7)].en) ); } 5220 break; 5221 5222 case 46: 5223 5224 /* Line 1806 of yacc.c */ 5225 #line 415 "parser.yy" 5226 { (yyval.en) = (yyvsp[(1) - (1)].constant); } 5227 break; 5228 5229 case 47: 5230 5231 /* Line 1806 of yacc.c */ 5232 #line 417 "parser.yy" 5233 { (yyval.en) = (yyvsp[(1) - (1)].constant); } 5234 break; 5235 5236 case 48: 5237 5238 /* Line 1806 of yacc.c */ 5239 #line 419 "parser.yy" 5240 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Incr ), (yyvsp[(2) - (2)].en) ); } 5241 break; 5242 5243 case 49: 5244 5245 /* Line 1806 of yacc.c */ 5246 #line 421 "parser.yy" 5247 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Decr ), (yyvsp[(2) - (2)].en) ); } 5248 break; 5249 5250 case 50: 5251 5252 /* Line 1806 of yacc.c */ 5253 #line 423 "parser.yy" 5254 { (yyval.en) = (yyvsp[(2) - (2)].en); } 5255 break; 5256 5257 case 51: 5258 5259 /* Line 1806 of yacc.c */ 5260 #line 425 "parser.yy" 5261 { (yyval.en) = new CompositeExprNode( (yyvsp[(1) - (2)].en), (yyvsp[(2) - (2)].en) ); } 5262 break; 5263 5264 case 52: 5265 5266 /* Line 1806 of yacc.c */ 5267 #line 427 "parser.yy" 5268 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Neg ), (yyvsp[(2) - (2)].en) ); } 5269 break; 5270 5271 case 53: 5272 5273 /* Line 1806 of yacc.c */ 5274 #line 429 "parser.yy" 5275 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PointTo ), (yyvsp[(2) - (2)].en) ); } 5276 break; 5277 5278 case 54: 5279 5280 /* Line 1806 of yacc.c */ 5281 #line 435 "parser.yy" 5282 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::SizeOf ), (yyvsp[(2) - (2)].en) ); } 5283 break; 5284 5285 case 55: 5286 5287 /* Line 1806 of yacc.c */ 5288 #line 437 "parser.yy" 5289 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::SizeOf ), new TypeValueNode( (yyvsp[(3) - (4)].decl) )); } 5290 break; 5291 5292 case 56: 5293 5294 /* Line 1806 of yacc.c */ 5295 #line 439 "parser.yy" 5296 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( (yyvsp[(1) - (1)].tok) )); } 5297 break; 5298 5299 case 57: 5300 5301 /* Line 1806 of yacc.c */ 5302 #line 441 "parser.yy" 5303 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( (yyvsp[(1) - (4)].tok) ), new TypeValueNode( (yyvsp[(3) - (4)].decl) )); } 5304 break; 5305 5306 case 58: 5307 5308 /* Line 1806 of yacc.c */ 5309 #line 443 "parser.yy" 5310 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( (yyvsp[(1) - (4)].tok) ), (yyvsp[(3) - (4)].en) ); } 5311 break; 5312 5313 case 59: 5314 5315 /* Line 1806 of yacc.c */ 5316 #line 445 "parser.yy" 5317 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::AlignOf ), (yyvsp[(2) - (2)].en) ); } 5318 break; 5319 5320 case 60: 5321 5322 /* Line 1806 of yacc.c */ 5323 #line 447 "parser.yy" 5324 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::AlignOf ), new TypeValueNode( (yyvsp[(3) - (4)].decl) )); } 5325 break; 5326 5327 case 61: 5328 5329 /* Line 1806 of yacc.c */ 5330 #line 449 "parser.yy" 5331 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LabelAddress ), new VarRefNode( (yyvsp[(2) - (2)].tok), true )); } 5332 break; 5333 5334 case 62: 5335 5336 /* Line 1806 of yacc.c */ 5337 #line 453 "parser.yy" 5338 { (yyval.en) = new OperatorNode( OperatorNode::AddressOf ); } 5339 break; 5340 5341 case 63: 5342 5343 /* Line 1806 of yacc.c */ 5344 #line 454 "parser.yy" 5345 { (yyval.en) = new OperatorNode( OperatorNode::UnPlus ); } 5346 break; 5347 5348 case 64: 5349 5350 /* Line 1806 of yacc.c */ 5351 #line 455 "parser.yy" 5352 { (yyval.en) = new OperatorNode( OperatorNode::UnMinus ); } 5353 break; 5354 5355 case 65: 5356 5357 /* Line 1806 of yacc.c */ 5358 #line 456 "parser.yy" 5359 { (yyval.en) = new OperatorNode( OperatorNode::BitNeg ); } 5360 break; 5361 5362 case 67: 5363 5364 /* Line 1806 of yacc.c */ 5365 #line 462 "parser.yy" 5366 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cast ), new TypeValueNode( (yyvsp[(2) - (4)].decl) ), (yyvsp[(4) - (4)].en) ); } 5367 break; 5368 5369 case 68: 5370 5371 /* Line 1806 of yacc.c */ 5372 #line 464 "parser.yy" 5373 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cast ), new TypeValueNode( (yyvsp[(2) - (4)].decl) ), (yyvsp[(4) - (4)].en) ); } 5374 break; 5375 5376 case 70: 5377 5378 /* Line 1806 of yacc.c */ 5379 #line 470 "parser.yy" 5380 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Mul ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5381 break; 5382 5383 case 71: 5384 5385 /* Line 1806 of yacc.c */ 5386 #line 472 "parser.yy" 5387 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Div ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5388 break; 5389 5390 case 72: 5391 5392 /* Line 1806 of yacc.c */ 5393 #line 474 "parser.yy" 5394 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Mod ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5395 break; 5396 5397 case 74: 5398 5399 /* Line 1806 of yacc.c */ 5400 #line 480 "parser.yy" 5401 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Plus ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5402 break; 5403 5404 case 75: 5405 5406 /* Line 1806 of yacc.c */ 5407 #line 482 "parser.yy" 5408 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Minus ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5409 break; 5410 5411 case 77: 5412 5413 /* Line 1806 of yacc.c */ 5414 #line 488 "parser.yy" 5415 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LShift ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5416 break; 5417 5418 case 78: 5419 5420 /* Line 1806 of yacc.c */ 5421 #line 490 "parser.yy" 5422 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::RShift ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5423 break; 5424 5425 case 80: 5426 5427 /* Line 1806 of yacc.c */ 5428 #line 496 "parser.yy" 5429 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5430 break; 5431 5432 case 81: 5433 5434 /* Line 1806 of yacc.c */ 5435 #line 498 "parser.yy" 5436 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::GThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5437 break; 5438 5439 case 82: 5440 5441 /* Line 1806 of yacc.c */ 5442 #line 500 "parser.yy" 5443 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LEThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5444 break; 5445 5446 case 83: 5447 5448 /* Line 1806 of yacc.c */ 5449 #line 502 "parser.yy" 5450 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::GEThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5451 break; 5452 5453 case 85: 5454 5455 /* Line 1806 of yacc.c */ 5456 #line 508 "parser.yy" 5457 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Eq ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5458 break; 5459 5460 case 86: 5461 5462 /* Line 1806 of yacc.c */ 5463 #line 510 "parser.yy" 5464 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Neq ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5465 break; 5466 5467 case 88: 5468 5469 /* Line 1806 of yacc.c */ 5470 #line 516 "parser.yy" 5471 { (yyval.en) =new CompositeExprNode( new OperatorNode( OperatorNode::BitAnd ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5472 break; 5473 5474 case 90: 5475 5476 /* Line 1806 of yacc.c */ 5477 #line 522 "parser.yy" 5478 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Xor ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5479 break; 5480 5481 case 92: 5482 5483 /* Line 1806 of yacc.c */ 5484 #line 528 "parser.yy" 5485 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::BitOr ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5486 break; 5487 5488 case 94: 5489 5490 /* Line 1806 of yacc.c */ 5491 #line 534 "parser.yy" 5492 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::And ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5493 break; 5494 5495 case 96: 5496 5497 /* Line 1806 of yacc.c */ 5498 #line 540 "parser.yy" 5499 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Or ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5500 break; 5501 5502 case 98: 5503 5504 /* Line 1806 of yacc.c */ 5505 #line 546 "parser.yy" 5506 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cond ), (ExpressionNode *)mkList( (*(yyvsp[(1) - (5)].en), *(yyvsp[(3) - (5)].en), *(yyvsp[(5) - (5)].en) ) ) ); } 5507 break; 5508 5509 case 99: 5510 5511 /* Line 1806 of yacc.c */ 5512 #line 548 "parser.yy" 5513 { (yyval.en)=new CompositeExprNode( new OperatorNode( OperatorNode::NCond ), (yyvsp[(1) - (4)].en), (yyvsp[(4) - (4)].en) ); } 5514 break; 5515 5516 case 100: 5517 5518 /* Line 1806 of yacc.c */ 5519 #line 550 "parser.yy" 5520 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cond ), (ExpressionNode *)mkList( (*(yyvsp[(1) - (5)].en), *(yyvsp[(3) - (5)].en), *(yyvsp[(5) - (5)].en) ) ) ); } 5521 break; 5522 5523 case 103: 5524 5525 /* Line 1806 of yacc.c */ 5526 #line 561 "parser.yy" 5527 { (yyval.en) =new CompositeExprNode( new OperatorNode( OperatorNode::Assign ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5528 break; 5529 5530 case 104: 5531 5532 /* Line 1806 of yacc.c */ 5533 #line 563 "parser.yy" 5534 { (yyval.en) =new CompositeExprNode( (yyvsp[(2) - (3)].en), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5535 break; 5536 5537 case 105: 5538 5539 /* Line 1806 of yacc.c */ 5540 #line 565 "parser.yy" 5541 { (yyval.en) = ( (yyvsp[(2) - (2)].en) == 0 ) ? (yyvsp[(1) - (2)].en) : new CompositeExprNode( new OperatorNode( OperatorNode::Assign ), (yyvsp[(1) - (2)].en), (yyvsp[(2) - (2)].en) ); } 5542 break; 5543 5544 case 106: 5545 5546 /* Line 1806 of yacc.c */ 5547 #line 570 "parser.yy" 5548 { (yyval.en) = new NullExprNode; } 5549 break; 5550 5551 case 108: 5552 5553 /* Line 1806 of yacc.c */ 5554 #line 578 "parser.yy" 5555 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ) ); } 5556 break; 5557 5558 case 109: 5559 5560 /* Line 1806 of yacc.c */ 5561 #line 580 "parser.yy" 5562 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (yyvsp[(3) - (5)].en) ); } 5563 break; 5564 5565 case 110: 5566 5567 /* Line 1806 of yacc.c */ 5568 #line 582 "parser.yy" 5569 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(new NullExprNode)->set_link( (yyvsp[(4) - (6)].en) ) ); } 5570 break; 5571 5572 case 111: 5573 5574 /* Line 1806 of yacc.c */ 5575 #line 584 "parser.yy" 5576 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(yyvsp[(3) - (7)].en)->set_link( flattenCommas( (yyvsp[(5) - (7)].en) ) ) ); } 5577 break; 5578 5579 case 113: 5580 5581 /* Line 1806 of yacc.c */ 5582 #line 590 "parser.yy" 5124 5583 { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); } 5125 5584 break; 5126 5585 5127 case 41:5128 5129 /* Line 1806 of yacc.c */5130 #line 406 "parser.yy"5131 { (yyval.en) = new VarRefNode( (yyvsp[(1) - (1)].tok) ); }5132 break;5133 5134 case 42:5135 5136 /* Line 1806 of yacc.c */5137 #line 408 "parser.yy"5138 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), new VarRefNode( (yyvsp[(1) - (3)].tok) ), (yyvsp[(3) - (3)].en) ); }5139 break;5140 5141 case 43:5142 5143 /* Line 1806 of yacc.c */5144 #line 410 "parser.yy"5145 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), new VarRefNode( (yyvsp[(1) - (7)].tok) ), (yyvsp[(5) - (7)].en) ); }5146 break;5147 5148 case 44:5149 5150 /* Line 1806 of yacc.c */5151 #line 412 "parser.yy"5152 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), new VarRefNode( (yyvsp[(1) - (3)].tok) ), (yyvsp[(3) - (3)].en) ); }5153 break;5154 5155 case 45:5156 5157 /* Line 1806 of yacc.c */5158 #line 414 "parser.yy"5159 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), new VarRefNode( (yyvsp[(1) - (7)].tok) ), (yyvsp[(5) - (7)].en) ); }5160 break;5161 5162 case 47:5163 5164 /* Line 1806 of yacc.c */5165 #line 422 "parser.yy"5166 { (yyval.en) = (yyvsp[(1) - (1)].constant); }5167 break;5168 5169 case 48:5170 5171 /* Line 1806 of yacc.c */5172 #line 424 "parser.yy"5173 { (yyval.en) = (yyvsp[(1) - (1)].constant); }5174 break;5175 5176 case 49:5177 5178 /* Line 1806 of yacc.c */5179 #line 426 "parser.yy"5180 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Incr ), (yyvsp[(2) - (2)].en) ); }5181 break;5182 5183 case 50:5184 5185 /* Line 1806 of yacc.c */5186 #line 428 "parser.yy"5187 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Decr ), (yyvsp[(2) - (2)].en) ); }5188 break;5189 5190 case 51:5191 5192 /* Line 1806 of yacc.c */5193 #line 430 "parser.yy"5194 { (yyval.en) = (yyvsp[(2) - (2)].en); }5195 break;5196 5197 case 52:5198 5199 /* Line 1806 of yacc.c */5200 #line 432 "parser.yy"5201 { (yyval.en) = new CompositeExprNode( (yyvsp[(1) - (2)].en), (yyvsp[(2) - (2)].en) ); }5202 break;5203 5204 case 53:5205 5206 /* Line 1806 of yacc.c */5207 #line 434 "parser.yy"5208 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Neg ), (yyvsp[(2) - (2)].en) ); }5209 break;5210 5211 case 54:5212 5213 /* Line 1806 of yacc.c */5214 #line 436 "parser.yy"5215 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PointTo ), (yyvsp[(2) - (2)].en) ); }5216 break;5217 5218 case 55:5219 5220 /* Line 1806 of yacc.c */5221 #line 442 "parser.yy"5222 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::SizeOf ), (yyvsp[(2) - (2)].en) ); }5223 break;5224 5225 case 56:5226 5227 /* Line 1806 of yacc.c */5228 #line 444 "parser.yy"5229 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::SizeOf ), new TypeValueNode( (yyvsp[(3) - (4)].decl) )); }5230 break;5231 5232 case 57:5233 5234 /* Line 1806 of yacc.c */5235 #line 446 "parser.yy"5236 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( (yyvsp[(1) - (1)].tok) )); }5237 break;5238 5239 case 58:5240 5241 /* Line 1806 of yacc.c */5242 #line 448 "parser.yy"5243 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( (yyvsp[(1) - (4)].tok) ), new TypeValueNode( (yyvsp[(3) - (4)].decl) )); }5244 break;5245 5246 case 59:5247 5248 /* Line 1806 of yacc.c */5249 #line 450 "parser.yy"5250 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( (yyvsp[(1) - (4)].tok) ), (yyvsp[(3) - (4)].en) ); }5251 break;5252 5253 case 60:5254 5255 /* Line 1806 of yacc.c */5256 #line 452 "parser.yy"5257 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::AlignOf ), (yyvsp[(2) - (2)].en) ); }5258 break;5259 5260 case 61:5261 5262 /* Line 1806 of yacc.c */5263 #line 454 "parser.yy"5264 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::AlignOf ), new TypeValueNode( (yyvsp[(3) - (4)].decl) ) ); }5265 break;5266 5267 case 62:5268 5269 /* Line 1806 of yacc.c */5270 #line 456 "parser.yy"5271 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LabelAddress ), new VarRefNode( (yyvsp[(2) - (2)].tok), true ) ); }5272 break;5273 5274 case 63:5275 5276 /* Line 1806 of yacc.c */5277 #line 460 "parser.yy"5278 { (yyval.en) = new OperatorNode( OperatorNode::AddressOf ); }5279 break;5280 5281 case 64:5282 5283 /* Line 1806 of yacc.c */5284 #line 461 "parser.yy"5285 { (yyval.en) = new OperatorNode( OperatorNode::UnPlus ); }5286 break;5287 5288 case 65:5289 5290 /* Line 1806 of yacc.c */5291 #line 462 "parser.yy"5292 { (yyval.en) = new OperatorNode( OperatorNode::UnMinus ); }5293 break;5294 5295 case 66:5296 5297 /* Line 1806 of yacc.c */5298 #line 463 "parser.yy"5299 { (yyval.en) = new OperatorNode( OperatorNode::BitNeg ); }5300 break;5301 5302 case 68:5303 5304 /* Line 1806 of yacc.c */5305 #line 469 "parser.yy"5306 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cast ), new TypeValueNode( (yyvsp[(2) - (4)].decl) ), (yyvsp[(4) - (4)].en) ); }5307 break;5308 5309 case 69:5310 5311 /* Line 1806 of yacc.c */5312 #line 471 "parser.yy"5313 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cast ), new TypeValueNode( (yyvsp[(2) - (4)].decl) ), (yyvsp[(4) - (4)].en) ); }5314 break;5315 5316 case 71:5317 5318 /* Line 1806 of yacc.c */5319 #line 477 "parser.yy"5320 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Mul ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }5321 break;5322 5323 case 72:5324 5325 /* Line 1806 of yacc.c */5326 #line 479 "parser.yy"5327 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Div ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }5328 break;5329 5330 case 73:5331 5332 /* Line 1806 of yacc.c */5333 #line 481 "parser.yy"5334 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Mod ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }5335 break;5336 5337 case 75:5338 5339 /* Line 1806 of yacc.c */5340 #line 487 "parser.yy"5341 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Plus ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }5342 break;5343 5344 case 76:5345 5346 /* Line 1806 of yacc.c */5347 #line 489 "parser.yy"5348 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Minus ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }5349 break;5350 5351 case 78:5352 5353 /* Line 1806 of yacc.c */5354 #line 495 "parser.yy"5355 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LShift ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }5356 break;5357 5358 case 79:5359 5360 /* Line 1806 of yacc.c */5361 #line 497 "parser.yy"5362 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::RShift ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }5363 break;5364 5365 case 81:5366 5367 /* Line 1806 of yacc.c */5368 #line 503 "parser.yy"5369 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }5370 break;5371 5372 case 82:5373 5374 /* Line 1806 of yacc.c */5375 #line 505 "parser.yy"5376 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::GThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }5377 break;5378 5379 case 83:5380 5381 /* Line 1806 of yacc.c */5382 #line 507 "parser.yy"5383 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LEThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }5384 break;5385 5386 case 84:5387 5388 /* Line 1806 of yacc.c */5389 #line 509 "parser.yy"5390 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::GEThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }5391 break;5392 5393 case 86:5394 5395 /* Line 1806 of yacc.c */5396 #line 515 "parser.yy"5397 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Eq ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }5398 break;5399 5400 case 87:5401 5402 /* Line 1806 of yacc.c */5403 #line 517 "parser.yy"5404 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Neq ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }5405 break;5406 5407 case 89:5408 5409 /* Line 1806 of yacc.c */5410 #line 523 "parser.yy"5411 { (yyval.en) =new CompositeExprNode( new OperatorNode( OperatorNode::BitAnd ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }5412 break;5413 5414 case 91:5415 5416 /* Line 1806 of yacc.c */5417 #line 529 "parser.yy"5418 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Xor ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }5419 break;5420 5421 case 93:5422 5423 /* Line 1806 of yacc.c */5424 #line 535 "parser.yy"5425 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::BitOr ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }5426 break;5427 5428 case 95:5429 5430 /* Line 1806 of yacc.c */5431 #line 541 "parser.yy"5432 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::And ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }5433 break;5434 5435 case 97:5436 5437 /* Line 1806 of yacc.c */5438 #line 547 "parser.yy"5439 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Or ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }5440 break;5441 5442 case 99:5443 5444 /* Line 1806 of yacc.c */5445 #line 553 "parser.yy"5446 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cond ), (ExpressionNode *)mkList( (*(yyvsp[(1) - (5)].en), *(yyvsp[(3) - (5)].en), *(yyvsp[(5) - (5)].en) ) ) ); }5447 break;5448 5449 case 100:5450 5451 /* Line 1806 of yacc.c */5452 #line 555 "parser.yy"5453 { (yyval.en)=new CompositeExprNode( new OperatorNode( OperatorNode::NCond ), (yyvsp[(1) - (4)].en), (yyvsp[(4) - (4)].en) ); }5454 break;5455 5456 case 101:5457 5458 /* Line 1806 of yacc.c */5459 #line 557 "parser.yy"5460 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cond ), (ExpressionNode *)mkList( (*(yyvsp[(1) - (5)].en), *(yyvsp[(3) - (5)].en), *(yyvsp[(5) - (5)].en) ) ) ); }5461 break;5462 5463 case 104:5464 5465 /* Line 1806 of yacc.c */5466 #line 568 "parser.yy"5467 { (yyval.en) =new CompositeExprNode( new OperatorNode( OperatorNode::Assign ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }5468 break;5469 5470 case 105:5471 5472 /* Line 1806 of yacc.c */5473 #line 570 "parser.yy"5474 { (yyval.en) =new CompositeExprNode( (yyvsp[(2) - (3)].en), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }5475 break;5476 5477 case 106:5478 5479 /* Line 1806 of yacc.c */5480 #line 572 "parser.yy"5481 { (yyval.en) = ( (yyvsp[(2) - (2)].en) == 0 ) ? (yyvsp[(1) - (2)].en) : new CompositeExprNode( new OperatorNode( OperatorNode::Assign ), (yyvsp[(1) - (2)].en), (yyvsp[(2) - (2)].en) ); }5482 break;5483 5484 case 107:5485 5486 /* Line 1806 of yacc.c */5487 #line 577 "parser.yy"5488 { (yyval.en) = new NullExprNode; }5489 break;5490 5491 case 109:5492 5493 /* Line 1806 of yacc.c */5494 #line 585 "parser.yy"5495 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ) ); }5496 break;5497 5498 case 110:5499 5500 /* Line 1806 of yacc.c */5501 #line 587 "parser.yy"5502 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (yyvsp[(3) - (5)].en) ); }5503 break;5504 5505 case 111:5506 5507 /* Line 1806 of yacc.c */5508 #line 589 "parser.yy"5509 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(new NullExprNode)->set_link( (yyvsp[(4) - (6)].en) ) ); }5510 break;5511 5512 case 112:5513 5514 /* Line 1806 of yacc.c */5515 #line 591 "parser.yy"5516 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(yyvsp[(3) - (7)].en)->set_link( flattenCommas( (yyvsp[(5) - (7)].en) ) ) ); }5517 break;5518 5519 5586 case 114: 5520 5587 5521 5588 /* Line 1806 of yacc.c */ 5589 #line 594 "parser.yy" 5590 { (yyval.en) = new OperatorNode( OperatorNode::MulAssn ); } 5591 break; 5592 5593 case 115: 5594 5595 /* Line 1806 of yacc.c */ 5596 #line 595 "parser.yy" 5597 { (yyval.en) = new OperatorNode( OperatorNode::DivAssn ); } 5598 break; 5599 5600 case 116: 5601 5602 /* Line 1806 of yacc.c */ 5603 #line 596 "parser.yy" 5604 { (yyval.en) = new OperatorNode( OperatorNode::ModAssn ); } 5605 break; 5606 5607 case 117: 5608 5609 /* Line 1806 of yacc.c */ 5522 5610 #line 597 "parser.yy" 5523 { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); } 5524 break; 5525 5526 case 115: 5611 { (yyval.en) = new OperatorNode( OperatorNode::PlusAssn ); } 5612 break; 5613 5614 case 118: 5615 5616 /* Line 1806 of yacc.c */ 5617 #line 598 "parser.yy" 5618 { (yyval.en) = new OperatorNode( OperatorNode::MinusAssn ); } 5619 break; 5620 5621 case 119: 5622 5623 /* Line 1806 of yacc.c */ 5624 #line 599 "parser.yy" 5625 { (yyval.en) = new OperatorNode( OperatorNode::LSAssn ); } 5626 break; 5627 5628 case 120: 5629 5630 /* Line 1806 of yacc.c */ 5631 #line 600 "parser.yy" 5632 { (yyval.en) = new OperatorNode( OperatorNode::RSAssn ); } 5633 break; 5634 5635 case 121: 5527 5636 5528 5637 /* Line 1806 of yacc.c */ 5529 5638 #line 601 "parser.yy" 5530 { (yyval.en) = new OperatorNode( OperatorNode:: MulAssn ); }5531 break; 5532 5533 case 1 16:5639 { (yyval.en) = new OperatorNode( OperatorNode::AndAssn ); } 5640 break; 5641 5642 case 122: 5534 5643 5535 5644 /* Line 1806 of yacc.c */ 5536 5645 #line 602 "parser.yy" 5537 { (yyval.en) = new OperatorNode( OperatorNode:: DivAssn ); }5538 break; 5539 5540 case 1 17:5646 { (yyval.en) = new OperatorNode( OperatorNode::ERAssn ); } 5647 break; 5648 5649 case 123: 5541 5650 5542 5651 /* Line 1806 of yacc.c */ 5543 5652 #line 603 "parser.yy" 5544 { (yyval.en) = new OperatorNode( OperatorNode::ModAssn ); } 5545 break; 5546 5547 case 118: 5548 5549 /* Line 1806 of yacc.c */ 5550 #line 604 "parser.yy" 5551 { (yyval.en) = new OperatorNode( OperatorNode::PlusAssn ); } 5552 break; 5553 5554 case 119: 5555 5556 /* Line 1806 of yacc.c */ 5557 #line 605 "parser.yy" 5558 { (yyval.en) = new OperatorNode( OperatorNode::MinusAssn ); } 5559 break; 5560 5561 case 120: 5562 5563 /* Line 1806 of yacc.c */ 5564 #line 606 "parser.yy" 5565 { (yyval.en) = new OperatorNode( OperatorNode::LSAssn ); } 5566 break; 5567 5568 case 121: 5569 5570 /* Line 1806 of yacc.c */ 5571 #line 607 "parser.yy" 5572 { (yyval.en) = new OperatorNode( OperatorNode::RSAssn ); } 5573 break; 5574 5575 case 122: 5576 5577 /* Line 1806 of yacc.c */ 5578 #line 608 "parser.yy" 5579 { (yyval.en) = new OperatorNode( OperatorNode::AndAssn ); } 5580 break; 5581 5582 case 123: 5653 { (yyval.en) = new OperatorNode( OperatorNode::OrAssn ); } 5654 break; 5655 5656 case 125: 5583 5657 5584 5658 /* Line 1806 of yacc.c */ 5585 5659 #line 609 "parser.yy" 5586 { (yyval.en) = new OperatorNode( OperatorNode::ERAssn ); } 5587 break; 5588 5589 case 124: 5590 5591 /* Line 1806 of yacc.c */ 5592 #line 610 "parser.yy" 5593 { (yyval.en) = new OperatorNode( OperatorNode::OrAssn ); } 5660 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Comma ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5594 5661 break; 5595 5662 … … 5597 5664 5598 5665 /* Line 1806 of yacc.c */ 5599 #line 616 "parser.yy" 5600 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Comma ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5601 break; 5602 5603 case 127: 5604 5605 /* Line 1806 of yacc.c */ 5606 #line 621 "parser.yy" 5666 #line 614 "parser.yy" 5607 5667 { (yyval.en) = 0; } 5608 5668 break; 5609 5669 5610 case 13 1:5611 5612 /* Line 1806 of yacc.c */ 5613 #line 6 30"parser.yy"5670 case 130: 5671 5672 /* Line 1806 of yacc.c */ 5673 #line 623 "parser.yy" 5614 5674 { (yyval.sn) = (yyvsp[(1) - (1)].sn); } 5615 5675 break; 5616 5676 5617 case 137: 5618 5619 /* Line 1806 of yacc.c */ 5620 #line 637 "parser.yy" 5621 { 5622 Token fn; fn.str = new std::string( "^?{}" ); // location undefined 5623 (yyval.sn) = new StatementNode( StatementNode::Exp, new CompositeExprNode( new VarRefNode( fn ), 5624 (ExpressionNode *)(new CompositeExprNode( new OperatorNode( OperatorNode::AddressOf ), (yyvsp[(2) - (6)].en) ))->set_link( (yyvsp[(4) - (6)].en) ) ), 0 ); 5625 } 5626 break; 5627 5628 case 138: 5629 5630 /* Line 1806 of yacc.c */ 5631 #line 646 "parser.yy" 5677 case 136: 5678 5679 /* Line 1806 of yacc.c */ 5680 #line 633 "parser.yy" 5632 5681 { 5633 5682 (yyval.sn) = (yyvsp[(4) - (4)].sn)->add_label( (yyvsp[(1) - (4)].tok) ); … … 5635 5684 break; 5636 5685 5637 case 139: 5686 case 137: 5687 5688 /* Line 1806 of yacc.c */ 5689 #line 640 "parser.yy" 5690 { (yyval.sn) = new CompoundStmtNode( (StatementNode *)0 ); } 5691 break; 5692 5693 case 138: 5694 5695 /* Line 1806 of yacc.c */ 5696 #line 647 "parser.yy" 5697 { (yyval.sn) = new CompoundStmtNode( (yyvsp[(5) - (7)].sn) ); } 5698 break; 5699 5700 case 140: 5638 5701 5639 5702 /* Line 1806 of yacc.c */ 5640 5703 #line 653 "parser.yy" 5641 { (yyval.sn) = new CompoundStmtNode( (StatementNode *)0 ); } 5642 break; 5643 5644 case 140: 5704 { if ( (yyvsp[(1) - (3)].sn) != 0 ) { (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(3) - (3)].sn) ); (yyval.sn) = (yyvsp[(1) - (3)].sn); } } 5705 break; 5706 5707 case 141: 5708 5709 /* Line 1806 of yacc.c */ 5710 #line 658 "parser.yy" 5711 { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); } 5712 break; 5713 5714 case 142: 5645 5715 5646 5716 /* Line 1806 of yacc.c */ 5647 5717 #line 660 "parser.yy" 5648 { (yyval.sn) = new CompoundStmtNode( (yyvsp[(5) - (7)].sn) ); } 5649 break; 5650 5651 case 142: 5652 5653 /* Line 1806 of yacc.c */ 5654 #line 666 "parser.yy" 5655 { if ( (yyvsp[(1) - (3)].sn) != 0 ) { (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(3) - (3)].sn) ); (yyval.sn) = (yyvsp[(1) - (3)].sn); } } 5718 { (yyval.sn) = new StatementNode( (yyvsp[(2) - (2)].decl) ); } 5656 5719 break; 5657 5720 … … 5659 5722 5660 5723 /* Line 1806 of yacc.c */ 5661 #line 6 71"parser.yy"5724 #line 662 "parser.yy" 5662 5725 { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); } 5663 5726 break; 5664 5727 5665 case 14 4:5666 5667 /* Line 1806 of yacc.c */ 5668 #line 6 73"parser.yy"5669 { (yyval.sn) = new StatementNode( (yyvsp[(2) - (2)].decl) );}5670 break; 5671 5672 case 14 5:5673 5674 /* Line 1806 of yacc.c */ 5675 #line 67 5"parser.yy"5676 { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl)); }5728 case 146: 5729 5730 /* Line 1806 of yacc.c */ 5731 #line 669 "parser.yy" 5732 { if ( (yyvsp[(1) - (2)].sn) != 0 ) { (yyvsp[(1) - (2)].sn)->set_link( (yyvsp[(2) - (2)].sn) ); (yyval.sn) = (yyvsp[(1) - (2)].sn); } } 5733 break; 5734 5735 case 147: 5736 5737 /* Line 1806 of yacc.c */ 5738 #line 674 "parser.yy" 5739 { (yyval.sn) = new StatementNode( StatementNode::Exp, (yyvsp[(1) - (2)].en), 0 ); } 5677 5740 break; 5678 5741 … … 5680 5743 5681 5744 /* Line 1806 of yacc.c */ 5745 #line 680 "parser.yy" 5746 { (yyval.sn) = new StatementNode( StatementNode::If, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); } 5747 break; 5748 5749 case 149: 5750 5751 /* Line 1806 of yacc.c */ 5682 5752 #line 682 "parser.yy" 5683 { if ( (yyvsp[(1) - (2)].sn) != 0 ) { (yyvsp[(1) - (2)].sn)->set_link( (yyvsp[(2) - (2)].sn) ); (yyval.sn) = (yyvsp[(1) - (2)].sn); } } 5684 break; 5685 5686 case 149: 5687 5688 /* Line 1806 of yacc.c */ 5689 #line 687 "parser.yy" 5690 { (yyval.sn) = new StatementNode( StatementNode::Exp, (yyvsp[(1) - (2)].en), 0 ); } 5753 { (yyval.sn) = new StatementNode( StatementNode::If, (yyvsp[(3) - (7)].en), (StatementNode *)mkList((*(yyvsp[(5) - (7)].sn), *(yyvsp[(7) - (7)].sn) )) ); } 5691 5754 break; 5692 5755 … … 5694 5757 5695 5758 /* Line 1806 of yacc.c */ 5759 #line 684 "parser.yy" 5760 { (yyval.sn) = new StatementNode( StatementNode::Switch, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); } 5761 break; 5762 5763 case 151: 5764 5765 /* Line 1806 of yacc.c */ 5766 #line 686 "parser.yy" 5767 { (yyval.sn) = new StatementNode( StatementNode::Switch, (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ); /* xxx */ } 5768 break; 5769 5770 case 152: 5771 5772 /* Line 1806 of yacc.c */ 5773 #line 691 "parser.yy" 5774 { (yyval.sn) = new StatementNode( StatementNode::Choose, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); } 5775 break; 5776 5777 case 153: 5778 5779 /* Line 1806 of yacc.c */ 5696 5780 #line 693 "parser.yy" 5697 { (yyval.sn) = new StatementNode( StatementNode::If, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); } 5698 break; 5699 5700 case 151: 5701 5702 /* Line 1806 of yacc.c */ 5703 #line 695 "parser.yy" 5704 { (yyval.sn) = new StatementNode( StatementNode::If, (yyvsp[(3) - (7)].en), (StatementNode *)mkList((*(yyvsp[(5) - (7)].sn), *(yyvsp[(7) - (7)].sn) )) ); } 5705 break; 5706 5707 case 152: 5708 5709 /* Line 1806 of yacc.c */ 5710 #line 697 "parser.yy" 5711 { (yyval.sn) = new StatementNode( StatementNode::Switch, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); } 5712 break; 5713 5714 case 153: 5715 5716 /* Line 1806 of yacc.c */ 5717 #line 699 "parser.yy" 5718 { (yyval.sn) = new StatementNode( StatementNode::Switch, (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ); /* xxx */ } 5781 { (yyval.sn) = new StatementNode( StatementNode::Choose, (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ); } 5719 5782 break; 5720 5783 … … 5722 5785 5723 5786 /* Line 1806 of yacc.c */ 5724 #line 70 4"parser.yy"5725 { (yyval. sn) = new StatementNode( StatementNode::Choose, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn)); }5787 #line 700 "parser.yy" 5788 { (yyval.en) = (yyvsp[(1) - (1)].en); } 5726 5789 break; 5727 5790 … … 5729 5792 5730 5793 /* Line 1806 of yacc.c */ 5731 #line 706 "parser.yy" 5732 { (yyval.sn) = new StatementNode( StatementNode::Choose, (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ); } 5733 break; 5734 5735 case 156: 5794 #line 702 "parser.yy" 5795 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Range ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5796 break; 5797 5798 case 158: 5799 5800 /* Line 1806 of yacc.c */ 5801 #line 709 "parser.yy" 5802 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(tupleContents( (yyvsp[(1) - (3)].en) ))->set_link( (yyvsp[(3) - (3)].en) ) ); } 5803 break; 5804 5805 case 159: 5736 5806 5737 5807 /* Line 1806 of yacc.c */ 5738 5808 #line 713 "parser.yy" 5739 { (yyval.en) = (yyvsp[(1) - (1)].en); } 5740 break; 5741 5742 case 157: 5743 5744 /* Line 1806 of yacc.c */ 5745 #line 715 "parser.yy" 5746 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Range ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5809 { (yyval.sn) = new StatementNode( StatementNode::Case, (yyvsp[(2) - (3)].en), 0 ); } 5747 5810 break; 5748 5811 … … 5750 5813 5751 5814 /* Line 1806 of yacc.c */ 5752 #line 722 "parser.yy" 5753 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(tupleContents( (yyvsp[(1) - (3)].en) ))->set_link( (yyvsp[(3) - (3)].en) ) ); } 5754 break; 5755 5756 case 161: 5757 5758 /* Line 1806 of yacc.c */ 5759 #line 726 "parser.yy" 5760 { (yyval.sn) = new StatementNode( StatementNode::Case, (yyvsp[(2) - (3)].en), 0 ); } 5815 #line 714 "parser.yy" 5816 { (yyval.sn) = new StatementNode( StatementNode::Default ); } 5761 5817 break; 5762 5818 … … 5764 5820 5765 5821 /* Line 1806 of yacc.c */ 5766 #line 727 "parser.yy" 5767 { (yyval.sn) = new StatementNode( StatementNode::Default ); } 5822 #line 720 "parser.yy" 5823 { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (2)].sn)->set_link( (yyvsp[(2) - (2)].sn) )); } 5824 break; 5825 5826 case 163: 5827 5828 /* Line 1806 of yacc.c */ 5829 #line 724 "parser.yy" 5830 { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); } 5768 5831 break; 5769 5832 … … 5771 5834 5772 5835 /* Line 1806 of yacc.c */ 5773 #line 733 "parser.yy" 5774 { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (2)].sn)->set_link( (yyvsp[(2) - (2)].sn) )); } 5775 break; 5776 5777 case 165: 5836 #line 729 "parser.yy" 5837 { (yyval.sn) = 0; } 5838 break; 5839 5840 case 166: 5841 5842 /* Line 1806 of yacc.c */ 5843 #line 735 "parser.yy" 5844 { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); } 5845 break; 5846 5847 case 167: 5778 5848 5779 5849 /* Line 1806 of yacc.c */ 5780 5850 #line 737 "parser.yy" 5781 { (yyval.sn) = ( yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn)); }5782 break; 5783 5784 case 16 6:5851 { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(2) - (3)].sn)->append_last_case( (yyvsp[(3) - (3)].sn) ))); } 5852 break; 5853 5854 case 168: 5785 5855 5786 5856 /* Line 1806 of yacc.c */ … … 5789 5859 break; 5790 5860 5791 case 1 68:5861 case 170: 5792 5862 5793 5863 /* Line 1806 of yacc.c */ … … 5796 5866 break; 5797 5867 5798 case 1 69:5868 case 171: 5799 5869 5800 5870 /* Line 1806 of yacc.c */ 5801 5871 #line 750 "parser.yy" 5872 { (yyval.sn) = (yyvsp[(1) - (3)].sn)->append_last_case((StatementNode *)mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].sn) ))); } 5873 break; 5874 5875 case 172: 5876 5877 /* Line 1806 of yacc.c */ 5878 #line 752 "parser.yy" 5802 5879 { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(2) - (3)].sn)->append_last_case( (yyvsp[(3) - (3)].sn) ))); } 5803 5880 break; 5804 5881 5805 case 170: 5806 5807 /* Line 1806 of yacc.c */ 5808 #line 755 "parser.yy" 5882 case 173: 5883 5884 /* Line 1806 of yacc.c */ 5885 #line 754 "parser.yy" 5886 { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (4)].sn)->set_link( (yyvsp[(2) - (4)].sn)->append_last_case((StatementNode *)mkList((*(yyvsp[(3) - (4)].sn),*(yyvsp[(4) - (4)].sn) ))))); } 5887 break; 5888 5889 case 174: 5890 5891 /* Line 1806 of yacc.c */ 5892 #line 759 "parser.yy" 5809 5893 { (yyval.sn) = 0; } 5810 5894 break; 5811 5895 5812 case 172: 5813 5814 /* Line 1806 of yacc.c */ 5815 #line 761 "parser.yy" 5816 { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); } 5817 break; 5818 5819 case 173: 5820 5821 /* Line 1806 of yacc.c */ 5822 #line 763 "parser.yy" 5823 { (yyval.sn) = (yyvsp[(1) - (3)].sn)->append_last_case((StatementNode *)mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].sn) ))); } 5824 break; 5825 5826 case 174: 5896 case 176: 5897 5898 /* Line 1806 of yacc.c */ 5899 #line 764 "parser.yy" 5900 { (yyval.sn) = new StatementNode( StatementNode::Fallthru ); } 5901 break; 5902 5903 case 177: 5827 5904 5828 5905 /* Line 1806 of yacc.c */ 5829 5906 #line 765 "parser.yy" 5830 { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(2) - (3)].sn)->append_last_case( (yyvsp[(3) - (3)].sn) ))); }5831 break; 5832 5833 case 17 5:5834 5835 /* Line 1806 of yacc.c */ 5836 #line 7 67"parser.yy"5837 { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (4)].sn)->set_link( (yyvsp[(2) - (4)].sn)->append_last_case((StatementNode *)mkList((*(yyvsp[(3) - (4)].sn),*(yyvsp[(4) - (4)].sn) ))))); }5838 break; 5839 5840 case 17 6:5907 { (yyval.sn) = new StatementNode( StatementNode::Fallthru ); } 5908 break; 5909 5910 case 178: 5911 5912 /* Line 1806 of yacc.c */ 5913 #line 770 "parser.yy" 5914 { (yyval.sn) = new StatementNode( StatementNode::While, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); } 5915 break; 5916 5917 case 179: 5841 5918 5842 5919 /* Line 1806 of yacc.c */ 5843 5920 #line 772 "parser.yy" 5844 { (yyval.sn) = 0; } 5845 break; 5846 5847 case 178: 5848 5849 /* Line 1806 of yacc.c */ 5850 #line 777 "parser.yy" 5851 { (yyval.sn) = new StatementNode( StatementNode::Fallthru ); } 5852 break; 5853 5854 case 179: 5855 5856 /* Line 1806 of yacc.c */ 5857 #line 778 "parser.yy" 5858 { (yyval.sn) = new StatementNode( StatementNode::Fallthru ); } 5921 { (yyval.sn) = new StatementNode( StatementNode::Do, (yyvsp[(5) - (7)].en), (yyvsp[(2) - (7)].sn) ); } 5859 5922 break; 5860 5923 … … 5862 5925 5863 5926 /* Line 1806 of yacc.c */ 5864 #line 7 83"parser.yy"5865 { (yyval.sn) = new StatementNode( StatementNode:: While, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); }5927 #line 774 "parser.yy" 5928 { (yyval.sn) = new StatementNode( StatementNode::For, (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].sn) ); } 5866 5929 break; 5867 5930 … … 5869 5932 5870 5933 /* Line 1806 of yacc.c */ 5871 #line 7 85"parser.yy"5872 { (yyval. sn) = new StatementNode( StatementNode::Do, (yyvsp[(5) - (7)].en), (yyvsp[(2) - (7)].sn) ); }5934 #line 779 "parser.yy" 5935 { (yyval.en) = new ForCtlExprNode( (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].en) ); } 5873 5936 break; 5874 5937 … … 5876 5939 5877 5940 /* Line 1806 of yacc.c */ 5878 #line 78 7"parser.yy"5879 { (yyval. sn) = new StatementNode( StatementNode::For, (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].sn) ); }5941 #line 781 "parser.yy" 5942 { (yyval.en) = new ForCtlExprNode( (yyvsp[(1) - (4)].decl), (yyvsp[(2) - (4)].en), (yyvsp[(4) - (4)].en) ); } 5880 5943 break; 5881 5944 … … 5883 5946 5884 5947 /* Line 1806 of yacc.c */ 5885 #line 7 92"parser.yy"5886 { (yyval. en) = new ForCtlExprNode( (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].en) ); }5948 #line 786 "parser.yy" 5949 { (yyval.sn) = new StatementNode( StatementNode::Goto, (yyvsp[(2) - (3)].tok) ); } 5887 5950 break; 5888 5951 … … 5890 5953 5891 5954 /* Line 1806 of yacc.c */ 5892 #line 79 4"parser.yy"5893 { (yyval. en) = new ForCtlExprNode( (yyvsp[(1) - (4)].decl), (yyvsp[(2) - (4)].en), (yyvsp[(4) - (4)].en) ); }5955 #line 790 "parser.yy" 5956 { (yyval.sn) = new StatementNode( StatementNode::Goto, (yyvsp[(3) - (4)].en) ); } 5894 5957 break; 5895 5958 … … 5897 5960 5898 5961 /* Line 1806 of yacc.c */ 5899 #line 79 9"parser.yy"5900 { (yyval.sn) = new StatementNode( StatementNode:: Goto, (yyvsp[(2) - (3)].tok)); }5962 #line 793 "parser.yy" 5963 { (yyval.sn) = new StatementNode( StatementNode::Continue ); } 5901 5964 break; 5902 5965 … … 5904 5967 5905 5968 /* Line 1806 of yacc.c */ 5906 #line 803"parser.yy"5907 { (yyval.sn) = new StatementNode( StatementNode:: Goto, (yyvsp[(3) - (4)].en) ); }5969 #line 797 "parser.yy" 5970 { (yyval.sn) = new StatementNode( StatementNode::Continue, (yyvsp[(2) - (3)].tok) ); } 5908 5971 break; 5909 5972 … … 5911 5974 5912 5975 /* Line 1806 of yacc.c */ 5976 #line 800 "parser.yy" 5977 { (yyval.sn) = new StatementNode( StatementNode::Break ); } 5978 break; 5979 5980 case 188: 5981 5982 /* Line 1806 of yacc.c */ 5983 #line 804 "parser.yy" 5984 { (yyval.sn) = new StatementNode( StatementNode::Break, (yyvsp[(2) - (3)].tok) ); } 5985 break; 5986 5987 case 189: 5988 5989 /* Line 1806 of yacc.c */ 5913 5990 #line 806 "parser.yy" 5914 { (yyval.sn) = new StatementNode( StatementNode::Continue ); } 5915 break; 5916 5917 case 188: 5991 { (yyval.sn) = new StatementNode( StatementNode::Return, (yyvsp[(2) - (3)].en), 0 ); } 5992 break; 5993 5994 case 190: 5995 5996 /* Line 1806 of yacc.c */ 5997 #line 808 "parser.yy" 5998 { (yyval.sn) = new StatementNode( StatementNode::Throw, (yyvsp[(2) - (3)].en), 0 ); } 5999 break; 6000 6001 case 191: 5918 6002 5919 6003 /* Line 1806 of yacc.c */ 5920 6004 #line 810 "parser.yy" 5921 { (yyval.sn) = new StatementNode( StatementNode:: Continue, (yyvsp[(2) - (3)].tok)); }5922 break; 5923 5924 case 1 89:5925 5926 /* Line 1806 of yacc.c */ 5927 #line 81 3"parser.yy"5928 { (yyval.sn) = new StatementNode( StatementNode:: Break); }5929 break; 5930 5931 case 19 0:6005 { (yyval.sn) = new StatementNode( StatementNode::Throw ); } 6006 break; 6007 6008 case 192: 6009 6010 /* Line 1806 of yacc.c */ 6011 #line 815 "parser.yy" 6012 { (yyval.sn) = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].pn) )))); } 6013 break; 6014 6015 case 193: 5932 6016 5933 6017 /* Line 1806 of yacc.c */ 5934 6018 #line 817 "parser.yy" 5935 { (yyval.sn) = new StatementNode( StatementNode:: Break, (yyvsp[(2) - (3)].tok)); }5936 break; 5937 5938 case 19 1:6019 { (yyval.sn) = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].pn) )))); } 6020 break; 6021 6022 case 194: 5939 6023 5940 6024 /* Line 1806 of yacc.c */ 5941 6025 #line 819 "parser.yy" 5942 { (yyval.sn) = new StatementNode( StatementNode::Return, (yyvsp[(2) - (3)].en), 0 ); }5943 break;5944 5945 case 192:5946 5947 /* Line 1806 of yacc.c */5948 #line 821 "parser.yy"5949 { (yyval.sn) = new StatementNode( StatementNode::Throw, (yyvsp[(2) - (3)].en), 0 ); }5950 break;5951 5952 case 193:5953 5954 /* Line 1806 of yacc.c */5955 #line 825 "parser.yy"5956 { (yyval.sn) = new StatementNode( StatementNode::Throw, (yyvsp[(2) - (3)].en), 0 ); }5957 break;5958 5959 case 194:5960 5961 /* Line 1806 of yacc.c */5962 #line 827 "parser.yy"5963 { (yyval.sn) = new StatementNode( StatementNode::Throw, (yyvsp[(2) - (5)].en), 0 ); }5964 break;5965 5966 case 195:5967 5968 /* Line 1806 of yacc.c */5969 #line 834 "parser.yy"5970 { (yyval.sn) = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].pn) )))); }5971 break;5972 5973 case 196:5974 5975 /* Line 1806 of yacc.c */5976 #line 836 "parser.yy"5977 { (yyval.sn) = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].pn) )))); }5978 break;5979 5980 case 197:5981 5982 /* Line 1806 of yacc.c */5983 #line 838 "parser.yy"5984 6026 { 5985 6027 (yyvsp[(3) - (4)].pn)->set_link( (yyvsp[(4) - (4)].pn) ); … … 5988 6030 break; 5989 6031 6032 case 196: 6033 6034 /* Line 1806 of yacc.c */ 6035 #line 830 "parser.yy" 6036 { (yyval.pn) = StatementNode::newCatchStmt( 0, (yyvsp[(5) - (5)].sn), true ); } 6037 break; 6038 6039 case 197: 6040 6041 /* Line 1806 of yacc.c */ 6042 #line 832 "parser.yy" 6043 { (yyval.pn) = (yyvsp[(1) - (6)].pn)->set_link( StatementNode::newCatchStmt( 0, (yyvsp[(6) - (6)].sn), true ) ); } 6044 break; 6045 6046 case 198: 6047 6048 /* Line 1806 of yacc.c */ 6049 #line 837 "parser.yy" 6050 { (yyval.pn) = StatementNode::newCatchStmt( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ); } 6051 break; 6052 5990 6053 case 199: 5991 6054 5992 6055 /* Line 1806 of yacc.c */ 5993 #line 8 49 "parser.yy"5994 { (yyval.pn) = StatementNode::newCatchStmt( 0, (yyvsp[(5) - (5)].sn), true); }6056 #line 839 "parser.yy" 6057 { (yyval.pn) = (yyvsp[(1) - (10)].pn)->set_link( StatementNode::newCatchStmt( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ); } 5995 6058 break; 5996 6059 … … 5998 6061 5999 6062 /* Line 1806 of yacc.c */ 6000 #line 851 "parser.yy" 6001 { (yyval.pn) = (yyvsp[(1) - (6)].pn)->set_link( StatementNode::newCatchStmt( 0, (yyvsp[(6) - (6)].sn), true ) ); } 6002 break; 6003 6004 case 201: 6005 6006 /* Line 1806 of yacc.c */ 6007 #line 853 "parser.yy" 6008 { (yyval.pn) = StatementNode::newCatchStmt( 0, (yyvsp[(5) - (5)].sn), true ); } 6009 break; 6010 6011 case 202: 6012 6013 /* Line 1806 of yacc.c */ 6014 #line 855 "parser.yy" 6015 { (yyval.pn) = (yyvsp[(1) - (6)].pn)->set_link( StatementNode::newCatchStmt( 0, (yyvsp[(6) - (6)].sn), true ) ); } 6016 break; 6017 6018 case 203: 6019 6020 /* Line 1806 of yacc.c */ 6021 #line 860 "parser.yy" 6022 { (yyval.pn) = StatementNode::newCatchStmt( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ); } 6023 break; 6024 6025 case 204: 6026 6027 /* Line 1806 of yacc.c */ 6028 #line 862 "parser.yy" 6029 { (yyval.pn) = (yyvsp[(1) - (10)].pn)->set_link( StatementNode::newCatchStmt( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ); } 6030 break; 6031 6032 case 205: 6033 6034 /* Line 1806 of yacc.c */ 6035 #line 864 "parser.yy" 6036 { (yyval.pn) = StatementNode::newCatchStmt( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ); } 6037 break; 6038 6039 case 206: 6040 6041 /* Line 1806 of yacc.c */ 6042 #line 866 "parser.yy" 6043 { (yyval.pn) = (yyvsp[(1) - (10)].pn)->set_link( StatementNode::newCatchStmt( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ); } 6044 break; 6045 6046 case 207: 6047 6048 /* Line 1806 of yacc.c */ 6049 #line 871 "parser.yy" 6063 #line 844 "parser.yy" 6050 6064 { 6051 6065 (yyval.pn) = new StatementNode( StatementNode::Finally, 0, (yyvsp[(2) - (2)].sn) ); … … 6054 6068 break; 6055 6069 6056 case 20 9:6057 6058 /* Line 1806 of yacc.c */ 6059 #line 8 85"parser.yy"6070 case 202: 6071 6072 /* Line 1806 of yacc.c */ 6073 #line 858 "parser.yy" 6060 6074 { 6061 6075 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6064 6078 break; 6065 6079 6066 case 2 10:6067 6068 /* Line 1806 of yacc.c */ 6069 #line 8 90"parser.yy"6080 case 203: 6081 6082 /* Line 1806 of yacc.c */ 6083 #line 863 "parser.yy" 6070 6084 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); } 6071 6085 break; 6072 6086 6073 case 2 11:6074 6075 /* Line 1806 of yacc.c */ 6076 #line 8 92"parser.yy"6087 case 204: 6088 6089 /* Line 1806 of yacc.c */ 6090 #line 865 "parser.yy" 6077 6091 { 6078 6092 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6081 6095 break; 6082 6096 6097 case 206: 6098 6099 /* Line 1806 of yacc.c */ 6100 #line 874 "parser.yy" 6101 { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (6)].flag), (yyvsp[(4) - (6)].constant), 0 ); } 6102 break; 6103 6104 case 207: 6105 6106 /* Line 1806 of yacc.c */ 6107 #line 876 "parser.yy" 6108 { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (8)].flag), (yyvsp[(4) - (8)].constant), (yyvsp[(6) - (8)].en) ); } 6109 break; 6110 6111 case 208: 6112 6113 /* Line 1806 of yacc.c */ 6114 #line 878 "parser.yy" 6115 { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (10)].flag), (yyvsp[(4) - (10)].constant), (yyvsp[(6) - (10)].en), (yyvsp[(8) - (10)].en) ); } 6116 break; 6117 6118 case 209: 6119 6120 /* Line 1806 of yacc.c */ 6121 #line 880 "parser.yy" 6122 { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (12)].flag), (yyvsp[(4) - (12)].constant), (yyvsp[(6) - (12)].en), (yyvsp[(8) - (12)].en), (yyvsp[(10) - (12)].constant) ); } 6123 break; 6124 6125 case 210: 6126 6127 /* Line 1806 of yacc.c */ 6128 #line 882 "parser.yy" 6129 { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (14)].flag), (yyvsp[(5) - (14)].constant), 0, (yyvsp[(8) - (14)].en), (yyvsp[(10) - (14)].constant), (yyvsp[(12) - (14)].label) ); } 6130 break; 6131 6132 case 211: 6133 6134 /* Line 1806 of yacc.c */ 6135 #line 887 "parser.yy" 6136 { (yyval.flag) = false; } 6137 break; 6138 6139 case 212: 6140 6141 /* Line 1806 of yacc.c */ 6142 #line 889 "parser.yy" 6143 { (yyval.flag) = true; } 6144 break; 6145 6083 6146 case 213: 6084 6147 6085 6148 /* Line 1806 of yacc.c */ 6149 #line 894 "parser.yy" 6150 { (yyval.en) = 0; } 6151 break; 6152 6153 case 216: 6154 6155 /* Line 1806 of yacc.c */ 6086 6156 #line 901 "parser.yy" 6087 { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (6)].flag), (yyvsp[(4) - (6)].constant), 0 ); } 6088 break; 6089 6090 case 214: 6091 6092 /* Line 1806 of yacc.c */ 6093 #line 903 "parser.yy" 6094 { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (8)].flag), (yyvsp[(4) - (8)].constant), (yyvsp[(6) - (8)].en) ); } 6095 break; 6096 6097 case 215: 6098 6099 /* Line 1806 of yacc.c */ 6100 #line 905 "parser.yy" 6101 { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (10)].flag), (yyvsp[(4) - (10)].constant), (yyvsp[(6) - (10)].en), (yyvsp[(8) - (10)].en) ); } 6102 break; 6103 6104 case 216: 6105 6106 /* Line 1806 of yacc.c */ 6107 #line 907 "parser.yy" 6108 { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (12)].flag), (yyvsp[(4) - (12)].constant), (yyvsp[(6) - (12)].en), (yyvsp[(8) - (12)].en), (yyvsp[(10) - (12)].constant) ); } 6157 { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); } 6109 6158 break; 6110 6159 … … 6112 6161 6113 6162 /* Line 1806 of yacc.c */ 6114 #line 90 9"parser.yy"6115 { (yyval. sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (14)].flag), (yyvsp[(5) - (14)].constant), 0, (yyvsp[(8) - (14)].en), (yyvsp[(10) - (14)].constant), (yyvsp[(12) - (14)].label) ); }6163 #line 906 "parser.yy" 6164 { (yyval.en) = new AsmExprNode( 0, (yyvsp[(1) - (4)].constant), (yyvsp[(3) - (4)].en) ); } 6116 6165 break; 6117 6166 … … 6119 6168 6120 6169 /* Line 1806 of yacc.c */ 6121 #line 9 14"parser.yy"6122 { (yyval. flag) = false; }6170 #line 908 "parser.yy" 6171 { (yyval.en) = new AsmExprNode( (yyvsp[(2) - (7)].en), (yyvsp[(4) - (7)].constant), (yyvsp[(6) - (7)].en) ); } 6123 6172 break; 6124 6173 … … 6126 6175 6127 6176 /* Line 1806 of yacc.c */ 6128 #line 91 6"parser.yy"6129 { (yyval. flag) = true; }6177 #line 913 "parser.yy" 6178 { (yyval.constant) = 0; } 6130 6179 break; 6131 6180 … … 6133 6182 6134 6183 /* Line 1806 of yacc.c */ 6135 #line 921 "parser.yy" 6136 { (yyval.en) = 0; } 6184 #line 915 "parser.yy" 6185 { (yyval.constant) = (yyvsp[(1) - (1)].constant); } 6186 break; 6187 6188 case 221: 6189 6190 /* Line 1806 of yacc.c */ 6191 #line 917 "parser.yy" 6192 { (yyval.constant) = (ConstantNode *)(yyvsp[(1) - (3)].constant)->set_link( (yyvsp[(3) - (3)].constant) ); } 6193 break; 6194 6195 case 222: 6196 6197 /* Line 1806 of yacc.c */ 6198 #line 922 "parser.yy" 6199 { (yyval.label) = new LabelNode(); (yyval.label)->append_label( (yyvsp[(1) - (1)].tok) ); } 6137 6200 break; 6138 6201 … … 6140 6203 6141 6204 /* Line 1806 of yacc.c */ 6142 #line 92 8"parser.yy"6143 { (yyval. en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); }6205 #line 924 "parser.yy" 6206 { (yyval.label) = (yyvsp[(1) - (3)].label); (yyvsp[(1) - (3)].label)->append_label( (yyvsp[(3) - (3)].tok) ); } 6144 6207 break; 6145 6208 … … 6147 6210 6148 6211 /* Line 1806 of yacc.c */ 6149 #line 933 "parser.yy" 6150 { (yyval.en) = new AsmExprNode( 0, (yyvsp[(1) - (4)].constant), (yyvsp[(3) - (4)].en) ); } 6151 break; 6152 6153 case 225: 6154 6155 /* Line 1806 of yacc.c */ 6156 #line 935 "parser.yy" 6157 { (yyval.en) = new AsmExprNode( (yyvsp[(2) - (7)].en), (yyvsp[(4) - (7)].constant), (yyvsp[(6) - (7)].en) ); } 6158 break; 6159 6160 case 226: 6161 6162 /* Line 1806 of yacc.c */ 6163 #line 940 "parser.yy" 6164 { (yyval.constant) = 0; } 6212 #line 931 "parser.yy" 6213 { (yyval.decl) = 0; } 6165 6214 break; 6166 6215 … … 6168 6217 6169 6218 /* Line 1806 of yacc.c */ 6170 #line 9 42"parser.yy"6171 { (yyval. constant) = (yyvsp[(1) - (1)].constant); }6219 #line 938 "parser.yy" 6220 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); } 6172 6221 break; 6173 6222 … … 6175 6224 6176 6225 /* Line 1806 of yacc.c */ 6177 #line 944 "parser.yy" 6178 { (yyval.constant) = (ConstantNode *)(yyvsp[(1) - (3)].constant)->set_link( (yyvsp[(3) - (3)].constant) ); } 6179 break; 6180 6181 case 229: 6182 6183 /* Line 1806 of yacc.c */ 6184 #line 949 "parser.yy" 6185 { (yyval.label) = new LabelNode(); (yyval.label)->append_label( (yyvsp[(1) - (1)].tok) ); } 6186 break; 6187 6188 case 230: 6189 6190 /* Line 1806 of yacc.c */ 6191 #line 951 "parser.yy" 6192 { (yyval.label) = (yyvsp[(1) - (3)].label); (yyvsp[(1) - (3)].label)->append_label( (yyvsp[(3) - (3)].tok) ); } 6226 #line 943 "parser.yy" 6227 { (yyval.decl) = 0; } 6193 6228 break; 6194 6229 … … 6196 6231 6197 6232 /* Line 1806 of yacc.c */ 6198 #line 958 "parser.yy" 6199 { (yyval.decl) = 0; } 6200 break; 6201 6202 case 234: 6233 #line 950 "parser.yy" 6234 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); } 6235 break; 6236 6237 case 236: 6238 6239 /* Line 1806 of yacc.c */ 6240 #line 964 "parser.yy" 6241 {} 6242 break; 6243 6244 case 237: 6203 6245 6204 6246 /* Line 1806 of yacc.c */ 6205 6247 #line 965 "parser.yy" 6206 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }6207 break;6208 6209 case 235:6210 6211 /* Line 1806 of yacc.c */6212 #line 970 "parser.yy"6213 { (yyval.decl) = 0; }6214 break;6215 6216 case 238:6217 6218 /* Line 1806 of yacc.c */6219 #line 977 "parser.yy"6220 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }6221 break;6222 6223 case 243:6224 6225 /* Line 1806 of yacc.c */6226 #line 991 "parser.yy"6227 6248 {} 6228 6249 break; 6229 6250 6230 case 244: 6231 6232 /* Line 1806 of yacc.c */ 6233 #line 992 "parser.yy" 6234 {} 6235 break; 6236 6237 case 252: 6238 6239 /* Line 1806 of yacc.c */ 6240 #line 1021 "parser.yy" 6251 case 245: 6252 6253 /* Line 1806 of yacc.c */ 6254 #line 994 "parser.yy" 6241 6255 { 6242 6256 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6245 6259 break; 6246 6260 6247 case 2 53:6248 6249 /* Line 1806 of yacc.c */ 6250 #line 10 28"parser.yy"6261 case 246: 6262 6263 /* Line 1806 of yacc.c */ 6264 #line 1001 "parser.yy" 6251 6265 { 6252 6266 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6255 6269 break; 6256 6270 6257 case 2 54:6258 6259 /* Line 1806 of yacc.c */ 6260 #line 10 33"parser.yy"6271 case 247: 6272 6273 /* Line 1806 of yacc.c */ 6274 #line 1006 "parser.yy" 6261 6275 { 6262 6276 typedefTable.addToEnclosingScope( *(yyvsp[(5) - (6)].tok), TypedefTable::ID ); … … 6265 6279 break; 6266 6280 6267 case 2 55:6268 6269 /* Line 1806 of yacc.c */ 6270 #line 10 43"parser.yy"6281 case 248: 6282 6283 /* Line 1806 of yacc.c */ 6284 #line 1016 "parser.yy" 6271 6285 { 6272 6286 typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) ); … … 6275 6289 break; 6276 6290 6277 case 2 56:6278 6279 /* Line 1806 of yacc.c */ 6280 #line 10 48"parser.yy"6291 case 249: 6292 6293 /* Line 1806 of yacc.c */ 6294 #line 1021 "parser.yy" 6281 6295 { 6282 6296 typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) ); … … 6285 6299 break; 6286 6300 6287 case 25 7:6288 6289 /* Line 1806 of yacc.c */ 6290 #line 10 53"parser.yy"6301 case 250: 6302 6303 /* Line 1806 of yacc.c */ 6304 #line 1026 "parser.yy" 6291 6305 { 6292 6306 typedefTable.setNextIdentifier( *(yyvsp[(3) - (4)].tok) ); … … 6295 6309 break; 6296 6310 6297 case 25 8:6298 6299 /* Line 1806 of yacc.c */ 6300 #line 10 61"parser.yy"6311 case 251: 6312 6313 /* Line 1806 of yacc.c */ 6314 #line 1034 "parser.yy" 6301 6315 { 6302 6316 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6305 6319 break; 6306 6320 6307 case 25 9:6308 6309 /* Line 1806 of yacc.c */ 6310 #line 10 66"parser.yy"6321 case 252: 6322 6323 /* Line 1806 of yacc.c */ 6324 #line 1039 "parser.yy" 6311 6325 { 6312 6326 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6315 6329 break; 6316 6330 6317 case 2 60:6318 6319 /* Line 1806 of yacc.c */ 6320 #line 10 71"parser.yy"6331 case 253: 6332 6333 /* Line 1806 of yacc.c */ 6334 #line 1044 "parser.yy" 6321 6335 { 6322 6336 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6325 6339 break; 6326 6340 6327 case 2 61:6328 6329 /* Line 1806 of yacc.c */ 6330 #line 10 76"parser.yy"6341 case 254: 6342 6343 /* Line 1806 of yacc.c */ 6344 #line 1049 "parser.yy" 6331 6345 { 6332 6346 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6335 6349 break; 6336 6350 6337 case 2 62:6338 6339 /* Line 1806 of yacc.c */ 6340 #line 10 81"parser.yy"6351 case 255: 6352 6353 /* Line 1806 of yacc.c */ 6354 #line 1054 "parser.yy" 6341 6355 { 6342 6356 typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::ID ); … … 6345 6359 break; 6346 6360 6347 case 2 63:6348 6349 /* Line 1806 of yacc.c */ 6350 #line 10 89"parser.yy"6361 case 256: 6362 6363 /* Line 1806 of yacc.c */ 6364 #line 1062 "parser.yy" 6351 6365 { 6352 6366 (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(3) - (8)].tok), DeclarationNode::newTuple( 0 ), (yyvsp[(6) - (8)].decl), 0, true ); … … 6354 6368 break; 6355 6369 6356 case 2 64:6357 6358 /* Line 1806 of yacc.c */ 6359 #line 1 112"parser.yy"6370 case 257: 6371 6372 /* Line 1806 of yacc.c */ 6373 #line 1085 "parser.yy" 6360 6374 { 6361 6375 (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true ); … … 6363 6377 break; 6364 6378 6365 case 2 65:6366 6367 /* Line 1806 of yacc.c */ 6368 #line 1 116"parser.yy"6379 case 258: 6380 6381 /* Line 1806 of yacc.c */ 6382 #line 1089 "parser.yy" 6369 6383 { 6370 6384 (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true ); … … 6372 6386 break; 6373 6387 6374 case 2 66:6375 6376 /* Line 1806 of yacc.c */ 6377 #line 1 123"parser.yy"6388 case 259: 6389 6390 /* Line 1806 of yacc.c */ 6391 #line 1096 "parser.yy" 6378 6392 { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); } 6379 6393 break; 6380 6394 6381 case 26 7:6382 6383 /* Line 1806 of yacc.c */ 6384 #line 11 27"parser.yy"6395 case 260: 6396 6397 /* Line 1806 of yacc.c */ 6398 #line 1100 "parser.yy" 6385 6399 { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (9)].decl)->appendList( (yyvsp[(7) - (9)].decl) ) ); } 6386 6400 break; 6387 6401 6388 case 26 8:6389 6390 /* Line 1806 of yacc.c */ 6391 #line 11 32"parser.yy"6402 case 261: 6403 6404 /* Line 1806 of yacc.c */ 6405 #line 1105 "parser.yy" 6392 6406 { 6393 6407 typedefTable.addToEnclosingScope( TypedefTable::TD ); … … 6396 6410 break; 6397 6411 6398 case 26 9:6399 6400 /* Line 1806 of yacc.c */ 6401 #line 11 37"parser.yy"6412 case 262: 6413 6414 /* Line 1806 of yacc.c */ 6415 #line 1110 "parser.yy" 6402 6416 { 6403 6417 typedefTable.addToEnclosingScope( TypedefTable::TD ); … … 6406 6420 break; 6407 6421 6408 case 2 70:6409 6410 /* Line 1806 of yacc.c */ 6411 #line 11 42"parser.yy"6422 case 263: 6423 6424 /* Line 1806 of yacc.c */ 6425 #line 1115 "parser.yy" 6412 6426 { 6413 6427 typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::TD ); … … 6416 6430 break; 6417 6431 6418 case 2 71:6419 6420 /* Line 1806 of yacc.c */ 6421 #line 11 53"parser.yy"6432 case 264: 6433 6434 /* Line 1806 of yacc.c */ 6435 #line 1126 "parser.yy" 6422 6436 { 6423 6437 typedefTable.addToEnclosingScope( TypedefTable::TD ); … … 6426 6440 break; 6427 6441 6428 case 2 72:6429 6430 /* Line 1806 of yacc.c */ 6431 #line 11 58"parser.yy"6442 case 265: 6443 6444 /* Line 1806 of yacc.c */ 6445 #line 1131 "parser.yy" 6432 6446 { 6433 6447 typedefTable.addToEnclosingScope( TypedefTable::TD ); … … 6436 6450 break; 6437 6451 6438 case 2 73:6439 6440 /* Line 1806 of yacc.c */ 6441 #line 11 63"parser.yy"6452 case 266: 6453 6454 /* Line 1806 of yacc.c */ 6455 #line 1136 "parser.yy" 6442 6456 { 6443 6457 typedefTable.addToEnclosingScope( TypedefTable::TD ); … … 6446 6460 break; 6447 6461 6448 case 2 74:6449 6450 /* Line 1806 of yacc.c */ 6451 #line 11 68"parser.yy"6462 case 267: 6463 6464 /* Line 1806 of yacc.c */ 6465 #line 1141 "parser.yy" 6452 6466 { 6453 6467 typedefTable.addToEnclosingScope( TypedefTable::TD ); … … 6456 6470 break; 6457 6471 6458 case 2 75:6459 6460 /* Line 1806 of yacc.c */ 6461 #line 11 73"parser.yy"6472 case 268: 6473 6474 /* Line 1806 of yacc.c */ 6475 #line 1146 "parser.yy" 6462 6476 { 6463 6477 typedefTable.addToEnclosingScope( TypedefTable::TD ); … … 6466 6480 break; 6467 6481 6468 case 2 76:6469 6470 /* Line 1806 of yacc.c */ 6471 #line 11 82"parser.yy"6482 case 269: 6483 6484 /* Line 1806 of yacc.c */ 6485 #line 1155 "parser.yy" 6472 6486 { 6473 6487 typedefTable.addToEnclosingScope( *(yyvsp[(2) - (4)].tok), TypedefTable::TD ); … … 6476 6490 break; 6477 6491 6478 case 27 7:6479 6480 /* Line 1806 of yacc.c */ 6481 #line 11 87"parser.yy"6492 case 270: 6493 6494 /* Line 1806 of yacc.c */ 6495 #line 1160 "parser.yy" 6482 6496 { 6483 6497 typedefTable.addToEnclosingScope( *(yyvsp[(5) - (7)].tok), TypedefTable::TD ); … … 6486 6500 break; 6487 6501 6488 case 2 82:6489 6490 /* Line 1806 of yacc.c */ 6491 #line 1 204"parser.yy"6502 case 275: 6503 6504 /* Line 1806 of yacc.c */ 6505 #line 1177 "parser.yy" 6492 6506 { 6493 6507 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6496 6510 break; 6497 6511 6498 case 2 83:6499 6500 /* Line 1806 of yacc.c */ 6501 #line 1 209"parser.yy"6512 case 276: 6513 6514 /* Line 1806 of yacc.c */ 6515 #line 1182 "parser.yy" 6502 6516 { 6503 6517 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6506 6520 break; 6507 6521 6522 case 285: 6523 6524 /* Line 1806 of yacc.c */ 6525 #line 1204 "parser.yy" 6526 { (yyval.decl) = 0; } 6527 break; 6528 6529 case 288: 6530 6531 /* Line 1806 of yacc.c */ 6532 #line 1216 "parser.yy" 6533 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6534 break; 6535 6536 case 291: 6537 6538 /* Line 1806 of yacc.c */ 6539 #line 1227 "parser.yy" 6540 { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Const ); } 6541 break; 6542 6508 6543 case 292: 6509 6544 6510 6545 /* Line 1806 of yacc.c */ 6546 #line 1229 "parser.yy" 6547 { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Restrict ); } 6548 break; 6549 6550 case 293: 6551 6552 /* Line 1806 of yacc.c */ 6511 6553 #line 1231 "parser.yy" 6512 { (yyval.decl) = 0; } 6554 { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Volatile ); } 6555 break; 6556 6557 case 294: 6558 6559 /* Line 1806 of yacc.c */ 6560 #line 1233 "parser.yy" 6561 { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Lvalue ); } 6513 6562 break; 6514 6563 … … 6516 6565 6517 6566 /* Line 1806 of yacc.c */ 6518 #line 1243 "parser.yy" 6519 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6520 break; 6521 6522 case 298: 6523 6524 /* Line 1806 of yacc.c */ 6525 #line 1254 "parser.yy" 6526 { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Const ); } 6527 break; 6528 6529 case 299: 6530 6531 /* Line 1806 of yacc.c */ 6532 #line 1256 "parser.yy" 6533 { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Restrict ); } 6534 break; 6535 6536 case 300: 6537 6538 /* Line 1806 of yacc.c */ 6539 #line 1258 "parser.yy" 6540 { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Volatile ); } 6541 break; 6542 6543 case 301: 6544 6545 /* Line 1806 of yacc.c */ 6546 #line 1260 "parser.yy" 6547 { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Lvalue ); } 6548 break; 6549 6550 case 302: 6551 6552 /* Line 1806 of yacc.c */ 6553 #line 1262 "parser.yy" 6567 #line 1235 "parser.yy" 6554 6568 { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Atomic ); } 6555 6569 break; 6556 6570 6557 case 303:6558 6559 /* Line 1806 of yacc.c */ 6560 #line 12 64"parser.yy"6571 case 296: 6572 6573 /* Line 1806 of yacc.c */ 6574 #line 1237 "parser.yy" 6561 6575 { 6562 6576 typedefTable.enterScope(); … … 6564 6578 break; 6565 6579 6566 case 304:6567 6568 /* Line 1806 of yacc.c */ 6569 #line 12 68"parser.yy"6580 case 297: 6581 6582 /* Line 1806 of yacc.c */ 6583 #line 1241 "parser.yy" 6570 6584 { 6571 6585 typedefTable.leaveScope(); … … 6574 6588 break; 6575 6589 6590 case 299: 6591 6592 /* Line 1806 of yacc.c */ 6593 #line 1250 "parser.yy" 6594 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6595 break; 6596 6597 case 300: 6598 6599 /* Line 1806 of yacc.c */ 6600 #line 1252 "parser.yy" 6601 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); } 6602 break; 6603 6604 case 302: 6605 6606 /* Line 1806 of yacc.c */ 6607 #line 1263 "parser.yy" 6608 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6609 break; 6610 6611 case 304: 6612 6613 /* Line 1806 of yacc.c */ 6614 #line 1272 "parser.yy" 6615 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Extern ); } 6616 break; 6617 6618 case 305: 6619 6620 /* Line 1806 of yacc.c */ 6621 #line 1274 "parser.yy" 6622 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Static ); } 6623 break; 6624 6576 6625 case 306: 6577 6626 6578 6627 /* Line 1806 of yacc.c */ 6579 #line 1277 "parser.yy" 6628 #line 1276 "parser.yy" 6629 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Auto ); } 6630 break; 6631 6632 case 307: 6633 6634 /* Line 1806 of yacc.c */ 6635 #line 1278 "parser.yy" 6636 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Register ); } 6637 break; 6638 6639 case 308: 6640 6641 /* Line 1806 of yacc.c */ 6642 #line 1280 "parser.yy" 6643 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Inline ); } 6644 break; 6645 6646 case 309: 6647 6648 /* Line 1806 of yacc.c */ 6649 #line 1282 "parser.yy" 6650 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Fortran ); } 6651 break; 6652 6653 case 310: 6654 6655 /* Line 1806 of yacc.c */ 6656 #line 1284 "parser.yy" 6657 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Noreturn ); } 6658 break; 6659 6660 case 311: 6661 6662 /* Line 1806 of yacc.c */ 6663 #line 1286 "parser.yy" 6664 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Threadlocal ); } 6665 break; 6666 6667 case 312: 6668 6669 /* Line 1806 of yacc.c */ 6670 #line 1291 "parser.yy" 6671 { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Char ); } 6672 break; 6673 6674 case 313: 6675 6676 /* Line 1806 of yacc.c */ 6677 #line 1293 "parser.yy" 6678 { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Double ); } 6679 break; 6680 6681 case 314: 6682 6683 /* Line 1806 of yacc.c */ 6684 #line 1295 "parser.yy" 6685 { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Float ); } 6686 break; 6687 6688 case 315: 6689 6690 /* Line 1806 of yacc.c */ 6691 #line 1297 "parser.yy" 6692 { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Int ); } 6693 break; 6694 6695 case 316: 6696 6697 /* Line 1806 of yacc.c */ 6698 #line 1299 "parser.yy" 6699 { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Long ); } 6700 break; 6701 6702 case 317: 6703 6704 /* Line 1806 of yacc.c */ 6705 #line 1301 "parser.yy" 6706 { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Short ); } 6707 break; 6708 6709 case 318: 6710 6711 /* Line 1806 of yacc.c */ 6712 #line 1303 "parser.yy" 6713 { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Signed ); } 6714 break; 6715 6716 case 319: 6717 6718 /* Line 1806 of yacc.c */ 6719 #line 1305 "parser.yy" 6720 { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Unsigned ); } 6721 break; 6722 6723 case 320: 6724 6725 /* Line 1806 of yacc.c */ 6726 #line 1307 "parser.yy" 6727 { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Void ); } 6728 break; 6729 6730 case 321: 6731 6732 /* Line 1806 of yacc.c */ 6733 #line 1309 "parser.yy" 6734 { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Bool ); } 6735 break; 6736 6737 case 322: 6738 6739 /* Line 1806 of yacc.c */ 6740 #line 1311 "parser.yy" 6741 { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Complex ); } 6742 break; 6743 6744 case 323: 6745 6746 /* Line 1806 of yacc.c */ 6747 #line 1313 "parser.yy" 6748 { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Imaginary ); } 6749 break; 6750 6751 case 325: 6752 6753 /* Line 1806 of yacc.c */ 6754 #line 1320 "parser.yy" 6755 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 6756 break; 6757 6758 case 326: 6759 6760 /* Line 1806 of yacc.c */ 6761 #line 1322 "parser.yy" 6580 6762 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6581 6763 break; 6582 6764 6583 case 3 07:6584 6585 /* Line 1806 of yacc.c */ 6586 #line 1 279"parser.yy"6765 case 327: 6766 6767 /* Line 1806 of yacc.c */ 6768 #line 1324 "parser.yy" 6587 6769 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); } 6588 6770 break; 6589 6771 6590 case 309: 6591 6592 /* Line 1806 of yacc.c */ 6593 #line 1290 "parser.yy" 6772 case 328: 6773 6774 /* Line 1806 of yacc.c */ 6775 #line 1326 "parser.yy" 6776 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addType( (yyvsp[(1) - (3)].decl) ); } 6777 break; 6778 6779 case 330: 6780 6781 /* Line 1806 of yacc.c */ 6782 #line 1332 "parser.yy" 6783 { (yyval.decl) = (yyvsp[(2) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); } 6784 break; 6785 6786 case 332: 6787 6788 /* Line 1806 of yacc.c */ 6789 #line 1339 "parser.yy" 6790 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 6791 break; 6792 6793 case 333: 6794 6795 /* Line 1806 of yacc.c */ 6796 #line 1341 "parser.yy" 6594 6797 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6595 6798 break; 6596 6799 6597 case 311: 6598 6599 /* Line 1806 of yacc.c */ 6600 #line 1299 "parser.yy" 6601 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Extern ); } 6602 break; 6603 6604 case 312: 6605 6606 /* Line 1806 of yacc.c */ 6607 #line 1301 "parser.yy" 6608 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Static ); } 6609 break; 6610 6611 case 313: 6612 6613 /* Line 1806 of yacc.c */ 6614 #line 1303 "parser.yy" 6615 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Auto ); } 6616 break; 6617 6618 case 314: 6619 6620 /* Line 1806 of yacc.c */ 6621 #line 1305 "parser.yy" 6622 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Register ); } 6623 break; 6624 6625 case 315: 6626 6627 /* Line 1806 of yacc.c */ 6628 #line 1307 "parser.yy" 6629 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Inline ); } 6630 break; 6631 6632 case 316: 6633 6634 /* Line 1806 of yacc.c */ 6635 #line 1309 "parser.yy" 6636 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Fortran ); } 6637 break; 6638 6639 case 317: 6640 6641 /* Line 1806 of yacc.c */ 6642 #line 1311 "parser.yy" 6643 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Noreturn ); } 6644 break; 6645 6646 case 318: 6647 6648 /* Line 1806 of yacc.c */ 6649 #line 1313 "parser.yy" 6650 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Threadlocal ); } 6651 break; 6652 6653 case 319: 6654 6655 /* Line 1806 of yacc.c */ 6656 #line 1318 "parser.yy" 6657 { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Char ); } 6658 break; 6659 6660 case 320: 6661 6662 /* Line 1806 of yacc.c */ 6663 #line 1320 "parser.yy" 6664 { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Double ); } 6665 break; 6666 6667 case 321: 6668 6669 /* Line 1806 of yacc.c */ 6670 #line 1322 "parser.yy" 6671 { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Float ); } 6672 break; 6673 6674 case 322: 6675 6676 /* Line 1806 of yacc.c */ 6677 #line 1324 "parser.yy" 6678 { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Int ); } 6679 break; 6680 6681 case 323: 6682 6683 /* Line 1806 of yacc.c */ 6684 #line 1326 "parser.yy" 6685 { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Long ); } 6686 break; 6687 6688 case 324: 6689 6690 /* Line 1806 of yacc.c */ 6691 #line 1328 "parser.yy" 6692 { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Short ); } 6693 break; 6694 6695 case 325: 6696 6697 /* Line 1806 of yacc.c */ 6698 #line 1330 "parser.yy" 6699 { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Signed ); } 6700 break; 6701 6702 case 326: 6703 6704 /* Line 1806 of yacc.c */ 6705 #line 1332 "parser.yy" 6706 { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Unsigned ); } 6707 break; 6708 6709 case 327: 6710 6711 /* Line 1806 of yacc.c */ 6712 #line 1334 "parser.yy" 6713 { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Void ); } 6714 break; 6715 6716 case 328: 6717 6718 /* Line 1806 of yacc.c */ 6719 #line 1336 "parser.yy" 6720 { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Bool ); } 6721 break; 6722 6723 case 329: 6724 6725 /* Line 1806 of yacc.c */ 6726 #line 1338 "parser.yy" 6727 { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Complex ); } 6728 break; 6729 6730 case 330: 6731 6732 /* Line 1806 of yacc.c */ 6733 #line 1340 "parser.yy" 6734 { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Imaginary ); } 6735 break; 6736 6737 case 332: 6738 6739 /* Line 1806 of yacc.c */ 6740 #line 1347 "parser.yy" 6800 case 334: 6801 6802 /* Line 1806 of yacc.c */ 6803 #line 1343 "parser.yy" 6804 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addType( (yyvsp[(2) - (2)].decl) ); } 6805 break; 6806 6807 case 335: 6808 6809 /* Line 1806 of yacc.c */ 6810 #line 1348 "parser.yy" 6811 { (yyval.decl) = (yyvsp[(3) - (4)].decl); } 6812 break; 6813 6814 case 336: 6815 6816 /* Line 1806 of yacc.c */ 6817 #line 1350 "parser.yy" 6818 { (yyval.decl) = DeclarationNode::newTypeof( (yyvsp[(3) - (4)].en) ); } 6819 break; 6820 6821 case 337: 6822 6823 /* Line 1806 of yacc.c */ 6824 #line 1352 "parser.yy" 6825 { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].decl) ); } 6826 break; 6827 6828 case 338: 6829 6830 /* Line 1806 of yacc.c */ 6831 #line 1354 "parser.yy" 6832 { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); } 6833 break; 6834 6835 case 340: 6836 6837 /* Line 1806 of yacc.c */ 6838 #line 1360 "parser.yy" 6741 6839 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 6742 6840 break; 6743 6841 6744 case 3 33:6745 6746 /* Line 1806 of yacc.c */ 6747 #line 13 49"parser.yy"6842 case 341: 6843 6844 /* Line 1806 of yacc.c */ 6845 #line 1362 "parser.yy" 6748 6846 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6749 6847 break; 6750 6848 6751 case 3 34:6752 6753 /* Line 1806 of yacc.c */ 6754 #line 13 51"parser.yy"6849 case 342: 6850 6851 /* Line 1806 of yacc.c */ 6852 #line 1364 "parser.yy" 6755 6853 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); } 6756 6854 break; 6757 6855 6758 case 335: 6759 6760 /* Line 1806 of yacc.c */ 6761 #line 1353 "parser.yy" 6762 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addType( (yyvsp[(1) - (3)].decl) ); } 6763 break; 6764 6765 case 337: 6766 6767 /* Line 1806 of yacc.c */ 6768 #line 1359 "parser.yy" 6769 { (yyval.decl) = (yyvsp[(2) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); } 6770 break; 6771 6772 case 339: 6773 6774 /* Line 1806 of yacc.c */ 6775 #line 1366 "parser.yy" 6856 case 344: 6857 6858 /* Line 1806 of yacc.c */ 6859 #line 1370 "parser.yy" 6776 6860 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 6777 6861 break; 6778 6862 6779 case 34 0:6780 6781 /* Line 1806 of yacc.c */ 6782 #line 13 68"parser.yy"6863 case 345: 6864 6865 /* Line 1806 of yacc.c */ 6866 #line 1372 "parser.yy" 6783 6867 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6784 6868 break; 6785 6869 6786 case 341:6787 6788 /* Line 1806 of yacc.c */6789 #line 1370 "parser.yy"6790 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addType( (yyvsp[(2) - (2)].decl) ); }6791 break;6792 6793 case 342:6794 6795 /* Line 1806 of yacc.c */6796 #line 1375 "parser.yy"6797 { (yyval.decl) = (yyvsp[(3) - (4)].decl); }6798 break;6799 6800 case 343:6801 6802 /* Line 1806 of yacc.c */6803 #line 1377 "parser.yy"6804 { (yyval.decl) = DeclarationNode::newTypeof( (yyvsp[(3) - (4)].en) ); }6805 break;6806 6807 case 344:6808 6809 /* Line 1806 of yacc.c */6810 #line 1379 "parser.yy"6811 { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].decl) ); }6812 break;6813 6814 case 345:6815 6816 /* Line 1806 of yacc.c */6817 #line 1381 "parser.yy"6818 { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }6819 break;6820 6821 6870 case 347: 6822 6871 6823 6872 /* Line 1806 of yacc.c */ 6873 #line 1378 "parser.yy" 6874 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 6875 break; 6876 6877 case 348: 6878 6879 /* Line 1806 of yacc.c */ 6880 #line 1380 "parser.yy" 6881 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6882 break; 6883 6884 case 349: 6885 6886 /* Line 1806 of yacc.c */ 6887 #line 1382 "parser.yy" 6888 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); } 6889 break; 6890 6891 case 350: 6892 6893 /* Line 1806 of yacc.c */ 6824 6894 #line 1387 "parser.yy" 6825 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }6826 break; 6827 6828 case 3 48:6895 { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(1) - (1)].tok) ); } 6896 break; 6897 6898 case 351: 6829 6899 6830 6900 /* Line 1806 of yacc.c */ 6831 6901 #line 1389 "parser.yy" 6902 { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(2) - (2)].tok) )->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 6903 break; 6904 6905 case 352: 6906 6907 /* Line 1806 of yacc.c */ 6908 #line 1391 "parser.yy" 6832 6909 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6833 6910 break; 6834 6911 6835 case 349: 6836 6837 /* Line 1806 of yacc.c */ 6838 #line 1391 "parser.yy" 6839 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); } 6840 break; 6841 6842 case 351: 6843 6844 /* Line 1806 of yacc.c */ 6845 #line 1397 "parser.yy" 6846 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 6847 break; 6848 6849 case 352: 6850 6851 /* Line 1806 of yacc.c */ 6852 #line 1399 "parser.yy" 6853 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6854 break; 6855 6856 case 354: 6912 case 355: 6913 6914 /* Line 1806 of yacc.c */ 6915 #line 1401 "parser.yy" 6916 { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (4)].aggKey), 0, 0, (yyvsp[(3) - (4)].decl) ); } 6917 break; 6918 6919 case 356: 6920 6921 /* Line 1806 of yacc.c */ 6922 #line 1403 "parser.yy" 6923 { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (2)].aggKey), (yyvsp[(2) - (2)].tok), 0, 0 ); } 6924 break; 6925 6926 case 357: 6857 6927 6858 6928 /* Line 1806 of yacc.c */ 6859 6929 #line 1405 "parser.yy" 6860 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }6861 break; 6862 6863 case 35 5:6930 { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (5)].aggKey), (yyvsp[(2) - (5)].tok), 0, (yyvsp[(4) - (5)].decl) ); } 6931 break; 6932 6933 case 358: 6864 6934 6865 6935 /* Line 1806 of yacc.c */ 6866 6936 #line 1407 "parser.yy" 6867 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }6868 break; 6869 6870 case 35 6:6937 { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (7)].aggKey), 0, (yyvsp[(3) - (7)].en), (yyvsp[(6) - (7)].decl) ); } 6938 break; 6939 6940 case 359: 6871 6941 6872 6942 /* Line 1806 of yacc.c */ 6873 6943 #line 1409 "parser.yy" 6874 { (yyval.decl) = (yyvsp[( 1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl)); }6875 break; 6876 6877 case 3 57:6944 { (yyval.decl) = (yyvsp[(2) - (2)].decl); } 6945 break; 6946 6947 case 360: 6878 6948 6879 6949 /* Line 1806 of yacc.c */ 6880 6950 #line 1414 "parser.yy" 6881 { (yyval. decl) = DeclarationNode::newFromTypedef( (yyvsp[(1) - (1)].tok) ); }6882 break; 6883 6884 case 3 58:6951 { (yyval.aggKey) = DeclarationNode::Struct; } 6952 break; 6953 6954 case 361: 6885 6955 6886 6956 /* Line 1806 of yacc.c */ 6887 6957 #line 1416 "parser.yy" 6888 { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(2) - (2)].tok) )->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 6889 break; 6890 6891 case 359: 6892 6893 /* Line 1806 of yacc.c */ 6894 #line 1418 "parser.yy" 6895 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6958 { (yyval.aggKey) = DeclarationNode::Union; } 6896 6959 break; 6897 6960 … … 6899 6962 6900 6963 /* Line 1806 of yacc.c */ 6901 #line 142 8"parser.yy"6902 { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (4)].aggKey), 0, 0, (yyvsp[(3) - (4)].decl)); }6964 #line 1421 "parser.yy" 6965 { (yyval.decl) = (yyvsp[(1) - (1)].decl); } 6903 6966 break; 6904 6967 … … 6906 6969 6907 6970 /* Line 1806 of yacc.c */ 6908 #line 1430 "parser.yy" 6909 { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (2)].aggKey), (yyvsp[(2) - (2)].tok), 0, 0 ); } 6910 break; 6911 6912 case 364: 6971 #line 1423 "parser.yy" 6972 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ); } 6973 break; 6974 6975 case 365: 6976 6977 /* Line 1806 of yacc.c */ 6978 #line 1429 "parser.yy" 6979 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 6980 break; 6981 6982 case 367: 6913 6983 6914 6984 /* Line 1806 of yacc.c */ 6915 6985 #line 1432 "parser.yy" 6916 { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (5)].aggKey), (yyvsp[(2) - (5)].tok), 0, (yyvsp[(4) - (5)].decl) ); } 6917 break; 6918 6919 case 365: 6920 6921 /* Line 1806 of yacc.c */ 6922 #line 1434 "parser.yy" 6923 { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (7)].aggKey), 0, (yyvsp[(3) - (7)].en), (yyvsp[(6) - (7)].decl) ); } 6924 break; 6925 6926 case 366: 6927 6928 /* Line 1806 of yacc.c */ 6929 #line 1436 "parser.yy" 6930 { (yyval.decl) = (yyvsp[(2) - (2)].decl); } 6931 break; 6932 6933 case 367: 6934 6935 /* Line 1806 of yacc.c */ 6936 #line 1441 "parser.yy" 6937 { (yyval.aggKey) = DeclarationNode::Struct; } 6938 break; 6939 6940 case 368: 6941 6942 /* Line 1806 of yacc.c */ 6943 #line 1443 "parser.yy" 6944 { (yyval.aggKey) = DeclarationNode::Union; } 6986 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 6945 6987 break; 6946 6988 … … 6948 6990 6949 6991 /* Line 1806 of yacc.c */ 6950 #line 14 48 "parser.yy"6951 { (yyval.decl) = (yyvsp[(1) - ( 1)].decl); }6992 #line 1438 "parser.yy" 6993 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addName( (yyvsp[(2) - (2)].tok) ); } 6952 6994 break; 6953 6995 … … 6955 6997 6956 6998 /* Line 1806 of yacc.c */ 6957 #line 1450 "parser.yy" 6958 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ); } 6999 #line 1440 "parser.yy" 7000 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(1) - (3)].decl)->cloneType( (yyvsp[(3) - (3)].tok) ) ); } 7001 break; 7002 7003 case 371: 7004 7005 /* Line 1806 of yacc.c */ 7006 #line 1442 "parser.yy" 7007 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(1) - (2)].decl)->cloneType( 0 ) ); } 6959 7008 break; 6960 7009 … … 6962 7011 6963 7012 /* Line 1806 of yacc.c */ 7013 #line 1447 "parser.yy" 7014 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); } 7015 break; 7016 7017 case 373: 7018 7019 /* Line 1806 of yacc.c */ 7020 #line 1449 "parser.yy" 7021 { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(1) - (4)].decl)->cloneBaseType( (yyvsp[(4) - (4)].decl) ) ); } 7022 break; 7023 7024 case 374: 7025 7026 /* Line 1806 of yacc.c */ 7027 #line 1454 "parser.yy" 7028 { (yyval.decl) = DeclarationNode::newName( 0 ); /* XXX */ } 7029 break; 7030 7031 case 375: 7032 7033 /* Line 1806 of yacc.c */ 6964 7034 #line 1456 "parser.yy" 6965 { (yyval.decl) = (yyvsp[(2) - (3)].decl); }6966 break; 6967 6968 case 37 4:7035 { (yyval.decl) = DeclarationNode::newBitfield( (yyvsp[(1) - (1)].en) ); } 7036 break; 7037 7038 case 376: 6969 7039 6970 7040 /* Line 1806 of yacc.c */ 6971 7041 #line 1459 "parser.yy" 6972 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 6973 break; 6974 6975 case 376: 6976 6977 /* Line 1806 of yacc.c */ 6978 #line 1465 "parser.yy" 6979 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addName( (yyvsp[(2) - (2)].tok) ); } 7042 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); } 6980 7043 break; 6981 7044 … … 6983 7046 6984 7047 /* Line 1806 of yacc.c */ 6985 #line 1467 "parser.yy" 6986 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(1) - (3)].decl)->cloneType( (yyvsp[(3) - (3)].tok) ) ); } 6987 break; 6988 6989 case 378: 6990 6991 /* Line 1806 of yacc.c */ 6992 #line 1469 "parser.yy" 6993 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(1) - (2)].decl)->cloneType( 0 ) ); } 7048 #line 1462 "parser.yy" 7049 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); } 6994 7050 break; 6995 7051 … … 6997 7053 6998 7054 /* Line 1806 of yacc.c */ 6999 #line 14 74"parser.yy"7000 { (yyval. decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }7055 #line 1468 "parser.yy" 7056 { (yyval.en) = 0; } 7001 7057 break; 7002 7058 … … 7004 7060 7005 7061 /* Line 1806 of yacc.c */ 7006 #line 147 6"parser.yy"7007 { (yyval. decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(1) - (4)].decl)->cloneBaseType( (yyvsp[(4) - (4)].decl) )); }7062 #line 1470 "parser.yy" 7063 { (yyval.en) = (yyvsp[(1) - (1)].en); } 7008 7064 break; 7009 7065 … … 7011 7067 7012 7068 /* Line 1806 of yacc.c */ 7013 #line 1481 "parser.yy" 7014 { (yyval.decl) = DeclarationNode::newName( 0 ); /* XXX */ } 7015 break; 7016 7017 case 382: 7018 7019 /* Line 1806 of yacc.c */ 7020 #line 1483 "parser.yy" 7021 { (yyval.decl) = DeclarationNode::newBitfield( (yyvsp[(1) - (1)].en) ); } 7069 #line 1475 "parser.yy" 7070 { (yyval.en) = (yyvsp[(2) - (2)].en); } 7022 7071 break; 7023 7072 … … 7025 7074 7026 7075 /* Line 1806 of yacc.c */ 7076 #line 1484 "parser.yy" 7077 { (yyval.decl) = DeclarationNode::newEnum( 0, (yyvsp[(3) - (5)].decl) ); } 7078 break; 7079 7080 case 384: 7081 7082 /* Line 1806 of yacc.c */ 7027 7083 #line 1486 "parser.yy" 7028 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }7029 break; 7030 7031 case 38 4:7032 7033 /* Line 1806 of yacc.c */ 7034 #line 148 9"parser.yy"7035 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en)); }7084 { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (6)].tok), (yyvsp[(4) - (6)].decl) ); } 7085 break; 7086 7087 case 385: 7088 7089 /* Line 1806 of yacc.c */ 7090 #line 1488 "parser.yy" 7091 { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (2)].tok), 0 ); } 7036 7092 break; 7037 7093 … … 7039 7095 7040 7096 /* Line 1806 of yacc.c */ 7097 #line 1493 "parser.yy" 7098 { (yyval.decl) = DeclarationNode::newEnumConstant( (yyvsp[(1) - (2)].tok), (yyvsp[(2) - (2)].en) ); } 7099 break; 7100 7101 case 387: 7102 7103 /* Line 1806 of yacc.c */ 7041 7104 #line 1495 "parser.yy" 7105 { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( DeclarationNode::newEnumConstant( (yyvsp[(3) - (4)].tok), (yyvsp[(4) - (4)].en) ) ); } 7106 break; 7107 7108 case 388: 7109 7110 /* Line 1806 of yacc.c */ 7111 #line 1500 "parser.yy" 7042 7112 { (yyval.en) = 0; } 7043 7113 break; 7044 7114 7045 case 387: 7046 7047 /* Line 1806 of yacc.c */ 7048 #line 1497 "parser.yy" 7049 { (yyval.en) = (yyvsp[(1) - (1)].en); } 7050 break; 7051 7052 case 388: 7115 case 389: 7053 7116 7054 7117 /* Line 1806 of yacc.c */ … … 7060 7123 7061 7124 /* Line 1806 of yacc.c */ 7062 #line 1511 "parser.yy" 7063 { (yyval.decl) = DeclarationNode::newEnum( 0, (yyvsp[(3) - (5)].decl) ); } 7064 break; 7065 7066 case 391: 7067 7068 /* Line 1806 of yacc.c */ 7069 #line 1513 "parser.yy" 7070 { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (6)].tok), (yyvsp[(4) - (6)].decl) ); } 7071 break; 7072 7073 case 392: 7074 7075 /* Line 1806 of yacc.c */ 7076 #line 1515 "parser.yy" 7077 { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (2)].tok), 0 ); } 7078 break; 7079 7080 case 393: 7081 7082 /* Line 1806 of yacc.c */ 7083 #line 1520 "parser.yy" 7084 { (yyval.decl) = DeclarationNode::newEnumConstant( (yyvsp[(1) - (2)].tok), (yyvsp[(2) - (2)].en) ); } 7125 #line 1509 "parser.yy" 7126 { (yyval.decl) = 0; } 7085 7127 break; 7086 7128 … … 7088 7130 7089 7131 /* Line 1806 of yacc.c */ 7090 #line 15 22"parser.yy"7091 { (yyval.decl) = (yyvsp[(1) - ( 4)].decl)->appendList( DeclarationNode::newEnumConstant( (yyvsp[(3) - (4)].tok), (yyvsp[(4) - (4)].en)) ); }7132 #line 1517 "parser.yy" 7133 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); } 7092 7134 break; 7093 7135 … … 7095 7137 7096 7138 /* Line 1806 of yacc.c */ 7097 #line 15 27"parser.yy"7098 { (yyval. en) = 0; }7139 #line 1519 "parser.yy" 7140 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); } 7099 7141 break; 7100 7142 … … 7102 7144 7103 7145 /* Line 1806 of yacc.c */ 7146 #line 1521 "parser.yy" 7147 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); } 7148 break; 7149 7150 case 398: 7151 7152 /* Line 1806 of yacc.c */ 7104 7153 #line 1529 "parser.yy" 7105 { (yyval.en) = (yyvsp[(2) - (2)].en); } 7106 break; 7107 7108 case 397: 7109 7110 /* Line 1806 of yacc.c */ 7111 #line 1536 "parser.yy" 7154 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); } 7155 break; 7156 7157 case 399: 7158 7159 /* Line 1806 of yacc.c */ 7160 #line 1531 "parser.yy" 7161 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); } 7162 break; 7163 7164 case 400: 7165 7166 /* Line 1806 of yacc.c */ 7167 #line 1533 "parser.yy" 7168 { (yyval.decl) = (yyvsp[(1) - (9)].decl)->appendList( (yyvsp[(5) - (9)].decl) )->appendList( (yyvsp[(9) - (9)].decl) ); } 7169 break; 7170 7171 case 402: 7172 7173 /* Line 1806 of yacc.c */ 7174 #line 1539 "parser.yy" 7175 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); } 7176 break; 7177 7178 case 403: 7179 7180 /* Line 1806 of yacc.c */ 7181 #line 1544 "parser.yy" 7112 7182 { (yyval.decl) = 0; } 7113 7183 break; 7114 7184 7115 case 401: 7116 7117 /* Line 1806 of yacc.c */ 7118 #line 1544 "parser.yy" 7119 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); } 7120 break; 7121 7122 case 402: 7123 7124 /* Line 1806 of yacc.c */ 7125 #line 1546 "parser.yy" 7185 case 406: 7186 7187 /* Line 1806 of yacc.c */ 7188 #line 1551 "parser.yy" 7126 7189 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); } 7127 7190 break; 7128 7191 7129 case 403: 7130 7131 /* Line 1806 of yacc.c */ 7132 #line 1548 "parser.yy" 7133 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); } 7134 break; 7135 7136 case 405: 7137 7138 /* Line 1806 of yacc.c */ 7139 #line 1556 "parser.yy" 7140 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); } 7141 break; 7142 7143 case 406: 7192 case 409: 7144 7193 7145 7194 /* Line 1806 of yacc.c */ … … 7148 7197 break; 7149 7198 7150 case 4 07:7199 case 410: 7151 7200 7152 7201 /* Line 1806 of yacc.c */ 7153 7202 #line 1560 "parser.yy" 7154 { (yyval.decl) = (yyvsp[(1) - (9)].decl)->appendList( (yyvsp[(5) - (9)].decl) )->appendList( (yyvsp[(9) - (9)].decl) ); }7155 break;7156 7157 case 409:7158 7159 /* Line 1806 of yacc.c */7160 #line 1566 "parser.yy"7161 7203 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); } 7162 7204 break; 7163 7205 7164 case 41 0:7165 7166 /* Line 1806 of yacc.c */ 7167 #line 15 71"parser.yy"7168 { (yyval.decl) = 0; }7206 case 412: 7207 7208 /* Line 1806 of yacc.c */ 7209 #line 1569 "parser.yy" 7210 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); } 7169 7211 break; 7170 7212 … … 7172 7214 7173 7215 /* Line 1806 of yacc.c */ 7174 #line 1578 "parser.yy" 7175 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); } 7176 break; 7177 7178 case 416: 7179 7180 /* Line 1806 of yacc.c */ 7181 #line 1585 "parser.yy" 7182 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); } 7183 break; 7184 7185 case 417: 7186 7187 /* Line 1806 of yacc.c */ 7188 #line 1587 "parser.yy" 7189 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); } 7216 #line 1572 "parser.yy" 7217 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); } 7218 break; 7219 7220 case 414: 7221 7222 /* Line 1806 of yacc.c */ 7223 #line 1574 "parser.yy" 7224 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addName( (yyvsp[(3) - (4)].tok) )->addQualifiers( (yyvsp[(1) - (4)].decl) ); } 7190 7225 break; 7191 7226 … … 7193 7228 7194 7229 /* Line 1806 of yacc.c */ 7195 #line 1596 "parser.yy" 7196 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); } 7197 break; 7198 7199 case 420: 7200 7201 /* Line 1806 of yacc.c */ 7202 #line 1599 "parser.yy" 7203 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); } 7230 #line 1584 "parser.yy" 7231 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 7204 7232 break; 7205 7233 … … 7207 7235 7208 7236 /* Line 1806 of yacc.c */ 7209 #line 1601 "parser.yy" 7210 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addName( (yyvsp[(3) - (4)].tok) )->addQualifiers( (yyvsp[(1) - (4)].decl) ); } 7211 break; 7212 7213 case 426: 7214 7215 /* Line 1806 of yacc.c */ 7216 #line 1611 "parser.yy" 7217 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 7218 break; 7219 7220 case 428: 7221 7222 /* Line 1806 of yacc.c */ 7223 #line 1617 "parser.yy" 7237 #line 1590 "parser.yy" 7224 7238 { 7225 7239 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7228 7242 break; 7229 7243 7230 case 42 9:7231 7232 /* Line 1806 of yacc.c */ 7233 #line 1 622"parser.yy"7244 case 422: 7245 7246 /* Line 1806 of yacc.c */ 7247 #line 1595 "parser.yy" 7234 7248 { 7235 7249 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7238 7252 break; 7239 7253 7240 case 4 31:7241 7242 /* Line 1806 of yacc.c */ 7243 #line 16 31"parser.yy"7254 case 424: 7255 7256 /* Line 1806 of yacc.c */ 7257 #line 1604 "parser.yy" 7244 7258 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); } 7245 7259 break; 7246 7260 7247 case 432: 7261 case 425: 7262 7263 /* Line 1806 of yacc.c */ 7264 #line 1613 "parser.yy" 7265 { (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) ); } 7266 break; 7267 7268 case 426: 7269 7270 /* Line 1806 of yacc.c */ 7271 #line 1615 "parser.yy" 7272 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( DeclarationNode::newName( (yyvsp[(3) - (3)].tok) ) ); } 7273 break; 7274 7275 case 438: 7248 7276 7249 7277 /* Line 1806 of yacc.c */ 7250 7278 #line 1640 "parser.yy" 7251 { (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) ); } 7252 break; 7253 7254 case 433: 7255 7256 /* Line 1806 of yacc.c */ 7257 #line 1642 "parser.yy" 7258 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( DeclarationNode::newName( (yyvsp[(3) - (3)].tok) ) ); } 7279 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); } 7280 break; 7281 7282 case 442: 7283 7284 /* Line 1806 of yacc.c */ 7285 #line 1648 "parser.yy" 7286 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); } 7287 break; 7288 7289 case 443: 7290 7291 /* Line 1806 of yacc.c */ 7292 #line 1653 "parser.yy" 7293 { (yyval.in) = 0; } 7294 break; 7295 7296 case 444: 7297 7298 /* Line 1806 of yacc.c */ 7299 #line 1655 "parser.yy" 7300 { (yyval.in) = (yyvsp[(2) - (2)].in); } 7259 7301 break; 7260 7302 … … 7262 7304 7263 7305 /* Line 1806 of yacc.c */ 7264 #line 1667 "parser.yy" 7265 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); } 7306 #line 1659 "parser.yy" 7307 { (yyval.in) = new InitializerNode( (yyvsp[(1) - (1)].en) ); } 7308 break; 7309 7310 case 446: 7311 7312 /* Line 1806 of yacc.c */ 7313 #line 1660 "parser.yy" 7314 { (yyval.in) = new InitializerNode( (yyvsp[(2) - (4)].in), true ); } 7315 break; 7316 7317 case 448: 7318 7319 /* Line 1806 of yacc.c */ 7320 #line 1665 "parser.yy" 7321 { (yyval.in) = (yyvsp[(2) - (2)].in)->set_designators( (yyvsp[(1) - (2)].en) ); } 7266 7322 break; 7267 7323 … … 7269 7325 7270 7326 /* Line 1806 of yacc.c */ 7271 #line 16 75"parser.yy"7272 { (yyval. decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }7327 #line 1666 "parser.yy" 7328 { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (3)].in)->set_link( (yyvsp[(3) - (3)].in) ) ); } 7273 7329 break; 7274 7330 … … 7276 7332 7277 7333 /* Line 1806 of yacc.c */ 7278 #line 1680 "parser.yy" 7279 { (yyval.in) = 0; } 7280 break; 7281 7282 case 451: 7283 7284 /* Line 1806 of yacc.c */ 7285 #line 1682 "parser.yy" 7286 { (yyval.in) = (yyvsp[(2) - (2)].in); } 7334 #line 1668 "parser.yy" 7335 { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (4)].in)->set_link( (yyvsp[(4) - (4)].in)->set_designators( (yyvsp[(3) - (4)].en) ) ) ); } 7287 7336 break; 7288 7337 … … 7291 7340 /* Line 1806 of yacc.c */ 7292 7341 #line 1684 "parser.yy" 7293 { (yyval.in) = (yyvsp[(2) - (2)].in); } 7294 break; 7295 7296 case 453: 7297 7298 /* Line 1806 of yacc.c */ 7299 #line 1688 "parser.yy" 7300 { (yyval.in) = new InitializerNode( (yyvsp[(1) - (1)].en) ); } 7342 { (yyval.en) = new VarRefNode( (yyvsp[(1) - (2)].tok) ); } 7301 7343 break; 7302 7344 … … 7304 7346 7305 7347 /* Line 1806 of yacc.c */ 7306 #line 16 89"parser.yy"7307 { (yyval. in) = new InitializerNode( (yyvsp[(2) - (4)].in), true); }7348 #line 1690 "parser.yy" 7349 { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (2)].en)->set_link( (yyvsp[(2) - (2)].en) )); } 7308 7350 break; 7309 7351 … … 7311 7353 7312 7354 /* Line 1806 of yacc.c */ 7313 #line 1694 "parser.yy" 7314 { (yyval.in) = 0; } 7355 #line 1697 "parser.yy" 7356 { (yyval.en) = new DesignatorNode( new VarRefNode( (yyvsp[(1) - (1)].tok) ) ); } 7357 break; 7358 7359 case 456: 7360 7361 /* Line 1806 of yacc.c */ 7362 #line 1699 "parser.yy" 7363 { (yyval.en) = new DesignatorNode( new VarRefNode( (yyvsp[(2) - (2)].tok) ) ); } 7315 7364 break; 7316 7365 … … 7318 7367 7319 7368 /* Line 1806 of yacc.c */ 7320 #line 1 696"parser.yy"7321 { (yyval. in) = (yyvsp[(2) - (2)].in)->set_designators( (yyvsp[(1) - (2)].en)); }7369 #line 1702 "parser.yy" 7370 { (yyval.en) = new DesignatorNode( (yyvsp[(3) - (5)].en), true ); } 7322 7371 break; 7323 7372 … … 7325 7374 7326 7375 /* Line 1806 of yacc.c */ 7327 #line 1 697"parser.yy"7328 { (yyval. in) = (InitializerNode *)( (yyvsp[(1) - (3)].in)->set_link( (yyvsp[(3) - (3)].in) )); }7376 #line 1704 "parser.yy" 7377 { (yyval.en) = new DesignatorNode( (yyvsp[(3) - (5)].en), true ); } 7329 7378 break; 7330 7379 … … 7332 7381 7333 7382 /* Line 1806 of yacc.c */ 7334 #line 1699 "parser.yy" 7335 { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (4)].in)->set_link( (yyvsp[(4) - (4)].in)->set_designators( (yyvsp[(3) - (4)].en) ) ) ); } 7336 break; 7337 7338 case 461: 7339 7340 /* Line 1806 of yacc.c */ 7341 #line 1715 "parser.yy" 7342 { (yyval.en) = new VarRefNode( (yyvsp[(1) - (2)].tok) ); } 7383 #line 1706 "parser.yy" 7384 { (yyval.en) = new DesignatorNode( new CompositeExprNode( new OperatorNode( OperatorNode::Range ), (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].en) ), true ); } 7385 break; 7386 7387 case 460: 7388 7389 /* Line 1806 of yacc.c */ 7390 #line 1708 "parser.yy" 7391 { (yyval.en) = new DesignatorNode( (yyvsp[(4) - (6)].en) ); } 7392 break; 7393 7394 case 462: 7395 7396 /* Line 1806 of yacc.c */ 7397 #line 1732 "parser.yy" 7398 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 7343 7399 break; 7344 7400 … … 7346 7402 7347 7403 /* Line 1806 of yacc.c */ 7348 #line 17 21"parser.yy"7349 { (yyval. en) = (ExpressionNode *)( (yyvsp[(1) - (2)].en)->set_link( (yyvsp[(2) - (2)].en) )); }7404 #line 1734 "parser.yy" 7405 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 7350 7406 break; 7351 7407 … … 7353 7409 7354 7410 /* Line 1806 of yacc.c */ 7355 #line 1729 "parser.yy" 7356 { (yyval.en) = new DesignatorNode( new VarRefNode( (yyvsp[(1) - (1)].tok) ) ); } 7357 break; 7358 7359 case 465: 7360 7361 /* Line 1806 of yacc.c */ 7362 #line 1731 "parser.yy" 7363 { (yyval.en) = new DesignatorNode( new VarRefNode( (yyvsp[(2) - (2)].tok) ) ); } 7411 #line 1736 "parser.yy" 7412 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); } 7364 7413 break; 7365 7414 … … 7367 7416 7368 7417 /* Line 1806 of yacc.c */ 7369 #line 17 34"parser.yy"7370 { (yyval. en) = new DesignatorNode( (yyvsp[(3) - (5)].en), true); }7418 #line 1742 "parser.yy" 7419 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 7371 7420 break; 7372 7421 … … 7374 7423 7375 7424 /* Line 1806 of yacc.c */ 7376 #line 17 36"parser.yy"7377 { (yyval. en) = new DesignatorNode( (yyvsp[(3) - (5)].en), true); }7425 #line 1744 "parser.yy" 7426 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 7378 7427 break; 7379 7428 … … 7381 7430 7382 7431 /* Line 1806 of yacc.c */ 7383 #line 17 38"parser.yy"7384 { (yyval. en) = new DesignatorNode( new CompositeExprNode( new OperatorNode( OperatorNode::Range ), (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].en) ), true); }7385 break; 7386 7387 case 4 69:7388 7389 /* Line 1806 of yacc.c */ 7390 #line 17 40"parser.yy"7391 { (yyval. en) = new DesignatorNode( (yyvsp[(4) - (6)].en) ); }7432 #line 1749 "parser.yy" 7433 { (yyval.decl) = DeclarationNode::newFromTypeGen( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); } 7434 break; 7435 7436 case 470: 7437 7438 /* Line 1806 of yacc.c */ 7439 #line 1755 "parser.yy" 7440 { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(3) - (4)].decl) ); } 7392 7441 break; 7393 7442 … … 7395 7444 7396 7445 /* Line 1806 of yacc.c */ 7397 #line 176 4"parser.yy"7398 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl)); }7446 #line 1760 "parser.yy" 7447 { typedefTable.addToEnclosingScope( *(yyvsp[(2) - (2)].tok), TypedefTable::TD ); } 7399 7448 break; 7400 7449 … … 7402 7451 7403 7452 /* Line 1806 of yacc.c */ 7404 #line 176 6"parser.yy"7405 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }7406 break; 7407 7408 case 47 3:7453 #line 1762 "parser.yy" 7454 { (yyval.decl) = DeclarationNode::newTypeParam( (yyvsp[(1) - (4)].tclass), (yyvsp[(2) - (4)].tok) )->addAssertions( (yyvsp[(4) - (4)].decl) ); } 7455 break; 7456 7457 case 474: 7409 7458 7410 7459 /* Line 1806 of yacc.c */ 7411 7460 #line 1768 "parser.yy" 7412 { (yyval. decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }7461 { (yyval.tclass) = DeclarationNode::Type; } 7413 7462 break; 7414 7463 … … 7416 7465 7417 7466 /* Line 1806 of yacc.c */ 7418 #line 177 4"parser.yy"7419 { (yyval. decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }7467 #line 1770 "parser.yy" 7468 { (yyval.tclass) = DeclarationNode::Ftype; } 7420 7469 break; 7421 7470 … … 7423 7472 7424 7473 /* Line 1806 of yacc.c */ 7425 #line 177 6"parser.yy"7426 { (yyval. decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }7474 #line 1772 "parser.yy" 7475 { (yyval.tclass) = DeclarationNode::Dtype; } 7427 7476 break; 7428 7477 … … 7430 7479 7431 7480 /* Line 1806 of yacc.c */ 7432 #line 1781 "parser.yy" 7433 { (yyval.decl) = DeclarationNode::newFromTypeGen( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); } 7481 #line 1777 "parser.yy" 7482 { (yyval.decl) = 0; } 7483 break; 7484 7485 case 478: 7486 7487 /* Line 1806 of yacc.c */ 7488 #line 1779 "parser.yy" 7489 { (yyval.decl) = (yyvsp[(1) - (2)].decl) == 0 ? (yyvsp[(2) - (2)].decl) : (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ); } 7434 7490 break; 7435 7491 … … 7437 7493 7438 7494 /* Line 1806 of yacc.c */ 7439 #line 1787 "parser.yy" 7440 { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(3) - (4)].decl) ); } 7441 break; 7442 7443 case 480: 7444 7445 /* Line 1806 of yacc.c */ 7446 #line 1792 "parser.yy" 7447 { typedefTable.addToEnclosingScope( *(yyvsp[(2) - (2)].tok), TypedefTable::TD ); } 7448 break; 7449 7450 case 481: 7451 7452 /* Line 1806 of yacc.c */ 7453 #line 1794 "parser.yy" 7454 { (yyval.decl) = DeclarationNode::newTypeParam( (yyvsp[(1) - (4)].tclass), (yyvsp[(2) - (4)].tok) )->addAssertions( (yyvsp[(4) - (4)].decl) ); } 7455 break; 7456 7457 case 483: 7458 7459 /* Line 1806 of yacc.c */ 7460 #line 1800 "parser.yy" 7461 { (yyval.tclass) = DeclarationNode::Type; } 7462 break; 7463 7464 case 484: 7465 7466 /* Line 1806 of yacc.c */ 7467 #line 1802 "parser.yy" 7468 { (yyval.tclass) = DeclarationNode::Ftype; } 7469 break; 7470 7471 case 485: 7472 7473 /* Line 1806 of yacc.c */ 7474 #line 1804 "parser.yy" 7475 { (yyval.tclass) = DeclarationNode::Dtype; } 7476 break; 7477 7478 case 486: 7479 7480 /* Line 1806 of yacc.c */ 7481 #line 1809 "parser.yy" 7482 { (yyval.decl) = 0; } 7483 break; 7484 7485 case 487: 7486 7487 /* Line 1806 of yacc.c */ 7488 #line 1811 "parser.yy" 7489 { (yyval.decl) = (yyvsp[(1) - (2)].decl) == 0 ? (yyvsp[(2) - (2)].decl) : (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ); } 7490 break; 7491 7492 case 488: 7493 7494 /* Line 1806 of yacc.c */ 7495 #line 1816 "parser.yy" 7495 #line 1784 "parser.yy" 7496 7496 { 7497 7497 typedefTable.openContext( *(yyvsp[(2) - (5)].tok) ); … … 7500 7500 break; 7501 7501 7502 case 480: 7503 7504 /* Line 1806 of yacc.c */ 7505 #line 1789 "parser.yy" 7506 { (yyval.decl) = (yyvsp[(4) - (5)].decl); } 7507 break; 7508 7509 case 481: 7510 7511 /* Line 1806 of yacc.c */ 7512 #line 1791 "parser.yy" 7513 { (yyval.decl) = 0; } 7514 break; 7515 7516 case 482: 7517 7518 /* Line 1806 of yacc.c */ 7519 #line 1796 "parser.yy" 7520 { (yyval.en) = new TypeValueNode( (yyvsp[(1) - (1)].decl) ); } 7521 break; 7522 7523 case 484: 7524 7525 /* Line 1806 of yacc.c */ 7526 #line 1799 "parser.yy" 7527 { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( new TypeValueNode( (yyvsp[(3) - (3)].decl) ))); } 7528 break; 7529 7530 case 485: 7531 7532 /* Line 1806 of yacc.c */ 7533 #line 1801 "parser.yy" 7534 { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) )); } 7535 break; 7536 7537 case 486: 7538 7539 /* Line 1806 of yacc.c */ 7540 #line 1806 "parser.yy" 7541 { (yyval.decl) = (yyvsp[(2) - (2)].decl); } 7542 break; 7543 7544 case 487: 7545 7546 /* Line 1806 of yacc.c */ 7547 #line 1808 "parser.yy" 7548 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) ); } 7549 break; 7550 7551 case 488: 7552 7553 /* Line 1806 of yacc.c */ 7554 #line 1810 "parser.yy" 7555 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl)->copyStorageClasses( (yyvsp[(1) - (3)].decl) ) ); } 7556 break; 7557 7502 7558 case 489: 7503 7559 7504 7560 /* Line 1806 of yacc.c */ 7505 #line 18 21"parser.yy"7506 { (yyval.decl) = (yyvsp[( 4) - (5)].decl); }7561 #line 1815 "parser.yy" 7562 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addAssertions( (yyvsp[(2) - (2)].decl) ); } 7507 7563 break; 7508 7564 … … 7510 7566 7511 7567 /* Line 1806 of yacc.c */ 7512 #line 18 23"parser.yy"7513 { (yyval.decl) = 0; }7568 #line 1817 "parser.yy" 7569 { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addAssertions( (yyvsp[(2) - (4)].decl) )->addType( (yyvsp[(4) - (4)].decl) ); } 7514 7570 break; 7515 7571 … … 7517 7573 7518 7574 /* Line 1806 of yacc.c */ 7519 #line 1828 "parser.yy" 7520 { (yyval.en) = new TypeValueNode( (yyvsp[(1) - (1)].decl) ); } 7521 break; 7522 7523 case 493: 7524 7525 /* Line 1806 of yacc.c */ 7526 #line 1831 "parser.yy" 7527 { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( new TypeValueNode( (yyvsp[(3) - (3)].decl) ))); } 7528 break; 7529 7530 case 494: 7531 7532 /* Line 1806 of yacc.c */ 7533 #line 1833 "parser.yy" 7534 { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) )); } 7535 break; 7536 7537 case 495: 7538 7539 /* Line 1806 of yacc.c */ 7540 #line 1838 "parser.yy" 7541 { (yyval.decl) = (yyvsp[(2) - (2)].decl); } 7542 break; 7543 7544 case 496: 7545 7546 /* Line 1806 of yacc.c */ 7547 #line 1840 "parser.yy" 7548 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) ); } 7549 break; 7550 7551 case 497: 7552 7553 /* Line 1806 of yacc.c */ 7554 #line 1842 "parser.yy" 7555 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl)->copyStorageClasses( (yyvsp[(1) - (3)].decl) ) ); } 7556 break; 7557 7558 case 498: 7559 7560 /* Line 1806 of yacc.c */ 7561 #line 1847 "parser.yy" 7562 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addAssertions( (yyvsp[(2) - (2)].decl) ); } 7563 break; 7564 7565 case 499: 7566 7567 /* Line 1806 of yacc.c */ 7568 #line 1849 "parser.yy" 7569 { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addAssertions( (yyvsp[(2) - (4)].decl) )->addType( (yyvsp[(4) - (4)].decl) ); } 7570 break; 7571 7572 case 500: 7573 7574 /* Line 1806 of yacc.c */ 7575 #line 1854 "parser.yy" 7575 #line 1822 "parser.yy" 7576 7576 { 7577 7577 typedefTable.addToEnclosingScope( *(yyvsp[(1) - (1)].tok), TypedefTable::TD ); … … 7580 7580 break; 7581 7581 7582 case 501:7583 7584 /* Line 1806 of yacc.c */ 7585 #line 18 59"parser.yy"7582 case 492: 7583 7584 /* Line 1806 of yacc.c */ 7585 #line 1827 "parser.yy" 7586 7586 { 7587 7587 typedefTable.addToEnclosingScope( *(yyvsp[(1) - (6)].tok), TypedefTable::TG ); … … 7590 7590 break; 7591 7591 7592 case 502:7593 7594 /* Line 1806 of yacc.c */ 7595 #line 18 67"parser.yy"7592 case 493: 7593 7594 /* Line 1806 of yacc.c */ 7595 #line 1835 "parser.yy" 7596 7596 { 7597 7597 typedefTable.addToEnclosingScope( *(yyvsp[(2) - (9)].tok), TypedefTable::ID ); … … 7600 7600 break; 7601 7601 7602 case 503:7603 7604 /* Line 1806 of yacc.c */ 7605 #line 18 72"parser.yy"7602 case 494: 7603 7604 /* Line 1806 of yacc.c */ 7605 #line 1840 "parser.yy" 7606 7606 { 7607 7607 typedefTable.enterContext( *(yyvsp[(2) - (8)].tok) ); … … 7610 7610 break; 7611 7611 7612 case 504:7613 7614 /* Line 1806 of yacc.c */ 7615 #line 18 77"parser.yy"7612 case 495: 7613 7614 /* Line 1806 of yacc.c */ 7615 #line 1845 "parser.yy" 7616 7616 { 7617 7617 typedefTable.leaveContext(); … … 7621 7621 break; 7622 7622 7623 case 506:7624 7625 /* Line 1806 of yacc.c */ 7626 #line 18 87"parser.yy"7623 case 497: 7624 7625 /* Line 1806 of yacc.c */ 7626 #line 1855 "parser.yy" 7627 7627 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); } 7628 7628 break; 7629 7629 7630 case 50 9:7631 7632 /* Line 1806 of yacc.c */ 7633 #line 18 97"parser.yy"7630 case 500: 7631 7632 /* Line 1806 of yacc.c */ 7633 #line 1865 "parser.yy" 7634 7634 { 7635 7635 typedefTable.addToEnclosingScope2( TypedefTable::ID ); … … 7638 7638 break; 7639 7639 7640 case 5 10:7641 7642 /* Line 1806 of yacc.c */ 7643 #line 1 902"parser.yy"7640 case 501: 7641 7642 /* Line 1806 of yacc.c */ 7643 #line 1870 "parser.yy" 7644 7644 { 7645 7645 typedefTable.addToEnclosingScope2( TypedefTable::ID ); … … 7648 7648 break; 7649 7649 7650 case 5 11:7651 7652 /* Line 1806 of yacc.c */ 7653 #line 1 907"parser.yy"7650 case 502: 7651 7652 /* Line 1806 of yacc.c */ 7653 #line 1875 "parser.yy" 7654 7654 { 7655 7655 typedefTable.addToEnclosingScope2( *(yyvsp[(5) - (5)].tok), TypedefTable::ID ); … … 7658 7658 break; 7659 7659 7660 case 5 12:7661 7662 /* Line 1806 of yacc.c */ 7663 #line 1 915"parser.yy"7660 case 503: 7661 7662 /* Line 1806 of yacc.c */ 7663 #line 1883 "parser.yy" 7664 7664 { 7665 7665 typedefTable.addToEnclosingScope2( TypedefTable::ID ); … … 7668 7668 break; 7669 7669 7670 case 5 13:7671 7672 /* Line 1806 of yacc.c */ 7673 #line 1 920"parser.yy"7670 case 504: 7671 7672 /* Line 1806 of yacc.c */ 7673 #line 1888 "parser.yy" 7674 7674 { 7675 7675 typedefTable.addToEnclosingScope2( TypedefTable::ID ); … … 7678 7678 break; 7679 7679 7680 case 5 14:7681 7682 /* Line 1806 of yacc.c */ 7683 #line 1 930"parser.yy"7680 case 505: 7681 7682 /* Line 1806 of yacc.c */ 7683 #line 1898 "parser.yy" 7684 7684 {} 7685 7685 break; 7686 7686 7687 case 5 15:7688 7689 /* Line 1806 of yacc.c */ 7690 #line 19 32"parser.yy"7687 case 506: 7688 7689 /* Line 1806 of yacc.c */ 7690 #line 1900 "parser.yy" 7691 7691 { 7692 7692 if ( theTree ) { … … 7698 7698 break; 7699 7699 7700 case 5 17:7701 7702 /* Line 1806 of yacc.c */ 7703 #line 19 44"parser.yy"7700 case 508: 7701 7702 /* Line 1806 of yacc.c */ 7703 #line 1912 "parser.yy" 7704 7704 { (yyval.decl) = ( (yyvsp[(1) - (3)].decl) != NULL ) ? (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ) : (yyvsp[(3) - (3)].decl); } 7705 7705 break; 7706 7706 7707 case 5 18:7708 7709 /* Line 1806 of yacc.c */ 7710 #line 19 49"parser.yy"7707 case 509: 7708 7709 /* Line 1806 of yacc.c */ 7710 #line 1917 "parser.yy" 7711 7711 { (yyval.decl) = 0; } 7712 7712 break; 7713 7713 7714 case 5 22:7715 7716 /* Line 1806 of yacc.c */ 7717 #line 19 57"parser.yy"7714 case 513: 7715 7716 /* Line 1806 of yacc.c */ 7717 #line 1925 "parser.yy" 7718 7718 {} 7719 7719 break; 7720 7720 7721 case 5 23:7722 7723 /* Line 1806 of yacc.c */ 7724 #line 19 59"parser.yy"7721 case 514: 7722 7723 /* Line 1806 of yacc.c */ 7724 #line 1927 "parser.yy" 7725 7725 { 7726 7726 linkageStack.push( linkage ); … … 7729 7729 break; 7730 7730 7731 case 5 24:7732 7733 /* Line 1806 of yacc.c */ 7734 #line 19 64"parser.yy"7731 case 515: 7732 7733 /* Line 1806 of yacc.c */ 7734 #line 1932 "parser.yy" 7735 7735 { 7736 7736 linkage = linkageStack.top(); … … 7740 7740 break; 7741 7741 7742 case 5 25:7743 7744 /* Line 1806 of yacc.c */ 7745 #line 19 70"parser.yy"7742 case 516: 7743 7744 /* Line 1806 of yacc.c */ 7745 #line 1938 "parser.yy" 7746 7746 { (yyval.decl) = (yyvsp[(2) - (2)].decl); } 7747 7747 break; 7748 7748 7749 case 5 27:7750 7751 /* Line 1806 of yacc.c */ 7752 #line 19 80"parser.yy"7749 case 518: 7750 7751 /* Line 1806 of yacc.c */ 7752 #line 1948 "parser.yy" 7753 7753 { 7754 7754 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7758 7758 break; 7759 7759 7760 case 5 28:7761 7762 /* Line 1806 of yacc.c */ 7763 #line 19 86"parser.yy"7760 case 519: 7761 7762 /* Line 1806 of yacc.c */ 7763 #line 1954 "parser.yy" 7764 7764 { 7765 7765 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7769 7769 break; 7770 7770 7771 case 52 9:7772 7773 /* Line 1806 of yacc.c */ 7774 #line 19 95"parser.yy"7771 case 520: 7772 7773 /* Line 1806 of yacc.c */ 7774 #line 1963 "parser.yy" 7775 7775 { 7776 7776 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7780 7780 break; 7781 7781 7782 case 5 30:7783 7784 /* Line 1806 of yacc.c */ 7785 #line 2001"parser.yy"7782 case 521: 7783 7784 /* Line 1806 of yacc.c */ 7785 #line 1969 "parser.yy" 7786 7786 { 7787 7787 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7791 7791 break; 7792 7792 7793 case 5 31:7794 7795 /* Line 1806 of yacc.c */ 7796 #line 2007"parser.yy"7793 case 522: 7794 7795 /* Line 1806 of yacc.c */ 7796 #line 1975 "parser.yy" 7797 7797 { 7798 7798 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7802 7802 break; 7803 7803 7804 case 5 32:7805 7806 /* Line 1806 of yacc.c */ 7807 #line 2013"parser.yy"7804 case 523: 7805 7806 /* Line 1806 of yacc.c */ 7807 #line 1981 "parser.yy" 7808 7808 { 7809 7809 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7813 7813 break; 7814 7814 7815 case 5 33:7816 7817 /* Line 1806 of yacc.c */ 7818 #line 2019"parser.yy"7815 case 524: 7816 7817 /* Line 1806 of yacc.c */ 7818 #line 1987 "parser.yy" 7819 7819 { 7820 7820 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7824 7824 break; 7825 7825 7826 case 5 34:7827 7828 /* Line 1806 of yacc.c */ 7829 #line 2027"parser.yy"7826 case 525: 7827 7828 /* Line 1806 of yacc.c */ 7829 #line 1995 "parser.yy" 7830 7830 { 7831 7831 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7835 7835 break; 7836 7836 7837 case 5 35:7838 7839 /* Line 1806 of yacc.c */ 7840 #line 20 33"parser.yy"7837 case 526: 7838 7839 /* Line 1806 of yacc.c */ 7840 #line 2001 "parser.yy" 7841 7841 { 7842 7842 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7846 7846 break; 7847 7847 7848 case 5 36:7849 7850 /* Line 1806 of yacc.c */ 7851 #line 20 41"parser.yy"7848 case 527: 7849 7850 /* Line 1806 of yacc.c */ 7851 #line 2009 "parser.yy" 7852 7852 { 7853 7853 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7857 7857 break; 7858 7858 7859 case 5 37:7860 7861 /* Line 1806 of yacc.c */ 7862 #line 20 47"parser.yy"7859 case 528: 7860 7861 /* Line 1806 of yacc.c */ 7862 #line 2015 "parser.yy" 7863 7863 { 7864 7864 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7868 7868 break; 7869 7869 7870 case 5 41:7871 7872 /* Line 1806 of yacc.c */ 7873 #line 20 62"parser.yy"7870 case 532: 7871 7872 /* Line 1806 of yacc.c */ 7873 #line 2030 "parser.yy" 7874 7874 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Range ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 7875 7875 break; 7876 7876 7877 case 5 44:7878 7879 /* Line 1806 of yacc.c */ 7880 #line 20 72"parser.yy"7877 case 535: 7878 7879 /* Line 1806 of yacc.c */ 7880 #line 2040 "parser.yy" 7881 7881 { (yyval.decl) = 0; } 7882 7882 break; 7883 7883 7884 case 538: 7885 7886 /* Line 1806 of yacc.c */ 7887 #line 2047 "parser.yy" 7888 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 7889 break; 7890 7891 case 539: 7892 7893 /* Line 1806 of yacc.c */ 7894 #line 2053 "parser.yy" 7895 { (yyval.decl) = 0; } 7896 break; 7897 7898 case 545: 7899 7900 /* Line 1806 of yacc.c */ 7901 #line 2068 "parser.yy" 7902 {} 7903 break; 7904 7905 case 546: 7906 7907 /* Line 1806 of yacc.c */ 7908 #line 2069 "parser.yy" 7909 {} 7910 break; 7911 7884 7912 case 547: 7885 7913 7886 7914 /* Line 1806 of yacc.c */ 7887 #line 207 9"parser.yy"7888 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) );}7915 #line 2070 "parser.yy" 7916 {} 7889 7917 break; 7890 7918 … … 7892 7920 7893 7921 /* Line 1806 of yacc.c */ 7894 #line 2085 "parser.yy" 7895 { (yyval.decl) = 0; } 7896 break; 7897 7898 case 554: 7899 7900 /* Line 1806 of yacc.c */ 7901 #line 2100 "parser.yy" 7922 #line 2071 "parser.yy" 7902 7923 {} 7903 7924 break; 7904 7925 7905 case 555: 7906 7907 /* Line 1806 of yacc.c */ 7908 #line 2101 "parser.yy" 7909 {} 7910 break; 7911 7912 case 556: 7913 7914 /* Line 1806 of yacc.c */ 7915 #line 2102 "parser.yy" 7916 {} 7917 break; 7918 7919 case 557: 7920 7921 /* Line 1806 of yacc.c */ 7922 #line 2103 "parser.yy" 7923 {} 7924 break; 7925 7926 case 558: 7927 7928 /* Line 1806 of yacc.c */ 7929 #line 2138 "parser.yy" 7926 case 549: 7927 7928 /* Line 1806 of yacc.c */ 7929 #line 2106 "parser.yy" 7930 7930 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 7931 7931 break; 7932 7932 7933 case 5 60:7934 7935 /* Line 1806 of yacc.c */ 7936 #line 21 41"parser.yy"7933 case 551: 7934 7935 /* Line 1806 of yacc.c */ 7936 #line 2109 "parser.yy" 7937 7937 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 7938 7938 break; 7939 7939 7940 case 5 61:7941 7942 /* Line 1806 of yacc.c */ 7943 #line 21 43"parser.yy"7940 case 552: 7941 7942 /* Line 1806 of yacc.c */ 7943 #line 2111 "parser.yy" 7944 7944 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 7945 7945 break; 7946 7946 7947 case 5 62:7948 7949 /* Line 1806 of yacc.c */ 7950 #line 21 48"parser.yy"7947 case 553: 7948 7949 /* Line 1806 of yacc.c */ 7950 #line 2116 "parser.yy" 7951 7951 { 7952 7952 typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) ); … … 7955 7955 break; 7956 7956 7957 case 554: 7958 7959 /* Line 1806 of yacc.c */ 7960 #line 2121 "parser.yy" 7961 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 7962 break; 7963 7964 case 555: 7965 7966 /* Line 1806 of yacc.c */ 7967 #line 2126 "parser.yy" 7968 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 7969 break; 7970 7971 case 556: 7972 7973 /* Line 1806 of yacc.c */ 7974 #line 2128 "parser.yy" 7975 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 7976 break; 7977 7978 case 557: 7979 7980 /* Line 1806 of yacc.c */ 7981 #line 2130 "parser.yy" 7982 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 7983 break; 7984 7985 case 558: 7986 7987 /* Line 1806 of yacc.c */ 7988 #line 2135 "parser.yy" 7989 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); } 7990 break; 7991 7992 case 559: 7993 7994 /* Line 1806 of yacc.c */ 7995 #line 2137 "parser.yy" 7996 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 7997 break; 7998 7999 case 560: 8000 8001 /* Line 1806 of yacc.c */ 8002 #line 2139 "parser.yy" 8003 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8004 break; 8005 8006 case 561: 8007 8008 /* Line 1806 of yacc.c */ 8009 #line 2141 "parser.yy" 8010 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8011 break; 8012 8013 case 562: 8014 8015 /* Line 1806 of yacc.c */ 8016 #line 2146 "parser.yy" 8017 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8018 break; 8019 7957 8020 case 563: 7958 8021 7959 8022 /* Line 1806 of yacc.c */ 7960 #line 21 53"parser.yy"8023 #line 2148 "parser.yy" 7961 8024 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 7962 8025 break; … … 7966 8029 /* Line 1806 of yacc.c */ 7967 8030 #line 2158 "parser.yy" 8031 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8032 break; 8033 8034 case 566: 8035 8036 /* Line 1806 of yacc.c */ 8037 #line 2161 "parser.yy" 8038 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8039 break; 8040 8041 case 567: 8042 8043 /* Line 1806 of yacc.c */ 8044 #line 2166 "parser.yy" 8045 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); } 8046 break; 8047 8048 case 568: 8049 8050 /* Line 1806 of yacc.c */ 8051 #line 2168 "parser.yy" 8052 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8053 break; 8054 8055 case 569: 8056 8057 /* Line 1806 of yacc.c */ 8058 #line 2170 "parser.yy" 8059 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8060 break; 8061 8062 case 570: 8063 8064 /* Line 1806 of yacc.c */ 8065 #line 2175 "parser.yy" 7968 8066 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 7969 8067 break; 7970 8068 7971 case 5 65:7972 7973 /* Line 1806 of yacc.c */ 7974 #line 21 60"parser.yy"8069 case 571: 8070 8071 /* Line 1806 of yacc.c */ 8072 #line 2177 "parser.yy" 7975 8073 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 7976 8074 break; 7977 8075 7978 case 5 66:7979 7980 /* Line 1806 of yacc.c */ 7981 #line 21 62"parser.yy"8076 case 572: 8077 8078 /* Line 1806 of yacc.c */ 8079 #line 2179 "parser.yy" 7982 8080 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 7983 8081 break; 7984 8082 7985 case 567: 7986 7987 /* Line 1806 of yacc.c */ 7988 #line 2167 "parser.yy" 8083 case 573: 8084 8085 /* Line 1806 of yacc.c */ 8086 #line 2184 "parser.yy" 8087 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8088 break; 8089 8090 case 574: 8091 8092 /* Line 1806 of yacc.c */ 8093 #line 2186 "parser.yy" 8094 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8095 break; 8096 8097 case 575: 8098 8099 /* Line 1806 of yacc.c */ 8100 #line 2188 "parser.yy" 8101 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8102 break; 8103 8104 case 579: 8105 8106 /* Line 1806 of yacc.c */ 8107 #line 2203 "parser.yy" 8108 { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addIdList( (yyvsp[(3) - (4)].decl) ); } 8109 break; 8110 8111 case 580: 8112 8113 /* Line 1806 of yacc.c */ 8114 #line 2205 "parser.yy" 8115 { (yyval.decl) = (yyvsp[(2) - (6)].decl)->addIdList( (yyvsp[(5) - (6)].decl) ); } 8116 break; 8117 8118 case 581: 8119 8120 /* Line 1806 of yacc.c */ 8121 #line 2207 "parser.yy" 8122 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8123 break; 8124 8125 case 582: 8126 8127 /* Line 1806 of yacc.c */ 8128 #line 2212 "parser.yy" 8129 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8130 break; 8131 8132 case 583: 8133 8134 /* Line 1806 of yacc.c */ 8135 #line 2214 "parser.yy" 8136 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8137 break; 8138 8139 case 584: 8140 8141 /* Line 1806 of yacc.c */ 8142 #line 2216 "parser.yy" 8143 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8144 break; 8145 8146 case 585: 8147 8148 /* Line 1806 of yacc.c */ 8149 #line 2221 "parser.yy" 8150 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8151 break; 8152 8153 case 586: 8154 8155 /* Line 1806 of yacc.c */ 8156 #line 2223 "parser.yy" 8157 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8158 break; 8159 8160 case 587: 8161 8162 /* Line 1806 of yacc.c */ 8163 #line 2225 "parser.yy" 8164 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8165 break; 8166 8167 case 588: 8168 8169 /* Line 1806 of yacc.c */ 8170 #line 2240 "parser.yy" 8171 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8172 break; 8173 8174 case 590: 8175 8176 /* Line 1806 of yacc.c */ 8177 #line 2243 "parser.yy" 8178 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8179 break; 8180 8181 case 591: 8182 8183 /* Line 1806 of yacc.c */ 8184 #line 2245 "parser.yy" 8185 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8186 break; 8187 8188 case 593: 8189 8190 /* Line 1806 of yacc.c */ 8191 #line 2251 "parser.yy" 8192 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8193 break; 8194 8195 case 594: 8196 8197 /* Line 1806 of yacc.c */ 8198 #line 2256 "parser.yy" 8199 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8200 break; 8201 8202 case 595: 8203 8204 /* Line 1806 of yacc.c */ 8205 #line 2258 "parser.yy" 8206 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8207 break; 8208 8209 case 596: 8210 8211 /* Line 1806 of yacc.c */ 8212 #line 2260 "parser.yy" 8213 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8214 break; 8215 8216 case 597: 8217 8218 /* Line 1806 of yacc.c */ 8219 #line 2265 "parser.yy" 7989 8220 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); } 7990 8221 break; 7991 8222 7992 case 5 68:7993 7994 /* Line 1806 of yacc.c */ 7995 #line 2 169"parser.yy"8223 case 598: 8224 8225 /* Line 1806 of yacc.c */ 8226 #line 2267 "parser.yy" 7996 8227 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 7997 8228 break; 7998 8229 7999 case 5 69:8000 8001 /* Line 1806 of yacc.c */ 8002 #line 2 171"parser.yy"8230 case 599: 8231 8232 /* Line 1806 of yacc.c */ 8233 #line 2269 "parser.yy" 8003 8234 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8004 8235 break; 8005 8236 8006 case 570:8007 8008 /* Line 1806 of yacc.c */ 8009 #line 2 173"parser.yy"8237 case 600: 8238 8239 /* Line 1806 of yacc.c */ 8240 #line 2271 "parser.yy" 8010 8241 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8011 8242 break; 8012 8243 8013 case 571: 8014 8015 /* Line 1806 of yacc.c */ 8016 #line 2178 "parser.yy" 8244 case 601: 8245 8246 /* Line 1806 of yacc.c */ 8247 #line 2276 "parser.yy" 8248 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); } 8249 break; 8250 8251 case 602: 8252 8253 /* Line 1806 of yacc.c */ 8254 #line 2278 "parser.yy" 8017 8255 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8018 8256 break; 8019 8257 8020 case 572:8021 8022 /* Line 1806 of yacc.c */ 8023 #line 2 180 "parser.yy"8258 case 603: 8259 8260 /* Line 1806 of yacc.c */ 8261 #line 2280 "parser.yy" 8024 8262 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8025 8263 break; 8026 8264 8027 case 573:8028 8029 /* Line 1806 of yacc.c */ 8030 #line 2 190 "parser.yy"8265 case 604: 8266 8267 /* Line 1806 of yacc.c */ 8268 #line 2290 "parser.yy" 8031 8269 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8032 8270 break; 8033 8271 8034 case 575:8035 8036 /* Line 1806 of yacc.c */ 8037 #line 2 193 "parser.yy"8272 case 606: 8273 8274 /* Line 1806 of yacc.c */ 8275 #line 2293 "parser.yy" 8038 8276 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8039 8277 break; 8040 8278 8041 case 576: 8042 8043 /* Line 1806 of yacc.c */ 8044 #line 2198 "parser.yy" 8279 case 607: 8280 8281 /* Line 1806 of yacc.c */ 8282 #line 2295 "parser.yy" 8283 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8284 break; 8285 8286 case 608: 8287 8288 /* Line 1806 of yacc.c */ 8289 #line 2300 "parser.yy" 8290 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8291 break; 8292 8293 case 609: 8294 8295 /* Line 1806 of yacc.c */ 8296 #line 2302 "parser.yy" 8297 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8298 break; 8299 8300 case 610: 8301 8302 /* Line 1806 of yacc.c */ 8303 #line 2304 "parser.yy" 8304 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8305 break; 8306 8307 case 611: 8308 8309 /* Line 1806 of yacc.c */ 8310 #line 2309 "parser.yy" 8311 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); } 8312 break; 8313 8314 case 612: 8315 8316 /* Line 1806 of yacc.c */ 8317 #line 2311 "parser.yy" 8318 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8319 break; 8320 8321 case 613: 8322 8323 /* Line 1806 of yacc.c */ 8324 #line 2313 "parser.yy" 8325 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8326 break; 8327 8328 case 614: 8329 8330 /* Line 1806 of yacc.c */ 8331 #line 2315 "parser.yy" 8332 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8333 break; 8334 8335 case 615: 8336 8337 /* Line 1806 of yacc.c */ 8338 #line 2320 "parser.yy" 8045 8339 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); } 8046 8340 break; 8047 8341 8048 case 577:8049 8050 /* Line 1806 of yacc.c */ 8051 #line 2 200"parser.yy"8342 case 616: 8343 8344 /* Line 1806 of yacc.c */ 8345 #line 2322 "parser.yy" 8052 8346 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8053 8347 break; 8054 8348 8055 case 578:8056 8057 /* Line 1806 of yacc.c */ 8058 #line 2 202"parser.yy"8349 case 617: 8350 8351 /* Line 1806 of yacc.c */ 8352 #line 2324 "parser.yy" 8059 8353 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8060 8354 break; 8061 8355 8062 case 579: 8063 8064 /* Line 1806 of yacc.c */ 8065 #line 2207 "parser.yy" 8066 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8067 break; 8068 8069 case 580: 8070 8071 /* Line 1806 of yacc.c */ 8072 #line 2209 "parser.yy" 8073 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8074 break; 8075 8076 case 581: 8077 8078 /* Line 1806 of yacc.c */ 8079 #line 2211 "parser.yy" 8080 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8081 break; 8082 8083 case 582: 8084 8085 /* Line 1806 of yacc.c */ 8086 #line 2216 "parser.yy" 8087 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8088 break; 8089 8090 case 583: 8091 8092 /* Line 1806 of yacc.c */ 8093 #line 2218 "parser.yy" 8094 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8095 break; 8096 8097 case 584: 8098 8099 /* Line 1806 of yacc.c */ 8100 #line 2220 "parser.yy" 8101 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8102 break; 8103 8104 case 588: 8105 8106 /* Line 1806 of yacc.c */ 8107 #line 2235 "parser.yy" 8108 { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addIdList( (yyvsp[(3) - (4)].decl) ); } 8109 break; 8110 8111 case 589: 8112 8113 /* Line 1806 of yacc.c */ 8114 #line 2237 "parser.yy" 8115 { (yyval.decl) = (yyvsp[(2) - (6)].decl)->addIdList( (yyvsp[(5) - (6)].decl) ); } 8116 break; 8117 8118 case 590: 8119 8120 /* Line 1806 of yacc.c */ 8121 #line 2239 "parser.yy" 8122 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8123 break; 8124 8125 case 591: 8126 8127 /* Line 1806 of yacc.c */ 8128 #line 2244 "parser.yy" 8129 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8130 break; 8131 8132 case 592: 8133 8134 /* Line 1806 of yacc.c */ 8135 #line 2246 "parser.yy" 8136 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8137 break; 8138 8139 case 593: 8140 8141 /* Line 1806 of yacc.c */ 8142 #line 2248 "parser.yy" 8143 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8144 break; 8145 8146 case 594: 8147 8148 /* Line 1806 of yacc.c */ 8149 #line 2253 "parser.yy" 8150 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8151 break; 8152 8153 case 595: 8154 8155 /* Line 1806 of yacc.c */ 8156 #line 2255 "parser.yy" 8157 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8158 break; 8159 8160 case 596: 8161 8162 /* Line 1806 of yacc.c */ 8163 #line 2257 "parser.yy" 8164 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8165 break; 8166 8167 case 597: 8168 8169 /* Line 1806 of yacc.c */ 8170 #line 2272 "parser.yy" 8356 case 618: 8357 8358 /* Line 1806 of yacc.c */ 8359 #line 2355 "parser.yy" 8171 8360 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8172 8361 break; 8173 8362 8174 case 599:8175 8176 /* Line 1806 of yacc.c */ 8177 #line 2 275"parser.yy"8363 case 620: 8364 8365 /* Line 1806 of yacc.c */ 8366 #line 2358 "parser.yy" 8178 8367 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8179 8368 break; 8180 8369 8181 case 6 00:8182 8183 /* Line 1806 of yacc.c */ 8184 #line 2 277"parser.yy"8370 case 621: 8371 8372 /* Line 1806 of yacc.c */ 8373 #line 2360 "parser.yy" 8185 8374 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8186 8375 break; 8187 8376 8188 case 602:8189 8190 /* Line 1806 of yacc.c */8191 #line 2283 "parser.yy"8192 { (yyval.decl) = (yyvsp[(2) - (3)].decl); }8193 break;8194 8195 case 603:8196 8197 /* Line 1806 of yacc.c */8198 #line 2288 "parser.yy"8199 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }8200 break;8201 8202 case 604:8203 8204 /* Line 1806 of yacc.c */8205 #line 2290 "parser.yy"8206 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }8207 break;8208 8209 case 605:8210 8211 /* Line 1806 of yacc.c */8212 #line 2292 "parser.yy"8213 { (yyval.decl) = (yyvsp[(2) - (3)].decl); }8214 break;8215 8216 case 606:8217 8218 /* Line 1806 of yacc.c */8219 #line 2297 "parser.yy"8220 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }8221 break;8222 8223 case 607:8224 8225 /* Line 1806 of yacc.c */8226 #line 2299 "parser.yy"8227 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }8228 break;8229 8230 case 608:8231 8232 /* Line 1806 of yacc.c */8233 #line 2301 "parser.yy"8234 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }8235 break;8236 8237 case 609:8238 8239 /* Line 1806 of yacc.c */8240 #line 2303 "parser.yy"8241 { (yyval.decl) = (yyvsp[(2) - (3)].decl); }8242 break;8243 8244 case 610:8245 8246 /* Line 1806 of yacc.c */8247 #line 2308 "parser.yy"8248 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }8249 break;8250 8251 case 611:8252 8253 /* Line 1806 of yacc.c */8254 #line 2310 "parser.yy"8255 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }8256 break;8257 8258 case 612:8259 8260 /* Line 1806 of yacc.c */8261 #line 2312 "parser.yy"8262 { (yyval.decl) = (yyvsp[(2) - (3)].decl); }8263 break;8264 8265 case 613:8266 8267 /* Line 1806 of yacc.c */8268 #line 2322 "parser.yy"8269 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }8270 break;8271 8272 case 615:8273 8274 /* Line 1806 of yacc.c */8275 #line 2325 "parser.yy"8276 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }8277 break;8278 8279 case 616:8280 8281 /* Line 1806 of yacc.c */8282 #line 2327 "parser.yy"8283 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }8284 break;8285 8286 case 617:8287 8288 /* Line 1806 of yacc.c */8289 #line 2332 "parser.yy"8290 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }8291 break;8292 8293 case 618:8294 8295 /* Line 1806 of yacc.c */8296 #line 2334 "parser.yy"8297 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }8298 break;8299 8300 case 619:8301 8302 /* Line 1806 of yacc.c */8303 #line 2336 "parser.yy"8304 { (yyval.decl) = (yyvsp[(2) - (3)].decl); }8305 break;8306 8307 case 620:8308 8309 /* Line 1806 of yacc.c */8310 #line 2341 "parser.yy"8311 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }8312 break;8313 8314 case 621:8315 8316 /* Line 1806 of yacc.c */8317 #line 2343 "parser.yy"8318 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }8319 break;8320 8321 8377 case 622: 8322 8378 8323 8379 /* Line 1806 of yacc.c */ 8324 #line 2345 "parser.yy" 8325 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8326 break; 8327 8328 case 623: 8329 8330 /* Line 1806 of yacc.c */ 8331 #line 2347 "parser.yy" 8332 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8333 break; 8334 8335 case 624: 8336 8337 /* Line 1806 of yacc.c */ 8338 #line 2352 "parser.yy" 8339 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); } 8340 break; 8341 8342 case 625: 8343 8344 /* Line 1806 of yacc.c */ 8345 #line 2354 "parser.yy" 8346 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8347 break; 8348 8349 case 626: 8350 8351 /* Line 1806 of yacc.c */ 8352 #line 2356 "parser.yy" 8353 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8354 break; 8355 8356 case 627: 8357 8358 /* Line 1806 of yacc.c */ 8359 #line 2387 "parser.yy" 8360 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8361 break; 8362 8363 case 629: 8364 8365 /* Line 1806 of yacc.c */ 8366 #line 2390 "parser.yy" 8367 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8368 break; 8369 8370 case 630: 8371 8372 /* Line 1806 of yacc.c */ 8373 #line 2392 "parser.yy" 8374 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8375 break; 8376 8377 case 631: 8378 8379 /* Line 1806 of yacc.c */ 8380 #line 2397 "parser.yy" 8380 #line 2365 "parser.yy" 8381 8381 { 8382 8382 typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) ); … … 8385 8385 break; 8386 8386 8387 case 6 32:8388 8389 /* Line 1806 of yacc.c */ 8390 #line 2 402"parser.yy"8387 case 623: 8388 8389 /* Line 1806 of yacc.c */ 8390 #line 2370 "parser.yy" 8391 8391 { 8392 8392 typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) ); … … 8395 8395 break; 8396 8396 8397 case 624: 8398 8399 /* Line 1806 of yacc.c */ 8400 #line 2378 "parser.yy" 8401 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8402 break; 8403 8404 case 625: 8405 8406 /* Line 1806 of yacc.c */ 8407 #line 2380 "parser.yy" 8408 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8409 break; 8410 8411 case 626: 8412 8413 /* Line 1806 of yacc.c */ 8414 #line 2382 "parser.yy" 8415 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8416 break; 8417 8418 case 627: 8419 8420 /* Line 1806 of yacc.c */ 8421 #line 2387 "parser.yy" 8422 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); } 8423 break; 8424 8425 case 628: 8426 8427 /* Line 1806 of yacc.c */ 8428 #line 2389 "parser.yy" 8429 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8430 break; 8431 8432 case 629: 8433 8434 /* Line 1806 of yacc.c */ 8435 #line 2394 "parser.yy" 8436 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); } 8437 break; 8438 8439 case 630: 8440 8441 /* Line 1806 of yacc.c */ 8442 #line 2396 "parser.yy" 8443 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8444 break; 8445 8446 case 632: 8447 8448 /* Line 1806 of yacc.c */ 8449 #line 2411 "parser.yy" 8450 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8451 break; 8452 8397 8453 case 633: 8398 8454 8399 8455 /* Line 1806 of yacc.c */ 8400 #line 2410 "parser.yy" 8456 #line 2413 "parser.yy" 8457 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8458 break; 8459 8460 case 634: 8461 8462 /* Line 1806 of yacc.c */ 8463 #line 2418 "parser.yy" 8464 { (yyval.decl) = DeclarationNode::newPointer( 0 ); } 8465 break; 8466 8467 case 635: 8468 8469 /* Line 1806 of yacc.c */ 8470 #line 2420 "parser.yy" 8471 { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); } 8472 break; 8473 8474 case 636: 8475 8476 /* Line 1806 of yacc.c */ 8477 #line 2422 "parser.yy" 8401 8478 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8402 8479 break; 8403 8480 8404 case 63 4:8405 8406 /* Line 1806 of yacc.c */ 8407 #line 24 12"parser.yy"8481 case 637: 8482 8483 /* Line 1806 of yacc.c */ 8484 #line 2424 "parser.yy" 8408 8485 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8409 8486 break; 8410 8487 8411 case 63 5:8412 8413 /* Line 1806 of yacc.c */ 8414 #line 24 14"parser.yy"8488 case 638: 8489 8490 /* Line 1806 of yacc.c */ 8491 #line 2426 "parser.yy" 8415 8492 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8416 8493 break; 8417 8494 8418 case 636: 8419 8420 /* Line 1806 of yacc.c */ 8421 #line 2419 "parser.yy" 8495 case 640: 8496 8497 /* Line 1806 of yacc.c */ 8498 #line 2432 "parser.yy" 8499 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8500 break; 8501 8502 case 641: 8503 8504 /* Line 1806 of yacc.c */ 8505 #line 2434 "parser.yy" 8506 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8507 break; 8508 8509 case 642: 8510 8511 /* Line 1806 of yacc.c */ 8512 #line 2436 "parser.yy" 8513 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8514 break; 8515 8516 case 643: 8517 8518 /* Line 1806 of yacc.c */ 8519 #line 2441 "parser.yy" 8520 { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); } 8521 break; 8522 8523 case 644: 8524 8525 /* Line 1806 of yacc.c */ 8526 #line 2443 "parser.yy" 8527 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8528 break; 8529 8530 case 645: 8531 8532 /* Line 1806 of yacc.c */ 8533 #line 2445 "parser.yy" 8534 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8535 break; 8536 8537 case 646: 8538 8539 /* Line 1806 of yacc.c */ 8540 #line 2451 "parser.yy" 8541 { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); } 8542 break; 8543 8544 case 647: 8545 8546 /* Line 1806 of yacc.c */ 8547 #line 2453 "parser.yy" 8548 { (yyval.decl) = DeclarationNode::newArray( 0, 0, false )->addArray( (yyvsp[(3) - (3)].decl) ); } 8549 break; 8550 8551 case 649: 8552 8553 /* Line 1806 of yacc.c */ 8554 #line 2459 "parser.yy" 8555 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(3) - (5)].en), 0, false ); } 8556 break; 8557 8558 case 650: 8559 8560 /* Line 1806 of yacc.c */ 8561 #line 2461 "parser.yy" 8562 { (yyval.decl) = DeclarationNode::newVarArray( 0 ); } 8563 break; 8564 8565 case 651: 8566 8567 /* Line 1806 of yacc.c */ 8568 #line 2463 "parser.yy" 8569 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newArray( (yyvsp[(4) - (6)].en), 0, false ) ); } 8570 break; 8571 8572 case 652: 8573 8574 /* Line 1806 of yacc.c */ 8575 #line 2465 "parser.yy" 8576 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newVarArray( 0 ) ); } 8577 break; 8578 8579 case 654: 8580 8581 /* Line 1806 of yacc.c */ 8582 #line 2480 "parser.yy" 8583 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8584 break; 8585 8586 case 655: 8587 8588 /* Line 1806 of yacc.c */ 8589 #line 2482 "parser.yy" 8590 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8591 break; 8592 8593 case 656: 8594 8595 /* Line 1806 of yacc.c */ 8596 #line 2487 "parser.yy" 8597 { (yyval.decl) = DeclarationNode::newPointer( 0 ); } 8598 break; 8599 8600 case 657: 8601 8602 /* Line 1806 of yacc.c */ 8603 #line 2489 "parser.yy" 8604 { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); } 8605 break; 8606 8607 case 658: 8608 8609 /* Line 1806 of yacc.c */ 8610 #line 2491 "parser.yy" 8611 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8612 break; 8613 8614 case 659: 8615 8616 /* Line 1806 of yacc.c */ 8617 #line 2493 "parser.yy" 8618 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8619 break; 8620 8621 case 660: 8622 8623 /* Line 1806 of yacc.c */ 8624 #line 2495 "parser.yy" 8625 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8626 break; 8627 8628 case 662: 8629 8630 /* Line 1806 of yacc.c */ 8631 #line 2501 "parser.yy" 8632 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8633 break; 8634 8635 case 663: 8636 8637 /* Line 1806 of yacc.c */ 8638 #line 2503 "parser.yy" 8639 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8640 break; 8641 8642 case 664: 8643 8644 /* Line 1806 of yacc.c */ 8645 #line 2505 "parser.yy" 8646 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8647 break; 8648 8649 case 665: 8650 8651 /* Line 1806 of yacc.c */ 8652 #line 2510 "parser.yy" 8653 { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); } 8654 break; 8655 8656 case 666: 8657 8658 /* Line 1806 of yacc.c */ 8659 #line 2512 "parser.yy" 8660 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8661 break; 8662 8663 case 667: 8664 8665 /* Line 1806 of yacc.c */ 8666 #line 2514 "parser.yy" 8667 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8668 break; 8669 8670 case 669: 8671 8672 /* Line 1806 of yacc.c */ 8673 #line 2521 "parser.yy" 8422 8674 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); } 8423 8675 break; 8424 8676 8425 case 637: 8426 8427 /* Line 1806 of yacc.c */ 8428 #line 2421 "parser.yy" 8677 case 671: 8678 8679 /* Line 1806 of yacc.c */ 8680 #line 2532 "parser.yy" 8681 { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); } 8682 break; 8683 8684 case 672: 8685 8686 /* Line 1806 of yacc.c */ 8687 #line 2535 "parser.yy" 8688 { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); } 8689 break; 8690 8691 case 673: 8692 8693 /* Line 1806 of yacc.c */ 8694 #line 2537 "parser.yy" 8695 { (yyval.decl) = DeclarationNode::newArray( 0, (yyvsp[(3) - (5)].decl), false ); } 8696 break; 8697 8698 case 674: 8699 8700 /* Line 1806 of yacc.c */ 8701 #line 2540 "parser.yy" 8702 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); } 8703 break; 8704 8705 case 675: 8706 8707 /* Line 1806 of yacc.c */ 8708 #line 2542 "parser.yy" 8709 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl), true ); } 8710 break; 8711 8712 case 676: 8713 8714 /* Line 1806 of yacc.c */ 8715 #line 2544 "parser.yy" 8716 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(3) - (7)].decl), true ); } 8717 break; 8718 8719 case 678: 8720 8721 /* Line 1806 of yacc.c */ 8722 #line 2558 "parser.yy" 8723 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8724 break; 8725 8726 case 679: 8727 8728 /* Line 1806 of yacc.c */ 8729 #line 2560 "parser.yy" 8730 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8731 break; 8732 8733 case 680: 8734 8735 /* Line 1806 of yacc.c */ 8736 #line 2565 "parser.yy" 8737 { (yyval.decl) = DeclarationNode::newPointer( 0 ); } 8738 break; 8739 8740 case 681: 8741 8742 /* Line 1806 of yacc.c */ 8743 #line 2567 "parser.yy" 8744 { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); } 8745 break; 8746 8747 case 682: 8748 8749 /* Line 1806 of yacc.c */ 8750 #line 2569 "parser.yy" 8751 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8752 break; 8753 8754 case 683: 8755 8756 /* Line 1806 of yacc.c */ 8757 #line 2571 "parser.yy" 8758 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8759 break; 8760 8761 case 684: 8762 8763 /* Line 1806 of yacc.c */ 8764 #line 2573 "parser.yy" 8765 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8766 break; 8767 8768 case 686: 8769 8770 /* Line 1806 of yacc.c */ 8771 #line 2579 "parser.yy" 8429 8772 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8430 8773 break; 8431 8774 8432 case 638: 8433 8434 /* Line 1806 of yacc.c */ 8435 #line 2426 "parser.yy" 8436 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); } 8437 break; 8438 8439 case 639: 8440 8441 /* Line 1806 of yacc.c */ 8442 #line 2428 "parser.yy" 8775 case 687: 8776 8777 /* Line 1806 of yacc.c */ 8778 #line 2581 "parser.yy" 8779 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8780 break; 8781 8782 case 688: 8783 8784 /* Line 1806 of yacc.c */ 8785 #line 2583 "parser.yy" 8786 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8787 break; 8788 8789 case 689: 8790 8791 /* Line 1806 of yacc.c */ 8792 #line 2588 "parser.yy" 8443 8793 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8444 8794 break; 8445 8795 8446 case 641: 8447 8448 /* Line 1806 of yacc.c */ 8449 #line 2443 "parser.yy" 8450 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8451 break; 8452 8453 case 642: 8454 8455 /* Line 1806 of yacc.c */ 8456 #line 2445 "parser.yy" 8457 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8458 break; 8459 8460 case 643: 8461 8462 /* Line 1806 of yacc.c */ 8463 #line 2450 "parser.yy" 8464 { (yyval.decl) = DeclarationNode::newPointer( 0 ); } 8465 break; 8466 8467 case 644: 8468 8469 /* Line 1806 of yacc.c */ 8470 #line 2452 "parser.yy" 8471 { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); } 8472 break; 8473 8474 case 645: 8475 8476 /* Line 1806 of yacc.c */ 8477 #line 2454 "parser.yy" 8478 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8479 break; 8480 8481 case 646: 8482 8483 /* Line 1806 of yacc.c */ 8484 #line 2456 "parser.yy" 8485 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8486 break; 8487 8488 case 647: 8489 8490 /* Line 1806 of yacc.c */ 8491 #line 2458 "parser.yy" 8796 case 690: 8797 8798 /* Line 1806 of yacc.c */ 8799 #line 2590 "parser.yy" 8492 8800 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8493 8801 break; 8494 8802 8495 case 649: 8496 8497 /* Line 1806 of yacc.c */ 8498 #line 2464 "parser.yy" 8499 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8500 break; 8501 8502 case 650: 8503 8504 /* Line 1806 of yacc.c */ 8505 #line 2466 "parser.yy" 8506 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8507 break; 8508 8509 case 651: 8510 8511 /* Line 1806 of yacc.c */ 8512 #line 2468 "parser.yy" 8513 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8514 break; 8515 8516 case 652: 8517 8518 /* Line 1806 of yacc.c */ 8519 #line 2473 "parser.yy" 8520 { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); } 8521 break; 8522 8523 case 653: 8524 8525 /* Line 1806 of yacc.c */ 8526 #line 2475 "parser.yy" 8527 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8528 break; 8529 8530 case 654: 8531 8532 /* Line 1806 of yacc.c */ 8533 #line 2477 "parser.yy" 8534 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8535 break; 8536 8537 case 655: 8538 8539 /* Line 1806 of yacc.c */ 8540 #line 2483 "parser.yy" 8541 { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); } 8542 break; 8543 8544 case 656: 8545 8546 /* Line 1806 of yacc.c */ 8547 #line 2485 "parser.yy" 8548 { (yyval.decl) = DeclarationNode::newArray( 0, 0, false )->addArray( (yyvsp[(3) - (3)].decl) ); } 8549 break; 8550 8551 case 658: 8552 8553 /* Line 1806 of yacc.c */ 8554 #line 2491 "parser.yy" 8555 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(3) - (5)].en), 0, false ); } 8556 break; 8557 8558 case 659: 8559 8560 /* Line 1806 of yacc.c */ 8561 #line 2493 "parser.yy" 8562 { (yyval.decl) = DeclarationNode::newVarArray( 0 ); } 8563 break; 8564 8565 case 660: 8566 8567 /* Line 1806 of yacc.c */ 8568 #line 2495 "parser.yy" 8569 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newArray( (yyvsp[(4) - (6)].en), 0, false ) ); } 8570 break; 8571 8572 case 661: 8573 8574 /* Line 1806 of yacc.c */ 8575 #line 2497 "parser.yy" 8576 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newVarArray( 0 ) ); } 8577 break; 8578 8579 case 663: 8580 8581 /* Line 1806 of yacc.c */ 8582 #line 2512 "parser.yy" 8583 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8584 break; 8585 8586 case 664: 8587 8588 /* Line 1806 of yacc.c */ 8589 #line 2514 "parser.yy" 8590 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8591 break; 8592 8593 case 665: 8594 8595 /* Line 1806 of yacc.c */ 8596 #line 2519 "parser.yy" 8597 { (yyval.decl) = DeclarationNode::newPointer( 0 ); } 8598 break; 8599 8600 case 666: 8601 8602 /* Line 1806 of yacc.c */ 8603 #line 2521 "parser.yy" 8604 { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); } 8605 break; 8606 8607 case 667: 8608 8609 /* Line 1806 of yacc.c */ 8610 #line 2523 "parser.yy" 8611 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8612 break; 8613 8614 case 668: 8615 8616 /* Line 1806 of yacc.c */ 8617 #line 2525 "parser.yy" 8618 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8619 break; 8620 8621 case 669: 8622 8623 /* Line 1806 of yacc.c */ 8624 #line 2527 "parser.yy" 8625 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8626 break; 8627 8628 case 671: 8629 8630 /* Line 1806 of yacc.c */ 8631 #line 2533 "parser.yy" 8632 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8633 break; 8634 8635 case 672: 8636 8637 /* Line 1806 of yacc.c */ 8638 #line 2535 "parser.yy" 8639 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8640 break; 8641 8642 case 673: 8643 8644 /* Line 1806 of yacc.c */ 8645 #line 2537 "parser.yy" 8646 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8647 break; 8648 8649 case 674: 8650 8651 /* Line 1806 of yacc.c */ 8652 #line 2542 "parser.yy" 8653 { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); } 8654 break; 8655 8656 case 675: 8657 8658 /* Line 1806 of yacc.c */ 8659 #line 2544 "parser.yy" 8660 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8661 break; 8662 8663 case 676: 8664 8665 /* Line 1806 of yacc.c */ 8666 #line 2546 "parser.yy" 8667 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8668 break; 8669 8670 case 678: 8671 8672 /* Line 1806 of yacc.c */ 8673 #line 2553 "parser.yy" 8674 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); } 8675 break; 8676 8677 case 680: 8678 8679 /* Line 1806 of yacc.c */ 8680 #line 2564 "parser.yy" 8681 { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); } 8682 break; 8683 8684 case 681: 8685 8686 /* Line 1806 of yacc.c */ 8687 #line 2567 "parser.yy" 8803 case 693: 8804 8805 /* Line 1806 of yacc.c */ 8806 #line 2600 "parser.yy" 8807 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 8808 break; 8809 8810 case 696: 8811 8812 /* Line 1806 of yacc.c */ 8813 #line 2610 "parser.yy" 8814 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); } 8815 break; 8816 8817 case 697: 8818 8819 /* Line 1806 of yacc.c */ 8820 #line 2612 "parser.yy" 8821 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); } 8822 break; 8823 8824 case 698: 8825 8826 /* Line 1806 of yacc.c */ 8827 #line 2614 "parser.yy" 8828 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); } 8829 break; 8830 8831 case 699: 8832 8833 /* Line 1806 of yacc.c */ 8834 #line 2616 "parser.yy" 8835 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); } 8836 break; 8837 8838 case 700: 8839 8840 /* Line 1806 of yacc.c */ 8841 #line 2618 "parser.yy" 8842 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); } 8843 break; 8844 8845 case 701: 8846 8847 /* Line 1806 of yacc.c */ 8848 #line 2620 "parser.yy" 8849 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); } 8850 break; 8851 8852 case 702: 8853 8854 /* Line 1806 of yacc.c */ 8855 #line 2627 "parser.yy" 8856 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 8857 break; 8858 8859 case 703: 8860 8861 /* Line 1806 of yacc.c */ 8862 #line 2629 "parser.yy" 8863 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); } 8864 break; 8865 8866 case 704: 8867 8868 /* Line 1806 of yacc.c */ 8869 #line 2631 "parser.yy" 8870 { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 8871 break; 8872 8873 case 705: 8874 8875 /* Line 1806 of yacc.c */ 8876 #line 2633 "parser.yy" 8877 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); } 8878 break; 8879 8880 case 706: 8881 8882 /* Line 1806 of yacc.c */ 8883 #line 2635 "parser.yy" 8884 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); } 8885 break; 8886 8887 case 707: 8888 8889 /* Line 1806 of yacc.c */ 8890 #line 2637 "parser.yy" 8891 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 8892 break; 8893 8894 case 708: 8895 8896 /* Line 1806 of yacc.c */ 8897 #line 2639 "parser.yy" 8898 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); } 8899 break; 8900 8901 case 709: 8902 8903 /* Line 1806 of yacc.c */ 8904 #line 2641 "parser.yy" 8905 { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 8906 break; 8907 8908 case 710: 8909 8910 /* Line 1806 of yacc.c */ 8911 #line 2643 "parser.yy" 8912 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); } 8913 break; 8914 8915 case 711: 8916 8917 /* Line 1806 of yacc.c */ 8918 #line 2645 "parser.yy" 8919 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); } 8920 break; 8921 8922 case 712: 8923 8924 /* Line 1806 of yacc.c */ 8925 #line 2650 "parser.yy" 8688 8926 { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); } 8689 8927 break; 8690 8928 8691 case 682: 8692 8693 /* Line 1806 of yacc.c */ 8694 #line 2569 "parser.yy" 8695 { (yyval.decl) = DeclarationNode::newArray( 0, (yyvsp[(3) - (5)].decl), false ); } 8696 break; 8697 8698 case 683: 8699 8700 /* Line 1806 of yacc.c */ 8701 #line 2572 "parser.yy" 8929 case 713: 8930 8931 /* Line 1806 of yacc.c */ 8932 #line 2652 "parser.yy" 8702 8933 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); } 8703 8934 break; 8704 8935 8705 case 684: 8706 8707 /* Line 1806 of yacc.c */ 8708 #line 2574 "parser.yy" 8709 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl), true ); } 8710 break; 8711 8712 case 685: 8713 8714 /* Line 1806 of yacc.c */ 8715 #line 2576 "parser.yy" 8716 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(3) - (7)].decl), true ); } 8717 break; 8718 8719 case 687: 8720 8721 /* Line 1806 of yacc.c */ 8722 #line 2590 "parser.yy" 8723 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8724 break; 8725 8726 case 688: 8727 8728 /* Line 1806 of yacc.c */ 8729 #line 2592 "parser.yy" 8730 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8731 break; 8732 8733 case 689: 8734 8735 /* Line 1806 of yacc.c */ 8736 #line 2597 "parser.yy" 8737 { (yyval.decl) = DeclarationNode::newPointer( 0 ); } 8738 break; 8739 8740 case 690: 8741 8742 /* Line 1806 of yacc.c */ 8743 #line 2599 "parser.yy" 8744 { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); } 8745 break; 8746 8747 case 691: 8748 8749 /* Line 1806 of yacc.c */ 8750 #line 2601 "parser.yy" 8751 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8752 break; 8753 8754 case 692: 8755 8756 /* Line 1806 of yacc.c */ 8757 #line 2603 "parser.yy" 8758 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8759 break; 8760 8761 case 693: 8762 8763 /* Line 1806 of yacc.c */ 8764 #line 2605 "parser.yy" 8765 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8766 break; 8767 8768 case 695: 8769 8770 /* Line 1806 of yacc.c */ 8771 #line 2611 "parser.yy" 8772 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8773 break; 8774 8775 case 696: 8776 8777 /* Line 1806 of yacc.c */ 8778 #line 2613 "parser.yy" 8779 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8780 break; 8781 8782 case 697: 8783 8784 /* Line 1806 of yacc.c */ 8785 #line 2615 "parser.yy" 8786 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8787 break; 8788 8789 case 698: 8790 8791 /* Line 1806 of yacc.c */ 8792 #line 2620 "parser.yy" 8793 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8794 break; 8795 8796 case 699: 8797 8798 /* Line 1806 of yacc.c */ 8799 #line 2622 "parser.yy" 8800 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8801 break; 8802 8803 case 702: 8804 8805 /* Line 1806 of yacc.c */ 8806 #line 2632 "parser.yy" 8936 case 714: 8937 8938 /* Line 1806 of yacc.c */ 8939 #line 2657 "parser.yy" 8940 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), true ); } 8941 break; 8942 8943 case 715: 8944 8945 /* Line 1806 of yacc.c */ 8946 #line 2659 "parser.yy" 8947 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl)->addQualifiers( (yyvsp[(3) - (7)].decl) ), true ); } 8948 break; 8949 8950 case 717: 8951 8952 /* Line 1806 of yacc.c */ 8953 #line 2686 "parser.yy" 8807 8954 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 8808 8955 break; 8809 8956 8810 case 7 05:8811 8812 /* Line 1806 of yacc.c */ 8813 #line 26 42"parser.yy"8957 case 721: 8958 8959 /* Line 1806 of yacc.c */ 8960 #line 2697 "parser.yy" 8814 8961 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); } 8815 8962 break; 8816 8963 8817 case 7 06:8818 8819 /* Line 1806 of yacc.c */ 8820 #line 26 44"parser.yy"8964 case 722: 8965 8966 /* Line 1806 of yacc.c */ 8967 #line 2699 "parser.yy" 8821 8968 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); } 8822 8969 break; 8823 8970 8824 case 7 07:8825 8826 /* Line 1806 of yacc.c */ 8827 #line 2 646"parser.yy"8971 case 723: 8972 8973 /* Line 1806 of yacc.c */ 8974 #line 2701 "parser.yy" 8828 8975 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); } 8829 8976 break; 8830 8977 8831 case 7 08:8832 8833 /* Line 1806 of yacc.c */ 8834 #line 2 648"parser.yy"8978 case 724: 8979 8980 /* Line 1806 of yacc.c */ 8981 #line 2703 "parser.yy" 8835 8982 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); } 8836 8983 break; 8837 8984 8838 case 7 09:8839 8840 /* Line 1806 of yacc.c */ 8841 #line 2 650"parser.yy"8985 case 725: 8986 8987 /* Line 1806 of yacc.c */ 8988 #line 2705 "parser.yy" 8842 8989 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); } 8843 8990 break; 8844 8991 8845 case 7 10:8846 8847 /* Line 1806 of yacc.c */ 8848 #line 2 652"parser.yy"8992 case 726: 8993 8994 /* Line 1806 of yacc.c */ 8995 #line 2707 "parser.yy" 8849 8996 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); } 8850 8997 break; 8851 8998 8852 case 7 11:8853 8854 /* Line 1806 of yacc.c */ 8855 #line 2 659"parser.yy"8999 case 727: 9000 9001 /* Line 1806 of yacc.c */ 9002 #line 2714 "parser.yy" 8856 9003 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 8857 9004 break; 8858 9005 8859 case 712: 8860 8861 /* Line 1806 of yacc.c */ 8862 #line 2661 "parser.yy" 9006 case 728: 9007 9008 /* Line 1806 of yacc.c */ 9009 #line 2716 "parser.yy" 9010 { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 9011 break; 9012 9013 case 729: 9014 9015 /* Line 1806 of yacc.c */ 9016 #line 2718 "parser.yy" 8863 9017 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); } 8864 9018 break; 8865 9019 8866 case 713: 8867 8868 /* Line 1806 of yacc.c */ 8869 #line 2663 "parser.yy" 9020 case 730: 9021 9022 /* Line 1806 of yacc.c */ 9023 #line 2720 "parser.yy" 9024 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 9025 break; 9026 9027 case 731: 9028 9029 /* Line 1806 of yacc.c */ 9030 #line 2722 "parser.yy" 8870 9031 { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 8871 9032 break; 8872 9033 8873 case 714: 8874 8875 /* Line 1806 of yacc.c */ 8876 #line 2665 "parser.yy" 8877 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); } 8878 break; 8879 8880 case 715: 8881 8882 /* Line 1806 of yacc.c */ 8883 #line 2667 "parser.yy" 9034 case 732: 9035 9036 /* Line 1806 of yacc.c */ 9037 #line 2724 "parser.yy" 8884 9038 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); } 8885 9039 break; 8886 9040 8887 case 716: 8888 8889 /* Line 1806 of yacc.c */ 8890 #line 2669 "parser.yy" 8891 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 8892 break; 8893 8894 case 717: 8895 8896 /* Line 1806 of yacc.c */ 8897 #line 2671 "parser.yy" 8898 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); } 8899 break; 8900 8901 case 718: 8902 8903 /* Line 1806 of yacc.c */ 8904 #line 2673 "parser.yy" 8905 { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 8906 break; 8907 8908 case 719: 8909 8910 /* Line 1806 of yacc.c */ 8911 #line 2675 "parser.yy" 8912 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); } 8913 break; 8914 8915 case 720: 8916 8917 /* Line 1806 of yacc.c */ 8918 #line 2677 "parser.yy" 8919 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); } 8920 break; 8921 8922 case 721: 8923 8924 /* Line 1806 of yacc.c */ 8925 #line 2682 "parser.yy" 8926 { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); } 8927 break; 8928 8929 case 722: 8930 8931 /* Line 1806 of yacc.c */ 8932 #line 2684 "parser.yy" 8933 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); } 8934 break; 8935 8936 case 723: 8937 8938 /* Line 1806 of yacc.c */ 8939 #line 2689 "parser.yy" 8940 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), true ); } 8941 break; 8942 8943 case 724: 8944 8945 /* Line 1806 of yacc.c */ 8946 #line 2691 "parser.yy" 8947 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl)->addQualifiers( (yyvsp[(3) - (7)].decl) ), true ); } 8948 break; 8949 8950 case 726: 8951 8952 /* Line 1806 of yacc.c */ 8953 #line 2718 "parser.yy" 8954 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 8955 break; 8956 8957 case 730: 9041 case 733: 8958 9042 8959 9043 /* Line 1806 of yacc.c */ 8960 9044 #line 2729 "parser.yy" 8961 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); } 8962 break; 8963 8964 case 731: 8965 8966 /* Line 1806 of yacc.c */ 8967 #line 2731 "parser.yy" 8968 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); } 8969 break; 8970 8971 case 732: 8972 8973 /* Line 1806 of yacc.c */ 8974 #line 2733 "parser.yy" 8975 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); } 8976 break; 8977 8978 case 733: 8979 8980 /* Line 1806 of yacc.c */ 8981 #line 2735 "parser.yy" 8982 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); } 9045 { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); } 8983 9046 break; 8984 9047 … … 8986 9049 8987 9050 /* Line 1806 of yacc.c */ 8988 #line 273 7"parser.yy"8989 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 )); }9051 #line 2734 "parser.yy" 9052 { (yyval.decl) = DeclarationNode::newFunction( 0, DeclarationNode::newTuple( 0 ), (yyvsp[(4) - (5)].decl), 0 ); } 8990 9053 break; 8991 9054 … … 8993 9056 8994 9057 /* Line 1806 of yacc.c */ 8995 #line 273 9"parser.yy"8996 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) )); }9058 #line 2736 "parser.yy" 9059 { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); } 8997 9060 break; 8998 9061 … … 9000 9063 9001 9064 /* Line 1806 of yacc.c */ 9002 #line 2746 "parser.yy" 9003 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 9004 break; 9005 9006 case 737: 9007 9008 /* Line 1806 of yacc.c */ 9009 #line 2748 "parser.yy" 9010 { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 9011 break; 9012 9013 case 738: 9014 9015 /* Line 1806 of yacc.c */ 9016 #line 2750 "parser.yy" 9017 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); } 9065 #line 2738 "parser.yy" 9066 { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); } 9018 9067 break; 9019 9068 … … 9021 9070 9022 9071 /* Line 1806 of yacc.c */ 9023 #line 27 52 "parser.yy"9024 { (yyval. decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }9072 #line 2762 "parser.yy" 9073 { (yyval.en) = 0; } 9025 9074 break; 9026 9075 … … 9028 9077 9029 9078 /* Line 1806 of yacc.c */ 9030 #line 2754 "parser.yy" 9031 { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 9032 break; 9033 9034 case 741: 9035 9036 /* Line 1806 of yacc.c */ 9037 #line 2756 "parser.yy" 9038 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); } 9039 break; 9040 9041 case 742: 9042 9043 /* Line 1806 of yacc.c */ 9044 #line 2761 "parser.yy" 9045 { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); } 9046 break; 9047 9048 case 743: 9049 9050 /* Line 1806 of yacc.c */ 9051 #line 2766 "parser.yy" 9052 { (yyval.decl) = DeclarationNode::newFunction( 0, DeclarationNode::newTuple( 0 ), (yyvsp[(4) - (5)].decl), 0 ); } 9053 break; 9054 9055 case 744: 9056 9057 /* Line 1806 of yacc.c */ 9058 #line 2768 "parser.yy" 9059 { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); } 9060 break; 9061 9062 case 745: 9063 9064 /* Line 1806 of yacc.c */ 9065 #line 2770 "parser.yy" 9066 { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); } 9067 break; 9068 9069 case 748: 9070 9071 /* Line 1806 of yacc.c */ 9072 #line 2794 "parser.yy" 9073 { (yyval.en) = 0; } 9074 break; 9075 9076 case 749: 9077 9078 /* Line 1806 of yacc.c */ 9079 #line 2796 "parser.yy" 9079 #line 2764 "parser.yy" 9080 9080 { (yyval.en) = (yyvsp[(2) - (2)].en); } 9081 9081 break; … … 9315 9315 9316 9316 /* Line 2067 of yacc.c */ 9317 #line 27 99"parser.yy"9317 #line 2767 "parser.yy" 9318 9318 9319 9319 // ----end of grammar---- -
src/Parser/parser.h
rd2ded3e7 r698664b3 87 87 RETURN = 305, 88 88 CHOOSE = 306, 89 DISABLE = 307, 90 ENABLE = 308, 91 FALLTHRU = 309, 92 TRY = 310, 93 CATCH = 311, 94 CATCHRESUME = 312, 95 FINALLY = 313, 96 THROW = 314, 97 THROWRESUME = 315, 98 AT = 316, 99 ASM = 317, 100 ALIGNAS = 318, 101 ALIGNOF = 319, 102 ATOMIC = 320, 103 GENERIC = 321, 104 NORETURN = 322, 105 STATICASSERT = 323, 106 THREADLOCAL = 324, 107 IDENTIFIER = 325, 108 QUOTED_IDENTIFIER = 326, 109 TYPEDEFname = 327, 110 TYPEGENname = 328, 111 ATTR_IDENTIFIER = 329, 112 ATTR_TYPEDEFname = 330, 113 ATTR_TYPEGENname = 331, 114 INTEGERconstant = 332, 115 FLOATINGconstant = 333, 116 CHARACTERconstant = 334, 117 STRINGliteral = 335, 118 ZERO = 336, 119 ONE = 337, 120 ARROW = 338, 121 ICR = 339, 122 DECR = 340, 123 LS = 341, 124 RS = 342, 125 LE = 343, 126 GE = 344, 127 EQ = 345, 128 NE = 346, 129 ANDAND = 347, 130 OROR = 348, 131 ELLIPSIS = 349, 132 MULTassign = 350, 133 DIVassign = 351, 134 MODassign = 352, 135 PLUSassign = 353, 136 MINUSassign = 354, 137 LSassign = 355, 138 RSassign = 356, 139 ANDassign = 357, 140 ERassign = 358, 141 ORassign = 359, 142 ATassign = 360, 143 THEN = 361 89 FALLTHRU = 307, 90 TRY = 308, 91 CATCH = 309, 92 FINALLY = 310, 93 THROW = 311, 94 ASM = 312, 95 ALIGNAS = 313, 96 ALIGNOF = 314, 97 ATOMIC = 315, 98 GENERIC = 316, 99 NORETURN = 317, 100 STATICASSERT = 318, 101 THREADLOCAL = 319, 102 IDENTIFIER = 320, 103 QUOTED_IDENTIFIER = 321, 104 TYPEDEFname = 322, 105 TYPEGENname = 323, 106 ATTR_IDENTIFIER = 324, 107 ATTR_TYPEDEFname = 325, 108 ATTR_TYPEGENname = 326, 109 INTEGERconstant = 327, 110 FLOATINGconstant = 328, 111 CHARACTERconstant = 329, 112 STRINGliteral = 330, 113 ZERO = 331, 114 ONE = 332, 115 ARROW = 333, 116 ICR = 334, 117 DECR = 335, 118 LS = 336, 119 RS = 337, 120 LE = 338, 121 GE = 339, 122 EQ = 340, 123 NE = 341, 124 ANDAND = 342, 125 OROR = 343, 126 ELLIPSIS = 344, 127 MULTassign = 345, 128 DIVassign = 346, 129 MODassign = 347, 130 PLUSassign = 348, 131 MINUSassign = 349, 132 LSassign = 350, 133 RSassign = 351, 134 ANDassign = 352, 135 ERassign = 353, 136 ORassign = 354, 137 THEN = 355 144 138 }; 145 139 #endif … … 194 188 #define RETURN 305 195 189 #define CHOOSE 306 196 #define DISABLE 307 197 #define ENABLE 308 198 #define FALLTHRU 309 199 #define TRY 310 200 #define CATCH 311 201 #define CATCHRESUME 312 202 #define FINALLY 313 203 #define THROW 314 204 #define THROWRESUME 315 205 #define AT 316 206 #define ASM 317 207 #define ALIGNAS 318 208 #define ALIGNOF 319 209 #define ATOMIC 320 210 #define GENERIC 321 211 #define NORETURN 322 212 #define STATICASSERT 323 213 #define THREADLOCAL 324 214 #define IDENTIFIER 325 215 #define QUOTED_IDENTIFIER 326 216 #define TYPEDEFname 327 217 #define TYPEGENname 328 218 #define ATTR_IDENTIFIER 329 219 #define ATTR_TYPEDEFname 330 220 #define ATTR_TYPEGENname 331 221 #define INTEGERconstant 332 222 #define FLOATINGconstant 333 223 #define CHARACTERconstant 334 224 #define STRINGliteral 335 225 #define ZERO 336 226 #define ONE 337 227 #define ARROW 338 228 #define ICR 339 229 #define DECR 340 230 #define LS 341 231 #define RS 342 232 #define LE 343 233 #define GE 344 234 #define EQ 345 235 #define NE 346 236 #define ANDAND 347 237 #define OROR 348 238 #define ELLIPSIS 349 239 #define MULTassign 350 240 #define DIVassign 351 241 #define MODassign 352 242 #define PLUSassign 353 243 #define MINUSassign 354 244 #define LSassign 355 245 #define RSassign 356 246 #define ANDassign 357 247 #define ERassign 358 248 #define ORassign 359 249 #define ATassign 360 250 #define THEN 361 190 #define FALLTHRU 307 191 #define TRY 308 192 #define CATCH 309 193 #define FINALLY 310 194 #define THROW 311 195 #define ASM 312 196 #define ALIGNAS 313 197 #define ALIGNOF 314 198 #define ATOMIC 315 199 #define GENERIC 316 200 #define NORETURN 317 201 #define STATICASSERT 318 202 #define THREADLOCAL 319 203 #define IDENTIFIER 320 204 #define QUOTED_IDENTIFIER 321 205 #define TYPEDEFname 322 206 #define TYPEGENname 323 207 #define ATTR_IDENTIFIER 324 208 #define ATTR_TYPEDEFname 325 209 #define ATTR_TYPEGENname 326 210 #define INTEGERconstant 327 211 #define FLOATINGconstant 328 212 #define CHARACTERconstant 329 213 #define STRINGliteral 330 214 #define ZERO 331 215 #define ONE 332 216 #define ARROW 333 217 #define ICR 334 218 #define DECR 335 219 #define LS 336 220 #define RS 337 221 #define LE 338 222 #define GE 339 223 #define EQ 340 224 #define NE 341 225 #define ANDAND 342 226 #define OROR 343 227 #define ELLIPSIS 344 228 #define MULTassign 345 229 #define DIVassign 346 230 #define MODassign 347 231 #define PLUSassign 348 232 #define MINUSassign 349 233 #define LSassign 350 234 #define RSassign 351 235 #define ANDassign 352 236 #define ERassign 353 237 #define ORassign 354 238 #define THEN 355 251 239 252 240 … … 258 246 259 247 /* Line 2068 of yacc.c */ 260 #line 1 10"parser.yy"248 #line 108 "parser.yy" 261 249 262 250 Token tok; … … 275 263 276 264 /* Line 2068 of yacc.c */ 277 #line 2 78"Parser/parser.h"265 #line 266 "Parser/parser.h" 278 266 } YYSTYPE; 279 267 # define YYSTYPE_IS_TRIVIAL 1 -
src/Parser/parser.yy
rd2ded3e7 r698664b3 10 10 // Created On : Sat Sep 1 20:22:55 2001 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : T hu Oct 8 17:17:54201513 // Update Count : 1 47312 // Last Modified On : Tue Aug 11 16:01:49 2015 13 // Update Count : 1350 14 14 // 15 15 … … 81 81 %token ATTRIBUTE EXTENSION // GCC 82 82 %token IF ELSE SWITCH CASE DEFAULT DO WHILE FOR BREAK CONTINUE GOTO RETURN 83 %token CHOOSE DISABLE ENABLE FALLTHRU TRY CATCH CATCHRESUME FINALLY THROW THROWRESUME AT// CFA83 %token CHOOSE FALLTHRU TRY CATCH FINALLY THROW // CFA 84 84 %token ASM // C99, extension ISO/IEC 9899:1999 Section J.5.10(1) 85 85 %token ALIGNAS ALIGNOF ATOMIC GENERIC NORETURN STATICASSERT THREADLOCAL // C11 … … 103 103 %token LSassign RSassign // <<= >>= 104 104 %token ANDassign ERassign ORassign // &= ^= |= 105 106 %token ATassign // @=107 105 108 106 // Types declaration … … 122 120 } 123 121 124 %type<tok> identifier no_01_identifier no_attr_identifier zero_one122 %type<tok> zero_one identifier no_attr_identifier no_01_identifier 125 123 %type<tok> identifier_or_type_name no_attr_identifier_or_type_name no_01_identifier_or_type_name 126 124 %type<constant> string_literal_list … … 319 317 ; 320 318 321 // no zero_one because ambiguity with 0.0 : double constant or field selection322 319 no_attr_identifier: 323 320 IDENTIFIER … … 367 364 | postfix_expression DECR 368 365 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::DecrPost ), $1 ); } 366 // GCC has priority: cast_expression 369 367 | '(' type_name_no_function ')' '{' initializer_list comma_opt '}' // C99 370 368 { $$ = 0; } 371 | postfix_expression '{' argument_expression_list '}' // CFA372 {373 Token fn; fn.str = new std::string( "?{}" ); // location undefined374 $$ = new CompositeExprNode( new VarRefNode( fn ), (ExpressionNode *)( $1 )->set_link( $3 ) );375 }376 369 ; 377 370 … … 452 445 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::AlignOf ), $2 ); } 453 446 | ALIGNOF '(' type_name_no_function ')' // GCC, type alignment 454 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::AlignOf ), new TypeValueNode( $3 ) ); }447 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::AlignOf ), new TypeValueNode( $3 )); } 455 448 | ANDAND no_attr_identifier // GCC, address of label 456 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::LabelAddress ), new VarRefNode( $2, true ) ); }449 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::LabelAddress ), new VarRefNode( $2, true )); } 457 450 ; 458 451 … … 634 627 | exception_statement 635 628 | asm_statement 636 | '^' postfix_expression '{' argument_expression_list '}' ';' // CFA637 {638 Token fn; fn.str = new std::string( "^?{}" ); // location undefined639 $$ = new StatementNode( StatementNode::Exp, new CompositeExprNode( new VarRefNode( fn ),640 (ExpressionNode *)(new CompositeExprNode( new OperatorNode( OperatorNode::AddressOf ), $2 ))->set_link( $4 ) ), 0 );641 }642 629 ; 643 630 … … 818 805 | RETURN comma_expression_opt ';' 819 806 { $$ = new StatementNode( StatementNode::Return, $2, 0 ); } 820 | THROW assignment_expression _opt';'807 | THROW assignment_expression ';' 821 808 { $$ = new StatementNode( StatementNode::Throw, $2, 0 ); } 822 // | THROW ';' 823 // { $$ = new StatementNode( StatementNode::Throw ); } 824 | THROWRESUME assignment_expression_opt ';' 825 { $$ = new StatementNode( StatementNode::Throw, $2, 0 ); } 826 | THROWRESUME assignment_expression_opt AT assignment_expression ';' 827 { $$ = new StatementNode( StatementNode::Throw, $2, 0 ); } 828 // | THROWRESUME ';' 829 // { $$ = new StatementNode( StatementNode::Throw ); } 809 | THROW ';' 810 { $$ = new StatementNode( StatementNode::Throw ); } 830 811 ; 831 812 … … 850 831 | handler_clause CATCH '(' ELLIPSIS ')' compound_statement 851 832 { $$ = $1->set_link( StatementNode::newCatchStmt( 0, $6, true ) ); } 852 | CATCHRESUME '(' ELLIPSIS ')' compound_statement853 { $$ = StatementNode::newCatchStmt( 0, $5, true ); }854 | handler_clause CATCHRESUME '(' ELLIPSIS ')' compound_statement855 { $$ = $1->set_link( StatementNode::newCatchStmt( 0, $6, true ) ); }856 833 ; 857 834 … … 860 837 { $$ = StatementNode::newCatchStmt( $5, $8 ); } 861 838 | handler_clause CATCH '(' push push exception_declaration pop ')' compound_statement pop 862 { $$ = $1->set_link( StatementNode::newCatchStmt( $6, $9 ) ); }863 | CATCHRESUME '(' push push exception_declaration pop ')' compound_statement pop864 { $$ = StatementNode::newCatchStmt( $5, $8 ); }865 | handler_clause CATCHRESUME '(' push push exception_declaration pop ')' compound_statement pop866 839 { $$ = $1->set_link( StatementNode::newCatchStmt( $6, $9 ) ); } 867 840 ; … … 1681 1654 | '=' initializer 1682 1655 { $$ = $2; } 1683 | ATassign initializer1684 { $$ = $2; }1685 1656 ; 1686 1657 … … 1691 1662 1692 1663 initializer_list: 1693 // empty 1694 { $$ = 0; } 1695 | initializer 1664 initializer 1696 1665 | designation initializer { $$ = $2->set_designators( $1 ); } 1697 1666 | initializer_list ',' initializer { $$ = (InitializerNode *)( $1->set_link( $3 ) ); } … … 1724 1693 1725 1694 designator: 1726 // lexer ambiguity: designator ".0" is floating-point constant or designator for name 01727 1695 // only ".0" and ".1" allowed => semantic check 1728 1696 FLOATINGconstant -
src/SymTab/Indexer.h
rd2ded3e7 r698664b3 10 10 // Created On : Sun May 17 21:38:55 2015 11 11 // Last Modified By : Rob Schluntz 12 // Last Modified On : Thu Sep 17 16:05:38201513 // Update Count : 512 // Last Modified On : Wed Aug 05 13:51:39 2015 13 // Update Count : 4 14 14 // 15 15 … … 19 19 #include <list> 20 20 #include <string> 21 #include <map> 21 22 22 23 #include "SynTree/Visitor.h" -
src/SymTab/Validate.cc
rd2ded3e7 r698664b3 9 9 // Author : Richard C. Bilson 10 10 // Created On : Sun May 17 21:50:04 2015 11 // Last Modified By : Peter A. Buhr12 // Last Modified On : Tue Aug 11 16:59:35201513 // Update Count : 19 611 // Last Modified By : Rob Schluntz 12 // Last Modified On : Wed Aug 05 14:00:24 2015 13 // Update Count : 195 14 14 // 15 15 … … 894 894 DeclarationWithType *ret = Mutator::mutate( objDecl ); 895 895 typedefNames = oldNames; 896 // is the type a function?897 896 if ( FunctionType *funtype = dynamic_cast<FunctionType *>( ret->get_type() ) ) { 898 // replace the current object declaration with a function declaration899 897 return new FunctionDecl( ret->get_name(), ret->get_storageClass(), ret->get_linkage(), funtype, 0, ret->get_isInline(), ret->get_isNoreturn() ); 900 898 } else if ( objDecl->get_isInline() || objDecl->get_isNoreturn() ) { -
src/SynTree/ArrayType.cc
rd2ded3e7 r698664b3 9 9 // Author : Richard C. Bilson 10 10 // Created On : Mon May 18 07:44:20 2015 11 // Last Modified By : Rob Schluntz12 // Last Modified On : Wed Aug 12 14:19:07201513 // Update Count : 1111 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sat Jun 6 14:11:48 2015 13 // Update Count : 9 14 14 // 15 15 … … 50 50 } // if 51 51 if ( dimension ) { 52 os << " with dimension of ";53 dimension->print( os, 0);52 os << "with dimension of "; 53 dimension->print( os, indent ); 54 54 } // if 55 55 } -
src/SynTree/BasicType.cc
rd2ded3e7 r698664b3 9 9 // Author : Richard C. Bilson 10 10 // Created On : Mon May 18 07:44:20 2015 11 // Last Modified By : Rob Schluntz12 // Last Modified On : Wed Aug 12 14:15:45201513 // Update Count : 611 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sun Jun 7 08:44:36 2015 13 // Update Count : 5 14 14 // 15 15 … … 28 28 29 29 Type::print( os, indent ); 30 os << kindNames[ kind ] ;30 os << kindNames[ kind ] << ' '; 31 31 } 32 32 -
src/SynTree/Expression.cc
rd2ded3e7 r698664b3 9 9 // Author : Richard C. Bilson 10 10 // Created On : Mon May 18 07:44:20 2015 11 // Last Modified By : Rob Schluntz12 // Last Modified On : Wed Sep 02 12:07:10201513 // Update Count : 3311 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Tue Jul 28 16:27:17 2015 13 // Update Count : 22 14 14 // 15 15 … … 31 31 Expression::Expression( Expression *_aname ) : env( 0 ), argName( _aname ) {} 32 32 33 Expression::Expression( const Expression &other ) : env( maybeClone( other.env ) ) , argName( maybeClone( other.get_argName() ) ){33 Expression::Expression( const Expression &other ) : env( maybeClone( other.env ) ) { 34 34 cloneAll( other.results, results ); 35 argName = other.get_argName(); 35 36 } 36 37 … … 71 72 72 73 void ConstantExpr::print( std::ostream &os, int indent ) const { 73 os << std::string( indent, ' ' ) <<"constant expression " ;74 os << "constant expression " ; 74 75 constant.print( os ); 75 76 Expression::print( os, indent ); 76 os << std::endl;77 77 } 78 78 -
src/SynTree/Initializer.cc
rd2ded3e7 r698664b3 9 9 // Author : Richard C. Bilson 10 10 // Created On : Mon May 18 07:44:20 2015 11 // Last Modified By : Rob Schluntz12 // Last Modified On : Wed Aug 12 14:05:25 201513 // Update Count : 1411 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Mon May 18 09:02:45 2015 13 // Update Count : 2 14 14 // 15 15 … … 43 43 44 44 void SingleInit::print( std::ostream &os, int indent ) { 45 os << std::endl << std::string(indent, ' ' ) << "Simple Initializer: " << std::endl;46 value->print( os, indent+ 4);45 os << std::endl << std::string(indent, ' ' ) << "Simple Initializer: "; 46 value->print( os, indent+2 ); 47 47 48 48 if ( ! designators.empty() ) { 49 os << std::endl << std::string(indent + 2, ' ' ) << "designated by: " << std::endl;50 for ( std::list < Expression * >::iterator i = designators.begin(); i != designators.end(); i++ ) {49 os << std::endl << std::string(indent + 2, ' ' ) << "designated by: " ; 50 for ( std::list < Expression * >::iterator i = designators.begin(); i != designators.end(); i++ ) 51 51 ( *i )->print(os, indent + 4 ); 52 }53 52 } // if 54 53 } -
src/driver/cfa.cc
rd2ded3e7 r698664b3 10 10 // Created On : Tue Aug 20 13:44:49 2002 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Mon Aug 17 15:24:30201513 // Update Count : 12 612 // Last Modified On : Thu Jul 16 17:09:23 2015 13 // Update Count : 124 14 14 // 15 15 … … 263 263 args[nargs] = ( *new string( string("-D__CFA_PATCHLEVEL__=") + Patch ) ).c_str(); 264 264 nargs += 1; 265 args[nargs] = "-D__CFORALL__=1";266 nargs += 1;267 265 268 266 if ( cpp_flag ) { -
src/examples/control_structures.c
rd2ded3e7 r698664b3 10 10 // Created On : Wed May 27 17:56:53 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Fri Sep 18 08:12:17201513 // Update Count : 2 812 // Last Modified On : Thu Jun 4 14:02:50 2015 13 // Update Count : 24 14 14 // 15 15 … … 26 26 break L3; 27 27 break L4; 28 //continue L1; // error: not enclosing loop29 //continue L2; // error: not enclosing loop28 //continue L1; // labelled continue - should be an error 29 //continue L2; // should be an error 30 30 continue L3; 31 31 continue L4; -
src/examples/sum.c
rd2ded3e7 r698664b3 7 7 // sum.c -- 8 8 // 9 // Author : Peter A. Buhr9 // Author : Richard C. Bilson 10 10 // Created On : Wed May 27 17:56:53 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Mon Sep 28 15:09:55 201513 // Update Count : 1 1812 // Last Modified On : Mon Jun 1 20:46:35 2015 13 // Update Count : 18 14 14 // 15 15 16 16 extern "C" { 17 int printf( c har *, ... );17 int printf( const char *, ... ); 18 18 } 19 #include "fstream.h"20 19 21 20 context sumable( type T ) { 22 21 const T 0; 23 22 T ?+?( T, T ); 23 T ?++( T * ); 24 24 T ?+=?( T *, T ); 25 T ++?( T * );26 T ?++( T * );27 25 }; 28 26 29 27 forall( type T | sumable( T ) ) 30 T sum( unsigned int n, T a[] ) { 31 T total = 0; // instantiate T, select 0 32 for ( unsigned int i = 0; i < n; i += 1 ) 33 total += a[i]; // select + 28 T sum( int n, T a[] ) { 29 T total; // instantiate T, select 0 30 total = 0; 31 for ( int i = 0; i < n; i += 1 ) 32 total = total + a[i]; // select + 34 33 return total; 35 34 } … … 37 36 // Required to satisfy sumable as char does not have addition. 38 37 const char 0; 39 char ?+?( char op1, char op2 ) { return (int)op1 + op2; } // cast forces integer addition or recursion 40 char ++?( char *op ) { *op += 1; return *op; } 41 char ?++( char *op ) { char temp = *op; *op += 1; return temp; } 38 char ?+?( char op1, char op2 ) { return op1 + op2; } 39 char ?++( char *op ) { return *op + 1; } 40 41 const double 0; // TEMPORARY, incorrect use of int 0 42 42 43 43 int main() { 44 44 const int low = 5, High = 15, size = High - low; 45 46 ofstream *sout = ofstream_stdout(); 47 48 char s = 0, a[size]; 49 char v = low; 50 for ( int i = 0; i < size; i += 1, v += 1 ) { 51 s += v; 52 a[i] = v; 53 } 54 sout << "sum from " << low << " to " << High << " is " 55 << (int)sum( size, a ) << ", check " << (int)s << "\n"; 56 57 int s = 0, a[size]; 45 int si = 0, ai[size]; 58 46 int v = low; 59 47 for ( int i = 0; i < size; i += 1, v += 1 ) { 60 s += (int)v;61 a [i] = (int)v;48 si += v; 49 ai[i] = v; 62 50 } 63 sout << "sum from " << low << " to " << High << " is "64 << sum( size, (int *)a ) << ", check " << (int)s << "\n";51 printf( "sum from %d to %d is %d, check %d\n", 52 low, High, sum( size, ai ), si ); 65 53 66 double s = 0.0, a[size]; 54 // char ci[size]; 55 // char c = sum( size, ci ); 56 // float fi[size]; 57 // float f = sum( size, fi ); 58 59 double sd = 0.0, ad[size]; 67 60 double v = low / 10.0; 68 61 for ( int i = 0; i < size; i += 1, v += 0.1 ) { 69 s += (double)v;70 a [i] = (double)v;62 sd += v; 63 ad[i] = v; 71 64 } 72 printf( "%g\n", sum( size, (double *)a ) ); 73 // sout << "sum from " << low / 10.0 << " to " << High / 10.0 << " is " 74 // << sum( size, (double *)a ) << ", check " << (double)s << "\n"; 75 76 float s = 0.0, a[size]; 77 float v = low / 10.0; 78 for ( int i = 0; i < size; i += 1, v += 0.1f ) { 79 s += (float)v; 80 a[i] = (float)v; 81 } 82 printf( "%g\n", sum( size, (float *)a ) ); 83 // sout << "sum from " << low / 10.0 << " to " << High / 10.0 << " is " 84 // << sum( size, (float *)a ) << ", check " << (float)s << "\n"; 65 printf( "sum from %g to %g is %g, check %g\n", 66 low / 10.0, High / 10.0, sum( size, ad ), sd ); 85 67 } 86 68 87 69 // Local Variables: // 88 70 // tab-width: 4 // 89 // compile-command: "cfa sum.c fstream.o iostream.o" //71 // compile-command: "cfa sum.c" // 90 72 // End: //
Note:
See TracChangeset
for help on using the changeset viewer.