diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/MonoSymbolTable.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/MonoSymbolTable.cs index a4e75bd969..ef40dfbfe6 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/MonoSymbolTable.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/MonoSymbolTable.cs @@ -188,6 +188,20 @@ namespace Mono.CompilerServices.SymbolWriter public readonly bool IsHidden; // Obsolete is never used #endregion + public sealed class LocationComparer : IComparer + { + public static readonly LocationComparer Default = new LocationComparer (); + + public int Compare (LineNumberEntry l1, LineNumberEntry l2) + { + return l1.Row == l2.Row ? + l1.Offset.CompareTo (l2.Offset) : + l1.Row.CompareTo (l2.Row); + } + } + + public static readonly LineNumberEntry Null = new LineNumberEntry (0, 0, 0); + public LineNumberEntry (int file, int row, int offset) : this (file, row, offset, false) { } @@ -200,37 +214,6 @@ namespace Mono.CompilerServices.SymbolWriter this.IsHidden = is_hidden; } - public static LineNumberEntry Null = new LineNumberEntry (0, 0, 0); - - private class OffsetComparerClass : IComparer - { - public int Compare (LineNumberEntry l1, LineNumberEntry l2) - { - if (l1.Offset < l2.Offset) - return -1; - else if (l1.Offset > l2.Offset) - return 1; - else - return 0; - } - } - - private class RowComparerClass : IComparer - { - public int Compare (LineNumberEntry l1, LineNumberEntry l2) - { - if (l1.Row < l2.Row) - return -1; - else if (l1.Row > l2.Row) - return 1; - else - return 0; - } - } - - public static readonly IComparer OffsetComparer = new OffsetComparerClass (); - public static readonly IComparer RowComparer = new RowComparerClass (); - public override string ToString () { return String.Format ("[Line {0}:{1}:{2}]", File, Row, Offset); diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/MonoSymbolWriter.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/MonoSymbolWriter.cs index 8cc380d4c2..d1783bbf7d 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/MonoSymbolWriter.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/MonoSymbolWriter.cs @@ -251,6 +251,8 @@ namespace Mono.CompilerServices.SymbolWriter #else Stack _block_stack; #endif + List method_lines; + string _real_name; IMethodDef _method; ICompileUnit _comp_unit; @@ -262,25 +264,33 @@ namespace Mono.CompilerServices.SymbolWriter this._comp_unit = comp_unit; this._method = method; this._ns_id = ns_id; - - method_lines = new LineNumberEntry [32]; + method_lines = new List (); } - private LineNumberEntry [] method_lines; - private int method_lines_pos = 0; - - public void MarkSequencePoint (int offset, SourceFileEntry file, int line, int column, - bool is_hidden) + public void MarkSequencePoint (int offset, SourceFileEntry file, int line, int column, bool is_hidden) { - if (method_lines_pos == method_lines.Length) { - LineNumberEntry [] tmp = method_lines; - method_lines = new LineNumberEntry [method_lines.Length * 2]; - Array.Copy (tmp, method_lines, method_lines_pos); + int file_idx = file != null ? file.Index : 0; + var lne = new LineNumberEntry (file_idx, line, offset, is_hidden); + + if (method_lines.Count > 0) { + var prev = method_lines[method_lines.Count - 1]; + + // + // Same offset cannot be used for multiple lines + // + if (prev.Offset == offset) { + // + // Use the new location because debugger will adjust + // the breakpoint to next line with sequence point + // + if (LineNumberEntry.LocationComparer.Default.Compare (lne, prev) > 0) + method_lines[method_lines.Count - 1] = lne; + + return; + } } - int file_idx = file != null ? file.Index : 0; - method_lines [method_lines_pos++] = new LineNumberEntry ( - file_idx, line, offset, is_hidden); + method_lines.Add (lne); } public void StartBlock (CodeBlockEntry.Type type, int start_offset) @@ -392,12 +402,9 @@ namespace Mono.CompilerServices.SymbolWriter public void DefineMethod (MonoSymbolFile file) { - LineNumberEntry[] lines = new LineNumberEntry [method_lines_pos]; - Array.Copy (method_lines, lines, method_lines_pos); - MethodEntry entry = new MethodEntry ( file, _comp_unit.Entry, _method.Token, ScopeVariables, - Locals, lines, Blocks, _real_name, 0, //_method_flags, + Locals, method_lines.ToArray (), Blocks, _real_name, 0, //_method_flags, _ns_id); file.AddMethod (entry); diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/class.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/class.cs index bc3902682d..7a80f70d91 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/class.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/class.cs @@ -53,6 +53,11 @@ namespace Mono.CSharp protected bool is_defined; +#if FULL_AST + // Any unattached attributes during parsing get added here. + public Attribute [] UnattachedAttributes; +#endif + public TypeContainer (TypeContainer parent, MemberName name, Attributes attrs, MemberKind kind) : base (parent, name, attrs) { @@ -1326,7 +1331,9 @@ namespace Mono.CSharp Modifiers.PRIVATE | Modifiers.COMPILER_GENERATED | Modifiers.DEBUGGER_HIDDEN, member_name, cloned_params, null); - var block = new ToplevelBlock (Compiler, proxy_method.ParameterInfo, Location); + var block = new ToplevelBlock (Compiler, proxy_method.ParameterInfo, Location) { + IsCompilerGenerated = true + }; var mg = MethodGroupExpr.CreatePredefined (method, method.DeclaringType, Location); mg.InstanceExpression = new BaseThis (method.DeclaringType, Location); diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/convert.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/convert.cs index f1dfc2d8bd..0daf116e9e 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/convert.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/convert.cs @@ -330,17 +330,40 @@ namespace Mono.CSharp { return TypeSpecComparer.Variant.IsEqual (expr_type, target_type) || expr_type.ImplementsInterface (target_type, true); return target_type.BuiltinType == BuiltinTypeSpec.Type.Object || target_type.BuiltinType == BuiltinTypeSpec.Type.Dynamic; - } - // - // from the null literal to any reference-type. - // - if (expr_type == InternalType.NullLiteral) { - // Exlude internal compiler types - if (target_type.Kind == MemberKind.InternalCompilerType) - return target_type.BuiltinType == BuiltinTypeSpec.Type.Dynamic; + case MemberKind.InternalCompilerType: + // + // from the null literal to any reference-type. + // + if (expr_type == InternalType.NullLiteral) { + // Exlude internal compiler types + if (target_type.Kind == MemberKind.InternalCompilerType) + return target_type.BuiltinType == BuiltinTypeSpec.Type.Dynamic; + + return TypeSpec.IsReferenceType (target_type); + } + + // + // Implicit dynamic conversion + // + if (expr_type.BuiltinType == BuiltinTypeSpec.Type.Dynamic) { + switch (target_type.Kind) { + case MemberKind.ArrayType: + case MemberKind.Class: + case MemberKind.Delegate: + case MemberKind.Interface: + case MemberKind.TypeParameter: + return true; + } + + // dynamic to __arglist + if (target_type == InternalType.Arglist) + return true; - return TypeSpec.IsReferenceType (target_type); + return false; + } + + break; } return false; @@ -773,23 +796,17 @@ namespace Mono.CSharp { return i.IsZeroInteger; } - // Implicit dynamic conversion + // + // Implicit dynamic conversion for remaining value types. It should probably + // go somewhere else + // if (expr_type.BuiltinType == BuiltinTypeSpec.Type.Dynamic) { switch (target_type.Kind) { - case MemberKind.ArrayType: - case MemberKind.Class: case MemberKind.Struct: - case MemberKind.Delegate: case MemberKind.Enum: - case MemberKind.Interface: - case MemberKind.TypeParameter: return true; } - // dynamic to __arglist - if (target_type == InternalType.Arglist) - return true; - return false; } diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-parser.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-parser.cs index 0ac4334583..f5a1b7a9a6 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-parser.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-parser.cs @@ -235,6 +235,7 @@ namespace Mono.CSharp //t "namespace_or_type_declarations : namespace_or_type_declarations namespace_or_type_declaration", //t "namespace_or_type_declaration : type_declaration", //t "namespace_or_type_declaration : namespace_declaration", +//t "namespace_or_type_declaration : attribute_sections CLOSE_BRACE", //t "type_declaration : class_declaration", //t "type_declaration : struct_declaration", //t "type_declaration : interface_declaration", @@ -287,6 +288,7 @@ namespace Mono.CSharp //t "class_member_declaration : constructor_declaration", //t "class_member_declaration : destructor_declaration", //t "class_member_declaration : type_declaration", +//t "class_member_declaration : attributes_without_members", //t "class_member_declaration : error", //t "$$8 :", //t "$$9 :", @@ -498,6 +500,7 @@ namespace Mono.CSharp //t "remove_accessor_declaration : opt_attributes opt_modifiers REMOVE $$55 event_accessor_block", //t "event_accessor_block : opt_semicolon", //t "event_accessor_block : block", +//t "attributes_without_members : attribute_sections CLOSE_BRACE", //t "$$56 :", //t "$$57 :", //t "$$58 :", @@ -1465,8 +1468,8 @@ case 40: current_namespace.DeclarationFound = true; } break; -case 48: - case_48(); +case 41: + case_41(); break; case 49: case_49(); @@ -1490,47 +1493,47 @@ case 55: case_55(); break; case 56: -#line 725 "cs-parser.jay" - { yyVal = "event"; savedCloseLocation = GetLocation (yyVals[0+yyTop]); } + case_56(); break; case 57: -#line 726 "cs-parser.jay" - { yyVal = "return"; savedCloseLocation = GetLocation (yyVals[0+yyTop]); } +#line 732 "cs-parser.jay" + { yyVal = "event"; savedCloseLocation = GetLocation (yyVals[0+yyTop]); } break; case 58: - case_58(); +#line 733 "cs-parser.jay" + { yyVal = "return"; savedCloseLocation = GetLocation (yyVals[0+yyTop]); } break; case 59: -#line 743 "cs-parser.jay" + case_59(); + break; +case 60: +#line 750 "cs-parser.jay" { yyVal = new List (4) { (Attribute) yyVals[0+yyTop] }; } break; -case 60: - case_60(); - break; case 61: -#line 758 "cs-parser.jay" + case_61(); + break; +case 62: +#line 765 "cs-parser.jay" { ++lexer.parsing_block; } break; -case 62: - case_62(); - break; -case 64: -#line 784 "cs-parser.jay" - { yyVal = null; } +case 63: + case_63(); break; case 65: - case_65(); +#line 791 "cs-parser.jay" + { yyVal = null; } break; case 66: -#line 795 "cs-parser.jay" - { yyVal = null; } + case_66(); break; case 67: - case_67(); +#line 802 "cs-parser.jay" + { yyVal = null; } break; case 68: case_68(); @@ -1542,65 +1545,62 @@ case 70: case_70(); break; case 71: -#line 839 "cs-parser.jay" + case_71(); + break; +case 72: +#line 846 "cs-parser.jay" { yyVal = new Argument ((Expression) yyVals[0+yyTop]); } break; -case 73: -#line 847 "cs-parser.jay" +case 74: +#line 854 "cs-parser.jay" { ++lexer.parsing_block; } break; -case 74: - case_74(); - break; case 75: case_75(); break; case 76: -#line 873 "cs-parser.jay" - { yyVal = null; } + case_76(); break; case 77: -#line 877 "cs-parser.jay" +#line 880 "cs-parser.jay" + { yyVal = null; } + break; +case 78: +#line 884 "cs-parser.jay" { yyVal = Argument.AType.Ref; } break; -case 78: -#line 881 "cs-parser.jay" +case 79: +#line 888 "cs-parser.jay" { yyVal = Argument.AType.Out; } break; -case 81: -#line 893 "cs-parser.jay" - { - lexer.parsing_modifiers = true; - } - break; case 82: -#line 897 "cs-parser.jay" +#line 900 "cs-parser.jay" { lexer.parsing_modifiers = true; } break; -case 93: - case_93(); - break; -case 94: -#line 927 "cs-parser.jay" +case 83: +#line 904 "cs-parser.jay" { - lexer.ConstraintsParsing = true; + lexer.parsing_modifiers = true; } break; case 95: case_95(); break; case 96: - case_96(); +#line 935 "cs-parser.jay" + { + lexer.ConstraintsParsing = true; + } break; case 97: case_97(); @@ -1612,49 +1612,49 @@ case 99: case_99(); break; case 100: -#line 970 "cs-parser.jay" - { - Error_SyntaxError (yyToken); - } + case_100(); break; case 101: case_101(); break; case 102: - case_102(); - break; -case 105: -#line 1011 "cs-parser.jay" +#line 978 "cs-parser.jay" { - current_field.AddDeclarator ((FieldDeclarator) yyVals[0+yyTop]); + Error_SyntaxError (yyToken); } break; -case 106: -#line 1015 "cs-parser.jay" +case 103: + case_103(); + break; +case 104: + case_104(); + break; +case 107: +#line 1019 "cs-parser.jay" { current_field.AddDeclarator ((FieldDeclarator) yyVals[0+yyTop]); } break; -case 107: - case_107(); - break; case 108: -#line 1031 "cs-parser.jay" +#line 1023 "cs-parser.jay" { - ++lexer.parsing_block; + current_field.AddDeclarator ((FieldDeclarator) yyVals[0+yyTop]); } break; case 109: case_109(); break; case 110: - case_110(); +#line 1039 "cs-parser.jay" + { + ++lexer.parsing_block; + } break; -case 113: - case_113(); +case 111: + case_111(); break; -case 114: - case_114(); +case 112: + case_112(); break; case 115: case_115(); @@ -1663,126 +1663,126 @@ case 116: case_116(); break; case 117: -#line 1110 "cs-parser.jay" + case_117(); + break; +case 118: + case_118(); + break; +case 119: +#line 1118 "cs-parser.jay" { report.Error (1641, GetLocation (yyVals[-1+yyTop]), "A fixed size buffer field must have the array size specifier after the field name"); } break; -case 119: - case_119(); - break; -case 120: - case_120(); +case 121: + case_121(); break; -case 123: -#line 1140 "cs-parser.jay" - { - current_field.AddDeclarator ((FieldDeclarator) yyVals[0+yyTop]); - } +case 122: + case_122(); break; -case 124: -#line 1144 "cs-parser.jay" +case 125: +#line 1148 "cs-parser.jay" { current_field.AddDeclarator ((FieldDeclarator) yyVals[0+yyTop]); } break; -case 125: - case_125(); - break; case 126: -#line 1157 "cs-parser.jay" +#line 1152 "cs-parser.jay" { - ++lexer.parsing_block; + current_field.AddDeclarator ((FieldDeclarator) yyVals[0+yyTop]); } break; case 127: case_127(); break; -case 130: -#line 1176 "cs-parser.jay" +case 128: +#line 1165 "cs-parser.jay" { - current_field.AddDeclarator ((FieldDeclarator) yyVals[0+yyTop]); + ++lexer.parsing_block; } break; -case 131: -#line 1180 "cs-parser.jay" +case 129: + case_129(); + break; +case 132: +#line 1184 "cs-parser.jay" { current_field.AddDeclarator ((FieldDeclarator) yyVals[0+yyTop]); } break; -case 132: - case_132(); - break; case 133: -#line 1196 "cs-parser.jay" +#line 1188 "cs-parser.jay" { - ++lexer.parsing_block; + current_field.AddDeclarator ((FieldDeclarator) yyVals[0+yyTop]); } break; case 134: case_134(); break; case 135: - case_135(); +#line 1204 "cs-parser.jay" + { + ++lexer.parsing_block; + } break; -case 138: - case_138(); +case 136: + case_136(); break; -case 139: - case_139(); +case 137: + case_137(); break; case 140: case_140(); break; case 141: -#line 1267 "cs-parser.jay" - { - valid_param_mod = ParameterModifierType.All; - } + case_141(); break; case 142: -#line 1271 "cs-parser.jay" - { - lexer.ConstraintsParsing = true; - } + case_142(); break; case 143: - case_143(); +#line 1275 "cs-parser.jay" + { + valid_param_mod = ParameterModifierType.All; + } break; case 144: -#line 1297 "cs-parser.jay" +#line 1279 "cs-parser.jay" { - lexer.parsing_generic_declaration = true; + lexer.ConstraintsParsing = true; } break; case 145: case_145(); break; case 146: -#line 1307 "cs-parser.jay" +#line 1305 "cs-parser.jay" { - lexer.ConstraintsParsing = true; + lexer.parsing_generic_declaration = true; } break; case 147: case_147(); break; case 148: - case_148(); +#line 1315 "cs-parser.jay" + { + lexer.ConstraintsParsing = true; + } + break; +case 149: + case_149(); break; case 150: -#line 1355 "cs-parser.jay" - { savedLocation = GetLocation (yyVals[0+yyTop]); yyVal = null; } + case_150(); break; -case 151: -#line 1359 "cs-parser.jay" - { yyVal = ParametersCompiled.EmptyReadOnlyParameters; } +case 152: +#line 1363 "cs-parser.jay" + { savedLocation = GetLocation (yyVals[0+yyTop]); yyVal = null; } break; case 153: - case_153(); - break; -case 154: - case_154(); +#line 1367 "cs-parser.jay" + { yyVal = ParametersCompiled.EmptyReadOnlyParameters; } break; case 155: case_155(); @@ -1800,23 +1800,23 @@ case 159: case_159(); break; case 160: -#line 1431 "cs-parser.jay" + case_160(); + break; +case 161: + case_161(); + break; +case 162: +#line 1439 "cs-parser.jay" { yyVal = new ParametersCompiled (new Parameter[] { (Parameter) yyVals[0+yyTop] } ); } break; -case 161: -#line 1435 "cs-parser.jay" +case 163: +#line 1443 "cs-parser.jay" { yyVal = new ParametersCompiled (new Parameter [] { new ArglistParameter (GetLocation (yyVals[0+yyTop])) }, true); } break; -case 162: - case_162(); - break; -case 163: - case_163(); - break; case 164: case_164(); break; @@ -1830,30 +1830,30 @@ case 167: case_167(); break; case 168: -#line 1510 "cs-parser.jay" - { - ++lexer.parsing_block; - } + case_168(); break; case 169: case_169(); break; case 170: -#line 1551 "cs-parser.jay" - { yyVal = Parameter.Modifier.NONE; } +#line 1518 "cs-parser.jay" + { + ++lexer.parsing_block; + } + break; +case 171: + case_171(); break; case 172: #line 1559 "cs-parser.jay" + { yyVal = Parameter.Modifier.NONE; } + break; +case 174: +#line 1567 "cs-parser.jay" { yyVal = yyVals[0+yyTop]; } break; -case 173: - case_173(); - break; -case 174: - case_174(); - break; case 175: case_175(); break; @@ -1876,16 +1876,16 @@ case 181: case_181(); break; case 182: -#line 1652 "cs-parser.jay" - { - Error_DuplicateParameterModifier (GetLocation (yyVals[-1+yyTop]), Parameter.Modifier.PARAMS); - } + case_182(); break; case 183: case_183(); break; case 184: - case_184(); +#line 1660 "cs-parser.jay" + { + Error_DuplicateParameterModifier (GetLocation (yyVals[-1+yyTop]), Parameter.Modifier.PARAMS); + } break; case 185: case_185(); @@ -1897,28 +1897,28 @@ case 187: case_187(); break; case 188: -#line 1706 "cs-parser.jay" - { - valid_param_mod = ParameterModifierType.Params | ParameterModifierType.DefaultValue; - } + case_188(); break; case 189: case_189(); break; case 190: -#line 1735 "cs-parser.jay" +#line 1714 "cs-parser.jay" { - lexer.PropertyParsing = false; + valid_param_mod = ParameterModifierType.Params | ParameterModifierType.DefaultValue; } break; case 191: case_191(); break; -case 196: - case_196(); +case 192: +#line 1743 "cs-parser.jay" + { + lexer.PropertyParsing = false; + } break; -case 197: - case_197(); +case 193: + case_193(); break; case 198: case_198(); @@ -1929,23 +1929,23 @@ case 199: case 200: case_200(); break; +case 201: + case_201(); + break; case 202: case_202(); break; -case 203: - case_203(); - break; case 204: -#line 1884 "cs-parser.jay" - { - lexer.ConstraintsParsing = true; - } + case_204(); break; case 205: case_205(); break; case 206: - case_206(); +#line 1892 "cs-parser.jay" + { + lexer.ConstraintsParsing = true; + } break; case 207: case_207(); @@ -1954,176 +1954,173 @@ case 208: case_208(); break; case 209: -#line 1923 "cs-parser.jay" + case_209(); + break; +case 210: + case_210(); + break; +case 211: +#line 1931 "cs-parser.jay" { Error_SyntaxError (yyToken); } break; -case 212: -#line 1935 "cs-parser.jay" +case 214: +#line 1943 "cs-parser.jay" { lexer.parsing_modifiers = true; } break; -case 213: -#line 1939 "cs-parser.jay" +case 215: +#line 1947 "cs-parser.jay" { lexer.parsing_modifiers = true; } break; -case 214: -#line 1946 "cs-parser.jay" +case 216: +#line 1954 "cs-parser.jay" { report.Error (525, GetLocation (yyVals[0+yyTop]), "Interfaces cannot contain fields or constants"); } break; -case 215: -#line 1950 "cs-parser.jay" +case 217: +#line 1958 "cs-parser.jay" { report.Error (525, GetLocation (yyVals[0+yyTop]), "Interfaces cannot contain fields or constants"); } break; -case 220: -#line 1958 "cs-parser.jay" +case 222: +#line 1966 "cs-parser.jay" { report.Error (567, GetLocation (yyVals[0+yyTop]), "Interfaces cannot contain operators"); } break; -case 221: -#line 1962 "cs-parser.jay" +case 223: +#line 1970 "cs-parser.jay" { report.Error (526, GetLocation (yyVals[0+yyTop]), "Interfaces cannot contain contructors"); } break; -case 222: -#line 1966 "cs-parser.jay" +case 224: +#line 1974 "cs-parser.jay" { report.Error (524, GetLocation (yyVals[0+yyTop]), "Interfaces cannot declare classes, structs, interfaces, delegates, or enumerations"); } break; -case 223: -#line 1972 "cs-parser.jay" +case 225: +#line 1980 "cs-parser.jay" { } break; -case 224: - case_224(); - break; case 226: -#line 2005 "cs-parser.jay" - { savedLocation = GetLocation (yyVals[0+yyTop]); yyVal = null; } + case_226(); break; case 228: - case_228(); +#line 2013 "cs-parser.jay" + { savedLocation = GetLocation (yyVals[0+yyTop]); yyVal = null; } break; -case 229: -#line 2021 "cs-parser.jay" +case 230: + case_230(); + break; +case 231: +#line 2029 "cs-parser.jay" { valid_param_mod = ParameterModifierType.DefaultValue; } break; -case 230: - case_230(); - break; case 232: -#line 2067 "cs-parser.jay" - { yyVal = Operator.OpType.LogicalNot; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } - break; -case 233: -#line 2068 "cs-parser.jay" - { yyVal = Operator.OpType.OnesComplement; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } + case_232(); break; case 234: -#line 2069 "cs-parser.jay" - { yyVal = Operator.OpType.Increment; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } +#line 2075 "cs-parser.jay" + { yyVal = Operator.OpType.LogicalNot; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; case 235: -#line 2070 "cs-parser.jay" - { yyVal = Operator.OpType.Decrement; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } +#line 2076 "cs-parser.jay" + { yyVal = Operator.OpType.OnesComplement; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; case 236: -#line 2071 "cs-parser.jay" - { yyVal = Operator.OpType.True; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } +#line 2077 "cs-parser.jay" + { yyVal = Operator.OpType.Increment; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; case 237: -#line 2072 "cs-parser.jay" - { yyVal = Operator.OpType.False; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } +#line 2078 "cs-parser.jay" + { yyVal = Operator.OpType.Decrement; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; case 238: -#line 2074 "cs-parser.jay" - { yyVal = Operator.OpType.Addition; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } +#line 2079 "cs-parser.jay" + { yyVal = Operator.OpType.True; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; case 239: -#line 2075 "cs-parser.jay" - { yyVal = Operator.OpType.Subtraction; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } +#line 2080 "cs-parser.jay" + { yyVal = Operator.OpType.False; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; case 240: -#line 2077 "cs-parser.jay" - { yyVal = Operator.OpType.Multiply; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } +#line 2082 "cs-parser.jay" + { yyVal = Operator.OpType.Addition; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; case 241: -#line 2078 "cs-parser.jay" - { yyVal = Operator.OpType.Division; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } +#line 2083 "cs-parser.jay" + { yyVal = Operator.OpType.Subtraction; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; case 242: -#line 2079 "cs-parser.jay" - { yyVal = Operator.OpType.Modulus; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } +#line 2085 "cs-parser.jay" + { yyVal = Operator.OpType.Multiply; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; case 243: -#line 2080 "cs-parser.jay" - { yyVal = Operator.OpType.BitwiseAnd; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } +#line 2086 "cs-parser.jay" + { yyVal = Operator.OpType.Division; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; case 244: -#line 2081 "cs-parser.jay" - { yyVal = Operator.OpType.BitwiseOr; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } +#line 2087 "cs-parser.jay" + { yyVal = Operator.OpType.Modulus; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; case 245: -#line 2082 "cs-parser.jay" - { yyVal = Operator.OpType.ExclusiveOr; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } +#line 2088 "cs-parser.jay" + { yyVal = Operator.OpType.BitwiseAnd; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; case 246: -#line 2083 "cs-parser.jay" - { yyVal = Operator.OpType.LeftShift; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } +#line 2089 "cs-parser.jay" + { yyVal = Operator.OpType.BitwiseOr; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; case 247: -#line 2084 "cs-parser.jay" - { yyVal = Operator.OpType.RightShift; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } +#line 2090 "cs-parser.jay" + { yyVal = Operator.OpType.ExclusiveOr; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; case 248: -#line 2085 "cs-parser.jay" - { yyVal = Operator.OpType.Equality; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } +#line 2091 "cs-parser.jay" + { yyVal = Operator.OpType.LeftShift; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; case 249: -#line 2086 "cs-parser.jay" - { yyVal = Operator.OpType.Inequality; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } +#line 2092 "cs-parser.jay" + { yyVal = Operator.OpType.RightShift; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; case 250: -#line 2087 "cs-parser.jay" - { yyVal = Operator.OpType.GreaterThan; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } +#line 2093 "cs-parser.jay" + { yyVal = Operator.OpType.Equality; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; case 251: -#line 2088 "cs-parser.jay" - { yyVal = Operator.OpType.LessThan; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } +#line 2094 "cs-parser.jay" + { yyVal = Operator.OpType.Inequality; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; case 252: -#line 2089 "cs-parser.jay" - { yyVal = Operator.OpType.GreaterThanOrEqual; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } +#line 2095 "cs-parser.jay" + { yyVal = Operator.OpType.GreaterThan; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; case 253: -#line 2090 "cs-parser.jay" - { yyVal = Operator.OpType.LessThanOrEqual; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } +#line 2096 "cs-parser.jay" + { yyVal = Operator.OpType.LessThan; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; case 254: #line 2097 "cs-parser.jay" - { - valid_param_mod = ParameterModifierType.DefaultValue; - } + { yyVal = Operator.OpType.GreaterThanOrEqual; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; case 255: - case_255(); +#line 2098 "cs-parser.jay" + { yyVal = Operator.OpType.LessThanOrEqual; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; case 256: -#line 2116 "cs-parser.jay" +#line 2105 "cs-parser.jay" { valid_param_mod = ParameterModifierType.DefaultValue; } @@ -2132,7 +2129,10 @@ case 257: case_257(); break; case 258: - case_258(); +#line 2124 "cs-parser.jay" + { + valid_param_mod = ParameterModifierType.DefaultValue; + } break; case 259: case_259(); @@ -2149,31 +2149,31 @@ case 262: case 263: case_263(); break; +case 264: + case_264(); + break; case 265: -#line 2222 "cs-parser.jay" + case_265(); + break; +case 267: +#line 2230 "cs-parser.jay" { current_block = null; yyVal = null; } break; -case 268: -#line 2234 "cs-parser.jay" +case 270: +#line 2242 "cs-parser.jay" { ++lexer.parsing_block; } break; -case 269: - case_269(); +case 271: + case_271(); break; -case 270: -#line 2244 "cs-parser.jay" +case 272: +#line 2252 "cs-parser.jay" { ++lexer.parsing_block; } break; -case 271: - case_271(); - break; -case 272: - case_272(); - break; case 273: case_273(); break; @@ -2198,54 +2198,54 @@ case 279: case 280: case_280(); break; +case 281: + case_281(); + break; case 282: -#line 2359 "cs-parser.jay" + case_282(); + break; +case 284: +#line 2367 "cs-parser.jay" { ++lexer.parsing_block; } break; -case 283: - case_283(); +case 285: + case_285(); break; -case 286: -#line 2376 "cs-parser.jay" +case 288: +#line 2384 "cs-parser.jay" { current_event_field.AddDeclarator ((FieldDeclarator) yyVals[0+yyTop]); } break; -case 287: -#line 2380 "cs-parser.jay" +case 289: +#line 2388 "cs-parser.jay" { current_event_field.AddDeclarator ((FieldDeclarator) yyVals[0+yyTop]); } break; -case 288: - case_288(); +case 290: + case_290(); break; -case 289: -#line 2393 "cs-parser.jay" +case 291: +#line 2401 "cs-parser.jay" { ++lexer.parsing_block; } break; -case 290: - case_290(); +case 292: + case_292(); break; -case 291: - case_291(); +case 293: + case_293(); break; -case 292: -#line 2418 "cs-parser.jay" +case 294: +#line 2426 "cs-parser.jay" { yyVal = yyVals[0+yyTop]; } break; -case 295: - case_295(); - break; -case 296: - case_296(); - break; case 297: case_297(); break; @@ -2264,68 +2264,71 @@ case 301: case 302: case_302(); break; +case 303: + case_303(); + break; case 304: case_304(); break; -case 305: - case_305(); - break; case 306: case_306(); break; case 307: case_307(); break; +case 308: + case_308(); + break; case 309: case_309(); break; case 310: case_310(); break; +case 312: + case_312(); + break; case 313: -#line 2583 "cs-parser.jay" + case_313(); + break; +case 316: +#line 2601 "cs-parser.jay" { lbag.AppendToMember (current_container, GetLocation (yyVals[0+yyTop])); } break; -case 315: - case_315(); - break; -case 316: - case_316(); - break; -case 317: - case_317(); - break; case 318: case_318(); break; case 319: -#line 2641 "cs-parser.jay" - { - valid_param_mod = ParameterModifierType.Ref | ParameterModifierType.Out | ParameterModifierType.Params | ParameterModifierType.DefaultValue; - } + case_319(); break; case 320: case_320(); break; case 321: -#line 2660 "cs-parser.jay" + case_321(); + break; +case 322: +#line 2659 "cs-parser.jay" { - lexer.ConstraintsParsing = false; + valid_param_mod = ParameterModifierType.Ref | ParameterModifierType.Out | ParameterModifierType.Params | ParameterModifierType.DefaultValue; } break; -case 322: - case_322(); +case 323: + case_323(); break; case 324: - case_324(); +#line 2678 "cs-parser.jay" + { + lexer.ConstraintsParsing = false; + } break; -case 326: - case_326(); +case 325: + case_325(); break; -case 328: - case_328(); +case 327: + case_327(); break; case 329: case_329(); @@ -2336,17 +2339,11 @@ case 331: case 332: case_332(); break; -case 333: - case_333(); - break; case 334: case_334(); break; case 335: -#line 2766 "cs-parser.jay" - { - lexer.parsing_generic_declaration = true; - } + case_335(); break; case 336: case_336(); @@ -2354,15 +2351,18 @@ case 336: case 337: case_337(); break; +case 338: +#line 2784 "cs-parser.jay" + { + lexer.parsing_generic_declaration = true; + } + break; case 339: case_339(); break; case 340: case_340(); break; -case 341: - case_341(); - break; case 342: case_342(); break; @@ -2372,241 +2372,238 @@ case 343: case 344: case_344(); break; +case 345: + case_345(); + break; case 346: case_346(); break; case 347: case_347(); break; -case 348: - case_348(); - break; case 349: case_349(); break; case 350: case_350(); break; +case 351: + case_351(); + break; case 352: -#line 2884 "cs-parser.jay" + case_352(); + break; +case 353: + case_353(); + break; +case 355: +#line 2902 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.Void, GetLocation (yyVals[0+yyTop])); } break; -case 353: -#line 2891 "cs-parser.jay" +case 356: +#line 2909 "cs-parser.jay" { lexer.parsing_generic_declaration = true; } break; -case 355: - case_355(); - break; -case 357: - case_357(); +case 358: + case_358(); break; -case 359: - case_359(); - break; -case 361: -#line 2929 "cs-parser.jay" - { - yyVal = new ComposedCast ((FullNamedExpression) yyVals[-1+yyTop], (ComposedTypeSpecifier) yyVals[0+yyTop]); - } +case 360: + case_360(); break; case 362: case_362(); break; -case 363: -#line 2948 "cs-parser.jay" - { - yyVal = new ComposedCast ((ATypeNameExpression) yyVals[-1+yyTop], (ComposedTypeSpecifier) yyVals[0+yyTop]); - } - break; case 364: - case_364(); - break; -case 365: -#line 2957 "cs-parser.jay" +#line 2947 "cs-parser.jay" { yyVal = new ComposedCast ((FullNamedExpression) yyVals[-1+yyTop], (ComposedTypeSpecifier) yyVals[0+yyTop]); } break; +case 365: + case_365(); + break; case 366: -#line 2961 "cs-parser.jay" +#line 2966 "cs-parser.jay" { - yyVal = new ComposedCast (new TypeExpression (compiler.BuiltinTypes.Void, GetLocation (yyVals[-1+yyTop])), (ComposedTypeSpecifier) yyVals[0+yyTop]); + yyVal = new ComposedCast ((ATypeNameExpression) yyVals[-1+yyTop], (ComposedTypeSpecifier) yyVals[0+yyTop]); } break; case 367: case_367(); break; case 368: - case_368(); +#line 2975 "cs-parser.jay" + { + yyVal = new ComposedCast ((FullNamedExpression) yyVals[-1+yyTop], (ComposedTypeSpecifier) yyVals[0+yyTop]); + } break; case 369: - case_369(); +#line 2979 "cs-parser.jay" + { + yyVal = new ComposedCast (new TypeExpression (compiler.BuiltinTypes.Void, GetLocation (yyVals[-1+yyTop])), (ComposedTypeSpecifier) yyVals[0+yyTop]); + } break; case 370: case_370(); break; case 371: -#line 3000 "cs-parser.jay" - { yyVal = new TypeExpression (compiler.BuiltinTypes.Object, GetLocation (yyVals[0+yyTop])); } + case_371(); break; case 372: -#line 3001 "cs-parser.jay" - { yyVal = new TypeExpression (compiler.BuiltinTypes.String, GetLocation (yyVals[0+yyTop])); } + case_372(); break; case 373: -#line 3002 "cs-parser.jay" - { yyVal = new TypeExpression (compiler.BuiltinTypes.Bool, GetLocation (yyVals[0+yyTop])); } + case_373(); break; case 374: -#line 3003 "cs-parser.jay" - { yyVal = new TypeExpression (compiler.BuiltinTypes.Decimal, GetLocation (yyVals[0+yyTop])); } +#line 3018 "cs-parser.jay" + { yyVal = new TypeExpression (compiler.BuiltinTypes.Object, GetLocation (yyVals[0+yyTop])); } break; case 375: -#line 3004 "cs-parser.jay" - { yyVal = new TypeExpression (compiler.BuiltinTypes.Float, GetLocation (yyVals[0+yyTop])); } +#line 3019 "cs-parser.jay" + { yyVal = new TypeExpression (compiler.BuiltinTypes.String, GetLocation (yyVals[0+yyTop])); } break; case 376: -#line 3005 "cs-parser.jay" - { yyVal = new TypeExpression (compiler.BuiltinTypes.Double, GetLocation (yyVals[0+yyTop])); } +#line 3020 "cs-parser.jay" + { yyVal = new TypeExpression (compiler.BuiltinTypes.Bool, GetLocation (yyVals[0+yyTop])); } + break; +case 377: +#line 3021 "cs-parser.jay" + { yyVal = new TypeExpression (compiler.BuiltinTypes.Decimal, GetLocation (yyVals[0+yyTop])); } break; case 378: -#line 3010 "cs-parser.jay" - { yyVal = new TypeExpression (compiler.BuiltinTypes.SByte, GetLocation (yyVals[0+yyTop])); } +#line 3022 "cs-parser.jay" + { yyVal = new TypeExpression (compiler.BuiltinTypes.Float, GetLocation (yyVals[0+yyTop])); } break; case 379: -#line 3011 "cs-parser.jay" +#line 3023 "cs-parser.jay" + { yyVal = new TypeExpression (compiler.BuiltinTypes.Double, GetLocation (yyVals[0+yyTop])); } + break; +case 381: +#line 3028 "cs-parser.jay" + { yyVal = new TypeExpression (compiler.BuiltinTypes.SByte, GetLocation (yyVals[0+yyTop])); } + break; +case 382: +#line 3029 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.Byte, GetLocation (yyVals[0+yyTop])); } break; -case 380: -#line 3012 "cs-parser.jay" +case 383: +#line 3030 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.Short, GetLocation (yyVals[0+yyTop])); } break; -case 381: -#line 3013 "cs-parser.jay" +case 384: +#line 3031 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.UShort, GetLocation (yyVals[0+yyTop])); } break; -case 382: -#line 3014 "cs-parser.jay" +case 385: +#line 3032 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.Int, GetLocation (yyVals[0+yyTop])); } break; -case 383: -#line 3015 "cs-parser.jay" +case 386: +#line 3033 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.UInt, GetLocation (yyVals[0+yyTop])); } break; -case 384: -#line 3016 "cs-parser.jay" +case 387: +#line 3034 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.Long, GetLocation (yyVals[0+yyTop])); } break; -case 385: -#line 3017 "cs-parser.jay" +case 388: +#line 3035 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.ULong, GetLocation (yyVals[0+yyTop])); } break; -case 386: -#line 3018 "cs-parser.jay" +case 389: +#line 3036 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.Char, GetLocation (yyVals[0+yyTop])); } break; -case 407: - case_407(); +case 410: + case_410(); break; -case 408: - case_408(); +case 411: + case_411(); break; -case 412: -#line 3065 "cs-parser.jay" +case 415: +#line 3083 "cs-parser.jay" { yyVal = new NullLiteral (GetLocation (yyVals[0+yyTop])); } break; -case 413: -#line 3069 "cs-parser.jay" +case 416: +#line 3087 "cs-parser.jay" { yyVal = new BoolLiteral (compiler.BuiltinTypes, true, GetLocation (yyVals[0+yyTop])); } break; -case 414: -#line 3070 "cs-parser.jay" +case 417: +#line 3088 "cs-parser.jay" { yyVal = new BoolLiteral (compiler.BuiltinTypes, false, GetLocation (yyVals[0+yyTop])); } break; -case 419: - case_419(); - break; -case 420: -#line 3103 "cs-parser.jay" - { - yyVal = new ParenthesizedExpression ((Expression) yyVals[-1+yyTop]); - } - break; -case 421: - case_421(); - break; case 422: case_422(); break; case 423: - case_423(); +#line 3121 "cs-parser.jay" + { + yyVal = new ParenthesizedExpression ((Expression) yyVals[-1+yyTop]); + } break; case 424: case_424(); break; case 425: -#line 3138 "cs-parser.jay" - { - yyVal = new CompletionMemberAccess ((Expression) yyVals[-2+yyTop], null,GetLocation (yyVals[0+yyTop])); - } + case_425(); break; case 426: case_426(); break; case 427: -#line 3146 "cs-parser.jay" - { - yyVal = new CompletionMemberAccess ((Expression) yyVals[-2+yyTop], null, lexer.Location); - } + case_427(); break; case 428: - case_428(); +#line 3156 "cs-parser.jay" + { + yyVal = new CompletionMemberAccess ((Expression) yyVals[-2+yyTop], null,GetLocation (yyVals[0+yyTop])); + } break; case 429: case_429(); break; case 430: -#line 3162 "cs-parser.jay" - { yyVal = null; } +#line 3164 "cs-parser.jay" + { + yyVal = new CompletionMemberAccess ((Expression) yyVals[-2+yyTop], null, lexer.Location); + } + break; +case 431: + case_431(); break; case 432: case_432(); break; case 433: - case_433(); - break; -case 434: -#line 3185 "cs-parser.jay" +#line 3180 "cs-parser.jay" { yyVal = null; } break; case 435: -#line 3189 "cs-parser.jay" - { - yyVal = yyVals[0+yyTop]; - } + case_435(); break; case 436: case_436(); break; case 437: - case_437(); +#line 3203 "cs-parser.jay" + { yyVal = null; } break; case 438: - case_438(); +#line 3207 "cs-parser.jay" + { + yyVal = yyVals[0+yyTop]; + } break; case 439: case_439(); break; case 440: -#line 3222 "cs-parser.jay" - { - yyVal = new CompletionElementInitializer (null, GetLocation (yyVals[0+yyTop])); - } + case_440(); break; case 441: case_441(); @@ -2615,20 +2612,23 @@ case 442: case_442(); break; case 443: - case_443(); +#line 3240 "cs-parser.jay" + { + yyVal = new CompletionElementInitializer (null, GetLocation (yyVals[0+yyTop])); + } break; -case 446: -#line 3250 "cs-parser.jay" - { yyVal = null; } +case 444: + case_444(); break; -case 448: - case_448(); +case 445: + case_445(); break; -case 449: - case_449(); +case 446: + case_446(); break; -case 450: - case_450(); +case 449: +#line 3268 "cs-parser.jay" + { yyVal = null; } break; case 451: case_451(); @@ -2637,46 +2637,46 @@ case 452: case_452(); break; case 453: -#line 3302 "cs-parser.jay" - { - yyVal = new Argument ((Expression) yyVals[0+yyTop]); - } + case_453(); break; -case 457: - case_457(); +case 454: + case_454(); break; -case 458: - case_458(); +case 455: + case_455(); break; -case 459: - case_459(); +case 456: +#line 3320 "cs-parser.jay" + { + yyVal = new Argument ((Expression) yyVals[0+yyTop]); + } break; case 460: case_460(); break; +case 461: + case_461(); + break; case 462: case_462(); break; case 463: -#line 3347 "cs-parser.jay" - { - yyVal = new ElementAccess ((Expression) yyVals[-3+yyTop], (Arguments) yyVals[-1+yyTop], GetLocation (yyVals[-2+yyTop])); - } - break; -case 464: -#line 3351 "cs-parser.jay" - { - yyVal = new ElementAccess ((Expression) yyVals[-2+yyTop], null, GetLocation (yyVals[-1+yyTop])); - } + case_463(); break; case 465: case_465(); break; case 466: - case_466(); +#line 3365 "cs-parser.jay" + { + yyVal = new ElementAccess ((Expression) yyVals[-3+yyTop], (Arguments) yyVals[-1+yyTop], GetLocation (yyVals[-2+yyTop])); + } break; case 467: - case_467(); +#line 3369 "cs-parser.jay" + { + yyVal = new ElementAccess ((Expression) yyVals[-2+yyTop], null, GetLocation (yyVals[-1+yyTop])); + } break; case 468: case_468(); @@ -2685,43 +2685,43 @@ case 469: case_469(); break; case 470: -#line 3397 "cs-parser.jay" - { - yyVal = new Argument ((Expression) yyVals[0+yyTop]); - } + case_470(); + break; +case 471: + case_471(); break; case 472: -#line 3405 "cs-parser.jay" - { - yyVal = new This (GetLocation (yyVals[0+yyTop])); - } + case_472(); break; case 473: - case_473(); - break; -case 474: - case_474(); +#line 3415 "cs-parser.jay" + { + yyVal = new Argument ((Expression) yyVals[0+yyTop]); + } break; case 475: -#line 3425 "cs-parser.jay" +#line 3423 "cs-parser.jay" { - yyVal = new UnaryMutator (UnaryMutator.Mode.PostIncrement, (Expression) yyVals[-1+yyTop], GetLocation (yyVals[0+yyTop])); + yyVal = new This (GetLocation (yyVals[0+yyTop])); } break; case 476: -#line 3432 "cs-parser.jay" - { - yyVal = new UnaryMutator (UnaryMutator.Mode.PostDecrement, (Expression) yyVals[-1+yyTop], GetLocation (yyVals[0+yyTop])); - } + case_476(); break; case 477: case_477(); break; case 478: - case_478(); +#line 3443 "cs-parser.jay" + { + yyVal = new UnaryMutator (UnaryMutator.Mode.PostIncrement, (Expression) yyVals[-1+yyTop], GetLocation (yyVals[0+yyTop])); + } break; case 479: - case_479(); +#line 3450 "cs-parser.jay" + { + yyVal = new UnaryMutator (UnaryMutator.Mode.PostDecrement, (Expression) yyVals[-1+yyTop], GetLocation (yyVals[0+yyTop])); + } break; case 480: case_480(); @@ -2736,10 +2736,7 @@ case 483: case_483(); break; case 484: -#line 3498 "cs-parser.jay" - { - ++lexer.parsing_type; - } + case_484(); break; case 485: case_485(); @@ -2747,18 +2744,21 @@ case 485: case 486: case_486(); break; -case 489: -#line 3525 "cs-parser.jay" - { yyVal = null; } +case 487: +#line 3516 "cs-parser.jay" + { + ++lexer.parsing_type; + } break; -case 491: - case_491(); +case 488: + case_488(); break; -case 492: - case_492(); +case 489: + case_489(); break; -case 493: - case_493(); +case 492: +#line 3543 "cs-parser.jay" + { yyVal = null; } break; case 494: case_494(); @@ -2769,68 +2769,68 @@ case 495: case 496: case_496(); break; -case 500: - case_500(); +case 497: + case_497(); break; -case 501: - case_501(); +case 498: + case_498(); break; -case 502: - case_502(); +case 499: + case_499(); break; case 503: -#line 3603 "cs-parser.jay" + case_503(); + break; +case 504: + case_504(); + break; +case 505: + case_505(); + break; +case 506: +#line 3621 "cs-parser.jay" { yyVal = 2; } break; -case 504: -#line 3607 "cs-parser.jay" +case 507: +#line 3625 "cs-parser.jay" { yyVal = ((int) yyVals[-1+yyTop]) + 1; } break; -case 505: -#line 3614 "cs-parser.jay" +case 508: +#line 3632 "cs-parser.jay" { yyVal = null; } break; -case 506: -#line 3618 "cs-parser.jay" +case 509: +#line 3636 "cs-parser.jay" { yyVal = yyVals[0+yyTop]; } break; -case 507: - case_507(); - break; -case 508: - case_508(); - break; -case 509: - case_509(); - break; case 510: case_510(); break; case 511: -#line 3662 "cs-parser.jay" - { - lexer.TypeOfParsing = true; - } + case_511(); break; case 512: case_512(); break; -case 515: - case_515(); +case 513: + case_513(); break; -case 516: - case_516(); +case 514: +#line 3680 "cs-parser.jay" + { + lexer.TypeOfParsing = true; + } break; -case 517: - case_517(); +case 515: + case_515(); break; case 518: case_518(); @@ -2860,146 +2860,149 @@ case 526: case_526(); break; case 527: -#line 3782 "cs-parser.jay" - { - start_anonymous (false, (ParametersCompiled) yyVals[0+yyTop], false, GetLocation (yyVals[-1+yyTop])); - } + case_527(); break; case 528: case_528(); break; case 529: -#line 3795 "cs-parser.jay" + case_529(); + break; +case 530: +#line 3800 "cs-parser.jay" + { + start_anonymous (false, (ParametersCompiled) yyVals[0+yyTop], false, GetLocation (yyVals[-1+yyTop])); + } + break; +case 531: + case_531(); + break; +case 532: +#line 3813 "cs-parser.jay" { start_anonymous (false, (ParametersCompiled) yyVals[0+yyTop], true, GetLocation (yyVals[-2+yyTop])); } break; -case 530: - case_530(); +case 533: + case_533(); break; -case 531: -#line 3812 "cs-parser.jay" +case 534: +#line 3830 "cs-parser.jay" { yyVal = ParametersCompiled.Undefined; } break; -case 533: -#line 3820 "cs-parser.jay" +case 536: +#line 3838 "cs-parser.jay" { valid_param_mod = ParameterModifierType.Ref | ParameterModifierType.Out; } break; -case 534: - case_534(); +case 537: + case_537(); break; -case 535: - case_535(); +case 538: + case_538(); break; -case 537: -#line 3846 "cs-parser.jay" +case 540: +#line 3864 "cs-parser.jay" { yyVal = new Unary (Unary.Operator.LogicalNot, (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } break; -case 538: -#line 3850 "cs-parser.jay" +case 541: +#line 3868 "cs-parser.jay" { yyVal = new Unary (Unary.Operator.OnesComplement, (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } break; -case 539: - case_539(); +case 542: + case_542(); break; -case 540: - case_540(); +case 543: + case_543(); break; -case 542: -#line 3878 "cs-parser.jay" +case 545: +#line 3896 "cs-parser.jay" { yyVal = new Unary (Unary.Operator.UnaryPlus, (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } break; -case 543: -#line 3882 "cs-parser.jay" +case 546: +#line 3900 "cs-parser.jay" { yyVal = new Unary (Unary.Operator.UnaryNegation, (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } break; -case 544: -#line 3886 "cs-parser.jay" +case 547: +#line 3904 "cs-parser.jay" { yyVal = new UnaryMutator (UnaryMutator.Mode.PreIncrement, (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } break; -case 545: -#line 3890 "cs-parser.jay" +case 548: +#line 3908 "cs-parser.jay" { yyVal = new UnaryMutator (UnaryMutator.Mode.PreDecrement, (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } break; -case 546: -#line 3894 "cs-parser.jay" +case 549: +#line 3912 "cs-parser.jay" { yyVal = new Indirection ((Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } break; -case 547: -#line 3898 "cs-parser.jay" +case 550: +#line 3916 "cs-parser.jay" { yyVal = new Unary (Unary.Operator.AddressOf, (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } break; -case 549: - case_549(); - break; -case 550: - case_550(); - break; -case 551: - case_551(); +case 552: + case_552(); break; case 553: case_553(); break; case 554: -#line 3930 "cs-parser.jay" + case_554(); + break; +case 556: + case_556(); + break; +case 557: +#line 3948 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.Subtraction, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } break; -case 555: - case_555(); +case 558: + case_558(); break; -case 556: -#line 3939 "cs-parser.jay" +case 559: +#line 3957 "cs-parser.jay" { yyVal = new As ((Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } break; -case 557: -#line 3943 "cs-parser.jay" +case 560: +#line 3961 "cs-parser.jay" { yyVal = new Is ((Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } break; -case 559: - case_559(); - break; -case 560: - case_560(); - break; case 562: case_562(); break; case 563: case_563(); break; -case 564: - case_564(); - break; case 565: case_565(); break; +case 566: + case_566(); + break; case 567: case_567(); break; @@ -3009,38 +3012,35 @@ case 568: case 570: case_570(); break; -case 572: - case_572(); +case 571: + case_571(); break; -case 574: - case_574(); +case 573: + case_573(); break; -case 576: - case_576(); +case 575: + case_575(); break; -case 578: - case_578(); +case 577: + case_577(); break; -case 580: - case_580(); +case 579: + case_579(); break; -case 582: - case_582(); +case 581: + case_581(); break; case 583: -#line 4067 "cs-parser.jay" - { - yyVal = new SimpleAssign ((Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); - } - break; -case 584: - case_584(); + case_583(); break; case 585: case_585(); break; case 586: - case_586(); +#line 4085 "cs-parser.jay" + { + yyVal = new SimpleAssign ((Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); + } break; case 587: case_587(); @@ -3079,30 +3079,30 @@ case 598: case_598(); break; case 599: -#line 4164 "cs-parser.jay" - { yyVal = ParametersCompiled.EmptyReadOnlyParameters; } + case_599(); break; case 600: case_600(); break; -case 603: -#line 4180 "cs-parser.jay" - { - start_block (lexer.Location); - } +case 601: + case_601(); + break; +case 602: +#line 4182 "cs-parser.jay" + { yyVal = ParametersCompiled.EmptyReadOnlyParameters; } break; -case 604: - case_604(); +case 603: + case_603(); break; case 606: - case_606(); +#line 4198 "cs-parser.jay" + { + start_block (Location.Null); + } break; case 607: case_607(); break; -case 608: - case_608(); - break; case 609: case_609(); break; @@ -3110,10 +3110,7 @@ case 610: case_610(); break; case 611: -#line 4225 "cs-parser.jay" - { - valid_param_mod = ParameterModifierType.Ref | ParameterModifierType.Out; - } + case_611(); break; case 612: case_612(); @@ -3122,9 +3119,9 @@ case 613: case_613(); break; case 614: -#line 4239 "cs-parser.jay" +#line 4243 "cs-parser.jay" { - valid_param_mod = ParameterModifierType.Ref | ParameterModifierType.Out; + valid_param_mod = ParameterModifierType.Ref | ParameterModifierType.Out; } break; case 615: @@ -3133,70 +3130,73 @@ case 615: case 616: case_616(); break; -case 622: -#line 4264 "cs-parser.jay" +case 617: +#line 4257 "cs-parser.jay" { - yyVal = new ArglistAccess (GetLocation (yyVals[0+yyTop])); + valid_param_mod = ParameterModifierType.Ref | ParameterModifierType.Out; } break; -case 623: - case_623(); +case 618: + case_618(); break; -case 624: - case_624(); +case 619: + case_619(); break; case 625: - case_625(); +#line 4282 "cs-parser.jay" + { + yyVal = new ArglistAccess (GetLocation (yyVals[0+yyTop])); + } + break; +case 626: + case_626(); break; case 627: -#line 4293 "cs-parser.jay" + case_627(); + break; +case 628: + case_628(); + break; +case 630: +#line 4311 "cs-parser.jay" { yyVal = new BooleanExpression ((Expression) yyVals[0+yyTop]); } break; -case 628: -#line 4306 "cs-parser.jay" +case 631: +#line 4324 "cs-parser.jay" { lexer.ConstraintsParsing = true; } break; -case 629: - case_629(); - break; -case 630: - case_630(); - break; -case 631: - case_631(); - break; case 632: case_632(); break; case 633: -#line 4351 "cs-parser.jay" - { yyVal = null; } + case_633(); break; case 634: -#line 4353 "cs-parser.jay" - { yyVal = yyVals[0+yyTop]; StoreModifierLocation (Modifiers.PARTIAL, GetLocation (yyVals[0+yyTop])); } + case_634(); break; case 635: case_635(); break; case 636: -#line 4366 "cs-parser.jay" - { - lexer.parsing_modifiers = false; - } +#line 4369 "cs-parser.jay" + { yyVal = null; } + break; +case 637: +#line 4371 "cs-parser.jay" + { yyVal = yyVals[0+yyTop]; StoreModifierLocation (Modifiers.PARTIAL, GetLocation (yyVals[0+yyTop])); } break; case 638: case_638(); break; case 639: - case_639(); - break; -case 640: - case_640(); +#line 4384 "cs-parser.jay" + { + lexer.parsing_modifiers = false; + } break; case 641: case_641(); @@ -3237,23 +3237,23 @@ case 652: case 653: case_653(); break; +case 654: + case_654(); + break; case 655: case_655(); break; -case 657: -#line 4486 "cs-parser.jay" - { - yyVal = yyVals[0+yyTop]; - } +case 656: + case_656(); break; case 658: case_658(); break; -case 659: - case_659(); - break; case 660: - case_660(); +#line 4504 "cs-parser.jay" + { + yyVal = yyVals[0+yyTop]; + } break; case 661: case_661(); @@ -3271,40 +3271,37 @@ case 665: case_665(); break; case 666: -#line 4577 "cs-parser.jay" + case_666(); + break; +case 667: + case_667(); + break; +case 668: + case_668(); + break; +case 669: +#line 4595 "cs-parser.jay" { yyVal = new SpecialContraintExpr (SpecialConstraint.Class, GetLocation (yyVals[0+yyTop])); } break; -case 667: -#line 4581 "cs-parser.jay" +case 670: +#line 4599 "cs-parser.jay" { yyVal = new SpecialContraintExpr (SpecialConstraint.Struct, GetLocation (yyVals[0+yyTop])); } break; -case 668: -#line 4588 "cs-parser.jay" +case 671: +#line 4606 "cs-parser.jay" { yyVal = Variance.None; } break; -case 669: - case_669(); - break; -case 670: - case_670(); - break; -case 671: - case_671(); - break; case 672: case_672(); break; case 673: -#line 4633 "cs-parser.jay" - { - yyVal = yyVals[0+yyTop]; - } + case_673(); break; case 674: case_674(); @@ -3313,100 +3310,103 @@ case 675: case_675(); break; case 676: - case_676(); +#line 4651 "cs-parser.jay" + { + yyVal = yyVals[0+yyTop]; + } break; case 677: case_677(); break; -case 682: -#line 4677 "cs-parser.jay" +case 678: + case_678(); + break; +case 679: + case_679(); + break; +case 680: + case_680(); + break; +case 685: +#line 4695 "cs-parser.jay" { current_block.AddStatement ((Statement) yyVals[0+yyTop]); } break; -case 683: -#line 4681 "cs-parser.jay" +case 686: +#line 4699 "cs-parser.jay" { current_block.AddStatement ((Statement) yyVals[0+yyTop]); } break; -case 685: - case_685(); - break; -case 686: - case_686(); +case 688: + case_688(); break; case 689: -#line 4715 "cs-parser.jay" + case_689(); + break; +case 692: +#line 4733 "cs-parser.jay" { current_block.AddStatement ((Statement) yyVals[0+yyTop]); } break; -case 690: -#line 4719 "cs-parser.jay" +case 693: +#line 4737 "cs-parser.jay" { current_block.AddStatement ((Statement) yyVals[0+yyTop]); } break; -case 719: - case_719(); - break; -case 720: - case_720(); - break; -case 721: - case_721(); - break; case 722: case_722(); break; case 723: case_723(); break; -case 726: - case_726(); +case 724: + case_724(); break; -case 727: - case_727(); +case 725: + case_725(); break; -case 728: - case_728(); +case 726: + case_726(); break; case 729: case_729(); break; case 730: -#line 4863 "cs-parser.jay" - { - yyVal = new ComposedCast ((FullNamedExpression) yyVals[-1+yyTop], (ComposedTypeSpecifier) yyVals[0+yyTop]); - } + case_730(); break; case 731: -#line 4867 "cs-parser.jay" - { - yyVal = new ComposedCast (new TypeExpression (compiler.BuiltinTypes.Void, GetLocation (yyVals[-1+yyTop])), (ComposedTypeSpecifier) yyVals[0+yyTop]); - } + case_731(); break; case 732: case_732(); break; -case 734: - case_734(); +case 733: +#line 4881 "cs-parser.jay" + { + yyVal = new ComposedCast ((FullNamedExpression) yyVals[-1+yyTop], (ComposedTypeSpecifier) yyVals[0+yyTop]); + } break; -case 735: -#line 4888 "cs-parser.jay" +case 734: +#line 4885 "cs-parser.jay" { - yyVal = ComposedTypeSpecifier.CreatePointer (GetLocation (yyVals[0+yyTop])); + yyVal = new ComposedCast (new TypeExpression (compiler.BuiltinTypes.Void, GetLocation (yyVals[-1+yyTop])), (ComposedTypeSpecifier) yyVals[0+yyTop]); } break; +case 735: + case_735(); + break; case 737: case_737(); break; case 738: - case_738(); - break; -case 739: - case_739(); +#line 4906 "cs-parser.jay" + { + yyVal = ComposedTypeSpecifier.CreatePointer (GetLocation (yyVals[0+yyTop])); + } break; case 740: case_740(); @@ -3414,83 +3414,80 @@ case 740: case 741: case_741(); break; +case 742: + case_742(); + break; case 743: case_743(); break; case 744: case_744(); break; -case 745: - case_745(); +case 746: + case_746(); + break; +case 747: + case_747(); break; -case 749: - case_749(); +case 748: + case_748(); break; case 752: case_752(); break; -case 753: - case_753(); +case 755: + case_755(); break; -case 754: -#line 5013 "cs-parser.jay" +case 756: + case_756(); + break; +case 757: +#line 5031 "cs-parser.jay" { report.Error (145, lexer.Location, "A const field requires a value to be provided"); } break; -case 755: - case_755(); - break; -case 760: - case_760(); - break; -case 762: - case_762(); +case 758: + case_758(); break; case 763: case_763(); break; -case 764: - case_764(); - break; case 765: -#line 5063 "cs-parser.jay" - { yyVal = yyVals[-1+yyTop]; } + case_765(); break; case 766: case_766(); break; case 767: -#line 5073 "cs-parser.jay" - { yyVal = yyVals[-1+yyTop]; } + case_767(); break; case 768: -#line 5074 "cs-parser.jay" +#line 5081 "cs-parser.jay" { yyVal = yyVals[-1+yyTop]; } break; case 769: case_769(); break; case 770: - case_770(); +#line 5091 "cs-parser.jay" + { yyVal = yyVals[-1+yyTop]; } break; case 771: - case_771(); +#line 5092 "cs-parser.jay" + { yyVal = yyVals[-1+yyTop]; } break; -case 774: - case_774(); +case 772: + case_772(); break; -case 775: - case_775(); +case 773: + case_773(); break; -case 776: - case_776(); +case 774: + case_774(); break; case 777: -#line 5149 "cs-parser.jay" - { - start_block (GetLocation (yyVals[0+yyTop])); - } + case_777(); break; case 778: case_778(); @@ -3499,7 +3496,13 @@ case 779: case_779(); break; case 780: - case_780(); +#line 5167 "cs-parser.jay" + { + start_block (GetLocation (yyVals[0+yyTop])); + } + break; +case 781: + case_781(); break; case 782: case_782(); @@ -3507,44 +3510,41 @@ case 782: case 783: case_783(); break; -case 784: - case_784(); - break; case 785: -#line 5200 "cs-parser.jay" - { - current_block = current_block.CreateSwitchBlock (lexer.Location); - } + case_785(); break; case 786: -#line 5204 "cs-parser.jay" - { - yyVal = new SwitchSection ((List) yyVals[-2+yyTop], current_block); - } + case_786(); break; case 787: case_787(); break; case 788: - case_788(); +#line 5218 "cs-parser.jay" + { + current_block = current_block.CreateSwitchBlock (lexer.Location); + } break; case 789: - case_789(); - break; -case 790: -#line 5233 "cs-parser.jay" +#line 5222 "cs-parser.jay" { - yyVal = new SwitchLabel (null, GetLocation (yyVals[0+yyTop])); + yyVal = new SwitchSection ((List) yyVals[-2+yyTop], current_block); } break; -case 795: - case_795(); +case 790: + case_790(); + break; +case 791: + case_791(); break; -case 796: - case_796(); +case 792: + case_792(); break; -case 797: - case_797(); +case 793: +#line 5251 "cs-parser.jay" + { + yyVal = new SwitchLabel (null, GetLocation (yyVals[0+yyTop])); + } break; case 798: case_798(); @@ -3556,61 +3556,61 @@ case 800: case_800(); break; case 801: -#line 5293 "cs-parser.jay" + case_801(); + break; +case 802: + case_802(); + break; +case 803: + case_803(); + break; +case 804: +#line 5311 "cs-parser.jay" { yyVal = yyVals[0+yyTop]; } break; -case 802: -#line 5301 "cs-parser.jay" +case 805: +#line 5319 "cs-parser.jay" { ((For) yyVals[-2+yyTop]).Initializer = (Statement) yyVals[-1+yyTop]; } break; -case 803: -#line 5305 "cs-parser.jay" +case 806: +#line 5323 "cs-parser.jay" { ((For) yyVals[-5+yyTop]).Condition = (BooleanExpression) yyVals[-1+yyTop]; } break; -case 804: -#line 5309 "cs-parser.jay" +case 807: +#line 5327 "cs-parser.jay" { ((For) yyVals[-8+yyTop]).Iterator = (Statement) yyVals[-1+yyTop]; } break; -case 805: - case_805(); - break; -case 806: - case_806(); - break; -case 807: -#line 5329 "cs-parser.jay" - { yyVal = new EmptyStatement (lexer.Location); } +case 808: + case_808(); break; case 809: case_809(); break; case 810: - case_810(); +#line 5347 "cs-parser.jay" + { yyVal = new EmptyStatement (lexer.Location); } break; case 812: -#line 5350 "cs-parser.jay" - { yyVal = null; } - break; -case 814: -#line 5355 "cs-parser.jay" - { yyVal = new EmptyStatement (lexer.Location); } + case_812(); break; -case 818: - case_818(); +case 813: + case_813(); break; -case 819: - case_819(); +case 815: +#line 5368 "cs-parser.jay" + { yyVal = null; } break; -case 820: - case_820(); +case 817: +#line 5373 "cs-parser.jay" + { yyVal = new EmptyStatement (lexer.Location); } break; case 821: case_821(); @@ -3624,14 +3624,14 @@ case 823: case 824: case_824(); break; -case 831: - case_831(); +case 825: + case_825(); break; -case 832: - case_832(); +case 826: + case_826(); break; -case 833: - case_833(); +case 827: + case_827(); break; case 834: case_834(); @@ -3651,20 +3651,20 @@ case 838: case 839: case_839(); break; -case 842: -#line 5556 "cs-parser.jay" - { - yyVal = new TryCatch ((Block) yyVals[-1+yyTop], (List) yyVals[0+yyTop], GetLocation (yyVals[-2+yyTop]), false); - } +case 840: + case_840(); break; -case 843: - case_843(); +case 841: + case_841(); break; -case 844: - case_844(); +case 842: + case_842(); break; case 845: - case_845(); +#line 5574 "cs-parser.jay" + { + yyVal = new TryCatch ((Block) yyVals[-1+yyTop], (List) yyVals[0+yyTop], GetLocation (yyVals[-2+yyTop]), false); + } break; case 846: case_846(); @@ -3672,53 +3672,53 @@ case 846: case 847: case_847(); break; +case 848: + case_848(); + break; +case 849: + case_849(); + break; case 850: -#line 5605 "cs-parser.jay" - { - yyVal = new Catch ((Block) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); - } - break; -case 851: - case_851(); + case_850(); break; -case 852: -#line 5624 "cs-parser.jay" +case 853: +#line 5623 "cs-parser.jay" { - yyVal = yyVals[-1+yyTop]; + yyVal = new Catch ((Block) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } break; -case 853: - case_853(); - break; case 854: -#line 5642 "cs-parser.jay" - { - yyVal = new Checked ((Block) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); - } + case_854(); break; case 855: -#line 5649 "cs-parser.jay" +#line 5642 "cs-parser.jay" { - yyVal = new Unchecked ((Block) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); + yyVal = yyVals[-1+yyTop]; } break; case 856: case_856(); break; case 857: -#line 5659 "cs-parser.jay" +#line 5660 "cs-parser.jay" { - yyVal = new Unsafe ((Block) yyVals[0+yyTop], GetLocation (yyVals[-2+yyTop])); + yyVal = new Checked ((Block) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } break; case 858: - case_858(); +#line 5667 "cs-parser.jay" + { + yyVal = new Unchecked ((Block) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); + } break; case 859: case_859(); break; case 860: - case_860(); +#line 5677 "cs-parser.jay" + { + yyVal = new Unsafe ((Block) yyVals[0+yyTop], GetLocation (yyVals[-2+yyTop])); + } break; case 861: case_861(); @@ -3741,23 +3741,23 @@ case 866: case 867: case_867(); break; +case 868: + case_868(); + break; case 869: case_869(); break; case 870: -#line 5764 "cs-parser.jay" - { - Error_MissingInitializer (lexer.Location); - } - break; -case 871: - case_871(); + case_870(); break; case 872: case_872(); break; case 873: - case_873(); +#line 5782 "cs-parser.jay" + { + Error_MissingInitializer (lexer.Location); + } break; case 874: case_874(); @@ -3778,73 +3778,73 @@ case 879: case_879(); break; case 880: -#line 5865 "cs-parser.jay" - { - current_block = new Linq.QueryBlock (current_block, lexer.Location); - } + case_880(); break; case 881: case_881(); break; case 882: -#line 5880 "cs-parser.jay" + case_882(); + break; +case 883: +#line 5883 "cs-parser.jay" { current_block = new Linq.QueryBlock (current_block, lexer.Location); } break; -case 883: - case_883(); - break; case 884: case_884(); break; +case 885: +#line 5898 "cs-parser.jay" + { + current_block = new Linq.QueryBlock (current_block, lexer.Location); + } + break; case 886: case_886(); break; case 887: -#line 5925 "cs-parser.jay" - { - current_block = new Linq.QueryBlock (current_block, lexer.Location); - } - break; -case 888: - case_888(); + case_887(); break; case 889: case_889(); break; case 890: - case_890(); +#line 5943 "cs-parser.jay" + { + current_block = new Linq.QueryBlock (current_block, lexer.Location); + } break; case 891: case_891(); break; -case 895: - case_895(); +case 892: + case_892(); break; -case 901: -#line 5984 "cs-parser.jay" - { - current_block = new Linq.QueryBlock (current_block, lexer.Location); - } +case 893: + case_893(); break; -case 902: - case_902(); +case 894: + case_894(); break; -case 903: -#line 6003 "cs-parser.jay" +case 898: + case_898(); + break; +case 904: +#line 6002 "cs-parser.jay" { current_block = new Linq.QueryBlock (current_block, lexer.Location); } break; -case 904: - case_904(); - break; case 905: case_905(); break; case 906: - case_906(); +#line 6021 "cs-parser.jay" + { + current_block = new Linq.QueryBlock (current_block, lexer.Location); + } break; case 907: case_907(); @@ -3864,24 +3864,27 @@ case 911: case 912: case_912(); break; +case 913: + case_913(); + break; case 914: -#line 6147 "cs-parser.jay" + case_914(); + break; +case 915: + case_915(); + break; +case 917: +#line 6165 "cs-parser.jay" { yyVal = yyVals[0+yyTop]; } break; -case 915: -#line 6154 "cs-parser.jay" +case 918: +#line 6172 "cs-parser.jay" { current_block = new Linq.QueryBlock (current_block, lexer.Location); } break; -case 916: - case_916(); - break; -case 918: - case_918(); - break; case 919: case_919(); break; @@ -3891,12 +3894,6 @@ case 921: case 922: case_922(); break; -case 923: -#line 6200 "cs-parser.jay" - { - yyVal = new Linq.OrderByAscending ((Linq.QueryBlock) current_block, (Expression)yyVals[0+yyTop]); - } - break; case 924: case_924(); break; @@ -3904,9 +3901,9 @@ case 925: case_925(); break; case 926: -#line 6217 "cs-parser.jay" +#line 6218 "cs-parser.jay" { - yyVal = new Linq.ThenByAscending ((Linq.QueryBlock) current_block, (Expression)yyVals[0+yyTop]); + yyVal = new Linq.OrderByAscending ((Linq.QueryBlock) current_block, (Expression)yyVals[0+yyTop]); } break; case 927: @@ -3915,92 +3912,104 @@ case 927: case 928: case_928(); break; +case 929: +#line 6235 "cs-parser.jay" + { + yyVal = new Linq.ThenByAscending ((Linq.QueryBlock) current_block, (Expression)yyVals[0+yyTop]); + } + break; case 930: case_930(); break; case 931: case_931(); break; +case 933: + case_933(); + break; case 934: case_934(); break; -case 935: - case_935(); +case 937: + case_937(); + break; +case 938: + case_938(); break; -case 943: -#line 6339 "cs-parser.jay" +case 946: +#line 6357 "cs-parser.jay" { module.DocumentationBuilder.ParsedName = (MemberName) yyVals[0+yyTop]; } break; -case 944: -#line 6346 "cs-parser.jay" +case 947: +#line 6364 "cs-parser.jay" { module.DocumentationBuilder.ParsedParameters = (List)yyVals[0+yyTop]; } break; -case 945: - case_945(); +case 948: + case_948(); break; -case 946: - case_946(); +case 949: + case_949(); break; -case 947: -#line 6363 "cs-parser.jay" +case 950: +#line 6381 "cs-parser.jay" { yyVal = new MemberName ((MemberName) yyVals[-2+yyTop], MemberCache.IndexerNameAlias, Location.Null); } break; -case 948: -#line 6367 "cs-parser.jay" +case 951: +#line 6385 "cs-parser.jay" { valid_param_mod = ParameterModifierType.Ref | ParameterModifierType.Out; } break; -case 949: - case_949(); - break; -case 950: - case_950(); - break; -case 951: - case_951(); - break; case 952: case_952(); break; +case 953: + case_953(); + break; case 954: -#line 6403 "cs-parser.jay" + case_954(); + break; +case 955: + case_955(); + break; +case 957: +#line 6421 "cs-parser.jay" { yyVal = new MemberName (((MemberName) yyVals[-2+yyTop]), (MemberName) yyVals[0+yyTop]); } break; -case 956: -#line 6411 "cs-parser.jay" +case 959: +#line 6429 "cs-parser.jay" { valid_param_mod = ParameterModifierType.Ref | ParameterModifierType.Out; } break; -case 957: -#line 6415 "cs-parser.jay" +case 960: +#line 6433 "cs-parser.jay" { yyVal = yyVals[-1+yyTop]; } break; -case 958: -#line 6422 "cs-parser.jay" +case 961: +#line 6440 "cs-parser.jay" { yyVal = new List (0); } break; -case 960: - case_960(); +case 963: + case_963(); break; -case 961: - case_961(); +case 964: + case_964(); break; -case 962: - case_962(); +case 965: + case_965(); break; #line default } @@ -4208,8 +4217,18 @@ void case_39() current_namespace.DeclarationFound = true; } -void case_48() -#line 645 "cs-parser.jay" +void case_41() +#line 617 "cs-parser.jay" +{ +#if FULL_AST + current_namespace.UnattachedAttributes = ((List) yyVals[-1+yyTop]).ToArray (); +#endif + report.Error (1518, lexer.Location, "Dangling attribute not attached to a type definition (class, delegate, enum, interface or struct). Unexpected symbol `{0}'"); + lexer.putback ('}'); + } + +void case_49() +#line 652 "cs-parser.jay" { var sect = (List) yyVals[0+yyTop]; yyVal = new Attributes (sect); @@ -4221,8 +4240,8 @@ void case_48() } } -void case_49() -#line 656 "cs-parser.jay" +void case_50() +#line 663 "cs-parser.jay" { Attributes attrs = yyVals[-1+yyTop] as Attributes; var sect = (List) yyVals[0+yyTop]; @@ -4236,22 +4255,22 @@ void case_49() yyVal = attrs; } -void case_50() -#line 672 "cs-parser.jay" +void case_51() +#line 679 "cs-parser.jay" { lexer.parsing_attribute_section = true; savedOpenLocation = GetLocation (yyVals[0+yyTop]); } -void case_51() -#line 677 "cs-parser.jay" +void case_52() +#line 684 "cs-parser.jay" { lexer.parsing_attribute_section = false; yyVal = yyVals[0+yyTop]; } -void case_52() -#line 685 "cs-parser.jay" +void case_53() +#line 692 "cs-parser.jay" { current_attr_target = (string) yyVals[-1+yyTop]; if (current_attr_target == "assembly" || current_attr_target == "module") { @@ -4259,8 +4278,8 @@ void case_52() } } -void case_53() -#line 692 "cs-parser.jay" +void case_54() +#line 699 "cs-parser.jay" { /* when attribute target is invalid*/ if (current_attr_target == string.Empty) @@ -4277,8 +4296,8 @@ void case_53() } } -void case_54() -#line 708 "cs-parser.jay" +void case_55() +#line 715 "cs-parser.jay" { yyVal = yyVals[-2+yyTop]; if (yyVals[-1+yyTop] != null) { @@ -4288,16 +4307,16 @@ void case_54() } } -void case_55() -#line 720 "cs-parser.jay" +void case_56() +#line 727 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; yyVal = CheckAttributeTarget (lt.Value, lt.Location); savedCloseLocation = GetLocation (yyVals[0+yyTop]); } -void case_58() -#line 728 "cs-parser.jay" +void case_59() +#line 735 "cs-parser.jay" { if (yyToken == Token.IDENTIFIER) { Error_SyntaxError (yyToken); @@ -4308,8 +4327,8 @@ void case_58() } } -void case_60() -#line 745 "cs-parser.jay" +void case_61() +#line 752 "cs-parser.jay" { var attrs = (List) yyVals[-2+yyTop]; attrs.Add ((Attribute) yyVals[0+yyTop]); @@ -4318,8 +4337,8 @@ void case_60() yyVal = attrs; } -void case_62() -#line 760 "cs-parser.jay" +void case_63() +#line 767 "cs-parser.jay" { --lexer.parsing_block; @@ -4338,32 +4357,32 @@ void case_62() } } -void case_65() -#line 786 "cs-parser.jay" +void case_66() +#line 793 "cs-parser.jay" { savedAttrParenOpenLocation = GetLocation (yyVals[-2+yyTop]); savedAttrParenCloseLocation = GetLocation (yyVals[0+yyTop]); yyVal = yyVals[-1+yyTop]; } -void case_67() -#line 797 "cs-parser.jay" +void case_68() +#line 804 "cs-parser.jay" { Arguments a = new Arguments (4); a.Add ((Argument) yyVals[0+yyTop]); yyVal = new Arguments [] { a, null }; } -void case_68() -#line 803 "cs-parser.jay" +void case_69() +#line 810 "cs-parser.jay" { Arguments a = new Arguments (4); a.Add ((Argument) yyVals[0+yyTop]); yyVal = new Arguments [] { null, a }; } -void case_69() -#line 809 "cs-parser.jay" +void case_70() +#line 816 "cs-parser.jay" { Arguments[] o = (Arguments[]) yyVals[-2+yyTop]; if (o [1] != null) { @@ -4379,8 +4398,8 @@ void case_69() attributeArgumentCommas.Add (GetLocation (yyVals[-1+yyTop])); } -void case_70() -#line 824 "cs-parser.jay" +void case_71() +#line 831 "cs-parser.jay" { Arguments[] o = (Arguments[]) yyVals[-2+yyTop]; if (o [1] == null) { @@ -4391,8 +4410,8 @@ void case_70() attributeArgumentCommas.Add (GetLocation (yyVals[-1+yyTop])); } -void case_74() -#line 849 "cs-parser.jay" +void case_75() +#line 856 "cs-parser.jay" { --lexer.parsing_block; var lt = (Tokenizer.LocatedToken) yyVals[-3+yyTop]; @@ -4400,8 +4419,8 @@ void case_74() lbag.AddLocation (yyVal, GetLocation(yyVals[-2+yyTop])); } -void case_75() -#line 859 "cs-parser.jay" +void case_76() +#line 866 "cs-parser.jay" { if (lang_version <= LanguageVersion.V_3) FeatureIsNotAvailable (GetLocation (yyVals[-3+yyTop]), "named argument"); @@ -4414,8 +4433,8 @@ void case_75() lbag.AddLocation (yyVal, GetLocation(yyVals[-2+yyTop])); } -void case_93() -#line 912 "cs-parser.jay" +void case_95() +#line 920 "cs-parser.jay" { report.Error (1519, lexer.Location, "Unexpected symbol `{0}' in class, struct, or interface member declaration", GetSymbolName (yyToken)); @@ -4423,15 +4442,15 @@ void case_93() lexer.parsing_generic_declaration = false; } -void case_95() -#line 929 "cs-parser.jay" +void case_97() +#line 937 "cs-parser.jay" { push_current_container (new Struct (current_container, (MemberName) yyVals[0+yyTop], (Modifiers) yyVals[-4+yyTop], (Attributes) yyVals[-5+yyTop]), yyVals[-3+yyTop]); lbag.AddMember (current_container, GetModifierLocations (), GetLocation (yyVals[-2+yyTop])); } -void case_96() -#line 935 "cs-parser.jay" +void case_98() +#line 943 "cs-parser.jay" { lexer.ConstraintsParsing = false; @@ -4445,23 +4464,23 @@ void case_96() lexer.parsing_modifiers = true; } -void case_97() -#line 948 "cs-parser.jay" +void case_99() +#line 956 "cs-parser.jay" { if (doc_support) Lexer.doc_state = XmlCommentState.Allowed; } -void case_98() -#line 953 "cs-parser.jay" +void case_100() +#line 961 "cs-parser.jay" { --lexer.parsing_declaration; if (doc_support) Lexer.doc_state = XmlCommentState.Allowed; } -void case_99() -#line 959 "cs-parser.jay" +void case_101() +#line 967 "cs-parser.jay" { if (yyVals[0+yyTop] == null) { lbag.AppendToMember (current_container, GetLocation (yyVals[-5+yyTop]), GetLocation (yyVals[-2+yyTop])); @@ -4471,8 +4490,8 @@ void case_99() yyVal = pop_current_class (); } -void case_101() -#line 977 "cs-parser.jay" +void case_103() +#line 985 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; var mod = (Modifiers) yyVals[-3+yyTop]; @@ -4486,8 +4505,8 @@ void case_101() yyVal = current_field; } -void case_102() -#line 990 "cs-parser.jay" +void case_104() +#line 998 "cs-parser.jay" { if (doc_support) { current_field.DocComment = Lexer.consume_doc_comment (); @@ -4499,31 +4518,31 @@ void case_102() current_field = null; } -void case_107() -#line 1020 "cs-parser.jay" +void case_109() +#line 1028 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; yyVal = new FieldDeclarator (new SimpleMemberName (lt.Value, lt.Location), (ConstInitializer) yyVals[0+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop])); } -void case_109() -#line 1033 "cs-parser.jay" +void case_111() +#line 1041 "cs-parser.jay" { --lexer.parsing_block; yyVal = new ConstInitializer (current_field, (Expression) yyVals[0+yyTop], GetLocation (yyVals[-2+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop])); } -void case_110() -#line 1039 "cs-parser.jay" +void case_112() +#line 1047 "cs-parser.jay" { report.Error (145, lexer.Location, "A const field requires a value to be provided"); yyVal = null; } -void case_113() -#line 1054 "cs-parser.jay" +void case_115() +#line 1062 "cs-parser.jay" { lexer.parsing_generic_declaration = false; @@ -4537,8 +4556,8 @@ void case_113() yyVal = current_field; } -void case_114() -#line 1069 "cs-parser.jay" +void case_116() +#line 1077 "cs-parser.jay" { if (doc_support) { current_field.DocComment = Lexer.consume_doc_comment (); @@ -4550,8 +4569,8 @@ void case_114() current_field = null; } -void case_115() -#line 1082 "cs-parser.jay" +void case_117() +#line 1090 "cs-parser.jay" { if (lang_version < LanguageVersion.ISO_2) FeatureIsNotAvailable (GetLocation (yyVals[-2+yyTop]), "fixed size buffers"); @@ -4563,8 +4582,8 @@ void case_115() current_type.AddField (current_field); } -void case_116() -#line 1093 "cs-parser.jay" +void case_118() +#line 1101 "cs-parser.jay" { if (doc_support) { current_field.DocComment = Lexer.consume_doc_comment (); @@ -4577,16 +4596,16 @@ void case_116() current_field = null; } -void case_119() -#line 1116 "cs-parser.jay" +void case_121() +#line 1124 "cs-parser.jay" { ++lexer.parsing_block; current_local_parameters = ParametersCompiled.EmptyReadOnlyParameters; start_block (GetLocation (yyVals[0+yyTop])); } -void case_120() -#line 1122 "cs-parser.jay" +void case_122() +#line 1130 "cs-parser.jay" { --lexer.parsing_block; current_field.Initializer = (Expression) yyVals[0+yyTop]; @@ -4595,16 +4614,16 @@ void case_120() current_local_parameters = null; } -void case_125() -#line 1149 "cs-parser.jay" +void case_127() +#line 1157 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; yyVal = new FieldDeclarator (new SimpleMemberName (lt.Value, lt.Location), null); lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_127() -#line 1159 "cs-parser.jay" +void case_129() +#line 1167 "cs-parser.jay" { --lexer.parsing_block; var lt = (Tokenizer.LocatedToken) yyVals[-3+yyTop]; @@ -4612,39 +4631,39 @@ void case_127() lbag.AddLocation (yyVal, GetLocation (yyVals[-4+yyTop]), GetLocation (yyVals[-2+yyTop])); } -void case_132() -#line 1185 "cs-parser.jay" +void case_134() +#line 1193 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; yyVal = new FieldDeclarator (new SimpleMemberName (lt.Value, lt.Location), (ConstInitializer) yyVals[0+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop])); } -void case_134() -#line 1198 "cs-parser.jay" +void case_136() +#line 1206 "cs-parser.jay" { --lexer.parsing_block; yyVal = new ConstInitializer (current_field, (Expression) yyVals[-1+yyTop], GetLocation (yyVals[-3+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_135() -#line 1204 "cs-parser.jay" +void case_137() +#line 1212 "cs-parser.jay" { report.Error (443, lexer.Location, "Value or constant expected"); yyVal = null; } -void case_138() -#line 1214 "cs-parser.jay" +void case_140() +#line 1222 "cs-parser.jay" { /* It has to be here for the parent to safely restore artificial block*/ Error_SyntaxError (yyToken); yyVal = null; } -void case_139() -#line 1223 "cs-parser.jay" +void case_141() +#line 1231 "cs-parser.jay" { if (doc_support) Lexer.doc_state = XmlCommentState.NotAllowed; @@ -4655,8 +4674,8 @@ void case_139() current_type.AddMember (m); } -void case_140() -#line 1233 "cs-parser.jay" +void case_142() +#line 1241 "cs-parser.jay" { Method method = (Method) yyVals[-2+yyTop]; method.Block = (ToplevelBlock) yyVals[0+yyTop]; @@ -4683,8 +4702,8 @@ void case_140() Lexer.doc_state = XmlCommentState.Allowed; } -void case_143() -#line 1273 "cs-parser.jay" +void case_145() +#line 1281 "cs-parser.jay" { lexer.ConstraintsParsing = false; valid_param_mod = 0; @@ -4704,15 +4723,15 @@ void case_143() yyVal = method; } -void case_145() -#line 1300 "cs-parser.jay" +void case_147() +#line 1308 "cs-parser.jay" { lexer.parsing_generic_declaration = false; valid_param_mod = ParameterModifierType.All; } -void case_147() -#line 1309 "cs-parser.jay" +void case_149() +#line 1317 "cs-parser.jay" { lexer.ConstraintsParsing = false; valid_param_mod = 0; @@ -4737,8 +4756,8 @@ void case_147() yyVal = method; } -void case_148() -#line 1336 "cs-parser.jay" +void case_150() +#line 1344 "cs-parser.jay" { MemberName name = (MemberName) yyVals[-3+yyTop]; report.Error (1585, name.Location, @@ -4755,16 +4774,16 @@ void case_148() yyVal = method; } -void case_153() -#line 1365 "cs-parser.jay" +void case_155() +#line 1373 "cs-parser.jay" { var pars_list = (List) yyVals[0+yyTop]; yyVal = new ParametersCompiled (pars_list.ToArray ()); lbag.AddLocation (yyVal, parameterListCommas); } -void case_154() -#line 1371 "cs-parser.jay" +void case_156() +#line 1379 "cs-parser.jay" { var pars_list = (List) yyVals[-2+yyTop]; pars_list.Add ((Parameter) yyVals[0+yyTop]); @@ -4774,8 +4793,8 @@ void case_154() lbag.AddLocation (yyVal, parameterListCommas); } -void case_155() -#line 1380 "cs-parser.jay" +void case_157() +#line 1388 "cs-parser.jay" { var pars_list = (List) yyVals[-2+yyTop]; pars_list.Add (new ArglistParameter (GetLocation (yyVals[0+yyTop]))); @@ -4785,8 +4804,8 @@ void case_155() lbag.AddLocation (yyVal, parameterListCommas); } -void case_156() -#line 1389 "cs-parser.jay" +void case_158() +#line 1397 "cs-parser.jay" { if (yyVals[-2+yyTop] != null) report.Error (231, ((Parameter) yyVals[-2+yyTop]).Location, "A params parameter must be the last parameter in a formal parameter list"); @@ -4795,8 +4814,8 @@ void case_156() lbag.AddLocation (yyVal, parameterListCommas); } -void case_157() -#line 1397 "cs-parser.jay" +void case_159() +#line 1405 "cs-parser.jay" { if (yyVals[-2+yyTop] != null) report.Error (231, ((Parameter) yyVals[-2+yyTop]).Location, "A params parameter must be the last parameter in a formal parameter list"); @@ -4810,8 +4829,8 @@ void case_157() lbag.AddLocation (yyVal, parameterListCommas); } -void case_158() -#line 1410 "cs-parser.jay" +void case_160() +#line 1418 "cs-parser.jay" { report.Error (257, GetLocation (yyVals[-2+yyTop]), "An __arglist parameter must be the last parameter in a formal parameter list"); @@ -4819,8 +4838,8 @@ void case_158() lbag.AddLocation (yyVal, parameterListCommas); } -void case_159() -#line 1417 "cs-parser.jay" +void case_161() +#line 1425 "cs-parser.jay" { report.Error (257, GetLocation (yyVals[-2+yyTop]), "An __arglist parameter must be the last parameter in a formal parameter list"); @@ -4833,15 +4852,15 @@ void case_159() lbag.AddLocation (yyVal, parameterListCommas); } -void case_162() -#line 1437 "cs-parser.jay" +void case_164() +#line 1445 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = ParametersCompiled.EmptyReadOnlyParameters; } -void case_163() -#line 1445 "cs-parser.jay" +void case_165() +#line 1453 "cs-parser.jay" { parameters_bucket.Clear (); Parameter p = (Parameter) yyVals[0+yyTop]; @@ -4851,8 +4870,8 @@ void case_163() yyVal = parameters_bucket; } -void case_164() -#line 1454 "cs-parser.jay" +void case_166() +#line 1462 "cs-parser.jay" { var pars = (List) yyVals[-2+yyTop]; Parameter p = (Parameter) yyVals[0+yyTop]; @@ -4871,16 +4890,16 @@ void case_164() yyVal = yyVals[-2+yyTop]; } -void case_165() -#line 1478 "cs-parser.jay" +void case_167() +#line 1486 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; yyVal = new Parameter ((FullNamedExpression) yyVals[-1+yyTop], lt.Value, (Parameter.Modifier) yyVals[-2+yyTop], (Attributes) yyVals[-3+yyTop], lt.Location); lbag.AddLocation (yyVal, parameterModifierLocation); } -void case_166() -#line 1487 "cs-parser.jay" +void case_168() +#line 1495 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; report.Error (1552, lt.Location, "Array type specifier, [], must appear before parameter name"); @@ -4888,8 +4907,8 @@ void case_166() lbag.AddLocation (yyVal, parameterModifierLocation); } -void case_167() -#line 1497 "cs-parser.jay" +void case_169() +#line 1505 "cs-parser.jay" { Error_SyntaxError (yyToken); Location l = GetLocation (yyVals[0+yyTop]); @@ -4897,8 +4916,8 @@ void case_167() lbag.AddLocation (yyVal, parameterModifierLocation); } -void case_169() -#line 1512 "cs-parser.jay" +void case_171() +#line 1520 "cs-parser.jay" { --lexer.parsing_block; if (lang_version <= LanguageVersion.V_3) { @@ -4936,8 +4955,8 @@ void case_169() ((Parameter) yyVal).DefaultValue = new DefaultParameterValueExpression ((Expression) yyVals[0+yyTop]); } -void case_173() -#line 1561 "cs-parser.jay" +void case_175() +#line 1569 "cs-parser.jay" { Parameter.Modifier p2 = (Parameter.Modifier)yyVals[0+yyTop]; Parameter.Modifier mod = (Parameter.Modifier)yyVals[-1+yyTop] | p2; @@ -4959,8 +4978,8 @@ void case_173() yyVal = mod; } -void case_174() -#line 1585 "cs-parser.jay" +void case_176() +#line 1593 "cs-parser.jay" { if ((valid_param_mod & ParameterModifierType.Ref) == 0) Error_ParameterModifierNotValid ("ref", GetLocation (yyVals[0+yyTop])); @@ -4968,8 +4987,8 @@ void case_174() yyVal = Parameter.Modifier.REF; } -void case_175() -#line 1592 "cs-parser.jay" +void case_177() +#line 1600 "cs-parser.jay" { if ((valid_param_mod & ParameterModifierType.Out) == 0) Error_ParameterModifierNotValid ("out", GetLocation (yyVals[0+yyTop])); @@ -4977,8 +4996,8 @@ void case_175() yyVal = Parameter.Modifier.OUT; } -void case_176() -#line 1599 "cs-parser.jay" +void case_178() +#line 1607 "cs-parser.jay" { if ((valid_param_mod & ParameterModifierType.This) == 0) Error_ParameterModifierNotValid ("this", GetLocation (yyVals[0+yyTop])); @@ -4989,16 +5008,16 @@ void case_176() yyVal = Parameter.Modifier.This; } -void case_177() -#line 1612 "cs-parser.jay" +void case_179() +#line 1620 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; yyVal = new ParamsParameter ((FullNamedExpression) yyVals[-1+yyTop], lt.Value, (Attributes) yyVals[-3+yyTop], lt.Location); lbag.AddLocation (yyVal, savedLocation); } -void case_178() -#line 1618 "cs-parser.jay" +void case_180() +#line 1626 "cs-parser.jay" { report.Error (1751, GetLocation (yyVals[-4+yyTop]), "Cannot specify a default value for a parameter array"); @@ -5007,23 +5026,23 @@ void case_178() lbag.AddLocation (yyVal, savedLocation); } -void case_179() -#line 1626 "cs-parser.jay" +void case_181() +#line 1634 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = null; } -void case_180() -#line 1634 "cs-parser.jay" +void case_182() +#line 1642 "cs-parser.jay" { if ((valid_param_mod & ParameterModifierType.Params) == 0) report.Error (1670, (GetLocation (yyVals[0+yyTop])), "The `params' modifier is not allowed in current context"); savedLocation = GetLocation (yyVals[0+yyTop]); } -void case_181() -#line 1640 "cs-parser.jay" +void case_183() +#line 1648 "cs-parser.jay" { Parameter.Modifier mod = (Parameter.Modifier)yyVals[0+yyTop]; if ((mod & Parameter.Modifier.This) != 0) { @@ -5034,22 +5053,22 @@ void case_181() savedLocation = GetLocation (yyVals[-1+yyTop]); } -void case_183() -#line 1657 "cs-parser.jay" +void case_185() +#line 1665 "cs-parser.jay" { if ((valid_param_mod & ParameterModifierType.Arglist) == 0) report.Error (1669, GetLocation (yyVals[0+yyTop]), "__arglist is not valid in this context"); } -void case_184() -#line 1668 "cs-parser.jay" +void case_186() +#line 1676 "cs-parser.jay" { if (doc_support) tmpComment = Lexer.consume_doc_comment (); } -void case_185() -#line 1673 "cs-parser.jay" +void case_187() +#line 1681 "cs-parser.jay" { var type = (FullNamedExpression) yyVals[-3+yyTop]; current_property = new Property (current_type, type, (Modifiers) yyVals[-4+yyTop], @@ -5064,8 +5083,8 @@ void case_185() lexer.PropertyParsing = true; } -void case_186() -#line 1687 "cs-parser.jay" +void case_188() +#line 1695 "cs-parser.jay" { lexer.PropertyParsing = false; @@ -5073,15 +5092,15 @@ void case_186() current_property.DocComment = ConsumeStoredComment (); } -void case_187() -#line 1694 "cs-parser.jay" +void case_189() +#line 1702 "cs-parser.jay" { lbag.AppendToMember (current_property, GetLocation (yyVals[0+yyTop])); current_property = null; } -void case_189() -#line 1708 "cs-parser.jay" +void case_191() +#line 1716 "cs-parser.jay" { valid_param_mod = 0; var type = (FullNamedExpression) yyVals[-6+yyTop]; @@ -5107,8 +5126,8 @@ void case_189() lexer.PropertyParsing = true; } -void case_191() -#line 1737 "cs-parser.jay" +void case_193() +#line 1745 "cs-parser.jay" { if (current_property.AccessorFirst != null && current_property.AccessorFirst.Block == null) ((Indexer) current_property).ParameterInfo.CheckParameters (current_property); @@ -5120,8 +5139,8 @@ void case_191() current_property = null; } -void case_196() -#line 1756 "cs-parser.jay" +void case_198() +#line 1764 "cs-parser.jay" { if (yyToken == Token.CLOSE_BRACE) { report.Error (548, lexer.Location, "`{0}': property or indexer must have at least one accessor", current_property.GetSignatureForError ()); @@ -5133,8 +5152,8 @@ void case_196() } } -void case_197() -#line 1770 "cs-parser.jay" +void case_199() +#line 1778 "cs-parser.jay" { if (yyVals[-1+yyTop] != ModifierNone && lang_version == LanguageVersion.ISO_1) { FeatureIsNotAvailable (GetLocation (yyVals[-1+yyTop]), "access modifiers on properties"); @@ -5156,8 +5175,8 @@ void case_197() lexer.PropertyParsing = false; } -void case_198() -#line 1791 "cs-parser.jay" +void case_200() +#line 1799 "cs-parser.jay" { if (yyVals[0+yyTop] != null) { current_property.Get.Block = (ToplevelBlock) yyVals[0+yyTop]; @@ -5179,8 +5198,8 @@ void case_198() Lexer.doc_state = XmlCommentState.NotAllowed; } -void case_199() -#line 1815 "cs-parser.jay" +void case_201() +#line 1823 "cs-parser.jay" { if (yyVals[-1+yyTop] != ModifierNone && lang_version == LanguageVersion.ISO_1) { FeatureIsNotAvailable (GetLocation (yyVals[-1+yyTop]), "access modifiers on properties"); @@ -5207,8 +5226,8 @@ void case_199() lexer.PropertyParsing = false; } -void case_200() -#line 1841 "cs-parser.jay" +void case_202() +#line 1849 "cs-parser.jay" { if (yyVals[0+yyTop] != null) { current_property.Set.Block = (ToplevelBlock) yyVals[0+yyTop]; @@ -5230,29 +5249,29 @@ void case_200() Lexer.doc_state = XmlCommentState.NotAllowed; } -void case_202() -#line 1866 "cs-parser.jay" +void case_204() +#line 1874 "cs-parser.jay" { savedLocation = GetLocation (yyVals[0+yyTop]); yyVal = null; } -void case_203() -#line 1871 "cs-parser.jay" +void case_205() +#line 1879 "cs-parser.jay" { Error_SyntaxError (1043, yyToken, "Invalid accessor body"); yyVal = null; } -void case_205() -#line 1886 "cs-parser.jay" +void case_207() +#line 1894 "cs-parser.jay" { push_current_container (new Interface (current_container, (MemberName) yyVals[0+yyTop], (Modifiers) yyVals[-4+yyTop], (Attributes) yyVals[-5+yyTop]), yyVals[-3+yyTop]); lbag.AddMember (current_container, GetModifierLocations (), GetLocation (yyVals[-2+yyTop])); } -void case_206() -#line 1892 "cs-parser.jay" +void case_208() +#line 1900 "cs-parser.jay" { lexer.ConstraintsParsing = false; @@ -5267,16 +5286,16 @@ void case_206() lexer.parsing_modifiers = true; } -void case_207() -#line 1906 "cs-parser.jay" +void case_209() +#line 1914 "cs-parser.jay" { --lexer.parsing_declaration; if (doc_support) Lexer.doc_state = XmlCommentState.Allowed; } -void case_208() -#line 1912 "cs-parser.jay" +void case_210() +#line 1920 "cs-parser.jay" { if (yyVals[0+yyTop] == null) { lbag.AppendToMember (current_container, GetLocation (yyVals[-4+yyTop]), GetLocation (yyVals[-2+yyTop])); @@ -5286,8 +5305,8 @@ void case_208() yyVal = pop_current_class (); } -void case_224() -#line 1974 "cs-parser.jay" +void case_226() +#line 1982 "cs-parser.jay" { OperatorDeclaration decl = (OperatorDeclaration) yyVals[-2+yyTop]; if (decl != null) { @@ -5316,15 +5335,15 @@ void case_224() current_local_parameters = null; } -void case_228() -#line 2011 "cs-parser.jay" +void case_230() +#line 2019 "cs-parser.jay" { report.Error (590, GetLocation (yyVals[0+yyTop]), "User-defined operators cannot return void"); yyVal = new TypeExpression (compiler.BuiltinTypes.Void, GetLocation (yyVals[0+yyTop])); } -void case_230() -#line 2023 "cs-parser.jay" +void case_232() +#line 2031 "cs-parser.jay" { valid_param_mod = 0; @@ -5365,8 +5384,8 @@ void case_230() lbag.AddLocation (yyVal, GetLocation (yyVals[-5+yyTop]), savedOperatorLocation, GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_255() -#line 2099 "cs-parser.jay" +void case_257() +#line 2107 "cs-parser.jay" { valid_param_mod = 0; @@ -5382,8 +5401,8 @@ void case_255() lbag.AddLocation (yyVal, GetLocation (yyVals[-6+yyTop]), GetLocation (yyVals[-5+yyTop]), GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_257() -#line 2118 "cs-parser.jay" +void case_259() +#line 2126 "cs-parser.jay" { valid_param_mod = 0; @@ -5399,24 +5418,24 @@ void case_257() lbag.AddLocation (yyVal, GetLocation (yyVals[-6+yyTop]), GetLocation (yyVals[-5+yyTop]), GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_258() -#line 2133 "cs-parser.jay" +void case_260() +#line 2141 "cs-parser.jay" { Error_SyntaxError (yyToken); current_local_parameters = ParametersCompiled.EmptyReadOnlyParameters; yyVal = new OperatorDeclaration (Operator.OpType.Implicit, null, GetLocation (yyVals[-1+yyTop])); } -void case_259() -#line 2139 "cs-parser.jay" +void case_261() +#line 2147 "cs-parser.jay" { Error_SyntaxError (yyToken); current_local_parameters = ParametersCompiled.EmptyReadOnlyParameters; yyVal = new OperatorDeclaration (Operator.OpType.Explicit, null, GetLocation (yyVals[-1+yyTop])); } -void case_260() -#line 2149 "cs-parser.jay" +void case_262() +#line 2157 "cs-parser.jay" { Constructor c = (Constructor) yyVals[-1+yyTop]; c.Block = (ToplevelBlock) yyVals[0+yyTop]; @@ -5429,8 +5448,8 @@ void case_260() Lexer.doc_state = XmlCommentState.Allowed; } -void case_261() -#line 2166 "cs-parser.jay" +void case_263() +#line 2174 "cs-parser.jay" { if (doc_support) { tmpComment = Lexer.consume_doc_comment (); @@ -5440,8 +5459,8 @@ void case_261() valid_param_mod = ParameterModifierType.All; } -void case_262() -#line 2175 "cs-parser.jay" +void case_264() +#line 2183 "cs-parser.jay" { valid_param_mod = 0; current_local_parameters = (ParametersCompiled) yyVals[-1+yyTop]; @@ -5471,8 +5490,8 @@ void case_262() start_block (lexer.Location); } -void case_263() -#line 2204 "cs-parser.jay" +void case_265() +#line 2212 "cs-parser.jay" { if (yyVals[0+yyTop] != null) { var c = (Constructor) yyVals[-1+yyTop]; @@ -5488,39 +5507,39 @@ void case_263() yyVal = yyVals[-1+yyTop]; } -void case_269() -#line 2236 "cs-parser.jay" +void case_271() +#line 2244 "cs-parser.jay" { --lexer.parsing_block; yyVal = new ConstructorBaseInitializer ((Arguments) yyVals[-1+yyTop], GetLocation (yyVals[-4+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[-5+yyTop]), GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_271() -#line 2246 "cs-parser.jay" +void case_273() +#line 2254 "cs-parser.jay" { --lexer.parsing_block; yyVal = new ConstructorThisInitializer ((Arguments) yyVals[-1+yyTop], GetLocation (yyVals[-4+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[-5+yyTop]), GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_272() -#line 2252 "cs-parser.jay" +void case_274() +#line 2260 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = new ConstructorThisInitializer (null, GetLocation (yyVals[0+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_273() -#line 2258 "cs-parser.jay" +void case_275() +#line 2266 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = null; } -void case_274() -#line 2266 "cs-parser.jay" +void case_276() +#line 2274 "cs-parser.jay" { if (doc_support) { tmpComment = Lexer.consume_doc_comment (); @@ -5530,8 +5549,8 @@ void case_274() current_local_parameters = ParametersCompiled.EmptyReadOnlyParameters; } -void case_275() -#line 2275 "cs-parser.jay" +void case_277() +#line 2283 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-3+yyTop]; if (lt.Value != current_container.MemberName.Name){ @@ -5552,8 +5571,8 @@ void case_275() current_local_parameters = null; } -void case_276() -#line 2300 "cs-parser.jay" +void case_278() +#line 2308 "cs-parser.jay" { current_event_field = new EventField (current_type, (FullNamedExpression) yyVals[-1+yyTop], (Modifiers) yyVals[-3+yyTop], (MemberName) yyVals[0+yyTop], (Attributes) yyVals[-4+yyTop]); current_type.AddMember (current_event_field); @@ -5566,8 +5585,8 @@ void case_276() yyVal = current_event_field; } -void case_277() -#line 2314 "cs-parser.jay" +void case_279() +#line 2322 "cs-parser.jay" { if (doc_support) { current_event_field.DocComment = Lexer.consume_doc_comment (); @@ -5578,8 +5597,8 @@ void case_277() current_event_field = null; } -void case_278() -#line 2327 "cs-parser.jay" +void case_280() +#line 2335 "cs-parser.jay" { current_event = new EventProperty (current_type, (FullNamedExpression) yyVals[-2+yyTop], (Modifiers) yyVals[-4+yyTop], (MemberName) yyVals[-1+yyTop], (Attributes) yyVals[-5+yyTop]); current_type.AddMember (current_event); @@ -5588,8 +5607,8 @@ void case_278() lexer.EventParsing = true; } -void case_279() -#line 2335 "cs-parser.jay" +void case_281() +#line 2343 "cs-parser.jay" { if (current_container.Kind == MemberKind.Interface) report.Error (69, GetLocation (yyVals[-2+yyTop]), "Event in interface cannot have add or remove accessors"); @@ -5597,8 +5616,8 @@ void case_279() lexer.EventParsing = false; } -void case_280() -#line 2342 "cs-parser.jay" +void case_282() +#line 2350 "cs-parser.jay" { if (doc_support) { current_event.DocComment = Lexer.consume_doc_comment (); @@ -5610,23 +5629,23 @@ void case_280() current_local_parameters = null; } -void case_283() -#line 2361 "cs-parser.jay" +void case_285() +#line 2369 "cs-parser.jay" { --lexer.parsing_block; current_event_field.Initializer = (Expression) yyVals[0+yyTop]; } -void case_288() -#line 2385 "cs-parser.jay" +void case_290() +#line 2393 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; yyVal = new FieldDeclarator (new SimpleMemberName (lt.Value, lt.Location), null); lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_290() -#line 2395 "cs-parser.jay" +void case_292() +#line 2403 "cs-parser.jay" { --lexer.parsing_block; var lt = (Tokenizer.LocatedToken) yyVals[-3+yyTop]; @@ -5634,8 +5653,8 @@ void case_290() lbag.AddLocation (yyVal, GetLocation (yyVals[-4+yyTop]), GetLocation (yyVals[-2+yyTop])); } -void case_291() -#line 2404 "cs-parser.jay" +void case_293() +#line 2412 "cs-parser.jay" { if (current_container.Kind == MemberKind.Interface) { report.Error (68, lexer.Location, "`{0}': event in interface cannot have an initializer", @@ -5648,29 +5667,29 @@ void case_291() } } -void case_295() -#line 2425 "cs-parser.jay" +void case_297() +#line 2433 "cs-parser.jay" { report.Error (65, lexer.Location, "`{0}': event property must have both add and remove accessors", current_event.GetSignatureForError ()); } -void case_296() -#line 2430 "cs-parser.jay" +void case_298() +#line 2438 "cs-parser.jay" { report.Error (65, lexer.Location, "`{0}': event property must have both add and remove accessors", current_event.GetSignatureForError ()); } -void case_297() -#line 2435 "cs-parser.jay" +void case_299() +#line 2443 "cs-parser.jay" { report.Error (1055, GetLocation (yyVals[0+yyTop]), "An add or remove accessor expected"); yyVal = null; } -void case_298() -#line 2443 "cs-parser.jay" +void case_300() +#line 2451 "cs-parser.jay" { if (yyVals[-1+yyTop] != ModifierNone) { report.Error (1609, GetLocation (yyVals[-1+yyTop]), "Modifiers cannot be placed on event accessor declarations"); @@ -5683,8 +5702,8 @@ void case_298() lexer.EventParsing = false; } -void case_299() -#line 2455 "cs-parser.jay" +void case_301() +#line 2463 "cs-parser.jay" { lexer.EventParsing = true; @@ -5698,8 +5717,8 @@ void case_299() current_local_parameters = null; } -void case_300() -#line 2471 "cs-parser.jay" +void case_302() +#line 2479 "cs-parser.jay" { if (yyVals[-1+yyTop] != ModifierNone) { report.Error (1609, GetLocation (yyVals[-1+yyTop]), "Modifiers cannot be placed on event accessor declarations"); @@ -5712,8 +5731,8 @@ void case_300() lexer.EventParsing = false; } -void case_301() -#line 2483 "cs-parser.jay" +void case_303() +#line 2491 "cs-parser.jay" { lexer.EventParsing = true; @@ -5727,22 +5746,32 @@ void case_301() current_local_parameters = null; } -void case_302() -#line 2499 "cs-parser.jay" +void case_304() +#line 2507 "cs-parser.jay" { report.Error (73, lexer.Location, "An add or remove accessor must have a body"); yyVal = null; } -void case_304() -#line 2512 "cs-parser.jay" +void case_306() +#line 2515 "cs-parser.jay" +{ +#if FULL_AST + current_type.UnattachedAttributes = ((List) yyVals[-1+yyTop]).ToArray (); +#endif + report.Error (1519, lexer.Location, "Attribute not attached to any member. Unexpected symbol `{0}' in class, struct, or interface member declaration. "); + lexer.putback ('}'); + } + +void case_307() +#line 2530 "cs-parser.jay" { if (doc_support) enumTypeComment = Lexer.consume_doc_comment (); } -void case_305() -#line 2517 "cs-parser.jay" +void case_308() +#line 2535 "cs-parser.jay" { if (doc_support) Lexer.doc_state = XmlCommentState.Allowed; @@ -5760,16 +5789,16 @@ void case_305() } } -void case_306() -#line 2534 "cs-parser.jay" +void case_309() +#line 2552 "cs-parser.jay" { /* here will be evaluated after CLOSE_BLACE is consumed.*/ if (doc_support) Lexer.doc_state = XmlCommentState.Allowed; } -void case_307() -#line 2540 "cs-parser.jay" +void case_310() +#line 2558 "cs-parser.jay" { lbag.AppendToMember (current_container, GetLocation (yyVals[-1+yyTop])); if (yyVals[0+yyTop] != null) { @@ -5786,8 +5815,8 @@ void case_307() yyVal = pop_current_class (); } -void case_309() -#line 2560 "cs-parser.jay" +void case_312() +#line 2578 "cs-parser.jay" { var te = yyVals[0+yyTop] as TypeExpression; if (te == null || !EnumSpec.IsValidUnderlyingType (te.Type)) { @@ -5799,22 +5828,22 @@ void case_309() } } -void case_310() -#line 2571 "cs-parser.jay" +void case_313() +#line 2589 "cs-parser.jay" { Error_TypeExpected (GetLocation (yyVals[-1+yyTop])); yyVal = null; } -void case_315() -#line 2589 "cs-parser.jay" +void case_318() +#line 2607 "cs-parser.jay" { lbag.AppendToMember (current_container, GetLocation (yyVals[-1+yyTop])); yyVal = yyVals[0+yyTop]; } -void case_316() -#line 2597 "cs-parser.jay" +void case_319() +#line 2615 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; var em = new EnumMember ((Enum) current_type, new MemberName (lt.Value, lt.Location), (Attributes) yyVals[-1+yyTop]); @@ -5828,8 +5857,8 @@ void case_316() yyVal = em; } -void case_317() -#line 2610 "cs-parser.jay" +void case_320() +#line 2628 "cs-parser.jay" { ++lexer.parsing_block; if (doc_support) { @@ -5838,8 +5867,8 @@ void case_317() } } -void case_318() -#line 2618 "cs-parser.jay" +void case_321() +#line 2636 "cs-parser.jay" { --lexer.parsing_block; @@ -5854,8 +5883,8 @@ void case_318() yyVal = em; } -void case_320() -#line 2643 "cs-parser.jay" +void case_323() +#line 2661 "cs-parser.jay" { valid_param_mod = 0; @@ -5871,8 +5900,8 @@ void case_320() lexer.ConstraintsParsing = true; } -void case_322() -#line 2662 "cs-parser.jay" +void case_325() +#line 2680 "cs-parser.jay" { if (doc_support) { current_delegate.DocComment = Lexer.consume_doc_comment (); @@ -5888,8 +5917,8 @@ void case_322() current_delegate = null; } -void case_324() -#line 2681 "cs-parser.jay" +void case_327() +#line 2699 "cs-parser.jay" { if (lang_version < LanguageVersion.ISO_2) FeatureIsNotAvailable (GetLocation (yyVals[0+yyTop]), "nullable types"); @@ -5897,8 +5926,8 @@ void case_324() yyVal = ComposedTypeSpecifier.CreateNullable (GetLocation (yyVals[0+yyTop])); } -void case_326() -#line 2692 "cs-parser.jay" +void case_329() +#line 2710 "cs-parser.jay" { var lt1 = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; var lt2 = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; @@ -5907,23 +5936,23 @@ void case_326() lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_328() -#line 2704 "cs-parser.jay" +void case_331() +#line 2722 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; yyVal = new MemberAccess ((Expression) yyVals[-3+yyTop], lt.Value, (TypeArguments) yyVals[0+yyTop], lt.Location); lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop])); } -void case_329() -#line 2713 "cs-parser.jay" +void case_332() +#line 2731 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; yyVal = new SimpleName (lt.Value, (TypeArguments)yyVals[0+yyTop], lt.Location); } -void case_331() -#line 2725 "cs-parser.jay" +void case_334() +#line 2743 "cs-parser.jay" { if (lang_version < LanguageVersion.ISO_2) FeatureIsNotAvailable (GetLocation (yyVals[-2+yyTop]), "generics"); @@ -5935,15 +5964,15 @@ void case_331() yyVal = yyVals[-1+yyTop];; } -void case_332() -#line 2736 "cs-parser.jay" +void case_335() +#line 2754 "cs-parser.jay" { Error_TypeExpected (lexer.Location); yyVal = new TypeArguments (); } -void case_333() -#line 2744 "cs-parser.jay" +void case_336() +#line 2762 "cs-parser.jay" { TypeArguments type_args = new TypeArguments (); type_args.Add ((FullNamedExpression) yyVals[0+yyTop]); @@ -5951,8 +5980,8 @@ void case_333() locationListStack.Push (new List ()); } -void case_334() -#line 2751 "cs-parser.jay" +void case_337() +#line 2769 "cs-parser.jay" { TypeArguments type_args = (TypeArguments) yyVals[-2+yyTop]; type_args.Add ((FullNamedExpression) yyVals[0+yyTop]); @@ -5960,16 +5989,16 @@ void case_334() locationListStack.Peek ().Add (GetLocation (yyVals[-1+yyTop])); } -void case_336() -#line 2768 "cs-parser.jay" +void case_339() +#line 2786 "cs-parser.jay" { lexer.parsing_generic_declaration = false; var lt = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; yyVal = new MemberName (lt.Value, (TypeParameters)yyVals[0+yyTop], lt.Location); } -void case_337() -#line 2777 "cs-parser.jay" +void case_340() +#line 2795 "cs-parser.jay" { MemberName mn = (MemberName)yyVals[0+yyTop]; if (mn.TypeParameters != null) @@ -5977,38 +6006,38 @@ void case_337() mn.GetSignatureForError ())); } -void case_339() -#line 2788 "cs-parser.jay" +void case_342() +#line 2806 "cs-parser.jay" { lexer.parsing_generic_declaration = false; var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; yyVal = new MemberName (lt.Value, (TypeParameters) yyVals[0+yyTop], (ATypeNameExpression) yyVals[-2+yyTop], lt.Location); } -void case_340() -#line 2797 "cs-parser.jay" +void case_343() +#line 2815 "cs-parser.jay" { lexer.parsing_generic_declaration = false; yyVal = new MemberName (TypeDefinition.DefaultIndexerName, GetLocation (yyVals[0+yyTop])); } -void case_341() -#line 2802 "cs-parser.jay" +void case_344() +#line 2820 "cs-parser.jay" { lexer.parsing_generic_declaration = false; yyVal = new MemberName (TypeDefinition.DefaultIndexerName, null, (ATypeNameExpression) yyVals[-1+yyTop], GetLocation (yyVals[0+yyTop])); } -void case_342() -#line 2810 "cs-parser.jay" +void case_345() +#line 2828 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; yyVal = new SimpleName (lt.Value, (TypeArguments) yyVals[-1+yyTop], lt.Location); lbag.AddLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_343() -#line 2816 "cs-parser.jay" +void case_346() +#line 2834 "cs-parser.jay" { var lt1 = (Tokenizer.LocatedToken) yyVals[-3+yyTop]; var lt2 = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; @@ -6017,16 +6046,16 @@ void case_343() lbag.AddLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_344() -#line 2824 "cs-parser.jay" +void case_347() +#line 2842 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; yyVal = new MemberAccess ((ATypeNameExpression) yyVals[-3+yyTop], lt.Value, (TypeArguments) yyVals[-1+yyTop], lt.Location); lbag.AddLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_346() -#line 2834 "cs-parser.jay" +void case_349() +#line 2852 "cs-parser.jay" { if (lang_version < LanguageVersion.ISO_2) FeatureIsNotAvailable (GetLocation (yyVals[-2+yyTop]), "generics"); @@ -6035,16 +6064,16 @@ void case_346() lbag.AppendTo (yyVal, GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_347() -#line 2845 "cs-parser.jay" +void case_350() +#line 2863 "cs-parser.jay" { var tparams = new TypeParameters (); tparams.Add ((TypeParameter)yyVals[0+yyTop]); yyVal = tparams; } -void case_348() -#line 2851 "cs-parser.jay" +void case_351() +#line 2869 "cs-parser.jay" { var tparams = (TypeParameters) yyVals[-2+yyTop]; tparams.Add ((TypeParameter)yyVals[0+yyTop]); @@ -6052,15 +6081,15 @@ void case_348() lbag.AddLocation (yyVals[0+yyTop], GetLocation (yyVals[0+yyTop])); } -void case_349() -#line 2861 "cs-parser.jay" +void case_352() +#line 2879 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken)yyVals[0+yyTop]; yyVal = new TypeParameter (new MemberName (lt.Value, lt.Location), (Attributes)yyVals[-2+yyTop], (Variance) yyVals[-1+yyTop]); } -void case_350() -#line 2866 "cs-parser.jay" +void case_353() +#line 2884 "cs-parser.jay" { if (GetTokenName (yyToken) == "type") report.Error (81, GetLocation (yyVals[0+yyTop]), "Type parameter declaration must be an identifier not a type"); @@ -6070,29 +6099,29 @@ void case_350() yyVal = new TypeParameter (MemberName.Null, null, Variance.None); } -void case_355() -#line 2900 "cs-parser.jay" +void case_358() +#line 2918 "cs-parser.jay" { Expression.Error_VoidInvalidInTheContext (GetLocation (yyVals[0+yyTop]), report); yyVal = new TypeExpression (compiler.BuiltinTypes.Void, GetLocation (yyVals[0+yyTop])); } -void case_357() -#line 2909 "cs-parser.jay" +void case_360() +#line 2927 "cs-parser.jay" { Expression.Error_VoidInvalidInTheContext (GetLocation (yyVals[0+yyTop]), report); yyVal = new TypeExpression (compiler.BuiltinTypes.Void, GetLocation (yyVals[0+yyTop])); } -void case_359() -#line 2918 "cs-parser.jay" +void case_362() +#line 2936 "cs-parser.jay" { report.Error (1536, GetLocation (yyVals[0+yyTop]), "Invalid parameter type `void'"); yyVal = new TypeExpression (compiler.BuiltinTypes.Void, GetLocation (yyVals[0+yyTop])); } -void case_362() -#line 2934 "cs-parser.jay" +void case_365() +#line 2952 "cs-parser.jay" { if (yyVals[0+yyTop] != null) { yyVal = new ComposedCast ((ATypeNameExpression) yyVals[-1+yyTop], (ComposedTypeSpecifier) yyVals[0+yyTop]); @@ -6105,23 +6134,23 @@ void case_362() } } -void case_364() -#line 2950 "cs-parser.jay" +void case_367() +#line 2968 "cs-parser.jay" { if (yyVals[0+yyTop] != null) yyVal = new ComposedCast ((FullNamedExpression) yyVals[-1+yyTop], (ComposedTypeSpecifier) yyVals[0+yyTop]); } -void case_367() -#line 2966 "cs-parser.jay" +void case_370() +#line 2984 "cs-parser.jay" { var types = new List (2); types.Add ((FullNamedExpression) yyVals[0+yyTop]); yyVal = types; } -void case_368() -#line 2972 "cs-parser.jay" +void case_371() +#line 2990 "cs-parser.jay" { var types = (List) yyVals[-2+yyTop]; types.Add ((FullNamedExpression) yyVals[0+yyTop]); @@ -6129,8 +6158,8 @@ void case_368() yyVal = types; } -void case_369() -#line 2982 "cs-parser.jay" +void case_372() +#line 3000 "cs-parser.jay" { if (yyVals[0+yyTop] is ComposedCast) { report.Error (1521, GetLocation (yyVals[0+yyTop]), "Invalid base type `{0}'", ((ComposedCast)yyVals[0+yyTop]).GetSignatureForError ()); @@ -6138,36 +6167,36 @@ void case_369() yyVal = yyVals[0+yyTop]; } -void case_370() -#line 2989 "cs-parser.jay" +void case_373() +#line 3007 "cs-parser.jay" { Error_TypeExpected (lexer.Location); yyVal = null; } -void case_407() -#line 3051 "cs-parser.jay" +void case_410() +#line 3069 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; yyVal = new SimpleName (lt.Value, (TypeArguments)yyVals[0+yyTop], lt.Location); } -void case_408() -#line 3055 "cs-parser.jay" +void case_411() +#line 3073 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; yyVal = new CompletionSimpleName (MemberName.MakeName (lt.Value, null), lt.Location); } -void case_419() -#line 3096 "cs-parser.jay" +void case_422() +#line 3114 "cs-parser.jay" { yyVal = new ParenthesizedExpression ((Expression) yyVals[-1+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_421() -#line 3108 "cs-parser.jay" +void case_424() +#line 3126 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; yyVal = new MemberAccess ((Expression) yyVals[-3+yyTop], lt.Value, (TypeArguments) yyVals[0+yyTop], lt.Location) { @@ -6175,8 +6204,8 @@ void case_421() }; } -void case_422() -#line 3115 "cs-parser.jay" +void case_425() +#line 3133 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; yyVal = new MemberAccess ((Expression) yyVals[-3+yyTop], lt.Value, (TypeArguments) yyVals[0+yyTop], lt.Location) { @@ -6184,8 +6213,8 @@ void case_422() }; } -void case_423() -#line 3122 "cs-parser.jay" +void case_426() +#line 3140 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; yyVal = new MemberAccess (new BaseThis (GetLocation (yyVals[-3+yyTop])), lt.Value, (TypeArguments) yyVals[0+yyTop], lt.Location) { @@ -6193,8 +6222,8 @@ void case_423() }; } -void case_424() -#line 3129 "cs-parser.jay" +void case_427() +#line 3147 "cs-parser.jay" { var lt1 = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; var lt2 = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; @@ -6203,29 +6232,29 @@ void case_424() lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_426() -#line 3139 "cs-parser.jay" +void case_429() +#line 3157 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; yyVal = new CompletionMemberAccess ((Expression) yyVals[-3+yyTop], lt.Value, lt.Location); } -void case_428() -#line 3147 "cs-parser.jay" +void case_431() +#line 3165 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; yyVal = new CompletionMemberAccess ((Expression) yyVals[-3+yyTop], lt.Value, lt.Location); } -void case_429() -#line 3155 "cs-parser.jay" +void case_432() +#line 3173 "cs-parser.jay" { yyVal = new Invocation ((Expression) yyVals[-3+yyTop], (Arguments) yyVals[-1+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_432() -#line 3168 "cs-parser.jay" +void case_435() +#line 3186 "cs-parser.jay" { if (yyVals[-1+yyTop] == null) { yyVal = CollectionOrObjectInitializers.Empty; @@ -6236,23 +6265,23 @@ void case_432() } } -void case_433() -#line 3178 "cs-parser.jay" +void case_436() +#line 3196 "cs-parser.jay" { yyVal = new CollectionOrObjectInitializers ((List) yyVals[-2+yyTop], GetLocation (yyVals[-3+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[-1+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_436() -#line 3194 "cs-parser.jay" +void case_439() +#line 3212 "cs-parser.jay" { var a = new List (); a.Add ((Expression) yyVals[0+yyTop]); yyVal = a; } -void case_437() -#line 3200 "cs-parser.jay" +void case_440() +#line 3218 "cs-parser.jay" { var a = (List)yyVals[-2+yyTop]; a.Add ((Expression) yyVals[0+yyTop]); @@ -6260,23 +6289,23 @@ void case_437() yyVal = a; } -void case_438() -#line 3206 "cs-parser.jay" +void case_441() +#line 3224 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = yyVals[-1+yyTop]; } -void case_439() -#line 3214 "cs-parser.jay" +void case_442() +#line 3232 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; yyVal = new ElementInitializer (lt.Value, (Expression)yyVals[0+yyTop], lt.Location); lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_441() -#line 3223 "cs-parser.jay" +void case_444() +#line 3241 "cs-parser.jay" { CompletionSimpleName csn = yyVals[-1+yyTop] as CompletionSimpleName; if (csn == null) @@ -6285,8 +6314,8 @@ void case_441() yyVal = new CompletionElementInitializer (csn.Prefix, csn.Location); } -void case_442() -#line 3231 "cs-parser.jay" +void case_445() +#line 3249 "cs-parser.jay" { if (yyVals[-1+yyTop] == null) yyVal = null; @@ -6294,23 +6323,23 @@ void case_442() yyVal = new CollectionElementInitializer ((List)yyVals[-1+yyTop], GetLocation (yyVals[-2+yyTop])); } -void case_443() -#line 3238 "cs-parser.jay" +void case_446() +#line 3256 "cs-parser.jay" { report.Error (1920, GetLocation (yyVals[-1+yyTop]), "An element initializer cannot be empty"); yyVal = null; } -void case_448() -#line 3256 "cs-parser.jay" +void case_451() +#line 3274 "cs-parser.jay" { Arguments list = new Arguments (4); list.Add ((Argument) yyVals[0+yyTop]); yyVal = list; } -void case_449() -#line 3262 "cs-parser.jay" +void case_452() +#line 3280 "cs-parser.jay" { Arguments list = (Arguments) yyVals[-2+yyTop]; if (list [list.Count - 1] is NamedArgument) @@ -6321,8 +6350,8 @@ void case_449() yyVal = list; } -void case_450() -#line 3272 "cs-parser.jay" +void case_453() +#line 3290 "cs-parser.jay" { Arguments list = (Arguments) yyVals[-2+yyTop]; NamedArgument a = (NamedArgument) yyVals[0+yyTop]; @@ -6338,65 +6367,65 @@ void case_450() yyVal = list; } -void case_451() -#line 3287 "cs-parser.jay" +void case_454() +#line 3305 "cs-parser.jay" { report.Error (839, GetLocation (yyVals[0+yyTop]), "An argument is missing"); yyVal = yyVals[-1+yyTop]; } -void case_452() -#line 3292 "cs-parser.jay" +void case_455() +#line 3310 "cs-parser.jay" { report.Error (839, GetLocation (yyVals[-1+yyTop]), "An argument is missing"); yyVal = null; } -void case_457() -#line 3313 "cs-parser.jay" +void case_460() +#line 3331 "cs-parser.jay" { yyVal = new Argument ((Expression) yyVals[0+yyTop], Argument.AType.Ref); lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_458() -#line 3318 "cs-parser.jay" +void case_461() +#line 3336 "cs-parser.jay" { yyVal = new Argument ((Expression) yyVals[0+yyTop], Argument.AType.Out); lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_459() -#line 3323 "cs-parser.jay" +void case_462() +#line 3341 "cs-parser.jay" { yyVal = new Argument (new Arglist ((Arguments) yyVals[-1+yyTop], GetLocation (yyVals[-3+yyTop]))); lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_460() -#line 3328 "cs-parser.jay" +void case_463() +#line 3346 "cs-parser.jay" { yyVal = new Argument (new Arglist (GetLocation (yyVals[-2+yyTop]))); lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_462() -#line 3340 "cs-parser.jay" +void case_465() +#line 3358 "cs-parser.jay" { yyVal = new ElementAccess ((Expression) yyVals[-3+yyTop], (Arguments) yyVals[-1+yyTop], GetLocation (yyVals[-2+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_465() -#line 3356 "cs-parser.jay" +void case_468() +#line 3374 "cs-parser.jay" { var list = new List (4); list.Add ((Expression) yyVals[0+yyTop]); yyVal = list; } -void case_466() -#line 3362 "cs-parser.jay" +void case_469() +#line 3380 "cs-parser.jay" { var list = (List) yyVals[-2+yyTop]; list.Add ((Expression) yyVals[0+yyTop]); @@ -6404,23 +6433,23 @@ void case_466() yyVal = list; } -void case_467() -#line 3368 "cs-parser.jay" +void case_470() +#line 3386 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = yyVals[-1+yyTop]; } -void case_468() -#line 3376 "cs-parser.jay" +void case_471() +#line 3394 "cs-parser.jay" { Arguments args = new Arguments (4); args.Add ((Argument) yyVals[0+yyTop]); yyVal = args; } -void case_469() -#line 3382 "cs-parser.jay" +void case_472() +#line 3400 "cs-parser.jay" { Arguments args = (Arguments) yyVals[-2+yyTop]; if (args [args.Count - 1] is NamedArgument && !(yyVals[0+yyTop] is NamedArgument)) @@ -6431,22 +6460,22 @@ void case_469() yyVal = args; } -void case_473() -#line 3410 "cs-parser.jay" +void case_476() +#line 3428 "cs-parser.jay" { yyVal = new ElementAccess (new BaseThis (GetLocation (yyVals[-3+yyTop])), (Arguments) yyVals[-1+yyTop], GetLocation (yyVals[-2+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_474() -#line 3415 "cs-parser.jay" +void case_477() +#line 3433 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = new ElementAccess (null, null, GetLocation (yyVals[-1+yyTop])); } -void case_477() -#line 3437 "cs-parser.jay" +void case_480() +#line 3455 "cs-parser.jay" { if (yyVals[0+yyTop] != null) { if (lang_version <= LanguageVersion.ISO_2) @@ -6460,8 +6489,8 @@ void case_477() lbag.AddLocation (yyVal, GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[-1+yyTop])); } -void case_478() -#line 3450 "cs-parser.jay" +void case_481() +#line 3468 "cs-parser.jay" { if (lang_version <= LanguageVersion.ISO_2) FeatureIsNotAvailable (GetLocation (yyVals[-2+yyTop]), "collection initializers"); @@ -6469,8 +6498,8 @@ void case_478() yyVal = new NewInitialize ((FullNamedExpression) yyVals[-1+yyTop], null, (CollectionOrObjectInitializers) yyVals[0+yyTop], GetLocation (yyVals[-2+yyTop])); } -void case_479() -#line 3462 "cs-parser.jay" +void case_482() +#line 3480 "cs-parser.jay" { yyVal = new ArrayCreation ((FullNamedExpression) yyVals[-5+yyTop], (List) yyVals[-3+yyTop], new ComposedTypeSpecifier (((List) yyVals[-3+yyTop]).Count, GetLocation (yyVals[-4+yyTop])) { @@ -6479,8 +6508,8 @@ void case_479() lbag.AddLocation (yyVal, GetLocation (yyVals[-4+yyTop]), GetLocation (yyVals[-2+yyTop])); } -void case_480() -#line 3470 "cs-parser.jay" +void case_483() +#line 3488 "cs-parser.jay" { if (yyVals[0+yyTop] == null) report.Error (1586, GetLocation (yyVals[-3+yyTop]), "Array creation must have array size or array initializer"); @@ -6488,8 +6517,8 @@ void case_480() yyVal = new ArrayCreation ((FullNamedExpression) yyVals[-2+yyTop], (ComposedTypeSpecifier) yyVals[-1+yyTop], (ArrayInitializer) yyVals[0+yyTop], GetLocation (yyVals[-3+yyTop])); } -void case_481() -#line 3477 "cs-parser.jay" +void case_484() +#line 3495 "cs-parser.jay" { if (lang_version <= LanguageVersion.ISO_2) FeatureIsNotAvailable (GetLocation (yyVals[-2+yyTop]), "implicitly typed arrays"); @@ -6497,29 +6526,29 @@ void case_481() yyVal = new ImplicitlyTypedArrayCreation ((ComposedTypeSpecifier) yyVals[-1+yyTop], (ArrayInitializer) yyVals[0+yyTop], GetLocation (yyVals[-2+yyTop])); } -void case_482() -#line 3484 "cs-parser.jay" +void case_485() +#line 3502 "cs-parser.jay" { report.Error (178, GetLocation (yyVals[-1+yyTop]), "Invalid rank specifier, expecting `,' or `]'"); yyVal = new ArrayCreation ((FullNamedExpression) yyVals[-5+yyTop], null, GetLocation (yyVals[-6+yyTop])); } -void case_483() -#line 3489 "cs-parser.jay" +void case_486() +#line 3507 "cs-parser.jay" { Error_SyntaxError (1526, yyToken, "Unexpected symbol"); yyVal = new ArrayCreation ((FullNamedExpression) yyVals[-1+yyTop], null, GetLocation (yyVals[-2+yyTop])); } -void case_485() -#line 3500 "cs-parser.jay" +void case_488() +#line 3518 "cs-parser.jay" { --lexer.parsing_type; yyVal = yyVals[0+yyTop]; } -void case_486() -#line 3508 "cs-parser.jay" +void case_489() +#line 3526 "cs-parser.jay" { if (lang_version <= LanguageVersion.ISO_2) FeatureIsNotAvailable (GetLocation (yyVals[-3+yyTop]), "anonymous types"); @@ -6530,16 +6559,16 @@ void case_486() lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_491() -#line 3531 "cs-parser.jay" +void case_494() +#line 3549 "cs-parser.jay" { var a = new List (4); a.Add ((AnonymousTypeParameter) yyVals[0+yyTop]); yyVal = a; } -void case_492() -#line 3537 "cs-parser.jay" +void case_495() +#line 3555 "cs-parser.jay" { var a = (List) yyVals[-2+yyTop]; a.Add ((AnonymousTypeParameter) yyVals[0+yyTop]); @@ -6548,60 +6577,60 @@ void case_492() yyVal = a; } -void case_493() -#line 3548 "cs-parser.jay" +void case_496() +#line 3566 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken)yyVals[-2+yyTop]; yyVal = new AnonymousTypeParameter ((Expression)yyVals[0+yyTop], lt.Value, lt.Location); lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_494() -#line 3554 "cs-parser.jay" +void case_497() +#line 3572 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken)yyVals[0+yyTop]; yyVal = new AnonymousTypeParameter (new SimpleName (lt.Value, lt.Location), lt.Value, lt.Location); } -void case_495() -#line 3560 "cs-parser.jay" +void case_498() +#line 3578 "cs-parser.jay" { MemberAccess ma = (MemberAccess) yyVals[0+yyTop]; yyVal = new AnonymousTypeParameter (ma, ma.Name, ma.Location); } -void case_496() -#line 3565 "cs-parser.jay" +void case_499() +#line 3583 "cs-parser.jay" { report.Error (746, lexer.Location, "Invalid anonymous type member declarator. Anonymous type members must be a member assignment, simple name or member access expression"); yyVal = null; } -void case_500() -#line 3580 "cs-parser.jay" +void case_503() +#line 3598 "cs-parser.jay" { ((ComposedTypeSpecifier) yyVals[-1+yyTop]).Next = (ComposedTypeSpecifier) yyVals[0+yyTop]; yyVal = yyVals[-1+yyTop]; } -void case_501() -#line 3588 "cs-parser.jay" +void case_504() +#line 3606 "cs-parser.jay" { yyVal = ComposedTypeSpecifier.CreateArrayDimension (1, GetLocation (yyVals[-1+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_502() -#line 3593 "cs-parser.jay" +void case_505() +#line 3611 "cs-parser.jay" { yyVal = ComposedTypeSpecifier.CreateArrayDimension ((int)yyVals[-1+yyTop], GetLocation (yyVals[-2+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_507() -#line 3623 "cs-parser.jay" +void case_510() +#line 3641 "cs-parser.jay" { var ai = new ArrayInitializer (0, GetLocation (yyVals[-1+yyTop])); ai.VariableDeclaration = current_variable; @@ -6609,8 +6638,8 @@ void case_507() yyVal = ai; } -void case_508() -#line 3630 "cs-parser.jay" +void case_511() +#line 3648 "cs-parser.jay" { var ai = new ArrayInitializer ((List) yyVals[-2+yyTop], GetLocation (yyVals[-3+yyTop])); ai.VariableDeclaration = current_variable; @@ -6622,16 +6651,16 @@ void case_508() yyVal = ai; } -void case_509() -#line 3644 "cs-parser.jay" +void case_512() +#line 3662 "cs-parser.jay" { var list = new List (4); list.Add ((Expression) yyVals[0+yyTop]); yyVal = list; } -void case_510() -#line 3650 "cs-parser.jay" +void case_513() +#line 3668 "cs-parser.jay" { var list = (List) yyVals[-2+yyTop]; list.Add ((Expression) yyVals[0+yyTop]); @@ -6639,31 +6668,31 @@ void case_510() yyVal = list; } -void case_512() -#line 3664 "cs-parser.jay" +void case_515() +#line 3682 "cs-parser.jay" { lexer.TypeOfParsing = false; yyVal = new TypeOf ((FullNamedExpression) yyVals[-1+yyTop], GetLocation (yyVals[-4+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_515() -#line 3675 "cs-parser.jay" +void case_518() +#line 3693 "cs-parser.jay" { Error_TypeExpected (lexer.Location); yyVal = null; } -void case_516() -#line 3683 "cs-parser.jay" +void case_519() +#line 3701 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; yyVal = new SimpleName (lt.Value, (int) yyVals[0+yyTop], lt.Location); } -void case_517() -#line 3689 "cs-parser.jay" +void case_520() +#line 3707 "cs-parser.jay" { var lt1 = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; var lt2 = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; @@ -6672,8 +6701,8 @@ void case_517() lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_518() -#line 3697 "cs-parser.jay" +void case_521() +#line 3715 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; @@ -6682,8 +6711,8 @@ void case_518() }; } -void case_519() -#line 3705 "cs-parser.jay" +void case_522() +#line 3723 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; @@ -6692,8 +6721,8 @@ void case_519() }; } -void case_520() -#line 3713 "cs-parser.jay" +void case_523() +#line 3731 "cs-parser.jay" { var tne = (ATypeNameExpression) yyVals[-3+yyTop]; if (tne.HasTypeArguments) @@ -6705,8 +6734,8 @@ void case_520() }; } -void case_521() -#line 3727 "cs-parser.jay" +void case_524() +#line 3745 "cs-parser.jay" { if (lang_version < LanguageVersion.ISO_2) FeatureIsNotAvailable (GetLocation (yyVals[0+yyTop]), "generics"); @@ -6714,8 +6743,8 @@ void case_521() yyVal = yyVals[0+yyTop]; } -void case_522() -#line 3737 "cs-parser.jay" +void case_525() +#line 3755 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; if (lang_version == LanguageVersion.ISO_1) @@ -6724,36 +6753,36 @@ void case_522() yyVal = lt; } -void case_523() -#line 3748 "cs-parser.jay" +void case_526() +#line 3766 "cs-parser.jay" { yyVal = new SizeOf ((Expression) yyVals[-1+yyTop], GetLocation (yyVals[-3+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_524() -#line 3756 "cs-parser.jay" +void case_527() +#line 3774 "cs-parser.jay" { yyVal = new CheckedExpr ((Expression) yyVals[-1+yyTop], GetLocation (yyVals[-3+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_525() -#line 3764 "cs-parser.jay" +void case_528() +#line 3782 "cs-parser.jay" { yyVal = new UnCheckedExpr ((Expression) yyVals[-1+yyTop], GetLocation (yyVals[-3+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_526() -#line 3772 "cs-parser.jay" +void case_529() +#line 3790 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; yyVal = new MemberAccess (new Indirection ((Expression) yyVals[-3+yyTop], GetLocation (yyVals[-2+yyTop])), lt.Value, (TypeArguments) yyVals[0+yyTop], lt.Location); } -void case_528() -#line 3784 "cs-parser.jay" +void case_531() +#line 3802 "cs-parser.jay" { yyVal = end_anonymous ((ParametersBlock) yyVals[0+yyTop]); if ((ParametersCompiled) yyVals[-2+yyTop] != ParametersCompiled.Undefined) { @@ -6763,8 +6792,8 @@ void case_528() } } -void case_530() -#line 3797 "cs-parser.jay" +void case_533() +#line 3815 "cs-parser.jay" { yyVal = end_anonymous ((ParametersBlock) yyVals[0+yyTop]); @@ -6775,8 +6804,8 @@ void case_530() } } -void case_534() -#line 3822 "cs-parser.jay" +void case_537() +#line 3840 "cs-parser.jay" { valid_param_mod = 0; yyVal = yyVals[-1+yyTop]; @@ -6784,8 +6813,8 @@ void case_534() savedCloseLocation = GetLocation (yyVals[-2+yyTop]); } -void case_535() -#line 3832 "cs-parser.jay" +void case_538() +#line 3850 "cs-parser.jay" { if (lang_version < LanguageVersion.ISO_2) FeatureIsNotAvailable (GetLocation (yyVals[-3+yyTop]), "default value expression"); @@ -6794,15 +6823,15 @@ void case_535() lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_539() -#line 3852 "cs-parser.jay" +void case_542() +#line 3870 "cs-parser.jay" { yyVal = new Cast ((FullNamedExpression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-3+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_540() -#line 3857 "cs-parser.jay" +void case_543() +#line 3875 "cs-parser.jay" { if (!async_block) { report.Error (1992, GetLocation (yyVals[-1+yyTop]), @@ -6814,134 +6843,134 @@ void case_540() yyVal = new Await ((Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_549() -#line 3904 "cs-parser.jay" +void case_552() +#line 3922 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.Multiply, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_550() -#line 3909 "cs-parser.jay" +void case_553() +#line 3927 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.Division, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_551() -#line 3914 "cs-parser.jay" +void case_554() +#line 3932 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.Modulus, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_553() -#line 3923 "cs-parser.jay" +void case_556() +#line 3941 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.Addition, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_555() -#line 3932 "cs-parser.jay" +void case_558() +#line 3950 "cs-parser.jay" { /* Shift/Reduce conflict*/ yyVal = new Binary (Binary.Operator.Subtraction, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_559() -#line 3949 "cs-parser.jay" +void case_562() +#line 3967 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.LeftShift, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_560() -#line 3954 "cs-parser.jay" +void case_563() +#line 3972 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.RightShift, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_562() -#line 3963 "cs-parser.jay" +void case_565() +#line 3981 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.LessThan, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_563() -#line 3968 "cs-parser.jay" +void case_566() +#line 3986 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.GreaterThan, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_564() -#line 3973 "cs-parser.jay" +void case_567() +#line 3991 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.LessThanOrEqual, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_565() -#line 3978 "cs-parser.jay" +void case_568() +#line 3996 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.GreaterThanOrEqual, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_567() -#line 3987 "cs-parser.jay" +void case_570() +#line 4005 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.Equality, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_568() -#line 3992 "cs-parser.jay" +void case_571() +#line 4010 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.Inequality, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_570() -#line 4001 "cs-parser.jay" +void case_573() +#line 4019 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.BitwiseAnd, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_572() -#line 4010 "cs-parser.jay" +void case_575() +#line 4028 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.ExclusiveOr, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_574() -#line 4019 "cs-parser.jay" +void case_577() +#line 4037 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.BitwiseOr, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_576() -#line 4028 "cs-parser.jay" +void case_579() +#line 4046 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.LogicalAnd, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_578() -#line 4037 "cs-parser.jay" +void case_581() +#line 4055 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.LogicalOr, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_580() -#line 4046 "cs-parser.jay" +void case_583() +#line 4064 "cs-parser.jay" { if (lang_version < LanguageVersion.ISO_2) FeatureIsNotAvailable (GetLocation (yyVals[-1+yyTop]), "null coalescing operator"); @@ -6949,85 +6978,85 @@ void case_580() yyVal = new Nullable.NullCoalescingOperator ((Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_582() -#line 4057 "cs-parser.jay" +void case_585() +#line 4075 "cs-parser.jay" { yyVal = new Conditional (new BooleanExpression ((Expression) yyVals[-4+yyTop]), (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-3+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_584() -#line 4069 "cs-parser.jay" +void case_587() +#line 4087 "cs-parser.jay" { yyVal = new CompoundAssign ( Binary.Operator.Multiply, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_585() -#line 4074 "cs-parser.jay" +void case_588() +#line 4092 "cs-parser.jay" { yyVal = new CompoundAssign ( Binary.Operator.Division, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_586() -#line 4079 "cs-parser.jay" +void case_589() +#line 4097 "cs-parser.jay" { yyVal = new CompoundAssign ( Binary.Operator.Modulus, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_587() -#line 4084 "cs-parser.jay" +void case_590() +#line 4102 "cs-parser.jay" { yyVal = new CompoundAssign ( Binary.Operator.Addition, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_588() -#line 4089 "cs-parser.jay" +void case_591() +#line 4107 "cs-parser.jay" { yyVal = new CompoundAssign ( Binary.Operator.Subtraction, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_589() -#line 4094 "cs-parser.jay" +void case_592() +#line 4112 "cs-parser.jay" { yyVal = new CompoundAssign ( Binary.Operator.LeftShift, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_590() -#line 4099 "cs-parser.jay" +void case_593() +#line 4117 "cs-parser.jay" { yyVal = new CompoundAssign ( Binary.Operator.RightShift, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_591() -#line 4104 "cs-parser.jay" +void case_594() +#line 4122 "cs-parser.jay" { yyVal = new CompoundAssign ( Binary.Operator.BitwiseAnd, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_592() -#line 4109 "cs-parser.jay" +void case_595() +#line 4127 "cs-parser.jay" { yyVal = new CompoundAssign ( Binary.Operator.BitwiseOr, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_593() -#line 4114 "cs-parser.jay" +void case_596() +#line 4132 "cs-parser.jay" { yyVal = new CompoundAssign ( Binary.Operator.ExclusiveOr, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_594() -#line 4122 "cs-parser.jay" +void case_597() +#line 4140 "cs-parser.jay" { var pars = new List (4); pars.Add ((Parameter) yyVals[0+yyTop]); @@ -7035,8 +7064,8 @@ void case_594() yyVal = pars; } -void case_595() -#line 4129 "cs-parser.jay" +void case_598() +#line 4147 "cs-parser.jay" { var pars = (List) yyVals[-2+yyTop]; Parameter p = (Parameter)yyVals[0+yyTop]; @@ -7050,134 +7079,134 @@ void case_595() yyVal = pars; } -void case_596() -#line 4145 "cs-parser.jay" +void case_599() +#line 4163 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; yyVal = new Parameter ((FullNamedExpression) yyVals[-1+yyTop], lt.Value, (Parameter.Modifier) yyVals[-2+yyTop], null, lt.Location); } -void case_597() -#line 4151 "cs-parser.jay" +void case_600() +#line 4169 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; yyVal = new Parameter ((FullNamedExpression) yyVals[-1+yyTop], lt.Value, Parameter.Modifier.NONE, null, lt.Location); } -void case_598() -#line 4157 "cs-parser.jay" +void case_601() +#line 4175 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; yyVal = new ImplicitLambdaParameter (lt.Value, lt.Location); } -void case_600() -#line 4165 "cs-parser.jay" +void case_603() +#line 4183 "cs-parser.jay" { var pars_list = (List) yyVals[0+yyTop]; yyVal = new ParametersCompiled (pars_list.ToArray ()); lbag.AddLocation (yyVal, parameterListCommas); } -void case_604() -#line 4182 "cs-parser.jay" +void case_607() +#line 4200 "cs-parser.jay" { - Block b = end_block (lexer.Location); + Block b = end_block (Location.Null); b.IsCompilerGenerated = true; b.AddStatement (new ContextualReturn ((Expression) yyVals[0+yyTop])); yyVal = b; } -void case_606() -#line 4193 "cs-parser.jay" +void case_609() +#line 4211 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = EmptyExpression.Null; } -void case_607() -#line 4201 "cs-parser.jay" +void case_610() +#line 4219 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; Parameter p = new ImplicitLambdaParameter (lt.Value, lt.Location); start_anonymous (true, new ParametersCompiled (p), false, lt.Location); } -void case_608() -#line 4207 "cs-parser.jay" +void case_611() +#line 4225 "cs-parser.jay" { yyVal = end_anonymous ((ParametersBlock) yyVals[0+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop])); } -void case_609() -#line 4212 "cs-parser.jay" +void case_612() +#line 4230 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; Parameter p = new ImplicitLambdaParameter (lt.Value, lt.Location); start_anonymous (true, new ParametersCompiled (p), true, lt.Location); } -void case_610() -#line 4218 "cs-parser.jay" +void case_613() +#line 4236 "cs-parser.jay" { yyVal = end_anonymous ((ParametersBlock) yyVals[0+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[-4+yyTop]), GetLocation (yyVals[-2+yyTop])); } -void case_612() -#line 4227 "cs-parser.jay" +void case_615() +#line 4245 "cs-parser.jay" { valid_param_mod = 0; start_anonymous (true, (ParametersCompiled) yyVals[-2+yyTop], false, GetLocation (yyVals[-4+yyTop])); } -void case_613() -#line 4232 "cs-parser.jay" +void case_616() +#line 4250 "cs-parser.jay" { yyVal = end_anonymous ((ParametersBlock) yyVals[0+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[-6+yyTop]), GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[-2+yyTop])); } -void case_615() -#line 4241 "cs-parser.jay" +void case_618() +#line 4259 "cs-parser.jay" { valid_param_mod = 0; start_anonymous (true, (ParametersCompiled) yyVals[-2+yyTop], true, GetLocation (yyVals[-5+yyTop])); } -void case_616() -#line 4246 "cs-parser.jay" +void case_619() +#line 4264 "cs-parser.jay" { yyVal = end_anonymous ((ParametersBlock) yyVals[0+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[-7+yyTop]), GetLocation (yyVals[-6+yyTop]), GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[-2+yyTop])); } -void case_623() -#line 4269 "cs-parser.jay" +void case_626() +#line 4287 "cs-parser.jay" { yyVal = new RefValueExpr ((Expression) yyVals[-3+yyTop], (FullNamedExpression) yyVals[-1+yyTop], GetLocation (yyVals[-5+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[-4+yyTop]), GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_624() -#line 4274 "cs-parser.jay" +void case_627() +#line 4292 "cs-parser.jay" { yyVal = new RefTypeExpr ((Expression) yyVals[-1+yyTop], GetLocation (yyVals[-3+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_625() -#line 4279 "cs-parser.jay" +void case_628() +#line 4297 "cs-parser.jay" { yyVal = new MakeRefExpr ((Expression) yyVals[-1+yyTop], GetLocation (yyVals[-3+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_629() -#line 4308 "cs-parser.jay" +void case_632() +#line 4326 "cs-parser.jay" { Class c = new Class (current_container, (MemberName) yyVals[0+yyTop], (Modifiers) yyVals[-4+yyTop], (Attributes) yyVals[-5+yyTop]); if (((c.ModFlags & Modifiers.STATIC) != 0) && lang_version == LanguageVersion.ISO_1) { @@ -7188,8 +7217,8 @@ void case_629() lbag.AddMember (current_container, GetModifierLocations (), GetLocation (yyVals[-2+yyTop])); } -void case_630() -#line 4319 "cs-parser.jay" +void case_633() +#line 4337 "cs-parser.jay" { lexer.ConstraintsParsing = false; @@ -7204,16 +7233,16 @@ void case_630() lexer.parsing_modifiers = true; } -void case_631() -#line 4333 "cs-parser.jay" +void case_634() +#line 4351 "cs-parser.jay" { --lexer.parsing_declaration; if (doc_support) Lexer.doc_state = XmlCommentState.Allowed; } -void case_632() -#line 4339 "cs-parser.jay" +void case_635() +#line 4357 "cs-parser.jay" { if (yyVals[0+yyTop] == null) { lbag.AppendToMember (current_container, GetLocation (yyVals[-4+yyTop]), GetLocation (yyVals[-2+yyTop])); @@ -7223,16 +7252,16 @@ void case_632() yyVal = pop_current_class (); } -void case_635() -#line 4358 "cs-parser.jay" +void case_638() +#line 4376 "cs-parser.jay" { mod_locations = null; yyVal = ModifierNone; lexer.parsing_modifiers = false; } -void case_638() -#line 4372 "cs-parser.jay" +void case_641() +#line 4390 "cs-parser.jay" { var m1 = (Modifiers) yyVals[-1+yyTop]; var m2 = (Modifiers) yyVals[0+yyTop]; @@ -7249,8 +7278,8 @@ void case_638() yyVal = m1 | m2; } -void case_639() -#line 4391 "cs-parser.jay" +void case_642() +#line 4409 "cs-parser.jay" { yyVal = Modifiers.NEW; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); @@ -7259,92 +7288,92 @@ void case_639() report.Error (1530, GetLocation (yyVals[0+yyTop]), "Keyword `new' is not allowed on namespace elements"); } -void case_640() -#line 4399 "cs-parser.jay" +void case_643() +#line 4417 "cs-parser.jay" { yyVal = Modifiers.PUBLIC; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_641() -#line 4404 "cs-parser.jay" +void case_644() +#line 4422 "cs-parser.jay" { yyVal = Modifiers.PROTECTED; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_642() -#line 4409 "cs-parser.jay" +void case_645() +#line 4427 "cs-parser.jay" { yyVal = Modifiers.INTERNAL; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_643() -#line 4414 "cs-parser.jay" +void case_646() +#line 4432 "cs-parser.jay" { yyVal = Modifiers.PRIVATE; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_644() -#line 4419 "cs-parser.jay" +void case_647() +#line 4437 "cs-parser.jay" { yyVal = Modifiers.ABSTRACT; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_645() -#line 4424 "cs-parser.jay" +void case_648() +#line 4442 "cs-parser.jay" { yyVal = Modifiers.SEALED; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_646() -#line 4429 "cs-parser.jay" +void case_649() +#line 4447 "cs-parser.jay" { yyVal = Modifiers.STATIC; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_647() -#line 4434 "cs-parser.jay" +void case_650() +#line 4452 "cs-parser.jay" { yyVal = Modifiers.READONLY; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_648() -#line 4439 "cs-parser.jay" +void case_651() +#line 4457 "cs-parser.jay" { yyVal = Modifiers.VIRTUAL; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_649() -#line 4444 "cs-parser.jay" +void case_652() +#line 4462 "cs-parser.jay" { yyVal = Modifiers.OVERRIDE; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_650() -#line 4449 "cs-parser.jay" +void case_653() +#line 4467 "cs-parser.jay" { yyVal = Modifiers.EXTERN; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_651() -#line 4454 "cs-parser.jay" +void case_654() +#line 4472 "cs-parser.jay" { yyVal = Modifiers.VOLATILE; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_652() -#line 4459 "cs-parser.jay" +void case_655() +#line 4477 "cs-parser.jay" { yyVal = Modifiers.UNSAFE; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); @@ -7352,37 +7381,37 @@ void case_652() Error_UnsafeCodeNotAllowed (GetLocation (yyVals[0+yyTop])); } -void case_653() -#line 4466 "cs-parser.jay" +void case_656() +#line 4484 "cs-parser.jay" { yyVal = Modifiers.ASYNC; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_655() -#line 4475 "cs-parser.jay" +void case_658() +#line 4493 "cs-parser.jay" { current_type.AddBasesForPart ((List) yyVals[0+yyTop]); lbag.AppendToMember (current_type, GetLocation (yyVals[-1+yyTop])); } -void case_658() -#line 4488 "cs-parser.jay" +void case_661() +#line 4506 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = null; } -void case_659() -#line 4496 "cs-parser.jay" +void case_662() +#line 4514 "cs-parser.jay" { var constraints = new List (1); constraints.Add ((Constraints) yyVals[0+yyTop]); yyVal = constraints; } -void case_660() -#line 4502 "cs-parser.jay" +void case_663() +#line 4520 "cs-parser.jay" { var constraints = (List) yyVals[-1+yyTop]; Constraints new_constraint = (Constraints)yyVals[0+yyTop]; @@ -7399,24 +7428,24 @@ void case_660() yyVal = constraints; } -void case_661() -#line 4521 "cs-parser.jay" +void case_664() +#line 4539 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; yyVal = new Constraints (new SimpleMemberName (lt.Value, lt.Location), (List) yyVals[0+yyTop], GetLocation (yyVals[-3+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_662() -#line 4530 "cs-parser.jay" +void case_665() +#line 4548 "cs-parser.jay" { var constraints = new List (1); constraints.Add ((FullNamedExpression) yyVals[0+yyTop]); yyVal = constraints; } -void case_663() -#line 4536 "cs-parser.jay" +void case_666() +#line 4554 "cs-parser.jay" { var constraints = (List) yyVals[-2+yyTop]; var prev = constraints [constraints.Count - 1] as SpecialContraintExpr; @@ -7441,8 +7470,8 @@ void case_663() yyVal = constraints; } -void case_664() -#line 4563 "cs-parser.jay" +void case_667() +#line 4581 "cs-parser.jay" { if (yyVals[0+yyTop] is ComposedCast) report.Error (706, GetLocation (yyVals[0+yyTop]), "Invalid constraint type `{0}'", ((ComposedCast)yyVals[0+yyTop]).GetSignatureForError ()); @@ -7450,15 +7479,15 @@ void case_664() yyVal = yyVals[0+yyTop]; } -void case_665() -#line 4570 "cs-parser.jay" +void case_668() +#line 4588 "cs-parser.jay" { yyVal = new SpecialContraintExpr (SpecialConstraint.Constructor, GetLocation (yyVals[-2+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_669() -#line 4590 "cs-parser.jay" +void case_672() +#line 4608 "cs-parser.jay" { if (lang_version <= LanguageVersion.V_3) FeatureIsNotAvailable (lexer.Location, "generic type variance"); @@ -7466,57 +7495,57 @@ void case_669() yyVal = yyVals[0+yyTop]; } -void case_670() -#line 4600 "cs-parser.jay" +void case_673() +#line 4618 "cs-parser.jay" { yyVal = Variance.Covariant; savedLocation = GetLocation (yyVals[0+yyTop]); } -void case_671() -#line 4605 "cs-parser.jay" +void case_674() +#line 4623 "cs-parser.jay" { yyVal = Variance.Contravariant; savedLocation = GetLocation (yyVals[0+yyTop]); } -void case_672() -#line 4626 "cs-parser.jay" +void case_675() +#line 4644 "cs-parser.jay" { ++lexer.parsing_block; start_block (GetLocation (yyVals[0+yyTop])); } -void case_674() -#line 4638 "cs-parser.jay" +void case_677() +#line 4656 "cs-parser.jay" { --lexer.parsing_block; yyVal = end_block (GetLocation (yyVals[0+yyTop])); } -void case_675() -#line 4643 "cs-parser.jay" +void case_678() +#line 4661 "cs-parser.jay" { --lexer.parsing_block; yyVal = end_block (lexer.Location); } -void case_676() -#line 4652 "cs-parser.jay" +void case_679() +#line 4670 "cs-parser.jay" { ++lexer.parsing_block; current_block.StartLocation = GetLocation (yyVals[0+yyTop]); } -void case_677() -#line 4657 "cs-parser.jay" +void case_680() +#line 4675 "cs-parser.jay" { --lexer.parsing_block; yyVal = end_block (GetLocation (yyVals[0+yyTop])); } -void case_685() -#line 4685 "cs-parser.jay" +void case_688() +#line 4703 "cs-parser.jay" { Error_SyntaxError (yyToken); var lt =(Tokenizer.LocatedToken) yyVals[-1+yyTop]; @@ -7525,43 +7554,43 @@ void case_685() yyVal = null; } -void case_686() -#line 4694 "cs-parser.jay" +void case_689() +#line 4712 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = null; } -void case_719() -#line 4758 "cs-parser.jay" +void case_722() +#line 4776 "cs-parser.jay" { report.Error (1023, GetLocation (yyVals[0+yyTop]), "An embedded statement may not be a declaration or labeled statement"); yyVal = null; } -void case_720() -#line 4763 "cs-parser.jay" +void case_723() +#line 4781 "cs-parser.jay" { report.Error (1023, GetLocation (yyVals[0+yyTop]), "An embedded statement may not be a declaration or labeled statement"); yyVal = null; } -void case_721() -#line 4768 "cs-parser.jay" +void case_724() +#line 4786 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = new EmptyStatement (GetLocation (yyVals[0+yyTop])); } -void case_722() -#line 4776 "cs-parser.jay" +void case_725() +#line 4794 "cs-parser.jay" { /* Uses lexer.Location because semicolon location is not kept in quick mode*/ yyVal = new EmptyStatement (lexer.Location); } -void case_723() -#line 4784 "cs-parser.jay" +void case_726() +#line 4802 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; LabeledStatement labeled = new LabeledStatement (lt.Value, current_block, lt.Location); @@ -7570,8 +7599,8 @@ void case_723() current_block.AddStatement (labeled); } -void case_726() -#line 4797 "cs-parser.jay" +void case_729() +#line 4815 "cs-parser.jay" { if (yyVals[-1+yyTop] is VarExpr) yyVals[-1+yyTop] = new SimpleName ("var", ((VarExpr) yyVals[-1+yyTop]).Location); @@ -7579,8 +7608,8 @@ void case_726() yyVal = new ComposedCast ((FullNamedExpression) yyVals[-1+yyTop], (ComposedTypeSpecifier) yyVals[0+yyTop]); } -void case_727() -#line 4813 "cs-parser.jay" +void case_730() +#line 4831 "cs-parser.jay" { /* Ok, the above "primary_expression" is there to get rid of*/ /* both reduce/reduce and shift/reduces in the grammar, it should*/ @@ -7611,8 +7640,8 @@ void case_727() } } -void case_728() -#line 4843 "cs-parser.jay" +void case_731() +#line 4861 "cs-parser.jay" { ATypeNameExpression expr = yyVals[-1+yyTop] as ATypeNameExpression; @@ -7624,8 +7653,8 @@ void case_728() } } -void case_729() -#line 4854 "cs-parser.jay" +void case_732() +#line 4872 "cs-parser.jay" { if (yyVals[0+yyTop] == null) yyVal = yyVals[-1+yyTop]; @@ -7633,22 +7662,22 @@ void case_729() yyVal = new ComposedCast ((FullNamedExpression) yyVals[-1+yyTop], (ComposedTypeSpecifier) yyVals[0+yyTop]); } -void case_732() -#line 4869 "cs-parser.jay" +void case_735() +#line 4887 "cs-parser.jay" { Expression.Error_VoidInvalidInTheContext (GetLocation (yyVals[0+yyTop]), report); yyVal = new TypeExpression (compiler.BuiltinTypes.Void, GetLocation (yyVals[0+yyTop])); } -void case_734() -#line 4878 "cs-parser.jay" +void case_737() +#line 4896 "cs-parser.jay" { ((ComposedTypeSpecifier) yyVals[-1+yyTop]).Next = (ComposedTypeSpecifier) yyVals[0+yyTop]; yyVal = yyVals[-1+yyTop]; } -void case_737() -#line 4894 "cs-parser.jay" +void case_740() +#line 4912 "cs-parser.jay" { if (async_block) { report.Error (4003, GetLocation (yyVals[0+yyTop]), "`await' cannot be used as an identifier within an async method or lambda expression"); @@ -7656,8 +7685,8 @@ void case_737() } } -void case_738() -#line 4904 "cs-parser.jay" +void case_741() +#line 4922 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; var li = new LocalVariable (current_block, lt.Value, lt.Location); @@ -7665,16 +7694,16 @@ void case_738() current_variable = new BlockVariableDeclaration ((FullNamedExpression) yyVals[-1+yyTop], li); } -void case_739() -#line 4911 "cs-parser.jay" +void case_742() +#line 4929 "cs-parser.jay" { yyVal = current_variable; current_variable = null; lbag.AppendTo (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_740() -#line 4917 "cs-parser.jay" +void case_743() +#line 4935 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; var li = new LocalVariable (current_block, lt.Value, LocalVariable.Flags.Constant, lt.Location); @@ -7682,8 +7711,8 @@ void case_740() current_variable = new BlockConstantDeclaration ((FullNamedExpression) yyVals[-1+yyTop], li); } -void case_741() -#line 4924 "cs-parser.jay" +void case_744() +#line 4942 "cs-parser.jay" { if (current_variable.Initializer != null) { lbag.AddLocation (current_variable, GetLocation (yyVals[-6+yyTop]), savedLocation, GetLocation (yyVals[0+yyTop])); @@ -7694,15 +7723,15 @@ void case_741() current_variable = null; } -void case_743() -#line 4938 "cs-parser.jay" +void case_746() +#line 4956 "cs-parser.jay" { current_variable.Initializer = (Expression) yyVals[0+yyTop]; lbag.AppendTo (current_variable, GetLocation (yyVals[-1+yyTop])); } -void case_744() -#line 4943 "cs-parser.jay" +void case_747() +#line 4961 "cs-parser.jay" { if (yyToken == Token.OPEN_BRACKET_EXPR) { report.Error (650, lexer.Location, @@ -7717,8 +7746,8 @@ void case_744() lbag.AppendTo (current_variable, GetLocation (yyVals[-1+yyTop])); } -void case_745() -#line 4957 "cs-parser.jay" +void case_748() +#line 4975 "cs-parser.jay" { if (yyToken == Token.OPEN_BRACKET_EXPR) { report.Error (650, lexer.Location, @@ -7728,8 +7757,8 @@ void case_745() } } -void case_749() -#line 4975 "cs-parser.jay" +void case_752() +#line 4993 "cs-parser.jay" { foreach (var d in current_variable.Declarators) { if (d.Initializer == null) @@ -7737,8 +7766,8 @@ void case_749() } } -void case_752() -#line 4990 "cs-parser.jay" +void case_755() +#line 5008 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; var li = new LocalVariable (current_variable.Variable, lt.Value, lt.Location); @@ -7748,8 +7777,8 @@ void case_752() lbag.AddLocation (d, GetLocation (yyVals[-1+yyTop])); } -void case_753() -#line 4999 "cs-parser.jay" +void case_756() +#line 5017 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; var li = new LocalVariable (current_variable.Variable, lt.Value, lt.Location); @@ -7759,15 +7788,15 @@ void case_753() lbag.AddLocation (d, GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[-1+yyTop])); } -void case_755() -#line 5015 "cs-parser.jay" +void case_758() +#line 5033 "cs-parser.jay" { savedLocation = GetLocation (yyVals[-1+yyTop]); current_variable.Initializer = (Expression) yyVals[0+yyTop]; } -void case_760() -#line 5033 "cs-parser.jay" +void case_763() +#line 5051 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; var li = new LocalVariable (current_block, lt.Value, LocalVariable.Flags.Constant, lt.Location); @@ -7777,29 +7806,29 @@ void case_760() lbag.AddLocation (d, GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[-1+yyTop])); } -void case_762() -#line 5046 "cs-parser.jay" +void case_765() +#line 5064 "cs-parser.jay" { yyVal = new StackAlloc ((Expression) yyVals[-3+yyTop], (Expression) yyVals[-1+yyTop], GetLocation (yyVals[-4+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_763() -#line 5051 "cs-parser.jay" +void case_766() +#line 5069 "cs-parser.jay" { report.Error (1575, GetLocation (yyVals[-1+yyTop]), "A stackalloc expression requires [] after type"); yyVal = new StackAlloc ((Expression) yyVals[0+yyTop], null, GetLocation (yyVals[-1+yyTop])); } -void case_764() -#line 5059 "cs-parser.jay" +void case_767() +#line 5077 "cs-parser.jay" { yyVal = yyVals[-1+yyTop]; lbag.AddStatement (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_766() -#line 5064 "cs-parser.jay" +void case_769() +#line 5082 "cs-parser.jay" { yyVal = yyVals[-1+yyTop]; lbag.AddStatement (yyVal, GetLocation (yyVals[0+yyTop])); @@ -7807,8 +7836,8 @@ void case_766() lexer.putback ('}'); } -void case_769() -#line 5083 "cs-parser.jay" +void case_772() +#line 5101 "cs-parser.jay" { ExpressionStatement s = yyVals[0+yyTop] as ExpressionStatement; if (s == null) { @@ -7819,8 +7848,8 @@ void case_769() } } -void case_770() -#line 5096 "cs-parser.jay" +void case_773() +#line 5114 "cs-parser.jay" { Expression expr = (Expression) yyVals[0+yyTop]; ExpressionStatement s; @@ -7829,15 +7858,15 @@ void case_770() yyVal = new StatementExpression (s); } -void case_771() -#line 5104 "cs-parser.jay" +void case_774() +#line 5122 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = new EmptyStatement (GetLocation (yyVals[0+yyTop])); } -void case_774() -#line 5118 "cs-parser.jay" +void case_777() +#line 5136 "cs-parser.jay" { if (yyVals[0+yyTop] is EmptyStatement) Warning_EmptyStatement (GetLocation (yyVals[0+yyTop])); @@ -7846,8 +7875,8 @@ void case_774() lbag.AddStatement (yyVal, GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[-1+yyTop])); } -void case_775() -#line 5127 "cs-parser.jay" +void case_778() +#line 5145 "cs-parser.jay" { yyVal = new If ((BooleanExpression) yyVals[-4+yyTop], (Statement) yyVals[-2+yyTop], (Statement) yyVals[0+yyTop], GetLocation (yyVals[-6+yyTop])); lbag.AddStatement (yyVal, GetLocation (yyVals[-5+yyTop]), GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[-1+yyTop])); @@ -7858,8 +7887,8 @@ void case_775() Warning_EmptyStatement (GetLocation (yyVals[0+yyTop])); } -void case_776() -#line 5137 "cs-parser.jay" +void case_779() +#line 5155 "cs-parser.jay" { Error_SyntaxError (yyToken); @@ -7867,16 +7896,16 @@ void case_776() lbag.AddStatement (yyVal, GetLocation (yyVals[-2+yyTop])); } -void case_778() -#line 5151 "cs-parser.jay" +void case_781() +#line 5169 "cs-parser.jay" { yyVal = new Switch ((Expression) yyVals[-5+yyTop], (ExplicitBlock) current_block.Explicit, (List) yyVals[-1+yyTop], GetLocation (yyVals[-7+yyTop])); end_block (GetLocation (yyVals[0+yyTop])); lbag.AddStatement (yyVal, GetLocation (yyVals[-6+yyTop]), GetLocation (yyVals[-4+yyTop]), GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_779() -#line 5157 "cs-parser.jay" +void case_782() +#line 5175 "cs-parser.jay" { Error_SyntaxError (yyToken); @@ -7884,15 +7913,15 @@ void case_779() lbag.AddStatement (yyVal, GetLocation (yyVals[-2+yyTop])); } -void case_780() -#line 5167 "cs-parser.jay" +void case_783() +#line 5185 "cs-parser.jay" { report.Warning (1522, 1, current_block.StartLocation, "Empty switch block"); yyVal = new List (); } -void case_782() -#line 5176 "cs-parser.jay" +void case_785() +#line 5194 "cs-parser.jay" { var sections = new List (4); @@ -7900,8 +7929,8 @@ void case_782() yyVal = sections; } -void case_783() -#line 5183 "cs-parser.jay" +void case_786() +#line 5201 "cs-parser.jay" { var sections = (List) yyVals[-1+yyTop]; @@ -7909,15 +7938,15 @@ void case_783() yyVal = sections; } -void case_784() -#line 5190 "cs-parser.jay" +void case_787() +#line 5208 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = new List (); } -void case_787() -#line 5209 "cs-parser.jay" +void case_790() +#line 5227 "cs-parser.jay" { var labels = new List (2); @@ -7925,8 +7954,8 @@ void case_787() yyVal = labels; } -void case_788() -#line 5216 "cs-parser.jay" +void case_791() +#line 5234 "cs-parser.jay" { var labels = (List) (yyVals[-1+yyTop]); labels.Add ((SwitchLabel) yyVals[0+yyTop]); @@ -7934,15 +7963,15 @@ void case_788() yyVal = labels; } -void case_789() -#line 5226 "cs-parser.jay" +void case_792() +#line 5244 "cs-parser.jay" { yyVal = new SwitchLabel ((Expression) yyVals[-1+yyTop], GetLocation (yyVals[-2+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_795() -#line 5245 "cs-parser.jay" +void case_798() +#line 5263 "cs-parser.jay" { if (yyVals[0+yyTop] is EmptyStatement && lexer.peek_token () == Token.OPEN_BRACE) Warning_EmptyStatement (GetLocation (yyVals[0+yyTop])); @@ -7951,8 +7980,8 @@ void case_795() lbag.AddStatement (yyVal, GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[-1+yyTop])); } -void case_796() -#line 5253 "cs-parser.jay" +void case_799() +#line 5271 "cs-parser.jay" { Error_SyntaxError (yyToken); @@ -7960,22 +7989,22 @@ void case_796() lbag.AddStatement (yyVal, GetLocation (yyVals[-2+yyTop])); } -void case_797() -#line 5263 "cs-parser.jay" +void case_800() +#line 5281 "cs-parser.jay" { yyVal = new Do ((Statement) yyVals[-5+yyTop], (BooleanExpression) yyVals[-2+yyTop], GetLocation (yyVals[-6+yyTop])); lbag.AddStatement (yyVal, GetLocation (yyVals[-4+yyTop]), GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[-1+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_798() -#line 5268 "cs-parser.jay" +void case_801() +#line 5286 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = new Do ((Statement) yyVals[-1+yyTop], null, GetLocation (yyVals[-2+yyTop])); } -void case_799() -#line 5273 "cs-parser.jay" +void case_802() +#line 5291 "cs-parser.jay" { Error_SyntaxError (yyToken); @@ -7983,8 +8012,8 @@ void case_799() lbag.AddStatement (yyVal, GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[-2+yyTop])); } -void case_800() -#line 5283 "cs-parser.jay" +void case_803() +#line 5301 "cs-parser.jay" { start_block (GetLocation (yyVals[0+yyTop])); current_block.IsCompilerGenerated = true; @@ -7993,8 +8022,8 @@ void case_800() yyVal = f; } -void case_805() -#line 5311 "cs-parser.jay" +void case_808() +#line 5329 "cs-parser.jay" { if (yyVals[0+yyTop] is EmptyStatement && lexer.peek_token () == Token.OPEN_BRACE) Warning_EmptyStatement (GetLocation (yyVals[0+yyTop])); @@ -8006,15 +8035,15 @@ void case_805() yyVal = end_block (GetLocation (yyVals[-8+yyTop])); } -void case_806() -#line 5322 "cs-parser.jay" +void case_809() +#line 5340 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = end_block (current_block.StartLocation); } -void case_809() -#line 5335 "cs-parser.jay" +void case_812() +#line 5353 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; var li = new LocalVariable (current_block, lt.Value, lt.Location); @@ -8022,15 +8051,15 @@ void case_809() current_variable = new BlockVariableDeclaration ((FullNamedExpression) yyVals[-1+yyTop], li); } -void case_810() -#line 5342 "cs-parser.jay" +void case_813() +#line 5360 "cs-parser.jay" { yyVal = current_variable; current_variable = null; } -void case_818() -#line 5366 "cs-parser.jay" +void case_821() +#line 5384 "cs-parser.jay" { var sl = yyVals[-2+yyTop] as StatementList; if (sl == null) { @@ -8044,8 +8073,8 @@ void case_818() yyVal = sl; } -void case_819() -#line 5382 "cs-parser.jay" +void case_822() +#line 5400 "cs-parser.jay" { report.Error (230, GetLocation (yyVals[-3+yyTop]), "Type and identifier are both required in a foreach statement"); @@ -8059,8 +8088,8 @@ void case_819() yyVal = end_block (GetLocation (yyVals[0+yyTop])); } -void case_820() -#line 5395 "cs-parser.jay" +void case_823() +#line 5413 "cs-parser.jay" { Error_SyntaxError (yyToken); @@ -8078,8 +8107,8 @@ void case_820() yyVal = end_block (GetLocation (yyVals[0+yyTop])); } -void case_821() -#line 5412 "cs-parser.jay" +void case_824() +#line 5430 "cs-parser.jay" { start_block (GetLocation (yyVals[-5+yyTop])); current_block.IsCompilerGenerated = true; @@ -8089,8 +8118,8 @@ void case_821() yyVal = li; } -void case_822() -#line 5421 "cs-parser.jay" +void case_825() +#line 5439 "cs-parser.jay" { if (yyVals[0+yyTop] is EmptyStatement && lexer.peek_token () == Token.OPEN_BRACE) Warning_EmptyStatement (GetLocation (yyVals[0+yyTop])); @@ -8102,8 +8131,8 @@ void case_822() yyVal = end_block (GetLocation (yyVals[-2+yyTop])); } -void case_823() -#line 5432 "cs-parser.jay" +void case_826() +#line 5450 "cs-parser.jay" { start_block (GetLocation (yyVals[-3+yyTop])); current_block.IsCompilerGenerated = true; @@ -8117,8 +8146,8 @@ void case_823() yyVal = end_block (GetLocation (yyVals[0+yyTop])); } -void case_824() -#line 5445 "cs-parser.jay" +void case_827() +#line 5463 "cs-parser.jay" { Foreach f = new Foreach ((Expression) yyVals[-1+yyTop], null, null, null, GetLocation (yyVals[-3+yyTop])); current_block.AddStatement (f); @@ -8127,58 +8156,58 @@ void case_824() yyVal = f; } -void case_831() -#line 5465 "cs-parser.jay" +void case_834() +#line 5483 "cs-parser.jay" { yyVal = new Break (GetLocation (yyVals[-1+yyTop])); lbag.AddStatement (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_832() -#line 5473 "cs-parser.jay" +void case_835() +#line 5491 "cs-parser.jay" { yyVal = new Continue (GetLocation (yyVals[-1+yyTop])); lbag.AddStatement (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_833() -#line 5481 "cs-parser.jay" +void case_836() +#line 5499 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; yyVal = new Goto (lt.Value, GetLocation (yyVals[-2+yyTop])); lbag.AddStatement (yyVal, GetLocation (yyVals[-1+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_834() -#line 5487 "cs-parser.jay" +void case_837() +#line 5505 "cs-parser.jay" { yyVal = new GotoCase ((Expression) yyVals[-1+yyTop], GetLocation (yyVals[-3+yyTop])); lbag.AddStatement (yyVal, GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_835() -#line 5492 "cs-parser.jay" +void case_838() +#line 5510 "cs-parser.jay" { yyVal = new GotoDefault (GetLocation (yyVals[-2+yyTop])); lbag.AddStatement (yyVal, GetLocation (yyVals[-1+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_836() -#line 5500 "cs-parser.jay" +void case_839() +#line 5518 "cs-parser.jay" { yyVal = new Return ((Expression) yyVals[-1+yyTop], GetLocation (yyVals[-2+yyTop])); lbag.AddStatement (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_837() -#line 5508 "cs-parser.jay" +void case_840() +#line 5526 "cs-parser.jay" { yyVal = new Throw ((Expression) yyVals[-1+yyTop], GetLocation (yyVals[-2+yyTop])); lbag.AddStatement (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_838() -#line 5516 "cs-parser.jay" +void case_841() +#line 5534 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-3+yyTop]; string s = lt.Value; @@ -8195,8 +8224,8 @@ void case_838() lbag.AddStatement (yyVal, GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_839() -#line 5532 "cs-parser.jay" +void case_842() +#line 5550 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; string s = lt.Value; @@ -8211,29 +8240,29 @@ void case_839() lbag.AddStatement (yyVal, GetLocation (yyVals[-1+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_843() -#line 5558 "cs-parser.jay" +void case_846() +#line 5576 "cs-parser.jay" { yyVal = new TryFinally ((Statement) yyVals[-2+yyTop], (Block) yyVals[0+yyTop], GetLocation (yyVals[-3+yyTop])); lbag.AddStatement (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_844() -#line 5563 "cs-parser.jay" +void case_847() +#line 5581 "cs-parser.jay" { - yyVal = new TryFinally (new TryCatch ((Block) yyVals[-3+yyTop], (List) yyVals[-2+yyTop], GetLocation (yyVals[-4+yyTop]), true), (Block) yyVals[0+yyTop], GetLocation (yyVals[-4+yyTop])); + yyVal = new TryFinally (new TryCatch ((Block) yyVals[-3+yyTop], (List) yyVals[-2+yyTop], Location.Null, true), (Block) yyVals[0+yyTop], GetLocation (yyVals[-4+yyTop])); lbag.AddStatement (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_845() -#line 5568 "cs-parser.jay" +void case_848() +#line 5586 "cs-parser.jay" { Error_SyntaxError (1524, yyToken); yyVal = new TryCatch ((Block) yyVals[-1+yyTop], null, GetLocation (yyVals[-2+yyTop]), false); } -void case_846() -#line 5576 "cs-parser.jay" +void case_849() +#line 5594 "cs-parser.jay" { var l = new List (2); @@ -8241,8 +8270,8 @@ void case_846() yyVal = l; } -void case_847() -#line 5583 "cs-parser.jay" +void case_850() +#line 5601 "cs-parser.jay" { var l = (List) yyVals[-1+yyTop]; @@ -8255,8 +8284,8 @@ void case_847() yyVal = l; } -void case_851() -#line 5607 "cs-parser.jay" +void case_854() +#line 5625 "cs-parser.jay" { start_block (GetLocation (yyVals[-3+yyTop])); var c = new Catch (current_block, GetLocation (yyVals[-4+yyTop])); @@ -8272,8 +8301,8 @@ void case_851() yyVal = c; } -void case_853() -#line 5626 "cs-parser.jay" +void case_856() +#line 5644 "cs-parser.jay" { if (yyToken == Token.CLOSE_PARENS) { report.Error (1015, lexer.Location, @@ -8285,15 +8314,15 @@ void case_853() yyVal = new Catch (null, GetLocation (yyVals[-2+yyTop])); } -void case_856() -#line 5654 "cs-parser.jay" +void case_859() +#line 5672 "cs-parser.jay" { if (!settings.Unsafe) Error_UnsafeCodeNotAllowed (GetLocation (yyVals[0+yyTop])); } -void case_858() -#line 5664 "cs-parser.jay" +void case_861() +#line 5682 "cs-parser.jay" { if (yyVals[0+yyTop] is EmptyStatement && lexer.peek_token () == Token.OPEN_BRACE) Warning_EmptyStatement (GetLocation (yyVals[0+yyTop])); @@ -8302,8 +8331,8 @@ void case_858() lbag.AddStatement (yyVal, GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[-1+yyTop])); } -void case_859() -#line 5672 "cs-parser.jay" +void case_862() +#line 5690 "cs-parser.jay" { Error_SyntaxError (yyToken); @@ -8311,8 +8340,8 @@ void case_859() lbag.AddStatement (yyVal, GetLocation (yyVals[-2+yyTop])); } -void case_860() -#line 5682 "cs-parser.jay" +void case_863() +#line 5700 "cs-parser.jay" { start_block (GetLocation (yyVals[-2+yyTop])); @@ -8323,15 +8352,15 @@ void case_860() current_variable = new Fixed.VariableDeclaration ((FullNamedExpression) yyVals[-1+yyTop], li); } -void case_861() -#line 5692 "cs-parser.jay" +void case_864() +#line 5710 "cs-parser.jay" { yyVal = current_variable; current_variable = null; } -void case_862() -#line 5697 "cs-parser.jay" +void case_865() +#line 5715 "cs-parser.jay" { if (yyVals[0+yyTop] is EmptyStatement && lexer.peek_token () == Token.OPEN_BRACE) Warning_EmptyStatement (GetLocation (yyVals[0+yyTop])); @@ -8342,8 +8371,8 @@ void case_862() yyVal = end_block (GetLocation (yyVals[-2+yyTop])); } -void case_863() -#line 5710 "cs-parser.jay" +void case_866() +#line 5728 "cs-parser.jay" { start_block (GetLocation (yyVals[-2+yyTop])); @@ -8354,15 +8383,15 @@ void case_863() current_variable = new Using.VariableDeclaration ((FullNamedExpression) yyVals[-1+yyTop], li); } -void case_864() -#line 5720 "cs-parser.jay" +void case_867() +#line 5738 "cs-parser.jay" { yyVal = current_variable; current_variable = null; } -void case_865() -#line 5725 "cs-parser.jay" +void case_868() +#line 5743 "cs-parser.jay" { if (yyVals[0+yyTop] is EmptyStatement && lexer.peek_token () == Token.OPEN_BRACE) Warning_EmptyStatement (GetLocation (yyVals[0+yyTop])); @@ -8373,8 +8402,8 @@ void case_865() yyVal = end_block (GetLocation (yyVals[-2+yyTop])); } -void case_866() -#line 5735 "cs-parser.jay" +void case_869() +#line 5753 "cs-parser.jay" { if (yyVals[0+yyTop] is EmptyStatement && lexer.peek_token () == Token.OPEN_BRACE) Warning_EmptyStatement (GetLocation (yyVals[0+yyTop])); @@ -8383,8 +8412,8 @@ void case_866() lbag.AddStatement (yyVal, GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[-1+yyTop])); } -void case_867() -#line 5743 "cs-parser.jay" +void case_870() +#line 5761 "cs-parser.jay" { Error_SyntaxError (yyToken); @@ -8392,23 +8421,23 @@ void case_867() lbag.AddStatement (yyVal, GetLocation (yyVals[-2+yyTop])); } -void case_869() -#line 5754 "cs-parser.jay" +void case_872() +#line 5772 "cs-parser.jay" { /* It has to be here for the parent to safely restore artificial block*/ Error_SyntaxError (yyToken); } -void case_871() -#line 5766 "cs-parser.jay" +void case_874() +#line 5784 "cs-parser.jay" { current_variable.Initializer = (Expression) yyVals[0+yyTop]; lbag.AppendTo (current_variable, GetLocation (yyVals[-1+yyTop])); yyVal = current_variable; } -void case_872() -#line 5778 "cs-parser.jay" +void case_875() +#line 5796 "cs-parser.jay" { lexer.query_parsing = false; @@ -8421,8 +8450,8 @@ void case_872() current_block = current_block.Parent; } -void case_873() -#line 5790 "cs-parser.jay" +void case_876() +#line 5808 "cs-parser.jay" { Linq.AQueryClause from = yyVals[-1+yyTop] as Linq.AQueryClause; @@ -8433,8 +8462,8 @@ void case_873() current_block = current_block.Parent; } -void case_874() -#line 5801 "cs-parser.jay" +void case_877() +#line 5819 "cs-parser.jay" { lexer.query_parsing = false; yyVal = yyVals[-1+yyTop]; @@ -8443,16 +8472,16 @@ void case_874() current_block = current_block.Parent; } -void case_875() -#line 5808 "cs-parser.jay" +void case_878() +#line 5826 "cs-parser.jay" { yyVal = yyVals[-1+yyTop]; current_block.SetEndLocation (lexer.Location); current_block = current_block.Parent; } -void case_876() -#line 5817 "cs-parser.jay" +void case_879() +#line 5835 "cs-parser.jay" { current_block = new Linq.QueryBlock (current_block, lexer.Location); @@ -8461,8 +8490,8 @@ void case_876() yyVal = new Linq.QueryExpression (new Linq.QueryStartClause ((Linq.QueryBlock)current_block, (Expression)yyVals[0+yyTop], rv, GetLocation (yyVals[-3+yyTop]))); } -void case_877() -#line 5825 "cs-parser.jay" +void case_880() +#line 5843 "cs-parser.jay" { current_block = new Linq.QueryBlock (current_block, lexer.Location); @@ -8475,8 +8504,8 @@ void case_877() ); } -void case_878() -#line 5840 "cs-parser.jay" +void case_881() +#line 5858 "cs-parser.jay" { current_block = new Linq.QueryBlock (current_block, lexer.Location); @@ -8485,8 +8514,8 @@ void case_878() yyVal = new Linq.QueryExpression (new Linq.QueryStartClause ((Linq.QueryBlock)current_block, (Expression)yyVals[0+yyTop], rv, GetLocation (yyVals[-3+yyTop]))); } -void case_879() -#line 5848 "cs-parser.jay" +void case_882() +#line 5866 "cs-parser.jay" { current_block = new Linq.QueryBlock (current_block, lexer.Location); @@ -8499,8 +8528,8 @@ void case_879() ); } -void case_881() -#line 5867 "cs-parser.jay" +void case_884() +#line 5885 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-3+yyTop]; var sn = new Linq.RangeVariable (lt.Value, lt.Location); @@ -8512,8 +8541,8 @@ void case_881() ((Linq.QueryBlock)current_block).AddRangeVariable (sn); } -void case_883() -#line 5882 "cs-parser.jay" +void case_886() +#line 5900 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-3+yyTop]; var sn = new Linq.RangeVariable (lt.Value, lt.Location); @@ -8528,8 +8557,8 @@ void case_883() ((Linq.QueryBlock)current_block).AddRangeVariable (sn); } -void case_884() -#line 5899 "cs-parser.jay" +void case_887() +#line 5917 "cs-parser.jay" { Linq.AQueryClause head = (Linq.AQueryClause)yyVals[-1+yyTop]; @@ -8545,15 +8574,15 @@ void case_884() yyVal = head; } -void case_886() -#line 5915 "cs-parser.jay" +void case_889() +#line 5933 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = null; } -void case_888() -#line 5927 "cs-parser.jay" +void case_891() +#line 5945 "cs-parser.jay" { yyVal = new Linq.Select ((Linq.QueryBlock)current_block, (Expression)yyVals[0+yyTop], GetLocation (yyVals[-2+yyTop])); @@ -8561,8 +8590,8 @@ void case_888() current_block = current_block.Parent; } -void case_889() -#line 5934 "cs-parser.jay" +void case_892() +#line 5952 "cs-parser.jay" { if (linq_clause_blocks == null) linq_clause_blocks = new Stack (); @@ -8571,8 +8600,8 @@ void case_889() linq_clause_blocks.Push ((Linq.QueryBlock)current_block); } -void case_890() -#line 5942 "cs-parser.jay" +void case_893() +#line 5960 "cs-parser.jay" { current_block.SetEndLocation (lexer.Location); current_block = current_block.Parent; @@ -8580,8 +8609,8 @@ void case_890() current_block = new Linq.QueryBlock (current_block, lexer.Location); } -void case_891() -#line 5949 "cs-parser.jay" +void case_894() +#line 5967 "cs-parser.jay" { yyVal = new Linq.GroupBy ((Linq.QueryBlock)current_block, (Expression)yyVals[-3+yyTop], linq_clause_blocks.Pop (), (Expression)yyVals[0+yyTop], GetLocation (yyVals[-5+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); @@ -8590,15 +8619,15 @@ void case_891() current_block = current_block.Parent; } -void case_895() -#line 5966 "cs-parser.jay" +void case_898() +#line 5984 "cs-parser.jay" { ((Linq.AQueryClause)yyVals[-1+yyTop]).Tail.Next = (Linq.AQueryClause)yyVals[0+yyTop]; yyVal = yyVals[-1+yyTop]; } -void case_902() -#line 5986 "cs-parser.jay" +void case_905() +#line 6004 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-3+yyTop]; var sn = new Linq.RangeVariable (lt.Value, lt.Location); @@ -8611,8 +8640,8 @@ void case_902() ((Linq.QueryBlock)current_block).AddRangeVariable (sn); } -void case_904() -#line 6005 "cs-parser.jay" +void case_907() +#line 6023 "cs-parser.jay" { yyVal = new Linq.Where ((Linq.QueryBlock)current_block, (Expression)yyVals[0+yyTop], GetLocation (yyVals[-2+yyTop])); @@ -8620,8 +8649,8 @@ void case_904() current_block = current_block.Parent; } -void case_905() -#line 6015 "cs-parser.jay" +void case_908() +#line 6033 "cs-parser.jay" { if (linq_clause_blocks == null) linq_clause_blocks = new Stack (); @@ -8630,8 +8659,8 @@ void case_905() linq_clause_blocks.Push ((Linq.QueryBlock) current_block); } -void case_906() -#line 6023 "cs-parser.jay" +void case_909() +#line 6041 "cs-parser.jay" { current_block.SetEndLocation (lexer.Location); current_block = current_block.Parent; @@ -8640,8 +8669,8 @@ void case_906() linq_clause_blocks.Push ((Linq.QueryBlock) current_block); } -void case_907() -#line 6031 "cs-parser.jay" +void case_910() +#line 6049 "cs-parser.jay" { current_block.AddStatement (new ContextualReturn ((Expression) yyVals[-1+yyTop])); current_block.SetEndLocation (lexer.Location); @@ -8650,8 +8679,8 @@ void case_907() current_block = new Linq.QueryBlock (current_block, lexer.Location); } -void case_908() -#line 6039 "cs-parser.jay" +void case_911() +#line 6057 "cs-parser.jay" { current_block.AddStatement (new ContextualReturn ((Expression) yyVals[-1+yyTop])); current_block.SetEndLocation (lexer.Location); @@ -8690,8 +8719,8 @@ void case_908() ((Linq.QueryBlock)current_block).AddRangeVariable (into); } -void case_909() -#line 6077 "cs-parser.jay" +void case_912() +#line 6095 "cs-parser.jay" { if (linq_clause_blocks == null) linq_clause_blocks = new Stack (); @@ -8700,8 +8729,8 @@ void case_909() linq_clause_blocks.Push ((Linq.QueryBlock) current_block); } -void case_910() -#line 6085 "cs-parser.jay" +void case_913() +#line 6103 "cs-parser.jay" { current_block.SetEndLocation (lexer.Location); current_block = current_block.Parent; @@ -8710,8 +8739,8 @@ void case_910() linq_clause_blocks.Push ((Linq.QueryBlock) current_block); } -void case_911() -#line 6093 "cs-parser.jay" +void case_914() +#line 6111 "cs-parser.jay" { current_block.AddStatement (new ContextualReturn ((Expression) yyVals[-1+yyTop])); current_block.SetEndLocation (lexer.Location); @@ -8720,8 +8749,8 @@ void case_911() current_block = new Linq.QueryBlock (current_block, lexer.Location); } -void case_912() -#line 6101 "cs-parser.jay" +void case_915() +#line 6119 "cs-parser.jay" { current_block.AddStatement (new ContextualReturn ((Expression) yyVals[-1+yyTop])); current_block.SetEndLocation (lexer.Location); @@ -8762,8 +8791,8 @@ void case_912() ((Linq.QueryBlock)current_block).AddRangeVariable (into); } -void case_916() -#line 6156 "cs-parser.jay" +void case_919() +#line 6174 "cs-parser.jay" { current_block.SetEndLocation (lexer.Location); current_block = current_block.Parent; @@ -8771,8 +8800,8 @@ void case_916() yyVal = yyVals[0+yyTop]; } -void case_918() -#line 6167 "cs-parser.jay" +void case_921() +#line 6185 "cs-parser.jay" { current_block.SetEndLocation (lexer.Location); current_block = current_block.Parent; @@ -8780,15 +8809,15 @@ void case_918() current_block = new Linq.QueryBlock (current_block, lexer.Location); } -void case_919() -#line 6174 "cs-parser.jay" +void case_922() +#line 6192 "cs-parser.jay" { ((Linq.AQueryClause)yyVals[-3+yyTop]).Next = (Linq.AQueryClause)yyVals[0+yyTop]; yyVal = yyVals[-3+yyTop]; } -void case_921() -#line 6183 "cs-parser.jay" +void case_924() +#line 6201 "cs-parser.jay" { current_block.SetEndLocation (lexer.Location); current_block = current_block.Parent; @@ -8796,43 +8825,43 @@ void case_921() current_block = new Linq.QueryBlock ((Linq.QueryBlock) current_block, lexer.Location); } -void case_922() -#line 6190 "cs-parser.jay" +void case_925() +#line 6208 "cs-parser.jay" { ((Linq.AQueryClause)yyVals[-3+yyTop]).Tail.Next = (Linq.AQueryClause)yyVals[0+yyTop]; yyVal = yyVals[-3+yyTop]; } -void case_924() -#line 6202 "cs-parser.jay" +void case_927() +#line 6220 "cs-parser.jay" { yyVal = new Linq.OrderByAscending ((Linq.QueryBlock) current_block, (Expression)yyVals[-1+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_925() -#line 6207 "cs-parser.jay" +void case_928() +#line 6225 "cs-parser.jay" { yyVal = new Linq.OrderByDescending ((Linq.QueryBlock) current_block, (Expression)yyVals[-1+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_927() -#line 6219 "cs-parser.jay" +void case_930() +#line 6237 "cs-parser.jay" { yyVal = new Linq.ThenByAscending ((Linq.QueryBlock) current_block, (Expression)yyVals[-1+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_928() -#line 6224 "cs-parser.jay" +void case_931() +#line 6242 "cs-parser.jay" { yyVal = new Linq.ThenByDescending ((Linq.QueryBlock) current_block, (Expression)yyVals[-1+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_930() -#line 6234 "cs-parser.jay" +void case_933() +#line 6252 "cs-parser.jay" { /* query continuation block is not linked with query block but with block*/ /* before. This means each query can use same range variable names for*/ @@ -8849,8 +8878,8 @@ void case_930() linq_clause_blocks.Push ((Linq.QueryBlock) current_block); } -void case_931() -#line 6250 "cs-parser.jay" +void case_934() +#line 6268 "cs-parser.jay" { var current_block = linq_clause_blocks.Pop (); var lt = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; @@ -8860,8 +8889,8 @@ void case_931() }; } -void case_934() -#line 6277 "cs-parser.jay" +void case_937() +#line 6295 "cs-parser.jay" { current_container = current_type = new Class (current_container, new MemberName (""), Modifiers.PUBLIC, null); @@ -8890,8 +8919,8 @@ void case_934() start_block (lexer.Location); } -void case_935() -#line 6305 "cs-parser.jay" +void case_938() +#line 6323 "cs-parser.jay" { --lexer.parsing_block; Method method = (Method) oob_stack.Pop (); @@ -8902,16 +8931,16 @@ void case_935() current_local_parameters = null; } -void case_945() -#line 6348 "cs-parser.jay" +void case_948() +#line 6366 "cs-parser.jay" { module.DocumentationBuilder.ParsedBuiltinType = (TypeExpression)yyVals[-1+yyTop]; module.DocumentationBuilder.ParsedParameters = (List)yyVals[0+yyTop]; yyVal = null; } -void case_946() -#line 6354 "cs-parser.jay" +void case_949() +#line 6372 "cs-parser.jay" { module.DocumentationBuilder.ParsedBuiltinType = (TypeExpression)yyVals[-3+yyTop]; module.DocumentationBuilder.ParsedParameters = (List)yyVals[0+yyTop]; @@ -8919,15 +8948,15 @@ void case_946() yyVal = new MemberName (lt.Value); } -void case_949() -#line 6369 "cs-parser.jay" +void case_952() +#line 6387 "cs-parser.jay" { module.DocumentationBuilder.ParsedParameters = (List)yyVals[-1+yyTop]; yyVal = new MemberName ((MemberName) yyVals[-6+yyTop], MemberCache.IndexerNameAlias, Location.Null); } -void case_950() -#line 6374 "cs-parser.jay" +void case_953() +#line 6392 "cs-parser.jay" { var p = (List)yyVals[0+yyTop] ?? new List (1); p.Add (new DocumentationParameter ((FullNamedExpression) yyVals[-1+yyTop])); @@ -8936,8 +8965,8 @@ void case_950() yyVal = null; } -void case_951() -#line 6382 "cs-parser.jay" +void case_954() +#line 6400 "cs-parser.jay" { var p = (List)yyVals[0+yyTop] ?? new List (1); p.Add (new DocumentationParameter ((FullNamedExpression) yyVals[-1+yyTop])); @@ -8946,8 +8975,8 @@ void case_951() yyVal = null; } -void case_952() -#line 6390 "cs-parser.jay" +void case_955() +#line 6408 "cs-parser.jay" { var p = (List)yyVals[0+yyTop] ?? new List (1); module.DocumentationBuilder.ParsedParameters = p; @@ -8955,24 +8984,24 @@ void case_952() yyVal = null; } -void case_960() -#line 6428 "cs-parser.jay" +void case_963() +#line 6446 "cs-parser.jay" { var parameters = new List (); parameters.Add ((DocumentationParameter) yyVals[0+yyTop]); yyVal = parameters; } -void case_961() -#line 6434 "cs-parser.jay" +void case_964() +#line 6452 "cs-parser.jay" { var parameters = yyVals[-2+yyTop] as List; parameters.Add ((DocumentationParameter) yyVals[0+yyTop]); yyVal = parameters; } -void case_962() -#line 6443 "cs-parser.jay" +void case_965() +#line 6461 "cs-parser.jay" { if (yyVals[-1+yyTop] != null) yyVal = new DocumentationParameter ((Parameter.Modifier) yyVals[-1+yyTop], (FullNamedExpression) yyVals[0+yyTop]); @@ -8986,1342 +9015,1325 @@ void case_962() 11, 11, 12, 12, 13, 13, 14, 15, 15, 15, 19, 20, 17, 18, 18, 18, 22, 22, 23, 23, 7, 7, 6, 6, 21, 21, 8, 8, 24, 24, - 25, 25, 25, 25, 25, 9, 9, 10, 10, 33, - 31, 36, 32, 32, 34, 34, 34, 34, 35, 35, - 40, 37, 38, 39, 39, 41, 41, 41, 41, 41, - 42, 42, 46, 43, 45, 48, 48, 48, 49, 49, - 50, 50, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 64, 66, 68, 69, 70, 27, 27, - 73, 52, 74, 74, 75, 75, 76, 78, 72, 72, - 77, 77, 83, 53, 87, 53, 53, 82, 90, 82, - 84, 84, 91, 91, 92, 93, 92, 88, 88, 94, - 94, 95, 96, 86, 86, 89, 89, 89, 99, 54, - 102, 103, 97, 104, 105, 106, 97, 97, 98, 98, - 101, 101, 109, 109, 109, 109, 109, 109, 109, 109, - 109, 109, 110, 110, 113, 113, 113, 116, 113, 114, - 114, 117, 117, 118, 118, 118, 111, 111, 111, 119, - 119, 119, 112, 121, 123, 124, 55, 126, 127, 128, - 57, 122, 122, 122, 122, 122, 132, 129, 133, 130, - 131, 131, 131, 134, 135, 136, 138, 28, 28, 137, - 137, 139, 139, 140, 140, 140, 140, 140, 140, 140, - 140, 140, 143, 58, 142, 142, 144, 144, 147, 141, - 141, 146, 146, 146, 146, 146, 146, 146, 146, 146, - 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, - 146, 146, 146, 149, 148, 150, 148, 148, 148, 59, - 153, 155, 151, 152, 152, 154, 154, 159, 157, 160, - 157, 157, 157, 161, 60, 163, 56, 166, 167, 56, - 162, 169, 162, 164, 164, 170, 170, 171, 172, 171, - 173, 168, 165, 165, 165, 165, 165, 177, 174, 178, - 175, 176, 176, 180, 182, 183, 29, 179, 179, 179, - 181, 181, 181, 184, 184, 185, 186, 185, 187, 188, - 189, 30, 190, 190, 16, 16, 191, 191, 194, 193, - 193, 193, 195, 195, 197, 63, 120, 100, 100, 125, - 125, 198, 198, 198, 196, 196, 199, 199, 200, 200, - 202, 202, 81, 71, 71, 85, 85, 115, 115, 145, - 145, 203, 203, 203, 203, 203, 207, 207, 208, 208, - 206, 206, 206, 206, 206, 206, 206, 209, 209, 209, - 209, 209, 209, 209, 209, 209, 210, 210, 210, 210, - 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, - 210, 210, 210, 210, 210, 210, 211, 211, 211, 212, - 212, 212, 232, 232, 233, 233, 234, 234, 214, 214, - 231, 231, 231, 231, 231, 231, 231, 231, 216, 235, - 235, 236, 236, 237, 237, 239, 239, 239, 240, 240, - 240, 240, 240, 241, 241, 158, 158, 245, 245, 245, - 245, 245, 247, 247, 246, 246, 248, 248, 248, 248, - 249, 217, 217, 217, 244, 244, 244, 250, 250, 251, - 251, 218, 219, 219, 220, 221, 222, 222, 213, 213, - 213, 213, 213, 256, 252, 223, 257, 257, 258, 258, - 259, 259, 260, 260, 260, 260, 253, 253, 204, 204, - 255, 255, 261, 261, 254, 254, 80, 80, 262, 262, - 263, 224, 264, 264, 264, 265, 265, 265, 265, 265, - 266, 192, 225, 226, 227, 228, 268, 229, 269, 229, - 267, 267, 271, 270, 215, 272, 272, 272, 272, 272, - 273, 273, 273, 273, 273, 273, 273, 274, 274, 274, - 274, 275, 275, 275, 275, 275, 275, 276, 276, 276, - 277, 277, 277, 277, 277, 278, 278, 278, 279, 279, - 280, 280, 281, 281, 282, 282, 283, 283, 284, 284, - 285, 285, 286, 286, 286, 286, 286, 286, 286, 286, - 286, 286, 286, 287, 287, 288, 288, 288, 289, 289, - 290, 290, 293, 291, 292, 292, 295, 294, 296, 294, - 297, 298, 294, 299, 300, 294, 44, 44, 242, 242, - 242, 242, 230, 230, 230, 79, 302, 303, 304, 305, - 306, 26, 62, 62, 61, 61, 107, 107, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 65, 65, 67, 67, 67, 308, 308, - 309, 310, 310, 311, 311, 311, 311, 201, 201, 312, - 312, 314, 108, 315, 315, 316, 156, 313, 313, 317, - 317, 318, 318, 318, 318, 318, 322, 322, 323, 323, - 323, 320, 320, 320, 320, 320, 320, 320, 320, 320, - 320, 320, 320, 320, 324, 324, 324, 324, 324, 324, - 324, 324, 324, 324, 324, 324, 324, 338, 338, 338, - 338, 325, 339, 321, 340, 340, 341, 341, 341, 341, - 341, 341, 205, 205, 342, 47, 47, 344, 319, 347, - 319, 343, 343, 343, 343, 345, 345, 351, 351, 350, - 350, 352, 352, 346, 346, 348, 348, 353, 353, 354, - 349, 349, 349, 326, 326, 326, 337, 337, 355, 356, - 356, 327, 327, 357, 357, 357, 360, 358, 358, 359, - 359, 361, 361, 361, 364, 362, 363, 363, 365, 365, - 328, 328, 328, 328, 366, 366, 367, 367, 367, 371, - 368, 374, 376, 377, 370, 370, 372, 372, 379, 378, - 378, 373, 373, 375, 375, 381, 380, 380, 369, 369, - 382, 369, 369, 369, 329, 329, 329, 329, 329, 329, - 383, 384, 385, 385, 385, 386, 387, 388, 388, 389, - 389, 330, 330, 330, 330, 390, 390, 392, 392, 391, - 393, 391, 391, 331, 332, 394, 335, 333, 333, 396, - 397, 336, 399, 400, 334, 334, 334, 398, 398, 395, - 395, 301, 301, 301, 301, 401, 401, 403, 403, 405, - 404, 406, 404, 402, 402, 402, 410, 408, 411, 412, - 408, 407, 407, 413, 413, 414, 414, 414, 414, 414, - 419, 415, 420, 416, 421, 422, 423, 417, 425, 426, - 427, 417, 424, 424, 429, 418, 428, 432, 428, 431, - 434, 431, 430, 430, 430, 433, 433, 433, 409, 435, - 409, 3, 3, 436, 3, 3, 437, 437, 243, 243, - 238, 238, 5, 438, 438, 438, 438, 442, 438, 438, - 438, 438, 439, 439, 440, 443, 440, 441, 441, 444, - 444, 445, + 24, 25, 25, 25, 25, 25, 9, 9, 10, 10, + 33, 31, 36, 32, 32, 34, 34, 34, 34, 35, + 35, 40, 37, 38, 39, 39, 41, 41, 41, 41, + 41, 42, 42, 46, 43, 45, 48, 48, 48, 49, + 49, 50, 50, 51, 51, 51, 51, 51, 51, 51, + 51, 51, 51, 51, 51, 65, 67, 69, 70, 71, + 27, 27, 74, 52, 75, 75, 76, 76, 77, 79, + 73, 73, 78, 78, 84, 53, 88, 53, 53, 83, + 91, 83, 85, 85, 92, 92, 93, 94, 93, 89, + 89, 95, 95, 96, 97, 87, 87, 90, 90, 90, + 100, 54, 103, 104, 98, 105, 106, 107, 98, 98, + 99, 99, 102, 102, 110, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 111, 111, 114, 114, 114, 117, + 114, 115, 115, 118, 118, 119, 119, 119, 112, 112, + 112, 120, 120, 120, 113, 122, 124, 125, 55, 127, + 128, 129, 57, 123, 123, 123, 123, 123, 133, 130, + 134, 131, 132, 132, 132, 135, 136, 137, 139, 28, + 28, 138, 138, 140, 140, 141, 141, 141, 141, 141, + 141, 141, 141, 141, 144, 58, 143, 143, 145, 145, + 148, 142, 142, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 150, 149, 151, 149, 149, + 149, 59, 154, 156, 152, 153, 153, 155, 155, 160, + 158, 161, 158, 158, 158, 162, 60, 164, 56, 167, + 168, 56, 163, 170, 163, 165, 165, 171, 171, 172, + 173, 172, 174, 169, 166, 166, 166, 166, 166, 178, + 175, 179, 176, 177, 177, 61, 181, 183, 184, 29, + 180, 180, 180, 182, 182, 182, 185, 185, 186, 187, + 186, 188, 189, 190, 30, 191, 191, 16, 16, 192, + 192, 195, 194, 194, 194, 196, 196, 198, 64, 121, + 101, 101, 126, 126, 199, 199, 199, 197, 197, 200, + 200, 201, 201, 203, 203, 82, 72, 72, 86, 86, + 116, 116, 146, 146, 204, 204, 204, 204, 204, 208, + 208, 209, 209, 207, 207, 207, 207, 207, 207, 207, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 211, + 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, + 211, 211, 211, 211, 211, 211, 211, 211, 211, 212, + 212, 212, 213, 213, 213, 233, 233, 234, 234, 235, + 235, 215, 215, 232, 232, 232, 232, 232, 232, 232, + 232, 217, 236, 236, 237, 237, 238, 238, 240, 240, + 240, 241, 241, 241, 241, 241, 242, 242, 159, 159, + 246, 246, 246, 246, 246, 248, 248, 247, 247, 249, + 249, 249, 249, 250, 218, 218, 218, 245, 245, 245, + 251, 251, 252, 252, 219, 220, 220, 221, 222, 223, + 223, 214, 214, 214, 214, 214, 257, 253, 224, 258, + 258, 259, 259, 260, 260, 261, 261, 261, 261, 254, + 254, 205, 205, 256, 256, 262, 262, 255, 255, 81, + 81, 263, 263, 264, 225, 265, 265, 265, 266, 266, + 266, 266, 266, 267, 193, 226, 227, 228, 229, 269, + 230, 270, 230, 268, 268, 272, 271, 216, 273, 273, + 273, 273, 273, 274, 274, 274, 274, 274, 274, 274, + 275, 275, 275, 275, 276, 276, 276, 276, 276, 276, + 277, 277, 277, 278, 278, 278, 278, 278, 279, 279, + 279, 280, 280, 281, 281, 282, 282, 283, 283, 284, + 284, 285, 285, 286, 286, 287, 287, 287, 287, 287, + 287, 287, 287, 287, 287, 287, 288, 288, 289, 289, + 289, 290, 290, 291, 291, 294, 292, 293, 293, 296, + 295, 297, 295, 298, 299, 295, 300, 301, 295, 44, + 44, 243, 243, 243, 243, 231, 231, 231, 80, 303, + 304, 305, 306, 307, 26, 63, 63, 62, 62, 108, + 108, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 66, 66, 68, 68, + 68, 309, 309, 310, 311, 311, 312, 312, 312, 312, + 202, 202, 313, 313, 315, 109, 316, 316, 317, 157, + 314, 314, 318, 318, 319, 319, 319, 319, 319, 323, + 323, 324, 324, 324, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 325, 325, 325, + 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, + 339, 339, 339, 339, 326, 340, 322, 341, 341, 342, + 342, 342, 342, 342, 342, 206, 206, 343, 47, 47, + 345, 320, 348, 320, 344, 344, 344, 344, 346, 346, + 352, 352, 351, 351, 353, 353, 347, 347, 349, 349, + 354, 354, 355, 350, 350, 350, 327, 327, 327, 338, + 338, 356, 357, 357, 328, 328, 358, 358, 358, 361, + 359, 359, 360, 360, 362, 362, 362, 365, 363, 364, + 364, 366, 366, 329, 329, 329, 329, 367, 367, 368, + 368, 368, 372, 369, 375, 377, 378, 371, 371, 373, + 373, 380, 379, 379, 374, 374, 376, 376, 382, 381, + 381, 370, 370, 383, 370, 370, 370, 330, 330, 330, + 330, 330, 330, 384, 385, 386, 386, 386, 387, 388, + 389, 389, 390, 390, 331, 331, 331, 331, 391, 391, + 393, 393, 392, 394, 392, 392, 332, 333, 395, 336, + 334, 334, 397, 398, 337, 400, 401, 335, 335, 335, + 399, 399, 396, 396, 302, 302, 302, 302, 402, 402, + 404, 404, 406, 405, 407, 405, 403, 403, 403, 411, + 409, 412, 413, 409, 408, 408, 414, 414, 415, 415, + 415, 415, 415, 420, 416, 421, 417, 422, 423, 424, + 418, 426, 427, 428, 418, 425, 425, 430, 419, 429, + 433, 429, 432, 435, 432, 431, 431, 431, 434, 434, + 434, 410, 436, 410, 3, 3, 437, 3, 3, 438, + 438, 244, 244, 239, 239, 5, 439, 439, 439, 439, + 443, 439, 439, 439, 439, 440, 440, 441, 444, 441, + 442, 442, 445, 445, 446, }; static readonly short [] yyLen = { 2, 2, 0, 3, 1, 2, 4, 3, 1, 0, 1, 1, 2, 4, 2, 1, 2, 1, 3, 5, 2, 0, 0, 11, 1, 3, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 2, 1, 1, - 1, 1, 1, 1, 1, 0, 1, 1, 2, 0, - 3, 0, 6, 3, 1, 1, 1, 1, 1, 3, - 0, 3, 1, 0, 3, 0, 1, 1, 3, 3, - 1, 1, 0, 4, 4, 0, 1, 1, 0, 1, - 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 0, 0, 0, 0, 0, 16, 5, - 0, 9, 0, 1, 1, 2, 3, 0, 3, 1, - 1, 1, 0, 8, 0, 9, 6, 0, 0, 3, - 0, 1, 1, 2, 2, 0, 5, 0, 1, 1, - 2, 3, 0, 4, 2, 1, 1, 1, 0, 3, - 0, 0, 10, 0, 0, 0, 12, 8, 1, 1, - 0, 1, 1, 3, 3, 3, 5, 3, 5, 1, - 1, 1, 1, 3, 4, 6, 4, 0, 7, 0, - 1, 1, 2, 1, 1, 1, 4, 6, 4, 1, - 2, 2, 1, 0, 0, 0, 10, 0, 0, 0, - 13, 1, 2, 1, 2, 1, 0, 5, 0, 5, - 1, 1, 1, 0, 0, 0, 0, 15, 5, 0, + 2, 1, 1, 1, 1, 1, 0, 1, 1, 2, + 0, 3, 0, 6, 3, 1, 1, 1, 1, 1, + 3, 0, 3, 1, 0, 3, 0, 1, 1, 3, + 3, 1, 1, 0, 4, 4, 0, 1, 1, 0, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 0, 5, 1, 1, 1, 1, 0, 7, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 0, 7, 0, 7, 2, 2, 2, - 0, 0, 9, 1, 1, 0, 1, 0, 6, 0, - 6, 2, 1, 0, 8, 0, 9, 0, 0, 10, - 0, 0, 3, 0, 1, 1, 2, 2, 0, 5, - 0, 2, 2, 2, 1, 1, 1, 0, 5, 0, - 5, 1, 1, 0, 0, 0, 12, 0, 2, 2, - 0, 1, 2, 1, 3, 2, 0, 5, 0, 0, - 0, 13, 0, 1, 1, 3, 1, 4, 2, 0, - 3, 2, 1, 3, 0, 3, 1, 1, 3, 1, - 2, 3, 4, 4, 0, 3, 1, 3, 3, 1, + 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, + 16, 5, 0, 9, 0, 1, 1, 2, 3, 0, + 3, 1, 1, 1, 0, 8, 0, 9, 6, 0, + 0, 3, 0, 1, 1, 2, 2, 0, 5, 0, + 1, 1, 2, 3, 0, 4, 2, 1, 1, 1, + 0, 3, 0, 0, 10, 0, 0, 0, 12, 8, + 1, 1, 0, 1, 1, 3, 3, 3, 5, 3, + 5, 1, 1, 1, 1, 3, 4, 6, 4, 0, + 7, 0, 1, 1, 2, 1, 1, 1, 4, 6, + 4, 1, 2, 2, 1, 0, 0, 0, 10, 0, + 0, 0, 13, 1, 2, 1, 2, 1, 0, 5, + 0, 5, 1, 1, 1, 0, 0, 0, 0, 15, + 5, 0, 1, 1, 2, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 0, 5, 1, 1, 1, 1, + 0, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 2, 2, 2, 2, 2, 2, 1, 3, 1, 1, + 1, 1, 1, 1, 1, 0, 7, 0, 7, 2, + 2, 2, 0, 0, 9, 1, 1, 0, 1, 0, + 6, 0, 6, 2, 1, 0, 8, 0, 9, 0, + 0, 10, 0, 0, 3, 0, 1, 1, 2, 2, + 0, 5, 0, 2, 2, 2, 1, 1, 1, 0, + 5, 0, 5, 1, 1, 2, 0, 0, 0, 12, + 0, 2, 2, 0, 1, 2, 1, 3, 2, 0, + 5, 0, 0, 0, 13, 0, 1, 1, 3, 1, + 4, 2, 0, 3, 2, 1, 3, 0, 3, 1, + 1, 3, 1, 2, 3, 4, 4, 0, 3, 1, + 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 2, 2, 2, 2, 2, 2, 1, + 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, + 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 3, 3, 4, 4, 4, 3, 3, 4, 3, + 4, 4, 0, 1, 3, 4, 0, 1, 1, 3, + 2, 3, 1, 2, 3, 2, 1, 1, 0, 1, + 1, 3, 3, 2, 2, 1, 1, 1, 1, 2, + 2, 4, 3, 1, 4, 4, 3, 1, 3, 2, + 1, 3, 1, 1, 1, 4, 3, 2, 2, 6, + 3, 7, 4, 3, 7, 3, 0, 2, 4, 1, + 2, 0, 1, 1, 3, 3, 1, 1, 1, 0, + 1, 1, 2, 2, 3, 1, 2, 0, 1, 2, + 4, 1, 3, 0, 5, 1, 1, 1, 2, 3, + 3, 4, 4, 1, 2, 4, 4, 4, 4, 0, + 4, 0, 5, 0, 1, 0, 4, 4, 1, 2, + 2, 4, 2, 1, 2, 2, 2, 2, 2, 2, + 1, 3, 3, 3, 1, 3, 3, 3, 3, 3, + 1, 3, 3, 1, 3, 3, 3, 3, 1, 3, + 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, + 3, 1, 3, 1, 5, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 1, 3, 3, 2, + 1, 0, 1, 1, 1, 0, 2, 1, 1, 0, + 4, 0, 5, 0, 0, 7, 0, 0, 8, 1, + 1, 1, 1, 1, 1, 6, 4, 4, 1, 1, + 0, 0, 0, 0, 15, 0, 1, 0, 1, 1, + 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 0, 2, 0, 1, + 1, 1, 2, 4, 1, 3, 1, 3, 1, 1, + 0, 1, 1, 1, 0, 4, 1, 1, 0, 4, + 0, 1, 1, 2, 1, 1, 1, 2, 1, 1, + 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, - 4, 4, 4, 3, 3, 4, 3, 4, 4, 0, - 1, 3, 4, 0, 1, 1, 3, 2, 3, 1, - 2, 3, 2, 1, 1, 0, 1, 1, 3, 3, - 2, 2, 1, 1, 1, 1, 2, 2, 4, 3, - 1, 4, 4, 3, 1, 3, 2, 1, 3, 1, - 1, 1, 4, 3, 2, 2, 6, 3, 7, 4, - 3, 7, 3, 0, 2, 4, 1, 2, 0, 1, - 1, 3, 3, 1, 1, 1, 0, 1, 1, 2, - 2, 3, 1, 2, 0, 1, 2, 4, 1, 3, - 0, 5, 1, 1, 1, 2, 3, 3, 4, 4, - 1, 2, 4, 4, 4, 4, 0, 4, 0, 5, - 0, 1, 0, 4, 4, 1, 2, 2, 4, 2, - 1, 2, 2, 2, 2, 2, 2, 1, 3, 3, - 3, 1, 3, 3, 3, 3, 3, 1, 3, 3, - 1, 3, 3, 3, 3, 1, 3, 3, 1, 3, - 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, - 1, 5, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 1, 3, 3, 2, 1, 0, 1, - 1, 1, 0, 2, 1, 1, 0, 4, 0, 5, - 0, 0, 7, 0, 0, 8, 1, 1, 1, 1, - 1, 1, 6, 4, 4, 1, 1, 0, 0, 0, - 0, 15, 0, 1, 0, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 0, 2, 0, 1, 1, 1, 2, - 4, 1, 3, 1, 3, 1, 1, 0, 1, 1, - 1, 0, 4, 1, 1, 0, 4, 0, 1, 1, - 2, 1, 1, 1, 2, 1, 1, 2, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 0, 4, 1, 2, 2, 2, 2, 2, - 2, 1, 1, 2, 1, 1, 1, 0, 6, 0, - 7, 0, 2, 2, 1, 0, 1, 0, 1, 1, - 2, 2, 4, 0, 2, 0, 1, 1, 2, 4, - 1, 5, 2, 2, 2, 2, 2, 2, 1, 1, - 1, 1, 1, 5, 7, 4, 0, 8, 4, 0, - 1, 1, 2, 1, 0, 3, 1, 2, 3, 1, - 1, 1, 1, 1, 5, 4, 7, 3, 6, 0, - 4, 0, 0, 0, 10, 1, 0, 1, 0, 5, - 1, 0, 1, 0, 1, 1, 1, 3, 4, 5, - 0, 9, 5, 4, 1, 1, 1, 1, 1, 1, - 2, 2, 3, 4, 3, 3, 3, 4, 3, 0, - 1, 3, 4, 5, 3, 1, 2, 0, 1, 2, - 0, 7, 3, 2, 2, 0, 3, 5, 4, 0, - 0, 10, 0, 0, 9, 5, 4, 2, 1, 0, - 2, 2, 2, 2, 2, 4, 5, 4, 5, 0, - 5, 0, 6, 3, 2, 1, 0, 3, 0, 0, - 6, 0, 1, 1, 2, 1, 1, 1, 1, 1, - 0, 5, 0, 3, 0, 0, 0, 12, 0, 0, - 0, 13, 0, 2, 0, 3, 1, 0, 4, 1, - 0, 4, 1, 2, 2, 1, 2, 2, 0, 0, - 4, 2, 3, 0, 4, 2, 2, 3, 0, 1, - 1, 1, 2, 2, 2, 4, 3, 0, 7, 4, - 4, 3, 1, 3, 0, 0, 4, 0, 1, 1, - 3, 2, + 1, 1, 1, 1, 1, 0, 4, 1, 2, 2, + 2, 2, 2, 2, 1, 1, 2, 1, 1, 1, + 0, 6, 0, 7, 0, 2, 2, 1, 0, 1, + 0, 1, 1, 2, 2, 4, 0, 2, 0, 1, + 1, 2, 4, 1, 5, 2, 2, 2, 2, 2, + 2, 1, 1, 1, 1, 1, 5, 7, 4, 0, + 8, 4, 0, 1, 1, 2, 1, 0, 3, 1, + 2, 3, 1, 1, 1, 1, 1, 5, 4, 7, + 3, 6, 0, 4, 0, 0, 0, 10, 1, 0, + 1, 0, 5, 1, 0, 1, 0, 1, 1, 1, + 3, 4, 5, 0, 9, 5, 4, 1, 1, 1, + 1, 1, 1, 2, 2, 3, 4, 3, 3, 3, + 4, 3, 0, 1, 3, 4, 5, 3, 1, 2, + 0, 1, 2, 0, 7, 3, 2, 2, 0, 3, + 5, 4, 0, 0, 10, 0, 0, 9, 5, 4, + 2, 1, 0, 2, 2, 2, 2, 2, 4, 5, + 4, 5, 0, 5, 0, 6, 3, 2, 1, 0, + 3, 0, 0, 6, 0, 1, 1, 2, 1, 1, + 1, 1, 1, 0, 5, 0, 3, 0, 0, 0, + 12, 0, 0, 0, 13, 0, 2, 0, 3, 1, + 0, 4, 1, 0, 4, 1, 2, 2, 1, 2, + 2, 0, 0, 4, 2, 3, 0, 4, 2, 2, + 3, 0, 1, 1, 1, 2, 2, 2, 4, 3, + 0, 7, 4, 4, 3, 1, 3, 0, 0, 4, + 0, 1, 1, 3, 2, }; static readonly short [] yyDefRed = { 0, 8, 0, 0, 0, 0, 0, 0, 0, 2, 4, - 0, 0, 11, 14, 0, 932, 0, 0, 936, 0, - 0, 15, 17, 373, 379, 386, 374, 376, 0, 375, - 0, 382, 384, 371, 0, 378, 380, 372, 383, 385, - 381, 335, 953, 0, 377, 943, 0, 10, 1, 0, - 0, 0, 12, 0, 771, 0, 0, 0, 0, 0, - 0, 0, 0, 414, 0, 0, 0, 0, 0, 0, - 0, 412, 0, 0, 0, 472, 0, 413, 0, 511, - 0, 856, 0, 0, 0, 622, 0, 0, 0, 0, - 0, 0, 0, 672, 0, 722, 0, 0, 0, 0, - 0, 0, 0, 0, 411, 0, 611, 0, 770, 0, - 705, 0, 0, 0, 0, 388, 389, 0, 391, 392, - 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, - 403, 404, 405, 406, 409, 410, 618, 541, 0, 0, + 0, 0, 11, 14, 0, 935, 0, 0, 939, 0, + 0, 15, 17, 376, 382, 389, 377, 379, 0, 378, + 0, 385, 387, 374, 0, 381, 383, 375, 386, 388, + 384, 338, 956, 0, 380, 946, 0, 10, 1, 0, + 0, 0, 12, 0, 774, 0, 0, 0, 0, 0, + 0, 0, 0, 417, 0, 0, 0, 0, 0, 0, + 0, 415, 0, 0, 0, 475, 0, 416, 0, 514, + 0, 859, 0, 0, 0, 625, 0, 0, 0, 0, + 0, 0, 0, 675, 0, 725, 0, 0, 0, 0, + 0, 0, 0, 0, 414, 0, 614, 0, 773, 0, + 708, 0, 0, 0, 0, 391, 392, 0, 394, 395, + 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, + 406, 407, 408, 409, 412, 413, 621, 544, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 622, 620, 623, 624, 692, 694, 0, 690, 693, 709, + 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, + 710, 0, 0, 0, 775, 776, 794, 795, 796, 797, + 828, 829, 830, 831, 832, 833, 0, 0, 0, 20, + 0, 0, 328, 0, 330, 943, 16, 936, 0, 0, + 239, 238, 235, 240, 241, 234, 253, 252, 245, 246, + 242, 244, 243, 247, 236, 237, 248, 249, 255, 254, + 250, 251, 0, 0, 959, 0, 948, 0, 947, 3, + 51, 0, 0, 0, 40, 37, 39, 42, 43, 44, + 45, 46, 49, 13, 0, 0, 0, 834, 418, 419, + 857, 0, 0, 0, 0, 0, 0, 393, 0, 835, + 0, 536, 530, 535, 724, 772, 695, 722, 721, 723, + 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, + 706, 707, 0, 0, 0, 803, 0, 0, 0, 740, + 739, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 844, 0, 390, 0, 0, 0, 0, 0, 0, + 858, 0, 0, 0, 738, 734, 0, 0, 0, 0, + 0, 0, 0, 357, 0, 0, 0, 0, 0, 0, + 0, 0, 617, 0, 543, 0, 0, 541, 545, 546, + 540, 550, 549, 547, 548, 610, 525, 0, 411, 410, + 0, 0, 0, 0, 0, 726, 0, 327, 0, 732, + 733, 0, 478, 479, 0, 0, 0, 730, 731, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 619, 617, 620, 621, 689, 691, 0, 687, 690, 706, - 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, - 707, 0, 0, 0, 772, 773, 791, 792, 793, 794, - 825, 826, 827, 828, 829, 830, 0, 0, 0, 20, - 0, 0, 325, 0, 327, 940, 16, 933, 0, 0, - 237, 236, 233, 238, 239, 232, 251, 250, 243, 244, - 240, 242, 241, 245, 234, 235, 246, 247, 253, 252, - 248, 249, 0, 0, 956, 0, 945, 0, 944, 3, - 50, 0, 0, 0, 40, 37, 39, 41, 42, 43, - 44, 45, 48, 13, 0, 0, 0, 831, 415, 416, - 854, 0, 0, 0, 0, 0, 0, 390, 0, 832, - 0, 533, 527, 532, 721, 769, 692, 719, 718, 720, - 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, - 703, 704, 0, 0, 0, 800, 0, 0, 0, 737, - 736, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 841, 0, 387, 0, 0, 0, 0, 0, 0, - 855, 0, 0, 0, 735, 731, 0, 0, 0, 0, - 0, 0, 0, 354, 0, 0, 0, 0, 0, 0, - 0, 0, 614, 0, 540, 0, 0, 538, 542, 543, - 537, 547, 546, 544, 545, 607, 522, 0, 408, 407, - 0, 0, 0, 0, 0, 723, 0, 324, 0, 729, - 730, 0, 475, 476, 0, 0, 0, 727, 728, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 938, 691, 741, 729, 0, 770, 771, + 889, 906, 0, 0, 0, 918, 877, 875, 899, 0, + 0, 897, 900, 901, 902, 903, 878, 876, 0, 0, + 0, 332, 0, 18, 0, 0, 0, 955, 0, 339, + 0, 0, 0, 957, 0, 0, 38, 647, 653, 645, + 0, 642, 652, 646, 644, 643, 650, 648, 649, 655, + 651, 654, 656, 0, 0, 640, 41, 50, 477, 0, + 473, 474, 0, 0, 471, 0, 743, 0, 0, 0, + 801, 0, 769, 767, 768, 0, 0, 0, 629, 0, + 838, 836, 630, 0, 0, 499, 0, 0, 0, 490, + 0, 494, 504, 506, 0, 486, 0, 0, 0, 0, + 0, 481, 0, 484, 0, 488, 359, 839, 0, 0, + 840, 848, 0, 0, 0, 849, 0, 0, 860, 0, + 0, 737, 0, 369, 365, 366, 0, 0, 364, 367, + 368, 0, 0, 0, 551, 0, 0, 532, 0, 612, + 689, 0, 0, 0, 683, 685, 686, 687, 422, 423, + 0, 335, 336, 0, 177, 176, 178, 0, 0, 0, + 0, 361, 0, 597, 0, 0, 842, 0, 0, 427, + 0, 430, 0, 428, 0, 467, 0, 0, 0, 0, + 0, 456, 459, 0, 0, 451, 458, 457, 0, 586, + 587, 588, 589, 590, 591, 592, 593, 594, 596, 595, + 552, 554, 553, 559, 560, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 935, 688, 738, 726, 0, 767, 768, - 886, 903, 0, 0, 0, 915, 874, 872, 896, 0, - 0, 894, 897, 898, 899, 900, 875, 873, 0, 0, - 0, 329, 0, 18, 0, 0, 0, 952, 0, 336, - 0, 0, 0, 954, 0, 0, 38, 644, 650, 642, - 0, 639, 649, 643, 641, 640, 647, 645, 646, 652, - 648, 651, 653, 0, 0, 637, 49, 474, 0, 470, - 471, 0, 0, 468, 0, 740, 0, 0, 0, 798, - 0, 766, 764, 765, 0, 0, 0, 626, 0, 835, - 833, 627, 0, 0, 496, 0, 0, 0, 487, 0, - 491, 501, 503, 0, 483, 0, 0, 0, 0, 0, - 478, 0, 481, 0, 485, 356, 836, 0, 0, 837, - 845, 0, 0, 0, 846, 0, 0, 857, 0, 0, - 734, 0, 366, 362, 363, 0, 0, 361, 364, 365, - 0, 0, 0, 548, 0, 0, 529, 0, 609, 686, - 0, 0, 0, 680, 682, 683, 684, 419, 420, 0, - 332, 333, 0, 175, 174, 176, 0, 0, 0, 0, - 358, 0, 594, 0, 0, 839, 0, 0, 424, 0, - 427, 0, 425, 0, 464, 0, 0, 0, 0, 0, - 453, 456, 0, 0, 448, 455, 454, 0, 583, 584, - 585, 586, 587, 588, 589, 590, 591, 593, 592, 549, - 551, 550, 556, 557, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 580, - 0, 0, 500, 0, 0, 0, 0, 0, 0, 0, - 887, 889, 885, 0, 895, 0, 0, 326, 950, 951, - 350, 0, 0, 347, 0, 0, 172, 0, 0, 960, - 946, 948, 58, 56, 57, 0, 0, 51, 0, 0, - 59, 61, 26, 24, 0, 0, 0, 634, 0, 638, - 423, 0, 473, 0, 524, 0, 535, 162, 183, 0, - 0, 152, 0, 0, 0, 163, 528, 0, 860, 806, - 0, 817, 801, 0, 808, 0, 819, 0, 834, 776, - 0, 859, 0, 0, 486, 0, 502, 504, 0, 0, - 440, 0, 0, 436, 0, 0, 465, 0, 506, 480, - 0, 138, 507, 136, 137, 509, 0, 523, 779, 0, - 850, 0, 843, 0, 847, 515, 0, 0, 0, 351, - 0, 513, 0, 0, 525, 867, 0, 863, 796, 0, - 878, 0, 876, 0, 0, 624, 625, 0, 0, 0, - 685, 674, 675, 673, 681, 602, 608, 601, 0, 0, - 331, 597, 0, 0, 0, 539, 838, 724, 428, 422, - 426, 421, 526, 463, 462, 461, 458, 457, 0, 452, - 417, 418, 429, 0, 0, 745, 0, 0, 606, 605, - 904, 880, 0, 905, 0, 901, 0, 916, 0, 0, - 0, 0, 884, 19, 328, 671, 670, 0, 669, 0, - 346, 962, 173, 957, 0, 0, 52, 0, 0, 0, - 0, 0, 0, 353, 0, 628, 0, 0, 78, 77, - 0, 469, 0, 0, 0, 0, 0, 534, 0, 0, - 0, 0, 0, 809, 802, 0, 820, 0, 0, 858, - 493, 492, 443, 0, 0, 941, 942, 432, 438, 0, - 441, 0, 467, 0, 0, 0, 0, 0, 777, 853, - 0, 844, 0, 521, 516, 0, 0, 512, 0, 866, - 0, 795, 879, 877, 0, 530, 0, 610, 604, 334, - 596, 595, 612, 460, 0, 450, 449, 582, 138, 0, - 761, 743, 0, 0, 0, 750, 0, 882, 0, 909, - 0, 924, 925, 918, 888, 890, 930, 349, 348, 961, - 0, 0, 60, 54, 0, 62, 25, 22, 0, 0, - 304, 0, 209, 0, 100, 0, 75, 755, 111, 112, - 0, 0, 0, 758, 181, 182, 0, 0, 0, 0, - 155, 164, 156, 158, 799, 0, 0, 0, 0, 0, - 818, 0, 0, 442, 444, 445, 439, 433, 437, 0, - 498, 0, 466, 477, 431, 510, 508, 0, 849, 0, - 0, 0, 517, 0, 869, 0, 0, 623, 615, 0, - 459, 0, 0, 739, 751, 881, 0, 0, 0, 902, - 0, 0, 0, 949, 0, 0, 0, 67, 68, 71, - 72, 0, 319, 310, 309, 0, 629, 205, 95, 0, - 741, 759, 167, 0, 179, 0, 0, 0, 797, 871, - 0, 0, 0, 813, 0, 821, 775, 482, 479, 784, - 0, 790, 0, 0, 782, 0, 787, 851, 520, 519, - 868, 864, 0, 613, 0, 0, 883, 906, 0, 0, - 0, 920, 0, 931, 0, 73, 65, 0, 0, 0, - 305, 0, 0, 0, 0, 0, 168, 0, 159, 157, - 861, 810, 803, 0, 0, 778, 783, 0, 788, 0, - 0, 616, 0, 753, 0, 910, 927, 928, 921, 891, - 53, 0, 69, 70, 0, 0, 0, 0, 0, 0, - 0, 760, 166, 0, 178, 0, 0, 822, 789, 0, - 676, 852, 865, 762, 0, 0, 0, 74, 0, 0, - 320, 0, 306, 0, 314, 370, 369, 0, 367, 658, - 0, 630, 0, 659, 206, 96, 169, 862, 0, 0, - 815, 0, 907, 0, 922, 0, 0, 0, 0, 0, - 0, 0, 0, 660, 0, 0, 804, 0, 0, 911, - 28, 23, 321, 0, 0, 315, 368, 0, 0, 0, - 97, 0, 677, 0, 0, 0, 0, 307, 666, 0, - 667, 664, 0, 662, 93, 0, 92, 0, 0, 81, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 139, - 0, 0, 222, 214, 215, 216, 217, 218, 219, 220, - 221, 0, 0, 212, 0, 805, 0, 908, 0, 322, - 318, 0, 0, 0, 631, 82, 0, 265, 260, 264, - 0, 207, 213, 0, 914, 912, 665, 663, 0, 0, - 0, 0, 0, 0, 0, 274, 0, 0, 223, 0, - 0, 231, 0, 150, 140, 149, 0, 98, 0, 0, - 259, 0, 0, 258, 0, 144, 0, 0, 340, 0, - 338, 0, 0, 184, 0, 0, 0, 0, 0, 632, - 208, 0, 101, 0, 337, 0, 0, 0, 0, 115, - 0, 0, 0, 0, 0, 0, 141, 0, 0, 188, - 0, 341, 0, 226, 225, 224, 0, 99, 0, 278, - 0, 256, 117, 0, 254, 0, 0, 0, 119, 0, - 342, 0, 0, 185, 0, 0, 0, 339, 229, 110, - 108, 0, 0, 282, 0, 0, 0, 0, 0, 145, - 0, 262, 0, 0, 0, 0, 123, 0, 0, 0, - 0, 343, 344, 0, 0, 0, 0, 0, 105, 297, - 0, 279, 0, 0, 291, 0, 0, 0, 286, 0, - 135, 0, 0, 0, 0, 130, 0, 0, 275, 0, - 120, 0, 114, 124, 142, 148, 196, 0, 186, 0, - 0, 0, 0, 109, 0, 102, 106, 0, 0, 0, - 293, 0, 294, 283, 0, 0, 277, 287, 257, 0, - 0, 116, 131, 255, 0, 273, 0, 263, 267, 126, - 0, 0, 0, 193, 195, 189, 230, 107, 298, 300, - 280, 0, 0, 292, 289, 134, 132, 146, 272, 0, - 0, 0, 143, 197, 199, 187, 0, 0, 0, 291, - 0, 268, 270, 127, 0, 0, 190, 302, 303, 299, - 301, 290, 147, 0, 0, 203, 202, 201, 198, 200, - 0, 0, 0, 191, 269, 271, + 583, 0, 0, 503, 0, 0, 0, 0, 0, 0, + 0, 890, 892, 888, 0, 898, 0, 0, 329, 953, + 954, 353, 0, 0, 0, 350, 0, 0, 174, 0, + 0, 963, 949, 951, 59, 57, 58, 0, 0, 52, + 0, 0, 60, 62, 26, 24, 0, 0, 0, 637, + 0, 641, 426, 0, 476, 0, 527, 0, 538, 164, + 185, 0, 0, 154, 0, 0, 0, 165, 531, 0, + 863, 809, 0, 820, 804, 0, 811, 0, 822, 0, + 837, 779, 0, 862, 0, 0, 489, 0, 505, 507, + 0, 0, 443, 0, 0, 439, 0, 0, 468, 0, + 509, 483, 0, 140, 510, 138, 139, 512, 0, 526, + 782, 0, 853, 0, 846, 0, 850, 518, 0, 0, + 0, 354, 0, 516, 0, 0, 528, 870, 0, 866, + 799, 0, 881, 0, 879, 0, 0, 627, 628, 0, + 0, 0, 688, 677, 678, 676, 684, 605, 611, 604, + 0, 0, 334, 600, 0, 0, 0, 542, 841, 727, + 431, 425, 429, 424, 529, 466, 465, 464, 461, 460, + 0, 455, 420, 421, 432, 0, 0, 748, 0, 0, + 609, 608, 907, 883, 0, 908, 0, 904, 0, 919, + 0, 0, 0, 0, 887, 19, 331, 674, 673, 0, + 672, 0, 349, 965, 175, 960, 0, 0, 53, 0, + 0, 0, 0, 0, 0, 356, 0, 631, 0, 0, + 79, 78, 0, 472, 0, 0, 0, 0, 0, 537, + 0, 0, 0, 0, 0, 812, 805, 0, 823, 0, + 0, 861, 496, 495, 446, 0, 0, 944, 945, 435, + 441, 0, 444, 0, 470, 0, 0, 0, 0, 0, + 780, 856, 0, 847, 0, 524, 519, 0, 0, 515, + 0, 869, 0, 798, 882, 880, 0, 533, 0, 613, + 607, 337, 599, 598, 615, 463, 0, 453, 452, 585, + 140, 0, 764, 746, 0, 0, 0, 753, 0, 885, + 0, 912, 0, 927, 928, 921, 891, 893, 933, 352, + 351, 964, 0, 0, 61, 55, 0, 63, 25, 22, + 0, 0, 307, 0, 211, 0, 102, 0, 76, 758, + 113, 114, 0, 0, 0, 761, 183, 184, 0, 0, + 0, 0, 157, 166, 158, 160, 802, 0, 0, 0, + 0, 0, 821, 0, 0, 445, 447, 448, 442, 436, + 440, 0, 501, 0, 469, 480, 434, 513, 511, 0, + 852, 0, 0, 0, 520, 0, 872, 0, 0, 626, + 618, 0, 462, 0, 0, 742, 754, 884, 0, 0, + 0, 905, 0, 0, 0, 952, 0, 0, 0, 68, + 69, 72, 73, 0, 322, 313, 312, 0, 632, 207, + 97, 0, 744, 762, 169, 0, 181, 0, 0, 0, + 800, 874, 0, 0, 0, 816, 0, 824, 778, 485, + 482, 787, 0, 793, 0, 0, 785, 0, 790, 854, + 523, 522, 871, 867, 0, 616, 0, 0, 886, 909, + 0, 0, 0, 923, 0, 934, 0, 74, 66, 0, + 0, 0, 308, 0, 0, 0, 0, 0, 170, 0, + 161, 159, 864, 813, 806, 0, 0, 781, 786, 0, + 791, 0, 0, 619, 0, 756, 0, 913, 930, 931, + 924, 894, 54, 0, 70, 71, 0, 0, 0, 0, + 0, 0, 0, 763, 168, 0, 180, 0, 0, 825, + 792, 0, 679, 855, 868, 765, 0, 0, 0, 75, + 0, 0, 323, 0, 309, 0, 317, 373, 372, 0, + 370, 661, 0, 633, 0, 662, 208, 98, 171, 865, + 0, 0, 818, 0, 910, 0, 925, 0, 0, 0, + 0, 0, 0, 0, 0, 663, 0, 0, 807, 0, + 0, 914, 28, 23, 324, 0, 0, 318, 371, 0, + 0, 0, 99, 0, 680, 0, 0, 0, 0, 310, + 669, 0, 670, 667, 0, 665, 95, 0, 0, 93, + 0, 0, 82, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 94, 141, 0, 0, 224, 216, 217, 218, + 219, 220, 221, 222, 223, 0, 0, 214, 0, 808, + 0, 911, 0, 325, 321, 0, 0, 0, 306, 634, + 83, 0, 267, 262, 266, 0, 209, 215, 0, 917, + 915, 668, 666, 0, 0, 0, 0, 0, 0, 0, + 276, 0, 0, 225, 0, 0, 233, 0, 152, 142, + 151, 0, 100, 0, 0, 261, 0, 0, 260, 0, + 146, 0, 0, 343, 0, 341, 0, 0, 186, 0, + 0, 0, 0, 0, 635, 210, 0, 103, 0, 340, + 0, 0, 0, 0, 117, 0, 0, 0, 0, 0, + 0, 143, 0, 0, 190, 0, 344, 0, 228, 227, + 226, 0, 101, 0, 280, 0, 258, 119, 0, 256, + 0, 0, 0, 121, 0, 345, 0, 0, 187, 0, + 0, 0, 342, 231, 112, 110, 0, 0, 284, 0, + 0, 0, 0, 0, 147, 0, 264, 0, 0, 0, + 0, 125, 0, 0, 0, 0, 346, 347, 0, 0, + 0, 0, 0, 107, 299, 0, 281, 0, 0, 293, + 0, 0, 0, 288, 0, 137, 0, 0, 0, 0, + 132, 0, 0, 277, 0, 122, 0, 116, 126, 144, + 150, 198, 0, 188, 0, 0, 0, 0, 111, 0, + 104, 108, 0, 0, 0, 295, 0, 296, 285, 0, + 0, 279, 289, 259, 0, 0, 118, 133, 257, 0, + 275, 0, 265, 269, 128, 0, 0, 0, 195, 197, + 191, 232, 109, 300, 302, 282, 0, 0, 294, 291, + 136, 134, 148, 274, 0, 0, 0, 145, 199, 201, + 189, 0, 0, 0, 293, 0, 270, 272, 129, 0, + 0, 192, 304, 305, 301, 303, 292, 149, 0, 0, + 205, 204, 203, 200, 202, 0, 0, 0, 193, 271, + 273, }; protected static readonly short [] yyDgoto = { 7, - 8, 49, 9, 50, 10, 11, 51, 232, 690, 430, - 12, 13, 52, 22, 23, 321, 235, 675, 842, 1032, - 1150, 1488, 839, 236, 237, 238, 239, 240, 241, 242, - 243, 668, 445, 669, 670, 942, 671, 672, 946, 840, - 1027, 1028, 1029, 266, 592, 1122, 110, 851, 1218, 1219, - 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227, 1228, 1229, - 464, 679, 1301, 956, 1129, 1094, 1162, 1186, 1245, 1312, - 1157, 1362, 1339, 1387, 1388, 1389, 958, 1385, 959, 735, - 1278, 1350, 1325, 1375, 515, 1368, 1344, 1404, 921, 1373, - 1376, 1377, 1472, 1405, 1406, 1402, 1230, 1285, 1257, 1302, - 691, 1352, 1451, 1322, 1408, 1481, 465, 267, 692, 693, - 694, 695, 696, 655, 569, 1134, 656, 657, 857, 1304, - 1329, 1419, 1380, 1453, 1305, 1355, 1477, 1501, 1420, 1421, - 1499, 1485, 1486, 954, 1093, 1185, 1242, 1287, 1243, 1244, - 1279, 1336, 1308, 1280, 324, 223, 1384, 1282, 1369, 1366, - 1231, 1259, 1298, 1448, 1410, 1142, 1449, 593, 1494, 1495, - 1297, 1365, 1341, 1397, 1392, 1363, 1429, 1434, 1395, 1398, - 1399, 1480, 1435, 1393, 1394, 1490, 1478, 1479, 951, 1036, - 1153, 1127, 1179, 1154, 1155, 1194, 1090, 1177, 1206, 534, - 193, 112, 350, 195, 563, 440, 224, 1317, 653, 654, - 828, 844, 325, 407, 533, 303, 1158, 1159, 45, 114, - 304, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 252, 803, 994, 511, 722, 878, 723, 724, - 987, 137, 198, 728, 594, 595, 596, 597, 797, 473, - 474, 297, 992, 730, 408, 299, 498, 499, 500, 501, - 504, 737, 310, 753, 754, 895, 263, 479, 768, 264, - 478, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 572, 573, 574, 777, - 778, 811, 779, 153, 560, 770, 351, 1010, 548, 1073, - 154, 493, 952, 1092, 1183, 1283, 466, 1163, 1164, 1213, - 1214, 829, 552, 336, 774, 1172, 553, 554, 268, 269, - 270, 157, 158, 159, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 171, 283, 578, 172, - 173, 317, 808, 632, 924, 854, 686, 962, 922, 925, - 1052, 926, 963, 964, 284, 174, 175, 176, 1063, 998, - 1064, 1065, 1066, 1108, 1067, 177, 178, 179, 180, 703, - 486, 704, 1055, 980, 1169, 1137, 1202, 705, 979, 706, - 1171, 1104, 181, 182, 183, 184, 185, 186, 305, 524, - 525, 1000, 1110, 313, 978, 863, 1136, 1007, 901, 1111, - 187, 418, 188, 419, 927, 1017, 420, 644, 823, 820, - 821, 1022, 421, 422, 423, 424, 425, 426, 931, 634, - 929, 1115, 1189, 1248, 1019, 1146, 1205, 818, 640, 819, - 1081, 1021, 1082, 1147, 1023, 17, 19, 46, 47, 227, - 658, 836, 441, 659, 660, + 8, 49, 9, 50, 10, 11, 51, 232, 692, 654, + 12, 13, 52, 22, 23, 321, 235, 677, 844, 1034, + 1152, 1493, 841, 236, 237, 238, 239, 240, 241, 242, + 243, 670, 445, 671, 672, 944, 673, 674, 948, 842, + 1029, 1030, 1031, 266, 593, 1124, 110, 853, 1221, 1222, + 1223, 1224, 1225, 1226, 1227, 1228, 1229, 1230, 1231, 1232, + 1233, 464, 681, 1306, 958, 1131, 1096, 1164, 1188, 1249, + 1317, 1159, 1367, 1344, 1392, 1393, 1394, 960, 1390, 961, + 737, 1283, 1355, 1330, 1380, 516, 1373, 1349, 1409, 923, + 1378, 1381, 1382, 1477, 1410, 1411, 1407, 1234, 1290, 1262, + 1307, 693, 1357, 1456, 1327, 1413, 1486, 465, 267, 694, + 695, 696, 697, 698, 657, 570, 1136, 658, 659, 859, + 1309, 1334, 1424, 1385, 1458, 1310, 1360, 1482, 1506, 1425, + 1426, 1504, 1490, 1491, 956, 1095, 1187, 1246, 1292, 1247, + 1248, 1284, 1341, 1313, 1285, 324, 223, 1389, 1287, 1374, + 1371, 1235, 1264, 1303, 1453, 1415, 1144, 1454, 594, 1499, + 1500, 1302, 1370, 1346, 1402, 1397, 1368, 1434, 1439, 1400, + 1403, 1404, 1485, 1440, 1398, 1399, 1495, 1483, 1484, 953, + 1038, 1155, 1129, 1181, 1156, 1157, 1196, 1092, 1179, 1208, + 535, 193, 112, 350, 195, 564, 440, 224, 1322, 655, + 656, 830, 846, 325, 407, 534, 303, 1160, 1161, 45, + 114, 304, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, + 134, 135, 136, 252, 805, 996, 512, 724, 880, 725, + 726, 989, 137, 198, 730, 595, 596, 597, 598, 799, + 474, 475, 297, 994, 732, 408, 299, 499, 500, 501, + 502, 505, 739, 310, 755, 756, 897, 263, 480, 770, + 264, 479, 138, 139, 140, 141, 142, 143, 144, 145, + 146, 147, 148, 149, 150, 151, 152, 573, 574, 575, + 779, 780, 813, 781, 153, 561, 772, 351, 1012, 549, + 1075, 154, 494, 954, 1094, 1185, 1288, 466, 1165, 1166, + 1215, 1216, 831, 553, 336, 776, 1174, 554, 555, 268, + 269, 270, 157, 158, 159, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 280, 281, 282, 171, 283, 579, + 172, 173, 317, 810, 633, 926, 856, 688, 964, 924, + 927, 1054, 928, 965, 966, 284, 174, 175, 176, 1065, + 1000, 1066, 1067, 1068, 1110, 1069, 177, 178, 179, 180, + 705, 487, 706, 1057, 982, 1171, 1139, 1204, 707, 981, + 708, 1173, 1106, 181, 182, 183, 184, 185, 186, 305, + 525, 526, 1002, 1112, 313, 980, 865, 1138, 1009, 903, + 1113, 187, 418, 188, 419, 929, 1019, 420, 645, 825, + 822, 823, 1024, 421, 422, 423, 424, 425, 426, 933, + 635, 931, 1117, 1191, 1252, 1021, 1148, 1207, 820, 641, + 821, 1083, 1023, 1084, 1149, 1025, 17, 19, 46, 47, + 227, 660, 838, 441, 661, 662, }; - protected static readonly short [] yySindex = { 74, - 0, -197, -141, 10, 8,11797, 0, 178, 0, 0, - 8, 10, 0, 0, -145, 0, 6588, 8, 0, -185, - -1, 0, 0, 0, 0, 0, 0, 0, 103, 0, - 215, 0, 0, 0, 3619, 0, 0, 0, 0, 0, - 0, 0, 0, 554, 0, 0, 703, 0, 0, 178, - 133, 8, 0, 163, 0, 313, 224, 320,11297, 323, - 291, 297, 6745, 0, 291, 291, 291, -174, 291, 291, - 680, 0,10400, 291, 291, 0,10400, 0, 361, 0, - 320, 0, 291, 454, 291, 0,11816,11816, 456, 291, - 291, -179,11080, 0,10400, 0,11080,11080,11080,11080, -11080,11080,11080,11080, 0, 151, 0, 8451, 0, 197, - 0, 442, 492, 388, -243, 0, 0, 556, 0, 0, + protected static readonly short [] yySindex = { -50, + 0, -198, -148, -227, -77,12060, 0, 70, 0, 0, + -77, -227, 0, 0, -75, 0, 6660, -77, 0, -195, + -230, 0, 0, 0, 0, 0, 0, 0, 240, 0, + 301, 0, 0, 0, 3623, 0, 0, 0, 0, 0, + 0, 0, 0, 56, 0, 0, 663, 0, 0, 70, + 41, -77, 0, 375, 0, 250, 421, 261,11560, 469, + 93, 141, 6817, 0, 93, 93, 93, -179, 93, 93, + 712, 0,10663, 93, 93, 0,10663, 0, 310, 0, + 261, 0, 93, 384, 93, 0,12079,12079, 480, 93, + 93, 2,11343, 0,10663, 0,11343,11343,11343,11343, +11343,11343,11343,11343, 0, 62, 0, 8523, 0, 202, + 0, 443, 430, 692, 369, 0, 0, 509, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1724, 776, - 73, 299, 550, -264, 536, 487, 560, 567, 441, 587, - 0, 0, 0, 0, 0, 0, 3320, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1141, 704, + 186, -73, 604, 599, 493, 544, 555, 551, 366, 577, + 0, 0, 0, 0, 0, 0, 3324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 61, 624, -279, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -187, -172, 133, 0, - 434, 528, 0, 610, 0, 0, 0, 0, 8451, 8451, + 0, 63, 606, 16, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, -197, -182, 41, 0, + 433, 220, 0, 566, 0, 0, 0, 0, 8523, 8523, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 697, 583, 0, 646, 0, 47, 0, 0, - 0, 133,12471, 133, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 827, 672,10536, 0, 0, 0, - 0,10400, 291, 291, 841, 400, 388, 0, 61, 0, - 8451, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 620, 590, 0, 595, 0, -226, 0, 0, + 0, 41,12772, 819, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 752, 598,10799, 0, 0, 0, + 0,10663, 93, 93, 756, 385, 692, 0, 63, 0, + 8523, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, -165, 155,11297, 0, 8451,10400, 766, 0, - 0, 774,10400,10400, 4587, -261, -156, 770, 8608,11080, - 151, 0, 780, 0, 785, 8451,10400, 824, 530, 291, - 0,10400, 361, 9856, 0, 0, 454,10400, 454, 450, - 496, 946, 61, 0, 624, -243, 949, 61,10400,10400, -10400, 297, 0, 902, 0, 6902, -24, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 4203, 0, 0, -11726, 450, 889, 888,10400, 0, 859, 0, 270, 0, - 0, 445, 0, 0, 858, 8434, 9584, 0, 0,11080, -10400,10400,10400,10400,10400,10400,10400,10400,10400,10400, -10400,11080,11080,11080, 8451, 8451,11080,11080,11080,11080, -11080,11080,11080,11080,11080,11080,11080,11080,11080,11080, -11080,11080,10400, 0, 0, 0, 0, 624, 0, 0, - 0, 0,11816,11816, 61, 0, 0, 0, 0, 122, - 775, 0, 0, 0, 0, 0, 0, 0, 133, 133, - 861, 0, 864, 0, 859, 697, 697, 0, -168, 0, - 594, 697, 906, 0, -135,12471, 0, 0, 0, 0, - -177, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 231,12501, 0, 0, 0, 859, 0, - 0, 909, 190, 0, 905, 0, 914, 144, 361, 0, - 291, 0, 0, 0, 61, 7982, -186, 0, 911, 0, - 0, 0, -189, -182, 0, 357, 0, 913, 0, 915, - 0, 0, 0, 609, 0, 8118, 635,10400, 770, 9584, - 0, 7373, 0, 454, 0, 0, 0, 918, -102, 0, - 0, 320, 361, 497, 0, 757, 920, 0, -46, 61, - 0, 67, 0, 0, 0,10400, 1000, 0, 0, 0, -10400, 1002, 924, 0, 927, 928, 0,11726, 0, 0, - -192, -253, 6902, 0, 0, 0, 0, 0, 0, 361, - 0, 0, 285, 0, 0, 0, 454, 450, 61,11870, - 0, 929, 0, 930,11080, 0, 936, 6902, 0, 350, - 0, 424, 0, 859, 0, 42,10400,10400, 933, 1049, - 0, 0, 162, 939, 0, 0, 0, 776, 0, 0, + 0, 0, 159, 127,11560, 0, 8523,10663, 653, 0, + 0, 672,10663,10663, 4591, 357, 138, 684, 8680,11343, + 62, 0, 682, 0, 690, 8523,10663, 694, 588, 93, + 0,10663, 310,10119, 0, 0, 384,10663, 384, 394, + 498, 784, 63, 0, 606, 369, 788, 63,10663,10663, +10663, 141, 0, 744, 0, 6974, -257, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 4207, 0, 0, +11989, 394, 723, 726,10663, 0, 700, 0, -100, 0, + 0, 318, 0, 0, 715, 8506, 9847, 0, 0,11343, +10663,10663,10663,10663,10663,10663,10663,10663,10663,10663, +10663,11343,11343,11343, 8523, 8523,11343,11343,11343,11343, +11343,11343,11343,11343,11343,11343,11343,11343,11343,11343, +11343,11343,10663, 0, 0, 0, 0, 606, 0, 0, + 0, 0,12079,12079, 63, 0, 0, 0, 0, 122, + 790, 0, 0, 0, 0, 0, 0, 0, 41, 819, + 721, 0, 758, 0, 700, 620, 620, 0, -71, 0, + 593, 620, 776, 0, -180,12772, 0, 0, 0, 0, + -192, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 42,12802, 0, 0, 0, 0, 700, + 0, 0, 804, 508, 0, 822, 0, 827, 30, 310, + 0, 93, 0, 0, 0, 63, 8054, -202, 0, 786, + 0, 0, 0, -97, -90, 0, 324, 0, 823, 0, + 830, 0, 0, 0, 607, 0, 8190, 622,10663, 684, + 9847, 0, 7445, 0, 384, 0, 0, 0, 841, -60, + 0, 0, 261, 310, -150, 0, 444, 847, 0, 17, + 63, 0, 83, 0, 0, 0,10663, 929, 0, 0, + 0,10663, 933, 871, 0, 879, 883, 0,11989, 0, + 0, -210, 114, 6974, 0, 0, 0, 0, 0, 0, + 310, 0, 0, -237, 0, 0, 0, 384, 394, 63, +12133, 0, 885, 0, 893,11343, 0, 872, 6974, 0, + 302, 0, 401, 0, 700, 0, 11,10663,10663, 911, + 1016, 0, 0, 168, 915, 0, 0, 0, 704, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 776, 776, 73, 73, 299, 299, - 299, 299, 550, 550, -264, 536, 487, 560, 567, 0, - 942, -164, 0, 8591, 1020, 61, 1029, 61, 944,10400, - 0, 0, 0, 971, 0, 580, 859, 0, 0, 0, - 0, 630, 382, 0,11870, 594, 0, 956, 955, 0, - 0, 0, 0, 0, 0, 450, 958, 0, 957, 960, - 0, 0, 0, 0, 962,11887, 922, 0, 377, 0, - 0, 255, 0,10536, 0, 963, 0, 0, 0, 573, - 966, 0, 967, 969, 974, 0, 0,10400, 0, 0, - 61, 0, 0, 973, 0, 976, 0, 409, 0, 0, - 6745, 0, 6745, 8277, 0, 4587, 0, 0, 9992, 202, - 0, 9, -148, 0, 925, 932, 0, 88, 0, 0, - 979, 0, 0, 0, 0, 0, 983, 0, 0, 992, - 0, 7390, 0, 361, 0, 0, 454, 498, 940, 0, - 104, 0, 988, 989, 0, 0, 6745, 0, 0, 6745, - 0,10400, 0,10400, 8451, 0, 0, 361, 993, 361, - 0, 0, 0, 0, 0, 0, 0, 0, 8591, 8451, - 0, 0, 61,11726, 1021, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 9448, 0, - 0, 0, 0, 9720,10400, 0, 7530, 995, 0, 0, - 0, 0, 1072, 0, 1073, 0, 852, 0, 996, 8591, - 8591, 61, 0, 0, 0, 0, 0, 954, 0, -168, - 0, 0, 0, 0, 594, 594, 0, 861, 1003, 1004, - 964, 1007, 922, 0, 1001, 0, 1125, 1127, 0, 0, -10400, 0,10128, 1010, 573,11870, 8451, 0, -230, 1130, - 1131, 111, 1008, 0, 0,10400, 0,10400, 1108, 0, - 0, 0, 0, 16,10264, 0, 0, 0, 0, 7666, - 0, 1135, 0, 624,10400, 1025, 8277, 1026, 0, 0, - 61, 0, 189, 0, 0, 859, 940, 0, 61, 0, - -96, 0, 0, 0, 1024, 0, 1050, 0, 0, 0, - 0, 0, 0, 0, 729, 0, 0, 0, 0, 8608, - 0, 0, 61, 1032, 995, 0, 8591, 0, 8591, 0, - 8591, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1040, 861, 0, 0,10672, 0, 0, 0, 1041, 7547, - 0, 922, 0, 922, 0, 922, 0, 0, 0, 0, - 61, 1035, 1010, 0, 0, 0, -173, -166, 1039, 1043, - 0, 0, 0, 0, 0, 1038, 8277, 995, -164,10400, - 0, 1048, 6745, 0, 0, 0, 0, 0, 0, 1045, - 0, 770, 0, 0, 0, 0, 0, -203, 0, 1052, - 859, 940, 0, 940, 0, 995, 1056, 0, 0, 361, - 0, 999, 1053, 0, 0, 0, 8591, 1082, 8591, 0, -10400, 1079, 292, 0, 960, 223, 741, 0, 0, 0, - 0, 10, 0, 0, 0, 1064, 0, 0, 0, 1054, - 0, 0, 0, 581, 0, 1057, 1183, 1188, 0, 0, - 995, 1074, 995, 0, 1071, 0, 0, 0, 0, 0, -10400, 0, 1080, -226, 0, -226, 0, 0, 0, 0, - 0, 0, 361, 0,10400, 7825, 0, 0, 1103, 857, - 1083, 0, 8591, 0, 1084, 0, 0,10672, 8, 144, - 0, 1081, 1081, 1081,10128, 1088, 0,10400, 0, 0, - 0, 0, 0, 6745, 1085, 0, 0, 6902, 0, 1096, - 6745, 0, 1097, 0, 8591, 0, 0, 0, 0, 0, - 0,10400, 0, 0, 133, 1098, 133, 7842, -144, -144, - -144, 0, 0,10400, 0, 6745,10400, 0, 0, 6902, - 0, 0, 0, 0, 1120, 8591,10400, 0, 133, 1101, - 0, 1061, 0, 1100, 0, 0, 0, 1109, 0, 0, - 1066, 0, 1136, 0, 0, 0, 0, 0, 1110, 976, - 0, 6902, 0, 1137, 0, 1111, -144, 0, 1122, 133, - 7842, 1113, 1124, 0, 1129, 1152, 0, 1126, 8591, 0, - 0, 0, 0, 1121, 1111, 0, 0,11376, -53, 133, - 0, 6745, 0, 1141, 8591, 1144,10400, 0, 0, 1150, - 0, 0, 1148, 0, 0,12501, 0, 1155, -53, 0, + 0, 0, 0, 0, 0, 704, 704, 186, 186, -73, + -73, -73, -73, 604, 604, 599, 493, 544, 555, 551, + 0, 926, -145, 0, 8663, 1005, 63, 1009, 63, 923, +10663, 0, 0, 0, 949, 0, 319, 700, 0, 0, + 0, 0, 524, 41, 338, 0,12133, 593, 0, 937, + 936, 0, 0, 0, 0, 0, 0, 394, 955, 0, + 954, 956, 0, 0, 0, 0, 958,12150, 916, 0, + 398, 0, 0, 594, 0,10799, 0, 951, 0, 0, + 0, 619, 961, 0, 964, 965, 966, 0, 0,10663, + 0, 0, 63, 0, 0, 959, 0, 967, 0, 403, + 0, 0, 6817, 0, 6817, 8349, 0, 4591, 0, 0, +10255, 189, 0, 134, -59, 0, 917, 927, 0, 32, + 0, 0, 977, 0, 0, 0, 0, 0, 978, 0, + 0, 984, 0, 7462, 0, 310, 0, 0, 384, 507, + 934, 0, 190, 0, 982, 983, 0, 0, 6817, 0, + 0, 6817, 0,10663, 0,10663, 8523, 0, 0, 310, + 987, 310, 0, 0, 0, 0, 0, 0, 0, 0, + 8663, 8523, 0, 0, 63,11989, 1017, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 443,12501, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1156, 133, 0, -53, 0, 61, 0, 1141, 0, - 0, 1153,11376,11542, 0, 0, 597, 0, 0, 0, -11574, 0, 0, 1158, 0, 0, 0, 0, 8451, 8451, - -183, 8608, 428, 454, 1190, 0, 450, 9354, 0, 1223, - 0, 0, 1111, 0, 0, 0, 1111, 0, 1112, 1114, - 0, 8451, -163, 0, 8451, 0, 1115, 1163, 0, 450, - 0, 1164, 9384, 0, 1160, 1119, 62, 602, 3619, 0, - 0, 1111, 0, 450, 0, 1171, 1138, 1168, 1166, 0, - 1169, 1114, 1184, 144, 1176, 1185, 0, 1191, 1192, 0, - 859, 0, 681, 0, 0, 0, 1203, 0, -70, 0, - 1180, 0, 0, 1194, 0, 1206, 1212, 1213, 0, 1214, - 0, 144, 144, 0, 144, 1216, 1217, 0, 0, 0, - 0, 1226, 68, 0, 1227, 144, 1347, 1230, 144, 0, - 597, 0, 8277, 1187, 1233, 1214, 0, 1234, 1239, 120, - 1242, 0, 0, 144,10128, 1196, 1240, 1226, 0, 0, -12501, 0, 133, 133, 0, 1200, 1243, 1227, 0, 1249, - 0,10400, 1207, 1248, 1230, 0, 1255, 144, 0, -169, - 0, 1247, 0, 0, 0, 0, 0,12501, 0, 120, - 120, 1262, 1259, 0, -70, 0, 0, 263, 1264,12501, - 0,12501, 0, 0, 8277, 1252, 0, 0, 0, 1265, - 1194, 0, 0, 0, 1266, 0, -157, 0, 0, 0, - -144, 863, 1269, 0, 0, 0, 0, 0, 0, 0, - 0, 1324, 1377, 0, 0, 0, 0, 0, 0, 1270, - 1271, 8277, 0, 0, 0, 0, 120, 613, 613, 0, - -144, 0, 0, 0, -85, -85, 0, 0, 0, 0, - 0, 0, 0, 9584, 9584, 0, 0, 0, 0, 0, - 1277, 1274, 1275, 0, 0, 0, + 9711, 0, 0, 0, 0, 9983,10663, 0, 7602, 988, + 0, 0, 0, 0, 1070, 0, 1071, 0, 855, 0, + 994, 8663, 8663, 63, 0, 0, 0, 0, 0, 952, + 0, -71, 0, 0, 0, 0, 593, 593, 0, 721, + 999, 1000, 957, 1007, 916, 0, 997, 0, 1120, 1122, + 0, 0,10663, 0,10391, 1006, 619,12133, 8523, 0, + 321, 1123, 1125, 85, 1001, 0, 0,10663, 0,10663, + 1103, 0, 0, 0, 0, 68,10527, 0, 0, 0, + 0, 7738, 0, 1131, 0, 606,10663, 1021, 8349, 1023, + 0, 0, 63, 0, 194, 0, 0, 700, 934, 0, + 63, 0, -82, 0, 0, 0, 1020, 0, 1046, 0, + 0, 0, 0, 0, 0, 0, 724, 0, 0, 0, + 0, 8680, 0, 0, 63, 1019, 988, 0, 8663, 0, + 8663, 0, 8663, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1028, 721, 0, 0,10935, 0, 0, 0, + 1022, 7619, 0, 916, 0, 916, 0, 916, 0, 0, + 0, 0, 63, 1024, 1006, 0, 0, 0, -187, -175, + 1027, 1029, 0, 0, 0, 0, 0, 1026, 8349, 988, + -145,10663, 0, 1033, 6817, 0, 0, 0, 0, 0, + 0, 1036, 0, 684, 0, 0, 0, 0, 0, -193, + 0, 1035, 700, 934, 0, 934, 0, 988, 1037, 0, + 0, 310, 0, 985, 1031, 0, 0, 0, 8663, 1066, + 8663, 0,10663, 1063, 299, 0, 956, 201, 727, 0, + 0, 0, 0, -227, 0, 0, 0, 1048, 0, 0, + 0, 1039, 0, 0, 0, 471, 0, 1041, 1160, 1161, + 0, 0, 988, 1052, 988, 0, 1042, 0, 0, 0, + 0, 0,10663, 0, 1057, -189, 0, -189, 0, 0, + 0, 0, 0, 0, 310, 0,10663, 7897, 0, 0, + 1079, 877, 1058, 0, 8663, 0, 1064, 0, 0,10935, + -77, 30, 0, 1060, 1060, 1060,10391, 1067, 0,10663, + 0, 0, 0, 0, 0, 6817, 1065, 0, 0, 6974, + 0, 1072, 6817, 0, 1068, 0, 8663, 0, 0, 0, + 0, 0, 0,10663, 0, 0, 41, 1061, 41, 7914, + -149, -149, -149, 0, 0,10663, 0, 6817,10663, 0, + 0, 6974, 0, 0, 0, 0, 1094, 8663,10663, 0, + 41, 1075, 0, 1034, 0, 1073, 0, 0, 0, 1077, + 0, 0, 1038, 0, 1105, 0, 0, 0, 0, 0, + 1074, 967, 0, 6974, 0, 1097, 0, 1078, -149, 0, + 1081, 41, 7914, 1080, 1090, 0, 1091, 1092, 0, 1096, + 8663, 0, 0, 0, 0, 1084, 1078, 0, 0,11639, + -67, 41, 0, 6817, 0, 1106, 8663, 1093,10663, 0, + 0, 1095, 0, 0, 1098, 0, 0,12802, 901, 0, + 1099, -67, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 139,12802, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1100, 41, 0, -67, 0, + 63, 0, 1106, 0, 0, 1101,11639,11805, 0, 0, + 0, 516, 0, 0, 0,11837, 0, 0, 1107, 0, + 0, 0, 0, 8523, 8523, 348, 8680, 391, 384, 1137, + 0, 394, 9617, 0, 1171, 0, 0, 1078, 0, 0, + 0, 1078, 0, 1083, 1086, 0, 8523, -173, 0, 8523, + 0, 1087, 1110, 0, 394, 0, 1114, 9647, 0, 1128, + 1088, -137, 541, 3623, 0, 0, 1078, 0, 394, 0, + 1132, 1102, 1127, 1133, 0, 1142, 1086, 1146, 30, 1130, + 1145, 0, 1148, 1154, 0, 700, 0, 862, 0, 0, + 0, 1152, 0, -70, 0, 1151, 0, 0, 1157, 0, + 1156, 1162, 1163, 0, 1159, 0, 30, 30, 0, 30, + 1169, 1182, 0, 0, 0, 0, 1183, 9, 0, 1184, + 30, 1300, 1186, 30, 0, 516, 0, 8349, 1143, 1188, + 1159, 0, 1190, 1194, 148, 1197, 0, 0, 30,10391, + 1150, 1195, 1183, 0, 0,12802, 0, 41, 41, 0, + 1158, 1198, 1184, 0, 1203, 0,10663, 1165, 1202, 1186, + 0, 1207, 30, 0, -88, 0, 1189, 0, 0, 0, + 0, 0,12802, 0, 148, 148, 1214, 1216, 0, -70, + 0, 0, 183, 1221,12802, 0,12802, 0, 0, 8349, + 1209, 0, 0, 0, 1223, 1157, 0, 0, 0, 1219, + 0, 312, 0, 0, 0, -149, 914, 1227, 0, 0, + 0, 0, 0, 0, 0, 0, 1282, 1335, 0, 0, + 0, 0, 0, 0, 1228, 1230, 8349, 0, 0, 0, + 0, 148, 569, 569, 0, -149, 0, 0, 0, 61, + 61, 0, 0, 0, 0, 0, 0, 0, 9847, 9847, + 0, 0, 0, 0, 0, 1234, 1231, 1232, 0, 0, + 0, }; - protected static readonly short [] yyRindex = { 2805, - 0, 0, 7059, 2805, 0, 0, 0, 1649, 0, 0, - 2958, 1776, 0, 0, 0, 0, 0, 2958, 0, 0, - 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1650, 0, 0, 1650, 0, 0, 1649, - 3001, 2852, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1285, 0, 0, 0, 0, 0, 0, 0, 0, -11941, 0, 1278, 0, 0, 0, 1278, 0, 0, 0, - 0, 0, 0, 294, 0, 0, 0, 0, 0, 0, - 0, 0, 240, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 4426, 0, 0, 0, 0, - 0, 0, 309, 4585, 3796, 0, 0, 4361, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 4741, 4809, - 5153, 5357, 5697, 5901, 6037, 541, 1051, 6309, 1811, 3687, - 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, + protected static readonly short [] yyRindex = { 2755, + 0, 0, 7131, 2755, 0, 0, 0, 1605, 0, 0, + 2908, 1725, 0, 0, 0, 0, 0, 2908, 0, 0, + 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 206, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 884, 884, 3068, 0, - 643, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1606, 0, 0, 1606, 0, 0, 1605, + 2982, 2802, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1240, 0, 0, 0, 0, 0, 0, 0, 0, +12204, 0, 1239, 0, 0, 0, 1239, 0, 0, 0, + 0, 0, 0, 106, 0, 0, 0, 0, 0, 0, + 0, 0, 204, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 4430, 0, 0, 0, 0, + 0, 0, 236, 4589, 3800, 0, 0, 4365, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 4745, 4813, + 5157, 5361, 1140, 5837, 5973, 6109, 6245, 6381, 1729, 3691, + 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1650, 279, 0, 0, 0, 0, 0, 0, - 0, 3131, 524, 3178, 0, 0, 0, 0, 0, 0, + 0, 0, 231, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 931, 931, 3025, 0, + 550, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 3407, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1606, 112, 0, 0, 0, 0, 0, 0, + 0, 3068, 395, 3131, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 3411, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1291, 0, 0, 0, 0, 0, - 3407, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 2204, 0, 1623, 256, - 2334, 0, 0, 0, 2464, 2334, 0, 0, 0, 0, - 0, 1285, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1288, 1197, 0, 0, 1278, 0, 3407, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 177, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1242, 0, 0, 0, 0, 0, + 3411, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2136, 0, 2500, 253, + 2266, 0, 0, 0, 2396, 2266, 0, 0, 0, 0, + 0, 1240, 0, 0, 0, 140, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1244, 1554, 0, 0, 1239, 0, 3411, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1346, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 168, 0, 0, 0, 0, 0, 0, 0, 3241, 2629, - 0, 0, 0, 0, 2058, 1650, 1650, 0, -112, 0, - 7999, 1650, 1661, 0, 0, 173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 399,11229, 0, 0, 0, 3407, 0, - 0, 0, 0, 0, 0, 0, 0,11618, 0, 0, - 0, 0, 0, 0, 0, 1286, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1069, 1545, 0, 0, 1296, - 0, 0, 0, 0, 0, 148, 0, 0, 3884, 1294, - 0, 0, 0, -167, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1531, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1275, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1288, 0, 0, - 6428, 0, 191, 0, 0, 0, 0, 0, 0, 8748, - 0, 0, 0, 0, 0, 0, 114, 449, 0, 0, - 0, 1297, 0, 0, 0, 0, 0, 0, 0, 3407, - 0, 3407, 0, 4043, 0, 0, 0, 0, 261, 0, - 0, 0, 0, 183, 0, 0, 0, 4913, 0, 0, + 178, 0, 0, 0, 0, 0, 0, 0, 3178, 3245, + 0, 0, 0, 0, 1990, 1606, 1606, 0, -208, 0, + 8071, 1606, 1618, 0, 0, 177, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 4981, 5085, 5221, 5289, 5425, 5493, - 5561, 5629, 5765, 5833, 5969, 6105, 6173, 6241, 6365, 0, - 0, 764, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 4005, 0, 0, 2058, 0, 0, 0, - 0, 1250, 0, 0, 0,11965, 0, 0, 777, 0, - 0, 0, 0, 0, 0, 736, 532, 0, 0, 1300, - 0, 0, 0, 0, 1305, 0, 0, 0, 0, 0, - 0,10808, 0, 0, 0, 792, 0, 0, 0,12015, - 0, 0, 807, 810, 811, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1298, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1307, 0, 0, 0, 3473, - 0, 0, 212, 0, 53, 3566, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1308, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 181, 693, 0, 0, - 0, 0, 0, 1301, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 8748, + 0, 0, 0, 412,11492, 0, 0, 0, 0, 3411, + 0, 0, 0, 0, 0, 0, 0, 0,11881, 0, + 0, 0, 0, 0, 0, 0, 1257, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 735, 974, 0, 0, + 1252, 0, 0, 0, 0, 0, 182, 0, 0, 3888, + 1262, 0, 0, 0, -169, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1463, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1244, 0, + 0, 6500, 0, 207, 0, 0, 0, 0, 0, 0, + 8820, 0, 0, 0, 0, 0, 0, -194, 646, 0, + 0, 0, 1263, 0, 0, 0, 0, 0, 0, 0, + 3411, 0, 3411, 0, 4047, 0, 0, 0, 0, -271, + 0, 0, 0, 0, 219, 0, 0, 0, 4917, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 4985, 5089, 5225, 5293, 5429, + 5497, 5565, 5633, 5701, 5769, 5905, 6041, 6177, 6313, 6437, + 0, 0, 749, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 4009, 0, 0, 1990, 0, 0, + 0, 0, 1222, 9024, 0, 0, 0,12228, 0, 0, + 768, 0, 0, 0, 0, 0, 0, 683, 668, 0, + 0, 1269, 0, 0, 0, 0, 1274, 0, 0, 0, + 0, 0, 0,11071, 0, 0, 0, 770, 0, 0, + 0,12278, 0, 0, 787, 801, 805, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1268, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1284, 0, 0, + 0, 3477, 0, 0, 215, 0, 92, 3570, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1287, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 105, 587, + 0, 0, 0, 0, 0, 1294, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 284, 0, 0, 0, 1302, 0, 0, - 0, 0, 0, 0, 0, 0, 622, 0, 668, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, -112, - 0, 0, 0, 0,12015, 8294, 0, 1311, 0, 676, - 0, 0, 0, 0, 1310, 0, 1268, 1287, 0, 0, - 0, 0, 0, 1313,12039, 0, 0, 0,11694, 0, - 0, 0, 815, 0, 0, 0, 0, 0, 1932, 0, + 0, 8820, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 3725, 0, 4202, 1319, 0, 0, 0, - 1332, 0, 0, 0, 0, 171, 0, 0, 0, 0, - 815, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1330, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 180, 0, 0, 0, 1313, + 0, 0, 0, 0, 0, 0, 0, 0, 311, 0, + 473, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -208, 0, 0, 0, 0,12278, 8366, 0, 1320, + 0, 640, 0, 0, 0, 0, 1325, 0, 1276, 1278, + 0, 0, 0, 0, 0, 1321,12302, 0, 0, 0, +11957, 0, 0, 0, 811, 0, 0, 0, 0, 0, + 1864, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 3729, 0, 4206, 1331, 0, + 0, 0, 1328, 0, 0, 0, 0, 356, 0, 0, + 0, 0, 811, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 820, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1326, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1334, 0, 0, 0, 0, 0, 823, 826, - 0, 0, 0, 0, 0, 0, 0, 1339, 764, 1336, + 0, 0, 0, 0, 0, 0, 831, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 3884, 0, 0, 0, 0, 0, 1355, 0, 0, - 171, 0, 0, 875, 0, 1339, 0, 0, 0, 8748, - 0, 663, 728, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 180, 0, 1300, 8798, 0, 0, 0, 0, - 0,12090, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 761, 0, 762, 0, 0, 0, 0, - 1343, 0, 1302, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1358, 0, 7216, 0, 0, 0, 0, - 0, 0, 8748, 0, 0, 0, 0, 0, 0, 802, - 821, 0, 0, 0, 0, 0, 0, 0,12133,11618, - 0, 137, 137, 137, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1327, 0, 0, 0, 0, 0, + 858, 874, 0, 0, 0, 0, 0, 0, 0, 1329, + 749, 1330, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 3888, 0, 0, 0, 0, 0, 1337, + 0, 0, 356, 0, 0, 912, 0, 1329, 0, 0, + 0, 8820, 0, 695, 750, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 192, 0, 1269, 8870, 0, 0, + 0, 0, 0,12353, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 795, 0, 798, 0, 0, + 0, 0, 1338, 0, 1313, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1339, 0, 7288, 0, 0, + 0, 0, 0, 0, 8820, 0, 0, 0, 0, 0, + 0, 419, 630, 0, 0, 0, 0, 0, 0, 0, +12396,11881, 0, 80, 80, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,12202, 0, 230, 0, 1370, 1370, - 1370, 0, 0, 0, 0, 0, 1388, 0, 0, -210, - 0, 0, 0, 0, 0, 0, 0, 0,12245, 0, - 0, 0, 0, 1393, 0, 0, 0, 166, 0, 0, - 0, 0, 627, 0, 0, 0, 0, 0, 0, 1391, - 0, 1397, 0, 0, 0, 2915, 1392, 584, 0, 258, + 0, 0, 0, 0, 0, 0,12465, 0, -258, 0, + 1344, 1344, 1344, 0, 0, 0, 0, 0, 1340, 0, + 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, +12508, 0, 0, 0, 0, 1345, 0, 0, 0, 111, + 0, 0, 0, 0, 581, 0, 0, 0, 0, 0, + 0, 1342, 0, 1347, 0, 0, 0, 2865, 1341, 579, + 0, -72, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2669, 0, 0, 0, + 9129, 9327, 0, 0, 0, 691, 0, 0, 0, 0, + 0, 0, 0, 0, 406, 0, 0,11663, 9421, 0, + 0, 9228, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0,11731, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 9507, 0, 9129, 0, + 0, 0, 691, 0, 0, 0, 0, 412, 0, 0, + 0, 0, 0, 0, 0, 412, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 4362, 438, + 0, 9549, 0, 0, 0, 4719, 0, 2669, 0, 0, + 0, 2669, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 461, 0, 1349, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2669, 0, 548, 0, + 671, 0, 0, 0, 0, 0, 0, 0,11881, 876, + 0, 0, 0, 0, 0, 1348, 0, 866, 0, 0, + 0, 0, 0, 0, 0, 882, 0, 0, 0, 0, + 0, 0, 0, 0, 1346, 0,11881,11881, 0,11913, + 0, 0, 0, 0, 0, 0, 1350,12732, 0, 1356, +11881,11207, 1359,11881, 0, 0, 0, 0, 0, 0, + 1368, 0, 0, 0,12702, 0, 0, 0,11881, 0, + 0, 0, 1369, 0, 0, 234, 0,12626,12664, 0, + 0, 0, 1370, 0, 0, 0, 0, 0, 0, 1371, + 0, 0,11881, 0, 585, 0, 886, 0, 0, 0, + 0, 0, 922, 0,12550,12588, 0, 0, 0, 0, + 0, 0, 0, 0, 1403, 0, 1460, 0, 0, 0, + 892, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 597, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2742, 0, 0, 0, 8952, 9150, - 0, 0, 0, 886, 0, 0, 0, 0, 0, 0, - 0, 0, 387, 0, 0,11400, 0, 0, 9051, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0,11468, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 9244, 0, 8952, 0, 0, 0, 886, 0, - 0, 0, 0, 399, 0, 0, 0, 0, 0, 0, - 399, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 4358, 411, 0, 9286, 0, 0, 0, - 4715, 0, 2742, 0, 0, 0, 2742, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 614, - 0, 1400, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 2742, 0, 667, 0, 649, 0, 0, 0, 0, - 0, 0, 0,11618, 825, 0, 0, 0, 0, 0, - 1398, 0, 696, 0, 0, 0, 0, 0, 0, 0, - 829, 0, 0, 0, 0, 0, 0, 0, 0, 1394, - 0,11618,11618, 0,11650, 0, 0, 0, 0, 0, - 0, 1396,12431, 0, 1401,11618,10944, 1402,11618, 0, - 0, 0, 0, 0, 0, 1405, 0, 0, 0,12401, - 0, 0, 0,11618, 0, 0, 0, 1406, 0, 0, - 325, 0, 408,12363, 0, 0, 0, 1407, 0, 0, - 0, 0, 0, 0, 1408, 0, 0,11618, 0, 632, - 0, 847, 0, 0, 0, 0, 0, 887, 0,12287, -12325, 0, 0, 0, 0, 0, 0, 0, 0, 1458, - 0, 1511, 0, 0, 0, 850, 0, 0, 0, 0, + 0,12702, 905,11379, 0, 597, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1262, 1262, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 639, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,12401, 1009,11116, 0, - 639, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1294, 1294, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, + 0, }; protected static readonly short [] yyGindex = { 0, - 0, 1735, 0, 0, 0, 1, -4, -176, -41, 1738, - 0, 1774, 1785, 504, 0, -5, 0, 0, 0, 0, - 0, -830, -697, -215, -450, 0, 0, 0, 0, 0, - -180, 0, 0, 0, 849, 0, 965, 0, 0, 0, - 0, 704, 705, -17, -229, 0, -62, 0, 549, 0, - 593, -868, -860, -573, -539, -534, -476, -468, -449, 0, --1099, 0, 3, 0, 160, 0,-1082, 0, 0, 0, - -7, 375, 0, 0, 0, 425,-1056, 0, -259, -286, - 1139, 0, 0, 0, -877, 373, 0, 0, -496, 0, - 0, 448, 0, 0, 412, 0, 0, 457, 0, -538, - -935, 0, 0, 0, 0, 0, 547, -13, 0, 0, - 968, 970, 977, 1142, -519, 0, 0, -314, 982, 548, - 0,-1316, 0, 0, 0, 0, 0, 0, 0, 0, - 353, 0, 0, 0, 0, 0, 0, 0, 0, 598, - 0, 0, 0, 0, -310, 531, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 611, 0, -503, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 364, 0, 0, - 453, 0, 0, 452, 455, 390, 0, 0, 0, 0, - 0, 0, 0, 0, 674, 0, 0, 0, 0, -58, - 0, -12, -188, 0, 0, 519, 0, 589, 0, 1044, - 0, 1344, -288, -263, -52, 923, 0, 699, 0, -37, - 161, 0, 0, 27, 0, 0, 0, 0, 0, 0, + 0, 1674, 0, 0, 0, -3, -15, -178, -41, -38, + 0, 1737, 1751, 635, 0, -1, 0, 0, 0, 0, + 0,-1105, -697, -220, -381, 0, 0, 0, 0, 0, + -229, 0, 0, 0, 813, 0, 919, 0, 0, 0, + 0, 670, 674, -17, -225, 0, 3, 0, 512, 0, + 546,-1109, -616, -569, -568, -527, -461, -452, -449, 0, + 0,-1171, 0, 14, 0, 197, 0,-1083, 0, 0, + 0, -79, 339, 0, 0, 0, 377,-1061, 0, -267, + -296, 1108, 0, 0, 0, -894, 325, 0, 0, -499, + 0, 0, 392, 0, 0, 364, 0, 0, 399, 0, +-1195, -978, 0, 0, 0, 0, 0, 495, -13, 0, + 0, 938, 940, 944, 1117, -518, 0, 0, -321, 960, + 481, 0, -836, 0, 0, 0, 0, 0, 0, 0, + 0, 289, 0, 0, 0, 0, 0, 0, 0, 0, + 536, 0, 0, 0, 0, -312, 470, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 576, 0, -505, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 327, 0, + 0, 410, 0, 0, 415, 417, 334, 0, 0, 0, + 0, 0, 0, 0, 0, 637, 0, 0, 0, 0, + -58, 0, 153, -48, 0, 0, 482, 0, 538, 0, + 995, 0, 1301, -292, -273, -43, 850, 0, 649, 0, + -32, 87, 0, 0, 25, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -255, 0, 820, 0, 0, -94, 0, 0, 0, + 947, 0, -294, -125, 1112, 1043, 0, 1030, 0, 1248, + 1472, 1164, 0, 0, 851, 1775, 0, 0, 0, 0, + 1135, 0, 0, 0, 0, 0, -811, 1516, 0, 0, + 0, 0, 0, 924, 601, 906, 760, 902, 1454, 1456, + 1458, 1459, 1457, 0, 1461, 0, 0, 0, 1076, 1311, + -728, 0, -490, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -300, 0, 0, 0, 0, -450, 0, 696, + 0, 608, 0, 693, 0, 0, 0, 759, -528, 6, + -299, 8, 0, 1709, 0, 65, 0, 77, 89, 91, + 99, 100, 113, 128, 135, 136, 137, 0, -682, 0, + -25, 0, 0, 887, 0, 815, 0, 0, 0, 793, + -117, 864, -842, 0, 908, -471, 0, 0, 0, 0, + 0, 0, 808, 0, 0, 807, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -260, 0, 520, 0, 0, -43, 0, 0, 0, 997, - 0, -298, -129, 1159, 1087, 0, 1077, 0, 1295, 1516, - 1204, 0, 0, 892, 1816, 0, 0, 0, 0, 1173, - 0, 0, 0, 0, 0, -512, 1563, 0, 0, 0, - 0, 0, 1116, 535, 866, 662, 872, 1499, 1502, 1498, - 1501, 1503, 0, 1510, 0, 0, 0, 1143, 1357, -726, - 0, -702, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -295, 0, 0, 0, 0, -446, 0, 740, 0, - 661, 0, 748, 0, 0, 0, 814, -532, -16, -316, - -15, 0, 1768, 0, 86, 0, 89, 106, 121, 129, - 132, 136, 139, 145, 146, 153, 0, -675, 0, -26, - 0, 0, 947, 0, 876, 0, 0, 0, 854, -199, - 934, -853, 0, 972, -462, 0, 0, 0, 0, 0, - 0, 867, 0, 0, 862, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 796, - 0, 0, 0, 0, 0, 0, 0, 0, -30, 0, - 1410, 0, 0, 0, 1042, 0, 0, 0, 0, 0, - 0, -161, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1515, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 690, 0, 0, 0, 0, 0, 0, - 0, 0, 794, 0, 0, 0, 0, 0, 0, 5, - 1106, 0, 0, 0, 1117, + 737, 0, 0, 0, 0, 0, 0, 0, 0, -39, + 0, 1352, 0, 0, 0, 975, 0, 0, 0, 0, + 0, 0, -171, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1465, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 626, 0, 0, 0, 0, 0, + 0, 0, 0, 738, 0, 0, 0, 0, 0, 0, + -4, 1050, 0, 0, 0, 1047, }; protected static readonly short [] yyTable = { 109, - 155, 156, 432, 111, 18, 292, 731, 194, 43, 233, - 516, 513, 429, 189, 192, 736, 447, 471, 680, 556, - 775, 257, 532, 702, 322, 327, 428, 404, 489, 334, - 543, 316, 259, 509, 497, 869, 570, 870, 1132, 888, - 571, 1061, 1012, 908, 251, 788, 308, 1165, 1166, 939, - 783, 229, 1060, 467, 360, 302, 368, 786, 14, 302, - 361, 538, 369, 771, 1061, 309, 710, 311, 411, 707, - 190, 1015, 1291, 712, 194, 194, 909, 337, 673, 323, - 328, 900, 1043, 411, 902, 258, 1446, 651, 357, 1045, - 480, 806, 1319, 288, 1193, 194, 409, 332, 1469, 505, - 353, 289, 160, 1454, 1455, 161, 1470, 879, 502, 406, - 969, 1160, 503, 358, 772, 16, 1254, 935, 936, 258, - 663, 1292, 162, 258, 258, 258, 258, 258, 258, 258, - 258, 432, 1261, 395, 396, 832, 471, 163, 231, 109, - 155, 156, 315, 111, 633, 164, 664, 233, 165, 410, - 346, 412, 166, 739, 1126, 167, 413, 786, 414, 1005, - 1487, 168, 169, 432, 415, 416, 412, 1471, 579, 170, - 1496, 413, 6, 414, 481, 773, 290, 115, 665, 415, - 416, 46, 711, 290, 472, 1360, 194, 194, 290, 713, - 446, 436, 437, 46, 1161, 1062, 476, 1015, 347, 357, - 231, 357, 1215, 357, 357, 1447, 357, 725, 357, 756, - 506, 786, 507, 447, 249, 750, 807, 871, 1062, 115, - 15, 348, 729, 115, 1016, 880, 1018, 438, 1020, 470, - 444, 291, 191, 570, 475, 349, 556, 571, 291, 333, - 674, 417, 160, 291, 1044, 161, 648, 257, 194, 467, - 357, 1046, 357, 477, 1320, 357, 427, 257, 485, 571, - 537, 556, 162, 250, 531, 542, 508, 539, 535, 740, - 488, 883, 54, 540, 194, 492, 494, 163, 345, 487, - 681, 94, 666, 1074, 977, 164, 194, 530, 165, 519, - 1497, 1428, 166, 194, 527, 167, 529, 794, 518, 528, - 492, 168, 169, 472, 472, 46, 939, 1057, 939, 170, - 1361, 258, 545, 546, 1077, 231, 1079, 115, 1452, 555, - 557, 258, 759, 1390, 577, 757, 258, 1085, 1424, 1, - 1462, 1234, 1463, 20, 385, 194, 967, 302, 194, 1235, - 562, 833, 20, 883, 571, 1192, 1112, 558, 470, 591, - 635, 637, 639, 599, 600, 601, 602, 603, 604, 605, - 606, 607, 608, 609, 1208, 750, 975, 2, 1473, 359, - 386, 443, 194, 194, 1234, 1417, 876, 613, 614, 432, - 1120, 678, 1235, 984, 1003, 631, 1332, 233, 1348, 885, - 996, 790, 654, 792, 1293, 793, 258, 652, 1493, 688, - 194, 194, 862, 981, 559, 636, 638, 199, 258, 258, - 258, 795, 1145, 258, 258, 684, 1378, 1379, 194, 1381, - 939, 655, 699, 290, 708, 646, 939, 196, 1138, 6, - 1400, 2, 194, 1407, 48, 1143, 231, 877, 760, 667, - 649, 650, 678, 1174, 635, 115, 661, 472, 1423, 635, - 387, 388, 1310, 635, 471, 497, 1311, 884, 825, 701, - 1168, 885, 354, 749, 42, 697, 290, 758, 635, 570, - 641, 642, 1445, 571, 115, 654, 359, 432, 291, 1333, - 1050, 1338, 976, 359, 689, 359, 1204, 359, 231, 1069, - 727, 1070, 591, 346, 734, 635, 115, 3, 4, 5, - 6, 231, 1249, 654, 655, 737, 782, 676, 741, 743, - 355, 677, 231, 751, 635, 434, 893, 893, 761, 200, - 748, 896, 482, 763, 197, 1459, 1246, 330, 892, 892, - 483, 359, 655, 801, 345, 194, 555, 557, 244, 330, - 965, 347, 330, 330, 346, 571, 776, 411, 446, 736, - 643, 290, 352, 737, 447, 197, 330, 194, 679, 683, - 849, 555, 557, 684, 348, 346, 960, 850, 725, 796, - 796, 356, 678, 813, 916, 815, 434, 1460, 349, 435, - 261, 725, 875, 484, 285, 286, 287, 635, 293, 294, - 802, 736, 347, 306, 307, 881, 893, 311, 352, 248, - 312, 258, 314, 1086, 318, 446, 1001, 775, 892, 330, - 331, 447, 330, 347, 737, 348, 810, 345, 330, 679, - 991, 472, 817, 725, 330, 313, 1236, 330, 330, 349, - 412, 516, 622, 367, 622, 413, 348, 414, 864, 635, - 435, 330, 194, 415, 416, 345, 115, 46, 846, 345, - 349, 345, 345, 345, 345, 451, 732, 451, 780, 345, - 1237, 249, 732, 194, 867, 1238, 470, 262, 46, 1236, - 633, 323, 847, 330, 702, 46, 736, 323, 257, 845, - 492, 245, 634, 1294, 1054, 246, 94, 580, 897, 622, - 249, 46, 389, 390, 633, 535, 734, 581, 260, 848, - 781, 727, 868, 1237, 46, 729, 634, 648, 1238, 46, - 250, 732, 451, 115, 46, 1031, 46, 46, 46, 46, - 911, 633, 46, 1239, 46, 661, 323, 94, 46, 194, - 892, 1240, 1295, 634, 891, 247, 472, 714, 115, 250, - 46, 472, 258, 46, 903, 46, 904, 347, 1217, 1233, - 1241, 1315, 194, 661, 906, 830, 776, 905, 249, 937, - 362, 810, 661, 348, 1328, 522, 1239, 194, 1217, 46, - 348, 194, 910, 312, 1240, 295, 367, 789, 1051, 363, - 364, 591, 744, 1346, 349, 521, 591, 918, 652, 734, - 347, 556, 1233, 1241, 1217, 635, 573, 831, 522, 365, - 635, 1105, 810, 810, 635, 330, 1051, 250, 960, 1141, - 366, 330, 825, 348, 431, 523, 510, 330, 1258, 635, - 598, 330, 598, 556, 347, 194, 329, 349, 999, 526, - 1002, 986, 667, 957, 330, 488, 1004, 348, 1135, 315, - 347, 401, 995, 194, 194, 949, 635, 348, 358, 968, - 982, 791, 358, 402, 358, 556, 680, 985, 1031, 357, - 1013, 1084, 582, 348, 359, 635, 330, 993, 433, 734, - 893, 115, 583, 115, 1167, 398, 1411, 315, 564, 573, - 855, 315, 472, 315, 573, 565, 573, 573, 573, 573, - 573, 573, 573, 573, 573, 573, 573, 566, 1040, 564, - 433, 63, 63, 434, 598, 63, 565, 194, 573, 810, - 573, 810, 573, 810, 573, 573, 573, 115, 566, 397, - 115, 615, 616, 826, 225, 573, 226, 1030, 44, 194, - 573, 391, 392, 447, 370, 827, 667, 194, 1464, 113, - 573, 573, 1035, 1281, 399, 393, 394, 1251, 1149, 1096, - 1281, 316, 433, 573, 1037, 824, 1038, 316, 1039, 734, - 923, 1097, 492, 94, 317, 923, 400, 923, 94, 573, - 923, 923, 1284, 923, 923, 1484, 403, 1334, 717, 94, - 335, 113, 718, 516, 335, 113, 330, 113, 1191, 113, - 1502, 1503, 296, 657, 113, 923, 776, 439, 266, 810, - 698, 810, 657, 1080, 726, 656, 917, 266, 503, 326, - 326, 917, 746, 917, 656, 330, 917, 917, 330, 917, - 917, 24, 276, 25, 276, 472, 26, 435, 335, 276, - 326, 27, 1089, 335, 763, 28, 763, 335, 763, 330, - 335, 742, 335, 488, 30, 64, 295, 335, 296, 64, - 923, 32, 619, 620, 621, 622, 33, 1113, 734, 776, - 34, 323, 345, 442, 323, 810, 345, 225, 330, 345, - 1030, 345, 36, 225, 37, 228, 345, 488, 38, 113, - 488, 335, 468, 233, 1125, 1152, 39, 40, 432, 469, - 41, 555, 557, 747, 348, 439, 917, 810, 960, 752, - 1011, 752, 804, 752, 1148, 330, 330, 233, 330, 330, - 55, 1326, 1087, 412, 1088, 194, 488, 332, 413, 290, - 414, 326, 326, 555, 557, 1326, 415, 416, 810, 1080, - 165, 177, 165, 177, 165, 177, 512, 742, 1152, 742, - 926, 490, 1356, 115, 1357, 926, 959, 926, 959, 491, - 926, 926, 359, 926, 926, 555, 557, 1216, 1232, 919, - 517, 382, 383, 384, 919, 754, 919, 754, 194, 919, - 919, 810, 919, 919, 320, 926, 153, 1216, 153, 160, - 161, 160, 161, 326, 1265, 194, 870, 810, 870, 488, - 1212, 66, 183, 66, 183, 154, 330, 154, 118, 520, - 118, 1232, 281, 1216, 281, 932, 933, 113, 335, 326, - 1117, 1118, 338, 339, 340, 341, 342, 343, 344, 345, - 125, 326, 125, 288, 913, 288, 1474, 1475, 326, 913, - 926, 913, 892, 892, 913, 913, 113, 913, 913, 536, - 194, 194, 541, 1286, 549, 1212, 518, 518, 194, 919, - 635, 635, 1130, 1131, 617, 618, 194, 194, 113, 194, - 575, 1289, 1290, 576, 115, 1306, 623, 624, 115, 27, - 326, 115, 348, 326, 662, 584, 685, 1306, 352, 194, - 715, 647, 194, 682, 1318, 687, 709, 1321, 716, 738, - 1306, 755, 27, 762, 1335, 764, 115, 765, 766, 767, - 115, 785, 784, 799, 800, 27, 575, 326, 326, 1306, - 27, 787, 804, 812, 913, 27, 805, 27, 27, 27, - 27, 1391, 814, 27, 816, 27, 822, 834, 835, 27, - 433, 837, 115, 838, 841, 326, 326, 858, 1418, 42, - 859, 27, 860, 853, 27, 499, 27, 861, 865, 866, - 886, 1430, 1432, 196, 882, 734, 887, 1286, 889, 898, - 894, 899, 115, 913, 907, 928, 930, 488, 923, 934, - 27, 938, 944, 948, 945, 950, 27, 27, 1418, 1418, - 953, 947, 955, 961, 1440, 973, 974, 983, 977, 575, - 990, 506, 1009, 997, 575, 1008, 575, 575, 575, 575, - 575, 575, 575, 575, 575, 575, 575, 1014, 113, 1024, - 1041, 1033, 1047, 1049, 1058, 335, 1048, 734, 575, 1056, - 575, 1075, 575, 1068, 575, 575, 575, 1072, 1078, 1083, - 1091, 472, 472, 1076, 1095, 1418, 494, 1098, 1099, 330, - 575, 330, 494, 1100, 544, 1101, 1103, 1106, 326, 1116, - 575, 575, 330, 1121, 734, 1128, 1119, 1133, 330, 1139, - 330, 330, 1141, 575, 1489, 1489, 1144, 1173, 1176, 1151, - 326, 1498, 1498, 1180, 1161, 113, 591, 591, 1178, 575, - 330, 1187, 1181, 1182, 1190, 544, 1191, 1198, 330, 1195, - 1199, 330, 326, 1203, 330, 1200, 1247, 610, 611, 612, - 113, 1207, 544, 544, 544, 544, 544, 544, 544, 544, - 544, 544, 544, 544, 544, 544, 544, 544, 1201, 1250, - 1252, 1253, 1255, 1262, 1267, 1288, 1296, 1309, 1330, 1313, - 842, 1314, 1323, 1324, 1327, 330, 1331, 1340, 1342, 1345, - 330, 1343, 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 1347, 1333, 1349, 1351, 1354, 330, - 1364, 1353, 1367, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 1359, 330, 330, 1370, 326, 330, 330, - 330, 330, 330, 1371, 1372, 330, 330, 1374, 1382, 1383, - 330, 330, 330, 330, 330, 330, 330, 330, 326, 1386, - 1396, 499, 1401, 1403, 1412, 1415, 499, 499, 1413, 330, - 1416, 1422, 330, 1425, 330, 1426, 330, 1436, 1437, 330, - 1439, 544, 355, 1442, 1441, 330, 1444, 1450, 1456, 499, - 1457, 1461, 1465, 113, 1466, 113, 1476, 1468, 1460, 1459, - 1482, 1483, 499, 499, 1504, 1505, 1506, 499, 9, 955, - 499, 531, 499, 840, 499, 499, 499, 499, 489, 599, - 947, 807, 499, 490, 326, 446, 499, 668, 600, 29, - 499, 21, 514, 811, 488, 29, 308, 746, 499, 113, - 30, 499, 113, 499, 499, 204, 30, 326, 756, 499, - 786, 499, 499, 499, 499, 499, 499, 499, 499, 499, - 499, 499, 326, 848, 94, 747, 326, 499, 499, 757, - 748, 812, 499, 499, 749, 499, 499, 499, 499, 499, - 499, 499, 780, 499, 499, 781, 499, 499, 499, 499, - 499, 499, 499, 499, 499, 499, 656, 499, 499, 499, - 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, - 499, 499, 499, 499, 499, 499, 499, 499, 499, 814, - 312, 499, 816, 499, 678, 499, 337, 656, 499, 121, - 330, 103, 635, 635, 499, 34, 284, 128, 326, 326, - 122, 104, 285, 129, 230, 53, 842, 842, 234, 21, - 1025, 1123, 1124, 1264, 842, 842, 842, 842, 842, 1458, - 842, 842, 943, 842, 842, 842, 842, 842, 842, 842, - 842, 1256, 1427, 1467, 843, 842, 1443, 842, 842, 842, - 842, 842, 842, 1414, 1303, 842, 970, 1409, 971, 842, - 842, 856, 842, 842, 842, 972, 966, 1316, 1500, 1337, - 1263, 1260, 326, 1492, 842, 1433, 842, 1431, 842, 842, - 1438, 1358, 842, 1196, 842, 842, 842, 842, 842, 842, - 842, 842, 842, 842, 842, 842, 1307, 842, 1491, 752, - 842, 842, 326, 939, 842, 842, 989, 874, 355, 1197, - 917, 586, 798, 1059, 355, 915, 298, 852, 872, 842, - 842, 842, 842, 842, 547, 625, 627, 842, 842, 626, - 628, 842, 1184, 629, 769, 113, 842, 842, 842, 842, - 842, 630, 495, 1268, 842, 409, 842, 409, 495, 1188, - 355, 1140, 842, 842, 405, 1053, 912, 1109, 1102, 1114, - 1107, 774, 1170, 745, 1042, 645, 409, 409, 1266, 1071, - 1175, 941, 1006, 0, 0, 0, 0, 842, 842, 842, - 842, 940, 842, 0, 0, 0, 409, 0, 0, 842, - 0, 355, 0, 0, 409, 0, 355, 409, 355, 355, - 355, 355, 355, 355, 355, 355, 355, 355, 355, 0, - 0, 0, 0, 0, 0, 355, 0, 0, 0, 355, - 355, 0, 355, 355, 355, 544, 355, 355, 355, 0, - 355, 355, 0, 0, 355, 355, 355, 355, 0, 0, - 0, 355, 355, 0, 0, 0, 355, 355, 355, 355, - 355, 355, 355, 355, 0, 0, 113, 0, 0, 0, - 113, 0, 34, 113, 0, 355, 34, 0, 355, 0, - 355, 0, 0, 0, 0, 0, 0, 34, 0, 0, - 326, 355, 34, 0, 0, 0, 34, 330, 113, 34, - 0, 0, 113, 0, 0, 0, 579, 0, 0, 0, - 0, 34, 34, 0, 0, 0, 34, 34, 0, 0, - 0, 0, 34, 0, 34, 34, 34, 34, 0, 0, - 0, 0, 34, 0, 113, 0, 34, 0, 34, 0, - 0, 0, 0, 326, 371, 0, 0, 0, 34, 0, - 34, 34, 0, 34, 0, 0, 0, 34, 0, 0, - 326, 0, 0, 0, 113, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 0, 0, 34, 0, 0, - 0, 0, 0, 34, 34, 0, 0, 0, 0, 579, - 0, 0, 0, 0, 579, 0, 579, 579, 579, 579, - 579, 579, 579, 579, 579, 579, 579, 0, 0, 0, - 0, 0, 0, 0, 0, 326, 326, 0, 579, 0, - 579, 0, 579, 326, 579, 579, 579, 774, 774, 0, - 0, 326, 326, 0, 326, 774, 774, 774, 774, 774, - 579, 774, 774, 733, 774, 774, 774, 774, 774, 774, - 774, 0, 0, 0, 326, 0, 774, 326, 774, 774, - 774, 774, 774, 774, 0, 0, 774, 0, 0, 0, - 774, 774, 0, 774, 774, 774, 0, 0, 0, 579, - 0, 0, 0, 0, 0, 774, 0, 774, 0, 774, - 774, 0, 0, 774, 0, 774, 774, 774, 774, 774, - 774, 774, 774, 774, 774, 774, 774, 0, 774, 0, - 0, 774, 774, 0, 0, 774, 774, 0, 0, 0, + 18, 514, 189, 111, 468, 733, 517, 323, 328, 233, + 429, 447, 234, 738, 682, 704, 428, 533, 192, 43, + 490, 472, 155, 510, 156, 777, 257, 1014, 353, 571, + 871, 404, 872, 259, 544, 1134, 557, 308, 572, 498, + 316, 890, 229, 910, 251, 773, 1258, 942, 1167, 1168, + 790, 539, 785, 709, 360, 302, 368, 14, 411, 302, + 190, 362, 1062, 675, 1266, 309, 789, 311, 1045, 361, + 292, 369, 1194, 411, 1063, 665, 902, 337, 1063, 904, + 1047, 160, 1324, 258, 1017, 47, 360, 1005, 288, 322, + 327, 1210, 1238, 161, 334, 1195, 289, 47, 443, 1320, + 625, 666, 625, 115, 20, 162, 1162, 163, 16, 314, + 808, 348, 1333, 1128, 559, 164, 165, 258, 523, 436, + 437, 258, 258, 258, 258, 258, 258, 258, 258, 166, + 2, 1351, 346, 667, 634, 746, 782, 1238, 834, 109, + 472, 412, 432, 111, 167, 115, 413, 233, 414, 115, + 430, 168, 169, 170, 415, 416, 412, 625, 712, 47, + 290, 413, 155, 414, 156, 714, 789, 1451, 362, 415, + 416, 560, 194, 1007, 406, 362, 6, 362, 783, 362, + 347, 478, 1315, 290, 652, 1365, 1316, 1337, 1217, 1163, + 446, 42, 1071, 430, 1072, 741, 881, 360, 196, 360, + 468, 360, 360, 348, 360, 1, 360, 488, 447, 47, + 1017, 1343, 727, 731, 752, 291, 873, 349, 438, 15, + 789, 160, 191, 362, 1433, 676, 519, 571, 1064, 471, + 1046, 417, 1064, 161, 476, 809, 572, 668, 291, 194, + 194, 444, 1048, 115, 1325, 162, 427, 163, 360, 473, + 360, 1457, 257, 360, 557, 164, 165, 20, 572, 486, + 194, 477, 257, 1467, 1395, 1468, 796, 540, 563, 166, + 489, 432, 758, 532, 713, 493, 495, 536, 332, 557, + 1338, 715, 541, 1076, 167, 690, 1452, 885, 531, 520, + 911, 168, 169, 170, 528, 316, 530, 231, 979, 529, + 493, 231, 1059, 432, 942, 614, 615, 2, 580, 258, + 1366, 742, 546, 547, 882, 578, 1501, 581, 678, 258, + 389, 390, 679, 885, 258, 538, 48, 582, 1429, 1087, + 543, 937, 938, 637, 639, 657, 835, 302, 761, 969, + 977, 556, 54, 558, 572, 47, 1114, 942, 471, 592, + 1353, 194, 194, 600, 601, 602, 603, 604, 605, 606, + 607, 608, 609, 610, 290, 752, 658, 348, 473, 473, + 691, 115, 1478, 3, 4, 5, 6, 231, 1383, 1384, + 797, 1386, 1298, 680, 686, 632, 649, 233, 759, 998, + 430, 409, 1405, 506, 258, 1412, 983, 653, 231, 864, + 115, 886, 1498, 1422, 346, 887, 258, 258, 258, 231, + 1428, 258, 258, 194, 481, 636, 638, 640, 657, 291, + 333, 683, 115, 1140, 468, 290, 225, 94, 226, 647, + 1145, 650, 651, 6, 1450, 986, 1502, 663, 1018, 194, + 1020, 887, 1022, 669, 410, 1464, 657, 385, 638, 658, + 348, 194, 347, 638, 762, 1170, 978, 638, 194, 942, + 472, 703, 498, 249, 571, 942, 699, 354, 735, 740, + 642, 643, 638, 572, 735, 348, 355, 658, 348, 1052, + 291, 774, 348, 386, 348, 348, 348, 348, 701, 349, + 710, 729, 348, 592, 483, 736, 638, 1465, 482, 638, + 194, 878, 484, 194, 507, 1143, 508, 681, 249, 743, + 745, 262, 250, 473, 1263, 355, 231, 740, 638, 763, + 432, 1250, 355, 735, 765, 750, 896, 896, 1079, 751, + 1081, 346, 792, 760, 794, 967, 795, 194, 194, 803, + 895, 895, 775, 346, 199, 572, 739, 778, 638, 437, + 644, 454, 290, 454, 411, 485, 290, 250, 962, 556, + 509, 558, 879, 387, 388, 194, 194, 1474, 681, 877, + 798, 798, 784, 115, 682, 1475, 356, 449, 740, 347, + 918, 1088, 438, 194, 556, 1239, 558, 727, 1459, 1460, + 450, 347, 433, 728, 1122, 434, 804, 194, 326, 827, + 258, 883, 348, 1296, 326, 200, 896, 898, 454, 333, + 437, 1003, 993, 777, 348, 333, 349, 812, 245, 432, + 895, 333, 246, 819, 333, 333, 1147, 94, 349, 517, + 1239, 249, 1240, 1241, 449, 682, 1476, 412, 333, 815, + 115, 817, 413, 438, 414, 1492, 1299, 450, 728, 926, + 415, 416, 1297, 326, 926, 197, 926, 1176, 869, 926, + 926, 971, 926, 926, 893, 115, 638, 704, 471, 848, + 333, 638, 247, 739, 1242, 638, 94, 1240, 1241, 753, + 250, 1056, 493, 636, 926, 257, 197, 907, 473, 231, + 638, 433, 847, 849, 826, 1300, 870, 731, 736, 748, + 1206, 194, 912, 729, 716, 866, 536, 636, 24, 637, + 25, 832, 333, 26, 347, 348, 1253, 638, 27, 1242, + 850, 1033, 28, 194, 333, 358, 503, 333, 333, 791, + 504, 30, 894, 637, 636, 583, 638, 348, 32, 926, + 1243, 333, 258, 33, 664, 584, 905, 34, 906, 1244, + 244, 349, 1245, 833, 315, 899, 908, 929, 778, 36, + 637, 37, 929, 812, 929, 38, 401, 929, 929, 315, + 929, 929, 664, 39, 40, 347, 739, 41, 402, 970, + 749, 664, 988, 592, 347, 1243, 358, 913, 592, 920, + 653, 736, 929, 997, 1244, 1107, 248, 1245, 348, 115, + 962, 115, 359, 473, 812, 812, 290, 348, 473, 194, + 557, 920, 349, 431, 348, 315, 920, 828, 920, 1220, + 1237, 920, 920, 347, 920, 920, 939, 338, 793, 829, + 194, 338, 1137, 333, 115, 959, 115, 489, 669, 1098, + 1220, 115, 557, 522, 260, 115, 348, 929, 115, 649, + 329, 1099, 984, 1086, 358, 44, 523, 682, 951, 987, + 357, 320, 1053, 358, 1033, 1237, 113, 1220, 1169, 995, + 433, 736, 1037, 524, 557, 338, 397, 685, 1416, 895, + 261, 686, 94, 315, 285, 286, 287, 370, 293, 294, + 1053, 1289, 315, 306, 307, 1001, 194, 1004, 565, 851, + 312, 920, 314, 1006, 318, 566, 852, 94, 113, 330, + 331, 812, 113, 812, 338, 812, 1339, 567, 338, 194, + 333, 338, 333, 338, 565, 333, 857, 1015, 338, 1032, + 447, 566, 398, 367, 194, 94, 326, 326, 194, 399, + 1469, 1255, 669, 567, 1193, 1286, 319, 660, 1151, 473, + 400, 268, 319, 1286, 827, 326, 660, 326, 326, 320, + 268, 736, 338, 659, 493, 1042, 403, 1039, 922, 1040, + 599, 1041, 659, 922, 296, 922, 719, 1489, 922, 922, + 720, 922, 922, 435, 517, 391, 392, 616, 617, 468, + 225, 728, 194, 1507, 1508, 504, 395, 396, 778, 393, + 394, 812, 333, 812, 439, 1082, 113, 469, 333, 65, + 194, 194, 442, 65, 333, 470, 335, 601, 333, 601, + 338, 339, 340, 341, 342, 343, 344, 345, 491, 916, + 1091, 333, 332, 225, 916, 228, 916, 64, 64, 916, + 916, 64, 916, 916, 278, 489, 278, 492, 326, 326, + 513, 278, 333, 333, 359, 333, 333, 56, 922, 1115, + 736, 778, 249, 333, 362, 518, 766, 812, 766, 521, + 766, 115, 1032, 312, 194, 1127, 367, 537, 295, 489, + 296, 542, 489, 363, 364, 233, 550, 1154, 430, 382, + 383, 384, 473, 962, 576, 1013, 194, 806, 1089, 812, + 1090, 577, 497, 365, 194, 333, 1150, 333, 497, 233, + 326, 250, 430, 348, 366, 556, 511, 558, 489, 916, + 1214, 755, 745, 755, 745, 755, 333, 333, 412, 527, + 812, 1082, 585, 413, 113, 414, 326, 962, 352, 962, + 1154, 415, 416, 757, 664, 757, 333, 556, 326, 558, + 620, 621, 622, 623, 333, 326, 155, 333, 155, 1218, + 1236, 711, 1219, 113, 167, 27, 167, 179, 167, 179, + 162, 179, 162, 812, 163, 648, 163, 1214, 684, 556, + 1218, 558, 873, 1219, 873, 113, 467, 231, 27, 812, + 717, 489, 115, 687, 1294, 1295, 115, 326, 689, 115, + 326, 27, 67, 718, 67, 1236, 27, 1218, 934, 935, + 1219, 27, 740, 27, 27, 27, 27, 1323, 757, 27, + 1326, 27, 764, 335, 115, 27, 766, 185, 115, 185, + 1119, 1120, 348, 432, 326, 326, 348, 27, 333, 348, + 27, 348, 27, 156, 767, 156, 348, 789, 1291, 120, + 768, 120, 545, 1270, 769, 283, 1331, 283, 786, 127, + 115, 127, 326, 326, 787, 290, 27, 290, 1259, 231, + 1331, 802, 27, 27, 502, 348, 439, 1479, 1480, 895, + 895, 801, 194, 521, 521, 638, 638, 1361, 806, 1362, + 115, 1132, 1133, 545, 618, 619, 624, 625, 814, 1340, + 807, 700, 816, 818, 824, 611, 612, 613, 836, 837, + 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, + 545, 545, 545, 545, 545, 545, 1396, 433, 839, 840, + 843, 855, 860, 42, 867, 194, 113, 861, 862, 863, + 868, 498, 744, 1423, 412, 196, 412, 498, 888, 884, + 891, 889, 194, 900, 896, 901, 1435, 1437, 909, 915, + 736, 925, 1291, 930, 932, 412, 412, 936, 946, 940, + 947, 952, 489, 950, 949, 955, 326, 957, 975, 963, + 976, 979, 985, 1423, 1423, 412, 992, 507, 1011, 1445, + 999, 1010, 1035, 412, 1016, 569, 412, 1026, 326, 1043, + 1049, 1051, 1050, 113, 1058, 1060, 1070, 1077, 1074, 194, + 194, 1078, 1080, 1085, 1093, 1101, 1102, 1105, 194, 1097, + 326, 1100, 736, 1103, 1108, 1118, 194, 194, 113, 194, + 545, 1121, 1153, 1123, 1130, 1311, 1135, 1146, 1143, 1141, + 1423, 1175, 1178, 1163, 1192, 1189, 1182, 1311, 1197, 194, + 1183, 1180, 194, 1193, 1200, 1184, 1201, 1202, 1203, 736, + 1311, 1251, 845, 1205, 1209, 1256, 1260, 1267, 1254, 1494, + 1494, 1257, 1272, 1301, 1293, 1314, 1503, 1503, 569, 1311, + 1329, 592, 592, 569, 1332, 569, 569, 569, 569, 569, + 569, 569, 569, 569, 569, 569, 1335, 1347, 1345, 788, + 1318, 473, 473, 1319, 1328, 1336, 326, 569, 1348, 569, + 1354, 569, 1350, 569, 569, 569, 1352, 1356, 1358, 1338, + 1359, 371, 1364, 569, 569, 1372, 1375, 326, 569, 569, + 502, 1369, 1379, 1376, 1377, 502, 502, 569, 569, 569, + 569, 1387, 372, 373, 374, 375, 376, 377, 378, 379, + 380, 381, 569, 333, 1388, 1406, 1391, 1401, 502, 1408, + 1417, 1420, 113, 1418, 113, 1421, 1427, 1430, 569, 1455, + 1431, 502, 502, 1442, 1444, 1441, 502, 1447, 1449, 502, + 1461, 502, 1446, 502, 502, 502, 502, 1462, 1466, 1470, + 1473, 502, 1471, 326, 1481, 502, 1465, 1464, 1487, 502, + 1488, 1509, 1510, 1511, 9, 958, 534, 502, 113, 492, + 502, 113, 502, 502, 843, 602, 326, 950, 502, 493, + 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, + 502, 326, 810, 449, 603, 326, 502, 502, 29, 671, + 21, 502, 502, 814, 502, 502, 502, 502, 502, 502, + 502, 491, 502, 502, 29, 502, 502, 502, 502, 502, + 502, 502, 502, 502, 502, 517, 502, 502, 502, 502, + 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, + 502, 502, 502, 502, 502, 502, 502, 502, 749, 30, + 502, 311, 502, 206, 502, 96, 759, 502, 30, 851, + 751, 750, 760, 502, 783, 815, 784, 326, 326, 752, + 659, 817, 315, 819, 681, 340, 659, 638, 845, 845, + 333, 123, 638, 230, 34, 105, 845, 845, 845, 845, + 845, 286, 845, 845, 130, 845, 845, 845, 845, 845, + 845, 845, 845, 124, 106, 287, 131, 845, 53, 845, + 845, 845, 845, 845, 845, 21, 1027, 845, 945, 1125, + 1269, 845, 845, 1126, 845, 845, 845, 1261, 1463, 1432, + 1472, 326, 1419, 1448, 1414, 1321, 845, 1308, 845, 1505, + 845, 845, 1268, 1342, 845, 845, 845, 845, 845, 845, + 845, 845, 845, 845, 845, 845, 845, 845, 972, 845, + 973, 326, 845, 845, 974, 545, 845, 845, 858, 333, + 1265, 1497, 1443, 1438, 1436, 333, 968, 1496, 1198, 1363, + 1312, 845, 845, 845, 845, 845, 941, 754, 991, 845, + 845, 1199, 876, 845, 113, 919, 800, 587, 845, 845, + 845, 845, 845, 917, 1061, 298, 845, 548, 845, 854, + 626, 333, 874, 627, 845, 845, 628, 630, 629, 771, + 1186, 914, 631, 777, 1273, 405, 1190, 1055, 1142, 1104, + 1116, 1073, 1044, 1109, 1111, 1172, 747, 1008, 1271, 845, + 845, 845, 845, 942, 845, 646, 1177, 943, 0, 0, + 0, 845, 333, 0, 0, 0, 0, 333, 0, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 0, 0, 0, 0, 0, 333, 0, 0, 0, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 0, 333, 333, 0, 0, 333, 333, 333, 333, 333, + 0, 0, 333, 333, 0, 0, 0, 333, 333, 333, + 333, 333, 333, 333, 333, 113, 0, 0, 0, 113, + 0, 0, 113, 0, 0, 0, 333, 0, 0, 333, + 0, 333, 0, 333, 0, 0, 333, 0, 0, 326, + 0, 34, 333, 0, 582, 34, 0, 113, 0, 333, + 0, 113, 0, 0, 0, 0, 34, 0, 0, 0, + 0, 34, 0, 0, 0, 34, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 774, 774, 774, 774, 774, 0, 0, 0, 774, 774, - 0, 0, 774, 0, 0, 0, 0, 774, 774, 774, - 774, 774, 0, 330, 0, 774, 0, 774, 330, 330, - 0, 0, 0, 774, 774, 0, 0, 0, 0, 0, - 0, 0, 0, 323, 0, 0, 0, 0, 0, 0, - 0, 330, 0, 0, 0, 0, 0, 0, 774, 774, - 774, 774, 0, 774, 330, 330, 0, 0, 0, 330, - 774, 0, 330, 0, 330, 0, 330, 330, 330, 330, - 0, 0, 0, 0, 330, 0, 0, 0, 330, 0, - 0, 0, 330, 0, 0, 0, 0, 0, 0, 0, - 330, 0, 0, 330, 0, 330, 330, 0, 0, 0, - 0, 330, 0, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 0, 0, 0, 0, 330, - 330, 0, 0, 0, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 0, 330, 330, 0, 0, 330, - 330, 330, 330, 330, 0, 0, 330, 330, 0, 0, - 0, 330, 330, 330, 330, 330, 330, 330, 330, 733, - 0, 0, 0, 360, 733, 733, 0, 0, 0, 0, - 330, 0, 0, 330, 0, 330, 0, 330, 0, 0, - 330, 0, 0, 0, 0, 0, 330, 733, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 733, 733, 0, 0, 0, 733, 0, 0, 733, 0, - 733, 0, 733, 733, 733, 733, 0, 0, 0, 0, - 733, 0, 0, 0, 733, 0, 0, 0, 733, 0, - 0, 0, 0, 0, 0, 0, 733, 0, 0, 733, - 0, 733, 733, 0, 0, 0, 0, 733, 0, 733, - 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, - 0, 0, 0, 0, 0, 733, 733, 0, 0, 0, - 733, 733, 733, 733, 733, 733, 0, 733, 733, 733, - 0, 733, 733, 0, 0, 733, 733, 733, 733, 323, - 0, 0, 733, 733, 323, 323, 0, 733, 733, 733, - 733, 733, 733, 733, 733, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 733, 323, 0, 733, - 0, 733, 0, 733, 0, 0, 733, 0, 47, 0, - 323, 323, 733, 0, 0, 323, 0, 0, 323, 0, - 323, 0, 323, 323, 323, 323, 0, 0, 0, 0, - 323, 0, 0, 0, 323, 0, 0, 0, 323, 0, - 0, 0, 0, 0, 0, 0, 323, 0, 0, 323, - 0, 323, 323, 0, 0, 0, 0, 323, 0, 323, - 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, - 0, 0, 0, 0, 0, 323, 323, 0, 0, 0, - 323, 323, 323, 323, 323, 323, 0, 323, 323, 323, - 0, 323, 323, 0, 0, 323, 323, 323, 323, 360, - 0, 0, 323, 323, 360, 360, 0, 323, 323, 323, - 323, 323, 323, 323, 323, 0, 0, 0, 0, 0, - 0, 27, 0, 0, 0, 0, 323, 360, 0, 323, - 0, 323, 0, 323, 0, 0, 323, 0, 0, 0, - 360, 360, 323, 0, 0, 360, 0, 0, 360, 0, - 360, 0, 360, 360, 360, 360, 0, 0, 0, 0, - 360, 0, 0, 0, 360, 0, 0, 0, 360, 0, - 0, 0, 0, 0, 0, 0, 360, 0, 0, 360, - 0, 360, 360, 0, 33, 0, 0, 360, 0, 360, - 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, - 0, 0, 0, 0, 0, 360, 360, 0, 0, 0, - 360, 360, 0, 360, 360, 360, 0, 360, 360, 360, - 0, 360, 360, 0, 0, 360, 360, 360, 360, 0, - 0, 32, 360, 360, 0, 0, 0, 360, 360, 360, - 360, 360, 360, 360, 360, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 360, 0, 0, 360, - 0, 360, 0, 0, 0, 47, 0, 0, 0, 47, - 0, 47, 360, 47, 0, 47, 0, 0, 47, 0, - 47, 47, 0, 47, 0, 47, 0, 47, 0, 47, - 47, 47, 47, 0, 27, 47, 47, 0, 0, 0, - 0, 47, 47, 47, 47, 47, 0, 0, 47, 47, - 47, 0, 47, 0, 47, 47, 47, 47, 47, 47, - 47, 47, 0, 47, 47, 47, 47, 0, 0, 47, - 47, 47, 0, 47, 0, 0, 0, 31, 47, 47, - 0, 47, 47, 0, 47, 47, 47, 0, 0, 0, - 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 34, 34, 0, 113, 0, 34, 34, 0, 0, 0, + 0, 34, 326, 34, 34, 34, 34, 0, 0, 0, + 0, 34, 0, 0, 0, 34, 0, 34, 0, 326, + 0, 0, 0, 113, 0, 0, 0, 34, 0, 34, + 34, 0, 34, 0, 0, 0, 34, 582, 0, 0, + 0, 0, 582, 0, 582, 582, 582, 582, 582, 582, + 582, 582, 582, 582, 582, 0, 34, 0, 0, 0, + 0, 0, 34, 34, 0, 0, 582, 0, 582, 0, + 582, 0, 582, 582, 582, 0, 326, 326, 0, 0, + 0, 0, 0, 0, 0, 326, 0, 0, 582, 777, + 777, 0, 0, 326, 326, 0, 326, 777, 777, 777, + 777, 777, 0, 777, 777, 736, 777, 777, 777, 777, + 777, 777, 777, 0, 0, 0, 326, 0, 777, 326, + 777, 777, 777, 777, 777, 777, 0, 582, 777, 0, + 0, 0, 777, 777, 0, 777, 777, 777, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 777, 0, 777, + 0, 777, 777, 0, 0, 777, 0, 777, 777, 777, + 777, 777, 777, 777, 777, 777, 777, 777, 777, 0, + 777, 0, 0, 777, 777, 0, 0, 777, 777, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 47, 0, 47, 47, 0, 0, 0, 27, 27, 0, - 5, 0, 27, 0, 0, 47, 27, 0, 27, 0, - 0, 27, 0, 27, 27, 0, 27, 0, 27, 0, - 27, 0, 27, 27, 27, 27, 0, 0, 27, 27, - 0, 0, 0, 0, 27, 0, 27, 27, 27, 0, - 0, 27, 27, 27, 0, 27, 47, 0, 27, 0, - 27, 27, 27, 27, 0, 0, 0, 27, 27, 27, - 0, 33, 27, 27, 27, 33, 0, 937, 0, 0, - 0, 27, 27, 0, 27, 27, 33, 27, 27, 27, - 0, 33, 0, 27, 0, 33, 0, 0, 33, 0, + 0, 0, 777, 777, 777, 777, 777, 0, 0, 0, + 777, 777, 0, 0, 777, 0, 0, 0, 0, 777, + 777, 777, 777, 777, 0, 333, 0, 777, 0, 777, + 333, 333, 0, 0, 0, 777, 777, 0, 0, 0, + 0, 0, 0, 0, 0, 326, 0, 0, 0, 0, + 0, 0, 0, 333, 0, 0, 0, 0, 0, 0, + 777, 777, 777, 777, 0, 777, 333, 333, 0, 0, + 0, 333, 777, 0, 333, 0, 333, 0, 333, 333, + 333, 333, 0, 0, 0, 0, 333, 0, 0, 0, + 333, 0, 0, 0, 333, 0, 0, 0, 0, 0, + 0, 0, 333, 0, 0, 333, 0, 333, 333, 0, + 0, 0, 0, 333, 0, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 0, 0, 0, + 0, 333, 333, 0, 0, 0, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 0, 333, 333, 0, + 0, 333, 333, 333, 333, 333, 0, 0, 333, 333, + 0, 0, 0, 333, 333, 333, 333, 333, 333, 333, + 333, 736, 0, 0, 0, 363, 736, 736, 0, 0, + 0, 0, 333, 0, 0, 333, 0, 333, 0, 333, + 0, 0, 333, 0, 0, 0, 0, 0, 333, 736, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 33, 33, 0, 27, 0, 33, 33, 0, 32, 27, - 27, 33, 32, 33, 33, 33, 33, 0, 27, 0, + 0, 0, 736, 736, 0, 0, 0, 736, 0, 0, + 736, 0, 736, 0, 736, 736, 736, 736, 0, 0, + 0, 0, 736, 0, 0, 0, 736, 0, 0, 0, + 736, 0, 0, 0, 0, 0, 0, 0, 736, 0, + 0, 736, 0, 736, 736, 0, 0, 0, 0, 736, + 0, 736, 736, 736, 736, 736, 736, 736, 736, 736, + 736, 736, 0, 0, 0, 0, 0, 736, 736, 358, + 0, 0, 736, 736, 736, 736, 736, 736, 0, 736, + 736, 736, 0, 736, 736, 0, 0, 736, 736, 736, + 736, 326, 0, 0, 736, 736, 326, 326, 0, 736, + 736, 736, 736, 736, 736, 736, 736, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 736, 326, + 0, 736, 0, 736, 0, 736, 0, 0, 736, 0, + 0, 0, 326, 326, 736, 0, 0, 326, 0, 0, + 326, 0, 326, 0, 326, 326, 326, 326, 0, 0, + 0, 0, 326, 0, 0, 0, 326, 0, 0, 0, + 326, 0, 0, 0, 0, 0, 0, 0, 326, 0, + 0, 326, 0, 326, 326, 0, 0, 0, 0, 326, + 0, 326, 326, 326, 326, 326, 326, 326, 326, 326, + 326, 326, 0, 0, 0, 0, 0, 326, 326, 0, + 0, 0, 326, 326, 326, 326, 326, 326, 0, 326, + 326, 326, 0, 326, 326, 0, 0, 326, 326, 326, + 326, 363, 0, 0, 326, 326, 363, 363, 0, 326, + 326, 326, 326, 326, 326, 326, 326, 0, 27, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 326, 363, + 0, 326, 0, 326, 0, 326, 0, 0, 326, 0, + 0, 0, 363, 363, 326, 0, 0, 363, 0, 0, + 363, 0, 363, 0, 363, 363, 363, 363, 0, 0, + 0, 0, 363, 0, 0, 0, 363, 0, 0, 0, + 363, 0, 0, 0, 0, 0, 0, 0, 363, 0, + 0, 363, 0, 363, 363, 0, 0, 0, 0, 363, + 0, 363, 363, 363, 363, 363, 363, 363, 363, 363, + 363, 363, 0, 0, 33, 358, 0, 363, 363, 0, + 0, 358, 363, 363, 0, 363, 363, 363, 0, 363, + 363, 363, 0, 363, 363, 0, 0, 363, 363, 363, + 363, 0, 0, 0, 363, 363, 0, 0, 0, 363, + 363, 363, 363, 363, 363, 363, 363, 358, 0, 0, + 0, 32, 0, 0, 0, 0, 0, 0, 363, 0, + 0, 363, 0, 363, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 363, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 358, 0, + 0, 0, 0, 358, 0, 358, 358, 358, 358, 358, + 358, 358, 358, 358, 358, 358, 0, 0, 0, 0, + 0, 0, 358, 0, 27, 0, 358, 358, 0, 358, + 358, 358, 0, 358, 358, 358, 0, 358, 358, 0, + 0, 358, 358, 358, 358, 0, 0, 0, 358, 358, + 0, 0, 0, 358, 358, 358, 358, 358, 358, 358, + 358, 0, 0, 0, 0, 0, 0, 31, 0, 0, + 0, 0, 358, 0, 0, 358, 0, 358, 0, 0, + 0, 0, 0, 0, 27, 27, 0, 0, 358, 27, + 0, 0, 0, 27, 0, 27, 0, 0, 27, 0, + 27, 27, 0, 27, 0, 27, 0, 27, 0, 27, + 27, 27, 27, 0, 0, 27, 27, 0, 0, 0, + 0, 27, 0, 27, 27, 27, 0, 0, 27, 27, + 27, 0, 27, 0, 0, 27, 0, 27, 27, 27, + 27, 5, 0, 0, 27, 27, 27, 0, 0, 27, + 27, 27, 0, 0, 0, 0, 0, 0, 27, 27, + 0, 27, 27, 0, 27, 27, 27, 0, 0, 0, + 27, 33, 0, 0, 0, 33, 0, 0, 0, 0, + 0, 0, 0, 0, 940, 0, 33, 0, 0, 0, + 27, 33, 0, 0, 0, 33, 27, 27, 33, 0, + 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, + 33, 33, 0, 0, 0, 33, 33, 0, 32, 0, + 0, 33, 32, 33, 33, 33, 33, 47, 0, 0, 0, 33, 0, 32, 0, 33, 0, 33, 32, 0, - 46, 0, 32, 0, 0, 32, 0, 33, 0, 33, + 0, 0, 32, 0, 0, 32, 27, 33, 0, 33, 33, 0, 33, 0, 0, 0, 33, 32, 32, 0, - 0, 0, 32, 32, 0, 0, 0, 0, 32, 27, + 0, 0, 32, 32, 0, 0, 0, 0, 32, 0, 32, 32, 32, 32, 0, 0, 33, 0, 32, 0, - 0, 27, 32, 33, 32, 27, 0, 7, 0, 0, - 0, 0, 0, 0, 32, 0, 27, 32, 0, 32, + 0, 27, 32, 33, 32, 27, 0, 0, 0, 0, + 7, 0, 0, 0, 32, 0, 27, 32, 0, 32, 0, 27, 0, 32, 0, 27, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 27, 0, 32, 31, 27, 27, 0, 31, 32, - 32, 27, 0, 27, 27, 27, 27, 0, 0, 31, + 32, 27, 0, 27, 27, 27, 27, 941, 0, 31, 0, 27, 0, 0, 31, 27, 0, 27, 31, 0, - 938, 31, 0, 0, 0, 0, 0, 27, 0, 0, - 27, 0, 27, 31, 31, 0, 27, 5, 31, 31, - 0, 46, 0, 0, 31, 0, 31, 31, 31, 31, - 0, 0, 46, 0, 31, 0, 27, 46, 31, 0, - 31, 46, 27, 27, 46, 0, 0, 0, 0, 0, - 31, 0, 0, 31, 0, 31, 46, 46, 0, 31, - 0, 46, 46, 0, 0, 0, 0, 46, 0, 46, - 46, 46, 46, 0, 0, 0, 0, 46, 0, 31, - 0, 46, 0, 46, 937, 0, 31, 0, 46, 0, - 0, 0, 0, 46, 0, 0, 46, 0, 46, 46, - 0, 0, 46, 0, 46, 0, 0, 0, 46, 0, - 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 46, 46, 46, 0, 0, 0, 46, 46, - 0, 0, 0, 0, 46, 0, 46, 46, 46, 46, - 0, 0, 0, 0, 46, 0, 0, 46, 46, 0, - 46, 46, 0, 0, 0, 0, 0, 0, 0, 0, - 46, 0, 46, 46, 0, 46, 0, 46, 0, 46, - 0, 46, 0, 0, 46, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 46, 46, 0, 46, - 0, 46, 46, 0, 7, 0, 0, 46, 47, 46, - 46, 46, 46, 0, 0, 0, 0, 46, 0, 47, - 0, 46, 0, 46, 47, 0, 0, 0, 47, 0, - 0, 47, 0, 46, 0, 0, 46, 0, 46, 0, - 0, 0, 46, 47, 47, 0, 0, 0, 47, 47, + 0, 31, 0, 0, 0, 0, 0, 27, 0, 0, + 27, 0, 27, 31, 31, 0, 27, 0, 31, 31, + 0, 0, 0, 0, 31, 0, 31, 31, 31, 31, + 0, 0, 0, 0, 31, 0, 27, 0, 31, 0, + 31, 0, 27, 27, 0, 0, 0, 0, 5, 0, + 31, 0, 47, 31, 48, 31, 0, 0, 0, 31, + 0, 0, 0, 47, 0, 0, 0, 0, 47, 0, + 0, 0, 47, 0, 0, 47, 0, 0, 0, 31, + 0, 0, 0, 0, 0, 0, 31, 47, 47, 0, + 0, 940, 47, 47, 0, 47, 0, 0, 47, 0, + 47, 47, 47, 47, 0, 0, 47, 0, 47, 0, + 0, 47, 47, 0, 47, 47, 0, 0, 47, 0, + 0, 0, 0, 0, 47, 0, 0, 47, 0, 47, + 47, 47, 0, 47, 47, 47, 47, 0, 47, 0, + 0, 47, 0, 47, 47, 47, 47, 0, 0, 47, + 0, 47, 0, 47, 47, 47, 0, 47, 47, 0, + 0, 47, 0, 0, 0, 0, 0, 47, 0, 0, + 47, 0, 47, 47, 47, 0, 47, 0, 47, 47, 0, 0, 0, 0, 47, 0, 47, 47, 47, 47, - 0, 0, 46, 0, 47, 0, 0, 938, 47, 0, - 47, 46, 0, 0, 0, 0, 0, 0, 0, 0, - 47, 0, 46, 47, 0, 47, 0, 46, 0, 47, - 0, 46, 0, 0, 46, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 46, 46, 0, 47, - 0, 46, 46, 0, 0, 0, 0, 46, 0, 46, - 46, 46, 46, 0, 0, 0, 0, 46, 0, 0, - 0, 46, 0, 46, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 46, 0, 55, 46, 0, 46, 0, - 0, 0, 46, 56, 24, 57, 25, 0, 0, 26, - 58, 0, 59, 60, 27, 61, 62, 63, 28, 0, - 0, 0, 46, 0, 64, 0, 65, 30, 66, 67, - 68, 69, 0, 0, 32, 0, 0, 0, 70, 33, - 0, 71, 72, 34, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 73, 0, 36, 0, 37, 74, 0, - 0, 38, 0, 75, 76, 77, 78, 79, 80, 39, - 40, 81, 82, 41, 83, 0, 84, 0, 0, 85, - 86, 0, 330, 87, 88, 0, 0, 0, 330, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 89, 90, - 91, 92, 93, 0, 0, 0, 94, 0, 0, 0, - 95, 0, 0, 0, 0, 96, 97, 98, 99, 100, - 0, 0, 0, 101, 330, 102, 0, 0, 0, 0, - 0, 103, 104, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 330, 0, - 0, 0, 0, 0, 330, 0, 105, 106, 107, 108, - 0, 0, 0, 0, 0, 330, 0, 0, 196, 0, - 330, 0, 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 0, 0, 0, 0, 0, 330, - 330, 0, 0, 0, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 0, 330, 330, 0, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 0, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, - 0, 501, 0, 0, 330, 0, 330, 501, 0, 330, - 0, 0, 0, 0, 0, 330, 0, 0, 0, 0, - 330, 0, 0, 330, 0, 330, 330, 0, 0, 0, - 330, 330, 0, 0, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 501, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 330, 330, 0, 0, 0, 0, - 0, 0, 330, 0, 0, 330, 0, 0, 0, 0, - 0, 330, 0, 201, 501, 0, 0, 0, 0, 501, - 0, 501, 501, 501, 501, 501, 501, 501, 501, 501, - 501, 501, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 501, 501, 501, 501, 501, 501, 501, 501, - 501, 501, 581, 501, 501, 202, 501, 501, 501, 501, - 501, 501, 501, 501, 501, 501, 0, 501, 501, 501, - 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, - 501, 501, 501, 501, 501, 501, 501, 501, 501, 0, - 497, 0, 0, 0, 0, 501, 497, 0, 0, 0, - 0, 0, 0, 0, 501, 203, 204, 205, 206, 0, - 207, 208, 209, 210, 211, 212, 213, 214, 0, 0, - 215, 216, 217, 218, 219, 220, 221, 222, 0, 0, - 0, 0, 497, 0, 0, 581, 0, 0, 0, 0, - 581, 0, 581, 581, 581, 581, 581, 581, 581, 581, - 581, 581, 581, 0, 0, 0, 0, 0, 0, 0, - 0, 387, 0, 0, 581, 0, 581, 387, 581, 0, - 581, 581, 581, 497, 0, 0, 0, 0, 497, 0, - 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, - 497, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 497, 497, 387, 497, 497, 497, 497, 497, 497, - 497, 0, 497, 497, 0, 497, 497, 497, 497, 497, - 497, 497, 497, 497, 497, 581, 497, 497, 497, 497, - 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, - 497, 497, 497, 497, 497, 497, 497, 497, 0, 505, - 0, 0, 0, 0, 497, 505, 0, 497, 0, 0, - 0, 0, 0, 497, 0, 0, 0, 0, 323, 0, - 0, 0, 0, 387, 323, 0, 387, 387, 387, 387, - 0, 387, 0, 387, 387, 0, 387, 387, 387, 387, - 387, 505, 387, 387, 387, 387, 0, 387, 387, 387, - 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, - 387, 387, 387, 387, 387, 387, 387, 387, 387, 0, - 0, 0, 0, 323, 0, 387, 0, 0, 387, 0, - 0, 0, 505, 0, 387, 0, 0, 505, 0, 505, - 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 505, 0, 505, 505, 505, 505, 505, 505, 505, - 929, 505, 505, 0, 505, 505, 505, 505, 505, 505, - 505, 505, 505, 505, 0, 505, 505, 505, 505, 505, - 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, - 505, 505, 505, 505, 505, 505, 505, 0, 330, 0, - 0, 0, 0, 505, 330, 0, 505, 0, 0, 0, - 0, 0, 505, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 330, 0, 0, 929, 0, 0, 0, 0, 929, 0, - 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 929, 0, 929, 0, 929, 0, 929, 929, - 929, 330, 0, 0, 0, 0, 330, 0, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, 330, 0, + 0, 0, 0, 0, 47, 0, 47, 7, 47, 0, + 47, 48, 0, 0, 0, 0, 0, 0, 0, 0, + 47, 0, 48, 47, 0, 47, 0, 48, 0, 47, + 0, 48, 0, 0, 48, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 48, 48, 0, 47, + 0, 48, 48, 0, 941, 0, 0, 48, 47, 48, + 48, 48, 48, 0, 0, 0, 0, 48, 0, 47, + 0, 48, 0, 48, 47, 0, 0, 0, 47, 0, + 0, 47, 0, 48, 0, 0, 48, 0, 48, 0, + 0, 0, 48, 47, 47, 0, 0, 0, 47, 47, + 0, 0, 0, 0, 47, 0, 47, 47, 47, 47, + 0, 0, 48, 0, 47, 0, 0, 0, 47, 0, + 47, 48, 0, 0, 0, 48, 0, 0, 0, 0, + 47, 0, 0, 47, 0, 47, 48, 0, 0, 47, + 0, 48, 0, 0, 0, 48, 0, 0, 48, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, + 48, 48, 0, 0, 0, 48, 48, 0, 0, 0, + 0, 48, 0, 48, 48, 48, 48, 0, 0, 0, + 0, 48, 0, 0, 0, 48, 0, 48, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 48, 0, 55, + 48, 0, 48, 0, 0, 0, 48, 56, 24, 57, + 25, 0, 0, 26, 58, 0, 59, 60, 27, 61, + 62, 63, 28, 0, 0, 0, 48, 0, 64, 0, + 65, 30, 66, 67, 68, 69, 0, 0, 32, 0, + 0, 0, 70, 33, 0, 71, 72, 34, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 73, 0, 36, + 0, 37, 74, 0, 0, 38, 0, 75, 76, 77, + 78, 79, 80, 39, 40, 81, 82, 41, 83, 0, + 84, 0, 0, 85, 86, 0, 333, 87, 88, 0, + 0, 0, 333, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 89, 90, 91, 92, 93, 0, 0, 0, + 94, 0, 0, 0, 95, 0, 0, 0, 0, 96, + 97, 98, 99, 100, 0, 0, 0, 101, 333, 102, + 0, 0, 0, 0, 0, 103, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 330, 0, 330, 330, 330, 330, 330, 330, 330, 0, - 330, 330, 0, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 929, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 0, 430, 561, 0, - 0, 0, 330, 430, 0, 330, 0, 24, 0, 25, - 0, 330, 26, 0, 0, 0, 0, 27, 0, 0, - 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, - 30, 0, 0, 0, 0, 0, 0, 32, 0, 430, - 0, 0, 33, 0, 0, 0, 34, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, - 37, 0, 0, 0, 38, 0, 0, 0, 0, 0, - 0, 0, 39, 40, 0, 0, 41, 0, 0, 319, - 430, 0, 0, 0, 0, 430, 0, 430, 430, 430, - 430, 430, 430, 430, 430, 430, 430, 430, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 430, - 0, 430, 430, 430, 430, 430, 430, 430, 0, 430, - 430, 0, 430, 430, 430, 430, 430, 430, 430, 430, - 430, 430, 0, 430, 430, 430, 430, 430, 430, 430, - 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, - 430, 430, 430, 430, 430, 0, 390, 0, 352, 0, - 352, 430, 390, 0, 430, 0, 0, 0, 0, 0, - 430, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 352, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 352, 0, 0, 0, 390, 352, - 0, 0, 228, 0, 352, 0, 352, 352, 352, 352, - 0, 0, 0, 0, 352, 0, 0, 0, 352, 0, - 0, 330, 352, 0, 0, 0, 0, 330, 0, 0, - 352, 736, 0, 352, 0, 352, 0, 0, 0, 390, - 0, 0, 0, 0, 390, 0, 390, 390, 390, 390, - 390, 390, 390, 390, 390, 390, 390, 0, 0, 352, - 0, 0, 0, 330, 0, 0, 0, 0, 390, 0, - 390, 390, 390, 390, 390, 390, 390, 0, 390, 736, + 0, 0, 333, 0, 0, 0, 0, 0, 333, 0, + 105, 106, 107, 108, 0, 0, 0, 0, 0, 333, + 0, 0, 196, 0, 333, 0, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 0, 0, + 0, 0, 0, 333, 333, 0, 0, 0, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 0, 333, 333, + 0, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 0, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 0, 504, 0, 0, 333, 0, + 333, 504, 0, 333, 0, 0, 0, 0, 0, 333, + 0, 0, 0, 0, 333, 0, 0, 333, 0, 333, + 333, 0, 0, 0, 333, 333, 0, 0, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 504, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 333, 333, + 0, 0, 0, 0, 0, 0, 333, 0, 0, 333, + 0, 0, 0, 0, 0, 333, 0, 201, 504, 0, + 0, 0, 0, 504, 0, 504, 504, 504, 504, 504, + 504, 504, 504, 504, 504, 504, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 504, 504, 504, 504, + 504, 504, 504, 504, 504, 504, 584, 504, 504, 202, + 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, + 0, 504, 504, 504, 504, 504, 504, 504, 504, 504, + 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, + 504, 504, 504, 0, 500, 0, 0, 0, 0, 504, + 500, 0, 0, 0, 0, 0, 0, 0, 504, 203, + 204, 205, 206, 0, 207, 208, 209, 210, 211, 212, + 213, 214, 0, 0, 215, 216, 217, 218, 219, 220, + 221, 222, 0, 0, 0, 0, 500, 0, 0, 584, + 0, 0, 0, 0, 584, 0, 584, 584, 584, 584, + 584, 584, 584, 584, 584, 584, 584, 0, 0, 0, + 0, 0, 0, 0, 0, 390, 0, 0, 584, 0, + 584, 390, 584, 0, 584, 584, 584, 500, 0, 0, + 0, 0, 500, 0, 500, 500, 500, 500, 500, 500, + 500, 500, 500, 500, 500, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 500, 500, 390, 500, 500, + 500, 500, 500, 500, 500, 0, 500, 500, 0, 500, + 500, 500, 500, 500, 500, 500, 500, 500, 500, 584, + 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, + 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, + 500, 500, 0, 508, 0, 0, 0, 0, 500, 508, + 0, 500, 0, 0, 0, 0, 0, 500, 0, 0, + 0, 0, 326, 0, 0, 0, 0, 390, 326, 0, + 390, 390, 390, 390, 0, 390, 0, 390, 390, 0, + 390, 390, 390, 390, 390, 508, 390, 390, 390, 390, 0, 390, 390, 390, 390, 390, 390, 390, 390, 390, - 390, 0, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, - 390, 390, 390, 390, 0, 352, 0, 0, 0, 0, - 390, 0, 330, 390, 0, 0, 0, 0, 330, 390, - 0, 0, 0, 330, 330, 330, 330, 330, 330, 330, - 736, 330, 0, 330, 330, 0, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 0, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, 330, 0, - 536, 0, 495, 330, 0, 330, 536, 0, 330, 0, - 56, 24, 0, 25, 330, 0, 26, 253, 0, 0, - 0, 27, 61, 62, 0, 28, 0, 0, 0, 0, - 0, 64, 0, 0, 30, 0, 0, 0, 0, 0, - 0, 32, 536, 0, 0, 0, 33, 0, 71, 72, + 390, 390, 390, 0, 0, 0, 0, 326, 0, 390, + 0, 0, 390, 0, 0, 0, 508, 0, 390, 0, + 0, 508, 0, 508, 508, 508, 508, 508, 508, 508, + 508, 508, 508, 508, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 508, 0, 508, 508, 508, + 508, 508, 508, 508, 932, 508, 508, 0, 508, 508, + 508, 508, 508, 508, 508, 508, 508, 508, 0, 508, + 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, + 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, + 508, 0, 333, 0, 0, 0, 0, 508, 333, 0, + 508, 0, 0, 0, 0, 0, 508, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 333, 0, 0, 932, 0, 0, + 0, 0, 932, 0, 932, 932, 932, 932, 932, 932, + 932, 932, 932, 932, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 932, 0, 932, 0, + 932, 0, 932, 932, 932, 333, 0, 0, 0, 0, + 333, 0, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 333, 0, 333, 333, 333, 333, + 333, 333, 333, 0, 333, 333, 0, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 932, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 0, 433, 562, 0, 0, 0, 333, 433, 0, 333, + 0, 24, 0, 25, 0, 333, 26, 0, 0, 0, + 0, 27, 0, 0, 0, 28, 0, 0, 0, 0, + 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, + 0, 32, 0, 433, 0, 0, 33, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 36, 0, 37, 74, 0, 0, 38, 0, - 0, 76, 0, 78, 0, 80, 39, 40, 254, 0, - 41, 0, 0, 536, 0, 0, 0, 0, 536, 0, - 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, - 536, 0, 0, 0, 0, 89, 90, 91, 255, 0, - 0, 0, 536, 0, 536, 0, 536, 95, 536, 536, - 536, 0, 536, 536, 0, 536, 536, 536, 536, 536, - 536, 536, 536, 536, 536, 351, 0, 0, 536, 536, - 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, - 536, 536, 536, 536, 536, 536, 548, 536, 351, 0, - 0, 0, 548, 105, 496, 0, 0, 0, 0, 0, - 0, 351, 0, 536, 0, 0, 351, 0, 0, 227, - 0, 351, 0, 351, 351, 351, 351, 0, 0, 0, - 0, 351, 0, 0, 0, 351, 0, 0, 548, 351, - 0, 0, 0, 0, 0, 0, 0, 351, 0, 0, - 351, 0, 351, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 552, 0, 0, 0, 0, 0, - 552, 0, 0, 0, 0, 0, 351, 0, 0, 548, - 0, 0, 0, 0, 548, 0, 548, 548, 548, 548, - 548, 548, 548, 548, 548, 548, 548, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 552, 0, 548, 0, - 548, 0, 548, 0, 548, 548, 548, 0, 548, 548, - 0, 0, 548, 548, 548, 548, 548, 548, 548, 548, - 548, 0, 351, 0, 548, 548, 548, 548, 548, 548, - 548, 548, 0, 0, 0, 0, 0, 552, 0, 0, - 0, 0, 552, 548, 552, 552, 552, 552, 552, 552, - 552, 552, 552, 552, 552, 0, 0, 0, 555, 548, - 0, 0, 0, 0, 555, 0, 552, 0, 552, 0, - 552, 0, 552, 552, 552, 0, 552, 552, 0, 0, - 552, 552, 552, 552, 0, 0, 0, 552, 552, 0, - 0, 0, 552, 552, 552, 552, 552, 552, 552, 552, - 555, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 552, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 553, 552, 0, 0, - 0, 0, 553, 0, 0, 0, 0, 0, 0, 0, - 0, 555, 0, 0, 0, 0, 555, 0, 555, 555, + 0, 0, 36, 0, 37, 0, 0, 0, 38, 0, + 0, 0, 0, 0, 0, 0, 39, 40, 0, 0, + 41, 0, 0, 319, 433, 0, 0, 0, 0, 433, + 0, 433, 433, 433, 433, 433, 433, 433, 433, 433, + 433, 433, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 433, 0, 433, 433, 433, 433, 433, + 433, 433, 0, 433, 433, 0, 433, 433, 433, 433, + 433, 433, 433, 433, 433, 433, 0, 433, 433, 433, + 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, + 433, 433, 433, 433, 433, 433, 433, 433, 433, 0, + 393, 0, 355, 0, 352, 433, 393, 0, 433, 0, + 0, 0, 0, 0, 433, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 355, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 355, 0, + 0, 0, 393, 355, 0, 0, 230, 0, 355, 0, + 355, 355, 355, 355, 0, 0, 0, 0, 355, 0, + 0, 0, 355, 0, 0, 333, 355, 0, 0, 0, + 0, 333, 0, 0, 355, 739, 0, 355, 0, 355, + 0, 0, 0, 393, 0, 0, 0, 0, 393, 0, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 0, 0, 355, 0, 0, 0, 333, 0, 0, + 0, 0, 393, 0, 393, 393, 393, 393, 393, 393, + 393, 0, 393, 739, 0, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 0, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 0, 355, + 0, 0, 0, 0, 393, 0, 333, 393, 0, 0, + 0, 0, 333, 393, 0, 0, 0, 333, 333, 333, + 333, 333, 333, 333, 739, 333, 0, 333, 333, 0, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 0, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 0, 539, 0, 496, 333, 0, 333, + 539, 0, 333, 0, 56, 24, 0, 25, 333, 0, + 26, 253, 0, 0, 0, 27, 61, 62, 0, 28, + 0, 0, 0, 0, 0, 64, 0, 0, 30, 0, + 0, 0, 0, 0, 0, 32, 539, 0, 0, 0, + 33, 0, 71, 72, 34, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 36, 0, 37, 74, + 0, 0, 38, 0, 0, 76, 0, 78, 0, 80, + 39, 40, 254, 0, 41, 0, 0, 539, 0, 0, + 0, 0, 539, 0, 539, 539, 539, 539, 539, 539, + 539, 539, 539, 539, 539, 0, 0, 0, 0, 89, + 90, 91, 255, 0, 0, 0, 539, 0, 539, 0, + 539, 95, 539, 539, 539, 0, 539, 539, 0, 539, + 539, 539, 539, 539, 539, 539, 539, 539, 539, 354, + 0, 0, 539, 539, 539, 539, 539, 539, 539, 539, + 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, + 551, 539, 354, 0, 0, 0, 551, 105, 497, 0, + 0, 0, 0, 0, 0, 354, 0, 539, 0, 0, + 354, 0, 0, 229, 0, 354, 0, 354, 354, 354, + 354, 0, 0, 0, 0, 354, 0, 0, 0, 354, + 0, 0, 551, 354, 0, 0, 0, 0, 0, 0, + 0, 354, 0, 0, 354, 0, 354, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 555, 0, + 0, 0, 0, 0, 555, 0, 0, 0, 0, 0, + 354, 0, 0, 551, 0, 0, 0, 0, 551, 0, + 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, + 551, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 555, 0, 551, 0, 551, 0, 551, 0, 551, 551, + 551, 0, 551, 551, 0, 0, 551, 551, 551, 551, + 551, 551, 551, 551, 551, 0, 354, 0, 551, 551, + 551, 551, 551, 551, 551, 551, 0, 0, 0, 0, + 0, 555, 0, 0, 0, 0, 555, 551, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 553, 0, + 0, 0, 558, 551, 0, 0, 0, 0, 558, 0, 555, 0, 555, 0, 555, 0, 555, 555, 555, 0, 555, 555, 0, 0, 555, 555, 555, 555, 0, 0, 0, 555, 555, 0, 0, 0, 555, 555, 555, 555, - 555, 555, 555, 555, 0, 0, 0, 0, 0, 553, - 0, 0, 0, 0, 553, 555, 553, 553, 553, 553, - 553, 553, 553, 553, 553, 553, 553, 0, 0, 0, - 554, 555, 0, 0, 0, 0, 554, 0, 553, 0, - 553, 0, 553, 0, 553, 553, 553, 0, 553, 553, - 0, 0, 553, 553, 553, 553, 0, 0, 0, 553, - 553, 0, 0, 0, 553, 553, 553, 553, 553, 553, - 553, 553, 554, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 553, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 558, 553, + 555, 555, 555, 555, 558, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 555, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 556, 555, 0, 0, 0, 0, 556, 0, 0, 0, + 0, 0, 0, 0, 0, 558, 0, 0, 0, 0, + 558, 0, 558, 558, 558, 558, 558, 558, 558, 558, + 558, 558, 558, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 556, 0, 558, 0, 558, 0, 558, 0, + 558, 558, 558, 0, 558, 558, 0, 0, 558, 558, + 558, 558, 0, 0, 0, 558, 558, 0, 0, 0, + 558, 558, 558, 558, 558, 558, 558, 558, 0, 0, + 0, 0, 0, 556, 0, 0, 0, 0, 556, 558, + 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, + 556, 0, 0, 0, 557, 558, 0, 0, 0, 0, + 557, 0, 556, 0, 556, 0, 556, 0, 556, 556, + 556, 0, 556, 556, 0, 0, 556, 556, 556, 556, + 0, 0, 0, 556, 556, 0, 0, 0, 556, 556, + 556, 556, 556, 556, 556, 556, 557, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 556, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 554, 0, 0, 0, 0, 554, 0, - 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, - 554, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 554, 0, 554, 0, 554, 0, 554, 554, - 554, 0, 554, 554, 0, 0, 554, 554, 554, 554, - 0, 0, 0, 554, 554, 0, 559, 0, 554, 554, - 554, 554, 554, 554, 554, 554, 0, 0, 0, 0, - 0, 558, 0, 0, 0, 0, 558, 554, 558, 558, - 558, 558, 558, 558, 558, 558, 558, 558, 558, 0, - 0, 0, 0, 554, 0, 0, 0, 0, 0, 0, - 558, 0, 558, 0, 558, 0, 558, 558, 558, 0, - 0, 0, 0, 0, 558, 558, 558, 558, 0, 0, - 0, 558, 558, 0, 560, 0, 558, 558, 558, 558, - 558, 558, 558, 558, 0, 0, 0, 0, 0, 559, - 0, 0, 0, 0, 559, 558, 559, 559, 559, 559, - 559, 559, 559, 559, 559, 559, 559, 0, 0, 0, - 0, 558, 0, 0, 0, 0, 0, 0, 559, 0, - 559, 0, 559, 0, 559, 559, 559, 0, 0, 0, - 0, 0, 559, 559, 559, 559, 0, 0, 0, 559, - 559, 0, 561, 0, 559, 559, 559, 559, 559, 559, - 559, 559, 0, 0, 0, 0, 0, 560, 0, 0, - 0, 0, 560, 559, 560, 560, 560, 560, 560, 560, - 560, 560, 560, 560, 560, 0, 0, 0, 0, 559, - 0, 0, 0, 0, 0, 0, 560, 0, 560, 0, - 560, 0, 560, 560, 560, 0, 0, 0, 0, 0, - 560, 560, 560, 560, 0, 0, 0, 560, 560, 0, - 562, 0, 560, 560, 560, 560, 560, 560, 560, 560, + 0, 0, 561, 556, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 557, 0, 0, + 0, 0, 557, 0, 557, 557, 557, 557, 557, 557, + 557, 557, 557, 557, 557, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 557, 0, 557, 0, + 557, 0, 557, 557, 557, 0, 557, 557, 0, 0, + 557, 557, 557, 557, 0, 0, 0, 557, 557, 0, + 562, 0, 557, 557, 557, 557, 557, 557, 557, 557, 0, 0, 0, 0, 0, 561, 0, 0, 0, 0, - 561, 560, 561, 561, 561, 561, 561, 561, 561, 561, - 561, 561, 561, 0, 0, 0, 0, 560, 0, 0, + 561, 557, 561, 561, 561, 561, 561, 561, 561, 561, + 561, 561, 561, 0, 0, 0, 0, 557, 0, 0, 0, 0, 0, 0, 561, 0, 561, 0, 561, 0, 561, 561, 561, 0, 0, 0, 0, 0, 561, 561, 561, 561, 0, 0, 0, 561, 561, 0, 563, 0, - 0, 0, 561, 561, 561, 561, 561, 561, 0, 0, + 561, 561, 561, 561, 561, 561, 561, 561, 0, 0, 0, 0, 0, 562, 0, 0, 0, 0, 562, 561, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 0, 0, 0, 0, 561, 0, 0, 0, 0, 0, 0, 562, 0, 562, 0, 562, 0, 562, 562, 562, 0, 0, 0, 0, 0, 562, 562, 562, 562, - 0, 0, 0, 562, 562, 0, 564, 0, 0, 0, + 0, 0, 0, 562, 562, 0, 564, 0, 562, 562, 562, 562, 562, 562, 562, 562, 0, 0, 0, 0, 0, 563, 0, 0, 0, 0, 563, 562, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 0, 0, 0, 0, 562, 0, 0, 0, 0, 0, 0, 563, 0, 563, 0, 563, 0, 563, 563, 563, 0, 0, 0, 0, 0, 563, 563, 563, 563, 0, 0, - 0, 563, 563, 0, 565, 0, 0, 0, 563, 563, + 0, 563, 563, 0, 565, 0, 563, 563, 563, 563, 563, 563, 563, 563, 0, 0, 0, 0, 0, 564, 0, 0, 0, 0, 564, 563, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 0, 0, 0, @@ -10340,1027 +10352,1077 @@ void case_962() 566, 565, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 0, 0, 0, 0, 565, 0, 0, 0, 0, 0, 0, 566, 0, 566, 0, 566, 0, - 566, 566, 566, 0, 0, 0, 0, 0, 0, 0, + 566, 566, 566, 0, 0, 0, 0, 0, 566, 566, 566, 566, 0, 0, 0, 566, 566, 0, 568, 0, - 0, 0, 0, 0, 566, 566, 566, 566, 0, 0, + 0, 0, 566, 566, 566, 566, 566, 566, 0, 0, 0, 0, 0, 567, 0, 0, 0, 0, 567, 566, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 0, 0, 0, 0, 566, 0, 0, 0, 0, 0, 0, 567, 0, 567, 0, 567, 0, 567, 567, - 567, 0, 0, 0, 0, 0, 0, 0, 567, 567, - 0, 0, 0, 567, 567, 0, 569, 0, 0, 0, - 0, 0, 567, 567, 567, 567, 0, 0, 0, 0, + 567, 0, 0, 0, 0, 0, 567, 567, 567, 567, + 0, 0, 0, 567, 567, 0, 570, 0, 0, 0, + 567, 567, 567, 567, 567, 567, 0, 0, 0, 0, 0, 568, 0, 0, 0, 0, 568, 567, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 0, 0, 0, 0, 567, 0, 0, 0, 0, 0, 0, 568, 0, 568, 0, 568, 0, 568, 568, 568, 0, - 0, 0, 0, 0, 0, 0, 568, 568, 0, 0, - 0, 568, 568, 0, 570, 0, 0, 0, 0, 0, - 568, 568, 568, 568, 0, 0, 0, 0, 0, 569, - 0, 0, 0, 0, 569, 568, 569, 569, 569, 569, - 569, 569, 569, 569, 569, 569, 569, 0, 0, 0, - 0, 568, 0, 0, 0, 0, 0, 0, 569, 0, - 569, 0, 569, 0, 569, 569, 569, 0, 0, 0, - 0, 0, 0, 0, 569, 569, 0, 0, 0, 569, - 569, 0, 571, 0, 0, 0, 0, 0, 0, 0, - 569, 569, 0, 0, 0, 0, 0, 570, 0, 0, - 0, 0, 570, 569, 570, 570, 570, 570, 570, 570, - 570, 570, 570, 570, 570, 0, 0, 0, 0, 569, - 0, 0, 0, 0, 0, 0, 570, 0, 570, 0, - 570, 0, 570, 570, 570, 0, 0, 0, 0, 0, - 0, 0, 570, 570, 0, 0, 0, 570, 570, 0, - 572, 0, 0, 0, 0, 0, 0, 0, 570, 570, - 0, 0, 0, 0, 0, 571, 0, 0, 0, 0, - 571, 570, 571, 571, 571, 571, 571, 571, 571, 571, - 571, 571, 571, 0, 0, 0, 0, 570, 0, 0, - 0, 0, 0, 0, 571, 0, 571, 0, 571, 0, - 571, 571, 571, 0, 0, 0, 0, 0, 0, 0, - 0, 571, 0, 0, 0, 571, 571, 0, 574, 0, - 0, 0, 0, 0, 0, 0, 571, 571, 0, 0, - 0, 0, 0, 572, 0, 0, 0, 0, 572, 571, - 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, - 572, 0, 0, 0, 0, 571, 0, 0, 0, 0, - 0, 0, 572, 0, 572, 0, 572, 0, 572, 572, - 572, 0, 0, 0, 0, 0, 0, 0, 0, 572, - 0, 0, 0, 572, 572, 0, 576, 0, 0, 0, - 0, 0, 0, 0, 572, 572, 0, 0, 0, 0, - 0, 574, 0, 0, 0, 0, 574, 572, 574, 574, + 0, 0, 0, 0, 568, 568, 568, 568, 0, 0, + 0, 568, 568, 0, 571, 0, 0, 0, 568, 568, + 568, 568, 568, 568, 0, 0, 0, 0, 0, 570, + 0, 0, 0, 0, 570, 568, 570, 570, 570, 570, + 570, 570, 570, 570, 570, 570, 570, 0, 0, 0, + 0, 568, 0, 0, 0, 0, 0, 0, 570, 0, + 570, 0, 570, 0, 570, 570, 570, 0, 0, 0, + 0, 0, 0, 0, 570, 570, 0, 0, 0, 570, + 570, 0, 572, 0, 0, 0, 0, 0, 570, 570, + 570, 570, 0, 0, 0, 0, 0, 571, 0, 0, + 0, 0, 571, 570, 571, 571, 571, 571, 571, 571, + 571, 571, 571, 571, 571, 0, 0, 0, 0, 570, + 0, 0, 0, 0, 0, 0, 571, 0, 571, 0, + 571, 0, 571, 571, 571, 0, 0, 0, 0, 0, + 0, 0, 571, 571, 0, 0, 0, 571, 571, 0, + 573, 0, 0, 0, 0, 0, 571, 571, 571, 571, + 0, 0, 0, 0, 0, 572, 0, 0, 0, 0, + 572, 571, 572, 572, 572, 572, 572, 572, 572, 572, + 572, 572, 572, 0, 0, 0, 0, 571, 0, 0, + 0, 0, 0, 0, 572, 0, 572, 0, 572, 0, + 572, 572, 572, 0, 0, 0, 0, 0, 0, 0, + 572, 572, 0, 0, 0, 572, 572, 0, 574, 0, + 0, 0, 0, 0, 0, 0, 572, 572, 0, 0, + 0, 0, 0, 573, 0, 0, 0, 0, 573, 572, + 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, + 573, 0, 0, 0, 0, 572, 0, 0, 0, 0, + 0, 0, 573, 0, 573, 0, 573, 0, 573, 573, + 573, 0, 0, 0, 0, 0, 0, 0, 573, 573, + 0, 0, 0, 573, 573, 0, 575, 0, 0, 0, + 0, 0, 0, 0, 573, 573, 0, 0, 0, 0, + 0, 574, 0, 0, 0, 0, 574, 573, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 0, - 0, 0, 0, 572, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 573, 0, 0, 0, 0, 0, 0, 574, 0, 574, 0, 574, 0, 574, 574, 574, 0, 0, 0, 0, 0, 0, 0, 0, 574, 0, 0, - 0, 0, 574, 0, 577, 0, 0, 0, 0, 0, - 0, 0, 574, 574, 0, 0, 0, 0, 0, 576, - 0, 0, 0, 0, 576, 574, 576, 576, 576, 576, - 576, 576, 576, 576, 576, 576, 576, 0, 0, 0, - 0, 574, 0, 0, 0, 0, 0, 0, 576, 0, - 576, 0, 576, 0, 576, 576, 576, 0, 0, 0, - 578, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 576, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 576, 576, 0, 0, 0, 0, 0, 577, 0, 0, - 0, 0, 577, 576, 577, 577, 577, 577, 577, 577, - 577, 577, 577, 577, 577, 0, 0, 0, 0, 576, - 0, 0, 0, 0, 0, 0, 577, 0, 577, 0, - 577, 0, 577, 577, 577, 0, 0, 0, 0, 330, - 0, 0, 0, 736, 0, 0, 0, 0, 577, 0, + 0, 574, 574, 0, 576, 0, 0, 0, 0, 0, + 0, 0, 574, 574, 0, 0, 0, 0, 0, 575, + 0, 0, 0, 0, 575, 574, 575, 575, 575, 575, + 575, 575, 575, 575, 575, 575, 575, 0, 0, 0, + 0, 574, 0, 0, 0, 0, 0, 0, 575, 0, + 575, 0, 575, 0, 575, 575, 575, 0, 0, 0, + 0, 0, 0, 0, 0, 575, 0, 0, 0, 575, + 575, 0, 577, 0, 0, 0, 0, 0, 0, 0, + 575, 575, 0, 0, 0, 0, 0, 576, 0, 0, + 0, 0, 576, 575, 576, 576, 576, 576, 576, 576, + 576, 576, 576, 576, 576, 0, 0, 0, 0, 575, + 0, 0, 0, 0, 0, 0, 576, 0, 576, 0, + 576, 0, 576, 576, 576, 0, 0, 0, 0, 0, + 0, 0, 0, 576, 0, 0, 0, 0, 576, 0, + 578, 0, 0, 0, 0, 0, 0, 0, 576, 576, + 0, 0, 0, 0, 0, 577, 0, 0, 0, 0, + 577, 576, 577, 577, 577, 577, 577, 577, 577, 577, + 577, 577, 577, 0, 0, 0, 0, 576, 0, 0, + 0, 0, 0, 0, 577, 0, 577, 0, 577, 0, + 577, 577, 577, 0, 0, 0, 0, 0, 0, 0, + 0, 577, 0, 0, 0, 0, 577, 0, 579, 0, + 0, 0, 0, 0, 0, 0, 577, 577, 0, 0, 0, 0, 0, 578, 0, 0, 0, 0, 578, 577, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, - 578, 577, 0, 0, 0, 330, 0, 0, 0, 0, - 0, 0, 578, 0, 578, 0, 578, 577, 578, 578, - 578, 736, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 578, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 578, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 578, 0, 0, - 0, 0, 0, 0, 330, 0, 0, 0, 0, 0, - 330, 0, 0, 578, 0, 330, 330, 0, 330, 0, - 330, 0, 736, 330, 0, 330, 330, 0, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, 0, 330, - 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, - 330, 0, 0, 55, 0, 330, 0, 330, 0, 0, - 330, 56, 24, 57, 25, 0, 330, 26, 58, 0, - 59, 60, 27, 61, 62, 63, 28, 0, 0, 0, - 0, 0, 64, 0, 65, 30, 66, 67, 68, 69, - 0, 0, 32, 0, 0, 0, 70, 33, 0, 71, - 72, 34, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 73, 0, 36, 0, 37, 74, 0, 0, 38, - 0, 75, 76, 77, 78, 79, 80, 39, 40, 81, - 82, 41, 83, 0, 84, 0, 0, 85, 86, 0, - 0, 87, 88, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 89, 90, 91, 92, - 93, 0, 0, 0, 94, 0, 0, 0, 95, 0, - 0, 0, 0, 96, 97, 98, 99, 100, 0, 0, - 0, 101, 0, 102, 0, 0, 0, 0, 0, 103, - 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 265, 0, 0, 0, 105, 106, 107, 108, 56, 24, - 57, 25, 0, 0, 26, 58, 0, 59, 60, 27, - 61, 62, 63, 28, 0, 0, 0, 0, 0, 64, - 0, 65, 30, 66, 67, 68, 69, 0, 0, 32, - 0, 0, 0, 70, 33, 0, 71, 72, 34, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, - 36, 0, 37, 74, 0, 0, 38, 0, 75, 76, - 77, 78, 79, 80, 39, 40, 81, 82, 41, 83, - 0, 84, 0, 0, 85, 86, 0, 0, 87, 88, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 89, 90, 91, 92, 93, 0, 0, - 0, 94, 0, 0, 0, 95, 0, 0, 0, 0, - 96, 97, 98, 99, 100, 0, 0, 0, 101, 0, - 102, 0, 0, 0, 0, 0, 103, 104, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 550, 0, 0, - 0, 105, 106, 107, 108, 56, 24, 57, 25, 0, - 0, 26, 58, 0, 59, 60, 27, 61, 62, 63, - 28, 0, 0, 0, 0, 0, 64, 0, 65, 30, - 66, 67, 68, 69, 0, 0, 32, 0, 0, 0, - 70, 33, 0, 71, 72, 34, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 73, 0, 36, 0, 37, - 74, 0, 0, 38, 0, 75, 76, 77, 78, 79, - 80, 39, 40, 81, 82, 41, 83, 0, 84, 0, - 0, 85, 86, 0, 0, 87, 88, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 89, 90, 91, 92, 93, 0, 0, 0, 94, 0, - 0, 0, 95, 0, 0, 0, 0, 96, 97, 98, - 99, 100, 0, 0, 0, 101, 0, 102, 0, 0, - 0, 0, 0, 103, 104, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 934, 0, 0, 0, 105, 551, - 107, 108, 934, 934, 934, 934, 0, 0, 934, 934, - 0, 934, 934, 934, 934, 934, 934, 934, 0, 0, - 0, 0, 0, 934, 0, 934, 934, 934, 934, 934, - 934, 0, 0, 934, 0, 0, 0, 934, 934, 0, - 934, 934, 934, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 934, 0, 934, 0, 934, 934, 0, 0, - 934, 0, 934, 934, 934, 934, 934, 934, 934, 934, - 934, 934, 934, 934, 0, 934, 0, 0, 934, 934, - 0, 0, 934, 934, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 934, 934, 934, - 934, 934, 0, 0, 0, 934, 0, 0, 0, 934, - 0, 0, 0, 0, 934, 934, 934, 934, 934, 0, - 0, 0, 934, 0, 934, 0, 0, 0, 0, 0, - 934, 934, 0, 0, 0, 0, 0, 0, 0, 0, + 578, 0, 0, 0, 0, 577, 0, 0, 0, 0, + 0, 0, 578, 0, 578, 0, 578, 0, 578, 578, + 578, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 578, 0, 580, 0, 0, 0, + 0, 0, 0, 0, 578, 578, 0, 0, 0, 0, + 0, 579, 0, 0, 0, 0, 579, 578, 579, 579, + 579, 579, 579, 579, 579, 579, 579, 579, 579, 0, + 0, 0, 0, 578, 0, 0, 0, 0, 0, 0, + 579, 0, 579, 0, 579, 0, 579, 579, 579, 0, + 0, 0, 581, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 579, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 579, 579, 0, 0, 0, 0, 0, 580, + 0, 0, 0, 0, 580, 579, 580, 580, 580, 580, + 580, 580, 580, 580, 580, 580, 580, 0, 0, 0, + 0, 579, 0, 0, 0, 0, 0, 0, 580, 0, + 580, 0, 580, 0, 580, 580, 580, 0, 0, 0, + 0, 333, 0, 0, 0, 739, 0, 0, 0, 0, + 580, 0, 0, 0, 0, 581, 0, 0, 0, 0, + 581, 580, 581, 581, 581, 581, 581, 581, 581, 581, + 581, 581, 581, 580, 0, 0, 0, 333, 0, 0, + 0, 0, 0, 0, 581, 0, 581, 0, 581, 580, + 581, 581, 581, 739, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 581, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 581, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 581, + 0, 0, 0, 0, 0, 0, 333, 0, 0, 0, + 0, 0, 333, 0, 0, 581, 0, 333, 333, 0, + 333, 0, 333, 0, 739, 333, 0, 333, 333, 0, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 0, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 0, 0, 55, 0, 333, 0, 333, + 0, 0, 333, 56, 24, 57, 25, 0, 333, 26, + 58, 0, 59, 60, 27, 61, 62, 63, 28, 0, + 0, 0, 0, 0, 64, 0, 65, 30, 66, 67, + 68, 69, 0, 0, 32, 0, 0, 0, 70, 33, + 0, 71, 72, 34, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 73, 0, 36, 0, 37, 74, 0, + 0, 38, 0, 75, 76, 77, 78, 79, 80, 39, + 40, 81, 82, 41, 83, 0, 84, 0, 0, 85, + 86, 0, 0, 87, 88, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 89, 90, + 91, 92, 93, 0, 0, 0, 94, 0, 0, 0, + 95, 0, 0, 0, 0, 96, 97, 98, 99, 100, + 0, 0, 0, 101, 0, 102, 0, 0, 0, 0, + 0, 103, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 785, 0, 0, 0, 934, 934, 934, 934, 785, - 785, 785, 785, 0, 0, 785, 785, 0, 785, 785, - 785, 785, 785, 785, 785, 0, 0, 0, 0, 0, - 785, 0, 785, 785, 785, 785, 785, 785, 0, 0, - 785, 0, 0, 0, 785, 785, 0, 785, 785, 785, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 785, - 0, 785, 0, 785, 785, 0, 0, 785, 0, 785, - 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, - 785, 0, 785, 0, 0, 785, 785, 0, 0, 785, - 785, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 785, 785, 785, 785, 785, 0, - 0, 0, 785, 0, 0, 0, 785, 0, 0, 0, - 0, 785, 785, 785, 785, 785, 0, 0, 0, 785, - 0, 785, 0, 0, 0, 0, 0, 785, 785, 0, + 0, 0, 265, 0, 0, 0, 105, 106, 107, 108, + 56, 24, 57, 25, 0, 0, 26, 58, 0, 59, + 60, 27, 61, 62, 63, 28, 0, 0, 0, 0, + 0, 64, 0, 65, 30, 66, 67, 68, 69, 0, + 0, 32, 0, 0, 0, 70, 33, 0, 71, 72, + 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 73, 0, 36, 0, 37, 74, 0, 0, 38, 0, + 75, 76, 77, 78, 79, 80, 39, 40, 81, 82, + 41, 83, 0, 84, 0, 0, 85, 86, 0, 0, + 87, 88, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 89, 90, 91, 92, 93, + 0, 0, 0, 94, 0, 0, 0, 95, 0, 0, + 0, 0, 96, 97, 98, 99, 100, 0, 0, 0, + 101, 0, 102, 0, 0, 0, 0, 0, 103, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 732, 0, - 0, 0, 785, 785, 785, 785, 56, 24, 0, 25, - 0, 0, 26, 253, 0, 890, 0, 27, 61, 62, - 0, 28, 0, 0, 24, 0, 25, 64, 0, 26, - 30, 0, 0, 0, 27, 0, 0, 32, 28, 0, - 0, 0, 33, 0, 71, 72, 34, 30, 0, 0, - 0, 0, 0, 0, 32, 0, 0, 0, 36, 33, - 37, 74, 0, 34, 38, 0, 0, 76, 0, 78, - 0, 80, 39, 40, 254, 36, 41, 37, 0, 0, - 0, 38, 0, 86, 0, 0, 87, 88, 0, 39, - 40, 0, 0, 41, 0, 0, 319, 0, 0, 0, - 0, 89, 90, 91, 92, 300, 0, 0, 0, 512, - 733, 0, 0, 95, 0, 0, 0, 0, 0, 97, - 98, 99, 100, 0, 0, 0, 101, 0, 102, 0, - 0, 0, 0, 0, 103, 104, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 551, + 0, 0, 0, 105, 106, 107, 108, 56, 24, 57, + 25, 0, 0, 26, 58, 0, 59, 60, 27, 61, + 62, 63, 28, 0, 0, 0, 0, 0, 64, 0, + 65, 30, 66, 67, 68, 69, 0, 0, 32, 0, + 0, 0, 70, 33, 0, 71, 72, 34, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 73, 0, 36, + 0, 37, 74, 0, 0, 38, 0, 75, 76, 77, + 78, 79, 80, 39, 40, 81, 82, 41, 83, 0, + 84, 0, 0, 85, 86, 0, 0, 87, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 919, 0, 0, 0, 105, - 301, 107, 108, 56, 24, 0, 25, 0, 0, 26, - 253, 0, 1034, 0, 27, 61, 62, 352, 28, 0, - 0, 24, 0, 25, 64, 0, 26, 30, 0, 0, - 0, 27, 0, 0, 32, 28, 0, 0, 0, 33, - 0, 71, 72, 34, 30, 0, 0, 0, 0, 0, - 0, 32, 0, 0, 0, 36, 33, 37, 74, 920, - 34, 38, 0, 0, 76, 0, 78, 0, 80, 39, - 40, 254, 36, 41, 37, 0, 0, 0, 38, 0, - 86, 0, 0, 87, 88, 0, 39, 40, 0, 0, - 41, 0, 0, 319, 0, 0, 0, 0, 89, 90, - 91, 92, 300, 0, 0, 0, 512, 0, 0, 0, - 95, 0, 0, 0, 0, 0, 97, 98, 99, 100, - 0, 0, 0, 101, 0, 102, 0, 0, 0, 0, - 0, 103, 104, 0, 0, 0, 0, 0, 0, 56, - 24, 0, 25, 0, 0, 26, 253, 0, 0, 0, - 27, 61, 62, 0, 28, 0, 105, 301, 107, 108, - 64, 0, 0, 30, 0, 0, 0, 0, 0, 0, - 32, 0, 0, 0, 352, 33, 0, 71, 72, 34, + 0, 0, 89, 90, 91, 92, 93, 0, 0, 0, + 94, 0, 0, 0, 95, 0, 0, 0, 0, 96, + 97, 98, 99, 100, 0, 0, 0, 101, 0, 102, + 0, 0, 0, 0, 0, 103, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 36, 0, 37, 74, 0, 0, 38, 0, 0, - 76, 0, 78, 0, 80, 39, 40, 254, 0, 41, - 0, 0, 0, 0, 0, 0, 86, 0, 0, 87, - 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 89, 90, 91, 92, 300, 0, - 0, 0, 719, 988, 0, 0, 95, 0, 0, 0, - 0, 0, 97, 98, 99, 100, 0, 0, 0, 101, - 0, 102, 0, 0, 0, 0, 0, 103, 104, 0, + 0, 0, 0, 0, 0, 0, 937, 0, 0, 0, + 105, 552, 107, 108, 937, 937, 937, 937, 0, 0, + 937, 937, 0, 937, 937, 937, 937, 937, 937, 937, + 0, 0, 0, 0, 0, 937, 0, 937, 937, 937, + 937, 937, 937, 0, 0, 937, 0, 0, 0, 937, + 937, 0, 937, 937, 937, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 937, 0, 937, 0, 937, 937, + 0, 0, 937, 0, 937, 937, 937, 937, 937, 937, + 937, 937, 937, 937, 937, 937, 0, 937, 0, 0, + 937, 937, 0, 0, 937, 937, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 937, + 937, 937, 937, 937, 0, 0, 0, 937, 0, 0, + 0, 937, 0, 0, 0, 0, 937, 937, 937, 937, + 937, 0, 0, 0, 937, 0, 937, 0, 0, 0, + 0, 0, 937, 937, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 788, 0, 0, 0, 937, 937, 937, + 937, 788, 788, 788, 788, 0, 0, 788, 788, 0, + 788, 788, 788, 788, 788, 788, 788, 0, 0, 0, + 0, 0, 788, 0, 788, 788, 788, 788, 788, 788, + 0, 0, 788, 0, 0, 0, 788, 788, 0, 788, + 788, 788, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 788, 0, 788, 0, 788, 788, 0, 0, 788, + 0, 788, 788, 788, 788, 788, 788, 788, 788, 788, + 788, 788, 788, 0, 788, 0, 0, 788, 788, 0, + 0, 788, 788, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 788, 788, 788, 788, + 788, 0, 0, 0, 788, 0, 0, 0, 788, 0, + 0, 0, 0, 788, 788, 788, 788, 788, 0, 0, + 0, 788, 0, 788, 0, 0, 0, 0, 0, 788, + 788, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 732, 0, 105, 720, 107, 108, 0, 0, 56, 24, - 0, 25, 0, 721, 26, 253, 0, 1156, 0, 27, + 734, 0, 0, 0, 788, 788, 788, 788, 56, 24, + 0, 25, 0, 0, 26, 253, 0, 892, 0, 27, 61, 62, 0, 28, 0, 0, 24, 0, 25, 64, 0, 26, 30, 0, 0, 0, 27, 0, 0, 32, 28, 0, 0, 0, 33, 0, 71, 72, 34, 30, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, - 36, 33, 37, 74, 920, 34, 38, 0, 0, 76, + 36, 33, 37, 74, 0, 34, 38, 0, 0, 76, 0, 78, 0, 80, 39, 40, 254, 36, 41, 37, 0, 0, 0, 38, 0, 86, 0, 0, 87, 88, 0, 39, 40, 0, 0, 41, 0, 0, 319, 0, 0, 0, 0, 89, 90, 91, 92, 300, 0, 0, - 0, 512, 0, 0, 0, 95, 0, 0, 0, 0, + 0, 513, 735, 0, 0, 95, 0, 0, 0, 0, 0, 97, 98, 99, 100, 0, 0, 0, 101, 0, 102, 0, 0, 0, 0, 0, 103, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 700, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 921, 0, 0, 0, 105, 301, 107, 108, 56, 24, 0, 25, 0, - 0, 26, 253, 0, 0, 0, 27, 61, 62, 352, - 28, 0, 0, 170, 0, 170, 64, 0, 170, 30, - 0, 0, 0, 170, 0, 0, 32, 170, 0, 0, - 0, 33, 0, 71, 72, 34, 170, 0, 0, 0, - 0, 0, 0, 170, 0, 0, 0, 36, 170, 37, - 74, 0, 170, 38, 0, 0, 76, 0, 78, 0, - 80, 39, 40, 254, 170, 41, 170, 0, 84, 0, - 170, 0, 86, 0, 0, 87, 88, 0, 170, 170, - 0, 0, 170, 0, 0, 170, 0, 0, 0, 0, - 89, 90, 91, 92, 300, 0, 0, 0, 0, 0, + 0, 26, 253, 0, 1036, 0, 27, 61, 62, 352, + 28, 0, 0, 24, 0, 25, 64, 0, 26, 30, + 0, 0, 0, 27, 0, 0, 32, 28, 0, 0, + 0, 33, 0, 71, 72, 34, 30, 0, 0, 0, + 0, 0, 0, 32, 0, 0, 0, 36, 33, 37, + 74, 922, 34, 38, 0, 0, 76, 0, 78, 0, + 80, 39, 40, 254, 36, 41, 37, 0, 0, 0, + 38, 0, 86, 0, 0, 87, 88, 0, 39, 40, + 0, 0, 41, 0, 0, 319, 0, 0, 0, 0, + 89, 90, 91, 92, 300, 0, 0, 0, 513, 0, 0, 0, 95, 0, 0, 0, 0, 0, 97, 98, 99, 100, 0, 0, 0, 101, 0, 102, 0, 0, - 958, 0, 0, 103, 104, 0, 0, 0, 0, 0, + 0, 0, 0, 103, 104, 0, 0, 0, 0, 0, 0, 56, 24, 0, 25, 0, 0, 26, 253, 0, 0, 0, 27, 61, 62, 0, 28, 0, 105, 301, 107, 108, 64, 0, 0, 30, 0, 0, 0, 0, - 0, 0, 32, 0, 0, 0, 170, 33, 0, 71, + 0, 0, 32, 0, 0, 0, 352, 33, 0, 71, 72, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 37, 74, 0, 0, 38, 0, 0, 76, 0, 78, 0, 80, 39, 40, 254, 0, 41, 0, 0, 0, 0, 0, 0, 86, 0, 0, 87, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 90, 91, 92, - 300, 0, 0, 0, 719, 0, 0, 0, 95, 0, + 300, 0, 0, 0, 721, 990, 0, 0, 95, 0, 0, 0, 0, 0, 97, 98, 99, 100, 0, 0, 0, 101, 0, 102, 0, 0, 0, 0, 0, 103, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 732, 0, 105, 720, 107, 108, 0, 0, - 56, 24, 0, 25, 0, 721, 26, 253, 0, 0, - 0, 27, 61, 62, 0, 28, 0, 0, 170, 0, - 170, 64, 0, 170, 30, 0, 0, 0, 170, 0, - 0, 32, 170, 0, 0, 0, 33, 0, 71, 72, - 34, 170, 0, 0, 0, 0, 0, 0, 170, 0, - 0, 0, 36, 170, 37, 74, 0, 170, 38, 0, - 0, 76, 0, 78, 0, 80, 39, 40, 254, 170, - 41, 170, 0, 0, 0, 170, 0, 86, 0, 0, - 87, 88, 0, 170, 170, 0, 0, 170, 0, 0, - 170, 0, 0, 0, 0, 89, 90, 91, 92, 300, - 0, 0, 0, 512, 0, 0, 0, 95, 0, 0, + 0, 0, 734, 0, 105, 722, 107, 108, 0, 0, + 56, 24, 0, 25, 0, 723, 26, 253, 0, 1158, + 0, 27, 61, 62, 0, 28, 0, 0, 24, 0, + 25, 64, 0, 26, 30, 0, 0, 0, 27, 0, + 0, 32, 28, 0, 0, 0, 33, 0, 71, 72, + 34, 30, 0, 0, 0, 0, 0, 0, 32, 0, + 0, 0, 36, 33, 37, 74, 922, 34, 38, 0, + 0, 76, 0, 78, 0, 80, 39, 40, 254, 36, + 41, 37, 0, 0, 0, 38, 0, 86, 0, 0, + 87, 88, 0, 39, 40, 0, 0, 41, 0, 0, + 319, 0, 0, 0, 0, 89, 90, 91, 92, 300, + 0, 0, 0, 513, 0, 0, 0, 95, 0, 0, 0, 0, 0, 97, 98, 99, 100, 0, 0, 0, - 101, 0, 102, 958, 0, 0, 0, 0, 103, 104, + 101, 0, 102, 0, 0, 0, 0, 0, 103, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 585, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 702, 0, 0, 0, 105, 301, 107, 108, 56, 24, 0, 25, 0, 0, 26, 253, 0, 0, 0, 27, 61, - 62, 170, 28, 0, 0, 24, 0, 25, 64, 0, - 26, 30, 0, 0, 0, 27, 0, 0, 32, 28, - 0, 0, 0, 33, 0, 71, 72, 34, 30, 0, - 0, 0, 0, 0, 0, 32, 0, 0, 0, 36, - 33, 37, 74, 0, 34, 38, 0, 0, 76, 0, - 78, 0, 80, 39, 40, 254, 36, 41, 37, 0, - 0, 0, 38, 0, 86, 0, 0, 87, 88, 0, - 39, 40, 0, 0, 41, 0, 0, 319, 0, 0, - 0, 0, 89, 90, 91, 92, 93, 0, 0, 0, - 0, 0, 0, 0, 95, 0, 0, 0, 0, 0, - 97, 98, 99, 100, 0, 0, 0, 101, 0, 102, - 0, 0, 0, 0, 0, 103, 104, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 809, 0, 0, 0, - 105, 106, 107, 108, 56, 24, 0, 25, 0, 0, - 26, 253, 0, 0, 0, 27, 61, 62, 352, 28, - 0, 0, 24, 0, 25, 64, 0, 26, 30, 0, - 0, 0, 27, 0, 0, 32, 28, 0, 0, 0, - 33, 0, 71, 72, 34, 30, 0, 0, 0, 0, - 0, 0, 32, 0, 0, 0, 36, 33, 37, 74, - 0, 34, 38, 0, 0, 76, 0, 78, 0, 80, - 39, 40, 254, 36, 41, 37, 0, 0, 0, 38, - 0, 86, 0, 0, 87, 88, 0, 39, 40, 0, - 0, 41, 0, 0, 514, 0, 0, 0, 0, 89, - 90, 91, 92, 300, 0, 0, 0, 0, 0, 0, - 0, 95, 0, 0, 0, 0, 0, 97, 98, 99, - 100, 0, 0, 0, 101, 0, 102, 0, 0, 0, - 0, 0, 103, 104, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 603, 0, 0, 0, 105, 301, 107, - 108, 603, 603, 0, 603, 0, 0, 603, 603, 0, - 0, 0, 603, 603, 603, 352, 603, 0, 0, 0, - 0, 0, 603, 0, 0, 603, 0, 0, 0, 0, - 0, 0, 603, 0, 0, 0, 0, 603, 0, 603, - 603, 603, 0, 0, 0, 0, 0, 0, 0, 330, - 0, 0, 0, 603, 0, 603, 603, 0, 0, 603, - 0, 0, 603, 0, 603, 0, 603, 603, 603, 603, - 0, 603, 0, 0, 0, 0, 0, 0, 603, 0, - 0, 603, 603, 0, 0, 330, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 603, 603, 603, 603, - 603, 0, 0, 0, 0, 0, 0, 0, 603, 0, - 0, 0, 0, 0, 603, 603, 603, 603, 0, 0, - 0, 603, 0, 603, 0, 0, 0, 0, 0, 603, - 603, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 603, 603, 603, 603, 330, 330, - 330, 330, 736, 0, 0, 330, 330, 0, 0, 330, - 330, 330, 330, 330, 330, 330, 330, 330, 0, 330, - 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, - 330, 0, 46, 0, 0, 0, 46, 330, 46, 0, - 330, 46, 0, 46, 46, 0, 46, 0, 46, 0, - 46, 0, 46, 46, 46, 46, 0, 0, 46, 46, - 0, 0, 0, 0, 46, 0, 46, 46, 46, 0, - 0, 46, 0, 46, 0, 46, 0, 0, 46, 0, - 46, 46, 46, 46, 0, 0, 0, 46, 46, 46, - 0, 0, 46, 46, 46, 0, 0, 0, 0, 0, - 0, 46, 46, 0, 46, 46, 0, 46, 46, 46, - 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 46, 0, 46, 0, 46, 0, 46, 0, 79, - 46, 0, 46, 46, 0, 46, 0, 46, 46, 46, - 0, 46, 46, 46, 46, 0, 0, 46, 46, 0, - 0, 0, 0, 46, 0, 46, 46, 46, 0, 0, - 46, 0, 46, 0, 46, 0, 0, 46, 0, 46, - 46, 46, 46, 0, 0, 0, 46, 46, 46, 46, - 0, 46, 46, 46, 0, 0, 0, 0, 0, 0, - 46, 46, 0, 46, 46, 0, 46, 46, 46, 0, - 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 46, 0, 46, 0, 46, 0, 46, 0, 80, 46, - 0, 46, 46, 0, 46, 0, 46, 46, 46, 0, - 46, 46, 46, 46, 0, 0, 46, 46, 0, 0, - 0, 0, 46, 0, 46, 46, 46, 0, 0, 46, - 0, 46, 0, 46, 0, 0, 46, 0, 46, 46, - 46, 46, 0, 0, 0, 46, 46, 46, 46, 0, - 46, 46, 46, 0, 0, 0, 0, 0, 0, 46, - 46, 0, 46, 46, 0, 46, 46, 46, 0, 0, - 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 46, 0, 0, 0, 46, 0, - 46, 46, 0, 46, 0, 46, 46, 210, 46, 0, - 46, 0, 46, 0, 46, 46, 46, 46, 0, 0, - 46, 46, 0, 0, 0, 0, 46, 0, 46, 46, - 46, 0, 0, 46, 0, 46, 330, 46, 0, 0, - 46, 0, 46, 46, 46, 46, 0, 0, 0, 46, - 46, 46, 0, 0, 46, 46, 46, 46, 0, 330, - 0, 0, 0, 46, 46, 0, 46, 46, 0, 46, - 46, 46, 330, 0, 0, 46, 0, 330, 0, 0, - 330, 0, 330, 0, 330, 330, 330, 330, 0, 0, - 0, 0, 330, 0, 0, 46, 330, 0, 0, 0, - 330, 211, 0, 0, 448, 0, 0, 0, 330, 0, - 0, 330, 0, 330, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 449, 0, 0, - 0, 0, 330, 0, 448, 0, 0, 330, 0, 0, - 450, 0, 0, 0, 330, 452, 261, 0, 330, 0, - 453, 46, 454, 455, 456, 457, 0, 449, 0, 0, - 458, 330, 0, 0, 459, 0, 0, 0, 1299, 0, - 450, 0, 0, 0, 0, 452, 460, 0, 0, 461, - 453, 462, 454, 455, 456, 457, 0, 0, 0, 0, - 458, 0, 0, 330, 459, 0, 0, 0, 0, 0, - 0, 56, 24, 0, 25, 463, 460, 26, 253, 461, - 0, 462, 27, 61, 62, 0, 28, 0, 0, 0, - 0, 0, 64, 0, 0, 30, 0, 0, 0, 0, - 0, 0, 32, 0, 0, 463, 0, 33, 0, 71, - 72, 34, 0, 587, 0, 0, 0, 0, 0, 0, - 588, 0, 0, 36, 0, 37, 74, 0, 0, 38, - 0, 1300, 76, 0, 78, 0, 80, 39, 40, 254, - 0, 41, 0, 0, 0, 0, 0, 0, 589, 0, - 0, 87, 88, 0, 0, 0, 0, 0, 0, 0, - 0, 1314, 0, 0, 0, 0, 89, 90, 91, 92, - 93, 0, 0, 0, 0, 0, 0, 0, 95, 914, - 0, 590, 0, 0, 97, 98, 99, 100, 0, 0, - 0, 101, 0, 102, 0, 0, 0, 0, 0, 103, - 104, 0, 0, 0, 0, 0, 0, 56, 24, 0, - 25, 0, 0, 26, 253, 0, 0, 0, 27, 61, - 62, 0, 28, 0, 105, 106, 107, 108, 64, 0, - 0, 30, 0, 0, 0, 0, 0, 0, 32, 0, - 0, 0, 0, 33, 0, 71, 72, 34, 0, 587, - 0, 0, 0, 0, 0, 0, 588, 0, 0, 36, - 0, 37, 74, 0, 0, 38, 0, 0, 76, 0, - 78, 0, 80, 39, 40, 254, 0, 41, 0, 0, - 0, 0, 0, 0, 589, 0, 0, 87, 88, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 89, 90, 91, 92, 93, 0, 0, 0, - 0, 0, 0, 0, 95, 0, 0, 590, 0, 0, - 97, 98, 99, 100, 0, 0, 0, 101, 0, 102, - 0, 0, 0, 0, 0, 103, 104, 0, 0, 0, - 0, 0, 0, 56, 24, 0, 25, 0, 0, 26, - 253, 0, 0, 0, 27, 61, 62, 0, 28, 0, - 105, 106, 107, 108, 64, 0, 0, 30, 0, 0, - 0, 0, 0, 0, 32, 0, 0, 0, 0, 33, - 0, 71, 72, 34, 0, 587, 0, 0, 0, 0, - 0, 0, 588, 0, 0, 36, 0, 37, 74, 0, - 0, 38, 0, 0, 76, 0, 78, 0, 80, 39, - 40, 254, 0, 41, 0, 0, 0, 0, 0, 0, - 589, 0, 0, 87, 88, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 89, 90, - 91, 92, 93, 0, 0, 0, 0, 0, 0, 0, - 95, 0, 0, 0, 0, 0, 97, 98, 99, 100, - 0, 0, 0, 101, 0, 102, 0, 0, 0, 0, - 0, 103, 104, 0, 0, 0, 0, 0, 0, 56, - 24, 0, 25, 0, 0, 26, 253, 0, 0, 0, - 27, 61, 62, 0, 28, 0, 105, 106, 107, 108, - 64, 0, 0, 30, 0, 0, 0, 0, 0, 0, - 32, 0, 0, 0, 0, 33, 0, 71, 72, 34, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 36, 0, 37, 74, 0, 0, 38, 0, 0, - 76, 0, 78, 0, 80, 39, 40, 254, 0, 41, - 0, 0, 84, 0, 0, 0, 86, 0, 0, 87, - 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 89, 90, 91, 92, 300, 0, - 0, 0, 0, 0, 0, 0, 95, 0, 0, 0, - 0, 0, 97, 98, 99, 100, 0, 0, 0, 101, - 0, 102, 0, 0, 0, 0, 0, 103, 104, 0, - 0, 0, 0, 0, 0, 56, 24, 0, 25, 0, - 0, 26, 253, 0, 0, 0, 27, 61, 62, 0, - 28, 0, 105, 301, 107, 108, 64, 0, 0, 30, - 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, - 0, 33, 0, 71, 72, 34, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 36, 0, 37, - 74, 0, 0, 38, 0, 0, 76, 0, 78, 0, - 80, 39, 40, 254, 0, 41, 0, 0, 0, 0, - 0, 0, 86, 0, 0, 87, 88, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 89, 90, 91, 92, 300, 0, 0, 0, 0, 873, - 0, 0, 95, 0, 0, 0, 0, 0, 97, 98, - 99, 100, 0, 0, 0, 101, 0, 102, 0, 0, - 0, 0, 0, 103, 104, 0, 0, 0, 0, 0, - 0, 56, 24, 0, 25, 0, 0, 26, 253, 0, - 0, 0, 27, 61, 62, 0, 28, 0, 105, 301, - 107, 108, 64, 0, 0, 30, 0, 0, 0, 0, - 0, 0, 32, 0, 0, 0, 0, 33, 0, 71, - 72, 34, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 36, 0, 37, 74, 0, 0, 38, - 0, 0, 76, 0, 78, 0, 80, 39, 40, 254, - 0, 41, 0, 0, 0, 0, 0, 0, 86, 0, - 0, 87, 88, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 89, 90, 91, 92, - 300, 0, 0, 0, 512, 0, 0, 0, 95, 0, - 0, 0, 0, 0, 97, 98, 99, 100, 0, 0, - 0, 101, 0, 102, 0, 0, 0, 0, 0, 103, - 104, 0, 0, 0, 0, 0, 0, 56, 24, 0, - 25, 0, 0, 26, 253, 0, 0, 0, 27, 61, - 62, 0, 28, 0, 105, 301, 107, 108, 64, 0, - 0, 30, 0, 0, 0, 0, 0, 0, 32, 0, - 0, 0, 0, 33, 0, 71, 72, 34, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, - 0, 37, 74, 0, 0, 38, 0, 0, 76, 0, - 78, 0, 80, 39, 40, 254, 0, 41, 0, 0, - 0, 0, 0, 0, 86, 0, 0, 87, 88, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 62, 352, 28, 0, 0, 172, 0, 172, 64, 0, + 172, 30, 0, 0, 0, 172, 0, 0, 32, 172, + 0, 0, 0, 33, 0, 71, 72, 34, 172, 0, + 0, 0, 0, 0, 0, 172, 0, 0, 0, 36, + 172, 37, 74, 0, 172, 38, 0, 0, 76, 0, + 78, 0, 80, 39, 40, 254, 172, 41, 172, 0, + 84, 0, 172, 0, 86, 0, 0, 87, 88, 0, + 172, 172, 0, 0, 172, 0, 0, 172, 0, 0, 0, 0, 89, 90, 91, 92, 300, 0, 0, 0, - 506, 0, 0, 0, 95, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 95, 0, 0, 0, 0, 0, 97, 98, 99, 100, 0, 0, 0, 101, 0, 102, - 0, 0, 0, 0, 0, 103, 104, 0, 0, 0, + 0, 0, 961, 0, 0, 103, 104, 0, 0, 0, 0, 0, 0, 56, 24, 0, 25, 0, 0, 26, 253, 0, 0, 0, 27, 61, 62, 0, 28, 0, 105, 301, 107, 108, 64, 0, 0, 30, 0, 0, - 0, 0, 0, 0, 32, 0, 0, 0, 0, 33, + 0, 0, 0, 0, 32, 0, 0, 0, 172, 33, 0, 71, 72, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 37, 74, 0, 0, 38, 0, 0, 76, 0, 78, 0, 80, 39, 40, 254, 0, 41, 0, 0, 0, 0, 0, 0, 86, 0, 0, 87, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 90, - 91, 92, 300, 0, 0, 0, 0, 0, 0, 0, + 91, 92, 300, 0, 0, 0, 721, 0, 0, 0, 95, 0, 0, 0, 0, 0, 97, 98, 99, 100, 0, 0, 0, 101, 0, 102, 0, 0, 0, 0, - 0, 103, 104, 0, 0, 0, 0, 0, 0, 56, - 24, 0, 25, 0, 0, 26, 253, 0, 0, 0, - 27, 61, 62, 0, 28, 0, 105, 301, 107, 108, - 64, 0, 0, 30, 0, 0, 0, 0, 0, 0, - 32, 0, 0, 0, 0, 33, 0, 71, 72, 34, + 0, 103, 104, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 734, 0, 105, 722, 107, 108, + 0, 0, 56, 24, 0, 25, 0, 723, 26, 253, + 0, 0, 0, 27, 61, 62, 0, 28, 0, 0, + 172, 0, 172, 64, 0, 172, 30, 0, 0, 0, + 172, 0, 0, 32, 172, 0, 0, 0, 33, 0, + 71, 72, 34, 172, 0, 0, 0, 0, 0, 0, + 172, 0, 0, 0, 36, 172, 37, 74, 0, 172, + 38, 0, 0, 76, 0, 78, 0, 80, 39, 40, + 254, 172, 41, 172, 0, 0, 0, 172, 0, 86, + 0, 0, 87, 88, 0, 172, 172, 0, 0, 172, + 0, 0, 172, 0, 0, 0, 0, 89, 90, 91, + 92, 300, 0, 0, 0, 513, 0, 0, 0, 95, + 0, 0, 0, 0, 0, 97, 98, 99, 100, 0, + 0, 0, 101, 0, 102, 961, 0, 0, 0, 0, + 103, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 36, 0, 37, 74, 0, 0, 38, 0, 0, - 76, 0, 78, 0, 80, 39, 40, 254, 0, 41, - 0, 0, 0, 0, 0, 0, 86, 0, 0, 87, - 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 586, 0, 0, 0, 105, 301, 107, 108, 56, + 24, 0, 25, 0, 0, 26, 253, 0, 0, 0, + 27, 61, 62, 172, 28, 0, 0, 24, 0, 25, + 64, 0, 26, 30, 0, 0, 0, 27, 0, 0, + 32, 28, 0, 0, 0, 33, 0, 71, 72, 34, + 30, 0, 0, 0, 0, 0, 0, 32, 0, 0, + 0, 36, 33, 37, 74, 0, 34, 38, 0, 0, + 76, 0, 78, 0, 80, 39, 40, 254, 36, 41, + 37, 0, 0, 0, 38, 0, 86, 0, 0, 87, + 88, 0, 39, 40, 0, 0, 41, 0, 0, 319, 0, 0, 0, 0, 89, 90, 91, 92, 93, 0, 0, 0, 0, 0, 0, 0, 95, 0, 0, 0, 0, 0, 97, 98, 99, 100, 0, 0, 0, 101, 0, 102, 0, 0, 0, 0, 0, 103, 104, 0, - 0, 0, 0, 0, 0, 56, 24, 0, 25, 0, - 0, 26, 253, 0, 0, 0, 27, 61, 62, 0, - 28, 0, 105, 106, 107, 108, 64, 0, 0, 30, - 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, - 0, 33, 0, 71, 72, 34, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 36, 0, 37, - 74, 0, 0, 38, 0, 0, 76, 0, 78, 0, - 80, 39, 40, 254, 0, 41, 0, 0, 0, 0, - 0, 0, 86, 0, 0, 87, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 89, 90, 91, 92, 93, 0, 0, 0, 0, 0, - 0, 0, 95, 0, 0, 0, 0, 0, 97, 98, - 99, 100, 0, 0, 0, 101, 0, 102, 0, 0, - 0, 0, 0, 103, 104, 0, 0, 0, 0, 0, - 0, 76, 76, 0, 76, 0, 0, 76, 76, 0, - 0, 0, 76, 76, 76, 0, 76, 0, 105, 1026, - 107, 108, 76, 0, 0, 76, 0, 0, 0, 0, - 0, 0, 76, 0, 0, 0, 0, 76, 0, 76, - 76, 76, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 76, 0, 76, 76, 0, 0, 76, - 0, 0, 76, 0, 76, 0, 76, 76, 76, 76, - 0, 76, 0, 0, 0, 0, 0, 0, 76, 0, - 0, 76, 76, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 76, 76, 76, 76, - 76, 0, 0, 0, 0, 0, 0, 0, 76, 0, - 0, 0, 0, 0, 76, 76, 76, 76, 0, 0, - 0, 76, 0, 76, 0, 0, 0, 0, 0, 76, - 76, 0, 0, 0, 0, 0, 0, 133, 133, 0, - 133, 0, 0, 133, 133, 0, 0, 0, 133, 133, - 133, 0, 133, 0, 76, 76, 76, 76, 133, 0, - 0, 133, 0, 0, 0, 0, 0, 0, 133, 0, - 0, 0, 0, 133, 0, 133, 133, 133, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 133, - 0, 133, 133, 0, 0, 133, 0, 0, 133, 0, - 133, 0, 133, 133, 133, 133, 0, 133, 0, 0, - 0, 0, 0, 0, 133, 0, 0, 133, 133, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 811, 0, + 0, 0, 105, 106, 107, 108, 56, 24, 0, 25, + 0, 0, 26, 253, 0, 0, 0, 27, 61, 62, + 352, 28, 0, 0, 24, 0, 25, 64, 0, 26, + 30, 0, 0, 0, 27, 0, 0, 32, 28, 0, + 0, 0, 33, 0, 71, 72, 34, 30, 0, 0, + 0, 0, 0, 0, 32, 0, 0, 0, 36, 33, + 37, 74, 0, 34, 38, 0, 0, 76, 0, 78, + 0, 80, 39, 40, 254, 36, 41, 37, 0, 0, + 0, 38, 0, 86, 0, 0, 87, 88, 0, 39, + 40, 0, 0, 41, 0, 0, 515, 0, 0, 0, + 0, 89, 90, 91, 92, 300, 0, 0, 0, 0, + 0, 0, 0, 95, 0, 0, 0, 0, 0, 97, + 98, 99, 100, 0, 0, 0, 101, 0, 102, 0, + 0, 0, 0, 0, 103, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 133, 133, 133, 133, 133, 0, 0, 0, - 0, 0, 0, 0, 133, 0, 0, 0, 0, 0, - 133, 133, 133, 133, 0, 0, 0, 133, 0, 133, - 0, 0, 0, 0, 0, 133, 133, 0, 0, 0, - 0, 0, 0, 56, 24, 0, 25, 0, 0, 26, - 253, 0, 0, 0, 27, 61, 62, 0, 28, 0, - 133, 133, 133, 133, 64, 0, 0, 30, 0, 0, - 0, 0, 0, 0, 32, 0, 27, 0, 27, 33, - 0, 71, 72, 34, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 36, 0, 37, 74, 27, - 0, 38, 0, 0, 76, 0, 78, 0, 80, 39, - 40, 254, 27, 41, 0, 0, 0, 27, 0, 0, - 0, 0, 27, 0, 27, 27, 27, 27, 0, 0, - 0, 0, 27, 0, 0, 0, 27, 0, 89, 90, - 91, 255, 300, 0, 0, 0, 0, 0, 27, 0, - 95, 27, 0, 27, 0, 0, 97, 98, 99, 100, - 0, 0, 0, 101, 0, 102, 0, 0, 0, 0, - 0, 103, 104, 0, 0, 0, 0, 27, 0, 0, - 0, 0, 0, 27, 27, 0, 0, 0, 0, 0, - 0, 636, 0, 636, 0, 636, 105, 256, 636, 108, - 636, 636, 0, 636, 0, 636, 0, 636, 0, 636, - 636, 636, 0, 0, 0, 636, 636, 0, 0, 0, - 0, 636, 0, 636, 636, 0, 0, 0, 636, 0, - 0, 0, 636, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 636, 636, 0, 636, 0, 0, 0, - 636, 636, 0, 0, 0, 0, 0, 0, 636, 636, - 56, 24, 636, 25, 0, 636, 26, 253, 0, 0, - 636, 27, 61, 62, 0, 28, 0, 0, 0, 0, - 0, 64, 0, 0, 30, 0, 0, 0, 0, 0, - 0, 32, 636, 636, 0, 0, 33, 0, 71, 72, - 34, 0, 0, 0, 0, 636, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 606, 0, 0, 0, 105, + 301, 107, 108, 606, 606, 0, 606, 0, 0, 606, + 606, 0, 0, 0, 606, 606, 606, 352, 606, 0, + 0, 0, 0, 0, 606, 0, 0, 606, 0, 0, + 0, 0, 0, 0, 606, 0, 0, 0, 0, 606, + 0, 606, 606, 606, 0, 0, 0, 0, 0, 0, + 0, 333, 0, 0, 0, 606, 0, 606, 606, 0, + 0, 606, 0, 0, 606, 0, 606, 0, 606, 606, + 606, 606, 0, 606, 0, 0, 0, 0, 0, 0, + 606, 0, 0, 606, 606, 0, 0, 333, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 606, 606, + 606, 606, 606, 0, 0, 0, 0, 0, 0, 0, + 606, 0, 0, 0, 0, 0, 606, 606, 606, 606, + 0, 0, 0, 606, 0, 606, 0, 0, 0, 0, + 0, 606, 606, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 606, 606, 606, 606, + 333, 333, 333, 333, 739, 0, 0, 333, 333, 0, + 0, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 0, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 0, 48, 0, 48, 0, 48, 333, + 48, 0, 333, 48, 0, 48, 48, 0, 48, 0, + 48, 0, 48, 0, 48, 48, 48, 48, 0, 0, + 48, 48, 0, 0, 0, 0, 48, 48, 48, 48, + 48, 0, 0, 48, 0, 48, 0, 48, 0, 48, + 48, 48, 48, 48, 48, 48, 48, 0, 48, 48, + 48, 48, 0, 0, 48, 48, 48, 0, 48, 0, + 0, 0, 0, 48, 48, 0, 48, 48, 0, 48, + 48, 48, 0, 0, 0, 48, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 48, 0, 48, 48, 47, + 0, 0, 0, 47, 0, 47, 0, 0, 47, 0, + 47, 47, 0, 47, 0, 47, 0, 47, 0, 47, + 47, 47, 47, 0, 0, 47, 47, 0, 0, 0, + 0, 47, 0, 47, 47, 47, 0, 0, 47, 0, + 47, 0, 47, 0, 0, 47, 0, 47, 47, 47, + 47, 48, 0, 0, 47, 47, 47, 0, 0, 47, + 47, 47, 0, 0, 0, 0, 0, 0, 47, 47, + 0, 47, 47, 0, 47, 47, 47, 0, 0, 0, + 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, + 47, 0, 47, 0, 47, 0, 80, 47, 0, 47, + 47, 0, 47, 0, 47, 47, 47, 0, 47, 47, + 47, 47, 0, 0, 47, 47, 0, 0, 0, 0, + 47, 0, 47, 47, 47, 0, 0, 47, 0, 47, + 0, 47, 0, 0, 47, 0, 47, 47, 47, 47, + 0, 0, 0, 47, 47, 47, 47, 0, 47, 47, + 47, 0, 0, 0, 0, 0, 0, 47, 47, 0, + 47, 47, 0, 47, 47, 47, 0, 0, 0, 47, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 47, 0, 47, + 0, 47, 0, 47, 0, 81, 47, 0, 47, 47, + 0, 47, 0, 47, 47, 47, 0, 47, 47, 47, + 47, 0, 0, 47, 47, 0, 0, 0, 0, 47, + 0, 47, 47, 47, 0, 0, 47, 0, 47, 0, + 47, 0, 0, 47, 0, 47, 47, 47, 47, 0, + 0, 0, 47, 47, 47, 47, 0, 47, 47, 47, + 0, 0, 0, 0, 0, 0, 47, 47, 0, 47, + 47, 0, 47, 47, 47, 0, 0, 0, 47, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 48, 0, 0, 0, 48, 0, 48, 47, 0, + 48, 0, 48, 48, 212, 48, 0, 48, 0, 48, + 0, 48, 48, 48, 48, 0, 0, 48, 48, 0, + 0, 0, 0, 48, 0, 48, 48, 48, 0, 0, + 48, 0, 48, 0, 48, 0, 0, 48, 0, 48, + 48, 48, 48, 0, 0, 0, 48, 48, 48, 0, + 0, 48, 48, 48, 47, 0, 0, 0, 0, 0, + 48, 48, 0, 48, 48, 0, 48, 48, 48, 0, + 0, 0, 48, 0, 0, 0, 0, 47, 0, 0, + 0, 47, 0, 47, 0, 0, 47, 0, 47, 47, + 0, 47, 48, 47, 0, 47, 0, 47, 47, 47, + 47, 0, 0, 47, 47, 0, 0, 48, 0, 47, + 0, 47, 47, 47, 0, 0, 47, 0, 47, 333, + 47, 0, 0, 47, 0, 47, 47, 47, 47, 0, + 0, 0, 47, 47, 47, 0, 0, 47, 47, 47, + 0, 0, 333, 0, 0, 0, 47, 47, 48, 47, + 47, 0, 47, 47, 47, 333, 0, 0, 47, 0, + 333, 0, 0, 333, 0, 333, 0, 333, 333, 333, + 333, 0, 0, 0, 0, 333, 0, 0, 47, 333, + 0, 0, 0, 333, 213, 0, 0, 448, 0, 0, + 0, 333, 0, 0, 333, 0, 333, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 449, 0, 0, 0, 0, 333, 0, 448, 0, 0, + 333, 0, 0, 450, 0, 0, 0, 333, 452, 263, + 0, 333, 0, 453, 47, 454, 455, 456, 457, 0, + 449, 0, 0, 458, 333, 0, 0, 459, 0, 0, + 0, 1304, 0, 450, 0, 0, 0, 0, 452, 460, + 0, 0, 461, 453, 462, 454, 455, 456, 457, 0, + 0, 0, 0, 458, 0, 0, 333, 459, 0, 0, + 0, 0, 0, 0, 56, 24, 0, 25, 463, 460, + 26, 253, 461, 0, 462, 27, 61, 62, 0, 28, + 0, 0, 0, 0, 0, 64, 0, 0, 30, 0, + 0, 0, 0, 0, 0, 32, 0, 0, 463, 0, + 33, 0, 71, 72, 34, 0, 588, 0, 0, 0, + 0, 0, 0, 589, 0, 0, 36, 0, 37, 74, + 0, 0, 38, 0, 1305, 76, 0, 78, 0, 80, + 39, 40, 254, 0, 41, 0, 0, 0, 0, 0, + 0, 590, 0, 0, 87, 88, 0, 0, 0, 0, + 0, 0, 0, 0, 1319, 0, 0, 0, 0, 89, + 90, 91, 92, 93, 0, 0, 0, 0, 0, 0, + 0, 95, 916, 0, 591, 0, 0, 97, 98, 99, + 100, 0, 0, 0, 101, 0, 102, 0, 0, 0, + 0, 0, 103, 104, 0, 0, 0, 0, 0, 0, + 56, 24, 0, 25, 0, 0, 26, 253, 0, 0, + 0, 27, 61, 62, 0, 28, 0, 105, 106, 107, + 108, 64, 0, 0, 30, 0, 0, 0, 0, 0, + 0, 32, 0, 0, 0, 0, 33, 0, 71, 72, + 34, 0, 588, 0, 0, 0, 0, 0, 0, 589, 0, 0, 36, 0, 37, 74, 0, 0, 38, 0, 0, 76, 0, 78, 0, 80, 39, 40, 254, 0, - 41, 0, 0, 84, 0, 0, 0, 0, 0, 0, - 24, 0, 25, 0, 0, 26, 636, 1209, 0, 0, - 27, 0, 0, 0, 28, 89, 90, 91, 255, 0, - 0, 0, 0, 30, 635, 0, 635, 95, 0, 635, - 32, 635, 635, 0, 635, 33, 635, 1210, 635, 34, - 635, 635, 635, 0, 0, 0, 635, 635, 0, 0, - 0, 36, 635, 37, 635, 635, 0, 38, 1211, 635, - 0, 0, 0, 635, 0, 39, 40, 0, 0, 41, - 0, 0, 319, 105, 256, 635, 0, 635, 0, 0, - 0, 635, 635, 0, 0, 0, 0, 0, 0, 635, - 635, 0, 635, 635, 635, 0, 635, 635, 0, 635, - 635, 635, 635, 0, 635, 0, 635, 0, 635, 635, - 635, 0, 0, 0, 635, 635, 0, 0, 0, 0, - 635, 0, 635, 635, 0, 0, 0, 635, 0, 0, - 0, 635, 0, 0, 0, 0, 635, 0, 0, 0, - 0, 0, 0, 635, 0, 635, 0, 0, 0, 635, - 635, 0, 0, 352, 0, 0, 0, 635, 635, 0, - 0, 635, 0, 0, 635, 0, 24, 0, 25, 635, - 0, 26, 0, 0, 1269, 0, 27, 635, 676, 0, - 28, 0, 677, 1270, 1271, 0, 0, 0, 1272, 30, - 0, 0, 0, 0, 1273, 0, 32, 0, 24, 0, - 25, 33, 0, 26, 0, 34, 1269, 0, 27, 0, - 676, 0, 28, 0, 677, 1270, 1271, 36, 0, 37, - 1272, 30, 0, 38, 0, 0, 1273, 0, 32, 0, - 0, 39, 40, 33, 0, 41, 0, 34, 1274, 0, - 0, 0, 46, 1275, 46, 635, 0, 46, 0, 36, - 0, 37, 46, 0, 0, 38, 46, 0, 0, 0, - 0, 0, 0, 39, 40, 46, 0, 41, 0, 0, - 1274, 0, 46, 0, 46, 1275, 46, 46, 1276, 46, - 0, 46, 0, 46, 46, 46, 0, 0, 46, 0, - 46, 0, 0, 46, 0, 46, 0, 46, 0, 46, - 0, 0, 46, 0, 46, 0, 0, 46, 46, 46, - 0, 46, 0, 46, 46, 46, 0, 46, 46, 1277, - 46, 0, 46, 46, 0, 46, 0, 46, 46, 0, - 0, 46, 46, 0, 46, 0, 0, 0, 0, 46, - 46, 46, 0, 46, 0, 0, 46, 0, 46, 151, - 24, 1277, 25, 46, 0, 26, 0, 46, 0, 46, - 27, 46, 0, 0, 28, 0, 46, 0, 0, 46, - 0, 46, 0, 30, 0, 46, 0, 0, 46, 151, - 32, 0, 0, 46, 46, 33, 0, 46, 0, 34, - 46, 564, 0, 0, 0, 46, 0, 0, 565, 0, - 0, 36, 0, 37, 0, 0, 0, 38, 0, 0, - 566, 0, 0, 0, 0, 39, 40, 0, 0, 41, - 0, 24, 567, 25, 0, 0, 26, 46, 0, 0, - 0, 27, 0, 0, 0, 28, 0, 0, 0, 29, - 24, 0, 25, 0, 30, 26, 0, 0, 0, 31, - 27, 32, 0, 0, 28, 0, 33, 0, 0, 0, - 34, 35, 0, 30, 0, 0, 0, 0, 0, 0, - 32, 46, 36, 0, 37, 33, 0, 0, 38, 34, - 0, 0, 0, 0, 0, 0, 39, 40, 0, 0, - 41, 36, 0, 37, 24, 0, 25, 38, 0, 26, - 0, 0, 0, 568, 27, 39, 40, 0, 28, 41, - 0, 24, 319, 25, 0, 0, 26, 30, 0, 0, - 0, 27, 0, 0, 32, 28, 0, 0, 0, 33, - 0, 0, 0, 34, 30, 0, 0, 0, 290, 0, - 0, 32, 0, 0, 0, 36, 33, 37, 0, 0, - 34, 38, 0, 0, 0, 0, 0, 0, 0, 39, - 40, 0, 36, 41, 37, 484, 567, 484, 38, 0, - 484, 0, 0, 0, 42, 484, 39, 40, 0, 484, - 41, 0, 0, 747, 0, 0, 0, 0, 484, 171, - 0, 171, 0, 320, 171, 484, 0, 0, 0, 171, - 484, 0, 0, 171, 484, 0, 0, 0, 0, 0, - 0, 0, 171, 0, 0, 0, 484, 0, 484, 171, - 0, 0, 484, 0, 171, 0, 0, 0, 171, 0, - 484, 484, 0, 0, 484, 0, 0, 484, 0, 170, - 171, 170, 171, 0, 170, 0, 171, 352, 0, 170, - 0, 0, 0, 170, 171, 171, 0, 0, 171, 0, - 0, 171, 170, 180, 352, 180, 0, 0, 180, 170, - 0, 0, 0, 180, 170, 0, 0, 180, 170, 0, - 0, 0, 0, 0, 0, 0, 180, 0, 0, 0, - 170, 0, 170, 180, 0, 0, 170, 0, 180, 0, - 0, 0, 180, 0, 170, 170, 0, 0, 170, 0, - 33, 170, 0, 0, 180, 0, 180, 0, 484, 0, - 180, 33, 0, 0, 0, 0, 33, 0, 180, 180, - 33, 0, 180, 33, 0, 180, 0, 0, 0, 0, - 0, 0, 171, 0, 0, 33, 33, 0, 0, 0, - 33, 33, 0, 31, 0, 0, 33, 0, 33, 33, - 33, 33, 0, 0, 31, 0, 33, 0, 0, 31, - 33, 0, 33, 31, 0, 0, 31, 0, 0, 0, - 0, 0, 33, 0, 33, 33, 0, 33, 31, 31, - 0, 33, 170, 31, 31, 0, 0, 0, 0, 31, - 0, 31, 31, 31, 31, 0, 0, 0, 0, 31, - 0, 33, 0, 31, 0, 31, 180, 33, 33, 0, - 0, 0, 46, 0, 0, 31, 0, 0, 31, 0, - 31, 0, 0, 46, 31, 0, 0, 0, 46, 0, - 0, 0, 46, 0, 0, 46, 0, 0, 0, 0, - 0, 0, 0, 0, 31, 0, 0, 46, 46, 0, - 31, 31, 46, 46, 0, 46, 0, 0, 46, 0, - 46, 46, 46, 46, 0, 0, 46, 0, 46, 0, - 0, 46, 46, 0, 46, 46, 0, 0, 46, 0, - 0, 0, 0, 0, 46, 0, 0, 46, 0, 46, - 46, 46, 0, 46, 0, 46, 46, 46, 0, 0, - 0, 46, 0, 46, 46, 46, 46, 0, 0, 0, - 0, 46, 0, 46, 0, 46, 0, 46, 0, 35, - 46, 0, 0, 0, 0, 0, 0, 46, 0, 0, - 46, 0, 46, 46, 0, 46, 46, 0, 46, 0, - 0, 0, 0, 46, 0, 46, 46, 46, 46, 0, - 0, 0, 0, 46, 0, 0, 46, 46, 46, 0, - 0, 0, 36, 0, 0, 0, 0, 0, 0, 46, - 0, 46, 46, 46, 46, 46, 46, 0, 0, 0, - 0, 46, 0, 46, 46, 46, 46, 0, 0, 0, - 0, 46, 0, 0, 0, 46, 46, 0, 46, 0, - 46, 46, 0, 0, 192, 0, 0, 46, 0, 46, - 46, 46, 46, 0, 46, 0, 0, 0, 0, 46, - 0, 46, 46, 46, 46, 0, 0, 0, 0, 46, - 0, 0, 0, 46, 46, 0, 46, 0, 46, 46, - 0, 46, 194, 46, 0, 46, 0, 46, 46, 0, - 46, 0, 46, 0, 0, 0, 0, 46, 0, 46, - 46, 46, 46, 0, 46, 0, 0, 46, 0, 0, - 0, 46, 0, 0, 46, 0, 0, 46, 0, 0, - 296, 448, 46, 46, 0, 0, 46, 46, 46, 46, - 46, 46, 46, 0, 0, 46, 0, 46, 0, 0, - 0, 46, 0, 0, 449, 0, 0, 0, 0, 0, - 0, 448, 46, 46, 46, 46, 46, 450, 46, 0, - 0, 451, 452, 0, 0, 0, 0, 453, 0, 454, - 455, 456, 457, 0, 449, 0, 0, 458, 0, 0, - 0, 459, 46, 0, 0, 0, 0, 450, 0, 0, - 0, 0, 452, 460, 0, 0, 461, 453, 462, 454, - 455, 456, 457, 0, 0, 0, 0, 458, 0, 0, - 0, 459, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 463, 460, 0, 0, 461, 0, 462, 0, + 41, 0, 0, 0, 0, 0, 0, 590, 0, 0, + 87, 88, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 89, 90, 91, 92, 93, + 0, 0, 0, 0, 0, 0, 0, 95, 0, 0, + 591, 0, 0, 97, 98, 99, 100, 0, 0, 0, + 101, 0, 102, 0, 0, 0, 0, 0, 103, 104, + 0, 0, 0, 0, 0, 0, 56, 24, 0, 25, + 0, 0, 26, 253, 0, 0, 0, 27, 61, 62, + 0, 28, 0, 105, 106, 107, 108, 64, 0, 0, + 30, 0, 0, 0, 0, 0, 0, 32, 0, 0, + 0, 0, 33, 0, 71, 72, 34, 0, 588, 0, + 0, 0, 0, 0, 0, 589, 0, 0, 36, 0, + 37, 74, 0, 0, 38, 0, 0, 76, 0, 78, + 0, 80, 39, 40, 254, 0, 41, 0, 0, 0, + 0, 0, 0, 590, 0, 0, 87, 88, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 89, 90, 91, 92, 93, 0, 0, 0, 0, + 0, 0, 0, 95, 0, 0, 0, 0, 0, 97, + 98, 99, 100, 0, 0, 0, 101, 0, 102, 0, + 0, 0, 0, 0, 103, 104, 0, 0, 0, 0, + 0, 0, 56, 24, 0, 25, 0, 0, 26, 253, + 0, 0, 0, 27, 61, 62, 0, 28, 0, 105, + 106, 107, 108, 64, 0, 0, 30, 0, 0, 0, + 0, 0, 0, 32, 0, 0, 0, 0, 33, 0, + 71, 72, 34, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 36, 0, 37, 74, 0, 0, + 38, 0, 0, 76, 0, 78, 0, 80, 39, 40, + 254, 0, 41, 0, 0, 84, 0, 0, 0, 86, + 0, 0, 87, 88, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 89, 90, 91, + 92, 300, 0, 0, 0, 0, 0, 0, 0, 95, + 0, 0, 0, 0, 0, 97, 98, 99, 100, 0, + 0, 0, 101, 0, 102, 0, 0, 0, 0, 0, + 103, 104, 0, 0, 0, 0, 0, 0, 56, 24, + 0, 25, 0, 0, 26, 253, 0, 0, 0, 27, + 61, 62, 0, 28, 0, 105, 301, 107, 108, 64, + 0, 0, 30, 0, 0, 0, 0, 0, 0, 32, + 0, 0, 0, 0, 33, 0, 71, 72, 34, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 36, 0, 37, 74, 0, 0, 38, 0, 0, 76, + 0, 78, 0, 80, 39, 40, 254, 0, 41, 0, + 0, 0, 0, 0, 0, 86, 0, 0, 87, 88, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 89, 90, 91, 92, 300, 0, 0, + 0, 0, 875, 0, 0, 95, 0, 0, 0, 0, + 0, 97, 98, 99, 100, 0, 0, 0, 101, 0, + 102, 0, 0, 0, 0, 0, 103, 104, 0, 0, + 0, 0, 0, 0, 56, 24, 0, 25, 0, 0, + 26, 253, 0, 0, 0, 27, 61, 62, 0, 28, + 0, 105, 301, 107, 108, 64, 0, 0, 30, 0, + 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, + 33, 0, 71, 72, 34, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 36, 0, 37, 74, + 0, 0, 38, 0, 0, 76, 0, 78, 0, 80, + 39, 40, 254, 0, 41, 0, 0, 0, 0, 0, + 0, 86, 0, 0, 87, 88, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, + 90, 91, 92, 300, 0, 0, 0, 513, 0, 0, + 0, 95, 0, 0, 0, 0, 0, 97, 98, 99, + 100, 0, 0, 0, 101, 0, 102, 0, 0, 0, + 0, 0, 103, 104, 0, 0, 0, 0, 0, 0, + 56, 24, 0, 25, 0, 0, 26, 253, 0, 0, + 0, 27, 61, 62, 0, 28, 0, 105, 301, 107, + 108, 64, 0, 0, 30, 0, 0, 0, 0, 0, + 0, 32, 0, 0, 0, 0, 33, 0, 71, 72, + 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 36, 0, 37, 74, 0, 0, 38, 0, + 0, 76, 0, 78, 0, 80, 39, 40, 254, 0, + 41, 0, 0, 0, 0, 0, 0, 86, 0, 0, + 87, 88, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 89, 90, 91, 92, 300, + 0, 0, 0, 507, 0, 0, 0, 95, 0, 0, + 0, 0, 0, 97, 98, 99, 100, 0, 0, 0, + 101, 0, 102, 0, 0, 0, 0, 0, 103, 104, + 0, 0, 0, 0, 0, 0, 56, 24, 0, 25, + 0, 0, 26, 253, 0, 0, 0, 27, 61, 62, + 0, 28, 0, 105, 301, 107, 108, 64, 0, 0, + 30, 0, 0, 0, 0, 0, 0, 32, 0, 0, + 0, 0, 33, 0, 71, 72, 34, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, + 37, 74, 0, 0, 38, 0, 0, 76, 0, 78, + 0, 80, 39, 40, 254, 0, 41, 0, 0, 0, + 0, 0, 0, 86, 0, 0, 87, 88, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 89, 90, 91, 92, 300, 0, 0, 0, 0, + 0, 0, 0, 95, 0, 0, 0, 0, 0, 97, + 98, 99, 100, 0, 0, 0, 101, 0, 102, 0, + 0, 0, 0, 0, 103, 104, 0, 0, 0, 0, + 0, 0, 56, 24, 0, 25, 0, 0, 26, 253, + 0, 0, 0, 27, 61, 62, 0, 28, 0, 105, + 301, 107, 108, 64, 0, 0, 30, 0, 0, 0, + 0, 0, 0, 32, 0, 0, 0, 0, 33, 0, + 71, 72, 34, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 36, 0, 37, 74, 0, 0, + 38, 0, 0, 76, 0, 78, 0, 80, 39, 40, + 254, 0, 41, 0, 0, 0, 0, 0, 0, 86, + 0, 0, 87, 88, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 89, 90, 91, + 92, 93, 0, 0, 0, 0, 0, 0, 0, 95, + 0, 0, 0, 0, 0, 97, 98, 99, 100, 0, + 0, 0, 101, 0, 102, 0, 0, 0, 0, 0, + 103, 104, 0, 0, 0, 0, 0, 0, 56, 24, + 0, 25, 0, 0, 26, 253, 0, 0, 0, 27, + 61, 62, 0, 28, 0, 105, 106, 107, 108, 64, + 0, 0, 30, 0, 0, 0, 0, 0, 0, 32, + 0, 0, 0, 0, 33, 0, 71, 72, 34, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 36, 0, 37, 74, 0, 0, 38, 0, 0, 76, + 0, 78, 0, 80, 39, 40, 254, 0, 41, 0, + 0, 0, 0, 0, 0, 86, 0, 0, 87, 88, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 89, 90, 91, 92, 93, 0, 0, + 0, 0, 0, 0, 0, 95, 0, 0, 0, 0, + 0, 97, 98, 99, 100, 0, 0, 0, 101, 0, + 102, 0, 0, 0, 0, 0, 103, 104, 0, 0, + 0, 0, 0, 0, 77, 77, 0, 77, 0, 0, + 77, 77, 0, 0, 0, 77, 77, 77, 0, 77, + 0, 105, 1028, 107, 108, 77, 0, 0, 77, 0, + 0, 0, 0, 0, 0, 77, 0, 0, 0, 0, + 77, 0, 77, 77, 77, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 77, 0, 77, 77, + 0, 0, 77, 0, 0, 77, 0, 77, 0, 77, + 77, 77, 77, 0, 77, 0, 0, 0, 0, 0, + 0, 77, 0, 0, 77, 77, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, + 77, 77, 77, 77, 0, 0, 0, 0, 0, 0, + 0, 77, 0, 0, 0, 0, 0, 77, 77, 77, + 77, 0, 0, 0, 77, 0, 77, 0, 0, 0, + 0, 0, 77, 77, 0, 0, 0, 0, 0, 0, + 135, 135, 0, 135, 0, 0, 135, 135, 0, 0, + 0, 135, 135, 135, 0, 135, 0, 77, 77, 77, + 77, 135, 0, 0, 135, 0, 0, 0, 0, 0, + 0, 135, 0, 0, 0, 0, 135, 0, 135, 135, + 135, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 135, 0, 135, 135, 0, 0, 135, 0, + 0, 135, 0, 135, 0, 135, 135, 135, 135, 0, + 135, 0, 0, 0, 0, 0, 0, 135, 0, 0, + 135, 135, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 135, 135, 135, 135, 135, + 0, 0, 0, 0, 0, 0, 0, 135, 0, 0, + 0, 0, 0, 135, 135, 135, 135, 0, 0, 0, + 135, 0, 135, 0, 0, 0, 0, 0, 135, 135, + 0, 0, 0, 0, 0, 0, 56, 24, 0, 25, + 0, 0, 26, 253, 0, 0, 0, 27, 61, 62, + 0, 28, 0, 135, 135, 135, 135, 64, 0, 0, + 30, 0, 0, 0, 0, 0, 0, 32, 0, 27, + 0, 27, 33, 0, 71, 72, 34, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, + 37, 74, 27, 0, 38, 0, 0, 76, 0, 78, + 0, 80, 39, 40, 254, 27, 41, 0, 0, 0, + 27, 0, 0, 0, 0, 27, 0, 27, 27, 27, + 27, 0, 0, 0, 0, 27, 0, 0, 0, 27, + 0, 89, 90, 91, 255, 300, 0, 0, 0, 0, + 0, 27, 0, 95, 27, 0, 27, 0, 0, 97, + 98, 99, 100, 0, 0, 0, 101, 0, 102, 0, + 0, 0, 0, 0, 103, 104, 0, 0, 0, 0, + 27, 0, 0, 0, 0, 0, 27, 27, 0, 0, + 0, 0, 0, 0, 639, 0, 639, 0, 639, 105, + 256, 639, 108, 639, 639, 0, 639, 0, 639, 0, + 639, 0, 639, 639, 639, 0, 0, 0, 639, 639, + 0, 0, 0, 0, 639, 0, 639, 639, 0, 0, + 0, 639, 0, 0, 0, 639, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 639, 639, 0, 639, + 0, 0, 0, 639, 639, 0, 0, 0, 0, 0, + 0, 639, 639, 56, 24, 639, 25, 0, 639, 26, + 253, 0, 0, 639, 27, 61, 62, 0, 28, 0, + 0, 0, 0, 0, 64, 0, 0, 30, 0, 0, + 0, 0, 0, 0, 32, 639, 639, 0, 0, 33, + 0, 71, 72, 34, 0, 0, 0, 0, 639, 0, + 0, 0, 0, 0, 0, 36, 0, 37, 74, 0, + 0, 38, 0, 0, 76, 0, 78, 0, 80, 39, + 40, 254, 0, 41, 0, 0, 84, 0, 0, 0, + 0, 0, 0, 24, 0, 25, 0, 0, 26, 639, + 1211, 0, 0, 27, 0, 0, 0, 28, 89, 90, + 91, 255, 0, 0, 0, 0, 30, 638, 0, 638, + 95, 0, 638, 32, 638, 638, 0, 638, 33, 638, + 1212, 638, 34, 638, 638, 638, 0, 0, 0, 638, + 638, 0, 0, 0, 36, 638, 37, 638, 638, 0, + 38, 1213, 638, 0, 0, 0, 638, 0, 39, 40, + 0, 0, 41, 0, 0, 319, 105, 256, 638, 0, + 638, 0, 0, 0, 638, 638, 0, 0, 0, 0, + 0, 0, 638, 638, 0, 638, 638, 638, 0, 638, + 638, 0, 638, 638, 638, 638, 0, 638, 0, 638, + 0, 638, 638, 638, 0, 0, 0, 638, 638, 0, + 0, 0, 0, 638, 0, 638, 638, 0, 0, 0, + 638, 0, 0, 0, 638, 0, 0, 0, 0, 638, + 0, 0, 0, 0, 0, 0, 638, 0, 638, 0, + 0, 0, 638, 638, 0, 0, 352, 0, 0, 0, + 638, 638, 0, 0, 638, 0, 0, 638, 0, 24, + 0, 25, 638, 0, 26, 0, 0, 1274, 0, 27, + 638, 678, 0, 28, 0, 679, 1275, 1276, 0, 0, + 0, 1277, 30, 0, 0, 0, 0, 1278, 0, 32, + 0, 24, 0, 25, 33, 0, 26, 0, 34, 1274, + 0, 27, 0, 678, 0, 28, 0, 679, 1275, 1276, + 36, 0, 37, 1277, 30, 0, 38, 0, 0, 1278, + 0, 32, 0, 0, 39, 40, 33, 0, 41, 0, + 34, 1279, 0, 0, 0, 47, 1280, 47, 638, 0, + 47, 0, 36, 0, 37, 47, 0, 0, 38, 47, + 0, 0, 0, 0, 0, 0, 39, 40, 47, 0, + 41, 0, 0, 1279, 0, 47, 0, 47, 1280, 47, + 47, 1281, 47, 0, 47, 0, 47, 47, 47, 0, + 0, 47, 0, 47, 0, 0, 47, 0, 47, 0, + 47, 0, 47, 0, 0, 47, 0, 47, 0, 0, + 47, 47, 47, 0, 47, 0, 47, 47, 47, 0, + 47, 47, 1282, 47, 0, 47, 47, 0, 47, 0, + 47, 47, 0, 0, 47, 47, 0, 47, 0, 0, + 0, 0, 47, 47, 47, 0, 47, 0, 0, 47, + 0, 47, 153, 24, 1282, 25, 47, 0, 26, 0, + 47, 0, 47, 27, 47, 0, 0, 28, 0, 47, + 0, 0, 47, 0, 47, 0, 30, 0, 47, 0, + 0, 47, 153, 32, 0, 0, 47, 47, 33, 0, + 47, 0, 34, 47, 565, 0, 0, 0, 47, 0, + 0, 566, 0, 0, 36, 0, 37, 0, 0, 0, + 38, 0, 0, 567, 0, 0, 0, 0, 39, 40, + 0, 0, 41, 0, 24, 568, 25, 0, 0, 26, + 47, 0, 0, 0, 27, 0, 0, 0, 28, 0, + 0, 0, 29, 24, 0, 25, 0, 30, 26, 0, + 0, 0, 31, 27, 32, 0, 0, 28, 0, 33, + 0, 0, 0, 34, 35, 0, 30, 0, 0, 0, + 0, 0, 0, 32, 47, 36, 0, 37, 33, 0, + 0, 38, 34, 0, 0, 0, 0, 0, 0, 39, + 40, 0, 0, 41, 36, 0, 37, 24, 0, 25, + 38, 0, 26, 0, 0, 0, 569, 27, 39, 40, + 0, 28, 41, 0, 24, 319, 25, 0, 0, 26, + 30, 0, 0, 0, 27, 0, 0, 32, 28, 0, + 0, 0, 33, 0, 0, 0, 34, 30, 0, 0, + 0, 290, 0, 0, 32, 0, 0, 0, 36, 33, + 37, 0, 0, 34, 38, 0, 0, 0, 0, 0, + 0, 0, 39, 40, 0, 36, 41, 37, 487, 568, + 487, 38, 0, 487, 0, 0, 0, 42, 487, 39, + 40, 0, 487, 41, 0, 0, 749, 0, 0, 0, + 0, 487, 173, 0, 173, 0, 320, 173, 487, 0, + 0, 0, 173, 487, 0, 0, 173, 487, 0, 0, + 0, 0, 0, 0, 0, 173, 0, 0, 0, 487, + 0, 487, 173, 0, 0, 487, 0, 173, 0, 0, + 0, 173, 0, 487, 487, 0, 0, 487, 0, 0, + 487, 0, 172, 173, 172, 173, 0, 172, 0, 173, + 352, 0, 172, 0, 0, 0, 172, 173, 173, 0, + 0, 173, 0, 0, 173, 172, 182, 352, 182, 0, + 0, 182, 172, 0, 0, 0, 182, 172, 0, 0, + 182, 172, 0, 0, 0, 0, 0, 0, 0, 182, + 0, 0, 0, 172, 0, 172, 182, 0, 0, 172, + 0, 182, 0, 0, 0, 182, 0, 172, 172, 0, + 0, 172, 0, 33, 172, 0, 0, 182, 0, 182, + 0, 487, 0, 182, 33, 0, 0, 0, 0, 33, + 0, 182, 182, 33, 0, 182, 33, 0, 182, 0, + 0, 0, 0, 0, 0, 173, 0, 0, 33, 33, + 0, 0, 0, 33, 33, 0, 31, 0, 0, 33, + 0, 33, 33, 33, 33, 0, 0, 31, 0, 33, + 0, 0, 31, 33, 0, 33, 31, 0, 0, 31, + 0, 0, 0, 0, 0, 33, 0, 33, 33, 0, + 33, 31, 31, 0, 33, 172, 31, 31, 0, 0, + 0, 0, 31, 0, 31, 31, 31, 31, 0, 0, + 0, 0, 31, 0, 33, 0, 31, 0, 31, 182, + 33, 33, 0, 0, 0, 47, 0, 0, 31, 0, + 0, 31, 0, 31, 0, 0, 47, 31, 0, 0, + 0, 47, 0, 0, 0, 47, 0, 0, 47, 0, + 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, + 47, 47, 0, 31, 31, 47, 47, 0, 47, 0, + 0, 47, 0, 47, 47, 47, 47, 0, 0, 47, + 0, 47, 0, 0, 47, 47, 0, 47, 47, 0, + 0, 47, 0, 0, 0, 0, 0, 47, 0, 0, + 47, 0, 47, 47, 47, 0, 47, 0, 47, 47, + 47, 0, 0, 0, 47, 0, 47, 47, 47, 47, + 0, 0, 0, 0, 47, 0, 47, 0, 47, 0, + 47, 0, 35, 47, 0, 0, 0, 0, 0, 0, + 47, 0, 0, 47, 0, 47, 47, 0, 47, 47, + 0, 47, 0, 0, 0, 0, 47, 0, 47, 47, + 47, 47, 0, 0, 0, 0, 47, 0, 0, 47, + 47, 47, 0, 0, 0, 36, 0, 0, 0, 0, + 0, 0, 47, 0, 47, 47, 47, 47, 0, 47, + 0, 0, 0, 0, 47, 0, 47, 47, 47, 47, + 0, 0, 0, 0, 47, 0, 0, 0, 47, 47, + 0, 47, 0, 47, 47, 0, 0, 194, 0, 0, + 47, 0, 47, 47, 47, 47, 47, 47, 0, 0, + 0, 0, 47, 0, 47, 47, 47, 47, 0, 0, + 47, 0, 47, 0, 0, 0, 47, 47, 0, 47, + 0, 47, 47, 0, 0, 196, 0, 0, 47, 0, + 47, 47, 47, 47, 0, 47, 0, 0, 0, 0, + 47, 0, 47, 47, 47, 47, 0, 0, 0, 0, + 47, 0, 0, 0, 47, 47, 0, 47, 0, 0, + 0, 0, 47, 297, 47, 0, 47, 0, 47, 47, + 0, 47, 0, 47, 0, 0, 0, 0, 47, 0, + 47, 47, 47, 47, 0, 47, 0, 0, 47, 0, + 0, 0, 47, 0, 0, 47, 0, 0, 47, 0, + 0, 298, 448, 47, 47, 0, 0, 47, 47, 47, + 47, 47, 47, 47, 0, 0, 47, 0, 47, 0, + 0, 0, 47, 0, 0, 449, 0, 0, 0, 0, + 0, 0, 448, 47, 47, 47, 47, 47, 450, 47, + 0, 0, 451, 452, 0, 0, 0, 0, 453, 0, + 454, 455, 456, 457, 0, 449, 0, 0, 458, 0, + 0, 0, 459, 47, 0, 0, 0, 0, 450, 0, + 0, 0, 0, 452, 460, 0, 0, 461, 453, 462, + 454, 455, 456, 457, 0, 0, 0, 0, 458, 0, + 0, 0, 459, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 463, 460, 0, 0, 461, 0, 462, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 463, + 0, 0, 0, 463, }; protected static readonly short [] yyCheck = { 17, - 17, 17, 191, 17, 4, 68, 510, 20, 6, 51, - 299, 298, 189, 18, 20, 512, 232, 247, 465, 336, - 553, 59, 318, 486, 87, 88, 188, 157, 288, 92, - 329, 84, 59, 297, 295, 711, 351, 713, 1095, 737, - 351, 268, 920, 770, 58, 578, 77, 1130, 1131, 0, - 570, 47, 256, 234, 113, 73, 115, 268, 256, 77, - 113, 325, 115, 256, 268, 79, 256, 81, 256, 256, - 256, 925, 256, 256, 87, 88, 779, 95, 256, 87, - 88, 757, 256, 256, 760, 59, 256, 256, 256, 256, - 256, 256, 256, 268, 1177, 108, 376, 277, 256, 256, - 108, 276, 17, 1420, 1421, 17, 264, 256, 370, 172, - 341, 256, 374, 357, 368, 257, 1216, 820, 821, 93, - 256, 305, 17, 97, 98, 99, 100, 101, 102, 103, - 104, 320, 1232, 398, 399, 655, 366, 17, 369, 157, - 157, 157, 386, 157, 408, 17, 282, 189, 17, 429, - 343, 339, 17, 256, 1090, 17, 344, 368, 346, 256, - 1477, 17, 17, 352, 352, 353, 339, 325, 357, 17, - 256, 344, 0, 346, 340, 429, 363, 17, 314, 352, - 353, 294, 372, 363, 247, 256, 199, 200, 363, 372, - 232, 199, 200, 306, 339, 422, 259, 1051, 391, 367, - 369, 369, 256, 371, 372, 375, 374, 506, 376, 256, - 367, 422, 369, 429, 371, 526, 381, 714, 422, 59, - 418, 414, 509, 63, 927, 374, 929, 223, 931, 247, - 228, 418, 418, 548, 252, 428, 553, 548, 418, 419, - 418, 429, 157, 418, 418, 157, 435, 285, 261, 430, - 418, 418, 420, 261, 418, 423, 429, 295, 285, 570, - 323, 578, 157, 420, 317, 328, 423, 326, 321, 372, - 288, 256, 418, 326, 287, 293, 294, 157, 0, 287, - 469, 367, 418, 1010, 381, 157, 299, 314, 157, 307, - 376, 1391, 157, 306, 312, 157, 314, 256, 306, 313, - 318, 157, 157, 366, 367, 418, 257, 983, 256, 157, - 381, 285, 330, 331, 1017, 369, 1019, 157, 1418, 336, - 336, 295, 256, 256, 355, 372, 300, 1025, 1385, 256, - 1430, 1200, 1432, 335, 262, 348, 856, 355, 351, 1200, - 348, 656, 335, 256, 655, 1176, 1073, 372, 366, 367, - 413, 414, 415, 371, 372, 373, 374, 375, 376, 377, - 378, 379, 380, 381, 1195, 676, 256, 358, 1451, 256, - 298, 325, 385, 386, 1243, 256, 368, 385, 386, 568, - 1083, 368, 1243, 368, 897, 403, 325, 429, 1324, 374, - 887, 580, 256, 582, 1272, 584, 370, 439, 1481, 256, - 413, 414, 698, 866, 429, 413, 414, 305, 382, 383, - 384, 370, 1115, 387, 388, 374, 1352, 1353, 431, 1355, - 368, 256, 485, 363, 487, 431, 374, 429, 1104, 257, - 1366, 358, 445, 1369, 257, 1111, 369, 429, 372, 445, - 436, 437, 429, 1146, 272, 285, 442, 510, 1384, 277, - 378, 379, 1283, 281, 684, 716, 1287, 370, 647, 486, - 1136, 374, 266, 526, 418, 479, 363, 530, 296, 784, - 349, 350, 1408, 784, 314, 339, 363, 666, 418, 418, - 977, 1312, 372, 370, 341, 372, 1189, 374, 369, 1002, - 508, 1004, 510, 343, 512, 323, 336, 424, 425, 426, - 427, 369, 1205, 367, 339, 266, 569, 277, 522, 523, - 314, 281, 369, 526, 342, 368, 349, 350, 536, 305, - 526, 418, 368, 541, 21, 263, 1202, 357, 349, 350, - 376, 418, 367, 372, 256, 548, 553, 553, 376, 369, - 855, 391, 372, 373, 343, 856, 560, 256, 372, 294, - 429, 363, 372, 314, 372, 52, 386, 570, 368, 370, - 306, 578, 578, 374, 414, 343, 853, 313, 363, 587, - 588, 375, 342, 636, 804, 638, 429, 315, 428, 368, - 61, 880, 381, 429, 65, 66, 67, 263, 69, 70, - 429, 421, 391, 74, 75, 725, 429, 368, 418, 376, - 81, 575, 83, 381, 85, 429, 418, 1140, 429, 90, - 91, 429, 357, 391, 375, 414, 634, 339, 363, 429, - 884, 684, 640, 418, 369, 368, 1200, 372, 373, 428, - 339, 920, 372, 114, 374, 344, 414, 346, 701, 315, - 429, 386, 655, 352, 353, 367, 486, 418, 272, 371, - 428, 373, 374, 375, 376, 372, 363, 374, 374, 381, - 1200, 371, 369, 676, 256, 1200, 684, 371, 261, 1243, - 272, 363, 296, 418, 1137, 418, 421, 369, 716, 677, - 698, 369, 272, 256, 980, 373, 367, 418, 751, 429, - 371, 284, 394, 395, 296, 748, 714, 428, 376, 323, - 416, 719, 294, 1243, 297, 992, 296, 896, 1243, 302, - 420, 418, 429, 553, 307, 945, 309, 310, 311, 312, - 783, 323, 315, 1200, 317, 339, 418, 367, 321, 742, - 744, 1200, 305, 323, 742, 423, 799, 381, 578, 420, - 333, 804, 716, 336, 762, 338, 764, 391, 1199, 1200, - 1200, 1290, 765, 367, 768, 374, 770, 765, 371, 822, - 373, 779, 376, 414, 1303, 269, 1243, 780, 1219, 362, - 414, 784, 780, 254, 1243, 368, 257, 428, 978, 392, - 393, 799, 286, 1322, 428, 256, 804, 805, 830, 807, - 391, 1108, 1243, 1243, 1245, 272, 256, 416, 269, 412, - 277, 1061, 820, 821, 281, 357, 1006, 420, 1095, 367, - 423, 363, 1001, 414, 381, 286, 297, 369, 376, 296, - 372, 373, 374, 1140, 391, 838, 371, 428, 891, 310, - 893, 875, 838, 851, 386, 853, 899, 414, 1098, 386, - 391, 401, 886, 856, 857, 843, 323, 414, 357, 857, - 868, 428, 357, 413, 357, 1172, 1303, 875, 1088, 418, - 923, 1023, 418, 414, 373, 342, 418, 885, 373, 887, - 373, 711, 428, 713, 1134, 389, 1373, 386, 306, 339, - 308, 386, 945, 386, 344, 313, 346, 347, 348, 349, - 350, 351, 352, 353, 354, 355, 356, 325, 961, 306, - 373, 370, 371, 376, 370, 374, 313, 920, 368, 927, - 370, 929, 372, 931, 374, 375, 376, 757, 325, 384, - 760, 387, 388, 294, 371, 385, 373, 945, 6, 942, - 390, 382, 383, 1149, 379, 306, 942, 950, 1435, 17, - 400, 401, 950, 1254, 385, 396, 397, 1207, 1125, 369, - 1261, 368, 373, 413, 952, 376, 954, 374, 956, 977, - 339, 381, 980, 367, 381, 344, 400, 346, 367, 429, - 349, 350, 376, 352, 353, 1472, 390, 376, 370, 367, - 367, 59, 374, 1272, 371, 63, 373, 374, 376, 376, - 1494, 1495, 369, 367, 381, 374, 1010, 415, 367, 1017, - 481, 1019, 376, 1021, 370, 367, 339, 376, 374, 87, - 88, 344, 256, 346, 376, 373, 349, 350, 376, 352, - 353, 265, 374, 267, 376, 1088, 270, 418, 415, 381, - 108, 275, 1032, 367, 372, 279, 374, 371, 376, 373, - 374, 522, 376, 1061, 288, 370, 367, 381, 369, 374, - 429, 295, 391, 392, 393, 394, 300, 1075, 1076, 1073, - 304, 369, 367, 418, 372, 1083, 371, 371, 373, 374, - 1088, 376, 316, 371, 318, 373, 381, 1095, 322, 157, - 1098, 415, 256, 1125, 1089, 1127, 330, 331, 1277, 418, - 334, 1108, 1108, 337, 414, 415, 429, 1115, 1385, 372, - 372, 374, 374, 376, 1122, 370, 371, 1149, 373, 374, - 375, 1300, 372, 339, 374, 1128, 1134, 277, 344, 363, - 346, 199, 200, 1140, 1140, 1314, 352, 353, 1146, 1147, - 370, 370, 372, 372, 374, 374, 367, 374, 1180, 376, - 339, 376, 1331, 983, 1333, 344, 370, 346, 372, 376, - 349, 350, 373, 352, 353, 1172, 1172, 1199, 1200, 339, - 376, 386, 387, 388, 344, 374, 346, 376, 1181, 349, - 350, 1189, 352, 353, 418, 374, 370, 1219, 372, 370, - 370, 372, 372, 261, 1247, 1198, 372, 1205, 374, 1207, - 1198, 372, 370, 374, 372, 370, 0, 372, 374, 376, - 376, 1243, 374, 1245, 376, 354, 355, 285, 93, 287, - 354, 355, 97, 98, 99, 100, 101, 102, 103, 104, - 374, 299, 376, 374, 339, 376, 364, 365, 306, 344, - 429, 346, 349, 350, 349, 350, 314, 352, 353, 294, - 1253, 1254, 294, 1257, 343, 1253, 372, 373, 1261, 429, - 364, 365, 1093, 1094, 389, 390, 1269, 1270, 336, 1272, - 372, 1269, 1270, 376, 1104, 1278, 395, 396, 1108, 261, - 348, 1111, 414, 351, 369, 418, 372, 1290, 418, 1292, - 368, 418, 1295, 375, 1292, 372, 376, 1295, 374, 372, - 1303, 372, 284, 294, 1308, 294, 1136, 374, 372, 372, - 1140, 372, 374, 371, 256, 297, 256, 385, 386, 1322, - 302, 376, 374, 294, 429, 307, 375, 309, 310, 311, - 312, 1363, 294, 315, 381, 317, 356, 372, 374, 321, - 373, 375, 1172, 374, 373, 413, 414, 372, 1380, 418, - 374, 333, 374, 381, 336, 0, 338, 374, 376, 374, - 372, 1393, 1394, 429, 423, 1373, 374, 1371, 367, 372, - 421, 373, 1202, 343, 372, 294, 294, 1385, 374, 374, - 362, 418, 370, 367, 371, 375, 368, 369, 1420, 1421, - 256, 418, 256, 374, 1402, 256, 256, 280, 381, 339, - 256, 367, 343, 368, 344, 372, 346, 347, 348, 349, - 350, 351, 352, 353, 354, 355, 356, 376, 486, 370, - 376, 371, 374, 376, 370, 300, 374, 1435, 368, 372, - 370, 423, 372, 372, 374, 375, 376, 372, 347, 351, - 367, 1494, 1495, 381, 381, 1477, 368, 381, 256, 371, - 390, 373, 374, 256, 329, 372, 376, 368, 526, 347, - 400, 401, 256, 370, 1472, 375, 374, 370, 262, 375, - 392, 393, 367, 413, 1478, 1479, 370, 348, 368, 372, - 548, 1485, 1486, 374, 339, 553, 1494, 1495, 418, 429, - 412, 372, 374, 418, 348, 370, 376, 375, 420, 368, - 367, 423, 570, 368, 298, 367, 356, 382, 383, 384, - 578, 381, 387, 388, 389, 390, 391, 392, 393, 394, - 395, 396, 397, 398, 399, 400, 401, 402, 367, 376, - 371, 374, 368, 368, 372, 368, 337, 305, 369, 418, - 0, 418, 418, 371, 371, 339, 418, 367, 371, 371, - 344, 376, 346, 347, 348, 349, 350, 351, 352, 353, - 354, 355, 356, 357, 371, 418, 381, 373, 367, 363, - 381, 371, 369, 367, 368, 369, 370, 371, 372, 373, - 374, 375, 376, 371, 378, 379, 371, 655, 382, 383, - 384, 385, 386, 372, 372, 389, 390, 374, 373, 373, - 394, 395, 396, 397, 398, 399, 400, 401, 676, 374, - 374, 256, 256, 374, 418, 372, 261, 262, 376, 413, - 372, 370, 416, 418, 418, 376, 420, 418, 376, 423, - 372, 506, 0, 376, 418, 429, 372, 381, 367, 284, - 372, 368, 381, 711, 370, 713, 368, 372, 315, 263, - 371, 371, 297, 298, 368, 372, 372, 302, 0, 0, - 305, 367, 307, 376, 309, 310, 311, 312, 368, 372, - 0, 376, 317, 368, 742, 372, 321, 418, 372, 370, - 325, 367, 372, 376, 368, 368, 367, 376, 333, 757, - 370, 336, 760, 338, 339, 418, 368, 765, 376, 344, - 575, 346, 347, 348, 349, 350, 351, 352, 353, 354, - 355, 356, 780, 372, 418, 376, 784, 362, 363, 376, - 372, 376, 367, 368, 372, 370, 371, 372, 373, 374, - 375, 376, 368, 378, 379, 368, 381, 382, 383, 384, - 385, 386, 387, 388, 389, 390, 367, 392, 393, 394, - 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, - 405, 406, 407, 408, 409, 410, 411, 412, 413, 372, - 368, 416, 372, 418, 368, 420, 367, 376, 423, 376, - 373, 376, 315, 263, 429, 0, 376, 376, 856, 857, - 376, 376, 376, 376, 50, 12, 256, 257, 51, 5, - 942, 1088, 1088, 1245, 264, 265, 266, 267, 268, 1425, - 270, 271, 838, 273, 274, 275, 276, 277, 278, 279, - 280, 1219, 1388, 1441, 676, 285, 1405, 287, 288, 289, - 290, 291, 292, 1376, 1278, 295, 859, 1371, 859, 299, - 300, 690, 302, 303, 304, 859, 855, 1290, 1486, 1309, - 1243, 1231, 920, 1480, 314, 1394, 316, 1393, 318, 319, - 1398, 1333, 322, 1180, 324, 325, 326, 327, 328, 329, - 330, 331, 332, 333, 334, 335, 1278, 337, 1479, 526, - 340, 341, 950, 830, 344, 345, 880, 719, 256, 1181, - 804, 366, 588, 992, 262, 799, 71, 684, 716, 359, - 360, 361, 362, 363, 332, 397, 399, 367, 368, 398, - 400, 371, 1163, 401, 548, 983, 376, 377, 378, 379, - 380, 402, 368, 1253, 384, 371, 386, 373, 374, 1172, - 298, 1108, 392, 393, 157, 979, 784, 1066, 1053, 1076, - 1064, 0, 1137, 524, 963, 421, 392, 393, 1249, 1006, - 1147, 836, 901, -1, -1, -1, -1, 417, 418, 419, - 420, 835, 422, -1, -1, -1, 412, -1, -1, 429, - -1, 339, -1, -1, 420, -1, 344, 423, 346, 347, - 348, 349, 350, 351, 352, 353, 354, 355, 356, -1, - -1, -1, -1, -1, -1, 363, -1, -1, -1, 367, - 368, -1, 370, 371, 372, 880, 374, 375, 376, -1, - 378, 379, -1, -1, 382, 383, 384, 385, -1, -1, - -1, 389, 390, -1, -1, -1, 394, 395, 396, 397, - 398, 399, 400, 401, -1, -1, 1104, -1, -1, -1, - 1108, -1, 257, 1111, -1, 413, 261, -1, 416, -1, - 418, -1, -1, -1, -1, -1, -1, 272, -1, -1, - 1128, 429, 277, -1, -1, -1, 281, 0, 1136, 284, - -1, -1, 1140, -1, -1, -1, 256, -1, -1, -1, - -1, 296, 297, -1, -1, -1, 301, 302, -1, -1, - -1, -1, 307, -1, 309, 310, 311, 312, -1, -1, - -1, -1, 317, -1, 1172, -1, 321, -1, 323, -1, - -1, -1, -1, 1181, 381, -1, -1, -1, 333, -1, - 335, 336, -1, 338, -1, -1, -1, 342, -1, -1, - 1198, -1, -1, -1, 1202, 402, 403, 404, 405, 406, - 407, 408, 409, 410, 411, -1, -1, 362, -1, -1, - -1, -1, -1, 368, 369, -1, -1, -1, -1, 339, - -1, -1, -1, -1, 344, -1, 346, 347, 348, 349, - 350, 351, 352, 353, 354, 355, 356, -1, -1, -1, - -1, -1, -1, -1, -1, 1253, 1254, -1, 368, -1, - 370, -1, 372, 1261, 374, 375, 376, 256, 257, -1, - -1, 1269, 1270, -1, 1272, 264, 265, 266, 267, 268, - 390, 270, 271, 0, 273, 274, 275, 276, 277, 278, - 279, -1, -1, -1, 1292, -1, 285, 1295, 287, 288, - 289, 290, 291, 292, -1, -1, 295, -1, -1, -1, - 299, 300, -1, 302, 303, 304, -1, -1, -1, 429, - -1, -1, -1, -1, -1, 314, -1, 316, -1, 318, - 319, -1, -1, 322, -1, 324, 325, 326, 327, 328, - 329, 330, 331, 332, 333, 334, 335, -1, 337, -1, - -1, 340, 341, -1, -1, 344, 345, -1, -1, -1, + 4, 298, 18, 17, 234, 511, 299, 87, 88, 51, + 189, 232, 51, 513, 465, 487, 188, 318, 20, 6, + 288, 247, 17, 297, 17, 554, 59, 922, 108, 351, + 713, 157, 715, 59, 329, 1097, 336, 77, 351, 295, + 84, 739, 47, 772, 58, 256, 1218, 0, 1132, 1133, + 579, 325, 571, 256, 113, 73, 115, 256, 256, 77, + 256, 256, 256, 256, 1236, 79, 268, 81, 256, 113, + 68, 115, 1178, 256, 268, 256, 759, 95, 268, 762, + 256, 17, 256, 59, 927, 294, 256, 899, 268, 87, + 88, 1197, 1202, 17, 92, 1179, 276, 306, 325, 1295, + 372, 282, 374, 17, 335, 17, 256, 17, 257, 368, + 256, 0, 1308, 1092, 372, 17, 17, 93, 269, 199, + 200, 97, 98, 99, 100, 101, 102, 103, 104, 17, + 358, 1327, 343, 314, 408, 286, 374, 1247, 657, 157, + 366, 339, 191, 157, 17, 59, 344, 189, 346, 63, + 189, 17, 17, 17, 352, 353, 339, 429, 256, 418, + 363, 344, 157, 346, 157, 256, 368, 256, 363, 352, + 353, 429, 20, 256, 172, 370, 0, 372, 416, 374, + 391, 261, 1288, 363, 256, 256, 1292, 325, 256, 339, + 232, 418, 1004, 232, 1006, 256, 256, 367, 429, 369, + 430, 371, 372, 414, 374, 256, 376, 287, 429, 418, + 1053, 1317, 507, 510, 527, 418, 716, 428, 223, 418, + 422, 157, 418, 418, 1396, 418, 306, 549, 422, 247, + 418, 429, 422, 157, 252, 381, 549, 418, 418, 87, + 88, 228, 418, 157, 418, 157, 429, 157, 418, 247, + 420, 1423, 285, 423, 554, 157, 157, 335, 571, 285, + 108, 259, 295, 1435, 256, 1437, 256, 326, 348, 157, + 288, 320, 256, 317, 372, 293, 294, 321, 277, 579, + 418, 372, 326, 1012, 157, 256, 375, 256, 314, 307, + 781, 157, 157, 157, 312, 368, 314, 369, 381, 313, + 318, 369, 985, 352, 257, 385, 386, 358, 357, 285, + 381, 372, 330, 331, 374, 355, 256, 418, 277, 295, + 394, 395, 281, 256, 300, 323, 257, 428, 1390, 1027, + 328, 822, 823, 413, 414, 256, 658, 355, 256, 858, + 256, 336, 418, 336, 657, 418, 1075, 256, 366, 367, + 1329, 199, 200, 371, 372, 373, 374, 375, 376, 377, + 378, 379, 380, 381, 363, 678, 256, 256, 366, 367, + 341, 285, 1456, 424, 425, 426, 427, 369, 1357, 1358, + 370, 1360, 1277, 342, 374, 403, 435, 429, 372, 889, + 429, 376, 1371, 256, 370, 1374, 868, 439, 369, 700, + 314, 370, 1486, 256, 343, 374, 382, 383, 384, 369, + 1389, 387, 388, 261, 256, 413, 414, 415, 339, 418, + 419, 470, 336, 1106, 654, 363, 371, 367, 373, 431, + 1113, 436, 437, 257, 1413, 368, 376, 442, 929, 287, + 931, 374, 933, 445, 429, 263, 367, 262, 272, 339, + 339, 299, 391, 277, 372, 1138, 372, 281, 306, 368, + 686, 487, 718, 371, 786, 374, 480, 266, 363, 266, + 349, 350, 296, 786, 369, 414, 372, 367, 367, 979, + 418, 368, 371, 298, 373, 374, 375, 376, 486, 428, + 488, 509, 381, 511, 368, 513, 263, 315, 340, 323, + 348, 368, 376, 351, 367, 367, 369, 368, 371, 523, + 524, 371, 420, 511, 376, 314, 369, 314, 342, 537, + 569, 1204, 418, 418, 542, 527, 349, 350, 1019, 527, + 1021, 343, 581, 531, 583, 857, 585, 385, 386, 372, + 349, 350, 429, 343, 305, 858, 294, 561, 315, 368, + 429, 372, 363, 374, 256, 429, 363, 420, 855, 554, + 423, 554, 429, 378, 379, 413, 414, 256, 429, 381, + 588, 589, 570, 487, 368, 264, 375, 372, 375, 391, + 806, 381, 368, 431, 579, 1202, 579, 882, 1425, 1426, + 372, 391, 373, 363, 1085, 376, 429, 445, 363, 648, + 576, 727, 414, 256, 369, 305, 429, 418, 429, 357, + 429, 418, 886, 1142, 414, 363, 428, 635, 369, 668, + 429, 369, 373, 641, 372, 373, 1117, 367, 428, 922, + 1247, 371, 1202, 1202, 429, 429, 325, 339, 386, 637, + 554, 639, 344, 429, 346, 1482, 256, 429, 418, 339, + 352, 353, 305, 418, 344, 21, 346, 1148, 256, 349, + 350, 341, 352, 353, 744, 579, 272, 1139, 686, 272, + 418, 277, 423, 421, 1202, 281, 367, 1247, 1247, 527, + 420, 982, 700, 272, 374, 718, 52, 767, 686, 369, + 296, 373, 679, 296, 376, 305, 294, 994, 716, 256, + 1191, 549, 782, 721, 381, 703, 750, 296, 265, 272, + 267, 374, 357, 270, 391, 414, 1207, 323, 275, 1247, + 323, 947, 279, 571, 369, 357, 370, 372, 373, 428, + 374, 288, 746, 296, 323, 418, 342, 414, 295, 429, + 1202, 386, 718, 300, 339, 428, 764, 304, 766, 1202, + 376, 428, 1202, 416, 386, 753, 770, 339, 772, 316, + 323, 318, 344, 781, 346, 322, 401, 349, 350, 386, + 352, 353, 367, 330, 331, 391, 421, 334, 413, 859, + 337, 376, 877, 801, 391, 1247, 357, 785, 806, 807, + 832, 809, 374, 888, 1247, 1063, 376, 1247, 414, 713, + 1097, 715, 373, 801, 822, 823, 363, 414, 806, 657, + 1110, 339, 428, 381, 414, 386, 344, 294, 346, 1201, + 1202, 349, 350, 391, 352, 353, 824, 367, 428, 306, + 678, 371, 1100, 373, 374, 853, 376, 855, 840, 369, + 1222, 381, 1142, 256, 376, 759, 414, 429, 762, 898, + 371, 381, 870, 1025, 357, 6, 269, 1308, 845, 877, + 418, 418, 980, 357, 1090, 1247, 17, 1249, 1136, 887, + 373, 889, 952, 286, 1174, 415, 384, 370, 1378, 373, + 61, 374, 367, 386, 65, 66, 67, 379, 69, 70, + 1008, 376, 386, 74, 75, 893, 744, 895, 306, 306, + 81, 429, 83, 901, 85, 313, 313, 367, 59, 90, + 91, 929, 63, 931, 367, 933, 376, 325, 371, 767, + 373, 374, 373, 376, 306, 376, 308, 925, 381, 947, + 1151, 313, 389, 114, 782, 367, 87, 88, 786, 385, + 1440, 1209, 944, 325, 376, 1258, 368, 367, 1127, 947, + 400, 367, 374, 1266, 1003, 369, 376, 108, 372, 381, + 376, 979, 415, 367, 982, 963, 390, 954, 339, 956, + 370, 958, 376, 344, 369, 346, 370, 1477, 349, 350, + 374, 352, 353, 418, 1277, 382, 383, 387, 388, 1219, + 371, 370, 840, 1499, 1500, 374, 398, 399, 1012, 396, + 397, 1019, 357, 1021, 415, 1023, 157, 256, 363, 370, + 858, 859, 418, 374, 369, 418, 93, 372, 373, 374, + 97, 98, 99, 100, 101, 102, 103, 104, 376, 339, + 1034, 386, 277, 371, 344, 373, 346, 370, 371, 349, + 350, 374, 352, 353, 374, 1063, 376, 376, 199, 200, + 367, 381, 370, 371, 373, 373, 374, 375, 429, 1077, + 1078, 1075, 371, 418, 373, 376, 372, 1085, 374, 376, + 376, 985, 1090, 254, 922, 1091, 257, 294, 367, 1097, + 369, 294, 1100, 392, 393, 1127, 343, 1129, 1127, 386, + 387, 388, 1090, 1390, 372, 372, 944, 374, 372, 1117, + 374, 376, 368, 412, 952, 371, 1124, 373, 374, 1151, + 261, 420, 1151, 414, 423, 1110, 297, 1110, 1136, 429, + 1200, 372, 374, 374, 376, 376, 392, 393, 339, 310, + 1148, 1149, 418, 344, 285, 346, 287, 370, 418, 372, + 1182, 352, 353, 374, 369, 376, 412, 1142, 299, 1142, + 391, 392, 393, 394, 420, 306, 370, 423, 372, 1201, + 1202, 376, 1201, 314, 370, 261, 372, 370, 374, 372, + 370, 374, 372, 1191, 370, 418, 372, 1257, 375, 1174, + 1222, 1174, 372, 1222, 374, 336, 368, 369, 284, 1207, + 368, 1209, 1106, 372, 1274, 1275, 1110, 348, 372, 1113, + 351, 297, 372, 374, 374, 1247, 302, 1249, 354, 355, + 1249, 307, 372, 309, 310, 311, 312, 1297, 372, 315, + 1300, 317, 294, 300, 1138, 321, 294, 370, 1142, 372, + 354, 355, 367, 1282, 385, 386, 371, 333, 373, 374, + 336, 376, 338, 370, 374, 372, 381, 376, 1262, 374, + 372, 376, 329, 1251, 372, 374, 1305, 376, 374, 374, + 1174, 376, 413, 414, 372, 374, 362, 376, 368, 369, + 1319, 256, 368, 369, 0, 414, 415, 364, 365, 349, + 350, 371, 1130, 372, 373, 364, 365, 1336, 374, 1338, + 1204, 1095, 1096, 370, 389, 390, 395, 396, 294, 1313, + 375, 482, 294, 381, 356, 382, 383, 384, 372, 374, + 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, + 397, 398, 399, 400, 401, 402, 1368, 373, 375, 374, + 373, 381, 372, 418, 376, 1183, 487, 374, 374, 374, + 374, 368, 523, 1385, 371, 429, 373, 374, 372, 423, + 367, 374, 1200, 372, 421, 373, 1398, 1399, 372, 343, + 1378, 374, 1376, 294, 294, 392, 393, 374, 370, 418, + 371, 375, 1390, 367, 418, 256, 527, 256, 256, 374, + 256, 381, 280, 1425, 1426, 412, 256, 367, 343, 1407, + 368, 372, 371, 420, 376, 256, 423, 370, 549, 376, + 374, 376, 374, 554, 372, 370, 372, 423, 372, 1257, + 1258, 381, 347, 351, 367, 256, 256, 376, 1266, 381, + 571, 381, 1440, 372, 368, 347, 1274, 1275, 579, 1277, + 507, 374, 372, 370, 375, 1283, 370, 370, 367, 375, + 1482, 348, 368, 339, 348, 372, 374, 1295, 368, 1297, + 374, 418, 1300, 376, 375, 418, 367, 367, 367, 1477, + 1308, 356, 0, 368, 381, 371, 368, 368, 376, 1483, + 1484, 374, 372, 337, 368, 305, 1490, 1491, 339, 1327, + 371, 1499, 1500, 344, 371, 346, 347, 348, 349, 350, + 351, 352, 353, 354, 355, 356, 369, 371, 367, 576, + 418, 1499, 1500, 418, 418, 418, 657, 368, 376, 370, + 381, 372, 371, 374, 375, 376, 371, 373, 371, 418, + 367, 381, 371, 384, 385, 369, 371, 678, 389, 390, + 256, 381, 374, 372, 372, 261, 262, 398, 399, 400, + 401, 373, 402, 403, 404, 405, 406, 407, 408, 409, + 410, 411, 413, 0, 373, 256, 374, 374, 284, 374, + 418, 372, 713, 376, 715, 372, 370, 418, 429, 381, + 376, 297, 298, 376, 372, 418, 302, 376, 372, 305, + 367, 307, 418, 309, 310, 311, 312, 372, 368, 381, + 372, 317, 370, 744, 368, 321, 315, 263, 371, 325, + 371, 368, 372, 372, 0, 0, 367, 333, 759, 368, + 336, 762, 338, 339, 376, 372, 767, 0, 344, 368, + 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, + 356, 782, 376, 372, 372, 786, 362, 363, 370, 418, + 367, 367, 368, 376, 370, 371, 372, 373, 374, 375, + 376, 368, 378, 379, 368, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 390, 372, 392, 393, 394, 395, + 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, + 406, 407, 408, 409, 410, 411, 412, 413, 376, 370, + 416, 367, 418, 418, 420, 418, 376, 423, 368, 372, + 372, 376, 376, 429, 368, 376, 368, 858, 859, 372, + 367, 372, 368, 372, 368, 367, 376, 315, 256, 257, + 373, 376, 263, 50, 0, 376, 264, 265, 266, 267, + 268, 376, 270, 271, 376, 273, 274, 275, 276, 277, + 278, 279, 280, 376, 376, 376, 376, 285, 12, 287, + 288, 289, 290, 291, 292, 5, 944, 295, 840, 1090, + 1249, 299, 300, 1090, 302, 303, 304, 1222, 1430, 1393, + 1446, 922, 1381, 1410, 1376, 1295, 314, 1283, 316, 1491, + 318, 319, 1247, 1314, 322, 678, 324, 325, 326, 327, + 328, 329, 330, 331, 332, 333, 334, 335, 861, 337, + 861, 952, 340, 341, 861, 882, 344, 345, 692, 256, + 1235, 1485, 1403, 1399, 1398, 262, 857, 1484, 1182, 1338, + 1283, 359, 360, 361, 362, 363, 832, 527, 882, 367, + 368, 1183, 721, 371, 985, 806, 589, 366, 376, 377, + 378, 379, 380, 801, 994, 71, 384, 332, 386, 686, + 397, 298, 718, 398, 392, 393, 399, 401, 400, 549, + 1165, 786, 402, 0, 1257, 157, 1174, 981, 1110, 1055, + 1078, 1008, 965, 1066, 1068, 1139, 525, 903, 1253, 417, + 418, 419, 420, 837, 422, 421, 1149, 838, -1, -1, + -1, 429, 339, -1, -1, -1, -1, 344, -1, 346, + 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, + 357, -1, -1, -1, -1, -1, 363, -1, -1, -1, + 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, + -1, 378, 379, -1, -1, 382, 383, 384, 385, 386, + -1, -1, 389, 390, -1, -1, -1, 394, 395, 396, + 397, 398, 399, 400, 401, 1106, -1, -1, -1, 1110, + -1, -1, 1113, -1, -1, -1, 413, -1, -1, 416, + -1, 418, -1, 420, -1, -1, 423, -1, -1, 1130, + -1, 257, 429, -1, 256, 261, -1, 1138, -1, 0, + -1, 1142, -1, -1, -1, -1, 272, -1, -1, -1, + -1, 277, -1, -1, -1, 281, -1, -1, 284, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 359, 360, 361, 362, 363, -1, -1, -1, 367, 368, - -1, -1, 371, -1, -1, -1, -1, 376, 377, 378, - 379, 380, -1, 256, -1, 384, -1, 386, 261, 262, - -1, -1, -1, 392, 393, -1, -1, -1, -1, -1, - -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, - -1, 284, -1, -1, -1, -1, -1, -1, 417, 418, - 419, 420, -1, 422, 297, 298, -1, -1, -1, 302, - 429, -1, 305, -1, 307, -1, 309, 310, 311, 312, - -1, -1, -1, -1, 317, -1, -1, -1, 321, -1, - -1, -1, 325, -1, -1, -1, -1, -1, -1, -1, - 333, -1, -1, 336, -1, 338, 339, -1, -1, -1, - -1, 344, -1, 346, 347, 348, 349, 350, 351, 352, - 353, 354, 355, 356, 357, -1, -1, -1, -1, 362, - 363, -1, -1, -1, 367, 368, 369, 370, 371, 372, - 373, 374, 375, 376, -1, 378, 379, -1, -1, 382, - 383, 384, 385, 386, -1, -1, 389, 390, -1, -1, - -1, 394, 395, 396, 397, 398, 399, 400, 401, 256, - -1, -1, -1, 0, 261, 262, -1, -1, -1, -1, - 413, -1, -1, 416, -1, 418, -1, 420, -1, -1, - 423, -1, -1, -1, -1, -1, 429, 284, -1, -1, + 296, 297, -1, 1174, -1, 301, 302, -1, -1, -1, + -1, 307, 1183, 309, 310, 311, 312, -1, -1, -1, + -1, 317, -1, -1, -1, 321, -1, 323, -1, 1200, + -1, -1, -1, 1204, -1, -1, -1, 333, -1, 335, + 336, -1, 338, -1, -1, -1, 342, 339, -1, -1, + -1, -1, 344, -1, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, -1, 362, -1, -1, -1, + -1, -1, 368, 369, -1, -1, 368, -1, 370, -1, + 372, -1, 374, 375, 376, -1, 1257, 1258, -1, -1, + -1, -1, -1, -1, -1, 1266, -1, -1, 390, 256, + 257, -1, -1, 1274, 1275, -1, 1277, 264, 265, 266, + 267, 268, -1, 270, 271, 0, 273, 274, 275, 276, + 277, 278, 279, -1, -1, -1, 1297, -1, 285, 1300, + 287, 288, 289, 290, 291, 292, -1, 429, 295, -1, + -1, -1, 299, 300, -1, 302, 303, 304, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 314, -1, 316, + -1, 318, 319, -1, -1, 322, -1, 324, 325, 326, + 327, 328, 329, 330, 331, 332, 333, 334, 335, -1, + 337, -1, -1, 340, 341, -1, -1, 344, 345, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 297, 298, -1, -1, -1, 302, -1, -1, 305, -1, - 307, -1, 309, 310, 311, 312, -1, -1, -1, -1, - 317, -1, -1, -1, 321, -1, -1, -1, 325, -1, - -1, -1, -1, -1, -1, -1, 333, -1, -1, 336, - -1, 338, 339, -1, -1, -1, -1, 344, -1, 346, - 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, - -1, -1, -1, -1, -1, 362, 363, -1, -1, -1, - 367, 368, 369, 370, 371, 372, -1, 374, 375, 376, - -1, 378, 379, -1, -1, 382, 383, 384, 385, 256, - -1, -1, 389, 390, 261, 262, -1, 394, 395, 396, - 397, 398, 399, 400, 401, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 413, 284, -1, 416, - -1, 418, -1, 420, -1, -1, 423, -1, 0, -1, - 297, 298, 429, -1, -1, 302, -1, -1, 305, -1, - 307, -1, 309, 310, 311, 312, -1, -1, -1, -1, - 317, -1, -1, -1, 321, -1, -1, -1, 325, -1, - -1, -1, -1, -1, -1, -1, 333, -1, -1, 336, - -1, 338, 339, -1, -1, -1, -1, 344, -1, 346, - 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, - -1, -1, -1, -1, -1, 362, 363, -1, -1, -1, - 367, 368, 369, 370, 371, 372, -1, 374, 375, 376, - -1, 378, 379, -1, -1, 382, 383, 384, 385, 256, - -1, -1, 389, 390, 261, 262, -1, 394, 395, 396, - 397, 398, 399, 400, 401, -1, -1, -1, -1, -1, - -1, 0, -1, -1, -1, -1, 413, 284, -1, 416, - -1, 418, -1, 420, -1, -1, 423, -1, -1, -1, - 297, 298, 429, -1, -1, 302, -1, -1, 305, -1, - 307, -1, 309, 310, 311, 312, -1, -1, -1, -1, - 317, -1, -1, -1, 321, -1, -1, -1, 325, -1, - -1, -1, -1, -1, -1, -1, 333, -1, -1, 336, - -1, 338, 339, -1, 0, -1, -1, 344, -1, 346, - 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, - -1, -1, -1, -1, -1, 362, 363, -1, -1, -1, - 367, 368, -1, 370, 371, 372, -1, 374, 375, 376, - -1, 378, 379, -1, -1, 382, 383, 384, 385, -1, - -1, 0, 389, 390, -1, -1, -1, 394, 395, 396, - 397, 398, 399, 400, 401, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 413, -1, -1, 416, - -1, 418, -1, -1, -1, 257, -1, -1, -1, 261, - -1, 263, 429, 265, -1, 267, -1, -1, 270, -1, + -1, -1, 359, 360, 361, 362, 363, -1, -1, -1, + 367, 368, -1, -1, 371, -1, -1, -1, -1, 376, + 377, 378, 379, 380, -1, 256, -1, 384, -1, 386, + 261, 262, -1, -1, -1, 392, 393, -1, -1, -1, + -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, + -1, -1, -1, 284, -1, -1, -1, -1, -1, -1, + 417, 418, 419, 420, -1, 422, 297, 298, -1, -1, + -1, 302, 429, -1, 305, -1, 307, -1, 309, 310, + 311, 312, -1, -1, -1, -1, 317, -1, -1, -1, + 321, -1, -1, -1, 325, -1, -1, -1, -1, -1, + -1, -1, 333, -1, -1, 336, -1, 338, 339, -1, + -1, -1, -1, 344, -1, 346, 347, 348, 349, 350, + 351, 352, 353, 354, 355, 356, 357, -1, -1, -1, + -1, 362, 363, -1, -1, -1, 367, 368, 369, 370, + 371, 372, 373, 374, 375, 376, -1, 378, 379, -1, + -1, 382, 383, 384, 385, 386, -1, -1, 389, 390, + -1, -1, -1, 394, 395, 396, 397, 398, 399, 400, + 401, 256, -1, -1, -1, 0, 261, 262, -1, -1, + -1, -1, 413, -1, -1, 416, -1, 418, -1, 420, + -1, -1, 423, -1, -1, -1, -1, -1, 429, 284, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 297, 298, -1, -1, -1, 302, -1, -1, + 305, -1, 307, -1, 309, 310, 311, 312, -1, -1, + -1, -1, 317, -1, -1, -1, 321, -1, -1, -1, + 325, -1, -1, -1, -1, -1, -1, -1, 333, -1, + -1, 336, -1, 338, 339, -1, -1, -1, -1, 344, + -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, + 355, 356, -1, -1, -1, -1, -1, 362, 363, 0, + -1, -1, 367, 368, 369, 370, 371, 372, -1, 374, + 375, 376, -1, 378, 379, -1, -1, 382, 383, 384, + 385, 256, -1, -1, 389, 390, 261, 262, -1, 394, + 395, 396, 397, 398, 399, 400, 401, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 413, 284, + -1, 416, -1, 418, -1, 420, -1, -1, 423, -1, + -1, -1, 297, 298, 429, -1, -1, 302, -1, -1, + 305, -1, 307, -1, 309, 310, 311, 312, -1, -1, + -1, -1, 317, -1, -1, -1, 321, -1, -1, -1, + 325, -1, -1, -1, -1, -1, -1, -1, 333, -1, + -1, 336, -1, 338, 339, -1, -1, -1, -1, 344, + -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, + 355, 356, -1, -1, -1, -1, -1, 362, 363, -1, + -1, -1, 367, 368, 369, 370, 371, 372, -1, 374, + 375, 376, -1, 378, 379, -1, -1, 382, 383, 384, + 385, 256, -1, -1, 389, 390, 261, 262, -1, 394, + 395, 396, 397, 398, 399, 400, 401, -1, 0, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 413, 284, + -1, 416, -1, 418, -1, 420, -1, -1, 423, -1, + -1, -1, 297, 298, 429, -1, -1, 302, -1, -1, + 305, -1, 307, -1, 309, 310, 311, 312, -1, -1, + -1, -1, 317, -1, -1, -1, 321, -1, -1, -1, + 325, -1, -1, -1, -1, -1, -1, -1, 333, -1, + -1, 336, -1, 338, 339, -1, -1, -1, -1, 344, + -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, + 355, 356, -1, -1, 0, 256, -1, 362, 363, -1, + -1, 262, 367, 368, -1, 370, 371, 372, -1, 374, + 375, 376, -1, 378, 379, -1, -1, 382, 383, 384, + 385, -1, -1, -1, 389, 390, -1, -1, -1, 394, + 395, 396, 397, 398, 399, 400, 401, 298, -1, -1, + -1, 0, -1, -1, -1, -1, -1, -1, 413, -1, + -1, 416, -1, 418, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 429, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 339, -1, + -1, -1, -1, 344, -1, 346, 347, 348, 349, 350, + 351, 352, 353, 354, 355, 356, -1, -1, -1, -1, + -1, -1, 363, -1, 0, -1, 367, 368, -1, 370, + 371, 372, -1, 374, 375, 376, -1, 378, 379, -1, + -1, 382, 383, 384, 385, -1, -1, -1, 389, 390, + -1, -1, -1, 394, 395, 396, 397, 398, 399, 400, + 401, -1, -1, -1, -1, -1, -1, 0, -1, -1, + -1, -1, 413, -1, -1, 416, -1, 418, -1, -1, + -1, -1, -1, -1, 256, 257, -1, -1, 429, 261, + -1, -1, -1, 265, -1, 267, -1, -1, 270, -1, 272, 273, -1, 275, -1, 277, -1, 279, -1, 281, - 282, 283, 284, -1, 0, 287, 288, -1, -1, -1, - -1, 293, 294, 295, 296, 297, -1, -1, 300, 301, - 302, -1, 304, -1, 306, 307, 308, 309, 310, 311, - 312, 313, -1, 315, 316, 317, 318, -1, -1, 321, - 322, 323, -1, 325, -1, -1, -1, 0, 330, 331, + 282, 283, 284, -1, -1, 287, 288, -1, -1, -1, + -1, 293, -1, 295, 296, 297, -1, -1, 300, 301, + 302, -1, 304, -1, -1, 307, -1, 309, 310, 311, + 312, 0, -1, -1, 316, 317, 318, -1, -1, 321, + 322, 323, -1, -1, -1, -1, -1, -1, 330, 331, -1, 333, 334, -1, 336, 337, 338, -1, -1, -1, - 342, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 362, -1, 364, 365, -1, -1, -1, 256, 257, -1, - 0, -1, 261, -1, -1, 377, 265, -1, 267, -1, - -1, 270, -1, 272, 273, -1, 275, -1, 277, -1, - 279, -1, 281, 282, 283, 284, -1, -1, 287, 288, - -1, -1, -1, -1, 293, -1, 295, 296, 297, -1, - -1, 300, 301, 302, -1, 304, 418, -1, 307, -1, - 309, 310, 311, 312, -1, -1, -1, 316, 317, 318, - -1, 257, 321, 322, 323, 261, -1, 0, -1, -1, - -1, 330, 331, -1, 333, 334, 272, 336, 337, 338, - -1, 277, -1, 342, -1, 281, -1, -1, 284, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 296, 297, -1, 362, -1, 301, 302, -1, 257, 368, - 369, 307, 261, 309, 310, 311, 312, -1, 377, -1, + 342, 257, -1, -1, -1, 261, -1, -1, -1, -1, + -1, -1, -1, -1, 0, -1, 272, -1, -1, -1, + 362, 277, -1, -1, -1, 281, 368, 369, 284, -1, + -1, -1, -1, -1, -1, 377, -1, -1, -1, -1, + 296, 297, -1, -1, -1, 301, 302, -1, 257, -1, + -1, 307, 261, 309, 310, 311, 312, 0, -1, -1, -1, 317, -1, 272, -1, 321, -1, 323, 277, -1, - 0, -1, 281, -1, -1, 284, -1, 333, -1, 335, + -1, -1, 281, -1, -1, 284, 418, 333, -1, 335, 336, -1, 338, -1, -1, -1, 342, 296, 297, -1, - -1, -1, 301, 302, -1, -1, -1, -1, 307, 418, + -1, -1, 301, 302, -1, -1, -1, -1, 307, -1, 309, 310, 311, 312, -1, -1, 362, -1, 317, -1, - -1, 257, 321, 369, 323, 261, -1, 0, -1, -1, - -1, -1, -1, -1, 333, -1, 272, 336, -1, 338, + -1, 257, 321, 369, 323, 261, -1, -1, -1, -1, + 0, -1, -1, -1, 333, -1, 272, 336, -1, 338, -1, 277, -1, 342, -1, 281, -1, -1, 284, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 296, 297, -1, 362, 257, 301, 302, -1, 261, 368, - 369, 307, -1, 309, 310, 311, 312, -1, -1, 272, + 369, 307, -1, 309, 310, 311, 312, 0, -1, 272, -1, 317, -1, -1, 277, 321, -1, 323, 281, -1, - 0, 284, -1, -1, -1, -1, -1, 333, -1, -1, - 336, -1, 338, 296, 297, -1, 342, 257, 301, 302, - -1, 261, -1, -1, 307, -1, 309, 310, 311, 312, - -1, -1, 272, -1, 317, -1, 362, 277, 321, -1, - 323, 281, 368, 369, 284, -1, -1, -1, -1, -1, - 333, -1, -1, 336, -1, 338, 296, 297, -1, 342, - -1, 301, 302, -1, -1, -1, -1, 307, -1, 309, - 310, 311, 312, -1, -1, -1, -1, 317, -1, 362, - -1, 321, -1, 323, 257, -1, 369, -1, 261, -1, - -1, -1, -1, 333, -1, -1, 336, -1, 338, 272, - -1, -1, 342, -1, 277, -1, -1, -1, 281, -1, - -1, 284, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 362, 296, 297, -1, -1, -1, 301, 302, + -1, 284, -1, -1, -1, -1, -1, 333, -1, -1, + 336, -1, 338, 296, 297, -1, 342, -1, 301, 302, + -1, -1, -1, -1, 307, -1, 309, 310, 311, 312, + -1, -1, -1, -1, 317, -1, 362, -1, 321, -1, + 323, -1, 368, 369, -1, -1, -1, -1, 257, -1, + 333, -1, 261, 336, 0, 338, -1, -1, -1, 342, + -1, -1, -1, 272, -1, -1, -1, -1, 277, -1, + -1, -1, 281, -1, -1, 284, -1, -1, -1, 362, + -1, -1, -1, -1, -1, -1, 369, 296, 297, -1, + -1, 257, 301, 302, -1, 261, -1, -1, 307, -1, + 309, 310, 311, 312, -1, -1, 272, -1, 317, -1, + -1, 277, 321, -1, 323, 281, -1, -1, 284, -1, + -1, -1, -1, -1, 333, -1, -1, 336, -1, 338, + 296, 297, -1, 342, 257, 301, 302, -1, 261, -1, + -1, 307, -1, 309, 310, 311, 312, -1, -1, 272, + -1, 317, -1, 362, 277, 321, -1, 323, 281, -1, + -1, 284, -1, -1, -1, -1, -1, 333, -1, -1, + 336, -1, 338, 296, 297, -1, 342, -1, 301, 302, -1, -1, -1, -1, 307, -1, 309, 310, 311, 312, - -1, -1, -1, -1, 317, -1, -1, 257, 321, -1, + -1, -1, -1, -1, 317, -1, 362, 257, 321, -1, 323, 261, -1, -1, -1, -1, -1, -1, -1, -1, 333, -1, 272, 336, -1, 338, -1, 277, -1, 342, -1, 281, -1, -1, 284, -1, -1, -1, -1, -1, @@ -11371,204 +11433,218 @@ void case_962() -1, 284, -1, 333, -1, -1, 336, -1, 338, -1, -1, -1, 342, 296, 297, -1, -1, -1, 301, 302, -1, -1, -1, -1, 307, -1, 309, 310, 311, 312, - -1, -1, 362, -1, 317, -1, -1, 257, 321, -1, - 323, 261, -1, -1, -1, -1, -1, -1, -1, -1, - 333, -1, 272, 336, -1, 338, -1, 277, -1, 342, - -1, 281, -1, -1, 284, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 296, 297, -1, 362, - -1, 301, 302, -1, -1, -1, -1, 307, -1, 309, - 310, 311, 312, -1, -1, -1, -1, 317, -1, -1, - -1, 321, -1, 323, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 333, -1, 256, 336, -1, 338, -1, - -1, -1, 342, 264, 265, 266, 267, -1, -1, 270, - 271, -1, 273, 274, 275, 276, 277, 278, 279, -1, - -1, -1, 362, -1, 285, -1, 287, 288, 289, 290, - 291, 292, -1, -1, 295, -1, -1, -1, 299, 300, - -1, 302, 303, 304, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 314, -1, 316, -1, 318, 319, -1, - -1, 322, -1, 324, 325, 326, 327, 328, 329, 330, - 331, 332, 333, 334, 335, -1, 337, -1, -1, 340, - 341, -1, 256, 344, 345, -1, -1, -1, 262, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 359, 360, - 361, 362, 363, -1, -1, -1, 367, -1, -1, -1, - 371, -1, -1, -1, -1, 376, 377, 378, 379, 380, - -1, -1, -1, 384, 298, 386, -1, -1, -1, -1, - -1, 392, 393, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 256, -1, - -1, -1, -1, -1, 262, -1, 417, 418, 419, 420, - -1, -1, -1, -1, -1, 339, -1, -1, 429, -1, - 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, - 354, 355, 356, 357, -1, -1, -1, -1, -1, 363, - 298, -1, -1, -1, 368, 369, 370, 371, 372, 373, - 374, 375, 376, -1, 378, 379, -1, 381, 382, 383, - 384, 385, 386, 387, 388, 389, 390, -1, 392, 393, - 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, - 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, - -1, 256, -1, -1, 418, -1, 420, 262, -1, 423, - -1, -1, -1, -1, -1, 429, -1, -1, -1, -1, - 368, -1, -1, 371, -1, 373, 374, -1, -1, -1, - 378, 379, -1, -1, 382, 383, 384, 385, 386, 387, - 388, 389, 390, 298, 392, 393, 394, 395, 396, 397, - 398, 399, 400, 401, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 412, 413, -1, -1, -1, -1, - -1, -1, 420, -1, -1, 423, -1, -1, -1, -1, - -1, 429, -1, 285, 339, -1, -1, -1, -1, 344, - -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, - 355, 356, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 367, 368, 369, 370, 371, 372, 373, 374, - 375, 376, 256, 378, 379, 327, 381, 382, 383, 384, - 385, 386, 387, 388, 389, 390, -1, 392, 393, 394, - 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, - 405, 406, 407, 408, 409, 410, 411, 412, 413, -1, - 256, -1, -1, -1, -1, 420, 262, -1, -1, -1, - -1, -1, -1, -1, 429, 377, 378, 379, 380, -1, - 382, 383, 384, 385, 386, 387, 388, 389, -1, -1, - 392, 393, 394, 395, 396, 397, 398, 399, -1, -1, - -1, -1, 298, -1, -1, 339, -1, -1, -1, -1, - 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, - 354, 355, 356, -1, -1, -1, -1, -1, -1, -1, - -1, 256, -1, -1, 368, -1, 370, 262, 372, -1, - 374, 375, 376, 339, -1, -1, -1, -1, 344, -1, - 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, - 356, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 367, 368, 298, 370, 371, 372, 373, 374, 375, - 376, -1, 378, 379, -1, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, 429, 392, 393, 394, 395, - 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, - 406, 407, 408, 409, 410, 411, 412, 413, -1, 256, - -1, -1, -1, -1, 420, 262, -1, 423, -1, -1, - -1, -1, -1, 429, -1, -1, -1, -1, 363, -1, - -1, -1, -1, 368, 369, -1, 371, 372, 373, 374, - -1, 376, -1, 378, 379, -1, 381, 382, 383, 384, - 385, 298, 387, 388, 389, 390, -1, 392, 393, 394, - 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, - 405, 406, 407, 408, 409, 410, 411, 412, 413, -1, - -1, -1, -1, 418, -1, 420, -1, -1, 423, -1, - -1, -1, 339, -1, 429, -1, -1, 344, -1, 346, - 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 368, -1, 370, 371, 372, 373, 374, 375, 376, - 256, 378, 379, -1, 381, 382, 383, 384, 385, 386, - 387, 388, 389, 390, -1, 392, 393, 394, 395, 396, - 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, - 407, 408, 409, 410, 411, 412, 413, -1, 256, -1, - -1, -1, -1, 420, 262, -1, 423, -1, -1, -1, - -1, -1, 429, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 298, -1, -1, 339, -1, -1, -1, -1, 344, -1, - 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 368, -1, 370, -1, 372, -1, 374, 375, - 376, 339, -1, -1, -1, -1, 344, -1, 346, 347, - 348, 349, 350, 351, 352, 353, 354, 355, 356, -1, + -1, -1, 362, -1, 317, -1, -1, -1, 321, -1, + 323, 257, -1, -1, -1, 261, -1, -1, -1, -1, + 333, -1, -1, 336, -1, 338, 272, -1, -1, 342, + -1, 277, -1, -1, -1, 281, -1, -1, 284, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 362, + 296, 297, -1, -1, -1, 301, 302, -1, -1, -1, + -1, 307, -1, 309, 310, 311, 312, -1, -1, -1, + -1, 317, -1, -1, -1, 321, -1, 323, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 333, -1, 256, + 336, -1, 338, -1, -1, -1, 342, 264, 265, 266, + 267, -1, -1, 270, 271, -1, 273, 274, 275, 276, + 277, 278, 279, -1, -1, -1, 362, -1, 285, -1, + 287, 288, 289, 290, 291, 292, -1, -1, 295, -1, + -1, -1, 299, 300, -1, 302, 303, 304, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 314, -1, 316, + -1, 318, 319, -1, -1, 322, -1, 324, 325, 326, + 327, 328, 329, 330, 331, 332, 333, 334, 335, -1, + 337, -1, -1, 340, 341, -1, 256, 344, 345, -1, + -1, -1, 262, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 359, 360, 361, 362, 363, -1, -1, -1, + 367, -1, -1, -1, 371, -1, -1, -1, -1, 376, + 377, 378, 379, 380, -1, -1, -1, 384, 298, 386, + -1, -1, -1, -1, -1, 392, 393, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 368, -1, 370, 371, 372, 373, 374, 375, 376, -1, - 378, 379, -1, 381, 382, 383, 384, 385, 386, 387, - 388, 389, 390, 429, 392, 393, 394, 395, 396, 397, - 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, - 408, 409, 410, 411, 412, 413, -1, 256, 256, -1, - -1, -1, 420, 262, -1, 423, -1, 265, -1, 267, - -1, 429, 270, -1, -1, -1, -1, 275, -1, -1, - -1, 279, -1, -1, -1, -1, -1, -1, -1, -1, - 288, -1, -1, -1, -1, -1, -1, 295, -1, 298, - -1, -1, 300, -1, -1, -1, 304, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 316, -1, - 318, -1, -1, -1, 322, -1, -1, -1, -1, -1, - -1, -1, 330, 331, -1, -1, 334, -1, -1, 337, - 339, -1, -1, -1, -1, 344, -1, 346, 347, 348, - 349, 350, 351, 352, 353, 354, 355, 356, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 368, - -1, 370, 371, 372, 373, 374, 375, 376, -1, 378, - 379, -1, 381, 382, 383, 384, 385, 386, 387, 388, - 389, 390, -1, 392, 393, 394, 395, 396, 397, 398, - 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, - 409, 410, 411, 412, 413, -1, 256, -1, 261, -1, - 418, 420, 262, -1, 423, -1, -1, -1, -1, -1, - 429, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 284, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 297, -1, -1, -1, 298, 302, - -1, -1, 305, -1, 307, -1, 309, 310, 311, 312, - -1, -1, -1, -1, 317, -1, -1, -1, 321, -1, - -1, 256, 325, -1, -1, -1, -1, 262, -1, -1, - 333, 266, -1, 336, -1, 338, -1, -1, -1, 339, - -1, -1, -1, -1, 344, -1, 346, 347, 348, 349, - 350, 351, 352, 353, 354, 355, 356, -1, -1, 362, - -1, -1, -1, 298, -1, -1, -1, -1, 368, -1, - 370, 371, 372, 373, 374, 375, 376, -1, 378, 314, + -1, -1, 256, -1, -1, -1, -1, -1, 262, -1, + 417, 418, 419, 420, -1, -1, -1, -1, -1, 339, + -1, -1, 429, -1, 344, -1, 346, 347, 348, 349, + 350, 351, 352, 353, 354, 355, 356, 357, -1, -1, + -1, -1, -1, 363, 298, -1, -1, -1, 368, 369, + 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, -1, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, -1, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 411, 412, 413, -1, 418, -1, -1, -1, -1, - 420, -1, 357, 423, -1, -1, -1, -1, 363, 429, - -1, -1, -1, 368, 369, 370, 371, 372, 373, 374, + 410, 411, 412, 413, -1, 256, -1, -1, 418, -1, + 420, 262, -1, 423, -1, -1, -1, -1, -1, 429, + -1, -1, -1, -1, 368, -1, -1, 371, -1, 373, + 374, -1, -1, -1, 378, 379, -1, -1, 382, 383, + 384, 385, 386, 387, 388, 389, 390, 298, 392, 393, + 394, 395, 396, 397, 398, 399, 400, 401, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 412, 413, + -1, -1, -1, -1, -1, -1, 420, -1, -1, 423, + -1, -1, -1, -1, -1, 429, -1, 285, 339, -1, + -1, -1, -1, 344, -1, 346, 347, 348, 349, 350, + 351, 352, 353, 354, 355, 356, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 367, 368, 369, 370, + 371, 372, 373, 374, 375, 376, 256, 378, 379, 327, + 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, + -1, 392, 393, 394, 395, 396, 397, 398, 399, 400, + 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, + 411, 412, 413, -1, 256, -1, -1, -1, -1, 420, + 262, -1, -1, -1, -1, -1, -1, -1, 429, 377, + 378, 379, 380, -1, 382, 383, 384, 385, 386, 387, + 388, 389, -1, -1, 392, 393, 394, 395, 396, 397, + 398, 399, -1, -1, -1, -1, 298, -1, -1, 339, + -1, -1, -1, -1, 344, -1, 346, 347, 348, 349, + 350, 351, 352, 353, 354, 355, 356, -1, -1, -1, + -1, -1, -1, -1, -1, 256, -1, -1, 368, -1, + 370, 262, 372, -1, 374, 375, 376, 339, -1, -1, + -1, -1, 344, -1, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 367, 368, 298, 370, 371, + 372, 373, 374, 375, 376, -1, 378, 379, -1, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 429, + 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, + 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, + 412, 413, -1, 256, -1, -1, -1, -1, 420, 262, + -1, 423, -1, -1, -1, -1, -1, 429, -1, -1, + -1, -1, 363, -1, -1, -1, -1, 368, 369, -1, + 371, 372, 373, 374, -1, 376, -1, 378, 379, -1, + 381, 382, 383, 384, 385, 298, 387, 388, 389, 390, + -1, 392, 393, 394, 395, 396, 397, 398, 399, 400, + 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, + 411, 412, 413, -1, -1, -1, -1, 418, -1, 420, + -1, -1, 423, -1, -1, -1, 339, -1, 429, -1, + -1, 344, -1, 346, 347, 348, 349, 350, 351, 352, + 353, 354, 355, 356, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 368, -1, 370, 371, 372, + 373, 374, 375, 376, 256, 378, 379, -1, 381, 382, + 383, 384, 385, 386, 387, 388, 389, 390, -1, 392, + 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, + 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, + 413, -1, 256, -1, -1, -1, -1, 420, 262, -1, + 423, -1, -1, -1, -1, -1, 429, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 298, -1, -1, 339, -1, -1, + -1, -1, 344, -1, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 368, -1, 370, -1, + 372, -1, 374, 375, 376, 339, -1, -1, -1, -1, + 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, + 354, 355, 356, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 368, -1, 370, 371, 372, 373, + 374, 375, 376, -1, 378, 379, -1, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 390, 429, 392, 393, + 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, + 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, + -1, 256, 256, -1, -1, -1, 420, 262, -1, 423, + -1, 265, -1, 267, -1, 429, 270, -1, -1, -1, + -1, 275, -1, -1, -1, 279, -1, -1, -1, -1, + -1, -1, -1, -1, 288, -1, -1, -1, -1, -1, + -1, 295, -1, 298, -1, -1, 300, -1, -1, -1, + 304, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 316, -1, 318, -1, -1, -1, 322, -1, + -1, -1, -1, -1, -1, -1, 330, 331, -1, -1, + 334, -1, -1, 337, 339, -1, -1, -1, -1, 344, + -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, + 355, 356, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 368, -1, 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, -1, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, -1, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, -1, - 256, -1, 256, 418, -1, 420, 262, -1, 423, -1, - 264, 265, -1, 267, 429, -1, 270, 271, -1, -1, - -1, 275, 276, 277, -1, 279, -1, -1, -1, -1, - -1, 285, -1, -1, 288, -1, -1, -1, -1, -1, - -1, 295, 298, -1, -1, -1, 300, -1, 302, 303, - 304, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 316, -1, 318, 319, -1, -1, 322, -1, - -1, 325, -1, 327, -1, 329, 330, 331, 332, -1, - 334, -1, -1, 339, -1, -1, -1, -1, 344, -1, + 256, -1, 261, -1, 418, 420, 262, -1, 423, -1, + -1, -1, -1, -1, 429, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 284, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 297, -1, + -1, -1, 298, 302, -1, -1, 305, -1, 307, -1, + 309, 310, 311, 312, -1, -1, -1, -1, 317, -1, + -1, -1, 321, -1, -1, 256, 325, -1, -1, -1, + -1, 262, -1, -1, 333, 266, -1, 336, -1, 338, + -1, -1, -1, 339, -1, -1, -1, -1, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, - 356, -1, -1, -1, -1, 359, 360, 361, 362, -1, - -1, -1, 368, -1, 370, -1, 372, 371, 374, 375, - 376, -1, 378, 379, -1, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, 261, -1, -1, 394, 395, + 356, -1, -1, 362, -1, -1, -1, 298, -1, -1, + -1, -1, 368, -1, 370, 371, 372, 373, 374, 375, + 376, -1, 378, 314, -1, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 390, -1, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, - 406, 407, 408, 409, 410, 411, 256, 413, 284, -1, - -1, -1, 262, 417, 418, -1, -1, -1, -1, -1, - -1, 297, -1, 429, -1, -1, 302, -1, -1, 305, - -1, 307, -1, 309, 310, 311, 312, -1, -1, -1, - -1, 317, -1, -1, -1, 321, -1, -1, 298, 325, - -1, -1, -1, -1, -1, -1, -1, 333, -1, -1, - 336, -1, 338, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 256, -1, -1, -1, -1, -1, - 262, -1, -1, -1, -1, -1, 362, -1, -1, 339, - -1, -1, -1, -1, 344, -1, 346, 347, 348, 349, - 350, 351, 352, 353, 354, 355, 356, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 298, -1, 368, -1, - 370, -1, 372, -1, 374, 375, 376, -1, 378, 379, - -1, -1, 382, 383, 384, 385, 386, 387, 388, 389, - 390, -1, 418, -1, 394, 395, 396, 397, 398, 399, - 400, 401, -1, -1, -1, -1, -1, 339, -1, -1, - -1, -1, 344, 413, 346, 347, 348, 349, 350, 351, - 352, 353, 354, 355, 356, -1, -1, -1, 256, 429, - -1, -1, -1, -1, 262, -1, 368, -1, 370, -1, - 372, -1, 374, 375, 376, -1, 378, 379, -1, -1, - 382, 383, 384, 385, -1, -1, -1, 389, 390, -1, + 406, 407, 408, 409, 410, 411, 412, 413, -1, 418, + -1, -1, -1, -1, 420, -1, 357, 423, -1, -1, + -1, -1, 363, 429, -1, -1, -1, 368, 369, 370, + 371, 372, 373, 374, 375, 376, -1, 378, 379, -1, + 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, + -1, 392, 393, 394, 395, 396, 397, 398, 399, 400, + 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, + 411, 412, 413, -1, 256, -1, 256, 418, -1, 420, + 262, -1, 423, -1, 264, 265, -1, 267, 429, -1, + 270, 271, -1, -1, -1, 275, 276, 277, -1, 279, + -1, -1, -1, -1, -1, 285, -1, -1, 288, -1, + -1, -1, -1, -1, -1, 295, 298, -1, -1, -1, + 300, -1, 302, 303, 304, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 316, -1, 318, 319, + -1, -1, 322, -1, -1, 325, -1, 327, -1, 329, + 330, 331, 332, -1, 334, -1, -1, 339, -1, -1, + -1, -1, 344, -1, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, -1, -1, -1, -1, 359, + 360, 361, 362, -1, -1, -1, 368, -1, 370, -1, + 372, 371, 374, 375, 376, -1, 378, 379, -1, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 261, -1, -1, 394, 395, 396, 397, 398, 399, 400, 401, - 298, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 413, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 256, 429, -1, -1, - -1, -1, 262, -1, -1, -1, -1, -1, -1, -1, - -1, 339, -1, -1, -1, -1, 344, -1, 346, 347, + 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, + 256, 413, 284, -1, -1, -1, 262, 417, 418, -1, + -1, -1, -1, -1, -1, 297, -1, 429, -1, -1, + 302, -1, -1, 305, -1, 307, -1, 309, 310, 311, + 312, -1, -1, -1, -1, 317, -1, -1, -1, 321, + -1, -1, 298, 325, -1, -1, -1, -1, -1, -1, + -1, 333, -1, -1, 336, -1, 338, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 256, -1, + -1, -1, -1, -1, 262, -1, -1, -1, -1, -1, + 362, -1, -1, 339, -1, -1, -1, -1, 344, -1, + 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, + 356, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 298, -1, 368, -1, 370, -1, 372, -1, 374, 375, + 376, -1, 378, 379, -1, -1, 382, 383, 384, 385, + 386, 387, 388, 389, 390, -1, 418, -1, 394, 395, + 396, 397, 398, 399, 400, 401, -1, -1, -1, -1, + -1, 339, -1, -1, -1, -1, 344, 413, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 298, -1, + -1, -1, 256, 429, -1, -1, -1, -1, 262, -1, 368, -1, 370, -1, 372, -1, 374, 375, 376, -1, 378, 379, -1, -1, 382, 383, 384, 385, -1, -1, -1, 389, 390, -1, -1, -1, 394, 395, 396, 397, - 398, 399, 400, 401, -1, -1, -1, -1, -1, 339, - -1, -1, -1, -1, 344, 413, 346, 347, 348, 349, - 350, 351, 352, 353, 354, 355, 356, -1, -1, -1, - 256, 429, -1, -1, -1, -1, 262, -1, 368, -1, - 370, -1, 372, -1, 374, 375, 376, -1, 378, 379, - -1, -1, 382, 383, 384, 385, -1, -1, -1, 389, - 390, -1, -1, -1, 394, 395, 396, 397, 398, 399, - 400, 401, 298, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 413, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 256, 429, + 398, 399, 400, 401, 298, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 413, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 339, -1, -1, -1, -1, 344, -1, + 256, 429, -1, -1, -1, -1, 262, -1, -1, -1, + -1, -1, -1, -1, -1, 339, -1, -1, -1, -1, + 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, + 354, 355, 356, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 298, -1, 368, -1, 370, -1, 372, -1, + 374, 375, 376, -1, 378, 379, -1, -1, 382, 383, + 384, 385, -1, -1, -1, 389, 390, -1, -1, -1, + 394, 395, 396, 397, 398, 399, 400, 401, -1, -1, + -1, -1, -1, 339, -1, -1, -1, -1, 344, 413, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, - 356, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 368, -1, 370, -1, 372, -1, 374, 375, + 356, -1, -1, -1, 256, 429, -1, -1, -1, -1, + 262, -1, 368, -1, 370, -1, 372, -1, 374, 375, 376, -1, 378, 379, -1, -1, 382, 383, 384, 385, + -1, -1, -1, 389, 390, -1, -1, -1, 394, 395, + 396, 397, 398, 399, 400, 401, 298, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 413, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 256, 429, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 339, -1, -1, + -1, -1, 344, -1, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 368, -1, 370, -1, + 372, -1, 374, 375, 376, -1, 378, 379, -1, -1, + 382, 383, 384, 385, -1, -1, -1, 389, 390, -1, + 256, -1, 394, 395, 396, 397, 398, 399, 400, 401, + -1, -1, -1, -1, -1, 339, -1, -1, -1, -1, + 344, 413, 346, 347, 348, 349, 350, 351, 352, 353, + 354, 355, 356, -1, -1, -1, -1, 429, -1, -1, + -1, -1, -1, -1, 368, -1, 370, -1, 372, -1, + 374, 375, 376, -1, -1, -1, -1, -1, 382, 383, + 384, 385, -1, -1, -1, 389, 390, -1, 256, -1, + 394, 395, 396, 397, 398, 399, 400, 401, -1, -1, + -1, -1, -1, 339, -1, -1, -1, -1, 344, 413, + 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, + 356, -1, -1, -1, -1, 429, -1, -1, -1, -1, + -1, -1, 368, -1, 370, -1, 372, -1, 374, 375, + 376, -1, -1, -1, -1, -1, 382, 383, 384, 385, -1, -1, -1, 389, 390, -1, 256, -1, 394, 395, 396, 397, 398, 399, 400, 401, -1, -1, -1, -1, -1, 339, -1, -1, -1, -1, 344, 413, 346, 347, @@ -11583,14 +11659,14 @@ void case_962() -1, 429, -1, -1, -1, -1, -1, -1, 368, -1, 370, -1, 372, -1, 374, 375, 376, -1, -1, -1, -1, -1, 382, 383, 384, 385, -1, -1, -1, 389, - 390, -1, 256, -1, 394, 395, 396, 397, 398, 399, + 390, -1, 256, -1, -1, -1, 396, 397, 398, 399, 400, 401, -1, -1, -1, -1, -1, 339, -1, -1, -1, -1, 344, 413, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, -1, -1, -1, -1, 429, -1, -1, -1, -1, -1, -1, 368, -1, 370, -1, 372, -1, 374, 375, 376, -1, -1, -1, -1, -1, 382, 383, 384, 385, -1, -1, -1, 389, 390, -1, - 256, -1, 394, 395, 396, 397, 398, 399, 400, 401, + 256, -1, -1, -1, 396, 397, 398, 399, 400, 401, -1, -1, -1, -1, -1, 339, -1, -1, -1, -1, 344, 413, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, -1, -1, -1, -1, 429, -1, -1, @@ -11616,98 +11692,154 @@ void case_962() 350, 351, 352, 353, 354, 355, 356, -1, -1, -1, -1, 429, -1, -1, -1, -1, -1, -1, 368, -1, 370, -1, 372, -1, 374, 375, 376, -1, -1, -1, - -1, -1, 382, 383, 384, 385, -1, -1, -1, 389, - 390, -1, 256, -1, -1, -1, 396, 397, 398, 399, + -1, -1, -1, -1, 384, 385, -1, -1, -1, 389, + 390, -1, 256, -1, -1, -1, -1, -1, 398, 399, 400, 401, -1, -1, -1, -1, -1, 339, -1, -1, -1, -1, 344, 413, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, -1, -1, -1, -1, 429, -1, -1, -1, -1, -1, -1, 368, -1, 370, -1, 372, -1, 374, 375, 376, -1, -1, -1, -1, -1, - 382, 383, 384, 385, -1, -1, -1, 389, 390, -1, - 256, -1, -1, -1, 396, 397, 398, 399, 400, 401, + -1, -1, 384, 385, -1, -1, -1, 389, 390, -1, + 256, -1, -1, -1, -1, -1, 398, 399, 400, 401, -1, -1, -1, -1, -1, 339, -1, -1, -1, -1, 344, 413, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, -1, -1, -1, -1, 429, -1, -1, -1, -1, -1, -1, 368, -1, 370, -1, 372, -1, 374, 375, 376, -1, -1, -1, -1, -1, -1, -1, 384, 385, -1, -1, -1, 389, 390, -1, 256, -1, - -1, -1, -1, -1, 398, 399, 400, 401, -1, -1, + -1, -1, -1, -1, -1, -1, 400, 401, -1, -1, -1, -1, -1, 339, -1, -1, -1, -1, 344, 413, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, -1, -1, -1, -1, 429, -1, -1, -1, -1, -1, -1, 368, -1, 370, -1, 372, -1, 374, 375, 376, -1, -1, -1, -1, -1, -1, -1, 384, 385, -1, -1, -1, 389, 390, -1, 256, -1, -1, -1, - -1, -1, 398, 399, 400, 401, -1, -1, -1, -1, + -1, -1, -1, -1, 400, 401, -1, -1, -1, -1, -1, 339, -1, -1, -1, -1, 344, 413, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, -1, -1, -1, -1, 429, -1, -1, -1, -1, -1, -1, 368, -1, 370, -1, 372, -1, 374, 375, 376, -1, - -1, -1, -1, -1, -1, -1, 384, 385, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 385, -1, -1, -1, 389, 390, -1, 256, -1, -1, -1, -1, -1, - 398, 399, 400, 401, -1, -1, -1, -1, -1, 339, + -1, -1, 400, 401, -1, -1, -1, -1, -1, 339, -1, -1, -1, -1, 344, 413, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, -1, -1, -1, -1, 429, -1, -1, -1, -1, -1, -1, 368, -1, 370, -1, 372, -1, 374, 375, 376, -1, -1, -1, - -1, -1, -1, -1, 384, 385, -1, -1, -1, 389, + -1, -1, -1, -1, -1, 385, -1, -1, -1, 389, 390, -1, 256, -1, -1, -1, -1, -1, -1, -1, 400, 401, -1, -1, -1, -1, -1, 339, -1, -1, -1, -1, 344, 413, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, -1, -1, -1, -1, 429, -1, -1, -1, -1, -1, -1, 368, -1, 370, -1, 372, -1, 374, 375, 376, -1, -1, -1, -1, -1, - -1, -1, 384, 385, -1, -1, -1, 389, 390, -1, + -1, -1, -1, 385, -1, -1, -1, -1, 390, -1, 256, -1, -1, -1, -1, -1, -1, -1, 400, 401, -1, -1, -1, -1, -1, 339, -1, -1, -1, -1, 344, 413, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, -1, -1, -1, -1, 429, -1, -1, -1, -1, -1, -1, 368, -1, 370, -1, 372, -1, 374, 375, 376, -1, -1, -1, -1, -1, -1, -1, - -1, 385, -1, -1, -1, 389, 390, -1, 256, -1, + -1, 385, -1, -1, -1, -1, 390, -1, 256, -1, -1, -1, -1, -1, -1, -1, 400, 401, -1, -1, -1, -1, -1, 339, -1, -1, -1, -1, 344, 413, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, -1, -1, -1, -1, 429, -1, -1, -1, -1, -1, -1, 368, -1, 370, -1, 372, -1, 374, 375, - 376, -1, -1, -1, -1, -1, -1, -1, -1, 385, - -1, -1, -1, 389, 390, -1, 256, -1, -1, -1, + 376, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 390, -1, 256, -1, -1, -1, -1, -1, -1, -1, 400, 401, -1, -1, -1, -1, -1, 339, -1, -1, -1, -1, 344, 413, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, -1, -1, -1, -1, 429, -1, -1, -1, -1, -1, -1, 368, -1, 370, -1, 372, -1, 374, 375, 376, -1, - -1, -1, -1, -1, -1, -1, -1, 385, -1, -1, - -1, -1, 390, -1, 256, -1, -1, -1, -1, -1, + -1, -1, 256, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 390, -1, -1, -1, -1, -1, -1, -1, -1, -1, 400, 401, -1, -1, -1, -1, -1, 339, -1, -1, -1, -1, 344, 413, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, -1, -1, -1, -1, 429, -1, -1, -1, -1, -1, -1, 368, -1, 370, -1, 372, -1, 374, 375, 376, -1, -1, -1, - 256, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 390, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 400, 401, -1, -1, -1, -1, -1, 339, -1, -1, - -1, -1, 344, 413, 346, 347, 348, 349, 350, 351, - 352, 353, 354, 355, 356, -1, -1, -1, -1, 429, - -1, -1, -1, -1, -1, -1, 368, -1, 370, -1, - 372, -1, 374, 375, 376, -1, -1, -1, -1, 262, - -1, -1, -1, 266, -1, -1, -1, -1, 390, -1, - -1, -1, -1, 339, -1, -1, -1, -1, 344, 401, - 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, - 356, 413, -1, -1, -1, 298, -1, -1, -1, -1, - -1, -1, 368, -1, 370, -1, 372, 429, 374, 375, - 376, 314, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 390, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 401, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 413, -1, -1, - -1, -1, -1, -1, 357, -1, -1, -1, -1, -1, - 363, -1, -1, 429, -1, 368, 369, -1, 371, -1, - 373, -1, 375, 376, -1, 378, 379, -1, 381, 382, - 383, 384, 385, 386, 387, 388, 389, 390, -1, 392, - 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, - 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, - 413, -1, -1, 256, -1, 418, -1, 420, -1, -1, - 423, 264, 265, 266, 267, -1, 429, 270, 271, -1, + -1, 262, -1, -1, -1, 266, -1, -1, -1, -1, + 390, -1, -1, -1, -1, 339, -1, -1, -1, -1, + 344, 401, 346, 347, 348, 349, 350, 351, 352, 353, + 354, 355, 356, 413, -1, -1, -1, 298, -1, -1, + -1, -1, -1, -1, 368, -1, 370, -1, 372, 429, + 374, 375, 376, 314, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 390, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 401, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 413, + -1, -1, -1, -1, -1, -1, 357, -1, -1, -1, + -1, -1, 363, -1, -1, 429, -1, 368, 369, -1, + 371, -1, 373, -1, 375, 376, -1, 378, 379, -1, + 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, + -1, 392, 393, 394, 395, 396, 397, 398, 399, 400, + 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, + 411, 412, 413, -1, -1, 256, -1, 418, -1, 420, + -1, -1, 423, 264, 265, 266, 267, -1, 429, 270, + 271, -1, 273, 274, 275, 276, 277, 278, 279, -1, + -1, -1, -1, -1, 285, -1, 287, 288, 289, 290, + 291, 292, -1, -1, 295, -1, -1, -1, 299, 300, + -1, 302, 303, 304, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 314, -1, 316, -1, 318, 319, -1, + -1, 322, -1, 324, 325, 326, 327, 328, 329, 330, + 331, 332, 333, 334, 335, -1, 337, -1, -1, 340, + 341, -1, -1, 344, 345, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 359, 360, + 361, 362, 363, -1, -1, -1, 367, -1, -1, -1, + 371, -1, -1, -1, -1, 376, 377, 378, 379, 380, + -1, -1, -1, 384, -1, 386, -1, -1, -1, -1, + -1, 392, 393, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 256, -1, -1, -1, 417, 418, 419, 420, + 264, 265, 266, 267, -1, -1, 270, 271, -1, 273, + 274, 275, 276, 277, 278, 279, -1, -1, -1, -1, + -1, 285, -1, 287, 288, 289, 290, 291, 292, -1, + -1, 295, -1, -1, -1, 299, 300, -1, 302, 303, + 304, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 314, -1, 316, -1, 318, 319, -1, -1, 322, -1, + 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, + 334, 335, -1, 337, -1, -1, 340, 341, -1, -1, + 344, 345, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 359, 360, 361, 362, 363, + -1, -1, -1, 367, -1, -1, -1, 371, -1, -1, + -1, -1, 376, 377, 378, 379, 380, -1, -1, -1, + 384, -1, 386, -1, -1, -1, -1, -1, 392, 393, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 256, + -1, -1, -1, 417, 418, 419, 420, 264, 265, 266, + 267, -1, -1, 270, 271, -1, 273, 274, 275, 276, + 277, 278, 279, -1, -1, -1, -1, -1, 285, -1, + 287, 288, 289, 290, 291, 292, -1, -1, 295, -1, + -1, -1, 299, 300, -1, 302, 303, 304, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 314, -1, 316, + -1, 318, 319, -1, -1, 322, -1, 324, 325, 326, + 327, 328, 329, 330, 331, 332, 333, 334, 335, -1, + 337, -1, -1, 340, 341, -1, -1, 344, 345, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 359, 360, 361, 362, 363, -1, -1, -1, + 367, -1, -1, -1, 371, -1, -1, -1, -1, 376, + 377, 378, 379, 380, -1, -1, -1, 384, -1, 386, + -1, -1, -1, -1, -1, 392, 393, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 256, -1, -1, -1, + 417, 418, 419, 420, 264, 265, 266, 267, -1, -1, + 270, 271, -1, 273, 274, 275, 276, 277, 278, 279, + -1, -1, -1, -1, -1, 285, -1, 287, 288, 289, + 290, 291, 292, -1, -1, 295, -1, -1, -1, 299, + 300, -1, 302, 303, 304, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 314, -1, 316, -1, 318, 319, + -1, -1, 322, -1, 324, 325, 326, 327, 328, 329, + 330, 331, 332, 333, 334, 335, -1, 337, -1, -1, + 340, 341, -1, -1, 344, 345, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 359, + 360, 361, 362, 363, -1, -1, -1, 367, -1, -1, + -1, 371, -1, -1, -1, -1, 376, 377, 378, 379, + 380, -1, -1, -1, 384, -1, 386, -1, -1, -1, + -1, -1, 392, 393, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 256, -1, -1, -1, 417, 418, 419, + 420, 264, 265, 266, 267, -1, -1, 270, 271, -1, 273, 274, 275, 276, 277, 278, 279, -1, -1, -1, -1, -1, 285, -1, 287, 288, 289, 290, 291, 292, -1, -1, 295, -1, -1, -1, 299, 300, -1, 302, @@ -11723,143 +11855,35 @@ void case_962() 393, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 256, -1, -1, -1, 417, 418, 419, 420, 264, 265, - 266, 267, -1, -1, 270, 271, -1, 273, 274, 275, - 276, 277, 278, 279, -1, -1, -1, -1, -1, 285, - -1, 287, 288, 289, 290, 291, 292, -1, -1, 295, - -1, -1, -1, 299, 300, -1, 302, 303, 304, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 314, -1, - 316, -1, 318, 319, -1, -1, 322, -1, 324, 325, - 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, - -1, 337, -1, -1, 340, 341, -1, -1, 344, 345, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 359, 360, 361, 362, 363, -1, -1, - -1, 367, -1, -1, -1, 371, -1, -1, -1, -1, - 376, 377, 378, 379, 380, -1, -1, -1, 384, -1, - 386, -1, -1, -1, -1, -1, 392, 393, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 256, -1, -1, - -1, 417, 418, 419, 420, 264, 265, 266, 267, -1, - -1, 270, 271, -1, 273, 274, 275, 276, 277, 278, - 279, -1, -1, -1, -1, -1, 285, -1, 287, 288, - 289, 290, 291, 292, -1, -1, 295, -1, -1, -1, - 299, 300, -1, 302, 303, 304, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 314, -1, 316, -1, 318, - 319, -1, -1, 322, -1, 324, 325, 326, 327, 328, - 329, 330, 331, 332, 333, 334, 335, -1, 337, -1, - -1, 340, 341, -1, -1, 344, 345, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 359, 360, 361, 362, 363, -1, -1, -1, 367, -1, - -1, -1, 371, -1, -1, -1, -1, 376, 377, 378, - 379, 380, -1, -1, -1, 384, -1, 386, -1, -1, - -1, -1, -1, 392, 393, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 256, -1, -1, -1, 417, 418, - 419, 420, 264, 265, 266, 267, -1, -1, 270, 271, - -1, 273, 274, 275, 276, 277, 278, 279, -1, -1, - -1, -1, -1, 285, -1, 287, 288, 289, 290, 291, - 292, -1, -1, 295, -1, -1, -1, 299, 300, -1, - 302, 303, 304, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 314, -1, 316, -1, 318, 319, -1, -1, - 322, -1, 324, 325, 326, 327, 328, 329, 330, 331, - 332, 333, 334, 335, -1, 337, -1, -1, 340, 341, - -1, -1, 344, 345, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 359, 360, 361, - 362, 363, -1, -1, -1, 367, -1, -1, -1, 371, - -1, -1, -1, -1, 376, 377, 378, 379, 380, -1, - -1, -1, 384, -1, 386, -1, -1, -1, -1, -1, - 392, 393, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 256, -1, -1, -1, 417, 418, 419, 420, 264, - 265, 266, 267, -1, -1, 270, 271, -1, 273, 274, - 275, 276, 277, 278, 279, -1, -1, -1, -1, -1, - 285, -1, 287, 288, 289, 290, 291, 292, -1, -1, - 295, -1, -1, -1, 299, 300, -1, 302, 303, 304, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 314, - -1, 316, -1, 318, 319, -1, -1, 322, -1, 324, - 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, - 335, -1, 337, -1, -1, 340, 341, -1, -1, 344, - 345, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 359, 360, 361, 362, 363, -1, - -1, -1, 367, -1, -1, -1, 371, -1, -1, -1, - -1, 376, 377, 378, 379, 380, -1, -1, -1, 384, - -1, 386, -1, -1, -1, -1, -1, 392, 393, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 256, -1, - -1, -1, 417, 418, 419, 420, 264, 265, -1, 267, - -1, -1, 270, 271, -1, 256, -1, 275, 276, 277, - -1, 279, -1, -1, 265, -1, 267, 285, -1, 270, - 288, -1, -1, -1, 275, -1, -1, 295, 279, -1, - -1, -1, 300, -1, 302, 303, 304, 288, -1, -1, - -1, -1, -1, -1, 295, -1, -1, -1, 316, 300, - 318, 319, -1, 304, 322, -1, -1, 325, -1, 327, - -1, 329, 330, 331, 332, 316, 334, 318, -1, -1, - -1, 322, -1, 341, -1, -1, 344, 345, -1, 330, - 331, -1, -1, 334, -1, -1, 337, -1, -1, -1, - -1, 359, 360, 361, 362, 363, -1, -1, -1, 367, - 368, -1, -1, 371, -1, -1, -1, -1, -1, 377, - 378, 379, 380, -1, -1, -1, 384, -1, 386, -1, - -1, -1, -1, -1, 392, 393, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 256, -1, -1, -1, 417, - 418, 419, 420, 264, 265, -1, 267, -1, -1, 270, - 271, -1, 256, -1, 275, 276, 277, 418, 279, -1, - -1, 265, -1, 267, 285, -1, 270, 288, -1, -1, - -1, 275, -1, -1, 295, 279, -1, -1, -1, 300, - -1, 302, 303, 304, 288, -1, -1, -1, -1, -1, - -1, 295, -1, -1, -1, 316, 300, 318, 319, 320, - 304, 322, -1, -1, 325, -1, 327, -1, 329, 330, - 331, 332, 316, 334, 318, -1, -1, -1, 322, -1, - 341, -1, -1, 344, 345, -1, 330, 331, -1, -1, - 334, -1, -1, 337, -1, -1, -1, -1, 359, 360, - 361, 362, 363, -1, -1, -1, 367, -1, -1, -1, - 371, -1, -1, -1, -1, -1, 377, 378, 379, 380, - -1, -1, -1, 384, -1, 386, -1, -1, -1, -1, - -1, 392, 393, -1, -1, -1, -1, -1, -1, 264, - 265, -1, 267, -1, -1, 270, 271, -1, -1, -1, - 275, 276, 277, -1, 279, -1, 417, 418, 419, 420, - 285, -1, -1, 288, -1, -1, -1, -1, -1, -1, - 295, -1, -1, -1, 418, 300, -1, 302, 303, 304, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 316, -1, 318, 319, -1, -1, 322, -1, -1, - 325, -1, 327, -1, 329, 330, 331, 332, -1, 334, - -1, -1, -1, -1, -1, -1, 341, -1, -1, 344, - 345, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 359, 360, 361, 362, 363, -1, - -1, -1, 367, 368, -1, -1, 371, -1, -1, -1, - -1, -1, 377, 378, 379, 380, -1, -1, -1, 384, - -1, 386, -1, -1, -1, -1, -1, 392, 393, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 256, -1, 417, 418, 419, 420, -1, -1, 264, 265, - -1, 267, -1, 428, 270, 271, -1, 256, -1, 275, + -1, 267, -1, -1, 270, 271, -1, 256, -1, 275, 276, 277, -1, 279, -1, -1, 265, -1, 267, 285, -1, 270, 288, -1, -1, -1, 275, -1, -1, 295, 279, -1, -1, -1, 300, -1, 302, 303, 304, 288, -1, -1, -1, -1, -1, -1, 295, -1, -1, -1, - 316, 300, 318, 319, 320, 304, 322, -1, -1, 325, + 316, 300, 318, 319, -1, 304, 322, -1, -1, 325, -1, 327, -1, 329, 330, 331, 332, 316, 334, 318, -1, -1, -1, 322, -1, 341, -1, -1, 344, 345, -1, 330, 331, -1, -1, 334, -1, -1, 337, -1, -1, -1, -1, 359, 360, 361, 362, 363, -1, -1, - -1, 367, -1, -1, -1, 371, -1, -1, -1, -1, + -1, 367, 368, -1, -1, 371, -1, -1, -1, -1, -1, 377, 378, 379, 380, -1, -1, -1, 384, -1, 386, -1, -1, -1, -1, -1, 392, 393, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 256, -1, -1, -1, 417, 418, 419, 420, 264, 265, -1, 267, -1, - -1, 270, 271, -1, -1, -1, 275, 276, 277, 418, + -1, 270, 271, -1, 256, -1, 275, 276, 277, 418, 279, -1, -1, 265, -1, 267, 285, -1, 270, 288, -1, -1, -1, 275, -1, -1, 295, 279, -1, -1, -1, 300, -1, 302, 303, 304, 288, -1, -1, -1, -1, -1, -1, 295, -1, -1, -1, 316, 300, 318, - 319, -1, 304, 322, -1, -1, 325, -1, 327, -1, - 329, 330, 331, 332, 316, 334, 318, -1, 337, -1, + 319, 320, 304, 322, -1, -1, 325, -1, 327, -1, + 329, 330, 331, 332, 316, 334, 318, -1, -1, -1, 322, -1, 341, -1, -1, 344, 345, -1, 330, 331, -1, -1, 334, -1, -1, 337, -1, -1, -1, -1, - 359, 360, 361, 362, 363, -1, -1, -1, -1, -1, + 359, 360, 361, 362, 363, -1, -1, -1, 367, -1, -1, -1, 371, -1, -1, -1, -1, -1, 377, 378, 379, 380, -1, -1, -1, 384, -1, 386, -1, -1, - 372, -1, -1, 392, 393, -1, -1, -1, -1, -1, + -1, -1, -1, 392, 393, -1, -1, -1, -1, -1, -1, 264, 265, -1, 267, -1, -1, 270, 271, -1, -1, -1, 275, 276, 277, -1, 279, -1, 417, 418, 419, 420, 285, -1, -1, 288, -1, -1, -1, -1, @@ -11870,25 +11894,25 @@ void case_962() -1, 334, -1, -1, -1, -1, -1, -1, 341, -1, -1, 344, 345, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 359, 360, 361, 362, - 363, -1, -1, -1, 367, -1, -1, -1, 371, -1, + 363, -1, -1, -1, 367, 368, -1, -1, 371, -1, -1, -1, -1, -1, 377, 378, 379, 380, -1, -1, -1, 384, -1, 386, -1, -1, -1, -1, -1, 392, 393, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 256, -1, 417, 418, 419, 420, -1, -1, - 264, 265, -1, 267, -1, 428, 270, 271, -1, -1, + 264, 265, -1, 267, -1, 428, 270, 271, -1, 256, -1, 275, 276, 277, -1, 279, -1, -1, 265, -1, 267, 285, -1, 270, 288, -1, -1, -1, 275, -1, -1, 295, 279, -1, -1, -1, 300, -1, 302, 303, 304, 288, -1, -1, -1, -1, -1, -1, 295, -1, - -1, -1, 316, 300, 318, 319, -1, 304, 322, -1, + -1, -1, 316, 300, 318, 319, 320, 304, 322, -1, -1, 325, -1, 327, -1, 329, 330, 331, 332, 316, 334, 318, -1, -1, -1, 322, -1, 341, -1, -1, 344, 345, -1, 330, 331, -1, -1, 334, -1, -1, 337, -1, -1, -1, -1, 359, 360, 361, 362, 363, -1, -1, -1, 367, -1, -1, -1, 371, -1, -1, -1, -1, -1, 377, 378, 379, 380, -1, -1, -1, - 384, -1, 386, 370, -1, -1, -1, -1, 392, 393, + 384, -1, 386, -1, -1, -1, -1, -1, 392, 393, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 256, -1, -1, -1, 417, 418, 419, 420, 264, 265, -1, @@ -11899,419 +11923,487 @@ void case_962() -1, -1, -1, -1, -1, 295, -1, -1, -1, 316, 300, 318, 319, -1, 304, 322, -1, -1, 325, -1, 327, -1, 329, 330, 331, 332, 316, 334, 318, -1, - -1, -1, 322, -1, 341, -1, -1, 344, 345, -1, + 337, -1, 322, -1, 341, -1, -1, 344, 345, -1, 330, 331, -1, -1, 334, -1, -1, 337, -1, -1, -1, -1, 359, 360, 361, 362, 363, -1, -1, -1, -1, -1, -1, -1, 371, -1, -1, -1, -1, -1, 377, 378, 379, 380, -1, -1, -1, 384, -1, 386, - -1, -1, -1, -1, -1, 392, 393, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 256, -1, -1, -1, - 417, 418, 419, 420, 264, 265, -1, 267, -1, -1, - 270, 271, -1, -1, -1, 275, 276, 277, 418, 279, - -1, -1, 265, -1, 267, 285, -1, 270, 288, -1, - -1, -1, 275, -1, -1, 295, 279, -1, -1, -1, - 300, -1, 302, 303, 304, 288, -1, -1, -1, -1, - -1, -1, 295, -1, -1, -1, 316, 300, 318, 319, - -1, 304, 322, -1, -1, 325, -1, 327, -1, 329, - 330, 331, 332, 316, 334, 318, -1, -1, -1, 322, - -1, 341, -1, -1, 344, 345, -1, 330, 331, -1, - -1, 334, -1, -1, 337, -1, -1, -1, -1, 359, - 360, 361, 362, 363, -1, -1, -1, -1, -1, -1, - -1, 371, -1, -1, -1, -1, -1, 377, 378, 379, - 380, -1, -1, -1, 384, -1, 386, -1, -1, -1, - -1, -1, 392, 393, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 256, -1, -1, -1, 417, 418, 419, - 420, 264, 265, -1, 267, -1, -1, 270, 271, -1, - -1, -1, 275, 276, 277, 418, 279, -1, -1, -1, - -1, -1, 285, -1, -1, 288, -1, -1, -1, -1, - -1, -1, 295, -1, -1, -1, -1, 300, -1, 302, - 303, 304, -1, -1, -1, -1, -1, -1, -1, 262, - -1, -1, -1, 316, -1, 318, 319, -1, -1, 322, - -1, -1, 325, -1, 327, -1, 329, 330, 331, 332, - -1, 334, -1, -1, -1, -1, -1, -1, 341, -1, - -1, 344, 345, -1, -1, 298, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 359, 360, 361, 362, - 363, -1, -1, -1, -1, -1, -1, -1, 371, -1, - -1, -1, -1, -1, 377, 378, 379, 380, -1, -1, - -1, 384, -1, 386, -1, -1, -1, -1, -1, 392, - 393, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 417, 418, 419, 420, 371, 372, - 373, 374, 375, -1, -1, 378, 379, -1, -1, 382, - 383, 384, 385, 386, 387, 388, 389, 390, -1, 392, - 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, - 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, - 413, -1, 261, -1, -1, -1, 265, 420, 267, -1, - 423, 270, -1, 272, 273, -1, 275, -1, 277, -1, - 279, -1, 281, 282, 283, 284, -1, -1, 287, 288, - -1, -1, -1, -1, 293, -1, 295, 296, 297, -1, - -1, 300, -1, 302, -1, 304, -1, -1, 307, -1, - 309, 310, 311, 312, -1, -1, -1, 316, 317, 318, - -1, -1, 321, 322, 323, -1, -1, -1, -1, -1, - -1, 330, 331, -1, 333, 334, -1, 336, 337, 338, - -1, -1, -1, 342, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 261, -1, 362, -1, 265, -1, 267, -1, 368, - 270, -1, 272, 273, -1, 275, -1, 277, 377, 279, - -1, 281, 282, 283, 284, -1, -1, 287, 288, -1, - -1, -1, -1, 293, -1, 295, 296, 297, -1, -1, - 300, -1, 302, -1, 304, -1, -1, 307, -1, 309, - 310, 311, 312, -1, -1, -1, 316, 317, 318, 418, - -1, 321, 322, 323, -1, -1, -1, -1, -1, -1, - 330, 331, -1, 333, 334, -1, 336, 337, 338, -1, - -1, -1, 342, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 261, -1, 362, -1, 265, -1, 267, -1, 368, 270, - -1, 272, 273, -1, 275, -1, 277, 377, 279, -1, - 281, 282, 283, 284, -1, -1, 287, 288, -1, -1, - -1, -1, 293, -1, 295, 296, 297, -1, -1, 300, - -1, 302, -1, 304, -1, -1, 307, -1, 309, 310, - 311, 312, -1, -1, -1, 316, 317, 318, 418, -1, - 321, 322, 323, -1, -1, -1, -1, -1, -1, 330, - 331, -1, 333, 334, -1, 336, 337, 338, -1, -1, - -1, 342, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 261, -1, -1, -1, 265, -1, - 267, 362, -1, 270, -1, 272, 273, 368, 275, -1, - 277, -1, 279, -1, 281, 282, 283, 284, -1, -1, - 287, 288, -1, -1, -1, -1, 293, -1, 295, 296, - 297, -1, -1, 300, -1, 302, 261, 304, -1, -1, - 307, -1, 309, 310, 311, 312, -1, -1, -1, 316, - 317, 318, -1, -1, 321, 322, 323, 418, -1, 284, - -1, -1, -1, 330, 331, -1, 333, 334, -1, 336, - 337, 338, 297, -1, -1, 342, -1, 302, -1, -1, - 305, -1, 307, -1, 309, 310, 311, 312, -1, -1, - -1, -1, 317, -1, -1, 362, 321, -1, -1, -1, - 325, 368, -1, -1, 261, -1, -1, -1, 333, -1, - -1, 336, -1, 338, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 284, -1, -1, - -1, -1, 357, -1, 261, -1, -1, 362, -1, -1, - 297, -1, -1, -1, 369, 302, 371, -1, 373, -1, - 307, 418, 309, 310, 311, 312, -1, 284, -1, -1, - 317, 386, -1, -1, 321, -1, -1, -1, 325, -1, - 297, -1, -1, -1, -1, 302, 333, -1, -1, 336, - 307, 338, 309, 310, 311, 312, -1, -1, -1, -1, - 317, -1, -1, 418, 321, -1, -1, -1, -1, -1, - -1, 264, 265, -1, 267, 362, 333, 270, 271, 336, - -1, 338, 275, 276, 277, -1, 279, -1, -1, -1, - -1, -1, 285, -1, -1, 288, -1, -1, -1, -1, - -1, -1, 295, -1, -1, 362, -1, 300, -1, 302, - 303, 304, -1, 306, -1, -1, -1, -1, -1, -1, - 313, -1, -1, 316, -1, 318, 319, -1, -1, 322, - -1, 418, 325, -1, 327, -1, 329, 330, 331, 332, - -1, 334, -1, -1, -1, -1, -1, -1, 341, -1, - -1, 344, 345, -1, -1, -1, -1, -1, -1, -1, - -1, 418, -1, -1, -1, -1, 359, 360, 361, 362, - 363, -1, -1, -1, -1, -1, -1, -1, 371, 372, - -1, 374, -1, -1, 377, 378, 379, 380, -1, -1, - -1, 384, -1, 386, -1, -1, -1, -1, -1, 392, - 393, -1, -1, -1, -1, -1, -1, 264, 265, -1, - 267, -1, -1, 270, 271, -1, -1, -1, 275, 276, - 277, -1, 279, -1, 417, 418, 419, 420, 285, -1, - -1, 288, -1, -1, -1, -1, -1, -1, 295, -1, - -1, -1, -1, 300, -1, 302, 303, 304, -1, 306, - -1, -1, -1, -1, -1, -1, 313, -1, -1, 316, - -1, 318, 319, -1, -1, 322, -1, -1, 325, -1, - 327, -1, 329, 330, 331, 332, -1, 334, -1, -1, - -1, -1, -1, -1, 341, -1, -1, 344, 345, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 359, 360, 361, 362, 363, -1, -1, -1, - -1, -1, -1, -1, 371, -1, -1, 374, -1, -1, - 377, 378, 379, 380, -1, -1, -1, 384, -1, 386, - -1, -1, -1, -1, -1, 392, 393, -1, -1, -1, + -1, -1, 372, -1, -1, 392, 393, -1, -1, -1, -1, -1, -1, 264, 265, -1, 267, -1, -1, 270, 271, -1, -1, -1, 275, 276, 277, -1, 279, -1, 417, 418, 419, 420, 285, -1, -1, 288, -1, -1, - -1, -1, -1, -1, 295, -1, -1, -1, -1, 300, - -1, 302, 303, 304, -1, 306, -1, -1, -1, -1, - -1, -1, 313, -1, -1, 316, -1, 318, 319, -1, + -1, -1, -1, -1, 295, -1, -1, -1, 418, 300, + -1, 302, 303, 304, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 316, -1, 318, 319, -1, -1, 322, -1, -1, 325, -1, 327, -1, 329, 330, 331, 332, -1, 334, -1, -1, -1, -1, -1, -1, 341, -1, -1, 344, 345, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 359, 360, - 361, 362, 363, -1, -1, -1, -1, -1, -1, -1, + 361, 362, 363, -1, -1, -1, 367, -1, -1, -1, 371, -1, -1, -1, -1, -1, 377, 378, 379, 380, -1, -1, -1, 384, -1, 386, -1, -1, -1, -1, - -1, 392, 393, -1, -1, -1, -1, -1, -1, 264, - 265, -1, 267, -1, -1, 270, 271, -1, -1, -1, - 275, 276, 277, -1, 279, -1, 417, 418, 419, 420, - 285, -1, -1, 288, -1, -1, -1, -1, -1, -1, - 295, -1, -1, -1, -1, 300, -1, 302, 303, 304, + -1, 392, 393, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 316, -1, 318, 319, -1, -1, 322, -1, -1, - 325, -1, 327, -1, 329, 330, 331, 332, -1, 334, - -1, -1, 337, -1, -1, -1, 341, -1, -1, 344, - 345, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 256, -1, 417, 418, 419, 420, + -1, -1, 264, 265, -1, 267, -1, 428, 270, 271, + -1, -1, -1, 275, 276, 277, -1, 279, -1, -1, + 265, -1, 267, 285, -1, 270, 288, -1, -1, -1, + 275, -1, -1, 295, 279, -1, -1, -1, 300, -1, + 302, 303, 304, 288, -1, -1, -1, -1, -1, -1, + 295, -1, -1, -1, 316, 300, 318, 319, -1, 304, + 322, -1, -1, 325, -1, 327, -1, 329, 330, 331, + 332, 316, 334, 318, -1, -1, -1, 322, -1, 341, + -1, -1, 344, 345, -1, 330, 331, -1, -1, 334, + -1, -1, 337, -1, -1, -1, -1, 359, 360, 361, + 362, 363, -1, -1, -1, 367, -1, -1, -1, 371, + -1, -1, -1, -1, -1, 377, 378, 379, 380, -1, + -1, -1, 384, -1, 386, 370, -1, -1, -1, -1, + 392, 393, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 256, -1, -1, -1, 417, 418, 419, 420, 264, + 265, -1, 267, -1, -1, 270, 271, -1, -1, -1, + 275, 276, 277, 418, 279, -1, -1, 265, -1, 267, + 285, -1, 270, 288, -1, -1, -1, 275, -1, -1, + 295, 279, -1, -1, -1, 300, -1, 302, 303, 304, + 288, -1, -1, -1, -1, -1, -1, 295, -1, -1, + -1, 316, 300, 318, 319, -1, 304, 322, -1, -1, + 325, -1, 327, -1, 329, 330, 331, 332, 316, 334, + 318, -1, -1, -1, 322, -1, 341, -1, -1, 344, + 345, -1, 330, 331, -1, -1, 334, -1, -1, 337, -1, -1, -1, -1, 359, 360, 361, 362, 363, -1, -1, -1, -1, -1, -1, -1, 371, -1, -1, -1, -1, -1, 377, 378, 379, 380, -1, -1, -1, 384, -1, 386, -1, -1, -1, -1, -1, 392, 393, -1, - -1, -1, -1, -1, -1, 264, 265, -1, 267, -1, - -1, 270, 271, -1, -1, -1, 275, 276, 277, -1, - 279, -1, 417, 418, 419, 420, 285, -1, -1, 288, - -1, -1, -1, -1, -1, -1, 295, -1, -1, -1, - -1, 300, -1, 302, 303, 304, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 316, -1, 318, - 319, -1, -1, 322, -1, -1, 325, -1, 327, -1, - 329, 330, 331, 332, -1, 334, -1, -1, -1, -1, - -1, -1, 341, -1, -1, 344, 345, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 359, 360, 361, 362, 363, -1, -1, -1, -1, 368, - -1, -1, 371, -1, -1, -1, -1, -1, 377, 378, - 379, 380, -1, -1, -1, 384, -1, 386, -1, -1, - -1, -1, -1, 392, 393, -1, -1, -1, -1, -1, - -1, 264, 265, -1, 267, -1, -1, 270, 271, -1, - -1, -1, 275, 276, 277, -1, 279, -1, 417, 418, - 419, 420, 285, -1, -1, 288, -1, -1, -1, -1, - -1, -1, 295, -1, -1, -1, -1, 300, -1, 302, - 303, 304, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 316, -1, 318, 319, -1, -1, 322, - -1, -1, 325, -1, 327, -1, 329, 330, 331, 332, - -1, 334, -1, -1, -1, -1, -1, -1, 341, -1, - -1, 344, 345, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 359, 360, 361, 362, - 363, -1, -1, -1, 367, -1, -1, -1, 371, -1, - -1, -1, -1, -1, 377, 378, 379, 380, -1, -1, - -1, 384, -1, 386, -1, -1, -1, -1, -1, 392, - 393, -1, -1, -1, -1, -1, -1, 264, 265, -1, - 267, -1, -1, 270, 271, -1, -1, -1, 275, 276, - 277, -1, 279, -1, 417, 418, 419, 420, 285, -1, - -1, 288, -1, -1, -1, -1, -1, -1, 295, -1, - -1, -1, -1, 300, -1, 302, 303, 304, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 316, - -1, 318, 319, -1, -1, 322, -1, -1, 325, -1, - 327, -1, 329, 330, 331, 332, -1, 334, -1, -1, - -1, -1, -1, -1, 341, -1, -1, 344, 345, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 256, -1, + -1, -1, 417, 418, 419, 420, 264, 265, -1, 267, + -1, -1, 270, 271, -1, -1, -1, 275, 276, 277, + 418, 279, -1, -1, 265, -1, 267, 285, -1, 270, + 288, -1, -1, -1, 275, -1, -1, 295, 279, -1, + -1, -1, 300, -1, 302, 303, 304, 288, -1, -1, + -1, -1, -1, -1, 295, -1, -1, -1, 316, 300, + 318, 319, -1, 304, 322, -1, -1, 325, -1, 327, + -1, 329, 330, 331, 332, 316, 334, 318, -1, -1, + -1, 322, -1, 341, -1, -1, 344, 345, -1, 330, + 331, -1, -1, 334, -1, -1, 337, -1, -1, -1, + -1, 359, 360, 361, 362, 363, -1, -1, -1, -1, + -1, -1, -1, 371, -1, -1, -1, -1, -1, 377, + 378, 379, 380, -1, -1, -1, 384, -1, 386, -1, + -1, -1, -1, -1, 392, 393, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 359, 360, 361, 362, 363, -1, -1, -1, - 367, -1, -1, -1, 371, -1, -1, -1, -1, -1, - 377, 378, 379, 380, -1, -1, -1, 384, -1, 386, - -1, -1, -1, -1, -1, 392, 393, -1, -1, -1, - -1, -1, -1, 264, 265, -1, 267, -1, -1, 270, - 271, -1, -1, -1, 275, 276, 277, -1, 279, -1, - 417, 418, 419, 420, 285, -1, -1, 288, -1, -1, + -1, -1, -1, -1, -1, 256, -1, -1, -1, 417, + 418, 419, 420, 264, 265, -1, 267, -1, -1, 270, + 271, -1, -1, -1, 275, 276, 277, 418, 279, -1, + -1, -1, -1, -1, 285, -1, -1, 288, -1, -1, -1, -1, -1, -1, 295, -1, -1, -1, -1, 300, -1, 302, 303, 304, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 316, -1, 318, 319, -1, + -1, 262, -1, -1, -1, 316, -1, 318, 319, -1, -1, 322, -1, -1, 325, -1, 327, -1, 329, 330, 331, 332, -1, 334, -1, -1, -1, -1, -1, -1, - 341, -1, -1, 344, 345, -1, -1, -1, -1, -1, + 341, -1, -1, 344, 345, -1, -1, 298, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 359, 360, 361, 362, 363, -1, -1, -1, -1, -1, -1, -1, 371, -1, -1, -1, -1, -1, 377, 378, 379, 380, -1, -1, -1, 384, -1, 386, -1, -1, -1, -1, - -1, 392, 393, -1, -1, -1, -1, -1, -1, 264, - 265, -1, 267, -1, -1, 270, 271, -1, -1, -1, - 275, 276, 277, -1, 279, -1, 417, 418, 419, 420, - 285, -1, -1, 288, -1, -1, -1, -1, -1, -1, - 295, -1, -1, -1, -1, 300, -1, 302, 303, 304, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 316, -1, 318, 319, -1, -1, 322, -1, -1, - 325, -1, 327, -1, 329, 330, 331, 332, -1, 334, - -1, -1, -1, -1, -1, -1, 341, -1, -1, 344, - 345, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 359, 360, 361, 362, 363, -1, - -1, -1, -1, -1, -1, -1, 371, -1, -1, -1, - -1, -1, 377, 378, 379, 380, -1, -1, -1, 384, - -1, 386, -1, -1, -1, -1, -1, 392, 393, -1, - -1, -1, -1, -1, -1, 264, 265, -1, 267, -1, - -1, 270, 271, -1, -1, -1, 275, 276, 277, -1, - 279, -1, 417, 418, 419, 420, 285, -1, -1, 288, - -1, -1, -1, -1, -1, -1, 295, -1, -1, -1, - -1, 300, -1, 302, 303, 304, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 316, -1, 318, - 319, -1, -1, 322, -1, -1, 325, -1, 327, -1, - 329, 330, 331, 332, -1, 334, -1, -1, -1, -1, - -1, -1, 341, -1, -1, 344, 345, -1, -1, -1, + -1, 392, 393, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 359, 360, 361, 362, 363, -1, -1, -1, -1, -1, - -1, -1, 371, -1, -1, -1, -1, -1, 377, 378, - 379, 380, -1, -1, -1, 384, -1, 386, -1, -1, - -1, -1, -1, 392, 393, -1, -1, -1, -1, -1, - -1, 264, 265, -1, 267, -1, -1, 270, 271, -1, - -1, -1, 275, 276, 277, -1, 279, -1, 417, 418, - 419, 420, 285, -1, -1, 288, -1, -1, -1, -1, - -1, -1, 295, -1, -1, -1, -1, 300, -1, 302, - 303, 304, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 316, -1, 318, 319, -1, -1, 322, - -1, -1, 325, -1, 327, -1, 329, 330, 331, 332, - -1, 334, -1, -1, -1, -1, -1, -1, 341, -1, - -1, 344, 345, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 359, 360, 361, 362, - 363, -1, -1, -1, -1, -1, -1, -1, 371, -1, - -1, -1, -1, -1, 377, 378, 379, 380, -1, -1, - -1, 384, -1, 386, -1, -1, -1, -1, -1, 392, - 393, -1, -1, -1, -1, -1, -1, 264, 265, -1, - 267, -1, -1, 270, 271, -1, -1, -1, 275, 276, - 277, -1, 279, -1, 417, 418, 419, 420, 285, -1, - -1, 288, -1, -1, -1, -1, -1, -1, 295, -1, - -1, -1, -1, 300, -1, 302, 303, 304, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 316, - -1, 318, 319, -1, -1, 322, -1, -1, 325, -1, - 327, -1, 329, 330, 331, 332, -1, 334, -1, -1, - -1, -1, -1, -1, 341, -1, -1, 344, 345, -1, + -1, -1, -1, -1, -1, -1, 417, 418, 419, 420, + 371, 372, 373, 374, 375, -1, -1, 378, 379, -1, + -1, 382, 383, 384, 385, 386, 387, 388, 389, 390, + -1, 392, 393, 394, 395, 396, 397, 398, 399, 400, + 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, + 411, 412, 413, -1, 261, -1, 263, -1, 265, 420, + 267, -1, 423, 270, -1, 272, 273, -1, 275, -1, + 277, -1, 279, -1, 281, 282, 283, 284, -1, -1, + 287, 288, -1, -1, -1, -1, 293, 294, 295, 296, + 297, -1, -1, 300, -1, 302, -1, 304, -1, 306, + 307, 308, 309, 310, 311, 312, 313, -1, 315, 316, + 317, 318, -1, -1, 321, 322, 323, -1, 325, -1, + -1, -1, -1, 330, 331, -1, 333, 334, -1, 336, + 337, 338, -1, -1, -1, 342, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 359, 360, 361, 362, 363, -1, -1, -1, - -1, -1, -1, -1, 371, -1, -1, -1, -1, -1, - 377, 378, 379, 380, -1, -1, -1, 384, -1, 386, - -1, -1, -1, -1, -1, 392, 393, -1, -1, -1, - -1, -1, -1, 264, 265, -1, 267, -1, -1, 270, - 271, -1, -1, -1, 275, 276, 277, -1, 279, -1, - 417, 418, 419, 420, 285, -1, -1, 288, -1, -1, - -1, -1, -1, -1, 295, -1, 261, -1, 263, 300, - -1, 302, 303, 304, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 316, -1, 318, 319, 284, - -1, 322, -1, -1, 325, -1, 327, -1, 329, 330, - 331, 332, 297, 334, -1, -1, -1, 302, -1, -1, - -1, -1, 307, -1, 309, 310, 311, 312, -1, -1, - -1, -1, 317, -1, -1, -1, 321, -1, 359, 360, - 361, 362, 363, -1, -1, -1, -1, -1, 333, -1, - 371, 336, -1, 338, -1, -1, 377, 378, 379, 380, - -1, -1, -1, 384, -1, 386, -1, -1, -1, -1, - -1, 392, 393, -1, -1, -1, -1, 362, -1, -1, - -1, -1, -1, 368, 369, -1, -1, -1, -1, -1, - -1, 263, -1, 265, -1, 267, 417, 418, 270, 420, + -1, -1, -1, -1, -1, 362, -1, 364, 365, 261, + -1, -1, -1, 265, -1, 267, -1, -1, 270, -1, 272, 273, -1, 275, -1, 277, -1, 279, -1, 281, - 282, 283, -1, -1, -1, 287, 288, -1, -1, -1, - -1, 293, -1, 295, 296, -1, -1, -1, 300, -1, - -1, -1, 304, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 315, 316, -1, 318, -1, -1, -1, + 282, 283, 284, -1, -1, 287, 288, -1, -1, -1, + -1, 293, -1, 295, 296, 297, -1, -1, 300, -1, + 302, -1, 304, -1, -1, 307, -1, 309, 310, 311, + 312, 418, -1, -1, 316, 317, 318, -1, -1, 321, 322, 323, -1, -1, -1, -1, -1, -1, 330, 331, - 264, 265, 334, 267, -1, 337, 270, 271, -1, -1, - 342, 275, 276, 277, -1, 279, -1, -1, -1, -1, - -1, 285, -1, -1, 288, -1, -1, -1, -1, -1, - -1, 295, 364, 365, -1, -1, 300, -1, 302, 303, - 304, -1, -1, -1, -1, 377, -1, -1, -1, -1, + -1, 333, 334, -1, 336, 337, 338, -1, -1, -1, + 342, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 261, -1, + 362, -1, 265, -1, 267, -1, 368, 270, -1, 272, + 273, -1, 275, -1, 277, 377, 279, -1, 281, 282, + 283, 284, -1, -1, 287, 288, -1, -1, -1, -1, + 293, -1, 295, 296, 297, -1, -1, 300, -1, 302, + -1, 304, -1, -1, 307, -1, 309, 310, 311, 312, + -1, -1, -1, 316, 317, 318, 418, -1, 321, 322, + 323, -1, -1, -1, -1, -1, -1, 330, 331, -1, + 333, 334, -1, 336, 337, 338, -1, -1, -1, 342, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 261, -1, 362, + -1, 265, -1, 267, -1, 368, 270, -1, 272, 273, + -1, 275, -1, 277, 377, 279, -1, 281, 282, 283, + 284, -1, -1, 287, 288, -1, -1, -1, -1, 293, + -1, 295, 296, 297, -1, -1, 300, -1, 302, -1, + 304, -1, -1, 307, -1, 309, 310, 311, 312, -1, + -1, -1, 316, 317, 318, 418, -1, 321, 322, 323, + -1, -1, -1, -1, -1, -1, 330, 331, -1, 333, + 334, -1, 336, 337, 338, -1, -1, -1, 342, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 261, -1, -1, -1, 265, -1, 267, 362, -1, + 270, -1, 272, 273, 368, 275, -1, 277, -1, 279, + -1, 281, 282, 283, 284, -1, -1, 287, 288, -1, + -1, -1, -1, 293, -1, 295, 296, 297, -1, -1, + 300, -1, 302, -1, 304, -1, -1, 307, -1, 309, + 310, 311, 312, -1, -1, -1, 316, 317, 318, -1, + -1, 321, 322, 323, 418, -1, -1, -1, -1, -1, + 330, 331, -1, 333, 334, -1, 336, 337, 338, -1, + -1, -1, 342, -1, -1, -1, -1, 261, -1, -1, + -1, 265, -1, 267, -1, -1, 270, -1, 272, 273, + -1, 275, 362, 277, -1, 279, -1, 281, 282, 283, + 284, -1, -1, 287, 288, -1, -1, 377, -1, 293, + -1, 295, 296, 297, -1, -1, 300, -1, 302, 261, + 304, -1, -1, 307, -1, 309, 310, 311, 312, -1, + -1, -1, 316, 317, 318, -1, -1, 321, 322, 323, + -1, -1, 284, -1, -1, -1, 330, 331, 418, 333, + 334, -1, 336, 337, 338, 297, -1, -1, 342, -1, + 302, -1, -1, 305, -1, 307, -1, 309, 310, 311, + 312, -1, -1, -1, -1, 317, -1, -1, 362, 321, + -1, -1, -1, 325, 368, -1, -1, 261, -1, -1, + -1, 333, -1, -1, 336, -1, 338, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 284, -1, -1, -1, -1, 357, -1, 261, -1, -1, + 362, -1, -1, 297, -1, -1, -1, 369, 302, 371, + -1, 373, -1, 307, 418, 309, 310, 311, 312, -1, + 284, -1, -1, 317, 386, -1, -1, 321, -1, -1, + -1, 325, -1, 297, -1, -1, -1, -1, 302, 333, + -1, -1, 336, 307, 338, 309, 310, 311, 312, -1, + -1, -1, -1, 317, -1, -1, 418, 321, -1, -1, + -1, -1, -1, -1, 264, 265, -1, 267, 362, 333, + 270, 271, 336, -1, 338, 275, 276, 277, -1, 279, + -1, -1, -1, -1, -1, 285, -1, -1, 288, -1, + -1, -1, -1, -1, -1, 295, -1, -1, 362, -1, + 300, -1, 302, 303, 304, -1, 306, -1, -1, -1, + -1, -1, -1, 313, -1, -1, 316, -1, 318, 319, + -1, -1, 322, -1, 418, 325, -1, 327, -1, 329, + 330, 331, 332, -1, 334, -1, -1, -1, -1, -1, + -1, 341, -1, -1, 344, 345, -1, -1, -1, -1, + -1, -1, -1, -1, 418, -1, -1, -1, -1, 359, + 360, 361, 362, 363, -1, -1, -1, -1, -1, -1, + -1, 371, 372, -1, 374, -1, -1, 377, 378, 379, + 380, -1, -1, -1, 384, -1, 386, -1, -1, -1, + -1, -1, 392, 393, -1, -1, -1, -1, -1, -1, + 264, 265, -1, 267, -1, -1, 270, 271, -1, -1, + -1, 275, 276, 277, -1, 279, -1, 417, 418, 419, + 420, 285, -1, -1, 288, -1, -1, -1, -1, -1, + -1, 295, -1, -1, -1, -1, 300, -1, 302, 303, + 304, -1, 306, -1, -1, -1, -1, -1, -1, 313, + -1, -1, 316, -1, 318, 319, -1, -1, 322, -1, + -1, 325, -1, 327, -1, 329, 330, 331, 332, -1, + 334, -1, -1, -1, -1, -1, -1, 341, -1, -1, + 344, 345, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 359, 360, 361, 362, 363, + -1, -1, -1, -1, -1, -1, -1, 371, -1, -1, + 374, -1, -1, 377, 378, 379, 380, -1, -1, -1, + 384, -1, 386, -1, -1, -1, -1, -1, 392, 393, + -1, -1, -1, -1, -1, -1, 264, 265, -1, 267, + -1, -1, 270, 271, -1, -1, -1, 275, 276, 277, + -1, 279, -1, 417, 418, 419, 420, 285, -1, -1, + 288, -1, -1, -1, -1, -1, -1, 295, -1, -1, + -1, -1, 300, -1, 302, 303, 304, -1, 306, -1, + -1, -1, -1, -1, -1, 313, -1, -1, 316, -1, + 318, 319, -1, -1, 322, -1, -1, 325, -1, 327, + -1, 329, 330, 331, 332, -1, 334, -1, -1, -1, + -1, -1, -1, 341, -1, -1, 344, 345, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 359, 360, 361, 362, 363, -1, -1, -1, -1, + -1, -1, -1, 371, -1, -1, -1, -1, -1, 377, + 378, 379, 380, -1, -1, -1, 384, -1, 386, -1, + -1, -1, -1, -1, 392, 393, -1, -1, -1, -1, + -1, -1, 264, 265, -1, 267, -1, -1, 270, 271, + -1, -1, -1, 275, 276, 277, -1, 279, -1, 417, + 418, 419, 420, 285, -1, -1, 288, -1, -1, -1, + -1, -1, -1, 295, -1, -1, -1, -1, 300, -1, + 302, 303, 304, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 316, -1, 318, 319, -1, -1, + 322, -1, -1, 325, -1, 327, -1, 329, 330, 331, + 332, -1, 334, -1, -1, 337, -1, -1, -1, 341, + -1, -1, 344, 345, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 359, 360, 361, + 362, 363, -1, -1, -1, -1, -1, -1, -1, 371, + -1, -1, -1, -1, -1, 377, 378, 379, 380, -1, + -1, -1, 384, -1, 386, -1, -1, -1, -1, -1, + 392, 393, -1, -1, -1, -1, -1, -1, 264, 265, + -1, 267, -1, -1, 270, 271, -1, -1, -1, 275, + 276, 277, -1, 279, -1, 417, 418, 419, 420, 285, + -1, -1, 288, -1, -1, -1, -1, -1, -1, 295, + -1, -1, -1, -1, 300, -1, 302, 303, 304, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 316, -1, 318, 319, -1, -1, 322, -1, -1, 325, + -1, 327, -1, 329, 330, 331, 332, -1, 334, -1, + -1, -1, -1, -1, -1, 341, -1, -1, 344, 345, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 359, 360, 361, 362, 363, -1, -1, + -1, -1, 368, -1, -1, 371, -1, -1, -1, -1, + -1, 377, 378, 379, 380, -1, -1, -1, 384, -1, + 386, -1, -1, -1, -1, -1, 392, 393, -1, -1, + -1, -1, -1, -1, 264, 265, -1, 267, -1, -1, + 270, 271, -1, -1, -1, 275, 276, 277, -1, 279, + -1, 417, 418, 419, 420, 285, -1, -1, 288, -1, + -1, -1, -1, -1, -1, 295, -1, -1, -1, -1, + 300, -1, 302, 303, 304, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 316, -1, 318, 319, + -1, -1, 322, -1, -1, 325, -1, 327, -1, 329, + 330, 331, 332, -1, 334, -1, -1, -1, -1, -1, + -1, 341, -1, -1, 344, 345, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 359, + 360, 361, 362, 363, -1, -1, -1, 367, -1, -1, + -1, 371, -1, -1, -1, -1, -1, 377, 378, 379, + 380, -1, -1, -1, 384, -1, 386, -1, -1, -1, + -1, -1, 392, 393, -1, -1, -1, -1, -1, -1, + 264, 265, -1, 267, -1, -1, 270, 271, -1, -1, + -1, 275, 276, 277, -1, 279, -1, 417, 418, 419, + 420, 285, -1, -1, 288, -1, -1, -1, -1, -1, + -1, 295, -1, -1, -1, -1, 300, -1, 302, 303, + 304, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 316, -1, 318, 319, -1, -1, 322, -1, + -1, 325, -1, 327, -1, 329, 330, 331, 332, -1, + 334, -1, -1, -1, -1, -1, -1, 341, -1, -1, + 344, 345, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 359, 360, 361, 362, 363, + -1, -1, -1, 367, -1, -1, -1, 371, -1, -1, + -1, -1, -1, 377, 378, 379, 380, -1, -1, -1, + 384, -1, 386, -1, -1, -1, -1, -1, 392, 393, + -1, -1, -1, -1, -1, -1, 264, 265, -1, 267, + -1, -1, 270, 271, -1, -1, -1, 275, 276, 277, + -1, 279, -1, 417, 418, 419, 420, 285, -1, -1, + 288, -1, -1, -1, -1, -1, -1, 295, -1, -1, + -1, -1, 300, -1, 302, 303, 304, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 316, -1, + 318, 319, -1, -1, 322, -1, -1, 325, -1, 327, + -1, 329, 330, 331, 332, -1, 334, -1, -1, -1, + -1, -1, -1, 341, -1, -1, 344, 345, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 359, 360, 361, 362, 363, -1, -1, -1, -1, + -1, -1, -1, 371, -1, -1, -1, -1, -1, 377, + 378, 379, 380, -1, -1, -1, 384, -1, 386, -1, + -1, -1, -1, -1, 392, 393, -1, -1, -1, -1, + -1, -1, 264, 265, -1, 267, -1, -1, 270, 271, + -1, -1, -1, 275, 276, 277, -1, 279, -1, 417, + 418, 419, 420, 285, -1, -1, 288, -1, -1, -1, + -1, -1, -1, 295, -1, -1, -1, -1, 300, -1, + 302, 303, 304, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 316, -1, 318, 319, -1, -1, + 322, -1, -1, 325, -1, 327, -1, 329, 330, 331, + 332, -1, 334, -1, -1, -1, -1, -1, -1, 341, + -1, -1, 344, 345, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 359, 360, 361, + 362, 363, -1, -1, -1, -1, -1, -1, -1, 371, + -1, -1, -1, -1, -1, 377, 378, 379, 380, -1, + -1, -1, 384, -1, 386, -1, -1, -1, -1, -1, + 392, 393, -1, -1, -1, -1, -1, -1, 264, 265, + -1, 267, -1, -1, 270, 271, -1, -1, -1, 275, + 276, 277, -1, 279, -1, 417, 418, 419, 420, 285, + -1, -1, 288, -1, -1, -1, -1, -1, -1, 295, + -1, -1, -1, -1, 300, -1, 302, 303, 304, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 316, -1, 318, 319, -1, -1, 322, -1, -1, 325, + -1, 327, -1, 329, 330, 331, 332, -1, 334, -1, + -1, -1, -1, -1, -1, 341, -1, -1, 344, 345, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 359, 360, 361, 362, 363, -1, -1, + -1, -1, -1, -1, -1, 371, -1, -1, -1, -1, + -1, 377, 378, 379, 380, -1, -1, -1, 384, -1, + 386, -1, -1, -1, -1, -1, 392, 393, -1, -1, + -1, -1, -1, -1, 264, 265, -1, 267, -1, -1, + 270, 271, -1, -1, -1, 275, 276, 277, -1, 279, + -1, 417, 418, 419, 420, 285, -1, -1, 288, -1, + -1, -1, -1, -1, -1, 295, -1, -1, -1, -1, + 300, -1, 302, 303, 304, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 316, -1, 318, 319, + -1, -1, 322, -1, -1, 325, -1, 327, -1, 329, + 330, 331, 332, -1, 334, -1, -1, -1, -1, -1, + -1, 341, -1, -1, 344, 345, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 359, + 360, 361, 362, 363, -1, -1, -1, -1, -1, -1, + -1, 371, -1, -1, -1, -1, -1, 377, 378, 379, + 380, -1, -1, -1, 384, -1, 386, -1, -1, -1, + -1, -1, 392, 393, -1, -1, -1, -1, -1, -1, + 264, 265, -1, 267, -1, -1, 270, 271, -1, -1, + -1, 275, 276, 277, -1, 279, -1, 417, 418, 419, + 420, 285, -1, -1, 288, -1, -1, -1, -1, -1, + -1, 295, -1, -1, -1, -1, 300, -1, 302, 303, + 304, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 316, -1, 318, 319, -1, -1, 322, -1, -1, 325, -1, 327, -1, 329, 330, 331, 332, -1, - 334, -1, -1, 337, -1, -1, -1, -1, -1, -1, - 265, -1, 267, -1, -1, 270, 418, 272, -1, -1, - 275, -1, -1, -1, 279, 359, 360, 361, 362, -1, - -1, -1, -1, 288, 265, -1, 267, 371, -1, 270, - 295, 272, 273, -1, 275, 300, 277, 302, 279, 304, - 281, 282, 283, -1, -1, -1, 287, 288, -1, -1, - -1, 316, 293, 318, 295, 296, -1, 322, 323, 300, - -1, -1, -1, 304, -1, 330, 331, -1, -1, 334, - -1, -1, 337, 417, 418, 316, -1, 318, -1, -1, - -1, 322, 323, -1, -1, -1, -1, -1, -1, 330, - 331, -1, 265, 334, 267, -1, 337, 270, -1, 272, - 273, 342, 275, -1, 277, -1, 279, -1, 281, 282, - 283, -1, -1, -1, 287, 288, -1, -1, -1, -1, - 293, -1, 295, 296, -1, -1, -1, 300, -1, -1, - -1, 304, -1, -1, -1, -1, 377, -1, -1, -1, - -1, -1, -1, 316, -1, 318, -1, -1, -1, 322, - 323, -1, -1, 418, -1, -1, -1, 330, 331, -1, - -1, 334, -1, -1, 337, -1, 265, -1, 267, 342, - -1, 270, -1, -1, 273, -1, 275, 418, 277, -1, + 334, -1, -1, -1, -1, -1, -1, 341, -1, -1, + 344, 345, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 359, 360, 361, 362, 363, + -1, -1, -1, -1, -1, -1, -1, 371, -1, -1, + -1, -1, -1, 377, 378, 379, 380, -1, -1, -1, + 384, -1, 386, -1, -1, -1, -1, -1, 392, 393, + -1, -1, -1, -1, -1, -1, 264, 265, -1, 267, + -1, -1, 270, 271, -1, -1, -1, 275, 276, 277, + -1, 279, -1, 417, 418, 419, 420, 285, -1, -1, + 288, -1, -1, -1, -1, -1, -1, 295, -1, 261, + -1, 263, 300, -1, 302, 303, 304, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 316, -1, + 318, 319, 284, -1, 322, -1, -1, 325, -1, 327, + -1, 329, 330, 331, 332, 297, 334, -1, -1, -1, + 302, -1, -1, -1, -1, 307, -1, 309, 310, 311, + 312, -1, -1, -1, -1, 317, -1, -1, -1, 321, + -1, 359, 360, 361, 362, 363, -1, -1, -1, -1, + -1, 333, -1, 371, 336, -1, 338, -1, -1, 377, + 378, 379, 380, -1, -1, -1, 384, -1, 386, -1, + -1, -1, -1, -1, 392, 393, -1, -1, -1, -1, + 362, -1, -1, -1, -1, -1, 368, 369, -1, -1, + -1, -1, -1, -1, 263, -1, 265, -1, 267, 417, + 418, 270, 420, 272, 273, -1, 275, -1, 277, -1, 279, -1, 281, 282, 283, -1, -1, -1, 287, 288, - -1, -1, -1, -1, 293, -1, 295, -1, 265, -1, - 267, 300, -1, 270, -1, 304, 273, -1, 275, -1, - 277, -1, 279, -1, 281, 282, 283, 316, -1, 318, - 287, 288, -1, 322, -1, -1, 293, -1, 295, -1, - -1, 330, 331, 300, -1, 334, -1, 304, 337, -1, - -1, -1, 265, 342, 267, 418, -1, 270, -1, 316, - -1, 318, 275, -1, -1, 322, 279, -1, -1, -1, - -1, -1, -1, 330, 331, 288, -1, 334, -1, -1, - 337, -1, 295, -1, 265, 342, 267, 300, 377, 270, - -1, 304, -1, 306, 275, 308, -1, -1, 279, -1, - 313, -1, -1, 316, -1, 318, -1, 288, -1, 322, - -1, -1, 325, -1, 295, -1, -1, 330, 331, 300, - -1, 334, -1, 304, 337, 306, -1, 308, 265, 418, - 267, -1, 313, 270, -1, 316, -1, 318, 275, -1, - -1, 322, 279, -1, 325, -1, -1, -1, -1, 330, - 331, 288, -1, 334, -1, -1, 337, -1, 295, 372, - 265, 418, 267, 300, -1, 270, -1, 304, -1, 306, - 275, 308, -1, -1, 279, -1, 313, -1, -1, 316, - -1, 318, -1, 288, -1, 322, -1, -1, 325, 370, - 295, -1, -1, 330, 331, 300, -1, 334, -1, 304, - 337, 306, -1, -1, -1, 418, -1, -1, 313, -1, - -1, 316, -1, 318, -1, -1, -1, 322, -1, -1, - 325, -1, -1, -1, -1, 330, 331, -1, -1, 334, - -1, 265, 337, 267, -1, -1, 270, 418, -1, -1, - -1, 275, -1, -1, -1, 279, -1, -1, -1, 283, - 265, -1, 267, -1, 288, 270, -1, -1, -1, 293, - 275, 295, -1, -1, 279, -1, 300, -1, -1, -1, - 304, 305, -1, 288, -1, -1, -1, -1, -1, -1, - 295, 418, 316, -1, 318, 300, -1, -1, 322, 304, - -1, -1, -1, -1, -1, -1, 330, 331, -1, -1, - 334, 316, -1, 318, 265, -1, 267, 322, -1, 270, - -1, -1, -1, 418, 275, 330, 331, -1, 279, 334, - -1, 265, 337, 267, -1, -1, 270, 288, -1, -1, - -1, 275, -1, -1, 295, 279, -1, -1, -1, 300, - -1, -1, -1, 304, 288, -1, -1, -1, 363, -1, - -1, 295, -1, -1, -1, 316, 300, 318, -1, -1, - 304, 322, -1, -1, -1, -1, -1, -1, -1, 330, - 331, -1, 316, 334, 318, 265, 337, 267, 322, -1, - 270, -1, -1, -1, 418, 275, 330, 331, -1, 279, - 334, -1, -1, 337, -1, -1, -1, -1, 288, 265, - -1, 267, -1, 418, 270, 295, -1, -1, -1, 275, - 300, -1, -1, 279, 304, -1, -1, -1, -1, -1, - -1, -1, 288, -1, -1, -1, 316, -1, 318, 295, - -1, -1, 322, -1, 300, -1, -1, -1, 304, -1, + -1, -1, -1, -1, 293, -1, 295, 296, -1, -1, + -1, 300, -1, -1, -1, 304, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 315, 316, -1, 318, + -1, -1, -1, 322, 323, -1, -1, -1, -1, -1, + -1, 330, 331, 264, 265, 334, 267, -1, 337, 270, + 271, -1, -1, 342, 275, 276, 277, -1, 279, -1, + -1, -1, -1, -1, 285, -1, -1, 288, -1, -1, + -1, -1, -1, -1, 295, 364, 365, -1, -1, 300, + -1, 302, 303, 304, -1, -1, -1, -1, 377, -1, + -1, -1, -1, -1, -1, 316, -1, 318, 319, -1, + -1, 322, -1, -1, 325, -1, 327, -1, 329, 330, + 331, 332, -1, 334, -1, -1, 337, -1, -1, -1, + -1, -1, -1, 265, -1, 267, -1, -1, 270, 418, + 272, -1, -1, 275, -1, -1, -1, 279, 359, 360, + 361, 362, -1, -1, -1, -1, 288, 265, -1, 267, + 371, -1, 270, 295, 272, 273, -1, 275, 300, 277, + 302, 279, 304, 281, 282, 283, -1, -1, -1, 287, + 288, -1, -1, -1, 316, 293, 318, 295, 296, -1, + 322, 323, 300, -1, -1, -1, 304, -1, 330, 331, + -1, -1, 334, -1, -1, 337, 417, 418, 316, -1, + 318, -1, -1, -1, 322, 323, -1, -1, -1, -1, + -1, -1, 330, 331, -1, 265, 334, 267, -1, 337, + 270, -1, 272, 273, 342, 275, -1, 277, -1, 279, + -1, 281, 282, 283, -1, -1, -1, 287, 288, -1, + -1, -1, -1, 293, -1, 295, 296, -1, -1, -1, + 300, -1, -1, -1, 304, -1, -1, -1, -1, 377, + -1, -1, -1, -1, -1, -1, 316, -1, 318, -1, + -1, -1, 322, 323, -1, -1, 418, -1, -1, -1, 330, 331, -1, -1, 334, -1, -1, 337, -1, 265, - 316, 267, 318, -1, 270, -1, 322, 418, -1, 275, - -1, -1, -1, 279, 330, 331, -1, -1, 334, -1, - -1, 337, 288, 265, 418, 267, -1, -1, 270, 295, - -1, -1, -1, 275, 300, -1, -1, 279, 304, -1, - -1, -1, -1, -1, -1, -1, 288, -1, -1, -1, - 316, -1, 318, 295, -1, -1, 322, -1, 300, -1, - -1, -1, 304, -1, 330, 331, -1, -1, 334, -1, - 261, 337, -1, -1, 316, -1, 318, -1, 418, -1, - 322, 272, -1, -1, -1, -1, 277, -1, 330, 331, - 281, -1, 334, 284, -1, 337, -1, -1, -1, -1, - -1, -1, 418, -1, -1, 296, 297, -1, -1, -1, - 301, 302, -1, 261, -1, -1, 307, -1, 309, 310, - 311, 312, -1, -1, 272, -1, 317, -1, -1, 277, - 321, -1, 323, 281, -1, -1, 284, -1, -1, -1, - -1, -1, 333, -1, 335, 336, -1, 338, 296, 297, - -1, 342, 418, 301, 302, -1, -1, -1, -1, 307, - -1, 309, 310, 311, 312, -1, -1, -1, -1, 317, - -1, 362, -1, 321, -1, 323, 418, 368, 369, -1, - -1, -1, 261, -1, -1, 333, -1, -1, 336, -1, - 338, -1, -1, 272, 342, -1, -1, -1, 277, -1, - -1, -1, 281, -1, -1, 284, -1, -1, -1, -1, - -1, -1, -1, -1, 362, -1, -1, 296, 297, -1, - 368, 369, 301, 302, -1, 261, -1, -1, 307, -1, - 309, 310, 311, 312, -1, -1, 272, -1, 317, -1, - -1, 277, 321, -1, 323, 281, -1, -1, 284, -1, - -1, -1, -1, -1, 333, -1, -1, 336, -1, 338, - 296, 297, -1, 342, -1, 301, 302, 261, -1, -1, - -1, 307, -1, 309, 310, 311, 312, -1, -1, -1, - -1, 317, -1, 362, -1, 321, -1, 323, -1, 368, - 284, -1, -1, -1, -1, -1, -1, 333, -1, -1, - 336, -1, 338, 297, -1, 261, 342, -1, 302, -1, - -1, -1, -1, 307, -1, 309, 310, 311, 312, -1, - -1, -1, -1, 317, -1, -1, 362, 321, 284, -1, - -1, -1, 368, -1, -1, -1, -1, -1, -1, 333, - -1, 297, 336, 261, 338, 263, 302, -1, -1, -1, - -1, 307, -1, 309, 310, 311, 312, -1, -1, -1, - -1, 317, -1, -1, -1, 321, 284, -1, 362, -1, - 364, 365, -1, -1, 368, -1, -1, 333, -1, 297, - 336, 261, 338, -1, 302, -1, -1, -1, -1, 307, - -1, 309, 310, 311, 312, -1, -1, -1, -1, 317, - -1, -1, -1, 321, 284, -1, 362, -1, 364, 365, - -1, 261, 368, 263, -1, 333, -1, 297, 336, -1, - 338, -1, 302, -1, -1, -1, -1, 307, -1, 309, - 310, 311, 312, -1, 284, -1, -1, 317, -1, -1, - -1, 321, -1, -1, 362, -1, -1, 297, -1, -1, - 368, 261, 302, 333, -1, -1, 336, 307, 338, 309, - 310, 311, 312, -1, -1, 315, -1, 317, -1, -1, - -1, 321, -1, -1, 284, -1, -1, -1, -1, -1, - -1, 261, 362, 333, 364, 365, 336, 297, 338, -1, - -1, 301, 302, -1, -1, -1, -1, 307, -1, 309, - 310, 311, 312, -1, 284, -1, -1, 317, -1, -1, - -1, 321, 362, -1, -1, -1, -1, 297, -1, -1, - -1, -1, 302, 333, -1, -1, 336, 307, 338, 309, - 310, 311, 312, -1, -1, -1, -1, 317, -1, -1, - -1, 321, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 362, 333, -1, -1, 336, -1, 338, -1, + -1, 267, 342, -1, 270, -1, -1, 273, -1, 275, + 418, 277, -1, 279, -1, 281, 282, 283, -1, -1, + -1, 287, 288, -1, -1, -1, -1, 293, -1, 295, + -1, 265, -1, 267, 300, -1, 270, -1, 304, 273, + -1, 275, -1, 277, -1, 279, -1, 281, 282, 283, + 316, -1, 318, 287, 288, -1, 322, -1, -1, 293, + -1, 295, -1, -1, 330, 331, 300, -1, 334, -1, + 304, 337, -1, -1, -1, 265, 342, 267, 418, -1, + 270, -1, 316, -1, 318, 275, -1, -1, 322, 279, + -1, -1, -1, -1, -1, -1, 330, 331, 288, -1, + 334, -1, -1, 337, -1, 295, -1, 265, 342, 267, + 300, 377, 270, -1, 304, -1, 306, 275, 308, -1, + -1, 279, -1, 313, -1, -1, 316, -1, 318, -1, + 288, -1, 322, -1, -1, 325, -1, 295, -1, -1, + 330, 331, 300, -1, 334, -1, 304, 337, 306, -1, + 308, 265, 418, 267, -1, 313, 270, -1, 316, -1, + 318, 275, -1, -1, 322, 279, -1, 325, -1, -1, + -1, -1, 330, 331, 288, -1, 334, -1, -1, 337, + -1, 295, 372, 265, 418, 267, 300, -1, 270, -1, + 304, -1, 306, 275, 308, -1, -1, 279, -1, 313, + -1, -1, 316, -1, 318, -1, 288, -1, 322, -1, + -1, 325, 370, 295, -1, -1, 330, 331, 300, -1, + 334, -1, 304, 337, 306, -1, -1, -1, 418, -1, + -1, 313, -1, -1, 316, -1, 318, -1, -1, -1, + 322, -1, -1, 325, -1, -1, -1, -1, 330, 331, + -1, -1, 334, -1, 265, 337, 267, -1, -1, 270, + 418, -1, -1, -1, 275, -1, -1, -1, 279, -1, + -1, -1, 283, 265, -1, 267, -1, 288, 270, -1, + -1, -1, 293, 275, 295, -1, -1, 279, -1, 300, + -1, -1, -1, 304, 305, -1, 288, -1, -1, -1, + -1, -1, -1, 295, 418, 316, -1, 318, 300, -1, + -1, 322, 304, -1, -1, -1, -1, -1, -1, 330, + 331, -1, -1, 334, 316, -1, 318, 265, -1, 267, + 322, -1, 270, -1, -1, -1, 418, 275, 330, 331, + -1, 279, 334, -1, 265, 337, 267, -1, -1, 270, + 288, -1, -1, -1, 275, -1, -1, 295, 279, -1, + -1, -1, 300, -1, -1, -1, 304, 288, -1, -1, + -1, 363, -1, -1, 295, -1, -1, -1, 316, 300, + 318, -1, -1, 304, 322, -1, -1, -1, -1, -1, + -1, -1, 330, 331, -1, 316, 334, 318, 265, 337, + 267, 322, -1, 270, -1, -1, -1, 418, 275, 330, + 331, -1, 279, 334, -1, -1, 337, -1, -1, -1, + -1, 288, 265, -1, 267, -1, 418, 270, 295, -1, + -1, -1, 275, 300, -1, -1, 279, 304, -1, -1, + -1, -1, -1, -1, -1, 288, -1, -1, -1, 316, + -1, 318, 295, -1, -1, 322, -1, 300, -1, -1, + -1, 304, -1, 330, 331, -1, -1, 334, -1, -1, + 337, -1, 265, 316, 267, 318, -1, 270, -1, 322, + 418, -1, 275, -1, -1, -1, 279, 330, 331, -1, + -1, 334, -1, -1, 337, 288, 265, 418, 267, -1, + -1, 270, 295, -1, -1, -1, 275, 300, -1, -1, + 279, 304, -1, -1, -1, -1, -1, -1, -1, 288, + -1, -1, -1, 316, -1, 318, 295, -1, -1, 322, + -1, 300, -1, -1, -1, 304, -1, 330, 331, -1, + -1, 334, -1, 261, 337, -1, -1, 316, -1, 318, + -1, 418, -1, 322, 272, -1, -1, -1, -1, 277, + -1, 330, 331, 281, -1, 334, 284, -1, 337, -1, + -1, -1, -1, -1, -1, 418, -1, -1, 296, 297, + -1, -1, -1, 301, 302, -1, 261, -1, -1, 307, + -1, 309, 310, 311, 312, -1, -1, 272, -1, 317, + -1, -1, 277, 321, -1, 323, 281, -1, -1, 284, + -1, -1, -1, -1, -1, 333, -1, 335, 336, -1, + 338, 296, 297, -1, 342, 418, 301, 302, -1, -1, + -1, -1, 307, -1, 309, 310, 311, 312, -1, -1, + -1, -1, 317, -1, 362, -1, 321, -1, 323, 418, + 368, 369, -1, -1, -1, 261, -1, -1, 333, -1, + -1, 336, -1, 338, -1, -1, 272, 342, -1, -1, + -1, 277, -1, -1, -1, 281, -1, -1, 284, -1, + -1, -1, -1, -1, -1, -1, -1, 362, -1, -1, + 296, 297, -1, 368, 369, 301, 302, -1, 261, -1, + -1, 307, -1, 309, 310, 311, 312, -1, -1, 272, + -1, 317, -1, -1, 277, 321, -1, 323, 281, -1, + -1, 284, -1, -1, -1, -1, -1, 333, -1, -1, + 336, -1, 338, 296, 297, -1, 342, -1, 301, 302, + 261, -1, -1, -1, 307, -1, 309, 310, 311, 312, + -1, -1, -1, -1, 317, -1, 362, -1, 321, -1, + 323, -1, 368, 284, -1, -1, -1, -1, -1, -1, + 333, -1, -1, 336, -1, 338, 297, -1, 261, 342, + -1, 302, -1, -1, -1, -1, 307, -1, 309, 310, + 311, 312, -1, -1, -1, -1, 317, -1, -1, 362, + 321, 284, -1, -1, -1, 368, -1, -1, -1, -1, + -1, -1, 333, -1, 297, 336, 261, 338, -1, 302, + -1, -1, -1, -1, 307, -1, 309, 310, 311, 312, + -1, -1, -1, -1, 317, -1, -1, -1, 321, 284, + -1, 362, -1, 364, 365, -1, -1, 368, -1, -1, + 333, -1, 297, 336, 261, 338, 263, 302, -1, -1, + -1, -1, 307, -1, 309, 310, 311, 312, -1, -1, + 315, -1, 317, -1, -1, -1, 321, 284, -1, 362, + -1, 364, 365, -1, -1, 368, -1, -1, 333, -1, + 297, 336, 261, 338, -1, 302, -1, -1, -1, -1, + 307, -1, 309, 310, 311, 312, -1, -1, -1, -1, + 317, -1, -1, -1, 321, 284, -1, 362, -1, -1, + -1, -1, 261, 368, 263, -1, 333, -1, 297, 336, + -1, 338, -1, 302, -1, -1, -1, -1, 307, -1, + 309, 310, 311, 312, -1, 284, -1, -1, 317, -1, + -1, -1, 321, -1, -1, 362, -1, -1, 297, -1, + -1, 368, 261, 302, 333, -1, -1, 336, 307, 338, + 309, 310, 311, 312, -1, -1, 315, -1, 317, -1, + -1, -1, 321, -1, -1, 284, -1, -1, -1, -1, + -1, -1, 261, 362, 333, 364, 365, 336, 297, 338, + -1, -1, 301, 302, -1, -1, -1, -1, 307, -1, + 309, 310, 311, 312, -1, 284, -1, -1, 317, -1, + -1, -1, 321, 362, -1, -1, -1, -1, 297, -1, + -1, -1, -1, 302, 333, -1, -1, 336, 307, 338, + 309, 310, 311, 312, -1, -1, -1, -1, 317, -1, + -1, -1, 321, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 362, 333, -1, -1, 336, -1, 338, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 362, + -1, -1, -1, 362, }; -#line 6452 "cs-parser.jay" +#line 6470 "cs-parser.jay" // // A class used to hold info about an operator declarator diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-parser.jay b/ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-parser.jay index 9d40d25fe0..9e94079405 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-parser.jay +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-parser.jay @@ -614,6 +614,13 @@ namespace_or_type_declaration { current_namespace.DeclarationFound = true; } + | attribute_sections CLOSE_BRACE { +#if FULL_AST + current_namespace.UnattachedAttributes = ((List) $1).ToArray (); +#endif + report.Error (1518, lexer.Location, "Dangling attribute not attached to a type definition (class, delegate, enum, interface or struct). Unexpected symbol `{0}'"); + lexer.putback ('}'); + } ; type_declaration @@ -908,6 +915,7 @@ class_member_declaration | constructor_declaration | destructor_declaration | type_declaration + | attributes_without_members | error { report.Error (1519, lexer.Location, "Unexpected symbol `{0}' in class, struct, or interface member declaration", @@ -2503,6 +2511,16 @@ event_accessor_block | block; ; +attributes_without_members + : attribute_sections CLOSE_BRACE { +#if FULL_AST + current_type.UnattachedAttributes = ((List) $1).ToArray (); +#endif + report.Error (1519, lexer.Location, "Attribute not attached to any member. Unexpected symbol `{0}' in class, struct, or interface member declaration. "); + lexer.putback ('}'); + } + ; + enum_declaration : opt_attributes opt_modifiers @@ -4176,11 +4194,11 @@ lambda_expression_body lambda_expression_body_simple : { - start_block (lexer.Location); + start_block (Location.Null); } expression_or_error // Have to close block when error occurs { - Block b = end_block (lexer.Location); + Block b = end_block (Location.Null); b.IsCompilerGenerated = true; b.AddStatement (new ContextualReturn ((Expression) $2)); $$ = b; @@ -5561,7 +5579,7 @@ try_statement } | TRY block catch_clauses FINALLY block { - $$ = new TryFinally (new TryCatch ((Block) $2, (List) $3, GetLocation ($1), true), (Block) $5, GetLocation ($1)); + $$ = new TryFinally (new TryCatch ((Block) $2, (List) $3, Location.Null, true), (Block) $5, GetLocation ($1)); lbag.AddStatement ($$, GetLocation ($4)); } | TRY block error diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/expression.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/expression.cs index 40267354de..25d35439c1 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/expression.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/expression.cs @@ -10021,8 +10021,11 @@ namespace Mono.CSharp public override void EmitStatement (EmitContext ec) { - foreach (ExpressionStatement e in initializers) + foreach (ExpressionStatement e in initializers) { + // TODO: need location region + ec.Mark (e.Location); e.EmitStatement (ec); + } } } @@ -10299,7 +10302,7 @@ namespace Mono.CSharp bool error = false; arguments = new Arguments (parameters.Count); - TypeExpression [] t_args = new TypeExpression [parameters.Count]; + var t_args = new TypeSpec [parameters.Count]; for (int i = 0; i < parameters.Count; ++i) { Expression e = parameters [i].Resolve (ec); if (e == null) { @@ -10308,7 +10311,7 @@ namespace Mono.CSharp } arguments.Add (new Argument (e)); - t_args [i] = new TypeExpression (e.Type, e.Location); + t_args [i] = e.Type; } if (error) @@ -10318,8 +10321,15 @@ namespace Mono.CSharp if (anonymous_type == null) return null; - RequestedType = new GenericTypeExpr (anonymous_type.Definition, new TypeArguments (t_args), loc); - return base.DoResolve (ec); + type = anonymous_type.Definition.MakeGenericType (ec.Module, t_args); + method = (MethodSpec) MemberCache.FindMember (type, MemberFilter.Constructor (null), BindingRestriction.DeclaredOnly); + eclass = ExprClass.Value; + return this; + } + + public override void EmitStatement (EmitContext ec) + { + base.EmitStatement (ec); } public override object Accept (StructuralVisitor visitor) diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/iterators.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/iterators.cs index c786d32dcf..d47d2ddd26 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/iterators.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/iterators.cs @@ -289,10 +289,23 @@ namespace Mono.CSharp } } - public GetEnumeratorMethod (IteratorStorey host, FullNamedExpression returnType, MemberName name) + GetEnumeratorMethod (IteratorStorey host, FullNamedExpression returnType, MemberName name) : base (host, null, returnType, Modifiers.DEBUGGER_HIDDEN, name) { - Block.AddStatement (new GetEnumeratorStatement (host, this)); + } + + public static GetEnumeratorMethod Create (IteratorStorey host, FullNamedExpression returnType, MemberName name) + { + return Create (host, returnType, name, null); + } + + public static GetEnumeratorMethod Create (IteratorStorey host, FullNamedExpression returnType, MemberName name, Statement statement) + { + var m = new GetEnumeratorMethod (host, returnType, name); + var stmt = statement ?? new GetEnumeratorStatement (host, m); + m.block.AddStatement (stmt); + m.block.IsCompilerGenerated = true; + return m; } } @@ -332,6 +345,7 @@ namespace Mono.CSharp host.Members.Add (this); Block.AddStatement (new DisposeMethodStatement (host.Iterator)); + Block.IsCompilerGenerated = true; } } @@ -479,25 +493,23 @@ namespace Mono.CSharp if (Iterator.IsEnumerable) { FullNamedExpression explicit_iface = new TypeExpression (Compiler.BuiltinTypes.IEnumerable, Location); - var name = new MemberName ("GetEnumerator", null, explicit_iface, Location); + var name = new MemberName ("GetEnumerator", null, explicit_iface, Location.Null); if (generic_enumerator_type != null) { - Method get_enumerator = new StateMachineMethod (this, null, enumerator_type, 0, name); - explicit_iface = new GenericTypeExpr (Module.PredefinedTypes.IEnumerableGeneric.Resolve (), generic_args, Location); - name = new MemberName ("GetEnumerator", null, explicit_iface, Location); - Method gget_enumerator = new GetEnumeratorMethod (this, generic_enumerator_type, name); + var gname = new MemberName ("GetEnumerator", null, explicit_iface, Location.Null); + Method gget_enumerator = GetEnumeratorMethod.Create (this, generic_enumerator_type, gname); // // Just call generic GetEnumerator implementation // - get_enumerator.Block.AddStatement ( - new Return (new Invocation (new DynamicMethodGroupExpr (gget_enumerator, Location), null), Location)); + var stmt = new Return (new Invocation (new DynamicMethodGroupExpr (gget_enumerator, Location), null), Location); + Method get_enumerator = GetEnumeratorMethod.Create (this, enumerator_type, name, stmt); Members.Add (get_enumerator); Members.Add (gget_enumerator); } else { - Members.Add (new GetEnumeratorMethod (this, enumerator_type, name)); + Members.Add (GetEnumeratorMethod.Create (this, enumerator_type, name)); } } @@ -519,11 +531,13 @@ namespace Mono.CSharp var name = new MemberName ("Current", null, explicit_iface, Location); - ToplevelBlock get_block = new ToplevelBlock (Compiler, Location); + ToplevelBlock get_block = new ToplevelBlock (Compiler, Location) { + IsCompilerGenerated = true + }; get_block.AddStatement (new Return (new DynamicFieldExpr (CurrentField, Location), Location)); - Property current = new Property (this, type, Modifiers.DEBUGGER_HIDDEN, name, null); - current.Get = new Property.GetMethod (current, 0, null, Location); + Property current = new Property (this, type, Modifiers.DEBUGGER_HIDDEN | Modifiers.COMPILER_GENERATED, name, null); + current.Get = new Property.GetMethod (current, Modifiers.COMPILER_GENERATED, null, Location); current.Get.Block = get_block; Members.Add (current); @@ -533,12 +547,14 @@ namespace Mono.CSharp { Method reset = new Method ( this, new TypeExpression (Compiler.BuiltinTypes.Void, Location), - Modifiers.PUBLIC | Modifiers.DEBUGGER_HIDDEN, + Modifiers.PUBLIC | Modifiers.DEBUGGER_HIDDEN | Modifiers.COMPILER_GENERATED, new MemberName ("Reset", Location), ParametersCompiled.EmptyReadOnlyParameters, null); Members.Add (reset); - reset.Block = new ToplevelBlock (Compiler, Location); + reset.Block = new ToplevelBlock (Compiler, Location) { + IsCompilerGenerated = true + }; TypeSpec ex_type = Module.PredefinedTypes.NotSupportedException.Resolve (); if (ex_type == null) @@ -568,7 +584,7 @@ namespace Mono.CSharp name, ParametersCompiled.EmptyReadOnlyParameters, null) { this.expr = expr; - Block = new ToplevelBlock (host.Compiler, ParametersCompiled.EmptyReadOnlyParameters, Location); + Block = new ToplevelBlock (host.Compiler, ParametersCompiled.EmptyReadOnlyParameters, Location.Null); } public override EmitContext CreateEmitContext (ILGenerator ig) @@ -715,7 +731,7 @@ namespace Mono.CSharp storey.Instance.Emit (ec); } - void EmitMoveNext_NoResumePoints (EmitContext ec, Block original_block) + void EmitMoveNext_NoResumePoints (EmitContext ec) { ec.EmitThis (); ec.Emit (OpCodes.Ldfld, storey.PC.Spec); @@ -729,9 +745,11 @@ namespace Mono.CSharp iterator_body_end = ec.DefineLabel (); - SymbolWriter.StartIteratorBody (ec); - original_block.Emit (ec); - SymbolWriter.EndIteratorBody (ec); + if (ec.EmitAccurateDebugInfo && ec.Mark (Block.Original.StartLocation)) { + ec.Emit (OpCodes.Nop); + } + + block.Emit (ec); ec.MarkLabel (iterator_body_end); @@ -751,7 +769,7 @@ namespace Mono.CSharp move_next_error = ec.DefineLabel (); if (resume_points == null) { - EmitMoveNext_NoResumePoints (ec, block); + EmitMoveNext_NoResumePoints (ec); return; } @@ -785,22 +803,20 @@ namespace Mono.CSharp if (async_init != null) ec.BeginExceptionBlock (); - SymbolWriter.StartIteratorDispatcher (ec); ec.Emit (OpCodes.Ldloc, current_pc); ec.Emit (OpCodes.Switch, labels); ec.Emit (async_init != null ? OpCodes.Leave : OpCodes.Br, move_next_error); - SymbolWriter.EndIteratorDispatcher (ec); ec.MarkLabel (labels[0]); iterator_body_end = ec.DefineLabel (); - SymbolWriter.StartIteratorBody (ec); - block.Emit (ec); - SymbolWriter.EndIteratorBody (ec); + if (ec.EmitAccurateDebugInfo && ec.Mark (Block.Original.StartLocation)) { + ec.Emit (OpCodes.Nop); + } - SymbolWriter.StartIteratorDispatcher (ec); + block.Emit (ec); ec.MarkLabel (iterator_body_end); @@ -820,6 +836,7 @@ namespace Mono.CSharp ec.EndExceptionBlock (); } + ec.Mark (Block.Original.EndLocation); ec.EmitThis (); ec.EmitInt ((int) IteratorStorey.State.After); ec.Emit (OpCodes.Stfld, storey.PC.Spec); @@ -839,8 +856,6 @@ namespace Mono.CSharp ec.EmitInt (1); ec.Emit (OpCodes.Ret); } - - SymbolWriter.EndIteratorDispatcher (ec); } protected virtual void EmitMoveNextEpilogue (EmitContext ec) diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/method.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/method.cs index ffa46ec3c8..a45ccdcaf6 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/method.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/method.cs @@ -2167,15 +2167,19 @@ namespace Mono.CSharp { MethodGroupExpr method_expr = MethodGroupExpr.CreatePredefined (base_dtor, base_type, Location); method_expr.InstanceExpression = new BaseThis (base_type, Location); - var try_block = new ExplicitBlock (block, block.StartLocation, block.EndLocation); - var finaly_block = new ExplicitBlock (block, Location, Location); + var try_block = new ExplicitBlock (block, block.StartLocation, block.EndLocation) { + IsCompilerGenerated = true + }; + var finaly_block = new ExplicitBlock (block, Location, Location) { + IsCompilerGenerated = true + }; // // 0-size arguments to avoid CS0250 error // TODO: Should use AddScopeStatement or something else which emits correct // debugger scope // - finaly_block.AddStatement (new StatementExpression (new Invocation (method_expr, new Arguments (0)))); + finaly_block.AddStatement (new StatementExpression (new Invocation (method_expr, new Arguments (0)), Location.Null)); var tf = new TryFinally (try_block, finaly_block, Location); block.WrapIntoDestructor (tf, try_block); diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/namespace.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/namespace.cs index 572d30b701..2d47c9e3eb 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/namespace.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/namespace.cs @@ -725,6 +725,9 @@ namespace Mono.CSharp { Dictionary aliases; public readonly MemberName RealMemberName; +#if FULL_AST + Attribute [] UnattachedAttributes; +#endif public NamespaceContainer (MemberName name, NamespaceContainer parent) : base (parent, name, null, MemberKind.Namespace) { diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/property.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/property.cs index fe45d9aace..0e2ee579ff 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/property.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/property.cs @@ -749,15 +749,19 @@ namespace Mono.CSharp if ((field.ModFlags & Modifiers.STATIC) == 0) fe.InstanceExpression = new CompilerGeneratedThis (Parent.CurrentType, Location); - // Create get block - Get.Block = new ToplevelBlock (Compiler, ParametersCompiled.EmptyReadOnlyParameters, Location); - Return r = new Return (fe, Location); + // + // Create get block but we careful with location to + // emit only single sequence point per accessor. This allow + // to set a breakpoint on it even with no user code + // + Get.Block = new ToplevelBlock (Compiler, ParametersCompiled.EmptyReadOnlyParameters, Location.Null); + Return r = new Return (fe, Get.Location); Get.Block.AddStatement (r); // Create set block - Set.Block = new ToplevelBlock (Compiler, Set.ParameterInfo, Location); - Assign a = new SimpleAssign (fe, new SimpleName ("value", Location)); - Set.Block.AddStatement (new StatementExpression (a)); + Set.Block = new ToplevelBlock (Compiler, Set.ParameterInfo, Location.Null); + Assign a = new SimpleAssign (fe, new SimpleName ("value", Location.Null), Location.Null); + Set.Block.AddStatement (new StatementExpression (a, Set.Location)); } public override bool Define () @@ -893,7 +897,9 @@ namespace Mono.CSharp public override void Emit (TypeDefinition parent) { if ((method.ModFlags & (Modifiers.ABSTRACT | Modifiers.EXTERN)) == 0) { - block = new ToplevelBlock (Compiler, ParameterInfo, Location); + block = new ToplevelBlock (Compiler, ParameterInfo, Location) { + IsCompilerGenerated = true + }; FabricateBodyStatement (); } diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/statement.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/statement.cs index d38d269435..5f6b8efb4f 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/statement.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/statement.cs @@ -327,17 +327,21 @@ namespace Mono.CSharp { EmbeddedStatement.Emit (ec); ec.MarkLabel (ec.LoopBegin); + // Mark start of while condition + ec.Mark (expr.Location); + // // Dead code elimination // - if (expr is Constant){ + if (expr is Constant) { bool res = !((Constant) expr).IsDefaultValue; expr.EmitSideEffect (ec); if (res) - ec.Emit (OpCodes.Br, loop); - } else + ec.Emit (OpCodes.Br, loop); + } else { expr.EmitBranchable (ec, loop, true); + } ec.MarkLabel (ec.LoopEnd); @@ -427,9 +431,13 @@ namespace Mono.CSharp { // // Inform whether we are infinite or not // - if (expr is Constant){ + if (expr is Constant) { // expr is 'true', since the 'empty' case above handles the 'false' case ec.MarkLabel (ec.LoopBegin); + + if (ec.EmitAccurateDebugInfo) + ec.Emit (OpCodes.Nop); + expr.EmitSideEffect (ec); Statement.Emit (ec); ec.Emit (OpCodes.Br, ec.LoopBegin); @@ -448,8 +456,8 @@ namespace Mono.CSharp { Statement.Emit (ec); ec.MarkLabel (ec.LoopBegin); - ec.Mark (loc); + ec.Mark (expr.Location); expr.EmitBranchable (ec, while_loop, true); ec.MarkLabel (ec.LoopEnd); @@ -459,11 +467,6 @@ namespace Mono.CSharp { ec.LoopEnd = old_end; } - public override void Emit (EmitContext ec) - { - DoEmit (ec); - } - protected override void CloneTo (CloneContext clonectx, Statement t) { While target = (While) t; @@ -592,7 +595,9 @@ namespace Mono.CSharp { // If test is null, there is no test, and we are just // an infinite loop // - if (Condition != null){ + if (Condition != null) { + ec.Mark (Condition.Location); + // // The Resolve code already catches the case for // Test == Constant (false) so we know that @@ -1853,7 +1858,7 @@ namespace Mono.CSharp { // All fixed variabled are pinned, a slot has to be alocated // builder = ec.DeclareLocal (Type, IsFixed); - if (SymbolWriter.HasSymbolWriter) + if (!ec.HasSet (BuilderContext.Options.OmitDebugInfo) && (flags & Flags.CompilerGenerated) == 0) ec.DefineLocalVariable (name, builder); } @@ -2057,6 +2062,9 @@ namespace Mono.CSharp { get { return (flags & Flags.HasRet) != 0; } + set { + flags = value ? flags | Flags.HasRet : flags & ~Flags.HasRet; + } } public Block Original { @@ -2453,7 +2461,7 @@ namespace Mono.CSharp { if (scope_initializers != null) EmitScopeInitializers (ec); - if (ec.EmitAccurateDebugInfo && ec.Mark (StartLocation)) { + if (ec.EmitAccurateDebugInfo && !IsCompilerGenerated && ec.Mark (StartLocation)) { ec.Emit (OpCodes.Nop); } @@ -2469,7 +2477,7 @@ namespace Mono.CSharp { if (emit_debug_info) ec.EndScope (); - if (ec.EmitAccurateDebugInfo && !HasUnreachableClosingBrace && ec.Mark (EndLocation)) { + if (ec.EmitAccurateDebugInfo && !HasUnreachableClosingBrace && !IsCompilerGenerated && ec.Mark (EndLocation)) { ec.Emit (OpCodes.Nop); } } @@ -2942,8 +2950,7 @@ namespace Mono.CSharp { public void WrapIntoIterator (IMethodData method, TypeDefinition host, TypeSpec iterator_type, bool is_enumerable) { - ParametersBlock pb = new ParametersBlock (this, ParametersCompiled.EmptyReadOnlyParameters, StartLocation); - pb.EndLocation = EndLocation; + ParametersBlock pb = new ParametersBlock (this, ParametersCompiled.EmptyReadOnlyParameters, Location.Null); pb.statements = statements; pb.Original = this; @@ -2953,6 +2960,7 @@ namespace Mono.CSharp { statements = new List (1); AddStatement (new Return (iterator, iterator.Location)); flags &= ~Flags.YieldBlock; + IsCompilerGenerated = true; } public void WrapIntoAsyncTask (IMemberContext context, TypeDefinition host, TypeSpec returnType) @@ -4078,7 +4086,10 @@ namespace Mono.CSharp { } } - simple_stmt = new If (cond, s.Block, simple_stmt, loc); + // + // Compiler generated, hide from symbol file + // + simple_stmt = new If (cond, s.Block, simple_stmt, Location.Null); } // It's null for empty switch @@ -4166,7 +4177,9 @@ namespace Mono.CSharp { // Check if string dictionary is initialized and initialize // switch_cache_field.EmitBranchable (ec, l_initialized, true); - string_dictionary.EmitStatement (ec); + using (ec.With (BuilderContext.Options.OmitDebugInfo, true)) { + string_dictionary.EmitStatement (ec); + } ec.MarkLabel (l_initialized); LocalTemporary string_switch_variable = new LocalTemporary (ec.BuiltinTypes.Int); @@ -4210,6 +4223,9 @@ namespace Mono.CSharp { protected override void DoEmit (EmitContext ec) { + // Workaround broken flow-analysis + block.HasUnreachableClosingBrace = true; + // // Needed to emit anonymous storey initialization // Otherwise it does not contain any statements for now @@ -5117,17 +5133,13 @@ namespace Mono.CSharp { // if (li.HoistedVariant != null) { LocalTemporary lt = new LocalTemporary (li.Type); - SymbolWriter.OpenCompilerGeneratedBlock (ec); lt.Store (ec); - SymbolWriter.CloseCompilerGeneratedBlock (ec); // switch to assigning from the temporary variable and not from top of the stack assign.UpdateSource (lt); } } else { - SymbolWriter.OpenCompilerGeneratedBlock (ec); ec.Emit (OpCodes.Pop); - SymbolWriter.CloseCompilerGeneratedBlock (ec); } Block.Emit (ec); @@ -5152,8 +5164,11 @@ namespace Mono.CSharp { if (li.Type.IsGenericParameter) source = new UnboxCast (source, li.Type); - assign = new CompilerAssign (new LocalVariableReference (li, loc), source, loc); - Block.AddScopeStatement (new StatementExpression (assign)); + // + // Uses Location.Null to hide from symbol file + // + assign = new CompilerAssign (new LocalVariableReference (li, Location.Null), source, Location.Null); + Block.AddScopeStatement (new StatementExpression (assign, Location.Null)); } } @@ -5479,7 +5494,10 @@ namespace Mono.CSharp { new Cast (new TypeExpression (idt, loc), lvr, loc).Resolve (bc) : lvr; - Statement dispose = new StatementExpression (new Invocation (dispose_mg, null)); + // + // Hide it from symbol file via null location + // + Statement dispose = new StatementExpression (new Invocation (dispose_mg, null), Location.Null); // Add conditional call when disposing possible null variable if (!type.IsStruct || type.IsNullableType) @@ -5546,6 +5564,14 @@ namespace Mono.CSharp { #endregion + public override void Emit (EmitContext ec) + { + // + // Don't emit sequence point it will be set on variable declaration + // + DoEmit (ec); + } + protected override void EmitTryBodyPrepare (EmitContext ec) { decl.Emit (ec); @@ -5998,7 +6024,7 @@ namespace Mono.CSharp { return null; } - return MethodGroupExpr.CreatePredefined (ms, enumerator.ReturnType, loc); + return MethodGroupExpr.CreatePredefined (ms, enumerator.ReturnType, expr.Location); } PropertySpec ResolveCurrent (ResolveContext rc, MethodSpec enumerator) @@ -6077,7 +6103,7 @@ namespace Mono.CSharp { var init = new Invocation (get_enumerator_mg, null); statement = new While (new BooleanExpression (new Invocation (move_next_mg, null)), - new Body (variable.Type, variable, current_pe, statement, loc), loc); + new Body (variable.Type, variable, current_pe, statement, variable.Location), Location.Null); var enum_type = enumerator_variable.Type; @@ -6089,23 +6115,23 @@ namespace Mono.CSharp { // // Runtime Dispose check // - var vd = new RuntimeDispose (enumerator_variable.LocalInfo, loc); + var vd = new RuntimeDispose (enumerator_variable.LocalInfo, Location.Null); vd.Initializer = init; - statement = new Using (vd, statement, loc); + statement = new Using (vd, statement, Location.Null); } else { // // No Dispose call needed // - this.init = new SimpleAssign (enumerator_variable, init); + this.init = new SimpleAssign (enumerator_variable, init, Location.Null); this.init.Resolve (ec); } } else { // // Static Dispose check // - var vd = new Using.VariableDeclaration (enumerator_variable.LocalInfo, loc); + var vd = new Using.VariableDeclaration (enumerator_variable.LocalInfo, Location.Null); vd.Initializer = init; - statement = new Using (vd, statement, loc); + statement = new Using (vd, statement, Location.Null); } return statement.Resolve (ec); @@ -6126,7 +6152,7 @@ namespace Mono.CSharp { bool OverloadResolver.IErrorHandler.AmbiguousCandidates (ResolveContext ec, MemberSpec best, MemberSpec ambiguous) { ec.Report.SymbolRelatedToPreviousError (best); - ec.Report.Warning (278, 2, loc, + ec.Report.Warning (278, 2, expr.Location, "`{0}' contains ambiguous implementation of `{1}' pattern. Method `{2}' is ambiguous with method `{3}'", expr.Type.GetSignatureForError (), "enumerable", best.GetSignatureForError (), ambiguous.GetSignatureForError ()); diff --git a/ICSharpCode.NRefactory.CSharp/TypeSystem/CSharpAttribute.cs b/ICSharpCode.NRefactory.CSharp/TypeSystem/CSharpAttribute.cs index 5b6651c704..d86c321a28 100644 --- a/ICSharpCode.NRefactory.CSharp/TypeSystem/CSharpAttribute.cs +++ b/ICSharpCode.NRefactory.CSharp/TypeSystem/CSharpAttribute.cs @@ -51,8 +51,7 @@ namespace ICSharpCode.NRefactory.CSharp.TypeSystem this.namedCtorArguments = namedCtorArguments ?? EmptyList>.Instance; this.namedArguments = namedArguments ?? EmptyList>.Instance; } - - public DomRegion Region { + public DomRegion Region { get { return region; } } @@ -157,7 +156,7 @@ namespace ICSharpCode.NRefactory.CSharp.TypeSystem } else { namedArgs = new List>(); foreach (var pair in unresolved.namedArguments) { - IMember member = attributeType.GetMembers(m => (m.EntityType == EntityType.Field || m.EntityType == EntityType.Property) && m.Name == pair.Key).FirstOrDefault(); + IMember member = attributeType.GetMembers(m => (m.EntityType == EntityType.Fidyj.keld || m.EntityType == EntityType.Property) && m.Name == pair.Key).FirstOrDefault(); if (member != null) { ResolveResult val = pair.Value.Resolve(context); namedArgs.Add(new KeyValuePair(member, val)); @@ -259,3 +258,4 @@ namespace ICSharpCode.NRefactory.CSharp.TypeSystem } */ } +MarshalByRefObject ^ẑäp \ No newline at end of file