From eb7d27e4dede3518f8247c101c5148b58c340106 Mon Sep 17 00:00:00 2001 From: Adeel <3840695+am11@users.noreply.github.com> Date: Mon, 23 Feb 2026 22:07:41 +0200 Subject: [PATCH 1/4] Switch ilasm to Antlr4BuildTasks --- eng/Versions.props | 4 ++-- src/tools/ilasm/src/ILAssembler/GrammarVisitor.cs | 1 - src/tools/ilasm/src/ILAssembler/ILAssembler.csproj | 10 ++++++++-- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/eng/Versions.props b/eng/Versions.props index ecfc1f9b1b6f13..c2491d14ae0874 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -141,8 +141,8 @@ 17.11.48 7.0.412701 6.0 - 4.6.6 - 4.6.6 + 12.14.0 + 4.13.1 1.6.0 17.4.0-preview-20220707-01 diff --git a/src/tools/ilasm/src/ILAssembler/GrammarVisitor.cs b/src/tools/ilasm/src/ILAssembler/GrammarVisitor.cs index 617474868ffb8c..ac60a99bf5693f 100644 --- a/src/tools/ilasm/src/ILAssembler/GrammarVisitor.cs +++ b/src/tools/ilasm/src/ILAssembler/GrammarVisitor.cs @@ -5551,7 +5551,6 @@ private static int ComputeMetadataSize(MetadataSizes sizes) GrammarResult ICILVisitor.VisitGenericArgumentsModifier(CILParser.GenericArgumentsModifierContext context) => throw new UnreachableException(NodeShouldNeverBeDirectlyVisited); GrammarResult ICILVisitor.VisitByRefModifier(CILParser.ByRefModifierContext context) => throw new UnreachableException(NodeShouldNeverBeDirectlyVisited); GrammarResult ICILVisitor.VisitArrayModifier(CILParser.ArrayModifierContext context) => throw new UnreachableException(NodeShouldNeverBeDirectlyVisited); - GrammarResult ICILVisitor.VisitTypeModifiers(CILParser.TypeModifiersContext context) => throw new UnreachableException(NodeShouldNeverBeDirectlyVisited); public GrammarResult VisitNativeTypeArrayPointerInfo(CILParser.NativeTypeArrayPointerInfoContext context) => throw new UnreachableException(NodeShouldNeverBeDirectlyVisited); public GrammarResult VisitPointerArrayTypeSize(CILParser.PointerArrayTypeSizeContext context) => throw new UnreachableException(NodeShouldNeverBeDirectlyVisited); public GrammarResult VisitPointerArrayTypeParamIndex(CILParser.PointerArrayTypeParamIndexContext context) => throw new UnreachableException(NodeShouldNeverBeDirectlyVisited); diff --git a/src/tools/ilasm/src/ILAssembler/ILAssembler.csproj b/src/tools/ilasm/src/ILAssembler/ILAssembler.csproj index 9ccf09f00d0be4..c469e9d6a8d8cd 100644 --- a/src/tools/ilasm/src/ILAssembler/ILAssembler.csproj +++ b/src/tools/ilasm/src/ILAssembler/ILAssembler.csproj @@ -11,10 +11,16 @@ - + all runtime; build; native; contentfiles; analyzers; buildtransitive - + + + + + + ILAssembler + From 59c18d7ee0fff0137a4d696ee55fd9533ddafd3c Mon Sep 17 00:00:00 2001 From: Adeel <3840695+am11@users.noreply.github.com> Date: Tue, 24 Feb 2026 04:06:23 +0200 Subject: [PATCH 2/4] Check in generated files to avoid Antlr's Java dep --- src/tools/ilasm/README.md | 25 + .../ilasm/src/ILAssembler/ILAssembler.csproj | 9 - .../ilasm/src/ILAssembler/{ => gen}/CIL.g4 | 0 .../ilasm/src/ILAssembler/gen/CIL.interp | 804 + .../ilasm/src/ILAssembler/gen/CIL.tokens | 579 + .../src/ILAssembler/gen/CILBaseVisitor.cs | 1972 ++ .../ilasm/src/ILAssembler/gen/CILLexer.cs | 1979 ++ .../ilasm/src/ILAssembler/gen/CILLexer.interp | 932 + .../ilasm/src/ILAssembler/gen/CILLexer.tokens | 577 + .../ilasm/src/ILAssembler/gen/CILParser.cs | 17594 ++++++++++++++++ .../ilasm/src/ILAssembler/gen/CILVisitor.cs | 1201 ++ .../ILAssembler/gen/ilasm-generator.csproj | 29 + 12 files changed, 25692 insertions(+), 9 deletions(-) create mode 100644 src/tools/ilasm/README.md rename src/tools/ilasm/src/ILAssembler/{ => gen}/CIL.g4 (100%) create mode 100644 src/tools/ilasm/src/ILAssembler/gen/CIL.interp create mode 100644 src/tools/ilasm/src/ILAssembler/gen/CIL.tokens create mode 100644 src/tools/ilasm/src/ILAssembler/gen/CILBaseVisitor.cs create mode 100644 src/tools/ilasm/src/ILAssembler/gen/CILLexer.cs create mode 100644 src/tools/ilasm/src/ILAssembler/gen/CILLexer.interp create mode 100644 src/tools/ilasm/src/ILAssembler/gen/CILLexer.tokens create mode 100644 src/tools/ilasm/src/ILAssembler/gen/CILParser.cs create mode 100644 src/tools/ilasm/src/ILAssembler/gen/CILVisitor.cs create mode 100644 src/tools/ilasm/src/ILAssembler/gen/ilasm-generator.csproj diff --git a/src/tools/ilasm/README.md b/src/tools/ilasm/README.md new file mode 100644 index 00000000000000..203eaecda412cf --- /dev/null +++ b/src/tools/ilasm/README.md @@ -0,0 +1,25 @@ +# ILAssembler Build Workflow + +This directory contains the ILAssembler tool and its build instructions. + +## Build Instructions + +### Regular Builds +For everyday development and regular builds, simply run: + +``` +./dotnet.sh build src/tools/ilasm/src/ILAssembler +``` + +### Updating Generated Files +If you modify any `.g4` grammar files (rare), you must regenerate the parser and related files: + +``` +./dotnet.sh build src/tools/ilasm/src/ILAssembler/gen +``` + +This will update the generated files before building the main project. + +--- + +For more details, see the main repository README or contact the maintainers. diff --git a/src/tools/ilasm/src/ILAssembler/ILAssembler.csproj b/src/tools/ilasm/src/ILAssembler/ILAssembler.csproj index c469e9d6a8d8cd..26de5f183c9417 100644 --- a/src/tools/ilasm/src/ILAssembler/ILAssembler.csproj +++ b/src/tools/ilasm/src/ILAssembler/ILAssembler.csproj @@ -11,16 +11,7 @@ - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - - - - ILAssembler - - diff --git a/src/tools/ilasm/src/ILAssembler/CIL.g4 b/src/tools/ilasm/src/ILAssembler/gen/CIL.g4 similarity index 100% rename from src/tools/ilasm/src/ILAssembler/CIL.g4 rename to src/tools/ilasm/src/ILAssembler/gen/CIL.g4 diff --git a/src/tools/ilasm/src/ILAssembler/gen/CIL.interp b/src/tools/ilasm/src/ILAssembler/gen/CIL.interp new file mode 100644 index 00000000000000..1070a9b268bc97 --- /dev/null +++ b/src/tools/ilasm/src/ILAssembler/gen/CIL.interp @@ -0,0 +1,804 @@ +token literal names: +null +'native' +'cil' +'optil' +'managed' +'forwardref' +'preservesig' +'runtime' +'internalcall' +'synchronized' +'noinlining' +'aggressiveinlining' +'nooptimization' +'aggressiveoptimization' +'async' +'extended' +'{' +'}' +'.subsystem' +'.corflags' +'.file' +'alignment' +'.imagebase' +'.stackreserve' +'.assembly' +'.mscorlib' +'.language' +',' +'.typelist' +'(' +')' +';' +'.typedef' +'as' +'.custom' +'=' +'field' +'property' +'class' +'extern' +'.vtfixup' +'[' +']' +'at' +'fromunmanaged' +'callmostderived' +'retainappdomain' +'.vtable' +'.namespace' +'.class' +'public' +'private' +'sealed' +'abstract' +'auto' +'sequential' +'unicode' +'autochar' +'import' +'serializable' +'windowsruntime' +'nested' +'family' +'assembly' +'famandassem' +'famorassem' +'beforefieldinit' +'specialname' +'rtspecialname' +'flags' +'extends' +'implements' +'.line' +'#line' +':' +'nometadata' +'retargetable' +'noplatform' +'legacy library' +'x86' +'amd64' +'arm' +'arm64' +'bytearray' +'<' +'>' +'()' +'/' +'algorithm' +'iidparam' +'pinned' +'modreq' +'modopt' +'true' +'false' +'request' +'demand' +'assert' +'deny' +'permitonly' +'linkcheck' +'inheritcheck' +'reqmin' +'reqopt' +'reqrefuse' +'prejitgrant' +'prejitdeny' +'noncasdemand' +'noncaslinkdemand' +'noncasinheritance' +'callconv' +'mdtoken' +'-' +'byreflike' +'.ctor' +'.size' +'.pack' +'with' +'.interfaceimpl' +'.field' +'marshal' +'static' +'initonly' +'privatescope' +'literal' +'notserialized' +'.event' +'.addon' +'.removeon' +'.fire' +'.other' +'.property' +'.set' +'.get' +'in' +'out' +'opt' +'.method' +'final' +'virtual' +'strict' +'hidebysig' +'newslot' +'unmanagedexp' +'reqsecobj' +'pinvokeimpl' +'nomangle' +'lasterr' +'winapi' +'bestfit' +'on' +'off' +'charmaperror' +'.cctor' +'init' +'.try' +'to' +'filter' +'catch' +'finally' +'fault' +'handler' +'.data' +'tls' +'.publicKey' +'.ver' +'.locale' +'.publickeytoken' +'forwarder' +null +null +null +null +'::' +'..' +'null' +'nullref' +'.hash' +'char' +'string' +'bool' +'int8' +'int16' +'int32' +'int64' +'float32' +'float64' +null +null +null +null +'int' +null +'type' +'object' +'.module' +'value' +'valuetype' +'void' +'enum' +'custom' +'fixed' +'systring' +'array' +'variant' +'currency' +'syschar' +'error' +'decimal' +'date' +'bstr' +'lpstr' +'lpwstr' +'lptstr' +'objectref' +'iunknown' +'idispatch' +'struct' +'interface' +'safearray' +null +null +'byvalstr' +'ansi' +null +'tbstr' +'method' +'any' +'lpstruct' +'vector' +'hresult' +'carray' +'userdefined' +'record' +'filetime' +'blob' +'stream' +'storage' +'streamed_object' +'stored_object' +'blob_object' +'cf' +'clsid' +'instance' +'explicit' +'default' +'vararg' +'unmanaged' +'cdecl' +'stdcall' +'thiscall' +'fastcall' +'!' +null +'typedref' +null +null +'.param' +'constraint' +'.this' +'.base' +'.nester' +'&' +null +'*' +null +null +'.' +'+' +'#define' +'#undef' +'#ifdef' +'#ifndef' +'#else' +'#endif' +'#include' +'.mresource' +null +null +null +'ldc.i8' +null +null +'calli' +null +'switch' +null +'ldstr' +null +'ldtoken' +null +null +null +null +null +'.permission' +'.permissionset' +'.emitbyte' +'.maxstack' +'.entrypoint' +'.zeroinit' +'.locals' +'.export' +'.override' +'.vtentry' +null +null + +token symbolic names: +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +INT32 +INT64 +FLOAT64 +HEXBYTE +DCOLON +ELLIPSIS +NULL +NULLREF +HASH +CHAR +STRING +BOOL +INT8 +INT16 +INT32_ +INT64_ +FLOAT32 +FLOAT64_ +UINT8 +UINT16 +UINT32 +UINT64 +INT +UINT +TYPE +OBJECT +MODULE +VALUE +VALUETYPE +VOID +ENUM +CUSTOM +FIXED +SYSSTRING +ARRAY +VARIANT +CURRENCY +SYSCHAR +ERROR +DECIMAL +DATE +BSTR +LPSTR +LPWSTR +LPTSTR +OBJECTREF +IUNKNOWN +IDISPATCH +STRUCT +INTERFACE +SAFEARRAY +NESTEDSTRUCT +VARIANTBOOL +BYVALSTR +ANSI +ANSIBSTR +TBSTR +METHOD +ANY +LPSTRUCT +VECTOR +HRESULT +CARRAY +USERDEFINED +RECORD +FILETIME +BLOB +STREAM +STORAGE +STREAMED_OBJECT +STORED_OBJECT +BLOB_OBJECT +CF +CLSID +INSTANCE +EXPLICIT +DEFAULT +VARARG +UNMANAGED +CDECL +STDCALL +THISCALL +FASTCALL +TYPE_PARAMETER +METHOD_TYPE_PARAMETER +TYPEDREF +NATIVE_INT +NATIVE_UINT +PARAM +CONSTRAINT +THIS +BASE +NESTER +REF +ARRAY_TYPE_NO_BOUNDS +PTR +QSTRING +SQSTRING +DOT +PLUS +PP_DEFINE +PP_UNDEF +PP_IFDEF +PP_IFNDEF +PP_ELSE +PP_ENDIF +PP_INCLUDE +MRESOURCE +INSTR_NONE +INSTR_VAR +INSTR_I +INSTR_I8 +INSTR_R +INSTR_METHOD +INSTR_SIG +INSTR_BRTARGET +INSTR_SWITCH +INSTR_TYPE +INSTR_STRING +INSTR_FIELD +INSTR_TOK +DOTTEDNAME +ID +WS +SINGLE_LINE_COMMENT +COMMENT +PERMISSION +PERMISSIONSET +EMITBYTE +MAXSTACK +ENTRYPOINT +ZEROINIT +LOCALS +EXPORT +OVERRIDE +VTENTRY +IncludedFileEof +SyntheticIncludedFileEof + +rule names: +id +dottedName +compQstring +decls +decl +subsystem +corflags +alignment +imagebase +stackreserve +assemblyBlock +mscorlib +languageDecl +typelist +int32 +int64 +float64 +intOrWildcard +compControl +typedefDecl +customDescr +customDescrWithOwner +customType +ownerType +customBlobDescr +customBlobArgs +customBlobNVPairs +fieldOrProp +serializType +serializTypeElement +moduleHead +vtfixupDecl +vtfixupAttr +vtableDecl +nameSpaceHead +classHead +classAttr +extendsClause +implClause +classDecls +implList +esHead +extSourceSpec +fileDecl +fileAttr +fileEntry +asmAttrAny +asmAttr +instr_none +instr_var +instr_i +instr_i8 +instr_r +instr_brtarget +instr_method +instr_field +instr_type +instr_string +instr_sig +instr_tok +instr_switch +instr +labels +typeArgs +bounds +sigArgs +sigArg +className +slashedName +assemblyDecls +assemblyDecl +typeSpec +nativeType +nativeTypeArrayPointerInfo +nativeTypeElement +iidParamIndex +variantType +variantTypeElement +type +typeModifiers +elementType +simpleType +bound +secDecl +secAttrSetBlob +secAttrBlob +nameValPairs +nameValPair +truefalse +caValue +secAction +methodRef +callConv +callKind +mdtoken +memberRef +fieldRef +typeList +typarsClause +typarAttrib +typarAttribs +typar +typars +tyBound +genArity +genArityNotEmpty +classDecl +fieldDecl +fieldAttr +atOpt +initOpt +repeatOpt +eventHead +eventAttr +eventDecls +eventDecl +propHead +propAttr +propDecls +propDecl +marshalClause +marshalBlob +paramAttr +paramAttrElement +methodHead +methAttr +pinvImpl +pinvAttr +methodName +implAttr +methodDecls +methodDecl +labelDecl +customDescrInMethodBody +scopeBlock +sehBlock +sehClauses +tryBlock +sehClause +filterClause +catchClause +finallyClause +faultClause +handlerBlock +dataDecl +ddHead +tls +ddBody +ddItemList +ddItemCount +ddItem +fieldSerInit +bytes +hexbytes +fieldInit +serInit +f32seq +f64seq +i64seq +i32seq +i16seq +i8seq +boolSeq +sqstringSeq +classSeq +classSeqElement +objSeq +customAttrDecl +asmOrRefDecl +assemblyRefHead +assemblyRefDecls +assemblyRefDecl +exptypeHead +exportHead +exptAttr +exptypeDecls +exptypeDecl +manifestResHead +manresAttr +manifestResDecls +manifestResDecl + + +atn: +[4, 1, 306, 2787, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 7, 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 2, 141, 7, 141, 2, 142, 7, 142, 2, 143, 7, 143, 2, 144, 7, 144, 2, 145, 7, 145, 2, 146, 7, 146, 2, 147, 7, 147, 2, 148, 7, 148, 2, 149, 7, 149, 2, 150, 7, 150, 2, 151, 7, 151, 2, 152, 7, 152, 2, 153, 7, 153, 2, 154, 7, 154, 2, 155, 7, 155, 2, 156, 7, 156, 2, 157, 7, 157, 2, 158, 7, 158, 2, 159, 7, 159, 2, 160, 7, 160, 2, 161, 7, 161, 2, 162, 7, 162, 2, 163, 7, 163, 2, 164, 7, 164, 2, 165, 7, 165, 2, 166, 7, 166, 2, 167, 7, 167, 2, 168, 7, 168, 2, 169, 7, 169, 2, 170, 7, 170, 2, 171, 7, 171, 2, 172, 7, 172, 2, 173, 7, 173, 2, 174, 7, 174, 2, 175, 7, 175, 2, 176, 7, 176, 2, 177, 7, 177, 2, 178, 7, 178, 2, 179, 7, 179, 2, 180, 7, 180, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 5, 1, 368, 8, 1, 10, 1, 12, 1, 371, 9, 1, 1, 1, 3, 1, 374, 8, 1, 1, 2, 1, 2, 5, 2, 378, 8, 2, 10, 2, 12, 2, 381, 9, 2, 1, 2, 1, 2, 1, 3, 4, 3, 386, 8, 3, 11, 3, 12, 3, 387, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 3, 4, 440, 8, 4, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 479, 8, 12, 1, 13, 1, 13, 1, 13, 5, 13, 484, 8, 13, 10, 13, 12, 13, 487, 9, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 3, 16, 506, 8, 16, 1, 17, 1, 17, 3, 17, 510, 8, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 528, 8, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 3, 19, 555, 8, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 3, 20, 578, 8, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, 614, 8, 21, 1, 22, 1, 22, 1, 23, 1, 23, 3, 23, 620, 8, 23, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 5, 25, 627, 8, 25, 10, 25, 12, 25, 630, 9, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 5, 26, 639, 8, 26, 10, 26, 12, 26, 642, 9, 26, 1, 27, 1, 27, 1, 28, 1, 28, 3, 28, 648, 8, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 3, 29, 659, 8, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 3, 30, 667, 8, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 5, 32, 688, 8, 32, 10, 32, 12, 32, 691, 9, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 35, 1, 35, 5, 35, 704, 8, 35, 10, 35, 12, 35, 707, 9, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 3, 36, 751, 8, 36, 1, 37, 1, 37, 1, 37, 3, 37, 756, 8, 37, 1, 38, 1, 38, 1, 38, 3, 38, 761, 8, 38, 1, 39, 5, 39, 764, 8, 39, 10, 39, 12, 39, 767, 9, 39, 1, 40, 1, 40, 1, 40, 5, 40, 772, 8, 40, 10, 40, 12, 40, 775, 9, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 3, 42, 852, 8, 42, 1, 43, 1, 43, 5, 43, 856, 8, 43, 10, 43, 12, 43, 859, 9, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 5, 43, 872, 8, 43, 10, 43, 12, 43, 875, 9, 43, 1, 43, 1, 43, 1, 43, 3, 43, 880, 8, 43, 1, 44, 1, 44, 1, 45, 1, 45, 3, 45, 886, 8, 45, 1, 46, 1, 46, 1, 47, 5, 47, 891, 8, 47, 10, 47, 12, 47, 894, 9, 47, 1, 48, 1, 48, 1, 49, 1, 49, 1, 50, 1, 50, 1, 51, 1, 51, 1, 52, 1, 52, 1, 53, 1, 53, 1, 54, 1, 54, 1, 55, 1, 55, 1, 56, 1, 56, 1, 57, 1, 57, 1, 58, 1, 58, 1, 59, 1, 59, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 3, 61, 998, 8, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 5, 62, 1005, 8, 62, 10, 62, 12, 62, 1008, 9, 62, 1, 62, 1, 62, 3, 62, 1012, 8, 62, 3, 62, 1014, 8, 62, 1, 63, 1, 63, 1, 63, 1, 63, 5, 63, 1020, 8, 63, 10, 63, 12, 63, 1023, 9, 63, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 1, 64, 5, 64, 1032, 8, 64, 10, 64, 12, 64, 1035, 9, 64, 1, 64, 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 65, 5, 65, 1044, 8, 65, 10, 65, 12, 65, 1047, 9, 65, 1, 65, 1, 65, 1, 65, 1, 65, 3, 65, 1053, 8, 65, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 3, 66, 1065, 8, 66, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 3, 67, 1092, 8, 67, 1, 68, 1, 68, 1, 68, 5, 68, 1097, 8, 68, 10, 68, 12, 68, 1100, 9, 68, 1, 68, 1, 68, 1, 69, 5, 69, 1105, 8, 69, 10, 69, 12, 69, 1108, 9, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 3, 70, 1115, 8, 70, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 3, 71, 1128, 8, 71, 1, 72, 1, 72, 1, 72, 5, 72, 1133, 8, 72, 10, 72, 12, 72, 1136, 9, 72, 3, 72, 1138, 8, 72, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 3, 73, 1157, 8, 73, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 3, 74, 1240, 8, 74, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 3, 75, 1249, 8, 75, 1, 76, 1, 76, 1, 76, 5, 76, 1254, 8, 76, 10, 76, 12, 76, 1257, 9, 76, 3, 76, 1259, 8, 76, 1, 77, 1, 77, 1, 78, 1, 78, 5, 78, 1265, 8, 78, 10, 78, 12, 78, 1268, 9, 78, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 3, 79, 1287, 8, 79, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 3, 80, 1319, 8, 80, 1, 81, 1, 81, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 3, 82, 1333, 8, 82, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 3, 83, 1358, 8, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 3, 83, 1375, 8, 83, 1, 84, 1, 84, 1, 84, 1, 84, 5, 84, 1381, 8, 84, 10, 84, 12, 84, 1384, 9, 84, 1, 84, 3, 84, 1387, 8, 84, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 3, 85, 1402, 8, 85, 1, 86, 1, 86, 1, 86, 5, 86, 1407, 8, 86, 10, 86, 12, 86, 1410, 9, 86, 1, 86, 1, 86, 1, 87, 1, 87, 1, 87, 1, 87, 1, 88, 1, 88, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 3, 89, 1454, 8, 89, 1, 90, 1, 90, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 3, 91, 1464, 8, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 3, 91, 1480, 8, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 3, 91, 1492, 8, 91, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 3, 92, 1504, 8, 92, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 3, 93, 1518, 8, 93, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 3, 95, 1530, 8, 95, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 3, 96, 1541, 8, 96, 1, 97, 1, 97, 1, 97, 5, 97, 1546, 8, 97, 10, 97, 12, 97, 1549, 9, 97, 1, 97, 1, 97, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 3, 98, 1558, 8, 98, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 3, 99, 1571, 8, 99, 1, 100, 5, 100, 1574, 8, 100, 10, 100, 12, 100, 1577, 9, 100, 1, 101, 1, 101, 3, 101, 1581, 8, 101, 1, 101, 1, 101, 1, 102, 1, 102, 1, 102, 5, 102, 1588, 8, 102, 10, 102, 12, 102, 1591, 9, 102, 1, 102, 1, 102, 1, 103, 1, 103, 1, 103, 1, 103, 1, 104, 1, 104, 3, 104, 1601, 8, 104, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 5, 106, 1682, 8, 106, 10, 106, 12, 106, 1685, 9, 106, 1, 106, 1, 106, 1, 106, 1, 106, 5, 106, 1691, 8, 106, 10, 106, 12, 106, 1694, 9, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 5, 106, 1704, 8, 106, 10, 106, 12, 106, 1707, 9, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 5, 106, 1715, 8, 106, 10, 106, 12, 106, 1718, 9, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 3, 106, 1725, 8, 106, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 5, 107, 1735, 8, 107, 10, 107, 12, 107, 1738, 9, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 3, 108, 1763, 8, 108, 1, 109, 1, 109, 1, 109, 3, 109, 1768, 8, 109, 1, 110, 1, 110, 1, 110, 3, 110, 1773, 8, 110, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 3, 111, 1780, 8, 111, 1, 112, 1, 112, 5, 112, 1784, 8, 112, 10, 112, 12, 112, 1787, 9, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 5, 112, 1794, 8, 112, 10, 112, 12, 112, 1797, 9, 112, 1, 112, 3, 112, 1800, 8, 112, 1, 113, 1, 113, 1, 114, 5, 114, 1805, 8, 114, 10, 114, 12, 114, 1808, 9, 114, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 3, 115, 1822, 8, 115, 1, 116, 1, 116, 5, 116, 1826, 8, 116, 10, 116, 12, 116, 1829, 9, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 117, 1, 117, 1, 118, 5, 118, 1840, 8, 118, 10, 118, 12, 118, 1843, 9, 118, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 3, 119, 1855, 8, 119, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 3, 120, 1863, 8, 120, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 3, 121, 1870, 8, 121, 1, 122, 5, 122, 1873, 8, 122, 10, 122, 12, 122, 1876, 9, 122, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 3, 123, 1891, 8, 123, 1, 124, 1, 124, 1, 124, 5, 124, 1896, 8, 124, 10, 124, 12, 124, 1899, 9, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 5, 124, 1909, 8, 124, 10, 124, 12, 124, 1912, 9, 124, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 3, 125, 1937, 8, 125, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 3, 126, 1944, 8, 126, 3, 126, 1946, 8, 126, 1, 126, 5, 126, 1949, 8, 126, 10, 126, 12, 126, 1952, 9, 126, 1, 126, 1, 126, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 3, 127, 1983, 8, 127, 1, 128, 1, 128, 1, 128, 3, 128, 1988, 8, 128, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 3, 129, 2010, 8, 129, 1, 130, 5, 130, 2013, 8, 130, 10, 130, 12, 130, 2016, 9, 130, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 5, 131, 2077, 8, 131, 10, 131, 12, 131, 2080, 9, 131, 1, 131, 1, 131, 1, 131, 1, 131, 5, 131, 2086, 8, 131, 10, 131, 12, 131, 2089, 9, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 5, 131, 2099, 8, 131, 10, 131, 12, 131, 2102, 9, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 5, 131, 2110, 8, 131, 10, 131, 12, 131, 2113, 9, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 5, 131, 2121, 8, 131, 10, 131, 12, 131, 2124, 9, 131, 3, 131, 2126, 8, 131, 1, 132, 1, 132, 1, 132, 1, 133, 1, 133, 3, 133, 2133, 8, 133, 1, 134, 1, 134, 1, 134, 1, 134, 1, 135, 1, 135, 1, 135, 1, 136, 4, 136, 2143, 8, 136, 11, 136, 12, 136, 2144, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 3, 137, 2159, 8, 137, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 3, 138, 2173, 8, 138, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 3, 139, 2181, 8, 139, 1, 140, 1, 140, 1, 140, 1, 141, 1, 141, 1, 142, 1, 142, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 3, 143, 2201, 8, 143, 1, 144, 1, 144, 1, 144, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 3, 145, 2213, 8, 145, 1, 146, 1, 146, 1, 146, 3, 146, 2218, 8, 146, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 3, 147, 2225, 8, 147, 1, 148, 1, 148, 1, 148, 5, 148, 2230, 8, 148, 10, 148, 12, 148, 2233, 9, 148, 1, 148, 1, 148, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 3, 149, 2242, 8, 149, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 3, 150, 2308, 8, 150, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 3, 151, 2385, 8, 151, 1, 152, 5, 152, 2388, 8, 152, 10, 152, 12, 152, 2391, 9, 152, 1, 153, 4, 153, 2394, 8, 153, 11, 153, 12, 153, 2395, 1, 154, 1, 154, 1, 154, 3, 154, 2401, 8, 154, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 3, 155, 2551, 8, 155, 1, 156, 1, 156, 5, 156, 2555, 8, 156, 10, 156, 12, 156, 2558, 9, 156, 1, 157, 1, 157, 5, 157, 2562, 8, 157, 10, 157, 12, 157, 2565, 9, 157, 1, 158, 5, 158, 2568, 8, 158, 10, 158, 12, 158, 2571, 9, 158, 1, 159, 5, 159, 2574, 8, 159, 10, 159, 12, 159, 2577, 9, 159, 1, 160, 5, 160, 2580, 8, 160, 10, 160, 12, 160, 2583, 9, 160, 1, 161, 5, 161, 2586, 8, 161, 10, 161, 12, 161, 2589, 9, 161, 1, 162, 5, 162, 2592, 8, 162, 10, 162, 12, 162, 2595, 9, 162, 1, 163, 5, 163, 2598, 8, 163, 10, 163, 12, 163, 2601, 9, 163, 1, 164, 5, 164, 2604, 8, 164, 10, 164, 12, 164, 2607, 9, 164, 1, 165, 1, 165, 1, 165, 1, 165, 3, 165, 2613, 8, 165, 1, 166, 5, 166, 2616, 8, 166, 10, 166, 12, 166, 2619, 9, 166, 1, 167, 1, 167, 1, 167, 3, 167, 2624, 8, 167, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 3, 168, 2651, 8, 168, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 3, 169, 2665, 8, 169, 1, 170, 5, 170, 2668, 8, 170, 10, 170, 12, 170, 2671, 9, 170, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 3, 171, 2687, 8, 171, 1, 172, 1, 172, 1, 172, 5, 172, 2692, 8, 172, 10, 172, 12, 172, 2695, 9, 172, 1, 172, 1, 172, 1, 173, 1, 173, 5, 173, 2701, 8, 173, 10, 173, 12, 173, 2704, 9, 173, 1, 173, 1, 173, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 3, 174, 2723, 8, 174, 1, 175, 5, 175, 2726, 8, 175, 10, 175, 12, 175, 2729, 9, 175, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 3, 176, 2744, 8, 176, 1, 177, 1, 177, 5, 177, 2748, 8, 177, 10, 177, 12, 177, 2751, 9, 177, 1, 177, 1, 177, 1, 177, 5, 177, 2756, 8, 177, 10, 177, 12, 177, 2759, 9, 177, 1, 177, 1, 177, 1, 177, 1, 177, 3, 177, 2765, 8, 177, 1, 178, 1, 178, 1, 179, 5, 179, 2770, 8, 179, 10, 179, 12, 179, 2773, 9, 179, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 3, 180, 2785, 8, 180, 1, 180, 0, 1, 64, 181, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, 184, 186, 188, 190, 192, 194, 196, 198, 200, 202, 204, 206, 208, 210, 212, 214, 216, 218, 220, 222, 224, 226, 228, 230, 232, 234, 236, 238, 240, 242, 244, 246, 248, 250, 252, 254, 256, 258, 260, 262, 264, 266, 268, 270, 272, 274, 276, 278, 280, 282, 284, 286, 288, 290, 292, 294, 296, 298, 300, 302, 304, 306, 308, 310, 312, 314, 316, 318, 320, 322, 324, 326, 328, 330, 332, 334, 336, 338, 340, 342, 344, 346, 348, 350, 352, 354, 356, 358, 360, 0, 13, 4, 0, 1, 15, 247, 247, 266, 266, 291, 291, 1, 0, 169, 170, 1, 0, 36, 37, 1, 0, 72, 73, 3, 0, 2, 2, 60, 60, 76, 82, 2, 0, 229, 229, 262, 263, 9, 0, 175, 175, 180, 192, 198, 198, 204, 205, 207, 212, 215, 216, 219, 219, 230, 242, 264, 264, 1, 0, 178, 190, 1, 0, 93, 94, 1, 0, 95, 109, 1, 0, 67, 68, 2, 0, 176, 176, 266, 266, 1, 0, 50, 51, 3170, 0, 362, 1, 0, 0, 0, 2, 373, 1, 0, 0, 0, 4, 379, 1, 0, 0, 0, 6, 385, 1, 0, 0, 0, 8, 439, 1, 0, 0, 0, 10, 441, 1, 0, 0, 0, 12, 444, 1, 0, 0, 0, 14, 447, 1, 0, 0, 0, 16, 451, 1, 0, 0, 0, 18, 454, 1, 0, 0, 0, 20, 457, 1, 0, 0, 0, 22, 464, 1, 0, 0, 0, 24, 478, 1, 0, 0, 0, 26, 480, 1, 0, 0, 0, 28, 490, 1, 0, 0, 0, 30, 492, 1, 0, 0, 0, 32, 505, 1, 0, 0, 0, 34, 509, 1, 0, 0, 0, 36, 527, 1, 0, 0, 0, 38, 554, 1, 0, 0, 0, 40, 577, 1, 0, 0, 0, 42, 613, 1, 0, 0, 0, 44, 615, 1, 0, 0, 0, 46, 619, 1, 0, 0, 0, 48, 621, 1, 0, 0, 0, 50, 628, 1, 0, 0, 0, 52, 640, 1, 0, 0, 0, 54, 643, 1, 0, 0, 0, 56, 645, 1, 0, 0, 0, 58, 658, 1, 0, 0, 0, 60, 666, 1, 0, 0, 0, 62, 668, 1, 0, 0, 0, 64, 676, 1, 0, 0, 0, 66, 692, 1, 0, 0, 0, 68, 698, 1, 0, 0, 0, 70, 701, 1, 0, 0, 0, 72, 750, 1, 0, 0, 0, 74, 755, 1, 0, 0, 0, 76, 760, 1, 0, 0, 0, 78, 765, 1, 0, 0, 0, 80, 773, 1, 0, 0, 0, 82, 778, 1, 0, 0, 0, 84, 851, 1, 0, 0, 0, 86, 879, 1, 0, 0, 0, 88, 881, 1, 0, 0, 0, 90, 885, 1, 0, 0, 0, 92, 887, 1, 0, 0, 0, 94, 892, 1, 0, 0, 0, 96, 895, 1, 0, 0, 0, 98, 897, 1, 0, 0, 0, 100, 899, 1, 0, 0, 0, 102, 901, 1, 0, 0, 0, 104, 903, 1, 0, 0, 0, 106, 905, 1, 0, 0, 0, 108, 907, 1, 0, 0, 0, 110, 909, 1, 0, 0, 0, 112, 911, 1, 0, 0, 0, 114, 913, 1, 0, 0, 0, 116, 915, 1, 0, 0, 0, 118, 917, 1, 0, 0, 0, 120, 919, 1, 0, 0, 0, 122, 997, 1, 0, 0, 0, 124, 1013, 1, 0, 0, 0, 126, 1015, 1, 0, 0, 0, 128, 1027, 1, 0, 0, 0, 130, 1052, 1, 0, 0, 0, 132, 1064, 1, 0, 0, 0, 134, 1091, 1, 0, 0, 0, 136, 1098, 1, 0, 0, 0, 138, 1106, 1, 0, 0, 0, 140, 1114, 1, 0, 0, 0, 142, 1127, 1, 0, 0, 0, 144, 1137, 1, 0, 0, 0, 146, 1156, 1, 0, 0, 0, 148, 1239, 1, 0, 0, 0, 150, 1248, 1, 0, 0, 0, 152, 1258, 1, 0, 0, 0, 154, 1260, 1, 0, 0, 0, 156, 1262, 1, 0, 0, 0, 158, 1286, 1, 0, 0, 0, 160, 1318, 1, 0, 0, 0, 162, 1320, 1, 0, 0, 0, 164, 1332, 1, 0, 0, 0, 166, 1374, 1, 0, 0, 0, 168, 1386, 1, 0, 0, 0, 170, 1401, 1, 0, 0, 0, 172, 1408, 1, 0, 0, 0, 174, 1413, 1, 0, 0, 0, 176, 1417, 1, 0, 0, 0, 178, 1453, 1, 0, 0, 0, 180, 1455, 1, 0, 0, 0, 182, 1491, 1, 0, 0, 0, 184, 1503, 1, 0, 0, 0, 186, 1517, 1, 0, 0, 0, 188, 1519, 1, 0, 0, 0, 190, 1529, 1, 0, 0, 0, 192, 1540, 1, 0, 0, 0, 194, 1547, 1, 0, 0, 0, 196, 1557, 1, 0, 0, 0, 198, 1570, 1, 0, 0, 0, 200, 1575, 1, 0, 0, 0, 202, 1578, 1, 0, 0, 0, 204, 1589, 1, 0, 0, 0, 206, 1594, 1, 0, 0, 0, 208, 1600, 1, 0, 0, 0, 210, 1602, 1, 0, 0, 0, 212, 1724, 1, 0, 0, 0, 214, 1726, 1, 0, 0, 0, 216, 1762, 1, 0, 0, 0, 218, 1767, 1, 0, 0, 0, 220, 1772, 1, 0, 0, 0, 222, 1779, 1, 0, 0, 0, 224, 1799, 1, 0, 0, 0, 226, 1801, 1, 0, 0, 0, 228, 1806, 1, 0, 0, 0, 230, 1821, 1, 0, 0, 0, 232, 1823, 1, 0, 0, 0, 234, 1836, 1, 0, 0, 0, 236, 1841, 1, 0, 0, 0, 238, 1854, 1, 0, 0, 0, 240, 1862, 1, 0, 0, 0, 242, 1869, 1, 0, 0, 0, 244, 1874, 1, 0, 0, 0, 246, 1890, 1, 0, 0, 0, 248, 1892, 1, 0, 0, 0, 250, 1936, 1, 0, 0, 0, 252, 1938, 1, 0, 0, 0, 254, 1982, 1, 0, 0, 0, 256, 1987, 1, 0, 0, 0, 258, 2009, 1, 0, 0, 0, 260, 2014, 1, 0, 0, 0, 262, 2125, 1, 0, 0, 0, 264, 2127, 1, 0, 0, 0, 266, 2132, 1, 0, 0, 0, 268, 2134, 1, 0, 0, 0, 270, 2138, 1, 0, 0, 0, 272, 2142, 1, 0, 0, 0, 274, 2158, 1, 0, 0, 0, 276, 2172, 1, 0, 0, 0, 278, 2180, 1, 0, 0, 0, 280, 2182, 1, 0, 0, 0, 282, 2185, 1, 0, 0, 0, 284, 2187, 1, 0, 0, 0, 286, 2200, 1, 0, 0, 0, 288, 2202, 1, 0, 0, 0, 290, 2212, 1, 0, 0, 0, 292, 2217, 1, 0, 0, 0, 294, 2224, 1, 0, 0, 0, 296, 2231, 1, 0, 0, 0, 298, 2241, 1, 0, 0, 0, 300, 2307, 1, 0, 0, 0, 302, 2384, 1, 0, 0, 0, 304, 2389, 1, 0, 0, 0, 306, 2393, 1, 0, 0, 0, 308, 2400, 1, 0, 0, 0, 310, 2550, 1, 0, 0, 0, 312, 2556, 1, 0, 0, 0, 314, 2563, 1, 0, 0, 0, 316, 2569, 1, 0, 0, 0, 318, 2575, 1, 0, 0, 0, 320, 2581, 1, 0, 0, 0, 322, 2587, 1, 0, 0, 0, 324, 2593, 1, 0, 0, 0, 326, 2599, 1, 0, 0, 0, 328, 2605, 1, 0, 0, 0, 330, 2612, 1, 0, 0, 0, 332, 2617, 1, 0, 0, 0, 334, 2623, 1, 0, 0, 0, 336, 2650, 1, 0, 0, 0, 338, 2664, 1, 0, 0, 0, 340, 2669, 1, 0, 0, 0, 342, 2686, 1, 0, 0, 0, 344, 2688, 1, 0, 0, 0, 346, 2698, 1, 0, 0, 0, 348, 2722, 1, 0, 0, 0, 350, 2727, 1, 0, 0, 0, 352, 2743, 1, 0, 0, 0, 354, 2764, 1, 0, 0, 0, 356, 2766, 1, 0, 0, 0, 358, 2771, 1, 0, 0, 0, 360, 2784, 1, 0, 0, 0, 362, 363, 7, 0, 0, 0, 363, 1, 1, 0, 0, 0, 364, 374, 5, 290, 0, 0, 365, 366, 5, 291, 0, 0, 366, 368, 5, 267, 0, 0, 367, 365, 1, 0, 0, 0, 368, 371, 1, 0, 0, 0, 369, 367, 1, 0, 0, 0, 369, 370, 1, 0, 0, 0, 370, 372, 1, 0, 0, 0, 371, 369, 1, 0, 0, 0, 372, 374, 5, 291, 0, 0, 373, 364, 1, 0, 0, 0, 373, 369, 1, 0, 0, 0, 374, 3, 1, 0, 0, 0, 375, 376, 5, 265, 0, 0, 376, 378, 5, 268, 0, 0, 377, 375, 1, 0, 0, 0, 378, 381, 1, 0, 0, 0, 379, 377, 1, 0, 0, 0, 379, 380, 1, 0, 0, 0, 380, 382, 1, 0, 0, 0, 381, 379, 1, 0, 0, 0, 382, 383, 5, 265, 0, 0, 383, 5, 1, 0, 0, 0, 384, 386, 3, 8, 4, 0, 385, 384, 1, 0, 0, 0, 386, 387, 1, 0, 0, 0, 387, 385, 1, 0, 0, 0, 387, 388, 1, 0, 0, 0, 388, 7, 1, 0, 0, 0, 389, 390, 3, 70, 35, 0, 390, 391, 5, 16, 0, 0, 391, 392, 3, 78, 39, 0, 392, 393, 5, 17, 0, 0, 393, 440, 1, 0, 0, 0, 394, 395, 3, 68, 34, 0, 395, 396, 5, 16, 0, 0, 396, 397, 3, 6, 3, 0, 397, 398, 5, 17, 0, 0, 398, 440, 1, 0, 0, 0, 399, 400, 3, 248, 124, 0, 400, 401, 5, 16, 0, 0, 401, 402, 3, 260, 130, 0, 402, 403, 5, 17, 0, 0, 403, 440, 1, 0, 0, 0, 404, 440, 3, 214, 107, 0, 405, 440, 3, 288, 144, 0, 406, 440, 3, 66, 33, 0, 407, 440, 3, 62, 31, 0, 408, 440, 3, 84, 42, 0, 409, 440, 3, 86, 43, 0, 410, 440, 3, 20, 10, 0, 411, 412, 3, 338, 169, 0, 412, 413, 5, 16, 0, 0, 413, 414, 3, 340, 170, 0, 414, 415, 5, 17, 0, 0, 415, 440, 1, 0, 0, 0, 416, 417, 3, 344, 172, 0, 417, 418, 5, 16, 0, 0, 418, 419, 3, 350, 175, 0, 419, 420, 5, 17, 0, 0, 420, 440, 1, 0, 0, 0, 421, 422, 3, 354, 177, 0, 422, 423, 5, 16, 0, 0, 423, 424, 3, 358, 179, 0, 424, 425, 5, 17, 0, 0, 425, 440, 1, 0, 0, 0, 426, 440, 3, 60, 30, 0, 427, 440, 3, 166, 83, 0, 428, 440, 3, 334, 167, 0, 429, 440, 3, 10, 5, 0, 430, 440, 3, 12, 6, 0, 431, 440, 3, 14, 7, 0, 432, 440, 3, 16, 8, 0, 433, 440, 3, 18, 9, 0, 434, 440, 3, 24, 12, 0, 435, 440, 3, 38, 19, 0, 436, 440, 3, 36, 18, 0, 437, 440, 3, 26, 13, 0, 438, 440, 3, 22, 11, 0, 439, 389, 1, 0, 0, 0, 439, 394, 1, 0, 0, 0, 439, 399, 1, 0, 0, 0, 439, 404, 1, 0, 0, 0, 439, 405, 1, 0, 0, 0, 439, 406, 1, 0, 0, 0, 439, 407, 1, 0, 0, 0, 439, 408, 1, 0, 0, 0, 439, 409, 1, 0, 0, 0, 439, 410, 1, 0, 0, 0, 439, 411, 1, 0, 0, 0, 439, 416, 1, 0, 0, 0, 439, 421, 1, 0, 0, 0, 439, 426, 1, 0, 0, 0, 439, 427, 1, 0, 0, 0, 439, 428, 1, 0, 0, 0, 439, 429, 1, 0, 0, 0, 439, 430, 1, 0, 0, 0, 439, 431, 1, 0, 0, 0, 439, 432, 1, 0, 0, 0, 439, 433, 1, 0, 0, 0, 439, 434, 1, 0, 0, 0, 439, 435, 1, 0, 0, 0, 439, 436, 1, 0, 0, 0, 439, 437, 1, 0, 0, 0, 439, 438, 1, 0, 0, 0, 440, 9, 1, 0, 0, 0, 441, 442, 5, 18, 0, 0, 442, 443, 3, 28, 14, 0, 443, 11, 1, 0, 0, 0, 444, 445, 5, 19, 0, 0, 445, 446, 3, 28, 14, 0, 446, 13, 1, 0, 0, 0, 447, 448, 5, 20, 0, 0, 448, 449, 5, 21, 0, 0, 449, 450, 3, 28, 14, 0, 450, 15, 1, 0, 0, 0, 451, 452, 5, 22, 0, 0, 452, 453, 3, 30, 15, 0, 453, 17, 1, 0, 0, 0, 454, 455, 5, 23, 0, 0, 455, 456, 3, 30, 15, 0, 456, 19, 1, 0, 0, 0, 457, 458, 5, 24, 0, 0, 458, 459, 3, 94, 47, 0, 459, 460, 3, 2, 1, 0, 460, 461, 5, 16, 0, 0, 461, 462, 3, 138, 69, 0, 462, 463, 5, 17, 0, 0, 463, 21, 1, 0, 0, 0, 464, 465, 5, 25, 0, 0, 465, 23, 1, 0, 0, 0, 466, 467, 5, 26, 0, 0, 467, 479, 5, 266, 0, 0, 468, 469, 5, 26, 0, 0, 469, 470, 5, 266, 0, 0, 470, 471, 5, 27, 0, 0, 471, 479, 5, 266, 0, 0, 472, 473, 5, 26, 0, 0, 473, 474, 5, 266, 0, 0, 474, 475, 5, 27, 0, 0, 475, 476, 5, 266, 0, 0, 476, 477, 5, 27, 0, 0, 477, 479, 5, 266, 0, 0, 478, 466, 1, 0, 0, 0, 478, 468, 1, 0, 0, 0, 478, 472, 1, 0, 0, 0, 479, 25, 1, 0, 0, 0, 480, 481, 5, 28, 0, 0, 481, 485, 5, 16, 0, 0, 482, 484, 3, 134, 67, 0, 483, 482, 1, 0, 0, 0, 484, 487, 1, 0, 0, 0, 485, 483, 1, 0, 0, 0, 485, 486, 1, 0, 0, 0, 486, 488, 1, 0, 0, 0, 487, 485, 1, 0, 0, 0, 488, 489, 5, 17, 0, 0, 489, 27, 1, 0, 0, 0, 490, 491, 5, 169, 0, 0, 491, 29, 1, 0, 0, 0, 492, 493, 7, 1, 0, 0, 493, 31, 1, 0, 0, 0, 494, 506, 5, 171, 0, 0, 495, 496, 5, 185, 0, 0, 496, 497, 5, 29, 0, 0, 497, 498, 3, 28, 14, 0, 498, 499, 5, 30, 0, 0, 499, 506, 1, 0, 0, 0, 500, 501, 5, 186, 0, 0, 501, 502, 5, 29, 0, 0, 502, 503, 3, 30, 15, 0, 503, 504, 5, 30, 0, 0, 504, 506, 1, 0, 0, 0, 505, 494, 1, 0, 0, 0, 505, 495, 1, 0, 0, 0, 505, 500, 1, 0, 0, 0, 506, 33, 1, 0, 0, 0, 507, 510, 3, 28, 14, 0, 508, 510, 5, 264, 0, 0, 509, 507, 1, 0, 0, 0, 509, 508, 1, 0, 0, 0, 510, 35, 1, 0, 0, 0, 511, 512, 5, 269, 0, 0, 512, 528, 5, 291, 0, 0, 513, 514, 5, 269, 0, 0, 514, 515, 5, 291, 0, 0, 515, 528, 5, 265, 0, 0, 516, 517, 5, 270, 0, 0, 517, 528, 5, 291, 0, 0, 518, 519, 5, 271, 0, 0, 519, 528, 5, 291, 0, 0, 520, 521, 5, 272, 0, 0, 521, 528, 5, 291, 0, 0, 522, 528, 5, 273, 0, 0, 523, 528, 5, 274, 0, 0, 524, 525, 5, 275, 0, 0, 525, 528, 5, 265, 0, 0, 526, 528, 5, 31, 0, 0, 527, 511, 1, 0, 0, 0, 527, 513, 1, 0, 0, 0, 527, 516, 1, 0, 0, 0, 527, 518, 1, 0, 0, 0, 527, 520, 1, 0, 0, 0, 527, 522, 1, 0, 0, 0, 527, 523, 1, 0, 0, 0, 527, 524, 1, 0, 0, 0, 527, 526, 1, 0, 0, 0, 528, 37, 1, 0, 0, 0, 529, 530, 5, 32, 0, 0, 530, 531, 3, 156, 78, 0, 531, 532, 5, 33, 0, 0, 532, 533, 3, 2, 1, 0, 533, 555, 1, 0, 0, 0, 534, 535, 5, 32, 0, 0, 535, 536, 3, 134, 67, 0, 536, 537, 5, 33, 0, 0, 537, 538, 3, 2, 1, 0, 538, 555, 1, 0, 0, 0, 539, 540, 5, 32, 0, 0, 540, 541, 3, 190, 95, 0, 541, 542, 5, 33, 0, 0, 542, 543, 3, 2, 1, 0, 543, 555, 1, 0, 0, 0, 544, 545, 5, 32, 0, 0, 545, 546, 3, 40, 20, 0, 546, 547, 5, 33, 0, 0, 547, 548, 3, 2, 1, 0, 548, 555, 1, 0, 0, 0, 549, 550, 5, 32, 0, 0, 550, 551, 3, 42, 21, 0, 551, 552, 5, 33, 0, 0, 552, 553, 3, 2, 1, 0, 553, 555, 1, 0, 0, 0, 554, 529, 1, 0, 0, 0, 554, 534, 1, 0, 0, 0, 554, 539, 1, 0, 0, 0, 554, 544, 1, 0, 0, 0, 554, 549, 1, 0, 0, 0, 555, 39, 1, 0, 0, 0, 556, 557, 5, 34, 0, 0, 557, 578, 3, 44, 22, 0, 558, 559, 5, 34, 0, 0, 559, 560, 3, 44, 22, 0, 560, 561, 5, 35, 0, 0, 561, 562, 3, 4, 2, 0, 562, 578, 1, 0, 0, 0, 563, 564, 5, 34, 0, 0, 564, 565, 3, 44, 22, 0, 565, 566, 5, 35, 0, 0, 566, 567, 5, 16, 0, 0, 567, 568, 3, 48, 24, 0, 568, 569, 5, 17, 0, 0, 569, 578, 1, 0, 0, 0, 570, 571, 5, 34, 0, 0, 571, 572, 3, 44, 22, 0, 572, 573, 5, 35, 0, 0, 573, 574, 5, 29, 0, 0, 574, 575, 3, 304, 152, 0, 575, 576, 5, 30, 0, 0, 576, 578, 1, 0, 0, 0, 577, 556, 1, 0, 0, 0, 577, 558, 1, 0, 0, 0, 577, 563, 1, 0, 0, 0, 577, 570, 1, 0, 0, 0, 578, 41, 1, 0, 0, 0, 579, 580, 5, 34, 0, 0, 580, 581, 5, 29, 0, 0, 581, 582, 3, 46, 23, 0, 582, 583, 5, 30, 0, 0, 583, 584, 3, 44, 22, 0, 584, 614, 1, 0, 0, 0, 585, 586, 5, 34, 0, 0, 586, 587, 5, 29, 0, 0, 587, 588, 3, 46, 23, 0, 588, 589, 5, 30, 0, 0, 589, 590, 3, 44, 22, 0, 590, 591, 5, 35, 0, 0, 591, 592, 3, 4, 2, 0, 592, 614, 1, 0, 0, 0, 593, 594, 5, 34, 0, 0, 594, 595, 5, 29, 0, 0, 595, 596, 3, 46, 23, 0, 596, 597, 5, 30, 0, 0, 597, 598, 3, 44, 22, 0, 598, 599, 5, 35, 0, 0, 599, 600, 5, 16, 0, 0, 600, 601, 3, 48, 24, 0, 601, 602, 5, 17, 0, 0, 602, 614, 1, 0, 0, 0, 603, 604, 5, 34, 0, 0, 604, 605, 5, 29, 0, 0, 605, 606, 3, 46, 23, 0, 606, 607, 5, 30, 0, 0, 607, 608, 3, 44, 22, 0, 608, 609, 5, 35, 0, 0, 609, 610, 5, 29, 0, 0, 610, 611, 3, 304, 152, 0, 611, 612, 5, 30, 0, 0, 612, 614, 1, 0, 0, 0, 613, 579, 1, 0, 0, 0, 613, 585, 1, 0, 0, 0, 613, 593, 1, 0, 0, 0, 613, 603, 1, 0, 0, 0, 614, 43, 1, 0, 0, 0, 615, 616, 3, 182, 91, 0, 616, 45, 1, 0, 0, 0, 617, 620, 3, 142, 71, 0, 618, 620, 3, 190, 95, 0, 619, 617, 1, 0, 0, 0, 619, 618, 1, 0, 0, 0, 620, 47, 1, 0, 0, 0, 621, 622, 3, 50, 25, 0, 622, 623, 3, 52, 26, 0, 623, 49, 1, 0, 0, 0, 624, 627, 3, 310, 155, 0, 625, 627, 3, 36, 18, 0, 626, 624, 1, 0, 0, 0, 626, 625, 1, 0, 0, 0, 627, 630, 1, 0, 0, 0, 628, 626, 1, 0, 0, 0, 628, 629, 1, 0, 0, 0, 629, 51, 1, 0, 0, 0, 630, 628, 1, 0, 0, 0, 631, 632, 3, 54, 27, 0, 632, 633, 3, 56, 28, 0, 633, 634, 3, 2, 1, 0, 634, 635, 5, 35, 0, 0, 635, 636, 3, 310, 155, 0, 636, 639, 1, 0, 0, 0, 637, 639, 3, 36, 18, 0, 638, 631, 1, 0, 0, 0, 638, 637, 1, 0, 0, 0, 639, 642, 1, 0, 0, 0, 640, 638, 1, 0, 0, 0, 640, 641, 1, 0, 0, 0, 641, 53, 1, 0, 0, 0, 642, 640, 1, 0, 0, 0, 643, 644, 7, 2, 0, 0, 644, 55, 1, 0, 0, 0, 645, 647, 3, 58, 29, 0, 646, 648, 5, 263, 0, 0, 647, 646, 1, 0, 0, 0, 647, 648, 1, 0, 0, 0, 648, 57, 1, 0, 0, 0, 649, 659, 3, 162, 81, 0, 650, 659, 3, 2, 1, 0, 651, 659, 5, 193, 0, 0, 652, 659, 5, 194, 0, 0, 653, 654, 5, 199, 0, 0, 654, 655, 5, 38, 0, 0, 655, 659, 5, 266, 0, 0, 656, 657, 5, 199, 0, 0, 657, 659, 3, 134, 67, 0, 658, 649, 1, 0, 0, 0, 658, 650, 1, 0, 0, 0, 658, 651, 1, 0, 0, 0, 658, 652, 1, 0, 0, 0, 658, 653, 1, 0, 0, 0, 658, 656, 1, 0, 0, 0, 659, 59, 1, 0, 0, 0, 660, 667, 5, 195, 0, 0, 661, 662, 5, 195, 0, 0, 662, 667, 3, 2, 1, 0, 663, 664, 5, 195, 0, 0, 664, 665, 5, 39, 0, 0, 665, 667, 3, 2, 1, 0, 666, 660, 1, 0, 0, 0, 666, 661, 1, 0, 0, 0, 666, 663, 1, 0, 0, 0, 667, 61, 1, 0, 0, 0, 668, 669, 5, 40, 0, 0, 669, 670, 5, 41, 0, 0, 670, 671, 3, 28, 14, 0, 671, 672, 5, 42, 0, 0, 672, 673, 3, 64, 32, 0, 673, 674, 5, 43, 0, 0, 674, 675, 3, 0, 0, 0, 675, 63, 1, 0, 0, 0, 676, 689, 6, 32, -1, 0, 677, 678, 10, 5, 0, 0, 678, 688, 5, 183, 0, 0, 679, 680, 10, 4, 0, 0, 680, 688, 5, 184, 0, 0, 681, 682, 10, 3, 0, 0, 682, 688, 5, 44, 0, 0, 683, 684, 10, 2, 0, 0, 684, 688, 5, 45, 0, 0, 685, 686, 10, 1, 0, 0, 686, 688, 5, 46, 0, 0, 687, 677, 1, 0, 0, 0, 687, 679, 1, 0, 0, 0, 687, 681, 1, 0, 0, 0, 687, 683, 1, 0, 0, 0, 687, 685, 1, 0, 0, 0, 688, 691, 1, 0, 0, 0, 689, 687, 1, 0, 0, 0, 689, 690, 1, 0, 0, 0, 690, 65, 1, 0, 0, 0, 691, 689, 1, 0, 0, 0, 692, 693, 5, 47, 0, 0, 693, 694, 5, 35, 0, 0, 694, 695, 5, 29, 0, 0, 695, 696, 3, 304, 152, 0, 696, 697, 5, 30, 0, 0, 697, 67, 1, 0, 0, 0, 698, 699, 5, 48, 0, 0, 699, 700, 3, 2, 1, 0, 700, 69, 1, 0, 0, 0, 701, 705, 5, 49, 0, 0, 702, 704, 3, 72, 36, 0, 703, 702, 1, 0, 0, 0, 704, 707, 1, 0, 0, 0, 705, 703, 1, 0, 0, 0, 705, 706, 1, 0, 0, 0, 706, 708, 1, 0, 0, 0, 707, 705, 1, 0, 0, 0, 708, 709, 3, 2, 1, 0, 709, 710, 3, 196, 98, 0, 710, 711, 3, 74, 37, 0, 711, 712, 3, 76, 38, 0, 712, 71, 1, 0, 0, 0, 713, 751, 5, 50, 0, 0, 714, 751, 5, 51, 0, 0, 715, 751, 5, 196, 0, 0, 716, 751, 5, 199, 0, 0, 717, 751, 5, 218, 0, 0, 718, 751, 5, 52, 0, 0, 719, 751, 5, 53, 0, 0, 720, 751, 5, 54, 0, 0, 721, 751, 5, 55, 0, 0, 722, 751, 5, 244, 0, 0, 723, 751, 5, 15, 0, 0, 724, 751, 5, 223, 0, 0, 725, 751, 5, 56, 0, 0, 726, 751, 5, 57, 0, 0, 727, 751, 5, 58, 0, 0, 728, 751, 5, 59, 0, 0, 729, 751, 5, 60, 0, 0, 730, 731, 5, 61, 0, 0, 731, 751, 5, 50, 0, 0, 732, 733, 5, 61, 0, 0, 733, 751, 5, 51, 0, 0, 734, 735, 5, 61, 0, 0, 735, 751, 5, 62, 0, 0, 736, 737, 5, 61, 0, 0, 737, 751, 5, 63, 0, 0, 738, 739, 5, 61, 0, 0, 739, 751, 5, 64, 0, 0, 740, 741, 5, 61, 0, 0, 741, 751, 5, 65, 0, 0, 742, 751, 5, 66, 0, 0, 743, 751, 5, 67, 0, 0, 744, 751, 5, 68, 0, 0, 745, 746, 5, 69, 0, 0, 746, 747, 5, 29, 0, 0, 747, 748, 3, 28, 14, 0, 748, 749, 5, 30, 0, 0, 749, 751, 1, 0, 0, 0, 750, 713, 1, 0, 0, 0, 750, 714, 1, 0, 0, 0, 750, 715, 1, 0, 0, 0, 750, 716, 1, 0, 0, 0, 750, 717, 1, 0, 0, 0, 750, 718, 1, 0, 0, 0, 750, 719, 1, 0, 0, 0, 750, 720, 1, 0, 0, 0, 750, 721, 1, 0, 0, 0, 750, 722, 1, 0, 0, 0, 750, 723, 1, 0, 0, 0, 750, 724, 1, 0, 0, 0, 750, 725, 1, 0, 0, 0, 750, 726, 1, 0, 0, 0, 750, 727, 1, 0, 0, 0, 750, 728, 1, 0, 0, 0, 750, 729, 1, 0, 0, 0, 750, 730, 1, 0, 0, 0, 750, 732, 1, 0, 0, 0, 750, 734, 1, 0, 0, 0, 750, 736, 1, 0, 0, 0, 750, 738, 1, 0, 0, 0, 750, 740, 1, 0, 0, 0, 750, 742, 1, 0, 0, 0, 750, 743, 1, 0, 0, 0, 750, 744, 1, 0, 0, 0, 750, 745, 1, 0, 0, 0, 751, 73, 1, 0, 0, 0, 752, 756, 1, 0, 0, 0, 753, 754, 5, 70, 0, 0, 754, 756, 3, 142, 71, 0, 755, 752, 1, 0, 0, 0, 755, 753, 1, 0, 0, 0, 756, 75, 1, 0, 0, 0, 757, 761, 1, 0, 0, 0, 758, 759, 5, 71, 0, 0, 759, 761, 3, 80, 40, 0, 760, 757, 1, 0, 0, 0, 760, 758, 1, 0, 0, 0, 761, 77, 1, 0, 0, 0, 762, 764, 3, 212, 106, 0, 763, 762, 1, 0, 0, 0, 764, 767, 1, 0, 0, 0, 765, 763, 1, 0, 0, 0, 765, 766, 1, 0, 0, 0, 766, 79, 1, 0, 0, 0, 767, 765, 1, 0, 0, 0, 768, 769, 3, 142, 71, 0, 769, 770, 5, 27, 0, 0, 770, 772, 1, 0, 0, 0, 771, 768, 1, 0, 0, 0, 772, 775, 1, 0, 0, 0, 773, 771, 1, 0, 0, 0, 773, 774, 1, 0, 0, 0, 774, 776, 1, 0, 0, 0, 775, 773, 1, 0, 0, 0, 776, 777, 3, 142, 71, 0, 777, 81, 1, 0, 0, 0, 778, 779, 7, 3, 0, 0, 779, 83, 1, 0, 0, 0, 780, 781, 3, 82, 41, 0, 781, 782, 3, 28, 14, 0, 782, 783, 5, 266, 0, 0, 783, 852, 1, 0, 0, 0, 784, 785, 3, 82, 41, 0, 785, 786, 3, 28, 14, 0, 786, 852, 1, 0, 0, 0, 787, 788, 3, 82, 41, 0, 788, 789, 3, 28, 14, 0, 789, 790, 5, 74, 0, 0, 790, 791, 3, 28, 14, 0, 791, 792, 5, 266, 0, 0, 792, 852, 1, 0, 0, 0, 793, 794, 3, 82, 41, 0, 794, 795, 3, 28, 14, 0, 795, 796, 5, 74, 0, 0, 796, 797, 3, 28, 14, 0, 797, 852, 1, 0, 0, 0, 798, 799, 3, 82, 41, 0, 799, 800, 3, 28, 14, 0, 800, 801, 5, 74, 0, 0, 801, 802, 3, 28, 14, 0, 802, 803, 5, 27, 0, 0, 803, 804, 3, 28, 14, 0, 804, 805, 5, 266, 0, 0, 805, 852, 1, 0, 0, 0, 806, 807, 3, 82, 41, 0, 807, 808, 3, 28, 14, 0, 808, 809, 5, 74, 0, 0, 809, 810, 3, 28, 14, 0, 810, 811, 5, 27, 0, 0, 811, 812, 3, 28, 14, 0, 812, 852, 1, 0, 0, 0, 813, 814, 3, 82, 41, 0, 814, 815, 3, 28, 14, 0, 815, 816, 5, 27, 0, 0, 816, 817, 3, 28, 14, 0, 817, 818, 5, 74, 0, 0, 818, 819, 3, 28, 14, 0, 819, 820, 5, 266, 0, 0, 820, 852, 1, 0, 0, 0, 821, 822, 3, 82, 41, 0, 822, 823, 3, 28, 14, 0, 823, 824, 5, 27, 0, 0, 824, 825, 3, 28, 14, 0, 825, 826, 5, 74, 0, 0, 826, 827, 3, 28, 14, 0, 827, 852, 1, 0, 0, 0, 828, 829, 3, 82, 41, 0, 829, 830, 3, 28, 14, 0, 830, 831, 5, 27, 0, 0, 831, 832, 3, 28, 14, 0, 832, 833, 5, 74, 0, 0, 833, 834, 3, 28, 14, 0, 834, 835, 5, 27, 0, 0, 835, 836, 3, 28, 14, 0, 836, 837, 5, 266, 0, 0, 837, 852, 1, 0, 0, 0, 838, 839, 3, 82, 41, 0, 839, 840, 3, 28, 14, 0, 840, 841, 5, 27, 0, 0, 841, 842, 3, 28, 14, 0, 842, 843, 5, 74, 0, 0, 843, 844, 3, 28, 14, 0, 844, 845, 5, 27, 0, 0, 845, 846, 3, 28, 14, 0, 846, 852, 1, 0, 0, 0, 847, 848, 3, 82, 41, 0, 848, 849, 3, 28, 14, 0, 849, 850, 5, 265, 0, 0, 850, 852, 1, 0, 0, 0, 851, 780, 1, 0, 0, 0, 851, 784, 1, 0, 0, 0, 851, 787, 1, 0, 0, 0, 851, 793, 1, 0, 0, 0, 851, 798, 1, 0, 0, 0, 851, 806, 1, 0, 0, 0, 851, 813, 1, 0, 0, 0, 851, 821, 1, 0, 0, 0, 851, 828, 1, 0, 0, 0, 851, 838, 1, 0, 0, 0, 851, 847, 1, 0, 0, 0, 852, 85, 1, 0, 0, 0, 853, 857, 5, 20, 0, 0, 854, 856, 3, 88, 44, 0, 855, 854, 1, 0, 0, 0, 856, 859, 1, 0, 0, 0, 857, 855, 1, 0, 0, 0, 857, 858, 1, 0, 0, 0, 858, 860, 1, 0, 0, 0, 859, 857, 1, 0, 0, 0, 860, 861, 3, 2, 1, 0, 861, 862, 3, 90, 45, 0, 862, 863, 5, 177, 0, 0, 863, 864, 5, 35, 0, 0, 864, 865, 5, 29, 0, 0, 865, 866, 3, 304, 152, 0, 866, 867, 5, 30, 0, 0, 867, 868, 3, 90, 45, 0, 868, 880, 1, 0, 0, 0, 869, 873, 5, 20, 0, 0, 870, 872, 3, 88, 44, 0, 871, 870, 1, 0, 0, 0, 872, 875, 1, 0, 0, 0, 873, 871, 1, 0, 0, 0, 873, 874, 1, 0, 0, 0, 874, 876, 1, 0, 0, 0, 875, 873, 1, 0, 0, 0, 876, 877, 3, 2, 1, 0, 877, 878, 3, 90, 45, 0, 878, 880, 1, 0, 0, 0, 879, 853, 1, 0, 0, 0, 879, 869, 1, 0, 0, 0, 880, 87, 1, 0, 0, 0, 881, 882, 5, 75, 0, 0, 882, 89, 1, 0, 0, 0, 883, 886, 1, 0, 0, 0, 884, 886, 5, 299, 0, 0, 885, 883, 1, 0, 0, 0, 885, 884, 1, 0, 0, 0, 886, 91, 1, 0, 0, 0, 887, 888, 7, 4, 0, 0, 888, 93, 1, 0, 0, 0, 889, 891, 3, 92, 46, 0, 890, 889, 1, 0, 0, 0, 891, 894, 1, 0, 0, 0, 892, 890, 1, 0, 0, 0, 892, 893, 1, 0, 0, 0, 893, 95, 1, 0, 0, 0, 894, 892, 1, 0, 0, 0, 895, 896, 5, 277, 0, 0, 896, 97, 1, 0, 0, 0, 897, 898, 5, 278, 0, 0, 898, 99, 1, 0, 0, 0, 899, 900, 5, 279, 0, 0, 900, 101, 1, 0, 0, 0, 901, 902, 5, 280, 0, 0, 902, 103, 1, 0, 0, 0, 903, 904, 5, 281, 0, 0, 904, 105, 1, 0, 0, 0, 905, 906, 5, 284, 0, 0, 906, 107, 1, 0, 0, 0, 907, 908, 5, 282, 0, 0, 908, 109, 1, 0, 0, 0, 909, 910, 5, 288, 0, 0, 910, 111, 1, 0, 0, 0, 911, 912, 5, 286, 0, 0, 912, 113, 1, 0, 0, 0, 913, 914, 5, 287, 0, 0, 914, 115, 1, 0, 0, 0, 915, 916, 5, 283, 0, 0, 916, 117, 1, 0, 0, 0, 917, 918, 5, 289, 0, 0, 918, 119, 1, 0, 0, 0, 919, 920, 5, 285, 0, 0, 920, 121, 1, 0, 0, 0, 921, 998, 3, 96, 48, 0, 922, 923, 3, 98, 49, 0, 923, 924, 3, 28, 14, 0, 924, 998, 1, 0, 0, 0, 925, 926, 3, 98, 49, 0, 926, 927, 3, 0, 0, 0, 927, 998, 1, 0, 0, 0, 928, 929, 3, 100, 50, 0, 929, 930, 3, 28, 14, 0, 930, 998, 1, 0, 0, 0, 931, 932, 3, 102, 51, 0, 932, 933, 3, 30, 15, 0, 933, 998, 1, 0, 0, 0, 934, 935, 3, 104, 52, 0, 935, 936, 3, 32, 16, 0, 936, 998, 1, 0, 0, 0, 937, 938, 3, 104, 52, 0, 938, 939, 3, 30, 15, 0, 939, 998, 1, 0, 0, 0, 940, 941, 3, 104, 52, 0, 941, 942, 5, 29, 0, 0, 942, 943, 3, 304, 152, 0, 943, 944, 5, 30, 0, 0, 944, 998, 1, 0, 0, 0, 945, 946, 3, 104, 52, 0, 946, 947, 5, 83, 0, 0, 947, 948, 5, 29, 0, 0, 948, 949, 3, 304, 152, 0, 949, 950, 5, 30, 0, 0, 950, 998, 1, 0, 0, 0, 951, 952, 3, 106, 53, 0, 952, 953, 3, 28, 14, 0, 953, 998, 1, 0, 0, 0, 954, 955, 3, 106, 53, 0, 955, 956, 3, 0, 0, 0, 956, 998, 1, 0, 0, 0, 957, 958, 3, 108, 54, 0, 958, 959, 3, 182, 91, 0, 959, 998, 1, 0, 0, 0, 960, 961, 3, 110, 55, 0, 961, 962, 3, 192, 96, 0, 962, 998, 1, 0, 0, 0, 963, 964, 3, 110, 55, 0, 964, 965, 3, 188, 94, 0, 965, 998, 1, 0, 0, 0, 966, 967, 3, 112, 56, 0, 967, 968, 3, 142, 71, 0, 968, 998, 1, 0, 0, 0, 969, 970, 3, 114, 57, 0, 970, 971, 3, 4, 2, 0, 971, 998, 1, 0, 0, 0, 972, 973, 3, 114, 57, 0, 973, 974, 5, 223, 0, 0, 974, 975, 5, 29, 0, 0, 975, 976, 3, 4, 2, 0, 976, 977, 5, 30, 0, 0, 977, 998, 1, 0, 0, 0, 978, 979, 3, 114, 57, 0, 979, 980, 5, 83, 0, 0, 980, 981, 5, 29, 0, 0, 981, 982, 3, 304, 152, 0, 982, 983, 5, 30, 0, 0, 983, 998, 1, 0, 0, 0, 984, 985, 3, 116, 58, 0, 985, 986, 3, 184, 92, 0, 986, 987, 3, 156, 78, 0, 987, 988, 3, 130, 65, 0, 988, 998, 1, 0, 0, 0, 989, 990, 3, 118, 59, 0, 990, 991, 3, 46, 23, 0, 991, 998, 1, 0, 0, 0, 992, 993, 3, 120, 60, 0, 993, 994, 5, 29, 0, 0, 994, 995, 3, 124, 62, 0, 995, 996, 5, 30, 0, 0, 996, 998, 1, 0, 0, 0, 997, 921, 1, 0, 0, 0, 997, 922, 1, 0, 0, 0, 997, 925, 1, 0, 0, 0, 997, 928, 1, 0, 0, 0, 997, 931, 1, 0, 0, 0, 997, 934, 1, 0, 0, 0, 997, 937, 1, 0, 0, 0, 997, 940, 1, 0, 0, 0, 997, 945, 1, 0, 0, 0, 997, 951, 1, 0, 0, 0, 997, 954, 1, 0, 0, 0, 997, 957, 1, 0, 0, 0, 997, 960, 1, 0, 0, 0, 997, 963, 1, 0, 0, 0, 997, 966, 1, 0, 0, 0, 997, 969, 1, 0, 0, 0, 997, 972, 1, 0, 0, 0, 997, 978, 1, 0, 0, 0, 997, 984, 1, 0, 0, 0, 997, 989, 1, 0, 0, 0, 997, 992, 1, 0, 0, 0, 998, 123, 1, 0, 0, 0, 999, 1014, 1, 0, 0, 0, 1000, 1005, 3, 0, 0, 0, 1001, 1002, 3, 28, 14, 0, 1002, 1003, 5, 27, 0, 0, 1003, 1005, 1, 0, 0, 0, 1004, 1000, 1, 0, 0, 0, 1004, 1001, 1, 0, 0, 0, 1005, 1008, 1, 0, 0, 0, 1006, 1004, 1, 0, 0, 0, 1006, 1007, 1, 0, 0, 0, 1007, 1011, 1, 0, 0, 0, 1008, 1006, 1, 0, 0, 0, 1009, 1012, 3, 0, 0, 0, 1010, 1012, 3, 28, 14, 0, 1011, 1009, 1, 0, 0, 0, 1011, 1010, 1, 0, 0, 0, 1012, 1014, 1, 0, 0, 0, 1013, 999, 1, 0, 0, 0, 1013, 1006, 1, 0, 0, 0, 1014, 125, 1, 0, 0, 0, 1015, 1021, 5, 84, 0, 0, 1016, 1017, 3, 156, 78, 0, 1017, 1018, 5, 27, 0, 0, 1018, 1020, 1, 0, 0, 0, 1019, 1016, 1, 0, 0, 0, 1020, 1023, 1, 0, 0, 0, 1021, 1019, 1, 0, 0, 0, 1021, 1022, 1, 0, 0, 0, 1022, 1024, 1, 0, 0, 0, 1023, 1021, 1, 0, 0, 0, 1024, 1025, 3, 156, 78, 0, 1025, 1026, 5, 85, 0, 0, 1026, 127, 1, 0, 0, 0, 1027, 1033, 5, 41, 0, 0, 1028, 1029, 3, 164, 82, 0, 1029, 1030, 5, 27, 0, 0, 1030, 1032, 1, 0, 0, 0, 1031, 1028, 1, 0, 0, 0, 1032, 1035, 1, 0, 0, 0, 1033, 1031, 1, 0, 0, 0, 1033, 1034, 1, 0, 0, 0, 1034, 1036, 1, 0, 0, 0, 1035, 1033, 1, 0, 0, 0, 1036, 1037, 3, 164, 82, 0, 1037, 1038, 5, 42, 0, 0, 1038, 129, 1, 0, 0, 0, 1039, 1045, 5, 29, 0, 0, 1040, 1041, 3, 132, 66, 0, 1041, 1042, 5, 27, 0, 0, 1042, 1044, 1, 0, 0, 0, 1043, 1040, 1, 0, 0, 0, 1044, 1047, 1, 0, 0, 0, 1045, 1043, 1, 0, 0, 0, 1045, 1046, 1, 0, 0, 0, 1046, 1048, 1, 0, 0, 0, 1047, 1045, 1, 0, 0, 0, 1048, 1049, 3, 132, 66, 0, 1049, 1050, 5, 30, 0, 0, 1050, 1053, 1, 0, 0, 0, 1051, 1053, 5, 86, 0, 0, 1052, 1039, 1, 0, 0, 0, 1052, 1051, 1, 0, 0, 0, 1053, 131, 1, 0, 0, 0, 1054, 1065, 5, 174, 0, 0, 1055, 1056, 3, 244, 122, 0, 1056, 1057, 3, 156, 78, 0, 1057, 1058, 3, 240, 120, 0, 1058, 1065, 1, 0, 0, 0, 1059, 1060, 3, 244, 122, 0, 1060, 1061, 3, 156, 78, 0, 1061, 1062, 3, 240, 120, 0, 1062, 1063, 3, 0, 0, 0, 1063, 1065, 1, 0, 0, 0, 1064, 1054, 1, 0, 0, 0, 1064, 1055, 1, 0, 0, 0, 1064, 1059, 1, 0, 0, 0, 1065, 133, 1, 0, 0, 0, 1066, 1067, 5, 41, 0, 0, 1067, 1068, 3, 2, 1, 0, 1068, 1069, 5, 42, 0, 0, 1069, 1070, 3, 136, 68, 0, 1070, 1092, 1, 0, 0, 0, 1071, 1072, 5, 41, 0, 0, 1072, 1073, 3, 188, 94, 0, 1073, 1074, 5, 42, 0, 0, 1074, 1075, 3, 136, 68, 0, 1075, 1092, 1, 0, 0, 0, 1076, 1077, 5, 41, 0, 0, 1077, 1078, 5, 264, 0, 0, 1078, 1079, 5, 42, 0, 0, 1079, 1092, 3, 136, 68, 0, 1080, 1081, 5, 41, 0, 0, 1081, 1082, 5, 195, 0, 0, 1082, 1083, 3, 2, 1, 0, 1083, 1084, 5, 42, 0, 0, 1084, 1085, 3, 136, 68, 0, 1085, 1092, 1, 0, 0, 0, 1086, 1092, 3, 136, 68, 0, 1087, 1092, 3, 188, 94, 0, 1088, 1092, 5, 259, 0, 0, 1089, 1092, 5, 260, 0, 0, 1090, 1092, 5, 261, 0, 0, 1091, 1066, 1, 0, 0, 0, 1091, 1071, 1, 0, 0, 0, 1091, 1076, 1, 0, 0, 0, 1091, 1080, 1, 0, 0, 0, 1091, 1086, 1, 0, 0, 0, 1091, 1087, 1, 0, 0, 0, 1091, 1088, 1, 0, 0, 0, 1091, 1089, 1, 0, 0, 0, 1091, 1090, 1, 0, 0, 0, 1092, 135, 1, 0, 0, 0, 1093, 1094, 3, 2, 1, 0, 1094, 1095, 5, 87, 0, 0, 1095, 1097, 1, 0, 0, 0, 1096, 1093, 1, 0, 0, 0, 1097, 1100, 1, 0, 0, 0, 1098, 1096, 1, 0, 0, 0, 1098, 1099, 1, 0, 0, 0, 1099, 1101, 1, 0, 0, 0, 1100, 1098, 1, 0, 0, 0, 1101, 1102, 3, 2, 1, 0, 1102, 137, 1, 0, 0, 0, 1103, 1105, 3, 140, 70, 0, 1104, 1103, 1, 0, 0, 0, 1105, 1108, 1, 0, 0, 0, 1106, 1104, 1, 0, 0, 0, 1106, 1107, 1, 0, 0, 0, 1107, 139, 1, 0, 0, 0, 1108, 1106, 1, 0, 0, 0, 1109, 1110, 5, 177, 0, 0, 1110, 1111, 5, 88, 0, 0, 1111, 1115, 3, 28, 14, 0, 1112, 1115, 3, 166, 83, 0, 1113, 1115, 3, 336, 168, 0, 1114, 1109, 1, 0, 0, 0, 1114, 1112, 1, 0, 0, 0, 1114, 1113, 1, 0, 0, 0, 1115, 141, 1, 0, 0, 0, 1116, 1128, 3, 134, 67, 0, 1117, 1118, 5, 41, 0, 0, 1118, 1119, 3, 2, 1, 0, 1119, 1120, 5, 42, 0, 0, 1120, 1128, 1, 0, 0, 0, 1121, 1122, 5, 41, 0, 0, 1122, 1123, 5, 195, 0, 0, 1123, 1124, 3, 2, 1, 0, 1124, 1125, 5, 42, 0, 0, 1125, 1128, 1, 0, 0, 0, 1126, 1128, 3, 156, 78, 0, 1127, 1116, 1, 0, 0, 0, 1127, 1117, 1, 0, 0, 0, 1127, 1121, 1, 0, 0, 0, 1127, 1126, 1, 0, 0, 0, 1128, 143, 1, 0, 0, 0, 1129, 1138, 1, 0, 0, 0, 1130, 1134, 3, 148, 74, 0, 1131, 1133, 3, 146, 73, 0, 1132, 1131, 1, 0, 0, 0, 1133, 1136, 1, 0, 0, 0, 1134, 1132, 1, 0, 0, 0, 1134, 1135, 1, 0, 0, 0, 1135, 1138, 1, 0, 0, 0, 1136, 1134, 1, 0, 0, 0, 1137, 1129, 1, 0, 0, 0, 1137, 1130, 1, 0, 0, 0, 1138, 145, 1, 0, 0, 0, 1139, 1157, 5, 264, 0, 0, 1140, 1157, 5, 263, 0, 0, 1141, 1142, 5, 41, 0, 0, 1142, 1143, 3, 28, 14, 0, 1143, 1144, 5, 42, 0, 0, 1144, 1157, 1, 0, 0, 0, 1145, 1146, 5, 41, 0, 0, 1146, 1147, 3, 28, 14, 0, 1147, 1148, 5, 268, 0, 0, 1148, 1149, 3, 28, 14, 0, 1149, 1150, 5, 42, 0, 0, 1150, 1157, 1, 0, 0, 0, 1151, 1152, 5, 41, 0, 0, 1152, 1153, 5, 268, 0, 0, 1153, 1154, 3, 28, 14, 0, 1154, 1155, 5, 42, 0, 0, 1155, 1157, 1, 0, 0, 0, 1156, 1139, 1, 0, 0, 0, 1156, 1140, 1, 0, 0, 0, 1156, 1141, 1, 0, 0, 0, 1156, 1145, 1, 0, 0, 0, 1156, 1151, 1, 0, 0, 0, 1157, 147, 1, 0, 0, 0, 1158, 1240, 1, 0, 0, 0, 1159, 1160, 5, 200, 0, 0, 1160, 1161, 5, 29, 0, 0, 1161, 1162, 3, 4, 2, 0, 1162, 1163, 5, 27, 0, 0, 1163, 1164, 3, 4, 2, 0, 1164, 1165, 5, 27, 0, 0, 1165, 1166, 3, 4, 2, 0, 1166, 1167, 5, 27, 0, 0, 1167, 1168, 3, 4, 2, 0, 1168, 1169, 5, 30, 0, 0, 1169, 1240, 1, 0, 0, 0, 1170, 1171, 5, 200, 0, 0, 1171, 1172, 5, 29, 0, 0, 1172, 1173, 3, 4, 2, 0, 1173, 1174, 5, 27, 0, 0, 1174, 1175, 3, 4, 2, 0, 1175, 1176, 5, 30, 0, 0, 1176, 1240, 1, 0, 0, 0, 1177, 1178, 5, 201, 0, 0, 1178, 1179, 5, 202, 0, 0, 1179, 1180, 5, 41, 0, 0, 1180, 1181, 3, 28, 14, 0, 1181, 1182, 5, 42, 0, 0, 1182, 1240, 1, 0, 0, 0, 1183, 1184, 5, 201, 0, 0, 1184, 1185, 5, 203, 0, 0, 1185, 1186, 5, 41, 0, 0, 1186, 1187, 3, 28, 14, 0, 1187, 1188, 5, 42, 0, 0, 1188, 1189, 3, 144, 72, 0, 1189, 1240, 1, 0, 0, 0, 1190, 1240, 5, 204, 0, 0, 1191, 1240, 5, 205, 0, 0, 1192, 1240, 5, 206, 0, 0, 1193, 1240, 5, 198, 0, 0, 1194, 1240, 5, 180, 0, 0, 1195, 1240, 5, 181, 0, 0, 1196, 1240, 5, 182, 0, 0, 1197, 1240, 5, 183, 0, 0, 1198, 1240, 5, 184, 0, 0, 1199, 1240, 5, 185, 0, 0, 1200, 1240, 5, 186, 0, 0, 1201, 1240, 5, 207, 0, 0, 1202, 1240, 5, 187, 0, 0, 1203, 1240, 5, 188, 0, 0, 1204, 1240, 5, 189, 0, 0, 1205, 1240, 5, 190, 0, 0, 1206, 1240, 5, 208, 0, 0, 1207, 1240, 5, 209, 0, 0, 1208, 1240, 5, 210, 0, 0, 1209, 1240, 5, 211, 0, 0, 1210, 1240, 5, 212, 0, 0, 1211, 1240, 5, 213, 0, 0, 1212, 1240, 5, 214, 0, 0, 1213, 1214, 5, 215, 0, 0, 1214, 1240, 3, 150, 75, 0, 1215, 1216, 5, 216, 0, 0, 1216, 1240, 3, 150, 75, 0, 1217, 1240, 5, 217, 0, 0, 1218, 1219, 5, 218, 0, 0, 1219, 1240, 3, 150, 75, 0, 1220, 1221, 5, 219, 0, 0, 1221, 1240, 3, 152, 76, 0, 1222, 1223, 5, 219, 0, 0, 1223, 1224, 3, 152, 76, 0, 1224, 1225, 5, 27, 0, 0, 1225, 1226, 3, 4, 2, 0, 1226, 1240, 1, 0, 0, 0, 1227, 1240, 5, 191, 0, 0, 1228, 1240, 5, 192, 0, 0, 1229, 1240, 5, 220, 0, 0, 1230, 1240, 5, 222, 0, 0, 1231, 1240, 5, 224, 0, 0, 1232, 1240, 5, 225, 0, 0, 1233, 1240, 5, 221, 0, 0, 1234, 1240, 5, 226, 0, 0, 1235, 1240, 5, 228, 0, 0, 1236, 1237, 5, 33, 0, 0, 1237, 1240, 5, 227, 0, 0, 1238, 1240, 3, 2, 1, 0, 1239, 1158, 1, 0, 0, 0, 1239, 1159, 1, 0, 0, 0, 1239, 1170, 1, 0, 0, 0, 1239, 1177, 1, 0, 0, 0, 1239, 1183, 1, 0, 0, 0, 1239, 1190, 1, 0, 0, 0, 1239, 1191, 1, 0, 0, 0, 1239, 1192, 1, 0, 0, 0, 1239, 1193, 1, 0, 0, 0, 1239, 1194, 1, 0, 0, 0, 1239, 1195, 1, 0, 0, 0, 1239, 1196, 1, 0, 0, 0, 1239, 1197, 1, 0, 0, 0, 1239, 1198, 1, 0, 0, 0, 1239, 1199, 1, 0, 0, 0, 1239, 1200, 1, 0, 0, 0, 1239, 1201, 1, 0, 0, 0, 1239, 1202, 1, 0, 0, 0, 1239, 1203, 1, 0, 0, 0, 1239, 1204, 1, 0, 0, 0, 1239, 1205, 1, 0, 0, 0, 1239, 1206, 1, 0, 0, 0, 1239, 1207, 1, 0, 0, 0, 1239, 1208, 1, 0, 0, 0, 1239, 1209, 1, 0, 0, 0, 1239, 1210, 1, 0, 0, 0, 1239, 1211, 1, 0, 0, 0, 1239, 1212, 1, 0, 0, 0, 1239, 1213, 1, 0, 0, 0, 1239, 1215, 1, 0, 0, 0, 1239, 1217, 1, 0, 0, 0, 1239, 1218, 1, 0, 0, 0, 1239, 1220, 1, 0, 0, 0, 1239, 1222, 1, 0, 0, 0, 1239, 1227, 1, 0, 0, 0, 1239, 1228, 1, 0, 0, 0, 1239, 1229, 1, 0, 0, 0, 1239, 1230, 1, 0, 0, 0, 1239, 1231, 1, 0, 0, 0, 1239, 1232, 1, 0, 0, 0, 1239, 1233, 1, 0, 0, 0, 1239, 1234, 1, 0, 0, 0, 1239, 1235, 1, 0, 0, 0, 1239, 1236, 1, 0, 0, 0, 1239, 1238, 1, 0, 0, 0, 1240, 149, 1, 0, 0, 0, 1241, 1249, 1, 0, 0, 0, 1242, 1243, 5, 29, 0, 0, 1243, 1244, 5, 89, 0, 0, 1244, 1245, 5, 35, 0, 0, 1245, 1246, 3, 28, 14, 0, 1246, 1247, 5, 30, 0, 0, 1247, 1249, 1, 0, 0, 0, 1248, 1241, 1, 0, 0, 0, 1248, 1242, 1, 0, 0, 0, 1249, 151, 1, 0, 0, 0, 1250, 1259, 1, 0, 0, 0, 1251, 1255, 3, 154, 77, 0, 1252, 1254, 7, 5, 0, 0, 1253, 1252, 1, 0, 0, 0, 1254, 1257, 1, 0, 0, 0, 1255, 1253, 1, 0, 0, 0, 1255, 1256, 1, 0, 0, 0, 1256, 1259, 1, 0, 0, 0, 1257, 1255, 1, 0, 0, 0, 1258, 1250, 1, 0, 0, 0, 1258, 1251, 1, 0, 0, 0, 1259, 153, 1, 0, 0, 0, 1260, 1261, 7, 6, 0, 0, 1261, 155, 1, 0, 0, 0, 1262, 1266, 3, 160, 80, 0, 1263, 1265, 3, 158, 79, 0, 1264, 1263, 1, 0, 0, 0, 1265, 1268, 1, 0, 0, 0, 1266, 1264, 1, 0, 0, 0, 1266, 1267, 1, 0, 0, 0, 1267, 157, 1, 0, 0, 0, 1268, 1266, 1, 0, 0, 0, 1269, 1270, 5, 41, 0, 0, 1270, 1287, 5, 42, 0, 0, 1271, 1287, 3, 128, 64, 0, 1272, 1287, 5, 262, 0, 0, 1273, 1287, 5, 264, 0, 0, 1274, 1287, 5, 90, 0, 0, 1275, 1276, 5, 91, 0, 0, 1276, 1277, 5, 29, 0, 0, 1277, 1278, 3, 142, 71, 0, 1278, 1279, 5, 30, 0, 0, 1279, 1287, 1, 0, 0, 0, 1280, 1281, 5, 92, 0, 0, 1281, 1282, 5, 29, 0, 0, 1282, 1283, 3, 142, 71, 0, 1283, 1284, 5, 30, 0, 0, 1284, 1287, 1, 0, 0, 0, 1285, 1287, 3, 126, 63, 0, 1286, 1269, 1, 0, 0, 0, 1286, 1271, 1, 0, 0, 0, 1286, 1272, 1, 0, 0, 0, 1286, 1273, 1, 0, 0, 0, 1286, 1274, 1, 0, 0, 0, 1286, 1275, 1, 0, 0, 0, 1286, 1280, 1, 0, 0, 0, 1286, 1285, 1, 0, 0, 0, 1287, 159, 1, 0, 0, 0, 1288, 1289, 5, 38, 0, 0, 1289, 1319, 3, 134, 67, 0, 1290, 1319, 5, 194, 0, 0, 1291, 1292, 5, 196, 0, 0, 1292, 1293, 5, 38, 0, 0, 1293, 1319, 3, 134, 67, 0, 1294, 1295, 5, 197, 0, 0, 1295, 1319, 3, 134, 67, 0, 1296, 1297, 5, 226, 0, 0, 1297, 1298, 3, 184, 92, 0, 1298, 1299, 3, 156, 78, 0, 1299, 1300, 5, 264, 0, 0, 1300, 1301, 3, 130, 65, 0, 1301, 1319, 1, 0, 0, 0, 1302, 1303, 5, 253, 0, 0, 1303, 1319, 3, 28, 14, 0, 1304, 1305, 5, 252, 0, 0, 1305, 1319, 3, 28, 14, 0, 1306, 1307, 5, 253, 0, 0, 1307, 1319, 3, 2, 1, 0, 1308, 1309, 5, 252, 0, 0, 1309, 1319, 3, 2, 1, 0, 1310, 1319, 5, 254, 0, 0, 1311, 1319, 5, 198, 0, 0, 1312, 1319, 5, 255, 0, 0, 1313, 1319, 5, 256, 0, 0, 1314, 1319, 3, 162, 81, 0, 1315, 1319, 3, 2, 1, 0, 1316, 1317, 5, 174, 0, 0, 1317, 1319, 3, 156, 78, 0, 1318, 1288, 1, 0, 0, 0, 1318, 1290, 1, 0, 0, 0, 1318, 1291, 1, 0, 0, 0, 1318, 1294, 1, 0, 0, 0, 1318, 1296, 1, 0, 0, 0, 1318, 1302, 1, 0, 0, 0, 1318, 1304, 1, 0, 0, 0, 1318, 1306, 1, 0, 0, 0, 1318, 1308, 1, 0, 0, 0, 1318, 1310, 1, 0, 0, 0, 1318, 1311, 1, 0, 0, 0, 1318, 1312, 1, 0, 0, 0, 1318, 1313, 1, 0, 0, 0, 1318, 1314, 1, 0, 0, 0, 1318, 1315, 1, 0, 0, 0, 1318, 1316, 1, 0, 0, 0, 1319, 161, 1, 0, 0, 0, 1320, 1321, 7, 7, 0, 0, 1321, 163, 1, 0, 0, 0, 1322, 1333, 1, 0, 0, 0, 1323, 1333, 5, 174, 0, 0, 1324, 1333, 3, 28, 14, 0, 1325, 1326, 3, 28, 14, 0, 1326, 1327, 5, 174, 0, 0, 1327, 1328, 3, 28, 14, 0, 1328, 1333, 1, 0, 0, 0, 1329, 1330, 3, 28, 14, 0, 1330, 1331, 5, 174, 0, 0, 1331, 1333, 1, 0, 0, 0, 1332, 1322, 1, 0, 0, 0, 1332, 1323, 1, 0, 0, 0, 1332, 1324, 1, 0, 0, 0, 1332, 1325, 1, 0, 0, 0, 1332, 1329, 1, 0, 0, 0, 1333, 165, 1, 0, 0, 0, 1334, 1335, 5, 295, 0, 0, 1335, 1336, 3, 180, 90, 0, 1336, 1337, 3, 142, 71, 0, 1337, 1338, 5, 29, 0, 0, 1338, 1339, 3, 172, 86, 0, 1339, 1340, 5, 30, 0, 0, 1340, 1375, 1, 0, 0, 0, 1341, 1342, 5, 295, 0, 0, 1342, 1343, 3, 180, 90, 0, 1343, 1344, 3, 142, 71, 0, 1344, 1345, 5, 35, 0, 0, 1345, 1346, 5, 16, 0, 0, 1346, 1347, 3, 48, 24, 0, 1347, 1348, 5, 17, 0, 0, 1348, 1375, 1, 0, 0, 0, 1349, 1350, 5, 295, 0, 0, 1350, 1351, 3, 180, 90, 0, 1351, 1352, 3, 142, 71, 0, 1352, 1375, 1, 0, 0, 0, 1353, 1354, 5, 296, 0, 0, 1354, 1355, 3, 180, 90, 0, 1355, 1357, 5, 35, 0, 0, 1356, 1358, 5, 83, 0, 0, 1357, 1356, 1, 0, 0, 0, 1357, 1358, 1, 0, 0, 0, 1358, 1359, 1, 0, 0, 0, 1359, 1360, 5, 29, 0, 0, 1360, 1361, 3, 304, 152, 0, 1361, 1362, 5, 30, 0, 0, 1362, 1375, 1, 0, 0, 0, 1363, 1364, 5, 296, 0, 0, 1364, 1365, 3, 180, 90, 0, 1365, 1366, 3, 4, 2, 0, 1366, 1375, 1, 0, 0, 0, 1367, 1368, 5, 296, 0, 0, 1368, 1369, 3, 180, 90, 0, 1369, 1370, 5, 35, 0, 0, 1370, 1371, 5, 16, 0, 0, 1371, 1372, 3, 168, 84, 0, 1372, 1373, 5, 17, 0, 0, 1373, 1375, 1, 0, 0, 0, 1374, 1334, 1, 0, 0, 0, 1374, 1341, 1, 0, 0, 0, 1374, 1349, 1, 0, 0, 0, 1374, 1353, 1, 0, 0, 0, 1374, 1363, 1, 0, 0, 0, 1374, 1367, 1, 0, 0, 0, 1375, 167, 1, 0, 0, 0, 1376, 1387, 1, 0, 0, 0, 1377, 1378, 3, 170, 85, 0, 1378, 1379, 5, 27, 0, 0, 1379, 1381, 1, 0, 0, 0, 1380, 1377, 1, 0, 0, 0, 1381, 1384, 1, 0, 0, 0, 1382, 1380, 1, 0, 0, 0, 1382, 1383, 1, 0, 0, 0, 1383, 1385, 1, 0, 0, 0, 1384, 1382, 1, 0, 0, 0, 1385, 1387, 3, 170, 85, 0, 1386, 1376, 1, 0, 0, 0, 1386, 1382, 1, 0, 0, 0, 1387, 169, 1, 0, 0, 0, 1388, 1389, 3, 142, 71, 0, 1389, 1390, 5, 35, 0, 0, 1390, 1391, 5, 16, 0, 0, 1391, 1392, 3, 52, 26, 0, 1392, 1393, 5, 17, 0, 0, 1393, 1402, 1, 0, 0, 0, 1394, 1395, 5, 38, 0, 0, 1395, 1396, 5, 266, 0, 0, 1396, 1397, 5, 35, 0, 0, 1397, 1398, 5, 16, 0, 0, 1398, 1399, 3, 52, 26, 0, 1399, 1400, 5, 17, 0, 0, 1400, 1402, 1, 0, 0, 0, 1401, 1388, 1, 0, 0, 0, 1401, 1394, 1, 0, 0, 0, 1402, 171, 1, 0, 0, 0, 1403, 1404, 3, 174, 87, 0, 1404, 1405, 5, 27, 0, 0, 1405, 1407, 1, 0, 0, 0, 1406, 1403, 1, 0, 0, 0, 1407, 1410, 1, 0, 0, 0, 1408, 1406, 1, 0, 0, 0, 1408, 1409, 1, 0, 0, 0, 1409, 1411, 1, 0, 0, 0, 1410, 1408, 1, 0, 0, 0, 1411, 1412, 3, 174, 87, 0, 1412, 173, 1, 0, 0, 0, 1413, 1414, 3, 4, 2, 0, 1414, 1415, 5, 35, 0, 0, 1415, 1416, 3, 178, 89, 0, 1416, 175, 1, 0, 0, 0, 1417, 1418, 7, 8, 0, 0, 1418, 177, 1, 0, 0, 0, 1419, 1454, 3, 176, 88, 0, 1420, 1454, 3, 28, 14, 0, 1421, 1422, 5, 183, 0, 0, 1422, 1423, 5, 29, 0, 0, 1423, 1424, 3, 28, 14, 0, 1424, 1425, 5, 30, 0, 0, 1425, 1454, 1, 0, 0, 0, 1426, 1454, 3, 4, 2, 0, 1427, 1428, 3, 134, 67, 0, 1428, 1429, 5, 29, 0, 0, 1429, 1430, 5, 181, 0, 0, 1430, 1431, 5, 74, 0, 0, 1431, 1432, 3, 28, 14, 0, 1432, 1433, 5, 30, 0, 0, 1433, 1454, 1, 0, 0, 0, 1434, 1435, 3, 134, 67, 0, 1435, 1436, 5, 29, 0, 0, 1436, 1437, 5, 182, 0, 0, 1437, 1438, 5, 74, 0, 0, 1438, 1439, 3, 28, 14, 0, 1439, 1440, 5, 30, 0, 0, 1440, 1454, 1, 0, 0, 0, 1441, 1442, 3, 134, 67, 0, 1442, 1443, 5, 29, 0, 0, 1443, 1444, 5, 183, 0, 0, 1444, 1445, 5, 74, 0, 0, 1445, 1446, 3, 28, 14, 0, 1446, 1447, 5, 30, 0, 0, 1447, 1454, 1, 0, 0, 0, 1448, 1449, 3, 134, 67, 0, 1449, 1450, 5, 29, 0, 0, 1450, 1451, 3, 28, 14, 0, 1451, 1452, 5, 30, 0, 0, 1452, 1454, 1, 0, 0, 0, 1453, 1419, 1, 0, 0, 0, 1453, 1420, 1, 0, 0, 0, 1453, 1421, 1, 0, 0, 0, 1453, 1426, 1, 0, 0, 0, 1453, 1427, 1, 0, 0, 0, 1453, 1434, 1, 0, 0, 0, 1453, 1441, 1, 0, 0, 0, 1453, 1448, 1, 0, 0, 0, 1454, 179, 1, 0, 0, 0, 1455, 1456, 7, 9, 0, 0, 1456, 181, 1, 0, 0, 0, 1457, 1458, 3, 184, 92, 0, 1458, 1459, 3, 156, 78, 0, 1459, 1460, 3, 142, 71, 0, 1460, 1461, 5, 173, 0, 0, 1461, 1463, 3, 256, 128, 0, 1462, 1464, 3, 126, 63, 0, 1463, 1462, 1, 0, 0, 0, 1463, 1464, 1, 0, 0, 0, 1464, 1465, 1, 0, 0, 0, 1465, 1466, 3, 130, 65, 0, 1466, 1492, 1, 0, 0, 0, 1467, 1468, 3, 184, 92, 0, 1468, 1469, 3, 156, 78, 0, 1469, 1470, 3, 142, 71, 0, 1470, 1471, 5, 173, 0, 0, 1471, 1472, 3, 256, 128, 0, 1472, 1473, 3, 210, 105, 0, 1473, 1474, 3, 130, 65, 0, 1474, 1492, 1, 0, 0, 0, 1475, 1476, 3, 184, 92, 0, 1476, 1477, 3, 156, 78, 0, 1477, 1479, 3, 256, 128, 0, 1478, 1480, 3, 126, 63, 0, 1479, 1478, 1, 0, 0, 0, 1479, 1480, 1, 0, 0, 0, 1480, 1481, 1, 0, 0, 0, 1481, 1482, 3, 130, 65, 0, 1482, 1492, 1, 0, 0, 0, 1483, 1484, 3, 184, 92, 0, 1484, 1485, 3, 156, 78, 0, 1485, 1486, 3, 256, 128, 0, 1486, 1487, 3, 210, 105, 0, 1487, 1488, 3, 130, 65, 0, 1488, 1492, 1, 0, 0, 0, 1489, 1492, 3, 188, 94, 0, 1490, 1492, 3, 2, 1, 0, 1491, 1457, 1, 0, 0, 0, 1491, 1467, 1, 0, 0, 0, 1491, 1475, 1, 0, 0, 0, 1491, 1483, 1, 0, 0, 0, 1491, 1489, 1, 0, 0, 0, 1491, 1490, 1, 0, 0, 0, 1492, 183, 1, 0, 0, 0, 1493, 1494, 5, 243, 0, 0, 1494, 1504, 3, 184, 92, 0, 1495, 1496, 5, 244, 0, 0, 1496, 1504, 3, 184, 92, 0, 1497, 1504, 3, 186, 93, 0, 1498, 1499, 5, 110, 0, 0, 1499, 1500, 5, 29, 0, 0, 1500, 1501, 3, 28, 14, 0, 1501, 1502, 5, 30, 0, 0, 1502, 1504, 1, 0, 0, 0, 1503, 1493, 1, 0, 0, 0, 1503, 1495, 1, 0, 0, 0, 1503, 1497, 1, 0, 0, 0, 1503, 1498, 1, 0, 0, 0, 1504, 185, 1, 0, 0, 0, 1505, 1518, 1, 0, 0, 0, 1506, 1518, 5, 245, 0, 0, 1507, 1518, 5, 246, 0, 0, 1508, 1509, 5, 247, 0, 0, 1509, 1518, 5, 248, 0, 0, 1510, 1511, 5, 247, 0, 0, 1511, 1518, 5, 249, 0, 0, 1512, 1513, 5, 247, 0, 0, 1513, 1518, 5, 250, 0, 0, 1514, 1515, 5, 247, 0, 0, 1515, 1518, 5, 251, 0, 0, 1516, 1518, 5, 247, 0, 0, 1517, 1505, 1, 0, 0, 0, 1517, 1506, 1, 0, 0, 0, 1517, 1507, 1, 0, 0, 0, 1517, 1508, 1, 0, 0, 0, 1517, 1510, 1, 0, 0, 0, 1517, 1512, 1, 0, 0, 0, 1517, 1514, 1, 0, 0, 0, 1517, 1516, 1, 0, 0, 0, 1518, 187, 1, 0, 0, 0, 1519, 1520, 5, 111, 0, 0, 1520, 1521, 5, 29, 0, 0, 1521, 1522, 3, 28, 14, 0, 1522, 1523, 5, 30, 0, 0, 1523, 189, 1, 0, 0, 0, 1524, 1525, 5, 226, 0, 0, 1525, 1530, 3, 182, 91, 0, 1526, 1527, 5, 36, 0, 0, 1527, 1530, 3, 192, 96, 0, 1528, 1530, 3, 188, 94, 0, 1529, 1524, 1, 0, 0, 0, 1529, 1526, 1, 0, 0, 0, 1529, 1528, 1, 0, 0, 0, 1530, 191, 1, 0, 0, 0, 1531, 1532, 3, 156, 78, 0, 1532, 1533, 3, 142, 71, 0, 1533, 1534, 5, 173, 0, 0, 1534, 1535, 3, 2, 1, 0, 1535, 1541, 1, 0, 0, 0, 1536, 1537, 3, 156, 78, 0, 1537, 1538, 3, 2, 1, 0, 1538, 1541, 1, 0, 0, 0, 1539, 1541, 3, 2, 1, 0, 1540, 1531, 1, 0, 0, 0, 1540, 1536, 1, 0, 0, 0, 1540, 1539, 1, 0, 0, 0, 1541, 193, 1, 0, 0, 0, 1542, 1543, 3, 142, 71, 0, 1543, 1544, 5, 27, 0, 0, 1544, 1546, 1, 0, 0, 0, 1545, 1542, 1, 0, 0, 0, 1546, 1549, 1, 0, 0, 0, 1547, 1545, 1, 0, 0, 0, 1547, 1548, 1, 0, 0, 0, 1548, 1550, 1, 0, 0, 0, 1549, 1547, 1, 0, 0, 0, 1550, 1551, 3, 142, 71, 0, 1551, 195, 1, 0, 0, 0, 1552, 1558, 1, 0, 0, 0, 1553, 1554, 5, 84, 0, 0, 1554, 1555, 3, 204, 102, 0, 1555, 1556, 5, 85, 0, 0, 1556, 1558, 1, 0, 0, 0, 1557, 1552, 1, 0, 0, 0, 1557, 1553, 1, 0, 0, 0, 1558, 197, 1, 0, 0, 0, 1559, 1571, 5, 268, 0, 0, 1560, 1571, 5, 112, 0, 0, 1561, 1571, 5, 38, 0, 0, 1562, 1571, 5, 197, 0, 0, 1563, 1571, 5, 113, 0, 0, 1564, 1571, 5, 114, 0, 0, 1565, 1566, 5, 69, 0, 0, 1566, 1567, 5, 29, 0, 0, 1567, 1568, 3, 28, 14, 0, 1568, 1569, 5, 30, 0, 0, 1569, 1571, 1, 0, 0, 0, 1570, 1559, 1, 0, 0, 0, 1570, 1560, 1, 0, 0, 0, 1570, 1561, 1, 0, 0, 0, 1570, 1562, 1, 0, 0, 0, 1570, 1563, 1, 0, 0, 0, 1570, 1564, 1, 0, 0, 0, 1570, 1565, 1, 0, 0, 0, 1571, 199, 1, 0, 0, 0, 1572, 1574, 3, 198, 99, 0, 1573, 1572, 1, 0, 0, 0, 1574, 1577, 1, 0, 0, 0, 1575, 1573, 1, 0, 0, 0, 1575, 1576, 1, 0, 0, 0, 1576, 201, 1, 0, 0, 0, 1577, 1575, 1, 0, 0, 0, 1578, 1580, 3, 200, 100, 0, 1579, 1581, 3, 206, 103, 0, 1580, 1579, 1, 0, 0, 0, 1580, 1581, 1, 0, 0, 0, 1581, 1582, 1, 0, 0, 0, 1582, 1583, 3, 2, 1, 0, 1583, 203, 1, 0, 0, 0, 1584, 1585, 3, 202, 101, 0, 1585, 1586, 5, 27, 0, 0, 1586, 1588, 1, 0, 0, 0, 1587, 1584, 1, 0, 0, 0, 1588, 1591, 1, 0, 0, 0, 1589, 1587, 1, 0, 0, 0, 1589, 1590, 1, 0, 0, 0, 1590, 1592, 1, 0, 0, 0, 1591, 1589, 1, 0, 0, 0, 1592, 1593, 3, 202, 101, 0, 1593, 205, 1, 0, 0, 0, 1594, 1595, 5, 29, 0, 0, 1595, 1596, 3, 194, 97, 0, 1596, 1597, 5, 30, 0, 0, 1597, 207, 1, 0, 0, 0, 1598, 1601, 1, 0, 0, 0, 1599, 1601, 3, 210, 105, 0, 1600, 1598, 1, 0, 0, 0, 1600, 1599, 1, 0, 0, 0, 1601, 209, 1, 0, 0, 0, 1602, 1603, 5, 84, 0, 0, 1603, 1604, 5, 41, 0, 0, 1604, 1605, 3, 28, 14, 0, 1605, 1606, 5, 42, 0, 0, 1606, 1607, 5, 85, 0, 0, 1607, 211, 1, 0, 0, 0, 1608, 1609, 3, 248, 124, 0, 1609, 1610, 5, 16, 0, 0, 1610, 1611, 3, 260, 130, 0, 1611, 1612, 5, 17, 0, 0, 1612, 1725, 1, 0, 0, 0, 1613, 1614, 3, 70, 35, 0, 1614, 1615, 5, 16, 0, 0, 1615, 1616, 3, 78, 39, 0, 1616, 1617, 5, 17, 0, 0, 1617, 1725, 1, 0, 0, 0, 1618, 1619, 3, 224, 112, 0, 1619, 1620, 5, 16, 0, 0, 1620, 1621, 3, 228, 114, 0, 1621, 1622, 5, 17, 0, 0, 1622, 1725, 1, 0, 0, 0, 1623, 1624, 3, 232, 116, 0, 1624, 1625, 5, 16, 0, 0, 1625, 1626, 3, 236, 118, 0, 1626, 1627, 5, 17, 0, 0, 1627, 1725, 1, 0, 0, 0, 1628, 1725, 3, 214, 107, 0, 1629, 1725, 3, 288, 144, 0, 1630, 1725, 3, 166, 83, 0, 1631, 1725, 3, 84, 42, 0, 1632, 1725, 3, 334, 167, 0, 1633, 1634, 5, 115, 0, 0, 1634, 1725, 3, 28, 14, 0, 1635, 1636, 5, 116, 0, 0, 1636, 1725, 3, 28, 14, 0, 1637, 1638, 3, 346, 173, 0, 1638, 1639, 5, 16, 0, 0, 1639, 1640, 3, 350, 175, 0, 1640, 1641, 5, 17, 0, 0, 1641, 1725, 1, 0, 0, 0, 1642, 1643, 5, 303, 0, 0, 1643, 1644, 3, 142, 71, 0, 1644, 1645, 5, 173, 0, 0, 1645, 1646, 3, 256, 128, 0, 1646, 1647, 5, 117, 0, 0, 1647, 1648, 3, 184, 92, 0, 1648, 1649, 3, 156, 78, 0, 1649, 1650, 3, 142, 71, 0, 1650, 1651, 5, 173, 0, 0, 1651, 1652, 3, 256, 128, 0, 1652, 1653, 3, 130, 65, 0, 1653, 1725, 1, 0, 0, 0, 1654, 1655, 5, 303, 0, 0, 1655, 1656, 5, 226, 0, 0, 1656, 1657, 3, 184, 92, 0, 1657, 1658, 3, 156, 78, 0, 1658, 1659, 3, 142, 71, 0, 1659, 1660, 5, 173, 0, 0, 1660, 1661, 3, 256, 128, 0, 1661, 1662, 3, 208, 104, 0, 1662, 1663, 3, 130, 65, 0, 1663, 1664, 5, 117, 0, 0, 1664, 1665, 5, 226, 0, 0, 1665, 1666, 3, 184, 92, 0, 1666, 1667, 3, 156, 78, 0, 1667, 1668, 3, 142, 71, 0, 1668, 1669, 5, 173, 0, 0, 1669, 1670, 3, 256, 128, 0, 1670, 1671, 3, 208, 104, 0, 1671, 1672, 3, 130, 65, 0, 1672, 1725, 1, 0, 0, 0, 1673, 1725, 3, 24, 12, 0, 1674, 1725, 3, 36, 18, 0, 1675, 1676, 5, 257, 0, 0, 1676, 1677, 5, 193, 0, 0, 1677, 1678, 5, 41, 0, 0, 1678, 1679, 3, 28, 14, 0, 1679, 1683, 5, 42, 0, 0, 1680, 1682, 3, 334, 167, 0, 1681, 1680, 1, 0, 0, 0, 1682, 1685, 1, 0, 0, 0, 1683, 1681, 1, 0, 0, 0, 1683, 1684, 1, 0, 0, 0, 1684, 1725, 1, 0, 0, 0, 1685, 1683, 1, 0, 0, 0, 1686, 1687, 5, 257, 0, 0, 1687, 1688, 5, 193, 0, 0, 1688, 1692, 3, 2, 1, 0, 1689, 1691, 3, 334, 167, 0, 1690, 1689, 1, 0, 0, 0, 1691, 1694, 1, 0, 0, 0, 1692, 1690, 1, 0, 0, 0, 1692, 1693, 1, 0, 0, 0, 1693, 1725, 1, 0, 0, 0, 1694, 1692, 1, 0, 0, 0, 1695, 1696, 5, 257, 0, 0, 1696, 1697, 5, 258, 0, 0, 1697, 1698, 5, 41, 0, 0, 1698, 1699, 3, 28, 14, 0, 1699, 1700, 5, 42, 0, 0, 1700, 1701, 5, 27, 0, 0, 1701, 1705, 3, 142, 71, 0, 1702, 1704, 3, 334, 167, 0, 1703, 1702, 1, 0, 0, 0, 1704, 1707, 1, 0, 0, 0, 1705, 1703, 1, 0, 0, 0, 1705, 1706, 1, 0, 0, 0, 1706, 1725, 1, 0, 0, 0, 1707, 1705, 1, 0, 0, 0, 1708, 1709, 5, 257, 0, 0, 1709, 1710, 5, 258, 0, 0, 1710, 1711, 3, 2, 1, 0, 1711, 1712, 5, 27, 0, 0, 1712, 1716, 3, 142, 71, 0, 1713, 1715, 3, 334, 167, 0, 1714, 1713, 1, 0, 0, 0, 1715, 1718, 1, 0, 0, 0, 1716, 1714, 1, 0, 0, 0, 1716, 1717, 1, 0, 0, 0, 1717, 1725, 1, 0, 0, 0, 1718, 1716, 1, 0, 0, 0, 1719, 1720, 5, 118, 0, 0, 1720, 1721, 5, 193, 0, 0, 1721, 1722, 3, 142, 71, 0, 1722, 1723, 3, 40, 20, 0, 1723, 1725, 1, 0, 0, 0, 1724, 1608, 1, 0, 0, 0, 1724, 1613, 1, 0, 0, 0, 1724, 1618, 1, 0, 0, 0, 1724, 1623, 1, 0, 0, 0, 1724, 1628, 1, 0, 0, 0, 1724, 1629, 1, 0, 0, 0, 1724, 1630, 1, 0, 0, 0, 1724, 1631, 1, 0, 0, 0, 1724, 1632, 1, 0, 0, 0, 1724, 1633, 1, 0, 0, 0, 1724, 1635, 1, 0, 0, 0, 1724, 1637, 1, 0, 0, 0, 1724, 1642, 1, 0, 0, 0, 1724, 1654, 1, 0, 0, 0, 1724, 1673, 1, 0, 0, 0, 1724, 1674, 1, 0, 0, 0, 1724, 1675, 1, 0, 0, 0, 1724, 1686, 1, 0, 0, 0, 1724, 1695, 1, 0, 0, 0, 1724, 1708, 1, 0, 0, 0, 1724, 1719, 1, 0, 0, 0, 1725, 213, 1, 0, 0, 0, 1726, 1727, 5, 119, 0, 0, 1727, 1736, 3, 222, 111, 0, 1728, 1735, 3, 216, 108, 0, 1729, 1730, 5, 120, 0, 0, 1730, 1731, 5, 29, 0, 0, 1731, 1732, 3, 242, 121, 0, 1732, 1733, 5, 30, 0, 0, 1733, 1735, 1, 0, 0, 0, 1734, 1728, 1, 0, 0, 0, 1734, 1729, 1, 0, 0, 0, 1735, 1738, 1, 0, 0, 0, 1736, 1734, 1, 0, 0, 0, 1736, 1737, 1, 0, 0, 0, 1737, 1739, 1, 0, 0, 0, 1738, 1736, 1, 0, 0, 0, 1739, 1740, 3, 156, 78, 0, 1740, 1741, 3, 2, 1, 0, 1741, 1742, 3, 218, 109, 0, 1742, 1743, 3, 220, 110, 0, 1743, 215, 1, 0, 0, 0, 1744, 1763, 5, 121, 0, 0, 1745, 1763, 5, 50, 0, 0, 1746, 1763, 5, 51, 0, 0, 1747, 1763, 5, 62, 0, 0, 1748, 1763, 5, 122, 0, 0, 1749, 1763, 5, 68, 0, 0, 1750, 1763, 5, 67, 0, 0, 1751, 1763, 5, 63, 0, 0, 1752, 1763, 5, 64, 0, 0, 1753, 1763, 5, 65, 0, 0, 1754, 1763, 5, 123, 0, 0, 1755, 1763, 5, 124, 0, 0, 1756, 1763, 5, 125, 0, 0, 1757, 1758, 5, 69, 0, 0, 1758, 1759, 5, 29, 0, 0, 1759, 1760, 3, 28, 14, 0, 1760, 1761, 5, 30, 0, 0, 1761, 1763, 1, 0, 0, 0, 1762, 1744, 1, 0, 0, 0, 1762, 1745, 1, 0, 0, 0, 1762, 1746, 1, 0, 0, 0, 1762, 1747, 1, 0, 0, 0, 1762, 1748, 1, 0, 0, 0, 1762, 1749, 1, 0, 0, 0, 1762, 1750, 1, 0, 0, 0, 1762, 1751, 1, 0, 0, 0, 1762, 1752, 1, 0, 0, 0, 1762, 1753, 1, 0, 0, 0, 1762, 1754, 1, 0, 0, 0, 1762, 1755, 1, 0, 0, 0, 1762, 1756, 1, 0, 0, 0, 1762, 1757, 1, 0, 0, 0, 1763, 217, 1, 0, 0, 0, 1764, 1768, 1, 0, 0, 0, 1765, 1766, 5, 43, 0, 0, 1766, 1768, 3, 0, 0, 0, 1767, 1764, 1, 0, 0, 0, 1767, 1765, 1, 0, 0, 0, 1768, 219, 1, 0, 0, 0, 1769, 1773, 1, 0, 0, 0, 1770, 1771, 5, 35, 0, 0, 1771, 1773, 3, 308, 154, 0, 1772, 1769, 1, 0, 0, 0, 1772, 1770, 1, 0, 0, 0, 1773, 221, 1, 0, 0, 0, 1774, 1780, 1, 0, 0, 0, 1775, 1776, 5, 41, 0, 0, 1776, 1777, 3, 28, 14, 0, 1777, 1778, 5, 42, 0, 0, 1778, 1780, 1, 0, 0, 0, 1779, 1774, 1, 0, 0, 0, 1779, 1775, 1, 0, 0, 0, 1780, 223, 1, 0, 0, 0, 1781, 1785, 5, 126, 0, 0, 1782, 1784, 3, 226, 113, 0, 1783, 1782, 1, 0, 0, 0, 1784, 1787, 1, 0, 0, 0, 1785, 1783, 1, 0, 0, 0, 1785, 1786, 1, 0, 0, 0, 1786, 1788, 1, 0, 0, 0, 1787, 1785, 1, 0, 0, 0, 1788, 1789, 3, 142, 71, 0, 1789, 1790, 3, 2, 1, 0, 1790, 1800, 1, 0, 0, 0, 1791, 1795, 5, 126, 0, 0, 1792, 1794, 3, 226, 113, 0, 1793, 1792, 1, 0, 0, 0, 1794, 1797, 1, 0, 0, 0, 1795, 1793, 1, 0, 0, 0, 1795, 1796, 1, 0, 0, 0, 1796, 1798, 1, 0, 0, 0, 1797, 1795, 1, 0, 0, 0, 1798, 1800, 3, 2, 1, 0, 1799, 1781, 1, 0, 0, 0, 1799, 1791, 1, 0, 0, 0, 1800, 225, 1, 0, 0, 0, 1801, 1802, 7, 10, 0, 0, 1802, 227, 1, 0, 0, 0, 1803, 1805, 3, 230, 115, 0, 1804, 1803, 1, 0, 0, 0, 1805, 1808, 1, 0, 0, 0, 1806, 1804, 1, 0, 0, 0, 1806, 1807, 1, 0, 0, 0, 1807, 229, 1, 0, 0, 0, 1808, 1806, 1, 0, 0, 0, 1809, 1810, 5, 127, 0, 0, 1810, 1822, 3, 182, 91, 0, 1811, 1812, 5, 128, 0, 0, 1812, 1822, 3, 182, 91, 0, 1813, 1814, 5, 129, 0, 0, 1814, 1822, 3, 182, 91, 0, 1815, 1816, 5, 130, 0, 0, 1816, 1822, 3, 182, 91, 0, 1817, 1822, 3, 84, 42, 0, 1818, 1822, 3, 334, 167, 0, 1819, 1822, 3, 24, 12, 0, 1820, 1822, 3, 36, 18, 0, 1821, 1809, 1, 0, 0, 0, 1821, 1811, 1, 0, 0, 0, 1821, 1813, 1, 0, 0, 0, 1821, 1815, 1, 0, 0, 0, 1821, 1817, 1, 0, 0, 0, 1821, 1818, 1, 0, 0, 0, 1821, 1819, 1, 0, 0, 0, 1821, 1820, 1, 0, 0, 0, 1822, 231, 1, 0, 0, 0, 1823, 1827, 5, 131, 0, 0, 1824, 1826, 3, 234, 117, 0, 1825, 1824, 1, 0, 0, 0, 1826, 1829, 1, 0, 0, 0, 1827, 1825, 1, 0, 0, 0, 1827, 1828, 1, 0, 0, 0, 1828, 1830, 1, 0, 0, 0, 1829, 1827, 1, 0, 0, 0, 1830, 1831, 3, 184, 92, 0, 1831, 1832, 3, 156, 78, 0, 1832, 1833, 3, 2, 1, 0, 1833, 1834, 3, 130, 65, 0, 1834, 1835, 3, 220, 110, 0, 1835, 233, 1, 0, 0, 0, 1836, 1837, 7, 10, 0, 0, 1837, 235, 1, 0, 0, 0, 1838, 1840, 3, 238, 119, 0, 1839, 1838, 1, 0, 0, 0, 1840, 1843, 1, 0, 0, 0, 1841, 1839, 1, 0, 0, 0, 1841, 1842, 1, 0, 0, 0, 1842, 237, 1, 0, 0, 0, 1843, 1841, 1, 0, 0, 0, 1844, 1845, 5, 132, 0, 0, 1845, 1855, 3, 182, 91, 0, 1846, 1847, 5, 133, 0, 0, 1847, 1855, 3, 182, 91, 0, 1848, 1849, 5, 130, 0, 0, 1849, 1855, 3, 182, 91, 0, 1850, 1855, 3, 334, 167, 0, 1851, 1855, 3, 84, 42, 0, 1852, 1855, 3, 24, 12, 0, 1853, 1855, 3, 36, 18, 0, 1854, 1844, 1, 0, 0, 0, 1854, 1846, 1, 0, 0, 0, 1854, 1848, 1, 0, 0, 0, 1854, 1850, 1, 0, 0, 0, 1854, 1851, 1, 0, 0, 0, 1854, 1852, 1, 0, 0, 0, 1854, 1853, 1, 0, 0, 0, 1855, 239, 1, 0, 0, 0, 1856, 1863, 1, 0, 0, 0, 1857, 1858, 5, 120, 0, 0, 1858, 1859, 5, 29, 0, 0, 1859, 1860, 3, 242, 121, 0, 1860, 1861, 5, 30, 0, 0, 1861, 1863, 1, 0, 0, 0, 1862, 1856, 1, 0, 0, 0, 1862, 1857, 1, 0, 0, 0, 1863, 241, 1, 0, 0, 0, 1864, 1870, 3, 144, 72, 0, 1865, 1866, 5, 16, 0, 0, 1866, 1867, 3, 306, 153, 0, 1867, 1868, 5, 17, 0, 0, 1868, 1870, 1, 0, 0, 0, 1869, 1864, 1, 0, 0, 0, 1869, 1865, 1, 0, 0, 0, 1870, 243, 1, 0, 0, 0, 1871, 1873, 3, 246, 123, 0, 1872, 1871, 1, 0, 0, 0, 1873, 1876, 1, 0, 0, 0, 1874, 1872, 1, 0, 0, 0, 1874, 1875, 1, 0, 0, 0, 1875, 245, 1, 0, 0, 0, 1876, 1874, 1, 0, 0, 0, 1877, 1878, 5, 41, 0, 0, 1878, 1879, 5, 134, 0, 0, 1879, 1891, 5, 42, 0, 0, 1880, 1881, 5, 41, 0, 0, 1881, 1882, 5, 135, 0, 0, 1882, 1891, 5, 42, 0, 0, 1883, 1884, 5, 41, 0, 0, 1884, 1885, 5, 136, 0, 0, 1885, 1891, 5, 42, 0, 0, 1886, 1887, 5, 41, 0, 0, 1887, 1888, 3, 28, 14, 0, 1888, 1889, 5, 42, 0, 0, 1889, 1891, 1, 0, 0, 0, 1890, 1877, 1, 0, 0, 0, 1890, 1880, 1, 0, 0, 0, 1890, 1883, 1, 0, 0, 0, 1890, 1886, 1, 0, 0, 0, 1891, 247, 1, 0, 0, 0, 1892, 1897, 5, 137, 0, 0, 1893, 1896, 3, 250, 125, 0, 1894, 1896, 3, 252, 126, 0, 1895, 1893, 1, 0, 0, 0, 1895, 1894, 1, 0, 0, 0, 1896, 1899, 1, 0, 0, 0, 1897, 1895, 1, 0, 0, 0, 1897, 1898, 1, 0, 0, 0, 1898, 1900, 1, 0, 0, 0, 1899, 1897, 1, 0, 0, 0, 1900, 1901, 3, 184, 92, 0, 1901, 1902, 3, 244, 122, 0, 1902, 1903, 3, 156, 78, 0, 1903, 1904, 3, 240, 120, 0, 1904, 1905, 3, 256, 128, 0, 1905, 1906, 3, 196, 98, 0, 1906, 1910, 3, 130, 65, 0, 1907, 1909, 3, 258, 129, 0, 1908, 1907, 1, 0, 0, 0, 1909, 1912, 1, 0, 0, 0, 1910, 1908, 1, 0, 0, 0, 1910, 1911, 1, 0, 0, 0, 1911, 249, 1, 0, 0, 0, 1912, 1910, 1, 0, 0, 0, 1913, 1937, 5, 121, 0, 0, 1914, 1937, 5, 50, 0, 0, 1915, 1937, 5, 51, 0, 0, 1916, 1937, 5, 62, 0, 0, 1917, 1937, 5, 138, 0, 0, 1918, 1937, 5, 67, 0, 0, 1919, 1937, 5, 139, 0, 0, 1920, 1937, 5, 140, 0, 0, 1921, 1937, 5, 53, 0, 0, 1922, 1937, 5, 63, 0, 0, 1923, 1937, 5, 64, 0, 0, 1924, 1937, 5, 65, 0, 0, 1925, 1937, 5, 123, 0, 0, 1926, 1937, 5, 141, 0, 0, 1927, 1937, 5, 142, 0, 0, 1928, 1937, 5, 68, 0, 0, 1929, 1937, 5, 143, 0, 0, 1930, 1937, 5, 144, 0, 0, 1931, 1932, 5, 69, 0, 0, 1932, 1933, 5, 29, 0, 0, 1933, 1934, 3, 28, 14, 0, 1934, 1935, 5, 30, 0, 0, 1935, 1937, 1, 0, 0, 0, 1936, 1913, 1, 0, 0, 0, 1936, 1914, 1, 0, 0, 0, 1936, 1915, 1, 0, 0, 0, 1936, 1916, 1, 0, 0, 0, 1936, 1917, 1, 0, 0, 0, 1936, 1918, 1, 0, 0, 0, 1936, 1919, 1, 0, 0, 0, 1936, 1920, 1, 0, 0, 0, 1936, 1921, 1, 0, 0, 0, 1936, 1922, 1, 0, 0, 0, 1936, 1923, 1, 0, 0, 0, 1936, 1924, 1, 0, 0, 0, 1936, 1925, 1, 0, 0, 0, 1936, 1926, 1, 0, 0, 0, 1936, 1927, 1, 0, 0, 0, 1936, 1928, 1, 0, 0, 0, 1936, 1929, 1, 0, 0, 0, 1936, 1930, 1, 0, 0, 0, 1936, 1931, 1, 0, 0, 0, 1937, 251, 1, 0, 0, 0, 1938, 1939, 5, 145, 0, 0, 1939, 1945, 5, 29, 0, 0, 1940, 1943, 3, 4, 2, 0, 1941, 1942, 5, 33, 0, 0, 1942, 1944, 3, 4, 2, 0, 1943, 1941, 1, 0, 0, 0, 1943, 1944, 1, 0, 0, 0, 1944, 1946, 1, 0, 0, 0, 1945, 1940, 1, 0, 0, 0, 1945, 1946, 1, 0, 0, 0, 1946, 1950, 1, 0, 0, 0, 1947, 1949, 3, 254, 127, 0, 1948, 1947, 1, 0, 0, 0, 1949, 1952, 1, 0, 0, 0, 1950, 1948, 1, 0, 0, 0, 1950, 1951, 1, 0, 0, 0, 1951, 1953, 1, 0, 0, 0, 1952, 1950, 1, 0, 0, 0, 1953, 1954, 5, 30, 0, 0, 1954, 253, 1, 0, 0, 0, 1955, 1983, 5, 146, 0, 0, 1956, 1983, 5, 223, 0, 0, 1957, 1983, 5, 56, 0, 0, 1958, 1983, 5, 57, 0, 0, 1959, 1983, 5, 147, 0, 0, 1960, 1983, 5, 148, 0, 0, 1961, 1983, 5, 248, 0, 0, 1962, 1983, 5, 249, 0, 0, 1963, 1983, 5, 250, 0, 0, 1964, 1983, 5, 251, 0, 0, 1965, 1966, 5, 149, 0, 0, 1966, 1967, 5, 74, 0, 0, 1967, 1983, 5, 150, 0, 0, 1968, 1969, 5, 149, 0, 0, 1969, 1970, 5, 74, 0, 0, 1970, 1983, 5, 151, 0, 0, 1971, 1972, 5, 152, 0, 0, 1972, 1973, 5, 74, 0, 0, 1973, 1983, 5, 150, 0, 0, 1974, 1975, 5, 152, 0, 0, 1975, 1976, 5, 74, 0, 0, 1976, 1983, 5, 151, 0, 0, 1977, 1978, 5, 69, 0, 0, 1978, 1979, 5, 29, 0, 0, 1979, 1980, 3, 28, 14, 0, 1980, 1981, 5, 30, 0, 0, 1981, 1983, 1, 0, 0, 0, 1982, 1955, 1, 0, 0, 0, 1982, 1956, 1, 0, 0, 0, 1982, 1957, 1, 0, 0, 0, 1982, 1958, 1, 0, 0, 0, 1982, 1959, 1, 0, 0, 0, 1982, 1960, 1, 0, 0, 0, 1982, 1961, 1, 0, 0, 0, 1982, 1962, 1, 0, 0, 0, 1982, 1963, 1, 0, 0, 0, 1982, 1964, 1, 0, 0, 0, 1982, 1965, 1, 0, 0, 0, 1982, 1968, 1, 0, 0, 0, 1982, 1971, 1, 0, 0, 0, 1982, 1974, 1, 0, 0, 0, 1982, 1977, 1, 0, 0, 0, 1983, 255, 1, 0, 0, 0, 1984, 1988, 5, 114, 0, 0, 1985, 1988, 5, 153, 0, 0, 1986, 1988, 3, 2, 1, 0, 1987, 1984, 1, 0, 0, 0, 1987, 1985, 1, 0, 0, 0, 1987, 1986, 1, 0, 0, 0, 1988, 257, 1, 0, 0, 0, 1989, 2010, 5, 1, 0, 0, 1990, 2010, 5, 2, 0, 0, 1991, 2010, 5, 3, 0, 0, 1992, 2010, 5, 4, 0, 0, 1993, 2010, 5, 247, 0, 0, 1994, 2010, 5, 5, 0, 0, 1995, 2010, 5, 6, 0, 0, 1996, 2010, 5, 7, 0, 0, 1997, 2010, 5, 8, 0, 0, 1998, 2010, 5, 9, 0, 0, 1999, 2010, 5, 10, 0, 0, 2000, 2010, 5, 11, 0, 0, 2001, 2010, 5, 12, 0, 0, 2002, 2010, 5, 13, 0, 0, 2003, 2010, 5, 14, 0, 0, 2004, 2005, 5, 69, 0, 0, 2005, 2006, 5, 29, 0, 0, 2006, 2007, 3, 28, 14, 0, 2007, 2008, 5, 30, 0, 0, 2008, 2010, 1, 0, 0, 0, 2009, 1989, 1, 0, 0, 0, 2009, 1990, 1, 0, 0, 0, 2009, 1991, 1, 0, 0, 0, 2009, 1992, 1, 0, 0, 0, 2009, 1993, 1, 0, 0, 0, 2009, 1994, 1, 0, 0, 0, 2009, 1995, 1, 0, 0, 0, 2009, 1996, 1, 0, 0, 0, 2009, 1997, 1, 0, 0, 0, 2009, 1998, 1, 0, 0, 0, 2009, 1999, 1, 0, 0, 0, 2009, 2000, 1, 0, 0, 0, 2009, 2001, 1, 0, 0, 0, 2009, 2002, 1, 0, 0, 0, 2009, 2003, 1, 0, 0, 0, 2009, 2004, 1, 0, 0, 0, 2010, 259, 1, 0, 0, 0, 2011, 2013, 3, 262, 131, 0, 2012, 2011, 1, 0, 0, 0, 2013, 2016, 1, 0, 0, 0, 2014, 2012, 1, 0, 0, 0, 2014, 2015, 1, 0, 0, 0, 2015, 261, 1, 0, 0, 0, 2016, 2014, 1, 0, 0, 0, 2017, 2126, 3, 122, 61, 0, 2018, 2019, 5, 297, 0, 0, 2019, 2126, 3, 28, 14, 0, 2020, 2126, 3, 270, 135, 0, 2021, 2022, 5, 298, 0, 0, 2022, 2126, 3, 28, 14, 0, 2023, 2024, 5, 301, 0, 0, 2024, 2126, 3, 130, 65, 0, 2025, 2026, 5, 301, 0, 0, 2026, 2027, 5, 154, 0, 0, 2027, 2126, 3, 130, 65, 0, 2028, 2126, 5, 299, 0, 0, 2029, 2126, 5, 300, 0, 0, 2030, 2126, 3, 288, 144, 0, 2031, 2126, 3, 264, 132, 0, 2032, 2126, 3, 166, 83, 0, 2033, 2126, 3, 84, 42, 0, 2034, 2126, 3, 24, 12, 0, 2035, 2126, 3, 266, 133, 0, 2036, 2126, 3, 36, 18, 0, 2037, 2038, 5, 302, 0, 0, 2038, 2039, 5, 41, 0, 0, 2039, 2040, 3, 28, 14, 0, 2040, 2041, 5, 42, 0, 0, 2041, 2126, 1, 0, 0, 0, 2042, 2043, 5, 302, 0, 0, 2043, 2044, 5, 41, 0, 0, 2044, 2045, 3, 28, 14, 0, 2045, 2046, 5, 42, 0, 0, 2046, 2047, 5, 33, 0, 0, 2047, 2048, 3, 0, 0, 0, 2048, 2126, 1, 0, 0, 0, 2049, 2050, 5, 304, 0, 0, 2050, 2051, 3, 28, 14, 0, 2051, 2052, 5, 74, 0, 0, 2052, 2053, 3, 28, 14, 0, 2053, 2126, 1, 0, 0, 0, 2054, 2055, 5, 303, 0, 0, 2055, 2056, 3, 142, 71, 0, 2056, 2057, 5, 173, 0, 0, 2057, 2058, 3, 256, 128, 0, 2058, 2126, 1, 0, 0, 0, 2059, 2060, 5, 303, 0, 0, 2060, 2061, 5, 226, 0, 0, 2061, 2062, 3, 184, 92, 0, 2062, 2063, 3, 156, 78, 0, 2063, 2064, 3, 142, 71, 0, 2064, 2065, 5, 173, 0, 0, 2065, 2066, 3, 256, 128, 0, 2066, 2067, 3, 208, 104, 0, 2067, 2068, 3, 130, 65, 0, 2068, 2126, 1, 0, 0, 0, 2069, 2126, 3, 268, 134, 0, 2070, 2071, 5, 257, 0, 0, 2071, 2072, 5, 193, 0, 0, 2072, 2073, 5, 41, 0, 0, 2073, 2074, 3, 28, 14, 0, 2074, 2078, 5, 42, 0, 0, 2075, 2077, 3, 334, 167, 0, 2076, 2075, 1, 0, 0, 0, 2077, 2080, 1, 0, 0, 0, 2078, 2076, 1, 0, 0, 0, 2078, 2079, 1, 0, 0, 0, 2079, 2126, 1, 0, 0, 0, 2080, 2078, 1, 0, 0, 0, 2081, 2082, 5, 257, 0, 0, 2082, 2083, 5, 193, 0, 0, 2083, 2087, 3, 2, 1, 0, 2084, 2086, 3, 334, 167, 0, 2085, 2084, 1, 0, 0, 0, 2086, 2089, 1, 0, 0, 0, 2087, 2085, 1, 0, 0, 0, 2087, 2088, 1, 0, 0, 0, 2088, 2126, 1, 0, 0, 0, 2089, 2087, 1, 0, 0, 0, 2090, 2091, 5, 257, 0, 0, 2091, 2092, 5, 258, 0, 0, 2092, 2093, 5, 41, 0, 0, 2093, 2094, 3, 28, 14, 0, 2094, 2095, 5, 42, 0, 0, 2095, 2096, 5, 27, 0, 0, 2096, 2100, 3, 142, 71, 0, 2097, 2099, 3, 334, 167, 0, 2098, 2097, 1, 0, 0, 0, 2099, 2102, 1, 0, 0, 0, 2100, 2098, 1, 0, 0, 0, 2100, 2101, 1, 0, 0, 0, 2101, 2126, 1, 0, 0, 0, 2102, 2100, 1, 0, 0, 0, 2103, 2104, 5, 257, 0, 0, 2104, 2105, 5, 258, 0, 0, 2105, 2106, 3, 2, 1, 0, 2106, 2107, 5, 27, 0, 0, 2107, 2111, 3, 142, 71, 0, 2108, 2110, 3, 334, 167, 0, 2109, 2108, 1, 0, 0, 0, 2110, 2113, 1, 0, 0, 0, 2111, 2109, 1, 0, 0, 0, 2111, 2112, 1, 0, 0, 0, 2112, 2126, 1, 0, 0, 0, 2113, 2111, 1, 0, 0, 0, 2114, 2115, 5, 257, 0, 0, 2115, 2116, 5, 41, 0, 0, 2116, 2117, 3, 28, 14, 0, 2117, 2118, 5, 42, 0, 0, 2118, 2122, 3, 220, 110, 0, 2119, 2121, 3, 334, 167, 0, 2120, 2119, 1, 0, 0, 0, 2121, 2124, 1, 0, 0, 0, 2122, 2120, 1, 0, 0, 0, 2122, 2123, 1, 0, 0, 0, 2123, 2126, 1, 0, 0, 0, 2124, 2122, 1, 0, 0, 0, 2125, 2017, 1, 0, 0, 0, 2125, 2018, 1, 0, 0, 0, 2125, 2020, 1, 0, 0, 0, 2125, 2021, 1, 0, 0, 0, 2125, 2023, 1, 0, 0, 0, 2125, 2025, 1, 0, 0, 0, 2125, 2028, 1, 0, 0, 0, 2125, 2029, 1, 0, 0, 0, 2125, 2030, 1, 0, 0, 0, 2125, 2031, 1, 0, 0, 0, 2125, 2032, 1, 0, 0, 0, 2125, 2033, 1, 0, 0, 0, 2125, 2034, 1, 0, 0, 0, 2125, 2035, 1, 0, 0, 0, 2125, 2036, 1, 0, 0, 0, 2125, 2037, 1, 0, 0, 0, 2125, 2042, 1, 0, 0, 0, 2125, 2049, 1, 0, 0, 0, 2125, 2054, 1, 0, 0, 0, 2125, 2059, 1, 0, 0, 0, 2125, 2069, 1, 0, 0, 0, 2125, 2070, 1, 0, 0, 0, 2125, 2081, 1, 0, 0, 0, 2125, 2090, 1, 0, 0, 0, 2125, 2103, 1, 0, 0, 0, 2125, 2114, 1, 0, 0, 0, 2126, 263, 1, 0, 0, 0, 2127, 2128, 3, 0, 0, 0, 2128, 2129, 5, 74, 0, 0, 2129, 265, 1, 0, 0, 0, 2130, 2133, 3, 40, 20, 0, 2131, 2133, 3, 42, 21, 0, 2132, 2130, 1, 0, 0, 0, 2132, 2131, 1, 0, 0, 0, 2133, 267, 1, 0, 0, 0, 2134, 2135, 5, 16, 0, 0, 2135, 2136, 3, 260, 130, 0, 2136, 2137, 5, 17, 0, 0, 2137, 269, 1, 0, 0, 0, 2138, 2139, 3, 274, 137, 0, 2139, 2140, 3, 272, 136, 0, 2140, 271, 1, 0, 0, 0, 2141, 2143, 3, 276, 138, 0, 2142, 2141, 1, 0, 0, 0, 2143, 2144, 1, 0, 0, 0, 2144, 2142, 1, 0, 0, 0, 2144, 2145, 1, 0, 0, 0, 2145, 273, 1, 0, 0, 0, 2146, 2147, 5, 155, 0, 0, 2147, 2159, 3, 268, 134, 0, 2148, 2149, 5, 155, 0, 0, 2149, 2150, 3, 0, 0, 0, 2150, 2151, 5, 156, 0, 0, 2151, 2152, 3, 0, 0, 0, 2152, 2159, 1, 0, 0, 0, 2153, 2154, 5, 155, 0, 0, 2154, 2155, 3, 28, 14, 0, 2155, 2156, 5, 156, 0, 0, 2156, 2157, 3, 28, 14, 0, 2157, 2159, 1, 0, 0, 0, 2158, 2146, 1, 0, 0, 0, 2158, 2148, 1, 0, 0, 0, 2158, 2153, 1, 0, 0, 0, 2159, 275, 1, 0, 0, 0, 2160, 2161, 3, 280, 140, 0, 2161, 2162, 3, 286, 143, 0, 2162, 2173, 1, 0, 0, 0, 2163, 2164, 3, 278, 139, 0, 2164, 2165, 3, 286, 143, 0, 2165, 2173, 1, 0, 0, 0, 2166, 2167, 3, 282, 141, 0, 2167, 2168, 3, 286, 143, 0, 2168, 2173, 1, 0, 0, 0, 2169, 2170, 3, 284, 142, 0, 2170, 2171, 3, 286, 143, 0, 2171, 2173, 1, 0, 0, 0, 2172, 2160, 1, 0, 0, 0, 2172, 2163, 1, 0, 0, 0, 2172, 2166, 1, 0, 0, 0, 2172, 2169, 1, 0, 0, 0, 2173, 277, 1, 0, 0, 0, 2174, 2175, 5, 157, 0, 0, 2175, 2181, 3, 268, 134, 0, 2176, 2177, 5, 157, 0, 0, 2177, 2181, 3, 0, 0, 0, 2178, 2179, 5, 157, 0, 0, 2179, 2181, 3, 28, 14, 0, 2180, 2174, 1, 0, 0, 0, 2180, 2176, 1, 0, 0, 0, 2180, 2178, 1, 0, 0, 0, 2181, 279, 1, 0, 0, 0, 2182, 2183, 5, 158, 0, 0, 2183, 2184, 3, 142, 71, 0, 2184, 281, 1, 0, 0, 0, 2185, 2186, 5, 159, 0, 0, 2186, 283, 1, 0, 0, 0, 2187, 2188, 5, 160, 0, 0, 2188, 285, 1, 0, 0, 0, 2189, 2201, 3, 268, 134, 0, 2190, 2191, 5, 161, 0, 0, 2191, 2192, 3, 0, 0, 0, 2192, 2193, 5, 156, 0, 0, 2193, 2194, 3, 0, 0, 0, 2194, 2201, 1, 0, 0, 0, 2195, 2196, 5, 161, 0, 0, 2196, 2197, 3, 28, 14, 0, 2197, 2198, 5, 156, 0, 0, 2198, 2199, 3, 28, 14, 0, 2199, 2201, 1, 0, 0, 0, 2200, 2189, 1, 0, 0, 0, 2200, 2190, 1, 0, 0, 0, 2200, 2195, 1, 0, 0, 0, 2201, 287, 1, 0, 0, 0, 2202, 2203, 3, 290, 145, 0, 2203, 2204, 3, 294, 147, 0, 2204, 289, 1, 0, 0, 0, 2205, 2206, 5, 162, 0, 0, 2206, 2207, 3, 292, 146, 0, 2207, 2208, 3, 0, 0, 0, 2208, 2209, 5, 35, 0, 0, 2209, 2213, 1, 0, 0, 0, 2210, 2211, 5, 162, 0, 0, 2211, 2213, 3, 292, 146, 0, 2212, 2205, 1, 0, 0, 0, 2212, 2210, 1, 0, 0, 0, 2213, 291, 1, 0, 0, 0, 2214, 2218, 1, 0, 0, 0, 2215, 2218, 5, 163, 0, 0, 2216, 2218, 5, 2, 0, 0, 2217, 2214, 1, 0, 0, 0, 2217, 2215, 1, 0, 0, 0, 2217, 2216, 1, 0, 0, 0, 2218, 293, 1, 0, 0, 0, 2219, 2220, 5, 16, 0, 0, 2220, 2221, 3, 296, 148, 0, 2221, 2222, 5, 17, 0, 0, 2222, 2225, 1, 0, 0, 0, 2223, 2225, 3, 300, 150, 0, 2224, 2219, 1, 0, 0, 0, 2224, 2223, 1, 0, 0, 0, 2225, 295, 1, 0, 0, 0, 2226, 2227, 3, 300, 150, 0, 2227, 2228, 5, 27, 0, 0, 2228, 2230, 1, 0, 0, 0, 2229, 2226, 1, 0, 0, 0, 2230, 2233, 1, 0, 0, 0, 2231, 2229, 1, 0, 0, 0, 2231, 2232, 1, 0, 0, 0, 2232, 2234, 1, 0, 0, 0, 2233, 2231, 1, 0, 0, 0, 2234, 2235, 3, 300, 150, 0, 2235, 297, 1, 0, 0, 0, 2236, 2242, 1, 0, 0, 0, 2237, 2238, 5, 41, 0, 0, 2238, 2239, 3, 28, 14, 0, 2239, 2240, 5, 42, 0, 0, 2240, 2242, 1, 0, 0, 0, 2241, 2236, 1, 0, 0, 0, 2241, 2237, 1, 0, 0, 0, 2242, 299, 1, 0, 0, 0, 2243, 2244, 5, 178, 0, 0, 2244, 2245, 5, 264, 0, 0, 2245, 2246, 5, 29, 0, 0, 2246, 2247, 3, 4, 2, 0, 2247, 2248, 5, 30, 0, 0, 2248, 2308, 1, 0, 0, 0, 2249, 2250, 5, 262, 0, 0, 2250, 2251, 5, 29, 0, 0, 2251, 2252, 3, 0, 0, 0, 2252, 2253, 5, 30, 0, 0, 2253, 2308, 1, 0, 0, 0, 2254, 2255, 5, 83, 0, 0, 2255, 2256, 5, 29, 0, 0, 2256, 2257, 3, 304, 152, 0, 2257, 2258, 5, 30, 0, 0, 2258, 2308, 1, 0, 0, 0, 2259, 2260, 5, 185, 0, 0, 2260, 2261, 5, 29, 0, 0, 2261, 2262, 3, 32, 16, 0, 2262, 2263, 5, 30, 0, 0, 2263, 2264, 3, 298, 149, 0, 2264, 2308, 1, 0, 0, 0, 2265, 2266, 5, 186, 0, 0, 2266, 2267, 5, 29, 0, 0, 2267, 2268, 3, 32, 16, 0, 2268, 2269, 5, 30, 0, 0, 2269, 2270, 3, 298, 149, 0, 2270, 2308, 1, 0, 0, 0, 2271, 2272, 5, 184, 0, 0, 2272, 2273, 5, 29, 0, 0, 2273, 2274, 3, 30, 15, 0, 2274, 2275, 5, 30, 0, 0, 2275, 2276, 3, 298, 149, 0, 2276, 2308, 1, 0, 0, 0, 2277, 2278, 5, 183, 0, 0, 2278, 2279, 5, 29, 0, 0, 2279, 2280, 3, 28, 14, 0, 2280, 2281, 5, 30, 0, 0, 2281, 2282, 3, 298, 149, 0, 2282, 2308, 1, 0, 0, 0, 2283, 2284, 5, 182, 0, 0, 2284, 2285, 5, 29, 0, 0, 2285, 2286, 3, 28, 14, 0, 2286, 2287, 5, 30, 0, 0, 2287, 2288, 3, 298, 149, 0, 2288, 2308, 1, 0, 0, 0, 2289, 2290, 5, 181, 0, 0, 2290, 2291, 5, 29, 0, 0, 2291, 2292, 3, 28, 14, 0, 2292, 2293, 5, 30, 0, 0, 2293, 2294, 3, 298, 149, 0, 2294, 2308, 1, 0, 0, 0, 2295, 2296, 5, 185, 0, 0, 2296, 2308, 3, 298, 149, 0, 2297, 2298, 5, 186, 0, 0, 2298, 2308, 3, 298, 149, 0, 2299, 2300, 5, 184, 0, 0, 2300, 2308, 3, 298, 149, 0, 2301, 2302, 5, 183, 0, 0, 2302, 2308, 3, 298, 149, 0, 2303, 2304, 5, 182, 0, 0, 2304, 2308, 3, 298, 149, 0, 2305, 2306, 5, 181, 0, 0, 2306, 2308, 3, 298, 149, 0, 2307, 2243, 1, 0, 0, 0, 2307, 2249, 1, 0, 0, 0, 2307, 2254, 1, 0, 0, 0, 2307, 2259, 1, 0, 0, 0, 2307, 2265, 1, 0, 0, 0, 2307, 2271, 1, 0, 0, 0, 2307, 2277, 1, 0, 0, 0, 2307, 2283, 1, 0, 0, 0, 2307, 2289, 1, 0, 0, 0, 2307, 2295, 1, 0, 0, 0, 2307, 2297, 1, 0, 0, 0, 2307, 2299, 1, 0, 0, 0, 2307, 2301, 1, 0, 0, 0, 2307, 2303, 1, 0, 0, 0, 2307, 2305, 1, 0, 0, 0, 2308, 301, 1, 0, 0, 0, 2309, 2310, 5, 185, 0, 0, 2310, 2311, 5, 29, 0, 0, 2311, 2312, 3, 32, 16, 0, 2312, 2313, 5, 30, 0, 0, 2313, 2385, 1, 0, 0, 0, 2314, 2315, 5, 186, 0, 0, 2315, 2316, 5, 29, 0, 0, 2316, 2317, 3, 32, 16, 0, 2317, 2318, 5, 30, 0, 0, 2318, 2385, 1, 0, 0, 0, 2319, 2320, 5, 185, 0, 0, 2320, 2321, 5, 29, 0, 0, 2321, 2322, 3, 28, 14, 0, 2322, 2323, 5, 30, 0, 0, 2323, 2385, 1, 0, 0, 0, 2324, 2325, 5, 186, 0, 0, 2325, 2326, 5, 29, 0, 0, 2326, 2327, 3, 30, 15, 0, 2327, 2328, 5, 30, 0, 0, 2328, 2385, 1, 0, 0, 0, 2329, 2330, 5, 184, 0, 0, 2330, 2331, 5, 29, 0, 0, 2331, 2332, 3, 30, 15, 0, 2332, 2333, 5, 30, 0, 0, 2333, 2385, 1, 0, 0, 0, 2334, 2335, 5, 183, 0, 0, 2335, 2336, 5, 29, 0, 0, 2336, 2337, 3, 28, 14, 0, 2337, 2338, 5, 30, 0, 0, 2338, 2385, 1, 0, 0, 0, 2339, 2340, 5, 182, 0, 0, 2340, 2341, 5, 29, 0, 0, 2341, 2342, 3, 28, 14, 0, 2342, 2343, 5, 30, 0, 0, 2343, 2385, 1, 0, 0, 0, 2344, 2345, 5, 181, 0, 0, 2345, 2346, 5, 29, 0, 0, 2346, 2347, 3, 28, 14, 0, 2347, 2348, 5, 30, 0, 0, 2348, 2385, 1, 0, 0, 0, 2349, 2350, 5, 190, 0, 0, 2350, 2351, 5, 29, 0, 0, 2351, 2352, 3, 30, 15, 0, 2352, 2353, 5, 30, 0, 0, 2353, 2385, 1, 0, 0, 0, 2354, 2355, 5, 189, 0, 0, 2355, 2356, 5, 29, 0, 0, 2356, 2357, 3, 28, 14, 0, 2357, 2358, 5, 30, 0, 0, 2358, 2385, 1, 0, 0, 0, 2359, 2360, 5, 188, 0, 0, 2360, 2361, 5, 29, 0, 0, 2361, 2362, 3, 28, 14, 0, 2362, 2363, 5, 30, 0, 0, 2363, 2385, 1, 0, 0, 0, 2364, 2365, 5, 187, 0, 0, 2365, 2366, 5, 29, 0, 0, 2366, 2367, 3, 28, 14, 0, 2367, 2368, 5, 30, 0, 0, 2368, 2385, 1, 0, 0, 0, 2369, 2370, 5, 178, 0, 0, 2370, 2371, 5, 29, 0, 0, 2371, 2372, 3, 28, 14, 0, 2372, 2373, 5, 30, 0, 0, 2373, 2385, 1, 0, 0, 0, 2374, 2375, 5, 180, 0, 0, 2375, 2376, 5, 29, 0, 0, 2376, 2377, 3, 176, 88, 0, 2377, 2378, 5, 30, 0, 0, 2378, 2385, 1, 0, 0, 0, 2379, 2380, 5, 83, 0, 0, 2380, 2381, 5, 29, 0, 0, 2381, 2382, 3, 304, 152, 0, 2382, 2383, 5, 30, 0, 0, 2383, 2385, 1, 0, 0, 0, 2384, 2309, 1, 0, 0, 0, 2384, 2314, 1, 0, 0, 0, 2384, 2319, 1, 0, 0, 0, 2384, 2324, 1, 0, 0, 0, 2384, 2329, 1, 0, 0, 0, 2384, 2334, 1, 0, 0, 0, 2384, 2339, 1, 0, 0, 0, 2384, 2344, 1, 0, 0, 0, 2384, 2349, 1, 0, 0, 0, 2384, 2354, 1, 0, 0, 0, 2384, 2359, 1, 0, 0, 0, 2384, 2364, 1, 0, 0, 0, 2384, 2369, 1, 0, 0, 0, 2384, 2374, 1, 0, 0, 0, 2384, 2379, 1, 0, 0, 0, 2385, 303, 1, 0, 0, 0, 2386, 2388, 3, 306, 153, 0, 2387, 2386, 1, 0, 0, 0, 2388, 2391, 1, 0, 0, 0, 2389, 2387, 1, 0, 0, 0, 2389, 2390, 1, 0, 0, 0, 2390, 305, 1, 0, 0, 0, 2391, 2389, 1, 0, 0, 0, 2392, 2394, 5, 172, 0, 0, 2393, 2392, 1, 0, 0, 0, 2394, 2395, 1, 0, 0, 0, 2395, 2393, 1, 0, 0, 0, 2395, 2396, 1, 0, 0, 0, 2396, 307, 1, 0, 0, 0, 2397, 2401, 3, 302, 151, 0, 2398, 2401, 3, 4, 2, 0, 2399, 2401, 5, 176, 0, 0, 2400, 2397, 1, 0, 0, 0, 2400, 2398, 1, 0, 0, 0, 2400, 2399, 1, 0, 0, 0, 2401, 309, 1, 0, 0, 0, 2402, 2551, 3, 302, 151, 0, 2403, 2404, 5, 179, 0, 0, 2404, 2405, 5, 29, 0, 0, 2405, 2406, 5, 176, 0, 0, 2406, 2551, 5, 30, 0, 0, 2407, 2408, 5, 179, 0, 0, 2408, 2409, 5, 29, 0, 0, 2409, 2410, 5, 266, 0, 0, 2410, 2551, 5, 30, 0, 0, 2411, 2412, 5, 193, 0, 0, 2412, 2413, 5, 29, 0, 0, 2413, 2414, 5, 38, 0, 0, 2414, 2415, 5, 266, 0, 0, 2415, 2551, 5, 30, 0, 0, 2416, 2417, 5, 193, 0, 0, 2417, 2418, 5, 29, 0, 0, 2418, 2419, 3, 134, 67, 0, 2419, 2420, 5, 30, 0, 0, 2420, 2551, 1, 0, 0, 0, 2421, 2422, 5, 193, 0, 0, 2422, 2423, 5, 29, 0, 0, 2423, 2424, 5, 176, 0, 0, 2424, 2551, 5, 30, 0, 0, 2425, 2426, 5, 194, 0, 0, 2426, 2427, 5, 29, 0, 0, 2427, 2428, 3, 310, 155, 0, 2428, 2429, 5, 30, 0, 0, 2429, 2551, 1, 0, 0, 0, 2430, 2431, 5, 185, 0, 0, 2431, 2432, 5, 41, 0, 0, 2432, 2433, 3, 28, 14, 0, 2433, 2434, 5, 42, 0, 0, 2434, 2435, 5, 29, 0, 0, 2435, 2436, 3, 312, 156, 0, 2436, 2437, 5, 30, 0, 0, 2437, 2551, 1, 0, 0, 0, 2438, 2439, 5, 186, 0, 0, 2439, 2440, 5, 41, 0, 0, 2440, 2441, 3, 28, 14, 0, 2441, 2442, 5, 42, 0, 0, 2442, 2443, 5, 29, 0, 0, 2443, 2444, 3, 314, 157, 0, 2444, 2445, 5, 30, 0, 0, 2445, 2551, 1, 0, 0, 0, 2446, 2447, 5, 184, 0, 0, 2447, 2448, 5, 41, 0, 0, 2448, 2449, 3, 28, 14, 0, 2449, 2450, 5, 42, 0, 0, 2450, 2451, 5, 29, 0, 0, 2451, 2452, 3, 316, 158, 0, 2452, 2453, 5, 30, 0, 0, 2453, 2551, 1, 0, 0, 0, 2454, 2455, 5, 183, 0, 0, 2455, 2456, 5, 41, 0, 0, 2456, 2457, 3, 28, 14, 0, 2457, 2458, 5, 42, 0, 0, 2458, 2459, 5, 29, 0, 0, 2459, 2460, 3, 318, 159, 0, 2460, 2461, 5, 30, 0, 0, 2461, 2551, 1, 0, 0, 0, 2462, 2463, 5, 182, 0, 0, 2463, 2464, 5, 41, 0, 0, 2464, 2465, 3, 28, 14, 0, 2465, 2466, 5, 42, 0, 0, 2466, 2467, 5, 29, 0, 0, 2467, 2468, 3, 320, 160, 0, 2468, 2469, 5, 30, 0, 0, 2469, 2551, 1, 0, 0, 0, 2470, 2471, 5, 181, 0, 0, 2471, 2472, 5, 41, 0, 0, 2472, 2473, 3, 28, 14, 0, 2473, 2474, 5, 42, 0, 0, 2474, 2475, 5, 29, 0, 0, 2475, 2476, 3, 322, 161, 0, 2476, 2477, 5, 30, 0, 0, 2477, 2551, 1, 0, 0, 0, 2478, 2479, 5, 190, 0, 0, 2479, 2480, 5, 41, 0, 0, 2480, 2481, 3, 28, 14, 0, 2481, 2482, 5, 42, 0, 0, 2482, 2483, 5, 29, 0, 0, 2483, 2484, 3, 316, 158, 0, 2484, 2485, 5, 30, 0, 0, 2485, 2551, 1, 0, 0, 0, 2486, 2487, 5, 189, 0, 0, 2487, 2488, 5, 41, 0, 0, 2488, 2489, 3, 28, 14, 0, 2489, 2490, 5, 42, 0, 0, 2490, 2491, 5, 29, 0, 0, 2491, 2492, 3, 318, 159, 0, 2492, 2493, 5, 30, 0, 0, 2493, 2551, 1, 0, 0, 0, 2494, 2495, 5, 188, 0, 0, 2495, 2496, 5, 41, 0, 0, 2496, 2497, 3, 28, 14, 0, 2497, 2498, 5, 42, 0, 0, 2498, 2499, 5, 29, 0, 0, 2499, 2500, 3, 320, 160, 0, 2500, 2501, 5, 30, 0, 0, 2501, 2551, 1, 0, 0, 0, 2502, 2503, 5, 187, 0, 0, 2503, 2504, 5, 41, 0, 0, 2504, 2505, 3, 28, 14, 0, 2505, 2506, 5, 42, 0, 0, 2506, 2507, 5, 29, 0, 0, 2507, 2508, 3, 322, 161, 0, 2508, 2509, 5, 30, 0, 0, 2509, 2551, 1, 0, 0, 0, 2510, 2511, 5, 178, 0, 0, 2511, 2512, 5, 41, 0, 0, 2512, 2513, 3, 28, 14, 0, 2513, 2514, 5, 42, 0, 0, 2514, 2515, 5, 29, 0, 0, 2515, 2516, 3, 320, 160, 0, 2516, 2517, 5, 30, 0, 0, 2517, 2551, 1, 0, 0, 0, 2518, 2519, 5, 180, 0, 0, 2519, 2520, 5, 41, 0, 0, 2520, 2521, 3, 28, 14, 0, 2521, 2522, 5, 42, 0, 0, 2522, 2523, 5, 29, 0, 0, 2523, 2524, 3, 324, 162, 0, 2524, 2525, 5, 30, 0, 0, 2525, 2551, 1, 0, 0, 0, 2526, 2527, 5, 179, 0, 0, 2527, 2528, 5, 41, 0, 0, 2528, 2529, 3, 28, 14, 0, 2529, 2530, 5, 42, 0, 0, 2530, 2531, 5, 29, 0, 0, 2531, 2532, 3, 326, 163, 0, 2532, 2533, 5, 30, 0, 0, 2533, 2551, 1, 0, 0, 0, 2534, 2535, 5, 193, 0, 0, 2535, 2536, 5, 41, 0, 0, 2536, 2537, 3, 28, 14, 0, 2537, 2538, 5, 42, 0, 0, 2538, 2539, 5, 29, 0, 0, 2539, 2540, 3, 328, 164, 0, 2540, 2541, 5, 30, 0, 0, 2541, 2551, 1, 0, 0, 0, 2542, 2543, 5, 194, 0, 0, 2543, 2544, 5, 41, 0, 0, 2544, 2545, 3, 28, 14, 0, 2545, 2546, 5, 42, 0, 0, 2546, 2547, 5, 29, 0, 0, 2547, 2548, 3, 332, 166, 0, 2548, 2549, 5, 30, 0, 0, 2549, 2551, 1, 0, 0, 0, 2550, 2402, 1, 0, 0, 0, 2550, 2403, 1, 0, 0, 0, 2550, 2407, 1, 0, 0, 0, 2550, 2411, 1, 0, 0, 0, 2550, 2416, 1, 0, 0, 0, 2550, 2421, 1, 0, 0, 0, 2550, 2425, 1, 0, 0, 0, 2550, 2430, 1, 0, 0, 0, 2550, 2438, 1, 0, 0, 0, 2550, 2446, 1, 0, 0, 0, 2550, 2454, 1, 0, 0, 0, 2550, 2462, 1, 0, 0, 0, 2550, 2470, 1, 0, 0, 0, 2550, 2478, 1, 0, 0, 0, 2550, 2486, 1, 0, 0, 0, 2550, 2494, 1, 0, 0, 0, 2550, 2502, 1, 0, 0, 0, 2550, 2510, 1, 0, 0, 0, 2550, 2518, 1, 0, 0, 0, 2550, 2526, 1, 0, 0, 0, 2550, 2534, 1, 0, 0, 0, 2550, 2542, 1, 0, 0, 0, 2551, 311, 1, 0, 0, 0, 2552, 2555, 3, 32, 16, 0, 2553, 2555, 3, 28, 14, 0, 2554, 2552, 1, 0, 0, 0, 2554, 2553, 1, 0, 0, 0, 2555, 2558, 1, 0, 0, 0, 2556, 2554, 1, 0, 0, 0, 2556, 2557, 1, 0, 0, 0, 2557, 313, 1, 0, 0, 0, 2558, 2556, 1, 0, 0, 0, 2559, 2562, 3, 32, 16, 0, 2560, 2562, 3, 30, 15, 0, 2561, 2559, 1, 0, 0, 0, 2561, 2560, 1, 0, 0, 0, 2562, 2565, 1, 0, 0, 0, 2563, 2561, 1, 0, 0, 0, 2563, 2564, 1, 0, 0, 0, 2564, 315, 1, 0, 0, 0, 2565, 2563, 1, 0, 0, 0, 2566, 2568, 3, 30, 15, 0, 2567, 2566, 1, 0, 0, 0, 2568, 2571, 1, 0, 0, 0, 2569, 2567, 1, 0, 0, 0, 2569, 2570, 1, 0, 0, 0, 2570, 317, 1, 0, 0, 0, 2571, 2569, 1, 0, 0, 0, 2572, 2574, 3, 28, 14, 0, 2573, 2572, 1, 0, 0, 0, 2574, 2577, 1, 0, 0, 0, 2575, 2573, 1, 0, 0, 0, 2575, 2576, 1, 0, 0, 0, 2576, 319, 1, 0, 0, 0, 2577, 2575, 1, 0, 0, 0, 2578, 2580, 3, 28, 14, 0, 2579, 2578, 1, 0, 0, 0, 2580, 2583, 1, 0, 0, 0, 2581, 2579, 1, 0, 0, 0, 2581, 2582, 1, 0, 0, 0, 2582, 321, 1, 0, 0, 0, 2583, 2581, 1, 0, 0, 0, 2584, 2586, 3, 28, 14, 0, 2585, 2584, 1, 0, 0, 0, 2586, 2589, 1, 0, 0, 0, 2587, 2585, 1, 0, 0, 0, 2587, 2588, 1, 0, 0, 0, 2588, 323, 1, 0, 0, 0, 2589, 2587, 1, 0, 0, 0, 2590, 2592, 3, 176, 88, 0, 2591, 2590, 1, 0, 0, 0, 2592, 2595, 1, 0, 0, 0, 2593, 2591, 1, 0, 0, 0, 2593, 2594, 1, 0, 0, 0, 2594, 325, 1, 0, 0, 0, 2595, 2593, 1, 0, 0, 0, 2596, 2598, 7, 11, 0, 0, 2597, 2596, 1, 0, 0, 0, 2598, 2601, 1, 0, 0, 0, 2599, 2597, 1, 0, 0, 0, 2599, 2600, 1, 0, 0, 0, 2600, 327, 1, 0, 0, 0, 2601, 2599, 1, 0, 0, 0, 2602, 2604, 3, 330, 165, 0, 2603, 2602, 1, 0, 0, 0, 2604, 2607, 1, 0, 0, 0, 2605, 2603, 1, 0, 0, 0, 2605, 2606, 1, 0, 0, 0, 2606, 329, 1, 0, 0, 0, 2607, 2605, 1, 0, 0, 0, 2608, 2613, 5, 176, 0, 0, 2609, 2610, 5, 38, 0, 0, 2610, 2613, 5, 266, 0, 0, 2611, 2613, 3, 134, 67, 0, 2612, 2608, 1, 0, 0, 0, 2612, 2609, 1, 0, 0, 0, 2612, 2611, 1, 0, 0, 0, 2613, 331, 1, 0, 0, 0, 2614, 2616, 3, 310, 155, 0, 2615, 2614, 1, 0, 0, 0, 2616, 2619, 1, 0, 0, 0, 2617, 2615, 1, 0, 0, 0, 2617, 2618, 1, 0, 0, 0, 2618, 333, 1, 0, 0, 0, 2619, 2617, 1, 0, 0, 0, 2620, 2624, 3, 40, 20, 0, 2621, 2624, 3, 42, 21, 0, 2622, 2624, 3, 2, 1, 0, 2623, 2620, 1, 0, 0, 0, 2623, 2621, 1, 0, 0, 0, 2623, 2622, 1, 0, 0, 0, 2624, 335, 1, 0, 0, 0, 2625, 2626, 5, 164, 0, 0, 2626, 2627, 5, 35, 0, 0, 2627, 2628, 5, 29, 0, 0, 2628, 2629, 3, 304, 152, 0, 2629, 2630, 5, 30, 0, 0, 2630, 2651, 1, 0, 0, 0, 2631, 2632, 5, 165, 0, 0, 2632, 2633, 3, 34, 17, 0, 2633, 2634, 5, 74, 0, 0, 2634, 2635, 3, 34, 17, 0, 2635, 2636, 5, 74, 0, 0, 2636, 2637, 3, 34, 17, 0, 2637, 2638, 5, 74, 0, 0, 2638, 2639, 3, 34, 17, 0, 2639, 2651, 1, 0, 0, 0, 2640, 2641, 5, 166, 0, 0, 2641, 2651, 3, 4, 2, 0, 2642, 2643, 5, 166, 0, 0, 2643, 2644, 5, 35, 0, 0, 2644, 2645, 5, 29, 0, 0, 2645, 2646, 3, 304, 152, 0, 2646, 2647, 5, 30, 0, 0, 2647, 2651, 1, 0, 0, 0, 2648, 2651, 3, 334, 167, 0, 2649, 2651, 3, 36, 18, 0, 2650, 2625, 1, 0, 0, 0, 2650, 2631, 1, 0, 0, 0, 2650, 2640, 1, 0, 0, 0, 2650, 2642, 1, 0, 0, 0, 2650, 2648, 1, 0, 0, 0, 2650, 2649, 1, 0, 0, 0, 2651, 337, 1, 0, 0, 0, 2652, 2653, 5, 24, 0, 0, 2653, 2654, 5, 39, 0, 0, 2654, 2655, 3, 94, 47, 0, 2655, 2656, 3, 2, 1, 0, 2656, 2665, 1, 0, 0, 0, 2657, 2658, 5, 24, 0, 0, 2658, 2659, 5, 39, 0, 0, 2659, 2660, 3, 94, 47, 0, 2660, 2661, 3, 2, 1, 0, 2661, 2662, 5, 33, 0, 0, 2662, 2663, 3, 2, 1, 0, 2663, 2665, 1, 0, 0, 0, 2664, 2652, 1, 0, 0, 0, 2664, 2657, 1, 0, 0, 0, 2665, 339, 1, 0, 0, 0, 2666, 2668, 3, 342, 171, 0, 2667, 2666, 1, 0, 0, 0, 2668, 2671, 1, 0, 0, 0, 2669, 2667, 1, 0, 0, 0, 2669, 2670, 1, 0, 0, 0, 2670, 341, 1, 0, 0, 0, 2671, 2669, 1, 0, 0, 0, 2672, 2673, 5, 177, 0, 0, 2673, 2674, 5, 35, 0, 0, 2674, 2675, 5, 29, 0, 0, 2675, 2676, 3, 304, 152, 0, 2676, 2677, 5, 30, 0, 0, 2677, 2687, 1, 0, 0, 0, 2678, 2687, 3, 336, 168, 0, 2679, 2680, 5, 167, 0, 0, 2680, 2681, 5, 35, 0, 0, 2681, 2682, 5, 29, 0, 0, 2682, 2683, 3, 304, 152, 0, 2683, 2684, 5, 30, 0, 0, 2684, 2687, 1, 0, 0, 0, 2685, 2687, 5, 54, 0, 0, 2686, 2672, 1, 0, 0, 0, 2686, 2678, 1, 0, 0, 0, 2686, 2679, 1, 0, 0, 0, 2686, 2685, 1, 0, 0, 0, 2687, 343, 1, 0, 0, 0, 2688, 2689, 5, 49, 0, 0, 2689, 2693, 5, 39, 0, 0, 2690, 2692, 3, 348, 174, 0, 2691, 2690, 1, 0, 0, 0, 2692, 2695, 1, 0, 0, 0, 2693, 2691, 1, 0, 0, 0, 2693, 2694, 1, 0, 0, 0, 2694, 2696, 1, 0, 0, 0, 2695, 2693, 1, 0, 0, 0, 2696, 2697, 3, 2, 1, 0, 2697, 345, 1, 0, 0, 0, 2698, 2702, 5, 302, 0, 0, 2699, 2701, 3, 348, 174, 0, 2700, 2699, 1, 0, 0, 0, 2701, 2704, 1, 0, 0, 0, 2702, 2700, 1, 0, 0, 0, 2702, 2703, 1, 0, 0, 0, 2703, 2705, 1, 0, 0, 0, 2704, 2702, 1, 0, 0, 0, 2705, 2706, 3, 2, 1, 0, 2706, 347, 1, 0, 0, 0, 2707, 2723, 5, 51, 0, 0, 2708, 2723, 5, 50, 0, 0, 2709, 2723, 5, 168, 0, 0, 2710, 2711, 5, 61, 0, 0, 2711, 2723, 5, 50, 0, 0, 2712, 2713, 5, 61, 0, 0, 2713, 2723, 5, 51, 0, 0, 2714, 2715, 5, 61, 0, 0, 2715, 2723, 5, 62, 0, 0, 2716, 2717, 5, 61, 0, 0, 2717, 2723, 5, 63, 0, 0, 2718, 2719, 5, 61, 0, 0, 2719, 2723, 5, 64, 0, 0, 2720, 2721, 5, 61, 0, 0, 2721, 2723, 5, 65, 0, 0, 2722, 2707, 1, 0, 0, 0, 2722, 2708, 1, 0, 0, 0, 2722, 2709, 1, 0, 0, 0, 2722, 2710, 1, 0, 0, 0, 2722, 2712, 1, 0, 0, 0, 2722, 2714, 1, 0, 0, 0, 2722, 2716, 1, 0, 0, 0, 2722, 2718, 1, 0, 0, 0, 2722, 2720, 1, 0, 0, 0, 2723, 349, 1, 0, 0, 0, 2724, 2726, 3, 352, 176, 0, 2725, 2724, 1, 0, 0, 0, 2726, 2729, 1, 0, 0, 0, 2727, 2725, 1, 0, 0, 0, 2727, 2728, 1, 0, 0, 0, 2728, 351, 1, 0, 0, 0, 2729, 2727, 1, 0, 0, 0, 2730, 2731, 5, 20, 0, 0, 2731, 2744, 3, 2, 1, 0, 2732, 2733, 5, 49, 0, 0, 2733, 2734, 5, 39, 0, 0, 2734, 2744, 3, 136, 68, 0, 2735, 2736, 5, 24, 0, 0, 2736, 2737, 5, 39, 0, 0, 2737, 2744, 3, 2, 1, 0, 2738, 2744, 3, 188, 94, 0, 2739, 2740, 5, 49, 0, 0, 2740, 2744, 3, 28, 14, 0, 2741, 2744, 3, 334, 167, 0, 2742, 2744, 3, 36, 18, 0, 2743, 2730, 1, 0, 0, 0, 2743, 2732, 1, 0, 0, 0, 2743, 2735, 1, 0, 0, 0, 2743, 2738, 1, 0, 0, 0, 2743, 2739, 1, 0, 0, 0, 2743, 2741, 1, 0, 0, 0, 2743, 2742, 1, 0, 0, 0, 2744, 353, 1, 0, 0, 0, 2745, 2749, 5, 276, 0, 0, 2746, 2748, 3, 356, 178, 0, 2747, 2746, 1, 0, 0, 0, 2748, 2751, 1, 0, 0, 0, 2749, 2747, 1, 0, 0, 0, 2749, 2750, 1, 0, 0, 0, 2750, 2752, 1, 0, 0, 0, 2751, 2749, 1, 0, 0, 0, 2752, 2765, 3, 2, 1, 0, 2753, 2757, 5, 276, 0, 0, 2754, 2756, 3, 356, 178, 0, 2755, 2754, 1, 0, 0, 0, 2756, 2759, 1, 0, 0, 0, 2757, 2755, 1, 0, 0, 0, 2757, 2758, 1, 0, 0, 0, 2758, 2760, 1, 0, 0, 0, 2759, 2757, 1, 0, 0, 0, 2760, 2761, 3, 2, 1, 0, 2761, 2762, 5, 33, 0, 0, 2762, 2763, 3, 2, 1, 0, 2763, 2765, 1, 0, 0, 0, 2764, 2745, 1, 0, 0, 0, 2764, 2753, 1, 0, 0, 0, 2765, 355, 1, 0, 0, 0, 2766, 2767, 7, 12, 0, 0, 2767, 357, 1, 0, 0, 0, 2768, 2770, 3, 360, 180, 0, 2769, 2768, 1, 0, 0, 0, 2770, 2773, 1, 0, 0, 0, 2771, 2769, 1, 0, 0, 0, 2771, 2772, 1, 0, 0, 0, 2772, 359, 1, 0, 0, 0, 2773, 2771, 1, 0, 0, 0, 2774, 2775, 5, 20, 0, 0, 2775, 2776, 3, 2, 1, 0, 2776, 2777, 5, 43, 0, 0, 2777, 2778, 3, 28, 14, 0, 2778, 2785, 1, 0, 0, 0, 2779, 2780, 5, 24, 0, 0, 2780, 2781, 5, 39, 0, 0, 2781, 2785, 3, 2, 1, 0, 2782, 2785, 3, 334, 167, 0, 2783, 2785, 3, 36, 18, 0, 2784, 2774, 1, 0, 0, 0, 2784, 2779, 1, 0, 0, 0, 2784, 2782, 1, 0, 0, 0, 2784, 2783, 1, 0, 0, 0, 2785, 361, 1, 0, 0, 0, 167, 369, 373, 379, 387, 439, 478, 485, 505, 509, 527, 554, 577, 613, 619, 626, 628, 638, 640, 647, 658, 666, 687, 689, 705, 750, 755, 760, 765, 773, 851, 857, 873, 879, 885, 892, 997, 1004, 1006, 1011, 1013, 1021, 1033, 1045, 1052, 1064, 1091, 1098, 1106, 1114, 1127, 1134, 1137, 1156, 1239, 1248, 1255, 1258, 1266, 1286, 1318, 1332, 1357, 1374, 1382, 1386, 1401, 1408, 1453, 1463, 1479, 1491, 1503, 1517, 1529, 1540, 1547, 1557, 1570, 1575, 1580, 1589, 1600, 1683, 1692, 1705, 1716, 1724, 1734, 1736, 1762, 1767, 1772, 1779, 1785, 1795, 1799, 1806, 1821, 1827, 1841, 1854, 1862, 1869, 1874, 1890, 1895, 1897, 1910, 1936, 1943, 1945, 1950, 1982, 1987, 2009, 2014, 2078, 2087, 2100, 2111, 2122, 2125, 2132, 2144, 2158, 2172, 2180, 2200, 2212, 2217, 2224, 2231, 2241, 2307, 2384, 2389, 2395, 2400, 2550, 2554, 2556, 2561, 2563, 2569, 2575, 2581, 2587, 2593, 2599, 2605, 2612, 2617, 2623, 2650, 2664, 2669, 2686, 2693, 2702, 2722, 2727, 2743, 2749, 2757, 2764, 2771, 2784] \ No newline at end of file diff --git a/src/tools/ilasm/src/ILAssembler/gen/CIL.tokens b/src/tools/ilasm/src/ILAssembler/gen/CIL.tokens new file mode 100644 index 00000000000000..b0aee9d4e62201 --- /dev/null +++ b/src/tools/ilasm/src/ILAssembler/gen/CIL.tokens @@ -0,0 +1,579 @@ +T__0=1 +T__1=2 +T__2=3 +T__3=4 +T__4=5 +T__5=6 +T__6=7 +T__7=8 +T__8=9 +T__9=10 +T__10=11 +T__11=12 +T__12=13 +T__13=14 +T__14=15 +T__15=16 +T__16=17 +T__17=18 +T__18=19 +T__19=20 +T__20=21 +T__21=22 +T__22=23 +T__23=24 +T__24=25 +T__25=26 +T__26=27 +T__27=28 +T__28=29 +T__29=30 +T__30=31 +T__31=32 +T__32=33 +T__33=34 +T__34=35 +T__35=36 +T__36=37 +T__37=38 +T__38=39 +T__39=40 +T__40=41 +T__41=42 +T__42=43 +T__43=44 +T__44=45 +T__45=46 +T__46=47 +T__47=48 +T__48=49 +T__49=50 +T__50=51 +T__51=52 +T__52=53 +T__53=54 +T__54=55 +T__55=56 +T__56=57 +T__57=58 +T__58=59 +T__59=60 +T__60=61 +T__61=62 +T__62=63 +T__63=64 +T__64=65 +T__65=66 +T__66=67 +T__67=68 +T__68=69 +T__69=70 +T__70=71 +T__71=72 +T__72=73 +T__73=74 +T__74=75 +T__75=76 +T__76=77 +T__77=78 +T__78=79 +T__79=80 +T__80=81 +T__81=82 +T__82=83 +T__83=84 +T__84=85 +T__85=86 +T__86=87 +T__87=88 +T__88=89 +T__89=90 +T__90=91 +T__91=92 +T__92=93 +T__93=94 +T__94=95 +T__95=96 +T__96=97 +T__97=98 +T__98=99 +T__99=100 +T__100=101 +T__101=102 +T__102=103 +T__103=104 +T__104=105 +T__105=106 +T__106=107 +T__107=108 +T__108=109 +T__109=110 +T__110=111 +T__111=112 +T__112=113 +T__113=114 +T__114=115 +T__115=116 +T__116=117 +T__117=118 +T__118=119 +T__119=120 +T__120=121 +T__121=122 +T__122=123 +T__123=124 +T__124=125 +T__125=126 +T__126=127 +T__127=128 +T__128=129 +T__129=130 +T__130=131 +T__131=132 +T__132=133 +T__133=134 +T__134=135 +T__135=136 +T__136=137 +T__137=138 +T__138=139 +T__139=140 +T__140=141 +T__141=142 +T__142=143 +T__143=144 +T__144=145 +T__145=146 +T__146=147 +T__147=148 +T__148=149 +T__149=150 +T__150=151 +T__151=152 +T__152=153 +T__153=154 +T__154=155 +T__155=156 +T__156=157 +T__157=158 +T__158=159 +T__159=160 +T__160=161 +T__161=162 +T__162=163 +T__163=164 +T__164=165 +T__165=166 +T__166=167 +T__167=168 +INT32=169 +INT64=170 +FLOAT64=171 +HEXBYTE=172 +DCOLON=173 +ELLIPSIS=174 +NULL=175 +NULLREF=176 +HASH=177 +CHAR=178 +STRING=179 +BOOL=180 +INT8=181 +INT16=182 +INT32_=183 +INT64_=184 +FLOAT32=185 +FLOAT64_=186 +UINT8=187 +UINT16=188 +UINT32=189 +UINT64=190 +INT=191 +UINT=192 +TYPE=193 +OBJECT=194 +MODULE=195 +VALUE=196 +VALUETYPE=197 +VOID=198 +ENUM=199 +CUSTOM=200 +FIXED=201 +SYSSTRING=202 +ARRAY=203 +VARIANT=204 +CURRENCY=205 +SYSCHAR=206 +ERROR=207 +DECIMAL=208 +DATE=209 +BSTR=210 +LPSTR=211 +LPWSTR=212 +LPTSTR=213 +OBJECTREF=214 +IUNKNOWN=215 +IDISPATCH=216 +STRUCT=217 +INTERFACE=218 +SAFEARRAY=219 +NESTEDSTRUCT=220 +VARIANTBOOL=221 +BYVALSTR=222 +ANSI=223 +ANSIBSTR=224 +TBSTR=225 +METHOD=226 +ANY=227 +LPSTRUCT=228 +VECTOR=229 +HRESULT=230 +CARRAY=231 +USERDEFINED=232 +RECORD=233 +FILETIME=234 +BLOB=235 +STREAM=236 +STORAGE=237 +STREAMED_OBJECT=238 +STORED_OBJECT=239 +BLOB_OBJECT=240 +CF=241 +CLSID=242 +INSTANCE=243 +EXPLICIT=244 +DEFAULT=245 +VARARG=246 +UNMANAGED=247 +CDECL=248 +STDCALL=249 +THISCALL=250 +FASTCALL=251 +TYPE_PARAMETER=252 +METHOD_TYPE_PARAMETER=253 +TYPEDREF=254 +NATIVE_INT=255 +NATIVE_UINT=256 +PARAM=257 +CONSTRAINT=258 +THIS=259 +BASE=260 +NESTER=261 +REF=262 +ARRAY_TYPE_NO_BOUNDS=263 +PTR=264 +QSTRING=265 +SQSTRING=266 +DOT=267 +PLUS=268 +PP_DEFINE=269 +PP_UNDEF=270 +PP_IFDEF=271 +PP_IFNDEF=272 +PP_ELSE=273 +PP_ENDIF=274 +PP_INCLUDE=275 +MRESOURCE=276 +INSTR_NONE=277 +INSTR_VAR=278 +INSTR_I=279 +INSTR_I8=280 +INSTR_R=281 +INSTR_METHOD=282 +INSTR_SIG=283 +INSTR_BRTARGET=284 +INSTR_SWITCH=285 +INSTR_TYPE=286 +INSTR_STRING=287 +INSTR_FIELD=288 +INSTR_TOK=289 +DOTTEDNAME=290 +ID=291 +WS=292 +SINGLE_LINE_COMMENT=293 +COMMENT=294 +PERMISSION=295 +PERMISSIONSET=296 +EMITBYTE=297 +MAXSTACK=298 +ENTRYPOINT=299 +ZEROINIT=300 +LOCALS=301 +EXPORT=302 +OVERRIDE=303 +VTENTRY=304 +IncludedFileEof=305 +SyntheticIncludedFileEof=306 +'native'=1 +'cil'=2 +'optil'=3 +'managed'=4 +'forwardref'=5 +'preservesig'=6 +'runtime'=7 +'internalcall'=8 +'synchronized'=9 +'noinlining'=10 +'aggressiveinlining'=11 +'nooptimization'=12 +'aggressiveoptimization'=13 +'async'=14 +'extended'=15 +'{'=16 +'}'=17 +'.subsystem'=18 +'.corflags'=19 +'.file'=20 +'alignment'=21 +'.imagebase'=22 +'.stackreserve'=23 +'.assembly'=24 +'.mscorlib'=25 +'.language'=26 +','=27 +'.typelist'=28 +'('=29 +')'=30 +';'=31 +'.typedef'=32 +'as'=33 +'.custom'=34 +'='=35 +'field'=36 +'property'=37 +'class'=38 +'extern'=39 +'.vtfixup'=40 +'['=41 +']'=42 +'at'=43 +'fromunmanaged'=44 +'callmostderived'=45 +'retainappdomain'=46 +'.vtable'=47 +'.namespace'=48 +'.class'=49 +'public'=50 +'private'=51 +'sealed'=52 +'abstract'=53 +'auto'=54 +'sequential'=55 +'unicode'=56 +'autochar'=57 +'import'=58 +'serializable'=59 +'windowsruntime'=60 +'nested'=61 +'family'=62 +'assembly'=63 +'famandassem'=64 +'famorassem'=65 +'beforefieldinit'=66 +'specialname'=67 +'rtspecialname'=68 +'flags'=69 +'extends'=70 +'implements'=71 +'.line'=72 +'#line'=73 +':'=74 +'nometadata'=75 +'retargetable'=76 +'noplatform'=77 +'legacy library'=78 +'x86'=79 +'amd64'=80 +'arm'=81 +'arm64'=82 +'bytearray'=83 +'<'=84 +'>'=85 +'()'=86 +'/'=87 +'algorithm'=88 +'iidparam'=89 +'pinned'=90 +'modreq'=91 +'modopt'=92 +'true'=93 +'false'=94 +'request'=95 +'demand'=96 +'assert'=97 +'deny'=98 +'permitonly'=99 +'linkcheck'=100 +'inheritcheck'=101 +'reqmin'=102 +'reqopt'=103 +'reqrefuse'=104 +'prejitgrant'=105 +'prejitdeny'=106 +'noncasdemand'=107 +'noncaslinkdemand'=108 +'noncasinheritance'=109 +'callconv'=110 +'mdtoken'=111 +'-'=112 +'byreflike'=113 +'.ctor'=114 +'.size'=115 +'.pack'=116 +'with'=117 +'.interfaceimpl'=118 +'.field'=119 +'marshal'=120 +'static'=121 +'initonly'=122 +'privatescope'=123 +'literal'=124 +'notserialized'=125 +'.event'=126 +'.addon'=127 +'.removeon'=128 +'.fire'=129 +'.other'=130 +'.property'=131 +'.set'=132 +'.get'=133 +'in'=134 +'out'=135 +'opt'=136 +'.method'=137 +'final'=138 +'virtual'=139 +'strict'=140 +'hidebysig'=141 +'newslot'=142 +'unmanagedexp'=143 +'reqsecobj'=144 +'pinvokeimpl'=145 +'nomangle'=146 +'lasterr'=147 +'winapi'=148 +'bestfit'=149 +'on'=150 +'off'=151 +'charmaperror'=152 +'.cctor'=153 +'init'=154 +'.try'=155 +'to'=156 +'filter'=157 +'catch'=158 +'finally'=159 +'fault'=160 +'handler'=161 +'.data'=162 +'tls'=163 +'.publicKey'=164 +'.ver'=165 +'.locale'=166 +'.publickeytoken'=167 +'forwarder'=168 +'::'=173 +'..'=174 +'null'=175 +'nullref'=176 +'.hash'=177 +'char'=178 +'string'=179 +'bool'=180 +'int8'=181 +'int16'=182 +'int32'=183 +'int64'=184 +'float32'=185 +'float64'=186 +'int'=191 +'type'=193 +'object'=194 +'.module'=195 +'value'=196 +'valuetype'=197 +'void'=198 +'enum'=199 +'custom'=200 +'fixed'=201 +'systring'=202 +'array'=203 +'variant'=204 +'currency'=205 +'syschar'=206 +'error'=207 +'decimal'=208 +'date'=209 +'bstr'=210 +'lpstr'=211 +'lpwstr'=212 +'lptstr'=213 +'objectref'=214 +'iunknown'=215 +'idispatch'=216 +'struct'=217 +'interface'=218 +'safearray'=219 +'byvalstr'=222 +'ansi'=223 +'tbstr'=225 +'method'=226 +'any'=227 +'lpstruct'=228 +'vector'=229 +'hresult'=230 +'carray'=231 +'userdefined'=232 +'record'=233 +'filetime'=234 +'blob'=235 +'stream'=236 +'storage'=237 +'streamed_object'=238 +'stored_object'=239 +'blob_object'=240 +'cf'=241 +'clsid'=242 +'instance'=243 +'explicit'=244 +'default'=245 +'vararg'=246 +'unmanaged'=247 +'cdecl'=248 +'stdcall'=249 +'thiscall'=250 +'fastcall'=251 +'!'=252 +'typedref'=254 +'.param'=257 +'constraint'=258 +'.this'=259 +'.base'=260 +'.nester'=261 +'&'=262 +'*'=264 +'.'=267 +'+'=268 +'#define'=269 +'#undef'=270 +'#ifdef'=271 +'#ifndef'=272 +'#else'=273 +'#endif'=274 +'#include'=275 +'.mresource'=276 +'ldc.i8'=280 +'calli'=283 +'switch'=285 +'ldstr'=287 +'ldtoken'=289 +'.permission'=295 +'.permissionset'=296 +'.emitbyte'=297 +'.maxstack'=298 +'.entrypoint'=299 +'.zeroinit'=300 +'.locals'=301 +'.export'=302 +'.override'=303 +'.vtentry'=304 diff --git a/src/tools/ilasm/src/ILAssembler/gen/CILBaseVisitor.cs b/src/tools/ilasm/src/ILAssembler/gen/CILBaseVisitor.cs new file mode 100644 index 00000000000000..8fdf39b809e55b --- /dev/null +++ b/src/tools/ilasm/src/ILAssembler/gen/CILBaseVisitor.cs @@ -0,0 +1,1972 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// ANTLR Version: 4.13.1 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +// Generated from /Users/adeel/projects/runtime5/src/tools/ilasm/src/ILAssembler/gen/CIL.g4 by ANTLR 4.13.1 + +// Unreachable code detected +#pragma warning disable 0162 +// The variable '...' is assigned but its value is never used +#pragma warning disable 0219 +// Missing XML comment for publicly visible type or member '...' +#pragma warning disable 1591 +// Ambiguous reference in cref attribute +#pragma warning disable 419 + +namespace ILAssembler { +using Antlr4.Runtime.Misc; +using Antlr4.Runtime.Tree; +using IToken = Antlr4.Runtime.IToken; +using ParserRuleContext = Antlr4.Runtime.ParserRuleContext; + +/// +/// This class provides an empty implementation of , +/// which can be extended to create a visitor which only needs to handle a subset +/// of the available methods. +/// +/// The return type of the visit operation. +[System.CodeDom.Compiler.GeneratedCode("ANTLR", "4.13.1")] +[System.Diagnostics.DebuggerNonUserCode] +[System.CLSCompliant(false)] +public partial class CILBaseVisitor : AbstractParseTreeVisitor, ICILVisitor { + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitId([NotNull] CILParser.IdContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitDottedName([NotNull] CILParser.DottedNameContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitCompQstring([NotNull] CILParser.CompQstringContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitDecls([NotNull] CILParser.DeclsContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitDecl([NotNull] CILParser.DeclContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitSubsystem([NotNull] CILParser.SubsystemContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitCorflags([NotNull] CILParser.CorflagsContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitAlignment([NotNull] CILParser.AlignmentContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitImagebase([NotNull] CILParser.ImagebaseContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitStackreserve([NotNull] CILParser.StackreserveContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitAssemblyBlock([NotNull] CILParser.AssemblyBlockContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitMscorlib([NotNull] CILParser.MscorlibContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitLanguageDecl([NotNull] CILParser.LanguageDeclContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitTypelist([NotNull] CILParser.TypelistContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitInt32([NotNull] CILParser.Int32Context context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitInt64([NotNull] CILParser.Int64Context context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitFloat64([NotNull] CILParser.Float64Context context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitIntOrWildcard([NotNull] CILParser.IntOrWildcardContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitCompControl([NotNull] CILParser.CompControlContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitTypedefDecl([NotNull] CILParser.TypedefDeclContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitCustomDescr([NotNull] CILParser.CustomDescrContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitCustomDescrWithOwner([NotNull] CILParser.CustomDescrWithOwnerContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitCustomType([NotNull] CILParser.CustomTypeContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitOwnerType([NotNull] CILParser.OwnerTypeContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitCustomBlobDescr([NotNull] CILParser.CustomBlobDescrContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitCustomBlobArgs([NotNull] CILParser.CustomBlobArgsContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitCustomBlobNVPairs([NotNull] CILParser.CustomBlobNVPairsContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitFieldOrProp([NotNull] CILParser.FieldOrPropContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitSerializType([NotNull] CILParser.SerializTypeContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitSerializTypeElement([NotNull] CILParser.SerializTypeElementContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitModuleHead([NotNull] CILParser.ModuleHeadContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitVtfixupDecl([NotNull] CILParser.VtfixupDeclContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitVtfixupAttr([NotNull] CILParser.VtfixupAttrContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitVtableDecl([NotNull] CILParser.VtableDeclContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitNameSpaceHead([NotNull] CILParser.NameSpaceHeadContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitClassHead([NotNull] CILParser.ClassHeadContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitClassAttr([NotNull] CILParser.ClassAttrContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitExtendsClause([NotNull] CILParser.ExtendsClauseContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitImplClause([NotNull] CILParser.ImplClauseContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitClassDecls([NotNull] CILParser.ClassDeclsContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitImplList([NotNull] CILParser.ImplListContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitEsHead([NotNull] CILParser.EsHeadContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitExtSourceSpec([NotNull] CILParser.ExtSourceSpecContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitFileDecl([NotNull] CILParser.FileDeclContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitFileAttr([NotNull] CILParser.FileAttrContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitFileEntry([NotNull] CILParser.FileEntryContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitAsmAttrAny([NotNull] CILParser.AsmAttrAnyContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitAsmAttr([NotNull] CILParser.AsmAttrContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitInstr_none([NotNull] CILParser.Instr_noneContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitInstr_var([NotNull] CILParser.Instr_varContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitInstr_i([NotNull] CILParser.Instr_iContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitInstr_i8([NotNull] CILParser.Instr_i8Context context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitInstr_r([NotNull] CILParser.Instr_rContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitInstr_brtarget([NotNull] CILParser.Instr_brtargetContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitInstr_method([NotNull] CILParser.Instr_methodContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitInstr_field([NotNull] CILParser.Instr_fieldContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitInstr_type([NotNull] CILParser.Instr_typeContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitInstr_string([NotNull] CILParser.Instr_stringContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitInstr_sig([NotNull] CILParser.Instr_sigContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitInstr_tok([NotNull] CILParser.Instr_tokContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitInstr_switch([NotNull] CILParser.Instr_switchContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitInstr([NotNull] CILParser.InstrContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitLabels([NotNull] CILParser.LabelsContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitTypeArgs([NotNull] CILParser.TypeArgsContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitBounds([NotNull] CILParser.BoundsContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitSigArgs([NotNull] CILParser.SigArgsContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitSigArg([NotNull] CILParser.SigArgContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitClassName([NotNull] CILParser.ClassNameContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitSlashedName([NotNull] CILParser.SlashedNameContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitAssemblyDecls([NotNull] CILParser.AssemblyDeclsContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitAssemblyDecl([NotNull] CILParser.AssemblyDeclContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitTypeSpec([NotNull] CILParser.TypeSpecContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitNativeType([NotNull] CILParser.NativeTypeContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by the PointerNativeType + /// labeled alternative in . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitPointerNativeType([NotNull] CILParser.PointerNativeTypeContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by the PointerArrayTypeNoSizeData + /// labeled alternative in . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitPointerArrayTypeNoSizeData([NotNull] CILParser.PointerArrayTypeNoSizeDataContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by the PointerArrayTypeSize + /// labeled alternative in . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitPointerArrayTypeSize([NotNull] CILParser.PointerArrayTypeSizeContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by the PointerArrayTypeSizeParamIndex + /// labeled alternative in . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitPointerArrayTypeSizeParamIndex([NotNull] CILParser.PointerArrayTypeSizeParamIndexContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by the PointerArrayTypeParamIndex + /// labeled alternative in . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitPointerArrayTypeParamIndex([NotNull] CILParser.PointerArrayTypeParamIndexContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitNativeTypeElement([NotNull] CILParser.NativeTypeElementContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitIidParamIndex([NotNull] CILParser.IidParamIndexContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitVariantType([NotNull] CILParser.VariantTypeContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitVariantTypeElement([NotNull] CILParser.VariantTypeElementContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitType([NotNull] CILParser.TypeContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by the SZArrayModifier + /// labeled alternative in . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitSZArrayModifier([NotNull] CILParser.SZArrayModifierContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by the ArrayModifier + /// labeled alternative in . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitArrayModifier([NotNull] CILParser.ArrayModifierContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by the ByRefModifier + /// labeled alternative in . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitByRefModifier([NotNull] CILParser.ByRefModifierContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by the PtrModifier + /// labeled alternative in . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitPtrModifier([NotNull] CILParser.PtrModifierContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by the PinnedModifier + /// labeled alternative in . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitPinnedModifier([NotNull] CILParser.PinnedModifierContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by the RequiredModifier + /// labeled alternative in . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitRequiredModifier([NotNull] CILParser.RequiredModifierContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by the OptionalModifier + /// labeled alternative in . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitOptionalModifier([NotNull] CILParser.OptionalModifierContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by the GenericArgumentsModifier + /// labeled alternative in . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitGenericArgumentsModifier([NotNull] CILParser.GenericArgumentsModifierContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitElementType([NotNull] CILParser.ElementTypeContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitSimpleType([NotNull] CILParser.SimpleTypeContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitBound([NotNull] CILParser.BoundContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitSecDecl([NotNull] CILParser.SecDeclContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitSecAttrSetBlob([NotNull] CILParser.SecAttrSetBlobContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitSecAttrBlob([NotNull] CILParser.SecAttrBlobContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitNameValPairs([NotNull] CILParser.NameValPairsContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitNameValPair([NotNull] CILParser.NameValPairContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitTruefalse([NotNull] CILParser.TruefalseContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitCaValue([NotNull] CILParser.CaValueContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitSecAction([NotNull] CILParser.SecActionContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitMethodRef([NotNull] CILParser.MethodRefContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitCallConv([NotNull] CILParser.CallConvContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitCallKind([NotNull] CILParser.CallKindContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitMdtoken([NotNull] CILParser.MdtokenContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitMemberRef([NotNull] CILParser.MemberRefContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitFieldRef([NotNull] CILParser.FieldRefContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitTypeList([NotNull] CILParser.TypeListContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitTyparsClause([NotNull] CILParser.TyparsClauseContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitTyparAttrib([NotNull] CILParser.TyparAttribContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitTyparAttribs([NotNull] CILParser.TyparAttribsContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitTypar([NotNull] CILParser.TyparContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitTypars([NotNull] CILParser.TyparsContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitTyBound([NotNull] CILParser.TyBoundContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitGenArity([NotNull] CILParser.GenArityContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitGenArityNotEmpty([NotNull] CILParser.GenArityNotEmptyContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitClassDecl([NotNull] CILParser.ClassDeclContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitFieldDecl([NotNull] CILParser.FieldDeclContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitFieldAttr([NotNull] CILParser.FieldAttrContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitAtOpt([NotNull] CILParser.AtOptContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitInitOpt([NotNull] CILParser.InitOptContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitRepeatOpt([NotNull] CILParser.RepeatOptContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitEventHead([NotNull] CILParser.EventHeadContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitEventAttr([NotNull] CILParser.EventAttrContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitEventDecls([NotNull] CILParser.EventDeclsContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitEventDecl([NotNull] CILParser.EventDeclContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitPropHead([NotNull] CILParser.PropHeadContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitPropAttr([NotNull] CILParser.PropAttrContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitPropDecls([NotNull] CILParser.PropDeclsContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitPropDecl([NotNull] CILParser.PropDeclContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitMarshalClause([NotNull] CILParser.MarshalClauseContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitMarshalBlob([NotNull] CILParser.MarshalBlobContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitParamAttr([NotNull] CILParser.ParamAttrContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitParamAttrElement([NotNull] CILParser.ParamAttrElementContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitMethodHead([NotNull] CILParser.MethodHeadContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitMethAttr([NotNull] CILParser.MethAttrContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitPinvImpl([NotNull] CILParser.PinvImplContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitPinvAttr([NotNull] CILParser.PinvAttrContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitMethodName([NotNull] CILParser.MethodNameContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitImplAttr([NotNull] CILParser.ImplAttrContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitMethodDecls([NotNull] CILParser.MethodDeclsContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitMethodDecl([NotNull] CILParser.MethodDeclContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitLabelDecl([NotNull] CILParser.LabelDeclContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitCustomDescrInMethodBody([NotNull] CILParser.CustomDescrInMethodBodyContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitScopeBlock([NotNull] CILParser.ScopeBlockContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitSehBlock([NotNull] CILParser.SehBlockContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitSehClauses([NotNull] CILParser.SehClausesContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitTryBlock([NotNull] CILParser.TryBlockContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitSehClause([NotNull] CILParser.SehClauseContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitFilterClause([NotNull] CILParser.FilterClauseContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitCatchClause([NotNull] CILParser.CatchClauseContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitFinallyClause([NotNull] CILParser.FinallyClauseContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitFaultClause([NotNull] CILParser.FaultClauseContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitHandlerBlock([NotNull] CILParser.HandlerBlockContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitDataDecl([NotNull] CILParser.DataDeclContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitDdHead([NotNull] CILParser.DdHeadContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitTls([NotNull] CILParser.TlsContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitDdBody([NotNull] CILParser.DdBodyContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitDdItemList([NotNull] CILParser.DdItemListContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitDdItemCount([NotNull] CILParser.DdItemCountContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitDdItem([NotNull] CILParser.DdItemContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitFieldSerInit([NotNull] CILParser.FieldSerInitContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitBytes([NotNull] CILParser.BytesContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitHexbytes([NotNull] CILParser.HexbytesContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitFieldInit([NotNull] CILParser.FieldInitContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitSerInit([NotNull] CILParser.SerInitContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitF32seq([NotNull] CILParser.F32seqContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitF64seq([NotNull] CILParser.F64seqContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitI64seq([NotNull] CILParser.I64seqContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitI32seq([NotNull] CILParser.I32seqContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitI16seq([NotNull] CILParser.I16seqContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitI8seq([NotNull] CILParser.I8seqContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitBoolSeq([NotNull] CILParser.BoolSeqContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitSqstringSeq([NotNull] CILParser.SqstringSeqContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitClassSeq([NotNull] CILParser.ClassSeqContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitClassSeqElement([NotNull] CILParser.ClassSeqElementContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitObjSeq([NotNull] CILParser.ObjSeqContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitCustomAttrDecl([NotNull] CILParser.CustomAttrDeclContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitAsmOrRefDecl([NotNull] CILParser.AsmOrRefDeclContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitAssemblyRefHead([NotNull] CILParser.AssemblyRefHeadContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitAssemblyRefDecls([NotNull] CILParser.AssemblyRefDeclsContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitAssemblyRefDecl([NotNull] CILParser.AssemblyRefDeclContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitExptypeHead([NotNull] CILParser.ExptypeHeadContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitExportHead([NotNull] CILParser.ExportHeadContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitExptAttr([NotNull] CILParser.ExptAttrContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitExptypeDecls([NotNull] CILParser.ExptypeDeclsContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitExptypeDecl([NotNull] CILParser.ExptypeDeclContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitManifestResHead([NotNull] CILParser.ManifestResHeadContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitManresAttr([NotNull] CILParser.ManresAttrContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitManifestResDecls([NotNull] CILParser.ManifestResDeclsContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitManifestResDecl([NotNull] CILParser.ManifestResDeclContext context) { return VisitChildren(context); } +} +} // namespace ILAssembler diff --git a/src/tools/ilasm/src/ILAssembler/gen/CILLexer.cs b/src/tools/ilasm/src/ILAssembler/gen/CILLexer.cs new file mode 100644 index 00000000000000..b49cc65a44ac07 --- /dev/null +++ b/src/tools/ilasm/src/ILAssembler/gen/CILLexer.cs @@ -0,0 +1,1979 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// ANTLR Version: 4.13.1 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +// Generated from /Users/adeel/projects/runtime5/src/tools/ilasm/src/ILAssembler/gen/CIL.g4 by ANTLR 4.13.1 + +// Unreachable code detected +#pragma warning disable 0162 +// The variable '...' is assigned but its value is never used +#pragma warning disable 0219 +// Missing XML comment for publicly visible type or member '...' +#pragma warning disable 1591 +// Ambiguous reference in cref attribute +#pragma warning disable 419 + +namespace ILAssembler { +using System; +using System.IO; +using System.Text; +using Antlr4.Runtime; +using Antlr4.Runtime.Atn; +using Antlr4.Runtime.Misc; +using DFA = Antlr4.Runtime.Dfa.DFA; + +[System.CodeDom.Compiler.GeneratedCode("ANTLR", "4.13.1")] +[System.CLSCompliant(false)] +public partial class CILLexer : Lexer { + protected static DFA[] decisionToDFA; + protected static PredictionContextCache sharedContextCache = new PredictionContextCache(); + public const int + T__0=1, T__1=2, T__2=3, T__3=4, T__4=5, T__5=6, T__6=7, T__7=8, T__8=9, + T__9=10, T__10=11, T__11=12, T__12=13, T__13=14, T__14=15, T__15=16, T__16=17, + T__17=18, T__18=19, T__19=20, T__20=21, T__21=22, T__22=23, T__23=24, + T__24=25, T__25=26, T__26=27, T__27=28, T__28=29, T__29=30, T__30=31, + T__31=32, T__32=33, T__33=34, T__34=35, T__35=36, T__36=37, T__37=38, + T__38=39, T__39=40, T__40=41, T__41=42, T__42=43, T__43=44, T__44=45, + T__45=46, T__46=47, T__47=48, T__48=49, T__49=50, T__50=51, T__51=52, + T__52=53, T__53=54, T__54=55, T__55=56, T__56=57, T__57=58, T__58=59, + T__59=60, T__60=61, T__61=62, T__62=63, T__63=64, T__64=65, T__65=66, + T__66=67, T__67=68, T__68=69, T__69=70, T__70=71, T__71=72, T__72=73, + T__73=74, T__74=75, T__75=76, T__76=77, T__77=78, T__78=79, T__79=80, + T__80=81, T__81=82, T__82=83, T__83=84, T__84=85, T__85=86, T__86=87, + T__87=88, T__88=89, T__89=90, T__90=91, T__91=92, T__92=93, T__93=94, + T__94=95, T__95=96, T__96=97, T__97=98, T__98=99, T__99=100, T__100=101, + T__101=102, T__102=103, T__103=104, T__104=105, T__105=106, T__106=107, + T__107=108, T__108=109, T__109=110, T__110=111, T__111=112, T__112=113, + T__113=114, T__114=115, T__115=116, T__116=117, T__117=118, T__118=119, + T__119=120, T__120=121, T__121=122, T__122=123, T__123=124, T__124=125, + T__125=126, T__126=127, T__127=128, T__128=129, T__129=130, T__130=131, + T__131=132, T__132=133, T__133=134, T__134=135, T__135=136, T__136=137, + T__137=138, T__138=139, T__139=140, T__140=141, T__141=142, T__142=143, + T__143=144, T__144=145, T__145=146, T__146=147, T__147=148, T__148=149, + T__149=150, T__150=151, T__151=152, T__152=153, T__153=154, T__154=155, + T__155=156, T__156=157, T__157=158, T__158=159, T__159=160, T__160=161, + T__161=162, T__162=163, T__163=164, T__164=165, T__165=166, T__166=167, + T__167=168, INT32=169, INT64=170, FLOAT64=171, HEXBYTE=172, DCOLON=173, + ELLIPSIS=174, NULL=175, NULLREF=176, HASH=177, CHAR=178, STRING=179, BOOL=180, + INT8=181, INT16=182, INT32_=183, INT64_=184, FLOAT32=185, FLOAT64_=186, + UINT8=187, UINT16=188, UINT32=189, UINT64=190, INT=191, UINT=192, TYPE=193, + OBJECT=194, MODULE=195, VALUE=196, VALUETYPE=197, VOID=198, ENUM=199, + CUSTOM=200, FIXED=201, SYSSTRING=202, ARRAY=203, VARIANT=204, CURRENCY=205, + SYSCHAR=206, ERROR=207, DECIMAL=208, DATE=209, BSTR=210, LPSTR=211, LPWSTR=212, + LPTSTR=213, OBJECTREF=214, IUNKNOWN=215, IDISPATCH=216, STRUCT=217, INTERFACE=218, + SAFEARRAY=219, NESTEDSTRUCT=220, VARIANTBOOL=221, BYVALSTR=222, ANSI=223, + ANSIBSTR=224, TBSTR=225, METHOD=226, ANY=227, LPSTRUCT=228, VECTOR=229, + HRESULT=230, CARRAY=231, USERDEFINED=232, RECORD=233, FILETIME=234, BLOB=235, + STREAM=236, STORAGE=237, STREAMED_OBJECT=238, STORED_OBJECT=239, BLOB_OBJECT=240, + CF=241, CLSID=242, INSTANCE=243, EXPLICIT=244, DEFAULT=245, VARARG=246, + UNMANAGED=247, CDECL=248, STDCALL=249, THISCALL=250, FASTCALL=251, TYPE_PARAMETER=252, + METHOD_TYPE_PARAMETER=253, TYPEDREF=254, NATIVE_INT=255, NATIVE_UINT=256, + PARAM=257, CONSTRAINT=258, THIS=259, BASE=260, NESTER=261, REF=262, ARRAY_TYPE_NO_BOUNDS=263, + PTR=264, QSTRING=265, SQSTRING=266, DOT=267, PLUS=268, PP_DEFINE=269, + PP_UNDEF=270, PP_IFDEF=271, PP_IFNDEF=272, PP_ELSE=273, PP_ENDIF=274, + PP_INCLUDE=275, MRESOURCE=276, INSTR_NONE=277, INSTR_VAR=278, INSTR_I=279, + INSTR_I8=280, INSTR_R=281, INSTR_METHOD=282, INSTR_SIG=283, INSTR_BRTARGET=284, + INSTR_SWITCH=285, INSTR_TYPE=286, INSTR_STRING=287, INSTR_FIELD=288, INSTR_TOK=289, + DOTTEDNAME=290, ID=291, WS=292, SINGLE_LINE_COMMENT=293, COMMENT=294, + PERMISSION=295, PERMISSIONSET=296, EMITBYTE=297, MAXSTACK=298, ENTRYPOINT=299, + ZEROINIT=300, LOCALS=301, EXPORT=302, OVERRIDE=303, VTENTRY=304; + public static string[] channelNames = { + "DEFAULT_TOKEN_CHANNEL", "HIDDEN" + }; + + public static string[] modeNames = { + "DEFAULT_MODE" + }; + + public static readonly string[] ruleNames = { + "T__0", "T__1", "T__2", "T__3", "T__4", "T__5", "T__6", "T__7", "T__8", + "T__9", "T__10", "T__11", "T__12", "T__13", "T__14", "T__15", "T__16", + "T__17", "T__18", "T__19", "T__20", "T__21", "T__22", "T__23", "T__24", + "T__25", "T__26", "T__27", "T__28", "T__29", "T__30", "T__31", "T__32", + "T__33", "T__34", "T__35", "T__36", "T__37", "T__38", "T__39", "T__40", + "T__41", "T__42", "T__43", "T__44", "T__45", "T__46", "T__47", "T__48", + "T__49", "T__50", "T__51", "T__52", "T__53", "T__54", "T__55", "T__56", + "T__57", "T__58", "T__59", "T__60", "T__61", "T__62", "T__63", "T__64", + "T__65", "T__66", "T__67", "T__68", "T__69", "T__70", "T__71", "T__72", + "T__73", "T__74", "T__75", "T__76", "T__77", "T__78", "T__79", "T__80", + "T__81", "T__82", "T__83", "T__84", "T__85", "T__86", "T__87", "T__88", + "T__89", "T__90", "T__91", "T__92", "T__93", "T__94", "T__95", "T__96", + "T__97", "T__98", "T__99", "T__100", "T__101", "T__102", "T__103", "T__104", + "T__105", "T__106", "T__107", "T__108", "T__109", "T__110", "T__111", + "T__112", "T__113", "T__114", "T__115", "T__116", "T__117", "T__118", + "T__119", "T__120", "T__121", "T__122", "T__123", "T__124", "T__125", + "T__126", "T__127", "T__128", "T__129", "T__130", "T__131", "T__132", + "T__133", "T__134", "T__135", "T__136", "T__137", "T__138", "T__139", + "T__140", "T__141", "T__142", "T__143", "T__144", "T__145", "T__146", + "T__147", "T__148", "T__149", "T__150", "T__151", "T__152", "T__153", + "T__154", "T__155", "T__156", "T__157", "T__158", "T__159", "T__160", + "T__161", "T__162", "T__163", "T__164", "T__165", "T__166", "T__167", + "INT32", "INT64", "FLOAT64", "HEXBYTE", "DCOLON", "ELLIPSIS", "NULL", + "NULLREF", "HASH", "CHAR", "STRING", "BOOL", "INT8", "INT16", "INT32_", + "INT64_", "FLOAT32", "FLOAT64_", "UNSIGNED", "UINT8", "UINT16", "UINT32", + "UINT64", "INT", "UINT", "TYPE", "OBJECT", "MODULE", "VALUE", "VALUETYPE", + "VOID", "ENUM", "CUSTOM", "FIXED", "SYSSTRING", "ARRAY", "VARIANT", "CURRENCY", + "SYSCHAR", "ERROR", "DECIMAL", "DATE", "BSTR", "LPSTR", "LPWSTR", "LPTSTR", + "OBJECTREF", "IUNKNOWN", "IDISPATCH", "STRUCT", "INTERFACE", "SAFEARRAY", + "NESTEDSTRUCT", "VARIANTBOOL", "BYVALSTR", "ANSI", "ANSIBSTR", "TBSTR", + "METHOD", "ANY", "LPSTRUCT", "VECTOR", "HRESULT", "CARRAY", "USERDEFINED", + "RECORD", "FILETIME", "BLOB", "STREAM", "STORAGE", "STREAMED_OBJECT", + "STORED_OBJECT", "BLOB_OBJECT", "CF", "CLSID", "INSTANCE", "EXPLICIT", + "DEFAULT", "VARARG", "UNMANAGED", "CDECL", "STDCALL", "THISCALL", "FASTCALL", + "TYPE_PARAMETER", "METHOD_TYPE_PARAMETER", "TYPEDREF", "NATIVE_INT", "NATIVE_UINT", + "PARAM", "CONSTRAINT", "THIS", "BASE", "NESTER", "REF", "ARRAY_TYPE_NO_BOUNDS", + "PTR", "QSTRING", "SQSTRING", "DOT", "PLUS", "PP_DEFINE", "PP_UNDEF", + "PP_IFDEF", "PP_IFNDEF", "PP_ELSE", "PP_ENDIF", "PP_INCLUDE", "MRESOURCE", + "INSTR_NONE", "INSTR_VAR", "INSTR_I", "INSTR_I8", "INSTR_R", "INSTR_METHOD", + "INSTR_SIG", "INSTR_BRTARGET", "INSTR_SWITCH", "INSTR_TYPE", "INSTR_STRING", + "INSTR_FIELD", "INSTR_TOK", "IDSTART", "IDCONT", "DOTTEDNAME", "ID", "WS", + "SINGLE_LINE_COMMENT", "COMMENT", "PERMISSION", "PERMISSIONSET", "EMITBYTE", + "MAXSTACK", "ENTRYPOINT", "ZEROINIT", "LOCALS", "EXPORT", "OVERRIDE", + "VTENTRY" + }; + + + public CILLexer(ICharStream input) + : this(input, Console.Out, Console.Error) { } + + public CILLexer(ICharStream input, TextWriter output, TextWriter errorOutput) + : base(input, output, errorOutput) + { + Interpreter = new LexerATNSimulator(this, _ATN, decisionToDFA, sharedContextCache); + } + + private static readonly string[] _LiteralNames = { + null, "'native'", "'cil'", "'optil'", "'managed'", "'forwardref'", "'preservesig'", + "'runtime'", "'internalcall'", "'synchronized'", "'noinlining'", "'aggressiveinlining'", + "'nooptimization'", "'aggressiveoptimization'", "'async'", "'extended'", + "'{'", "'}'", "'.subsystem'", "'.corflags'", "'.file'", "'alignment'", + "'.imagebase'", "'.stackreserve'", "'.assembly'", "'.mscorlib'", "'.language'", + "','", "'.typelist'", "'('", "')'", "';'", "'.typedef'", "'as'", "'.custom'", + "'='", "'field'", "'property'", "'class'", "'extern'", "'.vtfixup'", "'['", + "']'", "'at'", "'fromunmanaged'", "'callmostderived'", "'retainappdomain'", + "'.vtable'", "'.namespace'", "'.class'", "'public'", "'private'", "'sealed'", + "'abstract'", "'auto'", "'sequential'", "'unicode'", "'autochar'", "'import'", + "'serializable'", "'windowsruntime'", "'nested'", "'family'", "'assembly'", + "'famandassem'", "'famorassem'", "'beforefieldinit'", "'specialname'", + "'rtspecialname'", "'flags'", "'extends'", "'implements'", "'.line'", + "'#line'", "':'", "'nometadata'", "'retargetable'", "'noplatform'", "'legacy library'", + "'x86'", "'amd64'", "'arm'", "'arm64'", "'bytearray'", "'<'", "'>'", "'()'", + "'/'", "'algorithm'", "'iidparam'", "'pinned'", "'modreq'", "'modopt'", + "'true'", "'false'", "'request'", "'demand'", "'assert'", "'deny'", "'permitonly'", + "'linkcheck'", "'inheritcheck'", "'reqmin'", "'reqopt'", "'reqrefuse'", + "'prejitgrant'", "'prejitdeny'", "'noncasdemand'", "'noncaslinkdemand'", + "'noncasinheritance'", "'callconv'", "'mdtoken'", "'-'", "'byreflike'", + "'.ctor'", "'.size'", "'.pack'", "'with'", "'.interfaceimpl'", "'.field'", + "'marshal'", "'static'", "'initonly'", "'privatescope'", "'literal'", + "'notserialized'", "'.event'", "'.addon'", "'.removeon'", "'.fire'", "'.other'", + "'.property'", "'.set'", "'.get'", "'in'", "'out'", "'opt'", "'.method'", + "'final'", "'virtual'", "'strict'", "'hidebysig'", "'newslot'", "'unmanagedexp'", + "'reqsecobj'", "'pinvokeimpl'", "'nomangle'", "'lasterr'", "'winapi'", + "'bestfit'", "'on'", "'off'", "'charmaperror'", "'.cctor'", "'init'", + "'.try'", "'to'", "'filter'", "'catch'", "'finally'", "'fault'", "'handler'", + "'.data'", "'tls'", "'.publicKey'", "'.ver'", "'.locale'", "'.publickeytoken'", + "'forwarder'", null, null, null, null, "'::'", "'..'", "'null'", "'nullref'", + "'.hash'", "'char'", "'string'", "'bool'", "'int8'", "'int16'", "'int32'", + "'int64'", "'float32'", "'float64'", null, null, null, null, "'int'", + null, "'type'", "'object'", "'.module'", "'value'", "'valuetype'", "'void'", + "'enum'", "'custom'", "'fixed'", "'systring'", "'array'", "'variant'", + "'currency'", "'syschar'", "'error'", "'decimal'", "'date'", "'bstr'", + "'lpstr'", "'lpwstr'", "'lptstr'", "'objectref'", "'iunknown'", "'idispatch'", + "'struct'", "'interface'", "'safearray'", null, null, "'byvalstr'", "'ansi'", + null, "'tbstr'", "'method'", "'any'", "'lpstruct'", "'vector'", "'hresult'", + "'carray'", "'userdefined'", "'record'", "'filetime'", "'blob'", "'stream'", + "'storage'", "'streamed_object'", "'stored_object'", "'blob_object'", + "'cf'", "'clsid'", "'instance'", "'explicit'", "'default'", "'vararg'", + "'unmanaged'", "'cdecl'", "'stdcall'", "'thiscall'", "'fastcall'", "'!'", + null, "'typedref'", null, null, "'.param'", "'constraint'", "'.this'", + "'.base'", "'.nester'", "'&'", null, "'*'", null, null, "'.'", "'+'", + "'#define'", "'#undef'", "'#ifdef'", "'#ifndef'", "'#else'", "'#endif'", + "'#include'", "'.mresource'", null, null, null, "'ldc.i8'", null, null, + "'calli'", null, "'switch'", null, "'ldstr'", null, "'ldtoken'", null, + null, null, null, null, "'.permission'", "'.permissionset'", "'.emitbyte'", + "'.maxstack'", "'.entrypoint'", "'.zeroinit'", "'.locals'", "'.export'", + "'.override'", "'.vtentry'" + }; + private static readonly string[] _SymbolicNames = { + null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, + null, "INT32", "INT64", "FLOAT64", "HEXBYTE", "DCOLON", "ELLIPSIS", "NULL", + "NULLREF", "HASH", "CHAR", "STRING", "BOOL", "INT8", "INT16", "INT32_", + "INT64_", "FLOAT32", "FLOAT64_", "UINT8", "UINT16", "UINT32", "UINT64", + "INT", "UINT", "TYPE", "OBJECT", "MODULE", "VALUE", "VALUETYPE", "VOID", + "ENUM", "CUSTOM", "FIXED", "SYSSTRING", "ARRAY", "VARIANT", "CURRENCY", + "SYSCHAR", "ERROR", "DECIMAL", "DATE", "BSTR", "LPSTR", "LPWSTR", "LPTSTR", + "OBJECTREF", "IUNKNOWN", "IDISPATCH", "STRUCT", "INTERFACE", "SAFEARRAY", + "NESTEDSTRUCT", "VARIANTBOOL", "BYVALSTR", "ANSI", "ANSIBSTR", "TBSTR", + "METHOD", "ANY", "LPSTRUCT", "VECTOR", "HRESULT", "CARRAY", "USERDEFINED", + "RECORD", "FILETIME", "BLOB", "STREAM", "STORAGE", "STREAMED_OBJECT", + "STORED_OBJECT", "BLOB_OBJECT", "CF", "CLSID", "INSTANCE", "EXPLICIT", + "DEFAULT", "VARARG", "UNMANAGED", "CDECL", "STDCALL", "THISCALL", "FASTCALL", + "TYPE_PARAMETER", "METHOD_TYPE_PARAMETER", "TYPEDREF", "NATIVE_INT", "NATIVE_UINT", + "PARAM", "CONSTRAINT", "THIS", "BASE", "NESTER", "REF", "ARRAY_TYPE_NO_BOUNDS", + "PTR", "QSTRING", "SQSTRING", "DOT", "PLUS", "PP_DEFINE", "PP_UNDEF", + "PP_IFDEF", "PP_IFNDEF", "PP_ELSE", "PP_ENDIF", "PP_INCLUDE", "MRESOURCE", + "INSTR_NONE", "INSTR_VAR", "INSTR_I", "INSTR_I8", "INSTR_R", "INSTR_METHOD", + "INSTR_SIG", "INSTR_BRTARGET", "INSTR_SWITCH", "INSTR_TYPE", "INSTR_STRING", + "INSTR_FIELD", "INSTR_TOK", "DOTTEDNAME", "ID", "WS", "SINGLE_LINE_COMMENT", + "COMMENT", "PERMISSION", "PERMISSIONSET", "EMITBYTE", "MAXSTACK", "ENTRYPOINT", + "ZEROINIT", "LOCALS", "EXPORT", "OVERRIDE", "VTENTRY" + }; + public static readonly IVocabulary DefaultVocabulary = new Vocabulary(_LiteralNames, _SymbolicNames); + + [NotNull] + public override IVocabulary Vocabulary + { + get + { + return DefaultVocabulary; + } + } + + public override string GrammarFileName { get { return "CIL.g4"; } } + + public override string[] RuleNames { get { return ruleNames; } } + + public override string[] ChannelNames { get { return channelNames; } } + + public override string[] ModeNames { get { return modeNames; } } + + public override int[] SerializedAtn { get { return _serializedATN; } } + + static CILLexer() { + decisionToDFA = new DFA[_ATN.NumberOfDecisions]; + for (int i = 0; i < _ATN.NumberOfDecisions; i++) { + decisionToDFA[i] = new DFA(_ATN.GetDecisionState(i), i); + } + } + private static int[] _serializedATN = { + 4,0,304,4665,6,-1,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6, + 7,6,2,7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12,2,13,7,13,2, + 14,7,14,2,15,7,15,2,16,7,16,2,17,7,17,2,18,7,18,2,19,7,19,2,20,7,20,2, + 21,7,21,2,22,7,22,2,23,7,23,2,24,7,24,2,25,7,25,2,26,7,26,2,27,7,27,2, + 28,7,28,2,29,7,29,2,30,7,30,2,31,7,31,2,32,7,32,2,33,7,33,2,34,7,34,2, + 35,7,35,2,36,7,36,2,37,7,37,2,38,7,38,2,39,7,39,2,40,7,40,2,41,7,41,2, + 42,7,42,2,43,7,43,2,44,7,44,2,45,7,45,2,46,7,46,2,47,7,47,2,48,7,48,2, + 49,7,49,2,50,7,50,2,51,7,51,2,52,7,52,2,53,7,53,2,54,7,54,2,55,7,55,2, + 56,7,56,2,57,7,57,2,58,7,58,2,59,7,59,2,60,7,60,2,61,7,61,2,62,7,62,2, + 63,7,63,2,64,7,64,2,65,7,65,2,66,7,66,2,67,7,67,2,68,7,68,2,69,7,69,2, + 70,7,70,2,71,7,71,2,72,7,72,2,73,7,73,2,74,7,74,2,75,7,75,2,76,7,76,2, + 77,7,77,2,78,7,78,2,79,7,79,2,80,7,80,2,81,7,81,2,82,7,82,2,83,7,83,2, + 84,7,84,2,85,7,85,2,86,7,86,2,87,7,87,2,88,7,88,2,89,7,89,2,90,7,90,2, + 91,7,91,2,92,7,92,2,93,7,93,2,94,7,94,2,95,7,95,2,96,7,96,2,97,7,97,2, + 98,7,98,2,99,7,99,2,100,7,100,2,101,7,101,2,102,7,102,2,103,7,103,2,104, + 7,104,2,105,7,105,2,106,7,106,2,107,7,107,2,108,7,108,2,109,7,109,2,110, + 7,110,2,111,7,111,2,112,7,112,2,113,7,113,2,114,7,114,2,115,7,115,2,116, + 7,116,2,117,7,117,2,118,7,118,2,119,7,119,2,120,7,120,2,121,7,121,2,122, + 7,122,2,123,7,123,2,124,7,124,2,125,7,125,2,126,7,126,2,127,7,127,2,128, + 7,128,2,129,7,129,2,130,7,130,2,131,7,131,2,132,7,132,2,133,7,133,2,134, + 7,134,2,135,7,135,2,136,7,136,2,137,7,137,2,138,7,138,2,139,7,139,2,140, + 7,140,2,141,7,141,2,142,7,142,2,143,7,143,2,144,7,144,2,145,7,145,2,146, + 7,146,2,147,7,147,2,148,7,148,2,149,7,149,2,150,7,150,2,151,7,151,2,152, + 7,152,2,153,7,153,2,154,7,154,2,155,7,155,2,156,7,156,2,157,7,157,2,158, + 7,158,2,159,7,159,2,160,7,160,2,161,7,161,2,162,7,162,2,163,7,163,2,164, + 7,164,2,165,7,165,2,166,7,166,2,167,7,167,2,168,7,168,2,169,7,169,2,170, + 7,170,2,171,7,171,2,172,7,172,2,173,7,173,2,174,7,174,2,175,7,175,2,176, + 7,176,2,177,7,177,2,178,7,178,2,179,7,179,2,180,7,180,2,181,7,181,2,182, + 7,182,2,183,7,183,2,184,7,184,2,185,7,185,2,186,7,186,2,187,7,187,2,188, + 7,188,2,189,7,189,2,190,7,190,2,191,7,191,2,192,7,192,2,193,7,193,2,194, + 7,194,2,195,7,195,2,196,7,196,2,197,7,197,2,198,7,198,2,199,7,199,2,200, + 7,200,2,201,7,201,2,202,7,202,2,203,7,203,2,204,7,204,2,205,7,205,2,206, + 7,206,2,207,7,207,2,208,7,208,2,209,7,209,2,210,7,210,2,211,7,211,2,212, + 7,212,2,213,7,213,2,214,7,214,2,215,7,215,2,216,7,216,2,217,7,217,2,218, + 7,218,2,219,7,219,2,220,7,220,2,221,7,221,2,222,7,222,2,223,7,223,2,224, + 7,224,2,225,7,225,2,226,7,226,2,227,7,227,2,228,7,228,2,229,7,229,2,230, + 7,230,2,231,7,231,2,232,7,232,2,233,7,233,2,234,7,234,2,235,7,235,2,236, + 7,236,2,237,7,237,2,238,7,238,2,239,7,239,2,240,7,240,2,241,7,241,2,242, + 7,242,2,243,7,243,2,244,7,244,2,245,7,245,2,246,7,246,2,247,7,247,2,248, + 7,248,2,249,7,249,2,250,7,250,2,251,7,251,2,252,7,252,2,253,7,253,2,254, + 7,254,2,255,7,255,2,256,7,256,2,257,7,257,2,258,7,258,2,259,7,259,2,260, + 7,260,2,261,7,261,2,262,7,262,2,263,7,263,2,264,7,264,2,265,7,265,2,266, + 7,266,2,267,7,267,2,268,7,268,2,269,7,269,2,270,7,270,2,271,7,271,2,272, + 7,272,2,273,7,273,2,274,7,274,2,275,7,275,2,276,7,276,2,277,7,277,2,278, + 7,278,2,279,7,279,2,280,7,280,2,281,7,281,2,282,7,282,2,283,7,283,2,284, + 7,284,2,285,7,285,2,286,7,286,2,287,7,287,2,288,7,288,2,289,7,289,2,290, + 7,290,2,291,7,291,2,292,7,292,2,293,7,293,2,294,7,294,2,295,7,295,2,296, + 7,296,2,297,7,297,2,298,7,298,2,299,7,299,2,300,7,300,2,301,7,301,2,302, + 7,302,2,303,7,303,2,304,7,304,2,305,7,305,2,306,7,306,1,0,1,0,1,0,1,0, + 1,0,1,0,1,0,1,1,1,1,1,1,1,1,1,2,1,2,1,2,1,2,1,2,1,2,1,3,1,3,1,3,1,3,1, + 3,1,3,1,3,1,3,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,5,1,5,1,5, + 1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1, + 7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,8,1,8,1,8,1,8,1,8, + 1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1, + 9,1,9,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10, + 1,10,1,10,1,10,1,10,1,10,1,10,1,11,1,11,1,11,1,11,1,11,1,11,1,11,1,11, + 1,11,1,11,1,11,1,11,1,11,1,11,1,11,1,12,1,12,1,12,1,12,1,12,1,12,1,12, + 1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12, + 1,12,1,12,1,13,1,13,1,13,1,13,1,13,1,13,1,14,1,14,1,14,1,14,1,14,1,14, + 1,14,1,14,1,14,1,15,1,15,1,16,1,16,1,17,1,17,1,17,1,17,1,17,1,17,1,17, + 1,17,1,17,1,17,1,17,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18, + 1,19,1,19,1,19,1,19,1,19,1,19,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1,20, + 1,20,1,20,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,22, + 1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,23, + 1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,24,1,24,1,24,1,24,1,24, + 1,24,1,24,1,24,1,24,1,24,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25, + 1,25,1,26,1,26,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,28, + 1,28,1,29,1,29,1,30,1,30,1,31,1,31,1,31,1,31,1,31,1,31,1,31,1,31,1,31, + 1,32,1,32,1,32,1,33,1,33,1,33,1,33,1,33,1,33,1,33,1,33,1,34,1,34,1,35, + 1,35,1,35,1,35,1,35,1,35,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36, + 1,37,1,37,1,37,1,37,1,37,1,37,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,39, + 1,39,1,39,1,39,1,39,1,39,1,39,1,39,1,39,1,40,1,40,1,41,1,41,1,42,1,42, + 1,42,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1,43, + 1,43,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44, + 1,44,1,44,1,44,1,45,1,45,1,45,1,45,1,45,1,45,1,45,1,45,1,45,1,45,1,45, + 1,45,1,45,1,45,1,45,1,45,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,47, + 1,47,1,47,1,47,1,47,1,47,1,47,1,47,1,47,1,47,1,47,1,48,1,48,1,48,1,48, + 1,48,1,48,1,48,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,50,1,50,1,50,1,50, + 1,50,1,50,1,50,1,50,1,51,1,51,1,51,1,51,1,51,1,51,1,51,1,52,1,52,1,52, + 1,52,1,52,1,52,1,52,1,52,1,52,1,53,1,53,1,53,1,53,1,53,1,54,1,54,1,54, + 1,54,1,54,1,54,1,54,1,54,1,54,1,54,1,54,1,55,1,55,1,55,1,55,1,55,1,55, + 1,55,1,55,1,56,1,56,1,56,1,56,1,56,1,56,1,56,1,56,1,56,1,57,1,57,1,57, + 1,57,1,57,1,57,1,57,1,58,1,58,1,58,1,58,1,58,1,58,1,58,1,58,1,58,1,58, + 1,58,1,58,1,58,1,59,1,59,1,59,1,59,1,59,1,59,1,59,1,59,1,59,1,59,1,59, + 1,59,1,59,1,59,1,59,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,61,1,61,1,61, + 1,61,1,61,1,61,1,61,1,62,1,62,1,62,1,62,1,62,1,62,1,62,1,62,1,62,1,63, + 1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,64,1,64,1,64, + 1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,65,1,65,1,65,1,65,1,65,1,65, + 1,65,1,65,1,65,1,65,1,65,1,65,1,65,1,65,1,65,1,65,1,66,1,66,1,66,1,66, + 1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,67,1,67,1,67,1,67,1,67,1,67, + 1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,68,1,68,1,68,1,68,1,68,1,68, + 1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,70,1,70,1,70,1,70,1,70,1,70, + 1,70,1,70,1,70,1,70,1,70,1,71,1,71,1,71,1,71,1,71,1,71,1,72,1,72,1,72, + 1,72,1,72,1,72,1,73,1,73,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74, + 1,74,1,74,1,75,1,75,1,75,1,75,1,75,1,75,1,75,1,75,1,75,1,75,1,75,1,75, + 1,75,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1,77,1,77, + 1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,78, + 1,78,1,78,1,78,1,79,1,79,1,79,1,79,1,79,1,79,1,80,1,80,1,80,1,80,1,81, + 1,81,1,81,1,81,1,81,1,81,1,82,1,82,1,82,1,82,1,82,1,82,1,82,1,82,1,82, + 1,82,1,83,1,83,1,84,1,84,1,85,1,85,1,85,1,86,1,86,1,87,1,87,1,87,1,87, + 1,87,1,87,1,87,1,87,1,87,1,87,1,88,1,88,1,88,1,88,1,88,1,88,1,88,1,88, + 1,88,1,89,1,89,1,89,1,89,1,89,1,89,1,89,1,90,1,90,1,90,1,90,1,90,1,90, + 1,90,1,91,1,91,1,91,1,91,1,91,1,91,1,91,1,92,1,92,1,92,1,92,1,92,1,93, + 1,93,1,93,1,93,1,93,1,93,1,94,1,94,1,94,1,94,1,94,1,94,1,94,1,94,1,95, + 1,95,1,95,1,95,1,95,1,95,1,95,1,96,1,96,1,96,1,96,1,96,1,96,1,96,1,97, + 1,97,1,97,1,97,1,97,1,98,1,98,1,98,1,98,1,98,1,98,1,98,1,98,1,98,1,98, + 1,98,1,99,1,99,1,99,1,99,1,99,1,99,1,99,1,99,1,99,1,99,1,100,1,100,1,100, + 1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,101,1,101, + 1,101,1,101,1,101,1,101,1,101,1,102,1,102,1,102,1,102,1,102,1,102,1,102, + 1,103,1,103,1,103,1,103,1,103,1,103,1,103,1,103,1,103,1,103,1,104,1,104, + 1,104,1,104,1,104,1,104,1,104,1,104,1,104,1,104,1,104,1,104,1,105,1,105, + 1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,106,1,106,1,106, + 1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,107,1,107, + 1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107, + 1,107,1,107,1,107,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108, + 1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,109,1,109,1,109, + 1,109,1,109,1,109,1,109,1,109,1,109,1,110,1,110,1,110,1,110,1,110,1,110, + 1,110,1,110,1,111,1,111,1,112,1,112,1,112,1,112,1,112,1,112,1,112,1,112, + 1,112,1,112,1,113,1,113,1,113,1,113,1,113,1,113,1,114,1,114,1,114,1,114, + 1,114,1,114,1,115,1,115,1,115,1,115,1,115,1,115,1,116,1,116,1,116,1,116, + 1,116,1,117,1,117,1,117,1,117,1,117,1,117,1,117,1,117,1,117,1,117,1,117, + 1,117,1,117,1,117,1,117,1,118,1,118,1,118,1,118,1,118,1,118,1,118,1,119, + 1,119,1,119,1,119,1,119,1,119,1,119,1,119,1,120,1,120,1,120,1,120,1,120, + 1,120,1,120,1,121,1,121,1,121,1,121,1,121,1,121,1,121,1,121,1,121,1,122, + 1,122,1,122,1,122,1,122,1,122,1,122,1,122,1,122,1,122,1,122,1,122,1,122, + 1,123,1,123,1,123,1,123,1,123,1,123,1,123,1,123,1,124,1,124,1,124,1,124, + 1,124,1,124,1,124,1,124,1,124,1,124,1,124,1,124,1,124,1,124,1,125,1,125, + 1,125,1,125,1,125,1,125,1,125,1,126,1,126,1,126,1,126,1,126,1,126,1,126, + 1,127,1,127,1,127,1,127,1,127,1,127,1,127,1,127,1,127,1,127,1,128,1,128, + 1,128,1,128,1,128,1,128,1,129,1,129,1,129,1,129,1,129,1,129,1,129,1,130, + 1,130,1,130,1,130,1,130,1,130,1,130,1,130,1,130,1,130,1,131,1,131,1,131, + 1,131,1,131,1,132,1,132,1,132,1,132,1,132,1,133,1,133,1,133,1,134,1,134, + 1,134,1,134,1,135,1,135,1,135,1,135,1,136,1,136,1,136,1,136,1,136,1,136, + 1,136,1,136,1,137,1,137,1,137,1,137,1,137,1,137,1,138,1,138,1,138,1,138, + 1,138,1,138,1,138,1,138,1,139,1,139,1,139,1,139,1,139,1,139,1,139,1,140, + 1,140,1,140,1,140,1,140,1,140,1,140,1,140,1,140,1,140,1,141,1,141,1,141, + 1,141,1,141,1,141,1,141,1,141,1,142,1,142,1,142,1,142,1,142,1,142,1,142, + 1,142,1,142,1,142,1,142,1,142,1,142,1,143,1,143,1,143,1,143,1,143,1,143, + 1,143,1,143,1,143,1,143,1,144,1,144,1,144,1,144,1,144,1,144,1,144,1,144, + 1,144,1,144,1,144,1,144,1,145,1,145,1,145,1,145,1,145,1,145,1,145,1,145, + 1,145,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,147,1,147,1,147, + 1,147,1,147,1,147,1,147,1,148,1,148,1,148,1,148,1,148,1,148,1,148,1,148, + 1,149,1,149,1,149,1,150,1,150,1,150,1,150,1,151,1,151,1,151,1,151,1,151, + 1,151,1,151,1,151,1,151,1,151,1,151,1,151,1,151,1,152,1,152,1,152,1,152, + 1,152,1,152,1,152,1,153,1,153,1,153,1,153,1,153,1,154,1,154,1,154,1,154, + 1,154,1,155,1,155,1,155,1,156,1,156,1,156,1,156,1,156,1,156,1,156,1,157, + 1,157,1,157,1,157,1,157,1,157,1,158,1,158,1,158,1,158,1,158,1,158,1,158, + 1,158,1,159,1,159,1,159,1,159,1,159,1,159,1,160,1,160,1,160,1,160,1,160, + 1,160,1,160,1,160,1,161,1,161,1,161,1,161,1,161,1,161,1,162,1,162,1,162, + 1,162,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163, + 1,164,1,164,1,164,1,164,1,164,1,165,1,165,1,165,1,165,1,165,1,165,1,165, + 1,165,1,166,1,166,1,166,1,166,1,166,1,166,1,166,1,166,1,166,1,166,1,166, + 1,166,1,166,1,166,1,166,1,166,1,167,1,167,1,167,1,167,1,167,1,167,1,167, + 1,167,1,167,1,167,1,168,3,168,2006,8,168,1,168,1,168,1,168,1,168,4,168, + 2012,8,168,11,168,12,168,2013,1,168,4,168,2017,8,168,11,168,12,168,2018, + 3,168,2021,8,168,1,169,3,169,2024,8,169,1,169,1,169,1,169,1,169,4,169, + 2030,8,169,11,169,12,169,2031,1,169,4,169,2035,8,169,11,169,12,169,2036, + 3,169,2039,8,169,1,170,3,170,2042,8,170,1,170,4,170,2045,8,170,11,170, + 12,170,2046,1,170,1,170,4,170,2051,8,170,11,170,12,170,2052,1,170,1,170, + 3,170,2057,8,170,1,170,4,170,2060,8,170,11,170,12,170,2061,3,170,2064, + 8,170,1,171,1,171,1,171,1,172,1,172,1,172,1,173,1,173,1,173,1,174,1,174, + 1,174,1,174,1,174,1,175,1,175,1,175,1,175,1,175,1,175,1,175,1,175,1,176, + 1,176,1,176,1,176,1,176,1,176,1,177,1,177,1,177,1,177,1,177,1,178,1,178, + 1,178,1,178,1,178,1,178,1,178,1,179,1,179,1,179,1,179,1,179,1,180,1,180, + 1,180,1,180,1,180,1,181,1,181,1,181,1,181,1,181,1,181,1,182,1,182,1,182, + 1,182,1,182,1,182,1,183,1,183,1,183,1,183,1,183,1,183,1,184,1,184,1,184, + 1,184,1,184,1,184,1,184,1,184,1,185,1,185,1,185,1,185,1,185,1,185,1,185, + 1,185,1,186,1,186,1,186,1,186,1,186,1,186,1,186,1,186,1,186,1,187,1,187, + 1,187,1,187,1,187,1,187,1,187,1,187,3,187,2167,8,187,1,188,1,188,1,188, + 1,188,1,188,1,188,1,188,1,188,1,188,3,188,2178,8,188,1,189,1,189,1,189, + 1,189,1,189,1,189,1,189,1,189,1,189,3,189,2189,8,189,1,190,1,190,1,190, + 1,190,1,190,1,190,1,190,1,190,1,190,3,190,2200,8,190,1,191,1,191,1,191, + 1,191,1,192,1,192,1,192,1,192,1,192,1,192,1,192,1,192,1,192,3,192,2215, + 8,192,1,193,1,193,1,193,1,193,1,193,1,194,1,194,1,194,1,194,1,194,1,194, + 1,194,1,195,1,195,1,195,1,195,1,195,1,195,1,195,1,195,1,196,1,196,1,196, + 1,196,1,196,1,196,1,197,1,197,1,197,1,197,1,197,1,197,1,197,1,197,1,197, + 1,197,1,198,1,198,1,198,1,198,1,198,1,199,1,199,1,199,1,199,1,199,1,200, + 1,200,1,200,1,200,1,200,1,200,1,200,1,201,1,201,1,201,1,201,1,201,1,201, + 1,202,1,202,1,202,1,202,1,202,1,202,1,202,1,202,1,202,1,203,1,203,1,203, + 1,203,1,203,1,203,1,204,1,204,1,204,1,204,1,204,1,204,1,204,1,204,1,205, + 1,205,1,205,1,205,1,205,1,205,1,205,1,205,1,205,1,206,1,206,1,206,1,206, + 1,206,1,206,1,206,1,206,1,207,1,207,1,207,1,207,1,207,1,207,1,208,1,208, + 1,208,1,208,1,208,1,208,1,208,1,208,1,209,1,209,1,209,1,209,1,209,1,210, + 1,210,1,210,1,210,1,210,1,211,1,211,1,211,1,211,1,211,1,211,1,212,1,212, + 1,212,1,212,1,212,1,212,1,212,1,213,1,213,1,213,1,213,1,213,1,213,1,213, + 1,214,1,214,1,214,1,214,1,214,1,214,1,214,1,214,1,214,1,214,1,215,1,215, + 1,215,1,215,1,215,1,215,1,215,1,215,1,215,1,216,1,216,1,216,1,216,1,216, + 1,216,1,216,1,216,1,216,1,216,1,217,1,217,1,217,1,217,1,217,1,217,1,217, + 1,218,1,218,1,218,1,218,1,218,1,218,1,218,1,218,1,218,1,218,1,219,1,219, + 1,219,1,219,1,219,1,219,1,219,1,219,1,219,1,219,1,220,1,220,1,220,1,220, + 1,220,1,220,1,220,1,220,1,220,1,221,1,221,1,221,1,222,1,222,1,222,1,222, + 1,222,1,222,1,222,1,222,1,222,1,223,1,223,1,223,1,223,1,223,1,224,1,224, + 1,224,1,225,1,225,1,225,1,225,1,225,1,225,1,226,1,226,1,226,1,226,1,226, + 1,226,1,226,1,227,1,227,1,227,1,227,1,228,1,228,1,228,1,228,1,228,1,228, + 1,228,1,228,1,228,1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,230,1,230, + 1,230,1,230,1,230,1,230,1,230,1,230,1,231,1,231,1,231,1,231,1,231,1,231, + 1,231,1,232,1,232,1,232,1,232,1,232,1,232,1,232,1,232,1,232,1,232,1,232, + 1,232,1,233,1,233,1,233,1,233,1,233,1,233,1,233,1,234,1,234,1,234,1,234, + 1,234,1,234,1,234,1,234,1,234,1,235,1,235,1,235,1,235,1,235,1,236,1,236, + 1,236,1,236,1,236,1,236,1,236,1,237,1,237,1,237,1,237,1,237,1,237,1,237, + 1,237,1,238,1,238,1,238,1,238,1,238,1,238,1,238,1,238,1,238,1,238,1,238, + 1,238,1,238,1,238,1,238,1,238,1,239,1,239,1,239,1,239,1,239,1,239,1,239, + 1,239,1,239,1,239,1,239,1,239,1,239,1,239,1,240,1,240,1,240,1,240,1,240, + 1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,241,1,241,1,241,1,242,1,242, + 1,242,1,242,1,242,1,242,1,243,1,243,1,243,1,243,1,243,1,243,1,243,1,243, + 1,243,1,244,1,244,1,244,1,244,1,244,1,244,1,244,1,244,1,244,1,245,1,245, + 1,245,1,245,1,245,1,245,1,245,1,245,1,246,1,246,1,246,1,246,1,246,1,246, + 1,246,1,247,1,247,1,247,1,247,1,247,1,247,1,247,1,247,1,247,1,247,1,248, + 1,248,1,248,1,248,1,248,1,248,1,249,1,249,1,249,1,249,1,249,1,249,1,249, + 1,249,1,250,1,250,1,250,1,250,1,250,1,250,1,250,1,250,1,250,1,251,1,251, + 1,251,1,251,1,251,1,251,1,251,1,251,1,251,1,252,1,252,1,253,1,253,1,253, + 1,254,1,254,1,254,1,254,1,254,1,254,1,254,1,254,1,254,1,255,1,255,1,255, + 1,255,1,255,1,255,1,255,1,255,1,255,1,255,1,255,1,256,1,256,1,256,1,256, + 1,256,1,256,1,256,1,256,1,256,1,256,1,256,1,256,1,256,1,256,1,256,1,256, + 1,256,1,256,1,256,1,256,1,256,1,256,1,256,1,256,1,256,1,256,1,256,1,256, + 1,256,1,256,3,256,2722,8,256,1,257,1,257,1,257,1,257,1,257,1,257,1,257, + 1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,259, + 1,259,1,259,1,259,1,259,1,259,1,260,1,260,1,260,1,260,1,260,1,260,1,261, + 1,261,1,261,1,261,1,261,1,261,1,261,1,261,1,262,1,262,1,263,1,263,1,263, + 1,264,1,264,1,265,1,265,1,265,1,265,5,265,2773,8,265,10,265,12,265,2776, + 9,265,1,265,1,265,1,266,1,266,1,266,1,266,5,266,2784,8,266,10,266,12,266, + 2787,9,266,1,266,1,266,1,267,1,267,1,268,1,268,1,269,1,269,1,269,1,269, + 1,269,1,269,1,269,1,269,1,270,1,270,1,270,1,270,1,270,1,270,1,270,1,271, + 1,271,1,271,1,271,1,271,1,271,1,271,1,272,1,272,1,272,1,272,1,272,1,272, + 1,272,1,272,1,273,1,273,1,273,1,273,1,273,1,273,1,274,1,274,1,274,1,274, + 1,274,1,274,1,274,1,275,1,275,1,275,1,275,1,275,1,275,1,275,1,275,1,275, + 1,276,1,276,1,276,1,276,1,276,1,276,1,276,1,276,1,276,1,276,1,276,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,1,277,1,277,1,277,3,277,4006,8,277,1,278,1,278, + 1,278,1,278,1,278,1,278,1,278,1,278,1,278,1,278,1,278,1,278,1,278,1,278, + 1,278,1,278,1,278,1,278,1,278,1,278,1,278,1,278,1,278,1,278,1,278,1,278, + 1,278,1,278,1,278,1,278,1,278,1,278,1,278,1,278,1,278,1,278,1,278,1,278, + 1,278,1,278,1,278,1,278,1,278,1,278,1,278,1,278,1,278,1,278,1,278,1,278, + 1,278,1,278,1,278,1,278,1,278,1,278,1,278,1,278,1,278,1,278,1,278,1,278, + 1,278,1,278,1,278,1,278,1,278,1,278,1,278,1,278,1,278,1,278,1,278,1,278, + 1,278,1,278,3,278,4084,8,278,1,279,1,279,1,279,1,279,1,279,1,279,1,279, + 1,279,1,279,1,279,1,279,1,279,1,279,1,279,1,279,1,279,1,279,1,279,1,279, + 1,279,1,279,1,279,1,279,1,279,1,279,1,279,1,279,3,279,4113,8,279,1,280, + 1,280,1,280,1,280,1,280,1,280,1,280,1,281,1,281,1,281,1,281,1,281,1,281, + 1,281,1,281,1,281,1,281,1,281,1,281,3,281,4134,8,281,1,282,1,282,1,282, + 1,282,1,282,1,282,1,282,1,282,1,282,1,282,1,282,1,282,1,282,1,282,1,282, + 1,282,1,282,1,282,1,282,1,282,1,282,1,282,1,282,1,282,1,282,1,282,1,282, + 1,282,1,282,1,282,1,282,1,282,1,282,1,282,1,282,3,282,4171,8,282,1,283, + 1,283,1,283,1,283,1,283,1,283,1,284,1,284,1,284,1,284,1,284,1,284,1,284, + 1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284, + 1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284, + 1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284, + 1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284, + 1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284, + 1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284, + 1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284, + 1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284, + 1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284, + 1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284, + 1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284, + 1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284, + 1,284,1,284,1,284,1,284,1,284,1,284,1,284,3,284,4337,8,284,1,285,1,285, + 1,285,1,285,1,285,1,285,1,285,1,286,1,286,1,286,1,286,1,286,1,286,1,286, + 1,286,1,286,1,286,1,286,1,286,1,286,1,286,1,286,1,286,1,286,1,286,1,286, + 1,286,1,286,1,286,1,286,1,286,1,286,1,286,1,286,1,286,1,286,1,286,1,286, + 1,286,1,286,1,286,1,286,1,286,1,286,1,286,1,286,1,286,1,286,1,286,1,286, + 1,286,1,286,1,286,1,286,1,286,1,286,1,286,1,286,1,286,1,286,1,286,1,286, + 1,286,1,286,1,286,1,286,1,286,1,286,1,286,1,286,1,286,1,286,1,286,1,286, + 1,286,1,286,1,286,1,286,1,286,1,286,1,286,1,286,1,286,1,286,1,286,1,286, + 1,286,1,286,1,286,1,286,1,286,1,286,1,286,1,286,1,286,1,286,1,286,1,286, + 1,286,1,286,1,286,1,286,1,286,1,286,1,286,1,286,1,286,1,286,1,286,1,286, + 1,286,1,286,1,286,1,286,1,286,1,286,1,286,1,286,1,286,1,286,1,286,3,286, + 4460,8,286,1,287,1,287,1,287,1,287,1,287,1,287,1,288,1,288,1,288,1,288, + 1,288,1,288,1,288,1,288,1,288,1,288,1,288,1,288,1,288,1,288,1,288,1,288, + 1,288,1,288,1,288,1,288,1,288,1,288,1,288,1,288,1,288,1,288,1,288,1,288, + 1,288,1,288,1,288,1,288,1,288,1,288,1,288,3,288,4503,8,288,1,289,1,289, + 1,289,1,289,1,289,1,289,1,289,1,289,1,290,1,290,1,291,1,291,1,292,1,292, + 1,292,4,292,4520,8,292,11,292,12,292,4521,1,292,1,292,1,293,1,293,5,293, + 4528,8,293,10,293,12,293,4531,9,293,1,294,1,294,1,294,1,294,1,295,1,295, + 1,295,1,295,5,295,4541,8,295,10,295,12,295,4544,9,295,1,295,1,295,1,296, + 1,296,1,296,1,296,5,296,4552,8,296,10,296,12,296,4555,9,296,1,296,1,296, + 1,296,1,296,1,296,1,297,1,297,1,297,1,297,1,297,1,297,1,297,1,297,1,297, + 1,297,1,297,1,297,1,298,1,298,1,298,1,298,1,298,1,298,1,298,1,298,1,298, + 1,298,1,298,1,298,1,298,1,298,1,298,1,299,1,299,1,299,1,299,1,299,1,299, + 1,299,1,299,1,299,1,299,1,300,1,300,1,300,1,300,1,300,1,300,1,300,1,300, + 1,300,1,300,1,301,1,301,1,301,1,301,1,301,1,301,1,301,1,301,1,301,1,301, + 1,301,1,301,1,302,1,302,1,302,1,302,1,302,1,302,1,302,1,302,1,302,1,302, + 1,303,1,303,1,303,1,303,1,303,1,303,1,303,1,303,1,304,1,304,1,304,1,304, + 1,304,1,304,1,304,1,304,1,305,1,305,1,305,1,305,1,305,1,305,1,305,1,305, + 1,305,1,305,1,306,1,306,1,306,1,306,1,306,1,306,1,306,1,306,1,306,1,4553, + 0,307,1,1,3,2,5,3,7,4,9,5,11,6,13,7,15,8,17,9,19,10,21,11,23,12,25,13, + 27,14,29,15,31,16,33,17,35,18,37,19,39,20,41,21,43,22,45,23,47,24,49,25, + 51,26,53,27,55,28,57,29,59,30,61,31,63,32,65,33,67,34,69,35,71,36,73,37, + 75,38,77,39,79,40,81,41,83,42,85,43,87,44,89,45,91,46,93,47,95,48,97,49, + 99,50,101,51,103,52,105,53,107,54,109,55,111,56,113,57,115,58,117,59,119, + 60,121,61,123,62,125,63,127,64,129,65,131,66,133,67,135,68,137,69,139, + 70,141,71,143,72,145,73,147,74,149,75,151,76,153,77,155,78,157,79,159, + 80,161,81,163,82,165,83,167,84,169,85,171,86,173,87,175,88,177,89,179, + 90,181,91,183,92,185,93,187,94,189,95,191,96,193,97,195,98,197,99,199, + 100,201,101,203,102,205,103,207,104,209,105,211,106,213,107,215,108,217, + 109,219,110,221,111,223,112,225,113,227,114,229,115,231,116,233,117,235, + 118,237,119,239,120,241,121,243,122,245,123,247,124,249,125,251,126,253, + 127,255,128,257,129,259,130,261,131,263,132,265,133,267,134,269,135,271, + 136,273,137,275,138,277,139,279,140,281,141,283,142,285,143,287,144,289, + 145,291,146,293,147,295,148,297,149,299,150,301,151,303,152,305,153,307, + 154,309,155,311,156,313,157,315,158,317,159,319,160,321,161,323,162,325, + 163,327,164,329,165,331,166,333,167,335,168,337,169,339,170,341,171,343, + 172,345,173,347,174,349,175,351,176,353,177,355,178,357,179,359,180,361, + 181,363,182,365,183,367,184,369,185,371,186,373,0,375,187,377,188,379, + 189,381,190,383,191,385,192,387,193,389,194,391,195,393,196,395,197,397, + 198,399,199,401,200,403,201,405,202,407,203,409,204,411,205,413,206,415, + 207,417,208,419,209,421,210,423,211,425,212,427,213,429,214,431,215,433, + 216,435,217,437,218,439,219,441,220,443,221,445,222,447,223,449,224,451, + 225,453,226,455,227,457,228,459,229,461,230,463,231,465,232,467,233,469, + 234,471,235,473,236,475,237,477,238,479,239,481,240,483,241,485,242,487, + 243,489,244,491,245,493,246,495,247,497,248,499,249,501,250,503,251,505, + 252,507,253,509,254,511,255,513,256,515,257,517,258,519,259,521,260,523, + 261,525,262,527,263,529,264,531,265,533,266,535,267,537,268,539,269,541, + 270,543,271,545,272,547,273,549,274,551,275,553,276,555,277,557,278,559, + 279,561,280,563,281,565,282,567,283,569,284,571,285,573,286,575,287,577, + 288,579,289,581,0,583,0,585,290,587,291,589,292,591,293,593,294,595,295, + 597,296,599,297,601,298,603,299,605,300,607,301,609,302,611,303,613,304, + 1,0,9,3,0,48,57,65,70,97,102,1,0,48,57,2,0,69,69,101,101,2,0,34,34,92, + 92,2,0,39,39,92,92,4,0,35,36,64,90,95,95,97,122,4,0,35,36,48,57,63,90, + 95,122,3,0,9,10,13,13,32,32,2,0,10,10,13,13,4905,0,1,1,0,0,0,0,3,1,0,0, + 0,0,5,1,0,0,0,0,7,1,0,0,0,0,9,1,0,0,0,0,11,1,0,0,0,0,13,1,0,0,0,0,15,1, + 0,0,0,0,17,1,0,0,0,0,19,1,0,0,0,0,21,1,0,0,0,0,23,1,0,0,0,0,25,1,0,0,0, + 0,27,1,0,0,0,0,29,1,0,0,0,0,31,1,0,0,0,0,33,1,0,0,0,0,35,1,0,0,0,0,37, + 1,0,0,0,0,39,1,0,0,0,0,41,1,0,0,0,0,43,1,0,0,0,0,45,1,0,0,0,0,47,1,0,0, + 0,0,49,1,0,0,0,0,51,1,0,0,0,0,53,1,0,0,0,0,55,1,0,0,0,0,57,1,0,0,0,0,59, + 1,0,0,0,0,61,1,0,0,0,0,63,1,0,0,0,0,65,1,0,0,0,0,67,1,0,0,0,0,69,1,0,0, + 0,0,71,1,0,0,0,0,73,1,0,0,0,0,75,1,0,0,0,0,77,1,0,0,0,0,79,1,0,0,0,0,81, + 1,0,0,0,0,83,1,0,0,0,0,85,1,0,0,0,0,87,1,0,0,0,0,89,1,0,0,0,0,91,1,0,0, + 0,0,93,1,0,0,0,0,95,1,0,0,0,0,97,1,0,0,0,0,99,1,0,0,0,0,101,1,0,0,0,0, + 103,1,0,0,0,0,105,1,0,0,0,0,107,1,0,0,0,0,109,1,0,0,0,0,111,1,0,0,0,0, + 113,1,0,0,0,0,115,1,0,0,0,0,117,1,0,0,0,0,119,1,0,0,0,0,121,1,0,0,0,0, + 123,1,0,0,0,0,125,1,0,0,0,0,127,1,0,0,0,0,129,1,0,0,0,0,131,1,0,0,0,0, + 133,1,0,0,0,0,135,1,0,0,0,0,137,1,0,0,0,0,139,1,0,0,0,0,141,1,0,0,0,0, + 143,1,0,0,0,0,145,1,0,0,0,0,147,1,0,0,0,0,149,1,0,0,0,0,151,1,0,0,0,0, + 153,1,0,0,0,0,155,1,0,0,0,0,157,1,0,0,0,0,159,1,0,0,0,0,161,1,0,0,0,0, + 163,1,0,0,0,0,165,1,0,0,0,0,167,1,0,0,0,0,169,1,0,0,0,0,171,1,0,0,0,0, + 173,1,0,0,0,0,175,1,0,0,0,0,177,1,0,0,0,0,179,1,0,0,0,0,181,1,0,0,0,0, + 183,1,0,0,0,0,185,1,0,0,0,0,187,1,0,0,0,0,189,1,0,0,0,0,191,1,0,0,0,0, + 193,1,0,0,0,0,195,1,0,0,0,0,197,1,0,0,0,0,199,1,0,0,0,0,201,1,0,0,0,0, + 203,1,0,0,0,0,205,1,0,0,0,0,207,1,0,0,0,0,209,1,0,0,0,0,211,1,0,0,0,0, + 213,1,0,0,0,0,215,1,0,0,0,0,217,1,0,0,0,0,219,1,0,0,0,0,221,1,0,0,0,0, + 223,1,0,0,0,0,225,1,0,0,0,0,227,1,0,0,0,0,229,1,0,0,0,0,231,1,0,0,0,0, + 233,1,0,0,0,0,235,1,0,0,0,0,237,1,0,0,0,0,239,1,0,0,0,0,241,1,0,0,0,0, + 243,1,0,0,0,0,245,1,0,0,0,0,247,1,0,0,0,0,249,1,0,0,0,0,251,1,0,0,0,0, + 253,1,0,0,0,0,255,1,0,0,0,0,257,1,0,0,0,0,259,1,0,0,0,0,261,1,0,0,0,0, + 263,1,0,0,0,0,265,1,0,0,0,0,267,1,0,0,0,0,269,1,0,0,0,0,271,1,0,0,0,0, + 273,1,0,0,0,0,275,1,0,0,0,0,277,1,0,0,0,0,279,1,0,0,0,0,281,1,0,0,0,0, + 283,1,0,0,0,0,285,1,0,0,0,0,287,1,0,0,0,0,289,1,0,0,0,0,291,1,0,0,0,0, + 293,1,0,0,0,0,295,1,0,0,0,0,297,1,0,0,0,0,299,1,0,0,0,0,301,1,0,0,0,0, + 303,1,0,0,0,0,305,1,0,0,0,0,307,1,0,0,0,0,309,1,0,0,0,0,311,1,0,0,0,0, + 313,1,0,0,0,0,315,1,0,0,0,0,317,1,0,0,0,0,319,1,0,0,0,0,321,1,0,0,0,0, + 323,1,0,0,0,0,325,1,0,0,0,0,327,1,0,0,0,0,329,1,0,0,0,0,331,1,0,0,0,0, + 333,1,0,0,0,0,335,1,0,0,0,0,337,1,0,0,0,0,339,1,0,0,0,0,341,1,0,0,0,0, + 343,1,0,0,0,0,345,1,0,0,0,0,347,1,0,0,0,0,349,1,0,0,0,0,351,1,0,0,0,0, + 353,1,0,0,0,0,355,1,0,0,0,0,357,1,0,0,0,0,359,1,0,0,0,0,361,1,0,0,0,0, + 363,1,0,0,0,0,365,1,0,0,0,0,367,1,0,0,0,0,369,1,0,0,0,0,371,1,0,0,0,0, + 375,1,0,0,0,0,377,1,0,0,0,0,379,1,0,0,0,0,381,1,0,0,0,0,383,1,0,0,0,0, + 385,1,0,0,0,0,387,1,0,0,0,0,389,1,0,0,0,0,391,1,0,0,0,0,393,1,0,0,0,0, + 395,1,0,0,0,0,397,1,0,0,0,0,399,1,0,0,0,0,401,1,0,0,0,0,403,1,0,0,0,0, + 405,1,0,0,0,0,407,1,0,0,0,0,409,1,0,0,0,0,411,1,0,0,0,0,413,1,0,0,0,0, + 415,1,0,0,0,0,417,1,0,0,0,0,419,1,0,0,0,0,421,1,0,0,0,0,423,1,0,0,0,0, + 425,1,0,0,0,0,427,1,0,0,0,0,429,1,0,0,0,0,431,1,0,0,0,0,433,1,0,0,0,0, + 435,1,0,0,0,0,437,1,0,0,0,0,439,1,0,0,0,0,441,1,0,0,0,0,443,1,0,0,0,0, + 445,1,0,0,0,0,447,1,0,0,0,0,449,1,0,0,0,0,451,1,0,0,0,0,453,1,0,0,0,0, + 455,1,0,0,0,0,457,1,0,0,0,0,459,1,0,0,0,0,461,1,0,0,0,0,463,1,0,0,0,0, + 465,1,0,0,0,0,467,1,0,0,0,0,469,1,0,0,0,0,471,1,0,0,0,0,473,1,0,0,0,0, + 475,1,0,0,0,0,477,1,0,0,0,0,479,1,0,0,0,0,481,1,0,0,0,0,483,1,0,0,0,0, + 485,1,0,0,0,0,487,1,0,0,0,0,489,1,0,0,0,0,491,1,0,0,0,0,493,1,0,0,0,0, + 495,1,0,0,0,0,497,1,0,0,0,0,499,1,0,0,0,0,501,1,0,0,0,0,503,1,0,0,0,0, + 505,1,0,0,0,0,507,1,0,0,0,0,509,1,0,0,0,0,511,1,0,0,0,0,513,1,0,0,0,0, + 515,1,0,0,0,0,517,1,0,0,0,0,519,1,0,0,0,0,521,1,0,0,0,0,523,1,0,0,0,0, + 525,1,0,0,0,0,527,1,0,0,0,0,529,1,0,0,0,0,531,1,0,0,0,0,533,1,0,0,0,0, + 535,1,0,0,0,0,537,1,0,0,0,0,539,1,0,0,0,0,541,1,0,0,0,0,543,1,0,0,0,0, + 545,1,0,0,0,0,547,1,0,0,0,0,549,1,0,0,0,0,551,1,0,0,0,0,553,1,0,0,0,0, + 555,1,0,0,0,0,557,1,0,0,0,0,559,1,0,0,0,0,561,1,0,0,0,0,563,1,0,0,0,0, + 565,1,0,0,0,0,567,1,0,0,0,0,569,1,0,0,0,0,571,1,0,0,0,0,573,1,0,0,0,0, + 575,1,0,0,0,0,577,1,0,0,0,0,579,1,0,0,0,0,585,1,0,0,0,0,587,1,0,0,0,0, + 589,1,0,0,0,0,591,1,0,0,0,0,593,1,0,0,0,0,595,1,0,0,0,0,597,1,0,0,0,0, + 599,1,0,0,0,0,601,1,0,0,0,0,603,1,0,0,0,0,605,1,0,0,0,0,607,1,0,0,0,0, + 609,1,0,0,0,0,611,1,0,0,0,0,613,1,0,0,0,1,615,1,0,0,0,3,622,1,0,0,0,5, + 626,1,0,0,0,7,632,1,0,0,0,9,640,1,0,0,0,11,651,1,0,0,0,13,663,1,0,0,0, + 15,671,1,0,0,0,17,684,1,0,0,0,19,697,1,0,0,0,21,708,1,0,0,0,23,727,1,0, + 0,0,25,742,1,0,0,0,27,765,1,0,0,0,29,771,1,0,0,0,31,780,1,0,0,0,33,782, + 1,0,0,0,35,784,1,0,0,0,37,795,1,0,0,0,39,805,1,0,0,0,41,811,1,0,0,0,43, + 821,1,0,0,0,45,832,1,0,0,0,47,846,1,0,0,0,49,856,1,0,0,0,51,866,1,0,0, + 0,53,876,1,0,0,0,55,878,1,0,0,0,57,888,1,0,0,0,59,890,1,0,0,0,61,892,1, + 0,0,0,63,894,1,0,0,0,65,903,1,0,0,0,67,906,1,0,0,0,69,914,1,0,0,0,71,916, + 1,0,0,0,73,922,1,0,0,0,75,931,1,0,0,0,77,937,1,0,0,0,79,944,1,0,0,0,81, + 953,1,0,0,0,83,955,1,0,0,0,85,957,1,0,0,0,87,960,1,0,0,0,89,974,1,0,0, + 0,91,990,1,0,0,0,93,1006,1,0,0,0,95,1014,1,0,0,0,97,1025,1,0,0,0,99,1032, + 1,0,0,0,101,1039,1,0,0,0,103,1047,1,0,0,0,105,1054,1,0,0,0,107,1063,1, + 0,0,0,109,1068,1,0,0,0,111,1079,1,0,0,0,113,1087,1,0,0,0,115,1096,1,0, + 0,0,117,1103,1,0,0,0,119,1116,1,0,0,0,121,1131,1,0,0,0,123,1138,1,0,0, + 0,125,1145,1,0,0,0,127,1154,1,0,0,0,129,1166,1,0,0,0,131,1177,1,0,0,0, + 133,1193,1,0,0,0,135,1205,1,0,0,0,137,1219,1,0,0,0,139,1225,1,0,0,0,141, + 1233,1,0,0,0,143,1244,1,0,0,0,145,1250,1,0,0,0,147,1256,1,0,0,0,149,1258, + 1,0,0,0,151,1269,1,0,0,0,153,1282,1,0,0,0,155,1293,1,0,0,0,157,1308,1, + 0,0,0,159,1312,1,0,0,0,161,1318,1,0,0,0,163,1322,1,0,0,0,165,1328,1,0, + 0,0,167,1338,1,0,0,0,169,1340,1,0,0,0,171,1342,1,0,0,0,173,1345,1,0,0, + 0,175,1347,1,0,0,0,177,1357,1,0,0,0,179,1366,1,0,0,0,181,1373,1,0,0,0, + 183,1380,1,0,0,0,185,1387,1,0,0,0,187,1392,1,0,0,0,189,1398,1,0,0,0,191, + 1406,1,0,0,0,193,1413,1,0,0,0,195,1420,1,0,0,0,197,1425,1,0,0,0,199,1436, + 1,0,0,0,201,1446,1,0,0,0,203,1459,1,0,0,0,205,1466,1,0,0,0,207,1473,1, + 0,0,0,209,1483,1,0,0,0,211,1495,1,0,0,0,213,1506,1,0,0,0,215,1519,1,0, + 0,0,217,1536,1,0,0,0,219,1554,1,0,0,0,221,1563,1,0,0,0,223,1571,1,0,0, + 0,225,1573,1,0,0,0,227,1583,1,0,0,0,229,1589,1,0,0,0,231,1595,1,0,0,0, + 233,1601,1,0,0,0,235,1606,1,0,0,0,237,1621,1,0,0,0,239,1628,1,0,0,0,241, + 1636,1,0,0,0,243,1643,1,0,0,0,245,1652,1,0,0,0,247,1665,1,0,0,0,249,1673, + 1,0,0,0,251,1687,1,0,0,0,253,1694,1,0,0,0,255,1701,1,0,0,0,257,1711,1, + 0,0,0,259,1717,1,0,0,0,261,1724,1,0,0,0,263,1734,1,0,0,0,265,1739,1,0, + 0,0,267,1744,1,0,0,0,269,1747,1,0,0,0,271,1751,1,0,0,0,273,1755,1,0,0, + 0,275,1763,1,0,0,0,277,1769,1,0,0,0,279,1777,1,0,0,0,281,1784,1,0,0,0, + 283,1794,1,0,0,0,285,1802,1,0,0,0,287,1815,1,0,0,0,289,1825,1,0,0,0,291, + 1837,1,0,0,0,293,1846,1,0,0,0,295,1854,1,0,0,0,297,1861,1,0,0,0,299,1869, + 1,0,0,0,301,1872,1,0,0,0,303,1876,1,0,0,0,305,1889,1,0,0,0,307,1896,1, + 0,0,0,309,1901,1,0,0,0,311,1906,1,0,0,0,313,1909,1,0,0,0,315,1916,1,0, + 0,0,317,1922,1,0,0,0,319,1930,1,0,0,0,321,1936,1,0,0,0,323,1944,1,0,0, + 0,325,1950,1,0,0,0,327,1954,1,0,0,0,329,1965,1,0,0,0,331,1970,1,0,0,0, + 333,1978,1,0,0,0,335,1994,1,0,0,0,337,2005,1,0,0,0,339,2023,1,0,0,0,341, + 2041,1,0,0,0,343,2065,1,0,0,0,345,2068,1,0,0,0,347,2071,1,0,0,0,349,2074, + 1,0,0,0,351,2079,1,0,0,0,353,2087,1,0,0,0,355,2093,1,0,0,0,357,2098,1, + 0,0,0,359,2105,1,0,0,0,361,2110,1,0,0,0,363,2115,1,0,0,0,365,2121,1,0, + 0,0,367,2127,1,0,0,0,369,2133,1,0,0,0,371,2141,1,0,0,0,373,2149,1,0,0, + 0,375,2166,1,0,0,0,377,2177,1,0,0,0,379,2188,1,0,0,0,381,2199,1,0,0,0, + 383,2201,1,0,0,0,385,2214,1,0,0,0,387,2216,1,0,0,0,389,2221,1,0,0,0,391, + 2228,1,0,0,0,393,2236,1,0,0,0,395,2242,1,0,0,0,397,2252,1,0,0,0,399,2257, + 1,0,0,0,401,2262,1,0,0,0,403,2269,1,0,0,0,405,2275,1,0,0,0,407,2284,1, + 0,0,0,409,2290,1,0,0,0,411,2298,1,0,0,0,413,2307,1,0,0,0,415,2315,1,0, + 0,0,417,2321,1,0,0,0,419,2329,1,0,0,0,421,2334,1,0,0,0,423,2339,1,0,0, + 0,425,2345,1,0,0,0,427,2352,1,0,0,0,429,2359,1,0,0,0,431,2369,1,0,0,0, + 433,2378,1,0,0,0,435,2388,1,0,0,0,437,2395,1,0,0,0,439,2405,1,0,0,0,441, + 2415,1,0,0,0,443,2424,1,0,0,0,445,2427,1,0,0,0,447,2436,1,0,0,0,449,2441, + 1,0,0,0,451,2444,1,0,0,0,453,2450,1,0,0,0,455,2457,1,0,0,0,457,2461,1, + 0,0,0,459,2470,1,0,0,0,461,2477,1,0,0,0,463,2485,1,0,0,0,465,2492,1,0, + 0,0,467,2504,1,0,0,0,469,2511,1,0,0,0,471,2520,1,0,0,0,473,2525,1,0,0, + 0,475,2532,1,0,0,0,477,2540,1,0,0,0,479,2556,1,0,0,0,481,2570,1,0,0,0, + 483,2582,1,0,0,0,485,2585,1,0,0,0,487,2591,1,0,0,0,489,2600,1,0,0,0,491, + 2609,1,0,0,0,493,2617,1,0,0,0,495,2624,1,0,0,0,497,2634,1,0,0,0,499,2640, + 1,0,0,0,501,2648,1,0,0,0,503,2657,1,0,0,0,505,2666,1,0,0,0,507,2668,1, + 0,0,0,509,2671,1,0,0,0,511,2680,1,0,0,0,513,2721,1,0,0,0,515,2723,1,0, + 0,0,517,2730,1,0,0,0,519,2741,1,0,0,0,521,2747,1,0,0,0,523,2753,1,0,0, + 0,525,2761,1,0,0,0,527,2763,1,0,0,0,529,2766,1,0,0,0,531,2768,1,0,0,0, + 533,2779,1,0,0,0,535,2790,1,0,0,0,537,2792,1,0,0,0,539,2794,1,0,0,0,541, + 2802,1,0,0,0,543,2809,1,0,0,0,545,2816,1,0,0,0,547,2824,1,0,0,0,549,2830, + 1,0,0,0,551,2837,1,0,0,0,553,2846,1,0,0,0,555,4005,1,0,0,0,557,4083,1, + 0,0,0,559,4112,1,0,0,0,561,4114,1,0,0,0,563,4133,1,0,0,0,565,4170,1,0, + 0,0,567,4172,1,0,0,0,569,4336,1,0,0,0,571,4338,1,0,0,0,573,4459,1,0,0, + 0,575,4461,1,0,0,0,577,4502,1,0,0,0,579,4504,1,0,0,0,581,4512,1,0,0,0, + 583,4514,1,0,0,0,585,4519,1,0,0,0,587,4525,1,0,0,0,589,4532,1,0,0,0,591, + 4536,1,0,0,0,593,4547,1,0,0,0,595,4561,1,0,0,0,597,4573,1,0,0,0,599,4588, + 1,0,0,0,601,4598,1,0,0,0,603,4608,1,0,0,0,605,4620,1,0,0,0,607,4630,1, + 0,0,0,609,4638,1,0,0,0,611,4646,1,0,0,0,613,4656,1,0,0,0,615,616,5,110, + 0,0,616,617,5,97,0,0,617,618,5,116,0,0,618,619,5,105,0,0,619,620,5,118, + 0,0,620,621,5,101,0,0,621,2,1,0,0,0,622,623,5,99,0,0,623,624,5,105,0,0, + 624,625,5,108,0,0,625,4,1,0,0,0,626,627,5,111,0,0,627,628,5,112,0,0,628, + 629,5,116,0,0,629,630,5,105,0,0,630,631,5,108,0,0,631,6,1,0,0,0,632,633, + 5,109,0,0,633,634,5,97,0,0,634,635,5,110,0,0,635,636,5,97,0,0,636,637, + 5,103,0,0,637,638,5,101,0,0,638,639,5,100,0,0,639,8,1,0,0,0,640,641,5, + 102,0,0,641,642,5,111,0,0,642,643,5,114,0,0,643,644,5,119,0,0,644,645, + 5,97,0,0,645,646,5,114,0,0,646,647,5,100,0,0,647,648,5,114,0,0,648,649, + 5,101,0,0,649,650,5,102,0,0,650,10,1,0,0,0,651,652,5,112,0,0,652,653,5, + 114,0,0,653,654,5,101,0,0,654,655,5,115,0,0,655,656,5,101,0,0,656,657, + 5,114,0,0,657,658,5,118,0,0,658,659,5,101,0,0,659,660,5,115,0,0,660,661, + 5,105,0,0,661,662,5,103,0,0,662,12,1,0,0,0,663,664,5,114,0,0,664,665,5, + 117,0,0,665,666,5,110,0,0,666,667,5,116,0,0,667,668,5,105,0,0,668,669, + 5,109,0,0,669,670,5,101,0,0,670,14,1,0,0,0,671,672,5,105,0,0,672,673,5, + 110,0,0,673,674,5,116,0,0,674,675,5,101,0,0,675,676,5,114,0,0,676,677, + 5,110,0,0,677,678,5,97,0,0,678,679,5,108,0,0,679,680,5,99,0,0,680,681, + 5,97,0,0,681,682,5,108,0,0,682,683,5,108,0,0,683,16,1,0,0,0,684,685,5, + 115,0,0,685,686,5,121,0,0,686,687,5,110,0,0,687,688,5,99,0,0,688,689,5, + 104,0,0,689,690,5,114,0,0,690,691,5,111,0,0,691,692,5,110,0,0,692,693, + 5,105,0,0,693,694,5,122,0,0,694,695,5,101,0,0,695,696,5,100,0,0,696,18, + 1,0,0,0,697,698,5,110,0,0,698,699,5,111,0,0,699,700,5,105,0,0,700,701, + 5,110,0,0,701,702,5,108,0,0,702,703,5,105,0,0,703,704,5,110,0,0,704,705, + 5,105,0,0,705,706,5,110,0,0,706,707,5,103,0,0,707,20,1,0,0,0,708,709,5, + 97,0,0,709,710,5,103,0,0,710,711,5,103,0,0,711,712,5,114,0,0,712,713,5, + 101,0,0,713,714,5,115,0,0,714,715,5,115,0,0,715,716,5,105,0,0,716,717, + 5,118,0,0,717,718,5,101,0,0,718,719,5,105,0,0,719,720,5,110,0,0,720,721, + 5,108,0,0,721,722,5,105,0,0,722,723,5,110,0,0,723,724,5,105,0,0,724,725, + 5,110,0,0,725,726,5,103,0,0,726,22,1,0,0,0,727,728,5,110,0,0,728,729,5, + 111,0,0,729,730,5,111,0,0,730,731,5,112,0,0,731,732,5,116,0,0,732,733, + 5,105,0,0,733,734,5,109,0,0,734,735,5,105,0,0,735,736,5,122,0,0,736,737, + 5,97,0,0,737,738,5,116,0,0,738,739,5,105,0,0,739,740,5,111,0,0,740,741, + 5,110,0,0,741,24,1,0,0,0,742,743,5,97,0,0,743,744,5,103,0,0,744,745,5, + 103,0,0,745,746,5,114,0,0,746,747,5,101,0,0,747,748,5,115,0,0,748,749, + 5,115,0,0,749,750,5,105,0,0,750,751,5,118,0,0,751,752,5,101,0,0,752,753, + 5,111,0,0,753,754,5,112,0,0,754,755,5,116,0,0,755,756,5,105,0,0,756,757, + 5,109,0,0,757,758,5,105,0,0,758,759,5,122,0,0,759,760,5,97,0,0,760,761, + 5,116,0,0,761,762,5,105,0,0,762,763,5,111,0,0,763,764,5,110,0,0,764,26, + 1,0,0,0,765,766,5,97,0,0,766,767,5,115,0,0,767,768,5,121,0,0,768,769,5, + 110,0,0,769,770,5,99,0,0,770,28,1,0,0,0,771,772,5,101,0,0,772,773,5,120, + 0,0,773,774,5,116,0,0,774,775,5,101,0,0,775,776,5,110,0,0,776,777,5,100, + 0,0,777,778,5,101,0,0,778,779,5,100,0,0,779,30,1,0,0,0,780,781,5,123,0, + 0,781,32,1,0,0,0,782,783,5,125,0,0,783,34,1,0,0,0,784,785,5,46,0,0,785, + 786,5,115,0,0,786,787,5,117,0,0,787,788,5,98,0,0,788,789,5,115,0,0,789, + 790,5,121,0,0,790,791,5,115,0,0,791,792,5,116,0,0,792,793,5,101,0,0,793, + 794,5,109,0,0,794,36,1,0,0,0,795,796,5,46,0,0,796,797,5,99,0,0,797,798, + 5,111,0,0,798,799,5,114,0,0,799,800,5,102,0,0,800,801,5,108,0,0,801,802, + 5,97,0,0,802,803,5,103,0,0,803,804,5,115,0,0,804,38,1,0,0,0,805,806,5, + 46,0,0,806,807,5,102,0,0,807,808,5,105,0,0,808,809,5,108,0,0,809,810,5, + 101,0,0,810,40,1,0,0,0,811,812,5,97,0,0,812,813,5,108,0,0,813,814,5,105, + 0,0,814,815,5,103,0,0,815,816,5,110,0,0,816,817,5,109,0,0,817,818,5,101, + 0,0,818,819,5,110,0,0,819,820,5,116,0,0,820,42,1,0,0,0,821,822,5,46,0, + 0,822,823,5,105,0,0,823,824,5,109,0,0,824,825,5,97,0,0,825,826,5,103,0, + 0,826,827,5,101,0,0,827,828,5,98,0,0,828,829,5,97,0,0,829,830,5,115,0, + 0,830,831,5,101,0,0,831,44,1,0,0,0,832,833,5,46,0,0,833,834,5,115,0,0, + 834,835,5,116,0,0,835,836,5,97,0,0,836,837,5,99,0,0,837,838,5,107,0,0, + 838,839,5,114,0,0,839,840,5,101,0,0,840,841,5,115,0,0,841,842,5,101,0, + 0,842,843,5,114,0,0,843,844,5,118,0,0,844,845,5,101,0,0,845,46,1,0,0,0, + 846,847,5,46,0,0,847,848,5,97,0,0,848,849,5,115,0,0,849,850,5,115,0,0, + 850,851,5,101,0,0,851,852,5,109,0,0,852,853,5,98,0,0,853,854,5,108,0,0, + 854,855,5,121,0,0,855,48,1,0,0,0,856,857,5,46,0,0,857,858,5,109,0,0,858, + 859,5,115,0,0,859,860,5,99,0,0,860,861,5,111,0,0,861,862,5,114,0,0,862, + 863,5,108,0,0,863,864,5,105,0,0,864,865,5,98,0,0,865,50,1,0,0,0,866,867, + 5,46,0,0,867,868,5,108,0,0,868,869,5,97,0,0,869,870,5,110,0,0,870,871, + 5,103,0,0,871,872,5,117,0,0,872,873,5,97,0,0,873,874,5,103,0,0,874,875, + 5,101,0,0,875,52,1,0,0,0,876,877,5,44,0,0,877,54,1,0,0,0,878,879,5,46, + 0,0,879,880,5,116,0,0,880,881,5,121,0,0,881,882,5,112,0,0,882,883,5,101, + 0,0,883,884,5,108,0,0,884,885,5,105,0,0,885,886,5,115,0,0,886,887,5,116, + 0,0,887,56,1,0,0,0,888,889,5,40,0,0,889,58,1,0,0,0,890,891,5,41,0,0,891, + 60,1,0,0,0,892,893,5,59,0,0,893,62,1,0,0,0,894,895,5,46,0,0,895,896,5, + 116,0,0,896,897,5,121,0,0,897,898,5,112,0,0,898,899,5,101,0,0,899,900, + 5,100,0,0,900,901,5,101,0,0,901,902,5,102,0,0,902,64,1,0,0,0,903,904,5, + 97,0,0,904,905,5,115,0,0,905,66,1,0,0,0,906,907,5,46,0,0,907,908,5,99, + 0,0,908,909,5,117,0,0,909,910,5,115,0,0,910,911,5,116,0,0,911,912,5,111, + 0,0,912,913,5,109,0,0,913,68,1,0,0,0,914,915,5,61,0,0,915,70,1,0,0,0,916, + 917,5,102,0,0,917,918,5,105,0,0,918,919,5,101,0,0,919,920,5,108,0,0,920, + 921,5,100,0,0,921,72,1,0,0,0,922,923,5,112,0,0,923,924,5,114,0,0,924,925, + 5,111,0,0,925,926,5,112,0,0,926,927,5,101,0,0,927,928,5,114,0,0,928,929, + 5,116,0,0,929,930,5,121,0,0,930,74,1,0,0,0,931,932,5,99,0,0,932,933,5, + 108,0,0,933,934,5,97,0,0,934,935,5,115,0,0,935,936,5,115,0,0,936,76,1, + 0,0,0,937,938,5,101,0,0,938,939,5,120,0,0,939,940,5,116,0,0,940,941,5, + 101,0,0,941,942,5,114,0,0,942,943,5,110,0,0,943,78,1,0,0,0,944,945,5,46, + 0,0,945,946,5,118,0,0,946,947,5,116,0,0,947,948,5,102,0,0,948,949,5,105, + 0,0,949,950,5,120,0,0,950,951,5,117,0,0,951,952,5,112,0,0,952,80,1,0,0, + 0,953,954,5,91,0,0,954,82,1,0,0,0,955,956,5,93,0,0,956,84,1,0,0,0,957, + 958,5,97,0,0,958,959,5,116,0,0,959,86,1,0,0,0,960,961,5,102,0,0,961,962, + 5,114,0,0,962,963,5,111,0,0,963,964,5,109,0,0,964,965,5,117,0,0,965,966, + 5,110,0,0,966,967,5,109,0,0,967,968,5,97,0,0,968,969,5,110,0,0,969,970, + 5,97,0,0,970,971,5,103,0,0,971,972,5,101,0,0,972,973,5,100,0,0,973,88, + 1,0,0,0,974,975,5,99,0,0,975,976,5,97,0,0,976,977,5,108,0,0,977,978,5, + 108,0,0,978,979,5,109,0,0,979,980,5,111,0,0,980,981,5,115,0,0,981,982, + 5,116,0,0,982,983,5,100,0,0,983,984,5,101,0,0,984,985,5,114,0,0,985,986, + 5,105,0,0,986,987,5,118,0,0,987,988,5,101,0,0,988,989,5,100,0,0,989,90, + 1,0,0,0,990,991,5,114,0,0,991,992,5,101,0,0,992,993,5,116,0,0,993,994, + 5,97,0,0,994,995,5,105,0,0,995,996,5,110,0,0,996,997,5,97,0,0,997,998, + 5,112,0,0,998,999,5,112,0,0,999,1000,5,100,0,0,1000,1001,5,111,0,0,1001, + 1002,5,109,0,0,1002,1003,5,97,0,0,1003,1004,5,105,0,0,1004,1005,5,110, + 0,0,1005,92,1,0,0,0,1006,1007,5,46,0,0,1007,1008,5,118,0,0,1008,1009,5, + 116,0,0,1009,1010,5,97,0,0,1010,1011,5,98,0,0,1011,1012,5,108,0,0,1012, + 1013,5,101,0,0,1013,94,1,0,0,0,1014,1015,5,46,0,0,1015,1016,5,110,0,0, + 1016,1017,5,97,0,0,1017,1018,5,109,0,0,1018,1019,5,101,0,0,1019,1020,5, + 115,0,0,1020,1021,5,112,0,0,1021,1022,5,97,0,0,1022,1023,5,99,0,0,1023, + 1024,5,101,0,0,1024,96,1,0,0,0,1025,1026,5,46,0,0,1026,1027,5,99,0,0,1027, + 1028,5,108,0,0,1028,1029,5,97,0,0,1029,1030,5,115,0,0,1030,1031,5,115, + 0,0,1031,98,1,0,0,0,1032,1033,5,112,0,0,1033,1034,5,117,0,0,1034,1035, + 5,98,0,0,1035,1036,5,108,0,0,1036,1037,5,105,0,0,1037,1038,5,99,0,0,1038, + 100,1,0,0,0,1039,1040,5,112,0,0,1040,1041,5,114,0,0,1041,1042,5,105,0, + 0,1042,1043,5,118,0,0,1043,1044,5,97,0,0,1044,1045,5,116,0,0,1045,1046, + 5,101,0,0,1046,102,1,0,0,0,1047,1048,5,115,0,0,1048,1049,5,101,0,0,1049, + 1050,5,97,0,0,1050,1051,5,108,0,0,1051,1052,5,101,0,0,1052,1053,5,100, + 0,0,1053,104,1,0,0,0,1054,1055,5,97,0,0,1055,1056,5,98,0,0,1056,1057,5, + 115,0,0,1057,1058,5,116,0,0,1058,1059,5,114,0,0,1059,1060,5,97,0,0,1060, + 1061,5,99,0,0,1061,1062,5,116,0,0,1062,106,1,0,0,0,1063,1064,5,97,0,0, + 1064,1065,5,117,0,0,1065,1066,5,116,0,0,1066,1067,5,111,0,0,1067,108,1, + 0,0,0,1068,1069,5,115,0,0,1069,1070,5,101,0,0,1070,1071,5,113,0,0,1071, + 1072,5,117,0,0,1072,1073,5,101,0,0,1073,1074,5,110,0,0,1074,1075,5,116, + 0,0,1075,1076,5,105,0,0,1076,1077,5,97,0,0,1077,1078,5,108,0,0,1078,110, + 1,0,0,0,1079,1080,5,117,0,0,1080,1081,5,110,0,0,1081,1082,5,105,0,0,1082, + 1083,5,99,0,0,1083,1084,5,111,0,0,1084,1085,5,100,0,0,1085,1086,5,101, + 0,0,1086,112,1,0,0,0,1087,1088,5,97,0,0,1088,1089,5,117,0,0,1089,1090, + 5,116,0,0,1090,1091,5,111,0,0,1091,1092,5,99,0,0,1092,1093,5,104,0,0,1093, + 1094,5,97,0,0,1094,1095,5,114,0,0,1095,114,1,0,0,0,1096,1097,5,105,0,0, + 1097,1098,5,109,0,0,1098,1099,5,112,0,0,1099,1100,5,111,0,0,1100,1101, + 5,114,0,0,1101,1102,5,116,0,0,1102,116,1,0,0,0,1103,1104,5,115,0,0,1104, + 1105,5,101,0,0,1105,1106,5,114,0,0,1106,1107,5,105,0,0,1107,1108,5,97, + 0,0,1108,1109,5,108,0,0,1109,1110,5,105,0,0,1110,1111,5,122,0,0,1111,1112, + 5,97,0,0,1112,1113,5,98,0,0,1113,1114,5,108,0,0,1114,1115,5,101,0,0,1115, + 118,1,0,0,0,1116,1117,5,119,0,0,1117,1118,5,105,0,0,1118,1119,5,110,0, + 0,1119,1120,5,100,0,0,1120,1121,5,111,0,0,1121,1122,5,119,0,0,1122,1123, + 5,115,0,0,1123,1124,5,114,0,0,1124,1125,5,117,0,0,1125,1126,5,110,0,0, + 1126,1127,5,116,0,0,1127,1128,5,105,0,0,1128,1129,5,109,0,0,1129,1130, + 5,101,0,0,1130,120,1,0,0,0,1131,1132,5,110,0,0,1132,1133,5,101,0,0,1133, + 1134,5,115,0,0,1134,1135,5,116,0,0,1135,1136,5,101,0,0,1136,1137,5,100, + 0,0,1137,122,1,0,0,0,1138,1139,5,102,0,0,1139,1140,5,97,0,0,1140,1141, + 5,109,0,0,1141,1142,5,105,0,0,1142,1143,5,108,0,0,1143,1144,5,121,0,0, + 1144,124,1,0,0,0,1145,1146,5,97,0,0,1146,1147,5,115,0,0,1147,1148,5,115, + 0,0,1148,1149,5,101,0,0,1149,1150,5,109,0,0,1150,1151,5,98,0,0,1151,1152, + 5,108,0,0,1152,1153,5,121,0,0,1153,126,1,0,0,0,1154,1155,5,102,0,0,1155, + 1156,5,97,0,0,1156,1157,5,109,0,0,1157,1158,5,97,0,0,1158,1159,5,110,0, + 0,1159,1160,5,100,0,0,1160,1161,5,97,0,0,1161,1162,5,115,0,0,1162,1163, + 5,115,0,0,1163,1164,5,101,0,0,1164,1165,5,109,0,0,1165,128,1,0,0,0,1166, + 1167,5,102,0,0,1167,1168,5,97,0,0,1168,1169,5,109,0,0,1169,1170,5,111, + 0,0,1170,1171,5,114,0,0,1171,1172,5,97,0,0,1172,1173,5,115,0,0,1173,1174, + 5,115,0,0,1174,1175,5,101,0,0,1175,1176,5,109,0,0,1176,130,1,0,0,0,1177, + 1178,5,98,0,0,1178,1179,5,101,0,0,1179,1180,5,102,0,0,1180,1181,5,111, + 0,0,1181,1182,5,114,0,0,1182,1183,5,101,0,0,1183,1184,5,102,0,0,1184,1185, + 5,105,0,0,1185,1186,5,101,0,0,1186,1187,5,108,0,0,1187,1188,5,100,0,0, + 1188,1189,5,105,0,0,1189,1190,5,110,0,0,1190,1191,5,105,0,0,1191,1192, + 5,116,0,0,1192,132,1,0,0,0,1193,1194,5,115,0,0,1194,1195,5,112,0,0,1195, + 1196,5,101,0,0,1196,1197,5,99,0,0,1197,1198,5,105,0,0,1198,1199,5,97,0, + 0,1199,1200,5,108,0,0,1200,1201,5,110,0,0,1201,1202,5,97,0,0,1202,1203, + 5,109,0,0,1203,1204,5,101,0,0,1204,134,1,0,0,0,1205,1206,5,114,0,0,1206, + 1207,5,116,0,0,1207,1208,5,115,0,0,1208,1209,5,112,0,0,1209,1210,5,101, + 0,0,1210,1211,5,99,0,0,1211,1212,5,105,0,0,1212,1213,5,97,0,0,1213,1214, + 5,108,0,0,1214,1215,5,110,0,0,1215,1216,5,97,0,0,1216,1217,5,109,0,0,1217, + 1218,5,101,0,0,1218,136,1,0,0,0,1219,1220,5,102,0,0,1220,1221,5,108,0, + 0,1221,1222,5,97,0,0,1222,1223,5,103,0,0,1223,1224,5,115,0,0,1224,138, + 1,0,0,0,1225,1226,5,101,0,0,1226,1227,5,120,0,0,1227,1228,5,116,0,0,1228, + 1229,5,101,0,0,1229,1230,5,110,0,0,1230,1231,5,100,0,0,1231,1232,5,115, + 0,0,1232,140,1,0,0,0,1233,1234,5,105,0,0,1234,1235,5,109,0,0,1235,1236, + 5,112,0,0,1236,1237,5,108,0,0,1237,1238,5,101,0,0,1238,1239,5,109,0,0, + 1239,1240,5,101,0,0,1240,1241,5,110,0,0,1241,1242,5,116,0,0,1242,1243, + 5,115,0,0,1243,142,1,0,0,0,1244,1245,5,46,0,0,1245,1246,5,108,0,0,1246, + 1247,5,105,0,0,1247,1248,5,110,0,0,1248,1249,5,101,0,0,1249,144,1,0,0, + 0,1250,1251,5,35,0,0,1251,1252,5,108,0,0,1252,1253,5,105,0,0,1253,1254, + 5,110,0,0,1254,1255,5,101,0,0,1255,146,1,0,0,0,1256,1257,5,58,0,0,1257, + 148,1,0,0,0,1258,1259,5,110,0,0,1259,1260,5,111,0,0,1260,1261,5,109,0, + 0,1261,1262,5,101,0,0,1262,1263,5,116,0,0,1263,1264,5,97,0,0,1264,1265, + 5,100,0,0,1265,1266,5,97,0,0,1266,1267,5,116,0,0,1267,1268,5,97,0,0,1268, + 150,1,0,0,0,1269,1270,5,114,0,0,1270,1271,5,101,0,0,1271,1272,5,116,0, + 0,1272,1273,5,97,0,0,1273,1274,5,114,0,0,1274,1275,5,103,0,0,1275,1276, + 5,101,0,0,1276,1277,5,116,0,0,1277,1278,5,97,0,0,1278,1279,5,98,0,0,1279, + 1280,5,108,0,0,1280,1281,5,101,0,0,1281,152,1,0,0,0,1282,1283,5,110,0, + 0,1283,1284,5,111,0,0,1284,1285,5,112,0,0,1285,1286,5,108,0,0,1286,1287, + 5,97,0,0,1287,1288,5,116,0,0,1288,1289,5,102,0,0,1289,1290,5,111,0,0,1290, + 1291,5,114,0,0,1291,1292,5,109,0,0,1292,154,1,0,0,0,1293,1294,5,108,0, + 0,1294,1295,5,101,0,0,1295,1296,5,103,0,0,1296,1297,5,97,0,0,1297,1298, + 5,99,0,0,1298,1299,5,121,0,0,1299,1300,5,32,0,0,1300,1301,5,108,0,0,1301, + 1302,5,105,0,0,1302,1303,5,98,0,0,1303,1304,5,114,0,0,1304,1305,5,97,0, + 0,1305,1306,5,114,0,0,1306,1307,5,121,0,0,1307,156,1,0,0,0,1308,1309,5, + 120,0,0,1309,1310,5,56,0,0,1310,1311,5,54,0,0,1311,158,1,0,0,0,1312,1313, + 5,97,0,0,1313,1314,5,109,0,0,1314,1315,5,100,0,0,1315,1316,5,54,0,0,1316, + 1317,5,52,0,0,1317,160,1,0,0,0,1318,1319,5,97,0,0,1319,1320,5,114,0,0, + 1320,1321,5,109,0,0,1321,162,1,0,0,0,1322,1323,5,97,0,0,1323,1324,5,114, + 0,0,1324,1325,5,109,0,0,1325,1326,5,54,0,0,1326,1327,5,52,0,0,1327,164, + 1,0,0,0,1328,1329,5,98,0,0,1329,1330,5,121,0,0,1330,1331,5,116,0,0,1331, + 1332,5,101,0,0,1332,1333,5,97,0,0,1333,1334,5,114,0,0,1334,1335,5,114, + 0,0,1335,1336,5,97,0,0,1336,1337,5,121,0,0,1337,166,1,0,0,0,1338,1339, + 5,60,0,0,1339,168,1,0,0,0,1340,1341,5,62,0,0,1341,170,1,0,0,0,1342,1343, + 5,40,0,0,1343,1344,5,41,0,0,1344,172,1,0,0,0,1345,1346,5,47,0,0,1346,174, + 1,0,0,0,1347,1348,5,97,0,0,1348,1349,5,108,0,0,1349,1350,5,103,0,0,1350, + 1351,5,111,0,0,1351,1352,5,114,0,0,1352,1353,5,105,0,0,1353,1354,5,116, + 0,0,1354,1355,5,104,0,0,1355,1356,5,109,0,0,1356,176,1,0,0,0,1357,1358, + 5,105,0,0,1358,1359,5,105,0,0,1359,1360,5,100,0,0,1360,1361,5,112,0,0, + 1361,1362,5,97,0,0,1362,1363,5,114,0,0,1363,1364,5,97,0,0,1364,1365,5, + 109,0,0,1365,178,1,0,0,0,1366,1367,5,112,0,0,1367,1368,5,105,0,0,1368, + 1369,5,110,0,0,1369,1370,5,110,0,0,1370,1371,5,101,0,0,1371,1372,5,100, + 0,0,1372,180,1,0,0,0,1373,1374,5,109,0,0,1374,1375,5,111,0,0,1375,1376, + 5,100,0,0,1376,1377,5,114,0,0,1377,1378,5,101,0,0,1378,1379,5,113,0,0, + 1379,182,1,0,0,0,1380,1381,5,109,0,0,1381,1382,5,111,0,0,1382,1383,5,100, + 0,0,1383,1384,5,111,0,0,1384,1385,5,112,0,0,1385,1386,5,116,0,0,1386,184, + 1,0,0,0,1387,1388,5,116,0,0,1388,1389,5,114,0,0,1389,1390,5,117,0,0,1390, + 1391,5,101,0,0,1391,186,1,0,0,0,1392,1393,5,102,0,0,1393,1394,5,97,0,0, + 1394,1395,5,108,0,0,1395,1396,5,115,0,0,1396,1397,5,101,0,0,1397,188,1, + 0,0,0,1398,1399,5,114,0,0,1399,1400,5,101,0,0,1400,1401,5,113,0,0,1401, + 1402,5,117,0,0,1402,1403,5,101,0,0,1403,1404,5,115,0,0,1404,1405,5,116, + 0,0,1405,190,1,0,0,0,1406,1407,5,100,0,0,1407,1408,5,101,0,0,1408,1409, + 5,109,0,0,1409,1410,5,97,0,0,1410,1411,5,110,0,0,1411,1412,5,100,0,0,1412, + 192,1,0,0,0,1413,1414,5,97,0,0,1414,1415,5,115,0,0,1415,1416,5,115,0,0, + 1416,1417,5,101,0,0,1417,1418,5,114,0,0,1418,1419,5,116,0,0,1419,194,1, + 0,0,0,1420,1421,5,100,0,0,1421,1422,5,101,0,0,1422,1423,5,110,0,0,1423, + 1424,5,121,0,0,1424,196,1,0,0,0,1425,1426,5,112,0,0,1426,1427,5,101,0, + 0,1427,1428,5,114,0,0,1428,1429,5,109,0,0,1429,1430,5,105,0,0,1430,1431, + 5,116,0,0,1431,1432,5,111,0,0,1432,1433,5,110,0,0,1433,1434,5,108,0,0, + 1434,1435,5,121,0,0,1435,198,1,0,0,0,1436,1437,5,108,0,0,1437,1438,5,105, + 0,0,1438,1439,5,110,0,0,1439,1440,5,107,0,0,1440,1441,5,99,0,0,1441,1442, + 5,104,0,0,1442,1443,5,101,0,0,1443,1444,5,99,0,0,1444,1445,5,107,0,0,1445, + 200,1,0,0,0,1446,1447,5,105,0,0,1447,1448,5,110,0,0,1448,1449,5,104,0, + 0,1449,1450,5,101,0,0,1450,1451,5,114,0,0,1451,1452,5,105,0,0,1452,1453, + 5,116,0,0,1453,1454,5,99,0,0,1454,1455,5,104,0,0,1455,1456,5,101,0,0,1456, + 1457,5,99,0,0,1457,1458,5,107,0,0,1458,202,1,0,0,0,1459,1460,5,114,0,0, + 1460,1461,5,101,0,0,1461,1462,5,113,0,0,1462,1463,5,109,0,0,1463,1464, + 5,105,0,0,1464,1465,5,110,0,0,1465,204,1,0,0,0,1466,1467,5,114,0,0,1467, + 1468,5,101,0,0,1468,1469,5,113,0,0,1469,1470,5,111,0,0,1470,1471,5,112, + 0,0,1471,1472,5,116,0,0,1472,206,1,0,0,0,1473,1474,5,114,0,0,1474,1475, + 5,101,0,0,1475,1476,5,113,0,0,1476,1477,5,114,0,0,1477,1478,5,101,0,0, + 1478,1479,5,102,0,0,1479,1480,5,117,0,0,1480,1481,5,115,0,0,1481,1482, + 5,101,0,0,1482,208,1,0,0,0,1483,1484,5,112,0,0,1484,1485,5,114,0,0,1485, + 1486,5,101,0,0,1486,1487,5,106,0,0,1487,1488,5,105,0,0,1488,1489,5,116, + 0,0,1489,1490,5,103,0,0,1490,1491,5,114,0,0,1491,1492,5,97,0,0,1492,1493, + 5,110,0,0,1493,1494,5,116,0,0,1494,210,1,0,0,0,1495,1496,5,112,0,0,1496, + 1497,5,114,0,0,1497,1498,5,101,0,0,1498,1499,5,106,0,0,1499,1500,5,105, + 0,0,1500,1501,5,116,0,0,1501,1502,5,100,0,0,1502,1503,5,101,0,0,1503,1504, + 5,110,0,0,1504,1505,5,121,0,0,1505,212,1,0,0,0,1506,1507,5,110,0,0,1507, + 1508,5,111,0,0,1508,1509,5,110,0,0,1509,1510,5,99,0,0,1510,1511,5,97,0, + 0,1511,1512,5,115,0,0,1512,1513,5,100,0,0,1513,1514,5,101,0,0,1514,1515, + 5,109,0,0,1515,1516,5,97,0,0,1516,1517,5,110,0,0,1517,1518,5,100,0,0,1518, + 214,1,0,0,0,1519,1520,5,110,0,0,1520,1521,5,111,0,0,1521,1522,5,110,0, + 0,1522,1523,5,99,0,0,1523,1524,5,97,0,0,1524,1525,5,115,0,0,1525,1526, + 5,108,0,0,1526,1527,5,105,0,0,1527,1528,5,110,0,0,1528,1529,5,107,0,0, + 1529,1530,5,100,0,0,1530,1531,5,101,0,0,1531,1532,5,109,0,0,1532,1533, + 5,97,0,0,1533,1534,5,110,0,0,1534,1535,5,100,0,0,1535,216,1,0,0,0,1536, + 1537,5,110,0,0,1537,1538,5,111,0,0,1538,1539,5,110,0,0,1539,1540,5,99, + 0,0,1540,1541,5,97,0,0,1541,1542,5,115,0,0,1542,1543,5,105,0,0,1543,1544, + 5,110,0,0,1544,1545,5,104,0,0,1545,1546,5,101,0,0,1546,1547,5,114,0,0, + 1547,1548,5,105,0,0,1548,1549,5,116,0,0,1549,1550,5,97,0,0,1550,1551,5, + 110,0,0,1551,1552,5,99,0,0,1552,1553,5,101,0,0,1553,218,1,0,0,0,1554,1555, + 5,99,0,0,1555,1556,5,97,0,0,1556,1557,5,108,0,0,1557,1558,5,108,0,0,1558, + 1559,5,99,0,0,1559,1560,5,111,0,0,1560,1561,5,110,0,0,1561,1562,5,118, + 0,0,1562,220,1,0,0,0,1563,1564,5,109,0,0,1564,1565,5,100,0,0,1565,1566, + 5,116,0,0,1566,1567,5,111,0,0,1567,1568,5,107,0,0,1568,1569,5,101,0,0, + 1569,1570,5,110,0,0,1570,222,1,0,0,0,1571,1572,5,45,0,0,1572,224,1,0,0, + 0,1573,1574,5,98,0,0,1574,1575,5,121,0,0,1575,1576,5,114,0,0,1576,1577, + 5,101,0,0,1577,1578,5,102,0,0,1578,1579,5,108,0,0,1579,1580,5,105,0,0, + 1580,1581,5,107,0,0,1581,1582,5,101,0,0,1582,226,1,0,0,0,1583,1584,5,46, + 0,0,1584,1585,5,99,0,0,1585,1586,5,116,0,0,1586,1587,5,111,0,0,1587,1588, + 5,114,0,0,1588,228,1,0,0,0,1589,1590,5,46,0,0,1590,1591,5,115,0,0,1591, + 1592,5,105,0,0,1592,1593,5,122,0,0,1593,1594,5,101,0,0,1594,230,1,0,0, + 0,1595,1596,5,46,0,0,1596,1597,5,112,0,0,1597,1598,5,97,0,0,1598,1599, + 5,99,0,0,1599,1600,5,107,0,0,1600,232,1,0,0,0,1601,1602,5,119,0,0,1602, + 1603,5,105,0,0,1603,1604,5,116,0,0,1604,1605,5,104,0,0,1605,234,1,0,0, + 0,1606,1607,5,46,0,0,1607,1608,5,105,0,0,1608,1609,5,110,0,0,1609,1610, + 5,116,0,0,1610,1611,5,101,0,0,1611,1612,5,114,0,0,1612,1613,5,102,0,0, + 1613,1614,5,97,0,0,1614,1615,5,99,0,0,1615,1616,5,101,0,0,1616,1617,5, + 105,0,0,1617,1618,5,109,0,0,1618,1619,5,112,0,0,1619,1620,5,108,0,0,1620, + 236,1,0,0,0,1621,1622,5,46,0,0,1622,1623,5,102,0,0,1623,1624,5,105,0,0, + 1624,1625,5,101,0,0,1625,1626,5,108,0,0,1626,1627,5,100,0,0,1627,238,1, + 0,0,0,1628,1629,5,109,0,0,1629,1630,5,97,0,0,1630,1631,5,114,0,0,1631, + 1632,5,115,0,0,1632,1633,5,104,0,0,1633,1634,5,97,0,0,1634,1635,5,108, + 0,0,1635,240,1,0,0,0,1636,1637,5,115,0,0,1637,1638,5,116,0,0,1638,1639, + 5,97,0,0,1639,1640,5,116,0,0,1640,1641,5,105,0,0,1641,1642,5,99,0,0,1642, + 242,1,0,0,0,1643,1644,5,105,0,0,1644,1645,5,110,0,0,1645,1646,5,105,0, + 0,1646,1647,5,116,0,0,1647,1648,5,111,0,0,1648,1649,5,110,0,0,1649,1650, + 5,108,0,0,1650,1651,5,121,0,0,1651,244,1,0,0,0,1652,1653,5,112,0,0,1653, + 1654,5,114,0,0,1654,1655,5,105,0,0,1655,1656,5,118,0,0,1656,1657,5,97, + 0,0,1657,1658,5,116,0,0,1658,1659,5,101,0,0,1659,1660,5,115,0,0,1660,1661, + 5,99,0,0,1661,1662,5,111,0,0,1662,1663,5,112,0,0,1663,1664,5,101,0,0,1664, + 246,1,0,0,0,1665,1666,5,108,0,0,1666,1667,5,105,0,0,1667,1668,5,116,0, + 0,1668,1669,5,101,0,0,1669,1670,5,114,0,0,1670,1671,5,97,0,0,1671,1672, + 5,108,0,0,1672,248,1,0,0,0,1673,1674,5,110,0,0,1674,1675,5,111,0,0,1675, + 1676,5,116,0,0,1676,1677,5,115,0,0,1677,1678,5,101,0,0,1678,1679,5,114, + 0,0,1679,1680,5,105,0,0,1680,1681,5,97,0,0,1681,1682,5,108,0,0,1682,1683, + 5,105,0,0,1683,1684,5,122,0,0,1684,1685,5,101,0,0,1685,1686,5,100,0,0, + 1686,250,1,0,0,0,1687,1688,5,46,0,0,1688,1689,5,101,0,0,1689,1690,5,118, + 0,0,1690,1691,5,101,0,0,1691,1692,5,110,0,0,1692,1693,5,116,0,0,1693,252, + 1,0,0,0,1694,1695,5,46,0,0,1695,1696,5,97,0,0,1696,1697,5,100,0,0,1697, + 1698,5,100,0,0,1698,1699,5,111,0,0,1699,1700,5,110,0,0,1700,254,1,0,0, + 0,1701,1702,5,46,0,0,1702,1703,5,114,0,0,1703,1704,5,101,0,0,1704,1705, + 5,109,0,0,1705,1706,5,111,0,0,1706,1707,5,118,0,0,1707,1708,5,101,0,0, + 1708,1709,5,111,0,0,1709,1710,5,110,0,0,1710,256,1,0,0,0,1711,1712,5,46, + 0,0,1712,1713,5,102,0,0,1713,1714,5,105,0,0,1714,1715,5,114,0,0,1715,1716, + 5,101,0,0,1716,258,1,0,0,0,1717,1718,5,46,0,0,1718,1719,5,111,0,0,1719, + 1720,5,116,0,0,1720,1721,5,104,0,0,1721,1722,5,101,0,0,1722,1723,5,114, + 0,0,1723,260,1,0,0,0,1724,1725,5,46,0,0,1725,1726,5,112,0,0,1726,1727, + 5,114,0,0,1727,1728,5,111,0,0,1728,1729,5,112,0,0,1729,1730,5,101,0,0, + 1730,1731,5,114,0,0,1731,1732,5,116,0,0,1732,1733,5,121,0,0,1733,262,1, + 0,0,0,1734,1735,5,46,0,0,1735,1736,5,115,0,0,1736,1737,5,101,0,0,1737, + 1738,5,116,0,0,1738,264,1,0,0,0,1739,1740,5,46,0,0,1740,1741,5,103,0,0, + 1741,1742,5,101,0,0,1742,1743,5,116,0,0,1743,266,1,0,0,0,1744,1745,5,105, + 0,0,1745,1746,5,110,0,0,1746,268,1,0,0,0,1747,1748,5,111,0,0,1748,1749, + 5,117,0,0,1749,1750,5,116,0,0,1750,270,1,0,0,0,1751,1752,5,111,0,0,1752, + 1753,5,112,0,0,1753,1754,5,116,0,0,1754,272,1,0,0,0,1755,1756,5,46,0,0, + 1756,1757,5,109,0,0,1757,1758,5,101,0,0,1758,1759,5,116,0,0,1759,1760, + 5,104,0,0,1760,1761,5,111,0,0,1761,1762,5,100,0,0,1762,274,1,0,0,0,1763, + 1764,5,102,0,0,1764,1765,5,105,0,0,1765,1766,5,110,0,0,1766,1767,5,97, + 0,0,1767,1768,5,108,0,0,1768,276,1,0,0,0,1769,1770,5,118,0,0,1770,1771, + 5,105,0,0,1771,1772,5,114,0,0,1772,1773,5,116,0,0,1773,1774,5,117,0,0, + 1774,1775,5,97,0,0,1775,1776,5,108,0,0,1776,278,1,0,0,0,1777,1778,5,115, + 0,0,1778,1779,5,116,0,0,1779,1780,5,114,0,0,1780,1781,5,105,0,0,1781,1782, + 5,99,0,0,1782,1783,5,116,0,0,1783,280,1,0,0,0,1784,1785,5,104,0,0,1785, + 1786,5,105,0,0,1786,1787,5,100,0,0,1787,1788,5,101,0,0,1788,1789,5,98, + 0,0,1789,1790,5,121,0,0,1790,1791,5,115,0,0,1791,1792,5,105,0,0,1792,1793, + 5,103,0,0,1793,282,1,0,0,0,1794,1795,5,110,0,0,1795,1796,5,101,0,0,1796, + 1797,5,119,0,0,1797,1798,5,115,0,0,1798,1799,5,108,0,0,1799,1800,5,111, + 0,0,1800,1801,5,116,0,0,1801,284,1,0,0,0,1802,1803,5,117,0,0,1803,1804, + 5,110,0,0,1804,1805,5,109,0,0,1805,1806,5,97,0,0,1806,1807,5,110,0,0,1807, + 1808,5,97,0,0,1808,1809,5,103,0,0,1809,1810,5,101,0,0,1810,1811,5,100, + 0,0,1811,1812,5,101,0,0,1812,1813,5,120,0,0,1813,1814,5,112,0,0,1814,286, + 1,0,0,0,1815,1816,5,114,0,0,1816,1817,5,101,0,0,1817,1818,5,113,0,0,1818, + 1819,5,115,0,0,1819,1820,5,101,0,0,1820,1821,5,99,0,0,1821,1822,5,111, + 0,0,1822,1823,5,98,0,0,1823,1824,5,106,0,0,1824,288,1,0,0,0,1825,1826, + 5,112,0,0,1826,1827,5,105,0,0,1827,1828,5,110,0,0,1828,1829,5,118,0,0, + 1829,1830,5,111,0,0,1830,1831,5,107,0,0,1831,1832,5,101,0,0,1832,1833, + 5,105,0,0,1833,1834,5,109,0,0,1834,1835,5,112,0,0,1835,1836,5,108,0,0, + 1836,290,1,0,0,0,1837,1838,5,110,0,0,1838,1839,5,111,0,0,1839,1840,5,109, + 0,0,1840,1841,5,97,0,0,1841,1842,5,110,0,0,1842,1843,5,103,0,0,1843,1844, + 5,108,0,0,1844,1845,5,101,0,0,1845,292,1,0,0,0,1846,1847,5,108,0,0,1847, + 1848,5,97,0,0,1848,1849,5,115,0,0,1849,1850,5,116,0,0,1850,1851,5,101, + 0,0,1851,1852,5,114,0,0,1852,1853,5,114,0,0,1853,294,1,0,0,0,1854,1855, + 5,119,0,0,1855,1856,5,105,0,0,1856,1857,5,110,0,0,1857,1858,5,97,0,0,1858, + 1859,5,112,0,0,1859,1860,5,105,0,0,1860,296,1,0,0,0,1861,1862,5,98,0,0, + 1862,1863,5,101,0,0,1863,1864,5,115,0,0,1864,1865,5,116,0,0,1865,1866, + 5,102,0,0,1866,1867,5,105,0,0,1867,1868,5,116,0,0,1868,298,1,0,0,0,1869, + 1870,5,111,0,0,1870,1871,5,110,0,0,1871,300,1,0,0,0,1872,1873,5,111,0, + 0,1873,1874,5,102,0,0,1874,1875,5,102,0,0,1875,302,1,0,0,0,1876,1877,5, + 99,0,0,1877,1878,5,104,0,0,1878,1879,5,97,0,0,1879,1880,5,114,0,0,1880, + 1881,5,109,0,0,1881,1882,5,97,0,0,1882,1883,5,112,0,0,1883,1884,5,101, + 0,0,1884,1885,5,114,0,0,1885,1886,5,114,0,0,1886,1887,5,111,0,0,1887,1888, + 5,114,0,0,1888,304,1,0,0,0,1889,1890,5,46,0,0,1890,1891,5,99,0,0,1891, + 1892,5,99,0,0,1892,1893,5,116,0,0,1893,1894,5,111,0,0,1894,1895,5,114, + 0,0,1895,306,1,0,0,0,1896,1897,5,105,0,0,1897,1898,5,110,0,0,1898,1899, + 5,105,0,0,1899,1900,5,116,0,0,1900,308,1,0,0,0,1901,1902,5,46,0,0,1902, + 1903,5,116,0,0,1903,1904,5,114,0,0,1904,1905,5,121,0,0,1905,310,1,0,0, + 0,1906,1907,5,116,0,0,1907,1908,5,111,0,0,1908,312,1,0,0,0,1909,1910,5, + 102,0,0,1910,1911,5,105,0,0,1911,1912,5,108,0,0,1912,1913,5,116,0,0,1913, + 1914,5,101,0,0,1914,1915,5,114,0,0,1915,314,1,0,0,0,1916,1917,5,99,0,0, + 1917,1918,5,97,0,0,1918,1919,5,116,0,0,1919,1920,5,99,0,0,1920,1921,5, + 104,0,0,1921,316,1,0,0,0,1922,1923,5,102,0,0,1923,1924,5,105,0,0,1924, + 1925,5,110,0,0,1925,1926,5,97,0,0,1926,1927,5,108,0,0,1927,1928,5,108, + 0,0,1928,1929,5,121,0,0,1929,318,1,0,0,0,1930,1931,5,102,0,0,1931,1932, + 5,97,0,0,1932,1933,5,117,0,0,1933,1934,5,108,0,0,1934,1935,5,116,0,0,1935, + 320,1,0,0,0,1936,1937,5,104,0,0,1937,1938,5,97,0,0,1938,1939,5,110,0,0, + 1939,1940,5,100,0,0,1940,1941,5,108,0,0,1941,1942,5,101,0,0,1942,1943, + 5,114,0,0,1943,322,1,0,0,0,1944,1945,5,46,0,0,1945,1946,5,100,0,0,1946, + 1947,5,97,0,0,1947,1948,5,116,0,0,1948,1949,5,97,0,0,1949,324,1,0,0,0, + 1950,1951,5,116,0,0,1951,1952,5,108,0,0,1952,1953,5,115,0,0,1953,326,1, + 0,0,0,1954,1955,5,46,0,0,1955,1956,5,112,0,0,1956,1957,5,117,0,0,1957, + 1958,5,98,0,0,1958,1959,5,108,0,0,1959,1960,5,105,0,0,1960,1961,5,99,0, + 0,1961,1962,5,75,0,0,1962,1963,5,101,0,0,1963,1964,5,121,0,0,1964,328, + 1,0,0,0,1965,1966,5,46,0,0,1966,1967,5,118,0,0,1967,1968,5,101,0,0,1968, + 1969,5,114,0,0,1969,330,1,0,0,0,1970,1971,5,46,0,0,1971,1972,5,108,0,0, + 1972,1973,5,111,0,0,1973,1974,5,99,0,0,1974,1975,5,97,0,0,1975,1976,5, + 108,0,0,1976,1977,5,101,0,0,1977,332,1,0,0,0,1978,1979,5,46,0,0,1979,1980, + 5,112,0,0,1980,1981,5,117,0,0,1981,1982,5,98,0,0,1982,1983,5,108,0,0,1983, + 1984,5,105,0,0,1984,1985,5,99,0,0,1985,1986,5,107,0,0,1986,1987,5,101, + 0,0,1987,1988,5,121,0,0,1988,1989,5,116,0,0,1989,1990,5,111,0,0,1990,1991, + 5,107,0,0,1991,1992,5,101,0,0,1992,1993,5,110,0,0,1993,334,1,0,0,0,1994, + 1995,5,102,0,0,1995,1996,5,111,0,0,1996,1997,5,114,0,0,1997,1998,5,119, + 0,0,1998,1999,5,97,0,0,1999,2000,5,114,0,0,2000,2001,5,100,0,0,2001,2002, + 5,101,0,0,2002,2003,5,114,0,0,2003,336,1,0,0,0,2004,2006,5,45,0,0,2005, + 2004,1,0,0,0,2005,2006,1,0,0,0,2006,2020,1,0,0,0,2007,2008,5,48,0,0,2008, + 2009,5,120,0,0,2009,2011,1,0,0,0,2010,2012,7,0,0,0,2011,2010,1,0,0,0,2012, + 2013,1,0,0,0,2013,2011,1,0,0,0,2013,2014,1,0,0,0,2014,2021,1,0,0,0,2015, + 2017,7,1,0,0,2016,2015,1,0,0,0,2017,2018,1,0,0,0,2018,2016,1,0,0,0,2018, + 2019,1,0,0,0,2019,2021,1,0,0,0,2020,2007,1,0,0,0,2020,2016,1,0,0,0,2021, + 338,1,0,0,0,2022,2024,5,45,0,0,2023,2022,1,0,0,0,2023,2024,1,0,0,0,2024, + 2038,1,0,0,0,2025,2026,5,48,0,0,2026,2027,5,120,0,0,2027,2029,1,0,0,0, + 2028,2030,7,0,0,0,2029,2028,1,0,0,0,2030,2031,1,0,0,0,2031,2029,1,0,0, + 0,2031,2032,1,0,0,0,2032,2039,1,0,0,0,2033,2035,7,1,0,0,2034,2033,1,0, + 0,0,2035,2036,1,0,0,0,2036,2034,1,0,0,0,2036,2037,1,0,0,0,2037,2039,1, + 0,0,0,2038,2025,1,0,0,0,2038,2034,1,0,0,0,2039,340,1,0,0,0,2040,2042,5, + 45,0,0,2041,2040,1,0,0,0,2041,2042,1,0,0,0,2042,2044,1,0,0,0,2043,2045, + 7,1,0,0,2044,2043,1,0,0,0,2045,2046,1,0,0,0,2046,2044,1,0,0,0,2046,2047, + 1,0,0,0,2047,2063,1,0,0,0,2048,2050,5,46,0,0,2049,2051,7,1,0,0,2050,2049, + 1,0,0,0,2051,2052,1,0,0,0,2052,2050,1,0,0,0,2052,2053,1,0,0,0,2053,2064, + 1,0,0,0,2054,2056,7,2,0,0,2055,2057,5,45,0,0,2056,2055,1,0,0,0,2056,2057, + 1,0,0,0,2057,2059,1,0,0,0,2058,2060,7,1,0,0,2059,2058,1,0,0,0,2060,2061, + 1,0,0,0,2061,2059,1,0,0,0,2061,2062,1,0,0,0,2062,2064,1,0,0,0,2063,2048, + 1,0,0,0,2063,2054,1,0,0,0,2064,342,1,0,0,0,2065,2066,7,0,0,0,2066,2067, + 7,0,0,0,2067,344,1,0,0,0,2068,2069,5,58,0,0,2069,2070,5,58,0,0,2070,346, + 1,0,0,0,2071,2072,5,46,0,0,2072,2073,5,46,0,0,2073,348,1,0,0,0,2074,2075, + 5,110,0,0,2075,2076,5,117,0,0,2076,2077,5,108,0,0,2077,2078,5,108,0,0, + 2078,350,1,0,0,0,2079,2080,5,110,0,0,2080,2081,5,117,0,0,2081,2082,5,108, + 0,0,2082,2083,5,108,0,0,2083,2084,5,114,0,0,2084,2085,5,101,0,0,2085,2086, + 5,102,0,0,2086,352,1,0,0,0,2087,2088,5,46,0,0,2088,2089,5,104,0,0,2089, + 2090,5,97,0,0,2090,2091,5,115,0,0,2091,2092,5,104,0,0,2092,354,1,0,0,0, + 2093,2094,5,99,0,0,2094,2095,5,104,0,0,2095,2096,5,97,0,0,2096,2097,5, + 114,0,0,2097,356,1,0,0,0,2098,2099,5,115,0,0,2099,2100,5,116,0,0,2100, + 2101,5,114,0,0,2101,2102,5,105,0,0,2102,2103,5,110,0,0,2103,2104,5,103, + 0,0,2104,358,1,0,0,0,2105,2106,5,98,0,0,2106,2107,5,111,0,0,2107,2108, + 5,111,0,0,2108,2109,5,108,0,0,2109,360,1,0,0,0,2110,2111,5,105,0,0,2111, + 2112,5,110,0,0,2112,2113,5,116,0,0,2113,2114,5,56,0,0,2114,362,1,0,0,0, + 2115,2116,5,105,0,0,2116,2117,5,110,0,0,2117,2118,5,116,0,0,2118,2119, + 5,49,0,0,2119,2120,5,54,0,0,2120,364,1,0,0,0,2121,2122,5,105,0,0,2122, + 2123,5,110,0,0,2123,2124,5,116,0,0,2124,2125,5,51,0,0,2125,2126,5,50,0, + 0,2126,366,1,0,0,0,2127,2128,5,105,0,0,2128,2129,5,110,0,0,2129,2130,5, + 116,0,0,2130,2131,5,54,0,0,2131,2132,5,52,0,0,2132,368,1,0,0,0,2133,2134, + 5,102,0,0,2134,2135,5,108,0,0,2135,2136,5,111,0,0,2136,2137,5,97,0,0,2137, + 2138,5,116,0,0,2138,2139,5,51,0,0,2139,2140,5,50,0,0,2140,370,1,0,0,0, + 2141,2142,5,102,0,0,2142,2143,5,108,0,0,2143,2144,5,111,0,0,2144,2145, + 5,97,0,0,2145,2146,5,116,0,0,2146,2147,5,54,0,0,2147,2148,5,52,0,0,2148, + 372,1,0,0,0,2149,2150,5,117,0,0,2150,2151,5,110,0,0,2151,2152,5,115,0, + 0,2152,2153,5,105,0,0,2153,2154,5,103,0,0,2154,2155,5,110,0,0,2155,2156, + 5,101,0,0,2156,2157,5,100,0,0,2157,374,1,0,0,0,2158,2159,5,117,0,0,2159, + 2160,5,105,0,0,2160,2161,5,110,0,0,2161,2162,5,116,0,0,2162,2167,5,56, + 0,0,2163,2164,3,373,186,0,2164,2165,3,361,180,0,2165,2167,1,0,0,0,2166, + 2158,1,0,0,0,2166,2163,1,0,0,0,2167,376,1,0,0,0,2168,2169,5,117,0,0,2169, + 2170,5,105,0,0,2170,2171,5,110,0,0,2171,2172,5,116,0,0,2172,2173,5,49, + 0,0,2173,2178,5,54,0,0,2174,2175,3,373,186,0,2175,2176,3,363,181,0,2176, + 2178,1,0,0,0,2177,2168,1,0,0,0,2177,2174,1,0,0,0,2178,378,1,0,0,0,2179, + 2180,5,117,0,0,2180,2181,5,105,0,0,2181,2182,5,110,0,0,2182,2183,5,116, + 0,0,2183,2184,5,51,0,0,2184,2189,5,50,0,0,2185,2186,3,373,186,0,2186,2187, + 3,365,182,0,2187,2189,1,0,0,0,2188,2179,1,0,0,0,2188,2185,1,0,0,0,2189, + 380,1,0,0,0,2190,2191,5,117,0,0,2191,2192,5,105,0,0,2192,2193,5,110,0, + 0,2193,2194,5,116,0,0,2194,2195,5,54,0,0,2195,2200,5,52,0,0,2196,2197, + 3,373,186,0,2197,2198,3,367,183,0,2198,2200,1,0,0,0,2199,2190,1,0,0,0, + 2199,2196,1,0,0,0,2200,382,1,0,0,0,2201,2202,5,105,0,0,2202,2203,5,110, + 0,0,2203,2204,5,116,0,0,2204,384,1,0,0,0,2205,2206,5,117,0,0,2206,2207, + 5,105,0,0,2207,2208,5,110,0,0,2208,2215,5,116,0,0,2209,2210,3,373,186, + 0,2210,2211,5,105,0,0,2211,2212,5,110,0,0,2212,2213,5,116,0,0,2213,2215, + 1,0,0,0,2214,2205,1,0,0,0,2214,2209,1,0,0,0,2215,386,1,0,0,0,2216,2217, + 5,116,0,0,2217,2218,5,121,0,0,2218,2219,5,112,0,0,2219,2220,5,101,0,0, + 2220,388,1,0,0,0,2221,2222,5,111,0,0,2222,2223,5,98,0,0,2223,2224,5,106, + 0,0,2224,2225,5,101,0,0,2225,2226,5,99,0,0,2226,2227,5,116,0,0,2227,390, + 1,0,0,0,2228,2229,5,46,0,0,2229,2230,5,109,0,0,2230,2231,5,111,0,0,2231, + 2232,5,100,0,0,2232,2233,5,117,0,0,2233,2234,5,108,0,0,2234,2235,5,101, + 0,0,2235,392,1,0,0,0,2236,2237,5,118,0,0,2237,2238,5,97,0,0,2238,2239, + 5,108,0,0,2239,2240,5,117,0,0,2240,2241,5,101,0,0,2241,394,1,0,0,0,2242, + 2243,5,118,0,0,2243,2244,5,97,0,0,2244,2245,5,108,0,0,2245,2246,5,117, + 0,0,2246,2247,5,101,0,0,2247,2248,5,116,0,0,2248,2249,5,121,0,0,2249,2250, + 5,112,0,0,2250,2251,5,101,0,0,2251,396,1,0,0,0,2252,2253,5,118,0,0,2253, + 2254,5,111,0,0,2254,2255,5,105,0,0,2255,2256,5,100,0,0,2256,398,1,0,0, + 0,2257,2258,5,101,0,0,2258,2259,5,110,0,0,2259,2260,5,117,0,0,2260,2261, + 5,109,0,0,2261,400,1,0,0,0,2262,2263,5,99,0,0,2263,2264,5,117,0,0,2264, + 2265,5,115,0,0,2265,2266,5,116,0,0,2266,2267,5,111,0,0,2267,2268,5,109, + 0,0,2268,402,1,0,0,0,2269,2270,5,102,0,0,2270,2271,5,105,0,0,2271,2272, + 5,120,0,0,2272,2273,5,101,0,0,2273,2274,5,100,0,0,2274,404,1,0,0,0,2275, + 2276,5,115,0,0,2276,2277,5,121,0,0,2277,2278,5,115,0,0,2278,2279,5,116, + 0,0,2279,2280,5,114,0,0,2280,2281,5,105,0,0,2281,2282,5,110,0,0,2282,2283, + 5,103,0,0,2283,406,1,0,0,0,2284,2285,5,97,0,0,2285,2286,5,114,0,0,2286, + 2287,5,114,0,0,2287,2288,5,97,0,0,2288,2289,5,121,0,0,2289,408,1,0,0,0, + 2290,2291,5,118,0,0,2291,2292,5,97,0,0,2292,2293,5,114,0,0,2293,2294,5, + 105,0,0,2294,2295,5,97,0,0,2295,2296,5,110,0,0,2296,2297,5,116,0,0,2297, + 410,1,0,0,0,2298,2299,5,99,0,0,2299,2300,5,117,0,0,2300,2301,5,114,0,0, + 2301,2302,5,114,0,0,2302,2303,5,101,0,0,2303,2304,5,110,0,0,2304,2305, + 5,99,0,0,2305,2306,5,121,0,0,2306,412,1,0,0,0,2307,2308,5,115,0,0,2308, + 2309,5,121,0,0,2309,2310,5,115,0,0,2310,2311,5,99,0,0,2311,2312,5,104, + 0,0,2312,2313,5,97,0,0,2313,2314,5,114,0,0,2314,414,1,0,0,0,2315,2316, + 5,101,0,0,2316,2317,5,114,0,0,2317,2318,5,114,0,0,2318,2319,5,111,0,0, + 2319,2320,5,114,0,0,2320,416,1,0,0,0,2321,2322,5,100,0,0,2322,2323,5,101, + 0,0,2323,2324,5,99,0,0,2324,2325,5,105,0,0,2325,2326,5,109,0,0,2326,2327, + 5,97,0,0,2327,2328,5,108,0,0,2328,418,1,0,0,0,2329,2330,5,100,0,0,2330, + 2331,5,97,0,0,2331,2332,5,116,0,0,2332,2333,5,101,0,0,2333,420,1,0,0,0, + 2334,2335,5,98,0,0,2335,2336,5,115,0,0,2336,2337,5,116,0,0,2337,2338,5, + 114,0,0,2338,422,1,0,0,0,2339,2340,5,108,0,0,2340,2341,5,112,0,0,2341, + 2342,5,115,0,0,2342,2343,5,116,0,0,2343,2344,5,114,0,0,2344,424,1,0,0, + 0,2345,2346,5,108,0,0,2346,2347,5,112,0,0,2347,2348,5,119,0,0,2348,2349, + 5,115,0,0,2349,2350,5,116,0,0,2350,2351,5,114,0,0,2351,426,1,0,0,0,2352, + 2353,5,108,0,0,2353,2354,5,112,0,0,2354,2355,5,116,0,0,2355,2356,5,115, + 0,0,2356,2357,5,116,0,0,2357,2358,5,114,0,0,2358,428,1,0,0,0,2359,2360, + 5,111,0,0,2360,2361,5,98,0,0,2361,2362,5,106,0,0,2362,2363,5,101,0,0,2363, + 2364,5,99,0,0,2364,2365,5,116,0,0,2365,2366,5,114,0,0,2366,2367,5,101, + 0,0,2367,2368,5,102,0,0,2368,430,1,0,0,0,2369,2370,5,105,0,0,2370,2371, + 5,117,0,0,2371,2372,5,110,0,0,2372,2373,5,107,0,0,2373,2374,5,110,0,0, + 2374,2375,5,111,0,0,2375,2376,5,119,0,0,2376,2377,5,110,0,0,2377,432,1, + 0,0,0,2378,2379,5,105,0,0,2379,2380,5,100,0,0,2380,2381,5,105,0,0,2381, + 2382,5,115,0,0,2382,2383,5,112,0,0,2383,2384,5,97,0,0,2384,2385,5,116, + 0,0,2385,2386,5,99,0,0,2386,2387,5,104,0,0,2387,434,1,0,0,0,2388,2389, + 5,115,0,0,2389,2390,5,116,0,0,2390,2391,5,114,0,0,2391,2392,5,117,0,0, + 2392,2393,5,99,0,0,2393,2394,5,116,0,0,2394,436,1,0,0,0,2395,2396,5,105, + 0,0,2396,2397,5,110,0,0,2397,2398,5,116,0,0,2398,2399,5,101,0,0,2399,2400, + 5,114,0,0,2400,2401,5,102,0,0,2401,2402,5,97,0,0,2402,2403,5,99,0,0,2403, + 2404,5,101,0,0,2404,438,1,0,0,0,2405,2406,5,115,0,0,2406,2407,5,97,0,0, + 2407,2408,5,102,0,0,2408,2409,5,101,0,0,2409,2410,5,97,0,0,2410,2411,5, + 114,0,0,2411,2412,5,114,0,0,2412,2413,5,97,0,0,2413,2414,5,121,0,0,2414, + 440,1,0,0,0,2415,2416,5,110,0,0,2416,2417,5,101,0,0,2417,2418,5,115,0, + 0,2418,2419,5,116,0,0,2419,2420,5,101,0,0,2420,2421,5,100,0,0,2421,2422, + 1,0,0,0,2422,2423,3,435,217,0,2423,442,1,0,0,0,2424,2425,3,409,204,0,2425, + 2426,3,359,179,0,2426,444,1,0,0,0,2427,2428,5,98,0,0,2428,2429,5,121,0, + 0,2429,2430,5,118,0,0,2430,2431,5,97,0,0,2431,2432,5,108,0,0,2432,2433, + 5,115,0,0,2433,2434,5,116,0,0,2434,2435,5,114,0,0,2435,446,1,0,0,0,2436, + 2437,5,97,0,0,2437,2438,5,110,0,0,2438,2439,5,115,0,0,2439,2440,5,105, + 0,0,2440,448,1,0,0,0,2441,2442,3,447,223,0,2442,2443,3,421,210,0,2443, + 450,1,0,0,0,2444,2445,5,116,0,0,2445,2446,5,98,0,0,2446,2447,5,115,0,0, + 2447,2448,5,116,0,0,2448,2449,5,114,0,0,2449,452,1,0,0,0,2450,2451,5,109, + 0,0,2451,2452,5,101,0,0,2452,2453,5,116,0,0,2453,2454,5,104,0,0,2454,2455, + 5,111,0,0,2455,2456,5,100,0,0,2456,454,1,0,0,0,2457,2458,5,97,0,0,2458, + 2459,5,110,0,0,2459,2460,5,121,0,0,2460,456,1,0,0,0,2461,2462,5,108,0, + 0,2462,2463,5,112,0,0,2463,2464,5,115,0,0,2464,2465,5,116,0,0,2465,2466, + 5,114,0,0,2466,2467,5,117,0,0,2467,2468,5,99,0,0,2468,2469,5,116,0,0,2469, + 458,1,0,0,0,2470,2471,5,118,0,0,2471,2472,5,101,0,0,2472,2473,5,99,0,0, + 2473,2474,5,116,0,0,2474,2475,5,111,0,0,2475,2476,5,114,0,0,2476,460,1, + 0,0,0,2477,2478,5,104,0,0,2478,2479,5,114,0,0,2479,2480,5,101,0,0,2480, + 2481,5,115,0,0,2481,2482,5,117,0,0,2482,2483,5,108,0,0,2483,2484,5,116, + 0,0,2484,462,1,0,0,0,2485,2486,5,99,0,0,2486,2487,5,97,0,0,2487,2488,5, + 114,0,0,2488,2489,5,114,0,0,2489,2490,5,97,0,0,2490,2491,5,121,0,0,2491, + 464,1,0,0,0,2492,2493,5,117,0,0,2493,2494,5,115,0,0,2494,2495,5,101,0, + 0,2495,2496,5,114,0,0,2496,2497,5,100,0,0,2497,2498,5,101,0,0,2498,2499, + 5,102,0,0,2499,2500,5,105,0,0,2500,2501,5,110,0,0,2501,2502,5,101,0,0, + 2502,2503,5,100,0,0,2503,466,1,0,0,0,2504,2505,5,114,0,0,2505,2506,5,101, + 0,0,2506,2507,5,99,0,0,2507,2508,5,111,0,0,2508,2509,5,114,0,0,2509,2510, + 5,100,0,0,2510,468,1,0,0,0,2511,2512,5,102,0,0,2512,2513,5,105,0,0,2513, + 2514,5,108,0,0,2514,2515,5,101,0,0,2515,2516,5,116,0,0,2516,2517,5,105, + 0,0,2517,2518,5,109,0,0,2518,2519,5,101,0,0,2519,470,1,0,0,0,2520,2521, + 5,98,0,0,2521,2522,5,108,0,0,2522,2523,5,111,0,0,2523,2524,5,98,0,0,2524, + 472,1,0,0,0,2525,2526,5,115,0,0,2526,2527,5,116,0,0,2527,2528,5,114,0, + 0,2528,2529,5,101,0,0,2529,2530,5,97,0,0,2530,2531,5,109,0,0,2531,474, + 1,0,0,0,2532,2533,5,115,0,0,2533,2534,5,116,0,0,2534,2535,5,111,0,0,2535, + 2536,5,114,0,0,2536,2537,5,97,0,0,2537,2538,5,103,0,0,2538,2539,5,101, + 0,0,2539,476,1,0,0,0,2540,2541,5,115,0,0,2541,2542,5,116,0,0,2542,2543, + 5,114,0,0,2543,2544,5,101,0,0,2544,2545,5,97,0,0,2545,2546,5,109,0,0,2546, + 2547,5,101,0,0,2547,2548,5,100,0,0,2548,2549,5,95,0,0,2549,2550,5,111, + 0,0,2550,2551,5,98,0,0,2551,2552,5,106,0,0,2552,2553,5,101,0,0,2553,2554, + 5,99,0,0,2554,2555,5,116,0,0,2555,478,1,0,0,0,2556,2557,5,115,0,0,2557, + 2558,5,116,0,0,2558,2559,5,111,0,0,2559,2560,5,114,0,0,2560,2561,5,101, + 0,0,2561,2562,5,100,0,0,2562,2563,5,95,0,0,2563,2564,5,111,0,0,2564,2565, + 5,98,0,0,2565,2566,5,106,0,0,2566,2567,5,101,0,0,2567,2568,5,99,0,0,2568, + 2569,5,116,0,0,2569,480,1,0,0,0,2570,2571,5,98,0,0,2571,2572,5,108,0,0, + 2572,2573,5,111,0,0,2573,2574,5,98,0,0,2574,2575,5,95,0,0,2575,2576,5, + 111,0,0,2576,2577,5,98,0,0,2577,2578,5,106,0,0,2578,2579,5,101,0,0,2579, + 2580,5,99,0,0,2580,2581,5,116,0,0,2581,482,1,0,0,0,2582,2583,5,99,0,0, + 2583,2584,5,102,0,0,2584,484,1,0,0,0,2585,2586,5,99,0,0,2586,2587,5,108, + 0,0,2587,2588,5,115,0,0,2588,2589,5,105,0,0,2589,2590,5,100,0,0,2590,486, + 1,0,0,0,2591,2592,5,105,0,0,2592,2593,5,110,0,0,2593,2594,5,115,0,0,2594, + 2595,5,116,0,0,2595,2596,5,97,0,0,2596,2597,5,110,0,0,2597,2598,5,99,0, + 0,2598,2599,5,101,0,0,2599,488,1,0,0,0,2600,2601,5,101,0,0,2601,2602,5, + 120,0,0,2602,2603,5,112,0,0,2603,2604,5,108,0,0,2604,2605,5,105,0,0,2605, + 2606,5,99,0,0,2606,2607,5,105,0,0,2607,2608,5,116,0,0,2608,490,1,0,0,0, + 2609,2610,5,100,0,0,2610,2611,5,101,0,0,2611,2612,5,102,0,0,2612,2613, + 5,97,0,0,2613,2614,5,117,0,0,2614,2615,5,108,0,0,2615,2616,5,116,0,0,2616, + 492,1,0,0,0,2617,2618,5,118,0,0,2618,2619,5,97,0,0,2619,2620,5,114,0,0, + 2620,2621,5,97,0,0,2621,2622,5,114,0,0,2622,2623,5,103,0,0,2623,494,1, + 0,0,0,2624,2625,5,117,0,0,2625,2626,5,110,0,0,2626,2627,5,109,0,0,2627, + 2628,5,97,0,0,2628,2629,5,110,0,0,2629,2630,5,97,0,0,2630,2631,5,103,0, + 0,2631,2632,5,101,0,0,2632,2633,5,100,0,0,2633,496,1,0,0,0,2634,2635,5, + 99,0,0,2635,2636,5,100,0,0,2636,2637,5,101,0,0,2637,2638,5,99,0,0,2638, + 2639,5,108,0,0,2639,498,1,0,0,0,2640,2641,5,115,0,0,2641,2642,5,116,0, + 0,2642,2643,5,100,0,0,2643,2644,5,99,0,0,2644,2645,5,97,0,0,2645,2646, + 5,108,0,0,2646,2647,5,108,0,0,2647,500,1,0,0,0,2648,2649,5,116,0,0,2649, + 2650,5,104,0,0,2650,2651,5,105,0,0,2651,2652,5,115,0,0,2652,2653,5,99, + 0,0,2653,2654,5,97,0,0,2654,2655,5,108,0,0,2655,2656,5,108,0,0,2656,502, + 1,0,0,0,2657,2658,5,102,0,0,2658,2659,5,97,0,0,2659,2660,5,115,0,0,2660, + 2661,5,116,0,0,2661,2662,5,99,0,0,2662,2663,5,97,0,0,2663,2664,5,108,0, + 0,2664,2665,5,108,0,0,2665,504,1,0,0,0,2666,2667,5,33,0,0,2667,506,1,0, + 0,0,2668,2669,5,33,0,0,2669,2670,5,33,0,0,2670,508,1,0,0,0,2671,2672,5, + 116,0,0,2672,2673,5,121,0,0,2673,2674,5,112,0,0,2674,2675,5,101,0,0,2675, + 2676,5,100,0,0,2676,2677,5,114,0,0,2677,2678,5,101,0,0,2678,2679,5,102, + 0,0,2679,510,1,0,0,0,2680,2681,5,110,0,0,2681,2682,5,97,0,0,2682,2683, + 5,116,0,0,2683,2684,5,105,0,0,2684,2685,5,118,0,0,2685,2686,5,101,0,0, + 2686,2687,1,0,0,0,2687,2688,5,105,0,0,2688,2689,5,110,0,0,2689,2690,5, + 116,0,0,2690,512,1,0,0,0,2691,2692,5,110,0,0,2692,2693,5,97,0,0,2693,2694, + 5,116,0,0,2694,2695,5,105,0,0,2695,2696,5,118,0,0,2696,2697,5,101,0,0, + 2697,2698,1,0,0,0,2698,2699,5,117,0,0,2699,2700,5,110,0,0,2700,2701,5, + 115,0,0,2701,2702,5,105,0,0,2702,2703,5,103,0,0,2703,2704,5,110,0,0,2704, + 2705,5,101,0,0,2705,2706,5,100,0,0,2706,2707,1,0,0,0,2707,2708,5,105,0, + 0,2708,2709,5,110,0,0,2709,2722,5,116,0,0,2710,2711,5,110,0,0,2711,2712, + 5,97,0,0,2712,2713,5,116,0,0,2713,2714,5,105,0,0,2714,2715,5,118,0,0,2715, + 2716,5,101,0,0,2716,2717,1,0,0,0,2717,2718,5,117,0,0,2718,2719,5,105,0, + 0,2719,2720,5,110,0,0,2720,2722,5,116,0,0,2721,2691,1,0,0,0,2721,2710, + 1,0,0,0,2722,514,1,0,0,0,2723,2724,5,46,0,0,2724,2725,5,112,0,0,2725,2726, + 5,97,0,0,2726,2727,5,114,0,0,2727,2728,5,97,0,0,2728,2729,5,109,0,0,2729, + 516,1,0,0,0,2730,2731,5,99,0,0,2731,2732,5,111,0,0,2732,2733,5,110,0,0, + 2733,2734,5,115,0,0,2734,2735,5,116,0,0,2735,2736,5,114,0,0,2736,2737, + 5,97,0,0,2737,2738,5,105,0,0,2738,2739,5,110,0,0,2739,2740,5,116,0,0,2740, + 518,1,0,0,0,2741,2742,5,46,0,0,2742,2743,5,116,0,0,2743,2744,5,104,0,0, + 2744,2745,5,105,0,0,2745,2746,5,115,0,0,2746,520,1,0,0,0,2747,2748,5,46, + 0,0,2748,2749,5,98,0,0,2749,2750,5,97,0,0,2750,2751,5,115,0,0,2751,2752, + 5,101,0,0,2752,522,1,0,0,0,2753,2754,5,46,0,0,2754,2755,5,110,0,0,2755, + 2756,5,101,0,0,2756,2757,5,115,0,0,2757,2758,5,116,0,0,2758,2759,5,101, + 0,0,2759,2760,5,114,0,0,2760,524,1,0,0,0,2761,2762,5,38,0,0,2762,526,1, + 0,0,0,2763,2764,5,91,0,0,2764,2765,5,93,0,0,2765,528,1,0,0,0,2766,2767, + 5,42,0,0,2767,530,1,0,0,0,2768,2774,5,34,0,0,2769,2773,8,3,0,0,2770,2771, + 5,92,0,0,2771,2773,7,3,0,0,2772,2769,1,0,0,0,2772,2770,1,0,0,0,2773,2776, + 1,0,0,0,2774,2772,1,0,0,0,2774,2775,1,0,0,0,2775,2777,1,0,0,0,2776,2774, + 1,0,0,0,2777,2778,5,34,0,0,2778,532,1,0,0,0,2779,2785,5,39,0,0,2780,2784, + 8,4,0,0,2781,2782,5,92,0,0,2782,2784,7,4,0,0,2783,2780,1,0,0,0,2783,2781, + 1,0,0,0,2784,2787,1,0,0,0,2785,2783,1,0,0,0,2785,2786,1,0,0,0,2786,2788, + 1,0,0,0,2787,2785,1,0,0,0,2788,2789,5,39,0,0,2789,534,1,0,0,0,2790,2791, + 5,46,0,0,2791,536,1,0,0,0,2792,2793,5,43,0,0,2793,538,1,0,0,0,2794,2795, + 5,35,0,0,2795,2796,5,100,0,0,2796,2797,5,101,0,0,2797,2798,5,102,0,0,2798, + 2799,5,105,0,0,2799,2800,5,110,0,0,2800,2801,5,101,0,0,2801,540,1,0,0, + 0,2802,2803,5,35,0,0,2803,2804,5,117,0,0,2804,2805,5,110,0,0,2805,2806, + 5,100,0,0,2806,2807,5,101,0,0,2807,2808,5,102,0,0,2808,542,1,0,0,0,2809, + 2810,5,35,0,0,2810,2811,5,105,0,0,2811,2812,5,102,0,0,2812,2813,5,100, + 0,0,2813,2814,5,101,0,0,2814,2815,5,102,0,0,2815,544,1,0,0,0,2816,2817, + 5,35,0,0,2817,2818,5,105,0,0,2818,2819,5,102,0,0,2819,2820,5,110,0,0,2820, + 2821,5,100,0,0,2821,2822,5,101,0,0,2822,2823,5,102,0,0,2823,546,1,0,0, + 0,2824,2825,5,35,0,0,2825,2826,5,101,0,0,2826,2827,5,108,0,0,2827,2828, + 5,115,0,0,2828,2829,5,101,0,0,2829,548,1,0,0,0,2830,2831,5,35,0,0,2831, + 2832,5,101,0,0,2832,2833,5,110,0,0,2833,2834,5,100,0,0,2834,2835,5,105, + 0,0,2835,2836,5,102,0,0,2836,550,1,0,0,0,2837,2838,5,35,0,0,2838,2839, + 5,105,0,0,2839,2840,5,110,0,0,2840,2841,5,99,0,0,2841,2842,5,108,0,0,2842, + 2843,5,117,0,0,2843,2844,5,100,0,0,2844,2845,5,101,0,0,2845,552,1,0,0, + 0,2846,2847,5,46,0,0,2847,2848,5,109,0,0,2848,2849,5,114,0,0,2849,2850, + 5,101,0,0,2850,2851,5,115,0,0,2851,2852,5,111,0,0,2852,2853,5,117,0,0, + 2853,2854,5,114,0,0,2854,2855,5,99,0,0,2855,2856,5,101,0,0,2856,554,1, + 0,0,0,2857,2858,5,110,0,0,2858,2859,5,111,0,0,2859,4006,5,112,0,0,2860, + 2861,5,98,0,0,2861,2862,5,114,0,0,2862,2863,5,101,0,0,2863,2864,5,97,0, + 0,2864,4006,5,107,0,0,2865,2866,5,108,0,0,2866,2867,5,100,0,0,2867,2868, + 5,97,0,0,2868,2869,5,114,0,0,2869,2870,5,103,0,0,2870,2871,5,46,0,0,2871, + 4006,5,48,0,0,2872,2873,5,108,0,0,2873,2874,5,100,0,0,2874,2875,5,97,0, + 0,2875,2876,5,114,0,0,2876,2877,5,103,0,0,2877,2878,5,46,0,0,2878,4006, + 5,49,0,0,2879,2880,5,108,0,0,2880,2881,5,100,0,0,2881,2882,5,97,0,0,2882, + 2883,5,114,0,0,2883,2884,5,103,0,0,2884,2885,5,46,0,0,2885,4006,5,50,0, + 0,2886,2887,5,108,0,0,2887,2888,5,100,0,0,2888,2889,5,97,0,0,2889,2890, + 5,114,0,0,2890,2891,5,103,0,0,2891,2892,5,46,0,0,2892,4006,5,51,0,0,2893, + 2894,5,108,0,0,2894,2895,5,100,0,0,2895,2896,5,108,0,0,2896,2897,5,111, + 0,0,2897,2898,5,99,0,0,2898,2899,5,46,0,0,2899,4006,5,48,0,0,2900,2901, + 5,108,0,0,2901,2902,5,100,0,0,2902,2903,5,108,0,0,2903,2904,5,111,0,0, + 2904,2905,5,99,0,0,2905,2906,5,46,0,0,2906,4006,5,49,0,0,2907,2908,5,108, + 0,0,2908,2909,5,100,0,0,2909,2910,5,108,0,0,2910,2911,5,111,0,0,2911,2912, + 5,99,0,0,2912,2913,5,46,0,0,2913,4006,5,50,0,0,2914,2915,5,108,0,0,2915, + 2916,5,100,0,0,2916,2917,5,108,0,0,2917,2918,5,111,0,0,2918,2919,5,99, + 0,0,2919,2920,5,46,0,0,2920,4006,5,51,0,0,2921,2922,5,115,0,0,2922,2923, + 5,116,0,0,2923,2924,5,108,0,0,2924,2925,5,111,0,0,2925,2926,5,99,0,0,2926, + 2927,5,46,0,0,2927,4006,5,48,0,0,2928,2929,5,115,0,0,2929,2930,5,116,0, + 0,2930,2931,5,108,0,0,2931,2932,5,111,0,0,2932,2933,5,99,0,0,2933,2934, + 5,46,0,0,2934,4006,5,49,0,0,2935,2936,5,115,0,0,2936,2937,5,116,0,0,2937, + 2938,5,108,0,0,2938,2939,5,111,0,0,2939,2940,5,99,0,0,2940,2941,5,46,0, + 0,2941,4006,5,50,0,0,2942,2943,5,115,0,0,2943,2944,5,116,0,0,2944,2945, + 5,108,0,0,2945,2946,5,111,0,0,2946,2947,5,99,0,0,2947,2948,5,46,0,0,2948, + 4006,5,51,0,0,2949,2950,5,108,0,0,2950,2951,5,100,0,0,2951,2952,5,110, + 0,0,2952,2953,5,117,0,0,2953,2954,5,108,0,0,2954,4006,5,108,0,0,2955,2956, + 5,108,0,0,2956,2957,5,100,0,0,2957,2958,5,99,0,0,2958,2959,5,46,0,0,2959, + 2960,5,105,0,0,2960,2961,5,52,0,0,2961,2962,5,46,0,0,2962,2963,5,109,0, + 0,2963,4006,5,49,0,0,2964,2965,5,108,0,0,2965,2966,5,100,0,0,2966,2967, + 5,99,0,0,2967,2968,5,46,0,0,2968,2969,5,105,0,0,2969,2970,5,52,0,0,2970, + 2971,5,46,0,0,2971,4006,5,48,0,0,2972,2973,5,108,0,0,2973,2974,5,100,0, + 0,2974,2975,5,99,0,0,2975,2976,5,46,0,0,2976,2977,5,105,0,0,2977,2978, + 5,52,0,0,2978,2979,5,46,0,0,2979,4006,5,49,0,0,2980,2981,5,108,0,0,2981, + 2982,5,100,0,0,2982,2983,5,99,0,0,2983,2984,5,46,0,0,2984,2985,5,105,0, + 0,2985,2986,5,52,0,0,2986,2987,5,46,0,0,2987,4006,5,50,0,0,2988,2989,5, + 108,0,0,2989,2990,5,100,0,0,2990,2991,5,99,0,0,2991,2992,5,46,0,0,2992, + 2993,5,105,0,0,2993,2994,5,52,0,0,2994,2995,5,46,0,0,2995,4006,5,51,0, + 0,2996,2997,5,108,0,0,2997,2998,5,100,0,0,2998,2999,5,99,0,0,2999,3000, + 5,46,0,0,3000,3001,5,105,0,0,3001,3002,5,52,0,0,3002,3003,5,46,0,0,3003, + 4006,5,52,0,0,3004,3005,5,108,0,0,3005,3006,5,100,0,0,3006,3007,5,99,0, + 0,3007,3008,5,46,0,0,3008,3009,5,105,0,0,3009,3010,5,52,0,0,3010,3011, + 5,46,0,0,3011,4006,5,53,0,0,3012,3013,5,108,0,0,3013,3014,5,100,0,0,3014, + 3015,5,99,0,0,3015,3016,5,46,0,0,3016,3017,5,105,0,0,3017,3018,5,52,0, + 0,3018,3019,5,46,0,0,3019,4006,5,54,0,0,3020,3021,5,108,0,0,3021,3022, + 5,100,0,0,3022,3023,5,99,0,0,3023,3024,5,46,0,0,3024,3025,5,105,0,0,3025, + 3026,5,52,0,0,3026,3027,5,46,0,0,3027,4006,5,55,0,0,3028,3029,5,108,0, + 0,3029,3030,5,100,0,0,3030,3031,5,99,0,0,3031,3032,5,46,0,0,3032,3033, + 5,105,0,0,3033,3034,5,52,0,0,3034,3035,5,46,0,0,3035,4006,5,56,0,0,3036, + 3037,5,100,0,0,3037,3038,5,117,0,0,3038,4006,5,112,0,0,3039,3040,5,112, + 0,0,3040,3041,5,111,0,0,3041,4006,5,112,0,0,3042,3043,5,114,0,0,3043,3044, + 5,101,0,0,3044,4006,5,116,0,0,3045,3046,5,108,0,0,3046,3047,5,100,0,0, + 3047,3048,5,105,0,0,3048,3049,5,110,0,0,3049,3050,5,100,0,0,3050,3051, + 5,46,0,0,3051,3052,5,105,0,0,3052,4006,5,49,0,0,3053,3054,5,108,0,0,3054, + 3055,5,100,0,0,3055,3056,5,105,0,0,3056,3057,5,110,0,0,3057,3058,5,100, + 0,0,3058,3059,5,46,0,0,3059,3060,5,117,0,0,3060,4006,5,49,0,0,3061,3062, + 5,108,0,0,3062,3063,5,100,0,0,3063,3064,5,105,0,0,3064,3065,5,110,0,0, + 3065,3066,5,100,0,0,3066,3067,5,46,0,0,3067,3068,5,105,0,0,3068,4006,5, + 50,0,0,3069,3070,5,108,0,0,3070,3071,5,100,0,0,3071,3072,5,105,0,0,3072, + 3073,5,110,0,0,3073,3074,5,100,0,0,3074,3075,5,46,0,0,3075,3076,5,117, + 0,0,3076,4006,5,50,0,0,3077,3078,5,108,0,0,3078,3079,5,100,0,0,3079,3080, + 5,105,0,0,3080,3081,5,110,0,0,3081,3082,5,100,0,0,3082,3083,5,46,0,0,3083, + 3084,5,105,0,0,3084,4006,5,52,0,0,3085,3086,5,108,0,0,3086,3087,5,100, + 0,0,3087,3088,5,105,0,0,3088,3089,5,110,0,0,3089,3090,5,100,0,0,3090,3091, + 5,46,0,0,3091,3092,5,117,0,0,3092,4006,5,52,0,0,3093,3094,5,108,0,0,3094, + 3095,5,100,0,0,3095,3096,5,105,0,0,3096,3097,5,110,0,0,3097,3098,5,100, + 0,0,3098,3099,5,46,0,0,3099,3100,5,105,0,0,3100,4006,5,56,0,0,3101,3102, + 5,108,0,0,3102,3103,5,100,0,0,3103,3104,5,105,0,0,3104,3105,5,110,0,0, + 3105,3106,5,100,0,0,3106,3107,5,46,0,0,3107,4006,5,105,0,0,3108,3109,5, + 108,0,0,3109,3110,5,100,0,0,3110,3111,5,105,0,0,3111,3112,5,110,0,0,3112, + 3113,5,100,0,0,3113,3114,5,46,0,0,3114,3115,5,114,0,0,3115,4006,5,52,0, + 0,3116,3117,5,108,0,0,3117,3118,5,100,0,0,3118,3119,5,105,0,0,3119,3120, + 5,110,0,0,3120,3121,5,100,0,0,3121,3122,5,46,0,0,3122,3123,5,114,0,0,3123, + 4006,5,56,0,0,3124,3125,5,108,0,0,3125,3126,5,100,0,0,3126,3127,5,105, + 0,0,3127,3128,5,110,0,0,3128,3129,5,100,0,0,3129,3130,5,46,0,0,3130,3131, + 5,114,0,0,3131,3132,5,101,0,0,3132,4006,5,102,0,0,3133,3134,5,115,0,0, + 3134,3135,5,116,0,0,3135,3136,5,105,0,0,3136,3137,5,110,0,0,3137,3138, + 5,100,0,0,3138,3139,5,46,0,0,3139,3140,5,114,0,0,3140,3141,5,101,0,0,3141, + 4006,5,102,0,0,3142,3143,5,115,0,0,3143,3144,5,116,0,0,3144,3145,5,105, + 0,0,3145,3146,5,110,0,0,3146,3147,5,100,0,0,3147,3148,5,46,0,0,3148,3149, + 5,105,0,0,3149,4006,5,49,0,0,3150,3151,5,115,0,0,3151,3152,5,116,0,0,3152, + 3153,5,105,0,0,3153,3154,5,110,0,0,3154,3155,5,100,0,0,3155,3156,5,46, + 0,0,3156,3157,5,105,0,0,3157,4006,5,50,0,0,3158,3159,5,115,0,0,3159,3160, + 5,116,0,0,3160,3161,5,105,0,0,3161,3162,5,110,0,0,3162,3163,5,100,0,0, + 3163,3164,5,46,0,0,3164,3165,5,105,0,0,3165,4006,5,52,0,0,3166,3167,5, + 115,0,0,3167,3168,5,116,0,0,3168,3169,5,105,0,0,3169,3170,5,110,0,0,3170, + 3171,5,100,0,0,3171,3172,5,46,0,0,3172,3173,5,105,0,0,3173,4006,5,56,0, + 0,3174,3175,5,115,0,0,3175,3176,5,116,0,0,3176,3177,5,105,0,0,3177,3178, + 5,110,0,0,3178,3179,5,100,0,0,3179,3180,5,46,0,0,3180,3181,5,114,0,0,3181, + 4006,5,52,0,0,3182,3183,5,115,0,0,3183,3184,5,116,0,0,3184,3185,5,105, + 0,0,3185,3186,5,110,0,0,3186,3187,5,100,0,0,3187,3188,5,46,0,0,3188,3189, + 5,114,0,0,3189,4006,5,56,0,0,3190,3191,5,97,0,0,3191,3192,5,100,0,0,3192, + 4006,5,100,0,0,3193,3194,5,115,0,0,3194,3195,5,117,0,0,3195,4006,5,98, + 0,0,3196,3197,5,109,0,0,3197,3198,5,117,0,0,3198,4006,5,108,0,0,3199,3200, + 5,100,0,0,3200,3201,5,105,0,0,3201,4006,5,118,0,0,3202,3203,5,100,0,0, + 3203,3204,5,105,0,0,3204,3205,5,118,0,0,3205,3206,5,46,0,0,3206,3207,5, + 117,0,0,3207,4006,5,110,0,0,3208,3209,5,114,0,0,3209,3210,5,101,0,0,3210, + 4006,5,109,0,0,3211,3212,5,114,0,0,3212,3213,5,101,0,0,3213,3214,5,109, + 0,0,3214,3215,5,46,0,0,3215,3216,5,117,0,0,3216,4006,5,110,0,0,3217,3218, + 5,97,0,0,3218,3219,5,110,0,0,3219,4006,5,100,0,0,3220,3221,5,111,0,0,3221, + 4006,5,114,0,0,3222,3223,5,120,0,0,3223,3224,5,111,0,0,3224,4006,5,114, + 0,0,3225,3226,5,115,0,0,3226,3227,5,104,0,0,3227,4006,5,108,0,0,3228,3229, + 5,115,0,0,3229,3230,5,104,0,0,3230,4006,5,114,0,0,3231,3232,5,115,0,0, + 3232,3233,5,104,0,0,3233,3234,5,114,0,0,3234,3235,5,46,0,0,3235,3236,5, + 117,0,0,3236,4006,5,110,0,0,3237,3238,5,110,0,0,3238,3239,5,101,0,0,3239, + 4006,5,103,0,0,3240,3241,5,110,0,0,3241,3242,5,111,0,0,3242,4006,5,116, + 0,0,3243,3244,5,99,0,0,3244,3245,5,111,0,0,3245,3246,5,110,0,0,3246,3247, + 5,118,0,0,3247,3248,5,46,0,0,3248,3249,5,105,0,0,3249,4006,5,49,0,0,3250, + 3251,5,99,0,0,3251,3252,5,111,0,0,3252,3253,5,110,0,0,3253,3254,5,118, + 0,0,3254,3255,5,46,0,0,3255,3256,5,105,0,0,3256,4006,5,50,0,0,3257,3258, + 5,99,0,0,3258,3259,5,111,0,0,3259,3260,5,110,0,0,3260,3261,5,118,0,0,3261, + 3262,5,46,0,0,3262,3263,5,105,0,0,3263,4006,5,52,0,0,3264,3265,5,99,0, + 0,3265,3266,5,111,0,0,3266,3267,5,110,0,0,3267,3268,5,118,0,0,3268,3269, + 5,46,0,0,3269,3270,5,105,0,0,3270,4006,5,56,0,0,3271,3272,5,99,0,0,3272, + 3273,5,111,0,0,3273,3274,5,110,0,0,3274,3275,5,118,0,0,3275,3276,5,46, + 0,0,3276,3277,5,114,0,0,3277,4006,5,52,0,0,3278,3279,5,99,0,0,3279,3280, + 5,111,0,0,3280,3281,5,110,0,0,3281,3282,5,118,0,0,3282,3283,5,46,0,0,3283, + 3284,5,114,0,0,3284,4006,5,56,0,0,3285,3286,5,99,0,0,3286,3287,5,111,0, + 0,3287,3288,5,110,0,0,3288,3289,5,118,0,0,3289,3290,5,46,0,0,3290,3291, + 5,117,0,0,3291,4006,5,52,0,0,3292,3293,5,99,0,0,3293,3294,5,111,0,0,3294, + 3295,5,110,0,0,3295,3296,5,118,0,0,3296,3297,5,46,0,0,3297,3298,5,117, + 0,0,3298,4006,5,56,0,0,3299,3300,5,99,0,0,3300,3301,5,111,0,0,3301,3302, + 5,110,0,0,3302,3303,5,118,0,0,3303,3304,5,46,0,0,3304,3305,5,114,0,0,3305, + 3306,5,46,0,0,3306,3307,5,117,0,0,3307,4006,5,110,0,0,3308,3309,5,116, + 0,0,3309,3310,5,104,0,0,3310,3311,5,114,0,0,3311,3312,5,111,0,0,3312,4006, + 5,119,0,0,3313,3314,5,99,0,0,3314,3315,5,111,0,0,3315,3316,5,110,0,0,3316, + 3317,5,118,0,0,3317,3318,5,46,0,0,3318,3319,5,111,0,0,3319,3320,5,118, + 0,0,3320,3321,5,102,0,0,3321,3322,5,46,0,0,3322,3323,5,105,0,0,3323,3324, + 5,49,0,0,3324,3325,5,46,0,0,3325,3326,5,117,0,0,3326,4006,5,110,0,0,3327, + 3328,5,99,0,0,3328,3329,5,111,0,0,3329,3330,5,110,0,0,3330,3331,5,118, + 0,0,3331,3332,5,46,0,0,3332,3333,5,111,0,0,3333,3334,5,118,0,0,3334,3335, + 5,102,0,0,3335,3336,5,46,0,0,3336,3337,5,105,0,0,3337,3338,5,50,0,0,3338, + 3339,5,46,0,0,3339,3340,5,117,0,0,3340,4006,5,110,0,0,3341,3342,5,99,0, + 0,3342,3343,5,111,0,0,3343,3344,5,110,0,0,3344,3345,5,118,0,0,3345,3346, + 5,46,0,0,3346,3347,5,111,0,0,3347,3348,5,118,0,0,3348,3349,5,102,0,0,3349, + 3350,5,46,0,0,3350,3351,5,105,0,0,3351,3352,5,52,0,0,3352,3353,5,46,0, + 0,3353,3354,5,117,0,0,3354,4006,5,110,0,0,3355,3356,5,99,0,0,3356,3357, + 5,111,0,0,3357,3358,5,110,0,0,3358,3359,5,118,0,0,3359,3360,5,46,0,0,3360, + 3361,5,111,0,0,3361,3362,5,118,0,0,3362,3363,5,102,0,0,3363,3364,5,46, + 0,0,3364,3365,5,105,0,0,3365,3366,5,56,0,0,3366,3367,5,46,0,0,3367,3368, + 5,117,0,0,3368,4006,5,110,0,0,3369,3370,5,99,0,0,3370,3371,5,111,0,0,3371, + 3372,5,110,0,0,3372,3373,5,118,0,0,3373,3374,5,46,0,0,3374,3375,5,111, + 0,0,3375,3376,5,118,0,0,3376,3377,5,102,0,0,3377,3378,5,46,0,0,3378,3379, + 5,117,0,0,3379,3380,5,49,0,0,3380,3381,5,46,0,0,3381,3382,5,117,0,0,3382, + 4006,5,110,0,0,3383,3384,5,99,0,0,3384,3385,5,111,0,0,3385,3386,5,110, + 0,0,3386,3387,5,118,0,0,3387,3388,5,46,0,0,3388,3389,5,111,0,0,3389,3390, + 5,118,0,0,3390,3391,5,102,0,0,3391,3392,5,46,0,0,3392,3393,5,117,0,0,3393, + 3394,5,50,0,0,3394,3395,5,46,0,0,3395,3396,5,117,0,0,3396,4006,5,110,0, + 0,3397,3398,5,99,0,0,3398,3399,5,111,0,0,3399,3400,5,110,0,0,3400,3401, + 5,118,0,0,3401,3402,5,46,0,0,3402,3403,5,111,0,0,3403,3404,5,118,0,0,3404, + 3405,5,102,0,0,3405,3406,5,46,0,0,3406,3407,5,117,0,0,3407,3408,5,52,0, + 0,3408,3409,5,46,0,0,3409,3410,5,117,0,0,3410,4006,5,110,0,0,3411,3412, + 5,99,0,0,3412,3413,5,111,0,0,3413,3414,5,110,0,0,3414,3415,5,118,0,0,3415, + 3416,5,46,0,0,3416,3417,5,111,0,0,3417,3418,5,118,0,0,3418,3419,5,102, + 0,0,3419,3420,5,46,0,0,3420,3421,5,117,0,0,3421,3422,5,56,0,0,3422,3423, + 5,46,0,0,3423,3424,5,117,0,0,3424,4006,5,110,0,0,3425,3426,5,99,0,0,3426, + 3427,5,111,0,0,3427,3428,5,110,0,0,3428,3429,5,118,0,0,3429,3430,5,46, + 0,0,3430,3431,5,111,0,0,3431,3432,5,118,0,0,3432,3433,5,102,0,0,3433,3434, + 5,46,0,0,3434,3435,5,105,0,0,3435,3436,5,46,0,0,3436,3437,5,117,0,0,3437, + 4006,5,110,0,0,3438,3439,5,99,0,0,3439,3440,5,111,0,0,3440,3441,5,110, + 0,0,3441,3442,5,118,0,0,3442,3443,5,46,0,0,3443,3444,5,111,0,0,3444,3445, + 5,118,0,0,3445,3446,5,102,0,0,3446,3447,5,46,0,0,3447,3448,5,117,0,0,3448, + 3449,5,46,0,0,3449,3450,5,117,0,0,3450,4006,5,110,0,0,3451,3452,5,108, + 0,0,3452,3453,5,100,0,0,3453,3454,5,108,0,0,3454,3455,5,101,0,0,3455,4006, + 5,110,0,0,3456,3457,5,108,0,0,3457,3458,5,100,0,0,3458,3459,5,101,0,0, + 3459,3460,5,108,0,0,3460,3461,5,101,0,0,3461,3462,5,109,0,0,3462,3463, + 5,46,0,0,3463,3464,5,105,0,0,3464,4006,5,49,0,0,3465,3466,5,108,0,0,3466, + 3467,5,100,0,0,3467,3468,5,101,0,0,3468,3469,5,108,0,0,3469,3470,5,101, + 0,0,3470,3471,5,109,0,0,3471,3472,5,46,0,0,3472,3473,5,117,0,0,3473,4006, + 5,49,0,0,3474,3475,5,108,0,0,3475,3476,5,100,0,0,3476,3477,5,101,0,0,3477, + 3478,5,108,0,0,3478,3479,5,101,0,0,3479,3480,5,109,0,0,3480,3481,5,46, + 0,0,3481,3482,5,105,0,0,3482,4006,5,50,0,0,3483,3484,5,108,0,0,3484,3485, + 5,100,0,0,3485,3486,5,101,0,0,3486,3487,5,108,0,0,3487,3488,5,101,0,0, + 3488,3489,5,109,0,0,3489,3490,5,46,0,0,3490,3491,5,117,0,0,3491,4006,5, + 50,0,0,3492,3493,5,108,0,0,3493,3494,5,100,0,0,3494,3495,5,101,0,0,3495, + 3496,5,108,0,0,3496,3497,5,101,0,0,3497,3498,5,109,0,0,3498,3499,5,46, + 0,0,3499,3500,5,105,0,0,3500,4006,5,52,0,0,3501,3502,5,108,0,0,3502,3503, + 5,100,0,0,3503,3504,5,101,0,0,3504,3505,5,108,0,0,3505,3506,5,101,0,0, + 3506,3507,5,109,0,0,3507,3508,5,46,0,0,3508,3509,5,117,0,0,3509,4006,5, + 52,0,0,3510,3511,5,108,0,0,3511,3512,5,100,0,0,3512,3513,5,101,0,0,3513, + 3514,5,108,0,0,3514,3515,5,101,0,0,3515,3516,5,109,0,0,3516,3517,5,46, + 0,0,3517,3518,5,105,0,0,3518,4006,5,56,0,0,3519,3520,5,108,0,0,3520,3521, + 5,100,0,0,3521,3522,5,101,0,0,3522,3523,5,108,0,0,3523,3524,5,101,0,0, + 3524,3525,5,109,0,0,3525,3526,5,46,0,0,3526,4006,5,105,0,0,3527,3528,5, + 108,0,0,3528,3529,5,100,0,0,3529,3530,5,101,0,0,3530,3531,5,108,0,0,3531, + 3532,5,101,0,0,3532,3533,5,109,0,0,3533,3534,5,46,0,0,3534,3535,5,114, + 0,0,3535,4006,5,52,0,0,3536,3537,5,108,0,0,3537,3538,5,100,0,0,3538,3539, + 5,101,0,0,3539,3540,5,108,0,0,3540,3541,5,101,0,0,3541,3542,5,109,0,0, + 3542,3543,5,46,0,0,3543,3544,5,114,0,0,3544,4006,5,56,0,0,3545,3546,5, + 108,0,0,3546,3547,5,100,0,0,3547,3548,5,101,0,0,3548,3549,5,108,0,0,3549, + 3550,5,101,0,0,3550,3551,5,109,0,0,3551,3552,5,46,0,0,3552,3553,5,114, + 0,0,3553,3554,5,101,0,0,3554,4006,5,102,0,0,3555,3556,5,115,0,0,3556,3557, + 5,116,0,0,3557,3558,5,101,0,0,3558,3559,5,108,0,0,3559,3560,5,101,0,0, + 3560,3561,5,109,0,0,3561,3562,5,46,0,0,3562,4006,5,105,0,0,3563,3564,5, + 115,0,0,3564,3565,5,116,0,0,3565,3566,5,101,0,0,3566,3567,5,108,0,0,3567, + 3568,5,101,0,0,3568,3569,5,109,0,0,3569,3570,5,46,0,0,3570,3571,5,105, + 0,0,3571,4006,5,49,0,0,3572,3573,5,115,0,0,3573,3574,5,116,0,0,3574,3575, + 5,101,0,0,3575,3576,5,108,0,0,3576,3577,5,101,0,0,3577,3578,5,109,0,0, + 3578,3579,5,46,0,0,3579,3580,5,105,0,0,3580,4006,5,50,0,0,3581,3582,5, + 115,0,0,3582,3583,5,116,0,0,3583,3584,5,101,0,0,3584,3585,5,108,0,0,3585, + 3586,5,101,0,0,3586,3587,5,109,0,0,3587,3588,5,46,0,0,3588,3589,5,105, + 0,0,3589,4006,5,52,0,0,3590,3591,5,115,0,0,3591,3592,5,116,0,0,3592,3593, + 5,101,0,0,3593,3594,5,108,0,0,3594,3595,5,101,0,0,3595,3596,5,109,0,0, + 3596,3597,5,46,0,0,3597,3598,5,105,0,0,3598,4006,5,56,0,0,3599,3600,5, + 115,0,0,3600,3601,5,116,0,0,3601,3602,5,101,0,0,3602,3603,5,108,0,0,3603, + 3604,5,101,0,0,3604,3605,5,109,0,0,3605,3606,5,46,0,0,3606,3607,5,114, + 0,0,3607,4006,5,52,0,0,3608,3609,5,115,0,0,3609,3610,5,116,0,0,3610,3611, + 5,101,0,0,3611,3612,5,108,0,0,3612,3613,5,101,0,0,3613,3614,5,109,0,0, + 3614,3615,5,46,0,0,3615,3616,5,114,0,0,3616,4006,5,56,0,0,3617,3618,5, + 115,0,0,3618,3619,5,116,0,0,3619,3620,5,101,0,0,3620,3621,5,108,0,0,3621, + 3622,5,101,0,0,3622,3623,5,109,0,0,3623,3624,5,46,0,0,3624,3625,5,114, + 0,0,3625,3626,5,101,0,0,3626,4006,5,102,0,0,3627,3628,5,99,0,0,3628,3629, + 5,111,0,0,3629,3630,5,110,0,0,3630,3631,5,118,0,0,3631,3632,5,46,0,0,3632, + 3633,5,111,0,0,3633,3634,5,118,0,0,3634,3635,5,102,0,0,3635,3636,5,46, + 0,0,3636,3637,5,105,0,0,3637,4006,5,49,0,0,3638,3639,5,99,0,0,3639,3640, + 5,111,0,0,3640,3641,5,110,0,0,3641,3642,5,118,0,0,3642,3643,5,46,0,0,3643, + 3644,5,111,0,0,3644,3645,5,118,0,0,3645,3646,5,102,0,0,3646,3647,5,46, + 0,0,3647,3648,5,117,0,0,3648,4006,5,49,0,0,3649,3650,5,99,0,0,3650,3651, + 5,111,0,0,3651,3652,5,110,0,0,3652,3653,5,118,0,0,3653,3654,5,46,0,0,3654, + 3655,5,111,0,0,3655,3656,5,118,0,0,3656,3657,5,102,0,0,3657,3658,5,46, + 0,0,3658,3659,5,105,0,0,3659,4006,5,50,0,0,3660,3661,5,99,0,0,3661,3662, + 5,111,0,0,3662,3663,5,110,0,0,3663,3664,5,118,0,0,3664,3665,5,46,0,0,3665, + 3666,5,111,0,0,3666,3667,5,118,0,0,3667,3668,5,102,0,0,3668,3669,5,46, + 0,0,3669,3670,5,117,0,0,3670,4006,5,50,0,0,3671,3672,5,99,0,0,3672,3673, + 5,111,0,0,3673,3674,5,110,0,0,3674,3675,5,118,0,0,3675,3676,5,46,0,0,3676, + 3677,5,111,0,0,3677,3678,5,118,0,0,3678,3679,5,102,0,0,3679,3680,5,46, + 0,0,3680,3681,5,105,0,0,3681,4006,5,52,0,0,3682,3683,5,99,0,0,3683,3684, + 5,111,0,0,3684,3685,5,110,0,0,3685,3686,5,118,0,0,3686,3687,5,46,0,0,3687, + 3688,5,111,0,0,3688,3689,5,118,0,0,3689,3690,5,102,0,0,3690,3691,5,46, + 0,0,3691,3692,5,117,0,0,3692,4006,5,52,0,0,3693,3694,5,99,0,0,3694,3695, + 5,111,0,0,3695,3696,5,110,0,0,3696,3697,5,118,0,0,3697,3698,5,46,0,0,3698, + 3699,5,111,0,0,3699,3700,5,118,0,0,3700,3701,5,102,0,0,3701,3702,5,46, + 0,0,3702,3703,5,105,0,0,3703,4006,5,56,0,0,3704,3705,5,99,0,0,3705,3706, + 5,111,0,0,3706,3707,5,110,0,0,3707,3708,5,118,0,0,3708,3709,5,46,0,0,3709, + 3710,5,111,0,0,3710,3711,5,118,0,0,3711,3712,5,102,0,0,3712,3713,5,46, + 0,0,3713,3714,5,117,0,0,3714,4006,5,56,0,0,3715,3716,5,99,0,0,3716,3717, + 5,107,0,0,3717,3718,5,102,0,0,3718,3719,5,105,0,0,3719,3720,5,110,0,0, + 3720,3721,5,105,0,0,3721,3722,5,116,0,0,3722,4006,5,101,0,0,3723,3724, + 5,99,0,0,3724,3725,5,111,0,0,3725,3726,5,110,0,0,3726,3727,5,118,0,0,3727, + 3728,5,46,0,0,3728,3729,5,117,0,0,3729,4006,5,50,0,0,3730,3731,5,99,0, + 0,3731,3732,5,111,0,0,3732,3733,5,110,0,0,3733,3734,5,118,0,0,3734,3735, + 5,46,0,0,3735,3736,5,117,0,0,3736,4006,5,49,0,0,3737,3738,5,99,0,0,3738, + 3739,5,111,0,0,3739,3740,5,110,0,0,3740,3741,5,118,0,0,3741,3742,5,46, + 0,0,3742,4006,5,105,0,0,3743,3744,5,99,0,0,3744,3745,5,111,0,0,3745,3746, + 5,110,0,0,3746,3747,5,118,0,0,3747,3748,5,46,0,0,3748,3749,5,111,0,0,3749, + 3750,5,118,0,0,3750,3751,5,102,0,0,3751,3752,5,46,0,0,3752,4006,5,105, + 0,0,3753,3754,5,99,0,0,3754,3755,5,111,0,0,3755,3756,5,110,0,0,3756,3757, + 5,118,0,0,3757,3758,5,46,0,0,3758,3759,5,111,0,0,3759,3760,5,118,0,0,3760, + 3761,5,102,0,0,3761,3762,5,46,0,0,3762,4006,5,117,0,0,3763,3764,5,97,0, + 0,3764,3765,5,100,0,0,3765,3766,5,100,0,0,3766,3767,5,46,0,0,3767,3768, + 5,111,0,0,3768,3769,5,118,0,0,3769,4006,5,102,0,0,3770,3771,5,97,0,0,3771, + 3772,5,100,0,0,3772,3773,5,100,0,0,3773,3774,5,46,0,0,3774,3775,5,111, + 0,0,3775,3776,5,118,0,0,3776,3777,5,102,0,0,3777,3778,5,46,0,0,3778,3779, + 5,117,0,0,3779,4006,5,110,0,0,3780,3781,5,109,0,0,3781,3782,5,117,0,0, + 3782,3783,5,108,0,0,3783,3784,5,46,0,0,3784,3785,5,111,0,0,3785,3786,5, + 118,0,0,3786,4006,5,102,0,0,3787,3788,5,109,0,0,3788,3789,5,117,0,0,3789, + 3790,5,108,0,0,3790,3791,5,46,0,0,3791,3792,5,111,0,0,3792,3793,5,118, + 0,0,3793,3794,5,102,0,0,3794,3795,5,46,0,0,3795,3796,5,117,0,0,3796,4006, + 5,110,0,0,3797,3798,5,115,0,0,3798,3799,5,117,0,0,3799,3800,5,98,0,0,3800, + 3801,5,46,0,0,3801,3802,5,111,0,0,3802,3803,5,118,0,0,3803,4006,5,102, + 0,0,3804,3805,5,115,0,0,3805,3806,5,117,0,0,3806,3807,5,98,0,0,3807,3808, + 5,46,0,0,3808,3809,5,111,0,0,3809,3810,5,118,0,0,3810,3811,5,102,0,0,3811, + 3812,5,46,0,0,3812,3813,5,117,0,0,3813,4006,5,110,0,0,3814,3815,5,101, + 0,0,3815,3816,5,110,0,0,3816,3817,5,100,0,0,3817,3818,5,102,0,0,3818,3819, + 5,105,0,0,3819,3820,5,110,0,0,3820,3821,5,97,0,0,3821,3822,5,108,0,0,3822, + 3823,5,108,0,0,3823,4006,5,121,0,0,3824,3825,5,115,0,0,3825,3826,5,116, + 0,0,3826,3827,5,105,0,0,3827,3828,5,110,0,0,3828,3829,5,100,0,0,3829,3830, + 5,46,0,0,3830,4006,5,105,0,0,3831,3832,5,99,0,0,3832,3833,5,111,0,0,3833, + 3834,5,110,0,0,3834,3835,5,118,0,0,3835,3836,5,46,0,0,3836,4006,5,117, + 0,0,3837,3838,5,112,0,0,3838,3839,5,114,0,0,3839,3840,5,101,0,0,3840,3841, + 5,102,0,0,3841,3842,5,105,0,0,3842,3843,5,120,0,0,3843,4006,5,55,0,0,3844, + 3845,5,112,0,0,3845,3846,5,114,0,0,3846,3847,5,101,0,0,3847,3848,5,102, + 0,0,3848,3849,5,105,0,0,3849,3850,5,120,0,0,3850,4006,5,54,0,0,3851,3852, + 5,112,0,0,3852,3853,5,114,0,0,3853,3854,5,101,0,0,3854,3855,5,102,0,0, + 3855,3856,5,105,0,0,3856,3857,5,120,0,0,3857,4006,5,53,0,0,3858,3859,5, + 112,0,0,3859,3860,5,114,0,0,3860,3861,5,101,0,0,3861,3862,5,102,0,0,3862, + 3863,5,105,0,0,3863,3864,5,120,0,0,3864,4006,5,52,0,0,3865,3866,5,112, + 0,0,3866,3867,5,114,0,0,3867,3868,5,101,0,0,3868,3869,5,102,0,0,3869,3870, + 5,105,0,0,3870,3871,5,120,0,0,3871,4006,5,51,0,0,3872,3873,5,112,0,0,3873, + 3874,5,114,0,0,3874,3875,5,101,0,0,3875,3876,5,102,0,0,3876,3877,5,105, + 0,0,3877,3878,5,120,0,0,3878,4006,5,50,0,0,3879,3880,5,112,0,0,3880,3881, + 5,114,0,0,3881,3882,5,101,0,0,3882,3883,5,102,0,0,3883,3884,5,105,0,0, + 3884,3885,5,120,0,0,3885,4006,5,49,0,0,3886,3887,5,112,0,0,3887,3888,5, + 114,0,0,3888,3889,5,101,0,0,3889,3890,5,102,0,0,3890,3891,5,105,0,0,3891, + 3892,5,120,0,0,3892,3893,5,114,0,0,3893,3894,5,101,0,0,3894,4006,5,102, + 0,0,3895,3896,5,97,0,0,3896,3897,5,114,0,0,3897,3898,5,103,0,0,3898,3899, + 5,108,0,0,3899,3900,5,105,0,0,3900,3901,5,115,0,0,3901,4006,5,116,0,0, + 3902,3903,5,99,0,0,3903,3904,5,101,0,0,3904,4006,5,113,0,0,3905,3906,5, + 99,0,0,3906,3907,5,103,0,0,3907,4006,5,116,0,0,3908,3909,5,99,0,0,3909, + 3910,5,103,0,0,3910,3911,5,116,0,0,3911,3912,5,46,0,0,3912,3913,5,117, + 0,0,3913,4006,5,110,0,0,3914,3915,5,99,0,0,3915,3916,5,108,0,0,3916,4006, + 5,116,0,0,3917,3918,5,99,0,0,3918,3919,5,108,0,0,3919,3920,5,116,0,0,3920, + 3921,5,46,0,0,3921,3922,5,117,0,0,3922,4006,5,110,0,0,3923,3924,5,108, + 0,0,3924,3925,5,111,0,0,3925,3926,5,99,0,0,3926,3927,5,97,0,0,3927,3928, + 5,108,0,0,3928,3929,5,108,0,0,3929,3930,5,111,0,0,3930,4006,5,99,0,0,3931, + 3932,5,101,0,0,3932,3933,5,110,0,0,3933,3934,5,100,0,0,3934,3935,5,102, + 0,0,3935,3936,5,105,0,0,3936,3937,5,108,0,0,3937,3938,5,116,0,0,3938,3939, + 5,101,0,0,3939,4006,5,114,0,0,3940,3941,5,118,0,0,3941,3942,5,111,0,0, + 3942,3943,5,108,0,0,3943,3944,5,97,0,0,3944,3945,5,116,0,0,3945,3946,5, + 105,0,0,3946,3947,5,108,0,0,3947,3948,5,101,0,0,3948,4006,5,46,0,0,3949, + 3950,5,116,0,0,3950,3951,5,97,0,0,3951,3952,5,105,0,0,3952,3953,5,108, + 0,0,3953,4006,5,46,0,0,3954,3955,5,99,0,0,3955,3956,5,112,0,0,3956,3957, + 5,98,0,0,3957,3958,5,108,0,0,3958,4006,5,107,0,0,3959,3960,5,105,0,0,3960, + 3961,5,110,0,0,3961,3962,5,105,0,0,3962,3963,5,116,0,0,3963,3964,5,98, + 0,0,3964,3965,5,108,0,0,3965,4006,5,107,0,0,3966,3967,5,114,0,0,3967,3968, + 5,101,0,0,3968,3969,5,116,0,0,3969,3970,5,104,0,0,3970,3971,5,114,0,0, + 3971,3972,5,111,0,0,3972,4006,5,119,0,0,3973,3974,5,114,0,0,3974,3975, + 5,101,0,0,3975,3976,5,102,0,0,3976,3977,5,97,0,0,3977,3978,5,110,0,0,3978, + 3979,5,121,0,0,3979,3980,5,116,0,0,3980,3981,5,121,0,0,3981,3982,5,112, + 0,0,3982,4006,5,101,0,0,3983,3984,5,114,0,0,3984,3985,5,101,0,0,3985,3986, + 5,97,0,0,3986,3987,5,100,0,0,3987,3988,5,111,0,0,3988,3989,5,110,0,0,3989, + 3990,5,108,0,0,3990,3991,5,121,0,0,3991,4006,5,46,0,0,3992,3993,5,105, + 0,0,3993,3994,5,108,0,0,3994,3995,5,108,0,0,3995,3996,5,101,0,0,3996,3997, + 5,103,0,0,3997,3998,5,97,0,0,3998,4006,5,108,0,0,3999,4000,5,101,0,0,4000, + 4001,5,110,0,0,4001,4002,5,100,0,0,4002,4003,5,109,0,0,4003,4004,5,97, + 0,0,4004,4006,5,99,0,0,4005,2857,1,0,0,0,4005,2860,1,0,0,0,4005,2865,1, + 0,0,0,4005,2872,1,0,0,0,4005,2879,1,0,0,0,4005,2886,1,0,0,0,4005,2893, + 1,0,0,0,4005,2900,1,0,0,0,4005,2907,1,0,0,0,4005,2914,1,0,0,0,4005,2921, + 1,0,0,0,4005,2928,1,0,0,0,4005,2935,1,0,0,0,4005,2942,1,0,0,0,4005,2949, + 1,0,0,0,4005,2955,1,0,0,0,4005,2964,1,0,0,0,4005,2972,1,0,0,0,4005,2980, + 1,0,0,0,4005,2988,1,0,0,0,4005,2996,1,0,0,0,4005,3004,1,0,0,0,4005,3012, + 1,0,0,0,4005,3020,1,0,0,0,4005,3028,1,0,0,0,4005,3036,1,0,0,0,4005,3039, + 1,0,0,0,4005,3042,1,0,0,0,4005,3045,1,0,0,0,4005,3053,1,0,0,0,4005,3061, + 1,0,0,0,4005,3069,1,0,0,0,4005,3077,1,0,0,0,4005,3085,1,0,0,0,4005,3093, + 1,0,0,0,4005,3101,1,0,0,0,4005,3108,1,0,0,0,4005,3116,1,0,0,0,4005,3124, + 1,0,0,0,4005,3133,1,0,0,0,4005,3142,1,0,0,0,4005,3150,1,0,0,0,4005,3158, + 1,0,0,0,4005,3166,1,0,0,0,4005,3174,1,0,0,0,4005,3182,1,0,0,0,4005,3190, + 1,0,0,0,4005,3193,1,0,0,0,4005,3196,1,0,0,0,4005,3199,1,0,0,0,4005,3202, + 1,0,0,0,4005,3208,1,0,0,0,4005,3211,1,0,0,0,4005,3217,1,0,0,0,4005,3220, + 1,0,0,0,4005,3222,1,0,0,0,4005,3225,1,0,0,0,4005,3228,1,0,0,0,4005,3231, + 1,0,0,0,4005,3237,1,0,0,0,4005,3240,1,0,0,0,4005,3243,1,0,0,0,4005,3250, + 1,0,0,0,4005,3257,1,0,0,0,4005,3264,1,0,0,0,4005,3271,1,0,0,0,4005,3278, + 1,0,0,0,4005,3285,1,0,0,0,4005,3292,1,0,0,0,4005,3299,1,0,0,0,4005,3308, + 1,0,0,0,4005,3313,1,0,0,0,4005,3327,1,0,0,0,4005,3341,1,0,0,0,4005,3355, + 1,0,0,0,4005,3369,1,0,0,0,4005,3383,1,0,0,0,4005,3397,1,0,0,0,4005,3411, + 1,0,0,0,4005,3425,1,0,0,0,4005,3438,1,0,0,0,4005,3451,1,0,0,0,4005,3456, + 1,0,0,0,4005,3465,1,0,0,0,4005,3474,1,0,0,0,4005,3483,1,0,0,0,4005,3492, + 1,0,0,0,4005,3501,1,0,0,0,4005,3510,1,0,0,0,4005,3519,1,0,0,0,4005,3527, + 1,0,0,0,4005,3536,1,0,0,0,4005,3545,1,0,0,0,4005,3555,1,0,0,0,4005,3563, + 1,0,0,0,4005,3572,1,0,0,0,4005,3581,1,0,0,0,4005,3590,1,0,0,0,4005,3599, + 1,0,0,0,4005,3608,1,0,0,0,4005,3617,1,0,0,0,4005,3627,1,0,0,0,4005,3638, + 1,0,0,0,4005,3649,1,0,0,0,4005,3660,1,0,0,0,4005,3671,1,0,0,0,4005,3682, + 1,0,0,0,4005,3693,1,0,0,0,4005,3704,1,0,0,0,4005,3715,1,0,0,0,4005,3723, + 1,0,0,0,4005,3730,1,0,0,0,4005,3737,1,0,0,0,4005,3743,1,0,0,0,4005,3753, + 1,0,0,0,4005,3763,1,0,0,0,4005,3770,1,0,0,0,4005,3780,1,0,0,0,4005,3787, + 1,0,0,0,4005,3797,1,0,0,0,4005,3804,1,0,0,0,4005,3814,1,0,0,0,4005,3824, + 1,0,0,0,4005,3831,1,0,0,0,4005,3837,1,0,0,0,4005,3844,1,0,0,0,4005,3851, + 1,0,0,0,4005,3858,1,0,0,0,4005,3865,1,0,0,0,4005,3872,1,0,0,0,4005,3879, + 1,0,0,0,4005,3886,1,0,0,0,4005,3895,1,0,0,0,4005,3902,1,0,0,0,4005,3905, + 1,0,0,0,4005,3908,1,0,0,0,4005,3914,1,0,0,0,4005,3917,1,0,0,0,4005,3923, + 1,0,0,0,4005,3931,1,0,0,0,4005,3940,1,0,0,0,4005,3949,1,0,0,0,4005,3954, + 1,0,0,0,4005,3959,1,0,0,0,4005,3966,1,0,0,0,4005,3973,1,0,0,0,4005,3983, + 1,0,0,0,4005,3992,1,0,0,0,4005,3999,1,0,0,0,4006,556,1,0,0,0,4007,4008, + 5,108,0,0,4008,4009,5,100,0,0,4009,4010,5,97,0,0,4010,4011,5,114,0,0,4011, + 4012,5,103,0,0,4012,4013,5,46,0,0,4013,4084,5,115,0,0,4014,4015,5,108, + 0,0,4015,4016,5,100,0,0,4016,4017,5,97,0,0,4017,4018,5,114,0,0,4018,4019, + 5,103,0,0,4019,4020,5,97,0,0,4020,4021,5,46,0,0,4021,4084,5,115,0,0,4022, + 4023,5,115,0,0,4023,4024,5,116,0,0,4024,4025,5,97,0,0,4025,4026,5,114, + 0,0,4026,4027,5,103,0,0,4027,4028,5,46,0,0,4028,4084,5,115,0,0,4029,4030, + 5,108,0,0,4030,4031,5,100,0,0,4031,4032,5,108,0,0,4032,4033,5,111,0,0, + 4033,4034,5,99,0,0,4034,4035,5,46,0,0,4035,4084,5,115,0,0,4036,4037,5, + 108,0,0,4037,4038,5,100,0,0,4038,4039,5,108,0,0,4039,4040,5,111,0,0,4040, + 4041,5,99,0,0,4041,4042,5,97,0,0,4042,4043,5,46,0,0,4043,4084,5,115,0, + 0,4044,4045,5,115,0,0,4045,4046,5,116,0,0,4046,4047,5,108,0,0,4047,4048, + 5,111,0,0,4048,4049,5,99,0,0,4049,4050,5,46,0,0,4050,4084,5,115,0,0,4051, + 4052,5,108,0,0,4052,4053,5,100,0,0,4053,4054,5,97,0,0,4054,4055,5,114, + 0,0,4055,4084,5,103,0,0,4056,4057,5,108,0,0,4057,4058,5,100,0,0,4058,4059, + 5,97,0,0,4059,4060,5,114,0,0,4060,4061,5,103,0,0,4061,4084,5,97,0,0,4062, + 4063,5,115,0,0,4063,4064,5,116,0,0,4064,4065,5,97,0,0,4065,4066,5,114, + 0,0,4066,4084,5,103,0,0,4067,4068,5,108,0,0,4068,4069,5,100,0,0,4069,4070, + 5,108,0,0,4070,4071,5,111,0,0,4071,4084,5,99,0,0,4072,4073,5,108,0,0,4073, + 4074,5,100,0,0,4074,4075,5,108,0,0,4075,4076,5,111,0,0,4076,4077,5,99, + 0,0,4077,4084,5,97,0,0,4078,4079,5,115,0,0,4079,4080,5,116,0,0,4080,4081, + 5,108,0,0,4081,4082,5,111,0,0,4082,4084,5,99,0,0,4083,4007,1,0,0,0,4083, + 4014,1,0,0,0,4083,4022,1,0,0,0,4083,4029,1,0,0,0,4083,4036,1,0,0,0,4083, + 4044,1,0,0,0,4083,4051,1,0,0,0,4083,4056,1,0,0,0,4083,4062,1,0,0,0,4083, + 4067,1,0,0,0,4083,4072,1,0,0,0,4083,4078,1,0,0,0,4084,558,1,0,0,0,4085, + 4086,5,108,0,0,4086,4087,5,100,0,0,4087,4088,5,99,0,0,4088,4089,5,46,0, + 0,4089,4090,5,105,0,0,4090,4091,5,52,0,0,4091,4092,5,46,0,0,4092,4113, + 5,115,0,0,4093,4094,5,108,0,0,4094,4095,5,100,0,0,4095,4096,5,99,0,0,4096, + 4097,5,46,0,0,4097,4098,5,105,0,0,4098,4113,5,52,0,0,4099,4100,5,117,0, + 0,4100,4101,5,110,0,0,4101,4102,5,97,0,0,4102,4103,5,108,0,0,4103,4104, + 5,105,0,0,4104,4105,5,103,0,0,4105,4106,5,110,0,0,4106,4107,5,101,0,0, + 4107,4108,5,100,0,0,4108,4113,5,46,0,0,4109,4110,5,110,0,0,4110,4111,5, + 111,0,0,4111,4113,5,46,0,0,4112,4085,1,0,0,0,4112,4093,1,0,0,0,4112,4099, + 1,0,0,0,4112,4109,1,0,0,0,4113,560,1,0,0,0,4114,4115,5,108,0,0,4115,4116, + 5,100,0,0,4116,4117,5,99,0,0,4117,4118,5,46,0,0,4118,4119,5,105,0,0,4119, + 4120,5,56,0,0,4120,562,1,0,0,0,4121,4122,5,108,0,0,4122,4123,5,100,0,0, + 4123,4124,5,99,0,0,4124,4125,5,46,0,0,4125,4126,5,114,0,0,4126,4134,5, + 52,0,0,4127,4128,5,108,0,0,4128,4129,5,100,0,0,4129,4130,5,99,0,0,4130, + 4131,5,46,0,0,4131,4132,5,114,0,0,4132,4134,5,56,0,0,4133,4121,1,0,0,0, + 4133,4127,1,0,0,0,4134,564,1,0,0,0,4135,4136,5,106,0,0,4136,4137,5,109, + 0,0,4137,4171,5,112,0,0,4138,4139,5,99,0,0,4139,4140,5,97,0,0,4140,4141, + 5,108,0,0,4141,4171,5,108,0,0,4142,4143,5,99,0,0,4143,4144,5,97,0,0,4144, + 4145,5,108,0,0,4145,4146,5,108,0,0,4146,4147,5,118,0,0,4147,4148,5,105, + 0,0,4148,4149,5,114,0,0,4149,4171,5,116,0,0,4150,4151,5,110,0,0,4151,4152, + 5,101,0,0,4152,4153,5,119,0,0,4153,4154,5,111,0,0,4154,4155,5,98,0,0,4155, + 4171,5,106,0,0,4156,4157,5,108,0,0,4157,4158,5,100,0,0,4158,4159,5,102, + 0,0,4159,4160,5,116,0,0,4160,4171,5,110,0,0,4161,4162,5,108,0,0,4162,4163, + 5,100,0,0,4163,4164,5,118,0,0,4164,4165,5,105,0,0,4165,4166,5,114,0,0, + 4166,4167,5,116,0,0,4167,4168,5,102,0,0,4168,4169,5,116,0,0,4169,4171, + 5,110,0,0,4170,4135,1,0,0,0,4170,4138,1,0,0,0,4170,4142,1,0,0,0,4170,4150, + 1,0,0,0,4170,4156,1,0,0,0,4170,4161,1,0,0,0,4171,566,1,0,0,0,4172,4173, + 5,99,0,0,4173,4174,5,97,0,0,4174,4175,5,108,0,0,4175,4176,5,108,0,0,4176, + 4177,5,105,0,0,4177,568,1,0,0,0,4178,4179,5,98,0,0,4179,4180,5,114,0,0, + 4180,4181,5,46,0,0,4181,4337,5,115,0,0,4182,4183,5,98,0,0,4183,4184,5, + 114,0,0,4184,4185,5,102,0,0,4185,4186,5,97,0,0,4186,4187,5,108,0,0,4187, + 4188,5,115,0,0,4188,4189,5,101,0,0,4189,4190,5,46,0,0,4190,4337,5,115, + 0,0,4191,4192,5,98,0,0,4192,4193,5,114,0,0,4193,4194,5,116,0,0,4194,4195, + 5,114,0,0,4195,4196,5,117,0,0,4196,4197,5,101,0,0,4197,4198,5,46,0,0,4198, + 4337,5,115,0,0,4199,4200,5,98,0,0,4200,4201,5,101,0,0,4201,4202,5,113, + 0,0,4202,4203,5,46,0,0,4203,4337,5,115,0,0,4204,4205,5,98,0,0,4205,4206, + 5,103,0,0,4206,4207,5,101,0,0,4207,4208,5,46,0,0,4208,4337,5,115,0,0,4209, + 4210,5,98,0,0,4210,4211,5,103,0,0,4211,4212,5,116,0,0,4212,4213,5,46,0, + 0,4213,4337,5,115,0,0,4214,4215,5,98,0,0,4215,4216,5,108,0,0,4216,4217, + 5,101,0,0,4217,4218,5,46,0,0,4218,4337,5,115,0,0,4219,4220,5,98,0,0,4220, + 4221,5,108,0,0,4221,4222,5,116,0,0,4222,4223,5,46,0,0,4223,4337,5,115, + 0,0,4224,4225,5,98,0,0,4225,4226,5,110,0,0,4226,4227,5,101,0,0,4227,4228, + 5,46,0,0,4228,4229,5,117,0,0,4229,4230,5,110,0,0,4230,4231,5,46,0,0,4231, + 4337,5,115,0,0,4232,4233,5,98,0,0,4233,4234,5,103,0,0,4234,4235,5,101, + 0,0,4235,4236,5,46,0,0,4236,4237,5,117,0,0,4237,4238,5,110,0,0,4238,4239, + 5,46,0,0,4239,4337,5,115,0,0,4240,4241,5,98,0,0,4241,4242,5,103,0,0,4242, + 4243,5,116,0,0,4243,4244,5,46,0,0,4244,4245,5,117,0,0,4245,4246,5,110, + 0,0,4246,4247,5,46,0,0,4247,4337,5,115,0,0,4248,4249,5,98,0,0,4249,4250, + 5,108,0,0,4250,4251,5,101,0,0,4251,4252,5,46,0,0,4252,4253,5,117,0,0,4253, + 4254,5,110,0,0,4254,4255,5,46,0,0,4255,4337,5,115,0,0,4256,4257,5,98,0, + 0,4257,4258,5,108,0,0,4258,4259,5,116,0,0,4259,4260,5,46,0,0,4260,4261, + 5,117,0,0,4261,4262,5,110,0,0,4262,4263,5,46,0,0,4263,4337,5,115,0,0,4264, + 4265,5,98,0,0,4265,4337,5,114,0,0,4266,4267,5,98,0,0,4267,4268,5,114,0, + 0,4268,4269,5,102,0,0,4269,4270,5,97,0,0,4270,4271,5,108,0,0,4271,4272, + 5,115,0,0,4272,4337,5,101,0,0,4273,4274,5,98,0,0,4274,4275,5,114,0,0,4275, + 4276,5,116,0,0,4276,4277,5,114,0,0,4277,4278,5,117,0,0,4278,4337,5,101, + 0,0,4279,4280,5,98,0,0,4280,4281,5,101,0,0,4281,4337,5,113,0,0,4282,4283, + 5,98,0,0,4283,4284,5,103,0,0,4284,4337,5,101,0,0,4285,4286,5,98,0,0,4286, + 4287,5,103,0,0,4287,4337,5,116,0,0,4288,4289,5,98,0,0,4289,4290,5,108, + 0,0,4290,4337,5,101,0,0,4291,4292,5,98,0,0,4292,4293,5,108,0,0,4293,4337, + 5,116,0,0,4294,4295,5,98,0,0,4295,4296,5,110,0,0,4296,4297,5,101,0,0,4297, + 4298,5,46,0,0,4298,4299,5,117,0,0,4299,4337,5,110,0,0,4300,4301,5,98,0, + 0,4301,4302,5,103,0,0,4302,4303,5,101,0,0,4303,4304,5,46,0,0,4304,4305, + 5,117,0,0,4305,4337,5,110,0,0,4306,4307,5,98,0,0,4307,4308,5,103,0,0,4308, + 4309,5,116,0,0,4309,4310,5,46,0,0,4310,4311,5,117,0,0,4311,4337,5,110, + 0,0,4312,4313,5,98,0,0,4313,4314,5,108,0,0,4314,4315,5,101,0,0,4315,4316, + 5,46,0,0,4316,4317,5,117,0,0,4317,4337,5,110,0,0,4318,4319,5,98,0,0,4319, + 4320,5,108,0,0,4320,4321,5,116,0,0,4321,4322,5,46,0,0,4322,4323,5,117, + 0,0,4323,4337,5,110,0,0,4324,4325,5,108,0,0,4325,4326,5,101,0,0,4326,4327, + 5,97,0,0,4327,4328,5,118,0,0,4328,4337,5,101,0,0,4329,4330,5,108,0,0,4330, + 4331,5,101,0,0,4331,4332,5,97,0,0,4332,4333,5,118,0,0,4333,4334,5,101, + 0,0,4334,4335,5,46,0,0,4335,4337,5,115,0,0,4336,4178,1,0,0,0,4336,4182, + 1,0,0,0,4336,4191,1,0,0,0,4336,4199,1,0,0,0,4336,4204,1,0,0,0,4336,4209, + 1,0,0,0,4336,4214,1,0,0,0,4336,4219,1,0,0,0,4336,4224,1,0,0,0,4336,4232, + 1,0,0,0,4336,4240,1,0,0,0,4336,4248,1,0,0,0,4336,4256,1,0,0,0,4336,4264, + 1,0,0,0,4336,4266,1,0,0,0,4336,4273,1,0,0,0,4336,4279,1,0,0,0,4336,4282, + 1,0,0,0,4336,4285,1,0,0,0,4336,4288,1,0,0,0,4336,4291,1,0,0,0,4336,4294, + 1,0,0,0,4336,4300,1,0,0,0,4336,4306,1,0,0,0,4336,4312,1,0,0,0,4336,4318, + 1,0,0,0,4336,4324,1,0,0,0,4336,4329,1,0,0,0,4337,570,1,0,0,0,4338,4339, + 5,115,0,0,4339,4340,5,119,0,0,4340,4341,5,105,0,0,4341,4342,5,116,0,0, + 4342,4343,5,99,0,0,4343,4344,5,104,0,0,4344,572,1,0,0,0,4345,4346,5,99, + 0,0,4346,4347,5,112,0,0,4347,4348,5,111,0,0,4348,4349,5,98,0,0,4349,4460, + 5,106,0,0,4350,4351,5,108,0,0,4351,4352,5,100,0,0,4352,4353,5,111,0,0, + 4353,4354,5,98,0,0,4354,4460,5,106,0,0,4355,4356,5,99,0,0,4356,4357,5, + 97,0,0,4357,4358,5,115,0,0,4358,4359,5,116,0,0,4359,4360,5,99,0,0,4360, + 4361,5,108,0,0,4361,4362,5,97,0,0,4362,4363,5,115,0,0,4363,4460,5,115, + 0,0,4364,4365,5,105,0,0,4365,4366,5,115,0,0,4366,4367,5,105,0,0,4367,4368, + 5,110,0,0,4368,4369,5,115,0,0,4369,4460,5,116,0,0,4370,4371,5,117,0,0, + 4371,4372,5,110,0,0,4372,4373,5,98,0,0,4373,4374,5,111,0,0,4374,4460,5, + 120,0,0,4375,4376,5,115,0,0,4376,4377,5,116,0,0,4377,4378,5,111,0,0,4378, + 4379,5,98,0,0,4379,4460,5,106,0,0,4380,4381,5,98,0,0,4381,4382,5,111,0, + 0,4382,4460,5,120,0,0,4383,4384,5,110,0,0,4384,4385,5,101,0,0,4385,4386, + 5,119,0,0,4386,4387,5,97,0,0,4387,4388,5,114,0,0,4388,4460,5,114,0,0,4389, + 4390,5,108,0,0,4390,4391,5,100,0,0,4391,4392,5,101,0,0,4392,4393,5,108, + 0,0,4393,4394,5,101,0,0,4394,4395,5,109,0,0,4395,4460,5,97,0,0,4396,4397, + 5,108,0,0,4397,4398,5,100,0,0,4398,4399,5,101,0,0,4399,4400,5,108,0,0, + 4400,4401,5,101,0,0,4401,4460,5,109,0,0,4402,4403,5,115,0,0,4403,4404, + 5,116,0,0,4404,4405,5,101,0,0,4405,4406,5,108,0,0,4406,4407,5,101,0,0, + 4407,4460,5,109,0,0,4408,4409,5,117,0,0,4409,4410,5,110,0,0,4410,4411, + 5,98,0,0,4411,4412,5,111,0,0,4412,4413,5,120,0,0,4413,4414,5,46,0,0,4414, + 4415,5,97,0,0,4415,4416,5,110,0,0,4416,4460,5,121,0,0,4417,4418,5,114, + 0,0,4418,4419,5,101,0,0,4419,4420,5,102,0,0,4420,4421,5,97,0,0,4421,4422, + 5,110,0,0,4422,4423,5,121,0,0,4423,4424,5,118,0,0,4424,4425,5,97,0,0,4425, + 4460,5,108,0,0,4426,4427,5,109,0,0,4427,4428,5,107,0,0,4428,4429,5,114, + 0,0,4429,4430,5,101,0,0,4430,4431,5,102,0,0,4431,4432,5,97,0,0,4432,4433, + 5,110,0,0,4433,4460,5,121,0,0,4434,4435,5,105,0,0,4435,4436,5,110,0,0, + 4436,4437,5,105,0,0,4437,4438,5,116,0,0,4438,4439,5,111,0,0,4439,4440, + 5,98,0,0,4440,4460,5,106,0,0,4441,4442,5,99,0,0,4442,4443,5,111,0,0,4443, + 4444,5,110,0,0,4444,4445,5,115,0,0,4445,4446,5,116,0,0,4446,4447,5,114, + 0,0,4447,4448,5,97,0,0,4448,4449,5,105,0,0,4449,4450,5,110,0,0,4450,4451, + 5,101,0,0,4451,4452,5,100,0,0,4452,4460,5,46,0,0,4453,4454,5,115,0,0,4454, + 4455,5,105,0,0,4455,4456,5,122,0,0,4456,4457,5,101,0,0,4457,4458,5,111, + 0,0,4458,4460,5,102,0,0,4459,4345,1,0,0,0,4459,4350,1,0,0,0,4459,4355, + 1,0,0,0,4459,4364,1,0,0,0,4459,4370,1,0,0,0,4459,4375,1,0,0,0,4459,4380, + 1,0,0,0,4459,4383,1,0,0,0,4459,4389,1,0,0,0,4459,4396,1,0,0,0,4459,4402, + 1,0,0,0,4459,4408,1,0,0,0,4459,4417,1,0,0,0,4459,4426,1,0,0,0,4459,4434, + 1,0,0,0,4459,4441,1,0,0,0,4459,4453,1,0,0,0,4460,574,1,0,0,0,4461,4462, + 5,108,0,0,4462,4463,5,100,0,0,4463,4464,5,115,0,0,4464,4465,5,116,0,0, + 4465,4466,5,114,0,0,4466,576,1,0,0,0,4467,4468,5,108,0,0,4468,4469,5,100, + 0,0,4469,4470,5,102,0,0,4470,4471,5,108,0,0,4471,4503,5,100,0,0,4472,4473, + 5,108,0,0,4473,4474,5,100,0,0,4474,4475,5,102,0,0,4475,4476,5,108,0,0, + 4476,4477,5,100,0,0,4477,4503,5,97,0,0,4478,4479,5,115,0,0,4479,4480,5, + 116,0,0,4480,4481,5,102,0,0,4481,4482,5,108,0,0,4482,4503,5,100,0,0,4483, + 4484,5,108,0,0,4484,4485,5,100,0,0,4485,4486,5,115,0,0,4486,4487,5,102, + 0,0,4487,4488,5,108,0,0,4488,4503,5,100,0,0,4489,4490,5,108,0,0,4490,4491, + 5,100,0,0,4491,4492,5,115,0,0,4492,4493,5,102,0,0,4493,4494,5,108,0,0, + 4494,4495,5,100,0,0,4495,4503,5,97,0,0,4496,4497,5,115,0,0,4497,4498,5, + 116,0,0,4498,4499,5,115,0,0,4499,4500,5,102,0,0,4500,4501,5,108,0,0,4501, + 4503,5,100,0,0,4502,4467,1,0,0,0,4502,4472,1,0,0,0,4502,4478,1,0,0,0,4502, + 4483,1,0,0,0,4502,4489,1,0,0,0,4502,4496,1,0,0,0,4503,578,1,0,0,0,4504, + 4505,5,108,0,0,4505,4506,5,100,0,0,4506,4507,5,116,0,0,4507,4508,5,111, + 0,0,4508,4509,5,107,0,0,4509,4510,5,101,0,0,4510,4511,5,110,0,0,4511,580, + 1,0,0,0,4512,4513,7,5,0,0,4513,582,1,0,0,0,4514,4515,7,6,0,0,4515,584, + 1,0,0,0,4516,4517,3,587,293,0,4517,4518,3,535,267,0,4518,4520,1,0,0,0, + 4519,4516,1,0,0,0,4520,4521,1,0,0,0,4521,4519,1,0,0,0,4521,4522,1,0,0, + 0,4522,4523,1,0,0,0,4523,4524,3,587,293,0,4524,586,1,0,0,0,4525,4529,3, + 581,290,0,4526,4528,3,583,291,0,4527,4526,1,0,0,0,4528,4531,1,0,0,0,4529, + 4527,1,0,0,0,4529,4530,1,0,0,0,4530,588,1,0,0,0,4531,4529,1,0,0,0,4532, + 4533,7,7,0,0,4533,4534,1,0,0,0,4534,4535,6,294,0,0,4535,590,1,0,0,0,4536, + 4537,5,47,0,0,4537,4538,5,47,0,0,4538,4542,1,0,0,0,4539,4541,8,8,0,0,4540, + 4539,1,0,0,0,4541,4544,1,0,0,0,4542,4540,1,0,0,0,4542,4543,1,0,0,0,4543, + 4545,1,0,0,0,4544,4542,1,0,0,0,4545,4546,6,295,0,0,4546,592,1,0,0,0,4547, + 4548,5,47,0,0,4548,4549,5,42,0,0,4549,4553,1,0,0,0,4550,4552,9,0,0,0,4551, + 4550,1,0,0,0,4552,4555,1,0,0,0,4553,4554,1,0,0,0,4553,4551,1,0,0,0,4554, + 4556,1,0,0,0,4555,4553,1,0,0,0,4556,4557,5,42,0,0,4557,4558,5,47,0,0,4558, + 4559,1,0,0,0,4559,4560,6,296,0,0,4560,594,1,0,0,0,4561,4562,5,46,0,0,4562, + 4563,5,112,0,0,4563,4564,5,101,0,0,4564,4565,5,114,0,0,4565,4566,5,109, + 0,0,4566,4567,5,105,0,0,4567,4568,5,115,0,0,4568,4569,5,115,0,0,4569,4570, + 5,105,0,0,4570,4571,5,111,0,0,4571,4572,5,110,0,0,4572,596,1,0,0,0,4573, + 4574,5,46,0,0,4574,4575,5,112,0,0,4575,4576,5,101,0,0,4576,4577,5,114, + 0,0,4577,4578,5,109,0,0,4578,4579,5,105,0,0,4579,4580,5,115,0,0,4580,4581, + 5,115,0,0,4581,4582,5,105,0,0,4582,4583,5,111,0,0,4583,4584,5,110,0,0, + 4584,4585,5,115,0,0,4585,4586,5,101,0,0,4586,4587,5,116,0,0,4587,598,1, + 0,0,0,4588,4589,5,46,0,0,4589,4590,5,101,0,0,4590,4591,5,109,0,0,4591, + 4592,5,105,0,0,4592,4593,5,116,0,0,4593,4594,5,98,0,0,4594,4595,5,121, + 0,0,4595,4596,5,116,0,0,4596,4597,5,101,0,0,4597,600,1,0,0,0,4598,4599, + 5,46,0,0,4599,4600,5,109,0,0,4600,4601,5,97,0,0,4601,4602,5,120,0,0,4602, + 4603,5,115,0,0,4603,4604,5,116,0,0,4604,4605,5,97,0,0,4605,4606,5,99,0, + 0,4606,4607,5,107,0,0,4607,602,1,0,0,0,4608,4609,5,46,0,0,4609,4610,5, + 101,0,0,4610,4611,5,110,0,0,4611,4612,5,116,0,0,4612,4613,5,114,0,0,4613, + 4614,5,121,0,0,4614,4615,5,112,0,0,4615,4616,5,111,0,0,4616,4617,5,105, + 0,0,4617,4618,5,110,0,0,4618,4619,5,116,0,0,4619,604,1,0,0,0,4620,4621, + 5,46,0,0,4621,4622,5,122,0,0,4622,4623,5,101,0,0,4623,4624,5,114,0,0,4624, + 4625,5,111,0,0,4625,4626,5,105,0,0,4626,4627,5,110,0,0,4627,4628,5,105, + 0,0,4628,4629,5,116,0,0,4629,606,1,0,0,0,4630,4631,5,46,0,0,4631,4632, + 5,108,0,0,4632,4633,5,111,0,0,4633,4634,5,99,0,0,4634,4635,5,97,0,0,4635, + 4636,5,108,0,0,4636,4637,5,115,0,0,4637,608,1,0,0,0,4638,4639,5,46,0,0, + 4639,4640,5,101,0,0,4640,4641,5,120,0,0,4641,4642,5,112,0,0,4642,4643, + 5,111,0,0,4643,4644,5,114,0,0,4644,4645,5,116,0,0,4645,610,1,0,0,0,4646, + 4647,5,46,0,0,4647,4648,5,111,0,0,4648,4649,5,118,0,0,4649,4650,5,101, + 0,0,4650,4651,5,114,0,0,4651,4652,5,114,0,0,4652,4653,5,105,0,0,4653,4654, + 5,100,0,0,4654,4655,5,101,0,0,4655,612,1,0,0,0,4656,4657,5,46,0,0,4657, + 4658,5,118,0,0,4658,4659,5,116,0,0,4659,4660,5,101,0,0,4660,4661,5,110, + 0,0,4661,4662,5,116,0,0,4662,4663,5,114,0,0,4663,4664,5,121,0,0,4664,614, + 1,0,0,0,37,0,2005,2013,2018,2020,2023,2031,2036,2038,2041,2046,2052,2056, + 2061,2063,2166,2177,2188,2199,2214,2721,2772,2774,2783,2785,4005,4083, + 4112,4133,4170,4336,4459,4502,4521,4529,4542,4553,1,6,0,0 + }; + + public static readonly ATN _ATN = + new ATNDeserializer().Deserialize(_serializedATN); + + +} +} // namespace ILAssembler diff --git a/src/tools/ilasm/src/ILAssembler/gen/CILLexer.interp b/src/tools/ilasm/src/ILAssembler/gen/CILLexer.interp new file mode 100644 index 00000000000000..6f08bf3b9e8055 --- /dev/null +++ b/src/tools/ilasm/src/ILAssembler/gen/CILLexer.interp @@ -0,0 +1,932 @@ +token literal names: +null +'native' +'cil' +'optil' +'managed' +'forwardref' +'preservesig' +'runtime' +'internalcall' +'synchronized' +'noinlining' +'aggressiveinlining' +'nooptimization' +'aggressiveoptimization' +'async' +'extended' +'{' +'}' +'.subsystem' +'.corflags' +'.file' +'alignment' +'.imagebase' +'.stackreserve' +'.assembly' +'.mscorlib' +'.language' +',' +'.typelist' +'(' +')' +';' +'.typedef' +'as' +'.custom' +'=' +'field' +'property' +'class' +'extern' +'.vtfixup' +'[' +']' +'at' +'fromunmanaged' +'callmostderived' +'retainappdomain' +'.vtable' +'.namespace' +'.class' +'public' +'private' +'sealed' +'abstract' +'auto' +'sequential' +'unicode' +'autochar' +'import' +'serializable' +'windowsruntime' +'nested' +'family' +'assembly' +'famandassem' +'famorassem' +'beforefieldinit' +'specialname' +'rtspecialname' +'flags' +'extends' +'implements' +'.line' +'#line' +':' +'nometadata' +'retargetable' +'noplatform' +'legacy library' +'x86' +'amd64' +'arm' +'arm64' +'bytearray' +'<' +'>' +'()' +'/' +'algorithm' +'iidparam' +'pinned' +'modreq' +'modopt' +'true' +'false' +'request' +'demand' +'assert' +'deny' +'permitonly' +'linkcheck' +'inheritcheck' +'reqmin' +'reqopt' +'reqrefuse' +'prejitgrant' +'prejitdeny' +'noncasdemand' +'noncaslinkdemand' +'noncasinheritance' +'callconv' +'mdtoken' +'-' +'byreflike' +'.ctor' +'.size' +'.pack' +'with' +'.interfaceimpl' +'.field' +'marshal' +'static' +'initonly' +'privatescope' +'literal' +'notserialized' +'.event' +'.addon' +'.removeon' +'.fire' +'.other' +'.property' +'.set' +'.get' +'in' +'out' +'opt' +'.method' +'final' +'virtual' +'strict' +'hidebysig' +'newslot' +'unmanagedexp' +'reqsecobj' +'pinvokeimpl' +'nomangle' +'lasterr' +'winapi' +'bestfit' +'on' +'off' +'charmaperror' +'.cctor' +'init' +'.try' +'to' +'filter' +'catch' +'finally' +'fault' +'handler' +'.data' +'tls' +'.publicKey' +'.ver' +'.locale' +'.publickeytoken' +'forwarder' +null +null +null +null +'::' +'..' +'null' +'nullref' +'.hash' +'char' +'string' +'bool' +'int8' +'int16' +'int32' +'int64' +'float32' +'float64' +null +null +null +null +'int' +null +'type' +'object' +'.module' +'value' +'valuetype' +'void' +'enum' +'custom' +'fixed' +'systring' +'array' +'variant' +'currency' +'syschar' +'error' +'decimal' +'date' +'bstr' +'lpstr' +'lpwstr' +'lptstr' +'objectref' +'iunknown' +'idispatch' +'struct' +'interface' +'safearray' +null +null +'byvalstr' +'ansi' +null +'tbstr' +'method' +'any' +'lpstruct' +'vector' +'hresult' +'carray' +'userdefined' +'record' +'filetime' +'blob' +'stream' +'storage' +'streamed_object' +'stored_object' +'blob_object' +'cf' +'clsid' +'instance' +'explicit' +'default' +'vararg' +'unmanaged' +'cdecl' +'stdcall' +'thiscall' +'fastcall' +'!' +null +'typedref' +null +null +'.param' +'constraint' +'.this' +'.base' +'.nester' +'&' +null +'*' +null +null +'.' +'+' +'#define' +'#undef' +'#ifdef' +'#ifndef' +'#else' +'#endif' +'#include' +'.mresource' +null +null +null +'ldc.i8' +null +null +'calli' +null +'switch' +null +'ldstr' +null +'ldtoken' +null +null +null +null +null +'.permission' +'.permissionset' +'.emitbyte' +'.maxstack' +'.entrypoint' +'.zeroinit' +'.locals' +'.export' +'.override' +'.vtentry' + +token symbolic names: +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +INT32 +INT64 +FLOAT64 +HEXBYTE +DCOLON +ELLIPSIS +NULL +NULLREF +HASH +CHAR +STRING +BOOL +INT8 +INT16 +INT32_ +INT64_ +FLOAT32 +FLOAT64_ +UINT8 +UINT16 +UINT32 +UINT64 +INT +UINT +TYPE +OBJECT +MODULE +VALUE +VALUETYPE +VOID +ENUM +CUSTOM +FIXED +SYSSTRING +ARRAY +VARIANT +CURRENCY +SYSCHAR +ERROR +DECIMAL +DATE +BSTR +LPSTR +LPWSTR +LPTSTR +OBJECTREF +IUNKNOWN +IDISPATCH +STRUCT +INTERFACE +SAFEARRAY +NESTEDSTRUCT +VARIANTBOOL +BYVALSTR +ANSI +ANSIBSTR +TBSTR +METHOD +ANY +LPSTRUCT +VECTOR +HRESULT +CARRAY +USERDEFINED +RECORD +FILETIME +BLOB +STREAM +STORAGE +STREAMED_OBJECT +STORED_OBJECT +BLOB_OBJECT +CF +CLSID +INSTANCE +EXPLICIT +DEFAULT +VARARG +UNMANAGED +CDECL +STDCALL +THISCALL +FASTCALL +TYPE_PARAMETER +METHOD_TYPE_PARAMETER +TYPEDREF +NATIVE_INT +NATIVE_UINT +PARAM +CONSTRAINT +THIS +BASE +NESTER +REF +ARRAY_TYPE_NO_BOUNDS +PTR +QSTRING +SQSTRING +DOT +PLUS +PP_DEFINE +PP_UNDEF +PP_IFDEF +PP_IFNDEF +PP_ELSE +PP_ENDIF +PP_INCLUDE +MRESOURCE +INSTR_NONE +INSTR_VAR +INSTR_I +INSTR_I8 +INSTR_R +INSTR_METHOD +INSTR_SIG +INSTR_BRTARGET +INSTR_SWITCH +INSTR_TYPE +INSTR_STRING +INSTR_FIELD +INSTR_TOK +DOTTEDNAME +ID +WS +SINGLE_LINE_COMMENT +COMMENT +PERMISSION +PERMISSIONSET +EMITBYTE +MAXSTACK +ENTRYPOINT +ZEROINIT +LOCALS +EXPORT +OVERRIDE +VTENTRY + +rule names: +T__0 +T__1 +T__2 +T__3 +T__4 +T__5 +T__6 +T__7 +T__8 +T__9 +T__10 +T__11 +T__12 +T__13 +T__14 +T__15 +T__16 +T__17 +T__18 +T__19 +T__20 +T__21 +T__22 +T__23 +T__24 +T__25 +T__26 +T__27 +T__28 +T__29 +T__30 +T__31 +T__32 +T__33 +T__34 +T__35 +T__36 +T__37 +T__38 +T__39 +T__40 +T__41 +T__42 +T__43 +T__44 +T__45 +T__46 +T__47 +T__48 +T__49 +T__50 +T__51 +T__52 +T__53 +T__54 +T__55 +T__56 +T__57 +T__58 +T__59 +T__60 +T__61 +T__62 +T__63 +T__64 +T__65 +T__66 +T__67 +T__68 +T__69 +T__70 +T__71 +T__72 +T__73 +T__74 +T__75 +T__76 +T__77 +T__78 +T__79 +T__80 +T__81 +T__82 +T__83 +T__84 +T__85 +T__86 +T__87 +T__88 +T__89 +T__90 +T__91 +T__92 +T__93 +T__94 +T__95 +T__96 +T__97 +T__98 +T__99 +T__100 +T__101 +T__102 +T__103 +T__104 +T__105 +T__106 +T__107 +T__108 +T__109 +T__110 +T__111 +T__112 +T__113 +T__114 +T__115 +T__116 +T__117 +T__118 +T__119 +T__120 +T__121 +T__122 +T__123 +T__124 +T__125 +T__126 +T__127 +T__128 +T__129 +T__130 +T__131 +T__132 +T__133 +T__134 +T__135 +T__136 +T__137 +T__138 +T__139 +T__140 +T__141 +T__142 +T__143 +T__144 +T__145 +T__146 +T__147 +T__148 +T__149 +T__150 +T__151 +T__152 +T__153 +T__154 +T__155 +T__156 +T__157 +T__158 +T__159 +T__160 +T__161 +T__162 +T__163 +T__164 +T__165 +T__166 +T__167 +INT32 +INT64 +FLOAT64 +HEXBYTE +DCOLON +ELLIPSIS +NULL +NULLREF +HASH +CHAR +STRING +BOOL +INT8 +INT16 +INT32_ +INT64_ +FLOAT32 +FLOAT64_ +UNSIGNED +UINT8 +UINT16 +UINT32 +UINT64 +INT +UINT +TYPE +OBJECT +MODULE +VALUE +VALUETYPE +VOID +ENUM +CUSTOM +FIXED +SYSSTRING +ARRAY +VARIANT +CURRENCY +SYSCHAR +ERROR +DECIMAL +DATE +BSTR +LPSTR +LPWSTR +LPTSTR +OBJECTREF +IUNKNOWN +IDISPATCH +STRUCT +INTERFACE +SAFEARRAY +NESTEDSTRUCT +VARIANTBOOL +BYVALSTR +ANSI +ANSIBSTR +TBSTR +METHOD +ANY +LPSTRUCT +VECTOR +HRESULT +CARRAY +USERDEFINED +RECORD +FILETIME +BLOB +STREAM +STORAGE +STREAMED_OBJECT +STORED_OBJECT +BLOB_OBJECT +CF +CLSID +INSTANCE +EXPLICIT +DEFAULT +VARARG +UNMANAGED +CDECL +STDCALL +THISCALL +FASTCALL +TYPE_PARAMETER +METHOD_TYPE_PARAMETER +TYPEDREF +NATIVE_INT +NATIVE_UINT +PARAM +CONSTRAINT +THIS +BASE +NESTER +REF +ARRAY_TYPE_NO_BOUNDS +PTR +QSTRING +SQSTRING +DOT +PLUS +PP_DEFINE +PP_UNDEF +PP_IFDEF +PP_IFNDEF +PP_ELSE +PP_ENDIF +PP_INCLUDE +MRESOURCE +INSTR_NONE +INSTR_VAR +INSTR_I +INSTR_I8 +INSTR_R +INSTR_METHOD +INSTR_SIG +INSTR_BRTARGET +INSTR_SWITCH +INSTR_TYPE +INSTR_STRING +INSTR_FIELD +INSTR_TOK +IDSTART +IDCONT +DOTTEDNAME +ID +WS +SINGLE_LINE_COMMENT +COMMENT +PERMISSION +PERMISSIONSET +EMITBYTE +MAXSTACK +ENTRYPOINT +ZEROINIT +LOCALS +EXPORT +OVERRIDE +VTENTRY + +channel names: +DEFAULT_TOKEN_CHANNEL +HIDDEN + +mode names: +DEFAULT_MODE + +atn: +[4, 0, 304, 4665, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 7, 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 2, 141, 7, 141, 2, 142, 7, 142, 2, 143, 7, 143, 2, 144, 7, 144, 2, 145, 7, 145, 2, 146, 7, 146, 2, 147, 7, 147, 2, 148, 7, 148, 2, 149, 7, 149, 2, 150, 7, 150, 2, 151, 7, 151, 2, 152, 7, 152, 2, 153, 7, 153, 2, 154, 7, 154, 2, 155, 7, 155, 2, 156, 7, 156, 2, 157, 7, 157, 2, 158, 7, 158, 2, 159, 7, 159, 2, 160, 7, 160, 2, 161, 7, 161, 2, 162, 7, 162, 2, 163, 7, 163, 2, 164, 7, 164, 2, 165, 7, 165, 2, 166, 7, 166, 2, 167, 7, 167, 2, 168, 7, 168, 2, 169, 7, 169, 2, 170, 7, 170, 2, 171, 7, 171, 2, 172, 7, 172, 2, 173, 7, 173, 2, 174, 7, 174, 2, 175, 7, 175, 2, 176, 7, 176, 2, 177, 7, 177, 2, 178, 7, 178, 2, 179, 7, 179, 2, 180, 7, 180, 2, 181, 7, 181, 2, 182, 7, 182, 2, 183, 7, 183, 2, 184, 7, 184, 2, 185, 7, 185, 2, 186, 7, 186, 2, 187, 7, 187, 2, 188, 7, 188, 2, 189, 7, 189, 2, 190, 7, 190, 2, 191, 7, 191, 2, 192, 7, 192, 2, 193, 7, 193, 2, 194, 7, 194, 2, 195, 7, 195, 2, 196, 7, 196, 2, 197, 7, 197, 2, 198, 7, 198, 2, 199, 7, 199, 2, 200, 7, 200, 2, 201, 7, 201, 2, 202, 7, 202, 2, 203, 7, 203, 2, 204, 7, 204, 2, 205, 7, 205, 2, 206, 7, 206, 2, 207, 7, 207, 2, 208, 7, 208, 2, 209, 7, 209, 2, 210, 7, 210, 2, 211, 7, 211, 2, 212, 7, 212, 2, 213, 7, 213, 2, 214, 7, 214, 2, 215, 7, 215, 2, 216, 7, 216, 2, 217, 7, 217, 2, 218, 7, 218, 2, 219, 7, 219, 2, 220, 7, 220, 2, 221, 7, 221, 2, 222, 7, 222, 2, 223, 7, 223, 2, 224, 7, 224, 2, 225, 7, 225, 2, 226, 7, 226, 2, 227, 7, 227, 2, 228, 7, 228, 2, 229, 7, 229, 2, 230, 7, 230, 2, 231, 7, 231, 2, 232, 7, 232, 2, 233, 7, 233, 2, 234, 7, 234, 2, 235, 7, 235, 2, 236, 7, 236, 2, 237, 7, 237, 2, 238, 7, 238, 2, 239, 7, 239, 2, 240, 7, 240, 2, 241, 7, 241, 2, 242, 7, 242, 2, 243, 7, 243, 2, 244, 7, 244, 2, 245, 7, 245, 2, 246, 7, 246, 2, 247, 7, 247, 2, 248, 7, 248, 2, 249, 7, 249, 2, 250, 7, 250, 2, 251, 7, 251, 2, 252, 7, 252, 2, 253, 7, 253, 2, 254, 7, 254, 2, 255, 7, 255, 2, 256, 7, 256, 2, 257, 7, 257, 2, 258, 7, 258, 2, 259, 7, 259, 2, 260, 7, 260, 2, 261, 7, 261, 2, 262, 7, 262, 2, 263, 7, 263, 2, 264, 7, 264, 2, 265, 7, 265, 2, 266, 7, 266, 2, 267, 7, 267, 2, 268, 7, 268, 2, 269, 7, 269, 2, 270, 7, 270, 2, 271, 7, 271, 2, 272, 7, 272, 2, 273, 7, 273, 2, 274, 7, 274, 2, 275, 7, 275, 2, 276, 7, 276, 2, 277, 7, 277, 2, 278, 7, 278, 2, 279, 7, 279, 2, 280, 7, 280, 2, 281, 7, 281, 2, 282, 7, 282, 2, 283, 7, 283, 2, 284, 7, 284, 2, 285, 7, 285, 2, 286, 7, 286, 2, 287, 7, 287, 2, 288, 7, 288, 2, 289, 7, 289, 2, 290, 7, 290, 2, 291, 7, 291, 2, 292, 7, 292, 2, 293, 7, 293, 2, 294, 7, 294, 2, 295, 7, 295, 2, 296, 7, 296, 2, 297, 7, 297, 2, 298, 7, 298, 2, 299, 7, 299, 2, 300, 7, 300, 2, 301, 7, 301, 2, 302, 7, 302, 2, 303, 7, 303, 2, 304, 7, 304, 2, 305, 7, 305, 2, 306, 7, 306, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 29, 1, 29, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 73, 1, 73, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 78, 1, 78, 1, 78, 1, 78, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 80, 1, 80, 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, 84, 1, 84, 1, 85, 1, 85, 1, 85, 1, 86, 1, 86, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 111, 1, 111, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 133, 1, 133, 1, 133, 1, 134, 1, 134, 1, 134, 1, 134, 1, 135, 1, 135, 1, 135, 1, 135, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 149, 1, 149, 1, 149, 1, 150, 1, 150, 1, 150, 1, 150, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 155, 1, 155, 1, 155, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 162, 1, 162, 1, 162, 1, 162, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 168, 3, 168, 2006, 8, 168, 1, 168, 1, 168, 1, 168, 1, 168, 4, 168, 2012, 8, 168, 11, 168, 12, 168, 2013, 1, 168, 4, 168, 2017, 8, 168, 11, 168, 12, 168, 2018, 3, 168, 2021, 8, 168, 1, 169, 3, 169, 2024, 8, 169, 1, 169, 1, 169, 1, 169, 1, 169, 4, 169, 2030, 8, 169, 11, 169, 12, 169, 2031, 1, 169, 4, 169, 2035, 8, 169, 11, 169, 12, 169, 2036, 3, 169, 2039, 8, 169, 1, 170, 3, 170, 2042, 8, 170, 1, 170, 4, 170, 2045, 8, 170, 11, 170, 12, 170, 2046, 1, 170, 1, 170, 4, 170, 2051, 8, 170, 11, 170, 12, 170, 2052, 1, 170, 1, 170, 3, 170, 2057, 8, 170, 1, 170, 4, 170, 2060, 8, 170, 11, 170, 12, 170, 2061, 3, 170, 2064, 8, 170, 1, 171, 1, 171, 1, 171, 1, 172, 1, 172, 1, 172, 1, 173, 1, 173, 1, 173, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 3, 187, 2167, 8, 187, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 3, 188, 2178, 8, 188, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 3, 189, 2189, 8, 189, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 3, 190, 2200, 8, 190, 1, 191, 1, 191, 1, 191, 1, 191, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 3, 192, 2215, 8, 192, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 221, 1, 221, 1, 221, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 224, 1, 224, 1, 224, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 227, 1, 227, 1, 227, 1, 227, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 241, 1, 241, 1, 241, 1, 242, 1, 242, 1, 242, 1, 242, 1, 242, 1, 242, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 252, 1, 252, 1, 253, 1, 253, 1, 253, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 3, 256, 2722, 8, 256, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 259, 1, 259, 1, 259, 1, 259, 1, 259, 1, 259, 1, 260, 1, 260, 1, 260, 1, 260, 1, 260, 1, 260, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 262, 1, 262, 1, 263, 1, 263, 1, 263, 1, 264, 1, 264, 1, 265, 1, 265, 1, 265, 1, 265, 5, 265, 2773, 8, 265, 10, 265, 12, 265, 2776, 9, 265, 1, 265, 1, 265, 1, 266, 1, 266, 1, 266, 1, 266, 5, 266, 2784, 8, 266, 10, 266, 12, 266, 2787, 9, 266, 1, 266, 1, 266, 1, 267, 1, 267, 1, 268, 1, 268, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 271, 1, 271, 1, 271, 1, 271, 1, 271, 1, 271, 1, 271, 1, 272, 1, 272, 1, 272, 1, 272, 1, 272, 1, 272, 1, 272, 1, 272, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 3, 277, 4006, 8, 277, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 3, 278, 4084, 8, 278, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 3, 279, 4113, 8, 279, 1, 280, 1, 280, 1, 280, 1, 280, 1, 280, 1, 280, 1, 280, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 4134, 8, 281, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 3, 282, 4171, 8, 282, 1, 283, 1, 283, 1, 283, 1, 283, 1, 283, 1, 283, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 3, 284, 4337, 8, 284, 1, 285, 1, 285, 1, 285, 1, 285, 1, 285, 1, 285, 1, 285, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 3, 286, 4460, 8, 286, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 3, 288, 4503, 8, 288, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 1, 290, 1, 290, 1, 291, 1, 291, 1, 292, 1, 292, 1, 292, 4, 292, 4520, 8, 292, 11, 292, 12, 292, 4521, 1, 292, 1, 292, 1, 293, 1, 293, 5, 293, 4528, 8, 293, 10, 293, 12, 293, 4531, 9, 293, 1, 294, 1, 294, 1, 294, 1, 294, 1, 295, 1, 295, 1, 295, 1, 295, 5, 295, 4541, 8, 295, 10, 295, 12, 295, 4544, 9, 295, 1, 295, 1, 295, 1, 296, 1, 296, 1, 296, 1, 296, 5, 296, 4552, 8, 296, 10, 296, 12, 296, 4555, 9, 296, 1, 296, 1, 296, 1, 296, 1, 296, 1, 296, 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, 1, 298, 1, 298, 1, 298, 1, 298, 1, 298, 1, 298, 1, 298, 1, 298, 1, 298, 1, 298, 1, 298, 1, 298, 1, 298, 1, 298, 1, 298, 1, 299, 1, 299, 1, 299, 1, 299, 1, 299, 1, 299, 1, 299, 1, 299, 1, 299, 1, 299, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 1, 302, 1, 302, 1, 302, 1, 302, 1, 302, 1, 302, 1, 302, 1, 302, 1, 302, 1, 302, 1, 303, 1, 303, 1, 303, 1, 303, 1, 303, 1, 303, 1, 303, 1, 303, 1, 304, 1, 304, 1, 304, 1, 304, 1, 304, 1, 304, 1, 304, 1, 304, 1, 305, 1, 305, 1, 305, 1, 305, 1, 305, 1, 305, 1, 305, 1, 305, 1, 305, 1, 305, 1, 306, 1, 306, 1, 306, 1, 306, 1, 306, 1, 306, 1, 306, 1, 306, 1, 306, 1, 4553, 0, 307, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, 35, 18, 37, 19, 39, 20, 41, 21, 43, 22, 45, 23, 47, 24, 49, 25, 51, 26, 53, 27, 55, 28, 57, 29, 59, 30, 61, 31, 63, 32, 65, 33, 67, 34, 69, 35, 71, 36, 73, 37, 75, 38, 77, 39, 79, 40, 81, 41, 83, 42, 85, 43, 87, 44, 89, 45, 91, 46, 93, 47, 95, 48, 97, 49, 99, 50, 101, 51, 103, 52, 105, 53, 107, 54, 109, 55, 111, 56, 113, 57, 115, 58, 117, 59, 119, 60, 121, 61, 123, 62, 125, 63, 127, 64, 129, 65, 131, 66, 133, 67, 135, 68, 137, 69, 139, 70, 141, 71, 143, 72, 145, 73, 147, 74, 149, 75, 151, 76, 153, 77, 155, 78, 157, 79, 159, 80, 161, 81, 163, 82, 165, 83, 167, 84, 169, 85, 171, 86, 173, 87, 175, 88, 177, 89, 179, 90, 181, 91, 183, 92, 185, 93, 187, 94, 189, 95, 191, 96, 193, 97, 195, 98, 197, 99, 199, 100, 201, 101, 203, 102, 205, 103, 207, 104, 209, 105, 211, 106, 213, 107, 215, 108, 217, 109, 219, 110, 221, 111, 223, 112, 225, 113, 227, 114, 229, 115, 231, 116, 233, 117, 235, 118, 237, 119, 239, 120, 241, 121, 243, 122, 245, 123, 247, 124, 249, 125, 251, 126, 253, 127, 255, 128, 257, 129, 259, 130, 261, 131, 263, 132, 265, 133, 267, 134, 269, 135, 271, 136, 273, 137, 275, 138, 277, 139, 279, 140, 281, 141, 283, 142, 285, 143, 287, 144, 289, 145, 291, 146, 293, 147, 295, 148, 297, 149, 299, 150, 301, 151, 303, 152, 305, 153, 307, 154, 309, 155, 311, 156, 313, 157, 315, 158, 317, 159, 319, 160, 321, 161, 323, 162, 325, 163, 327, 164, 329, 165, 331, 166, 333, 167, 335, 168, 337, 169, 339, 170, 341, 171, 343, 172, 345, 173, 347, 174, 349, 175, 351, 176, 353, 177, 355, 178, 357, 179, 359, 180, 361, 181, 363, 182, 365, 183, 367, 184, 369, 185, 371, 186, 373, 0, 375, 187, 377, 188, 379, 189, 381, 190, 383, 191, 385, 192, 387, 193, 389, 194, 391, 195, 393, 196, 395, 197, 397, 198, 399, 199, 401, 200, 403, 201, 405, 202, 407, 203, 409, 204, 411, 205, 413, 206, 415, 207, 417, 208, 419, 209, 421, 210, 423, 211, 425, 212, 427, 213, 429, 214, 431, 215, 433, 216, 435, 217, 437, 218, 439, 219, 441, 220, 443, 221, 445, 222, 447, 223, 449, 224, 451, 225, 453, 226, 455, 227, 457, 228, 459, 229, 461, 230, 463, 231, 465, 232, 467, 233, 469, 234, 471, 235, 473, 236, 475, 237, 477, 238, 479, 239, 481, 240, 483, 241, 485, 242, 487, 243, 489, 244, 491, 245, 493, 246, 495, 247, 497, 248, 499, 249, 501, 250, 503, 251, 505, 252, 507, 253, 509, 254, 511, 255, 513, 256, 515, 257, 517, 258, 519, 259, 521, 260, 523, 261, 525, 262, 527, 263, 529, 264, 531, 265, 533, 266, 535, 267, 537, 268, 539, 269, 541, 270, 543, 271, 545, 272, 547, 273, 549, 274, 551, 275, 553, 276, 555, 277, 557, 278, 559, 279, 561, 280, 563, 281, 565, 282, 567, 283, 569, 284, 571, 285, 573, 286, 575, 287, 577, 288, 579, 289, 581, 0, 583, 0, 585, 290, 587, 291, 589, 292, 591, 293, 593, 294, 595, 295, 597, 296, 599, 297, 601, 298, 603, 299, 605, 300, 607, 301, 609, 302, 611, 303, 613, 304, 1, 0, 9, 3, 0, 48, 57, 65, 70, 97, 102, 1, 0, 48, 57, 2, 0, 69, 69, 101, 101, 2, 0, 34, 34, 92, 92, 2, 0, 39, 39, 92, 92, 4, 0, 35, 36, 64, 90, 95, 95, 97, 122, 4, 0, 35, 36, 48, 57, 63, 90, 95, 122, 3, 0, 9, 10, 13, 13, 32, 32, 2, 0, 10, 10, 13, 13, 4905, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 77, 1, 0, 0, 0, 0, 79, 1, 0, 0, 0, 0, 81, 1, 0, 0, 0, 0, 83, 1, 0, 0, 0, 0, 85, 1, 0, 0, 0, 0, 87, 1, 0, 0, 0, 0, 89, 1, 0, 0, 0, 0, 91, 1, 0, 0, 0, 0, 93, 1, 0, 0, 0, 0, 95, 1, 0, 0, 0, 0, 97, 1, 0, 0, 0, 0, 99, 1, 0, 0, 0, 0, 101, 1, 0, 0, 0, 0, 103, 1, 0, 0, 0, 0, 105, 1, 0, 0, 0, 0, 107, 1, 0, 0, 0, 0, 109, 1, 0, 0, 0, 0, 111, 1, 0, 0, 0, 0, 113, 1, 0, 0, 0, 0, 115, 1, 0, 0, 0, 0, 117, 1, 0, 0, 0, 0, 119, 1, 0, 0, 0, 0, 121, 1, 0, 0, 0, 0, 123, 1, 0, 0, 0, 0, 125, 1, 0, 0, 0, 0, 127, 1, 0, 0, 0, 0, 129, 1, 0, 0, 0, 0, 131, 1, 0, 0, 0, 0, 133, 1, 0, 0, 0, 0, 135, 1, 0, 0, 0, 0, 137, 1, 0, 0, 0, 0, 139, 1, 0, 0, 0, 0, 141, 1, 0, 0, 0, 0, 143, 1, 0, 0, 0, 0, 145, 1, 0, 0, 0, 0, 147, 1, 0, 0, 0, 0, 149, 1, 0, 0, 0, 0, 151, 1, 0, 0, 0, 0, 153, 1, 0, 0, 0, 0, 155, 1, 0, 0, 0, 0, 157, 1, 0, 0, 0, 0, 159, 1, 0, 0, 0, 0, 161, 1, 0, 0, 0, 0, 163, 1, 0, 0, 0, 0, 165, 1, 0, 0, 0, 0, 167, 1, 0, 0, 0, 0, 169, 1, 0, 0, 0, 0, 171, 1, 0, 0, 0, 0, 173, 1, 0, 0, 0, 0, 175, 1, 0, 0, 0, 0, 177, 1, 0, 0, 0, 0, 179, 1, 0, 0, 0, 0, 181, 1, 0, 0, 0, 0, 183, 1, 0, 0, 0, 0, 185, 1, 0, 0, 0, 0, 187, 1, 0, 0, 0, 0, 189, 1, 0, 0, 0, 0, 191, 1, 0, 0, 0, 0, 193, 1, 0, 0, 0, 0, 195, 1, 0, 0, 0, 0, 197, 1, 0, 0, 0, 0, 199, 1, 0, 0, 0, 0, 201, 1, 0, 0, 0, 0, 203, 1, 0, 0, 0, 0, 205, 1, 0, 0, 0, 0, 207, 1, 0, 0, 0, 0, 209, 1, 0, 0, 0, 0, 211, 1, 0, 0, 0, 0, 213, 1, 0, 0, 0, 0, 215, 1, 0, 0, 0, 0, 217, 1, 0, 0, 0, 0, 219, 1, 0, 0, 0, 0, 221, 1, 0, 0, 0, 0, 223, 1, 0, 0, 0, 0, 225, 1, 0, 0, 0, 0, 227, 1, 0, 0, 0, 0, 229, 1, 0, 0, 0, 0, 231, 1, 0, 0, 0, 0, 233, 1, 0, 0, 0, 0, 235, 1, 0, 0, 0, 0, 237, 1, 0, 0, 0, 0, 239, 1, 0, 0, 0, 0, 241, 1, 0, 0, 0, 0, 243, 1, 0, 0, 0, 0, 245, 1, 0, 0, 0, 0, 247, 1, 0, 0, 0, 0, 249, 1, 0, 0, 0, 0, 251, 1, 0, 0, 0, 0, 253, 1, 0, 0, 0, 0, 255, 1, 0, 0, 0, 0, 257, 1, 0, 0, 0, 0, 259, 1, 0, 0, 0, 0, 261, 1, 0, 0, 0, 0, 263, 1, 0, 0, 0, 0, 265, 1, 0, 0, 0, 0, 267, 1, 0, 0, 0, 0, 269, 1, 0, 0, 0, 0, 271, 1, 0, 0, 0, 0, 273, 1, 0, 0, 0, 0, 275, 1, 0, 0, 0, 0, 277, 1, 0, 0, 0, 0, 279, 1, 0, 0, 0, 0, 281, 1, 0, 0, 0, 0, 283, 1, 0, 0, 0, 0, 285, 1, 0, 0, 0, 0, 287, 1, 0, 0, 0, 0, 289, 1, 0, 0, 0, 0, 291, 1, 0, 0, 0, 0, 293, 1, 0, 0, 0, 0, 295, 1, 0, 0, 0, 0, 297, 1, 0, 0, 0, 0, 299, 1, 0, 0, 0, 0, 301, 1, 0, 0, 0, 0, 303, 1, 0, 0, 0, 0, 305, 1, 0, 0, 0, 0, 307, 1, 0, 0, 0, 0, 309, 1, 0, 0, 0, 0, 311, 1, 0, 0, 0, 0, 313, 1, 0, 0, 0, 0, 315, 1, 0, 0, 0, 0, 317, 1, 0, 0, 0, 0, 319, 1, 0, 0, 0, 0, 321, 1, 0, 0, 0, 0, 323, 1, 0, 0, 0, 0, 325, 1, 0, 0, 0, 0, 327, 1, 0, 0, 0, 0, 329, 1, 0, 0, 0, 0, 331, 1, 0, 0, 0, 0, 333, 1, 0, 0, 0, 0, 335, 1, 0, 0, 0, 0, 337, 1, 0, 0, 0, 0, 339, 1, 0, 0, 0, 0, 341, 1, 0, 0, 0, 0, 343, 1, 0, 0, 0, 0, 345, 1, 0, 0, 0, 0, 347, 1, 0, 0, 0, 0, 349, 1, 0, 0, 0, 0, 351, 1, 0, 0, 0, 0, 353, 1, 0, 0, 0, 0, 355, 1, 0, 0, 0, 0, 357, 1, 0, 0, 0, 0, 359, 1, 0, 0, 0, 0, 361, 1, 0, 0, 0, 0, 363, 1, 0, 0, 0, 0, 365, 1, 0, 0, 0, 0, 367, 1, 0, 0, 0, 0, 369, 1, 0, 0, 0, 0, 371, 1, 0, 0, 0, 0, 375, 1, 0, 0, 0, 0, 377, 1, 0, 0, 0, 0, 379, 1, 0, 0, 0, 0, 381, 1, 0, 0, 0, 0, 383, 1, 0, 0, 0, 0, 385, 1, 0, 0, 0, 0, 387, 1, 0, 0, 0, 0, 389, 1, 0, 0, 0, 0, 391, 1, 0, 0, 0, 0, 393, 1, 0, 0, 0, 0, 395, 1, 0, 0, 0, 0, 397, 1, 0, 0, 0, 0, 399, 1, 0, 0, 0, 0, 401, 1, 0, 0, 0, 0, 403, 1, 0, 0, 0, 0, 405, 1, 0, 0, 0, 0, 407, 1, 0, 0, 0, 0, 409, 1, 0, 0, 0, 0, 411, 1, 0, 0, 0, 0, 413, 1, 0, 0, 0, 0, 415, 1, 0, 0, 0, 0, 417, 1, 0, 0, 0, 0, 419, 1, 0, 0, 0, 0, 421, 1, 0, 0, 0, 0, 423, 1, 0, 0, 0, 0, 425, 1, 0, 0, 0, 0, 427, 1, 0, 0, 0, 0, 429, 1, 0, 0, 0, 0, 431, 1, 0, 0, 0, 0, 433, 1, 0, 0, 0, 0, 435, 1, 0, 0, 0, 0, 437, 1, 0, 0, 0, 0, 439, 1, 0, 0, 0, 0, 441, 1, 0, 0, 0, 0, 443, 1, 0, 0, 0, 0, 445, 1, 0, 0, 0, 0, 447, 1, 0, 0, 0, 0, 449, 1, 0, 0, 0, 0, 451, 1, 0, 0, 0, 0, 453, 1, 0, 0, 0, 0, 455, 1, 0, 0, 0, 0, 457, 1, 0, 0, 0, 0, 459, 1, 0, 0, 0, 0, 461, 1, 0, 0, 0, 0, 463, 1, 0, 0, 0, 0, 465, 1, 0, 0, 0, 0, 467, 1, 0, 0, 0, 0, 469, 1, 0, 0, 0, 0, 471, 1, 0, 0, 0, 0, 473, 1, 0, 0, 0, 0, 475, 1, 0, 0, 0, 0, 477, 1, 0, 0, 0, 0, 479, 1, 0, 0, 0, 0, 481, 1, 0, 0, 0, 0, 483, 1, 0, 0, 0, 0, 485, 1, 0, 0, 0, 0, 487, 1, 0, 0, 0, 0, 489, 1, 0, 0, 0, 0, 491, 1, 0, 0, 0, 0, 493, 1, 0, 0, 0, 0, 495, 1, 0, 0, 0, 0, 497, 1, 0, 0, 0, 0, 499, 1, 0, 0, 0, 0, 501, 1, 0, 0, 0, 0, 503, 1, 0, 0, 0, 0, 505, 1, 0, 0, 0, 0, 507, 1, 0, 0, 0, 0, 509, 1, 0, 0, 0, 0, 511, 1, 0, 0, 0, 0, 513, 1, 0, 0, 0, 0, 515, 1, 0, 0, 0, 0, 517, 1, 0, 0, 0, 0, 519, 1, 0, 0, 0, 0, 521, 1, 0, 0, 0, 0, 523, 1, 0, 0, 0, 0, 525, 1, 0, 0, 0, 0, 527, 1, 0, 0, 0, 0, 529, 1, 0, 0, 0, 0, 531, 1, 0, 0, 0, 0, 533, 1, 0, 0, 0, 0, 535, 1, 0, 0, 0, 0, 537, 1, 0, 0, 0, 0, 539, 1, 0, 0, 0, 0, 541, 1, 0, 0, 0, 0, 543, 1, 0, 0, 0, 0, 545, 1, 0, 0, 0, 0, 547, 1, 0, 0, 0, 0, 549, 1, 0, 0, 0, 0, 551, 1, 0, 0, 0, 0, 553, 1, 0, 0, 0, 0, 555, 1, 0, 0, 0, 0, 557, 1, 0, 0, 0, 0, 559, 1, 0, 0, 0, 0, 561, 1, 0, 0, 0, 0, 563, 1, 0, 0, 0, 0, 565, 1, 0, 0, 0, 0, 567, 1, 0, 0, 0, 0, 569, 1, 0, 0, 0, 0, 571, 1, 0, 0, 0, 0, 573, 1, 0, 0, 0, 0, 575, 1, 0, 0, 0, 0, 577, 1, 0, 0, 0, 0, 579, 1, 0, 0, 0, 0, 585, 1, 0, 0, 0, 0, 587, 1, 0, 0, 0, 0, 589, 1, 0, 0, 0, 0, 591, 1, 0, 0, 0, 0, 593, 1, 0, 0, 0, 0, 595, 1, 0, 0, 0, 0, 597, 1, 0, 0, 0, 0, 599, 1, 0, 0, 0, 0, 601, 1, 0, 0, 0, 0, 603, 1, 0, 0, 0, 0, 605, 1, 0, 0, 0, 0, 607, 1, 0, 0, 0, 0, 609, 1, 0, 0, 0, 0, 611, 1, 0, 0, 0, 0, 613, 1, 0, 0, 0, 1, 615, 1, 0, 0, 0, 3, 622, 1, 0, 0, 0, 5, 626, 1, 0, 0, 0, 7, 632, 1, 0, 0, 0, 9, 640, 1, 0, 0, 0, 11, 651, 1, 0, 0, 0, 13, 663, 1, 0, 0, 0, 15, 671, 1, 0, 0, 0, 17, 684, 1, 0, 0, 0, 19, 697, 1, 0, 0, 0, 21, 708, 1, 0, 0, 0, 23, 727, 1, 0, 0, 0, 25, 742, 1, 0, 0, 0, 27, 765, 1, 0, 0, 0, 29, 771, 1, 0, 0, 0, 31, 780, 1, 0, 0, 0, 33, 782, 1, 0, 0, 0, 35, 784, 1, 0, 0, 0, 37, 795, 1, 0, 0, 0, 39, 805, 1, 0, 0, 0, 41, 811, 1, 0, 0, 0, 43, 821, 1, 0, 0, 0, 45, 832, 1, 0, 0, 0, 47, 846, 1, 0, 0, 0, 49, 856, 1, 0, 0, 0, 51, 866, 1, 0, 0, 0, 53, 876, 1, 0, 0, 0, 55, 878, 1, 0, 0, 0, 57, 888, 1, 0, 0, 0, 59, 890, 1, 0, 0, 0, 61, 892, 1, 0, 0, 0, 63, 894, 1, 0, 0, 0, 65, 903, 1, 0, 0, 0, 67, 906, 1, 0, 0, 0, 69, 914, 1, 0, 0, 0, 71, 916, 1, 0, 0, 0, 73, 922, 1, 0, 0, 0, 75, 931, 1, 0, 0, 0, 77, 937, 1, 0, 0, 0, 79, 944, 1, 0, 0, 0, 81, 953, 1, 0, 0, 0, 83, 955, 1, 0, 0, 0, 85, 957, 1, 0, 0, 0, 87, 960, 1, 0, 0, 0, 89, 974, 1, 0, 0, 0, 91, 990, 1, 0, 0, 0, 93, 1006, 1, 0, 0, 0, 95, 1014, 1, 0, 0, 0, 97, 1025, 1, 0, 0, 0, 99, 1032, 1, 0, 0, 0, 101, 1039, 1, 0, 0, 0, 103, 1047, 1, 0, 0, 0, 105, 1054, 1, 0, 0, 0, 107, 1063, 1, 0, 0, 0, 109, 1068, 1, 0, 0, 0, 111, 1079, 1, 0, 0, 0, 113, 1087, 1, 0, 0, 0, 115, 1096, 1, 0, 0, 0, 117, 1103, 1, 0, 0, 0, 119, 1116, 1, 0, 0, 0, 121, 1131, 1, 0, 0, 0, 123, 1138, 1, 0, 0, 0, 125, 1145, 1, 0, 0, 0, 127, 1154, 1, 0, 0, 0, 129, 1166, 1, 0, 0, 0, 131, 1177, 1, 0, 0, 0, 133, 1193, 1, 0, 0, 0, 135, 1205, 1, 0, 0, 0, 137, 1219, 1, 0, 0, 0, 139, 1225, 1, 0, 0, 0, 141, 1233, 1, 0, 0, 0, 143, 1244, 1, 0, 0, 0, 145, 1250, 1, 0, 0, 0, 147, 1256, 1, 0, 0, 0, 149, 1258, 1, 0, 0, 0, 151, 1269, 1, 0, 0, 0, 153, 1282, 1, 0, 0, 0, 155, 1293, 1, 0, 0, 0, 157, 1308, 1, 0, 0, 0, 159, 1312, 1, 0, 0, 0, 161, 1318, 1, 0, 0, 0, 163, 1322, 1, 0, 0, 0, 165, 1328, 1, 0, 0, 0, 167, 1338, 1, 0, 0, 0, 169, 1340, 1, 0, 0, 0, 171, 1342, 1, 0, 0, 0, 173, 1345, 1, 0, 0, 0, 175, 1347, 1, 0, 0, 0, 177, 1357, 1, 0, 0, 0, 179, 1366, 1, 0, 0, 0, 181, 1373, 1, 0, 0, 0, 183, 1380, 1, 0, 0, 0, 185, 1387, 1, 0, 0, 0, 187, 1392, 1, 0, 0, 0, 189, 1398, 1, 0, 0, 0, 191, 1406, 1, 0, 0, 0, 193, 1413, 1, 0, 0, 0, 195, 1420, 1, 0, 0, 0, 197, 1425, 1, 0, 0, 0, 199, 1436, 1, 0, 0, 0, 201, 1446, 1, 0, 0, 0, 203, 1459, 1, 0, 0, 0, 205, 1466, 1, 0, 0, 0, 207, 1473, 1, 0, 0, 0, 209, 1483, 1, 0, 0, 0, 211, 1495, 1, 0, 0, 0, 213, 1506, 1, 0, 0, 0, 215, 1519, 1, 0, 0, 0, 217, 1536, 1, 0, 0, 0, 219, 1554, 1, 0, 0, 0, 221, 1563, 1, 0, 0, 0, 223, 1571, 1, 0, 0, 0, 225, 1573, 1, 0, 0, 0, 227, 1583, 1, 0, 0, 0, 229, 1589, 1, 0, 0, 0, 231, 1595, 1, 0, 0, 0, 233, 1601, 1, 0, 0, 0, 235, 1606, 1, 0, 0, 0, 237, 1621, 1, 0, 0, 0, 239, 1628, 1, 0, 0, 0, 241, 1636, 1, 0, 0, 0, 243, 1643, 1, 0, 0, 0, 245, 1652, 1, 0, 0, 0, 247, 1665, 1, 0, 0, 0, 249, 1673, 1, 0, 0, 0, 251, 1687, 1, 0, 0, 0, 253, 1694, 1, 0, 0, 0, 255, 1701, 1, 0, 0, 0, 257, 1711, 1, 0, 0, 0, 259, 1717, 1, 0, 0, 0, 261, 1724, 1, 0, 0, 0, 263, 1734, 1, 0, 0, 0, 265, 1739, 1, 0, 0, 0, 267, 1744, 1, 0, 0, 0, 269, 1747, 1, 0, 0, 0, 271, 1751, 1, 0, 0, 0, 273, 1755, 1, 0, 0, 0, 275, 1763, 1, 0, 0, 0, 277, 1769, 1, 0, 0, 0, 279, 1777, 1, 0, 0, 0, 281, 1784, 1, 0, 0, 0, 283, 1794, 1, 0, 0, 0, 285, 1802, 1, 0, 0, 0, 287, 1815, 1, 0, 0, 0, 289, 1825, 1, 0, 0, 0, 291, 1837, 1, 0, 0, 0, 293, 1846, 1, 0, 0, 0, 295, 1854, 1, 0, 0, 0, 297, 1861, 1, 0, 0, 0, 299, 1869, 1, 0, 0, 0, 301, 1872, 1, 0, 0, 0, 303, 1876, 1, 0, 0, 0, 305, 1889, 1, 0, 0, 0, 307, 1896, 1, 0, 0, 0, 309, 1901, 1, 0, 0, 0, 311, 1906, 1, 0, 0, 0, 313, 1909, 1, 0, 0, 0, 315, 1916, 1, 0, 0, 0, 317, 1922, 1, 0, 0, 0, 319, 1930, 1, 0, 0, 0, 321, 1936, 1, 0, 0, 0, 323, 1944, 1, 0, 0, 0, 325, 1950, 1, 0, 0, 0, 327, 1954, 1, 0, 0, 0, 329, 1965, 1, 0, 0, 0, 331, 1970, 1, 0, 0, 0, 333, 1978, 1, 0, 0, 0, 335, 1994, 1, 0, 0, 0, 337, 2005, 1, 0, 0, 0, 339, 2023, 1, 0, 0, 0, 341, 2041, 1, 0, 0, 0, 343, 2065, 1, 0, 0, 0, 345, 2068, 1, 0, 0, 0, 347, 2071, 1, 0, 0, 0, 349, 2074, 1, 0, 0, 0, 351, 2079, 1, 0, 0, 0, 353, 2087, 1, 0, 0, 0, 355, 2093, 1, 0, 0, 0, 357, 2098, 1, 0, 0, 0, 359, 2105, 1, 0, 0, 0, 361, 2110, 1, 0, 0, 0, 363, 2115, 1, 0, 0, 0, 365, 2121, 1, 0, 0, 0, 367, 2127, 1, 0, 0, 0, 369, 2133, 1, 0, 0, 0, 371, 2141, 1, 0, 0, 0, 373, 2149, 1, 0, 0, 0, 375, 2166, 1, 0, 0, 0, 377, 2177, 1, 0, 0, 0, 379, 2188, 1, 0, 0, 0, 381, 2199, 1, 0, 0, 0, 383, 2201, 1, 0, 0, 0, 385, 2214, 1, 0, 0, 0, 387, 2216, 1, 0, 0, 0, 389, 2221, 1, 0, 0, 0, 391, 2228, 1, 0, 0, 0, 393, 2236, 1, 0, 0, 0, 395, 2242, 1, 0, 0, 0, 397, 2252, 1, 0, 0, 0, 399, 2257, 1, 0, 0, 0, 401, 2262, 1, 0, 0, 0, 403, 2269, 1, 0, 0, 0, 405, 2275, 1, 0, 0, 0, 407, 2284, 1, 0, 0, 0, 409, 2290, 1, 0, 0, 0, 411, 2298, 1, 0, 0, 0, 413, 2307, 1, 0, 0, 0, 415, 2315, 1, 0, 0, 0, 417, 2321, 1, 0, 0, 0, 419, 2329, 1, 0, 0, 0, 421, 2334, 1, 0, 0, 0, 423, 2339, 1, 0, 0, 0, 425, 2345, 1, 0, 0, 0, 427, 2352, 1, 0, 0, 0, 429, 2359, 1, 0, 0, 0, 431, 2369, 1, 0, 0, 0, 433, 2378, 1, 0, 0, 0, 435, 2388, 1, 0, 0, 0, 437, 2395, 1, 0, 0, 0, 439, 2405, 1, 0, 0, 0, 441, 2415, 1, 0, 0, 0, 443, 2424, 1, 0, 0, 0, 445, 2427, 1, 0, 0, 0, 447, 2436, 1, 0, 0, 0, 449, 2441, 1, 0, 0, 0, 451, 2444, 1, 0, 0, 0, 453, 2450, 1, 0, 0, 0, 455, 2457, 1, 0, 0, 0, 457, 2461, 1, 0, 0, 0, 459, 2470, 1, 0, 0, 0, 461, 2477, 1, 0, 0, 0, 463, 2485, 1, 0, 0, 0, 465, 2492, 1, 0, 0, 0, 467, 2504, 1, 0, 0, 0, 469, 2511, 1, 0, 0, 0, 471, 2520, 1, 0, 0, 0, 473, 2525, 1, 0, 0, 0, 475, 2532, 1, 0, 0, 0, 477, 2540, 1, 0, 0, 0, 479, 2556, 1, 0, 0, 0, 481, 2570, 1, 0, 0, 0, 483, 2582, 1, 0, 0, 0, 485, 2585, 1, 0, 0, 0, 487, 2591, 1, 0, 0, 0, 489, 2600, 1, 0, 0, 0, 491, 2609, 1, 0, 0, 0, 493, 2617, 1, 0, 0, 0, 495, 2624, 1, 0, 0, 0, 497, 2634, 1, 0, 0, 0, 499, 2640, 1, 0, 0, 0, 501, 2648, 1, 0, 0, 0, 503, 2657, 1, 0, 0, 0, 505, 2666, 1, 0, 0, 0, 507, 2668, 1, 0, 0, 0, 509, 2671, 1, 0, 0, 0, 511, 2680, 1, 0, 0, 0, 513, 2721, 1, 0, 0, 0, 515, 2723, 1, 0, 0, 0, 517, 2730, 1, 0, 0, 0, 519, 2741, 1, 0, 0, 0, 521, 2747, 1, 0, 0, 0, 523, 2753, 1, 0, 0, 0, 525, 2761, 1, 0, 0, 0, 527, 2763, 1, 0, 0, 0, 529, 2766, 1, 0, 0, 0, 531, 2768, 1, 0, 0, 0, 533, 2779, 1, 0, 0, 0, 535, 2790, 1, 0, 0, 0, 537, 2792, 1, 0, 0, 0, 539, 2794, 1, 0, 0, 0, 541, 2802, 1, 0, 0, 0, 543, 2809, 1, 0, 0, 0, 545, 2816, 1, 0, 0, 0, 547, 2824, 1, 0, 0, 0, 549, 2830, 1, 0, 0, 0, 551, 2837, 1, 0, 0, 0, 553, 2846, 1, 0, 0, 0, 555, 4005, 1, 0, 0, 0, 557, 4083, 1, 0, 0, 0, 559, 4112, 1, 0, 0, 0, 561, 4114, 1, 0, 0, 0, 563, 4133, 1, 0, 0, 0, 565, 4170, 1, 0, 0, 0, 567, 4172, 1, 0, 0, 0, 569, 4336, 1, 0, 0, 0, 571, 4338, 1, 0, 0, 0, 573, 4459, 1, 0, 0, 0, 575, 4461, 1, 0, 0, 0, 577, 4502, 1, 0, 0, 0, 579, 4504, 1, 0, 0, 0, 581, 4512, 1, 0, 0, 0, 583, 4514, 1, 0, 0, 0, 585, 4519, 1, 0, 0, 0, 587, 4525, 1, 0, 0, 0, 589, 4532, 1, 0, 0, 0, 591, 4536, 1, 0, 0, 0, 593, 4547, 1, 0, 0, 0, 595, 4561, 1, 0, 0, 0, 597, 4573, 1, 0, 0, 0, 599, 4588, 1, 0, 0, 0, 601, 4598, 1, 0, 0, 0, 603, 4608, 1, 0, 0, 0, 605, 4620, 1, 0, 0, 0, 607, 4630, 1, 0, 0, 0, 609, 4638, 1, 0, 0, 0, 611, 4646, 1, 0, 0, 0, 613, 4656, 1, 0, 0, 0, 615, 616, 5, 110, 0, 0, 616, 617, 5, 97, 0, 0, 617, 618, 5, 116, 0, 0, 618, 619, 5, 105, 0, 0, 619, 620, 5, 118, 0, 0, 620, 621, 5, 101, 0, 0, 621, 2, 1, 0, 0, 0, 622, 623, 5, 99, 0, 0, 623, 624, 5, 105, 0, 0, 624, 625, 5, 108, 0, 0, 625, 4, 1, 0, 0, 0, 626, 627, 5, 111, 0, 0, 627, 628, 5, 112, 0, 0, 628, 629, 5, 116, 0, 0, 629, 630, 5, 105, 0, 0, 630, 631, 5, 108, 0, 0, 631, 6, 1, 0, 0, 0, 632, 633, 5, 109, 0, 0, 633, 634, 5, 97, 0, 0, 634, 635, 5, 110, 0, 0, 635, 636, 5, 97, 0, 0, 636, 637, 5, 103, 0, 0, 637, 638, 5, 101, 0, 0, 638, 639, 5, 100, 0, 0, 639, 8, 1, 0, 0, 0, 640, 641, 5, 102, 0, 0, 641, 642, 5, 111, 0, 0, 642, 643, 5, 114, 0, 0, 643, 644, 5, 119, 0, 0, 644, 645, 5, 97, 0, 0, 645, 646, 5, 114, 0, 0, 646, 647, 5, 100, 0, 0, 647, 648, 5, 114, 0, 0, 648, 649, 5, 101, 0, 0, 649, 650, 5, 102, 0, 0, 650, 10, 1, 0, 0, 0, 651, 652, 5, 112, 0, 0, 652, 653, 5, 114, 0, 0, 653, 654, 5, 101, 0, 0, 654, 655, 5, 115, 0, 0, 655, 656, 5, 101, 0, 0, 656, 657, 5, 114, 0, 0, 657, 658, 5, 118, 0, 0, 658, 659, 5, 101, 0, 0, 659, 660, 5, 115, 0, 0, 660, 661, 5, 105, 0, 0, 661, 662, 5, 103, 0, 0, 662, 12, 1, 0, 0, 0, 663, 664, 5, 114, 0, 0, 664, 665, 5, 117, 0, 0, 665, 666, 5, 110, 0, 0, 666, 667, 5, 116, 0, 0, 667, 668, 5, 105, 0, 0, 668, 669, 5, 109, 0, 0, 669, 670, 5, 101, 0, 0, 670, 14, 1, 0, 0, 0, 671, 672, 5, 105, 0, 0, 672, 673, 5, 110, 0, 0, 673, 674, 5, 116, 0, 0, 674, 675, 5, 101, 0, 0, 675, 676, 5, 114, 0, 0, 676, 677, 5, 110, 0, 0, 677, 678, 5, 97, 0, 0, 678, 679, 5, 108, 0, 0, 679, 680, 5, 99, 0, 0, 680, 681, 5, 97, 0, 0, 681, 682, 5, 108, 0, 0, 682, 683, 5, 108, 0, 0, 683, 16, 1, 0, 0, 0, 684, 685, 5, 115, 0, 0, 685, 686, 5, 121, 0, 0, 686, 687, 5, 110, 0, 0, 687, 688, 5, 99, 0, 0, 688, 689, 5, 104, 0, 0, 689, 690, 5, 114, 0, 0, 690, 691, 5, 111, 0, 0, 691, 692, 5, 110, 0, 0, 692, 693, 5, 105, 0, 0, 693, 694, 5, 122, 0, 0, 694, 695, 5, 101, 0, 0, 695, 696, 5, 100, 0, 0, 696, 18, 1, 0, 0, 0, 697, 698, 5, 110, 0, 0, 698, 699, 5, 111, 0, 0, 699, 700, 5, 105, 0, 0, 700, 701, 5, 110, 0, 0, 701, 702, 5, 108, 0, 0, 702, 703, 5, 105, 0, 0, 703, 704, 5, 110, 0, 0, 704, 705, 5, 105, 0, 0, 705, 706, 5, 110, 0, 0, 706, 707, 5, 103, 0, 0, 707, 20, 1, 0, 0, 0, 708, 709, 5, 97, 0, 0, 709, 710, 5, 103, 0, 0, 710, 711, 5, 103, 0, 0, 711, 712, 5, 114, 0, 0, 712, 713, 5, 101, 0, 0, 713, 714, 5, 115, 0, 0, 714, 715, 5, 115, 0, 0, 715, 716, 5, 105, 0, 0, 716, 717, 5, 118, 0, 0, 717, 718, 5, 101, 0, 0, 718, 719, 5, 105, 0, 0, 719, 720, 5, 110, 0, 0, 720, 721, 5, 108, 0, 0, 721, 722, 5, 105, 0, 0, 722, 723, 5, 110, 0, 0, 723, 724, 5, 105, 0, 0, 724, 725, 5, 110, 0, 0, 725, 726, 5, 103, 0, 0, 726, 22, 1, 0, 0, 0, 727, 728, 5, 110, 0, 0, 728, 729, 5, 111, 0, 0, 729, 730, 5, 111, 0, 0, 730, 731, 5, 112, 0, 0, 731, 732, 5, 116, 0, 0, 732, 733, 5, 105, 0, 0, 733, 734, 5, 109, 0, 0, 734, 735, 5, 105, 0, 0, 735, 736, 5, 122, 0, 0, 736, 737, 5, 97, 0, 0, 737, 738, 5, 116, 0, 0, 738, 739, 5, 105, 0, 0, 739, 740, 5, 111, 0, 0, 740, 741, 5, 110, 0, 0, 741, 24, 1, 0, 0, 0, 742, 743, 5, 97, 0, 0, 743, 744, 5, 103, 0, 0, 744, 745, 5, 103, 0, 0, 745, 746, 5, 114, 0, 0, 746, 747, 5, 101, 0, 0, 747, 748, 5, 115, 0, 0, 748, 749, 5, 115, 0, 0, 749, 750, 5, 105, 0, 0, 750, 751, 5, 118, 0, 0, 751, 752, 5, 101, 0, 0, 752, 753, 5, 111, 0, 0, 753, 754, 5, 112, 0, 0, 754, 755, 5, 116, 0, 0, 755, 756, 5, 105, 0, 0, 756, 757, 5, 109, 0, 0, 757, 758, 5, 105, 0, 0, 758, 759, 5, 122, 0, 0, 759, 760, 5, 97, 0, 0, 760, 761, 5, 116, 0, 0, 761, 762, 5, 105, 0, 0, 762, 763, 5, 111, 0, 0, 763, 764, 5, 110, 0, 0, 764, 26, 1, 0, 0, 0, 765, 766, 5, 97, 0, 0, 766, 767, 5, 115, 0, 0, 767, 768, 5, 121, 0, 0, 768, 769, 5, 110, 0, 0, 769, 770, 5, 99, 0, 0, 770, 28, 1, 0, 0, 0, 771, 772, 5, 101, 0, 0, 772, 773, 5, 120, 0, 0, 773, 774, 5, 116, 0, 0, 774, 775, 5, 101, 0, 0, 775, 776, 5, 110, 0, 0, 776, 777, 5, 100, 0, 0, 777, 778, 5, 101, 0, 0, 778, 779, 5, 100, 0, 0, 779, 30, 1, 0, 0, 0, 780, 781, 5, 123, 0, 0, 781, 32, 1, 0, 0, 0, 782, 783, 5, 125, 0, 0, 783, 34, 1, 0, 0, 0, 784, 785, 5, 46, 0, 0, 785, 786, 5, 115, 0, 0, 786, 787, 5, 117, 0, 0, 787, 788, 5, 98, 0, 0, 788, 789, 5, 115, 0, 0, 789, 790, 5, 121, 0, 0, 790, 791, 5, 115, 0, 0, 791, 792, 5, 116, 0, 0, 792, 793, 5, 101, 0, 0, 793, 794, 5, 109, 0, 0, 794, 36, 1, 0, 0, 0, 795, 796, 5, 46, 0, 0, 796, 797, 5, 99, 0, 0, 797, 798, 5, 111, 0, 0, 798, 799, 5, 114, 0, 0, 799, 800, 5, 102, 0, 0, 800, 801, 5, 108, 0, 0, 801, 802, 5, 97, 0, 0, 802, 803, 5, 103, 0, 0, 803, 804, 5, 115, 0, 0, 804, 38, 1, 0, 0, 0, 805, 806, 5, 46, 0, 0, 806, 807, 5, 102, 0, 0, 807, 808, 5, 105, 0, 0, 808, 809, 5, 108, 0, 0, 809, 810, 5, 101, 0, 0, 810, 40, 1, 0, 0, 0, 811, 812, 5, 97, 0, 0, 812, 813, 5, 108, 0, 0, 813, 814, 5, 105, 0, 0, 814, 815, 5, 103, 0, 0, 815, 816, 5, 110, 0, 0, 816, 817, 5, 109, 0, 0, 817, 818, 5, 101, 0, 0, 818, 819, 5, 110, 0, 0, 819, 820, 5, 116, 0, 0, 820, 42, 1, 0, 0, 0, 821, 822, 5, 46, 0, 0, 822, 823, 5, 105, 0, 0, 823, 824, 5, 109, 0, 0, 824, 825, 5, 97, 0, 0, 825, 826, 5, 103, 0, 0, 826, 827, 5, 101, 0, 0, 827, 828, 5, 98, 0, 0, 828, 829, 5, 97, 0, 0, 829, 830, 5, 115, 0, 0, 830, 831, 5, 101, 0, 0, 831, 44, 1, 0, 0, 0, 832, 833, 5, 46, 0, 0, 833, 834, 5, 115, 0, 0, 834, 835, 5, 116, 0, 0, 835, 836, 5, 97, 0, 0, 836, 837, 5, 99, 0, 0, 837, 838, 5, 107, 0, 0, 838, 839, 5, 114, 0, 0, 839, 840, 5, 101, 0, 0, 840, 841, 5, 115, 0, 0, 841, 842, 5, 101, 0, 0, 842, 843, 5, 114, 0, 0, 843, 844, 5, 118, 0, 0, 844, 845, 5, 101, 0, 0, 845, 46, 1, 0, 0, 0, 846, 847, 5, 46, 0, 0, 847, 848, 5, 97, 0, 0, 848, 849, 5, 115, 0, 0, 849, 850, 5, 115, 0, 0, 850, 851, 5, 101, 0, 0, 851, 852, 5, 109, 0, 0, 852, 853, 5, 98, 0, 0, 853, 854, 5, 108, 0, 0, 854, 855, 5, 121, 0, 0, 855, 48, 1, 0, 0, 0, 856, 857, 5, 46, 0, 0, 857, 858, 5, 109, 0, 0, 858, 859, 5, 115, 0, 0, 859, 860, 5, 99, 0, 0, 860, 861, 5, 111, 0, 0, 861, 862, 5, 114, 0, 0, 862, 863, 5, 108, 0, 0, 863, 864, 5, 105, 0, 0, 864, 865, 5, 98, 0, 0, 865, 50, 1, 0, 0, 0, 866, 867, 5, 46, 0, 0, 867, 868, 5, 108, 0, 0, 868, 869, 5, 97, 0, 0, 869, 870, 5, 110, 0, 0, 870, 871, 5, 103, 0, 0, 871, 872, 5, 117, 0, 0, 872, 873, 5, 97, 0, 0, 873, 874, 5, 103, 0, 0, 874, 875, 5, 101, 0, 0, 875, 52, 1, 0, 0, 0, 876, 877, 5, 44, 0, 0, 877, 54, 1, 0, 0, 0, 878, 879, 5, 46, 0, 0, 879, 880, 5, 116, 0, 0, 880, 881, 5, 121, 0, 0, 881, 882, 5, 112, 0, 0, 882, 883, 5, 101, 0, 0, 883, 884, 5, 108, 0, 0, 884, 885, 5, 105, 0, 0, 885, 886, 5, 115, 0, 0, 886, 887, 5, 116, 0, 0, 887, 56, 1, 0, 0, 0, 888, 889, 5, 40, 0, 0, 889, 58, 1, 0, 0, 0, 890, 891, 5, 41, 0, 0, 891, 60, 1, 0, 0, 0, 892, 893, 5, 59, 0, 0, 893, 62, 1, 0, 0, 0, 894, 895, 5, 46, 0, 0, 895, 896, 5, 116, 0, 0, 896, 897, 5, 121, 0, 0, 897, 898, 5, 112, 0, 0, 898, 899, 5, 101, 0, 0, 899, 900, 5, 100, 0, 0, 900, 901, 5, 101, 0, 0, 901, 902, 5, 102, 0, 0, 902, 64, 1, 0, 0, 0, 903, 904, 5, 97, 0, 0, 904, 905, 5, 115, 0, 0, 905, 66, 1, 0, 0, 0, 906, 907, 5, 46, 0, 0, 907, 908, 5, 99, 0, 0, 908, 909, 5, 117, 0, 0, 909, 910, 5, 115, 0, 0, 910, 911, 5, 116, 0, 0, 911, 912, 5, 111, 0, 0, 912, 913, 5, 109, 0, 0, 913, 68, 1, 0, 0, 0, 914, 915, 5, 61, 0, 0, 915, 70, 1, 0, 0, 0, 916, 917, 5, 102, 0, 0, 917, 918, 5, 105, 0, 0, 918, 919, 5, 101, 0, 0, 919, 920, 5, 108, 0, 0, 920, 921, 5, 100, 0, 0, 921, 72, 1, 0, 0, 0, 922, 923, 5, 112, 0, 0, 923, 924, 5, 114, 0, 0, 924, 925, 5, 111, 0, 0, 925, 926, 5, 112, 0, 0, 926, 927, 5, 101, 0, 0, 927, 928, 5, 114, 0, 0, 928, 929, 5, 116, 0, 0, 929, 930, 5, 121, 0, 0, 930, 74, 1, 0, 0, 0, 931, 932, 5, 99, 0, 0, 932, 933, 5, 108, 0, 0, 933, 934, 5, 97, 0, 0, 934, 935, 5, 115, 0, 0, 935, 936, 5, 115, 0, 0, 936, 76, 1, 0, 0, 0, 937, 938, 5, 101, 0, 0, 938, 939, 5, 120, 0, 0, 939, 940, 5, 116, 0, 0, 940, 941, 5, 101, 0, 0, 941, 942, 5, 114, 0, 0, 942, 943, 5, 110, 0, 0, 943, 78, 1, 0, 0, 0, 944, 945, 5, 46, 0, 0, 945, 946, 5, 118, 0, 0, 946, 947, 5, 116, 0, 0, 947, 948, 5, 102, 0, 0, 948, 949, 5, 105, 0, 0, 949, 950, 5, 120, 0, 0, 950, 951, 5, 117, 0, 0, 951, 952, 5, 112, 0, 0, 952, 80, 1, 0, 0, 0, 953, 954, 5, 91, 0, 0, 954, 82, 1, 0, 0, 0, 955, 956, 5, 93, 0, 0, 956, 84, 1, 0, 0, 0, 957, 958, 5, 97, 0, 0, 958, 959, 5, 116, 0, 0, 959, 86, 1, 0, 0, 0, 960, 961, 5, 102, 0, 0, 961, 962, 5, 114, 0, 0, 962, 963, 5, 111, 0, 0, 963, 964, 5, 109, 0, 0, 964, 965, 5, 117, 0, 0, 965, 966, 5, 110, 0, 0, 966, 967, 5, 109, 0, 0, 967, 968, 5, 97, 0, 0, 968, 969, 5, 110, 0, 0, 969, 970, 5, 97, 0, 0, 970, 971, 5, 103, 0, 0, 971, 972, 5, 101, 0, 0, 972, 973, 5, 100, 0, 0, 973, 88, 1, 0, 0, 0, 974, 975, 5, 99, 0, 0, 975, 976, 5, 97, 0, 0, 976, 977, 5, 108, 0, 0, 977, 978, 5, 108, 0, 0, 978, 979, 5, 109, 0, 0, 979, 980, 5, 111, 0, 0, 980, 981, 5, 115, 0, 0, 981, 982, 5, 116, 0, 0, 982, 983, 5, 100, 0, 0, 983, 984, 5, 101, 0, 0, 984, 985, 5, 114, 0, 0, 985, 986, 5, 105, 0, 0, 986, 987, 5, 118, 0, 0, 987, 988, 5, 101, 0, 0, 988, 989, 5, 100, 0, 0, 989, 90, 1, 0, 0, 0, 990, 991, 5, 114, 0, 0, 991, 992, 5, 101, 0, 0, 992, 993, 5, 116, 0, 0, 993, 994, 5, 97, 0, 0, 994, 995, 5, 105, 0, 0, 995, 996, 5, 110, 0, 0, 996, 997, 5, 97, 0, 0, 997, 998, 5, 112, 0, 0, 998, 999, 5, 112, 0, 0, 999, 1000, 5, 100, 0, 0, 1000, 1001, 5, 111, 0, 0, 1001, 1002, 5, 109, 0, 0, 1002, 1003, 5, 97, 0, 0, 1003, 1004, 5, 105, 0, 0, 1004, 1005, 5, 110, 0, 0, 1005, 92, 1, 0, 0, 0, 1006, 1007, 5, 46, 0, 0, 1007, 1008, 5, 118, 0, 0, 1008, 1009, 5, 116, 0, 0, 1009, 1010, 5, 97, 0, 0, 1010, 1011, 5, 98, 0, 0, 1011, 1012, 5, 108, 0, 0, 1012, 1013, 5, 101, 0, 0, 1013, 94, 1, 0, 0, 0, 1014, 1015, 5, 46, 0, 0, 1015, 1016, 5, 110, 0, 0, 1016, 1017, 5, 97, 0, 0, 1017, 1018, 5, 109, 0, 0, 1018, 1019, 5, 101, 0, 0, 1019, 1020, 5, 115, 0, 0, 1020, 1021, 5, 112, 0, 0, 1021, 1022, 5, 97, 0, 0, 1022, 1023, 5, 99, 0, 0, 1023, 1024, 5, 101, 0, 0, 1024, 96, 1, 0, 0, 0, 1025, 1026, 5, 46, 0, 0, 1026, 1027, 5, 99, 0, 0, 1027, 1028, 5, 108, 0, 0, 1028, 1029, 5, 97, 0, 0, 1029, 1030, 5, 115, 0, 0, 1030, 1031, 5, 115, 0, 0, 1031, 98, 1, 0, 0, 0, 1032, 1033, 5, 112, 0, 0, 1033, 1034, 5, 117, 0, 0, 1034, 1035, 5, 98, 0, 0, 1035, 1036, 5, 108, 0, 0, 1036, 1037, 5, 105, 0, 0, 1037, 1038, 5, 99, 0, 0, 1038, 100, 1, 0, 0, 0, 1039, 1040, 5, 112, 0, 0, 1040, 1041, 5, 114, 0, 0, 1041, 1042, 5, 105, 0, 0, 1042, 1043, 5, 118, 0, 0, 1043, 1044, 5, 97, 0, 0, 1044, 1045, 5, 116, 0, 0, 1045, 1046, 5, 101, 0, 0, 1046, 102, 1, 0, 0, 0, 1047, 1048, 5, 115, 0, 0, 1048, 1049, 5, 101, 0, 0, 1049, 1050, 5, 97, 0, 0, 1050, 1051, 5, 108, 0, 0, 1051, 1052, 5, 101, 0, 0, 1052, 1053, 5, 100, 0, 0, 1053, 104, 1, 0, 0, 0, 1054, 1055, 5, 97, 0, 0, 1055, 1056, 5, 98, 0, 0, 1056, 1057, 5, 115, 0, 0, 1057, 1058, 5, 116, 0, 0, 1058, 1059, 5, 114, 0, 0, 1059, 1060, 5, 97, 0, 0, 1060, 1061, 5, 99, 0, 0, 1061, 1062, 5, 116, 0, 0, 1062, 106, 1, 0, 0, 0, 1063, 1064, 5, 97, 0, 0, 1064, 1065, 5, 117, 0, 0, 1065, 1066, 5, 116, 0, 0, 1066, 1067, 5, 111, 0, 0, 1067, 108, 1, 0, 0, 0, 1068, 1069, 5, 115, 0, 0, 1069, 1070, 5, 101, 0, 0, 1070, 1071, 5, 113, 0, 0, 1071, 1072, 5, 117, 0, 0, 1072, 1073, 5, 101, 0, 0, 1073, 1074, 5, 110, 0, 0, 1074, 1075, 5, 116, 0, 0, 1075, 1076, 5, 105, 0, 0, 1076, 1077, 5, 97, 0, 0, 1077, 1078, 5, 108, 0, 0, 1078, 110, 1, 0, 0, 0, 1079, 1080, 5, 117, 0, 0, 1080, 1081, 5, 110, 0, 0, 1081, 1082, 5, 105, 0, 0, 1082, 1083, 5, 99, 0, 0, 1083, 1084, 5, 111, 0, 0, 1084, 1085, 5, 100, 0, 0, 1085, 1086, 5, 101, 0, 0, 1086, 112, 1, 0, 0, 0, 1087, 1088, 5, 97, 0, 0, 1088, 1089, 5, 117, 0, 0, 1089, 1090, 5, 116, 0, 0, 1090, 1091, 5, 111, 0, 0, 1091, 1092, 5, 99, 0, 0, 1092, 1093, 5, 104, 0, 0, 1093, 1094, 5, 97, 0, 0, 1094, 1095, 5, 114, 0, 0, 1095, 114, 1, 0, 0, 0, 1096, 1097, 5, 105, 0, 0, 1097, 1098, 5, 109, 0, 0, 1098, 1099, 5, 112, 0, 0, 1099, 1100, 5, 111, 0, 0, 1100, 1101, 5, 114, 0, 0, 1101, 1102, 5, 116, 0, 0, 1102, 116, 1, 0, 0, 0, 1103, 1104, 5, 115, 0, 0, 1104, 1105, 5, 101, 0, 0, 1105, 1106, 5, 114, 0, 0, 1106, 1107, 5, 105, 0, 0, 1107, 1108, 5, 97, 0, 0, 1108, 1109, 5, 108, 0, 0, 1109, 1110, 5, 105, 0, 0, 1110, 1111, 5, 122, 0, 0, 1111, 1112, 5, 97, 0, 0, 1112, 1113, 5, 98, 0, 0, 1113, 1114, 5, 108, 0, 0, 1114, 1115, 5, 101, 0, 0, 1115, 118, 1, 0, 0, 0, 1116, 1117, 5, 119, 0, 0, 1117, 1118, 5, 105, 0, 0, 1118, 1119, 5, 110, 0, 0, 1119, 1120, 5, 100, 0, 0, 1120, 1121, 5, 111, 0, 0, 1121, 1122, 5, 119, 0, 0, 1122, 1123, 5, 115, 0, 0, 1123, 1124, 5, 114, 0, 0, 1124, 1125, 5, 117, 0, 0, 1125, 1126, 5, 110, 0, 0, 1126, 1127, 5, 116, 0, 0, 1127, 1128, 5, 105, 0, 0, 1128, 1129, 5, 109, 0, 0, 1129, 1130, 5, 101, 0, 0, 1130, 120, 1, 0, 0, 0, 1131, 1132, 5, 110, 0, 0, 1132, 1133, 5, 101, 0, 0, 1133, 1134, 5, 115, 0, 0, 1134, 1135, 5, 116, 0, 0, 1135, 1136, 5, 101, 0, 0, 1136, 1137, 5, 100, 0, 0, 1137, 122, 1, 0, 0, 0, 1138, 1139, 5, 102, 0, 0, 1139, 1140, 5, 97, 0, 0, 1140, 1141, 5, 109, 0, 0, 1141, 1142, 5, 105, 0, 0, 1142, 1143, 5, 108, 0, 0, 1143, 1144, 5, 121, 0, 0, 1144, 124, 1, 0, 0, 0, 1145, 1146, 5, 97, 0, 0, 1146, 1147, 5, 115, 0, 0, 1147, 1148, 5, 115, 0, 0, 1148, 1149, 5, 101, 0, 0, 1149, 1150, 5, 109, 0, 0, 1150, 1151, 5, 98, 0, 0, 1151, 1152, 5, 108, 0, 0, 1152, 1153, 5, 121, 0, 0, 1153, 126, 1, 0, 0, 0, 1154, 1155, 5, 102, 0, 0, 1155, 1156, 5, 97, 0, 0, 1156, 1157, 5, 109, 0, 0, 1157, 1158, 5, 97, 0, 0, 1158, 1159, 5, 110, 0, 0, 1159, 1160, 5, 100, 0, 0, 1160, 1161, 5, 97, 0, 0, 1161, 1162, 5, 115, 0, 0, 1162, 1163, 5, 115, 0, 0, 1163, 1164, 5, 101, 0, 0, 1164, 1165, 5, 109, 0, 0, 1165, 128, 1, 0, 0, 0, 1166, 1167, 5, 102, 0, 0, 1167, 1168, 5, 97, 0, 0, 1168, 1169, 5, 109, 0, 0, 1169, 1170, 5, 111, 0, 0, 1170, 1171, 5, 114, 0, 0, 1171, 1172, 5, 97, 0, 0, 1172, 1173, 5, 115, 0, 0, 1173, 1174, 5, 115, 0, 0, 1174, 1175, 5, 101, 0, 0, 1175, 1176, 5, 109, 0, 0, 1176, 130, 1, 0, 0, 0, 1177, 1178, 5, 98, 0, 0, 1178, 1179, 5, 101, 0, 0, 1179, 1180, 5, 102, 0, 0, 1180, 1181, 5, 111, 0, 0, 1181, 1182, 5, 114, 0, 0, 1182, 1183, 5, 101, 0, 0, 1183, 1184, 5, 102, 0, 0, 1184, 1185, 5, 105, 0, 0, 1185, 1186, 5, 101, 0, 0, 1186, 1187, 5, 108, 0, 0, 1187, 1188, 5, 100, 0, 0, 1188, 1189, 5, 105, 0, 0, 1189, 1190, 5, 110, 0, 0, 1190, 1191, 5, 105, 0, 0, 1191, 1192, 5, 116, 0, 0, 1192, 132, 1, 0, 0, 0, 1193, 1194, 5, 115, 0, 0, 1194, 1195, 5, 112, 0, 0, 1195, 1196, 5, 101, 0, 0, 1196, 1197, 5, 99, 0, 0, 1197, 1198, 5, 105, 0, 0, 1198, 1199, 5, 97, 0, 0, 1199, 1200, 5, 108, 0, 0, 1200, 1201, 5, 110, 0, 0, 1201, 1202, 5, 97, 0, 0, 1202, 1203, 5, 109, 0, 0, 1203, 1204, 5, 101, 0, 0, 1204, 134, 1, 0, 0, 0, 1205, 1206, 5, 114, 0, 0, 1206, 1207, 5, 116, 0, 0, 1207, 1208, 5, 115, 0, 0, 1208, 1209, 5, 112, 0, 0, 1209, 1210, 5, 101, 0, 0, 1210, 1211, 5, 99, 0, 0, 1211, 1212, 5, 105, 0, 0, 1212, 1213, 5, 97, 0, 0, 1213, 1214, 5, 108, 0, 0, 1214, 1215, 5, 110, 0, 0, 1215, 1216, 5, 97, 0, 0, 1216, 1217, 5, 109, 0, 0, 1217, 1218, 5, 101, 0, 0, 1218, 136, 1, 0, 0, 0, 1219, 1220, 5, 102, 0, 0, 1220, 1221, 5, 108, 0, 0, 1221, 1222, 5, 97, 0, 0, 1222, 1223, 5, 103, 0, 0, 1223, 1224, 5, 115, 0, 0, 1224, 138, 1, 0, 0, 0, 1225, 1226, 5, 101, 0, 0, 1226, 1227, 5, 120, 0, 0, 1227, 1228, 5, 116, 0, 0, 1228, 1229, 5, 101, 0, 0, 1229, 1230, 5, 110, 0, 0, 1230, 1231, 5, 100, 0, 0, 1231, 1232, 5, 115, 0, 0, 1232, 140, 1, 0, 0, 0, 1233, 1234, 5, 105, 0, 0, 1234, 1235, 5, 109, 0, 0, 1235, 1236, 5, 112, 0, 0, 1236, 1237, 5, 108, 0, 0, 1237, 1238, 5, 101, 0, 0, 1238, 1239, 5, 109, 0, 0, 1239, 1240, 5, 101, 0, 0, 1240, 1241, 5, 110, 0, 0, 1241, 1242, 5, 116, 0, 0, 1242, 1243, 5, 115, 0, 0, 1243, 142, 1, 0, 0, 0, 1244, 1245, 5, 46, 0, 0, 1245, 1246, 5, 108, 0, 0, 1246, 1247, 5, 105, 0, 0, 1247, 1248, 5, 110, 0, 0, 1248, 1249, 5, 101, 0, 0, 1249, 144, 1, 0, 0, 0, 1250, 1251, 5, 35, 0, 0, 1251, 1252, 5, 108, 0, 0, 1252, 1253, 5, 105, 0, 0, 1253, 1254, 5, 110, 0, 0, 1254, 1255, 5, 101, 0, 0, 1255, 146, 1, 0, 0, 0, 1256, 1257, 5, 58, 0, 0, 1257, 148, 1, 0, 0, 0, 1258, 1259, 5, 110, 0, 0, 1259, 1260, 5, 111, 0, 0, 1260, 1261, 5, 109, 0, 0, 1261, 1262, 5, 101, 0, 0, 1262, 1263, 5, 116, 0, 0, 1263, 1264, 5, 97, 0, 0, 1264, 1265, 5, 100, 0, 0, 1265, 1266, 5, 97, 0, 0, 1266, 1267, 5, 116, 0, 0, 1267, 1268, 5, 97, 0, 0, 1268, 150, 1, 0, 0, 0, 1269, 1270, 5, 114, 0, 0, 1270, 1271, 5, 101, 0, 0, 1271, 1272, 5, 116, 0, 0, 1272, 1273, 5, 97, 0, 0, 1273, 1274, 5, 114, 0, 0, 1274, 1275, 5, 103, 0, 0, 1275, 1276, 5, 101, 0, 0, 1276, 1277, 5, 116, 0, 0, 1277, 1278, 5, 97, 0, 0, 1278, 1279, 5, 98, 0, 0, 1279, 1280, 5, 108, 0, 0, 1280, 1281, 5, 101, 0, 0, 1281, 152, 1, 0, 0, 0, 1282, 1283, 5, 110, 0, 0, 1283, 1284, 5, 111, 0, 0, 1284, 1285, 5, 112, 0, 0, 1285, 1286, 5, 108, 0, 0, 1286, 1287, 5, 97, 0, 0, 1287, 1288, 5, 116, 0, 0, 1288, 1289, 5, 102, 0, 0, 1289, 1290, 5, 111, 0, 0, 1290, 1291, 5, 114, 0, 0, 1291, 1292, 5, 109, 0, 0, 1292, 154, 1, 0, 0, 0, 1293, 1294, 5, 108, 0, 0, 1294, 1295, 5, 101, 0, 0, 1295, 1296, 5, 103, 0, 0, 1296, 1297, 5, 97, 0, 0, 1297, 1298, 5, 99, 0, 0, 1298, 1299, 5, 121, 0, 0, 1299, 1300, 5, 32, 0, 0, 1300, 1301, 5, 108, 0, 0, 1301, 1302, 5, 105, 0, 0, 1302, 1303, 5, 98, 0, 0, 1303, 1304, 5, 114, 0, 0, 1304, 1305, 5, 97, 0, 0, 1305, 1306, 5, 114, 0, 0, 1306, 1307, 5, 121, 0, 0, 1307, 156, 1, 0, 0, 0, 1308, 1309, 5, 120, 0, 0, 1309, 1310, 5, 56, 0, 0, 1310, 1311, 5, 54, 0, 0, 1311, 158, 1, 0, 0, 0, 1312, 1313, 5, 97, 0, 0, 1313, 1314, 5, 109, 0, 0, 1314, 1315, 5, 100, 0, 0, 1315, 1316, 5, 54, 0, 0, 1316, 1317, 5, 52, 0, 0, 1317, 160, 1, 0, 0, 0, 1318, 1319, 5, 97, 0, 0, 1319, 1320, 5, 114, 0, 0, 1320, 1321, 5, 109, 0, 0, 1321, 162, 1, 0, 0, 0, 1322, 1323, 5, 97, 0, 0, 1323, 1324, 5, 114, 0, 0, 1324, 1325, 5, 109, 0, 0, 1325, 1326, 5, 54, 0, 0, 1326, 1327, 5, 52, 0, 0, 1327, 164, 1, 0, 0, 0, 1328, 1329, 5, 98, 0, 0, 1329, 1330, 5, 121, 0, 0, 1330, 1331, 5, 116, 0, 0, 1331, 1332, 5, 101, 0, 0, 1332, 1333, 5, 97, 0, 0, 1333, 1334, 5, 114, 0, 0, 1334, 1335, 5, 114, 0, 0, 1335, 1336, 5, 97, 0, 0, 1336, 1337, 5, 121, 0, 0, 1337, 166, 1, 0, 0, 0, 1338, 1339, 5, 60, 0, 0, 1339, 168, 1, 0, 0, 0, 1340, 1341, 5, 62, 0, 0, 1341, 170, 1, 0, 0, 0, 1342, 1343, 5, 40, 0, 0, 1343, 1344, 5, 41, 0, 0, 1344, 172, 1, 0, 0, 0, 1345, 1346, 5, 47, 0, 0, 1346, 174, 1, 0, 0, 0, 1347, 1348, 5, 97, 0, 0, 1348, 1349, 5, 108, 0, 0, 1349, 1350, 5, 103, 0, 0, 1350, 1351, 5, 111, 0, 0, 1351, 1352, 5, 114, 0, 0, 1352, 1353, 5, 105, 0, 0, 1353, 1354, 5, 116, 0, 0, 1354, 1355, 5, 104, 0, 0, 1355, 1356, 5, 109, 0, 0, 1356, 176, 1, 0, 0, 0, 1357, 1358, 5, 105, 0, 0, 1358, 1359, 5, 105, 0, 0, 1359, 1360, 5, 100, 0, 0, 1360, 1361, 5, 112, 0, 0, 1361, 1362, 5, 97, 0, 0, 1362, 1363, 5, 114, 0, 0, 1363, 1364, 5, 97, 0, 0, 1364, 1365, 5, 109, 0, 0, 1365, 178, 1, 0, 0, 0, 1366, 1367, 5, 112, 0, 0, 1367, 1368, 5, 105, 0, 0, 1368, 1369, 5, 110, 0, 0, 1369, 1370, 5, 110, 0, 0, 1370, 1371, 5, 101, 0, 0, 1371, 1372, 5, 100, 0, 0, 1372, 180, 1, 0, 0, 0, 1373, 1374, 5, 109, 0, 0, 1374, 1375, 5, 111, 0, 0, 1375, 1376, 5, 100, 0, 0, 1376, 1377, 5, 114, 0, 0, 1377, 1378, 5, 101, 0, 0, 1378, 1379, 5, 113, 0, 0, 1379, 182, 1, 0, 0, 0, 1380, 1381, 5, 109, 0, 0, 1381, 1382, 5, 111, 0, 0, 1382, 1383, 5, 100, 0, 0, 1383, 1384, 5, 111, 0, 0, 1384, 1385, 5, 112, 0, 0, 1385, 1386, 5, 116, 0, 0, 1386, 184, 1, 0, 0, 0, 1387, 1388, 5, 116, 0, 0, 1388, 1389, 5, 114, 0, 0, 1389, 1390, 5, 117, 0, 0, 1390, 1391, 5, 101, 0, 0, 1391, 186, 1, 0, 0, 0, 1392, 1393, 5, 102, 0, 0, 1393, 1394, 5, 97, 0, 0, 1394, 1395, 5, 108, 0, 0, 1395, 1396, 5, 115, 0, 0, 1396, 1397, 5, 101, 0, 0, 1397, 188, 1, 0, 0, 0, 1398, 1399, 5, 114, 0, 0, 1399, 1400, 5, 101, 0, 0, 1400, 1401, 5, 113, 0, 0, 1401, 1402, 5, 117, 0, 0, 1402, 1403, 5, 101, 0, 0, 1403, 1404, 5, 115, 0, 0, 1404, 1405, 5, 116, 0, 0, 1405, 190, 1, 0, 0, 0, 1406, 1407, 5, 100, 0, 0, 1407, 1408, 5, 101, 0, 0, 1408, 1409, 5, 109, 0, 0, 1409, 1410, 5, 97, 0, 0, 1410, 1411, 5, 110, 0, 0, 1411, 1412, 5, 100, 0, 0, 1412, 192, 1, 0, 0, 0, 1413, 1414, 5, 97, 0, 0, 1414, 1415, 5, 115, 0, 0, 1415, 1416, 5, 115, 0, 0, 1416, 1417, 5, 101, 0, 0, 1417, 1418, 5, 114, 0, 0, 1418, 1419, 5, 116, 0, 0, 1419, 194, 1, 0, 0, 0, 1420, 1421, 5, 100, 0, 0, 1421, 1422, 5, 101, 0, 0, 1422, 1423, 5, 110, 0, 0, 1423, 1424, 5, 121, 0, 0, 1424, 196, 1, 0, 0, 0, 1425, 1426, 5, 112, 0, 0, 1426, 1427, 5, 101, 0, 0, 1427, 1428, 5, 114, 0, 0, 1428, 1429, 5, 109, 0, 0, 1429, 1430, 5, 105, 0, 0, 1430, 1431, 5, 116, 0, 0, 1431, 1432, 5, 111, 0, 0, 1432, 1433, 5, 110, 0, 0, 1433, 1434, 5, 108, 0, 0, 1434, 1435, 5, 121, 0, 0, 1435, 198, 1, 0, 0, 0, 1436, 1437, 5, 108, 0, 0, 1437, 1438, 5, 105, 0, 0, 1438, 1439, 5, 110, 0, 0, 1439, 1440, 5, 107, 0, 0, 1440, 1441, 5, 99, 0, 0, 1441, 1442, 5, 104, 0, 0, 1442, 1443, 5, 101, 0, 0, 1443, 1444, 5, 99, 0, 0, 1444, 1445, 5, 107, 0, 0, 1445, 200, 1, 0, 0, 0, 1446, 1447, 5, 105, 0, 0, 1447, 1448, 5, 110, 0, 0, 1448, 1449, 5, 104, 0, 0, 1449, 1450, 5, 101, 0, 0, 1450, 1451, 5, 114, 0, 0, 1451, 1452, 5, 105, 0, 0, 1452, 1453, 5, 116, 0, 0, 1453, 1454, 5, 99, 0, 0, 1454, 1455, 5, 104, 0, 0, 1455, 1456, 5, 101, 0, 0, 1456, 1457, 5, 99, 0, 0, 1457, 1458, 5, 107, 0, 0, 1458, 202, 1, 0, 0, 0, 1459, 1460, 5, 114, 0, 0, 1460, 1461, 5, 101, 0, 0, 1461, 1462, 5, 113, 0, 0, 1462, 1463, 5, 109, 0, 0, 1463, 1464, 5, 105, 0, 0, 1464, 1465, 5, 110, 0, 0, 1465, 204, 1, 0, 0, 0, 1466, 1467, 5, 114, 0, 0, 1467, 1468, 5, 101, 0, 0, 1468, 1469, 5, 113, 0, 0, 1469, 1470, 5, 111, 0, 0, 1470, 1471, 5, 112, 0, 0, 1471, 1472, 5, 116, 0, 0, 1472, 206, 1, 0, 0, 0, 1473, 1474, 5, 114, 0, 0, 1474, 1475, 5, 101, 0, 0, 1475, 1476, 5, 113, 0, 0, 1476, 1477, 5, 114, 0, 0, 1477, 1478, 5, 101, 0, 0, 1478, 1479, 5, 102, 0, 0, 1479, 1480, 5, 117, 0, 0, 1480, 1481, 5, 115, 0, 0, 1481, 1482, 5, 101, 0, 0, 1482, 208, 1, 0, 0, 0, 1483, 1484, 5, 112, 0, 0, 1484, 1485, 5, 114, 0, 0, 1485, 1486, 5, 101, 0, 0, 1486, 1487, 5, 106, 0, 0, 1487, 1488, 5, 105, 0, 0, 1488, 1489, 5, 116, 0, 0, 1489, 1490, 5, 103, 0, 0, 1490, 1491, 5, 114, 0, 0, 1491, 1492, 5, 97, 0, 0, 1492, 1493, 5, 110, 0, 0, 1493, 1494, 5, 116, 0, 0, 1494, 210, 1, 0, 0, 0, 1495, 1496, 5, 112, 0, 0, 1496, 1497, 5, 114, 0, 0, 1497, 1498, 5, 101, 0, 0, 1498, 1499, 5, 106, 0, 0, 1499, 1500, 5, 105, 0, 0, 1500, 1501, 5, 116, 0, 0, 1501, 1502, 5, 100, 0, 0, 1502, 1503, 5, 101, 0, 0, 1503, 1504, 5, 110, 0, 0, 1504, 1505, 5, 121, 0, 0, 1505, 212, 1, 0, 0, 0, 1506, 1507, 5, 110, 0, 0, 1507, 1508, 5, 111, 0, 0, 1508, 1509, 5, 110, 0, 0, 1509, 1510, 5, 99, 0, 0, 1510, 1511, 5, 97, 0, 0, 1511, 1512, 5, 115, 0, 0, 1512, 1513, 5, 100, 0, 0, 1513, 1514, 5, 101, 0, 0, 1514, 1515, 5, 109, 0, 0, 1515, 1516, 5, 97, 0, 0, 1516, 1517, 5, 110, 0, 0, 1517, 1518, 5, 100, 0, 0, 1518, 214, 1, 0, 0, 0, 1519, 1520, 5, 110, 0, 0, 1520, 1521, 5, 111, 0, 0, 1521, 1522, 5, 110, 0, 0, 1522, 1523, 5, 99, 0, 0, 1523, 1524, 5, 97, 0, 0, 1524, 1525, 5, 115, 0, 0, 1525, 1526, 5, 108, 0, 0, 1526, 1527, 5, 105, 0, 0, 1527, 1528, 5, 110, 0, 0, 1528, 1529, 5, 107, 0, 0, 1529, 1530, 5, 100, 0, 0, 1530, 1531, 5, 101, 0, 0, 1531, 1532, 5, 109, 0, 0, 1532, 1533, 5, 97, 0, 0, 1533, 1534, 5, 110, 0, 0, 1534, 1535, 5, 100, 0, 0, 1535, 216, 1, 0, 0, 0, 1536, 1537, 5, 110, 0, 0, 1537, 1538, 5, 111, 0, 0, 1538, 1539, 5, 110, 0, 0, 1539, 1540, 5, 99, 0, 0, 1540, 1541, 5, 97, 0, 0, 1541, 1542, 5, 115, 0, 0, 1542, 1543, 5, 105, 0, 0, 1543, 1544, 5, 110, 0, 0, 1544, 1545, 5, 104, 0, 0, 1545, 1546, 5, 101, 0, 0, 1546, 1547, 5, 114, 0, 0, 1547, 1548, 5, 105, 0, 0, 1548, 1549, 5, 116, 0, 0, 1549, 1550, 5, 97, 0, 0, 1550, 1551, 5, 110, 0, 0, 1551, 1552, 5, 99, 0, 0, 1552, 1553, 5, 101, 0, 0, 1553, 218, 1, 0, 0, 0, 1554, 1555, 5, 99, 0, 0, 1555, 1556, 5, 97, 0, 0, 1556, 1557, 5, 108, 0, 0, 1557, 1558, 5, 108, 0, 0, 1558, 1559, 5, 99, 0, 0, 1559, 1560, 5, 111, 0, 0, 1560, 1561, 5, 110, 0, 0, 1561, 1562, 5, 118, 0, 0, 1562, 220, 1, 0, 0, 0, 1563, 1564, 5, 109, 0, 0, 1564, 1565, 5, 100, 0, 0, 1565, 1566, 5, 116, 0, 0, 1566, 1567, 5, 111, 0, 0, 1567, 1568, 5, 107, 0, 0, 1568, 1569, 5, 101, 0, 0, 1569, 1570, 5, 110, 0, 0, 1570, 222, 1, 0, 0, 0, 1571, 1572, 5, 45, 0, 0, 1572, 224, 1, 0, 0, 0, 1573, 1574, 5, 98, 0, 0, 1574, 1575, 5, 121, 0, 0, 1575, 1576, 5, 114, 0, 0, 1576, 1577, 5, 101, 0, 0, 1577, 1578, 5, 102, 0, 0, 1578, 1579, 5, 108, 0, 0, 1579, 1580, 5, 105, 0, 0, 1580, 1581, 5, 107, 0, 0, 1581, 1582, 5, 101, 0, 0, 1582, 226, 1, 0, 0, 0, 1583, 1584, 5, 46, 0, 0, 1584, 1585, 5, 99, 0, 0, 1585, 1586, 5, 116, 0, 0, 1586, 1587, 5, 111, 0, 0, 1587, 1588, 5, 114, 0, 0, 1588, 228, 1, 0, 0, 0, 1589, 1590, 5, 46, 0, 0, 1590, 1591, 5, 115, 0, 0, 1591, 1592, 5, 105, 0, 0, 1592, 1593, 5, 122, 0, 0, 1593, 1594, 5, 101, 0, 0, 1594, 230, 1, 0, 0, 0, 1595, 1596, 5, 46, 0, 0, 1596, 1597, 5, 112, 0, 0, 1597, 1598, 5, 97, 0, 0, 1598, 1599, 5, 99, 0, 0, 1599, 1600, 5, 107, 0, 0, 1600, 232, 1, 0, 0, 0, 1601, 1602, 5, 119, 0, 0, 1602, 1603, 5, 105, 0, 0, 1603, 1604, 5, 116, 0, 0, 1604, 1605, 5, 104, 0, 0, 1605, 234, 1, 0, 0, 0, 1606, 1607, 5, 46, 0, 0, 1607, 1608, 5, 105, 0, 0, 1608, 1609, 5, 110, 0, 0, 1609, 1610, 5, 116, 0, 0, 1610, 1611, 5, 101, 0, 0, 1611, 1612, 5, 114, 0, 0, 1612, 1613, 5, 102, 0, 0, 1613, 1614, 5, 97, 0, 0, 1614, 1615, 5, 99, 0, 0, 1615, 1616, 5, 101, 0, 0, 1616, 1617, 5, 105, 0, 0, 1617, 1618, 5, 109, 0, 0, 1618, 1619, 5, 112, 0, 0, 1619, 1620, 5, 108, 0, 0, 1620, 236, 1, 0, 0, 0, 1621, 1622, 5, 46, 0, 0, 1622, 1623, 5, 102, 0, 0, 1623, 1624, 5, 105, 0, 0, 1624, 1625, 5, 101, 0, 0, 1625, 1626, 5, 108, 0, 0, 1626, 1627, 5, 100, 0, 0, 1627, 238, 1, 0, 0, 0, 1628, 1629, 5, 109, 0, 0, 1629, 1630, 5, 97, 0, 0, 1630, 1631, 5, 114, 0, 0, 1631, 1632, 5, 115, 0, 0, 1632, 1633, 5, 104, 0, 0, 1633, 1634, 5, 97, 0, 0, 1634, 1635, 5, 108, 0, 0, 1635, 240, 1, 0, 0, 0, 1636, 1637, 5, 115, 0, 0, 1637, 1638, 5, 116, 0, 0, 1638, 1639, 5, 97, 0, 0, 1639, 1640, 5, 116, 0, 0, 1640, 1641, 5, 105, 0, 0, 1641, 1642, 5, 99, 0, 0, 1642, 242, 1, 0, 0, 0, 1643, 1644, 5, 105, 0, 0, 1644, 1645, 5, 110, 0, 0, 1645, 1646, 5, 105, 0, 0, 1646, 1647, 5, 116, 0, 0, 1647, 1648, 5, 111, 0, 0, 1648, 1649, 5, 110, 0, 0, 1649, 1650, 5, 108, 0, 0, 1650, 1651, 5, 121, 0, 0, 1651, 244, 1, 0, 0, 0, 1652, 1653, 5, 112, 0, 0, 1653, 1654, 5, 114, 0, 0, 1654, 1655, 5, 105, 0, 0, 1655, 1656, 5, 118, 0, 0, 1656, 1657, 5, 97, 0, 0, 1657, 1658, 5, 116, 0, 0, 1658, 1659, 5, 101, 0, 0, 1659, 1660, 5, 115, 0, 0, 1660, 1661, 5, 99, 0, 0, 1661, 1662, 5, 111, 0, 0, 1662, 1663, 5, 112, 0, 0, 1663, 1664, 5, 101, 0, 0, 1664, 246, 1, 0, 0, 0, 1665, 1666, 5, 108, 0, 0, 1666, 1667, 5, 105, 0, 0, 1667, 1668, 5, 116, 0, 0, 1668, 1669, 5, 101, 0, 0, 1669, 1670, 5, 114, 0, 0, 1670, 1671, 5, 97, 0, 0, 1671, 1672, 5, 108, 0, 0, 1672, 248, 1, 0, 0, 0, 1673, 1674, 5, 110, 0, 0, 1674, 1675, 5, 111, 0, 0, 1675, 1676, 5, 116, 0, 0, 1676, 1677, 5, 115, 0, 0, 1677, 1678, 5, 101, 0, 0, 1678, 1679, 5, 114, 0, 0, 1679, 1680, 5, 105, 0, 0, 1680, 1681, 5, 97, 0, 0, 1681, 1682, 5, 108, 0, 0, 1682, 1683, 5, 105, 0, 0, 1683, 1684, 5, 122, 0, 0, 1684, 1685, 5, 101, 0, 0, 1685, 1686, 5, 100, 0, 0, 1686, 250, 1, 0, 0, 0, 1687, 1688, 5, 46, 0, 0, 1688, 1689, 5, 101, 0, 0, 1689, 1690, 5, 118, 0, 0, 1690, 1691, 5, 101, 0, 0, 1691, 1692, 5, 110, 0, 0, 1692, 1693, 5, 116, 0, 0, 1693, 252, 1, 0, 0, 0, 1694, 1695, 5, 46, 0, 0, 1695, 1696, 5, 97, 0, 0, 1696, 1697, 5, 100, 0, 0, 1697, 1698, 5, 100, 0, 0, 1698, 1699, 5, 111, 0, 0, 1699, 1700, 5, 110, 0, 0, 1700, 254, 1, 0, 0, 0, 1701, 1702, 5, 46, 0, 0, 1702, 1703, 5, 114, 0, 0, 1703, 1704, 5, 101, 0, 0, 1704, 1705, 5, 109, 0, 0, 1705, 1706, 5, 111, 0, 0, 1706, 1707, 5, 118, 0, 0, 1707, 1708, 5, 101, 0, 0, 1708, 1709, 5, 111, 0, 0, 1709, 1710, 5, 110, 0, 0, 1710, 256, 1, 0, 0, 0, 1711, 1712, 5, 46, 0, 0, 1712, 1713, 5, 102, 0, 0, 1713, 1714, 5, 105, 0, 0, 1714, 1715, 5, 114, 0, 0, 1715, 1716, 5, 101, 0, 0, 1716, 258, 1, 0, 0, 0, 1717, 1718, 5, 46, 0, 0, 1718, 1719, 5, 111, 0, 0, 1719, 1720, 5, 116, 0, 0, 1720, 1721, 5, 104, 0, 0, 1721, 1722, 5, 101, 0, 0, 1722, 1723, 5, 114, 0, 0, 1723, 260, 1, 0, 0, 0, 1724, 1725, 5, 46, 0, 0, 1725, 1726, 5, 112, 0, 0, 1726, 1727, 5, 114, 0, 0, 1727, 1728, 5, 111, 0, 0, 1728, 1729, 5, 112, 0, 0, 1729, 1730, 5, 101, 0, 0, 1730, 1731, 5, 114, 0, 0, 1731, 1732, 5, 116, 0, 0, 1732, 1733, 5, 121, 0, 0, 1733, 262, 1, 0, 0, 0, 1734, 1735, 5, 46, 0, 0, 1735, 1736, 5, 115, 0, 0, 1736, 1737, 5, 101, 0, 0, 1737, 1738, 5, 116, 0, 0, 1738, 264, 1, 0, 0, 0, 1739, 1740, 5, 46, 0, 0, 1740, 1741, 5, 103, 0, 0, 1741, 1742, 5, 101, 0, 0, 1742, 1743, 5, 116, 0, 0, 1743, 266, 1, 0, 0, 0, 1744, 1745, 5, 105, 0, 0, 1745, 1746, 5, 110, 0, 0, 1746, 268, 1, 0, 0, 0, 1747, 1748, 5, 111, 0, 0, 1748, 1749, 5, 117, 0, 0, 1749, 1750, 5, 116, 0, 0, 1750, 270, 1, 0, 0, 0, 1751, 1752, 5, 111, 0, 0, 1752, 1753, 5, 112, 0, 0, 1753, 1754, 5, 116, 0, 0, 1754, 272, 1, 0, 0, 0, 1755, 1756, 5, 46, 0, 0, 1756, 1757, 5, 109, 0, 0, 1757, 1758, 5, 101, 0, 0, 1758, 1759, 5, 116, 0, 0, 1759, 1760, 5, 104, 0, 0, 1760, 1761, 5, 111, 0, 0, 1761, 1762, 5, 100, 0, 0, 1762, 274, 1, 0, 0, 0, 1763, 1764, 5, 102, 0, 0, 1764, 1765, 5, 105, 0, 0, 1765, 1766, 5, 110, 0, 0, 1766, 1767, 5, 97, 0, 0, 1767, 1768, 5, 108, 0, 0, 1768, 276, 1, 0, 0, 0, 1769, 1770, 5, 118, 0, 0, 1770, 1771, 5, 105, 0, 0, 1771, 1772, 5, 114, 0, 0, 1772, 1773, 5, 116, 0, 0, 1773, 1774, 5, 117, 0, 0, 1774, 1775, 5, 97, 0, 0, 1775, 1776, 5, 108, 0, 0, 1776, 278, 1, 0, 0, 0, 1777, 1778, 5, 115, 0, 0, 1778, 1779, 5, 116, 0, 0, 1779, 1780, 5, 114, 0, 0, 1780, 1781, 5, 105, 0, 0, 1781, 1782, 5, 99, 0, 0, 1782, 1783, 5, 116, 0, 0, 1783, 280, 1, 0, 0, 0, 1784, 1785, 5, 104, 0, 0, 1785, 1786, 5, 105, 0, 0, 1786, 1787, 5, 100, 0, 0, 1787, 1788, 5, 101, 0, 0, 1788, 1789, 5, 98, 0, 0, 1789, 1790, 5, 121, 0, 0, 1790, 1791, 5, 115, 0, 0, 1791, 1792, 5, 105, 0, 0, 1792, 1793, 5, 103, 0, 0, 1793, 282, 1, 0, 0, 0, 1794, 1795, 5, 110, 0, 0, 1795, 1796, 5, 101, 0, 0, 1796, 1797, 5, 119, 0, 0, 1797, 1798, 5, 115, 0, 0, 1798, 1799, 5, 108, 0, 0, 1799, 1800, 5, 111, 0, 0, 1800, 1801, 5, 116, 0, 0, 1801, 284, 1, 0, 0, 0, 1802, 1803, 5, 117, 0, 0, 1803, 1804, 5, 110, 0, 0, 1804, 1805, 5, 109, 0, 0, 1805, 1806, 5, 97, 0, 0, 1806, 1807, 5, 110, 0, 0, 1807, 1808, 5, 97, 0, 0, 1808, 1809, 5, 103, 0, 0, 1809, 1810, 5, 101, 0, 0, 1810, 1811, 5, 100, 0, 0, 1811, 1812, 5, 101, 0, 0, 1812, 1813, 5, 120, 0, 0, 1813, 1814, 5, 112, 0, 0, 1814, 286, 1, 0, 0, 0, 1815, 1816, 5, 114, 0, 0, 1816, 1817, 5, 101, 0, 0, 1817, 1818, 5, 113, 0, 0, 1818, 1819, 5, 115, 0, 0, 1819, 1820, 5, 101, 0, 0, 1820, 1821, 5, 99, 0, 0, 1821, 1822, 5, 111, 0, 0, 1822, 1823, 5, 98, 0, 0, 1823, 1824, 5, 106, 0, 0, 1824, 288, 1, 0, 0, 0, 1825, 1826, 5, 112, 0, 0, 1826, 1827, 5, 105, 0, 0, 1827, 1828, 5, 110, 0, 0, 1828, 1829, 5, 118, 0, 0, 1829, 1830, 5, 111, 0, 0, 1830, 1831, 5, 107, 0, 0, 1831, 1832, 5, 101, 0, 0, 1832, 1833, 5, 105, 0, 0, 1833, 1834, 5, 109, 0, 0, 1834, 1835, 5, 112, 0, 0, 1835, 1836, 5, 108, 0, 0, 1836, 290, 1, 0, 0, 0, 1837, 1838, 5, 110, 0, 0, 1838, 1839, 5, 111, 0, 0, 1839, 1840, 5, 109, 0, 0, 1840, 1841, 5, 97, 0, 0, 1841, 1842, 5, 110, 0, 0, 1842, 1843, 5, 103, 0, 0, 1843, 1844, 5, 108, 0, 0, 1844, 1845, 5, 101, 0, 0, 1845, 292, 1, 0, 0, 0, 1846, 1847, 5, 108, 0, 0, 1847, 1848, 5, 97, 0, 0, 1848, 1849, 5, 115, 0, 0, 1849, 1850, 5, 116, 0, 0, 1850, 1851, 5, 101, 0, 0, 1851, 1852, 5, 114, 0, 0, 1852, 1853, 5, 114, 0, 0, 1853, 294, 1, 0, 0, 0, 1854, 1855, 5, 119, 0, 0, 1855, 1856, 5, 105, 0, 0, 1856, 1857, 5, 110, 0, 0, 1857, 1858, 5, 97, 0, 0, 1858, 1859, 5, 112, 0, 0, 1859, 1860, 5, 105, 0, 0, 1860, 296, 1, 0, 0, 0, 1861, 1862, 5, 98, 0, 0, 1862, 1863, 5, 101, 0, 0, 1863, 1864, 5, 115, 0, 0, 1864, 1865, 5, 116, 0, 0, 1865, 1866, 5, 102, 0, 0, 1866, 1867, 5, 105, 0, 0, 1867, 1868, 5, 116, 0, 0, 1868, 298, 1, 0, 0, 0, 1869, 1870, 5, 111, 0, 0, 1870, 1871, 5, 110, 0, 0, 1871, 300, 1, 0, 0, 0, 1872, 1873, 5, 111, 0, 0, 1873, 1874, 5, 102, 0, 0, 1874, 1875, 5, 102, 0, 0, 1875, 302, 1, 0, 0, 0, 1876, 1877, 5, 99, 0, 0, 1877, 1878, 5, 104, 0, 0, 1878, 1879, 5, 97, 0, 0, 1879, 1880, 5, 114, 0, 0, 1880, 1881, 5, 109, 0, 0, 1881, 1882, 5, 97, 0, 0, 1882, 1883, 5, 112, 0, 0, 1883, 1884, 5, 101, 0, 0, 1884, 1885, 5, 114, 0, 0, 1885, 1886, 5, 114, 0, 0, 1886, 1887, 5, 111, 0, 0, 1887, 1888, 5, 114, 0, 0, 1888, 304, 1, 0, 0, 0, 1889, 1890, 5, 46, 0, 0, 1890, 1891, 5, 99, 0, 0, 1891, 1892, 5, 99, 0, 0, 1892, 1893, 5, 116, 0, 0, 1893, 1894, 5, 111, 0, 0, 1894, 1895, 5, 114, 0, 0, 1895, 306, 1, 0, 0, 0, 1896, 1897, 5, 105, 0, 0, 1897, 1898, 5, 110, 0, 0, 1898, 1899, 5, 105, 0, 0, 1899, 1900, 5, 116, 0, 0, 1900, 308, 1, 0, 0, 0, 1901, 1902, 5, 46, 0, 0, 1902, 1903, 5, 116, 0, 0, 1903, 1904, 5, 114, 0, 0, 1904, 1905, 5, 121, 0, 0, 1905, 310, 1, 0, 0, 0, 1906, 1907, 5, 116, 0, 0, 1907, 1908, 5, 111, 0, 0, 1908, 312, 1, 0, 0, 0, 1909, 1910, 5, 102, 0, 0, 1910, 1911, 5, 105, 0, 0, 1911, 1912, 5, 108, 0, 0, 1912, 1913, 5, 116, 0, 0, 1913, 1914, 5, 101, 0, 0, 1914, 1915, 5, 114, 0, 0, 1915, 314, 1, 0, 0, 0, 1916, 1917, 5, 99, 0, 0, 1917, 1918, 5, 97, 0, 0, 1918, 1919, 5, 116, 0, 0, 1919, 1920, 5, 99, 0, 0, 1920, 1921, 5, 104, 0, 0, 1921, 316, 1, 0, 0, 0, 1922, 1923, 5, 102, 0, 0, 1923, 1924, 5, 105, 0, 0, 1924, 1925, 5, 110, 0, 0, 1925, 1926, 5, 97, 0, 0, 1926, 1927, 5, 108, 0, 0, 1927, 1928, 5, 108, 0, 0, 1928, 1929, 5, 121, 0, 0, 1929, 318, 1, 0, 0, 0, 1930, 1931, 5, 102, 0, 0, 1931, 1932, 5, 97, 0, 0, 1932, 1933, 5, 117, 0, 0, 1933, 1934, 5, 108, 0, 0, 1934, 1935, 5, 116, 0, 0, 1935, 320, 1, 0, 0, 0, 1936, 1937, 5, 104, 0, 0, 1937, 1938, 5, 97, 0, 0, 1938, 1939, 5, 110, 0, 0, 1939, 1940, 5, 100, 0, 0, 1940, 1941, 5, 108, 0, 0, 1941, 1942, 5, 101, 0, 0, 1942, 1943, 5, 114, 0, 0, 1943, 322, 1, 0, 0, 0, 1944, 1945, 5, 46, 0, 0, 1945, 1946, 5, 100, 0, 0, 1946, 1947, 5, 97, 0, 0, 1947, 1948, 5, 116, 0, 0, 1948, 1949, 5, 97, 0, 0, 1949, 324, 1, 0, 0, 0, 1950, 1951, 5, 116, 0, 0, 1951, 1952, 5, 108, 0, 0, 1952, 1953, 5, 115, 0, 0, 1953, 326, 1, 0, 0, 0, 1954, 1955, 5, 46, 0, 0, 1955, 1956, 5, 112, 0, 0, 1956, 1957, 5, 117, 0, 0, 1957, 1958, 5, 98, 0, 0, 1958, 1959, 5, 108, 0, 0, 1959, 1960, 5, 105, 0, 0, 1960, 1961, 5, 99, 0, 0, 1961, 1962, 5, 75, 0, 0, 1962, 1963, 5, 101, 0, 0, 1963, 1964, 5, 121, 0, 0, 1964, 328, 1, 0, 0, 0, 1965, 1966, 5, 46, 0, 0, 1966, 1967, 5, 118, 0, 0, 1967, 1968, 5, 101, 0, 0, 1968, 1969, 5, 114, 0, 0, 1969, 330, 1, 0, 0, 0, 1970, 1971, 5, 46, 0, 0, 1971, 1972, 5, 108, 0, 0, 1972, 1973, 5, 111, 0, 0, 1973, 1974, 5, 99, 0, 0, 1974, 1975, 5, 97, 0, 0, 1975, 1976, 5, 108, 0, 0, 1976, 1977, 5, 101, 0, 0, 1977, 332, 1, 0, 0, 0, 1978, 1979, 5, 46, 0, 0, 1979, 1980, 5, 112, 0, 0, 1980, 1981, 5, 117, 0, 0, 1981, 1982, 5, 98, 0, 0, 1982, 1983, 5, 108, 0, 0, 1983, 1984, 5, 105, 0, 0, 1984, 1985, 5, 99, 0, 0, 1985, 1986, 5, 107, 0, 0, 1986, 1987, 5, 101, 0, 0, 1987, 1988, 5, 121, 0, 0, 1988, 1989, 5, 116, 0, 0, 1989, 1990, 5, 111, 0, 0, 1990, 1991, 5, 107, 0, 0, 1991, 1992, 5, 101, 0, 0, 1992, 1993, 5, 110, 0, 0, 1993, 334, 1, 0, 0, 0, 1994, 1995, 5, 102, 0, 0, 1995, 1996, 5, 111, 0, 0, 1996, 1997, 5, 114, 0, 0, 1997, 1998, 5, 119, 0, 0, 1998, 1999, 5, 97, 0, 0, 1999, 2000, 5, 114, 0, 0, 2000, 2001, 5, 100, 0, 0, 2001, 2002, 5, 101, 0, 0, 2002, 2003, 5, 114, 0, 0, 2003, 336, 1, 0, 0, 0, 2004, 2006, 5, 45, 0, 0, 2005, 2004, 1, 0, 0, 0, 2005, 2006, 1, 0, 0, 0, 2006, 2020, 1, 0, 0, 0, 2007, 2008, 5, 48, 0, 0, 2008, 2009, 5, 120, 0, 0, 2009, 2011, 1, 0, 0, 0, 2010, 2012, 7, 0, 0, 0, 2011, 2010, 1, 0, 0, 0, 2012, 2013, 1, 0, 0, 0, 2013, 2011, 1, 0, 0, 0, 2013, 2014, 1, 0, 0, 0, 2014, 2021, 1, 0, 0, 0, 2015, 2017, 7, 1, 0, 0, 2016, 2015, 1, 0, 0, 0, 2017, 2018, 1, 0, 0, 0, 2018, 2016, 1, 0, 0, 0, 2018, 2019, 1, 0, 0, 0, 2019, 2021, 1, 0, 0, 0, 2020, 2007, 1, 0, 0, 0, 2020, 2016, 1, 0, 0, 0, 2021, 338, 1, 0, 0, 0, 2022, 2024, 5, 45, 0, 0, 2023, 2022, 1, 0, 0, 0, 2023, 2024, 1, 0, 0, 0, 2024, 2038, 1, 0, 0, 0, 2025, 2026, 5, 48, 0, 0, 2026, 2027, 5, 120, 0, 0, 2027, 2029, 1, 0, 0, 0, 2028, 2030, 7, 0, 0, 0, 2029, 2028, 1, 0, 0, 0, 2030, 2031, 1, 0, 0, 0, 2031, 2029, 1, 0, 0, 0, 2031, 2032, 1, 0, 0, 0, 2032, 2039, 1, 0, 0, 0, 2033, 2035, 7, 1, 0, 0, 2034, 2033, 1, 0, 0, 0, 2035, 2036, 1, 0, 0, 0, 2036, 2034, 1, 0, 0, 0, 2036, 2037, 1, 0, 0, 0, 2037, 2039, 1, 0, 0, 0, 2038, 2025, 1, 0, 0, 0, 2038, 2034, 1, 0, 0, 0, 2039, 340, 1, 0, 0, 0, 2040, 2042, 5, 45, 0, 0, 2041, 2040, 1, 0, 0, 0, 2041, 2042, 1, 0, 0, 0, 2042, 2044, 1, 0, 0, 0, 2043, 2045, 7, 1, 0, 0, 2044, 2043, 1, 0, 0, 0, 2045, 2046, 1, 0, 0, 0, 2046, 2044, 1, 0, 0, 0, 2046, 2047, 1, 0, 0, 0, 2047, 2063, 1, 0, 0, 0, 2048, 2050, 5, 46, 0, 0, 2049, 2051, 7, 1, 0, 0, 2050, 2049, 1, 0, 0, 0, 2051, 2052, 1, 0, 0, 0, 2052, 2050, 1, 0, 0, 0, 2052, 2053, 1, 0, 0, 0, 2053, 2064, 1, 0, 0, 0, 2054, 2056, 7, 2, 0, 0, 2055, 2057, 5, 45, 0, 0, 2056, 2055, 1, 0, 0, 0, 2056, 2057, 1, 0, 0, 0, 2057, 2059, 1, 0, 0, 0, 2058, 2060, 7, 1, 0, 0, 2059, 2058, 1, 0, 0, 0, 2060, 2061, 1, 0, 0, 0, 2061, 2059, 1, 0, 0, 0, 2061, 2062, 1, 0, 0, 0, 2062, 2064, 1, 0, 0, 0, 2063, 2048, 1, 0, 0, 0, 2063, 2054, 1, 0, 0, 0, 2064, 342, 1, 0, 0, 0, 2065, 2066, 7, 0, 0, 0, 2066, 2067, 7, 0, 0, 0, 2067, 344, 1, 0, 0, 0, 2068, 2069, 5, 58, 0, 0, 2069, 2070, 5, 58, 0, 0, 2070, 346, 1, 0, 0, 0, 2071, 2072, 5, 46, 0, 0, 2072, 2073, 5, 46, 0, 0, 2073, 348, 1, 0, 0, 0, 2074, 2075, 5, 110, 0, 0, 2075, 2076, 5, 117, 0, 0, 2076, 2077, 5, 108, 0, 0, 2077, 2078, 5, 108, 0, 0, 2078, 350, 1, 0, 0, 0, 2079, 2080, 5, 110, 0, 0, 2080, 2081, 5, 117, 0, 0, 2081, 2082, 5, 108, 0, 0, 2082, 2083, 5, 108, 0, 0, 2083, 2084, 5, 114, 0, 0, 2084, 2085, 5, 101, 0, 0, 2085, 2086, 5, 102, 0, 0, 2086, 352, 1, 0, 0, 0, 2087, 2088, 5, 46, 0, 0, 2088, 2089, 5, 104, 0, 0, 2089, 2090, 5, 97, 0, 0, 2090, 2091, 5, 115, 0, 0, 2091, 2092, 5, 104, 0, 0, 2092, 354, 1, 0, 0, 0, 2093, 2094, 5, 99, 0, 0, 2094, 2095, 5, 104, 0, 0, 2095, 2096, 5, 97, 0, 0, 2096, 2097, 5, 114, 0, 0, 2097, 356, 1, 0, 0, 0, 2098, 2099, 5, 115, 0, 0, 2099, 2100, 5, 116, 0, 0, 2100, 2101, 5, 114, 0, 0, 2101, 2102, 5, 105, 0, 0, 2102, 2103, 5, 110, 0, 0, 2103, 2104, 5, 103, 0, 0, 2104, 358, 1, 0, 0, 0, 2105, 2106, 5, 98, 0, 0, 2106, 2107, 5, 111, 0, 0, 2107, 2108, 5, 111, 0, 0, 2108, 2109, 5, 108, 0, 0, 2109, 360, 1, 0, 0, 0, 2110, 2111, 5, 105, 0, 0, 2111, 2112, 5, 110, 0, 0, 2112, 2113, 5, 116, 0, 0, 2113, 2114, 5, 56, 0, 0, 2114, 362, 1, 0, 0, 0, 2115, 2116, 5, 105, 0, 0, 2116, 2117, 5, 110, 0, 0, 2117, 2118, 5, 116, 0, 0, 2118, 2119, 5, 49, 0, 0, 2119, 2120, 5, 54, 0, 0, 2120, 364, 1, 0, 0, 0, 2121, 2122, 5, 105, 0, 0, 2122, 2123, 5, 110, 0, 0, 2123, 2124, 5, 116, 0, 0, 2124, 2125, 5, 51, 0, 0, 2125, 2126, 5, 50, 0, 0, 2126, 366, 1, 0, 0, 0, 2127, 2128, 5, 105, 0, 0, 2128, 2129, 5, 110, 0, 0, 2129, 2130, 5, 116, 0, 0, 2130, 2131, 5, 54, 0, 0, 2131, 2132, 5, 52, 0, 0, 2132, 368, 1, 0, 0, 0, 2133, 2134, 5, 102, 0, 0, 2134, 2135, 5, 108, 0, 0, 2135, 2136, 5, 111, 0, 0, 2136, 2137, 5, 97, 0, 0, 2137, 2138, 5, 116, 0, 0, 2138, 2139, 5, 51, 0, 0, 2139, 2140, 5, 50, 0, 0, 2140, 370, 1, 0, 0, 0, 2141, 2142, 5, 102, 0, 0, 2142, 2143, 5, 108, 0, 0, 2143, 2144, 5, 111, 0, 0, 2144, 2145, 5, 97, 0, 0, 2145, 2146, 5, 116, 0, 0, 2146, 2147, 5, 54, 0, 0, 2147, 2148, 5, 52, 0, 0, 2148, 372, 1, 0, 0, 0, 2149, 2150, 5, 117, 0, 0, 2150, 2151, 5, 110, 0, 0, 2151, 2152, 5, 115, 0, 0, 2152, 2153, 5, 105, 0, 0, 2153, 2154, 5, 103, 0, 0, 2154, 2155, 5, 110, 0, 0, 2155, 2156, 5, 101, 0, 0, 2156, 2157, 5, 100, 0, 0, 2157, 374, 1, 0, 0, 0, 2158, 2159, 5, 117, 0, 0, 2159, 2160, 5, 105, 0, 0, 2160, 2161, 5, 110, 0, 0, 2161, 2162, 5, 116, 0, 0, 2162, 2167, 5, 56, 0, 0, 2163, 2164, 3, 373, 186, 0, 2164, 2165, 3, 361, 180, 0, 2165, 2167, 1, 0, 0, 0, 2166, 2158, 1, 0, 0, 0, 2166, 2163, 1, 0, 0, 0, 2167, 376, 1, 0, 0, 0, 2168, 2169, 5, 117, 0, 0, 2169, 2170, 5, 105, 0, 0, 2170, 2171, 5, 110, 0, 0, 2171, 2172, 5, 116, 0, 0, 2172, 2173, 5, 49, 0, 0, 2173, 2178, 5, 54, 0, 0, 2174, 2175, 3, 373, 186, 0, 2175, 2176, 3, 363, 181, 0, 2176, 2178, 1, 0, 0, 0, 2177, 2168, 1, 0, 0, 0, 2177, 2174, 1, 0, 0, 0, 2178, 378, 1, 0, 0, 0, 2179, 2180, 5, 117, 0, 0, 2180, 2181, 5, 105, 0, 0, 2181, 2182, 5, 110, 0, 0, 2182, 2183, 5, 116, 0, 0, 2183, 2184, 5, 51, 0, 0, 2184, 2189, 5, 50, 0, 0, 2185, 2186, 3, 373, 186, 0, 2186, 2187, 3, 365, 182, 0, 2187, 2189, 1, 0, 0, 0, 2188, 2179, 1, 0, 0, 0, 2188, 2185, 1, 0, 0, 0, 2189, 380, 1, 0, 0, 0, 2190, 2191, 5, 117, 0, 0, 2191, 2192, 5, 105, 0, 0, 2192, 2193, 5, 110, 0, 0, 2193, 2194, 5, 116, 0, 0, 2194, 2195, 5, 54, 0, 0, 2195, 2200, 5, 52, 0, 0, 2196, 2197, 3, 373, 186, 0, 2197, 2198, 3, 367, 183, 0, 2198, 2200, 1, 0, 0, 0, 2199, 2190, 1, 0, 0, 0, 2199, 2196, 1, 0, 0, 0, 2200, 382, 1, 0, 0, 0, 2201, 2202, 5, 105, 0, 0, 2202, 2203, 5, 110, 0, 0, 2203, 2204, 5, 116, 0, 0, 2204, 384, 1, 0, 0, 0, 2205, 2206, 5, 117, 0, 0, 2206, 2207, 5, 105, 0, 0, 2207, 2208, 5, 110, 0, 0, 2208, 2215, 5, 116, 0, 0, 2209, 2210, 3, 373, 186, 0, 2210, 2211, 5, 105, 0, 0, 2211, 2212, 5, 110, 0, 0, 2212, 2213, 5, 116, 0, 0, 2213, 2215, 1, 0, 0, 0, 2214, 2205, 1, 0, 0, 0, 2214, 2209, 1, 0, 0, 0, 2215, 386, 1, 0, 0, 0, 2216, 2217, 5, 116, 0, 0, 2217, 2218, 5, 121, 0, 0, 2218, 2219, 5, 112, 0, 0, 2219, 2220, 5, 101, 0, 0, 2220, 388, 1, 0, 0, 0, 2221, 2222, 5, 111, 0, 0, 2222, 2223, 5, 98, 0, 0, 2223, 2224, 5, 106, 0, 0, 2224, 2225, 5, 101, 0, 0, 2225, 2226, 5, 99, 0, 0, 2226, 2227, 5, 116, 0, 0, 2227, 390, 1, 0, 0, 0, 2228, 2229, 5, 46, 0, 0, 2229, 2230, 5, 109, 0, 0, 2230, 2231, 5, 111, 0, 0, 2231, 2232, 5, 100, 0, 0, 2232, 2233, 5, 117, 0, 0, 2233, 2234, 5, 108, 0, 0, 2234, 2235, 5, 101, 0, 0, 2235, 392, 1, 0, 0, 0, 2236, 2237, 5, 118, 0, 0, 2237, 2238, 5, 97, 0, 0, 2238, 2239, 5, 108, 0, 0, 2239, 2240, 5, 117, 0, 0, 2240, 2241, 5, 101, 0, 0, 2241, 394, 1, 0, 0, 0, 2242, 2243, 5, 118, 0, 0, 2243, 2244, 5, 97, 0, 0, 2244, 2245, 5, 108, 0, 0, 2245, 2246, 5, 117, 0, 0, 2246, 2247, 5, 101, 0, 0, 2247, 2248, 5, 116, 0, 0, 2248, 2249, 5, 121, 0, 0, 2249, 2250, 5, 112, 0, 0, 2250, 2251, 5, 101, 0, 0, 2251, 396, 1, 0, 0, 0, 2252, 2253, 5, 118, 0, 0, 2253, 2254, 5, 111, 0, 0, 2254, 2255, 5, 105, 0, 0, 2255, 2256, 5, 100, 0, 0, 2256, 398, 1, 0, 0, 0, 2257, 2258, 5, 101, 0, 0, 2258, 2259, 5, 110, 0, 0, 2259, 2260, 5, 117, 0, 0, 2260, 2261, 5, 109, 0, 0, 2261, 400, 1, 0, 0, 0, 2262, 2263, 5, 99, 0, 0, 2263, 2264, 5, 117, 0, 0, 2264, 2265, 5, 115, 0, 0, 2265, 2266, 5, 116, 0, 0, 2266, 2267, 5, 111, 0, 0, 2267, 2268, 5, 109, 0, 0, 2268, 402, 1, 0, 0, 0, 2269, 2270, 5, 102, 0, 0, 2270, 2271, 5, 105, 0, 0, 2271, 2272, 5, 120, 0, 0, 2272, 2273, 5, 101, 0, 0, 2273, 2274, 5, 100, 0, 0, 2274, 404, 1, 0, 0, 0, 2275, 2276, 5, 115, 0, 0, 2276, 2277, 5, 121, 0, 0, 2277, 2278, 5, 115, 0, 0, 2278, 2279, 5, 116, 0, 0, 2279, 2280, 5, 114, 0, 0, 2280, 2281, 5, 105, 0, 0, 2281, 2282, 5, 110, 0, 0, 2282, 2283, 5, 103, 0, 0, 2283, 406, 1, 0, 0, 0, 2284, 2285, 5, 97, 0, 0, 2285, 2286, 5, 114, 0, 0, 2286, 2287, 5, 114, 0, 0, 2287, 2288, 5, 97, 0, 0, 2288, 2289, 5, 121, 0, 0, 2289, 408, 1, 0, 0, 0, 2290, 2291, 5, 118, 0, 0, 2291, 2292, 5, 97, 0, 0, 2292, 2293, 5, 114, 0, 0, 2293, 2294, 5, 105, 0, 0, 2294, 2295, 5, 97, 0, 0, 2295, 2296, 5, 110, 0, 0, 2296, 2297, 5, 116, 0, 0, 2297, 410, 1, 0, 0, 0, 2298, 2299, 5, 99, 0, 0, 2299, 2300, 5, 117, 0, 0, 2300, 2301, 5, 114, 0, 0, 2301, 2302, 5, 114, 0, 0, 2302, 2303, 5, 101, 0, 0, 2303, 2304, 5, 110, 0, 0, 2304, 2305, 5, 99, 0, 0, 2305, 2306, 5, 121, 0, 0, 2306, 412, 1, 0, 0, 0, 2307, 2308, 5, 115, 0, 0, 2308, 2309, 5, 121, 0, 0, 2309, 2310, 5, 115, 0, 0, 2310, 2311, 5, 99, 0, 0, 2311, 2312, 5, 104, 0, 0, 2312, 2313, 5, 97, 0, 0, 2313, 2314, 5, 114, 0, 0, 2314, 414, 1, 0, 0, 0, 2315, 2316, 5, 101, 0, 0, 2316, 2317, 5, 114, 0, 0, 2317, 2318, 5, 114, 0, 0, 2318, 2319, 5, 111, 0, 0, 2319, 2320, 5, 114, 0, 0, 2320, 416, 1, 0, 0, 0, 2321, 2322, 5, 100, 0, 0, 2322, 2323, 5, 101, 0, 0, 2323, 2324, 5, 99, 0, 0, 2324, 2325, 5, 105, 0, 0, 2325, 2326, 5, 109, 0, 0, 2326, 2327, 5, 97, 0, 0, 2327, 2328, 5, 108, 0, 0, 2328, 418, 1, 0, 0, 0, 2329, 2330, 5, 100, 0, 0, 2330, 2331, 5, 97, 0, 0, 2331, 2332, 5, 116, 0, 0, 2332, 2333, 5, 101, 0, 0, 2333, 420, 1, 0, 0, 0, 2334, 2335, 5, 98, 0, 0, 2335, 2336, 5, 115, 0, 0, 2336, 2337, 5, 116, 0, 0, 2337, 2338, 5, 114, 0, 0, 2338, 422, 1, 0, 0, 0, 2339, 2340, 5, 108, 0, 0, 2340, 2341, 5, 112, 0, 0, 2341, 2342, 5, 115, 0, 0, 2342, 2343, 5, 116, 0, 0, 2343, 2344, 5, 114, 0, 0, 2344, 424, 1, 0, 0, 0, 2345, 2346, 5, 108, 0, 0, 2346, 2347, 5, 112, 0, 0, 2347, 2348, 5, 119, 0, 0, 2348, 2349, 5, 115, 0, 0, 2349, 2350, 5, 116, 0, 0, 2350, 2351, 5, 114, 0, 0, 2351, 426, 1, 0, 0, 0, 2352, 2353, 5, 108, 0, 0, 2353, 2354, 5, 112, 0, 0, 2354, 2355, 5, 116, 0, 0, 2355, 2356, 5, 115, 0, 0, 2356, 2357, 5, 116, 0, 0, 2357, 2358, 5, 114, 0, 0, 2358, 428, 1, 0, 0, 0, 2359, 2360, 5, 111, 0, 0, 2360, 2361, 5, 98, 0, 0, 2361, 2362, 5, 106, 0, 0, 2362, 2363, 5, 101, 0, 0, 2363, 2364, 5, 99, 0, 0, 2364, 2365, 5, 116, 0, 0, 2365, 2366, 5, 114, 0, 0, 2366, 2367, 5, 101, 0, 0, 2367, 2368, 5, 102, 0, 0, 2368, 430, 1, 0, 0, 0, 2369, 2370, 5, 105, 0, 0, 2370, 2371, 5, 117, 0, 0, 2371, 2372, 5, 110, 0, 0, 2372, 2373, 5, 107, 0, 0, 2373, 2374, 5, 110, 0, 0, 2374, 2375, 5, 111, 0, 0, 2375, 2376, 5, 119, 0, 0, 2376, 2377, 5, 110, 0, 0, 2377, 432, 1, 0, 0, 0, 2378, 2379, 5, 105, 0, 0, 2379, 2380, 5, 100, 0, 0, 2380, 2381, 5, 105, 0, 0, 2381, 2382, 5, 115, 0, 0, 2382, 2383, 5, 112, 0, 0, 2383, 2384, 5, 97, 0, 0, 2384, 2385, 5, 116, 0, 0, 2385, 2386, 5, 99, 0, 0, 2386, 2387, 5, 104, 0, 0, 2387, 434, 1, 0, 0, 0, 2388, 2389, 5, 115, 0, 0, 2389, 2390, 5, 116, 0, 0, 2390, 2391, 5, 114, 0, 0, 2391, 2392, 5, 117, 0, 0, 2392, 2393, 5, 99, 0, 0, 2393, 2394, 5, 116, 0, 0, 2394, 436, 1, 0, 0, 0, 2395, 2396, 5, 105, 0, 0, 2396, 2397, 5, 110, 0, 0, 2397, 2398, 5, 116, 0, 0, 2398, 2399, 5, 101, 0, 0, 2399, 2400, 5, 114, 0, 0, 2400, 2401, 5, 102, 0, 0, 2401, 2402, 5, 97, 0, 0, 2402, 2403, 5, 99, 0, 0, 2403, 2404, 5, 101, 0, 0, 2404, 438, 1, 0, 0, 0, 2405, 2406, 5, 115, 0, 0, 2406, 2407, 5, 97, 0, 0, 2407, 2408, 5, 102, 0, 0, 2408, 2409, 5, 101, 0, 0, 2409, 2410, 5, 97, 0, 0, 2410, 2411, 5, 114, 0, 0, 2411, 2412, 5, 114, 0, 0, 2412, 2413, 5, 97, 0, 0, 2413, 2414, 5, 121, 0, 0, 2414, 440, 1, 0, 0, 0, 2415, 2416, 5, 110, 0, 0, 2416, 2417, 5, 101, 0, 0, 2417, 2418, 5, 115, 0, 0, 2418, 2419, 5, 116, 0, 0, 2419, 2420, 5, 101, 0, 0, 2420, 2421, 5, 100, 0, 0, 2421, 2422, 1, 0, 0, 0, 2422, 2423, 3, 435, 217, 0, 2423, 442, 1, 0, 0, 0, 2424, 2425, 3, 409, 204, 0, 2425, 2426, 3, 359, 179, 0, 2426, 444, 1, 0, 0, 0, 2427, 2428, 5, 98, 0, 0, 2428, 2429, 5, 121, 0, 0, 2429, 2430, 5, 118, 0, 0, 2430, 2431, 5, 97, 0, 0, 2431, 2432, 5, 108, 0, 0, 2432, 2433, 5, 115, 0, 0, 2433, 2434, 5, 116, 0, 0, 2434, 2435, 5, 114, 0, 0, 2435, 446, 1, 0, 0, 0, 2436, 2437, 5, 97, 0, 0, 2437, 2438, 5, 110, 0, 0, 2438, 2439, 5, 115, 0, 0, 2439, 2440, 5, 105, 0, 0, 2440, 448, 1, 0, 0, 0, 2441, 2442, 3, 447, 223, 0, 2442, 2443, 3, 421, 210, 0, 2443, 450, 1, 0, 0, 0, 2444, 2445, 5, 116, 0, 0, 2445, 2446, 5, 98, 0, 0, 2446, 2447, 5, 115, 0, 0, 2447, 2448, 5, 116, 0, 0, 2448, 2449, 5, 114, 0, 0, 2449, 452, 1, 0, 0, 0, 2450, 2451, 5, 109, 0, 0, 2451, 2452, 5, 101, 0, 0, 2452, 2453, 5, 116, 0, 0, 2453, 2454, 5, 104, 0, 0, 2454, 2455, 5, 111, 0, 0, 2455, 2456, 5, 100, 0, 0, 2456, 454, 1, 0, 0, 0, 2457, 2458, 5, 97, 0, 0, 2458, 2459, 5, 110, 0, 0, 2459, 2460, 5, 121, 0, 0, 2460, 456, 1, 0, 0, 0, 2461, 2462, 5, 108, 0, 0, 2462, 2463, 5, 112, 0, 0, 2463, 2464, 5, 115, 0, 0, 2464, 2465, 5, 116, 0, 0, 2465, 2466, 5, 114, 0, 0, 2466, 2467, 5, 117, 0, 0, 2467, 2468, 5, 99, 0, 0, 2468, 2469, 5, 116, 0, 0, 2469, 458, 1, 0, 0, 0, 2470, 2471, 5, 118, 0, 0, 2471, 2472, 5, 101, 0, 0, 2472, 2473, 5, 99, 0, 0, 2473, 2474, 5, 116, 0, 0, 2474, 2475, 5, 111, 0, 0, 2475, 2476, 5, 114, 0, 0, 2476, 460, 1, 0, 0, 0, 2477, 2478, 5, 104, 0, 0, 2478, 2479, 5, 114, 0, 0, 2479, 2480, 5, 101, 0, 0, 2480, 2481, 5, 115, 0, 0, 2481, 2482, 5, 117, 0, 0, 2482, 2483, 5, 108, 0, 0, 2483, 2484, 5, 116, 0, 0, 2484, 462, 1, 0, 0, 0, 2485, 2486, 5, 99, 0, 0, 2486, 2487, 5, 97, 0, 0, 2487, 2488, 5, 114, 0, 0, 2488, 2489, 5, 114, 0, 0, 2489, 2490, 5, 97, 0, 0, 2490, 2491, 5, 121, 0, 0, 2491, 464, 1, 0, 0, 0, 2492, 2493, 5, 117, 0, 0, 2493, 2494, 5, 115, 0, 0, 2494, 2495, 5, 101, 0, 0, 2495, 2496, 5, 114, 0, 0, 2496, 2497, 5, 100, 0, 0, 2497, 2498, 5, 101, 0, 0, 2498, 2499, 5, 102, 0, 0, 2499, 2500, 5, 105, 0, 0, 2500, 2501, 5, 110, 0, 0, 2501, 2502, 5, 101, 0, 0, 2502, 2503, 5, 100, 0, 0, 2503, 466, 1, 0, 0, 0, 2504, 2505, 5, 114, 0, 0, 2505, 2506, 5, 101, 0, 0, 2506, 2507, 5, 99, 0, 0, 2507, 2508, 5, 111, 0, 0, 2508, 2509, 5, 114, 0, 0, 2509, 2510, 5, 100, 0, 0, 2510, 468, 1, 0, 0, 0, 2511, 2512, 5, 102, 0, 0, 2512, 2513, 5, 105, 0, 0, 2513, 2514, 5, 108, 0, 0, 2514, 2515, 5, 101, 0, 0, 2515, 2516, 5, 116, 0, 0, 2516, 2517, 5, 105, 0, 0, 2517, 2518, 5, 109, 0, 0, 2518, 2519, 5, 101, 0, 0, 2519, 470, 1, 0, 0, 0, 2520, 2521, 5, 98, 0, 0, 2521, 2522, 5, 108, 0, 0, 2522, 2523, 5, 111, 0, 0, 2523, 2524, 5, 98, 0, 0, 2524, 472, 1, 0, 0, 0, 2525, 2526, 5, 115, 0, 0, 2526, 2527, 5, 116, 0, 0, 2527, 2528, 5, 114, 0, 0, 2528, 2529, 5, 101, 0, 0, 2529, 2530, 5, 97, 0, 0, 2530, 2531, 5, 109, 0, 0, 2531, 474, 1, 0, 0, 0, 2532, 2533, 5, 115, 0, 0, 2533, 2534, 5, 116, 0, 0, 2534, 2535, 5, 111, 0, 0, 2535, 2536, 5, 114, 0, 0, 2536, 2537, 5, 97, 0, 0, 2537, 2538, 5, 103, 0, 0, 2538, 2539, 5, 101, 0, 0, 2539, 476, 1, 0, 0, 0, 2540, 2541, 5, 115, 0, 0, 2541, 2542, 5, 116, 0, 0, 2542, 2543, 5, 114, 0, 0, 2543, 2544, 5, 101, 0, 0, 2544, 2545, 5, 97, 0, 0, 2545, 2546, 5, 109, 0, 0, 2546, 2547, 5, 101, 0, 0, 2547, 2548, 5, 100, 0, 0, 2548, 2549, 5, 95, 0, 0, 2549, 2550, 5, 111, 0, 0, 2550, 2551, 5, 98, 0, 0, 2551, 2552, 5, 106, 0, 0, 2552, 2553, 5, 101, 0, 0, 2553, 2554, 5, 99, 0, 0, 2554, 2555, 5, 116, 0, 0, 2555, 478, 1, 0, 0, 0, 2556, 2557, 5, 115, 0, 0, 2557, 2558, 5, 116, 0, 0, 2558, 2559, 5, 111, 0, 0, 2559, 2560, 5, 114, 0, 0, 2560, 2561, 5, 101, 0, 0, 2561, 2562, 5, 100, 0, 0, 2562, 2563, 5, 95, 0, 0, 2563, 2564, 5, 111, 0, 0, 2564, 2565, 5, 98, 0, 0, 2565, 2566, 5, 106, 0, 0, 2566, 2567, 5, 101, 0, 0, 2567, 2568, 5, 99, 0, 0, 2568, 2569, 5, 116, 0, 0, 2569, 480, 1, 0, 0, 0, 2570, 2571, 5, 98, 0, 0, 2571, 2572, 5, 108, 0, 0, 2572, 2573, 5, 111, 0, 0, 2573, 2574, 5, 98, 0, 0, 2574, 2575, 5, 95, 0, 0, 2575, 2576, 5, 111, 0, 0, 2576, 2577, 5, 98, 0, 0, 2577, 2578, 5, 106, 0, 0, 2578, 2579, 5, 101, 0, 0, 2579, 2580, 5, 99, 0, 0, 2580, 2581, 5, 116, 0, 0, 2581, 482, 1, 0, 0, 0, 2582, 2583, 5, 99, 0, 0, 2583, 2584, 5, 102, 0, 0, 2584, 484, 1, 0, 0, 0, 2585, 2586, 5, 99, 0, 0, 2586, 2587, 5, 108, 0, 0, 2587, 2588, 5, 115, 0, 0, 2588, 2589, 5, 105, 0, 0, 2589, 2590, 5, 100, 0, 0, 2590, 486, 1, 0, 0, 0, 2591, 2592, 5, 105, 0, 0, 2592, 2593, 5, 110, 0, 0, 2593, 2594, 5, 115, 0, 0, 2594, 2595, 5, 116, 0, 0, 2595, 2596, 5, 97, 0, 0, 2596, 2597, 5, 110, 0, 0, 2597, 2598, 5, 99, 0, 0, 2598, 2599, 5, 101, 0, 0, 2599, 488, 1, 0, 0, 0, 2600, 2601, 5, 101, 0, 0, 2601, 2602, 5, 120, 0, 0, 2602, 2603, 5, 112, 0, 0, 2603, 2604, 5, 108, 0, 0, 2604, 2605, 5, 105, 0, 0, 2605, 2606, 5, 99, 0, 0, 2606, 2607, 5, 105, 0, 0, 2607, 2608, 5, 116, 0, 0, 2608, 490, 1, 0, 0, 0, 2609, 2610, 5, 100, 0, 0, 2610, 2611, 5, 101, 0, 0, 2611, 2612, 5, 102, 0, 0, 2612, 2613, 5, 97, 0, 0, 2613, 2614, 5, 117, 0, 0, 2614, 2615, 5, 108, 0, 0, 2615, 2616, 5, 116, 0, 0, 2616, 492, 1, 0, 0, 0, 2617, 2618, 5, 118, 0, 0, 2618, 2619, 5, 97, 0, 0, 2619, 2620, 5, 114, 0, 0, 2620, 2621, 5, 97, 0, 0, 2621, 2622, 5, 114, 0, 0, 2622, 2623, 5, 103, 0, 0, 2623, 494, 1, 0, 0, 0, 2624, 2625, 5, 117, 0, 0, 2625, 2626, 5, 110, 0, 0, 2626, 2627, 5, 109, 0, 0, 2627, 2628, 5, 97, 0, 0, 2628, 2629, 5, 110, 0, 0, 2629, 2630, 5, 97, 0, 0, 2630, 2631, 5, 103, 0, 0, 2631, 2632, 5, 101, 0, 0, 2632, 2633, 5, 100, 0, 0, 2633, 496, 1, 0, 0, 0, 2634, 2635, 5, 99, 0, 0, 2635, 2636, 5, 100, 0, 0, 2636, 2637, 5, 101, 0, 0, 2637, 2638, 5, 99, 0, 0, 2638, 2639, 5, 108, 0, 0, 2639, 498, 1, 0, 0, 0, 2640, 2641, 5, 115, 0, 0, 2641, 2642, 5, 116, 0, 0, 2642, 2643, 5, 100, 0, 0, 2643, 2644, 5, 99, 0, 0, 2644, 2645, 5, 97, 0, 0, 2645, 2646, 5, 108, 0, 0, 2646, 2647, 5, 108, 0, 0, 2647, 500, 1, 0, 0, 0, 2648, 2649, 5, 116, 0, 0, 2649, 2650, 5, 104, 0, 0, 2650, 2651, 5, 105, 0, 0, 2651, 2652, 5, 115, 0, 0, 2652, 2653, 5, 99, 0, 0, 2653, 2654, 5, 97, 0, 0, 2654, 2655, 5, 108, 0, 0, 2655, 2656, 5, 108, 0, 0, 2656, 502, 1, 0, 0, 0, 2657, 2658, 5, 102, 0, 0, 2658, 2659, 5, 97, 0, 0, 2659, 2660, 5, 115, 0, 0, 2660, 2661, 5, 116, 0, 0, 2661, 2662, 5, 99, 0, 0, 2662, 2663, 5, 97, 0, 0, 2663, 2664, 5, 108, 0, 0, 2664, 2665, 5, 108, 0, 0, 2665, 504, 1, 0, 0, 0, 2666, 2667, 5, 33, 0, 0, 2667, 506, 1, 0, 0, 0, 2668, 2669, 5, 33, 0, 0, 2669, 2670, 5, 33, 0, 0, 2670, 508, 1, 0, 0, 0, 2671, 2672, 5, 116, 0, 0, 2672, 2673, 5, 121, 0, 0, 2673, 2674, 5, 112, 0, 0, 2674, 2675, 5, 101, 0, 0, 2675, 2676, 5, 100, 0, 0, 2676, 2677, 5, 114, 0, 0, 2677, 2678, 5, 101, 0, 0, 2678, 2679, 5, 102, 0, 0, 2679, 510, 1, 0, 0, 0, 2680, 2681, 5, 110, 0, 0, 2681, 2682, 5, 97, 0, 0, 2682, 2683, 5, 116, 0, 0, 2683, 2684, 5, 105, 0, 0, 2684, 2685, 5, 118, 0, 0, 2685, 2686, 5, 101, 0, 0, 2686, 2687, 1, 0, 0, 0, 2687, 2688, 5, 105, 0, 0, 2688, 2689, 5, 110, 0, 0, 2689, 2690, 5, 116, 0, 0, 2690, 512, 1, 0, 0, 0, 2691, 2692, 5, 110, 0, 0, 2692, 2693, 5, 97, 0, 0, 2693, 2694, 5, 116, 0, 0, 2694, 2695, 5, 105, 0, 0, 2695, 2696, 5, 118, 0, 0, 2696, 2697, 5, 101, 0, 0, 2697, 2698, 1, 0, 0, 0, 2698, 2699, 5, 117, 0, 0, 2699, 2700, 5, 110, 0, 0, 2700, 2701, 5, 115, 0, 0, 2701, 2702, 5, 105, 0, 0, 2702, 2703, 5, 103, 0, 0, 2703, 2704, 5, 110, 0, 0, 2704, 2705, 5, 101, 0, 0, 2705, 2706, 5, 100, 0, 0, 2706, 2707, 1, 0, 0, 0, 2707, 2708, 5, 105, 0, 0, 2708, 2709, 5, 110, 0, 0, 2709, 2722, 5, 116, 0, 0, 2710, 2711, 5, 110, 0, 0, 2711, 2712, 5, 97, 0, 0, 2712, 2713, 5, 116, 0, 0, 2713, 2714, 5, 105, 0, 0, 2714, 2715, 5, 118, 0, 0, 2715, 2716, 5, 101, 0, 0, 2716, 2717, 1, 0, 0, 0, 2717, 2718, 5, 117, 0, 0, 2718, 2719, 5, 105, 0, 0, 2719, 2720, 5, 110, 0, 0, 2720, 2722, 5, 116, 0, 0, 2721, 2691, 1, 0, 0, 0, 2721, 2710, 1, 0, 0, 0, 2722, 514, 1, 0, 0, 0, 2723, 2724, 5, 46, 0, 0, 2724, 2725, 5, 112, 0, 0, 2725, 2726, 5, 97, 0, 0, 2726, 2727, 5, 114, 0, 0, 2727, 2728, 5, 97, 0, 0, 2728, 2729, 5, 109, 0, 0, 2729, 516, 1, 0, 0, 0, 2730, 2731, 5, 99, 0, 0, 2731, 2732, 5, 111, 0, 0, 2732, 2733, 5, 110, 0, 0, 2733, 2734, 5, 115, 0, 0, 2734, 2735, 5, 116, 0, 0, 2735, 2736, 5, 114, 0, 0, 2736, 2737, 5, 97, 0, 0, 2737, 2738, 5, 105, 0, 0, 2738, 2739, 5, 110, 0, 0, 2739, 2740, 5, 116, 0, 0, 2740, 518, 1, 0, 0, 0, 2741, 2742, 5, 46, 0, 0, 2742, 2743, 5, 116, 0, 0, 2743, 2744, 5, 104, 0, 0, 2744, 2745, 5, 105, 0, 0, 2745, 2746, 5, 115, 0, 0, 2746, 520, 1, 0, 0, 0, 2747, 2748, 5, 46, 0, 0, 2748, 2749, 5, 98, 0, 0, 2749, 2750, 5, 97, 0, 0, 2750, 2751, 5, 115, 0, 0, 2751, 2752, 5, 101, 0, 0, 2752, 522, 1, 0, 0, 0, 2753, 2754, 5, 46, 0, 0, 2754, 2755, 5, 110, 0, 0, 2755, 2756, 5, 101, 0, 0, 2756, 2757, 5, 115, 0, 0, 2757, 2758, 5, 116, 0, 0, 2758, 2759, 5, 101, 0, 0, 2759, 2760, 5, 114, 0, 0, 2760, 524, 1, 0, 0, 0, 2761, 2762, 5, 38, 0, 0, 2762, 526, 1, 0, 0, 0, 2763, 2764, 5, 91, 0, 0, 2764, 2765, 5, 93, 0, 0, 2765, 528, 1, 0, 0, 0, 2766, 2767, 5, 42, 0, 0, 2767, 530, 1, 0, 0, 0, 2768, 2774, 5, 34, 0, 0, 2769, 2773, 8, 3, 0, 0, 2770, 2771, 5, 92, 0, 0, 2771, 2773, 7, 3, 0, 0, 2772, 2769, 1, 0, 0, 0, 2772, 2770, 1, 0, 0, 0, 2773, 2776, 1, 0, 0, 0, 2774, 2772, 1, 0, 0, 0, 2774, 2775, 1, 0, 0, 0, 2775, 2777, 1, 0, 0, 0, 2776, 2774, 1, 0, 0, 0, 2777, 2778, 5, 34, 0, 0, 2778, 532, 1, 0, 0, 0, 2779, 2785, 5, 39, 0, 0, 2780, 2784, 8, 4, 0, 0, 2781, 2782, 5, 92, 0, 0, 2782, 2784, 7, 4, 0, 0, 2783, 2780, 1, 0, 0, 0, 2783, 2781, 1, 0, 0, 0, 2784, 2787, 1, 0, 0, 0, 2785, 2783, 1, 0, 0, 0, 2785, 2786, 1, 0, 0, 0, 2786, 2788, 1, 0, 0, 0, 2787, 2785, 1, 0, 0, 0, 2788, 2789, 5, 39, 0, 0, 2789, 534, 1, 0, 0, 0, 2790, 2791, 5, 46, 0, 0, 2791, 536, 1, 0, 0, 0, 2792, 2793, 5, 43, 0, 0, 2793, 538, 1, 0, 0, 0, 2794, 2795, 5, 35, 0, 0, 2795, 2796, 5, 100, 0, 0, 2796, 2797, 5, 101, 0, 0, 2797, 2798, 5, 102, 0, 0, 2798, 2799, 5, 105, 0, 0, 2799, 2800, 5, 110, 0, 0, 2800, 2801, 5, 101, 0, 0, 2801, 540, 1, 0, 0, 0, 2802, 2803, 5, 35, 0, 0, 2803, 2804, 5, 117, 0, 0, 2804, 2805, 5, 110, 0, 0, 2805, 2806, 5, 100, 0, 0, 2806, 2807, 5, 101, 0, 0, 2807, 2808, 5, 102, 0, 0, 2808, 542, 1, 0, 0, 0, 2809, 2810, 5, 35, 0, 0, 2810, 2811, 5, 105, 0, 0, 2811, 2812, 5, 102, 0, 0, 2812, 2813, 5, 100, 0, 0, 2813, 2814, 5, 101, 0, 0, 2814, 2815, 5, 102, 0, 0, 2815, 544, 1, 0, 0, 0, 2816, 2817, 5, 35, 0, 0, 2817, 2818, 5, 105, 0, 0, 2818, 2819, 5, 102, 0, 0, 2819, 2820, 5, 110, 0, 0, 2820, 2821, 5, 100, 0, 0, 2821, 2822, 5, 101, 0, 0, 2822, 2823, 5, 102, 0, 0, 2823, 546, 1, 0, 0, 0, 2824, 2825, 5, 35, 0, 0, 2825, 2826, 5, 101, 0, 0, 2826, 2827, 5, 108, 0, 0, 2827, 2828, 5, 115, 0, 0, 2828, 2829, 5, 101, 0, 0, 2829, 548, 1, 0, 0, 0, 2830, 2831, 5, 35, 0, 0, 2831, 2832, 5, 101, 0, 0, 2832, 2833, 5, 110, 0, 0, 2833, 2834, 5, 100, 0, 0, 2834, 2835, 5, 105, 0, 0, 2835, 2836, 5, 102, 0, 0, 2836, 550, 1, 0, 0, 0, 2837, 2838, 5, 35, 0, 0, 2838, 2839, 5, 105, 0, 0, 2839, 2840, 5, 110, 0, 0, 2840, 2841, 5, 99, 0, 0, 2841, 2842, 5, 108, 0, 0, 2842, 2843, 5, 117, 0, 0, 2843, 2844, 5, 100, 0, 0, 2844, 2845, 5, 101, 0, 0, 2845, 552, 1, 0, 0, 0, 2846, 2847, 5, 46, 0, 0, 2847, 2848, 5, 109, 0, 0, 2848, 2849, 5, 114, 0, 0, 2849, 2850, 5, 101, 0, 0, 2850, 2851, 5, 115, 0, 0, 2851, 2852, 5, 111, 0, 0, 2852, 2853, 5, 117, 0, 0, 2853, 2854, 5, 114, 0, 0, 2854, 2855, 5, 99, 0, 0, 2855, 2856, 5, 101, 0, 0, 2856, 554, 1, 0, 0, 0, 2857, 2858, 5, 110, 0, 0, 2858, 2859, 5, 111, 0, 0, 2859, 4006, 5, 112, 0, 0, 2860, 2861, 5, 98, 0, 0, 2861, 2862, 5, 114, 0, 0, 2862, 2863, 5, 101, 0, 0, 2863, 2864, 5, 97, 0, 0, 2864, 4006, 5, 107, 0, 0, 2865, 2866, 5, 108, 0, 0, 2866, 2867, 5, 100, 0, 0, 2867, 2868, 5, 97, 0, 0, 2868, 2869, 5, 114, 0, 0, 2869, 2870, 5, 103, 0, 0, 2870, 2871, 5, 46, 0, 0, 2871, 4006, 5, 48, 0, 0, 2872, 2873, 5, 108, 0, 0, 2873, 2874, 5, 100, 0, 0, 2874, 2875, 5, 97, 0, 0, 2875, 2876, 5, 114, 0, 0, 2876, 2877, 5, 103, 0, 0, 2877, 2878, 5, 46, 0, 0, 2878, 4006, 5, 49, 0, 0, 2879, 2880, 5, 108, 0, 0, 2880, 2881, 5, 100, 0, 0, 2881, 2882, 5, 97, 0, 0, 2882, 2883, 5, 114, 0, 0, 2883, 2884, 5, 103, 0, 0, 2884, 2885, 5, 46, 0, 0, 2885, 4006, 5, 50, 0, 0, 2886, 2887, 5, 108, 0, 0, 2887, 2888, 5, 100, 0, 0, 2888, 2889, 5, 97, 0, 0, 2889, 2890, 5, 114, 0, 0, 2890, 2891, 5, 103, 0, 0, 2891, 2892, 5, 46, 0, 0, 2892, 4006, 5, 51, 0, 0, 2893, 2894, 5, 108, 0, 0, 2894, 2895, 5, 100, 0, 0, 2895, 2896, 5, 108, 0, 0, 2896, 2897, 5, 111, 0, 0, 2897, 2898, 5, 99, 0, 0, 2898, 2899, 5, 46, 0, 0, 2899, 4006, 5, 48, 0, 0, 2900, 2901, 5, 108, 0, 0, 2901, 2902, 5, 100, 0, 0, 2902, 2903, 5, 108, 0, 0, 2903, 2904, 5, 111, 0, 0, 2904, 2905, 5, 99, 0, 0, 2905, 2906, 5, 46, 0, 0, 2906, 4006, 5, 49, 0, 0, 2907, 2908, 5, 108, 0, 0, 2908, 2909, 5, 100, 0, 0, 2909, 2910, 5, 108, 0, 0, 2910, 2911, 5, 111, 0, 0, 2911, 2912, 5, 99, 0, 0, 2912, 2913, 5, 46, 0, 0, 2913, 4006, 5, 50, 0, 0, 2914, 2915, 5, 108, 0, 0, 2915, 2916, 5, 100, 0, 0, 2916, 2917, 5, 108, 0, 0, 2917, 2918, 5, 111, 0, 0, 2918, 2919, 5, 99, 0, 0, 2919, 2920, 5, 46, 0, 0, 2920, 4006, 5, 51, 0, 0, 2921, 2922, 5, 115, 0, 0, 2922, 2923, 5, 116, 0, 0, 2923, 2924, 5, 108, 0, 0, 2924, 2925, 5, 111, 0, 0, 2925, 2926, 5, 99, 0, 0, 2926, 2927, 5, 46, 0, 0, 2927, 4006, 5, 48, 0, 0, 2928, 2929, 5, 115, 0, 0, 2929, 2930, 5, 116, 0, 0, 2930, 2931, 5, 108, 0, 0, 2931, 2932, 5, 111, 0, 0, 2932, 2933, 5, 99, 0, 0, 2933, 2934, 5, 46, 0, 0, 2934, 4006, 5, 49, 0, 0, 2935, 2936, 5, 115, 0, 0, 2936, 2937, 5, 116, 0, 0, 2937, 2938, 5, 108, 0, 0, 2938, 2939, 5, 111, 0, 0, 2939, 2940, 5, 99, 0, 0, 2940, 2941, 5, 46, 0, 0, 2941, 4006, 5, 50, 0, 0, 2942, 2943, 5, 115, 0, 0, 2943, 2944, 5, 116, 0, 0, 2944, 2945, 5, 108, 0, 0, 2945, 2946, 5, 111, 0, 0, 2946, 2947, 5, 99, 0, 0, 2947, 2948, 5, 46, 0, 0, 2948, 4006, 5, 51, 0, 0, 2949, 2950, 5, 108, 0, 0, 2950, 2951, 5, 100, 0, 0, 2951, 2952, 5, 110, 0, 0, 2952, 2953, 5, 117, 0, 0, 2953, 2954, 5, 108, 0, 0, 2954, 4006, 5, 108, 0, 0, 2955, 2956, 5, 108, 0, 0, 2956, 2957, 5, 100, 0, 0, 2957, 2958, 5, 99, 0, 0, 2958, 2959, 5, 46, 0, 0, 2959, 2960, 5, 105, 0, 0, 2960, 2961, 5, 52, 0, 0, 2961, 2962, 5, 46, 0, 0, 2962, 2963, 5, 109, 0, 0, 2963, 4006, 5, 49, 0, 0, 2964, 2965, 5, 108, 0, 0, 2965, 2966, 5, 100, 0, 0, 2966, 2967, 5, 99, 0, 0, 2967, 2968, 5, 46, 0, 0, 2968, 2969, 5, 105, 0, 0, 2969, 2970, 5, 52, 0, 0, 2970, 2971, 5, 46, 0, 0, 2971, 4006, 5, 48, 0, 0, 2972, 2973, 5, 108, 0, 0, 2973, 2974, 5, 100, 0, 0, 2974, 2975, 5, 99, 0, 0, 2975, 2976, 5, 46, 0, 0, 2976, 2977, 5, 105, 0, 0, 2977, 2978, 5, 52, 0, 0, 2978, 2979, 5, 46, 0, 0, 2979, 4006, 5, 49, 0, 0, 2980, 2981, 5, 108, 0, 0, 2981, 2982, 5, 100, 0, 0, 2982, 2983, 5, 99, 0, 0, 2983, 2984, 5, 46, 0, 0, 2984, 2985, 5, 105, 0, 0, 2985, 2986, 5, 52, 0, 0, 2986, 2987, 5, 46, 0, 0, 2987, 4006, 5, 50, 0, 0, 2988, 2989, 5, 108, 0, 0, 2989, 2990, 5, 100, 0, 0, 2990, 2991, 5, 99, 0, 0, 2991, 2992, 5, 46, 0, 0, 2992, 2993, 5, 105, 0, 0, 2993, 2994, 5, 52, 0, 0, 2994, 2995, 5, 46, 0, 0, 2995, 4006, 5, 51, 0, 0, 2996, 2997, 5, 108, 0, 0, 2997, 2998, 5, 100, 0, 0, 2998, 2999, 5, 99, 0, 0, 2999, 3000, 5, 46, 0, 0, 3000, 3001, 5, 105, 0, 0, 3001, 3002, 5, 52, 0, 0, 3002, 3003, 5, 46, 0, 0, 3003, 4006, 5, 52, 0, 0, 3004, 3005, 5, 108, 0, 0, 3005, 3006, 5, 100, 0, 0, 3006, 3007, 5, 99, 0, 0, 3007, 3008, 5, 46, 0, 0, 3008, 3009, 5, 105, 0, 0, 3009, 3010, 5, 52, 0, 0, 3010, 3011, 5, 46, 0, 0, 3011, 4006, 5, 53, 0, 0, 3012, 3013, 5, 108, 0, 0, 3013, 3014, 5, 100, 0, 0, 3014, 3015, 5, 99, 0, 0, 3015, 3016, 5, 46, 0, 0, 3016, 3017, 5, 105, 0, 0, 3017, 3018, 5, 52, 0, 0, 3018, 3019, 5, 46, 0, 0, 3019, 4006, 5, 54, 0, 0, 3020, 3021, 5, 108, 0, 0, 3021, 3022, 5, 100, 0, 0, 3022, 3023, 5, 99, 0, 0, 3023, 3024, 5, 46, 0, 0, 3024, 3025, 5, 105, 0, 0, 3025, 3026, 5, 52, 0, 0, 3026, 3027, 5, 46, 0, 0, 3027, 4006, 5, 55, 0, 0, 3028, 3029, 5, 108, 0, 0, 3029, 3030, 5, 100, 0, 0, 3030, 3031, 5, 99, 0, 0, 3031, 3032, 5, 46, 0, 0, 3032, 3033, 5, 105, 0, 0, 3033, 3034, 5, 52, 0, 0, 3034, 3035, 5, 46, 0, 0, 3035, 4006, 5, 56, 0, 0, 3036, 3037, 5, 100, 0, 0, 3037, 3038, 5, 117, 0, 0, 3038, 4006, 5, 112, 0, 0, 3039, 3040, 5, 112, 0, 0, 3040, 3041, 5, 111, 0, 0, 3041, 4006, 5, 112, 0, 0, 3042, 3043, 5, 114, 0, 0, 3043, 3044, 5, 101, 0, 0, 3044, 4006, 5, 116, 0, 0, 3045, 3046, 5, 108, 0, 0, 3046, 3047, 5, 100, 0, 0, 3047, 3048, 5, 105, 0, 0, 3048, 3049, 5, 110, 0, 0, 3049, 3050, 5, 100, 0, 0, 3050, 3051, 5, 46, 0, 0, 3051, 3052, 5, 105, 0, 0, 3052, 4006, 5, 49, 0, 0, 3053, 3054, 5, 108, 0, 0, 3054, 3055, 5, 100, 0, 0, 3055, 3056, 5, 105, 0, 0, 3056, 3057, 5, 110, 0, 0, 3057, 3058, 5, 100, 0, 0, 3058, 3059, 5, 46, 0, 0, 3059, 3060, 5, 117, 0, 0, 3060, 4006, 5, 49, 0, 0, 3061, 3062, 5, 108, 0, 0, 3062, 3063, 5, 100, 0, 0, 3063, 3064, 5, 105, 0, 0, 3064, 3065, 5, 110, 0, 0, 3065, 3066, 5, 100, 0, 0, 3066, 3067, 5, 46, 0, 0, 3067, 3068, 5, 105, 0, 0, 3068, 4006, 5, 50, 0, 0, 3069, 3070, 5, 108, 0, 0, 3070, 3071, 5, 100, 0, 0, 3071, 3072, 5, 105, 0, 0, 3072, 3073, 5, 110, 0, 0, 3073, 3074, 5, 100, 0, 0, 3074, 3075, 5, 46, 0, 0, 3075, 3076, 5, 117, 0, 0, 3076, 4006, 5, 50, 0, 0, 3077, 3078, 5, 108, 0, 0, 3078, 3079, 5, 100, 0, 0, 3079, 3080, 5, 105, 0, 0, 3080, 3081, 5, 110, 0, 0, 3081, 3082, 5, 100, 0, 0, 3082, 3083, 5, 46, 0, 0, 3083, 3084, 5, 105, 0, 0, 3084, 4006, 5, 52, 0, 0, 3085, 3086, 5, 108, 0, 0, 3086, 3087, 5, 100, 0, 0, 3087, 3088, 5, 105, 0, 0, 3088, 3089, 5, 110, 0, 0, 3089, 3090, 5, 100, 0, 0, 3090, 3091, 5, 46, 0, 0, 3091, 3092, 5, 117, 0, 0, 3092, 4006, 5, 52, 0, 0, 3093, 3094, 5, 108, 0, 0, 3094, 3095, 5, 100, 0, 0, 3095, 3096, 5, 105, 0, 0, 3096, 3097, 5, 110, 0, 0, 3097, 3098, 5, 100, 0, 0, 3098, 3099, 5, 46, 0, 0, 3099, 3100, 5, 105, 0, 0, 3100, 4006, 5, 56, 0, 0, 3101, 3102, 5, 108, 0, 0, 3102, 3103, 5, 100, 0, 0, 3103, 3104, 5, 105, 0, 0, 3104, 3105, 5, 110, 0, 0, 3105, 3106, 5, 100, 0, 0, 3106, 3107, 5, 46, 0, 0, 3107, 4006, 5, 105, 0, 0, 3108, 3109, 5, 108, 0, 0, 3109, 3110, 5, 100, 0, 0, 3110, 3111, 5, 105, 0, 0, 3111, 3112, 5, 110, 0, 0, 3112, 3113, 5, 100, 0, 0, 3113, 3114, 5, 46, 0, 0, 3114, 3115, 5, 114, 0, 0, 3115, 4006, 5, 52, 0, 0, 3116, 3117, 5, 108, 0, 0, 3117, 3118, 5, 100, 0, 0, 3118, 3119, 5, 105, 0, 0, 3119, 3120, 5, 110, 0, 0, 3120, 3121, 5, 100, 0, 0, 3121, 3122, 5, 46, 0, 0, 3122, 3123, 5, 114, 0, 0, 3123, 4006, 5, 56, 0, 0, 3124, 3125, 5, 108, 0, 0, 3125, 3126, 5, 100, 0, 0, 3126, 3127, 5, 105, 0, 0, 3127, 3128, 5, 110, 0, 0, 3128, 3129, 5, 100, 0, 0, 3129, 3130, 5, 46, 0, 0, 3130, 3131, 5, 114, 0, 0, 3131, 3132, 5, 101, 0, 0, 3132, 4006, 5, 102, 0, 0, 3133, 3134, 5, 115, 0, 0, 3134, 3135, 5, 116, 0, 0, 3135, 3136, 5, 105, 0, 0, 3136, 3137, 5, 110, 0, 0, 3137, 3138, 5, 100, 0, 0, 3138, 3139, 5, 46, 0, 0, 3139, 3140, 5, 114, 0, 0, 3140, 3141, 5, 101, 0, 0, 3141, 4006, 5, 102, 0, 0, 3142, 3143, 5, 115, 0, 0, 3143, 3144, 5, 116, 0, 0, 3144, 3145, 5, 105, 0, 0, 3145, 3146, 5, 110, 0, 0, 3146, 3147, 5, 100, 0, 0, 3147, 3148, 5, 46, 0, 0, 3148, 3149, 5, 105, 0, 0, 3149, 4006, 5, 49, 0, 0, 3150, 3151, 5, 115, 0, 0, 3151, 3152, 5, 116, 0, 0, 3152, 3153, 5, 105, 0, 0, 3153, 3154, 5, 110, 0, 0, 3154, 3155, 5, 100, 0, 0, 3155, 3156, 5, 46, 0, 0, 3156, 3157, 5, 105, 0, 0, 3157, 4006, 5, 50, 0, 0, 3158, 3159, 5, 115, 0, 0, 3159, 3160, 5, 116, 0, 0, 3160, 3161, 5, 105, 0, 0, 3161, 3162, 5, 110, 0, 0, 3162, 3163, 5, 100, 0, 0, 3163, 3164, 5, 46, 0, 0, 3164, 3165, 5, 105, 0, 0, 3165, 4006, 5, 52, 0, 0, 3166, 3167, 5, 115, 0, 0, 3167, 3168, 5, 116, 0, 0, 3168, 3169, 5, 105, 0, 0, 3169, 3170, 5, 110, 0, 0, 3170, 3171, 5, 100, 0, 0, 3171, 3172, 5, 46, 0, 0, 3172, 3173, 5, 105, 0, 0, 3173, 4006, 5, 56, 0, 0, 3174, 3175, 5, 115, 0, 0, 3175, 3176, 5, 116, 0, 0, 3176, 3177, 5, 105, 0, 0, 3177, 3178, 5, 110, 0, 0, 3178, 3179, 5, 100, 0, 0, 3179, 3180, 5, 46, 0, 0, 3180, 3181, 5, 114, 0, 0, 3181, 4006, 5, 52, 0, 0, 3182, 3183, 5, 115, 0, 0, 3183, 3184, 5, 116, 0, 0, 3184, 3185, 5, 105, 0, 0, 3185, 3186, 5, 110, 0, 0, 3186, 3187, 5, 100, 0, 0, 3187, 3188, 5, 46, 0, 0, 3188, 3189, 5, 114, 0, 0, 3189, 4006, 5, 56, 0, 0, 3190, 3191, 5, 97, 0, 0, 3191, 3192, 5, 100, 0, 0, 3192, 4006, 5, 100, 0, 0, 3193, 3194, 5, 115, 0, 0, 3194, 3195, 5, 117, 0, 0, 3195, 4006, 5, 98, 0, 0, 3196, 3197, 5, 109, 0, 0, 3197, 3198, 5, 117, 0, 0, 3198, 4006, 5, 108, 0, 0, 3199, 3200, 5, 100, 0, 0, 3200, 3201, 5, 105, 0, 0, 3201, 4006, 5, 118, 0, 0, 3202, 3203, 5, 100, 0, 0, 3203, 3204, 5, 105, 0, 0, 3204, 3205, 5, 118, 0, 0, 3205, 3206, 5, 46, 0, 0, 3206, 3207, 5, 117, 0, 0, 3207, 4006, 5, 110, 0, 0, 3208, 3209, 5, 114, 0, 0, 3209, 3210, 5, 101, 0, 0, 3210, 4006, 5, 109, 0, 0, 3211, 3212, 5, 114, 0, 0, 3212, 3213, 5, 101, 0, 0, 3213, 3214, 5, 109, 0, 0, 3214, 3215, 5, 46, 0, 0, 3215, 3216, 5, 117, 0, 0, 3216, 4006, 5, 110, 0, 0, 3217, 3218, 5, 97, 0, 0, 3218, 3219, 5, 110, 0, 0, 3219, 4006, 5, 100, 0, 0, 3220, 3221, 5, 111, 0, 0, 3221, 4006, 5, 114, 0, 0, 3222, 3223, 5, 120, 0, 0, 3223, 3224, 5, 111, 0, 0, 3224, 4006, 5, 114, 0, 0, 3225, 3226, 5, 115, 0, 0, 3226, 3227, 5, 104, 0, 0, 3227, 4006, 5, 108, 0, 0, 3228, 3229, 5, 115, 0, 0, 3229, 3230, 5, 104, 0, 0, 3230, 4006, 5, 114, 0, 0, 3231, 3232, 5, 115, 0, 0, 3232, 3233, 5, 104, 0, 0, 3233, 3234, 5, 114, 0, 0, 3234, 3235, 5, 46, 0, 0, 3235, 3236, 5, 117, 0, 0, 3236, 4006, 5, 110, 0, 0, 3237, 3238, 5, 110, 0, 0, 3238, 3239, 5, 101, 0, 0, 3239, 4006, 5, 103, 0, 0, 3240, 3241, 5, 110, 0, 0, 3241, 3242, 5, 111, 0, 0, 3242, 4006, 5, 116, 0, 0, 3243, 3244, 5, 99, 0, 0, 3244, 3245, 5, 111, 0, 0, 3245, 3246, 5, 110, 0, 0, 3246, 3247, 5, 118, 0, 0, 3247, 3248, 5, 46, 0, 0, 3248, 3249, 5, 105, 0, 0, 3249, 4006, 5, 49, 0, 0, 3250, 3251, 5, 99, 0, 0, 3251, 3252, 5, 111, 0, 0, 3252, 3253, 5, 110, 0, 0, 3253, 3254, 5, 118, 0, 0, 3254, 3255, 5, 46, 0, 0, 3255, 3256, 5, 105, 0, 0, 3256, 4006, 5, 50, 0, 0, 3257, 3258, 5, 99, 0, 0, 3258, 3259, 5, 111, 0, 0, 3259, 3260, 5, 110, 0, 0, 3260, 3261, 5, 118, 0, 0, 3261, 3262, 5, 46, 0, 0, 3262, 3263, 5, 105, 0, 0, 3263, 4006, 5, 52, 0, 0, 3264, 3265, 5, 99, 0, 0, 3265, 3266, 5, 111, 0, 0, 3266, 3267, 5, 110, 0, 0, 3267, 3268, 5, 118, 0, 0, 3268, 3269, 5, 46, 0, 0, 3269, 3270, 5, 105, 0, 0, 3270, 4006, 5, 56, 0, 0, 3271, 3272, 5, 99, 0, 0, 3272, 3273, 5, 111, 0, 0, 3273, 3274, 5, 110, 0, 0, 3274, 3275, 5, 118, 0, 0, 3275, 3276, 5, 46, 0, 0, 3276, 3277, 5, 114, 0, 0, 3277, 4006, 5, 52, 0, 0, 3278, 3279, 5, 99, 0, 0, 3279, 3280, 5, 111, 0, 0, 3280, 3281, 5, 110, 0, 0, 3281, 3282, 5, 118, 0, 0, 3282, 3283, 5, 46, 0, 0, 3283, 3284, 5, 114, 0, 0, 3284, 4006, 5, 56, 0, 0, 3285, 3286, 5, 99, 0, 0, 3286, 3287, 5, 111, 0, 0, 3287, 3288, 5, 110, 0, 0, 3288, 3289, 5, 118, 0, 0, 3289, 3290, 5, 46, 0, 0, 3290, 3291, 5, 117, 0, 0, 3291, 4006, 5, 52, 0, 0, 3292, 3293, 5, 99, 0, 0, 3293, 3294, 5, 111, 0, 0, 3294, 3295, 5, 110, 0, 0, 3295, 3296, 5, 118, 0, 0, 3296, 3297, 5, 46, 0, 0, 3297, 3298, 5, 117, 0, 0, 3298, 4006, 5, 56, 0, 0, 3299, 3300, 5, 99, 0, 0, 3300, 3301, 5, 111, 0, 0, 3301, 3302, 5, 110, 0, 0, 3302, 3303, 5, 118, 0, 0, 3303, 3304, 5, 46, 0, 0, 3304, 3305, 5, 114, 0, 0, 3305, 3306, 5, 46, 0, 0, 3306, 3307, 5, 117, 0, 0, 3307, 4006, 5, 110, 0, 0, 3308, 3309, 5, 116, 0, 0, 3309, 3310, 5, 104, 0, 0, 3310, 3311, 5, 114, 0, 0, 3311, 3312, 5, 111, 0, 0, 3312, 4006, 5, 119, 0, 0, 3313, 3314, 5, 99, 0, 0, 3314, 3315, 5, 111, 0, 0, 3315, 3316, 5, 110, 0, 0, 3316, 3317, 5, 118, 0, 0, 3317, 3318, 5, 46, 0, 0, 3318, 3319, 5, 111, 0, 0, 3319, 3320, 5, 118, 0, 0, 3320, 3321, 5, 102, 0, 0, 3321, 3322, 5, 46, 0, 0, 3322, 3323, 5, 105, 0, 0, 3323, 3324, 5, 49, 0, 0, 3324, 3325, 5, 46, 0, 0, 3325, 3326, 5, 117, 0, 0, 3326, 4006, 5, 110, 0, 0, 3327, 3328, 5, 99, 0, 0, 3328, 3329, 5, 111, 0, 0, 3329, 3330, 5, 110, 0, 0, 3330, 3331, 5, 118, 0, 0, 3331, 3332, 5, 46, 0, 0, 3332, 3333, 5, 111, 0, 0, 3333, 3334, 5, 118, 0, 0, 3334, 3335, 5, 102, 0, 0, 3335, 3336, 5, 46, 0, 0, 3336, 3337, 5, 105, 0, 0, 3337, 3338, 5, 50, 0, 0, 3338, 3339, 5, 46, 0, 0, 3339, 3340, 5, 117, 0, 0, 3340, 4006, 5, 110, 0, 0, 3341, 3342, 5, 99, 0, 0, 3342, 3343, 5, 111, 0, 0, 3343, 3344, 5, 110, 0, 0, 3344, 3345, 5, 118, 0, 0, 3345, 3346, 5, 46, 0, 0, 3346, 3347, 5, 111, 0, 0, 3347, 3348, 5, 118, 0, 0, 3348, 3349, 5, 102, 0, 0, 3349, 3350, 5, 46, 0, 0, 3350, 3351, 5, 105, 0, 0, 3351, 3352, 5, 52, 0, 0, 3352, 3353, 5, 46, 0, 0, 3353, 3354, 5, 117, 0, 0, 3354, 4006, 5, 110, 0, 0, 3355, 3356, 5, 99, 0, 0, 3356, 3357, 5, 111, 0, 0, 3357, 3358, 5, 110, 0, 0, 3358, 3359, 5, 118, 0, 0, 3359, 3360, 5, 46, 0, 0, 3360, 3361, 5, 111, 0, 0, 3361, 3362, 5, 118, 0, 0, 3362, 3363, 5, 102, 0, 0, 3363, 3364, 5, 46, 0, 0, 3364, 3365, 5, 105, 0, 0, 3365, 3366, 5, 56, 0, 0, 3366, 3367, 5, 46, 0, 0, 3367, 3368, 5, 117, 0, 0, 3368, 4006, 5, 110, 0, 0, 3369, 3370, 5, 99, 0, 0, 3370, 3371, 5, 111, 0, 0, 3371, 3372, 5, 110, 0, 0, 3372, 3373, 5, 118, 0, 0, 3373, 3374, 5, 46, 0, 0, 3374, 3375, 5, 111, 0, 0, 3375, 3376, 5, 118, 0, 0, 3376, 3377, 5, 102, 0, 0, 3377, 3378, 5, 46, 0, 0, 3378, 3379, 5, 117, 0, 0, 3379, 3380, 5, 49, 0, 0, 3380, 3381, 5, 46, 0, 0, 3381, 3382, 5, 117, 0, 0, 3382, 4006, 5, 110, 0, 0, 3383, 3384, 5, 99, 0, 0, 3384, 3385, 5, 111, 0, 0, 3385, 3386, 5, 110, 0, 0, 3386, 3387, 5, 118, 0, 0, 3387, 3388, 5, 46, 0, 0, 3388, 3389, 5, 111, 0, 0, 3389, 3390, 5, 118, 0, 0, 3390, 3391, 5, 102, 0, 0, 3391, 3392, 5, 46, 0, 0, 3392, 3393, 5, 117, 0, 0, 3393, 3394, 5, 50, 0, 0, 3394, 3395, 5, 46, 0, 0, 3395, 3396, 5, 117, 0, 0, 3396, 4006, 5, 110, 0, 0, 3397, 3398, 5, 99, 0, 0, 3398, 3399, 5, 111, 0, 0, 3399, 3400, 5, 110, 0, 0, 3400, 3401, 5, 118, 0, 0, 3401, 3402, 5, 46, 0, 0, 3402, 3403, 5, 111, 0, 0, 3403, 3404, 5, 118, 0, 0, 3404, 3405, 5, 102, 0, 0, 3405, 3406, 5, 46, 0, 0, 3406, 3407, 5, 117, 0, 0, 3407, 3408, 5, 52, 0, 0, 3408, 3409, 5, 46, 0, 0, 3409, 3410, 5, 117, 0, 0, 3410, 4006, 5, 110, 0, 0, 3411, 3412, 5, 99, 0, 0, 3412, 3413, 5, 111, 0, 0, 3413, 3414, 5, 110, 0, 0, 3414, 3415, 5, 118, 0, 0, 3415, 3416, 5, 46, 0, 0, 3416, 3417, 5, 111, 0, 0, 3417, 3418, 5, 118, 0, 0, 3418, 3419, 5, 102, 0, 0, 3419, 3420, 5, 46, 0, 0, 3420, 3421, 5, 117, 0, 0, 3421, 3422, 5, 56, 0, 0, 3422, 3423, 5, 46, 0, 0, 3423, 3424, 5, 117, 0, 0, 3424, 4006, 5, 110, 0, 0, 3425, 3426, 5, 99, 0, 0, 3426, 3427, 5, 111, 0, 0, 3427, 3428, 5, 110, 0, 0, 3428, 3429, 5, 118, 0, 0, 3429, 3430, 5, 46, 0, 0, 3430, 3431, 5, 111, 0, 0, 3431, 3432, 5, 118, 0, 0, 3432, 3433, 5, 102, 0, 0, 3433, 3434, 5, 46, 0, 0, 3434, 3435, 5, 105, 0, 0, 3435, 3436, 5, 46, 0, 0, 3436, 3437, 5, 117, 0, 0, 3437, 4006, 5, 110, 0, 0, 3438, 3439, 5, 99, 0, 0, 3439, 3440, 5, 111, 0, 0, 3440, 3441, 5, 110, 0, 0, 3441, 3442, 5, 118, 0, 0, 3442, 3443, 5, 46, 0, 0, 3443, 3444, 5, 111, 0, 0, 3444, 3445, 5, 118, 0, 0, 3445, 3446, 5, 102, 0, 0, 3446, 3447, 5, 46, 0, 0, 3447, 3448, 5, 117, 0, 0, 3448, 3449, 5, 46, 0, 0, 3449, 3450, 5, 117, 0, 0, 3450, 4006, 5, 110, 0, 0, 3451, 3452, 5, 108, 0, 0, 3452, 3453, 5, 100, 0, 0, 3453, 3454, 5, 108, 0, 0, 3454, 3455, 5, 101, 0, 0, 3455, 4006, 5, 110, 0, 0, 3456, 3457, 5, 108, 0, 0, 3457, 3458, 5, 100, 0, 0, 3458, 3459, 5, 101, 0, 0, 3459, 3460, 5, 108, 0, 0, 3460, 3461, 5, 101, 0, 0, 3461, 3462, 5, 109, 0, 0, 3462, 3463, 5, 46, 0, 0, 3463, 3464, 5, 105, 0, 0, 3464, 4006, 5, 49, 0, 0, 3465, 3466, 5, 108, 0, 0, 3466, 3467, 5, 100, 0, 0, 3467, 3468, 5, 101, 0, 0, 3468, 3469, 5, 108, 0, 0, 3469, 3470, 5, 101, 0, 0, 3470, 3471, 5, 109, 0, 0, 3471, 3472, 5, 46, 0, 0, 3472, 3473, 5, 117, 0, 0, 3473, 4006, 5, 49, 0, 0, 3474, 3475, 5, 108, 0, 0, 3475, 3476, 5, 100, 0, 0, 3476, 3477, 5, 101, 0, 0, 3477, 3478, 5, 108, 0, 0, 3478, 3479, 5, 101, 0, 0, 3479, 3480, 5, 109, 0, 0, 3480, 3481, 5, 46, 0, 0, 3481, 3482, 5, 105, 0, 0, 3482, 4006, 5, 50, 0, 0, 3483, 3484, 5, 108, 0, 0, 3484, 3485, 5, 100, 0, 0, 3485, 3486, 5, 101, 0, 0, 3486, 3487, 5, 108, 0, 0, 3487, 3488, 5, 101, 0, 0, 3488, 3489, 5, 109, 0, 0, 3489, 3490, 5, 46, 0, 0, 3490, 3491, 5, 117, 0, 0, 3491, 4006, 5, 50, 0, 0, 3492, 3493, 5, 108, 0, 0, 3493, 3494, 5, 100, 0, 0, 3494, 3495, 5, 101, 0, 0, 3495, 3496, 5, 108, 0, 0, 3496, 3497, 5, 101, 0, 0, 3497, 3498, 5, 109, 0, 0, 3498, 3499, 5, 46, 0, 0, 3499, 3500, 5, 105, 0, 0, 3500, 4006, 5, 52, 0, 0, 3501, 3502, 5, 108, 0, 0, 3502, 3503, 5, 100, 0, 0, 3503, 3504, 5, 101, 0, 0, 3504, 3505, 5, 108, 0, 0, 3505, 3506, 5, 101, 0, 0, 3506, 3507, 5, 109, 0, 0, 3507, 3508, 5, 46, 0, 0, 3508, 3509, 5, 117, 0, 0, 3509, 4006, 5, 52, 0, 0, 3510, 3511, 5, 108, 0, 0, 3511, 3512, 5, 100, 0, 0, 3512, 3513, 5, 101, 0, 0, 3513, 3514, 5, 108, 0, 0, 3514, 3515, 5, 101, 0, 0, 3515, 3516, 5, 109, 0, 0, 3516, 3517, 5, 46, 0, 0, 3517, 3518, 5, 105, 0, 0, 3518, 4006, 5, 56, 0, 0, 3519, 3520, 5, 108, 0, 0, 3520, 3521, 5, 100, 0, 0, 3521, 3522, 5, 101, 0, 0, 3522, 3523, 5, 108, 0, 0, 3523, 3524, 5, 101, 0, 0, 3524, 3525, 5, 109, 0, 0, 3525, 3526, 5, 46, 0, 0, 3526, 4006, 5, 105, 0, 0, 3527, 3528, 5, 108, 0, 0, 3528, 3529, 5, 100, 0, 0, 3529, 3530, 5, 101, 0, 0, 3530, 3531, 5, 108, 0, 0, 3531, 3532, 5, 101, 0, 0, 3532, 3533, 5, 109, 0, 0, 3533, 3534, 5, 46, 0, 0, 3534, 3535, 5, 114, 0, 0, 3535, 4006, 5, 52, 0, 0, 3536, 3537, 5, 108, 0, 0, 3537, 3538, 5, 100, 0, 0, 3538, 3539, 5, 101, 0, 0, 3539, 3540, 5, 108, 0, 0, 3540, 3541, 5, 101, 0, 0, 3541, 3542, 5, 109, 0, 0, 3542, 3543, 5, 46, 0, 0, 3543, 3544, 5, 114, 0, 0, 3544, 4006, 5, 56, 0, 0, 3545, 3546, 5, 108, 0, 0, 3546, 3547, 5, 100, 0, 0, 3547, 3548, 5, 101, 0, 0, 3548, 3549, 5, 108, 0, 0, 3549, 3550, 5, 101, 0, 0, 3550, 3551, 5, 109, 0, 0, 3551, 3552, 5, 46, 0, 0, 3552, 3553, 5, 114, 0, 0, 3553, 3554, 5, 101, 0, 0, 3554, 4006, 5, 102, 0, 0, 3555, 3556, 5, 115, 0, 0, 3556, 3557, 5, 116, 0, 0, 3557, 3558, 5, 101, 0, 0, 3558, 3559, 5, 108, 0, 0, 3559, 3560, 5, 101, 0, 0, 3560, 3561, 5, 109, 0, 0, 3561, 3562, 5, 46, 0, 0, 3562, 4006, 5, 105, 0, 0, 3563, 3564, 5, 115, 0, 0, 3564, 3565, 5, 116, 0, 0, 3565, 3566, 5, 101, 0, 0, 3566, 3567, 5, 108, 0, 0, 3567, 3568, 5, 101, 0, 0, 3568, 3569, 5, 109, 0, 0, 3569, 3570, 5, 46, 0, 0, 3570, 3571, 5, 105, 0, 0, 3571, 4006, 5, 49, 0, 0, 3572, 3573, 5, 115, 0, 0, 3573, 3574, 5, 116, 0, 0, 3574, 3575, 5, 101, 0, 0, 3575, 3576, 5, 108, 0, 0, 3576, 3577, 5, 101, 0, 0, 3577, 3578, 5, 109, 0, 0, 3578, 3579, 5, 46, 0, 0, 3579, 3580, 5, 105, 0, 0, 3580, 4006, 5, 50, 0, 0, 3581, 3582, 5, 115, 0, 0, 3582, 3583, 5, 116, 0, 0, 3583, 3584, 5, 101, 0, 0, 3584, 3585, 5, 108, 0, 0, 3585, 3586, 5, 101, 0, 0, 3586, 3587, 5, 109, 0, 0, 3587, 3588, 5, 46, 0, 0, 3588, 3589, 5, 105, 0, 0, 3589, 4006, 5, 52, 0, 0, 3590, 3591, 5, 115, 0, 0, 3591, 3592, 5, 116, 0, 0, 3592, 3593, 5, 101, 0, 0, 3593, 3594, 5, 108, 0, 0, 3594, 3595, 5, 101, 0, 0, 3595, 3596, 5, 109, 0, 0, 3596, 3597, 5, 46, 0, 0, 3597, 3598, 5, 105, 0, 0, 3598, 4006, 5, 56, 0, 0, 3599, 3600, 5, 115, 0, 0, 3600, 3601, 5, 116, 0, 0, 3601, 3602, 5, 101, 0, 0, 3602, 3603, 5, 108, 0, 0, 3603, 3604, 5, 101, 0, 0, 3604, 3605, 5, 109, 0, 0, 3605, 3606, 5, 46, 0, 0, 3606, 3607, 5, 114, 0, 0, 3607, 4006, 5, 52, 0, 0, 3608, 3609, 5, 115, 0, 0, 3609, 3610, 5, 116, 0, 0, 3610, 3611, 5, 101, 0, 0, 3611, 3612, 5, 108, 0, 0, 3612, 3613, 5, 101, 0, 0, 3613, 3614, 5, 109, 0, 0, 3614, 3615, 5, 46, 0, 0, 3615, 3616, 5, 114, 0, 0, 3616, 4006, 5, 56, 0, 0, 3617, 3618, 5, 115, 0, 0, 3618, 3619, 5, 116, 0, 0, 3619, 3620, 5, 101, 0, 0, 3620, 3621, 5, 108, 0, 0, 3621, 3622, 5, 101, 0, 0, 3622, 3623, 5, 109, 0, 0, 3623, 3624, 5, 46, 0, 0, 3624, 3625, 5, 114, 0, 0, 3625, 3626, 5, 101, 0, 0, 3626, 4006, 5, 102, 0, 0, 3627, 3628, 5, 99, 0, 0, 3628, 3629, 5, 111, 0, 0, 3629, 3630, 5, 110, 0, 0, 3630, 3631, 5, 118, 0, 0, 3631, 3632, 5, 46, 0, 0, 3632, 3633, 5, 111, 0, 0, 3633, 3634, 5, 118, 0, 0, 3634, 3635, 5, 102, 0, 0, 3635, 3636, 5, 46, 0, 0, 3636, 3637, 5, 105, 0, 0, 3637, 4006, 5, 49, 0, 0, 3638, 3639, 5, 99, 0, 0, 3639, 3640, 5, 111, 0, 0, 3640, 3641, 5, 110, 0, 0, 3641, 3642, 5, 118, 0, 0, 3642, 3643, 5, 46, 0, 0, 3643, 3644, 5, 111, 0, 0, 3644, 3645, 5, 118, 0, 0, 3645, 3646, 5, 102, 0, 0, 3646, 3647, 5, 46, 0, 0, 3647, 3648, 5, 117, 0, 0, 3648, 4006, 5, 49, 0, 0, 3649, 3650, 5, 99, 0, 0, 3650, 3651, 5, 111, 0, 0, 3651, 3652, 5, 110, 0, 0, 3652, 3653, 5, 118, 0, 0, 3653, 3654, 5, 46, 0, 0, 3654, 3655, 5, 111, 0, 0, 3655, 3656, 5, 118, 0, 0, 3656, 3657, 5, 102, 0, 0, 3657, 3658, 5, 46, 0, 0, 3658, 3659, 5, 105, 0, 0, 3659, 4006, 5, 50, 0, 0, 3660, 3661, 5, 99, 0, 0, 3661, 3662, 5, 111, 0, 0, 3662, 3663, 5, 110, 0, 0, 3663, 3664, 5, 118, 0, 0, 3664, 3665, 5, 46, 0, 0, 3665, 3666, 5, 111, 0, 0, 3666, 3667, 5, 118, 0, 0, 3667, 3668, 5, 102, 0, 0, 3668, 3669, 5, 46, 0, 0, 3669, 3670, 5, 117, 0, 0, 3670, 4006, 5, 50, 0, 0, 3671, 3672, 5, 99, 0, 0, 3672, 3673, 5, 111, 0, 0, 3673, 3674, 5, 110, 0, 0, 3674, 3675, 5, 118, 0, 0, 3675, 3676, 5, 46, 0, 0, 3676, 3677, 5, 111, 0, 0, 3677, 3678, 5, 118, 0, 0, 3678, 3679, 5, 102, 0, 0, 3679, 3680, 5, 46, 0, 0, 3680, 3681, 5, 105, 0, 0, 3681, 4006, 5, 52, 0, 0, 3682, 3683, 5, 99, 0, 0, 3683, 3684, 5, 111, 0, 0, 3684, 3685, 5, 110, 0, 0, 3685, 3686, 5, 118, 0, 0, 3686, 3687, 5, 46, 0, 0, 3687, 3688, 5, 111, 0, 0, 3688, 3689, 5, 118, 0, 0, 3689, 3690, 5, 102, 0, 0, 3690, 3691, 5, 46, 0, 0, 3691, 3692, 5, 117, 0, 0, 3692, 4006, 5, 52, 0, 0, 3693, 3694, 5, 99, 0, 0, 3694, 3695, 5, 111, 0, 0, 3695, 3696, 5, 110, 0, 0, 3696, 3697, 5, 118, 0, 0, 3697, 3698, 5, 46, 0, 0, 3698, 3699, 5, 111, 0, 0, 3699, 3700, 5, 118, 0, 0, 3700, 3701, 5, 102, 0, 0, 3701, 3702, 5, 46, 0, 0, 3702, 3703, 5, 105, 0, 0, 3703, 4006, 5, 56, 0, 0, 3704, 3705, 5, 99, 0, 0, 3705, 3706, 5, 111, 0, 0, 3706, 3707, 5, 110, 0, 0, 3707, 3708, 5, 118, 0, 0, 3708, 3709, 5, 46, 0, 0, 3709, 3710, 5, 111, 0, 0, 3710, 3711, 5, 118, 0, 0, 3711, 3712, 5, 102, 0, 0, 3712, 3713, 5, 46, 0, 0, 3713, 3714, 5, 117, 0, 0, 3714, 4006, 5, 56, 0, 0, 3715, 3716, 5, 99, 0, 0, 3716, 3717, 5, 107, 0, 0, 3717, 3718, 5, 102, 0, 0, 3718, 3719, 5, 105, 0, 0, 3719, 3720, 5, 110, 0, 0, 3720, 3721, 5, 105, 0, 0, 3721, 3722, 5, 116, 0, 0, 3722, 4006, 5, 101, 0, 0, 3723, 3724, 5, 99, 0, 0, 3724, 3725, 5, 111, 0, 0, 3725, 3726, 5, 110, 0, 0, 3726, 3727, 5, 118, 0, 0, 3727, 3728, 5, 46, 0, 0, 3728, 3729, 5, 117, 0, 0, 3729, 4006, 5, 50, 0, 0, 3730, 3731, 5, 99, 0, 0, 3731, 3732, 5, 111, 0, 0, 3732, 3733, 5, 110, 0, 0, 3733, 3734, 5, 118, 0, 0, 3734, 3735, 5, 46, 0, 0, 3735, 3736, 5, 117, 0, 0, 3736, 4006, 5, 49, 0, 0, 3737, 3738, 5, 99, 0, 0, 3738, 3739, 5, 111, 0, 0, 3739, 3740, 5, 110, 0, 0, 3740, 3741, 5, 118, 0, 0, 3741, 3742, 5, 46, 0, 0, 3742, 4006, 5, 105, 0, 0, 3743, 3744, 5, 99, 0, 0, 3744, 3745, 5, 111, 0, 0, 3745, 3746, 5, 110, 0, 0, 3746, 3747, 5, 118, 0, 0, 3747, 3748, 5, 46, 0, 0, 3748, 3749, 5, 111, 0, 0, 3749, 3750, 5, 118, 0, 0, 3750, 3751, 5, 102, 0, 0, 3751, 3752, 5, 46, 0, 0, 3752, 4006, 5, 105, 0, 0, 3753, 3754, 5, 99, 0, 0, 3754, 3755, 5, 111, 0, 0, 3755, 3756, 5, 110, 0, 0, 3756, 3757, 5, 118, 0, 0, 3757, 3758, 5, 46, 0, 0, 3758, 3759, 5, 111, 0, 0, 3759, 3760, 5, 118, 0, 0, 3760, 3761, 5, 102, 0, 0, 3761, 3762, 5, 46, 0, 0, 3762, 4006, 5, 117, 0, 0, 3763, 3764, 5, 97, 0, 0, 3764, 3765, 5, 100, 0, 0, 3765, 3766, 5, 100, 0, 0, 3766, 3767, 5, 46, 0, 0, 3767, 3768, 5, 111, 0, 0, 3768, 3769, 5, 118, 0, 0, 3769, 4006, 5, 102, 0, 0, 3770, 3771, 5, 97, 0, 0, 3771, 3772, 5, 100, 0, 0, 3772, 3773, 5, 100, 0, 0, 3773, 3774, 5, 46, 0, 0, 3774, 3775, 5, 111, 0, 0, 3775, 3776, 5, 118, 0, 0, 3776, 3777, 5, 102, 0, 0, 3777, 3778, 5, 46, 0, 0, 3778, 3779, 5, 117, 0, 0, 3779, 4006, 5, 110, 0, 0, 3780, 3781, 5, 109, 0, 0, 3781, 3782, 5, 117, 0, 0, 3782, 3783, 5, 108, 0, 0, 3783, 3784, 5, 46, 0, 0, 3784, 3785, 5, 111, 0, 0, 3785, 3786, 5, 118, 0, 0, 3786, 4006, 5, 102, 0, 0, 3787, 3788, 5, 109, 0, 0, 3788, 3789, 5, 117, 0, 0, 3789, 3790, 5, 108, 0, 0, 3790, 3791, 5, 46, 0, 0, 3791, 3792, 5, 111, 0, 0, 3792, 3793, 5, 118, 0, 0, 3793, 3794, 5, 102, 0, 0, 3794, 3795, 5, 46, 0, 0, 3795, 3796, 5, 117, 0, 0, 3796, 4006, 5, 110, 0, 0, 3797, 3798, 5, 115, 0, 0, 3798, 3799, 5, 117, 0, 0, 3799, 3800, 5, 98, 0, 0, 3800, 3801, 5, 46, 0, 0, 3801, 3802, 5, 111, 0, 0, 3802, 3803, 5, 118, 0, 0, 3803, 4006, 5, 102, 0, 0, 3804, 3805, 5, 115, 0, 0, 3805, 3806, 5, 117, 0, 0, 3806, 3807, 5, 98, 0, 0, 3807, 3808, 5, 46, 0, 0, 3808, 3809, 5, 111, 0, 0, 3809, 3810, 5, 118, 0, 0, 3810, 3811, 5, 102, 0, 0, 3811, 3812, 5, 46, 0, 0, 3812, 3813, 5, 117, 0, 0, 3813, 4006, 5, 110, 0, 0, 3814, 3815, 5, 101, 0, 0, 3815, 3816, 5, 110, 0, 0, 3816, 3817, 5, 100, 0, 0, 3817, 3818, 5, 102, 0, 0, 3818, 3819, 5, 105, 0, 0, 3819, 3820, 5, 110, 0, 0, 3820, 3821, 5, 97, 0, 0, 3821, 3822, 5, 108, 0, 0, 3822, 3823, 5, 108, 0, 0, 3823, 4006, 5, 121, 0, 0, 3824, 3825, 5, 115, 0, 0, 3825, 3826, 5, 116, 0, 0, 3826, 3827, 5, 105, 0, 0, 3827, 3828, 5, 110, 0, 0, 3828, 3829, 5, 100, 0, 0, 3829, 3830, 5, 46, 0, 0, 3830, 4006, 5, 105, 0, 0, 3831, 3832, 5, 99, 0, 0, 3832, 3833, 5, 111, 0, 0, 3833, 3834, 5, 110, 0, 0, 3834, 3835, 5, 118, 0, 0, 3835, 3836, 5, 46, 0, 0, 3836, 4006, 5, 117, 0, 0, 3837, 3838, 5, 112, 0, 0, 3838, 3839, 5, 114, 0, 0, 3839, 3840, 5, 101, 0, 0, 3840, 3841, 5, 102, 0, 0, 3841, 3842, 5, 105, 0, 0, 3842, 3843, 5, 120, 0, 0, 3843, 4006, 5, 55, 0, 0, 3844, 3845, 5, 112, 0, 0, 3845, 3846, 5, 114, 0, 0, 3846, 3847, 5, 101, 0, 0, 3847, 3848, 5, 102, 0, 0, 3848, 3849, 5, 105, 0, 0, 3849, 3850, 5, 120, 0, 0, 3850, 4006, 5, 54, 0, 0, 3851, 3852, 5, 112, 0, 0, 3852, 3853, 5, 114, 0, 0, 3853, 3854, 5, 101, 0, 0, 3854, 3855, 5, 102, 0, 0, 3855, 3856, 5, 105, 0, 0, 3856, 3857, 5, 120, 0, 0, 3857, 4006, 5, 53, 0, 0, 3858, 3859, 5, 112, 0, 0, 3859, 3860, 5, 114, 0, 0, 3860, 3861, 5, 101, 0, 0, 3861, 3862, 5, 102, 0, 0, 3862, 3863, 5, 105, 0, 0, 3863, 3864, 5, 120, 0, 0, 3864, 4006, 5, 52, 0, 0, 3865, 3866, 5, 112, 0, 0, 3866, 3867, 5, 114, 0, 0, 3867, 3868, 5, 101, 0, 0, 3868, 3869, 5, 102, 0, 0, 3869, 3870, 5, 105, 0, 0, 3870, 3871, 5, 120, 0, 0, 3871, 4006, 5, 51, 0, 0, 3872, 3873, 5, 112, 0, 0, 3873, 3874, 5, 114, 0, 0, 3874, 3875, 5, 101, 0, 0, 3875, 3876, 5, 102, 0, 0, 3876, 3877, 5, 105, 0, 0, 3877, 3878, 5, 120, 0, 0, 3878, 4006, 5, 50, 0, 0, 3879, 3880, 5, 112, 0, 0, 3880, 3881, 5, 114, 0, 0, 3881, 3882, 5, 101, 0, 0, 3882, 3883, 5, 102, 0, 0, 3883, 3884, 5, 105, 0, 0, 3884, 3885, 5, 120, 0, 0, 3885, 4006, 5, 49, 0, 0, 3886, 3887, 5, 112, 0, 0, 3887, 3888, 5, 114, 0, 0, 3888, 3889, 5, 101, 0, 0, 3889, 3890, 5, 102, 0, 0, 3890, 3891, 5, 105, 0, 0, 3891, 3892, 5, 120, 0, 0, 3892, 3893, 5, 114, 0, 0, 3893, 3894, 5, 101, 0, 0, 3894, 4006, 5, 102, 0, 0, 3895, 3896, 5, 97, 0, 0, 3896, 3897, 5, 114, 0, 0, 3897, 3898, 5, 103, 0, 0, 3898, 3899, 5, 108, 0, 0, 3899, 3900, 5, 105, 0, 0, 3900, 3901, 5, 115, 0, 0, 3901, 4006, 5, 116, 0, 0, 3902, 3903, 5, 99, 0, 0, 3903, 3904, 5, 101, 0, 0, 3904, 4006, 5, 113, 0, 0, 3905, 3906, 5, 99, 0, 0, 3906, 3907, 5, 103, 0, 0, 3907, 4006, 5, 116, 0, 0, 3908, 3909, 5, 99, 0, 0, 3909, 3910, 5, 103, 0, 0, 3910, 3911, 5, 116, 0, 0, 3911, 3912, 5, 46, 0, 0, 3912, 3913, 5, 117, 0, 0, 3913, 4006, 5, 110, 0, 0, 3914, 3915, 5, 99, 0, 0, 3915, 3916, 5, 108, 0, 0, 3916, 4006, 5, 116, 0, 0, 3917, 3918, 5, 99, 0, 0, 3918, 3919, 5, 108, 0, 0, 3919, 3920, 5, 116, 0, 0, 3920, 3921, 5, 46, 0, 0, 3921, 3922, 5, 117, 0, 0, 3922, 4006, 5, 110, 0, 0, 3923, 3924, 5, 108, 0, 0, 3924, 3925, 5, 111, 0, 0, 3925, 3926, 5, 99, 0, 0, 3926, 3927, 5, 97, 0, 0, 3927, 3928, 5, 108, 0, 0, 3928, 3929, 5, 108, 0, 0, 3929, 3930, 5, 111, 0, 0, 3930, 4006, 5, 99, 0, 0, 3931, 3932, 5, 101, 0, 0, 3932, 3933, 5, 110, 0, 0, 3933, 3934, 5, 100, 0, 0, 3934, 3935, 5, 102, 0, 0, 3935, 3936, 5, 105, 0, 0, 3936, 3937, 5, 108, 0, 0, 3937, 3938, 5, 116, 0, 0, 3938, 3939, 5, 101, 0, 0, 3939, 4006, 5, 114, 0, 0, 3940, 3941, 5, 118, 0, 0, 3941, 3942, 5, 111, 0, 0, 3942, 3943, 5, 108, 0, 0, 3943, 3944, 5, 97, 0, 0, 3944, 3945, 5, 116, 0, 0, 3945, 3946, 5, 105, 0, 0, 3946, 3947, 5, 108, 0, 0, 3947, 3948, 5, 101, 0, 0, 3948, 4006, 5, 46, 0, 0, 3949, 3950, 5, 116, 0, 0, 3950, 3951, 5, 97, 0, 0, 3951, 3952, 5, 105, 0, 0, 3952, 3953, 5, 108, 0, 0, 3953, 4006, 5, 46, 0, 0, 3954, 3955, 5, 99, 0, 0, 3955, 3956, 5, 112, 0, 0, 3956, 3957, 5, 98, 0, 0, 3957, 3958, 5, 108, 0, 0, 3958, 4006, 5, 107, 0, 0, 3959, 3960, 5, 105, 0, 0, 3960, 3961, 5, 110, 0, 0, 3961, 3962, 5, 105, 0, 0, 3962, 3963, 5, 116, 0, 0, 3963, 3964, 5, 98, 0, 0, 3964, 3965, 5, 108, 0, 0, 3965, 4006, 5, 107, 0, 0, 3966, 3967, 5, 114, 0, 0, 3967, 3968, 5, 101, 0, 0, 3968, 3969, 5, 116, 0, 0, 3969, 3970, 5, 104, 0, 0, 3970, 3971, 5, 114, 0, 0, 3971, 3972, 5, 111, 0, 0, 3972, 4006, 5, 119, 0, 0, 3973, 3974, 5, 114, 0, 0, 3974, 3975, 5, 101, 0, 0, 3975, 3976, 5, 102, 0, 0, 3976, 3977, 5, 97, 0, 0, 3977, 3978, 5, 110, 0, 0, 3978, 3979, 5, 121, 0, 0, 3979, 3980, 5, 116, 0, 0, 3980, 3981, 5, 121, 0, 0, 3981, 3982, 5, 112, 0, 0, 3982, 4006, 5, 101, 0, 0, 3983, 3984, 5, 114, 0, 0, 3984, 3985, 5, 101, 0, 0, 3985, 3986, 5, 97, 0, 0, 3986, 3987, 5, 100, 0, 0, 3987, 3988, 5, 111, 0, 0, 3988, 3989, 5, 110, 0, 0, 3989, 3990, 5, 108, 0, 0, 3990, 3991, 5, 121, 0, 0, 3991, 4006, 5, 46, 0, 0, 3992, 3993, 5, 105, 0, 0, 3993, 3994, 5, 108, 0, 0, 3994, 3995, 5, 108, 0, 0, 3995, 3996, 5, 101, 0, 0, 3996, 3997, 5, 103, 0, 0, 3997, 3998, 5, 97, 0, 0, 3998, 4006, 5, 108, 0, 0, 3999, 4000, 5, 101, 0, 0, 4000, 4001, 5, 110, 0, 0, 4001, 4002, 5, 100, 0, 0, 4002, 4003, 5, 109, 0, 0, 4003, 4004, 5, 97, 0, 0, 4004, 4006, 5, 99, 0, 0, 4005, 2857, 1, 0, 0, 0, 4005, 2860, 1, 0, 0, 0, 4005, 2865, 1, 0, 0, 0, 4005, 2872, 1, 0, 0, 0, 4005, 2879, 1, 0, 0, 0, 4005, 2886, 1, 0, 0, 0, 4005, 2893, 1, 0, 0, 0, 4005, 2900, 1, 0, 0, 0, 4005, 2907, 1, 0, 0, 0, 4005, 2914, 1, 0, 0, 0, 4005, 2921, 1, 0, 0, 0, 4005, 2928, 1, 0, 0, 0, 4005, 2935, 1, 0, 0, 0, 4005, 2942, 1, 0, 0, 0, 4005, 2949, 1, 0, 0, 0, 4005, 2955, 1, 0, 0, 0, 4005, 2964, 1, 0, 0, 0, 4005, 2972, 1, 0, 0, 0, 4005, 2980, 1, 0, 0, 0, 4005, 2988, 1, 0, 0, 0, 4005, 2996, 1, 0, 0, 0, 4005, 3004, 1, 0, 0, 0, 4005, 3012, 1, 0, 0, 0, 4005, 3020, 1, 0, 0, 0, 4005, 3028, 1, 0, 0, 0, 4005, 3036, 1, 0, 0, 0, 4005, 3039, 1, 0, 0, 0, 4005, 3042, 1, 0, 0, 0, 4005, 3045, 1, 0, 0, 0, 4005, 3053, 1, 0, 0, 0, 4005, 3061, 1, 0, 0, 0, 4005, 3069, 1, 0, 0, 0, 4005, 3077, 1, 0, 0, 0, 4005, 3085, 1, 0, 0, 0, 4005, 3093, 1, 0, 0, 0, 4005, 3101, 1, 0, 0, 0, 4005, 3108, 1, 0, 0, 0, 4005, 3116, 1, 0, 0, 0, 4005, 3124, 1, 0, 0, 0, 4005, 3133, 1, 0, 0, 0, 4005, 3142, 1, 0, 0, 0, 4005, 3150, 1, 0, 0, 0, 4005, 3158, 1, 0, 0, 0, 4005, 3166, 1, 0, 0, 0, 4005, 3174, 1, 0, 0, 0, 4005, 3182, 1, 0, 0, 0, 4005, 3190, 1, 0, 0, 0, 4005, 3193, 1, 0, 0, 0, 4005, 3196, 1, 0, 0, 0, 4005, 3199, 1, 0, 0, 0, 4005, 3202, 1, 0, 0, 0, 4005, 3208, 1, 0, 0, 0, 4005, 3211, 1, 0, 0, 0, 4005, 3217, 1, 0, 0, 0, 4005, 3220, 1, 0, 0, 0, 4005, 3222, 1, 0, 0, 0, 4005, 3225, 1, 0, 0, 0, 4005, 3228, 1, 0, 0, 0, 4005, 3231, 1, 0, 0, 0, 4005, 3237, 1, 0, 0, 0, 4005, 3240, 1, 0, 0, 0, 4005, 3243, 1, 0, 0, 0, 4005, 3250, 1, 0, 0, 0, 4005, 3257, 1, 0, 0, 0, 4005, 3264, 1, 0, 0, 0, 4005, 3271, 1, 0, 0, 0, 4005, 3278, 1, 0, 0, 0, 4005, 3285, 1, 0, 0, 0, 4005, 3292, 1, 0, 0, 0, 4005, 3299, 1, 0, 0, 0, 4005, 3308, 1, 0, 0, 0, 4005, 3313, 1, 0, 0, 0, 4005, 3327, 1, 0, 0, 0, 4005, 3341, 1, 0, 0, 0, 4005, 3355, 1, 0, 0, 0, 4005, 3369, 1, 0, 0, 0, 4005, 3383, 1, 0, 0, 0, 4005, 3397, 1, 0, 0, 0, 4005, 3411, 1, 0, 0, 0, 4005, 3425, 1, 0, 0, 0, 4005, 3438, 1, 0, 0, 0, 4005, 3451, 1, 0, 0, 0, 4005, 3456, 1, 0, 0, 0, 4005, 3465, 1, 0, 0, 0, 4005, 3474, 1, 0, 0, 0, 4005, 3483, 1, 0, 0, 0, 4005, 3492, 1, 0, 0, 0, 4005, 3501, 1, 0, 0, 0, 4005, 3510, 1, 0, 0, 0, 4005, 3519, 1, 0, 0, 0, 4005, 3527, 1, 0, 0, 0, 4005, 3536, 1, 0, 0, 0, 4005, 3545, 1, 0, 0, 0, 4005, 3555, 1, 0, 0, 0, 4005, 3563, 1, 0, 0, 0, 4005, 3572, 1, 0, 0, 0, 4005, 3581, 1, 0, 0, 0, 4005, 3590, 1, 0, 0, 0, 4005, 3599, 1, 0, 0, 0, 4005, 3608, 1, 0, 0, 0, 4005, 3617, 1, 0, 0, 0, 4005, 3627, 1, 0, 0, 0, 4005, 3638, 1, 0, 0, 0, 4005, 3649, 1, 0, 0, 0, 4005, 3660, 1, 0, 0, 0, 4005, 3671, 1, 0, 0, 0, 4005, 3682, 1, 0, 0, 0, 4005, 3693, 1, 0, 0, 0, 4005, 3704, 1, 0, 0, 0, 4005, 3715, 1, 0, 0, 0, 4005, 3723, 1, 0, 0, 0, 4005, 3730, 1, 0, 0, 0, 4005, 3737, 1, 0, 0, 0, 4005, 3743, 1, 0, 0, 0, 4005, 3753, 1, 0, 0, 0, 4005, 3763, 1, 0, 0, 0, 4005, 3770, 1, 0, 0, 0, 4005, 3780, 1, 0, 0, 0, 4005, 3787, 1, 0, 0, 0, 4005, 3797, 1, 0, 0, 0, 4005, 3804, 1, 0, 0, 0, 4005, 3814, 1, 0, 0, 0, 4005, 3824, 1, 0, 0, 0, 4005, 3831, 1, 0, 0, 0, 4005, 3837, 1, 0, 0, 0, 4005, 3844, 1, 0, 0, 0, 4005, 3851, 1, 0, 0, 0, 4005, 3858, 1, 0, 0, 0, 4005, 3865, 1, 0, 0, 0, 4005, 3872, 1, 0, 0, 0, 4005, 3879, 1, 0, 0, 0, 4005, 3886, 1, 0, 0, 0, 4005, 3895, 1, 0, 0, 0, 4005, 3902, 1, 0, 0, 0, 4005, 3905, 1, 0, 0, 0, 4005, 3908, 1, 0, 0, 0, 4005, 3914, 1, 0, 0, 0, 4005, 3917, 1, 0, 0, 0, 4005, 3923, 1, 0, 0, 0, 4005, 3931, 1, 0, 0, 0, 4005, 3940, 1, 0, 0, 0, 4005, 3949, 1, 0, 0, 0, 4005, 3954, 1, 0, 0, 0, 4005, 3959, 1, 0, 0, 0, 4005, 3966, 1, 0, 0, 0, 4005, 3973, 1, 0, 0, 0, 4005, 3983, 1, 0, 0, 0, 4005, 3992, 1, 0, 0, 0, 4005, 3999, 1, 0, 0, 0, 4006, 556, 1, 0, 0, 0, 4007, 4008, 5, 108, 0, 0, 4008, 4009, 5, 100, 0, 0, 4009, 4010, 5, 97, 0, 0, 4010, 4011, 5, 114, 0, 0, 4011, 4012, 5, 103, 0, 0, 4012, 4013, 5, 46, 0, 0, 4013, 4084, 5, 115, 0, 0, 4014, 4015, 5, 108, 0, 0, 4015, 4016, 5, 100, 0, 0, 4016, 4017, 5, 97, 0, 0, 4017, 4018, 5, 114, 0, 0, 4018, 4019, 5, 103, 0, 0, 4019, 4020, 5, 97, 0, 0, 4020, 4021, 5, 46, 0, 0, 4021, 4084, 5, 115, 0, 0, 4022, 4023, 5, 115, 0, 0, 4023, 4024, 5, 116, 0, 0, 4024, 4025, 5, 97, 0, 0, 4025, 4026, 5, 114, 0, 0, 4026, 4027, 5, 103, 0, 0, 4027, 4028, 5, 46, 0, 0, 4028, 4084, 5, 115, 0, 0, 4029, 4030, 5, 108, 0, 0, 4030, 4031, 5, 100, 0, 0, 4031, 4032, 5, 108, 0, 0, 4032, 4033, 5, 111, 0, 0, 4033, 4034, 5, 99, 0, 0, 4034, 4035, 5, 46, 0, 0, 4035, 4084, 5, 115, 0, 0, 4036, 4037, 5, 108, 0, 0, 4037, 4038, 5, 100, 0, 0, 4038, 4039, 5, 108, 0, 0, 4039, 4040, 5, 111, 0, 0, 4040, 4041, 5, 99, 0, 0, 4041, 4042, 5, 97, 0, 0, 4042, 4043, 5, 46, 0, 0, 4043, 4084, 5, 115, 0, 0, 4044, 4045, 5, 115, 0, 0, 4045, 4046, 5, 116, 0, 0, 4046, 4047, 5, 108, 0, 0, 4047, 4048, 5, 111, 0, 0, 4048, 4049, 5, 99, 0, 0, 4049, 4050, 5, 46, 0, 0, 4050, 4084, 5, 115, 0, 0, 4051, 4052, 5, 108, 0, 0, 4052, 4053, 5, 100, 0, 0, 4053, 4054, 5, 97, 0, 0, 4054, 4055, 5, 114, 0, 0, 4055, 4084, 5, 103, 0, 0, 4056, 4057, 5, 108, 0, 0, 4057, 4058, 5, 100, 0, 0, 4058, 4059, 5, 97, 0, 0, 4059, 4060, 5, 114, 0, 0, 4060, 4061, 5, 103, 0, 0, 4061, 4084, 5, 97, 0, 0, 4062, 4063, 5, 115, 0, 0, 4063, 4064, 5, 116, 0, 0, 4064, 4065, 5, 97, 0, 0, 4065, 4066, 5, 114, 0, 0, 4066, 4084, 5, 103, 0, 0, 4067, 4068, 5, 108, 0, 0, 4068, 4069, 5, 100, 0, 0, 4069, 4070, 5, 108, 0, 0, 4070, 4071, 5, 111, 0, 0, 4071, 4084, 5, 99, 0, 0, 4072, 4073, 5, 108, 0, 0, 4073, 4074, 5, 100, 0, 0, 4074, 4075, 5, 108, 0, 0, 4075, 4076, 5, 111, 0, 0, 4076, 4077, 5, 99, 0, 0, 4077, 4084, 5, 97, 0, 0, 4078, 4079, 5, 115, 0, 0, 4079, 4080, 5, 116, 0, 0, 4080, 4081, 5, 108, 0, 0, 4081, 4082, 5, 111, 0, 0, 4082, 4084, 5, 99, 0, 0, 4083, 4007, 1, 0, 0, 0, 4083, 4014, 1, 0, 0, 0, 4083, 4022, 1, 0, 0, 0, 4083, 4029, 1, 0, 0, 0, 4083, 4036, 1, 0, 0, 0, 4083, 4044, 1, 0, 0, 0, 4083, 4051, 1, 0, 0, 0, 4083, 4056, 1, 0, 0, 0, 4083, 4062, 1, 0, 0, 0, 4083, 4067, 1, 0, 0, 0, 4083, 4072, 1, 0, 0, 0, 4083, 4078, 1, 0, 0, 0, 4084, 558, 1, 0, 0, 0, 4085, 4086, 5, 108, 0, 0, 4086, 4087, 5, 100, 0, 0, 4087, 4088, 5, 99, 0, 0, 4088, 4089, 5, 46, 0, 0, 4089, 4090, 5, 105, 0, 0, 4090, 4091, 5, 52, 0, 0, 4091, 4092, 5, 46, 0, 0, 4092, 4113, 5, 115, 0, 0, 4093, 4094, 5, 108, 0, 0, 4094, 4095, 5, 100, 0, 0, 4095, 4096, 5, 99, 0, 0, 4096, 4097, 5, 46, 0, 0, 4097, 4098, 5, 105, 0, 0, 4098, 4113, 5, 52, 0, 0, 4099, 4100, 5, 117, 0, 0, 4100, 4101, 5, 110, 0, 0, 4101, 4102, 5, 97, 0, 0, 4102, 4103, 5, 108, 0, 0, 4103, 4104, 5, 105, 0, 0, 4104, 4105, 5, 103, 0, 0, 4105, 4106, 5, 110, 0, 0, 4106, 4107, 5, 101, 0, 0, 4107, 4108, 5, 100, 0, 0, 4108, 4113, 5, 46, 0, 0, 4109, 4110, 5, 110, 0, 0, 4110, 4111, 5, 111, 0, 0, 4111, 4113, 5, 46, 0, 0, 4112, 4085, 1, 0, 0, 0, 4112, 4093, 1, 0, 0, 0, 4112, 4099, 1, 0, 0, 0, 4112, 4109, 1, 0, 0, 0, 4113, 560, 1, 0, 0, 0, 4114, 4115, 5, 108, 0, 0, 4115, 4116, 5, 100, 0, 0, 4116, 4117, 5, 99, 0, 0, 4117, 4118, 5, 46, 0, 0, 4118, 4119, 5, 105, 0, 0, 4119, 4120, 5, 56, 0, 0, 4120, 562, 1, 0, 0, 0, 4121, 4122, 5, 108, 0, 0, 4122, 4123, 5, 100, 0, 0, 4123, 4124, 5, 99, 0, 0, 4124, 4125, 5, 46, 0, 0, 4125, 4126, 5, 114, 0, 0, 4126, 4134, 5, 52, 0, 0, 4127, 4128, 5, 108, 0, 0, 4128, 4129, 5, 100, 0, 0, 4129, 4130, 5, 99, 0, 0, 4130, 4131, 5, 46, 0, 0, 4131, 4132, 5, 114, 0, 0, 4132, 4134, 5, 56, 0, 0, 4133, 4121, 1, 0, 0, 0, 4133, 4127, 1, 0, 0, 0, 4134, 564, 1, 0, 0, 0, 4135, 4136, 5, 106, 0, 0, 4136, 4137, 5, 109, 0, 0, 4137, 4171, 5, 112, 0, 0, 4138, 4139, 5, 99, 0, 0, 4139, 4140, 5, 97, 0, 0, 4140, 4141, 5, 108, 0, 0, 4141, 4171, 5, 108, 0, 0, 4142, 4143, 5, 99, 0, 0, 4143, 4144, 5, 97, 0, 0, 4144, 4145, 5, 108, 0, 0, 4145, 4146, 5, 108, 0, 0, 4146, 4147, 5, 118, 0, 0, 4147, 4148, 5, 105, 0, 0, 4148, 4149, 5, 114, 0, 0, 4149, 4171, 5, 116, 0, 0, 4150, 4151, 5, 110, 0, 0, 4151, 4152, 5, 101, 0, 0, 4152, 4153, 5, 119, 0, 0, 4153, 4154, 5, 111, 0, 0, 4154, 4155, 5, 98, 0, 0, 4155, 4171, 5, 106, 0, 0, 4156, 4157, 5, 108, 0, 0, 4157, 4158, 5, 100, 0, 0, 4158, 4159, 5, 102, 0, 0, 4159, 4160, 5, 116, 0, 0, 4160, 4171, 5, 110, 0, 0, 4161, 4162, 5, 108, 0, 0, 4162, 4163, 5, 100, 0, 0, 4163, 4164, 5, 118, 0, 0, 4164, 4165, 5, 105, 0, 0, 4165, 4166, 5, 114, 0, 0, 4166, 4167, 5, 116, 0, 0, 4167, 4168, 5, 102, 0, 0, 4168, 4169, 5, 116, 0, 0, 4169, 4171, 5, 110, 0, 0, 4170, 4135, 1, 0, 0, 0, 4170, 4138, 1, 0, 0, 0, 4170, 4142, 1, 0, 0, 0, 4170, 4150, 1, 0, 0, 0, 4170, 4156, 1, 0, 0, 0, 4170, 4161, 1, 0, 0, 0, 4171, 566, 1, 0, 0, 0, 4172, 4173, 5, 99, 0, 0, 4173, 4174, 5, 97, 0, 0, 4174, 4175, 5, 108, 0, 0, 4175, 4176, 5, 108, 0, 0, 4176, 4177, 5, 105, 0, 0, 4177, 568, 1, 0, 0, 0, 4178, 4179, 5, 98, 0, 0, 4179, 4180, 5, 114, 0, 0, 4180, 4181, 5, 46, 0, 0, 4181, 4337, 5, 115, 0, 0, 4182, 4183, 5, 98, 0, 0, 4183, 4184, 5, 114, 0, 0, 4184, 4185, 5, 102, 0, 0, 4185, 4186, 5, 97, 0, 0, 4186, 4187, 5, 108, 0, 0, 4187, 4188, 5, 115, 0, 0, 4188, 4189, 5, 101, 0, 0, 4189, 4190, 5, 46, 0, 0, 4190, 4337, 5, 115, 0, 0, 4191, 4192, 5, 98, 0, 0, 4192, 4193, 5, 114, 0, 0, 4193, 4194, 5, 116, 0, 0, 4194, 4195, 5, 114, 0, 0, 4195, 4196, 5, 117, 0, 0, 4196, 4197, 5, 101, 0, 0, 4197, 4198, 5, 46, 0, 0, 4198, 4337, 5, 115, 0, 0, 4199, 4200, 5, 98, 0, 0, 4200, 4201, 5, 101, 0, 0, 4201, 4202, 5, 113, 0, 0, 4202, 4203, 5, 46, 0, 0, 4203, 4337, 5, 115, 0, 0, 4204, 4205, 5, 98, 0, 0, 4205, 4206, 5, 103, 0, 0, 4206, 4207, 5, 101, 0, 0, 4207, 4208, 5, 46, 0, 0, 4208, 4337, 5, 115, 0, 0, 4209, 4210, 5, 98, 0, 0, 4210, 4211, 5, 103, 0, 0, 4211, 4212, 5, 116, 0, 0, 4212, 4213, 5, 46, 0, 0, 4213, 4337, 5, 115, 0, 0, 4214, 4215, 5, 98, 0, 0, 4215, 4216, 5, 108, 0, 0, 4216, 4217, 5, 101, 0, 0, 4217, 4218, 5, 46, 0, 0, 4218, 4337, 5, 115, 0, 0, 4219, 4220, 5, 98, 0, 0, 4220, 4221, 5, 108, 0, 0, 4221, 4222, 5, 116, 0, 0, 4222, 4223, 5, 46, 0, 0, 4223, 4337, 5, 115, 0, 0, 4224, 4225, 5, 98, 0, 0, 4225, 4226, 5, 110, 0, 0, 4226, 4227, 5, 101, 0, 0, 4227, 4228, 5, 46, 0, 0, 4228, 4229, 5, 117, 0, 0, 4229, 4230, 5, 110, 0, 0, 4230, 4231, 5, 46, 0, 0, 4231, 4337, 5, 115, 0, 0, 4232, 4233, 5, 98, 0, 0, 4233, 4234, 5, 103, 0, 0, 4234, 4235, 5, 101, 0, 0, 4235, 4236, 5, 46, 0, 0, 4236, 4237, 5, 117, 0, 0, 4237, 4238, 5, 110, 0, 0, 4238, 4239, 5, 46, 0, 0, 4239, 4337, 5, 115, 0, 0, 4240, 4241, 5, 98, 0, 0, 4241, 4242, 5, 103, 0, 0, 4242, 4243, 5, 116, 0, 0, 4243, 4244, 5, 46, 0, 0, 4244, 4245, 5, 117, 0, 0, 4245, 4246, 5, 110, 0, 0, 4246, 4247, 5, 46, 0, 0, 4247, 4337, 5, 115, 0, 0, 4248, 4249, 5, 98, 0, 0, 4249, 4250, 5, 108, 0, 0, 4250, 4251, 5, 101, 0, 0, 4251, 4252, 5, 46, 0, 0, 4252, 4253, 5, 117, 0, 0, 4253, 4254, 5, 110, 0, 0, 4254, 4255, 5, 46, 0, 0, 4255, 4337, 5, 115, 0, 0, 4256, 4257, 5, 98, 0, 0, 4257, 4258, 5, 108, 0, 0, 4258, 4259, 5, 116, 0, 0, 4259, 4260, 5, 46, 0, 0, 4260, 4261, 5, 117, 0, 0, 4261, 4262, 5, 110, 0, 0, 4262, 4263, 5, 46, 0, 0, 4263, 4337, 5, 115, 0, 0, 4264, 4265, 5, 98, 0, 0, 4265, 4337, 5, 114, 0, 0, 4266, 4267, 5, 98, 0, 0, 4267, 4268, 5, 114, 0, 0, 4268, 4269, 5, 102, 0, 0, 4269, 4270, 5, 97, 0, 0, 4270, 4271, 5, 108, 0, 0, 4271, 4272, 5, 115, 0, 0, 4272, 4337, 5, 101, 0, 0, 4273, 4274, 5, 98, 0, 0, 4274, 4275, 5, 114, 0, 0, 4275, 4276, 5, 116, 0, 0, 4276, 4277, 5, 114, 0, 0, 4277, 4278, 5, 117, 0, 0, 4278, 4337, 5, 101, 0, 0, 4279, 4280, 5, 98, 0, 0, 4280, 4281, 5, 101, 0, 0, 4281, 4337, 5, 113, 0, 0, 4282, 4283, 5, 98, 0, 0, 4283, 4284, 5, 103, 0, 0, 4284, 4337, 5, 101, 0, 0, 4285, 4286, 5, 98, 0, 0, 4286, 4287, 5, 103, 0, 0, 4287, 4337, 5, 116, 0, 0, 4288, 4289, 5, 98, 0, 0, 4289, 4290, 5, 108, 0, 0, 4290, 4337, 5, 101, 0, 0, 4291, 4292, 5, 98, 0, 0, 4292, 4293, 5, 108, 0, 0, 4293, 4337, 5, 116, 0, 0, 4294, 4295, 5, 98, 0, 0, 4295, 4296, 5, 110, 0, 0, 4296, 4297, 5, 101, 0, 0, 4297, 4298, 5, 46, 0, 0, 4298, 4299, 5, 117, 0, 0, 4299, 4337, 5, 110, 0, 0, 4300, 4301, 5, 98, 0, 0, 4301, 4302, 5, 103, 0, 0, 4302, 4303, 5, 101, 0, 0, 4303, 4304, 5, 46, 0, 0, 4304, 4305, 5, 117, 0, 0, 4305, 4337, 5, 110, 0, 0, 4306, 4307, 5, 98, 0, 0, 4307, 4308, 5, 103, 0, 0, 4308, 4309, 5, 116, 0, 0, 4309, 4310, 5, 46, 0, 0, 4310, 4311, 5, 117, 0, 0, 4311, 4337, 5, 110, 0, 0, 4312, 4313, 5, 98, 0, 0, 4313, 4314, 5, 108, 0, 0, 4314, 4315, 5, 101, 0, 0, 4315, 4316, 5, 46, 0, 0, 4316, 4317, 5, 117, 0, 0, 4317, 4337, 5, 110, 0, 0, 4318, 4319, 5, 98, 0, 0, 4319, 4320, 5, 108, 0, 0, 4320, 4321, 5, 116, 0, 0, 4321, 4322, 5, 46, 0, 0, 4322, 4323, 5, 117, 0, 0, 4323, 4337, 5, 110, 0, 0, 4324, 4325, 5, 108, 0, 0, 4325, 4326, 5, 101, 0, 0, 4326, 4327, 5, 97, 0, 0, 4327, 4328, 5, 118, 0, 0, 4328, 4337, 5, 101, 0, 0, 4329, 4330, 5, 108, 0, 0, 4330, 4331, 5, 101, 0, 0, 4331, 4332, 5, 97, 0, 0, 4332, 4333, 5, 118, 0, 0, 4333, 4334, 5, 101, 0, 0, 4334, 4335, 5, 46, 0, 0, 4335, 4337, 5, 115, 0, 0, 4336, 4178, 1, 0, 0, 0, 4336, 4182, 1, 0, 0, 0, 4336, 4191, 1, 0, 0, 0, 4336, 4199, 1, 0, 0, 0, 4336, 4204, 1, 0, 0, 0, 4336, 4209, 1, 0, 0, 0, 4336, 4214, 1, 0, 0, 0, 4336, 4219, 1, 0, 0, 0, 4336, 4224, 1, 0, 0, 0, 4336, 4232, 1, 0, 0, 0, 4336, 4240, 1, 0, 0, 0, 4336, 4248, 1, 0, 0, 0, 4336, 4256, 1, 0, 0, 0, 4336, 4264, 1, 0, 0, 0, 4336, 4266, 1, 0, 0, 0, 4336, 4273, 1, 0, 0, 0, 4336, 4279, 1, 0, 0, 0, 4336, 4282, 1, 0, 0, 0, 4336, 4285, 1, 0, 0, 0, 4336, 4288, 1, 0, 0, 0, 4336, 4291, 1, 0, 0, 0, 4336, 4294, 1, 0, 0, 0, 4336, 4300, 1, 0, 0, 0, 4336, 4306, 1, 0, 0, 0, 4336, 4312, 1, 0, 0, 0, 4336, 4318, 1, 0, 0, 0, 4336, 4324, 1, 0, 0, 0, 4336, 4329, 1, 0, 0, 0, 4337, 570, 1, 0, 0, 0, 4338, 4339, 5, 115, 0, 0, 4339, 4340, 5, 119, 0, 0, 4340, 4341, 5, 105, 0, 0, 4341, 4342, 5, 116, 0, 0, 4342, 4343, 5, 99, 0, 0, 4343, 4344, 5, 104, 0, 0, 4344, 572, 1, 0, 0, 0, 4345, 4346, 5, 99, 0, 0, 4346, 4347, 5, 112, 0, 0, 4347, 4348, 5, 111, 0, 0, 4348, 4349, 5, 98, 0, 0, 4349, 4460, 5, 106, 0, 0, 4350, 4351, 5, 108, 0, 0, 4351, 4352, 5, 100, 0, 0, 4352, 4353, 5, 111, 0, 0, 4353, 4354, 5, 98, 0, 0, 4354, 4460, 5, 106, 0, 0, 4355, 4356, 5, 99, 0, 0, 4356, 4357, 5, 97, 0, 0, 4357, 4358, 5, 115, 0, 0, 4358, 4359, 5, 116, 0, 0, 4359, 4360, 5, 99, 0, 0, 4360, 4361, 5, 108, 0, 0, 4361, 4362, 5, 97, 0, 0, 4362, 4363, 5, 115, 0, 0, 4363, 4460, 5, 115, 0, 0, 4364, 4365, 5, 105, 0, 0, 4365, 4366, 5, 115, 0, 0, 4366, 4367, 5, 105, 0, 0, 4367, 4368, 5, 110, 0, 0, 4368, 4369, 5, 115, 0, 0, 4369, 4460, 5, 116, 0, 0, 4370, 4371, 5, 117, 0, 0, 4371, 4372, 5, 110, 0, 0, 4372, 4373, 5, 98, 0, 0, 4373, 4374, 5, 111, 0, 0, 4374, 4460, 5, 120, 0, 0, 4375, 4376, 5, 115, 0, 0, 4376, 4377, 5, 116, 0, 0, 4377, 4378, 5, 111, 0, 0, 4378, 4379, 5, 98, 0, 0, 4379, 4460, 5, 106, 0, 0, 4380, 4381, 5, 98, 0, 0, 4381, 4382, 5, 111, 0, 0, 4382, 4460, 5, 120, 0, 0, 4383, 4384, 5, 110, 0, 0, 4384, 4385, 5, 101, 0, 0, 4385, 4386, 5, 119, 0, 0, 4386, 4387, 5, 97, 0, 0, 4387, 4388, 5, 114, 0, 0, 4388, 4460, 5, 114, 0, 0, 4389, 4390, 5, 108, 0, 0, 4390, 4391, 5, 100, 0, 0, 4391, 4392, 5, 101, 0, 0, 4392, 4393, 5, 108, 0, 0, 4393, 4394, 5, 101, 0, 0, 4394, 4395, 5, 109, 0, 0, 4395, 4460, 5, 97, 0, 0, 4396, 4397, 5, 108, 0, 0, 4397, 4398, 5, 100, 0, 0, 4398, 4399, 5, 101, 0, 0, 4399, 4400, 5, 108, 0, 0, 4400, 4401, 5, 101, 0, 0, 4401, 4460, 5, 109, 0, 0, 4402, 4403, 5, 115, 0, 0, 4403, 4404, 5, 116, 0, 0, 4404, 4405, 5, 101, 0, 0, 4405, 4406, 5, 108, 0, 0, 4406, 4407, 5, 101, 0, 0, 4407, 4460, 5, 109, 0, 0, 4408, 4409, 5, 117, 0, 0, 4409, 4410, 5, 110, 0, 0, 4410, 4411, 5, 98, 0, 0, 4411, 4412, 5, 111, 0, 0, 4412, 4413, 5, 120, 0, 0, 4413, 4414, 5, 46, 0, 0, 4414, 4415, 5, 97, 0, 0, 4415, 4416, 5, 110, 0, 0, 4416, 4460, 5, 121, 0, 0, 4417, 4418, 5, 114, 0, 0, 4418, 4419, 5, 101, 0, 0, 4419, 4420, 5, 102, 0, 0, 4420, 4421, 5, 97, 0, 0, 4421, 4422, 5, 110, 0, 0, 4422, 4423, 5, 121, 0, 0, 4423, 4424, 5, 118, 0, 0, 4424, 4425, 5, 97, 0, 0, 4425, 4460, 5, 108, 0, 0, 4426, 4427, 5, 109, 0, 0, 4427, 4428, 5, 107, 0, 0, 4428, 4429, 5, 114, 0, 0, 4429, 4430, 5, 101, 0, 0, 4430, 4431, 5, 102, 0, 0, 4431, 4432, 5, 97, 0, 0, 4432, 4433, 5, 110, 0, 0, 4433, 4460, 5, 121, 0, 0, 4434, 4435, 5, 105, 0, 0, 4435, 4436, 5, 110, 0, 0, 4436, 4437, 5, 105, 0, 0, 4437, 4438, 5, 116, 0, 0, 4438, 4439, 5, 111, 0, 0, 4439, 4440, 5, 98, 0, 0, 4440, 4460, 5, 106, 0, 0, 4441, 4442, 5, 99, 0, 0, 4442, 4443, 5, 111, 0, 0, 4443, 4444, 5, 110, 0, 0, 4444, 4445, 5, 115, 0, 0, 4445, 4446, 5, 116, 0, 0, 4446, 4447, 5, 114, 0, 0, 4447, 4448, 5, 97, 0, 0, 4448, 4449, 5, 105, 0, 0, 4449, 4450, 5, 110, 0, 0, 4450, 4451, 5, 101, 0, 0, 4451, 4452, 5, 100, 0, 0, 4452, 4460, 5, 46, 0, 0, 4453, 4454, 5, 115, 0, 0, 4454, 4455, 5, 105, 0, 0, 4455, 4456, 5, 122, 0, 0, 4456, 4457, 5, 101, 0, 0, 4457, 4458, 5, 111, 0, 0, 4458, 4460, 5, 102, 0, 0, 4459, 4345, 1, 0, 0, 0, 4459, 4350, 1, 0, 0, 0, 4459, 4355, 1, 0, 0, 0, 4459, 4364, 1, 0, 0, 0, 4459, 4370, 1, 0, 0, 0, 4459, 4375, 1, 0, 0, 0, 4459, 4380, 1, 0, 0, 0, 4459, 4383, 1, 0, 0, 0, 4459, 4389, 1, 0, 0, 0, 4459, 4396, 1, 0, 0, 0, 4459, 4402, 1, 0, 0, 0, 4459, 4408, 1, 0, 0, 0, 4459, 4417, 1, 0, 0, 0, 4459, 4426, 1, 0, 0, 0, 4459, 4434, 1, 0, 0, 0, 4459, 4441, 1, 0, 0, 0, 4459, 4453, 1, 0, 0, 0, 4460, 574, 1, 0, 0, 0, 4461, 4462, 5, 108, 0, 0, 4462, 4463, 5, 100, 0, 0, 4463, 4464, 5, 115, 0, 0, 4464, 4465, 5, 116, 0, 0, 4465, 4466, 5, 114, 0, 0, 4466, 576, 1, 0, 0, 0, 4467, 4468, 5, 108, 0, 0, 4468, 4469, 5, 100, 0, 0, 4469, 4470, 5, 102, 0, 0, 4470, 4471, 5, 108, 0, 0, 4471, 4503, 5, 100, 0, 0, 4472, 4473, 5, 108, 0, 0, 4473, 4474, 5, 100, 0, 0, 4474, 4475, 5, 102, 0, 0, 4475, 4476, 5, 108, 0, 0, 4476, 4477, 5, 100, 0, 0, 4477, 4503, 5, 97, 0, 0, 4478, 4479, 5, 115, 0, 0, 4479, 4480, 5, 116, 0, 0, 4480, 4481, 5, 102, 0, 0, 4481, 4482, 5, 108, 0, 0, 4482, 4503, 5, 100, 0, 0, 4483, 4484, 5, 108, 0, 0, 4484, 4485, 5, 100, 0, 0, 4485, 4486, 5, 115, 0, 0, 4486, 4487, 5, 102, 0, 0, 4487, 4488, 5, 108, 0, 0, 4488, 4503, 5, 100, 0, 0, 4489, 4490, 5, 108, 0, 0, 4490, 4491, 5, 100, 0, 0, 4491, 4492, 5, 115, 0, 0, 4492, 4493, 5, 102, 0, 0, 4493, 4494, 5, 108, 0, 0, 4494, 4495, 5, 100, 0, 0, 4495, 4503, 5, 97, 0, 0, 4496, 4497, 5, 115, 0, 0, 4497, 4498, 5, 116, 0, 0, 4498, 4499, 5, 115, 0, 0, 4499, 4500, 5, 102, 0, 0, 4500, 4501, 5, 108, 0, 0, 4501, 4503, 5, 100, 0, 0, 4502, 4467, 1, 0, 0, 0, 4502, 4472, 1, 0, 0, 0, 4502, 4478, 1, 0, 0, 0, 4502, 4483, 1, 0, 0, 0, 4502, 4489, 1, 0, 0, 0, 4502, 4496, 1, 0, 0, 0, 4503, 578, 1, 0, 0, 0, 4504, 4505, 5, 108, 0, 0, 4505, 4506, 5, 100, 0, 0, 4506, 4507, 5, 116, 0, 0, 4507, 4508, 5, 111, 0, 0, 4508, 4509, 5, 107, 0, 0, 4509, 4510, 5, 101, 0, 0, 4510, 4511, 5, 110, 0, 0, 4511, 580, 1, 0, 0, 0, 4512, 4513, 7, 5, 0, 0, 4513, 582, 1, 0, 0, 0, 4514, 4515, 7, 6, 0, 0, 4515, 584, 1, 0, 0, 0, 4516, 4517, 3, 587, 293, 0, 4517, 4518, 3, 535, 267, 0, 4518, 4520, 1, 0, 0, 0, 4519, 4516, 1, 0, 0, 0, 4520, 4521, 1, 0, 0, 0, 4521, 4519, 1, 0, 0, 0, 4521, 4522, 1, 0, 0, 0, 4522, 4523, 1, 0, 0, 0, 4523, 4524, 3, 587, 293, 0, 4524, 586, 1, 0, 0, 0, 4525, 4529, 3, 581, 290, 0, 4526, 4528, 3, 583, 291, 0, 4527, 4526, 1, 0, 0, 0, 4528, 4531, 1, 0, 0, 0, 4529, 4527, 1, 0, 0, 0, 4529, 4530, 1, 0, 0, 0, 4530, 588, 1, 0, 0, 0, 4531, 4529, 1, 0, 0, 0, 4532, 4533, 7, 7, 0, 0, 4533, 4534, 1, 0, 0, 0, 4534, 4535, 6, 294, 0, 0, 4535, 590, 1, 0, 0, 0, 4536, 4537, 5, 47, 0, 0, 4537, 4538, 5, 47, 0, 0, 4538, 4542, 1, 0, 0, 0, 4539, 4541, 8, 8, 0, 0, 4540, 4539, 1, 0, 0, 0, 4541, 4544, 1, 0, 0, 0, 4542, 4540, 1, 0, 0, 0, 4542, 4543, 1, 0, 0, 0, 4543, 4545, 1, 0, 0, 0, 4544, 4542, 1, 0, 0, 0, 4545, 4546, 6, 295, 0, 0, 4546, 592, 1, 0, 0, 0, 4547, 4548, 5, 47, 0, 0, 4548, 4549, 5, 42, 0, 0, 4549, 4553, 1, 0, 0, 0, 4550, 4552, 9, 0, 0, 0, 4551, 4550, 1, 0, 0, 0, 4552, 4555, 1, 0, 0, 0, 4553, 4554, 1, 0, 0, 0, 4553, 4551, 1, 0, 0, 0, 4554, 4556, 1, 0, 0, 0, 4555, 4553, 1, 0, 0, 0, 4556, 4557, 5, 42, 0, 0, 4557, 4558, 5, 47, 0, 0, 4558, 4559, 1, 0, 0, 0, 4559, 4560, 6, 296, 0, 0, 4560, 594, 1, 0, 0, 0, 4561, 4562, 5, 46, 0, 0, 4562, 4563, 5, 112, 0, 0, 4563, 4564, 5, 101, 0, 0, 4564, 4565, 5, 114, 0, 0, 4565, 4566, 5, 109, 0, 0, 4566, 4567, 5, 105, 0, 0, 4567, 4568, 5, 115, 0, 0, 4568, 4569, 5, 115, 0, 0, 4569, 4570, 5, 105, 0, 0, 4570, 4571, 5, 111, 0, 0, 4571, 4572, 5, 110, 0, 0, 4572, 596, 1, 0, 0, 0, 4573, 4574, 5, 46, 0, 0, 4574, 4575, 5, 112, 0, 0, 4575, 4576, 5, 101, 0, 0, 4576, 4577, 5, 114, 0, 0, 4577, 4578, 5, 109, 0, 0, 4578, 4579, 5, 105, 0, 0, 4579, 4580, 5, 115, 0, 0, 4580, 4581, 5, 115, 0, 0, 4581, 4582, 5, 105, 0, 0, 4582, 4583, 5, 111, 0, 0, 4583, 4584, 5, 110, 0, 0, 4584, 4585, 5, 115, 0, 0, 4585, 4586, 5, 101, 0, 0, 4586, 4587, 5, 116, 0, 0, 4587, 598, 1, 0, 0, 0, 4588, 4589, 5, 46, 0, 0, 4589, 4590, 5, 101, 0, 0, 4590, 4591, 5, 109, 0, 0, 4591, 4592, 5, 105, 0, 0, 4592, 4593, 5, 116, 0, 0, 4593, 4594, 5, 98, 0, 0, 4594, 4595, 5, 121, 0, 0, 4595, 4596, 5, 116, 0, 0, 4596, 4597, 5, 101, 0, 0, 4597, 600, 1, 0, 0, 0, 4598, 4599, 5, 46, 0, 0, 4599, 4600, 5, 109, 0, 0, 4600, 4601, 5, 97, 0, 0, 4601, 4602, 5, 120, 0, 0, 4602, 4603, 5, 115, 0, 0, 4603, 4604, 5, 116, 0, 0, 4604, 4605, 5, 97, 0, 0, 4605, 4606, 5, 99, 0, 0, 4606, 4607, 5, 107, 0, 0, 4607, 602, 1, 0, 0, 0, 4608, 4609, 5, 46, 0, 0, 4609, 4610, 5, 101, 0, 0, 4610, 4611, 5, 110, 0, 0, 4611, 4612, 5, 116, 0, 0, 4612, 4613, 5, 114, 0, 0, 4613, 4614, 5, 121, 0, 0, 4614, 4615, 5, 112, 0, 0, 4615, 4616, 5, 111, 0, 0, 4616, 4617, 5, 105, 0, 0, 4617, 4618, 5, 110, 0, 0, 4618, 4619, 5, 116, 0, 0, 4619, 604, 1, 0, 0, 0, 4620, 4621, 5, 46, 0, 0, 4621, 4622, 5, 122, 0, 0, 4622, 4623, 5, 101, 0, 0, 4623, 4624, 5, 114, 0, 0, 4624, 4625, 5, 111, 0, 0, 4625, 4626, 5, 105, 0, 0, 4626, 4627, 5, 110, 0, 0, 4627, 4628, 5, 105, 0, 0, 4628, 4629, 5, 116, 0, 0, 4629, 606, 1, 0, 0, 0, 4630, 4631, 5, 46, 0, 0, 4631, 4632, 5, 108, 0, 0, 4632, 4633, 5, 111, 0, 0, 4633, 4634, 5, 99, 0, 0, 4634, 4635, 5, 97, 0, 0, 4635, 4636, 5, 108, 0, 0, 4636, 4637, 5, 115, 0, 0, 4637, 608, 1, 0, 0, 0, 4638, 4639, 5, 46, 0, 0, 4639, 4640, 5, 101, 0, 0, 4640, 4641, 5, 120, 0, 0, 4641, 4642, 5, 112, 0, 0, 4642, 4643, 5, 111, 0, 0, 4643, 4644, 5, 114, 0, 0, 4644, 4645, 5, 116, 0, 0, 4645, 610, 1, 0, 0, 0, 4646, 4647, 5, 46, 0, 0, 4647, 4648, 5, 111, 0, 0, 4648, 4649, 5, 118, 0, 0, 4649, 4650, 5, 101, 0, 0, 4650, 4651, 5, 114, 0, 0, 4651, 4652, 5, 114, 0, 0, 4652, 4653, 5, 105, 0, 0, 4653, 4654, 5, 100, 0, 0, 4654, 4655, 5, 101, 0, 0, 4655, 612, 1, 0, 0, 0, 4656, 4657, 5, 46, 0, 0, 4657, 4658, 5, 118, 0, 0, 4658, 4659, 5, 116, 0, 0, 4659, 4660, 5, 101, 0, 0, 4660, 4661, 5, 110, 0, 0, 4661, 4662, 5, 116, 0, 0, 4662, 4663, 5, 114, 0, 0, 4663, 4664, 5, 121, 0, 0, 4664, 614, 1, 0, 0, 0, 37, 0, 2005, 2013, 2018, 2020, 2023, 2031, 2036, 2038, 2041, 2046, 2052, 2056, 2061, 2063, 2166, 2177, 2188, 2199, 2214, 2721, 2772, 2774, 2783, 2785, 4005, 4083, 4112, 4133, 4170, 4336, 4459, 4502, 4521, 4529, 4542, 4553, 1, 6, 0, 0] \ No newline at end of file diff --git a/src/tools/ilasm/src/ILAssembler/gen/CILLexer.tokens b/src/tools/ilasm/src/ILAssembler/gen/CILLexer.tokens new file mode 100644 index 00000000000000..e321195066b2c8 --- /dev/null +++ b/src/tools/ilasm/src/ILAssembler/gen/CILLexer.tokens @@ -0,0 +1,577 @@ +T__0=1 +T__1=2 +T__2=3 +T__3=4 +T__4=5 +T__5=6 +T__6=7 +T__7=8 +T__8=9 +T__9=10 +T__10=11 +T__11=12 +T__12=13 +T__13=14 +T__14=15 +T__15=16 +T__16=17 +T__17=18 +T__18=19 +T__19=20 +T__20=21 +T__21=22 +T__22=23 +T__23=24 +T__24=25 +T__25=26 +T__26=27 +T__27=28 +T__28=29 +T__29=30 +T__30=31 +T__31=32 +T__32=33 +T__33=34 +T__34=35 +T__35=36 +T__36=37 +T__37=38 +T__38=39 +T__39=40 +T__40=41 +T__41=42 +T__42=43 +T__43=44 +T__44=45 +T__45=46 +T__46=47 +T__47=48 +T__48=49 +T__49=50 +T__50=51 +T__51=52 +T__52=53 +T__53=54 +T__54=55 +T__55=56 +T__56=57 +T__57=58 +T__58=59 +T__59=60 +T__60=61 +T__61=62 +T__62=63 +T__63=64 +T__64=65 +T__65=66 +T__66=67 +T__67=68 +T__68=69 +T__69=70 +T__70=71 +T__71=72 +T__72=73 +T__73=74 +T__74=75 +T__75=76 +T__76=77 +T__77=78 +T__78=79 +T__79=80 +T__80=81 +T__81=82 +T__82=83 +T__83=84 +T__84=85 +T__85=86 +T__86=87 +T__87=88 +T__88=89 +T__89=90 +T__90=91 +T__91=92 +T__92=93 +T__93=94 +T__94=95 +T__95=96 +T__96=97 +T__97=98 +T__98=99 +T__99=100 +T__100=101 +T__101=102 +T__102=103 +T__103=104 +T__104=105 +T__105=106 +T__106=107 +T__107=108 +T__108=109 +T__109=110 +T__110=111 +T__111=112 +T__112=113 +T__113=114 +T__114=115 +T__115=116 +T__116=117 +T__117=118 +T__118=119 +T__119=120 +T__120=121 +T__121=122 +T__122=123 +T__123=124 +T__124=125 +T__125=126 +T__126=127 +T__127=128 +T__128=129 +T__129=130 +T__130=131 +T__131=132 +T__132=133 +T__133=134 +T__134=135 +T__135=136 +T__136=137 +T__137=138 +T__138=139 +T__139=140 +T__140=141 +T__141=142 +T__142=143 +T__143=144 +T__144=145 +T__145=146 +T__146=147 +T__147=148 +T__148=149 +T__149=150 +T__150=151 +T__151=152 +T__152=153 +T__153=154 +T__154=155 +T__155=156 +T__156=157 +T__157=158 +T__158=159 +T__159=160 +T__160=161 +T__161=162 +T__162=163 +T__163=164 +T__164=165 +T__165=166 +T__166=167 +T__167=168 +INT32=169 +INT64=170 +FLOAT64=171 +HEXBYTE=172 +DCOLON=173 +ELLIPSIS=174 +NULL=175 +NULLREF=176 +HASH=177 +CHAR=178 +STRING=179 +BOOL=180 +INT8=181 +INT16=182 +INT32_=183 +INT64_=184 +FLOAT32=185 +FLOAT64_=186 +UINT8=187 +UINT16=188 +UINT32=189 +UINT64=190 +INT=191 +UINT=192 +TYPE=193 +OBJECT=194 +MODULE=195 +VALUE=196 +VALUETYPE=197 +VOID=198 +ENUM=199 +CUSTOM=200 +FIXED=201 +SYSSTRING=202 +ARRAY=203 +VARIANT=204 +CURRENCY=205 +SYSCHAR=206 +ERROR=207 +DECIMAL=208 +DATE=209 +BSTR=210 +LPSTR=211 +LPWSTR=212 +LPTSTR=213 +OBJECTREF=214 +IUNKNOWN=215 +IDISPATCH=216 +STRUCT=217 +INTERFACE=218 +SAFEARRAY=219 +NESTEDSTRUCT=220 +VARIANTBOOL=221 +BYVALSTR=222 +ANSI=223 +ANSIBSTR=224 +TBSTR=225 +METHOD=226 +ANY=227 +LPSTRUCT=228 +VECTOR=229 +HRESULT=230 +CARRAY=231 +USERDEFINED=232 +RECORD=233 +FILETIME=234 +BLOB=235 +STREAM=236 +STORAGE=237 +STREAMED_OBJECT=238 +STORED_OBJECT=239 +BLOB_OBJECT=240 +CF=241 +CLSID=242 +INSTANCE=243 +EXPLICIT=244 +DEFAULT=245 +VARARG=246 +UNMANAGED=247 +CDECL=248 +STDCALL=249 +THISCALL=250 +FASTCALL=251 +TYPE_PARAMETER=252 +METHOD_TYPE_PARAMETER=253 +TYPEDREF=254 +NATIVE_INT=255 +NATIVE_UINT=256 +PARAM=257 +CONSTRAINT=258 +THIS=259 +BASE=260 +NESTER=261 +REF=262 +ARRAY_TYPE_NO_BOUNDS=263 +PTR=264 +QSTRING=265 +SQSTRING=266 +DOT=267 +PLUS=268 +PP_DEFINE=269 +PP_UNDEF=270 +PP_IFDEF=271 +PP_IFNDEF=272 +PP_ELSE=273 +PP_ENDIF=274 +PP_INCLUDE=275 +MRESOURCE=276 +INSTR_NONE=277 +INSTR_VAR=278 +INSTR_I=279 +INSTR_I8=280 +INSTR_R=281 +INSTR_METHOD=282 +INSTR_SIG=283 +INSTR_BRTARGET=284 +INSTR_SWITCH=285 +INSTR_TYPE=286 +INSTR_STRING=287 +INSTR_FIELD=288 +INSTR_TOK=289 +DOTTEDNAME=290 +ID=291 +WS=292 +SINGLE_LINE_COMMENT=293 +COMMENT=294 +PERMISSION=295 +PERMISSIONSET=296 +EMITBYTE=297 +MAXSTACK=298 +ENTRYPOINT=299 +ZEROINIT=300 +LOCALS=301 +EXPORT=302 +OVERRIDE=303 +VTENTRY=304 +'native'=1 +'cil'=2 +'optil'=3 +'managed'=4 +'forwardref'=5 +'preservesig'=6 +'runtime'=7 +'internalcall'=8 +'synchronized'=9 +'noinlining'=10 +'aggressiveinlining'=11 +'nooptimization'=12 +'aggressiveoptimization'=13 +'async'=14 +'extended'=15 +'{'=16 +'}'=17 +'.subsystem'=18 +'.corflags'=19 +'.file'=20 +'alignment'=21 +'.imagebase'=22 +'.stackreserve'=23 +'.assembly'=24 +'.mscorlib'=25 +'.language'=26 +','=27 +'.typelist'=28 +'('=29 +')'=30 +';'=31 +'.typedef'=32 +'as'=33 +'.custom'=34 +'='=35 +'field'=36 +'property'=37 +'class'=38 +'extern'=39 +'.vtfixup'=40 +'['=41 +']'=42 +'at'=43 +'fromunmanaged'=44 +'callmostderived'=45 +'retainappdomain'=46 +'.vtable'=47 +'.namespace'=48 +'.class'=49 +'public'=50 +'private'=51 +'sealed'=52 +'abstract'=53 +'auto'=54 +'sequential'=55 +'unicode'=56 +'autochar'=57 +'import'=58 +'serializable'=59 +'windowsruntime'=60 +'nested'=61 +'family'=62 +'assembly'=63 +'famandassem'=64 +'famorassem'=65 +'beforefieldinit'=66 +'specialname'=67 +'rtspecialname'=68 +'flags'=69 +'extends'=70 +'implements'=71 +'.line'=72 +'#line'=73 +':'=74 +'nometadata'=75 +'retargetable'=76 +'noplatform'=77 +'legacy library'=78 +'x86'=79 +'amd64'=80 +'arm'=81 +'arm64'=82 +'bytearray'=83 +'<'=84 +'>'=85 +'()'=86 +'/'=87 +'algorithm'=88 +'iidparam'=89 +'pinned'=90 +'modreq'=91 +'modopt'=92 +'true'=93 +'false'=94 +'request'=95 +'demand'=96 +'assert'=97 +'deny'=98 +'permitonly'=99 +'linkcheck'=100 +'inheritcheck'=101 +'reqmin'=102 +'reqopt'=103 +'reqrefuse'=104 +'prejitgrant'=105 +'prejitdeny'=106 +'noncasdemand'=107 +'noncaslinkdemand'=108 +'noncasinheritance'=109 +'callconv'=110 +'mdtoken'=111 +'-'=112 +'byreflike'=113 +'.ctor'=114 +'.size'=115 +'.pack'=116 +'with'=117 +'.interfaceimpl'=118 +'.field'=119 +'marshal'=120 +'static'=121 +'initonly'=122 +'privatescope'=123 +'literal'=124 +'notserialized'=125 +'.event'=126 +'.addon'=127 +'.removeon'=128 +'.fire'=129 +'.other'=130 +'.property'=131 +'.set'=132 +'.get'=133 +'in'=134 +'out'=135 +'opt'=136 +'.method'=137 +'final'=138 +'virtual'=139 +'strict'=140 +'hidebysig'=141 +'newslot'=142 +'unmanagedexp'=143 +'reqsecobj'=144 +'pinvokeimpl'=145 +'nomangle'=146 +'lasterr'=147 +'winapi'=148 +'bestfit'=149 +'on'=150 +'off'=151 +'charmaperror'=152 +'.cctor'=153 +'init'=154 +'.try'=155 +'to'=156 +'filter'=157 +'catch'=158 +'finally'=159 +'fault'=160 +'handler'=161 +'.data'=162 +'tls'=163 +'.publicKey'=164 +'.ver'=165 +'.locale'=166 +'.publickeytoken'=167 +'forwarder'=168 +'::'=173 +'..'=174 +'null'=175 +'nullref'=176 +'.hash'=177 +'char'=178 +'string'=179 +'bool'=180 +'int8'=181 +'int16'=182 +'int32'=183 +'int64'=184 +'float32'=185 +'float64'=186 +'int'=191 +'type'=193 +'object'=194 +'.module'=195 +'value'=196 +'valuetype'=197 +'void'=198 +'enum'=199 +'custom'=200 +'fixed'=201 +'systring'=202 +'array'=203 +'variant'=204 +'currency'=205 +'syschar'=206 +'error'=207 +'decimal'=208 +'date'=209 +'bstr'=210 +'lpstr'=211 +'lpwstr'=212 +'lptstr'=213 +'objectref'=214 +'iunknown'=215 +'idispatch'=216 +'struct'=217 +'interface'=218 +'safearray'=219 +'byvalstr'=222 +'ansi'=223 +'tbstr'=225 +'method'=226 +'any'=227 +'lpstruct'=228 +'vector'=229 +'hresult'=230 +'carray'=231 +'userdefined'=232 +'record'=233 +'filetime'=234 +'blob'=235 +'stream'=236 +'storage'=237 +'streamed_object'=238 +'stored_object'=239 +'blob_object'=240 +'cf'=241 +'clsid'=242 +'instance'=243 +'explicit'=244 +'default'=245 +'vararg'=246 +'unmanaged'=247 +'cdecl'=248 +'stdcall'=249 +'thiscall'=250 +'fastcall'=251 +'!'=252 +'typedref'=254 +'.param'=257 +'constraint'=258 +'.this'=259 +'.base'=260 +'.nester'=261 +'&'=262 +'*'=264 +'.'=267 +'+'=268 +'#define'=269 +'#undef'=270 +'#ifdef'=271 +'#ifndef'=272 +'#else'=273 +'#endif'=274 +'#include'=275 +'.mresource'=276 +'ldc.i8'=280 +'calli'=283 +'switch'=285 +'ldstr'=287 +'ldtoken'=289 +'.permission'=295 +'.permissionset'=296 +'.emitbyte'=297 +'.maxstack'=298 +'.entrypoint'=299 +'.zeroinit'=300 +'.locals'=301 +'.export'=302 +'.override'=303 +'.vtentry'=304 diff --git a/src/tools/ilasm/src/ILAssembler/gen/CILParser.cs b/src/tools/ilasm/src/ILAssembler/gen/CILParser.cs new file mode 100644 index 00000000000000..7a69d2620c7743 --- /dev/null +++ b/src/tools/ilasm/src/ILAssembler/gen/CILParser.cs @@ -0,0 +1,17594 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// ANTLR Version: 4.13.1 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +// Generated from /Users/adeel/projects/runtime5/src/tools/ilasm/src/ILAssembler/gen/CIL.g4 by ANTLR 4.13.1 + +// Unreachable code detected +#pragma warning disable 0162 +// The variable '...' is assigned but its value is never used +#pragma warning disable 0219 +// Missing XML comment for publicly visible type or member '...' +#pragma warning disable 1591 +// Ambiguous reference in cref attribute +#pragma warning disable 419 + +namespace ILAssembler { +using System; +using System.IO; +using System.Text; +using System.Diagnostics; +using System.Collections.Generic; +using Antlr4.Runtime; +using Antlr4.Runtime.Atn; +using Antlr4.Runtime.Misc; +using Antlr4.Runtime.Tree; +using DFA = Antlr4.Runtime.Dfa.DFA; + +[System.CodeDom.Compiler.GeneratedCode("ANTLR", "4.13.1")] +[System.CLSCompliant(false)] +public partial class CILParser : Parser { + protected static DFA[] decisionToDFA; + protected static PredictionContextCache sharedContextCache = new PredictionContextCache(); + public const int + T__0=1, T__1=2, T__2=3, T__3=4, T__4=5, T__5=6, T__6=7, T__7=8, T__8=9, + T__9=10, T__10=11, T__11=12, T__12=13, T__13=14, T__14=15, T__15=16, T__16=17, + T__17=18, T__18=19, T__19=20, T__20=21, T__21=22, T__22=23, T__23=24, + T__24=25, T__25=26, T__26=27, T__27=28, T__28=29, T__29=30, T__30=31, + T__31=32, T__32=33, T__33=34, T__34=35, T__35=36, T__36=37, T__37=38, + T__38=39, T__39=40, T__40=41, T__41=42, T__42=43, T__43=44, T__44=45, + T__45=46, T__46=47, T__47=48, T__48=49, T__49=50, T__50=51, T__51=52, + T__52=53, T__53=54, T__54=55, T__55=56, T__56=57, T__57=58, T__58=59, + T__59=60, T__60=61, T__61=62, T__62=63, T__63=64, T__64=65, T__65=66, + T__66=67, T__67=68, T__68=69, T__69=70, T__70=71, T__71=72, T__72=73, + T__73=74, T__74=75, T__75=76, T__76=77, T__77=78, T__78=79, T__79=80, + T__80=81, T__81=82, T__82=83, T__83=84, T__84=85, T__85=86, T__86=87, + T__87=88, T__88=89, T__89=90, T__90=91, T__91=92, T__92=93, T__93=94, + T__94=95, T__95=96, T__96=97, T__97=98, T__98=99, T__99=100, T__100=101, + T__101=102, T__102=103, T__103=104, T__104=105, T__105=106, T__106=107, + T__107=108, T__108=109, T__109=110, T__110=111, T__111=112, T__112=113, + T__113=114, T__114=115, T__115=116, T__116=117, T__117=118, T__118=119, + T__119=120, T__120=121, T__121=122, T__122=123, T__123=124, T__124=125, + T__125=126, T__126=127, T__127=128, T__128=129, T__129=130, T__130=131, + T__131=132, T__132=133, T__133=134, T__134=135, T__135=136, T__136=137, + T__137=138, T__138=139, T__139=140, T__140=141, T__141=142, T__142=143, + T__143=144, T__144=145, T__145=146, T__146=147, T__147=148, T__148=149, + T__149=150, T__150=151, T__151=152, T__152=153, T__153=154, T__154=155, + T__155=156, T__156=157, T__157=158, T__158=159, T__159=160, T__160=161, + T__161=162, T__162=163, T__163=164, T__164=165, T__165=166, T__166=167, + T__167=168, INT32=169, INT64=170, FLOAT64=171, HEXBYTE=172, DCOLON=173, + ELLIPSIS=174, NULL=175, NULLREF=176, HASH=177, CHAR=178, STRING=179, BOOL=180, + INT8=181, INT16=182, INT32_=183, INT64_=184, FLOAT32=185, FLOAT64_=186, + UINT8=187, UINT16=188, UINT32=189, UINT64=190, INT=191, UINT=192, TYPE=193, + OBJECT=194, MODULE=195, VALUE=196, VALUETYPE=197, VOID=198, ENUM=199, + CUSTOM=200, FIXED=201, SYSSTRING=202, ARRAY=203, VARIANT=204, CURRENCY=205, + SYSCHAR=206, ERROR=207, DECIMAL=208, DATE=209, BSTR=210, LPSTR=211, LPWSTR=212, + LPTSTR=213, OBJECTREF=214, IUNKNOWN=215, IDISPATCH=216, STRUCT=217, INTERFACE=218, + SAFEARRAY=219, NESTEDSTRUCT=220, VARIANTBOOL=221, BYVALSTR=222, ANSI=223, + ANSIBSTR=224, TBSTR=225, METHOD=226, ANY=227, LPSTRUCT=228, VECTOR=229, + HRESULT=230, CARRAY=231, USERDEFINED=232, RECORD=233, FILETIME=234, BLOB=235, + STREAM=236, STORAGE=237, STREAMED_OBJECT=238, STORED_OBJECT=239, BLOB_OBJECT=240, + CF=241, CLSID=242, INSTANCE=243, EXPLICIT=244, DEFAULT=245, VARARG=246, + UNMANAGED=247, CDECL=248, STDCALL=249, THISCALL=250, FASTCALL=251, TYPE_PARAMETER=252, + METHOD_TYPE_PARAMETER=253, TYPEDREF=254, NATIVE_INT=255, NATIVE_UINT=256, + PARAM=257, CONSTRAINT=258, THIS=259, BASE=260, NESTER=261, REF=262, ARRAY_TYPE_NO_BOUNDS=263, + PTR=264, QSTRING=265, SQSTRING=266, DOT=267, PLUS=268, PP_DEFINE=269, + PP_UNDEF=270, PP_IFDEF=271, PP_IFNDEF=272, PP_ELSE=273, PP_ENDIF=274, + PP_INCLUDE=275, MRESOURCE=276, INSTR_NONE=277, INSTR_VAR=278, INSTR_I=279, + INSTR_I8=280, INSTR_R=281, INSTR_METHOD=282, INSTR_SIG=283, INSTR_BRTARGET=284, + INSTR_SWITCH=285, INSTR_TYPE=286, INSTR_STRING=287, INSTR_FIELD=288, INSTR_TOK=289, + DOTTEDNAME=290, ID=291, WS=292, SINGLE_LINE_COMMENT=293, COMMENT=294, + PERMISSION=295, PERMISSIONSET=296, EMITBYTE=297, MAXSTACK=298, ENTRYPOINT=299, + ZEROINIT=300, LOCALS=301, EXPORT=302, OVERRIDE=303, VTENTRY=304, IncludedFileEof=305, + SyntheticIncludedFileEof=306; + public const int + RULE_id = 0, RULE_dottedName = 1, RULE_compQstring = 2, RULE_decls = 3, + RULE_decl = 4, RULE_subsystem = 5, RULE_corflags = 6, RULE_alignment = 7, + RULE_imagebase = 8, RULE_stackreserve = 9, RULE_assemblyBlock = 10, RULE_mscorlib = 11, + RULE_languageDecl = 12, RULE_typelist = 13, RULE_int32 = 14, RULE_int64 = 15, + RULE_float64 = 16, RULE_intOrWildcard = 17, RULE_compControl = 18, RULE_typedefDecl = 19, + RULE_customDescr = 20, RULE_customDescrWithOwner = 21, RULE_customType = 22, + RULE_ownerType = 23, RULE_customBlobDescr = 24, RULE_customBlobArgs = 25, + RULE_customBlobNVPairs = 26, RULE_fieldOrProp = 27, RULE_serializType = 28, + RULE_serializTypeElement = 29, RULE_moduleHead = 30, RULE_vtfixupDecl = 31, + RULE_vtfixupAttr = 32, RULE_vtableDecl = 33, RULE_nameSpaceHead = 34, + RULE_classHead = 35, RULE_classAttr = 36, RULE_extendsClause = 37, RULE_implClause = 38, + RULE_classDecls = 39, RULE_implList = 40, RULE_esHead = 41, RULE_extSourceSpec = 42, + RULE_fileDecl = 43, RULE_fileAttr = 44, RULE_fileEntry = 45, RULE_asmAttrAny = 46, + RULE_asmAttr = 47, RULE_instr_none = 48, RULE_instr_var = 49, RULE_instr_i = 50, + RULE_instr_i8 = 51, RULE_instr_r = 52, RULE_instr_brtarget = 53, RULE_instr_method = 54, + RULE_instr_field = 55, RULE_instr_type = 56, RULE_instr_string = 57, RULE_instr_sig = 58, + RULE_instr_tok = 59, RULE_instr_switch = 60, RULE_instr = 61, RULE_labels = 62, + RULE_typeArgs = 63, RULE_bounds = 64, RULE_sigArgs = 65, RULE_sigArg = 66, + RULE_className = 67, RULE_slashedName = 68, RULE_assemblyDecls = 69, RULE_assemblyDecl = 70, + RULE_typeSpec = 71, RULE_nativeType = 72, RULE_nativeTypeArrayPointerInfo = 73, + RULE_nativeTypeElement = 74, RULE_iidParamIndex = 75, RULE_variantType = 76, + RULE_variantTypeElement = 77, RULE_type = 78, RULE_typeModifiers = 79, + RULE_elementType = 80, RULE_simpleType = 81, RULE_bound = 82, RULE_secDecl = 83, + RULE_secAttrSetBlob = 84, RULE_secAttrBlob = 85, RULE_nameValPairs = 86, + RULE_nameValPair = 87, RULE_truefalse = 88, RULE_caValue = 89, RULE_secAction = 90, + RULE_methodRef = 91, RULE_callConv = 92, RULE_callKind = 93, RULE_mdtoken = 94, + RULE_memberRef = 95, RULE_fieldRef = 96, RULE_typeList = 97, RULE_typarsClause = 98, + RULE_typarAttrib = 99, RULE_typarAttribs = 100, RULE_typar = 101, RULE_typars = 102, + RULE_tyBound = 103, RULE_genArity = 104, RULE_genArityNotEmpty = 105, + RULE_classDecl = 106, RULE_fieldDecl = 107, RULE_fieldAttr = 108, RULE_atOpt = 109, + RULE_initOpt = 110, RULE_repeatOpt = 111, RULE_eventHead = 112, RULE_eventAttr = 113, + RULE_eventDecls = 114, RULE_eventDecl = 115, RULE_propHead = 116, RULE_propAttr = 117, + RULE_propDecls = 118, RULE_propDecl = 119, RULE_marshalClause = 120, RULE_marshalBlob = 121, + RULE_paramAttr = 122, RULE_paramAttrElement = 123, RULE_methodHead = 124, + RULE_methAttr = 125, RULE_pinvImpl = 126, RULE_pinvAttr = 127, RULE_methodName = 128, + RULE_implAttr = 129, RULE_methodDecls = 130, RULE_methodDecl = 131, RULE_labelDecl = 132, + RULE_customDescrInMethodBody = 133, RULE_scopeBlock = 134, RULE_sehBlock = 135, + RULE_sehClauses = 136, RULE_tryBlock = 137, RULE_sehClause = 138, RULE_filterClause = 139, + RULE_catchClause = 140, RULE_finallyClause = 141, RULE_faultClause = 142, + RULE_handlerBlock = 143, RULE_dataDecl = 144, RULE_ddHead = 145, RULE_tls = 146, + RULE_ddBody = 147, RULE_ddItemList = 148, RULE_ddItemCount = 149, RULE_ddItem = 150, + RULE_fieldSerInit = 151, RULE_bytes = 152, RULE_hexbytes = 153, RULE_fieldInit = 154, + RULE_serInit = 155, RULE_f32seq = 156, RULE_f64seq = 157, RULE_i64seq = 158, + RULE_i32seq = 159, RULE_i16seq = 160, RULE_i8seq = 161, RULE_boolSeq = 162, + RULE_sqstringSeq = 163, RULE_classSeq = 164, RULE_classSeqElement = 165, + RULE_objSeq = 166, RULE_customAttrDecl = 167, RULE_asmOrRefDecl = 168, + RULE_assemblyRefHead = 169, RULE_assemblyRefDecls = 170, RULE_assemblyRefDecl = 171, + RULE_exptypeHead = 172, RULE_exportHead = 173, RULE_exptAttr = 174, RULE_exptypeDecls = 175, + RULE_exptypeDecl = 176, RULE_manifestResHead = 177, RULE_manresAttr = 178, + RULE_manifestResDecls = 179, RULE_manifestResDecl = 180; + public static readonly string[] ruleNames = { + "id", "dottedName", "compQstring", "decls", "decl", "subsystem", "corflags", + "alignment", "imagebase", "stackreserve", "assemblyBlock", "mscorlib", + "languageDecl", "typelist", "int32", "int64", "float64", "intOrWildcard", + "compControl", "typedefDecl", "customDescr", "customDescrWithOwner", "customType", + "ownerType", "customBlobDescr", "customBlobArgs", "customBlobNVPairs", + "fieldOrProp", "serializType", "serializTypeElement", "moduleHead", "vtfixupDecl", + "vtfixupAttr", "vtableDecl", "nameSpaceHead", "classHead", "classAttr", + "extendsClause", "implClause", "classDecls", "implList", "esHead", "extSourceSpec", + "fileDecl", "fileAttr", "fileEntry", "asmAttrAny", "asmAttr", "instr_none", + "instr_var", "instr_i", "instr_i8", "instr_r", "instr_brtarget", "instr_method", + "instr_field", "instr_type", "instr_string", "instr_sig", "instr_tok", + "instr_switch", "instr", "labels", "typeArgs", "bounds", "sigArgs", "sigArg", + "className", "slashedName", "assemblyDecls", "assemblyDecl", "typeSpec", + "nativeType", "nativeTypeArrayPointerInfo", "nativeTypeElement", "iidParamIndex", + "variantType", "variantTypeElement", "type", "typeModifiers", "elementType", + "simpleType", "bound", "secDecl", "secAttrSetBlob", "secAttrBlob", "nameValPairs", + "nameValPair", "truefalse", "caValue", "secAction", "methodRef", "callConv", + "callKind", "mdtoken", "memberRef", "fieldRef", "typeList", "typarsClause", + "typarAttrib", "typarAttribs", "typar", "typars", "tyBound", "genArity", + "genArityNotEmpty", "classDecl", "fieldDecl", "fieldAttr", "atOpt", "initOpt", + "repeatOpt", "eventHead", "eventAttr", "eventDecls", "eventDecl", "propHead", + "propAttr", "propDecls", "propDecl", "marshalClause", "marshalBlob", "paramAttr", + "paramAttrElement", "methodHead", "methAttr", "pinvImpl", "pinvAttr", + "methodName", "implAttr", "methodDecls", "methodDecl", "labelDecl", "customDescrInMethodBody", + "scopeBlock", "sehBlock", "sehClauses", "tryBlock", "sehClause", "filterClause", + "catchClause", "finallyClause", "faultClause", "handlerBlock", "dataDecl", + "ddHead", "tls", "ddBody", "ddItemList", "ddItemCount", "ddItem", "fieldSerInit", + "bytes", "hexbytes", "fieldInit", "serInit", "f32seq", "f64seq", "i64seq", + "i32seq", "i16seq", "i8seq", "boolSeq", "sqstringSeq", "classSeq", "classSeqElement", + "objSeq", "customAttrDecl", "asmOrRefDecl", "assemblyRefHead", "assemblyRefDecls", + "assemblyRefDecl", "exptypeHead", "exportHead", "exptAttr", "exptypeDecls", + "exptypeDecl", "manifestResHead", "manresAttr", "manifestResDecls", "manifestResDecl" + }; + + private static readonly string[] _LiteralNames = { + null, "'native'", "'cil'", "'optil'", "'managed'", "'forwardref'", "'preservesig'", + "'runtime'", "'internalcall'", "'synchronized'", "'noinlining'", "'aggressiveinlining'", + "'nooptimization'", "'aggressiveoptimization'", "'async'", "'extended'", + "'{'", "'}'", "'.subsystem'", "'.corflags'", "'.file'", "'alignment'", + "'.imagebase'", "'.stackreserve'", "'.assembly'", "'.mscorlib'", "'.language'", + "','", "'.typelist'", "'('", "')'", "';'", "'.typedef'", "'as'", "'.custom'", + "'='", "'field'", "'property'", "'class'", "'extern'", "'.vtfixup'", "'['", + "']'", "'at'", "'fromunmanaged'", "'callmostderived'", "'retainappdomain'", + "'.vtable'", "'.namespace'", "'.class'", "'public'", "'private'", "'sealed'", + "'abstract'", "'auto'", "'sequential'", "'unicode'", "'autochar'", "'import'", + "'serializable'", "'windowsruntime'", "'nested'", "'family'", "'assembly'", + "'famandassem'", "'famorassem'", "'beforefieldinit'", "'specialname'", + "'rtspecialname'", "'flags'", "'extends'", "'implements'", "'.line'", + "'#line'", "':'", "'nometadata'", "'retargetable'", "'noplatform'", "'legacy library'", + "'x86'", "'amd64'", "'arm'", "'arm64'", "'bytearray'", "'<'", "'>'", "'()'", + "'/'", "'algorithm'", "'iidparam'", "'pinned'", "'modreq'", "'modopt'", + "'true'", "'false'", "'request'", "'demand'", "'assert'", "'deny'", "'permitonly'", + "'linkcheck'", "'inheritcheck'", "'reqmin'", "'reqopt'", "'reqrefuse'", + "'prejitgrant'", "'prejitdeny'", "'noncasdemand'", "'noncaslinkdemand'", + "'noncasinheritance'", "'callconv'", "'mdtoken'", "'-'", "'byreflike'", + "'.ctor'", "'.size'", "'.pack'", "'with'", "'.interfaceimpl'", "'.field'", + "'marshal'", "'static'", "'initonly'", "'privatescope'", "'literal'", + "'notserialized'", "'.event'", "'.addon'", "'.removeon'", "'.fire'", "'.other'", + "'.property'", "'.set'", "'.get'", "'in'", "'out'", "'opt'", "'.method'", + "'final'", "'virtual'", "'strict'", "'hidebysig'", "'newslot'", "'unmanagedexp'", + "'reqsecobj'", "'pinvokeimpl'", "'nomangle'", "'lasterr'", "'winapi'", + "'bestfit'", "'on'", "'off'", "'charmaperror'", "'.cctor'", "'init'", + "'.try'", "'to'", "'filter'", "'catch'", "'finally'", "'fault'", "'handler'", + "'.data'", "'tls'", "'.publicKey'", "'.ver'", "'.locale'", "'.publickeytoken'", + "'forwarder'", null, null, null, null, "'::'", "'..'", "'null'", "'nullref'", + "'.hash'", "'char'", "'string'", "'bool'", "'int8'", "'int16'", "'int32'", + "'int64'", "'float32'", "'float64'", null, null, null, null, "'int'", + null, "'type'", "'object'", "'.module'", "'value'", "'valuetype'", "'void'", + "'enum'", "'custom'", "'fixed'", "'systring'", "'array'", "'variant'", + "'currency'", "'syschar'", "'error'", "'decimal'", "'date'", "'bstr'", + "'lpstr'", "'lpwstr'", "'lptstr'", "'objectref'", "'iunknown'", "'idispatch'", + "'struct'", "'interface'", "'safearray'", null, null, "'byvalstr'", "'ansi'", + null, "'tbstr'", "'method'", "'any'", "'lpstruct'", "'vector'", "'hresult'", + "'carray'", "'userdefined'", "'record'", "'filetime'", "'blob'", "'stream'", + "'storage'", "'streamed_object'", "'stored_object'", "'blob_object'", + "'cf'", "'clsid'", "'instance'", "'explicit'", "'default'", "'vararg'", + "'unmanaged'", "'cdecl'", "'stdcall'", "'thiscall'", "'fastcall'", "'!'", + null, "'typedref'", null, null, "'.param'", "'constraint'", "'.this'", + "'.base'", "'.nester'", "'&'", null, "'*'", null, null, "'.'", "'+'", + "'#define'", "'#undef'", "'#ifdef'", "'#ifndef'", "'#else'", "'#endif'", + "'#include'", "'.mresource'", null, null, null, "'ldc.i8'", null, null, + "'calli'", null, "'switch'", null, "'ldstr'", null, "'ldtoken'", null, + null, null, null, null, "'.permission'", "'.permissionset'", "'.emitbyte'", + "'.maxstack'", "'.entrypoint'", "'.zeroinit'", "'.locals'", "'.export'", + "'.override'", "'.vtentry'" + }; + private static readonly string[] _SymbolicNames = { + null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, + null, "INT32", "INT64", "FLOAT64", "HEXBYTE", "DCOLON", "ELLIPSIS", "NULL", + "NULLREF", "HASH", "CHAR", "STRING", "BOOL", "INT8", "INT16", "INT32_", + "INT64_", "FLOAT32", "FLOAT64_", "UINT8", "UINT16", "UINT32", "UINT64", + "INT", "UINT", "TYPE", "OBJECT", "MODULE", "VALUE", "VALUETYPE", "VOID", + "ENUM", "CUSTOM", "FIXED", "SYSSTRING", "ARRAY", "VARIANT", "CURRENCY", + "SYSCHAR", "ERROR", "DECIMAL", "DATE", "BSTR", "LPSTR", "LPWSTR", "LPTSTR", + "OBJECTREF", "IUNKNOWN", "IDISPATCH", "STRUCT", "INTERFACE", "SAFEARRAY", + "NESTEDSTRUCT", "VARIANTBOOL", "BYVALSTR", "ANSI", "ANSIBSTR", "TBSTR", + "METHOD", "ANY", "LPSTRUCT", "VECTOR", "HRESULT", "CARRAY", "USERDEFINED", + "RECORD", "FILETIME", "BLOB", "STREAM", "STORAGE", "STREAMED_OBJECT", + "STORED_OBJECT", "BLOB_OBJECT", "CF", "CLSID", "INSTANCE", "EXPLICIT", + "DEFAULT", "VARARG", "UNMANAGED", "CDECL", "STDCALL", "THISCALL", "FASTCALL", + "TYPE_PARAMETER", "METHOD_TYPE_PARAMETER", "TYPEDREF", "NATIVE_INT", "NATIVE_UINT", + "PARAM", "CONSTRAINT", "THIS", "BASE", "NESTER", "REF", "ARRAY_TYPE_NO_BOUNDS", + "PTR", "QSTRING", "SQSTRING", "DOT", "PLUS", "PP_DEFINE", "PP_UNDEF", + "PP_IFDEF", "PP_IFNDEF", "PP_ELSE", "PP_ENDIF", "PP_INCLUDE", "MRESOURCE", + "INSTR_NONE", "INSTR_VAR", "INSTR_I", "INSTR_I8", "INSTR_R", "INSTR_METHOD", + "INSTR_SIG", "INSTR_BRTARGET", "INSTR_SWITCH", "INSTR_TYPE", "INSTR_STRING", + "INSTR_FIELD", "INSTR_TOK", "DOTTEDNAME", "ID", "WS", "SINGLE_LINE_COMMENT", + "COMMENT", "PERMISSION", "PERMISSIONSET", "EMITBYTE", "MAXSTACK", "ENTRYPOINT", + "ZEROINIT", "LOCALS", "EXPORT", "OVERRIDE", "VTENTRY", "IncludedFileEof", + "SyntheticIncludedFileEof" + }; + public static readonly IVocabulary DefaultVocabulary = new Vocabulary(_LiteralNames, _SymbolicNames); + + [NotNull] + public override IVocabulary Vocabulary + { + get + { + return DefaultVocabulary; + } + } + + public override string GrammarFileName { get { return "CIL.g4"; } } + + public override string[] RuleNames { get { return ruleNames; } } + + public override int[] SerializedAtn { get { return _serializedATN; } } + + static CILParser() { + decisionToDFA = new DFA[_ATN.NumberOfDecisions]; + for (int i = 0; i < _ATN.NumberOfDecisions; i++) { + decisionToDFA[i] = new DFA(_ATN.GetDecisionState(i), i); + } + } + + public CILParser(ITokenStream input) : this(input, Console.Out, Console.Error) { } + + public CILParser(ITokenStream input, TextWriter output, TextWriter errorOutput) + : base(input, output, errorOutput) + { + Interpreter = new ParserATNSimulator(this, _ATN, decisionToDFA, sharedContextCache); + } + + public partial class IdContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode ID() { return GetToken(CILParser.ID, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode UNMANAGED() { return GetToken(CILParser.UNMANAGED, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode SQSTRING() { return GetToken(CILParser.SQSTRING, 0); } + public IdContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_id; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitId(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public IdContext id() { + IdContext _localctx = new IdContext(Context, State); + EnterRule(_localctx, 0, RULE_id); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 362; + _la = TokenStream.LA(1); + if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & 65534L) != 0) || ((((_la - 247)) & ~0x3f) == 0 && ((1L << (_la - 247)) & 17592186568705L) != 0)) ) { + ErrorHandler.RecoverInline(this); + } + else { + ErrorHandler.ReportMatch(this); + Consume(); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class DottedNameContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode DOTTEDNAME() { return GetToken(CILParser.DOTTEDNAME, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode[] ID() { return GetTokens(CILParser.ID); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode ID(int i) { + return GetToken(CILParser.ID, i); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode[] DOT() { return GetTokens(CILParser.DOT); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode DOT(int i) { + return GetToken(CILParser.DOT, i); + } + public DottedNameContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_dottedName; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitDottedName(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public DottedNameContext dottedName() { + DottedNameContext _localctx = new DottedNameContext(Context, State); + EnterRule(_localctx, 2, RULE_dottedName); + try { + int _alt; + State = 373; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case DOTTEDNAME: + EnterOuterAlt(_localctx, 1); + { + State = 364; + Match(DOTTEDNAME); + } + break; + case ID: + EnterOuterAlt(_localctx, 2); + { + { + State = 369; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,0,Context); + while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + State = 365; + Match(ID); + State = 366; + Match(DOT); + } + } + } + State = 371; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,0,Context); + } + State = 372; + Match(ID); + } + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class CompQstringContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode[] QSTRING() { return GetTokens(CILParser.QSTRING); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode QSTRING(int i) { + return GetToken(CILParser.QSTRING, i); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode[] PLUS() { return GetTokens(CILParser.PLUS); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode PLUS(int i) { + return GetToken(CILParser.PLUS, i); + } + public CompQstringContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_compQstring; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitCompQstring(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public CompQstringContext compQstring() { + CompQstringContext _localctx = new CompQstringContext(Context, State); + EnterRule(_localctx, 4, RULE_compQstring); + try { + int _alt; + EnterOuterAlt(_localctx, 1); + { + State = 379; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,2,Context); + while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + State = 375; + Match(QSTRING); + State = 376; + Match(PLUS); + } + } + } + State = 381; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,2,Context); + } + State = 382; + Match(QSTRING); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class DeclsContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public DeclContext[] decl() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public DeclContext decl(int i) { + return GetRuleContext(i); + } + public DeclsContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_decls; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitDecls(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public DeclsContext decls() { + DeclsContext _localctx = new DeclsContext(Context, State); + EnterRule(_localctx, 6, RULE_decls); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 385; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + do { + { + { + State = 384; + decl(); + } + } + State = 387; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + } while ( (((_la) & ~0x3f) == 0 && ((1L << _la) & 986285952729088L) != 0) || ((((_la - 72)) & ~0x3f) == 0 && ((1L << (_la - 72)) & 140737488355331L) != 0) || ((((_la - 137)) & ~0x3f) == 0 && ((1L << (_la - 137)) & 288230376185266177L) != 0) || ((((_la - 269)) & ~0x3f) == 0 && ((1L << (_la - 269)) & 207618303L) != 0) ); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class DeclContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ClassHeadContext classHead() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ClassDeclsContext classDecls() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public NameSpaceHeadContext nameSpaceHead() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public DeclsContext decls() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public MethodHeadContext methodHead() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public MethodDeclsContext methodDecls() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public FieldDeclContext fieldDecl() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public DataDeclContext dataDecl() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public VtableDeclContext vtableDecl() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public VtfixupDeclContext vtfixupDecl() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ExtSourceSpecContext extSourceSpec() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public FileDeclContext fileDecl() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public AssemblyBlockContext assemblyBlock() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public AssemblyRefHeadContext assemblyRefHead() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public AssemblyRefDeclsContext assemblyRefDecls() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ExptypeHeadContext exptypeHead() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ExptypeDeclsContext exptypeDecls() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ManifestResHeadContext manifestResHead() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ManifestResDeclsContext manifestResDecls() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ModuleHeadContext moduleHead() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public SecDeclContext secDecl() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public CustomAttrDeclContext customAttrDecl() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public SubsystemContext subsystem() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public CorflagsContext corflags() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public AlignmentContext alignment() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ImagebaseContext imagebase() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public StackreserveContext stackreserve() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public LanguageDeclContext languageDecl() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public TypedefDeclContext typedefDecl() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public CompControlContext compControl() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public TypelistContext typelist() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public MscorlibContext mscorlib() { + return GetRuleContext(0); + } + public DeclContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_decl; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitDecl(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public DeclContext decl() { + DeclContext _localctx = new DeclContext(Context, State); + EnterRule(_localctx, 8, RULE_decl); + try { + State = 439; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,4,Context) ) { + case 1: + EnterOuterAlt(_localctx, 1); + { + State = 389; + classHead(); + State = 390; + Match(T__15); + State = 391; + classDecls(); + State = 392; + Match(T__16); + } + break; + case 2: + EnterOuterAlt(_localctx, 2); + { + State = 394; + nameSpaceHead(); + State = 395; + Match(T__15); + State = 396; + decls(); + State = 397; + Match(T__16); + } + break; + case 3: + EnterOuterAlt(_localctx, 3); + { + State = 399; + methodHead(); + State = 400; + Match(T__15); + State = 401; + methodDecls(); + State = 402; + Match(T__16); + } + break; + case 4: + EnterOuterAlt(_localctx, 4); + { + State = 404; + fieldDecl(); + } + break; + case 5: + EnterOuterAlt(_localctx, 5); + { + State = 405; + dataDecl(); + } + break; + case 6: + EnterOuterAlt(_localctx, 6); + { + State = 406; + vtableDecl(); + } + break; + case 7: + EnterOuterAlt(_localctx, 7); + { + State = 407; + vtfixupDecl(); + } + break; + case 8: + EnterOuterAlt(_localctx, 8); + { + State = 408; + extSourceSpec(); + } + break; + case 9: + EnterOuterAlt(_localctx, 9); + { + State = 409; + fileDecl(); + } + break; + case 10: + EnterOuterAlt(_localctx, 10); + { + State = 410; + assemblyBlock(); + } + break; + case 11: + EnterOuterAlt(_localctx, 11); + { + State = 411; + assemblyRefHead(); + State = 412; + Match(T__15); + State = 413; + assemblyRefDecls(); + State = 414; + Match(T__16); + } + break; + case 12: + EnterOuterAlt(_localctx, 12); + { + State = 416; + exptypeHead(); + State = 417; + Match(T__15); + State = 418; + exptypeDecls(); + State = 419; + Match(T__16); + } + break; + case 13: + EnterOuterAlt(_localctx, 13); + { + State = 421; + manifestResHead(); + State = 422; + Match(T__15); + State = 423; + manifestResDecls(); + State = 424; + Match(T__16); + } + break; + case 14: + EnterOuterAlt(_localctx, 14); + { + State = 426; + moduleHead(); + } + break; + case 15: + EnterOuterAlt(_localctx, 15); + { + State = 427; + secDecl(); + } + break; + case 16: + EnterOuterAlt(_localctx, 16); + { + State = 428; + customAttrDecl(); + } + break; + case 17: + EnterOuterAlt(_localctx, 17); + { + State = 429; + subsystem(); + } + break; + case 18: + EnterOuterAlt(_localctx, 18); + { + State = 430; + corflags(); + } + break; + case 19: + EnterOuterAlt(_localctx, 19); + { + State = 431; + alignment(); + } + break; + case 20: + EnterOuterAlt(_localctx, 20); + { + State = 432; + imagebase(); + } + break; + case 21: + EnterOuterAlt(_localctx, 21); + { + State = 433; + stackreserve(); + } + break; + case 22: + EnterOuterAlt(_localctx, 22); + { + State = 434; + languageDecl(); + } + break; + case 23: + EnterOuterAlt(_localctx, 23); + { + State = 435; + typedefDecl(); + } + break; + case 24: + EnterOuterAlt(_localctx, 24); + { + State = 436; + compControl(); + } + break; + case 25: + EnterOuterAlt(_localctx, 25); + { + State = 437; + typelist(); + } + break; + case 26: + EnterOuterAlt(_localctx, 26); + { + State = 438; + mscorlib(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class SubsystemContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public Int32Context int32() { + return GetRuleContext(0); + } + public SubsystemContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_subsystem; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitSubsystem(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public SubsystemContext subsystem() { + SubsystemContext _localctx = new SubsystemContext(Context, State); + EnterRule(_localctx, 10, RULE_subsystem); + try { + EnterOuterAlt(_localctx, 1); + { + State = 441; + Match(T__17); + State = 442; + int32(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class CorflagsContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public Int32Context int32() { + return GetRuleContext(0); + } + public CorflagsContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_corflags; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitCorflags(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public CorflagsContext corflags() { + CorflagsContext _localctx = new CorflagsContext(Context, State); + EnterRule(_localctx, 12, RULE_corflags); + try { + EnterOuterAlt(_localctx, 1); + { + State = 444; + Match(T__18); + State = 445; + int32(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class AlignmentContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public Int32Context int32() { + return GetRuleContext(0); + } + public AlignmentContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_alignment; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitAlignment(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public AlignmentContext alignment() { + AlignmentContext _localctx = new AlignmentContext(Context, State); + EnterRule(_localctx, 14, RULE_alignment); + try { + EnterOuterAlt(_localctx, 1); + { + State = 447; + Match(T__19); + State = 448; + Match(T__20); + State = 449; + int32(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class ImagebaseContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public Int64Context int64() { + return GetRuleContext(0); + } + public ImagebaseContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_imagebase; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitImagebase(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public ImagebaseContext imagebase() { + ImagebaseContext _localctx = new ImagebaseContext(Context, State); + EnterRule(_localctx, 16, RULE_imagebase); + try { + EnterOuterAlt(_localctx, 1); + { + State = 451; + Match(T__21); + State = 452; + int64(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class StackreserveContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public Int64Context int64() { + return GetRuleContext(0); + } + public StackreserveContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_stackreserve; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitStackreserve(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public StackreserveContext stackreserve() { + StackreserveContext _localctx = new StackreserveContext(Context, State); + EnterRule(_localctx, 18, RULE_stackreserve); + try { + EnterOuterAlt(_localctx, 1); + { + State = 454; + Match(T__22); + State = 455; + int64(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class AssemblyBlockContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public AsmAttrContext asmAttr() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public DottedNameContext dottedName() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public AssemblyDeclsContext assemblyDecls() { + return GetRuleContext(0); + } + public AssemblyBlockContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_assemblyBlock; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitAssemblyBlock(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public AssemblyBlockContext assemblyBlock() { + AssemblyBlockContext _localctx = new AssemblyBlockContext(Context, State); + EnterRule(_localctx, 20, RULE_assemblyBlock); + try { + EnterOuterAlt(_localctx, 1); + { + State = 457; + Match(T__23); + State = 458; + asmAttr(); + State = 459; + dottedName(); + State = 460; + Match(T__15); + State = 461; + assemblyDecls(); + State = 462; + Match(T__16); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class MscorlibContext : ParserRuleContext { + public MscorlibContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_mscorlib; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitMscorlib(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public MscorlibContext mscorlib() { + MscorlibContext _localctx = new MscorlibContext(Context, State); + EnterRule(_localctx, 22, RULE_mscorlib); + try { + EnterOuterAlt(_localctx, 1); + { + State = 464; + Match(T__24); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class LanguageDeclContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode[] SQSTRING() { return GetTokens(CILParser.SQSTRING); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode SQSTRING(int i) { + return GetToken(CILParser.SQSTRING, i); + } + public LanguageDeclContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_languageDecl; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitLanguageDecl(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public LanguageDeclContext languageDecl() { + LanguageDeclContext _localctx = new LanguageDeclContext(Context, State); + EnterRule(_localctx, 24, RULE_languageDecl); + try { + State = 478; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,5,Context) ) { + case 1: + EnterOuterAlt(_localctx, 1); + { + State = 466; + Match(T__25); + State = 467; + Match(SQSTRING); + } + break; + case 2: + EnterOuterAlt(_localctx, 2); + { + State = 468; + Match(T__25); + State = 469; + Match(SQSTRING); + State = 470; + Match(T__26); + State = 471; + Match(SQSTRING); + } + break; + case 3: + EnterOuterAlt(_localctx, 3); + { + State = 472; + Match(T__25); + State = 473; + Match(SQSTRING); + State = 474; + Match(T__26); + State = 475; + Match(SQSTRING); + State = 476; + Match(T__26); + State = 477; + Match(SQSTRING); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class TypelistContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ClassNameContext[] className() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public ClassNameContext className(int i) { + return GetRuleContext(i); + } + public TypelistContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_typelist; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitTypelist(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public TypelistContext typelist() { + TypelistContext _localctx = new TypelistContext(Context, State); + EnterRule(_localctx, 26, RULE_typelist); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 480; + Match(T__27); + State = 481; + Match(T__15); + State = 485; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + while (_la==T__40 || _la==T__110 || ((((_la - 259)) & ~0x3f) == 0 && ((1L << (_la - 259)) & 6442450951L) != 0)) { + { + { + State = 482; + className(); + } + } + State = 487; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + } + State = 488; + Match(T__16); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Int32Context : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode INT32() { return GetToken(CILParser.INT32, 0); } + public Int32Context(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_int32; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitInt32(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Int32Context int32() { + Int32Context _localctx = new Int32Context(Context, State); + EnterRule(_localctx, 28, RULE_int32); + try { + EnterOuterAlt(_localctx, 1); + { + State = 490; + Match(INT32); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Int64Context : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode INT64() { return GetToken(CILParser.INT64, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode INT32() { return GetToken(CILParser.INT32, 0); } + public Int64Context(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_int64; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitInt64(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Int64Context int64() { + Int64Context _localctx = new Int64Context(Context, State); + EnterRule(_localctx, 30, RULE_int64); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 492; + _la = TokenStream.LA(1); + if ( !(_la==INT32 || _la==INT64) ) { + ErrorHandler.RecoverInline(this); + } + else { + ErrorHandler.ReportMatch(this); + Consume(); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Float64Context : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode FLOAT64() { return GetToken(CILParser.FLOAT64, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode FLOAT32() { return GetToken(CILParser.FLOAT32, 0); } + [System.Diagnostics.DebuggerNonUserCode] public Int32Context int32() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode FLOAT64_() { return GetToken(CILParser.FLOAT64_, 0); } + [System.Diagnostics.DebuggerNonUserCode] public Int64Context int64() { + return GetRuleContext(0); + } + public Float64Context(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_float64; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitFloat64(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Float64Context float64() { + Float64Context _localctx = new Float64Context(Context, State); + EnterRule(_localctx, 32, RULE_float64); + try { + State = 505; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case FLOAT64: + EnterOuterAlt(_localctx, 1); + { + State = 494; + Match(FLOAT64); + } + break; + case FLOAT32: + EnterOuterAlt(_localctx, 2); + { + State = 495; + Match(FLOAT32); + State = 496; + Match(T__28); + State = 497; + int32(); + State = 498; + Match(T__29); + } + break; + case FLOAT64_: + EnterOuterAlt(_localctx, 3); + { + State = 500; + Match(FLOAT64_); + State = 501; + Match(T__28); + State = 502; + int64(); + State = 503; + Match(T__29); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class IntOrWildcardContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public Int32Context int32() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode PTR() { return GetToken(CILParser.PTR, 0); } + public IntOrWildcardContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_intOrWildcard; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitIntOrWildcard(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public IntOrWildcardContext intOrWildcard() { + IntOrWildcardContext _localctx = new IntOrWildcardContext(Context, State); + EnterRule(_localctx, 34, RULE_intOrWildcard); + try { + State = 509; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case INT32: + EnterOuterAlt(_localctx, 1); + { + State = 507; + int32(); + } + break; + case PTR: + EnterOuterAlt(_localctx, 2); + { + State = 508; + Match(PTR); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class CompControlContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode PP_DEFINE() { return GetToken(CILParser.PP_DEFINE, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode ID() { return GetToken(CILParser.ID, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode QSTRING() { return GetToken(CILParser.QSTRING, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode PP_UNDEF() { return GetToken(CILParser.PP_UNDEF, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode PP_IFDEF() { return GetToken(CILParser.PP_IFDEF, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode PP_IFNDEF() { return GetToken(CILParser.PP_IFNDEF, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode PP_ELSE() { return GetToken(CILParser.PP_ELSE, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode PP_ENDIF() { return GetToken(CILParser.PP_ENDIF, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode PP_INCLUDE() { return GetToken(CILParser.PP_INCLUDE, 0); } + public CompControlContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_compControl; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitCompControl(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public CompControlContext compControl() { + CompControlContext _localctx = new CompControlContext(Context, State); + EnterRule(_localctx, 36, RULE_compControl); + try { + State = 527; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,9,Context) ) { + case 1: + EnterOuterAlt(_localctx, 1); + { + State = 511; + Match(PP_DEFINE); + State = 512; + Match(ID); + } + break; + case 2: + EnterOuterAlt(_localctx, 2); + { + State = 513; + Match(PP_DEFINE); + State = 514; + Match(ID); + State = 515; + Match(QSTRING); + } + break; + case 3: + EnterOuterAlt(_localctx, 3); + { + State = 516; + Match(PP_UNDEF); + State = 517; + Match(ID); + } + break; + case 4: + EnterOuterAlt(_localctx, 4); + { + State = 518; + Match(PP_IFDEF); + State = 519; + Match(ID); + } + break; + case 5: + EnterOuterAlt(_localctx, 5); + { + State = 520; + Match(PP_IFNDEF); + State = 521; + Match(ID); + } + break; + case 6: + EnterOuterAlt(_localctx, 6); + { + State = 522; + Match(PP_ELSE); + } + break; + case 7: + EnterOuterAlt(_localctx, 7); + { + State = 523; + Match(PP_ENDIF); + } + break; + case 8: + EnterOuterAlt(_localctx, 8); + { + State = 524; + Match(PP_INCLUDE); + State = 525; + Match(QSTRING); + } + break; + case 9: + EnterOuterAlt(_localctx, 9); + { + State = 526; + Match(T__30); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class TypedefDeclContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public TypeContext type() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public DottedNameContext dottedName() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ClassNameContext className() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public MemberRefContext memberRef() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public CustomDescrContext customDescr() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public CustomDescrWithOwnerContext customDescrWithOwner() { + return GetRuleContext(0); + } + public TypedefDeclContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_typedefDecl; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitTypedefDecl(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public TypedefDeclContext typedefDecl() { + TypedefDeclContext _localctx = new TypedefDeclContext(Context, State); + EnterRule(_localctx, 38, RULE_typedefDecl); + try { + State = 554; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,10,Context) ) { + case 1: + EnterOuterAlt(_localctx, 1); + { + State = 529; + Match(T__31); + State = 530; + type(); + State = 531; + Match(T__32); + State = 532; + dottedName(); + } + break; + case 2: + EnterOuterAlt(_localctx, 2); + { + State = 534; + Match(T__31); + State = 535; + className(); + State = 536; + Match(T__32); + State = 537; + dottedName(); + } + break; + case 3: + EnterOuterAlt(_localctx, 3); + { + State = 539; + Match(T__31); + State = 540; + memberRef(); + State = 541; + Match(T__32); + State = 542; + dottedName(); + } + break; + case 4: + EnterOuterAlt(_localctx, 4); + { + State = 544; + Match(T__31); + State = 545; + customDescr(); + State = 546; + Match(T__32); + State = 547; + dottedName(); + } + break; + case 5: + EnterOuterAlt(_localctx, 5); + { + State = 549; + Match(T__31); + State = 550; + customDescrWithOwner(); + State = 551; + Match(T__32); + State = 552; + dottedName(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class CustomDescrContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public CustomTypeContext customType() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public CompQstringContext compQstring() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public CustomBlobDescrContext customBlobDescr() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public BytesContext bytes() { + return GetRuleContext(0); + } + public CustomDescrContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_customDescr; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitCustomDescr(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public CustomDescrContext customDescr() { + CustomDescrContext _localctx = new CustomDescrContext(Context, State); + EnterRule(_localctx, 40, RULE_customDescr); + try { + State = 577; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,11,Context) ) { + case 1: + EnterOuterAlt(_localctx, 1); + { + State = 556; + Match(T__33); + State = 557; + customType(); + } + break; + case 2: + EnterOuterAlt(_localctx, 2); + { + State = 558; + Match(T__33); + State = 559; + customType(); + State = 560; + Match(T__34); + State = 561; + compQstring(); + } + break; + case 3: + EnterOuterAlt(_localctx, 3); + { + State = 563; + Match(T__33); + State = 564; + customType(); + State = 565; + Match(T__34); + State = 566; + Match(T__15); + State = 567; + customBlobDescr(); + State = 568; + Match(T__16); + } + break; + case 4: + EnterOuterAlt(_localctx, 4); + { + State = 570; + Match(T__33); + State = 571; + customType(); + State = 572; + Match(T__34); + State = 573; + Match(T__28); + State = 574; + bytes(); + State = 575; + Match(T__29); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class CustomDescrWithOwnerContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public OwnerTypeContext ownerType() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public CustomTypeContext customType() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public CompQstringContext compQstring() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public CustomBlobDescrContext customBlobDescr() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public BytesContext bytes() { + return GetRuleContext(0); + } + public CustomDescrWithOwnerContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_customDescrWithOwner; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitCustomDescrWithOwner(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public CustomDescrWithOwnerContext customDescrWithOwner() { + CustomDescrWithOwnerContext _localctx = new CustomDescrWithOwnerContext(Context, State); + EnterRule(_localctx, 42, RULE_customDescrWithOwner); + try { + State = 613; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,12,Context) ) { + case 1: + EnterOuterAlt(_localctx, 1); + { + State = 579; + Match(T__33); + State = 580; + Match(T__28); + State = 581; + ownerType(); + State = 582; + Match(T__29); + State = 583; + customType(); + } + break; + case 2: + EnterOuterAlt(_localctx, 2); + { + State = 585; + Match(T__33); + State = 586; + Match(T__28); + State = 587; + ownerType(); + State = 588; + Match(T__29); + State = 589; + customType(); + State = 590; + Match(T__34); + State = 591; + compQstring(); + } + break; + case 3: + EnterOuterAlt(_localctx, 3); + { + State = 593; + Match(T__33); + State = 594; + Match(T__28); + State = 595; + ownerType(); + State = 596; + Match(T__29); + State = 597; + customType(); + State = 598; + Match(T__34); + State = 599; + Match(T__15); + State = 600; + customBlobDescr(); + State = 601; + Match(T__16); + } + break; + case 4: + EnterOuterAlt(_localctx, 4); + { + State = 603; + Match(T__33); + State = 604; + Match(T__28); + State = 605; + ownerType(); + State = 606; + Match(T__29); + State = 607; + customType(); + State = 608; + Match(T__34); + State = 609; + Match(T__28); + State = 610; + bytes(); + State = 611; + Match(T__29); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class CustomTypeContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public MethodRefContext methodRef() { + return GetRuleContext(0); + } + public CustomTypeContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_customType; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitCustomType(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public CustomTypeContext customType() { + CustomTypeContext _localctx = new CustomTypeContext(Context, State); + EnterRule(_localctx, 44, RULE_customType); + try { + EnterOuterAlt(_localctx, 1); + { + State = 615; + methodRef(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class OwnerTypeContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public TypeSpecContext typeSpec() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public MemberRefContext memberRef() { + return GetRuleContext(0); + } + public OwnerTypeContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_ownerType; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitOwnerType(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public OwnerTypeContext ownerType() { + OwnerTypeContext _localctx = new OwnerTypeContext(Context, State); + EnterRule(_localctx, 46, RULE_ownerType); + try { + State = 619; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,13,Context) ) { + case 1: + EnterOuterAlt(_localctx, 1); + { + State = 617; + typeSpec(); + } + break; + case 2: + EnterOuterAlt(_localctx, 2); + { + State = 618; + memberRef(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class CustomBlobDescrContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public CustomBlobArgsContext customBlobArgs() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public CustomBlobNVPairsContext customBlobNVPairs() { + return GetRuleContext(0); + } + public CustomBlobDescrContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_customBlobDescr; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitCustomBlobDescr(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public CustomBlobDescrContext customBlobDescr() { + CustomBlobDescrContext _localctx = new CustomBlobDescrContext(Context, State); + EnterRule(_localctx, 48, RULE_customBlobDescr); + try { + EnterOuterAlt(_localctx, 1); + { + State = 621; + customBlobArgs(); + State = 622; + customBlobNVPairs(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class CustomBlobArgsContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public SerInitContext[] serInit() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public SerInitContext serInit(int i) { + return GetRuleContext(i); + } + [System.Diagnostics.DebuggerNonUserCode] public CompControlContext[] compControl() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public CompControlContext compControl(int i) { + return GetRuleContext(i); + } + public CustomBlobArgsContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_customBlobArgs; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitCustomBlobArgs(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public CustomBlobArgsContext customBlobArgs() { + CustomBlobArgsContext _localctx = new CustomBlobArgsContext(Context, State); + EnterRule(_localctx, 50, RULE_customBlobArgs); + try { + int _alt; + EnterOuterAlt(_localctx, 1); + { + State = 628; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,15,Context); + while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + State = 626; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case T__82: + case CHAR: + case STRING: + case BOOL: + case INT8: + case INT16: + case INT32_: + case INT64_: + case FLOAT32: + case FLOAT64_: + case UINT8: + case UINT16: + case UINT32: + case UINT64: + case TYPE: + case OBJECT: + { + State = 624; + serInit(); + } + break; + case T__30: + case PP_DEFINE: + case PP_UNDEF: + case PP_IFDEF: + case PP_IFNDEF: + case PP_ELSE: + case PP_ENDIF: + case PP_INCLUDE: + { + State = 625; + compControl(); + } + break; + default: + throw new NoViableAltException(this); + } + } + } + State = 630; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,15,Context); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class CustomBlobNVPairsContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public FieldOrPropContext[] fieldOrProp() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public FieldOrPropContext fieldOrProp(int i) { + return GetRuleContext(i); + } + [System.Diagnostics.DebuggerNonUserCode] public SerializTypeContext[] serializType() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public SerializTypeContext serializType(int i) { + return GetRuleContext(i); + } + [System.Diagnostics.DebuggerNonUserCode] public DottedNameContext[] dottedName() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public DottedNameContext dottedName(int i) { + return GetRuleContext(i); + } + [System.Diagnostics.DebuggerNonUserCode] public SerInitContext[] serInit() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public SerInitContext serInit(int i) { + return GetRuleContext(i); + } + [System.Diagnostics.DebuggerNonUserCode] public CompControlContext[] compControl() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public CompControlContext compControl(int i) { + return GetRuleContext(i); + } + public CustomBlobNVPairsContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_customBlobNVPairs; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitCustomBlobNVPairs(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public CustomBlobNVPairsContext customBlobNVPairs() { + CustomBlobNVPairsContext _localctx = new CustomBlobNVPairsContext(Context, State); + EnterRule(_localctx, 52, RULE_customBlobNVPairs); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 640; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + while ((((_la) & ~0x3f) == 0 && ((1L << _la) & 208305913856L) != 0) || ((((_la - 269)) & ~0x3f) == 0 && ((1L << (_la - 269)) & 127L) != 0)) { + { + State = 638; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case T__35: + case T__36: + { + State = 631; + fieldOrProp(); + State = 632; + serializType(); + State = 633; + dottedName(); + State = 634; + Match(T__34); + State = 635; + serInit(); + } + break; + case T__30: + case PP_DEFINE: + case PP_UNDEF: + case PP_IFDEF: + case PP_IFNDEF: + case PP_ELSE: + case PP_ENDIF: + case PP_INCLUDE: + { + State = 637; + compControl(); + } + break; + default: + throw new NoViableAltException(this); + } + } + State = 642; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class FieldOrPropContext : ParserRuleContext { + public FieldOrPropContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_fieldOrProp; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitFieldOrProp(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public FieldOrPropContext fieldOrProp() { + FieldOrPropContext _localctx = new FieldOrPropContext(Context, State); + EnterRule(_localctx, 54, RULE_fieldOrProp); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 643; + _la = TokenStream.LA(1); + if ( !(_la==T__35 || _la==T__36) ) { + ErrorHandler.RecoverInline(this); + } + else { + ErrorHandler.ReportMatch(this); + Consume(); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class SerializTypeContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public SerializTypeElementContext serializTypeElement() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode ARRAY_TYPE_NO_BOUNDS() { return GetToken(CILParser.ARRAY_TYPE_NO_BOUNDS, 0); } + public SerializTypeContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_serializType; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitSerializType(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public SerializTypeContext serializType() { + SerializTypeContext _localctx = new SerializTypeContext(Context, State); + EnterRule(_localctx, 56, RULE_serializType); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 645; + serializTypeElement(); + State = 647; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==ARRAY_TYPE_NO_BOUNDS) { + { + State = 646; + Match(ARRAY_TYPE_NO_BOUNDS); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class SerializTypeElementContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public SimpleTypeContext simpleType() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public DottedNameContext dottedName() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode TYPE() { return GetToken(CILParser.TYPE, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode OBJECT() { return GetToken(CILParser.OBJECT, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode ENUM() { return GetToken(CILParser.ENUM, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode SQSTRING() { return GetToken(CILParser.SQSTRING, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ClassNameContext className() { + return GetRuleContext(0); + } + public SerializTypeElementContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_serializTypeElement; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitSerializTypeElement(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public SerializTypeElementContext serializTypeElement() { + SerializTypeElementContext _localctx = new SerializTypeElementContext(Context, State); + EnterRule(_localctx, 58, RULE_serializTypeElement); + try { + State = 658; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,19,Context) ) { + case 1: + EnterOuterAlt(_localctx, 1); + { + State = 649; + simpleType(); + } + break; + case 2: + EnterOuterAlt(_localctx, 2); + { + State = 650; + dottedName(); + } + break; + case 3: + EnterOuterAlt(_localctx, 3); + { + State = 651; + Match(TYPE); + } + break; + case 4: + EnterOuterAlt(_localctx, 4); + { + State = 652; + Match(OBJECT); + } + break; + case 5: + EnterOuterAlt(_localctx, 5); + { + State = 653; + Match(ENUM); + State = 654; + Match(T__37); + State = 655; + Match(SQSTRING); + } + break; + case 6: + EnterOuterAlt(_localctx, 6); + { + State = 656; + Match(ENUM); + State = 657; + className(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class ModuleHeadContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode MODULE() { return GetToken(CILParser.MODULE, 0); } + [System.Diagnostics.DebuggerNonUserCode] public DottedNameContext dottedName() { + return GetRuleContext(0); + } + public ModuleHeadContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_moduleHead; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitModuleHead(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public ModuleHeadContext moduleHead() { + ModuleHeadContext _localctx = new ModuleHeadContext(Context, State); + EnterRule(_localctx, 60, RULE_moduleHead); + try { + State = 666; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,20,Context) ) { + case 1: + EnterOuterAlt(_localctx, 1); + { + State = 660; + Match(MODULE); + } + break; + case 2: + EnterOuterAlt(_localctx, 2); + { + State = 661; + Match(MODULE); + State = 662; + dottedName(); + } + break; + case 3: + EnterOuterAlt(_localctx, 3); + { + State = 663; + Match(MODULE); + State = 664; + Match(T__38); + State = 665; + dottedName(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class VtfixupDeclContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public Int32Context int32() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public VtfixupAttrContext vtfixupAttr() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public IdContext id() { + return GetRuleContext(0); + } + public VtfixupDeclContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_vtfixupDecl; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitVtfixupDecl(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public VtfixupDeclContext vtfixupDecl() { + VtfixupDeclContext _localctx = new VtfixupDeclContext(Context, State); + EnterRule(_localctx, 62, RULE_vtfixupDecl); + try { + EnterOuterAlt(_localctx, 1); + { + State = 668; + Match(T__39); + State = 669; + Match(T__40); + State = 670; + int32(); + State = 671; + Match(T__41); + State = 672; + vtfixupAttr(0); + State = 673; + Match(T__42); + State = 674; + id(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class VtfixupAttrContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public VtfixupAttrContext vtfixupAttr() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode INT32_() { return GetToken(CILParser.INT32_, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode INT64_() { return GetToken(CILParser.INT64_, 0); } + public VtfixupAttrContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_vtfixupAttr; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitVtfixupAttr(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public VtfixupAttrContext vtfixupAttr() { + return vtfixupAttr(0); + } + + private VtfixupAttrContext vtfixupAttr(int _p) { + ParserRuleContext _parentctx = Context; + int _parentState = State; + VtfixupAttrContext _localctx = new VtfixupAttrContext(Context, _parentState); + VtfixupAttrContext _prevctx = _localctx; + int _startState = 64; + EnterRecursionRule(_localctx, 64, RULE_vtfixupAttr, _p); + try { + int _alt; + EnterOuterAlt(_localctx, 1); + { + { + } + Context.Stop = TokenStream.LT(-1); + State = 689; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,22,Context); + while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + if ( ParseListeners!=null ) + TriggerExitRuleEvent(); + _prevctx = _localctx; + { + State = 687; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,21,Context) ) { + case 1: + { + _localctx = new VtfixupAttrContext(_parentctx, _parentState); + PushNewRecursionContext(_localctx, _startState, RULE_vtfixupAttr); + State = 677; + if (!(Precpred(Context, 5))) throw new FailedPredicateException(this, "Precpred(Context, 5)"); + State = 678; + Match(INT32_); + } + break; + case 2: + { + _localctx = new VtfixupAttrContext(_parentctx, _parentState); + PushNewRecursionContext(_localctx, _startState, RULE_vtfixupAttr); + State = 679; + if (!(Precpred(Context, 4))) throw new FailedPredicateException(this, "Precpred(Context, 4)"); + State = 680; + Match(INT64_); + } + break; + case 3: + { + _localctx = new VtfixupAttrContext(_parentctx, _parentState); + PushNewRecursionContext(_localctx, _startState, RULE_vtfixupAttr); + State = 681; + if (!(Precpred(Context, 3))) throw new FailedPredicateException(this, "Precpred(Context, 3)"); + State = 682; + Match(T__43); + } + break; + case 4: + { + _localctx = new VtfixupAttrContext(_parentctx, _parentState); + PushNewRecursionContext(_localctx, _startState, RULE_vtfixupAttr); + State = 683; + if (!(Precpred(Context, 2))) throw new FailedPredicateException(this, "Precpred(Context, 2)"); + State = 684; + Match(T__44); + } + break; + case 5: + { + _localctx = new VtfixupAttrContext(_parentctx, _parentState); + PushNewRecursionContext(_localctx, _startState, RULE_vtfixupAttr); + State = 685; + if (!(Precpred(Context, 1))) throw new FailedPredicateException(this, "Precpred(Context, 1)"); + State = 686; + Match(T__45); + } + break; + } + } + } + State = 691; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,22,Context); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + UnrollRecursionContexts(_parentctx); + } + return _localctx; + } + + public partial class VtableDeclContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public BytesContext bytes() { + return GetRuleContext(0); + } + public VtableDeclContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_vtableDecl; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitVtableDecl(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public VtableDeclContext vtableDecl() { + VtableDeclContext _localctx = new VtableDeclContext(Context, State); + EnterRule(_localctx, 66, RULE_vtableDecl); + try { + EnterOuterAlt(_localctx, 1); + { + State = 692; + Match(T__46); + State = 693; + Match(T__34); + State = 694; + Match(T__28); + State = 695; + bytes(); + State = 696; + Match(T__29); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class NameSpaceHeadContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public DottedNameContext dottedName() { + return GetRuleContext(0); + } + public NameSpaceHeadContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_nameSpaceHead; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitNameSpaceHead(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public NameSpaceHeadContext nameSpaceHead() { + NameSpaceHeadContext _localctx = new NameSpaceHeadContext(Context, State); + EnterRule(_localctx, 68, RULE_nameSpaceHead); + try { + EnterOuterAlt(_localctx, 1); + { + State = 698; + Match(T__47); + State = 699; + dottedName(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class ClassHeadContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public DottedNameContext dottedName() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public TyparsClauseContext typarsClause() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ExtendsClauseContext extendsClause() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ImplClauseContext implClause() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ClassAttrContext[] classAttr() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public ClassAttrContext classAttr(int i) { + return GetRuleContext(i); + } + public ClassHeadContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_classHead; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitClassHead(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public ClassHeadContext classHead() { + ClassHeadContext _localctx = new ClassHeadContext(Context, State); + EnterRule(_localctx, 70, RULE_classHead); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 701; + Match(T__48); + State = 705; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + while (((((_la - 15)) & ~0x3f) == 0 && ((1L << (_la - 15)) & 33917700333895681L) != 0) || ((((_la - 196)) & ~0x3f) == 0 && ((1L << (_la - 196)) & 281475115122697L) != 0)) { + { + { + State = 702; + classAttr(); + } + } + State = 707; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + } + State = 708; + dottedName(); + State = 709; + typarsClause(); + State = 710; + extendsClause(); + State = 711; + implClause(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class ClassAttrContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode VALUE() { return GetToken(CILParser.VALUE, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode ENUM() { return GetToken(CILParser.ENUM, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode INTERFACE() { return GetToken(CILParser.INTERFACE, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode EXPLICIT() { return GetToken(CILParser.EXPLICIT, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode ANSI() { return GetToken(CILParser.ANSI, 0); } + [System.Diagnostics.DebuggerNonUserCode] public Int32Context int32() { + return GetRuleContext(0); + } + public ClassAttrContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_classAttr; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitClassAttr(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public ClassAttrContext classAttr() { + ClassAttrContext _localctx = new ClassAttrContext(Context, State); + EnterRule(_localctx, 72, RULE_classAttr); + try { + State = 750; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,24,Context) ) { + case 1: + EnterOuterAlt(_localctx, 1); + { + State = 713; + Match(T__49); + } + break; + case 2: + EnterOuterAlt(_localctx, 2); + { + State = 714; + Match(T__50); + } + break; + case 3: + EnterOuterAlt(_localctx, 3); + { + State = 715; + Match(VALUE); + } + break; + case 4: + EnterOuterAlt(_localctx, 4); + { + State = 716; + Match(ENUM); + } + break; + case 5: + EnterOuterAlt(_localctx, 5); + { + State = 717; + Match(INTERFACE); + } + break; + case 6: + EnterOuterAlt(_localctx, 6); + { + State = 718; + Match(T__51); + } + break; + case 7: + EnterOuterAlt(_localctx, 7); + { + State = 719; + Match(T__52); + } + break; + case 8: + EnterOuterAlt(_localctx, 8); + { + State = 720; + Match(T__53); + } + break; + case 9: + EnterOuterAlt(_localctx, 9); + { + State = 721; + Match(T__54); + } + break; + case 10: + EnterOuterAlt(_localctx, 10); + { + State = 722; + Match(EXPLICIT); + } + break; + case 11: + EnterOuterAlt(_localctx, 11); + { + State = 723; + Match(T__14); + } + break; + case 12: + EnterOuterAlt(_localctx, 12); + { + State = 724; + Match(ANSI); + } + break; + case 13: + EnterOuterAlt(_localctx, 13); + { + State = 725; + Match(T__55); + } + break; + case 14: + EnterOuterAlt(_localctx, 14); + { + State = 726; + Match(T__56); + } + break; + case 15: + EnterOuterAlt(_localctx, 15); + { + State = 727; + Match(T__57); + } + break; + case 16: + EnterOuterAlt(_localctx, 16); + { + State = 728; + Match(T__58); + } + break; + case 17: + EnterOuterAlt(_localctx, 17); + { + State = 729; + Match(T__59); + } + break; + case 18: + EnterOuterAlt(_localctx, 18); + { + State = 730; + Match(T__60); + State = 731; + Match(T__49); + } + break; + case 19: + EnterOuterAlt(_localctx, 19); + { + State = 732; + Match(T__60); + State = 733; + Match(T__50); + } + break; + case 20: + EnterOuterAlt(_localctx, 20); + { + State = 734; + Match(T__60); + State = 735; + Match(T__61); + } + break; + case 21: + EnterOuterAlt(_localctx, 21); + { + State = 736; + Match(T__60); + State = 737; + Match(T__62); + } + break; + case 22: + EnterOuterAlt(_localctx, 22); + { + State = 738; + Match(T__60); + State = 739; + Match(T__63); + } + break; + case 23: + EnterOuterAlt(_localctx, 23); + { + State = 740; + Match(T__60); + State = 741; + Match(T__64); + } + break; + case 24: + EnterOuterAlt(_localctx, 24); + { + State = 742; + Match(T__65); + } + break; + case 25: + EnterOuterAlt(_localctx, 25); + { + State = 743; + Match(T__66); + } + break; + case 26: + EnterOuterAlt(_localctx, 26); + { + State = 744; + Match(T__67); + } + break; + case 27: + EnterOuterAlt(_localctx, 27); + { + State = 745; + Match(T__68); + State = 746; + Match(T__28); + State = 747; + int32(); + State = 748; + Match(T__29); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class ExtendsClauseContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public TypeSpecContext typeSpec() { + return GetRuleContext(0); + } + public ExtendsClauseContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_extendsClause; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitExtendsClause(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public ExtendsClauseContext extendsClause() { + ExtendsClauseContext _localctx = new ExtendsClauseContext(Context, State); + EnterRule(_localctx, 74, RULE_extendsClause); + try { + State = 755; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case T__15: + case T__70: + EnterOuterAlt(_localctx, 1); + { + } + break; + case T__69: + EnterOuterAlt(_localctx, 2); + { + State = 753; + Match(T__69); + State = 754; + typeSpec(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class ImplClauseContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ImplListContext implList() { + return GetRuleContext(0); + } + public ImplClauseContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_implClause; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitImplClause(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public ImplClauseContext implClause() { + ImplClauseContext _localctx = new ImplClauseContext(Context, State); + EnterRule(_localctx, 76, RULE_implClause); + try { + State = 760; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case T__15: + EnterOuterAlt(_localctx, 1); + { + } + break; + case T__70: + EnterOuterAlt(_localctx, 2); + { + State = 758; + Match(T__70); + State = 759; + implList(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class ClassDeclsContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ClassDeclContext[] classDecl() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public ClassDeclContext classDecl(int i) { + return GetRuleContext(i); + } + public ClassDeclsContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_classDecls; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitClassDecls(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public ClassDeclsContext classDecls() { + ClassDeclsContext _localctx = new ClassDeclsContext(Context, State); + EnterRule(_localctx, 78, RULE_classDecls); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 765; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + while (((((_la - 26)) & ~0x3f) == 0 && ((1L << (_la - 26)) & 211106240921889L) != 0) || ((((_la - 115)) & ~0x3f) == 0 && ((1L << (_la - 115)) & 140737492617243L) != 0) || ((((_la - 257)) & ~0x3f) == 0 && ((1L << (_la - 257)) & 106403520311297L) != 0)) { + { + { + State = 762; + classDecl(); + } + } + State = 767; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class ImplListContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public TypeSpecContext[] typeSpec() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public TypeSpecContext typeSpec(int i) { + return GetRuleContext(i); + } + public ImplListContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_implList; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitImplList(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public ImplListContext implList() { + ImplListContext _localctx = new ImplListContext(Context, State); + EnterRule(_localctx, 80, RULE_implList); + try { + int _alt; + EnterOuterAlt(_localctx, 1); + { + State = 773; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,28,Context); + while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + State = 768; + typeSpec(); + State = 769; + Match(T__26); + } + } + } + State = 775; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,28,Context); + } + State = 776; + typeSpec(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class EsHeadContext : ParserRuleContext { + public EsHeadContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_esHead; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitEsHead(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public EsHeadContext esHead() { + EsHeadContext _localctx = new EsHeadContext(Context, State); + EnterRule(_localctx, 82, RULE_esHead); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 778; + _la = TokenStream.LA(1); + if ( !(_la==T__71 || _la==T__72) ) { + ErrorHandler.RecoverInline(this); + } + else { + ErrorHandler.ReportMatch(this); + Consume(); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class ExtSourceSpecContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public EsHeadContext esHead() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public Int32Context[] int32() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public Int32Context int32(int i) { + return GetRuleContext(i); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode SQSTRING() { return GetToken(CILParser.SQSTRING, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode QSTRING() { return GetToken(CILParser.QSTRING, 0); } + public ExtSourceSpecContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_extSourceSpec; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitExtSourceSpec(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public ExtSourceSpecContext extSourceSpec() { + ExtSourceSpecContext _localctx = new ExtSourceSpecContext(Context, State); + EnterRule(_localctx, 84, RULE_extSourceSpec); + try { + State = 851; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,29,Context) ) { + case 1: + EnterOuterAlt(_localctx, 1); + { + State = 780; + esHead(); + State = 781; + int32(); + State = 782; + Match(SQSTRING); + } + break; + case 2: + EnterOuterAlt(_localctx, 2); + { + State = 784; + esHead(); + State = 785; + int32(); + } + break; + case 3: + EnterOuterAlt(_localctx, 3); + { + State = 787; + esHead(); + State = 788; + int32(); + State = 789; + Match(T__73); + State = 790; + int32(); + State = 791; + Match(SQSTRING); + } + break; + case 4: + EnterOuterAlt(_localctx, 4); + { + State = 793; + esHead(); + State = 794; + int32(); + State = 795; + Match(T__73); + State = 796; + int32(); + } + break; + case 5: + EnterOuterAlt(_localctx, 5); + { + State = 798; + esHead(); + State = 799; + int32(); + State = 800; + Match(T__73); + State = 801; + int32(); + State = 802; + Match(T__26); + State = 803; + int32(); + State = 804; + Match(SQSTRING); + } + break; + case 6: + EnterOuterAlt(_localctx, 6); + { + State = 806; + esHead(); + State = 807; + int32(); + State = 808; + Match(T__73); + State = 809; + int32(); + State = 810; + Match(T__26); + State = 811; + int32(); + } + break; + case 7: + EnterOuterAlt(_localctx, 7); + { + State = 813; + esHead(); + State = 814; + int32(); + State = 815; + Match(T__26); + State = 816; + int32(); + State = 817; + Match(T__73); + State = 818; + int32(); + State = 819; + Match(SQSTRING); + } + break; + case 8: + EnterOuterAlt(_localctx, 8); + { + State = 821; + esHead(); + State = 822; + int32(); + State = 823; + Match(T__26); + State = 824; + int32(); + State = 825; + Match(T__73); + State = 826; + int32(); + } + break; + case 9: + EnterOuterAlt(_localctx, 9); + { + State = 828; + esHead(); + State = 829; + int32(); + State = 830; + Match(T__26); + State = 831; + int32(); + State = 832; + Match(T__73); + State = 833; + int32(); + State = 834; + Match(T__26); + State = 835; + int32(); + State = 836; + Match(SQSTRING); + } + break; + case 10: + EnterOuterAlt(_localctx, 10); + { + State = 838; + esHead(); + State = 839; + int32(); + State = 840; + Match(T__26); + State = 841; + int32(); + State = 842; + Match(T__73); + State = 843; + int32(); + State = 844; + Match(T__26); + State = 845; + int32(); + } + break; + case 11: + EnterOuterAlt(_localctx, 11); + { + State = 847; + esHead(); + State = 848; + int32(); + State = 849; + Match(QSTRING); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class FileDeclContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public DottedNameContext dottedName() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public FileEntryContext[] fileEntry() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public FileEntryContext fileEntry(int i) { + return GetRuleContext(i); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode HASH() { return GetToken(CILParser.HASH, 0); } + [System.Diagnostics.DebuggerNonUserCode] public BytesContext bytes() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public FileAttrContext[] fileAttr() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public FileAttrContext fileAttr(int i) { + return GetRuleContext(i); + } + public FileDeclContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_fileDecl; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitFileDecl(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public FileDeclContext fileDecl() { + FileDeclContext _localctx = new FileDeclContext(Context, State); + EnterRule(_localctx, 86, RULE_fileDecl); + int _la; + try { + State = 879; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,32,Context) ) { + case 1: + EnterOuterAlt(_localctx, 1); + { + State = 853; + Match(T__19); + State = 857; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + while (_la==T__74) { + { + { + State = 854; + fileAttr(); + } + } + State = 859; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + } + State = 860; + dottedName(); + State = 861; + fileEntry(); + State = 862; + Match(HASH); + State = 863; + Match(T__34); + State = 864; + Match(T__28); + State = 865; + bytes(); + State = 866; + Match(T__29); + State = 867; + fileEntry(); + } + break; + case 2: + EnterOuterAlt(_localctx, 2); + { + State = 869; + Match(T__19); + State = 873; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + while (_la==T__74) { + { + { + State = 870; + fileAttr(); + } + } + State = 875; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + } + State = 876; + dottedName(); + State = 877; + fileEntry(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class FileAttrContext : ParserRuleContext { + public FileAttrContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_fileAttr; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitFileAttr(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public FileAttrContext fileAttr() { + FileAttrContext _localctx = new FileAttrContext(Context, State); + EnterRule(_localctx, 88, RULE_fileAttr); + try { + EnterOuterAlt(_localctx, 1); + { + State = 881; + Match(T__74); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class FileEntryContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode ENTRYPOINT() { return GetToken(CILParser.ENTRYPOINT, 0); } + public FileEntryContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_fileEntry; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitFileEntry(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public FileEntryContext fileEntry() { + FileEntryContext _localctx = new FileEntryContext(Context, State); + EnterRule(_localctx, 90, RULE_fileEntry); + try { + State = 885; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case T__16: + case T__17: + case T__18: + case T__19: + case T__21: + case T__22: + case T__23: + case T__24: + case T__25: + case T__27: + case T__30: + case T__31: + case T__33: + case T__39: + case T__46: + case T__47: + case T__48: + case T__71: + case T__72: + case T__118: + case T__136: + case T__161: + case HASH: + case MODULE: + case PP_DEFINE: + case PP_UNDEF: + case PP_IFDEF: + case PP_IFNDEF: + case PP_ELSE: + case PP_ENDIF: + case PP_INCLUDE: + case MRESOURCE: + case DOTTEDNAME: + case ID: + case PERMISSION: + case PERMISSIONSET: + EnterOuterAlt(_localctx, 1); + { + } + break; + case ENTRYPOINT: + EnterOuterAlt(_localctx, 2); + { + State = 884; + Match(ENTRYPOINT); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class AsmAttrAnyContext : ParserRuleContext { + public AsmAttrAnyContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_asmAttrAny; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitAsmAttrAny(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public AsmAttrAnyContext asmAttrAny() { + AsmAttrAnyContext _localctx = new AsmAttrAnyContext(Context, State); + EnterRule(_localctx, 92, RULE_asmAttrAny); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 887; + _la = TokenStream.LA(1); + if ( !(_la==T__1 || _la==T__59 || ((((_la - 76)) & ~0x3f) == 0 && ((1L << (_la - 76)) & 127L) != 0)) ) { + ErrorHandler.RecoverInline(this); + } + else { + ErrorHandler.ReportMatch(this); + Consume(); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class AsmAttrContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public AsmAttrAnyContext[] asmAttrAny() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public AsmAttrAnyContext asmAttrAny(int i) { + return GetRuleContext(i); + } + public AsmAttrContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_asmAttr; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitAsmAttr(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public AsmAttrContext asmAttr() { + AsmAttrContext _localctx = new AsmAttrContext(Context, State); + EnterRule(_localctx, 94, RULE_asmAttr); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 892; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + while (_la==T__1 || _la==T__59 || ((((_la - 76)) & ~0x3f) == 0 && ((1L << (_la - 76)) & 127L) != 0)) { + { + { + State = 889; + asmAttrAny(); + } + } + State = 894; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Instr_noneContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode INSTR_NONE() { return GetToken(CILParser.INSTR_NONE, 0); } + public Instr_noneContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_instr_none; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitInstr_none(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Instr_noneContext instr_none() { + Instr_noneContext _localctx = new Instr_noneContext(Context, State); + EnterRule(_localctx, 96, RULE_instr_none); + try { + EnterOuterAlt(_localctx, 1); + { + State = 895; + Match(INSTR_NONE); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Instr_varContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode INSTR_VAR() { return GetToken(CILParser.INSTR_VAR, 0); } + public Instr_varContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_instr_var; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitInstr_var(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Instr_varContext instr_var() { + Instr_varContext _localctx = new Instr_varContext(Context, State); + EnterRule(_localctx, 98, RULE_instr_var); + try { + EnterOuterAlt(_localctx, 1); + { + State = 897; + Match(INSTR_VAR); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Instr_iContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode INSTR_I() { return GetToken(CILParser.INSTR_I, 0); } + public Instr_iContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_instr_i; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitInstr_i(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Instr_iContext instr_i() { + Instr_iContext _localctx = new Instr_iContext(Context, State); + EnterRule(_localctx, 100, RULE_instr_i); + try { + EnterOuterAlt(_localctx, 1); + { + State = 899; + Match(INSTR_I); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Instr_i8Context : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode INSTR_I8() { return GetToken(CILParser.INSTR_I8, 0); } + public Instr_i8Context(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_instr_i8; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitInstr_i8(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Instr_i8Context instr_i8() { + Instr_i8Context _localctx = new Instr_i8Context(Context, State); + EnterRule(_localctx, 102, RULE_instr_i8); + try { + EnterOuterAlt(_localctx, 1); + { + State = 901; + Match(INSTR_I8); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Instr_rContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode INSTR_R() { return GetToken(CILParser.INSTR_R, 0); } + public Instr_rContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_instr_r; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitInstr_r(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Instr_rContext instr_r() { + Instr_rContext _localctx = new Instr_rContext(Context, State); + EnterRule(_localctx, 104, RULE_instr_r); + try { + EnterOuterAlt(_localctx, 1); + { + State = 903; + Match(INSTR_R); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Instr_brtargetContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode INSTR_BRTARGET() { return GetToken(CILParser.INSTR_BRTARGET, 0); } + public Instr_brtargetContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_instr_brtarget; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitInstr_brtarget(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Instr_brtargetContext instr_brtarget() { + Instr_brtargetContext _localctx = new Instr_brtargetContext(Context, State); + EnterRule(_localctx, 106, RULE_instr_brtarget); + try { + EnterOuterAlt(_localctx, 1); + { + State = 905; + Match(INSTR_BRTARGET); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Instr_methodContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode INSTR_METHOD() { return GetToken(CILParser.INSTR_METHOD, 0); } + public Instr_methodContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_instr_method; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitInstr_method(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Instr_methodContext instr_method() { + Instr_methodContext _localctx = new Instr_methodContext(Context, State); + EnterRule(_localctx, 108, RULE_instr_method); + try { + EnterOuterAlt(_localctx, 1); + { + State = 907; + Match(INSTR_METHOD); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Instr_fieldContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode INSTR_FIELD() { return GetToken(CILParser.INSTR_FIELD, 0); } + public Instr_fieldContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_instr_field; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitInstr_field(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Instr_fieldContext instr_field() { + Instr_fieldContext _localctx = new Instr_fieldContext(Context, State); + EnterRule(_localctx, 110, RULE_instr_field); + try { + EnterOuterAlt(_localctx, 1); + { + State = 909; + Match(INSTR_FIELD); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Instr_typeContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode INSTR_TYPE() { return GetToken(CILParser.INSTR_TYPE, 0); } + public Instr_typeContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_instr_type; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitInstr_type(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Instr_typeContext instr_type() { + Instr_typeContext _localctx = new Instr_typeContext(Context, State); + EnterRule(_localctx, 112, RULE_instr_type); + try { + EnterOuterAlt(_localctx, 1); + { + State = 911; + Match(INSTR_TYPE); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Instr_stringContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode INSTR_STRING() { return GetToken(CILParser.INSTR_STRING, 0); } + public Instr_stringContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_instr_string; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitInstr_string(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Instr_stringContext instr_string() { + Instr_stringContext _localctx = new Instr_stringContext(Context, State); + EnterRule(_localctx, 114, RULE_instr_string); + try { + EnterOuterAlt(_localctx, 1); + { + State = 913; + Match(INSTR_STRING); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Instr_sigContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode INSTR_SIG() { return GetToken(CILParser.INSTR_SIG, 0); } + public Instr_sigContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_instr_sig; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitInstr_sig(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Instr_sigContext instr_sig() { + Instr_sigContext _localctx = new Instr_sigContext(Context, State); + EnterRule(_localctx, 116, RULE_instr_sig); + try { + EnterOuterAlt(_localctx, 1); + { + State = 915; + Match(INSTR_SIG); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Instr_tokContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode INSTR_TOK() { return GetToken(CILParser.INSTR_TOK, 0); } + public Instr_tokContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_instr_tok; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitInstr_tok(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Instr_tokContext instr_tok() { + Instr_tokContext _localctx = new Instr_tokContext(Context, State); + EnterRule(_localctx, 118, RULE_instr_tok); + try { + EnterOuterAlt(_localctx, 1); + { + State = 917; + Match(INSTR_TOK); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Instr_switchContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode INSTR_SWITCH() { return GetToken(CILParser.INSTR_SWITCH, 0); } + public Instr_switchContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_instr_switch; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitInstr_switch(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Instr_switchContext instr_switch() { + Instr_switchContext _localctx = new Instr_switchContext(Context, State); + EnterRule(_localctx, 120, RULE_instr_switch); + try { + EnterOuterAlt(_localctx, 1); + { + State = 919; + Match(INSTR_SWITCH); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class InstrContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public Instr_noneContext instr_none() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public Instr_varContext instr_var() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public Int32Context int32() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public IdContext id() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public Instr_iContext instr_i() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public Instr_i8Context instr_i8() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public Int64Context int64() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public Instr_rContext instr_r() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public Float64Context float64() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public BytesContext bytes() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public Instr_brtargetContext instr_brtarget() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public Instr_methodContext instr_method() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public MethodRefContext methodRef() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public Instr_fieldContext instr_field() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public FieldRefContext fieldRef() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public MdtokenContext mdtoken() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public Instr_typeContext instr_type() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public TypeSpecContext typeSpec() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public Instr_stringContext instr_string() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public CompQstringContext compQstring() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode ANSI() { return GetToken(CILParser.ANSI, 0); } + [System.Diagnostics.DebuggerNonUserCode] public Instr_sigContext instr_sig() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public CallConvContext callConv() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public TypeContext type() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public SigArgsContext sigArgs() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public Instr_tokContext instr_tok() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public OwnerTypeContext ownerType() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public Instr_switchContext instr_switch() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public LabelsContext labels() { + return GetRuleContext(0); + } + public InstrContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_instr; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitInstr(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public InstrContext instr() { + InstrContext _localctx = new InstrContext(Context, State); + EnterRule(_localctx, 122, RULE_instr); + try { + State = 997; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,35,Context) ) { + case 1: + EnterOuterAlt(_localctx, 1); + { + State = 921; + instr_none(); + } + break; + case 2: + EnterOuterAlt(_localctx, 2); + { + State = 922; + instr_var(); + State = 923; + int32(); + } + break; + case 3: + EnterOuterAlt(_localctx, 3); + { + State = 925; + instr_var(); + State = 926; + id(); + } + break; + case 4: + EnterOuterAlt(_localctx, 4); + { + State = 928; + instr_i(); + State = 929; + int32(); + } + break; + case 5: + EnterOuterAlt(_localctx, 5); + { + State = 931; + instr_i8(); + State = 932; + int64(); + } + break; + case 6: + EnterOuterAlt(_localctx, 6); + { + State = 934; + instr_r(); + State = 935; + float64(); + } + break; + case 7: + EnterOuterAlt(_localctx, 7); + { + State = 937; + instr_r(); + State = 938; + int64(); + } + break; + case 8: + EnterOuterAlt(_localctx, 8); + { + State = 940; + instr_r(); + State = 941; + Match(T__28); + State = 942; + bytes(); + State = 943; + Match(T__29); + } + break; + case 9: + EnterOuterAlt(_localctx, 9); + { + State = 945; + instr_r(); + State = 946; + Match(T__82); + State = 947; + Match(T__28); + State = 948; + bytes(); + State = 949; + Match(T__29); + } + break; + case 10: + EnterOuterAlt(_localctx, 10); + { + State = 951; + instr_brtarget(); + State = 952; + int32(); + } + break; + case 11: + EnterOuterAlt(_localctx, 11); + { + State = 954; + instr_brtarget(); + State = 955; + id(); + } + break; + case 12: + EnterOuterAlt(_localctx, 12); + { + State = 957; + instr_method(); + State = 958; + methodRef(); + } + break; + case 13: + EnterOuterAlt(_localctx, 13); + { + State = 960; + instr_field(); + State = 961; + fieldRef(); + } + break; + case 14: + EnterOuterAlt(_localctx, 14); + { + State = 963; + instr_field(); + State = 964; + mdtoken(); + } + break; + case 15: + EnterOuterAlt(_localctx, 15); + { + State = 966; + instr_type(); + State = 967; + typeSpec(); + } + break; + case 16: + EnterOuterAlt(_localctx, 16); + { + State = 969; + instr_string(); + State = 970; + compQstring(); + } + break; + case 17: + EnterOuterAlt(_localctx, 17); + { + State = 972; + instr_string(); + State = 973; + Match(ANSI); + State = 974; + Match(T__28); + State = 975; + compQstring(); + State = 976; + Match(T__29); + } + break; + case 18: + EnterOuterAlt(_localctx, 18); + { + State = 978; + instr_string(); + State = 979; + Match(T__82); + State = 980; + Match(T__28); + State = 981; + bytes(); + State = 982; + Match(T__29); + } + break; + case 19: + EnterOuterAlt(_localctx, 19); + { + State = 984; + instr_sig(); + State = 985; + callConv(); + State = 986; + type(); + State = 987; + sigArgs(); + } + break; + case 20: + EnterOuterAlt(_localctx, 20); + { + State = 989; + instr_tok(); + State = 990; + ownerType(); + } + break; + case 21: + EnterOuterAlt(_localctx, 21); + { + State = 992; + instr_switch(); + State = 993; + Match(T__28); + State = 994; + labels(); + State = 995; + Match(T__29); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class LabelsContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public IdContext[] id() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public IdContext id(int i) { + return GetRuleContext(i); + } + [System.Diagnostics.DebuggerNonUserCode] public Int32Context[] int32() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public Int32Context int32(int i) { + return GetRuleContext(i); + } + public LabelsContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_labels; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitLabels(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public LabelsContext labels() { + LabelsContext _localctx = new LabelsContext(Context, State); + EnterRule(_localctx, 124, RULE_labels); + try { + int _alt; + State = 1013; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case T__29: + EnterOuterAlt(_localctx, 1); + { + } + break; + case T__0: + case T__1: + case T__2: + case T__3: + case T__4: + case T__5: + case T__6: + case T__7: + case T__8: + case T__9: + case T__10: + case T__11: + case T__12: + case T__13: + case T__14: + case INT32: + case UNMANAGED: + case SQSTRING: + case ID: + EnterOuterAlt(_localctx, 2); + { + State = 1006; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,37,Context); + while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + State = 1004; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case T__0: + case T__1: + case T__2: + case T__3: + case T__4: + case T__5: + case T__6: + case T__7: + case T__8: + case T__9: + case T__10: + case T__11: + case T__12: + case T__13: + case T__14: + case UNMANAGED: + case SQSTRING: + case ID: + { + State = 1000; + id(); + } + break; + case INT32: + { + State = 1001; + int32(); + State = 1002; + Match(T__26); + } + break; + default: + throw new NoViableAltException(this); + } + } + } + State = 1008; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,37,Context); + } + State = 1011; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case T__0: + case T__1: + case T__2: + case T__3: + case T__4: + case T__5: + case T__6: + case T__7: + case T__8: + case T__9: + case T__10: + case T__11: + case T__12: + case T__13: + case T__14: + case UNMANAGED: + case SQSTRING: + case ID: + { + State = 1009; + id(); + } + break; + case INT32: + { + State = 1010; + int32(); + } + break; + default: + throw new NoViableAltException(this); + } + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class TypeArgsContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public TypeContext[] type() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public TypeContext type(int i) { + return GetRuleContext(i); + } + public TypeArgsContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_typeArgs; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitTypeArgs(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public TypeArgsContext typeArgs() { + TypeArgsContext _localctx = new TypeArgsContext(Context, State); + EnterRule(_localctx, 126, RULE_typeArgs); + try { + int _alt; + EnterOuterAlt(_localctx, 1); + { + State = 1015; + Match(T__83); + State = 1021; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,40,Context); + while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + State = 1016; + type(); + State = 1017; + Match(T__26); + } + } + } + State = 1023; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,40,Context); + } + State = 1024; + type(); + State = 1025; + Match(T__84); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class BoundsContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public BoundContext[] bound() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public BoundContext bound(int i) { + return GetRuleContext(i); + } + public BoundsContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_bounds; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitBounds(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public BoundsContext bounds() { + BoundsContext _localctx = new BoundsContext(Context, State); + EnterRule(_localctx, 128, RULE_bounds); + try { + int _alt; + EnterOuterAlt(_localctx, 1); + { + State = 1027; + Match(T__40); + State = 1033; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,41,Context); + while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + State = 1028; + bound(); + State = 1029; + Match(T__26); + } + } + } + State = 1035; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,41,Context); + } + State = 1036; + bound(); + State = 1037; + Match(T__41); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class SigArgsContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public SigArgContext[] sigArg() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public SigArgContext sigArg(int i) { + return GetRuleContext(i); + } + public SigArgsContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_sigArgs; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitSigArgs(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public SigArgsContext sigArgs() { + SigArgsContext _localctx = new SigArgsContext(Context, State); + EnterRule(_localctx, 130, RULE_sigArgs); + try { + int _alt; + State = 1052; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case T__28: + EnterOuterAlt(_localctx, 1); + { + State = 1039; + Match(T__28); + State = 1045; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,42,Context); + while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + State = 1040; + sigArg(); + State = 1041; + Match(T__26); + } + } + } + State = 1047; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,42,Context); + } + State = 1048; + sigArg(); + State = 1049; + Match(T__29); + } + break; + case T__85: + EnterOuterAlt(_localctx, 2); + { + State = 1051; + Match(T__85); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class SigArgContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode ELLIPSIS() { return GetToken(CILParser.ELLIPSIS, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ParamAttrContext paramAttr() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public TypeContext type() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public MarshalClauseContext marshalClause() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public IdContext id() { + return GetRuleContext(0); + } + public SigArgContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_sigArg; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitSigArg(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public SigArgContext sigArg() { + SigArgContext _localctx = new SigArgContext(Context, State); + EnterRule(_localctx, 132, RULE_sigArg); + try { + State = 1064; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,44,Context) ) { + case 1: + EnterOuterAlt(_localctx, 1); + { + State = 1054; + Match(ELLIPSIS); + } + break; + case 2: + EnterOuterAlt(_localctx, 2); + { + State = 1055; + paramAttr(); + State = 1056; + type(); + State = 1057; + marshalClause(); + } + break; + case 3: + EnterOuterAlt(_localctx, 3); + { + State = 1059; + paramAttr(); + State = 1060; + type(); + State = 1061; + marshalClause(); + State = 1062; + id(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class ClassNameContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public DottedNameContext dottedName() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public SlashedNameContext slashedName() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public MdtokenContext mdtoken() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode PTR() { return GetToken(CILParser.PTR, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode MODULE() { return GetToken(CILParser.MODULE, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode THIS() { return GetToken(CILParser.THIS, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode BASE() { return GetToken(CILParser.BASE, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode NESTER() { return GetToken(CILParser.NESTER, 0); } + public ClassNameContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_className; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitClassName(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public ClassNameContext className() { + ClassNameContext _localctx = new ClassNameContext(Context, State); + EnterRule(_localctx, 134, RULE_className); + try { + State = 1091; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,45,Context) ) { + case 1: + EnterOuterAlt(_localctx, 1); + { + State = 1066; + Match(T__40); + State = 1067; + dottedName(); + State = 1068; + Match(T__41); + State = 1069; + slashedName(); + } + break; + case 2: + EnterOuterAlt(_localctx, 2); + { + State = 1071; + Match(T__40); + State = 1072; + mdtoken(); + State = 1073; + Match(T__41); + State = 1074; + slashedName(); + } + break; + case 3: + EnterOuterAlt(_localctx, 3); + { + State = 1076; + Match(T__40); + State = 1077; + Match(PTR); + State = 1078; + Match(T__41); + State = 1079; + slashedName(); + } + break; + case 4: + EnterOuterAlt(_localctx, 4); + { + State = 1080; + Match(T__40); + State = 1081; + Match(MODULE); + State = 1082; + dottedName(); + State = 1083; + Match(T__41); + State = 1084; + slashedName(); + } + break; + case 5: + EnterOuterAlt(_localctx, 5); + { + State = 1086; + slashedName(); + } + break; + case 6: + EnterOuterAlt(_localctx, 6); + { + State = 1087; + mdtoken(); + } + break; + case 7: + EnterOuterAlt(_localctx, 7); + { + State = 1088; + Match(THIS); + } + break; + case 8: + EnterOuterAlt(_localctx, 8); + { + State = 1089; + Match(BASE); + } + break; + case 9: + EnterOuterAlt(_localctx, 9); + { + State = 1090; + Match(NESTER); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class SlashedNameContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public DottedNameContext[] dottedName() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public DottedNameContext dottedName(int i) { + return GetRuleContext(i); + } + public SlashedNameContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_slashedName; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitSlashedName(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public SlashedNameContext slashedName() { + SlashedNameContext _localctx = new SlashedNameContext(Context, State); + EnterRule(_localctx, 136, RULE_slashedName); + try { + int _alt; + EnterOuterAlt(_localctx, 1); + { + State = 1098; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,46,Context); + while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + State = 1093; + dottedName(); + State = 1094; + Match(T__86); + } + } + } + State = 1100; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,46,Context); + } + State = 1101; + dottedName(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class AssemblyDeclsContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public AssemblyDeclContext[] assemblyDecl() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public AssemblyDeclContext assemblyDecl(int i) { + return GetRuleContext(i); + } + public AssemblyDeclsContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_assemblyDecls; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitAssemblyDecls(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public AssemblyDeclsContext assemblyDecls() { + AssemblyDeclsContext _localctx = new AssemblyDeclsContext(Context, State); + EnterRule(_localctx, 138, RULE_assemblyDecls); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 1106; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + while (_la==T__30 || _la==T__33 || ((((_la - 164)) & ~0x3f) == 0 && ((1L << (_la - 164)) & 8199L) != 0) || ((((_la - 269)) & ~0x3f) == 0 && ((1L << (_la - 269)) & 207618175L) != 0)) { + { + { + State = 1103; + assemblyDecl(); + } + } + State = 1108; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class AssemblyDeclContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode HASH() { return GetToken(CILParser.HASH, 0); } + [System.Diagnostics.DebuggerNonUserCode] public Int32Context int32() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public SecDeclContext secDecl() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public AsmOrRefDeclContext asmOrRefDecl() { + return GetRuleContext(0); + } + public AssemblyDeclContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_assemblyDecl; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitAssemblyDecl(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public AssemblyDeclContext assemblyDecl() { + AssemblyDeclContext _localctx = new AssemblyDeclContext(Context, State); + EnterRule(_localctx, 140, RULE_assemblyDecl); + try { + State = 1114; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case HASH: + EnterOuterAlt(_localctx, 1); + { + { + State = 1109; + Match(HASH); + State = 1110; + Match(T__87); + State = 1111; + int32(); + } + } + break; + case PERMISSION: + case PERMISSIONSET: + EnterOuterAlt(_localctx, 2); + { + State = 1112; + secDecl(); + } + break; + case T__30: + case T__33: + case T__163: + case T__164: + case T__165: + case PP_DEFINE: + case PP_UNDEF: + case PP_IFDEF: + case PP_IFNDEF: + case PP_ELSE: + case PP_ENDIF: + case PP_INCLUDE: + case DOTTEDNAME: + case ID: + EnterOuterAlt(_localctx, 3); + { + State = 1113; + asmOrRefDecl(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class TypeSpecContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ClassNameContext className() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public DottedNameContext dottedName() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode MODULE() { return GetToken(CILParser.MODULE, 0); } + [System.Diagnostics.DebuggerNonUserCode] public TypeContext type() { + return GetRuleContext(0); + } + public TypeSpecContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_typeSpec; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitTypeSpec(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public TypeSpecContext typeSpec() { + TypeSpecContext _localctx = new TypeSpecContext(Context, State); + EnterRule(_localctx, 142, RULE_typeSpec); + try { + State = 1127; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,49,Context) ) { + case 1: + EnterOuterAlt(_localctx, 1); + { + State = 1116; + className(); + } + break; + case 2: + EnterOuterAlt(_localctx, 2); + { + State = 1117; + Match(T__40); + State = 1118; + dottedName(); + State = 1119; + Match(T__41); + } + break; + case 3: + EnterOuterAlt(_localctx, 3); + { + State = 1121; + Match(T__40); + State = 1122; + Match(MODULE); + State = 1123; + dottedName(); + State = 1124; + Match(T__41); + } + break; + case 4: + EnterOuterAlt(_localctx, 4); + { + State = 1126; + type(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class NativeTypeContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public NativeTypeElementContext nativeTypeElement() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public NativeTypeArrayPointerInfoContext[] nativeTypeArrayPointerInfo() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public NativeTypeArrayPointerInfoContext nativeTypeArrayPointerInfo(int i) { + return GetRuleContext(i); + } + public NativeTypeContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_nativeType; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitNativeType(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public NativeTypeContext nativeType() { + NativeTypeContext _localctx = new NativeTypeContext(Context, State); + EnterRule(_localctx, 144, RULE_nativeType); + try { + int _alt; + State = 1137; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,51,Context) ) { + case 1: + EnterOuterAlt(_localctx, 1); + { + } + break; + case 2: + EnterOuterAlt(_localctx, 2); + { + State = 1130; + nativeTypeElement(); + State = 1134; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,50,Context); + while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + State = 1131; + nativeTypeArrayPointerInfo(); + } + } + } + State = 1136; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,50,Context); + } + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class NativeTypeArrayPointerInfoContext : ParserRuleContext { + public NativeTypeArrayPointerInfoContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_nativeTypeArrayPointerInfo; } } + + public NativeTypeArrayPointerInfoContext() { } + public virtual void CopyFrom(NativeTypeArrayPointerInfoContext context) { + base.CopyFrom(context); + } + } + public partial class PointerArrayTypeSizeContext : NativeTypeArrayPointerInfoContext { + [System.Diagnostics.DebuggerNonUserCode] public Int32Context int32() { + return GetRuleContext(0); + } + public PointerArrayTypeSizeContext(NativeTypeArrayPointerInfoContext context) { CopyFrom(context); } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitPointerArrayTypeSize(this); + else return visitor.VisitChildren(this); + } + } + public partial class PointerArrayTypeParamIndexContext : NativeTypeArrayPointerInfoContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode PLUS() { return GetToken(CILParser.PLUS, 0); } + [System.Diagnostics.DebuggerNonUserCode] public Int32Context int32() { + return GetRuleContext(0); + } + public PointerArrayTypeParamIndexContext(NativeTypeArrayPointerInfoContext context) { CopyFrom(context); } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitPointerArrayTypeParamIndex(this); + else return visitor.VisitChildren(this); + } + } + public partial class PointerNativeTypeContext : NativeTypeArrayPointerInfoContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode PTR() { return GetToken(CILParser.PTR, 0); } + public PointerNativeTypeContext(NativeTypeArrayPointerInfoContext context) { CopyFrom(context); } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitPointerNativeType(this); + else return visitor.VisitChildren(this); + } + } + public partial class PointerArrayTypeSizeParamIndexContext : NativeTypeArrayPointerInfoContext { + [System.Diagnostics.DebuggerNonUserCode] public Int32Context[] int32() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public Int32Context int32(int i) { + return GetRuleContext(i); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode PLUS() { return GetToken(CILParser.PLUS, 0); } + public PointerArrayTypeSizeParamIndexContext(NativeTypeArrayPointerInfoContext context) { CopyFrom(context); } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitPointerArrayTypeSizeParamIndex(this); + else return visitor.VisitChildren(this); + } + } + public partial class PointerArrayTypeNoSizeDataContext : NativeTypeArrayPointerInfoContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode ARRAY_TYPE_NO_BOUNDS() { return GetToken(CILParser.ARRAY_TYPE_NO_BOUNDS, 0); } + public PointerArrayTypeNoSizeDataContext(NativeTypeArrayPointerInfoContext context) { CopyFrom(context); } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitPointerArrayTypeNoSizeData(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public NativeTypeArrayPointerInfoContext nativeTypeArrayPointerInfo() { + NativeTypeArrayPointerInfoContext _localctx = new NativeTypeArrayPointerInfoContext(Context, State); + EnterRule(_localctx, 146, RULE_nativeTypeArrayPointerInfo); + try { + State = 1156; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,52,Context) ) { + case 1: + _localctx = new PointerNativeTypeContext(_localctx); + EnterOuterAlt(_localctx, 1); + { + State = 1139; + Match(PTR); + } + break; + case 2: + _localctx = new PointerArrayTypeNoSizeDataContext(_localctx); + EnterOuterAlt(_localctx, 2); + { + State = 1140; + Match(ARRAY_TYPE_NO_BOUNDS); + } + break; + case 3: + _localctx = new PointerArrayTypeSizeContext(_localctx); + EnterOuterAlt(_localctx, 3); + { + State = 1141; + Match(T__40); + State = 1142; + int32(); + State = 1143; + Match(T__41); + } + break; + case 4: + _localctx = new PointerArrayTypeSizeParamIndexContext(_localctx); + EnterOuterAlt(_localctx, 4); + { + State = 1145; + Match(T__40); + State = 1146; + int32(); + State = 1147; + Match(PLUS); + State = 1148; + int32(); + State = 1149; + Match(T__41); + } + break; + case 5: + _localctx = new PointerArrayTypeParamIndexContext(_localctx); + EnterOuterAlt(_localctx, 5); + { + State = 1151; + Match(T__40); + State = 1152; + Match(PLUS); + State = 1153; + int32(); + State = 1154; + Match(T__41); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class NativeTypeElementContext : ParserRuleContext { + public IToken marshalType; + [System.Diagnostics.DebuggerNonUserCode] public CompQstringContext[] compQstring() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public CompQstringContext compQstring(int i) { + return GetRuleContext(i); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode CUSTOM() { return GetToken(CILParser.CUSTOM, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode FIXED() { return GetToken(CILParser.FIXED, 0); } + [System.Diagnostics.DebuggerNonUserCode] public Int32Context int32() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode SYSSTRING() { return GetToken(CILParser.SYSSTRING, 0); } + [System.Diagnostics.DebuggerNonUserCode] public NativeTypeContext nativeType() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode ARRAY() { return GetToken(CILParser.ARRAY, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode VARIANT() { return GetToken(CILParser.VARIANT, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode CURRENCY() { return GetToken(CILParser.CURRENCY, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode SYSCHAR() { return GetToken(CILParser.SYSCHAR, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode VOID() { return GetToken(CILParser.VOID, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode BOOL() { return GetToken(CILParser.BOOL, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode INT8() { return GetToken(CILParser.INT8, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode INT16() { return GetToken(CILParser.INT16, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode INT32_() { return GetToken(CILParser.INT32_, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode INT64_() { return GetToken(CILParser.INT64_, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode FLOAT32() { return GetToken(CILParser.FLOAT32, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode FLOAT64_() { return GetToken(CILParser.FLOAT64_, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode ERROR() { return GetToken(CILParser.ERROR, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode UINT8() { return GetToken(CILParser.UINT8, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode UINT16() { return GetToken(CILParser.UINT16, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode UINT32() { return GetToken(CILParser.UINT32, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode UINT64() { return GetToken(CILParser.UINT64, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode DECIMAL() { return GetToken(CILParser.DECIMAL, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode DATE() { return GetToken(CILParser.DATE, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode BSTR() { return GetToken(CILParser.BSTR, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode LPSTR() { return GetToken(CILParser.LPSTR, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode LPWSTR() { return GetToken(CILParser.LPWSTR, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode LPTSTR() { return GetToken(CILParser.LPTSTR, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode OBJECTREF() { return GetToken(CILParser.OBJECTREF, 0); } + [System.Diagnostics.DebuggerNonUserCode] public IidParamIndexContext iidParamIndex() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode IUNKNOWN() { return GetToken(CILParser.IUNKNOWN, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode IDISPATCH() { return GetToken(CILParser.IDISPATCH, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode STRUCT() { return GetToken(CILParser.STRUCT, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode INTERFACE() { return GetToken(CILParser.INTERFACE, 0); } + [System.Diagnostics.DebuggerNonUserCode] public VariantTypeContext variantType() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode SAFEARRAY() { return GetToken(CILParser.SAFEARRAY, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode INT() { return GetToken(CILParser.INT, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode UINT() { return GetToken(CILParser.UINT, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode NESTEDSTRUCT() { return GetToken(CILParser.NESTEDSTRUCT, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode BYVALSTR() { return GetToken(CILParser.BYVALSTR, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode ANSIBSTR() { return GetToken(CILParser.ANSIBSTR, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode TBSTR() { return GetToken(CILParser.TBSTR, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode VARIANTBOOL() { return GetToken(CILParser.VARIANTBOOL, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode METHOD() { return GetToken(CILParser.METHOD, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode LPSTRUCT() { return GetToken(CILParser.LPSTRUCT, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode ANY() { return GetToken(CILParser.ANY, 0); } + [System.Diagnostics.DebuggerNonUserCode] public DottedNameContext dottedName() { + return GetRuleContext(0); + } + public NativeTypeElementContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_nativeTypeElement; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitNativeTypeElement(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public NativeTypeElementContext nativeTypeElement() { + NativeTypeElementContext _localctx = new NativeTypeElementContext(Context, State); + EnterRule(_localctx, 148, RULE_nativeTypeElement); + try { + State = 1239; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,53,Context) ) { + case 1: + EnterOuterAlt(_localctx, 1); + { + } + break; + case 2: + EnterOuterAlt(_localctx, 2); + { + State = 1159; + _localctx.marshalType = Match(CUSTOM); + State = 1160; + Match(T__28); + State = 1161; + compQstring(); + State = 1162; + Match(T__26); + State = 1163; + compQstring(); + State = 1164; + Match(T__26); + State = 1165; + compQstring(); + State = 1166; + Match(T__26); + State = 1167; + compQstring(); + State = 1168; + Match(T__29); + } + break; + case 3: + EnterOuterAlt(_localctx, 3); + { + State = 1170; + _localctx.marshalType = Match(CUSTOM); + State = 1171; + Match(T__28); + State = 1172; + compQstring(); + State = 1173; + Match(T__26); + State = 1174; + compQstring(); + State = 1175; + Match(T__29); + } + break; + case 4: + EnterOuterAlt(_localctx, 4); + { + State = 1177; + Match(FIXED); + State = 1178; + _localctx.marshalType = Match(SYSSTRING); + State = 1179; + Match(T__40); + State = 1180; + int32(); + State = 1181; + Match(T__41); + } + break; + case 5: + EnterOuterAlt(_localctx, 5); + { + State = 1183; + Match(FIXED); + State = 1184; + _localctx.marshalType = Match(ARRAY); + State = 1185; + Match(T__40); + State = 1186; + int32(); + State = 1187; + Match(T__41); + State = 1188; + nativeType(); + } + break; + case 6: + EnterOuterAlt(_localctx, 6); + { + State = 1190; + _localctx.marshalType = Match(VARIANT); + } + break; + case 7: + EnterOuterAlt(_localctx, 7); + { + State = 1191; + _localctx.marshalType = Match(CURRENCY); + } + break; + case 8: + EnterOuterAlt(_localctx, 8); + { + State = 1192; + _localctx.marshalType = Match(SYSCHAR); + } + break; + case 9: + EnterOuterAlt(_localctx, 9); + { + State = 1193; + _localctx.marshalType = Match(VOID); + } + break; + case 10: + EnterOuterAlt(_localctx, 10); + { + State = 1194; + _localctx.marshalType = Match(BOOL); + } + break; + case 11: + EnterOuterAlt(_localctx, 11); + { + State = 1195; + _localctx.marshalType = Match(INT8); + } + break; + case 12: + EnterOuterAlt(_localctx, 12); + { + State = 1196; + _localctx.marshalType = Match(INT16); + } + break; + case 13: + EnterOuterAlt(_localctx, 13); + { + State = 1197; + _localctx.marshalType = Match(INT32_); + } + break; + case 14: + EnterOuterAlt(_localctx, 14); + { + State = 1198; + _localctx.marshalType = Match(INT64_); + } + break; + case 15: + EnterOuterAlt(_localctx, 15); + { + State = 1199; + _localctx.marshalType = Match(FLOAT32); + } + break; + case 16: + EnterOuterAlt(_localctx, 16); + { + State = 1200; + _localctx.marshalType = Match(FLOAT64_); + } + break; + case 17: + EnterOuterAlt(_localctx, 17); + { + State = 1201; + _localctx.marshalType = Match(ERROR); + } + break; + case 18: + EnterOuterAlt(_localctx, 18); + { + State = 1202; + _localctx.marshalType = Match(UINT8); + } + break; + case 19: + EnterOuterAlt(_localctx, 19); + { + State = 1203; + _localctx.marshalType = Match(UINT16); + } + break; + case 20: + EnterOuterAlt(_localctx, 20); + { + State = 1204; + _localctx.marshalType = Match(UINT32); + } + break; + case 21: + EnterOuterAlt(_localctx, 21); + { + State = 1205; + _localctx.marshalType = Match(UINT64); + } + break; + case 22: + EnterOuterAlt(_localctx, 22); + { + State = 1206; + _localctx.marshalType = Match(DECIMAL); + } + break; + case 23: + EnterOuterAlt(_localctx, 23); + { + State = 1207; + _localctx.marshalType = Match(DATE); + } + break; + case 24: + EnterOuterAlt(_localctx, 24); + { + State = 1208; + _localctx.marshalType = Match(BSTR); + } + break; + case 25: + EnterOuterAlt(_localctx, 25); + { + State = 1209; + _localctx.marshalType = Match(LPSTR); + } + break; + case 26: + EnterOuterAlt(_localctx, 26); + { + State = 1210; + _localctx.marshalType = Match(LPWSTR); + } + break; + case 27: + EnterOuterAlt(_localctx, 27); + { + State = 1211; + _localctx.marshalType = Match(LPTSTR); + } + break; + case 28: + EnterOuterAlt(_localctx, 28); + { + State = 1212; + _localctx.marshalType = Match(OBJECTREF); + } + break; + case 29: + EnterOuterAlt(_localctx, 29); + { + State = 1213; + _localctx.marshalType = Match(IUNKNOWN); + State = 1214; + iidParamIndex(); + } + break; + case 30: + EnterOuterAlt(_localctx, 30); + { + State = 1215; + _localctx.marshalType = Match(IDISPATCH); + State = 1216; + iidParamIndex(); + } + break; + case 31: + EnterOuterAlt(_localctx, 31); + { + State = 1217; + _localctx.marshalType = Match(STRUCT); + } + break; + case 32: + EnterOuterAlt(_localctx, 32); + { + State = 1218; + _localctx.marshalType = Match(INTERFACE); + State = 1219; + iidParamIndex(); + } + break; + case 33: + EnterOuterAlt(_localctx, 33); + { + State = 1220; + _localctx.marshalType = Match(SAFEARRAY); + State = 1221; + variantType(); + } + break; + case 34: + EnterOuterAlt(_localctx, 34); + { + State = 1222; + _localctx.marshalType = Match(SAFEARRAY); + State = 1223; + variantType(); + State = 1224; + Match(T__26); + State = 1225; + compQstring(); + } + break; + case 35: + EnterOuterAlt(_localctx, 35); + { + State = 1227; + _localctx.marshalType = Match(INT); + } + break; + case 36: + EnterOuterAlt(_localctx, 36); + { + State = 1228; + _localctx.marshalType = Match(UINT); + } + break; + case 37: + EnterOuterAlt(_localctx, 37); + { + State = 1229; + _localctx.marshalType = Match(NESTEDSTRUCT); + } + break; + case 38: + EnterOuterAlt(_localctx, 38); + { + State = 1230; + _localctx.marshalType = Match(BYVALSTR); + } + break; + case 39: + EnterOuterAlt(_localctx, 39); + { + State = 1231; + _localctx.marshalType = Match(ANSIBSTR); + } + break; + case 40: + EnterOuterAlt(_localctx, 40); + { + State = 1232; + _localctx.marshalType = Match(TBSTR); + } + break; + case 41: + EnterOuterAlt(_localctx, 41); + { + State = 1233; + _localctx.marshalType = Match(VARIANTBOOL); + } + break; + case 42: + EnterOuterAlt(_localctx, 42); + { + State = 1234; + _localctx.marshalType = Match(METHOD); + } + break; + case 43: + EnterOuterAlt(_localctx, 43); + { + State = 1235; + _localctx.marshalType = Match(LPSTRUCT); + } + break; + case 44: + EnterOuterAlt(_localctx, 44); + { + State = 1236; + Match(T__32); + State = 1237; + _localctx.marshalType = Match(ANY); + } + break; + case 45: + EnterOuterAlt(_localctx, 45); + { + State = 1238; + dottedName(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class IidParamIndexContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public Int32Context int32() { + return GetRuleContext(0); + } + public IidParamIndexContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_iidParamIndex; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitIidParamIndex(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public IidParamIndexContext iidParamIndex() { + IidParamIndexContext _localctx = new IidParamIndexContext(Context, State); + EnterRule(_localctx, 150, RULE_iidParamIndex); + try { + State = 1248; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case T__29: + case T__40: + case ARRAY_TYPE_NO_BOUNDS: + case PTR: + EnterOuterAlt(_localctx, 1); + { + } + break; + case T__28: + EnterOuterAlt(_localctx, 2); + { + State = 1242; + Match(T__28); + State = 1243; + Match(T__88); + State = 1244; + Match(T__34); + State = 1245; + int32(); + State = 1246; + Match(T__29); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class VariantTypeContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public VariantTypeElementContext variantTypeElement() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode[] ARRAY_TYPE_NO_BOUNDS() { return GetTokens(CILParser.ARRAY_TYPE_NO_BOUNDS); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode ARRAY_TYPE_NO_BOUNDS(int i) { + return GetToken(CILParser.ARRAY_TYPE_NO_BOUNDS, i); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode[] VECTOR() { return GetTokens(CILParser.VECTOR); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode VECTOR(int i) { + return GetToken(CILParser.VECTOR, i); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode[] REF() { return GetTokens(CILParser.REF); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode REF(int i) { + return GetToken(CILParser.REF, i); + } + public VariantTypeContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_variantType; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitVariantType(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public VariantTypeContext variantType() { + VariantTypeContext _localctx = new VariantTypeContext(Context, State); + EnterRule(_localctx, 152, RULE_variantType); + int _la; + try { + int _alt; + State = 1258; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,56,Context) ) { + case 1: + EnterOuterAlt(_localctx, 1); + { + } + break; + case 2: + EnterOuterAlt(_localctx, 2); + { + State = 1251; + variantTypeElement(); + State = 1255; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,55,Context); + while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + State = 1252; + _la = TokenStream.LA(1); + if ( !(((((_la - 229)) & ~0x3f) == 0 && ((1L << (_la - 229)) & 25769803777L) != 0)) ) { + ErrorHandler.RecoverInline(this); + } + else { + ErrorHandler.ReportMatch(this); + Consume(); + } + } + } + } + State = 1257; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,55,Context); + } + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class VariantTypeElementContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode NULL() { return GetToken(CILParser.NULL, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode VARIANT() { return GetToken(CILParser.VARIANT, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode CURRENCY() { return GetToken(CILParser.CURRENCY, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode VOID() { return GetToken(CILParser.VOID, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode BOOL() { return GetToken(CILParser.BOOL, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode INT8() { return GetToken(CILParser.INT8, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode INT16() { return GetToken(CILParser.INT16, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode INT32_() { return GetToken(CILParser.INT32_, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode INT64_() { return GetToken(CILParser.INT64_, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode FLOAT32() { return GetToken(CILParser.FLOAT32, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode FLOAT64_() { return GetToken(CILParser.FLOAT64_, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode UINT8() { return GetToken(CILParser.UINT8, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode UINT16() { return GetToken(CILParser.UINT16, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode UINT32() { return GetToken(CILParser.UINT32, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode UINT64() { return GetToken(CILParser.UINT64, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode PTR() { return GetToken(CILParser.PTR, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode DECIMAL() { return GetToken(CILParser.DECIMAL, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode DATE() { return GetToken(CILParser.DATE, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode BSTR() { return GetToken(CILParser.BSTR, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode LPSTR() { return GetToken(CILParser.LPSTR, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode LPWSTR() { return GetToken(CILParser.LPWSTR, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode IUNKNOWN() { return GetToken(CILParser.IUNKNOWN, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode IDISPATCH() { return GetToken(CILParser.IDISPATCH, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode SAFEARRAY() { return GetToken(CILParser.SAFEARRAY, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode INT() { return GetToken(CILParser.INT, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode UINT() { return GetToken(CILParser.UINT, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode ERROR() { return GetToken(CILParser.ERROR, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode HRESULT() { return GetToken(CILParser.HRESULT, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode CARRAY() { return GetToken(CILParser.CARRAY, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode USERDEFINED() { return GetToken(CILParser.USERDEFINED, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode RECORD() { return GetToken(CILParser.RECORD, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode FILETIME() { return GetToken(CILParser.FILETIME, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode BLOB() { return GetToken(CILParser.BLOB, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode STREAM() { return GetToken(CILParser.STREAM, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode STORAGE() { return GetToken(CILParser.STORAGE, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode STREAMED_OBJECT() { return GetToken(CILParser.STREAMED_OBJECT, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode STORED_OBJECT() { return GetToken(CILParser.STORED_OBJECT, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode BLOB_OBJECT() { return GetToken(CILParser.BLOB_OBJECT, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode CF() { return GetToken(CILParser.CF, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode CLSID() { return GetToken(CILParser.CLSID, 0); } + public VariantTypeElementContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_variantTypeElement; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitVariantTypeElement(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public VariantTypeElementContext variantTypeElement() { + VariantTypeElementContext _localctx = new VariantTypeElementContext(Context, State); + EnterRule(_localctx, 154, RULE_variantTypeElement); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 1260; + _la = TokenStream.LA(1); + if ( !(((((_la - 175)) & ~0x3f) == 0 && ((1L << (_la - 175)) & -36007634095833119L) != 0) || ((((_la - 239)) & ~0x3f) == 0 && ((1L << (_la - 239)) & 33554447L) != 0)) ) { + ErrorHandler.RecoverInline(this); + } + else { + ErrorHandler.ReportMatch(this); + Consume(); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class TypeContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ElementTypeContext elementType() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public TypeModifiersContext[] typeModifiers() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public TypeModifiersContext typeModifiers(int i) { + return GetRuleContext(i); + } + public TypeContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_type; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitType(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public TypeContext type() { + TypeContext _localctx = new TypeContext(Context, State); + EnterRule(_localctx, 156, RULE_type); + try { + int _alt; + EnterOuterAlt(_localctx, 1); + { + State = 1262; + elementType(); + State = 1266; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,57,Context); + while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + State = 1263; + typeModifiers(); + } + } + } + State = 1268; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,57,Context); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class TypeModifiersContext : ParserRuleContext { + public TypeModifiersContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_typeModifiers; } } + + public TypeModifiersContext() { } + public virtual void CopyFrom(TypeModifiersContext context) { + base.CopyFrom(context); + } + } + public partial class OptionalModifierContext : TypeModifiersContext { + [System.Diagnostics.DebuggerNonUserCode] public TypeSpecContext typeSpec() { + return GetRuleContext(0); + } + public OptionalModifierContext(TypeModifiersContext context) { CopyFrom(context); } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitOptionalModifier(this); + else return visitor.VisitChildren(this); + } + } + public partial class SZArrayModifierContext : TypeModifiersContext { + public SZArrayModifierContext(TypeModifiersContext context) { CopyFrom(context); } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitSZArrayModifier(this); + else return visitor.VisitChildren(this); + } + } + public partial class RequiredModifierContext : TypeModifiersContext { + [System.Diagnostics.DebuggerNonUserCode] public TypeSpecContext typeSpec() { + return GetRuleContext(0); + } + public RequiredModifierContext(TypeModifiersContext context) { CopyFrom(context); } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitRequiredModifier(this); + else return visitor.VisitChildren(this); + } + } + public partial class PtrModifierContext : TypeModifiersContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode PTR() { return GetToken(CILParser.PTR, 0); } + public PtrModifierContext(TypeModifiersContext context) { CopyFrom(context); } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitPtrModifier(this); + else return visitor.VisitChildren(this); + } + } + public partial class PinnedModifierContext : TypeModifiersContext { + public PinnedModifierContext(TypeModifiersContext context) { CopyFrom(context); } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitPinnedModifier(this); + else return visitor.VisitChildren(this); + } + } + public partial class GenericArgumentsModifierContext : TypeModifiersContext { + [System.Diagnostics.DebuggerNonUserCode] public TypeArgsContext typeArgs() { + return GetRuleContext(0); + } + public GenericArgumentsModifierContext(TypeModifiersContext context) { CopyFrom(context); } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitGenericArgumentsModifier(this); + else return visitor.VisitChildren(this); + } + } + public partial class ByRefModifierContext : TypeModifiersContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode REF() { return GetToken(CILParser.REF, 0); } + public ByRefModifierContext(TypeModifiersContext context) { CopyFrom(context); } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitByRefModifier(this); + else return visitor.VisitChildren(this); + } + } + public partial class ArrayModifierContext : TypeModifiersContext { + [System.Diagnostics.DebuggerNonUserCode] public BoundsContext bounds() { + return GetRuleContext(0); + } + public ArrayModifierContext(TypeModifiersContext context) { CopyFrom(context); } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitArrayModifier(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public TypeModifiersContext typeModifiers() { + TypeModifiersContext _localctx = new TypeModifiersContext(Context, State); + EnterRule(_localctx, 158, RULE_typeModifiers); + try { + State = 1286; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,58,Context) ) { + case 1: + _localctx = new SZArrayModifierContext(_localctx); + EnterOuterAlt(_localctx, 1); + { + State = 1269; + Match(T__40); + State = 1270; + Match(T__41); + } + break; + case 2: + _localctx = new ArrayModifierContext(_localctx); + EnterOuterAlt(_localctx, 2); + { + State = 1271; + bounds(); + } + break; + case 3: + _localctx = new ByRefModifierContext(_localctx); + EnterOuterAlt(_localctx, 3); + { + State = 1272; + Match(REF); + } + break; + case 4: + _localctx = new PtrModifierContext(_localctx); + EnterOuterAlt(_localctx, 4); + { + State = 1273; + Match(PTR); + } + break; + case 5: + _localctx = new PinnedModifierContext(_localctx); + EnterOuterAlt(_localctx, 5); + { + State = 1274; + Match(T__89); + } + break; + case 6: + _localctx = new RequiredModifierContext(_localctx); + EnterOuterAlt(_localctx, 6); + { + State = 1275; + Match(T__90); + State = 1276; + Match(T__28); + State = 1277; + typeSpec(); + State = 1278; + Match(T__29); + } + break; + case 7: + _localctx = new OptionalModifierContext(_localctx); + EnterOuterAlt(_localctx, 7); + { + State = 1280; + Match(T__91); + State = 1281; + Match(T__28); + State = 1282; + typeSpec(); + State = 1283; + Match(T__29); + } + break; + case 8: + _localctx = new GenericArgumentsModifierContext(_localctx); + EnterOuterAlt(_localctx, 8); + { + State = 1285; + typeArgs(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class ElementTypeContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ClassNameContext className() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode OBJECT() { return GetToken(CILParser.OBJECT, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode VALUE() { return GetToken(CILParser.VALUE, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode VALUETYPE() { return GetToken(CILParser.VALUETYPE, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode METHOD() { return GetToken(CILParser.METHOD, 0); } + [System.Diagnostics.DebuggerNonUserCode] public CallConvContext callConv() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public TypeContext type() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode PTR() { return GetToken(CILParser.PTR, 0); } + [System.Diagnostics.DebuggerNonUserCode] public SigArgsContext sigArgs() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode METHOD_TYPE_PARAMETER() { return GetToken(CILParser.METHOD_TYPE_PARAMETER, 0); } + [System.Diagnostics.DebuggerNonUserCode] public Int32Context int32() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode TYPE_PARAMETER() { return GetToken(CILParser.TYPE_PARAMETER, 0); } + [System.Diagnostics.DebuggerNonUserCode] public DottedNameContext dottedName() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode TYPEDREF() { return GetToken(CILParser.TYPEDREF, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode VOID() { return GetToken(CILParser.VOID, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode NATIVE_INT() { return GetToken(CILParser.NATIVE_INT, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode NATIVE_UINT() { return GetToken(CILParser.NATIVE_UINT, 0); } + [System.Diagnostics.DebuggerNonUserCode] public SimpleTypeContext simpleType() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode ELLIPSIS() { return GetToken(CILParser.ELLIPSIS, 0); } + public ElementTypeContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_elementType; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitElementType(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public ElementTypeContext elementType() { + ElementTypeContext _localctx = new ElementTypeContext(Context, State); + EnterRule(_localctx, 160, RULE_elementType); + try { + State = 1318; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,59,Context) ) { + case 1: + EnterOuterAlt(_localctx, 1); + { + State = 1288; + Match(T__37); + State = 1289; + className(); + } + break; + case 2: + EnterOuterAlt(_localctx, 2); + { + State = 1290; + Match(OBJECT); + } + break; + case 3: + EnterOuterAlt(_localctx, 3); + { + State = 1291; + Match(VALUE); + State = 1292; + Match(T__37); + State = 1293; + className(); + } + break; + case 4: + EnterOuterAlt(_localctx, 4); + { + State = 1294; + Match(VALUETYPE); + State = 1295; + className(); + } + break; + case 5: + EnterOuterAlt(_localctx, 5); + { + State = 1296; + Match(METHOD); + State = 1297; + callConv(); + State = 1298; + type(); + State = 1299; + Match(PTR); + State = 1300; + sigArgs(); + } + break; + case 6: + EnterOuterAlt(_localctx, 6); + { + State = 1302; + Match(METHOD_TYPE_PARAMETER); + State = 1303; + int32(); + } + break; + case 7: + EnterOuterAlt(_localctx, 7); + { + State = 1304; + Match(TYPE_PARAMETER); + State = 1305; + int32(); + } + break; + case 8: + EnterOuterAlt(_localctx, 8); + { + State = 1306; + Match(METHOD_TYPE_PARAMETER); + State = 1307; + dottedName(); + } + break; + case 9: + EnterOuterAlt(_localctx, 9); + { + State = 1308; + Match(TYPE_PARAMETER); + State = 1309; + dottedName(); + } + break; + case 10: + EnterOuterAlt(_localctx, 10); + { + State = 1310; + Match(TYPEDREF); + } + break; + case 11: + EnterOuterAlt(_localctx, 11); + { + State = 1311; + Match(VOID); + } + break; + case 12: + EnterOuterAlt(_localctx, 12); + { + State = 1312; + Match(NATIVE_INT); + } + break; + case 13: + EnterOuterAlt(_localctx, 13); + { + State = 1313; + Match(NATIVE_UINT); + } + break; + case 14: + EnterOuterAlt(_localctx, 14); + { + State = 1314; + simpleType(); + } + break; + case 15: + EnterOuterAlt(_localctx, 15); + { + State = 1315; + dottedName(); + } + break; + case 16: + EnterOuterAlt(_localctx, 16); + { + State = 1316; + Match(ELLIPSIS); + State = 1317; + type(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class SimpleTypeContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode CHAR() { return GetToken(CILParser.CHAR, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode STRING() { return GetToken(CILParser.STRING, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode BOOL() { return GetToken(CILParser.BOOL, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode INT8() { return GetToken(CILParser.INT8, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode INT16() { return GetToken(CILParser.INT16, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode INT32_() { return GetToken(CILParser.INT32_, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode INT64_() { return GetToken(CILParser.INT64_, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode FLOAT32() { return GetToken(CILParser.FLOAT32, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode FLOAT64_() { return GetToken(CILParser.FLOAT64_, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode UINT8() { return GetToken(CILParser.UINT8, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode UINT16() { return GetToken(CILParser.UINT16, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode UINT32() { return GetToken(CILParser.UINT32, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode UINT64() { return GetToken(CILParser.UINT64, 0); } + public SimpleTypeContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_simpleType; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitSimpleType(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public SimpleTypeContext simpleType() { + SimpleTypeContext _localctx = new SimpleTypeContext(Context, State); + EnterRule(_localctx, 162, RULE_simpleType); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 1320; + _la = TokenStream.LA(1); + if ( !(((((_la - 178)) & ~0x3f) == 0 && ((1L << (_la - 178)) & 8191L) != 0)) ) { + ErrorHandler.RecoverInline(this); + } + else { + ErrorHandler.ReportMatch(this); + Consume(); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class BoundContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode ELLIPSIS() { return GetToken(CILParser.ELLIPSIS, 0); } + [System.Diagnostics.DebuggerNonUserCode] public Int32Context[] int32() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public Int32Context int32(int i) { + return GetRuleContext(i); + } + public BoundContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_bound; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitBound(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public BoundContext bound() { + BoundContext _localctx = new BoundContext(Context, State); + EnterRule(_localctx, 164, RULE_bound); + try { + State = 1332; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,60,Context) ) { + case 1: + EnterOuterAlt(_localctx, 1); + { + } + break; + case 2: + EnterOuterAlt(_localctx, 2); + { + State = 1323; + Match(ELLIPSIS); + } + break; + case 3: + EnterOuterAlt(_localctx, 3); + { + State = 1324; + int32(); + } + break; + case 4: + EnterOuterAlt(_localctx, 4); + { + State = 1325; + int32(); + State = 1326; + Match(ELLIPSIS); + State = 1327; + int32(); + } + break; + case 5: + EnterOuterAlt(_localctx, 5); + { + State = 1329; + int32(); + State = 1330; + Match(ELLIPSIS); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class SecDeclContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode PERMISSION() { return GetToken(CILParser.PERMISSION, 0); } + [System.Diagnostics.DebuggerNonUserCode] public SecActionContext secAction() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public TypeSpecContext typeSpec() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public NameValPairsContext nameValPairs() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public CustomBlobDescrContext customBlobDescr() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode PERMISSIONSET() { return GetToken(CILParser.PERMISSIONSET, 0); } + [System.Diagnostics.DebuggerNonUserCode] public BytesContext bytes() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public CompQstringContext compQstring() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public SecAttrSetBlobContext secAttrSetBlob() { + return GetRuleContext(0); + } + public SecDeclContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_secDecl; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitSecDecl(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public SecDeclContext secDecl() { + SecDeclContext _localctx = new SecDeclContext(Context, State); + EnterRule(_localctx, 166, RULE_secDecl); + int _la; + try { + State = 1374; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,62,Context) ) { + case 1: + EnterOuterAlt(_localctx, 1); + { + State = 1334; + Match(PERMISSION); + State = 1335; + secAction(); + State = 1336; + typeSpec(); + State = 1337; + Match(T__28); + State = 1338; + nameValPairs(); + State = 1339; + Match(T__29); + } + break; + case 2: + EnterOuterAlt(_localctx, 2); + { + State = 1341; + Match(PERMISSION); + State = 1342; + secAction(); + State = 1343; + typeSpec(); + State = 1344; + Match(T__34); + State = 1345; + Match(T__15); + State = 1346; + customBlobDescr(); + State = 1347; + Match(T__16); + } + break; + case 3: + EnterOuterAlt(_localctx, 3); + { + State = 1349; + Match(PERMISSION); + State = 1350; + secAction(); + State = 1351; + typeSpec(); + } + break; + case 4: + EnterOuterAlt(_localctx, 4); + { + State = 1353; + Match(PERMISSIONSET); + State = 1354; + secAction(); + State = 1355; + Match(T__34); + State = 1357; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==T__82) { + { + State = 1356; + Match(T__82); + } + } + + State = 1359; + Match(T__28); + State = 1360; + bytes(); + State = 1361; + Match(T__29); + } + break; + case 5: + EnterOuterAlt(_localctx, 5); + { + State = 1363; + Match(PERMISSIONSET); + State = 1364; + secAction(); + State = 1365; + compQstring(); + } + break; + case 6: + EnterOuterAlt(_localctx, 6); + { + State = 1367; + Match(PERMISSIONSET); + State = 1368; + secAction(); + State = 1369; + Match(T__34); + State = 1370; + Match(T__15); + State = 1371; + secAttrSetBlob(); + State = 1372; + Match(T__16); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class SecAttrSetBlobContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public SecAttrBlobContext[] secAttrBlob() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public SecAttrBlobContext secAttrBlob(int i) { + return GetRuleContext(i); + } + public SecAttrSetBlobContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_secAttrSetBlob; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitSecAttrSetBlob(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public SecAttrSetBlobContext secAttrSetBlob() { + SecAttrSetBlobContext _localctx = new SecAttrSetBlobContext(Context, State); + EnterRule(_localctx, 168, RULE_secAttrSetBlob); + try { + int _alt; + State = 1386; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case T__16: + EnterOuterAlt(_localctx, 1); + { + } + break; + case T__37: + case T__40: + case T__110: + case ELLIPSIS: + case CHAR: + case STRING: + case BOOL: + case INT8: + case INT16: + case INT32_: + case INT64_: + case FLOAT32: + case FLOAT64_: + case UINT8: + case UINT16: + case UINT32: + case UINT64: + case OBJECT: + case VALUE: + case VALUETYPE: + case VOID: + case METHOD: + case TYPE_PARAMETER: + case METHOD_TYPE_PARAMETER: + case TYPEDREF: + case NATIVE_INT: + case NATIVE_UINT: + case THIS: + case BASE: + case NESTER: + case DOTTEDNAME: + case ID: + EnterOuterAlt(_localctx, 2); + { + State = 1382; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,63,Context); + while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + State = 1377; + secAttrBlob(); + State = 1378; + Match(T__26); + } + } + } + State = 1384; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,63,Context); + } + State = 1385; + secAttrBlob(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class SecAttrBlobContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public TypeSpecContext typeSpec() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public CustomBlobNVPairsContext customBlobNVPairs() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode SQSTRING() { return GetToken(CILParser.SQSTRING, 0); } + public SecAttrBlobContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_secAttrBlob; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitSecAttrBlob(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public SecAttrBlobContext secAttrBlob() { + SecAttrBlobContext _localctx = new SecAttrBlobContext(Context, State); + EnterRule(_localctx, 170, RULE_secAttrBlob); + try { + State = 1401; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,65,Context) ) { + case 1: + EnterOuterAlt(_localctx, 1); + { + State = 1388; + typeSpec(); + State = 1389; + Match(T__34); + State = 1390; + Match(T__15); + State = 1391; + customBlobNVPairs(); + State = 1392; + Match(T__16); + } + break; + case 2: + EnterOuterAlt(_localctx, 2); + { + State = 1394; + Match(T__37); + State = 1395; + Match(SQSTRING); + State = 1396; + Match(T__34); + State = 1397; + Match(T__15); + State = 1398; + customBlobNVPairs(); + State = 1399; + Match(T__16); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class NameValPairsContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public NameValPairContext[] nameValPair() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public NameValPairContext nameValPair(int i) { + return GetRuleContext(i); + } + public NameValPairsContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_nameValPairs; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitNameValPairs(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public NameValPairsContext nameValPairs() { + NameValPairsContext _localctx = new NameValPairsContext(Context, State); + EnterRule(_localctx, 172, RULE_nameValPairs); + try { + int _alt; + EnterOuterAlt(_localctx, 1); + { + State = 1408; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,66,Context); + while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + State = 1403; + nameValPair(); + State = 1404; + Match(T__26); + } + } + } + State = 1410; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,66,Context); + } + State = 1411; + nameValPair(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class NameValPairContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public CompQstringContext compQstring() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public CaValueContext caValue() { + return GetRuleContext(0); + } + public NameValPairContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_nameValPair; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitNameValPair(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public NameValPairContext nameValPair() { + NameValPairContext _localctx = new NameValPairContext(Context, State); + EnterRule(_localctx, 174, RULE_nameValPair); + try { + EnterOuterAlt(_localctx, 1); + { + State = 1413; + compQstring(); + State = 1414; + Match(T__34); + State = 1415; + caValue(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class TruefalseContext : ParserRuleContext { + public TruefalseContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_truefalse; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitTruefalse(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public TruefalseContext truefalse() { + TruefalseContext _localctx = new TruefalseContext(Context, State); + EnterRule(_localctx, 176, RULE_truefalse); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 1417; + _la = TokenStream.LA(1); + if ( !(_la==T__92 || _la==T__93) ) { + ErrorHandler.RecoverInline(this); + } + else { + ErrorHandler.ReportMatch(this); + Consume(); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class CaValueContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public TruefalseContext truefalse() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public Int32Context int32() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode INT32_() { return GetToken(CILParser.INT32_, 0); } + [System.Diagnostics.DebuggerNonUserCode] public CompQstringContext compQstring() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ClassNameContext className() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode INT8() { return GetToken(CILParser.INT8, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode INT16() { return GetToken(CILParser.INT16, 0); } + public CaValueContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_caValue; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitCaValue(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public CaValueContext caValue() { + CaValueContext _localctx = new CaValueContext(Context, State); + EnterRule(_localctx, 178, RULE_caValue); + try { + State = 1453; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,67,Context) ) { + case 1: + EnterOuterAlt(_localctx, 1); + { + State = 1419; + truefalse(); + } + break; + case 2: + EnterOuterAlt(_localctx, 2); + { + State = 1420; + int32(); + } + break; + case 3: + EnterOuterAlt(_localctx, 3); + { + State = 1421; + Match(INT32_); + State = 1422; + Match(T__28); + State = 1423; + int32(); + State = 1424; + Match(T__29); + } + break; + case 4: + EnterOuterAlt(_localctx, 4); + { + State = 1426; + compQstring(); + } + break; + case 5: + EnterOuterAlt(_localctx, 5); + { + State = 1427; + className(); + State = 1428; + Match(T__28); + State = 1429; + Match(INT8); + State = 1430; + Match(T__73); + State = 1431; + int32(); + State = 1432; + Match(T__29); + } + break; + case 6: + EnterOuterAlt(_localctx, 6); + { + State = 1434; + className(); + State = 1435; + Match(T__28); + State = 1436; + Match(INT16); + State = 1437; + Match(T__73); + State = 1438; + int32(); + State = 1439; + Match(T__29); + } + break; + case 7: + EnterOuterAlt(_localctx, 7); + { + State = 1441; + className(); + State = 1442; + Match(T__28); + State = 1443; + Match(INT32_); + State = 1444; + Match(T__73); + State = 1445; + int32(); + State = 1446; + Match(T__29); + } + break; + case 8: + EnterOuterAlt(_localctx, 8); + { + State = 1448; + className(); + State = 1449; + Match(T__28); + State = 1450; + int32(); + State = 1451; + Match(T__29); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class SecActionContext : ParserRuleContext { + public SecActionContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_secAction; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitSecAction(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public SecActionContext secAction() { + SecActionContext _localctx = new SecActionContext(Context, State); + EnterRule(_localctx, 180, RULE_secAction); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 1455; + _la = TokenStream.LA(1); + if ( !(((((_la - 95)) & ~0x3f) == 0 && ((1L << (_la - 95)) & 32767L) != 0)) ) { + ErrorHandler.RecoverInline(this); + } + else { + ErrorHandler.ReportMatch(this); + Consume(); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class MethodRefContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public CallConvContext callConv() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public TypeContext type() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public TypeSpecContext typeSpec() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode DCOLON() { return GetToken(CILParser.DCOLON, 0); } + [System.Diagnostics.DebuggerNonUserCode] public MethodNameContext methodName() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public SigArgsContext sigArgs() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public TypeArgsContext typeArgs() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public GenArityNotEmptyContext genArityNotEmpty() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public MdtokenContext mdtoken() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public DottedNameContext dottedName() { + return GetRuleContext(0); + } + public MethodRefContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_methodRef; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitMethodRef(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public MethodRefContext methodRef() { + MethodRefContext _localctx = new MethodRefContext(Context, State); + EnterRule(_localctx, 182, RULE_methodRef); + int _la; + try { + State = 1491; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,70,Context) ) { + case 1: + EnterOuterAlt(_localctx, 1); + { + State = 1457; + callConv(); + State = 1458; + type(); + State = 1459; + typeSpec(); + State = 1460; + Match(DCOLON); + State = 1461; + methodName(); + State = 1463; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==T__83) { + { + State = 1462; + typeArgs(); + } + } + + State = 1465; + sigArgs(); + } + break; + case 2: + EnterOuterAlt(_localctx, 2); + { + State = 1467; + callConv(); + State = 1468; + type(); + State = 1469; + typeSpec(); + State = 1470; + Match(DCOLON); + State = 1471; + methodName(); + State = 1472; + genArityNotEmpty(); + State = 1473; + sigArgs(); + } + break; + case 3: + EnterOuterAlt(_localctx, 3); + { + State = 1475; + callConv(); + State = 1476; + type(); + State = 1477; + methodName(); + State = 1479; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==T__83) { + { + State = 1478; + typeArgs(); + } + } + + State = 1481; + sigArgs(); + } + break; + case 4: + EnterOuterAlt(_localctx, 4); + { + State = 1483; + callConv(); + State = 1484; + type(); + State = 1485; + methodName(); + State = 1486; + genArityNotEmpty(); + State = 1487; + sigArgs(); + } + break; + case 5: + EnterOuterAlt(_localctx, 5); + { + State = 1489; + mdtoken(); + } + break; + case 6: + EnterOuterAlt(_localctx, 6); + { + State = 1490; + dottedName(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class CallConvContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode INSTANCE() { return GetToken(CILParser.INSTANCE, 0); } + [System.Diagnostics.DebuggerNonUserCode] public CallConvContext callConv() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode EXPLICIT() { return GetToken(CILParser.EXPLICIT, 0); } + [System.Diagnostics.DebuggerNonUserCode] public CallKindContext callKind() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public Int32Context int32() { + return GetRuleContext(0); + } + public CallConvContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_callConv; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitCallConv(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public CallConvContext callConv() { + CallConvContext _localctx = new CallConvContext(Context, State); + EnterRule(_localctx, 184, RULE_callConv); + try { + State = 1503; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case INSTANCE: + EnterOuterAlt(_localctx, 1); + { + State = 1493; + Match(INSTANCE); + State = 1494; + callConv(); + } + break; + case EXPLICIT: + EnterOuterAlt(_localctx, 2); + { + State = 1495; + Match(EXPLICIT); + State = 1496; + callConv(); + } + break; + case T__37: + case T__40: + case ELLIPSIS: + case CHAR: + case STRING: + case BOOL: + case INT8: + case INT16: + case INT32_: + case INT64_: + case FLOAT32: + case FLOAT64_: + case UINT8: + case UINT16: + case UINT32: + case UINT64: + case OBJECT: + case VALUE: + case VALUETYPE: + case VOID: + case METHOD: + case DEFAULT: + case VARARG: + case UNMANAGED: + case TYPE_PARAMETER: + case METHOD_TYPE_PARAMETER: + case TYPEDREF: + case NATIVE_INT: + case NATIVE_UINT: + case DOTTEDNAME: + case ID: + EnterOuterAlt(_localctx, 3); + { + State = 1497; + callKind(); + } + break; + case T__109: + EnterOuterAlt(_localctx, 4); + { + State = 1498; + Match(T__109); + State = 1499; + Match(T__28); + State = 1500; + int32(); + State = 1501; + Match(T__29); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class CallKindContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode DEFAULT() { return GetToken(CILParser.DEFAULT, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode VARARG() { return GetToken(CILParser.VARARG, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode UNMANAGED() { return GetToken(CILParser.UNMANAGED, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode CDECL() { return GetToken(CILParser.CDECL, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode STDCALL() { return GetToken(CILParser.STDCALL, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode THISCALL() { return GetToken(CILParser.THISCALL, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode FASTCALL() { return GetToken(CILParser.FASTCALL, 0); } + public CallKindContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_callKind; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitCallKind(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public CallKindContext callKind() { + CallKindContext _localctx = new CallKindContext(Context, State); + EnterRule(_localctx, 186, RULE_callKind); + try { + State = 1517; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,72,Context) ) { + case 1: + EnterOuterAlt(_localctx, 1); + { + } + break; + case 2: + EnterOuterAlt(_localctx, 2); + { + State = 1506; + Match(DEFAULT); + } + break; + case 3: + EnterOuterAlt(_localctx, 3); + { + State = 1507; + Match(VARARG); + } + break; + case 4: + EnterOuterAlt(_localctx, 4); + { + State = 1508; + Match(UNMANAGED); + State = 1509; + Match(CDECL); + } + break; + case 5: + EnterOuterAlt(_localctx, 5); + { + State = 1510; + Match(UNMANAGED); + State = 1511; + Match(STDCALL); + } + break; + case 6: + EnterOuterAlt(_localctx, 6); + { + State = 1512; + Match(UNMANAGED); + State = 1513; + Match(THISCALL); + } + break; + case 7: + EnterOuterAlt(_localctx, 7); + { + State = 1514; + Match(UNMANAGED); + State = 1515; + Match(FASTCALL); + } + break; + case 8: + EnterOuterAlt(_localctx, 8); + { + State = 1516; + Match(UNMANAGED); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class MdtokenContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public Int32Context int32() { + return GetRuleContext(0); + } + public MdtokenContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_mdtoken; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitMdtoken(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public MdtokenContext mdtoken() { + MdtokenContext _localctx = new MdtokenContext(Context, State); + EnterRule(_localctx, 188, RULE_mdtoken); + try { + EnterOuterAlt(_localctx, 1); + { + State = 1519; + Match(T__110); + State = 1520; + Match(T__28); + State = 1521; + int32(); + State = 1522; + Match(T__29); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class MemberRefContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode METHOD() { return GetToken(CILParser.METHOD, 0); } + [System.Diagnostics.DebuggerNonUserCode] public MethodRefContext methodRef() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public FieldRefContext fieldRef() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public MdtokenContext mdtoken() { + return GetRuleContext(0); + } + public MemberRefContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_memberRef; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitMemberRef(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public MemberRefContext memberRef() { + MemberRefContext _localctx = new MemberRefContext(Context, State); + EnterRule(_localctx, 190, RULE_memberRef); + try { + State = 1529; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case METHOD: + EnterOuterAlt(_localctx, 1); + { + State = 1524; + Match(METHOD); + State = 1525; + methodRef(); + } + break; + case T__35: + EnterOuterAlt(_localctx, 2); + { + State = 1526; + Match(T__35); + State = 1527; + fieldRef(); + } + break; + case T__110: + EnterOuterAlt(_localctx, 3); + { + State = 1528; + mdtoken(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class FieldRefContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public TypeContext type() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public TypeSpecContext typeSpec() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode DCOLON() { return GetToken(CILParser.DCOLON, 0); } + [System.Diagnostics.DebuggerNonUserCode] public DottedNameContext dottedName() { + return GetRuleContext(0); + } + public FieldRefContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_fieldRef; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitFieldRef(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public FieldRefContext fieldRef() { + FieldRefContext _localctx = new FieldRefContext(Context, State); + EnterRule(_localctx, 192, RULE_fieldRef); + try { + State = 1540; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,74,Context) ) { + case 1: + EnterOuterAlt(_localctx, 1); + { + State = 1531; + type(); + State = 1532; + typeSpec(); + State = 1533; + Match(DCOLON); + State = 1534; + dottedName(); + } + break; + case 2: + EnterOuterAlt(_localctx, 2); + { + State = 1536; + type(); + State = 1537; + dottedName(); + } + break; + case 3: + EnterOuterAlt(_localctx, 3); + { + State = 1539; + dottedName(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class TypeListContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public TypeSpecContext[] typeSpec() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public TypeSpecContext typeSpec(int i) { + return GetRuleContext(i); + } + public TypeListContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_typeList; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitTypeList(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public TypeListContext typeList() { + TypeListContext _localctx = new TypeListContext(Context, State); + EnterRule(_localctx, 194, RULE_typeList); + try { + int _alt; + EnterOuterAlt(_localctx, 1); + { + State = 1547; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,75,Context); + while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + State = 1542; + typeSpec(); + State = 1543; + Match(T__26); + } + } + } + State = 1549; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,75,Context); + } + State = 1550; + typeSpec(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class TyparsClauseContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public TyparsContext typars() { + return GetRuleContext(0); + } + public TyparsClauseContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_typarsClause; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitTyparsClause(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public TyparsClauseContext typarsClause() { + TyparsClauseContext _localctx = new TyparsClauseContext(Context, State); + EnterRule(_localctx, 196, RULE_typarsClause); + try { + State = 1557; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case T__15: + case T__28: + case T__69: + case T__70: + case T__85: + EnterOuterAlt(_localctx, 1); + { + } + break; + case T__83: + EnterOuterAlt(_localctx, 2); + { + State = 1553; + Match(T__83); + State = 1554; + typars(); + State = 1555; + Match(T__84); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class TyparAttribContext : ParserRuleContext { + public IToken covariant; + public IToken contravariant; + public IToken @class; + public IToken valuetype; + public IToken byrefLike; + public IToken ctor; + public Int32Context flags; + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode PLUS() { return GetToken(CILParser.PLUS, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode VALUETYPE() { return GetToken(CILParser.VALUETYPE, 0); } + [System.Diagnostics.DebuggerNonUserCode] public Int32Context int32() { + return GetRuleContext(0); + } + public TyparAttribContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_typarAttrib; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitTyparAttrib(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public TyparAttribContext typarAttrib() { + TyparAttribContext _localctx = new TyparAttribContext(Context, State); + EnterRule(_localctx, 198, RULE_typarAttrib); + try { + State = 1570; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case PLUS: + EnterOuterAlt(_localctx, 1); + { + State = 1559; + _localctx.covariant = Match(PLUS); + } + break; + case T__111: + EnterOuterAlt(_localctx, 2); + { + State = 1560; + _localctx.contravariant = Match(T__111); + } + break; + case T__37: + EnterOuterAlt(_localctx, 3); + { + State = 1561; + _localctx.@class = Match(T__37); + } + break; + case VALUETYPE: + EnterOuterAlt(_localctx, 4); + { + State = 1562; + _localctx.valuetype = Match(VALUETYPE); + } + break; + case T__112: + EnterOuterAlt(_localctx, 5); + { + State = 1563; + _localctx.byrefLike = Match(T__112); + } + break; + case T__113: + EnterOuterAlt(_localctx, 6); + { + State = 1564; + _localctx.ctor = Match(T__113); + } + break; + case T__68: + EnterOuterAlt(_localctx, 7); + { + State = 1565; + Match(T__68); + State = 1566; + Match(T__28); + State = 1567; + _localctx.flags = int32(); + State = 1568; + Match(T__29); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class TyparAttribsContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public TyparAttribContext[] typarAttrib() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public TyparAttribContext typarAttrib(int i) { + return GetRuleContext(i); + } + public TyparAttribsContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_typarAttribs; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitTyparAttribs(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public TyparAttribsContext typarAttribs() { + TyparAttribsContext _localctx = new TyparAttribsContext(Context, State); + EnterRule(_localctx, 200, RULE_typarAttribs); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 1575; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + while (_la==T__37 || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & 61572651155457L) != 0) || _la==VALUETYPE || _la==PLUS) { + { + { + State = 1572; + typarAttrib(); + } + } + State = 1577; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class TyparContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public TyparAttribsContext typarAttribs() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public DottedNameContext dottedName() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public TyBoundContext tyBound() { + return GetRuleContext(0); + } + public TyparContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_typar; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitTypar(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public TyparContext typar() { + TyparContext _localctx = new TyparContext(Context, State); + EnterRule(_localctx, 202, RULE_typar); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 1578; + typarAttribs(); + State = 1580; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==T__28) { + { + State = 1579; + tyBound(); + } + } + + State = 1582; + dottedName(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class TyparsContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public TyparContext[] typar() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public TyparContext typar(int i) { + return GetRuleContext(i); + } + public TyparsContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_typars; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitTypars(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public TyparsContext typars() { + TyparsContext _localctx = new TyparsContext(Context, State); + EnterRule(_localctx, 204, RULE_typars); + try { + int _alt; + EnterOuterAlt(_localctx, 1); + { + State = 1589; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,80,Context); + while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + State = 1584; + typar(); + State = 1585; + Match(T__26); + } + } + } + State = 1591; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,80,Context); + } + State = 1592; + typar(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class TyBoundContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public TypeListContext typeList() { + return GetRuleContext(0); + } + public TyBoundContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_tyBound; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitTyBound(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public TyBoundContext tyBound() { + TyBoundContext _localctx = new TyBoundContext(Context, State); + EnterRule(_localctx, 206, RULE_tyBound); + try { + EnterOuterAlt(_localctx, 1); + { + State = 1594; + Match(T__28); + State = 1595; + typeList(); + State = 1596; + Match(T__29); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class GenArityContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public GenArityNotEmptyContext genArityNotEmpty() { + return GetRuleContext(0); + } + public GenArityContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_genArity; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitGenArity(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public GenArityContext genArity() { + GenArityContext _localctx = new GenArityContext(Context, State); + EnterRule(_localctx, 208, RULE_genArity); + try { + State = 1600; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case T__28: + case T__85: + EnterOuterAlt(_localctx, 1); + { + } + break; + case T__83: + EnterOuterAlt(_localctx, 2); + { + State = 1599; + genArityNotEmpty(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class GenArityNotEmptyContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public Int32Context int32() { + return GetRuleContext(0); + } + public GenArityNotEmptyContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_genArityNotEmpty; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitGenArityNotEmpty(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public GenArityNotEmptyContext genArityNotEmpty() { + GenArityNotEmptyContext _localctx = new GenArityNotEmptyContext(Context, State); + EnterRule(_localctx, 210, RULE_genArityNotEmpty); + try { + EnterOuterAlt(_localctx, 1); + { + State = 1602; + Match(T__83); + State = 1603; + Match(T__40); + State = 1604; + int32(); + State = 1605; + Match(T__41); + State = 1606; + Match(T__84); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class ClassDeclContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public MethodHeadContext methodHead() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public MethodDeclsContext methodDecls() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ClassHeadContext classHead() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ClassDeclsContext classDecls() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public EventHeadContext eventHead() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public EventDeclsContext eventDecls() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public PropHeadContext propHead() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public PropDeclsContext propDecls() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public FieldDeclContext fieldDecl() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public DataDeclContext dataDecl() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public SecDeclContext secDecl() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ExtSourceSpecContext extSourceSpec() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public CustomAttrDeclContext[] customAttrDecl() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public CustomAttrDeclContext customAttrDecl(int i) { + return GetRuleContext(i); + } + [System.Diagnostics.DebuggerNonUserCode] public Int32Context int32() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ExportHeadContext exportHead() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ExptypeDeclsContext exptypeDecls() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode OVERRIDE() { return GetToken(CILParser.OVERRIDE, 0); } + [System.Diagnostics.DebuggerNonUserCode] public TypeSpecContext[] typeSpec() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public TypeSpecContext typeSpec(int i) { + return GetRuleContext(i); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode[] DCOLON() { return GetTokens(CILParser.DCOLON); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode DCOLON(int i) { + return GetToken(CILParser.DCOLON, i); + } + [System.Diagnostics.DebuggerNonUserCode] public MethodNameContext[] methodName() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public MethodNameContext methodName(int i) { + return GetRuleContext(i); + } + [System.Diagnostics.DebuggerNonUserCode] public CallConvContext[] callConv() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public CallConvContext callConv(int i) { + return GetRuleContext(i); + } + [System.Diagnostics.DebuggerNonUserCode] public TypeContext[] type() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public TypeContext type(int i) { + return GetRuleContext(i); + } + [System.Diagnostics.DebuggerNonUserCode] public SigArgsContext[] sigArgs() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public SigArgsContext sigArgs(int i) { + return GetRuleContext(i); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode[] METHOD() { return GetTokens(CILParser.METHOD); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode METHOD(int i) { + return GetToken(CILParser.METHOD, i); + } + [System.Diagnostics.DebuggerNonUserCode] public GenArityContext[] genArity() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public GenArityContext genArity(int i) { + return GetRuleContext(i); + } + [System.Diagnostics.DebuggerNonUserCode] public LanguageDeclContext languageDecl() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public CompControlContext compControl() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode PARAM() { return GetToken(CILParser.PARAM, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode TYPE() { return GetToken(CILParser.TYPE, 0); } + [System.Diagnostics.DebuggerNonUserCode] public DottedNameContext dottedName() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode CONSTRAINT() { return GetToken(CILParser.CONSTRAINT, 0); } + [System.Diagnostics.DebuggerNonUserCode] public CustomDescrContext customDescr() { + return GetRuleContext(0); + } + public ClassDeclContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_classDecl; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitClassDecl(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public ClassDeclContext classDecl() { + ClassDeclContext _localctx = new ClassDeclContext(Context, State); + EnterRule(_localctx, 212, RULE_classDecl); + try { + int _alt; + State = 1724; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,86,Context) ) { + case 1: + EnterOuterAlt(_localctx, 1); + { + State = 1608; + methodHead(); + State = 1609; + Match(T__15); + State = 1610; + methodDecls(); + State = 1611; + Match(T__16); + } + break; + case 2: + EnterOuterAlt(_localctx, 2); + { + State = 1613; + classHead(); + State = 1614; + Match(T__15); + State = 1615; + classDecls(); + State = 1616; + Match(T__16); + } + break; + case 3: + EnterOuterAlt(_localctx, 3); + { + State = 1618; + eventHead(); + State = 1619; + Match(T__15); + State = 1620; + eventDecls(); + State = 1621; + Match(T__16); + } + break; + case 4: + EnterOuterAlt(_localctx, 4); + { + State = 1623; + propHead(); + State = 1624; + Match(T__15); + State = 1625; + propDecls(); + State = 1626; + Match(T__16); + } + break; + case 5: + EnterOuterAlt(_localctx, 5); + { + State = 1628; + fieldDecl(); + } + break; + case 6: + EnterOuterAlt(_localctx, 6); + { + State = 1629; + dataDecl(); + } + break; + case 7: + EnterOuterAlt(_localctx, 7); + { + State = 1630; + secDecl(); + } + break; + case 8: + EnterOuterAlt(_localctx, 8); + { + State = 1631; + extSourceSpec(); + } + break; + case 9: + EnterOuterAlt(_localctx, 9); + { + State = 1632; + customAttrDecl(); + } + break; + case 10: + EnterOuterAlt(_localctx, 10); + { + State = 1633; + Match(T__114); + State = 1634; + int32(); + } + break; + case 11: + EnterOuterAlt(_localctx, 11); + { + State = 1635; + Match(T__115); + State = 1636; + int32(); + } + break; + case 12: + EnterOuterAlt(_localctx, 12); + { + State = 1637; + exportHead(); + State = 1638; + Match(T__15); + State = 1639; + exptypeDecls(); + State = 1640; + Match(T__16); + } + break; + case 13: + EnterOuterAlt(_localctx, 13); + { + State = 1642; + Match(OVERRIDE); + State = 1643; + typeSpec(); + State = 1644; + Match(DCOLON); + State = 1645; + methodName(); + State = 1646; + Match(T__116); + State = 1647; + callConv(); + State = 1648; + type(); + State = 1649; + typeSpec(); + State = 1650; + Match(DCOLON); + State = 1651; + methodName(); + State = 1652; + sigArgs(); + } + break; + case 14: + EnterOuterAlt(_localctx, 14); + { + State = 1654; + Match(OVERRIDE); + State = 1655; + Match(METHOD); + State = 1656; + callConv(); + State = 1657; + type(); + State = 1658; + typeSpec(); + State = 1659; + Match(DCOLON); + State = 1660; + methodName(); + State = 1661; + genArity(); + State = 1662; + sigArgs(); + State = 1663; + Match(T__116); + State = 1664; + Match(METHOD); + State = 1665; + callConv(); + State = 1666; + type(); + State = 1667; + typeSpec(); + State = 1668; + Match(DCOLON); + State = 1669; + methodName(); + State = 1670; + genArity(); + State = 1671; + sigArgs(); + } + break; + case 15: + EnterOuterAlt(_localctx, 15); + { + State = 1673; + languageDecl(); + } + break; + case 16: + EnterOuterAlt(_localctx, 16); + { + State = 1674; + compControl(); + } + break; + case 17: + EnterOuterAlt(_localctx, 17); + { + State = 1675; + Match(PARAM); + State = 1676; + Match(TYPE); + State = 1677; + Match(T__40); + State = 1678; + int32(); + State = 1679; + Match(T__41); + State = 1683; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,82,Context); + while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + State = 1680; + customAttrDecl(); + } + } + } + State = 1685; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,82,Context); + } + } + break; + case 18: + EnterOuterAlt(_localctx, 18); + { + State = 1686; + Match(PARAM); + State = 1687; + Match(TYPE); + State = 1688; + dottedName(); + State = 1692; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,83,Context); + while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + State = 1689; + customAttrDecl(); + } + } + } + State = 1694; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,83,Context); + } + } + break; + case 19: + EnterOuterAlt(_localctx, 19); + { + State = 1695; + Match(PARAM); + State = 1696; + Match(CONSTRAINT); + State = 1697; + Match(T__40); + State = 1698; + int32(); + State = 1699; + Match(T__41); + State = 1700; + Match(T__26); + State = 1701; + typeSpec(); + State = 1705; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,84,Context); + while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + State = 1702; + customAttrDecl(); + } + } + } + State = 1707; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,84,Context); + } + } + break; + case 20: + EnterOuterAlt(_localctx, 20); + { + State = 1708; + Match(PARAM); + State = 1709; + Match(CONSTRAINT); + State = 1710; + dottedName(); + State = 1711; + Match(T__26); + State = 1712; + typeSpec(); + State = 1716; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,85,Context); + while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + State = 1713; + customAttrDecl(); + } + } + } + State = 1718; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,85,Context); + } + } + break; + case 21: + EnterOuterAlt(_localctx, 21); + { + State = 1719; + Match(T__117); + State = 1720; + Match(TYPE); + State = 1721; + typeSpec(); + State = 1722; + customDescr(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class FieldDeclContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public RepeatOptContext repeatOpt() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public TypeContext type() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public DottedNameContext dottedName() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public AtOptContext atOpt() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public InitOptContext initOpt() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public FieldAttrContext[] fieldAttr() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public FieldAttrContext fieldAttr(int i) { + return GetRuleContext(i); + } + [System.Diagnostics.DebuggerNonUserCode] public MarshalBlobContext[] marshalBlob() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public MarshalBlobContext marshalBlob(int i) { + return GetRuleContext(i); + } + public FieldDeclContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_fieldDecl; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitFieldDecl(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public FieldDeclContext fieldDecl() { + FieldDeclContext _localctx = new FieldDeclContext(Context, State); + EnterRule(_localctx, 214, RULE_fieldDecl); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 1726; + Match(T__118); + State = 1727; + repeatOpt(); + State = 1736; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + while ((((_la) & ~0x3f) == 0 && ((1L << _la) & -4608308318706860032L) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & 4539628424389460027L) != 0)) { + { + State = 1734; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case T__49: + case T__50: + case T__61: + case T__62: + case T__63: + case T__64: + case T__66: + case T__67: + case T__68: + case T__120: + case T__121: + case T__122: + case T__123: + case T__124: + { + State = 1728; + fieldAttr(); + } + break; + case T__119: + { + State = 1729; + Match(T__119); + State = 1730; + Match(T__28); + State = 1731; + marshalBlob(); + State = 1732; + Match(T__29); + } + break; + default: + throw new NoViableAltException(this); + } + } + State = 1738; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + } + State = 1739; + type(); + State = 1740; + dottedName(); + State = 1741; + atOpt(); + State = 1742; + initOpt(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class FieldAttrContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public Int32Context int32() { + return GetRuleContext(0); + } + public FieldAttrContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_fieldAttr; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitFieldAttr(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public FieldAttrContext fieldAttr() { + FieldAttrContext _localctx = new FieldAttrContext(Context, State); + EnterRule(_localctx, 216, RULE_fieldAttr); + try { + State = 1762; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case T__120: + EnterOuterAlt(_localctx, 1); + { + State = 1744; + Match(T__120); + } + break; + case T__49: + EnterOuterAlt(_localctx, 2); + { + State = 1745; + Match(T__49); + } + break; + case T__50: + EnterOuterAlt(_localctx, 3); + { + State = 1746; + Match(T__50); + } + break; + case T__61: + EnterOuterAlt(_localctx, 4); + { + State = 1747; + Match(T__61); + } + break; + case T__121: + EnterOuterAlt(_localctx, 5); + { + State = 1748; + Match(T__121); + } + break; + case T__67: + EnterOuterAlt(_localctx, 6); + { + State = 1749; + Match(T__67); + } + break; + case T__66: + EnterOuterAlt(_localctx, 7); + { + State = 1750; + Match(T__66); + } + break; + case T__62: + EnterOuterAlt(_localctx, 8); + { + State = 1751; + Match(T__62); + } + break; + case T__63: + EnterOuterAlt(_localctx, 9); + { + State = 1752; + Match(T__63); + } + break; + case T__64: + EnterOuterAlt(_localctx, 10); + { + State = 1753; + Match(T__64); + } + break; + case T__122: + EnterOuterAlt(_localctx, 11); + { + State = 1754; + Match(T__122); + } + break; + case T__123: + EnterOuterAlt(_localctx, 12); + { + State = 1755; + Match(T__123); + } + break; + case T__124: + EnterOuterAlt(_localctx, 13); + { + State = 1756; + Match(T__124); + } + break; + case T__68: + EnterOuterAlt(_localctx, 14); + { + State = 1757; + Match(T__68); + State = 1758; + Match(T__28); + State = 1759; + int32(); + State = 1760; + Match(T__29); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class AtOptContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public IdContext id() { + return GetRuleContext(0); + } + public AtOptContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_atOpt; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitAtOpt(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public AtOptContext atOpt() { + AtOptContext _localctx = new AtOptContext(Context, State); + EnterRule(_localctx, 218, RULE_atOpt); + try { + State = 1767; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case T__16: + case T__17: + case T__18: + case T__19: + case T__21: + case T__22: + case T__23: + case T__24: + case T__25: + case T__27: + case T__30: + case T__31: + case T__33: + case T__34: + case T__39: + case T__46: + case T__47: + case T__48: + case T__71: + case T__72: + case T__114: + case T__115: + case T__117: + case T__118: + case T__125: + case T__130: + case T__136: + case T__161: + case MODULE: + case PARAM: + case PP_DEFINE: + case PP_UNDEF: + case PP_IFDEF: + case PP_IFNDEF: + case PP_ELSE: + case PP_ENDIF: + case PP_INCLUDE: + case MRESOURCE: + case DOTTEDNAME: + case ID: + case PERMISSION: + case PERMISSIONSET: + case EXPORT: + case OVERRIDE: + EnterOuterAlt(_localctx, 1); + { + } + break; + case T__42: + EnterOuterAlt(_localctx, 2); + { + State = 1765; + Match(T__42); + State = 1766; + id(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class InitOptContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public FieldInitContext fieldInit() { + return GetRuleContext(0); + } + public InitOptContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_initOpt; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitInitOpt(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public InitOptContext initOpt() { + InitOptContext _localctx = new InitOptContext(Context, State); + EnterRule(_localctx, 220, RULE_initOpt); + try { + State = 1772; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case T__0: + case T__1: + case T__2: + case T__3: + case T__4: + case T__5: + case T__6: + case T__7: + case T__8: + case T__9: + case T__10: + case T__11: + case T__12: + case T__13: + case T__14: + case T__15: + case T__16: + case T__17: + case T__18: + case T__19: + case T__21: + case T__22: + case T__23: + case T__24: + case T__25: + case T__27: + case T__30: + case T__31: + case T__33: + case T__39: + case T__46: + case T__47: + case T__48: + case T__71: + case T__72: + case T__114: + case T__115: + case T__117: + case T__118: + case T__125: + case T__130: + case T__136: + case T__154: + case T__161: + case MODULE: + case UNMANAGED: + case PARAM: + case SQSTRING: + case PP_DEFINE: + case PP_UNDEF: + case PP_IFDEF: + case PP_IFNDEF: + case PP_ELSE: + case PP_ENDIF: + case PP_INCLUDE: + case MRESOURCE: + case INSTR_NONE: + case INSTR_VAR: + case INSTR_I: + case INSTR_I8: + case INSTR_R: + case INSTR_METHOD: + case INSTR_SIG: + case INSTR_BRTARGET: + case INSTR_SWITCH: + case INSTR_TYPE: + case INSTR_STRING: + case INSTR_FIELD: + case INSTR_TOK: + case DOTTEDNAME: + case ID: + case PERMISSION: + case PERMISSIONSET: + case EMITBYTE: + case MAXSTACK: + case ENTRYPOINT: + case ZEROINIT: + case LOCALS: + case EXPORT: + case OVERRIDE: + case VTENTRY: + EnterOuterAlt(_localctx, 1); + { + } + break; + case T__34: + EnterOuterAlt(_localctx, 2); + { + State = 1770; + Match(T__34); + State = 1771; + fieldInit(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class RepeatOptContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public Int32Context int32() { + return GetRuleContext(0); + } + public RepeatOptContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_repeatOpt; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitRepeatOpt(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public RepeatOptContext repeatOpt() { + RepeatOptContext _localctx = new RepeatOptContext(Context, State); + EnterRule(_localctx, 222, RULE_repeatOpt); + try { + State = 1779; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case T__37: + case T__49: + case T__50: + case T__61: + case T__62: + case T__63: + case T__64: + case T__66: + case T__67: + case T__68: + case T__119: + case T__120: + case T__121: + case T__122: + case T__123: + case T__124: + case ELLIPSIS: + case CHAR: + case STRING: + case BOOL: + case INT8: + case INT16: + case INT32_: + case INT64_: + case FLOAT32: + case FLOAT64_: + case UINT8: + case UINT16: + case UINT32: + case UINT64: + case OBJECT: + case VALUE: + case VALUETYPE: + case VOID: + case METHOD: + case TYPE_PARAMETER: + case METHOD_TYPE_PARAMETER: + case TYPEDREF: + case NATIVE_INT: + case NATIVE_UINT: + case DOTTEDNAME: + case ID: + EnterOuterAlt(_localctx, 1); + { + } + break; + case T__40: + EnterOuterAlt(_localctx, 2); + { + State = 1775; + Match(T__40); + State = 1776; + int32(); + State = 1777; + Match(T__41); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class EventHeadContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public TypeSpecContext typeSpec() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public DottedNameContext dottedName() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public EventAttrContext[] eventAttr() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public EventAttrContext eventAttr(int i) { + return GetRuleContext(i); + } + public EventHeadContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_eventHead; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitEventHead(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public EventHeadContext eventHead() { + EventHeadContext _localctx = new EventHeadContext(Context, State); + EnterRule(_localctx, 224, RULE_eventHead); + int _la; + try { + State = 1799; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,95,Context) ) { + case 1: + EnterOuterAlt(_localctx, 1); + { + State = 1781; + Match(T__125); + State = 1785; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + while (_la==T__66 || _la==T__67) { + { + { + State = 1782; + eventAttr(); + } + } + State = 1787; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + } + State = 1788; + typeSpec(); + State = 1789; + dottedName(); + } + break; + case 2: + EnterOuterAlt(_localctx, 2); + { + State = 1791; + Match(T__125); + State = 1795; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + while (_la==T__66 || _la==T__67) { + { + { + State = 1792; + eventAttr(); + } + } + State = 1797; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + } + State = 1798; + dottedName(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class EventAttrContext : ParserRuleContext { + public EventAttrContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_eventAttr; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitEventAttr(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public EventAttrContext eventAttr() { + EventAttrContext _localctx = new EventAttrContext(Context, State); + EnterRule(_localctx, 226, RULE_eventAttr); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 1801; + _la = TokenStream.LA(1); + if ( !(_la==T__66 || _la==T__67) ) { + ErrorHandler.RecoverInline(this); + } + else { + ErrorHandler.ReportMatch(this); + Consume(); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class EventDeclsContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public EventDeclContext[] eventDecl() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public EventDeclContext eventDecl(int i) { + return GetRuleContext(i); + } + public EventDeclsContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_eventDecls; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitEventDecls(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public EventDeclsContext eventDecls() { + EventDeclsContext _localctx = new EventDeclsContext(Context, State); + EnterRule(_localctx, 228, RULE_eventDecls); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 1806; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + while ((((_la) & ~0x3f) == 0 && ((1L << _la) & 19394461696L) != 0) || ((((_la - 72)) & ~0x3f) == 0 && ((1L << (_la - 72)) & 540431955284459523L) != 0) || ((((_la - 269)) & ~0x3f) == 0 && ((1L << (_la - 269)) & 6291583L) != 0)) { + { + { + State = 1803; + eventDecl(); + } + } + State = 1808; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class EventDeclContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public MethodRefContext methodRef() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ExtSourceSpecContext extSourceSpec() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public CustomAttrDeclContext customAttrDecl() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public LanguageDeclContext languageDecl() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public CompControlContext compControl() { + return GetRuleContext(0); + } + public EventDeclContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_eventDecl; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitEventDecl(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public EventDeclContext eventDecl() { + EventDeclContext _localctx = new EventDeclContext(Context, State); + EnterRule(_localctx, 230, RULE_eventDecl); + try { + State = 1821; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case T__126: + EnterOuterAlt(_localctx, 1); + { + State = 1809; + Match(T__126); + State = 1810; + methodRef(); + } + break; + case T__127: + EnterOuterAlt(_localctx, 2); + { + State = 1811; + Match(T__127); + State = 1812; + methodRef(); + } + break; + case T__128: + EnterOuterAlt(_localctx, 3); + { + State = 1813; + Match(T__128); + State = 1814; + methodRef(); + } + break; + case T__129: + EnterOuterAlt(_localctx, 4); + { + State = 1815; + Match(T__129); + State = 1816; + methodRef(); + } + break; + case T__71: + case T__72: + EnterOuterAlt(_localctx, 5); + { + State = 1817; + extSourceSpec(); + } + break; + case T__33: + case DOTTEDNAME: + case ID: + EnterOuterAlt(_localctx, 6); + { + State = 1818; + customAttrDecl(); + } + break; + case T__25: + EnterOuterAlt(_localctx, 7); + { + State = 1819; + languageDecl(); + } + break; + case T__30: + case PP_DEFINE: + case PP_UNDEF: + case PP_IFDEF: + case PP_IFNDEF: + case PP_ELSE: + case PP_ENDIF: + case PP_INCLUDE: + EnterOuterAlt(_localctx, 8); + { + State = 1820; + compControl(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class PropHeadContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public CallConvContext callConv() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public TypeContext type() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public DottedNameContext dottedName() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public SigArgsContext sigArgs() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public InitOptContext initOpt() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public PropAttrContext[] propAttr() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public PropAttrContext propAttr(int i) { + return GetRuleContext(i); + } + public PropHeadContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_propHead; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitPropHead(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public PropHeadContext propHead() { + PropHeadContext _localctx = new PropHeadContext(Context, State); + EnterRule(_localctx, 232, RULE_propHead); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 1823; + Match(T__130); + State = 1827; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + while (_la==T__66 || _la==T__67) { + { + { + State = 1824; + propAttr(); + } + } + State = 1829; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + } + State = 1830; + callConv(); + State = 1831; + type(); + State = 1832; + dottedName(); + State = 1833; + sigArgs(); + State = 1834; + initOpt(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class PropAttrContext : ParserRuleContext { + public PropAttrContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_propAttr; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitPropAttr(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public PropAttrContext propAttr() { + PropAttrContext _localctx = new PropAttrContext(Context, State); + EnterRule(_localctx, 234, RULE_propAttr); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 1836; + _la = TokenStream.LA(1); + if ( !(_la==T__66 || _la==T__67) ) { + ErrorHandler.RecoverInline(this); + } + else { + ErrorHandler.ReportMatch(this); + Consume(); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class PropDeclsContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public PropDeclContext[] propDecl() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public PropDeclContext propDecl(int i) { + return GetRuleContext(i); + } + public PropDeclsContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_propDecls; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitPropDecls(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public PropDeclsContext propDecls() { + PropDeclsContext _localctx = new PropDeclsContext(Context, State); + EnterRule(_localctx, 236, RULE_propDecls); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 1841; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + while ((((_la) & ~0x3f) == 0 && ((1L << _la) & 19394461696L) != 0) || ((((_la - 72)) & ~0x3f) == 0 && ((1L << (_la - 72)) & 3746994889972252675L) != 0) || ((((_la - 269)) & ~0x3f) == 0 && ((1L << (_la - 269)) & 6291583L) != 0)) { + { + { + State = 1838; + propDecl(); + } + } + State = 1843; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class PropDeclContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public MethodRefContext methodRef() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public CustomAttrDeclContext customAttrDecl() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ExtSourceSpecContext extSourceSpec() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public LanguageDeclContext languageDecl() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public CompControlContext compControl() { + return GetRuleContext(0); + } + public PropDeclContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_propDecl; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitPropDecl(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public PropDeclContext propDecl() { + PropDeclContext _localctx = new PropDeclContext(Context, State); + EnterRule(_localctx, 238, RULE_propDecl); + try { + State = 1854; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case T__131: + EnterOuterAlt(_localctx, 1); + { + State = 1844; + Match(T__131); + State = 1845; + methodRef(); + } + break; + case T__132: + EnterOuterAlt(_localctx, 2); + { + State = 1846; + Match(T__132); + State = 1847; + methodRef(); + } + break; + case T__129: + EnterOuterAlt(_localctx, 3); + { + State = 1848; + Match(T__129); + State = 1849; + methodRef(); + } + break; + case T__33: + case DOTTEDNAME: + case ID: + EnterOuterAlt(_localctx, 4); + { + State = 1850; + customAttrDecl(); + } + break; + case T__71: + case T__72: + EnterOuterAlt(_localctx, 5); + { + State = 1851; + extSourceSpec(); + } + break; + case T__25: + EnterOuterAlt(_localctx, 6); + { + State = 1852; + languageDecl(); + } + break; + case T__30: + case PP_DEFINE: + case PP_UNDEF: + case PP_IFDEF: + case PP_IFNDEF: + case PP_ELSE: + case PP_ENDIF: + case PP_INCLUDE: + EnterOuterAlt(_localctx, 7); + { + State = 1853; + compControl(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class MarshalClauseContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public MarshalBlobContext marshalBlob() { + return GetRuleContext(0); + } + public MarshalClauseContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_marshalClause; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitMarshalClause(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public MarshalClauseContext marshalClause() { + MarshalClauseContext _localctx = new MarshalClauseContext(Context, State); + EnterRule(_localctx, 240, RULE_marshalClause); + try { + State = 1862; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case T__0: + case T__1: + case T__2: + case T__3: + case T__4: + case T__5: + case T__6: + case T__7: + case T__8: + case T__9: + case T__10: + case T__11: + case T__12: + case T__13: + case T__14: + case T__26: + case T__29: + case T__113: + case T__152: + case UNMANAGED: + case SQSTRING: + case DOTTEDNAME: + case ID: + EnterOuterAlt(_localctx, 1); + { + } + break; + case T__119: + EnterOuterAlt(_localctx, 2); + { + State = 1857; + Match(T__119); + State = 1858; + Match(T__28); + State = 1859; + marshalBlob(); + State = 1860; + Match(T__29); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class MarshalBlobContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public NativeTypeContext nativeType() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public HexbytesContext hexbytes() { + return GetRuleContext(0); + } + public MarshalBlobContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_marshalBlob; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitMarshalBlob(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public MarshalBlobContext marshalBlob() { + MarshalBlobContext _localctx = new MarshalBlobContext(Context, State); + EnterRule(_localctx, 242, RULE_marshalBlob); + try { + State = 1869; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case T__29: + case T__32: + case T__40: + case BOOL: + case INT8: + case INT16: + case INT32_: + case INT64_: + case FLOAT32: + case FLOAT64_: + case UINT8: + case UINT16: + case UINT32: + case UINT64: + case INT: + case UINT: + case VOID: + case CUSTOM: + case FIXED: + case VARIANT: + case CURRENCY: + case SYSCHAR: + case ERROR: + case DECIMAL: + case DATE: + case BSTR: + case LPSTR: + case LPWSTR: + case LPTSTR: + case OBJECTREF: + case IUNKNOWN: + case IDISPATCH: + case STRUCT: + case INTERFACE: + case SAFEARRAY: + case NESTEDSTRUCT: + case VARIANTBOOL: + case BYVALSTR: + case ANSIBSTR: + case TBSTR: + case METHOD: + case LPSTRUCT: + case ARRAY_TYPE_NO_BOUNDS: + case PTR: + case DOTTEDNAME: + case ID: + EnterOuterAlt(_localctx, 1); + { + State = 1864; + nativeType(); + } + break; + case T__15: + EnterOuterAlt(_localctx, 2); + { + State = 1865; + Match(T__15); + State = 1866; + hexbytes(); + State = 1867; + Match(T__16); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class ParamAttrContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ParamAttrElementContext[] paramAttrElement() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public ParamAttrElementContext paramAttrElement(int i) { + return GetRuleContext(i); + } + public ParamAttrContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_paramAttr; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitParamAttr(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public ParamAttrContext paramAttr() { + ParamAttrContext _localctx = new ParamAttrContext(Context, State); + EnterRule(_localctx, 244, RULE_paramAttr); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 1874; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + while (_la==T__40) { + { + { + State = 1871; + paramAttrElement(); + } + } + State = 1876; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class ParamAttrElementContext : ParserRuleContext { + public IToken @in; + public IToken @out; + public IToken opt; + [System.Diagnostics.DebuggerNonUserCode] public Int32Context int32() { + return GetRuleContext(0); + } + public ParamAttrElementContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_paramAttrElement; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitParamAttrElement(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public ParamAttrElementContext paramAttrElement() { + ParamAttrElementContext _localctx = new ParamAttrElementContext(Context, State); + EnterRule(_localctx, 246, RULE_paramAttrElement); + try { + State = 1890; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,104,Context) ) { + case 1: + EnterOuterAlt(_localctx, 1); + { + State = 1877; + Match(T__40); + State = 1878; + _localctx.@in = Match(T__133); + State = 1879; + Match(T__41); + } + break; + case 2: + EnterOuterAlt(_localctx, 2); + { + State = 1880; + Match(T__40); + State = 1881; + _localctx.@out = Match(T__134); + State = 1882; + Match(T__41); + } + break; + case 3: + EnterOuterAlt(_localctx, 3); + { + State = 1883; + Match(T__40); + State = 1884; + _localctx.opt = Match(T__135); + State = 1885; + Match(T__41); + } + break; + case 4: + EnterOuterAlt(_localctx, 4); + { + State = 1886; + Match(T__40); + State = 1887; + int32(); + State = 1888; + Match(T__41); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class MethodHeadContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public CallConvContext callConv() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ParamAttrContext paramAttr() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public TypeContext type() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public MarshalClauseContext marshalClause() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public MethodNameContext methodName() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public TyparsClauseContext typarsClause() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public SigArgsContext sigArgs() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public MethAttrContext[] methAttr() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public MethAttrContext methAttr(int i) { + return GetRuleContext(i); + } + [System.Diagnostics.DebuggerNonUserCode] public PinvImplContext[] pinvImpl() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public PinvImplContext pinvImpl(int i) { + return GetRuleContext(i); + } + [System.Diagnostics.DebuggerNonUserCode] public ImplAttrContext[] implAttr() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public ImplAttrContext implAttr(int i) { + return GetRuleContext(i); + } + public MethodHeadContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_methodHead; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitMethodHead(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public MethodHeadContext methodHead() { + MethodHeadContext _localctx = new MethodHeadContext(Context, State); + EnterRule(_localctx, 248, RULE_methodHead); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 1892; + Match(T__136); + State = 1897; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + while (((((_la - 50)) & ~0x3f) == 0 && ((1L << (_la - 50)) & 978955L) != 0) || ((((_la - 121)) & ~0x3f) == 0 && ((1L << (_la - 121)) & 33423365L) != 0)) { + { + State = 1895; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case T__49: + case T__50: + case T__52: + case T__61: + case T__62: + case T__63: + case T__64: + case T__66: + case T__67: + case T__68: + case T__120: + case T__122: + case T__137: + case T__138: + case T__139: + case T__140: + case T__141: + case T__142: + case T__143: + { + State = 1893; + methAttr(); + } + break; + case T__144: + { + State = 1894; + pinvImpl(); + } + break; + default: + throw new NoViableAltException(this); + } + } + State = 1899; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + } + State = 1900; + callConv(); + State = 1901; + paramAttr(); + State = 1902; + type(); + State = 1903; + marshalClause(); + State = 1904; + methodName(); + State = 1905; + typarsClause(); + State = 1906; + sigArgs(); + State = 1910; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + while ((((_la) & ~0x3f) == 0 && ((1L << _la) & 32766L) != 0) || _la==T__68 || _la==UNMANAGED) { + { + { + State = 1907; + implAttr(); + } + } + State = 1912; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class MethAttrContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public Int32Context int32() { + return GetRuleContext(0); + } + public MethAttrContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_methAttr; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitMethAttr(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public MethAttrContext methAttr() { + MethAttrContext _localctx = new MethAttrContext(Context, State); + EnterRule(_localctx, 250, RULE_methAttr); + try { + State = 1936; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case T__120: + EnterOuterAlt(_localctx, 1); + { + State = 1913; + Match(T__120); + } + break; + case T__49: + EnterOuterAlt(_localctx, 2); + { + State = 1914; + Match(T__49); + } + break; + case T__50: + EnterOuterAlt(_localctx, 3); + { + State = 1915; + Match(T__50); + } + break; + case T__61: + EnterOuterAlt(_localctx, 4); + { + State = 1916; + Match(T__61); + } + break; + case T__137: + EnterOuterAlt(_localctx, 5); + { + State = 1917; + Match(T__137); + } + break; + case T__66: + EnterOuterAlt(_localctx, 6); + { + State = 1918; + Match(T__66); + } + break; + case T__138: + EnterOuterAlt(_localctx, 7); + { + State = 1919; + Match(T__138); + } + break; + case T__139: + EnterOuterAlt(_localctx, 8); + { + State = 1920; + Match(T__139); + } + break; + case T__52: + EnterOuterAlt(_localctx, 9); + { + State = 1921; + Match(T__52); + } + break; + case T__62: + EnterOuterAlt(_localctx, 10); + { + State = 1922; + Match(T__62); + } + break; + case T__63: + EnterOuterAlt(_localctx, 11); + { + State = 1923; + Match(T__63); + } + break; + case T__64: + EnterOuterAlt(_localctx, 12); + { + State = 1924; + Match(T__64); + } + break; + case T__122: + EnterOuterAlt(_localctx, 13); + { + State = 1925; + Match(T__122); + } + break; + case T__140: + EnterOuterAlt(_localctx, 14); + { + State = 1926; + Match(T__140); + } + break; + case T__141: + EnterOuterAlt(_localctx, 15); + { + State = 1927; + Match(T__141); + } + break; + case T__67: + EnterOuterAlt(_localctx, 16); + { + State = 1928; + Match(T__67); + } + break; + case T__142: + EnterOuterAlt(_localctx, 17); + { + State = 1929; + Match(T__142); + } + break; + case T__143: + EnterOuterAlt(_localctx, 18); + { + State = 1930; + Match(T__143); + } + break; + case T__68: + EnterOuterAlt(_localctx, 19); + { + State = 1931; + Match(T__68); + State = 1932; + Match(T__28); + State = 1933; + int32(); + State = 1934; + Match(T__29); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class PinvImplContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public CompQstringContext[] compQstring() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public CompQstringContext compQstring(int i) { + return GetRuleContext(i); + } + [System.Diagnostics.DebuggerNonUserCode] public PinvAttrContext[] pinvAttr() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public PinvAttrContext pinvAttr(int i) { + return GetRuleContext(i); + } + public PinvImplContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_pinvImpl; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitPinvImpl(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public PinvImplContext pinvImpl() { + PinvImplContext _localctx = new PinvImplContext(Context, State); + EnterRule(_localctx, 252, RULE_pinvImpl); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 1938; + Match(T__144); + State = 1939; + Match(T__28); + State = 1945; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==QSTRING) { + { + State = 1940; + compQstring(); + State = 1943; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==T__32) { + { + State = 1941; + Match(T__32); + State = 1942; + compQstring(); + } + } + + } + } + + State = 1950; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + while (((((_la - 56)) & ~0x3f) == 0 && ((1L << (_la - 56)) & 8195L) != 0) || ((((_la - 146)) & ~0x3f) == 0 && ((1L << (_la - 146)) & 79L) != 0) || ((((_la - 223)) & ~0x3f) == 0 && ((1L << (_la - 223)) & 503316481L) != 0)) { + { + { + State = 1947; + pinvAttr(); + } + } + State = 1952; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + } + State = 1953; + Match(T__29); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class PinvAttrContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode ANSI() { return GetToken(CILParser.ANSI, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode CDECL() { return GetToken(CILParser.CDECL, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode STDCALL() { return GetToken(CILParser.STDCALL, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode THISCALL() { return GetToken(CILParser.THISCALL, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode FASTCALL() { return GetToken(CILParser.FASTCALL, 0); } + [System.Diagnostics.DebuggerNonUserCode] public Int32Context int32() { + return GetRuleContext(0); + } + public PinvAttrContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_pinvAttr; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitPinvAttr(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public PinvAttrContext pinvAttr() { + PinvAttrContext _localctx = new PinvAttrContext(Context, State); + EnterRule(_localctx, 254, RULE_pinvAttr); + try { + State = 1982; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,112,Context) ) { + case 1: + EnterOuterAlt(_localctx, 1); + { + State = 1955; + Match(T__145); + } + break; + case 2: + EnterOuterAlt(_localctx, 2); + { + State = 1956; + Match(ANSI); + } + break; + case 3: + EnterOuterAlt(_localctx, 3); + { + State = 1957; + Match(T__55); + } + break; + case 4: + EnterOuterAlt(_localctx, 4); + { + State = 1958; + Match(T__56); + } + break; + case 5: + EnterOuterAlt(_localctx, 5); + { + State = 1959; + Match(T__146); + } + break; + case 6: + EnterOuterAlt(_localctx, 6); + { + State = 1960; + Match(T__147); + } + break; + case 7: + EnterOuterAlt(_localctx, 7); + { + State = 1961; + Match(CDECL); + } + break; + case 8: + EnterOuterAlt(_localctx, 8); + { + State = 1962; + Match(STDCALL); + } + break; + case 9: + EnterOuterAlt(_localctx, 9); + { + State = 1963; + Match(THISCALL); + } + break; + case 10: + EnterOuterAlt(_localctx, 10); + { + State = 1964; + Match(FASTCALL); + } + break; + case 11: + EnterOuterAlt(_localctx, 11); + { + State = 1965; + Match(T__148); + State = 1966; + Match(T__73); + State = 1967; + Match(T__149); + } + break; + case 12: + EnterOuterAlt(_localctx, 12); + { + State = 1968; + Match(T__148); + State = 1969; + Match(T__73); + State = 1970; + Match(T__150); + } + break; + case 13: + EnterOuterAlt(_localctx, 13); + { + State = 1971; + Match(T__151); + State = 1972; + Match(T__73); + State = 1973; + Match(T__149); + } + break; + case 14: + EnterOuterAlt(_localctx, 14); + { + State = 1974; + Match(T__151); + State = 1975; + Match(T__73); + State = 1976; + Match(T__150); + } + break; + case 15: + EnterOuterAlt(_localctx, 15); + { + State = 1977; + Match(T__68); + State = 1978; + Match(T__28); + State = 1979; + int32(); + State = 1980; + Match(T__29); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class MethodNameContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public DottedNameContext dottedName() { + return GetRuleContext(0); + } + public MethodNameContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_methodName; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitMethodName(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public MethodNameContext methodName() { + MethodNameContext _localctx = new MethodNameContext(Context, State); + EnterRule(_localctx, 256, RULE_methodName); + try { + State = 1987; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case T__113: + EnterOuterAlt(_localctx, 1); + { + State = 1984; + Match(T__113); + } + break; + case T__152: + EnterOuterAlt(_localctx, 2); + { + State = 1985; + Match(T__152); + } + break; + case DOTTEDNAME: + case ID: + EnterOuterAlt(_localctx, 3); + { + State = 1986; + dottedName(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class ImplAttrContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode UNMANAGED() { return GetToken(CILParser.UNMANAGED, 0); } + [System.Diagnostics.DebuggerNonUserCode] public Int32Context int32() { + return GetRuleContext(0); + } + public ImplAttrContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_implAttr; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitImplAttr(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public ImplAttrContext implAttr() { + ImplAttrContext _localctx = new ImplAttrContext(Context, State); + EnterRule(_localctx, 258, RULE_implAttr); + try { + State = 2009; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case T__0: + EnterOuterAlt(_localctx, 1); + { + State = 1989; + Match(T__0); + } + break; + case T__1: + EnterOuterAlt(_localctx, 2); + { + State = 1990; + Match(T__1); + } + break; + case T__2: + EnterOuterAlt(_localctx, 3); + { + State = 1991; + Match(T__2); + } + break; + case T__3: + EnterOuterAlt(_localctx, 4); + { + State = 1992; + Match(T__3); + } + break; + case UNMANAGED: + EnterOuterAlt(_localctx, 5); + { + State = 1993; + Match(UNMANAGED); + } + break; + case T__4: + EnterOuterAlt(_localctx, 6); + { + State = 1994; + Match(T__4); + } + break; + case T__5: + EnterOuterAlt(_localctx, 7); + { + State = 1995; + Match(T__5); + } + break; + case T__6: + EnterOuterAlt(_localctx, 8); + { + State = 1996; + Match(T__6); + } + break; + case T__7: + EnterOuterAlt(_localctx, 9); + { + State = 1997; + Match(T__7); + } + break; + case T__8: + EnterOuterAlt(_localctx, 10); + { + State = 1998; + Match(T__8); + } + break; + case T__9: + EnterOuterAlt(_localctx, 11); + { + State = 1999; + Match(T__9); + } + break; + case T__10: + EnterOuterAlt(_localctx, 12); + { + State = 2000; + Match(T__10); + } + break; + case T__11: + EnterOuterAlt(_localctx, 13); + { + State = 2001; + Match(T__11); + } + break; + case T__12: + EnterOuterAlt(_localctx, 14); + { + State = 2002; + Match(T__12); + } + break; + case T__13: + EnterOuterAlt(_localctx, 15); + { + State = 2003; + Match(T__13); + } + break; + case T__68: + EnterOuterAlt(_localctx, 16); + { + State = 2004; + Match(T__68); + State = 2005; + Match(T__28); + State = 2006; + int32(); + State = 2007; + Match(T__29); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class MethodDeclsContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public MethodDeclContext[] methodDecl() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public MethodDeclContext methodDecl(int i) { + return GetRuleContext(i); + } + public MethodDeclsContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_methodDecls; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitMethodDecls(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public MethodDeclsContext methodDecls() { + MethodDeclsContext _localctx = new MethodDeclsContext(Context, State); + EnterRule(_localctx, 260, RULE_methodDecls); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 2014; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + while ((((_la) & ~0x3f) == 0 && ((1L << _la) & 19394592766L) != 0) || _la==T__71 || _la==T__72 || _la==T__154 || _la==T__161 || ((((_la - 247)) & ~0x3f) == 0 && ((1L << (_la - 247)) & 287975288913527809L) != 0)) { + { + { + State = 2011; + methodDecl(); + } + } + State = 2016; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class MethodDeclContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public InstrContext instr() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode EMITBYTE() { return GetToken(CILParser.EMITBYTE, 0); } + [System.Diagnostics.DebuggerNonUserCode] public Int32Context[] int32() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public Int32Context int32(int i) { + return GetRuleContext(i); + } + [System.Diagnostics.DebuggerNonUserCode] public SehBlockContext sehBlock() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode MAXSTACK() { return GetToken(CILParser.MAXSTACK, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode LOCALS() { return GetToken(CILParser.LOCALS, 0); } + [System.Diagnostics.DebuggerNonUserCode] public SigArgsContext sigArgs() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode ENTRYPOINT() { return GetToken(CILParser.ENTRYPOINT, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode ZEROINIT() { return GetToken(CILParser.ZEROINIT, 0); } + [System.Diagnostics.DebuggerNonUserCode] public DataDeclContext dataDecl() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public LabelDeclContext labelDecl() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public SecDeclContext secDecl() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ExtSourceSpecContext extSourceSpec() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public LanguageDeclContext languageDecl() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public CustomDescrInMethodBodyContext customDescrInMethodBody() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public CompControlContext compControl() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode EXPORT() { return GetToken(CILParser.EXPORT, 0); } + [System.Diagnostics.DebuggerNonUserCode] public IdContext id() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode VTENTRY() { return GetToken(CILParser.VTENTRY, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode OVERRIDE() { return GetToken(CILParser.OVERRIDE, 0); } + [System.Diagnostics.DebuggerNonUserCode] public TypeSpecContext typeSpec() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode DCOLON() { return GetToken(CILParser.DCOLON, 0); } + [System.Diagnostics.DebuggerNonUserCode] public MethodNameContext methodName() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode METHOD() { return GetToken(CILParser.METHOD, 0); } + [System.Diagnostics.DebuggerNonUserCode] public CallConvContext callConv() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public TypeContext type() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public GenArityContext genArity() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ScopeBlockContext scopeBlock() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode PARAM() { return GetToken(CILParser.PARAM, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode TYPE() { return GetToken(CILParser.TYPE, 0); } + [System.Diagnostics.DebuggerNonUserCode] public CustomAttrDeclContext[] customAttrDecl() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public CustomAttrDeclContext customAttrDecl(int i) { + return GetRuleContext(i); + } + [System.Diagnostics.DebuggerNonUserCode] public DottedNameContext dottedName() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode CONSTRAINT() { return GetToken(CILParser.CONSTRAINT, 0); } + [System.Diagnostics.DebuggerNonUserCode] public InitOptContext initOpt() { + return GetRuleContext(0); + } + public MethodDeclContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_methodDecl; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitMethodDecl(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public MethodDeclContext methodDecl() { + MethodDeclContext _localctx = new MethodDeclContext(Context, State); + EnterRule(_localctx, 262, RULE_methodDecl); + try { + int _alt; + State = 2125; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,121,Context) ) { + case 1: + EnterOuterAlt(_localctx, 1); + { + State = 2017; + instr(); + } + break; + case 2: + EnterOuterAlt(_localctx, 2); + { + State = 2018; + Match(EMITBYTE); + State = 2019; + int32(); + } + break; + case 3: + EnterOuterAlt(_localctx, 3); + { + State = 2020; + sehBlock(); + } + break; + case 4: + EnterOuterAlt(_localctx, 4); + { + State = 2021; + Match(MAXSTACK); + State = 2022; + int32(); + } + break; + case 5: + EnterOuterAlt(_localctx, 5); + { + State = 2023; + Match(LOCALS); + State = 2024; + sigArgs(); + } + break; + case 6: + EnterOuterAlt(_localctx, 6); + { + State = 2025; + Match(LOCALS); + State = 2026; + Match(T__153); + State = 2027; + sigArgs(); + } + break; + case 7: + EnterOuterAlt(_localctx, 7); + { + State = 2028; + Match(ENTRYPOINT); + } + break; + case 8: + EnterOuterAlt(_localctx, 8); + { + State = 2029; + Match(ZEROINIT); + } + break; + case 9: + EnterOuterAlt(_localctx, 9); + { + State = 2030; + dataDecl(); + } + break; + case 10: + EnterOuterAlt(_localctx, 10); + { + State = 2031; + labelDecl(); + } + break; + case 11: + EnterOuterAlt(_localctx, 11); + { + State = 2032; + secDecl(); + } + break; + case 12: + EnterOuterAlt(_localctx, 12); + { + State = 2033; + extSourceSpec(); + } + break; + case 13: + EnterOuterAlt(_localctx, 13); + { + State = 2034; + languageDecl(); + } + break; + case 14: + EnterOuterAlt(_localctx, 14); + { + State = 2035; + customDescrInMethodBody(); + } + break; + case 15: + EnterOuterAlt(_localctx, 15); + { + State = 2036; + compControl(); + } + break; + case 16: + EnterOuterAlt(_localctx, 16); + { + State = 2037; + Match(EXPORT); + State = 2038; + Match(T__40); + State = 2039; + int32(); + State = 2040; + Match(T__41); + } + break; + case 17: + EnterOuterAlt(_localctx, 17); + { + State = 2042; + Match(EXPORT); + State = 2043; + Match(T__40); + State = 2044; + int32(); + State = 2045; + Match(T__41); + State = 2046; + Match(T__32); + State = 2047; + id(); + } + break; + case 18: + EnterOuterAlt(_localctx, 18); + { + State = 2049; + Match(VTENTRY); + State = 2050; + int32(); + State = 2051; + Match(T__73); + State = 2052; + int32(); + } + break; + case 19: + EnterOuterAlt(_localctx, 19); + { + State = 2054; + Match(OVERRIDE); + State = 2055; + typeSpec(); + State = 2056; + Match(DCOLON); + State = 2057; + methodName(); + } + break; + case 20: + EnterOuterAlt(_localctx, 20); + { + State = 2059; + Match(OVERRIDE); + State = 2060; + Match(METHOD); + State = 2061; + callConv(); + State = 2062; + type(); + State = 2063; + typeSpec(); + State = 2064; + Match(DCOLON); + State = 2065; + methodName(); + State = 2066; + genArity(); + State = 2067; + sigArgs(); + } + break; + case 21: + EnterOuterAlt(_localctx, 21); + { + State = 2069; + scopeBlock(); + } + break; + case 22: + EnterOuterAlt(_localctx, 22); + { + State = 2070; + Match(PARAM); + State = 2071; + Match(TYPE); + State = 2072; + Match(T__40); + State = 2073; + int32(); + State = 2074; + Match(T__41); + State = 2078; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,116,Context); + while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + State = 2075; + customAttrDecl(); + } + } + } + State = 2080; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,116,Context); + } + } + break; + case 23: + EnterOuterAlt(_localctx, 23); + { + State = 2081; + Match(PARAM); + State = 2082; + Match(TYPE); + State = 2083; + dottedName(); + State = 2087; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,117,Context); + while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + State = 2084; + customAttrDecl(); + } + } + } + State = 2089; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,117,Context); + } + } + break; + case 24: + EnterOuterAlt(_localctx, 24); + { + State = 2090; + Match(PARAM); + State = 2091; + Match(CONSTRAINT); + State = 2092; + Match(T__40); + State = 2093; + int32(); + State = 2094; + Match(T__41); + State = 2095; + Match(T__26); + State = 2096; + typeSpec(); + State = 2100; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,118,Context); + while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + State = 2097; + customAttrDecl(); + } + } + } + State = 2102; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,118,Context); + } + } + break; + case 25: + EnterOuterAlt(_localctx, 25); + { + State = 2103; + Match(PARAM); + State = 2104; + Match(CONSTRAINT); + State = 2105; + dottedName(); + State = 2106; + Match(T__26); + State = 2107; + typeSpec(); + State = 2111; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,119,Context); + while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + State = 2108; + customAttrDecl(); + } + } + } + State = 2113; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,119,Context); + } + } + break; + case 26: + EnterOuterAlt(_localctx, 26); + { + State = 2114; + Match(PARAM); + State = 2115; + Match(T__40); + State = 2116; + int32(); + State = 2117; + Match(T__41); + State = 2118; + initOpt(); + State = 2122; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,120,Context); + while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + State = 2119; + customAttrDecl(); + } + } + } + State = 2124; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,120,Context); + } + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class LabelDeclContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public IdContext id() { + return GetRuleContext(0); + } + public LabelDeclContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_labelDecl; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitLabelDecl(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public LabelDeclContext labelDecl() { + LabelDeclContext _localctx = new LabelDeclContext(Context, State); + EnterRule(_localctx, 264, RULE_labelDecl); + try { + EnterOuterAlt(_localctx, 1); + { + State = 2127; + id(); + State = 2128; + Match(T__73); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class CustomDescrInMethodBodyContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public CustomDescrContext customDescr() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public CustomDescrWithOwnerContext customDescrWithOwner() { + return GetRuleContext(0); + } + public CustomDescrInMethodBodyContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_customDescrInMethodBody; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitCustomDescrInMethodBody(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public CustomDescrInMethodBodyContext customDescrInMethodBody() { + CustomDescrInMethodBodyContext _localctx = new CustomDescrInMethodBodyContext(Context, State); + EnterRule(_localctx, 266, RULE_customDescrInMethodBody); + try { + State = 2132; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,122,Context) ) { + case 1: + EnterOuterAlt(_localctx, 1); + { + State = 2130; + customDescr(); + } + break; + case 2: + EnterOuterAlt(_localctx, 2); + { + State = 2131; + customDescrWithOwner(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class ScopeBlockContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public MethodDeclsContext methodDecls() { + return GetRuleContext(0); + } + public ScopeBlockContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_scopeBlock; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitScopeBlock(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public ScopeBlockContext scopeBlock() { + ScopeBlockContext _localctx = new ScopeBlockContext(Context, State); + EnterRule(_localctx, 268, RULE_scopeBlock); + try { + EnterOuterAlt(_localctx, 1); + { + State = 2134; + Match(T__15); + State = 2135; + methodDecls(); + State = 2136; + Match(T__16); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class SehBlockContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public TryBlockContext tryBlock() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public SehClausesContext sehClauses() { + return GetRuleContext(0); + } + public SehBlockContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_sehBlock; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitSehBlock(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public SehBlockContext sehBlock() { + SehBlockContext _localctx = new SehBlockContext(Context, State); + EnterRule(_localctx, 270, RULE_sehBlock); + try { + EnterOuterAlt(_localctx, 1); + { + State = 2138; + tryBlock(); + State = 2139; + sehClauses(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class SehClausesContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public SehClauseContext[] sehClause() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public SehClauseContext sehClause(int i) { + return GetRuleContext(i); + } + public SehClausesContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_sehClauses; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitSehClauses(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public SehClausesContext sehClauses() { + SehClausesContext _localctx = new SehClausesContext(Context, State); + EnterRule(_localctx, 272, RULE_sehClauses); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 2142; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + do { + { + { + State = 2141; + sehClause(); + } + } + State = 2144; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + } while ( ((((_la - 157)) & ~0x3f) == 0 && ((1L << (_la - 157)) & 15L) != 0) ); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class TryBlockContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ScopeBlockContext scopeBlock() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public IdContext[] id() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public IdContext id(int i) { + return GetRuleContext(i); + } + [System.Diagnostics.DebuggerNonUserCode] public Int32Context[] int32() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public Int32Context int32(int i) { + return GetRuleContext(i); + } + public TryBlockContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_tryBlock; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitTryBlock(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public TryBlockContext tryBlock() { + TryBlockContext _localctx = new TryBlockContext(Context, State); + EnterRule(_localctx, 274, RULE_tryBlock); + try { + State = 2158; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,124,Context) ) { + case 1: + EnterOuterAlt(_localctx, 1); + { + State = 2146; + Match(T__154); + State = 2147; + scopeBlock(); + } + break; + case 2: + EnterOuterAlt(_localctx, 2); + { + State = 2148; + Match(T__154); + State = 2149; + id(); + State = 2150; + Match(T__155); + State = 2151; + id(); + } + break; + case 3: + EnterOuterAlt(_localctx, 3); + { + State = 2153; + Match(T__154); + State = 2154; + int32(); + State = 2155; + Match(T__155); + State = 2156; + int32(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class SehClauseContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public CatchClauseContext catchClause() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public HandlerBlockContext handlerBlock() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public FilterClauseContext filterClause() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public FinallyClauseContext finallyClause() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public FaultClauseContext faultClause() { + return GetRuleContext(0); + } + public SehClauseContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_sehClause; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitSehClause(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public SehClauseContext sehClause() { + SehClauseContext _localctx = new SehClauseContext(Context, State); + EnterRule(_localctx, 276, RULE_sehClause); + try { + State = 2172; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case T__157: + EnterOuterAlt(_localctx, 1); + { + State = 2160; + catchClause(); + State = 2161; + handlerBlock(); + } + break; + case T__156: + EnterOuterAlt(_localctx, 2); + { + State = 2163; + filterClause(); + State = 2164; + handlerBlock(); + } + break; + case T__158: + EnterOuterAlt(_localctx, 3); + { + State = 2166; + finallyClause(); + State = 2167; + handlerBlock(); + } + break; + case T__159: + EnterOuterAlt(_localctx, 4); + { + State = 2169; + faultClause(); + State = 2170; + handlerBlock(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class FilterClauseContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ScopeBlockContext scopeBlock() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public IdContext id() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public Int32Context int32() { + return GetRuleContext(0); + } + public FilterClauseContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_filterClause; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitFilterClause(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public FilterClauseContext filterClause() { + FilterClauseContext _localctx = new FilterClauseContext(Context, State); + EnterRule(_localctx, 278, RULE_filterClause); + try { + State = 2180; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,126,Context) ) { + case 1: + EnterOuterAlt(_localctx, 1); + { + State = 2174; + Match(T__156); + State = 2175; + scopeBlock(); + } + break; + case 2: + EnterOuterAlt(_localctx, 2); + { + State = 2176; + Match(T__156); + State = 2177; + id(); + } + break; + case 3: + EnterOuterAlt(_localctx, 3); + { + State = 2178; + Match(T__156); + State = 2179; + int32(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class CatchClauseContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public TypeSpecContext typeSpec() { + return GetRuleContext(0); + } + public CatchClauseContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_catchClause; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitCatchClause(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public CatchClauseContext catchClause() { + CatchClauseContext _localctx = new CatchClauseContext(Context, State); + EnterRule(_localctx, 280, RULE_catchClause); + try { + EnterOuterAlt(_localctx, 1); + { + State = 2182; + Match(T__157); + State = 2183; + typeSpec(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class FinallyClauseContext : ParserRuleContext { + public FinallyClauseContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_finallyClause; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitFinallyClause(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public FinallyClauseContext finallyClause() { + FinallyClauseContext _localctx = new FinallyClauseContext(Context, State); + EnterRule(_localctx, 282, RULE_finallyClause); + try { + EnterOuterAlt(_localctx, 1); + { + State = 2185; + Match(T__158); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class FaultClauseContext : ParserRuleContext { + public FaultClauseContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_faultClause; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitFaultClause(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public FaultClauseContext faultClause() { + FaultClauseContext _localctx = new FaultClauseContext(Context, State); + EnterRule(_localctx, 284, RULE_faultClause); + try { + EnterOuterAlt(_localctx, 1); + { + State = 2187; + Match(T__159); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class HandlerBlockContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ScopeBlockContext scopeBlock() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public IdContext[] id() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public IdContext id(int i) { + return GetRuleContext(i); + } + [System.Diagnostics.DebuggerNonUserCode] public Int32Context[] int32() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public Int32Context int32(int i) { + return GetRuleContext(i); + } + public HandlerBlockContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_handlerBlock; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitHandlerBlock(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public HandlerBlockContext handlerBlock() { + HandlerBlockContext _localctx = new HandlerBlockContext(Context, State); + EnterRule(_localctx, 286, RULE_handlerBlock); + try { + State = 2200; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,127,Context) ) { + case 1: + EnterOuterAlt(_localctx, 1); + { + State = 2189; + scopeBlock(); + } + break; + case 2: + EnterOuterAlt(_localctx, 2); + { + State = 2190; + Match(T__160); + State = 2191; + id(); + State = 2192; + Match(T__155); + State = 2193; + id(); + } + break; + case 3: + EnterOuterAlt(_localctx, 3); + { + State = 2195; + Match(T__160); + State = 2196; + int32(); + State = 2197; + Match(T__155); + State = 2198; + int32(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class DataDeclContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public DdHeadContext ddHead() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public DdBodyContext ddBody() { + return GetRuleContext(0); + } + public DataDeclContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_dataDecl; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitDataDecl(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public DataDeclContext dataDecl() { + DataDeclContext _localctx = new DataDeclContext(Context, State); + EnterRule(_localctx, 288, RULE_dataDecl); + try { + EnterOuterAlt(_localctx, 1); + { + State = 2202; + ddHead(); + State = 2203; + ddBody(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class DdHeadContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public TlsContext tls() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public IdContext id() { + return GetRuleContext(0); + } + public DdHeadContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_ddHead; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitDdHead(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public DdHeadContext ddHead() { + DdHeadContext _localctx = new DdHeadContext(Context, State); + EnterRule(_localctx, 290, RULE_ddHead); + try { + State = 2212; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,128,Context) ) { + case 1: + EnterOuterAlt(_localctx, 1); + { + State = 2205; + Match(T__161); + State = 2206; + tls(); + State = 2207; + id(); + State = 2208; + Match(T__34); + } + break; + case 2: + EnterOuterAlt(_localctx, 2); + { + State = 2210; + Match(T__161); + State = 2211; + tls(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class TlsContext : ParserRuleContext { + public TlsContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_tls; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitTls(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public TlsContext tls() { + TlsContext _localctx = new TlsContext(Context, State); + EnterRule(_localctx, 292, RULE_tls); + try { + State = 2217; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,129,Context) ) { + case 1: + EnterOuterAlt(_localctx, 1); + { + } + break; + case 2: + EnterOuterAlt(_localctx, 2); + { + State = 2215; + Match(T__162); + } + break; + case 3: + EnterOuterAlt(_localctx, 3); + { + State = 2216; + Match(T__1); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class DdBodyContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public DdItemListContext ddItemList() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public DdItemContext ddItem() { + return GetRuleContext(0); + } + public DdBodyContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_ddBody; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitDdBody(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public DdBodyContext ddBody() { + DdBodyContext _localctx = new DdBodyContext(Context, State); + EnterRule(_localctx, 294, RULE_ddBody); + try { + State = 2224; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case T__15: + EnterOuterAlt(_localctx, 1); + { + State = 2219; + Match(T__15); + State = 2220; + ddItemList(); + State = 2221; + Match(T__16); + } + break; + case T__82: + case CHAR: + case INT8: + case INT16: + case INT32_: + case INT64_: + case FLOAT32: + case FLOAT64_: + case REF: + EnterOuterAlt(_localctx, 2); + { + State = 2223; + ddItem(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class DdItemListContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public DdItemContext[] ddItem() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public DdItemContext ddItem(int i) { + return GetRuleContext(i); + } + public DdItemListContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_ddItemList; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitDdItemList(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public DdItemListContext ddItemList() { + DdItemListContext _localctx = new DdItemListContext(Context, State); + EnterRule(_localctx, 296, RULE_ddItemList); + try { + int _alt; + EnterOuterAlt(_localctx, 1); + { + State = 2231; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,131,Context); + while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + State = 2226; + ddItem(); + State = 2227; + Match(T__26); + } + } + } + State = 2233; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,131,Context); + } + State = 2234; + ddItem(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class DdItemCountContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public Int32Context int32() { + return GetRuleContext(0); + } + public DdItemCountContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_ddItemCount; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitDdItemCount(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public DdItemCountContext ddItemCount() { + DdItemCountContext _localctx = new DdItemCountContext(Context, State); + EnterRule(_localctx, 298, RULE_ddItemCount); + try { + State = 2241; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case T__0: + case T__1: + case T__2: + case T__3: + case T__4: + case T__5: + case T__6: + case T__7: + case T__8: + case T__9: + case T__10: + case T__11: + case T__12: + case T__13: + case T__14: + case T__15: + case T__16: + case T__17: + case T__18: + case T__19: + case T__21: + case T__22: + case T__23: + case T__24: + case T__25: + case T__26: + case T__27: + case T__30: + case T__31: + case T__33: + case T__39: + case T__46: + case T__47: + case T__48: + case T__71: + case T__72: + case T__114: + case T__115: + case T__117: + case T__118: + case T__125: + case T__130: + case T__136: + case T__154: + case T__161: + case MODULE: + case UNMANAGED: + case PARAM: + case SQSTRING: + case PP_DEFINE: + case PP_UNDEF: + case PP_IFDEF: + case PP_IFNDEF: + case PP_ELSE: + case PP_ENDIF: + case PP_INCLUDE: + case MRESOURCE: + case INSTR_NONE: + case INSTR_VAR: + case INSTR_I: + case INSTR_I8: + case INSTR_R: + case INSTR_METHOD: + case INSTR_SIG: + case INSTR_BRTARGET: + case INSTR_SWITCH: + case INSTR_TYPE: + case INSTR_STRING: + case INSTR_FIELD: + case INSTR_TOK: + case DOTTEDNAME: + case ID: + case PERMISSION: + case PERMISSIONSET: + case EMITBYTE: + case MAXSTACK: + case ENTRYPOINT: + case ZEROINIT: + case LOCALS: + case EXPORT: + case OVERRIDE: + case VTENTRY: + EnterOuterAlt(_localctx, 1); + { + } + break; + case T__40: + EnterOuterAlt(_localctx, 2); + { + State = 2237; + Match(T__40); + State = 2238; + int32(); + State = 2239; + Match(T__41); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class DdItemContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode CHAR() { return GetToken(CILParser.CHAR, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode PTR() { return GetToken(CILParser.PTR, 0); } + [System.Diagnostics.DebuggerNonUserCode] public CompQstringContext compQstring() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode REF() { return GetToken(CILParser.REF, 0); } + [System.Diagnostics.DebuggerNonUserCode] public IdContext id() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public BytesContext bytes() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode FLOAT32() { return GetToken(CILParser.FLOAT32, 0); } + [System.Diagnostics.DebuggerNonUserCode] public Float64Context float64() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public DdItemCountContext ddItemCount() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode FLOAT64_() { return GetToken(CILParser.FLOAT64_, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode INT64_() { return GetToken(CILParser.INT64_, 0); } + [System.Diagnostics.DebuggerNonUserCode] public Int64Context int64() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode INT32_() { return GetToken(CILParser.INT32_, 0); } + [System.Diagnostics.DebuggerNonUserCode] public Int32Context int32() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode INT16() { return GetToken(CILParser.INT16, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode INT8() { return GetToken(CILParser.INT8, 0); } + public DdItemContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_ddItem; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitDdItem(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public DdItemContext ddItem() { + DdItemContext _localctx = new DdItemContext(Context, State); + EnterRule(_localctx, 300, RULE_ddItem); + try { + State = 2307; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,133,Context) ) { + case 1: + EnterOuterAlt(_localctx, 1); + { + State = 2243; + Match(CHAR); + State = 2244; + Match(PTR); + State = 2245; + Match(T__28); + State = 2246; + compQstring(); + State = 2247; + Match(T__29); + } + break; + case 2: + EnterOuterAlt(_localctx, 2); + { + State = 2249; + Match(REF); + State = 2250; + Match(T__28); + State = 2251; + id(); + State = 2252; + Match(T__29); + } + break; + case 3: + EnterOuterAlt(_localctx, 3); + { + State = 2254; + Match(T__82); + State = 2255; + Match(T__28); + State = 2256; + bytes(); + State = 2257; + Match(T__29); + } + break; + case 4: + EnterOuterAlt(_localctx, 4); + { + State = 2259; + Match(FLOAT32); + State = 2260; + Match(T__28); + State = 2261; + float64(); + State = 2262; + Match(T__29); + State = 2263; + ddItemCount(); + } + break; + case 5: + EnterOuterAlt(_localctx, 5); + { + State = 2265; + Match(FLOAT64_); + State = 2266; + Match(T__28); + State = 2267; + float64(); + State = 2268; + Match(T__29); + State = 2269; + ddItemCount(); + } + break; + case 6: + EnterOuterAlt(_localctx, 6); + { + State = 2271; + Match(INT64_); + State = 2272; + Match(T__28); + State = 2273; + int64(); + State = 2274; + Match(T__29); + State = 2275; + ddItemCount(); + } + break; + case 7: + EnterOuterAlt(_localctx, 7); + { + State = 2277; + Match(INT32_); + State = 2278; + Match(T__28); + State = 2279; + int32(); + State = 2280; + Match(T__29); + State = 2281; + ddItemCount(); + } + break; + case 8: + EnterOuterAlt(_localctx, 8); + { + State = 2283; + Match(INT16); + State = 2284; + Match(T__28); + State = 2285; + int32(); + State = 2286; + Match(T__29); + State = 2287; + ddItemCount(); + } + break; + case 9: + EnterOuterAlt(_localctx, 9); + { + State = 2289; + Match(INT8); + State = 2290; + Match(T__28); + State = 2291; + int32(); + State = 2292; + Match(T__29); + State = 2293; + ddItemCount(); + } + break; + case 10: + EnterOuterAlt(_localctx, 10); + { + State = 2295; + Match(FLOAT32); + State = 2296; + ddItemCount(); + } + break; + case 11: + EnterOuterAlt(_localctx, 11); + { + State = 2297; + Match(FLOAT64_); + State = 2298; + ddItemCount(); + } + break; + case 12: + EnterOuterAlt(_localctx, 12); + { + State = 2299; + Match(INT64_); + State = 2300; + ddItemCount(); + } + break; + case 13: + EnterOuterAlt(_localctx, 13); + { + State = 2301; + Match(INT32_); + State = 2302; + ddItemCount(); + } + break; + case 14: + EnterOuterAlt(_localctx, 14); + { + State = 2303; + Match(INT16); + State = 2304; + ddItemCount(); + } + break; + case 15: + EnterOuterAlt(_localctx, 15); + { + State = 2305; + Match(INT8); + State = 2306; + ddItemCount(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class FieldSerInitContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode FLOAT32() { return GetToken(CILParser.FLOAT32, 0); } + [System.Diagnostics.DebuggerNonUserCode] public Float64Context float64() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode FLOAT64_() { return GetToken(CILParser.FLOAT64_, 0); } + [System.Diagnostics.DebuggerNonUserCode] public Int32Context int32() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public Int64Context int64() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode INT64_() { return GetToken(CILParser.INT64_, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode INT32_() { return GetToken(CILParser.INT32_, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode INT16() { return GetToken(CILParser.INT16, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode INT8() { return GetToken(CILParser.INT8, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode UINT64() { return GetToken(CILParser.UINT64, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode UINT32() { return GetToken(CILParser.UINT32, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode UINT16() { return GetToken(CILParser.UINT16, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode UINT8() { return GetToken(CILParser.UINT8, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode CHAR() { return GetToken(CILParser.CHAR, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode BOOL() { return GetToken(CILParser.BOOL, 0); } + [System.Diagnostics.DebuggerNonUserCode] public TruefalseContext truefalse() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public BytesContext bytes() { + return GetRuleContext(0); + } + public FieldSerInitContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_fieldSerInit; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitFieldSerInit(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public FieldSerInitContext fieldSerInit() { + FieldSerInitContext _localctx = new FieldSerInitContext(Context, State); + EnterRule(_localctx, 302, RULE_fieldSerInit); + try { + State = 2384; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,134,Context) ) { + case 1: + EnterOuterAlt(_localctx, 1); + { + State = 2309; + Match(FLOAT32); + State = 2310; + Match(T__28); + State = 2311; + float64(); + State = 2312; + Match(T__29); + } + break; + case 2: + EnterOuterAlt(_localctx, 2); + { + State = 2314; + Match(FLOAT64_); + State = 2315; + Match(T__28); + State = 2316; + float64(); + State = 2317; + Match(T__29); + } + break; + case 3: + EnterOuterAlt(_localctx, 3); + { + State = 2319; + Match(FLOAT32); + State = 2320; + Match(T__28); + State = 2321; + int32(); + State = 2322; + Match(T__29); + } + break; + case 4: + EnterOuterAlt(_localctx, 4); + { + State = 2324; + Match(FLOAT64_); + State = 2325; + Match(T__28); + State = 2326; + int64(); + State = 2327; + Match(T__29); + } + break; + case 5: + EnterOuterAlt(_localctx, 5); + { + State = 2329; + Match(INT64_); + State = 2330; + Match(T__28); + State = 2331; + int64(); + State = 2332; + Match(T__29); + } + break; + case 6: + EnterOuterAlt(_localctx, 6); + { + State = 2334; + Match(INT32_); + State = 2335; + Match(T__28); + State = 2336; + int32(); + State = 2337; + Match(T__29); + } + break; + case 7: + EnterOuterAlt(_localctx, 7); + { + State = 2339; + Match(INT16); + State = 2340; + Match(T__28); + State = 2341; + int32(); + State = 2342; + Match(T__29); + } + break; + case 8: + EnterOuterAlt(_localctx, 8); + { + State = 2344; + Match(INT8); + State = 2345; + Match(T__28); + State = 2346; + int32(); + State = 2347; + Match(T__29); + } + break; + case 9: + EnterOuterAlt(_localctx, 9); + { + State = 2349; + Match(UINT64); + State = 2350; + Match(T__28); + State = 2351; + int64(); + State = 2352; + Match(T__29); + } + break; + case 10: + EnterOuterAlt(_localctx, 10); + { + State = 2354; + Match(UINT32); + State = 2355; + Match(T__28); + State = 2356; + int32(); + State = 2357; + Match(T__29); + } + break; + case 11: + EnterOuterAlt(_localctx, 11); + { + State = 2359; + Match(UINT16); + State = 2360; + Match(T__28); + State = 2361; + int32(); + State = 2362; + Match(T__29); + } + break; + case 12: + EnterOuterAlt(_localctx, 12); + { + State = 2364; + Match(UINT8); + State = 2365; + Match(T__28); + State = 2366; + int32(); + State = 2367; + Match(T__29); + } + break; + case 13: + EnterOuterAlt(_localctx, 13); + { + State = 2369; + Match(CHAR); + State = 2370; + Match(T__28); + State = 2371; + int32(); + State = 2372; + Match(T__29); + } + break; + case 14: + EnterOuterAlt(_localctx, 14); + { + State = 2374; + Match(BOOL); + State = 2375; + Match(T__28); + State = 2376; + truefalse(); + State = 2377; + Match(T__29); + } + break; + case 15: + EnterOuterAlt(_localctx, 15); + { + State = 2379; + Match(T__82); + State = 2380; + Match(T__28); + State = 2381; + bytes(); + State = 2382; + Match(T__29); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class BytesContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public HexbytesContext[] hexbytes() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public HexbytesContext hexbytes(int i) { + return GetRuleContext(i); + } + public BytesContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_bytes; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitBytes(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public BytesContext bytes() { + BytesContext _localctx = new BytesContext(Context, State); + EnterRule(_localctx, 304, RULE_bytes); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 2389; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + while (_la==HEXBYTE) { + { + { + State = 2386; + hexbytes(); + } + } + State = 2391; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class HexbytesContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode[] HEXBYTE() { return GetTokens(CILParser.HEXBYTE); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode HEXBYTE(int i) { + return GetToken(CILParser.HEXBYTE, i); + } + public HexbytesContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_hexbytes; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitHexbytes(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public HexbytesContext hexbytes() { + HexbytesContext _localctx = new HexbytesContext(Context, State); + EnterRule(_localctx, 306, RULE_hexbytes); + try { + int _alt; + EnterOuterAlt(_localctx, 1); + { + State = 2393; + ErrorHandler.Sync(this); + _alt = 1; + do { + switch (_alt) { + case 1: + { + { + State = 2392; + Match(HEXBYTE); + } + } + break; + default: + throw new NoViableAltException(this); + } + State = 2395; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,136,Context); + } while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class FieldInitContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public FieldSerInitContext fieldSerInit() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public CompQstringContext compQstring() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode NULLREF() { return GetToken(CILParser.NULLREF, 0); } + public FieldInitContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_fieldInit; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitFieldInit(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public FieldInitContext fieldInit() { + FieldInitContext _localctx = new FieldInitContext(Context, State); + EnterRule(_localctx, 308, RULE_fieldInit); + try { + State = 2400; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case T__82: + case CHAR: + case BOOL: + case INT8: + case INT16: + case INT32_: + case INT64_: + case FLOAT32: + case FLOAT64_: + case UINT8: + case UINT16: + case UINT32: + case UINT64: + EnterOuterAlt(_localctx, 1); + { + State = 2397; + fieldSerInit(); + } + break; + case QSTRING: + EnterOuterAlt(_localctx, 2); + { + State = 2398; + compQstring(); + } + break; + case NULLREF: + EnterOuterAlt(_localctx, 3); + { + State = 2399; + Match(NULLREF); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class SerInitContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public FieldSerInitContext fieldSerInit() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode STRING() { return GetToken(CILParser.STRING, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode NULLREF() { return GetToken(CILParser.NULLREF, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode SQSTRING() { return GetToken(CILParser.SQSTRING, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode TYPE() { return GetToken(CILParser.TYPE, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ClassNameContext className() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode OBJECT() { return GetToken(CILParser.OBJECT, 0); } + [System.Diagnostics.DebuggerNonUserCode] public SerInitContext serInit() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode FLOAT32() { return GetToken(CILParser.FLOAT32, 0); } + [System.Diagnostics.DebuggerNonUserCode] public Int32Context int32() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public F32seqContext f32seq() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode FLOAT64_() { return GetToken(CILParser.FLOAT64_, 0); } + [System.Diagnostics.DebuggerNonUserCode] public F64seqContext f64seq() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode INT64_() { return GetToken(CILParser.INT64_, 0); } + [System.Diagnostics.DebuggerNonUserCode] public I64seqContext i64seq() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode INT32_() { return GetToken(CILParser.INT32_, 0); } + [System.Diagnostics.DebuggerNonUserCode] public I32seqContext i32seq() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode INT16() { return GetToken(CILParser.INT16, 0); } + [System.Diagnostics.DebuggerNonUserCode] public I16seqContext i16seq() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode INT8() { return GetToken(CILParser.INT8, 0); } + [System.Diagnostics.DebuggerNonUserCode] public I8seqContext i8seq() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode UINT64() { return GetToken(CILParser.UINT64, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode UINT32() { return GetToken(CILParser.UINT32, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode UINT16() { return GetToken(CILParser.UINT16, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode UINT8() { return GetToken(CILParser.UINT8, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode CHAR() { return GetToken(CILParser.CHAR, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode BOOL() { return GetToken(CILParser.BOOL, 0); } + [System.Diagnostics.DebuggerNonUserCode] public BoolSeqContext boolSeq() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public SqstringSeqContext sqstringSeq() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ClassSeqContext classSeq() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ObjSeqContext objSeq() { + return GetRuleContext(0); + } + public SerInitContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_serInit; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitSerInit(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public SerInitContext serInit() { + SerInitContext _localctx = new SerInitContext(Context, State); + EnterRule(_localctx, 310, RULE_serInit); + try { + State = 2550; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,138,Context) ) { + case 1: + EnterOuterAlt(_localctx, 1); + { + State = 2402; + fieldSerInit(); + } + break; + case 2: + EnterOuterAlt(_localctx, 2); + { + State = 2403; + Match(STRING); + State = 2404; + Match(T__28); + State = 2405; + Match(NULLREF); + State = 2406; + Match(T__29); + } + break; + case 3: + EnterOuterAlt(_localctx, 3); + { + State = 2407; + Match(STRING); + State = 2408; + Match(T__28); + State = 2409; + Match(SQSTRING); + State = 2410; + Match(T__29); + } + break; + case 4: + EnterOuterAlt(_localctx, 4); + { + State = 2411; + Match(TYPE); + State = 2412; + Match(T__28); + State = 2413; + Match(T__37); + State = 2414; + Match(SQSTRING); + State = 2415; + Match(T__29); + } + break; + case 5: + EnterOuterAlt(_localctx, 5); + { + State = 2416; + Match(TYPE); + State = 2417; + Match(T__28); + State = 2418; + className(); + State = 2419; + Match(T__29); + } + break; + case 6: + EnterOuterAlt(_localctx, 6); + { + State = 2421; + Match(TYPE); + State = 2422; + Match(T__28); + State = 2423; + Match(NULLREF); + State = 2424; + Match(T__29); + } + break; + case 7: + EnterOuterAlt(_localctx, 7); + { + State = 2425; + Match(OBJECT); + State = 2426; + Match(T__28); + State = 2427; + serInit(); + State = 2428; + Match(T__29); + } + break; + case 8: + EnterOuterAlt(_localctx, 8); + { + State = 2430; + Match(FLOAT32); + State = 2431; + Match(T__40); + State = 2432; + int32(); + State = 2433; + Match(T__41); + State = 2434; + Match(T__28); + State = 2435; + f32seq(); + State = 2436; + Match(T__29); + } + break; + case 9: + EnterOuterAlt(_localctx, 9); + { + State = 2438; + Match(FLOAT64_); + State = 2439; + Match(T__40); + State = 2440; + int32(); + State = 2441; + Match(T__41); + State = 2442; + Match(T__28); + State = 2443; + f64seq(); + State = 2444; + Match(T__29); + } + break; + case 10: + EnterOuterAlt(_localctx, 10); + { + State = 2446; + Match(INT64_); + State = 2447; + Match(T__40); + State = 2448; + int32(); + State = 2449; + Match(T__41); + State = 2450; + Match(T__28); + State = 2451; + i64seq(); + State = 2452; + Match(T__29); + } + break; + case 11: + EnterOuterAlt(_localctx, 11); + { + State = 2454; + Match(INT32_); + State = 2455; + Match(T__40); + State = 2456; + int32(); + State = 2457; + Match(T__41); + State = 2458; + Match(T__28); + State = 2459; + i32seq(); + State = 2460; + Match(T__29); + } + break; + case 12: + EnterOuterAlt(_localctx, 12); + { + State = 2462; + Match(INT16); + State = 2463; + Match(T__40); + State = 2464; + int32(); + State = 2465; + Match(T__41); + State = 2466; + Match(T__28); + State = 2467; + i16seq(); + State = 2468; + Match(T__29); + } + break; + case 13: + EnterOuterAlt(_localctx, 13); + { + State = 2470; + Match(INT8); + State = 2471; + Match(T__40); + State = 2472; + int32(); + State = 2473; + Match(T__41); + State = 2474; + Match(T__28); + State = 2475; + i8seq(); + State = 2476; + Match(T__29); + } + break; + case 14: + EnterOuterAlt(_localctx, 14); + { + State = 2478; + Match(UINT64); + State = 2479; + Match(T__40); + State = 2480; + int32(); + State = 2481; + Match(T__41); + State = 2482; + Match(T__28); + State = 2483; + i64seq(); + State = 2484; + Match(T__29); + } + break; + case 15: + EnterOuterAlt(_localctx, 15); + { + State = 2486; + Match(UINT32); + State = 2487; + Match(T__40); + State = 2488; + int32(); + State = 2489; + Match(T__41); + State = 2490; + Match(T__28); + State = 2491; + i32seq(); + State = 2492; + Match(T__29); + } + break; + case 16: + EnterOuterAlt(_localctx, 16); + { + State = 2494; + Match(UINT16); + State = 2495; + Match(T__40); + State = 2496; + int32(); + State = 2497; + Match(T__41); + State = 2498; + Match(T__28); + State = 2499; + i16seq(); + State = 2500; + Match(T__29); + } + break; + case 17: + EnterOuterAlt(_localctx, 17); + { + State = 2502; + Match(UINT8); + State = 2503; + Match(T__40); + State = 2504; + int32(); + State = 2505; + Match(T__41); + State = 2506; + Match(T__28); + State = 2507; + i8seq(); + State = 2508; + Match(T__29); + } + break; + case 18: + EnterOuterAlt(_localctx, 18); + { + State = 2510; + Match(CHAR); + State = 2511; + Match(T__40); + State = 2512; + int32(); + State = 2513; + Match(T__41); + State = 2514; + Match(T__28); + State = 2515; + i16seq(); + State = 2516; + Match(T__29); + } + break; + case 19: + EnterOuterAlt(_localctx, 19); + { + State = 2518; + Match(BOOL); + State = 2519; + Match(T__40); + State = 2520; + int32(); + State = 2521; + Match(T__41); + State = 2522; + Match(T__28); + State = 2523; + boolSeq(); + State = 2524; + Match(T__29); + } + break; + case 20: + EnterOuterAlt(_localctx, 20); + { + State = 2526; + Match(STRING); + State = 2527; + Match(T__40); + State = 2528; + int32(); + State = 2529; + Match(T__41); + State = 2530; + Match(T__28); + State = 2531; + sqstringSeq(); + State = 2532; + Match(T__29); + } + break; + case 21: + EnterOuterAlt(_localctx, 21); + { + State = 2534; + Match(TYPE); + State = 2535; + Match(T__40); + State = 2536; + int32(); + State = 2537; + Match(T__41); + State = 2538; + Match(T__28); + State = 2539; + classSeq(); + State = 2540; + Match(T__29); + } + break; + case 22: + EnterOuterAlt(_localctx, 22); + { + State = 2542; + Match(OBJECT); + State = 2543; + Match(T__40); + State = 2544; + int32(); + State = 2545; + Match(T__41); + State = 2546; + Match(T__28); + State = 2547; + objSeq(); + State = 2548; + Match(T__29); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class F32seqContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public Float64Context[] float64() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public Float64Context float64(int i) { + return GetRuleContext(i); + } + [System.Diagnostics.DebuggerNonUserCode] public Int32Context[] int32() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public Int32Context int32(int i) { + return GetRuleContext(i); + } + public F32seqContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_f32seq; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitF32seq(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public F32seqContext f32seq() { + F32seqContext _localctx = new F32seqContext(Context, State); + EnterRule(_localctx, 312, RULE_f32seq); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 2556; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + while (((((_la - 169)) & ~0x3f) == 0 && ((1L << (_la - 169)) & 196613L) != 0)) { + { + State = 2554; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case FLOAT64: + case FLOAT32: + case FLOAT64_: + { + State = 2552; + float64(); + } + break; + case INT32: + { + State = 2553; + int32(); + } + break; + default: + throw new NoViableAltException(this); + } + } + State = 2558; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class F64seqContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public Float64Context[] float64() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public Float64Context float64(int i) { + return GetRuleContext(i); + } + [System.Diagnostics.DebuggerNonUserCode] public Int64Context[] int64() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public Int64Context int64(int i) { + return GetRuleContext(i); + } + public F64seqContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_f64seq; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitF64seq(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public F64seqContext f64seq() { + F64seqContext _localctx = new F64seqContext(Context, State); + EnterRule(_localctx, 314, RULE_f64seq); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 2563; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + while (((((_la - 169)) & ~0x3f) == 0 && ((1L << (_la - 169)) & 196615L) != 0)) { + { + State = 2561; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case FLOAT64: + case FLOAT32: + case FLOAT64_: + { + State = 2559; + float64(); + } + break; + case INT32: + case INT64: + { + State = 2560; + int64(); + } + break; + default: + throw new NoViableAltException(this); + } + } + State = 2565; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class I64seqContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public Int64Context[] int64() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public Int64Context int64(int i) { + return GetRuleContext(i); + } + public I64seqContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_i64seq; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitI64seq(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public I64seqContext i64seq() { + I64seqContext _localctx = new I64seqContext(Context, State); + EnterRule(_localctx, 316, RULE_i64seq); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 2569; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + while (_la==INT32 || _la==INT64) { + { + { + State = 2566; + int64(); + } + } + State = 2571; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class I32seqContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public Int32Context[] int32() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public Int32Context int32(int i) { + return GetRuleContext(i); + } + public I32seqContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_i32seq; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitI32seq(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public I32seqContext i32seq() { + I32seqContext _localctx = new I32seqContext(Context, State); + EnterRule(_localctx, 318, RULE_i32seq); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 2575; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + while (_la==INT32) { + { + { + State = 2572; + int32(); + } + } + State = 2577; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class I16seqContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public Int32Context[] int32() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public Int32Context int32(int i) { + return GetRuleContext(i); + } + public I16seqContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_i16seq; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitI16seq(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public I16seqContext i16seq() { + I16seqContext _localctx = new I16seqContext(Context, State); + EnterRule(_localctx, 320, RULE_i16seq); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 2581; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + while (_la==INT32) { + { + { + State = 2578; + int32(); + } + } + State = 2583; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class I8seqContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public Int32Context[] int32() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public Int32Context int32(int i) { + return GetRuleContext(i); + } + public I8seqContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_i8seq; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitI8seq(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public I8seqContext i8seq() { + I8seqContext _localctx = new I8seqContext(Context, State); + EnterRule(_localctx, 322, RULE_i8seq); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 2587; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + while (_la==INT32) { + { + { + State = 2584; + int32(); + } + } + State = 2589; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class BoolSeqContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public TruefalseContext[] truefalse() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public TruefalseContext truefalse(int i) { + return GetRuleContext(i); + } + public BoolSeqContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_boolSeq; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitBoolSeq(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public BoolSeqContext boolSeq() { + BoolSeqContext _localctx = new BoolSeqContext(Context, State); + EnterRule(_localctx, 324, RULE_boolSeq); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 2593; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + while (_la==T__92 || _la==T__93) { + { + { + State = 2590; + truefalse(); + } + } + State = 2595; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class SqstringSeqContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode[] NULLREF() { return GetTokens(CILParser.NULLREF); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode NULLREF(int i) { + return GetToken(CILParser.NULLREF, i); + } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode[] SQSTRING() { return GetTokens(CILParser.SQSTRING); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode SQSTRING(int i) { + return GetToken(CILParser.SQSTRING, i); + } + public SqstringSeqContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_sqstringSeq; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitSqstringSeq(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public SqstringSeqContext sqstringSeq() { + SqstringSeqContext _localctx = new SqstringSeqContext(Context, State); + EnterRule(_localctx, 326, RULE_sqstringSeq); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 2599; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + while (_la==NULLREF || _la==SQSTRING) { + { + { + State = 2596; + _la = TokenStream.LA(1); + if ( !(_la==NULLREF || _la==SQSTRING) ) { + ErrorHandler.RecoverInline(this); + } + else { + ErrorHandler.ReportMatch(this); + Consume(); + } + } + } + State = 2601; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class ClassSeqContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ClassSeqElementContext[] classSeqElement() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public ClassSeqElementContext classSeqElement(int i) { + return GetRuleContext(i); + } + public ClassSeqContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_classSeq; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitClassSeq(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public ClassSeqContext classSeq() { + ClassSeqContext _localctx = new ClassSeqContext(Context, State); + EnterRule(_localctx, 328, RULE_classSeq); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 2605; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + while (_la==T__37 || _la==T__40 || _la==T__110 || _la==NULLREF || ((((_la - 259)) & ~0x3f) == 0 && ((1L << (_la - 259)) & 6442450951L) != 0)) { + { + { + State = 2602; + classSeqElement(); + } + } + State = 2607; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class ClassSeqElementContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode NULLREF() { return GetToken(CILParser.NULLREF, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode SQSTRING() { return GetToken(CILParser.SQSTRING, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ClassNameContext className() { + return GetRuleContext(0); + } + public ClassSeqElementContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_classSeqElement; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitClassSeqElement(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public ClassSeqElementContext classSeqElement() { + ClassSeqElementContext _localctx = new ClassSeqElementContext(Context, State); + EnterRule(_localctx, 330, RULE_classSeqElement); + try { + State = 2612; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case NULLREF: + EnterOuterAlt(_localctx, 1); + { + State = 2608; + Match(NULLREF); + } + break; + case T__37: + EnterOuterAlt(_localctx, 2); + { + State = 2609; + Match(T__37); + State = 2610; + Match(SQSTRING); + } + break; + case T__40: + case T__110: + case THIS: + case BASE: + case NESTER: + case DOTTEDNAME: + case ID: + EnterOuterAlt(_localctx, 3); + { + State = 2611; + className(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class ObjSeqContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public SerInitContext[] serInit() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public SerInitContext serInit(int i) { + return GetRuleContext(i); + } + public ObjSeqContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_objSeq; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitObjSeq(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public ObjSeqContext objSeq() { + ObjSeqContext _localctx = new ObjSeqContext(Context, State); + EnterRule(_localctx, 332, RULE_objSeq); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 2617; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + while (_la==T__82 || ((((_la - 178)) & ~0x3f) == 0 && ((1L << (_la - 178)) & 106495L) != 0)) { + { + { + State = 2614; + serInit(); + } + } + State = 2619; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class CustomAttrDeclContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public CustomDescrContext customDescr() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public CustomDescrWithOwnerContext customDescrWithOwner() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public DottedNameContext dottedName() { + return GetRuleContext(0); + } + public CustomAttrDeclContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_customAttrDecl; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitCustomAttrDecl(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public CustomAttrDeclContext customAttrDecl() { + CustomAttrDeclContext _localctx = new CustomAttrDeclContext(Context, State); + EnterRule(_localctx, 334, RULE_customAttrDecl); + try { + State = 2623; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,152,Context) ) { + case 1: + EnterOuterAlt(_localctx, 1); + { + State = 2620; + customDescr(); + } + break; + case 2: + EnterOuterAlt(_localctx, 2); + { + State = 2621; + customDescrWithOwner(); + } + break; + case 3: + EnterOuterAlt(_localctx, 3); + { + State = 2622; + dottedName(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class AsmOrRefDeclContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public BytesContext bytes() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public IntOrWildcardContext[] intOrWildcard() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public IntOrWildcardContext intOrWildcard(int i) { + return GetRuleContext(i); + } + [System.Diagnostics.DebuggerNonUserCode] public CompQstringContext compQstring() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public CustomAttrDeclContext customAttrDecl() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public CompControlContext compControl() { + return GetRuleContext(0); + } + public AsmOrRefDeclContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_asmOrRefDecl; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitAsmOrRefDecl(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public AsmOrRefDeclContext asmOrRefDecl() { + AsmOrRefDeclContext _localctx = new AsmOrRefDeclContext(Context, State); + EnterRule(_localctx, 336, RULE_asmOrRefDecl); + try { + State = 2650; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,153,Context) ) { + case 1: + EnterOuterAlt(_localctx, 1); + { + State = 2625; + Match(T__163); + State = 2626; + Match(T__34); + State = 2627; + Match(T__28); + State = 2628; + bytes(); + State = 2629; + Match(T__29); + } + break; + case 2: + EnterOuterAlt(_localctx, 2); + { + State = 2631; + Match(T__164); + State = 2632; + intOrWildcard(); + State = 2633; + Match(T__73); + State = 2634; + intOrWildcard(); + State = 2635; + Match(T__73); + State = 2636; + intOrWildcard(); + State = 2637; + Match(T__73); + State = 2638; + intOrWildcard(); + } + break; + case 3: + EnterOuterAlt(_localctx, 3); + { + State = 2640; + Match(T__165); + State = 2641; + compQstring(); + } + break; + case 4: + EnterOuterAlt(_localctx, 4); + { + State = 2642; + Match(T__165); + State = 2643; + Match(T__34); + State = 2644; + Match(T__28); + State = 2645; + bytes(); + State = 2646; + Match(T__29); + } + break; + case 5: + EnterOuterAlt(_localctx, 5); + { + State = 2648; + customAttrDecl(); + } + break; + case 6: + EnterOuterAlt(_localctx, 6); + { + State = 2649; + compControl(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class AssemblyRefHeadContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public AsmAttrContext asmAttr() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public DottedNameContext[] dottedName() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public DottedNameContext dottedName(int i) { + return GetRuleContext(i); + } + public AssemblyRefHeadContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_assemblyRefHead; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitAssemblyRefHead(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public AssemblyRefHeadContext assemblyRefHead() { + AssemblyRefHeadContext _localctx = new AssemblyRefHeadContext(Context, State); + EnterRule(_localctx, 338, RULE_assemblyRefHead); + try { + State = 2664; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,154,Context) ) { + case 1: + EnterOuterAlt(_localctx, 1); + { + State = 2652; + Match(T__23); + State = 2653; + Match(T__38); + State = 2654; + asmAttr(); + State = 2655; + dottedName(); + } + break; + case 2: + EnterOuterAlt(_localctx, 2); + { + State = 2657; + Match(T__23); + State = 2658; + Match(T__38); + State = 2659; + asmAttr(); + State = 2660; + dottedName(); + State = 2661; + Match(T__32); + State = 2662; + dottedName(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class AssemblyRefDeclsContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public AssemblyRefDeclContext[] assemblyRefDecl() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public AssemblyRefDeclContext assemblyRefDecl(int i) { + return GetRuleContext(i); + } + public AssemblyRefDeclsContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_assemblyRefDecls; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitAssemblyRefDecls(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public AssemblyRefDeclsContext assemblyRefDecls() { + AssemblyRefDeclsContext _localctx = new AssemblyRefDeclsContext(Context, State); + EnterRule(_localctx, 340, RULE_assemblyRefDecls); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 2669; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + while ((((_la) & ~0x3f) == 0 && ((1L << _la) & 18014417836834816L) != 0) || ((((_la - 164)) & ~0x3f) == 0 && ((1L << (_la - 164)) & 8207L) != 0) || ((((_la - 269)) & ~0x3f) == 0 && ((1L << (_la - 269)) & 6291583L) != 0)) { + { + { + State = 2666; + assemblyRefDecl(); + } + } + State = 2671; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class AssemblyRefDeclContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode HASH() { return GetToken(CILParser.HASH, 0); } + [System.Diagnostics.DebuggerNonUserCode] public BytesContext bytes() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public AsmOrRefDeclContext asmOrRefDecl() { + return GetRuleContext(0); + } + public AssemblyRefDeclContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_assemblyRefDecl; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitAssemblyRefDecl(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public AssemblyRefDeclContext assemblyRefDecl() { + AssemblyRefDeclContext _localctx = new AssemblyRefDeclContext(Context, State); + EnterRule(_localctx, 342, RULE_assemblyRefDecl); + try { + State = 2686; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case HASH: + EnterOuterAlt(_localctx, 1); + { + State = 2672; + Match(HASH); + State = 2673; + Match(T__34); + State = 2674; + Match(T__28); + State = 2675; + bytes(); + State = 2676; + Match(T__29); + } + break; + case T__30: + case T__33: + case T__163: + case T__164: + case T__165: + case PP_DEFINE: + case PP_UNDEF: + case PP_IFDEF: + case PP_IFNDEF: + case PP_ELSE: + case PP_ENDIF: + case PP_INCLUDE: + case DOTTEDNAME: + case ID: + EnterOuterAlt(_localctx, 2); + { + State = 2678; + asmOrRefDecl(); + } + break; + case T__166: + EnterOuterAlt(_localctx, 3); + { + State = 2679; + Match(T__166); + State = 2680; + Match(T__34); + State = 2681; + Match(T__28); + State = 2682; + bytes(); + State = 2683; + Match(T__29); + } + break; + case T__53: + EnterOuterAlt(_localctx, 4); + { + State = 2685; + Match(T__53); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class ExptypeHeadContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public DottedNameContext dottedName() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ExptAttrContext[] exptAttr() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public ExptAttrContext exptAttr(int i) { + return GetRuleContext(i); + } + public ExptypeHeadContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_exptypeHead; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitExptypeHead(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public ExptypeHeadContext exptypeHead() { + ExptypeHeadContext _localctx = new ExptypeHeadContext(Context, State); + EnterRule(_localctx, 344, RULE_exptypeHead); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 2688; + Match(T__48); + State = 2689; + Match(T__38); + State = 2693; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + while ((((_la) & ~0x3f) == 0 && ((1L << _la) & 2309220708934221824L) != 0) || _la==T__167) { + { + { + State = 2690; + exptAttr(); + } + } + State = 2695; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + } + State = 2696; + dottedName(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class ExportHeadContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode EXPORT() { return GetToken(CILParser.EXPORT, 0); } + [System.Diagnostics.DebuggerNonUserCode] public DottedNameContext dottedName() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public ExptAttrContext[] exptAttr() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public ExptAttrContext exptAttr(int i) { + return GetRuleContext(i); + } + public ExportHeadContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_exportHead; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitExportHead(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public ExportHeadContext exportHead() { + ExportHeadContext _localctx = new ExportHeadContext(Context, State); + EnterRule(_localctx, 346, RULE_exportHead); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 2698; + Match(EXPORT); + State = 2702; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + while ((((_la) & ~0x3f) == 0 && ((1L << _la) & 2309220708934221824L) != 0) || _la==T__167) { + { + { + State = 2699; + exptAttr(); + } + } + State = 2704; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + } + State = 2705; + dottedName(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class ExptAttrContext : ParserRuleContext { + public ExptAttrContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_exptAttr; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitExptAttr(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public ExptAttrContext exptAttr() { + ExptAttrContext _localctx = new ExptAttrContext(Context, State); + EnterRule(_localctx, 348, RULE_exptAttr); + try { + State = 2722; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,159,Context) ) { + case 1: + EnterOuterAlt(_localctx, 1); + { + State = 2707; + Match(T__50); + } + break; + case 2: + EnterOuterAlt(_localctx, 2); + { + State = 2708; + Match(T__49); + } + break; + case 3: + EnterOuterAlt(_localctx, 3); + { + State = 2709; + Match(T__167); + } + break; + case 4: + EnterOuterAlt(_localctx, 4); + { + State = 2710; + Match(T__60); + State = 2711; + Match(T__49); + } + break; + case 5: + EnterOuterAlt(_localctx, 5); + { + State = 2712; + Match(T__60); + State = 2713; + Match(T__50); + } + break; + case 6: + EnterOuterAlt(_localctx, 6); + { + State = 2714; + Match(T__60); + State = 2715; + Match(T__61); + } + break; + case 7: + EnterOuterAlt(_localctx, 7); + { + State = 2716; + Match(T__60); + State = 2717; + Match(T__62); + } + break; + case 8: + EnterOuterAlt(_localctx, 8); + { + State = 2718; + Match(T__60); + State = 2719; + Match(T__63); + } + break; + case 9: + EnterOuterAlt(_localctx, 9); + { + State = 2720; + Match(T__60); + State = 2721; + Match(T__64); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class ExptypeDeclsContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ExptypeDeclContext[] exptypeDecl() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public ExptypeDeclContext exptypeDecl(int i) { + return GetRuleContext(i); + } + public ExptypeDeclsContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_exptypeDecls; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitExptypeDecls(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public ExptypeDeclsContext exptypeDecls() { + ExptypeDeclsContext _localctx = new ExptypeDeclsContext(Context, State); + EnterRule(_localctx, 350, RULE_exptypeDecls); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 2727; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + while ((((_la) & ~0x3f) == 0 && ((1L << _la) & 562969298599936L) != 0) || _la==T__110 || ((((_la - 269)) & ~0x3f) == 0 && ((1L << (_la - 269)) & 6291583L) != 0)) { + { + { + State = 2724; + exptypeDecl(); + } + } + State = 2729; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class ExptypeDeclContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public DottedNameContext dottedName() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public SlashedNameContext slashedName() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public MdtokenContext mdtoken() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public Int32Context int32() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public CustomAttrDeclContext customAttrDecl() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public CompControlContext compControl() { + return GetRuleContext(0); + } + public ExptypeDeclContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_exptypeDecl; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitExptypeDecl(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public ExptypeDeclContext exptypeDecl() { + ExptypeDeclContext _localctx = new ExptypeDeclContext(Context, State); + EnterRule(_localctx, 352, RULE_exptypeDecl); + try { + State = 2743; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,161,Context) ) { + case 1: + EnterOuterAlt(_localctx, 1); + { + State = 2730; + Match(T__19); + State = 2731; + dottedName(); + } + break; + case 2: + EnterOuterAlt(_localctx, 2); + { + State = 2732; + Match(T__48); + State = 2733; + Match(T__38); + State = 2734; + slashedName(); + } + break; + case 3: + EnterOuterAlt(_localctx, 3); + { + State = 2735; + Match(T__23); + State = 2736; + Match(T__38); + State = 2737; + dottedName(); + } + break; + case 4: + EnterOuterAlt(_localctx, 4); + { + State = 2738; + mdtoken(); + } + break; + case 5: + EnterOuterAlt(_localctx, 5); + { + State = 2739; + Match(T__48); + State = 2740; + int32(); + } + break; + case 6: + EnterOuterAlt(_localctx, 6); + { + State = 2741; + customAttrDecl(); + } + break; + case 7: + EnterOuterAlt(_localctx, 7); + { + State = 2742; + compControl(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class ManifestResHeadContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode MRESOURCE() { return GetToken(CILParser.MRESOURCE, 0); } + [System.Diagnostics.DebuggerNonUserCode] public DottedNameContext[] dottedName() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public DottedNameContext dottedName(int i) { + return GetRuleContext(i); + } + [System.Diagnostics.DebuggerNonUserCode] public ManresAttrContext[] manresAttr() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public ManresAttrContext manresAttr(int i) { + return GetRuleContext(i); + } + public ManifestResHeadContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_manifestResHead; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitManifestResHead(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public ManifestResHeadContext manifestResHead() { + ManifestResHeadContext _localctx = new ManifestResHeadContext(Context, State); + EnterRule(_localctx, 354, RULE_manifestResHead); + int _la; + try { + State = 2764; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,164,Context) ) { + case 1: + EnterOuterAlt(_localctx, 1); + { + State = 2745; + Match(MRESOURCE); + State = 2749; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + while (_la==T__49 || _la==T__50) { + { + { + State = 2746; + manresAttr(); + } + } + State = 2751; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + } + State = 2752; + dottedName(); + } + break; + case 2: + EnterOuterAlt(_localctx, 2); + { + State = 2753; + Match(MRESOURCE); + State = 2757; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + while (_la==T__49 || _la==T__50) { + { + { + State = 2754; + manresAttr(); + } + } + State = 2759; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + } + State = 2760; + dottedName(); + State = 2761; + Match(T__32); + State = 2762; + dottedName(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class ManresAttrContext : ParserRuleContext { + public ManresAttrContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_manresAttr; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitManresAttr(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public ManresAttrContext manresAttr() { + ManresAttrContext _localctx = new ManresAttrContext(Context, State); + EnterRule(_localctx, 356, RULE_manresAttr); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 2766; + _la = TokenStream.LA(1); + if ( !(_la==T__49 || _la==T__50) ) { + ErrorHandler.RecoverInline(this); + } + else { + ErrorHandler.ReportMatch(this); + Consume(); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class ManifestResDeclsContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ManifestResDeclContext[] manifestResDecl() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public ManifestResDeclContext manifestResDecl(int i) { + return GetRuleContext(i); + } + public ManifestResDeclsContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_manifestResDecls; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitManifestResDecls(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public ManifestResDeclsContext manifestResDecls() { + ManifestResDeclsContext _localctx = new ManifestResDeclsContext(Context, State); + EnterRule(_localctx, 358, RULE_manifestResDecls); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 2771; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + while ((((_la) & ~0x3f) == 0 && ((1L << _la) & 19345178624L) != 0) || ((((_la - 269)) & ~0x3f) == 0 && ((1L << (_la - 269)) & 6291583L) != 0)) { + { + { + State = 2768; + manifestResDecl(); + } + } + State = 2773; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class ManifestResDeclContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public DottedNameContext dottedName() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public Int32Context int32() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public CustomAttrDeclContext customAttrDecl() { + return GetRuleContext(0); + } + [System.Diagnostics.DebuggerNonUserCode] public CompControlContext compControl() { + return GetRuleContext(0); + } + public ManifestResDeclContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_manifestResDecl; } } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ICILVisitor typedVisitor = visitor as ICILVisitor; + if (typedVisitor != null) return typedVisitor.VisitManifestResDecl(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public ManifestResDeclContext manifestResDecl() { + ManifestResDeclContext _localctx = new ManifestResDeclContext(Context, State); + EnterRule(_localctx, 360, RULE_manifestResDecl); + try { + State = 2784; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case T__19: + EnterOuterAlt(_localctx, 1); + { + State = 2774; + Match(T__19); + State = 2775; + dottedName(); + State = 2776; + Match(T__42); + State = 2777; + int32(); + } + break; + case T__23: + EnterOuterAlt(_localctx, 2); + { + State = 2779; + Match(T__23); + State = 2780; + Match(T__38); + State = 2781; + dottedName(); + } + break; + case T__33: + case DOTTEDNAME: + case ID: + EnterOuterAlt(_localctx, 3); + { + State = 2782; + customAttrDecl(); + } + break; + case T__30: + case PP_DEFINE: + case PP_UNDEF: + case PP_IFDEF: + case PP_IFNDEF: + case PP_ELSE: + case PP_ENDIF: + case PP_INCLUDE: + EnterOuterAlt(_localctx, 4); + { + State = 2783; + compControl(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public override bool Sempred(RuleContext _localctx, int ruleIndex, int predIndex) { + switch (ruleIndex) { + case 32: return vtfixupAttr_sempred((VtfixupAttrContext)_localctx, predIndex); + } + return true; + } + private bool vtfixupAttr_sempred(VtfixupAttrContext _localctx, int predIndex) { + switch (predIndex) { + case 0: return Precpred(Context, 5); + case 1: return Precpred(Context, 4); + case 2: return Precpred(Context, 3); + case 3: return Precpred(Context, 2); + case 4: return Precpred(Context, 1); + } + return true; + } + + private static int[] _serializedATN = { + 4,1,306,2787,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7,6,2, + 7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12,2,13,7,13,2,14,7,14, + 2,15,7,15,2,16,7,16,2,17,7,17,2,18,7,18,2,19,7,19,2,20,7,20,2,21,7,21, + 2,22,7,22,2,23,7,23,2,24,7,24,2,25,7,25,2,26,7,26,2,27,7,27,2,28,7,28, + 2,29,7,29,2,30,7,30,2,31,7,31,2,32,7,32,2,33,7,33,2,34,7,34,2,35,7,35, + 2,36,7,36,2,37,7,37,2,38,7,38,2,39,7,39,2,40,7,40,2,41,7,41,2,42,7,42, + 2,43,7,43,2,44,7,44,2,45,7,45,2,46,7,46,2,47,7,47,2,48,7,48,2,49,7,49, + 2,50,7,50,2,51,7,51,2,52,7,52,2,53,7,53,2,54,7,54,2,55,7,55,2,56,7,56, + 2,57,7,57,2,58,7,58,2,59,7,59,2,60,7,60,2,61,7,61,2,62,7,62,2,63,7,63, + 2,64,7,64,2,65,7,65,2,66,7,66,2,67,7,67,2,68,7,68,2,69,7,69,2,70,7,70, + 2,71,7,71,2,72,7,72,2,73,7,73,2,74,7,74,2,75,7,75,2,76,7,76,2,77,7,77, + 2,78,7,78,2,79,7,79,2,80,7,80,2,81,7,81,2,82,7,82,2,83,7,83,2,84,7,84, + 2,85,7,85,2,86,7,86,2,87,7,87,2,88,7,88,2,89,7,89,2,90,7,90,2,91,7,91, + 2,92,7,92,2,93,7,93,2,94,7,94,2,95,7,95,2,96,7,96,2,97,7,97,2,98,7,98, + 2,99,7,99,2,100,7,100,2,101,7,101,2,102,7,102,2,103,7,103,2,104,7,104, + 2,105,7,105,2,106,7,106,2,107,7,107,2,108,7,108,2,109,7,109,2,110,7,110, + 2,111,7,111,2,112,7,112,2,113,7,113,2,114,7,114,2,115,7,115,2,116,7,116, + 2,117,7,117,2,118,7,118,2,119,7,119,2,120,7,120,2,121,7,121,2,122,7,122, + 2,123,7,123,2,124,7,124,2,125,7,125,2,126,7,126,2,127,7,127,2,128,7,128, + 2,129,7,129,2,130,7,130,2,131,7,131,2,132,7,132,2,133,7,133,2,134,7,134, + 2,135,7,135,2,136,7,136,2,137,7,137,2,138,7,138,2,139,7,139,2,140,7,140, + 2,141,7,141,2,142,7,142,2,143,7,143,2,144,7,144,2,145,7,145,2,146,7,146, + 2,147,7,147,2,148,7,148,2,149,7,149,2,150,7,150,2,151,7,151,2,152,7,152, + 2,153,7,153,2,154,7,154,2,155,7,155,2,156,7,156,2,157,7,157,2,158,7,158, + 2,159,7,159,2,160,7,160,2,161,7,161,2,162,7,162,2,163,7,163,2,164,7,164, + 2,165,7,165,2,166,7,166,2,167,7,167,2,168,7,168,2,169,7,169,2,170,7,170, + 2,171,7,171,2,172,7,172,2,173,7,173,2,174,7,174,2,175,7,175,2,176,7,176, + 2,177,7,177,2,178,7,178,2,179,7,179,2,180,7,180,1,0,1,0,1,1,1,1,1,1,5, + 1,368,8,1,10,1,12,1,371,9,1,1,1,3,1,374,8,1,1,2,1,2,5,2,378,8,2,10,2,12, + 2,381,9,2,1,2,1,2,1,3,4,3,386,8,3,11,3,12,3,387,1,4,1,4,1,4,1,4,1,4,1, + 4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4, + 1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1, + 4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,3,4,440,8,4,1,5,1,5,1,5,1,6,1,6, + 1,6,1,7,1,7,1,7,1,7,1,8,1,8,1,8,1,9,1,9,1,9,1,10,1,10,1,10,1,10,1,10,1, + 10,1,10,1,11,1,11,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1, + 12,1,12,3,12,479,8,12,1,13,1,13,1,13,5,13,484,8,13,10,13,12,13,487,9,13, + 1,13,1,13,1,14,1,14,1,15,1,15,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16, + 1,16,1,16,1,16,3,16,506,8,16,1,17,1,17,3,17,510,8,17,1,18,1,18,1,18,1, + 18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,3,18,528, + 8,18,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19, + 1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,3,19,555,8, + 19,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1, + 20,1,20,1,20,1,20,1,20,1,20,1,20,1,20,3,20,578,8,20,1,21,1,21,1,21,1,21, + 1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21, + 1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21, + 1,21,1,21,3,21,614,8,21,1,22,1,22,1,23,1,23,3,23,620,8,23,1,24,1,24,1, + 24,1,25,1,25,5,25,627,8,25,10,25,12,25,630,9,25,1,26,1,26,1,26,1,26,1, + 26,1,26,1,26,5,26,639,8,26,10,26,12,26,642,9,26,1,27,1,27,1,28,1,28,3, + 28,648,8,28,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,3,29,659,8,29, + 1,30,1,30,1,30,1,30,1,30,1,30,3,30,667,8,30,1,31,1,31,1,31,1,31,1,31,1, + 31,1,31,1,31,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1,32,5, + 32,688,8,32,10,32,12,32,691,9,32,1,33,1,33,1,33,1,33,1,33,1,33,1,34,1, + 34,1,34,1,35,1,35,5,35,704,8,35,10,35,12,35,707,9,35,1,35,1,35,1,35,1, + 35,1,35,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1, + 36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1, + 36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,3,36,751,8,36,1,37, + 1,37,1,37,3,37,756,8,37,1,38,1,38,1,38,3,38,761,8,38,1,39,5,39,764,8,39, + 10,39,12,39,767,9,39,1,40,1,40,1,40,5,40,772,8,40,10,40,12,40,775,9,40, + 1,40,1,40,1,41,1,41,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42, + 1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42, + 1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42, + 1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42, + 1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42, + 1,42,1,42,1,42,1,42,1,42,3,42,852,8,42,1,43,1,43,5,43,856,8,43,10,43,12, + 43,859,9,43,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1,43,5,43, + 872,8,43,10,43,12,43,875,9,43,1,43,1,43,1,43,3,43,880,8,43,1,44,1,44,1, + 45,1,45,3,45,886,8,45,1,46,1,46,1,47,5,47,891,8,47,10,47,12,47,894,9,47, + 1,48,1,48,1,49,1,49,1,50,1,50,1,51,1,51,1,52,1,52,1,53,1,53,1,54,1,54, + 1,55,1,55,1,56,1,56,1,57,1,57,1,58,1,58,1,59,1,59,1,60,1,60,1,61,1,61, + 1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,61, + 1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,61, + 1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,61, + 1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,61, + 1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,61, + 1,61,1,61,1,61,1,61,3,61,998,8,61,1,62,1,62,1,62,1,62,1,62,5,62,1005,8, + 62,10,62,12,62,1008,9,62,1,62,1,62,3,62,1012,8,62,3,62,1014,8,62,1,63, + 1,63,1,63,1,63,5,63,1020,8,63,10,63,12,63,1023,9,63,1,63,1,63,1,63,1,64, + 1,64,1,64,1,64,5,64,1032,8,64,10,64,12,64,1035,9,64,1,64,1,64,1,64,1,65, + 1,65,1,65,1,65,5,65,1044,8,65,10,65,12,65,1047,9,65,1,65,1,65,1,65,1,65, + 3,65,1053,8,65,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,3,66, + 1065,8,66,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,67, + 1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,67,3,67, + 1092,8,67,1,68,1,68,1,68,5,68,1097,8,68,10,68,12,68,1100,9,68,1,68,1,68, + 1,69,5,69,1105,8,69,10,69,12,69,1108,9,69,1,70,1,70,1,70,1,70,1,70,3,70, + 1115,8,70,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,3,71, + 1128,8,71,1,72,1,72,1,72,5,72,1133,8,72,10,72,12,72,1136,9,72,3,72,1138, + 8,72,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73, + 1,73,1,73,1,73,1,73,3,73,1157,8,73,1,74,1,74,1,74,1,74,1,74,1,74,1,74, + 1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74, + 1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74, + 1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74, + 1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74, + 1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74, + 1,74,1,74,1,74,1,74,3,74,1240,8,74,1,75,1,75,1,75,1,75,1,75,1,75,1,75, + 3,75,1249,8,75,1,76,1,76,1,76,5,76,1254,8,76,10,76,12,76,1257,9,76,3,76, + 1259,8,76,1,77,1,77,1,78,1,78,5,78,1265,8,78,10,78,12,78,1268,9,78,1,79, + 1,79,1,79,1,79,1,79,1,79,1,79,1,79,1,79,1,79,1,79,1,79,1,79,1,79,1,79, + 1,79,1,79,3,79,1287,8,79,1,80,1,80,1,80,1,80,1,80,1,80,1,80,1,80,1,80, + 1,80,1,80,1,80,1,80,1,80,1,80,1,80,1,80,1,80,1,80,1,80,1,80,1,80,1,80, + 1,80,1,80,1,80,1,80,1,80,1,80,1,80,3,80,1319,8,80,1,81,1,81,1,82,1,82, + 1,82,1,82,1,82,1,82,1,82,1,82,1,82,1,82,3,82,1333,8,82,1,83,1,83,1,83, + 1,83,1,83,1,83,1,83,1,83,1,83,1,83,1,83,1,83,1,83,1,83,1,83,1,83,1,83, + 1,83,1,83,1,83,1,83,1,83,1,83,3,83,1358,8,83,1,83,1,83,1,83,1,83,1,83, + 1,83,1,83,1,83,1,83,1,83,1,83,1,83,1,83,1,83,1,83,3,83,1375,8,83,1,84, + 1,84,1,84,1,84,5,84,1381,8,84,10,84,12,84,1384,9,84,1,84,3,84,1387,8,84, + 1,85,1,85,1,85,1,85,1,85,1,85,1,85,1,85,1,85,1,85,1,85,1,85,1,85,3,85, + 1402,8,85,1,86,1,86,1,86,5,86,1407,8,86,10,86,12,86,1410,9,86,1,86,1,86, + 1,87,1,87,1,87,1,87,1,88,1,88,1,89,1,89,1,89,1,89,1,89,1,89,1,89,1,89, + 1,89,1,89,1,89,1,89,1,89,1,89,1,89,1,89,1,89,1,89,1,89,1,89,1,89,1,89, + 1,89,1,89,1,89,1,89,1,89,1,89,1,89,1,89,1,89,1,89,1,89,1,89,3,89,1454, + 8,89,1,90,1,90,1,91,1,91,1,91,1,91,1,91,1,91,3,91,1464,8,91,1,91,1,91, + 1,91,1,91,1,91,1,91,1,91,1,91,1,91,1,91,1,91,1,91,1,91,1,91,3,91,1480, + 8,91,1,91,1,91,1,91,1,91,1,91,1,91,1,91,1,91,1,91,1,91,3,91,1492,8,91, + 1,92,1,92,1,92,1,92,1,92,1,92,1,92,1,92,1,92,1,92,3,92,1504,8,92,1,93, + 1,93,1,93,1,93,1,93,1,93,1,93,1,93,1,93,1,93,1,93,1,93,3,93,1518,8,93, + 1,94,1,94,1,94,1,94,1,94,1,95,1,95,1,95,1,95,1,95,3,95,1530,8,95,1,96, + 1,96,1,96,1,96,1,96,1,96,1,96,1,96,1,96,3,96,1541,8,96,1,97,1,97,1,97, + 5,97,1546,8,97,10,97,12,97,1549,9,97,1,97,1,97,1,98,1,98,1,98,1,98,1,98, + 3,98,1558,8,98,1,99,1,99,1,99,1,99,1,99,1,99,1,99,1,99,1,99,1,99,1,99, + 3,99,1571,8,99,1,100,5,100,1574,8,100,10,100,12,100,1577,9,100,1,101,1, + 101,3,101,1581,8,101,1,101,1,101,1,102,1,102,1,102,5,102,1588,8,102,10, + 102,12,102,1591,9,102,1,102,1,102,1,103,1,103,1,103,1,103,1,104,1,104, + 3,104,1601,8,104,1,105,1,105,1,105,1,105,1,105,1,105,1,106,1,106,1,106, + 1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106, + 1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106, + 1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106, + 1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106, + 1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106, + 1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,5,106,1682, + 8,106,10,106,12,106,1685,9,106,1,106,1,106,1,106,1,106,5,106,1691,8,106, + 10,106,12,106,1694,9,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106, + 5,106,1704,8,106,10,106,12,106,1707,9,106,1,106,1,106,1,106,1,106,1,106, + 1,106,5,106,1715,8,106,10,106,12,106,1718,9,106,1,106,1,106,1,106,1,106, + 1,106,3,106,1725,8,106,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107, + 5,107,1735,8,107,10,107,12,107,1738,9,107,1,107,1,107,1,107,1,107,1,107, + 1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108, + 1,108,1,108,1,108,1,108,1,108,1,108,3,108,1763,8,108,1,109,1,109,1,109, + 3,109,1768,8,109,1,110,1,110,1,110,3,110,1773,8,110,1,111,1,111,1,111, + 1,111,1,111,3,111,1780,8,111,1,112,1,112,5,112,1784,8,112,10,112,12,112, + 1787,9,112,1,112,1,112,1,112,1,112,1,112,5,112,1794,8,112,10,112,12,112, + 1797,9,112,1,112,3,112,1800,8,112,1,113,1,113,1,114,5,114,1805,8,114,10, + 114,12,114,1808,9,114,1,115,1,115,1,115,1,115,1,115,1,115,1,115,1,115, + 1,115,1,115,1,115,1,115,3,115,1822,8,115,1,116,1,116,5,116,1826,8,116, + 10,116,12,116,1829,9,116,1,116,1,116,1,116,1,116,1,116,1,116,1,117,1,117, + 1,118,5,118,1840,8,118,10,118,12,118,1843,9,118,1,119,1,119,1,119,1,119, + 1,119,1,119,1,119,1,119,1,119,1,119,3,119,1855,8,119,1,120,1,120,1,120, + 1,120,1,120,1,120,3,120,1863,8,120,1,121,1,121,1,121,1,121,1,121,3,121, + 1870,8,121,1,122,5,122,1873,8,122,10,122,12,122,1876,9,122,1,123,1,123, + 1,123,1,123,1,123,1,123,1,123,1,123,1,123,1,123,1,123,1,123,1,123,3,123, + 1891,8,123,1,124,1,124,1,124,5,124,1896,8,124,10,124,12,124,1899,9,124, + 1,124,1,124,1,124,1,124,1,124,1,124,1,124,1,124,5,124,1909,8,124,10,124, + 12,124,1912,9,124,1,125,1,125,1,125,1,125,1,125,1,125,1,125,1,125,1,125, + 1,125,1,125,1,125,1,125,1,125,1,125,1,125,1,125,1,125,1,125,1,125,1,125, + 1,125,1,125,3,125,1937,8,125,1,126,1,126,1,126,1,126,1,126,3,126,1944, + 8,126,3,126,1946,8,126,1,126,5,126,1949,8,126,10,126,12,126,1952,9,126, + 1,126,1,126,1,127,1,127,1,127,1,127,1,127,1,127,1,127,1,127,1,127,1,127, + 1,127,1,127,1,127,1,127,1,127,1,127,1,127,1,127,1,127,1,127,1,127,1,127, + 1,127,1,127,1,127,1,127,1,127,3,127,1983,8,127,1,128,1,128,1,128,3,128, + 1988,8,128,1,129,1,129,1,129,1,129,1,129,1,129,1,129,1,129,1,129,1,129, + 1,129,1,129,1,129,1,129,1,129,1,129,1,129,1,129,1,129,1,129,3,129,2010, + 8,129,1,130,5,130,2013,8,130,10,130,12,130,2016,9,130,1,131,1,131,1,131, + 1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131, + 1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131, + 1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131, + 1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131, + 1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131,5,131,2077,8,131,10,131, + 12,131,2080,9,131,1,131,1,131,1,131,1,131,5,131,2086,8,131,10,131,12,131, + 2089,9,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131,5,131,2099, + 8,131,10,131,12,131,2102,9,131,1,131,1,131,1,131,1,131,1,131,1,131,5,131, + 2110,8,131,10,131,12,131,2113,9,131,1,131,1,131,1,131,1,131,1,131,1,131, + 5,131,2121,8,131,10,131,12,131,2124,9,131,3,131,2126,8,131,1,132,1,132, + 1,132,1,133,1,133,3,133,2133,8,133,1,134,1,134,1,134,1,134,1,135,1,135, + 1,135,1,136,4,136,2143,8,136,11,136,12,136,2144,1,137,1,137,1,137,1,137, + 1,137,1,137,1,137,1,137,1,137,1,137,1,137,1,137,3,137,2159,8,137,1,138, + 1,138,1,138,1,138,1,138,1,138,1,138,1,138,1,138,1,138,1,138,1,138,3,138, + 2173,8,138,1,139,1,139,1,139,1,139,1,139,1,139,3,139,2181,8,139,1,140, + 1,140,1,140,1,141,1,141,1,142,1,142,1,143,1,143,1,143,1,143,1,143,1,143, + 1,143,1,143,1,143,1,143,1,143,3,143,2201,8,143,1,144,1,144,1,144,1,145, + 1,145,1,145,1,145,1,145,1,145,1,145,3,145,2213,8,145,1,146,1,146,1,146, + 3,146,2218,8,146,1,147,1,147,1,147,1,147,1,147,3,147,2225,8,147,1,148, + 1,148,1,148,5,148,2230,8,148,10,148,12,148,2233,9,148,1,148,1,148,1,149, + 1,149,1,149,1,149,1,149,3,149,2242,8,149,1,150,1,150,1,150,1,150,1,150, + 1,150,1,150,1,150,1,150,1,150,1,150,1,150,1,150,1,150,1,150,1,150,1,150, + 1,150,1,150,1,150,1,150,1,150,1,150,1,150,1,150,1,150,1,150,1,150,1,150, + 1,150,1,150,1,150,1,150,1,150,1,150,1,150,1,150,1,150,1,150,1,150,1,150, + 1,150,1,150,1,150,1,150,1,150,1,150,1,150,1,150,1,150,1,150,1,150,1,150, + 1,150,1,150,1,150,1,150,1,150,1,150,1,150,1,150,1,150,1,150,1,150,3,150, + 2308,8,150,1,151,1,151,1,151,1,151,1,151,1,151,1,151,1,151,1,151,1,151, + 1,151,1,151,1,151,1,151,1,151,1,151,1,151,1,151,1,151,1,151,1,151,1,151, + 1,151,1,151,1,151,1,151,1,151,1,151,1,151,1,151,1,151,1,151,1,151,1,151, + 1,151,1,151,1,151,1,151,1,151,1,151,1,151,1,151,1,151,1,151,1,151,1,151, + 1,151,1,151,1,151,1,151,1,151,1,151,1,151,1,151,1,151,1,151,1,151,1,151, + 1,151,1,151,1,151,1,151,1,151,1,151,1,151,1,151,1,151,1,151,1,151,1,151, + 1,151,1,151,1,151,1,151,1,151,3,151,2385,8,151,1,152,5,152,2388,8,152, + 10,152,12,152,2391,9,152,1,153,4,153,2394,8,153,11,153,12,153,2395,1,154, + 1,154,1,154,3,154,2401,8,154,1,155,1,155,1,155,1,155,1,155,1,155,1,155, + 1,155,1,155,1,155,1,155,1,155,1,155,1,155,1,155,1,155,1,155,1,155,1,155, + 1,155,1,155,1,155,1,155,1,155,1,155,1,155,1,155,1,155,1,155,1,155,1,155, + 1,155,1,155,1,155,1,155,1,155,1,155,1,155,1,155,1,155,1,155,1,155,1,155, + 1,155,1,155,1,155,1,155,1,155,1,155,1,155,1,155,1,155,1,155,1,155,1,155, + 1,155,1,155,1,155,1,155,1,155,1,155,1,155,1,155,1,155,1,155,1,155,1,155, + 1,155,1,155,1,155,1,155,1,155,1,155,1,155,1,155,1,155,1,155,1,155,1,155, + 1,155,1,155,1,155,1,155,1,155,1,155,1,155,1,155,1,155,1,155,1,155,1,155, + 1,155,1,155,1,155,1,155,1,155,1,155,1,155,1,155,1,155,1,155,1,155,1,155, + 1,155,1,155,1,155,1,155,1,155,1,155,1,155,1,155,1,155,1,155,1,155,1,155, + 1,155,1,155,1,155,1,155,1,155,1,155,1,155,1,155,1,155,1,155,1,155,1,155, + 1,155,1,155,1,155,1,155,1,155,1,155,1,155,1,155,1,155,1,155,1,155,1,155, + 1,155,1,155,1,155,1,155,1,155,1,155,1,155,1,155,1,155,3,155,2551,8,155, + 1,156,1,156,5,156,2555,8,156,10,156,12,156,2558,9,156,1,157,1,157,5,157, + 2562,8,157,10,157,12,157,2565,9,157,1,158,5,158,2568,8,158,10,158,12,158, + 2571,9,158,1,159,5,159,2574,8,159,10,159,12,159,2577,9,159,1,160,5,160, + 2580,8,160,10,160,12,160,2583,9,160,1,161,5,161,2586,8,161,10,161,12,161, + 2589,9,161,1,162,5,162,2592,8,162,10,162,12,162,2595,9,162,1,163,5,163, + 2598,8,163,10,163,12,163,2601,9,163,1,164,5,164,2604,8,164,10,164,12,164, + 2607,9,164,1,165,1,165,1,165,1,165,3,165,2613,8,165,1,166,5,166,2616,8, + 166,10,166,12,166,2619,9,166,1,167,1,167,1,167,3,167,2624,8,167,1,168, + 1,168,1,168,1,168,1,168,1,168,1,168,1,168,1,168,1,168,1,168,1,168,1,168, + 1,168,1,168,1,168,1,168,1,168,1,168,1,168,1,168,1,168,1,168,1,168,1,168, + 3,168,2651,8,168,1,169,1,169,1,169,1,169,1,169,1,169,1,169,1,169,1,169, + 1,169,1,169,1,169,3,169,2665,8,169,1,170,5,170,2668,8,170,10,170,12,170, + 2671,9,170,1,171,1,171,1,171,1,171,1,171,1,171,1,171,1,171,1,171,1,171, + 1,171,1,171,1,171,1,171,3,171,2687,8,171,1,172,1,172,1,172,5,172,2692, + 8,172,10,172,12,172,2695,9,172,1,172,1,172,1,173,1,173,5,173,2701,8,173, + 10,173,12,173,2704,9,173,1,173,1,173,1,174,1,174,1,174,1,174,1,174,1,174, + 1,174,1,174,1,174,1,174,1,174,1,174,1,174,1,174,1,174,3,174,2723,8,174, + 1,175,5,175,2726,8,175,10,175,12,175,2729,9,175,1,176,1,176,1,176,1,176, + 1,176,1,176,1,176,1,176,1,176,1,176,1,176,1,176,1,176,3,176,2744,8,176, + 1,177,1,177,5,177,2748,8,177,10,177,12,177,2751,9,177,1,177,1,177,1,177, + 5,177,2756,8,177,10,177,12,177,2759,9,177,1,177,1,177,1,177,1,177,3,177, + 2765,8,177,1,178,1,178,1,179,5,179,2770,8,179,10,179,12,179,2773,9,179, + 1,180,1,180,1,180,1,180,1,180,1,180,1,180,1,180,1,180,1,180,3,180,2785, + 8,180,1,180,0,1,64,181,0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34, + 36,38,40,42,44,46,48,50,52,54,56,58,60,62,64,66,68,70,72,74,76,78,80,82, + 84,86,88,90,92,94,96,98,100,102,104,106,108,110,112,114,116,118,120,122, + 124,126,128,130,132,134,136,138,140,142,144,146,148,150,152,154,156,158, + 160,162,164,166,168,170,172,174,176,178,180,182,184,186,188,190,192,194, + 196,198,200,202,204,206,208,210,212,214,216,218,220,222,224,226,228,230, + 232,234,236,238,240,242,244,246,248,250,252,254,256,258,260,262,264,266, + 268,270,272,274,276,278,280,282,284,286,288,290,292,294,296,298,300,302, + 304,306,308,310,312,314,316,318,320,322,324,326,328,330,332,334,336,338, + 340,342,344,346,348,350,352,354,356,358,360,0,13,4,0,1,15,247,247,266, + 266,291,291,1,0,169,170,1,0,36,37,1,0,72,73,3,0,2,2,60,60,76,82,2,0,229, + 229,262,263,9,0,175,175,180,192,198,198,204,205,207,212,215,216,219,219, + 230,242,264,264,1,0,178,190,1,0,93,94,1,0,95,109,1,0,67,68,2,0,176,176, + 266,266,1,0,50,51,3170,0,362,1,0,0,0,2,373,1,0,0,0,4,379,1,0,0,0,6,385, + 1,0,0,0,8,439,1,0,0,0,10,441,1,0,0,0,12,444,1,0,0,0,14,447,1,0,0,0,16, + 451,1,0,0,0,18,454,1,0,0,0,20,457,1,0,0,0,22,464,1,0,0,0,24,478,1,0,0, + 0,26,480,1,0,0,0,28,490,1,0,0,0,30,492,1,0,0,0,32,505,1,0,0,0,34,509,1, + 0,0,0,36,527,1,0,0,0,38,554,1,0,0,0,40,577,1,0,0,0,42,613,1,0,0,0,44,615, + 1,0,0,0,46,619,1,0,0,0,48,621,1,0,0,0,50,628,1,0,0,0,52,640,1,0,0,0,54, + 643,1,0,0,0,56,645,1,0,0,0,58,658,1,0,0,0,60,666,1,0,0,0,62,668,1,0,0, + 0,64,676,1,0,0,0,66,692,1,0,0,0,68,698,1,0,0,0,70,701,1,0,0,0,72,750,1, + 0,0,0,74,755,1,0,0,0,76,760,1,0,0,0,78,765,1,0,0,0,80,773,1,0,0,0,82,778, + 1,0,0,0,84,851,1,0,0,0,86,879,1,0,0,0,88,881,1,0,0,0,90,885,1,0,0,0,92, + 887,1,0,0,0,94,892,1,0,0,0,96,895,1,0,0,0,98,897,1,0,0,0,100,899,1,0,0, + 0,102,901,1,0,0,0,104,903,1,0,0,0,106,905,1,0,0,0,108,907,1,0,0,0,110, + 909,1,0,0,0,112,911,1,0,0,0,114,913,1,0,0,0,116,915,1,0,0,0,118,917,1, + 0,0,0,120,919,1,0,0,0,122,997,1,0,0,0,124,1013,1,0,0,0,126,1015,1,0,0, + 0,128,1027,1,0,0,0,130,1052,1,0,0,0,132,1064,1,0,0,0,134,1091,1,0,0,0, + 136,1098,1,0,0,0,138,1106,1,0,0,0,140,1114,1,0,0,0,142,1127,1,0,0,0,144, + 1137,1,0,0,0,146,1156,1,0,0,0,148,1239,1,0,0,0,150,1248,1,0,0,0,152,1258, + 1,0,0,0,154,1260,1,0,0,0,156,1262,1,0,0,0,158,1286,1,0,0,0,160,1318,1, + 0,0,0,162,1320,1,0,0,0,164,1332,1,0,0,0,166,1374,1,0,0,0,168,1386,1,0, + 0,0,170,1401,1,0,0,0,172,1408,1,0,0,0,174,1413,1,0,0,0,176,1417,1,0,0, + 0,178,1453,1,0,0,0,180,1455,1,0,0,0,182,1491,1,0,0,0,184,1503,1,0,0,0, + 186,1517,1,0,0,0,188,1519,1,0,0,0,190,1529,1,0,0,0,192,1540,1,0,0,0,194, + 1547,1,0,0,0,196,1557,1,0,0,0,198,1570,1,0,0,0,200,1575,1,0,0,0,202,1578, + 1,0,0,0,204,1589,1,0,0,0,206,1594,1,0,0,0,208,1600,1,0,0,0,210,1602,1, + 0,0,0,212,1724,1,0,0,0,214,1726,1,0,0,0,216,1762,1,0,0,0,218,1767,1,0, + 0,0,220,1772,1,0,0,0,222,1779,1,0,0,0,224,1799,1,0,0,0,226,1801,1,0,0, + 0,228,1806,1,0,0,0,230,1821,1,0,0,0,232,1823,1,0,0,0,234,1836,1,0,0,0, + 236,1841,1,0,0,0,238,1854,1,0,0,0,240,1862,1,0,0,0,242,1869,1,0,0,0,244, + 1874,1,0,0,0,246,1890,1,0,0,0,248,1892,1,0,0,0,250,1936,1,0,0,0,252,1938, + 1,0,0,0,254,1982,1,0,0,0,256,1987,1,0,0,0,258,2009,1,0,0,0,260,2014,1, + 0,0,0,262,2125,1,0,0,0,264,2127,1,0,0,0,266,2132,1,0,0,0,268,2134,1,0, + 0,0,270,2138,1,0,0,0,272,2142,1,0,0,0,274,2158,1,0,0,0,276,2172,1,0,0, + 0,278,2180,1,0,0,0,280,2182,1,0,0,0,282,2185,1,0,0,0,284,2187,1,0,0,0, + 286,2200,1,0,0,0,288,2202,1,0,0,0,290,2212,1,0,0,0,292,2217,1,0,0,0,294, + 2224,1,0,0,0,296,2231,1,0,0,0,298,2241,1,0,0,0,300,2307,1,0,0,0,302,2384, + 1,0,0,0,304,2389,1,0,0,0,306,2393,1,0,0,0,308,2400,1,0,0,0,310,2550,1, + 0,0,0,312,2556,1,0,0,0,314,2563,1,0,0,0,316,2569,1,0,0,0,318,2575,1,0, + 0,0,320,2581,1,0,0,0,322,2587,1,0,0,0,324,2593,1,0,0,0,326,2599,1,0,0, + 0,328,2605,1,0,0,0,330,2612,1,0,0,0,332,2617,1,0,0,0,334,2623,1,0,0,0, + 336,2650,1,0,0,0,338,2664,1,0,0,0,340,2669,1,0,0,0,342,2686,1,0,0,0,344, + 2688,1,0,0,0,346,2698,1,0,0,0,348,2722,1,0,0,0,350,2727,1,0,0,0,352,2743, + 1,0,0,0,354,2764,1,0,0,0,356,2766,1,0,0,0,358,2771,1,0,0,0,360,2784,1, + 0,0,0,362,363,7,0,0,0,363,1,1,0,0,0,364,374,5,290,0,0,365,366,5,291,0, + 0,366,368,5,267,0,0,367,365,1,0,0,0,368,371,1,0,0,0,369,367,1,0,0,0,369, + 370,1,0,0,0,370,372,1,0,0,0,371,369,1,0,0,0,372,374,5,291,0,0,373,364, + 1,0,0,0,373,369,1,0,0,0,374,3,1,0,0,0,375,376,5,265,0,0,376,378,5,268, + 0,0,377,375,1,0,0,0,378,381,1,0,0,0,379,377,1,0,0,0,379,380,1,0,0,0,380, + 382,1,0,0,0,381,379,1,0,0,0,382,383,5,265,0,0,383,5,1,0,0,0,384,386,3, + 8,4,0,385,384,1,0,0,0,386,387,1,0,0,0,387,385,1,0,0,0,387,388,1,0,0,0, + 388,7,1,0,0,0,389,390,3,70,35,0,390,391,5,16,0,0,391,392,3,78,39,0,392, + 393,5,17,0,0,393,440,1,0,0,0,394,395,3,68,34,0,395,396,5,16,0,0,396,397, + 3,6,3,0,397,398,5,17,0,0,398,440,1,0,0,0,399,400,3,248,124,0,400,401,5, + 16,0,0,401,402,3,260,130,0,402,403,5,17,0,0,403,440,1,0,0,0,404,440,3, + 214,107,0,405,440,3,288,144,0,406,440,3,66,33,0,407,440,3,62,31,0,408, + 440,3,84,42,0,409,440,3,86,43,0,410,440,3,20,10,0,411,412,3,338,169,0, + 412,413,5,16,0,0,413,414,3,340,170,0,414,415,5,17,0,0,415,440,1,0,0,0, + 416,417,3,344,172,0,417,418,5,16,0,0,418,419,3,350,175,0,419,420,5,17, + 0,0,420,440,1,0,0,0,421,422,3,354,177,0,422,423,5,16,0,0,423,424,3,358, + 179,0,424,425,5,17,0,0,425,440,1,0,0,0,426,440,3,60,30,0,427,440,3,166, + 83,0,428,440,3,334,167,0,429,440,3,10,5,0,430,440,3,12,6,0,431,440,3,14, + 7,0,432,440,3,16,8,0,433,440,3,18,9,0,434,440,3,24,12,0,435,440,3,38,19, + 0,436,440,3,36,18,0,437,440,3,26,13,0,438,440,3,22,11,0,439,389,1,0,0, + 0,439,394,1,0,0,0,439,399,1,0,0,0,439,404,1,0,0,0,439,405,1,0,0,0,439, + 406,1,0,0,0,439,407,1,0,0,0,439,408,1,0,0,0,439,409,1,0,0,0,439,410,1, + 0,0,0,439,411,1,0,0,0,439,416,1,0,0,0,439,421,1,0,0,0,439,426,1,0,0,0, + 439,427,1,0,0,0,439,428,1,0,0,0,439,429,1,0,0,0,439,430,1,0,0,0,439,431, + 1,0,0,0,439,432,1,0,0,0,439,433,1,0,0,0,439,434,1,0,0,0,439,435,1,0,0, + 0,439,436,1,0,0,0,439,437,1,0,0,0,439,438,1,0,0,0,440,9,1,0,0,0,441,442, + 5,18,0,0,442,443,3,28,14,0,443,11,1,0,0,0,444,445,5,19,0,0,445,446,3,28, + 14,0,446,13,1,0,0,0,447,448,5,20,0,0,448,449,5,21,0,0,449,450,3,28,14, + 0,450,15,1,0,0,0,451,452,5,22,0,0,452,453,3,30,15,0,453,17,1,0,0,0,454, + 455,5,23,0,0,455,456,3,30,15,0,456,19,1,0,0,0,457,458,5,24,0,0,458,459, + 3,94,47,0,459,460,3,2,1,0,460,461,5,16,0,0,461,462,3,138,69,0,462,463, + 5,17,0,0,463,21,1,0,0,0,464,465,5,25,0,0,465,23,1,0,0,0,466,467,5,26,0, + 0,467,479,5,266,0,0,468,469,5,26,0,0,469,470,5,266,0,0,470,471,5,27,0, + 0,471,479,5,266,0,0,472,473,5,26,0,0,473,474,5,266,0,0,474,475,5,27,0, + 0,475,476,5,266,0,0,476,477,5,27,0,0,477,479,5,266,0,0,478,466,1,0,0,0, + 478,468,1,0,0,0,478,472,1,0,0,0,479,25,1,0,0,0,480,481,5,28,0,0,481,485, + 5,16,0,0,482,484,3,134,67,0,483,482,1,0,0,0,484,487,1,0,0,0,485,483,1, + 0,0,0,485,486,1,0,0,0,486,488,1,0,0,0,487,485,1,0,0,0,488,489,5,17,0,0, + 489,27,1,0,0,0,490,491,5,169,0,0,491,29,1,0,0,0,492,493,7,1,0,0,493,31, + 1,0,0,0,494,506,5,171,0,0,495,496,5,185,0,0,496,497,5,29,0,0,497,498,3, + 28,14,0,498,499,5,30,0,0,499,506,1,0,0,0,500,501,5,186,0,0,501,502,5,29, + 0,0,502,503,3,30,15,0,503,504,5,30,0,0,504,506,1,0,0,0,505,494,1,0,0,0, + 505,495,1,0,0,0,505,500,1,0,0,0,506,33,1,0,0,0,507,510,3,28,14,0,508,510, + 5,264,0,0,509,507,1,0,0,0,509,508,1,0,0,0,510,35,1,0,0,0,511,512,5,269, + 0,0,512,528,5,291,0,0,513,514,5,269,0,0,514,515,5,291,0,0,515,528,5,265, + 0,0,516,517,5,270,0,0,517,528,5,291,0,0,518,519,5,271,0,0,519,528,5,291, + 0,0,520,521,5,272,0,0,521,528,5,291,0,0,522,528,5,273,0,0,523,528,5,274, + 0,0,524,525,5,275,0,0,525,528,5,265,0,0,526,528,5,31,0,0,527,511,1,0,0, + 0,527,513,1,0,0,0,527,516,1,0,0,0,527,518,1,0,0,0,527,520,1,0,0,0,527, + 522,1,0,0,0,527,523,1,0,0,0,527,524,1,0,0,0,527,526,1,0,0,0,528,37,1,0, + 0,0,529,530,5,32,0,0,530,531,3,156,78,0,531,532,5,33,0,0,532,533,3,2,1, + 0,533,555,1,0,0,0,534,535,5,32,0,0,535,536,3,134,67,0,536,537,5,33,0,0, + 537,538,3,2,1,0,538,555,1,0,0,0,539,540,5,32,0,0,540,541,3,190,95,0,541, + 542,5,33,0,0,542,543,3,2,1,0,543,555,1,0,0,0,544,545,5,32,0,0,545,546, + 3,40,20,0,546,547,5,33,0,0,547,548,3,2,1,0,548,555,1,0,0,0,549,550,5,32, + 0,0,550,551,3,42,21,0,551,552,5,33,0,0,552,553,3,2,1,0,553,555,1,0,0,0, + 554,529,1,0,0,0,554,534,1,0,0,0,554,539,1,0,0,0,554,544,1,0,0,0,554,549, + 1,0,0,0,555,39,1,0,0,0,556,557,5,34,0,0,557,578,3,44,22,0,558,559,5,34, + 0,0,559,560,3,44,22,0,560,561,5,35,0,0,561,562,3,4,2,0,562,578,1,0,0,0, + 563,564,5,34,0,0,564,565,3,44,22,0,565,566,5,35,0,0,566,567,5,16,0,0,567, + 568,3,48,24,0,568,569,5,17,0,0,569,578,1,0,0,0,570,571,5,34,0,0,571,572, + 3,44,22,0,572,573,5,35,0,0,573,574,5,29,0,0,574,575,3,304,152,0,575,576, + 5,30,0,0,576,578,1,0,0,0,577,556,1,0,0,0,577,558,1,0,0,0,577,563,1,0,0, + 0,577,570,1,0,0,0,578,41,1,0,0,0,579,580,5,34,0,0,580,581,5,29,0,0,581, + 582,3,46,23,0,582,583,5,30,0,0,583,584,3,44,22,0,584,614,1,0,0,0,585,586, + 5,34,0,0,586,587,5,29,0,0,587,588,3,46,23,0,588,589,5,30,0,0,589,590,3, + 44,22,0,590,591,5,35,0,0,591,592,3,4,2,0,592,614,1,0,0,0,593,594,5,34, + 0,0,594,595,5,29,0,0,595,596,3,46,23,0,596,597,5,30,0,0,597,598,3,44,22, + 0,598,599,5,35,0,0,599,600,5,16,0,0,600,601,3,48,24,0,601,602,5,17,0,0, + 602,614,1,0,0,0,603,604,5,34,0,0,604,605,5,29,0,0,605,606,3,46,23,0,606, + 607,5,30,0,0,607,608,3,44,22,0,608,609,5,35,0,0,609,610,5,29,0,0,610,611, + 3,304,152,0,611,612,5,30,0,0,612,614,1,0,0,0,613,579,1,0,0,0,613,585,1, + 0,0,0,613,593,1,0,0,0,613,603,1,0,0,0,614,43,1,0,0,0,615,616,3,182,91, + 0,616,45,1,0,0,0,617,620,3,142,71,0,618,620,3,190,95,0,619,617,1,0,0,0, + 619,618,1,0,0,0,620,47,1,0,0,0,621,622,3,50,25,0,622,623,3,52,26,0,623, + 49,1,0,0,0,624,627,3,310,155,0,625,627,3,36,18,0,626,624,1,0,0,0,626,625, + 1,0,0,0,627,630,1,0,0,0,628,626,1,0,0,0,628,629,1,0,0,0,629,51,1,0,0,0, + 630,628,1,0,0,0,631,632,3,54,27,0,632,633,3,56,28,0,633,634,3,2,1,0,634, + 635,5,35,0,0,635,636,3,310,155,0,636,639,1,0,0,0,637,639,3,36,18,0,638, + 631,1,0,0,0,638,637,1,0,0,0,639,642,1,0,0,0,640,638,1,0,0,0,640,641,1, + 0,0,0,641,53,1,0,0,0,642,640,1,0,0,0,643,644,7,2,0,0,644,55,1,0,0,0,645, + 647,3,58,29,0,646,648,5,263,0,0,647,646,1,0,0,0,647,648,1,0,0,0,648,57, + 1,0,0,0,649,659,3,162,81,0,650,659,3,2,1,0,651,659,5,193,0,0,652,659,5, + 194,0,0,653,654,5,199,0,0,654,655,5,38,0,0,655,659,5,266,0,0,656,657,5, + 199,0,0,657,659,3,134,67,0,658,649,1,0,0,0,658,650,1,0,0,0,658,651,1,0, + 0,0,658,652,1,0,0,0,658,653,1,0,0,0,658,656,1,0,0,0,659,59,1,0,0,0,660, + 667,5,195,0,0,661,662,5,195,0,0,662,667,3,2,1,0,663,664,5,195,0,0,664, + 665,5,39,0,0,665,667,3,2,1,0,666,660,1,0,0,0,666,661,1,0,0,0,666,663,1, + 0,0,0,667,61,1,0,0,0,668,669,5,40,0,0,669,670,5,41,0,0,670,671,3,28,14, + 0,671,672,5,42,0,0,672,673,3,64,32,0,673,674,5,43,0,0,674,675,3,0,0,0, + 675,63,1,0,0,0,676,689,6,32,-1,0,677,678,10,5,0,0,678,688,5,183,0,0,679, + 680,10,4,0,0,680,688,5,184,0,0,681,682,10,3,0,0,682,688,5,44,0,0,683,684, + 10,2,0,0,684,688,5,45,0,0,685,686,10,1,0,0,686,688,5,46,0,0,687,677,1, + 0,0,0,687,679,1,0,0,0,687,681,1,0,0,0,687,683,1,0,0,0,687,685,1,0,0,0, + 688,691,1,0,0,0,689,687,1,0,0,0,689,690,1,0,0,0,690,65,1,0,0,0,691,689, + 1,0,0,0,692,693,5,47,0,0,693,694,5,35,0,0,694,695,5,29,0,0,695,696,3,304, + 152,0,696,697,5,30,0,0,697,67,1,0,0,0,698,699,5,48,0,0,699,700,3,2,1,0, + 700,69,1,0,0,0,701,705,5,49,0,0,702,704,3,72,36,0,703,702,1,0,0,0,704, + 707,1,0,0,0,705,703,1,0,0,0,705,706,1,0,0,0,706,708,1,0,0,0,707,705,1, + 0,0,0,708,709,3,2,1,0,709,710,3,196,98,0,710,711,3,74,37,0,711,712,3,76, + 38,0,712,71,1,0,0,0,713,751,5,50,0,0,714,751,5,51,0,0,715,751,5,196,0, + 0,716,751,5,199,0,0,717,751,5,218,0,0,718,751,5,52,0,0,719,751,5,53,0, + 0,720,751,5,54,0,0,721,751,5,55,0,0,722,751,5,244,0,0,723,751,5,15,0,0, + 724,751,5,223,0,0,725,751,5,56,0,0,726,751,5,57,0,0,727,751,5,58,0,0,728, + 751,5,59,0,0,729,751,5,60,0,0,730,731,5,61,0,0,731,751,5,50,0,0,732,733, + 5,61,0,0,733,751,5,51,0,0,734,735,5,61,0,0,735,751,5,62,0,0,736,737,5, + 61,0,0,737,751,5,63,0,0,738,739,5,61,0,0,739,751,5,64,0,0,740,741,5,61, + 0,0,741,751,5,65,0,0,742,751,5,66,0,0,743,751,5,67,0,0,744,751,5,68,0, + 0,745,746,5,69,0,0,746,747,5,29,0,0,747,748,3,28,14,0,748,749,5,30,0,0, + 749,751,1,0,0,0,750,713,1,0,0,0,750,714,1,0,0,0,750,715,1,0,0,0,750,716, + 1,0,0,0,750,717,1,0,0,0,750,718,1,0,0,0,750,719,1,0,0,0,750,720,1,0,0, + 0,750,721,1,0,0,0,750,722,1,0,0,0,750,723,1,0,0,0,750,724,1,0,0,0,750, + 725,1,0,0,0,750,726,1,0,0,0,750,727,1,0,0,0,750,728,1,0,0,0,750,729,1, + 0,0,0,750,730,1,0,0,0,750,732,1,0,0,0,750,734,1,0,0,0,750,736,1,0,0,0, + 750,738,1,0,0,0,750,740,1,0,0,0,750,742,1,0,0,0,750,743,1,0,0,0,750,744, + 1,0,0,0,750,745,1,0,0,0,751,73,1,0,0,0,752,756,1,0,0,0,753,754,5,70,0, + 0,754,756,3,142,71,0,755,752,1,0,0,0,755,753,1,0,0,0,756,75,1,0,0,0,757, + 761,1,0,0,0,758,759,5,71,0,0,759,761,3,80,40,0,760,757,1,0,0,0,760,758, + 1,0,0,0,761,77,1,0,0,0,762,764,3,212,106,0,763,762,1,0,0,0,764,767,1,0, + 0,0,765,763,1,0,0,0,765,766,1,0,0,0,766,79,1,0,0,0,767,765,1,0,0,0,768, + 769,3,142,71,0,769,770,5,27,0,0,770,772,1,0,0,0,771,768,1,0,0,0,772,775, + 1,0,0,0,773,771,1,0,0,0,773,774,1,0,0,0,774,776,1,0,0,0,775,773,1,0,0, + 0,776,777,3,142,71,0,777,81,1,0,0,0,778,779,7,3,0,0,779,83,1,0,0,0,780, + 781,3,82,41,0,781,782,3,28,14,0,782,783,5,266,0,0,783,852,1,0,0,0,784, + 785,3,82,41,0,785,786,3,28,14,0,786,852,1,0,0,0,787,788,3,82,41,0,788, + 789,3,28,14,0,789,790,5,74,0,0,790,791,3,28,14,0,791,792,5,266,0,0,792, + 852,1,0,0,0,793,794,3,82,41,0,794,795,3,28,14,0,795,796,5,74,0,0,796,797, + 3,28,14,0,797,852,1,0,0,0,798,799,3,82,41,0,799,800,3,28,14,0,800,801, + 5,74,0,0,801,802,3,28,14,0,802,803,5,27,0,0,803,804,3,28,14,0,804,805, + 5,266,0,0,805,852,1,0,0,0,806,807,3,82,41,0,807,808,3,28,14,0,808,809, + 5,74,0,0,809,810,3,28,14,0,810,811,5,27,0,0,811,812,3,28,14,0,812,852, + 1,0,0,0,813,814,3,82,41,0,814,815,3,28,14,0,815,816,5,27,0,0,816,817,3, + 28,14,0,817,818,5,74,0,0,818,819,3,28,14,0,819,820,5,266,0,0,820,852,1, + 0,0,0,821,822,3,82,41,0,822,823,3,28,14,0,823,824,5,27,0,0,824,825,3,28, + 14,0,825,826,5,74,0,0,826,827,3,28,14,0,827,852,1,0,0,0,828,829,3,82,41, + 0,829,830,3,28,14,0,830,831,5,27,0,0,831,832,3,28,14,0,832,833,5,74,0, + 0,833,834,3,28,14,0,834,835,5,27,0,0,835,836,3,28,14,0,836,837,5,266,0, + 0,837,852,1,0,0,0,838,839,3,82,41,0,839,840,3,28,14,0,840,841,5,27,0,0, + 841,842,3,28,14,0,842,843,5,74,0,0,843,844,3,28,14,0,844,845,5,27,0,0, + 845,846,3,28,14,0,846,852,1,0,0,0,847,848,3,82,41,0,848,849,3,28,14,0, + 849,850,5,265,0,0,850,852,1,0,0,0,851,780,1,0,0,0,851,784,1,0,0,0,851, + 787,1,0,0,0,851,793,1,0,0,0,851,798,1,0,0,0,851,806,1,0,0,0,851,813,1, + 0,0,0,851,821,1,0,0,0,851,828,1,0,0,0,851,838,1,0,0,0,851,847,1,0,0,0, + 852,85,1,0,0,0,853,857,5,20,0,0,854,856,3,88,44,0,855,854,1,0,0,0,856, + 859,1,0,0,0,857,855,1,0,0,0,857,858,1,0,0,0,858,860,1,0,0,0,859,857,1, + 0,0,0,860,861,3,2,1,0,861,862,3,90,45,0,862,863,5,177,0,0,863,864,5,35, + 0,0,864,865,5,29,0,0,865,866,3,304,152,0,866,867,5,30,0,0,867,868,3,90, + 45,0,868,880,1,0,0,0,869,873,5,20,0,0,870,872,3,88,44,0,871,870,1,0,0, + 0,872,875,1,0,0,0,873,871,1,0,0,0,873,874,1,0,0,0,874,876,1,0,0,0,875, + 873,1,0,0,0,876,877,3,2,1,0,877,878,3,90,45,0,878,880,1,0,0,0,879,853, + 1,0,0,0,879,869,1,0,0,0,880,87,1,0,0,0,881,882,5,75,0,0,882,89,1,0,0,0, + 883,886,1,0,0,0,884,886,5,299,0,0,885,883,1,0,0,0,885,884,1,0,0,0,886, + 91,1,0,0,0,887,888,7,4,0,0,888,93,1,0,0,0,889,891,3,92,46,0,890,889,1, + 0,0,0,891,894,1,0,0,0,892,890,1,0,0,0,892,893,1,0,0,0,893,95,1,0,0,0,894, + 892,1,0,0,0,895,896,5,277,0,0,896,97,1,0,0,0,897,898,5,278,0,0,898,99, + 1,0,0,0,899,900,5,279,0,0,900,101,1,0,0,0,901,902,5,280,0,0,902,103,1, + 0,0,0,903,904,5,281,0,0,904,105,1,0,0,0,905,906,5,284,0,0,906,107,1,0, + 0,0,907,908,5,282,0,0,908,109,1,0,0,0,909,910,5,288,0,0,910,111,1,0,0, + 0,911,912,5,286,0,0,912,113,1,0,0,0,913,914,5,287,0,0,914,115,1,0,0,0, + 915,916,5,283,0,0,916,117,1,0,0,0,917,918,5,289,0,0,918,119,1,0,0,0,919, + 920,5,285,0,0,920,121,1,0,0,0,921,998,3,96,48,0,922,923,3,98,49,0,923, + 924,3,28,14,0,924,998,1,0,0,0,925,926,3,98,49,0,926,927,3,0,0,0,927,998, + 1,0,0,0,928,929,3,100,50,0,929,930,3,28,14,0,930,998,1,0,0,0,931,932,3, + 102,51,0,932,933,3,30,15,0,933,998,1,0,0,0,934,935,3,104,52,0,935,936, + 3,32,16,0,936,998,1,0,0,0,937,938,3,104,52,0,938,939,3,30,15,0,939,998, + 1,0,0,0,940,941,3,104,52,0,941,942,5,29,0,0,942,943,3,304,152,0,943,944, + 5,30,0,0,944,998,1,0,0,0,945,946,3,104,52,0,946,947,5,83,0,0,947,948,5, + 29,0,0,948,949,3,304,152,0,949,950,5,30,0,0,950,998,1,0,0,0,951,952,3, + 106,53,0,952,953,3,28,14,0,953,998,1,0,0,0,954,955,3,106,53,0,955,956, + 3,0,0,0,956,998,1,0,0,0,957,958,3,108,54,0,958,959,3,182,91,0,959,998, + 1,0,0,0,960,961,3,110,55,0,961,962,3,192,96,0,962,998,1,0,0,0,963,964, + 3,110,55,0,964,965,3,188,94,0,965,998,1,0,0,0,966,967,3,112,56,0,967,968, + 3,142,71,0,968,998,1,0,0,0,969,970,3,114,57,0,970,971,3,4,2,0,971,998, + 1,0,0,0,972,973,3,114,57,0,973,974,5,223,0,0,974,975,5,29,0,0,975,976, + 3,4,2,0,976,977,5,30,0,0,977,998,1,0,0,0,978,979,3,114,57,0,979,980,5, + 83,0,0,980,981,5,29,0,0,981,982,3,304,152,0,982,983,5,30,0,0,983,998,1, + 0,0,0,984,985,3,116,58,0,985,986,3,184,92,0,986,987,3,156,78,0,987,988, + 3,130,65,0,988,998,1,0,0,0,989,990,3,118,59,0,990,991,3,46,23,0,991,998, + 1,0,0,0,992,993,3,120,60,0,993,994,5,29,0,0,994,995,3,124,62,0,995,996, + 5,30,0,0,996,998,1,0,0,0,997,921,1,0,0,0,997,922,1,0,0,0,997,925,1,0,0, + 0,997,928,1,0,0,0,997,931,1,0,0,0,997,934,1,0,0,0,997,937,1,0,0,0,997, + 940,1,0,0,0,997,945,1,0,0,0,997,951,1,0,0,0,997,954,1,0,0,0,997,957,1, + 0,0,0,997,960,1,0,0,0,997,963,1,0,0,0,997,966,1,0,0,0,997,969,1,0,0,0, + 997,972,1,0,0,0,997,978,1,0,0,0,997,984,1,0,0,0,997,989,1,0,0,0,997,992, + 1,0,0,0,998,123,1,0,0,0,999,1014,1,0,0,0,1000,1005,3,0,0,0,1001,1002,3, + 28,14,0,1002,1003,5,27,0,0,1003,1005,1,0,0,0,1004,1000,1,0,0,0,1004,1001, + 1,0,0,0,1005,1008,1,0,0,0,1006,1004,1,0,0,0,1006,1007,1,0,0,0,1007,1011, + 1,0,0,0,1008,1006,1,0,0,0,1009,1012,3,0,0,0,1010,1012,3,28,14,0,1011,1009, + 1,0,0,0,1011,1010,1,0,0,0,1012,1014,1,0,0,0,1013,999,1,0,0,0,1013,1006, + 1,0,0,0,1014,125,1,0,0,0,1015,1021,5,84,0,0,1016,1017,3,156,78,0,1017, + 1018,5,27,0,0,1018,1020,1,0,0,0,1019,1016,1,0,0,0,1020,1023,1,0,0,0,1021, + 1019,1,0,0,0,1021,1022,1,0,0,0,1022,1024,1,0,0,0,1023,1021,1,0,0,0,1024, + 1025,3,156,78,0,1025,1026,5,85,0,0,1026,127,1,0,0,0,1027,1033,5,41,0,0, + 1028,1029,3,164,82,0,1029,1030,5,27,0,0,1030,1032,1,0,0,0,1031,1028,1, + 0,0,0,1032,1035,1,0,0,0,1033,1031,1,0,0,0,1033,1034,1,0,0,0,1034,1036, + 1,0,0,0,1035,1033,1,0,0,0,1036,1037,3,164,82,0,1037,1038,5,42,0,0,1038, + 129,1,0,0,0,1039,1045,5,29,0,0,1040,1041,3,132,66,0,1041,1042,5,27,0,0, + 1042,1044,1,0,0,0,1043,1040,1,0,0,0,1044,1047,1,0,0,0,1045,1043,1,0,0, + 0,1045,1046,1,0,0,0,1046,1048,1,0,0,0,1047,1045,1,0,0,0,1048,1049,3,132, + 66,0,1049,1050,5,30,0,0,1050,1053,1,0,0,0,1051,1053,5,86,0,0,1052,1039, + 1,0,0,0,1052,1051,1,0,0,0,1053,131,1,0,0,0,1054,1065,5,174,0,0,1055,1056, + 3,244,122,0,1056,1057,3,156,78,0,1057,1058,3,240,120,0,1058,1065,1,0,0, + 0,1059,1060,3,244,122,0,1060,1061,3,156,78,0,1061,1062,3,240,120,0,1062, + 1063,3,0,0,0,1063,1065,1,0,0,0,1064,1054,1,0,0,0,1064,1055,1,0,0,0,1064, + 1059,1,0,0,0,1065,133,1,0,0,0,1066,1067,5,41,0,0,1067,1068,3,2,1,0,1068, + 1069,5,42,0,0,1069,1070,3,136,68,0,1070,1092,1,0,0,0,1071,1072,5,41,0, + 0,1072,1073,3,188,94,0,1073,1074,5,42,0,0,1074,1075,3,136,68,0,1075,1092, + 1,0,0,0,1076,1077,5,41,0,0,1077,1078,5,264,0,0,1078,1079,5,42,0,0,1079, + 1092,3,136,68,0,1080,1081,5,41,0,0,1081,1082,5,195,0,0,1082,1083,3,2,1, + 0,1083,1084,5,42,0,0,1084,1085,3,136,68,0,1085,1092,1,0,0,0,1086,1092, + 3,136,68,0,1087,1092,3,188,94,0,1088,1092,5,259,0,0,1089,1092,5,260,0, + 0,1090,1092,5,261,0,0,1091,1066,1,0,0,0,1091,1071,1,0,0,0,1091,1076,1, + 0,0,0,1091,1080,1,0,0,0,1091,1086,1,0,0,0,1091,1087,1,0,0,0,1091,1088, + 1,0,0,0,1091,1089,1,0,0,0,1091,1090,1,0,0,0,1092,135,1,0,0,0,1093,1094, + 3,2,1,0,1094,1095,5,87,0,0,1095,1097,1,0,0,0,1096,1093,1,0,0,0,1097,1100, + 1,0,0,0,1098,1096,1,0,0,0,1098,1099,1,0,0,0,1099,1101,1,0,0,0,1100,1098, + 1,0,0,0,1101,1102,3,2,1,0,1102,137,1,0,0,0,1103,1105,3,140,70,0,1104,1103, + 1,0,0,0,1105,1108,1,0,0,0,1106,1104,1,0,0,0,1106,1107,1,0,0,0,1107,139, + 1,0,0,0,1108,1106,1,0,0,0,1109,1110,5,177,0,0,1110,1111,5,88,0,0,1111, + 1115,3,28,14,0,1112,1115,3,166,83,0,1113,1115,3,336,168,0,1114,1109,1, + 0,0,0,1114,1112,1,0,0,0,1114,1113,1,0,0,0,1115,141,1,0,0,0,1116,1128,3, + 134,67,0,1117,1118,5,41,0,0,1118,1119,3,2,1,0,1119,1120,5,42,0,0,1120, + 1128,1,0,0,0,1121,1122,5,41,0,0,1122,1123,5,195,0,0,1123,1124,3,2,1,0, + 1124,1125,5,42,0,0,1125,1128,1,0,0,0,1126,1128,3,156,78,0,1127,1116,1, + 0,0,0,1127,1117,1,0,0,0,1127,1121,1,0,0,0,1127,1126,1,0,0,0,1128,143,1, + 0,0,0,1129,1138,1,0,0,0,1130,1134,3,148,74,0,1131,1133,3,146,73,0,1132, + 1131,1,0,0,0,1133,1136,1,0,0,0,1134,1132,1,0,0,0,1134,1135,1,0,0,0,1135, + 1138,1,0,0,0,1136,1134,1,0,0,0,1137,1129,1,0,0,0,1137,1130,1,0,0,0,1138, + 145,1,0,0,0,1139,1157,5,264,0,0,1140,1157,5,263,0,0,1141,1142,5,41,0,0, + 1142,1143,3,28,14,0,1143,1144,5,42,0,0,1144,1157,1,0,0,0,1145,1146,5,41, + 0,0,1146,1147,3,28,14,0,1147,1148,5,268,0,0,1148,1149,3,28,14,0,1149,1150, + 5,42,0,0,1150,1157,1,0,0,0,1151,1152,5,41,0,0,1152,1153,5,268,0,0,1153, + 1154,3,28,14,0,1154,1155,5,42,0,0,1155,1157,1,0,0,0,1156,1139,1,0,0,0, + 1156,1140,1,0,0,0,1156,1141,1,0,0,0,1156,1145,1,0,0,0,1156,1151,1,0,0, + 0,1157,147,1,0,0,0,1158,1240,1,0,0,0,1159,1160,5,200,0,0,1160,1161,5,29, + 0,0,1161,1162,3,4,2,0,1162,1163,5,27,0,0,1163,1164,3,4,2,0,1164,1165,5, + 27,0,0,1165,1166,3,4,2,0,1166,1167,5,27,0,0,1167,1168,3,4,2,0,1168,1169, + 5,30,0,0,1169,1240,1,0,0,0,1170,1171,5,200,0,0,1171,1172,5,29,0,0,1172, + 1173,3,4,2,0,1173,1174,5,27,0,0,1174,1175,3,4,2,0,1175,1176,5,30,0,0,1176, + 1240,1,0,0,0,1177,1178,5,201,0,0,1178,1179,5,202,0,0,1179,1180,5,41,0, + 0,1180,1181,3,28,14,0,1181,1182,5,42,0,0,1182,1240,1,0,0,0,1183,1184,5, + 201,0,0,1184,1185,5,203,0,0,1185,1186,5,41,0,0,1186,1187,3,28,14,0,1187, + 1188,5,42,0,0,1188,1189,3,144,72,0,1189,1240,1,0,0,0,1190,1240,5,204,0, + 0,1191,1240,5,205,0,0,1192,1240,5,206,0,0,1193,1240,5,198,0,0,1194,1240, + 5,180,0,0,1195,1240,5,181,0,0,1196,1240,5,182,0,0,1197,1240,5,183,0,0, + 1198,1240,5,184,0,0,1199,1240,5,185,0,0,1200,1240,5,186,0,0,1201,1240, + 5,207,0,0,1202,1240,5,187,0,0,1203,1240,5,188,0,0,1204,1240,5,189,0,0, + 1205,1240,5,190,0,0,1206,1240,5,208,0,0,1207,1240,5,209,0,0,1208,1240, + 5,210,0,0,1209,1240,5,211,0,0,1210,1240,5,212,0,0,1211,1240,5,213,0,0, + 1212,1240,5,214,0,0,1213,1214,5,215,0,0,1214,1240,3,150,75,0,1215,1216, + 5,216,0,0,1216,1240,3,150,75,0,1217,1240,5,217,0,0,1218,1219,5,218,0,0, + 1219,1240,3,150,75,0,1220,1221,5,219,0,0,1221,1240,3,152,76,0,1222,1223, + 5,219,0,0,1223,1224,3,152,76,0,1224,1225,5,27,0,0,1225,1226,3,4,2,0,1226, + 1240,1,0,0,0,1227,1240,5,191,0,0,1228,1240,5,192,0,0,1229,1240,5,220,0, + 0,1230,1240,5,222,0,0,1231,1240,5,224,0,0,1232,1240,5,225,0,0,1233,1240, + 5,221,0,0,1234,1240,5,226,0,0,1235,1240,5,228,0,0,1236,1237,5,33,0,0,1237, + 1240,5,227,0,0,1238,1240,3,2,1,0,1239,1158,1,0,0,0,1239,1159,1,0,0,0,1239, + 1170,1,0,0,0,1239,1177,1,0,0,0,1239,1183,1,0,0,0,1239,1190,1,0,0,0,1239, + 1191,1,0,0,0,1239,1192,1,0,0,0,1239,1193,1,0,0,0,1239,1194,1,0,0,0,1239, + 1195,1,0,0,0,1239,1196,1,0,0,0,1239,1197,1,0,0,0,1239,1198,1,0,0,0,1239, + 1199,1,0,0,0,1239,1200,1,0,0,0,1239,1201,1,0,0,0,1239,1202,1,0,0,0,1239, + 1203,1,0,0,0,1239,1204,1,0,0,0,1239,1205,1,0,0,0,1239,1206,1,0,0,0,1239, + 1207,1,0,0,0,1239,1208,1,0,0,0,1239,1209,1,0,0,0,1239,1210,1,0,0,0,1239, + 1211,1,0,0,0,1239,1212,1,0,0,0,1239,1213,1,0,0,0,1239,1215,1,0,0,0,1239, + 1217,1,0,0,0,1239,1218,1,0,0,0,1239,1220,1,0,0,0,1239,1222,1,0,0,0,1239, + 1227,1,0,0,0,1239,1228,1,0,0,0,1239,1229,1,0,0,0,1239,1230,1,0,0,0,1239, + 1231,1,0,0,0,1239,1232,1,0,0,0,1239,1233,1,0,0,0,1239,1234,1,0,0,0,1239, + 1235,1,0,0,0,1239,1236,1,0,0,0,1239,1238,1,0,0,0,1240,149,1,0,0,0,1241, + 1249,1,0,0,0,1242,1243,5,29,0,0,1243,1244,5,89,0,0,1244,1245,5,35,0,0, + 1245,1246,3,28,14,0,1246,1247,5,30,0,0,1247,1249,1,0,0,0,1248,1241,1,0, + 0,0,1248,1242,1,0,0,0,1249,151,1,0,0,0,1250,1259,1,0,0,0,1251,1255,3,154, + 77,0,1252,1254,7,5,0,0,1253,1252,1,0,0,0,1254,1257,1,0,0,0,1255,1253,1, + 0,0,0,1255,1256,1,0,0,0,1256,1259,1,0,0,0,1257,1255,1,0,0,0,1258,1250, + 1,0,0,0,1258,1251,1,0,0,0,1259,153,1,0,0,0,1260,1261,7,6,0,0,1261,155, + 1,0,0,0,1262,1266,3,160,80,0,1263,1265,3,158,79,0,1264,1263,1,0,0,0,1265, + 1268,1,0,0,0,1266,1264,1,0,0,0,1266,1267,1,0,0,0,1267,157,1,0,0,0,1268, + 1266,1,0,0,0,1269,1270,5,41,0,0,1270,1287,5,42,0,0,1271,1287,3,128,64, + 0,1272,1287,5,262,0,0,1273,1287,5,264,0,0,1274,1287,5,90,0,0,1275,1276, + 5,91,0,0,1276,1277,5,29,0,0,1277,1278,3,142,71,0,1278,1279,5,30,0,0,1279, + 1287,1,0,0,0,1280,1281,5,92,0,0,1281,1282,5,29,0,0,1282,1283,3,142,71, + 0,1283,1284,5,30,0,0,1284,1287,1,0,0,0,1285,1287,3,126,63,0,1286,1269, + 1,0,0,0,1286,1271,1,0,0,0,1286,1272,1,0,0,0,1286,1273,1,0,0,0,1286,1274, + 1,0,0,0,1286,1275,1,0,0,0,1286,1280,1,0,0,0,1286,1285,1,0,0,0,1287,159, + 1,0,0,0,1288,1289,5,38,0,0,1289,1319,3,134,67,0,1290,1319,5,194,0,0,1291, + 1292,5,196,0,0,1292,1293,5,38,0,0,1293,1319,3,134,67,0,1294,1295,5,197, + 0,0,1295,1319,3,134,67,0,1296,1297,5,226,0,0,1297,1298,3,184,92,0,1298, + 1299,3,156,78,0,1299,1300,5,264,0,0,1300,1301,3,130,65,0,1301,1319,1,0, + 0,0,1302,1303,5,253,0,0,1303,1319,3,28,14,0,1304,1305,5,252,0,0,1305,1319, + 3,28,14,0,1306,1307,5,253,0,0,1307,1319,3,2,1,0,1308,1309,5,252,0,0,1309, + 1319,3,2,1,0,1310,1319,5,254,0,0,1311,1319,5,198,0,0,1312,1319,5,255,0, + 0,1313,1319,5,256,0,0,1314,1319,3,162,81,0,1315,1319,3,2,1,0,1316,1317, + 5,174,0,0,1317,1319,3,156,78,0,1318,1288,1,0,0,0,1318,1290,1,0,0,0,1318, + 1291,1,0,0,0,1318,1294,1,0,0,0,1318,1296,1,0,0,0,1318,1302,1,0,0,0,1318, + 1304,1,0,0,0,1318,1306,1,0,0,0,1318,1308,1,0,0,0,1318,1310,1,0,0,0,1318, + 1311,1,0,0,0,1318,1312,1,0,0,0,1318,1313,1,0,0,0,1318,1314,1,0,0,0,1318, + 1315,1,0,0,0,1318,1316,1,0,0,0,1319,161,1,0,0,0,1320,1321,7,7,0,0,1321, + 163,1,0,0,0,1322,1333,1,0,0,0,1323,1333,5,174,0,0,1324,1333,3,28,14,0, + 1325,1326,3,28,14,0,1326,1327,5,174,0,0,1327,1328,3,28,14,0,1328,1333, + 1,0,0,0,1329,1330,3,28,14,0,1330,1331,5,174,0,0,1331,1333,1,0,0,0,1332, + 1322,1,0,0,0,1332,1323,1,0,0,0,1332,1324,1,0,0,0,1332,1325,1,0,0,0,1332, + 1329,1,0,0,0,1333,165,1,0,0,0,1334,1335,5,295,0,0,1335,1336,3,180,90,0, + 1336,1337,3,142,71,0,1337,1338,5,29,0,0,1338,1339,3,172,86,0,1339,1340, + 5,30,0,0,1340,1375,1,0,0,0,1341,1342,5,295,0,0,1342,1343,3,180,90,0,1343, + 1344,3,142,71,0,1344,1345,5,35,0,0,1345,1346,5,16,0,0,1346,1347,3,48,24, + 0,1347,1348,5,17,0,0,1348,1375,1,0,0,0,1349,1350,5,295,0,0,1350,1351,3, + 180,90,0,1351,1352,3,142,71,0,1352,1375,1,0,0,0,1353,1354,5,296,0,0,1354, + 1355,3,180,90,0,1355,1357,5,35,0,0,1356,1358,5,83,0,0,1357,1356,1,0,0, + 0,1357,1358,1,0,0,0,1358,1359,1,0,0,0,1359,1360,5,29,0,0,1360,1361,3,304, + 152,0,1361,1362,5,30,0,0,1362,1375,1,0,0,0,1363,1364,5,296,0,0,1364,1365, + 3,180,90,0,1365,1366,3,4,2,0,1366,1375,1,0,0,0,1367,1368,5,296,0,0,1368, + 1369,3,180,90,0,1369,1370,5,35,0,0,1370,1371,5,16,0,0,1371,1372,3,168, + 84,0,1372,1373,5,17,0,0,1373,1375,1,0,0,0,1374,1334,1,0,0,0,1374,1341, + 1,0,0,0,1374,1349,1,0,0,0,1374,1353,1,0,0,0,1374,1363,1,0,0,0,1374,1367, + 1,0,0,0,1375,167,1,0,0,0,1376,1387,1,0,0,0,1377,1378,3,170,85,0,1378,1379, + 5,27,0,0,1379,1381,1,0,0,0,1380,1377,1,0,0,0,1381,1384,1,0,0,0,1382,1380, + 1,0,0,0,1382,1383,1,0,0,0,1383,1385,1,0,0,0,1384,1382,1,0,0,0,1385,1387, + 3,170,85,0,1386,1376,1,0,0,0,1386,1382,1,0,0,0,1387,169,1,0,0,0,1388,1389, + 3,142,71,0,1389,1390,5,35,0,0,1390,1391,5,16,0,0,1391,1392,3,52,26,0,1392, + 1393,5,17,0,0,1393,1402,1,0,0,0,1394,1395,5,38,0,0,1395,1396,5,266,0,0, + 1396,1397,5,35,0,0,1397,1398,5,16,0,0,1398,1399,3,52,26,0,1399,1400,5, + 17,0,0,1400,1402,1,0,0,0,1401,1388,1,0,0,0,1401,1394,1,0,0,0,1402,171, + 1,0,0,0,1403,1404,3,174,87,0,1404,1405,5,27,0,0,1405,1407,1,0,0,0,1406, + 1403,1,0,0,0,1407,1410,1,0,0,0,1408,1406,1,0,0,0,1408,1409,1,0,0,0,1409, + 1411,1,0,0,0,1410,1408,1,0,0,0,1411,1412,3,174,87,0,1412,173,1,0,0,0,1413, + 1414,3,4,2,0,1414,1415,5,35,0,0,1415,1416,3,178,89,0,1416,175,1,0,0,0, + 1417,1418,7,8,0,0,1418,177,1,0,0,0,1419,1454,3,176,88,0,1420,1454,3,28, + 14,0,1421,1422,5,183,0,0,1422,1423,5,29,0,0,1423,1424,3,28,14,0,1424,1425, + 5,30,0,0,1425,1454,1,0,0,0,1426,1454,3,4,2,0,1427,1428,3,134,67,0,1428, + 1429,5,29,0,0,1429,1430,5,181,0,0,1430,1431,5,74,0,0,1431,1432,3,28,14, + 0,1432,1433,5,30,0,0,1433,1454,1,0,0,0,1434,1435,3,134,67,0,1435,1436, + 5,29,0,0,1436,1437,5,182,0,0,1437,1438,5,74,0,0,1438,1439,3,28,14,0,1439, + 1440,5,30,0,0,1440,1454,1,0,0,0,1441,1442,3,134,67,0,1442,1443,5,29,0, + 0,1443,1444,5,183,0,0,1444,1445,5,74,0,0,1445,1446,3,28,14,0,1446,1447, + 5,30,0,0,1447,1454,1,0,0,0,1448,1449,3,134,67,0,1449,1450,5,29,0,0,1450, + 1451,3,28,14,0,1451,1452,5,30,0,0,1452,1454,1,0,0,0,1453,1419,1,0,0,0, + 1453,1420,1,0,0,0,1453,1421,1,0,0,0,1453,1426,1,0,0,0,1453,1427,1,0,0, + 0,1453,1434,1,0,0,0,1453,1441,1,0,0,0,1453,1448,1,0,0,0,1454,179,1,0,0, + 0,1455,1456,7,9,0,0,1456,181,1,0,0,0,1457,1458,3,184,92,0,1458,1459,3, + 156,78,0,1459,1460,3,142,71,0,1460,1461,5,173,0,0,1461,1463,3,256,128, + 0,1462,1464,3,126,63,0,1463,1462,1,0,0,0,1463,1464,1,0,0,0,1464,1465,1, + 0,0,0,1465,1466,3,130,65,0,1466,1492,1,0,0,0,1467,1468,3,184,92,0,1468, + 1469,3,156,78,0,1469,1470,3,142,71,0,1470,1471,5,173,0,0,1471,1472,3,256, + 128,0,1472,1473,3,210,105,0,1473,1474,3,130,65,0,1474,1492,1,0,0,0,1475, + 1476,3,184,92,0,1476,1477,3,156,78,0,1477,1479,3,256,128,0,1478,1480,3, + 126,63,0,1479,1478,1,0,0,0,1479,1480,1,0,0,0,1480,1481,1,0,0,0,1481,1482, + 3,130,65,0,1482,1492,1,0,0,0,1483,1484,3,184,92,0,1484,1485,3,156,78,0, + 1485,1486,3,256,128,0,1486,1487,3,210,105,0,1487,1488,3,130,65,0,1488, + 1492,1,0,0,0,1489,1492,3,188,94,0,1490,1492,3,2,1,0,1491,1457,1,0,0,0, + 1491,1467,1,0,0,0,1491,1475,1,0,0,0,1491,1483,1,0,0,0,1491,1489,1,0,0, + 0,1491,1490,1,0,0,0,1492,183,1,0,0,0,1493,1494,5,243,0,0,1494,1504,3,184, + 92,0,1495,1496,5,244,0,0,1496,1504,3,184,92,0,1497,1504,3,186,93,0,1498, + 1499,5,110,0,0,1499,1500,5,29,0,0,1500,1501,3,28,14,0,1501,1502,5,30,0, + 0,1502,1504,1,0,0,0,1503,1493,1,0,0,0,1503,1495,1,0,0,0,1503,1497,1,0, + 0,0,1503,1498,1,0,0,0,1504,185,1,0,0,0,1505,1518,1,0,0,0,1506,1518,5,245, + 0,0,1507,1518,5,246,0,0,1508,1509,5,247,0,0,1509,1518,5,248,0,0,1510,1511, + 5,247,0,0,1511,1518,5,249,0,0,1512,1513,5,247,0,0,1513,1518,5,250,0,0, + 1514,1515,5,247,0,0,1515,1518,5,251,0,0,1516,1518,5,247,0,0,1517,1505, + 1,0,0,0,1517,1506,1,0,0,0,1517,1507,1,0,0,0,1517,1508,1,0,0,0,1517,1510, + 1,0,0,0,1517,1512,1,0,0,0,1517,1514,1,0,0,0,1517,1516,1,0,0,0,1518,187, + 1,0,0,0,1519,1520,5,111,0,0,1520,1521,5,29,0,0,1521,1522,3,28,14,0,1522, + 1523,5,30,0,0,1523,189,1,0,0,0,1524,1525,5,226,0,0,1525,1530,3,182,91, + 0,1526,1527,5,36,0,0,1527,1530,3,192,96,0,1528,1530,3,188,94,0,1529,1524, + 1,0,0,0,1529,1526,1,0,0,0,1529,1528,1,0,0,0,1530,191,1,0,0,0,1531,1532, + 3,156,78,0,1532,1533,3,142,71,0,1533,1534,5,173,0,0,1534,1535,3,2,1,0, + 1535,1541,1,0,0,0,1536,1537,3,156,78,0,1537,1538,3,2,1,0,1538,1541,1,0, + 0,0,1539,1541,3,2,1,0,1540,1531,1,0,0,0,1540,1536,1,0,0,0,1540,1539,1, + 0,0,0,1541,193,1,0,0,0,1542,1543,3,142,71,0,1543,1544,5,27,0,0,1544,1546, + 1,0,0,0,1545,1542,1,0,0,0,1546,1549,1,0,0,0,1547,1545,1,0,0,0,1547,1548, + 1,0,0,0,1548,1550,1,0,0,0,1549,1547,1,0,0,0,1550,1551,3,142,71,0,1551, + 195,1,0,0,0,1552,1558,1,0,0,0,1553,1554,5,84,0,0,1554,1555,3,204,102,0, + 1555,1556,5,85,0,0,1556,1558,1,0,0,0,1557,1552,1,0,0,0,1557,1553,1,0,0, + 0,1558,197,1,0,0,0,1559,1571,5,268,0,0,1560,1571,5,112,0,0,1561,1571,5, + 38,0,0,1562,1571,5,197,0,0,1563,1571,5,113,0,0,1564,1571,5,114,0,0,1565, + 1566,5,69,0,0,1566,1567,5,29,0,0,1567,1568,3,28,14,0,1568,1569,5,30,0, + 0,1569,1571,1,0,0,0,1570,1559,1,0,0,0,1570,1560,1,0,0,0,1570,1561,1,0, + 0,0,1570,1562,1,0,0,0,1570,1563,1,0,0,0,1570,1564,1,0,0,0,1570,1565,1, + 0,0,0,1571,199,1,0,0,0,1572,1574,3,198,99,0,1573,1572,1,0,0,0,1574,1577, + 1,0,0,0,1575,1573,1,0,0,0,1575,1576,1,0,0,0,1576,201,1,0,0,0,1577,1575, + 1,0,0,0,1578,1580,3,200,100,0,1579,1581,3,206,103,0,1580,1579,1,0,0,0, + 1580,1581,1,0,0,0,1581,1582,1,0,0,0,1582,1583,3,2,1,0,1583,203,1,0,0,0, + 1584,1585,3,202,101,0,1585,1586,5,27,0,0,1586,1588,1,0,0,0,1587,1584,1, + 0,0,0,1588,1591,1,0,0,0,1589,1587,1,0,0,0,1589,1590,1,0,0,0,1590,1592, + 1,0,0,0,1591,1589,1,0,0,0,1592,1593,3,202,101,0,1593,205,1,0,0,0,1594, + 1595,5,29,0,0,1595,1596,3,194,97,0,1596,1597,5,30,0,0,1597,207,1,0,0,0, + 1598,1601,1,0,0,0,1599,1601,3,210,105,0,1600,1598,1,0,0,0,1600,1599,1, + 0,0,0,1601,209,1,0,0,0,1602,1603,5,84,0,0,1603,1604,5,41,0,0,1604,1605, + 3,28,14,0,1605,1606,5,42,0,0,1606,1607,5,85,0,0,1607,211,1,0,0,0,1608, + 1609,3,248,124,0,1609,1610,5,16,0,0,1610,1611,3,260,130,0,1611,1612,5, + 17,0,0,1612,1725,1,0,0,0,1613,1614,3,70,35,0,1614,1615,5,16,0,0,1615,1616, + 3,78,39,0,1616,1617,5,17,0,0,1617,1725,1,0,0,0,1618,1619,3,224,112,0,1619, + 1620,5,16,0,0,1620,1621,3,228,114,0,1621,1622,5,17,0,0,1622,1725,1,0,0, + 0,1623,1624,3,232,116,0,1624,1625,5,16,0,0,1625,1626,3,236,118,0,1626, + 1627,5,17,0,0,1627,1725,1,0,0,0,1628,1725,3,214,107,0,1629,1725,3,288, + 144,0,1630,1725,3,166,83,0,1631,1725,3,84,42,0,1632,1725,3,334,167,0,1633, + 1634,5,115,0,0,1634,1725,3,28,14,0,1635,1636,5,116,0,0,1636,1725,3,28, + 14,0,1637,1638,3,346,173,0,1638,1639,5,16,0,0,1639,1640,3,350,175,0,1640, + 1641,5,17,0,0,1641,1725,1,0,0,0,1642,1643,5,303,0,0,1643,1644,3,142,71, + 0,1644,1645,5,173,0,0,1645,1646,3,256,128,0,1646,1647,5,117,0,0,1647,1648, + 3,184,92,0,1648,1649,3,156,78,0,1649,1650,3,142,71,0,1650,1651,5,173,0, + 0,1651,1652,3,256,128,0,1652,1653,3,130,65,0,1653,1725,1,0,0,0,1654,1655, + 5,303,0,0,1655,1656,5,226,0,0,1656,1657,3,184,92,0,1657,1658,3,156,78, + 0,1658,1659,3,142,71,0,1659,1660,5,173,0,0,1660,1661,3,256,128,0,1661, + 1662,3,208,104,0,1662,1663,3,130,65,0,1663,1664,5,117,0,0,1664,1665,5, + 226,0,0,1665,1666,3,184,92,0,1666,1667,3,156,78,0,1667,1668,3,142,71,0, + 1668,1669,5,173,0,0,1669,1670,3,256,128,0,1670,1671,3,208,104,0,1671,1672, + 3,130,65,0,1672,1725,1,0,0,0,1673,1725,3,24,12,0,1674,1725,3,36,18,0,1675, + 1676,5,257,0,0,1676,1677,5,193,0,0,1677,1678,5,41,0,0,1678,1679,3,28,14, + 0,1679,1683,5,42,0,0,1680,1682,3,334,167,0,1681,1680,1,0,0,0,1682,1685, + 1,0,0,0,1683,1681,1,0,0,0,1683,1684,1,0,0,0,1684,1725,1,0,0,0,1685,1683, + 1,0,0,0,1686,1687,5,257,0,0,1687,1688,5,193,0,0,1688,1692,3,2,1,0,1689, + 1691,3,334,167,0,1690,1689,1,0,0,0,1691,1694,1,0,0,0,1692,1690,1,0,0,0, + 1692,1693,1,0,0,0,1693,1725,1,0,0,0,1694,1692,1,0,0,0,1695,1696,5,257, + 0,0,1696,1697,5,258,0,0,1697,1698,5,41,0,0,1698,1699,3,28,14,0,1699,1700, + 5,42,0,0,1700,1701,5,27,0,0,1701,1705,3,142,71,0,1702,1704,3,334,167,0, + 1703,1702,1,0,0,0,1704,1707,1,0,0,0,1705,1703,1,0,0,0,1705,1706,1,0,0, + 0,1706,1725,1,0,0,0,1707,1705,1,0,0,0,1708,1709,5,257,0,0,1709,1710,5, + 258,0,0,1710,1711,3,2,1,0,1711,1712,5,27,0,0,1712,1716,3,142,71,0,1713, + 1715,3,334,167,0,1714,1713,1,0,0,0,1715,1718,1,0,0,0,1716,1714,1,0,0,0, + 1716,1717,1,0,0,0,1717,1725,1,0,0,0,1718,1716,1,0,0,0,1719,1720,5,118, + 0,0,1720,1721,5,193,0,0,1721,1722,3,142,71,0,1722,1723,3,40,20,0,1723, + 1725,1,0,0,0,1724,1608,1,0,0,0,1724,1613,1,0,0,0,1724,1618,1,0,0,0,1724, + 1623,1,0,0,0,1724,1628,1,0,0,0,1724,1629,1,0,0,0,1724,1630,1,0,0,0,1724, + 1631,1,0,0,0,1724,1632,1,0,0,0,1724,1633,1,0,0,0,1724,1635,1,0,0,0,1724, + 1637,1,0,0,0,1724,1642,1,0,0,0,1724,1654,1,0,0,0,1724,1673,1,0,0,0,1724, + 1674,1,0,0,0,1724,1675,1,0,0,0,1724,1686,1,0,0,0,1724,1695,1,0,0,0,1724, + 1708,1,0,0,0,1724,1719,1,0,0,0,1725,213,1,0,0,0,1726,1727,5,119,0,0,1727, + 1736,3,222,111,0,1728,1735,3,216,108,0,1729,1730,5,120,0,0,1730,1731,5, + 29,0,0,1731,1732,3,242,121,0,1732,1733,5,30,0,0,1733,1735,1,0,0,0,1734, + 1728,1,0,0,0,1734,1729,1,0,0,0,1735,1738,1,0,0,0,1736,1734,1,0,0,0,1736, + 1737,1,0,0,0,1737,1739,1,0,0,0,1738,1736,1,0,0,0,1739,1740,3,156,78,0, + 1740,1741,3,2,1,0,1741,1742,3,218,109,0,1742,1743,3,220,110,0,1743,215, + 1,0,0,0,1744,1763,5,121,0,0,1745,1763,5,50,0,0,1746,1763,5,51,0,0,1747, + 1763,5,62,0,0,1748,1763,5,122,0,0,1749,1763,5,68,0,0,1750,1763,5,67,0, + 0,1751,1763,5,63,0,0,1752,1763,5,64,0,0,1753,1763,5,65,0,0,1754,1763,5, + 123,0,0,1755,1763,5,124,0,0,1756,1763,5,125,0,0,1757,1758,5,69,0,0,1758, + 1759,5,29,0,0,1759,1760,3,28,14,0,1760,1761,5,30,0,0,1761,1763,1,0,0,0, + 1762,1744,1,0,0,0,1762,1745,1,0,0,0,1762,1746,1,0,0,0,1762,1747,1,0,0, + 0,1762,1748,1,0,0,0,1762,1749,1,0,0,0,1762,1750,1,0,0,0,1762,1751,1,0, + 0,0,1762,1752,1,0,0,0,1762,1753,1,0,0,0,1762,1754,1,0,0,0,1762,1755,1, + 0,0,0,1762,1756,1,0,0,0,1762,1757,1,0,0,0,1763,217,1,0,0,0,1764,1768,1, + 0,0,0,1765,1766,5,43,0,0,1766,1768,3,0,0,0,1767,1764,1,0,0,0,1767,1765, + 1,0,0,0,1768,219,1,0,0,0,1769,1773,1,0,0,0,1770,1771,5,35,0,0,1771,1773, + 3,308,154,0,1772,1769,1,0,0,0,1772,1770,1,0,0,0,1773,221,1,0,0,0,1774, + 1780,1,0,0,0,1775,1776,5,41,0,0,1776,1777,3,28,14,0,1777,1778,5,42,0,0, + 1778,1780,1,0,0,0,1779,1774,1,0,0,0,1779,1775,1,0,0,0,1780,223,1,0,0,0, + 1781,1785,5,126,0,0,1782,1784,3,226,113,0,1783,1782,1,0,0,0,1784,1787, + 1,0,0,0,1785,1783,1,0,0,0,1785,1786,1,0,0,0,1786,1788,1,0,0,0,1787,1785, + 1,0,0,0,1788,1789,3,142,71,0,1789,1790,3,2,1,0,1790,1800,1,0,0,0,1791, + 1795,5,126,0,0,1792,1794,3,226,113,0,1793,1792,1,0,0,0,1794,1797,1,0,0, + 0,1795,1793,1,0,0,0,1795,1796,1,0,0,0,1796,1798,1,0,0,0,1797,1795,1,0, + 0,0,1798,1800,3,2,1,0,1799,1781,1,0,0,0,1799,1791,1,0,0,0,1800,225,1,0, + 0,0,1801,1802,7,10,0,0,1802,227,1,0,0,0,1803,1805,3,230,115,0,1804,1803, + 1,0,0,0,1805,1808,1,0,0,0,1806,1804,1,0,0,0,1806,1807,1,0,0,0,1807,229, + 1,0,0,0,1808,1806,1,0,0,0,1809,1810,5,127,0,0,1810,1822,3,182,91,0,1811, + 1812,5,128,0,0,1812,1822,3,182,91,0,1813,1814,5,129,0,0,1814,1822,3,182, + 91,0,1815,1816,5,130,0,0,1816,1822,3,182,91,0,1817,1822,3,84,42,0,1818, + 1822,3,334,167,0,1819,1822,3,24,12,0,1820,1822,3,36,18,0,1821,1809,1,0, + 0,0,1821,1811,1,0,0,0,1821,1813,1,0,0,0,1821,1815,1,0,0,0,1821,1817,1, + 0,0,0,1821,1818,1,0,0,0,1821,1819,1,0,0,0,1821,1820,1,0,0,0,1822,231,1, + 0,0,0,1823,1827,5,131,0,0,1824,1826,3,234,117,0,1825,1824,1,0,0,0,1826, + 1829,1,0,0,0,1827,1825,1,0,0,0,1827,1828,1,0,0,0,1828,1830,1,0,0,0,1829, + 1827,1,0,0,0,1830,1831,3,184,92,0,1831,1832,3,156,78,0,1832,1833,3,2,1, + 0,1833,1834,3,130,65,0,1834,1835,3,220,110,0,1835,233,1,0,0,0,1836,1837, + 7,10,0,0,1837,235,1,0,0,0,1838,1840,3,238,119,0,1839,1838,1,0,0,0,1840, + 1843,1,0,0,0,1841,1839,1,0,0,0,1841,1842,1,0,0,0,1842,237,1,0,0,0,1843, + 1841,1,0,0,0,1844,1845,5,132,0,0,1845,1855,3,182,91,0,1846,1847,5,133, + 0,0,1847,1855,3,182,91,0,1848,1849,5,130,0,0,1849,1855,3,182,91,0,1850, + 1855,3,334,167,0,1851,1855,3,84,42,0,1852,1855,3,24,12,0,1853,1855,3,36, + 18,0,1854,1844,1,0,0,0,1854,1846,1,0,0,0,1854,1848,1,0,0,0,1854,1850,1, + 0,0,0,1854,1851,1,0,0,0,1854,1852,1,0,0,0,1854,1853,1,0,0,0,1855,239,1, + 0,0,0,1856,1863,1,0,0,0,1857,1858,5,120,0,0,1858,1859,5,29,0,0,1859,1860, + 3,242,121,0,1860,1861,5,30,0,0,1861,1863,1,0,0,0,1862,1856,1,0,0,0,1862, + 1857,1,0,0,0,1863,241,1,0,0,0,1864,1870,3,144,72,0,1865,1866,5,16,0,0, + 1866,1867,3,306,153,0,1867,1868,5,17,0,0,1868,1870,1,0,0,0,1869,1864,1, + 0,0,0,1869,1865,1,0,0,0,1870,243,1,0,0,0,1871,1873,3,246,123,0,1872,1871, + 1,0,0,0,1873,1876,1,0,0,0,1874,1872,1,0,0,0,1874,1875,1,0,0,0,1875,245, + 1,0,0,0,1876,1874,1,0,0,0,1877,1878,5,41,0,0,1878,1879,5,134,0,0,1879, + 1891,5,42,0,0,1880,1881,5,41,0,0,1881,1882,5,135,0,0,1882,1891,5,42,0, + 0,1883,1884,5,41,0,0,1884,1885,5,136,0,0,1885,1891,5,42,0,0,1886,1887, + 5,41,0,0,1887,1888,3,28,14,0,1888,1889,5,42,0,0,1889,1891,1,0,0,0,1890, + 1877,1,0,0,0,1890,1880,1,0,0,0,1890,1883,1,0,0,0,1890,1886,1,0,0,0,1891, + 247,1,0,0,0,1892,1897,5,137,0,0,1893,1896,3,250,125,0,1894,1896,3,252, + 126,0,1895,1893,1,0,0,0,1895,1894,1,0,0,0,1896,1899,1,0,0,0,1897,1895, + 1,0,0,0,1897,1898,1,0,0,0,1898,1900,1,0,0,0,1899,1897,1,0,0,0,1900,1901, + 3,184,92,0,1901,1902,3,244,122,0,1902,1903,3,156,78,0,1903,1904,3,240, + 120,0,1904,1905,3,256,128,0,1905,1906,3,196,98,0,1906,1910,3,130,65,0, + 1907,1909,3,258,129,0,1908,1907,1,0,0,0,1909,1912,1,0,0,0,1910,1908,1, + 0,0,0,1910,1911,1,0,0,0,1911,249,1,0,0,0,1912,1910,1,0,0,0,1913,1937,5, + 121,0,0,1914,1937,5,50,0,0,1915,1937,5,51,0,0,1916,1937,5,62,0,0,1917, + 1937,5,138,0,0,1918,1937,5,67,0,0,1919,1937,5,139,0,0,1920,1937,5,140, + 0,0,1921,1937,5,53,0,0,1922,1937,5,63,0,0,1923,1937,5,64,0,0,1924,1937, + 5,65,0,0,1925,1937,5,123,0,0,1926,1937,5,141,0,0,1927,1937,5,142,0,0,1928, + 1937,5,68,0,0,1929,1937,5,143,0,0,1930,1937,5,144,0,0,1931,1932,5,69,0, + 0,1932,1933,5,29,0,0,1933,1934,3,28,14,0,1934,1935,5,30,0,0,1935,1937, + 1,0,0,0,1936,1913,1,0,0,0,1936,1914,1,0,0,0,1936,1915,1,0,0,0,1936,1916, + 1,0,0,0,1936,1917,1,0,0,0,1936,1918,1,0,0,0,1936,1919,1,0,0,0,1936,1920, + 1,0,0,0,1936,1921,1,0,0,0,1936,1922,1,0,0,0,1936,1923,1,0,0,0,1936,1924, + 1,0,0,0,1936,1925,1,0,0,0,1936,1926,1,0,0,0,1936,1927,1,0,0,0,1936,1928, + 1,0,0,0,1936,1929,1,0,0,0,1936,1930,1,0,0,0,1936,1931,1,0,0,0,1937,251, + 1,0,0,0,1938,1939,5,145,0,0,1939,1945,5,29,0,0,1940,1943,3,4,2,0,1941, + 1942,5,33,0,0,1942,1944,3,4,2,0,1943,1941,1,0,0,0,1943,1944,1,0,0,0,1944, + 1946,1,0,0,0,1945,1940,1,0,0,0,1945,1946,1,0,0,0,1946,1950,1,0,0,0,1947, + 1949,3,254,127,0,1948,1947,1,0,0,0,1949,1952,1,0,0,0,1950,1948,1,0,0,0, + 1950,1951,1,0,0,0,1951,1953,1,0,0,0,1952,1950,1,0,0,0,1953,1954,5,30,0, + 0,1954,253,1,0,0,0,1955,1983,5,146,0,0,1956,1983,5,223,0,0,1957,1983,5, + 56,0,0,1958,1983,5,57,0,0,1959,1983,5,147,0,0,1960,1983,5,148,0,0,1961, + 1983,5,248,0,0,1962,1983,5,249,0,0,1963,1983,5,250,0,0,1964,1983,5,251, + 0,0,1965,1966,5,149,0,0,1966,1967,5,74,0,0,1967,1983,5,150,0,0,1968,1969, + 5,149,0,0,1969,1970,5,74,0,0,1970,1983,5,151,0,0,1971,1972,5,152,0,0,1972, + 1973,5,74,0,0,1973,1983,5,150,0,0,1974,1975,5,152,0,0,1975,1976,5,74,0, + 0,1976,1983,5,151,0,0,1977,1978,5,69,0,0,1978,1979,5,29,0,0,1979,1980, + 3,28,14,0,1980,1981,5,30,0,0,1981,1983,1,0,0,0,1982,1955,1,0,0,0,1982, + 1956,1,0,0,0,1982,1957,1,0,0,0,1982,1958,1,0,0,0,1982,1959,1,0,0,0,1982, + 1960,1,0,0,0,1982,1961,1,0,0,0,1982,1962,1,0,0,0,1982,1963,1,0,0,0,1982, + 1964,1,0,0,0,1982,1965,1,0,0,0,1982,1968,1,0,0,0,1982,1971,1,0,0,0,1982, + 1974,1,0,0,0,1982,1977,1,0,0,0,1983,255,1,0,0,0,1984,1988,5,114,0,0,1985, + 1988,5,153,0,0,1986,1988,3,2,1,0,1987,1984,1,0,0,0,1987,1985,1,0,0,0,1987, + 1986,1,0,0,0,1988,257,1,0,0,0,1989,2010,5,1,0,0,1990,2010,5,2,0,0,1991, + 2010,5,3,0,0,1992,2010,5,4,0,0,1993,2010,5,247,0,0,1994,2010,5,5,0,0,1995, + 2010,5,6,0,0,1996,2010,5,7,0,0,1997,2010,5,8,0,0,1998,2010,5,9,0,0,1999, + 2010,5,10,0,0,2000,2010,5,11,0,0,2001,2010,5,12,0,0,2002,2010,5,13,0,0, + 2003,2010,5,14,0,0,2004,2005,5,69,0,0,2005,2006,5,29,0,0,2006,2007,3,28, + 14,0,2007,2008,5,30,0,0,2008,2010,1,0,0,0,2009,1989,1,0,0,0,2009,1990, + 1,0,0,0,2009,1991,1,0,0,0,2009,1992,1,0,0,0,2009,1993,1,0,0,0,2009,1994, + 1,0,0,0,2009,1995,1,0,0,0,2009,1996,1,0,0,0,2009,1997,1,0,0,0,2009,1998, + 1,0,0,0,2009,1999,1,0,0,0,2009,2000,1,0,0,0,2009,2001,1,0,0,0,2009,2002, + 1,0,0,0,2009,2003,1,0,0,0,2009,2004,1,0,0,0,2010,259,1,0,0,0,2011,2013, + 3,262,131,0,2012,2011,1,0,0,0,2013,2016,1,0,0,0,2014,2012,1,0,0,0,2014, + 2015,1,0,0,0,2015,261,1,0,0,0,2016,2014,1,0,0,0,2017,2126,3,122,61,0,2018, + 2019,5,297,0,0,2019,2126,3,28,14,0,2020,2126,3,270,135,0,2021,2022,5,298, + 0,0,2022,2126,3,28,14,0,2023,2024,5,301,0,0,2024,2126,3,130,65,0,2025, + 2026,5,301,0,0,2026,2027,5,154,0,0,2027,2126,3,130,65,0,2028,2126,5,299, + 0,0,2029,2126,5,300,0,0,2030,2126,3,288,144,0,2031,2126,3,264,132,0,2032, + 2126,3,166,83,0,2033,2126,3,84,42,0,2034,2126,3,24,12,0,2035,2126,3,266, + 133,0,2036,2126,3,36,18,0,2037,2038,5,302,0,0,2038,2039,5,41,0,0,2039, + 2040,3,28,14,0,2040,2041,5,42,0,0,2041,2126,1,0,0,0,2042,2043,5,302,0, + 0,2043,2044,5,41,0,0,2044,2045,3,28,14,0,2045,2046,5,42,0,0,2046,2047, + 5,33,0,0,2047,2048,3,0,0,0,2048,2126,1,0,0,0,2049,2050,5,304,0,0,2050, + 2051,3,28,14,0,2051,2052,5,74,0,0,2052,2053,3,28,14,0,2053,2126,1,0,0, + 0,2054,2055,5,303,0,0,2055,2056,3,142,71,0,2056,2057,5,173,0,0,2057,2058, + 3,256,128,0,2058,2126,1,0,0,0,2059,2060,5,303,0,0,2060,2061,5,226,0,0, + 2061,2062,3,184,92,0,2062,2063,3,156,78,0,2063,2064,3,142,71,0,2064,2065, + 5,173,0,0,2065,2066,3,256,128,0,2066,2067,3,208,104,0,2067,2068,3,130, + 65,0,2068,2126,1,0,0,0,2069,2126,3,268,134,0,2070,2071,5,257,0,0,2071, + 2072,5,193,0,0,2072,2073,5,41,0,0,2073,2074,3,28,14,0,2074,2078,5,42,0, + 0,2075,2077,3,334,167,0,2076,2075,1,0,0,0,2077,2080,1,0,0,0,2078,2076, + 1,0,0,0,2078,2079,1,0,0,0,2079,2126,1,0,0,0,2080,2078,1,0,0,0,2081,2082, + 5,257,0,0,2082,2083,5,193,0,0,2083,2087,3,2,1,0,2084,2086,3,334,167,0, + 2085,2084,1,0,0,0,2086,2089,1,0,0,0,2087,2085,1,0,0,0,2087,2088,1,0,0, + 0,2088,2126,1,0,0,0,2089,2087,1,0,0,0,2090,2091,5,257,0,0,2091,2092,5, + 258,0,0,2092,2093,5,41,0,0,2093,2094,3,28,14,0,2094,2095,5,42,0,0,2095, + 2096,5,27,0,0,2096,2100,3,142,71,0,2097,2099,3,334,167,0,2098,2097,1,0, + 0,0,2099,2102,1,0,0,0,2100,2098,1,0,0,0,2100,2101,1,0,0,0,2101,2126,1, + 0,0,0,2102,2100,1,0,0,0,2103,2104,5,257,0,0,2104,2105,5,258,0,0,2105,2106, + 3,2,1,0,2106,2107,5,27,0,0,2107,2111,3,142,71,0,2108,2110,3,334,167,0, + 2109,2108,1,0,0,0,2110,2113,1,0,0,0,2111,2109,1,0,0,0,2111,2112,1,0,0, + 0,2112,2126,1,0,0,0,2113,2111,1,0,0,0,2114,2115,5,257,0,0,2115,2116,5, + 41,0,0,2116,2117,3,28,14,0,2117,2118,5,42,0,0,2118,2122,3,220,110,0,2119, + 2121,3,334,167,0,2120,2119,1,0,0,0,2121,2124,1,0,0,0,2122,2120,1,0,0,0, + 2122,2123,1,0,0,0,2123,2126,1,0,0,0,2124,2122,1,0,0,0,2125,2017,1,0,0, + 0,2125,2018,1,0,0,0,2125,2020,1,0,0,0,2125,2021,1,0,0,0,2125,2023,1,0, + 0,0,2125,2025,1,0,0,0,2125,2028,1,0,0,0,2125,2029,1,0,0,0,2125,2030,1, + 0,0,0,2125,2031,1,0,0,0,2125,2032,1,0,0,0,2125,2033,1,0,0,0,2125,2034, + 1,0,0,0,2125,2035,1,0,0,0,2125,2036,1,0,0,0,2125,2037,1,0,0,0,2125,2042, + 1,0,0,0,2125,2049,1,0,0,0,2125,2054,1,0,0,0,2125,2059,1,0,0,0,2125,2069, + 1,0,0,0,2125,2070,1,0,0,0,2125,2081,1,0,0,0,2125,2090,1,0,0,0,2125,2103, + 1,0,0,0,2125,2114,1,0,0,0,2126,263,1,0,0,0,2127,2128,3,0,0,0,2128,2129, + 5,74,0,0,2129,265,1,0,0,0,2130,2133,3,40,20,0,2131,2133,3,42,21,0,2132, + 2130,1,0,0,0,2132,2131,1,0,0,0,2133,267,1,0,0,0,2134,2135,5,16,0,0,2135, + 2136,3,260,130,0,2136,2137,5,17,0,0,2137,269,1,0,0,0,2138,2139,3,274,137, + 0,2139,2140,3,272,136,0,2140,271,1,0,0,0,2141,2143,3,276,138,0,2142,2141, + 1,0,0,0,2143,2144,1,0,0,0,2144,2142,1,0,0,0,2144,2145,1,0,0,0,2145,273, + 1,0,0,0,2146,2147,5,155,0,0,2147,2159,3,268,134,0,2148,2149,5,155,0,0, + 2149,2150,3,0,0,0,2150,2151,5,156,0,0,2151,2152,3,0,0,0,2152,2159,1,0, + 0,0,2153,2154,5,155,0,0,2154,2155,3,28,14,0,2155,2156,5,156,0,0,2156,2157, + 3,28,14,0,2157,2159,1,0,0,0,2158,2146,1,0,0,0,2158,2148,1,0,0,0,2158,2153, + 1,0,0,0,2159,275,1,0,0,0,2160,2161,3,280,140,0,2161,2162,3,286,143,0,2162, + 2173,1,0,0,0,2163,2164,3,278,139,0,2164,2165,3,286,143,0,2165,2173,1,0, + 0,0,2166,2167,3,282,141,0,2167,2168,3,286,143,0,2168,2173,1,0,0,0,2169, + 2170,3,284,142,0,2170,2171,3,286,143,0,2171,2173,1,0,0,0,2172,2160,1,0, + 0,0,2172,2163,1,0,0,0,2172,2166,1,0,0,0,2172,2169,1,0,0,0,2173,277,1,0, + 0,0,2174,2175,5,157,0,0,2175,2181,3,268,134,0,2176,2177,5,157,0,0,2177, + 2181,3,0,0,0,2178,2179,5,157,0,0,2179,2181,3,28,14,0,2180,2174,1,0,0,0, + 2180,2176,1,0,0,0,2180,2178,1,0,0,0,2181,279,1,0,0,0,2182,2183,5,158,0, + 0,2183,2184,3,142,71,0,2184,281,1,0,0,0,2185,2186,5,159,0,0,2186,283,1, + 0,0,0,2187,2188,5,160,0,0,2188,285,1,0,0,0,2189,2201,3,268,134,0,2190, + 2191,5,161,0,0,2191,2192,3,0,0,0,2192,2193,5,156,0,0,2193,2194,3,0,0,0, + 2194,2201,1,0,0,0,2195,2196,5,161,0,0,2196,2197,3,28,14,0,2197,2198,5, + 156,0,0,2198,2199,3,28,14,0,2199,2201,1,0,0,0,2200,2189,1,0,0,0,2200,2190, + 1,0,0,0,2200,2195,1,0,0,0,2201,287,1,0,0,0,2202,2203,3,290,145,0,2203, + 2204,3,294,147,0,2204,289,1,0,0,0,2205,2206,5,162,0,0,2206,2207,3,292, + 146,0,2207,2208,3,0,0,0,2208,2209,5,35,0,0,2209,2213,1,0,0,0,2210,2211, + 5,162,0,0,2211,2213,3,292,146,0,2212,2205,1,0,0,0,2212,2210,1,0,0,0,2213, + 291,1,0,0,0,2214,2218,1,0,0,0,2215,2218,5,163,0,0,2216,2218,5,2,0,0,2217, + 2214,1,0,0,0,2217,2215,1,0,0,0,2217,2216,1,0,0,0,2218,293,1,0,0,0,2219, + 2220,5,16,0,0,2220,2221,3,296,148,0,2221,2222,5,17,0,0,2222,2225,1,0,0, + 0,2223,2225,3,300,150,0,2224,2219,1,0,0,0,2224,2223,1,0,0,0,2225,295,1, + 0,0,0,2226,2227,3,300,150,0,2227,2228,5,27,0,0,2228,2230,1,0,0,0,2229, + 2226,1,0,0,0,2230,2233,1,0,0,0,2231,2229,1,0,0,0,2231,2232,1,0,0,0,2232, + 2234,1,0,0,0,2233,2231,1,0,0,0,2234,2235,3,300,150,0,2235,297,1,0,0,0, + 2236,2242,1,0,0,0,2237,2238,5,41,0,0,2238,2239,3,28,14,0,2239,2240,5,42, + 0,0,2240,2242,1,0,0,0,2241,2236,1,0,0,0,2241,2237,1,0,0,0,2242,299,1,0, + 0,0,2243,2244,5,178,0,0,2244,2245,5,264,0,0,2245,2246,5,29,0,0,2246,2247, + 3,4,2,0,2247,2248,5,30,0,0,2248,2308,1,0,0,0,2249,2250,5,262,0,0,2250, + 2251,5,29,0,0,2251,2252,3,0,0,0,2252,2253,5,30,0,0,2253,2308,1,0,0,0,2254, + 2255,5,83,0,0,2255,2256,5,29,0,0,2256,2257,3,304,152,0,2257,2258,5,30, + 0,0,2258,2308,1,0,0,0,2259,2260,5,185,0,0,2260,2261,5,29,0,0,2261,2262, + 3,32,16,0,2262,2263,5,30,0,0,2263,2264,3,298,149,0,2264,2308,1,0,0,0,2265, + 2266,5,186,0,0,2266,2267,5,29,0,0,2267,2268,3,32,16,0,2268,2269,5,30,0, + 0,2269,2270,3,298,149,0,2270,2308,1,0,0,0,2271,2272,5,184,0,0,2272,2273, + 5,29,0,0,2273,2274,3,30,15,0,2274,2275,5,30,0,0,2275,2276,3,298,149,0, + 2276,2308,1,0,0,0,2277,2278,5,183,0,0,2278,2279,5,29,0,0,2279,2280,3,28, + 14,0,2280,2281,5,30,0,0,2281,2282,3,298,149,0,2282,2308,1,0,0,0,2283,2284, + 5,182,0,0,2284,2285,5,29,0,0,2285,2286,3,28,14,0,2286,2287,5,30,0,0,2287, + 2288,3,298,149,0,2288,2308,1,0,0,0,2289,2290,5,181,0,0,2290,2291,5,29, + 0,0,2291,2292,3,28,14,0,2292,2293,5,30,0,0,2293,2294,3,298,149,0,2294, + 2308,1,0,0,0,2295,2296,5,185,0,0,2296,2308,3,298,149,0,2297,2298,5,186, + 0,0,2298,2308,3,298,149,0,2299,2300,5,184,0,0,2300,2308,3,298,149,0,2301, + 2302,5,183,0,0,2302,2308,3,298,149,0,2303,2304,5,182,0,0,2304,2308,3,298, + 149,0,2305,2306,5,181,0,0,2306,2308,3,298,149,0,2307,2243,1,0,0,0,2307, + 2249,1,0,0,0,2307,2254,1,0,0,0,2307,2259,1,0,0,0,2307,2265,1,0,0,0,2307, + 2271,1,0,0,0,2307,2277,1,0,0,0,2307,2283,1,0,0,0,2307,2289,1,0,0,0,2307, + 2295,1,0,0,0,2307,2297,1,0,0,0,2307,2299,1,0,0,0,2307,2301,1,0,0,0,2307, + 2303,1,0,0,0,2307,2305,1,0,0,0,2308,301,1,0,0,0,2309,2310,5,185,0,0,2310, + 2311,5,29,0,0,2311,2312,3,32,16,0,2312,2313,5,30,0,0,2313,2385,1,0,0,0, + 2314,2315,5,186,0,0,2315,2316,5,29,0,0,2316,2317,3,32,16,0,2317,2318,5, + 30,0,0,2318,2385,1,0,0,0,2319,2320,5,185,0,0,2320,2321,5,29,0,0,2321,2322, + 3,28,14,0,2322,2323,5,30,0,0,2323,2385,1,0,0,0,2324,2325,5,186,0,0,2325, + 2326,5,29,0,0,2326,2327,3,30,15,0,2327,2328,5,30,0,0,2328,2385,1,0,0,0, + 2329,2330,5,184,0,0,2330,2331,5,29,0,0,2331,2332,3,30,15,0,2332,2333,5, + 30,0,0,2333,2385,1,0,0,0,2334,2335,5,183,0,0,2335,2336,5,29,0,0,2336,2337, + 3,28,14,0,2337,2338,5,30,0,0,2338,2385,1,0,0,0,2339,2340,5,182,0,0,2340, + 2341,5,29,0,0,2341,2342,3,28,14,0,2342,2343,5,30,0,0,2343,2385,1,0,0,0, + 2344,2345,5,181,0,0,2345,2346,5,29,0,0,2346,2347,3,28,14,0,2347,2348,5, + 30,0,0,2348,2385,1,0,0,0,2349,2350,5,190,0,0,2350,2351,5,29,0,0,2351,2352, + 3,30,15,0,2352,2353,5,30,0,0,2353,2385,1,0,0,0,2354,2355,5,189,0,0,2355, + 2356,5,29,0,0,2356,2357,3,28,14,0,2357,2358,5,30,0,0,2358,2385,1,0,0,0, + 2359,2360,5,188,0,0,2360,2361,5,29,0,0,2361,2362,3,28,14,0,2362,2363,5, + 30,0,0,2363,2385,1,0,0,0,2364,2365,5,187,0,0,2365,2366,5,29,0,0,2366,2367, + 3,28,14,0,2367,2368,5,30,0,0,2368,2385,1,0,0,0,2369,2370,5,178,0,0,2370, + 2371,5,29,0,0,2371,2372,3,28,14,0,2372,2373,5,30,0,0,2373,2385,1,0,0,0, + 2374,2375,5,180,0,0,2375,2376,5,29,0,0,2376,2377,3,176,88,0,2377,2378, + 5,30,0,0,2378,2385,1,0,0,0,2379,2380,5,83,0,0,2380,2381,5,29,0,0,2381, + 2382,3,304,152,0,2382,2383,5,30,0,0,2383,2385,1,0,0,0,2384,2309,1,0,0, + 0,2384,2314,1,0,0,0,2384,2319,1,0,0,0,2384,2324,1,0,0,0,2384,2329,1,0, + 0,0,2384,2334,1,0,0,0,2384,2339,1,0,0,0,2384,2344,1,0,0,0,2384,2349,1, + 0,0,0,2384,2354,1,0,0,0,2384,2359,1,0,0,0,2384,2364,1,0,0,0,2384,2369, + 1,0,0,0,2384,2374,1,0,0,0,2384,2379,1,0,0,0,2385,303,1,0,0,0,2386,2388, + 3,306,153,0,2387,2386,1,0,0,0,2388,2391,1,0,0,0,2389,2387,1,0,0,0,2389, + 2390,1,0,0,0,2390,305,1,0,0,0,2391,2389,1,0,0,0,2392,2394,5,172,0,0,2393, + 2392,1,0,0,0,2394,2395,1,0,0,0,2395,2393,1,0,0,0,2395,2396,1,0,0,0,2396, + 307,1,0,0,0,2397,2401,3,302,151,0,2398,2401,3,4,2,0,2399,2401,5,176,0, + 0,2400,2397,1,0,0,0,2400,2398,1,0,0,0,2400,2399,1,0,0,0,2401,309,1,0,0, + 0,2402,2551,3,302,151,0,2403,2404,5,179,0,0,2404,2405,5,29,0,0,2405,2406, + 5,176,0,0,2406,2551,5,30,0,0,2407,2408,5,179,0,0,2408,2409,5,29,0,0,2409, + 2410,5,266,0,0,2410,2551,5,30,0,0,2411,2412,5,193,0,0,2412,2413,5,29,0, + 0,2413,2414,5,38,0,0,2414,2415,5,266,0,0,2415,2551,5,30,0,0,2416,2417, + 5,193,0,0,2417,2418,5,29,0,0,2418,2419,3,134,67,0,2419,2420,5,30,0,0,2420, + 2551,1,0,0,0,2421,2422,5,193,0,0,2422,2423,5,29,0,0,2423,2424,5,176,0, + 0,2424,2551,5,30,0,0,2425,2426,5,194,0,0,2426,2427,5,29,0,0,2427,2428, + 3,310,155,0,2428,2429,5,30,0,0,2429,2551,1,0,0,0,2430,2431,5,185,0,0,2431, + 2432,5,41,0,0,2432,2433,3,28,14,0,2433,2434,5,42,0,0,2434,2435,5,29,0, + 0,2435,2436,3,312,156,0,2436,2437,5,30,0,0,2437,2551,1,0,0,0,2438,2439, + 5,186,0,0,2439,2440,5,41,0,0,2440,2441,3,28,14,0,2441,2442,5,42,0,0,2442, + 2443,5,29,0,0,2443,2444,3,314,157,0,2444,2445,5,30,0,0,2445,2551,1,0,0, + 0,2446,2447,5,184,0,0,2447,2448,5,41,0,0,2448,2449,3,28,14,0,2449,2450, + 5,42,0,0,2450,2451,5,29,0,0,2451,2452,3,316,158,0,2452,2453,5,30,0,0,2453, + 2551,1,0,0,0,2454,2455,5,183,0,0,2455,2456,5,41,0,0,2456,2457,3,28,14, + 0,2457,2458,5,42,0,0,2458,2459,5,29,0,0,2459,2460,3,318,159,0,2460,2461, + 5,30,0,0,2461,2551,1,0,0,0,2462,2463,5,182,0,0,2463,2464,5,41,0,0,2464, + 2465,3,28,14,0,2465,2466,5,42,0,0,2466,2467,5,29,0,0,2467,2468,3,320,160, + 0,2468,2469,5,30,0,0,2469,2551,1,0,0,0,2470,2471,5,181,0,0,2471,2472,5, + 41,0,0,2472,2473,3,28,14,0,2473,2474,5,42,0,0,2474,2475,5,29,0,0,2475, + 2476,3,322,161,0,2476,2477,5,30,0,0,2477,2551,1,0,0,0,2478,2479,5,190, + 0,0,2479,2480,5,41,0,0,2480,2481,3,28,14,0,2481,2482,5,42,0,0,2482,2483, + 5,29,0,0,2483,2484,3,316,158,0,2484,2485,5,30,0,0,2485,2551,1,0,0,0,2486, + 2487,5,189,0,0,2487,2488,5,41,0,0,2488,2489,3,28,14,0,2489,2490,5,42,0, + 0,2490,2491,5,29,0,0,2491,2492,3,318,159,0,2492,2493,5,30,0,0,2493,2551, + 1,0,0,0,2494,2495,5,188,0,0,2495,2496,5,41,0,0,2496,2497,3,28,14,0,2497, + 2498,5,42,0,0,2498,2499,5,29,0,0,2499,2500,3,320,160,0,2500,2501,5,30, + 0,0,2501,2551,1,0,0,0,2502,2503,5,187,0,0,2503,2504,5,41,0,0,2504,2505, + 3,28,14,0,2505,2506,5,42,0,0,2506,2507,5,29,0,0,2507,2508,3,322,161,0, + 2508,2509,5,30,0,0,2509,2551,1,0,0,0,2510,2511,5,178,0,0,2511,2512,5,41, + 0,0,2512,2513,3,28,14,0,2513,2514,5,42,0,0,2514,2515,5,29,0,0,2515,2516, + 3,320,160,0,2516,2517,5,30,0,0,2517,2551,1,0,0,0,2518,2519,5,180,0,0,2519, + 2520,5,41,0,0,2520,2521,3,28,14,0,2521,2522,5,42,0,0,2522,2523,5,29,0, + 0,2523,2524,3,324,162,0,2524,2525,5,30,0,0,2525,2551,1,0,0,0,2526,2527, + 5,179,0,0,2527,2528,5,41,0,0,2528,2529,3,28,14,0,2529,2530,5,42,0,0,2530, + 2531,5,29,0,0,2531,2532,3,326,163,0,2532,2533,5,30,0,0,2533,2551,1,0,0, + 0,2534,2535,5,193,0,0,2535,2536,5,41,0,0,2536,2537,3,28,14,0,2537,2538, + 5,42,0,0,2538,2539,5,29,0,0,2539,2540,3,328,164,0,2540,2541,5,30,0,0,2541, + 2551,1,0,0,0,2542,2543,5,194,0,0,2543,2544,5,41,0,0,2544,2545,3,28,14, + 0,2545,2546,5,42,0,0,2546,2547,5,29,0,0,2547,2548,3,332,166,0,2548,2549, + 5,30,0,0,2549,2551,1,0,0,0,2550,2402,1,0,0,0,2550,2403,1,0,0,0,2550,2407, + 1,0,0,0,2550,2411,1,0,0,0,2550,2416,1,0,0,0,2550,2421,1,0,0,0,2550,2425, + 1,0,0,0,2550,2430,1,0,0,0,2550,2438,1,0,0,0,2550,2446,1,0,0,0,2550,2454, + 1,0,0,0,2550,2462,1,0,0,0,2550,2470,1,0,0,0,2550,2478,1,0,0,0,2550,2486, + 1,0,0,0,2550,2494,1,0,0,0,2550,2502,1,0,0,0,2550,2510,1,0,0,0,2550,2518, + 1,0,0,0,2550,2526,1,0,0,0,2550,2534,1,0,0,0,2550,2542,1,0,0,0,2551,311, + 1,0,0,0,2552,2555,3,32,16,0,2553,2555,3,28,14,0,2554,2552,1,0,0,0,2554, + 2553,1,0,0,0,2555,2558,1,0,0,0,2556,2554,1,0,0,0,2556,2557,1,0,0,0,2557, + 313,1,0,0,0,2558,2556,1,0,0,0,2559,2562,3,32,16,0,2560,2562,3,30,15,0, + 2561,2559,1,0,0,0,2561,2560,1,0,0,0,2562,2565,1,0,0,0,2563,2561,1,0,0, + 0,2563,2564,1,0,0,0,2564,315,1,0,0,0,2565,2563,1,0,0,0,2566,2568,3,30, + 15,0,2567,2566,1,0,0,0,2568,2571,1,0,0,0,2569,2567,1,0,0,0,2569,2570,1, + 0,0,0,2570,317,1,0,0,0,2571,2569,1,0,0,0,2572,2574,3,28,14,0,2573,2572, + 1,0,0,0,2574,2577,1,0,0,0,2575,2573,1,0,0,0,2575,2576,1,0,0,0,2576,319, + 1,0,0,0,2577,2575,1,0,0,0,2578,2580,3,28,14,0,2579,2578,1,0,0,0,2580,2583, + 1,0,0,0,2581,2579,1,0,0,0,2581,2582,1,0,0,0,2582,321,1,0,0,0,2583,2581, + 1,0,0,0,2584,2586,3,28,14,0,2585,2584,1,0,0,0,2586,2589,1,0,0,0,2587,2585, + 1,0,0,0,2587,2588,1,0,0,0,2588,323,1,0,0,0,2589,2587,1,0,0,0,2590,2592, + 3,176,88,0,2591,2590,1,0,0,0,2592,2595,1,0,0,0,2593,2591,1,0,0,0,2593, + 2594,1,0,0,0,2594,325,1,0,0,0,2595,2593,1,0,0,0,2596,2598,7,11,0,0,2597, + 2596,1,0,0,0,2598,2601,1,0,0,0,2599,2597,1,0,0,0,2599,2600,1,0,0,0,2600, + 327,1,0,0,0,2601,2599,1,0,0,0,2602,2604,3,330,165,0,2603,2602,1,0,0,0, + 2604,2607,1,0,0,0,2605,2603,1,0,0,0,2605,2606,1,0,0,0,2606,329,1,0,0,0, + 2607,2605,1,0,0,0,2608,2613,5,176,0,0,2609,2610,5,38,0,0,2610,2613,5,266, + 0,0,2611,2613,3,134,67,0,2612,2608,1,0,0,0,2612,2609,1,0,0,0,2612,2611, + 1,0,0,0,2613,331,1,0,0,0,2614,2616,3,310,155,0,2615,2614,1,0,0,0,2616, + 2619,1,0,0,0,2617,2615,1,0,0,0,2617,2618,1,0,0,0,2618,333,1,0,0,0,2619, + 2617,1,0,0,0,2620,2624,3,40,20,0,2621,2624,3,42,21,0,2622,2624,3,2,1,0, + 2623,2620,1,0,0,0,2623,2621,1,0,0,0,2623,2622,1,0,0,0,2624,335,1,0,0,0, + 2625,2626,5,164,0,0,2626,2627,5,35,0,0,2627,2628,5,29,0,0,2628,2629,3, + 304,152,0,2629,2630,5,30,0,0,2630,2651,1,0,0,0,2631,2632,5,165,0,0,2632, + 2633,3,34,17,0,2633,2634,5,74,0,0,2634,2635,3,34,17,0,2635,2636,5,74,0, + 0,2636,2637,3,34,17,0,2637,2638,5,74,0,0,2638,2639,3,34,17,0,2639,2651, + 1,0,0,0,2640,2641,5,166,0,0,2641,2651,3,4,2,0,2642,2643,5,166,0,0,2643, + 2644,5,35,0,0,2644,2645,5,29,0,0,2645,2646,3,304,152,0,2646,2647,5,30, + 0,0,2647,2651,1,0,0,0,2648,2651,3,334,167,0,2649,2651,3,36,18,0,2650,2625, + 1,0,0,0,2650,2631,1,0,0,0,2650,2640,1,0,0,0,2650,2642,1,0,0,0,2650,2648, + 1,0,0,0,2650,2649,1,0,0,0,2651,337,1,0,0,0,2652,2653,5,24,0,0,2653,2654, + 5,39,0,0,2654,2655,3,94,47,0,2655,2656,3,2,1,0,2656,2665,1,0,0,0,2657, + 2658,5,24,0,0,2658,2659,5,39,0,0,2659,2660,3,94,47,0,2660,2661,3,2,1,0, + 2661,2662,5,33,0,0,2662,2663,3,2,1,0,2663,2665,1,0,0,0,2664,2652,1,0,0, + 0,2664,2657,1,0,0,0,2665,339,1,0,0,0,2666,2668,3,342,171,0,2667,2666,1, + 0,0,0,2668,2671,1,0,0,0,2669,2667,1,0,0,0,2669,2670,1,0,0,0,2670,341,1, + 0,0,0,2671,2669,1,0,0,0,2672,2673,5,177,0,0,2673,2674,5,35,0,0,2674,2675, + 5,29,0,0,2675,2676,3,304,152,0,2676,2677,5,30,0,0,2677,2687,1,0,0,0,2678, + 2687,3,336,168,0,2679,2680,5,167,0,0,2680,2681,5,35,0,0,2681,2682,5,29, + 0,0,2682,2683,3,304,152,0,2683,2684,5,30,0,0,2684,2687,1,0,0,0,2685,2687, + 5,54,0,0,2686,2672,1,0,0,0,2686,2678,1,0,0,0,2686,2679,1,0,0,0,2686,2685, + 1,0,0,0,2687,343,1,0,0,0,2688,2689,5,49,0,0,2689,2693,5,39,0,0,2690,2692, + 3,348,174,0,2691,2690,1,0,0,0,2692,2695,1,0,0,0,2693,2691,1,0,0,0,2693, + 2694,1,0,0,0,2694,2696,1,0,0,0,2695,2693,1,0,0,0,2696,2697,3,2,1,0,2697, + 345,1,0,0,0,2698,2702,5,302,0,0,2699,2701,3,348,174,0,2700,2699,1,0,0, + 0,2701,2704,1,0,0,0,2702,2700,1,0,0,0,2702,2703,1,0,0,0,2703,2705,1,0, + 0,0,2704,2702,1,0,0,0,2705,2706,3,2,1,0,2706,347,1,0,0,0,2707,2723,5,51, + 0,0,2708,2723,5,50,0,0,2709,2723,5,168,0,0,2710,2711,5,61,0,0,2711,2723, + 5,50,0,0,2712,2713,5,61,0,0,2713,2723,5,51,0,0,2714,2715,5,61,0,0,2715, + 2723,5,62,0,0,2716,2717,5,61,0,0,2717,2723,5,63,0,0,2718,2719,5,61,0,0, + 2719,2723,5,64,0,0,2720,2721,5,61,0,0,2721,2723,5,65,0,0,2722,2707,1,0, + 0,0,2722,2708,1,0,0,0,2722,2709,1,0,0,0,2722,2710,1,0,0,0,2722,2712,1, + 0,0,0,2722,2714,1,0,0,0,2722,2716,1,0,0,0,2722,2718,1,0,0,0,2722,2720, + 1,0,0,0,2723,349,1,0,0,0,2724,2726,3,352,176,0,2725,2724,1,0,0,0,2726, + 2729,1,0,0,0,2727,2725,1,0,0,0,2727,2728,1,0,0,0,2728,351,1,0,0,0,2729, + 2727,1,0,0,0,2730,2731,5,20,0,0,2731,2744,3,2,1,0,2732,2733,5,49,0,0,2733, + 2734,5,39,0,0,2734,2744,3,136,68,0,2735,2736,5,24,0,0,2736,2737,5,39,0, + 0,2737,2744,3,2,1,0,2738,2744,3,188,94,0,2739,2740,5,49,0,0,2740,2744, + 3,28,14,0,2741,2744,3,334,167,0,2742,2744,3,36,18,0,2743,2730,1,0,0,0, + 2743,2732,1,0,0,0,2743,2735,1,0,0,0,2743,2738,1,0,0,0,2743,2739,1,0,0, + 0,2743,2741,1,0,0,0,2743,2742,1,0,0,0,2744,353,1,0,0,0,2745,2749,5,276, + 0,0,2746,2748,3,356,178,0,2747,2746,1,0,0,0,2748,2751,1,0,0,0,2749,2747, + 1,0,0,0,2749,2750,1,0,0,0,2750,2752,1,0,0,0,2751,2749,1,0,0,0,2752,2765, + 3,2,1,0,2753,2757,5,276,0,0,2754,2756,3,356,178,0,2755,2754,1,0,0,0,2756, + 2759,1,0,0,0,2757,2755,1,0,0,0,2757,2758,1,0,0,0,2758,2760,1,0,0,0,2759, + 2757,1,0,0,0,2760,2761,3,2,1,0,2761,2762,5,33,0,0,2762,2763,3,2,1,0,2763, + 2765,1,0,0,0,2764,2745,1,0,0,0,2764,2753,1,0,0,0,2765,355,1,0,0,0,2766, + 2767,7,12,0,0,2767,357,1,0,0,0,2768,2770,3,360,180,0,2769,2768,1,0,0,0, + 2770,2773,1,0,0,0,2771,2769,1,0,0,0,2771,2772,1,0,0,0,2772,359,1,0,0,0, + 2773,2771,1,0,0,0,2774,2775,5,20,0,0,2775,2776,3,2,1,0,2776,2777,5,43, + 0,0,2777,2778,3,28,14,0,2778,2785,1,0,0,0,2779,2780,5,24,0,0,2780,2781, + 5,39,0,0,2781,2785,3,2,1,0,2782,2785,3,334,167,0,2783,2785,3,36,18,0,2784, + 2774,1,0,0,0,2784,2779,1,0,0,0,2784,2782,1,0,0,0,2784,2783,1,0,0,0,2785, + 361,1,0,0,0,167,369,373,379,387,439,478,485,505,509,527,554,577,613,619, + 626,628,638,640,647,658,666,687,689,705,750,755,760,765,773,851,857,873, + 879,885,892,997,1004,1006,1011,1013,1021,1033,1045,1052,1064,1091,1098, + 1106,1114,1127,1134,1137,1156,1239,1248,1255,1258,1266,1286,1318,1332, + 1357,1374,1382,1386,1401,1408,1453,1463,1479,1491,1503,1517,1529,1540, + 1547,1557,1570,1575,1580,1589,1600,1683,1692,1705,1716,1724,1734,1736, + 1762,1767,1772,1779,1785,1795,1799,1806,1821,1827,1841,1854,1862,1869, + 1874,1890,1895,1897,1910,1936,1943,1945,1950,1982,1987,2009,2014,2078, + 2087,2100,2111,2122,2125,2132,2144,2158,2172,2180,2200,2212,2217,2224, + 2231,2241,2307,2384,2389,2395,2400,2550,2554,2556,2561,2563,2569,2575, + 2581,2587,2593,2599,2605,2612,2617,2623,2650,2664,2669,2686,2693,2702, + 2722,2727,2743,2749,2757,2764,2771,2784 + }; + + public static readonly ATN _ATN = + new ATNDeserializer().Deserialize(_serializedATN); + + +} +} // namespace ILAssembler diff --git a/src/tools/ilasm/src/ILAssembler/gen/CILVisitor.cs b/src/tools/ilasm/src/ILAssembler/gen/CILVisitor.cs new file mode 100644 index 00000000000000..ff69e1af4e56ca --- /dev/null +++ b/src/tools/ilasm/src/ILAssembler/gen/CILVisitor.cs @@ -0,0 +1,1201 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// ANTLR Version: 4.13.1 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +// Generated from /Users/adeel/projects/runtime5/src/tools/ilasm/src/ILAssembler/gen/CIL.g4 by ANTLR 4.13.1 + +// Unreachable code detected +#pragma warning disable 0162 +// The variable '...' is assigned but its value is never used +#pragma warning disable 0219 +// Missing XML comment for publicly visible type or member '...' +#pragma warning disable 1591 +// Ambiguous reference in cref attribute +#pragma warning disable 419 + +namespace ILAssembler { +using Antlr4.Runtime.Misc; +using Antlr4.Runtime.Tree; +using IToken = Antlr4.Runtime.IToken; + +/// +/// This interface defines a complete generic visitor for a parse tree produced +/// by . +/// +/// The return type of the visit operation. +[System.CodeDom.Compiler.GeneratedCode("ANTLR", "4.13.1")] +[System.CLSCompliant(false)] +public interface ICILVisitor : IParseTreeVisitor { + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitId([NotNull] CILParser.IdContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitDottedName([NotNull] CILParser.DottedNameContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitCompQstring([NotNull] CILParser.CompQstringContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitDecls([NotNull] CILParser.DeclsContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitDecl([NotNull] CILParser.DeclContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitSubsystem([NotNull] CILParser.SubsystemContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitCorflags([NotNull] CILParser.CorflagsContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitAlignment([NotNull] CILParser.AlignmentContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitImagebase([NotNull] CILParser.ImagebaseContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitStackreserve([NotNull] CILParser.StackreserveContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitAssemblyBlock([NotNull] CILParser.AssemblyBlockContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitMscorlib([NotNull] CILParser.MscorlibContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitLanguageDecl([NotNull] CILParser.LanguageDeclContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitTypelist([NotNull] CILParser.TypelistContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitInt32([NotNull] CILParser.Int32Context context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitInt64([NotNull] CILParser.Int64Context context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitFloat64([NotNull] CILParser.Float64Context context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitIntOrWildcard([NotNull] CILParser.IntOrWildcardContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitCompControl([NotNull] CILParser.CompControlContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitTypedefDecl([NotNull] CILParser.TypedefDeclContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitCustomDescr([NotNull] CILParser.CustomDescrContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitCustomDescrWithOwner([NotNull] CILParser.CustomDescrWithOwnerContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitCustomType([NotNull] CILParser.CustomTypeContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitOwnerType([NotNull] CILParser.OwnerTypeContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitCustomBlobDescr([NotNull] CILParser.CustomBlobDescrContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitCustomBlobArgs([NotNull] CILParser.CustomBlobArgsContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitCustomBlobNVPairs([NotNull] CILParser.CustomBlobNVPairsContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitFieldOrProp([NotNull] CILParser.FieldOrPropContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitSerializType([NotNull] CILParser.SerializTypeContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitSerializTypeElement([NotNull] CILParser.SerializTypeElementContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitModuleHead([NotNull] CILParser.ModuleHeadContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitVtfixupDecl([NotNull] CILParser.VtfixupDeclContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitVtfixupAttr([NotNull] CILParser.VtfixupAttrContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitVtableDecl([NotNull] CILParser.VtableDeclContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitNameSpaceHead([NotNull] CILParser.NameSpaceHeadContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitClassHead([NotNull] CILParser.ClassHeadContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitClassAttr([NotNull] CILParser.ClassAttrContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitExtendsClause([NotNull] CILParser.ExtendsClauseContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitImplClause([NotNull] CILParser.ImplClauseContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitClassDecls([NotNull] CILParser.ClassDeclsContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitImplList([NotNull] CILParser.ImplListContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitEsHead([NotNull] CILParser.EsHeadContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitExtSourceSpec([NotNull] CILParser.ExtSourceSpecContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitFileDecl([NotNull] CILParser.FileDeclContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitFileAttr([NotNull] CILParser.FileAttrContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitFileEntry([NotNull] CILParser.FileEntryContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitAsmAttrAny([NotNull] CILParser.AsmAttrAnyContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitAsmAttr([NotNull] CILParser.AsmAttrContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitInstr_none([NotNull] CILParser.Instr_noneContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitInstr_var([NotNull] CILParser.Instr_varContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitInstr_i([NotNull] CILParser.Instr_iContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitInstr_i8([NotNull] CILParser.Instr_i8Context context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitInstr_r([NotNull] CILParser.Instr_rContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitInstr_brtarget([NotNull] CILParser.Instr_brtargetContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitInstr_method([NotNull] CILParser.Instr_methodContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitInstr_field([NotNull] CILParser.Instr_fieldContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitInstr_type([NotNull] CILParser.Instr_typeContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitInstr_string([NotNull] CILParser.Instr_stringContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitInstr_sig([NotNull] CILParser.Instr_sigContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitInstr_tok([NotNull] CILParser.Instr_tokContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitInstr_switch([NotNull] CILParser.Instr_switchContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitInstr([NotNull] CILParser.InstrContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitLabels([NotNull] CILParser.LabelsContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitTypeArgs([NotNull] CILParser.TypeArgsContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitBounds([NotNull] CILParser.BoundsContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitSigArgs([NotNull] CILParser.SigArgsContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitSigArg([NotNull] CILParser.SigArgContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitClassName([NotNull] CILParser.ClassNameContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitSlashedName([NotNull] CILParser.SlashedNameContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitAssemblyDecls([NotNull] CILParser.AssemblyDeclsContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitAssemblyDecl([NotNull] CILParser.AssemblyDeclContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitTypeSpec([NotNull] CILParser.TypeSpecContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitNativeType([NotNull] CILParser.NativeTypeContext context); + /// + /// Visit a parse tree produced by the PointerNativeType + /// labeled alternative in . + /// + /// The parse tree. + /// The visitor result. + Result VisitPointerNativeType([NotNull] CILParser.PointerNativeTypeContext context); + /// + /// Visit a parse tree produced by the PointerArrayTypeNoSizeData + /// labeled alternative in . + /// + /// The parse tree. + /// The visitor result. + Result VisitPointerArrayTypeNoSizeData([NotNull] CILParser.PointerArrayTypeNoSizeDataContext context); + /// + /// Visit a parse tree produced by the PointerArrayTypeSize + /// labeled alternative in . + /// + /// The parse tree. + /// The visitor result. + Result VisitPointerArrayTypeSize([NotNull] CILParser.PointerArrayTypeSizeContext context); + /// + /// Visit a parse tree produced by the PointerArrayTypeSizeParamIndex + /// labeled alternative in . + /// + /// The parse tree. + /// The visitor result. + Result VisitPointerArrayTypeSizeParamIndex([NotNull] CILParser.PointerArrayTypeSizeParamIndexContext context); + /// + /// Visit a parse tree produced by the PointerArrayTypeParamIndex + /// labeled alternative in . + /// + /// The parse tree. + /// The visitor result. + Result VisitPointerArrayTypeParamIndex([NotNull] CILParser.PointerArrayTypeParamIndexContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitNativeTypeElement([NotNull] CILParser.NativeTypeElementContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitIidParamIndex([NotNull] CILParser.IidParamIndexContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitVariantType([NotNull] CILParser.VariantTypeContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitVariantTypeElement([NotNull] CILParser.VariantTypeElementContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitType([NotNull] CILParser.TypeContext context); + /// + /// Visit a parse tree produced by the SZArrayModifier + /// labeled alternative in . + /// + /// The parse tree. + /// The visitor result. + Result VisitSZArrayModifier([NotNull] CILParser.SZArrayModifierContext context); + /// + /// Visit a parse tree produced by the ArrayModifier + /// labeled alternative in . + /// + /// The parse tree. + /// The visitor result. + Result VisitArrayModifier([NotNull] CILParser.ArrayModifierContext context); + /// + /// Visit a parse tree produced by the ByRefModifier + /// labeled alternative in . + /// + /// The parse tree. + /// The visitor result. + Result VisitByRefModifier([NotNull] CILParser.ByRefModifierContext context); + /// + /// Visit a parse tree produced by the PtrModifier + /// labeled alternative in . + /// + /// The parse tree. + /// The visitor result. + Result VisitPtrModifier([NotNull] CILParser.PtrModifierContext context); + /// + /// Visit a parse tree produced by the PinnedModifier + /// labeled alternative in . + /// + /// The parse tree. + /// The visitor result. + Result VisitPinnedModifier([NotNull] CILParser.PinnedModifierContext context); + /// + /// Visit a parse tree produced by the RequiredModifier + /// labeled alternative in . + /// + /// The parse tree. + /// The visitor result. + Result VisitRequiredModifier([NotNull] CILParser.RequiredModifierContext context); + /// + /// Visit a parse tree produced by the OptionalModifier + /// labeled alternative in . + /// + /// The parse tree. + /// The visitor result. + Result VisitOptionalModifier([NotNull] CILParser.OptionalModifierContext context); + /// + /// Visit a parse tree produced by the GenericArgumentsModifier + /// labeled alternative in . + /// + /// The parse tree. + /// The visitor result. + Result VisitGenericArgumentsModifier([NotNull] CILParser.GenericArgumentsModifierContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitElementType([NotNull] CILParser.ElementTypeContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitSimpleType([NotNull] CILParser.SimpleTypeContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitBound([NotNull] CILParser.BoundContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitSecDecl([NotNull] CILParser.SecDeclContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitSecAttrSetBlob([NotNull] CILParser.SecAttrSetBlobContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitSecAttrBlob([NotNull] CILParser.SecAttrBlobContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitNameValPairs([NotNull] CILParser.NameValPairsContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitNameValPair([NotNull] CILParser.NameValPairContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitTruefalse([NotNull] CILParser.TruefalseContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitCaValue([NotNull] CILParser.CaValueContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitSecAction([NotNull] CILParser.SecActionContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitMethodRef([NotNull] CILParser.MethodRefContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitCallConv([NotNull] CILParser.CallConvContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitCallKind([NotNull] CILParser.CallKindContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitMdtoken([NotNull] CILParser.MdtokenContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitMemberRef([NotNull] CILParser.MemberRefContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitFieldRef([NotNull] CILParser.FieldRefContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitTypeList([NotNull] CILParser.TypeListContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitTyparsClause([NotNull] CILParser.TyparsClauseContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitTyparAttrib([NotNull] CILParser.TyparAttribContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitTyparAttribs([NotNull] CILParser.TyparAttribsContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitTypar([NotNull] CILParser.TyparContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitTypars([NotNull] CILParser.TyparsContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitTyBound([NotNull] CILParser.TyBoundContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitGenArity([NotNull] CILParser.GenArityContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitGenArityNotEmpty([NotNull] CILParser.GenArityNotEmptyContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitClassDecl([NotNull] CILParser.ClassDeclContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitFieldDecl([NotNull] CILParser.FieldDeclContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitFieldAttr([NotNull] CILParser.FieldAttrContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitAtOpt([NotNull] CILParser.AtOptContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitInitOpt([NotNull] CILParser.InitOptContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitRepeatOpt([NotNull] CILParser.RepeatOptContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitEventHead([NotNull] CILParser.EventHeadContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitEventAttr([NotNull] CILParser.EventAttrContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitEventDecls([NotNull] CILParser.EventDeclsContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitEventDecl([NotNull] CILParser.EventDeclContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitPropHead([NotNull] CILParser.PropHeadContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitPropAttr([NotNull] CILParser.PropAttrContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitPropDecls([NotNull] CILParser.PropDeclsContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitPropDecl([NotNull] CILParser.PropDeclContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitMarshalClause([NotNull] CILParser.MarshalClauseContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitMarshalBlob([NotNull] CILParser.MarshalBlobContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitParamAttr([NotNull] CILParser.ParamAttrContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitParamAttrElement([NotNull] CILParser.ParamAttrElementContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitMethodHead([NotNull] CILParser.MethodHeadContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitMethAttr([NotNull] CILParser.MethAttrContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitPinvImpl([NotNull] CILParser.PinvImplContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitPinvAttr([NotNull] CILParser.PinvAttrContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitMethodName([NotNull] CILParser.MethodNameContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitImplAttr([NotNull] CILParser.ImplAttrContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitMethodDecls([NotNull] CILParser.MethodDeclsContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitMethodDecl([NotNull] CILParser.MethodDeclContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitLabelDecl([NotNull] CILParser.LabelDeclContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitCustomDescrInMethodBody([NotNull] CILParser.CustomDescrInMethodBodyContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitScopeBlock([NotNull] CILParser.ScopeBlockContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitSehBlock([NotNull] CILParser.SehBlockContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitSehClauses([NotNull] CILParser.SehClausesContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitTryBlock([NotNull] CILParser.TryBlockContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitSehClause([NotNull] CILParser.SehClauseContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitFilterClause([NotNull] CILParser.FilterClauseContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitCatchClause([NotNull] CILParser.CatchClauseContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitFinallyClause([NotNull] CILParser.FinallyClauseContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitFaultClause([NotNull] CILParser.FaultClauseContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitHandlerBlock([NotNull] CILParser.HandlerBlockContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitDataDecl([NotNull] CILParser.DataDeclContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitDdHead([NotNull] CILParser.DdHeadContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitTls([NotNull] CILParser.TlsContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitDdBody([NotNull] CILParser.DdBodyContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitDdItemList([NotNull] CILParser.DdItemListContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitDdItemCount([NotNull] CILParser.DdItemCountContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitDdItem([NotNull] CILParser.DdItemContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitFieldSerInit([NotNull] CILParser.FieldSerInitContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitBytes([NotNull] CILParser.BytesContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitHexbytes([NotNull] CILParser.HexbytesContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitFieldInit([NotNull] CILParser.FieldInitContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitSerInit([NotNull] CILParser.SerInitContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitF32seq([NotNull] CILParser.F32seqContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitF64seq([NotNull] CILParser.F64seqContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitI64seq([NotNull] CILParser.I64seqContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitI32seq([NotNull] CILParser.I32seqContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitI16seq([NotNull] CILParser.I16seqContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitI8seq([NotNull] CILParser.I8seqContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitBoolSeq([NotNull] CILParser.BoolSeqContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitSqstringSeq([NotNull] CILParser.SqstringSeqContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitClassSeq([NotNull] CILParser.ClassSeqContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitClassSeqElement([NotNull] CILParser.ClassSeqElementContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitObjSeq([NotNull] CILParser.ObjSeqContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitCustomAttrDecl([NotNull] CILParser.CustomAttrDeclContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitAsmOrRefDecl([NotNull] CILParser.AsmOrRefDeclContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitAssemblyRefHead([NotNull] CILParser.AssemblyRefHeadContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitAssemblyRefDecls([NotNull] CILParser.AssemblyRefDeclsContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitAssemblyRefDecl([NotNull] CILParser.AssemblyRefDeclContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitExptypeHead([NotNull] CILParser.ExptypeHeadContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitExportHead([NotNull] CILParser.ExportHeadContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitExptAttr([NotNull] CILParser.ExptAttrContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitExptypeDecls([NotNull] CILParser.ExptypeDeclsContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitExptypeDecl([NotNull] CILParser.ExptypeDeclContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitManifestResHead([NotNull] CILParser.ManifestResHeadContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitManresAttr([NotNull] CILParser.ManresAttrContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitManifestResDecls([NotNull] CILParser.ManifestResDeclsContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitManifestResDecl([NotNull] CILParser.ManifestResDeclContext context); +} +} // namespace ILAssembler diff --git a/src/tools/ilasm/src/ILAssembler/gen/ilasm-generator.csproj b/src/tools/ilasm/src/ILAssembler/gen/ilasm-generator.csproj new file mode 100644 index 00000000000000..286a4c18097c55 --- /dev/null +++ b/src/tools/ilasm/src/ILAssembler/gen/ilasm-generator.csproj @@ -0,0 +1,29 @@ + + + + $(NetCoreAppToolCurrent) + true + enable + $(NoWarn);CS3021 + true + false + false + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + + false + false + ILAssembler + $(ProjectDir) + + + From 6ba9d05ae4b77de45977971a8c2ab918bd50edf4 Mon Sep 17 00:00:00 2001 From: Adeel Mujahid <3840695+am11@users.noreply.github.com> Date: Tue, 24 Feb 2026 16:31:20 +0200 Subject: [PATCH 3/4] Implement workaround for ANTLR generated paths --- .../src/ILAssembler/gen/ilasm-generator.csproj | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/tools/ilasm/src/ILAssembler/gen/ilasm-generator.csproj b/src/tools/ilasm/src/ILAssembler/gen/ilasm-generator.csproj index 286a4c18097c55..c5bbe1eb8bfece 100644 --- a/src/tools/ilasm/src/ILAssembler/gen/ilasm-generator.csproj +++ b/src/tools/ilasm/src/ILAssembler/gen/ilasm-generator.csproj @@ -24,6 +24,21 @@ false ILAssembler $(ProjectDir) + $(ProjectDir) + + + + + <_AntlrGeneratedFiles Include="$(ProjectDir)CIL*.cs" /> + + + + + From 4895e035109393a77af05d03eb00166751f0bae1 Mon Sep 17 00:00:00 2001 From: Adeel Mujahid <3840695+am11@users.noreply.github.com> Date: Tue, 24 Feb 2026 14:35:44 +0000 Subject: [PATCH 4/4] Update generated files --- src/tools/ilasm/src/ILAssembler/gen/CILBaseVisitor.cs | 2 +- src/tools/ilasm/src/ILAssembler/gen/CILLexer.cs | 2 +- src/tools/ilasm/src/ILAssembler/gen/CILParser.cs | 2 +- src/tools/ilasm/src/ILAssembler/gen/CILVisitor.cs | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/tools/ilasm/src/ILAssembler/gen/CILBaseVisitor.cs b/src/tools/ilasm/src/ILAssembler/gen/CILBaseVisitor.cs index 8fdf39b809e55b..a50bf625bf146b 100644 --- a/src/tools/ilasm/src/ILAssembler/gen/CILBaseVisitor.cs +++ b/src/tools/ilasm/src/ILAssembler/gen/CILBaseVisitor.cs @@ -8,7 +8,7 @@ // //------------------------------------------------------------------------------ -// Generated from /Users/adeel/projects/runtime5/src/tools/ilasm/src/ILAssembler/gen/CIL.g4 by ANTLR 4.13.1 +// Generated from CIL.g4 by ANTLR 4.13.1 // Unreachable code detected #pragma warning disable 0162 diff --git a/src/tools/ilasm/src/ILAssembler/gen/CILLexer.cs b/src/tools/ilasm/src/ILAssembler/gen/CILLexer.cs index b49cc65a44ac07..3919ccc16fca7b 100644 --- a/src/tools/ilasm/src/ILAssembler/gen/CILLexer.cs +++ b/src/tools/ilasm/src/ILAssembler/gen/CILLexer.cs @@ -8,7 +8,7 @@ // //------------------------------------------------------------------------------ -// Generated from /Users/adeel/projects/runtime5/src/tools/ilasm/src/ILAssembler/gen/CIL.g4 by ANTLR 4.13.1 +// Generated from CIL.g4 by ANTLR 4.13.1 // Unreachable code detected #pragma warning disable 0162 diff --git a/src/tools/ilasm/src/ILAssembler/gen/CILParser.cs b/src/tools/ilasm/src/ILAssembler/gen/CILParser.cs index 7a69d2620c7743..ae2074e884ce30 100644 --- a/src/tools/ilasm/src/ILAssembler/gen/CILParser.cs +++ b/src/tools/ilasm/src/ILAssembler/gen/CILParser.cs @@ -8,7 +8,7 @@ // //------------------------------------------------------------------------------ -// Generated from /Users/adeel/projects/runtime5/src/tools/ilasm/src/ILAssembler/gen/CIL.g4 by ANTLR 4.13.1 +// Generated from CIL.g4 by ANTLR 4.13.1 // Unreachable code detected #pragma warning disable 0162 diff --git a/src/tools/ilasm/src/ILAssembler/gen/CILVisitor.cs b/src/tools/ilasm/src/ILAssembler/gen/CILVisitor.cs index ff69e1af4e56ca..205718d840681c 100644 --- a/src/tools/ilasm/src/ILAssembler/gen/CILVisitor.cs +++ b/src/tools/ilasm/src/ILAssembler/gen/CILVisitor.cs @@ -8,7 +8,7 @@ // //------------------------------------------------------------------------------ -// Generated from /Users/adeel/projects/runtime5/src/tools/ilasm/src/ILAssembler/gen/CIL.g4 by ANTLR 4.13.1 +// Generated from CIL.g4 by ANTLR 4.13.1 // Unreachable code detected #pragma warning disable 0162