From 5f4ae3c7b50b99aba668b0fe0a8b5cdd7345e1f1 Mon Sep 17 00:00:00 2001 From: miks1965 Date: Sun, 14 Jun 2015 18:10:05 +0300 Subject: [PATCH] =?UTF-8?q?=D0=BA=D0=BE=D0=B5=20=D0=BA=D0=B0=D0=BA=D0=B8?= =?UTF-8?q?=D0=B5=20=D0=B8=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5=D0=BD=D0=B8=D1=8F?= =?UTF-8?q?=20=D0=BF=D0=BE=20=D0=BC=D0=B5=D0=BB=D0=BE=D1=87=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Configuration/GlobalAssemblyInfo.cs | 2 +- Configuration/Version.defs | 2 +- .../PascalABCParserNewSaushkin/ABCPascal.cs | 5 +- .../PascalABCParserNewSaushkin/ABCPascal.lex | 3 + .../PascalABCParserNewSaushkin/ABCPascal.y | 13 +- .../ABCPascalYacc.cs | 3990 +++++++++-------- Parsers/PascalABCParserNewSaushkin/PABC.tags | 1 - Parsers/PascalABCParserNewSaushkin/PABC.ymc | 8 +- .../generateParserScanner.bat | 2 +- ReleaseGenerators/PascalABCNET_version.nsh | 2 +- SyntaxTree/tree/AbstractVisitor.cs | 4 + SyntaxTree/tree/HierarchyVisitor.cs | 15 + SyntaxTree/tree/SyntaxTreeStreamReader.cs | 14 + SyntaxTree/tree/SyntaxTreeStreamWriter.cs | 21 + SyntaxTree/tree/Tree.cs | 138 +- SyntaxTree/tree/Visitor.cs | 6 + SyntaxTree/tree/tree.nin | Bin 188531 -> 190055 bytes .../TreeConversion/syntax_tree_visitor.cs | 8 +- .../NodesGeneratorNew/NodesGenerator.v12.suo | Bin 90112 -> 93184 bytes bin/Highlighting/PascalABCNET.xshd | 1 + bin/Lib/PABCRtl.dll | Bin 479232 -> 479232 bytes 21 files changed, 2223 insertions(+), 2012 deletions(-) diff --git a/Configuration/GlobalAssemblyInfo.cs b/Configuration/GlobalAssemblyInfo.cs index d6c0d6503..236fb8380 100644 --- a/Configuration/GlobalAssemblyInfo.cs +++ b/Configuration/GlobalAssemblyInfo.cs @@ -15,7 +15,7 @@ internal static class RevisionClass public const string Major = "2"; public const string Minor = "2"; public const string Build = "0"; - public const string Revision = "961"; + public const string Revision = "965"; public const string MainVersion = Major + "." + Minor; public const string FullVersion = Major + "." + Minor + "." + Build + "." + Revision; diff --git a/Configuration/Version.defs b/Configuration/Version.defs index 92b78ff54..998cccb48 100644 --- a/Configuration/Version.defs +++ b/Configuration/Version.defs @@ -1,4 +1,4 @@ %MINOR%=2 -%REVISION%=961 +%REVISION%=965 %MAJOR%=2 %COREVERSION%=0 diff --git a/Parsers/PascalABCParserNewSaushkin/ABCPascal.cs b/Parsers/PascalABCParserNewSaushkin/ABCPascal.cs index 8d7ea4cff..73f4f6114 100644 --- a/Parsers/PascalABCParserNewSaushkin/ABCPascal.cs +++ b/Parsers/PascalABCParserNewSaushkin/ABCPascal.cs @@ -2,7 +2,7 @@ // This CSharp output file generated by Gardens Point LEX // Version: 1.1.3.301 // Machine: SSM -// DateTime: 07.06.2015 8:49:49 +// DateTime: 14.06.2015 0:11:32 // UserName: ????????? // GPLEX input file // GPLEX frame file @@ -957,6 +957,8 @@ string cur_yytext = yytext; case (int)Tokens.tkUnit: case (int)Tokens.tkLibrary: case (int)Tokens.tkExternal: + case (int)Tokens.tkYield: + case (int)Tokens.tkSequence: yylval = new Union(); yylval.ti = new token_info(cur_yytext,currentLexLocation); break; @@ -1452,6 +1454,7 @@ public static class Keywords keywords.Add("new",(int)Tokens.tkNew); keywords.Add("auto",(int)Tokens.tkAuto); keywords.Add("sequence",(int)Tokens.tkSequence); + keywords.Add("yield",(int)Tokens.tkYield); } public static int KeywordOrIDToken(string s) diff --git a/Parsers/PascalABCParserNewSaushkin/ABCPascal.lex b/Parsers/PascalABCParserNewSaushkin/ABCPascal.lex index a38309add..27ee2a09f 100644 --- a/Parsers/PascalABCParserNewSaushkin/ABCPascal.lex +++ b/Parsers/PascalABCParserNewSaushkin/ABCPascal.lex @@ -344,6 +344,8 @@ ALPHABET [^ a-zA-Z_0-9\r\n\t\'$#&,:.;@\+\-\*/=<>\^()\[\]\x01] case (int)Tokens.tkUnit: case (int)Tokens.tkLibrary: case (int)Tokens.tkExternal: + case (int)Tokens.tkYield: + case (int)Tokens.tkSequence: yylval = new Union(); yylval.ti = new token_info(cur_yytext,currentLexLocation); break; @@ -605,6 +607,7 @@ public static class Keywords keywords.Add("new",(int)Tokens.tkNew); keywords.Add("auto",(int)Tokens.tkAuto); keywords.Add("sequence",(int)Tokens.tkSequence); + keywords.Add("yield",(int)Tokens.tkYield); } public static int KeywordOrIDToken(string s) diff --git a/Parsers/PascalABCParserNewSaushkin/ABCPascal.y b/Parsers/PascalABCParserNewSaushkin/ABCPascal.y index 56b263758..33d84b5ce 100644 --- a/Parsers/PascalABCParserNewSaushkin/ABCPascal.y +++ b/Parsers/PascalABCParserNewSaushkin/ABCPascal.y @@ -32,7 +32,7 @@ %token tkSizeOf tkTypeOf tkWhere tkArray tkCase tkClass tkAuto tkConst tkConstructor tkDestructor tkElse tkExcept tkFile tkFor tkForeach tkFunction %token tkIf tkImplementation tkInherited tkInterface tkProcedure tkOperator tkProperty tkRaise tkRecord tkSet tkType tkThen tkUses tkVar tkWhile tkWith tkNil %token tkGoto tkOf tkLabel tkLock tkProgram tkEvent tkDefault tkTemplate tkPacked tkExports tkResourceString tkThreadvar tkSealed tkPartial tkTo tkDownto -%token tkCycle tkSequence +%token tkCycle tkSequence tkYield %token tkNew %token tkOn %token tkName tkPrivate tkProtected tkPublic tkInternal tkRead tkWrite @@ -81,7 +81,7 @@ %type for_cycle_type %type format_expr %type foreach_stmt -%type for_stmt +%type for_stmt yield_stmt %type fp_list fp_sect_list %type file_type sequence_type %type var_address @@ -2227,8 +2227,17 @@ unlabelled_stmt { $$ = $1; } | my_stmt { $$ = $1; } + | yield_stmt + { $$ = $1; } ; +yield_stmt + : tkYield expr_l1 + { + $$ = new yield_node($2,@$); + } + ; + my_stmt : tkCycle expr unlabelled_stmt { diff --git a/Parsers/PascalABCParserNewSaushkin/ABCPascalYacc.cs b/Parsers/PascalABCParserNewSaushkin/ABCPascalYacc.cs index 046a036b4..ee0353302 100644 --- a/Parsers/PascalABCParserNewSaushkin/ABCPascalYacc.cs +++ b/Parsers/PascalABCParserNewSaushkin/ABCPascalYacc.cs @@ -2,7 +2,7 @@ // GPPG version 1.3.6 // Machine: SSM -// DateTime: 07.06.2015 8:49:50 +// DateTime: 14.06.2015 0:11:33 // UserName: ????????? // Input file @@ -32,20 +32,20 @@ public enum Tokens { tkUses=43,tkVar=44,tkWhile=45,tkWith=46,tkNil=47,tkGoto=48, tkOf=49,tkLabel=50,tkLock=51,tkProgram=52,tkEvent=53,tkDefault=54, tkTemplate=55,tkPacked=56,tkExports=57,tkResourceString=58,tkThreadvar=59,tkSealed=60, - tkPartial=61,tkTo=62,tkDownto=63,tkCycle=64,tkSequence=65,tkNew=66, - tkOn=67,tkName=68,tkPrivate=69,tkProtected=70,tkPublic=71,tkInternal=72, - tkRead=73,tkWrite=74,tkParseModeExpression=75,tkParseModeStatement=76,tkParseModeType=77,tkBegin=78, - tkEnd=79,tkAsmBody=80,tkILCode=81,tkError=82,INVISIBLE=83,tkRepeat=84, - tkUntil=85,tkDo=86,tkComma=87,tkFinally=88,tkTry=89,tkInitialization=90, - tkFinalization=91,tkUnit=92,tkLibrary=93,tkExternal=94,tkParams=95,tkAssign=96, - tkPlusEqual=97,tkMinusEqual=98,tkMultEqual=99,tkDivEqual=100,tkMinus=101,tkPlus=102, - tkSlash=103,tkStar=104,tkEqual=105,tkGreater=106,tkGreaterEqual=107,tkLower=108, - tkLowerEqual=109,tkNotEqual=110,tkCSharpStyleOr=111,tkArrow=112,tkOr=113,tkXor=114, - tkAnd=115,tkDiv=116,tkMod=117,tkShl=118,tkShr=119,tkNot=120, - tkAs=121,tkIn=122,tkIs=123,tkImplicit=124,tkExplicit=125,tkAddressOf=126, - tkDeref=127,tkIdentifier=128,tkStringLiteral=129,tkAsciiChar=130,tkAbstract=131,tkForward=132, - tkOverload=133,tkReintroduce=134,tkOverride=135,tkVirtual=136,tkInteger=137,tkFloat=138, - tkHex=139}; + tkPartial=61,tkTo=62,tkDownto=63,tkCycle=64,tkSequence=65,tkYield=66, + tkNew=67,tkOn=68,tkName=69,tkPrivate=70,tkProtected=71,tkPublic=72, + tkInternal=73,tkRead=74,tkWrite=75,tkParseModeExpression=76,tkParseModeStatement=77,tkParseModeType=78, + tkBegin=79,tkEnd=80,tkAsmBody=81,tkILCode=82,tkError=83,INVISIBLE=84, + tkRepeat=85,tkUntil=86,tkDo=87,tkComma=88,tkFinally=89,tkTry=90, + tkInitialization=91,tkFinalization=92,tkUnit=93,tkLibrary=94,tkExternal=95,tkParams=96, + tkAssign=97,tkPlusEqual=98,tkMinusEqual=99,tkMultEqual=100,tkDivEqual=101,tkMinus=102, + tkPlus=103,tkSlash=104,tkStar=105,tkEqual=106,tkGreater=107,tkGreaterEqual=108, + tkLower=109,tkLowerEqual=110,tkNotEqual=111,tkCSharpStyleOr=112,tkArrow=113,tkOr=114, + tkXor=115,tkAnd=116,tkDiv=117,tkMod=118,tkShl=119,tkShr=120, + tkNot=121,tkAs=122,tkIn=123,tkIs=124,tkImplicit=125,tkExplicit=126, + tkAddressOf=127,tkDeref=128,tkIdentifier=129,tkStringLiteral=130,tkAsciiChar=131,tkAbstract=132, + tkForward=133,tkOverload=134,tkReintroduce=135,tkOverride=136,tkVirtual=137,tkInteger=138, + tkFloat=139,tkHex=140}; // Abstract base class for GPLEX scanners public abstract class ScanBase : AbstractScanner { @@ -73,8 +73,8 @@ public partial class GPPGParser: ShiftReduceParser aliasses; #pragma warning restore 649 - private static Rule[] rules = new Rule[766]; - private static State[] states = new State[1233]; + private static Rule[] rules = new Rule[768]; + private static State[] states = new State[1236]; private static string[] nonTerms = new string[] { "parse_goal", "unit_key_word", "assignment", "optional_array_initializer", "attribute_declarations", "ot_visibility_specifier", "one_attribute", "attribute_variable", @@ -99,41 +99,42 @@ public partial class GPPGParser: ShiftReduceParser my_stmt { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 456: // my_stmt -> tkCycle, expr, unlabelled_stmt + case 456: // unlabelled_stmt -> yield_stmt +{ CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } + break; + case 457: // yield_stmt -> tkYield, expr_l1 +{ + CurrentSemanticValue.stn = new yield_node(ValueStack[ValueStack.Depth-1].ex,CurrentLocationSpan); + } + break; + case 458: // my_stmt -> tkCycle, expr, unlabelled_stmt { CurrentSemanticValue.stn = parsertools.MyStmt(ValueStack[ValueStack.Depth-2].ex,ValueStack[ValueStack.Depth-1].stn as statement); } break; - case 457: // var_stmt -> tkVar, var_decl_part + case 459: // var_stmt -> tkVar, var_decl_part { CurrentSemanticValue.stn = new var_statement(ValueStack[ValueStack.Depth-1].stn as var_def_statement, CurrentLocationSpan); } break; - case 458: // assignment -> var_reference, assign_operator, expr + case 460: // assignment -> var_reference, assign_operator, expr { CurrentSemanticValue.stn = new assign(ValueStack[ValueStack.Depth-3].ex as addressed_value, ValueStack[ValueStack.Depth-1].ex, ValueStack[ValueStack.Depth-2].op.type, CurrentLocationSpan); } break; - case 459: // proc_call -> var_reference + case 461: // proc_call -> var_reference { CurrentSemanticValue.stn = new procedure_call(ValueStack[ValueStack.Depth-1].ex as addressed_value, CurrentLocationSpan); } break; - case 460: // goto_stmt -> tkGoto, label_name + case 462: // goto_stmt -> tkGoto, label_name { CurrentSemanticValue.stn = new goto_statement(ValueStack[ValueStack.Depth-1].id, CurrentLocationSpan); } break; - case 461: // compound_stmt -> tkBegin, stmt_list, tkEnd + case 463: // compound_stmt -> tkBegin, stmt_list, tkEnd { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-2].stn; (CurrentSemanticValue.stn as statement_list).left_logical_bracket = ValueStack[ValueStack.Depth-3].ti; @@ -4146,73 +4160,73 @@ public partial class GPPGParser: ShiftReduceParser stmt + case 464: // stmt_list -> stmt { CurrentSemanticValue.stn = new statement_list(ValueStack[ValueStack.Depth-1].stn as statement, LocationStack[LocationStack.Depth-1]); } break; - case 463: // stmt_list -> stmt_list, tkSemiColon, stmt + case 465: // stmt_list -> stmt_list, tkSemiColon, stmt { CurrentSemanticValue.stn = (ValueStack[ValueStack.Depth-3].stn as statement_list).Add(ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); } break; - case 464: // if_stmt -> tkIf, expr, tkThen, stmt + case 466: // if_stmt -> tkIf, expr, tkThen, stmt { CurrentSemanticValue.stn = new if_node(ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-1].stn as statement, null, CurrentLocationSpan); } break; - case 465: // if_stmt -> tkIf, expr, tkThen, stmt, tkElse, stmt + case 467: // if_stmt -> tkIf, expr, tkThen, stmt, tkElse, stmt { CurrentSemanticValue.stn = new if_node(ValueStack[ValueStack.Depth-5].ex, ValueStack[ValueStack.Depth-3].stn as statement, ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); } break; - case 466: // case_stmt -> tkCase, expr, tkOf, case_list, else_case, tkEnd + case 468: // case_stmt -> tkCase, expr, tkOf, case_list, else_case, tkEnd { CurrentSemanticValue.stn = new case_node(ValueStack[ValueStack.Depth-5].ex, ValueStack[ValueStack.Depth-3].stn as case_variants, ValueStack[ValueStack.Depth-2].stn as statement, CurrentLocationSpan); } break; - case 467: // case_list -> case_item + case 469: // case_list -> case_item { if (ValueStack[ValueStack.Depth-1].stn is empty_statement) CurrentSemanticValue.stn = NewCaseItem(ValueStack[ValueStack.Depth-1].stn, null); else CurrentSemanticValue.stn = NewCaseItem(ValueStack[ValueStack.Depth-1].stn, CurrentLocationSpan); } break; - case 468: // case_list -> case_list, tkSemiColon, case_item + case 470: // case_list -> case_list, tkSemiColon, case_item { CurrentSemanticValue.stn = AddCaseItem(ValueStack[ValueStack.Depth-3].stn as case_variants, ValueStack[ValueStack.Depth-1].stn, CurrentLocationSpan); } break; - case 469: // case_item -> /* empty */ + case 471: // case_item -> /* empty */ { CurrentSemanticValue.stn = new empty_statement(); } break; - case 470: // case_item -> case_label_list, tkColon, stmt + case 472: // case_item -> case_label_list, tkColon, stmt { CurrentSemanticValue.stn = new case_variant(ValueStack[ValueStack.Depth-3].stn as expression_list, ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); } break; - case 471: // case_label_list -> case_label + case 473: // case_label_list -> case_label { CurrentSemanticValue.stn = new expression_list(ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); } break; - case 472: // case_label_list -> case_label_list, tkComma, case_label + case 474: // case_label_list -> case_label_list, tkComma, case_label { CurrentSemanticValue.stn = (ValueStack[ValueStack.Depth-3].stn as expression_list).Add(ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); } break; - case 473: // case_label -> const_elem + case 475: // case_label -> const_elem { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 474: // else_case -> /* empty */ + case 476: // else_case -> /* empty */ { CurrentSemanticValue.stn = null;} break; - case 475: // else_case -> tkElse, stmt_list + case 477: // else_case -> tkElse, stmt_list { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 476: // repeat_stmt -> tkRepeat, stmt_list, tkUntil, expr + case 478: // repeat_stmt -> tkRepeat, stmt_list, tkUntil, expr { CurrentSemanticValue.stn = new repeat_node(ValueStack[ValueStack.Depth-3].stn as statement_list, ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); (ValueStack[ValueStack.Depth-3].stn as statement_list).left_logical_bracket = ValueStack[ValueStack.Depth-4].ti; @@ -4220,89 +4234,89 @@ public partial class GPPGParser: ShiftReduceParser tkWhile, expr, optional_tk_do, stmt + case 479: // while_stmt -> tkWhile, expr, optional_tk_do, stmt { CurrentSemanticValue.stn = NewWhileStmt(ValueStack[ValueStack.Depth-4].ti, ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-2].ti, ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); } break; - case 478: // optional_tk_do -> tkDo + case 480: // optional_tk_do -> tkDo { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 479: // optional_tk_do -> /* empty */ + case 481: // optional_tk_do -> /* empty */ { CurrentSemanticValue.ti = null; } break; - case 480: // lock_stmt -> tkLock, expr, tkDo, stmt + case 482: // lock_stmt -> tkLock, expr, tkDo, stmt { CurrentSemanticValue.stn = new lock_stmt(ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); } break; - case 481: // foreach_stmt -> tkForeach, identifier, foreach_stmt_ident_dype_opt, tkIn, expr, + case 483: // foreach_stmt -> tkForeach, identifier, foreach_stmt_ident_dype_opt, tkIn, expr, // tkDo, stmt { CurrentSemanticValue.stn = new foreach_stmt(ValueStack[ValueStack.Depth-6].id, ValueStack[ValueStack.Depth-5].td, ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); } break; - case 482: // foreach_stmt -> tkForeach, tkVar, identifier, tkColon, type_ref, tkIn, expr, + case 484: // foreach_stmt -> tkForeach, tkVar, identifier, tkColon, type_ref, tkIn, expr, // tkDo, stmt { CurrentSemanticValue.stn = new foreach_stmt(ValueStack[ValueStack.Depth-7].id, ValueStack[ValueStack.Depth-5].td, ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); } break; - case 483: // foreach_stmt -> tkForeach, tkVar, identifier, tkIn, expr, tkDo, stmt + case 485: // foreach_stmt -> tkForeach, tkVar, identifier, tkIn, expr, tkDo, stmt { CurrentSemanticValue.stn = new foreach_stmt(ValueStack[ValueStack.Depth-5].id, new no_type_foreach(), ValueStack[ValueStack.Depth-3].ex, (statement)ValueStack[ValueStack.Depth-1].stn, CurrentLocationSpan); } break; - case 484: // foreach_stmt_ident_dype_opt -> tkColon, type_ref + case 486: // foreach_stmt_ident_dype_opt -> tkColon, type_ref { CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } break; - case 486: // for_stmt -> tkFor, optional_var, identifier, for_stmt_decl_or_assign, expr, + case 488: // for_stmt -> tkFor, optional_var, identifier, for_stmt_decl_or_assign, expr, // for_cycle_type, expr, optional_tk_do, stmt { CurrentSemanticValue.stn = NewForStmt(ValueStack[ValueStack.Depth-9].ti, (bool)ValueStack[ValueStack.Depth-8].ob, ValueStack[ValueStack.Depth-7].id, ValueStack[ValueStack.Depth-6].td, ValueStack[ValueStack.Depth-5].ex, (for_cycle_type)ValueStack[ValueStack.Depth-4].ob, ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-2].ti, ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); } break; - case 487: // optional_var -> tkVar + case 489: // optional_var -> tkVar { CurrentSemanticValue.ob = true; } break; - case 488: // optional_var -> /* empty */ + case 490: // optional_var -> /* empty */ { CurrentSemanticValue.ob = false; } break; - case 490: // for_stmt_decl_or_assign -> tkColon, simple_type_identifier, tkAssign + case 492: // for_stmt_decl_or_assign -> tkColon, simple_type_identifier, tkAssign { CurrentSemanticValue.td = ValueStack[ValueStack.Depth-2].td; } break; - case 491: // for_cycle_type -> tkTo + case 493: // for_cycle_type -> tkTo { CurrentSemanticValue.ob = for_cycle_type.to; } break; - case 492: // for_cycle_type -> tkDownto + case 494: // for_cycle_type -> tkDownto { CurrentSemanticValue.ob = for_cycle_type.downto; } break; - case 493: // with_stmt -> tkWith, expr_list, tkDo, stmt + case 495: // with_stmt -> tkWith, expr_list, tkDo, stmt { CurrentSemanticValue.stn = new with_statement(ValueStack[ValueStack.Depth-1].stn as statement, ValueStack[ValueStack.Depth-3].stn as expression_list, CurrentLocationSpan); } break; - case 494: // inherited_message -> tkInherited + case 496: // inherited_message -> tkInherited { CurrentSemanticValue.stn = new inherited_message(); CurrentSemanticValue.stn.source_context = CurrentLocationSpan; } break; - case 495: // try_stmt -> tkTry, stmt_list, try_handler + case 497: // try_stmt -> tkTry, stmt_list, try_handler { CurrentSemanticValue.stn = new try_stmt(ValueStack[ValueStack.Depth-2].stn as statement_list, ValueStack[ValueStack.Depth-1].stn as try_handler, CurrentLocationSpan); (ValueStack[ValueStack.Depth-2].stn as statement_list).left_logical_bracket = ValueStack[ValueStack.Depth-3].ti; ValueStack[ValueStack.Depth-2].stn.source_context = LocationStack[LocationStack.Depth-3].Merge(LocationStack[LocationStack.Depth-2]); } break; - case 496: // try_handler -> tkFinally, stmt_list, tkEnd + case 498: // try_handler -> tkFinally, stmt_list, tkEnd { CurrentSemanticValue.stn = new try_handler_finally(ValueStack[ValueStack.Depth-2].stn as statement_list, CurrentLocationSpan); (ValueStack[ValueStack.Depth-2].stn as statement_list).left_logical_bracket = ValueStack[ValueStack.Depth-3].ti; (ValueStack[ValueStack.Depth-2].stn as statement_list).right_logical_bracket = ValueStack[ValueStack.Depth-1].ti; } break; - case 497: // try_handler -> tkExcept, exception_block, tkEnd + case 499: // try_handler -> tkExcept, exception_block, tkEnd { CurrentSemanticValue.stn = new try_handler_except((exception_block)ValueStack[ValueStack.Depth-2].stn, CurrentLocationSpan); if ((ValueStack[ValueStack.Depth-2].stn as exception_block).stmt_list != null) @@ -4312,151 +4326,151 @@ public partial class GPPGParser: ShiftReduceParser exception_handler_list, exception_block_else_branch + case 500: // exception_block -> exception_handler_list, exception_block_else_branch { CurrentSemanticValue.stn = new exception_block(null, (exception_handler_list)ValueStack[ValueStack.Depth-2].stn, (statement_list)ValueStack[ValueStack.Depth-1].stn, CurrentLocationSpan); } break; - case 499: // exception_block -> exception_handler_list, tkSemiColon, + case 501: // exception_block -> exception_handler_list, tkSemiColon, // exception_block_else_branch { CurrentSemanticValue.stn = new exception_block(null, (exception_handler_list)ValueStack[ValueStack.Depth-3].stn, (statement_list)ValueStack[ValueStack.Depth-1].stn, CurrentLocationSpan); } break; - case 500: // exception_block -> stmt_list + case 502: // exception_block -> stmt_list { CurrentSemanticValue.stn = new exception_block(ValueStack[ValueStack.Depth-1].stn as statement_list, null, null, LocationStack[LocationStack.Depth-1]); } break; - case 501: // exception_handler_list -> exception_handler + case 503: // exception_handler_list -> exception_handler { CurrentSemanticValue.stn = new exception_handler_list(ValueStack[ValueStack.Depth-1].stn as exception_handler, CurrentLocationSpan); } break; - case 502: // exception_handler_list -> exception_handler_list, tkSemiColon, + case 504: // exception_handler_list -> exception_handler_list, tkSemiColon, // exception_handler { CurrentSemanticValue.stn = (ValueStack[ValueStack.Depth-3].stn as exception_handler_list).Add(ValueStack[ValueStack.Depth-1].stn as exception_handler, CurrentLocationSpan); } break; - case 503: // exception_block_else_branch -> /* empty */ + case 505: // exception_block_else_branch -> /* empty */ { CurrentSemanticValue.stn = null; } break; - case 504: // exception_block_else_branch -> tkElse, stmt_list + case 506: // exception_block_else_branch -> tkElse, stmt_list { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 505: // exception_handler -> tkOn, exception_identifier, tkDo, stmt + case 507: // exception_handler -> tkOn, exception_identifier, tkDo, stmt { CurrentSemanticValue.stn = new exception_handler((ValueStack[ValueStack.Depth-3].stn as exception_ident).variable, (ValueStack[ValueStack.Depth-3].stn as exception_ident).type_name, ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); } break; - case 506: // exception_identifier -> exception_class_type_identifier + case 508: // exception_identifier -> exception_class_type_identifier { CurrentSemanticValue.stn = new exception_ident(null, (named_type_reference)ValueStack[ValueStack.Depth-1].td, CurrentLocationSpan); } break; - case 507: // exception_identifier -> exception_variable, tkColon, + case 509: // exception_identifier -> exception_variable, tkColon, // exception_class_type_identifier { CurrentSemanticValue.stn = new exception_ident(ValueStack[ValueStack.Depth-3].id, (named_type_reference)ValueStack[ValueStack.Depth-1].td, CurrentLocationSpan); } break; - case 508: // exception_class_type_identifier -> simple_type_identifier + case 510: // exception_class_type_identifier -> simple_type_identifier { CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } break; - case 509: // exception_variable -> identifier + case 511: // exception_variable -> identifier { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 510: // raise_stmt -> tkRaise + case 512: // raise_stmt -> tkRaise { CurrentSemanticValue.stn = new raise_stmt(); CurrentSemanticValue.stn.source_context = CurrentLocationSpan; } break; - case 511: // raise_stmt -> tkRaise, expr + case 513: // raise_stmt -> tkRaise, expr { CurrentSemanticValue.stn = new raise_stmt(ValueStack[ValueStack.Depth-1].ex, null, CurrentLocationSpan); } break; - case 512: // expr_list -> expr + case 514: // expr_list -> expr { CurrentSemanticValue.stn = new expression_list(ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); } break; - case 513: // expr_list -> expr_list, tkComma, expr + case 515: // expr_list -> expr_list, tkComma, expr { CurrentSemanticValue.stn = (ValueStack[ValueStack.Depth-3].stn as expression_list).Add(ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); } break; - case 514: // expr_as_stmt -> allowable_expr_as_stmt + case 516: // expr_as_stmt -> allowable_expr_as_stmt { CurrentSemanticValue.stn = new expression_as_statement(ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); } break; - case 515: // allowable_expr_as_stmt -> new_expr + case 517: // allowable_expr_as_stmt -> new_expr { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 516: // expr -> expr_l1 + case 518: // expr -> expr_l1 { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 517: // expr -> format_expr + case 519: // expr -> format_expr { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 518: // expr -> func_decl_lambda + case 520: // expr -> func_decl_lambda { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 519: // expr_l1 -> relop_expr + case 521: // expr_l1 -> relop_expr { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 520: // expr_l1 -> question_expr + case 522: // expr_l1 -> question_expr { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 521: // sizeof_expr -> tkSizeOf, tkRoundOpen, simple_or_template_type_reference, + case 523: // sizeof_expr -> tkSizeOf, tkRoundOpen, simple_or_template_type_reference, // tkRoundClose { CurrentSemanticValue.ex = new sizeof_operator((named_type_reference)ValueStack[ValueStack.Depth-2].td, null, CurrentLocationSpan); } break; - case 522: // typeof_expr -> tkTypeOf, tkRoundOpen, simple_or_template_type_reference, + case 524: // typeof_expr -> tkTypeOf, tkRoundOpen, simple_or_template_type_reference, // tkRoundClose { CurrentSemanticValue.ex = new typeof_operator((named_type_reference)ValueStack[ValueStack.Depth-2].td, CurrentLocationSpan); } break; - case 523: // question_expr -> expr_l1, tkQuestion, expr_l1, tkColon, expr_l1 + case 525: // question_expr -> expr_l1, tkQuestion, expr_l1, tkColon, expr_l1 { CurrentSemanticValue.ex = new question_colon_expression(ValueStack[ValueStack.Depth-5].ex, ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); } break; - case 524: // simple_or_template_type_reference -> simple_type_identifier + case 526: // simple_or_template_type_reference -> simple_type_identifier { CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } break; - case 525: // simple_or_template_type_reference -> simple_type_identifier, + case 527: // simple_or_template_type_reference -> simple_type_identifier, // template_type_params { CurrentSemanticValue.td = new template_type_reference((named_type_reference)ValueStack[ValueStack.Depth-2].td, (template_param_list)ValueStack[ValueStack.Depth-1].stn, CurrentLocationSpan); } break; - case 526: // simple_or_template_type_reference -> simple_type_identifier, tkAmpersend, + case 528: // simple_or_template_type_reference -> simple_type_identifier, tkAmpersend, // template_type_params { CurrentSemanticValue.td = new template_type_reference((named_type_reference)ValueStack[ValueStack.Depth-3].td, (template_param_list)ValueStack[ValueStack.Depth-1].stn, CurrentLocationSpan); } break; - case 527: // optional_array_initializer -> tkRoundOpen, typed_const_list, tkRoundClose + case 529: // optional_array_initializer -> tkRoundOpen, typed_const_list, tkRoundClose { CurrentSemanticValue.stn = new array_const((expression_list)ValueStack[ValueStack.Depth-2].stn, CurrentLocationSpan); } break; - case 529: // new_expr -> tkNew, simple_or_template_type_reference, + case 531: // new_expr -> tkNew, simple_or_template_type_reference, // optional_expr_list_with_bracket { CurrentSemanticValue.ex = new new_expr(ValueStack[ValueStack.Depth-2].td, ValueStack[ValueStack.Depth-1].stn as expression_list, false, null, CurrentLocationSpan); } break; - case 530: // new_expr -> tkNew, array_name_for_new_expr, tkSquareOpen, optional_expr_list, + case 532: // new_expr -> tkNew, array_name_for_new_expr, tkSquareOpen, optional_expr_list, // tkSquareClose, optional_array_initializer { var el = ValueStack[ValueStack.Depth-3].stn as expression_list; @@ -4472,7 +4486,7 @@ public partial class GPPGParser: ShiftReduceParser tkNew, tkClass, tkRoundOpen, list_fields_in_unnamed_object, + case 533: // new_expr -> tkNew, tkClass, tkRoundOpen, list_fields_in_unnamed_object, // tkRoundClose { // sugared node @@ -4487,12 +4501,12 @@ public partial class GPPGParser: ShiftReduceParser identifier, tkAssign, relop_expr + case 534: // field_in_unnamed_object -> identifier, tkAssign, relop_expr { CurrentSemanticValue.ob = new name_assign_expr(ValueStack[ValueStack.Depth-3].id,ValueStack[ValueStack.Depth-1].ex,CurrentLocationSpan); } break; - case 533: // field_in_unnamed_object -> relop_expr + case 535: // field_in_unnamed_object -> relop_expr { ident name = null; var id = ValueStack[ValueStack.Depth-1].ex as ident; @@ -4512,13 +4526,13 @@ public partial class GPPGParser: ShiftReduceParser field_in_unnamed_object + case 536: // list_fields_in_unnamed_object -> field_in_unnamed_object { var l = new name_assign_expr_list(); CurrentSemanticValue.ob = l.Add(ValueStack[ValueStack.Depth-1].ob as name_assign_expr); } break; - case 535: // list_fields_in_unnamed_object -> list_fields_in_unnamed_object, tkComma, + case 537: // list_fields_in_unnamed_object -> list_fields_in_unnamed_object, tkComma, // field_in_unnamed_object { var nel = ValueStack[ValueStack.Depth-3].ob as name_assign_expr_list; @@ -4529,230 +4543,230 @@ public partial class GPPGParser: ShiftReduceParser simple_type_identifier + case 538: // array_name_for_new_expr -> simple_type_identifier { CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } break; - case 537: // array_name_for_new_expr -> unsized_array_type + case 539: // array_name_for_new_expr -> unsized_array_type { CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } break; - case 538: // optional_expr_list_with_bracket -> /* empty */ + case 540: // optional_expr_list_with_bracket -> /* empty */ { CurrentSemanticValue.stn = null; } break; - case 539: // optional_expr_list_with_bracket -> tkRoundOpen, optional_expr_list, + case 541: // optional_expr_list_with_bracket -> tkRoundOpen, optional_expr_list, // tkRoundClose { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-2].stn; } break; - case 540: // relop_expr -> simple_expr + case 542: // relop_expr -> simple_expr { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 541: // relop_expr -> relop_expr, relop, simple_expr + case 543: // relop_expr -> relop_expr, relop, simple_expr { CurrentSemanticValue.ex = new bin_expr(ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-1].ex, ValueStack[ValueStack.Depth-2].op.type, CurrentLocationSpan); } break; - case 542: // relop_expr -> relop_expr, tkMatching, simple_expr + case 544: // relop_expr -> relop_expr, tkMatching, simple_expr { CurrentSemanticValue.ex = new matching_expression(ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); } break; - case 543: // format_expr -> simple_expr, tkColon, simple_expr + case 545: // format_expr -> simple_expr, tkColon, simple_expr { CurrentSemanticValue.ex = new format_expr(ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-1].ex, null, CurrentLocationSpan); } break; - case 544: // format_expr -> simple_expr, tkColon, simple_expr, tkColon, simple_expr + case 546: // format_expr -> simple_expr, tkColon, simple_expr, tkColon, simple_expr { CurrentSemanticValue.ex = new format_expr(ValueStack[ValueStack.Depth-5].ex, ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); } break; - case 545: // relop -> tkEqual + case 547: // relop -> tkEqual { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 546: // relop -> tkNotEqual + case 548: // relop -> tkNotEqual { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 547: // relop -> tkLower + case 549: // relop -> tkLower { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 548: // relop -> tkGreater + case 550: // relop -> tkGreater { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 549: // relop -> tkLowerEqual + case 551: // relop -> tkLowerEqual { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 550: // relop -> tkGreaterEqual + case 552: // relop -> tkGreaterEqual { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 551: // relop -> tkIn + case 553: // relop -> tkIn { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 552: // simple_expr -> term + case 554: // simple_expr -> term { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 553: // simple_expr -> simple_expr, addop, term + case 555: // simple_expr -> simple_expr, addop, term { CurrentSemanticValue.ex = new bin_expr(ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-1].ex, ValueStack[ValueStack.Depth-2].op.type, CurrentLocationSpan); } break; - case 554: // addop -> tkPlus + case 556: // addop -> tkPlus { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 555: // addop -> tkMinus + case 557: // addop -> tkMinus { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 556: // addop -> tkOr + case 558: // addop -> tkOr { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 557: // addop -> tkXor + case 559: // addop -> tkXor { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 558: // addop -> tkCSharpStyleOr + case 560: // addop -> tkCSharpStyleOr { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 559: // typecast_op -> tkAs + case 561: // typecast_op -> tkAs { CurrentSemanticValue.ob = op_typecast.as_op; } break; - case 560: // typecast_op -> tkIs + case 562: // typecast_op -> tkIs { CurrentSemanticValue.ob = op_typecast.is_op; } break; - case 561: // as_is_expr -> term, typecast_op, simple_or_template_type_reference + case 563: // as_is_expr -> term, typecast_op, simple_or_template_type_reference { CurrentSemanticValue.ex = NewAsIsExpr(ValueStack[ValueStack.Depth-3].ex, (op_typecast)ValueStack[ValueStack.Depth-2].ob, ValueStack[ValueStack.Depth-1].td, CurrentLocationSpan); } break; - case 562: // term -> factor + case 564: // term -> factor { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 563: // term -> new_expr + case 565: // term -> new_expr { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 564: // term -> term, mulop, factor + case 566: // term -> term, mulop, factor { CurrentSemanticValue.ex = new bin_expr(ValueStack[ValueStack.Depth-3].ex,ValueStack[ValueStack.Depth-1].ex,(ValueStack[ValueStack.Depth-2].op).type, CurrentLocationSpan); } break; - case 565: // term -> as_is_expr + case 567: // term -> as_is_expr { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 566: // mulop -> tkStar + case 568: // mulop -> tkStar { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 567: // mulop -> tkSlash + case 569: // mulop -> tkSlash { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 568: // mulop -> tkDiv + case 570: // mulop -> tkDiv { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 569: // mulop -> tkMod + case 571: // mulop -> tkMod { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 570: // mulop -> tkShl + case 572: // mulop -> tkShl { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 571: // mulop -> tkShr + case 573: // mulop -> tkShr { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 572: // mulop -> tkAnd + case 574: // mulop -> tkAnd { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 573: // default_expr -> tkDefault, tkRoundOpen, simple_or_template_type_reference, + case 575: // default_expr -> tkDefault, tkRoundOpen, simple_or_template_type_reference, // tkRoundClose { CurrentSemanticValue.ex = new default_operator(ValueStack[ValueStack.Depth-2].td as named_type_reference, CurrentLocationSpan); } break; - case 574: // factor -> tkNil + case 576: // factor -> tkNil { CurrentSemanticValue.ex = new nil_const(); CurrentSemanticValue.ex.source_context = CurrentLocationSpan; } break; - case 575: // factor -> literal_or_number + case 577: // factor -> literal_or_number { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 576: // factor -> default_expr + case 578: // factor -> default_expr { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 577: // factor -> tkSquareOpen, elem_list, tkSquareClose + case 579: // factor -> tkSquareOpen, elem_list, tkSquareClose { CurrentSemanticValue.ex = new pascal_set_constant(ValueStack[ValueStack.Depth-2].stn as expression_list, CurrentLocationSpan); } break; - case 578: // factor -> tkNot, factor + case 580: // factor -> tkNot, factor { CurrentSemanticValue.ex = new un_expr(ValueStack[ValueStack.Depth-1].ex, ValueStack[ValueStack.Depth-2].op.type, CurrentLocationSpan); } break; - case 579: // factor -> sign, factor + case 581: // factor -> sign, factor { CurrentSemanticValue.ex = new un_expr(ValueStack[ValueStack.Depth-1].ex, ValueStack[ValueStack.Depth-2].op.type, CurrentLocationSpan); } break; - case 580: // factor -> tkDeref, factor + case 582: // factor -> tkDeref, factor { CurrentSemanticValue.ex = new roof_dereference(ValueStack[ValueStack.Depth-1].ex as addressed_value, CurrentLocationSpan); } break; - case 581: // factor -> var_reference + case 583: // factor -> var_reference { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 582: // literal_or_number -> literal + case 584: // literal_or_number -> literal { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 583: // literal_or_number -> unsigned_number + case 585: // literal_or_number -> unsigned_number { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 584: // var_reference -> var_address, variable + case 586: // var_reference -> var_address, variable { CurrentSemanticValue.ex = NewVarReference(ValueStack[ValueStack.Depth-2].stn as get_address, ValueStack[ValueStack.Depth-1].ex as addressed_value, CurrentLocationSpan); } break; - case 585: // var_reference -> variable + case 587: // var_reference -> variable { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 586: // var_address -> tkAddressOf + case 588: // var_address -> tkAddressOf { CurrentSemanticValue.stn = NewVarAddress(CurrentLocationSpan); } break; - case 587: // var_address -> var_address, tkAddressOf + case 589: // var_address -> var_address, tkAddressOf { CurrentSemanticValue.stn = NewVarAddress(ValueStack[ValueStack.Depth-2].stn as get_address, CurrentLocationSpan); } break; - case 588: // attribute_variable -> simple_type_identifier, optional_expr_list_with_bracket + case 590: // attribute_variable -> simple_type_identifier, optional_expr_list_with_bracket { CurrentSemanticValue.stn = new attribute(null, ValueStack[ValueStack.Depth-2].td as named_type_reference, ValueStack[ValueStack.Depth-1].stn as expression_list, CurrentLocationSpan); } break; - case 589: // dotted_identifier -> identifier + case 591: // dotted_identifier -> identifier { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].id; } break; - case 590: // dotted_identifier -> dotted_identifier, tkPoint, identifier_or_keyword + case 592: // dotted_identifier -> dotted_identifier, tkPoint, identifier_or_keyword { CurrentSemanticValue.ex = new dot_node(ValueStack[ValueStack.Depth-3].ex as addressed_value, ValueStack[ValueStack.Depth-1].id as addressed_value, CurrentLocationSpan); } break; - case 591: // variable_as_type -> dotted_identifier + case 593: // variable_as_type -> dotted_identifier { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex;} break; - case 592: // variable_as_type -> dotted_identifier, template_type_params + case 594: // variable_as_type -> dotted_identifier, template_type_params { CurrentSemanticValue.ex = new ident_with_templateparams(ValueStack[ValueStack.Depth-2].ex as addressed_value, ValueStack[ValueStack.Depth-1].stn as template_param_list, CurrentLocationSpan); } break; - case 593: // variable -> identifier + case 595: // variable -> identifier { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].id; } break; - case 594: // variable -> operator_name_ident + case 596: // variable -> operator_name_ident { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 595: // variable -> tkInherited, identifier + case 597: // variable -> tkInherited, identifier { CurrentSemanticValue.ex = new inherited_ident(ValueStack[ValueStack.Depth-1].id.name, CurrentLocationSpan); } break; - case 596: // variable -> tkRoundOpen, expr, tkRoundClose + case 598: // variable -> tkRoundOpen, expr, tkRoundClose { if (!parsertools.build_tree_for_brackets) { @@ -4762,501 +4776,501 @@ public partial class GPPGParser: ShiftReduceParser sizeof_expr + case 599: // variable -> sizeof_expr { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 598: // variable -> typeof_expr + case 600: // variable -> typeof_expr { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 599: // variable -> literal_or_number, tkPoint, identifier_or_keyword + case 601: // variable -> literal_or_number, tkPoint, identifier_or_keyword { CurrentSemanticValue.ex = new dot_node(ValueStack[ValueStack.Depth-3].ex as addressed_value, ValueStack[ValueStack.Depth-1].id as addressed_value, CurrentLocationSpan); } break; - case 600: // variable -> variable, var_specifiers + case 602: // variable -> variable, var_specifiers { CurrentSemanticValue.ex = NewVariable(ValueStack[ValueStack.Depth-2].ex as addressed_value, ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); } break; - case 601: // var_specifiers -> tkSquareOpen, expr_list, tkSquareClose + case 603: // var_specifiers -> tkSquareOpen, expr_list, tkSquareClose { CurrentSemanticValue.ex = new indexer(ValueStack[ValueStack.Depth-2].stn as expression_list, CurrentLocationSpan); } break; - case 602: // var_specifiers -> tkRoundOpen, optional_expr_list, tkRoundClose + case 604: // var_specifiers -> tkRoundOpen, optional_expr_list, tkRoundClose { CurrentSemanticValue.ex = new method_call(ValueStack[ValueStack.Depth-2].stn as expression_list, CurrentLocationSpan); } break; - case 603: // var_specifiers -> tkPoint, identifier_keyword_operatorname + case 605: // var_specifiers -> tkPoint, identifier_keyword_operatorname { CurrentSemanticValue.ex = new dot_node(null, ValueStack[ValueStack.Depth-1].id as addressed_value, CurrentLocationSpan); } break; - case 604: // var_specifiers -> tkDeref + case 606: // var_specifiers -> tkDeref { CurrentSemanticValue.ex = new roof_dereference(); CurrentSemanticValue.ex.source_context = CurrentLocationSpan; } break; - case 605: // var_specifiers -> tkAmpersend, template_type_params + case 607: // var_specifiers -> tkAmpersend, template_type_params { CurrentSemanticValue.ex = new ident_with_templateparams(null, ValueStack[ValueStack.Depth-1].stn as template_param_list, CurrentLocationSpan); } break; - case 606: // optional_expr_list -> expr_list + case 608: // optional_expr_list -> expr_list { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 607: // optional_expr_list -> /* empty */ + case 609: // optional_expr_list -> /* empty */ { CurrentSemanticValue.stn = null; } break; - case 608: // elem_list -> elem_list1 + case 610: // elem_list -> elem_list1 { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 609: // elem_list -> /* empty */ + case 611: // elem_list -> /* empty */ { CurrentSemanticValue.stn = null; } break; - case 610: // elem_list1 -> elem + case 612: // elem_list1 -> elem { CurrentSemanticValue.stn = new expression_list(ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); } break; - case 611: // elem_list1 -> elem_list1, tkComma, elem + case 613: // elem_list1 -> elem_list1, tkComma, elem { CurrentSemanticValue.stn = (ValueStack[ValueStack.Depth-3].stn as expression_list).Add(ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); } break; - case 612: // elem -> expr + case 614: // elem -> expr { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 613: // elem -> expr, tkDotDot, expr + case 615: // elem -> expr, tkDotDot, expr { CurrentSemanticValue.ex = new diapason_expr(ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); } break; - case 614: // one_literal -> tkStringLiteral + case 616: // one_literal -> tkStringLiteral { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].stn as literal; } break; - case 615: // one_literal -> tkAsciiChar + case 617: // one_literal -> tkAsciiChar { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].stn as literal; } break; - case 616: // literal -> literal_list + case 618: // literal -> literal_list { CurrentSemanticValue.ex = NewLiteral(ValueStack[ValueStack.Depth-1].stn as literal_const_line); } break; - case 617: // literal_list -> one_literal + case 619: // literal_list -> one_literal { CurrentSemanticValue.stn = new literal_const_line(ValueStack[ValueStack.Depth-1].ex as literal, CurrentLocationSpan); } break; - case 618: // literal_list -> literal_list, one_literal + case 620: // literal_list -> literal_list, one_literal { CurrentSemanticValue.stn = (ValueStack[ValueStack.Depth-2].stn as literal_const_line).Add(ValueStack[ValueStack.Depth-1].ex as literal, CurrentLocationSpan); } break; - case 619: // operator_name_ident -> tkOperator, overload_operator + case 621: // operator_name_ident -> tkOperator, overload_operator { CurrentSemanticValue.ex = new operator_name_ident((ValueStack[ValueStack.Depth-1].op as op_type_node).text, (ValueStack[ValueStack.Depth-1].op as op_type_node).type, CurrentLocationSpan); } break; - case 620: // optional_method_modificators -> tkSemiColon + case 622: // optional_method_modificators -> tkSemiColon { CurrentSemanticValue.stn = new procedure_attributes_list(new procedure_attribute(proc_attribute.attr_overload),CurrentLocationSpan); } break; - case 621: // optional_method_modificators -> tkSemiColon, meth_modificators, tkSemiColon + case 623: // optional_method_modificators -> tkSemiColon, meth_modificators, tkSemiColon { parsertools.AddModifier((procedure_attributes_list)ValueStack[ValueStack.Depth-2].stn, proc_attribute.attr_overload); CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-2].stn; } break; - case 622: // optional_method_modificators1 -> /* empty */ + case 624: // optional_method_modificators1 -> /* empty */ { CurrentSemanticValue.stn = new procedure_attributes_list(new procedure_attribute(proc_attribute.attr_overload),CurrentLocationSpan); } break; - case 623: // optional_method_modificators1 -> tkSemiColon, meth_modificators + case 625: // optional_method_modificators1 -> tkSemiColon, meth_modificators { parsertools.AddModifier((procedure_attributes_list)ValueStack[ValueStack.Depth-1].stn, proc_attribute.attr_overload); CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 624: // meth_modificators -> meth_modificator + case 626: // meth_modificators -> meth_modificator { CurrentSemanticValue.stn = new procedure_attributes_list(ValueStack[ValueStack.Depth-1].id as procedure_attribute, CurrentLocationSpan); } break; - case 625: // meth_modificators -> meth_modificators, tkSemiColon, meth_modificator + case 627: // meth_modificators -> meth_modificators, tkSemiColon, meth_modificator { CurrentSemanticValue.stn = (ValueStack[ValueStack.Depth-3].stn as procedure_attributes_list).Add(ValueStack[ValueStack.Depth-1].id as procedure_attribute, CurrentLocationSpan); } break; - case 626: // identifier -> tkIdentifier + case 628: // identifier -> tkIdentifier { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 627: // identifier -> property_specifier_directives + case 629: // identifier -> property_specifier_directives { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 628: // identifier -> non_reserved + case 630: // identifier -> non_reserved { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 629: // identifier_or_keyword -> identifier + case 631: // identifier_or_keyword -> identifier { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 630: // identifier_or_keyword -> keyword + case 632: // identifier_or_keyword -> keyword { CurrentSemanticValue.id = new ident(ValueStack[ValueStack.Depth-1].ti.text, CurrentLocationSpan); } break; - case 631: // identifier_or_keyword -> reserved_keyword + case 633: // identifier_or_keyword -> reserved_keyword { CurrentSemanticValue.id = new ident(ValueStack[ValueStack.Depth-1].ti.text, CurrentLocationSpan); } break; - case 632: // identifier_keyword_operatorname -> identifier + case 634: // identifier_keyword_operatorname -> identifier { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 633: // identifier_keyword_operatorname -> keyword + case 635: // identifier_keyword_operatorname -> keyword { CurrentSemanticValue.id = new ident(ValueStack[ValueStack.Depth-1].ti.text, CurrentLocationSpan); } break; - case 634: // identifier_keyword_operatorname -> operator_name_ident + case 636: // identifier_keyword_operatorname -> operator_name_ident { CurrentSemanticValue.id = (ident)ValueStack[ValueStack.Depth-1].ex; } break; - case 635: // meth_modificator -> tkAbstract + case 637: // meth_modificator -> tkAbstract { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 636: // meth_modificator -> tkOverload + case 638: // meth_modificator -> tkOverload { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 637: // meth_modificator -> tkReintroduce + case 639: // meth_modificator -> tkReintroduce { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 638: // meth_modificator -> tkOverride + case 640: // meth_modificator -> tkOverride { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 639: // meth_modificator -> tkVirtual + case 641: // meth_modificator -> tkVirtual { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 640: // property_specifier_directives -> tkRead + case 642: // property_specifier_directives -> tkRead { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 641: // property_specifier_directives -> tkWrite + case 643: // property_specifier_directives -> tkWrite { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 642: // non_reserved -> tkName + case 644: // non_reserved -> tkName { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 643: // non_reserved -> tkNew + case 645: // non_reserved -> tkNew { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 644: // visibility_specifier -> tkInternal + case 646: // visibility_specifier -> tkInternal { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 645: // visibility_specifier -> tkPublic + case 647: // visibility_specifier -> tkPublic { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 646: // visibility_specifier -> tkProtected + case 648: // visibility_specifier -> tkProtected { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 647: // visibility_specifier -> tkPrivate + case 649: // visibility_specifier -> tkPrivate { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 648: // keyword -> visibility_specifier + case 650: // keyword -> visibility_specifier { CurrentSemanticValue.ti = new token_info(ValueStack[ValueStack.Depth-1].id.name, CurrentLocationSpan); } break; - case 649: // keyword -> tkSealed + case 651: // keyword -> tkSealed { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 650: // keyword -> tkTemplate + case 652: // keyword -> tkTemplate { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 651: // keyword -> tkOr + case 653: // keyword -> tkOr { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].op; } break; - case 652: // keyword -> tkTypeOf + case 654: // keyword -> tkTypeOf { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 653: // keyword -> tkSizeOf + case 655: // keyword -> tkSizeOf { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 654: // keyword -> tkDefault + case 656: // keyword -> tkDefault { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 655: // keyword -> tkWhere + case 657: // keyword -> tkWhere { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 656: // keyword -> tkXor + case 658: // keyword -> tkXor { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].op; } break; - case 657: // keyword -> tkAnd + case 659: // keyword -> tkAnd { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].op; } break; - case 658: // keyword -> tkDiv + case 660: // keyword -> tkDiv { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].op; } break; - case 659: // keyword -> tkMod + case 661: // keyword -> tkMod { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].op; } break; - case 660: // keyword -> tkShl + case 662: // keyword -> tkShl { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].op; } break; - case 661: // keyword -> tkShr + case 663: // keyword -> tkShr { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].op; } break; - case 662: // keyword -> tkNot + case 664: // keyword -> tkNot { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].op; } break; - case 663: // keyword -> tkAs + case 665: // keyword -> tkAs { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].op; } break; - case 664: // keyword -> tkIn + case 666: // keyword -> tkIn { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].op; } break; - case 665: // keyword -> tkIs + case 667: // keyword -> tkIs { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].op; } break; - case 666: // keyword -> tkArray + case 668: // keyword -> tkArray { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 667: // keyword -> tkSequence + case 669: // keyword -> tkSequence { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 668: // keyword -> tkBegin + case 670: // keyword -> tkBegin { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 669: // keyword -> tkCase + case 671: // keyword -> tkCase { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 670: // keyword -> tkClass + case 672: // keyword -> tkClass { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 671: // keyword -> tkConst + case 673: // keyword -> tkConst { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 672: // keyword -> tkConstructor + case 674: // keyword -> tkConstructor { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 673: // keyword -> tkDestructor + case 675: // keyword -> tkDestructor { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 674: // keyword -> tkDownto + case 676: // keyword -> tkDownto { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 675: // keyword -> tkDo + case 677: // keyword -> tkDo { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 676: // keyword -> tkElse + case 678: // keyword -> tkElse { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 677: // keyword -> tkExcept + case 679: // keyword -> tkExcept { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 678: // keyword -> tkFile + case 680: // keyword -> tkFile { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 679: // keyword -> tkAuto + case 681: // keyword -> tkAuto { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 680: // keyword -> tkFinalization + case 682: // keyword -> tkFinalization { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 681: // keyword -> tkFinally + case 683: // keyword -> tkFinally { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 682: // keyword -> tkFor + case 684: // keyword -> tkFor { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 683: // keyword -> tkForeach + case 685: // keyword -> tkForeach { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 684: // keyword -> tkFunction + case 686: // keyword -> tkFunction { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 685: // keyword -> tkIf + case 687: // keyword -> tkIf { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 686: // keyword -> tkImplementation + case 688: // keyword -> tkImplementation { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 687: // keyword -> tkInherited + case 689: // keyword -> tkInherited { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 688: // keyword -> tkInitialization + case 690: // keyword -> tkInitialization { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 689: // keyword -> tkInterface + case 691: // keyword -> tkInterface { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 690: // keyword -> tkProcedure + case 692: // keyword -> tkProcedure { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 691: // keyword -> tkProperty + case 693: // keyword -> tkProperty { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 692: // keyword -> tkRaise + case 694: // keyword -> tkRaise { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 693: // keyword -> tkRecord + case 695: // keyword -> tkRecord { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 694: // keyword -> tkRepeat + case 696: // keyword -> tkRepeat { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 695: // keyword -> tkSet + case 697: // keyword -> tkSet { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 696: // keyword -> tkTry + case 698: // keyword -> tkTry { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 697: // keyword -> tkType + case 699: // keyword -> tkType { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 698: // keyword -> tkThen + case 700: // keyword -> tkThen { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 699: // keyword -> tkTo + case 701: // keyword -> tkTo { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 700: // keyword -> tkUntil + case 702: // keyword -> tkUntil { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 701: // keyword -> tkUses + case 703: // keyword -> tkUses { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 702: // keyword -> tkVar + case 704: // keyword -> tkVar { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 703: // keyword -> tkWhile + case 705: // keyword -> tkWhile { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 704: // keyword -> tkWith + case 706: // keyword -> tkWith { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 705: // keyword -> tkNil + case 707: // keyword -> tkNil { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 706: // keyword -> tkGoto + case 708: // keyword -> tkGoto { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 707: // keyword -> tkOf + case 709: // keyword -> tkOf { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 708: // keyword -> tkLabel + case 710: // keyword -> tkLabel { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 709: // keyword -> tkProgram + case 711: // keyword -> tkProgram { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 710: // keyword -> tkUnit + case 712: // keyword -> tkUnit { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 711: // keyword -> tkLibrary + case 713: // keyword -> tkLibrary { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 712: // keyword -> tkExternal + case 714: // keyword -> tkExternal { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 713: // keyword -> tkParams + case 715: // keyword -> tkParams { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 714: // reserved_keyword -> tkOperator + case 716: // reserved_keyword -> tkOperator { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 715: // reserved_keyword -> tkEnd + case 717: // reserved_keyword -> tkEnd { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 716: // overload_operator -> tkMinus + case 718: // overload_operator -> tkMinus { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 717: // overload_operator -> tkPlus + case 719: // overload_operator -> tkPlus { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 718: // overload_operator -> tkSlash + case 720: // overload_operator -> tkSlash { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 719: // overload_operator -> tkStar + case 721: // overload_operator -> tkStar { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 720: // overload_operator -> tkEqual + case 722: // overload_operator -> tkEqual { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 721: // overload_operator -> tkGreater + case 723: // overload_operator -> tkGreater { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 722: // overload_operator -> tkGreaterEqual + case 724: // overload_operator -> tkGreaterEqual { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 723: // overload_operator -> tkLower + case 725: // overload_operator -> tkLower { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 724: // overload_operator -> tkLowerEqual + case 726: // overload_operator -> tkLowerEqual { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 725: // overload_operator -> tkNotEqual + case 727: // overload_operator -> tkNotEqual { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 726: // overload_operator -> tkOr + case 728: // overload_operator -> tkOr { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 727: // overload_operator -> tkXor + case 729: // overload_operator -> tkXor { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 728: // overload_operator -> tkAnd + case 730: // overload_operator -> tkAnd { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 729: // overload_operator -> tkDiv + case 731: // overload_operator -> tkDiv { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 730: // overload_operator -> tkMod + case 732: // overload_operator -> tkMod { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 731: // overload_operator -> tkShl + case 733: // overload_operator -> tkShl { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 732: // overload_operator -> tkShr + case 734: // overload_operator -> tkShr { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 733: // overload_operator -> tkNot + case 735: // overload_operator -> tkNot { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 734: // overload_operator -> tkIn + case 736: // overload_operator -> tkIn { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 735: // overload_operator -> tkImplicit + case 737: // overload_operator -> tkImplicit { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 736: // overload_operator -> tkExplicit + case 738: // overload_operator -> tkExplicit { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 737: // overload_operator -> assign_operator + case 739: // overload_operator -> assign_operator { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 738: // assign_operator -> tkAssign + case 740: // assign_operator -> tkAssign { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 739: // assign_operator -> tkPlusEqual + case 741: // assign_operator -> tkPlusEqual { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 740: // assign_operator -> tkMinusEqual + case 742: // assign_operator -> tkMinusEqual { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 741: // assign_operator -> tkMultEqual + case 743: // assign_operator -> tkMultEqual { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 742: // assign_operator -> tkDivEqual + case 744: // assign_operator -> tkDivEqual { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 743: // func_decl_lambda -> identifier, tkArrow, lambda_function_body + case 745: // func_decl_lambda -> identifier, tkArrow, lambda_function_body { var idList = new ident_list(ValueStack[ValueStack.Depth-3].id, LocationStack[LocationStack.Depth-3]); var formalPars = new formal_parameters(new typed_parameters(idList, new lambda_inferred_type(new PascalABCCompiler.TreeRealization.lambda_any_type_node(), null), parametr_kind.none, null, LocationStack[LocationStack.Depth-3]), LocationStack[LocationStack.Depth-3]); CurrentSemanticValue.ex = new function_lambda_definition(lambdaHelper.CreateLambdaName(), formalPars, new lambda_inferred_type(new PascalABCCompiler.TreeRealization.lambda_any_type_node(), null), ValueStack[ValueStack.Depth-1].stn as statement_list, CurrentLocationSpan); } break; - case 744: // func_decl_lambda -> tkRoundOpen, tkRoundClose, lambda_type_ref, tkArrow, + case 746: // func_decl_lambda -> tkRoundOpen, tkRoundClose, lambda_type_ref, tkArrow, // lambda_function_body { CurrentSemanticValue.ex = new function_lambda_definition(lambdaHelper.CreateLambdaName(), null, ValueStack[ValueStack.Depth-3].td, ValueStack[ValueStack.Depth-1].stn as statement_list, CurrentLocationSpan); } break; - case 745: // func_decl_lambda -> tkRoundOpen, identifier, tkColon, fptype, tkRoundClose, + case 747: // func_decl_lambda -> tkRoundOpen, identifier, tkColon, fptype, tkRoundClose, // lambda_type_ref, tkArrow, lambda_function_body { var idList = new ident_list(ValueStack[ValueStack.Depth-7].id, LocationStack[LocationStack.Depth-7]); @@ -5265,7 +5279,7 @@ public partial class GPPGParser: ShiftReduceParser tkRoundOpen, identifier, tkSemiColon, full_lambda_fp_list, + case 748: // func_decl_lambda -> tkRoundOpen, identifier, tkSemiColon, full_lambda_fp_list, // tkRoundClose, lambda_type_ref, tkArrow, // lambda_function_body { @@ -5276,7 +5290,7 @@ public partial class GPPGParser: ShiftReduceParser tkRoundOpen, identifier, tkColon, fptype, tkSemiColon, + case 749: // func_decl_lambda -> tkRoundOpen, identifier, tkColon, fptype, tkSemiColon, // full_lambda_fp_list, tkRoundClose, lambda_type_ref, // tkArrow, lambda_function_body { @@ -5288,7 +5302,7 @@ public partial class GPPGParser: ShiftReduceParser tkRoundOpen, identifier, tkComma, lambda_simple_fp_sect, + case 750: // func_decl_lambda -> tkRoundOpen, identifier, tkComma, lambda_simple_fp_sect, // tkRoundClose, lambda_type_ref, tkArrow, // lambda_function_body { @@ -5322,7 +5336,7 @@ public partial class GPPGParser: ShiftReduceParser tkRoundOpen, identifier, tkComma, lambda_simple_fp_sect, + case 751: // func_decl_lambda -> tkRoundOpen, identifier, tkComma, lambda_simple_fp_sect, // tkSemiColon, full_lambda_fp_list, tkRoundClose, // lambda_type_ref, tkArrow, lambda_function_body { @@ -5361,48 +5375,48 @@ public partial class GPPGParser: ShiftReduceParser expl_func_decl_lambda + case 752: // func_decl_lambda -> expl_func_decl_lambda { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 751: // expl_func_decl_lambda -> tkFunction, lambda_type_ref, tkArrow, + case 753: // expl_func_decl_lambda -> tkFunction, lambda_type_ref, tkArrow, // lambda_function_body { CurrentSemanticValue.ex = new function_lambda_definition(lambdaHelper.CreateLambdaName(), null, ValueStack[ValueStack.Depth-3].td, ValueStack[ValueStack.Depth-1].stn as statement_list, CurrentLocationSpan); } break; - case 752: // expl_func_decl_lambda -> tkFunction, tkRoundOpen, tkRoundClose, lambda_type_ref, + case 754: // expl_func_decl_lambda -> tkFunction, tkRoundOpen, tkRoundClose, lambda_type_ref, // tkArrow, lambda_function_body { CurrentSemanticValue.ex = new function_lambda_definition(lambdaHelper.CreateLambdaName(), null, ValueStack[ValueStack.Depth-3].td, ValueStack[ValueStack.Depth-1].stn as statement_list, CurrentLocationSpan); } break; - case 753: // expl_func_decl_lambda -> tkFunction, tkRoundOpen, full_lambda_fp_list, + case 755: // expl_func_decl_lambda -> tkFunction, tkRoundOpen, full_lambda_fp_list, // tkRoundClose, lambda_type_ref, tkArrow, // lambda_function_body { CurrentSemanticValue.ex = new function_lambda_definition(lambdaHelper.CreateLambdaName(), ValueStack[ValueStack.Depth-5].stn as formal_parameters, ValueStack[ValueStack.Depth-3].td, ValueStack[ValueStack.Depth-1].stn as statement_list, CurrentLocationSpan); } break; - case 754: // expl_func_decl_lambda -> tkProcedure, tkArrow, lambda_procedure_body + case 756: // expl_func_decl_lambda -> tkProcedure, tkArrow, lambda_procedure_body { CurrentSemanticValue.ex = new function_lambda_definition(lambdaHelper.CreateLambdaName(), null, null, ValueStack[ValueStack.Depth-1].stn as statement_list, CurrentLocationSpan); } break; - case 755: // expl_func_decl_lambda -> tkProcedure, tkRoundOpen, tkRoundClose, tkArrow, + case 757: // expl_func_decl_lambda -> tkProcedure, tkRoundOpen, tkRoundClose, tkArrow, // lambda_procedure_body { CurrentSemanticValue.ex = new function_lambda_definition(lambdaHelper.CreateLambdaName(), null, null, ValueStack[ValueStack.Depth-1].stn as statement_list, CurrentLocationSpan); } break; - case 756: // expl_func_decl_lambda -> tkProcedure, tkRoundOpen, full_lambda_fp_list, + case 758: // expl_func_decl_lambda -> tkProcedure, tkRoundOpen, full_lambda_fp_list, // tkRoundClose, tkArrow, lambda_procedure_body { CurrentSemanticValue.ex = new function_lambda_definition(lambdaHelper.CreateLambdaName(), ValueStack[ValueStack.Depth-4].stn as formal_parameters, null, ValueStack[ValueStack.Depth-1].stn as statement_list, CurrentLocationSpan); } break; - case 757: // full_lambda_fp_list -> lambda_simple_fp_sect + case 759: // full_lambda_fp_list -> lambda_simple_fp_sect { var typed_pars = ValueStack[ValueStack.Depth-1].stn as typed_parameters; if (typed_pars.vars_type is lambda_inferred_type) @@ -5422,42 +5436,42 @@ public partial class GPPGParser: ShiftReduceParser full_lambda_fp_list, tkSemiColon, lambda_simple_fp_sect + case 760: // full_lambda_fp_list -> full_lambda_fp_list, tkSemiColon, lambda_simple_fp_sect { CurrentSemanticValue.stn =(ValueStack[ValueStack.Depth-3].stn as formal_parameters).Add(ValueStack[ValueStack.Depth-1].stn as typed_parameters, CurrentLocationSpan); } break; - case 759: // lambda_simple_fp_sect -> ident_list, lambda_type_ref + case 761: // lambda_simple_fp_sect -> ident_list, lambda_type_ref { CurrentSemanticValue.stn = new typed_parameters(ValueStack[ValueStack.Depth-2].stn as ident_list, ValueStack[ValueStack.Depth-1].td, parametr_kind.none, null, CurrentLocationSpan); } break; - case 760: // lambda_type_ref -> /* empty */ + case 762: // lambda_type_ref -> /* empty */ { CurrentSemanticValue.td = new lambda_inferred_type(new PascalABCCompiler.TreeRealization.lambda_any_type_node(), null); } break; - case 761: // lambda_type_ref -> tkColon, fptype + case 763: // lambda_type_ref -> tkColon, fptype { CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } break; - case 762: // lambda_function_body -> expr_l1 + case 764: // lambda_function_body -> expr_l1 { CurrentSemanticValue.stn = NewLambdaBody(ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); } break; - case 763: // lambda_function_body -> compound_stmt + case 765: // lambda_function_body -> compound_stmt { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 764: // lambda_procedure_body -> proc_call + case 766: // lambda_procedure_body -> proc_call { CurrentSemanticValue.stn = new statement_list(ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); } break; - case 765: // lambda_procedure_body -> compound_stmt + case 767: // lambda_procedure_body -> compound_stmt { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } diff --git a/Parsers/PascalABCParserNewSaushkin/PABC.tags b/Parsers/PascalABCParserNewSaushkin/PABC.tags index a58d825e2..917fe9dde 100644 --- a/Parsers/PascalABCParserNewSaushkin/PABC.tags +++ b/Parsers/PascalABCParserNewSaushkin/PABC.tags @@ -202,7 +202,6 @@ - diff --git a/Parsers/PascalABCParserNewSaushkin/PABC.ymc b/Parsers/PascalABCParserNewSaushkin/PABC.ymc index 557b371a9..2dbd9b81b 100644 --- a/Parsers/PascalABCParserNewSaushkin/PABC.ymc +++ b/Parsers/PascalABCParserNewSaushkin/PABC.ymc @@ -1,11 +1,9 @@ -useLex=True lex=ABCPascal.lex yacc=ABCPascal.y -lexGen=D:\PascalABC.NET\!PABC_SVN1\Parsers\PascalABCParserNewSaushkin\GPLex_GPPG\gplex.exe -yaccGen=D:\PascalABC.NET\!PABC_SVN1\Parsers\PascalABCParserNewSaushkin\GPLex_GPPG\gppg.exe +lexGen=D:\PascalABC.NET\!PABC_Git\Parsers\PascalABCParserNewSaushkin\GPLex_GPPG\Gplex.exe +yaccGen=D:\PascalABC.NET\!PABC_Git\Parsers\PascalABCParserNewSaushkin\GPLex_GPPG\gppg.exe lexGenOpt=/unicode yaccGenOpt=/gplex -useGenOpt=False scriptWorkingDir=D:\PascalABC.NET\!PABC_Git\Parsers\PascalABCParserNewSaushkin script= "D:\PascalABC.NET\!PABC_Git\Parsers\PascalABCParserNewSaushkin\GPLex_GPPG\gplex.exe" /unicode "D:\PascalABC.NET\!PABC_Git\Parsers\PascalABCParserNewSaushkin\ABCPascal.lex" @@ -71,6 +69,8 @@ script= + + diff --git a/Parsers/PascalABCParserNewSaushkin/generateParserScanner.bat b/Parsers/PascalABCParserNewSaushkin/generateParserScanner.bat index 076ecd432..4f1d3ea2c 100644 --- a/Parsers/PascalABCParserNewSaushkin/generateParserScanner.bat +++ b/Parsers/PascalABCParserNewSaushkin/generateParserScanner.bat @@ -1,5 +1,5 @@ cls GPLex_GPPG\gplex.exe /unicode ABCPascal.lex -GPLex_GPPG\gppg.exe /no-lines /gplex /report ABCPascal.y +GPLex_GPPG\gppg.exe /no-lines /gplex ABCPascal.y convert4.exe pause \ No newline at end of file diff --git a/ReleaseGenerators/PascalABCNET_version.nsh b/ReleaseGenerators/PascalABCNET_version.nsh index 316856e71..c53ec0b55 100644 --- a/ReleaseGenerators/PascalABCNET_version.nsh +++ b/ReleaseGenerators/PascalABCNET_version.nsh @@ -1 +1 @@ -!define VERSION '2.2.0.961' \ No newline at end of file +!define VERSION '2.2.0.965' \ No newline at end of file diff --git a/SyntaxTree/tree/AbstractVisitor.cs b/SyntaxTree/tree/AbstractVisitor.cs index 44f9c0b3c..4afabcbde 100644 --- a/SyntaxTree/tree/AbstractVisitor.cs +++ b/SyntaxTree/tree/AbstractVisitor.cs @@ -864,6 +864,10 @@ namespace PascalABCCompiler.SyntaxTree public virtual void visit(modern_proc_type _modern_proc_type) { } + + public virtual void visit(yield_node _yield_node) + { + } } diff --git a/SyntaxTree/tree/HierarchyVisitor.cs b/SyntaxTree/tree/HierarchyVisitor.cs index 3eea2c4c7..315959ca1 100644 --- a/SyntaxTree/tree/HierarchyVisitor.cs +++ b/SyntaxTree/tree/HierarchyVisitor.cs @@ -1725,6 +1725,14 @@ namespace PascalABCCompiler.SyntaxTree { } + public virtual void pre_do_visit(yield_node _yield_node) + { + } + + public virtual void post_do_visit(yield_node _yield_node) + { + } + public override void visit(syntax_tree_node _syntax_tree_node) { pre_do_visit(_syntax_tree_node); @@ -3363,6 +3371,13 @@ namespace PascalABCCompiler.SyntaxTree visit(modern_proc_type.res); post_do_visit(_modern_proc_type); } + + public override void visit(yield_node _yield_node) + { + pre_do_visit(_yield_node); + visit(yield_node.ex); + post_do_visit(_yield_node); + } } diff --git a/SyntaxTree/tree/SyntaxTreeStreamReader.cs b/SyntaxTree/tree/SyntaxTreeStreamReader.cs index c15747dcc..07fc933ff 100644 --- a/SyntaxTree/tree/SyntaxTreeStreamReader.cs +++ b/SyntaxTree/tree/SyntaxTreeStreamReader.cs @@ -450,6 +450,8 @@ namespace PascalABCCompiler.SyntaxTree return new sequence_type(); case 214: return new modern_proc_type(); + case 215: + return new yield_node(); } return null; } @@ -3821,6 +3823,18 @@ namespace PascalABCCompiler.SyntaxTree _modern_proc_type.res = _read_node() as type_definition; } + + public void visit(yield_node _yield_node) + { + read_yield_node(_yield_node); + } + + public void read_yield_node(yield_node _yield_node) + { + read_statement(_yield_node); + _yield_node.ex = _read_node() as expression; + } + } diff --git a/SyntaxTree/tree/SyntaxTreeStreamWriter.cs b/SyntaxTree/tree/SyntaxTreeStreamWriter.cs index d5a7e791d..58cf6ec34 100644 --- a/SyntaxTree/tree/SyntaxTreeStreamWriter.cs +++ b/SyntaxTree/tree/SyntaxTreeStreamWriter.cs @@ -6056,6 +6056,27 @@ namespace PascalABCCompiler.SyntaxTree } } + + public void visit(yield_node _yield_node) + { + bw.Write((Int16)215); + write_yield_node(_yield_node); + } + + public void write_yield_node(yield_node _yield_node) + { + write_statement(_yield_node); + if (_yield_node.ex == null) + { + bw.Write((byte)0); + } + else + { + bw.Write((byte)1); + _yield_node.ex.visit(this); + } + } + } diff --git a/SyntaxTree/tree/Tree.cs b/SyntaxTree/tree/Tree.cs index 3ad1553b8..67d1131b2 100644 --- a/SyntaxTree/tree/Tree.cs +++ b/SyntaxTree/tree/Tree.cs @@ -3818,11 +3818,6 @@ namespace PascalABCCompiler.SyntaxTree } - public override string ToString() - { - return "while " + expr.ToString() + " do\n" + statements.ToString(); - } - /// ///Свойство для получения количества всех подузлов. Подузлом также считается каждый элемент поля типа List /// @@ -4666,7 +4661,7 @@ namespace PascalABCCompiler.SyntaxTree public override string ToString() { - return "label "+labels.ToString(); + return "label "+labels.ToString() + ";"; } /// @@ -8943,6 +8938,20 @@ namespace PascalABCCompiler.SyntaxTree } + public goto_statement(string name) + { + label = new ident(name); + } + public goto_statement(string name, SourceContext sc) + { + label = new ident(name); + source_context = sc; + } + public override string ToString() + { + return "goto " + label; + } + /// ///Свойство для получения количества всех подузлов. Подузлом также считается каждый элемент поля типа List /// @@ -9062,9 +9071,16 @@ namespace PascalABCCompiler.SyntaxTree } - public override string ToString() + public labeled_statement(string name, statement st) { - return label_name.ToString() + ": "+to_statement.ToString(); + label_name = new ident(name); + to_statement = st; + } + public labeled_statement(string name, statement st, SourceContext sc) + { + label_name = new ident(name); + to_statement = st; + source_context = sc; } /// @@ -28463,6 +28479,112 @@ namespace PascalABCCompiler.SyntaxTree } + /// + /// + /// + [Serializable] + public class yield_node : statement + { + + /// + ///Конструктор без параметров. + /// + public yield_node() + { + + } + + /// + ///Конструктор с параметрами. + /// + public yield_node(expression _ex) + { + this._ex=_ex; + } + + /// + ///Конструктор с параметрами. + /// + public yield_node(expression _ex,SourceContext sc) + { + this._ex=_ex; + source_context = sc; + } + + protected expression _ex; + + /// + /// + /// + public expression ex + { + get + { + return _ex; + } + set + { + _ex=value; + } + } + + + public override string ToString() + { + return "yield "+ex.ToString(); + } + + /// + ///Свойство для получения количества всех подузлов. Подузлом также считается каждый элемент поля типа List + /// + public override Int32 subnodes_count + { + get + { + return 1; + } + } + /// + ///Индексатор для получения всех подузлов + /// + public override object this[Int32 ind] + { + get + { + if(subnodes_count == 0 || ind < 0 || ind > subnodes_count-1) + throw new IndexOutOfRangeException(); + switch(ind) + { + case 0: + return ex; + } + return null; + } + set + { + if(subnodes_count == 0 || ind < 0 || ind > subnodes_count-1) + throw new IndexOutOfRangeException(); + switch(ind) + { + case 0: + ex = (expression)value; + break; + } + } + } + /// + ///Метод для обхода дерева посетителем + /// + ///Объект-посетитель. + ///Return value is void + public override void visit(IVisitor visitor) + { + visitor.visit(this); + } + + } + + } diff --git a/SyntaxTree/tree/Visitor.cs b/SyntaxTree/tree/Visitor.cs index 4f28b3f6d..9515bcad0 100644 --- a/SyntaxTree/tree/Visitor.cs +++ b/SyntaxTree/tree/Visitor.cs @@ -1294,6 +1294,12 @@ namespace PascalABCCompiler.SyntaxTree ///Node to visit /// Return value is void void visit(modern_proc_type _modern_proc_type); + /// + ///Method to visit yield_node. + /// + ///Node to visit + /// Return value is void + void visit(yield_node _yield_node); } diff --git a/SyntaxTree/tree/tree.nin b/SyntaxTree/tree/tree.nin index a459d09f8213092c78e8a0166a2e241b496c5b71..055e8bd9b7f91b63c8fbca27e1b6e453cbe0c2a9 100644 GIT binary patch literal 190055 zcmdSC2YeO9_cm?>4&2ZJ3B6sUq2u--_$r^Y<~ItiYu+Ke17~YtBzf{Dm$sQp{2FCFrl%~ z+R|LpP?eq9I-{Y!c1mHUp)T z)eD;Ik)zywe1f}zVQVhb)Wz6Bf@ABa!bxiN?2fa8mgX)kHM6Q~Yg&Q<>0Gt*=5^>$ zV*hpQP%?PhqM)TPH$SPVp`lRQf+`O36PufB7HwP~w6vQ!AXbI>4GRtPrlA6AW)=7X zk1k0mSgXIjHqWwm9y@({yoB}Z8&E-$YFY}jP_0#2=Ki;uz>YierZOEYNJsqYyk&Et zkgpA-6B2``)&#XR4HMUyG^uIsJiPVh{Io@lEj0_tBm$1!^^Nr{^)(IEEud7-t(jA3 zmd>D;Zf#yYOX`Aj-$-s6SZn5Pqi5kkCo4E7@3~YlBEu$l=r`>l>2B}6no*Q(k4(fL+bg7HOP5R;@?XLKy@#Sh z@w#m{686a@XSZ}nyWWO1!R(fr84cQ!GQGgrk@x?mLXITmL=o~%Mq3*j3taCj3=x>Sdp+2VP(Q9gjETv5mqOxL6|^Tldu+H zZNfytI)q7tbqVVc)+cO0*pM)pun}PjVPnE3giQ&X5vCG0Cu~8OM%a?D6=7?_HiT^n z+Yz=WOegF>*paXkp_;HWp@uMnP)n#I6bLg3vk0>Z^@Lpra|jKDxr9bS6JZ`C+tDkldu#{yg+!7 z@Dkx=!YhPV39k`eC%i#;lkgVdZNfW*cM0zi-Y0xO_>k}s;bX!lgii^d0lL4`u^0Zd zt5Q3Ip>*S>n!5GXeCZq-R$Vyi)if8H%cy)OVd$OO+%&%)rbrhOra{+tgi#g9)-?^S z1+?D|9hT_SscVWS+;DQ*HGAb-1O;TdU9jS z_;FR)xj}7Hb3^@%$Uz zAAmCdOj6JSYjkd*u_f~hlfM#__jmj%=?hTaKk%c6cI=g8A7Fk?Ps9XkMYZt}s*Q1!zwzkak{+^*QeMhE4BerrP?M<1KyB)lL=a5Q^-8pGH;AjFI7&@wxab4SNsP4=ZN`_4W)t2k3b&KZuqj_k`=_5#^4y{>P>>{?sk zOmfa590I0HJ=v=)`z}cJj1-Nj&pBjnAZUAPqy%5O)=d*qsGH~w&m-fm1XT+Gx$~C0 z1*y*Ujdg{Eh2~5vndTF;2`wb&a+Y%uQe9@kEuormH*)PxP!+N#S(mr0dm+`exiGI# z6L$B#$+(Z>-jCd4E%*LNl`fdA-VrL@1ITxvV?LP7<1F(bNOi8CX>Q_BG9BhPk09rG z%XuVHT~G_!;4?>&>uADoFl3I!uaXrk>v2eRsjIJWaLHojmlv%~fT!d6Pnrm&L4&JNknijOJ8Lcga%*7PAguuZfa~Y*pwNjTO zRYp}%R}EVYtrq^0Aaez|uO#S&uBOOpR^%F_dZ7W#h2O%Hxt8qL5wz>wK$+F8%#BD5 zNV&PdG~}BocC(Ycm9lGC+1rpRi)3f3{~~icx$hth2V>?g{3@AXMeatb=gihd^*&XH z68Dh#UIL5G+)s%$t;7RJRYVu@RPck8c!;2N@d(A%vSN=SrPYV`6ltNy$o;qzd6FV) zTal-b>J{pFClX|yCi^o^<~hntv@*{l)i0=@3wzBd3$IyZUZBv6gh}Afyo_HZ>sZNG zkm_sRuNii|CwrALuQ|atD99pIeY}ZOS&_(F-Y<~qrM%QZXtC-*&3sArubj*`l-a<_ ze2Y}K)}Rnnt6+U&<~wqJPhi2BAIZLHM1l^uh0>{N~TzmPDpjt`<~lW*V<6X2pKyQ zSZpRk?u{*XDN;Sqkkw8J1-g=#PH-d8g94jafu2Zpn_XCF8deSL$1-yEBHY08%gMf} zWv@W0>#Racb!gmV`jD|NL5G$8Z+r&{)*q$|4) zF2k72I^LzoySe2ZfmByB!!oUABpF8$v=YaVdkf25iBy-mrf?j}k!xv!-g6aMr&-oz zk?L8PJFjJtXNKg-yc|Jqdn_fkv=ZZx>M^USrO6W*Pu>-rz)BR@$_lKEl+o|dyOFK4 z3fWh6GOJT&Yb&z`Qau*bx6JkgCXjbcC$KgJwy^>ek+Ky8H*`a09WqWL=&-&Xxwp04 z>myZ;fe)P30bZ~6W44A3D6kR-_q||gPwG~pm;qUCf!81Qwi` zO@V4FP>)o1sQn;-cVO-e4z|0Hbq+xvelGcUw)~Aqm7CkIMsKc%m2YgGCJM|Ws8ln4 zmDE_N0I5=Q6;(+ssp%pUkvQfo!_L~00_Yp_%X zCx}{&t^&;c?M2bO33`9~Qohd0?}t>MIgL#V8qGAsyYBuJIe?(oJ&1AzD|awb$K4H>T`=Ms|2BazqjjeNw-sg>!xXFp#La`<* zb}Le)wX-o*G&<)t^4(6*iPN2Ao@bfwLaJwTO+AL7==I-C=6eYG$oElVS1WNpQe^>( zpI7Z&f?{yN#`TlP16 zc71zqlJhOc{tnp}SoU|3>TXLXdysjLtnWMi56QpK@_&R>x#joU$j21;#7TWdsYO=m zbEIg`gwq-w$i5)&mjr!%UsGT=EAS0c_>t9tU!OH z%5~mCm#49KRcZhQ20E$1l-l1)4I!QLaN~O%%H%MDYMkNtRdRskT?(mAGa8y|=VV5Z zWhCK1bkH2_dG6tzqwxeppTuHthL2r8*G9P4_tB@LM%o=#tJb#(joR+0*o}lk~ zc@}W6EnsY{0HYC-jb$8V$GZYnWC7GIdb=wj)j8BCnU%@33PD@rYUDiBa;}b4ci+Sg zGHZ}^0zsc`E%F~``PU}Db#j;ro=Dbp2wK7GlK*hazaCOlBGgYtiL6h~4G3ENWU?P& z**8L}m)E=LB4`ORQ^>xtli8FqM_QT9km_sgr)pF0xEigC%v8#3?gXb%@F**|B~p=< z=Ne{aEAnscgtn#7(N<`?n2_^eWVR>&bSJbUg^sa8J0aE2-J%mR6;e&1ot@+iN*-$^ zYmw?1^-bfVuOoATpgx&dlsL{x%torKI#^oF`>7}6E`%(2G7aQD-g3`H3VpJ^MNJ8< z?o1H1YBAYY4Po=@fzE%O30+u?I=OJ*VY77`vyB zEb|^nb!(buMsw}vdy;c60xzH0hwLX?_I*irdNi{illv32Lmf!oQ!MX6NR@dOqp8M& z$$bbxtMM?3oN7f5N2-^z;i_lXG}a*mCvybZk0fZ_98H7|*H&f<3D{~7{y$cI5 z>cCd6uB(T3X{n!I$lOZ)+X$-f@1W56R_IQoN?QZE*VT!07y0fc=xe_hze+B!%=aNx z(S+F;%y^7e2-o9ei@uioDe(Y7{X`E@>_RK{FjCz^v5@}}vOY>s-^}CWzsT}Gfz&X2 z87|dT>wF$=eZ68$GvdE8Pg3|Pg0|^rSi;4&glCZ|3ri?0guhH{{5f(zPtY2Fks_B^ zk(Wr{rFHH+!}~ImuQ=Y<$a|^feI2O*Veyg8h59a_zMC^|Q0z^D*5TWfz0AtKgH*pF z+0gg;E`{DBOaOo814>?QB|k*UUX>NXXR4mnTGL!di#_uZ#XctJRX?Td6;}2$q=tr9 zEtWN}{&UKH;R^VQ1zc$h_!_C6i2^d;kojAJR_OPXxXMcWKzc(H^qf}yk4*mLcz+@9 z)t2{Hq`E~!T9uzRE7ej1oaqoqtx|Q zsykBsoRnHO?xL9<6zWMB!F%mR$s4R>Z=|?ZyV45b46dAv6$CYK`jY!b%iRyDZmm9h ze{v3R?1RXDlVu-_RF}rW0yA_DA=gks77UpzS#P$i!;z{;m}Ta{m!iZ7f>zfkirr$x zMk7_W0LHez6q*@B?n)=JG(~Q;BFiAvCn;hsRYj3yo!oMiyUofij}$yoyA@!D(wD`^ z<;++zk0WHkmsx=lw_Ax7DZyv*B~~Ky%1&ZcO59;3Rzs?{aY@6u6sgzM$-f3c>tIa^ z-D!o^LaN-}ky^;%V7WF0CK6PAO`_CYR%%_OIAugvuu%}}k#&87cC`)3f4AkIjMRW# z5gbG>4BASAx>;Pb#YPmHLdZfQvk7JIv9g;Y)z4cotqHuVZbqT01ik7Ol)TqUPD84D zZ8cq?xK-9=W=pbeMNr#h8}i?0`L{)?ORXI-wjbw{KIcuPe=b?mlw zqF6OSZ>xr~4_Mh5NQEniY!R7S^3@Uao@U}#$%B@87MbZ<3ERwU^3@acWzHeOwflpl)O(^-ouc>Dwhf9j=GDvxx*=R1cBWva}*_?w30_7)h9)=erDzv ziX7|Yj;GvHR_+9(2G%vz;$_-7G)iH@T=YcBokY+YIfcScTj5iY8jvoGP_)cx6g%C? zo=Mqftn67x4Qo@@3>2BODSVDA;XIb`tS#Yuq=uxI5SYCInF}a-p_9Lu^3PfMOOWbr z<|?>bhTCN>CF^Abol;yu{^u?Kl}PpX`d4)T-$wn+dhB0-;=GDdR}-`iTuadxtmt(} z4KTqfYL(fMP3L++=6Z_VK;USdxrwqbTG^YC>TLzW=?^17ZXy4z1XYH&Q|KitbO%yp z;WRf=?st;=E<%>qxrZVzTakN_>Ncafrgjc|;2M{8A35)L><^Ot70dn*=}{oS!%RLx z(01||d0(}>k0aG5T>Ee$rhPp@ktdzp)0BJ7$~}WrkA%RpcM00b->1M^R^S7qD#Ck1t1C3alW0bQ4=M2xLEF$L6noo>eTr0%0B_!# z0)Ix{&z-=R6nMu9e1%jQtu~AU49PPu^=oo}L(muX9Yx-?BHts`Cn;iH)DIN-(aHTx zx%aHxFG!WQHhLyv(~Mov2Q$A?;5UL+_#c#d-%9<7RBu;vs+DzO{}=iHCTKO3bb`b89fLaH1ED_L=S!=t0QxI%Sml*h=+6YCvs6Q@}tOg!RF^XlZR>3HofkDOOI< zUfYMVpIF(xNOcbiFiH??XPQJmvi2wF9S$V_rWK({BF?cYJFTg;xwbH=34Y&&E!m(pC!=vua+uXs=Xc{J4T%j!#(=Alzx>#u{5;)F zmrc?ujq2rGJ*z*1Ds64i1F1-EwQS4m`oM4pRZ6Skjy#2&RN|VY`UH7M29iU1gcl`{ zM;pOrKFplmU90sfOM@|WElQR_PPy?UU|9iSA$fCuQiY7AqT4oP?TM9UStrZRmXl>! zv_^Ajx8)<|`74k-a`^JRU=7xxmoyKG8mV&eDA{WKtkb}epvt@~wk#8vN+SlW*6l%F zZP&aUHyQ>xSq>NN<5vlPn@U(7S!2Q_DRo-sn=tQh#xrKaC)%=Un#L?v=433G`-bIE z1?NMrC_-Lk9P*}w?+=w`qBDbh5hXjZuC6jk%^C&Z4dXc(j{?h!ZKu4ffDAv(QC0+j zKH+e|$TaPIi>$;F+(4DDX`ZF_R3Iy}1kdFqtB~M@xX7v?wC!ZjcPXoZXBMAi@f$ne zYWVDSAv@N_F^M%@!L+IRx}0h6IawVS+sr+SX6NHct=QDzJd0g+8b}rw$jKTg6f3s~ zhAs}@%C|wURJy0&v*Ge*)NRxB#{^u;y0NU+CNFD(>MxMVS|E5nJXss*UI^l`aXk6v z`dPDEWFp9YLKlv6ish-SWF2G;w2K#R(wQfPk1vyuA4bE=y7-+IKq>1Xqbg~1L=Tu( zSG|jcWbNT+!dWjkaP8N0GQs6Cv2n&We`Ob0FJ zu4MGv{HFRkea7N;zXRB-QcT;t$}nDt!>t>X=jLQbNKA-F?B(N0#|_DW&M@&S2@`kI4;yHbmE+ny4sL-tlhfl2uyiq@)6%~t!VwDwX!(Y=iB_bdRJ335xak0#QU zadn9Zxa`b%#`H`?uA9i=>^z>q;2BgdVfs2p(45S|m3yf2cMeRM4O+H1aL{!$Q}y-W z8WEqnTcuerCXKld*#(T{v4!(+{F#G{b;BiZtrOGkXxjKxf0S<xK!c29%Vt(j{|2 zFA6i4MpBbbW#NXzWcaGg194DsfKomr1+ps`Muu%PGM?e;1%nPlt<^5{0_llf?d z+0-a|fw$Dfw&Z1Rq}NNRx_Am~7tkZpwH6Uf49Jb*7kiB{| zdo~I;kyb4c(X!rbJ16_|($U@>HFk8DV;~10Yj7kNb9ftVe;}{!rZ;E_h|}lrR#_C~ zpKWbSd+>u$Kz}=q8n-0(v6#n@gL!XJn+`1pRlA2EYoKvdkRj=n6OhqYowKeVz<$$3bU6`uWy#HuauTT9Mep8Cc}xTITqKDc z^^-(&>ui+Ra8+!uoC3KD_uk-&K$FtLedJW+AezTU^05Zw zG|=jc-kvIeHv)aD-K668-ztQqDL>B=Y_ zWDBXP`%)BhX^C1*CeYP*8qDu>Q?aN!g)Tv@EVU)+IBB!fC%U%!O{zH$ZNLc@@UVo% z)WC?Z%FZ-@42_=8%W%IVokd%;dZ8Lcw};E+;M^n@muc*iu=xf?(R*8?pyIt$TJygG zMfP-Uz${G3l^}MHyv0zhaurC!O%KzW^(;?Qy=pGW)nJ>J>I}-KQY)R3%top)?LMzT z!NrCMZ2-9zS>?qoF)!CKBPDEGu17{svlo`F-qdp%A8<>S5z+Y8fYYre}0GoXB;RwcMei>&p< z^uj#MOBIdL?G5yJjKqk(n1lQyxYR(``n9^vbwaK3DDsD<)X{~sA8qOsyh+;vAf(Bvunx~RmpZs+OaaA6v}BZaQunA@Vt zECXcYTPK~7fYC0-u2w%>58jSRj%#3x7hw3}v|LV}#?3Alj#B20`U%^>IqTMD%^x{= z210A9mPU_`tn(sD!mVbfv+(caP_vkIrMv|wS<$k1z$CD@l`^GT~RJaY<* z7GPsueiCxpiJf_E0yrc#0}t zXegL%ck&8&MubDMU5tssZ_S#W4pgs#F}4>_UIS(8e>vC`FBzr#!d^$&OUHe(?YL-j z@&@=XElE1n6X~#b@o~&rnpY)eEje1&c3m>-e%ZGe$=mnkSS-Q3z{nX8SxovCbMhwc zch@!>lA1ZGO)RzXWwkFS`O|vHTe$2%W4TnvcO4qb>TTq&>^gAR|E=rY(a~Si3V#Q} zWw9@WrhJ1iRhNQ-| zsNIj3EgyoV=-3ST2-IHC_3<@n`55F1Z}+@*N~#a}1UZ$dPNjInsPR933hvbHYLO#b zJ_AoJZoyl8Y>P*# z+_!B4T)&%f-=*@Pc55199L25wdpvHhqUw+zK!(Q(X8^bp0OUu|dV20)9dCaEarMX} z5OzTqqHOM#izX2dj9HhTlb=yQJCTF(3-SjQ8N}WI_A3~Az>M$=6#0!p=BYR)=iLLE zeWHQ<4u+w=&p+(Q zdOPO>f2igX9%Q`*E0qPhwnx(~PKnfu4z!*&hy}fbF)=ymjB+Qq@=R-qCnL{U8^ci- z6oCd2+c?&oH%qV_P9y_{_y#U1rA%@$O5d1?pOUU%=n-EAly0C6O&g$$OJ1+l9X$Qp zvX!IjAM*5R?@3(KL=cG3{CnttWb>f?I zFZJ#C!>6`xlb5Ej%Te60_~=u-09XO0^-?P}jp#M6V%60LMGetLAFU1r=q=tdPG7K$ zh6=XlN4D1y`+;|8q-fO1iXd~G@2*3dzV80usVeFO?UgzJ5?)XZ_wQ(cZe9i=XPd}; zKt~H5*=lx}Rr840evBuJF{;hXOJooV9|CHs~M7f;_kBBPMypSmKWLFkyr zN`#ETFB@s+V&kL|)U5B7L0`6hq^Jq!SS-4P-KHl?gRo-iOAdRVdBJHtei?`kZMOpQ zQUxAwr@X#kSr$aEMMuq?3zWtdk7$wyciX#NWI1Ga^&UW$2VsyZWp6wRedOAW$AV#0 zeAtPiI~-lz7vsP>A=PmnNw}$ewkEBX#-oU~P8pCDkeRXD%<{4#l2}x+JG{&QxiOZ_ z*NBK~%1SKJ-Dfz8h6hy3%E+vV^oqN=e_9>Y)|?`j)d=@Q6i-f8!DZHSdkA#*MLwSN z2OER}@gT||8=k_dTZNNrGhnDeOOr?bcAe} zqpGOnxDzNZYk(~D&9xR}0)C%g($1nz+gb4&FJ9_26qtTtsJhq6;Im_>;+8PQ7||4l zco>zb-l3EU=$g3GPBg6oSqndt=Nie{Aa0U2I;Of4^fmgLIju=fM3EEmu63fwd6Szp zGNDBzg9B`=LKH5LlXXzc2FA7y&pit*?J!m8S=dm8(P5ft_cRHGjfhuSzM(J^+u@pK zVXId|b!bt`x@2@?o10)^$iZ+$1jnpYOZ|yQC+n}h`BTW{KB%#XIO<5D6 zOsH6+^-t4FYZ`L0EeaT6Pf2gjy4wznqr7$<+nE?&#NQsQefZR>$-)Q>wYFtCOYtVw z?Zi*-0M@0_o3ssa(6_rI_}V^wL3ToR|G2i!PvQo;O*w(8MsC-rALV6dmX=fqdF%L) z8e|WO8eP~uboU5L31kKs4lU7#_f7TxeA5u)pUnZyRXVN|FfcHV5n~mH8U0-qJptV= z(X1dRwY=e|frPd869gcMl^P+o!NX-HgGr z0j$IPxj~A%N#=s-8m@oE9iT}*O`r_V(gB{!yZ(56ItUUu1dzqnl21? zNqCGyP*pr_Y{YF>B=_#&=>us(&LDOlbYtwQG9DfM$s2|PcOI+7+f;a zJE-X8)!+z;f_7io4GgV1nt5v3%-}tOU#V>^85Ol08Kw8IaYR;QKwkBz*`5L#d&@HRE`XWybOo%K-IoN#}9^LKv(+)sJ zICb-fk?5ul1VbNtbXjO#oBk&UA#1SLVoj%oTf?ch-)mdns zU#R1Hw;YGuHiuR!+2g@5%_->6<)wN%pGwu{pUlZdDn2YBCnuob!N~_TyHi=0wGDD2 zIQmkJ#fD8Y^EwH6u`hSX$)NN}H9h4NWc7&0e#xmUJp5cvXy)>G8{UwdhP>1dw8-hm z8JSq`Q5Q+lSuJOPvyWTH2%kF7Ii;M5tVzD($5dw#MXS=M#=~}Uauy026!xGZ{|Sx$ zv%vrr=A1`r^`8Uckg%dKnybqZJ8}6@4BLdy1FdFq-y6p@TQ-jE9WB%a}#cR zL`^_{$OWMEvg!bqSGcTkA;@iinL;i?b_S0T?zp-b$!Wg2@qSk(4({Ui-fU!98iNBv z4_pC71BP6Jf=6mcH)q1}t=TOGaYyx~;IxhoJeu8FEti3A?Rc}q5w3LL))7R0IWN%0 zx<3vdhPOFbGL%79b{u&aB9W6TA>1o=V2ipTuL2q81zA;*m#aaT z(#}P+0eZvmKl%i&L4nD=0bC2iK25onH|3v8siVAH2Xen;?=kBTfn1Nw3nQnHHT=!t z1(79c=>Jy@*PPsddmWf^c0cn_BLJ9P(wib8@|eG*TXqomOH?ga>S3^3HnBf`EfjH?H;PE zq;t~+A~+A{T_|sp$b)P2b0V#sBcl1M`fGpqp^R_G;}u zaNz?0PXEMKB27@r{b1=eDcmNsu06C<9soJqY-AmQkv@?Jk!!xZLOV_#LK1PrdR&1U zFXUlR2N!QZ%10M@1RP!SZYO9UkAfiD>jQa=g@(h8J9kMQ2X!MiuQb&jPgbUm@Y#Ud zQ;QY)6DTj`XkvL1^r6W|a{dI<*`5Lq7hddIq&!U_qb+gcc0@M>$ZE*YGvFDXW;i;U z_SR>?)+1WsXAhU>KwCR%PpNIrkIG2j%JDo(8I-ObH{*JYyv(G|3^;3*SCH(Q_vUx6f?y|Ek-~-!)5A>j@*48ZN9{1Y`>IV|N6zYP z@0K;T0G_GQ_`gHWEGP&ypjYq>6kxxmCT}9q8`>$_r;1kw7r|Sg+xe$`r)oT#`e#Ma zDhl6rl%u^rEw^Z@r!r}c^KD!je%feCqFw(TQj;@gc^A|ua+VgSya$q=vge&KX@=DI zku#9@7Sr}lHOmK-be{XX=hprZIsJ_(NO=vHl1M59yIx6=PD3g|=&Fp%%?v!goCzQ-?~B@uN9-m|`;ACR?a(G$35cF*J+3Se)~OpqT@ z=IZ{WIQUl^v2yYg3g{eeb(EixFtH2PHOZ;!FQERin8C+x=C11;MJE77*=+j0qXe$$ z__7r}qKWMTSly^KUsejdTz`fI4nG-j#Rs9#KkoKXS0z-Dep}G2rR3ySJif+6>6)5Z zM*0o3b@eSLqLw0GL(z-Q&QEKszoR76UXmrrAIR!kYzn|TotHn6*HhoSPLuWV`}tvqfJM4_PCc(wVb+X(4LE~Pzd2`LF*VpGbTbc66vQ#&c=f2#79?%*lKYF{{)lpd7vOoz~qsI4AG1;=^m37#%? zdL(5?Ef>9ms4pl@T?WO2KraaO&{ys}x1lmi9O*u;-ia5Uu5>h6Gm~U)Lg3Fq#yFq&WV=($nehumH{BdzB3{N zLD?*HGE80dg_~*BKsq$lG}{L%}vA5yXnq`28@}VPF~MZ2@klv@A!Kg_AxER44a@)LC>oqmCwj6i|qo~dVBwv0qZ zg+Cc+ZRDY-g*q99oPKOoF}qT4BaqR^#A#ZwL(;WznkG1g*;b{;^t(F7Dv=$XHle3k z8&_-&8JQ^ZaA_pVe5buG-7W(ve7Okc4}ETKhzO(#dC``A-n}df(unjh-`Esd@?acP z^uRiXnPYgC4 zq$_}Du-k?~VRXarv*bp9t_Y5{&sdg~kUibqPuw11*paby;&fF5#d*3UoZ!#N%DBKY zMNU2EZC)&AUfU-N6fZ+(J!3jtht4J!D2(k8tx}{!ilG|aF?VT3!zy?zELKHBT{NtC z)GX#ItAf-2maMD>!jR&o;@!8b4i+|v_^bjUbf9miZ`r#@${C+__14{y1V57+A6XZNcIP8$qZzo3EQ9VK+8-k^qKlI9EQ2HdF zMPq_wBV=`V$9<|jJO!la8^N+MlDZrc)w3$*O+cSoY#$X-;uCOZNVTz}WK&+P_$A3^ zppUfgx5#4?O%wu|3eNcX(Xu&6gQK}de63kE>lWY`$X{N#i63n;jfMKQP+qnKsU}s| zq%WRUCV7h&PSalaR=CVoapNGl4ECRz30tG+PG&B-4St3jFQE|p1I2X*1dY&b!IDk5 zgmexR^Wtv@E_gqi%!eM-=#lL~(+{$v7`GcCFVjiRZw$>43#i@!Y$9n{n*qKC z90UDbZ__ZBs+~O*6QM1swq_td{%IAd1hdmnD^| zG=Q26mQc-LTwimMoje`I9^);I$iyLfc8^B5H%5oU@R+?Oa8%N;4=4WKoUn+3@HB8& zJ5x<9D!mI#?6KH_)?g;%kzXUB+uRV2vh_%t#<~AinOIm%Tuo0vlv5A{m_39wg4ohD$?j zcwX6`-I;giQ*yF53Y@%H3p16;MVYi(*$2gCoRX7$kt}r|cFW6tNXG)_wZF;!AY;l$ z4G_Bc!+m;<1vvnD*#1u=F53Md2ZHMM+TKfq6q>IjYFU`^B*pmTo znYLtjZ{m1a)B`(`o*EK!avX~4@3uZ0&jodbdb{O#fl5cU%#cE0n4$VJGqCkA1nW)`#adafE) zM&)8;FY8awyx-mqZ>`#JQ{E+}#FWqdXiZ#-?2K#oav73r+6(Y~&*<}Mayhxw$*M-# z6-chMhHi*-AH%$F#xAuXC- zXnkJ`T3_!;{K?>T$SaQ@z-83o^~k6+iUyXf*O4OA$MbOB0PcavVGOW~Xz}uIME>aX zk-}~T(!Y&OI42Rj)3miG7u(W^|Ds9WjDq`n;gJ4^5A$*hatF8}$8=nm4CGd1pIH*O z&(!IuwykP$gy@lApQouR|Pg?=+xFTK@p3XWxO(WjM zM`-gDaJik&pO_oFZ@bDJ$X(Yz71nDpL6(W2%Jpy4`TT=o@$!Qzb5QJ^C(Q=+2<_UTD#%j+6d)?c^vS&w#ovRSurteUr{SV=7fImdwF%gE-I+ zB~=wStag^Co`Zy)cgc>%v+tuw%zRVyzd-ACI!?*$*@a=+yz zWW}SBxN;n|zL$|d+*xq0zeL8HKE1pGwjQzAfxNs58b2CjjK4@!UbEN4D{y{pPba^Q z{FHrz`As=Szky736(j?!Of|fTYFFzqC+|*;^ro+GTGqT*H=!rPG*XI|IN4I-W0Ky2ujherb z*R%B7i~ar$ycKC71oAs_4s7FlTl)UeZBS;l@ujWMJpG5manf4vAGj9@KX3A{`5T#02)Fa6$P!&J604d(oop|8b~S0v8$>D z)fHs#j4op|gvUkMNSAKl(R1pP4vD;UN7mppCm(iO>aZ$3z=3#k_@6ZtGLW7itQdBE zH!z`TSe=#3ayu(?QU=jc$raE@nfjI73#{JS0vZdCu;~rz@WhvM^NBP**;&4L*WtMa z6=3b@ZpplC=>uXR{S~EBb@Wc=EZ)LmUtDU0TM*0hTuAMw{uX$A4k#!6c%zAVmGlR3 zY3l2uH|t(U%o{WS{6pQlG>tBvtdxP^nGoHP`=t+Ad~fDtPycoie8zi)k!Uw|@a@T9 z5Yxk#XgSIdWSf)K%m-$jvn;Kv4h6FppyD?nddb4qI1F4}LIstVEK*@BV#TMkaTZyI$c{}u}oSFRNB2PgG&xprRGf+^OJ+gwpOJI z9J=AdV=!}~WswuDA$dJ6dJ&QbPa6vrw&KkTmgT^?J09e}VJauQB|(FA;jw&YPt)PA zV?!kvaJbepMFsO{mz5w_5f0e!qth{KCeyMqax_rCCTMC5t)o>yTh4oP z?orz_0#~I_>aDe7)2{}h*oS)E4n0{NSsSRPNcn7u)7eIqL`@6(Z_*m{8YrwET+C5O zmd^O}KrNYoOzUE>$K9i{^^=|03%4e+d&DhpSqrqy!r|MkFRMYDM)aqwmfOu(Eg>gs zqfoQ`Eb($>B60>M=WOP?FseD%L4I7-Vy-g@M6N=GUB@-T$U-r5kafWqZY7-8%oCI7NO6pJnMs}!k-P|H%Eg&Hb9OS&|w^c8-l2(6&6j7q8WN1lfkvo zzgVb@PUK2IPjMrZ*U7k4rr;;s&o+WW8-$s`qWWcH9}BTuSwNhIiEQ1KAYp zna28t&^NUik~pB#9rz(rK{&LH!RQ}mO4_{Ahao#qwefA@FgvZsY>xZcn(y_0=<`b} zdkd7k%fAf~ODQNkRHwbzay?vU8m_lZTdJfDx>jnDb_pHVQ76gCmMFXj+JWaEkgY(Y zRp$qD$kre(?d<2`08Jf*qLO7B@Q3G+M^wL4ZVQG1o-Z-}ApqG9*?ql_*5^Z$7$-Z( z_Q9) zI|=^9wauz=x#FGQ#yAiAv+N9>Af-P4>7`k-F*#%`wqu|M7e>&O-|%GyXzRLHns7F! zs`j>a(AT1*p5B=uI_%VeXqMGIQ#6nQ$iu9~!$YRcDJt*;sPR+NJg3ksGr?5u<`l-t z;{-%zA)}kl;KDTrnGMR?aVubPj;u9-K<+GudX$1w63n`6xXUHl-l^8%E?^m0WW@1I zr^0+ZhRi|!o_M#OzRAl{G=j2Jnmrg_M3W})X{Yj6 zHe?>CS+}<3jEuY^>F4=&1y?z&Q#B#-^P1T5Fu!k-W@J=^BMdtlkN7p#PJo;+OoY1F zYctYYd=A-C_}FjPLWCiR=bqshbAnWp||4k3X^AOSbrdt*)e|HutMe zTKkMS*#l+ua~;IIF|4EO0+;NG%*EP4XD-iklC*?q;ER0{B5@N~tI|!=ILHpynHoxZ z9=9Tj4RCTi&h?h^Vr6fXI@g%rn3TIIicw{4&_nwnxp~7bwD{$uU2-2>G7;`YAKbnm zZ{&rowG+bDGP^zqL)Z|qR^_TJ+;M0^R`x@AC3)E&f1)qmYg;o9XPcu5*2Jf~!Pq-~ zco`RjBn*?Xk%g@jB024co>*_ z>Z+aBs1FCRP20w+J2?W3qdWqfSo0d{YwKGY7I~lA(cW|PeM`I#DF_n10tgVH!mlH%bRo= zCwv&Z9>^)k?e1H&c{!B=k;cqn4*OUOgznrF7}6UNS+Snos+7-zBZ=` zoHrHkWHGf+Y!mMpxJn(b@_*P+&B>X#QsikfbCvM%W){pGUd{rKUGlTTOwn7JYpkKO z!Q0zA4=!m_bbpWepz;OaDb>!x#*mi_k*-MlM5$baoH1l-+xu@vo}63^=5BWA)Mj=G zD7}lL%;i$hd$^l6L)~SdwYPE;4W4p2Slc`-7v`B% zx`KTjvX}m6LoggJaLyk1yI4y}Za}K5vCOrF%Z(sRb~loCo2sxJhj*)K1MN*HuBUs2 zrZ~A7#0-x@Gs~5?An6^2pl{IV4Sh+s@{WwRTsMHf(xZA-nG<@CGU+I0GQ#YI50iK$)N_X$udri7`BtBNB#1N<5>z%kv zZCbxF71?HvR!mxM`u7`iau+U?Yx9}S)x6>PZm@fMze2|bXBhecCAkOrozxL3_u^+c zzNTF}n|rIGt|j*&qgOH(E-&|kY@*6S#pV={JU|KG0}4wDw!(uTb8h55*)0!&vRZ7M z^AoXH=2Um~!;tU5c$P=-BNK&cKZ@kT|G{o{#xO^^*7XMCE;MIko5rSR=6EKjW~IG&e0qryk6KujF-{-D(`-#=G<+>)zfen2gs)Xd+5&X9XEG=j z!YSJyA4l07UUYh-@li?ldLU1L$BhHzktadv9F7C>6cU~TSS^!whQz1A-rLwa_PTo7 z#514|i3N7Ddd#+74Py@ES+I1E9ib}Efi%z#=q!0+#SQrOT;?x=J*l|zyIP}KU!lAN9=cOQ7Zht%UIqpqDDlcv{_@&$oIPmngF)jy;rJ-UD@b%07s^JGO#mdE=_0MT{R=0)xfV|zU`gWk9(uE z8Z1j%n$eOUWCMQ*G``4%~y=wWD!XK=- zKz;!EpLX5yOvN9;SG)xh(;iwWf&7H*_C8t_PM*wJAs99a@-rm5`N4GZ3n(k3>&KXp zP^|8Lg=D!?AJqH}W(EE?Wb}14Vyt~sv3|kecjkGYo1oXcvBgx@AIR(Fhu#JOKCCQ% zhQ;aN&X=IU&qibXg}jw~Yb%PJ@Tl3;R{l3+V_)!9Q+tUFW+=6KvWlJ+B_$yA^>>`O zXwX2GL|#wxfHZZm+ZL-09Y7ou*H2-a<0d!gs*Yqx>Z&M>Kua*N|CuIbb!33!(Y$@N zBH-$mPrs0KMrJqPc$F@oboDAlG9Yv^tM{e&nfxfcn{ufxZF3fuldcdRRy6Dd@eglz z1C!?fNU9X||91z^>N?ADUa?q8@4=_U<8E`(0|j(Py=hC)VM2O>#2tI{j4xAPaT#by zFA9t4TiEp+z^dxoNKS1)*>15@BBYArI3tYZQh)MClLmYTn$V z9S^y;$s0N%oOBF;eEh?}bd>V>+@_F$VCin72+eUcgFxb@pU`TJCYpnh5q=6G_IZTR zj;U_Iq8=hTDeec*o9D{QP>L7%H^aVQy_+%&T=Apfc+WZ&Fh|2>!O&*B_RRWbL}OA- z%5d;?GAd^&{0vV;jGAWn9aIxxJOUgQ(F@QK!Km|*$mwcBl(}p%3WV?j657eU=F1RD zlMFX6BrNotjD~QhJbRan!Ot>J)nefj0a}%y4vX6w#+oyeA^j~mFm>}oR%K~W+$M>Z z*@Z^qR9psR`>{iveN=%kh@IH=6cb`$HcK&Uw1*V=@^O+68dJ3&2AtMQ^7g9i zB~G)_dlPzrmIK4MSj~l+B&^5Ecr2;=9>?;K>k&VGM8<+v7Ov;I9pEw!RKzH`jfgTH zgiP2!vB9&RGD_=WkI9u)keX)o zx=!!?gua;MeBZ9jMW=M6y_Qu`aKf=|X4j?zt%mGjYWA6GQh$=E38k`nWOXpL5jGr) ze&tEafvf@U&gK}4KqerOoIyvfKhx6JBu|+q26cGa76;F+ z!=8bOVC$LKN+9ci*ygGm9?R|6oCLZ{e9 z@Wk=7m$(7MyV&pQ$%aS`aq2@yG_@J^g=tYT*}I)c%RBwM5ld*Z#<#>!CsV*OEImfg z9ds-kg9&jJtuum_`j%G4V9F*SjWPBj1{K~?(lYQI(VOxjzK#p~U?ZAgI8Fw#8JPN~ z_&d!&HWj(O9e1@oR!TMpebq?Ex%k^6U4|VPTIIEcNll2xSlE)~=k2zDcwgU8Z<*ax zSFJ8HnTEXXe&`5}ssqWLdJ$88aW8eW{WLvXK(<0bJ=|%5=17LEL92)wV1Ck~+J=I@ zq-~J1QmEg|pYQ^0heL!p`0OjM6m33+qHd7wK(kxh&8wjLmhC|<4KFhf{b@SVu}`N2 zIGF+?X{~;kn(th80839-5vDBJ5kxMHCg+iq2xKSZuA16l+{-ilguxcYbG2%STPF@W zFD!(p1KKl!lJu~)cv1g5SNISQb|j@;WM^EYpR=UQyqT+7?1WN-%%$`aDFNW_()d6u z_`2w-Ans6Vk?I<`%JNbNg7f0i`j7%B_;f_AIr2|tBDqO&+)AWXtwc0@U&k%Mr9Iay z6j_dUtvdj{IhD*tMqd{sV?KP27u^DvoYW()r#Cs%d));@tMI*n2BBxDfp8D}9PrqW z>P6ZqG!mr&xl71g7M@r?kwy^h9z!#BG=bvnOm-H}KLrjh_HM$Q%)=$Nwaa^X`=i*; zgeKq}C9St-PL~PiI&35SfNxM`oMOfswkt{>z}K&B$ZxaSkD8I)BOWj!0cdvhG`2TF zZ%)Npz*65vpbu=~WRQ>EY`DkT5A?AnhEGdtKCQUi^na&^xZ)BGh*9X-W?}GK{Jib? zxImw9lB7yFil|tCtn!pC%d!v|iDOl%{A3a6Y0H)FOD(&B0sFvVZJ2pp++(&oa;KzE z@lvU20sf52c0kon^icQK@J3u8n8(-!;Cq+fj|xdQ?w1*d7I>5(98UVPHIUx1k_UN;Ky|B zP^4>Ekk>n-(vw8hyb12bax)x;%k=RN9;L!GTlx=2R=9!kpF>%W05gW6)IOefv4DXb z3BF!MK4Uowg2Q{b;FC6^X z^klz;eloH zTI@MF1Kg=WI_dEuawhnfPt4k!U775zAs@aG3#kgdVSN+c-JXq{*dXB_1}5hqcTB7W zwxc`G1@r%UH*46n&cnTS^P^qmd{9cGJq~gK(nHdkF=qU}r%yau%JC>|&>!auZTLT_jmJ zWZw+pVje{5MR8jT&x@wX$t@_VTWHrCU&XDU3{S3!8Y8bd^iiOu3 zO<&!POOz#-dE^dIS8c~{sRO=eE+#(8bSK1<`+AZAt#TKb-YrqzMA(|W-<2EJG$K@N zR$+2ow%Y!#a(>LvKT8c;72nAOj}pvGb3QY=LQ7Rjw*(K5DUF64WpoCa8Lv?e43X$_ zvZ*{8^kk2!SB~OI`rUZW;VHHWz7WCv%l0b~_kgW5T6C0qk*0O&0(#{>P_Ss_T)p{? zTIbH&5;mILkDLZOOZyL|Yi)){aF9sO-*l(U1Gr*z_L{RU^YLg9c@S)ai;h$EKOp%K zI7-#lH?j2(BRwQV4b7}yh(VcEERTStBCYetqZDpSJ(!;N7+B1ge|+b@(F%_vZ<};0 z0yaZp5zDj^u8b6A(eset&dC!fym+b9^f9Xnp9GI}vtl_5pACc|{}hN7hA+PLTb?Gn z=SE>Q$}=FAndmEL=ps4|)Ub8wYW8zTM{3%HJUkEDWR_86{G<^>Kaz>FO4BSaptyCM z%NB1A)|!cxNF1&64`C}WqMY8lpsAa+Uf1Yf0)4f`w4KuK?`6oBx&vRIE`3kgcY_L$3rwATr0JS)1`-=Hx@j6rFlP z%S%4uHTZ`8T_5r>sQtaz70*OznJ1qhcf+EI9S!dIZuU{g$oi_INKM0`y zLBDRz-T9QXrt}qx@9xi#0{I%G-p&Q9)uQ`uzX5&K=#?k*NtA)(1=FtdEyO#Se)JuF zM!Sl=X8Aob+HJeAq2&iK^+|0r@*}cJBef(yAw9ZngC65Kr=mL5ke|W3lupWcPjTv={OhiX4)@;%2wW{|%O9qcog^U)z2H(qERaZDDx~J53koVTLBj07YD(egJy1u+%~~_L!PgyT zVdbi!I*b{VQg9Z>Qu5gX>54o(2-dHcZXkAsV&me8bVowno_Gi_;r@*iS$ZI&y%=AO zt?$XA!YYawLMn2w%^g>qb`!gKa%!m+3Zx#ZdYBTnSNI4RWuk^yxZJ-N!PuUk( zYx%k(G+YJvGJObr3H=ED2?GcN34;iO2}1}&3Bw3k!f?V;gb{?1gi(aigfWClLXNOB zVHrXdVOc_+upD7|!dSvM!g#_8gcS)Z5mqLwLRgis8ew(98iWaiH3@4G)+S6OtV5VY zSeLLKVST~|gbfLk2^$fn5H==kLfDkB8DT16bHWycX@o5aTM@PE2`3RwCY(Yzm2ev2bix^gGYMxA&L*5gIG1o9;e5gcgbN855iTZN zLb#N08R2rm6@)7ZR}rozTtm2)a2?@#!VQEQ2{#dLCfq`}m2ey3cETNmI|+9Y?k3zr zxR-Dr;eNscga-)^5gsNyLU@$$7~yfk6ND!TPZ6FbJVSVv@EqZJ!V82K2`>>|CcHv; zmGBzjb;28jHwkYM-X^?5c$e@V;eEmfgbxWH5k4k-Lim*M8R2un7lbbfUlG10d_(w_ z@EzfM!ViQW2|p2jCj3J9mGB$kcfucpKM8*k{w6HZ6;MK0lF)(BkBtV~#iuqt6S!s>)I2onfv z64oNDO_)enhcJn-E@3^w`h*P#8xkfHHX=+RY)sgMuqk0P!c@ZMge?fu2wM`iB5Y0A zhOjMRJHqya>4Y5!I}&yxR16=ggpp*680kOP1uL9FJV8z{)7Vv2NDh<985Tba46w0 z!r_D?2uBi*A{PmY8wfWNZX(=FxP@>l;WonU zggXd#67C}0O}K|}FX2AI{e%Yy4-y_CJWP0m@F?Li!sCP|2u~88B0NoahVU%mIl}XV z7YHvBULw3qc!lsP;WfhRgf|Fp65b-bO?Zd!F5x}G`-Be&9}+$yd`$R+@G0Rl!smo9 z2wxJuB79BwhVU)nJHq#b9|%7Zej@x#_=WH*;WxtXgg*#>68<9mO<1BEpoFj_p#z~K zp%Xy}oe5nC8A2(cE1?^qJD~@mC!vhci_n`;PN*RCA@n8mBlIT>APgi7A`B)BAq*u9 zBV-A~2}==15JnP45k?cn5Gn~d!qS9g2vvk-33gzX8_2|EyWB{>_ym{un%Eh!hVGP2?r1k zBpgIIm~aT;P{Lt^!wE+ajwBpKIGS(_;aI|PgyRV(5KbhVL^zpn3gJ}3X@t`WXAsUL zoJBaBa1P;I!g+-A2^SD9BwR$em~aW2SP_eCxQ?<6S@#Ggi=CRLN`KpLJvYuLK&eKp*NwNP(kQJ=u7BF=ua3x z7)TgI7)%&K7)lsM$P$JVmLiNGj3kUAj3$gBR1$K8r3uRrstC&x@`U9G%M->D#u3I7 zRv@fMSc$MQVHLuvgw+VE6V@P1AgoDPi?B9fB4HiEB*MCc^$6<|HXv+Bm`vD+Fom!& zVH3ipgv|(337ZqPAWS1{N!W_8HDMdVwuJ2n+Y_b}b|CCX*ojb0*qKm6m_eu|)Da4V znS@z{*@Sw+E`&LR2EtrIBcX{fkFYDDnGg_K2(5(qgaw3!ghhni2)h&ZAnZxli?BCg zAHu$b{RsOL4j>#zIEZjC;Sj>1gu@7j6OJGpNjQpdG~pP+v4rCY#}iH1!i*PpK9KyMT^9bh?E+AY;xQK8u;S$27gv$t*6Rsd!Nw|t|HQ^e< zwS?;k*As3a+(@{Ia5Lc+!mWhc2)7gNAlyl~i*PsL9>TqZ`v~_F9w0nOc!=;Y;Ss{4 zgvSVv6P_SENqCCzG~pS-vxMge&l6rCyhwP7@G{{Q!mEVW2(J^~AiPOKO&CL{B;*K76P6)V5tb$7 z3Cj_dCyXVGBaA1kKv0 zGogksgHTJTBNPZT39|^Z3H5|s2y+Mxgt>%9LK9&gVOK&kAt1C6S_$(B3kVAdiwL_B zb|>sX*psjqVQ<1dgnbG75%wn>Ksbmea1`Na!ZCzn3C9tR zC!9byk#G{>WWp(gQwgULPA8l}IFoP|;cUV=gmVe!5zZ%EK)8@_5#eIOC4@@}mk}-} zTtT>!a24Td!Zn0z3D*&>C)_}|k#G~?X2LCmTM4%jZYSJ9xRY=f;cmh`gnJ415$-2E zKzNYw5aD6MBZNl@j}aaxJVAJp@D$-`!ZU8}x_d08@wRS!G>@)K@C0|hTB_&@`@--#jQ1UG$-%+xMlJ6<`fs!97`H7OBDfxwx zUn%*GlHV!$gOWcf`HPajDfx$zq;w<>CCNzYe~o7rZO7w4`Jv%r^G&(gV+sm!&}lSI zkcq_8lImsjvmJ)18s$jd$g-|siQ*VL&s zDV$8dd_ozKXi-_ADR{{d8iw`C?wQ@Mf8U*^ zfCI<{dH5-=$t82b#lz?k)wF43n=b`!_>IcKKs^BGThJ-^FHoNlKKz8l`A%3LSo-@0 z|JB=rWP9>HxMW2pSKxrx^xjjaT0D*pQe}mTB6%fcg#|NW9`%Js_}|`LnK58MZoj;K z{d*1S(>L66;Gk()|A)G#{cla3Mq&2l6reps>f?p6h2aJ{`0^U6Qsg`-P38aZL7O_Q zL4$zbHk%*dvO@_su?ChMLhO&iN)sDE?9WK3nFWHjIi5u9uSi%!L#v?|vA+o`8oChs z2NKqhYBd~6>|Y|A29{JUB=&D%)4}3lWYQF3sT;5c@gjrRWUy>QW2=`fOA)q-W&4n9 zebLYqEOorG#QH_H8CX(PL2LtIn}e+nW;n4y(XgM@FpJnmBHO}h7)ETWur0yjb5cuU z(?vro%XTKVvB%RikqueBy-BvMupKPhg4q2=qMUGTMZnu&LVq& zl^sE{2MF86vfYWz6b+eH1GnD;MYgMDIlkS5l{nxrQj*hMG)RkLwui`OK?D7<$32A= z4NZ~b^cD@-)-o=wugLbWEPLEfSkb`sHb6A=vi5c$y@N!yx3z&~2Ma42uo;r%3>6LH z1-6KjoZ%wd&)RS_u?Gp;A1uBMC}}XUBjYu+A$GLL4zwD$HV+nd5LoJ)+)BoXhQU_0 z3uzcDvO_FeOzb#ehk~UReIl`ki-uuVb|SGyitKQ()C=blJ6_m>z>*DPh@BuBMu4T> zeJrsPMRugs+mYBw!b&8$=8q8#qpd9WmSaWsV9RprJ5Ja`z|yF}{p|$NFa|8yz-{M5 zkv-IE;P_4xcC6LFb(|v_q&EFzZ?4E5W;L`Tc80KrTb64+KVAdXvoljIx#Lg0S zyk)sn7l?+Vz>*hTNp_CNPO!2wi7gcNXs}clJpLAohKW{o2FaF+>?F&Eh&@Hv$(C(Q zY(z9j9N4!Ck)2{?+mY;CVWl?NgE2Q0N69yQJob~;%4<2bAm4Y^hWx2V-3 zJHu*d4teJ+VU-PQMMJ*Tz-@h<$c8P;@m(*hXrLN(&J_((7tEe7va_Lq;=uM^AgpL0 z|D22BHITe>iO9~eHnb-8Qeg|h($(BAE*A|&R+i_&D@C^0+R%eETqUg7z#6U*4W(8C zx1H-m_7uzZA`RCITV`4Au{Vl_h*!hSB3o`*F6|a!#RiVUZK6RU$#J+tWamKx#kL38 zaHp{I!IB)0Fn7mm;5NBYWEWZ+xRq=Yb`e-ApJg}4Yv9_vS7aAk4O|yng*^?d4;uC( z%eIS#B~}(UWl7EskzERw+IbPNJB3|lWrq^GTQo=<+7kPK$ewOxdl37euq(h)96AyE zaJ&ZY0gsC8O30GO2a)V!!mhGx2C+|whBLw9b5a*#pAy;CwzLk!J}vB7mgUl(1-l2? zfi;$8z0Zs6TC0~MSt;zMf@oN0WqH(iNo3c9r9b+|d0E(VEKBv_yeb;bwHmlK zUl-Z)EX(%3A*{4XF6}MRaDkQO(eoXVy$~!#oooJGVMPPC>i0#%#a?B$llKS|E#!YUiS6b;g%*s`xh_9|S8&q?h`!#BcSZCUOY z-^FX-=zK4-*IHS&><3}R28xjLQ@jRde-YUmtOjnszY2RJSSpF*`@3kk$;xtF{3)_G zgQfcA-u;)bVgq~pk7$rMuni7U$`0HH4fKIaOBPl%aNDT|mRq%GV7)$(y%QR!<#oh= zj$hcjti3!31mZPtOKm8!8>|=Eq@j_p8!gLYNm{%H;3UTt*?S;Me;l30!ipDMT2s-m z1+sKC&;HFt_Fk}v6t6#>{e%?_B=59Ds^Y+GYmwb<^|B3ZgcS{>+i4fCf!X#VyAv8H zw!D4_2`d_albnor4a{~D+54e^>WuGvIt%-N^{pFe=n}7i+fG-JeaL#j>%Iep6&pB` zS)$<)tCxFAw#YsTmj1Z6^bl4waEt0C8XmVAIA(oB_6f^&f)=N*uup=Gw$%Qj;VCQ2 zW63~~eHtu2n|10SVV|)qxAh^S;aRI8M5PTA+2_2n!-Z8|j1Uc#Rs(x6N@S}nJDT*4 z7WM_pW)XXcXn4_sABnJz8Ynuo`%sI#F2B0G#AZ77a2!FgrzL-}Y)aR#>Is_!>1#71{T!W%wt_ zIZ@d6tzM4$N%0!kx9KALA!Nw|p3!rK{m5!y-}2%$a7zt~>?e@L=OnI+nZk+}+>d9+ zYhdi+lGx(XhwLavW&OoJ0cOgQa*KivOI2!u|jjpOX$C_EgdEqt%c}>}ewV z6Il8qd1r~R;swWSnP?C%m_1!&f3>CYeai}Am4=m~;dg5TaFTPT$o^qjZY8UQRT|ca zhQF*Vx$m4UvVU8aN6&S_iUyA4Iii6omptHc@;s4sz>-d$A;#Ql9k!R+ihtwIUk?OLE+zt`k-? zaJ}6i8X8#*B=6iLvZ+=BxAmKa6%Fk1t)d~_Ys2j#>spq_^*e-Z43@6OKS|DAqM->O zJ}2=gw?Sl^S~f(o8-*1c*o%8aLvzRyLt30IBD46xj@`f#ds>upPmYx2*RW(a;GjKAV-ob0XW>vV4c~ys%;e_t+}Y z(8ZR8|#NzSJt+tw;*8q$sOd>nZmd3s{6jn6Aemr3k4TnRP zYLZJ!7uh4g;&T$Om0e*)1LZhPkSZ^jZ6>luSq(Km&Qpb5?s{MFYp7gJ?Jwve7tn6xrjfhR$SfCt;7bvRrQmh=vm^ z%Qc@VvQxp*A8?Y>Ramis?d>KSq&+a(U1U$PdK;65Y+*$MaFWwgG)#vq`NiXUZ;{Ql zHgFyH5mq#C9QuidJgb4n$pIppZ#A&qfx?Og);m}<%(NOfIzvTv7FhC&*Ny=;?;1t z$d-a7tJsDkgcTdu-tnSAc`-p`BhWy9EPJ%DqJe9EQoIIcj}h6q)?S|VrU=MY*AGfHmuwnx+ zo-m1qWwtb~%>t2KZcF2Sak8+Yf#-li(Xhg5;5w$m8TdcWoPni!U=1b0uJp>DA{ta} zMnv{ZE6b5A7k0H*!`yfcY}tH~U1M$F7PUZF@q$~)BGGWR)ywf+EVAn?%dPq}VU>oZ zqCt7FTx8F+8n`Y_7glLFLo}T4wPBUWUSL^{@0r3X4QGjli@X}vitNQ;@!9NGpDnCt z;MTWZG>8|>o-4AKK?B8$BYB>%O2Y*;YPd*bue6qNtG-y+tE^=l^-D#=)mD~k=yH+0 z#>#SgxI$QE!&Ra|d2x-%UJniQ$9k_7R%y7tMh!QL>`m4(Zf7?Mt2EqFqlVi=_ExKb z+r#a`Dh+qmsNrsry#pG^1D^di2rC-cvQ47lE?XMU(wjy0Zm{$RjC&_xMFU4?t7wo& zGP_-5H(49FU)(3GXaL3&rg#m^?iSfC*0K=E-Y=|Z;P&vKXxM6HIc5)w>^94C93Bx? zG;kaq6Akx4mj1Z?J|VI@z>?en_|JJ#Sf$}<(Xh*_;aQR0ZEfID?m1ya1A9>^8XmA3 zxF5eDvJYAf9LX1j6%8Eqmqo+FRs)aKuZrv=U`dXBdrer;0G#B!AsVDMnSD!SABP5F z_*})?!iomA;a#viXFX|c;P}2TvQJqJAu87#CHdO2rC-6?ffMg-n1In<9|f< zEwJ>*t%P(T1Fs*DQ}|;ql96&8q&+ZOPh{VAEXH@?5H-&zeE-;ikd&a&M4 zGDLQdSGJ?D--D%yb0j;9h99gf_suRM`y*J2B+F(BE0IJ-l5?PFkVrC{C9=O*z3f|e zVSlwY04F&;M8j`ZmPd_VBKy0wf#>et!io(%KJ*n0e|k0a7umlo%XKk8Sfyc*X!ysg zVTj1mQk1M>4MT-h8itDoi33|ULS$2*ff%m0k-{nsqeVk~E6Z^>Br0oJwqZ<^wSANO z&{)yXz{+ye4-?q{Sd!yN9xkldz@;528X9_SI7(z2S(Y_S5LPs>4HHE}n%9QOBAX62 z8p&gX6%A~|v7$jD$?WkW+r(<%HhF@uqJg7+V!Q@sPZHVY)-pZ;lq0NY;L>tMLklYl zoaE$*Y)i{>Z^;){G;nD%MT2<3>}-*3W4+)Jyg*o`VNQ)2ibQsQYXk3@7Yo}SEY$;# z>!qS0WMzSqoHCK^0G1eTQ4wLq24o~T6=3(^L-d?Ev-3o@lP!(g!+c>y1ADwsG#p@U z;P{>@vRy38_AVAS)9MAr6DHBn)vIBd$R6m`uv}PW!wS)$>SCqHc83PCioIARtY~0+ zSBr)owlv@*XN}1Av@G}TwZirSOLf8X#X8Z@+sbm^JV#{vfTfbSJ)A47*uarIUoD08Tv%npm7+n}aJ9$|g$DA1J-$X* z(ZG?sE?xt(H;C*(Rs)9NB^r14rjx(QufxmrL6wvWHuicj&hZ zD;jvMu|qUSU2q-m64~)q1Fs2o3o9CU zWLaKwJub47!BP*%APr9lD>iUxPl*Qcf-QSSWRLZh_N=hSS-l*|=S9QuR+j6cN@P#4 zEZ4;g!cMgsIKD55h7+wUk4CSE>@=`cJ0r=9SA{*v%4QM!x@gF;ESL7C$W8}KR&^lR zw}h2A@Tl>QXqaI&@Y&G!L^cmBMRG7{cwg9jD?5nT4@HASlD+s?WM^7ge(U8EVP}D* zKeqQX(J}g=BE;y2D!Y;A0^pE3;hNWJ%iO4Pk>p+feXe#V-D~q@! zIn71G>0Y*l$gZ#&cqC{k>={;;Lglm;4J*BDTajG_mgM*haywzqw6gn?hW4UiwU_N6 zvS)!MFW80*Vb^%sPNHG0)j%cIZ-ywh((jax4HuSzLKzBmRH&0eofSGjp)Lw# zD%4e>0~P9~P?kd770OnqheACS>ZMR`i+t-)&0Q<6s=U8)OV!fK4OPo4cULV9Ro)M< zt!i22rpgVK+c@0?yx!@fwDeV|pF;f=8lccXg$5}!SfL>b4YkO34y-=csl2Rm2TWd8 zwJgh6yrpt8&~n(ksd7iv`l@wRt6}~25FFW7xfA4W&}%DqRh?e7E>w9R;4Uk_t7>`G z>7mL^MidA-?xV}9Rv|FUSaxTqax+J13p8ypCGM`ghr$NsJFC`YJHwQ@!xcJ6p%Ds= zRA`h!qZK+>p+giJqtKxWja6uzLWe1IxI#xLbfiM#6*@|x2?`yp&_snMDKuH3V=VHW zhYAnid$B{2idng3&J-netU|{rbi6_*C^Xd~-v!X#C-xQ6Aynt?%6n1Q%R`kLtJa`x ztPRPRUZW-LsN80L?aw(;>6@m|NebmCG+m)wg=Q#}r%=8^VTEQ|pZd?3@N(>y8+nqvn zWsyR~3Y92Ss?aG4m09Gw4CObiybdnzsN5Z@TFD+_XmBD*zFeUSh2|x57m2GOF*UwAH&&emU+zN_LX*kDILQMj!K$TIYtUo1$%wcO;h>>* zGa4K99BzBtd7#|{YJIk|LRof(LMs(orO=rQtybtPh1MvvR-v;MTBp!@h0amvT!qe4 z=zNQO*CKZRs`Fi-^js)y9pECR{bGeKQRq^IE>q}o zg|1NON`F#jMul!t=w^j(QRr5MZd2%Xh3-)3PKEAL=x&8J zD6~#-RPR9s>)`>wNHQ1v^j}TU#(SZeXEk>BFG?-Ma$Hmm- z?}1LtR(6?Jxgk45!>?JMV$8vsb#RD&d^fKUKiHc&9^aA^8ayo2rScMtKs5DWtm-l( zG;$Wxz58_?Vu~#elci^~$*^fF%H2WZ6c&vklu5(5Sq@WA!oWsL#m$u)u*}>I|5z=j z=xfodX~~QQDEJND`9RcS-o;1>n`w=`4WD2dn@G#*hg4`ER_GCh9#!Zug&tSv35A|i z=qZJsR_Gapo>k~Mg`QWaQlTn^UQp;ogeyYFDpXxl}r!IfA5RPHowh18)%#qK1i zRc*o&4I0is9vTp>7NTvAK2jNRcN*`CrMJM+PL&r^v-2)M;%{znbMl^Y^?ijtQ0PO2 zKC;Mn8;WXGc|CdnIf1zxD;>{V^Rc?>6NNri=re^rSLh3czEtQdg}zqk8->1A=sSh> zDD=HTKPdF0LO&_=vqHZp^s7R@DfGKSe<<{)LVqdrw?h9YM31$afiZh5jzY-_r6^QS zq52B>6!I(7K%sy_L4_JB)JUOJh0+vCSIAYUu|iE0YN}8(g_z~({hD|%8f`jIDM3=z6$kIsJ}u36dI_|AcY1iG(@4H z3Jp_exIzahG{Pd^Cb&Gb`c#0;D(r({7Yhpye5UCL9&h(7%xI3nt=bxAq^Ph9 zMdSWGsG``WSdD5%Df>n%bg)8)C^SZ)LlqjU&^Uz-Q|NGoj!@`Gi+o$);G)Xw(Eje1 z`IX|dl$sApp0%~fcgLh}_`V3BV-3axP$ZK0B1q|m7fEmr6>g_bC^RH0=G zEm!Dtg;rSP+W~72)RP?T@nd+adH3xMxo{^g>|A-Rw_lqHB5uiy`Cz3gdX++FDzsX( z?}qmNxcxL6e{zpU11{q^E z*CO8oF!SijtBo~0Gw?H$s7)}D?}a_L-rlj01~;0zF+!SO=9}8PU;k;@&Uvb|^A);4 zp$iqdNTG`rx+Jm?OdZSxK^R-6uMra8x*=xp_?r7J%(a~1;rur z)0n-Tnet`w`z=5d<`ck1Ibu+WYk9znxu+-Nv2DgG$~5|_HPj=c-IE%<<5)Sf;gqaUibC}is;`hwA-_Tm6bdL5RH&gsjTA~% zC{3YsgcYPEfs2Ik?&2Ik{!1fi=m%Z zakz`EI@7G=a4X6Uf+qr}wNlkap|%ROQ)qvSd~c)B(f`TwZ*HU>OWG^_A%!|9l%Y^Z zg*qwJS)l_I>Y`AlLR}R)P@!%LWhvBMp=^bEDAZG-UJCVAsEI z3Jq3hh(bdZ8m7>2g$`0^ghC?~8l})^g$`Ee5QWAlbf`jO6&k0|VG13t&=Cq9snB?Z zj#6lXLPsk!QK3l+O;+d_g{CNUtU|{rbi6_*C^S`}6BU}K&`ApAC^TK6T!m&Rl&4U> zLScnwDl|)>*$NdXbh1UhcQMwa<(8G@E(n#(4B=d9q}-XKL<Jay%Kg%&8ZP_%vwt*xwtCuh0z&-Kfw_3f-*G zEehSL&}|CcuFxF{-Ko%B7Wuw|(=D{qbP9%?z0bK@U9&;1`5xEUwLH$e#NWU=8`V{t zG#gzF%_Q zRm$H}=zWDg5H){5O@H-VbPJyJ(FhMq>{CMgTjNvF50%P~MCD&lIT60l-8{WWK+h0y zqBg`w>2TwX&K>_Q0w27ggJ*b@7~R@4hlHXJF`bW9ai2(W|Dd?e@k=0@X|Z8V7t=H1 zZJ}^sBGe=L&tH(3c8*rO?+3eWTE~3Vo;09)-SF=m&*ox=%r}6r(VRRcvr)?!c%#z?KM|%$tY(GwIJDt-!Bb3FYq_TAOcoxC!gJIqABW|~&2+eS4Ne!CBe1w;U*qazs|xEO71k6LMmL%C z<_e!XH+SG<4&P)_@#a`qbQwXXZ=Ie>T`z@tE7V7!z6$kIsJ}u36dI_|AcY1iG(@4H z3Jp_exJAC^2txNt+4ZLu%Dd66&{5Dez30rTHDFkRiZz`HlRXZm;q@%%1f_YZ zXl?_|$DxbF)(yBedU%3gmyMoB_q;A^RvXcEFU?on<2Qsl_UhdS|MkUx{hSk3q0 z*$NdXbh1Ko6e?7xNTFhdN)#$p=oE#@6pAQRu26+VzV-;Exe-t;xLRYvXgF7{3E`S9 zI8>`of!6YvbDk=9zCsHWTBy(>g-%syu|lUQv_zq$3N2G;xk9Hav_hdX6k4g!DuvEe zXthFTDYQnRwHEm@5Zm|-m$Q}VI)&CNbdEyjDs-Mg=PPu9LKiA@kwv~vFs&6GYUAk= zT}-`<;#@3pogr6T{ZyGb7;6R$^vasq}og|4v3*9AtmSL0u`mG^e%N_Fj33SF(xH40s;&~*x3uh0z&-Kfw_ z3f-*GEehRgk*_OPnHeZ+*z~(iU3I%ccPMnHLU$>2w?Z2f+NjVbh3-*kvqD=Gx>upC z7WultyViIRjb=k_#w=0o7d+r4L1&u?Wmy8A>b8&Z9B6QITFW;!JieG$RF zmPKC;uo)|CI={Ky*`XBf6ooyZunF2I9|Xr;`tA_7T4$FM->uO73O%6Eg9<&Q(8CHn zqR^uXJ*Lp(3O%9FlL|eh(9;S%qtLSoJ*Uv~3RNmprO*osy=alIH-c)usw6sLndLjx zl-d3Ad>M!HlG5_BLa!+FszR?R^twWCDD<*Yao*`;c&k@y$FVB-}{;j z9jl}cO{baokTN`E$G184l_sA;euWw+6i_H=k#7VnNX^d9rZWa5GfocYl{*cUWFv)A z6-rYmT_IPY#tJo2sHsBD6l$)}ehRfvsHH-!Eb@(le|z8UFP|MQc3LY9Z4_#&P&?6n zFtoRkyRn*X9QIe&wO1%4TE;-jsnu7F=mPeY>zdCe^D9}^R*f{aaI2ATXQ}B?jQ3u( zXU}Y>gEA~b3>yo>W}8Oi%feH;$Xs|*<6dJ0~FolLIbdW+L6dI|}D1}BVbg)8)SmZkbv1x7l5N%PK zL;Lgwq6yL%b=jc`ja6uzLWe1IxI#xLbfiM#6*@|x2?`yp&_snMDKuH3V-%XA(6JWz z#v?3?D{r89V8WxV9QzIx?;>Mb#ALUMr$X!))4m(+JVS)Pu#5II(Z}igMtC!szwQki z?{<%ix1K$(zuNC5!Mw`15+Obk6mgCdTaJP)9Z*H|(iZfZTZ8Hg&f}FQCnz*kp%WFF zrqD?W*^J-{bLHX=|bwi%*%#h+HqPR8%MWrQW<@DVv z{LEa{f5P$x~+LD->2}rb4q6nr)G9GRhl{@Y9}O^;=o45A68S{n%!-0)DbU zRYg0O=GhANJ`0rUlNFkyP@zIa3Kc6-6Lm!r1~PwIZcT#QD~_` z%S6=)Q02KBU#_H1S7?PoXDGDNBHxM7*8xxCVy{Bf_}Fxny829oRx5OtLTeOSYmx6H zlsb4H9>1fr@isL*)}@;v`aVfI4RE$nyH26?3Z0|SxeA@9(D@2opwNX1U8K;(3SFYm zr3zi9(B%qUq0p5U`KBXK+1RDoMnm&HKEAz5sk&OBYZSUxq3aa7UZEQlx>2E<6uMcV zTNJugq1!C-&482tZ(h8+T^VqPLU$^3mqK@21sXi+ly}sR51ggL@6`?L4J~o>u4?xnvG5 zIi&L1*hT;zztdu+rZ30kCpYw*zUEWp&#DrhQ|NhxDix}-$X5hgTnv@!kcRVuWEUg5 zp!&k)fBU>3_Nd@RDYpdW4ythkr}f=VS~u`H2HI=E4n*9l!+A+L`?5l>DD`#XN7)I=vRw;bKzc3?mM(g#vM5>zPv1o`-Y?6 zl(OGN*?cH#Pp28oI6=#28WIpC&vC&&)U|&q^p|K_2u=O#eBGt?8>qjP%6}B1Uz_vn zH7b0bU=)*F$cAtTRdJV`5jm9ekH5DzrDLOW59sietG@+_ZrlvZ@A~cLDRDS z4|Pv-8(4=^U4IZCqd#_&I4%ZGqpD1C8^%0MO;Asl7*Erzr-7xwfn}5|r<_zb9XZt2 z1E&+Yf|4^RSxMRT+{SX@D#Gb*6JYw~jlh|NQ~XVV6S0M?rWl+>J|?@(BnE4UTuaH> zl#}Wax{%0=D7lz&Qr(uw;r4O~ z;S_(X1dYa}?4H|N0&y9|;Bq3<{B0A|=PQiQ?X1t3FWM)lr&m&KUPbOEyCJFKs|lyO z9e}xoU&G<>XC!D0uB8}UXJXJ%VsO2QK_`j94JHPi6Ep@lQVeb~F*rbCaI=X)7m2|w zCI*=a8iQLY2Dh0Qbd?y~PUIa#rny;`#CVXMpfR|UJWX+Xi2HXDPWSgpP#HD0zXB7m@f!BxrnI zA`f3if?hgOg7gaEbpPlC_4!qDFU37r+V$HU^dk8rv>Td<#E(16G^caD$&BUA{?i<2M;HKe2wlAyl`8HqTbrjp+& zZn4B6ja*JAGRCU(P>3wYa)}~g>p?B!s+fJ5o$|9?I_tFNzh#^g6)mqX~6t&CPXqFD9NCt zBPE?E>5L>b*}nvWiP-NBAoo(-r4pAeOs}gj3wp zG-5q1xy-?ge6gV)J$Ta`O3F`AW ze=a0DesA_@90OVBusCl`-Gg30i53C08>k0vtBy-LW5gwx%t zB|?)3r?}Tj{$!JXgWzKfz7d!gGgE*A$5L_}CC5{80ur39xCt_eIHgWy_uQK$Bqx&3 z(z##%5LOt6!BsrODHL&J&=iC8aXh)BKNs zOvErRGd@3ReMWF$%jT>C4417}dO5=qeiRD#A~75SawJ}q%L zlU!a+WSaYo1mi3s*ASWPe>On_v6kFRai5bwoJ~HjBQnijnV>$eH$GR1&*us|lyLABxa5By=q$*HLmkB{xuV zBPBN>!M4{&a`nxGQ`}GF>RU+YRwC2f&xO2=$lDG1g zfOCk_R}zqogwx$`1#dF=JBiIbz=6$_Y(WzA?@7?O+)I9^xZg`0wvx-+DA`WQeU$8= zWG5xNkf81TAW_;)y*5KB`bKt-ilzfRK=kxtHQ*iqCt<=kM8Px0{eZ5KecqfVoxtNJ2kR@-vd4zk7lP=NIxj#m$yD z{7NqWMr4}5XM+0tyYab~`1}XqbhkG!*ZrRqgTE;G8%faZD}w(Jm(&c2g9P^t10*Mz zaJoBCRHP72@ecw{#M^^<6odNYW3oF~V&F3|7-lgZh#i!m?)%C82FCpn;(mbL_m4_Y zpM&IHiaR=5yY9jG$o-`ug`<%P$Cz0DIQub>O8IG&pXNUtWFq#6baF4nJwkkT$>+wD zG@+bS_bAC}N@O!inwy-7lCvL?EhuSea*mOlRz$WYGR=Q1$V7}_8*(qjJx+XXOFp+_ zpWWj@a#P!%h5RQZXbjq$7)-S>z%J}b5{?jMrTeERsOKHvULb>fOm=gl?)&o+)ZLEc zZYSeze$3sO3F>ZVa`yn^?kwwWpbKHVoCC~#JClUEQgR@YpnI|ib|Wqe2}Zxd1dUL4 zaxcX#5}&gPr@O@xoE{W|o|N=L67-iOXdHTz-zjdX#Gwzl+?U8SH)2T)i*qHvALaL_ zWB>`Jx(g&{Ad!QJOmj~aaxmd^cQG)xxgjJpl#*dcg6P^2#q0}?yi>nLrwk~$sY?G z7)NB9|7?(n*kTSdKCcs>4=0@No-6nW#{TmY)cqrk`xl72E}^v6CE6ey6zCNE}We zm#0#4BITsI*V`P-UN?!*G|EbMZxwu!!FLGGq3fp;ndZL>WFiJGm)uKn@3uZ8Je$P* z8RUK*yYFrhGM{j|e`|t5cc?xy)) zPFQze5qD2D75iFZdKy?v?xnb|i@T>$?Jl8YDJ9D&yOICR1oeJ7xtHR;WxdA={9SzH zySLL#)_a0iP&m$@WF?ZI|NR6F$tvUb2jcgc27f4cHHF|TO4c9=`aeq0IIJ~(e=L5V zO)jq^GTHr1$n{3(bHV2@_J5I}F*%oFaGr_5m*VsJCI(*#zQDxb>jaI#g%pE}Obose zpD!lz5=t(mfI;{y!7c=i80X ze~Hg`F!ukGpzhvj+)Zk17f^Qr2ks^^*-a60gNZ?X;6&Wf-DqOq6L&WmcN-+AyZ0D( z1LE#x;J_A2?nM&xH%w5!w;I12iQn58`_mHC-R;KRbaD4S;J^+dlieml?j&-TA)5=i zn{bN1MS=$Aes<4oDegXCa2vr70tX%b7{ z9mMY^$mJ&~d5V&!k+_{C^BJO^rQ|szLH_{>8kFbZ9X24kh~Je4X9}*O5WGOii%5e0 zt_d24myF*Bir+6A++FZ16oOZYO!oIk&=|aCeC{bezix0Z!EaCu-lXI$Btd`g1dYSn z#_vAj_dDeByF@0t{e^tb2n`VYJ_&t5$%jaS{(%V^oR5s(gT(KT$>mQd`IP*2hf2n0 z#C?tgQ9DS;FNplokRycripZ}i`36bQ9VHpxl3d(<7I*&u4*W^U zUr2)Pv6At(5j;-tKO~dX9EpP@=s!L|1C$K!&^=BNzf%mJD!3knpgtu&Btid)2^t5# z@p~HFqdlHL19CY)Nsy9;lr*9wm69|{(kXE%X^bS*=bj`%YeG21pOc`mYRc}p)5YCp z6ockOCi`b3sL%TupYz1$7UXkFN?IWay7`jP+6c}R+{WNp6c_yYXVZrS{O+B$#?J!r zyPd%&i{En+)bIU`pM~Ogd*DEb$Yi%joG%vVsR<;`S5&zr;&lfTg;K#86orl)1^+4H zJUyFF9Ona_jL&7_b7%7T07|+b3Az!<$Rw^S5;TblArB;+;?AYu;LksgKG3*8e~A+% zcfL5>%{aV39A2294ll9}x~E#t@uM7z6V%t!tc!sxYU15Z6JKHj;9r`cUM~}`vrUs; zE)JibpboDPhkF=@&k%=KCaA-!#NnRQu6t3^8%fYTQ#@atpq`&4p7$|Ty+&|f#{RX5 z>9_w>{MIH8#Uxn&J= z^2)-w=5u>3+AU{hLAWqKr+h(aIHx$bDBPwPrdqO~cxH(R)RjjU!&|4GbJi`U+od$m&cP1@}l!uG5Cs)9~>Aj~; zwRl`{d7s`{p`u7$Nm*gRjI7XN$? zhgt_W6K4s$C6DFLSqeZ^p5*urLU_`TD2S8~jg+GrsfvgDMu2P(shB|_js)v3gJ?V5 zI^t@QOlW9pmTFTzQ|&qNO|)9Y`9`9=W`*IIt)^mk02DP)W{m zlutJJMnkT7S;4H?H4D~19YU?Np+({H*(Lco)J|x{+IFZVsBH|Nlan(FBNetxD$5?Mo1gNvONu#ar? zjX@cQL^ai3My(o)D+&vZ&ND>kq0kvClXbEk(PBKd$Mi}qXKRy5H#t%kMnf+SmCr7S zum>xpw6Q2{jT6;fcX4%vYA*)po*Np5FxO(*DwxKNI>|Q<#`z-UWvE!+Vfb8++GNl< zQ;a_xT#u5u;j*%V{BXz!h9;Lx;wv&ua01qKx|CgCjjN>>QB!ix@(?~E)_~x4dIa<* zmzM-W#I6-~JXtcctfVM_4cjE=Z1C3J3CIZ?RceOti0^2?)DjDM_zXJhAk9r@A~Fkd zBawnx#hJPJ`DNiq1cUV4+`@`*h`LZ#cz!977_dU&`87m-FxO_LmCcG4n>~`1(g=`c z+Hxqg*jX>-PC~hp_qp7z`%ntSnTj|^ikOTdrr08ErTiO@io^3lsL$eZ_N^-d;ql{K zDdZRwGIDQ)i22o3iqYqZzA4amj&drQP0JpMZNG}@5LEe`;L2zq579P~2K$~`Xk?_ZZug{~c$+#F9w!uzCmZ!m<2$*I}M6%6{@{Gx472ymFXn}BHBrM~5#+Y27j3J>AO;gu;4CAO==ONhA>tmLNVN88qGWljk zO}#-(ods&}UQCVJ26JOA-c-+-Ya&yd-*(l7HUxKw**jEs>PBOK%BctG7B$+2pxr z$cQffwn-riP{?v;pGv9A4^m*7kuJC9O0LPG?PAeFSoHE<=NR0th9Wbth@@sKcYnAM z$Tlm#Q56M+`Qfrm@jo&ndt_-T?t-~VM5gwf<{6$yC@{06ER0;Y+3@FHvD%s)fJk5XXU;({M};z zQrQ3Q|FYo+JgpVhhcea`cs;8CsG2jW&eHL^ts6%({riaW8=YKbe zJt=mqfgP{?FZ(i0nX&F{0<#aZn2lh3pN?tD$jUHnKcYJ`4;8g`;-}!JbmA0Rm_7}H zm&XN6|cT^e;s?3z@GJr~2C zV`?!6%`+<$ZwO(rA-aAygJMB`SGL=h@q(0bNzG-bCG|cP!z(FO#*0$Mr6}XdO~cD!Q%qHo6YOcsRx6wTRbx-VT=$8a&Ku z_SoXRI$rx?=%{NRd|twm7wdPO=2#69m3oNt^#+wM=Fx(0U`8@==F6Cojj#^Wo5zm zhLm$P%JFK8@UZW>M3p6TRfxKf9g;n=ROvO{L%b=aU4zorIG!u&F0L-u>NH^AS9x#2 zG^uVLG2iwOT;1=0u=RH>%-@geFR!Giw4jjdFQ)-+jY}u_S zFAIk=lo%}=b=@w*;+RK3I=@C&io>2*X zX0h`T6xu2ER;ZLGE4Sfu{VDX|A?SQ8W!?^Q$iA1E(IulBtLTPLT-YbjByFBI)jstQ zydCzLnB(~FKxrc~0zty_H&*hcPX++OhA=^((P( zBP_gQuX8-jvEK4|AsQMsEYuTm!hTA0!#IOCvj4Lsfv13dSQ2}rv-P@|rhU)sj-@fL zF38H*a>8?Y4J&4v^=n-RQ(_V z+ev`;a`bBcM-kWofkw1t6`Ac_?f)eCyO1A@K8}tA0F#`bk!uI8`$42(yDlehK_0fh zXtC;hfUb$*p!17pdk{J41;sepLXShe1^y}`4?`rtYhJozHTNdJ#majW+2%gtF??!f z56P$y1fAa@FLeuhlbk<9`{TH%nmd0=?vtdP+LXEF`72({-y-<57W_x}XKPZQgu@m# zTF)at?bz7`h2hZ@uE`XwN^pTF3_1?PmGQ|SxM5b2B+lC8^B$zJF-0<8q|EZ!;o_Vb zCHV_XJ=K%UmnoATOnEZv$Cu+1=~p2gEG@zQEA94|m^$!F?(4|)Jl1R={F~stk2UFx z3A^q1-bPk)o=)O!W`_ITK~@9P+RHGZ1aT2Bh2I4~OL%Tpk<7S@Lrl}%A~*1o;=0CN zo>}4)M0Z0PN~!Om)Khe+JiEkQSgqvPJR=vIebcz>YMW^qN%`-i{3{*NVcgy)1L|^J z)YWOyzE3)-Fjm?pKL<+#!R_+{Z(RoZQO8S{ypNEVYR|fPw;kMgZH?uMPjH2=Fn0!; zt=Yb4f*fuepCRY)eH?i+SVJhIo6+PMbwk}k8AHt4sHw*YUj8=&VY}?-C@c+2xV+e| zf$t0AqW6GYO+lx*82%+0ZuWYN;rmI>*T{+AcWDtT>RV)|mf{W(XQ|3^aC|D?_Z_Gp zQ;dU7OVPClIW=t4v_d`y=?CPOmGb#H-l@pXv6^w{&by~#46U}SLM>M|Gpq=!$qFe0 zvx|8H#onva{z+>w;71rRwN3+Q7bUKTa2Zl=4Vx$?-|W=1k;pl|pHP;$MHOLpwm`N`~_J>n7oQGIeMZKufueAuhzP{TXdvR7syJsos|76%3fHl>}Y5A zUR=HW*m&b{EY`oh7uPoC>@SA=219Og{!>fpio`zKw(o;a`&ga-4!c|Nq(Z$joR5Q} zu`W8?_Xo1mb-%^@5)!ZfMD}SlTxi-zW(_%^oEpfw+~2l-I*2iU!I$x` zu~t!Q(XnR~8B+M)D7>id!eem_(WqC0)Am>z_1GFzWztpr@WJ%lj#BnNDEr_VF7P-W zSGJ4|Y=>vq=_D$Xa2#YkZ8*d?38RxcSPi)~)^04IbVbY(d+Sz%n%a6>XED!#c{~0` z=G9OS_OwTcYvJD*yzgD`0JtLaKi@cY0m1WsGJG?W6%MiEp~GNW0c1*UJ>Vi13-xz|q7X2;R=Z4Je1tZP9U`K*`LUk{Kt5^YHwjTTCbz6>5l2sn{%yL~`bY z7tAXu%MUtPQc5Gr#F6Y$Y~^9dD4S*17u`i54FbV=vvCJVi_1u0I~kLWT%K566Qv_rle|as zqbH_uJ5UhG_Lwou^BJ2$lCRq~gftP8B%6k@O))N76~p)`N-RT#KR#21pSSvB7smV= z=JAp8Yi^_g+See{V$TesR5nGEEe;h#LeWxr)j^k_hX?oxLx7)vl+zg&(4Nb3Yr2e# z2?V0*s14!D@@&NzAznOTrDIRWFl1|EWn@#4S-RY8?JMtn1Oi$HDhu+t6zp^?c6vzr zZHyM$&}@A0+SJ^@^^^wO6xmyoXI2#F(UXXreQLiojq0^E;867z9E#RytxcF$cAlHL zP>#og8b>RQI;i> zCYmt$(_30ib80o*^-YTi45eYOk7Tz%HtmS#nJt7fD6=mz?Eu{h*=B%ljZaPSd^a+? zq^#Uip+Tpggsu%lUhzzVv0Hf0!pm4;CNlHc#4%?^VM*Q`!_!trjcsEQyyMFBIE3!v zLDX+z5~N7-=`-c(9*A6iMIumxYsizqZ?V%~yle|EANyZ&BIoYwf z5fRNLyB0eGQLrpG_}+XF2wraN4@*2dh5U?Wuw;gi*?@<6G%hm$4iOhJkT==pMW3kZ zbF6Zu9jM&~~@q^>~ht7$cl zN#vXv;$v@=jfTI#ksl@_roAD~DTM=uUQQ7FTY;A9CZSzR6rVp&S z-TCj#sVgY^YT&-N(D5)`S}5O09_1mp$xZ;lEwnG3Ygmv^hb}x1JWCPbzA=8m-JMj_7mqRc|;&Xs{3irUElPhA5 zZ#=SE^2V<@2NcGM(SkB;1{KT=5BD8~+@{qt&~s*piX`6z2nAzrd-{$BZXh`5y_tOac)`}`icwfdsg%?f!)U9CARjdnoKpX>)!Da zM}|dR!ti8wyQ01gGXnwn7R%L64U2QqBUjxq2v;XPS5&WGQeUmoV^>sjdKjjTxY{S_ zn*0A^=VWOUIjHq$zvPB|AT_KxlAlX$Ccg6*N^Tx9n)y?0;*U0x&tVFDI?GdE}Taa(*#5242O9pNsk0$BWO;{s4R2WPkWPmEklUP zV1kw!XMv3Bbd0GC6Ex4za=C5&_IU+sB->#`*DP*Q7Y%`e@L$(`8R8(T7e2un@eq72t{em} zXXYSM!Cdn#9yuj5%@>ALNNy43;(o@Qqq2wW=1Oh}avS0BU0zPX%$#z()o;#H&6E67 zkYAr4ZJQHV^Ccq^r*<`sk_#la0=a2?1S>iL8pR7CVHZI2AfsNnn-3znusG-}5;Y6B z5Pq`7BRTJSohrGDkQ<0T@-TPiizRb0GF#wu8@^Eqw^6Z~E~e)+i1Ki~1fqv}H<>*< z)UqATb!rmaU3mAVxXJS#Pk=_bC1Su*Xf-FtLKK>%!Y>DJPmXcMGGs_abGo^WUvP-kuh{uNqI@^O8S5Q9N9PeEp zujU+)Js+~(2kLwp_*~?26Tc9-v-a^AT-^tdyJci%bmJk7AKZHm$#u)Pz3@&d8?BG~2Qy+1p&UMLn{f}DZTmsn$mx3T8H+YU1M(h>yF-1eFrZVnfDO62kX zVh_RN#3f?Fr6{O@oHjI3zSJYkS6}8K`0C5$>dSF;YHl9BC@5lgD9qq;g$P_(i@=p4 za5V|w`}^{9L``5S#poฬ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�Lz;6OB%HEJ& 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 z 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 diff --git a/TreeConverter/TreeConversion/syntax_tree_visitor.cs b/TreeConverter/TreeConversion/syntax_tree_visitor.cs index 6ff05c790..1aa0a2e12 100644 --- a/TreeConverter/TreeConversion/syntax_tree_visitor.cs +++ b/TreeConverter/TreeConversion/syntax_tree_visitor.cs @@ -671,7 +671,7 @@ namespace PascalABCCompiler.TreeConverter convertion_data_and_alghoritms.check_node_parser_error(st); - st = prepare_statement(st); + //st = prepare_statement(st); statement_node sn = ret.visit(st); //sn.loc=get_location(st); @@ -742,7 +742,7 @@ namespace PascalABCCompiler.TreeConverter }*/ //(ssyy) DS, сделай нормальное дерево! // 2015 год - проблема по-прежнему актуальна: expression не должно быть потомком statement - private SyntaxTree.statement prepare_statement(SyntaxTree.statement st) // логика: если это вызов функции, то сделать из него вызов процедуры. И это - единственное место для преобразования + /*private SyntaxTree.statement prepare_statement(SyntaxTree.statement st) // логика: если это вызов функции, то сделать из него вызов процедуры. И это - единственное место для преобразования { SyntaxTree.method_call mc = null; // st as SyntaxTree.method_call; if (mc == null) @@ -753,7 +753,7 @@ namespace PascalABCCompiler.TreeConverter { return new SyntaxTree.procedure_call(mc); } - } + } */ internal statement_node convert_strong(SyntaxTree.statement st) { @@ -779,7 +779,7 @@ namespace PascalABCCompiler.TreeConverter convertion_data_and_alghoritms.check_node_parser_error(st); - st = prepare_statement(st); + //st = prepare_statement(st); statement_node sn = null; //try { diff --git a/Utils/NodesGeneratorNew/NodesGenerator.v12.suo b/Utils/NodesGeneratorNew/NodesGenerator.v12.suo index 805a62f5f9b70a2f2605e9031d1b3feca980df26..8ad7a4f8bc6509cb4c7d741931c88eea4d2ed4ac 100644 GIT binary patch delta 2983 zcmc&$ZERCz6u#%SEA3WCWumO)(4%{QXjBReqD058+C*clX!MT}eyCANASyA@#AH7hL88=i+S@rX@hc{t{-2zUs z?F4M8DuKswLJq?|3>m^V?Sa%Z)Fv%KFy>&DE!SI09?hHJVU>hhf}4;{c#&{3VT>?~ zkVC+3qch9{SY}cnWhD~4yLsdvB~%a==xq+ty!&*&V^i!~$*$IY8|lS_`Gh(>#$%?F zy;S#?lg^T)GO3;nUho&f0ND+MMnV&T2dyOCOt_t}`Ect7RNL%g+z-xX9+j2{sr4bk z4#FV<$3vta*6l}hJxF@DZgU@%Y`hA=?3V90|Lyy~Z|eQ?EG#CPiO;~oJLALijWZKg zLIxp|z-`PB_hW_%31$K_#4#6XW@s9L8Co}&3=4r7Vm34aPm*Sc2QfpuI5Wh4k*@!g zp~I~?KBj~Ru;i0XluY^@`$vql{#T6f$}EowODD`hr!7~j%={SO20!9x1i+`A<$^yI5!Mmb>#=Uq z8wnVkeo%wl1VofZ^BpwPipklOH8QN?<7k%^D~vfClwcL93kY|U5tt|78MXyOk@maGk~9|Tj7 z>?a)BwQ^H-q_e>ytt7uJy-Kk2B%rg{W4u$391S)B%*W6?x_&NRPIlg^I#inXF5^XjmdugGbfNTL~ z=q7zu=);N4XU+VDSfq!->^#UfM6!oKG$i(t-bZ*+_c?Z8ip_pHWuKiAKTLLnfP`lV z!vtRYIRcMic}=%pPH9UjO24?vT3nI#PU*c4P8m5$_GyA$kG)QM;px_Lh_qjZB{SlPOhBc&#WfB?F368L-AYH32e`384KnFwGR{Y&8ENi!^8NC5ZHX zVCFAaB_WmIy_Dc<_u-ZryDeQ@+<|S}UsGUZgL|_UUOydEu5G_GY{0e4OYuUrU90=<4B#OxQ@l_Pm0H~oXAIG+#^|_=dwz6l?(1I}qL*cy z;rGV8MmPs!S6%`b=FP>-Rw$5h=$9alzLJgOm;A978SF4(1*6!X4PNn#0s8UW+YV~$ z5}7%01rvD!h!sC*rN z(+sQVVR4I!Ojs;b3v`OkEGQkx1X;xAfD%(|5C@^oquHy=w1ppXY6Vk*m1x3&zuz}V;~SF;SDh$d3NW%9oT7Xg?54Bw zNGKI?7dWckA(m585&x2G{-8J-UWQG+07YM5Nqm&w+zE|ut&)Ca6P7!Kndja zB@?HGeg~xOQlE4$CDTqyC8K~Ms2A}C5VZFD{0(J+746-HExwpi3LdbRNo~}*UmwsX l^-?VhwF=@w?Vwvtulf7eMW~xVIid6b#FS!U?u5Dy;8)zf46XnG delta 2683 zcmcgudrTB(5Z_t$@Hme122L_|5PQuNkGePV^1 zmal1A+nk2dYKgK*FELGf)u!=}rtuHk)TS}CX<}_mYmBcNmCnF{XieIfrjz_KkMEoL z=9`_JUG;mN>eIEQg~v;hq!1qV_4N^x0tmX(MNzWJr(7!CcKiaoNETluHp>g}ocaRZ zm0MshHU+ps_P~HEyBQD^OYQ>-!oi63lZoURgg`r0<+_mG z{6B^&tKv2}53|hA!(qH7y9P?TZg^=qPbLF-bAg$dk071%;)3c4PZpZ@aiN(raiN(H z7MkV$LQkdz4#b6?K$zs$|La0WQ`~1Nbo#RtdM9<~F2ZgEgT=U?qyq%Lr)D!;fc6Gs z@@te3S7DI$lD^+>J3yQ_xBB(hiN8rWLJ;jm5%D4Zg|~>mO*l$;$8UR=_+dg90b3Tw zjQx;=Fan=6-p{*SV<`J+t3+tSWoiM_0Vb< zL$~@G+@V=Pz=zPPgoR1*nlrQ&+%Zmg8Jl7j={bjSgG)DKjNmq9w~6@XSXUY}3fc(|~?ZXX?R28*KdF+1v0Tpg87Jk4#-Rp$G59COwK zL}Sy&MS6~}8+6=6j(Y9SDI;WeShk*r0l(lJ6P;lfm4YE9ycH{QEVw#$BHCn=HgD?Z z0a$S*9^-RM&8tJob`)f8ySgCKr){5eHCJm}*Z>}zNvP{V6)iOogE6HsxGZV|`39q} zR7Kx%yE`)bu}f%9wG}*$e@evFjnVelVHdMM?P9_G7o+U?0+Sq*w28UBI&@fbFem5U z-x3yusbHnt^dq@>2D}DbcNe7_c_ea2FmYu9Ge|H?cyAQVbbGp{hN|Fh*<)s3Mhq=8 z7uV;3)yNVLR_1s#)vmDM-X10z98{O2?IqZ%(+~Ns8{Bz(dpXJ_H^7FsN?eeLO-l~- zY|aAA%DjZu=#vU}6DOnHj5dO2g~78`?pbRNM00gD6lhHihlcenC;wRAdKv=%MRUlT zK)d~l;pq>A+i##vTqVk29~x`vsFSq9G%?VG3kuvgl^q!7{ zo{thNXl^@+pPh(D$IWVSVH8AbdwZL8JwJk?!R6av;5OjG(E|L|7vQ-rdw!KYHx*F{ zP^;Bm>j2Mv85gHa#mmWITE_LW&?$o~u4hA`w=fV20S+QqS9$I#;{EB6;61O0i-5cC z#A>k*e+a;zuN8W)86XVAH^C4n+DtH2*vwFep$?nZroaWj&B>9X+W;AS0R31f_+Va* zxM6`egxdu1{ky&P$&e3*J6rkjGKp^^V4AQ;z*5l@2~$6?PXW2p2nzOgDPnXu%<(qI z!B>E1ldWEBDEy*}%aRJECG<~G)!49kV{J=yN?AiiW!0+2E%hWcR#nuImRP?=Y)XN# z!Jkmu@$Uvm-NHNr8pNrYFhZzfA;o)t3@AZj)KZwmdXhMo0_*vQVTkxoA%VcJQ~xX^ zzDBB&oKmAyCV}{(5;BD^6-tCF1rk8Td1aYGT?MLFtpOD<+Tjq6M9A=}86bn$HG?W6 zABh&HG9b-cUIBS9p^5@EN}DNYnY2M#+s`GbrGL)SY4}rH6mK6d)M9W3JEe)zQmKYK zn!J6*Fdal)DunUR0J%~rca}p^FlWncK!mVwlK8zC^udv&)sttURPXJZ1|Yka>%lHw zDuFn!EsdUCrw#NS88rNS)!-8oXVDYxt%fmJKHt-s0@k46pVufY$#9;&sA2v0l%F;) NeLT6mIc0Dr;4h$ZiY5R6 diff --git a/bin/Highlighting/PascalABCNET.xshd b/bin/Highlighting/PascalABCNET.xshd index 15772f37a..d893cb92d 100644 --- a/bin/Highlighting/PascalABCNET.xshd +++ b/bin/Highlighting/PascalABCNET.xshd @@ -50,6 +50,7 @@ + diff --git a/bin/Lib/PABCRtl.dll b/bin/Lib/PABCRtl.dll index 797d7527b5d5d08b2b241312da380dfbd7d2e8d1..275a32b072cf8c6eafaa2e463ca49d2c6214acf9 100644 GIT binary patch delta 203 zcmV;+05t!ApdEmq9gv6v>I;04i%kQOga?7!h1&sz+XA)Q1008c{ppSD5Ba*15WfoT zV&#c%;i4KD^F6UOF($N8#|WMVlnM>eSP4|1B^ld2gU}~%H*vY!#limT$Wh~N_pstT z;_QdwfK_j6)wNXz*?ue|8a9`QP&;x>iC0W?_OIk<3}hv-V+MhPb zC9|7(2JY~CUNMjX5Qle&1BZ8r1c!Hs1-EyI25mPG>AKTz857wAgp^zXj)!-M1BZ8r1c!Hs1-EyI25mPGSY@AL^VWe!kmJi*NW;gWxAeaT F43Nf(WG?^!