From f9bc384c79d2724754dc3ec31d8baff922ee44d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20Kr=C3=BCger?= Date: Wed, 27 Feb 2013 13:16:04 +0100 Subject: [PATCH] Updated mcs. --- .../Parser/mcs/MonoSymbolFile.cs | 8 +- .../Parser/mcs/MonoSymbolTable.cs | 15 + .../Parser/mcs/MonoSymbolWriter.cs | 4 - .../Parser/mcs/SourceMethodBuilder.cs | 8 - .../Parser/mcs/anonymous.cs | 24 +- .../Parser/mcs/assembly.cs | 35 +- .../Parser/mcs/async.cs | 61 +- .../Parser/mcs/class.cs | 45 +- .../Parser/mcs/convert.cs | 50 +- .../Parser/mcs/cs-parser.cs | 8928 +++++++++-------- .../Parser/mcs/cs-parser.jay | 64 +- .../Parser/mcs/cs-tokenizer.cs | 34 +- .../Parser/mcs/doc.cs | 29 +- .../Parser/mcs/ecore.cs | 40 +- .../Parser/mcs/eval.cs | 9 +- .../Parser/mcs/expression.cs | 49 +- .../Parser/mcs/generic.cs | 36 +- .../Parser/mcs/module.cs | 41 +- .../Parser/mcs/namespace.cs | 4 +- .../Parser/mcs/report.cs | 2 +- .../Parser/mcs/statement.cs | 32 +- .../Parser/mcs/typemanager.cs | 13 + .../Parser/mcs/typespec.cs | 12 +- 23 files changed, 4978 insertions(+), 4565 deletions(-) diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/MonoSymbolFile.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/MonoSymbolFile.cs index 9b83bf3bed..8431c70a45 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/MonoSymbolFile.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/MonoSymbolFile.cs @@ -130,24 +130,24 @@ namespace Mono.CompilerServices.SymbolWriter public int NumLineNumbers; - internal MonoSymbolFile () + public MonoSymbolFile () { ot = new OffsetTable (); } - internal int AddSource (SourceFileEntry source) + public int AddSource (SourceFileEntry source) { sources.Add (source); return sources.Count; } - internal int AddCompileUnit (CompileUnitEntry entry) + public int AddCompileUnit (CompileUnitEntry entry) { comp_units.Add (entry); return comp_units.Count; } - internal void AddMethod (MethodEntry entry) + public void AddMethod (MethodEntry entry) { methods.Add (entry); } diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/MonoSymbolTable.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/MonoSymbolTable.cs index 88d604f2e3..2b43442680 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/MonoSymbolTable.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/MonoSymbolTable.cs @@ -601,6 +601,11 @@ namespace Mono.CompilerServices.SymbolWriter DataOffset = reader.ReadInt32 (); } + public void ReadAll () + { + ReadData (); + } + void ReadData () { if (creating) @@ -746,6 +751,7 @@ namespace Mono.CompilerServices.SymbolWriter public string FileName { get { return file_name; } + set { file_name = value; } } public bool AutoGenerated { @@ -1208,6 +1214,15 @@ namespace Mono.CompilerServices.SymbolWriter bw.WriteLeb128 ((int) flags); } + public void ReadAll () + { + GetLineNumberTable (); + GetLocals (); + GetCodeBlocks (); + GetScopeVariables (); + GetRealName (); + } + public LineNumberTable GetLineNumberTable () { lock (SymbolFile) { diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/MonoSymbolWriter.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/MonoSymbolWriter.cs index 199ef41d50..b2c2afdba6 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/MonoSymbolWriter.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/MonoSymbolWriter.cs @@ -47,11 +47,7 @@ namespace Mono.CompilerServices.SymbolWriter string filename; private SourceMethodBuilder current_method; -#if NET_2_1 - System.Collections.Stack current_method_stack = new System.Collections.Stack (); -#else Stack current_method_stack = new Stack (); -#endif public MonoSymbolWriter (string filename) { diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/SourceMethodBuilder.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/SourceMethodBuilder.cs index b45bf8a1fb..75e6a6c608 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/SourceMethodBuilder.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/SourceMethodBuilder.cs @@ -37,11 +37,7 @@ namespace Mono.CompilerServices.SymbolWriter List _locals; List _blocks; List _scope_vars; -#if NET_2_1 - System.Collections.Stack _block_stack; -#else Stack _block_stack; -#endif readonly List method_lines; readonly ICompileUnit _comp_unit; @@ -90,11 +86,7 @@ namespace Mono.CompilerServices.SymbolWriter public void StartBlock (CodeBlockEntry.Type type, int start_offset) { if (_block_stack == null) { -#if NET_2_1 - _block_stack = new System.Collections.Stack (); -#else _block_stack = new Stack (); -#endif } if (_blocks == null) diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/anonymous.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/anonymous.cs index 51e218713a..58e22f90b3 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/anonymous.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/anonymous.cs @@ -1368,7 +1368,7 @@ namespace Mono.CSharp { b = b.ConvertToAsyncTask (ec, ec.CurrentMemberDefinition.Parent.PartialContainer, p, return_type, loc); } - return CompatibleMethodFactory (return_type ?? InternalType.Arglist, delegate_type, p, b); + return CompatibleMethodFactory (return_type ?? InternalType.ErrorType, delegate_type, p, b); } protected virtual AnonymousMethodBody CompatibleMethodFactory (TypeSpec return_type, TypeSpec delegate_type, ParametersCompiled p, ParametersBlock b) @@ -1635,21 +1635,25 @@ namespace Mono.CSharp { parent = storey = FindBestMethodStorey (); if (storey == null) { - var sm = src_block.ParametersBlock.TopBlock.StateMachine; + var top_block = src_block.ParametersBlock.TopBlock; + var sm = top_block.StateMachine; - // - // Remove hoisted this demand when simple instance method is enough (no hoisted variables only this) - // - if (src_block.HasCapturedThis && src_block.ParametersBlock.StateMachine == null) { - src_block.ParametersBlock.TopBlock.RemoveThisReferenceFromChildrenBlock (src_block); + if (src_block.HasCapturedThis) { + // + // Remove hoisted 'this' request when simple instance method is + // enough (no hoisted variables only 'this') + // + if (src_block.ParametersBlock.StateMachine == null) + top_block.RemoveThisReferenceFromChildrenBlock (src_block); // // Special case where parent class is used to emit instance method - // because currect storey is of value type (async host) and we don't - // want to create another childer storey to host this reference only + // because currect storey is of value type (async host). We cannot + // use ldftn on non-boxed instances either to share mutated state // - if (sm != null && sm.Kind == MemberKind.Struct) + if (sm != null && sm.Kind == MemberKind.Struct) { parent = sm.Parent.PartialContainer; + } } // diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/assembly.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/assembly.cs index 0124ce9164..fa0a61b175 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/assembly.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/assembly.cs @@ -154,6 +154,8 @@ namespace Mono.CSharp } } + public bool IsSatelliteAssembly { get; private set; } + public string Name { get { return name; @@ -214,6 +216,7 @@ namespace Mono.CSharp builder_extra.SetCulture (value, a.Location); } + IsSatelliteAssembly = true; return; } @@ -457,26 +460,28 @@ namespace Mono.CSharp } } - if (!wrap_non_exception_throws_custom) { - PredefinedAttribute pa = module.PredefinedAttributes.RuntimeCompatibility; - if (pa.IsDefined && pa.ResolveBuilder ()) { - var prop = module.PredefinedMembers.RuntimeCompatibilityWrapNonExceptionThrows.Get (); - if (prop != null) { - AttributeEncoder encoder = new AttributeEncoder (); - encoder.EncodeNamedPropertyArgument (prop, new BoolLiteral (Compiler.BuiltinTypes, true, Location.Null)); - SetCustomAttribute (pa.Constructor, encoder.ToArray ()); + if (!IsSatelliteAssembly) { + if (!wrap_non_exception_throws_custom) { + PredefinedAttribute pa = module.PredefinedAttributes.RuntimeCompatibility; + if (pa.IsDefined && pa.ResolveBuilder ()) { + var prop = module.PredefinedMembers.RuntimeCompatibilityWrapNonExceptionThrows.Get (); + if (prop != null) { + AttributeEncoder encoder = new AttributeEncoder (); + encoder.EncodeNamedPropertyArgument (prop, new BoolLiteral (Compiler.BuiltinTypes, true, Location.Null)); + SetCustomAttribute (pa.Constructor, encoder.ToArray ()); + } } } - } - if (declarative_security != null) { + if (declarative_security != null) { #if STATIC - foreach (var entry in declarative_security) { - Builder.__AddDeclarativeSecurity (entry); - } + foreach (var entry in declarative_security) { + Builder.__AddDeclarativeSecurity (entry); + } #else - throw new NotSupportedException ("Assembly-level security"); + throw new NotSupportedException ("Assembly-level security"); #endif + } } CheckReferencesPublicToken (); @@ -1104,8 +1109,8 @@ namespace Mono.CSharp this.compiler = compiler; paths = new List (); - paths.AddRange (compiler.Settings.ReferencesLookupPaths); paths.Add (Directory.GetCurrentDirectory ()); + paths.AddRange (compiler.Settings.ReferencesLookupPaths); } public abstract bool HasObjectType (T assembly); diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/async.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/async.cs index 46629f9dd5..4357d78745 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/async.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/async.cs @@ -129,13 +129,15 @@ namespace Mono.CSharp public class AwaitStatement : YieldStatement { - sealed class AwaitableMemberAccess : MemberAccess + public sealed class AwaitableMemberAccess : MemberAccess { public AwaitableMemberAccess (Expression expr) : base (expr, "GetAwaiter") { } + public bool ProbingMode { get; set; } + protected override void Error_TypeDoesNotContainDefinition (ResolveContext rc, TypeSpec type, string name) { Error_OperatorCannotBeApplied (rc, type); @@ -143,6 +145,9 @@ namespace Mono.CSharp protected override void Error_OperatorCannotBeApplied (ResolveContext rc, TypeSpec type) { + if (ProbingMode) + return; + var invocation = LeftExpression as Invocation; if (invocation != null && invocation.MethodGroup != null && (invocation.MethodGroup.BestCandidate.Modifiers & Modifiers.ASYNC) != 0) { rc.Report.Error (4008, loc, "Cannot await void method `{0}'. Consider changing method return type to `Task'", @@ -169,8 +174,7 @@ namespace Mono.CSharp } Field awaiter; - PropertySpec is_completed; - MethodSpec get_result; + AwaiterDefinition awaiter_definition; TypeSpec type; TypeSpec result_type; @@ -183,7 +187,7 @@ namespace Mono.CSharp bool IsDynamic { get { - return is_completed == null; + return awaiter_definition == null; } } @@ -211,12 +215,12 @@ namespace Mono.CSharp if (IsDynamic) { var rc = new ResolveContext (ec.MemberContext); return new Invocation (new MemberAccess (fe_awaiter, "GetResult"), new Arguments (0)).Resolve (rc); - } else { - var mg_result = MethodGroupExpr.CreatePredefined (get_result, fe_awaiter.Type, loc); - mg_result.InstanceExpression = fe_awaiter; - - return new GetResultInvocation (mg_result, new Arguments (0)); } + + var mg_result = MethodGroupExpr.CreatePredefined (awaiter_definition.GetResult, fe_awaiter.Type, loc); + mg_result.InstanceExpression = fe_awaiter; + + return new GetResultInvocation (mg_result, new Arguments (0)); } public void EmitPrologue (EmitContext ec) @@ -247,7 +251,7 @@ namespace Mono.CSharp dargs.Add (new Argument (completed_expr)); completed_expr = new DynamicConversion (ec.Module.Compiler.BuiltinTypes.Bool, 0, dargs, loc).Resolve (rc); } else { - var pe = PropertyExpr.CreatePredefined (is_completed, loc); + var pe = PropertyExpr.CreatePredefined (awaiter_definition.IsCompleted, loc); pe.InstanceExpression = fe_awaiter; completed_expr = pe; } @@ -309,9 +313,8 @@ namespace Mono.CSharp if (!base.Resolve (bc)) return false; - Arguments args = new Arguments (0); - type = expr.Type; + Arguments args = new Arguments (0); // // The await expression is of dynamic type @@ -343,44 +346,22 @@ namespace Mono.CSharp } var awaiter_type = ama.Type; - expr = ama; - - // - // Predefined: bool IsCompleted { get; } - // - is_completed = MemberCache.FindMember (awaiter_type, MemberFilter.Property ("IsCompleted", bc.Module.Compiler.BuiltinTypes.Bool), - BindingRestriction.InstanceOnly) as PropertySpec; - if (is_completed == null || !is_completed.HasGet) { - Error_WrongAwaiterPattern (bc, awaiter_type); - return false; - } + awaiter_definition = bc.Module.GetAwaiter (awaiter_type); - // - // Predefined: GetResult () - // - // The method return type is also result type of await expression - // - get_result = MemberCache.FindMember (awaiter_type, MemberFilter.Method ("GetResult", 0, - ParametersCompiled.EmptyReadOnlyParameters, null), - BindingRestriction.InstanceOnly) as MethodSpec; - - if (get_result == null) { + if (!awaiter_definition.IsValidPattern) { Error_WrongAwaiterPattern (bc, awaiter_type); return false; } - // - // Predefined: INotifyCompletion.OnCompleted (System.Action) - // - var nc = bc.Module.PredefinedTypes.INotifyCompletion; - if (nc.Define () && !awaiter_type.ImplementsInterface (nc.TypeSpec, false)) { + if (!awaiter_definition.INotifyCompletion) { bc.Report.Error (4027, loc, "The awaiter type `{0}' must implement interface `{1}'", - awaiter_type.GetSignatureForError (), nc.GetSignatureForError ()); + awaiter_type.GetSignatureForError (), bc.Module.PredefinedTypes.INotifyCompletion.GetSignatureForError ()); return false; } - result_type = get_result.ReturnType; + expr = ama; + result_type = awaiter_definition.GetResult.ReturnType; return true; } diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/class.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/class.cs index 792671be72..199647d82b 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/class.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/class.cs @@ -1366,22 +1366,12 @@ namespace Mono.CSharp if (proxy_method == null) { string name = CompilerGeneratedContainer.MakeName (method.Name, null, "BaseCallProxy", hoisted_base_call_proxies.Count); - var base_parameters = new Parameter[method.Parameters.Count]; - for (int i = 0; i < base_parameters.Length; ++i) { - var base_param = method.Parameters.FixedParameters[i]; - base_parameters[i] = new Parameter (new TypeExpression (method.Parameters.Types[i], Location), - base_param.Name, base_param.ModFlags, null, Location); - base_parameters[i].Resolve (this, i); - } - - var cloned_params = ParametersCompiled.CreateFullyResolved (base_parameters, method.Parameters.Types); - if (method.Parameters.HasArglist) { - cloned_params.FixedParameters[0] = new Parameter (null, "__arglist", Parameter.Modifier.NONE, null, Location); - cloned_params.Types[0] = Module.PredefinedTypes.RuntimeArgumentHandle.Resolve (); - } MemberName member_name; TypeArguments targs = null; + TypeSpec return_type = method.ReturnType; + var local_param_types = method.Parameters.Types; + if (method.IsGeneric) { // // Copy all base generic method type parameters info @@ -1393,19 +1383,42 @@ namespace Mono.CSharp targs.Arguments = new TypeSpec[hoisted_tparams.Length]; for (int i = 0; i < hoisted_tparams.Length; ++i) { var tp = hoisted_tparams[i]; - tparams.Add (new TypeParameter (tp, null, new MemberName (tp.Name, Location), null)); + var local_tp = new TypeParameter (tp, null, new MemberName (tp.Name, Location), null); + tparams.Add (local_tp); targs.Add (new SimpleName (tp.Name, Location)); - targs.Arguments[i] = tp; + targs.Arguments[i] = local_tp.Type; } member_name = new MemberName (name, tparams, Location); + + // + // Mutate any method type parameters from original + // to newly created hoisted version + // + var mutator = new TypeParameterMutator (hoisted_tparams, tparams); + return_type = mutator.Mutate (return_type); + local_param_types = mutator.Mutate (local_param_types); } else { member_name = new MemberName (name); } + var base_parameters = new Parameter[method.Parameters.Count]; + for (int i = 0; i < base_parameters.Length; ++i) { + var base_param = method.Parameters.FixedParameters[i]; + base_parameters[i] = new Parameter (new TypeExpression (local_param_types [i], Location), + base_param.Name, base_param.ModFlags, null, Location); + base_parameters[i].Resolve (this, i); + } + + var cloned_params = ParametersCompiled.CreateFullyResolved (base_parameters, method.Parameters.Types); + if (method.Parameters.HasArglist) { + cloned_params.FixedParameters[0] = new Parameter (null, "__arglist", Parameter.Modifier.NONE, null, Location); + cloned_params.Types[0] = Module.PredefinedTypes.RuntimeArgumentHandle.Resolve (); + } + // Compiler generated proxy - proxy_method = new Method (this, new TypeExpression (method.ReturnType, Location), + proxy_method = new Method (this, new TypeExpression (return_type, Location), Modifiers.PRIVATE | Modifiers.COMPILER_GENERATED | Modifiers.DEBUGGER_HIDDEN, member_name, cloned_params, null); diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/convert.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/convert.cs index 8230e89708..3b4a4c77c6 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/convert.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/convert.cs @@ -704,7 +704,7 @@ namespace Mono.CSharp { if (expr.Type == InternalType.Arglist) return target_type == ec.Module.PredefinedTypes.ArgIterator.TypeSpec; - return ImplicitUserConversion (ec, expr, target_type, Location.Null) != null; + return UserDefinedConversion (ec, expr, target_type, true, true, Location.Null) != null; } // @@ -917,17 +917,20 @@ namespace Mono.CSharp { // static TypeSpec FindMostSpecificSource (List list, TypeSpec sourceType, Expression source, bool apply_explicit_conv_rules) { - var src_types_set = new TypeSpec [list.Count]; + TypeSpec[] src_types_set = null; // // Try exact match first, if any operator converts from S then Sx = S // - for (int i = 0; i < src_types_set.Length; ++i) { + for (int i = 0; i < list.Count; ++i) { TypeSpec param_type = list [i].Parameters.Types [0]; if (param_type == sourceType) return param_type; + if (src_types_set == null) + src_types_set = new TypeSpec [list.Count]; + src_types_set [i] = param_type; } @@ -961,7 +964,7 @@ namespace Mono.CSharp { static public TypeSpec FindMostSpecificTarget (IList list, TypeSpec target, bool apply_explicit_conv_rules) { - var tgt_types_set = new List (); + List tgt_types_set = null; // // If any operator converts to T then Tx = T @@ -971,6 +974,12 @@ namespace Mono.CSharp { if (ret_type == target) return ret_type; + if (tgt_types_set == null) { + tgt_types_set = new List (list.Count); + } else if (tgt_types_set.Contains (ret_type)) { + continue; + } + tgt_types_set.Add (ret_type); } @@ -1005,7 +1014,7 @@ namespace Mono.CSharp { /// static public Expression ImplicitUserConversion (ResolveContext ec, Expression source, TypeSpec target, Location loc) { - return UserDefinedConversion (ec, source, target, true, loc); + return UserDefinedConversion (ec, source, target, true, false, loc); } /// @@ -1013,7 +1022,7 @@ namespace Mono.CSharp { /// static Expression ExplicitUserConversion (ResolveContext ec, Expression source, TypeSpec target, Location loc) { - return UserDefinedConversion (ec, source, target, false, loc); + return UserDefinedConversion (ec, source, target, false, false, loc); } static void FindApplicableUserDefinedConversionOperators (IList operators, Expression source, TypeSpec target, bool implicitOnly, ref List candidates) @@ -1077,7 +1086,7 @@ namespace Mono.CSharp { // // User-defined conversions // - static Expression UserDefinedConversion (ResolveContext ec, Expression source, TypeSpec target, bool implicitOnly, Location loc) + static Expression UserDefinedConversion (ResolveContext ec, Expression source, TypeSpec target, bool implicitOnly, bool probingOnly, Location loc) { List candidates = null; @@ -1173,19 +1182,24 @@ namespace Mono.CSharp { } if (most_specific_operator == null) { - MethodSpec ambig_arg = null; - foreach (var candidate in candidates) { - if (candidate.ReturnType == t_x) - most_specific_operator = candidate; - else if (candidate.Parameters.Types[0] == s_x) - ambig_arg = candidate; + // + // Unless running in probing more + // + if (!probingOnly) { + MethodSpec ambig_arg = null; + foreach (var candidate in candidates) { + if (candidate.ReturnType == t_x) + most_specific_operator = candidate; + else if (candidate.Parameters.Types[0] == s_x) + ambig_arg = candidate; + } + + ec.Report.Error (457, loc, + "Ambiguous user defined operators `{0}' and `{1}' when converting from `{2}' to `{3}'", + ambig_arg.GetSignatureForError (), most_specific_operator.GetSignatureForError (), + source.Type.GetSignatureForError (), target.GetSignatureForError ()); } - ec.Report.Error (457, loc, - "Ambiguous user defined operators `{0}' and `{1}' when converting from `{2}' to `{3}'", - ambig_arg.GetSignatureForError (), most_specific_operator.GetSignatureForError (), - source.Type.GetSignatureForError (), target.GetSignatureForError ()); - return ErrorExpression.Instance; } } diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-parser.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-parser.cs index 9c5f98abea..182cf0a15c 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-parser.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-parser.cs @@ -365,12 +365,12 @@ namespace Mono.CSharp //t "formal_parameter_list : error", //t "fixed_parameters : fixed_parameter", //t "fixed_parameters : fixed_parameters COMMA fixed_parameter", -//t "fixed_parameter : opt_attributes opt_parameter_modifier parameter_type IDENTIFIER", -//t "fixed_parameter : opt_attributes opt_parameter_modifier parameter_type IDENTIFIER OPEN_BRACKET CLOSE_BRACKET", +//t "fixed_parameter : opt_attributes opt_parameter_modifier parameter_type identifier_inside_body", +//t "fixed_parameter : opt_attributes opt_parameter_modifier parameter_type identifier_inside_body OPEN_BRACKET CLOSE_BRACKET", //t "fixed_parameter : attribute_sections error", //t "fixed_parameter : opt_attributes opt_parameter_modifier parameter_type error", //t "$$26 :", -//t "fixed_parameter : opt_attributes opt_parameter_modifier parameter_type IDENTIFIER ASSIGN $$26 constant_expression", +//t "fixed_parameter : opt_attributes opt_parameter_modifier parameter_type identifier_inside_body ASSIGN $$26 constant_expression", //t "opt_parameter_modifier :", //t "opt_parameter_modifier : parameter_modifiers", //t "parameter_modifiers : parameter_modifier", @@ -625,10 +625,10 @@ namespace Mono.CSharp //t "close_parens : COMPLETE_COMPLETION", //t "parenthesized_expression : OPEN_PARENS expression CLOSE_PARENS", //t "parenthesized_expression : OPEN_PARENS expression COMPLETE_COMPLETION", -//t "member_access : primary_expression DOT IDENTIFIER opt_type_argument_list", -//t "member_access : builtin_types DOT IDENTIFIER opt_type_argument_list", -//t "member_access : BASE DOT IDENTIFIER opt_type_argument_list", -//t "member_access : qualified_alias_member IDENTIFIER opt_type_argument_list", +//t "member_access : primary_expression DOT identifier_inside_body opt_type_argument_list", +//t "member_access : builtin_types DOT identifier_inside_body opt_type_argument_list", +//t "member_access : BASE DOT identifier_inside_body opt_type_argument_list", +//t "member_access : qualified_alias_member identifier_inside_body opt_type_argument_list", //t "member_access : primary_expression DOT GENERATE_COMPLETION", //t "member_access : primary_expression DOT IDENTIFIER GENERATE_COMPLETION", //t "member_access : builtin_types DOT GENERATE_COMPLETION", @@ -646,6 +646,7 @@ namespace Mono.CSharp //t "member_initializer_list : member_initializer_list COMMA member_initializer", //t "member_initializer_list : member_initializer_list error", //t "member_initializer : IDENTIFIER ASSIGN initializer_value", +//t "member_initializer : AWAIT ASSIGN initializer_value", //t "member_initializer : GENERATE_COMPLETION", //t "member_initializer : non_assignment_expression opt_COMPLETE_COMPLETION", //t "member_initializer : OPEN_BRACE expression_list CLOSE_BRACE", @@ -699,8 +700,8 @@ namespace Mono.CSharp //t "anonymous_type_parameters_opt : anonymous_type_parameters", //t "anonymous_type_parameters : anonymous_type_parameter", //t "anonymous_type_parameters : anonymous_type_parameters COMMA anonymous_type_parameter", -//t "anonymous_type_parameter : IDENTIFIER ASSIGN variable_initializer", -//t "anonymous_type_parameter : IDENTIFIER", +//t "anonymous_type_parameter : identifier_inside_body ASSIGN variable_initializer", +//t "anonymous_type_parameter : identifier_inside_body", //t "anonymous_type_parameter : member_access", //t "anonymous_type_parameter : error", //t "opt_rank_specifier :", @@ -839,6 +840,7 @@ namespace Mono.CSharp //t "lambda_parameter : parameter_modifier parameter_type identifier_inside_body", //t "lambda_parameter : parameter_type identifier_inside_body", //t "lambda_parameter : IDENTIFIER", +//t "lambda_parameter : AWAIT", //t "opt_lambda_parameter_list :", //t "opt_lambda_parameter_list : lambda_parameter_list", //t "$$69 :", @@ -850,13 +852,15 @@ namespace Mono.CSharp //t "$$70 :", //t "lambda_expression : IDENTIFIER ARROW $$70 lambda_expression_body", //t "$$71 :", -//t "lambda_expression : ASYNC identifier_inside_body ARROW $$71 lambda_expression_body", +//t "lambda_expression : AWAIT ARROW $$71 lambda_expression_body", //t "$$72 :", +//t "lambda_expression : ASYNC identifier_inside_body ARROW $$72 lambda_expression_body", //t "$$73 :", -//t "lambda_expression : OPEN_PARENS_LAMBDA $$72 opt_lambda_parameter_list CLOSE_PARENS ARROW $$73 lambda_expression_body", //t "$$74 :", +//t "lambda_expression : OPEN_PARENS_LAMBDA $$73 opt_lambda_parameter_list CLOSE_PARENS ARROW $$74 lambda_expression_body", //t "$$75 :", -//t "lambda_expression : ASYNC OPEN_PARENS_LAMBDA $$74 opt_lambda_parameter_list CLOSE_PARENS ARROW $$75 lambda_expression_body", +//t "$$76 :", +//t "lambda_expression : ASYNC OPEN_PARENS_LAMBDA $$75 opt_lambda_parameter_list CLOSE_PARENS ARROW $$76 lambda_expression_body", //t "expression : assignment_expression", //t "expression : non_assignment_expression", //t "non_assignment_expression : conditional_expression", @@ -868,11 +872,11 @@ namespace Mono.CSharp //t "undocumented_expressions : MAKEREF open_parens_any expression CLOSE_PARENS", //t "constant_expression : expression", //t "boolean_expression : expression", -//t "$$76 :", //t "$$77 :", //t "$$78 :", //t "$$79 :", -//t "class_declaration : opt_attributes opt_modifiers opt_partial CLASS $$76 type_declaration_name $$77 opt_class_base opt_type_parameter_constraints_clauses $$78 OPEN_BRACE opt_class_member_declarations CLOSE_BRACE $$79 opt_semicolon", +//t "$$80 :", +//t "class_declaration : opt_attributes opt_modifiers opt_partial CLASS $$77 type_declaration_name $$78 opt_class_base opt_type_parameter_constraints_clauses $$79 OPEN_BRACE opt_class_member_declarations CLOSE_BRACE $$80 opt_semicolon", //t "opt_partial :", //t "opt_partial : PARTIAL", //t "opt_modifiers :", @@ -913,15 +917,15 @@ namespace Mono.CSharp //t "opt_type_parameter_variance : type_parameter_variance", //t "type_parameter_variance : OUT", //t "type_parameter_variance : IN", -//t "$$80 :", -//t "block : OPEN_BRACE $$80 opt_statement_list block_end", +//t "$$81 :", +//t "block : OPEN_BRACE $$81 opt_statement_list block_end", //t "block_end : CLOSE_BRACE", //t "block_end : COMPLETE_COMPLETION", -//t "$$81 :", -//t "block_prepared : OPEN_BRACE $$81 opt_statement_list CLOSE_BRACE", -//t "block_prepared : CLOSE_BRACE", //t "$$82 :", -//t "block_prepared_strict : OPEN_BRACE $$82 opt_statement_list CLOSE_BRACE", +//t "block_prepared : OPEN_BRACE $$82 opt_statement_list CLOSE_BRACE", +//t "block_prepared : CLOSE_BRACE", +//t "$$83 :", +//t "block_prepared_strict : OPEN_BRACE $$83 opt_statement_list CLOSE_BRACE", //t "opt_statement_list :", //t "opt_statement_list : statement_list", //t "statement_list : statement", @@ -967,8 +971,8 @@ namespace Mono.CSharp //t "embedded_statement : labeled_statement", //t "embedded_statement : error", //t "empty_statement : SEMICOLON", -//t "$$83 :", -//t "labeled_statement : identifier_inside_body COLON $$83 statement", +//t "$$84 :", +//t "labeled_statement : identifier_inside_body COLON $$84 statement", //t "variable_type : variable_type_simple", //t "variable_type : variable_type_simple rank_specifiers", //t "variable_type_simple : primary_expression_or_type opt_nullable", @@ -982,10 +986,10 @@ namespace Mono.CSharp //t "pointer_star : STAR", //t "identifier_inside_body : IDENTIFIER", //t "identifier_inside_body : AWAIT", -//t "$$84 :", -//t "block_variable_declaration : variable_type identifier_inside_body $$84 opt_local_variable_initializer opt_variable_declarators semicolon_or_handle_error_close_brace", //t "$$85 :", -//t "block_variable_declaration : CONST variable_type identifier_inside_body $$85 const_variable_initializer opt_const_declarators SEMICOLON", +//t "block_variable_declaration : variable_type identifier_inside_body $$85 opt_local_variable_initializer opt_variable_declarators semicolon_or_handle_error_close_brace", +//t "$$86 :", +//t "block_variable_declaration : CONST variable_type identifier_inside_body $$86 const_variable_initializer opt_const_declarators SEMICOLON", //t "semicolon_or_handle_error_close_brace : SEMICOLON", //t "semicolon_or_handle_error_close_brace : CLOSE_BRACE", //t "opt_local_variable_initializer :", @@ -1023,16 +1027,16 @@ namespace Mono.CSharp //t "if_statement : IF open_parens_any boolean_expression CLOSE_PARENS embedded_statement", //t "if_statement : IF open_parens_any boolean_expression CLOSE_PARENS embedded_statement ELSE embedded_statement", //t "if_statement : IF open_parens_any boolean_expression error", -//t "$$86 :", -//t "switch_statement : SWITCH open_parens_any expression CLOSE_PARENS OPEN_BRACE $$86 opt_switch_sections CLOSE_BRACE", +//t "$$87 :", +//t "switch_statement : SWITCH open_parens_any expression CLOSE_PARENS OPEN_BRACE $$87 opt_switch_sections CLOSE_BRACE", //t "switch_statement : SWITCH open_parens_any expression error", //t "opt_switch_sections :", //t "opt_switch_sections : switch_sections", //t "switch_sections : switch_section", //t "switch_sections : switch_sections switch_section", //t "switch_sections : error", -//t "$$87 :", -//t "switch_section : switch_labels $$87 statement_list", +//t "$$88 :", +//t "switch_section : switch_labels $$88 statement_list", //t "switch_labels : switch_label", //t "switch_labels : switch_labels switch_label", //t "switch_label : CASE constant_expression COLON", @@ -1047,20 +1051,20 @@ namespace Mono.CSharp //t "do_statement : DO embedded_statement WHILE open_parens_any boolean_expression CLOSE_PARENS SEMICOLON", //t "do_statement : DO embedded_statement error", //t "do_statement : DO embedded_statement WHILE open_parens_any boolean_expression error", -//t "$$88 :", -//t "for_statement : FOR open_parens_any $$88 for_statement_cont", //t "$$89 :", -//t "for_statement_cont : opt_for_initializer SEMICOLON $$89 for_statement_condition", -//t "for_statement_cont : opt_for_initializer CLOSE_PARENS", +//t "for_statement : FOR open_parens_any $$89 for_statement_cont", //t "$$90 :", -//t "for_statement_condition : opt_for_condition SEMICOLON $$90 for_statement_end", +//t "for_statement_cont : opt_for_initializer SEMICOLON $$90 for_statement_condition", +//t "for_statement_cont : opt_for_initializer CLOSE_PARENS", +//t "$$91 :", +//t "for_statement_condition : opt_for_condition SEMICOLON $$91 for_statement_end", //t "for_statement_condition : boolean_expression CLOSE_PARENS", //t "for_statement_end : opt_for_iterator CLOSE_PARENS embedded_statement", //t "for_statement_end : error", //t "opt_for_initializer :", //t "opt_for_initializer : for_initializer", -//t "$$91 :", -//t "for_initializer : variable_type identifier_inside_body $$91 opt_local_variable_initializer opt_variable_declarators", +//t "$$92 :", +//t "for_initializer : variable_type identifier_inside_body $$92 opt_local_variable_initializer opt_variable_declarators", //t "for_initializer : statement_expression_list", //t "opt_for_condition :", //t "opt_for_condition : boolean_expression", @@ -1071,8 +1075,8 @@ namespace Mono.CSharp //t "statement_expression_list : statement_expression_list COMMA statement_expression", //t "foreach_statement : FOREACH open_parens_any type error", //t "foreach_statement : FOREACH open_parens_any type identifier_inside_body error", -//t "$$92 :", -//t "foreach_statement : FOREACH open_parens_any type identifier_inside_body IN expression CLOSE_PARENS $$92 embedded_statement", +//t "$$93 :", +//t "foreach_statement : FOREACH open_parens_any type identifier_inside_body IN expression CLOSE_PARENS $$93 embedded_statement", //t "foreach_statement : FOREACH open_parens_any type identifier_inside_body error", //t "foreach_statement : FOREACH open_parens_any type error", //t "jump_statement : break_statement", @@ -1106,22 +1110,22 @@ namespace Mono.CSharp //t "opt_identifier :", //t "opt_identifier : identifier_inside_body", //t "catch_clause : CATCH block", -//t "$$93 :", -//t "catch_clause : CATCH open_parens_any type opt_identifier CLOSE_PARENS $$93 block_prepared_strict", +//t "$$94 :", +//t "catch_clause : CATCH open_parens_any type opt_identifier CLOSE_PARENS $$94 block_prepared_strict", //t "catch_clause : CATCH open_parens_any error", //t "catch_clause : CATCH open_parens_any type opt_identifier CLOSE_PARENS error", //t "checked_statement : CHECKED block", //t "unchecked_statement : UNCHECKED block", -//t "$$94 :", -//t "unsafe_statement : UNSAFE $$94 block", +//t "$$95 :", +//t "unsafe_statement : UNSAFE $$95 block", //t "lock_statement : LOCK open_parens_any expression CLOSE_PARENS embedded_statement", //t "lock_statement : LOCK open_parens_any expression error", -//t "$$95 :", //t "$$96 :", -//t "fixed_statement : FIXED open_parens_any variable_type identifier_inside_body $$95 using_or_fixed_variable_initializer opt_using_or_fixed_variable_declarators CLOSE_PARENS $$96 embedded_statement", //t "$$97 :", +//t "fixed_statement : FIXED open_parens_any variable_type identifier_inside_body $$96 using_or_fixed_variable_initializer opt_using_or_fixed_variable_declarators CLOSE_PARENS $$97 embedded_statement", //t "$$98 :", -//t "using_statement : USING open_parens_any variable_type identifier_inside_body $$97 using_initialization CLOSE_PARENS $$98 embedded_statement", +//t "$$99 :", +//t "using_statement : USING open_parens_any variable_type identifier_inside_body $$98 using_initialization CLOSE_PARENS $$99 embedded_statement", //t "using_statement : USING open_parens_any expression CLOSE_PARENS embedded_statement", //t "using_statement : USING open_parens_any expression error", //t "using_initialization : using_or_fixed_variable_initializer opt_using_or_fixed_variable_declarators", @@ -1136,20 +1140,20 @@ namespace Mono.CSharp //t "first_from_clause : FROM_FIRST type identifier_inside_body IN expression", //t "nested_from_clause : FROM identifier_inside_body IN expression", //t "nested_from_clause : FROM type identifier_inside_body IN expression", -//t "$$99 :", -//t "from_clause : FROM identifier_inside_body IN $$99 expression_or_error", //t "$$100 :", -//t "from_clause : FROM type identifier_inside_body IN $$100 expression_or_error", +//t "from_clause : FROM identifier_inside_body IN $$100 expression_or_error", +//t "$$101 :", +//t "from_clause : FROM type identifier_inside_body IN $$101 expression_or_error", //t "query_body : query_body_clauses select_or_group_clause opt_query_continuation", //t "query_body : select_or_group_clause opt_query_continuation", //t "query_body : query_body_clauses COMPLETE_COMPLETION", //t "query_body : query_body_clauses error", //t "query_body : error", -//t "$$101 :", -//t "select_or_group_clause : SELECT $$101 expression_or_error", //t "$$102 :", +//t "select_or_group_clause : SELECT $$102 expression_or_error", //t "$$103 :", -//t "select_or_group_clause : GROUP $$102 expression_or_error $$103 BY expression_or_error", +//t "$$104 :", +//t "select_or_group_clause : GROUP $$103 expression_or_error $$104 BY expression_or_error", //t "query_body_clauses : query_body_clause", //t "query_body_clauses : query_body_clauses query_body_clause", //t "query_body_clause : from_clause", @@ -1157,28 +1161,28 @@ namespace Mono.CSharp //t "query_body_clause : where_clause", //t "query_body_clause : join_clause", //t "query_body_clause : orderby_clause", -//t "$$104 :", -//t "let_clause : LET identifier_inside_body ASSIGN $$104 expression_or_error", //t "$$105 :", -//t "where_clause : WHERE $$105 expression_or_error", +//t "let_clause : LET identifier_inside_body ASSIGN $$105 expression_or_error", //t "$$106 :", +//t "where_clause : WHERE $$106 expression_or_error", //t "$$107 :", //t "$$108 :", -//t "join_clause : JOIN identifier_inside_body IN $$106 expression_or_error ON $$107 expression_or_error EQUALS $$108 expression_or_error opt_join_into", //t "$$109 :", +//t "join_clause : JOIN identifier_inside_body IN $$107 expression_or_error ON $$108 expression_or_error EQUALS $$109 expression_or_error opt_join_into", //t "$$110 :", //t "$$111 :", -//t "join_clause : JOIN type identifier_inside_body IN $$109 expression_or_error ON $$110 expression_or_error EQUALS $$111 expression_or_error opt_join_into", +//t "$$112 :", +//t "join_clause : JOIN type identifier_inside_body IN $$110 expression_or_error ON $$111 expression_or_error EQUALS $$112 expression_or_error opt_join_into", //t "opt_join_into :", //t "opt_join_into : INTO identifier_inside_body", -//t "$$112 :", -//t "orderby_clause : ORDERBY $$112 orderings", -//t "orderings : order_by", //t "$$113 :", -//t "orderings : order_by COMMA $$113 orderings_then_by", -//t "orderings_then_by : then_by", +//t "orderby_clause : ORDERBY $$113 orderings", +//t "orderings : order_by", //t "$$114 :", -//t "orderings_then_by : orderings_then_by COMMA $$114 then_by", +//t "orderings : order_by COMMA $$114 orderings_then_by", +//t "orderings_then_by : then_by", +//t "$$115 :", +//t "orderings_then_by : orderings_then_by COMMA $$115 then_by", //t "order_by : expression", //t "order_by : expression ASCENDING", //t "order_by : expression DESCENDING", @@ -1186,12 +1190,12 @@ namespace Mono.CSharp //t "then_by : expression ASCENDING", //t "then_by : expression DESCENDING", //t "opt_query_continuation :", -//t "$$115 :", -//t "opt_query_continuation : INTO identifier_inside_body $$115 query_body", +//t "$$116 :", +//t "opt_query_continuation : INTO identifier_inside_body $$116 query_body", //t "interactive_parsing : EVAL_STATEMENT_PARSER EOF", //t "interactive_parsing : EVAL_USING_DECLARATIONS_UNIT_PARSER using_directives opt_COMPLETE_COMPLETION", -//t "$$116 :", -//t "interactive_parsing : EVAL_STATEMENT_PARSER $$116 interactive_statement_list opt_COMPLETE_COMPLETION", +//t "$$117 :", +//t "interactive_parsing : EVAL_STATEMENT_PARSER $$117 interactive_statement_list opt_COMPLETE_COMPLETION", //t "interactive_parsing : EVAL_COMPILATION_UNIT_PARSER interactive_compilation_unit", //t "interactive_compilation_unit : opt_extern_alias_directives opt_using_directives", //t "interactive_compilation_unit : opt_extern_alias_directives opt_using_directives namespace_or_type_declarations", @@ -1204,16 +1208,16 @@ namespace Mono.CSharp //t "doc_cref : builtin_types opt_doc_method_sig", //t "doc_cref : builtin_types DOT IDENTIFIER opt_doc_method_sig", //t "doc_cref : doc_type_declaration_name DOT THIS", -//t "$$117 :", -//t "doc_cref : doc_type_declaration_name DOT THIS OPEN_BRACKET $$117 opt_doc_parameters CLOSE_BRACKET", +//t "$$118 :", +//t "doc_cref : doc_type_declaration_name DOT THIS OPEN_BRACKET $$118 opt_doc_parameters CLOSE_BRACKET", //t "doc_cref : EXPLICIT OPERATOR type opt_doc_method_sig", //t "doc_cref : IMPLICIT OPERATOR type opt_doc_method_sig", //t "doc_cref : OPERATOR overloadable_operator opt_doc_method_sig", //t "doc_type_declaration_name : type_declaration_name", //t "doc_type_declaration_name : doc_type_declaration_name DOT type_declaration_name", //t "opt_doc_method_sig :", -//t "$$118 :", -//t "opt_doc_method_sig : OPEN_PARENS $$118 opt_doc_parameters CLOSE_PARENS", +//t "$$119 :", +//t "opt_doc_method_sig : OPEN_PARENS $$119 opt_doc_parameters CLOSE_PARENS", //t "opt_doc_parameters :", //t "opt_doc_parameters : doc_parameters", //t "doc_parameters : doc_parameter", @@ -1666,9 +1670,8 @@ case 99: case_99(); break; case 100: -#line 955 "cs-parser.jay" +#line 954 "cs-parser.jay" { - lexer.ConstraintsParsing = true; } break; case 101: @@ -2017,9 +2020,8 @@ case 212: case_212(); break; case 213: -#line 1956 "cs-parser.jay" +#line 1955 "cs-parser.jay" { - lexer.ConstraintsParsing = true; } break; case 214: @@ -2696,26 +2698,26 @@ case 453: case_453(); break; case 454: -#line 3350 "cs-parser.jay" + case_454(); + break; +case 455: +#line 3356 "cs-parser.jay" { yyVal = new CompletionElementInitializer (null, GetLocation (yyVals[0+yyTop])); } break; -case 455: - case_455(); - break; case 456: case_456(); break; case 457: case_457(); break; -case 460: -#line 3381 "cs-parser.jay" - { yyVal = null; } +case 458: + case_458(); break; -case 462: - case_462(); +case 461: +#line 3387 "cs-parser.jay" + { yyVal = null; } break; case 463: case_463(); @@ -2730,14 +2732,14 @@ case 466: case_466(); break; case 467: -#line 3435 "cs-parser.jay" + case_467(); + break; +case 468: +#line 3441 "cs-parser.jay" { yyVal = new Argument ((Expression) yyVals[0+yyTop]); } break; -case 471: - case_471(); - break; case 472: case_472(); break; @@ -2747,8 +2749,8 @@ case 473: case 474: case_474(); break; -case 476: - case_476(); +case 475: + case_475(); break; case 477: case_477(); @@ -2772,38 +2774,38 @@ case 483: case_483(); break; case 484: -#line 3532 "cs-parser.jay" + case_484(); + break; +case 485: +#line 3538 "cs-parser.jay" { yyVal = new Argument ((Expression) yyVals[0+yyTop]); } break; -case 486: -#line 3540 "cs-parser.jay" +case 487: +#line 3546 "cs-parser.jay" { yyVal = new This (GetLocation (yyVals[0+yyTop])); } break; -case 487: - case_487(); - break; case 488: case_488(); break; case 489: -#line 3560 "cs-parser.jay" + case_489(); + break; +case 490: +#line 3566 "cs-parser.jay" { yyVal = new UnaryMutator (UnaryMutator.Mode.PostIncrement, (Expression) yyVals[-1+yyTop], GetLocation (yyVals[0+yyTop])); } break; -case 490: -#line 3567 "cs-parser.jay" +case 491: +#line 3573 "cs-parser.jay" { yyVal = new UnaryMutator (UnaryMutator.Mode.PostDecrement, (Expression) yyVals[-1+yyTop], GetLocation (yyVals[0+yyTop])); } break; -case 491: - case_491(); - break; case 492: case_492(); break; @@ -2823,23 +2825,23 @@ case 497: case_497(); break; case 498: -#line 3634 "cs-parser.jay" + case_498(); + break; +case 499: +#line 3640 "cs-parser.jay" { ++lexer.parsing_type; } break; -case 499: - case_499(); - break; case 500: case_500(); break; -case 503: -#line 3661 "cs-parser.jay" - { yyVal = null; } +case 501: + case_501(); break; -case 505: - case_505(); +case 504: +#line 3667 "cs-parser.jay" + { yyVal = null; } break; case 506: case_506(); @@ -2856,8 +2858,8 @@ case 509: case 510: case_510(); break; -case 514: - case_514(); +case 511: + case_511(); break; case 515: case_515(); @@ -2866,32 +2868,32 @@ case 516: case_516(); break; case 517: -#line 3739 "cs-parser.jay" + case_517(); + break; +case 518: +#line 3745 "cs-parser.jay" { yyVal = 2; } break; -case 518: -#line 3743 "cs-parser.jay" +case 519: +#line 3749 "cs-parser.jay" { yyVal = ((int) yyVals[-1+yyTop]) + 1; } break; -case 519: -#line 3750 "cs-parser.jay" +case 520: +#line 3756 "cs-parser.jay" { yyVal = null; } break; -case 520: -#line 3754 "cs-parser.jay" +case 521: +#line 3760 "cs-parser.jay" { yyVal = yyVals[0+yyTop]; } break; -case 521: - case_521(); - break; case 522: case_522(); break; @@ -2902,16 +2904,16 @@ case 524: case_524(); break; case 525: -#line 3798 "cs-parser.jay" + case_525(); + break; +case 526: +#line 3804 "cs-parser.jay" { lexer.TypeOfParsing = true; } break; -case 526: - case_526(); - break; -case 529: - case_529(); +case 527: + case_527(); break; case 530: case_530(); @@ -2956,56 +2958,56 @@ case 543: case_543(); break; case 544: -#line 3943 "cs-parser.jay" + case_544(); + break; +case 545: +#line 3949 "cs-parser.jay" { start_anonymous (false, (ParametersCompiled) yyVals[0+yyTop], false, GetLocation (yyVals[-1+yyTop])); } break; -case 545: - case_545(); - break; case 546: -#line 3956 "cs-parser.jay" + case_546(); + break; +case 547: +#line 3962 "cs-parser.jay" { start_anonymous (false, (ParametersCompiled) yyVals[0+yyTop], true, GetLocation (yyVals[-2+yyTop])); } break; -case 547: - case_547(); - break; case 548: -#line 3973 "cs-parser.jay" + case_548(); + break; +case 549: +#line 3979 "cs-parser.jay" { yyVal = ParametersCompiled.Undefined; } break; -case 550: -#line 3981 "cs-parser.jay" +case 551: +#line 3987 "cs-parser.jay" { valid_param_mod = ParameterModifierType.Ref | ParameterModifierType.Out; } break; -case 551: - case_551(); - break; case 552: case_552(); break; -case 554: -#line 4007 "cs-parser.jay" +case 553: + case_553(); + break; +case 555: +#line 4013 "cs-parser.jay" { yyVal = new Unary (Unary.Operator.LogicalNot, (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } break; -case 555: -#line 4011 "cs-parser.jay" +case 556: +#line 4017 "cs-parser.jay" { yyVal = new Unary (Unary.Operator.OnesComplement, (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } break; -case 556: - case_556(); - break; case 557: case_557(); break; @@ -3021,45 +3023,45 @@ case 560: case 561: case_561(); break; -case 563: -#line 4072 "cs-parser.jay" +case 562: + case_562(); + break; +case 564: +#line 4078 "cs-parser.jay" { yyVal = new Unary (Unary.Operator.UnaryPlus, (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } break; -case 564: -#line 4076 "cs-parser.jay" +case 565: +#line 4082 "cs-parser.jay" { yyVal = new Unary (Unary.Operator.UnaryNegation, (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } break; -case 565: -#line 4080 "cs-parser.jay" +case 566: +#line 4086 "cs-parser.jay" { yyVal = new UnaryMutator (UnaryMutator.Mode.PreIncrement, (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } break; -case 566: -#line 4084 "cs-parser.jay" +case 567: +#line 4090 "cs-parser.jay" { yyVal = new UnaryMutator (UnaryMutator.Mode.PreDecrement, (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } break; -case 567: -#line 4088 "cs-parser.jay" +case 568: +#line 4094 "cs-parser.jay" { yyVal = new Indirection ((Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } break; -case 568: -#line 4092 "cs-parser.jay" +case 569: +#line 4098 "cs-parser.jay" { yyVal = new Unary (Unary.Operator.AddressOf, (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } break; -case 569: - case_569(); - break; case 570: case_570(); break; @@ -3075,8 +3077,8 @@ case 573: case 574: case_574(); break; -case 576: - case_576(); +case 575: + case_575(); break; case 577: case_577(); @@ -3093,27 +3095,27 @@ case 580: case 581: case_581(); break; -case 583: - case_583(); +case 582: + case_582(); break; case 584: case_584(); break; case 585: -#line 4186 "cs-parser.jay" + case_585(); + break; +case 586: +#line 4192 "cs-parser.jay" { yyVal = new As ((Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } break; -case 586: -#line 4190 "cs-parser.jay" +case 587: +#line 4196 "cs-parser.jay" { yyVal = new Is ((Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } break; -case 587: - case_587(); - break; case 588: case_588(); break; @@ -3123,8 +3125,8 @@ case 589: case 590: case_590(); break; -case 592: - case_592(); +case 591: + case_591(); break; case 593: case_593(); @@ -3135,8 +3137,8 @@ case 594: case 595: case_595(); break; -case 597: - case_597(); +case 596: + case_596(); break; case 598: case_598(); @@ -3159,8 +3161,8 @@ case 603: case 604: case_604(); break; -case 606: - case_606(); +case 605: + case_605(); break; case 607: case_607(); @@ -3171,41 +3173,41 @@ case 608: case 609: case_609(); break; -case 611: - case_611(); +case 610: + case_610(); break; case 612: case_612(); break; -case 614: - case_614(); +case 613: + case_613(); break; case 615: case_615(); break; -case 617: - case_617(); +case 616: + case_616(); break; case 618: case_618(); break; -case 620: - case_620(); +case 619: + case_619(); break; case 621: case_621(); break; -case 623: - case_623(); +case 622: + case_622(); break; case 624: case_624(); break; -case 626: - case_626(); +case 625: + case_625(); break; -case 628: - case_628(); +case 627: + case_627(); break; case 629: case_629(); @@ -3262,30 +3264,30 @@ case 646: case_646(); break; case 647: -#line 4543 "cs-parser.jay" - { yyVal = ParametersCompiled.EmptyReadOnlyParameters; } + case_647(); break; case 648: case_648(); break; case 649: #line 4554 "cs-parser.jay" - { - start_block (Location.Null); - } + { yyVal = ParametersCompiled.EmptyReadOnlyParameters; } break; case 650: case_650(); break; +case 651: +#line 4565 "cs-parser.jay" + { + start_block (Location.Null); + } + break; case 652: case_652(); break; case 654: case_654(); break; -case 655: - case_655(); - break; case 656: case_656(); break; @@ -3296,10 +3298,7 @@ case 658: case_658(); break; case 659: -#line 4610 "cs-parser.jay" - { - valid_param_mod = ParameterModifierType.Ref | ParameterModifierType.Out; - } + case_659(); break; case 660: case_660(); @@ -3308,84 +3307,86 @@ case 661: case_661(); break; case 662: -#line 4624 "cs-parser.jay" - { - valid_param_mod = ParameterModifierType.Ref | ParameterModifierType.Out; - } + case_662(); break; case 663: - case_663(); +#line 4632 "cs-parser.jay" + { + valid_param_mod = ParameterModifierType.Ref | ParameterModifierType.Out; + } break; case 664: case_664(); break; -case 670: -#line 4649 "cs-parser.jay" +case 665: + case_665(); + break; +case 666: +#line 4646 "cs-parser.jay" { - yyVal = new ArglistAccess (GetLocation (yyVals[0+yyTop])); + valid_param_mod = ParameterModifierType.Ref | ParameterModifierType.Out; } break; -case 671: - case_671(); - break; -case 672: - case_672(); +case 667: + case_667(); break; -case 673: - case_673(); +case 668: + case_668(); break; -case 675: -#line 4678 "cs-parser.jay" +case 674: +#line 4671 "cs-parser.jay" { - yyVal = new BooleanExpression ((Expression) yyVals[0+yyTop]); + yyVal = new ArglistAccess (GetLocation (yyVals[0+yyTop])); } break; +case 675: + case_675(); + break; case 676: -#line 4691 "cs-parser.jay" - { - lexer.ConstraintsParsing = true; - } + case_676(); break; case 677: case_677(); break; -case 678: - case_678(); - break; case 679: - case_679(); +#line 4700 "cs-parser.jay" + { + yyVal = new BooleanExpression ((Expression) yyVals[0+yyTop]); + } break; case 680: - case_680(); +#line 4712 "cs-parser.jay" + { + } break; case 681: -#line 4736 "cs-parser.jay" - { yyVal = null; } + case_681(); break; case 682: -#line 4738 "cs-parser.jay" - { yyVal = yyVals[0+yyTop]; StoreModifierLocation (Modifiers.PARTIAL, GetLocation (yyVals[0+yyTop])); } + case_682(); break; case 683: case_683(); break; case 684: -#line 4751 "cs-parser.jay" - { - lexer.parsing_modifiers = false; - } + case_684(); + break; +case 685: +#line 4759 "cs-parser.jay" + { yyVal = null; } break; case 686: - case_686(); +#line 4761 "cs-parser.jay" + { yyVal = yyVals[0+yyTop]; StoreModifierLocation (Modifiers.PARTIAL, GetLocation (yyVals[0+yyTop])); } break; case 687: case_687(); break; case 688: - case_688(); - break; -case 689: - case_689(); +#line 4774 "cs-parser.jay" + { + lexer.parsing_modifiers = false; + } break; case 690: case_690(); @@ -3423,17 +3424,17 @@ case 700: case 701: case_701(); break; +case 702: + case_702(); + break; case 703: case_703(); break; case 704: case_704(); break; -case 706: -#line 4877 "cs-parser.jay" - { - yyVal = yyVals[0+yyTop]; - } +case 705: + case_705(); break; case 707: case_707(); @@ -3441,11 +3442,11 @@ case 707: case 708: case_708(); break; -case 709: - case_709(); - break; case 710: - case_710(); +#line 4900 "cs-parser.jay" + { + yyVal = yyVals[0+yyTop]; + } break; case 711: case_711(); @@ -3460,41 +3461,38 @@ case 714: case_714(); break; case 715: -#line 4970 "cs-parser.jay" - { - yyVal = new SpecialContraintExpr (SpecialConstraint.Class, GetLocation (yyVals[0+yyTop])); - } + case_715(); break; case 716: -#line 4974 "cs-parser.jay" - { - yyVal = new SpecialContraintExpr (SpecialConstraint.Struct, GetLocation (yyVals[0+yyTop])); - } + case_716(); break; case 717: -#line 4981 "cs-parser.jay" - { - yyVal = Variance.None; - } + case_717(); break; case 718: case_718(); break; case 719: - case_719(); +#line 4993 "cs-parser.jay" + { + yyVal = new SpecialContraintExpr (SpecialConstraint.Class, GetLocation (yyVals[0+yyTop])); + } break; case 720: - case_720(); +#line 4997 "cs-parser.jay" + { + yyVal = new SpecialContraintExpr (SpecialConstraint.Struct, GetLocation (yyVals[0+yyTop])); + } break; case 721: - case_721(); - break; -case 722: -#line 5026 "cs-parser.jay" +#line 5004 "cs-parser.jay" { - yyVal = yyVals[0+yyTop]; + yyVal = Variance.None; } break; +case 722: + case_722(); + break; case 723: case_723(); break; @@ -3505,7 +3503,10 @@ case 725: case_725(); break; case 726: - case_726(); +#line 5049 "cs-parser.jay" + { + yyVal = yyVals[0+yyTop]; + } break; case 727: case_727(); @@ -3516,167 +3517,176 @@ case 728: case 729: case_729(); break; -case 734: -#line 5088 "cs-parser.jay" +case 730: + case_730(); + break; +case 731: + case_731(); + break; +case 732: + case_732(); + break; +case 733: + case_733(); + break; +case 738: +#line 5111 "cs-parser.jay" { current_block.AddStatement ((Statement) yyVals[0+yyTop]); } break; -case 735: -#line 5092 "cs-parser.jay" +case 739: +#line 5115 "cs-parser.jay" { current_block.AddStatement ((Statement) yyVals[0+yyTop]); } break; -case 737: - case_737(); +case 741: + case_741(); break; -case 738: - case_738(); +case 742: + case_742(); break; -case 741: -#line 5126 "cs-parser.jay" +case 745: +#line 5149 "cs-parser.jay" { current_block.AddStatement ((Statement) yyVals[0+yyTop]); } break; -case 742: -#line 5130 "cs-parser.jay" +case 746: +#line 5153 "cs-parser.jay" { current_block.AddStatement ((Statement) yyVals[0+yyTop]); } break; -case 771: - case_771(); - break; -case 772: - case_772(); - break; -case 773: - case_773(); - break; -case 774: - case_774(); - break; case 775: case_775(); break; +case 776: + case_776(); + break; +case 777: + case_777(); + break; case 778: case_778(); break; case 779: case_779(); break; -case 780: - case_780(); - break; -case 781: - case_781(); - break; case 782: -#line 5274 "cs-parser.jay" - { - yyVal = new ComposedCast ((FullNamedExpression) yyVals[-1+yyTop], (ComposedTypeSpecifier) yyVals[0+yyTop]); - } + case_782(); break; case 783: -#line 5278 "cs-parser.jay" - { - yyVal = new ComposedCast (new TypeExpression (compiler.BuiltinTypes.Void, GetLocation (yyVals[-1+yyTop])), (ComposedTypeSpecifier) yyVals[0+yyTop]); - } + case_783(); break; case 784: case_784(); break; +case 785: + case_785(); + break; case 786: - case_786(); +#line 5297 "cs-parser.jay" + { + yyVal = new ComposedCast ((FullNamedExpression) yyVals[-1+yyTop], (ComposedTypeSpecifier) yyVals[0+yyTop]); + } break; case 787: -#line 5299 "cs-parser.jay" +#line 5301 "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 789: - case_789(); +case 788: + case_788(); break; case 790: case_790(); break; case 791: - case_791(); - break; -case 792: - case_792(); +#line 5322 "cs-parser.jay" + { + yyVal = ComposedTypeSpecifier.CreatePointer (GetLocation (yyVals[0+yyTop])); + } break; case 793: - case_793(); +#line 5330 "cs-parser.jay" + { + yyVal = Error_AwaitAsIdentifier (yyVals[0+yyTop]); + } + break; +case 794: + case_794(); break; case 795: case_795(); break; +case 796: + case_796(); + break; case 797: case_797(); break; -case 798: - case_798(); - break; case 799: case_799(); break; -case 803: - case_803(); +case 801: + case_801(); + break; +case 802: + case_802(); break; -case 806: - case_806(); +case 803: + case_803(); break; case 807: case_807(); break; -case 808: -#line 5434 "cs-parser.jay" +case 810: + case_810(); + break; +case 811: + case_811(); + break; +case 812: +#line 5454 "cs-parser.jay" { report.Error (145, lexer.Location, "A const field requires a value to be provided"); } break; -case 809: - case_809(); - break; -case 814: - case_814(); - break; -case 816: - case_816(); - break; -case 817: - case_817(); +case 813: + case_813(); break; case 818: case_818(); break; -case 819: -#line 5484 "cs-parser.jay" - { yyVal = yyVals[-1+yyTop]; } - break; case 820: case_820(); break; case 821: -#line 5494 "cs-parser.jay" - { yyVal = yyVals[-1+yyTop]; } + case_821(); break; case 822: -#line 5495 "cs-parser.jay" - { yyVal = yyVals[-1+yyTop]; } + case_822(); break; case 823: - case_823(); +#line 5504 "cs-parser.jay" + { yyVal = yyVals[-1+yyTop]; } break; case 824: case_824(); break; case 825: - case_825(); +#line 5514 "cs-parser.jay" + { yyVal = yyVals[-1+yyTop]; } + break; +case 826: +#line 5515 "cs-parser.jay" + { yyVal = yyVals[-1+yyTop]; } + break; +case 827: + case_827(); break; case 828: case_828(); @@ -3684,15 +3694,6 @@ case 828: case 829: case_829(); break; -case 830: - case_830(); - break; -case 831: -#line 5571 "cs-parser.jay" - { - start_block (GetLocation (yyVals[0+yyTop])); - } - break; case 832: case_832(); break; @@ -3702,6 +3703,12 @@ case 833: case 834: case_834(); break; +case 835: +#line 5591 "cs-parser.jay" + { + start_block (GetLocation (yyVals[0+yyTop])); + } + break; case 836: case_836(); break; @@ -3711,17 +3718,8 @@ case 837: case 838: case_838(); break; -case 839: -#line 5622 "cs-parser.jay" - { - current_block = current_block.CreateSwitchBlock (lexer.Location); - } - break; case 840: -#line 5626 "cs-parser.jay" - { - yyVal = new SwitchSection ((List) yyVals[-2+yyTop], current_block); - } + case_840(); break; case 841: case_841(); @@ -3730,28 +3728,34 @@ case 842: case_842(); break; case 843: - case_843(); +#line 5642 "cs-parser.jay" + { + current_block = current_block.CreateSwitchBlock (lexer.Location); + } break; case 844: - case_844(); - break; -case 845: -#line 5660 "cs-parser.jay" +#line 5646 "cs-parser.jay" { - yyVal = new SwitchLabel (null, GetLocation (yyVals[0+yyTop])); + yyVal = new SwitchSection ((List) yyVals[-2+yyTop], current_block); } break; -case 850: - case_850(); +case 845: + case_845(); + break; +case 846: + case_846(); break; -case 851: - case_851(); +case 847: + case_847(); break; -case 852: - case_852(); +case 848: + case_848(); break; -case 853: - case_853(); +case 849: +#line 5680 "cs-parser.jay" + { + yyVal = new SwitchLabel (null, GetLocation (yyVals[0+yyTop])); + } break; case 854: case_854(); @@ -3760,34 +3764,31 @@ case 855: case_855(); break; case 856: -#line 5721 "cs-parser.jay" - { - yyVal = yyVals[0+yyTop]; - } + case_856(); break; case 857: case_857(); break; case 858: -#line 5736 "cs-parser.jay" - { - yyVal = yyVals[0+yyTop]; - } + case_858(); break; case 859: case_859(); break; case 860: - case_860(); - break; -case 861: -#line 5757 "cs-parser.jay" +#line 5741 "cs-parser.jay" { yyVal = yyVals[0+yyTop]; } break; +case 861: + case_861(); + break; case 862: - case_862(); +#line 5756 "cs-parser.jay" + { + yyVal = yyVals[0+yyTop]; + } break; case 863: case_863(); @@ -3796,8 +3797,13 @@ case 864: case_864(); break; case 865: -#line 5791 "cs-parser.jay" - { yyVal = new EmptyStatement (lexer.Location); } +#line 5777 "cs-parser.jay" + { + yyVal = yyVals[0+yyTop]; + } + break; +case 866: + case_866(); break; case 867: case_867(); @@ -3805,25 +3811,23 @@ case 867: case 868: case_868(); break; -case 870: -#line 5812 "cs-parser.jay" - { yyVal = null; } - break; -case 872: -#line 5817 "cs-parser.jay" +case 869: +#line 5811 "cs-parser.jay" { yyVal = new EmptyStatement (lexer.Location); } break; -case 876: - case_876(); +case 871: + case_871(); break; -case 877: - case_877(); +case 872: + case_872(); break; -case 878: - case_878(); +case 874: +#line 5832 "cs-parser.jay" + { yyVal = null; } break; -case 879: - case_879(); +case 876: +#line 5837 "cs-parser.jay" + { yyVal = new EmptyStatement (lexer.Location); } break; case 880: case_880(); @@ -3834,17 +3838,17 @@ case 881: case 882: case_882(); break; -case 889: - case_889(); +case 883: + case_883(); break; -case 890: - case_890(); +case 884: + case_884(); break; -case 891: - case_891(); +case 885: + case_885(); break; -case 892: - case_892(); +case 886: + case_886(); break; case 893: case_893(); @@ -3876,80 +3880,80 @@ case 901: case 902: case_902(); break; +case 903: + case_903(); + break; +case 904: + case_904(); + break; case 905: -#line 6057 "cs-parser.jay" - { - yyVal = new TryCatch ((Block) yyVals[-1+yyTop], (List) yyVals[0+yyTop], GetLocation (yyVals[-2+yyTop]), false); - } + case_905(); break; case 906: case_906(); break; -case 907: - case_907(); - break; -case 908: - case_908(); - break; case 909: - case_909(); +#line 6077 "cs-parser.jay" + { + yyVal = new TryCatch ((Block) yyVals[-1+yyTop], (List) yyVals[0+yyTop], GetLocation (yyVals[-2+yyTop]), false); + } break; case 910: case_910(); break; +case 911: + case_911(); + break; +case 912: + case_912(); + break; case 913: -#line 6106 "cs-parser.jay" - { - yyVal = new Catch ((Block) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); - } + case_913(); break; case 914: case_914(); break; -case 915: -#line 6125 "cs-parser.jay" +case 917: +#line 6126 "cs-parser.jay" { - yyVal = yyVals[-1+yyTop]; + yyVal = new Catch ((Block) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } break; -case 916: - case_916(); - break; -case 917: - case_917(); - break; case 918: -#line 6166 "cs-parser.jay" - { - yyVal = new Checked ((Block) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); - } + case_918(); break; case 919: -#line 6173 "cs-parser.jay" +#line 6145 "cs-parser.jay" { - yyVal = new Unchecked ((Block) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); + yyVal = yyVals[-1+yyTop]; } break; case 920: case_920(); break; case 921: -#line 6183 "cs-parser.jay" - { - yyVal = new Unsafe ((Block) yyVals[0+yyTop], GetLocation (yyVals[-2+yyTop])); - } + case_921(); break; case 922: - case_922(); +#line 6186 "cs-parser.jay" + { + yyVal = new Checked ((Block) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); + } break; case 923: - case_923(); +#line 6193 "cs-parser.jay" + { + yyVal = new Unchecked ((Block) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); + } break; case 924: case_924(); break; case 925: - case_925(); +#line 6203 "cs-parser.jay" + { + yyVal = new Unsafe ((Block) yyVals[0+yyTop], GetLocation (yyVals[-2+yyTop])); + } break; case 926: case_926(); @@ -3969,26 +3973,26 @@ case 930: case 931: case_931(); break; +case 932: + case_932(); + break; case 933: case_933(); break; case 934: -#line 6288 "cs-parser.jay" - { - Error_MissingInitializer (lexer.Location); - } + case_934(); break; case 935: case_935(); break; -case 936: - case_936(); - break; case 937: case_937(); break; case 938: - case_938(); +#line 6308 "cs-parser.jay" + { + Error_MissingInitializer (lexer.Location); + } break; case 939: case_939(); @@ -4006,29 +4010,32 @@ case 943: case_943(); break; case 944: -#line 6393 "cs-parser.jay" - { - current_block = new Linq.QueryBlock (current_block, lexer.Location); - } + case_944(); break; case 945: case_945(); break; case 946: -#line 6409 "cs-parser.jay" - { - current_block = new Linq.QueryBlock (current_block, lexer.Location); - } + case_946(); break; case 947: case_947(); break; case 948: - case_948(); +#line 6413 "cs-parser.jay" + { + current_block = new Linq.QueryBlock (current_block, lexer.Location); + } break; case 949: case_949(); break; +case 950: +#line 6429 "cs-parser.jay" + { + current_block = new Linq.QueryBlock (current_block, lexer.Location); + } + break; case 951: case_951(); break; @@ -4036,13 +4043,7 @@ case 952: case_952(); break; case 953: -#line 6473 "cs-parser.jay" - { - current_block = new Linq.QueryBlock (current_block, lexer.Location); - } - break; -case 954: - case_954(); + case_953(); break; case 955: case_955(); @@ -4051,37 +4052,40 @@ case 956: case_956(); break; case 957: - case_957(); +#line 6493 "cs-parser.jay" + { + current_block = new Linq.QueryBlock (current_block, lexer.Location); + } + break; +case 958: + case_958(); break; case 959: case_959(); break; -case 965: -#line 6527 "cs-parser.jay" - { - current_block = new Linq.QueryBlock (current_block, lexer.Location); - } +case 960: + case_960(); + break; +case 961: + case_961(); break; -case 966: - case_966(); +case 963: + case_963(); break; -case 967: -#line 6546 "cs-parser.jay" +case 969: +#line 6547 "cs-parser.jay" { current_block = new Linq.QueryBlock (current_block, lexer.Location); } break; -case 968: - case_968(); - break; -case 969: - case_969(); - break; case 970: case_970(); break; case 971: - case_971(); +#line 6566 "cs-parser.jay" + { + current_block = new Linq.QueryBlock (current_block, lexer.Location); + } break; case 972: case_972(); @@ -4098,6 +4102,9 @@ case 975: case 976: case_976(); break; +case 977: + case_977(); + break; case 978: case_978(); break; @@ -4113,122 +4120,131 @@ case 982: case 983: case_983(); break; -case 985: - case_985(); +case 984: + case_984(); break; case 986: case_986(); break; case 987: -#line 6747 "cs-parser.jay" - { - yyVal = new Linq.OrderByAscending ((Linq.QueryBlock) current_block, (Expression)yyVals[0+yyTop]); - } - break; -case 988: - case_988(); + case_987(); break; case 989: case_989(); break; case 990: -#line 6764 "cs-parser.jay" - { - yyVal = new Linq.ThenByAscending ((Linq.QueryBlock) current_block, (Expression)yyVals[0+yyTop]); - } + case_990(); break; case 991: - case_991(); +#line 6767 "cs-parser.jay" + { + yyVal = new Linq.OrderByAscending ((Linq.QueryBlock) current_block, (Expression)yyVals[0+yyTop]); + } break; case 992: case_992(); break; +case 993: + case_993(); + break; case 994: - case_994(); +#line 6784 "cs-parser.jay" + { + yyVal = new Linq.ThenByAscending ((Linq.QueryBlock) current_block, (Expression)yyVals[0+yyTop]); + } break; case 995: case_995(); break; +case 996: + case_996(); + break; case 998: case_998(); break; case 999: case_999(); break; -case 1007: -#line 6886 "cs-parser.jay" +case 1002: + case_1002(); + break; +case 1003: + case_1003(); + break; +case 1011: +#line 6906 "cs-parser.jay" { module.DocumentationBuilder.ParsedName = (MemberName) yyVals[0+yyTop]; } break; -case 1008: -#line 6893 "cs-parser.jay" +case 1012: +#line 6913 "cs-parser.jay" { module.DocumentationBuilder.ParsedParameters = (List)yyVals[0+yyTop]; } break; -case 1009: - case_1009(); +case 1013: + case_1013(); break; -case 1010: - case_1010(); +case 1014: + case_1014(); break; -case 1011: -#line 6910 "cs-parser.jay" +case 1015: +#line 6930 "cs-parser.jay" { yyVal = new MemberName ((MemberName) yyVals[-2+yyTop], MemberCache.IndexerNameAlias, Location.Null); } break; -case 1012: -#line 6914 "cs-parser.jay" +case 1016: +#line 6934 "cs-parser.jay" { valid_param_mod = ParameterModifierType.Ref | ParameterModifierType.Out; } break; -case 1013: - case_1013(); +case 1017: + case_1017(); break; -case 1014: - case_1014(); +case 1018: + case_1018(); break; -case 1015: - case_1015(); +case 1019: + case_1019(); break; -case 1016: - case_1016(); +case 1020: + case_1020(); break; -case 1018: -#line 6950 "cs-parser.jay" +case 1022: +#line 6970 "cs-parser.jay" { yyVal = new MemberName (((MemberName) yyVals[-2+yyTop]), (MemberName) yyVals[0+yyTop]); } break; -case 1020: -#line 6958 "cs-parser.jay" +case 1024: +#line 6978 "cs-parser.jay" { valid_param_mod = ParameterModifierType.Ref | ParameterModifierType.Out; } break; -case 1021: -#line 6962 "cs-parser.jay" +case 1025: +#line 6982 "cs-parser.jay" { yyVal = yyVals[-1+yyTop]; } break; -case 1022: -#line 6969 "cs-parser.jay" +case 1026: +#line 6989 "cs-parser.jay" { yyVal = new List (0); } break; -case 1024: - case_1024(); +case 1028: + case_1028(); break; -case 1025: - case_1025(); +case 1029: + case_1029(); break; -case 1026: - case_1026(); +case 1030: + case_1030(); break; #line default } @@ -4683,8 +4699,9 @@ void case_99() } void case_101() -#line 957 "cs-parser.jay" +#line 956 "cs-parser.jay" { + lexer.ConstraintsParsing = true; 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])); } @@ -5555,8 +5572,9 @@ void case_212() } void case_214() -#line 1958 "cs-parser.jay" +#line 1957 "cs-parser.jay" { + lexer.ConstraintsParsing = true; 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])); } @@ -6643,8 +6661,16 @@ void case_453() lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_455() -#line 3351 "cs-parser.jay" +void case_454() +#line 3348 "cs-parser.jay" +{ + var lt = (Tokenizer.LocatedToken) Error_AwaitAsIdentifier (yyVals[-2+yyTop]); + yyVal = new ElementInitializer (lt.Value, (Expression)yyVals[0+yyTop], lt.Location); + lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); + } + +void case_456() +#line 3357 "cs-parser.jay" { CompletionSimpleName csn = yyVals[-1+yyTop] as CompletionSimpleName; if (csn == null) @@ -6653,8 +6679,8 @@ void case_455() yyVal = new CompletionElementInitializer (csn.Prefix, csn.Location); } -void case_456() -#line 3359 "cs-parser.jay" +void case_457() +#line 3365 "cs-parser.jay" { if (yyVals[-1+yyTop] == null) yyVal = null; @@ -6664,24 +6690,24 @@ void case_456() } } -void case_457() -#line 3368 "cs-parser.jay" +void case_458() +#line 3374 "cs-parser.jay" { report.Error (1920, GetLocation (yyVals[-1+yyTop]), "An element initializer cannot be empty"); yyVal = new CollectionElementInitializer (new List (), GetLocation (yyVals[-1+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_462() -#line 3387 "cs-parser.jay" +void case_463() +#line 3393 "cs-parser.jay" { Arguments list = new Arguments (4); list.Add ((Argument) yyVals[0+yyTop]); yyVal = list; } -void case_463() -#line 3393 "cs-parser.jay" +void case_464() +#line 3399 "cs-parser.jay" { Arguments list = (Arguments) yyVals[-2+yyTop]; if (list [list.Count - 1] is NamedArgument) @@ -6692,8 +6718,8 @@ void case_463() yyVal = list; } -void case_464() -#line 3403 "cs-parser.jay" +void case_465() +#line 3409 "cs-parser.jay" { Arguments list = (Arguments) yyVals[-2+yyTop]; NamedArgument a = (NamedArgument) yyVals[0+yyTop]; @@ -6709,8 +6735,8 @@ void case_464() yyVal = list; } -void case_465() -#line 3418 "cs-parser.jay" +void case_466() +#line 3424 "cs-parser.jay" { if (lexer.putback_char == -1) lexer.putback (')'); /* TODO: Wrong but what can I do*/ @@ -6718,72 +6744,72 @@ void case_465() yyVal = yyVals[-2+yyTop]; } -void case_466() -#line 3425 "cs-parser.jay" +void case_467() +#line 3431 "cs-parser.jay" { report.Error (839, GetLocation (yyVals[-1+yyTop]), "An argument is missing"); yyVal = null; } -void case_471() -#line 3446 "cs-parser.jay" +void case_472() +#line 3452 "cs-parser.jay" { yyVal = new Argument ((Expression) yyVals[0+yyTop], Argument.AType.Ref); lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_472() -#line 3451 "cs-parser.jay" +void case_473() +#line 3457 "cs-parser.jay" { yyVal = new Argument ((Expression) yyVals[0+yyTop], Argument.AType.Out); lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_473() -#line 3456 "cs-parser.jay" +void case_474() +#line 3462 "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_474() -#line 3461 "cs-parser.jay" +void case_475() +#line 3467 "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_476() -#line 3473 "cs-parser.jay" +void case_477() +#line 3479 "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_477() -#line 3478 "cs-parser.jay" +void case_478() +#line 3484 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = new ElementAccess ((Expression) yyVals[-3+yyTop], (Arguments) yyVals[-1+yyTop], GetLocation (yyVals[-2+yyTop])); } -void case_478() -#line 3483 "cs-parser.jay" +void case_479() +#line 3489 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = new ElementAccess ((Expression) yyVals[-2+yyTop], null, GetLocation (yyVals[-1+yyTop])); } -void case_479() -#line 3491 "cs-parser.jay" +void case_480() +#line 3497 "cs-parser.jay" { var list = new List (4); list.Add ((Expression) yyVals[0+yyTop]); yyVal = list; } -void case_480() -#line 3497 "cs-parser.jay" +void case_481() +#line 3503 "cs-parser.jay" { var list = (List) yyVals[-2+yyTop]; list.Add ((Expression) yyVals[0+yyTop]); @@ -6791,23 +6817,23 @@ void case_480() yyVal = list; } -void case_481() -#line 3503 "cs-parser.jay" +void case_482() +#line 3509 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = yyVals[-1+yyTop]; } -void case_482() -#line 3511 "cs-parser.jay" +void case_483() +#line 3517 "cs-parser.jay" { Arguments args = new Arguments (4); args.Add ((Argument) yyVals[0+yyTop]); yyVal = args; } -void case_483() -#line 3517 "cs-parser.jay" +void case_484() +#line 3523 "cs-parser.jay" { Arguments args = (Arguments) yyVals[-2+yyTop]; if (args [args.Count - 1] is NamedArgument && !(yyVals[0+yyTop] is NamedArgument)) @@ -6818,22 +6844,22 @@ void case_483() yyVal = args; } -void case_487() -#line 3545 "cs-parser.jay" +void case_488() +#line 3551 "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_488() -#line 3550 "cs-parser.jay" +void case_489() +#line 3556 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = new ElementAccess (null, null, GetLocation (yyVals[-1+yyTop])); } -void case_491() -#line 3572 "cs-parser.jay" +void case_492() +#line 3578 "cs-parser.jay" { if (yyVals[0+yyTop] != null) { if (lang_version <= LanguageVersion.ISO_2) @@ -6847,8 +6873,8 @@ void case_491() lbag.AddLocation (yyVal, GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[-1+yyTop])); } -void case_492() -#line 3585 "cs-parser.jay" +void case_493() +#line 3591 "cs-parser.jay" { if (lang_version <= LanguageVersion.ISO_2) FeatureIsNotAvailable (GetLocation (yyVals[-2+yyTop]), "collection initializers"); @@ -6856,8 +6882,8 @@ void case_492() yyVal = new NewInitialize ((FullNamedExpression) yyVals[-1+yyTop], null, (CollectionOrObjectInitializers) yyVals[0+yyTop], GetLocation (yyVals[-2+yyTop])); } -void case_493() -#line 3597 "cs-parser.jay" +void case_494() +#line 3603 "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])) { @@ -6866,8 +6892,8 @@ void case_493() lbag.AddLocation (yyVal, GetLocation (yyVals[-4+yyTop]), GetLocation (yyVals[-2+yyTop])); } -void case_494() -#line 3605 "cs-parser.jay" +void case_495() +#line 3611 "cs-parser.jay" { if (yyVals[0+yyTop] == null) report.Error (1586, GetLocation (yyVals[-3+yyTop]), "Array creation must have array size or array initializer"); @@ -6875,8 +6901,8 @@ void case_494() yyVal = new ArrayCreation ((FullNamedExpression) yyVals[-2+yyTop], (ComposedTypeSpecifier) yyVals[-1+yyTop], (ArrayInitializer) yyVals[0+yyTop], GetLocation (yyVals[-3+yyTop])); } -void case_495() -#line 3612 "cs-parser.jay" +void case_496() +#line 3618 "cs-parser.jay" { if (lang_version <= LanguageVersion.ISO_2) FeatureIsNotAvailable (GetLocation (yyVals[-2+yyTop]), "implicitly typed arrays"); @@ -6884,30 +6910,30 @@ void case_495() yyVal = new ImplicitlyTypedArrayCreation ((ComposedTypeSpecifier) yyVals[-1+yyTop], (ArrayInitializer) yyVals[0+yyTop], GetLocation (yyVals[-2+yyTop])); } -void case_496() -#line 3619 "cs-parser.jay" +void case_497() +#line 3625 "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_497() -#line 3624 "cs-parser.jay" +void case_498() +#line 3630 "cs-parser.jay" { Error_SyntaxError (yyToken); /* It can be any of new expression, create the most common one*/ yyVal = new New ((FullNamedExpression) yyVals[-1+yyTop], null, GetLocation (yyVals[-2+yyTop])); } -void case_499() -#line 3636 "cs-parser.jay" +void case_500() +#line 3642 "cs-parser.jay" { --lexer.parsing_type; yyVal = yyVals[0+yyTop]; } -void case_500() -#line 3644 "cs-parser.jay" +void case_501() +#line 3650 "cs-parser.jay" { if (lang_version <= LanguageVersion.ISO_2) FeatureIsNotAvailable (GetLocation (yyVals[-3+yyTop]), "anonymous types"); @@ -6918,16 +6944,16 @@ void case_500() lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_505() -#line 3667 "cs-parser.jay" +void case_506() +#line 3673 "cs-parser.jay" { var a = new List (4); a.Add ((AnonymousTypeParameter) yyVals[0+yyTop]); yyVal = a; } -void case_506() -#line 3673 "cs-parser.jay" +void case_507() +#line 3679 "cs-parser.jay" { var a = (List) yyVals[-2+yyTop]; a.Add ((AnonymousTypeParameter) yyVals[0+yyTop]); @@ -6936,60 +6962,60 @@ void case_506() yyVal = a; } -void case_507() -#line 3684 "cs-parser.jay" +void case_508() +#line 3690 "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_508() -#line 3690 "cs-parser.jay" +void case_509() +#line 3696 "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_509() -#line 3696 "cs-parser.jay" +void case_510() +#line 3702 "cs-parser.jay" { MemberAccess ma = (MemberAccess) yyVals[0+yyTop]; yyVal = new AnonymousTypeParameter (ma, ma.Name, ma.Location); } -void case_510() -#line 3701 "cs-parser.jay" +void case_511() +#line 3707 "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_514() -#line 3716 "cs-parser.jay" +void case_515() +#line 3722 "cs-parser.jay" { ((ComposedTypeSpecifier) yyVals[-1+yyTop]).Next = (ComposedTypeSpecifier) yyVals[0+yyTop]; yyVal = yyVals[-1+yyTop]; } -void case_515() -#line 3724 "cs-parser.jay" +void case_516() +#line 3730 "cs-parser.jay" { yyVal = ComposedTypeSpecifier.CreateArrayDimension (1, GetLocation (yyVals[-1+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_516() -#line 3729 "cs-parser.jay" +void case_517() +#line 3735 "cs-parser.jay" { yyVal = ComposedTypeSpecifier.CreateArrayDimension ((int)yyVals[-1+yyTop], GetLocation (yyVals[-2+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_521() -#line 3759 "cs-parser.jay" +void case_522() +#line 3765 "cs-parser.jay" { var ai = new ArrayInitializer (0, GetLocation (yyVals[-1+yyTop])); ai.VariableDeclaration = current_variable; @@ -6997,8 +7023,8 @@ void case_521() yyVal = ai; } -void case_522() -#line 3766 "cs-parser.jay" +void case_523() +#line 3772 "cs-parser.jay" { var ai = new ArrayInitializer ((List) yyVals[-2+yyTop], GetLocation (yyVals[-3+yyTop])); ai.VariableDeclaration = current_variable; @@ -7010,16 +7036,16 @@ void case_522() yyVal = ai; } -void case_523() -#line 3780 "cs-parser.jay" +void case_524() +#line 3786 "cs-parser.jay" { var list = new List (4); list.Add ((Expression) yyVals[0+yyTop]); yyVal = list; } -void case_524() -#line 3786 "cs-parser.jay" +void case_525() +#line 3792 "cs-parser.jay" { var list = (List) yyVals[-2+yyTop]; list.Add ((Expression) yyVals[0+yyTop]); @@ -7027,23 +7053,23 @@ void case_524() yyVal = list; } -void case_526() -#line 3800 "cs-parser.jay" +void case_527() +#line 3806 "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_529() -#line 3811 "cs-parser.jay" +void case_530() +#line 3817 "cs-parser.jay" { Error_TypeExpected (lexer.Location); yyVal = null; } -void case_530() -#line 3819 "cs-parser.jay" +void case_531() +#line 3825 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; var sn = new SimpleName (lt.Value, (int) yyVals[0+yyTop], lt.Location); @@ -7051,8 +7077,8 @@ void case_530() lbag.AddLocation (sn.TypeArguments, Lexer.GetGenericDimensionLocations ()); } -void case_531() -#line 3826 "cs-parser.jay" +void case_532() +#line 3832 "cs-parser.jay" { var lt1 = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; var lt2 = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; @@ -7062,8 +7088,8 @@ void case_531() lbag.AddLocation (yyVal, savedLocation, GetLocation (yyVals[-1+yyTop])); } -void case_532() -#line 3835 "cs-parser.jay" +void case_533() +#line 3841 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; @@ -7072,8 +7098,8 @@ void case_532() }; } -void case_533() -#line 3843 "cs-parser.jay" +void case_534() +#line 3849 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; @@ -7084,8 +7110,8 @@ void case_533() lbag.AddLocation (ma.TypeArguments, Lexer.GetGenericDimensionLocations ()); } -void case_534() -#line 3853 "cs-parser.jay" +void case_535() +#line 3859 "cs-parser.jay" { var tne = (ATypeNameExpression) yyVals[-3+yyTop]; if (tne.HasTypeArguments) @@ -7099,8 +7125,8 @@ void case_534() lbag.AddLocation (ma.TypeArguments, Lexer.GetGenericDimensionLocations ()); } -void case_535() -#line 3869 "cs-parser.jay" +void case_536() +#line 3875 "cs-parser.jay" { if (lang_version < LanguageVersion.ISO_2) FeatureIsNotAvailable (GetLocation (yyVals[0+yyTop]), "generics"); @@ -7108,8 +7134,8 @@ void case_535() yyVal = yyVals[0+yyTop]; } -void case_536() -#line 3879 "cs-parser.jay" +void case_537() +#line 3885 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; if (lang_version == LanguageVersion.ISO_1) @@ -7118,15 +7144,15 @@ void case_536() yyVal = lt; } -void case_537() -#line 3890 "cs-parser.jay" +void case_538() +#line 3896 "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_538() -#line 3895 "cs-parser.jay" +void case_539() +#line 3901 "cs-parser.jay" { Error_SyntaxError (yyToken); @@ -7134,45 +7160,45 @@ void case_538() lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop])); } -void case_539() -#line 3905 "cs-parser.jay" +void case_540() +#line 3911 "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_540() -#line 3910 "cs-parser.jay" +void case_541() +#line 3916 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = new CheckedExpr (null, GetLocation (yyVals[-1+yyTop])); } -void case_541() -#line 3919 "cs-parser.jay" +void case_542() +#line 3925 "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_542() -#line 3924 "cs-parser.jay" +void case_543() +#line 3930 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = new UnCheckedExpr (null, GetLocation (yyVals[-1+yyTop])); } -void case_543() -#line 3933 "cs-parser.jay" +void case_544() +#line 3939 "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_545() -#line 3945 "cs-parser.jay" +void case_546() +#line 3951 "cs-parser.jay" { yyVal = end_anonymous ((ParametersBlock) yyVals[0+yyTop]); if ((ParametersCompiled) yyVals[-2+yyTop] != ParametersCompiled.Undefined) { @@ -7182,8 +7208,8 @@ void case_545() } } -void case_547() -#line 3958 "cs-parser.jay" +void case_548() +#line 3964 "cs-parser.jay" { yyVal = end_anonymous ((ParametersBlock) yyVals[0+yyTop]); @@ -7194,8 +7220,8 @@ void case_547() } } -void case_551() -#line 3983 "cs-parser.jay" +void case_552() +#line 3989 "cs-parser.jay" { valid_param_mod = 0; yyVal = yyVals[-1+yyTop]; @@ -7203,8 +7229,8 @@ void case_551() savedCloseLocation = GetLocation (yyVals[-2+yyTop]); } -void case_552() -#line 3993 "cs-parser.jay" +void case_553() +#line 3999 "cs-parser.jay" { if (lang_version < LanguageVersion.ISO_2) FeatureIsNotAvailable (GetLocation (yyVals[-3+yyTop]), "default value expression"); @@ -7213,15 +7239,15 @@ void case_552() lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_556() -#line 4013 "cs-parser.jay" +void case_557() +#line 4019 "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_557() -#line 4018 "cs-parser.jay" +void case_558() +#line 4024 "cs-parser.jay" { if (!async_block) { if (current_anonymous_method is LambdaExpression) { @@ -7241,24 +7267,24 @@ void case_557() yyVal = new Await ((Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_558() -#line 4037 "cs-parser.jay" +void case_559() +#line 4043 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = new Unary (Unary.Operator.LogicalNot, null, GetLocation (yyVals[-1+yyTop])); } -void case_559() -#line 4043 "cs-parser.jay" +void case_560() +#line 4049 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = new Unary (Unary.Operator.OnesComplement, null, GetLocation (yyVals[-1+yyTop])); } -void case_560() -#line 4049 "cs-parser.jay" +void case_561() +#line 4055 "cs-parser.jay" { Error_SyntaxError (yyToken); @@ -7266,85 +7292,85 @@ void case_560() lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_561() -#line 4056 "cs-parser.jay" +void case_562() +#line 4062 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = new Await (null, GetLocation (yyVals[-1+yyTop])); } -void case_569() -#line 4094 "cs-parser.jay" +void case_570() +#line 4100 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = new Unary (Unary.Operator.UnaryPlus, null, GetLocation (yyVals[-1+yyTop])); } -void case_570() -#line 4100 "cs-parser.jay" +void case_571() +#line 4106 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = new Unary (Unary.Operator.UnaryNegation, null, GetLocation (yyVals[-1+yyTop])); } -void case_571() -#line 4106 "cs-parser.jay" +void case_572() +#line 4112 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = new UnaryMutator (UnaryMutator.Mode.PreIncrement, null, GetLocation (yyVals[-1+yyTop])); } -void case_572() -#line 4112 "cs-parser.jay" +void case_573() +#line 4118 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = new UnaryMutator (UnaryMutator.Mode.PreDecrement, null, GetLocation (yyVals[-1+yyTop])); } -void case_573() -#line 4118 "cs-parser.jay" +void case_574() +#line 4124 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = new Indirection (null, GetLocation (yyVals[-1+yyTop])); } -void case_574() -#line 4124 "cs-parser.jay" +void case_575() +#line 4130 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = new Unary (Unary.Operator.AddressOf, null, GetLocation (yyVals[-1+yyTop])); } -void case_576() -#line 4134 "cs-parser.jay" +void case_577() +#line 4140 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.Multiply, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_577() -#line 4139 "cs-parser.jay" +void case_578() +#line 4145 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.Division, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_578() -#line 4144 "cs-parser.jay" +void case_579() +#line 4150 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.Modulus, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_579() -#line 4149 "cs-parser.jay" +void case_580() +#line 4155 "cs-parser.jay" { Error_SyntaxError (yyToken); @@ -7352,8 +7378,8 @@ void case_579() lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_580() -#line 4156 "cs-parser.jay" +void case_581() +#line 4162 "cs-parser.jay" { Error_SyntaxError (yyToken); @@ -7361,8 +7387,8 @@ void case_580() lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_581() -#line 4163 "cs-parser.jay" +void case_582() +#line 4169 "cs-parser.jay" { Error_SyntaxError (yyToken); @@ -7370,22 +7396,22 @@ void case_581() lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_583() -#line 4174 "cs-parser.jay" +void case_584() +#line 4180 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.Addition, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_584() -#line 4179 "cs-parser.jay" +void case_585() +#line 4185 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.Subtraction, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_587() -#line 4192 "cs-parser.jay" +void case_588() +#line 4198 "cs-parser.jay" { Error_SyntaxError (yyToken); @@ -7393,8 +7419,8 @@ void case_587() lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_588() -#line 4199 "cs-parser.jay" +void case_589() +#line 4205 "cs-parser.jay" { Error_SyntaxError (yyToken); @@ -7402,38 +7428,38 @@ void case_588() lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_589() -#line 4206 "cs-parser.jay" +void case_590() +#line 4212 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = new As ((Expression) yyVals[-2+yyTop], null, GetLocation (yyVals[-1+yyTop])); } -void case_590() -#line 4212 "cs-parser.jay" +void case_591() +#line 4218 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = new Is ((Expression) yyVals[-2+yyTop], null, GetLocation (yyVals[-1+yyTop])); } -void case_592() -#line 4222 "cs-parser.jay" +void case_593() +#line 4228 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.LeftShift, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_593() -#line 4227 "cs-parser.jay" +void case_594() +#line 4233 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.RightShift, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_594() -#line 4232 "cs-parser.jay" +void case_595() +#line 4238 "cs-parser.jay" { Error_SyntaxError (yyToken); @@ -7441,8 +7467,8 @@ void case_594() lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_595() -#line 4239 "cs-parser.jay" +void case_596() +#line 4245 "cs-parser.jay" { Error_SyntaxError (yyToken); @@ -7450,36 +7476,36 @@ void case_595() lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_597() -#line 4250 "cs-parser.jay" +void case_598() +#line 4256 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.LessThan, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_598() -#line 4255 "cs-parser.jay" +void case_599() +#line 4261 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.GreaterThan, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_599() -#line 4260 "cs-parser.jay" +void case_600() +#line 4266 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.LessThanOrEqual, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_600() -#line 4265 "cs-parser.jay" +void case_601() +#line 4271 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.GreaterThanOrEqual, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_601() -#line 4270 "cs-parser.jay" +void case_602() +#line 4276 "cs-parser.jay" { Error_SyntaxError (yyToken); @@ -7487,8 +7513,8 @@ void case_601() lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_602() -#line 4277 "cs-parser.jay" +void case_603() +#line 4283 "cs-parser.jay" { Error_SyntaxError (yyToken); @@ -7496,8 +7522,8 @@ void case_602() lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_603() -#line 4284 "cs-parser.jay" +void case_604() +#line 4290 "cs-parser.jay" { Error_SyntaxError (yyToken); @@ -7505,8 +7531,8 @@ void case_603() lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_604() -#line 4291 "cs-parser.jay" +void case_605() +#line 4297 "cs-parser.jay" { Error_SyntaxError (yyToken); @@ -7514,22 +7540,22 @@ void case_604() lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_606() -#line 4302 "cs-parser.jay" +void case_607() +#line 4308 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.Equality, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_607() -#line 4307 "cs-parser.jay" +void case_608() +#line 4313 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.Inequality, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_608() -#line 4312 "cs-parser.jay" +void case_609() +#line 4318 "cs-parser.jay" { Error_SyntaxError (yyToken); @@ -7537,8 +7563,8 @@ void case_608() lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_609() -#line 4319 "cs-parser.jay" +void case_610() +#line 4325 "cs-parser.jay" { Error_SyntaxError (yyToken); @@ -7546,15 +7572,15 @@ void case_609() lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_611() -#line 4330 "cs-parser.jay" +void case_612() +#line 4336 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.BitwiseAnd, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_612() -#line 4335 "cs-parser.jay" +void case_613() +#line 4341 "cs-parser.jay" { Error_SyntaxError (yyToken); @@ -7562,15 +7588,15 @@ void case_612() lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_614() -#line 4346 "cs-parser.jay" +void case_615() +#line 4352 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.ExclusiveOr, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_615() -#line 4351 "cs-parser.jay" +void case_616() +#line 4357 "cs-parser.jay" { Error_SyntaxError (yyToken); @@ -7578,15 +7604,15 @@ void case_615() lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_617() -#line 4362 "cs-parser.jay" +void case_618() +#line 4368 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.BitwiseOr, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_618() -#line 4367 "cs-parser.jay" +void case_619() +#line 4373 "cs-parser.jay" { Error_SyntaxError (yyToken); @@ -7594,15 +7620,15 @@ void case_618() lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_620() -#line 4378 "cs-parser.jay" +void case_621() +#line 4384 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.LogicalAnd, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_621() -#line 4383 "cs-parser.jay" +void case_622() +#line 4389 "cs-parser.jay" { Error_SyntaxError (yyToken); @@ -7610,15 +7636,15 @@ void case_621() lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_623() -#line 4394 "cs-parser.jay" +void case_624() +#line 4400 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.LogicalOr, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_624() -#line 4399 "cs-parser.jay" +void case_625() +#line 4405 "cs-parser.jay" { Error_SyntaxError (yyToken); @@ -7626,8 +7652,8 @@ void case_624() lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_626() -#line 4410 "cs-parser.jay" +void case_627() +#line 4416 "cs-parser.jay" { if (lang_version < LanguageVersion.ISO_2) FeatureIsNotAvailable (GetLocation (yyVals[-1+yyTop]), "null coalescing operator"); @@ -7636,23 +7662,23 @@ void case_626() lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_628() -#line 4422 "cs-parser.jay" +void case_629() +#line 4428 "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_629() -#line 4427 "cs-parser.jay" +void case_630() +#line 4433 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = new Conditional (new BooleanExpression ((Expression) yyVals[-3+yyTop]), (Expression) yyVals[-1+yyTop], null, GetLocation (yyVals[-2+yyTop])); } -void case_630() -#line 4433 "cs-parser.jay" +void case_631() +#line 4439 "cs-parser.jay" { Error_SyntaxError (yyToken); @@ -7660,85 +7686,85 @@ void case_630() lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_631() -#line 4443 "cs-parser.jay" +void case_632() +#line 4449 "cs-parser.jay" { yyVal = new SimpleAssign ((Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_632() -#line 4448 "cs-parser.jay" +void case_633() +#line 4454 "cs-parser.jay" { yyVal = new CompoundAssign (Binary.Operator.Multiply, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_633() -#line 4453 "cs-parser.jay" +void case_634() +#line 4459 "cs-parser.jay" { yyVal = new CompoundAssign (Binary.Operator.Division, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_634() -#line 4458 "cs-parser.jay" +void case_635() +#line 4464 "cs-parser.jay" { yyVal = new CompoundAssign (Binary.Operator.Modulus, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_635() -#line 4463 "cs-parser.jay" +void case_636() +#line 4469 "cs-parser.jay" { yyVal = new CompoundAssign (Binary.Operator.Addition, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_636() -#line 4468 "cs-parser.jay" +void case_637() +#line 4474 "cs-parser.jay" { yyVal = new CompoundAssign (Binary.Operator.Subtraction, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_637() -#line 4473 "cs-parser.jay" +void case_638() +#line 4479 "cs-parser.jay" { yyVal = new CompoundAssign (Binary.Operator.LeftShift, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_638() -#line 4478 "cs-parser.jay" +void case_639() +#line 4484 "cs-parser.jay" { yyVal = new CompoundAssign (Binary.Operator.RightShift, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_639() -#line 4483 "cs-parser.jay" +void case_640() +#line 4489 "cs-parser.jay" { yyVal = new CompoundAssign (Binary.Operator.BitwiseAnd, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_640() -#line 4488 "cs-parser.jay" +void case_641() +#line 4494 "cs-parser.jay" { yyVal = new CompoundAssign (Binary.Operator.BitwiseOr, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_641() -#line 4493 "cs-parser.jay" +void case_642() +#line 4499 "cs-parser.jay" { yyVal = new CompoundAssign (Binary.Operator.ExclusiveOr, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_642() -#line 4501 "cs-parser.jay" +void case_643() +#line 4507 "cs-parser.jay" { var pars = new List (4); pars.Add ((Parameter) yyVals[0+yyTop]); @@ -7746,8 +7772,8 @@ void case_642() yyVal = pars; } -void case_643() -#line 4508 "cs-parser.jay" +void case_644() +#line 4514 "cs-parser.jay" { var pars = (List) yyVals[-2+yyTop]; Parameter p = (Parameter)yyVals[0+yyTop]; @@ -7761,39 +7787,46 @@ void case_643() yyVal = pars; } -void case_644() -#line 4524 "cs-parser.jay" +void case_645() +#line 4530 "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_645() -#line 4530 "cs-parser.jay" +void case_646() +#line 4536 "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_646() -#line 4536 "cs-parser.jay" +void case_647() +#line 4542 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; yyVal = new ImplicitLambdaParameter (lt.Value, lt.Location); } void case_648() -#line 4544 "cs-parser.jay" +#line 4547 "cs-parser.jay" +{ + var lt = (Tokenizer.LocatedToken) Error_AwaitAsIdentifier (yyVals[0+yyTop]); + yyVal = new ImplicitLambdaParameter (lt.Value, lt.Location); + } + +void case_650() +#line 4555 "cs-parser.jay" { var pars_list = (List) yyVals[0+yyTop]; yyVal = new ParametersCompiled (pars_list.ToArray ()); lbag.AddLocation (yyVal, parameterListCommas); } -void case_650() -#line 4556 "cs-parser.jay" +void case_652() +#line 4567 "cs-parser.jay" { Block b = end_block (Location.Null); b.IsCompilerGenerated = true; @@ -7801,8 +7834,8 @@ void case_650() yyVal = b; } -void case_652() -#line 4564 "cs-parser.jay" +void case_654() +#line 4575 "cs-parser.jay" { /* Handles only cases like foo = x.FirstOrDefault (l => );*/ /* where we must restore current_variable*/ @@ -7813,95 +7846,112 @@ void case_652() yyVal = null; } -void case_654() -#line 4578 "cs-parser.jay" +void case_656() +#line 4589 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = null; } -void case_655() -#line 4586 "cs-parser.jay" +void case_657() +#line 4597 "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_656() -#line 4592 "cs-parser.jay" +void case_658() +#line 4603 "cs-parser.jay" { yyVal = end_anonymous ((ParametersBlock) yyVals[0+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop])); } -void case_657() -#line 4597 "cs-parser.jay" +void case_659() +#line 4608 "cs-parser.jay" +{ + var lt = (Tokenizer.LocatedToken) Error_AwaitAsIdentifier (yyVals[-1+yyTop]); + Parameter p = new ImplicitLambdaParameter (lt.Value, lt.Location); + start_anonymous (true, new ParametersCompiled (p), false, lt.Location); + } + +void case_660() +#line 4614 "cs-parser.jay" +{ + yyVal = end_anonymous ((ParametersBlock) yyVals[0+yyTop]); + lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop])); + } + +void case_661() +#line 4619 "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_658() -#line 4603 "cs-parser.jay" +void case_662() +#line 4625 "cs-parser.jay" { yyVal = end_anonymous ((ParametersBlock) yyVals[0+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[-4+yyTop]), GetLocation (yyVals[-2+yyTop])); } -void case_660() -#line 4612 "cs-parser.jay" +void case_664() +#line 4634 "cs-parser.jay" { valid_param_mod = 0; start_anonymous (true, (ParametersCompiled) yyVals[-2+yyTop], false, GetLocation (yyVals[-4+yyTop])); } -void case_661() -#line 4617 "cs-parser.jay" +void case_665() +#line 4639 "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_663() -#line 4626 "cs-parser.jay" +void case_667() +#line 4648 "cs-parser.jay" { valid_param_mod = 0; start_anonymous (true, (ParametersCompiled) yyVals[-2+yyTop], true, GetLocation (yyVals[-5+yyTop])); } -void case_664() -#line 4631 "cs-parser.jay" +void case_668() +#line 4653 "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_671() -#line 4654 "cs-parser.jay" +void case_675() +#line 4676 "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_672() -#line 4659 "cs-parser.jay" +void case_676() +#line 4681 "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_673() -#line 4664 "cs-parser.jay" +void case_677() +#line 4686 "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_677() -#line 4693 "cs-parser.jay" +void case_681() +#line 4714 "cs-parser.jay" { + lexer.ConstraintsParsing = true; + 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) { FeatureIsNotAvailable (c.Location, "static classes"); @@ -7911,8 +7961,8 @@ void case_677() lbag.AddMember (current_container, GetModifierLocations (), GetLocation (yyVals[-2+yyTop])); } -void case_678() -#line 4704 "cs-parser.jay" +void case_682() +#line 4727 "cs-parser.jay" { lexer.ConstraintsParsing = false; @@ -7927,16 +7977,16 @@ void case_678() lexer.parsing_modifiers = true; } -void case_679() -#line 4718 "cs-parser.jay" +void case_683() +#line 4741 "cs-parser.jay" { --lexer.parsing_declaration; if (doc_support) Lexer.doc_state = XmlCommentState.Allowed; } -void case_680() -#line 4724 "cs-parser.jay" +void case_684() +#line 4747 "cs-parser.jay" { if (yyVals[0+yyTop] == null) { lbag.AppendToMember (current_container, GetLocation (yyVals[-4+yyTop]), GetLocation (yyVals[-2+yyTop])); @@ -7946,16 +7996,16 @@ void case_680() yyVal = pop_current_class (); } -void case_683() -#line 4743 "cs-parser.jay" +void case_687() +#line 4766 "cs-parser.jay" { mod_locations = null; yyVal = ModifierNone; lexer.parsing_modifiers = false; } -void case_686() -#line 4757 "cs-parser.jay" +void case_690() +#line 4780 "cs-parser.jay" { var m1 = (Modifiers) yyVals[-1+yyTop]; var m2 = (Modifiers) yyVals[0+yyTop]; @@ -7972,8 +8022,8 @@ void case_686() yyVal = m1 | m2; } -void case_687() -#line 4776 "cs-parser.jay" +void case_691() +#line 4799 "cs-parser.jay" { yyVal = Modifiers.NEW; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); @@ -7982,92 +8032,92 @@ void case_687() report.Error (1530, GetLocation (yyVals[0+yyTop]), "Keyword `new' is not allowed on namespace elements"); } -void case_688() -#line 4784 "cs-parser.jay" +void case_692() +#line 4807 "cs-parser.jay" { yyVal = Modifiers.PUBLIC; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_689() -#line 4789 "cs-parser.jay" +void case_693() +#line 4812 "cs-parser.jay" { yyVal = Modifiers.PROTECTED; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_690() -#line 4794 "cs-parser.jay" +void case_694() +#line 4817 "cs-parser.jay" { yyVal = Modifiers.INTERNAL; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_691() -#line 4799 "cs-parser.jay" +void case_695() +#line 4822 "cs-parser.jay" { yyVal = Modifiers.PRIVATE; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_692() -#line 4804 "cs-parser.jay" +void case_696() +#line 4827 "cs-parser.jay" { yyVal = Modifiers.ABSTRACT; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_693() -#line 4809 "cs-parser.jay" +void case_697() +#line 4832 "cs-parser.jay" { yyVal = Modifiers.SEALED; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_694() -#line 4814 "cs-parser.jay" +void case_698() +#line 4837 "cs-parser.jay" { yyVal = Modifiers.STATIC; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_695() -#line 4819 "cs-parser.jay" +void case_699() +#line 4842 "cs-parser.jay" { yyVal = Modifiers.READONLY; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_696() -#line 4824 "cs-parser.jay" +void case_700() +#line 4847 "cs-parser.jay" { yyVal = Modifiers.VIRTUAL; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_697() -#line 4829 "cs-parser.jay" +void case_701() +#line 4852 "cs-parser.jay" { yyVal = Modifiers.OVERRIDE; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_698() -#line 4834 "cs-parser.jay" +void case_702() +#line 4857 "cs-parser.jay" { yyVal = Modifiers.EXTERN; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_699() -#line 4839 "cs-parser.jay" +void case_703() +#line 4862 "cs-parser.jay" { yyVal = Modifiers.VOLATILE; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_700() -#line 4844 "cs-parser.jay" +void case_704() +#line 4867 "cs-parser.jay" { yyVal = Modifiers.UNSAFE; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); @@ -8075,38 +8125,38 @@ void case_700() Error_UnsafeCodeNotAllowed (GetLocation (yyVals[0+yyTop])); } -void case_701() -#line 4851 "cs-parser.jay" +void case_705() +#line 4874 "cs-parser.jay" { yyVal = Modifiers.ASYNC; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_703() -#line 4860 "cs-parser.jay" +void case_707() +#line 4883 "cs-parser.jay" { current_type.AddBasesForPart ((List) yyVals[0+yyTop]); lbag.AppendToMember (current_type, GetLocation (yyVals[-1+yyTop])); } -void case_704() -#line 4865 "cs-parser.jay" +void case_708() +#line 4888 "cs-parser.jay" { Error_SyntaxError (yyToken); current_type.AddBasesForPart ((List) yyVals[-1+yyTop]); } -void case_707() -#line 4882 "cs-parser.jay" +void case_711() +#line 4905 "cs-parser.jay" { var constraints = new List (1); constraints.Add ((Constraints) yyVals[0+yyTop]); yyVal = constraints; } -void case_708() -#line 4888 "cs-parser.jay" +void case_712() +#line 4911 "cs-parser.jay" { var constraints = (List) yyVals[-1+yyTop]; Constraints new_constraint = (Constraints)yyVals[0+yyTop]; @@ -8123,16 +8173,16 @@ void case_708() yyVal = constraints; } -void case_709() -#line 4907 "cs-parser.jay" +void case_713() +#line 4930 "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_710() -#line 4913 "cs-parser.jay" +void case_714() +#line 4936 "cs-parser.jay" { Error_SyntaxError (yyToken); @@ -8140,16 +8190,16 @@ void case_710() yyVal = new Constraints (new SimpleMemberName (lt.Value, lt.Location), null, GetLocation (yyVals[-2+yyTop])); } -void case_711() -#line 4923 "cs-parser.jay" +void case_715() +#line 4946 "cs-parser.jay" { var constraints = new List (1); constraints.Add ((FullNamedExpression) yyVals[0+yyTop]); yyVal = constraints; } -void case_712() -#line 4929 "cs-parser.jay" +void case_716() +#line 4952 "cs-parser.jay" { var constraints = (List) yyVals[-2+yyTop]; var prev = constraints [constraints.Count - 1] as SpecialContraintExpr; @@ -8174,8 +8224,8 @@ void case_712() yyVal = constraints; } -void case_713() -#line 4956 "cs-parser.jay" +void case_717() +#line 4979 "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 ()); @@ -8183,15 +8233,15 @@ void case_713() yyVal = yyVals[0+yyTop]; } -void case_714() -#line 4963 "cs-parser.jay" +void case_718() +#line 4986 "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_718() -#line 4983 "cs-parser.jay" +void case_722() +#line 5006 "cs-parser.jay" { if (lang_version <= LanguageVersion.V_3) FeatureIsNotAvailable (lexer.Location, "generic type variance"); @@ -8199,79 +8249,79 @@ void case_718() yyVal = yyVals[0+yyTop]; } -void case_719() -#line 4993 "cs-parser.jay" +void case_723() +#line 5016 "cs-parser.jay" { yyVal = Variance.Covariant; savedLocation = GetLocation (yyVals[0+yyTop]); } -void case_720() -#line 4998 "cs-parser.jay" +void case_724() +#line 5021 "cs-parser.jay" { yyVal = Variance.Contravariant; savedLocation = GetLocation (yyVals[0+yyTop]); } -void case_721() -#line 5019 "cs-parser.jay" +void case_725() +#line 5042 "cs-parser.jay" { ++lexer.parsing_block; start_block (GetLocation (yyVals[0+yyTop])); } -void case_723() -#line 5031 "cs-parser.jay" +void case_727() +#line 5054 "cs-parser.jay" { --lexer.parsing_block; yyVal = end_block (GetLocation (yyVals[0+yyTop])); } -void case_724() -#line 5036 "cs-parser.jay" +void case_728() +#line 5059 "cs-parser.jay" { --lexer.parsing_block; yyVal = end_block (lexer.Location); } -void case_725() -#line 5045 "cs-parser.jay" +void case_729() +#line 5068 "cs-parser.jay" { ++lexer.parsing_block; current_block.StartLocation = GetLocation (yyVals[0+yyTop]); } -void case_726() -#line 5050 "cs-parser.jay" +void case_730() +#line 5073 "cs-parser.jay" { --lexer.parsing_block; yyVal = end_block (GetLocation (yyVals[0+yyTop])); } -void case_727() -#line 5054 "cs-parser.jay" +void case_731() +#line 5077 "cs-parser.jay" { report.Error (1525, GetLocation (yyVals[0+yyTop]), "Unexpected symbol '}', expected '{'"); lexer.putback ('}'); yyVal = end_block (GetLocation (yyVals[0+yyTop])); } -void case_728() -#line 5063 "cs-parser.jay" +void case_732() +#line 5086 "cs-parser.jay" { ++lexer.parsing_block; current_block.StartLocation = GetLocation (yyVals[0+yyTop]); } -void case_729() -#line 5068 "cs-parser.jay" +void case_733() +#line 5091 "cs-parser.jay" { --lexer.parsing_block; yyVal = end_block (GetLocation (yyVals[0+yyTop])); } -void case_737() -#line 5096 "cs-parser.jay" +void case_741() +#line 5119 "cs-parser.jay" { Error_SyntaxError (yyToken); var lt =(Tokenizer.LocatedToken) yyVals[-1+yyTop]; @@ -8280,43 +8330,43 @@ void case_737() yyVal = null; } -void case_738() -#line 5105 "cs-parser.jay" +void case_742() +#line 5128 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = null; } -void case_771() -#line 5169 "cs-parser.jay" +void case_775() +#line 5192 "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_772() -#line 5174 "cs-parser.jay" +void case_776() +#line 5197 "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_773() -#line 5179 "cs-parser.jay" +void case_777() +#line 5202 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = new EmptyStatement (GetLocation (yyVals[0+yyTop])); } -void case_774() -#line 5187 "cs-parser.jay" +void case_778() +#line 5210 "cs-parser.jay" { /* Uses lexer.Location because semicolon location is not kept in quick mode*/ yyVal = new EmptyStatement (lexer.Location); } -void case_775() -#line 5195 "cs-parser.jay" +void case_779() +#line 5218 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; LabeledStatement labeled = new LabeledStatement (lt.Value, current_block, lt.Location); @@ -8325,8 +8375,8 @@ void case_775() current_block.AddStatement (labeled); } -void case_778() -#line 5208 "cs-parser.jay" +void case_782() +#line 5231 "cs-parser.jay" { if (yyVals[-1+yyTop] is VarExpr) yyVals[-1+yyTop] = new SimpleName ("var", ((VarExpr) yyVals[-1+yyTop]).Location); @@ -8334,8 +8384,8 @@ void case_778() yyVal = new ComposedCast ((FullNamedExpression) yyVals[-1+yyTop], (ComposedTypeSpecifier) yyVals[0+yyTop]); } -void case_779() -#line 5224 "cs-parser.jay" +void case_783() +#line 5247 "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*/ @@ -8366,8 +8416,8 @@ void case_779() } } -void case_780() -#line 5254 "cs-parser.jay" +void case_784() +#line 5277 "cs-parser.jay" { ATypeNameExpression expr = yyVals[-1+yyTop] as ATypeNameExpression; @@ -8379,8 +8429,8 @@ void case_780() } } -void case_781() -#line 5265 "cs-parser.jay" +void case_785() +#line 5288 "cs-parser.jay" { if (yyVals[0+yyTop] == null) yyVal = yyVals[-1+yyTop]; @@ -8388,31 +8438,22 @@ void case_781() yyVal = new ComposedCast ((FullNamedExpression) yyVals[-1+yyTop], (ComposedTypeSpecifier) yyVals[0+yyTop]); } -void case_784() -#line 5280 "cs-parser.jay" +void case_788() +#line 5303 "cs-parser.jay" { Expression.Error_VoidInvalidInTheContext (GetLocation (yyVals[0+yyTop]), report); yyVal = new TypeExpression (compiler.BuiltinTypes.Void, GetLocation (yyVals[0+yyTop])); } -void case_786() -#line 5289 "cs-parser.jay" +void case_790() +#line 5312 "cs-parser.jay" { ((ComposedTypeSpecifier) yyVals[-1+yyTop]).Next = (ComposedTypeSpecifier) yyVals[0+yyTop]; yyVal = yyVals[-1+yyTop]; } -void case_789() -#line 5305 "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"); - yyVal = new Tokenizer.LocatedToken ("await", GetLocation (yyVals[0+yyTop])); - } - } - -void case_790() -#line 5315 "cs-parser.jay" +void case_794() +#line 5335 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; var li = new LocalVariable (current_block, lt.Value, lt.Location); @@ -8420,16 +8461,16 @@ void case_790() current_variable = new BlockVariableDeclaration ((FullNamedExpression) yyVals[-1+yyTop], li); } -void case_791() -#line 5322 "cs-parser.jay" +void case_795() +#line 5342 "cs-parser.jay" { yyVal = current_variable; current_variable = null; lbag.AppendTo (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_792() -#line 5328 "cs-parser.jay" +void case_796() +#line 5348 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; var li = new LocalVariable (current_block, lt.Value, LocalVariable.Flags.Constant, lt.Location); @@ -8437,8 +8478,8 @@ void case_792() current_variable = new BlockConstantDeclaration ((FullNamedExpression) yyVals[-1+yyTop], li); } -void case_793() -#line 5335 "cs-parser.jay" +void case_797() +#line 5355 "cs-parser.jay" { if (current_variable.Initializer != null) { lbag.AddLocation (current_variable, GetLocation (yyVals[-6+yyTop]), savedLocation, GetLocation (yyVals[0+yyTop])); @@ -8449,8 +8490,8 @@ void case_793() current_variable = null; } -void case_795() -#line 5348 "cs-parser.jay" +void case_799() +#line 5368 "cs-parser.jay" { /* Redundant, but wont regress*/ report.Error (1525, lexer.Location, "Unexpected symbol }"); @@ -8458,15 +8499,15 @@ void case_795() yyVal = yyVals[0+yyTop]; } -void case_797() -#line 5359 "cs-parser.jay" +void case_801() +#line 5379 "cs-parser.jay" { current_variable.Initializer = (Expression) yyVals[0+yyTop]; lbag.AppendTo (current_variable, GetLocation (yyVals[-1+yyTop])); } -void case_798() -#line 5364 "cs-parser.jay" +void case_802() +#line 5384 "cs-parser.jay" { if (yyToken == Token.OPEN_BRACKET_EXPR) { report.Error (650, lexer.Location, @@ -8481,8 +8522,8 @@ void case_798() lbag.AppendTo (current_variable, GetLocation (yyVals[-1+yyTop])); } -void case_799() -#line 5378 "cs-parser.jay" +void case_803() +#line 5398 "cs-parser.jay" { if (yyToken == Token.OPEN_BRACKET_EXPR) { report.Error (650, lexer.Location, @@ -8492,8 +8533,8 @@ void case_799() } } -void case_803() -#line 5396 "cs-parser.jay" +void case_807() +#line 5416 "cs-parser.jay" { foreach (var d in current_variable.Declarators) { if (d.Initializer == null) @@ -8501,8 +8542,8 @@ void case_803() } } -void case_806() -#line 5411 "cs-parser.jay" +void case_810() +#line 5431 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; var li = new LocalVariable (current_variable.Variable, lt.Value, lt.Location); @@ -8512,8 +8553,8 @@ void case_806() lbag.AddLocation (d, GetLocation (yyVals[-1+yyTop])); } -void case_807() -#line 5420 "cs-parser.jay" +void case_811() +#line 5440 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; var li = new LocalVariable (current_variable.Variable, lt.Value, lt.Location); @@ -8523,15 +8564,15 @@ void case_807() lbag.AddLocation (d, GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[-1+yyTop])); } -void case_809() -#line 5436 "cs-parser.jay" +void case_813() +#line 5456 "cs-parser.jay" { savedLocation = GetLocation (yyVals[-1+yyTop]); current_variable.Initializer = (Expression) yyVals[0+yyTop]; } -void case_814() -#line 5454 "cs-parser.jay" +void case_818() +#line 5474 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; var li = new LocalVariable (current_block, lt.Value, LocalVariable.Flags.Constant, lt.Location); @@ -8541,37 +8582,37 @@ void case_814() lbag.AddLocation (d, GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[-1+yyTop])); } -void case_816() -#line 5467 "cs-parser.jay" +void case_820() +#line 5487 "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_817() -#line 5472 "cs-parser.jay" +void case_821() +#line 5492 "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_818() -#line 5480 "cs-parser.jay" +void case_822() +#line 5500 "cs-parser.jay" { yyVal = yyVals[-1+yyTop]; lbag.AddStatement (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_820() -#line 5486 "cs-parser.jay" +void case_824() +#line 5506 "cs-parser.jay" { yyVal = yyVals[-1+yyTop]; report.Error (1002, GetLocation (yyVals[0+yyTop]), "; expected"); lexer.putback ('}'); } -void case_823() -#line 5504 "cs-parser.jay" +void case_827() +#line 5524 "cs-parser.jay" { ExpressionStatement s = yyVals[0+yyTop] as ExpressionStatement; if (s == null) { @@ -8583,8 +8624,8 @@ void case_823() } } -void case_824() -#line 5518 "cs-parser.jay" +void case_828() +#line 5538 "cs-parser.jay" { Expression expr = (Expression) yyVals[0+yyTop]; ExpressionStatement s; @@ -8593,15 +8634,15 @@ void case_824() yyVal = new StatementExpression (s); } -void case_825() -#line 5526 "cs-parser.jay" +void case_829() +#line 5546 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = new EmptyStatement (GetLocation (yyVals[0+yyTop])); } -void case_828() -#line 5540 "cs-parser.jay" +void case_832() +#line 5560 "cs-parser.jay" { if (yyVals[0+yyTop] is EmptyStatement) Warning_EmptyStatement (GetLocation (yyVals[0+yyTop])); @@ -8610,8 +8651,8 @@ void case_828() lbag.AddStatement (yyVal, GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[-1+yyTop])); } -void case_829() -#line 5549 "cs-parser.jay" +void case_833() +#line 5569 "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])); @@ -8622,8 +8663,8 @@ void case_829() Warning_EmptyStatement (GetLocation (yyVals[0+yyTop])); } -void case_830() -#line 5559 "cs-parser.jay" +void case_834() +#line 5579 "cs-parser.jay" { Error_SyntaxError (yyToken); @@ -8631,16 +8672,16 @@ void case_830() lbag.AddStatement (yyVal, GetLocation (yyVals[-2+yyTop])); } -void case_832() -#line 5573 "cs-parser.jay" +void case_836() +#line 5593 "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_833() -#line 5579 "cs-parser.jay" +void case_837() +#line 5599 "cs-parser.jay" { Error_SyntaxError (yyToken); @@ -8648,15 +8689,15 @@ void case_833() lbag.AddStatement (yyVal, GetLocation (yyVals[-2+yyTop])); } -void case_834() -#line 5589 "cs-parser.jay" +void case_838() +#line 5609 "cs-parser.jay" { report.Warning (1522, 1, current_block.StartLocation, "Empty switch block"); yyVal = new List (); } -void case_836() -#line 5598 "cs-parser.jay" +void case_840() +#line 5618 "cs-parser.jay" { var sections = new List (4); @@ -8664,8 +8705,8 @@ void case_836() yyVal = sections; } -void case_837() -#line 5605 "cs-parser.jay" +void case_841() +#line 5625 "cs-parser.jay" { var sections = (List) yyVals[-1+yyTop]; @@ -8673,15 +8714,15 @@ void case_837() yyVal = sections; } -void case_838() -#line 5612 "cs-parser.jay" +void case_842() +#line 5632 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = new List (); } -void case_841() -#line 5631 "cs-parser.jay" +void case_845() +#line 5651 "cs-parser.jay" { var labels = new List (2); @@ -8689,8 +8730,8 @@ void case_841() yyVal = labels; } -void case_842() -#line 5638 "cs-parser.jay" +void case_846() +#line 5658 "cs-parser.jay" { var labels = (List) (yyVals[-1+yyTop]); labels.Add ((SwitchLabel) yyVals[0+yyTop]); @@ -8698,22 +8739,22 @@ void case_842() yyVal = labels; } -void case_843() -#line 5648 "cs-parser.jay" +void case_847() +#line 5668 "cs-parser.jay" { yyVal = new SwitchLabel ((Expression) yyVals[-1+yyTop], GetLocation (yyVals[-2+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_844() -#line 5653 "cs-parser.jay" +void case_848() +#line 5673 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = new SwitchLabel ((Expression) yyVals[-1+yyTop], GetLocation (yyVals[-2+yyTop])); } -void case_850() -#line 5672 "cs-parser.jay" +void case_854() +#line 5692 "cs-parser.jay" { if (yyVals[0+yyTop] is EmptyStatement && lexer.peek_token () == Token.OPEN_BRACE) Warning_EmptyStatement (GetLocation (yyVals[0+yyTop])); @@ -8722,8 +8763,8 @@ void case_850() lbag.AddStatement (yyVal, GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[-1+yyTop])); } -void case_851() -#line 5680 "cs-parser.jay" +void case_855() +#line 5700 "cs-parser.jay" { Error_SyntaxError (yyToken); @@ -8731,22 +8772,22 @@ void case_851() lbag.AddStatement (yyVal, GetLocation (yyVals[-2+yyTop])); } -void case_852() -#line 5690 "cs-parser.jay" +void case_856() +#line 5710 "cs-parser.jay" { yyVal = new Do ((Statement) yyVals[-5+yyTop], (BooleanExpression) yyVals[-2+yyTop], GetLocation (yyVals[-6+yyTop]), GetLocation (yyVals[-4+yyTop])); lbag.AddStatement (yyVal, GetLocation (yyVals[-4+yyTop]), GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[-1+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_853() -#line 5695 "cs-parser.jay" +void case_857() +#line 5715 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = new Do ((Statement) yyVals[-1+yyTop], null, GetLocation (yyVals[-2+yyTop]), Location.Null); } -void case_854() -#line 5700 "cs-parser.jay" +void case_858() +#line 5720 "cs-parser.jay" { Error_SyntaxError (yyToken); @@ -8754,8 +8795,8 @@ void case_854() lbag.AddStatement (yyVal, GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[-2+yyTop])); } -void case_855() -#line 5710 "cs-parser.jay" +void case_859() +#line 5730 "cs-parser.jay" { start_block (GetLocation (yyVals[0+yyTop])); current_block.IsCompilerGenerated = true; @@ -8765,8 +8806,8 @@ void case_855() yyVal = f; } -void case_857() -#line 5727 "cs-parser.jay" +void case_861() +#line 5747 "cs-parser.jay" { For f = (For) yyVals[-2+yyTop]; f.Initializer = (Statement) yyVals[-1+yyTop]; @@ -8774,8 +8815,8 @@ void case_857() yyVal = f; } -void case_859() -#line 5737 "cs-parser.jay" +void case_863() +#line 5757 "cs-parser.jay" { report.Error (1525, GetLocation (yyVals[0+yyTop]), "Unexpected symbol ')', expected ';'"); For f = (For) yyVals[-2+yyTop]; @@ -8784,8 +8825,8 @@ void case_859() yyVal = end_block (GetLocation (yyVals[0+yyTop])); } -void case_860() -#line 5748 "cs-parser.jay" +void case_864() +#line 5768 "cs-parser.jay" { For f = (For) yyVals[-2+yyTop]; f.Condition = (BooleanExpression) yyVals[-1+yyTop]; @@ -8793,8 +8834,8 @@ void case_860() yyVal = f; } -void case_862() -#line 5759 "cs-parser.jay" +void case_866() +#line 5779 "cs-parser.jay" { report.Error (1525, GetLocation (yyVals[0+yyTop]), "Unexpected symbol ')', expected ';'"); For f = (For) yyVals[-2+yyTop]; @@ -8803,8 +8844,8 @@ void case_862() yyVal = end_block (GetLocation (yyVals[0+yyTop])); } -void case_863() -#line 5771 "cs-parser.jay" +void case_867() +#line 5791 "cs-parser.jay" { For f = (For) yyVals[-3+yyTop]; f.Iterator = (Statement) yyVals[-2+yyTop]; @@ -8818,15 +8859,15 @@ void case_863() yyVal = end_block (GetLocation (yyVals[-1+yyTop])); } -void case_864() -#line 5784 "cs-parser.jay" +void case_868() +#line 5804 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = end_block (current_block.StartLocation); } -void case_867() -#line 5797 "cs-parser.jay" +void case_871() +#line 5817 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; var li = new LocalVariable (current_block, lt.Value, lt.Location); @@ -8834,15 +8875,15 @@ void case_867() current_variable = new BlockVariableDeclaration ((FullNamedExpression) yyVals[-1+yyTop], li); } -void case_868() -#line 5804 "cs-parser.jay" +void case_872() +#line 5824 "cs-parser.jay" { yyVal = current_variable; current_variable = null; } -void case_876() -#line 5828 "cs-parser.jay" +void case_880() +#line 5848 "cs-parser.jay" { var sl = yyVals[-2+yyTop] as StatementList; if (sl == null) { @@ -8857,8 +8898,8 @@ void case_876() yyVal = sl; } -void case_877() -#line 5845 "cs-parser.jay" +void case_881() +#line 5865 "cs-parser.jay" { report.Error (230, GetLocation (yyVals[-3+yyTop]), "Type and identifier are both required in a foreach statement"); @@ -8872,8 +8913,8 @@ void case_877() yyVal = end_block (GetLocation (yyVals[0+yyTop])); } -void case_878() -#line 5858 "cs-parser.jay" +void case_882() +#line 5878 "cs-parser.jay" { Error_SyntaxError (yyToken); @@ -8891,8 +8932,8 @@ void case_878() yyVal = end_block (GetLocation (yyVals[0+yyTop])); } -void case_879() -#line 5875 "cs-parser.jay" +void case_883() +#line 5895 "cs-parser.jay" { start_block (GetLocation (yyVals[-5+yyTop])); current_block.IsCompilerGenerated = true; @@ -8902,8 +8943,8 @@ void case_879() yyVal = li; } -void case_880() -#line 5884 "cs-parser.jay" +void case_884() +#line 5904 "cs-parser.jay" { if (yyVals[0+yyTop] is EmptyStatement && lexer.peek_token () == Token.OPEN_BRACE) Warning_EmptyStatement (GetLocation (yyVals[0+yyTop])); @@ -8915,8 +8956,8 @@ void case_880() yyVal = f; } -void case_881() -#line 5895 "cs-parser.jay" +void case_885() +#line 5915 "cs-parser.jay" { start_block (GetLocation (yyVals[-3+yyTop])); current_block.IsCompilerGenerated = true; @@ -8930,8 +8971,8 @@ void case_881() yyVal = end_block (GetLocation (yyVals[0+yyTop])); } -void case_882() -#line 5908 "cs-parser.jay" +void case_886() +#line 5928 "cs-parser.jay" { Foreach f = new Foreach ((Expression) yyVals[-1+yyTop], null, null, null, null, GetLocation (yyVals[-3+yyTop])); current_block.AddStatement (f); @@ -8940,86 +8981,86 @@ void case_882() yyVal = f; } -void case_889() -#line 5928 "cs-parser.jay" +void case_893() +#line 5948 "cs-parser.jay" { yyVal = new Break (GetLocation (yyVals[-1+yyTop])); lbag.AddStatement (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_890() -#line 5936 "cs-parser.jay" +void case_894() +#line 5956 "cs-parser.jay" { yyVal = new Continue (GetLocation (yyVals[-1+yyTop])); lbag.AddStatement (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_891() -#line 5941 "cs-parser.jay" +void case_895() +#line 5961 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = new Continue (GetLocation (yyVals[-1+yyTop])); } -void case_892() -#line 5949 "cs-parser.jay" +void case_896() +#line 5969 "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_893() -#line 5955 "cs-parser.jay" +void case_897() +#line 5975 "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_894() -#line 5960 "cs-parser.jay" +void case_898() +#line 5980 "cs-parser.jay" { yyVal = new GotoDefault (GetLocation (yyVals[-2+yyTop])); lbag.AddStatement (yyVal, GetLocation (yyVals[-1+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_895() -#line 5968 "cs-parser.jay" +void case_899() +#line 5988 "cs-parser.jay" { yyVal = new Return ((Expression) yyVals[-1+yyTop], GetLocation (yyVals[-2+yyTop])); lbag.AddStatement (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_896() -#line 5973 "cs-parser.jay" +void case_900() +#line 5993 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = new Return ((Expression) yyVals[-1+yyTop], GetLocation (yyVals[-2+yyTop])); } -void case_897() -#line 5978 "cs-parser.jay" +void case_901() +#line 5998 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = new Return (null, GetLocation (yyVals[-1+yyTop])); } -void case_898() -#line 5986 "cs-parser.jay" +void case_902() +#line 6006 "cs-parser.jay" { yyVal = new Throw ((Expression) yyVals[-1+yyTop], GetLocation (yyVals[-2+yyTop])); lbag.AddStatement (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_899() -#line 5991 "cs-parser.jay" +void case_903() +#line 6011 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = new Throw (null, GetLocation (yyVals[-1+yyTop])); } -void case_900() -#line 5999 "cs-parser.jay" +void case_904() +#line 6019 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-3+yyTop]; string s = lt.Value; @@ -9036,8 +9077,8 @@ void case_900() lbag.AddStatement (yyVal, GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_901() -#line 6015 "cs-parser.jay" +void case_905() +#line 6035 "cs-parser.jay" { Error_SyntaxError (yyToken); @@ -9056,8 +9097,8 @@ void case_901() lbag.AddStatement (yyVal, GetLocation (yyVals[-2+yyTop])); } -void case_902() -#line 6033 "cs-parser.jay" +void case_906() +#line 6053 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; string s = lt.Value; @@ -9072,29 +9113,29 @@ void case_902() lbag.AddStatement (yyVal, GetLocation (yyVals[-1+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_906() -#line 6059 "cs-parser.jay" +void case_910() +#line 6079 "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_907() -#line 6064 "cs-parser.jay" +void case_911() +#line 6084 "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])); lbag.AddStatement (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_908() -#line 6069 "cs-parser.jay" +void case_912() +#line 6089 "cs-parser.jay" { Error_SyntaxError (1524, yyToken); yyVal = new TryCatch ((Block) yyVals[-1+yyTop], null, GetLocation (yyVals[-2+yyTop]), false); } -void case_909() -#line 6077 "cs-parser.jay" +void case_913() +#line 6097 "cs-parser.jay" { var l = new List (2); @@ -9102,8 +9143,8 @@ void case_909() yyVal = l; } -void case_910() -#line 6084 "cs-parser.jay" +void case_914() +#line 6104 "cs-parser.jay" { var l = (List) yyVals[-1+yyTop]; @@ -9116,8 +9157,8 @@ void case_910() yyVal = l; } -void case_914() -#line 6108 "cs-parser.jay" +void case_918() +#line 6128 "cs-parser.jay" { start_block (GetLocation (yyVals[-3+yyTop])); var c = new Catch (current_block, GetLocation (yyVals[-4+yyTop])); @@ -9133,8 +9174,8 @@ void case_914() yyVal = c; } -void case_916() -#line 6127 "cs-parser.jay" +void case_920() +#line 6147 "cs-parser.jay" { if (yyToken == Token.CLOSE_PARENS) { report.Error (1015, lexer.Location, @@ -9146,8 +9187,8 @@ void case_916() yyVal = new Catch (null, GetLocation (yyVals[-2+yyTop])); } -void case_917() -#line 6138 "cs-parser.jay" +void case_921() +#line 6158 "cs-parser.jay" { Error_SyntaxError (yyToken); @@ -9171,15 +9212,15 @@ void case_917() yyVal = c; } -void case_920() -#line 6178 "cs-parser.jay" +void case_924() +#line 6198 "cs-parser.jay" { if (!settings.Unsafe) Error_UnsafeCodeNotAllowed (GetLocation (yyVals[0+yyTop])); } -void case_922() -#line 6188 "cs-parser.jay" +void case_926() +#line 6208 "cs-parser.jay" { if (yyVals[0+yyTop] is EmptyStatement && lexer.peek_token () == Token.OPEN_BRACE) Warning_EmptyStatement (GetLocation (yyVals[0+yyTop])); @@ -9188,8 +9229,8 @@ void case_922() lbag.AddStatement (yyVal, GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[-1+yyTop])); } -void case_923() -#line 6196 "cs-parser.jay" +void case_927() +#line 6216 "cs-parser.jay" { Error_SyntaxError (yyToken); @@ -9197,8 +9238,8 @@ void case_923() lbag.AddStatement (yyVal, GetLocation (yyVals[-2+yyTop])); } -void case_924() -#line 6206 "cs-parser.jay" +void case_928() +#line 6226 "cs-parser.jay" { start_block (GetLocation (yyVals[-2+yyTop])); @@ -9209,15 +9250,15 @@ void case_924() current_variable = new Fixed.VariableDeclaration ((FullNamedExpression) yyVals[-1+yyTop], li); } -void case_925() -#line 6216 "cs-parser.jay" +void case_929() +#line 6236 "cs-parser.jay" { yyVal = current_variable; current_variable = null; } -void case_926() -#line 6221 "cs-parser.jay" +void case_930() +#line 6241 "cs-parser.jay" { if (yyVals[0+yyTop] is EmptyStatement && lexer.peek_token () == Token.OPEN_BRACE) Warning_EmptyStatement (GetLocation (yyVals[0+yyTop])); @@ -9228,8 +9269,8 @@ void case_926() yyVal = end_block (GetLocation (yyVals[-2+yyTop])); } -void case_927() -#line 6234 "cs-parser.jay" +void case_931() +#line 6254 "cs-parser.jay" { start_block (GetLocation (yyVals[-2+yyTop])); @@ -9240,15 +9281,15 @@ void case_927() current_variable = new Using.VariableDeclaration ((FullNamedExpression) yyVals[-1+yyTop], li); } -void case_928() -#line 6244 "cs-parser.jay" +void case_932() +#line 6264 "cs-parser.jay" { yyVal = current_variable; current_variable = null; } -void case_929() -#line 6249 "cs-parser.jay" +void case_933() +#line 6269 "cs-parser.jay" { if (yyVals[0+yyTop] is EmptyStatement && lexer.peek_token () == Token.OPEN_BRACE) Warning_EmptyStatement (GetLocation (yyVals[0+yyTop])); @@ -9259,8 +9300,8 @@ void case_929() yyVal = end_block (GetLocation (yyVals[-2+yyTop])); } -void case_930() -#line 6259 "cs-parser.jay" +void case_934() +#line 6279 "cs-parser.jay" { if (yyVals[0+yyTop] is EmptyStatement && lexer.peek_token () == Token.OPEN_BRACE) Warning_EmptyStatement (GetLocation (yyVals[0+yyTop])); @@ -9269,8 +9310,8 @@ void case_930() lbag.AddStatement (yyVal, GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[-1+yyTop])); } -void case_931() -#line 6267 "cs-parser.jay" +void case_935() +#line 6287 "cs-parser.jay" { Error_SyntaxError (yyToken); @@ -9278,23 +9319,23 @@ void case_931() lbag.AddStatement (yyVal, GetLocation (yyVals[-2+yyTop])); } -void case_933() -#line 6278 "cs-parser.jay" +void case_937() +#line 6298 "cs-parser.jay" { /* It has to be here for the parent to safely restore artificial block*/ Error_SyntaxError (yyToken); } -void case_935() -#line 6290 "cs-parser.jay" +void case_939() +#line 6310 "cs-parser.jay" { current_variable.Initializer = (Expression) yyVals[0+yyTop]; lbag.AppendTo (current_variable, GetLocation (yyVals[-1+yyTop])); yyVal = current_variable; } -void case_936() -#line 6302 "cs-parser.jay" +void case_940() +#line 6322 "cs-parser.jay" { lexer.query_parsing = false; @@ -9307,8 +9348,8 @@ void case_936() current_block = current_block.Parent; } -void case_937() -#line 6314 "cs-parser.jay" +void case_941() +#line 6334 "cs-parser.jay" { Linq.AQueryClause from = yyVals[-1+yyTop] as Linq.AQueryClause; @@ -9319,8 +9360,8 @@ void case_937() current_block = current_block.Parent; } -void case_938() -#line 6325 "cs-parser.jay" +void case_942() +#line 6345 "cs-parser.jay" { lexer.query_parsing = false; yyVal = yyVals[-1+yyTop]; @@ -9329,16 +9370,16 @@ void case_938() current_block = current_block.Parent; } -void case_939() -#line 6332 "cs-parser.jay" +void case_943() +#line 6352 "cs-parser.jay" { yyVal = yyVals[-1+yyTop]; current_block.SetEndLocation (lexer.Location); current_block = current_block.Parent; } -void case_940() -#line 6341 "cs-parser.jay" +void case_944() +#line 6361 "cs-parser.jay" { current_block = new Linq.QueryBlock (current_block, lexer.Location); @@ -9349,8 +9390,8 @@ void case_940() yyVal = new Linq.QueryExpression (start); } -void case_941() -#line 6351 "cs-parser.jay" +void case_945() +#line 6371 "cs-parser.jay" { current_block = new Linq.QueryBlock (current_block, lexer.Location); @@ -9363,8 +9404,8 @@ void case_941() yyVal = new Linq.QueryExpression (start); } -void case_942() -#line 6366 "cs-parser.jay" +void case_946() +#line 6386 "cs-parser.jay" { current_block = new Linq.QueryBlock (current_block, lexer.Location); @@ -9375,8 +9416,8 @@ void case_942() yyVal = new Linq.QueryExpression (start); } -void case_943() -#line 6376 "cs-parser.jay" +void case_947() +#line 6396 "cs-parser.jay" { current_block = new Linq.QueryBlock (current_block, lexer.Location); @@ -9389,8 +9430,8 @@ void case_943() yyVal = new Linq.QueryExpression (start); } -void case_945() -#line 6395 "cs-parser.jay" +void case_949() +#line 6415 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-3+yyTop]; var sn = new Linq.RangeVariable (lt.Value, lt.Location); @@ -9403,8 +9444,8 @@ void case_945() lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop])); } -void case_947() -#line 6411 "cs-parser.jay" +void case_951() +#line 6431 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-3+yyTop]; var sn = new Linq.RangeVariable (lt.Value, lt.Location); @@ -9421,8 +9462,8 @@ void case_947() lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop])); } -void case_948() -#line 6430 "cs-parser.jay" +void case_952() +#line 6450 "cs-parser.jay" { Linq.AQueryClause head = (Linq.AQueryClause)yyVals[-1+yyTop]; @@ -9438,8 +9479,8 @@ void case_948() yyVal = head; } -void case_949() -#line 6445 "cs-parser.jay" +void case_953() +#line 6465 "cs-parser.jay" { Linq.AQueryClause head = (Linq.AQueryClause)yyVals[0+yyTop]; @@ -9452,22 +9493,22 @@ void case_949() yyVal = head; } -void case_951() -#line 6458 "cs-parser.jay" +void case_955() +#line 6478 "cs-parser.jay" { report.Error (742, GetLocation (yyVals[0+yyTop]), "Unexpected symbol `{0}'. A query body must end with select or group clause", GetSymbolName (yyToken)); yyVal = yyVals[-1+yyTop]; } -void case_952() -#line 6463 "cs-parser.jay" +void case_956() +#line 6483 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = null; } -void case_954() -#line 6475 "cs-parser.jay" +void case_958() +#line 6495 "cs-parser.jay" { yyVal = new Linq.Select ((Linq.QueryBlock)current_block, (Expression)yyVals[0+yyTop], GetLocation (yyVals[-2+yyTop])); @@ -9475,8 +9516,8 @@ void case_954() current_block = current_block.Parent; } -void case_955() -#line 6482 "cs-parser.jay" +void case_959() +#line 6502 "cs-parser.jay" { if (linq_clause_blocks == null) linq_clause_blocks = new Stack (); @@ -9485,8 +9526,8 @@ void case_955() linq_clause_blocks.Push ((Linq.QueryBlock)current_block); } -void case_956() -#line 6490 "cs-parser.jay" +void case_960() +#line 6510 "cs-parser.jay" { current_block.SetEndLocation (lexer.Location); current_block = current_block.Parent; @@ -9494,8 +9535,8 @@ void case_956() current_block = new Linq.QueryBlock (current_block, lexer.Location); } -void case_957() -#line 6497 "cs-parser.jay" +void case_961() +#line 6517 "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])); @@ -9504,15 +9545,15 @@ void case_957() current_block = current_block.Parent; } -void case_959() -#line 6509 "cs-parser.jay" +void case_963() +#line 6529 "cs-parser.jay" { ((Linq.AQueryClause)yyVals[-1+yyTop]).Tail.Next = (Linq.AQueryClause)yyVals[0+yyTop]; yyVal = yyVals[-1+yyTop]; } -void case_966() -#line 6529 "cs-parser.jay" +void case_970() +#line 6549 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-3+yyTop]; var sn = new Linq.RangeVariable (lt.Value, lt.Location); @@ -9525,8 +9566,8 @@ void case_966() ((Linq.QueryBlock)current_block).AddRangeVariable (sn); } -void case_968() -#line 6548 "cs-parser.jay" +void case_972() +#line 6568 "cs-parser.jay" { yyVal = new Linq.Where ((Linq.QueryBlock)current_block, (Expression)yyVals[0+yyTop], GetLocation (yyVals[-2+yyTop])); @@ -9534,8 +9575,8 @@ void case_968() current_block = current_block.Parent; } -void case_969() -#line 6558 "cs-parser.jay" +void case_973() +#line 6578 "cs-parser.jay" { if (linq_clause_blocks == null) linq_clause_blocks = new Stack (); @@ -9544,8 +9585,8 @@ void case_969() linq_clause_blocks.Push ((Linq.QueryBlock) current_block); } -void case_970() -#line 6566 "cs-parser.jay" +void case_974() +#line 6586 "cs-parser.jay" { current_block.SetEndLocation (lexer.Location); current_block = current_block.Parent; @@ -9554,8 +9595,8 @@ void case_970() linq_clause_blocks.Push ((Linq.QueryBlock) current_block); } -void case_971() -#line 6574 "cs-parser.jay" +void case_975() +#line 6594 "cs-parser.jay" { current_block.AddStatement (new ContextualReturn ((Expression) yyVals[-1+yyTop])); current_block.SetEndLocation (lexer.Location); @@ -9564,8 +9605,8 @@ void case_971() current_block = new Linq.QueryBlock (current_block, lexer.Location); } -void case_972() -#line 6582 "cs-parser.jay" +void case_976() +#line 6602 "cs-parser.jay" { current_block.AddStatement (new ContextualReturn ((Expression) yyVals[-1+yyTop])); current_block.SetEndLocation (lexer.Location); @@ -9604,8 +9645,8 @@ void case_972() ((Linq.QueryBlock)current_block).AddRangeVariable (into); } -void case_973() -#line 6620 "cs-parser.jay" +void case_977() +#line 6640 "cs-parser.jay" { if (linq_clause_blocks == null) linq_clause_blocks = new Stack (); @@ -9614,8 +9655,8 @@ void case_973() linq_clause_blocks.Push ((Linq.QueryBlock) current_block); } -void case_974() -#line 6628 "cs-parser.jay" +void case_978() +#line 6648 "cs-parser.jay" { current_block.SetEndLocation (lexer.Location); current_block = current_block.Parent; @@ -9624,8 +9665,8 @@ void case_974() linq_clause_blocks.Push ((Linq.QueryBlock) current_block); } -void case_975() -#line 6636 "cs-parser.jay" +void case_979() +#line 6656 "cs-parser.jay" { current_block.AddStatement (new ContextualReturn ((Expression) yyVals[-1+yyTop])); current_block.SetEndLocation (lexer.Location); @@ -9634,8 +9675,8 @@ void case_975() current_block = new Linq.QueryBlock (current_block, lexer.Location); } -void case_976() -#line 6644 "cs-parser.jay" +void case_980() +#line 6664 "cs-parser.jay" { current_block.AddStatement (new ContextualReturn ((Expression) yyVals[-1+yyTop])); current_block.SetEndLocation (lexer.Location); @@ -9678,22 +9719,22 @@ void case_976() ((Linq.QueryBlock)current_block).AddRangeVariable (into); } -void case_978() -#line 6690 "cs-parser.jay" +void case_982() +#line 6710 "cs-parser.jay" { opt_intoStack.Push (GetLocation (yyVals[-1+yyTop])); yyVal = yyVals[0+yyTop]; } -void case_979() -#line 6698 "cs-parser.jay" +void case_983() +#line 6718 "cs-parser.jay" { current_block = new Linq.QueryBlock (current_block, lexer.Location); lbag.AddLocation (current_block, GetLocation (yyVals[0+yyTop])); } -void case_980() -#line 6703 "cs-parser.jay" +void case_984() +#line 6723 "cs-parser.jay" { current_block.SetEndLocation (lexer.Location); current_block = current_block.Parent; @@ -9701,8 +9742,8 @@ void case_980() yyVal = yyVals[0+yyTop]; } -void case_982() -#line 6714 "cs-parser.jay" +void case_986() +#line 6734 "cs-parser.jay" { current_block.SetEndLocation (lexer.Location); current_block = current_block.Parent; @@ -9710,15 +9751,15 @@ void case_982() current_block = new Linq.QueryBlock (current_block, lexer.Location); } -void case_983() -#line 6721 "cs-parser.jay" +void case_987() +#line 6741 "cs-parser.jay" { ((Linq.AQueryClause)yyVals[-3+yyTop]).Next = (Linq.AQueryClause)yyVals[0+yyTop]; yyVal = yyVals[-3+yyTop]; } -void case_985() -#line 6730 "cs-parser.jay" +void case_989() +#line 6750 "cs-parser.jay" { current_block.SetEndLocation (lexer.Location); current_block = current_block.Parent; @@ -9726,43 +9767,43 @@ void case_985() current_block = new Linq.QueryBlock ((Linq.QueryBlock) current_block, lexer.Location); } -void case_986() -#line 6737 "cs-parser.jay" +void case_990() +#line 6757 "cs-parser.jay" { ((Linq.AQueryClause)yyVals[-3+yyTop]).Tail.Next = (Linq.AQueryClause)yyVals[0+yyTop]; yyVal = yyVals[-3+yyTop]; } -void case_988() -#line 6749 "cs-parser.jay" +void case_992() +#line 6769 "cs-parser.jay" { yyVal = new Linq.OrderByAscending ((Linq.QueryBlock) current_block, (Expression)yyVals[-1+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_989() -#line 6754 "cs-parser.jay" +void case_993() +#line 6774 "cs-parser.jay" { yyVal = new Linq.OrderByDescending ((Linq.QueryBlock) current_block, (Expression)yyVals[-1+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_991() -#line 6766 "cs-parser.jay" +void case_995() +#line 6786 "cs-parser.jay" { yyVal = new Linq.ThenByAscending ((Linq.QueryBlock) current_block, (Expression)yyVals[-1+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_992() -#line 6771 "cs-parser.jay" +void case_996() +#line 6791 "cs-parser.jay" { yyVal = new Linq.ThenByDescending ((Linq.QueryBlock) current_block, (Expression)yyVals[-1+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_994() -#line 6781 "cs-parser.jay" +void case_998() +#line 6801 "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*/ @@ -9779,8 +9820,8 @@ void case_994() linq_clause_blocks.Push ((Linq.QueryBlock) current_block); } -void case_995() -#line 6797 "cs-parser.jay" +void case_999() +#line 6817 "cs-parser.jay" { var current_block = linq_clause_blocks.Pop (); var lt = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; @@ -9790,8 +9831,8 @@ void case_995() }; } -void case_998() -#line 6824 "cs-parser.jay" +void case_1002() +#line 6844 "cs-parser.jay" { current_container = current_type = new Class (current_container, new MemberName (""), Modifiers.PUBLIC, null); @@ -9820,8 +9861,8 @@ void case_998() start_block (lexer.Location); } -void case_999() -#line 6852 "cs-parser.jay" +void case_1003() +#line 6872 "cs-parser.jay" { --lexer.parsing_block; Method method = (Method) oob_stack.Pop (); @@ -9832,16 +9873,16 @@ void case_999() current_local_parameters = null; } -void case_1009() -#line 6895 "cs-parser.jay" +void case_1013() +#line 6915 "cs-parser.jay" { module.DocumentationBuilder.ParsedBuiltinType = (TypeExpression)yyVals[-1+yyTop]; module.DocumentationBuilder.ParsedParameters = (List)yyVals[0+yyTop]; yyVal = null; } -void case_1010() -#line 6901 "cs-parser.jay" +void case_1014() +#line 6921 "cs-parser.jay" { module.DocumentationBuilder.ParsedBuiltinType = (TypeExpression)yyVals[-3+yyTop]; module.DocumentationBuilder.ParsedParameters = (List)yyVals[0+yyTop]; @@ -9849,15 +9890,15 @@ void case_1010() yyVal = new MemberName (lt.Value); } -void case_1013() -#line 6916 "cs-parser.jay" +void case_1017() +#line 6936 "cs-parser.jay" { module.DocumentationBuilder.ParsedParameters = (List)yyVals[-1+yyTop]; yyVal = new MemberName ((MemberName) yyVals[-6+yyTop], MemberCache.IndexerNameAlias, Location.Null); } -void case_1014() -#line 6921 "cs-parser.jay" +void case_1018() +#line 6941 "cs-parser.jay" { var p = (List)yyVals[0+yyTop] ?? new List (1); p.Add (new DocumentationParameter ((FullNamedExpression) yyVals[-1+yyTop])); @@ -9866,8 +9907,8 @@ void case_1014() yyVal = null; } -void case_1015() -#line 6929 "cs-parser.jay" +void case_1019() +#line 6949 "cs-parser.jay" { var p = (List)yyVals[0+yyTop] ?? new List (1); p.Add (new DocumentationParameter ((FullNamedExpression) yyVals[-1+yyTop])); @@ -9876,8 +9917,8 @@ void case_1015() yyVal = null; } -void case_1016() -#line 6937 "cs-parser.jay" +void case_1020() +#line 6957 "cs-parser.jay" { var p = (List)yyVals[0+yyTop] ?? new List (1); module.DocumentationBuilder.ParsedParameters = p; @@ -9885,24 +9926,24 @@ void case_1016() yyVal = null; } -void case_1024() -#line 6975 "cs-parser.jay" +void case_1028() +#line 6995 "cs-parser.jay" { var parameters = new List (); parameters.Add ((DocumentationParameter) yyVals[0+yyTop]); yyVal = parameters; } -void case_1025() -#line 6981 "cs-parser.jay" +void case_1029() +#line 7001 "cs-parser.jay" { var parameters = yyVals[-2+yyTop] as List; parameters.Add ((DocumentationParameter) yyVals[0+yyTop]); yyVal = parameters; } -void case_1026() -#line 6990 "cs-parser.jay" +void case_1030() +#line 7010 "cs-parser.jay" { if (yyVals[-1+yyTop] != null) yyVal = new DocumentationParameter ((Parameter.Modifier) yyVals[-1+yyTop], (FullNamedExpression) yyVals[0+yyTop]); @@ -9957,64 +9998,64 @@ void case_1026() 213, 214, 214, 214, 234, 234, 235, 235, 236, 236, 216, 216, 233, 233, 233, 233, 233, 233, 233, 233, 218, 218, 218, 238, 238, 239, 239, 240, 240, 242, - 242, 242, 243, 243, 243, 243, 243, 244, 244, 160, - 160, 237, 237, 237, 237, 237, 249, 249, 248, 248, - 250, 250, 250, 250, 251, 219, 219, 219, 247, 247, - 247, 252, 252, 253, 253, 220, 221, 221, 222, 223, - 224, 224, 215, 215, 215, 215, 215, 258, 254, 225, - 259, 259, 260, 260, 261, 261, 262, 262, 262, 262, - 255, 255, 206, 206, 257, 257, 263, 263, 256, 256, - 82, 82, 264, 264, 265, 226, 266, 266, 266, 267, - 267, 267, 267, 267, 268, 194, 227, 227, 228, 228, - 229, 229, 230, 270, 231, 271, 231, 269, 269, 273, - 272, 217, 274, 274, 274, 274, 274, 274, 274, 274, - 274, 275, 275, 275, 275, 275, 275, 275, 275, 275, - 275, 275, 275, 275, 276, 276, 276, 276, 276, 276, - 276, 277, 277, 277, 277, 277, 277, 277, 277, 277, - 278, 278, 278, 278, 278, 279, 279, 279, 279, 279, - 279, 279, 279, 279, 280, 280, 280, 280, 280, 281, - 281, 281, 282, 282, 282, 283, 283, 283, 284, 284, - 284, 285, 285, 285, 286, 286, 287, 287, 287, 287, - 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, - 288, 289, 289, 290, 290, 290, 291, 291, 293, 292, - 292, 292, 294, 294, 296, 295, 297, 295, 298, 299, - 295, 300, 301, 295, 45, 45, 245, 245, 245, 245, - 232, 232, 232, 81, 303, 304, 305, 306, 307, 27, - 64, 64, 63, 63, 109, 109, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 67, 67, 67, 69, 69, 309, 309, 310, 310, - 311, 311, 312, 312, 312, 312, 203, 203, 313, 313, - 315, 110, 316, 316, 317, 158, 158, 319, 318, 314, - 314, 320, 320, 321, 321, 321, 321, 321, 325, 325, - 326, 326, 326, 323, 323, 323, 323, 323, 323, 323, - 323, 323, 323, 323, 323, 323, 327, 327, 327, 327, - 327, 327, 327, 327, 327, 327, 327, 327, 327, 341, - 341, 341, 341, 328, 342, 324, 343, 343, 344, 344, - 344, 344, 344, 344, 207, 207, 345, 48, 48, 347, - 322, 351, 322, 349, 349, 346, 346, 346, 346, 348, - 348, 355, 355, 354, 354, 356, 356, 350, 350, 352, - 352, 357, 357, 358, 353, 353, 353, 329, 329, 329, - 340, 340, 359, 360, 360, 330, 330, 361, 361, 361, - 364, 362, 362, 363, 363, 365, 365, 365, 368, 366, - 367, 367, 369, 369, 369, 331, 331, 331, 331, 370, - 370, 371, 371, 371, 375, 372, 378, 374, 374, 381, - 377, 377, 380, 380, 376, 376, 384, 383, 383, 379, - 379, 382, 382, 386, 385, 385, 373, 373, 387, 373, - 373, 373, 332, 332, 332, 332, 332, 332, 388, 389, - 389, 390, 390, 390, 391, 391, 391, 392, 392, 393, - 393, 393, 394, 394, 333, 333, 333, 333, 395, 395, - 397, 397, 396, 398, 396, 396, 396, 334, 335, 399, - 338, 336, 336, 401, 402, 339, 404, 405, 337, 337, - 337, 403, 403, 400, 400, 302, 302, 302, 302, 406, - 406, 408, 408, 410, 409, 411, 409, 407, 407, 407, - 407, 407, 415, 413, 416, 417, 413, 412, 412, 418, - 418, 418, 418, 418, 423, 419, 424, 420, 425, 426, - 427, 421, 429, 430, 431, 421, 428, 428, 433, 422, - 432, 436, 432, 435, 438, 435, 434, 434, 434, 437, - 437, 437, 414, 439, 414, 3, 3, 440, 3, 3, - 441, 441, 246, 246, 241, 241, 5, 442, 442, 442, - 442, 446, 442, 442, 442, 442, 443, 443, 444, 447, - 444, 445, 445, 448, 448, 449, + 242, 242, 243, 243, 243, 243, 243, 243, 244, 244, + 160, 160, 237, 237, 237, 237, 237, 249, 249, 248, + 248, 250, 250, 250, 250, 251, 219, 219, 219, 247, + 247, 247, 252, 252, 253, 253, 220, 221, 221, 222, + 223, 224, 224, 215, 215, 215, 215, 215, 258, 254, + 225, 259, 259, 260, 260, 261, 261, 262, 262, 262, + 262, 255, 255, 206, 206, 257, 257, 263, 263, 256, + 256, 82, 82, 264, 264, 265, 226, 266, 266, 266, + 267, 267, 267, 267, 267, 268, 194, 227, 227, 228, + 228, 229, 229, 230, 270, 231, 271, 231, 269, 269, + 273, 272, 217, 274, 274, 274, 274, 274, 274, 274, + 274, 274, 275, 275, 275, 275, 275, 275, 275, 275, + 275, 275, 275, 275, 275, 276, 276, 276, 276, 276, + 276, 276, 277, 277, 277, 277, 277, 277, 277, 277, + 277, 278, 278, 278, 278, 278, 279, 279, 279, 279, + 279, 279, 279, 279, 279, 280, 280, 280, 280, 280, + 281, 281, 281, 282, 282, 282, 283, 283, 283, 284, + 284, 284, 285, 285, 285, 286, 286, 287, 287, 287, + 287, 288, 288, 288, 288, 288, 288, 288, 288, 288, + 288, 288, 289, 289, 290, 290, 290, 290, 291, 291, + 293, 292, 292, 292, 294, 294, 296, 295, 297, 295, + 298, 295, 299, 300, 295, 301, 302, 295, 45, 45, + 245, 245, 245, 245, 232, 232, 232, 81, 304, 305, + 306, 307, 308, 27, 64, 64, 63, 63, 109, 109, + 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, + 309, 309, 309, 309, 309, 67, 67, 67, 69, 69, + 310, 310, 311, 311, 312, 312, 313, 313, 313, 313, + 203, 203, 314, 314, 316, 110, 317, 317, 318, 158, + 158, 320, 319, 315, 315, 321, 321, 322, 322, 322, + 322, 322, 326, 326, 327, 327, 327, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, + 328, 328, 328, 342, 342, 342, 342, 329, 343, 325, + 344, 344, 345, 345, 345, 345, 345, 345, 207, 207, + 346, 48, 48, 348, 323, 352, 323, 350, 350, 347, + 347, 347, 347, 349, 349, 356, 356, 355, 355, 357, + 357, 351, 351, 353, 353, 358, 358, 359, 354, 354, + 354, 330, 330, 330, 341, 341, 360, 361, 361, 331, + 331, 362, 362, 362, 365, 363, 363, 364, 364, 366, + 366, 366, 369, 367, 368, 368, 370, 370, 370, 332, + 332, 332, 332, 371, 371, 372, 372, 372, 376, 373, + 379, 375, 375, 382, 378, 378, 381, 381, 377, 377, + 385, 384, 384, 380, 380, 383, 383, 387, 386, 386, + 374, 374, 388, 374, 374, 374, 333, 333, 333, 333, + 333, 333, 389, 390, 390, 391, 391, 391, 392, 392, + 392, 393, 393, 394, 394, 394, 395, 395, 334, 334, + 334, 334, 396, 396, 398, 398, 397, 399, 397, 397, + 397, 335, 336, 400, 339, 337, 337, 402, 403, 340, + 405, 406, 338, 338, 338, 404, 404, 401, 401, 303, + 303, 303, 303, 407, 407, 409, 409, 411, 410, 412, + 410, 408, 408, 408, 408, 408, 416, 414, 417, 418, + 414, 413, 413, 419, 419, 419, 419, 419, 424, 420, + 425, 421, 426, 427, 428, 422, 430, 431, 432, 422, + 429, 429, 434, 423, 433, 437, 433, 436, 439, 436, + 435, 435, 435, 438, 438, 438, 415, 440, 415, 3, + 3, 441, 3, 3, 442, 442, 246, 246, 241, 241, + 5, 443, 443, 443, 443, 447, 443, 443, 443, 443, + 444, 444, 445, 448, 445, 446, 446, 449, 449, 450, }; static readonly short [] yyLen = { 2, 2, 0, 3, 1, 2, 4, 3, 1, 0, 1, @@ -10062,1423 +10103,1571 @@ void case_1026() 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 4, 4, 4, 3, 3, 4, 3, 4, 4, 4, 3, 0, 1, 3, 4, 0, 1, 1, - 3, 2, 3, 1, 2, 3, 2, 1, 1, 0, - 1, 1, 3, 3, 3, 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, 2, - 4, 2, 4, 0, 4, 0, 5, 0, 1, 0, - 4, 4, 1, 2, 2, 4, 2, 2, 2, 4, - 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 1, 3, 3, 3, 3, 3, - 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, - 1, 3, 3, 3, 3, 1, 3, 3, 3, 3, - 3, 3, 3, 3, 1, 3, 3, 3, 3, 1, - 3, 3, 1, 3, 3, 1, 3, 3, 1, 3, - 3, 1, 3, 3, 1, 3, 1, 5, 4, 5, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 1, 3, 3, 2, 1, 0, 1, 0, 2, - 1, 1, 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, + 3, 2, 3, 3, 1, 2, 3, 2, 1, 1, + 0, 1, 1, 3, 3, 3, 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, + 2, 4, 2, 4, 0, 4, 0, 5, 0, 1, + 0, 4, 4, 1, 2, 2, 4, 2, 2, 2, + 4, 2, 1, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 1, 3, 3, 3, 3, + 3, 3, 1, 3, 3, 3, 3, 3, 3, 3, + 3, 1, 3, 3, 3, 3, 1, 3, 3, 3, + 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, + 1, 3, 3, 1, 3, 3, 1, 3, 3, 1, + 3, 3, 1, 3, 3, 1, 3, 1, 5, 4, + 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 1, 3, 3, 2, 1, 1, 0, 1, + 0, 2, 1, 1, 1, 1, 0, 4, 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, 0, 2, 3, 0, 1, 1, 2, 4, 3, - 1, 3, 1, 3, 1, 1, 0, 1, 1, 1, - 0, 4, 1, 1, 0, 4, 1, 0, 4, 0, - 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, + 1, 1, 1, 1, 1, 0, 2, 3, 0, 1, + 1, 2, 4, 3, 1, 3, 1, 3, 1, 1, + 0, 1, 1, 1, 0, 4, 1, 1, 0, 4, + 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, 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, 1, 1, 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, 3, 1, 1, 1, 1, 1, 5, - 4, 7, 3, 6, 0, 4, 0, 4, 2, 0, - 4, 2, 3, 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, - 2, 3, 4, 3, 3, 3, 2, 3, 2, 4, - 4, 3, 0, 1, 3, 4, 5, 3, 1, 2, - 0, 1, 2, 0, 7, 3, 6, 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, 2, - 2, 1, 0, 3, 0, 0, 6, 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, 1, 1, 1, 0, 4, + 1, 2, 2, 2, 2, 2, 2, 1, 1, 2, + 1, 1, 1, 0, 6, 0, 7, 1, 1, 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, 3, 1, 1, + 1, 1, 1, 5, 4, 7, 3, 6, 0, 4, + 0, 4, 2, 0, 4, 2, 3, 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, 2, 3, 4, 3, 3, 3, + 2, 3, 2, 4, 4, 3, 0, 1, 3, 4, + 5, 3, 1, 2, 0, 1, 2, 0, 7, 3, + 6, 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, 2, 2, 1, 0, 3, 0, 0, + 6, 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, 996, 0, 0, 1000, 0, + 0, 0, 11, 14, 0, 1000, 0, 0, 1004, 0, 0, 15, 17, 385, 391, 398, 386, 388, 0, 387, 0, 394, 396, 383, 0, 390, 392, 384, 395, 397, - 393, 348, 1017, 0, 389, 1007, 0, 10, 1, 0, - 0, 0, 12, 0, 825, 0, 0, 0, 0, 0, + 393, 348, 1021, 0, 389, 1011, 0, 10, 1, 0, + 0, 0, 12, 0, 829, 0, 0, 0, 0, 0, 0, 0, 0, 426, 0, 0, 0, 0, 0, 0, - 0, 424, 0, 0, 0, 486, 0, 425, 0, 525, - 0, 920, 0, 0, 0, 670, 0, 0, 0, 0, - 0, 0, 0, 721, 0, 774, 0, 0, 0, 0, - 0, 0, 0, 0, 423, 0, 659, 0, 824, 0, - 757, 0, 0, 0, 0, 400, 401, 402, 403, 404, + 0, 424, 0, 0, 0, 487, 0, 425, 0, 526, + 0, 924, 0, 0, 0, 674, 0, 0, 0, 0, + 0, 0, 0, 725, 0, 778, 0, 0, 0, 0, + 0, 0, 0, 0, 423, 0, 663, 0, 828, 0, + 761, 0, 0, 0, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, - 415, 416, 417, 418, 421, 422, 666, 562, 0, 0, + 415, 416, 417, 418, 421, 422, 670, 563, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 667, 665, 668, 669, 741, 743, 0, 739, 742, 758, - 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, - 759, 0, 0, 0, 826, 827, 846, 847, 848, 849, - 883, 884, 885, 886, 887, 888, 0, 0, 0, 20, - 0, 0, 338, 0, 340, 1004, 16, 997, 0, 0, + 671, 669, 672, 673, 745, 747, 0, 743, 746, 762, + 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, + 763, 0, 0, 0, 830, 831, 850, 851, 852, 853, + 887, 888, 889, 890, 891, 892, 0, 0, 0, 20, + 0, 0, 338, 0, 340, 1008, 16, 1001, 0, 0, 246, 245, 242, 247, 248, 241, 260, 259, 252, 253, 249, 251, 250, 254, 243, 244, 255, 256, 262, 261, - 257, 258, 0, 0, 1020, 0, 1009, 0, 1008, 3, + 257, 258, 0, 0, 1024, 0, 1013, 0, 1012, 3, 55, 0, 0, 0, 44, 41, 43, 46, 47, 48, - 49, 50, 53, 13, 0, 0, 0, 889, 540, 427, - 428, 918, 0, 0, 0, 0, 0, 0, 0, 891, - 890, 0, 550, 544, 549, 773, 823, 744, 771, 770, - 772, 745, 746, 747, 748, 749, 750, 751, 752, 753, - 754, 755, 756, 0, 0, 0, 855, 0, 0, 0, - 789, 788, 0, 0, 0, 0, 0, 0, 0, 0, - 897, 0, 0, 0, 0, 399, 0, 0, 0, 899, - 904, 0, 0, 0, 542, 919, 0, 0, 0, 787, - 783, 0, 0, 0, 0, 0, 0, 0, 367, 0, - 0, 0, 0, 0, 0, 0, 0, 662, 0, 561, - 557, 0, 0, 559, 555, 569, 563, 570, 564, 558, - 554, 574, 568, 573, 567, 571, 565, 572, 566, 655, - 536, 0, 420, 419, 0, 0, 0, 0, 0, 775, - 0, 337, 0, 781, 782, 0, 489, 490, 0, 0, - 0, 779, 780, 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, 0, 0, 0, 0, 0, 999, 740, 790, 778, - 0, 821, 822, 952, 967, 0, 0, 953, 955, 0, - 979, 938, 936, 960, 0, 0, 958, 961, 962, 963, - 964, 939, 937, 0, 0, 0, 342, 0, 18, 0, - 0, 0, 1016, 0, 349, 0, 0, 0, 1018, 0, - 0, 42, 692, 698, 690, 0, 687, 697, 691, 689, - 688, 695, 693, 694, 700, 696, 699, 701, 0, 0, - 685, 45, 54, 488, 0, 484, 485, 0, 0, 482, - 0, 792, 0, 0, 0, 853, 0, 820, 818, 819, - 0, 0, 0, 674, 0, 894, 892, 675, 0, 0, - 510, 0, 0, 0, 501, 0, 505, 515, 517, 0, - 497, 0, 0, 0, 0, 0, 492, 0, 495, 0, - 499, 369, 896, 895, 0, 0, 898, 908, 0, 0, - 0, 909, 0, 0, 921, 0, 0, 786, 0, 379, - 375, 376, 0, 0, 374, 377, 378, 0, 0, 0, - 575, 0, 0, 546, 0, 657, 738, 0, 0, 0, - 732, 734, 735, 736, 431, 432, 0, 345, 346, 0, - 184, 183, 185, 0, 0, 0, 0, 371, 0, 642, - 0, 0, 902, 0, 0, 0, 436, 0, 439, 0, - 437, 0, 478, 0, 443, 0, 0, 0, 0, 467, - 470, 0, 0, 462, 469, 468, 631, 632, 633, 634, - 635, 636, 637, 638, 639, 641, 640, 579, 576, 581, - 578, 580, 577, 589, 585, 590, 586, 587, 0, 588, - 0, 594, 0, 595, 0, 601, 0, 602, 0, 603, - 0, 604, 0, 608, 0, 609, 0, 612, 0, 615, - 0, 618, 0, 621, 0, 624, 0, 626, 0, 0, - 514, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 951, 950, 0, 959, 0, 949, 0, 0, 339, 1014, - 1015, 363, 0, 0, 0, 360, 0, 0, 181, 0, - 0, 1024, 1010, 1012, 63, 61, 62, 0, 0, 56, - 0, 0, 64, 66, 30, 28, 0, 0, 0, 682, - 0, 686, 435, 0, 487, 0, 539, 0, 552, 170, - 192, 0, 0, 0, 160, 0, 0, 0, 171, 545, - 0, 924, 0, 875, 856, 0, 866, 0, 877, 0, - 893, 830, 0, 923, 0, 0, 500, 0, 516, 518, - 0, 0, 454, 0, 0, 450, 0, 0, 479, 0, - 520, 494, 0, 0, 145, 521, 143, 144, 523, 0, - 538, 537, 833, 0, 913, 0, 906, 0, 910, 529, - 0, 0, 0, 364, 0, 527, 0, 0, 541, 931, - 0, 927, 851, 0, 942, 0, 940, 0, 0, 672, - 673, 0, 0, 0, 737, 723, 724, 722, 733, 652, - 651, 656, 0, 0, 344, 645, 0, 0, 0, 560, - 556, 901, 900, 776, 440, 434, 438, 433, 543, 477, - 476, 475, 472, 471, 0, 466, 429, 430, 441, 442, - 0, 629, 0, 799, 0, 0, 654, 653, 968, 944, - 0, 969, 0, 954, 956, 965, 0, 980, 0, 948, - 994, 19, 341, 720, 719, 0, 718, 0, 359, 1026, - 182, 1021, 0, 0, 57, 0, 0, 0, 0, 0, - 0, 366, 0, 676, 0, 0, 83, 82, 0, 483, - 0, 0, 0, 0, 0, 175, 551, 0, 0, 0, - 0, 0, 867, 859, 857, 0, 878, 0, 0, 922, - 507, 506, 457, 0, 0, 1005, 1006, 446, 452, 0, - 455, 0, 481, 0, 0, 0, 0, 0, 831, 916, - 0, 907, 0, 535, 530, 0, 0, 526, 0, 930, - 0, 850, 943, 941, 0, 547, 0, 658, 650, 347, - 644, 643, 660, 474, 0, 465, 464, 463, 630, 628, - 145, 0, 815, 797, 0, 0, 0, 804, 0, 946, - 0, 973, 0, 0, 988, 989, 982, 0, 362, 361, - 1025, 0, 0, 65, 59, 0, 67, 29, 22, 0, - 0, 315, 0, 218, 0, 106, 0, 80, 809, 118, - 119, 0, 0, 0, 812, 190, 191, 0, 0, 0, - 0, 163, 172, 164, 166, 854, 0, 0, 0, 0, - 0, 876, 0, 0, 456, 458, 459, 453, 447, 451, - 0, 512, 0, 480, 491, 445, 524, 522, 0, 912, - 0, 0, 0, 531, 0, 933, 0, 0, 671, 663, - 0, 473, 0, 0, 795, 794, 791, 805, 945, 0, - 0, 0, 0, 966, 0, 995, 1013, 0, 0, 0, - 72, 73, 76, 77, 0, 332, 321, 320, 0, 677, - 214, 101, 0, 793, 813, 176, 0, 188, 0, 0, - 0, 852, 935, 0, 0, 0, 0, 858, 0, 879, - 829, 496, 493, 838, 0, 845, 0, 0, 836, 0, - 841, 0, 534, 533, 932, 928, 0, 661, 0, 0, - 947, 970, 0, 957, 0, 0, 984, 0, 78, 70, - 0, 0, 0, 316, 0, 0, 0, 0, 0, 177, - 0, 167, 165, 925, 868, 862, 860, 0, 0, 832, - 837, 0, 842, 917, 0, 0, 664, 0, 807, 0, - 974, 991, 992, 985, 58, 0, 74, 75, 0, 0, - 0, 0, 0, 0, 0, 814, 174, 0, 187, 0, - 0, 880, 844, 843, 0, 728, 915, 929, 816, 0, - 0, 0, 79, 0, 0, 333, 0, 0, 331, 317, - 0, 325, 382, 0, 380, 0, 678, 0, 707, 215, - 102, 178, 926, 864, 861, 0, 0, 873, 0, 971, - 0, 986, 0, 0, 0, 314, 0, 0, 704, 0, - 0, 0, 708, 0, 0, 0, 0, 0, 975, 27, - 26, 23, 334, 330, 0, 0, 326, 381, 710, 0, - 0, 0, 103, 863, 729, 0, 0, 0, 0, 32, - 318, 715, 0, 716, 713, 0, 711, 99, 0, 97, - 0, 0, 86, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 98, 146, 0, 0, 231, 223, 224, 225, - 226, 227, 228, 229, 230, 0, 0, 221, 0, 0, - 972, 0, 335, 329, 0, 0, 0, 679, 87, 0, - 725, 727, 274, 269, 273, 0, 216, 222, 0, 978, - 976, 714, 712, 0, 0, 0, 0, 0, 0, 0, - 283, 0, 0, 232, 0, 0, 240, 0, 158, 147, - 157, 0, 0, 104, 0, 0, 268, 0, 0, 267, - 0, 151, 0, 0, 353, 0, 351, 0, 0, 193, - 0, 0, 0, 0, 0, 680, 0, 217, 0, 109, - 107, 290, 0, 350, 0, 0, 0, 0, 122, 0, - 0, 0, 0, 0, 0, 156, 148, 0, 0, 197, - 0, 354, 0, 235, 234, 233, 0, 726, 105, 0, - 287, 0, 265, 124, 0, 263, 0, 0, 0, 126, - 0, 355, 0, 0, 194, 0, 0, 0, 352, 238, - 117, 115, 0, 0, 292, 0, 0, 0, 0, 0, - 152, 0, 271, 0, 0, 0, 0, 130, 0, 0, - 0, 0, 356, 357, 0, 0, 0, 0, 0, 112, - 307, 0, 288, 0, 0, 301, 0, 0, 0, 296, - 0, 142, 0, 0, 0, 0, 137, 0, 0, 284, - 0, 127, 0, 121, 131, 149, 155, 205, 0, 195, - 0, 0, 198, 0, 116, 0, 108, 113, 0, 0, - 0, 303, 0, 304, 293, 0, 0, 286, 297, 266, - 0, 0, 123, 138, 264, 0, 282, 0, 272, 276, - 133, 0, 0, 0, 202, 204, 0, 239, 114, 308, - 310, 289, 0, 0, 302, 299, 141, 139, 153, 281, - 0, 0, 0, 150, 206, 208, 196, 0, 0, 0, - 301, 0, 277, 279, 134, 0, 0, 199, 312, 313, - 309, 311, 300, 154, 0, 0, 212, 211, 210, 207, - 209, 0, 0, 0, 200, 278, 280, + 49, 50, 53, 13, 0, 0, 0, 893, 541, 427, + 428, 922, 0, 0, 0, 0, 0, 0, 0, 895, + 894, 0, 551, 545, 550, 777, 827, 748, 775, 774, + 776, 749, 750, 751, 752, 753, 754, 755, 756, 757, + 758, 759, 760, 0, 0, 0, 859, 0, 0, 0, + 793, 792, 0, 0, 0, 0, 0, 0, 0, 0, + 901, 0, 0, 0, 0, 399, 0, 0, 0, 903, + 908, 0, 0, 0, 543, 923, 0, 0, 0, 791, + 787, 0, 0, 0, 0, 0, 0, 0, 367, 0, + 0, 0, 0, 0, 0, 0, 0, 666, 0, 562, + 659, 0, 558, 0, 0, 560, 556, 570, 564, 571, + 565, 559, 555, 575, 569, 574, 568, 572, 566, 573, + 567, 657, 537, 0, 420, 419, 0, 0, 0, 0, + 0, 779, 0, 337, 0, 785, 786, 0, 490, 491, + 0, 0, 0, 783, 784, 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, 0, 0, 0, 0, 0, 1003, 744, + 794, 782, 0, 825, 826, 956, 971, 0, 0, 957, + 959, 0, 983, 942, 940, 964, 0, 0, 962, 965, + 966, 967, 968, 943, 941, 0, 0, 0, 342, 0, + 18, 0, 0, 0, 1020, 0, 349, 0, 0, 0, + 1022, 0, 0, 42, 696, 702, 694, 0, 691, 701, + 695, 693, 692, 699, 697, 698, 704, 700, 703, 705, + 0, 0, 689, 45, 54, 489, 0, 485, 486, 0, + 0, 483, 0, 796, 0, 0, 0, 857, 0, 824, + 822, 823, 0, 0, 0, 678, 0, 898, 896, 679, + 0, 0, 511, 0, 0, 0, 0, 502, 0, 506, + 516, 518, 0, 498, 0, 0, 0, 0, 0, 493, + 0, 496, 0, 500, 369, 900, 899, 0, 0, 902, + 912, 0, 0, 0, 913, 0, 0, 925, 0, 0, + 790, 0, 379, 375, 376, 0, 0, 374, 377, 378, + 0, 0, 0, 576, 0, 0, 547, 0, 661, 0, + 742, 0, 0, 0, 736, 738, 739, 740, 431, 432, + 0, 345, 346, 0, 184, 183, 185, 0, 648, 0, + 0, 0, 371, 0, 643, 0, 0, 906, 0, 0, + 0, 436, 0, 439, 0, 0, 437, 0, 0, 479, + 0, 443, 0, 0, 0, 0, 468, 471, 0, 0, + 463, 470, 469, 632, 633, 634, 635, 636, 637, 638, + 639, 640, 642, 641, 580, 577, 582, 579, 581, 578, + 590, 586, 591, 587, 588, 0, 589, 0, 595, 0, + 596, 0, 602, 0, 603, 0, 604, 0, 605, 0, + 609, 0, 610, 0, 613, 0, 616, 0, 619, 0, + 622, 0, 625, 0, 627, 0, 0, 515, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 955, 954, 0, + 963, 0, 953, 0, 0, 339, 1018, 1019, 363, 0, + 0, 0, 360, 0, 0, 181, 0, 0, 1028, 1014, + 1016, 63, 61, 62, 0, 0, 56, 0, 0, 64, + 66, 30, 28, 0, 0, 0, 686, 0, 690, 435, + 0, 488, 0, 540, 0, 553, 170, 192, 0, 0, + 0, 160, 0, 0, 0, 171, 546, 0, 928, 0, + 879, 860, 0, 870, 0, 881, 0, 897, 834, 0, + 927, 0, 0, 501, 0, 517, 519, 0, 0, 0, + 455, 0, 0, 450, 0, 0, 480, 0, 521, 495, + 0, 0, 145, 522, 143, 144, 524, 0, 539, 538, + 837, 0, 917, 0, 910, 0, 914, 530, 0, 0, + 0, 364, 0, 528, 0, 0, 542, 935, 0, 931, + 855, 0, 946, 0, 944, 0, 0, 676, 677, 0, + 0, 0, 654, 653, 660, 0, 741, 727, 728, 726, + 737, 658, 0, 344, 646, 0, 0, 0, 561, 557, + 905, 904, 780, 440, 434, 438, 433, 544, 478, 477, + 476, 473, 472, 0, 467, 429, 430, 441, 442, 0, + 630, 0, 803, 0, 0, 656, 655, 972, 948, 0, + 973, 0, 958, 960, 969, 0, 984, 0, 952, 998, + 19, 341, 724, 723, 0, 722, 0, 359, 1030, 182, + 1025, 0, 0, 57, 0, 0, 0, 0, 0, 0, + 366, 0, 680, 0, 0, 83, 82, 0, 484, 0, + 0, 0, 0, 0, 175, 552, 0, 0, 0, 0, + 0, 871, 863, 861, 0, 882, 0, 0, 926, 508, + 507, 0, 458, 0, 0, 1009, 1010, 446, 452, 0, + 456, 0, 482, 0, 0, 0, 0, 0, 835, 920, + 0, 911, 0, 536, 531, 0, 0, 527, 0, 934, + 0, 854, 947, 945, 0, 548, 0, 662, 652, 347, + 645, 644, 664, 475, 0, 466, 465, 464, 631, 629, + 145, 0, 819, 801, 0, 0, 0, 808, 0, 950, + 0, 977, 0, 0, 992, 993, 986, 0, 362, 361, + 1029, 0, 0, 65, 59, 0, 67, 29, 22, 0, + 0, 315, 0, 218, 0, 106, 0, 80, 813, 118, + 119, 0, 0, 0, 816, 190, 191, 0, 0, 0, + 0, 163, 172, 164, 166, 858, 0, 0, 0, 0, + 0, 880, 0, 0, 459, 460, 454, 457, 453, 447, + 451, 0, 513, 0, 481, 492, 445, 525, 523, 0, + 916, 0, 0, 0, 532, 0, 937, 0, 0, 675, + 667, 0, 474, 0, 0, 799, 798, 795, 809, 949, + 0, 0, 0, 0, 970, 0, 999, 1017, 0, 0, + 0, 72, 73, 76, 77, 0, 332, 321, 320, 0, + 681, 214, 101, 0, 797, 817, 176, 0, 188, 0, + 0, 0, 856, 939, 0, 0, 0, 0, 862, 0, + 883, 833, 497, 494, 842, 0, 849, 0, 0, 840, + 0, 845, 0, 535, 534, 936, 932, 0, 665, 0, + 0, 951, 974, 0, 961, 0, 0, 988, 0, 78, + 70, 0, 0, 0, 316, 0, 0, 0, 0, 0, + 177, 0, 167, 165, 929, 872, 866, 864, 0, 0, + 836, 841, 0, 846, 921, 0, 0, 668, 0, 811, + 0, 978, 995, 996, 989, 58, 0, 74, 75, 0, + 0, 0, 0, 0, 0, 0, 818, 174, 0, 187, + 0, 0, 884, 848, 847, 0, 732, 919, 933, 820, + 0, 0, 0, 79, 0, 0, 333, 0, 0, 331, + 317, 0, 325, 382, 0, 380, 0, 682, 0, 711, + 215, 102, 178, 930, 868, 865, 0, 0, 877, 0, + 975, 0, 990, 0, 0, 0, 314, 0, 0, 708, + 0, 0, 0, 712, 0, 0, 0, 0, 0, 979, + 27, 26, 23, 334, 330, 0, 0, 326, 381, 714, + 0, 0, 0, 103, 867, 733, 0, 0, 0, 0, + 32, 318, 719, 0, 720, 717, 0, 715, 99, 0, + 97, 0, 0, 86, 88, 89, 90, 91, 92, 93, + 94, 95, 96, 98, 146, 0, 0, 231, 223, 224, + 225, 226, 227, 228, 229, 230, 0, 0, 221, 0, + 0, 976, 0, 335, 329, 0, 0, 0, 683, 87, + 0, 729, 731, 274, 269, 273, 0, 216, 222, 0, + 982, 980, 718, 716, 0, 0, 0, 0, 0, 0, + 0, 283, 0, 0, 232, 0, 0, 240, 0, 158, + 147, 157, 0, 0, 104, 0, 0, 268, 0, 0, + 267, 0, 151, 0, 0, 353, 0, 351, 0, 0, + 193, 0, 0, 0, 0, 0, 684, 0, 217, 0, + 109, 107, 290, 0, 350, 0, 0, 0, 0, 122, + 0, 0, 0, 0, 0, 0, 156, 148, 0, 0, + 197, 0, 354, 0, 235, 234, 233, 0, 730, 105, + 0, 287, 0, 265, 124, 0, 263, 0, 0, 0, + 126, 0, 355, 0, 0, 194, 0, 0, 0, 352, + 238, 117, 115, 0, 0, 292, 0, 0, 0, 0, + 0, 152, 0, 271, 0, 0, 0, 0, 130, 0, + 0, 0, 0, 356, 357, 0, 0, 0, 0, 0, + 112, 307, 0, 288, 0, 0, 301, 0, 0, 0, + 296, 0, 142, 0, 0, 0, 0, 137, 0, 0, + 284, 0, 127, 0, 121, 131, 149, 155, 205, 0, + 195, 0, 0, 198, 0, 116, 0, 108, 113, 0, + 0, 0, 303, 0, 304, 293, 0, 0, 286, 297, + 266, 0, 0, 123, 138, 264, 0, 282, 0, 272, + 276, 133, 0, 0, 0, 202, 204, 0, 239, 114, + 308, 310, 289, 0, 0, 302, 299, 141, 139, 153, + 281, 0, 0, 0, 150, 206, 208, 196, 0, 0, + 0, 301, 0, 277, 279, 134, 0, 0, 199, 312, + 313, 309, 311, 300, 154, 0, 0, 212, 211, 210, + 207, 209, 0, 0, 0, 200, 278, 280, }; protected static readonly short [] yyDgoto = { 7, - 8, 49, 9, 50, 10, 11, 51, 232, 732, 694, - 12, 13, 52, 22, 23, 326, 235, 717, 890, 1085, - 1205, 1252, 1559, 887, 236, 237, 238, 239, 240, 241, - 242, 243, 710, 460, 711, 712, 993, 713, 714, 997, - 888, 1080, 1081, 1082, 267, 611, 1176, 110, 899, 1281, - 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 1290, 1291, - 1292, 1293, 479, 721, 1367, 1007, 1183, 1147, 1217, 1245, - 1309, 1379, 1213, 1433, 1410, 1458, 1459, 1460, 1009, 1456, - 1010, 778, 1343, 1421, 1394, 1446, 531, 1439, 1415, 1475, - 973, 1444, 1447, 1448, 1543, 1476, 1477, 1473, 1294, 1350, - 1320, 1368, 734, 1423, 1522, 1391, 1479, 1552, 480, 268, - 735, 736, 737, 738, 739, 697, 586, 1188, 698, 699, - 905, 1370, 1399, 1490, 1451, 1524, 1371, 1426, 1527, 1572, - 1491, 1492, 1570, 1556, 1557, 1005, 1146, 1244, 1306, 1353, - 1307, 1308, 1344, 1406, 1374, 1345, 329, 223, 1455, 1347, - 1440, 1437, 1295, 1324, 1364, 1519, 1481, 1325, 1520, 612, - 1565, 1566, 1363, 1436, 1412, 1468, 1463, 1434, 1500, 1505, - 1466, 1469, 1470, 1551, 1506, 1464, 1465, 1561, 1549, 1550, - 1002, 1089, 1210, 1181, 1237, 1211, 1212, 1255, 1143, 1234, - 1268, 551, 193, 112, 364, 195, 580, 455, 224, 1386, - 695, 696, 876, 892, 330, 420, 550, 305, 1214, 1215, + 8, 49, 9, 50, 10, 11, 51, 232, 739, 701, + 12, 13, 52, 22, 23, 326, 235, 724, 899, 1096, + 1216, 1263, 1570, 896, 236, 237, 238, 239, 240, 241, + 242, 243, 717, 462, 718, 719, 1003, 720, 721, 1007, + 897, 1091, 1092, 1093, 267, 618, 1187, 110, 908, 1292, + 1293, 1294, 1295, 1296, 1297, 1298, 1299, 1300, 1301, 1302, + 1303, 1304, 481, 728, 1378, 1017, 1194, 1158, 1228, 1256, + 1320, 1390, 1224, 1444, 1421, 1469, 1470, 1471, 1019, 1467, + 1020, 786, 1354, 1432, 1405, 1457, 534, 1450, 1426, 1486, + 983, 1455, 1458, 1459, 1554, 1487, 1488, 1484, 1305, 1361, + 1331, 1379, 741, 1434, 1533, 1402, 1490, 1563, 482, 268, + 742, 743, 744, 745, 746, 704, 591, 1199, 705, 706, + 914, 1381, 1410, 1501, 1462, 1535, 1382, 1437, 1538, 1583, + 1502, 1503, 1581, 1567, 1568, 1015, 1157, 1255, 1317, 1364, + 1318, 1319, 1355, 1417, 1385, 1356, 329, 223, 1466, 1358, + 1451, 1448, 1306, 1335, 1375, 1530, 1492, 1336, 1531, 619, + 1576, 1577, 1374, 1447, 1423, 1479, 1474, 1445, 1511, 1516, + 1477, 1480, 1481, 1562, 1517, 1475, 1476, 1572, 1560, 1561, + 1012, 1100, 1221, 1192, 1248, 1222, 1223, 1266, 1154, 1245, + 1279, 554, 193, 112, 366, 195, 584, 457, 224, 1397, + 702, 703, 885, 901, 330, 422, 553, 305, 1225, 1226, 45, 114, 306, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 253, 849, 774, 1045, 527, 764, - 928, 765, 766, 1038, 137, 198, 770, 614, 615, 616, - 843, 489, 490, 298, 1043, 772, 421, 300, 514, 515, - 516, 517, 520, 780, 314, 797, 798, 945, 264, 495, - 812, 265, 494, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 589, 590, - 591, 822, 823, 859, 153, 577, 814, 365, 1061, 565, - 1127, 154, 509, 1003, 1145, 1242, 1348, 481, 1218, 1219, - 1276, 1277, 877, 569, 342, 818, 1352, 1197, 1229, 570, - 571, 269, 270, 271, 157, 158, 159, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 171, - 284, 596, 172, 173, 322, 856, 670, 976, 1067, 902, - 728, 1013, 974, 977, 1105, 978, 1014, 1015, 285, 174, - 175, 176, 1117, 1049, 1118, 1119, 1120, 1162, 1121, 177, - 178, 179, 180, 745, 502, 746, 1108, 1031, 1109, 1225, - 1191, 1226, 747, 1030, 748, 1228, 1158, 181, 182, 183, - 184, 185, 186, 307, 541, 542, 1051, 1165, 318, 1029, - 912, 1190, 1058, 951, 1166, 187, 433, 188, 434, 979, - 1070, 435, 436, 686, 677, 678, 983, 437, 438, 439, - 440, 441, 984, 672, 981, 1170, 1248, 1311, 1072, 1201, - 1267, 868, 680, 869, 1136, 1075, 1137, 1202, 988, 17, - 19, 46, 47, 227, 700, 884, 456, 701, 702, + 133, 134, 135, 136, 253, 858, 782, 1056, 1046, 772, + 938, 773, 774, 1047, 137, 198, 778, 621, 622, 623, + 852, 491, 492, 298, 1054, 780, 423, 300, 517, 518, + 519, 520, 523, 788, 314, 805, 806, 955, 264, 497, + 820, 265, 496, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 594, 595, + 596, 825, 826, 868, 153, 581, 570, 822, 367, 1072, + 568, 1138, 154, 511, 1013, 1156, 1253, 1359, 483, 1229, + 1230, 1287, 1288, 886, 573, 344, 830, 1363, 1208, 1240, + 574, 575, 269, 270, 271, 157, 158, 159, 272, 273, + 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, + 171, 284, 601, 172, 173, 322, 865, 677, 986, 1078, + 911, 735, 1023, 984, 987, 1116, 988, 1024, 1025, 285, + 174, 175, 176, 1128, 1060, 1129, 1130, 1131, 1173, 1132, + 177, 178, 179, 180, 752, 504, 753, 1119, 1041, 1120, + 1236, 1202, 1237, 754, 1040, 755, 1239, 1169, 181, 182, + 183, 184, 185, 186, 307, 544, 545, 1062, 1176, 318, + 1039, 921, 1201, 1069, 961, 1177, 187, 435, 188, 436, + 989, 1081, 437, 438, 693, 684, 685, 993, 439, 440, + 441, 442, 443, 994, 679, 991, 1181, 1259, 1322, 1083, + 1212, 1278, 877, 687, 878, 1147, 1086, 1148, 1213, 998, + 17, 19, 46, 47, 227, 707, 893, 458, 708, 709, }; - protected static readonly short [] yySindex = { -179, - 0, -166, -118, -20, 19,16481, 0, 219, 0, 0, - 19, -20, 0, 0, 117, 0, 6607, 19, 0, -164, - 121, 0, 0, 0, 0, 0, 0, 0, 214, 0, - 310, 0, 0, 0, 3865, 0, 0, 0, 0, 0, - 0, 0, 0, 815, 0, 0, 839, 0, 0, 219, - 209, 19, 0, 276, 0, 171, 344, -183,15963, -156, - 272, 370, 6764, 0, 272, 272, 272, -149, 272, 272, - 741, 0, 8610, 272, 272, 0, 8767, 0, 389, 0, - -177, 0, 272, 401, 272, 0,16525,16525, 424, 272, - 272, -110, 9552, 0,14930, 0, 9683, 9814, 9945,10076, -10207,10338,10469,10600, 0, 208, 0, 8470, 0, 220, - 0, 462, -241, 613, 391, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1103, 708, - 159, 667, -260, 847, 501, 502, 570, 528, -272, 591, - 0, 0, 0, 0, 0, 0, 3566, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 62, 605, 274, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 593, 688, 209, 0, - -267, 585, 0, 594, 0, 0, 0, 0, 8470, 8470, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 627, 588, 0, 608, 0, 8, 0, 0, - 0, 209,16943, 919, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 813, 654,15066, 0, 0, 0, - 0, 0,14930, -213, -197, 803, 526, 613, 62, 0, - 0, 8470, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, -171, 266,15963, 0, 8470,14930, 712, - 0, 0, 731,14930,14930,13220, 486, 162, 748, 8627, - 0, 9552, 208, 862, 768, 0, 773, 8470,14930, 0, - 0, 838, 575, 272, 0, 0,14930, 389,14386, 0, - 0, 401,14930, 401, 360, 543, 925, 62, 0, 605, - 391, 943, 62,14930,14930,14930, 370, 0, 891, 0, - 0, 6921, -51, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 4449, 0, 0,16436, 360, 883, 889,14930, 0, - 858, 0, 125, 0, 0, 419, 0, 0, 859, 8924, - 7392, 0, 0,14930,14930,14930,14930,14930,14930,14930, -14930,14930,14930,14930,10731,10862,10993, 4614, 7409,11124, -11255,11386,11517,11648,11779,11910,12041,12172,12303,12434, -12565,12696,12827,12958,15746,14930, 0, 0, 0, 0, - 605, 0, 0, 0, 0,16525,16525, 0, 0, 62, - 0, 0, 0, 0, 721, 942, 0, 0, 0, 0, - 0, 0, 0, 209, 919, 878, 0, 884, 0, 858, - 627, 627, 0, 139, 0, 580, 627, 960, 0, -184, -16943, 0, 0, 0, 0, -162, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 296,16973, - 0, 0, 0, 0, 858, 0, 0, 931, 561, 0, - 963, 0, 965, 72, 389, 0, 272, 0, 0, 0, - 62,14386, -168, 0, 957, 0, 0, 0, 55, 105, - 0, 616, 0, 975, 0, 971, 0, 0, 0, 705, - 0, 8294, 770,14930, 748,14250, 0, 7549, 0, 401, - 0, 0, 0, 0, 127, 130, 0, 0, 390, 389, - -148, 0, 4290, 977, 0, 186, 62, 0, 187, 0, - 0, 0,14930, 1063, 0, 0, 0,14930, 1064, 985, - 0, 990, 992, 0,16436, 0, 0, -165, -301, 6921, - 0, 0, 0, 0, 0, 0, -154, 0, 0, 242, - 0, 0, 0, 401, 360, 62, 8784, 0, 991, 0, - 994,13089, 0, 1111, 993, 6921, 0, -297, 0, 415, - 0, 858, 0, 37, 0,14930,14930, 999, 1115, 0, - 0, 113, -90, 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, 708, 0, - 708, 0, 159, 0, 159, 0, 667, 0, 667, 0, - 667, 0, 667, 0, -260, 0, -260, 0, 847, 0, - 501, 0, 502, 0, 570, 0, 528, 0, -174, -150, - 0, 9081, 1078, 62, 1079, 62, 9081, 9081, 995,14930, - 0, 0, 942, 0, 62, 0, 655, 858, 0, 0, - 0, 0, 552, 209, 311, 0, 8784, 580, 0, 1002, - 1001, 0, 0, 0, 0, 0, 0, 360, 1004, 0, - 1003, 1008, 0, 0, 0, 0, 1011, 8941, 967, 0, - 497, 0, 0, 81, 0,15066, 0, 1005, 0, 0, - 0, 710, 161, 1015, 0, 1016, 1017, 1021, 0, 0, -14930, 0, 62, 0, 0, 273, 0, 1022, 0, 503, - 0, 0, 6764, 0, 6764, 8453, 0,13220, 0, 0, -14522, 205, 0, -27, -50, 0, 969, 966, 0, 109, - 0, 0, 1027, 1026, 0, 0, 0, 0, 0, 1029, - 0, 0, 0, 1034, 0, 7566, 0, 389, 0, 0, - 401, 584, 983, 0, 106, 0, 1035, 1033, 0, 0, - 6764, 0, 0, 6764, 0,14930, 0,14930, 8470, 0, - 0, 389, 1036, -154, 0, 0, 0, 0, 0, 0, - 0, 0,14930, 8470, 0, 0, 62,16436, 1066, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,14114, 0, 0, 0, 0, 0, - 7706, 0, 9238, 0, 7863, 1037, 0, 0, 0, 0, - 1116, 0, 1119, 0, 0, 0, 935, 0, 1040, 0, - 0, 0, 0, 0, 0, 998, 0, 139, 0, 0, - 0, 0, 580, 580, 0, 878, 1047, 1049, 1006, 1054, - 967, 0, 1048, 0, 1170, 1174, 0, 0,14930, 0, -14658, 1057, 710, 8784, 8470, 0, 0, 315, 1176, 1178, - 189, 1056, 0, 0, 0,14930, 0,14930, 1155, 0, - 0, 0, 0, 76,14794, 0, 0, 0, 0, 7999, - 0, 1188, 0, 605,14930, 1080, 8453, 1081, 0, 0, - 62, 0, 249, 0, 0, 858, 983, 0, 62, 0, - -146, 0, 0, 0, 1082, 0, 1107, 0, 0, 0, - 0, 0, 0, 0, 790, 0, 0, 0, 0, 0, - 0, 8627, 0, 0, 62, -78, 1037, 0, 9081, 0, - 9081, 0, 1100, 9081, 0, 0, 0, 472, 0, 0, - 0, 1083, 878, 0, 0,15202, 0, 0, 0, 1084, - 7723, 0, 967, 0, 967, 0, 967, 0, 0, 0, - 0, 62, 1085, 1057, 0, 0, 0, -161, -159, 1086, - 1088, 0, 0, 0, 0, 0, 1087, 8453, 1037, -150, -14930, 0, 1093, 6764, 0, 0, 0, 0, 0, 0, - 1096, 0, 748, 0, 0, 0, 0, 0, -203, 0, - 1098, 858, 983, 0, 983, 0, 1037, 1099, 0, 0, - -154, 0, 1045, 1076, 0, 0, 0, 0, 0, 9081, - 1126, 9081, 9081, 0,14930, 0, 0, 1008, 212, 853, - 0, 0, 0, 0, -20, 0, 0, 0, 1108, 0, - 0, 0, 1104, 0, 0, 0, 582, 0, 1109, 1232, - 1235, 0, 0, 1037, 1120, 1037, 1122, 0, 1121, 0, - 0, 0, 0, 0,14930, 0, 1130, -204, 0, -204, - 0, 1244, 0, 0, 0, 0, -154, 0,14930, 8158, - 0, 0, 1154, 0, 937, 1129, 0, 1134, 0, 0, -15202, 19, 72, 0, 1141, 1141, 1141,14658, 1147, 0, -14930, 0, 0, 0, 0, 0, 0, 6764, -80, 0, - 0, 6921, 0, 0, 1151, 6764, 0, 1150, 0, 9081, - 0, 0, 0, 0, 0,14930, 0, 0, 209, 1149, - 209, 8470, 1183, 1183, 1183, 0, 0,14930, 0, 6764, - 9395, 0, 0, 0, 6921, 0, 0, 0, 0, 1175, - 9081,14930, 0, 209, 1156, 0, 1113, 926, 0, 0, - 1153, 0, 0, 100, 0, 1123, 0, 1183, 0, 0, - 0, 0, 0, 0, 0, 1161, 1022, 0, 6921, 0, - 1177, 0, -144, 1183, 1278, 0, 1172, 209, 0, 8470, - 54, 1171, 0, 1179, 1180, 6764, 1182, 9081, 0, 0, - 0, 0, 0, 0, 1164, 1181, 0, 0, 0,16042, - 191, 209, 0, 0, 0, 1195, 9081, 1185,14930, 0, - 0, 0, 1187, 0, 0, 1189, 0, 0,16973, 0, - 1196, 191, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, -242,16973, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1198, 209, 0, 191, 62, - 0, 1195, 0, 0, 1184,16042,16208, 0, 0, -234, - 0, 0, 0, 0, 0,16240, 0, 0, 1203, 0, - 0, 0, 0, 8470, 8470, -143, 8627, 430, 401, 1216, - 0, 360,14039, 0, 1267, 0, 0, 1181, 0, 0, - 0, 6921, 1181, 0, -153, -152, 0, 8470, -145, 0, - 8470, 0, 1158, 1202, 0, 360, 0, -172, 1881, 0, - 1205, 1160, 34, 387, 3865, 0, 1212, 0, 1181, 0, - 0, 0, 360, 0, 1215, 1166, 1214, 1210, 0, 1217, - 1169, 1218, 72, 1209, 1219, 0, 0, 1222, 1228, 0, - 858, 0, 886, 0, 0, 0, 1226, 0, 0, -95, - 0, 1220, 0, 0, 1229, 0, 1231, 1227, 1233, 0, - 1230, 0, 72, 72, 0, 72, 1234, 1237, 0, 0, - 0, 0, 1238, 199, 0, 1239, 72, 1355, 1240, 72, - 0, -234, 0, 8453, 1197, 1241, 1230, 0, 1249, 1250, - 206, 1246, 0, 0, 72,14658, 1206, 1247, 1238, 0, - 0,16973, 0, 209, 209, 0, 1213, 1252, 1239, 0, - 1260, 0,14930, 1221, 1257, 1240, 0, 1262, 72, 0, - 59, 0, 1255, 0, 0, 0, 0, 0,16973, 0, - 206, 206, 0, 1265, 0, -95, 0, 0, 399, 1270, -16973, 0,16973, 0, 0, 8453, 1259, 0, 0, 0, - 1271, 1229, 0, 0, 0, 1272, 0, 346, 0, 0, - 0, 1183, 940, 1274, 0, 0, 1276, 0, 0, 0, - 0, 0, 1330, 1383, 0, 0, 0, 0, 0, 0, - 1280, 1281, 8453, 0, 0, 0, 0, 206, 535, 535, - 0, 1183, 0, 0, 0, 70, 70, 0, 0, 0, - 0, 0, 0, 0,14250,14250, 0, 0, 0, 0, - 0, 1286, 1277, 1283, 0, 0, 0, + protected static readonly short [] yySindex = { -85, + 0, -159, -111, -224, -22,16985, 0, 142, 0, 0, + -22, -224, 0, 0, -14, 0, 6839, -22, 0, -150, + 60, 0, 0, 0, 0, 0, 0, 0, 84, 0, + 157, 0, 0, 0, 3878, 0, 0, 0, 0, 0, + 0, 0, 0, -48, 0, 0, 411, 0, 0, 142, + 130, -22, 0, 170, 0, 215, 213, -189,16414, -123, + 159, 357, 6996, 0, 159, 159, 159, -167, 159, 159, + 646, 0, 8842, 159, 159, 0, 8999, 0, 434, 0, + -181, 0, 159, 216, 159, 0,17004,17004, 484, 159, + 159, -128, 9915, 0,15381, 0,10046,10177,10308,10439, +10570,10701,10832,10963, 0, 231, 0, 8407, 0, 183, + 0, 132, 538, 682, -236, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1082, 577, + 249, 262, 474, 672, 498, 473, 503, 494, -285, 530, + 0, 0, 0, 0, 0, 0, 3579, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 132, 535, 149, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, -180, 330, 130, 0, + 478, 354, 0, 507, 0, 0, 0, 0, 8407, 8407, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 565, 527, 0, 594, 0, -239, 0, 0, + 0, 130,17540, 470, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 750, 132,15517, 0, 0, 0, + 0, 0,15381, -174, -165, 741, 304, 682, 132, 0, + 0, 8407, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -175, 180,16414, 0, 8407,15381, 668, + 0, 0, 671,15381,15381,13714, 622, -64, 656, 8702, + 0, 9915, 231, 825, 685, 0, 721, 8407,15381, 0, + 0, 765, 616, 159, 0, 0,15381, 434,14837, 0, + 0, 216,15381, 216, 179, 543, 873, 132, 0, 535, + -236, 881, 132,15381,15381,15381, 357, 0, 836, 0, + 0,11094, 0, 7153, -267, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 4462, 0, 0,16811, 179, 814, 833, +15381, 0, 799, 0, 203, 0, 0, 279, 0, 0, + 798, 9156, 7624, 0, 0,15381,15381,15381,15381,15381, +15381,15381,15381,15381,15381,15381,11225,11356,11487, 4621, + 4786,11618,11749,11880,12011,12142,12273,12404,12535,12666, +12797,12928,13059,13190,13321,13452,16197,15381, 0, 0, + 0, 0, 535, 0, 0, 0, 0,17004,17004, 0, + 0, 132, 0, 0, 0, 0, 362, 872, 0, 0, + 0, 0, 0, 0, 0, 130, 470, 805, 0, 819, + 0, 799, 565, 565, 0, 64, 0, 625, 565, 874, + 0, -171,17540, 0, 0, 0, 0, -142, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 45,17570, 0, 0, 0, 0, 799, 0, 0, 870, + 680, 0, 888, 0, 890, 106, 434, 0, 159, 0, + 0, 0, 132,14837, -186, 0, 871, 0, 0, 0, + 54, 89, 0, 304, 884, 0, 906, 0, 879, 0, + 0, 0, 712, 0, 8526, 752,15381, 656,14701, 0, + 7781, 0, 216, 0, 0, 0, 0, 129, 134, 0, + 0, 355, 434, 512, 0, 4144, 904, 0, 137, 132, + 0, 156, 0, 0, 0,15381, 984, 0, 0, 0, +15381, 993, 916, 0, 920, 921, 0,16811, 0, 175, + 0, -139, -284, 7153, 0, 0, 0, 0, 0, 0, + 175, 0, 0, -275, 0, 0, 0, 216, 0, 179, + 132, 8859, 0, 926, 0, 923,13583, 0, 1046, 927, + 7153, 0, 878, 0, 799, 883, 0, 799, 799, 0, + 108, 0,15381,15381, 936, 1056, 0, 0, -262, 82, + 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, 577, 0, 577, 0, 249, + 0, 249, 0, 262, 0, 262, 0, 262, 0, 262, + 0, 474, 0, 474, 0, 672, 0, 498, 0, 473, + 0, 503, 0, 494, 0, -40, -163, 0, 9313, 1020, + 132, 1021, 132, 9313, 9313, 935,15381, 0, 0, 872, + 0, 132, 0, 504, 799, 0, 0, 0, 0, -164, + 130, -53, 0, 8859, 625, 0, 945, 944, 0, 0, + 0, 0, 0, 0, 179, 946, 0, 949, 952, 0, + 0, 0, 0, 954, 9016, 910, 0, 421, 0, 0, + 437, 0,15517, 0, 950, 0, 0, 0, 665, 105, + 958, 0, 959, 960, 962, 0, 0,15381, 0, 132, + 0, 0, 758, 0, 964, 0, -158, 0, 0, 6996, + 0, 6996, 8685, 0,13714, 0, 0, 9784,14973, 220, + 0, -274, 102, 0, 903, 917, 0, 124, 0, 0, + 967, 969, 0, 0, 0, 0, 0, 970, 0, 0, + 0, 974, 0, 7641, 0, 434, 0, 0, 216, 546, + 924, 0, 199, 0, 975, 973, 0, 0, 6996, 0, + 0, 6996, 0,15381, 0,15381, 8407, 0, 0, 434, + 976, 175, 0, 0, 0,15381, 0, 0, 0, 0, + 0, 0, 8407, 0, 0, 132,16811, 1007, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,14565, 0, 0, 0, 0, 0, 7938, + 0, 9470, 0, 8095, 977, 0, 0, 0, 0, 1058, + 0, 1059, 0, 0, 0, 394, 0, 980, 0, 0, + 0, 0, 0, 0, 939, 0, 64, 0, 0, 0, + 0, 625, 625, 0, 805, 988, 989, 947, 996, 910, + 0, 992, 0, 1108, 1112, 0, 0,15381, 0,15109, + 995, 665, 8859, 8407, 0, 0, 214, 1114, 1115, 163, + 991, 0, 0, 0,15381, 0,15381, 1097, 0, 0, + 0,15245, 0, 147,15245, 0, 0, 0, 0, 8231, + 0, 1122, 0, 535,15381, 1012, 8685, 1015, 0, 0, + 132, 0, 202, 0, 0, 799, 924, 0, 132, 0, + -144, 0, 0, 0, 1008, 0, 1041, 0, 0, 0, + 0, 0, 0, 0, 667, 0, 0, 0, 0, 0, + 0, 8702, 0, 0, 132, 310, 977, 0, 9313, 0, + 9313, 0, 1034, 9313, 0, 0, 0, 696, 0, 0, + 0, 1016, 805, 0, 0,15653, 0, 0, 0, 1018, + 7798, 0, 910, 0, 910, 0, 910, 0, 0, 0, + 0, 132, 1011, 995, 0, 0, 0, -148, -137, 1017, + 1024, 0, 0, 0, 0, 0, 1014, 8685, 977, -163, +15381, 0, 1022, 6996, 0, 0, 0, 0, 0, 0, + 0, 1025, 0, 656, 0, 0, 0, 0, 0, -179, + 0, 1028, 799, 924, 0, 924, 0, 977, 1029, 0, + 0, 175, 0, 979, 1026, 0, 0, 0, 0, 0, + 9313, 1061, 9313, 9313, 0,15381, 0, 0, 952, 238, + 747, 0, 0, 0, 0, -224, 0, 0, 0, 1036, + 0, 0, 0, 1030, 0, 0, 0, -249, 0, 1031, + 1149, 1150, 0, 0, 977, 1037, 977, 1042, 0, 1039, + 0, 0, 0, 0, 0,15381, 0, 1048, -200, 0, + -200, 0, 1162, 0, 0, 0, 0, 175, 0,15381, + 8390, 0, 0, 1072, 0, 737, 1049, 0, 1050, 0, + 0,15653, -22, 106, 0, 1047, 1047, 1047,15109, 1054, + 0,15381, 0, 0, 0, 0, 0, 0, 6996, 59, + 0, 0, 7153, 0, 0, 1060, 6996, 0, 1055, 0, + 9313, 0, 0, 0, 0, 0,15381, 0, 0, 130, + 1067, 130, 8407, 1087, 1087, 1087, 0, 0,15381, 0, + 6996, 9627, 0, 0, 0, 7153, 0, 0, 0, 0, + 1083, 9313,15381, 0, 130, 1062, 0, 1023, 745, 0, + 0, 1068, 0, 0, 112, 0, 1027, 0, 1087, 0, + 0, 0, 0, 0, 0, 0, 1074, 964, 0, 7153, + 0, 1084, 0, -67, 1087, 1177, 0, 1076, 130, 0, + 8407, 78, 1080, 0, 1081, 1098, 6996, 1096, 9313, 0, + 0, 0, 0, 0, 0, 1070, 1090, 0, 0, 0, +16493, 150, 130, 0, 0, 0, 1113, 9313, 1092,15381, + 0, 0, 0, 1099, 0, 0, 1101, 0, 0,17570, + 0, 1103, 150, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 24,17570, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1104, 130, 0, 150, + 132, 0, 1113, 0, 0, 1105,16493,16659, 0, 0, + 440, 0, 0, 0, 0, 0,16691, 0, 0, 1110, + 0, 0, 0, 0, 8407, 8407, 393, 8702, 408, 216, + 1139, 0, 179,14501, 0, 1174, 0, 0, 1090, 0, + 0, 0, 7153, 1090, 0, -134, -133, 0, 8407, -132, + 0, 8407, 0, 1063, 1109, 0, 179, 0, -184,14433, + 0, 1126, 1064, 73, 455, 3878, 0, 1128, 0, 1090, + 0, 0, 0, 179, 0, 1116, 1079, 1127, 1129, 0, + 1132, 1086, 1135, 106, 1130, 1134, 0, 0, 1137, 1142, + 0, 799, 0, 826, 0, 0, 0, 1144, 0, 0, + -127, 0, 1151, 0, 0, 1141, 0, 1145, 1161, 1163, + 0, 1160, 0, 106, 106, 0, 106, 1140, 1165, 0, + 0, 0, 0, 1166, 154, 0, 1170, 106, 1280, 1172, + 106, 0, 440, 0, 8685, 1121, 1176, 1160, 0, 1181, + 1182, 168, 1185, 0, 0, 106,15109, 1138, 1186, 1166, + 0, 0,17570, 0, 130, 130, 0, 1143, 1188, 1170, + 0, 1193, 0,15381, 1148, 1191, 1172, 0, 1196, 106, + 0, 91, 0, 1194, 0, 0, 0, 0, 0,17570, + 0, 168, 168, 0, 1197, 0, -127, 0, 0, 309, + 1204,17570, 0,17570, 0, 0, 8685, 1195, 0, 0, + 0, 1208, 1141, 0, 0, 0, 1207, 0, 232, 0, + 0, 0, 1087, 885, 1213, 0, 0, 1215, 0, 0, + 0, 0, 0, 1268, 1321, 0, 0, 0, 0, 0, + 0, 1214, 1216, 8685, 0, 0, 0, 0, 168, 547, + 547, 0, 1087, 0, 0, 0, 40, 40, 0, 0, + 0, 0, 0, 0, 0,14701,14701, 0, 0, 0, + 0, 0, 1222, 1220, 1221, 0, 0, 0, }; - protected static readonly short [] yyRindex = { 3064, - 0, 0, 7078, 3064, 0, 0, 0, 1657, 0, 0, - 3217, 1928, 0, 0, 0, 0, 0, 3217, 0, 0, - 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1658, 0, 0, 1658, 0, 0, 1657, - 1258, 3111, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1292, 0, 0, 0, 0, 0, 0, 0, 0, - 9098, 0, 1287, 0, 0, 0, 1287, 0, 0, 0, - 0, 0, 0, 53, 0, 0, 0, 0, 0, 0, - 0, 0, 231, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 4607, 0, 0, 0, 0, - 0, 0, 284, 4700, 4042, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 4856, 4924, - 5164, 5368, 5708, 5912, 6048, 1473, 6252, 520, 4787, 964, - 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 258, 0, 0, 0, 0, 0, 0, 0, + protected static readonly short [] yyRindex = { 1382, + 0, 0, 7310, 1382, 0, 0, 0, 1594, 0, 0, + 3248, 987, 0, 0, 0, 0, 0, 3248, 0, 0, + 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1595, 0, 0, 1595, 0, 0, 1594, + 1542, 2044, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1229, 0, 0, 0, 0, 0, 0, 0, 0, + 9173, 0, 1223, 0, 0, 0, 1223, 0, 0, 0, + 0, 0, 0, 263, 0, 0, 0, 0, 0, 0, + 0, 0, 224, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 4779, 0, 0, 0, 0, + 0, 0, 291, 4872, 4214, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 5028, 5096, + 5336, 5540, 5880, 6084, 6220, 6356, 1173, 6560, 1441, 2922, + 0, 0, 0, 0, 0, 0, 57, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 235, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3291, 0, - 666, 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, 0, - 0, 0, 1658, 57, 0, 0, 0, 0, 0, 0, - 0, 3334, 392, 3377, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 3653, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 610, 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, 0, - 0, 0, 0, 0, 0, 1294, 0, 0, 0, 0, - 0, 0, 3653, 1288, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 2445, 0, 2809, 324, 2575, 0, 0, 0, 2705, - 2575, 0, 0, 0, 0, 0, 1292, 0, 0, 0, - 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1307, 1321, 0, 0, 1287, 0, - 3653, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 202, 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, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1606, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 3933, 0, 0, 0, 0, - 0, 0, 0, 3440, 3487, 0, 0, 0, 0, 2275, - 1658, 1658, 0, -201, 0, 7880, 1658, 1666, 0, 0, - 275, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 500,15895, - 0, 0, 0, 0, 3653, 0, 0, 0, 0, 0, - 0, 0, 0,16284, 0, 0, 0, 0, 0, 0, - 0, 779, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 579, 855, 0, 0, 1312, 0, 0, 0, 0, - 0, 137, 0, 0, 4130, 1310, 0, 0, 0, 149, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1777, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1307, 0, 0, 6447, 0, 147, - 0, 0, 0, 0, 0, 0,15338, 0, 0, 0, - 0, 0, 0, -12, 550, 0, 0, 0, 1313, 0, - 0, 0, 0, 1288, 0, 0, 0, 3653, 0, 3653, - 0, 4289, 0, 0, 0, 0, 0, -202, 0, 0, - 0, 0, 241, 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, 5028, 0, - 5096, 0, 5232, 0, 5300, 0, 5436, 0, 5504, 0, - 5572, 0, 5640, 0, 5776, 0, 5844, 0, 5980, 0, - 6116, 0, 6184, 0, 6320, 0, 6388, 0, 0, 717, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 3933, 0, 0, 0, 0, 2275, 0, 0, - 0, 0, 1268,13382, 0, 0, 0, 9255, 0, 0, - 841, 0, 0, 0, 0, 0, 0, 834, 751, 0, - 0, 1317, 0, 0, 0, 0, 2021, 0, 0, 0, - 0, 0, 0,15474, 0, 0, 0, 856, 0, 0, - 0, 9412,16360, 0, 0, 863, 871, 872, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 780, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1333, 0, 0, - 0, 3719, 0, 0, 154, 0, 110, 3812, 0, 0, - 0, 0, 0, 1326, 0, 0, 0, 0, 0, 1334, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 328, 682, 0, 0, 0, 0, 0, 1336, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,15338, 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, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -141, 0, 737, 0, - 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, - 0, 0, 9412, 8175, 0, 1339, 0, 806, 0, 0, - 0, 0, 1345, 0, 1296, 1305, 0, 0, 0, 0, - 0, 1348,16549, 0, 0, 0, 0,16392, 0, 0, - 0, 877, 0, 0, 0, 0, 0, 0, 2149, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 3971, 0, 4448, 1357, 0, 0, 0, - 1354, 0, 0, 0, 0, 364, 0, 0, 0, 0, - 877, 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, 632, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 882, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1351, 0, 0, 0, 0, 0, 898, - 899, 0, 0, 0, 0, 0, 0, 0, 1356, 791, - 1359, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 4130, 0, 0, 0, 0, 0, 1362, 0, - 0, 364, 0, 0, 951, 0, 1356, 0, 0, 0, -15338, 0, 807, 826, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1317,13221, 0, - 0, 0, 0, 0,16600, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 800, 0, 819, 0, - 0, 0, 0, 1360, 0, 827, 1364, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1363, 0, 7235, - 0, 1366, 0, 0, 0, 0,15338, 0, 0, 0, - 0, 0, 0, 0, 355, 753, 0, 0, 0, 0, - 0,16643,16284, 0, 514, 514, 514, 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, 0, 0, 0,16712, 0, - -33, 0, 1369, 1369, 1369, 0, 0, 0, 0, 0, - 1370, 0, 0, 0, -220, 0, 0, 0, 0, 0, - 0, 0, 0,16755, 0, 0, 0,13685, 0, 0, - 1375, 0, 0, 516, 0, 0, 0, 589, 0, 0, - 0, 0, 0, 0, 0, 0, 1373, 0, 1378, 0, - 0, 0, 3174, 1371, 592, 0, 0, 312, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 2978, 0, 0, 0, 0, -13487,13771, 0, 0, 0, 793, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 511, 0, 0,16066, 0, - 0,13586, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,16134, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,13865, 0,13487, 0, - 0, 793, 0, 0, 0, 0, 500, 0, 0, 0, - 0, 0, 0, 0, 0, 500, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,13977, 531, - 0,13907, 0, 0, 0,14007, 0, 2978, 0, 0, - 0, 1378, 2978, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 301, 0, 1381, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2978, 0, - 0, 0, 609, 0, 676, 0, 0, 0, 0, 0, - 0, 0,16284, 900, 0, 0, 0, 0, 0, 0, - 1365, 0, 94, 0, 0, 0, 0, 0, 0, 0, - 0, 906, 0, 0, 0, 0, 0, 0, 0, 0, - 1376, 0,16284,16284, 0,16316, 0, 0, 0, 0, - 0, 0, 1377,16903, 0, 1380,16284,15610, 1382,16284, - 0, 0, 0, 0, 0, 0, 1384, 0, 0, 0, -16873, 0, 0, 0,16284, 0, 0, 0, 1385, 0, - 0, 450, 0,13939,16835, 0, 0, 0, 1386, 0, - 0, 0, 0, 0, 0, 1387, 0, 0,16284, 0, - 558, 0, 907, 0, 0, 0, 0, 0, 961, 0, - 1131,16797, 0, 0, 0, 0, 0, 0, 0, 0, - 1434, 0, 1488, 0, 0, 0, 910, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 602, 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,16873, 471,15782, - 0, 602, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1310, 1310, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1595, 96, 0, 0, 0, 0, 0, 0, + 0, 3371, 555, 3414, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 3825, 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, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1230, 0, 0, 0, 0, + 0, 0, 3825, 1224, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2454, 0, 2964, 647, 2584, 0, 0, 0, 2714, + 2584, 0, 0, 0, 0, 0, 1229, 0, 0, 0, + 0, 0, 0, -18, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1231, 2818, 0, 0, + 1223, 0, 3825, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 22, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1627, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 3946, 0, 0, + 0, 0, 0, 0, 0, 3457, 3500, 0, 0, 0, + 0, 2308, 1595, 1595, 0, 10, 0, 7955, 1595, 1601, + 0, 0, 245, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 449,16346, 0, 0, 0, 0, 3825, 0, 0, 0, + 0, 0, 0, 0, 0,16735, 0, 0, 0, 0, + 0, 0, 0, 767, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 588, 428, 795, 0, 0, 1236, 0, + 0, 0, 0, 0, 166, 0, 0, 4302, 1233, 0, + 0, 0, 395, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1812, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1231, 0,15789, + 0, 6679, 0, 186, 0, 0, 0, 0, 0, 0, +15789, 0, 0, 0, 0, 0, 0, -153, 0, 715, + 0, 0, 0, 1234, 0, 0, 0, 0, 1224, 0, + 0, 0, 3666, 0, 3825, 3666, 0, 3825, 4461, 0, + 0, 0, 0, 0, -191, 0, 0, 0, 0, 120, + 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, 5200, 0, 5268, 0, 5404, + 0, 5472, 0, 5608, 0, 5676, 0, 5744, 0, 5812, + 0, 5948, 0, 6016, 0, 6152, 0, 6288, 0, 6424, + 0, 6492, 0, 6616, 0, 0, 709, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 3946, + 0, 0, 0, 0, 2308, 0, 0, 0, 0, 1189, +13876, 0, 0, 0, 9330, 0, 0, 783, 0, 0, + 0, 0, 0, 0, 725, 733, 0, 0, 1238, 0, + 0, 0, 0, 1942, 0, 0, 0, 0, 0, 0, +15925, 0, 0, 0, 802, 0, 0, 0, 9487,16882, + 0, 0, 813, 827, 828, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 768, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1241, 0, 0, 0, 0, 3732, + 0, 0, 196, 0, 185, 3984, 0, 0, 0, 0, + 0, 1239, 0, 0, 0, 0, 0, 1245, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 305, 619, + 0, 0, 0, 0, 0, 1242, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0,15789, 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, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 599, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, -141, 0, 514, 0, 0, + 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, + 0, 9487, 8112, 0, 1246, 0, 776, 0, 0, 0, + 0, 1250, 0, 1200, 1202, 0, 0, 0, 0, 0, + 1248, 9644, 0, 0, 0, 0,16914, 0, 0, 0, + 829, 0, 0, 0, 0, 0, 0, 2182, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 4143, 0, 4620, 1253, 0, 0, 0, + 1254, 0, 0, 0, 0, 431, 0, 0, 0, 0, + 829, 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, -241, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 830, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1249, 0, 0, 0, 0, 0, 842, + 849, 0, 0, 0, 0, 0, 0, 0, 1256, 687, + 1255, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 4302, 0, 0, 0, 0, 0, 1261, + 0, 0, 431, 0, 0, 775, 0, 1256, 0, 0, + 0,15789, 0, 629, 654, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1238,13715, + 0, 0, 0, 0, 0,17052, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 738, 0, 757, + 0, 0, 0, 0, 904, 0, 786, 1257, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1262, 0, + 7467, 0, 1265, 0, 0, 0, 0,15789, 0, 0, + 0, 0, 0, 0, 0, 350, 537, 0, 0, 0, + 0, 0,17128,16735, 0, 567, 567, 567, 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, 0, 0, 0,17233, + 0, -261, 0, 1267, 1267, 1267, 0, 0, 0, 0, + 0, 1263, 0, 0, 0, -194, 0, 0, 0, 0, + 0, 0, 0, 0,17276, 0, 0, 0,14179, 0, + 0, 1269, 0, 0, 570, 0, 0, 0, 603, 0, + 0, 0, 0, 0, 0, 0, 0, 1264, 0, 1270, + 0, 0, 0, 3205, 1266, 572, 0, 0, -255, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 3122, 0, 0, 0, + 0,13981,14265, 0, 0, 0, 605, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 416, 0, 0,16517, + 0, 0,14080, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,16585, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0,14359, 0,13981, + 0, 0, 605, 0, 0, 0, 0, 449, 0, 0, + 0, 0, 0, 0, 0, 0, 449, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 5002, + 462, 0,14401, 0, 0, 0,14471, 0, 3122, 0, + 0, 0, 1270, 3122, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 380, 0, 1273, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 3122, + 0, 0, 0, 744, 0, 662, 0, 0, 0, 0, + 0, 0, 0,16735, 846, 0, 0, 0, 0, 0, + 0, 1271, 0, 56, 0, 0, 0, 0, 0, 0, + 0, 0, 853, 0, 0, 0, 0, 0, 0, 0, + 0, 1274, 0,16735,16735, 0,16767, 0, 0, 0, + 0, 0, 0, 1275,17500, 0, 1276,16735,16061, 1277, +16735, 0, 0, 0, 0, 0, 0, 1279, 0, 0, + 0,17470, 0, 0, 0,16735, 0, 0, 0, 1281, + 0, 0, 340, 0,17394,17432, 0, 0, 0, 1284, + 0, 0, 0, 0, 0, 0, 1285, 0, 0,16735, + 0, 559, 0, 859, 0, 0, 0, 0, 0, 892, + 0,17318,17356, 0, 0, 0, 0, 0, 0, 0, + 0, 1307, 0, 1383, 0, 0, 0, 862, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 618, 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,17470,16233, +17170, 0, 618, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1233, 1233, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, }; protected static readonly short [] yyGindex = { 0, - 0, 1704, 0, 0, 0, -3, -16, -178, -46, -43, - 0, 1743, 1754, 691, 0, 3, 0, 0, 0, 0, - 0, 0,-1059, -739, -216, -198, 0, 0, 0, 0, - 0, -221, 0, 0, 0, 771, 0, 879, 0, 0, - 0, 0, 625, 626, -17, -226, 0, -37, 0, 459, - 0, 487, -683, -545, -540, -536, -513, -509, -502, -462, - 0, -618,-1221, 0, 12, 0, 184, 0,-1138, 0, - 0, 0, -7, 277, 0, 0, 0, 313,-1114, 0, - -274, -296, 1052, 0, 0, 0, -934, 259, 0, 0, - -514, 0, 0, 348, 0, 0, 320, 0, 0, 356, - 0, -543, -796, 0, 0, 0, 0, 0, 454, -13, - 0, 0, 892, 893, 894, 1067, -547, 0, 0, -289, - 901, 447, 0, -883, 0, 0, 0, 0, 0, 0, - 0, 0, 248, 0, 0, 0, 0, 0, 0, 0, - 0, 499, 0, 0, 0, 0, -258, 432, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, -519, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 257, - 0, 0, 340, 0, 0, 345, 347, 264, 0, 0, - 0, 0, 0, 0, 0, 0, 578, 0, 0, 0, - 0, -44, 0, 292, -104, 0, 0, 427, 0, 475, - 0, 953, 0, 1289, -294, -268, -52, 1060, 0, 595, - 0, -35, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, -263, 0, 90, 0, -352, 0, -74, 0, - 0, 0, 903, 0, -307, -132, 1073, 0, 986, 0, - 1243, 1456, 1112, 0, 0, 796, 1769, 0, 0, 0, - 0, 1094, 0, 0, 0, 0, 0, -565, 1505, 0, - 0, 0, 0, 0, 1379, 941, 950, 723, 947, 1441, - 1433, 1442, 1440, 1443, 0, 1444, 0, 0, 0, 1028, - 1290, -778, 0, -569, 0, 0, 0, 0, 0, 0, - 0, 0, -306, 0, 0, 0, 0, -460, 0, 642, - 0, 549, 0,-1038, 0, 0, 0, 0, 0, 704, - -544, -8, -332, -5, 0, 1713, 0, 82, 0, 101, - 103, 146, 160, 165, 166, 168, 170, 179, 183, 0, - -718, 0, -15, 0, 0, 842, 0, 765, 0, 0, - 0, 0, 745, -130, 820, -888, 0, 864, -480, 0, - 0, 0, 0, 0, 0, 758, 0, 0, 759, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 689, 0, 0, 0, 0, 0, - 0, 0, 0, -38, 0, 1340, 0, 0, 0, 932, - 0, 0, 0, 0, 0, 0, -169, 0, 0, 0, - 0, 0, 1447, 1204, 0, 0, 0, 1450, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 577, 0, 0, - 0, 0, 0, 0, 0, 0, 690, 0, 0, 0, - 0, 0, 0, 2, 1007, 0, 0, 0, 1010, + 0, 1599, 0, 0, 0, -3, -16, -183, -41, -38, + 0, 1644, 1657, 640, 0, 6, 0, 0, 0, 0, + 0, 0, -950, -736, -217, -499, 0, 0, 0, 0, + 0, -220, 0, 0, 0, 661, 0, 772, 0, 0, + 0, 0, 516, 517, -17, -230, 0, -46, 0, 351, + 0, 379, -660, -589, -585, -553, -538, -531, -450, -419, + 0, -674,-1217, 0, 12, 0, 109, 0,-1145, 0, + 0, 0, 377, 169, 0, 0, 0, 200,-1110, 0, + -278, -294, 948, 0, 0, 0, -935, 152, 0, 0, + -522, 0, 0, 219, 0, 0, 193, 0, 0, 228, + 0,-1242, -843, 0, 0, 0, 0, 0, 328, -10, + 0, 0, 769, 770, 771, 956, -529, 0, 0, -308, + 773, 329, 0,-1415, 0, 0, 0, 0, 0, 0, + 0, 0, 133, 0, 0, 0, 0, 0, 0, 0, + 0, 382, 0, 0, 0, 0, -344, 316, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, -525, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 145, + 0, 0, 226, 0, 0, 233, 236, 151, 0, 0, + 0, 0, 0, 0, 0, 0, 459, 0, 0, 0, + 0, -51, 0, 243, -188, 0, 0, 296, 0, 359, + 0, 832, 0, 1168, -292, -269, -60, 1073, 0, 465, + 0, -29, 136, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -252, 0, 759, 0, -346, 0, -273, 0, + 0, 0, 781, 790, -299, -125, 957, 0, 868, 0, + 1117, 1345, 997, 0, 0, 675, 1661, 0, 0, 0, + 0, 968, 0, 0, 0, 0, 0, -484, 1397, 0, + 0, 0, 0, 0, 1356, 867, 876, 784, 875, 1323, + 1324, 1322, 1325, 1326, 0, 1328, 0, 0, 0, 901, + 1171, -548, 0, -645, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -302, 0, 0, 0, 0, -463, 0, + 518, 0, 414, 0,-1138, 0, 0, 0, 0, 0, + 575, -543, -1, -332, 11, 0, 1586, 0, 19, 0, + 63, 66, 87, 101, 122, 141, 144, 167, 171, 176, + 0, -717, 0, -25, 0, 0, 710, 0, 635, 0, + 0, 0, 0, 615, -672, 689, -908, 0, 751, -477, + 0, 0, 0, 0, 0, 0, 645, 0, 0, 648, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 574, 0, 0, 0, 0, + 0, 0, 0, 0, -23, 0, 1237, 0, 0, 0, + 817, 0, 0, 0, 0, 0, 0, -168, 0, 0, + 0, 0, 0, 1346, 1094, 0, 0, 0, 1349, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 477, 0, + 0, 0, 0, 0, 0, 0, 0, 569, 0, 0, + 0, 0, 0, 0, -9, 908, 0, 0, 0, 912, }; protected static readonly short [] yyTable = { 109, - 18, 189, 529, 111, 233, 532, 773, 234, 155, 573, - 444, 156, 483, 779, 505, 462, 549, 43, 443, 722, - 487, 744, 192, 258, 417, 819, 560, 115, 613, 525, - 293, 321, 513, 1186, 919, 958, 920, 1063, 312, 827, - 938, 1003, 249, 259, 252, 1220, 1221, 840, 229, 327, - 332, 834, 1114, 670, 339, 304, 358, 1317, 315, 311, - 375, 555, 383, 1115, 1115, 313, 816, 316, 374, 115, - 382, 705, 249, 115, 1326, 587, 1, 343, 315, 328, - 333, 852, 950, 1396, 496, 952, 447, 749, 1068, 14, - 815, 190, 51, 715, 1096, 1253, 1098, 706, 160, 260, - 367, 820, 1380, 1382, 51, 854, 588, 864, 865, 1056, - 1388, 1250, 1357, 446, 987, 372, 362, 161, 289, 162, - 539, 404, 405, 361, 1321, 1322, 290, 817, 414, 707, - 835, 373, 94, 1323, 419, 406, 407, 788, 16, 109, - 415, 1349, 233, 111, 320, 445, 362, 840, 155, 880, - 262, 156, 671, 487, 286, 287, 288, 250, 294, 295, - 1431, 1358, 163, 308, 309, 850, 337, 115, 497, 670, - 317, 670, 319, 250, 323, 1193, 164, 360, 2, 335, - 336, 165, 166, 94, 167, 461, 168, 250, 445, 94, - 1247, 451, 452, 250, 291, 169, 1271, 987, 1397, 170, - 853, 840, 987, 381, 987, 929, 251, 987, 987, 488, - 987, 987, 94, 291, 767, 1068, 51, 1116, 1116, 261, - 447, 492, 251, 483, 453, 361, 670, 462, 771, 486, - 855, 1251, 987, 708, 1028, 491, 251, 573, 160, 459, - 1499, 921, 251, 372, 3, 4, 5, 6, 362, 292, - 258, 15, 291, 191, 493, 716, 1097, 161, 1099, 162, - 258, 447, 363, 573, 1381, 1383, 597, 1523, 292, 548, - 501, 504, 1389, 552, 6, 587, 508, 510, 557, 1533, - 503, 1534, 1128, 851, 794, 1432, 556, 987, 1376, 1065, - 554, 536, 840, 1378, 1194, 559, 115, 1066, 1003, 544, - 535, 546, 163, 547, 545, 508, 588, 292, 338, 1259, - 752, 194, 358, 1377, 1517, 1111, 164, 562, 563, 1409, - 575, 165, 166, 930, 167, 1567, 168, 730, 588, 115, - 595, 933, 458, 572, 322, 169, 574, 2, 1138, 170, - 926, 1495, 488, 488, 317, 689, 1180, 381, 1167, 358, - 372, 594, 115, 20, 579, 1239, 1018, 372, 1402, 372, - 754, 372, 486, 610, 933, 1003, 617, 618, 619, 620, - 621, 622, 623, 624, 625, 626, 627, 576, 194, 194, - 723, 1054, 781, 1544, 51, 783, 897, 526, 673, 675, - 635, 637, 679, 898, 692, 358, 730, 233, 669, 194, - 445, 927, 1359, 543, 370, 372, 841, 693, 881, 1069, - 726, 1071, 731, 1564, 1074, 784, 906, 521, 674, 676, - 398, 784, 1047, 358, 291, 42, 753, 358, 1260, 358, - 358, 358, 358, 1518, 911, 1032, 94, 358, 588, 1192, - 231, 800, 803, 1035, 1026, 1568, 1278, 1198, 687, 935, - 733, 1403, 690, 691, 1461, 20, 399, 730, 703, 794, - 358, 1488, 709, 742, 358, 750, 343, 358, 291, 358, - 784, 1223, 483, 1240, 358, 48, 755, 1003, 934, 292, - 447, 740, 935, 1003, 847, 368, 743, 1123, 488, 1124, - 194, 194, 965, 836, 513, 838, 789, 839, 782, 487, - 1131, 784, 1133, 1134, 448, 793, 769, 231, 610, 802, - 777, 483, 115, 1103, 731, 370, 370, 370, 199, 370, - 370, 449, 370, 946, 370, 785, 787, 1264, 522, 231, - 523, 6, 250, 369, 54, 805, 400, 401, 587, 245, - 807, 848, 598, 246, 789, 792, 683, 360, 826, 196, - 360, 683, 599, 194, 360, 683, 348, 801, 804, 231, - 1027, 572, 1209, 821, 574, 448, 370, 231, 370, 588, - 683, 370, 718, 460, 231, 731, 719, 231, 1298, 194, - 115, 251, 449, 873, 524, 925, 741, 572, 842, 842, - 574, 194, 1139, 247, 370, 361, 1419, 683, 361, 194, - 1200, 1540, 361, 447, 1011, 789, 115, 1525, 1526, 1541, - 990, 291, 461, 1016, 200, 824, 683, 788, 362, 1209, - 777, 362, 767, 1298, 967, 362, 1449, 1450, 786, 1452, - 460, 1231, 363, 498, 931, 363, 861, 720, 863, 363, - 1471, 499, 250, 1478, 914, 588, 336, 871, 915, 422, - 819, 244, 336, 194, 858, 1020, 194, 825, 1494, 858, - 858, 1530, 867, 683, 1558, 1042, 1052, 348, 683, 461, - 1542, 348, 683, 343, 120, 777, 120, 532, 1266, 324, - 343, 120, 1516, 231, 878, 1360, 343, 683, 488, 194, - 194, 251, 343, 990, 500, 343, 343, 1312, 990, 365, - 990, 336, 423, 990, 990, 913, 990, 990, 486, 343, - 744, 197, 683, 1531, 683, 348, 1299, 194, 194, 248, - 343, 1300, 258, 508, 1107, 1301, 879, 424, 990, 51, - 893, 31, 343, 683, 1361, 343, 343, 194, 777, 552, - 263, 343, 197, 769, 788, 365, 771, 372, 1302, 343, - 361, 194, 1303, 94, 31, 94, 94, 947, 917, 1304, - 250, 1299, 1404, 115, 683, 115, 1300, 31, 894, 1084, - 1301, 681, 31, 362, 942, 622, 320, 31, 941, 31, - 31, 31, 31, 990, 788, 31, 320, 31, 953, 961, - 954, 31, 895, 1302, 334, 681, 918, 1303, 956, 1305, - 821, 955, 682, 31, 1304, 959, 31, 488, 31, 251, - 425, 115, 1384, 488, 115, 426, 960, 427, 1076, 896, - 428, 429, 681, 430, 431, 1398, 682, 610, 362, 573, - 538, 693, 31, 610, 795, 970, 600, 777, 31, 31, - 1159, 689, 837, 539, 1305, 874, 601, 1417, 424, 709, - 1037, 1011, 702, 682, 703, 518, 194, 875, 622, 519, - 540, 1046, 573, 622, 733, 622, 622, 622, 622, 622, - 622, 622, 622, 622, 622, 622, 1189, 709, 194, 371, - 702, 1008, 703, 504, 410, 581, 709, 622, 709, 622, - 411, 622, 582, 622, 622, 622, 573, 1019, 1104, 372, - 1033, 94, 1000, 1050, 583, 1053, 343, 1036, 722, 622, - 1270, 1055, 343, 1222, 1084, 448, 361, 1044, 343, 777, - 622, 646, 343, 646, 275, 275, 1104, 413, 320, 1482, - 725, 425, 622, 275, 726, 343, 426, 1064, 427, 362, - 372, 428, 429, 424, 430, 431, 508, 873, 622, 343, - 1149, 343, 508, 363, 412, 706, 943, 448, 488, 327, - 449, 858, 1150, 858, 706, 327, 858, 343, 705, 320, - 343, 343, 328, 297, 1093, 348, 681, 705, 1083, 348, - 416, 343, 348, 250, 348, 376, 483, 462, 194, 348, - 343, 1535, 981, 1088, 1314, 709, 756, 225, 343, 801, - 1204, 343, 454, 801, 377, 378, 361, 801, 983, 194, - 777, 450, 800, 508, 1090, 581, 1091, 903, 1092, 573, - 800, 432, 582, 348, 379, 457, 425, 448, 1555, 362, - 872, 426, 251, 427, 583, 380, 428, 429, 343, 430, - 431, 343, 532, 363, 115, 1573, 1574, 821, 977, 285, - 336, 285, 858, 336, 858, 858, 285, 1135, 1346, 425, - 402, 403, 1280, 1297, 426, 44, 427, 1346, 484, 428, - 429, 485, 430, 431, 759, 981, 113, 194, 760, 337, - 981, 1142, 981, 1280, 796, 981, 981, 506, 981, 981, - 796, 983, 796, 395, 396, 397, 983, 504, 983, 733, - 194, 983, 983, 488, 983, 983, 507, 296, 1297, 297, - 1280, 1168, 777, 821, 528, 194, 442, 533, 113, 194, - 68, 68, 113, 1083, 68, 1179, 647, 649, 651, 653, - 504, 977, 233, 504, 1207, 445, 977, 1208, 977, 768, - 373, 977, 977, 519, 977, 977, 331, 331, 534, 682, - 865, 869, 858, 572, 865, 869, 574, 233, 1203, 1011, - 445, 1062, 796, 851, 796, 981, 796, 331, 115, 173, - 504, 173, 115, 173, 817, 69, 115, 194, 817, 69, - 817, 983, 817, 858, 1135, 225, 572, 226, 186, 574, - 186, 1207, 186, 806, 1208, 194, 194, 806, 800, 806, - 115, 806, 800, 343, 343, 115, 343, 343, 60, 225, - 1023, 228, 1023, 537, 1279, 1296, 113, 1208, 553, 627, - 572, 977, 509, 574, 1140, 421, 1141, 421, 509, 808, - 858, 808, 161, 566, 161, 1279, 558, 447, 1208, 115, - 168, 169, 168, 169, 408, 409, 421, 421, 934, 858, - 934, 504, 1275, 71, 592, 71, 115, 5, 331, 331, - 1296, 1395, 1279, 194, 593, 1208, 421, 192, 162, 192, - 162, 362, 1330, 125, 421, 125, 602, 421, 1395, 291, - 132, 291, 132, 298, 194, 298, 482, 231, 985, 986, - 1172, 1173, 194, 1236, 231, 366, 1427, 685, 1428, 362, - 454, 688, 627, 1545, 1546, 724, 1351, 627, 1275, 627, - 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, - 343, 331, 532, 532, 683, 683, 1355, 1356, 704, 1184, - 1185, 627, 751, 627, 727, 627, 729, 627, 627, 627, - 639, 641, 757, 572, 758, 113, 574, 331, 799, 733, - 1387, 643, 645, 1390, 655, 657, 806, 808, 809, 331, - 1405, 810, 115, 811, 828, 829, 832, 331, 833, 845, - 846, 860, 862, 882, 883, 866, 448, 885, 113, 733, - 733, 886, 733, 889, 42, 901, 907, 1462, 932, 908, - 909, 51, 627, 733, 910, 916, 733, 196, 936, 851, - 939, 113, 937, 944, 1489, 949, 948, 957, 963, 980, - 975, 733, 982, 987, 51, 989, 995, 1501, 1503, 996, - 999, 331, 1001, 998, 331, 1004, 777, 51, 1351, 1006, - 1012, 1024, 51, 1025, 1034, 733, 1028, 51, 504, 51, - 51, 51, 51, 1041, 1489, 1489, 522, 51, 1048, 1060, - 1073, 51, 1077, 1059, 1086, 1511, 1130, 331, 331, 1100, - 1094, 1101, 1102, 51, 1110, 1112, 51, 1129, 51, 1122, - 1126, 341, 1132, 194, 1144, 345, 347, 349, 351, 353, - 355, 357, 359, 384, 1148, 331, 331, 1152, 777, 1151, - 1153, 1154, 51, 1156, 51, 51, 1157, 1160, 201, 1164, - 1171, 1489, 1174, 1175, 385, 386, 387, 388, 389, 390, - 391, 392, 393, 394, 5, 1182, 1187, 1196, 51, 1199, - 1206, 1216, 1230, 1233, 1249, 777, 1238, 488, 488, 51, - 1235, 194, 1246, 1254, 51, 1560, 1560, 1261, 51, 1256, - 1241, 51, 1569, 1569, 1269, 1262, 1263, 610, 610, 1265, - 1310, 194, 1362, 51, 51, 1332, 1270, 1315, 51, 51, - 1313, 113, 1316, 1318, 51, 1327, 51, 51, 51, 51, - 1354, 1375, 1393, 1400, 51, 1392, 343, 1401, 51, 1408, - 51, 1411, 343, 1403, 1413, 1414, 1383, 1416, 1418, 1420, - 51, 1422, 1424, 51, 1425, 51, 1430, 1438, 1442, 51, - 1435, 1441, 331, 1445, 1443, 513, 1453, 194, 194, 1454, - 1472, 1457, 1467, 1474, 1483, 1493, 1484, 194, 343, 51, - 1486, 1487, 1497, 1496, 331, 194, 194, 1508, 194, 113, - 1507, 1510, 1513, 1515, 1372, 1521, 1528, 1532, 1512, 1536, - 1537, 1547, 1548, 1539, 1531, 1530, 331, 1372, 1576, 194, - 1553, 1554, 194, 1575, 1577, 113, 9, 1019, 548, 343, - 1372, 503, 903, 904, 343, 1011, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 647, 504, - 341, 460, 1372, 343, 648, 717, 33, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 461, 343, 343, - 502, 33, 343, 343, 343, 343, 343, 528, 34, 343, - 343, 319, 561, 213, 343, 343, 343, 343, 343, 343, - 343, 343, 100, 810, 34, 911, 811, 802, 616, 834, - 835, 803, 914, 343, 870, 705, 343, 343, 343, 871, - 343, 872, 323, 343, 874, 730, 705, 350, 683, 343, - 683, 128, 110, 230, 53, 294, 331, 135, 21, 129, - 111, 295, 136, 1078, 994, 1177, 1178, 1329, 1319, 891, - 1538, 1498, 1529, 629, 631, 633, 905, 331, 561, 561, - 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, - 561, 561, 561, 561, 1485, 1514, 1369, 1480, 904, 1021, - 1022, 1023, 1385, 1017, 1571, 1328, 1407, 1563, 1509, 1504, - 1502, 616, 113, 1562, 113, 1257, 616, 1373, 616, 616, - 616, 616, 616, 616, 616, 616, 616, 616, 616, 1429, - 990, 796, 1040, 924, 1258, 604, 968, 900, 1113, 299, - 616, 564, 616, 661, 616, 331, 616, 616, 616, 844, - 659, 922, 665, 663, 813, 962, 667, 616, 668, 1243, - 113, 513, 616, 113, 1333, 1195, 513, 513, 331, 418, - 1155, 1106, 616, 616, 1169, 1161, 1125, 1095, 1163, 1227, - 789, 683, 1057, 331, 684, 616, 870, 331, 1331, 513, - 992, 1232, 991, 0, 0, 0, 0, 0, 0, 0, - 561, 616, 513, 513, 0, 0, 0, 513, 0, 0, - 513, 0, 513, 0, 513, 513, 513, 513, 0, 0, - 0, 0, 513, 0, 0, 0, 513, 38, 0, 0, - 513, 0, 0, 0, 0, 0, 0, 0, 513, 0, - 0, 513, 0, 513, 513, 0, 0, 0, 0, 513, - 0, 513, 513, 513, 513, 513, 513, 513, 513, 513, - 513, 513, 0, 331, 331, 0, 0, 513, 513, 0, - 831, 0, 513, 513, 0, 513, 513, 513, 513, 513, - 513, 513, 0, 513, 513, 0, 513, 513, 513, 513, - 513, 513, 513, 513, 513, 513, 0, 513, 513, 513, - 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, - 513, 513, 513, 513, 513, 513, 513, 513, 513, 0, - 24, 513, 0, 513, 0, 513, 0, 0, 513, 0, - 0, 331, 905, 905, 513, 0, 0, 0, 0, 0, - 905, 905, 905, 905, 905, 0, 905, 905, 0, 905, - 905, 905, 905, 905, 905, 905, 905, 0, 0, 0, - 331, 905, 0, 905, 905, 905, 905, 905, 905, 0, - 0, 905, 0, 0, 0, 905, 905, 0, 905, 905, - 905, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 905, 0, 905, 113, 905, 905, 0, 0, 905, 0, - 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, - 905, 905, 0, 905, 0, 0, 905, 905, 0, 0, - 905, 905, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 905, 905, 905, 905, 905, - 0, 463, 0, 905, 905, 0, 0, 905, 828, 0, - 0, 0, 905, 905, 905, 905, 905, 0, 0, 0, - 905, 0, 905, 0, 464, 0, 0, 0, 905, 905, - 0, 0, 0, 0, 0, 0, 0, 465, 0, 0, - 0, 0, 467, 0, 38, 0, 0, 468, 38, 469, - 470, 471, 472, 905, 905, 905, 905, 473, 905, 38, - 0, 474, 0, 0, 38, 905, 0, 0, 38, 0, - 0, 38, 0, 475, 0, 0, 476, 113, 477, 0, - 0, 113, 0, 38, 38, 113, 0, 0, 38, 38, - 0, 0, 0, 0, 38, 0, 38, 38, 38, 38, - 0, 331, 478, 0, 38, 0, 0, 0, 38, 113, - 38, 0, 0, 0, 113, 0, 0, 0, 0, 0, - 38, 0, 38, 38, 0, 38, 0, 0, 0, 38, - 0, 0, 0, 0, 343, 0, 0, 24, 0, 0, - 0, 24, 0, 0, 0, 0, 0, 0, 113, 38, - 0, 0, 24, 0, 0, 38, 38, 24, 1383, 331, - 0, 24, 0, 0, 24, 113, 0, 0, 561, 0, - 0, 0, 0, 0, 0, 0, 24, 24, 0, 331, - 0, 24, 24, 0, 0, 0, 0, 24, 0, 24, - 24, 24, 24, 0, 0, 0, 0, 24, 0, 0, - 0, 24, 0, 24, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 24, 0, 0, 24, 0, 24, 0, - 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 331, 331, 0, 0, 0, - 0, 0, 24, 0, 0, 331, 0, 21, 24, 24, - 0, 0, 0, 331, 331, 0, 331, 0, 0, 0, - 0, 0, 0, 0, 828, 828, 0, 0, 0, 0, - 0, 113, 828, 828, 828, 828, 828, 331, 828, 828, - 331, 828, 828, 828, 828, 828, 828, 828, 0, 0, - 0, 0, 0, 828, 0, 828, 828, 828, 828, 828, - 828, 0, 0, 828, 785, 0, 0, 828, 828, 0, - 828, 828, 828, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 828, 0, 828, 0, 828, 828, 0, 0, - 828, 0, 828, 828, 828, 828, 828, 828, 828, 828, - 828, 828, 828, 828, 0, 828, 0, 0, 828, 828, - 0, 0, 828, 828, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 828, 828, 828, - 828, 828, 0, 0, 0, 828, 828, 0, 0, 828, - 0, 0, 0, 0, 828, 828, 828, 828, 828, 0, - 343, 0, 828, 0, 828, 343, 343, 0, 0, 0, - 828, 828, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 343, 0, - 0, 0, 0, 0, 0, 828, 828, 828, 828, 0, - 828, 343, 343, 0, 336, 0, 343, 828, 0, 343, - 0, 343, 0, 343, 343, 343, 343, 0, 0, 0, - 0, 343, 0, 0, 0, 343, 0, 0, 0, 343, - 0, 0, 0, 0, 0, 0, 0, 343, 0, 0, - 343, 0, 343, 343, 0, 0, 0, 0, 343, 0, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 0, 0, 0, 0, 343, 343, 0, 0, - 0, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 0, 343, 343, 0, 0, 343, 343, 343, 343, - 343, 0, 0, 343, 343, 0, 0, 0, 343, 343, - 343, 343, 343, 343, 343, 343, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 343, 0, 0, - 343, 0, 343, 0, 343, 0, 0, 343, 0, 0, - 785, 0, 0, 343, 373, 785, 785, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 785, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 785, 785, 0, 0, 0, 785, 0, 0, 785, - 0, 785, 0, 785, 785, 785, 785, 0, 0, 0, - 0, 785, 0, 0, 0, 785, 0, 0, 0, 785, - 0, 0, 0, 0, 0, 0, 0, 785, 0, 0, - 785, 0, 785, 785, 0, 0, 0, 0, 785, 0, - 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, - 785, 0, 0, 0, 0, 0, 785, 785, 368, 0, - 0, 785, 785, 785, 785, 785, 785, 0, 785, 785, - 785, 0, 785, 785, 0, 0, 785, 785, 785, 785, - 336, 0, 0, 785, 785, 336, 336, 0, 785, 785, - 785, 785, 785, 785, 785, 785, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 785, 336, 0, - 785, 0, 785, 0, 785, 0, 0, 785, 0, 0, - 0, 336, 336, 785, 0, 0, 336, 0, 0, 336, - 0, 336, 0, 336, 336, 336, 336, 0, 0, 0, - 0, 336, 0, 0, 0, 336, 0, 0, 0, 336, - 0, 0, 0, 0, 0, 0, 0, 336, 0, 0, - 336, 0, 336, 336, 0, 0, 0, 0, 336, 0, + 18, 189, 449, 781, 532, 446, 111, 535, 787, 233, + 507, 577, 234, 485, 464, 155, 489, 43, 729, 445, + 552, 293, 593, 321, 530, 192, 751, 156, 528, 258, + 831, 419, 832, 259, 563, 160, 620, 229, 873, 874, + 327, 332, 928, 516, 929, 339, 1074, 252, 1197, 1231, + 1232, 948, 377, 312, 385, 304, 1007, 843, 592, 311, + 558, 376, 836, 384, 674, 373, 249, 1126, 313, 756, + 316, 1407, 1328, 844, 315, 426, 1125, 345, 1079, 161, + 498, 249, 162, 828, 712, 460, 1536, 1537, 1126, 1337, + 315, 960, 863, 936, 962, 358, 14, 926, 833, 1264, + 289, 1258, 372, 163, 579, 190, 322, 1107, 290, 856, + 713, 1067, 324, 722, 991, 416, 827, 164, 1109, 1160, + 374, 1391, 1393, 1399, 1395, 421, 805, 417, 1442, 883, + 805, 1161, 260, 2, 805, 927, 449, 1409, 165, 109, + 834, 884, 714, 1569, 829, 16, 111, 233, 337, 320, + 447, 489, 115, 678, 937, 155, 51, 166, 427, 1428, + 167, 580, 51, 428, 499, 429, 857, 156, 430, 431, + 1, 432, 433, 844, 889, 160, 291, 94, 42, 449, + 674, 250, 674, 168, 602, 94, 1408, 169, 1261, 250, + 463, 524, 170, 447, 115, 291, 250, 991, 115, 487, + 490, 802, 991, 362, 991, 250, 1079, 991, 991, 372, + 991, 991, 494, 455, 291, 861, 372, 864, 372, 161, + 372, 1127, 162, 593, 1388, 775, 485, 844, 464, 488, + 251, 292, 991, 779, 291, 493, 1038, 674, 251, 461, + 930, 577, 1127, 163, 6, 251, 715, 593, 434, 515, + 292, 363, 261, 1443, 251, 1510, 258, 164, 15, 592, + 503, 551, 194, 696, 372, 555, 258, 191, 577, 292, + 560, 506, 2, 968, 364, 723, 510, 512, 165, 559, + 1110, 557, 1534, 1392, 1394, 1400, 562, 991, 365, 292, + 338, 539, 115, 550, 1544, 1578, 1545, 166, 730, 547, + 167, 549, 525, 51, 526, 510, 250, 548, 1262, 759, + 1191, 358, 20, 1007, 1204, 51, 1282, 565, 566, 699, + 887, 725, 225, 168, 226, 726, 1122, 169, 605, 194, + 194, 608, 170, 1270, 862, 490, 490, 859, 3, 4, + 5, 6, 576, 1080, 761, 1082, 1528, 600, 1085, 734, + 194, 358, 1149, 599, 578, 251, 1506, 939, 527, 593, + 915, 737, 888, 849, 488, 617, 1115, 1250, 624, 625, + 626, 627, 628, 629, 630, 631, 632, 633, 634, 943, + 802, 680, 682, 1028, 789, 686, 727, 1555, 199, 791, + 1332, 1333, 808, 461, 20, 1115, 890, 1413, 48, 1334, + 676, 449, 943, 54, 233, 1289, 94, 447, 1387, 1472, + 734, 811, 1370, 1389, 700, 1579, 845, 1575, 1036, 847, + 848, 115, 358, 1499, 1058, 760, 358, 51, 343, 358, + 823, 358, 231, 1205, 358, 1142, 358, 1144, 1145, 1420, + 1007, 194, 194, 697, 698, 920, 738, 1042, 370, 710, + 461, 1203, 1271, 694, 115, 860, 749, 740, 757, 1209, + 762, 200, 358, 328, 333, 1529, 358, 716, 358, 358, + 358, 358, 1065, 231, 231, 940, 358, 850, 750, 115, + 485, 733, 490, 1234, 369, 1251, 747, 1551, 196, 793, + 1414, 462, 593, 944, 291, 1552, 371, 945, 231, 801, + 790, 6, 489, 810, 194, 792, 882, 975, 809, 777, + 400, 617, 516, 785, 1048, 1114, 687, 1220, 231, 485, + 945, 687, 231, 1139, 424, 687, 449, 812, 592, 250, + 194, 793, 795, 448, 1037, 1211, 231, 793, 813, 1275, + 687, 94, 194, 815, 835, 244, 401, 500, 462, 292, + 194, 800, 1007, 735, 1030, 501, 1553, 372, 1007, 824, + 1430, 291, 362, 449, 291, 291, 1242, 687, 593, 363, + 824, 1541, 576, 362, 1220, 453, 454, 425, 251, 1134, + 362, 1135, 231, 245, 578, 426, 687, 246, 248, 1178, + 1460, 1461, 364, 1463, 448, 851, 851, 781, 793, 576, + 935, 320, 687, 1026, 1482, 994, 194, 1489, 502, 194, + 363, 578, 1309, 1277, 735, 1021, 956, 688, 1150, 1063, + 603, 363, 1505, 1542, 449, 788, 402, 403, 363, 977, + 604, 788, 1323, 364, 870, 348, 872, 247, 495, 115, + 775, 291, 194, 194, 364, 880, 1527, 365, 1368, 941, + 370, 364, 781, 336, 687, 404, 405, 1309, 365, 336, + 197, 867, 831, 1371, 505, 365, 867, 867, 427, 876, + 194, 194, 1057, 428, 1053, 429, 365, 1076, 430, 431, + 788, 432, 433, 1310, 538, 1077, 490, 1311, 994, 535, + 194, 197, 903, 994, 363, 994, 606, 1369, 994, 994, + 427, 994, 994, 922, 194, 428, 607, 429, 336, 115, + 430, 431, 1372, 432, 433, 488, 904, 364, 515, 1312, + 685, 94, 365, 994, 751, 250, 450, 263, 1310, 451, + 510, 365, 1311, 686, 1313, 258, 115, 902, 1118, 555, + 583, 1314, 906, 905, 685, 785, 348, 995, 996, 907, + 348, 777, 343, 120, 713, 120, 957, 686, 444, 779, + 120, 370, 370, 370, 1312, 370, 370, 696, 370, 985, + 370, 685, 1291, 1308, 251, 1095, 642, 644, 994, 1313, + 542, 225, 713, 228, 686, 952, 1314, 343, 803, 971, + 689, 713, 987, 1291, 348, 509, 963, 796, 964, 343, + 94, 509, 343, 343, 681, 683, 94, 490, 969, 966, + 194, 824, 370, 490, 370, 1360, 343, 370, 1308, 262, + 1291, 94, 1315, 286, 287, 288, 687, 294, 295, 1087, + 1415, 687, 308, 309, 194, 687, 617, 484, 231, 317, + 577, 319, 617, 323, 980, 700, 785, 1170, 335, 336, + 687, 792, 985, 1316, 334, 406, 407, 985, 448, 985, + 981, 413, 985, 985, 1021, 985, 985, 1315, 363, 408, + 409, 541, 383, 577, 882, 987, 450, 687, 740, 881, + 987, 412, 987, 1200, 542, 987, 987, 414, 987, 987, + 1018, 364, 506, 415, 374, 115, 687, 115, 1316, 374, + 716, 543, 374, 297, 1061, 706, 1064, 577, 707, 1043, + 375, 1010, 1066, 94, 1045, 450, 729, 1045, 953, 418, + 1233, 1095, 1281, 320, 452, 275, 275, 1055, 320, 785, + 585, 320, 1493, 706, 275, 225, 707, 586, 1075, 327, + 792, 456, 985, 981, 115, 327, 194, 115, 981, 587, + 981, 426, 328, 981, 981, 792, 981, 981, 343, 490, + 343, 792, 397, 398, 399, 987, 804, 194, 792, 710, + 585, 867, 912, 867, 804, 1104, 867, 586, 710, 343, + 343, 1108, 343, 1357, 709, 343, 38, 336, 1094, 587, + 336, 521, 1357, 709, 1546, 522, 821, 464, 485, 343, + 821, 1325, 821, 343, 821, 486, 1215, 343, 716, 343, + 343, 459, 296, 317, 297, 343, 383, 337, 343, 343, + 785, 810, 531, 510, 1101, 810, 1102, 810, 1103, 810, + 577, 1566, 343, 981, 427, 285, 194, 285, 1073, 428, + 860, 429, 285, 508, 430, 431, 509, 432, 433, 732, + 1584, 1585, 250, 733, 378, 535, 529, 375, 800, 194, + 800, 824, 800, 867, 343, 867, 867, 792, 1146, 410, + 411, 343, 546, 379, 380, 194, 800, 343, 44, 194, + 536, 766, 800, 343, 800, 767, 647, 343, 647, 113, + 1183, 1184, 1153, 381, 343, 343, 537, 343, 343, 60, + 343, 251, 68, 68, 382, 490, 68, 173, 506, 173, + 348, 173, 1247, 231, 348, 740, 343, 348, 1151, 348, + 1152, 776, 1179, 785, 348, 522, 186, 824, 186, 923, + 186, 113, 343, 924, 1094, 113, 1190, 194, 869, 873, + 540, 506, 869, 873, 506, 69, 533, 533, 233, 69, + 1218, 447, 1027, 1219, 1027, 194, 194, 804, 348, 331, + 331, 804, 510, 867, 449, 421, 556, 421, 510, 1214, + 951, 576, 1021, 233, 561, 812, 447, 812, 569, 115, + 331, 506, 161, 578, 161, 597, 421, 421, 1406, 654, + 656, 658, 660, 965, 867, 1146, 168, 169, 168, 169, + 938, 71, 938, 71, 576, 1406, 421, 1218, 598, 970, + 1219, 192, 364, 192, 421, 609, 578, 421, 162, 125, + 162, 125, 368, 1438, 194, 1439, 291, 692, 291, 113, + 1290, 1307, 132, 1219, 132, 298, 695, 298, 576, 364, + 456, 867, 711, 38, 731, 194, 758, 38, 1556, 1557, + 578, 1290, 765, 194, 1219, 687, 687, 748, 38, 734, + 867, 736, 506, 38, 763, 1195, 1196, 38, 646, 648, + 38, 331, 331, 764, 1341, 807, 1307, 814, 1290, 650, + 652, 1219, 38, 38, 662, 664, 816, 38, 38, 817, + 1029, 818, 819, 38, 838, 38, 38, 38, 38, 837, + 794, 841, 842, 38, 115, 844, 854, 38, 115, 38, + 846, 855, 115, 869, 871, 875, 891, 892, 450, 38, + 1362, 38, 38, 894, 38, 895, 898, 42, 38, 916, + 910, 196, 917, 918, 331, 919, 115, 925, 946, 942, + 949, 115, 860, 947, 954, 959, 958, 967, 38, 973, + 985, 990, 992, 997, 38, 38, 999, 1005, 113, 1006, + 331, 576, 1009, 1014, 1008, 740, 1011, 1016, 1022, 1034, + 1035, 1038, 331, 578, 1416, 115, 1044, 1052, 525, 1070, + 331, 37, 1059, 1071, 1084, 1088, 1105, 1099, 1097, 1113, + 1111, 113, 115, 1121, 1123, 740, 740, 1112, 740, 1133, + 1137, 1140, 1155, 1473, 1163, 1164, 1141, 1143, 1165, 740, + 1159, 1162, 740, 1167, 1168, 1171, 113, 1175, 1182, 1186, + 1500, 1193, 1185, 1198, 1210, 1227, 1207, 740, 620, 1244, + 1241, 1260, 1265, 1512, 1514, 194, 331, 785, 1217, 331, + 1246, 1249, 1362, 1267, 1252, 1257, 1272, 1273, 343, 506, + 1280, 740, 347, 349, 351, 353, 355, 357, 359, 361, + 1500, 1500, 386, 1276, 1274, 1281, 1522, 1324, 1321, 1326, + 1329, 1338, 331, 331, 1327, 1373, 1343, 1365, 1386, 1404, + 1403, 1412, 1422, 387, 388, 389, 390, 391, 392, 393, + 394, 395, 396, 194, 1411, 1419, 1414, 1424, 115, 785, + 331, 331, 1427, 1394, 1425, 1429, 1433, 1435, 1436, 1449, + 1431, 620, 1464, 194, 1441, 1452, 620, 1500, 620, 620, + 620, 620, 620, 620, 620, 620, 620, 620, 620, 490, + 490, 1446, 1453, 1456, 1454, 1483, 785, 1465, 1494, 1468, + 620, 5, 620, 1478, 620, 1485, 620, 620, 620, 1571, + 1571, 1495, 1497, 1498, 1504, 1507, 1580, 1580, 617, 617, + 1518, 1508, 620, 1519, 1521, 1523, 1524, 1526, 1539, 194, + 194, 1543, 620, 620, 1532, 1547, 113, 1548, 1550, 194, + 1558, 1559, 1542, 1541, 1564, 620, 1565, 194, 194, 1586, + 194, 1587, 1588, 9, 1023, 549, 1383, 504, 907, 908, + 1015, 620, 649, 505, 461, 650, 721, 33, 503, 1383, + 462, 194, 33, 529, 194, 34, 319, 213, 331, 100, + 34, 687, 1383, 814, 815, 915, 514, 806, 838, 839, + 874, 918, 875, 709, 876, 878, 323, 734, 37, 350, + 331, 709, 37, 343, 1383, 687, 113, 1286, 230, 128, + 110, 294, 135, 37, 129, 53, 111, 343, 37, 295, + 136, 21, 37, 1089, 331, 37, 1004, 1188, 1189, 1509, + 1340, 1330, 900, 113, 1549, 1540, 1496, 37, 37, 1525, + 1491, 1380, 37, 37, 1027, 1031, 1032, 1033, 37, 564, + 37, 37, 37, 37, 913, 1396, 626, 343, 37, 1339, + 1582, 1418, 37, 1286, 37, 1520, 1574, 1268, 1515, 1440, + 1513, 1573, 1384, 804, 37, 1269, 37, 37, 1000, 37, + 1051, 1366, 1367, 37, 1049, 934, 611, 978, 1124, 909, + 853, 299, 931, 567, 666, 670, 668, 972, 821, 672, + 1344, 674, 420, 37, 675, 1398, 1254, 1206, 1401, 1117, + 37, 1166, 636, 638, 640, 1180, 1136, 564, 564, 564, + 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, + 564, 564, 564, 1172, 1106, 1238, 331, 1068, 1174, 626, + 797, 1243, 690, 879, 626, 691, 626, 626, 626, 626, + 626, 626, 626, 626, 626, 626, 626, 331, 5, 1342, + 1002, 0, 51, 1001, 0, 0, 0, 0, 626, 0, + 626, 909, 626, 51, 626, 626, 626, 0, 51, 0, + 0, 0, 51, 0, 0, 51, 0, 0, 0, 0, + 626, 0, 113, 0, 113, 0, 0, 51, 51, 0, + 0, 0, 51, 51, 0, 0, 0, 0, 51, 0, + 51, 51, 51, 51, 0, 0, 0, 0, 51, 0, + 0, 0, 51, 0, 51, 0, 331, 0, 0, 626, + 0, 0, 0, 0, 51, 0, 0, 51, 0, 51, + 564, 113, 514, 51, 113, 0, 0, 514, 514, 331, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 51, 0, 331, 0, 0, 0, 331, + 514, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 514, 514, 0, 0, 0, 514, 0, + 0, 514, 0, 514, 0, 514, 514, 514, 514, 0, + 0, 24, 0, 514, 0, 0, 0, 514, 0, 0, + 0, 514, 840, 0, 0, 0, 0, 0, 0, 514, + 0, 0, 514, 0, 514, 514, 0, 0, 0, 0, + 514, 0, 514, 514, 514, 514, 514, 514, 514, 514, + 514, 514, 514, 0, 0, 331, 331, 0, 514, 514, + 0, 0, 0, 514, 514, 0, 514, 514, 514, 514, + 514, 514, 514, 0, 514, 514, 0, 514, 514, 514, + 514, 514, 514, 514, 514, 514, 514, 0, 514, 514, + 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, + 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, + 0, 0, 514, 36, 514, 0, 514, 0, 0, 514, + 0, 0, 0, 0, 331, 514, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 909, 909, 0, + 0, 0, 0, 0, 0, 909, 909, 909, 909, 909, + 0, 909, 909, 331, 909, 909, 909, 909, 909, 909, + 909, 909, 0, 0, 0, 0, 909, 0, 909, 909, + 909, 909, 909, 909, 0, 0, 909, 0, 0, 0, + 909, 909, 0, 909, 909, 909, 113, 0, 0, 0, + 0, 0, 0, 343, 0, 909, 0, 909, 0, 909, + 909, 0, 0, 909, 0, 909, 909, 909, 909, 909, + 909, 909, 909, 909, 909, 909, 909, 0, 909, 0, + 0, 909, 909, 0, 0, 909, 909, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 909, 909, 909, 909, 909, 0, 0, 0, 909, 909, + 0, 832, 909, 0, 0, 0, 0, 909, 909, 909, + 909, 909, 0, 0, 0, 909, 0, 909, 24, 0, + 0, 0, 24, 909, 909, 0, 0, 0, 0, 0, + 0, 0, 0, 24, 0, 0, 0, 0, 24, 0, + 0, 0, 24, 0, 0, 24, 0, 0, 909, 909, + 909, 909, 0, 909, 0, 0, 0, 24, 24, 0, + 909, 113, 24, 24, 0, 113, 0, 0, 24, 113, + 24, 24, 24, 24, 0, 0, 0, 0, 24, 0, + 0, 0, 24, 0, 24, 331, 0, 0, 0, 0, + 0, 0, 0, 113, 24, 0, 0, 24, 113, 24, + 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 564, 0, 0, 0, 0, + 36, 0, 0, 24, 36, 0, 0, 343, 21, 24, + 24, 0, 113, 0, 0, 36, 0, 0, 0, 0, + 36, 0, 0, 331, 36, 0, 0, 36, 0, 113, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, + 36, 0, 0, 331, 36, 36, 0, 0, 0, 0, + 36, 0, 36, 36, 36, 36, 0, 0, 0, 0, + 36, 0, 0, 0, 36, 0, 36, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 36, 0, 0, 36, + 0, 36, 0, 0, 0, 36, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 331, + 331, 0, 0, 0, 0, 36, 0, 0, 0, 331, + 0, 36, 36, 0, 0, 0, 0, 331, 331, 0, + 331, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 113, 0, 832, 832, 0, + 0, 331, 0, 0, 331, 832, 832, 832, 832, 832, + 0, 832, 832, 789, 832, 832, 832, 832, 832, 832, + 832, 0, 0, 0, 0, 0, 832, 0, 832, 832, + 832, 832, 832, 832, 0, 0, 832, 0, 0, 0, + 832, 832, 0, 832, 832, 832, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 832, 0, 832, 0, 832, + 832, 0, 0, 832, 0, 832, 832, 832, 832, 832, + 832, 832, 832, 832, 832, 832, 832, 0, 832, 0, + 0, 832, 832, 0, 0, 832, 832, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 832, 832, 832, 832, 832, 0, 0, 0, 832, 832, + 0, 0, 832, 0, 0, 0, 0, 832, 832, 832, + 832, 832, 0, 343, 0, 832, 0, 832, 343, 343, + 0, 0, 0, 832, 832, 0, 0, 0, 0, 0, + 0, 0, 0, 336, 0, 0, 0, 0, 0, 0, + 0, 343, 0, 0, 0, 0, 0, 0, 832, 832, + 832, 832, 0, 832, 343, 343, 0, 0, 0, 343, + 832, 0, 343, 0, 343, 0, 343, 343, 343, 343, + 0, 0, 0, 0, 343, 0, 0, 0, 343, 0, + 0, 0, 343, 0, 0, 0, 0, 0, 0, 0, + 343, 0, 0, 343, 0, 343, 343, 0, 0, 0, + 0, 343, 0, 343, 343, 343, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 0, 0, 0, 0, 343, + 343, 0, 0, 0, 343, 343, 343, 343, 343, 343, + 343, 343, 343, 343, 0, 343, 343, 0, 0, 343, + 343, 343, 343, 343, 0, 0, 343, 343, 0, 0, + 0, 343, 343, 343, 343, 343, 343, 343, 343, 789, + 0, 0, 0, 373, 789, 789, 0, 0, 0, 0, + 343, 0, 0, 343, 0, 343, 0, 343, 0, 0, + 343, 0, 0, 0, 0, 0, 343, 789, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 789, 789, 0, 0, 0, 789, 0, 0, 789, 0, + 789, 0, 789, 789, 789, 789, 0, 0, 0, 0, + 789, 0, 0, 0, 789, 0, 0, 0, 789, 0, + 0, 0, 0, 0, 0, 0, 789, 0, 0, 789, + 0, 789, 789, 0, 0, 0, 0, 789, 0, 789, + 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, + 0, 0, 0, 0, 0, 789, 789, 343, 0, 0, + 789, 789, 789, 789, 789, 789, 0, 789, 789, 789, + 0, 789, 789, 0, 0, 789, 789, 789, 789, 336, + 0, 0, 789, 789, 336, 336, 0, 789, 789, 789, + 789, 789, 789, 789, 789, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 789, 336, 0, 789, + 0, 789, 0, 789, 0, 0, 789, 0, 0, 0, + 336, 336, 789, 0, 0, 336, 0, 0, 336, 0, + 336, 0, 336, 336, 336, 336, 0, 0, 0, 0, + 336, 0, 0, 0, 336, 0, 0, 0, 336, 0, + 0, 0, 0, 0, 0, 0, 336, 0, 0, 336, + 0, 336, 336, 0, 0, 0, 0, 336, 0, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, - 336, 0, 0, 0, 0, 0, 336, 336, 0, 0, - 0, 336, 336, 336, 336, 336, 336, 0, 336, 336, - 336, 0, 336, 336, 0, 0, 336, 336, 336, 336, - 373, 0, 0, 336, 336, 373, 373, 0, 336, 336, - 336, 336, 336, 336, 336, 336, 0, 31, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 336, 373, 0, - 336, 0, 336, 0, 336, 0, 0, 336, 0, 0, - 0, 373, 373, 336, 0, 0, 373, 0, 0, 373, - 0, 373, 0, 373, 373, 373, 373, 0, 0, 0, - 0, 373, 0, 0, 0, 373, 0, 0, 0, 373, - 0, 0, 0, 0, 0, 0, 0, 373, 0, 0, - 373, 0, 373, 373, 0, 0, 0, 0, 373, 0, + 0, 0, 0, 0, 0, 336, 336, 0, 0, 0, + 336, 336, 336, 336, 336, 336, 0, 336, 336, 336, + 0, 336, 336, 368, 0, 336, 336, 336, 336, 373, + 0, 0, 336, 336, 373, 373, 0, 336, 336, 336, + 336, 336, 336, 336, 336, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 336, 373, 0, 336, + 0, 336, 0, 336, 0, 0, 336, 0, 0, 0, + 373, 373, 336, 0, 0, 373, 0, 0, 373, 0, + 373, 0, 373, 373, 373, 373, 0, 0, 0, 0, + 373, 0, 0, 0, 373, 0, 0, 0, 373, 0, + 0, 0, 0, 0, 0, 0, 373, 0, 0, 373, + 0, 373, 373, 0, 0, 0, 0, 373, 0, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 0, 0, 37, 368, 0, 373, 373, 0, 0, - 368, 373, 373, 0, 373, 373, 373, 0, 373, 373, - 373, 0, 373, 373, 0, 0, 373, 373, 373, 373, - 0, 0, 0, 373, 373, 0, 0, 0, 373, 373, - 373, 373, 373, 373, 373, 373, 368, 0, 0, 0, - 36, 0, 0, 0, 0, 0, 0, 373, 0, 0, - 373, 0, 373, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 373, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 368, 0, 0, - 0, 0, 368, 0, 368, 368, 368, 368, 368, 368, + 0, 0, 0, 343, 0, 373, 373, 0, 0, 343, + 373, 373, 0, 373, 373, 373, 0, 373, 373, 373, + 0, 373, 373, 0, 0, 373, 373, 373, 373, 0, + 0, 0, 373, 373, 0, 0, 0, 373, 373, 373, + 373, 373, 373, 373, 373, 343, 0, 0, 0, 0, + 0, 31, 0, 0, 0, 0, 373, 0, 0, 373, + 0, 373, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 373, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 343, 0, 0, 0, + 0, 343, 0, 343, 343, 343, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 0, 0, 628, 0, 0, + 343, 0, 0, 0, 343, 343, 343, 343, 343, 343, + 343, 343, 343, 343, 0, 343, 343, 0, 0, 343, + 343, 343, 343, 343, 25, 0, 343, 343, 0, 0, + 0, 343, 343, 343, 343, 343, 343, 343, 343, 368, + 0, 0, 0, 0, 0, 368, 0, 0, 0, 0, + 343, 0, 0, 343, 0, 343, 0, 343, 0, 0, + 343, 0, 0, 0, 0, 0, 343, 35, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 628, 368, 0, 0, 0, 628, 0, 628, 628, 628, + 628, 628, 628, 628, 628, 628, 628, 628, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 628, + 1005, 628, 0, 628, 0, 628, 628, 628, 0, 0, + 0, 0, 368, 0, 0, 0, 0, 368, 0, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 0, 0, 0, 0, 0, 0, 368, 0, 0, 0, + 368, 368, 0, 368, 368, 368, 0, 368, 368, 368, + 0, 368, 368, 0, 0, 368, 368, 368, 368, 0, + 628, 0, 368, 368, 0, 0, 0, 368, 368, 368, 368, 368, 368, 368, 368, 0, 0, 0, 0, 0, - 0, 368, 0, 25, 0, 368, 368, 0, 368, 368, - 368, 0, 368, 368, 368, 0, 368, 368, 0, 0, - 368, 368, 368, 368, 0, 0, 0, 368, 368, 0, - 0, 0, 368, 368, 368, 368, 368, 368, 368, 368, - 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, - 0, 368, 0, 0, 368, 0, 368, 0, 0, 0, - 0, 0, 0, 31, 31, 0, 0, 368, 31, 0, - 0, 0, 31, 0, 31, 0, 0, 31, 0, 31, - 31, 0, 31, 0, 31, 0, 31, 0, 31, 31, - 31, 31, 0, 0, 31, 31, 0, 0, 0, 0, - 31, 0, 31, 31, 31, 0, 0, 31, 31, 31, - 0, 31, 0, 0, 31, 0, 31, 31, 31, 31, - 1001, 0, 0, 31, 31, 31, 0, 0, 31, 31, - 31, 0, 0, 0, 0, 0, 0, 31, 31, 0, - 31, 31, 0, 31, 31, 31, 0, 0, 0, 31, - 37, 0, 0, 0, 37, 0, 0, 0, 0, 0, - 0, 0, 0, 51, 0, 37, 0, 0, 0, 31, - 37, 0, 0, 0, 37, 31, 31, 37, 0, 0, - 0, 0, 0, 0, 31, 0, 0, 0, 0, 37, - 37, 0, 0, 0, 37, 37, 0, 36, 0, 0, - 37, 36, 37, 37, 37, 37, 7, 0, 0, 0, - 37, 0, 36, 0, 37, 0, 37, 36, 0, 0, - 0, 36, 0, 0, 36, 31, 37, 0, 37, 37, - 0, 37, 0, 0, 0, 37, 36, 36, 0, 0, - 0, 36, 36, 0, 0, 0, 0, 36, 0, 36, - 36, 36, 36, 0, 0, 37, 0, 36, 0, 0, - 25, 36, 37, 36, 25, 0, 0, 0, 0, 1002, - 0, 0, 0, 36, 0, 25, 36, 0, 36, 0, - 25, 0, 36, 0, 25, 0, 0, 25, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, - 25, 0, 36, 35, 25, 25, 0, 35, 36, 36, - 25, 0, 25, 25, 25, 25, 52, 0, 35, 0, - 25, 0, 0, 35, 25, 0, 25, 35, 0, 0, - 35, 0, 0, 0, 0, 0, 25, 0, 0, 25, - 0, 25, 35, 35, 0, 25, 0, 35, 35, 0, - 0, 0, 0, 35, 0, 35, 35, 35, 35, 0, - 0, 0, 0, 35, 0, 25, 0, 35, 0, 35, - 0, 25, 25, 0, 0, 0, 0, 1001, 0, 35, - 0, 51, 35, 0, 35, 0, 0, 0, 35, 0, + 51, 0, 0, 0, 0, 0, 368, 31, 31, 368, + 0, 368, 31, 0, 0, 0, 31, 0, 31, 0, + 0, 31, 368, 31, 31, 0, 31, 0, 31, 0, + 31, 0, 31, 31, 31, 31, 0, 0, 31, 31, + 0, 0, 0, 7, 31, 0, 31, 31, 31, 0, + 0, 31, 31, 31, 0, 31, 0, 0, 31, 0, + 31, 31, 31, 31, 0, 0, 0, 31, 31, 31, + 0, 0, 31, 31, 31, 0, 0, 0, 0, 0, + 0, 31, 31, 0, 31, 31, 1006, 31, 31, 31, + 0, 25, 0, 31, 0, 25, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0, 25, 0, 31, 0, 25, 0, 0, 25, 31, + 31, 0, 0, 0, 0, 0, 0, 0, 31, 52, + 25, 25, 0, 0, 35, 25, 25, 0, 35, 0, + 0, 25, 0, 25, 25, 25, 25, 0, 0, 35, + 0, 25, 0, 0, 35, 25, 0, 25, 35, 0, + 0, 35, 0, 0, 0, 0, 0, 25, 0, 31, + 25, 0, 25, 35, 35, 0, 25, 1005, 35, 35, + 0, 51, 0, 0, 35, 0, 35, 35, 35, 35, + 0, 0, 51, 0, 35, 0, 25, 51, 35, 0, + 35, 51, 25, 25, 51, 0, 0, 0, 0, 0, + 35, 0, 0, 35, 0, 35, 51, 51, 0, 35, + 0, 51, 51, 0, 0, 0, 0, 51, 0, 51, + 51, 51, 51, 0, 0, 0, 0, 51, 0, 35, + 0, 51, 0, 51, 0, 0, 35, 0, 0, 0, + 0, 0, 0, 51, 0, 0, 51, 51, 51, 0, + 0, 51, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 0, 0, 0, 0, 51, 0, 0, - 0, 51, 0, 0, 51, 0, 0, 0, 35, 0, - 0, 0, 0, 0, 0, 35, 51, 51, 0, 0, - 51, 51, 51, 0, 51, 0, 0, 51, 0, 51, - 51, 51, 51, 0, 0, 51, 0, 51, 0, 0, - 51, 51, 0, 51, 51, 0, 0, 51, 0, 0, - 0, 0, 0, 51, 0, 0, 51, 0, 51, 51, - 51, 0, 51, 7, 51, 51, 0, 52, 0, 0, - 51, 0, 51, 51, 51, 51, 0, 0, 52, 0, - 51, 0, 51, 52, 51, 0, 51, 52, 0, 0, - 52, 0, 0, 0, 0, 0, 51, 0, 0, 51, - 0, 51, 52, 52, 0, 51, 0, 52, 52, 0, - 0, 0, 0, 52, 0, 52, 52, 52, 52, 0, - 0, 0, 0, 52, 0, 51, 1002, 52, 0, 52, - 51, 0, 0, 0, 0, 0, 0, 0, 0, 52, - 0, 51, 52, 0, 52, 0, 51, 0, 52, 0, - 51, 0, 0, 51, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 51, 51, 0, 52, 0, - 51, 51, 0, 52, 0, 0, 51, 52, 51, 51, - 51, 51, 0, 0, 0, 0, 51, 0, 52, 0, - 51, 0, 51, 52, 0, 0, 0, 52, 0, 0, - 52, 0, 51, 0, 0, 51, 0, 51, 0, 0, - 0, 51, 52, 52, 0, 0, 0, 52, 52, 0, - 0, 0, 0, 52, 0, 52, 52, 52, 52, 0, - 0, 51, 0, 52, 0, 0, 0, 52, 0, 52, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, - 0, 55, 52, 0, 52, 0, 0, 0, 52, 56, - 24, 57, 25, 0, 0, 26, 58, 0, 59, 60, - 27, 61, 62, 63, 28, 0, 0, 0, 52, 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, 343, 87, - 88, 0, 0, 0, 343, 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, - 343, 102, 0, 0, 0, 0, 0, 103, 104, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 343, 0, 0, 0, 0, 0, - 343, 0, 105, 106, 107, 108, 0, 0, 0, 0, - 0, 343, 0, 0, 196, 0, 343, 0, 343, 343, + 0, 51, 51, 0, 51, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 51, 51, 0, 0, + 7, 51, 51, 0, 52, 0, 0, 51, 0, 51, + 51, 51, 51, 0, 0, 52, 0, 51, 0, 0, + 52, 51, 0, 51, 52, 0, 0, 52, 0, 0, + 0, 0, 0, 51, 0, 0, 51, 0, 51, 52, + 52, 0, 51, 1006, 52, 52, 0, 51, 0, 0, + 52, 0, 52, 52, 52, 52, 0, 0, 51, 0, + 52, 0, 51, 51, 52, 0, 52, 51, 0, 0, + 51, 0, 0, 0, 0, 0, 52, 0, 0, 52, + 0, 52, 51, 51, 0, 52, 52, 51, 51, 0, + 52, 0, 0, 51, 0, 51, 51, 51, 51, 0, + 0, 52, 0, 51, 0, 52, 52, 51, 0, 51, + 52, 0, 0, 52, 0, 0, 0, 0, 0, 51, + 0, 0, 51, 0, 51, 52, 52, 0, 51, 0, + 52, 52, 0, 0, 0, 0, 52, 0, 52, 52, + 52, 52, 0, 0, 0, 0, 52, 0, 51, 0, + 52, 0, 52, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 52, 0, 55, 52, 0, 52, 0, 0, + 0, 52, 56, 24, 57, 25, 0, 0, 26, 58, + 0, 59, 60, 27, 61, 62, 63, 28, 0, 0, + 0, 52, 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, 792, 87, 88, 0, 0, 0, 792, 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, 792, 102, 0, 0, 0, 0, 0, + 103, 104, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 343, 0, 0, + 0, 0, 0, 343, 0, 105, 106, 107, 108, 0, + 0, 0, 0, 0, 792, 0, 0, 196, 0, 792, + 0, 792, 792, 792, 792, 792, 792, 792, 792, 792, + 792, 792, 792, 0, 0, 0, 0, 0, 792, 343, + 0, 0, 0, 792, 792, 792, 792, 792, 792, 792, + 792, 792, 0, 792, 792, 0, 792, 792, 792, 792, + 792, 792, 792, 792, 792, 792, 0, 792, 792, 792, + 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, + 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, + 343, 0, 0, 792, 0, 792, 343, 0, 792, 0, + 0, 0, 0, 0, 792, 0, 0, 0, 0, 343, + 0, 0, 343, 0, 343, 343, 0, 0, 0, 343, + 343, 0, 0, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 0, 0, 0, 0, 0, 343, 343, 0, 0, 0, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 0, - 343, 343, 0, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 0, 343, 343, 343, 343, 343, 343, + 343, 343, 343, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 343, 343, 0, 0, 0, 0, 0, + 0, 343, 0, 0, 343, 0, 0, 0, 0, 0, + 343, 0, 201, 343, 0, 0, 0, 0, 343, 0, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 0, 515, 0, 0, - 343, 0, 343, 515, 0, 343, 0, 0, 0, 0, - 0, 343, 0, 0, 0, 0, 343, 0, 0, 343, - 0, 343, 343, 0, 0, 0, 343, 343, 0, 0, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 515, + 343, 343, 0, 0, 0, 0, 0, 343, 0, 0, + 0, 0, 343, 343, 343, 343, 343, 343, 343, 343, + 343, 997, 343, 343, 202, 343, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 0, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 343, 343, 0, 0, 0, 0, 0, 0, 343, 0, - 0, 343, 0, 0, 0, 0, 0, 343, 0, 201, - 515, 0, 0, 0, 0, 515, 0, 515, 515, 515, - 515, 515, 515, 515, 515, 515, 515, 515, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 515, 515, - 515, 515, 515, 515, 515, 515, 515, 515, 993, 515, - 515, 202, 515, 515, 515, 515, 515, 515, 515, 515, - 515, 515, 0, 515, 515, 515, 515, 515, 515, 515, - 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, - 515, 515, 515, 515, 515, 0, 511, 0, 0, 0, - 0, 515, 511, 0, 0, 0, 0, 0, 0, 0, - 515, 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, 511, 0, - 0, 993, 0, 0, 0, 0, 993, 0, 993, 993, - 993, 993, 993, 993, 993, 993, 993, 993, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 399, 0, 0, - 993, 0, 993, 399, 993, 0, 993, 993, 993, 511, - 0, 0, 0, 0, 511, 0, 511, 511, 511, 511, - 511, 511, 511, 511, 511, 511, 511, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 511, 511, 399, - 511, 511, 511, 511, 511, 511, 511, 0, 511, 511, - 0, 511, 511, 511, 511, 511, 511, 511, 511, 511, - 511, 993, 511, 511, 511, 511, 511, 511, 511, 511, - 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, - 511, 511, 511, 511, 0, 519, 0, 0, 0, 0, - 511, 519, 0, 511, 0, 0, 0, 0, 0, 511, - 0, 0, 0, 0, 336, 0, 0, 0, 0, 399, - 336, 0, 399, 399, 399, 399, 0, 399, 0, 399, - 399, 0, 399, 399, 399, 399, 399, 519, 399, 399, - 399, 399, 0, 399, 399, 399, 399, 399, 399, 399, + 343, 343, 343, 343, 343, 343, 343, 343, 0, 516, + 0, 0, 343, 0, 343, 516, 0, 343, 0, 0, + 0, 0, 0, 343, 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, 516, 0, 0, 997, 0, 0, 0, 0, 997, + 0, 997, 997, 997, 997, 997, 997, 997, 997, 997, + 997, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 997, 0, 997, 0, 997, 0, 997, + 997, 997, 516, 0, 0, 0, 0, 516, 0, 516, + 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, + 0, 516, 516, 0, 516, 516, 516, 516, 516, 516, + 516, 516, 516, 516, 997, 516, 516, 516, 516, 516, + 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, + 516, 516, 516, 516, 516, 516, 516, 0, 512, 798, + 0, 0, 0, 516, 512, 0, 0, 0, 24, 0, + 25, 0, 516, 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, + 512, 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, 399, + 0, 0, 0, 39, 40, 399, 0, 41, 0, 0, + 799, 512, 0, 0, 0, 0, 512, 0, 512, 512, + 512, 512, 512, 512, 512, 512, 512, 512, 512, 0, + 0, 0, 0, 0, 0, 0, 291, 0, 0, 512, + 512, 399, 512, 512, 512, 512, 512, 512, 512, 0, + 512, 512, 0, 512, 512, 512, 512, 512, 512, 512, + 512, 512, 512, 0, 512, 512, 512, 512, 512, 512, + 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, + 512, 512, 512, 512, 512, 512, 0, 520, 0, 0, + 0, 325, 512, 520, 0, 512, 0, 0, 0, 0, + 0, 512, 0, 0, 0, 0, 336, 0, 0, 0, + 0, 399, 336, 0, 399, 399, 399, 399, 0, 399, + 0, 399, 399, 0, 399, 399, 399, 399, 399, 520, + 399, 399, 399, 399, 0, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, - 399, 399, 399, 399, 399, 0, 0, 0, 0, 336, - 0, 399, 0, 0, 399, 0, 0, 0, 519, 0, - 399, 0, 0, 519, 0, 519, 519, 519, 519, 519, - 519, 519, 519, 519, 519, 519, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 519, 0, 519, - 519, 519, 519, 519, 519, 519, 0, 519, 519, 0, - 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, - 0, 519, 519, 519, 519, 519, 519, 519, 519, 519, - 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, - 519, 519, 519, 0, 343, 790, 0, 0, 0, 519, - 343, 0, 519, 0, 24, 0, 25, 0, 519, 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, 343, 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, 791, 343, 0, 0, - 0, 0, 343, 0, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 0, 0, 0, 0, 0, - 0, 0, 291, 0, 0, 0, 343, 0, 343, 343, - 343, 343, 343, 343, 343, 0, 343, 343, 0, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 0, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, + 399, 399, 399, 399, 399, 399, 399, 0, 0, 0, + 0, 336, 0, 399, 0, 0, 399, 0, 0, 0, + 520, 0, 399, 0, 0, 520, 0, 520, 520, 520, + 520, 520, 520, 520, 520, 520, 520, 520, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 520, + 0, 520, 520, 520, 520, 520, 520, 520, 0, 520, + 520, 0, 520, 520, 520, 520, 520, 520, 520, 520, + 520, 520, 0, 520, 520, 520, 520, 520, 520, 520, + 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, + 520, 520, 520, 520, 520, 0, 343, 582, 0, 0, + 0, 520, 343, 0, 520, 0, 24, 0, 25, 0, + 520, 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, 343, 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, 324, 343, + 0, 0, 0, 0, 343, 0, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 343, 0, + 343, 343, 343, 343, 343, 343, 343, 0, 343, 343, + 0, 343, 343, 343, 343, 343, 343, 343, 343, 343, + 343, 0, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 0, 444, 578, 0, 0, 325, 343, 444, - 0, 343, 0, 24, 0, 25, 0, 343, 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, 444, 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, 324, 444, 0, 0, 0, - 0, 444, 0, 444, 444, 444, 444, 444, 444, 444, - 444, 444, 444, 444, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 444, 0, 444, 444, 444, - 444, 444, 444, 444, 0, 444, 444, 0, 444, 444, - 444, 444, 444, 444, 444, 444, 444, 444, 0, 444, + 343, 343, 343, 343, 0, 444, 641, 0, 0, 368, + 343, 444, 0, 343, 0, 24, 0, 25, 0, 343, + 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, 444, 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, 324, 444, 0, + 0, 0, 0, 444, 0, 444, 444, 444, 444, 444, + 444, 444, 444, 444, 444, 444, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 444, 0, 444, + 444, 444, 444, 444, 444, 444, 0, 444, 444, 0, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, + 0, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, - 444, 0, 343, 0, 0, 0, 366, 444, 343, 634, - 444, 0, 788, 0, 0, 0, 444, 0, 24, 0, - 25, 0, 0, 26, 0, 0, 0, 0, 27, 0, - 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, - 0, 30, 0, 0, 343, 0, 0, 0, 32, 0, - 0, 0, 0, 33, 0, 0, 0, 34, 0, 0, - 788, 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, - 324, 0, 0, 0, 0, 553, 0, 0, 0, 0, - 0, 553, 0, 343, 0, 0, 0, 0, 0, 343, - 0, 0, 0, 0, 343, 343, 343, 343, 343, 343, - 343, 788, 343, 0, 343, 343, 0, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 553, 343, 343, + 444, 444, 444, 0, 343, 0, 0, 0, 368, 444, + 343, 643, 444, 0, 792, 0, 0, 0, 444, 0, + 24, 0, 25, 0, 0, 26, 0, 0, 0, 0, + 27, 0, 0, 0, 28, 0, 0, 0, 0, 0, + 0, 0, 0, 30, 0, 0, 343, 0, 0, 0, + 32, 0, 0, 0, 0, 33, 0, 0, 0, 34, + 0, 0, 792, 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, 324, 0, 0, 0, 0, 554, 0, 0, + 0, 0, 0, 554, 0, 343, 0, 0, 0, 0, + 0, 343, 0, 0, 0, 0, 343, 343, 343, 343, + 343, 343, 343, 792, 343, 0, 343, 343, 0, 343, + 343, 343, 343, 343, 343, 343, 343, 343, 343, 554, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 0, 0, 0, 0, 343, 0, 343, 0, 0, 343, - 0, 366, 0, 0, 0, 343, 0, 0, 553, 0, - 0, 0, 625, 553, 0, 553, 553, 553, 553, 553, - 553, 553, 553, 553, 553, 553, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 553, 0, 553, - 0, 553, 0, 553, 553, 553, 0, 553, 553, 0, - 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, - 0, 0, 0, 553, 553, 553, 553, 553, 553, 553, - 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, - 553, 575, 553, 0, 0, 0, 0, 575, 0, 0, - 0, 0, 0, 0, 0, 625, 0, 0, 553, 0, - 625, 0, 625, 625, 625, 625, 625, 625, 625, 625, - 625, 625, 625, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 575, 625, 0, 625, 0, 625, 0, - 625, 625, 625, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 625, 0, 0, 582, - 0, 0, 0, 0, 0, 582, 0, 0, 0, 0, - 0, 0, 0, 0, 575, 0, 0, 0, 0, 575, - 0, 575, 575, 575, 575, 575, 575, 575, 575, 575, - 575, 575, 0, 0, 0, 625, 0, 0, 0, 0, - 0, 582, 0, 575, 0, 575, 0, 575, 0, 575, - 575, 575, 0, 575, 575, 0, 0, 575, 575, 575, - 575, 575, 575, 575, 575, 575, 0, 0, 0, 575, - 575, 575, 575, 575, 575, 575, 575, 0, 0, 0, - 0, 0, 582, 0, 0, 0, 0, 582, 575, 582, - 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, - 0, 0, 0, 583, 575, 0, 0, 0, 0, 583, - 0, 582, 0, 582, 0, 582, 0, 582, 582, 582, - 0, 582, 582, 0, 0, 582, 582, 582, 582, 0, - 0, 0, 582, 582, 0, 0, 0, 582, 582, 582, - 582, 582, 582, 582, 582, 583, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 582, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 584, 582, 0, 0, 0, 0, 584, 0, 0, - 0, 0, 0, 0, 0, 0, 583, 0, 0, 0, - 0, 583, 0, 583, 583, 583, 583, 583, 583, 583, - 583, 583, 583, 583, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 584, 0, 583, 0, 583, 0, 583, - 0, 583, 583, 583, 0, 583, 583, 0, 0, 583, - 583, 583, 583, 0, 0, 0, 583, 583, 0, 591, - 0, 583, 583, 583, 583, 583, 583, 583, 583, 0, - 0, 0, 0, 0, 584, 0, 0, 0, 0, 584, - 583, 584, 584, 584, 584, 584, 584, 584, 584, 584, - 584, 584, 0, 0, 0, 0, 583, 0, 0, 0, - 0, 0, 0, 584, 0, 584, 0, 584, 0, 584, - 584, 584, 0, 584, 584, 0, 0, 584, 584, 584, - 584, 0, 0, 0, 584, 584, 0, 592, 0, 584, - 584, 584, 584, 584, 584, 584, 584, 0, 0, 0, - 0, 0, 591, 0, 0, 0, 0, 591, 584, 591, - 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, - 0, 0, 0, 0, 584, 0, 0, 0, 0, 0, - 0, 591, 0, 591, 0, 591, 0, 591, 591, 591, - 0, 0, 0, 0, 0, 591, 591, 591, 591, 0, - 0, 0, 591, 591, 0, 593, 0, 591, 591, 591, - 591, 591, 591, 591, 591, 0, 0, 0, 0, 0, - 592, 0, 0, 0, 0, 592, 591, 592, 592, 592, - 592, 592, 592, 592, 592, 592, 592, 592, 0, 0, - 0, 0, 591, 0, 0, 0, 0, 0, 0, 592, - 0, 592, 0, 592, 0, 592, 592, 592, 0, 0, - 0, 0, 0, 592, 592, 592, 592, 0, 0, 0, - 592, 592, 0, 596, 0, 592, 592, 592, 592, 592, - 592, 592, 592, 0, 0, 0, 0, 0, 593, 0, - 0, 0, 0, 593, 592, 593, 593, 593, 593, 593, - 593, 593, 593, 593, 593, 593, 0, 0, 0, 0, - 592, 0, 0, 0, 0, 0, 0, 593, 0, 593, - 0, 593, 0, 593, 593, 593, 0, 0, 0, 0, - 0, 593, 593, 593, 593, 0, 0, 0, 593, 593, - 0, 597, 0, 593, 593, 593, 593, 593, 593, 593, - 593, 0, 0, 0, 0, 0, 596, 0, 0, 0, - 0, 596, 593, 596, 596, 596, 596, 596, 596, 596, - 596, 596, 596, 596, 0, 0, 0, 0, 593, 0, - 0, 0, 0, 0, 0, 596, 0, 596, 0, 596, - 0, 596, 596, 596, 0, 0, 0, 0, 0, 596, - 596, 596, 596, 0, 0, 0, 596, 596, 0, 598, - 0, 0, 0, 596, 596, 596, 596, 596, 596, 0, - 0, 0, 0, 0, 597, 0, 0, 0, 0, 597, - 596, 597, 597, 597, 597, 597, 597, 597, 597, 597, - 597, 597, 0, 0, 0, 0, 596, 0, 0, 0, - 0, 0, 0, 597, 0, 597, 0, 597, 0, 597, - 597, 597, 0, 0, 0, 0, 0, 597, 597, 597, - 597, 0, 0, 0, 597, 597, 0, 599, 0, 0, - 0, 597, 597, 597, 597, 597, 597, 0, 0, 0, - 0, 0, 598, 0, 0, 0, 0, 598, 597, 598, - 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, - 0, 0, 0, 0, 597, 0, 0, 0, 0, 0, - 0, 598, 0, 598, 0, 598, 0, 598, 598, 598, - 0, 0, 0, 0, 0, 598, 598, 598, 598, 0, - 0, 0, 598, 598, 0, 600, 0, 0, 0, 598, - 598, 598, 598, 598, 598, 0, 0, 0, 0, 0, - 599, 0, 0, 0, 0, 599, 598, 599, 599, 599, - 599, 599, 599, 599, 599, 599, 599, 599, 0, 0, - 0, 0, 598, 0, 0, 0, 0, 0, 0, 599, - 0, 599, 0, 599, 0, 599, 599, 599, 0, 0, - 0, 0, 0, 599, 599, 599, 599, 0, 0, 0, - 599, 599, 0, 605, 0, 0, 0, 599, 599, 599, - 599, 599, 599, 0, 0, 0, 0, 0, 600, 0, - 0, 0, 0, 600, 599, 600, 600, 600, 600, 600, - 600, 600, 600, 600, 600, 600, 0, 0, 0, 0, - 599, 0, 0, 0, 0, 0, 0, 600, 0, 600, - 0, 600, 0, 600, 600, 600, 0, 0, 0, 0, - 0, 600, 600, 600, 600, 0, 0, 0, 600, 600, - 0, 606, 0, 0, 0, 600, 600, 600, 600, 600, - 600, 0, 0, 0, 0, 0, 605, 0, 0, 0, - 0, 605, 600, 605, 605, 605, 605, 605, 605, 605, - 605, 605, 605, 605, 0, 0, 0, 0, 600, 0, - 0, 0, 0, 0, 0, 605, 0, 605, 0, 605, - 0, 605, 605, 605, 0, 0, 0, 0, 0, 0, - 0, 605, 605, 0, 0, 0, 605, 605, 0, 607, - 0, 0, 0, 0, 0, 605, 605, 605, 605, 0, - 0, 0, 0, 0, 606, 0, 0, 0, 0, 606, - 605, 606, 606, 606, 606, 606, 606, 606, 606, 606, - 606, 606, 0, 0, 0, 0, 605, 0, 0, 0, - 0, 0, 0, 606, 0, 606, 0, 606, 0, 606, - 606, 606, 0, 0, 0, 0, 0, 0, 0, 606, - 606, 0, 0, 0, 606, 606, 0, 610, 0, 0, - 0, 0, 0, 606, 606, 606, 606, 0, 0, 0, - 0, 0, 607, 0, 0, 0, 0, 607, 606, 607, - 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, - 0, 0, 0, 0, 606, 0, 0, 0, 0, 0, - 0, 607, 0, 607, 0, 607, 0, 607, 607, 607, - 0, 0, 0, 0, 0, 0, 0, 607, 607, 0, - 0, 0, 607, 607, 0, 611, 0, 0, 0, 0, - 0, 607, 607, 607, 607, 0, 0, 0, 0, 0, - 610, 0, 0, 0, 0, 610, 607, 610, 610, 610, - 610, 610, 610, 610, 610, 610, 610, 610, 0, 0, - 0, 0, 607, 0, 0, 0, 0, 0, 0, 610, - 0, 610, 0, 610, 0, 610, 610, 610, 0, 0, - 0, 0, 0, 0, 0, 610, 610, 0, 0, 0, - 610, 610, 0, 613, 0, 0, 0, 0, 0, 0, - 0, 610, 610, 0, 0, 0, 0, 0, 611, 0, - 0, 0, 0, 611, 610, 611, 611, 611, 611, 611, - 611, 611, 611, 611, 611, 611, 0, 0, 0, 0, - 610, 0, 0, 0, 0, 0, 0, 611, 0, 611, - 0, 611, 0, 611, 611, 611, 0, 0, 0, 0, - 0, 0, 0, 611, 611, 0, 0, 0, 611, 611, - 0, 614, 0, 0, 0, 0, 0, 0, 0, 611, - 611, 0, 0, 0, 0, 0, 613, 0, 0, 0, - 0, 613, 611, 613, 613, 613, 613, 613, 613, 613, - 613, 613, 613, 613, 0, 0, 0, 0, 611, 0, - 0, 0, 0, 0, 0, 613, 0, 613, 0, 613, - 0, 613, 613, 613, 0, 0, 0, 0, 0, 0, - 0, 0, 613, 0, 0, 0, 613, 613, 0, 617, - 0, 0, 0, 0, 0, 0, 0, 613, 613, 0, - 0, 0, 0, 0, 614, 0, 0, 0, 0, 614, - 613, 614, 614, 614, 614, 614, 614, 614, 614, 614, - 614, 614, 0, 0, 0, 0, 613, 0, 0, 0, - 0, 0, 0, 614, 0, 614, 0, 614, 0, 614, - 614, 614, 0, 0, 0, 0, 0, 0, 0, 0, - 614, 0, 0, 0, 614, 614, 0, 619, 0, 0, - 0, 0, 0, 0, 0, 614, 614, 0, 0, 0, - 0, 0, 617, 0, 0, 0, 0, 617, 614, 617, - 617, 617, 617, 617, 617, 617, 617, 617, 617, 617, - 0, 0, 0, 0, 614, 0, 0, 0, 0, 0, - 0, 617, 0, 617, 0, 617, 0, 617, 617, 617, - 0, 0, 0, 0, 0, 0, 0, 0, 617, 0, - 0, 0, 0, 617, 0, 620, 0, 0, 0, 0, - 0, 0, 0, 617, 617, 0, 0, 0, 0, 0, - 619, 0, 0, 0, 0, 619, 617, 619, 619, 619, - 619, 619, 619, 619, 619, 619, 619, 619, 0, 0, - 0, 0, 617, 0, 0, 0, 0, 0, 0, 619, - 0, 619, 0, 619, 0, 619, 619, 619, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 619, 0, 623, 0, 0, 0, 0, 0, 0, - 0, 619, 619, 0, 0, 0, 0, 0, 620, 0, - 0, 0, 0, 620, 619, 620, 620, 620, 620, 620, - 620, 620, 620, 620, 620, 620, 0, 0, 0, 0, - 619, 0, 0, 0, 0, 0, 0, 620, 0, 620, - 0, 620, 0, 620, 620, 620, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 343, 620, - 0, 0, 788, 0, 0, 0, 0, 0, 0, 620, - 620, 0, 0, 0, 0, 0, 623, 0, 0, 0, - 0, 623, 620, 623, 623, 623, 623, 623, 623, 623, - 623, 623, 623, 623, 343, 0, 0, 0, 620, 0, - 0, 0, 0, 0, 0, 623, 0, 623, 0, 623, - 788, 623, 623, 623, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 623, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 623, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 623, 0, 0, 343, 0, 0, 0, 0, 0, 343, - 0, 0, 0, 0, 343, 343, 623, 343, 0, 343, - 0, 788, 343, 0, 343, 343, 0, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 0, 343, 343, + 343, 343, 0, 0, 0, 0, 343, 0, 343, 0, + 0, 343, 0, 368, 0, 0, 0, 343, 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, 554, 554, 554, 554, 554, 554, 554, 554, + 554, 554, 365, 0, 0, 554, 554, 554, 554, 554, + 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, + 554, 554, 554, 576, 554, 365, 0, 0, 0, 576, + 0, 0, 0, 0, 0, 0, 0, 0, 365, 0, + 554, 0, 0, 365, 0, 0, 237, 0, 365, 0, + 365, 365, 365, 365, 0, 0, 0, 0, 365, 0, + 0, 0, 365, 0, 0, 576, 365, 0, 0, 0, + 0, 0, 0, 0, 365, 0, 0, 365, 0, 365, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 583, 0, 0, 0, 0, 0, 583, 0, 0, + 0, 0, 0, 365, 0, 0, 576, 0, 0, 0, + 0, 576, 0, 576, 576, 576, 576, 576, 576, 576, + 576, 576, 576, 576, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 583, 0, 576, 0, 576, 0, 576, + 0, 576, 576, 576, 0, 576, 576, 0, 0, 576, + 576, 576, 576, 576, 576, 576, 576, 576, 0, 365, + 0, 576, 576, 576, 576, 576, 576, 576, 576, 0, + 0, 0, 0, 0, 583, 0, 0, 0, 0, 583, + 576, 583, 583, 583, 583, 583, 583, 583, 583, 583, + 583, 583, 0, 0, 0, 584, 576, 0, 0, 0, + 0, 584, 0, 583, 0, 583, 0, 583, 0, 583, + 583, 583, 0, 583, 583, 0, 0, 583, 583, 583, + 583, 0, 0, 0, 583, 583, 0, 0, 0, 583, + 583, 583, 583, 583, 583, 583, 583, 584, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 583, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 585, 583, 0, 0, 0, 0, 585, + 0, 0, 0, 0, 0, 0, 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, 0, 585, 0, 584, 0, 584, + 0, 584, 0, 584, 584, 584, 0, 584, 584, 0, + 0, 584, 584, 584, 584, 0, 0, 0, 584, 584, + 0, 592, 0, 584, 584, 584, 584, 584, 584, 584, + 584, 0, 0, 0, 0, 0, 585, 0, 0, 0, + 0, 585, 584, 585, 585, 585, 585, 585, 585, 585, + 585, 585, 585, 585, 0, 0, 0, 0, 584, 0, + 0, 0, 0, 0, 0, 585, 0, 585, 0, 585, + 0, 585, 585, 585, 0, 585, 585, 0, 0, 585, + 585, 585, 585, 0, 0, 0, 585, 585, 0, 593, + 0, 585, 585, 585, 585, 585, 585, 585, 585, 0, + 0, 0, 0, 0, 592, 0, 0, 0, 0, 592, + 585, 592, 592, 592, 592, 592, 592, 592, 592, 592, + 592, 592, 0, 0, 0, 0, 585, 0, 0, 0, + 0, 0, 0, 592, 0, 592, 0, 592, 0, 592, + 592, 592, 0, 0, 0, 0, 0, 592, 592, 592, + 592, 0, 0, 0, 592, 592, 0, 594, 0, 592, + 592, 592, 592, 592, 592, 592, 592, 0, 0, 0, + 0, 0, 593, 0, 0, 0, 0, 593, 592, 593, + 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, + 0, 0, 0, 0, 592, 0, 0, 0, 0, 0, + 0, 593, 0, 593, 0, 593, 0, 593, 593, 593, + 0, 0, 0, 0, 0, 593, 593, 593, 593, 0, + 0, 0, 593, 593, 0, 597, 0, 593, 593, 593, + 593, 593, 593, 593, 593, 0, 0, 0, 0, 0, + 594, 0, 0, 0, 0, 594, 593, 594, 594, 594, + 594, 594, 594, 594, 594, 594, 594, 594, 0, 0, + 0, 0, 593, 0, 0, 0, 0, 0, 0, 594, + 0, 594, 0, 594, 0, 594, 594, 594, 0, 0, + 0, 0, 0, 594, 594, 594, 594, 0, 0, 0, + 594, 594, 0, 598, 0, 594, 594, 594, 594, 594, + 594, 594, 594, 0, 0, 0, 0, 0, 597, 0, + 0, 0, 0, 597, 594, 597, 597, 597, 597, 597, + 597, 597, 597, 597, 597, 597, 0, 0, 0, 0, + 594, 0, 0, 0, 0, 0, 0, 597, 0, 597, + 0, 597, 0, 597, 597, 597, 0, 0, 0, 0, + 0, 597, 597, 597, 597, 0, 0, 0, 597, 597, + 0, 599, 0, 0, 0, 597, 597, 597, 597, 597, + 597, 0, 0, 0, 0, 0, 598, 0, 0, 0, + 0, 598, 597, 598, 598, 598, 598, 598, 598, 598, + 598, 598, 598, 598, 0, 0, 0, 0, 597, 0, + 0, 0, 0, 0, 0, 598, 0, 598, 0, 598, + 0, 598, 598, 598, 0, 0, 0, 0, 0, 598, + 598, 598, 598, 0, 0, 0, 598, 598, 0, 600, + 0, 0, 0, 598, 598, 598, 598, 598, 598, 0, + 0, 0, 0, 0, 599, 0, 0, 0, 0, 599, + 598, 599, 599, 599, 599, 599, 599, 599, 599, 599, + 599, 599, 0, 0, 0, 0, 598, 0, 0, 0, + 0, 0, 0, 599, 0, 599, 0, 599, 0, 599, + 599, 599, 0, 0, 0, 0, 0, 599, 599, 599, + 599, 0, 0, 0, 599, 599, 0, 601, 0, 0, + 0, 599, 599, 599, 599, 599, 599, 0, 0, 0, + 0, 0, 600, 0, 0, 0, 0, 600, 599, 600, + 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, + 0, 0, 0, 0, 599, 0, 0, 0, 0, 0, + 0, 600, 0, 600, 0, 600, 0, 600, 600, 600, + 0, 0, 0, 0, 0, 600, 600, 600, 600, 0, + 0, 0, 600, 600, 0, 606, 0, 0, 0, 600, + 600, 600, 600, 600, 600, 0, 0, 0, 0, 0, + 601, 0, 0, 0, 0, 601, 600, 601, 601, 601, + 601, 601, 601, 601, 601, 601, 601, 601, 0, 0, + 0, 0, 600, 0, 0, 0, 0, 0, 0, 601, + 0, 601, 0, 601, 0, 601, 601, 601, 0, 0, + 0, 0, 0, 601, 601, 601, 601, 0, 0, 0, + 601, 601, 0, 607, 0, 0, 0, 601, 601, 601, + 601, 601, 601, 0, 0, 0, 0, 0, 606, 0, + 0, 0, 0, 606, 601, 606, 606, 606, 606, 606, + 606, 606, 606, 606, 606, 606, 0, 0, 0, 0, + 601, 0, 0, 0, 0, 0, 0, 606, 0, 606, + 0, 606, 0, 606, 606, 606, 0, 0, 0, 0, + 0, 0, 0, 606, 606, 0, 0, 0, 606, 606, + 0, 608, 0, 0, 0, 0, 0, 606, 606, 606, + 606, 0, 0, 0, 0, 0, 607, 0, 0, 0, + 0, 607, 606, 607, 607, 607, 607, 607, 607, 607, + 607, 607, 607, 607, 0, 0, 0, 0, 606, 0, + 0, 0, 0, 0, 0, 607, 0, 607, 0, 607, + 0, 607, 607, 607, 0, 0, 0, 0, 0, 0, + 0, 607, 607, 0, 0, 0, 607, 607, 0, 611, + 0, 0, 0, 0, 0, 607, 607, 607, 607, 0, + 0, 0, 0, 0, 608, 0, 0, 0, 0, 608, + 607, 608, 608, 608, 608, 608, 608, 608, 608, 608, + 608, 608, 0, 0, 0, 0, 607, 0, 0, 0, + 0, 0, 0, 608, 0, 608, 0, 608, 0, 608, + 608, 608, 0, 0, 0, 0, 0, 0, 0, 608, + 608, 0, 0, 0, 608, 608, 0, 612, 0, 0, + 0, 0, 0, 608, 608, 608, 608, 0, 0, 0, + 0, 0, 611, 0, 0, 0, 0, 611, 608, 611, + 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, + 0, 0, 0, 0, 608, 0, 0, 0, 0, 0, + 0, 611, 0, 611, 0, 611, 0, 611, 611, 611, + 0, 0, 0, 0, 0, 0, 0, 611, 611, 0, + 0, 0, 611, 611, 0, 614, 0, 0, 0, 0, + 0, 0, 0, 611, 611, 0, 0, 0, 0, 0, + 612, 0, 0, 0, 0, 612, 611, 612, 612, 612, + 612, 612, 612, 612, 612, 612, 612, 612, 0, 0, + 0, 0, 611, 0, 0, 0, 0, 0, 0, 612, + 0, 612, 0, 612, 0, 612, 612, 612, 0, 0, + 0, 0, 0, 0, 0, 612, 612, 0, 0, 0, + 612, 612, 0, 615, 0, 0, 0, 0, 0, 0, + 0, 612, 612, 0, 0, 0, 0, 0, 614, 0, + 0, 0, 0, 614, 612, 614, 614, 614, 614, 614, + 614, 614, 614, 614, 614, 614, 0, 0, 0, 0, + 612, 0, 0, 0, 0, 0, 0, 614, 0, 614, + 0, 614, 0, 614, 614, 614, 0, 0, 0, 0, + 0, 0, 0, 0, 614, 0, 0, 0, 614, 614, + 0, 617, 0, 0, 0, 0, 0, 0, 0, 614, + 614, 0, 0, 0, 0, 0, 615, 0, 0, 0, + 0, 615, 614, 615, 615, 615, 615, 615, 615, 615, + 615, 615, 615, 615, 0, 0, 0, 0, 614, 0, + 0, 0, 0, 0, 0, 615, 0, 615, 0, 615, + 0, 615, 615, 615, 0, 0, 0, 0, 0, 0, + 0, 0, 615, 0, 0, 0, 615, 615, 0, 618, + 0, 0, 0, 0, 0, 0, 0, 615, 615, 0, + 0, 0, 0, 0, 617, 0, 0, 0, 0, 617, + 615, 617, 617, 617, 617, 617, 617, 617, 617, 617, + 617, 617, 0, 0, 0, 0, 615, 0, 0, 0, + 0, 0, 0, 617, 0, 617, 0, 617, 0, 617, + 617, 617, 0, 0, 0, 0, 0, 0, 0, 0, + 617, 0, 0, 0, 0, 617, 0, 621, 0, 0, + 0, 0, 0, 0, 0, 617, 617, 0, 0, 0, + 0, 0, 618, 0, 0, 0, 0, 618, 617, 618, + 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, + 0, 0, 0, 0, 617, 0, 0, 0, 0, 0, + 0, 618, 0, 618, 0, 618, 0, 618, 618, 618, + 0, 0, 0, 0, 0, 0, 0, 0, 618, 0, + 0, 0, 0, 618, 0, 623, 0, 0, 0, 0, + 0, 0, 0, 618, 618, 0, 0, 0, 0, 0, + 621, 0, 0, 0, 0, 621, 618, 621, 621, 621, + 621, 621, 621, 621, 621, 621, 621, 621, 0, 0, + 0, 0, 618, 0, 0, 0, 0, 0, 0, 621, + 0, 621, 0, 621, 0, 621, 621, 621, 0, 0, + 0, 624, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 621, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 621, 621, 0, 0, 0, 0, 0, 623, 0, + 0, 0, 0, 623, 621, 623, 623, 623, 623, 623, + 623, 623, 623, 623, 623, 623, 0, 0, 0, 0, + 621, 0, 0, 0, 0, 0, 0, 623, 0, 623, + 0, 623, 0, 623, 623, 623, 0, 0, 0, 0, + 343, 0, 0, 0, 792, 0, 0, 0, 0, 623, + 0, 0, 0, 0, 624, 0, 0, 0, 0, 624, + 623, 624, 624, 624, 624, 624, 624, 624, 624, 624, + 624, 624, 623, 0, 0, 0, 343, 0, 0, 0, + 0, 0, 0, 624, 0, 624, 0, 624, 623, 624, + 624, 624, 792, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 624, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 624, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 624, 0, + 0, 0, 0, 0, 0, 343, 0, 0, 0, 0, + 0, 343, 0, 0, 624, 0, 343, 343, 0, 343, + 0, 343, 0, 792, 343, 0, 343, 343, 0, 343, + 343, 343, 343, 343, 343, 343, 343, 343, 343, 0, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 0, 0, 55, 0, 343, 0, 343, 0, 0, 343, - 56, 24, 57, 25, 0, 343, 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, + 343, 343, 0, 0, 55, 0, 343, 0, 343, 0, + 0, 343, 56, 24, 57, 25, 0, 343, 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, 266, 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, 0, 266, - 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, 571, 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, 1002, 0, 0, 0, 105, + 572, 107, 108, 1002, 1002, 1002, 1002, 0, 0, 1002, + 1002, 0, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 0, + 0, 0, 0, 0, 1002, 0, 1002, 1002, 1002, 1002, + 1002, 1002, 0, 0, 1002, 0, 0, 0, 1002, 1002, + 0, 1002, 1002, 1002, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1002, 0, 1002, 0, 1002, 1002, 0, + 0, 1002, 0, 1002, 1002, 1002, 1002, 1002, 1002, 1002, + 1002, 1002, 1002, 1002, 1002, 0, 1002, 0, 0, 1002, + 1002, 0, 0, 1002, 1002, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1002, 1002, + 1002, 1002, 1002, 0, 0, 0, 1002, 0, 0, 0, + 1002, 0, 0, 0, 0, 1002, 1002, 1002, 1002, 1002, + 0, 0, 0, 1002, 0, 1002, 0, 0, 0, 0, + 0, 1002, 1002, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 843, 0, 0, 0, 1002, 1002, 1002, 1002, + 843, 843, 843, 843, 0, 0, 843, 843, 0, 843, + 843, 843, 843, 843, 843, 843, 0, 0, 0, 0, + 0, 843, 0, 843, 843, 843, 843, 843, 843, 0, + 0, 843, 0, 0, 0, 843, 843, 0, 843, 843, + 843, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 843, 0, 843, 0, 843, 843, 0, 0, 843, 0, + 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, + 843, 843, 0, 843, 0, 0, 843, 843, 0, 0, + 843, 843, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 843, 843, 843, 843, 843, + 0, 0, 0, 843, 0, 0, 0, 843, 0, 0, + 0, 0, 843, 843, 843, 843, 843, 0, 0, 0, + 843, 0, 843, 0, 0, 0, 0, 0, 843, 843, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 612, + 0, 0, 0, 843, 843, 843, 843, 56, 24, 0, + 25, 0, 0, 26, 254, 0, 950, 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, 613, + 0, 0, 0, 0, 0, 32, 614, 0, 0, 36, + 33, 37, 74, 0, 34, 38, 0, 0, 76, 0, + 78, 0, 80, 39, 40, 255, 36, 41, 37, 0, + 0, 0, 38, 0, 615, 0, 0, 87, 88, 0, + 39, 40, 0, 0, 41, 0, 0, 324, 0, 0, 0, 0, 89, 90, 91, 92, 93, 0, 0, 0, - 94, 0, 0, 0, 95, 0, 0, 0, 0, 96, + 0, 0, 0, 0, 95, 0, 0, 616, 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, 567, 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, + 0, 0, 0, 0, 0, 0, 783, 0, 0, 0, + 105, 106, 107, 108, 56, 24, 0, 25, 0, 0, + 26, 254, 0, 1098, 0, 27, 61, 62, 368, 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, 255, 36, 41, 37, 0, 0, 0, 38, + 0, 86, 0, 0, 87, 88, 0, 39, 40, 0, + 0, 41, 0, 0, 324, 0, 0, 0, 0, 89, + 90, 91, 92, 302, 0, 0, 0, 531, 784, 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, 976, 0, 0, 0, 105, 303, 107, + 108, 56, 24, 0, 25, 0, 0, 26, 254, 0, + 0, 0, 27, 61, 62, 368, 28, 0, 0, 179, + 0, 179, 64, 0, 179, 30, 0, 0, 0, 179, + 0, 0, 32, 179, 0, 0, 0, 33, 0, 71, + 72, 34, 179, 613, 0, 0, 0, 0, 0, 179, + 614, 0, 0, 36, 179, 37, 74, 0, 179, 38, + 0, 0, 76, 0, 78, 0, 80, 39, 40, 255, + 179, 41, 179, 0, 0, 0, 179, 0, 615, 0, + 0, 87, 88, 0, 179, 179, 0, 0, 179, 0, + 0, 179, 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, 1026, 0, 0, 103, + 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 981, 0, 0, 0, 105, 106, 107, 108, 56, 24, + 0, 25, 0, 0, 26, 254, 0, 0, 0, 27, + 61, 62, 179, 28, 0, 0, 179, 0, 179, 64, + 0, 179, 30, 0, 0, 0, 179, 0, 0, 32, + 179, 0, 0, 0, 33, 0, 71, 72, 34, 179, + 0, 0, 0, 0, 0, 0, 179, 0, 0, 0, + 36, 179, 37, 74, 982, 179, 38, 0, 0, 76, + 0, 78, 0, 80, 39, 40, 255, 179, 41, 179, + 0, 0, 0, 179, 0, 86, 0, 0, 87, 88, + 0, 179, 179, 0, 0, 179, 0, 0, 179, 0, + 0, 0, 0, 89, 90, 91, 92, 302, 0, 0, + 0, 531, 0, 0, 0, 95, 0, 0, 0, 0, + 0, 97, 98, 99, 100, 0, 0, 0, 101, 0, + 102, 1026, 0, 0, 0, 0, 103, 104, 0, 0, + 0, 0, 0, 0, 56, 24, 0, 25, 0, 0, + 26, 254, 0, 0, 0, 27, 61, 62, 0, 28, + 0, 105, 303, 107, 108, 64, 0, 0, 30, 0, + 0, 0, 0, 0, 0, 32, 0, 0, 0, 179, 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, 36, 0, 37, 74, + 0, 0, 38, 0, 0, 76, 0, 78, 0, 80, + 39, 40, 255, 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, 94, 0, 0, - 0, 95, 0, 0, 0, 0, 96, 97, 98, 99, + 90, 91, 92, 768, 0, 0, 0, 769, 1050, 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, 998, 0, 0, 0, 105, 568, 107, - 108, 998, 998, 998, 998, 0, 0, 998, 998, 0, - 998, 998, 998, 998, 998, 998, 998, 0, 0, 0, - 0, 0, 998, 0, 998, 998, 998, 998, 998, 998, - 0, 0, 998, 0, 0, 0, 998, 998, 0, 998, - 998, 998, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 998, 0, 998, 0, 998, 998, 0, 0, 998, - 0, 998, 998, 998, 998, 998, 998, 998, 998, 998, - 998, 998, 998, 0, 998, 0, 0, 998, 998, 0, - 0, 998, 998, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 998, 998, 998, 998, - 998, 0, 0, 0, 998, 0, 0, 0, 998, 0, - 0, 0, 0, 998, 998, 998, 998, 998, 0, 0, - 0, 998, 0, 998, 0, 0, 0, 0, 0, 998, - 998, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 839, 0, 0, 0, 998, 998, 998, 998, 839, 839, - 839, 839, 0, 0, 839, 839, 0, 839, 839, 839, - 839, 839, 839, 839, 0, 0, 0, 0, 0, 839, - 0, 839, 839, 839, 839, 839, 839, 0, 0, 839, - 0, 0, 0, 839, 839, 0, 839, 839, 839, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 839, 0, - 839, 0, 839, 839, 0, 0, 839, 0, 839, 839, - 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, - 0, 839, 0, 0, 839, 839, 0, 0, 839, 839, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 839, 839, 839, 839, 839, 0, 0, - 0, 839, 0, 0, 0, 839, 0, 0, 0, 0, - 839, 839, 839, 839, 839, 0, 0, 0, 839, 0, - 839, 0, 0, 0, 0, 0, 839, 839, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 605, 0, 0, - 0, 839, 839, 839, 839, 56, 24, 0, 25, 0, - 0, 26, 254, 0, 636, 0, 27, 61, 62, 0, + 0, 0, 0, 0, 0, 783, 0, 105, 770, 107, + 108, 0, 0, 56, 24, 0, 25, 0, 771, 26, + 254, 0, 0, 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, 982, + 34, 38, 0, 0, 76, 0, 78, 0, 80, 39, + 40, 255, 36, 41, 37, 0, 0, 0, 38, 0, + 86, 0, 0, 87, 88, 0, 39, 40, 0, 0, + 41, 0, 0, 324, 0, 0, 0, 0, 89, 90, + 91, 92, 302, 0, 0, 0, 531, 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, 254, 0, 0, 0, + 27, 61, 62, 0, 28, 0, 105, 303, 107, 108, + 64, 0, 0, 30, 0, 0, 0, 0, 0, 0, + 32, 0, 0, 0, 368, 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, 255, 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, 768, 0, + 0, 0, 769, 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, 0, 0, + 783, 0, 105, 770, 107, 108, 0, 0, 56, 24, + 0, 25, 0, 771, 26, 254, 0, 0, 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, 255, 36, 41, 37, + 0, 0, 0, 38, 0, 86, 0, 0, 87, 88, + 0, 39, 40, 0, 0, 41, 0, 0, 533, 0, + 0, 0, 0, 89, 90, 91, 92, 302, 0, 0, + 0, 531, 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, 301, 0, 0, + 0, 105, 303, 107, 108, 56, 24, 0, 25, 0, + 0, 26, 254, 0, 0, 0, 27, 61, 62, 368, 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, 606, 0, 0, - 0, 0, 0, 32, 607, 0, 0, 36, 33, 37, + 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, 255, 36, 41, 37, 0, 0, 0, - 38, 0, 608, 0, 0, 87, 88, 0, 39, 40, - 0, 0, 41, 0, 0, 324, 0, 0, 0, 0, - 89, 90, 91, 92, 93, 0, 0, 0, 0, 0, - 0, 0, 95, 0, 0, 609, 0, 0, 97, 98, + 38, 0, 86, 0, 0, 87, 88, 0, 39, 40, + 0, 0, 41, 0, 0, 588, 0, 0, 0, 0, + 89, 90, 91, 92, 302, 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, 775, 0, 0, 0, 105, 106, + 0, 0, 0, 0, 310, 0, 0, 0, 105, 303, 107, 108, 56, 24, 0, 25, 0, 0, 26, 254, - 0, 940, 0, 27, 61, 62, 366, 28, 0, 0, + 0, 0, 0, 27, 61, 62, 368, 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, @@ -11486,237 +11675,89 @@ void case_1026() 38, 0, 0, 76, 0, 78, 0, 80, 39, 40, 255, 36, 41, 37, 0, 0, 0, 38, 0, 86, 0, 0, 87, 88, 0, 39, 40, 0, 0, 41, - 0, 0, 324, 0, 0, 0, 0, 89, 90, 91, - 92, 302, 0, 0, 0, 528, 776, 0, 0, 95, + 0, 0, 799, 0, 0, 0, 0, 89, 90, 91, + 92, 302, 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, 966, 0, 0, 0, 105, 303, 107, 108, 56, - 24, 0, 25, 0, 0, 26, 254, 0, 1087, 0, - 27, 61, 62, 366, 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, 606, 0, 0, 0, 0, 0, 32, 607, 0, - 0, 36, 33, 37, 74, 0, 34, 38, 0, 0, - 76, 0, 78, 0, 80, 39, 40, 255, 36, 41, - 37, 0, 0, 0, 38, 0, 608, 0, 0, 87, - 88, 0, 39, 40, 0, 0, 41, 0, 0, 324, + 0, 610, 0, 0, 0, 105, 303, 107, 108, 56, + 24, 0, 25, 0, 0, 26, 254, 0, 0, 0, + 27, 61, 62, 368, 28, 0, 0, 499, 0, 499, + 64, 0, 499, 30, 0, 0, 0, 499, 0, 0, + 32, 499, 0, 0, 0, 33, 0, 71, 72, 34, + 499, 0, 0, 0, 0, 0, 0, 499, 0, 0, + 0, 36, 499, 37, 74, 0, 499, 38, 0, 0, + 76, 0, 78, 0, 80, 39, 40, 255, 499, 41, + 499, 0, 0, 0, 499, 0, 86, 0, 0, 87, + 88, 0, 499, 499, 0, 0, 499, 0, 0, 499, 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, 971, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 866, 0, 0, 0, 105, 106, 107, 108, 56, 24, 0, 25, 0, 0, 26, 254, 0, 0, 0, 27, 61, 62, - 366, 28, 0, 0, 179, 0, 179, 64, 0, 179, - 30, 0, 0, 0, 179, 0, 0, 32, 179, 0, - 0, 0, 33, 0, 71, 72, 34, 179, 0, 0, - 0, 0, 0, 0, 179, 0, 0, 0, 36, 179, - 37, 74, 972, 179, 38, 0, 0, 76, 0, 78, - 0, 80, 39, 40, 255, 179, 41, 179, 0, 0, - 0, 179, 0, 86, 0, 0, 87, 88, 0, 179, - 179, 0, 0, 179, 0, 0, 179, 0, 0, 0, - 0, 89, 90, 91, 92, 302, 0, 0, 0, 528, - 0, 0, 0, 95, 0, 0, 0, 0, 0, 97, - 98, 99, 100, 0, 0, 0, 101, 0, 102, 0, - 0, 1022, 0, 0, 103, 104, 0, 0, 0, 0, - 0, 0, 56, 24, 0, 25, 0, 0, 26, 254, - 0, 0, 0, 27, 61, 62, 0, 28, 0, 105, - 303, 107, 108, 64, 0, 0, 30, 0, 0, 0, - 0, 0, 0, 32, 0, 0, 0, 179, 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, - 255, 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, 302, 0, 0, 0, 761, 1039, 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, 775, 0, 105, 762, 107, 108, 0, - 0, 56, 24, 0, 25, 0, 763, 26, 254, 0, - 0, 0, 27, 61, 62, 0, 28, 0, 0, 179, - 0, 179, 64, 0, 179, 30, 0, 0, 0, 179, - 0, 0, 32, 179, 0, 0, 0, 33, 0, 71, - 72, 34, 179, 0, 0, 0, 0, 0, 0, 179, - 0, 0, 0, 36, 179, 37, 74, 972, 179, 38, - 0, 0, 76, 0, 78, 0, 80, 39, 40, 255, - 179, 41, 179, 0, 0, 0, 179, 0, 86, 0, - 0, 87, 88, 0, 179, 179, 0, 0, 179, 0, - 0, 179, 0, 0, 0, 0, 89, 90, 91, 92, - 302, 0, 0, 0, 528, 0, 0, 0, 95, 0, - 0, 0, 0, 0, 97, 98, 99, 100, 0, 0, - 0, 101, 0, 102, 1022, 0, 0, 0, 0, 103, - 104, 0, 0, 0, 0, 0, 0, 56, 24, 0, - 25, 0, 0, 26, 254, 0, 0, 0, 27, 61, - 62, 0, 28, 0, 105, 303, 107, 108, 64, 0, - 0, 30, 0, 0, 0, 0, 0, 0, 32, 0, - 0, 0, 179, 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, 255, 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, 302, 0, 0, 0, - 761, 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, 0, 0, 775, 0, - 105, 762, 107, 108, 0, 0, 56, 24, 0, 25, - 0, 763, 26, 254, 0, 0, 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, 255, 36, 41, 37, 0, 0, - 0, 38, 0, 86, 0, 0, 87, 88, 0, 39, - 40, 0, 0, 41, 0, 0, 324, 0, 0, 0, - 0, 89, 90, 91, 92, 302, 0, 0, 0, 528, + 499, 28, 0, 0, 180, 0, 180, 64, 0, 180, + 30, 0, 0, 0, 180, 0, 0, 32, 180, 0, + 0, 0, 33, 0, 71, 72, 34, 180, 0, 0, + 0, 0, 0, 0, 180, 0, 0, 0, 36, 180, + 37, 74, 0, 180, 38, 0, 0, 76, 0, 78, + 0, 80, 39, 40, 255, 180, 41, 180, 0, 0, + 0, 180, 0, 86, 0, 0, 87, 88, 0, 180, + 180, 0, 0, 180, 0, 0, 180, 0, 0, 0, + 0, 89, 90, 91, 92, 302, 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, 301, 0, 0, 0, 105, + 0, 0, 0, 0, 0, 979, 0, 0, 0, 105, 303, 107, 108, 56, 24, 0, 25, 0, 0, 26, - 254, 0, 0, 0, 27, 61, 62, 366, 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, 255, 36, 41, 37, 0, 0, 0, 38, 0, - 86, 0, 0, 87, 88, 0, 39, 40, 0, 0, - 41, 0, 0, 530, 0, 0, 0, 0, 89, 90, + 254, 0, 0, 0, 27, 61, 62, 180, 28, 0, + 0, 179, 0, 179, 64, 0, 179, 30, 0, 0, + 0, 179, 0, 0, 32, 179, 0, 0, 0, 33, + 0, 71, 72, 34, 179, 0, 0, 0, 0, 0, + 0, 179, 0, 0, 0, 36, 179, 37, 74, 0, + 179, 38, 0, 0, 76, 0, 78, 0, 80, 39, + 40, 255, 179, 41, 179, 0, 0, 0, 179, 0, + 86, 0, 0, 87, 88, 0, 179, 179, 0, 0, + 179, 0, 0, 179, 0, 0, 0, 0, 89, 90, 91, 92, 302, 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, 310, 0, 0, 0, 105, 303, 107, 108, + 0, 0, 1235, 0, 0, 0, 105, 303, 107, 108, 56, 24, 0, 25, 0, 0, 26, 254, 0, 0, - 0, 27, 61, 62, 366, 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, 255, 36, - 41, 37, 0, 0, 0, 38, 0, 86, 0, 0, - 87, 88, 0, 39, 40, 0, 0, 41, 0, 0, - 584, 0, 0, 0, 0, 89, 90, 91, 92, 302, + 0, 27, 61, 62, 179, 28, 0, 0, 189, 0, + 189, 64, 0, 189, 30, 0, 0, 0, 189, 0, + 0, 32, 189, 0, 0, 0, 33, 0, 71, 72, + 34, 189, 0, 0, 0, 0, 0, 0, 189, 0, + 0, 0, 36, 189, 37, 74, 0, 189, 38, 0, + 0, 76, 0, 78, 0, 80, 39, 40, 255, 189, + 41, 189, 0, 0, 0, 189, 0, 86, 0, 0, + 87, 88, 0, 189, 189, 0, 0, 189, 0, 0, + 189, 0, 0, 0, 0, 89, 90, 91, 92, 302, 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, 0, 0, 0, 0, 0, 0, 340, 0, 0, 0, 105, 303, 107, 108, 56, 24, 0, 25, 0, 0, 26, 254, 0, 0, 0, 27, 61, - 62, 366, 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, 255, 36, 41, 37, 0, - 0, 0, 38, 0, 86, 0, 0, 87, 88, 0, - 39, 40, 0, 0, 41, 0, 0, 791, 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, 857, 0, 0, 0, - 105, 106, 107, 108, 56, 24, 0, 25, 0, 0, - 26, 254, 0, 0, 0, 27, 61, 62, 366, 28, - 0, 0, 498, 0, 498, 64, 0, 498, 30, 0, - 0, 0, 498, 0, 0, 32, 498, 0, 0, 0, - 33, 0, 71, 72, 34, 498, 0, 0, 0, 0, - 0, 0, 498, 0, 0, 0, 36, 498, 37, 74, - 0, 498, 38, 0, 0, 76, 0, 78, 0, 80, - 39, 40, 255, 498, 41, 498, 0, 0, 0, 498, - 0, 86, 0, 0, 87, 88, 0, 498, 498, 0, - 0, 498, 0, 0, 498, 0, 0, 0, 0, 89, - 90, 91, 92, 302, 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, 969, 0, 0, 0, 105, 303, 107, - 108, 56, 24, 0, 25, 0, 0, 26, 254, 0, - 0, 0, 27, 61, 62, 498, 28, 0, 0, 180, - 0, 180, 64, 0, 180, 30, 0, 0, 0, 180, - 0, 0, 32, 180, 0, 0, 0, 33, 0, 71, - 72, 34, 180, 0, 0, 0, 0, 0, 0, 180, - 0, 0, 0, 36, 180, 37, 74, 0, 180, 38, - 0, 0, 76, 0, 78, 0, 80, 39, 40, 255, - 180, 41, 180, 0, 0, 0, 180, 0, 86, 0, - 0, 87, 88, 0, 180, 180, 0, 0, 180, 0, - 0, 180, 0, 0, 0, 0, 89, 90, 91, 92, - 302, 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, - 1224, 0, 0, 0, 105, 303, 107, 108, 56, 24, - 0, 25, 0, 0, 26, 254, 0, 0, 0, 27, - 61, 62, 180, 28, 0, 0, 179, 0, 179, 64, - 0, 179, 30, 0, 0, 0, 179, 0, 0, 32, - 179, 0, 0, 0, 33, 0, 71, 72, 34, 179, - 0, 0, 0, 0, 0, 0, 179, 0, 0, 0, - 36, 179, 37, 74, 0, 179, 38, 0, 0, 76, - 0, 78, 0, 80, 39, 40, 255, 179, 41, 179, - 0, 0, 0, 179, 0, 86, 0, 0, 87, 88, - 0, 179, 179, 0, 0, 179, 0, 0, 179, 0, - 0, 0, 0, 89, 90, 91, 92, 302, 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, 340, 0, 0, - 0, 105, 303, 107, 108, 56, 24, 0, 25, 0, - 0, 26, 254, 0, 0, 0, 27, 61, 62, 179, - 28, 0, 0, 0, 0, 0, 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, 255, 0, 41, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 89, 90, 91, 256, 302, 0, 0, 0, 0, 0, - 0, 0, 95, 0, 0, 0, 0, 0, 97, 98, - 99, 100, 0, 0, 0, 101, 0, 102, 344, 0, - 0, 0, 0, 103, 104, 0, 56, 24, 0, 25, - 0, 0, 26, 254, 0, 0, 0, 27, 61, 62, - 0, 28, 0, 0, 0, 0, 0, 64, 105, 257, - 30, 108, 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, 255, 0, 41, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 89, 90, 91, 256, 302, 0, 0, 0, 0, - 0, 0, 0, 95, 0, 0, 0, 0, 0, 97, - 98, 99, 100, 0, 0, 0, 101, 0, 102, 346, - 0, 0, 0, 0, 103, 104, 0, 56, 24, 0, - 25, 0, 0, 26, 254, 0, 0, 0, 27, 61, - 62, 0, 28, 0, 0, 0, 0, 0, 64, 105, - 257, 30, 108, 0, 0, 0, 0, 0, 32, 0, + 62, 189, 28, 0, 0, 0, 0, 0, 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, 255, 0, 41, 0, 0, + 0, 0, 0, 0, 0, 0, 341, 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, 89, 90, 91, 256, 302, 0, 0, 0, + 0, 0, 89, 90, 91, 256, 342, 0, 0, 0, 0, 0, 0, 0, 95, 0, 0, 0, 0, 0, - 97, 98, 99, 100, 0, 0, 0, 101, 0, 102, - 348, 0, 0, 0, 0, 103, 104, 0, 56, 24, + 97, 98, 99, 100, 932, 0, 0, 101, 0, 102, + 340, 0, 0, 0, 0, 103, 104, 0, 56, 24, 0, 25, 0, 0, 26, 254, 0, 0, 0, 27, 61, 62, 0, 28, 0, 0, 0, 0, 0, 64, 105, 257, 30, 108, 0, 0, 0, 0, 0, 32, @@ -11724,12 +11765,12 @@ void case_1026() 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, 255, 0, 41, 0, + 0, 0, 0, 0, 0, 0, 0, 341, 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, 89, 90, 91, 256, 302, 0, 0, + 0, 0, 0, 89, 90, 91, 256, 342, 0, 0, 0, 0, 0, 0, 0, 95, 0, 0, 0, 0, 0, 97, 98, 99, 100, 0, 0, 0, 101, 0, - 102, 350, 0, 0, 0, 0, 103, 104, 0, 56, + 102, 346, 0, 0, 0, 0, 103, 104, 0, 56, 24, 0, 25, 0, 0, 26, 254, 0, 0, 0, 27, 61, 62, 0, 28, 0, 0, 0, 0, 0, 64, 105, 257, 30, 108, 0, 0, 0, 0, 0, @@ -11739,10 +11780,10 @@ void case_1026() 76, 0, 78, 0, 80, 39, 40, 255, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 89, 90, 91, 256, 302, 0, + 0, 0, 0, 0, 89, 90, 91, 256, 342, 0, 0, 0, 0, 0, 0, 0, 95, 0, 0, 0, 0, 0, 97, 98, 99, 100, 0, 0, 0, 101, - 0, 102, 352, 0, 0, 0, 0, 103, 104, 0, + 0, 102, 348, 0, 0, 0, 0, 103, 104, 0, 56, 24, 0, 25, 0, 0, 26, 254, 0, 0, 0, 27, 61, 62, 0, 28, 0, 0, 0, 0, 0, 64, 105, 257, 30, 108, 0, 0, 0, 0, @@ -11752,10 +11793,10 @@ void case_1026() 0, 76, 0, 78, 0, 80, 39, 40, 255, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 89, 90, 91, 256, 302, + 0, 0, 0, 0, 0, 89, 90, 91, 256, 342, 0, 0, 0, 0, 0, 0, 0, 95, 0, 0, 0, 0, 0, 97, 98, 99, 100, 0, 0, 0, - 101, 0, 102, 354, 0, 0, 0, 0, 103, 104, + 101, 0, 102, 350, 0, 0, 0, 0, 103, 104, 0, 56, 24, 0, 25, 0, 0, 26, 254, 0, 0, 0, 27, 61, 62, 0, 28, 0, 0, 0, 0, 0, 64, 105, 257, 30, 108, 0, 0, 0, @@ -11766,9 +11807,9 @@ void case_1026() 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 90, 91, 256, - 302, 0, 0, 0, 0, 0, 0, 0, 95, 0, + 342, 0, 0, 0, 0, 0, 0, 0, 95, 0, 0, 0, 0, 0, 97, 98, 99, 100, 0, 0, - 0, 101, 0, 102, 356, 0, 0, 0, 0, 103, + 0, 101, 0, 102, 352, 0, 0, 0, 0, 103, 104, 0, 56, 24, 0, 25, 0, 0, 26, 254, 0, 0, 0, 27, 61, 62, 0, 28, 0, 0, 0, 0, 0, 64, 105, 257, 30, 108, 0, 0, @@ -11779,9 +11820,9 @@ void case_1026() 255, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 90, 91, - 256, 302, 0, 0, 0, 0, 0, 0, 0, 95, + 256, 342, 0, 0, 0, 0, 0, 0, 0, 95, 0, 0, 0, 0, 0, 97, 98, 99, 100, 0, - 0, 0, 101, 0, 102, 358, 0, 0, 0, 0, + 0, 0, 101, 0, 102, 354, 0, 0, 0, 0, 103, 104, 0, 56, 24, 0, 25, 0, 0, 26, 254, 0, 0, 0, 27, 61, 62, 0, 28, 0, 0, 0, 0, 0, 64, 105, 257, 30, 108, 0, @@ -11792,9 +11833,9 @@ void case_1026() 40, 255, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 90, - 91, 256, 302, 0, 0, 0, 0, 0, 0, 0, + 91, 256, 342, 0, 0, 0, 0, 0, 0, 0, 95, 0, 0, 0, 0, 0, 97, 98, 99, 100, - 0, 0, 0, 101, 0, 102, 628, 0, 0, 0, + 0, 0, 0, 101, 0, 102, 356, 0, 0, 0, 0, 103, 104, 0, 56, 24, 0, 25, 0, 0, 26, 254, 0, 0, 0, 27, 61, 62, 0, 28, 0, 0, 0, 0, 0, 64, 105, 257, 30, 108, @@ -11805,9 +11846,9 @@ void case_1026() 39, 40, 255, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, - 90, 91, 256, 302, 0, 0, 0, 0, 0, 0, + 90, 91, 256, 342, 0, 0, 0, 0, 0, 0, 0, 95, 0, 0, 0, 0, 0, 97, 98, 99, - 100, 0, 0, 0, 101, 0, 102, 630, 0, 0, + 100, 0, 0, 0, 101, 0, 102, 358, 0, 0, 0, 0, 103, 104, 0, 56, 24, 0, 25, 0, 0, 26, 254, 0, 0, 0, 27, 61, 62, 0, 28, 0, 0, 0, 0, 0, 64, 105, 257, 30, @@ -11818,9 +11859,9 @@ void case_1026() 80, 39, 40, 255, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 89, 90, 91, 256, 302, 0, 0, 0, 0, 0, + 89, 90, 91, 256, 342, 0, 0, 0, 0, 0, 0, 0, 95, 0, 0, 0, 0, 0, 97, 98, - 99, 100, 0, 0, 0, 101, 0, 102, 632, 0, + 99, 100, 0, 0, 0, 101, 0, 102, 360, 0, 0, 0, 0, 103, 104, 0, 56, 24, 0, 25, 0, 0, 26, 254, 0, 0, 0, 27, 61, 62, 0, 28, 0, 0, 0, 0, 0, 64, 105, 257, @@ -11831,9 +11872,9 @@ void case_1026() 0, 80, 39, 40, 255, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 89, 90, 91, 256, 302, 0, 0, 0, 0, + 0, 89, 90, 91, 256, 342, 0, 0, 0, 0, 0, 0, 0, 95, 0, 0, 0, 0, 0, 97, - 98, 99, 100, 0, 0, 0, 101, 0, 102, 638, + 98, 99, 100, 0, 0, 0, 101, 0, 102, 340, 0, 0, 0, 0, 103, 104, 0, 56, 24, 0, 25, 0, 0, 26, 254, 0, 0, 0, 27, 61, 62, 0, 28, 0, 0, 0, 0, 0, 64, 105, @@ -11844,10 +11885,10 @@ void case_1026() 78, 0, 80, 39, 40, 255, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 89, 90, 91, 256, 302, 0, 0, 0, + 0, 0, 89, 90, 91, 256, 342, 0, 0, 0, 0, 0, 0, 0, 95, 0, 0, 0, 0, 0, 97, 98, 99, 100, 0, 0, 0, 101, 0, 102, - 640, 0, 0, 0, 0, 103, 104, 0, 56, 24, + 635, 0, 0, 0, 0, 103, 104, 0, 56, 24, 0, 25, 0, 0, 26, 254, 0, 0, 0, 27, 61, 62, 0, 28, 0, 0, 0, 0, 0, 64, 105, 257, 30, 108, 0, 0, 0, 0, 0, 32, @@ -11857,10 +11898,10 @@ void case_1026() 0, 78, 0, 80, 39, 40, 255, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 89, 90, 91, 256, 302, 0, 0, + 0, 0, 0, 89, 90, 91, 256, 342, 0, 0, 0, 0, 0, 0, 0, 95, 0, 0, 0, 0, 0, 97, 98, 99, 100, 0, 0, 0, 101, 0, - 102, 642, 0, 0, 0, 0, 103, 104, 0, 56, + 102, 637, 0, 0, 0, 0, 103, 104, 0, 56, 24, 0, 25, 0, 0, 26, 254, 0, 0, 0, 27, 61, 62, 0, 28, 0, 0, 0, 0, 0, 64, 105, 257, 30, 108, 0, 0, 0, 0, 0, @@ -11870,10 +11911,10 @@ void case_1026() 76, 0, 78, 0, 80, 39, 40, 255, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 89, 90, 91, 256, 302, 0, + 0, 0, 0, 0, 89, 90, 91, 256, 342, 0, 0, 0, 0, 0, 0, 0, 95, 0, 0, 0, 0, 0, 97, 98, 99, 100, 0, 0, 0, 101, - 0, 102, 644, 0, 0, 0, 0, 103, 104, 0, + 0, 102, 639, 0, 0, 0, 0, 103, 104, 0, 56, 24, 0, 25, 0, 0, 26, 254, 0, 0, 0, 27, 61, 62, 0, 28, 0, 0, 0, 0, 0, 64, 105, 257, 30, 108, 0, 0, 0, 0, @@ -11883,10 +11924,10 @@ void case_1026() 0, 76, 0, 78, 0, 80, 39, 40, 255, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 89, 90, 91, 256, 302, + 0, 0, 0, 0, 0, 89, 90, 91, 256, 342, 0, 0, 0, 0, 0, 0, 0, 95, 0, 0, 0, 0, 0, 97, 98, 99, 100, 0, 0, 0, - 101, 0, 102, 646, 0, 0, 0, 0, 103, 104, + 101, 0, 102, 645, 0, 0, 0, 0, 103, 104, 0, 56, 24, 0, 25, 0, 0, 26, 254, 0, 0, 0, 27, 61, 62, 0, 28, 0, 0, 0, 0, 0, 64, 105, 257, 30, 108, 0, 0, 0, @@ -11897,9 +11938,9 @@ void case_1026() 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 90, 91, 256, - 302, 0, 0, 0, 0, 0, 0, 0, 95, 0, + 342, 0, 0, 0, 0, 0, 0, 0, 95, 0, 0, 0, 0, 0, 97, 98, 99, 100, 0, 0, - 0, 101, 0, 102, 648, 0, 0, 0, 0, 103, + 0, 101, 0, 102, 647, 0, 0, 0, 0, 103, 104, 0, 56, 24, 0, 25, 0, 0, 26, 254, 0, 0, 0, 27, 61, 62, 0, 28, 0, 0, 0, 0, 0, 64, 105, 257, 30, 108, 0, 0, @@ -11910,9 +11951,9 @@ void case_1026() 255, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 90, 91, - 256, 302, 0, 0, 0, 0, 0, 0, 0, 95, + 256, 342, 0, 0, 0, 0, 0, 0, 0, 95, 0, 0, 0, 0, 0, 97, 98, 99, 100, 0, - 0, 0, 101, 0, 102, 650, 0, 0, 0, 0, + 0, 0, 101, 0, 102, 649, 0, 0, 0, 0, 103, 104, 0, 56, 24, 0, 25, 0, 0, 26, 254, 0, 0, 0, 27, 61, 62, 0, 28, 0, 0, 0, 0, 0, 64, 105, 257, 30, 108, 0, @@ -11923,9 +11964,9 @@ void case_1026() 40, 255, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 90, - 91, 256, 302, 0, 0, 0, 0, 0, 0, 0, + 91, 256, 342, 0, 0, 0, 0, 0, 0, 0, 95, 0, 0, 0, 0, 0, 97, 98, 99, 100, - 0, 0, 0, 101, 0, 102, 652, 0, 0, 0, + 0, 0, 0, 101, 0, 102, 651, 0, 0, 0, 0, 103, 104, 0, 56, 24, 0, 25, 0, 0, 26, 254, 0, 0, 0, 27, 61, 62, 0, 28, 0, 0, 0, 0, 0, 64, 105, 257, 30, 108, @@ -11936,9 +11977,9 @@ void case_1026() 39, 40, 255, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, - 90, 91, 256, 302, 0, 0, 0, 0, 0, 0, + 90, 91, 256, 342, 0, 0, 0, 0, 0, 0, 0, 95, 0, 0, 0, 0, 0, 97, 98, 99, - 100, 0, 0, 0, 101, 0, 102, 654, 0, 0, + 100, 0, 0, 0, 101, 0, 102, 653, 0, 0, 0, 0, 103, 104, 0, 56, 24, 0, 25, 0, 0, 26, 254, 0, 0, 0, 27, 61, 62, 0, 28, 0, 0, 0, 0, 0, 64, 105, 257, 30, @@ -11949,9 +11990,9 @@ void case_1026() 80, 39, 40, 255, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 89, 90, 91, 256, 302, 0, 0, 0, 0, 0, + 89, 90, 91, 256, 342, 0, 0, 0, 0, 0, 0, 0, 95, 0, 0, 0, 0, 0, 97, 98, - 99, 100, 0, 0, 0, 101, 0, 102, 656, 0, + 99, 100, 0, 0, 0, 101, 0, 102, 655, 0, 0, 0, 0, 103, 104, 0, 56, 24, 0, 25, 0, 0, 26, 254, 0, 0, 0, 27, 61, 62, 0, 28, 0, 0, 0, 0, 0, 64, 105, 257, @@ -11962,9 +12003,9 @@ void case_1026() 0, 80, 39, 40, 255, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 89, 90, 91, 256, 302, 0, 0, 0, 0, + 0, 89, 90, 91, 256, 342, 0, 0, 0, 0, 0, 0, 0, 95, 0, 0, 0, 0, 0, 97, - 98, 99, 100, 0, 0, 0, 101, 0, 102, 658, + 98, 99, 100, 0, 0, 0, 101, 0, 102, 657, 0, 0, 0, 0, 103, 104, 0, 56, 24, 0, 25, 0, 0, 26, 254, 0, 0, 0, 27, 61, 62, 0, 28, 0, 0, 0, 0, 0, 64, 105, @@ -11975,10 +12016,10 @@ void case_1026() 78, 0, 80, 39, 40, 255, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 89, 90, 91, 256, 302, 0, 0, 0, + 0, 0, 89, 90, 91, 256, 342, 0, 0, 0, 0, 0, 0, 0, 95, 0, 0, 0, 0, 0, 97, 98, 99, 100, 0, 0, 0, 101, 0, 102, - 660, 0, 0, 0, 0, 103, 104, 0, 56, 24, + 659, 0, 0, 0, 0, 103, 104, 0, 56, 24, 0, 25, 0, 0, 26, 254, 0, 0, 0, 27, 61, 62, 0, 28, 0, 0, 0, 0, 0, 64, 105, 257, 30, 108, 0, 0, 0, 0, 0, 32, @@ -11988,10 +12029,10 @@ void case_1026() 0, 78, 0, 80, 39, 40, 255, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 89, 90, 91, 256, 302, 0, 0, + 0, 0, 0, 89, 90, 91, 256, 342, 0, 0, 0, 0, 0, 0, 0, 95, 0, 0, 0, 0, 0, 97, 98, 99, 100, 0, 0, 0, 101, 0, - 102, 662, 0, 0, 0, 0, 103, 104, 0, 56, + 102, 661, 0, 0, 0, 0, 103, 104, 0, 56, 24, 0, 25, 0, 0, 26, 254, 0, 0, 0, 27, 61, 62, 0, 28, 0, 0, 0, 0, 0, 64, 105, 257, 30, 108, 0, 0, 0, 0, 0, @@ -12001,10 +12042,10 @@ void case_1026() 76, 0, 78, 0, 80, 39, 40, 255, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 89, 90, 91, 256, 302, 0, + 0, 0, 0, 0, 89, 90, 91, 256, 342, 0, 0, 0, 0, 0, 0, 0, 95, 0, 0, 0, 0, 0, 97, 98, 99, 100, 0, 0, 0, 101, - 0, 102, 664, 0, 0, 0, 0, 103, 104, 0, + 0, 102, 663, 0, 0, 0, 0, 103, 104, 0, 56, 24, 0, 25, 0, 0, 26, 254, 0, 0, 0, 27, 61, 62, 0, 28, 0, 0, 0, 0, 0, 64, 105, 257, 30, 108, 0, 0, 0, 0, @@ -12014,10 +12055,10 @@ void case_1026() 0, 76, 0, 78, 0, 80, 39, 40, 255, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 89, 90, 91, 256, 302, + 0, 0, 0, 0, 0, 89, 90, 91, 256, 342, 0, 0, 0, 0, 0, 0, 0, 95, 0, 0, 0, 0, 0, 97, 98, 99, 100, 0, 0, 0, - 101, 0, 102, 666, 0, 0, 0, 0, 103, 104, + 101, 0, 102, 665, 0, 0, 0, 0, 103, 104, 0, 56, 24, 0, 25, 0, 0, 26, 254, 0, 0, 0, 27, 61, 62, 0, 28, 0, 0, 0, 0, 0, 64, 105, 257, 30, 108, 0, 0, 0, @@ -12028,9 +12069,9 @@ void case_1026() 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 90, 91, 256, - 302, 0, 0, 0, 0, 0, 0, 0, 95, 0, + 342, 0, 0, 0, 0, 0, 0, 0, 95, 0, 0, 0, 0, 0, 97, 98, 99, 100, 0, 0, - 0, 101, 0, 102, 830, 0, 0, 0, 0, 103, + 0, 101, 0, 102, 667, 0, 0, 0, 0, 103, 104, 0, 56, 24, 0, 25, 0, 0, 26, 254, 0, 0, 0, 27, 61, 62, 0, 28, 0, 0, 0, 0, 0, 64, 105, 257, 30, 108, 0, 0, @@ -12041,756 +12082,827 @@ void case_1026() 255, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 90, 91, - 256, 302, 0, 0, 0, 0, 0, 0, 0, 95, + 256, 342, 0, 0, 0, 0, 0, 0, 0, 95, 0, 0, 0, 0, 0, 97, 98, 99, 100, 0, - 0, 0, 101, 0, 102, 511, 0, 0, 0, 0, - 103, 104, 343, 56, 24, 0, 25, 0, 0, 26, + 0, 0, 101, 0, 102, 669, 0, 0, 0, 0, + 103, 104, 0, 56, 24, 0, 25, 0, 0, 26, 254, 0, 0, 0, 27, 61, 62, 0, 28, 0, 0, 0, 0, 0, 64, 105, 257, 30, 108, 0, - 0, 0, 0, 0, 32, 0, 0, 0, 343, 33, + 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, 255, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 90, - 91, 256, 0, 0, 0, 0, 0, 0, 0, 0, - 95, 343, 343, 343, 343, 788, 0, 0, 343, 343, - 0, 0, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 0, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 0, 0, 105, 512, 0, 0, - 343, 0, 52, 343, 52, 0, 52, 0, 52, 0, - 0, 52, 0, 52, 52, 0, 52, 0, 52, 0, - 52, 0, 52, 52, 52, 52, 0, 0, 52, 52, - 0, 0, 0, 0, 52, 52, 52, 52, 52, 0, - 0, 52, 0, 52, 0, 52, 0, 52, 52, 0, - 52, 52, 52, 52, 0, 0, 52, 52, 52, 52, - 0, 0, 52, 52, 52, 0, 0, 0, 0, 0, - 0, 52, 52, 0, 52, 52, 0, 52, 52, 52, - 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 52, 0, 52, 52, 51, 0, 0, - 0, 51, 0, 51, 0, 0, 51, 0, 51, 51, - 0, 51, 0, 51, 0, 51, 0, 51, 51, 51, - 51, 0, 0, 51, 51, 0, 0, 0, 0, 51, - 0, 51, 51, 51, 0, 0, 51, 0, 51, 0, - 51, 0, 0, 51, 0, 51, 51, 51, 51, 52, - 0, 0, 51, 51, 51, 0, 0, 51, 51, 51, - 0, 0, 0, 0, 0, 0, 51, 51, 0, 51, - 51, 0, 51, 51, 51, 0, 0, 0, 51, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 51, 0, 51, 0, - 51, 0, 51, 0, 84, 51, 0, 51, 51, 0, - 51, 0, 51, 51, 51, 0, 51, 51, 51, 51, - 0, 0, 51, 51, 0, 0, 0, 0, 51, 0, - 51, 51, 51, 0, 0, 51, 0, 51, 0, 51, - 0, 0, 51, 0, 51, 51, 51, 51, 0, 0, - 0, 51, 51, 51, 51, 0, 51, 51, 51, 0, - 0, 0, 0, 0, 0, 51, 51, 0, 51, 51, - 0, 51, 51, 51, 0, 0, 0, 51, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 52, 0, 51, 0, 52, - 0, 52, 0, 85, 52, 0, 52, 52, 0, 52, - 0, 52, 51, 52, 0, 52, 52, 52, 52, 0, - 0, 52, 52, 0, 0, 0, 0, 52, 0, 52, - 52, 52, 0, 0, 52, 0, 52, 0, 52, 0, - 0, 52, 0, 52, 52, 52, 52, 0, 0, 0, - 52, 52, 52, 51, 0, 52, 52, 52, 0, 0, - 0, 0, 0, 0, 52, 52, 0, 52, 52, 0, - 52, 52, 52, 0, 0, 0, 52, 0, 0, 0, - 0, 51, 0, 0, 0, 51, 0, 51, 0, 0, - 51, 0, 51, 51, 0, 51, 52, 51, 0, 51, - 0, 51, 51, 51, 51, 0, 0, 51, 51, 0, - 0, 52, 0, 51, 0, 51, 51, 51, 0, 0, - 51, 0, 51, 0, 51, 0, 0, 51, 0, 51, - 51, 51, 51, 0, 0, 0, 51, 51, 51, 0, - 0, 51, 51, 51, 0, 0, 0, 0, 0, 0, - 51, 51, 52, 51, 51, 0, 51, 51, 51, 0, - 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 51, 0, 0, 0, 51, - 0, 51, 51, 0, 51, 0, 51, 51, 219, 51, - 0, 51, 0, 51, 0, 51, 51, 51, 51, 0, - 0, 51, 51, 0, 0, 0, 0, 51, 0, 51, - 51, 51, 0, 0, 51, 0, 51, 343, 51, 0, - 0, 51, 0, 51, 51, 51, 51, 0, 0, 0, - 51, 51, 51, 0, 0, 51, 51, 51, 51, 0, - 343, 0, 0, 0, 51, 51, 0, 51, 51, 51, - 51, 51, 51, 343, 0, 0, 51, 0, 343, 0, - 0, 343, 0, 343, 0, 343, 343, 343, 343, 0, - 0, 0, 51, 343, 0, 0, 51, 343, 0, 0, - 0, 343, 220, 0, 0, 51, 0, 365, 0, 343, - 51, 0, 343, 0, 343, 51, 0, 51, 51, 51, - 51, 0, 0, 51, 0, 51, 0, 0, 0, 51, - 365, 0, 0, 343, 0, 0, 0, 364, 343, 0, - 0, 51, 0, 365, 51, 343, 51, 270, 365, 343, - 0, 237, 51, 365, 0, 365, 365, 365, 365, 0, - 364, 0, 343, 365, 0, 0, 0, 365, 0, 463, - 51, 365, 0, 364, 0, 0, 305, 0, 364, 365, - 0, 236, 365, 364, 365, 364, 364, 364, 364, 0, - 0, 0, 464, 364, 343, 0, 0, 364, 0, 0, - 0, 364, 0, 0, 0, 465, 0, 0, 365, 364, - 467, 0, 364, 0, 364, 468, 0, 469, 470, 471, - 472, 0, 0, 0, 0, 473, 0, 0, 0, 474, - 0, 0, 0, 1365, 0, 0, 0, 0, 364, 0, - 0, 475, 0, 0, 476, 0, 477, 56, 24, 0, - 25, 0, 0, 26, 254, 0, 0, 0, 27, 61, - 62, 0, 28, 0, 365, 0, 0, 0, 64, 0, - 478, 30, 0, 0, 0, 0, 0, 0, 32, 0, - 0, 0, 0, 33, 0, 71, 72, 34, 0, 606, - 0, 0, 0, 0, 364, 0, 607, 0, 0, 36, - 0, 37, 74, 0, 0, 38, 0, 0, 76, 0, - 78, 0, 80, 39, 40, 255, 0, 41, 0, 0, - 0, 0, 0, 0, 608, 0, 1366, 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, 964, 0, 609, 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, - 254, 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, 606, 0, 0, 0, 0, - 0, 0, 607, 0, 0, 36, 0, 37, 74, 0, - 0, 38, 0, 0, 76, 0, 78, 0, 80, 39, - 40, 255, 0, 41, 0, 0, 0, 0, 0, 0, - 608, 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, 609, 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, 254, 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, + 91, 256, 342, 0, 0, 0, 0, 0, 0, 0, + 95, 0, 0, 0, 0, 0, 97, 98, 99, 100, + 0, 0, 0, 101, 0, 102, 671, 0, 0, 0, + 0, 103, 104, 0, 56, 24, 0, 25, 0, 0, + 26, 254, 0, 0, 0, 27, 61, 62, 0, 28, + 0, 0, 0, 0, 0, 64, 105, 257, 30, 108, + 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, 255, 0, 41, 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, 255, 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, 302, 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, 0, 0, 0, 0, 0, 0, 0, 0, 89, + 90, 91, 256, 342, 0, 0, 0, 0, 0, 0, + 0, 95, 0, 0, 0, 0, 0, 97, 98, 99, + 100, 0, 0, 0, 101, 0, 102, 673, 0, 0, + 0, 0, 103, 104, 0, 56, 24, 0, 25, 0, 0, 26, 254, 0, 0, 0, 27, 61, 62, 0, - 28, 0, 105, 303, 107, 108, 64, 0, 0, 30, - 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, + 28, 0, 0, 0, 0, 0, 64, 105, 257, 30, + 108, 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, 255, 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, 302, 0, 0, 0, 0, 923, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 89, 90, 91, 256, 342, 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, 254, 0, - 0, 0, 27, 61, 62, 0, 28, 0, 105, 303, - 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, 255, - 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, - 302, 0, 0, 0, 528, 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, + 99, 100, 0, 0, 0, 101, 0, 102, 839, 0, + 0, 0, 0, 103, 104, 0, 56, 24, 0, 25, + 0, 0, 26, 254, 0, 0, 0, 27, 61, 62, + 0, 28, 0, 0, 0, 0, 0, 64, 105, 257, + 30, 108, 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, 255, 0, 41, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 89, 90, 91, 256, 342, 0, 0, 0, 0, + 0, 0, 0, 95, 0, 0, 0, 0, 0, 97, + 98, 99, 100, 0, 0, 0, 101, 0, 102, 513, + 0, 0, 0, 0, 103, 104, 343, 56, 24, 0, 25, 0, 0, 26, 254, 0, 0, 0, 27, 61, - 62, 0, 28, 0, 105, 303, 107, 108, 64, 0, - 0, 30, 0, 0, 0, 0, 0, 0, 32, 0, - 0, 0, 0, 33, 0, 71, 72, 34, 0, 0, + 62, 0, 28, 0, 0, 0, 0, 0, 64, 105, + 257, 30, 108, 0, 0, 0, 0, 0, 32, 0, + 0, 0, 343, 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, 255, 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, 302, 0, 0, 0, - 522, 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, - 254, 0, 0, 0, 27, 61, 62, 0, 28, 0, - 105, 303, 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, 255, 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, 302, 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, 254, 0, 0, 0, - 27, 61, 62, 0, 28, 0, 105, 303, 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, 255, 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, 254, 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, 255, 0, 41, 0, 0, 0, 0, - 0, 0, 86, 0, 0, 87, 88, 0, 0, 0, + 0, 0, 89, 90, 91, 256, 291, 0, 0, 0, + 0, 0, 0, 0, 95, 343, 343, 343, 343, 792, + 0, 0, 343, 343, 0, 0, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 0, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, 0, 0, + 105, 514, 0, 0, 343, 0, 52, 343, 52, 0, + 52, 0, 52, 0, 0, 52, 0, 52, 52, 0, + 52, 0, 52, 0, 52, 0, 52, 52, 52, 52, + 0, 0, 52, 52, 0, 0, 0, 0, 52, 52, + 52, 52, 52, 0, 0, 52, 0, 52, 0, 52, + 0, 52, 52, 0, 52, 52, 52, 52, 0, 0, + 52, 52, 52, 52, 0, 0, 52, 52, 52, 0, + 0, 0, 0, 0, 0, 52, 52, 0, 52, 52, + 0, 52, 52, 52, 0, 0, 0, 52, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 52, 0, 52, + 52, 51, 0, 0, 0, 51, 0, 51, 0, 0, + 51, 0, 51, 51, 0, 51, 0, 51, 0, 51, + 0, 51, 51, 51, 51, 0, 0, 51, 51, 0, + 0, 0, 0, 51, 0, 51, 51, 51, 0, 0, + 51, 0, 51, 0, 51, 0, 0, 51, 0, 51, + 51, 51, 51, 52, 0, 0, 51, 51, 51, 0, + 0, 51, 51, 51, 0, 0, 0, 0, 0, 0, + 51, 51, 0, 51, 51, 0, 51, 51, 51, 0, + 0, 0, 51, 0, 0, 0, 0, 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, 649, 649, 0, 649, 0, 0, 649, 649, 0, - 0, 0, 649, 649, 649, 0, 649, 0, 105, 1079, - 107, 108, 649, 0, 0, 649, 0, 0, 0, 0, - 0, 0, 649, 0, 0, 0, 0, 649, 0, 649, - 649, 649, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 649, 0, 649, 649, 0, 0, 649, - 0, 0, 649, 0, 649, 0, 649, 649, 649, 649, - 0, 649, 0, 0, 0, 0, 0, 0, 649, 0, - 0, 649, 649, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 649, 649, 649, 649, - 649, 0, 0, 0, 0, 0, 0, 0, 649, 0, - 0, 0, 0, 0, 649, 649, 649, 649, 0, 0, - 0, 649, 0, 649, 0, 0, 0, 0, 0, 649, - 649, 0, 0, 0, 0, 0, 0, 81, 81, 0, - 81, 0, 0, 81, 81, 0, 0, 0, 81, 81, - 81, 0, 81, 0, 649, 649, 649, 649, 81, 0, - 0, 81, 0, 0, 0, 0, 0, 0, 81, 0, - 0, 0, 0, 81, 0, 81, 81, 81, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, - 0, 81, 81, 0, 0, 81, 0, 0, 81, 0, - 81, 0, 81, 81, 81, 81, 0, 81, 0, 0, - 0, 0, 0, 0, 81, 0, 0, 81, 81, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 81, 81, 81, 81, 81, 0, 0, 0, - 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, - 81, 81, 81, 81, 0, 0, 0, 81, 0, 81, - 0, 0, 0, 0, 0, 81, 81, 0, 0, 0, - 0, 0, 0, 140, 140, 0, 140, 0, 0, 140, - 140, 0, 0, 0, 140, 140, 140, 0, 140, 0, - 81, 81, 81, 81, 140, 0, 0, 140, 0, 0, - 0, 0, 0, 0, 140, 0, 0, 0, 0, 140, - 0, 140, 140, 140, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 140, 0, 140, 140, 0, - 0, 140, 0, 0, 140, 0, 140, 0, 140, 140, - 140, 140, 0, 140, 0, 0, 0, 0, 0, 0, - 140, 0, 0, 140, 140, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 140, 140, - 140, 140, 140, 0, 0, 0, 0, 0, 0, 0, - 140, 0, 0, 0, 0, 0, 140, 140, 140, 140, - 0, 0, 0, 140, 0, 140, 0, 0, 0, 0, - 0, 140, 140, 0, 0, 0, 0, 0, 0, 56, - 24, 0, 25, 0, 0, 26, 254, 0, 0, 0, - 27, 61, 62, 0, 28, 0, 140, 140, 140, 140, - 64, 0, 0, 30, 0, 0, 0, 0, 0, 0, - 32, 0, 31, 0, 31, 33, 0, 71, 72, 34, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 36, 0, 37, 74, 31, 0, 38, 0, 0, - 76, 0, 78, 0, 80, 39, 40, 255, 31, 41, - 0, 0, 0, 31, 0, 0, 0, 0, 31, 0, - 31, 31, 31, 31, 0, 0, 0, 0, 31, 0, - 0, 0, 31, 0, 89, 90, 91, 256, 302, 0, - 0, 0, 0, 0, 31, 0, 95, 31, 0, 31, - 0, 0, 97, 98, 99, 100, 0, 0, 0, 101, - 0, 102, 0, 0, 0, 0, 0, 103, 104, 0, - 0, 0, 0, 31, 0, 0, 0, 0, 0, 31, - 31, 0, 0, 0, 0, 0, 0, 684, 0, 684, - 0, 684, 105, 257, 684, 108, 684, 684, 0, 684, - 0, 684, 0, 684, 0, 684, 684, 684, 0, 0, - 0, 684, 684, 0, 0, 0, 0, 684, 0, 684, - 684, 0, 0, 0, 684, 0, 0, 0, 684, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 684, - 684, 0, 684, 0, 0, 0, 684, 684, 0, 0, - 0, 0, 0, 0, 684, 684, 56, 24, 684, 25, - 0, 684, 26, 254, 0, 0, 684, 27, 61, 62, - 0, 28, 0, 0, 0, 0, 0, 64, 0, 0, - 30, 0, 0, 0, 0, 0, 0, 32, 684, 684, + 51, 0, 51, 0, 51, 0, 51, 0, 84, 51, + 0, 51, 51, 0, 51, 0, 51, 51, 51, 0, + 51, 51, 51, 51, 0, 0, 51, 51, 0, 0, + 0, 0, 51, 0, 51, 51, 51, 0, 0, 51, + 0, 51, 0, 51, 0, 0, 51, 0, 51, 51, + 51, 51, 0, 0, 0, 51, 51, 51, 51, 0, + 51, 51, 51, 0, 0, 0, 0, 0, 0, 51, + 51, 0, 51, 51, 0, 51, 51, 51, 0, 0, + 0, 51, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, + 0, 51, 0, 52, 0, 52, 0, 85, 52, 0, + 52, 52, 0, 52, 0, 52, 51, 52, 0, 52, + 52, 52, 52, 0, 0, 52, 52, 0, 0, 0, + 0, 52, 0, 52, 52, 52, 0, 0, 52, 0, + 52, 0, 52, 0, 0, 52, 0, 52, 52, 52, + 52, 0, 0, 0, 52, 52, 52, 51, 0, 52, + 52, 52, 0, 0, 0, 0, 0, 0, 52, 52, + 0, 52, 52, 0, 52, 52, 52, 0, 0, 0, + 52, 0, 0, 0, 0, 51, 0, 0, 0, 51, + 0, 51, 0, 0, 51, 0, 51, 51, 0, 51, + 52, 51, 0, 51, 0, 51, 51, 51, 51, 0, + 0, 51, 51, 0, 0, 52, 0, 51, 0, 51, + 51, 51, 0, 0, 51, 0, 51, 0, 51, 0, + 0, 51, 0, 51, 51, 51, 51, 0, 0, 0, + 51, 51, 51, 0, 0, 51, 51, 51, 0, 0, + 0, 0, 0, 0, 51, 51, 52, 51, 51, 0, + 51, 51, 51, 0, 0, 0, 51, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, + 0, 0, 0, 51, 0, 51, 51, 0, 51, 0, + 51, 51, 219, 51, 0, 51, 0, 51, 0, 51, + 51, 51, 51, 0, 0, 51, 51, 0, 0, 0, + 0, 51, 0, 51, 51, 51, 0, 0, 51, 0, + 51, 343, 51, 0, 0, 51, 0, 51, 51, 51, + 51, 0, 0, 0, 51, 51, 51, 0, 0, 51, + 51, 51, 51, 0, 343, 0, 0, 0, 51, 51, + 0, 51, 51, 465, 51, 51, 51, 343, 0, 0, + 51, 0, 343, 0, 0, 343, 0, 343, 0, 343, + 343, 343, 343, 0, 0, 0, 466, 343, 0, 0, + 51, 343, 0, 0, 0, 343, 220, 0, 0, 467, + 0, 364, 0, 343, 469, 0, 343, 0, 343, 470, + 0, 471, 472, 473, 474, 0, 0, 0, 0, 475, + 0, 0, 0, 476, 364, 0, 0, 343, 0, 0, + 0, 465, 343, 0, 0, 477, 0, 364, 478, 343, + 479, 270, 364, 343, 0, 236, 51, 364, 0, 364, + 364, 364, 364, 0, 466, 0, 343, 364, 0, 0, + 0, 364, 0, 0, 480, 364, 0, 467, 0, 0, + 0, 0, 469, 364, 0, 0, 364, 470, 364, 471, + 472, 473, 474, 0, 0, 0, 0, 475, 343, 0, + 0, 476, 0, 0, 0, 1376, 0, 0, 56, 24, + 0, 25, 364, 477, 26, 254, 478, 0, 479, 27, + 61, 62, 0, 28, 0, 0, 0, 0, 0, 64, + 1394, 0, 30, 0, 0, 0, 0, 0, 0, 32, + 0, 0, 480, 0, 33, 0, 71, 72, 34, 0, + 613, 0, 0, 0, 0, 0, 0, 614, 0, 0, + 36, 0, 37, 74, 0, 0, 38, 0, 364, 76, + 0, 78, 0, 80, 39, 40, 255, 0, 41, 0, + 0, 0, 0, 0, 0, 615, 0, 0, 87, 88, + 0, 0, 0, 0, 0, 0, 0, 0, 1377, 0, + 0, 0, 0, 89, 90, 91, 92, 93, 0, 0, + 0, 0, 0, 0, 0, 95, 974, 0, 616, 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, 254, 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, 613, 0, 0, 0, + 0, 0, 0, 614, 0, 0, 36, 0, 37, 74, + 0, 0, 38, 0, 0, 76, 0, 78, 0, 80, + 39, 40, 255, 0, 41, 0, 0, 0, 0, 0, + 0, 615, 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, 616, 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, 254, 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, 255, 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, 302, + 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, 254, 0, 0, 0, 27, 61, 62, + 0, 28, 0, 105, 303, 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, 684, 0, 0, 0, 0, 0, 0, 36, 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, 255, 0, 41, 0, 0, 84, - 0, 0, 0, 0, 0, 0, 24, 0, 25, 0, - 0, 26, 684, 1272, 0, 0, 27, 0, 0, 0, - 28, 89, 90, 91, 256, 0, 0, 0, 0, 30, - 683, 0, 683, 95, 0, 683, 32, 683, 683, 0, - 683, 33, 683, 1273, 683, 34, 683, 683, 683, 0, - 0, 0, 683, 683, 0, 0, 0, 36, 683, 37, - 683, 683, 0, 38, 1274, 683, 0, 0, 0, 683, - 0, 39, 40, 0, 0, 41, 0, 0, 324, 105, - 257, 683, 0, 683, 0, 0, 0, 683, 683, 0, - 0, 0, 0, 0, 0, 683, 683, 0, 683, 683, - 683, 0, 683, 683, 0, 683, 683, 683, 683, 0, - 683, 0, 683, 0, 683, 683, 683, 0, 0, 0, - 683, 683, 0, 0, 0, 0, 683, 0, 683, 683, - 0, 0, 0, 683, 0, 0, 0, 683, 0, 0, - 0, 0, 683, 0, 0, 0, 0, 0, 0, 683, - 0, 683, 0, 0, 0, 683, 683, 0, 0, 366, - 0, 0, 0, 683, 683, 0, 0, 683, 0, 0, - 683, 0, 24, 0, 25, 683, 0, 26, 0, 0, - 1334, 0, 27, 683, 718, 0, 28, 0, 719, 1335, - 1336, 0, 0, 0, 1337, 30, 0, 0, 0, 0, - 1338, 0, 32, 0, 24, 0, 25, 33, 0, 26, - 0, 34, 1334, 0, 27, 0, 718, 0, 28, 0, - 719, 1335, 1336, 36, 0, 37, 1337, 30, 0, 38, - 0, 0, 1338, 0, 32, 0, 0, 39, 40, 33, - 0, 41, 0, 34, 1339, 0, 0, 0, 51, 1340, - 51, 683, 0, 51, 0, 36, 0, 37, 51, 0, - 0, 38, 51, 0, 0, 0, 0, 0, 0, 39, - 40, 51, 0, 41, 0, 0, 1339, 0, 51, 0, - 51, 1340, 51, 51, 1341, 51, 0, 51, 0, 51, - 51, 51, 0, 0, 51, 0, 51, 0, 0, 51, - 0, 51, 0, 51, 0, 51, 0, 0, 51, 0, - 51, 0, 0, 51, 51, 51, 0, 51, 0, 51, - 51, 51, 0, 51, 52, 1342, 52, 0, 51, 52, - 0, 51, 0, 51, 52, 0, 0, 51, 52, 0, - 51, 0, 0, 0, 0, 51, 51, 52, 0, 51, - 0, 0, 51, 0, 52, 159, 51, 1342, 51, 52, - 0, 51, 0, 52, 0, 52, 51, 52, 0, 0, - 51, 0, 52, 0, 0, 52, 0, 52, 0, 51, - 0, 52, 0, 0, 52, 159, 51, 0, 0, 52, - 52, 51, 0, 52, 0, 51, 52, 51, 0, 51, - 24, 51, 25, 0, 51, 26, 0, 51, 0, 51, - 27, 0, 0, 51, 28, 0, 51, 0, 0, 0, - 0, 51, 51, 30, 0, 51, 0, 0, 51, 0, - 32, 0, 0, 51, 0, 33, 0, 0, 0, 34, - 0, 581, 0, 0, 0, 24, 0, 25, 582, 0, - 26, 36, 0, 37, 0, 27, 0, 38, 0, 28, - 583, 0, 0, 29, 0, 39, 40, 0, 30, 41, - 0, 0, 584, 31, 0, 32, 0, 52, 0, 0, - 33, 0, 0, 0, 34, 35, 0, 0, 0, 24, - 0, 25, 0, 0, 26, 0, 36, 0, 37, 27, - 0, 0, 38, 28, 0, 0, 0, 0, 0, 51, - 39, 40, 30, 189, 41, 189, 0, 0, 189, 32, - 0, 0, 0, 189, 33, 0, 0, 189, 34, 0, - 0, 0, 0, 0, 0, 0, 189, 0, 0, 0, - 36, 0, 37, 189, 0, 0, 38, 0, 189, 0, - 0, 0, 189, 585, 39, 40, 0, 0, 41, 0, - 37, 324, 0, 0, 189, 0, 189, 0, 0, 0, - 189, 37, 0, 0, 0, 0, 37, 0, 189, 189, - 37, 0, 189, 37, 0, 189, 0, 291, 0, 0, - 0, 0, 0, 0, 0, 37, 37, 0, 42, 0, - 37, 37, 0, 35, 0, 0, 37, 0, 37, 37, - 37, 37, 0, 0, 35, 0, 37, 0, 0, 35, - 37, 0, 37, 35, 0, 0, 35, 0, 0, 0, - 0, 0, 37, 0, 37, 37, 0, 37, 35, 35, - 0, 37, 325, 35, 35, 0, 0, 0, 0, 35, - 0, 35, 35, 35, 35, 0, 0, 0, 0, 35, - 0, 37, 0, 35, 0, 35, 189, 37, 37, 0, - 0, 0, 51, 0, 0, 35, 0, 0, 35, 0, - 35, 0, 0, 51, 35, 0, 0, 0, 51, 0, - 0, 0, 51, 0, 0, 51, 0, 0, 0, 0, - 0, 0, 0, 0, 35, 0, 0, 51, 51, 0, - 35, 35, 51, 51, 0, 51, 0, 0, 51, 0, - 51, 51, 51, 51, 0, 0, 51, 0, 51, 0, - 0, 51, 51, 0, 51, 51, 0, 0, 51, 0, - 0, 0, 0, 0, 51, 0, 0, 51, 0, 51, - 51, 51, 0, 51, 0, 51, 51, 51, 0, 0, - 0, 51, 0, 51, 51, 51, 51, 0, 0, 0, - 0, 51, 0, 51, 0, 51, 0, 51, 0, 39, - 51, 0, 0, 0, 0, 0, 0, 51, 0, 0, - 51, 0, 51, 51, 0, 51, 51, 51, 51, 0, - 0, 0, 0, 51, 0, 51, 51, 51, 51, 0, - 0, 0, 0, 51, 0, 0, 51, 51, 51, 0, - 0, 0, 40, 0, 0, 0, 0, 0, 0, 51, - 0, 51, 51, 51, 51, 0, 51, 0, 0, 0, - 0, 51, 0, 51, 51, 51, 51, 0, 0, 0, - 0, 51, 0, 0, 0, 51, 51, 0, 51, 0, - 51, 51, 0, 51, 203, 51, 0, 51, 0, 51, - 51, 0, 51, 0, 51, 0, 0, 0, 0, 51, - 0, 51, 51, 51, 51, 0, 51, 0, 0, 51, - 0, 0, 0, 51, 0, 0, 51, 0, 0, 51, - 0, 0, 306, 463, 51, 51, 0, 0, 51, 51, - 51, 51, 51, 51, 51, 0, 0, 51, 0, 51, - 0, 0, 0, 51, 0, 0, 464, 0, 0, 0, - 0, 0, 0, 463, 51, 51, 51, 51, 51, 465, - 51, 0, 0, 466, 467, 0, 0, 0, 0, 468, - 0, 469, 470, 471, 472, 0, 464, 0, 0, 473, - 0, 0, 0, 474, 51, 0, 0, 0, 0, 465, - 0, 0, 0, 0, 467, 475, 0, 0, 476, 468, - 477, 469, 470, 471, 472, 0, 0, 0, 0, 473, - 0, 0, 0, 474, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 478, 475, 0, 0, 476, 0, - 477, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 478, + 0, 80, 39, 40, 255, 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, 302, 0, 0, 0, 0, + 933, 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, 254, + 0, 0, 0, 27, 61, 62, 0, 28, 0, 105, + 303, 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, + 255, 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, 302, 0, 0, 0, 531, 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, 254, 0, 0, 0, 27, + 61, 62, 0, 28, 0, 105, 303, 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, 255, 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, 302, 0, 0, + 0, 525, 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, 254, 0, 0, 0, 27, 61, 62, 0, 28, + 0, 105, 303, 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, 255, 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, 302, 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, 254, 0, 0, + 0, 27, 61, 62, 0, 28, 0, 105, 303, 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, 255, 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, 254, 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, 255, 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, 651, 651, 0, 651, 0, 0, 651, 651, + 0, 0, 0, 651, 651, 651, 0, 651, 0, 105, + 1090, 107, 108, 651, 0, 0, 651, 0, 0, 0, + 0, 0, 0, 651, 0, 0, 0, 0, 651, 0, + 651, 651, 651, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 651, 0, 651, 651, 0, 0, + 651, 0, 0, 651, 0, 651, 0, 651, 651, 651, + 651, 0, 651, 0, 0, 0, 0, 0, 0, 651, + 0, 0, 651, 651, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 651, 651, 651, + 651, 651, 0, 0, 0, 0, 0, 0, 0, 651, + 0, 0, 0, 0, 0, 651, 651, 651, 651, 0, + 0, 0, 651, 0, 651, 0, 0, 0, 0, 0, + 651, 651, 0, 0, 0, 0, 0, 0, 81, 81, + 0, 81, 0, 0, 81, 81, 0, 0, 0, 81, + 81, 81, 0, 81, 0, 651, 651, 651, 651, 81, + 0, 0, 81, 0, 0, 0, 0, 0, 0, 81, + 0, 0, 0, 0, 81, 0, 81, 81, 81, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 81, 0, 81, 81, 0, 0, 81, 0, 0, 81, + 0, 81, 0, 81, 81, 81, 81, 0, 81, 0, + 0, 0, 0, 0, 0, 81, 0, 0, 81, 81, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 81, 81, 81, 81, 81, 0, 0, + 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, + 0, 81, 81, 81, 81, 0, 0, 0, 81, 0, + 81, 0, 0, 0, 0, 0, 81, 81, 0, 0, + 0, 0, 0, 0, 140, 140, 0, 140, 0, 0, + 140, 140, 0, 0, 0, 140, 140, 140, 0, 140, + 0, 81, 81, 81, 81, 140, 0, 0, 140, 0, + 0, 0, 0, 0, 0, 140, 0, 0, 0, 0, + 140, 0, 140, 140, 140, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 140, 0, 140, 140, + 0, 0, 140, 0, 0, 140, 0, 140, 0, 140, + 140, 140, 140, 0, 140, 0, 0, 0, 0, 0, + 0, 140, 0, 0, 140, 140, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 140, + 140, 140, 140, 140, 0, 0, 0, 0, 0, 0, + 0, 140, 0, 0, 0, 0, 0, 140, 140, 140, + 140, 0, 0, 0, 140, 0, 140, 0, 0, 0, + 0, 0, 140, 140, 0, 0, 0, 0, 0, 0, + 56, 24, 0, 25, 0, 0, 26, 254, 0, 0, + 0, 27, 61, 62, 0, 28, 0, 140, 140, 140, + 140, 64, 0, 0, 30, 0, 0, 0, 0, 0, + 0, 32, 0, 31, 0, 0, 33, 0, 71, 72, + 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 36, 0, 37, 74, 31, 0, 38, 0, + 0, 76, 0, 78, 0, 80, 39, 40, 255, 31, + 41, 0, 0, 0, 31, 0, 0, 0, 0, 31, + 0, 31, 31, 31, 31, 0, 0, 31, 0, 31, + 0, 0, 0, 31, 0, 89, 90, 91, 256, 342, + 0, 0, 0, 0, 0, 31, 0, 95, 31, 0, + 31, 0, 0, 97, 98, 99, 100, 0, 0, 0, + 101, 0, 102, 0, 0, 0, 0, 0, 103, 104, + 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, + 31, 31, 0, 0, 0, 0, 0, 0, 688, 0, + 688, 0, 688, 105, 257, 688, 108, 688, 688, 0, + 688, 0, 688, 0, 688, 0, 688, 688, 688, 0, + 0, 0, 688, 688, 0, 0, 0, 0, 688, 0, + 688, 688, 0, 0, 0, 688, 0, 0, 0, 688, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 688, 688, 0, 688, 0, 0, 0, 688, 688, 0, + 0, 0, 0, 0, 0, 688, 688, 56, 24, 688, + 25, 0, 688, 26, 254, 0, 0, 688, 27, 61, + 62, 0, 28, 0, 0, 0, 0, 0, 64, 0, + 0, 30, 0, 0, 0, 0, 0, 0, 32, 688, + 688, 0, 0, 33, 0, 71, 72, 34, 0, 0, + 0, 0, 688, 0, 0, 0, 0, 0, 0, 36, + 0, 37, 74, 0, 0, 38, 0, 0, 76, 0, + 78, 0, 80, 39, 40, 255, 0, 41, 0, 0, + 84, 0, 0, 0, 0, 0, 0, 24, 0, 25, + 0, 0, 26, 688, 1283, 0, 0, 27, 0, 0, + 0, 28, 89, 90, 91, 256, 0, 0, 0, 0, + 30, 687, 0, 687, 95, 0, 687, 32, 687, 687, + 0, 687, 33, 687, 1284, 687, 34, 687, 687, 687, + 0, 0, 0, 687, 687, 0, 0, 0, 36, 687, + 37, 687, 687, 0, 38, 1285, 687, 0, 0, 0, + 687, 0, 39, 40, 0, 0, 41, 0, 0, 324, + 105, 257, 687, 0, 687, 0, 0, 0, 687, 687, + 0, 0, 0, 0, 0, 0, 687, 687, 0, 687, + 687, 687, 0, 687, 687, 0, 687, 687, 687, 687, + 0, 687, 0, 687, 0, 687, 687, 687, 0, 0, + 0, 687, 687, 0, 0, 0, 0, 687, 0, 687, + 687, 0, 0, 0, 687, 0, 0, 0, 687, 0, + 0, 0, 0, 687, 0, 0, 0, 0, 0, 0, + 687, 0, 687, 0, 0, 0, 687, 687, 0, 0, + 368, 0, 0, 0, 687, 687, 0, 0, 687, 0, + 0, 687, 0, 24, 0, 25, 687, 0, 26, 0, + 0, 1345, 0, 27, 687, 725, 0, 28, 0, 726, + 1346, 1347, 0, 0, 0, 1348, 30, 0, 0, 0, + 0, 1349, 0, 32, 0, 24, 0, 25, 33, 0, + 26, 0, 34, 1345, 0, 27, 0, 725, 0, 28, + 0, 726, 1346, 1347, 36, 0, 37, 1348, 30, 0, + 38, 0, 0, 1349, 0, 32, 0, 0, 39, 40, + 33, 0, 41, 0, 34, 1350, 0, 0, 0, 51, + 1351, 51, 687, 0, 51, 0, 36, 0, 37, 51, + 0, 0, 38, 51, 0, 0, 0, 0, 0, 0, + 39, 40, 51, 0, 41, 0, 0, 1350, 0, 51, + 0, 51, 1351, 51, 51, 1352, 51, 0, 51, 0, + 51, 51, 51, 0, 0, 51, 0, 51, 0, 0, + 51, 0, 51, 0, 51, 0, 51, 0, 0, 51, + 0, 51, 0, 0, 51, 51, 51, 0, 51, 0, + 51, 51, 51, 0, 51, 24, 1353, 25, 0, 51, + 26, 0, 51, 0, 51, 27, 0, 0, 51, 28, + 0, 51, 0, 0, 0, 0, 51, 51, 30, 0, + 51, 0, 0, 51, 0, 32, 159, 0, 1353, 0, + 33, 0, 0, 0, 34, 0, 585, 0, 0, 0, + 0, 0, 0, 586, 0, 0, 36, 0, 37, 0, + 0, 0, 38, 0, 0, 587, 159, 0, 0, 0, + 39, 40, 0, 0, 41, 0, 52, 588, 52, 0, + 0, 52, 51, 0, 0, 0, 52, 0, 0, 0, + 52, 0, 0, 0, 0, 0, 0, 0, 0, 52, + 0, 0, 0, 589, 0, 0, 52, 0, 51, 0, + 51, 52, 0, 51, 51, 52, 0, 52, 51, 52, + 0, 0, 51, 0, 52, 0, 0, 52, 0, 52, + 0, 51, 0, 52, 0, 0, 52, 0, 51, 0, + 0, 52, 52, 51, 0, 52, 0, 51, 52, 51, + 0, 51, 0, 0, 0, 0, 51, 0, 590, 51, + 0, 51, 0, 0, 0, 51, 0, 0, 51, 0, + 0, 0, 0, 51, 51, 0, 0, 51, 0, 24, + 51, 25, 0, 0, 26, 0, 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, 52, + 36, 0, 37, 33, 0, 0, 38, 34, 0, 0, + 0, 0, 37, 0, 39, 40, 0, 0, 41, 36, + 0, 37, 0, 37, 0, 38, 0, 0, 37, 0, + 0, 51, 37, 39, 40, 37, 0, 41, 0, 0, + 324, 0, 0, 0, 0, 0, 0, 37, 37, 0, + 0, 0, 37, 37, 0, 0, 0, 0, 37, 0, + 37, 37, 37, 37, 0, 0, 291, 0, 37, 0, + 0, 0, 37, 0, 37, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 37, 0, 37, 37, 35, 37, + 0, 0, 0, 37, 0, 0, 0, 0, 0, 35, + 0, 0, 42, 0, 35, 0, 0, 0, 35, 0, + 0, 35, 0, 37, 0, 0, 0, 0, 0, 37, + 37, 325, 0, 35, 35, 0, 0, 0, 35, 35, + 31, 0, 31, 0, 35, 0, 35, 35, 35, 35, + 0, 0, 0, 0, 35, 0, 0, 0, 35, 0, + 35, 0, 0, 31, 0, 0, 0, 0, 0, 0, + 35, 0, 0, 35, 0, 35, 31, 0, 0, 35, + 0, 31, 0, 0, 0, 0, 31, 0, 31, 31, + 31, 31, 0, 0, 0, 0, 31, 0, 0, 35, + 31, 0, 0, 51, 0, 35, 35, 0, 0, 0, + 0, 0, 31, 0, 51, 31, 0, 31, 0, 51, + 0, 0, 0, 51, 0, 0, 51, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, + 0, 31, 0, 51, 51, 0, 51, 31, 31, 51, + 0, 51, 51, 51, 51, 0, 0, 51, 0, 51, + 0, 0, 51, 51, 0, 51, 51, 0, 0, 51, + 0, 0, 0, 0, 0, 51, 0, 0, 51, 0, + 51, 51, 51, 0, 51, 0, 51, 51, 51, 0, + 0, 0, 51, 0, 51, 51, 51, 51, 0, 0, + 0, 0, 51, 0, 51, 0, 51, 0, 51, 0, + 39, 51, 0, 0, 0, 0, 0, 0, 51, 0, + 0, 51, 0, 51, 51, 0, 51, 51, 0, 51, + 0, 0, 0, 0, 51, 0, 51, 51, 51, 51, + 0, 0, 0, 0, 51, 0, 0, 51, 51, 51, + 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, + 51, 0, 51, 51, 51, 51, 0, 51, 0, 0, + 0, 0, 51, 0, 51, 51, 51, 51, 0, 0, + 0, 0, 51, 0, 0, 0, 51, 51, 0, 51, + 0, 51, 51, 0, 0, 201, 0, 0, 51, 0, + 51, 51, 51, 51, 51, 51, 0, 0, 0, 0, + 51, 0, 51, 51, 51, 51, 0, 0, 51, 0, + 51, 0, 0, 0, 51, 51, 0, 51, 0, 51, + 51, 0, 0, 203, 0, 0, 51, 0, 51, 51, + 51, 51, 0, 51, 0, 0, 0, 0, 51, 0, + 51, 51, 51, 51, 0, 0, 0, 0, 51, 0, + 0, 0, 51, 51, 0, 51, 0, 0, 0, 0, + 51, 305, 51, 0, 51, 0, 51, 51, 0, 51, + 0, 51, 0, 0, 0, 0, 51, 0, 51, 51, + 51, 51, 0, 51, 0, 0, 51, 0, 0, 0, + 51, 0, 0, 51, 0, 0, 51, 0, 0, 306, + 465, 51, 51, 0, 0, 51, 51, 51, 51, 51, + 51, 51, 0, 0, 51, 0, 51, 0, 0, 0, + 51, 0, 0, 466, 0, 0, 0, 0, 0, 0, + 465, 51, 51, 51, 51, 51, 467, 51, 0, 0, + 468, 469, 0, 0, 0, 0, 470, 0, 471, 472, + 473, 474, 0, 466, 0, 0, 475, 0, 0, 0, + 476, 51, 0, 0, 0, 0, 467, 0, 0, 0, + 0, 469, 477, 0, 0, 478, 470, 479, 471, 472, + 473, 474, 0, 0, 0, 0, 475, 0, 0, 0, + 476, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 480, 477, 0, 0, 478, 0, 479, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 480, }; protected static readonly short [] yyCheck = { 17, - 4, 18, 299, 17, 51, 300, 526, 51, 17, 342, - 189, 17, 234, 528, 289, 232, 323, 6, 188, 480, - 247, 502, 20, 59, 157, 570, 334, 17, 381, 298, - 68, 84, 296, 1148, 753, 814, 755, 972, 77, 587, - 780, 0, 256, 59, 58, 1184, 1185, 268, 47, 87, - 88, 596, 256, 256, 92, 73, 0, 1279, 256, 77, - 113, 330, 115, 268, 268, 79, 368, 81, 113, 59, - 115, 256, 256, 63, 1296, 365, 256, 95, 256, 87, - 88, 256, 801, 256, 256, 804, 191, 256, 977, 256, - 256, 256, 294, 256, 256, 1234, 256, 282, 17, 256, - 108, 256, 256, 256, 306, 256, 365, 677, 678, 256, - 256, 256, 256, 381, 256, 357, 414, 17, 268, 17, - 269, 382, 383, 391, 367, 368, 276, 429, 401, 314, - 428, 373, 367, 376, 172, 396, 397, 286, 257, 157, - 413, 376, 189, 157, 386, 189, 414, 368, 157, 697, - 61, 157, 421, 380, 65, 66, 67, 371, 69, 70, - 256, 305, 17, 74, 75, 256, 277, 157, 340, 372, - 81, 374, 83, 371, 85, 256, 17, 343, 358, 90, - 91, 17, 17, 367, 17, 232, 17, 371, 232, 367, - 1229, 199, 200, 371, 363, 17, 1256, 339, 371, 17, - 375, 422, 344, 114, 346, 256, 420, 349, 350, 247, - 352, 353, 367, 363, 522, 1104, 418, 422, 422, 376, - 325, 259, 420, 445, 223, 391, 429, 444, 525, 247, - 381, 376, 374, 418, 381, 253, 420, 570, 157, 228, - 1462, 756, 420, 256, 424, 425, 426, 427, 414, 418, - 286, 418, 363, 418, 262, 418, 418, 157, 418, 157, - 296, 366, 428, 596, 418, 418, 371, 1489, 418, 322, - 286, 289, 418, 326, 0, 565, 294, 295, 331, 1501, - 288, 1503, 1061, 374, 543, 381, 331, 429, 1348, 368, - 328, 309, 256, 1353, 375, 333, 286, 376, 257, 317, - 308, 319, 157, 319, 318, 323, 565, 418, 419, 256, - 256, 20, 256, 1352, 256, 1034, 157, 335, 336, 1379, - 372, 157, 157, 374, 157, 256, 157, 256, 587, 319, - 369, 256, 325, 342, 368, 157, 342, 358, 1078, 157, - 368, 1456, 380, 381, 255, 450, 1143, 258, 1127, 256, - 363, 369, 342, 335, 362, 256, 904, 370, 325, 372, - 256, 374, 380, 381, 256, 256, 384, 385, 386, 387, - 388, 389, 390, 391, 392, 393, 394, 429, 87, 88, - 485, 947, 256, 1522, 418, 256, 306, 298, 426, 427, - 398, 399, 430, 313, 256, 339, 368, 444, 416, 108, - 444, 429, 1337, 314, 256, 418, 370, 454, 698, 979, - 374, 981, 341, 1552, 984, 363, 256, 256, 426, 427, - 262, 369, 937, 367, 363, 418, 372, 371, 375, 373, - 374, 375, 376, 375, 741, 916, 367, 381, 697, 1158, - 369, 256, 256, 368, 256, 376, 256, 1166, 446, 374, - 494, 418, 451, 452, 256, 335, 298, 429, 457, 718, - 367, 256, 460, 501, 371, 503, 373, 374, 363, 376, - 418, 1190, 694, 374, 381, 257, 372, 368, 370, 418, - 585, 495, 374, 374, 372, 266, 502, 1053, 526, 1055, - 199, 200, 845, 598, 758, 600, 266, 602, 372, 726, - 1070, 372, 1072, 1073, 368, 543, 524, 369, 526, 547, - 528, 733, 502, 1028, 368, 367, 368, 369, 305, 371, - 372, 368, 374, 418, 376, 539, 540, 1246, 367, 369, - 369, 257, 371, 314, 418, 553, 378, 379, 828, 369, - 558, 429, 418, 373, 314, 543, 272, 343, 586, 429, - 343, 277, 428, 262, 343, 281, 256, 372, 372, 369, - 372, 570, 1181, 577, 570, 429, 418, 369, 420, 828, - 296, 423, 277, 372, 369, 429, 281, 369, 1262, 288, - 570, 420, 429, 688, 423, 381, 497, 596, 606, 607, - 596, 300, 381, 423, 375, 391, 1393, 323, 391, 308, - 1170, 256, 391, 708, 901, 375, 596, 1491, 1492, 264, - 256, 363, 372, 903, 305, 374, 342, 294, 414, 1238, - 363, 414, 930, 1307, 851, 414, 1423, 1424, 539, 1426, - 429, 1201, 428, 368, 767, 428, 674, 342, 676, 428, - 1437, 376, 371, 1440, 372, 904, 363, 685, 376, 376, - 1195, 376, 369, 362, 672, 341, 365, 416, 1455, 677, - 678, 263, 680, 272, 1548, 934, 418, 367, 277, 429, - 325, 371, 281, 373, 374, 418, 376, 972, 1248, 368, - 357, 381, 1479, 369, 374, 256, 363, 296, 726, 398, - 399, 420, 369, 339, 429, 372, 373, 1267, 344, 372, - 346, 418, 429, 349, 350, 743, 352, 353, 726, 386, - 1191, 21, 263, 315, 323, 415, 1262, 426, 427, 376, - 357, 1262, 758, 741, 1031, 1262, 416, 256, 374, 418, - 719, 261, 369, 342, 305, 372, 373, 446, 756, 792, - 371, 418, 52, 761, 421, 418, 1043, 357, 1262, 386, - 391, 460, 1262, 367, 284, 367, 367, 795, 256, 1262, - 371, 1307, 376, 753, 315, 755, 1307, 297, 272, 996, - 1307, 272, 302, 414, 788, 256, 386, 307, 786, 309, - 310, 311, 312, 429, 421, 315, 386, 317, 806, 827, - 808, 321, 296, 1307, 371, 296, 294, 1307, 812, 1262, - 814, 809, 272, 333, 1307, 823, 336, 845, 338, 420, - 339, 801, 1356, 851, 804, 344, 824, 346, 988, 323, - 349, 350, 323, 352, 353, 1369, 296, 845, 414, 1162, - 256, 878, 362, 851, 543, 853, 418, 855, 368, 369, - 1115, 946, 428, 269, 1307, 294, 428, 1391, 256, 339, - 925, 1148, 339, 323, 339, 370, 565, 306, 339, 374, - 286, 936, 1195, 344, 908, 346, 347, 348, 349, 350, - 351, 352, 353, 354, 355, 356, 1151, 367, 587, 418, - 367, 899, 367, 901, 384, 306, 376, 368, 886, 370, - 389, 372, 313, 374, 375, 376, 1229, 905, 1029, 357, - 918, 367, 891, 941, 325, 943, 357, 925, 1369, 390, - 376, 949, 363, 1188, 1141, 373, 391, 935, 369, 937, - 401, 372, 373, 374, 367, 368, 1057, 400, 386, 1444, - 370, 339, 413, 376, 374, 386, 344, 975, 346, 414, - 357, 349, 350, 256, 352, 353, 368, 1052, 429, 371, - 369, 373, 374, 428, 385, 367, 373, 373, 996, 368, - 376, 979, 381, 981, 376, 374, 984, 418, 367, 386, - 392, 393, 381, 369, 1012, 367, 256, 376, 996, 371, - 390, 373, 374, 371, 376, 373, 1208, 1204, 697, 381, - 412, 1506, 256, 1001, 1269, 993, 381, 371, 420, 368, - 1179, 423, 415, 372, 392, 393, 391, 376, 256, 718, - 1028, 418, 368, 1031, 1003, 306, 1005, 308, 1007, 1352, - 376, 429, 313, 415, 412, 418, 339, 373, 1543, 414, - 376, 344, 420, 346, 325, 423, 349, 350, 373, 352, - 353, 376, 1337, 428, 1034, 1565, 1566, 1061, 256, 374, - 369, 376, 1070, 372, 1072, 1073, 381, 1075, 1317, 339, - 394, 395, 1261, 1262, 344, 6, 346, 1326, 256, 349, - 350, 418, 352, 353, 370, 339, 17, 786, 374, 277, - 344, 1085, 346, 1282, 368, 349, 350, 376, 352, 353, - 374, 339, 376, 386, 387, 388, 344, 1115, 346, 1143, - 809, 349, 350, 1141, 352, 353, 376, 367, 1307, 369, - 1309, 1129, 1130, 1127, 367, 824, 429, 256, 59, 828, - 370, 371, 63, 1141, 374, 1142, 404, 405, 406, 407, - 1148, 339, 1179, 1151, 1181, 1179, 344, 1181, 346, 370, - 373, 349, 350, 374, 352, 353, 87, 88, 376, 429, - 372, 372, 1170, 1162, 376, 376, 1162, 1204, 1176, 1456, - 1204, 372, 372, 374, 374, 429, 376, 108, 1158, 370, - 1188, 372, 1162, 374, 368, 370, 1166, 886, 372, 374, - 374, 429, 376, 1201, 1202, 371, 1195, 373, 370, 1195, - 372, 1238, 374, 368, 1238, 904, 905, 372, 372, 374, - 1190, 376, 376, 370, 371, 1195, 373, 374, 375, 371, - 370, 373, 372, 376, 1261, 1262, 157, 1261, 294, 256, - 1229, 429, 368, 1229, 372, 371, 374, 373, 374, 374, - 1248, 376, 370, 343, 372, 1282, 294, 1342, 1282, 1229, - 370, 370, 372, 372, 398, 399, 392, 393, 372, 1267, - 374, 1269, 1260, 372, 372, 374, 1246, 0, 199, 200, - 1307, 1366, 1309, 972, 376, 1309, 412, 370, 370, 372, - 372, 414, 1310, 374, 420, 376, 418, 423, 1383, 374, - 374, 376, 376, 374, 993, 376, 368, 369, 354, 355, - 354, 355, 1001, 368, 369, 418, 1401, 356, 1403, 414, - 415, 418, 339, 364, 365, 375, 1320, 344, 1316, 346, - 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, - 0, 262, 372, 373, 364, 365, 1334, 1335, 369, 1146, - 1147, 368, 376, 370, 372, 372, 372, 374, 375, 376, - 400, 401, 368, 1352, 374, 286, 1352, 288, 372, 1393, - 1358, 402, 403, 1361, 408, 409, 294, 294, 374, 300, - 1374, 372, 1352, 372, 374, 372, 256, 308, 376, 371, - 256, 294, 294, 372, 374, 381, 373, 375, 319, 1423, - 1424, 374, 1426, 373, 418, 381, 372, 1434, 423, 374, - 374, 261, 429, 1437, 374, 374, 1440, 429, 372, 374, - 367, 342, 374, 421, 1451, 373, 372, 372, 343, 294, - 374, 1455, 294, 374, 284, 418, 370, 1464, 1465, 371, - 367, 362, 375, 418, 365, 256, 1444, 297, 1442, 256, - 374, 256, 302, 256, 280, 1479, 381, 307, 1456, 309, - 310, 311, 312, 256, 1491, 1492, 367, 317, 368, 343, - 351, 321, 370, 372, 371, 1473, 381, 398, 399, 374, - 376, 374, 376, 333, 372, 370, 336, 423, 338, 372, - 372, 93, 347, 1182, 367, 97, 98, 99, 100, 101, - 102, 103, 104, 381, 381, 426, 427, 256, 1506, 381, - 256, 372, 362, 372, 364, 365, 376, 368, 368, 256, - 347, 1548, 374, 370, 402, 403, 404, 405, 406, 407, - 408, 409, 410, 411, 257, 375, 370, 367, 261, 370, - 372, 339, 348, 368, 348, 1543, 374, 1565, 1566, 272, - 418, 1240, 372, 256, 277, 1549, 1550, 367, 281, 368, - 418, 284, 1556, 1557, 381, 367, 367, 1565, 1566, 368, - 356, 1260, 337, 296, 297, 372, 376, 371, 301, 302, - 376, 502, 374, 368, 307, 368, 309, 310, 311, 312, - 368, 305, 371, 369, 317, 418, 256, 418, 321, 368, - 323, 367, 262, 418, 371, 376, 418, 371, 371, 381, - 333, 373, 371, 336, 367, 338, 371, 369, 372, 342, - 381, 371, 543, 374, 372, 0, 373, 1316, 1317, 373, - 256, 374, 374, 374, 418, 370, 376, 1326, 298, 362, - 372, 372, 376, 418, 565, 1334, 1335, 376, 1337, 570, - 418, 372, 376, 372, 1343, 381, 372, 368, 418, 381, - 370, 368, 367, 372, 315, 263, 587, 1356, 372, 1358, - 371, 371, 1361, 368, 372, 596, 0, 0, 367, 339, - 1369, 368, 376, 376, 344, 0, 346, 347, 348, 349, - 350, 351, 352, 353, 354, 355, 356, 357, 372, 368, - 302, 372, 1391, 363, 372, 418, 370, 367, 368, 369, - 370, 371, 372, 373, 374, 375, 376, 372, 378, 379, - 368, 368, 382, 383, 384, 385, 386, 372, 370, 389, - 390, 367, 334, 418, 394, 395, 396, 397, 398, 399, - 400, 401, 418, 376, 368, 372, 376, 372, 256, 368, - 368, 372, 367, 413, 376, 367, 416, 373, 418, 376, - 420, 372, 368, 423, 372, 368, 376, 367, 315, 429, - 263, 376, 376, 50, 12, 376, 697, 376, 5, 376, - 376, 376, 376, 993, 886, 1141, 1141, 1309, 1282, 718, - 1512, 1459, 1496, 395, 396, 397, 0, 718, 400, 401, - 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, - 412, 413, 414, 415, 1447, 1476, 1343, 1442, 732, 908, - 908, 908, 1356, 903, 1557, 1307, 1375, 1551, 1469, 1465, - 1464, 339, 753, 1550, 755, 1238, 344, 1343, 346, 347, - 348, 349, 350, 351, 352, 353, 354, 355, 356, 1403, - 878, 543, 930, 761, 1240, 380, 851, 726, 1043, 71, - 368, 337, 370, 411, 372, 786, 374, 375, 376, 607, - 410, 758, 413, 412, 565, 828, 414, 385, 415, 1218, - 801, 256, 390, 804, 1316, 1162, 261, 262, 809, 157, - 1106, 1030, 400, 401, 1130, 1118, 1057, 1014, 1120, 1191, - 541, 435, 951, 824, 435, 413, 683, 828, 1312, 284, - 884, 1202, 883, -1, -1, -1, -1, -1, -1, -1, - 522, 429, 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, 0, -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, 904, 905, -1, -1, 362, 363, -1, - 592, -1, 367, 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, - 0, 416, -1, 418, -1, 420, -1, -1, 423, -1, - -1, 972, 256, 257, 429, -1, -1, -1, -1, -1, - 264, 265, 266, 267, 268, -1, 270, 271, -1, 273, - 274, 275, 276, 277, 278, 279, 280, -1, -1, -1, - 1001, 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, 1034, 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, 261, -1, 367, 368, -1, -1, 371, 0, -1, - -1, -1, 376, 377, 378, 379, 380, -1, -1, -1, - 384, -1, 386, -1, 284, -1, -1, -1, 392, 393, - -1, -1, -1, -1, -1, -1, -1, 297, -1, -1, - -1, -1, 302, -1, 257, -1, -1, 307, 261, 309, - 310, 311, 312, 417, 418, 419, 420, 317, 422, 272, - -1, 321, -1, -1, 277, 429, -1, -1, 281, -1, - -1, 284, -1, 333, -1, -1, 336, 1158, 338, -1, - -1, 1162, -1, 296, 297, 1166, -1, -1, 301, 302, - -1, -1, -1, -1, 307, -1, 309, 310, 311, 312, - -1, 1182, 362, -1, 317, -1, -1, -1, 321, 1190, - 323, -1, -1, -1, 1195, -1, -1, -1, -1, -1, - 333, -1, 335, 336, -1, 338, -1, -1, -1, 342, - -1, -1, -1, -1, 0, -1, -1, 257, -1, -1, - -1, 261, -1, -1, -1, -1, -1, -1, 1229, 362, - -1, -1, 272, -1, -1, 368, 369, 277, 418, 1240, - -1, 281, -1, -1, 284, 1246, -1, -1, 930, -1, - -1, -1, -1, -1, -1, -1, 296, 297, -1, 1260, - -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, -1, 336, -1, 338, -1, - -1, -1, 342, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 1316, 1317, -1, -1, -1, - -1, -1, 362, -1, -1, 1326, -1, 367, 368, 369, - -1, -1, -1, 1334, 1335, -1, 1337, -1, -1, -1, - -1, -1, -1, -1, 256, 257, -1, -1, -1, -1, - -1, 1352, 264, 265, 266, 267, 268, 1358, 270, 271, - 1361, 273, 274, 275, 276, 277, 278, 279, -1, -1, - -1, -1, -1, 285, -1, 287, 288, 289, 290, 291, - 292, -1, -1, 295, 0, -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, 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, - -1, -1, -1, -1, -1, -1, -1, -1, 284, -1, - -1, -1, -1, -1, -1, 417, 418, 419, 420, -1, - 422, 297, 298, -1, 0, -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, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 413, -1, -1, - 416, -1, 418, -1, 420, -1, -1, 423, -1, -1, - 256, -1, -1, 429, 0, 261, 262, -1, -1, -1, + 4, 18, 191, 529, 299, 189, 17, 300, 531, 51, + 289, 344, 51, 234, 232, 17, 247, 6, 482, 188, + 323, 68, 367, 84, 298, 20, 504, 17, 298, 59, + 574, 157, 581, 59, 334, 17, 383, 47, 684, 685, + 87, 88, 760, 296, 762, 92, 982, 58, 1159, 1195, + 1196, 788, 113, 77, 115, 73, 0, 601, 367, 77, + 330, 113, 592, 115, 256, 112, 256, 268, 79, 256, + 81, 256, 1290, 268, 256, 256, 256, 95, 987, 17, + 256, 256, 17, 368, 256, 325, 1502, 1503, 268, 1307, + 256, 809, 256, 368, 812, 0, 256, 256, 374, 1245, + 268, 1240, 256, 17, 372, 256, 368, 256, 276, 372, + 282, 256, 368, 256, 256, 401, 256, 17, 256, 369, + 357, 256, 256, 256, 1367, 172, 368, 413, 256, 294, + 372, 381, 256, 358, 376, 294, 325, 1380, 17, 157, + 416, 306, 314, 1559, 429, 257, 157, 189, 277, 386, + 189, 382, 17, 423, 429, 157, 418, 17, 339, 1402, + 17, 429, 418, 344, 340, 346, 429, 157, 349, 350, + 256, 352, 353, 368, 704, 157, 363, 367, 418, 368, + 372, 371, 374, 17, 373, 367, 371, 17, 256, 371, + 232, 256, 17, 232, 59, 363, 371, 339, 63, 246, + 247, 546, 344, 343, 346, 371, 1115, 349, 350, 363, + 352, 353, 259, 223, 363, 256, 370, 381, 372, 157, + 374, 422, 157, 568, 1363, 525, 447, 422, 446, 247, + 420, 418, 374, 528, 363, 253, 381, 429, 420, 228, + 763, 574, 422, 157, 0, 420, 418, 592, 429, 296, + 418, 391, 376, 381, 420, 1473, 286, 157, 418, 568, + 286, 322, 20, 452, 418, 326, 296, 418, 601, 418, + 331, 289, 358, 822, 414, 418, 294, 295, 157, 331, + 418, 328, 1500, 418, 418, 418, 333, 429, 428, 418, + 419, 309, 157, 319, 1512, 256, 1514, 157, 487, 317, + 157, 319, 367, 294, 369, 323, 371, 318, 376, 256, + 1154, 256, 335, 257, 256, 306, 1267, 335, 336, 256, + 374, 277, 371, 157, 373, 281, 1044, 157, 375, 87, + 88, 378, 157, 256, 375, 382, 383, 256, 424, 425, + 426, 427, 344, 989, 256, 991, 256, 371, 994, 368, + 108, 256, 1089, 371, 344, 420, 1467, 256, 423, 704, + 256, 256, 416, 256, 382, 383, 1039, 256, 386, 387, + 388, 389, 390, 391, 392, 393, 394, 395, 396, 256, + 725, 428, 429, 913, 256, 432, 342, 1533, 305, 256, + 367, 368, 256, 372, 335, 1068, 705, 325, 257, 376, + 418, 590, 256, 418, 446, 256, 367, 446, 1359, 256, + 429, 256, 1348, 1364, 456, 376, 605, 1563, 256, 608, + 609, 286, 367, 256, 947, 372, 371, 418, 373, 374, + 256, 376, 369, 375, 339, 1081, 381, 1083, 1084, 1390, + 256, 199, 200, 453, 454, 748, 341, 925, 266, 459, + 429, 1169, 375, 448, 319, 374, 503, 496, 505, 1177, + 372, 305, 367, 87, 88, 375, 371, 462, 373, 374, + 375, 376, 957, 369, 369, 374, 381, 370, 504, 344, + 701, 374, 529, 1201, 108, 374, 497, 256, 429, 266, + 418, 372, 837, 370, 363, 264, 314, 374, 369, 546, + 372, 257, 733, 550, 262, 372, 695, 854, 372, 527, + 262, 529, 765, 531, 368, 1038, 272, 1192, 369, 740, + 374, 277, 369, 1072, 376, 281, 715, 372, 837, 371, + 288, 542, 543, 368, 372, 1181, 369, 314, 556, 1257, + 296, 367, 300, 561, 591, 376, 298, 368, 429, 418, + 308, 546, 368, 368, 341, 376, 325, 375, 374, 570, + 1404, 363, 343, 368, 363, 363, 1212, 323, 913, 391, + 581, 263, 574, 343, 1249, 199, 200, 429, 420, 1064, + 343, 1066, 369, 369, 574, 256, 342, 373, 376, 1138, + 1434, 1435, 414, 1437, 429, 613, 614, 363, 375, 601, + 381, 386, 263, 912, 1448, 256, 364, 1451, 429, 367, + 391, 601, 1273, 1259, 429, 910, 418, 256, 381, 418, + 418, 391, 1466, 315, 429, 363, 378, 379, 391, 860, + 428, 369, 1278, 414, 681, 256, 683, 423, 262, 504, + 940, 363, 400, 401, 414, 692, 1490, 428, 256, 775, + 256, 414, 418, 363, 315, 394, 395, 1318, 428, 369, + 21, 679, 1206, 256, 288, 428, 684, 685, 339, 687, + 428, 429, 946, 344, 944, 346, 372, 368, 349, 350, + 418, 352, 353, 1273, 308, 376, 733, 1273, 339, 982, + 448, 52, 272, 344, 391, 346, 418, 305, 349, 350, + 339, 352, 353, 750, 462, 344, 428, 346, 418, 574, + 349, 350, 305, 352, 353, 733, 296, 414, 765, 1273, + 272, 367, 418, 374, 1202, 371, 373, 371, 1318, 376, + 748, 428, 1318, 272, 1273, 765, 601, 726, 1041, 800, + 364, 1273, 306, 323, 296, 763, 367, 354, 355, 313, + 371, 769, 373, 374, 339, 376, 803, 296, 429, 1054, + 381, 367, 368, 369, 1318, 371, 372, 956, 374, 256, + 376, 323, 1272, 1273, 420, 1006, 400, 401, 429, 1318, + 269, 371, 367, 373, 323, 796, 1318, 357, 546, 836, + 429, 376, 256, 1293, 415, 368, 814, 286, 816, 369, + 367, 374, 372, 373, 428, 429, 367, 854, 826, 820, + 568, 822, 418, 860, 420, 376, 386, 423, 1318, 61, + 1320, 367, 1273, 65, 66, 67, 272, 69, 70, 998, + 376, 277, 74, 75, 592, 281, 854, 368, 369, 81, + 1173, 83, 860, 85, 862, 887, 864, 1126, 90, 91, + 296, 421, 339, 1273, 371, 382, 383, 344, 381, 346, + 256, 389, 349, 350, 1159, 352, 353, 1318, 391, 396, + 397, 256, 114, 1206, 1063, 339, 373, 323, 917, 376, + 344, 384, 346, 1162, 269, 349, 350, 385, 352, 353, + 908, 414, 910, 400, 357, 760, 342, 762, 1318, 357, + 895, 286, 357, 369, 951, 339, 953, 1240, 339, 927, + 373, 900, 959, 367, 932, 373, 1380, 935, 373, 390, + 1199, 1152, 376, 386, 418, 367, 368, 945, 386, 947, + 306, 386, 1455, 367, 376, 371, 367, 313, 985, 368, + 294, 415, 429, 339, 809, 374, 704, 812, 344, 325, + 346, 256, 381, 349, 350, 368, 352, 353, 371, 1006, + 373, 374, 386, 387, 388, 429, 368, 725, 381, 367, + 306, 989, 308, 991, 376, 1022, 994, 313, 376, 392, + 393, 1028, 373, 1328, 367, 376, 0, 369, 1006, 325, + 372, 370, 1337, 376, 1517, 374, 368, 1215, 1219, 412, + 372, 1280, 374, 357, 376, 256, 1190, 420, 1003, 363, + 423, 418, 367, 255, 369, 369, 258, 277, 372, 373, + 1038, 368, 367, 1041, 1013, 372, 1015, 374, 1017, 376, + 1363, 1554, 386, 429, 339, 374, 794, 376, 372, 344, + 374, 346, 381, 376, 349, 350, 376, 352, 353, 370, + 1576, 1577, 371, 374, 373, 1348, 298, 373, 372, 817, + 374, 1072, 376, 1081, 418, 1083, 1084, 421, 1086, 398, + 399, 357, 314, 392, 393, 833, 368, 363, 6, 837, + 256, 370, 374, 369, 376, 374, 372, 373, 374, 17, + 354, 355, 1096, 412, 370, 371, 376, 373, 374, 375, + 386, 420, 370, 371, 423, 1152, 374, 370, 1126, 372, + 367, 374, 368, 369, 371, 1154, 373, 374, 372, 376, + 374, 370, 1140, 1141, 381, 374, 370, 1138, 372, 372, + 374, 59, 418, 376, 1152, 63, 1153, 895, 372, 372, + 376, 1159, 376, 376, 1162, 370, 372, 373, 1190, 374, + 1192, 1190, 370, 1192, 372, 913, 914, 372, 415, 87, + 88, 376, 368, 1181, 1353, 371, 294, 373, 374, 1187, + 794, 1173, 1467, 1215, 294, 374, 1215, 376, 343, 1044, + 108, 1199, 370, 1173, 372, 372, 392, 393, 1377, 406, + 407, 408, 409, 817, 1212, 1213, 370, 370, 372, 372, + 372, 372, 374, 374, 1206, 1394, 412, 1249, 376, 833, + 1249, 370, 414, 372, 420, 418, 1206, 423, 370, 374, + 372, 376, 418, 1412, 982, 1414, 374, 356, 376, 157, + 1272, 1273, 374, 1272, 376, 374, 418, 376, 1240, 414, + 415, 1259, 369, 257, 375, 1003, 376, 261, 364, 365, + 1240, 1293, 374, 1011, 1293, 364, 365, 499, 272, 372, + 1278, 372, 1280, 277, 381, 1157, 1158, 281, 402, 403, + 284, 199, 200, 368, 1321, 372, 1318, 294, 1320, 404, + 405, 1320, 296, 297, 410, 411, 294, 301, 302, 374, + 914, 372, 372, 307, 372, 309, 310, 311, 312, 374, + 542, 256, 376, 317, 1169, 428, 371, 321, 1173, 323, + 428, 256, 1177, 294, 294, 381, 372, 374, 373, 333, + 1331, 335, 336, 375, 338, 374, 373, 418, 342, 372, + 381, 429, 374, 374, 262, 374, 1201, 374, 372, 423, + 367, 1206, 374, 374, 421, 373, 372, 372, 362, 343, + 374, 294, 294, 374, 368, 369, 418, 370, 286, 371, + 288, 1363, 367, 256, 418, 1404, 375, 256, 374, 256, + 256, 381, 300, 1363, 1385, 1240, 280, 256, 367, 372, + 308, 0, 368, 343, 351, 370, 376, 1011, 371, 376, + 374, 319, 1257, 372, 370, 1434, 1435, 374, 1437, 372, + 372, 423, 367, 1445, 256, 256, 381, 347, 372, 1448, + 381, 381, 1451, 372, 376, 368, 344, 256, 347, 370, + 1462, 375, 374, 370, 370, 339, 367, 1466, 256, 368, + 348, 348, 256, 1475, 1476, 1193, 364, 1455, 372, 367, + 418, 374, 1453, 368, 418, 372, 367, 367, 93, 1467, + 381, 1490, 97, 98, 99, 100, 101, 102, 103, 104, + 1502, 1503, 381, 368, 367, 376, 1484, 376, 356, 371, + 368, 368, 400, 401, 374, 337, 372, 368, 305, 371, + 418, 418, 367, 402, 403, 404, 405, 406, 407, 408, + 409, 410, 411, 1251, 369, 368, 418, 371, 1363, 1517, + 428, 429, 371, 418, 376, 371, 373, 371, 367, 369, + 381, 339, 373, 1271, 371, 371, 344, 1559, 346, 347, + 348, 349, 350, 351, 352, 353, 354, 355, 356, 1576, + 1577, 381, 372, 374, 372, 256, 1554, 373, 418, 374, + 368, 0, 370, 374, 372, 374, 374, 375, 376, 1560, + 1561, 376, 372, 372, 370, 418, 1567, 1568, 1576, 1577, + 418, 376, 390, 376, 372, 418, 376, 372, 372, 1327, + 1328, 368, 400, 401, 381, 381, 504, 370, 372, 1337, + 368, 367, 315, 263, 371, 413, 371, 1345, 1346, 368, + 1348, 372, 372, 0, 0, 367, 1354, 368, 376, 376, + 0, 429, 372, 368, 372, 372, 418, 370, 368, 1367, + 372, 1369, 368, 372, 1372, 370, 367, 418, 546, 418, + 368, 315, 1380, 376, 376, 372, 0, 372, 368, 368, + 376, 367, 376, 367, 372, 372, 368, 368, 257, 367, + 568, 376, 261, 373, 1402, 263, 574, 1271, 50, 376, + 376, 376, 376, 272, 376, 12, 376, 302, 277, 376, + 376, 5, 281, 1003, 592, 284, 895, 1152, 1152, 1470, + 1320, 1293, 725, 601, 1523, 1507, 1458, 296, 297, 1487, + 1453, 1354, 301, 302, 912, 917, 917, 917, 307, 334, + 309, 310, 311, 312, 739, 1367, 256, 342, 317, 1318, + 1568, 1386, 321, 1327, 323, 1480, 1562, 1249, 1476, 1414, + 1475, 1561, 1354, 546, 333, 1251, 335, 336, 887, 338, + 940, 1345, 1346, 342, 935, 769, 382, 860, 1054, 733, + 614, 71, 765, 337, 412, 414, 413, 837, 568, 415, + 1327, 416, 157, 362, 417, 1369, 1229, 1173, 1372, 1040, + 369, 1117, 397, 398, 399, 1141, 1068, 402, 403, 404, + 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, + 415, 416, 417, 1129, 1024, 1202, 704, 961, 1131, 339, + 544, 1213, 437, 690, 344, 437, 346, 347, 348, 349, + 350, 351, 352, 353, 354, 355, 356, 725, 257, 1323, + 893, -1, 261, 892, -1, -1, -1, -1, 368, -1, + 370, 0, 372, 272, 374, 375, 376, -1, 277, -1, + -1, -1, 281, -1, -1, 284, -1, -1, -1, -1, + 390, -1, 760, -1, 762, -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, + -1, -1, 321, -1, 323, -1, 794, -1, -1, 429, + -1, -1, -1, -1, 333, -1, -1, 336, -1, 338, + 525, 809, 256, 342, 812, -1, -1, 261, 262, 817, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 362, -1, 833, -1, -1, -1, 837, + 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, 0, -1, 317, -1, -1, -1, 321, -1, -1, + -1, 325, 597, -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, 913, 914, -1, 362, 363, + -1, -1, -1, 367, 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, -1, 416, 0, 418, -1, 420, -1, -1, 423, + -1, -1, -1, -1, 982, 429, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 256, 257, -1, + -1, -1, -1, -1, -1, 264, 265, 266, 267, 268, + -1, 270, 271, 1011, 273, 274, 275, 276, 277, 278, + 279, 280, -1, -1, -1, -1, 285, -1, 287, 288, + 289, 290, 291, 292, -1, -1, 295, -1, -1, -1, + 299, 300, -1, 302, 303, 304, 1044, -1, -1, -1, + -1, -1, -1, 768, -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, - -1, -1, -1, -1, -1, -1, -1, -1, 284, -1, + 359, 360, 361, 362, 363, -1, -1, -1, 367, 368, + -1, 0, 371, -1, -1, -1, -1, 376, 377, 378, + 379, 380, -1, -1, -1, 384, -1, 386, 257, -1, + -1, -1, 261, 392, 393, -1, -1, -1, -1, -1, + -1, -1, -1, 272, -1, -1, -1, -1, 277, -1, + -1, -1, 281, -1, -1, 284, -1, -1, 417, 418, + 419, 420, -1, 422, -1, -1, -1, 296, 297, -1, + 429, 1169, 301, 302, -1, 1173, -1, -1, 307, 1177, + 309, 310, 311, 312, -1, -1, -1, -1, 317, -1, + -1, -1, 321, -1, 323, 1193, -1, -1, -1, -1, + -1, -1, -1, 1201, 333, -1, -1, 336, 1206, 338, + -1, -1, -1, 342, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 940, -1, -1, -1, -1, + 257, -1, -1, 362, 261, -1, -1, 0, 367, 368, + 369, -1, 1240, -1, -1, 272, -1, -1, -1, -1, + 277, -1, -1, 1251, 281, -1, -1, 284, -1, 1257, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 296, + 297, -1, -1, 1271, 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, -1, 336, + -1, 338, -1, -1, -1, 342, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 1327, + 1328, -1, -1, -1, -1, 362, -1, -1, -1, 1337, + -1, 368, 369, -1, -1, -1, -1, 1345, 1346, -1, + 1348, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 1363, -1, 256, 257, -1, + -1, 1369, -1, -1, 1372, 264, 265, 266, 267, 268, + -1, 270, 271, 0, 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, - -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, -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, - 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, -1, - -1, 281, -1, -1, 284, 418, 333, -1, 335, 336, - -1, 338, -1, -1, -1, 342, 296, 297, -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, 0, -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, 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, -1, + -1, 0, -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, 357, -1, -1, 256, -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, 0, -1, 389, 390, -1, -1, + -1, 394, 395, 396, 397, 398, 399, 400, 401, 256, + -1, -1, -1, -1, -1, 262, -1, -1, -1, -1, + 413, -1, -1, 416, -1, 418, -1, 420, -1, -1, + 423, -1, -1, -1, -1, -1, 429, 0, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 339, 298, -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, + 0, 370, -1, 372, -1, 374, 375, 376, -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, -1, -1, + 367, 368, -1, 370, 371, 372, -1, 374, 375, 376, + -1, 378, 379, -1, -1, 382, 383, 384, 385, -1, + 429, -1, 389, 390, -1, -1, -1, 394, 395, 396, + 397, 398, 399, 400, 401, -1, -1, -1, -1, -1, + 0, -1, -1, -1, -1, -1, 413, 256, 257, 416, + -1, 418, 261, -1, -1, -1, 265, -1, 267, -1, + -1, 270, 429, 272, 273, -1, 275, -1, 277, -1, + 279, -1, 281, 282, 283, 284, -1, -1, 287, 288, + -1, -1, -1, 0, 293, -1, 295, 296, 297, -1, + -1, 300, 301, 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, 0, 336, 337, 338, + -1, 257, -1, 342, -1, 261, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 272, -1, -1, -1, + -1, 277, -1, 362, -1, 281, -1, -1, 284, 368, + 369, -1, -1, -1, -1, -1, -1, -1, 377, 0, + 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, 418, + 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, 362, -1, 317, -1, -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, 0, -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, -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, -1, 338, -1, -1, -1, 342, -1, + 310, 311, 312, -1, -1, -1, -1, 317, -1, 362, + -1, 321, -1, 323, -1, -1, 369, -1, -1, -1, + -1, -1, -1, 333, -1, -1, 336, 257, 338, -1, + -1, 261, 342, -1, -1, -1, -1, -1, -1, -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, + -1, 281, 362, -1, 284, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 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, @@ -12799,179 +12911,195 @@ void case_1026() 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, 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, -1, - -1, -1, -1, -1, -1, 296, 297, -1, 362, -1, - 301, 302, -1, 257, -1, -1, 307, 261, 309, 310, - 311, 312, -1, -1, -1, -1, 317, -1, 272, -1, - 321, -1, 323, 277, -1, -1, -1, 281, -1, -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, -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, 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, 362, -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, 414, + 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, 357, -1, -1, -1, -1, -1, 363, -1, -1, + -1, -1, 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, 418, -1, 420, 262, -1, 423, -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, -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, -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, + 367, 368, 369, 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, -1, -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, 256, + -1, -1, -1, 330, 331, 262, -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, 363, -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, -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, + -1, 418, 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, 367, 368, - 369, 370, 371, 372, 373, 374, 375, 376, 256, 378, - 379, 327, 381, 382, 383, 384, 385, 386, 387, 388, + -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, -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, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 256, -1, -1, - 368, -1, 370, 262, 372, -1, 374, 375, 376, 339, + 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, 367, 368, 298, + -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, + 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, 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, + 410, 411, 412, 413, -1, 256, 256, -1, -1, 418, + 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, 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, 363, -1, -1, -1, 368, -1, 370, 371, + 411, 412, 413, -1, 256, -1, -1, -1, 418, 420, + 262, 256, 423, -1, 266, -1, -1, -1, 429, -1, + 265, -1, 267, -1, -1, 270, -1, -1, -1, -1, + 275, -1, -1, -1, 279, -1, -1, -1, -1, -1, + -1, -1, -1, 288, -1, -1, 298, -1, -1, -1, + 295, -1, -1, -1, -1, 300, -1, -1, -1, 304, + -1, -1, 314, -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, -1, -1, -1, -1, 256, -1, -1, + -1, -1, -1, 262, -1, 357, -1, -1, -1, -1, + -1, 363, -1, -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, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 298, 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, 418, 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, + 412, 413, -1, -1, -1, -1, 418, -1, 420, -1, + -1, 423, -1, 418, -1, -1, -1, 429, -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, 381, 382, 383, 384, 385, 386, 387, 388, + 389, 390, 261, -1, -1, 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, + -1, -1, -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, -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, -1, -1, 418, 420, 262, 256, - 423, -1, 266, -1, -1, -1, 429, -1, 265, -1, - 267, -1, -1, 270, -1, -1, -1, -1, 275, -1, - -1, -1, 279, -1, -1, -1, -1, -1, -1, -1, - -1, 288, -1, -1, 298, -1, -1, -1, 295, -1, - -1, -1, -1, 300, -1, -1, -1, 304, -1, -1, - 314, -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, -1, -1, -1, -1, 256, -1, -1, -1, -1, - -1, 262, -1, 357, -1, -1, -1, -1, -1, 363, - -1, -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, 298, 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, 418, -1, -1, -1, 429, -1, -1, 339, -1, - -1, -1, 256, 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, - 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, - -1, -1, -1, 394, 395, 396, 397, 398, 399, 400, - 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, - 411, 256, 413, -1, -1, -1, -1, 262, -1, -1, - -1, -1, -1, -1, -1, 339, -1, -1, 429, -1, - 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, - 354, 355, 356, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 298, 368, -1, 370, -1, 372, -1, - 374, 375, 376, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 390, -1, -1, 256, - -1, -1, -1, -1, -1, 262, -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, - -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, - 355, 356, -1, -1, -1, 429, -1, -1, -1, -1, - -1, 298, -1, 368, -1, 370, -1, 372, -1, 374, + 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, 386, 387, 388, 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, + 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, 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, -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, 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, 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, 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, @@ -12979,7 +13107,7 @@ void case_1026() 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, 378, 379, -1, -1, 382, 383, 384, + 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, @@ -13001,7 +13129,7 @@ void case_1026() 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, + -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, @@ -13034,8 +13162,8 @@ void case_1026() 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, + -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, @@ -13056,7 +13184,7 @@ void case_1026() -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, @@ -13068,7 +13196,7 @@ void case_1026() 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, 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, @@ -13082,7 +13210,7 @@ void case_1026() 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, @@ -13095,31 +13223,93 @@ void case_1026() 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, -1, -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, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 262, 390, - -1, -1, 266, -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, 298, -1, -1, -1, 429, -1, - -1, -1, -1, -1, -1, 368, -1, 370, -1, 372, - 314, 374, 375, 376, -1, -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, + 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, - 413, -1, -1, 357, -1, -1, -1, -1, -1, 363, - -1, -1, -1, -1, 368, 369, 429, 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, + -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, @@ -13134,87 +13324,146 @@ void case_1026() 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, -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, 306, + -1, -1, -1, -1, -1, 295, 313, -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, 376, + -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, -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, + 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, + -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, + -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, 306, -1, -1, -1, -1, -1, 295, + 313, -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, 372, -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, 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, -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, 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, 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, 376, 377, 378, 379, + 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, 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, 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, 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, -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, - 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, + 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, - 376, 377, 378, 379, 380, -1, -1, -1, 384, -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, -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, 306, -1, -1, - -1, -1, -1, 295, 313, -1, -1, 316, 300, 318, + -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, 374, -1, -1, 377, 378, + -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, + -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, @@ -13223,17 +13472,17 @@ void case_1026() 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, + 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, 256, -1, + 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, 306, -1, -1, -1, -1, -1, 295, 313, -1, + 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, @@ -13247,65 +13496,6 @@ void case_1026() -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, 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, 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, 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, - -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, 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, -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, -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, 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, @@ -13313,7 +13503,7 @@ void case_1026() -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, 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, @@ -13352,106 +13542,17 @@ void case_1026() -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, 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, 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, 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, -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, -1, -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, 256, -1, - -1, -1, -1, 392, 393, -1, 264, 265, -1, 267, - -1, -1, 270, 271, -1, -1, -1, 275, 276, 277, - -1, 279, -1, -1, -1, -1, -1, 285, 417, 418, - 288, 420, -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, -1, -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, 256, - -1, -1, -1, -1, 392, 393, -1, 264, 265, -1, - 267, -1, -1, 270, 271, -1, -1, -1, 275, 276, - 277, -1, 279, -1, -1, -1, -1, -1, 285, 417, - 418, 288, 420, -1, -1, -1, -1, -1, 295, -1, + 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, 322, -1, -1, 325, -1, 327, -1, 329, 330, 331, 332, -1, 334, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 343, -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, + 377, 378, 379, 380, 381, -1, -1, 384, -1, 386, 256, -1, -1, -1, -1, 392, 393, -1, 264, 265, -1, 267, -1, -1, 270, 271, -1, -1, -1, 275, 276, 277, -1, 279, -1, -1, -1, -1, -1, 285, @@ -13460,7 +13561,7 @@ void case_1026() -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, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 343, -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, @@ -13769,406 +13870,469 @@ void case_1026() -1, 384, -1, 386, 256, -1, -1, -1, -1, 392, 393, -1, 264, 265, -1, 267, -1, -1, 270, 271, -1, -1, -1, 275, 276, 277, -1, 279, -1, -1, - -1, -1, -1, 285, 417, 418, 288, 420, -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, -1, - -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, 256, -1, -1, -1, -1, - 392, 393, 262, 264, 265, -1, 267, -1, -1, 270, - 271, -1, -1, -1, 275, 276, 277, -1, 279, -1, - -1, -1, -1, -1, 285, 417, 418, 288, 420, -1, - -1, -1, -1, -1, 295, -1, -1, -1, 298, 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, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 359, 360, - 361, 362, -1, -1, -1, -1, -1, -1, -1, -1, - 371, 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, -1, 417, 418, -1, -1, - 420, -1, 261, 423, 263, -1, 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, 294, 295, 296, 297, -1, - -1, 300, -1, 302, -1, 304, -1, 306, 307, -1, - 309, 310, 311, 312, -1, -1, 315, 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, 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, -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, -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, 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, -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, 418, 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, 261, - 336, 337, 338, 297, -1, -1, 342, -1, 302, -1, - -1, 305, -1, 307, -1, 309, 310, 311, 312, -1, - -1, -1, 284, 317, -1, -1, 362, 321, -1, -1, - -1, 325, 368, -1, -1, 297, -1, 261, -1, 333, - 302, -1, 336, -1, 338, 307, -1, 309, 310, 311, - 312, -1, -1, 315, -1, 317, -1, -1, -1, 321, - 284, -1, -1, 357, -1, -1, -1, 261, 362, -1, - -1, 333, -1, 297, 336, 369, 338, 371, 302, 373, - -1, 305, 418, 307, -1, 309, 310, 311, 312, -1, - 284, -1, 386, 317, -1, -1, -1, 321, -1, 261, - 362, 325, -1, 297, -1, -1, 368, -1, 302, 333, - -1, 305, 336, 307, 338, 309, 310, 311, 312, -1, - -1, -1, 284, 317, 418, -1, -1, 321, -1, -1, - -1, 325, -1, -1, -1, 297, -1, -1, 362, 333, - 302, -1, 336, -1, 338, 307, -1, 309, 310, 311, - 312, -1, -1, -1, -1, 317, -1, -1, -1, 321, - -1, -1, -1, 325, -1, -1, -1, -1, 362, -1, - -1, 333, -1, -1, 336, -1, 338, 264, 265, -1, - 267, -1, -1, 270, 271, -1, -1, -1, 275, 276, - 277, -1, 279, -1, 418, -1, -1, -1, 285, -1, - 362, 288, -1, -1, -1, -1, -1, -1, 295, -1, - -1, -1, -1, 300, -1, 302, 303, 304, -1, 306, - -1, -1, -1, -1, 418, -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, 418, 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, 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, -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, 285, 417, 418, 288, 420, -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, -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, + -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, 256, -1, -1, -1, -1, + 392, 393, -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, 285, 417, 418, 288, 420, -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, -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, 384, -1, 386, 256, -1, -1, -1, + -1, 392, 393, -1, 264, 265, -1, 267, -1, -1, + 270, 271, -1, -1, -1, 275, 276, 277, -1, 279, + -1, -1, -1, -1, -1, 285, 417, 418, 288, 420, + -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, -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, -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, 256, -1, -1, + -1, -1, 392, 393, -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, + 279, -1, -1, -1, -1, -1, 285, 417, 418, 288, + 420, -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, -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, + 379, 380, -1, -1, -1, 384, -1, 386, 256, -1, + -1, -1, -1, 392, 393, -1, 264, 265, -1, 267, + -1, -1, 270, 271, -1, -1, -1, 275, 276, 277, + -1, 279, -1, -1, -1, -1, -1, 285, 417, 418, + 288, 420, -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, -1, -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, 256, + -1, -1, -1, -1, 392, 393, 262, 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, + 277, -1, 279, -1, -1, -1, -1, -1, 285, 417, + 418, 288, 420, -1, -1, -1, -1, -1, 295, -1, + -1, -1, 298, 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, -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, 261, -1, 263, 300, -1, 302, 303, 304, + -1, -1, -1, -1, 371, 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, -1, + 417, 418, -1, -1, 420, -1, 261, 423, 263, -1, + 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, 294, + 295, 296, 297, -1, -1, 300, -1, 302, -1, 304, + -1, 306, 307, -1, 309, 310, 311, 312, -1, -1, + 315, 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, 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, -1, -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, 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, -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, 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, -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, 418, 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, 261, 336, 337, 338, 297, -1, -1, + 342, -1, 302, -1, -1, 305, -1, 307, -1, 309, + 310, 311, 312, -1, -1, -1, 284, 317, -1, -1, + 362, 321, -1, -1, -1, 325, 368, -1, -1, 297, + -1, 261, -1, 333, 302, -1, 336, -1, 338, 307, + -1, 309, 310, 311, 312, -1, -1, -1, -1, 317, + -1, -1, -1, 321, 284, -1, -1, 357, -1, -1, + -1, 261, 362, -1, -1, 333, -1, 297, 336, 369, + 338, 371, 302, 373, -1, 305, 418, 307, -1, 309, + 310, 311, 312, -1, 284, -1, 386, 317, -1, -1, + -1, 321, -1, -1, 362, 325, -1, 297, -1, -1, + -1, -1, 302, 333, -1, -1, 336, 307, 338, 309, + 310, 311, 312, -1, -1, -1, -1, 317, 418, -1, + -1, 321, -1, -1, -1, 325, -1, -1, 264, 265, + -1, 267, 362, 333, 270, 271, 336, -1, 338, 275, + 276, 277, -1, 279, -1, -1, -1, -1, -1, 285, + 418, -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, -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, -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, 261, -1, -1, 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, 315, -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, 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, -1, -1, -1, -1, -1, -1, 315, + -1, -1, -1, 377, -1, -1, -1, -1, -1, -1, 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, -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, 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, -1, -1, 418, -1, 300, -1, -1, -1, 304, - -1, 306, -1, -1, -1, 265, -1, 267, 313, -1, - 270, 316, -1, 318, -1, 275, -1, 322, -1, 279, - 325, -1, -1, 283, -1, 330, 331, -1, 288, 334, - -1, -1, 337, 293, -1, 295, -1, 418, -1, -1, - 300, -1, -1, -1, 304, 305, -1, -1, -1, 265, - -1, 267, -1, -1, 270, -1, 316, -1, 318, 275, - -1, -1, 322, 279, -1, -1, -1, -1, -1, 418, - 330, 331, 288, 265, 334, 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, 418, 330, 331, -1, -1, 334, -1, - 261, 337, -1, -1, 316, -1, 318, -1, -1, -1, - 322, 272, -1, -1, -1, -1, 277, -1, 330, 331, - 281, -1, 334, 284, -1, 337, -1, 363, -1, -1, - -1, -1, -1, -1, -1, 296, 297, -1, 418, -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, 263, 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, 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, + 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, 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, -1, 418, -1, + 300, -1, -1, -1, 304, -1, 306, -1, -1, -1, + -1, -1, -1, 313, -1, -1, 316, -1, 318, -1, + -1, -1, 322, -1, -1, 325, 370, -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, -1, -1, -1, -1, -1, 288, + -1, -1, -1, 363, -1, -1, 295, -1, 265, -1, + 267, 300, -1, 270, 418, 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, -1, -1, -1, -1, 313, -1, 418, 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, -1, -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, 261, -1, 330, 331, -1, -1, 334, 316, + -1, 318, -1, 272, -1, 322, -1, -1, 277, -1, + -1, 418, 281, 330, 331, 284, -1, 334, -1, -1, + 337, -1, -1, -1, -1, -1, -1, 296, 297, -1, + -1, -1, 301, 302, -1, -1, -1, -1, 307, -1, + 309, 310, 311, 312, -1, -1, 363, -1, 317, -1, + -1, -1, 321, -1, 323, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 333, -1, 335, 336, 261, 338, + -1, -1, -1, 342, -1, -1, -1, -1, -1, 272, + -1, -1, 418, -1, 277, -1, -1, -1, 281, -1, + -1, 284, -1, 362, -1, -1, -1, -1, -1, 368, + 369, 418, -1, 296, 297, -1, -1, -1, 301, 302, + 261, -1, 263, -1, 307, -1, 309, 310, 311, 312, + -1, -1, -1, -1, 317, -1, -1, -1, 321, -1, + 323, -1, -1, 284, -1, -1, -1, -1, -1, -1, + 333, -1, -1, 336, -1, 338, 297, -1, -1, 342, + -1, 302, -1, -1, -1, -1, 307, -1, 309, 310, + 311, 312, -1, -1, -1, -1, 317, -1, -1, 362, + 321, -1, -1, 261, -1, 368, 369, -1, -1, -1, + -1, -1, 333, -1, 272, 336, -1, 338, -1, 277, + -1, -1, -1, 281, -1, -1, 284, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 296, 297, + -1, 362, -1, 301, 302, -1, 261, 368, 369, 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, 362, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 362, }; -#line 6999 "cs-parser.jay" +#line 7019 "cs-parser.jay" // // A class used to hold info about an operator declarator @@ -14232,6 +14396,16 @@ void Error_MissingInitializer (Location loc) report.Error (210, loc, "You must provide an initializer in a fixed or using statement declaration"); } +object Error_AwaitAsIdentifier (object token) +{ + if (async_block) { + report.Error (4003, GetLocation (token), "`await' cannot be used as an identifier within an async method or lambda expression"); + return new Tokenizer.LocatedToken ("await", GetLocation (token)); + } + + return token; +} + void push_current_container (TypeDefinition tc, object partial_token) { if (module.Evaluator != null){ diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-parser.jay b/ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-parser.jay index 594bb9090a..783cc9a54e 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-parser.jay +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-parser.jay @@ -951,10 +951,10 @@ struct_declaration opt_partial STRUCT { - lexer.ConstraintsParsing = true; } type_declaration_name { + lexer.ConstraintsParsing = true; push_current_container (new Struct (current_container, (MemberName) $6, (Modifiers) $2, (Attributes) $1), $3); lbag.AddMember (current_container, GetModifierLocations (), GetLocation ($4)); } @@ -1539,7 +1539,7 @@ fixed_parameter : opt_attributes opt_parameter_modifier parameter_type - IDENTIFIER + identifier_inside_body { var lt = (Tokenizer.LocatedToken) $4; $$ = new Parameter ((FullNamedExpression) $3, lt.Value, (Parameter.Modifier) $2, (Attributes) $1, lt.Location); @@ -1548,7 +1548,7 @@ fixed_parameter | opt_attributes opt_parameter_modifier parameter_type - IDENTIFIER OPEN_BRACKET CLOSE_BRACKET + identifier_inside_body OPEN_BRACKET CLOSE_BRACKET { var lt = (Tokenizer.LocatedToken) $4; report.Error (1552, lt.Location, "Array type specifier, [], must appear before parameter name"); @@ -1574,7 +1574,7 @@ fixed_parameter | opt_attributes opt_parameter_modifier parameter_type - IDENTIFIER + identifier_inside_body ASSIGN { ++lexer.parsing_block; @@ -1952,10 +1952,10 @@ interface_declaration opt_partial INTERFACE { - lexer.ConstraintsParsing = true; } type_declaration_name { + lexer.ConstraintsParsing = true; push_current_container (new Interface (current_container, (MemberName) $6, (Modifiers) $2, (Attributes) $1), $3); lbag.AddMember (current_container, GetModifierLocations (), GetLocation ($4)); } @@ -3219,28 +3219,28 @@ parenthesized_expression ; member_access - : primary_expression DOT IDENTIFIER opt_type_argument_list + : primary_expression DOT identifier_inside_body opt_type_argument_list { var lt = (Tokenizer.LocatedToken) $3; $$ = new MemberAccess ((Expression) $1, lt.Value, (TypeArguments) $4, lt.Location) { DotLocation = GetLocation ($2) }; } - | builtin_types DOT IDENTIFIER opt_type_argument_list + | builtin_types DOT identifier_inside_body opt_type_argument_list { var lt = (Tokenizer.LocatedToken) $3; $$ = new MemberAccess ((Expression) $1, lt.Value, (TypeArguments) $4, lt.Location) { DotLocation = GetLocation ($2) }; } - | BASE DOT IDENTIFIER opt_type_argument_list + | BASE DOT identifier_inside_body opt_type_argument_list { var lt = (Tokenizer.LocatedToken) $3; $$ = new MemberAccess (new BaseThis (GetLocation ($1)), lt.Value, (TypeArguments) $4, lt.Location) { DotLocation = GetLocation ($2) }; } - | qualified_alias_member IDENTIFIER opt_type_argument_list + | qualified_alias_member identifier_inside_body opt_type_argument_list { var lt1 = (Tokenizer.LocatedToken) $1; var lt2 = (Tokenizer.LocatedToken) $2; @@ -3284,7 +3284,7 @@ invocation_expression $$ = new Invocation ((Expression) $1, null); lbag.AddLocation ($$, GetLocation ($2)); - } + } ; opt_object_or_collection_initializer @@ -3344,6 +3344,12 @@ member_initializer $$ = new ElementInitializer (lt.Value, (Expression)$3, lt.Location); lbag.AddLocation ($$, GetLocation ($2)); } + | AWAIT ASSIGN initializer_value + { + var lt = (Tokenizer.LocatedToken) Error_AwaitAsIdentifier ($1); + $$ = new ElementInitializer (lt.Value, (Expression)$3, lt.Location); + lbag.AddLocation ($$, GetLocation ($2)); + } | GENERATE_COMPLETION { $$ = new CompletionElementInitializer (null, GetLocation ($1)); @@ -3680,13 +3686,13 @@ anonymous_type_parameters ; anonymous_type_parameter - : IDENTIFIER ASSIGN variable_initializer + : identifier_inside_body ASSIGN variable_initializer { var lt = (Tokenizer.LocatedToken)$1; $$ = new AnonymousTypeParameter ((Expression)$3, lt.Value, lt.Location); lbag.AddLocation ($$, GetLocation ($2)); } - | IDENTIFIER + | identifier_inside_body { var lt = (Tokenizer.LocatedToken)$1; $$ = new AnonymousTypeParameter (new SimpleName (lt.Value, lt.Location), @@ -4537,6 +4543,11 @@ lambda_parameter var lt = (Tokenizer.LocatedToken) $1; $$ = new ImplicitLambdaParameter (lt.Value, lt.Location); } + | AWAIT + { + var lt = (Tokenizer.LocatedToken) Error_AwaitAsIdentifier ($1); + $$ = new ImplicitLambdaParameter (lt.Value, lt.Location); + } ; opt_lambda_parameter_list @@ -4593,6 +4604,17 @@ lambda_expression $$ = end_anonymous ((ParametersBlock) $4); lbag.AddLocation ($$, GetLocation ($2)); } + | AWAIT ARROW + { + var lt = (Tokenizer.LocatedToken) Error_AwaitAsIdentifier ($1); + Parameter p = new ImplicitLambdaParameter (lt.Value, lt.Location); + start_anonymous (true, new ParametersCompiled (p), false, lt.Location); + } + lambda_expression_body + { + $$ = end_anonymous ((ParametersBlock) $4); + lbag.AddLocation ($$, GetLocation ($2)); + } | ASYNC identifier_inside_body ARROW { var lt = (Tokenizer.LocatedToken) $2; @@ -4687,10 +4709,11 @@ class_declaration opt_partial CLASS { - lexer.ConstraintsParsing = true; } type_declaration_name { + lexer.ConstraintsParsing = true; + Class c = new Class (current_container, (MemberName) $6, (Modifiers) $2, (Attributes) $1); if (((c.ModFlags & Modifiers.STATIC) != 0) && lang_version == LanguageVersion.ISO_1) { FeatureIsNotAvailable (c.Location, "static classes"); @@ -5303,10 +5326,7 @@ identifier_inside_body : IDENTIFIER | AWAIT { - if (async_block) { - report.Error (4003, GetLocation ($1), "`await' cannot be used as an identifier within an async method or lambda expression"); - $$ = new Tokenizer.LocatedToken ("await", GetLocation ($1)); - } + $$ = Error_AwaitAsIdentifier ($1); } ; @@ -7059,6 +7079,16 @@ void Error_MissingInitializer (Location loc) report.Error (210, loc, "You must provide an initializer in a fixed or using statement declaration"); } +object Error_AwaitAsIdentifier (object token) +{ + if (async_block) { + report.Error (4003, GetLocation (token), "`await' cannot be used as an identifier within an async method or lambda expression"); + return new Tokenizer.LocatedToken ("await", GetLocation (token)); + } + + return token; +} + void push_current_container (TypeDefinition tc, object partial_token) { if (module.Evaluator != null){ diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-tokenizer.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-tokenizer.cs index 8c0d73e91a..d432aa7107 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-tokenizer.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-tokenizer.cs @@ -197,7 +197,7 @@ namespace Mono.CSharp readonly int tab_size; bool handle_get_set = false; bool handle_remove_add = false; - bool handle_where = false; + bool handle_where; bool handle_typeof = false; bool lambda_arguments_parsing; List escaped_identifiers; @@ -710,7 +710,7 @@ namespace Mono.CSharp } break; case Token.WHERE: - if (!handle_where && !query_parsing) + if (!(handle_where && current_token != Token.COLON) && !query_parsing) res = -1; break; case Token.FROM: @@ -719,7 +719,7 @@ namespace Mono.CSharp // followed by any token except ; , = // if (!query_parsing) { - if (lambda_arguments_parsing) { + if (lambda_arguments_parsing || parsing_block == 0) { res = -1; break; } @@ -742,7 +742,7 @@ namespace Mono.CSharp case Token.UINT: case Token.ULONG: next_token = xtoken (); - if (next_token == Token.SEMICOLON || next_token == Token.COMMA || next_token == Token.EQUALS) + if (next_token == Token.SEMICOLON || next_token == Token.COMMA || next_token == Token.EQUALS || next_token == Token.ASSIGN) goto default; res = Token.FROM_FIRST; @@ -782,6 +782,7 @@ namespace Mono.CSharp case Token.NAMESPACE: // TODO: some explanation needed check_incorrect_doc_comment (); + parsing_modifiers = false; break; case Token.PARTIAL: @@ -815,8 +816,17 @@ namespace Mono.CSharp Report.Error (267, Location, "The `partial' modifier can be used only immediately before `class', `struct', `interface', or `void' keyword"); return token (); - } + } + // HACK: A token is not a keyword so we need to restore identifiers buffer + // which has been overwritten before we grabbed the identifier + id_builder[0] = 'p'; + id_builder[1] = 'a'; + id_builder[2] = 'r'; + id_builder[3] = 't'; + id_builder[4] = 'i'; + id_builder[5] = 'a'; + id_builder[6] = 'l'; res = -1; break; @@ -839,8 +849,10 @@ namespace Mono.CSharp case Token.IDENTIFIER: PushPosition (); xtoken (); - if (xtoken () != Token.ARROW) + if (xtoken () != Token.ARROW) { + PopPosition (); goto default; + } PopPosition (); break; @@ -964,8 +976,12 @@ namespace Mono.CSharp // // Expression inside parens is single type, (int[]) // - if (is_type) + if (is_type) { + if (current_token == Token.SEMICOLON) + return Token.OPEN_PARENS; + return Token.OPEN_PARENS_CAST; + } // // Expression is possible cast, look at next token, (T)null @@ -1022,6 +1038,7 @@ namespace Mono.CSharp continue; case Token.IDENTIFIER: + case Token.AWAIT: switch (ptoken) { case Token.DOT: if (bracket_level == 0) { @@ -1274,6 +1291,7 @@ namespace Mono.CSharp case Token.OP_GENERICS_GT: case Token.INTERR: case Token.OP_COALESCING: + case Token.COLON: next_token = Token.INTERR_NULLABLE; break; @@ -1412,7 +1430,7 @@ namespace Mono.CSharp // if we have not seen anything in between // report this error // - Report.Warning (78, 4, Location, "The 'l' suffix is easily confused with the digit '1' (use 'L' for clarity)"); + Report.Warning (78, 4, Location, "The `l' suffix is easily confused with the digit `1' (use `L' for clarity)"); } goto case 'L'; diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/doc.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/doc.cs index 6cc53d5053..46fdb3c9e1 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/doc.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/doc.cs @@ -175,28 +175,31 @@ namespace Mono.CSharp bool keep_include_node = false; string file = el.GetAttribute ("file"); string path = el.GetAttribute ("path"); + if (file == "") { Report.Warning (1590, 1, mc.Location, "Invalid XML `include' element. Missing `file' attribute"); el.ParentNode.InsertBefore (el.OwnerDocument.CreateComment (" Include tag is invalid "), el); keep_include_node = true; - } - else if (path.Length == 0) { + } else if (path.Length == 0) { Report.Warning (1590, 1, mc.Location, "Invalid XML `include' element. Missing `path' attribute"); el.ParentNode.InsertBefore (el.OwnerDocument.CreateComment (" Include tag is invalid "), el); keep_include_node = true; - } - else { + } else { XmlDocument doc; - if (!StoredDocuments.TryGetValue (file, out doc)) { + Exception exception = null; + var full_path = Path.Combine (Path.GetDirectoryName (mc.Location.NameFullPath), file); + + if (!StoredDocuments.TryGetValue (full_path, out doc)) { try { doc = new XmlDocument (); - doc.Load (file); - StoredDocuments.Add (file, doc); - } catch (Exception) { + doc.Load (full_path); + StoredDocuments.Add (full_path, doc); + } catch (Exception e) { + exception = e; el.ParentNode.InsertBefore (el.OwnerDocument.CreateComment (String.Format (" Badly formed XML in at comment file `{0}': cannot be included ", file)), el); - Report.Warning (1592, 1, mc.Location, "Badly formed XML in included comments file -- `{0}'", file); } } + if (doc != null) { try { XmlNodeList nl = doc.SelectNodes (path); @@ -208,11 +211,17 @@ namespace Mono.CSharp foreach (XmlNode n in nl) el.ParentNode.InsertBefore (el.OwnerDocument.ImportNode (n, true), el); } catch (Exception ex) { + exception = ex; el.ParentNode.InsertBefore (el.OwnerDocument.CreateComment (" Failed to insert some or all of included XML "), el); - Report.Warning (1589, 1, mc.Location, "Unable to include XML fragment `{0}' of file `{1}' ({2})", path, file, ex.Message); } } + + if (exception != null) { + Report.Warning (1589, 1, mc.Location, "Unable to include XML fragment `{0}' of file `{1}'. {2}", + path, file, exception.Message); + } } + return keep_include_node; } diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/ecore.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/ecore.cs index f809b08c6b..eac8ca5c00 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/ecore.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/ecore.cs @@ -1067,7 +1067,10 @@ namespace Mono.CSharp { if (es == null) Error_InvalidExpressionStatement (ec); - if (!(e is Assign) && (e.Type.IsGenericTask || e.Type == ec.Module.PredefinedTypes.Task.TypeSpec)) { + // + // This is quite expensive warning, try to limit the damage + // + if (MemberAccess.IsValidDotExpression (e.Type) && !(e is Assign || e is Await)) { WarningAsyncWithoutWait (ec, e); } @@ -1077,6 +1080,30 @@ namespace Mono.CSharp { static void WarningAsyncWithoutWait (BlockContext bc, Expression e) { if (bc.CurrentAnonymousMethod is AsyncInitializer) { + var awaiter = new AwaitStatement.AwaitableMemberAccess (e) { + ProbingMode = true + }; + + // + // Need to do full resolve because GetAwaiter can be extension method + // available only in this context + // + var mg = awaiter.Resolve (bc) as MethodGroupExpr; + if (mg == null) + return; + + var arguments = new Arguments (0); + mg = mg.OverloadResolve (bc, ref arguments, null, OverloadResolver.Restrictions.ProbingOnly); + if (mg == null) + return; + + // + // Use same check rules as for real await + // + var awaiter_definition = bc.Module.GetAwaiter (mg.BestCandidateReturnType); + if (!awaiter_definition.IsValidPattern || !awaiter_definition.INotifyCompletion) + return; + bc.Report.Warning (4014, 1, e.Location, "The statement is not awaited and execution of current method continues before the call is completed. Consider using `await' operator"); return; @@ -3523,7 +3550,7 @@ namespace Mono.CSharp { best_candidate_return = best_candidate.ReturnType; } - if (best_candidate.IsGeneric && TypeParameterSpec.HasAnyTypeParameterConstrained (best_candidate.GenericDefinition)) { + if (best_candidate.IsGeneric && (restr & OverloadResolver.Restrictions.ProbingOnly) == 0 && TypeParameterSpec.HasAnyTypeParameterConstrained (best_candidate.GenericDefinition)) { ConstraintChecker cc = new ConstraintChecker (ec); cc.CheckAll (best_candidate.GetGenericMethodDefinition (), best_candidate.TypeArguments, best_candidate.Constraints, loc); } @@ -4915,7 +4942,7 @@ namespace Mono.CSharp { } } - if (invocable_member != null) { + if (invocable_member != null && !IsProbingOnly) { rc.Report.SymbolRelatedToPreviousError (best_candidate); rc.Report.SymbolRelatedToPreviousError (invocable_member); rc.Report.Warning (467, 2, loc, "Ambiguity between method `{0}' and invocable non-method `{1}'. Using method group", @@ -4937,7 +4964,7 @@ namespace Mono.CSharp { // // Don't run possibly expensive checks in probing mode // - if (!rc.IsInProbingMode) { + if (!IsProbingOnly && !rc.IsInProbingMode) { // // Check ObsoleteAttribute on the best method // @@ -6528,8 +6555,9 @@ namespace Mono.CSharp { // Don't capture temporary variables except when using // state machine redirection and block yields // - if (ec.CurrentAnonymousMethod != null && ec.CurrentAnonymousMethod.IsIterator && - ec.CurrentBlock.Explicit.HasYield && ec.IsVariableCapturingRequired) { + if (ec.CurrentAnonymousMethod != null && ec.CurrentAnonymousMethod is StateMachineInitializer && + (ec.CurrentBlock.Explicit.HasYield || ec.CurrentBlock.Explicit.HasAwait) && + ec.IsVariableCapturingRequired) { AnonymousMethodStorey storey = li.Block.Explicit.CreateAnonymousMethodStorey (ec); storey.CaptureLocalVariable (ec, li); } diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/eval.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/eval.cs index dfea0e57a5..01038c29e5 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/eval.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/eval.cs @@ -223,9 +223,16 @@ namespace Mono.CSharp bool partial_input; CSharpParser parser = ParseString (ParseMode.Silent, input, out partial_input); + + // Terse mode, try to provide the trailing semicolon automatically. if (parser == null && Terse && partial_input){ bool ignore; - parser = ParseString (ParseMode.Silent, input + ";", out ignore); + + // check if the source would compile with a block, if so, we should not + // add the semicolon. + var needs_block = ParseString (ParseMode.Silent, input + "{}", out ignore) != null; + if (!needs_block) + parser = ParseString (ParseMode.Silent, input + ";", out ignore); } if (parser == null){ compiled = null; diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/expression.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/expression.cs index 3e2db345f1..25de645c1f 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/expression.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/expression.cs @@ -4659,6 +4659,8 @@ namespace Mono.CSharp } true_expr = conv; + if (true_expr.Type != type) + true_expr = EmptyCast.Create (true_expr, type); } else if ((conv = Convert.ImplicitConversion (ec, false_expr, true_type, loc)) != null) { false_expr = conv; } else { @@ -4696,6 +4698,18 @@ namespace Mono.CSharp expr.EmitBranchable (ec, false_target, false); true_expr.Emit (ec); + // + // Verifier doesn't support interface merging. When there are two types on + // the stack without common type hint and the common type is an interface. + // Use temporary local to give verifier hint on what type to unify the stack + // + if (type.IsInterface && true_expr is EmptyCast && false_expr is EmptyCast) { + var temp = ec.GetTemporaryLocal (type); + ec.Emit (OpCodes.Stloc, temp); + ec.Emit (OpCodes.Ldloc, temp); + ec.FreeTemporaryLocal (temp, type); + } + ec.Emit (OpCodes.Br, end_target); ec.MarkLabel (false_target); false_expr.Emit (ec); @@ -7258,7 +7272,7 @@ namespace Mono.CSharp } } - public class RefValueExpr : ShimExpression + public class RefValueExpr : ShimExpression, IAssignMethod { FullNamedExpression texpr; @@ -7296,13 +7310,44 @@ namespace Mono.CSharp return this; } + public override Expression DoResolveLValue (ResolveContext rc, Expression right_side) + { + return DoResolve (rc); + } + public override void Emit (EmitContext ec) { expr.Emit (ec); ec.Emit (OpCodes.Refanyval, type); ec.EmitLoadFromPtr (type); } - + + public void Emit (EmitContext ec, bool leave_copy) + { + throw new NotImplementedException (); + } + + public void EmitAssign (EmitContext ec, Expression source, bool leave_copy, bool isCompound) + { + expr.Emit (ec); + ec.Emit (OpCodes.Refanyval, type); + source.Emit (ec); + + LocalTemporary temporary = null; + if (leave_copy) { + ec.Emit (OpCodes.Dup); + temporary = new LocalTemporary (source.Type); + temporary.Store (ec); + } + + ec.EmitStoreFromPtr (type); + + if (temporary != null) { + temporary.Emit (ec); + temporary.Release (ec); + } + } + public override object Accept (StructuralVisitor visitor) { return visitor.Visit (this); diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/generic.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/generic.cs index be9845f113..b9ce5de531 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/generic.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/generic.cs @@ -364,7 +364,7 @@ namespace Mono.CSharp { Constraints constraints; GenericTypeParameterBuilder builder; - TypeParameterSpec spec; + readonly TypeParameterSpec spec; public TypeParameter (int index, MemberName name, Constraints constraints, Attributes attrs, Variance variance) : base (null, name, attrs) @@ -381,7 +381,7 @@ namespace Mono.CSharp { { this.spec = new TypeParameterSpec (null, -1, this, SpecialConstraint.None, variance, null); } - + public TypeParameter (TypeParameterSpec spec, TypeSpec parentSpec, MemberName name, Attributes attrs) : base (null, name, attrs) { @@ -391,7 +391,7 @@ namespace Mono.CSharp { TypeArguments = spec.TypeArguments }; } - + #region Properties public override AttributeTargets AttributeTargets { @@ -1480,6 +1480,7 @@ namespace Mono.CSharp { { readonly TypeParameters mvar; readonly TypeParameters var; + readonly TypeParameterSpec[] src; Dictionary mutated_typespec; public TypeParameterMutator (TypeParameters mvar, TypeParameters var) @@ -1491,6 +1492,15 @@ namespace Mono.CSharp { this.var = var; } + public TypeParameterMutator (TypeParameterSpec[] srcVar, TypeParameters destVar) + { + if (srcVar.Length != destVar.Count) + throw new ArgumentException (); + + this.src = srcVar; + this.var = destVar; + } + #region Properties public TypeParameters MethodTypeParameters { @@ -1530,9 +1540,16 @@ namespace Mono.CSharp { public TypeParameterSpec Mutate (TypeParameterSpec tp) { - for (int i = 0; i < mvar.Count; ++i) { - if (mvar[i].Type == tp) - return var[i].Type; + if (mvar != null) { + for (int i = 0; i < mvar.Count; ++i) { + if (mvar[i].Type == tp) + return var[i].Type; + } + } else { + for (int i = 0; i < src.Length; ++i) { + if (src[i] == tp) + return var[i].Type; + } } return tp; @@ -3233,7 +3250,7 @@ namespace Mono.CSharp { AParametersCollection d_parameters = invoke.Parameters; return AllTypesAreFixed (d_parameters.Types); } - + bool IsFixed (TypeSpec type) { return IsUnfixed (type) == -1; @@ -3440,7 +3457,7 @@ namespace Mono.CSharp { var invoke = Delegate.GetInvokeMethod (t); TypeSpec rtype = invoke.ReturnType; - if (!rtype.IsGenericParameter && !TypeManager.IsGenericType (rtype)) + if (!IsReturnTypeNonDependent (ec, invoke, rtype)) return 0; // LAMESPEC: Standard does not specify that all methodgroup arguments @@ -3453,9 +3470,6 @@ namespace Mono.CSharp { if (inflated == null) return 0; - if (IsUnfixed (inflated) >= 0) - return 0; - param_types[i] = inflated; } diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/module.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/module.cs index 596ea3f6c1..017664e0b3 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/module.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/module.cs @@ -113,6 +113,7 @@ namespace Mono.CSharp readonly Dictionary pointer_types; readonly Dictionary reference_types; readonly Dictionary attrs_cache; + readonly Dictionary awaiters; AssemblyDefinition assembly; readonly CompilerContext context; @@ -144,6 +145,7 @@ namespace Mono.CSharp pointer_types = new Dictionary (); reference_types = new Dictionary (); attrs_cache = new Dictionary (); + awaiters = new Dictionary (); } #region Properties @@ -424,7 +426,7 @@ namespace Mono.CSharp if (OptAttributes != null) OptAttributes.Emit (); - if (Compiler.Settings.Unsafe) { + if (Compiler.Settings.Unsafe && !assembly.IsSatelliteAssembly) { var pa = PredefinedAttributes.UnverifiableCode; if (pa.IsDefined) pa.EmitAttribute (builder); @@ -472,6 +474,43 @@ namespace Mono.CSharp return null; } + // + // Return container with awaiter definition. It never returns null + // but all container member can be null for easier error reporting + // + public AwaiterDefinition GetAwaiter (TypeSpec type) + { + AwaiterDefinition awaiter; + if (awaiters.TryGetValue (type, out awaiter)) + return awaiter; + + awaiter = new AwaiterDefinition (); + + // + // Predefined: bool IsCompleted { get; } + // + awaiter.IsCompleted = MemberCache.FindMember (type, MemberFilter.Property ("IsCompleted", Compiler.BuiltinTypes.Bool), + BindingRestriction.InstanceOnly) as PropertySpec; + + // + // Predefined: GetResult () + // + // The method return type is also result type of await expression + // + awaiter.GetResult = MemberCache.FindMember (type, MemberFilter.Method ("GetResult", 0, + ParametersCompiled.EmptyReadOnlyParameters, null), + BindingRestriction.InstanceOnly) as MethodSpec; + + // + // Predefined: INotifyCompletion.OnCompleted (System.Action) + // + var nc = PredefinedTypes.INotifyCompletion; + awaiter.INotifyCompletion = !nc.Define () || type.ImplementsInterface (nc.TypeSpec, false); + + awaiters.Add (type, awaiter); + return awaiter; + } + public override void GetCompletionStartingWith (string prefix, List results) { var names = Evaluator.GetVarNames (); diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/namespace.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/namespace.cs index 2cc2b54b4d..5c8773de4c 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/namespace.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/namespace.cs @@ -378,8 +378,10 @@ namespace Mono.CSharp { if (mode != LookupMode.Normal) continue; - if (ts.MemberDefinition.IsImported) + if (ts.MemberDefinition.IsImported) { + ctx.Module.Compiler.Report.SymbolRelatedToPreviousError (best); ctx.Module.Compiler.Report.SymbolRelatedToPreviousError (ts); + } ctx.Module.Compiler.Report.Warning (436, 2, loc, "The type `{0}' conflicts with the imported type of same name'. Ignoring the imported type definition", diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/report.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/report.cs index b27b9c8a08..bfb82fb9f3 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/report.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/report.cs @@ -649,7 +649,7 @@ namespace Mono.CSharp { // // This line is useful when debugging recorded messages // - // Console.WriteLine ("RECORDING: {0}", msg.ToString ()); + // Console.WriteLine ("RECORDING: {0}", msg.Text); if (session_messages == null) session_messages = new List (); diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/statement.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/statement.cs index 1c8f2b9149..258dca216e 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/statement.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/statement.cs @@ -853,7 +853,7 @@ namespace Mono.CSharp { if (ec.CurrentIterator != null) { Error_ReturnFromIterator (ec); - } else { + } else if (ec.ReturnType != InternalType.ErrorType) { ec.Report.Error (126, loc, "An object of a type convertible to `{0}' is required for the return statement", ec.ReturnType.GetSignatureForError ()); @@ -2303,10 +2303,9 @@ namespace Mono.CSharp { if (!s.Resolve (ec)) { ok = false; - if (ec.IsInProbingMode) - break; + if (!ec.IsInProbingMode) + statements [ix] = new EmptyStatement (s.loc); - statements [ix] = new EmptyStatement (s.loc); continue; } @@ -2560,12 +2559,14 @@ namespace Mono.CSharp { if (b.Explicit == b.Explicit.ParametersBlock && b.Explicit.ParametersBlock.StateMachine != null) { storey.HoistedThis = b.Explicit.ParametersBlock.StateMachine.HoistedThis; - break; + + if (storey.HoistedThis != null) + break; } } - + // - // We are the first storey on path and this has to be hoisted + // We are the first storey on path and 'this' has to be hoisted // if (storey.HoistedThis == null) { foreach (ExplicitBlock ref_block in Original.ParametersBlock.TopBlock.ThisReferencesFromChildrenBlock) { @@ -2581,8 +2582,9 @@ namespace Mono.CSharp { if (block_on_path == null) continue; - if (storey.HoistedThis == null) + if (storey.HoistedThis == null) { storey.AddCapturedThisField (ec); + } for (ExplicitBlock b = ref_block; b.AnonymousMethodStorey != storey; b = b.Parent.Explicit) { if (b.AnonymousMethodStorey != null) { @@ -2605,7 +2607,7 @@ namespace Mono.CSharp { pb.StateMachine.AddParentStoreyReference (ec, storey); } - + b.HasCapturedVariable = true; } } @@ -4190,11 +4192,17 @@ namespace Mono.CSharp { constant_section = default_section; } else { // - // Store switch expression for comparission purposes + // Store switch expression for comparison purposes // value = new_expr as VariableReference; - if (value == null) + if (value == null) { + // Create temporary variable inside switch scope + var block = ec.CurrentBlock; + ec.CurrentBlock = Block; value = TemporaryVariableReference.Create (SwitchType, ec.CurrentBlock, loc); + value.Resolve (ec); + ec.CurrentBlock = block; + } } bool first = true; @@ -6126,7 +6134,7 @@ namespace Mono.CSharp { if (mg != null) { mg.InstanceExpression = expr; Arguments args = new Arguments (0); - mg = mg.OverloadResolve (rc, ref args, this, OverloadResolver.Restrictions.None); + mg = mg.OverloadResolve (rc, ref args, this, OverloadResolver.Restrictions.ProbingOnly); // For ambiguous GetEnumerator name warning CS0278 was reported, but Option 2 could still apply if (ambiguous_getenumerator_name) diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/typemanager.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/typemanager.cs index 7b35fdf54a..4a674c4c46 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/typemanager.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/typemanager.cs @@ -969,6 +969,19 @@ namespace Mono.CSharp } } + public class AwaiterDefinition + { + public PropertySpec IsCompleted { get; set; } + public MethodSpec GetResult { get; set; } + public bool INotifyCompletion { get; set; } + + public bool IsValidPattern { + get { + return IsCompleted != null && GetResult != null && IsCompleted.HasGet; + } + } + } + partial class TypeManager { /// diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/typespec.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/typespec.cs index aac01c8567..e0d813030c 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/typespec.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/typespec.cs @@ -12,6 +12,7 @@ using System; using System.Collections.Generic; using System.Text; +using System.Linq; #if STATIC using MetaType = IKVM.Reflection.Type; @@ -389,11 +390,16 @@ namespace Mono.CSharp // When resolving base class of X`1 we inflate context type A`1 // All this happens before we even hit IFoo resolve. Without // additional expansion any inside usage of A would miss IFoo - // interface because it comes from early inflated TypeSpec + // interface because it comes from early inflated A`1 definition. // if (inflated_instances != null) { - foreach (var inflated in inflated_instances) { - inflated.Value.AddInterface (iface); + // + // Inflate only existing instances not any new instances added + // during AddInterface + // + var inflated_existing = inflated_instances.Values.ToArray (); + foreach (var inflated in inflated_existing) { + inflated.AddInterface (iface); } }