diff --git a/harbour/ChangeLog b/harbour/ChangeLog index b109d56577..1fa20649ed 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -8,6 +8,49 @@ 2002-12-01 13:30 UTC+0100 Foo Bar */ +2007-02-18 12:40 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl) + * harbour/common.mak + * harbour/source/compiler/Makefile + * harbour/source/compiler/hbfix.c + + harbour/source/compiler/hbopt.c + * divided hbfix.c into two separated functions: + - hb_compFixFuncPCode() which only fix generated PCODE updating + local parameters numbers when PARAMETERS is used + - hb_compOptimizePCode() which makes PCODE optimization + It allows to not execute hb_compFixFuncPCode() when PARAMETERS + is not use and execute hb_compOptimizePCode() more then once in + optimization process. + + * harbour/hbgtmk.sh + * updated CVS server name + + * harbour/include/hbcomp.h + * harbour/include/hbcompdf.h + * harbour/source/compiler/complex.c + * harbour/source/compiler/harbour.c + * harbour/source/compiler/harbour.y + * harbour/source/compiler/harbour.yyc + * harbour/source/compiler/hbcomp.c + * harbour/source/compiler/hbgenerr.c + * harbour/source/compiler/hbident.c + * changed code for generating in PCODE line numbers and module names + there was serious problem with line numbers and module names in old + code - in many cases line numbers were not generated at all or + generated in wrong places. Also file module name was not updated + when inside of function some code was included with #include + For such situation now modified version of HB_P_MODULE is generated + with module name only but without function name, f.e.: + HB_P_MODULE "test.prg:" + exactly the same form of HB_P_MODULE is used in xHarbour. + Debugger code should be updated to recognize such HB_P_MODULE version + Ryszard any chance that you can look at it? + And what about syncing with xHarbour debugger? + I can add some missing functions to compiler and HVM but I do not + want to update next peace of code myself. Sorry but I do not have + enough time. I'd prefer to finish some other things I'm working. + If Ryszard is busy can someone else try to port xHarbour debugger + to Harbour? + 2007-02-14 00:15 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl) * harbour/contrib/libct/ctwfunc.c * harbour/contrib/libct/ctwin.c diff --git a/harbour/common.mak b/harbour/common.mak index b4172da672..185474539d 100644 --- a/harbour/common.mak +++ b/harbour/common.mak @@ -752,6 +752,7 @@ HARBOUR_EXE_OBJS = \ $(OBJ_DIR)\hbpcode.obj \ $(OBJ_DIR)\hbfunchk.obj \ $(OBJ_DIR)\hbfix.obj \ + $(OBJ_DIR)\hbopt.obj \ $(OBJ_DIR)\ppcomp.obj \ $(OBJ_DIR)\genc.obj \ $(OBJ_DIR)\gencc.obj \ diff --git a/harbour/hbgtmk.sh b/harbour/hbgtmk.sh index d5399e031b..7e2210b7be 100644 --- a/harbour/hbgtmk.sh +++ b/harbour/hbgtmk.sh @@ -14,7 +14,7 @@ # ssh is not necessary for anonymous access on SourceForge # export CVS_RSH=ssh -export CVSROOT=":pserver:anonymous@cvs.sourceforge.net:/cvsroot/harbour-project" +export CVSROOT=":pserver:anonymous@harbour-project.cvs.sourceforge.net:/cvsroot/harbour-project" export PROJECT=harbour test_reqrpm() diff --git a/harbour/include/hbcomp.h b/harbour/include/hbcomp.h index a9eff86f9a..4fb6f79c44 100644 --- a/harbour/include/hbcomp.h +++ b/harbour/include/hbcomp.h @@ -192,10 +192,11 @@ extern ULONG hb_compGenJumpTrue( LONG, HB_COMP_DECL ); /* generates t extern void hb_compGenJumpHere( ULONG, HB_COMP_DECL ); /* returns the pcode pos where to set a jump offset */ extern void hb_compGenJumpThere( ULONG, ULONG, HB_COMP_DECL ); /* sets a jump offset */ -extern void hb_compLinePush( HB_COMP_DECL ); /* generates the pcode with the currently compiled source code line */ -extern void hb_compLinePushIfDebugger( HB_COMP_DECL ); /* generates the pcode with the currently compiled source code line */ -extern void hb_compLinePushIfInside( HB_COMP_DECL ); /* generates the pcode with the currently compiled source code line */ -extern void hb_compStatmentStart( HB_COMP_DECL ); /* Check if we can start statement (without line pushing) */ +extern void hb_compGenModuleName( HB_COMP_DECL, char * szFunName ); /* generates the pcode with the currently compiled module and function name */ +extern void hb_compLinePush( HB_COMP_DECL ); /* generates the pcode with the currently compiled source code line */ +extern void hb_compLinePushIfDebugger( HB_COMP_DECL ); /* generates the pcode with the currently compiled source code line */ +extern void hb_compLinePushIfInside( HB_COMP_DECL ); /* generates the pcode with the currently compiled source code line */ +extern void hb_compStatmentStart( HB_COMP_DECL ); /* Check if we can start statement (without line pushing) */ extern void hb_compGenMessage( char * szMsgName, BOOL bIsObject, HB_COMP_DECL ); /* sends a message to an object */ extern void hb_compGenMessageData( char * szMsg, BOOL bIsObject, HB_COMP_DECL ); /* generates an underscore-symbol name for a data assignment */ @@ -303,11 +304,13 @@ extern void hb_compNOOPfill( PFUNCTION pFunc, ULONG ulFrom, int iCount, BOOL fPo extern BOOL hb_compIsJump( HB_COMP_DECL, PFUNCTION pFunc, ULONG ulPos ); /* Misc functions defined in hbfix.c */ -extern void hb_compFixFuncPCode( HB_COMP_DECL, PFUNCTION ); -/* Misc functions defined in hbstripl.c */ -extern void hb_compStripFuncLines( PFUNCTION pFunc ); +extern void hb_compFixFuncPCode( HB_COMP_DECL, PFUNCTION pFunc ); /* Misc functions defined in hbdead.c */ extern void hb_compCodeTraceMarkDead( HB_COMP_DECL, PFUNCTION pFunc ); +/* Misc functions defined in hbopt.c */ +extern void hb_compOptimizePCode( HB_COMP_DECL, PFUNCTION pFunc ); +/* Misc functions defined in hbstripl.c */ +extern void hb_compStripFuncLines( PFUNCTION pFunc ); /* output related functions defined in gen*.c */ extern void hb_compGenCCode( HB_COMP_DECL, PHB_FNAME ); /* generates the C language output */ diff --git a/harbour/include/hbcompdf.h b/harbour/include/hbcompdf.h index a58825d4af..15b4e2b982 100644 --- a/harbour/include/hbcompdf.h +++ b/harbour/include/hbcompdf.h @@ -522,6 +522,7 @@ typedef struct _HB_COMP_LEX { PHB_PP_STATE pPP; int iState; + BOOL fEol; char * lasttok; } HB_COMP_LEX, * PHB_COMP_LEX; @@ -571,6 +572,10 @@ typedef struct _HB_COMP PHB_FNAME pPpoPath; ULONG lastLinePos; /* position of last opcode with line number */ + int lastLine; /* last generated in PCODE line number */ + int currLine; /* currently compiled line number */ + char * lastModule; /* last generated in PCODE module name */ + char * currModule; /* currently compiled module name */ char * szAnnounce; char * szStdCh; /* standard definitions file name (-u) */ @@ -606,7 +611,6 @@ typedef struct _HB_COMP BOOL fForceMemvars; /* holds if memvars are assumed when accesing undeclared variable (-v)*/ BOOL fDebugInfo; /* holds if generate debugger required info */ BOOL fNoStartUp; /* C code generation embed HB_FS_FIRST or not */ - BOOL fDontGenLineNum; /* suppress line number generation */ BOOL fCredits; /* print credits */ BOOL fBuildInfo; /* print build info */ BOOL fLogo; /* print logo */ diff --git a/harbour/source/compiler/Makefile b/harbour/source/compiler/Makefile index cfdf784d9a..7c84335876 100644 --- a/harbour/source/compiler/Makefile +++ b/harbour/source/compiler/Makefile @@ -38,6 +38,7 @@ C_SOURCES=\ hbfix.c \ hbdead.c \ hblbl.c \ + hbopt.c \ hbstripl.c \ hbusage.c \ hbident.c \ diff --git a/harbour/source/compiler/complex.c b/harbour/source/compiler/complex.c index 0f9fdebaf5..d45417915e 100644 --- a/harbour/source/compiler/complex.c +++ b/harbour/source/compiler/complex.c @@ -284,9 +284,15 @@ static char * hb_comp_tokenString( YYSTYPE *yylval_ptr, HB_COMP_DECL, PHB_PP_TOK int hb_complex( YYSTYPE *yylval_ptr, HB_COMP_DECL ) { - PHB_COMP_LEX pLex = ( PHB_COMP_LEX ) HB_COMP_PARAM->pLex; + PHB_COMP_LEX pLex = HB_COMP_PARAM->pLex; PHB_PP_TOKEN pToken = hb_pp_tokenGet( pLex->pPP ); + if( pLex->fEol ) + { + pLex->fEol = FALSE; + HB_COMP_PARAM->currLine++; + } + if( !pToken || HB_COMP_PARAM->fExit ) { pLex->lasttok = NULL; @@ -520,6 +526,7 @@ int hb_complex( YYSTYPE *yylval_ptr, HB_COMP_DECL ) return pToken->value[ 0 ]; case HB_PP_TOKEN_EOL: + pLex->fEol = TRUE; case HB_PP_TOKEN_EOC: pLex->iState = LOOKUP; return pToken->value[ 0 ]; diff --git a/harbour/source/compiler/harbour.c b/harbour/source/compiler/harbour.c index 1e958a4313..7a546ff3fb 100644 --- a/harbour/source/compiler/harbour.c +++ b/harbour/source/compiler/harbour.c @@ -813,7 +813,7 @@ void hb_compVariableAdd( HB_COMP_DECL, char * szVarName, BYTE cValueType ) pVar->cType = cValueType; pVar->iUsed = VU_NOT_USED; pVar->pNext = NULL; - pVar->iDeclLine = hb_pp_line( HB_COMP_PARAM->pLex->pPP ); + pVar->iDeclLine = HB_COMP_PARAM->currLine; if ( toupper( cValueType ) == 'S' ) { @@ -1939,14 +1939,8 @@ void hb_compFunctionAdd( HB_COMP_DECL, char * szFunName, HB_SYMBOLSCOPE cScope, if( HB_COMP_PARAM->fDebugInfo ) { - char * szFile = hb_pp_fileName( HB_COMP_PARAM->pLex->pPP ); - - hb_compGenPCode1( HB_P_MODULENAME, HB_COMP_PARAM ); - hb_compGenPCodeN( ( BYTE * ) szFile, strlen( szFile ), HB_COMP_PARAM ); - hb_compGenPCode1( ':', HB_COMP_PARAM ); - hb_compGenPCodeN( ( BYTE * ) szFunName, strlen( szFunName ) + 1, HB_COMP_PARAM ); + hb_compGenModuleName( HB_COMP_PARAM, szFunName ); } - HB_COMP_PARAM->fDontGenLineNum = FALSE; /* reset the flag */ } PINLINE hb_compInlineAdd( HB_COMP_DECL, char * szFunName, int iLine ) @@ -2342,7 +2336,7 @@ int hb_compLocalGetPos( HB_COMP_DECL, char * szVarName ) /* returns the order + pVar->cType = ' '; pVar->iUsed = VU_NOT_USED; pVar->pNext = NULL; - pVar->iDeclLine = hb_pp_line( HB_COMP_PARAM->pLex->pPP ); + pVar->iDeclLine = HB_COMP_PARAM->currLine; /* Use negative order to signal that we are accessing a local * variable from a codeblock @@ -2641,21 +2635,48 @@ void hb_compGenJumpHere( ULONG ulOffset, HB_COMP_DECL ) hb_compGenJumpThere( ulOffset, HB_COMP_PARAM->functions.pLast->lPCodePos, HB_COMP_PARAM ); } +/* generates the pcode with the currently compiled module and function name */ +void hb_compGenModuleName( HB_COMP_DECL, char * szFunName ) +{ + hb_compGenPCode1( HB_P_MODULENAME, HB_COMP_PARAM ); + hb_compGenPCodeN( ( BYTE * ) HB_COMP_PARAM->currModule, + strlen( HB_COMP_PARAM->currModule ), HB_COMP_PARAM ); + hb_compGenPCode1( ':', HB_COMP_PARAM ); + if( szFunName && *szFunName ) + hb_compGenPCodeN( ( BYTE * ) szFunName, strlen( szFunName ) + 1, HB_COMP_PARAM ); + else /* special version for included files */ + hb_compGenPCode1( '\0', HB_COMP_PARAM ); + HB_COMP_PARAM->lastModule = HB_COMP_PARAM->currModule; + HB_COMP_PARAM->lastLine = -1; +} + void hb_compLinePush( HB_COMP_DECL ) /* generates the pcode with the currently compiled source code line */ { - if( HB_COMP_PARAM->fLineNumbers && ! HB_COMP_PARAM->fDontGenLineNum ) + if( HB_COMP_PARAM->fLineNumbers ) { - int iLine = hb_pp_line( HB_COMP_PARAM->pLex->pPP ); - if( HB_COMP_PARAM->functions.pLast->lPCodePos - HB_COMP_PARAM->lastLinePos > 3 || - HB_COMP_PARAM->fDebugInfo ) + if( HB_COMP_PARAM->fDebugInfo && HB_COMP_PARAM->lastModule != HB_COMP_PARAM->currModule ) { - HB_COMP_PARAM->lastLinePos = HB_COMP_PARAM->functions.pLast->lPCodePos; - hb_compGenPCode3( HB_P_LINE, HB_LOBYTE( iLine ), HB_HIBYTE( iLine ), HB_COMP_PARAM ); + if( HB_COMP_PARAM->functions.pLast->pCode[ HB_COMP_PARAM->lastLinePos ] == HB_P_LINE && + HB_COMP_PARAM->functions.pLast->lPCodePos - HB_COMP_PARAM->lastLinePos == 3 ) + HB_COMP_PARAM->functions.pLast->lPCodePos -= 3; + hb_compGenModuleName( HB_COMP_PARAM, NULL ); } - else + + if( HB_COMP_PARAM->currLine != HB_COMP_PARAM->lastLine ) { - HB_COMP_PARAM->functions.pLast->pCode[ HB_COMP_PARAM->lastLinePos + 1 ] = HB_LOBYTE( iLine ); - HB_COMP_PARAM->functions.pLast->pCode[ HB_COMP_PARAM->lastLinePos + 2 ] = HB_HIBYTE( iLine ); + if( HB_COMP_PARAM->functions.pLast->pCode[ HB_COMP_PARAM->lastLinePos ] == HB_P_LINE && + HB_COMP_PARAM->functions.pLast->lPCodePos - HB_COMP_PARAM->lastLinePos == 3 ) + { + HB_COMP_PARAM->functions.pLast->pCode[ HB_COMP_PARAM->lastLinePos + 1 ] = HB_LOBYTE( HB_COMP_PARAM->currLine ); + HB_COMP_PARAM->functions.pLast->pCode[ HB_COMP_PARAM->lastLinePos + 2 ] = HB_HIBYTE( HB_COMP_PARAM->currLine ); + } + else + { + HB_COMP_PARAM->lastLinePos = HB_COMP_PARAM->functions.pLast->lPCodePos; + hb_compGenPCode3( HB_P_LINE, HB_LOBYTE( HB_COMP_PARAM->currLine ), + HB_HIBYTE( HB_COMP_PARAM->currLine ), HB_COMP_PARAM ); + } + HB_COMP_PARAM->lastLine = HB_COMP_PARAM->currLine; } } @@ -2663,10 +2684,9 @@ void hb_compLinePush( HB_COMP_DECL ) /* generates the pcode with the currently c { /* previous line contained RETURN/BREAK/LOOP/EXIT statement */ hb_compGenWarning( HB_COMP_PARAM, hb_comp_szWarnings, 'W', HB_COMP_WARN_UNREACHABLE, NULL, NULL ); + /* clear RETURN/BREAK flag */ + HB_COMP_PARAM->functions.pLast->bFlags &= ~ ( /*FUN_WITH_RETURN |*/ FUN_BREAK_CODE ); } - HB_COMP_PARAM->fDontGenLineNum = FALSE; - /* clear RETURN/BREAK flag */ - HB_COMP_PARAM->functions.pLast->bFlags &= ~ ( /*FUN_WITH_RETURN |*/ FUN_BREAK_CODE ); } /* @@ -2687,6 +2707,12 @@ void hb_compStatmentStart( HB_COMP_DECL ) } } +void hb_compLinePushIfInside( HB_COMP_DECL ) /* generates the pcode with the currently compiled source code line */ +{ + hb_compStatmentStart( HB_COMP_PARAM ); + hb_compLinePush( HB_COMP_PARAM ); +} + /* Generates the pcode with the currently compiled source code line * if debug code was requested only */ @@ -2707,12 +2733,6 @@ void hb_compLinePushIfDebugger( HB_COMP_DECL ) } } -void hb_compLinePushIfInside( HB_COMP_DECL ) /* generates the pcode with the currently compiled source code line */ -{ - hb_compStatmentStart( HB_COMP_PARAM ); - hb_compLinePush( HB_COMP_PARAM ); -} - /* * Function generates pcode for undeclared variable */ @@ -3449,7 +3469,7 @@ void hb_compFinalizeFunction( HB_COMP_DECL ) /* fixes all last defined function if( pFunc ) { - if( (pFunc->bFlags & FUN_WITH_RETURN) == 0 ) + if( ( pFunc->bFlags & FUN_WITH_RETURN ) == 0 ) { /* The last statement in a function/procedure was not a RETURN * Generate end-of-procedure pcode @@ -3459,12 +3479,8 @@ void hb_compFinalizeFunction( HB_COMP_DECL ) /* fixes all last defined function if( !pFunc->bError ) { - if( pFunc->bFlags & FUN_USES_LOCAL_PARAMS ) + if( pFunc->wParamCount && !( pFunc->bFlags & FUN_USES_LOCAL_PARAMS ) ) { - int PCount = pFunc->wParamCount; - - /* do not adjust if local parameters are used -remove NOOPs only */ - pFunc->wParamCount = 0; /* There was a PARAMETERS statement used. * NOTE: This fixes local variables references in a case when * there is PARAMETERS statement after a LOCAL variable declarations. @@ -3476,12 +3492,8 @@ void hb_compFinalizeFunction( HB_COMP_DECL ) /* fixes all last defined function * because the PARAMETERS statement can be used even at the end * of function body when all local variables are already created. */ - hb_compFixFuncPCode( HB_COMP_PARAM, pFunc ); - pFunc->wParamCount = PCount; } - else - hb_compFixFuncPCode( HB_COMP_PARAM, pFunc ); hb_compOptimizeJumps( HB_COMP_PARAM ); } @@ -3807,6 +3819,7 @@ static void hb_compOptimizeJumps( HB_COMP_DECL ) if( ! HB_COMP_ISSUPPORTED(HB_COMPFLAG_OPTJUMP) ) return; + hb_compOptimizePCode( HB_COMP_PARAM, HB_COMP_PARAM->functions.pLast ); hb_compCodeTraceMarkDead( HB_COMP_PARAM, HB_COMP_PARAM->functions.pLast ); for( iPass = 0; iPass < 3 && !HB_COMP_PARAM->fExit; ++iPass ) @@ -3891,15 +3904,18 @@ static void hb_compOptimizeJumps( HB_COMP_DECL ) lOffset = HB_PCODE_MKINT24( &pCode[ ulJumpAddr + 1 ] ); if( lOffset == 4 ) hb_compNOOPfill( HB_COMP_PARAM->functions.pLast, ulJumpAddr, 4, FALSE, FALSE ); - else if( HB_LIM_INT8( lOffset ) ) + else if( iPass > 0 && HB_LIM_INT16( lOffset ) ) { - pCode[ ulJumpAddr ] = HB_P_JUMPNEAR; - hb_compNOOPfill( HB_COMP_PARAM->functions.pLast, ulJumpAddr + 2, 2, FALSE, FALSE ); - } - else if( HB_LIM_INT16( lOffset ) ) - { - pCode[ ulJumpAddr ] = HB_P_JUMP; - hb_compNOOPfill( HB_COMP_PARAM->functions.pLast, ulJumpAddr + 3, 1, FALSE, FALSE ); + if( HB_LIM_INT8( lOffset ) ) + { + pCode[ ulJumpAddr ] = HB_P_JUMPNEAR; + hb_compNOOPfill( HB_COMP_PARAM->functions.pLast, ulJumpAddr + 2, 2, FALSE, FALSE ); + } + else + { + pCode[ ulJumpAddr ] = HB_P_JUMP; + hb_compNOOPfill( HB_COMP_PARAM->functions.pLast, ulJumpAddr + 3, 1, FALSE, FALSE ); + } } break; @@ -3907,15 +3923,18 @@ static void hb_compOptimizeJumps( HB_COMP_DECL ) lOffset = HB_PCODE_MKINT24( &pCode[ ulJumpAddr + 1 ] ); if( lOffset == 4 ) hb_compNOOPfill( HB_COMP_PARAM->functions.pLast, ulJumpAddr, 4, TRUE, FALSE ); - else if( HB_LIM_INT8( lOffset ) ) + else if( iPass > 0 && HB_LIM_INT16( lOffset ) ) { - pCode[ ulJumpAddr ] = HB_P_JUMPFALSENEAR; - hb_compNOOPfill( HB_COMP_PARAM->functions.pLast, ulJumpAddr + 2, 2, FALSE, FALSE ); - } - else if( HB_LIM_INT16( lOffset ) ) - { - pCode[ ulJumpAddr ] = HB_P_JUMPFALSE; - hb_compNOOPfill( HB_COMP_PARAM->functions.pLast, ulJumpAddr + 3, 1, FALSE, FALSE ); + if( HB_LIM_INT8( lOffset ) ) + { + pCode[ ulJumpAddr ] = HB_P_JUMPFALSENEAR; + hb_compNOOPfill( HB_COMP_PARAM->functions.pLast, ulJumpAddr + 2, 2, FALSE, FALSE ); + } + else + { + pCode[ ulJumpAddr ] = HB_P_JUMPFALSE; + hb_compNOOPfill( HB_COMP_PARAM->functions.pLast, ulJumpAddr + 3, 1, FALSE, FALSE ); + } } break; @@ -3923,15 +3942,18 @@ static void hb_compOptimizeJumps( HB_COMP_DECL ) lOffset = HB_PCODE_MKINT24( &pCode[ ulJumpAddr + 1 ] ); if( lOffset == 4 ) hb_compNOOPfill( HB_COMP_PARAM->functions.pLast, ulJumpAddr, 4, TRUE, FALSE ); - else if( HB_LIM_INT8( lOffset ) ) + else if( iPass > 0 && HB_LIM_INT16( lOffset ) ) { - pCode[ ulJumpAddr ] = HB_P_JUMPTRUENEAR; - hb_compNOOPfill( HB_COMP_PARAM->functions.pLast, ulJumpAddr + 2, 2, FALSE, FALSE ); - } - else if( HB_LIM_INT16( lOffset ) ) - { - pCode[ ulJumpAddr ] = HB_P_JUMPTRUE; - hb_compNOOPfill( HB_COMP_PARAM->functions.pLast, ulJumpAddr + 3, 1, FALSE, FALSE ); + if( HB_LIM_INT8( lOffset ) ) + { + pCode[ ulJumpAddr ] = HB_P_JUMPTRUENEAR; + hb_compNOOPfill( HB_COMP_PARAM->functions.pLast, ulJumpAddr + 2, 2, FALSE, FALSE ); + } + else + { + pCode[ ulJumpAddr ] = HB_P_JUMPTRUE; + hb_compNOOPfill( HB_COMP_PARAM->functions.pLast, ulJumpAddr + 3, 1, FALSE, FALSE ); + } } break; } @@ -3958,6 +3980,8 @@ static void hb_compOptimizeJumps( HB_COMP_DECL ) if( HB_COMP_PARAM->functions.pLast->iNOOPs == 0 ) { + if( iPass == 0 ) + continue; if( fLineStrip ) hb_compStripFuncLines( HB_COMP_PARAM->functions.pLast ); if( HB_COMP_PARAM->functions.pLast->iNOOPs == 0 ) @@ -4100,6 +4124,11 @@ static void hb_compOptimizeJumps( HB_COMP_DECL ) hb_xfree( HB_COMP_PARAM->functions.pLast->pNOOPs ); HB_COMP_PARAM->functions.pLast->pNOOPs = NULL; HB_COMP_PARAM->functions.pLast->iNOOPs = 0; + + if( iPass == 0 ) + { + hb_compOptimizePCode( HB_COMP_PARAM, HB_COMP_PARAM->functions.pLast ); + } } } @@ -4251,10 +4280,10 @@ void hb_compStaticDefStart( HB_COMP_DECL ) if( HB_COMP_PARAM->fDebugInfo ) { - char * szFile = hb_pp_fileName( HB_COMP_PARAM->pLex->pPP ); - - hb_compGenPCode1( HB_P_MODULENAME, HB_COMP_PARAM ); - hb_compGenPCodeN( ( BYTE * ) szFile, strlen( szFile ) + 1, HB_COMP_PARAM ); + /* uncomment this if you want to always set main module name + not the one where first static variable was declared */ + /* HB_COMP_PARAM->currModule = HB_COMP_PARAM->szFile; */ + hb_compGenModuleName( HB_COMP_PARAM, "" ); } } else @@ -4381,12 +4410,7 @@ void hb_compCodeBlockEnd( HB_COMP_DECL ) if( HB_COMP_PARAM->fDebugInfo ) { - char * szFile = hb_pp_fileName( HB_COMP_PARAM->pLex->pPP ); - - hb_compGenPCode1( HB_P_MODULENAME, HB_COMP_PARAM ); - hb_compGenPCodeN( ( BYTE * ) szFile, strlen( szFile ), HB_COMP_PARAM ); - hb_compGenPCode1( ':', HB_COMP_PARAM ); - hb_compGenPCodeN( ( BYTE * ) pFunc->szName, strlen( pFunc->szName ) + 1, HB_COMP_PARAM ); + hb_compGenModuleName( HB_COMP_PARAM, pFunc->szName ); /* generate the name of referenced local variables */ pVar = pCodeblock->pStatics; @@ -4653,7 +4677,9 @@ static int hb_compCompile( HB_COMP_DECL, char * szPrg, BOOL bSingleFile ) { BOOL bSkipGen = FALSE ; - HB_COMP_PARAM->szFile = szFileName; + HB_COMP_PARAM->szFile = HB_COMP_PARAM->currModule = + hb_compIdentifierNew( HB_COMP_PARAM, szFileName, HB_IDENT_COPY ); + HB_COMP_PARAM->currLine = 1; if( bSingleFile ) { @@ -4679,8 +4705,11 @@ static int hb_compCompile( HB_COMP_DECL, char * szPrg, BOOL bSingleFile ) hb_compFunctionAdd( HB_COMP_PARAM, "", HB_FS_PUBLIC, FUN_PROCEDURE ); } - hb_compparse( HB_COMP_PARAM ); - hb_compCheckUnclosedStru( HB_COMP_PARAM ); + if( !HB_COMP_PARAM->fExit ) + { + hb_compparse( HB_COMP_PARAM ); + hb_compCheckUnclosedStru( HB_COMP_PARAM ); + } if( HB_COMP_PARAM->pFilePpo ) { @@ -5012,6 +5041,10 @@ static int hb_compAutoOpen( HB_COMP_DECL, char * szPrg, BOOL * pbSkipGen, BOOL b /* Minimal Init. */ if( hb_pp_inFile( HB_COMP_PARAM->pLex->pPP, szFileName, FALSE, NULL, FALSE ) ) { + HB_COMP_PARAM->currModule = + hb_compIdentifierNew( HB_COMP_PARAM, szFileName, HB_IDENT_COPY ); + HB_COMP_PARAM->currLine = 1; + if( ! HB_COMP_PARAM->fQuiet ) { if( HB_COMP_PARAM->fPPO ) @@ -5033,16 +5066,16 @@ static int hb_compAutoOpen( HB_COMP_DECL, char * szPrg, BOOL * pbSkipGen, BOOL b hb_compparse( HB_COMP_PARAM ); - if( HB_COMP_PARAM->pFilePpo ) - { - hb_xfree( HB_COMP_PARAM->pFilePpo ); - HB_COMP_PARAM->pFilePpo = NULL; - } - HB_COMP_PARAM->iExitLevel = ( i > HB_COMP_PARAM->iExitLevel ? i : HB_COMP_PARAM->iExitLevel ); HB_COMP_PARAM->fAnyWarning = ( b ? b : HB_COMP_PARAM->fAnyWarning ); } + if( HB_COMP_PARAM->pFilePpo ) + { + hb_xfree( HB_COMP_PARAM->pFilePpo ); + HB_COMP_PARAM->pFilePpo = NULL; + } + if( HB_COMP_PARAM->fAnyWarning ) { if( HB_COMP_PARAM->iExitLevel == HB_EXITLEVEL_SETEXIT ) diff --git a/harbour/source/compiler/harbour.y b/harbour/source/compiler/harbour.y index 4d57468748..cfb293160f 100644 --- a/harbour/source/compiler/harbour.y +++ b/harbour/source/compiler/harbour.y @@ -219,6 +219,7 @@ extern void yyerror( HB_COMP_DECL, char * ); /* parsing error management fun %type LiteralValue LiteralAlias %type CodeBlock CodeBlockAlias %type Logical LogicalAlias +%type DateValue %type SelfValue SelfAlias %type Array ArrayAlias %type ArrayAt ArrayAtAlias @@ -243,7 +244,6 @@ extern void yyerror( HB_COMP_DECL, char * ); /* parsing error management fun %type PostOp %type ForVar ForList ForExpr ForArgs %type CBSTART -%type DateValue %type SendId /* @@ -262,7 +262,7 @@ extern void yyerror( HB_COMP_DECL, char * ); /* parsing error management fun %% -Main : { hb_compLinePush( HB_COMP_PARAM ); } Source { } +Main : Source | /* empty file */ ; @@ -281,16 +281,22 @@ Source : Crlf ; Line : LINE NUM_LONG LITERAL Crlf - { if( $3.dealloc ) { hb_xfree( $3.string ); $3.dealloc = FALSE; } } + { HB_COMP_PARAM->currModule = hb_compIdentifierNew( HB_COMP_PARAM, $3.string, $3.dealloc ? HB_IDENT_FREE : HB_IDENT_STATIC ); + HB_COMP_PARAM->currLine = $2.lNumber; + HB_COMP_PARAM->pLex->fEol = FALSE; + if( $3.dealloc ) { hb_xfree( $3.string ); $3.dealloc = FALSE; } } | LINE NUM_LONG LITERAL '@' LITERAL Crlf /* Xbase++ style */ - { if( $3.dealloc ) { hb_xfree( $3.string ); $3.dealloc = FALSE; } + { HB_COMP_PARAM->currModule = hb_compIdentifierNew( HB_COMP_PARAM, $5.string, $5.dealloc ? HB_IDENT_FREE : HB_IDENT_STATIC ); + HB_COMP_PARAM->currLine = $2.lNumber; + HB_COMP_PARAM->pLex->fEol = FALSE; + if( $3.dealloc ) { hb_xfree( $3.string ); $3.dealloc = FALSE; } if( $5.dealloc ) { hb_xfree( $5.string ); $5.dealloc = FALSE; } } ; -Function : FunScope FUNCTION IdentName { HB_COMP_PARAM->cVarType = ' '; hb_compFunctionAdd( HB_COMP_PARAM, $3, ( HB_SYMBOLSCOPE ) $1, 0 ); } Crlf {} - | FunScope PROCEDURE IdentName { HB_COMP_PARAM->cVarType = ' '; hb_compFunctionAdd( HB_COMP_PARAM, $3, ( HB_SYMBOLSCOPE ) $1, FUN_PROCEDURE ); } Crlf {} - | FunScope FUNCTION IdentName { HB_COMP_PARAM->cVarType = ' '; hb_compFunctionAdd( HB_COMP_PARAM, $3, ( HB_SYMBOLSCOPE ) $1, 0 ); HB_COMP_PARAM->iVarScope = VS_PARAMETER; } '(' Params ')' Crlf {} - | FunScope PROCEDURE IdentName { HB_COMP_PARAM->cVarType = ' '; hb_compFunctionAdd( HB_COMP_PARAM, $3, ( HB_SYMBOLSCOPE ) $1, FUN_PROCEDURE ); HB_COMP_PARAM->iVarScope = VS_PARAMETER;} '(' Params ')' Crlf {} +Function : FunScope FUNCTION IdentName { HB_COMP_PARAM->cVarType = ' '; hb_compFunctionAdd( HB_COMP_PARAM, $3, ( HB_SYMBOLSCOPE ) $1, 0 ); } Crlf + | FunScope PROCEDURE IdentName { HB_COMP_PARAM->cVarType = ' '; hb_compFunctionAdd( HB_COMP_PARAM, $3, ( HB_SYMBOLSCOPE ) $1, FUN_PROCEDURE ); } Crlf + | FunScope FUNCTION IdentName { HB_COMP_PARAM->cVarType = ' '; hb_compFunctionAdd( HB_COMP_PARAM, $3, ( HB_SYMBOLSCOPE ) $1, 0 ); HB_COMP_PARAM->iVarScope = VS_PARAMETER; } '(' Params ')' Crlf + | FunScope PROCEDURE IdentName { HB_COMP_PARAM->cVarType = ' '; hb_compFunctionAdd( HB_COMP_PARAM, $3, ( HB_SYMBOLSCOPE ) $1, FUN_PROCEDURE ); HB_COMP_PARAM->iVarScope = VS_PARAMETER;} '(' Params ')' Crlf ; FunScope : { $$ = HB_FS_PUBLIC; } @@ -340,8 +346,8 @@ ParamList : IdentName AsType { hb_compVariableAdd( HB_COMP_PARAM * hb_compExprGenStatement(). With this solution we don't have to * stop compilation if invalid syntax will be used. */ -Statement : ExecFlow { HB_COMP_PARAM->fDontGenLineNum = TRUE; } CrlfStmnt { } - | WithObject CrlfStmnt { } +Statement : ExecFlow CrlfStmnt + | WithObject CrlfStmnt | IfInline CrlfStmnt { hb_compExprDelete( hb_compExprGenStatement( $1, HB_COMP_PARAM ), HB_COMP_PARAM ); HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_WITH_RETURN; } | FunCall CrlfStmnt { hb_compExprDelete( hb_compExprGenStatement( $1, HB_COMP_PARAM ), HB_COMP_PARAM ); HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_WITH_RETURN; } | AliasExpr CrlfStmnt { hb_compExprDelete( hb_compExprGenStatement( $1, HB_COMP_PARAM ), HB_COMP_PARAM ); HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_WITH_RETURN; } @@ -367,14 +373,16 @@ Statement : ExecFlow { HB_COMP_PARAM->fDontGenLineNum = TRUE; } CrlfStmnt { } | DoProc CrlfStmnt { hb_compExprDelete( hb_compExprGenStatement( $1, HB_COMP_PARAM ), HB_COMP_PARAM ); HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_WITH_RETURN; } | BREAK CrlfStmnt { hb_compGenBreak( HB_COMP_PARAM ); hb_compGenPCode2( HB_P_DOSHORT, 0, HB_COMP_PARAM ); HB_COMP_PARAM->functions.pLast->bFlags |= FUN_BREAK_CODE; } - | BREAK { hb_compLinePushIfInside( HB_COMP_PARAM ); } Expression Crlf { hb_compGenBreak( HB_COMP_PARAM ); hb_compExprDelete( hb_compExprGenPush( $3, HB_COMP_PARAM ), HB_COMP_PARAM ); - hb_compGenPCode2( HB_P_DOSHORT, 1, HB_COMP_PARAM ); - HB_COMP_PARAM->functions.pLast->bFlags |= FUN_BREAK_CODE; - } - | EXIT { HB_COMP_PARAM->fDontGenLineNum = !HB_COMP_PARAM->fDebugInfo; } CrlfStmnt { hb_compLoopExit( HB_COMP_PARAM ); HB_COMP_PARAM->functions.pLast->bFlags |= FUN_BREAK_CODE; } - | LOOP { HB_COMP_PARAM->fDontGenLineNum = !HB_COMP_PARAM->fDebugInfo; } CrlfStmnt { hb_compLoopLoop( HB_COMP_PARAM ); HB_COMP_PARAM->functions.pLast->bFlags |= FUN_BREAK_CODE; } + | BREAK { hb_compLinePushIfInside( HB_COMP_PARAM ); } Expression Crlf + { + hb_compGenBreak( HB_COMP_PARAM ); hb_compExprDelete( hb_compExprGenPush( $3, HB_COMP_PARAM ), HB_COMP_PARAM ); + hb_compGenPCode2( HB_P_DOSHORT, 1, HB_COMP_PARAM ); + HB_COMP_PARAM->functions.pLast->bFlags |= FUN_BREAK_CODE; + } + | EXIT CrlfStmnt { hb_compLoopExit( HB_COMP_PARAM ); HB_COMP_PARAM->functions.pLast->bFlags |= FUN_BREAK_CODE; } + | LOOP CrlfStmnt { hb_compLoopLoop( HB_COMP_PARAM ); HB_COMP_PARAM->functions.pLast->bFlags |= FUN_BREAK_CODE; } | RETURN CrlfStmnt { - if( HB_COMP_PARAM->wSeqCounter ) + if( HB_COMP_PARAM->wSeqCounter ) { hb_compGenError( HB_COMP_PARAM, hb_comp_szErrors, 'E', HB_COMP_ERR_EXIT_IN_SEQUENCE, "RETURN", NULL ); } @@ -383,9 +391,7 @@ Statement : ExecFlow { HB_COMP_PARAM->fDontGenLineNum = TRUE; } CrlfStmnt { } { /* return from a function without a return value */ hb_compGenWarning( HB_COMP_PARAM, hb_comp_szWarnings, 'W', HB_COMP_WARN_NO_RETURN_VALUE, NULL, NULL ); } - HB_COMP_PARAM->functions.pLast->bFlags |= FUN_WITH_RETURN; - HB_COMP_PARAM->fDontGenLineNum = TRUE; - HB_COMP_PARAM->functions.pLast->bFlags |= FUN_BREAK_CODE; + HB_COMP_PARAM->functions.pLast->bFlags |= FUN_WITH_RETURN | FUN_BREAK_CODE; } | RETURN { hb_compLinePushIfInside( HB_COMP_PARAM ); HB_COMP_PARAM->cVarType = ' '; } Expression Crlf @@ -403,9 +409,7 @@ Statement : ExecFlow { HB_COMP_PARAM->fDontGenLineNum = TRUE; } CrlfStmnt { } { /* procedure returns a value */ hb_compGenWarning( HB_COMP_PARAM, hb_comp_szWarnings, 'W', HB_COMP_WARN_PROC_RETURN_VALUE, NULL, NULL ); } - HB_COMP_PARAM->functions.pLast->bFlags |= FUN_WITH_RETURN; - HB_COMP_PARAM->fDontGenLineNum = TRUE; - HB_COMP_PARAM->functions.pLast->bFlags |= FUN_BREAK_CODE; + HB_COMP_PARAM->functions.pLast->bFlags |= FUN_WITH_RETURN | FUN_BREAK_CODE; } | PUBLIC { hb_compLinePushIfInside( HB_COMP_PARAM ); HB_COMP_PARAM->iVarScope = VS_PUBLIC; } ExtVarList @@ -464,28 +468,27 @@ CompTimeStr : LITERAL { CrlfStmnt : { hb_compLinePushIfInside( HB_COMP_PARAM ); } Crlf ; -LineStat : Crlf { $$ = 0; HB_COMP_PARAM->fDontGenLineNum = TRUE; } +LineStat : Crlf { $$ = 0; } | Statement { $$ = 1; } | Declaration { $$ = 1; } | Line { $$ = 1; } | ControlError { $$ = 0; hb_compCheckUnclosedStru( HB_COMP_PARAM ); } - | error { int iLine = hb_pp_line( HB_COMP_PARAM->pLex->pPP ); - if( HB_COMP_PARAM->ilastLineErr && HB_COMP_PARAM->ilastLineErr == iLine ) + | error { if( HB_COMP_PARAM->ilastLineErr && HB_COMP_PARAM->ilastLineErr == HB_COMP_PARAM->currLine ) { yyclearin; } else { yyerrok; - HB_COMP_PARAM->ilastLineErr = iLine; + HB_COMP_PARAM->ilastLineErr = HB_COMP_PARAM->currLine; } } ; -ControlError : FunScopeId FUNCTION IdentName Crlf {} - | FunScopeId FUNCTION IdentName '(' Params ')' Crlf {} - | FunScopeId PROCEDURE IdentName Crlf {} - | FunScopeId PROCEDURE IdentName '(' Params ')' Crlf {} +ControlError : FunScopeId FUNCTION IdentName Crlf + | FunScopeId FUNCTION IdentName '(' Params ')' Crlf + | FunScopeId PROCEDURE IdentName Crlf + | FunScopeId PROCEDURE IdentName '(' Params ')' Crlf ; FunScopeId : @@ -1289,14 +1292,14 @@ DecData : IdentName { HB_COMP_PARAM->pLastMethod = hb_compMethodAdd( HB_COMP_ } ; -DecList : /* Nothing */ {} +DecList : /* Nothing */ | FormalList | OptList | FormalList ',' OptList ; -DummyArgList : DummyArgument {} - | DummyArgList ',' DummyArgument {} +DummyArgList : DummyArgument + | DummyArgList ',' DummyArgument ; DummyArgument : EmptyExpression { hb_compExprDelete( $1, HB_COMP_PARAM ); } @@ -1360,7 +1363,7 @@ IfElse : ELSE Crlf { HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_BREAK_C EmptyStats ; -IfElseIf : ELSEIF { HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_BREAK_CODE; hb_compLinePush( HB_COMP_PARAM ); } +IfElseIf : ELSEIF { HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_BREAK_CODE; hb_compLinePush( HB_COMP_PARAM ); } Expression Crlf { hb_compExprDelete( hb_compExprGenPush( $3, HB_COMP_PARAM ), HB_COMP_PARAM ); $$ = hb_compGenJumpFalse( 0, HB_COMP_PARAM ); @@ -1370,7 +1373,7 @@ IfElseIf : ELSEIF { HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_BREAK_CODE hb_compGenJumpHere( $5, HB_COMP_PARAM ); } - | IfElseIf ELSEIF { HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_BREAK_CODE; hb_compLinePush( HB_COMP_PARAM ); } + | IfElseIf ELSEIF { HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_BREAK_CODE; hb_compLinePush( HB_COMP_PARAM ); } Expression Crlf { hb_compExprDelete( hb_compExprGenPush( $4, HB_COMP_PARAM ), HB_COMP_PARAM ); $$ = hb_compGenJumpFalse( 0, HB_COMP_PARAM ); @@ -1421,7 +1424,7 @@ EndCase : ENDCASE DoCaseStart : DOCASE { ++HB_COMP_PARAM->wCaseCounter; hb_compLinePushIfDebugger( HB_COMP_PARAM );} Crlf ; -DoCaseBegin : DoCaseStart { } +DoCaseBegin : DoCaseStart | DoCaseStart Statements { if( $2 > 0 ) { @@ -1491,6 +1494,7 @@ EndWhile : END { HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_BREAK_CODE; ForNext : FOR LValue ForAssign Expression /* 1 2 3 4 */ { hb_compLinePushIfInside( HB_COMP_PARAM ); + $1 = HB_COMP_PARAM->currLine; hb_compDebugStart(); ++HB_COMP_PARAM->wForCounter; /* 5 */ $$ = hb_compExprGenStatement( hb_compExprAssign( $2, $4, HB_COMP_PARAM ), HB_COMP_PARAM ); @@ -1512,6 +1516,8 @@ ForNext : FOR LValue ForAssign Expression /* 1 2 3 4 */ { short iStep, iLocal; + HB_COMP_PARAM->currLine = $1; + hb_compLinePush( HB_COMP_PARAM ); hb_compLoopHere( HB_COMP_PARAM ); if( $8 ) @@ -1579,7 +1585,7 @@ StepExpr : /* default step expression */ { $$ = NULL; } | STEP Expression { $$ = hb_compExprReduce( $2, HB_COMP_PARAM ); } ; -ForStatements : EmptyStats NEXT { hb_compLinePush( HB_COMP_PARAM ); +ForStatements : EmptyStats NEXT { hb_compLinePush( HB_COMP_PARAM ); if( HB_COMP_PARAM->wForCounter ) --HB_COMP_PARAM->wForCounter; } | EmptyStats NEXT IdentName { hb_compLinePush( HB_COMP_PARAM ); @@ -1687,7 +1693,7 @@ SwitchStart : DOSWITCH } ; -SwitchBegin : SwitchStart { } +SwitchBegin : SwitchStart | SwitchStart Statements { if( $2 > 0 ) { @@ -1699,7 +1705,7 @@ SwitchBegin : SwitchStart { } SwitchCases : CASE Expression { hb_compSwitchAdd( HB_COMP_PARAM, $2 ); hb_compLinePush( HB_COMP_PARAM ); } Crlf EmptyStats - | SwitchCases CASE Expression { hb_compSwitchAdd( HB_COMP_PARAM, $3 ); hb_compLinePush( HB_COMP_PARAM ); }Crlf + | SwitchCases CASE Expression { hb_compSwitchAdd( HB_COMP_PARAM, $3 ); hb_compLinePush( HB_COMP_PARAM ); } Crlf EmptyStats | SwitchDefault @@ -1856,15 +1862,15 @@ WithObject : WITHOBJECT Expression Crlf } EmptyStatements END - { if( HB_COMP_PARAM->wWithObjectCnt ) + { if( HB_COMP_PARAM->wWithObjectCnt ) --HB_COMP_PARAM->wWithObjectCnt; hb_compGenPCode1( HB_P_WITHOBJECTEND, HB_COMP_PARAM ); } | WITHOBJECT Expression Crlf END { hb_compExprDelete( $2, HB_COMP_PARAM ); } ; -Crlf : '\n' { HB_COMP_PARAM->fError = FALSE; } - | ';' { HB_COMP_PARAM->fDontGenLineNum = TRUE; } +Crlf : '\n' { HB_COMP_PARAM->fError = FALSE; } + | ';' ; %% diff --git a/harbour/source/compiler/harbour.yyc b/harbour/source/compiler/harbour.yyc index cd0fd7d22c..35f35e6c5f 100644 --- a/harbour/source/compiler/harbour.yyc +++ b/harbour/source/compiler/harbour.yyc @@ -682,18 +682,18 @@ union yyalloc #endif /* YYFINAL -- State number of the termination state. */ -#define YYFINAL 3 +#define YYFINAL 284 /* YYLAST -- Last index in YYTABLE. */ #define YYLAST 8401 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 127 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 249 +#define YYNNTS 245 /* YYNRULES -- Number of rules. */ -#define YYNRULES 630 +#define YYNRULES 626 /* YYNRULES -- Number of states. */ -#define YYNSTATES 1007 +#define YYNSTATES 1003 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 @@ -748,329 +748,327 @@ static const yytype_uint8 yytranslate[] = YYRHS. */ static const yytype_uint16 yyprhs[] = { - 0, 0, 3, 4, 7, 8, 10, 12, 14, 16, - 18, 21, 24, 27, 30, 33, 36, 40, 45, 52, - 53, 59, 60, 66, 67, 76, 77, 86, 87, 89, - 91, 93, 94, 96, 98, 102, 103, 105, 107, 109, - 111, 113, 115, 117, 120, 122, 124, 126, 128, 130, - 132, 134, 136, 138, 140, 143, 146, 151, 152, 156, - 159, 162, 165, 168, 171, 174, 177, 180, 183, 186, - 189, 192, 195, 198, 201, 202, 207, 208, 212, 213, - 217, 220, 221, 226, 227, 228, 234, 235, 236, 242, - 244, 246, 248, 252, 253, 258, 263, 265, 269, 270, - 273, 275, 277, 279, 281, 283, 285, 290, 298, 303, - 311, 312, 314, 316, 318, 320, 323, 325, 329, 331, + 0, 0, 3, 5, 6, 8, 10, 12, 14, 16, + 19, 22, 25, 28, 31, 34, 38, 43, 50, 51, + 57, 58, 64, 65, 74, 75, 84, 85, 87, 89, + 91, 92, 94, 96, 100, 101, 103, 105, 107, 109, + 111, 113, 115, 118, 120, 122, 124, 126, 128, 130, + 132, 134, 136, 138, 141, 144, 149, 152, 155, 158, + 161, 164, 167, 170, 173, 176, 179, 182, 185, 188, + 191, 194, 197, 198, 203, 206, 209, 212, 213, 218, + 219, 220, 226, 227, 228, 234, 236, 238, 240, 244, + 245, 250, 255, 257, 261, 262, 265, 267, 269, 271, + 273, 275, 277, 282, 290, 295, 303, 304, 306, 308, + 310, 312, 315, 317, 321, 323, 325, 327, 329, 331, 333, 335, 337, 339, 341, 343, 345, 347, 349, 351, - 353, 355, 357, 359, 361, 363, 365, 367, 369, 372, - 375, 377, 380, 382, 385, 388, 390, 392, 395, 397, - 400, 401, 406, 409, 412, 415, 417, 420, 422, 424, - 427, 430, 433, 436, 440, 443, 446, 449, 452, 455, - 458, 461, 464, 467, 470, 473, 476, 479, 481, 483, - 485, 488, 491, 494, 497, 500, 503, 506, 509, 512, - 515, 518, 521, 524, 527, 530, 533, 536, 539, 542, - 545, 548, 551, 554, 557, 560, 563, 566, 569, 572, - 575, 578, 581, 584, 587, 590, 593, 596, 599, 602, - 605, 608, 611, 614, 615, 621, 623, 624, 630, 631, - 637, 640, 643, 645, 649, 651, 653, 656, 659, 662, - 665, 668, 670, 672, 676, 680, 683, 685, 687, 689, - 694, 697, 698, 704, 707, 709, 711, 713, 715, 717, - 719, 721, 722, 726, 728, 730, 732, 734, 736, 738, - 740, 742, 743, 747, 749, 751, 752, 756, 758, 759, - 763, 765, 767, 769, 771, 773, 775, 777, 779, 781, - 783, 785, 786, 790, 791, 795, 797, 799, 801, 802, + 353, 355, 357, 359, 361, 364, 367, 369, 372, 374, + 377, 380, 382, 384, 387, 389, 392, 393, 398, 401, + 404, 407, 409, 412, 414, 416, 419, 422, 425, 428, + 432, 435, 438, 441, 444, 447, 450, 453, 456, 459, + 462, 465, 468, 471, 473, 475, 477, 480, 483, 486, + 489, 492, 495, 498, 501, 504, 507, 510, 513, 516, + 519, 522, 525, 528, 531, 534, 537, 540, 543, 546, + 549, 552, 555, 558, 561, 564, 567, 570, 573, 576, + 579, 582, 585, 588, 591, 594, 597, 600, 603, 606, + 607, 613, 615, 616, 622, 623, 629, 632, 635, 637, + 641, 643, 645, 648, 651, 654, 657, 660, 662, 664, + 668, 672, 675, 677, 679, 681, 686, 689, 690, 696, + 699, 701, 703, 705, 707, 709, 711, 713, 714, 718, + 720, 722, 724, 726, 728, 730, 732, 734, 735, 739, + 741, 743, 744, 748, 750, 751, 755, 757, 759, 761, + 763, 765, 767, 769, 771, 773, 775, 777, 778, 782, + 783, 787, 789, 791, 793, 794, 796, 798, 800, 802, 804, 806, 808, 810, 812, 814, 816, 818, 820, 822, 824, 826, 828, 830, 832, 834, 836, 838, 840, 842, - 844, 846, 848, 850, 852, 854, 856, 858, 860, 862, - 865, 868, 871, 874, 877, 880, 884, 888, 892, 896, - 900, 904, 908, 912, 916, 920, 924, 928, 932, 936, - 940, 944, 948, 952, 956, 960, 964, 968, 972, 976, - 980, 984, 988, 990, 992, 994, 996, 998, 1000, 1004, - 1008, 1012, 1016, 1020, 1024, 1028, 1032, 1036, 1040, 1044, - 1048, 1052, 1056, 1060, 1064, 1068, 1071, 1074, 1078, 1083, - 1085, 1089, 1090, 1097, 1099, 1103, 1104, 1106, 1108, 1112, - 1115, 1120, 1123, 1126, 1129, 1132, 1134, 1136, 1138, 1140, - 1143, 1146, 1150, 1154, 1158, 1162, 1171, 1179, 1187, 1194, - 1197, 1198, 1203, 1204, 1209, 1210, 1215, 1217, 1221, 1223, - 1227, 1229, 1232, 1237, 1240, 1244, 1245, 1249, 1250, 1251, - 1258, 1261, 1265, 1268, 1271, 1275, 1280, 1281, 1286, 1289, - 1294, 1298, 1299, 1304, 1307, 1312, 1313, 1322, 1323, 1329, - 1333, 1337, 1338, 1346, 1348, 1352, 1354, 1357, 1359, 1362, - 1363, 1370, 1371, 1375, 1376, 1378, 1380, 1384, 1386, 1390, - 1392, 1395, 1399, 1405, 1410, 1416, 1424, 1428, 1433, 1440, - 1446, 1453, 1462, 1464, 1466, 1468, 1470, 1472, 1474, 1476, - 1479, 1483, 1487, 1492, 1494, 1497, 1498, 1500, 1501, 1502, - 1509, 1511, 1513, 1515, 1517, 1519, 1520, 1525, 1526, 1527, - 1534, 1535, 1536, 1544, 1546, 1548, 1552, 1556, 1559, 1564, - 1566, 1568, 1569, 1573, 1575, 1578, 1579, 1580, 1587, 1588, - 1589, 1597, 1598, 1599, 1605, 1606, 1612, 1613, 1614, 1622, - 1624, 1626, 1628, 1629, 1630, 1631, 1644, 1646, 1648, 1649, - 1652, 1655, 1659, 1662, 1666, 1668, 1670, 1672, 1676, 1679, - 1681, 1683, 1687, 1688, 1689, 1690, 1701, 1702, 1704, 1705, - 1710, 1713, 1715, 1716, 1721, 1723, 1726, 1727, 1733, 1734, - 1741, 1743, 1746, 1747, 1748, 1754, 1755, 1756, 1757, 1758, - 1769, 1770, 1774, 1776, 1777, 1781, 1785, 1787, 1790, 1792, - 1794, 1795, 1800, 1801, 1805, 1806, 1809, 1811, 1814, 1816, - 1819, 1823, 1825, 1827, 1829, 1831, 1833, 1834, 1841, 1846, - 1848 + 844, 846, 848, 850, 852, 854, 857, 860, 863, 866, + 869, 872, 876, 880, 884, 888, 892, 896, 900, 904, + 908, 912, 916, 920, 924, 928, 932, 936, 940, 944, + 948, 952, 956, 960, 964, 968, 972, 976, 980, 982, + 984, 986, 988, 990, 992, 996, 1000, 1004, 1008, 1012, + 1016, 1020, 1024, 1028, 1032, 1036, 1040, 1044, 1048, 1052, + 1056, 1060, 1063, 1066, 1070, 1075, 1077, 1081, 1082, 1089, + 1091, 1095, 1096, 1098, 1100, 1104, 1107, 1112, 1115, 1118, + 1121, 1124, 1126, 1128, 1130, 1132, 1135, 1138, 1142, 1146, + 1150, 1154, 1163, 1171, 1179, 1186, 1189, 1190, 1195, 1196, + 1201, 1202, 1207, 1209, 1213, 1215, 1219, 1221, 1224, 1229, + 1232, 1236, 1237, 1241, 1242, 1243, 1250, 1253, 1257, 1260, + 1263, 1267, 1272, 1273, 1278, 1281, 1286, 1290, 1291, 1296, + 1299, 1304, 1305, 1314, 1315, 1321, 1325, 1329, 1330, 1338, + 1340, 1344, 1346, 1349, 1351, 1354, 1355, 1362, 1363, 1367, + 1368, 1370, 1372, 1376, 1378, 1382, 1384, 1387, 1391, 1397, + 1402, 1408, 1416, 1420, 1425, 1432, 1438, 1445, 1454, 1456, + 1458, 1460, 1462, 1464, 1466, 1468, 1471, 1475, 1479, 1484, + 1486, 1489, 1490, 1492, 1493, 1494, 1501, 1503, 1505, 1507, + 1509, 1511, 1512, 1517, 1518, 1519, 1526, 1527, 1528, 1536, + 1538, 1540, 1544, 1548, 1551, 1556, 1558, 1560, 1561, 1565, + 1567, 1570, 1571, 1572, 1579, 1580, 1581, 1589, 1590, 1591, + 1597, 1598, 1604, 1605, 1606, 1614, 1616, 1618, 1620, 1621, + 1622, 1623, 1636, 1638, 1640, 1641, 1644, 1647, 1651, 1654, + 1658, 1660, 1662, 1664, 1668, 1671, 1673, 1675, 1679, 1680, + 1681, 1682, 1693, 1694, 1696, 1697, 1702, 1705, 1707, 1708, + 1713, 1715, 1718, 1719, 1725, 1726, 1733, 1735, 1738, 1739, + 1740, 1746, 1747, 1748, 1749, 1750, 1761, 1762, 1766, 1768, + 1769, 1773, 1777, 1779, 1782, 1784, 1786, 1787, 1792, 1793, + 1797, 1798, 1801, 1803, 1806, 1808, 1811, 1815, 1817, 1819, + 1821, 1823, 1825, 1826, 1833, 1838, 1840 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ static const yytype_int16 yyrhs[] = { - 128, 0, -1, -1, 129, 130, -1, -1, 375, -1, - 278, -1, 132, -1, 143, -1, 131, -1, 1, 375, - -1, 130, 375, -1, 130, 278, -1, 130, 132, -1, - 130, 143, -1, 130, 131, -1, 130, 1, 375, -1, - 69, 10, 19, 375, -1, 69, 10, 19, 115, 19, - 375, -1, -1, 137, 3, 162, 133, 375, -1, -1, - 137, 4, 162, 134, 375, -1, -1, 137, 3, 162, - 135, 119, 138, 120, 375, -1, -1, 137, 4, 162, - 136, 119, 138, 120, 375, -1, -1, 12, -1, 24, - -1, 25, -1, -1, 101, -1, 142, -1, 142, 118, - 101, -1, -1, 140, -1, 78, -1, 74, -1, 76, - -1, 77, -1, 73, -1, 79, -1, 75, 162, -1, - 80, -1, 141, -1, 72, -1, 91, -1, 87, -1, - 89, -1, 90, -1, 85, -1, 86, -1, 92, -1, - 88, 162, -1, 162, 139, -1, 142, 118, 162, 139, - -1, -1, 293, 144, 155, -1, 373, 155, -1, 257, - 155, -1, 195, 155, -1, 190, 155, -1, 208, 155, - -1, 182, 155, -1, 184, 155, -1, 251, 155, -1, - 225, 155, -1, 224, 155, -1, 235, 155, -1, 228, - 155, -1, 227, 155, -1, 367, 155, -1, 62, 155, - -1, -1, 62, 145, 216, 375, -1, -1, 25, 146, - 155, -1, -1, 43, 147, 155, -1, 6, 155, -1, - -1, 6, 148, 216, 375, -1, -1, -1, 29, 149, - 264, 150, 375, -1, -1, -1, 60, 151, 264, 152, - 375, -1, 259, -1, 272, -1, 275, -1, 23, 161, - 375, -1, -1, 22, 162, 153, 375, -1, 93, 154, - 120, 375, -1, 19, -1, 19, 107, 19, -1, -1, - 156, 375, -1, 375, -1, 143, -1, 278, -1, 131, - -1, 158, -1, 1, -1, 159, 3, 162, 375, -1, - 159, 3, 162, 119, 138, 120, 375, -1, 159, 4, - 162, 375, -1, 159, 4, 162, 119, 138, 120, 375, - -1, -1, 12, -1, 24, -1, 25, -1, 157, -1, - 160, 157, -1, 162, -1, 161, 118, 162, -1, 5, - -1, 47, -1, 46, -1, 43, -1, 25, -1, 51, - -1, 82, -1, 23, -1, 22, -1, 11, -1, 41, - -1, 12, -1, 60, -1, 29, -1, 52, -1, 93, - -1, 97, -1, 8, -1, 10, -1, 100, -1, 10, - 35, -1, 8, 35, -1, 7, -1, 166, 35, -1, - 19, -1, 168, 35, -1, 242, 35, -1, 20, -1, - 21, -1, 171, 35, -1, 68, -1, 173, 35, -1, - -1, 121, 176, 241, 122, -1, 175, 35, -1, 175, - 239, -1, 178, 35, -1, 162, -1, 162, 35, -1, - 70, -1, 71, -1, 182, 35, -1, 114, 251, -1, - 184, 35, -1, 50, 35, -1, 50, 35, 186, -1, - 186, 181, -1, 186, 165, -1, 186, 252, -1, 186, - 183, -1, 186, 185, -1, 186, 167, -1, 186, 169, - -1, 186, 172, -1, 186, 170, -1, 186, 174, -1, - 186, 177, -1, 186, 179, -1, 186, 258, -1, 162, - -1, 182, -1, 184, -1, 165, 188, -1, 183, 188, - -1, 185, 188, -1, 252, 188, -1, 167, 188, -1, - 169, 188, -1, 172, 188, -1, 170, 188, -1, 174, - 188, -1, 177, 188, -1, 179, 188, -1, 192, 188, - -1, 258, 188, -1, 199, 188, -1, 207, 188, -1, - 210, 188, -1, 181, 188, -1, 186, 188, -1, 187, - 188, -1, 165, 251, -1, 181, 251, -1, 183, 251, - -1, 185, 251, -1, 252, 251, -1, 186, 251, -1, - 163, 239, -1, 166, 239, -1, 164, 239, -1, 168, - 239, -1, 242, 239, -1, 171, 239, -1, 173, 239, - -1, 180, 239, -1, 189, 239, -1, 190, 239, -1, - 182, 239, -1, 184, 239, -1, 204, 239, -1, 208, - 239, -1, 195, 239, -1, 257, 239, -1, 251, 239, - -1, 191, 35, -1, -1, 162, 119, 194, 200, 120, - -1, 193, -1, -1, 182, 119, 196, 200, 120, -1, - -1, 184, 119, 197, 200, 120, -1, 115, 193, -1, - 195, 35, -1, 203, -1, 200, 118, 203, -1, 220, - -1, 202, -1, 115, 162, -1, 115, 182, -1, 115, - 189, -1, 115, 204, -1, 115, 191, -1, 101, -1, - 201, -1, 222, 123, 205, -1, 206, 123, 205, -1, - 123, 205, -1, 162, -1, 182, -1, 184, -1, 119, - 115, 162, 120, -1, 204, 35, -1, -1, 204, 119, - 209, 200, 120, -1, 208, 35, -1, 163, -1, 166, - -1, 164, -1, 168, -1, 242, -1, 171, -1, 173, - -1, -1, 173, 212, 140, -1, 175, -1, 178, -1, - 189, -1, 190, -1, 182, -1, 184, -1, 191, -1, - 195, -1, -1, 195, 213, 140, -1, 257, -1, 204, - -1, -1, 204, 214, 140, -1, 208, -1, -1, 208, - 215, 140, -1, 227, -1, 235, -1, 224, -1, 225, - -1, 226, -1, 236, -1, 237, -1, 238, -1, 211, - -1, 180, -1, 251, -1, -1, 180, 217, 140, -1, - -1, 251, 218, 140, -1, 198, -1, 101, -1, 216, - -1, -1, 216, -1, 162, -1, 189, -1, 182, -1, - 184, -1, 204, -1, 191, -1, 251, -1, 163, -1, - 166, -1, 164, -1, 168, -1, 242, -1, 171, -1, - 173, -1, 175, -1, 178, -1, 189, -1, 190, -1, - 182, -1, 184, -1, 180, -1, 191, -1, 251, -1, - 195, -1, 257, -1, 204, -1, 208, -1, 33, -1, - 34, -1, 222, 223, -1, 33, 216, -1, 34, 216, - -1, 28, 216, -1, 108, 216, -1, 107, 216, -1, - 163, 9, 216, -1, 166, 9, 216, -1, 164, 9, - 216, -1, 168, 9, 216, -1, 242, 9, 216, -1, - 171, 9, 216, -1, 173, 9, 216, -1, 175, 9, - 216, -1, 178, 9, 216, -1, 189, 9, 216, -1, - 190, 9, 216, -1, 182, 9, 216, -1, 184, 9, - 216, -1, 180, 9, 216, -1, 191, 9, 216, -1, - 251, 9, 216, -1, 257, 9, 216, -1, 195, 9, - 216, -1, 204, 9, 216, -1, 208, 9, 216, -1, - 222, 103, 216, -1, 222, 53, 216, -1, 222, 54, - 216, -1, 222, 55, 216, -1, 222, 56, 216, -1, - 222, 59, 216, -1, 222, 58, 216, -1, 229, -1, - 230, -1, 231, -1, 232, -1, 233, -1, 234, -1, - 216, 107, 216, -1, 216, 108, 216, -1, 216, 109, - 216, -1, 216, 110, 216, -1, 216, 111, 216, -1, - 216, 57, 216, -1, 216, 26, 216, -1, 216, 27, - 216, -1, 216, 30, 216, -1, 216, 104, 216, -1, - 216, 105, 216, -1, 216, 48, 216, -1, 216, 49, - 216, -1, 216, 31, 216, -1, 216, 32, 216, -1, - 216, 106, 216, -1, 216, 103, 216, -1, 240, 124, - -1, 125, 219, -1, 240, 118, 219, -1, 240, 124, - 125, 219, -1, 203, -1, 241, 118, 203, -1, -1, - 94, 243, 245, 126, 244, 122, -1, 216, -1, 244, - 118, 216, -1, -1, 101, -1, 246, -1, 246, 118, - 101, -1, 162, 139, -1, 246, 118, 162, 139, -1, - 253, 120, -1, 254, 120, -1, 255, 120, -1, 256, - 120, -1, 247, -1, 248, -1, 249, -1, 250, -1, - 251, 35, -1, 119, 216, -1, 253, 118, 216, -1, - 254, 118, 216, -1, 255, 118, 216, -1, 256, 118, - 216, -1, 13, 119, 216, 118, 201, 118, 201, 120, - -1, 14, 253, 118, 216, 118, 201, 120, -1, 14, - 253, 118, 202, 118, 201, 120, -1, 14, 253, 118, - 118, 201, 120, -1, 257, 35, -1, -1, 11, 260, - 263, 375, -1, -1, 12, 261, 263, 375, -1, -1, - 52, 262, 277, 375, -1, 266, -1, 263, 118, 266, - -1, 265, -1, 264, 118, 265, -1, 266, -1, 182, - 139, -1, 182, 139, 9, 216, -1, 182, 270, -1, - 182, 270, 141, -1, -1, 162, 139, 267, -1, -1, - -1, 162, 139, 268, 9, 269, 216, -1, 162, 270, - -1, 162, 270, 141, -1, 271, 124, -1, 125, 216, - -1, 271, 118, 216, -1, 271, 124, 125, 216, -1, - -1, 50, 273, 274, 375, -1, 162, 139, -1, 274, - 118, 162, 139, -1, 274, 51, 162, -1, -1, 41, - 276, 277, 375, -1, 162, 139, -1, 277, 118, 162, - 139, -1, -1, 81, 162, 119, 279, 288, 120, 139, - 375, -1, -1, 81, 162, 280, 283, 375, -1, 83, - 162, 375, -1, 84, 284, 375, -1, -1, 84, 121, - 139, 281, 282, 122, 375, -1, 286, -1, 282, 118, - 286, -1, 284, -1, 283, 284, -1, 286, -1, 283, - 286, -1, -1, 162, 119, 285, 288, 120, 139, -1, - -1, 162, 287, 139, -1, -1, 291, -1, 292, -1, - 291, 118, 292, -1, 290, -1, 289, 118, 290, -1, - 220, -1, 162, 139, -1, 115, 162, 139, -1, 115, - 162, 119, 289, 120, -1, 291, 118, 162, 139, -1, - 291, 118, 115, 162, 139, -1, 291, 118, 115, 162, - 119, 289, 120, -1, 82, 162, 139, -1, 82, 115, - 162, 139, -1, 82, 115, 162, 119, 289, 120, -1, - 292, 118, 82, 162, 139, -1, 292, 118, 82, 115, - 162, 139, -1, 292, 118, 82, 115, 162, 119, 289, - 120, -1, 294, -1, 309, -1, 323, -1, 328, -1, - 356, -1, 339, -1, 344, -1, 297, 308, -1, 297, - 301, 308, -1, 297, 303, 308, -1, 297, 303, 301, - 308, -1, 157, -1, 295, 157, -1, -1, 295, -1, - -1, -1, 14, 300, 298, 375, 299, 296, -1, 211, - -1, 180, -1, 247, -1, 248, -1, 250, -1, -1, - 15, 375, 302, 296, -1, -1, -1, 16, 304, 216, - 375, 305, 296, -1, -1, -1, 303, 16, 306, 216, - 375, 307, 296, -1, 18, -1, 17, -1, 313, 314, - 310, -1, 313, 319, 310, -1, 313, 310, -1, 313, - 314, 319, 310, -1, 39, -1, 17, -1, -1, 36, - 312, 375, -1, 311, -1, 311, 160, -1, -1, -1, - 37, 315, 216, 375, 316, 296, -1, -1, -1, 314, - 37, 317, 216, 375, 318, 296, -1, -1, -1, 38, - 320, 375, 321, 296, -1, -1, 319, 38, 322, 375, - 296, -1, -1, -1, 326, 216, 375, 324, 296, 325, - 327, -1, 42, -1, 17, -1, 40, -1, -1, -1, - -1, 44, 221, 332, 216, 329, 46, 216, 333, 330, - 375, 331, 334, -1, 103, -1, 9, -1, -1, 47, - 216, -1, 296, 45, -1, 296, 45, 162, -1, 296, - 17, -1, 296, 17, 162, -1, 162, -1, 189, -1, - 335, -1, 336, 118, 335, -1, 115, 162, -1, 216, - -1, 337, -1, 338, 118, 337, -1, -1, -1, -1, - 96, 336, 51, 338, 340, 343, 341, 375, 342, 334, - -1, -1, 97, -1, -1, 349, 345, 350, 346, -1, - 349, 346, -1, 17, -1, -1, 98, 348, 216, 375, - -1, 347, -1, 347, 160, -1, -1, 37, 216, 351, - 375, 296, -1, -1, 350, 37, 216, 352, 375, 296, - -1, 353, -1, 350, 353, -1, -1, -1, 38, 354, - 375, 355, 296, -1, -1, -1, -1, -1, 61, 357, - 375, 296, 358, 363, 359, 361, 360, 17, -1, -1, - 362, 375, 296, -1, 65, -1, -1, 364, 375, 296, - -1, 365, 375, 296, -1, 63, -1, 64, 162, -1, - 182, -1, 184, -1, -1, 66, 366, 368, 370, -1, - -1, 95, 369, 370, -1, -1, 67, 371, -1, 118, - -1, 118, 372, -1, 372, -1, 371, 118, -1, 371, - 118, 372, -1, 162, -1, 202, -1, 198, -1, 211, - -1, 251, -1, -1, 99, 216, 375, 374, 295, 17, - -1, 99, 216, 375, 17, -1, 116, -1, 117, -1 + 128, 0, -1, 129, -1, -1, 371, -1, 274, -1, + 131, -1, 142, -1, 130, -1, 1, 371, -1, 129, + 371, -1, 129, 274, -1, 129, 131, -1, 129, 142, + -1, 129, 130, -1, 129, 1, 371, -1, 69, 10, + 19, 371, -1, 69, 10, 19, 115, 19, 371, -1, + -1, 136, 3, 158, 132, 371, -1, -1, 136, 4, + 158, 133, 371, -1, -1, 136, 3, 158, 134, 119, + 137, 120, 371, -1, -1, 136, 4, 158, 135, 119, + 137, 120, 371, -1, -1, 12, -1, 24, -1, 25, + -1, -1, 101, -1, 141, -1, 141, 118, 101, -1, + -1, 139, -1, 78, -1, 74, -1, 76, -1, 77, + -1, 73, -1, 79, -1, 75, 158, -1, 80, -1, + 140, -1, 72, -1, 91, -1, 87, -1, 89, -1, + 90, -1, 85, -1, 86, -1, 92, -1, 88, 158, + -1, 158, 138, -1, 141, 118, 158, 138, -1, 289, + 151, -1, 369, 151, -1, 253, 151, -1, 191, 151, + -1, 186, 151, -1, 204, 151, -1, 178, 151, -1, + 180, 151, -1, 247, 151, -1, 221, 151, -1, 220, + 151, -1, 231, 151, -1, 224, 151, -1, 223, 151, + -1, 363, 151, -1, 62, 151, -1, -1, 62, 143, + 212, 371, -1, 25, 151, -1, 43, 151, -1, 6, + 151, -1, -1, 6, 144, 212, 371, -1, -1, -1, + 29, 145, 260, 146, 371, -1, -1, -1, 60, 147, + 260, 148, 371, -1, 255, -1, 268, -1, 271, -1, + 23, 157, 371, -1, -1, 22, 158, 149, 371, -1, + 93, 150, 120, 371, -1, 19, -1, 19, 107, 19, + -1, -1, 152, 371, -1, 371, -1, 142, -1, 274, + -1, 130, -1, 154, -1, 1, -1, 155, 3, 158, + 371, -1, 155, 3, 158, 119, 137, 120, 371, -1, + 155, 4, 158, 371, -1, 155, 4, 158, 119, 137, + 120, 371, -1, -1, 12, -1, 24, -1, 25, -1, + 153, -1, 156, 153, -1, 158, -1, 157, 118, 158, + -1, 5, -1, 47, -1, 46, -1, 43, -1, 25, + -1, 51, -1, 82, -1, 23, -1, 22, -1, 11, + -1, 41, -1, 12, -1, 60, -1, 29, -1, 52, + -1, 93, -1, 97, -1, 8, -1, 10, -1, 100, + -1, 10, 35, -1, 8, 35, -1, 7, -1, 162, + 35, -1, 19, -1, 164, 35, -1, 238, 35, -1, + 20, -1, 21, -1, 167, 35, -1, 68, -1, 169, + 35, -1, -1, 121, 172, 237, 122, -1, 171, 35, + -1, 171, 235, -1, 174, 35, -1, 158, -1, 158, + 35, -1, 70, -1, 71, -1, 178, 35, -1, 114, + 247, -1, 180, 35, -1, 50, 35, -1, 50, 35, + 182, -1, 182, 177, -1, 182, 161, -1, 182, 248, + -1, 182, 179, -1, 182, 181, -1, 182, 163, -1, + 182, 165, -1, 182, 168, -1, 182, 166, -1, 182, + 170, -1, 182, 173, -1, 182, 175, -1, 182, 254, + -1, 158, -1, 178, -1, 180, -1, 161, 184, -1, + 179, 184, -1, 181, 184, -1, 248, 184, -1, 163, + 184, -1, 165, 184, -1, 168, 184, -1, 166, 184, + -1, 170, 184, -1, 173, 184, -1, 175, 184, -1, + 188, 184, -1, 254, 184, -1, 195, 184, -1, 203, + 184, -1, 206, 184, -1, 177, 184, -1, 182, 184, + -1, 183, 184, -1, 161, 247, -1, 177, 247, -1, + 179, 247, -1, 181, 247, -1, 248, 247, -1, 182, + 247, -1, 159, 235, -1, 162, 235, -1, 160, 235, + -1, 164, 235, -1, 238, 235, -1, 167, 235, -1, + 169, 235, -1, 176, 235, -1, 185, 235, -1, 186, + 235, -1, 178, 235, -1, 180, 235, -1, 200, 235, + -1, 204, 235, -1, 191, 235, -1, 253, 235, -1, + 247, 235, -1, 187, 35, -1, -1, 158, 119, 190, + 196, 120, -1, 189, -1, -1, 178, 119, 192, 196, + 120, -1, -1, 180, 119, 193, 196, 120, -1, 115, + 189, -1, 191, 35, -1, 199, -1, 196, 118, 199, + -1, 216, -1, 198, -1, 115, 158, -1, 115, 178, + -1, 115, 185, -1, 115, 200, -1, 115, 187, -1, + 101, -1, 197, -1, 218, 123, 201, -1, 202, 123, + 201, -1, 123, 201, -1, 158, -1, 178, -1, 180, + -1, 119, 115, 158, 120, -1, 200, 35, -1, -1, + 200, 119, 205, 196, 120, -1, 204, 35, -1, 159, + -1, 162, -1, 160, -1, 164, -1, 238, -1, 167, + -1, 169, -1, -1, 169, 208, 139, -1, 171, -1, + 174, -1, 185, -1, 186, -1, 178, -1, 180, -1, + 187, -1, 191, -1, -1, 191, 209, 139, -1, 253, + -1, 200, -1, -1, 200, 210, 139, -1, 204, -1, + -1, 204, 211, 139, -1, 223, -1, 231, -1, 220, + -1, 221, -1, 222, -1, 232, -1, 233, -1, 234, + -1, 207, -1, 176, -1, 247, -1, -1, 176, 213, + 139, -1, -1, 247, 214, 139, -1, 194, -1, 101, + -1, 212, -1, -1, 212, -1, 158, -1, 185, -1, + 178, -1, 180, -1, 200, -1, 187, -1, 247, -1, + 159, -1, 162, -1, 160, -1, 164, -1, 238, -1, + 167, -1, 169, -1, 171, -1, 174, -1, 185, -1, + 186, -1, 178, -1, 180, -1, 176, -1, 187, -1, + 247, -1, 191, -1, 253, -1, 200, -1, 204, -1, + 33, -1, 34, -1, 218, 219, -1, 33, 212, -1, + 34, 212, -1, 28, 212, -1, 108, 212, -1, 107, + 212, -1, 159, 9, 212, -1, 162, 9, 212, -1, + 160, 9, 212, -1, 164, 9, 212, -1, 238, 9, + 212, -1, 167, 9, 212, -1, 169, 9, 212, -1, + 171, 9, 212, -1, 174, 9, 212, -1, 185, 9, + 212, -1, 186, 9, 212, -1, 178, 9, 212, -1, + 180, 9, 212, -1, 176, 9, 212, -1, 187, 9, + 212, -1, 247, 9, 212, -1, 253, 9, 212, -1, + 191, 9, 212, -1, 200, 9, 212, -1, 204, 9, + 212, -1, 218, 103, 212, -1, 218, 53, 212, -1, + 218, 54, 212, -1, 218, 55, 212, -1, 218, 56, + 212, -1, 218, 59, 212, -1, 218, 58, 212, -1, + 225, -1, 226, -1, 227, -1, 228, -1, 229, -1, + 230, -1, 212, 107, 212, -1, 212, 108, 212, -1, + 212, 109, 212, -1, 212, 110, 212, -1, 212, 111, + 212, -1, 212, 57, 212, -1, 212, 26, 212, -1, + 212, 27, 212, -1, 212, 30, 212, -1, 212, 104, + 212, -1, 212, 105, 212, -1, 212, 48, 212, -1, + 212, 49, 212, -1, 212, 31, 212, -1, 212, 32, + 212, -1, 212, 106, 212, -1, 212, 103, 212, -1, + 236, 124, -1, 125, 215, -1, 236, 118, 215, -1, + 236, 124, 125, 215, -1, 199, -1, 237, 118, 199, + -1, -1, 94, 239, 241, 126, 240, 122, -1, 212, + -1, 240, 118, 212, -1, -1, 101, -1, 242, -1, + 242, 118, 101, -1, 158, 138, -1, 242, 118, 158, + 138, -1, 249, 120, -1, 250, 120, -1, 251, 120, + -1, 252, 120, -1, 243, -1, 244, -1, 245, -1, + 246, -1, 247, 35, -1, 119, 212, -1, 249, 118, + 212, -1, 250, 118, 212, -1, 251, 118, 212, -1, + 252, 118, 212, -1, 13, 119, 212, 118, 197, 118, + 197, 120, -1, 14, 249, 118, 212, 118, 197, 120, + -1, 14, 249, 118, 198, 118, 197, 120, -1, 14, + 249, 118, 118, 197, 120, -1, 253, 35, -1, -1, + 11, 256, 259, 371, -1, -1, 12, 257, 259, 371, + -1, -1, 52, 258, 273, 371, -1, 262, -1, 259, + 118, 262, -1, 261, -1, 260, 118, 261, -1, 262, + -1, 178, 138, -1, 178, 138, 9, 212, -1, 178, + 266, -1, 178, 266, 140, -1, -1, 158, 138, 263, + -1, -1, -1, 158, 138, 264, 9, 265, 212, -1, + 158, 266, -1, 158, 266, 140, -1, 267, 124, -1, + 125, 212, -1, 267, 118, 212, -1, 267, 124, 125, + 212, -1, -1, 50, 269, 270, 371, -1, 158, 138, + -1, 270, 118, 158, 138, -1, 270, 51, 158, -1, + -1, 41, 272, 273, 371, -1, 158, 138, -1, 273, + 118, 158, 138, -1, -1, 81, 158, 119, 275, 284, + 120, 138, 371, -1, -1, 81, 158, 276, 279, 371, + -1, 83, 158, 371, -1, 84, 280, 371, -1, -1, + 84, 121, 138, 277, 278, 122, 371, -1, 282, -1, + 278, 118, 282, -1, 280, -1, 279, 280, -1, 282, + -1, 279, 282, -1, -1, 158, 119, 281, 284, 120, + 138, -1, -1, 158, 283, 138, -1, -1, 287, -1, + 288, -1, 287, 118, 288, -1, 286, -1, 285, 118, + 286, -1, 216, -1, 158, 138, -1, 115, 158, 138, + -1, 115, 158, 119, 285, 120, -1, 287, 118, 158, + 138, -1, 287, 118, 115, 158, 138, -1, 287, 118, + 115, 158, 119, 285, 120, -1, 82, 158, 138, -1, + 82, 115, 158, 138, -1, 82, 115, 158, 119, 285, + 120, -1, 288, 118, 82, 158, 138, -1, 288, 118, + 82, 115, 158, 138, -1, 288, 118, 82, 115, 158, + 119, 285, 120, -1, 290, -1, 305, -1, 319, -1, + 324, -1, 352, -1, 335, -1, 340, -1, 293, 304, + -1, 293, 297, 304, -1, 293, 299, 304, -1, 293, + 299, 297, 304, -1, 153, -1, 291, 153, -1, -1, + 291, -1, -1, -1, 14, 296, 294, 371, 295, 292, + -1, 207, -1, 176, -1, 243, -1, 244, -1, 246, + -1, -1, 15, 371, 298, 292, -1, -1, -1, 16, + 300, 212, 371, 301, 292, -1, -1, -1, 299, 16, + 302, 212, 371, 303, 292, -1, 18, -1, 17, -1, + 309, 310, 306, -1, 309, 315, 306, -1, 309, 306, + -1, 309, 310, 315, 306, -1, 39, -1, 17, -1, + -1, 36, 308, 371, -1, 307, -1, 307, 156, -1, + -1, -1, 37, 311, 212, 371, 312, 292, -1, -1, + -1, 310, 37, 313, 212, 371, 314, 292, -1, -1, + -1, 38, 316, 371, 317, 292, -1, -1, 315, 38, + 318, 371, 292, -1, -1, -1, 322, 212, 371, 320, + 292, 321, 323, -1, 42, -1, 17, -1, 40, -1, + -1, -1, -1, 44, 217, 328, 212, 325, 46, 212, + 329, 326, 371, 327, 330, -1, 103, -1, 9, -1, + -1, 47, 212, -1, 292, 45, -1, 292, 45, 158, + -1, 292, 17, -1, 292, 17, 158, -1, 158, -1, + 185, -1, 331, -1, 332, 118, 331, -1, 115, 158, + -1, 212, -1, 333, -1, 334, 118, 333, -1, -1, + -1, -1, 96, 332, 51, 334, 336, 339, 337, 371, + 338, 330, -1, -1, 97, -1, -1, 345, 341, 346, + 342, -1, 345, 342, -1, 17, -1, -1, 98, 344, + 212, 371, -1, 343, -1, 343, 156, -1, -1, 37, + 212, 347, 371, 292, -1, -1, 346, 37, 212, 348, + 371, 292, -1, 349, -1, 346, 349, -1, -1, -1, + 38, 350, 371, 351, 292, -1, -1, -1, -1, -1, + 61, 353, 371, 292, 354, 359, 355, 357, 356, 17, + -1, -1, 358, 371, 292, -1, 65, -1, -1, 360, + 371, 292, -1, 361, 371, 292, -1, 63, -1, 64, + 158, -1, 178, -1, 180, -1, -1, 66, 362, 364, + 366, -1, -1, 95, 365, 366, -1, -1, 67, 367, + -1, 118, -1, 118, 368, -1, 368, -1, 367, 118, + -1, 367, 118, 368, -1, 158, -1, 198, -1, 194, + -1, 207, -1, 247, -1, -1, 99, 212, 371, 370, + 291, 17, -1, 99, 212, 371, 17, -1, 116, -1, + 117, -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 265, 265, 265, 266, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 280, 283, 285, 290, - 290, 291, 291, 292, 292, 293, 293, 296, 297, 298, - 299, 302, 303, 304, 305, 308, 309, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 323, 324, 325, 326, - 327, 328, 329, 330, 331, 334, 335, 343, 343, 344, - 345, 346, 347, 348, 349, 355, 361, 362, 363, 364, - 365, 366, 367, 368, 370, 370, 374, 374, 375, 375, - 376, 390, 390, 410, 412, 410, 416, 418, 416, 422, - 423, 424, 425, 426, 426, 440, 443, 451, 464, 464, - 467, 468, 469, 470, 471, 472, 485, 486, 487, 488, - 491, 492, 493, 494, 497, 498, 501, 502, 505, 506, - 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, - 517, 518, 519, 520, 521, 526, 527, 530, 538, 539, - 544, 547, 552, 558, 563, 568, 569, 572, 577, 580, - 585, 585, 588, 593, 596, 601, 604, 609, 610, 613, - 618, 621, 628, 629, 634, 635, 636, 637, 638, 639, - 640, 641, 642, 643, 644, 645, 646, 649, 650, 651, - 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, - 664, 665, 666, 667, 668, 669, 670, 671, 672, 681, - 682, 683, 684, 685, 686, 691, 692, 693, 694, 695, - 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, - 706, 707, 710, 713, 713, 716, 717, 717, 718, 718, - 722, 725, 728, 729, 732, 733, 736, 737, 738, 739, - 740, 743, 744, 749, 750, 751, 757, 758, 759, 762, - 765, 770, 770, 773, 782, 783, 784, 785, 786, 787, - 788, 789, 789, 790, 791, 792, 793, 794, 795, 796, - 797, 798, 798, 799, 800, 801, 801, 802, 803, 803, - 804, 805, 806, 807, 808, 809, 810, 811, 814, 815, - 816, 817, 817, 818, 818, 819, 822, 823, 826, 827, - 830, 831, 832, 833, 834, 835, 836, 843, 844, 845, - 846, 847, 848, 849, 850, 851, 852, 853, 854, 855, - 856, 857, 858, 859, 860, 861, 862, 868, 869, 872, - 875, 876, 879, 880, 881, 884, 885, 886, 887, 888, - 889, 890, 891, 892, 893, 894, 895, 896, 897, 898, - 899, 900, 901, 902, 903, 906, 909, 912, 915, 918, - 921, 924, 927, 928, 929, 930, 931, 932, 935, 936, - 937, 938, 939, 940, 943, 944, 947, 948, 949, 950, - 951, 952, 953, 954, 955, 958, 964, 965, 966, 969, - 970, 973, 973, 979, 980, 985, 986, 987, 988, 991, - 992, 1002, 1005, 1008, 1011, 1014, 1015, 1016, 1017, 1020, - 1029, 1032, 1035, 1038, 1039, 1042, 1044, 1046, 1048, 1052, - 1055, 1055, 1057, 1057, 1059, 1059, 1066, 1067, 1070, 1071, - 1079, 1080, 1082, 1086, 1093, 1102, 1102, 1116, 1119, 1116, - 1144, 1145, 1151, 1154, 1155, 1156, 1160, 1160, 1163, 1164, - 1165, 1168, 1168, 1171, 1172, 1175, 1175, 1198, 1198, 1199, - 1200, 1201, 1201, 1204, 1205, 1208, 1209, 1210, 1211, 1214, - 1214, 1236, 1236, 1292, 1293, 1294, 1295, 1298, 1299, 1302, - 1305, 1306, 1307, 1308, 1309, 1310, 1313, 1314, 1315, 1316, - 1317, 1318, 1321, 1322, 1323, 1324, 1325, 1326, 1327, 1330, - 1331, 1332, 1333, 1336, 1337, 1340, 1341, 1345, 1347, 1344, - 1352, 1353, 1354, 1355, 1356, 1359, 1359, 1363, 1365, 1363, - 1373, 1375, 1373, 1384, 1387, 1392, 1396, 1400, 1403, 1409, - 1414, 1421, 1421, 1424, 1425, 1433, 1434, 1433, 1445, 1446, - 1445, 1458, 1458, 1458, 1460, 1460, 1465, 1470, 1464, 1484, - 1487, 1488, 1492, 1503, 1508, 1491, 1574, 1575, 1578, 1579, - 1582, 1585, 1588, 1591, 1596, 1597, 1600, 1601, 1604, 1605, - 1608, 1609, 1614, 1620, 1629, 1613, 1649, 1650, 1654, 1653, - 1666, 1673, 1681, 1680, 1690, 1691, 1699, 1699, 1702, 1702, - 1705, 1707, 1710, 1710, 1710, 1715, 1722, 1730, 1740, 1714, - 1764, 1765, 1768, 1776, 1777, 1778, 1781, 1792, 1810, 1811, - 1815, 1814, 1822, 1821, 1832, 1833, 1836, 1837, 1838, 1839, - 1840, 1843, 1844, 1845, 1846, 1847, 1851, 1850, 1863, 1866, - 1867 + 0, 265, 265, 266, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 283, 288, 296, 296, + 297, 297, 298, 298, 299, 299, 302, 303, 304, 305, + 308, 309, 310, 311, 314, 315, 318, 319, 320, 321, + 322, 323, 324, 325, 326, 329, 330, 331, 332, 333, + 334, 335, 336, 337, 340, 341, 349, 350, 351, 352, + 353, 354, 355, 361, 367, 368, 369, 370, 371, 372, + 373, 374, 376, 376, 382, 383, 384, 396, 396, 414, + 416, 414, 420, 422, 420, 426, 427, 428, 429, 430, + 430, 444, 447, 455, 468, 468, 471, 472, 473, 474, + 475, 476, 488, 489, 490, 491, 494, 495, 496, 497, + 500, 501, 504, 505, 508, 509, 510, 511, 512, 513, + 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, + 524, 529, 530, 533, 541, 542, 547, 550, 555, 561, + 566, 571, 572, 575, 580, 583, 588, 588, 591, 596, + 599, 604, 607, 612, 613, 616, 621, 624, 631, 632, + 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, + 647, 648, 649, 652, 653, 654, 657, 658, 659, 660, + 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, + 671, 672, 673, 674, 675, 684, 685, 686, 687, 688, + 689, 694, 695, 696, 697, 698, 699, 700, 701, 702, + 703, 704, 705, 706, 707, 708, 709, 710, 713, 716, + 716, 719, 720, 720, 721, 721, 725, 728, 731, 732, + 735, 736, 739, 740, 741, 742, 743, 746, 747, 752, + 753, 754, 760, 761, 762, 765, 768, 773, 773, 776, + 785, 786, 787, 788, 789, 790, 791, 792, 792, 793, + 794, 795, 796, 797, 798, 799, 800, 801, 801, 802, + 803, 804, 804, 805, 806, 806, 807, 808, 809, 810, + 811, 812, 813, 814, 817, 818, 819, 820, 820, 821, + 821, 822, 825, 826, 829, 830, 833, 834, 835, 836, + 837, 838, 839, 846, 847, 848, 849, 850, 851, 852, + 853, 854, 855, 856, 857, 858, 859, 860, 861, 862, + 863, 864, 865, 871, 872, 875, 878, 879, 882, 883, + 884, 887, 888, 889, 890, 891, 892, 893, 894, 895, + 896, 897, 898, 899, 900, 901, 902, 903, 904, 905, + 906, 909, 912, 915, 918, 921, 924, 927, 930, 931, + 932, 933, 934, 935, 938, 939, 940, 941, 942, 943, + 946, 947, 950, 951, 952, 953, 954, 955, 956, 957, + 958, 961, 967, 968, 969, 972, 973, 976, 976, 982, + 983, 988, 989, 990, 991, 994, 995, 1005, 1008, 1011, + 1014, 1017, 1018, 1019, 1020, 1023, 1032, 1035, 1038, 1041, + 1042, 1045, 1047, 1049, 1051, 1055, 1058, 1058, 1060, 1060, + 1062, 1062, 1069, 1070, 1073, 1074, 1082, 1083, 1085, 1089, + 1096, 1105, 1105, 1119, 1122, 1119, 1147, 1148, 1154, 1157, + 1158, 1159, 1163, 1163, 1166, 1167, 1168, 1171, 1171, 1174, + 1175, 1178, 1178, 1201, 1201, 1202, 1203, 1204, 1204, 1207, + 1208, 1211, 1212, 1213, 1214, 1217, 1217, 1239, 1239, 1295, + 1296, 1297, 1298, 1301, 1302, 1305, 1308, 1309, 1310, 1311, + 1312, 1313, 1316, 1317, 1318, 1319, 1320, 1321, 1324, 1325, + 1326, 1327, 1328, 1329, 1330, 1333, 1334, 1335, 1336, 1339, + 1340, 1343, 1344, 1348, 1350, 1347, 1355, 1356, 1357, 1358, + 1359, 1362, 1362, 1366, 1368, 1366, 1376, 1378, 1376, 1387, + 1390, 1395, 1399, 1403, 1406, 1412, 1417, 1424, 1424, 1427, + 1428, 1436, 1437, 1436, 1448, 1449, 1448, 1461, 1461, 1461, + 1463, 1463, 1468, 1473, 1467, 1487, 1490, 1491, 1495, 1507, + 1512, 1494, 1580, 1581, 1584, 1585, 1588, 1591, 1594, 1597, + 1602, 1603, 1606, 1607, 1610, 1611, 1614, 1615, 1620, 1626, + 1635, 1619, 1655, 1656, 1660, 1659, 1672, 1679, 1687, 1686, + 1696, 1697, 1705, 1705, 1708, 1708, 1711, 1713, 1716, 1716, + 1716, 1721, 1728, 1736, 1746, 1720, 1770, 1771, 1774, 1782, + 1783, 1784, 1787, 1798, 1816, 1817, 1821, 1820, 1828, 1827, + 1838, 1839, 1842, 1843, 1844, 1845, 1846, 1849, 1850, 1851, + 1852, 1853, 1857, 1856, 1869, 1872, 1873 }; #endif @@ -1098,47 +1096,46 @@ static const char *const yytname[] = "NUM_DATE", "EPSILON", "POST", "'='", "'<'", "'>'", "'$'", "'+'", "'-'", "'*'", "'/'", "'%'", "UNARY", "PRE", "'&'", "'@'", "'\\n'", "';'", "','", "'('", "')'", "'{'", "'}'", "':'", "']'", "'['", "'|'", "$accept", - "Main", "@1", "Source", "Line", "Function", "@2", "@3", "@4", "@5", - "FunScope", "Params", "AsType", "StrongType", "AsArray", "ParamList", - "Statement", "@6", "@7", "@8", "@9", "@10", "@11", "@12", "@13", "@14", - "@15", "CompTimeStr", "CrlfStmnt", "@16", "LineStat", "ControlError", - "FunScopeId", "Statements", "ExtList", "IdentName", "NumValue", - "DateValue", "NumAlias", "NilValue", "NilAlias", "LiteralValue", - "LiteralAlias", "CodeBlockAlias", "Logical", "LogicalAlias", "SelfValue", - "SelfAlias", "Array", "@17", "ArrayAlias", "ArrayAt", "ArrayAtAlias", - "Variable", "VarAlias", "MacroVar", "MacroVarAlias", "MacroExpr", - "MacroExprAlias", "FieldAlias", "FieldVarAlias", "AliasId", "AliasVar", - "AliasExpr", "VariableAt", "VariableAtAlias", "FunIdentCall", "@18", - "FunCall", "@19", "@20", "FunRef", "FunCallAlias", "ArgList", "Argument", - "RefArgument", "ExtArgument", "ObjectData", "SendId", "ObjectRef", - "ObjectDataAlias", "ObjectMethod", "@21", "ObjectMethodAlias", - "SimpleExpression", "@22", "@23", "@24", "@25", "Expression", "@26", - "@27", "ExtExpression", "EmptyExpression", "LValue", "LeftExpression", - "PostOp", "ExprPostOp", "ExprPreOp", "ExprUnary", "ExprAssign", - "ExprEqual", "ExprPlusEq", "ExprMinusEq", "ExprMultEq", "ExprDivEq", - "ExprModEq", "ExprExpEq", "ExprOperEq", "ExprMath", "ExprBool", - "ExprRelation", "ArrayIndex", "IndexList", "ElemList", "CodeBlock", - "@28", "BlockExpList", "BlockVars", "BlockVarList", "PareExpList1", - "PareExpList2", "PareExpList3", "PareExpListN", "PareExpList", - "PareExpListAlias", "ExpList1", "ExpList2", "ExpList3", "ExpList", - "IfInline", "IfInlineAlias", "VarDefs", "@29", "@30", "@31", "VarList", - "ExtVarList", "ExtVarDef", "VarDef", "@32", "@33", "@34", "DimList", - "DimIndex", "FieldsDef", "@35", "FieldList", "MemvarDef", "@36", - "MemvarList", "Declaration", "@37", "@38", "@39", "DecDataList", - "ClassInfo", "DecMethod", "@40", "DecData", "@41", "DecList", - "DummyArgList", "DummyArgument", "FormalList", "OptList", "ExecFlow", - "IfEndif", "EmptyStatements", "EmptyStats", "IfBegin", "@42", "@43", - "IfExpression", "IfElse", "@44", "IfElseIf", "@45", "@46", "@47", "@48", - "EndIf", "DoCase", "EndCase", "DoCaseStart", "@49", "DoCaseBegin", - "Cases", "@50", "@51", "@52", "@53", "Otherwise", "@54", "@55", "@56", - "DoWhile", "@57", "@58", "WhileBegin", "EndWhile", "ForNext", "@59", - "@60", "@61", "ForAssign", "StepExpr", "ForStatements", "ForVar", - "ForList", "ForExpr", "ForArgs", "ForEach", "@62", "@63", "@64", - "Descend", "DoSwitch", "@65", "EndSwitch", "SwitchStart", "@66", - "SwitchBegin", "SwitchCases", "@67", "@68", "SwitchDefault", "@69", - "@70", "BeginSeq", "@71", "@72", "@73", "@74", "AlwaysSeq", "Always", - "RecoverSeq", "RecoverEmpty", "RecoverUsing", "DoName", "DoProc", "@75", - "@76", "DoArgs", "DoArgList", "DoArgument", "WithObject", "@77", "Crlf", 0 + "Main", "Source", "Line", "Function", "@1", "@2", "@3", "@4", "FunScope", + "Params", "AsType", "StrongType", "AsArray", "ParamList", "Statement", + "@5", "@6", "@7", "@8", "@9", "@10", "@11", "CompTimeStr", "CrlfStmnt", + "@12", "LineStat", "ControlError", "FunScopeId", "Statements", "ExtList", + "IdentName", "NumValue", "DateValue", "NumAlias", "NilValue", "NilAlias", + "LiteralValue", "LiteralAlias", "CodeBlockAlias", "Logical", + "LogicalAlias", "SelfValue", "SelfAlias", "Array", "@13", "ArrayAlias", + "ArrayAt", "ArrayAtAlias", "Variable", "VarAlias", "MacroVar", + "MacroVarAlias", "MacroExpr", "MacroExprAlias", "FieldAlias", + "FieldVarAlias", "AliasId", "AliasVar", "AliasExpr", "VariableAt", + "VariableAtAlias", "FunIdentCall", "@14", "FunCall", "@15", "@16", + "FunRef", "FunCallAlias", "ArgList", "Argument", "RefArgument", + "ExtArgument", "ObjectData", "SendId", "ObjectRef", "ObjectDataAlias", + "ObjectMethod", "@17", "ObjectMethodAlias", "SimpleExpression", "@18", + "@19", "@20", "@21", "Expression", "@22", "@23", "ExtExpression", + "EmptyExpression", "LValue", "LeftExpression", "PostOp", "ExprPostOp", + "ExprPreOp", "ExprUnary", "ExprAssign", "ExprEqual", "ExprPlusEq", + "ExprMinusEq", "ExprMultEq", "ExprDivEq", "ExprModEq", "ExprExpEq", + "ExprOperEq", "ExprMath", "ExprBool", "ExprRelation", "ArrayIndex", + "IndexList", "ElemList", "CodeBlock", "@24", "BlockExpList", "BlockVars", + "BlockVarList", "PareExpList1", "PareExpList2", "PareExpList3", + "PareExpListN", "PareExpList", "PareExpListAlias", "ExpList1", + "ExpList2", "ExpList3", "ExpList", "IfInline", "IfInlineAlias", + "VarDefs", "@25", "@26", "@27", "VarList", "ExtVarList", "ExtVarDef", + "VarDef", "@28", "@29", "@30", "DimList", "DimIndex", "FieldsDef", "@31", + "FieldList", "MemvarDef", "@32", "MemvarList", "Declaration", "@33", + "@34", "@35", "DecDataList", "ClassInfo", "DecMethod", "@36", "DecData", + "@37", "DecList", "DummyArgList", "DummyArgument", "FormalList", + "OptList", "ExecFlow", "IfEndif", "EmptyStatements", "EmptyStats", + "IfBegin", "@38", "@39", "IfExpression", "IfElse", "@40", "IfElseIf", + "@41", "@42", "@43", "@44", "EndIf", "DoCase", "EndCase", "DoCaseStart", + "@45", "DoCaseBegin", "Cases", "@46", "@47", "@48", "@49", "Otherwise", + "@50", "@51", "@52", "DoWhile", "@53", "@54", "WhileBegin", "EndWhile", + "ForNext", "@55", "@56", "@57", "ForAssign", "StepExpr", "ForStatements", + "ForVar", "ForList", "ForExpr", "ForArgs", "ForEach", "@58", "@59", + "@60", "Descend", "DoSwitch", "@61", "EndSwitch", "SwitchStart", "@62", + "SwitchBegin", "SwitchCases", "@63", "@64", "SwitchDefault", "@65", + "@66", "BeginSeq", "@67", "@68", "@69", "@70", "AlwaysSeq", "Always", + "RecoverSeq", "RecoverEmpty", "RecoverUsing", "DoName", "DoProc", "@71", + "@72", "DoArgs", "DoArgList", "DoArgument", "WithObject", "@73", "Crlf", 0 }; #endif @@ -1166,139 +1163,137 @@ static const yytype_uint16 yytoknum[] = /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint16 yyr1[] = { - 0, 127, 129, 128, 128, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 131, 131, 133, - 132, 134, 132, 135, 132, 136, 132, 137, 137, 137, - 137, 138, 138, 138, 138, 139, 139, 140, 140, 140, - 140, 140, 140, 140, 140, 140, 141, 141, 141, 141, - 141, 141, 141, 141, 141, 142, 142, 144, 143, 143, - 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, - 143, 143, 143, 143, 145, 143, 146, 143, 147, 143, - 143, 148, 143, 149, 150, 143, 151, 152, 143, 143, - 143, 143, 143, 153, 143, 143, 154, 154, 156, 155, - 157, 157, 157, 157, 157, 157, 158, 158, 158, 158, - 159, 159, 159, 159, 160, 160, 161, 161, 162, 162, - 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, - 162, 162, 162, 162, 162, 163, 163, 164, 165, 165, - 166, 167, 168, 169, 170, 171, 171, 172, 173, 174, - 176, 175, 177, 178, 179, 180, 181, 182, 182, 183, - 184, 185, 186, 186, 187, 187, 187, 187, 187, 187, - 187, 187, 187, 187, 187, 187, 187, 188, 188, 188, - 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, - 189, 189, 189, 189, 189, 189, 189, 189, 189, 190, - 190, 190, 190, 190, 190, 191, 191, 191, 191, 191, - 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, - 191, 191, 192, 194, 193, 195, 196, 195, 197, 195, - 198, 199, 200, 200, 201, 201, 202, 202, 202, 202, - 202, 203, 203, 204, 204, 204, 205, 205, 205, 206, - 207, 209, 208, 210, 211, 211, 211, 211, 211, 211, - 211, 212, 211, 211, 211, 211, 211, 211, 211, 211, - 211, 213, 211, 211, 211, 214, 211, 211, 215, 211, - 211, 211, 211, 211, 211, 211, 211, 211, 216, 216, - 216, 217, 216, 218, 216, 216, 219, 219, 220, 220, - 221, 221, 221, 221, 221, 221, 221, 222, 222, 222, - 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, - 222, 222, 222, 222, 222, 222, 222, 223, 223, 224, - 225, 225, 226, 226, 226, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 235, 235, 235, 235, 235, 236, 236, - 236, 236, 236, 236, 237, 237, 238, 238, 238, 238, - 238, 238, 238, 238, 238, 239, 240, 240, 240, 241, - 241, 243, 242, 244, 244, 245, 245, 245, 245, 246, - 246, 247, 248, 249, 250, 251, 251, 251, 251, 252, - 253, 254, 255, 256, 256, 257, 257, 257, 257, 258, - 260, 259, 261, 259, 262, 259, 263, 263, 264, 264, - 265, 265, 265, 265, 265, 267, 266, 268, 269, 266, - 266, 266, 270, 271, 271, 271, 273, 272, 274, 274, - 274, 276, 275, 277, 277, 279, 278, 280, 278, 278, - 278, 281, 278, 282, 282, 283, 283, 283, 283, 285, - 284, 287, 286, 288, 288, 288, 288, 289, 289, 290, - 291, 291, 291, 291, 291, 291, 292, 292, 292, 292, - 292, 292, 293, 293, 293, 293, 293, 293, 293, 294, - 294, 294, 294, 295, 295, 296, 296, 298, 299, 297, - 300, 300, 300, 300, 300, 302, 301, 304, 305, 303, - 306, 307, 303, 308, 308, 309, 309, 309, 309, 310, - 310, 312, 311, 313, 313, 315, 316, 314, 317, 318, - 314, 320, 321, 319, 322, 319, 324, 325, 323, 326, - 327, 327, 329, 330, 331, 328, 332, 332, 333, 333, - 334, 334, 334, 334, 335, 335, 336, 336, 337, 337, - 338, 338, 340, 341, 342, 339, 343, 343, 345, 344, - 344, 346, 348, 347, 349, 349, 351, 350, 352, 350, - 350, 350, 354, 355, 353, 357, 358, 359, 360, 356, - 361, 361, 362, 363, 363, 363, 364, 365, 366, 366, - 368, 367, 369, 367, 370, 370, 371, 371, 371, 371, - 371, 372, 372, 372, 372, 372, 374, 373, 373, 375, - 375 + 0, 127, 128, 128, 129, 129, 129, 129, 129, 129, + 129, 129, 129, 129, 129, 129, 130, 130, 132, 131, + 133, 131, 134, 131, 135, 131, 136, 136, 136, 136, + 137, 137, 137, 137, 138, 138, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 141, 141, 142, 142, 142, 142, + 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, + 142, 142, 143, 142, 142, 142, 142, 144, 142, 145, + 146, 142, 147, 148, 142, 142, 142, 142, 142, 149, + 142, 142, 150, 150, 152, 151, 153, 153, 153, 153, + 153, 153, 154, 154, 154, 154, 155, 155, 155, 155, + 156, 156, 157, 157, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 159, 159, 160, 161, 161, 162, 163, 164, 165, + 166, 167, 167, 168, 169, 170, 172, 171, 173, 174, + 175, 176, 177, 178, 178, 179, 180, 181, 182, 182, + 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, + 183, 183, 183, 184, 184, 184, 185, 185, 185, 185, + 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, + 185, 185, 185, 185, 185, 186, 186, 186, 186, 186, + 186, 187, 187, 187, 187, 187, 187, 187, 187, 187, + 187, 187, 187, 187, 187, 187, 187, 187, 188, 190, + 189, 191, 192, 191, 193, 191, 194, 195, 196, 196, + 197, 197, 198, 198, 198, 198, 198, 199, 199, 200, + 200, 200, 201, 201, 201, 202, 203, 205, 204, 206, + 207, 207, 207, 207, 207, 207, 207, 208, 207, 207, + 207, 207, 207, 207, 207, 207, 207, 209, 207, 207, + 207, 210, 207, 207, 211, 207, 207, 207, 207, 207, + 207, 207, 207, 207, 212, 212, 212, 213, 212, 214, + 212, 212, 215, 215, 216, 216, 217, 217, 217, 217, + 217, 217, 217, 218, 218, 218, 218, 218, 218, 218, + 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, + 218, 218, 218, 219, 219, 220, 221, 221, 222, 222, + 222, 223, 223, 223, 223, 223, 223, 223, 223, 223, + 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, + 223, 224, 225, 226, 227, 228, 229, 230, 231, 231, + 231, 231, 231, 231, 232, 232, 232, 232, 232, 232, + 233, 233, 234, 234, 234, 234, 234, 234, 234, 234, + 234, 235, 236, 236, 236, 237, 237, 239, 238, 240, + 240, 241, 241, 241, 241, 242, 242, 243, 244, 245, + 246, 247, 247, 247, 247, 248, 249, 250, 251, 252, + 252, 253, 253, 253, 253, 254, 256, 255, 257, 255, + 258, 255, 259, 259, 260, 260, 261, 261, 261, 261, + 261, 263, 262, 264, 265, 262, 262, 262, 266, 267, + 267, 267, 269, 268, 270, 270, 270, 272, 271, 273, + 273, 275, 274, 276, 274, 274, 274, 277, 274, 278, + 278, 279, 279, 279, 279, 281, 280, 283, 282, 284, + 284, 284, 284, 285, 285, 286, 287, 287, 287, 287, + 287, 287, 288, 288, 288, 288, 288, 288, 289, 289, + 289, 289, 289, 289, 289, 290, 290, 290, 290, 291, + 291, 292, 292, 294, 295, 293, 296, 296, 296, 296, + 296, 298, 297, 300, 301, 299, 302, 303, 299, 304, + 304, 305, 305, 305, 305, 306, 306, 308, 307, 309, + 309, 311, 312, 310, 313, 314, 310, 316, 317, 315, + 318, 315, 320, 321, 319, 322, 323, 323, 325, 326, + 327, 324, 328, 328, 329, 329, 330, 330, 330, 330, + 331, 331, 332, 332, 333, 333, 334, 334, 336, 337, + 338, 335, 339, 339, 341, 340, 340, 342, 344, 343, + 345, 345, 347, 346, 348, 346, 346, 346, 350, 351, + 349, 353, 354, 355, 356, 352, 357, 357, 358, 359, + 359, 359, 360, 361, 362, 362, 364, 363, 365, 363, + 366, 366, 367, 367, 367, 367, 367, 368, 368, 368, + 368, 368, 370, 369, 369, 371, 371 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ static const yytype_uint8 yyr2[] = { - 0, 2, 0, 2, 0, 1, 1, 1, 1, 1, - 2, 2, 2, 2, 2, 2, 3, 4, 6, 0, - 5, 0, 5, 0, 8, 0, 8, 0, 1, 1, - 1, 0, 1, 1, 3, 0, 1, 1, 1, 1, - 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 2, 2, 4, 0, 3, 2, + 0, 2, 1, 0, 1, 1, 1, 1, 1, 2, + 2, 2, 2, 2, 2, 3, 4, 6, 0, 5, + 0, 5, 0, 8, 0, 8, 0, 1, 1, 1, + 0, 1, 1, 3, 0, 1, 1, 1, 1, 1, + 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 0, 4, 0, 3, 0, 3, - 2, 0, 4, 0, 0, 5, 0, 0, 5, 1, - 1, 1, 3, 0, 4, 4, 1, 3, 0, 2, - 1, 1, 1, 1, 1, 1, 4, 7, 4, 7, - 0, 1, 1, 1, 1, 2, 1, 3, 1, 1, + 2, 2, 0, 4, 2, 2, 2, 0, 4, 0, + 0, 5, 0, 0, 5, 1, 1, 1, 3, 0, + 4, 4, 1, 3, 0, 2, 1, 1, 1, 1, + 1, 1, 4, 7, 4, 7, 0, 1, 1, 1, + 1, 2, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, - 1, 2, 1, 2, 2, 1, 1, 2, 1, 2, - 0, 4, 2, 2, 2, 1, 2, 1, 1, 2, - 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, + 1, 1, 1, 1, 2, 2, 1, 2, 1, 2, + 2, 1, 1, 2, 1, 2, 0, 4, 2, 2, + 2, 1, 2, 1, 1, 2, 2, 2, 2, 3, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 0, 5, 1, 0, 5, 0, 5, - 2, 2, 1, 3, 1, 1, 2, 2, 2, 2, - 2, 1, 1, 3, 3, 2, 1, 1, 1, 4, - 2, 0, 5, 2, 1, 1, 1, 1, 1, 1, - 1, 0, 3, 1, 1, 1, 1, 1, 1, 1, - 1, 0, 3, 1, 1, 0, 3, 1, 0, 3, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 0, 3, 0, 3, 1, 1, 1, 0, 1, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, + 5, 1, 0, 5, 0, 5, 2, 2, 1, 3, + 1, 1, 2, 2, 2, 2, 2, 1, 1, 3, + 3, 2, 1, 1, 1, 4, 2, 0, 5, 2, + 1, 1, 1, 1, 1, 1, 1, 0, 3, 1, + 1, 1, 1, 1, 1, 1, 1, 0, 3, 1, + 1, 0, 3, 1, 0, 3, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 0, 3, 0, + 3, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, - 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, + 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, + 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, + 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 1, 1, 1, 1, 1, 1, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 2, 2, 3, 4, 1, - 3, 0, 6, 1, 3, 0, 1, 1, 3, 2, - 4, 2, 2, 2, 2, 1, 1, 1, 1, 2, - 2, 3, 3, 3, 3, 8, 7, 7, 6, 2, - 0, 4, 0, 4, 0, 4, 1, 3, 1, 3, - 1, 2, 4, 2, 3, 0, 3, 0, 0, 6, - 2, 3, 2, 2, 3, 4, 0, 4, 2, 4, - 3, 0, 4, 2, 4, 0, 8, 0, 5, 3, - 3, 0, 7, 1, 3, 1, 2, 1, 2, 0, - 6, 0, 3, 0, 1, 1, 3, 1, 3, 1, - 2, 3, 5, 4, 5, 7, 3, 4, 6, 5, - 6, 8, 1, 1, 1, 1, 1, 1, 1, 2, - 3, 3, 4, 1, 2, 0, 1, 0, 0, 6, - 1, 1, 1, 1, 1, 0, 4, 0, 0, 6, - 0, 0, 7, 1, 1, 3, 3, 2, 4, 1, - 1, 0, 3, 1, 2, 0, 0, 6, 0, 0, - 7, 0, 0, 5, 0, 5, 0, 0, 7, 1, - 1, 1, 0, 0, 0, 12, 1, 1, 0, 2, - 2, 3, 2, 3, 1, 1, 1, 3, 2, 1, - 1, 3, 0, 0, 0, 10, 0, 1, 0, 4, - 2, 1, 0, 4, 1, 2, 0, 5, 0, 6, - 1, 2, 0, 0, 5, 0, 0, 0, 0, 10, - 0, 3, 1, 0, 3, 3, 1, 2, 1, 1, - 0, 4, 0, 3, 0, 2, 1, 2, 1, 2, - 3, 1, 1, 1, 1, 1, 0, 6, 4, 1, - 1 + 3, 2, 2, 3, 4, 1, 3, 0, 6, 1, + 3, 0, 1, 1, 3, 2, 4, 2, 2, 2, + 2, 1, 1, 1, 1, 2, 2, 3, 3, 3, + 3, 8, 7, 7, 6, 2, 0, 4, 0, 4, + 0, 4, 1, 3, 1, 3, 1, 2, 4, 2, + 3, 0, 3, 0, 0, 6, 2, 3, 2, 2, + 3, 4, 0, 4, 2, 4, 3, 0, 4, 2, + 4, 0, 8, 0, 5, 3, 3, 0, 7, 1, + 3, 1, 2, 1, 2, 0, 6, 0, 3, 0, + 1, 1, 3, 1, 3, 1, 2, 3, 5, 4, + 5, 7, 3, 4, 6, 5, 6, 8, 1, 1, + 1, 1, 1, 1, 1, 2, 3, 3, 4, 1, + 2, 0, 1, 0, 0, 6, 1, 1, 1, 1, + 1, 0, 4, 0, 0, 6, 0, 0, 7, 1, + 1, 3, 3, 2, 4, 1, 1, 0, 3, 1, + 2, 0, 0, 6, 0, 0, 7, 0, 0, 5, + 0, 5, 0, 0, 7, 1, 1, 1, 0, 0, + 0, 12, 1, 1, 0, 2, 2, 3, 2, 3, + 1, 1, 1, 3, 2, 1, 1, 3, 0, 0, + 0, 10, 0, 1, 0, 4, 2, 1, 0, 4, + 1, 2, 0, 5, 0, 6, 1, 2, 0, 0, + 5, 0, 0, 0, 0, 10, 0, 3, 1, 0, + 3, 3, 1, 2, 1, 1, 0, 4, 0, 3, + 0, 2, 1, 2, 1, 2, 3, 1, 1, 1, + 1, 1, 0, 6, 4, 1, 1 }; /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state @@ -1306,1644 +1301,1704 @@ static const yytype_uint8 yyr2[] = means the default is an error. */ static const yytype_uint16 yydefact[] = { - 2, 0, 0, 1, 0, 118, 81, 140, 135, 136, - 420, 422, 0, 0, 142, 145, 146, 126, 125, 29, - 122, 83, 0, 0, 531, 451, 549, 121, 0, 120, - 119, 446, 123, 424, 86, 595, 74, 0, 148, 0, - 157, 158, 0, 124, 0, 0, 133, 391, 612, 0, - 134, 582, 0, 137, 0, 629, 630, 0, 150, 0, - 0, 9, 7, 0, 8, 155, 307, 309, 0, 308, - 0, 310, 0, 0, 312, 0, 313, 0, 314, 0, - 315, 0, 320, 0, 318, 0, 319, 0, 0, 0, - 316, 317, 321, 0, 225, 323, 0, 325, 0, 0, - 326, 0, 0, 98, 98, 98, 98, 362, 363, 364, - 365, 366, 367, 98, 311, 405, 406, 407, 408, 322, - 0, 0, 0, 0, 0, 324, 0, 89, 90, 91, - 6, 57, 492, 0, 493, 0, 0, 494, 0, 495, - 497, 498, 0, 578, 496, 98, 98, 5, 10, 0, - 80, 0, 139, 138, 0, 0, 0, 127, 129, 0, - 126, 125, 122, 0, 131, 128, 121, 0, 132, 130, - 133, 0, 0, 0, 254, 256, 255, 257, 259, 260, - 263, 264, 289, 267, 268, 265, 266, 269, 270, 295, - 274, 277, 288, 0, 0, 282, 283, 284, 280, 281, - 285, 286, 287, 258, 405, 406, 408, 290, 0, 273, - 507, 93, 0, 116, 98, 0, 289, 288, 330, 331, - 0, 0, 98, 155, 307, 309, 308, 310, 312, 313, - 314, 315, 320, 302, 303, 301, 317, 305, 323, 304, - 326, 0, 0, 311, 306, 324, 162, 0, 0, 0, - 0, 0, 73, 608, 609, 610, 0, 457, 0, 35, - 0, 0, 96, 0, 395, 614, 155, 318, 319, 565, - 321, 325, 322, 566, 0, 0, 0, 0, 160, 0, - 410, 298, 246, 247, 248, 245, 0, 15, 13, 14, - 12, 11, 0, 0, 156, 223, 0, 0, 205, 0, - 0, 207, 177, 178, 179, 180, 199, 0, 141, 206, - 184, 0, 143, 208, 185, 187, 0, 147, 210, 186, - 0, 149, 211, 188, 0, 152, 153, 189, 0, 154, - 190, 0, 212, 196, 200, 0, 159, 226, 64, 215, - 181, 201, 0, 161, 228, 65, 216, 182, 202, 0, - 0, 177, 165, 0, 169, 0, 170, 172, 0, 171, - 0, 173, 0, 174, 0, 175, 164, 178, 167, 179, - 168, 197, 0, 204, 166, 0, 176, 198, 0, 213, - 0, 62, 214, 0, 222, 191, 0, 231, 61, 219, - 193, 0, 250, 251, 217, 0, 194, 0, 253, 63, - 218, 195, 327, 328, 0, 0, 0, 0, 0, 0, - 0, 0, 329, 68, 67, 71, 70, 69, 0, 144, - 209, 0, 409, 66, 221, 183, 203, 0, 401, 0, - 402, 0, 403, 0, 404, 0, 419, 60, 220, 192, - 98, 0, 517, 524, 523, 0, 0, 499, 105, 422, - 112, 122, 103, 101, 114, 104, 0, 0, 102, 100, - 530, 535, 541, 529, 527, 0, 0, 0, 0, 581, - 0, 580, 72, 59, 0, 99, 35, 0, 426, 0, - 0, 0, 332, 334, 333, 0, 230, 0, 0, 0, + 0, 0, 114, 77, 136, 131, 132, 416, 418, 0, + 0, 138, 141, 142, 122, 121, 28, 118, 79, 0, + 0, 527, 447, 545, 117, 0, 116, 115, 442, 119, + 420, 82, 591, 72, 0, 144, 0, 153, 154, 0, + 120, 0, 0, 129, 387, 608, 0, 130, 578, 0, + 133, 0, 625, 626, 0, 146, 0, 0, 0, 8, + 6, 0, 7, 151, 303, 305, 0, 304, 0, 306, + 0, 0, 308, 0, 309, 0, 310, 0, 311, 0, + 316, 0, 314, 0, 315, 0, 0, 0, 312, 313, + 317, 0, 221, 319, 0, 321, 0, 0, 322, 0, + 0, 94, 94, 94, 94, 358, 359, 360, 361, 362, + 363, 94, 307, 401, 402, 403, 404, 318, 0, 0, + 0, 0, 0, 320, 0, 85, 86, 87, 5, 94, + 488, 0, 489, 0, 0, 490, 0, 491, 493, 494, + 0, 574, 492, 94, 94, 4, 9, 0, 76, 0, + 135, 134, 0, 0, 0, 123, 125, 0, 122, 121, + 118, 0, 127, 124, 117, 0, 128, 126, 129, 0, + 0, 0, 250, 252, 251, 253, 255, 256, 259, 260, + 285, 263, 264, 261, 262, 265, 266, 291, 270, 273, + 284, 0, 0, 278, 279, 280, 276, 277, 281, 282, + 283, 254, 401, 402, 404, 286, 0, 269, 503, 89, + 0, 112, 74, 0, 285, 284, 326, 327, 0, 0, + 75, 151, 303, 305, 304, 306, 308, 309, 310, 311, + 316, 298, 299, 297, 313, 301, 319, 300, 322, 0, + 0, 307, 302, 320, 158, 0, 0, 0, 0, 0, + 71, 604, 605, 606, 0, 453, 0, 34, 0, 0, + 92, 0, 391, 610, 151, 314, 315, 561, 317, 321, + 318, 562, 0, 0, 0, 0, 156, 0, 406, 294, + 242, 243, 244, 241, 1, 0, 14, 12, 13, 11, + 10, 0, 0, 152, 219, 0, 0, 201, 0, 0, + 203, 173, 174, 175, 176, 195, 0, 137, 202, 180, + 0, 139, 204, 181, 183, 0, 143, 206, 182, 0, + 145, 207, 184, 0, 148, 149, 185, 0, 150, 186, + 0, 208, 192, 196, 0, 155, 222, 62, 211, 177, + 197, 0, 157, 224, 63, 212, 178, 198, 0, 0, + 173, 161, 0, 165, 0, 166, 168, 0, 167, 0, + 169, 0, 170, 0, 171, 160, 174, 163, 175, 164, + 193, 0, 200, 162, 0, 172, 194, 0, 209, 0, + 60, 210, 0, 218, 187, 0, 227, 59, 215, 189, + 0, 246, 247, 213, 0, 190, 0, 249, 61, 214, + 191, 323, 324, 0, 0, 0, 0, 0, 0, 0, + 0, 325, 66, 65, 69, 68, 67, 0, 140, 205, + 0, 405, 64, 217, 179, 199, 0, 397, 0, 398, + 0, 399, 0, 400, 0, 415, 58, 216, 188, 56, + 0, 513, 520, 519, 0, 0, 495, 101, 418, 108, + 118, 99, 97, 110, 100, 0, 0, 98, 96, 526, + 531, 537, 525, 523, 0, 0, 0, 0, 577, 0, + 576, 70, 57, 0, 95, 34, 0, 422, 0, 0, + 0, 328, 330, 329, 0, 226, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 92, 77, 35, 84, 428, 430, - 532, 35, 0, 79, 557, 556, 0, 163, 35, 0, - 0, 87, 0, 0, 614, 0, 455, 0, 459, 46, - 41, 38, 0, 39, 40, 37, 42, 44, 51, 52, - 48, 0, 49, 50, 47, 53, 461, 36, 45, 469, - 460, 0, 0, 396, 35, 0, 397, 0, 613, 0, - 0, 0, 626, 0, 241, 0, 242, 235, 389, 299, - 234, 0, 16, 19, 21, 298, 335, 296, 297, 386, - 0, 385, 337, 336, 338, 340, 341, 342, 343, 348, - 346, 298, 347, 298, 344, 345, 349, 352, 353, 298, - 244, 354, 356, 357, 358, 359, 361, 360, 355, 243, - 339, 350, 411, 412, 413, 414, 351, 58, 515, 0, - 500, 520, 0, 501, 0, 0, 115, 0, 0, 538, - 525, 0, 544, 526, 546, 0, 592, 0, 590, 82, - 0, 435, 440, 0, 0, 421, 423, 298, 0, 262, - 292, 272, 276, 279, 374, 375, 376, 381, 382, 379, - 380, 373, 384, 377, 378, 383, 368, 369, 370, 371, - 372, 294, 298, 0, 411, 508, 94, 117, 431, 433, - 0, 0, 453, 0, 452, 552, 448, 0, 0, 447, - 425, 0, 503, 0, 596, 75, 611, 0, 17, 473, - 471, 0, 465, 467, 43, 54, 0, 473, 97, 95, - 399, 0, 0, 616, 155, 295, 622, 288, 290, 615, - 618, 0, 569, 570, 572, 567, 583, 628, 0, 249, - 236, 237, 238, 240, 230, 239, 298, 151, 0, 0, - 0, 0, 0, 232, 387, 0, 0, 0, 0, 0, - 0, 0, 502, 0, 0, 0, 542, 0, 528, 0, - 0, 586, 0, 0, 579, 591, 443, 436, 0, 441, - 0, 442, 427, 0, 0, 0, 298, 298, 0, 0, - 434, 429, 85, 35, 0, 450, 35, 88, 504, 603, - 0, 124, 0, 35, 0, 474, 475, 35, 466, 468, - 458, 471, 0, 463, 0, 393, 0, 398, 35, 617, - 619, 568, 0, 576, 0, 390, 20, 31, 22, 31, - 298, 224, 388, 227, 229, 252, 516, 518, 0, 31, - 106, 31, 108, 536, 0, 0, 0, 547, 0, 593, - 588, 438, 444, 0, 298, 418, 0, 0, 509, 432, - 454, 0, 449, 606, 0, 597, 0, 0, 18, 0, - 35, 35, 480, 35, 0, 0, 472, 0, 0, 35, - 0, 392, 400, 620, 571, 577, 573, 627, 32, 0, - 33, 35, 0, 233, 0, 521, 0, 0, 0, 543, - 539, 545, 0, 0, 0, 0, 0, 445, 0, 417, - 416, 558, 607, 600, 0, 0, 35, 486, 298, 481, - 0, 0, 35, 476, 0, 464, 462, 470, 394, 0, - 0, 0, 55, 0, 519, 0, 0, 0, 537, 0, - 550, 551, 548, 587, 594, 0, 439, 415, 0, 553, - 602, 598, 0, 604, 605, 298, 487, 479, 0, 477, - 456, 35, 483, 0, 35, 574, 24, 34, 35, 26, - 522, 107, 109, 540, 589, 559, 0, 0, 0, 0, - 298, 482, 298, 484, 35, 489, 0, 56, 554, 599, - 601, 488, 478, 0, 298, 490, 0, 575, 0, 485, - 0, 562, 560, 555, 491, 563, 561 + 0, 0, 0, 88, 34, 80, 424, 426, 528, 34, + 0, 553, 552, 0, 159, 34, 0, 0, 83, 0, + 0, 610, 0, 451, 0, 455, 45, 40, 37, 0, + 38, 39, 36, 41, 43, 50, 51, 47, 0, 48, + 49, 46, 52, 457, 35, 44, 465, 456, 0, 0, + 392, 34, 0, 393, 0, 609, 0, 0, 0, 622, + 0, 237, 0, 238, 231, 385, 295, 230, 0, 15, + 18, 20, 294, 331, 292, 293, 382, 0, 381, 333, + 332, 334, 336, 337, 338, 339, 344, 342, 294, 343, + 294, 340, 341, 345, 348, 349, 294, 240, 350, 352, + 353, 354, 355, 357, 356, 351, 239, 335, 346, 407, + 408, 409, 410, 347, 511, 0, 496, 516, 0, 497, + 0, 0, 111, 0, 0, 534, 521, 0, 540, 522, + 542, 0, 588, 0, 586, 78, 0, 431, 436, 0, + 0, 417, 419, 294, 0, 258, 288, 268, 272, 275, + 370, 371, 372, 377, 378, 375, 376, 369, 380, 373, + 374, 379, 364, 365, 366, 367, 368, 290, 294, 0, + 407, 504, 90, 113, 427, 429, 0, 0, 449, 0, + 448, 548, 444, 0, 0, 443, 421, 0, 499, 0, + 592, 73, 607, 0, 16, 469, 467, 0, 461, 463, + 42, 53, 0, 469, 93, 91, 395, 0, 0, 612, + 151, 291, 618, 284, 286, 611, 614, 0, 565, 566, + 568, 563, 579, 624, 0, 245, 232, 233, 234, 236, + 226, 235, 294, 147, 0, 0, 0, 0, 0, 228, + 383, 0, 0, 0, 0, 0, 0, 0, 498, 0, + 0, 0, 538, 0, 524, 0, 0, 582, 0, 0, + 575, 587, 439, 432, 0, 437, 0, 438, 423, 0, + 0, 0, 294, 294, 0, 0, 430, 425, 81, 34, + 0, 446, 34, 84, 500, 599, 0, 120, 0, 34, + 0, 470, 471, 34, 462, 464, 454, 467, 0, 459, + 0, 389, 0, 394, 34, 613, 615, 564, 0, 572, + 0, 386, 19, 30, 21, 30, 294, 220, 384, 223, + 225, 248, 512, 514, 0, 30, 102, 30, 104, 532, + 0, 0, 0, 543, 0, 589, 584, 434, 440, 0, + 294, 414, 0, 0, 505, 428, 450, 0, 445, 602, + 0, 593, 0, 0, 17, 0, 34, 34, 476, 34, + 0, 0, 468, 0, 0, 34, 0, 388, 396, 616, + 567, 573, 569, 623, 31, 0, 32, 34, 0, 229, + 0, 517, 0, 0, 0, 539, 535, 541, 0, 0, + 0, 0, 0, 441, 0, 413, 412, 554, 603, 596, + 0, 0, 34, 482, 294, 477, 0, 0, 34, 472, + 0, 460, 458, 466, 390, 0, 0, 0, 54, 0, + 515, 0, 0, 0, 533, 0, 546, 547, 544, 583, + 590, 0, 435, 411, 0, 549, 598, 594, 0, 600, + 601, 294, 483, 475, 0, 473, 452, 34, 479, 0, + 34, 570, 23, 33, 34, 25, 518, 103, 105, 536, + 585, 555, 0, 0, 0, 0, 294, 478, 294, 480, + 34, 485, 0, 55, 550, 595, 597, 484, 474, 0, + 294, 486, 0, 571, 0, 481, 0, 558, 556, 551, + 487, 559, 557 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 1, 2, 60, 452, 62, 748, 750, 749, 751, - 63, 889, 556, 557, 558, 890, 453, 440, 251, 214, - 222, 149, 215, 691, 249, 701, 512, 263, 150, 151, - 702, 455, 456, 457, 212, 65, 174, 175, 68, 176, - 70, 177, 72, 73, 178, 75, 179, 77, 180, 281, - 79, 181, 81, 216, 83, 183, 85, 184, 87, 88, - 89, 305, 185, 186, 187, 93, 94, 585, 188, 601, - 603, 189, 96, 752, 576, 577, 753, 190, 285, 98, - 99, 191, 609, 101, 217, 487, 489, 490, 491, 579, - 488, 509, 589, 580, 241, 194, 412, 195, 196, 197, - 198, 106, 107, 108, 109, 110, 111, 112, 199, 200, - 201, 202, 339, 299, 581, 203, 264, 816, 565, 566, - 115, 116, 117, 118, 207, 120, 121, 122, 123, 124, - 209, 126, 127, 154, 155, 248, 477, 517, 518, 519, - 777, 778, 906, 652, 653, 128, 247, 529, 129, 221, - 522, 458, 709, 537, 716, 812, 711, 261, 717, 713, - 807, 804, 958, 959, 805, 806, 131, 132, 703, 996, - 133, 511, 788, 210, 445, 759, 446, 629, 894, 761, - 935, 447, 134, 464, 135, 220, 136, 465, 637, 898, - 767, 939, 466, 638, 844, 769, 137, 770, 902, 138, - 942, 139, 794, 976, 998, 526, 949, 997, 273, 274, - 733, 734, 140, 823, 929, 986, 886, 141, 470, 471, - 142, 275, 143, 647, 848, 905, 648, 772, 904, 144, - 250, 799, 913, 977, 951, 952, 865, 866, 867, 255, - 145, 534, 265, 568, 729, 730, 146, 738, 459 + -1, 57, 58, 451, 60, 744, 746, 745, 747, 61, + 885, 553, 554, 555, 886, 452, 249, 147, 213, 687, + 247, 697, 511, 261, 212, 149, 698, 454, 455, 456, + 210, 63, 172, 173, 66, 174, 68, 175, 70, 71, + 176, 73, 177, 75, 178, 279, 77, 179, 79, 214, + 81, 181, 83, 182, 85, 86, 87, 304, 183, 184, + 185, 91, 92, 582, 186, 598, 600, 187, 94, 748, + 573, 574, 749, 188, 283, 96, 97, 189, 606, 99, + 215, 486, 488, 489, 490, 576, 487, 508, 586, 577, + 239, 192, 411, 193, 194, 195, 196, 104, 105, 106, + 107, 108, 109, 110, 197, 198, 199, 200, 338, 298, + 578, 201, 262, 812, 562, 563, 113, 114, 115, 116, + 205, 118, 119, 120, 121, 122, 207, 124, 125, 152, + 153, 246, 476, 515, 516, 517, 773, 774, 902, 648, + 649, 126, 245, 526, 127, 219, 520, 457, 705, 534, + 712, 808, 707, 259, 713, 709, 803, 800, 954, 955, + 801, 802, 129, 130, 699, 992, 131, 510, 784, 208, + 444, 755, 445, 625, 890, 757, 931, 446, 132, 463, + 133, 218, 134, 464, 633, 894, 763, 935, 465, 634, + 840, 765, 135, 766, 898, 136, 938, 137, 790, 972, + 994, 523, 945, 993, 271, 272, 729, 730, 138, 819, + 925, 982, 882, 139, 469, 470, 140, 273, 141, 643, + 844, 901, 644, 768, 900, 142, 248, 795, 909, 973, + 947, 948, 861, 862, 863, 253, 143, 531, 263, 565, + 725, 726, 144, 734, 458 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ -#define YYPACT_NINF -893 +#define YYPACT_NINF -701 static const yytype_int16 yypact[] = { - 40, 45, 6561, -893, 171, -893, 275, -893, 49, 66, - 662, 224, -14, 7150, -893, -893, -893, 2750, 2750, -893, - 21, 670, 7150, 7150, -893, 1115, -893, 342, 7618, -893, - -893, 81, -893, 1313, 1342, -893, 275, -34, -893, 109, - -893, -893, 2750, -893, 2750, 560, 131, -893, -893, 7618, - -893, -893, 7150, -893, 52, -893, -893, 7267, -893, 7982, - 4615, -893, -893, 528, -893, -7, 33, 35, 2924, 20, - 7982, 53, 7982, 7982, 60, 7982, 99, 7982, 112, 7982, - 32, 7982, 37, 2924, 106, 2924, 217, 2924, 3381, 7982, - 42, 83, 47, 7982, -893, 14, 7982, 87, 78, 7982, - 63, 7982, 905, -893, -893, -893, -893, -893, -893, -893, - -893, -893, -893, -893, 119, -893, -893, -893, -893, 265, - 2924, 85, 133, 186, 371, 335, 7982, -893, -893, -893, - -893, -893, -893, 616, -893, 3534, 487, -893, 7150, -893, - -893, -893, 5351, 159, -893, -893, -893, -893, -893, 7150, - -893, 171, -893, -893, 2750, 2750, 7150, -893, -893, 52, - -893, -893, -893, 7150, -893, -893, -893, 81, -893, -893, - -893, 7150, 7150, 2750, 161, 541, 803, 1491, 1573, 4319, - 1650, 464, 3809, 321, 1542, 1698, 2119, 771, 7670, -893, - 4179, 7731, 444, 7470, 380, -893, -893, -893, -893, -893, - -893, -893, -893, 1680, 493, 508, 542, 7791, 382, 1876, - -893, -893, 332, -893, -893, 8200, 7851, -893, -893, -893, - 171, 2750, -893, 8, 64, 64, 197, 203, 204, 220, - 225, 199, 64, 68, 246, 300, 64, -17, 232, 264, - 259, 23, 142, 261, 172, 270, 192, 2750, 2750, 8200, - 171, 7150, -893, -893, -893, -893, 256, 196, 171, 8303, - 206, 171, 230, 231, 8026, 295, 367, -5, 4, 300, - 369, 151, 286, -893, -18, 7150, 7236, 7150, -893, 2750, - 7470, 3961, -893, -893, -893, -893, 171, -893, -893, -893, - -893, -893, 2750, 2750, -893, -893, 7150, 6799, -893, -65, - 7150, -893, -893, -893, -893, -893, -893, 7150, -893, -893, - -893, 7150, -893, -893, -893, -893, 7150, -893, -893, -893, - 7150, -893, -893, -893, 7150, -893, -893, -893, 7150, -893, - -893, 7150, -893, -893, -893, 7150, -893, -893, -893, -893, - -893, -893, 7150, -893, -893, -893, -893, -893, -893, 49, - 66, 372, -893, 377, -893, 397, -893, -893, 421, -893, - 427, -893, 225, -893, 199, -893, -893, 435, -893, 443, - -893, -893, 449, 461, -893, 471, -893, -893, 7150, -893, - 7150, -893, -893, 7150, -893, -893, 7150, -893, -893, -893, - -893, 7150, -893, -893, -893, 7982, -893, 7150, -893, -893, - -893, -893, -893, -893, 7150, 7150, 7150, 7150, 7150, 7150, - 7150, 7982, -893, -893, -893, -893, -893, -893, 7150, -893, - -893, 7150, -893, -893, -893, -893, -893, 7150, -893, 7150, - -893, 7150, -893, 7150, -893, 7150, -893, -893, -893, -893, - -893, 171, -893, -893, -893, 563, 652, -893, -893, 305, - -893, 57, -893, -893, -893, -893, 671, 4861, -893, -893, - -893, -893, -893, -893, -893, 540, 381, 7236, 5472, -893, - 639, -893, -893, -893, 7236, -893, 3435, 411, -893, 411, - 3096, 393, 7587, -893, -893, 334, -893, 8303, 8303, 8303, - 8303, 8303, 7150, 7150, 7150, 7150, 7150, 7150, 7150, 7150, - 7150, 7150, 7150, 7150, 7150, 7150, 7150, 7150, 7150, 8303, - 6916, 171, 171, 2750, -893, -893, 3435, 448, -893, -893, - -893, 8303, 418, -893, -893, -893, 7150, -893, 8303, 359, - 418, 448, 4988, 7236, 295, 512, -893, 2750, -893, -893, - -893, -893, 2750, -893, -893, -893, -893, -893, -893, -893, - -893, 2750, -893, -893, -893, -893, -893, -893, -893, -893, - -893, 550, 171, -893, 8303, 479, 500, 7033, -893, 7384, - 7618, 7236, 605, 566, -893, 7618, -893, -893, -893, 7470, - -893, -68, -893, 517, 520, 3961, 7470, -893, 7470, -893, - 6799, 516, 7470, 7470, 7470, 7470, 7470, 7470, 7470, 7470, - 7470, 3961, 7470, 3961, 7470, 7470, 7470, 7470, 7470, 3961, - -893, 7470, 7470, 7470, 7470, 7470, 7470, 7470, 7470, -893, - 7470, 7470, 7470, 7470, 7470, 7470, 7470, -893, -893, 7150, - -893, -893, 563, -893, 2750, 2750, -893, 7150, 171, -893, - -893, 381, -893, -893, -893, 7150, -893, 405, -893, -893, - 7150, 634, 1117, 248, 2750, -893, -893, 7501, 6916, -893, - -893, -893, -893, -893, 4277, 7470, 7587, 7587, 7587, 7587, - 7587, 588, 7587, 7587, 7587, 7587, 431, 431, 453, 453, - 453, -893, 7501, 530, 6885, -893, -893, -893, 641, 1117, - 8200, 171, -893, 2750, -893, 7470, -893, 2750, 2750, -893, - -893, 171, -893, 4738, -893, -893, -893, 646, -893, 3054, - 206, 2550, -893, -893, -893, -893, 2750, 3054, -893, -893, - -893, 7150, 8069, 7501, 396, 538, -893, 545, 3629, 554, - -893, 2750, 7470, -893, 562, -893, -893, -893, 6682, -893, - 338, 68, 300, -17, 194, 264, 3961, -893, 171, 559, - 171, 568, 425, -893, -893, 6799, 433, 436, 466, 5835, - 7236, 7150, -893, 348, 376, 7236, -893, 7150, -893, 171, - 5956, 7470, 171, 7150, -893, -893, 7470, -893, 680, -893, - 7150, 565, -893, 574, 6885, 573, 7501, 7501, 5109, 7150, - -893, -893, -893, 8303, 648, -893, 8303, -893, -893, 619, - 171, 4482, 2750, 8303, 578, 581, 584, 8303, -893, -893, - -893, -893, 167, -893, 586, 7470, 279, -893, 8303, -893, - 7501, 334, 7384, 610, 6319, -893, -893, 8113, -893, 8113, - 3961, -893, -893, -893, -893, -893, -893, -893, 7236, 8113, - -893, 8113, -893, -893, 5593, 7236, 5593, -893, 171, -893, - 7470, -893, 7470, 7150, 7501, -893, 589, 590, -893, 7470, - -893, 7150, -893, -893, 2750, -893, 171, 171, -893, 2750, - 8303, 8189, -893, 8303, 4548, 626, -893, 2750, 171, 8303, - 7150, -893, -893, -893, -893, -893, -893, -893, -893, 599, - 604, 8303, 607, -893, 5109, -893, 611, 612, 5230, -893, - -893, -893, 233, 5714, 5714, 171, 7150, 7470, 613, -893, - -893, 7353, -893, 665, 6077, 6077, 8226, -893, 7150, -893, - 171, 2750, 8303, 584, 7939, -893, -893, -893, 7470, 171, - 171, 8156, -893, 171, -893, 5109, 171, 171, -893, 5230, - -893, -893, -893, -893, -893, 5714, 7470, -893, 7150, -893, - -893, -893, 171, -893, -893, 7150, -893, -893, 470, -893, - -893, 8247, -893, 2750, 8303, -893, -893, -893, 8303, -893, - -893, -893, -893, -893, -893, 7470, 171, 717, 6440, 473, - 7150, -893, 7150, -893, 8282, -893, 6198, -893, -893, -893, - -893, -893, -893, 484, 7150, -893, 31, -893, 6198, -893, - 501, 2750, 2750, -893, -893, -893, -893 + 4588, 117, -701, 334, -701, 37, 57, 648, 484, -92, + 7032, -701, -701, -701, 8200, 8200, -701, 100, 768, 7032, + 7032, -701, 1195, -701, 334, 7500, -701, -701, 191, -701, + 1480, 1557, -701, 334, 123, -701, 245, -701, -701, 8200, + -701, 8200, 603, 239, -701, -701, 7500, -701, -701, 7032, + -701, 161, -701, -701, 7149, -701, 2626, 306, 4712, -701, + -701, 505, -701, 3, 28, 34, 2465, 17, 2626, 19, + 2626, 2626, 30, 2626, 97, 2626, 165, 2626, 32, 2626, + 42, 2465, 20, 2465, 41, 2465, 7617, 2626, 55, 31, + 241, 2626, -701, 53, 2626, 54, 230, 2626, 73, 2626, + 682, -701, -701, -701, -701, -701, -701, -701, -701, -701, + -701, -701, 167, -701, -701, -701, -701, 119, 2465, 153, + 178, 183, 302, 140, 2626, -701, -701, -701, -701, -701, + -701, 547, -701, 4983, 431, -701, 7032, -701, -701, -701, + 5588, 297, -701, -701, -701, -701, -701, 7032, -701, 117, + -701, -701, 8200, 8200, 7032, -701, -701, 161, -701, -701, + -701, 7032, -701, -701, -701, 191, -701, -701, -701, 7032, + 7032, 8200, 152, 229, 372, 870, 1333, 7802, 1762, 525, + 7667, 1154, 1639, 359, 943, 1097, 7862, -701, 7740, 7922, + 571, 7118, 311, -701, -701, -701, -701, -701, -701, -701, + -701, 1771, 577, 581, 592, 7982, 315, 1800, -701, -701, + 409, -701, -701, 4188, 4450, -701, -701, -701, 117, 8200, + -701, 205, 221, 221, -12, -5, 39, 66, 193, 341, + 221, 76, 174, 209, 221, 49, 206, 217, 214, 23, + 274, 235, 190, 259, 354, 8200, 8200, 4188, 117, 7032, + -701, -701, -701, -701, 417, 328, 117, 4079, 353, 117, + 369, 340, 3232, 419, 345, 99, 185, 209, 461, 224, + 260, -701, -20, 7032, 3880, 7032, -701, 8200, 7118, 3514, + -701, -701, -701, -701, -701, 117, -701, -701, -701, -701, + -701, 8200, 8200, -701, -701, 7032, 3631, -701, -82, 7032, + -701, -701, -701, -701, -701, -701, 7032, -701, -701, -701, + 7032, -701, -701, -701, -701, 7032, -701, -701, -701, 7032, + -701, -701, -701, 7032, -701, -701, -701, 7032, -701, -701, + 7032, -701, -701, -701, 7032, -701, -701, -701, -701, -701, + -701, 7032, -701, -701, -701, -701, -701, -701, 37, 57, + 464, -701, 477, -701, 481, -701, -701, 495, -701, 501, + -701, 193, -701, 341, -701, -701, 506, -701, 520, -701, + -701, 539, 550, -701, 564, -701, -701, 7032, -701, 7032, + -701, -701, 7032, -701, -701, 7032, -701, -701, -701, -701, + 7032, -701, -701, -701, 2626, -701, 7032, -701, -701, -701, + -701, -701, -701, 7032, 7032, 7032, 7032, 7032, 7032, 7032, + 2626, -701, -701, -701, -701, -701, -701, 7032, -701, -701, + 7032, -701, -701, -701, -701, -701, 7032, -701, 7032, -701, + 7032, -701, 7032, -701, 7032, -701, -701, -701, -701, -701, + 117, -701, -701, -701, 530, 622, -701, -701, 542, -701, + 242, -701, -701, -701, -701, 638, 5104, -701, -701, -701, + -701, -701, -701, -701, 515, 463, 3880, 5709, -701, 683, + -701, -701, -701, 3880, -701, 3378, 517, -701, 517, 2208, + 426, 1419, -701, -701, 486, -701, 4079, 4079, 4079, 4079, + 4079, 7032, 7032, 7032, 7032, 7032, 7032, 7032, 7032, 7032, + 7032, 7032, 7032, 7032, 7032, 7032, 7032, 7032, 4079, 3760, + 117, 117, 8200, -701, 3378, 492, -701, -701, -701, 4079, + 552, -701, -701, 7032, -701, 4079, 357, 552, 492, 5225, + 3880, 419, 543, -701, 8200, -701, -701, -701, -701, 8200, + -701, -701, -701, -701, -701, -701, -701, -701, 8200, -701, + -701, -701, -701, -701, -701, -701, -701, -701, 563, 117, + -701, 4079, 504, 529, 6915, -701, 7266, 7500, 3880, 634, + 607, -701, 7500, -701, -701, -701, 7118, -701, -73, -701, + 534, 537, 3514, 7118, -701, 7118, -701, 3631, 541, 7118, + 7118, 7118, 7118, 7118, 7118, 7118, 7118, 7118, 3514, 7118, + 3514, 7118, 7118, 7118, 7118, 7118, 3514, -701, 7118, 7118, + 7118, 7118, 7118, 7118, 7118, 7118, -701, 7118, 7118, 7118, + 7118, 7118, 7118, 7118, -701, 7032, -701, -701, 530, -701, + 8200, 8200, -701, 7032, 117, -701, -701, 463, -701, -701, + -701, 7032, -701, 407, -701, -701, 7032, 653, 532, 337, + 8200, -701, -701, 7383, 3760, -701, -701, -701, -701, -701, + 7235, 7118, 1419, 1419, 1419, 1419, 1419, 617, 1419, 1419, + 1419, 1419, 332, 332, 396, 396, 396, -701, 7383, 562, + 2983, -701, -701, -701, 675, 532, 4188, 117, -701, 8200, + -701, 7118, -701, 8200, 8200, -701, -701, 117, -701, 4833, + -701, -701, -701, 670, -701, 2845, 353, 2746, -701, -701, + -701, -701, 8200, 2845, -701, -701, -701, 7032, 4017, 7383, + 256, 555, -701, 560, 4318, 587, -701, 8200, 7118, -701, + 594, -701, -701, -701, 6798, -701, 232, 76, 209, 49, + 254, 217, 3514, -701, 117, 576, 117, 595, 365, -701, + -701, 3631, 395, 403, 415, 6072, 3880, 7032, -701, 362, + 373, 3880, -701, 7032, -701, 117, 6193, 7118, 117, 7032, + -701, -701, 7118, -701, 708, -701, 7032, 600, -701, 601, + 2983, 609, 7383, 7383, 5346, 7032, -701, -701, -701, 4079, + 684, -701, 4079, -701, -701, 659, 117, 2888, 8200, 4079, + 611, 614, 615, 4079, -701, -701, -701, -701, -13, -701, + 624, 7118, 268, -701, 4079, -701, 7383, 486, 7266, 645, + 6556, -701, -701, 8113, -701, 8113, 3514, -701, -701, -701, + -701, -701, -701, -701, 3880, 8113, -701, 8113, -701, -701, + 5830, 3880, 5830, -701, 117, -701, 7118, -701, 7118, 7032, + 7383, -701, 625, 627, -701, 7118, -701, 7032, -701, -701, + 8200, -701, 117, 117, -701, 8200, 4079, 8189, -701, 4079, + 3919, 666, -701, 8200, 117, 4079, 7032, -701, -701, -701, + -701, -701, -701, -701, -701, 629, 632, 4079, 636, -701, + 5346, -701, 637, 639, 5467, -701, -701, -701, 213, 5951, + 5951, 117, 7032, 7118, 640, -701, -701, 3976, -701, 689, + 6314, 6314, 8226, -701, 7032, -701, 117, 8200, 4079, 615, + 8070, -701, -701, -701, 7118, 117, 117, 8157, -701, 117, + -701, 5346, 117, 117, -701, 5467, -701, -701, -701, -701, + -701, 5951, 7118, -701, 7032, -701, -701, -701, 117, -701, + -701, 7032, -701, -701, 448, -701, -701, 8247, -701, 8200, + 4079, -701, -701, -701, 4079, -701, -701, -701, -701, -701, + -701, 7118, 117, 741, 6677, 451, 7032, -701, 7032, -701, + 8282, -701, 6435, -701, -701, -701, -701, -701, -701, 468, + 7032, -701, 16, -701, 6435, -701, 509, 8200, 8200, -701, + -701, -701, -701 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -893, -893, -893, -893, 29, 675, -893, -893, -893, -893, - -893, -593, -324, 126, -625, -893, 50, -893, -893, -893, - -893, -893, -893, -893, -893, -893, -893, -893, 207, -893, - -133, -893, -893, 595, -893, 3224, 1223, 1321, 650, 243, - 651, 339, 653, 654, 366, 655, 488, 656, 624, -893, - 658, 743, 659, 922, 661, -2, 664, 76, 666, 494, - -893, 960, 1457, 1555, 1714, -893, -172, -893, 1742, -893, - -893, -557, -893, -347, -644, -502, -278, 1936, -302, -893, - -893, 1976, -893, -893, -9, -893, -893, -893, -893, 3789, - -893, -893, -571, -473, -893, 2095, -893, 1361, 1910, -893, - 2245, -893, -893, -893, -893, -893, -893, -893, 2350, -893, - -893, -893, 4245, -893, -893, 1042, -893, -893, -893, -893, - 737, 740, -893, 742, 181, 672, 9, -893, -893, -893, - 1104, 673, -893, -893, -893, -893, 603, 513, 73, -149, - -893, -893, -893, 251, -893, -893, -893, -893, -893, -893, - 521, 72, -893, -893, -893, -893, -893, -530, -893, -695, - -893, 55, -892, -216, -893, -104, -893, -893, 36, -498, - -893, -893, -893, -893, 330, -893, -893, -893, -893, -893, - -893, -434, -893, -451, -893, -893, -893, -893, -893, -893, - -893, -893, 312, -893, -893, -893, -893, -893, -893, -893, - -893, -893, -893, -893, -893, -893, -893, -220, 212, -893, - -39, -893, -893, -893, -893, -893, -893, -893, -893, 137, - -893, -893, -893, -893, -893, -893, 141, -893, -893, -893, - -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, - -893, -893, -893, 257, -893, -703, -893, -893, 2896 + -701, -701, -701, 35, 703, -701, -701, -701, -701, -701, + -315, -466, 104, -628, -701, 181, -701, -701, -701, -701, + -701, -701, -701, -701, 218, -701, -129, -701, -701, 623, + -701, 3325, 1278, 1312, 676, 223, 678, 325, 679, 686, + 391, 690, 503, 693, 606, -701, 694, 728, 696, 809, + 697, 0, 701, 44, 702, 524, -701, 2319, 1441, 1633, + 1730, -701, -170, -701, 1842, -701, -701, -556, -701, -332, + -631, -504, -276, 1891, -314, -701, -701, 2135, -701, -701, + -8, -701, -701, -701, -701, 3798, -701, -701, -563, -519, + -701, 2233, -701, 972, 2288, -701, 2386, -701, -701, -701, + -701, -701, -701, -701, 2447, -701, -701, -701, 4244, -701, + -701, 1053, -701, -701, -701, -701, 759, 760, -701, 765, + 146, 705, 8, -701, -701, -701, 1176, 707, -701, -701, + -701, -701, 641, 549, 103, -146, -701, -701, -701, 283, + -701, -701, -701, -701, -701, -701, 554, 203, -701, -701, + -701, -701, -701, -524, -701, -691, -701, 85, -673, -172, + -701, -64, -701, -701, 77, -512, -701, -701, -701, -701, + 367, -701, -701, -701, -701, -701, -701, -432, -701, -450, + -701, -701, -701, -701, -701, -701, -701, -701, 343, -701, + -701, -701, -701, -701, -701, -701, -701, -701, -701, -701, + -701, -701, -701, -181, 248, -701, -2, -701, -701, -701, + -701, -701, -701, -701, -701, 175, -701, -701, -701, -701, + -701, -701, 182, -701, -701, -701, -701, -701, -701, -701, + -701, -701, -701, -701, -701, -701, -701, -701, -701, 286, + -701, -700, -701, -701, 2961 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule which number is the opposite. If zero, do what YYDEFACT says. If YYTABLE_NINF, syntax error. */ -#define YYTABLE_NINF -626 +#define YYTABLE_NINF -622 static const yytype_int16 yytable[] = { - 84, 486, 454, 578, 192, 478, 478, 712, 683, 454, - 725, 630, 633, 783, 640, 643, 809, -300, 384, 754, - 819, 813, 208, 386, -30, -30, 233, 779, 294, 307, - 336, 61, 524, 569, 704, 253, 40, 41, 785, 343, - -4, 328, 296, 294, 300, 3, 331, 267, 1001, 387, - 746, 378, 64, 590, 747, 308, 383, 283, 84, 591, - -113, -113, 311, 979, 790, 726, 303, 329, 303, 316, - 303, 303, 397, 303, 130, 303, 1002, 303, 86, 303, - 54, 303, 384, 303, 152, 303, 367, 303, 312, 287, - 993, 303, 380, 610, 303, 317, 391, 303, 398, 303, - 570, 153, 1000, 336, 234, 156, -321, 486, 320, 619, - 289, -300, 295, 254, 337, 335, 246, 883, 303, 256, - 297, 324, 392, 344, 303, 268, 525, 295, 418, 297, - -98, -98, 290, 84, 321, 284, 86, -76, -76, 297, - 84, 336, 856, 857, 304, 297, 304, 325, 304, 304, - 262, 304, 651, 304, 419, 304, 683, 304, 297, 304, - 297, 304, 297, 304, 369, 304, 725, 297, 481, 304, - 296, 277, 304, -76, -76, 304, 469, 304, 297, -98, - -98, 808, 925, 119, 832, 297, 392, 337, 297, 297, - 768, -318, 688, 297, -307, -307, 304, 692, 762, -98, - -98, 395, 304, 427, 696, 428, 393, 422, 297, 244, - 908, 86, 297, 516, -307, -307, -307, -307, 86, -307, - -307, 726, -98, -98, 297, 337, 342, -28, -28, -225, - 272, 297, 308, -129, 329, 278, 892, 297, 312, 317, - 720, 119, 167, 252, 297, 69, 896, 516, 897, 306, - 940, 429, 343, 430, 756, 321, 757, -129, -129, -129, - 325, 836, 758, 725, 334, 411, 341, 387, 348, 373, - 393, 226, 847, 941, 421, 535, 297, -129, -129, -129, - -129, 343, -129, -129, -307, 877, 297, 55, 56, 878, - 858, 338, 226, 345, 398, -322, 419, 297, 381, 392, - 422, 426, 388, 69, 431, 436, 432, 399, -111, -111, - 413, 414, 415, 416, -129, 536, 119, -225, 726, -225, - 417, 422, 297, 119, 636, 559, 423, -129, 297, 297, - 335, 353, 437, -98, -98, 636, 344, 561, -129, -129, - -129, 71, 297, -129, 435, 297, 899, -129, 901, -129, - 297, 562, 472, 473, -318, -318, 336, 297, -129, -129, - -129, -129, 567, -129, -129, 344, 780, 227, 74, -319, - 436, 297, 781, 294, -318, -318, -318, -318, 69, -318, - -318, -98, -98, 393, 297, 69, 297, -325, 227, 297, - 297, -98, -98, 283, 228, 297, 934, 880, 460, 71, - 938, 881, 294, 744, 384, 943, 944, 294, -129, 283, - 697, 297, 308, 402, 403, 228, 953, 954, -564, 642, - 463, 515, 469, -316, -129, 297, 74, 355, -129, 523, - -129, 294, 312, 404, 405, 406, 407, 970, 408, 409, - 337, 973, 773, 646, -318, 957, 297, 974, 55, 56, - 513, -98, -98, 295, 358, 84, 317, 295, -78, -78, - 297, -155, 321, -155, 55, 56, 84, 839, 825, 860, - 336, 284, 862, 328, 71, 55, 56, 698, 343, 872, - 990, 71, 957, 876, 419, -564, 295, 284, 499, 433, - 76, 434, 55, 56, 882, 841, 422, -315, -315, 329, - 510, 74, 428, 411, 460, 782, 436, 957, 74, 957, - 499, 658, -621, -621, -621, 295, 229, -315, -315, -315, - -315, 957, -315, -315, 461, 462, 463, 55, 56, 654, - 84, 292, 293, 86, 55, 56, 693, 229, 504, 505, - 506, 507, 508, 830, 86, 831, 917, 919, 76, 920, - 300, 830, 893, 833, 830, 927, 834, 460, 727, 486, - -510, -510, 506, 507, 508, 5, 690, 932, 267, 718, - 798, 157, 158, 741, -309, -309, 360, 639, 462, 463, - 443, 444, 160, 161, 830, 162, 835, -315, 980, 164, - 981, 980, 956, 991, -309, -309, -309, -309, 962, -309, - -309, 165, 980, 166, 999, 721, 29, 30, 86, -512, - -512, 32, 168, 659, 660, 661, 662, 663, 722, 980, - 169, 1004, 737, 76, -513, -513, 78, 707, 55, 56, - 76, 441, 442, 443, 444, 681, -23, 983, 119, -25, - 985, 755, 43, -437, 987, 499, 268, 627, 786, 119, - 789, 268, 230, 170, -623, -623, -623, 50, -514, -514, - 995, -624, -624, -624, -309, 800, 297, 441, 631, 443, - 444, -127, 820, 230, 634, 635, 645, 646, 827, -131, - 822, 259, 863, 864, 78, 295, 739, 829, 516, 851, - 853, 798, 854, 855, 861, -127, -127, -127, 873, 874, - 69, 84, 875, -131, -131, -131, 879, 885, 924, 909, - 910, 69, 362, 119, 727, -127, -127, -127, -127, 930, - -127, -127, 931, -131, -131, -131, -131, 933, -131, -131, - 950, 936, 937, 947, 989, 288, 84, 468, 352, 354, - 527, 356, 357, 359, 361, 80, 363, 365, 728, 366, - 204, 272, 368, 205, 370, 206, 272, 84, 479, 78, - 374, 376, 531, 791, 992, -127, 78, 689, 84, 530, - 923, 231, 814, -131, 824, 69, 632, 641, 1003, 86, - 383, -127, 735, 884, 774, -127, 84, -127, 775, -131, - 0, 706, 231, -131, 0, -131, 71, 0, 0, 0, - 0, 0, 0, 80, -321, -321, 384, 71, 0, 0, - 0, 727, 307, 226, 86, 0, 0, 0, 226, 0, - 0, 0, 84, 74, -321, -321, -321, -321, 0, -321, - -321, 364, 0, 0, 74, 86, -308, -308, 308, 0, - 0, 0, 84, 0, 84, 0, 86, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -308, -308, -308, -308, - 0, -308, -308, 0, 86, 0, 0, 0, 0, 0, - 0, 71, 0, 0, 0, 0, 0, 0, 80, 0, - 0, 0, 0, 0, 119, 80, 0, 0, 0, 0, - 0, 0, 84, 0, -321, 0, 84, 0, 74, 0, - 86, 84, 84, 0, 728, 0, 0, 0, 0, 227, - 0, 0, 84, 84, 227, 0, 0, 0, 0, 119, - 86, 0, 86, 0, 82, 0, -308, 0, 297, 0, - 0, 0, 0, 84, 0, 182, 228, 84, 402, 403, - 119, 228, 0, 84, 0, 76, 69, 0, 0, 0, - 232, 119, 0, 0, 0, 0, 76, 0, 404, 405, - 406, 407, 0, 408, 409, 0, 0, 0, 0, 119, - 86, 232, 0, 0, 86, 0, 84, 0, 0, 86, - 86, 69, 82, 0, 84, 0, 0, 0, 0, 0, - 86, 86, 0, 0, 0, 0, 84, 0, 0, 0, - 0, 728, 69, 0, 0, 119, 0, 0, 410, 0, - 0, 86, 0, 69, 0, 86, 0, 0, 0, 0, - 76, 86, 0, 0, 0, 119, 0, 119, 411, 0, - 310, 69, 314, 315, 0, 319, 0, 323, 0, 327, - 0, 330, 71, 333, 114, 340, 0, 347, 371, 377, - 0, 0, 0, 385, 86, 0, 390, 82, 229, 396, - 0, 401, 86, 229, 82, 0, 0, 69, 0, 74, - 243, 0, 0, 0, 86, 119, 0, 71, 0, 119, - 425, 78, 0, 0, 119, 119, 439, 69, 0, 69, - 0, 243, 78, 0, 0, 119, 119, 0, 71, 0, - 0, 0, 114, 0, 74, 0, 125, 0, 0, 71, - 0, 0, 0, 0, 0, 0, 119, 0, 0, 0, - 119, 0, 0, 0, -128, 74, 119, 71, 0, 0, - 372, 0, 245, 0, 0, 0, 74, 69, 0, 0, - 0, 69, 0, 0, 0, 0, 69, 69, -128, -128, - -128, 0, 0, 245, 74, 0, 78, 69, 69, 119, - 0, 0, 0, 71, 125, 0, 0, 119, -128, -128, - -128, -128, 0, -128, -128, 0, 0, 114, 69, 119, - 0, 0, 69, 71, 114, 71, 0, 0, 69, 539, - 74, 76, 375, 0, 230, 0, 0, 0, 0, 230, - 80, 0, 548, 549, 550, 551, 552, 553, 554, 555, - 74, 80, 74, 0, 0, 0, 0, 0, -128, 0, - 0, 69, 0, 0, 0, 66, 76, 0, 0, 69, - 0, 0, 0, 71, -128, 0, 0, 71, -128, 125, - -128, 69, 71, 71, 0, 0, 125, 76, 0, 0, - 0, 224, 0, 71, 71, 0, 0, 0, 76, 0, - 74, 0, 0, 0, 74, 0, 0, 0, 0, 74, - 74, 0, 224, 0, 71, 80, 76, 0, 71, 0, - 74, 74, 0, 66, 71, 0, 0, 0, 0, 0, + 82, 485, 190, 575, 453, 679, 477, 477, 721, 647, + 708, 453, 626, 629, 636, 639, 805, 700, 206, 815, + 775, 809, 779, 307, 750, 231, 306, 154, 310, 334, + 311, 566, 521, 997, 251, 59, 587, 295, 293, 315, + 379, 327, 588, 299, 84, 742, 265, 781, 684, 743, + 341, 330, 307, 688, 311, 335, 281, 786, 82, 692, + 722, 998, 385, 390, 377, 316, 302, 328, 302, 232, + 302, 302, 150, 302, 316, 302, 342, 302, 252, 302, + 607, 302, 396, 302, 383, 302, 366, 302, 386, 391, + 266, 302, 151, 286, 302, 716, 616, 302, 567, 302, + 282, 320, 84, -29, -29, 873, 319, 485, 397, 874, + 303, 335, 303, 296, 303, 303, 879, 303, 302, 303, + 296, 303, 294, 303, 302, 303, 522, 303, 420, 303, + 368, 303, 320, 82, 335, 303, -94, -94, 303, 336, + 82, 303, 296, 303, 296, 296, 117, -94, -94, 434, + 679, 852, 853, 296, 421, 296, 296, -94, -94, 296, + 343, 295, 303, 721, 296, 480, 296, 296, 303, -94, + -94, 242, -317, 392, 323, 435, 417, 84, 296, 296, + 296, 62, 921, 804, 84, -303, -303, 764, 828, -94, + -94, 296, 270, 37, 38, 336, 758, 276, 296, -314, + 324, 296, 418, 128, 117, -303, -303, -303, -303, 342, + -303, -303, 305, 514, -296, 722, -94, -94, 336, 904, + 342, 148, 296, 67, 296, 421, 244, 333, 324, 340, + 936, 347, 372, 52, 53, -94, -94, 51, 299, 288, + 293, 386, 220, 832, 296, -109, -109, 514, 224, 397, + 382, 250, 391, 937, 843, 254, -94, -94, 260, 391, + 721, 289, -305, -305, 425, 296, 752, 293, 753, 224, + 418, 426, 854, 427, 754, -303, 383, 296, 975, 117, + 275, 67, -305, -305, -305, -305, 117, -305, -305, -221, + 296, 293, 296, 343, 435, 421, 428, -315, 429, 296, + 337, 430, 344, 431, 343, 989, 284, 380, -296, 352, + 296, 387, 722, -318, 468, 296, 398, 996, 296, 412, + 413, 414, 415, 856, 294, 69, 858, 632, 895, 416, + 897, 296, -312, 868, 296, 422, 392, 872, 632, 296, + -321, 436, 296, 392, 401, 402, 296, 439, 878, 296, + 225, 294, -305, 394, 296, -151, 67, -151, -94, -94, + 296, 471, 472, 67, 403, 404, 405, 406, 377, 407, + 408, 225, -617, -617, -617, 294, 328, -221, 930, -221, + 293, 306, 934, 69, 296, 296, 876, 939, 940, 498, + 877, 72, -312, -312, 281, 953, -560, 410, 949, 950, + 913, 915, 740, 916, 165, -304, -304, 307, 693, 923, + 281, 354, -312, -312, -312, -312, 226, -312, -312, 966, + 432, 928, 433, 969, 468, -304, -304, -304, -304, 970, + -304, -304, 953, 509, 410, 427, 532, 226, 282, 503, + 504, 505, 506, 507, 769, 642, 952, 533, 459, 72, + -94, -94, 958, 498, 282, 776, 82, 953, 69, 953, + 559, 777, 986, -560, 294, 69, 821, 82, 460, 461, + 462, 953, 556, 52, 53, 694, 558, 357, 52, 53, + 459, 835, -312, 826, 296, 827, 564, -27, -27, 52, + 53, 979, 837, -125, 981, -304, 383, 296, 983, 293, + 84, 638, 462, 74, 778, 505, 506, 507, 291, 292, + 888, 84, 307, 826, 991, 829, 311, -125, -125, -125, + 892, 826, 893, 830, 72, 52, 53, 512, 227, 82, + 316, 72, 459, 826, 327, 831, 320, -125, -125, -125, + -125, 335, -125, -125, 654, -107, -107, 442, 443, 227, + 889, -125, 635, 461, 462, 342, 723, 485, -311, -311, + 328, 74, 440, 441, 442, 443, 976, 265, 977, 976, + 794, 987, 737, 84, 418, -125, -125, -125, -311, -311, + -311, -311, 714, -311, -311, 421, 976, -125, 995, 359, + 655, 656, 657, 658, 659, -125, -125, -125, -125, 435, + -125, -125, 117, -125, 536, 294, 76, -125, 2, -125, + 686, 266, 677, 117, 155, 156, 266, 545, 546, 547, + 548, 549, 550, 551, 552, 158, 159, 976, 160, 1000, + 717, 228, 162, 52, 53, 650, 74, 440, 627, 442, + 443, 630, 631, 74, 163, -125, 164, 718, -311, 26, + 27, 733, 228, -22, 29, 166, -24, -123, 703, 52, + 53, -125, -433, 167, 76, -125, 751, -125, 52, 53, + 689, -619, -619, -619, 498, 117, -620, -620, -620, 67, + 782, -123, -123, -123, 785, 40, 514, -506, -506, 796, + 67, 794, 361, -508, -508, 823, 168, -509, -509, 82, + 47, -123, -123, -123, -123, 816, -123, -123, -510, -510, + 724, 723, 818, 270, 825, 401, 402, 847, 270, 850, + 641, 642, 859, 860, 257, 849, 294, 735, 78, 851, + 857, 869, 870, 871, 82, 403, 404, 405, 406, 76, + 407, 408, 881, 84, 875, 905, 76, 906, 920, 926, + 927, -123, 67, 229, 946, 82, 929, 932, 985, 933, + 943, 287, 351, 467, 353, 355, 82, -123, 524, 202, + 203, -123, 356, -123, 229, 204, 358, -127, 84, 360, + 362, 69, 364, 365, 82, 409, 78, 367, 369, 787, + 224, 373, 69, 375, 478, 224, 528, 685, 810, 84, + 527, -127, -127, -127, 988, 410, 919, 637, 723, 80, + 84, 820, 628, 999, 363, 731, 880, 702, 770, 180, + 82, -127, -127, -127, -127, 771, -127, -127, 84, 0, + 0, 0, 0, 0, 230, 0, 0, 0, 0, 0, + 82, 0, 82, 0, 0, 117, 0, 72, 0, 0, + 0, 0, 0, 0, 69, 230, 0, 0, 72, 0, + 0, 78, 0, 0, 84, 724, 0, 80, 78, 0, + 0, -127, 0, 0, 0, 0, 0, 0, 0, 310, + 117, 0, 0, 0, 84, 0, 84, -127, 0, 0, + 82, -127, 225, -127, 82, 0, 0, 225, 0, 82, + 82, 117, 0, -306, -306, 311, 0, 0, 0, 0, + 82, 82, 117, 0, 0, 0, 0, 0, 0, 0, + 72, 0, 67, -306, -306, -306, -306, 0, -306, -306, + 117, 82, 0, 0, 84, 82, 0, 0, 84, 0, + 0, 82, 80, 84, 84, 0, 0, 0, 0, 80, + 0, 0, 379, 0, 84, 84, 0, 67, 226, 74, + 0, 0, 724, 226, 0, 0, 117, 0, 0, 0, + 74, 0, 101, 0, 82, 84, -313, -313, 67, 84, + 0, 0, 82, 0, 0, 84, 117, 0, 117, 67, + 0, 0, 0, -306, 82, 296, -313, -313, -313, -313, + 0, -313, -313, 0, 0, 0, 0, 67, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 84, 0, + 0, 0, 0, 0, 69, 0, 84, 0, 0, 0, + 101, 0, 74, 0, 0, 0, 117, 0, 84, 0, + 117, 0, 0, 67, 0, 117, 117, 0, 0, 0, + 0, 0, 0, 112, 0, 0, 117, 117, 0, 69, + 0, 0, 76, 67, 0, 67, -313, 0, 296, 0, + 227, 0, 0, 76, 0, 227, 0, 117, 241, 0, + 69, 117, 0, 0, 0, 0, 0, 117, 0, 0, + 72, 69, 0, 0, 0, 0, 0, 0, 0, 241, + 0, 0, 0, 0, 0, 101, 382, 0, 0, 69, + 0, 112, 101, 67, 0, 0, 0, 67, 0, 0, + 117, 0, 67, 67, 0, 72, 0, 0, 117, 0, + -317, -317, 383, 67, 67, 76, 0, 0, 0, 371, + 117, 0, 0, 0, 0, 69, 72, 0, 0, 0, + -317, -317, -317, -317, 67, -317, -317, 72, 67, 0, + 0, 0, 0, 334, 67, 69, 0, 69, 0, 0, + 0, 0, 0, 228, 0, 72, 123, 0, 228, 0, + 0, 0, 0, 0, 78, 0, 112, -314, -314, 335, + 0, 0, 0, 112, 0, 78, 0, 67, 0, 0, + 0, 243, 74, 0, -124, 67, 0, -314, -314, -314, + -314, 72, -314, -314, 0, 69, 0, 67, 0, 69, + -317, 0, 243, 0, 69, 69, 0, 0, -124, -124, + -124, 72, 0, 72, 123, 69, 69, 74, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, -124, -124, + -124, -124, 0, -124, -124, 0, 69, 78, 74, 0, + 69, 0, 374, 0, 0, 80, 69, 0, 0, 74, + 0, 0, 0, 336, 0, 0, 80, -314, 64, 296, + 0, 72, 0, 0, 0, 72, 0, 74, 0, 0, + 72, 72, 0, 0, 0, 229, 0, 0, -124, 69, + 229, 72, 72, 222, 0, 76, 0, 69, 0, 123, + 0, 0, 65, 0, -124, 0, 123, 0, -124, 69, + -124, 0, 72, 74, 222, 0, 72, 0, 0, 0, + 0, 0, 72, 0, 0, 0, 64, 223, 80, 0, + 76, 0, 315, 74, 0, 74, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 223, 0, + 0, 76, 0, 0, 0, 72, -308, -308, 316, 0, + 65, 0, 76, 72, 0, 0, 230, 0, 0, 0, + 0, 230, 0, 0, 0, 72, -308, -308, -308, -308, + 76, -308, -308, 74, 0, 0, 0, 74, 0, 0, + 0, 0, 74, 74, 0, 0, 0, 0, 0, 0, + 0, 64, 0, 74, 74, 0, 0, 0, 64, 0, + 0, 0, 0, 0, 0, 0, 76, 78, 101, 0, + 0, 0, 0, 0, 74, 0, 0, 0, 74, 101, + 0, 88, 0, 0, 74, 65, 76, 0, 76, 493, + 494, 495, 65, 0, 0, 0, -308, 0, 296, 0, + 0, 0, 78, 0, 0, 0, 233, 496, 497, 0, + 0, 0, 0, 0, 0, 0, 498, 74, 0, 0, + 0, 0, 0, 78, 0, 74, 0, 267, 0, -128, + 0, 0, 0, 0, 78, 0, 76, 74, 0, 88, + 76, 101, 0, 0, 0, 76, 76, 0, 80, 112, + 0, 0, 78, -128, -128, -128, 76, 76, 0, 0, + 112, 0, 499, 500, 501, 502, 503, 504, 505, 506, + 507, 0, 0, -128, -128, -128, -128, 76, -128, -128, + 0, 76, 0, 80, 0, 0, 0, 76, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 74, 0, 0, 0, 74, 0, 0, 0, 0, - 0, 74, 76, 231, 0, 0, 0, 71, 231, 0, - 0, 0, -132, 67, 0, 71, 0, 78, 0, 0, - 0, 0, 76, 0, 76, 0, 0, 71, 0, 0, - 0, 0, 0, 0, 74, 0, -132, -132, -132, 225, - 0, -130, 74, 0, 0, 0, 0, 0, 66, 0, - 0, 0, 78, 103, 74, 66, -132, -132, -132, -132, - 225, -132, -132, 0, 0, -130, -130, -130, 0, 82, - 0, 67, 76, 78, 0, 0, 76, 0, 0, 0, - 82, 76, 76, 0, 78, -130, -130, -130, -130, 0, - -130, -130, 76, 76, 0, 0, 0, 0, 0, 0, - 0, 0, 78, 0, 0, 0, -132, 0, 0, 0, - 0, 103, 0, 76, 0, 0, 0, 76, 0, 0, - 0, 0, -132, 76, 0, 0, -132, 0, -132, 0, - 0, 0, 0, 0, 0, -130, 80, 0, 78, 0, - 0, 0, 0, 0, 82, 0, 67, 0, 0, 90, - 0, -130, 0, 67, 0, -130, 76, -130, 78, 0, - 78, 0, 0, 0, 76, 0, 0, 0, 0, 0, - 0, 80, 0, 0, 0, 235, 76, 0, 0, 0, - 0, 0, 232, 0, 0, 0, 103, 232, 0, 114, - 311, 0, 80, 103, 0, 0, 269, 0, 0, 0, - 114, 0, 0, 80, 0, 0, 0, 90, 78, 0, - 0, 0, 78, 0, -310, -310, 312, 78, 78, 0, - 0, 80, 0, 0, 0, 0, 0, 0, 78, 78, - 0, 0, 0, 0, -310, -310, -310, -310, 0, -310, - -310, 342, 0, 0, 0, 0, 0, 91, 0, 78, - 0, 125, 0, 78, 0, 0, 0, 80, 0, 78, - 0, 0, 125, 0, 114, -319, -319, 343, 0, 0, - 0, 0, 316, 236, 0, 0, 0, 80, 0, 80, - 0, 0, 90, 0, 0, -319, -319, -319, -319, 90, - -319, -319, 78, 0, 236, 0, -312, -312, 317, 0, - 78, 0, 243, 0, -310, 91, 297, 243, 0, 0, - 0, 0, 78, 0, 0, 82, -312, -312, -312, -312, - 0, -312, -312, 0, 0, 0, 125, 80, 0, 0, - 0, 80, 0, 0, 0, 0, 80, 80, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 80, 80, 324, - 82, 344, 0, 0, 0, -319, 0, 297, 0, 0, - 0, 0, 0, 0, 245, 0, 0, 0, 80, 245, - 66, 82, 80, -314, -314, 325, 0, 0, 80, 418, - 91, 66, 82, 0, 0, 0, -312, 91, 297, 0, - 0, 0, 0, -314, -314, -314, -314, 378, -314, -314, - 82, 0, 0, -311, -311, 419, 92, 0, 0, 0, - 0, 80, 0, 0, 0, 0, 0, 0, 0, 80, - 0, -316, -316, -311, -311, -311, -311, 0, -311, -311, - 0, 80, 237, 0, 95, 114, 82, 0, 0, 0, - 0, -316, -316, -316, -316, 66, -316, -316, 0, 0, - 0, 0, 0, 270, 0, 0, 82, 0, 82, 0, - 238, 0, 0, -314, 92, 297, 0, 0, 67, 0, - 114, 0, 0, 0, 0, 0, 0, 0, 0, 67, - 0, 238, 0, 224, 0, 0, 0, 0, 224, 0, - 0, 114, 95, -311, 0, 297, 0, 125, 0, 0, - 0, 0, 114, 0, 0, 0, 82, 0, 103, 0, - 82, -316, 0, 297, 0, 82, 82, 0, 0, 103, - 114, 0, 0, 0, 0, 0, 82, 82, 0, 0, - 0, 0, 125, 0, 0, 0, 0, 0, 0, 92, - 0, 0, 0, 67, 0, 0, 92, 82, 0, 0, - 0, 82, 0, 125, 0, 0, 114, 82, 0, 0, - 0, 0, 0, 0, 125, 0, 0, 95, 0, 0, - 0, 0, 0, 0, 95, 435, 114, 0, 114, 0, - 0, 225, 125, 103, 0, 0, 225, 0, 0, 0, - 82, 0, 0, 0, 0, 0, 0, 0, 82, -324, - -324, 436, 104, 0, 90, 0, 0, 0, 0, 0, - 82, 0, 0, 0, 0, 90, 66, 0, 125, -324, - -324, -324, -324, 0, -324, -324, 114, 0, 97, 0, - 114, 0, 0, 0, 0, 114, 114, 0, 125, 0, - 125, 0, 0, 0, 0, 0, 114, 114, 0, 0, - 0, 66, 0, 0, 239, 0, 0, 0, 0, 0, - 104, 0, 0, 0, 0, 0, 0, 114, 100, 0, - 0, 114, 66, 0, 0, 271, 0, 114, 0, 90, - 0, 0, 0, 66, 0, 0, 97, 0, 125, -324, - 0, 297, 125, 0, 240, 0, 0, 125, 125, 0, - 0, 66, 91, 0, 0, 0, 0, 0, 125, 125, - 114, 0, 0, 91, 67, 240, 0, 269, 114, 0, - 0, 0, 742, 0, 0, 0, 100, 0, 0, 125, - 114, 0, 0, 125, 0, 104, 0, 66, 0, 125, - 0, 0, 104, 0, 0, 0, 0, 0, 0, 67, - 0, 0, 0, 0, 103, 0, 0, 66, 0, 66, - 0, 97, 0, 0, 0, 0, 0, 0, 97, 0, - 67, 0, 125, 0, 0, 0, 0, 91, 0, 0, - 125, 67, 0, 0, 0, 0, 0, 102, 0, 103, - 0, 0, 125, 0, 0, 0, 0, 0, 0, 67, - 0, 100, 0, 0, 0, 0, 0, 66, 100, 0, - 103, 66, 0, 242, 0, 236, 66, 66, 380, 0, - 236, 103, 0, 0, 0, 0, 0, 66, 66, 0, - 0, 0, 0, 0, 242, 67, 0, 0, 0, 103, - 0, 0, -317, -317, 0, 102, 0, 0, 66, 0, - 90, 0, 66, 0, 0, 67, 0, 67, 66, 0, - 0, 92, -317, -317, -317, -317, 0, -317, -317, 0, - 0, 0, 92, 0, 0, 103, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 90, 0, 0, 0, 95, - 0, 66, 0, 0, 0, 103, 0, 103, 0, 66, - 95, 0, 0, 0, 0, 67, 90, 0, 0, 67, - 0, 66, 0, 0, 67, 67, 0, 90, 0, 0, - 102, 0, 0, 0, 0, 67, 67, 102, 0, 0, - 0, 0, -317, 0, 297, 90, 92, 105, 0, 0, - 0, 0, 0, 0, 0, 103, 67, 0, 91, 103, - 67, 0, 0, 0, 103, 103, 67, 0, 0, 0, - 0, 0, 0, 0, 95, 103, 103, 0, 0, 0, - 0, 90, 0, 0, 270, 0, 0, 0, 0, 743, - 0, 0, 0, 91, 0, 0, 103, 0, 0, 67, - 103, 90, 0, 90, 0, 105, 103, 67, 0, 0, - 0, 0, 238, 0, 91, 0, 0, 238, 0, 67, - 0, 0, 0, 0, 0, 91, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 103, - 0, 0, 0, 91, 0, 0, 0, 103, 0, 0, - 0, 90, 113, 0, 0, 90, 0, 0, 0, 103, - 90, 90, 0, 0, 0, 0, 0, 104, 0, 0, - 0, 90, 90, 0, 0, 0, 0, 0, 104, 91, - 105, 0, 0, 0, 0, 0, 0, 105, 0, 0, - 0, 0, 90, 97, 0, 0, 90, 0, 0, 91, - 0, 91, 90, 0, 97, 0, 0, 0, 0, 0, - 113, 0, 0, 0, 0, 0, 0, 92, 0, 0, + 0, 0, 0, 0, 80, 0, -126, 0, 78, 0, + 78, 0, 0, 0, 88, 80, 0, 0, 0, 0, + 76, 88, 112, -128, 0, 0, 0, 0, 76, 0, + -126, -126, -126, 80, 0, 0, 0, 0, 0, -128, + 76, 0, 0, -128, 0, -128, 0, 0, 0, 0, + -126, -126, -126, -126, 0, -126, -126, 0, 78, 0, + 241, 0, 78, 0, 0, 241, 0, 78, 78, 80, + 0, 0, 123, 89, 0, 0, 0, 0, 78, 78, + 0, 0, 0, 123, 0, 0, 0, 0, 341, 80, + 0, 80, 0, 0, 0, 0, 0, 0, 234, 78, + -126, 0, 0, 78, 0, 0, 0, 0, 0, 78, + 0, 101, -315, -315, 342, 0, -126, 0, 0, 234, + -126, 0, -126, 0, 0, 0, 0, 0, 0, 0, + 0, 89, -315, -315, -315, -315, 0, -315, -315, 80, + 0, 0, 78, 80, 0, 123, 101, 0, 80, 80, + 78, 0, 0, 0, 0, 0, 0, 0, 0, 80, + 80, 0, 78, 0, 0, 0, 0, 101, 0, 0, + 90, 0, 0, 0, 64, 0, 0, 0, 101, 0, + 80, 0, 0, 243, 80, 64, 0, 0, 243, 0, + 80, 0, 112, 0, 0, 235, 101, 0, 343, 0, + 0, 0, -315, 0, 296, 0, 89, 0, 65, 0, + 0, 323, 0, 89, 0, 0, 268, 0, 0, 65, + 417, 0, 0, 80, 0, 0, 0, 112, 90, 0, + 0, 80, 101, 0, 0, -310, -310, 324, 0, 0, + 0, 0, 0, 80, -307, -307, 418, 64, 112, 434, + 0, 0, 101, 0, 101, -310, -310, -310, -310, 112, + -310, -310, 0, 0, -307, -307, -307, -307, 0, -307, + -307, 0, 0, -320, -320, 435, 0, 112, 0, 0, + 0, 65, 93, 0, 0, 222, 0, 0, 0, 0, + 222, 0, 0, -320, -320, -320, -320, 0, -320, -320, + 0, 0, 101, 90, 0, 0, 101, 236, 0, 0, + 90, 101, 101, 112, 0, 123, 0, 0, 0, 223, + 0, 0, 101, 101, 223, -310, 0, 296, 236, 0, + 0, 95, 0, 112, -307, 112, 296, 88, 0, 0, + 93, 0, 0, 101, 0, 0, 0, 101, 88, 0, + 123, 0, 0, 101, 0, 0, 237, 0, 0, 0, + 0, 0, 0, -320, 0, 296, 0, 0, 0, 0, + 0, 123, 0, 0, 0, 0, 0, 269, 0, 0, + 0, 0, 123, 112, 0, 0, 101, 112, 0, 95, + 0, 0, 112, 112, 101, 0, 0, 0, 0, 0, + 123, 0, 0, 112, 112, 0, 101, 0, 0, 0, + 88, 0, 0, 0, 0, 93, 0, 64, 0, 0, + 0, 0, 93, 0, 112, 0, 0, 0, 112, 0, + 0, 0, 0, 0, 112, 0, 123, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 267, 0, + 0, 65, 64, 738, 0, 0, 123, 0, 123, 0, + 0, 0, 0, 0, 95, 0, 0, 112, 0, 0, + 0, 95, 0, 64, 0, 112, 0, 0, 0, 0, + 0, 0, 0, 0, 64, 0, 65, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 100, 0, 90, 0, 0, 0, 0, - 0, 0, 104, 90, 100, 95, 0, 0, 0, 91, - 0, 0, 92, 91, 0, 90, 0, 0, 91, 91, - 0, 0, 0, 0, 0, 0, 0, 0, 97, 91, - 91, 0, 0, 92, 0, 0, 0, 0, 0, 0, - 95, 0, 0, 0, 92, 113, 0, 0, 0, 0, - 91, 0, 113, 0, 91, 0, 0, 0, 0, 0, - 91, 95, 92, 0, 0, 0, 271, 0, 100, 0, - 0, 745, 95, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 64, 0, 0, 0, 123, 65, 0, 0, + 123, 0, 0, 0, 0, 123, 123, 0, 65, 0, + 0, 0, 0, 0, 0, 0, 123, 123, 0, 89, + 0, 0, 0, 0, 0, 0, 65, 0, 64, 0, + 89, 0, 0, 0, 0, 0, 0, 123, 0, 0, + 0, 123, 0, 0, 0, 0, 0, 123, 64, 0, + 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 65, 0, 0, 98, 0, 0, 0, 0, + 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 123, 0, 65, 0, 65, 0, 0, 0, 123, 0, + 238, 0, 89, 0, 0, 0, 0, 0, 64, 0, + 123, 0, 64, 0, 0, 88, 0, 64, 64, 0, + 0, 238, 0, 0, 0, 0, 90, 0, 64, 64, + 0, 0, 0, 98, 0, 0, 88, 90, 0, 0, + 234, 0, 65, 0, 0, 234, 65, 88, 0, 64, + 0, 65, 65, 64, 0, 0, 0, 0, 0, 64, + 0, 0, 65, 65, 0, 88, 0, 0, 0, 0, + 0, 0, 0, 100, 491, 492, 0, 0, 493, 494, + 495, 0, 0, 65, 0, 0, 0, 65, 0, 0, + 0, 0, 64, 65, 0, 0, 496, 497, 240, 90, + 64, 88, 0, 0, 0, 498, 0, 0, 98, 0, + 0, 0, 64, 0, 0, 98, 0, 0, 0, 240, + 0, 88, 0, 88, 0, 0, 65, 0, 102, 0, + 0, 100, 0, 0, 65, 0, 0, 268, 93, 0, + 0, 0, 739, 0, 0, 0, 65, 0, 0, 93, + 0, 499, 500, 501, 502, 503, 504, 505, 506, 507, + 0, 0, 0, 0, 0, 0, 653, 0, 0, 0, + 0, 88, 89, 0, 0, 88, 0, 0, 0, 0, + 88, 88, 0, 0, 0, 0, 102, 95, 0, 0, + 0, 88, 88, 0, 0, 0, 0, 0, 95, 0, + 0, 0, 0, 0, 0, 0, 100, 89, 0, 0, + 0, 93, 88, 100, 0, 0, 88, 0, 0, 0, + 0, 0, 88, 0, 0, 0, 103, 309, 89, 313, + 314, 0, 318, 0, 322, 0, 326, 0, 329, 89, + 332, 0, 339, 0, 346, 370, 376, 0, 0, 236, + 384, 0, 0, 389, 236, 88, 395, 89, 400, 0, + 95, 102, 0, 88, 0, 0, 0, 0, 102, 90, + 0, 0, 0, 0, 0, 88, 0, 424, 0, 0, + 0, 0, 0, 438, 103, 0, 0, 111, 0, 0, + 0, 0, 0, 89, 0, 0, 0, 0, 269, 0, + 0, 0, 0, 741, 90, 0, 0, 0, 0, 0, + 2, 0, 0, 89, 0, 89, 155, 156, 0, 0, + 0, 0, 0, 0, 0, 90, 0, 158, 159, 0, + 160, 0, 0, 0, 162, 0, 90, 0, 0, 0, + 0, 0, 0, 0, 0, 111, 163, 0, 164, 0, + 0, 26, 27, 0, 90, 0, 29, 166, 0, 103, + 0, 0, 0, 89, 0, 167, 103, 89, 0, 0, + 0, 0, 89, 89, 0, 37, 38, 0, 0, 0, + 0, 93, 0, 89, 89, 0, 0, 40, 0, 0, + 90, 0, 0, 0, 0, 0, 0, 0, 168, 0, + 0, 0, 47, 0, 89, 0, 0, 0, 89, 0, + 90, 0, 90, 0, 89, 0, 93, 0, 0, 51, + 111, 0, 0, 0, 275, 0, 0, 111, 0, 0, + 95, 98, 0, 0, 0, 0, 0, 93, 0, 0, + 0, 0, 98, 0, 0, 0, 0, 89, 93, 0, + 0, 0, 0, 0, 0, 89, 0, 0, 0, 0, + 90, 0, 0, 0, 90, 95, 93, 89, 0, 90, + 90, 2, 0, 0, 0, 0, 0, 155, 156, 0, + 90, 90, 0, 0, 0, 0, 95, 0, 158, 159, + 0, 160, 0, 0, 0, 162, 0, 95, 0, 0, + 0, 90, 93, 0, 98, 90, 0, 163, 0, 164, + 0, 90, 26, 27, 0, 95, 0, 29, 166, 0, + 0, 0, 93, 0, 93, 0, 167, 0, 0, 100, + 0, 0, 0, 0, 0, 0, 37, 38, 0, 0, + 100, 0, 238, 0, 90, 0, 0, 238, 40, 0, + 0, 95, 90, 0, 0, 0, 0, 0, 0, 168, + 0, 0, 0, 47, 90, 0, 0, 0, 0, 0, + 0, 95, 93, 95, 0, 0, 93, 0, 0, 0, + 51, 93, 93, 0, 102, 0, 0, 0, 0, 0, + 0, 2, 93, 93, 0, 102, 0, 155, 156, 0, + 0, 0, 100, 0, 0, 0, 0, 0, 158, 159, + 0, 160, 0, 93, 0, 162, 0, 93, 0, 0, + 0, 95, 0, 93, 0, 95, 0, 163, 0, 164, + 95, 95, 26, 27, 0, 0, 0, 29, 166, 0, + 240, 95, 95, 0, 0, 240, 167, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 93, 102, 0, 0, + 0, 0, 95, 0, 93, 0, 95, 0, 40, 0, + 0, 0, 95, 0, 98, 0, 93, 0, 0, 168, + 0, 0, 103, 47, 0, 0, 0, 0, 0, 0, + 2, 0, 0, 103, 0, 0, 155, 156, 0, 0, + 0, 0, 52, 53, 0, 95, 0, 158, 159, 98, + 160, 0, 0, 95, 162, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 95, 163, 0, 164, 0, + 98, 26, 27, 2, 0, 0, 29, 166, 0, 155, + 156, 98, 0, 111, 0, 167, 0, 0, 0, 0, + 158, 159, 0, 160, 111, 103, 0, 162, 0, 98, + 0, 0, 0, 0, 0, 0, 0, 797, 0, 163, + 0, 164, 100, 0, 26, 27, 0, 0, 168, 29, + 166, 0, 47, 0, 0, 0, 0, 0, 167, 0, + 0, 0, 0, 0, 0, 98, 0, 0, 0, 0, + 798, 145, 146, 0, 0, 0, 0, 100, 0, 0, + 40, 0, 0, 0, 0, 98, 111, 98, 0, 0, + 0, 168, 0, 0, 0, 47, 0, 102, 100, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, + 0, 0, 0, 865, 0, 0, 0, 0, 0, 491, + 492, 0, 0, 493, 494, 495, 0, 100, 0, 290, + 0, 0, 102, 0, 0, 98, 0, 0, 0, 98, + 0, 496, 497, 0, 98, 98, 0, 0, 0, 0, + 498, 0, 0, 102, 0, 98, 98, 0, 0, 0, + 0, 0, 0, 100, 102, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 98, 0, 0, 0, + 98, 0, 102, 100, 0, 100, 98, 0, 0, 0, + 0, 0, 0, 0, 0, 103, 499, 500, 501, 502, + 503, 504, 505, 506, 507, 0, 0, 0, 0, 0, + 0, 783, 0, 0, 0, 0, 0, 0, 102, 98, + 474, 0, 0, 0, 0, 0, 0, 98, 0, 0, + 103, 0, 0, 100, 0, 0, 0, 100, 102, 98, + 102, 0, 100, 100, 0, 0, 0, 0, 0, 0, + 0, 103, 0, 100, 100, 0, 111, 0, 0, 0, + 0, 0, 103, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 100, 0, 0, 0, 100, 0, + 103, 513, 0, 0, 100, 0, 0, 0, 102, 518, + 0, 111, 102, 0, 0, 0, 0, 102, 102, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 102, 102, + 0, 0, 111, 0, 0, 0, 103, 100, 0, 529, + 0, 0, 0, 111, 0, 100, 0, 535, 0, 102, + 557, 0, 0, 102, 0, 0, 103, 100, 103, 102, + 0, 111, 0, 0, 0, 569, 0, 2, 0, 0, + 0, 0, 0, 155, 156, 0, 579, 0, 0, 0, + 0, 0, 0, 0, 158, 159, 0, 160, 0, 0, + 0, 162, 102, 0, 0, 0, 0, 111, 0, 0, + 102, 0, 0, 163, 0, 164, 103, 0, 26, 27, + 103, 0, 102, 29, 166, 103, 103, 111, 0, 111, + 0, 0, 167, 0, 0, 0, 103, 103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 95, 0, 0, 91, 0, 0, 0, 0, 92, 0, - 0, 91, 0, 0, 0, 0, 240, 0, 0, 0, - 0, 240, 102, 91, 0, 5, 0, 0, 92, 0, - 92, 157, 158, 102, 0, 0, 95, 0, 0, 0, - 0, 0, 160, 161, 0, 162, 0, 0, 0, 164, - 0, 0, 0, 0, 0, 0, 95, 0, 95, 0, - 0, 165, 0, 166, 0, 0, 29, 30, 0, 0, - 0, 32, 168, 0, 0, 0, 0, 0, 92, 0, - 169, 0, 92, 104, 0, 0, 0, 92, 92, 0, - 0, 0, 0, 0, 0, 0, 0, 102, 92, 92, - 0, 0, 43, 0, 0, 0, 95, 0, 0, 97, - 95, 0, 0, 170, 0, 95, 95, 50, 104, 92, - 0, 0, 0, 92, 0, 0, 95, 95, 0, 92, - 0, 0, 0, 0, 0, 242, 55, 56, 0, 104, - 242, 0, 0, 0, 97, 0, 0, 95, 0, 100, - 104, 95, 0, 0, 0, 0, 0, 95, 0, 0, - 0, 0, 92, 0, 0, 97, 0, 0, 104, 0, - 92, 0, 105, 0, 0, 0, 97, 0, 0, 0, - 0, 0, 92, 105, 100, 0, 0, 0, 0, 0, - 95, 0, 0, 0, 97, 0, 0, 0, 95, 0, - 0, 0, 0, 0, 104, 100, 0, 0, 0, 0, - 95, 0, 0, 0, 0, 0, 100, 0, 0, 0, - 0, 0, 0, 0, 104, 5, 104, 0, 0, 0, - 97, 157, 158, 0, 100, 0, 0, 0, 0, 0, - 0, 0, 160, 161, 0, 162, 0, 105, 0, 164, - 97, 0, 97, 0, 0, 0, 0, 0, 0, 0, - 0, 165, 0, 166, 0, 0, 29, 30, 102, 0, - 100, 32, 168, 0, 104, 0, 0, 113, 104, 0, - 169, 0, 0, 104, 104, 0, 0, 0, 113, 0, - 100, 0, 100, 0, 104, 104, 0, 0, 0, 0, - 97, 0, 43, 102, 97, 0, 0, 0, 0, 97, - 97, 0, 0, 170, 0, 104, 0, 50, 0, 104, - 97, 97, 0, 0, 102, 104, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 102, 0, 0, 0, 0, - 100, 97, 0, 0, 100, 97, 0, 0, 0, 100, - 100, 97, 113, 102, 0, 0, 0, 0, 104, 0, - 100, 100, 0, 0, 0, 0, 104, 0, 147, 0, - 148, 0, 0, 0, 0, 0, 0, 0, 104, 0, - 0, 100, 0, 0, 97, 100, 0, 0, 0, 102, - 0, 100, 97, 0, 0, 0, 0, 0, 0, 5, - 0, 0, 0, 0, 97, 157, 158, 0, 0, 102, - 0, 102, 0, 0, 0, 0, 160, 161, 105, 162, - 0, 0, 0, 164, 100, 0, 291, 0, 0, 0, - 0, 0, 100, 0, 0, 165, 0, 166, 0, 0, - 29, 30, 0, 0, 100, 32, 168, 0, 0, 0, - 0, 0, 0, 105, 169, 0, 0, 0, 0, 102, - 0, 0, 0, 102, 40, 41, 0, 0, 102, 102, - 0, 0, 0, 0, 105, 0, 43, 0, 0, 102, - 102, 0, 0, 0, 0, 105, 0, 170, 0, 0, - 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, - 102, 0, 0, 105, 102, 0, 0, 0, 54, 0, - 102, 0, 0, 277, 0, 0, 0, 475, 0, 0, - 0, 0, 0, 113, 0, 0, 0, 0, 0, 5, - 0, 0, 0, 0, 0, 157, 158, 0, 0, 105, - 0, 0, 0, 102, 0, 0, 160, 161, 0, 162, - 0, 102, 0, 164, 0, 0, 0, 0, 113, 105, - 0, 105, 0, 102, 0, 165, 0, 166, 0, 0, - 29, 30, 0, 0, 0, 32, 168, 0, 514, 113, - 0, 0, 0, 0, 169, 0, 520, 0, 0, 0, - 113, 0, 492, 493, 0, 0, 494, 495, 496, 0, - 0, 0, 0, 0, 0, 0, 801, 0, 113, 105, - 0, 0, 0, 105, 497, 498, 532, 170, 105, 105, - 0, 50, 0, 499, 538, 0, 0, 560, 0, 105, - 105, 0, 0, 0, 0, 0, 0, 0, 0, 802, - 0, 0, 572, 0, 113, 0, 0, 0, 0, 0, - 105, 0, 582, 0, 105, 0, 0, 0, 0, 0, - 105, 0, 0, 0, 113, 0, 113, 0, 0, 500, - 501, 502, 503, 504, 505, 506, 507, 508, 0, 0, - 0, 0, 0, 0, 657, 0, 0, 0, 0, 0, - 0, 0, 0, 105, 0, 0, 0, 0, 0, 0, - 0, 105, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 211, 213, 105, 113, 0, 0, 0, 113, 0, - 0, 0, 223, 113, 113, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 113, 113, 257, 0, 258, 260, - 0, 0, 0, 266, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 282, 0, 113, 0, 0, 0, 113, - 0, 0, 302, 0, 302, 113, 302, 302, 0, 302, - 0, 302, 0, 302, 0, 302, 0, 302, 0, 302, - 0, 302, 351, 302, 0, 0, 0, 302, 0, 0, - 302, 0, 0, 302, 0, 302, 0, 0, 113, 0, - 0, 0, 0, 0, 0, 0, 113, 628, 0, 0, - 0, 0, 0, 0, 302, 0, 0, 0, 113, 0, - 302, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 644, 0, 0, 0, 0, 0, 0, - 649, 0, 0, 655, 0, 656, 0, 0, 476, 476, - 0, 0, 0, 0, 0, 0, 5, 0, 7, 349, - 0, 350, 157, 158, 12, 159, 0, 485, 0, 0, - 14, 15, 16, 160, 161, 0, 162, 685, 686, 0, - 164, 0, 0, 0, 0, 0, 0, 0, 694, 0, - 0, 0, 165, 0, 166, 699, 700, 29, 30, 705, - 0, 708, 32, 168, 0, 0, 0, 0, 0, 476, - 0, 169, 0, 0, 0, 521, 0, 0, 0, 38, - 0, 40, 41, 0, 0, 0, 0, 0, 719, 0, - 0, 0, 0, 43, 0, 0, 0, 736, 0, 0, - 0, 528, 521, 476, 170, 47, 0, 0, 50, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 564, 0, - 0, 0, 0, 0, 0, 54, 0, 0, 0, 0, - 277, 0, 58, 573, 0, 0, 0, 539, 540, 541, - 542, 543, 544, 545, 546, 547, 583, 584, 0, 0, - 548, 549, 550, 551, 552, 553, 554, 555, 0, 0, - 0, 0, 0, 0, 766, 448, 0, -110, -110, 5, - 6, 7, 8, 0, 9, 10, 449, 12, 13, 0, - 0, -533, 0, 14, 15, 16, 17, 18, 450, 451, - 650, 0, 0, 21, 0, 0, 0, 22, 23, 0, - 24, -533, -533, -533, 0, 25, 26, 27, 28, 0, - 29, 30, 0, 0, 31, 32, 33, 792, 0, 0, - 0, 0, 0, 0, 34, 35, 36, 797, 0, 0, - 37, 0, 38, 39, 40, 41, 0, 810, 0, 0, - 0, 0, 0, 0, 0, 42, 43, 44, 45, 282, - 0, 0, 0, 0, 0, 0, 0, 46, 47, 48, - 49, 50, 51, 52, 53, 282, 0, 0, 421, 0, - 0, 0, 0, 0, 826, 0, 828, 0, 54, 0, - 55, 56, 0, 57, 0, 58, 837, 59, 0, 840, - 842, 843, -322, -322, 422, 846, 0, 0, 849, 0, + 0, 0, 0, 0, 40, 0, 0, 103, 0, 0, + 0, 103, 0, 0, 0, 168, 0, 103, 0, 47, + 0, 0, 0, 560, 0, 0, 0, 111, 0, 209, + 211, 111, 0, 0, 0, 0, 111, 111, 0, 0, + 221, 0, 0, 0, 0, 0, 0, 111, 111, 0, + 103, 0, 0, 0, 255, 0, 256, 258, 103, 0, + 0, 264, 0, 0, 0, 0, 0, 0, 111, 0, + 103, 280, 111, 0, 0, 0, 0, 0, 111, 0, + 0, 301, 0, 301, 0, 301, 301, 0, 301, 0, + 301, 624, 301, 0, 301, 0, 301, 0, 301, 0, + 301, 350, 301, 0, 0, 0, 301, 0, 0, 301, + 0, 111, 301, 0, 301, 0, 0, 640, 0, 111, + 0, 0, 0, 0, 645, 0, 0, 651, 0, 652, + 0, 111, 0, 301, 0, 0, 0, 0, 0, 301, + 536, 537, 538, 539, 540, 541, 542, 543, 544, 0, + 0, 0, 0, 545, 546, 547, 548, 549, 550, 551, + 552, 681, 682, 0, 0, 0, 0, 475, 475, 0, + 0, 690, 0, 0, 0, 0, 0, 695, 696, 0, + 0, 701, 0, 704, 0, 0, 484, 0, 0, 0, + 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, + 715, 4, 5, 0, 6, 155, 156, 9, 157, 732, + 0, 0, 0, 11, 12, 13, 158, 159, 475, 160, + 0, 0, 161, 162, 519, 0, 0, 19, 20, 0, + 0, 0, 0, 0, 0, 163, 0, 164, 0, 0, + 26, 27, 0, 0, 165, 29, 166, 0, 0, 0, + 525, 519, 475, 0, 167, 0, 0, 0, 0, 0, + 0, 0, 35, 0, 37, 38, 0, 561, 0, 0, + 0, 0, 0, 0, 0, 762, 40, 0, 0, 0, + 0, 0, 570, 0, 0, 0, 0, 168, 44, 0, + 0, 47, 0, 0, 50, 571, 580, 581, 0, 0, + 0, 169, 170, 0, 0, 0, 0, 0, 51, 572, + 0, 0, 0, 54, 0, 55, 2, 56, 4, 5, + 0, 6, 155, 156, 9, 157, 0, 0, 788, 0, + 11, 12, 13, 158, 159, 0, 160, 0, 793, 161, + 162, 0, 0, 0, 19, 20, 0, 0, 806, 0, + 0, 0, 163, 0, 164, 0, 0, 26, 27, 0, + 0, 165, 29, 166, 0, 0, 0, 0, 0, 0, + 0, 167, 0, 0, 0, 0, 0, 0, 0, 35, + 0, 37, 38, 0, 0, 822, 0, 824, 0, 0, + 0, 0, 0, 40, 0, 0, 0, 833, 0, 280, + 836, 838, 839, 0, 168, 44, 842, 0, 47, 845, + 0, 50, 584, 0, 0, 280, 0, 0, 169, 170, + 0, 0, 0, 0, 0, 51, 171, 0, 0, 0, + 54, 0, 55, 0, 56, 0, 0, 864, 0, 0, + 0, 0, 0, 0, 0, 2, 0, 4, 5, 0, + 6, 155, 156, 9, 157, 0, 0, 0, 0, 11, + 12, 13, 158, 159, 0, 160, 0, 0, 161, 162, + 0, 0, 0, 19, 20, 891, 0, 0, 0, 0, + 0, 163, 896, 164, 0, 899, 26, 27, 191, 0, + 165, 29, 166, 0, 0, 0, 0, 216, 217, 0, + 167, 0, 0, 910, 911, 0, 0, 0, 35, 0, + 37, 38, 0, 0, 0, 922, 0, 683, 0, 0, + 0, 0, 40, 0, 0, 0, 0, 274, 0, 0, + 0, 0, 278, 168, 44, 0, 0, 47, 0, 706, + 50, 0, 941, 0, 710, 0, 0, 169, 170, 0, + 0, 0, 0, 711, 51, 572, 0, 956, 678, 54, + 0, 55, 0, 56, 0, 0, 961, 962, 0, 720, + 965, 0, 264, 967, 968, 0, 0, 736, 0, 0, + 0, 0, 0, 0, 0, 0, 491, 492, 0, 974, + 493, 494, 495, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 0, 496, 497, + 155, 156, 0, 984, 466, 0, 0, 498, 0, 0, + 0, 158, 159, 0, 160, 473, 0, 0, 162, 0, + 0, 0, 479, 0, 0, 759, 760, 0, 0, 481, + 163, 0, 164, 0, 0, 26, 27, 482, 483, 0, + 29, 166, 0, 0, 0, 475, 0, 0, 0, 167, + 0, 0, 0, 499, 500, 501, 502, 503, 504, 505, + 506, 507, 0, 0, 0, 0, 52, 53, 0, 0, + 0, 797, 491, 492, 0, 0, 493, 494, 495, 0, + 0, 475, 168, 0, 789, 0, 47, 0, 791, 792, + 0, 0, 2, 944, 496, 497, 0, 0, 155, 156, + 799, 0, 706, 498, 917, 0, 0, 807, 799, 158, + 159, 0, 160, 814, 720, 0, 162, 530, 0, 0, + 0, 0, 817, 0, 0, 0, 0, 0, 163, 0, + 164, 0, 0, 26, 27, 0, 0, 0, 29, 166, + 0, 568, 0, 278, 0, 0, 0, 167, 0, 499, + 500, 501, 502, 503, 504, 505, 506, 507, 0, 0, + 0, 0, 0, 583, 585, 0, 0, 589, 0, 40, + 0, 0, 0, 0, 590, 0, 0, 0, 591, 0, + 168, 0, 0, 592, 47, 0, 0, 593, 813, 0, + 0, 594, 866, 867, 0, 595, 0, 0, 596, 0, + 0, 0, 597, 0, 0, 0, 0, 0, 0, 599, + 0, 720, 0, 0, 0, 0, 0, 0, 887, 0, + 887, 536, 537, 538, 539, 540, 541, 542, 543, 544, + 887, 0, 887, 0, 545, 546, 547, 548, 549, 550, + 551, 552, 0, 0, 0, 601, 0, 602, 0, 0, + 603, 0, 0, 604, 0, 908, 0, 0, 605, 0, + 912, 0, 0, 2, 608, 918, 0, 0, 807, 155, + 156, 609, 610, 611, 612, 613, 614, 615, 0, 0, + 158, 159, 0, 160, 0, 617, 0, 162, 618, 0, + 0, 0, 0, 0, 619, 0, 620, 0, 621, 163, + 622, 164, 623, 0, 26, 27, 0, 0, 0, 29, + 166, 0, 957, 0, 0, 960, 0, 0, 167, 0, + 0, 0, 964, 0, 0, 0, 0, 0, 37, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, -322, -322, -322, -322, 0, -322, -322, 0, - 0, 0, 0, 0, 0, 0, 868, 0, 0, 0, - 0, -293, -293, -293, -293, -293, -293, -293, -293, -293, - 0, 0, 0, 0, -293, -293, -293, -293, -293, -293, - -293, -293, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 895, 0, 0, 687, 0, 0, - 0, 900, 0, 0, 903, -625, -625, -625, 0, 0, - 0, 0, -322, 0, 297, 0, 0, 0, 0, 0, - 0, 710, 914, 915, 0, 0, 714, 0, 0, 0, - 0, 0, 0, 0, 926, 715, 0, 0, 0, 0, + 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 168, 0, 0, 980, 47, 0, 0, 0, 660, + 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, + 671, 672, 673, 674, 675, 676, 0, 680, 297, 300, + 0, 308, 0, 312, 0, 0, 317, 0, 321, 0, + 325, 691, 1001, 1002, 331, 0, 0, 420, 345, 0, + 0, 0, 378, 381, 0, 0, 0, 388, 0, 393, + 0, 0, 399, 0, 0, 0, 0, 0, 0, 0, + 0, -318, -318, 421, 0, 0, 419, 0, 0, 0, + 0, 423, 191, 0, 728, 0, 0, 437, 0, 0, + 0, -318, -318, -318, -318, 0, -318, -318, 0, 0, + 0, 0, 0, 0, 0, 585, 0, 0, 0, 0, + -289, -289, -289, -289, -289, -289, -289, -289, -289, 0, + 0, 0, 0, -289, -289, -289, -289, -289, -289, -289, + -289, 0, 0, 0, 0, 0, 297, 300, 308, 312, + 317, 321, 325, 756, 331, 0, 345, 378, 381, 0, + 388, 761, 393, 399, -621, -621, -621, 0, 0, 767, + 0, -318, 0, 296, 772, 419, 0, 0, 0, 423, + 0, 437, 780, 0, 0, 0, 0, 0, 331, 330, + 0, 0, 0, 0, 0, 0, 297, 300, 308, 312, + 317, 321, 325, 0, 331, 0, 345, 378, 381, 0, + 388, 393, 399, -316, -316, 419, 423, 437, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 724, 0, 0, 266, 0, 0, 0, 0, 740, - 0, 945, 193, 0, 0, 0, 0, 0, 0, 0, - 0, 218, 219, 0, 0, 0, 960, 0, 331, 0, - 0, 0, 0, 0, 0, 965, 966, 0, 0, 969, - 0, 0, 971, 972, 0, 0, 0, 0, 0, 0, - 0, 276, -320, -320, 0, 0, 280, 0, 978, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 763, 764, - 0, 0, -320, -320, -320, -320, 0, -320, -320, 0, - 0, 0, 988, 0, 0, 0, 0, 0, 476, 0, - 0, -291, -291, -291, -291, -291, -291, -291, -291, -291, - 0, 0, 0, 0, -291, -291, -291, -291, -291, -291, - -291, -291, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 476, 0, 0, 793, 0, 0, - 0, 795, 796, 0, 0, -511, -511, 467, 0, 0, - 0, 0, -320, 803, 297, 710, 0, 0, 474, 0, - 811, 803, 0, 0, 0, 480, 818, 724, 0, 0, - 0, 0, 482, 0, 0, 821, 0, 0, 0, 0, - 483, 484, 0, 0, 0, 0, 5, 0, 7, 8, - 0, 9, 157, 158, 12, 159, 0, 0, 0, 0, - 14, 15, 16, 160, 161, 0, 162, 0, 0, 163, - 164, 0, 0, 0, 22, 23, 0, 0, 0, 0, - 0, 0, 165, 0, 166, 0, 0, 29, 30, 0, - 0, 167, 32, 168, 0, 0, 0, 0, 0, 0, - 0, 169, 0, 0, 0, 870, 871, 0, 0, 38, - 0, 40, 41, 0, 0, 0, 0, 0, 0, 0, - 533, 0, 0, 43, 724, 0, 0, 0, 0, 0, - 0, 891, 0, 891, 170, 47, 0, 0, 50, 0, - 0, 53, 574, 891, 571, 891, 280, 0, 171, 172, - 0, 0, 0, 0, 0, 54, 575, 0, 0, 0, - 57, 0, 58, 0, 59, 586, 588, 0, 912, 592, - 0, 0, 0, 916, 0, 0, 593, 0, 922, 0, - 594, 811, 0, 0, 0, 595, 0, 0, 0, 596, - 0, 0, 0, 597, 0, 0, 0, 598, 0, 0, - 599, 0, 0, 0, 600, 0, 0, 0, 0, 0, - 0, 602, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 961, 0, 0, 964, 0, - 0, 0, 0, 0, 0, 968, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 604, 0, 605, - 0, 0, 606, 0, 0, 607, 0, 0, 0, 0, - 608, 0, 0, 0, 0, 0, 611, 984, 391, 0, - 0, 0, 0, 612, 613, 614, 615, 616, 617, 618, - 0, 0, 0, 0, 0, 0, 0, 620, 0, 0, - 621, 0, -325, -325, 392, 0, 622, 0, 623, 0, - 624, 0, 625, 0, 626, 1005, 1006, 0, 0, 0, - 0, 0, -325, -325, -325, -325, 0, -325, -325, 0, + 0, 0, 0, -316, -316, -316, -316, 0, -316, -316, + 345, 378, 0, 393, 423, 811, 0, 191, 0, 0, + 0, 0, -287, -287, -287, -287, -287, -287, -287, -287, + -287, 0, 0, 0, 0, -287, -287, -287, -287, -287, + -287, -287, -287, 0, 0, 0, 0, 0, 0, 585, + 0, 0, 0, 0, 0, 834, 0, 0, 0, 0, + 0, 841, 0, 0, 0, 0, 0, 846, 0, 0, + 0, 0, 0, -316, 848, 296, 0, 0, 0, 0, + 0, 0, 0, 855, 0, 0, 0, 0, -3, 1, + 0, -26, -26, 2, 3, 4, 5, 0, 6, 7, + 8, 9, 10, 0, 0, 325, 0, 11, 12, 13, + 14, 15, 16, 17, 191, 0, 728, 18, 0, 0, + 0, 19, 20, 0, 21, 0, 0, 0, 0, 22, + 23, 24, 25, 0, 26, 27, 0, 0, 28, 29, + 30, 0, 0, 0, 0, 0, 0, 903, 31, 32, + 33, 0, 0, 0, 34, 907, 35, 36, 37, 38, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, + 40, 41, 42, 0, 924, 0, 0, 0, 0, 0, + 0, 43, 44, 45, 46, 47, 48, 49, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -275, -275, -275, -275, -275, -275, -275, -275, -275, - 0, 0, 0, 0, -275, -275, -275, -275, -275, -275, - -275, -275, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 664, 665, 666, 667, 668, 669, 670, 671, 672, - 673, 674, 675, 676, 677, 678, 679, 680, 393, 684, - 0, 0, -325, 492, 297, 0, 0, 494, 495, 496, - 0, 298, 301, 0, 309, 695, 313, 0, 0, 318, - 0, 322, 0, 326, 0, 497, 498, 332, 320, 0, - 0, 346, 0, 0, 499, 379, 382, 0, 0, 0, - 389, 0, 394, 0, 0, 400, 0, 0, 0, 0, - 0, 0, -313, -313, 321, 0, 193, 0, 732, 420, - 0, 0, 0, 0, 424, 0, 0, 0, 0, 0, - 438, 0, -313, -313, -313, -313, 0, -313, -313, 588, - 500, 501, 502, 503, 504, 505, 506, 507, 508, 0, - 0, -261, -261, -261, -261, -261, -261, -261, -261, -261, - 0, 0, 0, 0, -261, -261, -261, -261, -261, -261, - -261, -261, 0, 0, 0, 0, 0, 0, 760, 298, - 301, 309, 313, 318, 322, 326, 765, 332, 0, 346, - 379, 382, 0, 389, 771, 394, 400, 0, 0, 776, - 0, 0, -313, 0, 297, 0, 0, 784, 420, 0, - 0, 0, 424, 0, 438, 0, 0, 0, 0, 0, - 0, 332, 0, 0, 0, 0, 0, 0, 0, 298, - 301, 309, 313, 318, 322, 326, 0, 332, 0, 346, - 379, 382, 0, 389, 394, 400, 0, 5, 420, 424, - 438, 0, 0, 157, 158, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 160, 161, 0, 162, 0, 0, - 815, 164, 193, 346, 379, 0, 394, 424, 0, 0, - 0, 0, 0, 165, 0, 166, 0, 0, 29, 30, - 0, 0, 0, 32, 168, 0, 0, 0, 0, 0, - 0, 0, 169, 0, 588, 0, 0, 0, 0, 0, - 838, 0, 0, 5, 0, 0, 845, 0, 0, 157, - 158, 0, 850, 0, 43, 0, 0, 0, 0, 852, - 160, 161, 0, 162, 0, 170, 0, 164, 859, 50, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, - 0, 166, 0, 0, 29, 30, 0, 869, 0, 32, - 168, 0, 0, 0, 0, 0, 0, 326, 169, 193, - 0, 732, 0, 0, 0, -3, 286, 0, -27, -27, - 5, 6, 7, 8, 0, 9, 10, 11, 12, 13, - 801, 0, 0, 0, 14, 15, 16, 17, 18, 19, - 20, 170, 907, 0, 21, 50, 0, 0, 22, 23, - 911, 24, 0, 0, 0, 0, 25, 26, 27, 28, - 0, 29, 30, 921, 0, 31, 32, 33, 0, 928, - 0, 0, 0, 0, 0, 34, 35, 36, 0, 0, - 0, 37, 0, 38, 39, 40, 41, 0, 0, 0, - 0, 0, 0, 0, 0, 946, 42, 43, 44, 45, - 0, 0, 0, 0, 0, 0, 0, 0, 46, 47, - 48, 49, 50, 51, 52, 53, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, - 0, 55, 56, 0, 57, 0, 58, 975, 59, 448, - 0, -110, -110, 5, 6, 7, 8, 0, 9, 10, - 449, 12, 13, -506, -506, -506, -506, 14, 15, 16, - 17, 18, 450, 451, 0, 0, 0, 21, 0, 0, - 0, 22, 23, 0, 24, -506, -506, -506, -506, 25, - 26, 27, 28, -506, 29, 30, 0, 0, 31, 32, - 33, 0, 0, 0, 0, 0, 0, 0, 34, 35, - 36, -506, -506, -506, 37, 0, 38, 39, 40, 41, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, - 43, 44, 45, 0, 0, 0, 0, 0, 0, 0, - 0, 46, 47, 48, 49, 50, 51, 52, 53, 0, + 942, 0, 51, 0, 52, 53, 0, 54, 0, 55, + 0, 56, -2, 285, 0, -26, -26, 2, 3, 4, + 5, 0, 6, 7, 8, 9, 10, 0, 0, 0, + 0, 11, 12, 13, 14, 15, 16, 17, 0, 0, + 0, 18, 971, 0, 0, 19, 20, 0, 21, 0, + 0, 0, 0, 22, 23, 24, 25, 0, 26, 27, + 0, 0, 28, 29, 30, 0, 0, 0, 0, 0, + 0, 0, 31, 32, 33, 0, 0, 0, 34, 0, + 35, 36, 37, 38, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 39, 40, 41, 42, 0, 0, 0, + 0, 0, 0, 0, 0, 43, 44, 45, 46, 47, + 48, 49, 50, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 51, 0, 52, 53, + 0, 54, 0, 55, 447, 56, -106, -106, 2, 3, + 4, 5, 0, 6, 7, 448, 9, 10, -502, -502, + -502, -502, 11, 12, 13, 14, 15, 449, 450, 0, + 0, 0, 18, 0, 0, 0, 19, 20, 0, 21, + -502, -502, -502, -502, 22, 23, 24, 25, -502, 26, + 27, 0, 0, 28, 29, 30, 0, 0, 0, 0, + 0, 0, 0, 31, 32, 33, -502, -502, -502, 34, + 0, 35, 36, 37, 38, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 39, 40, 41, 42, 0, 0, + 0, 0, 0, 0, 0, 0, 43, 44, 45, 46, + 47, 48, 49, 50, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 51, 0, 52, + 53, 0, 54, 0, 55, 0, 56, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 423, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 54, 0, 55, 56, 0, 57, 0, 58, - 0, 59, 448, 0, -110, -110, 5, 6, 7, 8, - 0, 9, 10, 449, 12, 13, 0, 0, -534, 0, - 14, 15, 16, 17, 18, 450, 451, 0, 0, 0, - 21, 0, 0, 0, 22, 23, 0, 24, -534, -534, - -534, 0, 25, 26, 27, 28, 0, 29, 30, 0, - 0, 31, 32, 33, 0, 0, 0, 0, 0, 0, - 0, 34, 35, 36, 0, 0, 0, 37, 0, 38, - 39, 40, 41, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 42, 43, 44, 45, 0, 0, 0, 0, - 0, 0, 0, 0, 46, 47, 48, 49, 50, 51, - 52, 53, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 424, 0, 54, 0, 55, 56, 0, - 57, 0, 58, 0, 59, 0, 0, 379, 0, 448, - 394, -110, -110, 5, 6, 7, 8, 0, 9, 10, - 449, 12, 13, 0, 0, -505, 0, 14, 15, 16, - 17, 18, 450, 451, 0, 0, 0, 21, 0, 0, - 0, 22, 23, 0, 24, 0, 0, 0, 0, 25, - 26, 27, 28, 0, 29, 30, 0, 0, 31, 32, - 33, 0, 0, 0, 0, 0, 0, 0, 34, 35, - 36, -505, -505, -505, 37, 0, 38, 39, 40, 41, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, - 43, 44, 45, 0, 0, 0, 0, 0, 0, 0, - 0, 46, 47, 48, 49, 50, 51, 52, 53, 0, + 0, 0, 378, 0, 447, 393, -106, -106, 2, 3, + 4, 5, 0, 6, 7, 448, 9, 10, 0, 0, + -529, 0, 11, 12, 13, 14, 15, 449, 450, 0, + 0, 0, 18, 0, 0, 0, 19, 20, 0, 21, + -529, -529, -529, 0, 22, 23, 24, 25, 0, 26, + 27, 0, 0, 28, 29, 30, 0, 0, 0, 0, + 0, 0, 0, 31, 32, 33, 0, 0, 0, 34, + 0, 35, 36, 37, 38, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 39, 40, 41, 42, 0, 0, + 0, 0, 0, 0, 0, 0, 43, 44, 45, 46, + 47, 48, 49, 50, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 51, 0, 52, + 53, 0, 54, 0, 55, 447, 56, -106, -106, 2, + 3, 4, 5, 0, 6, 7, 448, 9, 10, 0, + 0, -530, 0, 11, 12, 13, 14, 15, 449, 450, + 0, 0, 0, 18, 0, 0, 0, 19, 20, 0, + 21, -530, -530, -530, 0, 22, 23, 24, 25, 0, + 26, 27, 0, 0, 28, 29, 30, 0, 0, 0, + 0, 0, 0, 0, 31, 32, 33, 0, 0, 0, + 34, 0, 35, 36, 37, 38, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 39, 40, 41, 42, 0, + 0, 0, 0, 0, 0, 0, 0, 43, 44, 45, + 46, 47, 48, 49, 50, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 51, 0, + 52, 53, 0, 54, 0, 55, 447, 56, -106, -106, + 2, 3, 4, 5, 0, 6, 7, 448, 9, 10, + 0, 0, -501, 0, 11, 12, 13, 14, 15, 449, + 450, 0, 0, 0, 18, 0, 0, 0, 19, 20, + 0, 21, 0, 0, 0, 0, 22, 23, 24, 25, + 0, 26, 27, 0, 0, 28, 29, 30, 0, 0, + 0, 0, 0, 0, 0, 31, 32, 33, -501, -501, + -501, 34, 0, 35, 36, 37, 38, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 39, 40, 41, 42, + 0, 0, 0, 0, 0, 0, 0, 0, 43, 44, + 45, 46, 47, 48, 49, 50, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, + 0, 52, 53, 0, 54, 0, 55, 447, 56, -106, + -106, 2, 3, 4, 5, 0, 6, 7, 448, 9, + 10, -501, -501, -501, -501, 11, 12, 13, 14, 15, + 449, 450, 0, 0, 0, 18, 0, 0, 0, 19, + 20, 0, 21, 0, 0, 0, 0, 22, 23, 24, + 25, 0, 26, 27, 0, 0, 28, 29, 30, 0, + 0, 0, 0, 0, 0, 0, 31, 32, 33, 0, + 0, 0, 34, 0, 35, 36, 37, 38, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 39, 40, 41, + 42, 0, 0, 0, 0, 0, 0, 0, 0, 43, + 44, 45, 46, 47, 48, 49, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 54, 0, 55, 56, 0, 57, 0, 58, - 448, 59, -110, -110, 5, 6, 7, 8, 0, 9, - 10, 449, 12, 13, -505, -505, -505, -505, 14, 15, - 16, 17, 18, 450, 451, 0, 0, 0, 21, 0, - 0, 0, 22, 23, 0, 24, 0, 0, 0, 0, - 25, 26, 27, 28, 0, 29, 30, 0, 0, 31, - 32, 33, 0, 0, 0, 0, 0, 0, 0, 34, - 35, 36, 0, 0, 0, 37, 0, 38, 39, 40, - 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 42, 43, 44, 45, 0, 0, 0, 0, 0, 0, - 0, 0, 46, 47, 48, 49, 50, 51, 52, 53, + 51, 0, 52, 53, 0, 54, 0, 55, 447, 56, + -106, -106, 2, 3, 4, 5, 0, 6, 7, 448, + 9, 10, 0, 0, -501, 0, 11, 12, 13, 14, + 15, 449, 450, 0, 0, 0, 18, 0, 0, 0, + 19, 20, 0, 21, -501, -501, -501, 0, 22, 23, + 24, 25, 0, 26, 27, 0, 0, 28, 29, 30, + 0, 0, 0, 0, 0, 0, 0, 31, 32, 33, + 0, 0, 0, 34, 0, 35, 36, 37, 38, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 39, 40, + 41, 42, 0, 0, 0, 0, 0, 0, 0, 0, + 43, 44, 45, 46, 47, 48, 49, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 54, 0, 55, 56, 0, 57, 0, - 58, 448, 59, -110, -110, 5, 6, 7, 8, 0, - 9, 10, 449, 12, 13, 0, 0, -505, 0, 14, - 15, 16, 17, 18, 450, 451, 0, 0, 0, 21, - 0, 0, 0, 22, 23, 0, 24, -505, -505, -505, - 0, 25, 26, 27, 28, 0, 29, 30, 0, 0, - 31, 32, 33, 0, 0, 0, 0, 0, 0, 0, - 34, 35, 36, 0, 0, 0, 37, 0, 38, 39, - 40, 41, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 42, 43, 44, 45, 0, 0, 0, 0, 0, - 0, 0, 0, 46, 47, 48, 49, 50, 51, 52, - 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 54, 0, 55, 56, 0, 57, - 0, 58, 448, 59, -110, -110, 5, 6, 7, 8, - 0, 9, 10, 449, 12, 13, 0, 0, -584, 0, - 14, 15, 16, 17, 18, 450, 451, 0, 0, 0, - 21, 0, 0, 0, 22, 23, 0, 24, -584, -584, - 0, 0, 25, 26, 27, 28, 0, 29, 30, 0, - 0, 31, 32, 33, 0, 0, 0, 0, 0, 0, - 0, 34, 35, 36, 0, 0, 0, 37, 0, 38, - 39, 40, 41, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 42, 43, 44, 45, 0, 0, 0, 0, - 0, 0, 0, 0, 46, 47, 48, 49, 50, 51, - 52, 53, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 54, 0, 55, 56, 0, - 57, 0, 58, 448, 59, -110, -110, 5, 6, 7, - 8, 0, 9, 10, 449, 12, 13, 0, 0, -585, - 0, 14, 15, 16, 17, 18, 450, 451, 0, 0, - 0, 21, 0, 0, 0, 22, 23, 0, 24, -585, - -585, 0, 0, 25, 26, 27, 28, 0, 29, 30, - 0, 0, 31, 32, 33, 0, 0, 0, 0, 0, - 0, 0, 34, 35, 36, 0, 0, 0, 37, 0, - 38, 39, 40, 41, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 42, 43, 44, 45, 0, 0, 0, - 0, 0, 0, 0, 0, 46, 47, 48, 49, 50, - 51, 52, 53, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 54, 0, 55, 56, - 0, 57, 0, 58, 448, 59, -110, -110, 5, 6, - 7, 8, 0, 9, 10, 449, 12, 13, 0, 0, - -505, 0, 14, 15, 16, 17, 18, 450, 451, 0, - 0, 0, 21, 0, 0, 0, 22, 23, 0, 24, - 0, -505, -505, 0, 25, 26, 27, 28, 0, 29, - 30, 0, 0, 31, 32, 33, 0, 0, 0, 0, - 0, 0, 0, 34, 35, 36, 0, 0, 0, 37, - 0, 38, 39, 40, 41, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 42, 43, 44, 45, 0, 0, - 0, 0, 0, 0, 0, 0, 46, 47, 48, 49, - 50, 51, 52, 53, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 54, 0, 55, - 56, 0, 57, 0, 58, 448, 59, -110, -110, 5, - 6, 7, 8, 0, 9, 10, 449, 12, 13, 0, - 0, -505, 0, 14, 15, 16, 17, 18, 450, 451, - 0, 0, 0, 21, 0, 0, 0, 22, 23, 0, - 24, -505, -505, 0, 0, 25, 26, 27, 28, 0, - 29, 30, 0, 0, 31, 32, 33, 0, 0, 0, - 0, 0, 0, 0, 34, 35, 36, 0, 0, 0, - 37, 0, 38, 39, 40, 41, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 42, 43, 44, 45, 0, - 0, 0, 0, 0, 0, 0, 0, 46, 47, 48, - 49, 50, 51, 52, 53, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 54, 0, - 55, 56, 0, 57, 0, 58, 448, 59, -110, -110, - 5, 6, 7, 8, 0, 9, 10, 449, 12, 13, - 0, 0, -505, -505, 14, 15, 16, 17, 18, 450, - 451, 0, 0, 0, 21, 0, 0, 0, 22, 23, - 0, 24, 0, 0, 0, 0, 25, 26, 27, 28, - 0, 29, 30, 0, 0, 31, 32, 33, 0, 0, - 0, 0, 0, 0, 0, 34, 35, 36, 0, 0, - 0, 37, 0, 38, 39, 40, 41, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 42, 43, 44, 45, - 0, 0, 0, 0, 0, 0, 0, 0, 46, 47, - 48, 49, 50, 51, 52, 53, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, - 0, 55, 56, 0, 57, 0, 58, 448, 59, -110, - -110, 5, 6, 7, 8, 0, 9, 10, 449, 12, - 13, 0, 0, -505, 0, 14, 15, 16, 17, 18, - 450, 451, 0, 0, 0, 21, 0, 0, 0, 22, - 23, 0, 24, 0, 0, 0, -505, 25, 26, 27, - 28, 0, 29, 30, 0, 0, 31, 32, 33, 0, - 0, 0, 0, 0, 0, 0, 34, 35, 36, 0, - 0, 0, 37, 0, 38, 39, 40, 41, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 42, 43, 44, - 45, 0, 0, 0, 0, 0, 0, 0, 0, 46, - 47, 48, 49, 50, 51, 52, 53, 0, 0, 0, + 0, 51, 0, 52, 53, 0, 54, 0, 55, 447, + 56, -106, -106, 2, 3, 4, 5, 0, 6, 7, + 448, 9, 10, 0, 0, -580, 0, 11, 12, 13, + 14, 15, 449, 450, 0, 0, 0, 18, 0, 0, + 0, 19, 20, 0, 21, -580, -580, 0, 0, 22, + 23, 24, 25, 0, 26, 27, 0, 0, 28, 29, + 30, 0, 0, 0, 0, 0, 0, 0, 31, 32, + 33, 0, 0, 0, 34, 0, 35, 36, 37, 38, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, + 40, 41, 42, 0, 0, 0, 0, 0, 0, 0, + 0, 43, 44, 45, 46, 47, 48, 49, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 54, 0, 55, 56, 0, 57, 0, 58, 448, 59, - -110, -110, 5, 6, 7, 8, 0, 9, 10, 449, - 12, 13, 0, 0, -505, 0, 14, 15, 16, 17, - 18, 450, 451, 0, 0, 0, 21, 0, 0, 0, - 22, 23, 0, 24, 0, 0, 0, 0, 25, 26, - 27, 28, 0, 29, 30, 0, 0, 31, 32, 33, - 0, 0, 0, 0, 0, 0, 0, 34, 35, 36, - 0, 0, -505, 37, 0, 38, 39, 40, 41, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 42, 43, - 44, 45, 0, 0, 0, 0, 0, 0, 0, 0, - 46, 47, 48, 49, 50, 51, 52, 53, 0, 0, + 0, 0, 51, 0, 52, 53, 0, 54, 0, 55, + 447, 56, -106, -106, 2, 3, 4, 5, 0, 6, + 7, 448, 9, 10, 0, 0, -581, 0, 11, 12, + 13, 14, 15, 449, 450, 0, 0, 0, 18, 0, + 0, 0, 19, 20, 0, 21, -581, -581, 0, 0, + 22, 23, 24, 25, 0, 26, 27, 0, 0, 28, + 29, 30, 0, 0, 0, 0, 0, 0, 0, 31, + 32, 33, 0, 0, 0, 34, 0, 35, 36, 37, + 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 39, 40, 41, 42, 0, 0, 0, 0, 0, 0, + 0, 0, 43, 44, 45, 46, 47, 48, 49, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 54, 0, 55, 56, 0, 57, 0, 58, 448, - 59, -110, -110, 5, 6, 7, 8, 0, 9, 10, - 449, 12, 13, 0, 0, -505, 0, 14, 15, 16, - 17, 18, 450, 451, 0, 0, 0, 21, 0, 0, - 0, 22, 23, 0, 24, 0, 0, 0, 0, 25, - 26, 27, 28, -505, 29, 30, 0, 0, 31, 32, - 33, 0, 0, 0, 0, 0, 0, 0, 34, 35, - 36, 0, 0, 0, 37, 0, 38, 39, 40, 41, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, - 43, 44, 45, 0, 0, 0, 0, 0, 0, 0, - 0, 46, 47, 48, 49, 50, 51, 52, 53, 0, + 0, 0, 0, 51, 0, 52, 53, 0, 54, 0, + 55, 447, 56, -106, -106, 2, 3, 4, 5, 0, + 6, 7, 448, 9, 10, 0, 0, -501, 0, 11, + 12, 13, 14, 15, 449, 450, 0, 0, 0, 18, + 0, 0, 0, 19, 20, 0, 21, 0, -501, -501, + 0, 22, 23, 24, 25, 0, 26, 27, 0, 0, + 28, 29, 30, 0, 0, 0, 0, 0, 0, 0, + 31, 32, 33, 0, 0, 0, 34, 0, 35, 36, + 37, 38, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 39, 40, 41, 42, 0, 0, 0, 0, 0, + 0, 0, 0, 43, 44, 45, 46, 47, 48, 49, + 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 51, 0, 52, 53, 0, 54, + 0, 55, 447, 56, -106, -106, 2, 3, 4, 5, + 0, 6, 7, 448, 9, 10, 0, 0, -501, 0, + 11, 12, 13, 14, 15, 449, 450, 0, 0, 0, + 18, 0, 0, 0, 19, 20, 0, 21, -501, -501, + 0, 0, 22, 23, 24, 25, 0, 26, 27, 0, + 0, 28, 29, 30, 0, 0, 0, 0, 0, 0, + 0, 31, 32, 33, 0, 0, 0, 34, 0, 35, + 36, 37, 38, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 39, 40, 41, 42, 0, 0, 0, 0, + 0, 0, 0, 0, 43, 44, 45, 46, 47, 48, + 49, 50, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 51, 0, 52, 53, 0, + 54, 0, 55, 447, 56, -106, -106, 2, 3, 4, + 5, 0, 6, 7, 448, 9, 10, 0, 0, -501, + -501, 11, 12, 13, 14, 15, 449, 450, 0, 0, + 0, 18, 0, 0, 0, 19, 20, 0, 21, 0, + 0, 0, 0, 22, 23, 24, 25, 0, 26, 27, + 0, 0, 28, 29, 30, 0, 0, 0, 0, 0, + 0, 0, 31, 32, 33, 0, 0, 0, 34, 0, + 35, 36, 37, 38, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 39, 40, 41, 42, 0, 0, 0, + 0, 0, 0, 0, 0, 43, 44, 45, 46, 47, + 48, 49, 50, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 51, 0, 52, 53, + 0, 54, 0, 55, 447, 56, -106, -106, 2, 3, + 4, 5, 0, 6, 7, 448, 9, 10, 0, 0, + -501, 0, 11, 12, 13, 14, 15, 449, 450, 0, + 0, 0, 18, 0, 0, 0, 19, 20, 0, 21, + 0, 0, 0, -501, 22, 23, 24, 25, 0, 26, + 27, 0, 0, 28, 29, 30, 0, 0, 0, 0, + 0, 0, 0, 31, 32, 33, 0, 0, 0, 34, + 0, 35, 36, 37, 38, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 39, 40, 41, 42, 0, 0, + 0, 0, 0, 0, 0, 0, 43, 44, 45, 46, + 47, 48, 49, 50, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 51, 0, 52, + 53, 0, 54, 0, 55, 447, 56, -106, -106, 2, + 3, 4, 5, 0, 6, 7, 448, 9, 10, 0, + 0, -501, 0, 11, 12, 13, 14, 15, 449, 450, + 0, 0, 0, 18, 0, 0, 0, 19, 20, 0, + 21, 0, 0, 0, 0, 22, 23, 24, 25, 0, + 26, 27, 0, 0, 28, 29, 30, 0, 0, 0, + 0, 0, 0, 0, 31, 32, 33, 0, 0, -501, + 34, 0, 35, 36, 37, 38, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 39, 40, 41, 42, 0, + 0, 0, 0, 0, 0, 0, 0, 43, 44, 45, + 46, 47, 48, 49, 50, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 51, 0, + 52, 53, 0, 54, 0, 55, 447, 56, -106, -106, + 2, 3, 4, 5, 0, 6, 7, 448, 9, 10, + 0, 0, -501, 0, 11, 12, 13, 14, 15, 449, + 450, 0, 0, 0, 18, 0, 0, 0, 19, 20, + 0, 21, 0, 0, 0, 0, 22, 23, 24, 25, + -501, 26, 27, 0, 0, 28, 29, 30, 0, 0, + 0, 0, 0, 0, 0, 31, 32, 33, 0, 0, + 0, 34, 0, 35, 36, 37, 38, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 39, 40, 41, 42, + 0, 0, 0, 0, 0, 0, 0, 0, 43, 44, + 45, 46, 47, 48, 49, 50, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, + 0, 52, 53, 0, 54, 0, 55, 447, 56, -106, + -106, 2, 3, 4, 5, 0, 6, 7, 448, 9, + 10, 0, 0, 883, 0, 11, 12, 13, 14, 15, + 449, 450, 0, 0, 0, 18, 0, 0, 0, 19, + 20, 0, 21, 0, 0, 0, 0, 22, 23, 24, + 25, 0, 26, 27, 0, 0, 28, 29, 30, 0, + 0, 0, 0, 0, 0, 0, 31, 32, 33, 0, + 0, 0, 34, 0, 35, 36, 37, 38, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 39, 40, 41, + 42, 0, 0, 0, 0, 0, 0, 0, 0, 43, + 44, 45, 46, 47, 48, 49, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 54, 0, 55, 56, 0, 57, 0, 58, - 448, 59, -110, -110, 5, 6, 7, 8, 0, 9, - 10, 449, 12, 13, 0, 0, 887, 0, 14, 15, - 16, 17, 18, 450, 451, 0, 0, 0, 21, 0, - 0, 0, 22, 23, 0, 24, 0, 0, 0, 0, - 25, 26, 27, 28, 0, 29, 30, 0, 0, 31, - 32, 33, 0, 0, 0, 0, 0, 0, 0, 34, - 35, 36, 0, 0, 0, 37, 0, 38, 39, 40, - 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 42, 43, 44, 45, 0, 0, 0, 0, 0, 0, - 0, 0, 46, 47, 48, 49, 50, 51, 52, 53, + 51, 0, 52, 53, 0, 54, 0, 55, 447, 56, + -106, -106, 2, 3, 4, 5, 0, 6, 7, 448, + 9, 10, 0, 0, -501, 0, 11, 12, 13, 14, + 15, 449, 450, 0, 0, 0, 18, 0, 0, 0, + 19, 20, 0, 21, 0, 0, 0, 0, 22, 23, + 24, 25, 0, 26, 27, 0, 0, 28, 29, 30, + 0, 0, 0, 0, 0, 0, 0, 31, 32, 33, + 0, 0, 0, 34, 0, 35, 36, 37, 38, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 39, 40, + 41, 42, 0, 0, 0, 0, 0, 0, 0, 0, + 43, 44, 45, 46, 47, 48, 49, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 54, 0, 55, 56, 0, 57, 0, - 58, 448, 59, -110, -110, 5, 6, 7, 8, 0, - 9, 10, 449, 12, 13, 0, 0, -505, 0, 14, - 15, 16, 17, 18, 450, 451, 0, 0, 0, 21, - 0, 0, 0, 22, 23, 0, 24, 0, 0, 0, - 0, 25, 26, 27, 28, 0, 29, 30, 0, 0, - 31, 32, 33, 0, 0, 0, 0, 0, 0, 0, - 34, 35, 36, 0, 0, 0, 37, 0, 38, 39, - 40, 41, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 42, 43, 44, 45, 0, 0, 0, 0, 0, - 0, 0, 0, 46, 47, 48, 49, 50, 51, 52, - 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 54, 0, 55, 56, 0, 57, - 0, 58, 4, 59, -27, -27, 5, 6, 7, 8, - 0, 9, 10, 11, 12, 13, 0, 0, 0, 0, - 14, 15, 16, 17, 18, 19, 20, 0, 0, 0, - 21, 0, 0, 0, 22, 23, 0, 24, 0, 0, - 0, 0, 25, 26, 27, 28, 0, 29, 30, 0, - 0, 31, 32, 33, 0, 0, 0, 0, 0, 0, - 0, 34, 35, 36, 0, 0, 0, 37, 0, 38, - 39, 40, 41, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 42, 43, 44, 45, 0, 0, 0, 0, - 0, 0, 0, 0, 46, 47, 48, 49, 50, 51, - 52, 53, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 54, 0, 55, 56, 0, - 57, 0, 58, 448, 59, -110, -110, 5, 6, 7, - 8, 0, 9, 10, 449, 12, 13, 0, 0, 0, - 0, 14, 15, 16, 17, 18, 450, 451, 0, 0, - 0, 21, 0, 0, 0, 22, 23, 0, 24, 0, - 0, 0, 0, 25, 26, 27, 28, 0, 29, 30, - 0, 0, 31, 32, 33, 0, 0, 0, 0, 0, - 0, 0, 34, 35, 36, 0, 0, 0, 37, 0, - 38, 39, 40, 41, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 42, 43, 44, 45, 0, 0, 0, - 0, 0, 0, 0, 0, 46, 47, 48, 49, 50, - 51, 52, 53, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 54, 0, 55, 56, - 0, 57, 0, 58, 5, 59, 7, 8, 0, 9, - 157, 158, 12, 159, 0, 0, 0, 0, 14, 15, - 16, 160, 161, 0, 162, 0, 0, 163, 164, 0, - 0, 0, 22, 23, 0, 0, 0, 0, 0, 0, - 165, 0, 166, 0, 0, 29, 30, 0, 0, 167, - 32, 168, 0, 0, 0, 0, 0, 0, 0, 169, - 0, 0, 0, 0, 0, 0, 0, 38, 0, 40, - 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 170, 47, 0, 0, 50, 0, 0, 53, - 587, 0, 0, 0, 0, 0, 171, 172, 0, 0, - 0, 492, 493, 54, 173, 494, 495, 496, 57, 0, - 58, 5, 59, 7, 8, 0, 9, 157, 158, 12, - 159, 0, 0, 497, 498, 14, 15, 16, 160, 161, - 0, 162, 499, 0, 163, 164, 0, 0, 0, 22, - 23, 0, 0, 0, 0, 0, 0, 165, 0, 166, - 0, 0, 29, 30, 0, 0, 167, 32, 168, 0, - 0, 0, 0, 0, 0, 0, 169, 0, 0, 0, - 0, 0, 0, 0, 38, 0, 40, 41, 500, 501, - 502, 503, 504, 505, 506, 507, 508, 0, 43, 0, - 0, 0, 0, 787, 0, 0, 0, 0, 0, 170, - 47, 0, 0, 50, 0, 0, 53, 0, 0, 0, - 0, 0, 0, 171, 172, 0, 0, 0, 0, 0, - 54, 575, 0, 0, 682, 57, 0, 58, 5, 59, - 7, 8, 0, 9, 157, 158, 12, 159, 0, 0, - 0, 0, 14, 15, 16, 160, 161, 0, 162, 0, - 0, 163, 164, 0, 0, 0, 22, 23, 0, 0, - 0, 0, 0, 0, 165, 0, 166, 0, 0, 29, - 30, 0, 0, 167, 32, 168, 0, 0, 0, 0, - 0, 0, 0, 169, 0, 0, 0, 0, 0, 0, - 0, 38, 0, 40, 41, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 170, 47, 0, 0, - 50, 0, 0, 53, 0, 0, 0, 0, 0, 0, - 171, 172, 0, 0, 0, 0, 0, 54, 575, 0, - 0, 723, 57, 0, 58, 5, 59, 7, 8, 0, - 9, 157, 158, 12, 159, 0, 0, 0, 0, 14, - 15, 16, 160, 161, 0, 162, 0, 0, 163, 164, - 0, 0, 0, 22, 23, 0, 0, 0, 0, 0, - 0, 165, 0, 166, 0, 0, 29, 30, 0, 0, - 167, 32, 168, 0, 0, 0, 0, 0, 0, 0, - 169, 0, 0, 0, 0, 0, 0, 0, 38, 0, - 40, 41, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 170, 47, 0, 0, 50, 0, 0, - 53, 0, 0, 0, 0, 0, 0, 171, 172, 0, - 0, 0, 492, 493, 54, 173, 494, 495, 496, 57, - 0, 58, 5, 59, 7, 8, 0, 9, 157, 158, - 12, 159, 0, 0, 497, 498, 14, 15, 16, 160, - 161, 0, 162, 499, 0, 163, 164, 0, 0, 0, - 22, 23, 0, 0, 0, 0, 0, 0, 165, 0, - 166, 0, 0, 29, 30, 0, 0, 167, 32, 168, - 0, 0, 0, 0, 0, 0, 0, 169, 0, 0, - 0, 0, 0, 0, 0, 38, 0, 40, 41, 500, - 501, 502, 503, 504, 505, 506, 507, 508, 0, 43, - 0, 0, 55, 56, 0, 0, 0, 0, 0, 0, - 170, 47, 0, 0, 50, 0, 0, 53, 0, 0, - 0, 0, 0, 0, 171, 172, 0, 0, 0, 492, - 493, 54, 279, 494, 495, 496, 57, 0, 58, 5, - 59, 7, 8, 0, 9, 157, 158, 12, 159, 0, - 948, 497, 498, 14, 15, 16, 160, 161, 0, 162, - 499, 0, 163, 164, 0, 0, 0, 22, 23, 0, - 0, 0, 0, 0, 0, 165, 0, 166, 0, 0, - 29, 30, 0, 0, 167, 32, 168, 0, 0, 0, - 0, 0, 0, 0, 169, 0, 0, 0, 0, 0, - 0, 0, 38, 0, 40, 41, 500, 501, 502, 503, - 504, 505, 506, 507, 508, 0, 43, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 170, 47, 0, - 0, 50, 0, 0, 53, 0, 0, 0, 0, 0, - 0, 171, 172, 0, 0, 0, 492, 493, 54, 731, - 494, 495, 496, 57, 0, 58, 5, 59, 7, 8, - 0, 9, 157, 158, 12, 159, 0, 0, 497, 498, - 14, 15, 16, 160, 161, 0, 162, 499, 0, 163, - 164, 0, 0, 0, 22, 23, 0, 0, 0, 0, - 0, 0, 165, 0, 166, 0, 0, 29, 30, 0, - 0, 167, 32, 168, 0, 0, 0, 0, 0, 0, - 0, 169, 0, 0, 0, 0, 0, 0, 0, 38, - 0, 40, 41, 500, 501, 502, 503, 504, 505, 506, - 507, 508, 0, 43, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 170, 47, 0, 0, 50, 0, - 0, 53, 0, 0, 0, 0, 0, 0, 171, 172, - 0, 0, 0, 0, 0, 54, 575, 494, 495, 496, - 57, 0, 58, 5, 59, 7, 8, 0, 9, 157, - 158, 12, 159, 0, 0, 497, 498, 14, 15, 16, - 160, 161, 0, 162, 499, 0, 0, 164, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, - 0, 166, 0, 0, 29, 30, 0, 0, 167, 32, - 168, 0, 0, 0, 0, 0, 0, 0, 169, 386, - 0, 0, 0, 0, 0, 0, 38, 0, 40, 41, - 500, 501, 502, 503, 504, 505, 506, 507, 508, 0, - 43, 0, 0, -323, -323, 387, 0, 0, 0, 0, - 0, 170, 47, 0, 0, 50, 0, 0, 53, 0, - 0, 0, 0, -323, -323, -323, -323, 0, -323, -323, - 0, 0, 54, 0, 0, 0, 0, 57, 0, 58, - 397, 59, -271, -271, -271, -271, -271, -271, -271, -271, + 0, 51, 0, 52, 53, 0, 54, 0, 55, 447, + 56, -106, -106, 2, 3, 4, 5, 0, 6, 7, + 448, 9, 10, 0, 0, 0, 0, 11, 12, 13, + 14, 15, 449, 450, 0, 0, 0, 18, 0, 0, + 0, 19, 20, 0, 21, 0, 0, 0, 0, 22, + 23, 24, 25, 0, 26, 27, 0, 0, 28, 29, + 30, 0, 0, 0, 0, 0, 0, 0, 31, 32, + 33, 0, 0, 0, 34, 0, 35, 36, 37, 38, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, + 40, 41, 42, 0, 0, 0, 0, 0, 0, 0, + 0, 43, 44, 45, 46, 47, 48, 49, 50, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 51, 0, 52, 53, 0, 54, 0, 55, + 2, 56, 4, 5, 0, 6, 155, 156, 9, 157, + 0, 0, 0, 0, 11, 12, 13, 158, 159, 0, + 160, 0, 0, 161, 162, 0, 0, 0, 19, 20, + 0, 0, 0, 0, 0, 0, 163, 0, 164, 0, + 0, 26, 27, 0, 0, 165, 29, 166, 0, 0, + 0, 0, 0, 0, 0, 167, 0, 0, 0, 0, + 0, 0, 0, 35, 0, 37, 38, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 168, 44, + 0, 0, 47, 0, 0, 50, 0, 0, 0, 0, + 0, 0, 169, 170, 0, 0, 0, 0, 0, 51, + 572, 0, 0, 719, 54, 0, 55, 2, 56, 4, + 5, 0, 6, 155, 156, 9, 157, 0, 0, 0, + 0, 11, 12, 13, 158, 159, 0, 160, 0, 0, + 161, 162, 0, 0, 0, 19, 20, 0, 0, 0, + 0, 0, 0, 163, 0, 164, 0, 0, 26, 27, + 0, 0, 165, 29, 166, 0, 0, 0, 0, 0, + 0, 0, 167, 0, 0, 0, 0, 0, 0, 0, + 35, 0, 37, 38, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 168, 44, 0, 0, 47, + 0, 0, 50, 0, 0, 0, 0, 0, 0, 169, + 170, 0, 0, 0, 491, 492, 51, 171, 493, 494, + 495, 54, 0, 55, 2, 56, 4, 5, 0, 6, + 155, 156, 9, 157, 0, 0, 496, 497, 11, 12, + 13, 158, 159, 0, 160, 498, 0, 161, 162, 0, + 0, 0, 19, 20, 0, 0, 0, 0, 0, 0, + 163, 0, 164, 0, 0, 26, 27, 0, 0, 165, + 29, 166, 0, 0, 0, 0, 0, 0, 0, 167, + 0, 0, 0, 0, 0, 0, 0, 35, 0, 37, + 38, 499, 500, 501, 502, 503, 504, 505, 506, 507, + 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 168, 44, 0, 0, 47, 0, 0, 50, + 0, 0, 0, 0, 0, 0, 169, 170, 0, 0, + 0, 491, 0, 51, 277, 493, 494, 495, 54, 0, + 55, 2, 56, 4, 5, 0, 6, 155, 156, 9, + 157, 0, 0, 496, 497, 11, 12, 13, 158, 159, + 0, 160, 498, 0, 161, 162, 0, 0, 0, 19, + 20, 0, 0, 0, 0, 0, 0, 163, 0, 164, + 0, 0, 26, 27, 0, 0, 165, 29, 166, 0, + 0, 0, 0, 0, 0, 0, 167, 0, 0, 0, + 0, 0, 0, 0, 35, 0, 37, 38, 499, 500, + 501, 502, 503, 504, 505, 506, 507, 0, 40, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 168, + 44, 0, 0, 47, 0, 0, 50, 0, 0, 0, + 0, 0, 0, 169, 170, 0, 0, 0, 0, 0, + 51, 727, 0, 0, 0, 54, 0, 55, 2, 56, + 4, 5, 0, 6, 155, 156, 9, 157, 0, 0, + 0, 0, 11, 12, 13, 158, 159, 0, 160, 0, + 0, 161, 162, 0, 0, 0, 19, 20, 0, 0, + 0, 0, 0, 0, 163, 0, 164, 0, 0, 26, + 27, 0, 0, 165, 29, 166, 0, 0, 0, 0, + 0, 0, 0, 167, 0, 0, 0, 0, 0, 0, + 0, 35, 0, 37, 38, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 168, 44, 0, 0, + 47, 0, 0, 50, 0, 0, 0, 0, 0, 0, + 169, 170, 0, 0, 0, 0, 0, 51, 572, 0, + 0, 0, 54, 0, 55, 2, 56, 4, 5, 0, + 6, 155, 156, 9, 157, 0, 0, 0, 0, 11, + 12, 13, 158, 159, 0, 160, 0, 0, 0, 162, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 163, 0, 164, 0, 0, 26, 27, 0, 0, + 165, 29, 166, 0, 0, 0, 0, 0, 0, 0, + 167, 0, 0, 0, 0, 0, 0, 0, 35, 0, + 37, 38, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 168, 44, 0, 0, 47, 0, 0, + 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 51, 0, 0, 0, 0, 54, + 0, 55, 2, 56, 4, 348, 0, 349, 155, 156, + 9, 157, 0, 0, 0, 0, 11, 12, 13, 158, + 159, 0, 160, 0, 0, 0, 162, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 163, 0, + 164, 0, 0, 26, 27, 0, 0, 0, 29, 166, + 0, 0, 0, 0, 0, 0, 330, 167, 0, 0, + 0, 0, 0, 0, 0, 35, 0, 37, 38, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, + -316, -316, 0, 0, 0, 0, 0, 0, 0, 0, + 168, 44, 0, 0, 47, 0, 0, 0, 0, 0, + -316, -316, -316, -316, 0, -316, -316, 0, 0, 0, + 0, 51, 0, 0, 0, 0, 275, 0, 55, -287, + -287, -287, -287, -287, -287, -287, -287, -287, 0, 390, + 0, 0, -287, -287, -287, -287, -287, -287, -287, -287, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -321, -321, 391, 0, 0, 0, 0, + 0, 0, 0, -507, -507, 0, 0, 0, 0, 0, + -316, 0, 296, -321, -321, -321, -321, 0, -321, -321, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 319, -271, -271, -271, -271, -271, -271, -271, -271, -271, 0, 0, 0, 0, -271, -271, -271, -271, -271, - -271, -271, -271, 0, -326, -326, 398, 0, 0, 0, + -271, -271, -271, 0, 0, -309, -309, 320, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, -326, -326, -326, -326, 0, -326, - -326, 0, 0, -323, 0, 297, 0, 0, 0, 0, - 421, 0, 0, -278, -278, -278, -278, -278, -278, -278, - -278, -278, 0, 0, 0, 0, -278, -278, -278, -278, - -278, -278, -278, -278, -322, -322, 422, 0, 0, 0, + 0, 0, 0, 0, 0, -309, -309, -309, -309, 392, + -309, -309, 0, -321, 0, 296, 0, 0, 0, 0, + 0, 385, 0, 0, -257, -257, -257, -257, -257, -257, + -257, -257, -257, 0, 0, 0, 0, -257, -257, -257, + -257, -257, -257, -257, -257, -319, -319, 386, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, -322, -322, -322, -322, 0, -322, - -322, 0, 0, 0, -326, 0, 297, 0, 0, 0, - 331, 0, 0, -293, -293, -293, -293, -293, -293, -293, - -293, -293, 0, 0, 0, 0, -293, -293, -293, -293, - -293, -293, -293, -293, -320, -320, 0, 0, 0, 0, + 0, 0, 0, 0, 0, -319, -319, -319, -319, 0, + -319, -319, 0, 0, 0, -309, 0, 296, 0, 0, + 0, 396, 0, 0, -267, -267, -267, -267, -267, -267, + -267, -267, -267, 0, 0, 0, 0, -267, -267, -267, + -267, -267, -267, -267, -267, -322, -322, 397, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, -320, -320, -320, -320, 0, -320, - -320, 0, 0, 0, -322, 0, 297, 0, 0, 0, - 0, 0, 0, -291, -291, -291, -291, -291, -291, -291, - -291, -291, 0, 0, 0, 0, -291, -291, -291, -291, - -291, -291, -291, -291, 5, 0, 0, 0, 0, 0, - 157, 158, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 160, 161, 0, 162, 0, 0, 0, 164, 0, - 0, 0, 0, 0, -320, 0, 297, 0, 0, 0, - 165, 0, 166, 0, 0, 29, 30, 5, 0, 0, - 32, 168, 0, 157, 158, 0, 0, 0, 0, 169, - 0, 0, 0, 0, 160, 161, 0, 162, 0, 0, - 0, 164, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 43, 0, 165, 0, 166, 0, 0, 29, 30, - 0, 5, 170, 32, 168, 0, 50, 157, 158, 0, - 0, 0, 169, 0, 0, 0, 0, 0, 160, 161, - 0, 162, 40, 41, 963, 164, 0, 0, 0, 0, - 0, 0, 0, 0, 43, 0, 0, 165, 0, 166, - 0, 0, 29, 30, 5, 170, 0, 32, 168, 50, - 157, 158, 0, 0, 0, 0, 169, 0, 0, 0, - 0, 160, 161, 0, 162, 0, 54, 0, 164, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, - 165, 0, 166, 0, 0, 29, 30, 0, 5, 170, - 32, 168, 0, 50, 157, 158, 0, 563, 0, 169, - 0, 0, 0, 0, 0, 160, 161, 0, 162, 0, - 0, 0, 164, 0, 0, 0, 0, 0, 0, 0, - 0, 43, 0, 0, 165, 0, 166, 0, 0, 29, - 30, 5, 170, 0, 32, 168, 50, 157, 158, 0, - 817, 0, 0, 169, 0, 0, 0, 0, 160, 161, - 0, 162, 0, 0, 0, 164, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 43, 0, 165, 0, 166, - 0, 0, 29, 30, 0, 5, 170, 32, 168, 0, - 50, 157, 158, 0, 888, 0, 169, 0, 0, 0, - 0, 0, 160, 161, 0, 162, 0, 0, 0, 164, - 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, - 0, 165, 0, 166, 0, 0, 29, 30, 0, 170, - 0, 32, 168, 50, 0, 0, 0, 967, 0, 0, - 169, 539, 540, 541, 542, 543, 544, 545, 546, 547, - 40, 41, 0, 0, 548, 549, 550, 551, 552, 553, - 554, 555, 43, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 170, 0, 0, 0, 50, 539, 540, - 541, 542, 543, 544, 545, 546, 547, 0, 918, 0, - 0, 548, 549, 550, 551, 552, 553, 554, 555, 539, - 540, 541, 542, 543, 544, 545, 546, 547, 0, 0, - 0, 0, 548, 549, 550, 551, 552, 553, 554, 555, - 0, 0, 0, 0, 0, 955, 0, 0, 0, 0, - 0, 0, 0, 0, 539, 540, 541, 542, 543, 544, - 545, 546, 547, 0, 0, 0, 982, 548, 549, 550, - 551, 552, 553, 554, 555, 539, 540, 541, 542, 543, - 544, 545, 546, 547, 0, 0, 0, 0, 548, 549, - 550, 551, 552, 553, 554, 555, 0, 0, 0, 0, - 0, 994 + 0, 0, 0, 0, 0, -322, -322, -322, -322, 0, + -322, -322, 0, 0, 0, -319, 0, 296, 0, 0, + 0, 420, 0, 0, -274, -274, -274, -274, -274, -274, + -274, -274, -274, 0, 0, 0, 0, -274, -274, -274, + -274, -274, -274, -274, -274, -318, -318, 421, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, -318, -318, -318, -318, 0, + -318, -318, 0, 0, 0, -322, 0, 296, 0, 0, + 0, 0, 0, 0, -289, -289, -289, -289, -289, -289, + -289, -289, -289, 0, 0, 0, 0, -289, -289, -289, + -289, -289, -289, -289, -289, 2, 0, 0, 0, 0, + 0, 155, 156, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 158, 159, 0, 160, 0, 0, 0, 162, + 0, 0, 0, 0, 0, -318, 0, 296, 0, 0, + 0, 163, 0, 164, 0, 0, 26, 27, 2, 0, + 0, 29, 166, 0, 155, 156, 0, 0, 0, 0, + 167, 0, 0, 0, 0, 158, 159, 0, 160, 0, + 0, 0, 162, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 40, 0, 163, 0, 164, 0, 0, 26, + 27, 0, 2, 168, 29, 166, 0, 47, 155, 156, + 0, 0, 0, 167, 0, 0, 0, 0, 0, 158, + 159, 0, 160, 0, 0, 959, 162, 0, 0, 0, + 0, 0, 0, 0, 0, 40, 0, 0, 163, 0, + 164, 0, 0, 26, 27, 2, 168, 0, 29, 166, + 47, 155, 156, 0, 884, 0, 0, 167, 0, 0, + 0, 0, 158, 159, 0, 160, 0, 0, 0, 162, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, + 0, 163, 0, 164, 0, 0, 26, 27, 0, 0, + 168, 29, 166, 0, 47, 0, 0, 0, 963, 0, + 167, 536, 537, 538, 539, 540, 541, 542, 543, 544, + 0, 0, 0, 0, 545, 546, 547, 548, 549, 550, + 551, 552, 40, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 168, 0, 0, 0, 47, 536, 537, + 538, 539, 540, 541, 542, 543, 544, 0, 914, 0, + 0, 545, 546, 547, 548, 549, 550, 551, 552, 536, + 537, 538, 539, 540, 541, 542, 543, 544, 0, 0, + 0, 0, 545, 546, 547, 548, 549, 550, 551, 552, + 0, 0, 0, 0, 0, 951, 0, 0, 0, 0, + 0, 0, 0, 0, 536, 537, 538, 539, 540, 541, + 542, 543, 544, 0, 0, 0, 978, 545, 546, 547, + 548, 549, 550, 551, 552, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 990 }; static const yytype_int16 yycheck[] = { - 2, 173, 135, 281, 13, 154, 155, 537, 510, 142, - 567, 445, 446, 657, 465, 466, 711, 9, 35, 590, - 723, 716, 13, 9, 3, 4, 28, 652, 35, 9, - 35, 2, 9, 51, 532, 37, 70, 71, 682, 35, - 0, 9, 9, 35, 9, 0, 9, 49, 17, 35, - 118, 9, 2, 118, 122, 35, 9, 59, 60, 124, - 3, 4, 9, 955, 689, 567, 68, 35, 70, 9, - 72, 73, 9, 75, 2, 77, 45, 79, 2, 81, - 114, 83, 35, 85, 35, 87, 88, 89, 35, 60, - 982, 93, 9, 395, 96, 35, 9, 99, 35, 101, - 118, 35, 994, 35, 28, 119, 123, 279, 9, 411, - 60, 103, 119, 37, 119, 9, 35, 820, 120, 10, - 125, 9, 35, 119, 126, 49, 103, 119, 9, 125, - 116, 117, 60, 135, 35, 59, 60, 116, 117, 125, - 142, 35, 786, 787, 68, 125, 70, 35, 72, 73, - 19, 75, 476, 77, 35, 79, 658, 81, 125, 83, - 125, 85, 125, 87, 88, 89, 723, 125, 159, 93, - 9, 119, 96, 116, 117, 99, 17, 101, 125, 116, - 117, 711, 877, 2, 755, 125, 35, 119, 125, 125, - 641, 123, 516, 125, 33, 34, 120, 521, 632, 116, - 117, 123, 126, 118, 528, 120, 119, 35, 125, 28, - 854, 135, 125, 215, 53, 54, 55, 56, 142, 58, - 59, 723, 116, 117, 125, 119, 9, 3, 4, 35, - 49, 125, 35, 9, 35, 54, 829, 125, 35, 35, - 564, 60, 50, 36, 125, 2, 839, 249, 841, 68, - 17, 118, 35, 120, 601, 35, 603, 33, 34, 35, - 35, 759, 609, 820, 83, 123, 85, 35, 87, 88, - 119, 28, 770, 40, 9, 19, 125, 53, 54, 55, - 56, 35, 58, 59, 123, 118, 125, 116, 117, 122, - 788, 84, 49, 86, 35, 123, 35, 125, 91, 35, - 35, 120, 95, 60, 118, 35, 120, 100, 3, 4, - 103, 104, 105, 106, 9, 119, 135, 123, 820, 125, - 113, 35, 125, 142, 457, 119, 119, 103, 125, 125, - 9, 88, 125, 116, 117, 468, 119, 107, 33, 34, - 35, 2, 125, 119, 9, 125, 844, 123, 846, 125, - 125, 120, 145, 146, 33, 34, 35, 125, 53, 54, - 55, 56, 67, 58, 59, 119, 118, 28, 2, 123, - 35, 125, 124, 35, 53, 54, 55, 56, 135, 58, - 59, 116, 117, 119, 125, 142, 125, 123, 49, 125, - 125, 116, 117, 395, 28, 125, 894, 118, 17, 60, - 898, 122, 35, 575, 35, 903, 904, 35, 103, 411, - 51, 125, 35, 33, 34, 49, 914, 915, 51, 38, - 39, 214, 17, 123, 119, 125, 60, 88, 123, 222, - 125, 35, 35, 53, 54, 55, 56, 935, 58, 59, - 119, 939, 37, 38, 123, 918, 125, 945, 116, 117, - 118, 116, 117, 119, 88, 457, 35, 119, 116, 117, - 125, 123, 35, 125, 116, 117, 468, 119, 746, 793, - 35, 395, 796, 9, 135, 116, 117, 118, 35, 803, - 978, 142, 955, 807, 35, 118, 119, 411, 57, 118, - 2, 120, 116, 117, 818, 119, 35, 33, 34, 35, - 118, 135, 120, 123, 17, 654, 35, 980, 142, 982, - 57, 118, 116, 117, 118, 119, 28, 53, 54, 55, - 56, 994, 58, 59, 37, 38, 39, 116, 117, 118, - 532, 3, 4, 457, 116, 117, 118, 49, 107, 108, - 109, 110, 111, 118, 468, 120, 870, 871, 60, 873, - 9, 118, 830, 120, 118, 879, 120, 17, 567, 731, - 116, 117, 109, 110, 111, 5, 118, 891, 570, 19, - 703, 11, 12, 575, 33, 34, 88, 37, 38, 39, - 17, 18, 22, 23, 118, 25, 120, 123, 118, 29, - 120, 118, 916, 120, 53, 54, 55, 56, 922, 58, - 59, 41, 118, 43, 120, 126, 46, 47, 532, 116, - 117, 51, 52, 487, 488, 489, 490, 491, 118, 118, - 60, 120, 17, 135, 116, 117, 2, 115, 116, 117, - 142, 15, 16, 17, 18, 509, 119, 961, 457, 119, - 964, 125, 82, 9, 968, 57, 570, 440, 118, 468, - 9, 575, 28, 93, 116, 117, 118, 97, 116, 117, - 984, 116, 117, 118, 123, 19, 125, 15, 16, 17, - 18, 9, 118, 49, 3, 4, 37, 38, 119, 9, - 118, 121, 63, 64, 60, 119, 120, 119, 690, 9, - 125, 824, 118, 120, 46, 33, 34, 35, 120, 118, - 457, 703, 118, 33, 34, 35, 120, 97, 82, 120, - 120, 468, 88, 532, 723, 53, 54, 55, 56, 120, - 58, 59, 118, 53, 54, 55, 56, 120, 58, 59, - 65, 120, 120, 120, 17, 60, 738, 142, 88, 88, - 246, 88, 88, 88, 88, 2, 88, 88, 567, 88, - 13, 570, 88, 13, 88, 13, 575, 759, 155, 135, - 88, 88, 249, 690, 980, 103, 142, 516, 770, 248, - 874, 28, 717, 103, 738, 532, 446, 465, 998, 703, - 9, 119, 570, 822, 647, 123, 788, 125, 647, 119, - -1, 534, 49, 123, -1, 125, 457, -1, -1, -1, - -1, -1, -1, 60, 33, 34, 35, 468, -1, -1, - -1, 820, 9, 570, 738, -1, -1, -1, 575, -1, - -1, -1, 824, 457, 53, 54, 55, 56, -1, 58, - 59, 88, -1, -1, 468, 759, 33, 34, 35, -1, - -1, -1, 844, -1, 846, -1, 770, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 53, 54, 55, 56, - -1, 58, 59, -1, 788, -1, -1, -1, -1, -1, - -1, 532, -1, -1, -1, -1, -1, -1, 135, -1, - -1, -1, -1, -1, 703, 142, -1, -1, -1, -1, - -1, -1, 894, -1, 123, -1, 898, -1, 532, -1, - 824, 903, 904, -1, 723, -1, -1, -1, -1, 570, - -1, -1, 914, 915, 575, -1, -1, -1, -1, 738, - 844, -1, 846, -1, 2, -1, 123, -1, 125, -1, - -1, -1, -1, 935, -1, 13, 570, 939, 33, 34, - 759, 575, -1, 945, -1, 457, 703, -1, -1, -1, - 28, 770, -1, -1, -1, -1, 468, -1, 53, 54, - 55, 56, -1, 58, 59, -1, -1, -1, -1, 788, - 894, 49, -1, -1, 898, -1, 978, -1, -1, 903, - 904, 738, 60, -1, 986, -1, -1, -1, -1, -1, - 914, 915, -1, -1, -1, -1, 998, -1, -1, -1, - -1, 820, 759, -1, -1, 824, -1, -1, 103, -1, - -1, 935, -1, 770, -1, 939, -1, -1, -1, -1, - 532, 945, -1, -1, -1, 844, -1, 846, 123, -1, - 70, 788, 72, 73, -1, 75, -1, 77, -1, 79, - -1, 81, 703, 83, 2, 85, -1, 87, 88, 89, - -1, -1, -1, 93, 978, -1, 96, 135, 570, 99, - -1, 101, 986, 575, 142, -1, -1, 824, -1, 703, - 28, -1, -1, -1, 998, 894, -1, 738, -1, 898, - 120, 457, -1, -1, 903, 904, 126, 844, -1, 846, - -1, 49, 468, -1, -1, 914, 915, -1, 759, -1, - -1, -1, 60, -1, 738, -1, 2, -1, -1, 770, - -1, -1, -1, -1, -1, -1, 935, -1, -1, -1, - 939, -1, -1, -1, 9, 759, 945, 788, -1, -1, - 88, -1, 28, -1, -1, -1, 770, 894, -1, -1, - -1, 898, -1, -1, -1, -1, 903, 904, 33, 34, - 35, -1, -1, 49, 788, -1, 532, 914, 915, 978, - -1, -1, -1, 824, 60, -1, -1, 986, 53, 54, - 55, 56, -1, 58, 59, -1, -1, 135, 935, 998, - -1, -1, 939, 844, 142, 846, -1, -1, 945, 72, - 824, 703, 88, -1, 570, -1, -1, -1, -1, 575, - 457, -1, 85, 86, 87, 88, 89, 90, 91, 92, - 844, 468, 846, -1, -1, -1, -1, -1, 103, -1, - -1, 978, -1, -1, -1, 2, 738, -1, -1, 986, - -1, -1, -1, 894, 119, -1, -1, 898, 123, 135, - 125, 998, 903, 904, -1, -1, 142, 759, -1, -1, - -1, 28, -1, 914, 915, -1, -1, -1, 770, -1, - 894, -1, -1, -1, 898, -1, -1, -1, -1, 903, - 904, -1, 49, -1, 935, 532, 788, -1, 939, -1, - 914, 915, -1, 60, 945, -1, -1, -1, -1, -1, + 0, 171, 10, 279, 133, 509, 152, 153, 564, 475, + 534, 140, 444, 445, 464, 465, 707, 529, 10, 719, + 648, 712, 653, 35, 587, 25, 9, 119, 9, 9, + 35, 51, 9, 17, 34, 0, 118, 9, 35, 9, + 9, 9, 124, 9, 0, 118, 46, 678, 514, 122, + 9, 9, 35, 519, 35, 35, 56, 685, 58, 525, + 564, 45, 9, 9, 9, 35, 66, 35, 68, 25, + 70, 71, 35, 73, 35, 75, 35, 77, 34, 79, + 394, 81, 9, 83, 35, 85, 86, 87, 35, 35, + 46, 91, 35, 58, 94, 561, 410, 97, 118, 99, + 56, 35, 58, 3, 4, 118, 9, 277, 35, 122, + 66, 35, 68, 125, 70, 71, 816, 73, 118, 75, + 125, 77, 119, 79, 124, 81, 103, 83, 9, 85, + 86, 87, 35, 133, 35, 91, 116, 117, 94, 119, + 140, 97, 125, 99, 125, 125, 0, 116, 117, 9, + 654, 782, 783, 125, 35, 125, 125, 116, 117, 125, + 119, 9, 118, 719, 125, 157, 125, 125, 124, 116, + 117, 25, 123, 119, 9, 35, 9, 133, 125, 125, + 125, 0, 873, 707, 140, 33, 34, 637, 751, 116, + 117, 125, 46, 70, 71, 119, 628, 51, 125, 123, + 35, 125, 35, 0, 58, 53, 54, 55, 56, 35, + 58, 59, 66, 213, 9, 719, 116, 117, 119, 850, + 35, 3, 125, 0, 125, 35, 35, 81, 35, 83, + 17, 85, 86, 116, 117, 116, 117, 114, 9, 58, + 35, 35, 24, 755, 125, 3, 4, 247, 25, 35, + 9, 33, 35, 40, 766, 10, 116, 117, 19, 35, + 816, 58, 33, 34, 118, 125, 598, 35, 600, 46, + 35, 118, 784, 120, 606, 123, 35, 125, 951, 133, + 119, 58, 53, 54, 55, 56, 140, 58, 59, 35, + 125, 35, 125, 119, 35, 35, 118, 123, 120, 125, + 82, 118, 84, 120, 119, 978, 0, 89, 103, 86, + 125, 93, 816, 123, 17, 125, 98, 990, 125, 101, + 102, 103, 104, 789, 119, 0, 792, 456, 840, 111, + 842, 125, 123, 799, 125, 117, 119, 803, 467, 125, + 123, 123, 125, 119, 33, 34, 125, 129, 814, 125, + 25, 119, 123, 123, 125, 123, 133, 125, 116, 117, + 125, 143, 144, 140, 53, 54, 55, 56, 9, 58, + 59, 46, 116, 117, 118, 119, 35, 123, 890, 125, + 35, 9, 894, 58, 125, 125, 118, 899, 900, 57, + 122, 0, 33, 34, 394, 914, 51, 123, 910, 911, + 866, 867, 572, 869, 50, 33, 34, 35, 51, 875, + 410, 86, 53, 54, 55, 56, 25, 58, 59, 931, + 118, 887, 120, 935, 17, 53, 54, 55, 56, 941, + 58, 59, 951, 118, 123, 120, 19, 46, 394, 107, + 108, 109, 110, 111, 37, 38, 912, 119, 17, 58, + 116, 117, 918, 57, 410, 118, 456, 976, 133, 978, + 120, 124, 974, 118, 119, 140, 742, 467, 37, 38, + 39, 990, 119, 116, 117, 118, 107, 86, 116, 117, + 17, 119, 123, 118, 125, 120, 67, 3, 4, 116, + 117, 957, 119, 9, 960, 123, 35, 125, 964, 35, + 456, 38, 39, 0, 650, 109, 110, 111, 3, 4, + 825, 467, 35, 118, 980, 120, 35, 33, 34, 35, + 835, 118, 837, 120, 133, 116, 117, 118, 25, 529, + 35, 140, 17, 118, 9, 120, 35, 53, 54, 55, + 56, 35, 58, 59, 118, 3, 4, 17, 18, 46, + 826, 9, 37, 38, 39, 35, 564, 727, 33, 34, + 35, 58, 15, 16, 17, 18, 118, 567, 120, 118, + 699, 120, 572, 529, 35, 33, 34, 35, 53, 54, + 55, 56, 19, 58, 59, 35, 118, 103, 120, 86, + 486, 487, 488, 489, 490, 53, 54, 55, 56, 35, + 58, 59, 456, 119, 72, 119, 0, 123, 5, 125, + 118, 567, 508, 467, 11, 12, 572, 85, 86, 87, + 88, 89, 90, 91, 92, 22, 23, 118, 25, 120, + 126, 25, 29, 116, 117, 118, 133, 15, 16, 17, + 18, 3, 4, 140, 41, 103, 43, 118, 123, 46, + 47, 17, 46, 119, 51, 52, 119, 9, 115, 116, + 117, 119, 9, 60, 58, 123, 125, 125, 116, 117, + 118, 116, 117, 118, 57, 529, 116, 117, 118, 456, + 118, 33, 34, 35, 9, 82, 686, 116, 117, 19, + 467, 820, 86, 116, 117, 119, 93, 116, 117, 699, + 97, 53, 54, 55, 56, 118, 58, 59, 116, 117, + 564, 719, 118, 567, 119, 33, 34, 9, 572, 118, + 37, 38, 63, 64, 121, 125, 119, 120, 0, 120, + 46, 120, 118, 118, 734, 53, 54, 55, 56, 133, + 58, 59, 97, 699, 120, 120, 140, 120, 82, 120, + 118, 103, 529, 25, 65, 755, 120, 120, 17, 120, + 120, 58, 86, 140, 86, 86, 766, 119, 244, 10, + 10, 123, 86, 125, 46, 10, 86, 9, 734, 86, + 86, 456, 86, 86, 784, 103, 58, 86, 86, 686, + 567, 86, 467, 86, 153, 572, 247, 514, 713, 755, + 246, 33, 34, 35, 976, 123, 870, 464, 816, 0, + 766, 734, 445, 994, 86, 567, 818, 531, 643, 10, + 820, 53, 54, 55, 56, 643, 58, 59, 784, -1, + -1, -1, -1, -1, 25, -1, -1, -1, -1, -1, + 840, -1, 842, -1, -1, 699, -1, 456, -1, -1, + -1, -1, -1, -1, 529, 46, -1, -1, 467, -1, + -1, 133, -1, -1, 820, 719, -1, 58, 140, -1, + -1, 103, -1, -1, -1, -1, -1, -1, -1, 9, + 734, -1, -1, -1, 840, -1, 842, 119, -1, -1, + 890, 123, 567, 125, 894, -1, -1, 572, -1, 899, + 900, 755, -1, 33, 34, 35, -1, -1, -1, -1, + 910, 911, 766, -1, -1, -1, -1, -1, -1, -1, + 529, -1, 699, 53, 54, 55, 56, -1, 58, 59, + 784, 931, -1, -1, 890, 935, -1, -1, 894, -1, + -1, 941, 133, 899, 900, -1, -1, -1, -1, 140, + -1, -1, 9, -1, 910, 911, -1, 734, 567, 456, + -1, -1, 816, 572, -1, -1, 820, -1, -1, -1, + 467, -1, 0, -1, 974, 931, 33, 34, 755, 935, + -1, -1, 982, -1, -1, 941, 840, -1, 842, 766, + -1, -1, -1, 123, 994, 125, 53, 54, 55, 56, + -1, 58, 59, -1, -1, -1, -1, 784, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 974, -1, + -1, -1, -1, -1, 699, -1, 982, -1, -1, -1, + 58, -1, 529, -1, -1, -1, 890, -1, 994, -1, + 894, -1, -1, 820, -1, 899, 900, -1, -1, -1, + -1, -1, -1, 0, -1, -1, 910, 911, -1, 734, + -1, -1, 456, 840, -1, 842, 123, -1, 125, -1, + 567, -1, -1, 467, -1, 572, -1, 931, 25, -1, + 755, 935, -1, -1, -1, -1, -1, 941, -1, -1, + 699, 766, -1, -1, -1, -1, -1, -1, -1, 46, + -1, -1, -1, -1, -1, 133, 9, -1, -1, 784, + -1, 58, 140, 890, -1, -1, -1, 894, -1, -1, + 974, -1, 899, 900, -1, 734, -1, -1, 982, -1, + 33, 34, 35, 910, 911, 529, -1, -1, -1, 86, + 994, -1, -1, -1, -1, 820, 755, -1, -1, -1, + 53, 54, 55, 56, 931, 58, 59, 766, 935, -1, + -1, -1, -1, 9, 941, 840, -1, 842, -1, -1, + -1, -1, -1, 567, -1, 784, 0, -1, 572, -1, + -1, -1, -1, -1, 456, -1, 133, 33, 34, 35, + -1, -1, -1, 140, -1, 467, -1, 974, -1, -1, + -1, 25, 699, -1, 9, 982, -1, 53, 54, 55, + 56, 820, 58, 59, -1, 890, -1, 994, -1, 894, + 123, -1, 46, -1, 899, 900, -1, -1, 33, 34, + 35, 840, -1, 842, 58, 910, 911, 734, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 53, 54, + 55, 56, -1, 58, 59, -1, 931, 529, 755, -1, + 935, -1, 86, -1, -1, 456, 941, -1, -1, 766, + -1, -1, -1, 119, -1, -1, 467, 123, 0, 125, + -1, 890, -1, -1, -1, 894, -1, 784, -1, -1, + 899, 900, -1, -1, -1, 567, -1, -1, 103, 974, + 572, 910, 911, 25, -1, 699, -1, 982, -1, 133, + -1, -1, 0, -1, 119, -1, 140, -1, 123, 994, + 125, -1, 931, 820, 46, -1, 935, -1, -1, -1, + -1, -1, 941, -1, -1, -1, 58, 25, 529, -1, + 734, -1, 9, 840, -1, 842, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 46, -1, + -1, 755, -1, -1, -1, 974, 33, 34, 35, -1, + 58, -1, 766, 982, -1, -1, 567, -1, -1, -1, + -1, 572, -1, -1, -1, 994, 53, 54, 55, 56, + 784, 58, 59, 890, -1, -1, -1, 894, -1, -1, + -1, -1, 899, 900, -1, -1, -1, -1, -1, -1, + -1, 133, -1, 910, 911, -1, -1, -1, 140, -1, + -1, -1, -1, -1, -1, -1, 820, 699, 456, -1, + -1, -1, -1, -1, 931, -1, -1, -1, 935, 467, + -1, 0, -1, -1, 941, 133, 840, -1, 842, 30, + 31, 32, 140, -1, -1, -1, 123, -1, 125, -1, + -1, -1, 734, -1, -1, -1, 25, 48, 49, -1, + -1, -1, -1, -1, -1, -1, 57, 974, -1, -1, + -1, -1, -1, 755, -1, 982, -1, 46, -1, 9, + -1, -1, -1, -1, 766, -1, 890, 994, -1, 58, + 894, 529, -1, -1, -1, 899, 900, -1, 699, 456, + -1, -1, 784, 33, 34, 35, 910, 911, -1, -1, + 467, -1, 103, 104, 105, 106, 107, 108, 109, 110, + 111, -1, -1, 53, 54, 55, 56, 931, 58, 59, + -1, 935, -1, 734, -1, -1, -1, 941, 820, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 935, -1, -1, -1, 939, -1, -1, -1, -1, - -1, 945, 824, 570, -1, -1, -1, 978, 575, -1, - -1, -1, 9, 2, -1, 986, -1, 703, -1, -1, - -1, -1, 844, -1, 846, -1, -1, 998, -1, -1, - -1, -1, -1, -1, 978, -1, 33, 34, 35, 28, - -1, 9, 986, -1, -1, -1, -1, -1, 135, -1, - -1, -1, 738, 2, 998, 142, 53, 54, 55, 56, - 49, 58, 59, -1, -1, 33, 34, 35, -1, 457, - -1, 60, 894, 759, -1, -1, 898, -1, -1, -1, - 468, 903, 904, -1, 770, 53, 54, 55, 56, -1, - 58, 59, 914, 915, -1, -1, -1, -1, -1, -1, - -1, -1, 788, -1, -1, -1, 103, -1, -1, -1, - -1, 60, -1, 935, -1, -1, -1, 939, -1, -1, - -1, -1, 119, 945, -1, -1, 123, -1, 125, -1, - -1, -1, -1, -1, -1, 103, 703, -1, 824, -1, - -1, -1, -1, -1, 532, -1, 135, -1, -1, 2, - -1, 119, -1, 142, -1, 123, 978, 125, 844, -1, - 846, -1, -1, -1, 986, -1, -1, -1, -1, -1, - -1, 738, -1, -1, -1, 28, 998, -1, -1, -1, - -1, -1, 570, -1, -1, -1, 135, 575, -1, 457, - 9, -1, 759, 142, -1, -1, 49, -1, -1, -1, - 468, -1, -1, 770, -1, -1, -1, 60, 894, -1, - -1, -1, 898, -1, 33, 34, 35, 903, 904, -1, - -1, 788, -1, -1, -1, -1, -1, -1, 914, 915, - -1, -1, -1, -1, 53, 54, 55, 56, -1, 58, - 59, 9, -1, -1, -1, -1, -1, 2, -1, 935, - -1, 457, -1, 939, -1, -1, -1, 824, -1, 945, - -1, -1, 468, -1, 532, 33, 34, 35, -1, -1, - -1, -1, 9, 28, -1, -1, -1, 844, -1, 846, - -1, -1, 135, -1, -1, 53, 54, 55, 56, 142, - 58, 59, 978, -1, 49, -1, 33, 34, 35, -1, - 986, -1, 570, -1, 123, 60, 125, 575, -1, -1, - -1, -1, 998, -1, -1, 703, 53, 54, 55, 56, - -1, 58, 59, -1, -1, -1, 532, 894, -1, -1, - -1, 898, -1, -1, -1, -1, 903, 904, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 914, 915, 9, - 738, 119, -1, -1, -1, 123, -1, 125, -1, -1, - -1, -1, -1, -1, 570, -1, -1, -1, 935, 575, - 457, 759, 939, 33, 34, 35, -1, -1, 945, 9, - 135, 468, 770, -1, -1, -1, 123, 142, 125, -1, - -1, -1, -1, 53, 54, 55, 56, 9, 58, 59, - 788, -1, -1, 33, 34, 35, 2, -1, -1, -1, - -1, 978, -1, -1, -1, -1, -1, -1, -1, 986, - -1, 33, 34, 53, 54, 55, 56, -1, 58, 59, - -1, 998, 28, -1, 2, 703, 824, -1, -1, -1, - -1, 53, 54, 55, 56, 532, 58, 59, -1, -1, - -1, -1, -1, 49, -1, -1, 844, -1, 846, -1, - 28, -1, -1, 123, 60, 125, -1, -1, 457, -1, - 738, -1, -1, -1, -1, -1, -1, -1, -1, 468, - -1, 49, -1, 570, -1, -1, -1, -1, 575, -1, - -1, 759, 60, 123, -1, 125, -1, 703, -1, -1, - -1, -1, 770, -1, -1, -1, 894, -1, 457, -1, - 898, 123, -1, 125, -1, 903, 904, -1, -1, 468, - 788, -1, -1, -1, -1, -1, 914, 915, -1, -1, - -1, -1, 738, -1, -1, -1, -1, -1, -1, 135, - -1, -1, -1, 532, -1, -1, 142, 935, -1, -1, - -1, 939, -1, 759, -1, -1, 824, 945, -1, -1, - -1, -1, -1, -1, 770, -1, -1, 135, -1, -1, - -1, -1, -1, -1, 142, 9, 844, -1, 846, -1, - -1, 570, 788, 532, -1, -1, 575, -1, -1, -1, - 978, -1, -1, -1, -1, -1, -1, -1, 986, 33, - 34, 35, 2, -1, 457, -1, -1, -1, -1, -1, - 998, -1, -1, -1, -1, 468, 703, -1, 824, 53, - 54, 55, 56, -1, 58, 59, 894, -1, 2, -1, - 898, -1, -1, -1, -1, 903, 904, -1, 844, -1, - 846, -1, -1, -1, -1, -1, 914, 915, -1, -1, - -1, 738, -1, -1, 28, -1, -1, -1, -1, -1, - 60, -1, -1, -1, -1, -1, -1, 935, 2, -1, - -1, 939, 759, -1, -1, 49, -1, 945, -1, 532, - -1, -1, -1, 770, -1, -1, 60, -1, 894, 123, - -1, 125, 898, -1, 28, -1, -1, 903, 904, -1, - -1, 788, 457, -1, -1, -1, -1, -1, 914, 915, - 978, -1, -1, 468, 703, 49, -1, 570, 986, -1, - -1, -1, 575, -1, -1, -1, 60, -1, -1, 935, - 998, -1, -1, 939, -1, 135, -1, 824, -1, 945, - -1, -1, 142, -1, -1, -1, -1, -1, -1, 738, - -1, -1, -1, -1, 703, -1, -1, 844, -1, 846, - -1, 135, -1, -1, -1, -1, -1, -1, 142, -1, - 759, -1, 978, -1, -1, -1, -1, 532, -1, -1, - 986, 770, -1, -1, -1, -1, -1, 2, -1, 738, - -1, -1, 998, -1, -1, -1, -1, -1, -1, 788, - -1, 135, -1, -1, -1, -1, -1, 894, 142, -1, - 759, 898, -1, 28, -1, 570, 903, 904, 9, -1, - 575, 770, -1, -1, -1, -1, -1, 914, 915, -1, - -1, -1, -1, -1, 49, 824, -1, -1, -1, 788, - -1, -1, 33, 34, -1, 60, -1, -1, 935, -1, - 703, -1, 939, -1, -1, 844, -1, 846, 945, -1, - -1, 457, 53, 54, 55, 56, -1, 58, 59, -1, - -1, -1, 468, -1, -1, 824, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 738, -1, -1, -1, 457, - -1, 978, -1, -1, -1, 844, -1, 846, -1, 986, - 468, -1, -1, -1, -1, 894, 759, -1, -1, 898, - -1, 998, -1, -1, 903, 904, -1, 770, -1, -1, - 135, -1, -1, -1, -1, 914, 915, 142, -1, -1, - -1, -1, 123, -1, 125, 788, 532, 2, -1, -1, - -1, -1, -1, -1, -1, 894, 935, -1, 703, 898, - 939, -1, -1, -1, 903, 904, 945, -1, -1, -1, - -1, -1, -1, -1, 532, 914, 915, -1, -1, -1, - -1, 824, -1, -1, 570, -1, -1, -1, -1, 575, - -1, -1, -1, 738, -1, -1, 935, -1, -1, 978, - 939, 844, -1, 846, -1, 60, 945, 986, -1, -1, - -1, -1, 570, -1, 759, -1, -1, 575, -1, 998, - -1, -1, -1, -1, -1, 770, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 978, - -1, -1, -1, 788, -1, -1, -1, 986, -1, -1, - -1, 894, 2, -1, -1, 898, -1, -1, -1, 998, - 903, 904, -1, -1, -1, -1, -1, 457, -1, -1, - -1, 914, 915, -1, -1, -1, -1, -1, 468, 824, - 135, -1, -1, -1, -1, -1, -1, 142, -1, -1, - -1, -1, 935, 457, -1, -1, 939, -1, -1, 844, - -1, 846, 945, -1, 468, -1, -1, -1, -1, -1, - 60, -1, -1, -1, -1, -1, -1, 703, -1, -1, + -1, -1, -1, -1, 755, -1, 9, -1, 840, -1, + 842, -1, -1, -1, 133, 766, -1, -1, -1, -1, + 974, 140, 529, 103, -1, -1, -1, -1, 982, -1, + 33, 34, 35, 784, -1, -1, -1, -1, -1, 119, + 994, -1, -1, 123, -1, 125, -1, -1, -1, -1, + 53, 54, 55, 56, -1, 58, 59, -1, 890, -1, + 567, -1, 894, -1, -1, 572, -1, 899, 900, 820, + -1, -1, 456, 0, -1, -1, -1, -1, 910, 911, + -1, -1, -1, 467, -1, -1, -1, -1, 9, 840, + -1, 842, -1, -1, -1, -1, -1, -1, 25, 931, + 103, -1, -1, 935, -1, -1, -1, -1, -1, 941, + -1, 699, 33, 34, 35, -1, 119, -1, -1, 46, + 123, -1, 125, -1, -1, -1, -1, -1, -1, -1, + -1, 58, 53, 54, 55, 56, -1, 58, 59, 890, + -1, -1, 974, 894, -1, 529, 734, -1, 899, 900, + 982, -1, -1, -1, -1, -1, -1, -1, -1, 910, + 911, -1, 994, -1, -1, -1, -1, 755, -1, -1, + 0, -1, -1, -1, 456, -1, -1, -1, 766, -1, + 931, -1, -1, 567, 935, 467, -1, -1, 572, -1, + 941, -1, 699, -1, -1, 25, 784, -1, 119, -1, + -1, -1, 123, -1, 125, -1, 133, -1, 456, -1, + -1, 9, -1, 140, -1, -1, 46, -1, -1, 467, + 9, -1, -1, 974, -1, -1, -1, 734, 58, -1, + -1, 982, 820, -1, -1, 33, 34, 35, -1, -1, + -1, -1, -1, 994, 33, 34, 35, 529, 755, 9, + -1, -1, 840, -1, 842, 53, 54, 55, 56, 766, + 58, 59, -1, -1, 53, 54, 55, 56, -1, 58, + 59, -1, -1, 33, 34, 35, -1, 784, -1, -1, + -1, 529, 0, -1, -1, 567, -1, -1, -1, -1, + 572, -1, -1, 53, 54, 55, 56, -1, 58, 59, + -1, -1, 890, 133, -1, -1, 894, 25, -1, -1, + 140, 899, 900, 820, -1, 699, -1, -1, -1, 567, + -1, -1, 910, 911, 572, 123, -1, 125, 46, -1, + -1, 0, -1, 840, 123, 842, 125, 456, -1, -1, + 58, -1, -1, 931, -1, -1, -1, 935, 467, -1, + 734, -1, -1, 941, -1, -1, 25, -1, -1, -1, + -1, -1, -1, 123, -1, 125, -1, -1, -1, -1, + -1, 755, -1, -1, -1, -1, -1, 46, -1, -1, + -1, -1, 766, 890, -1, -1, 974, 894, -1, 58, + -1, -1, 899, 900, 982, -1, -1, -1, -1, -1, + 784, -1, -1, 910, 911, -1, 994, -1, -1, -1, + 529, -1, -1, -1, -1, 133, -1, 699, -1, -1, + -1, -1, 140, -1, 931, -1, -1, -1, 935, -1, + -1, -1, -1, -1, 941, -1, 820, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 567, -1, + -1, 699, 734, 572, -1, -1, 840, -1, 842, -1, + -1, -1, -1, -1, 133, -1, -1, 974, -1, -1, + -1, 140, -1, 755, -1, 982, -1, -1, -1, -1, + -1, -1, -1, -1, 766, -1, 734, 994, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 457, -1, 978, -1, -1, -1, -1, - -1, -1, 532, 986, 468, 703, -1, -1, -1, 894, - -1, -1, 738, 898, -1, 998, -1, -1, 903, 904, - -1, -1, -1, -1, -1, -1, -1, -1, 532, 914, - 915, -1, -1, 759, -1, -1, -1, -1, -1, -1, - 738, -1, -1, -1, 770, 135, -1, -1, -1, -1, - 935, -1, 142, -1, 939, -1, -1, -1, -1, -1, - 945, 759, 788, -1, -1, -1, 570, -1, 532, -1, - -1, 575, 770, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 784, -1, -1, -1, 890, 755, -1, -1, + 894, -1, -1, -1, -1, 899, 900, -1, 766, -1, + -1, -1, -1, -1, -1, -1, 910, 911, -1, 456, + -1, -1, -1, -1, -1, -1, 784, -1, 820, -1, + 467, -1, -1, -1, -1, -1, -1, 931, -1, -1, + -1, 935, -1, -1, -1, -1, -1, 941, 840, -1, + 842, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 820, -1, -1, 0, -1, -1, -1, -1, + 699, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 974, -1, 840, -1, 842, -1, -1, -1, 982, -1, + 25, -1, 529, -1, -1, -1, -1, -1, 890, -1, + 994, -1, 894, -1, -1, 734, -1, 899, 900, -1, + -1, 46, -1, -1, -1, -1, 456, -1, 910, 911, + -1, -1, -1, 58, -1, -1, 755, 467, -1, -1, + 567, -1, 890, -1, -1, 572, 894, 766, -1, 931, + -1, 899, 900, 935, -1, -1, -1, -1, -1, 941, + -1, -1, 910, 911, -1, 784, -1, -1, -1, -1, + -1, -1, -1, 0, 26, 27, -1, -1, 30, 31, + 32, -1, -1, 931, -1, -1, -1, 935, -1, -1, + -1, -1, 974, 941, -1, -1, 48, 49, 25, 529, + 982, 820, -1, -1, -1, 57, -1, -1, 133, -1, + -1, -1, 994, -1, -1, 140, -1, -1, -1, 46, + -1, 840, -1, 842, -1, -1, 974, -1, 0, -1, + -1, 58, -1, -1, 982, -1, -1, 567, 456, -1, + -1, -1, 572, -1, -1, -1, 994, -1, -1, 467, + -1, 103, 104, 105, 106, 107, 108, 109, 110, 111, + -1, -1, -1, -1, -1, -1, 118, -1, -1, -1, + -1, 890, 699, -1, -1, 894, -1, -1, -1, -1, + 899, 900, -1, -1, -1, -1, 58, 456, -1, -1, + -1, 910, 911, -1, -1, -1, -1, -1, 467, -1, + -1, -1, -1, -1, -1, -1, 133, 734, -1, -1, + -1, 529, 931, 140, -1, -1, 935, -1, -1, -1, + -1, -1, 941, -1, -1, -1, 0, 68, 755, 70, + 71, -1, 73, -1, 75, -1, 77, -1, 79, 766, + 81, -1, 83, -1, 85, 86, 87, -1, -1, 567, + 91, -1, -1, 94, 572, 974, 97, 784, 99, -1, + 529, 133, -1, 982, -1, -1, -1, -1, 140, 699, + -1, -1, -1, -1, -1, 994, -1, 118, -1, -1, + -1, -1, -1, 124, 58, -1, -1, 0, -1, -1, + -1, -1, -1, 820, -1, -1, -1, -1, 567, -1, + -1, -1, -1, 572, 734, -1, -1, -1, -1, -1, + 5, -1, -1, 840, -1, 842, 11, 12, -1, -1, + -1, -1, -1, -1, -1, 755, -1, 22, 23, -1, + 25, -1, -1, -1, 29, -1, 766, -1, -1, -1, + -1, -1, -1, -1, -1, 58, 41, -1, 43, -1, + -1, 46, 47, -1, 784, -1, 51, 52, -1, 133, + -1, -1, -1, 890, -1, 60, 140, 894, -1, -1, + -1, -1, 899, 900, -1, 70, 71, -1, -1, -1, + -1, 699, -1, 910, 911, -1, -1, 82, -1, -1, + 820, -1, -1, -1, -1, -1, -1, -1, 93, -1, + -1, -1, 97, -1, 931, -1, -1, -1, 935, -1, + 840, -1, 842, -1, 941, -1, 734, -1, -1, 114, + 133, -1, -1, -1, 119, -1, -1, 140, -1, -1, + 699, 456, -1, -1, -1, -1, -1, 755, -1, -1, + -1, -1, 467, -1, -1, -1, -1, 974, 766, -1, + -1, -1, -1, -1, -1, 982, -1, -1, -1, -1, + 890, -1, -1, -1, 894, 734, 784, 994, -1, 899, + 900, 5, -1, -1, -1, -1, -1, 11, 12, -1, + 910, 911, -1, -1, -1, -1, 755, -1, 22, 23, + -1, 25, -1, -1, -1, 29, -1, 766, -1, -1, + -1, 931, 820, -1, 529, 935, -1, 41, -1, 43, + -1, 941, 46, 47, -1, 784, -1, 51, 52, -1, + -1, -1, 840, -1, 842, -1, 60, -1, -1, 456, + -1, -1, -1, -1, -1, -1, 70, 71, -1, -1, + 467, -1, 567, -1, 974, -1, -1, 572, 82, -1, + -1, 820, 982, -1, -1, -1, -1, -1, -1, 93, + -1, -1, -1, 97, 994, -1, -1, -1, -1, -1, + -1, 840, 890, 842, -1, -1, 894, -1, -1, -1, + 114, 899, 900, -1, 456, -1, -1, -1, -1, -1, + -1, 5, 910, 911, -1, 467, -1, 11, 12, -1, + -1, -1, 529, -1, -1, -1, -1, -1, 22, 23, + -1, 25, -1, 931, -1, 29, -1, 935, -1, -1, + -1, 890, -1, 941, -1, 894, -1, 41, -1, 43, + 899, 900, 46, 47, -1, -1, -1, 51, 52, -1, + 567, 910, 911, -1, -1, 572, 60, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 974, 529, -1, -1, + -1, -1, 931, -1, 982, -1, 935, -1, 82, -1, + -1, -1, 941, -1, 699, -1, 994, -1, -1, 93, + -1, -1, 456, 97, -1, -1, -1, -1, -1, -1, + 5, -1, -1, 467, -1, -1, 11, 12, -1, -1, + -1, -1, 116, 117, -1, 974, -1, 22, 23, 734, + 25, -1, -1, 982, 29, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 994, 41, -1, 43, -1, + 755, 46, 47, 5, -1, -1, 51, 52, -1, 11, + 12, 766, -1, 456, -1, 60, -1, -1, -1, -1, + 22, 23, -1, 25, 467, 529, -1, 29, -1, 784, + -1, -1, -1, -1, -1, -1, -1, 82, -1, 41, + -1, 43, 699, -1, 46, 47, -1, -1, 93, 51, + 52, -1, 97, -1, -1, -1, -1, -1, 60, -1, + -1, -1, -1, -1, -1, 820, -1, -1, -1, -1, + 115, 0, 1, -1, -1, -1, -1, 734, -1, -1, + 82, -1, -1, -1, -1, 840, 529, 842, -1, -1, + -1, 93, -1, -1, -1, 97, -1, 699, 755, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 766, + -1, -1, -1, 115, -1, -1, -1, -1, -1, 26, + 27, -1, -1, 30, 31, 32, -1, 784, -1, 58, + -1, -1, 734, -1, -1, 890, -1, -1, -1, 894, + -1, 48, 49, -1, 899, 900, -1, -1, -1, -1, + 57, -1, -1, 755, -1, 910, 911, -1, -1, -1, + -1, -1, -1, 820, 766, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 931, -1, -1, -1, + 935, -1, 784, 840, -1, 842, 941, -1, -1, -1, + -1, -1, -1, -1, -1, 699, 103, 104, 105, 106, + 107, 108, 109, 110, 111, -1, -1, -1, -1, -1, + -1, 118, -1, -1, -1, -1, -1, -1, 820, 974, + 149, -1, -1, -1, -1, -1, -1, 982, -1, -1, + 734, -1, -1, 890, -1, -1, -1, 894, 840, 994, + 842, -1, 899, 900, -1, -1, -1, -1, -1, -1, + -1, 755, -1, 910, 911, -1, 699, -1, -1, -1, + -1, -1, 766, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 931, -1, -1, -1, 935, -1, + 784, 210, -1, -1, 941, -1, -1, -1, 890, 218, + -1, 734, 894, -1, -1, -1, -1, 899, 900, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 910, 911, + -1, -1, 755, -1, -1, -1, 820, 974, -1, 248, + -1, -1, -1, 766, -1, 982, -1, 256, -1, 931, + 259, -1, -1, 935, -1, -1, 840, 994, 842, 941, + -1, 784, -1, -1, -1, 274, -1, 5, -1, -1, + -1, -1, -1, 11, 12, -1, 285, -1, -1, -1, + -1, -1, -1, -1, 22, 23, -1, 25, -1, -1, + -1, 29, 974, -1, -1, -1, -1, 820, -1, -1, + 982, -1, -1, 41, -1, 43, 890, -1, 46, 47, + 894, -1, 994, 51, 52, 899, 900, 840, -1, 842, + -1, -1, 60, -1, -1, -1, 910, 911, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 788, -1, -1, 978, -1, -1, -1, -1, 824, -1, - -1, 986, -1, -1, -1, -1, 570, -1, -1, -1, - -1, 575, 457, 998, -1, 5, -1, -1, 844, -1, - 846, 11, 12, 468, -1, -1, 824, -1, -1, -1, - -1, -1, 22, 23, -1, 25, -1, -1, -1, 29, - -1, -1, -1, -1, -1, -1, 844, -1, 846, -1, - -1, 41, -1, 43, -1, -1, 46, 47, -1, -1, - -1, 51, 52, -1, -1, -1, -1, -1, 894, -1, - 60, -1, 898, 703, -1, -1, -1, 903, 904, -1, - -1, -1, -1, -1, -1, -1, -1, 532, 914, 915, - -1, -1, 82, -1, -1, -1, 894, -1, -1, 703, - 898, -1, -1, 93, -1, 903, 904, 97, 738, 935, - -1, -1, -1, 939, -1, -1, 914, 915, -1, 945, - -1, -1, -1, -1, -1, 570, 116, 117, -1, 759, - 575, -1, -1, -1, 738, -1, -1, 935, -1, 703, - 770, 939, -1, -1, -1, -1, -1, 945, -1, -1, - -1, -1, 978, -1, -1, 759, -1, -1, 788, -1, - 986, -1, 457, -1, -1, -1, 770, -1, -1, -1, - -1, -1, 998, 468, 738, -1, -1, -1, -1, -1, - 978, -1, -1, -1, 788, -1, -1, -1, 986, -1, - -1, -1, -1, -1, 824, 759, -1, -1, -1, -1, - 998, -1, -1, -1, -1, -1, 770, -1, -1, -1, - -1, -1, -1, -1, 844, 5, 846, -1, -1, -1, - 824, 11, 12, -1, 788, -1, -1, -1, -1, -1, - -1, -1, 22, 23, -1, 25, -1, 532, -1, 29, - 844, -1, 846, -1, -1, -1, -1, -1, -1, -1, - -1, 41, -1, 43, -1, -1, 46, 47, 703, -1, - 824, 51, 52, -1, 894, -1, -1, 457, 898, -1, - 60, -1, -1, 903, 904, -1, -1, -1, 468, -1, - 844, -1, 846, -1, 914, 915, -1, -1, -1, -1, - 894, -1, 82, 738, 898, -1, -1, -1, -1, 903, - 904, -1, -1, 93, -1, 935, -1, 97, -1, 939, - 914, 915, -1, -1, 759, 945, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 770, -1, -1, -1, -1, - 894, 935, -1, -1, 898, 939, -1, -1, -1, 903, - 904, 945, 532, 788, -1, -1, -1, -1, 978, -1, - 914, 915, -1, -1, -1, -1, 986, -1, 2, -1, - 4, -1, -1, -1, -1, -1, -1, -1, 998, -1, - -1, 935, -1, -1, 978, 939, -1, -1, -1, 824, - -1, 945, 986, -1, -1, -1, -1, -1, -1, 5, - -1, -1, -1, -1, 998, 11, 12, -1, -1, 844, - -1, 846, -1, -1, -1, -1, 22, 23, 703, 25, - -1, -1, -1, 29, 978, -1, 60, -1, -1, -1, - -1, -1, 986, -1, -1, 41, -1, 43, -1, -1, - 46, 47, -1, -1, 998, 51, 52, -1, -1, -1, - -1, -1, -1, 738, 60, -1, -1, -1, -1, 894, - -1, -1, -1, 898, 70, 71, -1, -1, 903, 904, - -1, -1, -1, -1, 759, -1, 82, -1, -1, 914, - 915, -1, -1, -1, -1, 770, -1, 93, -1, -1, - -1, 97, -1, -1, -1, -1, -1, -1, -1, -1, - 935, -1, -1, 788, 939, -1, -1, -1, 114, -1, - 945, -1, -1, 119, -1, -1, -1, 151, -1, -1, - -1, -1, -1, 703, -1, -1, -1, -1, -1, 5, - -1, -1, -1, -1, -1, 11, 12, -1, -1, 824, - -1, -1, -1, 978, -1, -1, 22, 23, -1, 25, - -1, 986, -1, 29, -1, -1, -1, -1, 738, 844, - -1, 846, -1, 998, -1, 41, -1, 43, -1, -1, - 46, 47, -1, -1, -1, 51, 52, -1, 212, 759, - -1, -1, -1, -1, 60, -1, 220, -1, -1, -1, - 770, -1, 26, 27, -1, -1, 30, 31, 32, -1, - -1, -1, -1, -1, -1, -1, 82, -1, 788, 894, - -1, -1, -1, 898, 48, 49, 250, 93, 903, 904, - -1, 97, -1, 57, 258, -1, -1, 261, -1, 914, - 915, -1, -1, -1, -1, -1, -1, -1, -1, 115, - -1, -1, 276, -1, 824, -1, -1, -1, -1, -1, - 935, -1, 286, -1, 939, -1, -1, -1, -1, -1, - 945, -1, -1, -1, 844, -1, 846, -1, -1, 103, - 104, 105, 106, 107, 108, 109, 110, 111, -1, -1, - -1, -1, -1, -1, 118, -1, -1, -1, -1, -1, - -1, -1, -1, 978, -1, -1, -1, -1, -1, -1, - -1, 986, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 17, 18, 998, 894, -1, -1, -1, 898, -1, - -1, -1, 28, 903, 904, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 914, 915, 42, -1, 44, 45, - -1, -1, -1, 49, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 59, -1, 935, -1, -1, -1, 939, - -1, -1, 68, -1, 70, 945, 72, 73, -1, 75, - -1, 77, -1, 79, -1, 81, -1, 83, -1, 85, - -1, 87, 88, 89, -1, -1, -1, 93, -1, -1, - 96, -1, -1, 99, -1, 101, -1, -1, 978, -1, - -1, -1, -1, -1, -1, -1, 986, 441, -1, -1, - -1, -1, -1, -1, 120, -1, -1, -1, 998, -1, - 126, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 467, -1, -1, -1, -1, -1, -1, - 474, -1, -1, 477, -1, 479, -1, -1, 154, 155, - -1, -1, -1, -1, -1, -1, 5, -1, 7, 8, - -1, 10, 11, 12, 13, 14, -1, 173, -1, -1, - 19, 20, 21, 22, 23, -1, 25, 511, 512, -1, - 29, -1, -1, -1, -1, -1, -1, -1, 522, -1, - -1, -1, 41, -1, 43, 529, 530, 46, 47, 533, - -1, 535, 51, 52, -1, -1, -1, -1, -1, 215, - -1, 60, -1, -1, -1, 221, -1, -1, -1, 68, - -1, 70, 71, -1, -1, -1, -1, -1, 562, -1, - -1, -1, -1, 82, -1, -1, -1, 571, -1, -1, - -1, 247, 248, 249, 93, 94, -1, -1, 97, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 264, -1, - -1, -1, -1, -1, -1, 114, -1, -1, -1, -1, - 119, -1, 121, 279, -1, -1, -1, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 292, 293, -1, -1, - 85, 86, 87, 88, 89, 90, 91, 92, -1, -1, - -1, -1, -1, -1, 638, 1, -1, 3, 4, 5, - 6, 7, 8, -1, 10, 11, 12, 13, 14, -1, - -1, 17, -1, 19, 20, 21, 22, 23, 24, 25, - 125, -1, -1, 29, -1, -1, -1, 33, 34, -1, - 36, 37, 38, 39, -1, 41, 42, 43, 44, -1, - 46, 47, -1, -1, 50, 51, 52, 691, -1, -1, - -1, -1, -1, -1, 60, 61, 62, 701, -1, -1, - 66, -1, 68, 69, 70, 71, -1, 711, -1, -1, - -1, -1, -1, -1, -1, 81, 82, 83, 84, 395, - -1, -1, -1, -1, -1, -1, -1, 93, 94, 95, - 96, 97, 98, 99, 100, 411, -1, -1, 9, -1, - -1, -1, -1, -1, 748, -1, 750, -1, 114, -1, - 116, 117, -1, 119, -1, 121, 760, 123, -1, 763, - 764, 765, 33, 34, 35, 769, -1, -1, 772, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 53, 54, 55, 56, -1, 58, 59, -1, - -1, -1, -1, -1, -1, -1, 800, -1, -1, -1, - -1, 72, 73, 74, 75, 76, 77, 78, 79, 80, - -1, -1, -1, -1, 85, 86, 87, 88, 89, 90, - 91, 92, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 838, -1, -1, 513, -1, -1, - -1, 845, -1, -1, 848, 116, 117, 118, -1, -1, - -1, -1, 123, -1, 125, -1, -1, -1, -1, -1, - -1, 537, 866, 867, -1, -1, 542, -1, -1, -1, - -1, -1, -1, -1, 878, 551, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 567, -1, -1, 570, -1, -1, -1, -1, 575, - -1, 905, 13, -1, -1, -1, -1, -1, -1, -1, - -1, 22, 23, -1, -1, -1, 920, -1, 9, -1, - -1, -1, -1, -1, -1, 929, 930, -1, -1, 933, - -1, -1, 936, 937, -1, -1, -1, -1, -1, -1, - -1, 52, 33, 34, -1, -1, 57, -1, 952, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 634, 635, - -1, -1, 53, 54, 55, 56, -1, 58, 59, -1, - -1, -1, 976, -1, -1, -1, -1, -1, 654, -1, - -1, 72, 73, 74, 75, 76, 77, 78, 79, 80, - -1, -1, -1, -1, 85, 86, 87, 88, 89, 90, - 91, 92, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 690, -1, -1, 693, -1, -1, - -1, 697, 698, -1, -1, 116, 117, 138, -1, -1, - -1, -1, 123, 709, 125, 711, -1, -1, 149, -1, - 716, 717, -1, -1, -1, 156, 722, 723, -1, -1, - -1, -1, 163, -1, -1, 731, -1, -1, -1, -1, - 171, 172, -1, -1, -1, -1, 5, -1, 7, 8, - -1, 10, 11, 12, 13, 14, -1, -1, -1, -1, - 19, 20, 21, 22, 23, -1, 25, -1, -1, 28, - 29, -1, -1, -1, 33, 34, -1, -1, -1, -1, + -1, -1, -1, -1, 82, -1, -1, 931, -1, -1, + -1, 935, -1, -1, -1, 93, -1, 941, -1, 97, + -1, -1, -1, 101, -1, -1, -1, 890, -1, 14, + 15, 894, -1, -1, -1, -1, 899, 900, -1, -1, + 25, -1, -1, -1, -1, -1, -1, 910, 911, -1, + 974, -1, -1, -1, 39, -1, 41, 42, 982, -1, + -1, 46, -1, -1, -1, -1, -1, -1, 931, -1, + 994, 56, 935, -1, -1, -1, -1, -1, 941, -1, + -1, 66, -1, 68, -1, 70, 71, -1, 73, -1, + 75, 440, 77, -1, 79, -1, 81, -1, 83, -1, + 85, 86, 87, -1, -1, -1, 91, -1, -1, 94, + -1, 974, 97, -1, 99, -1, -1, 466, -1, 982, + -1, -1, -1, -1, 473, -1, -1, 476, -1, 478, + -1, 994, -1, 118, -1, -1, -1, -1, -1, 124, + 72, 73, 74, 75, 76, 77, 78, 79, 80, -1, + -1, -1, -1, 85, 86, 87, 88, 89, 90, 91, + 92, 510, 511, -1, -1, -1, -1, 152, 153, -1, + -1, 520, -1, -1, -1, -1, -1, 526, 527, -1, + -1, 530, -1, 532, -1, -1, 171, -1, -1, -1, + -1, -1, -1, 125, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 5, + 559, 7, 8, -1, 10, 11, 12, 13, 14, 568, + -1, -1, -1, 19, 20, 21, 22, 23, 213, 25, + -1, -1, 28, 29, 219, -1, -1, 33, 34, -1, + -1, -1, -1, -1, -1, 41, -1, 43, -1, -1, + 46, 47, -1, -1, 50, 51, 52, -1, -1, -1, + 245, 246, 247, -1, 60, -1, -1, -1, -1, -1, + -1, -1, 68, -1, 70, 71, -1, 262, -1, -1, + -1, -1, -1, -1, -1, 634, 82, -1, -1, -1, + -1, -1, 277, -1, -1, -1, -1, 93, 94, -1, + -1, 97, -1, -1, 100, 101, 291, 292, -1, -1, + -1, 107, 108, -1, -1, -1, -1, -1, 114, 115, + -1, -1, -1, 119, -1, 121, 5, 123, 7, 8, + -1, 10, 11, 12, 13, 14, -1, -1, 687, -1, + 19, 20, 21, 22, 23, -1, 25, -1, 697, 28, + 29, -1, -1, -1, 33, 34, -1, -1, 707, -1, -1, -1, 41, -1, 43, -1, -1, 46, 47, -1, -1, 50, 51, 52, -1, -1, -1, -1, -1, -1, - -1, 60, -1, -1, -1, 801, 802, -1, -1, 68, - -1, 70, 71, -1, -1, -1, -1, -1, -1, -1, - 251, -1, -1, 82, 820, -1, -1, -1, -1, -1, - -1, 827, -1, 829, 93, 94, -1, -1, 97, -1, - -1, 100, 101, 839, 275, 841, 277, -1, 107, 108, + -1, 60, -1, -1, -1, -1, -1, -1, -1, 68, + -1, 70, 71, -1, -1, 744, -1, 746, -1, -1, + -1, -1, -1, 82, -1, -1, -1, 756, -1, 394, + 759, 760, 761, -1, 93, 94, 765, -1, 97, 768, + -1, 100, 101, -1, -1, 410, -1, -1, 107, 108, -1, -1, -1, -1, -1, 114, 115, -1, -1, -1, - 119, -1, 121, -1, 123, 296, 297, -1, 864, 300, - -1, -1, -1, 869, -1, -1, 307, -1, 874, -1, - 311, 877, -1, -1, -1, 316, -1, -1, -1, 320, - -1, -1, -1, 324, -1, -1, -1, 328, -1, -1, - 331, -1, -1, -1, 335, -1, -1, -1, -1, -1, - -1, 342, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 921, -1, -1, 924, -1, - -1, -1, -1, -1, -1, 931, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 378, -1, 380, - -1, -1, 383, -1, -1, 386, -1, -1, -1, -1, - 391, -1, -1, -1, -1, -1, 397, 963, 9, -1, - -1, -1, -1, 404, 405, 406, 407, 408, 409, 410, - -1, -1, -1, -1, -1, -1, -1, 418, -1, -1, - 421, -1, 33, 34, 35, -1, 427, -1, 429, -1, - 431, -1, 433, -1, 435, 1001, 1002, -1, -1, -1, - -1, -1, 53, 54, 55, 56, -1, 58, 59, -1, + 119, -1, 121, -1, 123, -1, -1, 796, -1, -1, + -1, -1, -1, -1, -1, 5, -1, 7, 8, -1, + 10, 11, 12, 13, 14, -1, -1, -1, -1, 19, + 20, 21, 22, 23, -1, 25, -1, -1, 28, 29, + -1, -1, -1, 33, 34, 834, -1, -1, -1, -1, + -1, 41, 841, 43, -1, 844, 46, 47, 10, -1, + 50, 51, 52, -1, -1, -1, -1, 19, 20, -1, + 60, -1, -1, 862, 863, -1, -1, -1, 68, -1, + 70, 71, -1, -1, -1, 874, -1, 512, -1, -1, + -1, -1, 82, -1, -1, -1, -1, 49, -1, -1, + -1, -1, 54, 93, 94, -1, -1, 97, -1, 534, + 100, -1, 901, -1, 539, -1, -1, 107, 108, -1, + -1, -1, -1, 548, 114, 115, -1, 916, 118, 119, + -1, 121, -1, 123, -1, -1, 925, 926, -1, 564, + 929, -1, 567, 932, 933, -1, -1, 572, -1, -1, + -1, -1, -1, -1, -1, -1, 26, 27, -1, 948, + 30, 31, 32, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 5, -1, -1, -1, 48, 49, + 11, 12, -1, 972, 136, -1, -1, 57, -1, -1, + -1, 22, 23, -1, 25, 147, -1, -1, 29, -1, + -1, -1, 154, -1, -1, 630, 631, -1, -1, 161, + 41, -1, 43, -1, -1, 46, 47, 169, 170, -1, + 51, 52, -1, -1, -1, 650, -1, -1, -1, 60, + -1, -1, -1, 103, 104, 105, 106, 107, 108, 109, + 110, 111, -1, -1, -1, -1, 116, 117, -1, -1, + -1, 82, 26, 27, -1, -1, 30, 31, 32, -1, + -1, 686, 93, -1, 689, -1, 97, -1, 693, 694, + -1, -1, 5, 47, 48, 49, -1, -1, 11, 12, + 705, -1, 707, 57, 115, -1, -1, 712, 713, 22, + 23, -1, 25, 718, 719, -1, 29, 249, -1, -1, + -1, -1, 727, -1, -1, -1, -1, -1, 41, -1, + 43, -1, -1, 46, 47, -1, -1, -1, 51, 52, + -1, 273, -1, 275, -1, -1, -1, 60, -1, 103, + 104, 105, 106, 107, 108, 109, 110, 111, -1, -1, + -1, -1, -1, 295, 296, -1, -1, 299, -1, 82, + -1, -1, -1, -1, 306, -1, -1, -1, 310, -1, + 93, -1, -1, 315, 97, -1, -1, 319, 101, -1, + -1, 323, 797, 798, -1, 327, -1, -1, 330, -1, + -1, -1, 334, -1, -1, -1, -1, -1, -1, 341, + -1, 816, -1, -1, -1, -1, -1, -1, 823, -1, + 825, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 835, -1, 837, -1, 85, 86, 87, 88, 89, 90, + 91, 92, -1, -1, -1, 377, -1, 379, -1, -1, + 382, -1, -1, 385, -1, 860, -1, -1, 390, -1, + 865, -1, -1, 5, 396, 870, -1, -1, 873, 11, + 12, 403, 404, 405, 406, 407, 408, 409, -1, -1, + 22, 23, -1, 25, -1, 417, -1, 29, 420, -1, + -1, -1, -1, -1, 426, -1, 428, -1, 430, 41, + 432, 43, 434, -1, 46, 47, -1, -1, -1, 51, + 52, -1, 917, -1, -1, 920, -1, -1, 60, -1, + -1, -1, 927, -1, -1, -1, -1, -1, 70, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 72, 73, 74, 75, 76, 77, 78, 79, 80, - -1, -1, -1, -1, 85, 86, 87, 88, 89, 90, - 91, 92, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 492, 493, 494, 495, 496, 497, 498, 499, 500, - 501, 502, 503, 504, 505, 506, 507, 508, 119, 510, - -1, -1, 123, 26, 125, -1, -1, 30, 31, 32, - -1, 66, 67, -1, 69, 526, 71, -1, -1, 74, - -1, 76, -1, 78, -1, 48, 49, 82, 9, -1, - -1, 86, -1, -1, 57, 90, 91, -1, -1, -1, - 95, -1, 97, -1, -1, 100, -1, -1, -1, -1, - -1, -1, 33, 34, 35, -1, 567, -1, 569, 114, - -1, -1, -1, -1, 119, -1, -1, -1, -1, -1, - 125, -1, 53, 54, 55, 56, -1, 58, 59, 590, - 103, 104, 105, 106, 107, 108, 109, 110, 111, -1, - -1, 72, 73, 74, 75, 76, 77, 78, 79, 80, - -1, -1, -1, -1, 85, 86, 87, 88, 89, 90, - 91, 92, -1, -1, -1, -1, -1, -1, 629, 174, - 175, 176, 177, 178, 179, 180, 637, 182, -1, 184, - 185, 186, -1, 188, 645, 190, 191, -1, -1, 650, - -1, -1, 123, -1, 125, -1, -1, 658, 203, -1, - -1, -1, 207, -1, 209, -1, -1, -1, -1, -1, - -1, 216, -1, -1, -1, -1, -1, -1, -1, 224, - 225, 226, 227, 228, 229, 230, -1, 232, -1, 234, - 235, 236, -1, 238, 239, 240, -1, 5, 243, 244, - 245, -1, -1, 11, 12, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 22, 23, -1, 25, -1, -1, - 721, 29, 723, 268, 269, -1, 271, 272, -1, -1, - -1, -1, -1, 41, -1, 43, -1, -1, 46, 47, - -1, -1, -1, 51, 52, -1, -1, -1, -1, -1, - -1, -1, 60, -1, 755, -1, -1, -1, -1, -1, - 761, -1, -1, 5, -1, -1, 767, -1, -1, 11, - 12, -1, 773, -1, 82, -1, -1, -1, -1, 780, - 22, 23, -1, 25, -1, 93, -1, 29, 789, 97, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 41, - -1, 43, -1, -1, 46, 47, -1, 115, -1, 51, - 52, -1, -1, -1, -1, -1, -1, 362, 60, 820, - -1, 822, -1, -1, -1, 0, 1, -1, 3, 4, + 82, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 93, -1, -1, 959, 97, -1, -1, -1, 491, + 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, + 502, 503, 504, 505, 506, 507, -1, 509, 64, 65, + -1, 67, -1, 69, -1, -1, 72, -1, 74, -1, + 76, 523, 997, 998, 80, -1, -1, 9, 84, -1, + -1, -1, 88, 89, -1, -1, -1, 93, -1, 95, + -1, -1, 98, -1, -1, -1, -1, -1, -1, -1, + -1, 33, 34, 35, -1, -1, 112, -1, -1, -1, + -1, 117, 564, -1, 566, -1, -1, 123, -1, -1, + -1, 53, 54, 55, 56, -1, 58, 59, -1, -1, + -1, -1, -1, -1, -1, 587, -1, -1, -1, -1, + 72, 73, 74, 75, 76, 77, 78, 79, 80, -1, + -1, -1, -1, 85, 86, 87, 88, 89, 90, 91, + 92, -1, -1, -1, -1, -1, 172, 173, 174, 175, + 176, 177, 178, 625, 180, -1, 182, 183, 184, -1, + 186, 633, 188, 189, 116, 117, 118, -1, -1, 641, + -1, 123, -1, 125, 646, 201, -1, -1, -1, 205, + -1, 207, 654, -1, -1, -1, -1, -1, 214, 9, + -1, -1, -1, -1, -1, -1, 222, 223, 224, 225, + 226, 227, 228, -1, 230, -1, 232, 233, 234, -1, + 236, 237, 238, 33, 34, 241, 242, 243, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 53, 54, 55, 56, -1, 58, 59, + 266, 267, -1, 269, 270, 717, -1, 719, -1, -1, + -1, -1, 72, 73, 74, 75, 76, 77, 78, 79, + 80, -1, -1, -1, -1, 85, 86, 87, 88, 89, + 90, 91, 92, -1, -1, -1, -1, -1, -1, 751, + -1, -1, -1, -1, -1, 757, -1, -1, -1, -1, + -1, 763, -1, -1, -1, -1, -1, 769, -1, -1, + -1, -1, -1, 123, 776, 125, -1, -1, -1, -1, + -1, -1, -1, 785, -1, -1, -1, -1, 0, 1, + -1, 3, 4, 5, 6, 7, 8, -1, 10, 11, + 12, 13, 14, -1, -1, 361, -1, 19, 20, 21, + 22, 23, 24, 25, 816, -1, 818, 29, -1, -1, + -1, 33, 34, -1, 36, -1, -1, -1, -1, 41, + 42, 43, 44, -1, 46, 47, -1, -1, 50, 51, + 52, -1, -1, -1, -1, -1, -1, 849, 60, 61, + 62, -1, -1, -1, 66, 857, 68, 69, 70, 71, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 81, + 82, 83, 84, -1, 876, -1, -1, -1, -1, -1, + -1, 93, 94, 95, 96, 97, 98, 99, 100, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 902, -1, 114, -1, 116, 117, -1, 119, -1, 121, + -1, 123, 0, 1, -1, 3, 4, 5, 6, 7, + 8, -1, 10, 11, 12, 13, 14, -1, -1, -1, + -1, 19, 20, 21, 22, 23, 24, 25, -1, -1, + -1, 29, 944, -1, -1, 33, 34, -1, 36, -1, + -1, -1, -1, 41, 42, 43, 44, -1, 46, 47, + -1, -1, 50, 51, 52, -1, -1, -1, -1, -1, + -1, -1, 60, 61, 62, -1, -1, -1, 66, -1, + 68, 69, 70, 71, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 81, 82, 83, 84, -1, -1, -1, + -1, -1, -1, -1, -1, 93, 94, 95, 96, 97, + 98, 99, 100, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 114, -1, 116, 117, + -1, 119, -1, 121, 1, 123, 3, 4, 5, 6, + 7, 8, -1, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, + -1, -1, 29, -1, -1, -1, 33, 34, -1, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, -1, -1, 50, 51, 52, -1, -1, -1, -1, + -1, -1, -1, 60, 61, 62, 63, 64, 65, 66, + -1, 68, 69, 70, 71, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 81, 82, 83, 84, -1, -1, + -1, -1, -1, -1, -1, -1, 93, 94, 95, 96, + 97, 98, 99, 100, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 114, -1, 116, + 117, -1, 119, -1, 121, -1, 123, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 724, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 738, -1, 1, 741, 3, 4, 5, 6, + 7, 8, -1, 10, 11, 12, 13, 14, -1, -1, + 17, -1, 19, 20, 21, 22, 23, 24, 25, -1, + -1, -1, 29, -1, -1, -1, 33, 34, -1, 36, + 37, 38, 39, -1, 41, 42, 43, 44, -1, 46, + 47, -1, -1, 50, 51, 52, -1, -1, -1, -1, + -1, -1, -1, 60, 61, 62, -1, -1, -1, 66, + -1, 68, 69, 70, 71, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 81, 82, 83, 84, -1, -1, + -1, -1, -1, -1, -1, -1, 93, 94, 95, 96, + 97, 98, 99, 100, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 114, -1, 116, + 117, -1, 119, -1, 121, 1, 123, 3, 4, 5, + 6, 7, 8, -1, 10, 11, 12, 13, 14, -1, + -1, 17, -1, 19, 20, 21, 22, 23, 24, 25, + -1, -1, -1, 29, -1, -1, -1, 33, 34, -1, + 36, 37, 38, 39, -1, 41, 42, 43, 44, -1, + 46, 47, -1, -1, 50, 51, 52, -1, -1, -1, + -1, -1, -1, -1, 60, 61, 62, -1, -1, -1, + 66, -1, 68, 69, 70, 71, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 81, 82, 83, 84, -1, + -1, -1, -1, -1, -1, -1, -1, 93, 94, 95, + 96, 97, 98, 99, 100, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 114, -1, + 116, 117, -1, 119, -1, 121, 1, 123, 3, 4, 5, 6, 7, 8, -1, 10, 11, 12, 13, 14, - 82, -1, -1, -1, 19, 20, 21, 22, 23, 24, - 25, 93, 853, -1, 29, 97, -1, -1, 33, 34, - 861, 36, -1, -1, -1, -1, 41, 42, 43, 44, - -1, 46, 47, 115, -1, 50, 51, 52, -1, 880, - -1, -1, -1, -1, -1, 60, 61, 62, -1, -1, - -1, 66, -1, 68, 69, 70, 71, -1, -1, -1, - -1, -1, -1, -1, -1, 906, 81, 82, 83, 84, + -1, -1, 17, -1, 19, 20, 21, 22, 23, 24, + 25, -1, -1, -1, 29, -1, -1, -1, 33, 34, + -1, 36, -1, -1, -1, -1, 41, 42, 43, 44, + -1, 46, 47, -1, -1, 50, 51, 52, -1, -1, + -1, -1, -1, -1, -1, 60, 61, 62, 63, 64, + 65, 66, -1, 68, 69, 70, 71, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 81, 82, 83, 84, -1, -1, -1, -1, -1, -1, -1, -1, 93, 94, 95, 96, 97, 98, 99, 100, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 114, - -1, 116, 117, -1, 119, -1, 121, 948, 123, 1, - -1, 3, 4, 5, 6, 7, 8, -1, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, -1, -1, -1, 29, -1, -1, - -1, 33, 34, -1, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, -1, -1, 50, 51, - 52, -1, -1, -1, -1, -1, -1, -1, 60, 61, - 62, 63, 64, 65, 66, -1, 68, 69, 70, 71, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 81, - 82, 83, 84, -1, -1, -1, -1, -1, -1, -1, - -1, 93, 94, 95, 96, 97, 98, 99, 100, -1, + -1, 116, 117, -1, 119, -1, 121, 1, 123, 3, + 4, 5, 6, 7, 8, -1, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, -1, -1, -1, 29, -1, -1, -1, 33, + 34, -1, 36, -1, -1, -1, -1, 41, 42, 43, + 44, -1, 46, 47, -1, -1, 50, 51, 52, -1, + -1, -1, -1, -1, -1, -1, 60, 61, 62, -1, + -1, -1, 66, -1, 68, 69, 70, 71, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 81, 82, 83, + 84, -1, -1, -1, -1, -1, -1, -1, -1, 93, + 94, 95, 96, 97, 98, 99, 100, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 114, -1, 116, 117, -1, 119, -1, 121, - -1, 123, 1, -1, 3, 4, 5, 6, 7, 8, - -1, 10, 11, 12, 13, 14, -1, -1, 17, -1, - 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, - 29, -1, -1, -1, 33, 34, -1, 36, 37, 38, - 39, -1, 41, 42, 43, 44, -1, 46, 47, -1, - -1, 50, 51, 52, -1, -1, -1, -1, -1, -1, - -1, 60, 61, 62, -1, -1, -1, 66, -1, 68, - 69, 70, 71, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 81, 82, 83, 84, -1, -1, -1, -1, - -1, -1, -1, -1, 93, 94, 95, 96, 97, 98, - 99, 100, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 728, -1, 114, -1, 116, 117, -1, - 119, -1, 121, -1, 123, -1, -1, 742, -1, 1, - 745, 3, 4, 5, 6, 7, 8, -1, 10, 11, + 114, -1, 116, 117, -1, 119, -1, 121, 1, 123, + 3, 4, 5, 6, 7, 8, -1, 10, 11, 12, + 13, 14, -1, -1, 17, -1, 19, 20, 21, 22, + 23, 24, 25, -1, -1, -1, 29, -1, -1, -1, + 33, 34, -1, 36, 37, 38, 39, -1, 41, 42, + 43, 44, -1, 46, 47, -1, -1, 50, 51, 52, + -1, -1, -1, -1, -1, -1, -1, 60, 61, 62, + -1, -1, -1, 66, -1, 68, 69, 70, 71, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 81, 82, + 83, 84, -1, -1, -1, -1, -1, -1, -1, -1, + 93, 94, 95, 96, 97, 98, 99, 100, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 114, -1, 116, 117, -1, 119, -1, 121, 1, + 123, 3, 4, 5, 6, 7, 8, -1, 10, 11, 12, 13, 14, -1, -1, 17, -1, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, 29, -1, -1, - -1, 33, 34, -1, 36, -1, -1, -1, -1, 41, + -1, 33, 34, -1, 36, 37, 38, -1, -1, 41, 42, 43, 44, -1, 46, 47, -1, -1, 50, 51, 52, -1, -1, -1, -1, -1, -1, -1, 60, 61, - 62, 63, 64, 65, 66, -1, 68, 69, 70, 71, + 62, -1, -1, -1, 66, -1, 68, 69, 70, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, 81, 82, 83, 84, -1, -1, -1, -1, -1, -1, -1, -1, 93, 94, 95, 96, 97, 98, 99, 100, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 114, -1, 116, 117, -1, 119, -1, 121, 1, 123, 3, 4, 5, 6, 7, 8, -1, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 11, 12, 13, 14, -1, -1, 17, -1, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, 29, -1, - -1, -1, 33, 34, -1, 36, -1, -1, -1, -1, + -1, -1, 33, 34, -1, 36, 37, 38, -1, -1, 41, 42, 43, 44, -1, 46, 47, -1, -1, 50, 51, 52, -1, -1, -1, -1, -1, -1, -1, 60, 61, 62, -1, -1, -1, 66, -1, 68, 69, 70, @@ -2955,7 +3010,7 @@ static const yytype_int16 yycheck[] = 121, 1, 123, 3, 4, 5, 6, 7, 8, -1, 10, 11, 12, 13, 14, -1, -1, 17, -1, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, 29, - -1, -1, -1, 33, 34, -1, 36, 37, 38, 39, + -1, -1, -1, 33, 34, -1, 36, -1, 38, 39, -1, 41, 42, 43, 44, -1, 46, 47, -1, -1, 50, 51, 52, -1, -1, -1, -1, -1, -1, -1, 60, 61, 62, -1, -1, -1, 66, -1, 68, 69, @@ -2978,9 +3033,9 @@ static const yytype_int16 yycheck[] = -1, -1, -1, -1, -1, 114, -1, 116, 117, -1, 119, -1, 121, 1, 123, 3, 4, 5, 6, 7, 8, -1, 10, 11, 12, 13, 14, -1, -1, 17, - -1, 19, 20, 21, 22, 23, 24, 25, -1, -1, - -1, 29, -1, -1, -1, 33, 34, -1, 36, 37, - 38, -1, -1, 41, 42, 43, 44, -1, 46, 47, + 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, + -1, 29, -1, -1, -1, 33, 34, -1, 36, -1, + -1, -1, -1, 41, 42, 43, 44, -1, 46, 47, -1, -1, 50, 51, 52, -1, -1, -1, -1, -1, -1, -1, 60, 61, 62, -1, -1, -1, 66, -1, 68, 69, 70, 71, -1, -1, -1, -1, -1, -1, @@ -2992,7 +3047,7 @@ static const yytype_int16 yycheck[] = 7, 8, -1, 10, 11, 12, 13, 14, -1, -1, 17, -1, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, 29, -1, -1, -1, 33, 34, -1, 36, - -1, 38, 39, -1, 41, 42, 43, 44, -1, 46, + -1, -1, -1, 40, 41, 42, 43, 44, -1, 46, 47, -1, -1, 50, 51, 52, -1, -1, -1, -1, -1, -1, -1, 60, 61, 62, -1, -1, -1, 66, -1, 68, 69, 70, 71, -1, -1, -1, -1, -1, @@ -3004,9 +3059,9 @@ static const yytype_int16 yycheck[] = 6, 7, 8, -1, 10, 11, 12, 13, 14, -1, -1, 17, -1, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, 29, -1, -1, -1, 33, 34, -1, - 36, 37, 38, -1, -1, 41, 42, 43, 44, -1, + 36, -1, -1, -1, -1, 41, 42, 43, 44, -1, 46, 47, -1, -1, 50, 51, 52, -1, -1, -1, - -1, -1, -1, -1, 60, 61, 62, -1, -1, -1, + -1, -1, -1, -1, 60, 61, 62, -1, -1, 65, 66, -1, 68, 69, 70, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, 81, 82, 83, 84, -1, -1, -1, -1, -1, -1, -1, -1, 93, 94, 95, @@ -3014,10 +3069,10 @@ static const yytype_int16 yycheck[] = -1, -1, -1, -1, -1, -1, -1, -1, 114, -1, 116, 117, -1, 119, -1, 121, 1, 123, 3, 4, 5, 6, 7, 8, -1, 10, 11, 12, 13, 14, - -1, -1, 17, 18, 19, 20, 21, 22, 23, 24, + -1, -1, 17, -1, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, 29, -1, -1, -1, 33, 34, -1, 36, -1, -1, -1, -1, 41, 42, 43, 44, - -1, 46, 47, -1, -1, 50, 51, 52, -1, -1, + 45, 46, 47, -1, -1, 50, 51, 52, -1, -1, -1, -1, -1, -1, -1, 60, 61, 62, -1, -1, -1, 66, -1, 68, 69, 70, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, 81, 82, 83, 84, @@ -3028,7 +3083,7 @@ static const yytype_int16 yycheck[] = 4, 5, 6, 7, 8, -1, 10, 11, 12, 13, 14, -1, -1, 17, -1, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, 29, -1, -1, -1, 33, - 34, -1, 36, -1, -1, -1, 40, 41, 42, 43, + 34, -1, 36, -1, -1, -1, -1, 41, 42, 43, 44, -1, 46, 47, -1, -1, 50, 51, 52, -1, -1, -1, -1, -1, -1, -1, 60, 61, 62, -1, -1, -1, 66, -1, 68, 69, 70, 71, -1, -1, @@ -3043,17 +3098,17 @@ static const yytype_int16 yycheck[] = 33, 34, -1, 36, -1, -1, -1, -1, 41, 42, 43, 44, -1, 46, 47, -1, -1, 50, 51, 52, -1, -1, -1, -1, -1, -1, -1, 60, 61, 62, - -1, -1, 65, 66, -1, 68, 69, 70, 71, -1, + -1, -1, -1, 66, -1, 68, 69, 70, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, 81, 82, 83, 84, -1, -1, -1, -1, -1, -1, -1, -1, 93, 94, 95, 96, 97, 98, 99, 100, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 114, -1, 116, 117, -1, 119, -1, 121, 1, 123, 3, 4, 5, 6, 7, 8, -1, 10, 11, - 12, 13, 14, -1, -1, 17, -1, 19, 20, 21, + 12, 13, 14, -1, -1, -1, -1, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, 29, -1, -1, -1, 33, 34, -1, 36, -1, -1, -1, -1, 41, - 42, 43, 44, 45, 46, 47, -1, -1, 50, 51, + 42, 43, 44, -1, 46, 47, -1, -1, 50, 51, 52, -1, -1, -1, -1, -1, -1, -1, 60, 61, 62, -1, -1, -1, 66, -1, 68, 69, 70, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, 81, @@ -3061,66 +3116,41 @@ static const yytype_int16 yycheck[] = -1, 93, 94, 95, 96, 97, 98, 99, 100, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 114, -1, 116, 117, -1, 119, -1, 121, - 1, 123, 3, 4, 5, 6, 7, 8, -1, 10, - 11, 12, 13, 14, -1, -1, 17, -1, 19, 20, - 21, 22, 23, 24, 25, -1, -1, -1, 29, -1, - -1, -1, 33, 34, -1, 36, -1, -1, -1, -1, - 41, 42, 43, 44, -1, 46, 47, -1, -1, 50, - 51, 52, -1, -1, -1, -1, -1, -1, -1, 60, - 61, 62, -1, -1, -1, 66, -1, 68, 69, 70, - 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 81, 82, 83, 84, -1, -1, -1, -1, -1, -1, - -1, -1, 93, 94, 95, 96, 97, 98, 99, 100, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 114, -1, 116, 117, -1, 119, -1, - 121, 1, 123, 3, 4, 5, 6, 7, 8, -1, - 10, 11, 12, 13, 14, -1, -1, 17, -1, 19, - 20, 21, 22, 23, 24, 25, -1, -1, -1, 29, - -1, -1, -1, 33, 34, -1, 36, -1, -1, -1, - -1, 41, 42, 43, 44, -1, 46, 47, -1, -1, - 50, 51, 52, -1, -1, -1, -1, -1, -1, -1, - 60, 61, 62, -1, -1, -1, 66, -1, 68, 69, - 70, 71, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 81, 82, 83, 84, -1, -1, -1, -1, -1, - -1, -1, -1, 93, 94, 95, 96, 97, 98, 99, - 100, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 114, -1, 116, 117, -1, 119, - -1, 121, 1, 123, 3, 4, 5, 6, 7, 8, - -1, 10, 11, 12, 13, 14, -1, -1, -1, -1, - 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, - 29, -1, -1, -1, 33, 34, -1, 36, -1, -1, - -1, -1, 41, 42, 43, 44, -1, 46, 47, -1, - -1, 50, 51, 52, -1, -1, -1, -1, -1, -1, - -1, 60, 61, 62, -1, -1, -1, 66, -1, 68, - 69, 70, 71, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 81, 82, 83, 84, -1, -1, -1, -1, - -1, -1, -1, -1, 93, 94, 95, 96, 97, 98, - 99, 100, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 114, -1, 116, 117, -1, - 119, -1, 121, 1, 123, 3, 4, 5, 6, 7, + 5, 123, 7, 8, -1, 10, 11, 12, 13, 14, + -1, -1, -1, -1, 19, 20, 21, 22, 23, -1, + 25, -1, -1, 28, 29, -1, -1, -1, 33, 34, + -1, -1, -1, -1, -1, -1, 41, -1, 43, -1, + -1, 46, 47, -1, -1, 50, 51, 52, -1, -1, + -1, -1, -1, -1, -1, 60, -1, -1, -1, -1, + -1, -1, -1, 68, -1, 70, 71, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 82, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 93, 94, + -1, -1, 97, -1, -1, 100, -1, -1, -1, -1, + -1, -1, 107, 108, -1, -1, -1, -1, -1, 114, + 115, -1, -1, 118, 119, -1, 121, 5, 123, 7, 8, -1, 10, 11, 12, 13, 14, -1, -1, -1, - -1, 19, 20, 21, 22, 23, 24, 25, -1, -1, - -1, 29, -1, -1, -1, 33, 34, -1, 36, -1, - -1, -1, -1, 41, 42, 43, 44, -1, 46, 47, + -1, 19, 20, 21, 22, 23, -1, 25, -1, -1, + 28, 29, -1, -1, -1, 33, 34, -1, -1, -1, + -1, -1, -1, 41, -1, 43, -1, -1, 46, 47, -1, -1, 50, 51, 52, -1, -1, -1, -1, -1, - -1, -1, 60, 61, 62, -1, -1, -1, 66, -1, - 68, 69, 70, 71, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 81, 82, 83, 84, -1, -1, -1, - -1, -1, -1, -1, -1, 93, 94, 95, 96, 97, - 98, 99, 100, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 114, -1, 116, 117, - -1, 119, -1, 121, 5, 123, 7, 8, -1, 10, - 11, 12, 13, 14, -1, -1, -1, -1, 19, 20, - 21, 22, 23, -1, 25, -1, -1, 28, 29, -1, + -1, -1, 60, -1, -1, -1, -1, -1, -1, -1, + 68, -1, 70, 71, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 82, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 93, 94, -1, -1, 97, + -1, -1, 100, -1, -1, -1, -1, -1, -1, 107, + 108, -1, -1, -1, 26, 27, 114, 115, 30, 31, + 32, 119, -1, 121, 5, 123, 7, 8, -1, 10, + 11, 12, 13, 14, -1, -1, 48, 49, 19, 20, + 21, 22, 23, -1, 25, 57, -1, 28, 29, -1, -1, -1, 33, 34, -1, -1, -1, -1, -1, -1, 41, -1, 43, -1, -1, 46, 47, -1, -1, 50, 51, 52, -1, -1, -1, -1, -1, -1, -1, 60, -1, -1, -1, -1, -1, -1, -1, 68, -1, 70, - 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 71, 103, 104, 105, 106, 107, 108, 109, 110, 111, -1, 82, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 93, 94, -1, -1, 97, -1, -1, 100, - 101, -1, -1, -1, -1, -1, 107, 108, -1, -1, - -1, 26, 27, 114, 115, 30, 31, 32, 119, -1, + -1, -1, -1, -1, -1, -1, 107, 108, -1, -1, + -1, 26, -1, 114, 115, 30, 31, 32, 119, -1, 121, 5, 123, 7, 8, -1, 10, 11, 12, 13, 14, -1, -1, 48, 49, 19, 20, 21, 22, 23, -1, 25, 57, -1, 28, 29, -1, -1, -1, 33, @@ -3129,10 +3159,10 @@ static const yytype_int16 yycheck[] = -1, -1, -1, -1, -1, -1, 60, -1, -1, -1, -1, -1, -1, -1, 68, -1, 70, 71, 103, 104, 105, 106, 107, 108, 109, 110, 111, -1, 82, -1, - -1, -1, -1, 118, -1, -1, -1, -1, -1, 93, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 93, 94, -1, -1, 97, -1, -1, 100, -1, -1, -1, -1, -1, -1, 107, 108, -1, -1, -1, -1, -1, - 114, 115, -1, -1, 118, 119, -1, 121, 5, 123, + 114, 115, -1, -1, -1, 119, -1, 121, 5, 123, 7, 8, -1, 10, 11, 12, 13, 14, -1, -1, -1, -1, 19, 20, 21, 22, 23, -1, 25, -1, -1, 28, 29, -1, -1, -1, 33, 34, -1, -1, @@ -3144,119 +3174,84 @@ static const yytype_int16 yycheck[] = -1, -1, -1, -1, -1, -1, 93, 94, -1, -1, 97, -1, -1, 100, -1, -1, -1, -1, -1, -1, 107, 108, -1, -1, -1, -1, -1, 114, 115, -1, - -1, 118, 119, -1, 121, 5, 123, 7, 8, -1, + -1, -1, 119, -1, 121, 5, 123, 7, 8, -1, 10, 11, 12, 13, 14, -1, -1, -1, -1, 19, - 20, 21, 22, 23, -1, 25, -1, -1, 28, 29, - -1, -1, -1, 33, 34, -1, -1, -1, -1, -1, + 20, 21, 22, 23, -1, 25, -1, -1, -1, 29, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 41, -1, 43, -1, -1, 46, 47, -1, -1, 50, 51, 52, -1, -1, -1, -1, -1, -1, -1, 60, -1, -1, -1, -1, -1, -1, -1, 68, -1, 70, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 82, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 93, 94, -1, -1, 97, -1, -1, - 100, -1, -1, -1, -1, -1, -1, 107, 108, -1, - -1, -1, 26, 27, 114, 115, 30, 31, 32, 119, + 100, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 114, -1, -1, -1, -1, 119, -1, 121, 5, 123, 7, 8, -1, 10, 11, 12, - 13, 14, -1, -1, 48, 49, 19, 20, 21, 22, - 23, -1, 25, 57, -1, 28, 29, -1, -1, -1, - 33, 34, -1, -1, -1, -1, -1, -1, 41, -1, - 43, -1, -1, 46, 47, -1, -1, 50, 51, 52, - -1, -1, -1, -1, -1, -1, -1, 60, -1, -1, - -1, -1, -1, -1, -1, 68, -1, 70, 71, 103, - 104, 105, 106, 107, 108, 109, 110, 111, -1, 82, - -1, -1, 116, 117, -1, -1, -1, -1, -1, -1, - 93, 94, -1, -1, 97, -1, -1, 100, -1, -1, - -1, -1, -1, -1, 107, 108, -1, -1, -1, 26, - 27, 114, 115, 30, 31, 32, 119, -1, 121, 5, - 123, 7, 8, -1, 10, 11, 12, 13, 14, -1, - 47, 48, 49, 19, 20, 21, 22, 23, -1, 25, - 57, -1, 28, 29, -1, -1, -1, 33, 34, -1, - -1, -1, -1, -1, -1, 41, -1, 43, -1, -1, - 46, 47, -1, -1, 50, 51, 52, -1, -1, -1, - -1, -1, -1, -1, 60, -1, -1, -1, -1, -1, - -1, -1, 68, -1, 70, 71, 103, 104, 105, 106, - 107, 108, 109, 110, 111, -1, 82, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 93, 94, -1, - -1, 97, -1, -1, 100, -1, -1, -1, -1, -1, - -1, 107, 108, -1, -1, -1, 26, 27, 114, 115, - 30, 31, 32, 119, -1, 121, 5, 123, 7, 8, - -1, 10, 11, 12, 13, 14, -1, -1, 48, 49, - 19, 20, 21, 22, 23, -1, 25, 57, -1, 28, - 29, -1, -1, -1, 33, 34, -1, -1, -1, -1, - -1, -1, 41, -1, 43, -1, -1, 46, 47, -1, - -1, 50, 51, 52, -1, -1, -1, -1, -1, -1, - -1, 60, -1, -1, -1, -1, -1, -1, -1, 68, - -1, 70, 71, 103, 104, 105, 106, 107, 108, 109, - 110, 111, -1, 82, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 93, 94, -1, -1, 97, -1, - -1, 100, -1, -1, -1, -1, -1, -1, 107, 108, - -1, -1, -1, -1, -1, 114, 115, 30, 31, 32, - 119, -1, 121, 5, 123, 7, 8, -1, 10, 11, - 12, 13, 14, -1, -1, 48, 49, 19, 20, 21, - 22, 23, -1, 25, 57, -1, -1, 29, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 41, - -1, 43, -1, -1, 46, 47, -1, -1, 50, 51, - 52, -1, -1, -1, -1, -1, -1, -1, 60, 9, - -1, -1, -1, -1, -1, -1, 68, -1, 70, 71, - 103, 104, 105, 106, 107, 108, 109, 110, 111, -1, - 82, -1, -1, 33, 34, 35, -1, -1, -1, -1, - -1, 93, 94, -1, -1, 97, -1, -1, 100, -1, - -1, -1, -1, 53, 54, 55, 56, -1, 58, 59, - -1, -1, 114, -1, -1, -1, -1, 119, -1, 121, - 9, 123, 72, 73, 74, 75, 76, 77, 78, 79, + 13, 14, -1, -1, -1, -1, 19, 20, 21, 22, + 23, -1, 25, -1, -1, -1, 29, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 41, -1, + 43, -1, -1, 46, 47, -1, -1, -1, 51, 52, + -1, -1, -1, -1, -1, -1, 9, 60, -1, -1, + -1, -1, -1, -1, -1, 68, -1, 70, 71, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 82, + 33, 34, -1, -1, -1, -1, -1, -1, -1, -1, + 93, 94, -1, -1, 97, -1, -1, -1, -1, -1, + 53, 54, 55, 56, -1, 58, 59, -1, -1, -1, + -1, 114, -1, -1, -1, -1, 119, -1, 121, 72, + 73, 74, 75, 76, 77, 78, 79, 80, -1, 9, + -1, -1, 85, 86, 87, 88, 89, 90, 91, 92, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 33, 34, 35, -1, -1, -1, -1, + -1, -1, -1, 116, 117, -1, -1, -1, -1, -1, + 123, -1, 125, 53, 54, 55, 56, -1, 58, 59, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 9, 72, 73, 74, 75, 76, 77, 78, 79, 80, -1, -1, -1, -1, 85, 86, 87, 88, 89, - 90, 91, 92, -1, 33, 34, 35, -1, -1, -1, + 90, 91, 92, -1, -1, 33, 34, 35, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 53, 54, 55, 56, -1, 58, - 59, -1, -1, 123, -1, 125, -1, -1, -1, -1, - 9, -1, -1, 72, 73, 74, 75, 76, 77, 78, - 79, 80, -1, -1, -1, -1, 85, 86, 87, 88, - 89, 90, 91, 92, 33, 34, 35, -1, -1, -1, + -1, -1, -1, -1, -1, 53, 54, 55, 56, 119, + 58, 59, -1, 123, -1, 125, -1, -1, -1, -1, + -1, 9, -1, -1, 72, 73, 74, 75, 76, 77, + 78, 79, 80, -1, -1, -1, -1, 85, 86, 87, + 88, 89, 90, 91, 92, 33, 34, 35, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 53, 54, 55, 56, -1, 58, - 59, -1, -1, -1, 123, -1, 125, -1, -1, -1, - 9, -1, -1, 72, 73, 74, 75, 76, 77, 78, - 79, 80, -1, -1, -1, -1, 85, 86, 87, 88, - 89, 90, 91, 92, 33, 34, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 53, 54, 55, 56, -1, + 58, 59, -1, -1, -1, 123, -1, 125, -1, -1, + -1, 9, -1, -1, 72, 73, 74, 75, 76, 77, + 78, 79, 80, -1, -1, -1, -1, 85, 86, 87, + 88, 89, 90, 91, 92, 33, 34, 35, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 53, 54, 55, 56, -1, 58, - 59, -1, -1, -1, 123, -1, 125, -1, -1, -1, - -1, -1, -1, 72, 73, 74, 75, 76, 77, 78, - 79, 80, -1, -1, -1, -1, 85, 86, 87, 88, - 89, 90, 91, 92, 5, -1, -1, -1, -1, -1, - 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 22, 23, -1, 25, -1, -1, -1, 29, -1, - -1, -1, -1, -1, 123, -1, 125, -1, -1, -1, - 41, -1, 43, -1, -1, 46, 47, 5, -1, -1, - 51, 52, -1, 11, 12, -1, -1, -1, -1, 60, - -1, -1, -1, -1, 22, 23, -1, 25, -1, -1, - -1, 29, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 82, -1, 41, -1, 43, -1, -1, 46, 47, - -1, 5, 93, 51, 52, -1, 97, 11, 12, -1, - -1, -1, 60, -1, -1, -1, -1, -1, 22, 23, - -1, 25, 70, 71, 115, 29, -1, -1, -1, -1, - -1, -1, -1, -1, 82, -1, -1, 41, -1, 43, - -1, -1, 46, 47, 5, 93, -1, 51, 52, 97, - 11, 12, -1, -1, -1, -1, 60, -1, -1, -1, - -1, 22, 23, -1, 25, -1, 114, -1, 29, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 82, -1, - 41, -1, 43, -1, -1, 46, 47, -1, 5, 93, - 51, 52, -1, 97, 11, 12, -1, 101, -1, 60, - -1, -1, -1, -1, -1, 22, 23, -1, 25, -1, - -1, -1, 29, -1, -1, -1, -1, -1, -1, -1, - -1, 82, -1, -1, 41, -1, 43, -1, -1, 46, - 47, 5, 93, -1, 51, 52, 97, 11, 12, -1, - 101, -1, -1, 60, -1, -1, -1, -1, 22, 23, - -1, 25, -1, -1, -1, 29, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 82, -1, 41, -1, 43, - -1, -1, 46, 47, -1, 5, 93, 51, 52, -1, - 97, 11, 12, -1, 101, -1, 60, -1, -1, -1, + -1, -1, -1, -1, -1, 53, 54, 55, 56, -1, + 58, 59, -1, -1, -1, 123, -1, 125, -1, -1, + -1, 9, -1, -1, 72, 73, 74, 75, 76, 77, + 78, 79, 80, -1, -1, -1, -1, 85, 86, 87, + 88, 89, 90, 91, 92, 33, 34, 35, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 53, 54, 55, 56, -1, + 58, 59, -1, -1, -1, 123, -1, 125, -1, -1, + -1, -1, -1, -1, 72, 73, 74, 75, 76, 77, + 78, 79, 80, -1, -1, -1, -1, 85, 86, 87, + 88, 89, 90, 91, 92, 5, -1, -1, -1, -1, + -1, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, -1, 25, -1, -1, -1, 29, - -1, -1, -1, -1, -1, -1, -1, -1, 82, -1, - -1, 41, -1, 43, -1, -1, 46, 47, -1, 93, - -1, 51, 52, 97, -1, -1, -1, 101, -1, -1, + -1, -1, -1, -1, -1, 123, -1, 125, -1, -1, + -1, 41, -1, 43, -1, -1, 46, 47, 5, -1, + -1, 51, 52, -1, 11, 12, -1, -1, -1, -1, + 60, -1, -1, -1, -1, 22, 23, -1, 25, -1, + -1, -1, 29, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 82, -1, 41, -1, 43, -1, -1, 46, + 47, -1, 5, 93, 51, 52, -1, 97, 11, 12, + -1, -1, -1, 60, -1, -1, -1, -1, -1, 22, + 23, -1, 25, -1, -1, 115, 29, -1, -1, -1, + -1, -1, -1, -1, -1, 82, -1, -1, 41, -1, + 43, -1, -1, 46, 47, 5, 93, -1, 51, 52, + 97, 11, 12, -1, 101, -1, -1, 60, -1, -1, + -1, -1, 22, 23, -1, 25, -1, -1, -1, 29, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 82, + -1, 41, -1, 43, -1, -1, 46, 47, -1, -1, + 93, 51, 52, -1, 97, -1, -1, -1, 101, -1, 60, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 70, 71, -1, -1, 85, 86, 87, 88, 89, 90, + -1, -1, -1, -1, 85, 86, 87, 88, 89, 90, 91, 92, 82, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 93, -1, -1, -1, 97, 72, 73, 74, 75, 76, 77, 78, 79, 80, -1, 119, -1, @@ -3266,9 +3261,9 @@ static const yytype_int16 yycheck[] = -1, -1, -1, -1, -1, 119, -1, -1, -1, -1, -1, -1, -1, -1, 72, 73, 74, 75, 76, 77, 78, 79, 80, -1, -1, -1, 119, 85, 86, 87, - 88, 89, 90, 91, 92, 72, 73, 74, 75, 76, - 77, 78, 79, 80, -1, -1, -1, -1, 85, 86, - 87, 88, 89, 90, 91, 92, -1, -1, -1, -1, + 88, 89, 90, 91, 92, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 119 }; @@ -3276,107 +3271,107 @@ static const yytype_int16 yycheck[] = symbol of state STATE-NUM. */ static const yytype_uint16 yystos[] = { - 0, 128, 129, 0, 1, 5, 6, 7, 8, 10, - 11, 12, 13, 14, 19, 20, 21, 22, 23, 24, - 25, 29, 33, 34, 36, 41, 42, 43, 44, 46, - 47, 50, 51, 52, 60, 61, 62, 66, 68, 69, - 70, 71, 81, 82, 83, 84, 93, 94, 95, 96, - 97, 98, 99, 100, 114, 116, 117, 119, 121, 123, - 130, 131, 132, 137, 143, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 177, - 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - 189, 190, 191, 192, 193, 195, 199, 204, 206, 207, - 208, 210, 222, 224, 225, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 242, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 272, 275, - 278, 293, 294, 297, 309, 311, 313, 323, 326, 328, - 339, 344, 347, 349, 356, 367, 373, 375, 375, 148, - 155, 156, 35, 35, 260, 261, 119, 11, 12, 14, - 22, 23, 25, 28, 29, 41, 43, 50, 52, 60, - 93, 107, 108, 115, 163, 164, 166, 168, 171, 173, - 175, 178, 180, 182, 184, 189, 190, 191, 195, 198, - 204, 208, 211, 216, 222, 224, 225, 226, 227, 235, - 236, 237, 238, 242, 247, 248, 250, 251, 253, 257, - 300, 162, 161, 162, 146, 149, 180, 211, 216, 216, - 312, 276, 147, 162, 163, 164, 166, 168, 171, 173, - 175, 178, 180, 182, 184, 189, 190, 191, 195, 204, - 208, 221, 222, 242, 251, 257, 35, 273, 262, 151, - 357, 145, 155, 182, 184, 366, 10, 162, 162, 121, - 162, 284, 19, 154, 243, 369, 162, 182, 184, 189, - 191, 204, 251, 335, 336, 348, 216, 119, 251, 115, - 216, 176, 162, 182, 184, 205, 1, 131, 132, 143, - 278, 375, 3, 4, 35, 119, 9, 125, 239, 240, - 9, 239, 162, 182, 184, 188, 251, 9, 35, 239, - 188, 9, 35, 239, 188, 188, 9, 35, 239, 188, - 9, 35, 239, 188, 9, 35, 239, 188, 9, 35, - 188, 9, 239, 188, 251, 9, 35, 119, 155, 239, - 188, 251, 9, 35, 119, 155, 239, 188, 251, 8, - 10, 162, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 177, 178, 179, 181, 182, 183, 184, - 185, 188, 242, 251, 252, 257, 258, 188, 9, 239, - 9, 155, 239, 9, 35, 188, 9, 35, 155, 239, - 188, 9, 35, 119, 239, 123, 188, 9, 35, 155, - 239, 188, 33, 34, 53, 54, 55, 56, 58, 59, - 103, 123, 223, 155, 155, 155, 155, 155, 9, 35, - 239, 9, 35, 155, 239, 188, 251, 118, 120, 118, - 120, 118, 120, 118, 120, 9, 35, 155, 239, 188, - 144, 15, 16, 17, 18, 301, 303, 308, 1, 12, - 24, 25, 131, 143, 157, 158, 159, 160, 278, 375, - 17, 37, 38, 39, 310, 314, 319, 216, 160, 17, - 345, 346, 155, 155, 216, 375, 162, 263, 266, 263, - 216, 253, 216, 216, 216, 162, 193, 212, 217, 213, - 214, 215, 26, 27, 30, 31, 32, 48, 49, 57, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 218, - 118, 298, 153, 118, 375, 155, 182, 264, 265, 266, - 375, 162, 277, 155, 9, 103, 332, 186, 162, 274, - 277, 264, 375, 216, 368, 19, 119, 280, 375, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 85, 86, - 87, 88, 89, 90, 91, 92, 139, 140, 141, 119, - 375, 107, 120, 101, 162, 245, 246, 67, 370, 51, - 118, 216, 375, 162, 101, 115, 201, 202, 203, 216, - 220, 241, 375, 162, 162, 194, 216, 101, 216, 219, - 118, 124, 216, 216, 216, 216, 216, 216, 216, 216, - 216, 196, 216, 197, 216, 216, 216, 216, 216, 209, - 205, 216, 216, 216, 216, 216, 216, 216, 216, 205, - 216, 216, 216, 216, 216, 216, 216, 155, 375, 304, - 308, 16, 301, 308, 3, 4, 157, 315, 320, 37, - 310, 319, 38, 310, 375, 37, 38, 350, 353, 375, - 125, 139, 270, 271, 118, 375, 375, 118, 118, 140, - 140, 140, 140, 140, 216, 216, 216, 216, 216, 216, - 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, - 216, 140, 118, 202, 216, 375, 375, 162, 139, 270, - 118, 150, 139, 118, 375, 216, 139, 51, 118, 375, - 375, 152, 157, 295, 296, 375, 370, 115, 375, 279, - 162, 283, 284, 286, 162, 162, 281, 285, 19, 375, - 139, 126, 118, 118, 162, 198, 202, 211, 251, 371, - 372, 115, 216, 337, 338, 335, 375, 17, 374, 120, - 162, 182, 189, 191, 193, 204, 118, 122, 133, 135, - 134, 136, 200, 203, 219, 125, 200, 200, 200, 302, - 216, 306, 308, 162, 162, 216, 375, 317, 310, 322, - 324, 216, 354, 37, 346, 353, 216, 267, 268, 141, - 118, 124, 266, 201, 216, 201, 118, 118, 299, 9, - 141, 265, 375, 162, 329, 162, 162, 375, 157, 358, - 19, 82, 115, 162, 288, 291, 292, 287, 284, 286, - 375, 162, 282, 286, 288, 216, 244, 101, 162, 372, - 118, 162, 118, 340, 295, 203, 375, 119, 375, 119, - 118, 120, 219, 120, 120, 120, 296, 375, 216, 119, - 375, 119, 375, 375, 321, 216, 375, 296, 351, 375, - 216, 9, 216, 125, 118, 120, 201, 201, 296, 216, - 139, 46, 139, 63, 64, 363, 364, 365, 375, 115, - 162, 162, 139, 120, 118, 118, 139, 118, 122, 120, - 118, 122, 139, 372, 337, 97, 343, 17, 101, 138, - 142, 162, 138, 203, 305, 375, 138, 138, 316, 296, - 375, 296, 325, 375, 355, 352, 269, 216, 201, 120, - 120, 216, 162, 359, 375, 375, 162, 139, 119, 139, - 139, 115, 162, 292, 82, 286, 375, 139, 216, 341, - 120, 118, 139, 120, 296, 307, 120, 120, 296, 318, - 17, 40, 327, 296, 296, 375, 216, 120, 47, 333, - 65, 361, 362, 296, 296, 119, 139, 220, 289, 290, - 375, 162, 139, 115, 162, 375, 375, 101, 162, 375, - 296, 375, 375, 296, 296, 216, 330, 360, 375, 289, - 118, 120, 119, 139, 162, 139, 342, 139, 375, 17, - 296, 120, 290, 289, 119, 139, 296, 334, 331, 120, - 289, 17, 45, 334, 120, 162, 162 + 0, 1, 5, 6, 7, 8, 10, 11, 12, 13, + 14, 19, 20, 21, 22, 23, 24, 25, 29, 33, + 34, 36, 41, 42, 43, 44, 46, 47, 50, 51, + 52, 60, 61, 62, 66, 68, 69, 70, 71, 81, + 82, 83, 84, 93, 94, 95, 96, 97, 98, 99, + 100, 114, 116, 117, 119, 121, 123, 128, 129, 130, + 131, 136, 142, 158, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 173, 174, 175, + 176, 177, 178, 179, 180, 181, 182, 183, 185, 186, + 187, 188, 189, 191, 195, 200, 202, 203, 204, 206, + 218, 220, 221, 223, 224, 225, 226, 227, 228, 229, + 230, 231, 238, 243, 244, 245, 246, 247, 248, 249, + 250, 251, 252, 253, 254, 255, 268, 271, 274, 289, + 290, 293, 305, 307, 309, 319, 322, 324, 335, 340, + 343, 345, 352, 363, 369, 371, 371, 144, 151, 152, + 35, 35, 256, 257, 119, 11, 12, 14, 22, 23, + 25, 28, 29, 41, 43, 50, 52, 60, 93, 107, + 108, 115, 159, 160, 162, 164, 167, 169, 171, 174, + 176, 178, 180, 185, 186, 187, 191, 194, 200, 204, + 207, 212, 218, 220, 221, 222, 223, 231, 232, 233, + 234, 238, 243, 244, 246, 247, 249, 253, 296, 158, + 157, 158, 151, 145, 176, 207, 212, 212, 308, 272, + 151, 158, 159, 160, 162, 164, 167, 169, 171, 174, + 176, 178, 180, 185, 186, 187, 191, 200, 204, 217, + 218, 238, 247, 253, 35, 269, 258, 147, 353, 143, + 151, 178, 180, 362, 10, 158, 158, 121, 158, 280, + 19, 150, 239, 365, 158, 178, 180, 185, 187, 200, + 247, 331, 332, 344, 212, 119, 247, 115, 212, 172, + 158, 178, 180, 201, 0, 1, 130, 131, 142, 274, + 371, 3, 4, 35, 119, 9, 125, 235, 236, 9, + 235, 158, 178, 180, 184, 247, 9, 35, 235, 184, + 9, 35, 235, 184, 184, 9, 35, 235, 184, 9, + 35, 235, 184, 9, 35, 235, 184, 9, 35, 184, + 9, 235, 184, 247, 9, 35, 119, 151, 235, 184, + 247, 9, 35, 119, 151, 235, 184, 247, 8, 10, + 158, 161, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 173, 174, 175, 177, 178, 179, 180, 181, + 184, 238, 247, 248, 253, 254, 184, 9, 235, 9, + 151, 235, 9, 35, 184, 9, 35, 151, 235, 184, + 9, 35, 119, 235, 123, 184, 9, 35, 151, 235, + 184, 33, 34, 53, 54, 55, 56, 58, 59, 103, + 123, 219, 151, 151, 151, 151, 151, 9, 35, 235, + 9, 35, 151, 235, 184, 247, 118, 120, 118, 120, + 118, 120, 118, 120, 9, 35, 151, 235, 184, 151, + 15, 16, 17, 18, 297, 299, 304, 1, 12, 24, + 25, 130, 142, 153, 154, 155, 156, 274, 371, 17, + 37, 38, 39, 306, 310, 315, 212, 156, 17, 341, + 342, 151, 151, 212, 371, 158, 259, 262, 259, 212, + 249, 212, 212, 212, 158, 189, 208, 213, 209, 210, + 211, 26, 27, 30, 31, 32, 48, 49, 57, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 214, 118, + 294, 149, 118, 371, 178, 260, 261, 262, 371, 158, + 273, 9, 103, 328, 182, 158, 270, 273, 260, 371, + 212, 364, 19, 119, 276, 371, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 85, 86, 87, 88, 89, + 90, 91, 92, 138, 139, 140, 119, 371, 107, 120, + 101, 158, 241, 242, 67, 366, 51, 118, 212, 371, + 158, 101, 115, 197, 198, 199, 212, 216, 237, 371, + 158, 158, 190, 212, 101, 212, 215, 118, 124, 212, + 212, 212, 212, 212, 212, 212, 212, 212, 192, 212, + 193, 212, 212, 212, 212, 212, 205, 201, 212, 212, + 212, 212, 212, 212, 212, 212, 201, 212, 212, 212, + 212, 212, 212, 212, 371, 300, 304, 16, 297, 304, + 3, 4, 153, 311, 316, 37, 306, 315, 38, 306, + 371, 37, 38, 346, 349, 371, 125, 138, 266, 267, + 118, 371, 371, 118, 118, 139, 139, 139, 139, 139, + 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, + 212, 212, 212, 212, 212, 212, 212, 139, 118, 198, + 212, 371, 371, 158, 138, 266, 118, 146, 138, 118, + 371, 212, 138, 51, 118, 371, 371, 148, 153, 291, + 292, 371, 366, 115, 371, 275, 158, 279, 280, 282, + 158, 158, 277, 281, 19, 371, 138, 126, 118, 118, + 158, 194, 198, 207, 247, 367, 368, 115, 212, 333, + 334, 331, 371, 17, 370, 120, 158, 178, 185, 187, + 189, 200, 118, 122, 132, 134, 133, 135, 196, 199, + 215, 125, 196, 196, 196, 298, 212, 302, 304, 158, + 158, 212, 371, 313, 306, 318, 320, 212, 350, 37, + 342, 349, 212, 263, 264, 140, 118, 124, 262, 197, + 212, 197, 118, 118, 295, 9, 140, 261, 371, 158, + 325, 158, 158, 371, 153, 354, 19, 82, 115, 158, + 284, 287, 288, 283, 280, 282, 371, 158, 278, 282, + 284, 212, 240, 101, 158, 368, 118, 158, 118, 336, + 291, 199, 371, 119, 371, 119, 118, 120, 215, 120, + 120, 120, 292, 371, 212, 119, 371, 119, 371, 371, + 317, 212, 371, 292, 347, 371, 212, 9, 212, 125, + 118, 120, 197, 197, 292, 212, 138, 46, 138, 63, + 64, 359, 360, 361, 371, 115, 158, 158, 138, 120, + 118, 118, 138, 118, 122, 120, 118, 122, 138, 368, + 333, 97, 339, 17, 101, 137, 141, 158, 137, 199, + 301, 371, 137, 137, 312, 292, 371, 292, 321, 371, + 351, 348, 265, 212, 197, 120, 120, 212, 158, 355, + 371, 371, 158, 138, 119, 138, 138, 115, 158, 288, + 82, 282, 371, 138, 212, 337, 120, 118, 138, 120, + 292, 303, 120, 120, 292, 314, 17, 40, 323, 292, + 292, 371, 212, 120, 47, 329, 65, 357, 358, 292, + 292, 119, 138, 216, 285, 286, 371, 158, 138, 115, + 158, 371, 371, 101, 158, 371, 292, 371, 371, 292, + 292, 212, 326, 356, 371, 285, 118, 120, 119, 138, + 158, 138, 338, 138, 371, 17, 292, 120, 286, 285, + 119, 138, 292, 330, 327, 120, 285, 17, 45, 330, + 120, 158, 158 }; #define yyerrok (yyerrstatus = 0) @@ -3893,12 +3888,12 @@ yydestruct (yymsg, yytype, yyvaluep, pComp) case 19: /* "LITERAL" */ #line 261 "harbour.y" { if( (yyvaluep->valChar).dealloc ) hb_xfree( (yyvaluep->valChar).string ); }; -#line 3897 "harboury.c" +#line 3892 "harboury.c" break; case 94: /* "CBSTART" */ #line 260 "harbour.y" { if( (yyvaluep->asCodeblock).string ) hb_xfree( (yyvaluep->asCodeblock).string ); }; -#line 3902 "harboury.c" +#line 3897 "harboury.c" break; default: @@ -4206,258 +4201,209 @@ yyreduce: YY_REDUCE_PRINT (yyn); switch (yyn) { - case 2: -#line 265 "harbour.y" - { hb_compLinePush( HB_COMP_PARAM ); ;} - break; - - case 3: -#line 265 "harbour.y" - { ;} - break; - - case 10: + case 9: #line 274 "harbour.y" { yyclearin; yyerrok; ;} break; - case 16: + case 15: #line 280 "harbour.y" { yyclearin; yyerrok; ;} break; - case 17: + case 16: #line 284 "harbour.y" - { if( (yyvsp[(3) - (4)].valChar).dealloc ) { hb_xfree( (yyvsp[(3) - (4)].valChar).string ); (yyvsp[(3) - (4)].valChar).dealloc = FALSE; } ;} + { HB_COMP_PARAM->currModule = hb_compIdentifierNew( HB_COMP_PARAM, (yyvsp[(3) - (4)].valChar).string, (yyvsp[(3) - (4)].valChar).dealloc ? HB_IDENT_FREE : HB_IDENT_STATIC ); + HB_COMP_PARAM->currLine = (yyvsp[(2) - (4)].valLong).lNumber; + HB_COMP_PARAM->pLex->fEol = FALSE; + if( (yyvsp[(3) - (4)].valChar).dealloc ) { hb_xfree( (yyvsp[(3) - (4)].valChar).string ); (yyvsp[(3) - (4)].valChar).dealloc = FALSE; } ;} break; - case 18: -#line 286 "harbour.y" - { if( (yyvsp[(3) - (6)].valChar).dealloc ) { hb_xfree( (yyvsp[(3) - (6)].valChar).string ); (yyvsp[(3) - (6)].valChar).dealloc = FALSE; } + case 17: +#line 289 "harbour.y" + { HB_COMP_PARAM->currModule = hb_compIdentifierNew( HB_COMP_PARAM, (yyvsp[(5) - (6)].valChar).string, (yyvsp[(5) - (6)].valChar).dealloc ? HB_IDENT_FREE : HB_IDENT_STATIC ); + HB_COMP_PARAM->currLine = (yyvsp[(2) - (6)].valLong).lNumber; + HB_COMP_PARAM->pLex->fEol = FALSE; + if( (yyvsp[(3) - (6)].valChar).dealloc ) { hb_xfree( (yyvsp[(3) - (6)].valChar).string ); (yyvsp[(3) - (6)].valChar).dealloc = FALSE; } if( (yyvsp[(5) - (6)].valChar).dealloc ) { hb_xfree( (yyvsp[(5) - (6)].valChar).string ); (yyvsp[(5) - (6)].valChar).dealloc = FALSE; } ;} break; - case 19: -#line 290 "harbour.y" + case 18: +#line 296 "harbour.y" { HB_COMP_PARAM->cVarType = ' '; hb_compFunctionAdd( HB_COMP_PARAM, (yyvsp[(3) - (3)].string), ( HB_SYMBOLSCOPE ) (yyvsp[(1) - (3)].iNumber), 0 ); ;} break; case 20: -#line 290 "harbour.y" - {;} - break; - - case 21: -#line 291 "harbour.y" +#line 297 "harbour.y" { HB_COMP_PARAM->cVarType = ' '; hb_compFunctionAdd( HB_COMP_PARAM, (yyvsp[(3) - (3)].string), ( HB_SYMBOLSCOPE ) (yyvsp[(1) - (3)].iNumber), FUN_PROCEDURE ); ;} break; case 22: -#line 291 "harbour.y" - {;} - break; - - case 23: -#line 292 "harbour.y" +#line 298 "harbour.y" { HB_COMP_PARAM->cVarType = ' '; hb_compFunctionAdd( HB_COMP_PARAM, (yyvsp[(3) - (3)].string), ( HB_SYMBOLSCOPE ) (yyvsp[(1) - (3)].iNumber), 0 ); HB_COMP_PARAM->iVarScope = VS_PARAMETER; ;} break; case 24: -#line 292 "harbour.y" - {;} - break; - - case 25: -#line 293 "harbour.y" +#line 299 "harbour.y" { HB_COMP_PARAM->cVarType = ' '; hb_compFunctionAdd( HB_COMP_PARAM, (yyvsp[(3) - (3)].string), ( HB_SYMBOLSCOPE ) (yyvsp[(1) - (3)].iNumber), FUN_PROCEDURE ); HB_COMP_PARAM->iVarScope = VS_PARAMETER;;} break; case 26: -#line 293 "harbour.y" - {;} - break; - - case 27: -#line 296 "harbour.y" +#line 302 "harbour.y" { (yyval.iNumber) = HB_FS_PUBLIC; ;} break; - case 28: -#line 297 "harbour.y" + case 27: +#line 303 "harbour.y" { (yyval.iNumber) = HB_FS_STATIC; ;} break; - case 29: -#line 298 "harbour.y" + case 28: +#line 304 "harbour.y" { (yyval.iNumber) = HB_FS_INIT; ;} break; - case 30: -#line 299 "harbour.y" + case 29: +#line 305 "harbour.y" { (yyval.iNumber) = HB_FS_EXIT; ;} break; - case 31: -#line 302 "harbour.y" + case 30: +#line 308 "harbour.y" { (yyval.iNumber) = 0; ;} break; - case 32: -#line 303 "harbour.y" + case 31: +#line 309 "harbour.y" { HB_COMP_PARAM->functions.pLast->fVParams = TRUE; (yyval.iNumber) = 0; ;} break; - case 34: -#line 305 "harbour.y" + case 33: +#line 311 "harbour.y" { HB_COMP_PARAM->functions.pLast->fVParams = TRUE; (yyval.iNumber) = (yyvsp[(1) - (3)].iNumber); ;} break; - case 35: -#line 308 "harbour.y" + case 34: +#line 314 "harbour.y" { HB_COMP_PARAM->cVarType = ' '; ;} break; - case 37: -#line 312 "harbour.y" + case 36: +#line 318 "harbour.y" { HB_COMP_PARAM->cVarType = 'N'; ;} break; - case 38: -#line 313 "harbour.y" + case 37: +#line 319 "harbour.y" { HB_COMP_PARAM->cVarType = 'C'; ;} break; - case 39: -#line 314 "harbour.y" + case 38: +#line 320 "harbour.y" { HB_COMP_PARAM->cVarType = 'D'; ;} break; - case 40: -#line 315 "harbour.y" + case 39: +#line 321 "harbour.y" { HB_COMP_PARAM->cVarType = 'L'; ;} break; - case 41: -#line 316 "harbour.y" + case 40: +#line 322 "harbour.y" { HB_COMP_PARAM->cVarType = 'B'; ;} break; - case 42: -#line 317 "harbour.y" + case 41: +#line 323 "harbour.y" { HB_COMP_PARAM->cVarType = 'O'; ;} break; - case 43: -#line 318 "harbour.y" + case 42: +#line 324 "harbour.y" { HB_COMP_PARAM->cVarType = 'S'; HB_COMP_PARAM->szFromClass = (yyvsp[(2) - (2)].string); ;} break; - case 44: -#line 319 "harbour.y" + case 43: +#line 325 "harbour.y" { HB_COMP_PARAM->cVarType = ' '; ;} break; - case 46: -#line 323 "harbour.y" + case 45: +#line 329 "harbour.y" { HB_COMP_PARAM->cVarType = 'A'; ;} break; - case 47: -#line 324 "harbour.y" + case 46: +#line 330 "harbour.y" { HB_COMP_PARAM->cVarType = 'n'; ;} break; - case 48: -#line 325 "harbour.y" + case 47: +#line 331 "harbour.y" { HB_COMP_PARAM->cVarType = 'c'; ;} break; - case 49: -#line 326 "harbour.y" + case 48: +#line 332 "harbour.y" { HB_COMP_PARAM->cVarType = 'd'; ;} break; - case 50: -#line 327 "harbour.y" + case 49: +#line 333 "harbour.y" { HB_COMP_PARAM->cVarType = 'l'; ;} break; - case 51: -#line 328 "harbour.y" + case 50: +#line 334 "harbour.y" { HB_COMP_PARAM->cVarType = 'a'; ;} break; - case 52: -#line 329 "harbour.y" + case 51: +#line 335 "harbour.y" { HB_COMP_PARAM->cVarType = 'b'; ;} break; - case 53: -#line 330 "harbour.y" + case 52: +#line 336 "harbour.y" { HB_COMP_PARAM->cVarType = 'o'; ;} break; - case 54: -#line 331 "harbour.y" + case 53: +#line 337 "harbour.y" { HB_COMP_PARAM->cVarType = 's'; HB_COMP_PARAM->szFromClass = (yyvsp[(2) - (2)].string); ;} break; - case 55: -#line 334 "harbour.y" + case 54: +#line 340 "harbour.y" { hb_compVariableAdd( HB_COMP_PARAM, (yyvsp[(1) - (2)].string), HB_COMP_PARAM->cVarType ); (yyval.iNumber) = 1; ;} break; - case 56: -#line 335 "harbour.y" + case 55: +#line 341 "harbour.y" { hb_compVariableAdd( HB_COMP_PARAM, (yyvsp[(3) - (4)].string), HB_COMP_PARAM->cVarType ); (yyval.iNumber)++; ;} break; - case 57: -#line 343 "harbour.y" - { HB_COMP_PARAM->fDontGenLineNum = TRUE; ;} - break; - case 58: -#line 343 "harbour.y" - { ;} +#line 351 "harbour.y" + { hb_compExprDelete( hb_compExprGenStatement( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_WITH_RETURN; ;} break; case 59: -#line 344 "harbour.y" - { ;} +#line 352 "harbour.y" + { hb_compExprDelete( hb_compExprGenStatement( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_WITH_RETURN; ;} break; case 60: -#line 345 "harbour.y" +#line 353 "harbour.y" { hb_compExprDelete( hb_compExprGenStatement( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_WITH_RETURN; ;} break; case 61: -#line 346 "harbour.y" +#line 354 "harbour.y" { hb_compExprDelete( hb_compExprGenStatement( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_WITH_RETURN; ;} break; case 62: -#line 347 "harbour.y" - { hb_compExprDelete( hb_compExprGenStatement( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_WITH_RETURN; ;} - break; - - case 63: -#line 348 "harbour.y" - { hb_compExprDelete( hb_compExprGenStatement( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_WITH_RETURN; ;} - break; - - case 64: -#line 349 "harbour.y" - { if( HB_COMP_ISSUPPORTED( HB_COMPFLAG_XBASE ) ) - hb_compExprDelete( hb_compExprGenStatement( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); - else - hb_compExprDelete( hb_compErrorSyntax( HB_COMP_PARAM, (yyvsp[(1) - (2)].asExpr) ), HB_COMP_PARAM ); - HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_WITH_RETURN; - ;} - break; - - case 65: #line 355 "harbour.y" { if( HB_COMP_ISSUPPORTED( HB_COMPFLAG_XBASE ) ) hb_compExprDelete( hb_compExprGenStatement( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); @@ -4467,84 +4413,85 @@ yyreduce: ;} break; - case 66: + case 63: #line 361 "harbour.y" - { hb_compExprDelete( hb_compExprGenStatement( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_WITH_RETURN; ;} + { if( HB_COMP_ISSUPPORTED( HB_COMPFLAG_XBASE ) ) + hb_compExprDelete( hb_compExprGenStatement( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); + else + hb_compExprDelete( hb_compErrorSyntax( HB_COMP_PARAM, (yyvsp[(1) - (2)].asExpr) ), HB_COMP_PARAM ); + HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_WITH_RETURN; + ;} break; - case 67: -#line 362 "harbour.y" - { hb_compExprDelete( hb_compExprGenStatement( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_WITH_RETURN; ;} - break; - - case 68: -#line 363 "harbour.y" - { hb_compExprDelete( hb_compExprGenStatement( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_WITH_RETURN; ;} - break; - - case 69: -#line 364 "harbour.y" - { hb_compExprDelete( hb_compExprGenStatement( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_WITH_RETURN; ;} - break; - - case 70: -#line 365 "harbour.y" - { hb_compExprDelete( hb_compExprGenStatement( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_WITH_RETURN; ;} - break; - - case 71: -#line 366 "harbour.y" - { hb_compExprDelete( hb_compExprGenStatement( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_WITH_RETURN; ;} - break; - - case 72: + case 64: #line 367 "harbour.y" { hb_compExprDelete( hb_compExprGenStatement( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_WITH_RETURN; ;} break; - case 73: + case 65: #line 368 "harbour.y" + { hb_compExprDelete( hb_compExprGenStatement( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_WITH_RETURN; ;} + break; + + case 66: +#line 369 "harbour.y" + { hb_compExprDelete( hb_compExprGenStatement( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_WITH_RETURN; ;} + break; + + case 67: +#line 370 "harbour.y" + { hb_compExprDelete( hb_compExprGenStatement( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_WITH_RETURN; ;} + break; + + case 68: +#line 371 "harbour.y" + { hb_compExprDelete( hb_compExprGenStatement( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_WITH_RETURN; ;} + break; + + case 69: +#line 372 "harbour.y" + { hb_compExprDelete( hb_compExprGenStatement( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_WITH_RETURN; ;} + break; + + case 70: +#line 373 "harbour.y" + { hb_compExprDelete( hb_compExprGenStatement( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_WITH_RETURN; ;} + break; + + case 71: +#line 374 "harbour.y" { hb_compGenBreak( HB_COMP_PARAM ); hb_compGenPCode2( HB_P_DOSHORT, 0, HB_COMP_PARAM ); HB_COMP_PARAM->functions.pLast->bFlags |= FUN_BREAK_CODE; ;} break; - case 74: -#line 370 "harbour.y" + case 72: +#line 376 "harbour.y" { hb_compLinePushIfInside( HB_COMP_PARAM ); ;} break; - case 75: -#line 370 "harbour.y" - { hb_compGenBreak( HB_COMP_PARAM ); hb_compExprDelete( hb_compExprGenPush( (yyvsp[(3) - (4)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); - hb_compGenPCode2( HB_P_DOSHORT, 1, HB_COMP_PARAM ); - HB_COMP_PARAM->functions.pLast->bFlags |= FUN_BREAK_CODE; - ;} + case 73: +#line 377 "harbour.y" + { + hb_compGenBreak( HB_COMP_PARAM ); hb_compExprDelete( hb_compExprGenPush( (yyvsp[(3) - (4)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); + hb_compGenPCode2( HB_P_DOSHORT, 1, HB_COMP_PARAM ); + HB_COMP_PARAM->functions.pLast->bFlags |= FUN_BREAK_CODE; + ;} break; - case 76: -#line 374 "harbour.y" - { HB_COMP_PARAM->fDontGenLineNum = !HB_COMP_PARAM->fDebugInfo; ;} - break; - - case 77: -#line 374 "harbour.y" + case 74: +#line 382 "harbour.y" { hb_compLoopExit( HB_COMP_PARAM ); HB_COMP_PARAM->functions.pLast->bFlags |= FUN_BREAK_CODE; ;} break; - case 78: -#line 375 "harbour.y" - { HB_COMP_PARAM->fDontGenLineNum = !HB_COMP_PARAM->fDebugInfo; ;} - break; - - case 79: -#line 375 "harbour.y" + case 75: +#line 383 "harbour.y" { hb_compLoopLoop( HB_COMP_PARAM ); HB_COMP_PARAM->functions.pLast->bFlags |= FUN_BREAK_CODE; ;} break; - case 80: -#line 376 "harbour.y" + case 76: +#line 384 "harbour.y" { - if( HB_COMP_PARAM->wSeqCounter ) + if( HB_COMP_PARAM->wSeqCounter ) { hb_compGenError( HB_COMP_PARAM, hb_comp_szErrors, 'E', HB_COMP_ERR_EXIT_IN_SEQUENCE, "RETURN", NULL ); } @@ -4553,19 +4500,17 @@ yyreduce: { /* return from a function without a return value */ hb_compGenWarning( HB_COMP_PARAM, hb_comp_szWarnings, 'W', HB_COMP_WARN_NO_RETURN_VALUE, NULL, NULL ); } - HB_COMP_PARAM->functions.pLast->bFlags |= FUN_WITH_RETURN; - HB_COMP_PARAM->fDontGenLineNum = TRUE; - HB_COMP_PARAM->functions.pLast->bFlags |= FUN_BREAK_CODE; + HB_COMP_PARAM->functions.pLast->bFlags |= FUN_WITH_RETURN | FUN_BREAK_CODE; ;} break; - case 81: -#line 390 "harbour.y" + case 77: +#line 396 "harbour.y" { hb_compLinePushIfInside( HB_COMP_PARAM ); HB_COMP_PARAM->cVarType = ' '; ;} break; - case 82: -#line 392 "harbour.y" + case 78: +#line 398 "harbour.y" { HB_COMP_PARAM->cCastType = HB_COMP_PARAM->cVarType; HB_COMP_PARAM->cVarType = ' '; @@ -4580,40 +4525,38 @@ yyreduce: { /* procedure returns a value */ hb_compGenWarning( HB_COMP_PARAM, hb_comp_szWarnings, 'W', HB_COMP_WARN_PROC_RETURN_VALUE, NULL, NULL ); } - HB_COMP_PARAM->functions.pLast->bFlags |= FUN_WITH_RETURN; - HB_COMP_PARAM->fDontGenLineNum = TRUE; - HB_COMP_PARAM->functions.pLast->bFlags |= FUN_BREAK_CODE; + HB_COMP_PARAM->functions.pLast->bFlags |= FUN_WITH_RETURN | FUN_BREAK_CODE; ;} break; - case 83: -#line 410 "harbour.y" + case 79: +#line 414 "harbour.y" { hb_compLinePushIfInside( HB_COMP_PARAM ); HB_COMP_PARAM->iVarScope = VS_PUBLIC; ;} break; - case 84: -#line 412 "harbour.y" + case 80: +#line 416 "harbour.y" { hb_compRTVariableGen( HB_COMP_PARAM, "__MVPUBLIC" ); HB_COMP_PARAM->cVarType = ' '; HB_COMP_PARAM->iVarScope = VS_NONE; HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_WITH_RETURN; ;} break; - case 86: -#line 416 "harbour.y" + case 82: +#line 420 "harbour.y" { hb_compLinePushIfInside( HB_COMP_PARAM ); HB_COMP_PARAM->iVarScope = VS_PRIVATE; ;} break; - case 87: -#line 418 "harbour.y" + case 83: +#line 422 "harbour.y" { hb_compRTVariableGen( HB_COMP_PARAM, "__MVPRIVATE" ); HB_COMP_PARAM->cVarType = ' '; HB_COMP_PARAM->iVarScope = VS_NONE; HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_WITH_RETURN; ;} break; - case 93: -#line 426 "harbour.y" + case 89: +#line 430 "harbour.y" { if( HB_COMP_PARAM->szAnnounce == NULL ) { @@ -4630,13 +4573,13 @@ yyreduce: ;} break; - case 95: -#line 440 "harbour.y" + case 91: +#line 444 "harbour.y" { HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_WITH_RETURN; ;} break; - case 96: -#line 443 "harbour.y" + case 92: +#line 447 "harbour.y" { if( (yyvsp[(1) - (1)].valChar).dealloc ) { @@ -4647,8 +4590,8 @@ yyreduce: ;} break; - case 97: -#line 451 "harbour.y" + case 93: +#line 455 "harbour.y" { { char szFileName[ _POSIX_PATH_MAX + 1 ]; @@ -4662,183 +4605,162 @@ yyreduce: ;} break; - case 98: -#line 464 "harbour.y" + case 94: +#line 468 "harbour.y" { hb_compLinePushIfInside( HB_COMP_PARAM ); ;} break; - case 100: -#line 467 "harbour.y" - { (yyval.lNumber) = 0; HB_COMP_PARAM->fDontGenLineNum = TRUE; ;} - break; - - case 101: -#line 468 "harbour.y" - { (yyval.lNumber) = 1; ;} - break; - - case 102: -#line 469 "harbour.y" - { (yyval.lNumber) = 1; ;} - break; - - case 103: -#line 470 "harbour.y" - { (yyval.lNumber) = 1; ;} - break; - - case 104: + case 96: #line 471 "harbour.y" + { (yyval.lNumber) = 0; ;} + break; + + case 97: +#line 472 "harbour.y" + { (yyval.lNumber) = 1; ;} + break; + + case 98: +#line 473 "harbour.y" + { (yyval.lNumber) = 1; ;} + break; + + case 99: +#line 474 "harbour.y" + { (yyval.lNumber) = 1; ;} + break; + + case 100: +#line 475 "harbour.y" { (yyval.lNumber) = 0; hb_compCheckUnclosedStru( HB_COMP_PARAM ); ;} break; - case 105: -#line 472 "harbour.y" - { int iLine = hb_pp_line( HB_COMP_PARAM->pLex->pPP ); - if( HB_COMP_PARAM->ilastLineErr && HB_COMP_PARAM->ilastLineErr == iLine ) + case 101: +#line 476 "harbour.y" + { if( HB_COMP_PARAM->ilastLineErr && HB_COMP_PARAM->ilastLineErr == HB_COMP_PARAM->currLine ) { yyclearin; } else { yyerrok; - HB_COMP_PARAM->ilastLineErr = iLine; + HB_COMP_PARAM->ilastLineErr = HB_COMP_PARAM->currLine; } ;} break; - case 106: -#line 485 "harbour.y" - {;} - break; - - case 107: -#line 486 "harbour.y" - {;} - break; - - case 108: -#line 487 "harbour.y" - {;} - break; - - case 109: -#line 488 "harbour.y" - {;} - break; - - case 114: -#line 497 "harbour.y" + case 110: +#line 500 "harbour.y" { (yyval.lNumber) = (yyvsp[(1) - (1)].lNumber); ;} break; - case 115: -#line 498 "harbour.y" + case 111: +#line 501 "harbour.y" { (yyval.lNumber) += (yyvsp[(2) - (2)].lNumber); ;} break; - case 116: -#line 501 "harbour.y" + case 112: +#line 504 "harbour.y" { hb_compExternAdd( HB_COMP_PARAM, (yyvsp[(1) - (1)].string) ); ;} break; - case 117: -#line 502 "harbour.y" + case 113: +#line 505 "harbour.y" { hb_compExternAdd( HB_COMP_PARAM, (yyvsp[(3) - (3)].string) ); ;} break; - case 119: -#line 506 "harbour.y" + case 115: +#line 509 "harbour.y" { (yyval.string) = "STEP"; ;} break; - case 120: -#line 507 "harbour.y" + case 116: +#line 510 "harbour.y" { (yyval.string) = "TO"; ;} break; - case 121: -#line 508 "harbour.y" + case 117: +#line 511 "harbour.y" { (yyval.string) = "LOOP"; ;} break; - case 122: -#line 509 "harbour.y" + case 118: +#line 512 "harbour.y" { (yyval.string) = "EXIT"; ;} break; - case 123: -#line 510 "harbour.y" + case 119: +#line 513 "harbour.y" { (yyval.string) = "IN"; ;} break; - case 124: -#line 511 "harbour.y" - { (yyval.string) = (yyvsp[(1) - (1)].string); ;} - break; - - case 125: -#line 512 "harbour.y" - { (yyval.string) = (yyvsp[(1) - (1)].string); ;} - break; - - case 126: -#line 513 "harbour.y" - { (yyval.string) = (yyvsp[(1) - (1)].string); ;} - break; - - case 127: + case 120: #line 514 "harbour.y" { (yyval.string) = (yyvsp[(1) - (1)].string); ;} break; - case 128: + case 121: #line 515 "harbour.y" { (yyval.string) = (yyvsp[(1) - (1)].string); ;} break; - case 129: + case 122: #line 516 "harbour.y" { (yyval.string) = (yyvsp[(1) - (1)].string); ;} break; - case 130: + case 123: #line 517 "harbour.y" { (yyval.string) = (yyvsp[(1) - (1)].string); ;} break; - case 131: + case 124: #line 518 "harbour.y" { (yyval.string) = (yyvsp[(1) - (1)].string); ;} break; - case 132: + case 125: #line 519 "harbour.y" { (yyval.string) = (yyvsp[(1) - (1)].string); ;} break; - case 133: + case 126: #line 520 "harbour.y" { (yyval.string) = (yyvsp[(1) - (1)].string); ;} break; - case 134: + case 127: #line 521 "harbour.y" { (yyval.string) = (yyvsp[(1) - (1)].string); ;} break; - case 135: -#line 526 "harbour.y" + case 128: +#line 522 "harbour.y" + { (yyval.string) = (yyvsp[(1) - (1)].string); ;} + break; + + case 129: +#line 523 "harbour.y" + { (yyval.string) = (yyvsp[(1) - (1)].string); ;} + break; + + case 130: +#line 524 "harbour.y" + { (yyval.string) = (yyvsp[(1) - (1)].string); ;} + break; + + case 131: +#line 529 "harbour.y" { (yyval.asExpr) = hb_compExprNewDouble( (yyvsp[(1) - (1)].valDouble).dNumber, (yyvsp[(1) - (1)].valDouble).bWidth, (yyvsp[(1) - (1)].valDouble).bDec, HB_COMP_PARAM ); ;} break; - case 136: -#line 527 "harbour.y" + case 132: +#line 530 "harbour.y" { (yyval.asExpr) = hb_compExprNewLong( (yyvsp[(1) - (1)].valLong).lNumber, HB_COMP_PARAM ); ;} break; - case 137: -#line 530 "harbour.y" + case 133: +#line 533 "harbour.y" { (yyval.asExpr) = hb_compExprNewDate( (yyvsp[(1) - (1)].valLong).lNumber, HB_COMP_PARAM ); if( (yyvsp[(1) - (1)].valLong).lNumber == 0 ) { @@ -4847,1024 +4769,1024 @@ yyreduce: ;} break; - case 138: -#line 538 "harbour.y" + case 134: +#line 541 "harbour.y" { (yyval.asExpr) = hb_compExprNewLong( (yyvsp[(1) - (2)].valLong).lNumber, HB_COMP_PARAM ); ;} break; - case 139: -#line 539 "harbour.y" + case 135: +#line 542 "harbour.y" { (yyval.asExpr) = hb_compErrorAlias( HB_COMP_PARAM, hb_compExprNewDouble( (yyvsp[(1) - (2)].valDouble).dNumber, (yyvsp[(1) - (2)].valDouble).bWidth, (yyvsp[(1) - (2)].valDouble).bDec, HB_COMP_PARAM ) ); ;} break; - case 140: -#line 544 "harbour.y" + case 136: +#line 547 "harbour.y" { (yyval.asExpr) = hb_compExprNewNil( HB_COMP_PARAM ); ;} break; - case 142: -#line 552 "harbour.y" + case 138: +#line 555 "harbour.y" { (yyval.asExpr) = hb_compExprNewString( (yyvsp[(1) - (1)].valChar).string, (yyvsp[(1) - (1)].valChar).length, (yyvsp[(1) - (1)].valChar).dealloc, HB_COMP_PARAM ); (yyvsp[(1) - (1)].valChar).dealloc = FALSE; ;} break; - case 145: -#line 568 "harbour.y" + case 141: +#line 571 "harbour.y" { (yyval.asExpr) = hb_compExprNewLogical( TRUE, HB_COMP_PARAM ); ;} break; - case 146: -#line 569 "harbour.y" + case 142: +#line 572 "harbour.y" { (yyval.asExpr) = hb_compExprNewLogical( FALSE, HB_COMP_PARAM ); ;} break; - case 148: -#line 577 "harbour.y" + case 144: +#line 580 "harbour.y" { (yyval.asExpr) = hb_compExprNewSelf( HB_COMP_PARAM ); ;} break; - case 150: -#line 585 "harbour.y" + case 146: +#line 588 "harbour.y" {(yyval.bTrue)=HB_COMP_PARAM->iPassByRef;HB_COMP_PARAM->iPassByRef=HB_PASSBYREF_ARRAY;;} break; - case 151: -#line 585 "harbour.y" + case 147: +#line 588 "harbour.y" { (yyval.asExpr) = hb_compExprNewArray( (yyvsp[(3) - (4)].asExpr), HB_COMP_PARAM ); HB_COMP_PARAM->iPassByRef=(yyvsp[(2) - (4)].bTrue); ;} break; - case 153: -#line 593 "harbour.y" + case 149: +#line 596 "harbour.y" { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} break; - case 155: -#line 601 "harbour.y" + case 151: +#line 604 "harbour.y" { (yyval.asExpr) = hb_compExprNewVar( (yyvsp[(1) - (1)].string), HB_COMP_PARAM ); ;} break; - case 156: -#line 604 "harbour.y" + case 152: +#line 607 "harbour.y" { (yyval.asExpr) = hb_compExprNewAlias( (yyvsp[(1) - (2)].string), HB_COMP_PARAM ); ;} break; - case 157: -#line 609 "harbour.y" + case 153: +#line 612 "harbour.y" { (yyval.asExpr) = hb_compExprNewMacro( NULL, '&', (yyvsp[(1) - (1)].string), HB_COMP_PARAM ); ;} break; - case 158: -#line 610 "harbour.y" + case 154: +#line 613 "harbour.y" { (yyval.asExpr) = hb_compExprNewMacro( NULL, 0, (yyvsp[(1) - (1)].string), HB_COMP_PARAM ); ;} break; - case 160: -#line 618 "harbour.y" + case 156: +#line 621 "harbour.y" { (yyval.asExpr) = hb_compExprNewMacro( (yyvsp[(2) - (2)].asExpr), 0, NULL, HB_COMP_PARAM ); ;} break; - case 162: -#line 628 "harbour.y" + case 158: +#line 631 "harbour.y" { (yyval.asExpr) = hb_compExprNewAlias( "FIELD", HB_COMP_PARAM ); ;} break; - case 163: -#line 629 "harbour.y" + case 159: +#line 632 "harbour.y" { (yyval.asExpr) = (yyvsp[(3) - (3)].asExpr); ;} break; - case 164: -#line 634 "harbour.y" - { hb_compExprDelete( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} - break; - - case 165: -#line 635 "harbour.y" - { hb_compExprDelete( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} - break; - - case 166: -#line 636 "harbour.y" - { hb_compExprDelete( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} - break; - - case 167: + case 160: #line 637 "harbour.y" { hb_compExprDelete( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} break; - case 168: + case 161: #line 638 "harbour.y" { hb_compExprDelete( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} break; - case 169: + case 162: #line 639 "harbour.y" - { hb_compExprDelete( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = hb_compErrorAlias( HB_COMP_PARAM, (yyvsp[(2) - (2)].asExpr) ); ;} + { hb_compExprDelete( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} break; - case 170: + case 163: #line 640 "harbour.y" - { hb_compExprDelete( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = hb_compErrorAlias( HB_COMP_PARAM, (yyvsp[(2) - (2)].asExpr) ); ;} + { hb_compExprDelete( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} break; - case 171: + case 164: #line 641 "harbour.y" - { hb_compExprDelete( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = hb_compErrorAlias( HB_COMP_PARAM, (yyvsp[(2) - (2)].asExpr) ); ;} + { hb_compExprDelete( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} break; - case 172: + case 165: #line 642 "harbour.y" { hb_compExprDelete( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = hb_compErrorAlias( HB_COMP_PARAM, (yyvsp[(2) - (2)].asExpr) ); ;} break; - case 173: + case 166: #line 643 "harbour.y" { hb_compExprDelete( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = hb_compErrorAlias( HB_COMP_PARAM, (yyvsp[(2) - (2)].asExpr) ); ;} break; - case 174: + case 167: #line 644 "harbour.y" { hb_compExprDelete( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = hb_compErrorAlias( HB_COMP_PARAM, (yyvsp[(2) - (2)].asExpr) ); ;} break; - case 175: + case 168: #line 645 "harbour.y" { hb_compExprDelete( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = hb_compErrorAlias( HB_COMP_PARAM, (yyvsp[(2) - (2)].asExpr) ); ;} break; - case 176: + case 169: #line 646 "harbour.y" { hb_compExprDelete( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = hb_compErrorAlias( HB_COMP_PARAM, (yyvsp[(2) - (2)].asExpr) ); ;} break; - case 177: + case 170: +#line 647 "harbour.y" + { hb_compExprDelete( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = hb_compErrorAlias( HB_COMP_PARAM, (yyvsp[(2) - (2)].asExpr) ); ;} + break; + + case 171: +#line 648 "harbour.y" + { hb_compExprDelete( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = hb_compErrorAlias( HB_COMP_PARAM, (yyvsp[(2) - (2)].asExpr) ); ;} + break; + + case 172: #line 649 "harbour.y" + { hb_compExprDelete( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = hb_compErrorAlias( HB_COMP_PARAM, (yyvsp[(2) - (2)].asExpr) ); ;} + break; + + case 173: +#line 652 "harbour.y" { (yyval.asExpr) = hb_compExprNewVar( (yyvsp[(1) - (1)].string), HB_COMP_PARAM ); ;} break; - case 180: -#line 654 "harbour.y" - { (yyval.asExpr) = hb_compExprNewAliasVar( (yyvsp[(1) - (2)].asExpr), (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} - break; - - case 181: -#line 655 "harbour.y" - { (yyval.asExpr) = hb_compExprNewAliasVar( (yyvsp[(1) - (2)].asExpr), (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} - break; - - case 182: -#line 656 "harbour.y" - { (yyval.asExpr) = hb_compExprNewAliasVar( (yyvsp[(1) - (2)].asExpr), (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} - break; - - case 183: + case 176: #line 657 "harbour.y" { (yyval.asExpr) = hb_compExprNewAliasVar( (yyvsp[(1) - (2)].asExpr), (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} break; - case 184: + case 177: #line 658 "harbour.y" - { hb_compExprDelete( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = hb_compErrorAlias( HB_COMP_PARAM, (yyvsp[(1) - (2)].asExpr) ); ;} + { (yyval.asExpr) = hb_compExprNewAliasVar( (yyvsp[(1) - (2)].asExpr), (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} break; - case 185: + case 178: #line 659 "harbour.y" - { hb_compExprDelete( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = hb_compErrorAlias( HB_COMP_PARAM, (yyvsp[(1) - (2)].asExpr) ); ;} + { (yyval.asExpr) = hb_compExprNewAliasVar( (yyvsp[(1) - (2)].asExpr), (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} break; - case 186: + case 179: #line 660 "harbour.y" - { hb_compExprDelete( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = hb_compErrorAlias( HB_COMP_PARAM, (yyvsp[(1) - (2)].asExpr) ); ;} + { (yyval.asExpr) = hb_compExprNewAliasVar( (yyvsp[(1) - (2)].asExpr), (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} break; - case 187: + case 180: #line 661 "harbour.y" { hb_compExprDelete( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = hb_compErrorAlias( HB_COMP_PARAM, (yyvsp[(1) - (2)].asExpr) ); ;} break; - case 188: + case 181: #line 662 "harbour.y" { hb_compExprDelete( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = hb_compErrorAlias( HB_COMP_PARAM, (yyvsp[(1) - (2)].asExpr) ); ;} break; - case 189: + case 182: #line 663 "harbour.y" { hb_compExprDelete( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = hb_compErrorAlias( HB_COMP_PARAM, (yyvsp[(1) - (2)].asExpr) ); ;} break; - case 190: + case 183: #line 664 "harbour.y" { hb_compExprDelete( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = hb_compErrorAlias( HB_COMP_PARAM, (yyvsp[(1) - (2)].asExpr) ); ;} break; - case 191: + case 184: #line 665 "harbour.y" { hb_compExprDelete( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = hb_compErrorAlias( HB_COMP_PARAM, (yyvsp[(1) - (2)].asExpr) ); ;} break; - case 192: + case 185: #line 666 "harbour.y" { hb_compExprDelete( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = hb_compErrorAlias( HB_COMP_PARAM, (yyvsp[(1) - (2)].asExpr) ); ;} break; - case 193: + case 186: #line 667 "harbour.y" { hb_compExprDelete( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = hb_compErrorAlias( HB_COMP_PARAM, (yyvsp[(1) - (2)].asExpr) ); ;} break; - case 194: + case 187: #line 668 "harbour.y" { hb_compExprDelete( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = hb_compErrorAlias( HB_COMP_PARAM, (yyvsp[(1) - (2)].asExpr) ); ;} break; - case 195: + case 188: #line 669 "harbour.y" { hb_compExprDelete( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = hb_compErrorAlias( HB_COMP_PARAM, (yyvsp[(1) - (2)].asExpr) ); ;} break; - case 196: + case 189: #line 670 "harbour.y" - { (yyval.asExpr) = hb_compExprNewAliasVar( (yyvsp[(1) - (2)].asExpr), (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} + { hb_compExprDelete( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = hb_compErrorAlias( HB_COMP_PARAM, (yyvsp[(1) - (2)].asExpr) ); ;} break; - case 197: + case 190: #line 671 "harbour.y" - { (yyval.asExpr) = hb_compExprNewAliasVar( (yyvsp[(1) - (2)].asExpr), (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} + { hb_compExprDelete( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = hb_compErrorAlias( HB_COMP_PARAM, (yyvsp[(1) - (2)].asExpr) ); ;} break; - case 198: + case 191: #line 672 "harbour.y" + { hb_compExprDelete( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = hb_compErrorAlias( HB_COMP_PARAM, (yyvsp[(1) - (2)].asExpr) ); ;} + break; + + case 192: +#line 673 "harbour.y" { (yyval.asExpr) = hb_compExprNewAliasVar( (yyvsp[(1) - (2)].asExpr), (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} break; - case 199: -#line 681 "harbour.y" - { (yyval.asExpr) = hb_compExprNewAliasExpr( (yyvsp[(1) - (2)].asExpr), (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} + case 193: +#line 674 "harbour.y" + { (yyval.asExpr) = hb_compExprNewAliasVar( (yyvsp[(1) - (2)].asExpr), (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} break; - case 200: -#line 682 "harbour.y" - { (yyval.asExpr) = hb_compExprNewAliasExpr( (yyvsp[(1) - (2)].asExpr), (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} + case 194: +#line 675 "harbour.y" + { (yyval.asExpr) = hb_compExprNewAliasVar( (yyvsp[(1) - (2)].asExpr), (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} break; - case 201: -#line 683 "harbour.y" - { (yyval.asExpr) = hb_compExprNewAliasExpr( (yyvsp[(1) - (2)].asExpr), (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} - break; - - case 202: + case 195: #line 684 "harbour.y" { (yyval.asExpr) = hb_compExprNewAliasExpr( (yyvsp[(1) - (2)].asExpr), (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} break; - case 203: + case 196: #line 685 "harbour.y" { (yyval.asExpr) = hb_compExprNewAliasExpr( (yyvsp[(1) - (2)].asExpr), (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} break; - case 204: + case 197: #line 686 "harbour.y" + { (yyval.asExpr) = hb_compExprNewAliasExpr( (yyvsp[(1) - (2)].asExpr), (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 198: +#line 687 "harbour.y" + { (yyval.asExpr) = hb_compExprNewAliasExpr( (yyvsp[(1) - (2)].asExpr), (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 199: +#line 688 "harbour.y" + { (yyval.asExpr) = hb_compExprNewAliasExpr( (yyvsp[(1) - (2)].asExpr), (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 200: +#line 689 "harbour.y" { hb_compExprDelete( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = hb_compErrorAlias( HB_COMP_PARAM, (yyvsp[(2) - (2)].asExpr) ); ;} break; - case 205: -#line 691 "harbour.y" - { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} - break; - - case 206: -#line 692 "harbour.y" - { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} - break; - - case 207: -#line 693 "harbour.y" - { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} - break; - - case 208: + case 201: #line 694 "harbour.y" { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} break; - case 209: + case 202: #line 695 "harbour.y" { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} break; - case 210: + case 203: #line 696 "harbour.y" { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} break; - case 211: + case 204: #line 697 "harbour.y" { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} break; - case 212: + case 205: #line 698 "harbour.y" { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} break; - case 213: + case 206: #line 699 "harbour.y" { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} break; - case 214: + case 207: #line 700 "harbour.y" { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} break; - case 215: + case 208: #line 701 "harbour.y" { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} break; - case 216: + case 209: #line 702 "harbour.y" { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} break; - case 217: + case 210: #line 703 "harbour.y" { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} break; - case 218: + case 211: #line 704 "harbour.y" { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} break; - case 219: + case 212: #line 705 "harbour.y" { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} break; - case 220: + case 213: #line 706 "harbour.y" { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} break; - case 221: + case 214: #line 707 "harbour.y" { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} break; - case 223: -#line 713 "harbour.y" + case 215: +#line 708 "harbour.y" + { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 216: +#line 709 "harbour.y" + { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 217: +#line 710 "harbour.y" + { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 219: +#line 716 "harbour.y" { (yyval.bTrue) = HB_COMP_PARAM->iPassByRef;HB_COMP_PARAM->iPassByRef=HB_PASSBYREF_FUNCALL;;} break; - case 224: -#line 713 "harbour.y" + case 220: +#line 716 "harbour.y" { (yyval.asExpr) = hb_compExprNewFunCall( hb_compExprNewFunName( (yyvsp[(1) - (5)].string), HB_COMP_PARAM ), (yyvsp[(4) - (5)].asExpr), HB_COMP_PARAM ); HB_COMP_PARAM->iPassByRef = (yyvsp[(3) - (5)].bTrue); ;} break; + case 222: +#line 720 "harbour.y" + { (yyval.bTrue) = HB_COMP_PARAM->iPassByRef;HB_COMP_PARAM->iPassByRef=HB_PASSBYREF_FUNCALL;;} + break; + + case 223: +#line 720 "harbour.y" + { (yyval.asExpr) = hb_compExprNewFunCall( (yyvsp[(1) - (5)].asExpr), (yyvsp[(4) - (5)].asExpr), HB_COMP_PARAM ); HB_COMP_PARAM->iPassByRef = (yyvsp[(3) - (5)].bTrue); ;} + break; + + case 224: +#line 721 "harbour.y" + { (yyval.bTrue) = HB_COMP_PARAM->iPassByRef;HB_COMP_PARAM->iPassByRef=HB_PASSBYREF_FUNCALL;;} + break; + + case 225: +#line 721 "harbour.y" + { (yyval.asExpr) = hb_compExprNewFunCall( (yyvsp[(1) - (5)].asExpr), (yyvsp[(4) - (5)].asExpr), HB_COMP_PARAM ); HB_COMP_PARAM->iPassByRef = (yyvsp[(3) - (5)].bTrue); ;} + break; + case 226: -#line 717 "harbour.y" - { (yyval.bTrue) = HB_COMP_PARAM->iPassByRef;HB_COMP_PARAM->iPassByRef=HB_PASSBYREF_FUNCALL;;} - break; - - case 227: -#line 717 "harbour.y" - { (yyval.asExpr) = hb_compExprNewFunCall( (yyvsp[(1) - (5)].asExpr), (yyvsp[(4) - (5)].asExpr), HB_COMP_PARAM ); HB_COMP_PARAM->iPassByRef = (yyvsp[(3) - (5)].bTrue); ;} - break; - - case 228: -#line 718 "harbour.y" - { (yyval.bTrue) = HB_COMP_PARAM->iPassByRef;HB_COMP_PARAM->iPassByRef=HB_PASSBYREF_FUNCALL;;} - break; - - case 229: -#line 718 "harbour.y" - { (yyval.asExpr) = hb_compExprNewFunCall( (yyvsp[(1) - (5)].asExpr), (yyvsp[(4) - (5)].asExpr), HB_COMP_PARAM ); HB_COMP_PARAM->iPassByRef = (yyvsp[(3) - (5)].bTrue); ;} - break; - - case 230: -#line 722 "harbour.y" +#line 725 "harbour.y" { (yyval.asExpr) = hb_compCheckPassByRef( HB_COMP_PARAM, (yyvsp[(2) - (2)].asExpr) ); ;} break; - case 232: -#line 728 "harbour.y" + case 228: +#line 731 "harbour.y" { (yyval.asExpr) = hb_compExprNewArgList( (yyvsp[(1) - (1)].asExpr), HB_COMP_PARAM ); ;} break; - case 233: -#line 729 "harbour.y" + case 229: +#line 732 "harbour.y" { (yyval.asExpr) = hb_compExprAddListExpr( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr) ); ;} break; - case 236: -#line 736 "harbour.y" + case 232: +#line 739 "harbour.y" { (yyval.asExpr) = hb_compCheckPassByRef( HB_COMP_PARAM, hb_compExprNewVarRef( (yyvsp[(2) - (2)].string), HB_COMP_PARAM ) ); ;} break; - case 237: -#line 737 "harbour.y" - { (yyval.asExpr) = hb_compCheckPassByRef( HB_COMP_PARAM, hb_compExprNewRef( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ) ); ;} - break; - - case 238: -#line 738 "harbour.y" - { (yyval.asExpr) = hb_compCheckPassByRef( HB_COMP_PARAM, hb_compExprNewRef( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ) ); ;} - break; - - case 239: -#line 739 "harbour.y" - { (yyval.asExpr) = hb_compCheckPassByRef( HB_COMP_PARAM, hb_compExprNewRef( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ) ); ;} - break; - - case 240: + case 233: #line 740 "harbour.y" + { (yyval.asExpr) = hb_compCheckPassByRef( HB_COMP_PARAM, hb_compExprNewRef( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ) ); ;} + break; + + case 234: +#line 741 "harbour.y" + { (yyval.asExpr) = hb_compCheckPassByRef( HB_COMP_PARAM, hb_compExprNewRef( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ) ); ;} + break; + + case 235: +#line 742 "harbour.y" + { (yyval.asExpr) = hb_compCheckPassByRef( HB_COMP_PARAM, hb_compExprNewRef( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ) ); ;} + break; + + case 236: +#line 743 "harbour.y" { (yyval.asExpr) = hb_compCheckPassByRef( HB_COMP_PARAM, (yyvsp[(2) - (2)].asExpr) ); (yyval.asExpr)->value.asList.reference = TRUE; ;} break; - case 241: -#line 743 "harbour.y" + case 237: +#line 746 "harbour.y" { (yyval.asExpr) = hb_compExprNewArgRef( HB_COMP_PARAM ); ;} break; - case 243: -#line 749 "harbour.y" + case 239: +#line 752 "harbour.y" { (yyval.asExpr) = ((yyvsp[(3) - (3)].asMessage).bMacro ? hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), NULL, (yyvsp[(3) - (3)].asMessage).value.macro, HB_COMP_PARAM ) : hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asMessage).value.string, NULL, HB_COMP_PARAM )); ;} break; - case 244: -#line 750 "harbour.y" + case 240: +#line 753 "harbour.y" { (yyval.asExpr) = ((yyvsp[(3) - (3)].asMessage).bMacro ? hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), NULL, (yyvsp[(3) - (3)].asMessage).value.macro, HB_COMP_PARAM ) : hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asMessage).value.string, NULL, HB_COMP_PARAM )); ;} break; - case 245: -#line 751 "harbour.y" + case 241: +#line 754 "harbour.y" { if( HB_COMP_PARAM->wWithObjectCnt == 0 ) hb_compGenError( HB_COMP_PARAM, hb_comp_szErrors, 'E', HB_COMP_ERR_WITHOBJECT, NULL, NULL ); (yyval.asExpr) = ((yyvsp[(2) - (2)].asMessage).bMacro ? hb_compExprNewSend( NULL, NULL, (yyvsp[(2) - (2)].asMessage).value.macro, HB_COMP_PARAM ) : hb_compExprNewSend( NULL, (yyvsp[(2) - (2)].asMessage).value.string, NULL, HB_COMP_PARAM )); ;} break; - case 246: -#line 757 "harbour.y" + case 242: +#line 760 "harbour.y" { (yyval.asMessage).value.string = (yyvsp[(1) - (1)].string); (yyval.asMessage).bMacro=FALSE; ;} break; - case 247: -#line 758 "harbour.y" + case 243: +#line 761 "harbour.y" { (yyval.asMessage).value.macro = (yyvsp[(1) - (1)].asExpr); (yyval.asMessage).bMacro=TRUE; ;} break; - case 248: -#line 759 "harbour.y" - { (yyval.asMessage).value.macro = (yyvsp[(1) - (1)].asExpr); (yyval.asMessage).bMacro=TRUE; ;} - break; - - case 249: + case 244: #line 762 "harbour.y" + { (yyval.asMessage).value.macro = (yyvsp[(1) - (1)].asExpr); (yyval.asMessage).bMacro=TRUE; ;} + break; + + case 245: +#line 765 "harbour.y" { (yyval.asExpr) = hb_compExprNewVarRef( (yyvsp[(3) - (4)].string), HB_COMP_PARAM ); ;} break; - case 251: -#line 770 "harbour.y" + case 247: +#line 773 "harbour.y" {(yyval.bTrue)=HB_COMP_PARAM->iPassByRef;HB_COMP_PARAM->iPassByRef=HB_PASSBYREF_FUNCALL;;} break; - case 252: -#line 770 "harbour.y" + case 248: +#line 773 "harbour.y" { (yyval.asExpr) = hb_compExprNewMethodCall( (yyvsp[(1) - (5)].asExpr), (yyvsp[(4) - (5)].asExpr) ); HB_COMP_PARAM->iPassByRef=(yyvsp[(3) - (5)].bTrue); ;} break; - case 261: -#line 789 "harbour.y" + case 257: +#line 792 "harbour.y" {HB_COMP_PARAM->cVarType = ' ';;} break; - case 262: -#line 789 "harbour.y" + case 258: +#line 792 "harbour.y" + { (yyval.asExpr) = (yyvsp[(1) - (3)].asExpr); ;} + break; + + case 267: +#line 801 "harbour.y" + {HB_COMP_PARAM->cVarType = ' ';;} + break; + + case 268: +#line 801 "harbour.y" { (yyval.asExpr) = (yyvsp[(1) - (3)].asExpr); ;} break; case 271: -#line 798 "harbour.y" +#line 804 "harbour.y" {HB_COMP_PARAM->cVarType = ' ';;} break; case 272: -#line 798 "harbour.y" +#line 804 "harbour.y" { (yyval.asExpr) = (yyvsp[(1) - (3)].asExpr); ;} break; + case 274: +#line 806 "harbour.y" + {HB_COMP_PARAM->cVarType = ' ';;} + break; + case 275: -#line 801 "harbour.y" - {HB_COMP_PARAM->cVarType = ' ';;} - break; - - case 276: -#line 801 "harbour.y" +#line 806 "harbour.y" { (yyval.asExpr) = (yyvsp[(1) - (3)].asExpr); ;} break; - case 278: -#line 803 "harbour.y" - {HB_COMP_PARAM->cVarType = ' ';;} - break; - - case 279: -#line 803 "harbour.y" - { (yyval.asExpr) = (yyvsp[(1) - (3)].asExpr); ;} - break; - - case 291: -#line 817 "harbour.y" + case 287: +#line 820 "harbour.y" { HB_COMP_PARAM->cVarType = ' ';;} break; + case 288: +#line 820 "harbour.y" + { (yyval.asExpr) = (yyvsp[(1) - (3)].asExpr); ;} + break; + + case 289: +#line 821 "harbour.y" + { HB_COMP_PARAM->cVarType = ' ';;} + break; + + case 290: +#line 821 "harbour.y" + { (yyval.asExpr) = (yyvsp[(1) - (3)].asExpr); ;} + break; + case 292: -#line 817 "harbour.y" - { (yyval.asExpr) = (yyvsp[(1) - (3)].asExpr); ;} - break; - - case 293: -#line 818 "harbour.y" - { HB_COMP_PARAM->cVarType = ' ';;} - break; - - case 294: -#line 818 "harbour.y" - { (yyval.asExpr) = (yyvsp[(1) - (3)].asExpr); ;} - break; - - case 296: -#line 822 "harbour.y" +#line 825 "harbour.y" { (yyval.asExpr) = hb_compExprNewArgRef( HB_COMP_PARAM ); ;} break; - case 298: -#line 826 "harbour.y" + case 294: +#line 829 "harbour.y" { (yyval.asExpr) = hb_compExprNewEmpty( HB_COMP_PARAM ); ;} break; - case 300: -#line 830 "harbour.y" + case 296: +#line 833 "harbour.y" { (yyval.asExpr) = hb_compExprNewVar( (yyvsp[(1) - (1)].string), HB_COMP_PARAM ); ;} break; - case 306: -#line 836 "harbour.y" + case 302: +#line 839 "harbour.y" { (yyval.asExpr) = hb_compExprListStrip( (yyvsp[(1) - (1)].asExpr), NULL ); ;} break; - case 327: -#line 868 "harbour.y" + case 323: +#line 871 "harbour.y" { (yyval.asExpr) = hb_compExprNewPostInc( (yyvsp[(0) - (1)].asExpr), HB_COMP_PARAM ); ;} break; - case 328: -#line 869 "harbour.y" + case 324: +#line 872 "harbour.y" { (yyval.asExpr) = hb_compExprNewPostDec( (yyvsp[(0) - (1)].asExpr), HB_COMP_PARAM ); ;} break; - case 329: -#line 872 "harbour.y" + case 325: +#line 875 "harbour.y" { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} break; - case 330: -#line 875 "harbour.y" + case 326: +#line 878 "harbour.y" { (yyval.asExpr) = hb_compExprNewPreInc( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} break; - case 331: -#line 876 "harbour.y" + case 327: +#line 879 "harbour.y" { (yyval.asExpr) = hb_compExprNewPreDec( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} break; - case 332: -#line 879 "harbour.y" + case 328: +#line 882 "harbour.y" { (yyval.asExpr) = hb_compExprNewNot( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} break; - case 333: -#line 880 "harbour.y" + case 329: +#line 883 "harbour.y" { (yyval.asExpr) = hb_compExprNewNegate( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} break; - case 334: -#line 881 "harbour.y" + case 330: +#line 884 "harbour.y" { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} break; - case 335: -#line 884 "harbour.y" - { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} - break; - - case 336: -#line 885 "harbour.y" - { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} - break; - - case 337: -#line 886 "harbour.y" - { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} - break; - - case 338: + case 331: #line 887 "harbour.y" { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 339: + case 332: #line 888 "harbour.y" { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 340: + case 333: #line 889 "harbour.y" { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 341: + case 334: #line 890 "harbour.y" { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 342: + case 335: #line 891 "harbour.y" { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 343: + case 336: #line 892 "harbour.y" { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 344: + case 337: #line 893 "harbour.y" { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 345: + case 338: #line 894 "harbour.y" { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 346: + case 339: #line 895 "harbour.y" { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 347: + case 340: #line 896 "harbour.y" { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 348: + case 341: #line 897 "harbour.y" - { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); HB_COMP_PARAM->cCastType = HB_COMP_PARAM->cVarType; HB_COMP_PARAM->cVarType = ' ';;} + { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 349: + case 342: #line 898 "harbour.y" - { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); HB_COMP_PARAM->cCastType = HB_COMP_PARAM->cVarType; HB_COMP_PARAM->cVarType = ' ';;} + { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 350: + case 343: #line 899 "harbour.y" { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 351: + case 344: #line 900 "harbour.y" - { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} - break; - - case 352: -#line 901 "harbour.y" - { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} - break; - - case 353: -#line 902 "harbour.y" { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); HB_COMP_PARAM->cCastType = HB_COMP_PARAM->cVarType; HB_COMP_PARAM->cVarType = ' ';;} break; - case 354: + case 345: +#line 901 "harbour.y" + { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); HB_COMP_PARAM->cCastType = HB_COMP_PARAM->cVarType; HB_COMP_PARAM->cVarType = ' ';;} + break; + + case 346: +#line 902 "harbour.y" + { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 347: #line 903 "harbour.y" { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 355: + case 348: +#line 904 "harbour.y" + { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 349: +#line 905 "harbour.y" + { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); HB_COMP_PARAM->cCastType = HB_COMP_PARAM->cVarType; HB_COMP_PARAM->cVarType = ' ';;} + break; + + case 350: #line 906 "harbour.y" { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 356: + case 351: #line 909 "harbour.y" + { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 352: +#line 912 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewPlusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 357: -#line 912 "harbour.y" + case 353: +#line 915 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMinusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 358: -#line 915 "harbour.y" + case 354: +#line 918 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMultEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 359: -#line 918 "harbour.y" + case 355: +#line 921 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewDivEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 360: -#line 921 "harbour.y" + case 356: +#line 924 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewModEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 361: -#line 924 "harbour.y" + case 357: +#line 927 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewExpEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 368: -#line 935 "harbour.y" + case 364: +#line 938 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewPlus( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 369: -#line 936 "harbour.y" + case 365: +#line 939 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMinus( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 370: -#line 937 "harbour.y" + case 366: +#line 940 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMult( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 371: -#line 938 "harbour.y" + case 367: +#line 941 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewDiv( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 372: -#line 939 "harbour.y" + case 368: +#line 942 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMod( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 373: -#line 940 "harbour.y" + case 369: +#line 943 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewPower( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 374: -#line 943 "harbour.y" + case 370: +#line 946 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewAnd( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 375: -#line 944 "harbour.y" + case 371: +#line 947 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewOr( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 376: -#line 947 "harbour.y" + case 372: +#line 950 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewEQ( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 377: -#line 948 "harbour.y" + case 373: +#line 951 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewLT( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 378: -#line 949 "harbour.y" + case 374: +#line 952 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewGT( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 379: -#line 950 "harbour.y" + case 375: +#line 953 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewLE( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 380: -#line 951 "harbour.y" + case 376: +#line 954 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewGE( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 381: -#line 952 "harbour.y" + case 377: +#line 955 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewNE( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 382: -#line 953 "harbour.y" + case 378: +#line 956 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewNE( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 383: -#line 954 "harbour.y" + case 379: +#line 957 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewIN( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 384: -#line 955 "harbour.y" + case 380: +#line 958 "harbour.y" { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewEqual( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 386: -#line 964 "harbour.y" + case 382: +#line 967 "harbour.y" { (yyval.asExpr) = hb_compExprNewArrayAt( (yyvsp[(0) - (2)].asExpr), (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} break; - case 387: -#line 965 "harbour.y" + case 383: +#line 968 "harbour.y" { (yyval.asExpr) = hb_compExprNewArrayAt( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 388: -#line 966 "harbour.y" + case 384: +#line 969 "harbour.y" { (yyval.asExpr) = hb_compExprNewArrayAt( (yyvsp[(1) - (4)].asExpr), (yyvsp[(4) - (4)].asExpr), HB_COMP_PARAM ); ;} break; - case 389: -#line 969 "harbour.y" + case 385: +#line 972 "harbour.y" { (yyval.asExpr) = hb_compExprNewList( (yyvsp[(1) - (1)].asExpr), HB_COMP_PARAM ); ;} break; - case 390: -#line 970 "harbour.y" + case 386: +#line 973 "harbour.y" { (yyval.asExpr) = hb_compExprAddListExpr( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr) ); ;} break; - case 391: -#line 973 "harbour.y" + case 387: +#line 976 "harbour.y" { (yyval.asExpr) = hb_compExprNewCodeBlock( (yyvsp[(1) - (1)].asCodeblock).string, (yyvsp[(1) - (1)].asCodeblock).length, (yyvsp[(1) - (1)].asCodeblock).flags, HB_COMP_PARAM ); (yyvsp[(1) - (1)].asCodeblock).string = NULL; ;} break; - case 392: -#line 974 "harbour.y" + case 388: +#line 977 "harbour.y" { (yyval.asExpr) = (yyvsp[(2) - (6)].asExpr); ;} break; - case 393: -#line 979 "harbour.y" + case 389: +#line 982 "harbour.y" { (yyval.asExpr) = hb_compExprAddCodeblockExpr( (yyvsp[(-2) - (1)].asExpr), (yyvsp[(1) - (1)].asExpr) ); ;} break; - case 394: -#line 980 "harbour.y" + case 390: +#line 983 "harbour.y" { (yyval.asExpr) = hb_compExprAddCodeblockExpr( (yyvsp[(-2) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr) ); ;} break; - case 395: -#line 985 "harbour.y" + case 391: +#line 988 "harbour.y" { (yyval.asExpr) = NULL; ;} break; - case 396: -#line 986 "harbour.y" + case 392: +#line 989 "harbour.y" { (yyval.asExpr) = NULL; (yyvsp[(0) - (1)].asExpr)->value.asCodeblock.flags |= HB_BLOCK_VPARAMS; ;} break; - case 397: -#line 987 "harbour.y" + case 393: +#line 990 "harbour.y" { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} break; - case 398: -#line 988 "harbour.y" + case 394: +#line 991 "harbour.y" { (yyval.asExpr) = (yyvsp[(1) - (3)].asExpr); (yyvsp[(0) - (3)].asExpr)->value.asCodeblock.flags |= HB_BLOCK_VPARAMS; ;} break; - case 399: -#line 991 "harbour.y" + case 395: +#line 994 "harbour.y" { HB_COMP_PARAM->iVarScope = VS_LOCAL; (yyval.asExpr) = hb_compExprCBVarAdd( (yyvsp[(0) - (2)].asExpr), (yyvsp[(1) - (2)].string), HB_COMP_PARAM->cVarType, HB_COMP_PARAM ); HB_COMP_PARAM->cVarType = ' '; ;} break; - case 400: -#line 992 "harbour.y" + case 396: +#line 995 "harbour.y" { HB_COMP_PARAM->iVarScope = VS_LOCAL; (yyval.asExpr) = hb_compExprCBVarAdd( (yyvsp[(0) - (4)].asExpr), (yyvsp[(3) - (4)].string), HB_COMP_PARAM->cVarType, HB_COMP_PARAM ); HB_COMP_PARAM->cVarType = ' '; ;} break; - case 410: -#line 1029 "harbour.y" + case 406: +#line 1032 "harbour.y" { (yyval.asExpr) = hb_compExprNewList( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} break; - case 411: -#line 1032 "harbour.y" - { (yyval.asExpr) = hb_compExprAddListExpr( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr) ); ;} - break; - - case 412: + case 407: #line 1035 "harbour.y" { (yyval.asExpr) = hb_compExprAddListExpr( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr) ); ;} break; - case 413: + case 408: #line 1038 "harbour.y" { (yyval.asExpr) = hb_compExprAddListExpr( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr) ); ;} break; - case 414: -#line 1039 "harbour.y" + case 409: +#line 1041 "harbour.y" { (yyval.asExpr) = hb_compExprAddListExpr( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr) ); ;} break; - case 415: -#line 1043 "harbour.y" + case 410: +#line 1042 "harbour.y" + { (yyval.asExpr) = hb_compExprAddListExpr( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr) ); ;} + break; + + case 411: +#line 1046 "harbour.y" { (yyval.asExpr) = hb_compExprNewIIF( hb_compExprAddListExpr( hb_compExprAddListExpr( hb_compExprNewList( (yyvsp[(3) - (8)].asExpr), HB_COMP_PARAM ), (yyvsp[(5) - (8)].asExpr) ), (yyvsp[(7) - (8)].asExpr) ) ); ;} break; - case 416: -#line 1045 "harbour.y" + case 412: +#line 1048 "harbour.y" { (yyval.asExpr) = hb_compExprNewIIF( hb_compExprAddListExpr( hb_compExprAddListExpr( hb_compExprNewList( (yyvsp[(2) - (7)].asExpr), HB_COMP_PARAM ), (yyvsp[(4) - (7)].asExpr) ), (yyvsp[(6) - (7)].asExpr) ) ); ;} break; - case 417: -#line 1047 "harbour.y" + case 413: +#line 1050 "harbour.y" { (yyval.asExpr) = hb_compExprNewIIF( hb_compExprAddListExpr( hb_compExprAddListExpr( hb_compExprNewList( (yyvsp[(2) - (7)].asExpr), HB_COMP_PARAM ), (yyvsp[(4) - (7)].asExpr) ), (yyvsp[(6) - (7)].asExpr) ) ); ;} break; - case 418: -#line 1049 "harbour.y" + case 414: +#line 1052 "harbour.y" { (yyval.asExpr) = hb_compExprNewIIF( hb_compExprAddListExpr( hb_compExprAddListExpr( hb_compExprNewList( (yyvsp[(2) - (6)].asExpr), HB_COMP_PARAM ), hb_compExprNewEmpty( HB_COMP_PARAM ) ), (yyvsp[(5) - (6)].asExpr) ) ); ;} break; - case 420: -#line 1055 "harbour.y" + case 416: +#line 1058 "harbour.y" { HB_COMP_PARAM->iVarScope = VS_LOCAL; hb_compLinePush( HB_COMP_PARAM ); ;} break; - case 421: -#line 1056 "harbour.y" + case 417: +#line 1059 "harbour.y" { HB_COMP_PARAM->cVarType = ' '; ;} break; - case 422: -#line 1057 "harbour.y" + case 418: +#line 1060 "harbour.y" { HB_COMP_PARAM->iVarScope = VS_STATIC; hb_compLinePush( HB_COMP_PARAM ); ;} break; - case 423: -#line 1058 "harbour.y" + case 419: +#line 1061 "harbour.y" { HB_COMP_PARAM->cVarType = ' '; ;} break; - case 424: -#line 1059 "harbour.y" + case 420: +#line 1062 "harbour.y" { if( HB_COMP_PARAM->functions.pLast->bFlags & FUN_USES_LOCAL_PARAMS ) hb_compGenError( HB_COMP_PARAM, hb_comp_szErrors, 'E', HB_COMP_ERR_PARAMETERS_NOT_ALLOWED, NULL, NULL ); else HB_COMP_PARAM->functions.pLast->wParamNum=0; HB_COMP_PARAM->iVarScope = ( VS_PRIVATE | VS_PARAMETER ); ;} break; - case 425: -#line 1063 "harbour.y" + case 421: +#line 1066 "harbour.y" { HB_COMP_PARAM->iVarScope = VS_NONE; ;} break; - case 426: -#line 1066 "harbour.y" + case 422: +#line 1069 "harbour.y" { (yyval.iNumber) = 1; ;} break; + case 423: +#line 1070 "harbour.y" + { (yyval.iNumber)++; ;} + break; + + case 424: +#line 1073 "harbour.y" + { (yyval.iNumber) = 1; ;} + break; + + case 425: +#line 1074 "harbour.y" + { (yyval.iNumber)++; ;} + break; + case 427: -#line 1067 "harbour.y" - { (yyval.iNumber)++; ;} - break; - - case 428: -#line 1070 "harbour.y" - { (yyval.iNumber) = 1; ;} - break; - - case 429: -#line 1071 "harbour.y" - { (yyval.iNumber)++; ;} - break; - - case 431: -#line 1081 "harbour.y" +#line 1084 "harbour.y" { hb_compRTVariableAdd( HB_COMP_PARAM, hb_compExprNewRTVar( NULL, (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ), FALSE ); ;} break; - case 432: -#line 1083 "harbour.y" + case 428: +#line 1086 "harbour.y" { hb_compExprDelete( hb_compExprGenPush( (yyvsp[(4) - (4)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); hb_compRTVariableAdd( HB_COMP_PARAM, hb_compExprNewRTVar( NULL, (yyvsp[(1) - (4)].asExpr), HB_COMP_PARAM ), TRUE ); ;} break; - case 433: -#line 1087 "harbour.y" + case 429: +#line 1090 "harbour.y" { USHORT uCount = (USHORT) hb_compExprListLen( (yyvsp[(2) - (2)].asExpr) ); hb_compExprDelete( hb_compExprGenPush( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); @@ -5873,8 +5795,8 @@ yyreduce: ;} break; - case 434: -#line 1094 "harbour.y" + case 430: +#line 1097 "harbour.y" { USHORT uCount = (USHORT) hb_compExprListLen( (yyvsp[(2) - (3)].asExpr) ); hb_compExprDelete( hb_compExprGenPush( (yyvsp[(2) - (3)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); @@ -5883,13 +5805,13 @@ yyreduce: ;} break; - case 435: -#line 1102 "harbour.y" + case 431: +#line 1105 "harbour.y" { hb_compVariableAdd( HB_COMP_PARAM, (yyvsp[(1) - (2)].string), HB_COMP_PARAM->cVarType ); ;} break; - case 436: -#line 1103 "harbour.y" + case 432: +#line 1106 "harbour.y" { if( HB_COMP_PARAM->iVarScope == VS_STATIC ) { @@ -5904,20 +5826,20 @@ yyreduce: ;} break; - case 437: -#line 1116 "harbour.y" + case 433: +#line 1119 "harbour.y" { (yyval.iNumber) = HB_COMP_PARAM->iVarScope; hb_compVariableAdd( HB_COMP_PARAM, (yyvsp[(1) - (2)].string), HB_COMP_PARAM->cVarType ); ;} break; - case 438: -#line 1119 "harbour.y" + case 434: +#line 1122 "harbour.y" {HB_COMP_PARAM->cVarType = ' ';;} break; - case 439: -#line 1120 "harbour.y" + case 435: +#line 1123 "harbour.y" { HB_COMP_PARAM->cCastType = HB_COMP_PARAM->cVarType; HB_COMP_PARAM->cVarType = ' '; @@ -5943,83 +5865,83 @@ yyreduce: ;} break; - case 440: -#line 1144 "harbour.y" + case 436: +#line 1147 "harbour.y" { hb_compVariableDim( (yyvsp[(1) - (2)].string), (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} break; - case 441: -#line 1145 "harbour.y" + case 437: +#line 1148 "harbour.y" { hb_compVariableDim( (yyvsp[(1) - (3)].string), (yyvsp[(2) - (3)].asExpr), HB_COMP_PARAM ); ;} break; - case 443: -#line 1154 "harbour.y" + case 439: +#line 1157 "harbour.y" { (yyval.asExpr) = hb_compExprNewArgList( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} break; - case 444: -#line 1155 "harbour.y" + case 440: +#line 1158 "harbour.y" { (yyval.asExpr) = hb_compExprAddListExpr( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr) ); ;} break; - case 445: -#line 1156 "harbour.y" + case 441: +#line 1159 "harbour.y" { (yyval.asExpr) = hb_compExprAddListExpr( (yyvsp[(1) - (4)].asExpr), (yyvsp[(4) - (4)].asExpr) ); ;} break; - case 446: -#line 1160 "harbour.y" + case 442: +#line 1163 "harbour.y" { HB_COMP_PARAM->iVarScope = VS_FIELD; ;} break; - case 447: -#line 1160 "harbour.y" + case 443: +#line 1163 "harbour.y" { HB_COMP_PARAM->cVarType = ' '; ;} break; - case 448: -#line 1163 "harbour.y" + case 444: +#line 1166 "harbour.y" { (yyval.iNumber)=hb_compFieldsCount( HB_COMP_PARAM ); hb_compVariableAdd( HB_COMP_PARAM, (yyvsp[(1) - (2)].string), HB_COMP_PARAM->cVarType ); ;} break; - case 449: -#line 1164 "harbour.y" + case 445: +#line 1167 "harbour.y" { hb_compVariableAdd( HB_COMP_PARAM, (yyvsp[(3) - (4)].string), HB_COMP_PARAM->cVarType ); ;} break; - case 450: -#line 1165 "harbour.y" + case 446: +#line 1168 "harbour.y" { hb_compFieldSetAlias( HB_COMP_PARAM, (yyvsp[(3) - (3)].string), (yyvsp[(1) - (3)].iNumber) ); ;} break; - case 451: -#line 1168 "harbour.y" + case 447: +#line 1171 "harbour.y" { HB_COMP_PARAM->iVarScope = VS_MEMVAR; ;} break; - case 452: -#line 1168 "harbour.y" + case 448: +#line 1171 "harbour.y" { HB_COMP_PARAM->cVarType = ' '; ;} break; - case 453: -#line 1171 "harbour.y" + case 449: +#line 1174 "harbour.y" { hb_compVariableAdd( HB_COMP_PARAM, (yyvsp[(1) - (2)].string), HB_COMP_PARAM->cVarType ); ;} break; - case 454: -#line 1172 "harbour.y" + case 450: +#line 1175 "harbour.y" { hb_compVariableAdd( HB_COMP_PARAM, (yyvsp[(3) - (4)].string), HB_COMP_PARAM->cVarType ); ;} break; - case 455: -#line 1175 "harbour.y" + case 451: +#line 1178 "harbour.y" { hb_compDeclaredAdd( HB_COMP_PARAM, (yyvsp[(2) - (3)].string) ); HB_COMP_PARAM->szDeclaredFun = (yyvsp[(2) - (3)].string); ;} break; - case 456: -#line 1176 "harbour.y" + case 452: +#line 1179 "harbour.y" { if( HB_COMP_PARAM->pLastDeclared ) { @@ -6044,43 +5966,43 @@ yyreduce: ;} break; - case 457: -#line 1198 "harbour.y" + case 453: +#line 1201 "harbour.y" { HB_COMP_PARAM->pLastClass = hb_compClassAdd( HB_COMP_PARAM, (yyvsp[(2) - (2)].string) ); ;} break; - case 458: -#line 1198 "harbour.y" + case 454: +#line 1201 "harbour.y" { HB_COMP_PARAM->iVarScope = VS_NONE; ;} break; - case 459: -#line 1199 "harbour.y" + case 455: +#line 1202 "harbour.y" { HB_COMP_PARAM->pLastClass = hb_compClassAdd( HB_COMP_PARAM, (yyvsp[(2) - (3)].string) ); HB_COMP_PARAM->iVarScope = VS_NONE; ;} break; - case 460: -#line 1200 "harbour.y" + case 456: +#line 1203 "harbour.y" { HB_COMP_PARAM->iVarScope = VS_NONE; ;} break; - case 461: -#line 1201 "harbour.y" + case 457: +#line 1204 "harbour.y" { HB_COMP_PARAM->cDataListType = HB_COMP_PARAM->cVarType; ;} break; - case 462: -#line 1201 "harbour.y" + case 458: +#line 1204 "harbour.y" { HB_COMP_PARAM->cDataListType = 0; HB_COMP_PARAM->iVarScope = VS_NONE; ;} break; - case 469: -#line 1214 "harbour.y" + case 465: +#line 1217 "harbour.y" { HB_COMP_PARAM->pLastMethod = hb_compMethodAdd( HB_COMP_PARAM, HB_COMP_PARAM->pLastClass, (yyvsp[(1) - (2)].string) ); ;} break; - case 470: -#line 1215 "harbour.y" + case 466: +#line 1218 "harbour.y" { if( HB_COMP_PARAM->pLastMethod ) { @@ -6102,13 +6024,13 @@ yyreduce: ;} break; - case 471: -#line 1236 "harbour.y" + case 467: +#line 1239 "harbour.y" { HB_COMP_PARAM->pLastMethod = hb_compMethodAdd( HB_COMP_PARAM, HB_COMP_PARAM->pLastClass, (yyvsp[(1) - (1)].string) ); ;} break; - case 472: -#line 1237 "harbour.y" + case 468: +#line 1240 "harbour.y" { if( HB_COMP_PARAM->pLastMethod ) { @@ -6164,236 +6086,216 @@ yyreduce: ;} break; - case 473: -#line 1292 "harbour.y" - {;} - break; - - case 477: -#line 1298 "harbour.y" - {;} - break; - - case 478: -#line 1299 "harbour.y" - {;} - break; - - case 479: -#line 1302 "harbour.y" + case 475: +#line 1305 "harbour.y" { hb_compExprDelete( (yyvsp[(1) - (1)].asExpr), HB_COMP_PARAM ); ;} break; - case 480: -#line 1305 "harbour.y" + case 476: +#line 1308 "harbour.y" { hb_compDeclaredParameterAdd( HB_COMP_PARAM, (yyvsp[(1) - (2)].string), HB_COMP_PARAM->cVarType ); ;} break; - case 481: -#line 1306 "harbour.y" + case 477: +#line 1309 "harbour.y" { hb_compDeclaredParameterAdd( HB_COMP_PARAM, (yyvsp[(2) - (3)].string), HB_COMP_PARAM->cVarType + VT_OFFSET_BYREF ); ;} break; - case 482: -#line 1307 "harbour.y" + case 478: +#line 1310 "harbour.y" { hb_compDeclaredParameterAdd( HB_COMP_PARAM, (yyvsp[(2) - (5)].string), 'F' ); ;} break; - case 483: -#line 1308 "harbour.y" + case 479: +#line 1311 "harbour.y" { hb_compDeclaredParameterAdd( HB_COMP_PARAM, (yyvsp[(3) - (4)].string), HB_COMP_PARAM->cVarType ); ;} break; - case 484: -#line 1309 "harbour.y" + case 480: +#line 1312 "harbour.y" { hb_compDeclaredParameterAdd( HB_COMP_PARAM, (yyvsp[(4) - (5)].string), HB_COMP_PARAM->cVarType + VT_OFFSET_BYREF ); ;} break; - case 485: -#line 1310 "harbour.y" + case 481: +#line 1313 "harbour.y" { hb_compDeclaredParameterAdd( HB_COMP_PARAM, (yyvsp[(4) - (7)].string), 'F' ); ;} break; - case 486: -#line 1313 "harbour.y" + case 482: +#line 1316 "harbour.y" { hb_compDeclaredParameterAdd( HB_COMP_PARAM, (yyvsp[(2) - (3)].string), HB_COMP_PARAM->cVarType + VT_OFFSET_OPTIONAL ); ;} break; - case 487: -#line 1314 "harbour.y" + case 483: +#line 1317 "harbour.y" { hb_compDeclaredParameterAdd( HB_COMP_PARAM, (yyvsp[(3) - (4)].string), HB_COMP_PARAM->cVarType + VT_OFFSET_OPTIONAL + VT_OFFSET_BYREF ); ;} break; - case 488: -#line 1315 "harbour.y" + case 484: +#line 1318 "harbour.y" { hb_compDeclaredParameterAdd( HB_COMP_PARAM, (yyvsp[(3) - (6)].string), HB_COMP_PARAM->cVarType + VT_OFFSET_OPTIONAL + VT_OFFSET_BYREF ); ;} break; - case 489: -#line 1316 "harbour.y" + case 485: +#line 1319 "harbour.y" { hb_compDeclaredParameterAdd( HB_COMP_PARAM, (yyvsp[(4) - (5)].string), HB_COMP_PARAM->cVarType + VT_OFFSET_OPTIONAL ); ;} break; - case 490: -#line 1317 "harbour.y" + case 486: +#line 1320 "harbour.y" { hb_compDeclaredParameterAdd( HB_COMP_PARAM, (yyvsp[(5) - (6)].string), HB_COMP_PARAM->cVarType + VT_OFFSET_OPTIONAL + VT_OFFSET_BYREF ); ;} break; - case 491: -#line 1318 "harbour.y" + case 487: +#line 1321 "harbour.y" { hb_compDeclaredParameterAdd( HB_COMP_PARAM, (yyvsp[(5) - (8)].string), HB_COMP_PARAM->cVarType + VT_OFFSET_OPTIONAL + VT_OFFSET_BYREF ); ;} break; - case 499: -#line 1330 "harbour.y" + case 495: +#line 1333 "harbour.y" { hb_compGenJumpHere( (yyvsp[(1) - (2)].iNumber), HB_COMP_PARAM ); ;} break; - case 500: -#line 1331 "harbour.y" + case 496: +#line 1334 "harbour.y" { hb_compGenJumpHere( (yyvsp[(1) - (3)].iNumber), HB_COMP_PARAM ); ;} break; - case 501: -#line 1332 "harbour.y" + case 497: +#line 1335 "harbour.y" { hb_compGenJumpHere( (yyvsp[(1) - (3)].iNumber), HB_COMP_PARAM ); hb_compElseIfFix( HB_COMP_PARAM, (yyvsp[(2) - (3)].pVoid) ); ;} break; - case 502: -#line 1333 "harbour.y" + case 498: +#line 1336 "harbour.y" { hb_compGenJumpHere( (yyvsp[(1) - (4)].iNumber), HB_COMP_PARAM ); hb_compElseIfFix( HB_COMP_PARAM, (yyvsp[(2) - (4)].pVoid) ); ;} break; - case 503: -#line 1336 "harbour.y" + case 499: +#line 1339 "harbour.y" { (yyval.lNumber) = (yyvsp[(1) - (1)].lNumber); ;} break; - case 504: -#line 1337 "harbour.y" + case 500: +#line 1340 "harbour.y" { (yyval.lNumber) += (yyvsp[(2) - (2)].lNumber); ;} break; - case 505: -#line 1340 "harbour.y" + case 501: +#line 1343 "harbour.y" { (yyval.lNumber) = 0; ;} break; - case 506: -#line 1341 "harbour.y" + case 502: +#line 1344 "harbour.y" { (yyval.lNumber) = (yyvsp[(1) - (1)].lNumber); ;} break; - case 507: -#line 1345 "harbour.y" + case 503: +#line 1348 "harbour.y" { ++HB_COMP_PARAM->wIfCounter; hb_compLinePushIfInside( HB_COMP_PARAM ); ;} break; - case 508: -#line 1347 "harbour.y" + case 504: +#line 1350 "harbour.y" { hb_compExprDelete( hb_compExprGenPush( (yyvsp[(2) - (4)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); (yyval.iNumber) = hb_compGenJumpFalse( 0, HB_COMP_PARAM ); ;} break; - case 509: -#line 1349 "harbour.y" + case 505: +#line 1352 "harbour.y" { (yyval.iNumber) = hb_compGenJump( 0, HB_COMP_PARAM ); hb_compGenJumpHere( (yyvsp[(5) - (6)].iNumber), HB_COMP_PARAM ); ;} break; - case 515: -#line 1359 "harbour.y" + case 511: +#line 1362 "harbour.y" { HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_BREAK_CODE; ;} break; - case 517: -#line 1363 "harbour.y" + case 513: +#line 1366 "harbour.y" { HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_BREAK_CODE; hb_compLinePush( HB_COMP_PARAM ); ;} break; - case 518: -#line 1365 "harbour.y" + case 514: +#line 1368 "harbour.y" { hb_compExprDelete( hb_compExprGenPush( (yyvsp[(3) - (4)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); (yyval.iNumber) = hb_compGenJumpFalse( 0, HB_COMP_PARAM ); ;} break; - case 519: -#line 1369 "harbour.y" + case 515: +#line 1372 "harbour.y" { (yyval.pVoid) = hb_compElseIfGen( HB_COMP_PARAM, NULL, hb_compGenJump( 0, HB_COMP_PARAM ) ); hb_compGenJumpHere( (yyvsp[(5) - (6)].iNumber), HB_COMP_PARAM ); ;} break; - case 520: -#line 1373 "harbour.y" + case 516: +#line 1376 "harbour.y" { HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_BREAK_CODE; hb_compLinePush( HB_COMP_PARAM ); ;} break; - case 521: -#line 1375 "harbour.y" + case 517: +#line 1378 "harbour.y" { hb_compExprDelete( hb_compExprGenPush( (yyvsp[(4) - (5)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); (yyval.iNumber) = hb_compGenJumpFalse( 0, HB_COMP_PARAM ); ;} break; - case 522: -#line 1379 "harbour.y" + case 518: +#line 1382 "harbour.y" { (yyval.pVoid) = hb_compElseIfGen( HB_COMP_PARAM, (yyvsp[(1) - (7)].pVoid), hb_compGenJump( 0, HB_COMP_PARAM ) ); hb_compGenJumpHere( (yyvsp[(6) - (7)].iNumber), HB_COMP_PARAM ); ;} break; - case 523: -#line 1384 "harbour.y" - { if( HB_COMP_PARAM->wIfCounter ) - --HB_COMP_PARAM->wIfCounter; - HB_COMP_PARAM->functions.pLast->bFlags &= ~ ( /*FUN_WITH_RETURN |*/ FUN_BREAK_CODE ); ;} - break; - - case 524: + case 519: #line 1387 "harbour.y" { if( HB_COMP_PARAM->wIfCounter ) --HB_COMP_PARAM->wIfCounter; HB_COMP_PARAM->functions.pLast->bFlags &= ~ ( /*FUN_WITH_RETURN |*/ FUN_BREAK_CODE ); ;} break; - case 525: -#line 1394 "harbour.y" + case 520: +#line 1390 "harbour.y" + { if( HB_COMP_PARAM->wIfCounter ) + --HB_COMP_PARAM->wIfCounter; + HB_COMP_PARAM->functions.pLast->bFlags &= ~ ( /*FUN_WITH_RETURN |*/ FUN_BREAK_CODE ); ;} + break; + + case 521: +#line 1397 "harbour.y" { hb_compElseIfFix( HB_COMP_PARAM, (yyvsp[(2) - (3)].pVoid) ); ;} break; - case 528: -#line 1406 "harbour.y" + case 524: +#line 1409 "harbour.y" { hb_compElseIfFix( HB_COMP_PARAM, (yyvsp[(2) - (4)].pVoid) ); ;} break; - case 529: -#line 1410 "harbour.y" + case 525: +#line 1413 "harbour.y" { if( HB_COMP_PARAM->wCaseCounter ) --HB_COMP_PARAM->wCaseCounter; HB_COMP_PARAM->functions.pLast->bFlags &= ~ ( FUN_WITH_RETURN | FUN_BREAK_CODE ); ;} break; - case 530: -#line 1415 "harbour.y" + case 526: +#line 1418 "harbour.y" { if( HB_COMP_PARAM->wCaseCounter ) --HB_COMP_PARAM->wCaseCounter; HB_COMP_PARAM->functions.pLast->bFlags &= ~ ( FUN_WITH_RETURN | FUN_BREAK_CODE ); ;} break; - case 531: -#line 1421 "harbour.y" + case 527: +#line 1424 "harbour.y" { ++HB_COMP_PARAM->wCaseCounter; hb_compLinePushIfDebugger( HB_COMP_PARAM );;} break; - case 533: -#line 1424 "harbour.y" - { ;} - break; - - case 534: -#line 1425 "harbour.y" + case 530: +#line 1428 "harbour.y" { if( (yyvsp[(2) - (2)].lNumber) > 0 ) { @@ -6402,21 +6304,21 @@ yyreduce: ;} break; - case 535: -#line 1433 "harbour.y" + case 531: +#line 1436 "harbour.y" { hb_compLinePushIfInside( HB_COMP_PARAM ); ;} break; - case 536: -#line 1434 "harbour.y" + case 532: +#line 1437 "harbour.y" { hb_compExprDelete( hb_compExprGenPush( (yyvsp[(3) - (4)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); (yyval.iNumber) = hb_compGenJumpFalse( 0, HB_COMP_PARAM ); ;} break; - case 537: -#line 1439 "harbour.y" + case 533: +#line 1442 "harbour.y" { HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_BREAK_CODE; (yyval.pVoid) = hb_compElseIfGen( HB_COMP_PARAM, NULL, hb_compGenJump( 0, HB_COMP_PARAM ) ); @@ -6424,21 +6326,21 @@ yyreduce: ;} break; - case 538: -#line 1445 "harbour.y" + case 534: +#line 1448 "harbour.y" { hb_compLinePushIfInside( HB_COMP_PARAM ); ;} break; - case 539: -#line 1446 "harbour.y" + case 535: +#line 1449 "harbour.y" { hb_compExprDelete( hb_compExprGenPush( (yyvsp[(4) - (5)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); (yyval.iNumber) = hb_compGenJumpFalse( 0, HB_COMP_PARAM ); ;} break; - case 540: -#line 1451 "harbour.y" + case 536: +#line 1454 "harbour.y" { HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_BREAK_CODE; (yyval.pVoid) = hb_compElseIfGen( HB_COMP_PARAM, (yyvsp[(1) - (7)].pVoid), hb_compGenJump( 0, HB_COMP_PARAM ) ); @@ -6446,39 +6348,39 @@ yyreduce: ;} break; - case 541: -#line 1458 "harbour.y" + case 537: +#line 1461 "harbour.y" {hb_compLinePushIfDebugger( HB_COMP_PARAM ); ;} break; - case 542: -#line 1458 "harbour.y" + case 538: +#line 1461 "harbour.y" { HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_BREAK_CODE; ;} break; - case 544: -#line 1460 "harbour.y" + case 540: +#line 1463 "harbour.y" { hb_compGenError( HB_COMP_PARAM, hb_comp_szErrors, 'E', HB_COMP_ERR_MAYHEM_IN_CASE, NULL, NULL ); ;} break; - case 546: -#line 1465 "harbour.y" + case 542: +#line 1468 "harbour.y" { hb_compExprDelete( hb_compExprGenPush( (yyvsp[(2) - (3)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); (yyval.lNumber) = hb_compGenJumpFalse( 0, HB_COMP_PARAM ); ;} break; - case 547: -#line 1470 "harbour.y" + case 543: +#line 1473 "harbour.y" { hb_compLoopHere( HB_COMP_PARAM ); hb_compGenJump( (yyvsp[(1) - (5)].lNumber) - HB_COMP_PARAM->functions.pLast->lPCodePos, HB_COMP_PARAM ); ;} break; - case 548: -#line 1475 "harbour.y" + case 544: +#line 1478 "harbour.y" { hb_compGenJumpHere( (yyvsp[(4) - (7)].lNumber), HB_COMP_PARAM ); if( HB_COMP_PARAM->wWhileCounter ) @@ -6488,25 +6390,26 @@ yyreduce: ;} break; - case 549: -#line 1484 "harbour.y" + case 545: +#line 1487 "harbour.y" { (yyval.lNumber) = HB_COMP_PARAM->functions.pLast->lPCodePos; hb_compLinePushIfInside( HB_COMP_PARAM ); ++HB_COMP_PARAM->wWhileCounter; hb_compLoopStart( HB_COMP_PARAM ); ;} break; - case 550: -#line 1487 "harbour.y" + case 546: +#line 1490 "harbour.y" { HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_BREAK_CODE; ;} break; - case 551: -#line 1488 "harbour.y" + case 547: +#line 1491 "harbour.y" { HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_BREAK_CODE; ;} break; - case 552: -#line 1492 "harbour.y" + case 548: +#line 1495 "harbour.y" { hb_compLinePushIfInside( HB_COMP_PARAM ); + (yyvsp[(1) - (4)].lNumber) = HB_COMP_PARAM->currLine; hb_compDebugStart(); ++HB_COMP_PARAM->wForCounter; /* 5 */ (yyval.asExpr) = hb_compExprGenStatement( hb_compExprAssign( (yyvsp[(2) - (4)].asExpr), (yyvsp[(4) - (4)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); @@ -6517,26 +6420,28 @@ yyreduce: ;} break; - case 553: -#line 1503 "harbour.y" + case 549: +#line 1507 "harbour.y" { hb_compLoopStart( HB_COMP_PARAM ); (yyval.lNumber) = hb_compGenJump( 0, HB_COMP_PARAM ); /* 9 */ ;} break; - case 554: -#line 1508 "harbour.y" + case 550: +#line 1512 "harbour.y" { (yyval.lNumber) = HB_COMP_PARAM->functions.pLast->lPCodePos; /* 11 */ ;} break; - case 555: -#line 1512 "harbour.y" + case 551: +#line 1516 "harbour.y" { short iStep, iLocal; + HB_COMP_PARAM->currLine = (yyvsp[(1) - (12)].lNumber); + hb_compLinePush( HB_COMP_PARAM ); hb_compLoopHere( HB_COMP_PARAM ); if( (yyvsp[(8) - (12)].asExpr) ) @@ -6596,81 +6501,81 @@ yyreduce: ;} break; - case 558: -#line 1578 "harbour.y" + case 554: +#line 1584 "harbour.y" { (yyval.asExpr) = NULL; ;} break; - case 559: -#line 1579 "harbour.y" + case 555: +#line 1585 "harbour.y" { (yyval.asExpr) = hb_compExprReduce( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} break; - case 560: -#line 1582 "harbour.y" - { hb_compLinePush( HB_COMP_PARAM ); - if( HB_COMP_PARAM->wForCounter ) - --HB_COMP_PARAM->wForCounter; ;} - break; - - case 561: -#line 1585 "harbour.y" - { hb_compLinePush( HB_COMP_PARAM ); - if( HB_COMP_PARAM->wForCounter ) - --HB_COMP_PARAM->wForCounter; ;} - break; - - case 562: + case 556: #line 1588 "harbour.y" { hb_compLinePush( HB_COMP_PARAM ); if( HB_COMP_PARAM->wForCounter ) --HB_COMP_PARAM->wForCounter; ;} break; - case 563: + case 557: #line 1591 "harbour.y" { hb_compLinePush( HB_COMP_PARAM ); if( HB_COMP_PARAM->wForCounter ) --HB_COMP_PARAM->wForCounter; ;} break; - case 564: -#line 1596 "harbour.y" + case 558: +#line 1594 "harbour.y" + { hb_compLinePush( HB_COMP_PARAM ); + if( HB_COMP_PARAM->wForCounter ) + --HB_COMP_PARAM->wForCounter; ;} + break; + + case 559: +#line 1597 "harbour.y" + { hb_compLinePush( HB_COMP_PARAM ); + if( HB_COMP_PARAM->wForCounter ) + --HB_COMP_PARAM->wForCounter; ;} + break; + + case 560: +#line 1602 "harbour.y" { (yyval.asExpr) = hb_compExprNewVarRef( (yyvsp[(1) - (1)].string), HB_COMP_PARAM ); ;} break; - case 565: -#line 1597 "harbour.y" + case 561: +#line 1603 "harbour.y" { (yyval.asExpr) = hb_compExprNewRef( (yyvsp[(1) - (1)].asExpr), HB_COMP_PARAM ); ;} break; + case 562: +#line 1606 "harbour.y" + { (yyval.asExpr) = hb_compExprNewArgList( (yyvsp[(1) - (1)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 563: +#line 1607 "harbour.y" + { (yyval.asExpr) = hb_compExprAddListExpr( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr) ); ;} + break; + + case 564: +#line 1610 "harbour.y" + { (yyval.asExpr) = hb_compExprNewVarRef( (yyvsp[(2) - (2)].string), HB_COMP_PARAM ); ;} + break; + case 566: -#line 1600 "harbour.y" +#line 1614 "harbour.y" { (yyval.asExpr) = hb_compExprNewArgList( (yyvsp[(1) - (1)].asExpr), HB_COMP_PARAM ); ;} break; case 567: -#line 1601 "harbour.y" +#line 1615 "harbour.y" { (yyval.asExpr) = hb_compExprAddListExpr( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr) ); ;} break; case 568: -#line 1604 "harbour.y" - { (yyval.asExpr) = hb_compExprNewVarRef( (yyvsp[(2) - (2)].string), HB_COMP_PARAM ); ;} - break; - - case 570: -#line 1608 "harbour.y" - { (yyval.asExpr) = hb_compExprNewArgList( (yyvsp[(1) - (1)].asExpr), HB_COMP_PARAM ); ;} - break; - - case 571: -#line 1609 "harbour.y" - { (yyval.asExpr) = hb_compExprAddListExpr( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr) ); ;} - break; - - case 572: -#line 1614 "harbour.y" +#line 1620 "harbour.y" { ++HB_COMP_PARAM->wForCounter; /* 5 */ hb_compLinePushIfInside( HB_COMP_PARAM ); @@ -6678,8 +6583,8 @@ yyreduce: ;} break; - case 573: -#line 1620 "harbour.y" + case 569: +#line 1626 "harbour.y" { /* 7 */ @@ -6690,8 +6595,8 @@ yyreduce: ;} break; - case 574: -#line 1629 "harbour.y" + case 570: +#line 1635 "harbour.y" { /* 9 */ @@ -6699,8 +6604,8 @@ yyreduce: ;} break; - case 575: -#line 1635 "harbour.y" + case 571: +#line 1641 "harbour.y" { hb_compLoopHere( HB_COMP_PARAM ); hb_compEnumNext( HB_COMP_PARAM, (yyvsp[(2) - (10)].asExpr), (yyvsp[(6) - (10)].iNumber) ); @@ -6715,18 +6620,18 @@ yyreduce: ;} break; - case 576: -#line 1649 "harbour.y" + case 572: +#line 1655 "harbour.y" { (yyval.iNumber) = 1; ;} break; - case 577: -#line 1650 "harbour.y" + case 573: +#line 1656 "harbour.y" { (yyval.iNumber) = -1; ;} break; - case 578: -#line 1654 "harbour.y" + case 574: +#line 1660 "harbour.y" { hb_compLoopStart( HB_COMP_PARAM ); hb_compSwitchStart( HB_COMP_PARAM ); @@ -6734,50 +6639,45 @@ yyreduce: ;} break; - case 579: -#line 1661 "harbour.y" + case 575: +#line 1667 "harbour.y" { hb_compSwitchEnd( HB_COMP_PARAM ); hb_compLoopEnd( HB_COMP_PARAM ); ;} break; - case 580: -#line 1668 "harbour.y" + case 576: +#line 1674 "harbour.y" { hb_compGenPCode1( HB_P_POP, HB_COMP_PARAM ); ;} break; - case 581: -#line 1674 "harbour.y" + case 577: +#line 1680 "harbour.y" { if( HB_COMP_PARAM->wSwitchCounter ) --HB_COMP_PARAM->wSwitchCounter; HB_COMP_PARAM->functions.pLast->bFlags &= ~ ( FUN_WITH_RETURN | FUN_BREAK_CODE ); ;} break; - case 582: -#line 1681 "harbour.y" + case 578: +#line 1687 "harbour.y" { ++HB_COMP_PARAM->wSwitchCounter; hb_compLinePushIfInside( HB_COMP_PARAM ); ;} break; - case 583: -#line 1685 "harbour.y" + case 579: +#line 1691 "harbour.y" { hb_compExprDelete( hb_compExprGenPush( (yyvsp[(3) - (4)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); ;} break; - case 584: -#line 1690 "harbour.y" - { ;} - break; - - case 585: -#line 1691 "harbour.y" + case 581: +#line 1697 "harbour.y" { if( (yyvsp[(2) - (2)].lNumber) > 0 ) { @@ -6786,28 +6686,28 @@ yyreduce: ;} break; - case 586: -#line 1699 "harbour.y" + case 582: +#line 1705 "harbour.y" { hb_compSwitchAdd( HB_COMP_PARAM, (yyvsp[(2) - (2)].asExpr) ); hb_compLinePush( HB_COMP_PARAM ); ;} break; - case 588: -#line 1702 "harbour.y" + case 584: +#line 1708 "harbour.y" { hb_compSwitchAdd( HB_COMP_PARAM, (yyvsp[(3) - (3)].asExpr) ); hb_compLinePush( HB_COMP_PARAM ); ;} break; - case 592: -#line 1710 "harbour.y" + case 588: +#line 1716 "harbour.y" { hb_compSwitchAdd( HB_COMP_PARAM, NULL ); hb_compLinePush( HB_COMP_PARAM ); ;} break; - case 593: -#line 1710 "harbour.y" + case 589: +#line 1716 "harbour.y" { HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_BREAK_CODE; ;} break; - case 595: -#line 1715 "harbour.y" + case 591: +#line 1721 "harbour.y" { /* 2 */ ++HB_COMP_PARAM->wSeqCounter; hb_compStatmentStart( HB_COMP_PARAM ); @@ -6815,8 +6715,8 @@ yyreduce: ;} break; - case 596: -#line 1722 "harbour.y" + case 592: +#line 1728 "harbour.y" { /* 5 */ /* Set jump address for HB_P_SEQBEGIN opcode - this address * will be used in BREAK code if there is no RECOVER clause @@ -6826,8 +6726,8 @@ yyreduce: ;} break; - case 597: -#line 1730 "harbour.y" + case 593: +#line 1736 "harbour.y" { /* 7 */ /* Replace END address with RECOVER address in * HB_P_SEQBEGIN opcode if there is RECOVER clause @@ -6839,8 +6739,8 @@ yyreduce: ;} break; - case 598: -#line 1740 "harbour.y" + case 594: +#line 1746 "harbour.y" { /* 9 */ if( (yyvsp[(8) - (8)].lNumber) ) { @@ -6864,13 +6764,13 @@ yyreduce: ;} break; - case 600: -#line 1764 "harbour.y" + case 596: +#line 1770 "harbour.y" { (yyval.lNumber) = 0; ;} break; - case 602: -#line 1769 "harbour.y" + case 598: +#line 1775 "harbour.y" { HB_COMP_PARAM->functions.pLast->bFlags &= ~FUN_BREAK_CODE; (yyval.lNumber) = HB_COMP_PARAM->functions.pLast->lPCodePos; @@ -6878,13 +6778,13 @@ yyreduce: ;} break; - case 603: -#line 1776 "harbour.y" + case 599: +#line 1782 "harbour.y" { (yyval.lNumber) = 0; ;} break; - case 606: -#line 1782 "harbour.y" + case 602: +#line 1788 "harbour.y" { HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_BREAK_CODE; (yyval.lNumber) = HB_COMP_PARAM->functions.pLast->lPCodePos; @@ -6895,8 +6795,8 @@ yyreduce: ;} break; - case 607: -#line 1793 "harbour.y" + case 603: +#line 1799 "harbour.y" { HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_BREAK_CODE; (yyval.lNumber) = HB_COMP_PARAM->functions.pLast->lPCodePos; @@ -6908,26 +6808,26 @@ yyreduce: ;} break; - case 610: -#line 1815 "harbour.y" + case 606: +#line 1821 "harbour.y" { (yyval.bTrue) = HB_COMP_PARAM->iPassByRef;HB_COMP_PARAM->iPassByRef=HB_PASSBYREF_FUNCALL; ;} break; - case 611: -#line 1817 "harbour.y" + case 607: +#line 1823 "harbour.y" { (yyval.asExpr) = hb_compExprNewFunCall( (yyvsp[(2) - (4)].asExpr), (yyvsp[(4) - (4)].asExpr), HB_COMP_PARAM ); HB_COMP_PARAM->iPassByRef = (yyvsp[(3) - (4)].bTrue); ;} break; - case 612: -#line 1822 "harbour.y" + case 608: +#line 1828 "harbour.y" { (yyval.bTrue) = HB_COMP_PARAM->iPassByRef;HB_COMP_PARAM->iPassByRef=HB_PASSBYREF_FUNCALL; ;} break; - case 613: -#line 1824 "harbour.y" + case 609: +#line 1830 "harbour.y" { hb_compAutoOpenAdd( HB_COMP_PARAM, (yyvsp[(1) - (3)].string) ); /* DOIDENT is the only one identifier which can be returned in lower letters */ @@ -6936,48 +6836,48 @@ yyreduce: ;} break; - case 614: -#line 1832 "harbour.y" + case 610: +#line 1838 "harbour.y" { (yyval.asExpr) = NULL; ;} break; - case 615: -#line 1833 "harbour.y" + case 611: +#line 1839 "harbour.y" { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} break; - case 616: -#line 1836 "harbour.y" + case 612: +#line 1842 "harbour.y" { (yyval.asExpr) = hb_compExprAddListExpr( hb_compExprNewArgList( hb_compExprNewNil( HB_COMP_PARAM ), HB_COMP_PARAM ), hb_compExprNewNil( HB_COMP_PARAM ) ); ;} break; - case 617: -#line 1837 "harbour.y" + case 613: +#line 1843 "harbour.y" { (yyval.asExpr) = hb_compExprAddListExpr( hb_compExprNewArgList( hb_compExprNewNil( HB_COMP_PARAM ), HB_COMP_PARAM ), (yyvsp[(2) - (2)].asExpr) ); ;} break; - case 618: -#line 1838 "harbour.y" + case 614: +#line 1844 "harbour.y" { (yyval.asExpr) = hb_compExprNewArgList( (yyvsp[(1) - (1)].asExpr), HB_COMP_PARAM ); ;} break; - case 619: -#line 1839 "harbour.y" + case 615: +#line 1845 "harbour.y" { (yyval.asExpr) = hb_compExprAddListExpr( (yyvsp[(1) - (2)].asExpr), hb_compExprNewNil( HB_COMP_PARAM ) ); ;} break; - case 620: -#line 1840 "harbour.y" + case 616: +#line 1846 "harbour.y" { (yyval.asExpr) = hb_compExprAddListExpr( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr) ); ;} break; - case 621: -#line 1843 "harbour.y" + case 617: +#line 1849 "harbour.y" { (yyval.asExpr) = hb_compExprNewVarRef( (yyvsp[(1) - (1)].string), HB_COMP_PARAM ); ;} break; - case 626: -#line 1851 "harbour.y" + case 622: +#line 1857 "harbour.y" { hb_compLinePushIfInside( HB_COMP_PARAM ); hb_compExprDelete( hb_compExprGenPush( (yyvsp[(2) - (3)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); @@ -6986,32 +6886,27 @@ yyreduce: ;} break; - case 627: -#line 1859 "harbour.y" - { if( HB_COMP_PARAM->wWithObjectCnt ) + case 623: +#line 1865 "harbour.y" + { if( HB_COMP_PARAM->wWithObjectCnt ) --HB_COMP_PARAM->wWithObjectCnt; hb_compGenPCode1( HB_P_WITHOBJECTEND, HB_COMP_PARAM ); ;} break; - case 628: -#line 1863 "harbour.y" + case 624: +#line 1869 "harbour.y" { hb_compExprDelete( (yyvsp[(2) - (4)].asExpr), HB_COMP_PARAM ); ;} break; - case 629: -#line 1866 "harbour.y" + case 625: +#line 1872 "harbour.y" { HB_COMP_PARAM->fError = FALSE; ;} break; - case 630: -#line 1867 "harbour.y" - { HB_COMP_PARAM->fDontGenLineNum = TRUE; ;} - break; - /* Line 1267 of yacc.c. */ -#line 7015 "harboury.c" +#line 6910 "harboury.c" default: break; } YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); @@ -7225,7 +7120,7 @@ yyreturn: } -#line 1870 "harbour.y" +#line 1876 "harbour.y" /* diff --git a/harbour/source/compiler/hbcomp.c b/harbour/source/compiler/hbcomp.c index 654058a324..6b9a04581a 100644 --- a/harbour/source/compiler/hbcomp.c +++ b/harbour/source/compiler/hbcomp.c @@ -92,7 +92,6 @@ HB_COMP_PTR hb_comp_new( void ) pComp->fForceMemvars = FALSE; /* holds if memvars are assumed when accesing undeclared variable (-v)*/ pComp->fDebugInfo = FALSE; /* holds if generate debugger required info */ pComp->fNoStartUp = FALSE; /* C code generation embed HB_FS_FIRST or not */ - pComp->fDontGenLineNum = FALSE; /* suppress line number generation */ pComp->fCredits = FALSE; /* print credits */ pComp->fBuildInfo = FALSE; /* print build info */ pComp->fLogo = TRUE; /* print logo */ diff --git a/harbour/source/compiler/hbfix.c b/harbour/source/compiler/hbfix.c index 36167e9807..effdd3f810 100644 --- a/harbour/source/compiler/hbfix.c +++ b/harbour/source/compiler/hbfix.c @@ -58,7 +58,6 @@ typedef struct HB_stru_fix_info { HB_COMP_DECL; - USHORT iNestedCodeblock; } HB_FIX_INFO, * HB_FIX_INFO_PTR; #define HB_FIX_FUNC( func ) HB_PCODE_FUNC( func, HB_FIX_INFO_PTR ) @@ -66,607 +65,151 @@ typedef HB_FIX_FUNC( HB_FIX_FUNC_ ); typedef HB_FIX_FUNC_ * HB_FIX_FUNC_PTR; -static HB_FIX_FUNC( hb_p_endblock ) -{ - HB_SYMBOL_UNUSED( pFunc ); - HB_SYMBOL_UNUSED( lPCodePos ); - - --cargo->iNestedCodeblock; - return 1; -} - -static HB_FIX_FUNC( hb_p_pushblockshort ) -{ - HB_SYMBOL_UNUSED( pFunc ); - HB_SYMBOL_UNUSED( lPCodePos ); - - ++cargo->iNestedCodeblock; - - return 2; -} - static HB_FIX_FUNC( hb_p_pushblock ) { + BYTE * pLocal = &pFunc->pCode[ lPCodePos + 7 ]; USHORT wVar; - ULONG ulStart = lPCodePos; - ++cargo->iNestedCodeblock; - - wVar = HB_PCODE_MKUSHORT( &pFunc->pCode[ lPCodePos + 5 ] ); + HB_SYMBOL_UNUSED( cargo ); /* opcode + codeblock size + number of parameters + number of local variables */ - lPCodePos += 7; - if( pFunc->wParamCount == 0 ) - { - lPCodePos += wVar << 1; - } - else - { - /* fix local variable's reference */ - while( wVar-- ) - { - BYTE * pLocal = &( pFunc->pCode[ lPCodePos ] ); - USHORT wLocal = HB_PCODE_MKUSHORT( pLocal ); + wVar = HB_PCODE_MKUSHORT( &pFunc->pCode[ lPCodePos + 5 ] ); - wLocal += pFunc->wParamCount; - pLocal[ 0 ] = HB_LOBYTE( wLocal ); - pLocal[ 1 ] = HB_HIBYTE( wLocal ); - lPCodePos += 2; - } + /* fix local variable's reference */ + while( wVar-- ) + { + USHORT wLocal = HB_PCODE_MKUSHORT( pLocal ) + pFunc->wParamCount; + pLocal[ 0 ] = HB_LOBYTE( wLocal ); + pLocal[ 1 ] = HB_HIBYTE( wLocal ); + pLocal += 2; } - return (lPCodePos - ulStart); + + /* only local variables used outside of a codeblock need fixing + * skip the codeblock body + */ + return HB_PCODE_MKUSHORT( &pFunc->pCode[ lPCodePos + 1 ] ); } static HB_FIX_FUNC( hb_p_pushblocklarge ) { + BYTE * pLocal = &pFunc->pCode[ lPCodePos + 8 ]; USHORT wVar; - ULONG ulStart = lPCodePos; - ++cargo->iNestedCodeblock; - - wVar = HB_PCODE_MKUSHORT( &pFunc->pCode[ lPCodePos + 6 ] ); + HB_SYMBOL_UNUSED( cargo ); /* opcode + codeblock size + number of parameters + number of local variables */ - lPCodePos += 8; - if( pFunc->wParamCount == 0 ) - { - lPCodePos += wVar << 1; - } - else - { - /* fix local variable's reference */ - while( wVar-- ) - { - BYTE * pLocal = &( pFunc->pCode[ lPCodePos ] ); - USHORT wLocal = HB_PCODE_MKUSHORT( pLocal ); + wVar = HB_PCODE_MKUSHORT( &pFunc->pCode[ lPCodePos + 6 ] ); - wLocal += pFunc->wParamCount; - pLocal[ 0 ] = HB_LOBYTE( wLocal ); - pLocal[ 1 ] = HB_HIBYTE( wLocal ); - lPCodePos += 2; - } + /* fix local variable's reference */ + while( wVar-- ) + { + USHORT wLocal = HB_PCODE_MKUSHORT( pLocal ) + pFunc->wParamCount; + pLocal[ 0 ] = HB_LOBYTE( wLocal ); + pLocal[ 1 ] = HB_HIBYTE( wLocal ); + pLocal += 2; } - return (lPCodePos - ulStart); + + /* only local variables used outside of a codeblock need fixing + * skip the codeblock body + */ + return HB_PCODE_MKUINT24( &pFunc->pCode[ lPCodePos + 1 ] ); } static HB_FIX_FUNC( hb_p_poplocal ) { - /* only local variables used outside of a codeblock need fixing - */ - if( cargo->iNestedCodeblock == 0 ) - { - HB_COMP_DECL = cargo->HB_COMP_PARAM; - BYTE * pVar = &pFunc->pCode[ lPCodePos + 1 ]; - SHORT iVar = HB_PCODE_MKSHORT( pVar ); + BYTE * pVar = &pFunc->pCode[ lPCodePos + 1 ]; + SHORT iVar = HB_PCODE_MKSHORT( pVar ); - iVar += pFunc->wParamCount; - pVar[ 0 ] = HB_LOBYTE( iVar ); - pVar[ 1 ] = HB_HIBYTE( iVar ); - if( HB_LIM_INT8( iVar ) && HB_COMP_ISSUPPORTED( HB_COMPFLAG_OPTJUMP ) ) - { - pFunc->pCode[ lPCodePos ] = HB_P_POPLOCALNEAR; - hb_compNOOPfill( pFunc, lPCodePos + 2, 1, FALSE, FALSE ); - } - } + HB_SYMBOL_UNUSED( cargo ); + + iVar += pFunc->wParamCount; + pVar[ 0 ] = HB_LOBYTE( iVar ); + pVar[ 1 ] = HB_HIBYTE( iVar ); return 3; } static HB_FIX_FUNC( hb_p_pushlocal ) { - /* only local variables used outside of a codeblock need fixing - */ - if( cargo->iNestedCodeblock == 0 ) - { - HB_COMP_DECL = cargo->HB_COMP_PARAM; - BYTE * pVar = &pFunc->pCode[ lPCodePos + 1 ]; - SHORT iVar = HB_PCODE_MKSHORT( pVar ); + BYTE * pVar = &pFunc->pCode[ lPCodePos + 1 ]; + SHORT iVar = HB_PCODE_MKSHORT( pVar ); - iVar += pFunc->wParamCount; - pVar[ 0 ] = HB_LOBYTE( iVar ); - pVar[ 1 ] = HB_HIBYTE( iVar ); - if( HB_LIM_INT8( iVar ) && HB_COMP_ISSUPPORTED(HB_COMPFLAG_OPTJUMP) ) - { - pFunc->pCode[ lPCodePos ] = HB_P_PUSHLOCALNEAR; - hb_compNOOPfill( pFunc, lPCodePos + 2, 1, FALSE, FALSE ); - } - } + HB_SYMBOL_UNUSED( cargo ); + + iVar += pFunc->wParamCount; + pVar[ 0 ] = HB_LOBYTE( iVar ); + pVar[ 1 ] = HB_HIBYTE( iVar ); return 3; } static HB_FIX_FUNC( hb_p_pushlocalref ) { - /* only local variables used outside of a codeblock need fixing - */ - if( cargo->iNestedCodeblock == 0 && pFunc->wParamCount != 0 ) - { - BYTE * pVar = &pFunc->pCode[ lPCodePos + 1 ]; - SHORT iVar = HB_PCODE_MKSHORT( pVar ); + BYTE * pVar = &pFunc->pCode[ lPCodePos + 1 ]; + SHORT iVar = HB_PCODE_MKSHORT( pVar ); - iVar += pFunc->wParamCount; - pVar[ 0 ] = HB_LOBYTE( iVar ); - pVar[ 1 ] = HB_HIBYTE( iVar ); - } + HB_SYMBOL_UNUSED( cargo ); + + iVar += pFunc->wParamCount; + pVar[ 0 ] = HB_LOBYTE( iVar ); + pVar[ 1 ] = HB_HIBYTE( iVar ); return 3; } +static HB_FIX_FUNC( hb_p_localaddint ) +{ + BYTE * pVar = &pFunc->pCode[ lPCodePos + 1 ]; + SHORT iVar = HB_PCODE_MKSHORT( pVar ); + + HB_SYMBOL_UNUSED( cargo ); + + iVar += pFunc->wParamCount; + pVar[ 0 ] = HB_LOBYTE( iVar ); + pVar[ 1 ] = HB_HIBYTE( iVar ); + + return 5; +} + static HB_FIX_FUNC( hb_p_poplocalnear ) { - /* only local variables used outside of a codeblock need fixing + HB_SYMBOL_UNUSED( pFunc ); + HB_SYMBOL_UNUSED( lPCodePos ); + /* + * this code should never be executed because compiler should + * generate only non size optimized HB_P_POPLOCAL pcodes + * for function body */ - if( cargo->iNestedCodeblock == 0 && pFunc->wParamCount != 0 ) - { - /* - * this code should never be executed because compiler should - * generate only non size optimized HB_P_POPLOCAL pcodes - * for function body - */ - SHORT iVar = ( signed char ) pFunc->pCode[ lPCodePos + 1 ]; - - iVar += pFunc->wParamCount; - pFunc->pCode[ lPCodePos + 1 ] = ( BYTE ) iVar; - if( !HB_LIM_INT8( iVar ) ) - { - char sTemp[16]; - char sTemp2[16]; - - snprintf( sTemp, sizeof( sTemp ), "%i", pFunc->wParamCount ); - snprintf( sTemp2, sizeof( sTemp2 ), "%i", iVar ); - hb_compGenError( cargo->HB_COMP_PARAM, hb_comp_szErrors, 'F', HB_COMP_ERR_OPTIMIZEDLOCAL_OUT_OF_RANGE, sTemp2, sTemp ); - } - } + hb_compGenError( cargo->HB_COMP_PARAM, hb_comp_szErrors, 'F', HB_COMP_ERR_OPTIMIZEDLOCAL_OUT_OF_RANGE, "", "" ); return 2; } static HB_FIX_FUNC( hb_p_pushlocalnear ) { - /* only local variables used outside of a codeblock need fixing + HB_SYMBOL_UNUSED( pFunc ); + HB_SYMBOL_UNUSED( lPCodePos ); + /* + * this code should never be executed because compiler should + * generate only non size optimized HB_P_POPLOCAL pcodes + * for function body */ - if( cargo->iNestedCodeblock == 0 && pFunc->wParamCount != 0 ) - { - /* - * this code should never be executed because compiler should - * generate only non size optimized HB_P_POPLOCAL pcodes - * for function body - */ - SHORT iVar = ( signed char ) pFunc->pCode[ lPCodePos + 1 ]; - - iVar += pFunc->wParamCount; - pFunc->pCode[ lPCodePos + 1 ] = ( BYTE ) iVar; - if( !HB_LIM_INT8( iVar ) ) - { - char sTemp[16]; - char sTemp2[16]; - - snprintf( sTemp, sizeof( sTemp ), "%i", pFunc->wParamCount ); - snprintf( sTemp2, sizeof( sTemp2 ), "%i", iVar ); - hb_compGenError( cargo->HB_COMP_PARAM, hb_comp_szErrors, 'F', HB_COMP_ERR_OPTIMIZEDLOCAL_OUT_OF_RANGE, sTemp2, sTemp ); - } - } + hb_compGenError( cargo->HB_COMP_PARAM, hb_comp_szErrors, 'F', HB_COMP_ERR_OPTIMIZEDLOCAL_OUT_OF_RANGE, "", "" ); return 2; } -static HB_FIX_FUNC( hb_p_localaddint ) -{ - /* only local variables used outside of a codeblock need fixing - */ - if( cargo->iNestedCodeblock == 0 ) - { - HB_COMP_DECL = cargo->HB_COMP_PARAM; - BYTE * pVar = &pFunc->pCode[ lPCodePos + 1 ]; - SHORT iVar = HB_PCODE_MKSHORT( pVar ); - - iVar += pFunc->wParamCount; - if( HB_LIM_INT8( iVar ) && HB_COMP_ISSUPPORTED(HB_COMPFLAG_OPTJUMP) ) - { - pVar[ 0 ] = HB_P_LOCALNEARADDINT; - pVar[ 1 ] = HB_LOBYTE( iVar ); - hb_compNOOPfill( pFunc, lPCodePos, 1, FALSE, FALSE ); - } - else - { - pVar[ 0 ] = HB_LOBYTE( iVar ); - pVar[ 1 ] = HB_HIBYTE( iVar ); - } - } - - return 5; -} - static HB_FIX_FUNC( hb_p_localnearaddint ) { - /* only local variables used outside of a codeblock need fixing + HB_SYMBOL_UNUSED( pFunc ); + HB_SYMBOL_UNUSED( lPCodePos ); + /* + * this code should never be executed because compiler should + * generate only non size optimized HB_P_POPLOCAL pcodes + * for function body */ - if( cargo->iNestedCodeblock == 0 && pFunc->wParamCount ) - { - USHORT uiVar = pFunc->pCode[ lPCodePos + 1 ]; + hb_compGenError( cargo->HB_COMP_PARAM, hb_comp_szErrors, 'F', HB_COMP_ERR_OPTIMIZEDLOCAL_OUT_OF_RANGE, "", "" ); - uiVar += pFunc->wParamCount; - if( uiVar < 256 ) - { - pFunc->pCode[ lPCodePos + 1 ] = ( BYTE ) uiVar; - } - else - { - /* After fixing this variable cannot be accessed using near code */ - char sTemp[16]; - char sTemp2[16]; - - snprintf( sTemp, sizeof( sTemp ), "%i", pFunc->wParamCount ); - snprintf( sTemp2, sizeof( sTemp2 ), "%i", uiVar ); - hb_compGenError( cargo->HB_COMP_PARAM, hb_comp_szErrors, 'F', HB_COMP_ERR_OPTIMIZEDLOCAL_OUT_OF_RANGE, sTemp2, sTemp ); - } - } - - return 4; -} - -static HB_FIX_FUNC( hb_p_false ) -{ - if( cargo->iNestedCodeblock == 0 ) - { - switch( pFunc->pCode[ lPCodePos + 1 ] ) - { - case HB_P_POP: - case HB_P_JUMPFALSENEAR: - case HB_P_JUMPFALSE: - case HB_P_JUMPFALSEFAR: - case HB_P_JUMPTRUENEAR: - case HB_P_JUMPTRUE: - case HB_P_JUMPTRUEFAR: - if( ! hb_compIsJump( cargo->HB_COMP_PARAM, pFunc, lPCodePos + 1 ) ) - { - int iCount = 1; - - switch( pFunc->pCode[ lPCodePos + 1 ] ) - { - case HB_P_JUMPFALSENEAR: - pFunc->pCode[ lPCodePos + 1 ] = HB_P_JUMPNEAR; - break; - case HB_P_JUMPFALSE: - pFunc->pCode[ lPCodePos + 1 ] = HB_P_JUMP; - break; - case HB_P_JUMPFALSEFAR: - pFunc->pCode[ lPCodePos + 1 ] = HB_P_JUMPFAR; - break; - case HB_P_POP: - iCount = 2; - break; - case HB_P_JUMPTRUENEAR: - iCount = 3; - break; - case HB_P_JUMPTRUE: - iCount = 4; - break; - case HB_P_JUMPTRUEFAR: - iCount = 5; - break; - } - hb_compNOOPfill( pFunc, lPCodePos, iCount, FALSE, FALSE ); - } - break; - } - } - - return 1; -} - -static HB_FIX_FUNC( hb_p_true ) -{ - if( cargo->iNestedCodeblock == 0 ) - { - switch( pFunc->pCode[ lPCodePos + 1 ] ) - { - case HB_P_POP: - case HB_P_JUMPTRUENEAR: - case HB_P_JUMPTRUE: - case HB_P_JUMPTRUEFAR: - case HB_P_JUMPFALSENEAR: - case HB_P_JUMPFALSE: - case HB_P_JUMPFALSEFAR: - if( ! hb_compIsJump( cargo->HB_COMP_PARAM, pFunc, lPCodePos + 1 ) ) - { - int iCount = 1; - - switch( pFunc->pCode[ lPCodePos + 1 ] ) - { - case HB_P_JUMPTRUENEAR: - pFunc->pCode[ lPCodePos + 1 ] = HB_P_JUMPNEAR; - break; - case HB_P_JUMPTRUE: - pFunc->pCode[ lPCodePos + 1 ] = HB_P_JUMP; - break; - case HB_P_JUMPTRUEFAR: - pFunc->pCode[ lPCodePos + 1 ] = HB_P_JUMPFAR; - break; - case HB_P_POP: - iCount = 2; - break; - case HB_P_JUMPFALSENEAR: - iCount = 3; - break; - case HB_P_JUMPFALSE: - iCount = 4; - break; - case HB_P_JUMPFALSEFAR: - iCount = 5; - break; - } - hb_compNOOPfill( pFunc, lPCodePos, iCount, FALSE, FALSE ); - } - break; - } - } - return 1; -} - -static HB_FIX_FUNC( hb_p_duplicate ) -{ - HB_COMP_DECL = cargo->HB_COMP_PARAM; - - if( cargo->iNestedCodeblock == 0 && HB_COMP_ISSUPPORTED(HB_COMPFLAG_OPTJUMP) ) - { - switch( pFunc->pCode[ lPCodePos + 1 ] ) - { - case HB_P_JUMPTRUEFAR: - case HB_P_JUMPFALSEFAR: - if( pFunc->pCode[ lPCodePos + 5 ] == HB_P_POP ) - { - BYTE * pAddr = &pFunc->pCode[ lPCodePos + 2 ]; - LONG lOffset = HB_PCODE_MKINT24( pAddr ), lLastOffset = 0; - ULONG ulNewPos = lPCodePos + 1 + lOffset; - BOOL fNot = FALSE, fRepeat = TRUE; - - do - { - if( pFunc->pCode[ ulNewPos ] == HB_P_DUPLICATE ) - { - if( lOffset > 0 ) - hb_p_duplicate( pFunc, ulNewPos, cargo ); - } - - if( pFunc->pCode[ ulNewPos ] == HB_P_NOOP ) - { - ulNewPos++; - lOffset++; - } - else if( pFunc->pCode[ ulNewPos ] == HB_P_NOT ) - { - ulNewPos++; - lOffset++; - fNot = !fNot; - } - else if( pFunc->pCode[ ulNewPos ] == HB_P_DUPLICATE && - ( pFunc->pCode[ ulNewPos + 1 ] == HB_P_JUMPTRUEFAR || - pFunc->pCode[ ulNewPos + 1 ] == HB_P_JUMPFALSEFAR ) ) - { - LONG lJump; - if( pFunc->pCode[ ulNewPos + 1 ] != pFunc->pCode[ lPCodePos + 1 ] ) - fNot = !fNot; - lJump = fNot ? 4 : HB_PCODE_MKINT24( &pFunc->pCode[ ulNewPos + 2 ] ); - lOffset += lJump + 1; - ulNewPos = lPCodePos + 1 + lOffset; - fRepeat = lJump > 0; - } - else - fRepeat = FALSE; - - if( !fNot ) - lLastOffset = lOffset; - } - while( fRepeat ); - - if( ( pFunc->pCode[ ulNewPos ] == HB_P_JUMPTRUEFAR || - pFunc->pCode[ ulNewPos ] == HB_P_JUMPFALSEFAR ) && - !hb_compIsJump( cargo->HB_COMP_PARAM, pFunc, lPCodePos + 1 ) && - !hb_compIsJump( cargo->HB_COMP_PARAM, pFunc, lPCodePos + 5 ) ) - { - if( pFunc->pCode[ ulNewPos ] != pFunc->pCode[ lPCodePos + 1 ] ) - fNot = !fNot; - if( fNot ) - lOffset += 4; - else - lOffset += HB_PCODE_MKINT24( &pFunc->pCode[ ulNewPos + 1 ] ); - - HB_PUT_LE_UINT24( pAddr, lOffset ); - hb_compNOOPfill( pFunc, lPCodePos, 1, FALSE, FALSE ); - hb_compNOOPfill( pFunc, lPCodePos + 5, 1, FALSE, FALSE ); - } - else if( lLastOffset ) - { - HB_PUT_LE_UINT24( pAddr, lLastOffset ); - } - } - break; - } - } - return 1; -} - -static HB_FIX_FUNC( hb_p_not ) -{ - if( cargo->iNestedCodeblock == 0 ) - { - BYTE opcode; - - switch( pFunc->pCode[ lPCodePos + 1 ] ) - { - case HB_P_NOT: - opcode = HB_P_NOOP; - break; - case HB_P_JUMPTRUENEAR: - opcode = HB_P_JUMPFALSENEAR; - break; - case HB_P_JUMPTRUE: - opcode = HB_P_JUMPFALSE; - break; - case HB_P_JUMPTRUEFAR: - opcode = HB_P_JUMPFALSEFAR; - break; - case HB_P_JUMPFALSENEAR: - opcode = HB_P_JUMPTRUENEAR; - break; - case HB_P_JUMPFALSE: - opcode = HB_P_JUMPTRUE; - break; - case HB_P_JUMPFALSEFAR: - opcode = HB_P_JUMPTRUEFAR; - break; -/* This optimization will be enabled in the future in a little bit differ form */ -#if 0 - case HB_P_DUPLICATE: - if( ( pFunc->pCode[ lPCodePos + 2 ] == HB_P_JUMPTRUEFAR || - pFunc->pCode[ lPCodePos + 2 ] == HB_P_JUMPFALSEFAR ) && - pFunc->pCode[ lPCodePos + 6 ] == HB_P_POP ) - { - BYTE * pAddr = &pFunc->pCode[ lPCodePos + 3 ]; - LONG lOffset = HB_PCODE_MKINT24( pAddr ); - - if( lOffset > 0 ) - { - hb_p_duplicate( pFunc, lPCodePos + 1, cargo ); - lOffset = HB_PCODE_MKINT24( pAddr ); - } - - if( ( pFunc->pCode[ lPCodePos + 1 ] == HB_P_NOT || - ( pFunc->pCode[ lPCodePos + 1 ] == HB_P_DUPLICATE && - pFunc->pCode[ lPCodePos + lOffset + 2 ] == HB_P_NOT ) ) && - ! hb_compIsJump( cargo->HB_COMP_PARAM, pFunc, lPCodePos + 1 ) ) - { - hb_compNOOPfill( pFunc, lPCodePos, 1, FALSE, FALSE ); - if( pFunc->pCode[ lPCodePos + 2 ] == HB_P_JUMPTRUEFAR ) - pFunc->pCode[ lPCodePos + 2 ] = HB_P_JUMPFALSEFAR; - else - pFunc->pCode[ lPCodePos + 2 ] = HB_P_JUMPTRUEFAR; - if( pFunc->pCode[ lPCodePos + 1 ] == HB_P_DUPLICATE ) - { - ++lOffset; - HB_PUT_LE_UINT24( pAddr, lOffset ); - } - } - } - /* no break; */ -#endif - default: - opcode = HB_P_LAST_PCODE; - break; - } - - if( opcode < HB_P_LAST_PCODE && - ! hb_compIsJump( cargo->HB_COMP_PARAM, pFunc, lPCodePos + 1 ) ) - { - hb_compNOOPfill( pFunc, lPCodePos, 1, FALSE, FALSE ); - if( opcode == HB_P_NOOP ) - hb_compNOOPfill( pFunc, lPCodePos + 1, 1, FALSE, FALSE ); - else - pFunc->pCode[ lPCodePos + 1 ] = opcode; - } - } - return 1; -} - -static HB_FIX_FUNC( hb_p_jumpfar ) -{ - HB_COMP_DECL = cargo->HB_COMP_PARAM; - - if( cargo->iNestedCodeblock == 0 && HB_COMP_ISSUPPORTED(HB_COMPFLAG_OPTJUMP) ) - { - BYTE * pAddr = &pFunc->pCode[ lPCodePos + 1 ]; - LONG lOffset = HB_PCODE_MKINT24( pAddr ); - ULONG ulNewPos = lPCodePos + lOffset; - - switch( pFunc->pCode[ ulNewPos ] ) - { - case HB_P_JUMPFAR: - lOffset += HB_PCODE_MKINT24( &pFunc->pCode[ ulNewPos + 1 ] ); - HB_PUT_LE_UINT24( pAddr, lOffset ); - break; - - case HB_P_JUMPFALSEFAR: - ulNewPos += HB_PCODE_MKINT24( &pFunc->pCode[ ulNewPos + 1 ] ); - if( ulNewPos == lPCodePos + 4 ) - { - pFunc->pCode[ lPCodePos ] = HB_P_JUMPTRUEFAR; - HB_PUT_LE_UINT24( pAddr, lOffset + 4 ); - } - break; - - case HB_P_JUMPTRUEFAR: - ulNewPos += HB_PCODE_MKINT24( &pFunc->pCode[ ulNewPos + 1 ] ); - if( ulNewPos == lPCodePos + 4 ) - { - pFunc->pCode[ lPCodePos ] = HB_P_JUMPFALSEFAR; - HB_PUT_LE_UINT24( pAddr, lOffset + 4 ); - } - break; - } - } - return 4; -} - -static HB_FIX_FUNC( hb_p_jumpfalsefar ) -{ - HB_COMP_DECL = cargo->HB_COMP_PARAM; - - if( cargo->iNestedCodeblock == 0 && HB_COMP_ISSUPPORTED(HB_COMPFLAG_OPTJUMP) ) - { - BYTE * pAddr = &pFunc->pCode[ lPCodePos + 1 ]; - LONG lOffset = HB_PCODE_MKINT24( pAddr ); - ULONG ulNewPos = lPCodePos + lOffset; - - switch( pFunc->pCode[ ulNewPos ] ) - { - case HB_P_JUMPFAR: - lOffset += HB_PCODE_MKINT24( &pFunc->pCode[ ulNewPos + 1 ] ); - HB_PUT_LE_UINT24( pAddr, lOffset ); - break; - } - } - return 4; -} - -static HB_FIX_FUNC( hb_p_jumptruefar ) -{ - HB_COMP_DECL = cargo->HB_COMP_PARAM; - - if( cargo->iNestedCodeblock == 0 && HB_COMP_ISSUPPORTED(HB_COMPFLAG_OPTJUMP) ) - { - BYTE * pAddr = &pFunc->pCode[ lPCodePos + 1 ]; - LONG lOffset = HB_PCODE_MKINT24( pAddr ); - ULONG ulNewPos = lPCodePos + lOffset; - - switch( pFunc->pCode[ ulNewPos ] ) - { - case HB_P_JUMPFAR: - lOffset += HB_PCODE_MKINT24( &pFunc->pCode[ ulNewPos + 1 ] ); - HB_PUT_LE_UINT24( pAddr, lOffset ); - break; - } - } return 4; } @@ -681,10 +224,10 @@ static HB_FIX_FUNC_PTR s_fixlocals_table[] = NULL, /* HB_P_ARRAYDIM, */ NULL, /* HB_P_ARRAYGEN, */ NULL, /* HB_P_EQUAL, */ - hb_p_endblock, /* HB_P_ENDBLOCK, */ + NULL, /* HB_P_ENDBLOCK, */ NULL, /* HB_P_ENDPROC, */ NULL, /* HB_P_EXACTLYEQUAL, */ - hb_p_false, /* HB_P_FALSE, */ + NULL, /* HB_P_FALSE, */ NULL, /* HB_P_FORTEST, */ NULL, /* HB_P_FUNCTION, */ NULL, /* HB_P_FUNCTIONSHORT, */ @@ -696,19 +239,19 @@ static HB_FIX_FUNC_PTR s_fixlocals_table[] = NULL, /* HB_P_DIVIDE, */ NULL, /* HB_P_DO, */ NULL, /* HB_P_DOSHORT, */ - hb_p_duplicate, /* HB_P_DUPLICATE, */ + NULL, /* HB_P_DUPLICATE, */ NULL, /* HB_P_DUPLTWO, */ NULL, /* HB_P_INC, */ NULL, /* HB_P_INSTRING, */ NULL, /* HB_P_JUMPNEAR, */ NULL, /* HB_P_JUMP, */ - hb_p_jumpfar, /* HB_P_JUMPFAR, */ + NULL, /* HB_P_JUMPFAR, */ NULL, /* HB_P_JUMPFALSENEAR, */ NULL, /* HB_P_JUMPFALSE, */ - hb_p_jumpfalsefar, /* HB_P_JUMPFALSEFAR, */ + NULL, /* HB_P_JUMPFALSEFAR, */ NULL, /* HB_P_JUMPTRUENEAR, */ NULL, /* HB_P_JUMPTRUE, */ - hb_p_jumptruefar, /* HB_P_JUMPTRUEFAR, */ + NULL, /* HB_P_JUMPTRUEFAR, */ NULL, /* HB_P_LESSEQUAL, */ NULL, /* HB_P_LESS, */ NULL, /* HB_P_LINE, */ @@ -745,7 +288,7 @@ static HB_FIX_FUNC_PTR s_fixlocals_table[] = NULL, /* HB_P_MULT, */ NULL, /* HB_P_NEGATE, */ NULL, /* HB_P_NOOP, */ - hb_p_not, /* HB_P_NOT, */ + NULL, /* HB_P_NOT, */ NULL, /* HB_P_NOTEQUAL, */ NULL, /* HB_P_OR, */ NULL, /* HB_P_PARAMETER, */ @@ -767,7 +310,7 @@ static HB_FIX_FUNC_PTR s_fixlocals_table[] = NULL, /* HB_P_PUSHALIASEDFIELDNEAR, */ NULL, /* HB_P_PUSHALIASEDVAR, */ hb_p_pushblock, /* HB_P_PUSHBLOCK, */ - hb_p_pushblockshort, /* HB_P_PUSHBLOCKSHORT, */ + NULL, /* HB_P_PUSHBLOCKSHORT, */ NULL, /* HB_P_PUSHFIELD, */ NULL, /* HB_P_PUSHBYTE, */ NULL, /* HB_P_PUSHINT, */ @@ -797,7 +340,7 @@ static HB_FIX_FUNC_PTR s_fixlocals_table[] = NULL, /* HB_P_STATICS, */ NULL, /* HB_P_STATICNAME, */ NULL, /* HB_P_SWAPALIAS, */ - hb_p_true, /* HB_P_TRUE, */ + NULL, /* HB_P_TRUE, */ NULL, /* HB_P_ZERO, */ NULL, /* HB_P_ONE, */ NULL, /* HB_P_MACROFUNC, */ @@ -852,7 +395,6 @@ void hb_compFixFuncPCode( HB_COMP_DECL, PFUNCTION pFunc ) { HB_FIX_INFO fix_info; - fix_info.iNestedCodeblock = 0; fix_info.HB_COMP_PARAM = HB_COMP_PARAM; assert( HB_P_LAST_PCODE == sizeof( s_fixlocals_table ) / sizeof( HB_FIX_FUNC_PTR ) ); diff --git a/harbour/source/compiler/hbgenerr.c b/harbour/source/compiler/hbgenerr.c index 862d6748c8..50f1be7507 100644 --- a/harbour/source/compiler/hbgenerr.c +++ b/harbour/source/compiler/hbgenerr.c @@ -143,11 +143,9 @@ void hb_compGenError( HB_COMP_DECL, char * szErrors[], char cPrefix, int iError, if( !HB_COMP_PARAM->fExit && ( cPrefix == 'F' || !HB_COMP_PARAM->fError ) ) { PFUNCTION pFunc = HB_COMP_PARAM->functions.pLast; - char * szFile = hb_pp_fileName( HB_COMP_PARAM->pLex->pPP ); - int iLine = hb_pp_line( HB_COMP_PARAM->pLex->pPP ); - if( szFile ) - fprintf( hb_comp_errFile, "\r%s(%i) ", szFile, iLine ); + if( HB_COMP_PARAM->currModule ) + fprintf( hb_comp_errFile, "\r%s(%i) ", HB_COMP_PARAM->currModule, HB_COMP_PARAM->currLine ); fprintf( hb_comp_errFile, "Error %c%04i ", cPrefix, iError ); fprintf( hb_comp_errFile, szErrors[ iError - 1 ], szError1, szError2 ); @@ -172,11 +170,8 @@ void hb_compGenWarning( HB_COMP_DECL, char * szWarnings[], char cPrefix, int iWa if( !HB_COMP_PARAM->fExit && ( szText[ 0 ] - '0' <= HB_COMP_PARAM->iWarnings ) ) { - char * szFile = hb_pp_fileName( HB_COMP_PARAM->pLex->pPP ); - int iLine = hb_pp_line( HB_COMP_PARAM->pLex->pPP ); - - if( szFile ) - fprintf( hb_comp_errFile, "\r%s(%i) ", szFile, iLine ); + if( HB_COMP_PARAM->currModule ) + fprintf( hb_comp_errFile, "\r%s(%i) ", HB_COMP_PARAM->currModule, HB_COMP_PARAM->currLine ); fprintf( hb_comp_errFile, "Warning %c%04i ", cPrefix, iWarning ); fprintf( hb_comp_errFile, szText + 1, szWarning1, szWarning2 ); diff --git a/harbour/source/compiler/hbident.c b/harbour/source/compiler/hbident.c index 3f3b4d093e..ce4e5e6998 100644 --- a/harbour/source/compiler/hbident.c +++ b/harbour/source/compiler/hbident.c @@ -44,7 +44,7 @@ char * hb_compIdentifierNew( HB_COMP_DECL, char * szName, int iType ) if( !szIdent ) { /* - * In the future we may want direct support for static identifiers + * In the future we may add direct support for static identifiers * so it will not be necessary to allocate separate buffer for them */ if( iType == HB_IDENT_COPY || iType == HB_IDENT_STATIC ) diff --git a/harbour/source/compiler/hbopt.c b/harbour/source/compiler/hbopt.c new file mode 100644 index 0000000000..e826de86c1 --- /dev/null +++ b/harbour/source/compiler/hbopt.c @@ -0,0 +1,640 @@ +/* + * $Id$ + */ + +/* + * Harbour Project source code: + * Compiler PCODE optimizer + * + * Copyright 2007 Przemyslaw Czerpak + * www - http://www.harbour-project.org + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this software; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, + * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). + * + * As a special exception, the Harbour Project gives permission for + * additional uses of the text contained in its release of Harbour. + * + * The exception is that, if you link the Harbour libraries with other + * files to produce an executable, this does not by itself cause the + * resulting executable to be covered by the GNU General Public License. + * Your use of that executable is in no way restricted on account of + * linking the Harbour library code into it. + * + * This exception does not however invalidate any other reasons why + * the executable file might be covered by the GNU General Public License. + * + * This exception applies only to the code released by the Harbour + * Project under the name Harbour. If you copy code from other + * Harbour Project or Free Software Foundation releases into a copy of + * Harbour, as the General Public License permits, the exception does + * not apply to the code that you add in this way. To avoid misleading + * anyone as to the status of such modified files, you must delete + * this exception notice from them. + * + * If you write modifications of your own for Harbour, it is your choice + * whether to permit this exception to apply to your modifications. + * If you do not wish that, delete this exception notice. + * + */ +#include + +#include "hbcomp.h" + +typedef struct HB_stru_opt_info +{ + HB_COMP_DECL; +} HB_OPT_INFO, * HB_OPT_INFO_PTR; + +#define HB_OPT_FUNC( func ) HB_PCODE_FUNC( func, HB_OPT_INFO_PTR ) +typedef HB_OPT_FUNC( HB_OPT_FUNC_ ); +typedef HB_OPT_FUNC_ * HB_OPT_FUNC_PTR; + + +static HB_OPT_FUNC( hb_p_poplocal ) +{ + BYTE * pVar = &pFunc->pCode[ lPCodePos + 1 ]; + SHORT iVar = HB_PCODE_MKSHORT( pVar ); + + HB_SYMBOL_UNUSED( cargo ); + + if( HB_LIM_INT8( iVar ) ) + { + pFunc->pCode[ lPCodePos ] = HB_P_POPLOCALNEAR; + hb_compNOOPfill( pFunc, lPCodePos + 2, 1, FALSE, FALSE ); + } + + return 3; +} + +static HB_OPT_FUNC( hb_p_pushlocal ) +{ + BYTE * pVar = &pFunc->pCode[ lPCodePos + 1 ]; + SHORT iVar = HB_PCODE_MKSHORT( pVar ); + + HB_SYMBOL_UNUSED( cargo ); + + if( HB_LIM_INT8( iVar ) ) + { + pFunc->pCode[ lPCodePos ] = HB_P_PUSHLOCALNEAR; + hb_compNOOPfill( pFunc, lPCodePos + 2, 1, FALSE, FALSE ); + } + + return 3; +} + +static HB_OPT_FUNC( hb_p_localaddint ) +{ + BYTE * pVar = &pFunc->pCode[ lPCodePos + 1 ]; + SHORT iVar = HB_PCODE_MKSHORT( pVar ); + + HB_SYMBOL_UNUSED( cargo ); + + if( HB_LIM_INT8( iVar ) ) + { + pVar[ 0 ] = HB_P_LOCALNEARADDINT; + pVar[ 1 ] = HB_LOBYTE( iVar ); + hb_compNOOPfill( pFunc, lPCodePos, 1, FALSE, FALSE ); + } + + return 5; +} + +static HB_OPT_FUNC( hb_p_false ) +{ + switch( pFunc->pCode[ lPCodePos + 1 ] ) + { + case HB_P_POP: + case HB_P_NOT: + case HB_P_JUMPFALSENEAR: + case HB_P_JUMPFALSE: + case HB_P_JUMPFALSEFAR: + case HB_P_JUMPTRUENEAR: + case HB_P_JUMPTRUE: + case HB_P_JUMPTRUEFAR: + if( ! hb_compIsJump( cargo->HB_COMP_PARAM, pFunc, lPCodePos + 1 ) ) + { + int iCount = 1; + + switch( pFunc->pCode[ lPCodePos + 1 ] ) + { + case HB_P_JUMPFALSENEAR: + pFunc->pCode[ lPCodePos + 1 ] = HB_P_JUMPNEAR; + break; + case HB_P_JUMPFALSE: + pFunc->pCode[ lPCodePos + 1 ] = HB_P_JUMP; + break; + case HB_P_JUMPFALSEFAR: + pFunc->pCode[ lPCodePos + 1 ] = HB_P_JUMPFAR; + break; + case HB_P_NOT: + pFunc->pCode[ lPCodePos + 1 ] = HB_P_TRUE; + break; + case HB_P_POP: + iCount = 2; + break; + case HB_P_JUMPTRUENEAR: + iCount = 3; + break; + case HB_P_JUMPTRUE: + iCount = 4; + break; + case HB_P_JUMPTRUEFAR: + iCount = 5; + break; + } + hb_compNOOPfill( pFunc, lPCodePos, iCount, FALSE, FALSE ); + } + break; + } + return 1; +} + +static HB_OPT_FUNC( hb_p_true ) +{ + switch( pFunc->pCode[ lPCodePos + 1 ] ) + { + case HB_P_POP: + case HB_P_NOT: + case HB_P_JUMPTRUENEAR: + case HB_P_JUMPTRUE: + case HB_P_JUMPTRUEFAR: + case HB_P_JUMPFALSENEAR: + case HB_P_JUMPFALSE: + case HB_P_JUMPFALSEFAR: + if( ! hb_compIsJump( cargo->HB_COMP_PARAM, pFunc, lPCodePos + 1 ) ) + { + int iCount = 1; + + switch( pFunc->pCode[ lPCodePos + 1 ] ) + { + case HB_P_JUMPTRUENEAR: + pFunc->pCode[ lPCodePos + 1 ] = HB_P_JUMPNEAR; + break; + case HB_P_JUMPTRUE: + pFunc->pCode[ lPCodePos + 1 ] = HB_P_JUMP; + break; + case HB_P_JUMPTRUEFAR: + pFunc->pCode[ lPCodePos + 1 ] = HB_P_JUMPFAR; + break; + case HB_P_NOT: + pFunc->pCode[ lPCodePos + 1 ] = HB_P_FALSE; + break; + case HB_P_POP: + iCount = 2; + break; + case HB_P_JUMPFALSENEAR: + iCount = 3; + break; + case HB_P_JUMPFALSE: + iCount = 4; + break; + case HB_P_JUMPFALSEFAR: + iCount = 5; + break; + } + hb_compNOOPfill( pFunc, lPCodePos, iCount, FALSE, FALSE ); + } + break; + } + return 1; +} + +static HB_OPT_FUNC( hb_p_duplicate ) +{ + switch( pFunc->pCode[ lPCodePos + 1 ] ) + { + case HB_P_JUMPTRUEFAR: + case HB_P_JUMPFALSEFAR: + if( pFunc->pCode[ lPCodePos + 5 ] == HB_P_POP ) + { + BYTE * pAddr = &pFunc->pCode[ lPCodePos + 2 ]; + LONG lOffset = HB_PCODE_MKINT24( pAddr ), lLastOffset = 0; + ULONG ulNewPos = lPCodePos + 1 + lOffset; + BOOL fNot = FALSE, fRepeat = TRUE; + + do + { + if( pFunc->pCode[ ulNewPos ] == HB_P_DUPLICATE ) + { + if( lOffset > 0 ) + hb_p_duplicate( pFunc, ulNewPos, cargo ); + } + + if( pFunc->pCode[ ulNewPos ] == HB_P_NOOP ) + { + ulNewPos++; + lOffset++; + } + else if( pFunc->pCode[ ulNewPos ] == HB_P_NOT ) + { + ulNewPos++; + lOffset++; + fNot = !fNot; + } + else if( pFunc->pCode[ ulNewPos ] == HB_P_DUPLICATE && + ( pFunc->pCode[ ulNewPos + 1 ] == HB_P_JUMPTRUEFAR || + pFunc->pCode[ ulNewPos + 1 ] == HB_P_JUMPFALSEFAR ) ) + { + LONG lJump; + if( pFunc->pCode[ ulNewPos + 1 ] != pFunc->pCode[ lPCodePos + 1 ] ) + fNot = !fNot; + lJump = fNot ? 4 : HB_PCODE_MKINT24( &pFunc->pCode[ ulNewPos + 2 ] ); + lOffset += lJump + 1; + ulNewPos = lPCodePos + 1 + lOffset; + fRepeat = lJump > 0; + } + else + fRepeat = FALSE; + + if( !fNot ) + lLastOffset = lOffset; + } + while( fRepeat ); + + if( ( pFunc->pCode[ ulNewPos ] == HB_P_JUMPTRUEFAR || + pFunc->pCode[ ulNewPos ] == HB_P_JUMPFALSEFAR ) && + !hb_compIsJump( cargo->HB_COMP_PARAM, pFunc, lPCodePos + 1 ) && + !hb_compIsJump( cargo->HB_COMP_PARAM, pFunc, lPCodePos + 5 ) ) + { + if( pFunc->pCode[ ulNewPos ] != pFunc->pCode[ lPCodePos + 1 ] ) + fNot = !fNot; + if( fNot ) + lOffset += 4; + else + lOffset += HB_PCODE_MKINT24( &pFunc->pCode[ ulNewPos + 1 ] ); + + HB_PUT_LE_UINT24( pAddr, lOffset ); + hb_compNOOPfill( pFunc, lPCodePos, 1, FALSE, FALSE ); + hb_compNOOPfill( pFunc, lPCodePos + 5, 1, FALSE, FALSE ); + } + else if( lLastOffset ) + { + HB_PUT_LE_UINT24( pAddr, lLastOffset ); + } + } + break; + } + return 1; +} + +static HB_OPT_FUNC( hb_p_not ) +{ + BYTE opcode; + + switch( pFunc->pCode[ lPCodePos + 1 ] ) + { + case HB_P_NOT: + opcode = HB_P_NOOP; + break; + case HB_P_JUMPTRUENEAR: + opcode = HB_P_JUMPFALSENEAR; + break; + case HB_P_JUMPTRUE: + opcode = HB_P_JUMPFALSE; + break; + case HB_P_JUMPTRUEFAR: + opcode = HB_P_JUMPFALSEFAR; + break; + case HB_P_JUMPFALSENEAR: + opcode = HB_P_JUMPTRUENEAR; + break; + case HB_P_JUMPFALSE: + opcode = HB_P_JUMPTRUE; + break; + case HB_P_JUMPFALSEFAR: + opcode = HB_P_JUMPTRUEFAR; + break; +/* This optimization will be enabled in the future in a little bit differ form */ +#if 0 + case HB_P_DUPLICATE: + if( ( pFunc->pCode[ lPCodePos + 2 ] == HB_P_JUMPTRUEFAR || + pFunc->pCode[ lPCodePos + 2 ] == HB_P_JUMPFALSEFAR ) && + pFunc->pCode[ lPCodePos + 6 ] == HB_P_POP ) + { + BYTE * pAddr = &pFunc->pCode[ lPCodePos + 3 ]; + LONG lOffset = HB_PCODE_MKINT24( pAddr ); + + if( lOffset > 0 ) + { + hb_p_duplicate( pFunc, lPCodePos + 1, cargo ); + lOffset = HB_PCODE_MKINT24( pAddr ); + } + + if( ( pFunc->pCode[ lPCodePos + 1 ] == HB_P_NOT || + ( pFunc->pCode[ lPCodePos + 1 ] == HB_P_DUPLICATE && + pFunc->pCode[ lPCodePos + lOffset + 2 ] == HB_P_NOT ) ) && + ! hb_compIsJump( cargo->HB_COMP_PARAM, pFunc, lPCodePos + 1 ) ) + { + hb_compNOOPfill( pFunc, lPCodePos, 1, FALSE, FALSE ); + if( pFunc->pCode[ lPCodePos + 2 ] == HB_P_JUMPTRUEFAR ) + pFunc->pCode[ lPCodePos + 2 ] = HB_P_JUMPFALSEFAR; + else + pFunc->pCode[ lPCodePos + 2 ] = HB_P_JUMPTRUEFAR; + if( pFunc->pCode[ lPCodePos + 1 ] == HB_P_DUPLICATE ) + { + ++lOffset; + HB_PUT_LE_UINT24( pAddr, lOffset ); + } + } + } + /* no break; */ +#endif + default: + opcode = HB_P_LAST_PCODE; + break; + } + + if( opcode < HB_P_LAST_PCODE && + ! hb_compIsJump( cargo->HB_COMP_PARAM, pFunc, lPCodePos + 1 ) ) + { + hb_compNOOPfill( pFunc, lPCodePos, 1, FALSE, FALSE ); + if( opcode == HB_P_NOOP ) + hb_compNOOPfill( pFunc, lPCodePos + 1, 1, FALSE, FALSE ); + else + pFunc->pCode[ lPCodePos + 1 ] = opcode; + } + return 1; +} + +static HB_OPT_FUNC( hb_p_jumpfar ) +{ + BYTE * pAddr = &pFunc->pCode[ lPCodePos + 1 ]; + LONG lOffset = HB_PCODE_MKINT24( pAddr ); + ULONG ulNewPos = lPCodePos + lOffset; + + HB_SYMBOL_UNUSED( cargo ); + + if( lOffset == 4 ) + { + hb_compNOOPfill( pFunc, lPCodePos, 4, FALSE, FALSE ); + } + else switch( pFunc->pCode[ ulNewPos ] ) + { + case HB_P_JUMPFAR: + lOffset += HB_PCODE_MKINT24( &pFunc->pCode[ ulNewPos + 1 ] ); + HB_PUT_LE_UINT24( pAddr, lOffset ); + break; + + case HB_P_JUMPFALSEFAR: + ulNewPos += HB_PCODE_MKINT24( &pFunc->pCode[ ulNewPos + 1 ] ); + if( ulNewPos == lPCodePos + 4 ) + { + pFunc->pCode[ lPCodePos ] = HB_P_JUMPTRUEFAR; + HB_PUT_LE_UINT24( pAddr, lOffset + 4 ); + } + break; + + case HB_P_JUMPTRUEFAR: + ulNewPos += HB_PCODE_MKINT24( &pFunc->pCode[ ulNewPos + 1 ] ); + if( ulNewPos == lPCodePos + 4 ) + { + pFunc->pCode[ lPCodePos ] = HB_P_JUMPFALSEFAR; + HB_PUT_LE_UINT24( pAddr, lOffset + 4 ); + } + break; + } + return 4; +} + +static HB_OPT_FUNC( hb_p_jumpfalsefar ) +{ + BYTE * pAddr = &pFunc->pCode[ lPCodePos + 1 ]; + LONG lOffset = HB_PCODE_MKINT24( pAddr ); + ULONG ulNewPos = lPCodePos + lOffset; + + HB_SYMBOL_UNUSED( cargo ); + + if( lOffset == 8 && pFunc->pCode[ lPCodePos + 4 ] == HB_P_JUMPFAR ) + { + hb_compNOOPfill( pFunc, lPCodePos, 4, FALSE, FALSE ); + pFunc->pCode[ lPCodePos + 4 ] = HB_P_JUMPTRUEFAR; + } + else if( pFunc->pCode[ ulNewPos ] == HB_P_JUMPFAR ) + { + lOffset += HB_PCODE_MKINT24( &pFunc->pCode[ ulNewPos + 1 ] ); + HB_PUT_LE_UINT24( pAddr, lOffset ); + } + return 4; +} + +static HB_OPT_FUNC( hb_p_jumptruefar ) +{ + BYTE * pAddr = &pFunc->pCode[ lPCodePos + 1 ]; + LONG lOffset = HB_PCODE_MKINT24( pAddr ); + ULONG ulNewPos = lPCodePos + lOffset; + + HB_SYMBOL_UNUSED( cargo ); + + if( lOffset == 8 && pFunc->pCode[ lPCodePos + 4 ] == HB_P_JUMPFAR ) + { + hb_compNOOPfill( pFunc, lPCodePos, 4, FALSE, FALSE ); + pFunc->pCode[ lPCodePos + 4 ] = HB_P_JUMPFALSEFAR; + } + else if( pFunc->pCode[ ulNewPos ] == HB_P_JUMPFAR ) + { + lOffset += HB_PCODE_MKINT24( &pFunc->pCode[ ulNewPos + 1 ] ); + HB_PUT_LE_UINT24( pAddr, lOffset ); + } + return 4; +} + +/* NOTE: The order of functions have to match the order of opcodes mnemonics + */ +static HB_OPT_FUNC_PTR s_opt_table[] = +{ + NULL, /* HB_P_AND, */ + NULL, /* HB_P_ARRAYPUSH, */ + NULL, /* HB_P_ARRAYPOP, */ + NULL, /* HB_P_ARRAYDIM, */ + NULL, /* HB_P_ARRAYGEN, */ + NULL, /* HB_P_EQUAL, */ + NULL, /* HB_P_ENDBLOCK, */ + NULL, /* HB_P_ENDPROC, */ + NULL, /* HB_P_EXACTLYEQUAL, */ + hb_p_false, /* HB_P_FALSE, */ + NULL, /* HB_P_FORTEST, */ + NULL, /* HB_P_FUNCTION, */ + NULL, /* HB_P_FUNCTIONSHORT, */ + NULL, /* HB_P_FRAME, */ + NULL, /* HB_P_FUNCPTR, */ + NULL, /* HB_P_GREATER, */ + NULL, /* HB_P_GREATEREQUAL, */ + NULL, /* HB_P_DEC, */ + NULL, /* HB_P_DIVIDE, */ + NULL, /* HB_P_DO, */ + NULL, /* HB_P_DOSHORT, */ + hb_p_duplicate, /* HB_P_DUPLICATE, */ + NULL, /* HB_P_DUPLTWO, */ + NULL, /* HB_P_INC, */ + NULL, /* HB_P_INSTRING, */ + NULL, /* HB_P_JUMPNEAR, */ + NULL, /* HB_P_JUMP, */ + hb_p_jumpfar, /* HB_P_JUMPFAR, */ + NULL, /* HB_P_JUMPFALSENEAR, */ + NULL, /* HB_P_JUMPFALSE, */ + hb_p_jumpfalsefar, /* HB_P_JUMPFALSEFAR, */ + NULL, /* HB_P_JUMPTRUENEAR, */ + NULL, /* HB_P_JUMPTRUE, */ + hb_p_jumptruefar, /* HB_P_JUMPTRUEFAR, */ + NULL, /* HB_P_LESSEQUAL, */ + NULL, /* HB_P_LESS, */ + NULL, /* HB_P_LINE, */ + NULL, /* HB_P_LOCALNAME, */ + NULL, /* HB_P_MACROPOP, */ + NULL, /* HB_P_MACROPOPALIASED, */ + NULL, /* HB_P_MACROPUSH, */ + NULL, /* HB_P_MACROARRAYGEN, */ + NULL, /* HB_P_MACROPUSHLIST, */ + NULL, /* HB_P_MACROPUSHINDEX, */ + NULL, /* HB_P_MACROPUSHPARE, */ + NULL, /* HB_P_MACROPUSHALIASED, */ + NULL, /* HB_P_MACROSYMBOL, */ + NULL, /* HB_P_MACROTEXT, */ + NULL, /* HB_P_MESSAGE, */ + NULL, /* HB_P_MINUS, */ + NULL, /* HB_P_MODULUS, */ + NULL, /* HB_P_MODULENAME, */ + /* start: pcodes generated by macro compiler */ + NULL, /* HB_P_MMESSAGE, */ + NULL, /* HB_P_MPOPALIASEDFIELD, */ + NULL, /* HB_P_MPOPALIASEDVAR, */ + NULL, /* HB_P_MPOPFIELD, */ + NULL, /* HB_P_MPOPMEMVAR, */ + NULL, /* HB_P_MPUSHALIASEDFIELD, */ + NULL, /* HB_P_MPUSHALIASEDVAR, */ + NULL, /* HB_P_MPUSHBLOCK, */ + NULL, /* HB_P_MPUSHFIELD, */ + NULL, /* HB_P_MPUSHMEMVAR, */ + NULL, /* HB_P_MPUSHMEMVARREF, */ + NULL, /* HB_P_MPUSHSYM, */ + NULL, /* HB_P_MPUSHVARIABLE, */ + /* end: */ + NULL, /* HB_P_MULT, */ + NULL, /* HB_P_NEGATE, */ + NULL, /* HB_P_NOOP, */ + hb_p_not, /* HB_P_NOT, */ + NULL, /* HB_P_NOTEQUAL, */ + NULL, /* HB_P_OR, */ + NULL, /* HB_P_PARAMETER, */ + NULL, /* HB_P_PLUS, */ + NULL, /* HB_P_POP, */ + NULL, /* HB_P_POPALIAS, */ + NULL, /* HB_P_POPALIASEDFIELD, */ + NULL, /* HB_P_POPALIASEDFIELDNEAR, */ + NULL, /* HB_P_POPALIASEDVAR, */ + NULL, /* HB_P_POPFIELD, */ + hb_p_poplocal, /* HB_P_POPLOCAL, */ + NULL, /* HB_P_POPLOCALNEAR, */ + NULL, /* HB_P_POPMEMVAR, */ + NULL, /* HB_P_POPSTATIC, */ + NULL, /* HB_P_POPVARIABLE, */ + NULL, /* HB_P_POWER, */ + NULL, /* HB_P_PUSHALIAS, */ + NULL, /* HB_P_PUSHALIASEDFIELD, */ + NULL, /* HB_P_PUSHALIASEDFIELDNEAR, */ + NULL, /* HB_P_PUSHALIASEDVAR, */ + NULL, /* HB_P_PUSHBLOCK, */ + NULL, /* HB_P_PUSHBLOCKSHORT, */ + NULL, /* HB_P_PUSHFIELD, */ + NULL, /* HB_P_PUSHBYTE, */ + NULL, /* HB_P_PUSHINT, */ + hb_p_pushlocal, /* HB_P_PUSHLOCAL, */ + NULL, /* HB_P_PUSHLOCALNEAR, */ + NULL, /* HB_P_PUSHLOCALREF, */ + NULL, /* HB_P_PUSHLONG, */ + NULL, /* HB_P_PUSHMEMVAR, */ + NULL, /* HB_P_PUSHMEMVARREF, */ + NULL, /* HB_P_PUSHNIL, */ + NULL, /* HB_P_PUSHDOUBLE, */ + NULL, /* HB_P_PUSHSELF, */ + NULL, /* HB_P_PUSHSTATIC, */ + NULL, /* HB_P_PUSHSTATICREF, */ + NULL, /* HB_P_PUSHSTR, */ + NULL, /* HB_P_PUSHSTRSHORT, */ + NULL, /* HB_P_PUSHSYM, */ + NULL, /* HB_P_PUSHSYMNEAR, */ + NULL, /* HB_P_PUSHVARIABLE, */ + NULL, /* HB_P_RETVALUE, */ + NULL, /* HB_P_SEND, */ + NULL, /* HB_P_SENDSHORT, */ + NULL, /* HB_P_SEQBEGIN, */ + NULL, /* HB_P_SEQEND, */ + NULL, /* HB_P_SEQRECOVER, */ + NULL, /* HB_P_SFRAME, */ + NULL, /* HB_P_STATICS, */ + NULL, /* HB_P_STATICNAME, */ + NULL, /* HB_P_SWAPALIAS, */ + hb_p_true, /* HB_P_TRUE, */ + NULL, /* HB_P_ZERO, */ + NULL, /* HB_P_ONE, */ + NULL, /* HB_P_MACROFUNC, */ + NULL, /* HB_P_MACRODO, */ + NULL, /* HB_P_MPUSHSTR, */ + NULL, /* HB_P_LOCALNEARADDINT, */ + NULL, /* HB_P_MACROPUSHREF */ + NULL, /* HB_P_PUSHLONGLONG */ + NULL, /* HB_P_ENUMSTART */ + NULL, /* HB_P_ENUMNEXT */ + NULL, /* HB_P_ENUMPREV */ + NULL, /* HB_P_ENUMEND */ + NULL, /* HB_P_SWITCH */ + NULL, /* HB_P_PUSHDATE */ + NULL, /* HB_P_PLUSEQPOP */ + NULL, /* HB_P_MINUSEQPOP */ + NULL, /* HB_P_MULTEQPOP */ + NULL, /* HB_P_DIVEQPOP */ + NULL, /* HB_P_PLUSEQ */ + NULL, /* HB_P_MINUSEQ */ + NULL, /* HB_P_MULTEQ */ + NULL, /* HB_P_DIVEQ */ + NULL, /* HB_P_WITHOBJECTSTART */ + NULL, /* HB_P_WITHOBJECTMESSAGE */ + NULL, /* HB_P_WITHOBJECTEND */ + NULL, /* HB_P_MACROSEND */ + NULL, /* HB_P_PUSHOVARREF */ + NULL, /* HB_P_ARRAYPUSHREF */ + NULL, /* HB_P_VFRAME */ + NULL, /* HB_P_LARGEFRAME */ + NULL, /* HB_P_LARGEVFRAME */ + NULL, /* HB_P_PUSHSTRHIDDEN */ + hb_p_localaddint, /* HB_P_LOCALADDINT */ + NULL, /* HB_P_MODEQPOP */ + NULL, /* HB_P_EXPEQPOP */ + NULL, /* HB_P_MODEQ */ + NULL, /* HB_P_EXPEQ */ + NULL, /* HB_P_DUPLUNREF */ + NULL, /* HB_P_MPUSHBLOCKLARGE */ + NULL, /* HB_P_MPUSHSTRLARGE */ + NULL, /* HB_P_PUSHBLOCKLARGE */ + NULL, /* HB_P_PUSHSTRLARGE */ + NULL, /* HB_P_SWAP */ + NULL, /* HB_P_PUSHVPARAMS */ + NULL, /* HB_P_PUSHUNREF */ + NULL, /* HB_P_SEQALWAYS */ + NULL, /* HB_P_ALWAYSBEGIN */ + NULL /* HB_P_ALWAYSEND */ +}; + +void hb_compOptimizePCode( HB_COMP_DECL, PFUNCTION pFunc ) +{ + HB_OPT_INFO opt_info; + + opt_info.HB_COMP_PARAM = HB_COMP_PARAM; + + assert( HB_P_LAST_PCODE == sizeof( s_opt_table ) / sizeof( HB_OPT_FUNC_PTR ) ); + + hb_compPCodeEval( pFunc, ( HB_PCODE_FUNC_PTR * ) s_opt_table, ( void * ) &opt_info ); +}