diff --git a/.gitignore b/.gitignore index 6dd2aa3..8ba7172 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ node_modules -examples +examples/Example - Pascal Frontend dist lerna-debug.log +examples\Example - Pascal Symbol Table\symbol-table.json \ No newline at end of file diff --git a/examples/Example - Pascal Symbol Table/.antlr/pascal.interp b/examples/Example - Pascal Symbol Table/.antlr/pascal.interp new file mode 100644 index 0000000..80778c0 --- /dev/null +++ b/examples/Example - Pascal Symbol Table/.antlr/pascal.interp @@ -0,0 +1,269 @@ +token literal names: +null +'AND' +'ARRAY' +'BEGIN' +'BOOLEAN' +'CASE' +'CHAR' +'CHR' +'CONST' +'DIV' +'DO' +'DOWNTO' +'ELSE' +'END' +'FILE' +'FOR' +'FUNCTION' +'GOTO' +'IF' +'IN' +'INTEGER' +'LABEL' +'MOD' +'NIL' +'NOT' +'OF' +'OR' +'PACKED' +'PROCEDURE' +'PROGRAM' +'REAL' +'RECORD' +'REPEAT' +'SET' +'THEN' +'TO' +'TYPE' +'UNTIL' +'VAR' +'WHILE' +'WITH' +'+' +'-' +'*' +'/' +':=' +',' +';' +':' +'=' +'<>' +'<' +'<=' +'>=' +'>' +'(' +')' +'[' +'(.' +']' +'.)' +'^' +'@' +'.' +'..' +'{' +'}' +'UNIT' +'INTERFACE' +'USES' +'STRING' +'IMPLEMENTATION' +'TRUE' +'FALSE' +null +null +null +null +null +null +null + +token symbolic names: +null +AND +ARRAY +BEGIN +BOOLEAN +CASE +CHAR +CHR +CONST +DIV +DO +DOWNTO +ELSE +END +FILE +FOR +FUNCTION +GOTO +IF +IN +INTEGER +LABEL +MOD +NIL +NOT +OF +OR +PACKED +PROCEDURE +PROGRAM +REAL +RECORD +REPEAT +SET +THEN +TO +TYPE +UNTIL +VAR +WHILE +WITH +PLUS +MINUS +STAR +SLASH +ASSIGN +COMMA +SEMI +COLON +EQUAL +NOT_EQUAL +LT +LE +GE +GT +LPAREN +RPAREN +LBRACK +LBRACK2 +RBRACK +RBRACK2 +POINTER +AT +DOT +DOTDOT +LCURLY +RCURLY +UNIT +INTERFACE +USES +STRING +IMPLEMENTATION +TRUE +FALSE +WS +COMMENT_1 +COMMENT_2 +IDENT +STRING_LITERAL +NUM_INT +NUM_REAL + +rule names: +start +program +programHeading +identifier +block +usesUnitsPart +labelDeclarationPart +label +constantDefinitionPart +constantDefinition +constantChr +constant +unsignedNumber +unsignedInteger +unsignedReal +sign +bool_ +string +typeDefinitionPart +typeDefinition +functionType +procedureType +type_ +simpleType +scalarType +subrangeType +typeIdentifier +structuredType +unpackedStructuredType +stringtype +arrayType +typeList +indexType +componentType +recordType +fieldList +fixedPart +recordSection +variantPart +tag +variant +setType +baseType +fileType +pointerType +variableDeclarationPart +variableDeclaration +procedureAndFunctionDeclarationPart +procedureOrFunctionDeclaration +procedureDeclaration +formalParameterList +formalParameterSection +parameterGroup +identifierList +constList +functionDeclaration +resultType +statement +unlabelledStatement +simpleStatement +assignmentStatement +variable +expression +relationaloperator +simpleExpression +additiveoperator +term +multiplicativeoperator +signedFactor +factor +unsignedConstant +functionDesignator +parameterList +set_ +elementList +element +procedureStatement +actualParameter +parameterwidth +gotoStatement +emptyStatement_ +empty_ +structuredStatement +compoundStatement +statements +conditionalStatement +ifStatement +caseStatement +caseListElement +repetetiveStatement +whileStatement +repeatStatement +forStatement +forList +initialValue +finalValue +withStatement +recordVariableList + + +atn: +[3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 3, 82, 806, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 4, 27, 9, 27, 4, 28, 9, 28, 4, 29, 9, 29, 4, 30, 9, 30, 4, 31, 9, 31, 4, 32, 9, 32, 4, 33, 9, 33, 4, 34, 9, 34, 4, 35, 9, 35, 4, 36, 9, 36, 4, 37, 9, 37, 4, 38, 9, 38, 4, 39, 9, 39, 4, 40, 9, 40, 4, 41, 9, 41, 4, 42, 9, 42, 4, 43, 9, 43, 4, 44, 9, 44, 4, 45, 9, 45, 4, 46, 9, 46, 4, 47, 9, 47, 4, 48, 9, 48, 4, 49, 9, 49, 4, 50, 9, 50, 4, 51, 9, 51, 4, 52, 9, 52, 4, 53, 9, 53, 4, 54, 9, 54, 4, 55, 9, 55, 4, 56, 9, 56, 4, 57, 9, 57, 4, 58, 9, 58, 4, 59, 9, 59, 4, 60, 9, 60, 4, 61, 9, 61, 4, 62, 9, 62, 4, 63, 9, 63, 4, 64, 9, 64, 4, 65, 9, 65, 4, 66, 9, 66, 4, 67, 9, 67, 4, 68, 9, 68, 4, 69, 9, 69, 4, 70, 9, 70, 4, 71, 9, 71, 4, 72, 9, 72, 4, 73, 9, 73, 4, 74, 9, 74, 4, 75, 9, 75, 4, 76, 9, 76, 4, 77, 9, 77, 4, 78, 9, 78, 4, 79, 9, 79, 4, 80, 9, 80, 4, 81, 9, 81, 4, 82, 9, 82, 4, 83, 9, 83, 4, 84, 9, 84, 4, 85, 9, 85, 4, 86, 9, 86, 4, 87, 9, 87, 4, 88, 9, 88, 4, 89, 9, 89, 4, 90, 9, 90, 4, 91, 9, 91, 4, 92, 9, 92, 4, 93, 9, 93, 4, 94, 9, 94, 4, 95, 9, 95, 4, 96, 9, 96, 4, 97, 9, 97, 4, 98, 9, 98, 4, 99, 9, 99, 3, 2, 3, 2, 3, 3, 3, 3, 5, 3, 203, 10, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 5, 4, 215, 10, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 5, 4, 223, 10, 4, 3, 5, 3, 5, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 7, 6, 234, 10, 6, 12, 6, 14, 6, 237, 11, 6, 3, 6, 3, 6, 3, 7, 3, 7, 3, 7, 3, 7, 3, 8, 3, 8, 3, 8, 3, 8, 7, 8, 249, 10, 8, 12, 8, 14, 8, 252, 11, 8, 3, 8, 3, 8, 3, 9, 3, 9, 3, 10, 3, 10, 3, 10, 3, 10, 6, 10, 262, 10, 10, 13, 10, 14, 10, 263, 3, 11, 3, 11, 3, 11, 3, 11, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 5, 13, 285, 10, 13, 3, 14, 3, 14, 5, 14, 289, 10, 14, 3, 15, 3, 15, 3, 16, 3, 16, 3, 17, 3, 17, 3, 18, 3, 18, 3, 19, 3, 19, 3, 20, 3, 20, 3, 20, 3, 20, 6, 20, 305, 10, 20, 13, 20, 14, 20, 306, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 5, 21, 314, 10, 21, 3, 22, 3, 22, 5, 22, 318, 10, 22, 3, 22, 3, 22, 3, 22, 3, 23, 3, 23, 5, 23, 325, 10, 23, 3, 24, 3, 24, 3, 24, 5, 24, 330, 10, 24, 3, 25, 3, 25, 3, 25, 3, 25, 5, 25, 336, 10, 25, 3, 26, 3, 26, 3, 26, 3, 26, 3, 27, 3, 27, 3, 27, 3, 27, 3, 28, 3, 28, 5, 28, 348, 10, 28, 3, 29, 3, 29, 3, 29, 5, 29, 353, 10, 29, 3, 30, 3, 30, 3, 30, 3, 30, 5, 30, 359, 10, 30, 3, 31, 3, 31, 3, 31, 3, 31, 5, 31, 365, 10, 31, 3, 31, 3, 31, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 5, 32, 383, 10, 32, 3, 33, 3, 33, 3, 33, 7, 33, 388, 10, 33, 12, 33, 14, 33, 391, 11, 33, 3, 34, 3, 34, 3, 35, 3, 35, 3, 36, 3, 36, 5, 36, 399, 10, 36, 3, 36, 3, 36, 3, 37, 3, 37, 3, 37, 5, 37, 406, 10, 37, 3, 37, 5, 37, 409, 10, 37, 3, 38, 3, 38, 3, 38, 7, 38, 414, 10, 38, 12, 38, 14, 38, 417, 11, 38, 3, 39, 3, 39, 3, 39, 3, 39, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 7, 40, 429, 10, 40, 12, 40, 14, 40, 432, 11, 40, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 5, 41, 439, 10, 41, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 43, 3, 43, 3, 43, 3, 43, 3, 44, 3, 44, 3, 45, 3, 45, 3, 45, 3, 45, 5, 45, 457, 10, 45, 3, 46, 3, 46, 3, 46, 3, 47, 3, 47, 3, 47, 3, 47, 7, 47, 466, 10, 47, 12, 47, 14, 47, 469, 11, 47, 3, 47, 3, 47, 3, 48, 3, 48, 3, 48, 3, 48, 3, 49, 3, 49, 3, 49, 3, 50, 3, 50, 5, 50, 482, 10, 50, 3, 51, 3, 51, 3, 51, 5, 51, 487, 10, 51, 3, 51, 3, 51, 3, 51, 3, 52, 3, 52, 3, 52, 3, 52, 7, 52, 496, 10, 52, 12, 52, 14, 52, 499, 11, 52, 3, 52, 3, 52, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 5, 53, 510, 10, 53, 3, 54, 3, 54, 3, 54, 3, 54, 3, 55, 3, 55, 3, 55, 7, 55, 519, 10, 55, 12, 55, 14, 55, 522, 11, 55, 3, 56, 3, 56, 3, 56, 7, 56, 527, 10, 56, 12, 56, 14, 56, 530, 11, 56, 3, 57, 3, 57, 3, 57, 5, 57, 535, 10, 57, 3, 57, 3, 57, 3, 57, 3, 57, 3, 57, 3, 58, 3, 58, 3, 59, 3, 59, 3, 59, 3, 59, 3, 59, 5, 59, 549, 10, 59, 3, 60, 3, 60, 5, 60, 553, 10, 60, 3, 61, 3, 61, 3, 61, 3, 61, 5, 61, 559, 10, 61, 3, 62, 3, 62, 3, 62, 3, 62, 3, 63, 3, 63, 3, 63, 5, 63, 568, 10, 63, 3, 63, 3, 63, 3, 63, 3, 63, 7, 63, 574, 10, 63, 12, 63, 14, 63, 577, 11, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 7, 63, 585, 10, 63, 12, 63, 14, 63, 588, 11, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 7, 63, 595, 10, 63, 12, 63, 14, 63, 598, 11, 63, 3, 64, 3, 64, 3, 64, 3, 64, 5, 64, 604, 10, 64, 3, 65, 3, 65, 3, 66, 3, 66, 3, 66, 3, 66, 5, 66, 612, 10, 66, 3, 67, 3, 67, 3, 68, 3, 68, 3, 68, 3, 68, 5, 68, 620, 10, 68, 3, 69, 3, 69, 3, 70, 5, 70, 625, 10, 70, 3, 70, 3, 70, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 5, 71, 640, 10, 71, 3, 72, 3, 72, 3, 72, 3, 72, 5, 72, 646, 10, 72, 3, 73, 3, 73, 3, 73, 3, 73, 3, 73, 3, 74, 3, 74, 3, 74, 7, 74, 656, 10, 74, 12, 74, 14, 74, 659, 11, 74, 3, 75, 3, 75, 3, 75, 3, 75, 3, 75, 3, 75, 3, 75, 3, 75, 5, 75, 669, 10, 75, 3, 76, 3, 76, 3, 76, 7, 76, 674, 10, 76, 12, 76, 14, 76, 677, 11, 76, 3, 76, 5, 76, 680, 10, 76, 3, 77, 3, 77, 3, 77, 5, 77, 685, 10, 77, 3, 78, 3, 78, 3, 78, 3, 78, 3, 78, 5, 78, 692, 10, 78, 3, 79, 3, 79, 7, 79, 696, 10, 79, 12, 79, 14, 79, 699, 11, 79, 3, 80, 3, 80, 3, 80, 3, 81, 3, 81, 3, 81, 3, 82, 3, 82, 3, 83, 3, 83, 3, 84, 3, 84, 3, 84, 3, 84, 5, 84, 715, 10, 84, 3, 85, 3, 85, 3, 85, 3, 85, 3, 86, 3, 86, 3, 86, 7, 86, 724, 10, 86, 12, 86, 14, 86, 727, 11, 86, 3, 87, 3, 87, 5, 87, 731, 10, 87, 3, 88, 3, 88, 3, 88, 3, 88, 3, 88, 3, 88, 5, 88, 739, 10, 88, 3, 89, 3, 89, 3, 89, 3, 89, 3, 89, 3, 89, 7, 89, 747, 10, 89, 12, 89, 14, 89, 750, 11, 89, 3, 89, 3, 89, 3, 89, 5, 89, 755, 10, 89, 3, 89, 3, 89, 3, 90, 3, 90, 3, 90, 3, 90, 3, 91, 3, 91, 3, 91, 5, 91, 766, 10, 91, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 93, 3, 93, 3, 93, 3, 93, 3, 93, 3, 94, 3, 94, 3, 94, 3, 94, 3, 94, 3, 94, 3, 94, 3, 95, 3, 95, 3, 95, 3, 95, 3, 96, 3, 96, 3, 97, 3, 97, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 99, 3, 99, 3, 99, 7, 99, 801, 10, 99, 12, 99, 14, 99, 804, 11, 99, 3, 99, 2, 2, 100, 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, 2, 9, 3, 2, 43, 44, 3, 2, 74, 75, 7, 2, 6, 6, 8, 8, 22, 22, 32, 32, 72, 72, 4, 2, 21, 21, 51, 56, 4, 2, 28, 28, 43, 44, 6, 2, 3, 3, 11, 11, 24, 24, 45, 46, 4, 2, 13, 13, 37, 37, 2, 803, 2, 198, 3, 2, 2, 2, 4, 200, 3, 2, 2, 2, 6, 222, 3, 2, 2, 2, 8, 224, 3, 2, 2, 2, 10, 235, 3, 2, 2, 2, 12, 240, 3, 2, 2, 2, 14, 244, 3, 2, 2, 2, 16, 255, 3, 2, 2, 2, 18, 257, 3, 2, 2, 2, 20, 265, 3, 2, 2, 2, 22, 269, 3, 2, 2, 2, 24, 284, 3, 2, 2, 2, 26, 288, 3, 2, 2, 2, 28, 290, 3, 2, 2, 2, 30, 292, 3, 2, 2, 2, 32, 294, 3, 2, 2, 2, 34, 296, 3, 2, 2, 2, 36, 298, 3, 2, 2, 2, 38, 300, 3, 2, 2, 2, 40, 308, 3, 2, 2, 2, 42, 315, 3, 2, 2, 2, 44, 322, 3, 2, 2, 2, 46, 329, 3, 2, 2, 2, 48, 335, 3, 2, 2, 2, 50, 337, 3, 2, 2, 2, 52, 341, 3, 2, 2, 2, 54, 347, 3, 2, 2, 2, 56, 352, 3, 2, 2, 2, 58, 358, 3, 2, 2, 2, 60, 360, 3, 2, 2, 2, 62, 382, 3, 2, 2, 2, 64, 384, 3, 2, 2, 2, 66, 392, 3, 2, 2, 2, 68, 394, 3, 2, 2, 2, 70, 396, 3, 2, 2, 2, 72, 408, 3, 2, 2, 2, 74, 410, 3, 2, 2, 2, 76, 418, 3, 2, 2, 2, 78, 422, 3, 2, 2, 2, 80, 438, 3, 2, 2, 2, 82, 440, 3, 2, 2, 2, 84, 446, 3, 2, 2, 2, 86, 450, 3, 2, 2, 2, 88, 456, 3, 2, 2, 2, 90, 458, 3, 2, 2, 2, 92, 461, 3, 2, 2, 2, 94, 472, 3, 2, 2, 2, 96, 476, 3, 2, 2, 2, 98, 481, 3, 2, 2, 2, 100, 483, 3, 2, 2, 2, 102, 491, 3, 2, 2, 2, 104, 509, 3, 2, 2, 2, 106, 511, 3, 2, 2, 2, 108, 515, 3, 2, 2, 2, 110, 523, 3, 2, 2, 2, 112, 531, 3, 2, 2, 2, 114, 541, 3, 2, 2, 2, 116, 548, 3, 2, 2, 2, 118, 552, 3, 2, 2, 2, 120, 558, 3, 2, 2, 2, 122, 560, 3, 2, 2, 2, 124, 567, 3, 2, 2, 2, 126, 599, 3, 2, 2, 2, 128, 605, 3, 2, 2, 2, 130, 607, 3, 2, 2, 2, 132, 613, 3, 2, 2, 2, 134, 615, 3, 2, 2, 2, 136, 621, 3, 2, 2, 2, 138, 624, 3, 2, 2, 2, 140, 639, 3, 2, 2, 2, 142, 645, 3, 2, 2, 2, 144, 647, 3, 2, 2, 2, 146, 652, 3, 2, 2, 2, 148, 668, 3, 2, 2, 2, 150, 679, 3, 2, 2, 2, 152, 681, 3, 2, 2, 2, 154, 686, 3, 2, 2, 2, 156, 693, 3, 2, 2, 2, 158, 700, 3, 2, 2, 2, 160, 703, 3, 2, 2, 2, 162, 706, 3, 2, 2, 2, 164, 708, 3, 2, 2, 2, 166, 714, 3, 2, 2, 2, 168, 716, 3, 2, 2, 2, 170, 720, 3, 2, 2, 2, 172, 730, 3, 2, 2, 2, 174, 732, 3, 2, 2, 2, 176, 740, 3, 2, 2, 2, 178, 758, 3, 2, 2, 2, 180, 765, 3, 2, 2, 2, 182, 767, 3, 2, 2, 2, 184, 772, 3, 2, 2, 2, 186, 777, 3, 2, 2, 2, 188, 784, 3, 2, 2, 2, 190, 788, 3, 2, 2, 2, 192, 790, 3, 2, 2, 2, 194, 792, 3, 2, 2, 2, 196, 797, 3, 2, 2, 2, 198, 199, 5, 4, 3, 2, 199, 3, 3, 2, 2, 2, 200, 202, 5, 6, 4, 2, 201, 203, 7, 70, 2, 2, 202, 201, 3, 2, 2, 2, 202, 203, 3, 2, 2, 2, 203, 204, 3, 2, 2, 2, 204, 205, 5, 10, 6, 2, 205, 206, 7, 65, 2, 2, 206, 207, 7, 2, 2, 3, 207, 5, 3, 2, 2, 2, 208, 209, 7, 31, 2, 2, 209, 214, 5, 8, 5, 2, 210, 211, 7, 57, 2, 2, 211, 212, 5, 108, 55, 2, 212, 213, 7, 58, 2, 2, 213, 215, 3, 2, 2, 2, 214, 210, 3, 2, 2, 2, 214, 215, 3, 2, 2, 2, 215, 216, 3, 2, 2, 2, 216, 217, 7, 49, 2, 2, 217, 223, 3, 2, 2, 2, 218, 219, 7, 69, 2, 2, 219, 220, 5, 8, 5, 2, 220, 221, 7, 49, 2, 2, 221, 223, 3, 2, 2, 2, 222, 208, 3, 2, 2, 2, 222, 218, 3, 2, 2, 2, 223, 7, 3, 2, 2, 2, 224, 225, 7, 79, 2, 2, 225, 9, 3, 2, 2, 2, 226, 234, 5, 14, 8, 2, 227, 234, 5, 18, 10, 2, 228, 234, 5, 38, 20, 2, 229, 234, 5, 92, 47, 2, 230, 234, 5, 96, 49, 2, 231, 234, 5, 12, 7, 2, 232, 234, 7, 73, 2, 2, 233, 226, 3, 2, 2, 2, 233, 227, 3, 2, 2, 2, 233, 228, 3, 2, 2, 2, 233, 229, 3, 2, 2, 2, 233, 230, 3, 2, 2, 2, 233, 231, 3, 2, 2, 2, 233, 232, 3, 2, 2, 2, 234, 237, 3, 2, 2, 2, 235, 233, 3, 2, 2, 2, 235, 236, 3, 2, 2, 2, 236, 238, 3, 2, 2, 2, 237, 235, 3, 2, 2, 2, 238, 239, 5, 168, 85, 2, 239, 11, 3, 2, 2, 2, 240, 241, 7, 71, 2, 2, 241, 242, 5, 108, 55, 2, 242, 243, 7, 49, 2, 2, 243, 13, 3, 2, 2, 2, 244, 245, 7, 23, 2, 2, 245, 250, 5, 16, 9, 2, 246, 247, 7, 48, 2, 2, 247, 249, 5, 16, 9, 2, 248, 246, 3, 2, 2, 2, 249, 252, 3, 2, 2, 2, 250, 248, 3, 2, 2, 2, 250, 251, 3, 2, 2, 2, 251, 253, 3, 2, 2, 2, 252, 250, 3, 2, 2, 2, 253, 254, 7, 49, 2, 2, 254, 15, 3, 2, 2, 2, 255, 256, 5, 28, 15, 2, 256, 17, 3, 2, 2, 2, 257, 261, 7, 10, 2, 2, 258, 259, 5, 20, 11, 2, 259, 260, 7, 49, 2, 2, 260, 262, 3, 2, 2, 2, 261, 258, 3, 2, 2, 2, 262, 263, 3, 2, 2, 2, 263, 261, 3, 2, 2, 2, 263, 264, 3, 2, 2, 2, 264, 19, 3, 2, 2, 2, 265, 266, 5, 8, 5, 2, 266, 267, 7, 51, 2, 2, 267, 268, 5, 24, 13, 2, 268, 21, 3, 2, 2, 2, 269, 270, 7, 9, 2, 2, 270, 271, 7, 57, 2, 2, 271, 272, 5, 28, 15, 2, 272, 273, 7, 58, 2, 2, 273, 23, 3, 2, 2, 2, 274, 285, 5, 26, 14, 2, 275, 276, 5, 32, 17, 2, 276, 277, 5, 26, 14, 2, 277, 285, 3, 2, 2, 2, 278, 285, 5, 8, 5, 2, 279, 280, 5, 32, 17, 2, 280, 281, 5, 8, 5, 2, 281, 285, 3, 2, 2, 2, 282, 285, 5, 36, 19, 2, 283, 285, 5, 22, 12, 2, 284, 274, 3, 2, 2, 2, 284, 275, 3, 2, 2, 2, 284, 278, 3, 2, 2, 2, 284, 279, 3, 2, 2, 2, 284, 282, 3, 2, 2, 2, 284, 283, 3, 2, 2, 2, 285, 25, 3, 2, 2, 2, 286, 289, 5, 28, 15, 2, 287, 289, 5, 30, 16, 2, 288, 286, 3, 2, 2, 2, 288, 287, 3, 2, 2, 2, 289, 27, 3, 2, 2, 2, 290, 291, 7, 81, 2, 2, 291, 29, 3, 2, 2, 2, 292, 293, 7, 82, 2, 2, 293, 31, 3, 2, 2, 2, 294, 295, 9, 2, 2, 2, 295, 33, 3, 2, 2, 2, 296, 297, 9, 3, 2, 2, 297, 35, 3, 2, 2, 2, 298, 299, 7, 80, 2, 2, 299, 37, 3, 2, 2, 2, 300, 304, 7, 38, 2, 2, 301, 302, 5, 40, 21, 2, 302, 303, 7, 49, 2, 2, 303, 305, 3, 2, 2, 2, 304, 301, 3, 2, 2, 2, 305, 306, 3, 2, 2, 2, 306, 304, 3, 2, 2, 2, 306, 307, 3, 2, 2, 2, 307, 39, 3, 2, 2, 2, 308, 309, 5, 8, 5, 2, 309, 313, 7, 51, 2, 2, 310, 314, 5, 46, 24, 2, 311, 314, 5, 42, 22, 2, 312, 314, 5, 44, 23, 2, 313, 310, 3, 2, 2, 2, 313, 311, 3, 2, 2, 2, 313, 312, 3, 2, 2, 2, 314, 41, 3, 2, 2, 2, 315, 317, 7, 18, 2, 2, 316, 318, 5, 102, 52, 2, 317, 316, 3, 2, 2, 2, 317, 318, 3, 2, 2, 2, 318, 319, 3, 2, 2, 2, 319, 320, 7, 50, 2, 2, 320, 321, 5, 114, 58, 2, 321, 43, 3, 2, 2, 2, 322, 324, 7, 30, 2, 2, 323, 325, 5, 102, 52, 2, 324, 323, 3, 2, 2, 2, 324, 325, 3, 2, 2, 2, 325, 45, 3, 2, 2, 2, 326, 330, 5, 48, 25, 2, 327, 330, 5, 56, 29, 2, 328, 330, 5, 90, 46, 2, 329, 326, 3, 2, 2, 2, 329, 327, 3, 2, 2, 2, 329, 328, 3, 2, 2, 2, 330, 47, 3, 2, 2, 2, 331, 336, 5, 50, 26, 2, 332, 336, 5, 52, 27, 2, 333, 336, 5, 54, 28, 2, 334, 336, 5, 60, 31, 2, 335, 331, 3, 2, 2, 2, 335, 332, 3, 2, 2, 2, 335, 333, 3, 2, 2, 2, 335, 334, 3, 2, 2, 2, 336, 49, 3, 2, 2, 2, 337, 338, 7, 57, 2, 2, 338, 339, 5, 108, 55, 2, 339, 340, 7, 58, 2, 2, 340, 51, 3, 2, 2, 2, 341, 342, 5, 24, 13, 2, 342, 343, 7, 66, 2, 2, 343, 344, 5, 24, 13, 2, 344, 53, 3, 2, 2, 2, 345, 348, 5, 8, 5, 2, 346, 348, 9, 4, 2, 2, 347, 345, 3, 2, 2, 2, 347, 346, 3, 2, 2, 2, 348, 55, 3, 2, 2, 2, 349, 350, 7, 29, 2, 2, 350, 353, 5, 58, 30, 2, 351, 353, 5, 58, 30, 2, 352, 349, 3, 2, 2, 2, 352, 351, 3, 2, 2, 2, 353, 57, 3, 2, 2, 2, 354, 359, 5, 62, 32, 2, 355, 359, 5, 70, 36, 2, 356, 359, 5, 84, 43, 2, 357, 359, 5, 88, 45, 2, 358, 354, 3, 2, 2, 2, 358, 355, 3, 2, 2, 2, 358, 356, 3, 2, 2, 2, 358, 357, 3, 2, 2, 2, 359, 59, 3, 2, 2, 2, 360, 361, 7, 72, 2, 2, 361, 364, 7, 59, 2, 2, 362, 365, 5, 8, 5, 2, 363, 365, 5, 26, 14, 2, 364, 362, 3, 2, 2, 2, 364, 363, 3, 2, 2, 2, 365, 366, 3, 2, 2, 2, 366, 367, 7, 61, 2, 2, 367, 61, 3, 2, 2, 2, 368, 369, 7, 4, 2, 2, 369, 370, 7, 59, 2, 2, 370, 371, 5, 64, 33, 2, 371, 372, 7, 61, 2, 2, 372, 373, 7, 27, 2, 2, 373, 374, 5, 68, 35, 2, 374, 383, 3, 2, 2, 2, 375, 376, 7, 4, 2, 2, 376, 377, 7, 60, 2, 2, 377, 378, 5, 64, 33, 2, 378, 379, 7, 62, 2, 2, 379, 380, 7, 27, 2, 2, 380, 381, 5, 68, 35, 2, 381, 383, 3, 2, 2, 2, 382, 368, 3, 2, 2, 2, 382, 375, 3, 2, 2, 2, 383, 63, 3, 2, 2, 2, 384, 389, 5, 66, 34, 2, 385, 386, 7, 48, 2, 2, 386, 388, 5, 66, 34, 2, 387, 385, 3, 2, 2, 2, 388, 391, 3, 2, 2, 2, 389, 387, 3, 2, 2, 2, 389, 390, 3, 2, 2, 2, 390, 65, 3, 2, 2, 2, 391, 389, 3, 2, 2, 2, 392, 393, 5, 48, 25, 2, 393, 67, 3, 2, 2, 2, 394, 395, 5, 46, 24, 2, 395, 69, 3, 2, 2, 2, 396, 398, 7, 33, 2, 2, 397, 399, 5, 72, 37, 2, 398, 397, 3, 2, 2, 2, 398, 399, 3, 2, 2, 2, 399, 400, 3, 2, 2, 2, 400, 401, 7, 15, 2, 2, 401, 71, 3, 2, 2, 2, 402, 405, 5, 74, 38, 2, 403, 404, 7, 49, 2, 2, 404, 406, 5, 78, 40, 2, 405, 403, 3, 2, 2, 2, 405, 406, 3, 2, 2, 2, 406, 409, 3, 2, 2, 2, 407, 409, 5, 78, 40, 2, 408, 402, 3, 2, 2, 2, 408, 407, 3, 2, 2, 2, 409, 73, 3, 2, 2, 2, 410, 415, 5, 76, 39, 2, 411, 412, 7, 49, 2, 2, 412, 414, 5, 76, 39, 2, 413, 411, 3, 2, 2, 2, 414, 417, 3, 2, 2, 2, 415, 413, 3, 2, 2, 2, 415, 416, 3, 2, 2, 2, 416, 75, 3, 2, 2, 2, 417, 415, 3, 2, 2, 2, 418, 419, 5, 108, 55, 2, 419, 420, 7, 50, 2, 2, 420, 421, 5, 46, 24, 2, 421, 77, 3, 2, 2, 2, 422, 423, 7, 7, 2, 2, 423, 424, 5, 80, 41, 2, 424, 425, 7, 27, 2, 2, 425, 430, 5, 82, 42, 2, 426, 427, 7, 49, 2, 2, 427, 429, 5, 82, 42, 2, 428, 426, 3, 2, 2, 2, 429, 432, 3, 2, 2, 2, 430, 428, 3, 2, 2, 2, 430, 431, 3, 2, 2, 2, 431, 79, 3, 2, 2, 2, 432, 430, 3, 2, 2, 2, 433, 434, 5, 8, 5, 2, 434, 435, 7, 50, 2, 2, 435, 436, 5, 54, 28, 2, 436, 439, 3, 2, 2, 2, 437, 439, 5, 54, 28, 2, 438, 433, 3, 2, 2, 2, 438, 437, 3, 2, 2, 2, 439, 81, 3, 2, 2, 2, 440, 441, 5, 110, 56, 2, 441, 442, 7, 50, 2, 2, 442, 443, 7, 57, 2, 2, 443, 444, 5, 72, 37, 2, 444, 445, 7, 58, 2, 2, 445, 83, 3, 2, 2, 2, 446, 447, 7, 35, 2, 2, 447, 448, 7, 27, 2, 2, 448, 449, 5, 86, 44, 2, 449, 85, 3, 2, 2, 2, 450, 451, 5, 48, 25, 2, 451, 87, 3, 2, 2, 2, 452, 453, 7, 16, 2, 2, 453, 454, 7, 27, 2, 2, 454, 457, 5, 46, 24, 2, 455, 457, 7, 16, 2, 2, 456, 452, 3, 2, 2, 2, 456, 455, 3, 2, 2, 2, 457, 89, 3, 2, 2, 2, 458, 459, 7, 63, 2, 2, 459, 460, 5, 54, 28, 2, 460, 91, 3, 2, 2, 2, 461, 462, 7, 40, 2, 2, 462, 467, 5, 94, 48, 2, 463, 464, 7, 49, 2, 2, 464, 466, 5, 94, 48, 2, 465, 463, 3, 2, 2, 2, 466, 469, 3, 2, 2, 2, 467, 465, 3, 2, 2, 2, 467, 468, 3, 2, 2, 2, 468, 470, 3, 2, 2, 2, 469, 467, 3, 2, 2, 2, 470, 471, 7, 49, 2, 2, 471, 93, 3, 2, 2, 2, 472, 473, 5, 108, 55, 2, 473, 474, 7, 50, 2, 2, 474, 475, 5, 46, 24, 2, 475, 95, 3, 2, 2, 2, 476, 477, 5, 98, 50, 2, 477, 478, 7, 49, 2, 2, 478, 97, 3, 2, 2, 2, 479, 482, 5, 100, 51, 2, 480, 482, 5, 112, 57, 2, 481, 479, 3, 2, 2, 2, 481, 480, 3, 2, 2, 2, 482, 99, 3, 2, 2, 2, 483, 484, 7, 30, 2, 2, 484, 486, 5, 8, 5, 2, 485, 487, 5, 102, 52, 2, 486, 485, 3, 2, 2, 2, 486, 487, 3, 2, 2, 2, 487, 488, 3, 2, 2, 2, 488, 489, 7, 49, 2, 2, 489, 490, 5, 10, 6, 2, 490, 101, 3, 2, 2, 2, 491, 492, 7, 57, 2, 2, 492, 497, 5, 104, 53, 2, 493, 494, 7, 49, 2, 2, 494, 496, 5, 104, 53, 2, 495, 493, 3, 2, 2, 2, 496, 499, 3, 2, 2, 2, 497, 495, 3, 2, 2, 2, 497, 498, 3, 2, 2, 2, 498, 500, 3, 2, 2, 2, 499, 497, 3, 2, 2, 2, 500, 501, 7, 58, 2, 2, 501, 103, 3, 2, 2, 2, 502, 510, 5, 106, 54, 2, 503, 504, 7, 40, 2, 2, 504, 510, 5, 106, 54, 2, 505, 506, 7, 18, 2, 2, 506, 510, 5, 106, 54, 2, 507, 508, 7, 30, 2, 2, 508, 510, 5, 106, 54, 2, 509, 502, 3, 2, 2, 2, 509, 503, 3, 2, 2, 2, 509, 505, 3, 2, 2, 2, 509, 507, 3, 2, 2, 2, 510, 105, 3, 2, 2, 2, 511, 512, 5, 108, 55, 2, 512, 513, 7, 50, 2, 2, 513, 514, 5, 54, 28, 2, 514, 107, 3, 2, 2, 2, 515, 520, 5, 8, 5, 2, 516, 517, 7, 48, 2, 2, 517, 519, 5, 8, 5, 2, 518, 516, 3, 2, 2, 2, 519, 522, 3, 2, 2, 2, 520, 518, 3, 2, 2, 2, 520, 521, 3, 2, 2, 2, 521, 109, 3, 2, 2, 2, 522, 520, 3, 2, 2, 2, 523, 528, 5, 24, 13, 2, 524, 525, 7, 48, 2, 2, 525, 527, 5, 24, 13, 2, 526, 524, 3, 2, 2, 2, 527, 530, 3, 2, 2, 2, 528, 526, 3, 2, 2, 2, 528, 529, 3, 2, 2, 2, 529, 111, 3, 2, 2, 2, 530, 528, 3, 2, 2, 2, 531, 532, 7, 18, 2, 2, 532, 534, 5, 8, 5, 2, 533, 535, 5, 102, 52, 2, 534, 533, 3, 2, 2, 2, 534, 535, 3, 2, 2, 2, 535, 536, 3, 2, 2, 2, 536, 537, 7, 50, 2, 2, 537, 538, 5, 114, 58, 2, 538, 539, 7, 49, 2, 2, 539, 540, 5, 10, 6, 2, 540, 113, 3, 2, 2, 2, 541, 542, 5, 54, 28, 2, 542, 115, 3, 2, 2, 2, 543, 544, 5, 16, 9, 2, 544, 545, 7, 50, 2, 2, 545, 546, 5, 118, 60, 2, 546, 549, 3, 2, 2, 2, 547, 549, 5, 118, 60, 2, 548, 543, 3, 2, 2, 2, 548, 547, 3, 2, 2, 2, 549, 117, 3, 2, 2, 2, 550, 553, 5, 120, 61, 2, 551, 553, 5, 166, 84, 2, 552, 550, 3, 2, 2, 2, 552, 551, 3, 2, 2, 2, 553, 119, 3, 2, 2, 2, 554, 559, 5, 122, 62, 2, 555, 559, 5, 154, 78, 2, 556, 559, 5, 160, 81, 2, 557, 559, 5, 162, 82, 2, 558, 554, 3, 2, 2, 2, 558, 555, 3, 2, 2, 2, 558, 556, 3, 2, 2, 2, 558, 557, 3, 2, 2, 2, 559, 121, 3, 2, 2, 2, 560, 561, 5, 124, 63, 2, 561, 562, 7, 47, 2, 2, 562, 563, 5, 126, 64, 2, 563, 123, 3, 2, 2, 2, 564, 565, 7, 64, 2, 2, 565, 568, 5, 8, 5, 2, 566, 568, 5, 8, 5, 2, 567, 564, 3, 2, 2, 2, 567, 566, 3, 2, 2, 2, 568, 596, 3, 2, 2, 2, 569, 570, 7, 59, 2, 2, 570, 575, 5, 126, 64, 2, 571, 572, 7, 48, 2, 2, 572, 574, 5, 126, 64, 2, 573, 571, 3, 2, 2, 2, 574, 577, 3, 2, 2, 2, 575, 573, 3, 2, 2, 2, 575, 576, 3, 2, 2, 2, 576, 578, 3, 2, 2, 2, 577, 575, 3, 2, 2, 2, 578, 579, 7, 61, 2, 2, 579, 595, 3, 2, 2, 2, 580, 581, 7, 60, 2, 2, 581, 586, 5, 126, 64, 2, 582, 583, 7, 48, 2, 2, 583, 585, 5, 126, 64, 2, 584, 582, 3, 2, 2, 2, 585, 588, 3, 2, 2, 2, 586, 584, 3, 2, 2, 2, 586, 587, 3, 2, 2, 2, 587, 589, 3, 2, 2, 2, 588, 586, 3, 2, 2, 2, 589, 590, 7, 62, 2, 2, 590, 595, 3, 2, 2, 2, 591, 592, 7, 65, 2, 2, 592, 595, 5, 8, 5, 2, 593, 595, 7, 63, 2, 2, 594, 569, 3, 2, 2, 2, 594, 580, 3, 2, 2, 2, 594, 591, 3, 2, 2, 2, 594, 593, 3, 2, 2, 2, 595, 598, 3, 2, 2, 2, 596, 594, 3, 2, 2, 2, 596, 597, 3, 2, 2, 2, 597, 125, 3, 2, 2, 2, 598, 596, 3, 2, 2, 2, 599, 603, 5, 130, 66, 2, 600, 601, 5, 128, 65, 2, 601, 602, 5, 126, 64, 2, 602, 604, 3, 2, 2, 2, 603, 600, 3, 2, 2, 2, 603, 604, 3, 2, 2, 2, 604, 127, 3, 2, 2, 2, 605, 606, 9, 5, 2, 2, 606, 129, 3, 2, 2, 2, 607, 611, 5, 134, 68, 2, 608, 609, 5, 132, 67, 2, 609, 610, 5, 130, 66, 2, 610, 612, 3, 2, 2, 2, 611, 608, 3, 2, 2, 2, 611, 612, 3, 2, 2, 2, 612, 131, 3, 2, 2, 2, 613, 614, 9, 6, 2, 2, 614, 133, 3, 2, 2, 2, 615, 619, 5, 138, 70, 2, 616, 617, 5, 136, 69, 2, 617, 618, 5, 134, 68, 2, 618, 620, 3, 2, 2, 2, 619, 616, 3, 2, 2, 2, 619, 620, 3, 2, 2, 2, 620, 135, 3, 2, 2, 2, 621, 622, 9, 7, 2, 2, 622, 137, 3, 2, 2, 2, 623, 625, 9, 2, 2, 2, 624, 623, 3, 2, 2, 2, 624, 625, 3, 2, 2, 2, 625, 626, 3, 2, 2, 2, 626, 627, 5, 140, 71, 2, 627, 139, 3, 2, 2, 2, 628, 640, 5, 124, 63, 2, 629, 630, 7, 57, 2, 2, 630, 631, 5, 126, 64, 2, 631, 632, 7, 58, 2, 2, 632, 640, 3, 2, 2, 2, 633, 640, 5, 144, 73, 2, 634, 640, 5, 142, 72, 2, 635, 640, 5, 148, 75, 2, 636, 637, 7, 26, 2, 2, 637, 640, 5, 140, 71, 2, 638, 640, 5, 34, 18, 2, 639, 628, 3, 2, 2, 2, 639, 629, 3, 2, 2, 2, 639, 633, 3, 2, 2, 2, 639, 634, 3, 2, 2, 2, 639, 635, 3, 2, 2, 2, 639, 636, 3, 2, 2, 2, 639, 638, 3, 2, 2, 2, 640, 141, 3, 2, 2, 2, 641, 646, 5, 26, 14, 2, 642, 646, 5, 22, 12, 2, 643, 646, 5, 36, 19, 2, 644, 646, 7, 25, 2, 2, 645, 641, 3, 2, 2, 2, 645, 642, 3, 2, 2, 2, 645, 643, 3, 2, 2, 2, 645, 644, 3, 2, 2, 2, 646, 143, 3, 2, 2, 2, 647, 648, 5, 8, 5, 2, 648, 649, 7, 57, 2, 2, 649, 650, 5, 146, 74, 2, 650, 651, 7, 58, 2, 2, 651, 145, 3, 2, 2, 2, 652, 657, 5, 156, 79, 2, 653, 654, 7, 48, 2, 2, 654, 656, 5, 156, 79, 2, 655, 653, 3, 2, 2, 2, 656, 659, 3, 2, 2, 2, 657, 655, 3, 2, 2, 2, 657, 658, 3, 2, 2, 2, 658, 147, 3, 2, 2, 2, 659, 657, 3, 2, 2, 2, 660, 661, 7, 59, 2, 2, 661, 662, 5, 150, 76, 2, 662, 663, 7, 61, 2, 2, 663, 669, 3, 2, 2, 2, 664, 665, 7, 60, 2, 2, 665, 666, 5, 150, 76, 2, 666, 667, 7, 62, 2, 2, 667, 669, 3, 2, 2, 2, 668, 660, 3, 2, 2, 2, 668, 664, 3, 2, 2, 2, 669, 149, 3, 2, 2, 2, 670, 675, 5, 152, 77, 2, 671, 672, 7, 48, 2, 2, 672, 674, 5, 152, 77, 2, 673, 671, 3, 2, 2, 2, 674, 677, 3, 2, 2, 2, 675, 673, 3, 2, 2, 2, 675, 676, 3, 2, 2, 2, 676, 680, 3, 2, 2, 2, 677, 675, 3, 2, 2, 2, 678, 680, 3, 2, 2, 2, 679, 670, 3, 2, 2, 2, 679, 678, 3, 2, 2, 2, 680, 151, 3, 2, 2, 2, 681, 684, 5, 126, 64, 2, 682, 683, 7, 66, 2, 2, 683, 685, 5, 126, 64, 2, 684, 682, 3, 2, 2, 2, 684, 685, 3, 2, 2, 2, 685, 153, 3, 2, 2, 2, 686, 691, 5, 8, 5, 2, 687, 688, 7, 57, 2, 2, 688, 689, 5, 146, 74, 2, 689, 690, 7, 58, 2, 2, 690, 692, 3, 2, 2, 2, 691, 687, 3, 2, 2, 2, 691, 692, 3, 2, 2, 2, 692, 155, 3, 2, 2, 2, 693, 697, 5, 126, 64, 2, 694, 696, 5, 158, 80, 2, 695, 694, 3, 2, 2, 2, 696, 699, 3, 2, 2, 2, 697, 695, 3, 2, 2, 2, 697, 698, 3, 2, 2, 2, 698, 157, 3, 2, 2, 2, 699, 697, 3, 2, 2, 2, 700, 701, 7, 50, 2, 2, 701, 702, 5, 126, 64, 2, 702, 159, 3, 2, 2, 2, 703, 704, 7, 19, 2, 2, 704, 705, 5, 16, 9, 2, 705, 161, 3, 2, 2, 2, 706, 707, 3, 2, 2, 2, 707, 163, 3, 2, 2, 2, 708, 709, 3, 2, 2, 2, 709, 165, 3, 2, 2, 2, 710, 715, 5, 168, 85, 2, 711, 715, 5, 172, 87, 2, 712, 715, 5, 180, 91, 2, 713, 715, 5, 194, 98, 2, 714, 710, 3, 2, 2, 2, 714, 711, 3, 2, 2, 2, 714, 712, 3, 2, 2, 2, 714, 713, 3, 2, 2, 2, 715, 167, 3, 2, 2, 2, 716, 717, 7, 5, 2, 2, 717, 718, 5, 170, 86, 2, 718, 719, 7, 15, 2, 2, 719, 169, 3, 2, 2, 2, 720, 725, 5, 116, 59, 2, 721, 722, 7, 49, 2, 2, 722, 724, 5, 116, 59, 2, 723, 721, 3, 2, 2, 2, 724, 727, 3, 2, 2, 2, 725, 723, 3, 2, 2, 2, 725, 726, 3, 2, 2, 2, 726, 171, 3, 2, 2, 2, 727, 725, 3, 2, 2, 2, 728, 731, 5, 174, 88, 2, 729, 731, 5, 176, 89, 2, 730, 728, 3, 2, 2, 2, 730, 729, 3, 2, 2, 2, 731, 173, 3, 2, 2, 2, 732, 733, 7, 20, 2, 2, 733, 734, 5, 126, 64, 2, 734, 735, 7, 36, 2, 2, 735, 738, 5, 116, 59, 2, 736, 737, 7, 14, 2, 2, 737, 739, 5, 116, 59, 2, 738, 736, 3, 2, 2, 2, 738, 739, 3, 2, 2, 2, 739, 175, 3, 2, 2, 2, 740, 741, 7, 7, 2, 2, 741, 742, 5, 126, 64, 2, 742, 743, 7, 27, 2, 2, 743, 748, 5, 178, 90, 2, 744, 745, 7, 49, 2, 2, 745, 747, 5, 178, 90, 2, 746, 744, 3, 2, 2, 2, 747, 750, 3, 2, 2, 2, 748, 746, 3, 2, 2, 2, 748, 749, 3, 2, 2, 2, 749, 754, 3, 2, 2, 2, 750, 748, 3, 2, 2, 2, 751, 752, 7, 49, 2, 2, 752, 753, 7, 14, 2, 2, 753, 755, 5, 170, 86, 2, 754, 751, 3, 2, 2, 2, 754, 755, 3, 2, 2, 2, 755, 756, 3, 2, 2, 2, 756, 757, 7, 15, 2, 2, 757, 177, 3, 2, 2, 2, 758, 759, 5, 110, 56, 2, 759, 760, 7, 50, 2, 2, 760, 761, 5, 116, 59, 2, 761, 179, 3, 2, 2, 2, 762, 766, 5, 182, 92, 2, 763, 766, 5, 184, 93, 2, 764, 766, 5, 186, 94, 2, 765, 762, 3, 2, 2, 2, 765, 763, 3, 2, 2, 2, 765, 764, 3, 2, 2, 2, 766, 181, 3, 2, 2, 2, 767, 768, 7, 41, 2, 2, 768, 769, 5, 126, 64, 2, 769, 770, 7, 12, 2, 2, 770, 771, 5, 116, 59, 2, 771, 183, 3, 2, 2, 2, 772, 773, 7, 34, 2, 2, 773, 774, 5, 170, 86, 2, 774, 775, 7, 39, 2, 2, 775, 776, 5, 126, 64, 2, 776, 185, 3, 2, 2, 2, 777, 778, 7, 17, 2, 2, 778, 779, 5, 8, 5, 2, 779, 780, 7, 47, 2, 2, 780, 781, 5, 188, 95, 2, 781, 782, 7, 12, 2, 2, 782, 783, 5, 116, 59, 2, 783, 187, 3, 2, 2, 2, 784, 785, 5, 190, 96, 2, 785, 786, 9, 8, 2, 2, 786, 787, 5, 192, 97, 2, 787, 189, 3, 2, 2, 2, 788, 789, 5, 126, 64, 2, 789, 191, 3, 2, 2, 2, 790, 791, 5, 126, 64, 2, 791, 193, 3, 2, 2, 2, 792, 793, 7, 42, 2, 2, 793, 794, 5, 196, 99, 2, 794, 795, 7, 12, 2, 2, 795, 796, 5, 116, 59, 2, 796, 195, 3, 2, 2, 2, 797, 802, 5, 124, 63, 2, 798, 799, 7, 48, 2, 2, 799, 801, 5, 124, 63, 2, 800, 798, 3, 2, 2, 2, 801, 804, 3, 2, 2, 2, 802, 800, 3, 2, 2, 2, 802, 803, 3, 2, 2, 2, 803, 197, 3, 2, 2, 2, 804, 802, 3, 2, 2, 2, 67, 202, 214, 222, 233, 235, 250, 263, 284, 288, 306, 313, 317, 324, 329, 335, 347, 352, 358, 364, 382, 389, 398, 405, 408, 415, 430, 438, 456, 467, 481, 486, 497, 509, 520, 528, 534, 548, 552, 558, 567, 575, 586, 594, 596, 603, 611, 619, 624, 639, 645, 657, 668, 675, 679, 684, 691, 697, 714, 725, 730, 738, 748, 754, 765, 802] \ No newline at end of file diff --git a/examples/Example - Pascal Symbol Table/.antlr/pascal.tokens b/examples/Example - Pascal Symbol Table/.antlr/pascal.tokens new file mode 100644 index 0000000..a0e3feb --- /dev/null +++ b/examples/Example - Pascal Symbol Table/.antlr/pascal.tokens @@ -0,0 +1,153 @@ +AND=1 +ARRAY=2 +BEGIN=3 +BOOLEAN=4 +CASE=5 +CHAR=6 +CHR=7 +CONST=8 +DIV=9 +DO=10 +DOWNTO=11 +ELSE=12 +END=13 +FILE=14 +FOR=15 +FUNCTION=16 +GOTO=17 +IF=18 +IN=19 +INTEGER=20 +LABEL=21 +MOD=22 +NIL=23 +NOT=24 +OF=25 +OR=26 +PACKED=27 +PROCEDURE=28 +PROGRAM=29 +REAL=30 +RECORD=31 +REPEAT=32 +SET=33 +THEN=34 +TO=35 +TYPE=36 +UNTIL=37 +VAR=38 +WHILE=39 +WITH=40 +PLUS=41 +MINUS=42 +STAR=43 +SLASH=44 +ASSIGN=45 +COMMA=46 +SEMI=47 +COLON=48 +EQUAL=49 +NOT_EQUAL=50 +LT=51 +LE=52 +GE=53 +GT=54 +LPAREN=55 +RPAREN=56 +LBRACK=57 +LBRACK2=58 +RBRACK=59 +RBRACK2=60 +POINTER=61 +AT=62 +DOT=63 +DOTDOT=64 +LCURLY=65 +RCURLY=66 +UNIT=67 +INTERFACE=68 +USES=69 +STRING=70 +IMPLEMENTATION=71 +TRUE=72 +FALSE=73 +WS=74 +COMMENT_1=75 +COMMENT_2=76 +IDENT=77 +STRING_LITERAL=78 +NUM_INT=79 +NUM_REAL=80 +'AND'=1 +'ARRAY'=2 +'BEGIN'=3 +'BOOLEAN'=4 +'CASE'=5 +'CHAR'=6 +'CHR'=7 +'CONST'=8 +'DIV'=9 +'DO'=10 +'DOWNTO'=11 +'ELSE'=12 +'END'=13 +'FILE'=14 +'FOR'=15 +'FUNCTION'=16 +'GOTO'=17 +'IF'=18 +'IN'=19 +'INTEGER'=20 +'LABEL'=21 +'MOD'=22 +'NIL'=23 +'NOT'=24 +'OF'=25 +'OR'=26 +'PACKED'=27 +'PROCEDURE'=28 +'PROGRAM'=29 +'REAL'=30 +'RECORD'=31 +'REPEAT'=32 +'SET'=33 +'THEN'=34 +'TO'=35 +'TYPE'=36 +'UNTIL'=37 +'VAR'=38 +'WHILE'=39 +'WITH'=40 +'+'=41 +'-'=42 +'*'=43 +'/'=44 +':='=45 +','=46 +';'=47 +':'=48 +'='=49 +'<>'=50 +'<'=51 +'<='=52 +'>='=53 +'>'=54 +'('=55 +')'=56 +'['=57 +'(.'=58 +']'=59 +'.)'=60 +'^'=61 +'@'=62 +'.'=63 +'..'=64 +'{'=65 +'}'=66 +'UNIT'=67 +'INTERFACE'=68 +'USES'=69 +'STRING'=70 +'IMPLEMENTATION'=71 +'TRUE'=72 +'FALSE'=73 diff --git a/examples/Example - Pascal Symbol Table/.antlr/pascalLexer.interp b/examples/Example - Pascal Symbol Table/.antlr/pascalLexer.interp new file mode 100644 index 0000000..6a4eabc --- /dev/null +++ b/examples/Example - Pascal Symbol Table/.antlr/pascalLexer.interp @@ -0,0 +1,258 @@ +token literal names: +null +'AND' +'ARRAY' +'BEGIN' +'BOOLEAN' +'CASE' +'CHAR' +'CHR' +'CONST' +'DIV' +'DO' +'DOWNTO' +'ELSE' +'END' +'FILE' +'FOR' +'FUNCTION' +'GOTO' +'IF' +'IN' +'INTEGER' +'LABEL' +'MOD' +'NIL' +'NOT' +'OF' +'OR' +'PACKED' +'PROCEDURE' +'PROGRAM' +'REAL' +'RECORD' +'REPEAT' +'SET' +'THEN' +'TO' +'TYPE' +'UNTIL' +'VAR' +'WHILE' +'WITH' +'+' +'-' +'*' +'/' +':=' +',' +';' +':' +'=' +'<>' +'<' +'<=' +'>=' +'>' +'(' +')' +'[' +'(.' +']' +'.)' +'^' +'@' +'.' +'..' +'{' +'}' +'UNIT' +'INTERFACE' +'USES' +'STRING' +'IMPLEMENTATION' +'TRUE' +'FALSE' +null +null +null +null +null +null +null + +token symbolic names: +null +AND +ARRAY +BEGIN +BOOLEAN +CASE +CHAR +CHR +CONST +DIV +DO +DOWNTO +ELSE +END +FILE +FOR +FUNCTION +GOTO +IF +IN +INTEGER +LABEL +MOD +NIL +NOT +OF +OR +PACKED +PROCEDURE +PROGRAM +REAL +RECORD +REPEAT +SET +THEN +TO +TYPE +UNTIL +VAR +WHILE +WITH +PLUS +MINUS +STAR +SLASH +ASSIGN +COMMA +SEMI +COLON +EQUAL +NOT_EQUAL +LT +LE +GE +GT +LPAREN +RPAREN +LBRACK +LBRACK2 +RBRACK +RBRACK2 +POINTER +AT +DOT +DOTDOT +LCURLY +RCURLY +UNIT +INTERFACE +USES +STRING +IMPLEMENTATION +TRUE +FALSE +WS +COMMENT_1 +COMMENT_2 +IDENT +STRING_LITERAL +NUM_INT +NUM_REAL + +rule names: +AND +ARRAY +BEGIN +BOOLEAN +CASE +CHAR +CHR +CONST +DIV +DO +DOWNTO +ELSE +END +FILE +FOR +FUNCTION +GOTO +IF +IN +INTEGER +LABEL +MOD +NIL +NOT +OF +OR +PACKED +PROCEDURE +PROGRAM +REAL +RECORD +REPEAT +SET +THEN +TO +TYPE +UNTIL +VAR +WHILE +WITH +PLUS +MINUS +STAR +SLASH +ASSIGN +COMMA +SEMI +COLON +EQUAL +NOT_EQUAL +LT +LE +GE +GT +LPAREN +RPAREN +LBRACK +LBRACK2 +RBRACK +RBRACK2 +POINTER +AT +DOT +DOTDOT +LCURLY +RCURLY +UNIT +INTERFACE +USES +STRING +IMPLEMENTATION +TRUE +FALSE +WS +COMMENT_1 +COMMENT_2 +IDENT +STRING_LITERAL +NUM_INT +NUM_REAL +EXPONENT + +channel names: +DEFAULT_TOKEN_CHANNEL +HIDDEN + +mode names: +DEFAULT_MODE + +atn: +[3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 2, 82, 567, 8, 1, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 4, 27, 9, 27, 4, 28, 9, 28, 4, 29, 9, 29, 4, 30, 9, 30, 4, 31, 9, 31, 4, 32, 9, 32, 4, 33, 9, 33, 4, 34, 9, 34, 4, 35, 9, 35, 4, 36, 9, 36, 4, 37, 9, 37, 4, 38, 9, 38, 4, 39, 9, 39, 4, 40, 9, 40, 4, 41, 9, 41, 4, 42, 9, 42, 4, 43, 9, 43, 4, 44, 9, 44, 4, 45, 9, 45, 4, 46, 9, 46, 4, 47, 9, 47, 4, 48, 9, 48, 4, 49, 9, 49, 4, 50, 9, 50, 4, 51, 9, 51, 4, 52, 9, 52, 4, 53, 9, 53, 4, 54, 9, 54, 4, 55, 9, 55, 4, 56, 9, 56, 4, 57, 9, 57, 4, 58, 9, 58, 4, 59, 9, 59, 4, 60, 9, 60, 4, 61, 9, 61, 4, 62, 9, 62, 4, 63, 9, 63, 4, 64, 9, 64, 4, 65, 9, 65, 4, 66, 9, 66, 4, 67, 9, 67, 4, 68, 9, 68, 4, 69, 9, 69, 4, 70, 9, 70, 4, 71, 9, 71, 4, 72, 9, 72, 4, 73, 9, 73, 4, 74, 9, 74, 4, 75, 9, 75, 4, 76, 9, 76, 4, 77, 9, 77, 4, 78, 9, 78, 4, 79, 9, 79, 4, 80, 9, 80, 4, 81, 9, 81, 4, 82, 9, 82, 3, 2, 3, 2, 3, 2, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 8, 3, 8, 3, 8, 3, 8, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 10, 3, 10, 3, 10, 3, 10, 3, 11, 3, 11, 3, 11, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 14, 3, 14, 3, 14, 3, 14, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 16, 3, 16, 3, 16, 3, 16, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 19, 3, 19, 3, 19, 3, 20, 3, 20, 3, 20, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 23, 3, 23, 3, 23, 3, 23, 3, 24, 3, 24, 3, 24, 3, 24, 3, 25, 3, 25, 3, 25, 3, 25, 3, 26, 3, 26, 3, 26, 3, 27, 3, 27, 3, 27, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 34, 3, 34, 3, 34, 3, 34, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 36, 3, 36, 3, 36, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 39, 3, 39, 3, 39, 3, 39, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 42, 3, 42, 3, 43, 3, 43, 3, 44, 3, 44, 3, 45, 3, 45, 3, 46, 3, 46, 3, 46, 3, 47, 3, 47, 3, 48, 3, 48, 3, 49, 3, 49, 3, 50, 3, 50, 3, 51, 3, 51, 3, 51, 3, 52, 3, 52, 3, 53, 3, 53, 3, 53, 3, 54, 3, 54, 3, 54, 3, 55, 3, 55, 3, 56, 3, 56, 3, 57, 3, 57, 3, 58, 3, 58, 3, 59, 3, 59, 3, 59, 3, 60, 3, 60, 3, 61, 3, 61, 3, 61, 3, 62, 3, 62, 3, 63, 3, 63, 3, 64, 3, 64, 3, 65, 3, 65, 3, 65, 3, 66, 3, 66, 3, 67, 3, 67, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 73, 3, 73, 3, 73, 3, 73, 3, 73, 3, 74, 3, 74, 3, 74, 3, 74, 3, 74, 3, 74, 3, 75, 3, 75, 3, 75, 3, 75, 3, 76, 3, 76, 3, 76, 3, 76, 7, 76, 496, 10, 76, 12, 76, 14, 76, 499, 11, 76, 3, 76, 3, 76, 3, 76, 3, 76, 3, 76, 3, 77, 3, 77, 7, 77, 508, 10, 77, 12, 77, 14, 77, 511, 11, 77, 3, 77, 3, 77, 3, 77, 3, 77, 3, 78, 3, 78, 7, 78, 519, 10, 78, 12, 78, 14, 78, 522, 11, 78, 3, 79, 3, 79, 3, 79, 3, 79, 7, 79, 528, 10, 79, 12, 79, 14, 79, 531, 11, 79, 3, 79, 3, 79, 3, 80, 6, 80, 536, 10, 80, 13, 80, 14, 80, 537, 3, 81, 6, 81, 541, 10, 81, 13, 81, 14, 81, 542, 3, 81, 3, 81, 6, 81, 547, 10, 81, 13, 81, 14, 81, 548, 3, 81, 5, 81, 552, 10, 81, 5, 81, 554, 10, 81, 3, 81, 5, 81, 557, 10, 81, 3, 82, 3, 82, 5, 82, 561, 10, 82, 3, 82, 6, 82, 564, 10, 82, 13, 82, 14, 82, 565, 4, 497, 509, 2, 83, 3, 3, 5, 4, 7, 5, 9, 6, 11, 7, 13, 8, 15, 9, 17, 10, 19, 11, 21, 12, 23, 13, 25, 14, 27, 15, 29, 16, 31, 17, 33, 18, 35, 19, 37, 20, 39, 21, 41, 22, 43, 23, 45, 24, 47, 25, 49, 26, 51, 27, 53, 28, 55, 29, 57, 30, 59, 31, 61, 32, 63, 33, 65, 34, 67, 35, 69, 36, 71, 37, 73, 38, 75, 39, 77, 40, 79, 41, 81, 42, 83, 43, 85, 44, 87, 45, 89, 46, 91, 47, 93, 48, 95, 49, 97, 50, 99, 51, 101, 52, 103, 53, 105, 54, 107, 55, 109, 56, 111, 57, 113, 58, 115, 59, 117, 60, 119, 61, 121, 62, 123, 63, 125, 64, 127, 65, 129, 66, 131, 67, 133, 68, 135, 69, 137, 70, 139, 71, 141, 72, 143, 73, 145, 74, 147, 75, 149, 76, 151, 77, 153, 78, 155, 79, 157, 80, 159, 81, 161, 82, 163, 2, 3, 2, 6, 5, 2, 11, 12, 15, 15, 34, 34, 5, 2, 50, 59, 67, 92, 97, 97, 3, 2, 41, 41, 4, 2, 45, 45, 47, 47, 2, 578, 2, 3, 3, 2, 2, 2, 2, 5, 3, 2, 2, 2, 2, 7, 3, 2, 2, 2, 2, 9, 3, 2, 2, 2, 2, 11, 3, 2, 2, 2, 2, 13, 3, 2, 2, 2, 2, 15, 3, 2, 2, 2, 2, 17, 3, 2, 2, 2, 2, 19, 3, 2, 2, 2, 2, 21, 3, 2, 2, 2, 2, 23, 3, 2, 2, 2, 2, 25, 3, 2, 2, 2, 2, 27, 3, 2, 2, 2, 2, 29, 3, 2, 2, 2, 2, 31, 3, 2, 2, 2, 2, 33, 3, 2, 2, 2, 2, 35, 3, 2, 2, 2, 2, 37, 3, 2, 2, 2, 2, 39, 3, 2, 2, 2, 2, 41, 3, 2, 2, 2, 2, 43, 3, 2, 2, 2, 2, 45, 3, 2, 2, 2, 2, 47, 3, 2, 2, 2, 2, 49, 3, 2, 2, 2, 2, 51, 3, 2, 2, 2, 2, 53, 3, 2, 2, 2, 2, 55, 3, 2, 2, 2, 2, 57, 3, 2, 2, 2, 2, 59, 3, 2, 2, 2, 2, 61, 3, 2, 2, 2, 2, 63, 3, 2, 2, 2, 2, 65, 3, 2, 2, 2, 2, 67, 3, 2, 2, 2, 2, 69, 3, 2, 2, 2, 2, 71, 3, 2, 2, 2, 2, 73, 3, 2, 2, 2, 2, 75, 3, 2, 2, 2, 2, 77, 3, 2, 2, 2, 2, 79, 3, 2, 2, 2, 2, 81, 3, 2, 2, 2, 2, 83, 3, 2, 2, 2, 2, 85, 3, 2, 2, 2, 2, 87, 3, 2, 2, 2, 2, 89, 3, 2, 2, 2, 2, 91, 3, 2, 2, 2, 2, 93, 3, 2, 2, 2, 2, 95, 3, 2, 2, 2, 2, 97, 3, 2, 2, 2, 2, 99, 3, 2, 2, 2, 2, 101, 3, 2, 2, 2, 2, 103, 3, 2, 2, 2, 2, 105, 3, 2, 2, 2, 2, 107, 3, 2, 2, 2, 2, 109, 3, 2, 2, 2, 2, 111, 3, 2, 2, 2, 2, 113, 3, 2, 2, 2, 2, 115, 3, 2, 2, 2, 2, 117, 3, 2, 2, 2, 2, 119, 3, 2, 2, 2, 2, 121, 3, 2, 2, 2, 2, 123, 3, 2, 2, 2, 2, 125, 3, 2, 2, 2, 2, 127, 3, 2, 2, 2, 2, 129, 3, 2, 2, 2, 2, 131, 3, 2, 2, 2, 2, 133, 3, 2, 2, 2, 2, 135, 3, 2, 2, 2, 2, 137, 3, 2, 2, 2, 2, 139, 3, 2, 2, 2, 2, 141, 3, 2, 2, 2, 2, 143, 3, 2, 2, 2, 2, 145, 3, 2, 2, 2, 2, 147, 3, 2, 2, 2, 2, 149, 3, 2, 2, 2, 2, 151, 3, 2, 2, 2, 2, 153, 3, 2, 2, 2, 2, 155, 3, 2, 2, 2, 2, 157, 3, 2, 2, 2, 2, 159, 3, 2, 2, 2, 2, 161, 3, 2, 2, 2, 3, 165, 3, 2, 2, 2, 5, 169, 3, 2, 2, 2, 7, 175, 3, 2, 2, 2, 9, 181, 3, 2, 2, 2, 11, 189, 3, 2, 2, 2, 13, 194, 3, 2, 2, 2, 15, 199, 3, 2, 2, 2, 17, 203, 3, 2, 2, 2, 19, 209, 3, 2, 2, 2, 21, 213, 3, 2, 2, 2, 23, 216, 3, 2, 2, 2, 25, 223, 3, 2, 2, 2, 27, 228, 3, 2, 2, 2, 29, 232, 3, 2, 2, 2, 31, 237, 3, 2, 2, 2, 33, 241, 3, 2, 2, 2, 35, 250, 3, 2, 2, 2, 37, 255, 3, 2, 2, 2, 39, 258, 3, 2, 2, 2, 41, 261, 3, 2, 2, 2, 43, 269, 3, 2, 2, 2, 45, 275, 3, 2, 2, 2, 47, 279, 3, 2, 2, 2, 49, 283, 3, 2, 2, 2, 51, 287, 3, 2, 2, 2, 53, 290, 3, 2, 2, 2, 55, 293, 3, 2, 2, 2, 57, 300, 3, 2, 2, 2, 59, 310, 3, 2, 2, 2, 61, 318, 3, 2, 2, 2, 63, 323, 3, 2, 2, 2, 65, 330, 3, 2, 2, 2, 67, 337, 3, 2, 2, 2, 69, 341, 3, 2, 2, 2, 71, 346, 3, 2, 2, 2, 73, 349, 3, 2, 2, 2, 75, 354, 3, 2, 2, 2, 77, 360, 3, 2, 2, 2, 79, 364, 3, 2, 2, 2, 81, 370, 3, 2, 2, 2, 83, 375, 3, 2, 2, 2, 85, 377, 3, 2, 2, 2, 87, 379, 3, 2, 2, 2, 89, 381, 3, 2, 2, 2, 91, 383, 3, 2, 2, 2, 93, 386, 3, 2, 2, 2, 95, 388, 3, 2, 2, 2, 97, 390, 3, 2, 2, 2, 99, 392, 3, 2, 2, 2, 101, 394, 3, 2, 2, 2, 103, 397, 3, 2, 2, 2, 105, 399, 3, 2, 2, 2, 107, 402, 3, 2, 2, 2, 109, 405, 3, 2, 2, 2, 111, 407, 3, 2, 2, 2, 113, 409, 3, 2, 2, 2, 115, 411, 3, 2, 2, 2, 117, 413, 3, 2, 2, 2, 119, 416, 3, 2, 2, 2, 121, 418, 3, 2, 2, 2, 123, 421, 3, 2, 2, 2, 125, 423, 3, 2, 2, 2, 127, 425, 3, 2, 2, 2, 129, 427, 3, 2, 2, 2, 131, 430, 3, 2, 2, 2, 133, 432, 3, 2, 2, 2, 135, 434, 3, 2, 2, 2, 137, 439, 3, 2, 2, 2, 139, 449, 3, 2, 2, 2, 141, 454, 3, 2, 2, 2, 143, 461, 3, 2, 2, 2, 145, 476, 3, 2, 2, 2, 147, 481, 3, 2, 2, 2, 149, 487, 3, 2, 2, 2, 151, 491, 3, 2, 2, 2, 153, 505, 3, 2, 2, 2, 155, 516, 3, 2, 2, 2, 157, 523, 3, 2, 2, 2, 159, 535, 3, 2, 2, 2, 161, 540, 3, 2, 2, 2, 163, 558, 3, 2, 2, 2, 165, 166, 7, 67, 2, 2, 166, 167, 7, 80, 2, 2, 167, 168, 7, 70, 2, 2, 168, 4, 3, 2, 2, 2, 169, 170, 7, 67, 2, 2, 170, 171, 7, 84, 2, 2, 171, 172, 7, 84, 2, 2, 172, 173, 7, 67, 2, 2, 173, 174, 7, 91, 2, 2, 174, 6, 3, 2, 2, 2, 175, 176, 7, 68, 2, 2, 176, 177, 7, 71, 2, 2, 177, 178, 7, 73, 2, 2, 178, 179, 7, 75, 2, 2, 179, 180, 7, 80, 2, 2, 180, 8, 3, 2, 2, 2, 181, 182, 7, 68, 2, 2, 182, 183, 7, 81, 2, 2, 183, 184, 7, 81, 2, 2, 184, 185, 7, 78, 2, 2, 185, 186, 7, 71, 2, 2, 186, 187, 7, 67, 2, 2, 187, 188, 7, 80, 2, 2, 188, 10, 3, 2, 2, 2, 189, 190, 7, 69, 2, 2, 190, 191, 7, 67, 2, 2, 191, 192, 7, 85, 2, 2, 192, 193, 7, 71, 2, 2, 193, 12, 3, 2, 2, 2, 194, 195, 7, 69, 2, 2, 195, 196, 7, 74, 2, 2, 196, 197, 7, 67, 2, 2, 197, 198, 7, 84, 2, 2, 198, 14, 3, 2, 2, 2, 199, 200, 7, 69, 2, 2, 200, 201, 7, 74, 2, 2, 201, 202, 7, 84, 2, 2, 202, 16, 3, 2, 2, 2, 203, 204, 7, 69, 2, 2, 204, 205, 7, 81, 2, 2, 205, 206, 7, 80, 2, 2, 206, 207, 7, 85, 2, 2, 207, 208, 7, 86, 2, 2, 208, 18, 3, 2, 2, 2, 209, 210, 7, 70, 2, 2, 210, 211, 7, 75, 2, 2, 211, 212, 7, 88, 2, 2, 212, 20, 3, 2, 2, 2, 213, 214, 7, 70, 2, 2, 214, 215, 7, 81, 2, 2, 215, 22, 3, 2, 2, 2, 216, 217, 7, 70, 2, 2, 217, 218, 7, 81, 2, 2, 218, 219, 7, 89, 2, 2, 219, 220, 7, 80, 2, 2, 220, 221, 7, 86, 2, 2, 221, 222, 7, 81, 2, 2, 222, 24, 3, 2, 2, 2, 223, 224, 7, 71, 2, 2, 224, 225, 7, 78, 2, 2, 225, 226, 7, 85, 2, 2, 226, 227, 7, 71, 2, 2, 227, 26, 3, 2, 2, 2, 228, 229, 7, 71, 2, 2, 229, 230, 7, 80, 2, 2, 230, 231, 7, 70, 2, 2, 231, 28, 3, 2, 2, 2, 232, 233, 7, 72, 2, 2, 233, 234, 7, 75, 2, 2, 234, 235, 7, 78, 2, 2, 235, 236, 7, 71, 2, 2, 236, 30, 3, 2, 2, 2, 237, 238, 7, 72, 2, 2, 238, 239, 7, 81, 2, 2, 239, 240, 7, 84, 2, 2, 240, 32, 3, 2, 2, 2, 241, 242, 7, 72, 2, 2, 242, 243, 7, 87, 2, 2, 243, 244, 7, 80, 2, 2, 244, 245, 7, 69, 2, 2, 245, 246, 7, 86, 2, 2, 246, 247, 7, 75, 2, 2, 247, 248, 7, 81, 2, 2, 248, 249, 7, 80, 2, 2, 249, 34, 3, 2, 2, 2, 250, 251, 7, 73, 2, 2, 251, 252, 7, 81, 2, 2, 252, 253, 7, 86, 2, 2, 253, 254, 7, 81, 2, 2, 254, 36, 3, 2, 2, 2, 255, 256, 7, 75, 2, 2, 256, 257, 7, 72, 2, 2, 257, 38, 3, 2, 2, 2, 258, 259, 7, 75, 2, 2, 259, 260, 7, 80, 2, 2, 260, 40, 3, 2, 2, 2, 261, 262, 7, 75, 2, 2, 262, 263, 7, 80, 2, 2, 263, 264, 7, 86, 2, 2, 264, 265, 7, 71, 2, 2, 265, 266, 7, 73, 2, 2, 266, 267, 7, 71, 2, 2, 267, 268, 7, 84, 2, 2, 268, 42, 3, 2, 2, 2, 269, 270, 7, 78, 2, 2, 270, 271, 7, 67, 2, 2, 271, 272, 7, 68, 2, 2, 272, 273, 7, 71, 2, 2, 273, 274, 7, 78, 2, 2, 274, 44, 3, 2, 2, 2, 275, 276, 7, 79, 2, 2, 276, 277, 7, 81, 2, 2, 277, 278, 7, 70, 2, 2, 278, 46, 3, 2, 2, 2, 279, 280, 7, 80, 2, 2, 280, 281, 7, 75, 2, 2, 281, 282, 7, 78, 2, 2, 282, 48, 3, 2, 2, 2, 283, 284, 7, 80, 2, 2, 284, 285, 7, 81, 2, 2, 285, 286, 7, 86, 2, 2, 286, 50, 3, 2, 2, 2, 287, 288, 7, 81, 2, 2, 288, 289, 7, 72, 2, 2, 289, 52, 3, 2, 2, 2, 290, 291, 7, 81, 2, 2, 291, 292, 7, 84, 2, 2, 292, 54, 3, 2, 2, 2, 293, 294, 7, 82, 2, 2, 294, 295, 7, 67, 2, 2, 295, 296, 7, 69, 2, 2, 296, 297, 7, 77, 2, 2, 297, 298, 7, 71, 2, 2, 298, 299, 7, 70, 2, 2, 299, 56, 3, 2, 2, 2, 300, 301, 7, 82, 2, 2, 301, 302, 7, 84, 2, 2, 302, 303, 7, 81, 2, 2, 303, 304, 7, 69, 2, 2, 304, 305, 7, 71, 2, 2, 305, 306, 7, 70, 2, 2, 306, 307, 7, 87, 2, 2, 307, 308, 7, 84, 2, 2, 308, 309, 7, 71, 2, 2, 309, 58, 3, 2, 2, 2, 310, 311, 7, 82, 2, 2, 311, 312, 7, 84, 2, 2, 312, 313, 7, 81, 2, 2, 313, 314, 7, 73, 2, 2, 314, 315, 7, 84, 2, 2, 315, 316, 7, 67, 2, 2, 316, 317, 7, 79, 2, 2, 317, 60, 3, 2, 2, 2, 318, 319, 7, 84, 2, 2, 319, 320, 7, 71, 2, 2, 320, 321, 7, 67, 2, 2, 321, 322, 7, 78, 2, 2, 322, 62, 3, 2, 2, 2, 323, 324, 7, 84, 2, 2, 324, 325, 7, 71, 2, 2, 325, 326, 7, 69, 2, 2, 326, 327, 7, 81, 2, 2, 327, 328, 7, 84, 2, 2, 328, 329, 7, 70, 2, 2, 329, 64, 3, 2, 2, 2, 330, 331, 7, 84, 2, 2, 331, 332, 7, 71, 2, 2, 332, 333, 7, 82, 2, 2, 333, 334, 7, 71, 2, 2, 334, 335, 7, 67, 2, 2, 335, 336, 7, 86, 2, 2, 336, 66, 3, 2, 2, 2, 337, 338, 7, 85, 2, 2, 338, 339, 7, 71, 2, 2, 339, 340, 7, 86, 2, 2, 340, 68, 3, 2, 2, 2, 341, 342, 7, 86, 2, 2, 342, 343, 7, 74, 2, 2, 343, 344, 7, 71, 2, 2, 344, 345, 7, 80, 2, 2, 345, 70, 3, 2, 2, 2, 346, 347, 7, 86, 2, 2, 347, 348, 7, 81, 2, 2, 348, 72, 3, 2, 2, 2, 349, 350, 7, 86, 2, 2, 350, 351, 7, 91, 2, 2, 351, 352, 7, 82, 2, 2, 352, 353, 7, 71, 2, 2, 353, 74, 3, 2, 2, 2, 354, 355, 7, 87, 2, 2, 355, 356, 7, 80, 2, 2, 356, 357, 7, 86, 2, 2, 357, 358, 7, 75, 2, 2, 358, 359, 7, 78, 2, 2, 359, 76, 3, 2, 2, 2, 360, 361, 7, 88, 2, 2, 361, 362, 7, 67, 2, 2, 362, 363, 7, 84, 2, 2, 363, 78, 3, 2, 2, 2, 364, 365, 7, 89, 2, 2, 365, 366, 7, 74, 2, 2, 366, 367, 7, 75, 2, 2, 367, 368, 7, 78, 2, 2, 368, 369, 7, 71, 2, 2, 369, 80, 3, 2, 2, 2, 370, 371, 7, 89, 2, 2, 371, 372, 7, 75, 2, 2, 372, 373, 7, 86, 2, 2, 373, 374, 7, 74, 2, 2, 374, 82, 3, 2, 2, 2, 375, 376, 7, 45, 2, 2, 376, 84, 3, 2, 2, 2, 377, 378, 7, 47, 2, 2, 378, 86, 3, 2, 2, 2, 379, 380, 7, 44, 2, 2, 380, 88, 3, 2, 2, 2, 381, 382, 7, 49, 2, 2, 382, 90, 3, 2, 2, 2, 383, 384, 7, 60, 2, 2, 384, 385, 7, 63, 2, 2, 385, 92, 3, 2, 2, 2, 386, 387, 7, 46, 2, 2, 387, 94, 3, 2, 2, 2, 388, 389, 7, 61, 2, 2, 389, 96, 3, 2, 2, 2, 390, 391, 7, 60, 2, 2, 391, 98, 3, 2, 2, 2, 392, 393, 7, 63, 2, 2, 393, 100, 3, 2, 2, 2, 394, 395, 7, 62, 2, 2, 395, 396, 7, 64, 2, 2, 396, 102, 3, 2, 2, 2, 397, 398, 7, 62, 2, 2, 398, 104, 3, 2, 2, 2, 399, 400, 7, 62, 2, 2, 400, 401, 7, 63, 2, 2, 401, 106, 3, 2, 2, 2, 402, 403, 7, 64, 2, 2, 403, 404, 7, 63, 2, 2, 404, 108, 3, 2, 2, 2, 405, 406, 7, 64, 2, 2, 406, 110, 3, 2, 2, 2, 407, 408, 7, 42, 2, 2, 408, 112, 3, 2, 2, 2, 409, 410, 7, 43, 2, 2, 410, 114, 3, 2, 2, 2, 411, 412, 7, 93, 2, 2, 412, 116, 3, 2, 2, 2, 413, 414, 7, 42, 2, 2, 414, 415, 7, 48, 2, 2, 415, 118, 3, 2, 2, 2, 416, 417, 7, 95, 2, 2, 417, 120, 3, 2, 2, 2, 418, 419, 7, 48, 2, 2, 419, 420, 7, 43, 2, 2, 420, 122, 3, 2, 2, 2, 421, 422, 7, 96, 2, 2, 422, 124, 3, 2, 2, 2, 423, 424, 7, 66, 2, 2, 424, 126, 3, 2, 2, 2, 425, 426, 7, 48, 2, 2, 426, 128, 3, 2, 2, 2, 427, 428, 7, 48, 2, 2, 428, 429, 7, 48, 2, 2, 429, 130, 3, 2, 2, 2, 430, 431, 7, 125, 2, 2, 431, 132, 3, 2, 2, 2, 432, 433, 7, 127, 2, 2, 433, 134, 3, 2, 2, 2, 434, 435, 7, 87, 2, 2, 435, 436, 7, 80, 2, 2, 436, 437, 7, 75, 2, 2, 437, 438, 7, 86, 2, 2, 438, 136, 3, 2, 2, 2, 439, 440, 7, 75, 2, 2, 440, 441, 7, 80, 2, 2, 441, 442, 7, 86, 2, 2, 442, 443, 7, 71, 2, 2, 443, 444, 7, 84, 2, 2, 444, 445, 7, 72, 2, 2, 445, 446, 7, 67, 2, 2, 446, 447, 7, 69, 2, 2, 447, 448, 7, 71, 2, 2, 448, 138, 3, 2, 2, 2, 449, 450, 7, 87, 2, 2, 450, 451, 7, 85, 2, 2, 451, 452, 7, 71, 2, 2, 452, 453, 7, 85, 2, 2, 453, 140, 3, 2, 2, 2, 454, 455, 7, 85, 2, 2, 455, 456, 7, 86, 2, 2, 456, 457, 7, 84, 2, 2, 457, 458, 7, 75, 2, 2, 458, 459, 7, 80, 2, 2, 459, 460, 7, 73, 2, 2, 460, 142, 3, 2, 2, 2, 461, 462, 7, 75, 2, 2, 462, 463, 7, 79, 2, 2, 463, 464, 7, 82, 2, 2, 464, 465, 7, 78, 2, 2, 465, 466, 7, 71, 2, 2, 466, 467, 7, 79, 2, 2, 467, 468, 7, 71, 2, 2, 468, 469, 7, 80, 2, 2, 469, 470, 7, 86, 2, 2, 470, 471, 7, 67, 2, 2, 471, 472, 7, 86, 2, 2, 472, 473, 7, 75, 2, 2, 473, 474, 7, 81, 2, 2, 474, 475, 7, 80, 2, 2, 475, 144, 3, 2, 2, 2, 476, 477, 7, 86, 2, 2, 477, 478, 7, 84, 2, 2, 478, 479, 7, 87, 2, 2, 479, 480, 7, 71, 2, 2, 480, 146, 3, 2, 2, 2, 481, 482, 7, 72, 2, 2, 482, 483, 7, 67, 2, 2, 483, 484, 7, 78, 2, 2, 484, 485, 7, 85, 2, 2, 485, 486, 7, 71, 2, 2, 486, 148, 3, 2, 2, 2, 487, 488, 9, 2, 2, 2, 488, 489, 3, 2, 2, 2, 489, 490, 8, 75, 2, 2, 490, 150, 3, 2, 2, 2, 491, 492, 7, 42, 2, 2, 492, 493, 7, 44, 2, 2, 493, 497, 3, 2, 2, 2, 494, 496, 11, 2, 2, 2, 495, 494, 3, 2, 2, 2, 496, 499, 3, 2, 2, 2, 497, 498, 3, 2, 2, 2, 497, 495, 3, 2, 2, 2, 498, 500, 3, 2, 2, 2, 499, 497, 3, 2, 2, 2, 500, 501, 7, 44, 2, 2, 501, 502, 7, 43, 2, 2, 502, 503, 3, 2, 2, 2, 503, 504, 8, 76, 2, 2, 504, 152, 3, 2, 2, 2, 505, 509, 7, 125, 2, 2, 506, 508, 11, 2, 2, 2, 507, 506, 3, 2, 2, 2, 508, 511, 3, 2, 2, 2, 509, 510, 3, 2, 2, 2, 509, 507, 3, 2, 2, 2, 510, 512, 3, 2, 2, 2, 511, 509, 3, 2, 2, 2, 512, 513, 7, 127, 2, 2, 513, 514, 3, 2, 2, 2, 514, 515, 8, 77, 2, 2, 515, 154, 3, 2, 2, 2, 516, 520, 4, 67, 92, 2, 517, 519, 9, 3, 2, 2, 518, 517, 3, 2, 2, 2, 519, 522, 3, 2, 2, 2, 520, 518, 3, 2, 2, 2, 520, 521, 3, 2, 2, 2, 521, 156, 3, 2, 2, 2, 522, 520, 3, 2, 2, 2, 523, 529, 7, 41, 2, 2, 524, 525, 7, 41, 2, 2, 525, 528, 7, 41, 2, 2, 526, 528, 10, 4, 2, 2, 527, 524, 3, 2, 2, 2, 527, 526, 3, 2, 2, 2, 528, 531, 3, 2, 2, 2, 529, 527, 3, 2, 2, 2, 529, 530, 3, 2, 2, 2, 530, 532, 3, 2, 2, 2, 531, 529, 3, 2, 2, 2, 532, 533, 7, 41, 2, 2, 533, 158, 3, 2, 2, 2, 534, 536, 4, 50, 59, 2, 535, 534, 3, 2, 2, 2, 536, 537, 3, 2, 2, 2, 537, 535, 3, 2, 2, 2, 537, 538, 3, 2, 2, 2, 538, 160, 3, 2, 2, 2, 539, 541, 4, 50, 59, 2, 540, 539, 3, 2, 2, 2, 541, 542, 3, 2, 2, 2, 542, 540, 3, 2, 2, 2, 542, 543, 3, 2, 2, 2, 543, 556, 3, 2, 2, 2, 544, 546, 7, 48, 2, 2, 545, 547, 4, 50, 59, 2, 546, 545, 3, 2, 2, 2, 547, 548, 3, 2, 2, 2, 548, 546, 3, 2, 2, 2, 548, 549, 3, 2, 2, 2, 549, 551, 3, 2, 2, 2, 550, 552, 5, 163, 82, 2, 551, 550, 3, 2, 2, 2, 551, 552, 3, 2, 2, 2, 552, 554, 3, 2, 2, 2, 553, 544, 3, 2, 2, 2, 553, 554, 3, 2, 2, 2, 554, 557, 3, 2, 2, 2, 555, 557, 5, 163, 82, 2, 556, 553, 3, 2, 2, 2, 556, 555, 3, 2, 2, 2, 557, 162, 3, 2, 2, 2, 558, 560, 7, 71, 2, 2, 559, 561, 9, 5, 2, 2, 560, 559, 3, 2, 2, 2, 560, 561, 3, 2, 2, 2, 561, 563, 3, 2, 2, 2, 562, 564, 4, 50, 59, 2, 563, 562, 3, 2, 2, 2, 564, 565, 3, 2, 2, 2, 565, 563, 3, 2, 2, 2, 565, 566, 3, 2, 2, 2, 566, 164, 3, 2, 2, 2, 16, 2, 497, 509, 520, 527, 529, 537, 542, 548, 551, 553, 556, 560, 565, 3, 8, 2, 2] \ No newline at end of file diff --git a/examples/Example - Pascal Symbol Table/.antlr/pascalLexer.java b/examples/Example - Pascal Symbol Table/.antlr/pascalLexer.java new file mode 100644 index 0000000..1460c89 --- /dev/null +++ b/examples/Example - Pascal Symbol Table/.antlr/pascalLexer.java @@ -0,0 +1,335 @@ +// Generated from c:\Users\Alexa\Documents\GitHub\easycompiler-1\examples\Example - Pascal Symbol Table\pascal.g4 by ANTLR 4.9.2 +import org.antlr.v4.runtime.Lexer; +import org.antlr.v4.runtime.CharStream; +import org.antlr.v4.runtime.Token; +import org.antlr.v4.runtime.TokenStream; +import org.antlr.v4.runtime.*; +import org.antlr.v4.runtime.atn.*; +import org.antlr.v4.runtime.dfa.DFA; +import org.antlr.v4.runtime.misc.*; + +@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast"}) +public class pascalLexer extends Lexer { + static { RuntimeMetaData.checkVersion("4.9.2", RuntimeMetaData.VERSION); } + + protected static final DFA[] _decisionToDFA; + protected static final PredictionContextCache _sharedContextCache = + new PredictionContextCache(); + public static final int + AND=1, ARRAY=2, BEGIN=3, BOOLEAN=4, CASE=5, CHAR=6, CHR=7, CONST=8, DIV=9, + DO=10, DOWNTO=11, ELSE=12, END=13, FILE=14, FOR=15, FUNCTION=16, GOTO=17, + IF=18, IN=19, INTEGER=20, LABEL=21, MOD=22, NIL=23, NOT=24, OF=25, OR=26, + PACKED=27, PROCEDURE=28, PROGRAM=29, REAL=30, RECORD=31, REPEAT=32, SET=33, + THEN=34, TO=35, TYPE=36, UNTIL=37, VAR=38, WHILE=39, WITH=40, PLUS=41, + MINUS=42, STAR=43, SLASH=44, ASSIGN=45, COMMA=46, SEMI=47, COLON=48, EQUAL=49, + NOT_EQUAL=50, LT=51, LE=52, GE=53, GT=54, LPAREN=55, RPAREN=56, LBRACK=57, + LBRACK2=58, RBRACK=59, RBRACK2=60, POINTER=61, AT=62, DOT=63, DOTDOT=64, + LCURLY=65, RCURLY=66, UNIT=67, INTERFACE=68, USES=69, STRING=70, IMPLEMENTATION=71, + TRUE=72, FALSE=73, WS=74, COMMENT_1=75, COMMENT_2=76, IDENT=77, STRING_LITERAL=78, + NUM_INT=79, NUM_REAL=80; + public static String[] channelNames = { + "DEFAULT_TOKEN_CHANNEL", "HIDDEN" + }; + + public static String[] modeNames = { + "DEFAULT_MODE" + }; + + private static String[] makeRuleNames() { + return new String[] { + "AND", "ARRAY", "BEGIN", "BOOLEAN", "CASE", "CHAR", "CHR", "CONST", "DIV", + "DO", "DOWNTO", "ELSE", "END", "FILE", "FOR", "FUNCTION", "GOTO", "IF", + "IN", "INTEGER", "LABEL", "MOD", "NIL", "NOT", "OF", "OR", "PACKED", + "PROCEDURE", "PROGRAM", "REAL", "RECORD", "REPEAT", "SET", "THEN", "TO", + "TYPE", "UNTIL", "VAR", "WHILE", "WITH", "PLUS", "MINUS", "STAR", "SLASH", + "ASSIGN", "COMMA", "SEMI", "COLON", "EQUAL", "NOT_EQUAL", "LT", "LE", + "GE", "GT", "LPAREN", "RPAREN", "LBRACK", "LBRACK2", "RBRACK", "RBRACK2", + "POINTER", "AT", "DOT", "DOTDOT", "LCURLY", "RCURLY", "UNIT", "INTERFACE", + "USES", "STRING", "IMPLEMENTATION", "TRUE", "FALSE", "WS", "COMMENT_1", + "COMMENT_2", "IDENT", "STRING_LITERAL", "NUM_INT", "NUM_REAL", "EXPONENT" + }; + } + public static final String[] ruleNames = makeRuleNames(); + + private static String[] makeLiteralNames() { + return new String[] { + null, "'AND'", "'ARRAY'", "'BEGIN'", "'BOOLEAN'", "'CASE'", "'CHAR'", + "'CHR'", "'CONST'", "'DIV'", "'DO'", "'DOWNTO'", "'ELSE'", "'END'", "'FILE'", + "'FOR'", "'FUNCTION'", "'GOTO'", "'IF'", "'IN'", "'INTEGER'", "'LABEL'", + "'MOD'", "'NIL'", "'NOT'", "'OF'", "'OR'", "'PACKED'", "'PROCEDURE'", + "'PROGRAM'", "'REAL'", "'RECORD'", "'REPEAT'", "'SET'", "'THEN'", "'TO'", + "'TYPE'", "'UNTIL'", "'VAR'", "'WHILE'", "'WITH'", "'+'", "'-'", "'*'", + "'/'", "':='", "','", "';'", "':'", "'='", "'<>'", "'<'", "'<='", "'>='", + "'>'", "'('", "')'", "'['", "'(.'", "']'", "'.)'", "'^'", "'@'", "'.'", + "'..'", "'{'", "'}'", "'UNIT'", "'INTERFACE'", "'USES'", "'STRING'", + "'IMPLEMENTATION'", "'TRUE'", "'FALSE'" + }; + } + private static final String[] _LITERAL_NAMES = makeLiteralNames(); + private static String[] makeSymbolicNames() { + return new String[] { + null, "AND", "ARRAY", "BEGIN", "BOOLEAN", "CASE", "CHAR", "CHR", "CONST", + "DIV", "DO", "DOWNTO", "ELSE", "END", "FILE", "FOR", "FUNCTION", "GOTO", + "IF", "IN", "INTEGER", "LABEL", "MOD", "NIL", "NOT", "OF", "OR", "PACKED", + "PROCEDURE", "PROGRAM", "REAL", "RECORD", "REPEAT", "SET", "THEN", "TO", + "TYPE", "UNTIL", "VAR", "WHILE", "WITH", "PLUS", "MINUS", "STAR", "SLASH", + "ASSIGN", "COMMA", "SEMI", "COLON", "EQUAL", "NOT_EQUAL", "LT", "LE", + "GE", "GT", "LPAREN", "RPAREN", "LBRACK", "LBRACK2", "RBRACK", "RBRACK2", + "POINTER", "AT", "DOT", "DOTDOT", "LCURLY", "RCURLY", "UNIT", "INTERFACE", + "USES", "STRING", "IMPLEMENTATION", "TRUE", "FALSE", "WS", "COMMENT_1", + "COMMENT_2", "IDENT", "STRING_LITERAL", "NUM_INT", "NUM_REAL" + }; + } + private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames(); + public static final Vocabulary VOCABULARY = new VocabularyImpl(_LITERAL_NAMES, _SYMBOLIC_NAMES); + + /** + * @deprecated Use {@link #VOCABULARY} instead. + */ + @Deprecated + public static final String[] tokenNames; + static { + tokenNames = new String[_SYMBOLIC_NAMES.length]; + for (int i = 0; i < tokenNames.length; i++) { + tokenNames[i] = VOCABULARY.getLiteralName(i); + if (tokenNames[i] == null) { + tokenNames[i] = VOCABULARY.getSymbolicName(i); + } + + if (tokenNames[i] == null) { + tokenNames[i] = ""; + } + } + } + + @Override + @Deprecated + public String[] getTokenNames() { + return tokenNames; + } + + @Override + + public Vocabulary getVocabulary() { + return VOCABULARY; + } + + + public pascalLexer(CharStream input) { + super(input); + _interp = new LexerATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache); + } + + @Override + public String getGrammarFileName() { return "pascal.g4"; } + + @Override + public String[] getRuleNames() { return ruleNames; } + + @Override + public String getSerializedATN() { return _serializedATN; } + + @Override + public String[] getChannelNames() { return channelNames; } + + @Override + public String[] getModeNames() { return modeNames; } + + @Override + public ATN getATN() { return _ATN; } + + public static final String _serializedATN = + "\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\2R\u0237\b\1\4\2\t"+ + "\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4\13"+ + "\t\13\4\f\t\f\4\r\t\r\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22"+ + "\4\23\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30\4\31\t\31"+ + "\4\32\t\32\4\33\t\33\4\34\t\34\4\35\t\35\4\36\t\36\4\37\t\37\4 \t \4!"+ + "\t!\4\"\t\"\4#\t#\4$\t$\4%\t%\4&\t&\4\'\t\'\4(\t(\4)\t)\4*\t*\4+\t+\4"+ + ",\t,\4-\t-\4.\t.\4/\t/\4\60\t\60\4\61\t\61\4\62\t\62\4\63\t\63\4\64\t"+ + "\64\4\65\t\65\4\66\t\66\4\67\t\67\48\t8\49\t9\4:\t:\4;\t;\4<\t<\4=\t="+ + "\4>\t>\4?\t?\4@\t@\4A\tA\4B\tB\4C\tC\4D\tD\4E\tE\4F\tF\4G\tG\4H\tH\4I"+ + "\tI\4J\tJ\4K\tK\4L\tL\4M\tM\4N\tN\4O\tO\4P\tP\4Q\tQ\4R\tR\3\2\3\2\3\2"+ + "\3\2\3\3\3\3\3\3\3\3\3\3\3\3\3\4\3\4\3\4\3\4\3\4\3\4\3\5\3\5\3\5\3\5\3"+ + "\5\3\5\3\5\3\5\3\6\3\6\3\6\3\6\3\6\3\7\3\7\3\7\3\7\3\7\3\b\3\b\3\b\3\b"+ + "\3\t\3\t\3\t\3\t\3\t\3\t\3\n\3\n\3\n\3\n\3\13\3\13\3\13\3\f\3\f\3\f\3"+ + "\f\3\f\3\f\3\f\3\r\3\r\3\r\3\r\3\r\3\16\3\16\3\16\3\16\3\17\3\17\3\17"+ + "\3\17\3\17\3\20\3\20\3\20\3\20\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21"+ + "\3\21\3\22\3\22\3\22\3\22\3\22\3\23\3\23\3\23\3\24\3\24\3\24\3\25\3\25"+ + "\3\25\3\25\3\25\3\25\3\25\3\25\3\26\3\26\3\26\3\26\3\26\3\26\3\27\3\27"+ + "\3\27\3\27\3\30\3\30\3\30\3\30\3\31\3\31\3\31\3\31\3\32\3\32\3\32\3\33"+ + "\3\33\3\33\3\34\3\34\3\34\3\34\3\34\3\34\3\34\3\35\3\35\3\35\3\35\3\35"+ + "\3\35\3\35\3\35\3\35\3\35\3\36\3\36\3\36\3\36\3\36\3\36\3\36\3\36\3\37"+ + "\3\37\3\37\3\37\3\37\3 \3 \3 \3 \3 \3 \3 \3!\3!\3!\3!\3!\3!\3!\3\"\3\""+ + "\3\"\3\"\3#\3#\3#\3#\3#\3$\3$\3$\3%\3%\3%\3%\3%\3&\3&\3&\3&\3&\3&\3\'"+ + "\3\'\3\'\3\'\3(\3(\3(\3(\3(\3(\3)\3)\3)\3)\3)\3*\3*\3+\3+\3,\3,\3-\3-"+ + "\3.\3.\3.\3/\3/\3\60\3\60\3\61\3\61\3\62\3\62\3\63\3\63\3\63\3\64\3\64"+ + "\3\65\3\65\3\65\3\66\3\66\3\66\3\67\3\67\38\38\39\39\3:\3:\3;\3;\3;\3"+ + "<\3<\3=\3=\3=\3>\3>\3?\3?\3@\3@\3A\3A\3A\3B\3B\3C\3C\3D\3D\3D\3D\3D\3"+ + "E\3E\3E\3E\3E\3E\3E\3E\3E\3E\3F\3F\3F\3F\3F\3G\3G\3G\3G\3G\3G\3G\3H\3"+ + "H\3H\3H\3H\3H\3H\3H\3H\3H\3H\3H\3H\3H\3H\3I\3I\3I\3I\3I\3J\3J\3J\3J\3"+ + "J\3J\3K\3K\3K\3K\3L\3L\3L\3L\7L\u01f0\nL\fL\16L\u01f3\13L\3L\3L\3L\3L"+ + "\3L\3M\3M\7M\u01fc\nM\fM\16M\u01ff\13M\3M\3M\3M\3M\3N\3N\7N\u0207\nN\f"+ + "N\16N\u020a\13N\3O\3O\3O\3O\7O\u0210\nO\fO\16O\u0213\13O\3O\3O\3P\6P\u0218"+ + "\nP\rP\16P\u0219\3Q\6Q\u021d\nQ\rQ\16Q\u021e\3Q\3Q\6Q\u0223\nQ\rQ\16Q"+ + "\u0224\3Q\5Q\u0228\nQ\5Q\u022a\nQ\3Q\5Q\u022d\nQ\3R\3R\5R\u0231\nR\3R"+ + "\6R\u0234\nR\rR\16R\u0235\4\u01f1\u01fd\2S\3\3\5\4\7\5\t\6\13\7\r\b\17"+ + "\t\21\n\23\13\25\f\27\r\31\16\33\17\35\20\37\21!\22#\23%\24\'\25)\26+"+ + "\27-\30/\31\61\32\63\33\65\34\67\359\36;\37= ?!A\"C#E$G%I&K\'M(O)Q*S+"+ + "U,W-Y.[/]\60_\61a\62c\63e\64g\65i\66k\67m8o9q:s;u{?}@\177A\u0081"+ + "B\u0083C\u0085D\u0087E\u0089F\u008bG\u008dH\u008fI\u0091J\u0093K\u0095"+ + "L\u0097M\u0099N\u009bO\u009dP\u009fQ\u00a1R\u00a3\2\3\2\6\5\2\13\f\17"+ + "\17\"\"\5\2\62;C\\aa\3\2))\4\2--//\2\u0242\2\3\3\2\2\2\2\5\3\2\2\2\2\7"+ + "\3\2\2\2\2\t\3\2\2\2\2\13\3\2\2\2\2\r\3\2\2\2\2\17\3\2\2\2\2\21\3\2\2"+ + "\2\2\23\3\2\2\2\2\25\3\2\2\2\2\27\3\2\2\2\2\31\3\2\2\2\2\33\3\2\2\2\2"+ + "\35\3\2\2\2\2\37\3\2\2\2\2!\3\2\2\2\2#\3\2\2\2\2%\3\2\2\2\2\'\3\2\2\2"+ + "\2)\3\2\2\2\2+\3\2\2\2\2-\3\2\2\2\2/\3\2\2\2\2\61\3\2\2\2\2\63\3\2\2\2"+ + "\2\65\3\2\2\2\2\67\3\2\2\2\29\3\2\2\2\2;\3\2\2\2\2=\3\2\2\2\2?\3\2\2\2"+ + "\2A\3\2\2\2\2C\3\2\2\2\2E\3\2\2\2\2G\3\2\2\2\2I\3\2\2\2\2K\3\2\2\2\2M"+ + "\3\2\2\2\2O\3\2\2\2\2Q\3\2\2\2\2S\3\2\2\2\2U\3\2\2\2\2W\3\2\2\2\2Y\3\2"+ + "\2\2\2[\3\2\2\2\2]\3\2\2\2\2_\3\2\2\2\2a\3\2\2\2\2c\3\2\2\2\2e\3\2\2\2"+ + "\2g\3\2\2\2\2i\3\2\2\2\2k\3\2\2\2\2m\3\2\2\2\2o\3\2\2\2\2q\3\2\2\2\2s"+ + "\3\2\2\2\2u\3\2\2\2\2w\3\2\2\2\2y\3\2\2\2\2{\3\2\2\2\2}\3\2\2\2\2\177"+ + "\3\2\2\2\2\u0081\3\2\2\2\2\u0083\3\2\2\2\2\u0085\3\2\2\2\2\u0087\3\2\2"+ + "\2\2\u0089\3\2\2\2\2\u008b\3\2\2\2\2\u008d\3\2\2\2\2\u008f\3\2\2\2\2\u0091"+ + "\3\2\2\2\2\u0093\3\2\2\2\2\u0095\3\2\2\2\2\u0097\3\2\2\2\2\u0099\3\2\2"+ + "\2\2\u009b\3\2\2\2\2\u009d\3\2\2\2\2\u009f\3\2\2\2\2\u00a1\3\2\2\2\3\u00a5"+ + "\3\2\2\2\5\u00a9\3\2\2\2\7\u00af\3\2\2\2\t\u00b5\3\2\2\2\13\u00bd\3\2"+ + "\2\2\r\u00c2\3\2\2\2\17\u00c7\3\2\2\2\21\u00cb\3\2\2\2\23\u00d1\3\2\2"+ + "\2\25\u00d5\3\2\2\2\27\u00d8\3\2\2\2\31\u00df\3\2\2\2\33\u00e4\3\2\2\2"+ + "\35\u00e8\3\2\2\2\37\u00ed\3\2\2\2!\u00f1\3\2\2\2#\u00fa\3\2\2\2%\u00ff"+ + "\3\2\2\2\'\u0102\3\2\2\2)\u0105\3\2\2\2+\u010d\3\2\2\2-\u0113\3\2\2\2"+ + "/\u0117\3\2\2\2\61\u011b\3\2\2\2\63\u011f\3\2\2\2\65\u0122\3\2\2\2\67"+ + "\u0125\3\2\2\29\u012c\3\2\2\2;\u0136\3\2\2\2=\u013e\3\2\2\2?\u0143\3\2"+ + "\2\2A\u014a\3\2\2\2C\u0151\3\2\2\2E\u0155\3\2\2\2G\u015a\3\2\2\2I\u015d"+ + "\3\2\2\2K\u0162\3\2\2\2M\u0168\3\2\2\2O\u016c\3\2\2\2Q\u0172\3\2\2\2S"+ + "\u0177\3\2\2\2U\u0179\3\2\2\2W\u017b\3\2\2\2Y\u017d\3\2\2\2[\u017f\3\2"+ + "\2\2]\u0182\3\2\2\2_\u0184\3\2\2\2a\u0186\3\2\2\2c\u0188\3\2\2\2e\u018a"+ + "\3\2\2\2g\u018d\3\2\2\2i\u018f\3\2\2\2k\u0192\3\2\2\2m\u0195\3\2\2\2o"+ + "\u0197\3\2\2\2q\u0199\3\2\2\2s\u019b\3\2\2\2u\u019d\3\2\2\2w\u01a0\3\2"+ + "\2\2y\u01a2\3\2\2\2{\u01a5\3\2\2\2}\u01a7\3\2\2\2\177\u01a9\3\2\2\2\u0081"+ + "\u01ab\3\2\2\2\u0083\u01ae\3\2\2\2\u0085\u01b0\3\2\2\2\u0087\u01b2\3\2"+ + "\2\2\u0089\u01b7\3\2\2\2\u008b\u01c1\3\2\2\2\u008d\u01c6\3\2\2\2\u008f"+ + "\u01cd\3\2\2\2\u0091\u01dc\3\2\2\2\u0093\u01e1\3\2\2\2\u0095\u01e7\3\2"+ + "\2\2\u0097\u01eb\3\2\2\2\u0099\u01f9\3\2\2\2\u009b\u0204\3\2\2\2\u009d"+ + "\u020b\3\2\2\2\u009f\u0217\3\2\2\2\u00a1\u021c\3\2\2\2\u00a3\u022e\3\2"+ + "\2\2\u00a5\u00a6\7C\2\2\u00a6\u00a7\7P\2\2\u00a7\u00a8\7F\2\2\u00a8\4"+ + "\3\2\2\2\u00a9\u00aa\7C\2\2\u00aa\u00ab\7T\2\2\u00ab\u00ac\7T\2\2\u00ac"+ + "\u00ad\7C\2\2\u00ad\u00ae\7[\2\2\u00ae\6\3\2\2\2\u00af\u00b0\7D\2\2\u00b0"+ + "\u00b1\7G\2\2\u00b1\u00b2\7I\2\2\u00b2\u00b3\7K\2\2\u00b3\u00b4\7P\2\2"+ + "\u00b4\b\3\2\2\2\u00b5\u00b6\7D\2\2\u00b6\u00b7\7Q\2\2\u00b7\u00b8\7Q"+ + "\2\2\u00b8\u00b9\7N\2\2\u00b9\u00ba\7G\2\2\u00ba\u00bb\7C\2\2\u00bb\u00bc"+ + "\7P\2\2\u00bc\n\3\2\2\2\u00bd\u00be\7E\2\2\u00be\u00bf\7C\2\2\u00bf\u00c0"+ + "\7U\2\2\u00c0\u00c1\7G\2\2\u00c1\f\3\2\2\2\u00c2\u00c3\7E\2\2\u00c3\u00c4"+ + "\7J\2\2\u00c4\u00c5\7C\2\2\u00c5\u00c6\7T\2\2\u00c6\16\3\2\2\2\u00c7\u00c8"+ + "\7E\2\2\u00c8\u00c9\7J\2\2\u00c9\u00ca\7T\2\2\u00ca\20\3\2\2\2\u00cb\u00cc"+ + "\7E\2\2\u00cc\u00cd\7Q\2\2\u00cd\u00ce\7P\2\2\u00ce\u00cf\7U\2\2\u00cf"+ + "\u00d0\7V\2\2\u00d0\22\3\2\2\2\u00d1\u00d2\7F\2\2\u00d2\u00d3\7K\2\2\u00d3"+ + "\u00d4\7X\2\2\u00d4\24\3\2\2\2\u00d5\u00d6\7F\2\2\u00d6\u00d7\7Q\2\2\u00d7"+ + "\26\3\2\2\2\u00d8\u00d9\7F\2\2\u00d9\u00da\7Q\2\2\u00da\u00db\7Y\2\2\u00db"+ + "\u00dc\7P\2\2\u00dc\u00dd\7V\2\2\u00dd\u00de\7Q\2\2\u00de\30\3\2\2\2\u00df"+ + "\u00e0\7G\2\2\u00e0\u00e1\7N\2\2\u00e1\u00e2\7U\2\2\u00e2\u00e3\7G\2\2"+ + "\u00e3\32\3\2\2\2\u00e4\u00e5\7G\2\2\u00e5\u00e6\7P\2\2\u00e6\u00e7\7"+ + "F\2\2\u00e7\34\3\2\2\2\u00e8\u00e9\7H\2\2\u00e9\u00ea\7K\2\2\u00ea\u00eb"+ + "\7N\2\2\u00eb\u00ec\7G\2\2\u00ec\36\3\2\2\2\u00ed\u00ee\7H\2\2\u00ee\u00ef"+ + "\7Q\2\2\u00ef\u00f0\7T\2\2\u00f0 \3\2\2\2\u00f1\u00f2\7H\2\2\u00f2\u00f3"+ + "\7W\2\2\u00f3\u00f4\7P\2\2\u00f4\u00f5\7E\2\2\u00f5\u00f6\7V\2\2\u00f6"+ + "\u00f7\7K\2\2\u00f7\u00f8\7Q\2\2\u00f8\u00f9\7P\2\2\u00f9\"\3\2\2\2\u00fa"+ + "\u00fb\7I\2\2\u00fb\u00fc\7Q\2\2\u00fc\u00fd\7V\2\2\u00fd\u00fe\7Q\2\2"+ + "\u00fe$\3\2\2\2\u00ff\u0100\7K\2\2\u0100\u0101\7H\2\2\u0101&\3\2\2\2\u0102"+ + "\u0103\7K\2\2\u0103\u0104\7P\2\2\u0104(\3\2\2\2\u0105\u0106\7K\2\2\u0106"+ + "\u0107\7P\2\2\u0107\u0108\7V\2\2\u0108\u0109\7G\2\2\u0109\u010a\7I\2\2"+ + "\u010a\u010b\7G\2\2\u010b\u010c\7T\2\2\u010c*\3\2\2\2\u010d\u010e\7N\2"+ + "\2\u010e\u010f\7C\2\2\u010f\u0110\7D\2\2\u0110\u0111\7G\2\2\u0111\u0112"+ + "\7N\2\2\u0112,\3\2\2\2\u0113\u0114\7O\2\2\u0114\u0115\7Q\2\2\u0115\u0116"+ + "\7F\2\2\u0116.\3\2\2\2\u0117\u0118\7P\2\2\u0118\u0119\7K\2\2\u0119\u011a"+ + "\7N\2\2\u011a\60\3\2\2\2\u011b\u011c\7P\2\2\u011c\u011d\7Q\2\2\u011d\u011e"+ + "\7V\2\2\u011e\62\3\2\2\2\u011f\u0120\7Q\2\2\u0120\u0121\7H\2\2\u0121\64"+ + "\3\2\2\2\u0122\u0123\7Q\2\2\u0123\u0124\7T\2\2\u0124\66\3\2\2\2\u0125"+ + "\u0126\7R\2\2\u0126\u0127\7C\2\2\u0127\u0128\7E\2\2\u0128\u0129\7M\2\2"+ + "\u0129\u012a\7G\2\2\u012a\u012b\7F\2\2\u012b8\3\2\2\2\u012c\u012d\7R\2"+ + "\2\u012d\u012e\7T\2\2\u012e\u012f\7Q\2\2\u012f\u0130\7E\2\2\u0130\u0131"+ + "\7G\2\2\u0131\u0132\7F\2\2\u0132\u0133\7W\2\2\u0133\u0134\7T\2\2\u0134"+ + "\u0135\7G\2\2\u0135:\3\2\2\2\u0136\u0137\7R\2\2\u0137\u0138\7T\2\2\u0138"+ + "\u0139\7Q\2\2\u0139\u013a\7I\2\2\u013a\u013b\7T\2\2\u013b\u013c\7C\2\2"+ + "\u013c\u013d\7O\2\2\u013d<\3\2\2\2\u013e\u013f\7T\2\2\u013f\u0140\7G\2"+ + "\2\u0140\u0141\7C\2\2\u0141\u0142\7N\2\2\u0142>\3\2\2\2\u0143\u0144\7"+ + "T\2\2\u0144\u0145\7G\2\2\u0145\u0146\7E\2\2\u0146\u0147\7Q\2\2\u0147\u0148"+ + "\7T\2\2\u0148\u0149\7F\2\2\u0149@\3\2\2\2\u014a\u014b\7T\2\2\u014b\u014c"+ + "\7G\2\2\u014c\u014d\7R\2\2\u014d\u014e\7G\2\2\u014e\u014f\7C\2\2\u014f"+ + "\u0150\7V\2\2\u0150B\3\2\2\2\u0151\u0152\7U\2\2\u0152\u0153\7G\2\2\u0153"+ + "\u0154\7V\2\2\u0154D\3\2\2\2\u0155\u0156\7V\2\2\u0156\u0157\7J\2\2\u0157"+ + "\u0158\7G\2\2\u0158\u0159\7P\2\2\u0159F\3\2\2\2\u015a\u015b\7V\2\2\u015b"+ + "\u015c\7Q\2\2\u015cH\3\2\2\2\u015d\u015e\7V\2\2\u015e\u015f\7[\2\2\u015f"+ + "\u0160\7R\2\2\u0160\u0161\7G\2\2\u0161J\3\2\2\2\u0162\u0163\7W\2\2\u0163"+ + "\u0164\7P\2\2\u0164\u0165\7V\2\2\u0165\u0166\7K\2\2\u0166\u0167\7N\2\2"+ + "\u0167L\3\2\2\2\u0168\u0169\7X\2\2\u0169\u016a\7C\2\2\u016a\u016b\7T\2"+ + "\2\u016bN\3\2\2\2\u016c\u016d\7Y\2\2\u016d\u016e\7J\2\2\u016e\u016f\7"+ + "K\2\2\u016f\u0170\7N\2\2\u0170\u0171\7G\2\2\u0171P\3\2\2\2\u0172\u0173"+ + "\7Y\2\2\u0173\u0174\7K\2\2\u0174\u0175\7V\2\2\u0175\u0176\7J\2\2\u0176"+ + "R\3\2\2\2\u0177\u0178\7-\2\2\u0178T\3\2\2\2\u0179\u017a\7/\2\2\u017aV"+ + "\3\2\2\2\u017b\u017c\7,\2\2\u017cX\3\2\2\2\u017d\u017e\7\61\2\2\u017e"+ + "Z\3\2\2\2\u017f\u0180\7<\2\2\u0180\u0181\7?\2\2\u0181\\\3\2\2\2\u0182"+ + "\u0183\7.\2\2\u0183^\3\2\2\2\u0184\u0185\7=\2\2\u0185`\3\2\2\2\u0186\u0187"+ + "\7<\2\2\u0187b\3\2\2\2\u0188\u0189\7?\2\2\u0189d\3\2\2\2\u018a\u018b\7"+ + ">\2\2\u018b\u018c\7@\2\2\u018cf\3\2\2\2\u018d\u018e\7>\2\2\u018eh\3\2"+ + "\2\2\u018f\u0190\7>\2\2\u0190\u0191\7?\2\2\u0191j\3\2\2\2\u0192\u0193"+ + "\7@\2\2\u0193\u0194\7?\2\2\u0194l\3\2\2\2\u0195\u0196\7@\2\2\u0196n\3"+ + "\2\2\2\u0197\u0198\7*\2\2\u0198p\3\2\2\2\u0199\u019a\7+\2\2\u019ar\3\2"+ + "\2\2\u019b\u019c\7]\2\2\u019ct\3\2\2\2\u019d\u019e\7*\2\2\u019e\u019f"+ + "\7\60\2\2\u019fv\3\2\2\2\u01a0\u01a1\7_\2\2\u01a1x\3\2\2\2\u01a2\u01a3"+ + "\7\60\2\2\u01a3\u01a4\7+\2\2\u01a4z\3\2\2\2\u01a5\u01a6\7`\2\2\u01a6|"+ + "\3\2\2\2\u01a7\u01a8\7B\2\2\u01a8~\3\2\2\2\u01a9\u01aa\7\60\2\2\u01aa"+ + "\u0080\3\2\2\2\u01ab\u01ac\7\60\2\2\u01ac\u01ad\7\60\2\2\u01ad\u0082\3"+ + "\2\2\2\u01ae\u01af\7}\2\2\u01af\u0084\3\2\2\2\u01b0\u01b1\7\177\2\2\u01b1"+ + "\u0086\3\2\2\2\u01b2\u01b3\7W\2\2\u01b3\u01b4\7P\2\2\u01b4\u01b5\7K\2"+ + "\2\u01b5\u01b6\7V\2\2\u01b6\u0088\3\2\2\2\u01b7\u01b8\7K\2\2\u01b8\u01b9"+ + "\7P\2\2\u01b9\u01ba\7V\2\2\u01ba\u01bb\7G\2\2\u01bb\u01bc\7T\2\2\u01bc"+ + "\u01bd\7H\2\2\u01bd\u01be\7C\2\2\u01be\u01bf\7E\2\2\u01bf\u01c0\7G\2\2"+ + "\u01c0\u008a\3\2\2\2\u01c1\u01c2\7W\2\2\u01c2\u01c3\7U\2\2\u01c3\u01c4"+ + "\7G\2\2\u01c4\u01c5\7U\2\2\u01c5\u008c\3\2\2\2\u01c6\u01c7\7U\2\2\u01c7"+ + "\u01c8\7V\2\2\u01c8\u01c9\7T\2\2\u01c9\u01ca\7K\2\2\u01ca\u01cb\7P\2\2"+ + "\u01cb\u01cc\7I\2\2\u01cc\u008e\3\2\2\2\u01cd\u01ce\7K\2\2\u01ce\u01cf"+ + "\7O\2\2\u01cf\u01d0\7R\2\2\u01d0\u01d1\7N\2\2\u01d1\u01d2\7G\2\2\u01d2"+ + "\u01d3\7O\2\2\u01d3\u01d4\7G\2\2\u01d4\u01d5\7P\2\2\u01d5\u01d6\7V\2\2"+ + "\u01d6\u01d7\7C\2\2\u01d7\u01d8\7V\2\2\u01d8\u01d9\7K\2\2\u01d9\u01da"+ + "\7Q\2\2\u01da\u01db\7P\2\2\u01db\u0090\3\2\2\2\u01dc\u01dd\7V\2\2\u01dd"+ + "\u01de\7T\2\2\u01de\u01df\7W\2\2\u01df\u01e0\7G\2\2\u01e0\u0092\3\2\2"+ + "\2\u01e1\u01e2\7H\2\2\u01e2\u01e3\7C\2\2\u01e3\u01e4\7N\2\2\u01e4\u01e5"+ + "\7U\2\2\u01e5\u01e6\7G\2\2\u01e6\u0094\3\2\2\2\u01e7\u01e8\t\2\2\2\u01e8"+ + "\u01e9\3\2\2\2\u01e9\u01ea\bK\2\2\u01ea\u0096\3\2\2\2\u01eb\u01ec\7*\2"+ + "\2\u01ec\u01ed\7,\2\2\u01ed\u01f1\3\2\2\2\u01ee\u01f0\13\2\2\2\u01ef\u01ee"+ + "\3\2\2\2\u01f0\u01f3\3\2\2\2\u01f1\u01f2\3\2\2\2\u01f1\u01ef\3\2\2\2\u01f2"+ + "\u01f4\3\2\2\2\u01f3\u01f1\3\2\2\2\u01f4\u01f5\7,\2\2\u01f5\u01f6\7+\2"+ + "\2\u01f6\u01f7\3\2\2\2\u01f7\u01f8\bL\2\2\u01f8\u0098\3\2\2\2\u01f9\u01fd"+ + "\7}\2\2\u01fa\u01fc\13\2\2\2\u01fb\u01fa\3\2\2\2\u01fc\u01ff\3\2\2\2\u01fd"+ + "\u01fe\3\2\2\2\u01fd\u01fb\3\2\2\2\u01fe\u0200\3\2\2\2\u01ff\u01fd\3\2"+ + "\2\2\u0200\u0201\7\177\2\2\u0201\u0202\3\2\2\2\u0202\u0203\bM\2\2\u0203"+ + "\u009a\3\2\2\2\u0204\u0208\4C\\\2\u0205\u0207\t\3\2\2\u0206\u0205\3\2"+ + "\2\2\u0207\u020a\3\2\2\2\u0208\u0206\3\2\2\2\u0208\u0209\3\2\2\2\u0209"+ + "\u009c\3\2\2\2\u020a\u0208\3\2\2\2\u020b\u0211\7)\2\2\u020c\u020d\7)\2"+ + "\2\u020d\u0210\7)\2\2\u020e\u0210\n\4\2\2\u020f\u020c\3\2\2\2\u020f\u020e"+ + "\3\2\2\2\u0210\u0213\3\2\2\2\u0211\u020f\3\2\2\2\u0211\u0212\3\2\2\2\u0212"+ + "\u0214\3\2\2\2\u0213\u0211\3\2\2\2\u0214\u0215\7)\2\2\u0215\u009e\3\2"+ + "\2\2\u0216\u0218\4\62;\2\u0217\u0216\3\2\2\2\u0218\u0219\3\2\2\2\u0219"+ + "\u0217\3\2\2\2\u0219\u021a\3\2\2\2\u021a\u00a0\3\2\2\2\u021b\u021d\4\62"+ + ";\2\u021c\u021b\3\2\2\2\u021d\u021e\3\2\2\2\u021e\u021c\3\2\2\2\u021e"+ + "\u021f\3\2\2\2\u021f\u022c\3\2\2\2\u0220\u0222\7\60\2\2\u0221\u0223\4"+ + "\62;\2\u0222\u0221\3\2\2\2\u0223\u0224\3\2\2\2\u0224\u0222\3\2\2\2\u0224"+ + "\u0225\3\2\2\2\u0225\u0227\3\2\2\2\u0226\u0228\5\u00a3R\2\u0227\u0226"+ + "\3\2\2\2\u0227\u0228\3\2\2\2\u0228\u022a\3\2\2\2\u0229\u0220\3\2\2\2\u0229"+ + "\u022a\3\2\2\2\u022a\u022d\3\2\2\2\u022b\u022d\5\u00a3R\2\u022c\u0229"+ + "\3\2\2\2\u022c\u022b\3\2\2\2\u022d\u00a2\3\2\2\2\u022e\u0230\7G\2\2\u022f"+ + "\u0231\t\5\2\2\u0230\u022f\3\2\2\2\u0230\u0231\3\2\2\2\u0231\u0233\3\2"+ + "\2\2\u0232\u0234\4\62;\2\u0233\u0232\3\2\2\2\u0234\u0235\3\2\2\2\u0235"+ + "\u0233\3\2\2\2\u0235\u0236\3\2\2\2\u0236\u00a4\3\2\2\2\20\2\u01f1\u01fd"+ + "\u0208\u020f\u0211\u0219\u021e\u0224\u0227\u0229\u022c\u0230\u0235\3\b"+ + "\2\2"; + public static final ATN _ATN = + new ATNDeserializer().deserialize(_serializedATN.toCharArray()); + static { + _decisionToDFA = new DFA[_ATN.getNumberOfDecisions()]; + for (int i = 0; i < _ATN.getNumberOfDecisions(); i++) { + _decisionToDFA[i] = new DFA(_ATN.getDecisionState(i), i); + } + } +} \ No newline at end of file diff --git a/examples/Example - Pascal Symbol Table/.antlr/pascalLexer.tokens b/examples/Example - Pascal Symbol Table/.antlr/pascalLexer.tokens new file mode 100644 index 0000000..a0e3feb --- /dev/null +++ b/examples/Example - Pascal Symbol Table/.antlr/pascalLexer.tokens @@ -0,0 +1,153 @@ +AND=1 +ARRAY=2 +BEGIN=3 +BOOLEAN=4 +CASE=5 +CHAR=6 +CHR=7 +CONST=8 +DIV=9 +DO=10 +DOWNTO=11 +ELSE=12 +END=13 +FILE=14 +FOR=15 +FUNCTION=16 +GOTO=17 +IF=18 +IN=19 +INTEGER=20 +LABEL=21 +MOD=22 +NIL=23 +NOT=24 +OF=25 +OR=26 +PACKED=27 +PROCEDURE=28 +PROGRAM=29 +REAL=30 +RECORD=31 +REPEAT=32 +SET=33 +THEN=34 +TO=35 +TYPE=36 +UNTIL=37 +VAR=38 +WHILE=39 +WITH=40 +PLUS=41 +MINUS=42 +STAR=43 +SLASH=44 +ASSIGN=45 +COMMA=46 +SEMI=47 +COLON=48 +EQUAL=49 +NOT_EQUAL=50 +LT=51 +LE=52 +GE=53 +GT=54 +LPAREN=55 +RPAREN=56 +LBRACK=57 +LBRACK2=58 +RBRACK=59 +RBRACK2=60 +POINTER=61 +AT=62 +DOT=63 +DOTDOT=64 +LCURLY=65 +RCURLY=66 +UNIT=67 +INTERFACE=68 +USES=69 +STRING=70 +IMPLEMENTATION=71 +TRUE=72 +FALSE=73 +WS=74 +COMMENT_1=75 +COMMENT_2=76 +IDENT=77 +STRING_LITERAL=78 +NUM_INT=79 +NUM_REAL=80 +'AND'=1 +'ARRAY'=2 +'BEGIN'=3 +'BOOLEAN'=4 +'CASE'=5 +'CHAR'=6 +'CHR'=7 +'CONST'=8 +'DIV'=9 +'DO'=10 +'DOWNTO'=11 +'ELSE'=12 +'END'=13 +'FILE'=14 +'FOR'=15 +'FUNCTION'=16 +'GOTO'=17 +'IF'=18 +'IN'=19 +'INTEGER'=20 +'LABEL'=21 +'MOD'=22 +'NIL'=23 +'NOT'=24 +'OF'=25 +'OR'=26 +'PACKED'=27 +'PROCEDURE'=28 +'PROGRAM'=29 +'REAL'=30 +'RECORD'=31 +'REPEAT'=32 +'SET'=33 +'THEN'=34 +'TO'=35 +'TYPE'=36 +'UNTIL'=37 +'VAR'=38 +'WHILE'=39 +'WITH'=40 +'+'=41 +'-'=42 +'*'=43 +'/'=44 +':='=45 +','=46 +';'=47 +':'=48 +'='=49 +'<>'=50 +'<'=51 +'<='=52 +'>='=53 +'>'=54 +'('=55 +')'=56 +'['=57 +'(.'=58 +']'=59 +'.)'=60 +'^'=61 +'@'=62 +'.'=63 +'..'=64 +'{'=65 +'}'=66 +'UNIT'=67 +'INTERFACE'=68 +'USES'=69 +'STRING'=70 +'IMPLEMENTATION'=71 +'TRUE'=72 +'FALSE'=73 diff --git a/examples/Example - Pascal Symbol Table/.antlr/pascalParser.java b/examples/Example - Pascal Symbol Table/.antlr/pascalParser.java new file mode 100644 index 0000000..1fb4b37 --- /dev/null +++ b/examples/Example - Pascal Symbol Table/.antlr/pascalParser.java @@ -0,0 +1,5587 @@ +// Generated from c:\Users\Alexa\Documents\GitHub\easycompiler-1\examples\Example - Pascal Symbol Table\pascal.g4 by ANTLR 4.9.2 +import org.antlr.v4.runtime.atn.*; +import org.antlr.v4.runtime.dfa.DFA; +import org.antlr.v4.runtime.*; +import org.antlr.v4.runtime.misc.*; +import org.antlr.v4.runtime.tree.*; +import java.util.List; +import java.util.Iterator; +import java.util.ArrayList; + +@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast"}) +public class pascalParser extends Parser { + static { RuntimeMetaData.checkVersion("4.9.2", RuntimeMetaData.VERSION); } + + protected static final DFA[] _decisionToDFA; + protected static final PredictionContextCache _sharedContextCache = + new PredictionContextCache(); + public static final int + AND=1, ARRAY=2, BEGIN=3, BOOLEAN=4, CASE=5, CHAR=6, CHR=7, CONST=8, DIV=9, + DO=10, DOWNTO=11, ELSE=12, END=13, FILE=14, FOR=15, FUNCTION=16, GOTO=17, + IF=18, IN=19, INTEGER=20, LABEL=21, MOD=22, NIL=23, NOT=24, OF=25, OR=26, + PACKED=27, PROCEDURE=28, PROGRAM=29, REAL=30, RECORD=31, REPEAT=32, SET=33, + THEN=34, TO=35, TYPE=36, UNTIL=37, VAR=38, WHILE=39, WITH=40, PLUS=41, + MINUS=42, STAR=43, SLASH=44, ASSIGN=45, COMMA=46, SEMI=47, COLON=48, EQUAL=49, + NOT_EQUAL=50, LT=51, LE=52, GE=53, GT=54, LPAREN=55, RPAREN=56, LBRACK=57, + LBRACK2=58, RBRACK=59, RBRACK2=60, POINTER=61, AT=62, DOT=63, DOTDOT=64, + LCURLY=65, RCURLY=66, UNIT=67, INTERFACE=68, USES=69, STRING=70, IMPLEMENTATION=71, + TRUE=72, FALSE=73, WS=74, COMMENT_1=75, COMMENT_2=76, IDENT=77, STRING_LITERAL=78, + NUM_INT=79, NUM_REAL=80; + public static final int + RULE_start = 0, RULE_program = 1, RULE_programHeading = 2, RULE_identifier = 3, + RULE_block = 4, RULE_usesUnitsPart = 5, RULE_labelDeclarationPart = 6, + RULE_label = 7, RULE_constantDefinitionPart = 8, RULE_constantDefinition = 9, + RULE_constantChr = 10, RULE_constant = 11, RULE_unsignedNumber = 12, RULE_unsignedInteger = 13, + RULE_unsignedReal = 14, RULE_sign = 15, RULE_bool_ = 16, RULE_string = 17, + RULE_typeDefinitionPart = 18, RULE_typeDefinition = 19, RULE_functionType = 20, + RULE_procedureType = 21, RULE_type_ = 22, RULE_simpleType = 23, RULE_scalarType = 24, + RULE_subrangeType = 25, RULE_typeIdentifier = 26, RULE_structuredType = 27, + RULE_unpackedStructuredType = 28, RULE_stringtype = 29, RULE_arrayType = 30, + RULE_typeList = 31, RULE_indexType = 32, RULE_componentType = 33, RULE_recordType = 34, + RULE_fieldList = 35, RULE_fixedPart = 36, RULE_recordSection = 37, RULE_variantPart = 38, + RULE_tag = 39, RULE_variant = 40, RULE_setType = 41, RULE_baseType = 42, + RULE_fileType = 43, RULE_pointerType = 44, RULE_variableDeclarationPart = 45, + RULE_variableDeclaration = 46, RULE_procedureAndFunctionDeclarationPart = 47, + RULE_procedureOrFunctionDeclaration = 48, RULE_procedureDeclaration = 49, + RULE_formalParameterList = 50, RULE_formalParameterSection = 51, RULE_parameterGroup = 52, + RULE_identifierList = 53, RULE_constList = 54, RULE_functionDeclaration = 55, + RULE_resultType = 56, RULE_statement = 57, RULE_unlabelledStatement = 58, + RULE_simpleStatement = 59, RULE_assignmentStatement = 60, RULE_variable = 61, + RULE_expression = 62, RULE_relationaloperator = 63, RULE_simpleExpression = 64, + RULE_additiveoperator = 65, RULE_term = 66, RULE_multiplicativeoperator = 67, + RULE_signedFactor = 68, RULE_factor = 69, RULE_unsignedConstant = 70, + RULE_functionDesignator = 71, RULE_parameterList = 72, RULE_set_ = 73, + RULE_elementList = 74, RULE_element = 75, RULE_procedureStatement = 76, + RULE_actualParameter = 77, RULE_parameterwidth = 78, RULE_gotoStatement = 79, + RULE_emptyStatement_ = 80, RULE_empty_ = 81, RULE_structuredStatement = 82, + RULE_compoundStatement = 83, RULE_statements = 84, RULE_conditionalStatement = 85, + RULE_ifStatement = 86, RULE_caseStatement = 87, RULE_caseListElement = 88, + RULE_repetetiveStatement = 89, RULE_whileStatement = 90, RULE_repeatStatement = 91, + RULE_forStatement = 92, RULE_forList = 93, RULE_initialValue = 94, RULE_finalValue = 95, + RULE_withStatement = 96, RULE_recordVariableList = 97; + private static String[] makeRuleNames() { + return new String[] { + "start", "program", "programHeading", "identifier", "block", "usesUnitsPart", + "labelDeclarationPart", "label", "constantDefinitionPart", "constantDefinition", + "constantChr", "constant", "unsignedNumber", "unsignedInteger", "unsignedReal", + "sign", "bool_", "string", "typeDefinitionPart", "typeDefinition", "functionType", + "procedureType", "type_", "simpleType", "scalarType", "subrangeType", + "typeIdentifier", "structuredType", "unpackedStructuredType", "stringtype", + "arrayType", "typeList", "indexType", "componentType", "recordType", + "fieldList", "fixedPart", "recordSection", "variantPart", "tag", "variant", + "setType", "baseType", "fileType", "pointerType", "variableDeclarationPart", + "variableDeclaration", "procedureAndFunctionDeclarationPart", "procedureOrFunctionDeclaration", + "procedureDeclaration", "formalParameterList", "formalParameterSection", + "parameterGroup", "identifierList", "constList", "functionDeclaration", + "resultType", "statement", "unlabelledStatement", "simpleStatement", + "assignmentStatement", "variable", "expression", "relationaloperator", + "simpleExpression", "additiveoperator", "term", "multiplicativeoperator", + "signedFactor", "factor", "unsignedConstant", "functionDesignator", "parameterList", + "set_", "elementList", "element", "procedureStatement", "actualParameter", + "parameterwidth", "gotoStatement", "emptyStatement_", "empty_", "structuredStatement", + "compoundStatement", "statements", "conditionalStatement", "ifStatement", + "caseStatement", "caseListElement", "repetetiveStatement", "whileStatement", + "repeatStatement", "forStatement", "forList", "initialValue", "finalValue", + "withStatement", "recordVariableList" + }; + } + public static final String[] ruleNames = makeRuleNames(); + + private static String[] makeLiteralNames() { + return new String[] { + null, "'AND'", "'ARRAY'", "'BEGIN'", "'BOOLEAN'", "'CASE'", "'CHAR'", + "'CHR'", "'CONST'", "'DIV'", "'DO'", "'DOWNTO'", "'ELSE'", "'END'", "'FILE'", + "'FOR'", "'FUNCTION'", "'GOTO'", "'IF'", "'IN'", "'INTEGER'", "'LABEL'", + "'MOD'", "'NIL'", "'NOT'", "'OF'", "'OR'", "'PACKED'", "'PROCEDURE'", + "'PROGRAM'", "'REAL'", "'RECORD'", "'REPEAT'", "'SET'", "'THEN'", "'TO'", + "'TYPE'", "'UNTIL'", "'VAR'", "'WHILE'", "'WITH'", "'+'", "'-'", "'*'", + "'/'", "':='", "','", "';'", "':'", "'='", "'<>'", "'<'", "'<='", "'>='", + "'>'", "'('", "')'", "'['", "'(.'", "']'", "'.)'", "'^'", "'@'", "'.'", + "'..'", "'{'", "'}'", "'UNIT'", "'INTERFACE'", "'USES'", "'STRING'", + "'IMPLEMENTATION'", "'TRUE'", "'FALSE'" + }; + } + private static final String[] _LITERAL_NAMES = makeLiteralNames(); + private static String[] makeSymbolicNames() { + return new String[] { + null, "AND", "ARRAY", "BEGIN", "BOOLEAN", "CASE", "CHAR", "CHR", "CONST", + "DIV", "DO", "DOWNTO", "ELSE", "END", "FILE", "FOR", "FUNCTION", "GOTO", + "IF", "IN", "INTEGER", "LABEL", "MOD", "NIL", "NOT", "OF", "OR", "PACKED", + "PROCEDURE", "PROGRAM", "REAL", "RECORD", "REPEAT", "SET", "THEN", "TO", + "TYPE", "UNTIL", "VAR", "WHILE", "WITH", "PLUS", "MINUS", "STAR", "SLASH", + "ASSIGN", "COMMA", "SEMI", "COLON", "EQUAL", "NOT_EQUAL", "LT", "LE", + "GE", "GT", "LPAREN", "RPAREN", "LBRACK", "LBRACK2", "RBRACK", "RBRACK2", + "POINTER", "AT", "DOT", "DOTDOT", "LCURLY", "RCURLY", "UNIT", "INTERFACE", + "USES", "STRING", "IMPLEMENTATION", "TRUE", "FALSE", "WS", "COMMENT_1", + "COMMENT_2", "IDENT", "STRING_LITERAL", "NUM_INT", "NUM_REAL" + }; + } + private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames(); + public static final Vocabulary VOCABULARY = new VocabularyImpl(_LITERAL_NAMES, _SYMBOLIC_NAMES); + + /** + * @deprecated Use {@link #VOCABULARY} instead. + */ + @Deprecated + public static final String[] tokenNames; + static { + tokenNames = new String[_SYMBOLIC_NAMES.length]; + for (int i = 0; i < tokenNames.length; i++) { + tokenNames[i] = VOCABULARY.getLiteralName(i); + if (tokenNames[i] == null) { + tokenNames[i] = VOCABULARY.getSymbolicName(i); + } + + if (tokenNames[i] == null) { + tokenNames[i] = ""; + } + } + } + + @Override + @Deprecated + public String[] getTokenNames() { + return tokenNames; + } + + @Override + + public Vocabulary getVocabulary() { + return VOCABULARY; + } + + @Override + public String getGrammarFileName() { return "pascal.g4"; } + + @Override + public String[] getRuleNames() { return ruleNames; } + + @Override + public String getSerializedATN() { return _serializedATN; } + + @Override + public ATN getATN() { return _ATN; } + + public pascalParser(TokenStream input) { + super(input); + _interp = new ParserATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache); + } + + public static class StartContext extends ParserRuleContext { + public ProgramContext program() { + return getRuleContext(ProgramContext.class,0); + } + public StartContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_start; } + } + + public final StartContext start() throws RecognitionException { + StartContext _localctx = new StartContext(_ctx, getState()); + enterRule(_localctx, 0, RULE_start); + try { + enterOuterAlt(_localctx, 1); + { + setState(196); + program(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ProgramContext extends ParserRuleContext { + public ProgramHeadingContext programHeading() { + return getRuleContext(ProgramHeadingContext.class,0); + } + public BlockContext block() { + return getRuleContext(BlockContext.class,0); + } + public TerminalNode DOT() { return getToken(pascalParser.DOT, 0); } + public TerminalNode EOF() { return getToken(pascalParser.EOF, 0); } + public TerminalNode INTERFACE() { return getToken(pascalParser.INTERFACE, 0); } + public ProgramContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_program; } + } + + public final ProgramContext program() throws RecognitionException { + ProgramContext _localctx = new ProgramContext(_ctx, getState()); + enterRule(_localctx, 2, RULE_program); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(198); + programHeading(); + setState(200); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==INTERFACE) { + { + setState(199); + match(INTERFACE); + } + } + + setState(202); + block(); + setState(203); + match(DOT); + setState(204); + match(EOF); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ProgramHeadingContext extends ParserRuleContext { + public TerminalNode PROGRAM() { return getToken(pascalParser.PROGRAM, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public TerminalNode SEMI() { return getToken(pascalParser.SEMI, 0); } + public TerminalNode LPAREN() { return getToken(pascalParser.LPAREN, 0); } + public IdentifierListContext identifierList() { + return getRuleContext(IdentifierListContext.class,0); + } + public TerminalNode RPAREN() { return getToken(pascalParser.RPAREN, 0); } + public TerminalNode UNIT() { return getToken(pascalParser.UNIT, 0); } + public ProgramHeadingContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_programHeading; } + } + + public final ProgramHeadingContext programHeading() throws RecognitionException { + ProgramHeadingContext _localctx = new ProgramHeadingContext(_ctx, getState()); + enterRule(_localctx, 4, RULE_programHeading); + int _la; + try { + setState(220); + _errHandler.sync(this); + switch (_input.LA(1)) { + case PROGRAM: + enterOuterAlt(_localctx, 1); + { + setState(206); + match(PROGRAM); + setState(207); + identifier(); + setState(212); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LPAREN) { + { + setState(208); + match(LPAREN); + setState(209); + identifierList(); + setState(210); + match(RPAREN); + } + } + + setState(214); + match(SEMI); + } + break; + case UNIT: + enterOuterAlt(_localctx, 2); + { + setState(216); + match(UNIT); + setState(217); + identifier(); + setState(218); + match(SEMI); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class IdentifierContext extends ParserRuleContext { + public TerminalNode IDENT() { return getToken(pascalParser.IDENT, 0); } + public IdentifierContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_identifier; } + } + + public final IdentifierContext identifier() throws RecognitionException { + IdentifierContext _localctx = new IdentifierContext(_ctx, getState()); + enterRule(_localctx, 6, RULE_identifier); + try { + enterOuterAlt(_localctx, 1); + { + setState(222); + match(IDENT); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class BlockContext extends ParserRuleContext { + public CompoundStatementContext compoundStatement() { + return getRuleContext(CompoundStatementContext.class,0); + } + public List labelDeclarationPart() { + return getRuleContexts(LabelDeclarationPartContext.class); + } + public LabelDeclarationPartContext labelDeclarationPart(int i) { + return getRuleContext(LabelDeclarationPartContext.class,i); + } + public List constantDefinitionPart() { + return getRuleContexts(ConstantDefinitionPartContext.class); + } + public ConstantDefinitionPartContext constantDefinitionPart(int i) { + return getRuleContext(ConstantDefinitionPartContext.class,i); + } + public List typeDefinitionPart() { + return getRuleContexts(TypeDefinitionPartContext.class); + } + public TypeDefinitionPartContext typeDefinitionPart(int i) { + return getRuleContext(TypeDefinitionPartContext.class,i); + } + public List variableDeclarationPart() { + return getRuleContexts(VariableDeclarationPartContext.class); + } + public VariableDeclarationPartContext variableDeclarationPart(int i) { + return getRuleContext(VariableDeclarationPartContext.class,i); + } + public List procedureAndFunctionDeclarationPart() { + return getRuleContexts(ProcedureAndFunctionDeclarationPartContext.class); + } + public ProcedureAndFunctionDeclarationPartContext procedureAndFunctionDeclarationPart(int i) { + return getRuleContext(ProcedureAndFunctionDeclarationPartContext.class,i); + } + public List usesUnitsPart() { + return getRuleContexts(UsesUnitsPartContext.class); + } + public UsesUnitsPartContext usesUnitsPart(int i) { + return getRuleContext(UsesUnitsPartContext.class,i); + } + public List IMPLEMENTATION() { return getTokens(pascalParser.IMPLEMENTATION); } + public TerminalNode IMPLEMENTATION(int i) { + return getToken(pascalParser.IMPLEMENTATION, i); + } + public BlockContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_block; } + } + + public final BlockContext block() throws RecognitionException { + BlockContext _localctx = new BlockContext(_ctx, getState()); + enterRule(_localctx, 8, RULE_block); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(233); + _errHandler.sync(this); + _la = _input.LA(1); + while (((((_la - 8)) & ~0x3f) == 0 && ((1L << (_la - 8)) & ((1L << (CONST - 8)) | (1L << (FUNCTION - 8)) | (1L << (LABEL - 8)) | (1L << (PROCEDURE - 8)) | (1L << (TYPE - 8)) | (1L << (VAR - 8)) | (1L << (USES - 8)) | (1L << (IMPLEMENTATION - 8)))) != 0)) { + { + setState(231); + _errHandler.sync(this); + switch (_input.LA(1)) { + case LABEL: + { + setState(224); + labelDeclarationPart(); + } + break; + case CONST: + { + setState(225); + constantDefinitionPart(); + } + break; + case TYPE: + { + setState(226); + typeDefinitionPart(); + } + break; + case VAR: + { + setState(227); + variableDeclarationPart(); + } + break; + case FUNCTION: + case PROCEDURE: + { + setState(228); + procedureAndFunctionDeclarationPart(); + } + break; + case USES: + { + setState(229); + usesUnitsPart(); + } + break; + case IMPLEMENTATION: + { + setState(230); + match(IMPLEMENTATION); + } + break; + default: + throw new NoViableAltException(this); + } + } + setState(235); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(236); + compoundStatement(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class UsesUnitsPartContext extends ParserRuleContext { + public TerminalNode USES() { return getToken(pascalParser.USES, 0); } + public IdentifierListContext identifierList() { + return getRuleContext(IdentifierListContext.class,0); + } + public TerminalNode SEMI() { return getToken(pascalParser.SEMI, 0); } + public UsesUnitsPartContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_usesUnitsPart; } + } + + public final UsesUnitsPartContext usesUnitsPart() throws RecognitionException { + UsesUnitsPartContext _localctx = new UsesUnitsPartContext(_ctx, getState()); + enterRule(_localctx, 10, RULE_usesUnitsPart); + try { + enterOuterAlt(_localctx, 1); + { + setState(238); + match(USES); + setState(239); + identifierList(); + setState(240); + match(SEMI); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class LabelDeclarationPartContext extends ParserRuleContext { + public TerminalNode LABEL() { return getToken(pascalParser.LABEL, 0); } + public List label() { + return getRuleContexts(LabelContext.class); + } + public LabelContext label(int i) { + return getRuleContext(LabelContext.class,i); + } + public TerminalNode SEMI() { return getToken(pascalParser.SEMI, 0); } + public List COMMA() { return getTokens(pascalParser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(pascalParser.COMMA, i); + } + public LabelDeclarationPartContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_labelDeclarationPart; } + } + + public final LabelDeclarationPartContext labelDeclarationPart() throws RecognitionException { + LabelDeclarationPartContext _localctx = new LabelDeclarationPartContext(_ctx, getState()); + enterRule(_localctx, 12, RULE_labelDeclarationPart); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(242); + match(LABEL); + setState(243); + label(); + setState(248); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(244); + match(COMMA); + setState(245); + label(); + } + } + setState(250); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(251); + match(SEMI); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class LabelContext extends ParserRuleContext { + public UnsignedIntegerContext unsignedInteger() { + return getRuleContext(UnsignedIntegerContext.class,0); + } + public LabelContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_label; } + } + + public final LabelContext label() throws RecognitionException { + LabelContext _localctx = new LabelContext(_ctx, getState()); + enterRule(_localctx, 14, RULE_label); + try { + enterOuterAlt(_localctx, 1); + { + setState(253); + unsignedInteger(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ConstantDefinitionPartContext extends ParserRuleContext { + public TerminalNode CONST() { return getToken(pascalParser.CONST, 0); } + public List constantDefinition() { + return getRuleContexts(ConstantDefinitionContext.class); + } + public ConstantDefinitionContext constantDefinition(int i) { + return getRuleContext(ConstantDefinitionContext.class,i); + } + public List SEMI() { return getTokens(pascalParser.SEMI); } + public TerminalNode SEMI(int i) { + return getToken(pascalParser.SEMI, i); + } + public ConstantDefinitionPartContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_constantDefinitionPart; } + } + + public final ConstantDefinitionPartContext constantDefinitionPart() throws RecognitionException { + ConstantDefinitionPartContext _localctx = new ConstantDefinitionPartContext(_ctx, getState()); + enterRule(_localctx, 16, RULE_constantDefinitionPart); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(255); + match(CONST); + setState(259); + _errHandler.sync(this); + _la = _input.LA(1); + do { + { + { + setState(256); + constantDefinition(); + setState(257); + match(SEMI); + } + } + setState(261); + _errHandler.sync(this); + _la = _input.LA(1); + } while ( _la==IDENT ); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ConstantDefinitionContext extends ParserRuleContext { + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public TerminalNode EQUAL() { return getToken(pascalParser.EQUAL, 0); } + public ConstantContext constant() { + return getRuleContext(ConstantContext.class,0); + } + public ConstantDefinitionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_constantDefinition; } + } + + public final ConstantDefinitionContext constantDefinition() throws RecognitionException { + ConstantDefinitionContext _localctx = new ConstantDefinitionContext(_ctx, getState()); + enterRule(_localctx, 18, RULE_constantDefinition); + try { + enterOuterAlt(_localctx, 1); + { + setState(263); + identifier(); + setState(264); + match(EQUAL); + setState(265); + constant(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ConstantChrContext extends ParserRuleContext { + public TerminalNode CHR() { return getToken(pascalParser.CHR, 0); } + public TerminalNode LPAREN() { return getToken(pascalParser.LPAREN, 0); } + public UnsignedIntegerContext unsignedInteger() { + return getRuleContext(UnsignedIntegerContext.class,0); + } + public TerminalNode RPAREN() { return getToken(pascalParser.RPAREN, 0); } + public ConstantChrContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_constantChr; } + } + + public final ConstantChrContext constantChr() throws RecognitionException { + ConstantChrContext _localctx = new ConstantChrContext(_ctx, getState()); + enterRule(_localctx, 20, RULE_constantChr); + try { + enterOuterAlt(_localctx, 1); + { + setState(267); + match(CHR); + setState(268); + match(LPAREN); + setState(269); + unsignedInteger(); + setState(270); + match(RPAREN); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ConstantContext extends ParserRuleContext { + public UnsignedNumberContext unsignedNumber() { + return getRuleContext(UnsignedNumberContext.class,0); + } + public SignContext sign() { + return getRuleContext(SignContext.class,0); + } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public StringContext string() { + return getRuleContext(StringContext.class,0); + } + public ConstantChrContext constantChr() { + return getRuleContext(ConstantChrContext.class,0); + } + public ConstantContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_constant; } + } + + public final ConstantContext constant() throws RecognitionException { + ConstantContext _localctx = new ConstantContext(_ctx, getState()); + enterRule(_localctx, 22, RULE_constant); + try { + setState(282); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,7,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(272); + unsignedNumber(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(273); + sign(); + setState(274); + unsignedNumber(); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(276); + identifier(); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(277); + sign(); + setState(278); + identifier(); + } + break; + case 5: + enterOuterAlt(_localctx, 5); + { + setState(280); + string(); + } + break; + case 6: + enterOuterAlt(_localctx, 6); + { + setState(281); + constantChr(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class UnsignedNumberContext extends ParserRuleContext { + public UnsignedIntegerContext unsignedInteger() { + return getRuleContext(UnsignedIntegerContext.class,0); + } + public UnsignedRealContext unsignedReal() { + return getRuleContext(UnsignedRealContext.class,0); + } + public UnsignedNumberContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_unsignedNumber; } + } + + public final UnsignedNumberContext unsignedNumber() throws RecognitionException { + UnsignedNumberContext _localctx = new UnsignedNumberContext(_ctx, getState()); + enterRule(_localctx, 24, RULE_unsignedNumber); + try { + setState(286); + _errHandler.sync(this); + switch (_input.LA(1)) { + case NUM_INT: + enterOuterAlt(_localctx, 1); + { + setState(284); + unsignedInteger(); + } + break; + case NUM_REAL: + enterOuterAlt(_localctx, 2); + { + setState(285); + unsignedReal(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class UnsignedIntegerContext extends ParserRuleContext { + public TerminalNode NUM_INT() { return getToken(pascalParser.NUM_INT, 0); } + public UnsignedIntegerContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_unsignedInteger; } + } + + public final UnsignedIntegerContext unsignedInteger() throws RecognitionException { + UnsignedIntegerContext _localctx = new UnsignedIntegerContext(_ctx, getState()); + enterRule(_localctx, 26, RULE_unsignedInteger); + try { + enterOuterAlt(_localctx, 1); + { + setState(288); + match(NUM_INT); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class UnsignedRealContext extends ParserRuleContext { + public TerminalNode NUM_REAL() { return getToken(pascalParser.NUM_REAL, 0); } + public UnsignedRealContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_unsignedReal; } + } + + public final UnsignedRealContext unsignedReal() throws RecognitionException { + UnsignedRealContext _localctx = new UnsignedRealContext(_ctx, getState()); + enterRule(_localctx, 28, RULE_unsignedReal); + try { + enterOuterAlt(_localctx, 1); + { + setState(290); + match(NUM_REAL); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class SignContext extends ParserRuleContext { + public TerminalNode PLUS() { return getToken(pascalParser.PLUS, 0); } + public TerminalNode MINUS() { return getToken(pascalParser.MINUS, 0); } + public SignContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_sign; } + } + + public final SignContext sign() throws RecognitionException { + SignContext _localctx = new SignContext(_ctx, getState()); + enterRule(_localctx, 30, RULE_sign); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(292); + _la = _input.LA(1); + if ( !(_la==PLUS || _la==MINUS) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Bool_Context extends ParserRuleContext { + public TerminalNode TRUE() { return getToken(pascalParser.TRUE, 0); } + public TerminalNode FALSE() { return getToken(pascalParser.FALSE, 0); } + public Bool_Context(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_bool_; } + } + + public final Bool_Context bool_() throws RecognitionException { + Bool_Context _localctx = new Bool_Context(_ctx, getState()); + enterRule(_localctx, 32, RULE_bool_); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(294); + _la = _input.LA(1); + if ( !(_la==TRUE || _la==FALSE) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class StringContext extends ParserRuleContext { + public TerminalNode STRING_LITERAL() { return getToken(pascalParser.STRING_LITERAL, 0); } + public StringContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_string; } + } + + public final StringContext string() throws RecognitionException { + StringContext _localctx = new StringContext(_ctx, getState()); + enterRule(_localctx, 34, RULE_string); + try { + enterOuterAlt(_localctx, 1); + { + setState(296); + match(STRING_LITERAL); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class TypeDefinitionPartContext extends ParserRuleContext { + public TerminalNode TYPE() { return getToken(pascalParser.TYPE, 0); } + public List typeDefinition() { + return getRuleContexts(TypeDefinitionContext.class); + } + public TypeDefinitionContext typeDefinition(int i) { + return getRuleContext(TypeDefinitionContext.class,i); + } + public List SEMI() { return getTokens(pascalParser.SEMI); } + public TerminalNode SEMI(int i) { + return getToken(pascalParser.SEMI, i); + } + public TypeDefinitionPartContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_typeDefinitionPart; } + } + + public final TypeDefinitionPartContext typeDefinitionPart() throws RecognitionException { + TypeDefinitionPartContext _localctx = new TypeDefinitionPartContext(_ctx, getState()); + enterRule(_localctx, 36, RULE_typeDefinitionPart); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(298); + match(TYPE); + setState(302); + _errHandler.sync(this); + _la = _input.LA(1); + do { + { + { + setState(299); + typeDefinition(); + setState(300); + match(SEMI); + } + } + setState(304); + _errHandler.sync(this); + _la = _input.LA(1); + } while ( _la==IDENT ); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class TypeDefinitionContext extends ParserRuleContext { + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public TerminalNode EQUAL() { return getToken(pascalParser.EQUAL, 0); } + public Type_Context type_() { + return getRuleContext(Type_Context.class,0); + } + public FunctionTypeContext functionType() { + return getRuleContext(FunctionTypeContext.class,0); + } + public ProcedureTypeContext procedureType() { + return getRuleContext(ProcedureTypeContext.class,0); + } + public TypeDefinitionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_typeDefinition; } + } + + public final TypeDefinitionContext typeDefinition() throws RecognitionException { + TypeDefinitionContext _localctx = new TypeDefinitionContext(_ctx, getState()); + enterRule(_localctx, 38, RULE_typeDefinition); + try { + enterOuterAlt(_localctx, 1); + { + setState(306); + identifier(); + setState(307); + match(EQUAL); + setState(311); + _errHandler.sync(this); + switch (_input.LA(1)) { + case ARRAY: + case BOOLEAN: + case CHAR: + case CHR: + case FILE: + case INTEGER: + case PACKED: + case REAL: + case RECORD: + case SET: + case PLUS: + case MINUS: + case LPAREN: + case POINTER: + case STRING: + case IDENT: + case STRING_LITERAL: + case NUM_INT: + case NUM_REAL: + { + setState(308); + type_(); + } + break; + case FUNCTION: + { + setState(309); + functionType(); + } + break; + case PROCEDURE: + { + setState(310); + procedureType(); + } + break; + default: + throw new NoViableAltException(this); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class FunctionTypeContext extends ParserRuleContext { + public TerminalNode FUNCTION() { return getToken(pascalParser.FUNCTION, 0); } + public TerminalNode COLON() { return getToken(pascalParser.COLON, 0); } + public ResultTypeContext resultType() { + return getRuleContext(ResultTypeContext.class,0); + } + public FormalParameterListContext formalParameterList() { + return getRuleContext(FormalParameterListContext.class,0); + } + public FunctionTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_functionType; } + } + + public final FunctionTypeContext functionType() throws RecognitionException { + FunctionTypeContext _localctx = new FunctionTypeContext(_ctx, getState()); + enterRule(_localctx, 40, RULE_functionType); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(313); + match(FUNCTION); + setState(315); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LPAREN) { + { + setState(314); + formalParameterList(); + } + } + + setState(317); + match(COLON); + setState(318); + resultType(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ProcedureTypeContext extends ParserRuleContext { + public TerminalNode PROCEDURE() { return getToken(pascalParser.PROCEDURE, 0); } + public FormalParameterListContext formalParameterList() { + return getRuleContext(FormalParameterListContext.class,0); + } + public ProcedureTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_procedureType; } + } + + public final ProcedureTypeContext procedureType() throws RecognitionException { + ProcedureTypeContext _localctx = new ProcedureTypeContext(_ctx, getState()); + enterRule(_localctx, 42, RULE_procedureType); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(320); + match(PROCEDURE); + setState(322); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LPAREN) { + { + setState(321); + formalParameterList(); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Type_Context extends ParserRuleContext { + public SimpleTypeContext simpleType() { + return getRuleContext(SimpleTypeContext.class,0); + } + public StructuredTypeContext structuredType() { + return getRuleContext(StructuredTypeContext.class,0); + } + public PointerTypeContext pointerType() { + return getRuleContext(PointerTypeContext.class,0); + } + public Type_Context(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_type_; } + } + + public final Type_Context type_() throws RecognitionException { + Type_Context _localctx = new Type_Context(_ctx, getState()); + enterRule(_localctx, 44, RULE_type_); + try { + setState(327); + _errHandler.sync(this); + switch (_input.LA(1)) { + case BOOLEAN: + case CHAR: + case CHR: + case INTEGER: + case REAL: + case PLUS: + case MINUS: + case LPAREN: + case STRING: + case IDENT: + case STRING_LITERAL: + case NUM_INT: + case NUM_REAL: + enterOuterAlt(_localctx, 1); + { + setState(324); + simpleType(); + } + break; + case ARRAY: + case FILE: + case PACKED: + case RECORD: + case SET: + enterOuterAlt(_localctx, 2); + { + setState(325); + structuredType(); + } + break; + case POINTER: + enterOuterAlt(_localctx, 3); + { + setState(326); + pointerType(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class SimpleTypeContext extends ParserRuleContext { + public ScalarTypeContext scalarType() { + return getRuleContext(ScalarTypeContext.class,0); + } + public SubrangeTypeContext subrangeType() { + return getRuleContext(SubrangeTypeContext.class,0); + } + public TypeIdentifierContext typeIdentifier() { + return getRuleContext(TypeIdentifierContext.class,0); + } + public StringtypeContext stringtype() { + return getRuleContext(StringtypeContext.class,0); + } + public SimpleTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_simpleType; } + } + + public final SimpleTypeContext simpleType() throws RecognitionException { + SimpleTypeContext _localctx = new SimpleTypeContext(_ctx, getState()); + enterRule(_localctx, 46, RULE_simpleType); + try { + setState(333); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,14,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(329); + scalarType(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(330); + subrangeType(); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(331); + typeIdentifier(); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(332); + stringtype(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ScalarTypeContext extends ParserRuleContext { + public TerminalNode LPAREN() { return getToken(pascalParser.LPAREN, 0); } + public IdentifierListContext identifierList() { + return getRuleContext(IdentifierListContext.class,0); + } + public TerminalNode RPAREN() { return getToken(pascalParser.RPAREN, 0); } + public ScalarTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_scalarType; } + } + + public final ScalarTypeContext scalarType() throws RecognitionException { + ScalarTypeContext _localctx = new ScalarTypeContext(_ctx, getState()); + enterRule(_localctx, 48, RULE_scalarType); + try { + enterOuterAlt(_localctx, 1); + { + setState(335); + match(LPAREN); + setState(336); + identifierList(); + setState(337); + match(RPAREN); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class SubrangeTypeContext extends ParserRuleContext { + public List constant() { + return getRuleContexts(ConstantContext.class); + } + public ConstantContext constant(int i) { + return getRuleContext(ConstantContext.class,i); + } + public TerminalNode DOTDOT() { return getToken(pascalParser.DOTDOT, 0); } + public SubrangeTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_subrangeType; } + } + + public final SubrangeTypeContext subrangeType() throws RecognitionException { + SubrangeTypeContext _localctx = new SubrangeTypeContext(_ctx, getState()); + enterRule(_localctx, 50, RULE_subrangeType); + try { + enterOuterAlt(_localctx, 1); + { + setState(339); + constant(); + setState(340); + match(DOTDOT); + setState(341); + constant(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class TypeIdentifierContext extends ParserRuleContext { + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public TerminalNode CHAR() { return getToken(pascalParser.CHAR, 0); } + public TerminalNode BOOLEAN() { return getToken(pascalParser.BOOLEAN, 0); } + public TerminalNode INTEGER() { return getToken(pascalParser.INTEGER, 0); } + public TerminalNode REAL() { return getToken(pascalParser.REAL, 0); } + public TerminalNode STRING() { return getToken(pascalParser.STRING, 0); } + public TypeIdentifierContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_typeIdentifier; } + } + + public final TypeIdentifierContext typeIdentifier() throws RecognitionException { + TypeIdentifierContext _localctx = new TypeIdentifierContext(_ctx, getState()); + enterRule(_localctx, 52, RULE_typeIdentifier); + int _la; + try { + setState(345); + _errHandler.sync(this); + switch (_input.LA(1)) { + case IDENT: + enterOuterAlt(_localctx, 1); + { + setState(343); + identifier(); + } + break; + case BOOLEAN: + case CHAR: + case INTEGER: + case REAL: + case STRING: + enterOuterAlt(_localctx, 2); + { + setState(344); + _la = _input.LA(1); + if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << CHAR) | (1L << INTEGER) | (1L << REAL))) != 0) || _la==STRING) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class StructuredTypeContext extends ParserRuleContext { + public TerminalNode PACKED() { return getToken(pascalParser.PACKED, 0); } + public UnpackedStructuredTypeContext unpackedStructuredType() { + return getRuleContext(UnpackedStructuredTypeContext.class,0); + } + public StructuredTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_structuredType; } + } + + public final StructuredTypeContext structuredType() throws RecognitionException { + StructuredTypeContext _localctx = new StructuredTypeContext(_ctx, getState()); + enterRule(_localctx, 54, RULE_structuredType); + try { + setState(350); + _errHandler.sync(this); + switch (_input.LA(1)) { + case PACKED: + enterOuterAlt(_localctx, 1); + { + setState(347); + match(PACKED); + setState(348); + unpackedStructuredType(); + } + break; + case ARRAY: + case FILE: + case RECORD: + case SET: + enterOuterAlt(_localctx, 2); + { + setState(349); + unpackedStructuredType(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class UnpackedStructuredTypeContext extends ParserRuleContext { + public ArrayTypeContext arrayType() { + return getRuleContext(ArrayTypeContext.class,0); + } + public RecordTypeContext recordType() { + return getRuleContext(RecordTypeContext.class,0); + } + public SetTypeContext setType() { + return getRuleContext(SetTypeContext.class,0); + } + public FileTypeContext fileType() { + return getRuleContext(FileTypeContext.class,0); + } + public UnpackedStructuredTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_unpackedStructuredType; } + } + + public final UnpackedStructuredTypeContext unpackedStructuredType() throws RecognitionException { + UnpackedStructuredTypeContext _localctx = new UnpackedStructuredTypeContext(_ctx, getState()); + enterRule(_localctx, 56, RULE_unpackedStructuredType); + try { + setState(356); + _errHandler.sync(this); + switch (_input.LA(1)) { + case ARRAY: + enterOuterAlt(_localctx, 1); + { + setState(352); + arrayType(); + } + break; + case RECORD: + enterOuterAlt(_localctx, 2); + { + setState(353); + recordType(); + } + break; + case SET: + enterOuterAlt(_localctx, 3); + { + setState(354); + setType(); + } + break; + case FILE: + enterOuterAlt(_localctx, 4); + { + setState(355); + fileType(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class StringtypeContext extends ParserRuleContext { + public TerminalNode STRING() { return getToken(pascalParser.STRING, 0); } + public TerminalNode LBRACK() { return getToken(pascalParser.LBRACK, 0); } + public TerminalNode RBRACK() { return getToken(pascalParser.RBRACK, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public UnsignedNumberContext unsignedNumber() { + return getRuleContext(UnsignedNumberContext.class,0); + } + public StringtypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_stringtype; } + } + + public final StringtypeContext stringtype() throws RecognitionException { + StringtypeContext _localctx = new StringtypeContext(_ctx, getState()); + enterRule(_localctx, 58, RULE_stringtype); + try { + enterOuterAlt(_localctx, 1); + { + setState(358); + match(STRING); + setState(359); + match(LBRACK); + setState(362); + _errHandler.sync(this); + switch (_input.LA(1)) { + case IDENT: + { + setState(360); + identifier(); + } + break; + case NUM_INT: + case NUM_REAL: + { + setState(361); + unsignedNumber(); + } + break; + default: + throw new NoViableAltException(this); + } + setState(364); + match(RBRACK); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ArrayTypeContext extends ParserRuleContext { + public TerminalNode ARRAY() { return getToken(pascalParser.ARRAY, 0); } + public TerminalNode LBRACK() { return getToken(pascalParser.LBRACK, 0); } + public TypeListContext typeList() { + return getRuleContext(TypeListContext.class,0); + } + public TerminalNode RBRACK() { return getToken(pascalParser.RBRACK, 0); } + public TerminalNode OF() { return getToken(pascalParser.OF, 0); } + public ComponentTypeContext componentType() { + return getRuleContext(ComponentTypeContext.class,0); + } + public TerminalNode LBRACK2() { return getToken(pascalParser.LBRACK2, 0); } + public TerminalNode RBRACK2() { return getToken(pascalParser.RBRACK2, 0); } + public ArrayTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_arrayType; } + } + + public final ArrayTypeContext arrayType() throws RecognitionException { + ArrayTypeContext _localctx = new ArrayTypeContext(_ctx, getState()); + enterRule(_localctx, 60, RULE_arrayType); + try { + setState(380); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,19,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(366); + match(ARRAY); + setState(367); + match(LBRACK); + setState(368); + typeList(); + setState(369); + match(RBRACK); + setState(370); + match(OF); + setState(371); + componentType(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(373); + match(ARRAY); + setState(374); + match(LBRACK2); + setState(375); + typeList(); + setState(376); + match(RBRACK2); + setState(377); + match(OF); + setState(378); + componentType(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class TypeListContext extends ParserRuleContext { + public List indexType() { + return getRuleContexts(IndexTypeContext.class); + } + public IndexTypeContext indexType(int i) { + return getRuleContext(IndexTypeContext.class,i); + } + public List COMMA() { return getTokens(pascalParser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(pascalParser.COMMA, i); + } + public TypeListContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_typeList; } + } + + public final TypeListContext typeList() throws RecognitionException { + TypeListContext _localctx = new TypeListContext(_ctx, getState()); + enterRule(_localctx, 62, RULE_typeList); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(382); + indexType(); + setState(387); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(383); + match(COMMA); + setState(384); + indexType(); + } + } + setState(389); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class IndexTypeContext extends ParserRuleContext { + public SimpleTypeContext simpleType() { + return getRuleContext(SimpleTypeContext.class,0); + } + public IndexTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_indexType; } + } + + public final IndexTypeContext indexType() throws RecognitionException { + IndexTypeContext _localctx = new IndexTypeContext(_ctx, getState()); + enterRule(_localctx, 64, RULE_indexType); + try { + enterOuterAlt(_localctx, 1); + { + setState(390); + simpleType(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ComponentTypeContext extends ParserRuleContext { + public Type_Context type_() { + return getRuleContext(Type_Context.class,0); + } + public ComponentTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_componentType; } + } + + public final ComponentTypeContext componentType() throws RecognitionException { + ComponentTypeContext _localctx = new ComponentTypeContext(_ctx, getState()); + enterRule(_localctx, 66, RULE_componentType); + try { + enterOuterAlt(_localctx, 1); + { + setState(392); + type_(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class RecordTypeContext extends ParserRuleContext { + public TerminalNode RECORD() { return getToken(pascalParser.RECORD, 0); } + public TerminalNode END() { return getToken(pascalParser.END, 0); } + public FieldListContext fieldList() { + return getRuleContext(FieldListContext.class,0); + } + public RecordTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_recordType; } + } + + public final RecordTypeContext recordType() throws RecognitionException { + RecordTypeContext _localctx = new RecordTypeContext(_ctx, getState()); + enterRule(_localctx, 68, RULE_recordType); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(394); + match(RECORD); + setState(396); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==CASE || _la==IDENT) { + { + setState(395); + fieldList(); + } + } + + setState(398); + match(END); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class FieldListContext extends ParserRuleContext { + public FixedPartContext fixedPart() { + return getRuleContext(FixedPartContext.class,0); + } + public TerminalNode SEMI() { return getToken(pascalParser.SEMI, 0); } + public VariantPartContext variantPart() { + return getRuleContext(VariantPartContext.class,0); + } + public FieldListContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_fieldList; } + } + + public final FieldListContext fieldList() throws RecognitionException { + FieldListContext _localctx = new FieldListContext(_ctx, getState()); + enterRule(_localctx, 70, RULE_fieldList); + int _la; + try { + setState(406); + _errHandler.sync(this); + switch (_input.LA(1)) { + case IDENT: + enterOuterAlt(_localctx, 1); + { + setState(400); + fixedPart(); + setState(403); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==SEMI) { + { + setState(401); + match(SEMI); + setState(402); + variantPart(); + } + } + + } + break; + case CASE: + enterOuterAlt(_localctx, 2); + { + setState(405); + variantPart(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class FixedPartContext extends ParserRuleContext { + public List recordSection() { + return getRuleContexts(RecordSectionContext.class); + } + public RecordSectionContext recordSection(int i) { + return getRuleContext(RecordSectionContext.class,i); + } + public List SEMI() { return getTokens(pascalParser.SEMI); } + public TerminalNode SEMI(int i) { + return getToken(pascalParser.SEMI, i); + } + public FixedPartContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_fixedPart; } + } + + public final FixedPartContext fixedPart() throws RecognitionException { + FixedPartContext _localctx = new FixedPartContext(_ctx, getState()); + enterRule(_localctx, 72, RULE_fixedPart); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(408); + recordSection(); + setState(413); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,24,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(409); + match(SEMI); + setState(410); + recordSection(); + } + } + } + setState(415); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,24,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class RecordSectionContext extends ParserRuleContext { + public IdentifierListContext identifierList() { + return getRuleContext(IdentifierListContext.class,0); + } + public TerminalNode COLON() { return getToken(pascalParser.COLON, 0); } + public Type_Context type_() { + return getRuleContext(Type_Context.class,0); + } + public RecordSectionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_recordSection; } + } + + public final RecordSectionContext recordSection() throws RecognitionException { + RecordSectionContext _localctx = new RecordSectionContext(_ctx, getState()); + enterRule(_localctx, 74, RULE_recordSection); + try { + enterOuterAlt(_localctx, 1); + { + setState(416); + identifierList(); + setState(417); + match(COLON); + setState(418); + type_(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class VariantPartContext extends ParserRuleContext { + public TerminalNode CASE() { return getToken(pascalParser.CASE, 0); } + public TagContext tag() { + return getRuleContext(TagContext.class,0); + } + public TerminalNode OF() { return getToken(pascalParser.OF, 0); } + public List variant() { + return getRuleContexts(VariantContext.class); + } + public VariantContext variant(int i) { + return getRuleContext(VariantContext.class,i); + } + public List SEMI() { return getTokens(pascalParser.SEMI); } + public TerminalNode SEMI(int i) { + return getToken(pascalParser.SEMI, i); + } + public VariantPartContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_variantPart; } + } + + public final VariantPartContext variantPart() throws RecognitionException { + VariantPartContext _localctx = new VariantPartContext(_ctx, getState()); + enterRule(_localctx, 76, RULE_variantPart); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(420); + match(CASE); + setState(421); + tag(); + setState(422); + match(OF); + setState(423); + variant(); + setState(428); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==SEMI) { + { + { + setState(424); + match(SEMI); + setState(425); + variant(); + } + } + setState(430); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class TagContext extends ParserRuleContext { + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public TerminalNode COLON() { return getToken(pascalParser.COLON, 0); } + public TypeIdentifierContext typeIdentifier() { + return getRuleContext(TypeIdentifierContext.class,0); + } + public TagContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_tag; } + } + + public final TagContext tag() throws RecognitionException { + TagContext _localctx = new TagContext(_ctx, getState()); + enterRule(_localctx, 78, RULE_tag); + try { + setState(436); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,26,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(431); + identifier(); + setState(432); + match(COLON); + setState(433); + typeIdentifier(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(435); + typeIdentifier(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class VariantContext extends ParserRuleContext { + public ConstListContext constList() { + return getRuleContext(ConstListContext.class,0); + } + public TerminalNode COLON() { return getToken(pascalParser.COLON, 0); } + public TerminalNode LPAREN() { return getToken(pascalParser.LPAREN, 0); } + public FieldListContext fieldList() { + return getRuleContext(FieldListContext.class,0); + } + public TerminalNode RPAREN() { return getToken(pascalParser.RPAREN, 0); } + public VariantContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_variant; } + } + + public final VariantContext variant() throws RecognitionException { + VariantContext _localctx = new VariantContext(_ctx, getState()); + enterRule(_localctx, 80, RULE_variant); + try { + enterOuterAlt(_localctx, 1); + { + setState(438); + constList(); + setState(439); + match(COLON); + setState(440); + match(LPAREN); + setState(441); + fieldList(); + setState(442); + match(RPAREN); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class SetTypeContext extends ParserRuleContext { + public TerminalNode SET() { return getToken(pascalParser.SET, 0); } + public TerminalNode OF() { return getToken(pascalParser.OF, 0); } + public BaseTypeContext baseType() { + return getRuleContext(BaseTypeContext.class,0); + } + public SetTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_setType; } + } + + public final SetTypeContext setType() throws RecognitionException { + SetTypeContext _localctx = new SetTypeContext(_ctx, getState()); + enterRule(_localctx, 82, RULE_setType); + try { + enterOuterAlt(_localctx, 1); + { + setState(444); + match(SET); + setState(445); + match(OF); + setState(446); + baseType(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class BaseTypeContext extends ParserRuleContext { + public SimpleTypeContext simpleType() { + return getRuleContext(SimpleTypeContext.class,0); + } + public BaseTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_baseType; } + } + + public final BaseTypeContext baseType() throws RecognitionException { + BaseTypeContext _localctx = new BaseTypeContext(_ctx, getState()); + enterRule(_localctx, 84, RULE_baseType); + try { + enterOuterAlt(_localctx, 1); + { + setState(448); + simpleType(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class FileTypeContext extends ParserRuleContext { + public TerminalNode FILE() { return getToken(pascalParser.FILE, 0); } + public TerminalNode OF() { return getToken(pascalParser.OF, 0); } + public Type_Context type_() { + return getRuleContext(Type_Context.class,0); + } + public FileTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_fileType; } + } + + public final FileTypeContext fileType() throws RecognitionException { + FileTypeContext _localctx = new FileTypeContext(_ctx, getState()); + enterRule(_localctx, 86, RULE_fileType); + try { + setState(454); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,27,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(450); + match(FILE); + setState(451); + match(OF); + setState(452); + type_(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(453); + match(FILE); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class PointerTypeContext extends ParserRuleContext { + public TerminalNode POINTER() { return getToken(pascalParser.POINTER, 0); } + public TypeIdentifierContext typeIdentifier() { + return getRuleContext(TypeIdentifierContext.class,0); + } + public PointerTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_pointerType; } + } + + public final PointerTypeContext pointerType() throws RecognitionException { + PointerTypeContext _localctx = new PointerTypeContext(_ctx, getState()); + enterRule(_localctx, 88, RULE_pointerType); + try { + enterOuterAlt(_localctx, 1); + { + setState(456); + match(POINTER); + setState(457); + typeIdentifier(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class VariableDeclarationPartContext extends ParserRuleContext { + public TerminalNode VAR() { return getToken(pascalParser.VAR, 0); } + public List variableDeclaration() { + return getRuleContexts(VariableDeclarationContext.class); + } + public VariableDeclarationContext variableDeclaration(int i) { + return getRuleContext(VariableDeclarationContext.class,i); + } + public List SEMI() { return getTokens(pascalParser.SEMI); } + public TerminalNode SEMI(int i) { + return getToken(pascalParser.SEMI, i); + } + public VariableDeclarationPartContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_variableDeclarationPart; } + } + + public final VariableDeclarationPartContext variableDeclarationPart() throws RecognitionException { + VariableDeclarationPartContext _localctx = new VariableDeclarationPartContext(_ctx, getState()); + enterRule(_localctx, 90, RULE_variableDeclarationPart); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(459); + match(VAR); + setState(460); + variableDeclaration(); + setState(465); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,28,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(461); + match(SEMI); + setState(462); + variableDeclaration(); + } + } + } + setState(467); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,28,_ctx); + } + setState(468); + match(SEMI); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class VariableDeclarationContext extends ParserRuleContext { + public IdentifierListContext identifierList() { + return getRuleContext(IdentifierListContext.class,0); + } + public TerminalNode COLON() { return getToken(pascalParser.COLON, 0); } + public Type_Context type_() { + return getRuleContext(Type_Context.class,0); + } + public VariableDeclarationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_variableDeclaration; } + } + + public final VariableDeclarationContext variableDeclaration() throws RecognitionException { + VariableDeclarationContext _localctx = new VariableDeclarationContext(_ctx, getState()); + enterRule(_localctx, 92, RULE_variableDeclaration); + try { + enterOuterAlt(_localctx, 1); + { + setState(470); + identifierList(); + setState(471); + match(COLON); + setState(472); + type_(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ProcedureAndFunctionDeclarationPartContext extends ParserRuleContext { + public ProcedureOrFunctionDeclarationContext procedureOrFunctionDeclaration() { + return getRuleContext(ProcedureOrFunctionDeclarationContext.class,0); + } + public TerminalNode SEMI() { return getToken(pascalParser.SEMI, 0); } + public ProcedureAndFunctionDeclarationPartContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_procedureAndFunctionDeclarationPart; } + } + + public final ProcedureAndFunctionDeclarationPartContext procedureAndFunctionDeclarationPart() throws RecognitionException { + ProcedureAndFunctionDeclarationPartContext _localctx = new ProcedureAndFunctionDeclarationPartContext(_ctx, getState()); + enterRule(_localctx, 94, RULE_procedureAndFunctionDeclarationPart); + try { + enterOuterAlt(_localctx, 1); + { + setState(474); + procedureOrFunctionDeclaration(); + setState(475); + match(SEMI); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ProcedureOrFunctionDeclarationContext extends ParserRuleContext { + public ProcedureDeclarationContext procedureDeclaration() { + return getRuleContext(ProcedureDeclarationContext.class,0); + } + public FunctionDeclarationContext functionDeclaration() { + return getRuleContext(FunctionDeclarationContext.class,0); + } + public ProcedureOrFunctionDeclarationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_procedureOrFunctionDeclaration; } + } + + public final ProcedureOrFunctionDeclarationContext procedureOrFunctionDeclaration() throws RecognitionException { + ProcedureOrFunctionDeclarationContext _localctx = new ProcedureOrFunctionDeclarationContext(_ctx, getState()); + enterRule(_localctx, 96, RULE_procedureOrFunctionDeclaration); + try { + setState(479); + _errHandler.sync(this); + switch (_input.LA(1)) { + case PROCEDURE: + enterOuterAlt(_localctx, 1); + { + setState(477); + procedureDeclaration(); + } + break; + case FUNCTION: + enterOuterAlt(_localctx, 2); + { + setState(478); + functionDeclaration(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ProcedureDeclarationContext extends ParserRuleContext { + public TerminalNode PROCEDURE() { return getToken(pascalParser.PROCEDURE, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public TerminalNode SEMI() { return getToken(pascalParser.SEMI, 0); } + public BlockContext block() { + return getRuleContext(BlockContext.class,0); + } + public FormalParameterListContext formalParameterList() { + return getRuleContext(FormalParameterListContext.class,0); + } + public ProcedureDeclarationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_procedureDeclaration; } + } + + public final ProcedureDeclarationContext procedureDeclaration() throws RecognitionException { + ProcedureDeclarationContext _localctx = new ProcedureDeclarationContext(_ctx, getState()); + enterRule(_localctx, 98, RULE_procedureDeclaration); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(481); + match(PROCEDURE); + setState(482); + identifier(); + setState(484); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LPAREN) { + { + setState(483); + formalParameterList(); + } + } + + setState(486); + match(SEMI); + setState(487); + block(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class FormalParameterListContext extends ParserRuleContext { + public TerminalNode LPAREN() { return getToken(pascalParser.LPAREN, 0); } + public List formalParameterSection() { + return getRuleContexts(FormalParameterSectionContext.class); + } + public FormalParameterSectionContext formalParameterSection(int i) { + return getRuleContext(FormalParameterSectionContext.class,i); + } + public TerminalNode RPAREN() { return getToken(pascalParser.RPAREN, 0); } + public List SEMI() { return getTokens(pascalParser.SEMI); } + public TerminalNode SEMI(int i) { + return getToken(pascalParser.SEMI, i); + } + public FormalParameterListContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_formalParameterList; } + } + + public final FormalParameterListContext formalParameterList() throws RecognitionException { + FormalParameterListContext _localctx = new FormalParameterListContext(_ctx, getState()); + enterRule(_localctx, 100, RULE_formalParameterList); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(489); + match(LPAREN); + setState(490); + formalParameterSection(); + setState(495); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==SEMI) { + { + { + setState(491); + match(SEMI); + setState(492); + formalParameterSection(); + } + } + setState(497); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(498); + match(RPAREN); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class FormalParameterSectionContext extends ParserRuleContext { + public ParameterGroupContext parameterGroup() { + return getRuleContext(ParameterGroupContext.class,0); + } + public TerminalNode VAR() { return getToken(pascalParser.VAR, 0); } + public TerminalNode FUNCTION() { return getToken(pascalParser.FUNCTION, 0); } + public TerminalNode PROCEDURE() { return getToken(pascalParser.PROCEDURE, 0); } + public FormalParameterSectionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_formalParameterSection; } + } + + public final FormalParameterSectionContext formalParameterSection() throws RecognitionException { + FormalParameterSectionContext _localctx = new FormalParameterSectionContext(_ctx, getState()); + enterRule(_localctx, 102, RULE_formalParameterSection); + try { + setState(507); + _errHandler.sync(this); + switch (_input.LA(1)) { + case IDENT: + enterOuterAlt(_localctx, 1); + { + setState(500); + parameterGroup(); + } + break; + case VAR: + enterOuterAlt(_localctx, 2); + { + setState(501); + match(VAR); + setState(502); + parameterGroup(); + } + break; + case FUNCTION: + enterOuterAlt(_localctx, 3); + { + setState(503); + match(FUNCTION); + setState(504); + parameterGroup(); + } + break; + case PROCEDURE: + enterOuterAlt(_localctx, 4); + { + setState(505); + match(PROCEDURE); + setState(506); + parameterGroup(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ParameterGroupContext extends ParserRuleContext { + public IdentifierListContext identifierList() { + return getRuleContext(IdentifierListContext.class,0); + } + public TerminalNode COLON() { return getToken(pascalParser.COLON, 0); } + public TypeIdentifierContext typeIdentifier() { + return getRuleContext(TypeIdentifierContext.class,0); + } + public ParameterGroupContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_parameterGroup; } + } + + public final ParameterGroupContext parameterGroup() throws RecognitionException { + ParameterGroupContext _localctx = new ParameterGroupContext(_ctx, getState()); + enterRule(_localctx, 104, RULE_parameterGroup); + try { + enterOuterAlt(_localctx, 1); + { + setState(509); + identifierList(); + setState(510); + match(COLON); + setState(511); + typeIdentifier(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class IdentifierListContext extends ParserRuleContext { + public List identifier() { + return getRuleContexts(IdentifierContext.class); + } + public IdentifierContext identifier(int i) { + return getRuleContext(IdentifierContext.class,i); + } + public List COMMA() { return getTokens(pascalParser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(pascalParser.COMMA, i); + } + public IdentifierListContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_identifierList; } + } + + public final IdentifierListContext identifierList() throws RecognitionException { + IdentifierListContext _localctx = new IdentifierListContext(_ctx, getState()); + enterRule(_localctx, 106, RULE_identifierList); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(513); + identifier(); + setState(518); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(514); + match(COMMA); + setState(515); + identifier(); + } + } + setState(520); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ConstListContext extends ParserRuleContext { + public List constant() { + return getRuleContexts(ConstantContext.class); + } + public ConstantContext constant(int i) { + return getRuleContext(ConstantContext.class,i); + } + public List COMMA() { return getTokens(pascalParser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(pascalParser.COMMA, i); + } + public ConstListContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_constList; } + } + + public final ConstListContext constList() throws RecognitionException { + ConstListContext _localctx = new ConstListContext(_ctx, getState()); + enterRule(_localctx, 108, RULE_constList); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(521); + constant(); + setState(526); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(522); + match(COMMA); + setState(523); + constant(); + } + } + setState(528); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class FunctionDeclarationContext extends ParserRuleContext { + public TerminalNode FUNCTION() { return getToken(pascalParser.FUNCTION, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public TerminalNode COLON() { return getToken(pascalParser.COLON, 0); } + public ResultTypeContext resultType() { + return getRuleContext(ResultTypeContext.class,0); + } + public TerminalNode SEMI() { return getToken(pascalParser.SEMI, 0); } + public BlockContext block() { + return getRuleContext(BlockContext.class,0); + } + public FormalParameterListContext formalParameterList() { + return getRuleContext(FormalParameterListContext.class,0); + } + public FunctionDeclarationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_functionDeclaration; } + } + + public final FunctionDeclarationContext functionDeclaration() throws RecognitionException { + FunctionDeclarationContext _localctx = new FunctionDeclarationContext(_ctx, getState()); + enterRule(_localctx, 110, RULE_functionDeclaration); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(529); + match(FUNCTION); + setState(530); + identifier(); + setState(532); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LPAREN) { + { + setState(531); + formalParameterList(); + } + } + + setState(534); + match(COLON); + setState(535); + resultType(); + setState(536); + match(SEMI); + setState(537); + block(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ResultTypeContext extends ParserRuleContext { + public TypeIdentifierContext typeIdentifier() { + return getRuleContext(TypeIdentifierContext.class,0); + } + public ResultTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_resultType; } + } + + public final ResultTypeContext resultType() throws RecognitionException { + ResultTypeContext _localctx = new ResultTypeContext(_ctx, getState()); + enterRule(_localctx, 112, RULE_resultType); + try { + enterOuterAlt(_localctx, 1); + { + setState(539); + typeIdentifier(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class StatementContext extends ParserRuleContext { + public LabelContext label() { + return getRuleContext(LabelContext.class,0); + } + public TerminalNode COLON() { return getToken(pascalParser.COLON, 0); } + public UnlabelledStatementContext unlabelledStatement() { + return getRuleContext(UnlabelledStatementContext.class,0); + } + public StatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_statement; } + } + + public final StatementContext statement() throws RecognitionException { + StatementContext _localctx = new StatementContext(_ctx, getState()); + enterRule(_localctx, 114, RULE_statement); + try { + setState(546); + _errHandler.sync(this); + switch (_input.LA(1)) { + case NUM_INT: + enterOuterAlt(_localctx, 1); + { + setState(541); + label(); + setState(542); + match(COLON); + setState(543); + unlabelledStatement(); + } + break; + case BEGIN: + case CASE: + case ELSE: + case END: + case FOR: + case GOTO: + case IF: + case REPEAT: + case UNTIL: + case WHILE: + case WITH: + case SEMI: + case AT: + case IDENT: + enterOuterAlt(_localctx, 2); + { + setState(545); + unlabelledStatement(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class UnlabelledStatementContext extends ParserRuleContext { + public SimpleStatementContext simpleStatement() { + return getRuleContext(SimpleStatementContext.class,0); + } + public StructuredStatementContext structuredStatement() { + return getRuleContext(StructuredStatementContext.class,0); + } + public UnlabelledStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_unlabelledStatement; } + } + + public final UnlabelledStatementContext unlabelledStatement() throws RecognitionException { + UnlabelledStatementContext _localctx = new UnlabelledStatementContext(_ctx, getState()); + enterRule(_localctx, 116, RULE_unlabelledStatement); + try { + setState(550); + _errHandler.sync(this); + switch (_input.LA(1)) { + case ELSE: + case END: + case GOTO: + case UNTIL: + case SEMI: + case AT: + case IDENT: + enterOuterAlt(_localctx, 1); + { + setState(548); + simpleStatement(); + } + break; + case BEGIN: + case CASE: + case FOR: + case IF: + case REPEAT: + case WHILE: + case WITH: + enterOuterAlt(_localctx, 2); + { + setState(549); + structuredStatement(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class SimpleStatementContext extends ParserRuleContext { + public AssignmentStatementContext assignmentStatement() { + return getRuleContext(AssignmentStatementContext.class,0); + } + public ProcedureStatementContext procedureStatement() { + return getRuleContext(ProcedureStatementContext.class,0); + } + public GotoStatementContext gotoStatement() { + return getRuleContext(GotoStatementContext.class,0); + } + public EmptyStatement_Context emptyStatement_() { + return getRuleContext(EmptyStatement_Context.class,0); + } + public SimpleStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_simpleStatement; } + } + + public final SimpleStatementContext simpleStatement() throws RecognitionException { + SimpleStatementContext _localctx = new SimpleStatementContext(_ctx, getState()); + enterRule(_localctx, 118, RULE_simpleStatement); + try { + setState(556); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,38,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(552); + assignmentStatement(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(553); + procedureStatement(); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(554); + gotoStatement(); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(555); + emptyStatement_(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class AssignmentStatementContext extends ParserRuleContext { + public VariableContext variable() { + return getRuleContext(VariableContext.class,0); + } + public TerminalNode ASSIGN() { return getToken(pascalParser.ASSIGN, 0); } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public AssignmentStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_assignmentStatement; } + } + + public final AssignmentStatementContext assignmentStatement() throws RecognitionException { + AssignmentStatementContext _localctx = new AssignmentStatementContext(_ctx, getState()); + enterRule(_localctx, 120, RULE_assignmentStatement); + try { + enterOuterAlt(_localctx, 1); + { + setState(558); + variable(); + setState(559); + match(ASSIGN); + setState(560); + expression(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class VariableContext extends ParserRuleContext { + public TerminalNode AT() { return getToken(pascalParser.AT, 0); } + public List identifier() { + return getRuleContexts(IdentifierContext.class); + } + public IdentifierContext identifier(int i) { + return getRuleContext(IdentifierContext.class,i); + } + public List LBRACK() { return getTokens(pascalParser.LBRACK); } + public TerminalNode LBRACK(int i) { + return getToken(pascalParser.LBRACK, i); + } + public List expression() { + return getRuleContexts(ExpressionContext.class); + } + public ExpressionContext expression(int i) { + return getRuleContext(ExpressionContext.class,i); + } + public List RBRACK() { return getTokens(pascalParser.RBRACK); } + public TerminalNode RBRACK(int i) { + return getToken(pascalParser.RBRACK, i); + } + public List LBRACK2() { return getTokens(pascalParser.LBRACK2); } + public TerminalNode LBRACK2(int i) { + return getToken(pascalParser.LBRACK2, i); + } + public List RBRACK2() { return getTokens(pascalParser.RBRACK2); } + public TerminalNode RBRACK2(int i) { + return getToken(pascalParser.RBRACK2, i); + } + public List DOT() { return getTokens(pascalParser.DOT); } + public TerminalNode DOT(int i) { + return getToken(pascalParser.DOT, i); + } + public List POINTER() { return getTokens(pascalParser.POINTER); } + public TerminalNode POINTER(int i) { + return getToken(pascalParser.POINTER, i); + } + public List COMMA() { return getTokens(pascalParser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(pascalParser.COMMA, i); + } + public VariableContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_variable; } + } + + public final VariableContext variable() throws RecognitionException { + VariableContext _localctx = new VariableContext(_ctx, getState()); + enterRule(_localctx, 122, RULE_variable); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(565); + _errHandler.sync(this); + switch (_input.LA(1)) { + case AT: + { + setState(562); + match(AT); + setState(563); + identifier(); + } + break; + case IDENT: + { + setState(564); + identifier(); + } + break; + default: + throw new NoViableAltException(this); + } + setState(594); + _errHandler.sync(this); + _la = _input.LA(1); + while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << LBRACK) | (1L << LBRACK2) | (1L << POINTER) | (1L << DOT))) != 0)) { + { + setState(592); + _errHandler.sync(this); + switch (_input.LA(1)) { + case LBRACK: + { + setState(567); + match(LBRACK); + setState(568); + expression(); + setState(573); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(569); + match(COMMA); + setState(570); + expression(); + } + } + setState(575); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(576); + match(RBRACK); + } + break; + case LBRACK2: + { + setState(578); + match(LBRACK2); + setState(579); + expression(); + setState(584); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(580); + match(COMMA); + setState(581); + expression(); + } + } + setState(586); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(587); + match(RBRACK2); + } + break; + case DOT: + { + setState(589); + match(DOT); + setState(590); + identifier(); + } + break; + case POINTER: + { + setState(591); + match(POINTER); + } + break; + default: + throw new NoViableAltException(this); + } + } + setState(596); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ExpressionContext extends ParserRuleContext { + public SimpleExpressionContext simpleExpression() { + return getRuleContext(SimpleExpressionContext.class,0); + } + public RelationaloperatorContext relationaloperator() { + return getRuleContext(RelationaloperatorContext.class,0); + } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public ExpressionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_expression; } + } + + public final ExpressionContext expression() throws RecognitionException { + ExpressionContext _localctx = new ExpressionContext(_ctx, getState()); + enterRule(_localctx, 124, RULE_expression); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(597); + simpleExpression(); + setState(601); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << IN) | (1L << EQUAL) | (1L << NOT_EQUAL) | (1L << LT) | (1L << LE) | (1L << GE) | (1L << GT))) != 0)) { + { + setState(598); + relationaloperator(); + setState(599); + expression(); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class RelationaloperatorContext extends ParserRuleContext { + public TerminalNode EQUAL() { return getToken(pascalParser.EQUAL, 0); } + public TerminalNode NOT_EQUAL() { return getToken(pascalParser.NOT_EQUAL, 0); } + public TerminalNode LT() { return getToken(pascalParser.LT, 0); } + public TerminalNode LE() { return getToken(pascalParser.LE, 0); } + public TerminalNode GE() { return getToken(pascalParser.GE, 0); } + public TerminalNode GT() { return getToken(pascalParser.GT, 0); } + public TerminalNode IN() { return getToken(pascalParser.IN, 0); } + public RelationaloperatorContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_relationaloperator; } + } + + public final RelationaloperatorContext relationaloperator() throws RecognitionException { + RelationaloperatorContext _localctx = new RelationaloperatorContext(_ctx, getState()); + enterRule(_localctx, 126, RULE_relationaloperator); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(603); + _la = _input.LA(1); + if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << IN) | (1L << EQUAL) | (1L << NOT_EQUAL) | (1L << LT) | (1L << LE) | (1L << GE) | (1L << GT))) != 0)) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class SimpleExpressionContext extends ParserRuleContext { + public TermContext term() { + return getRuleContext(TermContext.class,0); + } + public AdditiveoperatorContext additiveoperator() { + return getRuleContext(AdditiveoperatorContext.class,0); + } + public SimpleExpressionContext simpleExpression() { + return getRuleContext(SimpleExpressionContext.class,0); + } + public SimpleExpressionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_simpleExpression; } + } + + public final SimpleExpressionContext simpleExpression() throws RecognitionException { + SimpleExpressionContext _localctx = new SimpleExpressionContext(_ctx, getState()); + enterRule(_localctx, 128, RULE_simpleExpression); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(605); + term(); + setState(609); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << OR) | (1L << PLUS) | (1L << MINUS))) != 0)) { + { + setState(606); + additiveoperator(); + setState(607); + simpleExpression(); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class AdditiveoperatorContext extends ParserRuleContext { + public TerminalNode PLUS() { return getToken(pascalParser.PLUS, 0); } + public TerminalNode MINUS() { return getToken(pascalParser.MINUS, 0); } + public TerminalNode OR() { return getToken(pascalParser.OR, 0); } + public AdditiveoperatorContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_additiveoperator; } + } + + public final AdditiveoperatorContext additiveoperator() throws RecognitionException { + AdditiveoperatorContext _localctx = new AdditiveoperatorContext(_ctx, getState()); + enterRule(_localctx, 130, RULE_additiveoperator); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(611); + _la = _input.LA(1); + if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << OR) | (1L << PLUS) | (1L << MINUS))) != 0)) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class TermContext extends ParserRuleContext { + public SignedFactorContext signedFactor() { + return getRuleContext(SignedFactorContext.class,0); + } + public MultiplicativeoperatorContext multiplicativeoperator() { + return getRuleContext(MultiplicativeoperatorContext.class,0); + } + public TermContext term() { + return getRuleContext(TermContext.class,0); + } + public TermContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_term; } + } + + public final TermContext term() throws RecognitionException { + TermContext _localctx = new TermContext(_ctx, getState()); + enterRule(_localctx, 132, RULE_term); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(613); + signedFactor(); + setState(617); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << AND) | (1L << DIV) | (1L << MOD) | (1L << STAR) | (1L << SLASH))) != 0)) { + { + setState(614); + multiplicativeoperator(); + setState(615); + term(); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class MultiplicativeoperatorContext extends ParserRuleContext { + public TerminalNode STAR() { return getToken(pascalParser.STAR, 0); } + public TerminalNode SLASH() { return getToken(pascalParser.SLASH, 0); } + public TerminalNode DIV() { return getToken(pascalParser.DIV, 0); } + public TerminalNode MOD() { return getToken(pascalParser.MOD, 0); } + public TerminalNode AND() { return getToken(pascalParser.AND, 0); } + public MultiplicativeoperatorContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_multiplicativeoperator; } + } + + public final MultiplicativeoperatorContext multiplicativeoperator() throws RecognitionException { + MultiplicativeoperatorContext _localctx = new MultiplicativeoperatorContext(_ctx, getState()); + enterRule(_localctx, 134, RULE_multiplicativeoperator); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(619); + _la = _input.LA(1); + if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << AND) | (1L << DIV) | (1L << MOD) | (1L << STAR) | (1L << SLASH))) != 0)) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class SignedFactorContext extends ParserRuleContext { + public FactorContext factor() { + return getRuleContext(FactorContext.class,0); + } + public TerminalNode PLUS() { return getToken(pascalParser.PLUS, 0); } + public TerminalNode MINUS() { return getToken(pascalParser.MINUS, 0); } + public SignedFactorContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_signedFactor; } + } + + public final SignedFactorContext signedFactor() throws RecognitionException { + SignedFactorContext _localctx = new SignedFactorContext(_ctx, getState()); + enterRule(_localctx, 136, RULE_signedFactor); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(622); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PLUS || _la==MINUS) { + { + setState(621); + _la = _input.LA(1); + if ( !(_la==PLUS || _la==MINUS) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + } + } + + setState(624); + factor(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class FactorContext extends ParserRuleContext { + public VariableContext variable() { + return getRuleContext(VariableContext.class,0); + } + public TerminalNode LPAREN() { return getToken(pascalParser.LPAREN, 0); } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public TerminalNode RPAREN() { return getToken(pascalParser.RPAREN, 0); } + public FunctionDesignatorContext functionDesignator() { + return getRuleContext(FunctionDesignatorContext.class,0); + } + public UnsignedConstantContext unsignedConstant() { + return getRuleContext(UnsignedConstantContext.class,0); + } + public Set_Context set_() { + return getRuleContext(Set_Context.class,0); + } + public TerminalNode NOT() { return getToken(pascalParser.NOT, 0); } + public FactorContext factor() { + return getRuleContext(FactorContext.class,0); + } + public Bool_Context bool_() { + return getRuleContext(Bool_Context.class,0); + } + public FactorContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_factor; } + } + + public final FactorContext factor() throws RecognitionException { + FactorContext _localctx = new FactorContext(_ctx, getState()); + enterRule(_localctx, 138, RULE_factor); + try { + setState(637); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,48,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(626); + variable(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(627); + match(LPAREN); + setState(628); + expression(); + setState(629); + match(RPAREN); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(631); + functionDesignator(); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(632); + unsignedConstant(); + } + break; + case 5: + enterOuterAlt(_localctx, 5); + { + setState(633); + set_(); + } + break; + case 6: + enterOuterAlt(_localctx, 6); + { + setState(634); + match(NOT); + setState(635); + factor(); + } + break; + case 7: + enterOuterAlt(_localctx, 7); + { + setState(636); + bool_(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class UnsignedConstantContext extends ParserRuleContext { + public UnsignedNumberContext unsignedNumber() { + return getRuleContext(UnsignedNumberContext.class,0); + } + public ConstantChrContext constantChr() { + return getRuleContext(ConstantChrContext.class,0); + } + public StringContext string() { + return getRuleContext(StringContext.class,0); + } + public TerminalNode NIL() { return getToken(pascalParser.NIL, 0); } + public UnsignedConstantContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_unsignedConstant; } + } + + public final UnsignedConstantContext unsignedConstant() throws RecognitionException { + UnsignedConstantContext _localctx = new UnsignedConstantContext(_ctx, getState()); + enterRule(_localctx, 140, RULE_unsignedConstant); + try { + setState(643); + _errHandler.sync(this); + switch (_input.LA(1)) { + case NUM_INT: + case NUM_REAL: + enterOuterAlt(_localctx, 1); + { + setState(639); + unsignedNumber(); + } + break; + case CHR: + enterOuterAlt(_localctx, 2); + { + setState(640); + constantChr(); + } + break; + case STRING_LITERAL: + enterOuterAlt(_localctx, 3); + { + setState(641); + string(); + } + break; + case NIL: + enterOuterAlt(_localctx, 4); + { + setState(642); + match(NIL); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class FunctionDesignatorContext extends ParserRuleContext { + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public TerminalNode LPAREN() { return getToken(pascalParser.LPAREN, 0); } + public ParameterListContext parameterList() { + return getRuleContext(ParameterListContext.class,0); + } + public TerminalNode RPAREN() { return getToken(pascalParser.RPAREN, 0); } + public FunctionDesignatorContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_functionDesignator; } + } + + public final FunctionDesignatorContext functionDesignator() throws RecognitionException { + FunctionDesignatorContext _localctx = new FunctionDesignatorContext(_ctx, getState()); + enterRule(_localctx, 142, RULE_functionDesignator); + try { + enterOuterAlt(_localctx, 1); + { + setState(645); + identifier(); + setState(646); + match(LPAREN); + setState(647); + parameterList(); + setState(648); + match(RPAREN); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ParameterListContext extends ParserRuleContext { + public List actualParameter() { + return getRuleContexts(ActualParameterContext.class); + } + public ActualParameterContext actualParameter(int i) { + return getRuleContext(ActualParameterContext.class,i); + } + public List COMMA() { return getTokens(pascalParser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(pascalParser.COMMA, i); + } + public ParameterListContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_parameterList; } + } + + public final ParameterListContext parameterList() throws RecognitionException { + ParameterListContext _localctx = new ParameterListContext(_ctx, getState()); + enterRule(_localctx, 144, RULE_parameterList); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(650); + actualParameter(); + setState(655); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(651); + match(COMMA); + setState(652); + actualParameter(); + } + } + setState(657); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Set_Context extends ParserRuleContext { + public TerminalNode LBRACK() { return getToken(pascalParser.LBRACK, 0); } + public ElementListContext elementList() { + return getRuleContext(ElementListContext.class,0); + } + public TerminalNode RBRACK() { return getToken(pascalParser.RBRACK, 0); } + public TerminalNode LBRACK2() { return getToken(pascalParser.LBRACK2, 0); } + public TerminalNode RBRACK2() { return getToken(pascalParser.RBRACK2, 0); } + public Set_Context(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_set_; } + } + + public final Set_Context set_() throws RecognitionException { + Set_Context _localctx = new Set_Context(_ctx, getState()); + enterRule(_localctx, 146, RULE_set_); + try { + setState(666); + _errHandler.sync(this); + switch (_input.LA(1)) { + case LBRACK: + enterOuterAlt(_localctx, 1); + { + setState(658); + match(LBRACK); + setState(659); + elementList(); + setState(660); + match(RBRACK); + } + break; + case LBRACK2: + enterOuterAlt(_localctx, 2); + { + setState(662); + match(LBRACK2); + setState(663); + elementList(); + setState(664); + match(RBRACK2); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ElementListContext extends ParserRuleContext { + public List element() { + return getRuleContexts(ElementContext.class); + } + public ElementContext element(int i) { + return getRuleContext(ElementContext.class,i); + } + public List COMMA() { return getTokens(pascalParser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(pascalParser.COMMA, i); + } + public ElementListContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_elementList; } + } + + public final ElementListContext elementList() throws RecognitionException { + ElementListContext _localctx = new ElementListContext(_ctx, getState()); + enterRule(_localctx, 148, RULE_elementList); + int _la; + try { + setState(677); + _errHandler.sync(this); + switch (_input.LA(1)) { + case CHR: + case NIL: + case NOT: + case PLUS: + case MINUS: + case LPAREN: + case LBRACK: + case LBRACK2: + case AT: + case TRUE: + case FALSE: + case IDENT: + case STRING_LITERAL: + case NUM_INT: + case NUM_REAL: + enterOuterAlt(_localctx, 1); + { + setState(668); + element(); + setState(673); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(669); + match(COMMA); + setState(670); + element(); + } + } + setState(675); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + break; + case RBRACK: + case RBRACK2: + enterOuterAlt(_localctx, 2); + { + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ElementContext extends ParserRuleContext { + public List expression() { + return getRuleContexts(ExpressionContext.class); + } + public ExpressionContext expression(int i) { + return getRuleContext(ExpressionContext.class,i); + } + public TerminalNode DOTDOT() { return getToken(pascalParser.DOTDOT, 0); } + public ElementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_element; } + } + + public final ElementContext element() throws RecognitionException { + ElementContext _localctx = new ElementContext(_ctx, getState()); + enterRule(_localctx, 150, RULE_element); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(679); + expression(); + setState(682); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==DOTDOT) { + { + setState(680); + match(DOTDOT); + setState(681); + expression(); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ProcedureStatementContext extends ParserRuleContext { + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public TerminalNode LPAREN() { return getToken(pascalParser.LPAREN, 0); } + public ParameterListContext parameterList() { + return getRuleContext(ParameterListContext.class,0); + } + public TerminalNode RPAREN() { return getToken(pascalParser.RPAREN, 0); } + public ProcedureStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_procedureStatement; } + } + + public final ProcedureStatementContext procedureStatement() throws RecognitionException { + ProcedureStatementContext _localctx = new ProcedureStatementContext(_ctx, getState()); + enterRule(_localctx, 152, RULE_procedureStatement); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(684); + identifier(); + setState(689); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LPAREN) { + { + setState(685); + match(LPAREN); + setState(686); + parameterList(); + setState(687); + match(RPAREN); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ActualParameterContext extends ParserRuleContext { + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public List parameterwidth() { + return getRuleContexts(ParameterwidthContext.class); + } + public ParameterwidthContext parameterwidth(int i) { + return getRuleContext(ParameterwidthContext.class,i); + } + public ActualParameterContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_actualParameter; } + } + + public final ActualParameterContext actualParameter() throws RecognitionException { + ActualParameterContext _localctx = new ActualParameterContext(_ctx, getState()); + enterRule(_localctx, 154, RULE_actualParameter); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(691); + expression(); + setState(695); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COLON) { + { + { + setState(692); + parameterwidth(); + } + } + setState(697); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ParameterwidthContext extends ParserRuleContext { + public TerminalNode COLON() { return getToken(pascalParser.COLON, 0); } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public ParameterwidthContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_parameterwidth; } + } + + public final ParameterwidthContext parameterwidth() throws RecognitionException { + ParameterwidthContext _localctx = new ParameterwidthContext(_ctx, getState()); + enterRule(_localctx, 156, RULE_parameterwidth); + try { + enterOuterAlt(_localctx, 1); + { + setState(698); + match(COLON); + setState(699); + expression(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class GotoStatementContext extends ParserRuleContext { + public TerminalNode GOTO() { return getToken(pascalParser.GOTO, 0); } + public LabelContext label() { + return getRuleContext(LabelContext.class,0); + } + public GotoStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_gotoStatement; } + } + + public final GotoStatementContext gotoStatement() throws RecognitionException { + GotoStatementContext _localctx = new GotoStatementContext(_ctx, getState()); + enterRule(_localctx, 158, RULE_gotoStatement); + try { + enterOuterAlt(_localctx, 1); + { + setState(701); + match(GOTO); + setState(702); + label(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class EmptyStatement_Context extends ParserRuleContext { + public EmptyStatement_Context(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_emptyStatement_; } + } + + public final EmptyStatement_Context emptyStatement_() throws RecognitionException { + EmptyStatement_Context _localctx = new EmptyStatement_Context(_ctx, getState()); + enterRule(_localctx, 160, RULE_emptyStatement_); + try { + enterOuterAlt(_localctx, 1); + { + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Empty_Context extends ParserRuleContext { + public Empty_Context(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_empty_; } + } + + public final Empty_Context empty_() throws RecognitionException { + Empty_Context _localctx = new Empty_Context(_ctx, getState()); + enterRule(_localctx, 162, RULE_empty_); + try { + enterOuterAlt(_localctx, 1); + { + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class StructuredStatementContext extends ParserRuleContext { + public CompoundStatementContext compoundStatement() { + return getRuleContext(CompoundStatementContext.class,0); + } + public ConditionalStatementContext conditionalStatement() { + return getRuleContext(ConditionalStatementContext.class,0); + } + public RepetetiveStatementContext repetetiveStatement() { + return getRuleContext(RepetetiveStatementContext.class,0); + } + public WithStatementContext withStatement() { + return getRuleContext(WithStatementContext.class,0); + } + public StructuredStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_structuredStatement; } + } + + public final StructuredStatementContext structuredStatement() throws RecognitionException { + StructuredStatementContext _localctx = new StructuredStatementContext(_ctx, getState()); + enterRule(_localctx, 164, RULE_structuredStatement); + try { + setState(712); + _errHandler.sync(this); + switch (_input.LA(1)) { + case BEGIN: + enterOuterAlt(_localctx, 1); + { + setState(708); + compoundStatement(); + } + break; + case CASE: + case IF: + enterOuterAlt(_localctx, 2); + { + setState(709); + conditionalStatement(); + } + break; + case FOR: + case REPEAT: + case WHILE: + enterOuterAlt(_localctx, 3); + { + setState(710); + repetetiveStatement(); + } + break; + case WITH: + enterOuterAlt(_localctx, 4); + { + setState(711); + withStatement(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class CompoundStatementContext extends ParserRuleContext { + public TerminalNode BEGIN() { return getToken(pascalParser.BEGIN, 0); } + public StatementsContext statements() { + return getRuleContext(StatementsContext.class,0); + } + public TerminalNode END() { return getToken(pascalParser.END, 0); } + public CompoundStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_compoundStatement; } + } + + public final CompoundStatementContext compoundStatement() throws RecognitionException { + CompoundStatementContext _localctx = new CompoundStatementContext(_ctx, getState()); + enterRule(_localctx, 166, RULE_compoundStatement); + try { + enterOuterAlt(_localctx, 1); + { + setState(714); + match(BEGIN); + setState(715); + statements(); + setState(716); + match(END); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class StatementsContext extends ParserRuleContext { + public List statement() { + return getRuleContexts(StatementContext.class); + } + public StatementContext statement(int i) { + return getRuleContext(StatementContext.class,i); + } + public List SEMI() { return getTokens(pascalParser.SEMI); } + public TerminalNode SEMI(int i) { + return getToken(pascalParser.SEMI, i); + } + public StatementsContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_statements; } + } + + public final StatementsContext statements() throws RecognitionException { + StatementsContext _localctx = new StatementsContext(_ctx, getState()); + enterRule(_localctx, 168, RULE_statements); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(718); + statement(); + setState(723); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==SEMI) { + { + { + setState(719); + match(SEMI); + setState(720); + statement(); + } + } + setState(725); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ConditionalStatementContext extends ParserRuleContext { + public IfStatementContext ifStatement() { + return getRuleContext(IfStatementContext.class,0); + } + public CaseStatementContext caseStatement() { + return getRuleContext(CaseStatementContext.class,0); + } + public ConditionalStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_conditionalStatement; } + } + + public final ConditionalStatementContext conditionalStatement() throws RecognitionException { + ConditionalStatementContext _localctx = new ConditionalStatementContext(_ctx, getState()); + enterRule(_localctx, 170, RULE_conditionalStatement); + try { + setState(728); + _errHandler.sync(this); + switch (_input.LA(1)) { + case IF: + enterOuterAlt(_localctx, 1); + { + setState(726); + ifStatement(); + } + break; + case CASE: + enterOuterAlt(_localctx, 2); + { + setState(727); + caseStatement(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class IfStatementContext extends ParserRuleContext { + public TerminalNode IF() { return getToken(pascalParser.IF, 0); } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public TerminalNode THEN() { return getToken(pascalParser.THEN, 0); } + public List statement() { + return getRuleContexts(StatementContext.class); + } + public StatementContext statement(int i) { + return getRuleContext(StatementContext.class,i); + } + public TerminalNode ELSE() { return getToken(pascalParser.ELSE, 0); } + public IfStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_ifStatement; } + } + + public final IfStatementContext ifStatement() throws RecognitionException { + IfStatementContext _localctx = new IfStatementContext(_ctx, getState()); + enterRule(_localctx, 172, RULE_ifStatement); + try { + enterOuterAlt(_localctx, 1); + { + setState(730); + match(IF); + setState(731); + expression(); + setState(732); + match(THEN); + setState(733); + statement(); + setState(736); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,60,_ctx) ) { + case 1: + { + setState(734); + match(ELSE); + setState(735); + statement(); + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class CaseStatementContext extends ParserRuleContext { + public TerminalNode CASE() { return getToken(pascalParser.CASE, 0); } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public TerminalNode OF() { return getToken(pascalParser.OF, 0); } + public List caseListElement() { + return getRuleContexts(CaseListElementContext.class); + } + public CaseListElementContext caseListElement(int i) { + return getRuleContext(CaseListElementContext.class,i); + } + public TerminalNode END() { return getToken(pascalParser.END, 0); } + public List SEMI() { return getTokens(pascalParser.SEMI); } + public TerminalNode SEMI(int i) { + return getToken(pascalParser.SEMI, i); + } + public TerminalNode ELSE() { return getToken(pascalParser.ELSE, 0); } + public StatementsContext statements() { + return getRuleContext(StatementsContext.class,0); + } + public CaseStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_caseStatement; } + } + + public final CaseStatementContext caseStatement() throws RecognitionException { + CaseStatementContext _localctx = new CaseStatementContext(_ctx, getState()); + enterRule(_localctx, 174, RULE_caseStatement); + int _la; + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(738); + match(CASE); + setState(739); + expression(); + setState(740); + match(OF); + setState(741); + caseListElement(); + setState(746); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,61,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(742); + match(SEMI); + setState(743); + caseListElement(); + } + } + } + setState(748); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,61,_ctx); + } + setState(752); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==SEMI) { + { + setState(749); + match(SEMI); + setState(750); + match(ELSE); + setState(751); + statements(); + } + } + + setState(754); + match(END); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class CaseListElementContext extends ParserRuleContext { + public ConstListContext constList() { + return getRuleContext(ConstListContext.class,0); + } + public TerminalNode COLON() { return getToken(pascalParser.COLON, 0); } + public StatementContext statement() { + return getRuleContext(StatementContext.class,0); + } + public CaseListElementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_caseListElement; } + } + + public final CaseListElementContext caseListElement() throws RecognitionException { + CaseListElementContext _localctx = new CaseListElementContext(_ctx, getState()); + enterRule(_localctx, 176, RULE_caseListElement); + try { + enterOuterAlt(_localctx, 1); + { + setState(756); + constList(); + setState(757); + match(COLON); + setState(758); + statement(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class RepetetiveStatementContext extends ParserRuleContext { + public WhileStatementContext whileStatement() { + return getRuleContext(WhileStatementContext.class,0); + } + public RepeatStatementContext repeatStatement() { + return getRuleContext(RepeatStatementContext.class,0); + } + public ForStatementContext forStatement() { + return getRuleContext(ForStatementContext.class,0); + } + public RepetetiveStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_repetetiveStatement; } + } + + public final RepetetiveStatementContext repetetiveStatement() throws RecognitionException { + RepetetiveStatementContext _localctx = new RepetetiveStatementContext(_ctx, getState()); + enterRule(_localctx, 178, RULE_repetetiveStatement); + try { + setState(763); + _errHandler.sync(this); + switch (_input.LA(1)) { + case WHILE: + enterOuterAlt(_localctx, 1); + { + setState(760); + whileStatement(); + } + break; + case REPEAT: + enterOuterAlt(_localctx, 2); + { + setState(761); + repeatStatement(); + } + break; + case FOR: + enterOuterAlt(_localctx, 3); + { + setState(762); + forStatement(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class WhileStatementContext extends ParserRuleContext { + public TerminalNode WHILE() { return getToken(pascalParser.WHILE, 0); } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public TerminalNode DO() { return getToken(pascalParser.DO, 0); } + public StatementContext statement() { + return getRuleContext(StatementContext.class,0); + } + public WhileStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_whileStatement; } + } + + public final WhileStatementContext whileStatement() throws RecognitionException { + WhileStatementContext _localctx = new WhileStatementContext(_ctx, getState()); + enterRule(_localctx, 180, RULE_whileStatement); + try { + enterOuterAlt(_localctx, 1); + { + setState(765); + match(WHILE); + setState(766); + expression(); + setState(767); + match(DO); + setState(768); + statement(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class RepeatStatementContext extends ParserRuleContext { + public TerminalNode REPEAT() { return getToken(pascalParser.REPEAT, 0); } + public StatementsContext statements() { + return getRuleContext(StatementsContext.class,0); + } + public TerminalNode UNTIL() { return getToken(pascalParser.UNTIL, 0); } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public RepeatStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_repeatStatement; } + } + + public final RepeatStatementContext repeatStatement() throws RecognitionException { + RepeatStatementContext _localctx = new RepeatStatementContext(_ctx, getState()); + enterRule(_localctx, 182, RULE_repeatStatement); + try { + enterOuterAlt(_localctx, 1); + { + setState(770); + match(REPEAT); + setState(771); + statements(); + setState(772); + match(UNTIL); + setState(773); + expression(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ForStatementContext extends ParserRuleContext { + public TerminalNode FOR() { return getToken(pascalParser.FOR, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public TerminalNode ASSIGN() { return getToken(pascalParser.ASSIGN, 0); } + public ForListContext forList() { + return getRuleContext(ForListContext.class,0); + } + public TerminalNode DO() { return getToken(pascalParser.DO, 0); } + public StatementContext statement() { + return getRuleContext(StatementContext.class,0); + } + public ForStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_forStatement; } + } + + public final ForStatementContext forStatement() throws RecognitionException { + ForStatementContext _localctx = new ForStatementContext(_ctx, getState()); + enterRule(_localctx, 184, RULE_forStatement); + try { + enterOuterAlt(_localctx, 1); + { + setState(775); + match(FOR); + setState(776); + identifier(); + setState(777); + match(ASSIGN); + setState(778); + forList(); + setState(779); + match(DO); + setState(780); + statement(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ForListContext extends ParserRuleContext { + public InitialValueContext initialValue() { + return getRuleContext(InitialValueContext.class,0); + } + public FinalValueContext finalValue() { + return getRuleContext(FinalValueContext.class,0); + } + public TerminalNode TO() { return getToken(pascalParser.TO, 0); } + public TerminalNode DOWNTO() { return getToken(pascalParser.DOWNTO, 0); } + public ForListContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_forList; } + } + + public final ForListContext forList() throws RecognitionException { + ForListContext _localctx = new ForListContext(_ctx, getState()); + enterRule(_localctx, 186, RULE_forList); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(782); + initialValue(); + setState(783); + _la = _input.LA(1); + if ( !(_la==DOWNTO || _la==TO) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(784); + finalValue(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class InitialValueContext extends ParserRuleContext { + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public InitialValueContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_initialValue; } + } + + public final InitialValueContext initialValue() throws RecognitionException { + InitialValueContext _localctx = new InitialValueContext(_ctx, getState()); + enterRule(_localctx, 188, RULE_initialValue); + try { + enterOuterAlt(_localctx, 1); + { + setState(786); + expression(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class FinalValueContext extends ParserRuleContext { + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public FinalValueContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_finalValue; } + } + + public final FinalValueContext finalValue() throws RecognitionException { + FinalValueContext _localctx = new FinalValueContext(_ctx, getState()); + enterRule(_localctx, 190, RULE_finalValue); + try { + enterOuterAlt(_localctx, 1); + { + setState(788); + expression(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class WithStatementContext extends ParserRuleContext { + public TerminalNode WITH() { return getToken(pascalParser.WITH, 0); } + public RecordVariableListContext recordVariableList() { + return getRuleContext(RecordVariableListContext.class,0); + } + public TerminalNode DO() { return getToken(pascalParser.DO, 0); } + public StatementContext statement() { + return getRuleContext(StatementContext.class,0); + } + public WithStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_withStatement; } + } + + public final WithStatementContext withStatement() throws RecognitionException { + WithStatementContext _localctx = new WithStatementContext(_ctx, getState()); + enterRule(_localctx, 192, RULE_withStatement); + try { + enterOuterAlt(_localctx, 1); + { + setState(790); + match(WITH); + setState(791); + recordVariableList(); + setState(792); + match(DO); + setState(793); + statement(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class RecordVariableListContext extends ParserRuleContext { + public List variable() { + return getRuleContexts(VariableContext.class); + } + public VariableContext variable(int i) { + return getRuleContext(VariableContext.class,i); + } + public List COMMA() { return getTokens(pascalParser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(pascalParser.COMMA, i); + } + public RecordVariableListContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_recordVariableList; } + } + + public final RecordVariableListContext recordVariableList() throws RecognitionException { + RecordVariableListContext _localctx = new RecordVariableListContext(_ctx, getState()); + enterRule(_localctx, 194, RULE_recordVariableList); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(795); + variable(); + setState(800); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(796); + match(COMMA); + setState(797); + variable(); + } + } + setState(802); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static final String _serializedATN = + "\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3R\u0326\4\2\t\2\4"+ + "\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4\13\t"+ + "\13\4\f\t\f\4\r\t\r\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22"+ + "\4\23\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30\4\31\t\31"+ + "\4\32\t\32\4\33\t\33\4\34\t\34\4\35\t\35\4\36\t\36\4\37\t\37\4 \t \4!"+ + "\t!\4\"\t\"\4#\t#\4$\t$\4%\t%\4&\t&\4\'\t\'\4(\t(\4)\t)\4*\t*\4+\t+\4"+ + ",\t,\4-\t-\4.\t.\4/\t/\4\60\t\60\4\61\t\61\4\62\t\62\4\63\t\63\4\64\t"+ + "\64\4\65\t\65\4\66\t\66\4\67\t\67\48\t8\49\t9\4:\t:\4;\t;\4<\t<\4=\t="+ + "\4>\t>\4?\t?\4@\t@\4A\tA\4B\tB\4C\tC\4D\tD\4E\tE\4F\tF\4G\tG\4H\tH\4I"+ + "\tI\4J\tJ\4K\tK\4L\tL\4M\tM\4N\tN\4O\tO\4P\tP\4Q\tQ\4R\tR\4S\tS\4T\tT"+ + "\4U\tU\4V\tV\4W\tW\4X\tX\4Y\tY\4Z\tZ\4[\t[\4\\\t\\\4]\t]\4^\t^\4_\t_\4"+ + "`\t`\4a\ta\4b\tb\4c\tc\3\2\3\2\3\3\3\3\5\3\u00cb\n\3\3\3\3\3\3\3\3\3\3"+ + "\4\3\4\3\4\3\4\3\4\3\4\5\4\u00d7\n\4\3\4\3\4\3\4\3\4\3\4\3\4\5\4\u00df"+ + "\n\4\3\5\3\5\3\6\3\6\3\6\3\6\3\6\3\6\3\6\7\6\u00ea\n\6\f\6\16\6\u00ed"+ + "\13\6\3\6\3\6\3\7\3\7\3\7\3\7\3\b\3\b\3\b\3\b\7\b\u00f9\n\b\f\b\16\b\u00fc"+ + "\13\b\3\b\3\b\3\t\3\t\3\n\3\n\3\n\3\n\6\n\u0106\n\n\r\n\16\n\u0107\3\13"+ + "\3\13\3\13\3\13\3\f\3\f\3\f\3\f\3\f\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3"+ + "\r\3\r\5\r\u011d\n\r\3\16\3\16\5\16\u0121\n\16\3\17\3\17\3\20\3\20\3\21"+ + "\3\21\3\22\3\22\3\23\3\23\3\24\3\24\3\24\3\24\6\24\u0131\n\24\r\24\16"+ + "\24\u0132\3\25\3\25\3\25\3\25\3\25\5\25\u013a\n\25\3\26\3\26\5\26\u013e"+ + "\n\26\3\26\3\26\3\26\3\27\3\27\5\27\u0145\n\27\3\30\3\30\3\30\5\30\u014a"+ + "\n\30\3\31\3\31\3\31\3\31\5\31\u0150\n\31\3\32\3\32\3\32\3\32\3\33\3\33"+ + "\3\33\3\33\3\34\3\34\5\34\u015c\n\34\3\35\3\35\3\35\5\35\u0161\n\35\3"+ + "\36\3\36\3\36\3\36\5\36\u0167\n\36\3\37\3\37\3\37\3\37\5\37\u016d\n\37"+ + "\3\37\3\37\3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \5 \u017f\n \3!\3"+ + "!\3!\7!\u0184\n!\f!\16!\u0187\13!\3\"\3\"\3#\3#\3$\3$\5$\u018f\n$\3$\3"+ + "$\3%\3%\3%\5%\u0196\n%\3%\5%\u0199\n%\3&\3&\3&\7&\u019e\n&\f&\16&\u01a1"+ + "\13&\3\'\3\'\3\'\3\'\3(\3(\3(\3(\3(\3(\7(\u01ad\n(\f(\16(\u01b0\13(\3"+ + ")\3)\3)\3)\3)\5)\u01b7\n)\3*\3*\3*\3*\3*\3*\3+\3+\3+\3+\3,\3,\3-\3-\3"+ + "-\3-\5-\u01c9\n-\3.\3.\3.\3/\3/\3/\3/\7/\u01d2\n/\f/\16/\u01d5\13/\3/"+ + "\3/\3\60\3\60\3\60\3\60\3\61\3\61\3\61\3\62\3\62\5\62\u01e2\n\62\3\63"+ + "\3\63\3\63\5\63\u01e7\n\63\3\63\3\63\3\63\3\64\3\64\3\64\3\64\7\64\u01f0"+ + "\n\64\f\64\16\64\u01f3\13\64\3\64\3\64\3\65\3\65\3\65\3\65\3\65\3\65\3"+ + "\65\5\65\u01fe\n\65\3\66\3\66\3\66\3\66\3\67\3\67\3\67\7\67\u0207\n\67"+ + "\f\67\16\67\u020a\13\67\38\38\38\78\u020f\n8\f8\168\u0212\138\39\39\3"+ + "9\59\u0217\n9\39\39\39\39\39\3:\3:\3;\3;\3;\3;\3;\5;\u0225\n;\3<\3<\5"+ + "<\u0229\n<\3=\3=\3=\3=\5=\u022f\n=\3>\3>\3>\3>\3?\3?\3?\5?\u0238\n?\3"+ + "?\3?\3?\3?\7?\u023e\n?\f?\16?\u0241\13?\3?\3?\3?\3?\3?\3?\7?\u0249\n?"+ + "\f?\16?\u024c\13?\3?\3?\3?\3?\3?\7?\u0253\n?\f?\16?\u0256\13?\3@\3@\3"+ + "@\3@\5@\u025c\n@\3A\3A\3B\3B\3B\3B\5B\u0264\nB\3C\3C\3D\3D\3D\3D\5D\u026c"+ + "\nD\3E\3E\3F\5F\u0271\nF\3F\3F\3G\3G\3G\3G\3G\3G\3G\3G\3G\3G\3G\5G\u0280"+ + "\nG\3H\3H\3H\3H\5H\u0286\nH\3I\3I\3I\3I\3I\3J\3J\3J\7J\u0290\nJ\fJ\16"+ + "J\u0293\13J\3K\3K\3K\3K\3K\3K\3K\3K\5K\u029d\nK\3L\3L\3L\7L\u02a2\nL\f"+ + "L\16L\u02a5\13L\3L\5L\u02a8\nL\3M\3M\3M\5M\u02ad\nM\3N\3N\3N\3N\3N\5N"+ + "\u02b4\nN\3O\3O\7O\u02b8\nO\fO\16O\u02bb\13O\3P\3P\3P\3Q\3Q\3Q\3R\3R\3"+ + "S\3S\3T\3T\3T\3T\5T\u02cb\nT\3U\3U\3U\3U\3V\3V\3V\7V\u02d4\nV\fV\16V\u02d7"+ + "\13V\3W\3W\5W\u02db\nW\3X\3X\3X\3X\3X\3X\5X\u02e3\nX\3Y\3Y\3Y\3Y\3Y\3"+ + "Y\7Y\u02eb\nY\fY\16Y\u02ee\13Y\3Y\3Y\3Y\5Y\u02f3\nY\3Y\3Y\3Z\3Z\3Z\3Z"+ + "\3[\3[\3[\5[\u02fe\n[\3\\\3\\\3\\\3\\\3\\\3]\3]\3]\3]\3]\3^\3^\3^\3^\3"+ + "^\3^\3^\3_\3_\3_\3_\3`\3`\3a\3a\3b\3b\3b\3b\3b\3c\3c\3c\7c\u0321\nc\f"+ + "c\16c\u0324\13c\3c\2\2d\2\4\6\b\n\f\16\20\22\24\26\30\32\34\36 \"$&(*"+ + ",.\60\62\64\668:<>@BDFHJLNPRTVXZ\\^`bdfhjlnprtvxz|~\u0080\u0082\u0084"+ + "\u0086\u0088\u008a\u008c\u008e\u0090\u0092\u0094\u0096\u0098\u009a\u009c"+ + "\u009e\u00a0\u00a2\u00a4\u00a6\u00a8\u00aa\u00ac\u00ae\u00b0\u00b2\u00b4"+ + "\u00b6\u00b8\u00ba\u00bc\u00be\u00c0\u00c2\u00c4\2\t\3\2+,\3\2JK\7\2\6"+ + "\6\b\b\26\26 HH\4\2\25\25\638\4\2\34\34+,\6\2\3\3\13\13\30\30-.\4\2\r"+ + "\r%%\2\u0323\2\u00c6\3\2\2\2\4\u00c8\3\2\2\2\6\u00de\3\2\2\2\b\u00e0\3"+ + "\2\2\2\n\u00eb\3\2\2\2\f\u00f0\3\2\2\2\16\u00f4\3\2\2\2\20\u00ff\3\2\2"+ + "\2\22\u0101\3\2\2\2\24\u0109\3\2\2\2\26\u010d\3\2\2\2\30\u011c\3\2\2\2"+ + "\32\u0120\3\2\2\2\34\u0122\3\2\2\2\36\u0124\3\2\2\2 \u0126\3\2\2\2\"\u0128"+ + "\3\2\2\2$\u012a\3\2\2\2&\u012c\3\2\2\2(\u0134\3\2\2\2*\u013b\3\2\2\2,"+ + "\u0142\3\2\2\2.\u0149\3\2\2\2\60\u014f\3\2\2\2\62\u0151\3\2\2\2\64\u0155"+ + "\3\2\2\2\66\u015b\3\2\2\28\u0160\3\2\2\2:\u0166\3\2\2\2<\u0168\3\2\2\2"+ + ">\u017e\3\2\2\2@\u0180\3\2\2\2B\u0188\3\2\2\2D\u018a\3\2\2\2F\u018c\3"+ + "\2\2\2H\u0198\3\2\2\2J\u019a\3\2\2\2L\u01a2\3\2\2\2N\u01a6\3\2\2\2P\u01b6"+ + "\3\2\2\2R\u01b8\3\2\2\2T\u01be\3\2\2\2V\u01c2\3\2\2\2X\u01c8\3\2\2\2Z"+ + "\u01ca\3\2\2\2\\\u01cd\3\2\2\2^\u01d8\3\2\2\2`\u01dc\3\2\2\2b\u01e1\3"+ + "\2\2\2d\u01e3\3\2\2\2f\u01eb\3\2\2\2h\u01fd\3\2\2\2j\u01ff\3\2\2\2l\u0203"+ + "\3\2\2\2n\u020b\3\2\2\2p\u0213\3\2\2\2r\u021d\3\2\2\2t\u0224\3\2\2\2v"+ + "\u0228\3\2\2\2x\u022e\3\2\2\2z\u0230\3\2\2\2|\u0237\3\2\2\2~\u0257\3\2"+ + "\2\2\u0080\u025d\3\2\2\2\u0082\u025f\3\2\2\2\u0084\u0265\3\2\2\2\u0086"+ + "\u0267\3\2\2\2\u0088\u026d\3\2\2\2\u008a\u0270\3\2\2\2\u008c\u027f\3\2"+ + "\2\2\u008e\u0285\3\2\2\2\u0090\u0287\3\2\2\2\u0092\u028c\3\2\2\2\u0094"+ + "\u029c\3\2\2\2\u0096\u02a7\3\2\2\2\u0098\u02a9\3\2\2\2\u009a\u02ae\3\2"+ + "\2\2\u009c\u02b5\3\2\2\2\u009e\u02bc\3\2\2\2\u00a0\u02bf\3\2\2\2\u00a2"+ + "\u02c2\3\2\2\2\u00a4\u02c4\3\2\2\2\u00a6\u02ca\3\2\2\2\u00a8\u02cc\3\2"+ + "\2\2\u00aa\u02d0\3\2\2\2\u00ac\u02da\3\2\2\2\u00ae\u02dc\3\2\2\2\u00b0"+ + "\u02e4\3\2\2\2\u00b2\u02f6\3\2\2\2\u00b4\u02fd\3\2\2\2\u00b6\u02ff\3\2"+ + "\2\2\u00b8\u0304\3\2\2\2\u00ba\u0309\3\2\2\2\u00bc\u0310\3\2\2\2\u00be"+ + "\u0314\3\2\2\2\u00c0\u0316\3\2\2\2\u00c2\u0318\3\2\2\2\u00c4\u031d\3\2"+ + "\2\2\u00c6\u00c7\5\4\3\2\u00c7\3\3\2\2\2\u00c8\u00ca\5\6\4\2\u00c9\u00cb"+ + "\7F\2\2\u00ca\u00c9\3\2\2\2\u00ca\u00cb\3\2\2\2\u00cb\u00cc\3\2\2\2\u00cc"+ + "\u00cd\5\n\6\2\u00cd\u00ce\7A\2\2\u00ce\u00cf\7\2\2\3\u00cf\5\3\2\2\2"+ + "\u00d0\u00d1\7\37\2\2\u00d1\u00d6\5\b\5\2\u00d2\u00d3\79\2\2\u00d3\u00d4"+ + "\5l\67\2\u00d4\u00d5\7:\2\2\u00d5\u00d7\3\2\2\2\u00d6\u00d2\3\2\2\2\u00d6"+ + "\u00d7\3\2\2\2\u00d7\u00d8\3\2\2\2\u00d8\u00d9\7\61\2\2\u00d9\u00df\3"+ + "\2\2\2\u00da\u00db\7E\2\2\u00db\u00dc\5\b\5\2\u00dc\u00dd\7\61\2\2\u00dd"+ + "\u00df\3\2\2\2\u00de\u00d0\3\2\2\2\u00de\u00da\3\2\2\2\u00df\7\3\2\2\2"+ + "\u00e0\u00e1\7O\2\2\u00e1\t\3\2\2\2\u00e2\u00ea\5\16\b\2\u00e3\u00ea\5"+ + "\22\n\2\u00e4\u00ea\5&\24\2\u00e5\u00ea\5\\/\2\u00e6\u00ea\5`\61\2\u00e7"+ + "\u00ea\5\f\7\2\u00e8\u00ea\7I\2\2\u00e9\u00e2\3\2\2\2\u00e9\u00e3\3\2"+ + "\2\2\u00e9\u00e4\3\2\2\2\u00e9\u00e5\3\2\2\2\u00e9\u00e6\3\2\2\2\u00e9"+ + "\u00e7\3\2\2\2\u00e9\u00e8\3\2\2\2\u00ea\u00ed\3\2\2\2\u00eb\u00e9\3\2"+ + "\2\2\u00eb\u00ec\3\2\2\2\u00ec\u00ee\3\2\2\2\u00ed\u00eb\3\2\2\2\u00ee"+ + "\u00ef\5\u00a8U\2\u00ef\13\3\2\2\2\u00f0\u00f1\7G\2\2\u00f1\u00f2\5l\67"+ + "\2\u00f2\u00f3\7\61\2\2\u00f3\r\3\2\2\2\u00f4\u00f5\7\27\2\2\u00f5\u00fa"+ + "\5\20\t\2\u00f6\u00f7\7\60\2\2\u00f7\u00f9\5\20\t\2\u00f8\u00f6\3\2\2"+ + "\2\u00f9\u00fc\3\2\2\2\u00fa\u00f8\3\2\2\2\u00fa\u00fb\3\2\2\2\u00fb\u00fd"+ + "\3\2\2\2\u00fc\u00fa\3\2\2\2\u00fd\u00fe\7\61\2\2\u00fe\17\3\2\2\2\u00ff"+ + "\u0100\5\34\17\2\u0100\21\3\2\2\2\u0101\u0105\7\n\2\2\u0102\u0103\5\24"+ + "\13\2\u0103\u0104\7\61\2\2\u0104\u0106\3\2\2\2\u0105\u0102\3\2\2\2\u0106"+ + "\u0107\3\2\2\2\u0107\u0105\3\2\2\2\u0107\u0108\3\2\2\2\u0108\23\3\2\2"+ + "\2\u0109\u010a\5\b\5\2\u010a\u010b\7\63\2\2\u010b\u010c\5\30\r\2\u010c"+ + "\25\3\2\2\2\u010d\u010e\7\t\2\2\u010e\u010f\79\2\2\u010f\u0110\5\34\17"+ + "\2\u0110\u0111\7:\2\2\u0111\27\3\2\2\2\u0112\u011d\5\32\16\2\u0113\u0114"+ + "\5 \21\2\u0114\u0115\5\32\16\2\u0115\u011d\3\2\2\2\u0116\u011d\5\b\5\2"+ + "\u0117\u0118\5 \21\2\u0118\u0119\5\b\5\2\u0119\u011d\3\2\2\2\u011a\u011d"+ + "\5$\23\2\u011b\u011d\5\26\f\2\u011c\u0112\3\2\2\2\u011c\u0113\3\2\2\2"+ + "\u011c\u0116\3\2\2\2\u011c\u0117\3\2\2\2\u011c\u011a\3\2\2\2\u011c\u011b"+ + "\3\2\2\2\u011d\31\3\2\2\2\u011e\u0121\5\34\17\2\u011f\u0121\5\36\20\2"+ + "\u0120\u011e\3\2\2\2\u0120\u011f\3\2\2\2\u0121\33\3\2\2\2\u0122\u0123"+ + "\7Q\2\2\u0123\35\3\2\2\2\u0124\u0125\7R\2\2\u0125\37\3\2\2\2\u0126\u0127"+ + "\t\2\2\2\u0127!\3\2\2\2\u0128\u0129\t\3\2\2\u0129#\3\2\2\2\u012a\u012b"+ + "\7P\2\2\u012b%\3\2\2\2\u012c\u0130\7&\2\2\u012d\u012e\5(\25\2\u012e\u012f"+ + "\7\61\2\2\u012f\u0131\3\2\2\2\u0130\u012d\3\2\2\2\u0131\u0132\3\2\2\2"+ + "\u0132\u0130\3\2\2\2\u0132\u0133\3\2\2\2\u0133\'\3\2\2\2\u0134\u0135\5"+ + "\b\5\2\u0135\u0139\7\63\2\2\u0136\u013a\5.\30\2\u0137\u013a\5*\26\2\u0138"+ + "\u013a\5,\27\2\u0139\u0136\3\2\2\2\u0139\u0137\3\2\2\2\u0139\u0138\3\2"+ + "\2\2\u013a)\3\2\2\2\u013b\u013d\7\22\2\2\u013c\u013e\5f\64\2\u013d\u013c"+ + "\3\2\2\2\u013d\u013e\3\2\2\2\u013e\u013f\3\2\2\2\u013f\u0140\7\62\2\2"+ + "\u0140\u0141\5r:\2\u0141+\3\2\2\2\u0142\u0144\7\36\2\2\u0143\u0145\5f"+ + "\64\2\u0144\u0143\3\2\2\2\u0144\u0145\3\2\2\2\u0145-\3\2\2\2\u0146\u014a"+ + "\5\60\31\2\u0147\u014a\58\35\2\u0148\u014a\5Z.\2\u0149\u0146\3\2\2\2\u0149"+ + "\u0147\3\2\2\2\u0149\u0148\3\2\2\2\u014a/\3\2\2\2\u014b\u0150\5\62\32"+ + "\2\u014c\u0150\5\64\33\2\u014d\u0150\5\66\34\2\u014e\u0150\5<\37\2\u014f"+ + "\u014b\3\2\2\2\u014f\u014c\3\2\2\2\u014f\u014d\3\2\2\2\u014f\u014e\3\2"+ + "\2\2\u0150\61\3\2\2\2\u0151\u0152\79\2\2\u0152\u0153\5l\67\2\u0153\u0154"+ + "\7:\2\2\u0154\63\3\2\2\2\u0155\u0156\5\30\r\2\u0156\u0157\7B\2\2\u0157"+ + "\u0158\5\30\r\2\u0158\65\3\2\2\2\u0159\u015c\5\b\5\2\u015a\u015c\t\4\2"+ + "\2\u015b\u0159\3\2\2\2\u015b\u015a\3\2\2\2\u015c\67\3\2\2\2\u015d\u015e"+ + "\7\35\2\2\u015e\u0161\5:\36\2\u015f\u0161\5:\36\2\u0160\u015d\3\2\2\2"+ + "\u0160\u015f\3\2\2\2\u01619\3\2\2\2\u0162\u0167\5> \2\u0163\u0167\5F$"+ + "\2\u0164\u0167\5T+\2\u0165\u0167\5X-\2\u0166\u0162\3\2\2\2\u0166\u0163"+ + "\3\2\2\2\u0166\u0164\3\2\2\2\u0166\u0165\3\2\2\2\u0167;\3\2\2\2\u0168"+ + "\u0169\7H\2\2\u0169\u016c\7;\2\2\u016a\u016d\5\b\5\2\u016b\u016d\5\32"+ + "\16\2\u016c\u016a\3\2\2\2\u016c\u016b\3\2\2\2\u016d\u016e\3\2\2\2\u016e"+ + "\u016f\7=\2\2\u016f=\3\2\2\2\u0170\u0171\7\4\2\2\u0171\u0172\7;\2\2\u0172"+ + "\u0173\5@!\2\u0173\u0174\7=\2\2\u0174\u0175\7\33\2\2\u0175\u0176\5D#\2"+ + "\u0176\u017f\3\2\2\2\u0177\u0178\7\4\2\2\u0178\u0179\7<\2\2\u0179\u017a"+ + "\5@!\2\u017a\u017b\7>\2\2\u017b\u017c\7\33\2\2\u017c\u017d\5D#\2\u017d"+ + "\u017f\3\2\2\2\u017e\u0170\3\2\2\2\u017e\u0177\3\2\2\2\u017f?\3\2\2\2"+ + "\u0180\u0185\5B\"\2\u0181\u0182\7\60\2\2\u0182\u0184\5B\"\2\u0183\u0181"+ + "\3\2\2\2\u0184\u0187\3\2\2\2\u0185\u0183\3\2\2\2\u0185\u0186\3\2\2\2\u0186"+ + "A\3\2\2\2\u0187\u0185\3\2\2\2\u0188\u0189\5\60\31\2\u0189C\3\2\2\2\u018a"+ + "\u018b\5.\30\2\u018bE\3\2\2\2\u018c\u018e\7!\2\2\u018d\u018f\5H%\2\u018e"+ + "\u018d\3\2\2\2\u018e\u018f\3\2\2\2\u018f\u0190\3\2\2\2\u0190\u0191\7\17"+ + "\2\2\u0191G\3\2\2\2\u0192\u0195\5J&\2\u0193\u0194\7\61\2\2\u0194\u0196"+ + "\5N(\2\u0195\u0193\3\2\2\2\u0195\u0196\3\2\2\2\u0196\u0199\3\2\2\2\u0197"+ + "\u0199\5N(\2\u0198\u0192\3\2\2\2\u0198\u0197\3\2\2\2\u0199I\3\2\2\2\u019a"+ + "\u019f\5L\'\2\u019b\u019c\7\61\2\2\u019c\u019e\5L\'\2\u019d\u019b\3\2"+ + "\2\2\u019e\u01a1\3\2\2\2\u019f\u019d\3\2\2\2\u019f\u01a0\3\2\2\2\u01a0"+ + "K\3\2\2\2\u01a1\u019f\3\2\2\2\u01a2\u01a3\5l\67\2\u01a3\u01a4\7\62\2\2"+ + "\u01a4\u01a5\5.\30\2\u01a5M\3\2\2\2\u01a6\u01a7\7\7\2\2\u01a7\u01a8\5"+ + "P)\2\u01a8\u01a9\7\33\2\2\u01a9\u01ae\5R*\2\u01aa\u01ab\7\61\2\2\u01ab"+ + "\u01ad\5R*\2\u01ac\u01aa\3\2\2\2\u01ad\u01b0\3\2\2\2\u01ae\u01ac\3\2\2"+ + "\2\u01ae\u01af\3\2\2\2\u01afO\3\2\2\2\u01b0\u01ae\3\2\2\2\u01b1\u01b2"+ + "\5\b\5\2\u01b2\u01b3\7\62\2\2\u01b3\u01b4\5\66\34\2\u01b4\u01b7\3\2\2"+ + "\2\u01b5\u01b7\5\66\34\2\u01b6\u01b1\3\2\2\2\u01b6\u01b5\3\2\2\2\u01b7"+ + "Q\3\2\2\2\u01b8\u01b9\5n8\2\u01b9\u01ba\7\62\2\2\u01ba\u01bb\79\2\2\u01bb"+ + "\u01bc\5H%\2\u01bc\u01bd\7:\2\2\u01bdS\3\2\2\2\u01be\u01bf\7#\2\2\u01bf"+ + "\u01c0\7\33\2\2\u01c0\u01c1\5V,\2\u01c1U\3\2\2\2\u01c2\u01c3\5\60\31\2"+ + "\u01c3W\3\2\2\2\u01c4\u01c5\7\20\2\2\u01c5\u01c6\7\33\2\2\u01c6\u01c9"+ + "\5.\30\2\u01c7\u01c9\7\20\2\2\u01c8\u01c4\3\2\2\2\u01c8\u01c7\3\2\2\2"+ + "\u01c9Y\3\2\2\2\u01ca\u01cb\7?\2\2\u01cb\u01cc\5\66\34\2\u01cc[\3\2\2"+ + "\2\u01cd\u01ce\7(\2\2\u01ce\u01d3\5^\60\2\u01cf\u01d0\7\61\2\2\u01d0\u01d2"+ + "\5^\60\2\u01d1\u01cf\3\2\2\2\u01d2\u01d5\3\2\2\2\u01d3\u01d1\3\2\2\2\u01d3"+ + "\u01d4\3\2\2\2\u01d4\u01d6\3\2\2\2\u01d5\u01d3\3\2\2\2\u01d6\u01d7\7\61"+ + "\2\2\u01d7]\3\2\2\2\u01d8\u01d9\5l\67\2\u01d9\u01da\7\62\2\2\u01da\u01db"+ + "\5.\30\2\u01db_\3\2\2\2\u01dc\u01dd\5b\62\2\u01dd\u01de\7\61\2\2\u01de"+ + "a\3\2\2\2\u01df\u01e2\5d\63\2\u01e0\u01e2\5p9\2\u01e1\u01df\3\2\2\2\u01e1"+ + "\u01e0\3\2\2\2\u01e2c\3\2\2\2\u01e3\u01e4\7\36\2\2\u01e4\u01e6\5\b\5\2"+ + "\u01e5\u01e7\5f\64\2\u01e6\u01e5\3\2\2\2\u01e6\u01e7\3\2\2\2\u01e7\u01e8"+ + "\3\2\2\2\u01e8\u01e9\7\61\2\2\u01e9\u01ea\5\n\6\2\u01eae\3\2\2\2\u01eb"+ + "\u01ec\79\2\2\u01ec\u01f1\5h\65\2\u01ed\u01ee\7\61\2\2\u01ee\u01f0\5h"+ + "\65\2\u01ef\u01ed\3\2\2\2\u01f0\u01f3\3\2\2\2\u01f1\u01ef\3\2\2\2\u01f1"+ + "\u01f2\3\2\2\2\u01f2\u01f4\3\2\2\2\u01f3\u01f1\3\2\2\2\u01f4\u01f5\7:"+ + "\2\2\u01f5g\3\2\2\2\u01f6\u01fe\5j\66\2\u01f7\u01f8\7(\2\2\u01f8\u01fe"+ + "\5j\66\2\u01f9\u01fa\7\22\2\2\u01fa\u01fe\5j\66\2\u01fb\u01fc\7\36\2\2"+ + "\u01fc\u01fe\5j\66\2\u01fd\u01f6\3\2\2\2\u01fd\u01f7\3\2\2\2\u01fd\u01f9"+ + "\3\2\2\2\u01fd\u01fb\3\2\2\2\u01fei\3\2\2\2\u01ff\u0200\5l\67\2\u0200"+ + "\u0201\7\62\2\2\u0201\u0202\5\66\34\2\u0202k\3\2\2\2\u0203\u0208\5\b\5"+ + "\2\u0204\u0205\7\60\2\2\u0205\u0207\5\b\5\2\u0206\u0204\3\2\2\2\u0207"+ + "\u020a\3\2\2\2\u0208\u0206\3\2\2\2\u0208\u0209\3\2\2\2\u0209m\3\2\2\2"+ + "\u020a\u0208\3\2\2\2\u020b\u0210\5\30\r\2\u020c\u020d\7\60\2\2\u020d\u020f"+ + "\5\30\r\2\u020e\u020c\3\2\2\2\u020f\u0212\3\2\2\2\u0210\u020e\3\2\2\2"+ + "\u0210\u0211\3\2\2\2\u0211o\3\2\2\2\u0212\u0210\3\2\2\2\u0213\u0214\7"+ + "\22\2\2\u0214\u0216\5\b\5\2\u0215\u0217\5f\64\2\u0216\u0215\3\2\2\2\u0216"+ + "\u0217\3\2\2\2\u0217\u0218\3\2\2\2\u0218\u0219\7\62\2\2\u0219\u021a\5"+ + "r:\2\u021a\u021b\7\61\2\2\u021b\u021c\5\n\6\2\u021cq\3\2\2\2\u021d\u021e"+ + "\5\66\34\2\u021es\3\2\2\2\u021f\u0220\5\20\t\2\u0220\u0221\7\62\2\2\u0221"+ + "\u0222\5v<\2\u0222\u0225\3\2\2\2\u0223\u0225\5v<\2\u0224\u021f\3\2\2\2"+ + "\u0224\u0223\3\2\2\2\u0225u\3\2\2\2\u0226\u0229\5x=\2\u0227\u0229\5\u00a6"+ + "T\2\u0228\u0226\3\2\2\2\u0228\u0227\3\2\2\2\u0229w\3\2\2\2\u022a\u022f"+ + "\5z>\2\u022b\u022f\5\u009aN\2\u022c\u022f\5\u00a0Q\2\u022d\u022f\5\u00a2"+ + "R\2\u022e\u022a\3\2\2\2\u022e\u022b\3\2\2\2\u022e\u022c\3\2\2\2\u022e"+ + "\u022d\3\2\2\2\u022fy\3\2\2\2\u0230\u0231\5|?\2\u0231\u0232\7/\2\2\u0232"+ + "\u0233\5~@\2\u0233{\3\2\2\2\u0234\u0235\7@\2\2\u0235\u0238\5\b\5\2\u0236"+ + "\u0238\5\b\5\2\u0237\u0234\3\2\2\2\u0237\u0236\3\2\2\2\u0238\u0254\3\2"+ + "\2\2\u0239\u023a\7;\2\2\u023a\u023f\5~@\2\u023b\u023c\7\60\2\2\u023c\u023e"+ + "\5~@\2\u023d\u023b\3\2\2\2\u023e\u0241\3\2\2\2\u023f\u023d\3\2\2\2\u023f"+ + "\u0240\3\2\2\2\u0240\u0242\3\2\2\2\u0241\u023f\3\2\2\2\u0242\u0243\7="+ + "\2\2\u0243\u0253\3\2\2\2\u0244\u0245\7<\2\2\u0245\u024a\5~@\2\u0246\u0247"+ + "\7\60\2\2\u0247\u0249\5~@\2\u0248\u0246\3\2\2\2\u0249\u024c\3\2\2\2\u024a"+ + "\u0248\3\2\2\2\u024a\u024b\3\2\2\2\u024b\u024d\3\2\2\2\u024c\u024a\3\2"+ + "\2\2\u024d\u024e\7>\2\2\u024e\u0253\3\2\2\2\u024f\u0250\7A\2\2\u0250\u0253"+ + "\5\b\5\2\u0251\u0253\7?\2\2\u0252\u0239\3\2\2\2\u0252\u0244\3\2\2\2\u0252"+ + "\u024f\3\2\2\2\u0252\u0251\3\2\2\2\u0253\u0256\3\2\2\2\u0254\u0252\3\2"+ + "\2\2\u0254\u0255\3\2\2\2\u0255}\3\2\2\2\u0256\u0254\3\2\2\2\u0257\u025b"+ + "\5\u0082B\2\u0258\u0259\5\u0080A\2\u0259\u025a\5~@\2\u025a\u025c\3\2\2"+ + "\2\u025b\u0258\3\2\2\2\u025b\u025c\3\2\2\2\u025c\177\3\2\2\2\u025d\u025e"+ + "\t\5\2\2\u025e\u0081\3\2\2\2\u025f\u0263\5\u0086D\2\u0260\u0261\5\u0084"+ + "C\2\u0261\u0262\5\u0082B\2\u0262\u0264\3\2\2\2\u0263\u0260\3\2\2\2\u0263"+ + "\u0264\3\2\2\2\u0264\u0083\3\2\2\2\u0265\u0266\t\6\2\2\u0266\u0085\3\2"+ + "\2\2\u0267\u026b\5\u008aF\2\u0268\u0269\5\u0088E\2\u0269\u026a\5\u0086"+ + "D\2\u026a\u026c\3\2\2\2\u026b\u0268\3\2\2\2\u026b\u026c\3\2\2\2\u026c"+ + "\u0087\3\2\2\2\u026d\u026e\t\7\2\2\u026e\u0089\3\2\2\2\u026f\u0271\t\2"+ + "\2\2\u0270\u026f\3\2\2\2\u0270\u0271\3\2\2\2\u0271\u0272\3\2\2\2\u0272"+ + "\u0273\5\u008cG\2\u0273\u008b\3\2\2\2\u0274\u0280\5|?\2\u0275\u0276\7"+ + "9\2\2\u0276\u0277\5~@\2\u0277\u0278\7:\2\2\u0278\u0280\3\2\2\2\u0279\u0280"+ + "\5\u0090I\2\u027a\u0280\5\u008eH\2\u027b\u0280\5\u0094K\2\u027c\u027d"+ + "\7\32\2\2\u027d\u0280\5\u008cG\2\u027e\u0280\5\"\22\2\u027f\u0274\3\2"+ + "\2\2\u027f\u0275\3\2\2\2\u027f\u0279\3\2\2\2\u027f\u027a\3\2\2\2\u027f"+ + "\u027b\3\2\2\2\u027f\u027c\3\2\2\2\u027f\u027e\3\2\2\2\u0280\u008d\3\2"+ + "\2\2\u0281\u0286\5\32\16\2\u0282\u0286\5\26\f\2\u0283\u0286\5$\23\2\u0284"+ + "\u0286\7\31\2\2\u0285\u0281\3\2\2\2\u0285\u0282\3\2\2\2\u0285\u0283\3"+ + "\2\2\2\u0285\u0284\3\2\2\2\u0286\u008f\3\2\2\2\u0287\u0288\5\b\5\2\u0288"+ + "\u0289\79\2\2\u0289\u028a\5\u0092J\2\u028a\u028b\7:\2\2\u028b\u0091\3"+ + "\2\2\2\u028c\u0291\5\u009cO\2\u028d\u028e\7\60\2\2\u028e\u0290\5\u009c"+ + "O\2\u028f\u028d\3\2\2\2\u0290\u0293\3\2\2\2\u0291\u028f\3\2\2\2\u0291"+ + "\u0292\3\2\2\2\u0292\u0093\3\2\2\2\u0293\u0291\3\2\2\2\u0294\u0295\7;"+ + "\2\2\u0295\u0296\5\u0096L\2\u0296\u0297\7=\2\2\u0297\u029d\3\2\2\2\u0298"+ + "\u0299\7<\2\2\u0299\u029a\5\u0096L\2\u029a\u029b\7>\2\2\u029b\u029d\3"+ + "\2\2\2\u029c\u0294\3\2\2\2\u029c\u0298\3\2\2\2\u029d\u0095\3\2\2\2\u029e"+ + "\u02a3\5\u0098M\2\u029f\u02a0\7\60\2\2\u02a0\u02a2\5\u0098M\2\u02a1\u029f"+ + "\3\2\2\2\u02a2\u02a5\3\2\2\2\u02a3\u02a1\3\2\2\2\u02a3\u02a4\3\2\2\2\u02a4"+ + "\u02a8\3\2\2\2\u02a5\u02a3\3\2\2\2\u02a6\u02a8\3\2\2\2\u02a7\u029e\3\2"+ + "\2\2\u02a7\u02a6\3\2\2\2\u02a8\u0097\3\2\2\2\u02a9\u02ac\5~@\2\u02aa\u02ab"+ + "\7B\2\2\u02ab\u02ad\5~@\2\u02ac\u02aa\3\2\2\2\u02ac\u02ad\3\2\2\2\u02ad"+ + "\u0099\3\2\2\2\u02ae\u02b3\5\b\5\2\u02af\u02b0\79\2\2\u02b0\u02b1\5\u0092"+ + "J\2\u02b1\u02b2\7:\2\2\u02b2\u02b4\3\2\2\2\u02b3\u02af\3\2\2\2\u02b3\u02b4"+ + "\3\2\2\2\u02b4\u009b\3\2\2\2\u02b5\u02b9\5~@\2\u02b6\u02b8\5\u009eP\2"+ + "\u02b7\u02b6\3\2\2\2\u02b8\u02bb\3\2\2\2\u02b9\u02b7\3\2\2\2\u02b9\u02ba"+ + "\3\2\2\2\u02ba\u009d\3\2\2\2\u02bb\u02b9\3\2\2\2\u02bc\u02bd\7\62\2\2"+ + "\u02bd\u02be\5~@\2\u02be\u009f\3\2\2\2\u02bf\u02c0\7\23\2\2\u02c0\u02c1"+ + "\5\20\t\2\u02c1\u00a1\3\2\2\2\u02c2\u02c3\3\2\2\2\u02c3\u00a3\3\2\2\2"+ + "\u02c4\u02c5\3\2\2\2\u02c5\u00a5\3\2\2\2\u02c6\u02cb\5\u00a8U\2\u02c7"+ + "\u02cb\5\u00acW\2\u02c8\u02cb\5\u00b4[\2\u02c9\u02cb\5\u00c2b\2\u02ca"+ + "\u02c6\3\2\2\2\u02ca\u02c7\3\2\2\2\u02ca\u02c8\3\2\2\2\u02ca\u02c9\3\2"+ + "\2\2\u02cb\u00a7\3\2\2\2\u02cc\u02cd\7\5\2\2\u02cd\u02ce\5\u00aaV\2\u02ce"+ + "\u02cf\7\17\2\2\u02cf\u00a9\3\2\2\2\u02d0\u02d5\5t;\2\u02d1\u02d2\7\61"+ + "\2\2\u02d2\u02d4\5t;\2\u02d3\u02d1\3\2\2\2\u02d4\u02d7\3\2\2\2\u02d5\u02d3"+ + "\3\2\2\2\u02d5\u02d6\3\2\2\2\u02d6\u00ab\3\2\2\2\u02d7\u02d5\3\2\2\2\u02d8"+ + "\u02db\5\u00aeX\2\u02d9\u02db\5\u00b0Y\2\u02da\u02d8\3\2\2\2\u02da\u02d9"+ + "\3\2\2\2\u02db\u00ad\3\2\2\2\u02dc\u02dd\7\24\2\2\u02dd\u02de\5~@\2\u02de"+ + "\u02df\7$\2\2\u02df\u02e2\5t;\2\u02e0\u02e1\7\16\2\2\u02e1\u02e3\5t;\2"+ + "\u02e2\u02e0\3\2\2\2\u02e2\u02e3\3\2\2\2\u02e3\u00af\3\2\2\2\u02e4\u02e5"+ + "\7\7\2\2\u02e5\u02e6\5~@\2\u02e6\u02e7\7\33\2\2\u02e7\u02ec\5\u00b2Z\2"+ + "\u02e8\u02e9\7\61\2\2\u02e9\u02eb\5\u00b2Z\2\u02ea\u02e8\3\2\2\2\u02eb"+ + "\u02ee\3\2\2\2\u02ec\u02ea\3\2\2\2\u02ec\u02ed\3\2\2\2\u02ed\u02f2\3\2"+ + "\2\2\u02ee\u02ec\3\2\2\2\u02ef\u02f0\7\61\2\2\u02f0\u02f1\7\16\2\2\u02f1"+ + "\u02f3\5\u00aaV\2\u02f2\u02ef\3\2\2\2\u02f2\u02f3\3\2\2\2\u02f3\u02f4"+ + "\3\2\2\2\u02f4\u02f5\7\17\2\2\u02f5\u00b1\3\2\2\2\u02f6\u02f7\5n8\2\u02f7"+ + "\u02f8\7\62\2\2\u02f8\u02f9\5t;\2\u02f9\u00b3\3\2\2\2\u02fa\u02fe\5\u00b6"+ + "\\\2\u02fb\u02fe\5\u00b8]\2\u02fc\u02fe\5\u00ba^\2\u02fd\u02fa\3\2\2\2"+ + "\u02fd\u02fb\3\2\2\2\u02fd\u02fc\3\2\2\2\u02fe\u00b5\3\2\2\2\u02ff\u0300"+ + "\7)\2\2\u0300\u0301\5~@\2\u0301\u0302\7\f\2\2\u0302\u0303\5t;\2\u0303"+ + "\u00b7\3\2\2\2\u0304\u0305\7\"\2\2\u0305\u0306\5\u00aaV\2\u0306\u0307"+ + "\7\'\2\2\u0307\u0308\5~@\2\u0308\u00b9\3\2\2\2\u0309\u030a\7\21\2\2\u030a"+ + "\u030b\5\b\5\2\u030b\u030c\7/\2\2\u030c\u030d\5\u00bc_\2\u030d\u030e\7"+ + "\f\2\2\u030e\u030f\5t;\2\u030f\u00bb\3\2\2\2\u0310\u0311\5\u00be`\2\u0311"+ + "\u0312\t\b\2\2\u0312\u0313\5\u00c0a\2\u0313\u00bd\3\2\2\2\u0314\u0315"+ + "\5~@\2\u0315\u00bf\3\2\2\2\u0316\u0317\5~@\2\u0317\u00c1\3\2\2\2\u0318"+ + "\u0319\7*\2\2\u0319\u031a\5\u00c4c\2\u031a\u031b\7\f\2\2\u031b\u031c\5"+ + "t;\2\u031c\u00c3\3\2\2\2\u031d\u0322\5|?\2\u031e\u031f\7\60\2\2\u031f"+ + "\u0321\5|?\2\u0320\u031e\3\2\2\2\u0321\u0324\3\2\2\2\u0322\u0320\3\2\2"+ + "\2\u0322\u0323\3\2\2\2\u0323\u00c5\3\2\2\2\u0324\u0322\3\2\2\2C\u00ca"+ + "\u00d6\u00de\u00e9\u00eb\u00fa\u0107\u011c\u0120\u0132\u0139\u013d\u0144"+ + "\u0149\u014f\u015b\u0160\u0166\u016c\u017e\u0185\u018e\u0195\u0198\u019f"+ + "\u01ae\u01b6\u01c8\u01d3\u01e1\u01e6\u01f1\u01fd\u0208\u0210\u0216\u0224"+ + "\u0228\u022e\u0237\u023f\u024a\u0252\u0254\u025b\u0263\u026b\u0270\u027f"+ + "\u0285\u0291\u029c\u02a3\u02a7\u02ac\u02b3\u02b9\u02ca\u02d5\u02da\u02e2"+ + "\u02ec\u02f2\u02fd\u0322"; + public static final ATN _ATN = + new ATNDeserializer().deserialize(_serializedATN.toCharArray()); + static { + _decisionToDFA = new DFA[_ATN.getNumberOfDecisions()]; + for (int i = 0; i < _ATN.getNumberOfDecisions(); i++) { + _decisionToDFA[i] = new DFA(_ATN.getDecisionState(i), i); + } + } +} \ No newline at end of file diff --git a/examples/Example - Pascal Symbol Table/.vscode/launch.json b/examples/Example - Pascal Symbol Table/.vscode/launch.json new file mode 100644 index 0000000..ee9b847 --- /dev/null +++ b/examples/Example - Pascal Symbol Table/.vscode/launch.json @@ -0,0 +1,15 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "name": "antlr4", + "type": "antlr-debug", + "request": "launch", + "input": "code-pascal.txt", + "grammar": "pascal.g4", + "startRule": "start", + "printParseTree": true, + "visualParseTree": true + } + ] +} \ No newline at end of file diff --git a/examples/Example - Pascal Symbol Table/code-pascal.txt b/examples/Example - Pascal Symbol Table/code-pascal.txt new file mode 100644 index 0000000..cd8bab0 --- /dev/null +++ b/examples/Example - Pascal Symbol Table/code-pascal.txt @@ -0,0 +1,15 @@ +PROGRAM GREETINGS; +CONST +MESSAGE = ' Welcome to the world of Pascal '; +TEST = 'TEST'; +TYPE +NAME= STRING; + +VAR +FIRSTNAME, SURNAME: NAME; + +BEGIN + FIRSTNAME:='John'; + SURNAME:='Doe'; + WRITELN(MESSAGE, ' ', FIRSTNAME, ' ', SURNAME); +END. \ No newline at end of file diff --git a/examples/Example - Pascal Symbol Table/output.json b/examples/Example - Pascal Symbol Table/output.json new file mode 100644 index 0000000..13758d4 --- /dev/null +++ b/examples/Example - Pascal Symbol Table/output.json @@ -0,0 +1 @@ +{"nodeId":"block","version":1,"tags":{},"name":"Program","children":[{"nodeId":"label","version":1,"tags":{},"name":"GREETINGS"},{"nodeId":"block","version":1,"tags":{},"name":"Block","children":[{"nodeId":"block","version":1,"tags":{},"name":"ConstantDefinition","children":[{"nodeId":"block","version":1,"tags":{},"name":"ConstantDefinition","children":[{"nodeId":"identifier","version":1,"tags":{},"type":"{\"typeID\":\"Type\"}","name":"MESSAGE"},{"nodeId":"block","version":1,"tags":{},"name":"constant","children":[{"nodeId":"value","version":1,"tags":{},"value":"' Welcome to the world of Pascal '","type":"{\"typeID\":\"Type\"}"}]}]},{"nodeId":"block","version":1,"tags":{},"name":"ConstantDefinition","children":[{"nodeId":"identifier","version":1,"tags":{},"type":"{\"typeID\":\"Type\"}","name":"TEST"},{"nodeId":"block","version":1,"tags":{},"name":"constant","children":[{"nodeId":"value","version":1,"tags":{},"value":"'TEST'","type":"{\"typeID\":\"Type\"}"}]}]}]},{"nodeId":"block","version":1,"tags":{},"name":"TypeDefinition","children":[{"nodeId":"block","version":1,"tags":{},"name":"typeDefinition","children":[{"nodeId":"block","version":1,"tags":{},"name":"type","children":[{"nodeId":"block","version":1,"tags":{},"name":"simpleType","children":[{"nodeId":"identifier","version":1,"tags":{},"type":"{\"typeID\":\"Type\"}","name":"string"}]}]},{"nodeId":"identifier","version":1,"tags":{},"type":"{\"typeID\":\"Type\"}","name":"NAME"}]}]},{"nodeId":"block","version":1,"tags":{},"name":"VariableDefinition","children":[{"nodeId":"block","version":1,"tags":{},"name":"variableDeclaration","children":[{"nodeId":"block","version":1,"tags":{},"name":"type","children":[{"nodeId":"block","version":1,"tags":{},"name":"simpleType","children":[{"nodeId":"block","version":1,"tags":{},"name":"typeIdentifier","children":[]}]}]},{"nodeId":"block","version":1,"tags":{},"name":"IdentifierList","children":[{"nodeId":"identifier","version":1,"tags":{},"type":"{\"typeID\":\"Type\"}","name":"FIRSTNAME"},{"nodeId":"identifier","version":1,"tags":{},"type":"{\"typeID\":\"Type\"}","name":"SURNAME"}]}]}]},{"nodeId":"block","version":1,"tags":{},"name":"CompoundStatement","children":[{"nodeId":"block","version":1,"tags":{},"name":"Statements","children":[{"nodeId":"block","version":1,"tags":{},"name":"Statement","children":[{"nodeId":"block","version":1,"tags":{},"name":"UnlabelledStatement","children":[{"nodeId":"block","version":1,"tags":{},"name":"SimpleStatement","children":[]}]}]},{"nodeId":"block","version":1,"tags":{},"name":"Statement","children":[{"nodeId":"block","version":1,"tags":{},"name":"UnlabelledStatement","children":[{"nodeId":"block","version":1,"tags":{},"name":"SimpleStatement","children":[]}]}]},{"nodeId":"block","version":1,"tags":{},"name":"Statement","children":[{"nodeId":"block","version":1,"tags":{},"name":"UnlabelledStatement","children":[{"nodeId":"block","version":1,"tags":{},"name":"SimpleStatement","children":[{"nodeId":"functionCall","version":1,"tags":{},"fn":"{\"nodeId\":\"identifier\",\"version\":1,\"tags\":{},\"type\":\"{\\\"typeID\\\":\\\"Type\\\"}\",\"name\":\"WRITELN\"}","args":"{\"nodeId\":\"parameterList\",\"version\":1,\"tags\":{},\"parameters\":[{\"nodeId\":\"unaryExpression\",\"version\":1,\"tags\":{}},{\"nodeId\":\"unaryExpression\",\"version\":1,\"tags\":{}},{\"nodeId\":\"unaryExpression\",\"version\":1,\"tags\":{}},{\"nodeId\":\"unaryExpression\",\"version\":1,\"tags\":{}},{\"nodeId\":\"unaryExpression\",\"version\":1,\"tags\":{}}]}"}]}]}]},{"nodeId":"block","version":1,"tags":{},"name":"Statement","children":[{"nodeId":"block","version":1,"tags":{},"name":"UnlabelledStatement","children":[{"nodeId":"block","version":1,"tags":{},"name":"SimpleStatement","children":[{"nodeId":"block","version":1,"tags":{},"name":"EmptyStatement","children":[]}]}]}]}]}]}]}]} \ No newline at end of file diff --git a/examples/Example - Pascal Symbol Table/package-lock.json b/examples/Example - Pascal Symbol Table/package-lock.json new file mode 100644 index 0000000..a712d9a --- /dev/null +++ b/examples/Example - Pascal Symbol Table/package-lock.json @@ -0,0 +1,12646 @@ +{ + "name": "@examples/pascal-symbol-table", + "version": "1.0.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "@examples/pascal-symbol-table", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "antlr4ts": "^0.5.0-alpha.4" + }, + "devDependencies": { + "@types/node": "^18.0.4", + "antlr4ts-cli": "^0.5.0-alpha.4", + "lerna": "^5.1.7", + "typescript": "^4.7.4" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz", + "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.18.6", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@gar/promisify": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", + "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", + "dev": true + }, + "node_modules/@hutson/parse-repository-url": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz", + "integrity": "sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@isaacs/string-locale-compare": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@isaacs/string-locale-compare/-/string-locale-compare-1.1.0.tgz", + "integrity": "sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ==", + "dev": true + }, + "node_modules/@lerna/add": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/add/-/add-5.4.3.tgz", + "integrity": "sha512-wBjBHX/A0nSiVGJDq5wNpqR+zrxKFREeKrqvIXGmAgcwpDjp76JLVhdSdQns+X+AYsf13NFaNhBqfGlF5SZNnQ==", + "dev": true, + "dependencies": { + "@lerna/bootstrap": "5.4.3", + "@lerna/command": "5.4.3", + "@lerna/filter-options": "5.4.3", + "@lerna/npm-conf": "5.4.3", + "@lerna/validation-error": "5.4.3", + "dedent": "^0.7.0", + "npm-package-arg": "8.1.1", + "p-map": "^4.0.0", + "pacote": "^13.6.1", + "semver": "^7.3.4" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/bootstrap": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/bootstrap/-/bootstrap-5.4.3.tgz", + "integrity": "sha512-9mruEpXD2p8mG9Feak0QzU+JcROsJ8J0MvY7gTGtUqQJqBIA6HGEYXQueHbcl+jGdZyTZOz139KsavPui55QEQ==", + "dev": true, + "dependencies": { + "@lerna/command": "5.4.3", + "@lerna/filter-options": "5.4.3", + "@lerna/has-npm-version": "5.4.3", + "@lerna/npm-install": "5.4.3", + "@lerna/package-graph": "5.4.3", + "@lerna/pulse-till-done": "5.4.3", + "@lerna/rimraf-dir": "5.4.3", + "@lerna/run-lifecycle": "5.4.3", + "@lerna/run-topologically": "5.4.3", + "@lerna/symlink-binary": "5.4.3", + "@lerna/symlink-dependencies": "5.4.3", + "@lerna/validation-error": "5.4.3", + "@npmcli/arborist": "5.3.0", + "dedent": "^0.7.0", + "get-port": "^5.1.1", + "multimatch": "^5.0.0", + "npm-package-arg": "8.1.1", + "npmlog": "^6.0.2", + "p-map": "^4.0.0", + "p-map-series": "^2.1.0", + "p-waterfall": "^2.1.1", + "semver": "^7.3.4" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/changed": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/changed/-/changed-5.4.3.tgz", + "integrity": "sha512-q1ARClN0pLZ53hBPiR4TJB6GGq17Yhwb6iKwQryZBWuOEc87NqqRtIPWswk5NISj2qcPQlbyrnB3RshwLkyo7w==", + "dev": true, + "dependencies": { + "@lerna/collect-updates": "5.4.3", + "@lerna/command": "5.4.3", + "@lerna/listable": "5.4.3", + "@lerna/output": "5.4.3" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/check-working-tree": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/check-working-tree/-/check-working-tree-5.4.3.tgz", + "integrity": "sha512-OnGqIDW8sRcAQDV8mdtvYIh0EIv2FXm+4/qKAveFhyDkWWpnUF/ZSIa/CFVHYoKFFzb5WOBouml2oqWPyFHhbA==", + "dev": true, + "dependencies": { + "@lerna/collect-uncommitted": "5.4.3", + "@lerna/describe-ref": "5.4.3", + "@lerna/validation-error": "5.4.3" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/child-process": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/child-process/-/child-process-5.4.3.tgz", + "integrity": "sha512-p7wJ8QT8kXHk4EAy/oyjCD603n1F61Tm4l6thF1h9MAw3ejSvvUZ0BKSg9vPoZ/YMAC9ZuVm1mFsyoi5RlvIHw==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "execa": "^5.0.0", + "strong-log-transformer": "^2.1.0" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/clean": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/clean/-/clean-5.4.3.tgz", + "integrity": "sha512-Kl04A5NqywbBf7azSt9UJqHzRCXogHNpEh3Yng5+Y4ggunP4zVabzdoYGdggS4AsbDuIOKECx9BmCiDwJ4Qv8g==", + "dev": true, + "dependencies": { + "@lerna/command": "5.4.3", + "@lerna/filter-options": "5.4.3", + "@lerna/prompt": "5.4.3", + "@lerna/pulse-till-done": "5.4.3", + "@lerna/rimraf-dir": "5.4.3", + "p-map": "^4.0.0", + "p-map-series": "^2.1.0", + "p-waterfall": "^2.1.1" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/cli": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/cli/-/cli-5.4.3.tgz", + "integrity": "sha512-avnRUZ51nSZMR+tOcMQZ61hnVbDNdmyaVRxfSLByH5OFY+KPnfaTPv1z4ub+rEtV2NTI5DYWAqxupNGLuu9bQQ==", + "dev": true, + "dependencies": { + "@lerna/global-options": "5.4.3", + "dedent": "^0.7.0", + "npmlog": "^6.0.2", + "yargs": "^16.2.0" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/collect-uncommitted": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/collect-uncommitted/-/collect-uncommitted-5.4.3.tgz", + "integrity": "sha512-/0u95DbwP1+orGifkPRqaIqD8Ui2vpy9KmeuHTui+4iR/ZvZbgIouMdOhH+fU9e5hfLF6geUKnEFjL+Lxa4qdg==", + "dev": true, + "dependencies": { + "@lerna/child-process": "5.4.3", + "chalk": "^4.1.0", + "npmlog": "^6.0.2" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/collect-updates": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/collect-updates/-/collect-updates-5.4.3.tgz", + "integrity": "sha512-TU3+hcwqHWKSK0J+NWNo5pjP7nnCzhnFfL/UfCG6oNAUb6PnmKSgZ9NqjOXja1WjJPrtFDIGoIYzLJZCePFyLw==", + "dev": true, + "dependencies": { + "@lerna/child-process": "5.4.3", + "@lerna/describe-ref": "5.4.3", + "minimatch": "^3.0.4", + "npmlog": "^6.0.2", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/command": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/command/-/command-5.4.3.tgz", + "integrity": "sha512-xBdbqcvHeWltH4QvWcmH9dKjWzD+KXfhSP0NBgwED8ZNMxSuzBz2OS3Ps8KbLemXNP8P0yhjoPgitGmxxeY/ow==", + "dev": true, + "dependencies": { + "@lerna/child-process": "5.4.3", + "@lerna/package-graph": "5.4.3", + "@lerna/project": "5.4.3", + "@lerna/validation-error": "5.4.3", + "@lerna/write-log-file": "5.4.3", + "clone-deep": "^4.0.1", + "dedent": "^0.7.0", + "execa": "^5.0.0", + "is-ci": "^2.0.0", + "npmlog": "^6.0.2" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/conventional-commits": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/conventional-commits/-/conventional-commits-5.4.3.tgz", + "integrity": "sha512-GHZdpCUMqalO692O7Mqj5idYftZWaCylb4TSPkHEU8xSfxtufp8lM+Q8Xxv35ymzs0pBrmzSLZIpIMQ9awDABg==", + "dev": true, + "dependencies": { + "@lerna/validation-error": "5.4.3", + "conventional-changelog-angular": "^5.0.12", + "conventional-changelog-core": "^4.2.4", + "conventional-recommended-bump": "^6.1.0", + "fs-extra": "^9.1.0", + "get-stream": "^6.0.0", + "npm-package-arg": "8.1.1", + "npmlog": "^6.0.2", + "pify": "^5.0.0", + "semver": "^7.3.4" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/create": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/create/-/create-5.4.3.tgz", + "integrity": "sha512-VLrcfjBNzhUie5tLWSEa203BljirEG7OH62lgoLqR9qA/FVozoWrRKmly/EVw8Q7+5UNw/ciTzXnbm0BPXl6tg==", + "dev": true, + "dependencies": { + "@lerna/child-process": "5.4.3", + "@lerna/command": "5.4.3", + "@lerna/npm-conf": "5.4.3", + "@lerna/validation-error": "5.4.3", + "dedent": "^0.7.0", + "fs-extra": "^9.1.0", + "globby": "^11.0.2", + "init-package-json": "^3.0.2", + "npm-package-arg": "8.1.1", + "p-reduce": "^2.1.0", + "pacote": "^13.6.1", + "pify": "^5.0.0", + "semver": "^7.3.4", + "slash": "^3.0.0", + "validate-npm-package-license": "^3.0.4", + "validate-npm-package-name": "^4.0.0", + "whatwg-url": "^8.4.0", + "yargs-parser": "20.2.4" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/create-symlink": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/create-symlink/-/create-symlink-5.4.3.tgz", + "integrity": "sha512-QxmKCHA5woed/qJjKNkOSgkbhhmPV3g61F499uVwPtyPivn9Y2mbeVPMQrLkb0CL9M6aJ7vE4fi6T5XMqsbNpg==", + "dev": true, + "dependencies": { + "cmd-shim": "^5.0.0", + "fs-extra": "^9.1.0", + "npmlog": "^6.0.2" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/describe-ref": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/describe-ref/-/describe-ref-5.4.3.tgz", + "integrity": "sha512-g3R5exjZy5MOcMPzgU8+t7sGEt4gGMKQLUFfg5NAceera6RGWUieY8OWL6jlacgyM4c8iyh15Tu14YwzL2DiBA==", + "dev": true, + "dependencies": { + "@lerna/child-process": "5.4.3", + "npmlog": "^6.0.2" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/diff": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/diff/-/diff-5.4.3.tgz", + "integrity": "sha512-MJKvy/XC2RpS/gqg7GguQsBv5rZm+S5P/kfnqhapXCniGviZfq+JfY5TQCsAP9umiybR2sB004K1Z7heyU8uMA==", + "dev": true, + "dependencies": { + "@lerna/child-process": "5.4.3", + "@lerna/command": "5.4.3", + "@lerna/validation-error": "5.4.3", + "npmlog": "^6.0.2" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/exec": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/exec/-/exec-5.4.3.tgz", + "integrity": "sha512-BLrva/KV6JWTV+7h7h+NQDsxpz0z1Nh99BUqqvZDzGIKMey4c1fo+CQGac77TsAophnv0ieFgHkSmrC6NXJa9g==", + "dev": true, + "dependencies": { + "@lerna/child-process": "5.4.3", + "@lerna/command": "5.4.3", + "@lerna/filter-options": "5.4.3", + "@lerna/profiler": "5.4.3", + "@lerna/run-topologically": "5.4.3", + "@lerna/validation-error": "5.4.3", + "p-map": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/filter-options": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/filter-options/-/filter-options-5.4.3.tgz", + "integrity": "sha512-581GE81BSWgS9za4tBv1nwZ2ImgH7UO3xil1b7xogvc/iGwM0MgOwt9f1MrS5ZOliNnme4cSZEGFe+QWPXCE4A==", + "dev": true, + "dependencies": { + "@lerna/collect-updates": "5.4.3", + "@lerna/filter-packages": "5.4.3", + "dedent": "^0.7.0", + "npmlog": "^6.0.2" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/filter-packages": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/filter-packages/-/filter-packages-5.4.3.tgz", + "integrity": "sha512-W5OVMUjXh/Zii17FCSbIf/6Q3Bo5ETMAWMZ6EpHSU99M0kdvgpjXj3VUSjiCzwccqIa2EZjaua0RWSbOtfZCVg==", + "dev": true, + "dependencies": { + "@lerna/validation-error": "5.4.3", + "multimatch": "^5.0.0", + "npmlog": "^6.0.2" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/get-npm-exec-opts": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/get-npm-exec-opts/-/get-npm-exec-opts-5.4.3.tgz", + "integrity": "sha512-q/3zQvlwTpAh6HVtVGOTuCGIgkhtCPK9CcHRo09c0Q3LQk5MsZYkPmJe0ujU1Gf7pILzQA5tnCy56eWT5uMPUg==", + "dev": true, + "dependencies": { + "npmlog": "^6.0.2" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/get-packed": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/get-packed/-/get-packed-5.4.3.tgz", + "integrity": "sha512-y97plqJmrTwnZE9EH0MhtwnVHOF/revnH95fD2UyUpGrxdAFvbE7rs3A9zrSxurFLn4q6qWBKONwQLccQSTBTA==", + "dev": true, + "dependencies": { + "fs-extra": "^9.1.0", + "ssri": "^9.0.1", + "tar": "^6.1.0" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/github-client": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/github-client/-/github-client-5.4.3.tgz", + "integrity": "sha512-P/i64IUDw72YvS5lTciCLAxvjliN2lZSDZSqH59kQ4m2dma0dChiLTreq1Ei8xyY124oacARwxxQCN95m2u3nw==", + "dev": true, + "dependencies": { + "@lerna/child-process": "5.4.3", + "@octokit/plugin-enterprise-rest": "^6.0.1", + "@octokit/rest": "^19.0.3", + "git-url-parse": "^12.0.0", + "npmlog": "^6.0.2" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/gitlab-client": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/gitlab-client/-/gitlab-client-5.4.3.tgz", + "integrity": "sha512-EEr5OkdiS7ev2X9jaknr3UUksPajij1nGFFhPXpAexAEkJYSRjdSvfPtd4ssTViIHMGHKMcNcGrMW+ESly1lpw==", + "dev": true, + "dependencies": { + "node-fetch": "^2.6.1", + "npmlog": "^6.0.2", + "whatwg-url": "^8.4.0" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/global-options": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/global-options/-/global-options-5.4.3.tgz", + "integrity": "sha512-e0TVIHLl0IULJWfLA9uGOIYnI3MVAjTp9I0p/9u3fC62dQxJBhoy5/9+y2zuu85MTB+4XTVi2m8G99H9pfBhMA==", + "dev": true, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/has-npm-version": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/has-npm-version/-/has-npm-version-5.4.3.tgz", + "integrity": "sha512-Vu5etw5vXEbYLOO26lO3u5gEjX9vWUjqLTQfNEnJxflaH9JWw2NNJ/6nXG0hqc8kEmMdhabrw+FHSKaO9ZQygw==", + "dev": true, + "dependencies": { + "@lerna/child-process": "5.4.3", + "semver": "^7.3.4" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/import": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/import/-/import-5.4.3.tgz", + "integrity": "sha512-SRUyITjhqbN7JOrUHskaqbppiq8yqpSLw1+tseT3D3HdYQQjvQzR1GjBVm+LZKlHRi9qqku9fqUNQf9AqbtysA==", + "dev": true, + "dependencies": { + "@lerna/child-process": "5.4.3", + "@lerna/command": "5.4.3", + "@lerna/prompt": "5.4.3", + "@lerna/pulse-till-done": "5.4.3", + "@lerna/validation-error": "5.4.3", + "dedent": "^0.7.0", + "fs-extra": "^9.1.0", + "p-map-series": "^2.1.0" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/info": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/info/-/info-5.4.3.tgz", + "integrity": "sha512-cO0jWK2zcU9fsnoR2aqYU1IqNxWBkLvvQcTiodPqMsTAVh2F8cbwUXptWJyvsyCkKqO86axa7h6AbeF9rHRj0g==", + "dev": true, + "dependencies": { + "@lerna/command": "5.4.3", + "@lerna/output": "5.4.3", + "envinfo": "^7.7.4" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/init": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/init/-/init-5.4.3.tgz", + "integrity": "sha512-cicNfMuswF+8S5RhbvCnXIrdNWTS5/ajwGYOv85x/Gu2FOJ1eqJ4W4Ai6ybANBefErE4+7aSGl/kt/+sRvTeTw==", + "dev": true, + "dependencies": { + "@lerna/child-process": "5.4.3", + "@lerna/command": "5.4.3", + "@lerna/project": "5.4.3", + "fs-extra": "^9.1.0", + "p-map": "^4.0.0", + "write-json-file": "^4.3.0" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/link": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/link/-/link-5.4.3.tgz", + "integrity": "sha512-DY6PQYE2g1a5QGDXCoajr8hl87m83vmfUIz1342x1qwWHmfRLfS3KTPPfa5bsZk/ABVOrqjjz/v3m4SEJ4LC5A==", + "dev": true, + "dependencies": { + "@lerna/command": "5.4.3", + "@lerna/package-graph": "5.4.3", + "@lerna/symlink-dependencies": "5.4.3", + "p-map": "^4.0.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/list": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/list/-/list-5.4.3.tgz", + "integrity": "sha512-VEoJfobof7Welp+1yX6gm0EtpZw9vyztGvTtOeHQ1fhfW88oav03Qoi/hk1qZXPf7/hVZrJKEmSJ4etxsbZ3/g==", + "dev": true, + "dependencies": { + "@lerna/command": "5.4.3", + "@lerna/filter-options": "5.4.3", + "@lerna/listable": "5.4.3", + "@lerna/output": "5.4.3" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/listable": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/listable/-/listable-5.4.3.tgz", + "integrity": "sha512-VcJMw+z84Rj1nLIso474+veFx0tCH9Jas02YXx9cgAnaK1IRP0BI9O0vccQIZ+2Rb62VLiFGzyCJIyKyhcGZHw==", + "dev": true, + "dependencies": { + "@lerna/query-graph": "5.4.3", + "chalk": "^4.1.0", + "columnify": "^1.6.0" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/log-packed": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/log-packed/-/log-packed-5.4.3.tgz", + "integrity": "sha512-pFEBaj5JOf44+kOV6eiFHAfEULC6NhHJHHFwkljL1WNcx/+46aOADY9LrjmVtp8uPWv3fMCb3ZGcxuGebz1lYA==", + "dev": true, + "dependencies": { + "byte-size": "^7.0.0", + "columnify": "^1.6.0", + "has-unicode": "^2.0.1", + "npmlog": "^6.0.2" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/npm-conf": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/npm-conf/-/npm-conf-5.4.3.tgz", + "integrity": "sha512-iQrrZHxAXqogfCpQvC/ac42/gR3osT+WN2FFB1gjVYYFBMZto5mlpcvyzH8rb75OJfak8iDtOYHUymmwSda1jw==", + "dev": true, + "dependencies": { + "config-chain": "^1.1.12", + "pify": "^5.0.0" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/npm-dist-tag": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/npm-dist-tag/-/npm-dist-tag-5.4.3.tgz", + "integrity": "sha512-LnbD6xrnrmMdXH/nntyd/xJueKZGhCv3YLWK9F6YQdmUoeWY+W7eckmdd8LKL6ZqupyeLxgn0NKwiJ5wxf0F2w==", + "dev": true, + "dependencies": { + "@lerna/otplease": "5.4.3", + "npm-package-arg": "8.1.1", + "npm-registry-fetch": "^13.3.0", + "npmlog": "^6.0.2" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/npm-install": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/npm-install/-/npm-install-5.4.3.tgz", + "integrity": "sha512-MPXYQ1r/UMV9x+6F2VEk3miHOw4fn+G4zN11PGB5nWmuaT4uq7rPoudkdRvMRqm6bK0NpL/trssSb12ERzevqg==", + "dev": true, + "dependencies": { + "@lerna/child-process": "5.4.3", + "@lerna/get-npm-exec-opts": "5.4.3", + "fs-extra": "^9.1.0", + "npm-package-arg": "8.1.1", + "npmlog": "^6.0.2", + "signal-exit": "^3.0.3", + "write-pkg": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/npm-publish": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/npm-publish/-/npm-publish-5.4.3.tgz", + "integrity": "sha512-yfwtTWYRace2oJK+a7nVUs7HubypgoA1fEZ6JUZFKVkq54C8tDdyYz4EtTtiFr7WMjP8p3NWxh7RNh7Tyx7ckQ==", + "dev": true, + "dependencies": { + "@lerna/otplease": "5.4.3", + "@lerna/run-lifecycle": "5.4.3", + "fs-extra": "^9.1.0", + "libnpmpublish": "^6.0.4", + "npm-package-arg": "8.1.1", + "npmlog": "^6.0.2", + "pify": "^5.0.0", + "read-package-json": "^5.0.1" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/npm-run-script": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/npm-run-script/-/npm-run-script-5.4.3.tgz", + "integrity": "sha512-xb6YAxAxGDBPlpZtjDPlM9NAgIcNte31iuGpG0I5eTYqBppKNZ7CQ8oi76qptrLyrK/ug9kqDIGti5OgyAMihQ==", + "dev": true, + "dependencies": { + "@lerna/child-process": "5.4.3", + "@lerna/get-npm-exec-opts": "5.4.3", + "npmlog": "^6.0.2" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/otplease": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/otplease/-/otplease-5.4.3.tgz", + "integrity": "sha512-iy+NpqP9UcB8a0W3Nhq20x2gWSRQcmkOb25qSJj7f5AisCwGWypYlD6RZ9NqCzUD7KEbAaydEEyhoPw9dQRFmg==", + "dev": true, + "dependencies": { + "@lerna/prompt": "5.4.3" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/output": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/output/-/output-5.4.3.tgz", + "integrity": "sha512-y/skSk0jMxPlJ1gpQwmKiMdElbznOMCYdCi170wfj3esby+fr8eULiwx7wUy3K+YtEGp7JS6TUjXb4zm9O0rMw==", + "dev": true, + "dependencies": { + "npmlog": "^6.0.2" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/pack-directory": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/pack-directory/-/pack-directory-5.4.3.tgz", + "integrity": "sha512-47vsQem4Jr1W7Ce03RKihprBFLh2Q+VKgIcQGPec764i5uv3QWHzqK//da7+fmHr86qusinHvCIV7X3pXcohWg==", + "dev": true, + "dependencies": { + "@lerna/get-packed": "5.4.3", + "@lerna/package": "5.4.3", + "@lerna/run-lifecycle": "5.4.3", + "@lerna/temp-write": "5.4.3", + "npm-packlist": "^5.1.1", + "npmlog": "^6.0.2", + "tar": "^6.1.0" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/package": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/package/-/package-5.4.3.tgz", + "integrity": "sha512-EIw82v4ijzS3qRCSKHNSJ/UTnFDroaEp6mj7pzLO6lIrAqg7MgtKeThMhzEAMvF4yNB7BL+UR+dZ0jI47WgQJQ==", + "dev": true, + "dependencies": { + "load-json-file": "^6.2.0", + "npm-package-arg": "8.1.1", + "write-pkg": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/package-graph": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/package-graph/-/package-graph-5.4.3.tgz", + "integrity": "sha512-8eyAS+hb+K/+1Si2UNh4KPaLFdgTgdrRcsuTY7aKaINyrzoLTArAKPk4dQZTH1d0SUWtFzicvWixkkzq21QuOw==", + "dev": true, + "dependencies": { + "@lerna/prerelease-id-from-version": "5.4.3", + "@lerna/validation-error": "5.4.3", + "npm-package-arg": "8.1.1", + "npmlog": "^6.0.2", + "semver": "^7.3.4" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/prerelease-id-from-version": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/prerelease-id-from-version/-/prerelease-id-from-version-5.4.3.tgz", + "integrity": "sha512-bXsBCv/VJrWXz2usnk52TtTb4dsXSeYDI2U1N2z/DssFKlOpH7xL1mKWC4OXE2XBqb9I49sDPfZzN8BxTfJdJQ==", + "dev": true, + "dependencies": { + "semver": "^7.3.4" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/profiler": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/profiler/-/profiler-5.4.3.tgz", + "integrity": "sha512-6otMDwCzfWszV0K7RRjlF5gibLZt1ay+NmtrhL7TZ7PSizIJXlf6HxZiYodGgjahKAdGxx34H9XyToVzOLdg3w==", + "dev": true, + "dependencies": { + "fs-extra": "^9.1.0", + "npmlog": "^6.0.2", + "upath": "^2.0.1" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/project": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/project/-/project-5.4.3.tgz", + "integrity": "sha512-j2EeuwdbHsL++jy0s2ShDbdOPirPOL/FNMRf7Qtwl4pEWoOiSYmv/LnIt2pV7cwww9Lx8Y682/7CQwlXdgrrMw==", + "dev": true, + "dependencies": { + "@lerna/package": "5.4.3", + "@lerna/validation-error": "5.4.3", + "cosmiconfig": "^7.0.0", + "dedent": "^0.7.0", + "dot-prop": "^6.0.1", + "glob-parent": "^5.1.1", + "globby": "^11.0.2", + "load-json-file": "^6.2.0", + "npmlog": "^6.0.2", + "p-map": "^4.0.0", + "resolve-from": "^5.0.0", + "write-json-file": "^4.3.0" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/prompt": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/prompt/-/prompt-5.4.3.tgz", + "integrity": "sha512-VqrTgnbm1H24aYacXmZ2z7atHO6W4NamvwHroGRFqiM34dCLQh8S22X5mNnb4nX5lgfb+doqcxBtOi91vqpJ2g==", + "dev": true, + "dependencies": { + "inquirer": "^8.2.4", + "npmlog": "^6.0.2" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/publish": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/publish/-/publish-5.4.3.tgz", + "integrity": "sha512-SYziRvRwahzbM0A4T63FfQsk2i33cIauKXlJz6t3GQZvVzUFb0gD/baVas2V7Fs/Ty1oCqtmDKB/ABTznWYwGg==", + "dev": true, + "dependencies": { + "@lerna/check-working-tree": "5.4.3", + "@lerna/child-process": "5.4.3", + "@lerna/collect-updates": "5.4.3", + "@lerna/command": "5.4.3", + "@lerna/describe-ref": "5.4.3", + "@lerna/log-packed": "5.4.3", + "@lerna/npm-conf": "5.4.3", + "@lerna/npm-dist-tag": "5.4.3", + "@lerna/npm-publish": "5.4.3", + "@lerna/otplease": "5.4.3", + "@lerna/output": "5.4.3", + "@lerna/pack-directory": "5.4.3", + "@lerna/prerelease-id-from-version": "5.4.3", + "@lerna/prompt": "5.4.3", + "@lerna/pulse-till-done": "5.4.3", + "@lerna/run-lifecycle": "5.4.3", + "@lerna/run-topologically": "5.4.3", + "@lerna/validation-error": "5.4.3", + "@lerna/version": "5.4.3", + "fs-extra": "^9.1.0", + "libnpmaccess": "^6.0.3", + "npm-package-arg": "8.1.1", + "npm-registry-fetch": "^13.3.0", + "npmlog": "^6.0.2", + "p-map": "^4.0.0", + "p-pipe": "^3.1.0", + "pacote": "^13.6.1", + "semver": "^7.3.4" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/pulse-till-done": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/pulse-till-done/-/pulse-till-done-5.4.3.tgz", + "integrity": "sha512-Twy0UmVtyFzC+sLDnuY0u37Xu17WAP7ysQ7riaLx9KhO0M9MZvoY+kDF/hg0K204tZi0dr6R5eLGEUd+Xkg9Rw==", + "dev": true, + "dependencies": { + "npmlog": "^6.0.2" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/query-graph": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/query-graph/-/query-graph-5.4.3.tgz", + "integrity": "sha512-eiRsEPg+t2tN9VWXSAj2y0zEphPrOz6DdYw/5ntVFDecIfoANxGKcCkOTqb3PnaC8BojI64N3Ju+i41jcO0mLw==", + "dev": true, + "dependencies": { + "@lerna/package-graph": "5.4.3" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/resolve-symlink": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/resolve-symlink/-/resolve-symlink-5.4.3.tgz", + "integrity": "sha512-BzqinKmTny70KgSBAaVgdLHaVR3WXRVk5EDbQHB73qg4dHiyYrzvDBqkaKzv1K1th8E4LdQQXf5LiNEbfU/1Bg==", + "dev": true, + "dependencies": { + "fs-extra": "^9.1.0", + "npmlog": "^6.0.2", + "read-cmd-shim": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/rimraf-dir": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/rimraf-dir/-/rimraf-dir-5.4.3.tgz", + "integrity": "sha512-gBraUVczKk4Jik1+qCj4jtQ53l1zmWmMoH7A11ifYI60Dg7Mc6iQcIZOIj6siD5TSOtSCy7qePu3VyXBOIquvQ==", + "dev": true, + "dependencies": { + "@lerna/child-process": "5.4.3", + "npmlog": "^6.0.2", + "path-exists": "^4.0.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/run": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/run/-/run-5.4.3.tgz", + "integrity": "sha512-PyHOYCsuJ+5r9ymjtwbQCbMMebVhaZ7Xy4jNpL9kqIvmdxe1S5QTP6Vyc6+RAvUtx0upP++0MFFA8CbZ1ZwOcw==", + "dev": true, + "dependencies": { + "@lerna/command": "5.4.3", + "@lerna/filter-options": "5.4.3", + "@lerna/npm-run-script": "5.4.3", + "@lerna/output": "5.4.3", + "@lerna/profiler": "5.4.3", + "@lerna/run-topologically": "5.4.3", + "@lerna/timer": "5.4.3", + "@lerna/validation-error": "5.4.3", + "p-map": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/run-lifecycle": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/run-lifecycle/-/run-lifecycle-5.4.3.tgz", + "integrity": "sha512-XKUfELNjkR6EUg+Xh92s1etjNvCbTBw20QMXDsyGSipHcLr7huXjC0D2/4/+j8/N5sz/rg+JufQfc1ldtpOU0A==", + "dev": true, + "dependencies": { + "@lerna/npm-conf": "5.4.3", + "@npmcli/run-script": "^4.1.7", + "npmlog": "^6.0.2", + "p-queue": "^6.6.2" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/run-topologically": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/run-topologically/-/run-topologically-5.4.3.tgz", + "integrity": "sha512-9bT8mJ0RICIk16l8L9jRRqSXGSiLEKUd50DLz5Tv0EdOKD+prwffAivCpVMYF9tdD5UaQzDAK/VzFdS5FEzPQg==", + "dev": true, + "dependencies": { + "@lerna/query-graph": "5.4.3", + "p-queue": "^6.6.2" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/symlink-binary": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/symlink-binary/-/symlink-binary-5.4.3.tgz", + "integrity": "sha512-iXBijyb1+NiOeifnRsbicSju6/FGtv6hvNny2lbjyr0EJ8jMz6JaoQ6eep9yXhgaNRJND1Pw9JBiCv6EhhcyCw==", + "dev": true, + "dependencies": { + "@lerna/create-symlink": "5.4.3", + "@lerna/package": "5.4.3", + "fs-extra": "^9.1.0", + "p-map": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/symlink-dependencies": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/symlink-dependencies/-/symlink-dependencies-5.4.3.tgz", + "integrity": "sha512-9fK3fIl6wyihyfKhDUquiAx8JoMjctBJ7zhLjrgOon5Ua2fyc+mVp9fTWsjHtv7IaC/TeP9oA4/IcBtdr2xieg==", + "dev": true, + "dependencies": { + "@lerna/create-symlink": "5.4.3", + "@lerna/resolve-symlink": "5.4.3", + "@lerna/symlink-binary": "5.4.3", + "fs-extra": "^9.1.0", + "p-map": "^4.0.0", + "p-map-series": "^2.1.0" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/temp-write": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/temp-write/-/temp-write-5.4.3.tgz", + "integrity": "sha512-HgAVNmKfeRKm4QPFGFfmzVC/lA2jv5QpMXPPDahoBEI6BhYtMmHiUWQan6dfsCoSf65xDd+9NTESya9AOSbN2w==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.15", + "is-stream": "^2.0.0", + "make-dir": "^3.0.0", + "temp-dir": "^1.0.0", + "uuid": "^8.3.2" + } + }, + "node_modules/@lerna/timer": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/timer/-/timer-5.4.3.tgz", + "integrity": "sha512-0NwrCxug6pmSAuPaAHNr5VRGw7+nqikoIpwx6RViJiOD+UYFf3k955fngtSX2JhETR/7it9ncgpbaLvlxusx9g==", + "dev": true, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/validation-error": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/validation-error/-/validation-error-5.4.3.tgz", + "integrity": "sha512-edf9vbQaDViffhHqL/wHdGs83RV7uJ4N5E3VEpjXefWIUfgmw9wYjkX338WYUh/XqDYbSV6C1M8A24FT3/0uzw==", + "dev": true, + "dependencies": { + "npmlog": "^6.0.2" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/version": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/version/-/version-5.4.3.tgz", + "integrity": "sha512-a6Q+o1fZbOg/GVG8QtvfyOpX0sZ38bbI9hSJU5YMf99YKdyzp80dDDav+IGMxIaZSj08HJ1pPyXOLR27I8fTUQ==", + "dev": true, + "dependencies": { + "@lerna/check-working-tree": "5.4.3", + "@lerna/child-process": "5.4.3", + "@lerna/collect-updates": "5.4.3", + "@lerna/command": "5.4.3", + "@lerna/conventional-commits": "5.4.3", + "@lerna/github-client": "5.4.3", + "@lerna/gitlab-client": "5.4.3", + "@lerna/output": "5.4.3", + "@lerna/prerelease-id-from-version": "5.4.3", + "@lerna/prompt": "5.4.3", + "@lerna/run-lifecycle": "5.4.3", + "@lerna/run-topologically": "5.4.3", + "@lerna/temp-write": "5.4.3", + "@lerna/validation-error": "5.4.3", + "chalk": "^4.1.0", + "dedent": "^0.7.0", + "load-json-file": "^6.2.0", + "minimatch": "^3.0.4", + "npmlog": "^6.0.2", + "p-map": "^4.0.0", + "p-pipe": "^3.1.0", + "p-reduce": "^2.1.0", + "p-waterfall": "^2.1.1", + "semver": "^7.3.4", + "slash": "^3.0.0", + "write-json-file": "^4.3.0" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@lerna/write-log-file": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/write-log-file/-/write-log-file-5.4.3.tgz", + "integrity": "sha512-S2kctFhsO4mMbR52tW9VjYrGWUMYO5YIjprg8B7vQSwYvWOOJfqOKy/A+P/U5zXuCSAbDDGssyS+CCM36MFEQw==", + "dev": true, + "dependencies": { + "npmlog": "^6.0.2", + "write-file-atomic": "^4.0.1" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@npmcli/arborist": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@npmcli/arborist/-/arborist-5.3.0.tgz", + "integrity": "sha512-+rZ9zgL1lnbl8Xbb1NQdMjveOMwj4lIYfcDtyJHHi5x4X8jtR6m8SXooJMZy5vmFVZ8w7A2Bnd/oX9eTuU8w5A==", + "dev": true, + "dependencies": { + "@isaacs/string-locale-compare": "^1.1.0", + "@npmcli/installed-package-contents": "^1.0.7", + "@npmcli/map-workspaces": "^2.0.3", + "@npmcli/metavuln-calculator": "^3.0.1", + "@npmcli/move-file": "^2.0.0", + "@npmcli/name-from-folder": "^1.0.1", + "@npmcli/node-gyp": "^2.0.0", + "@npmcli/package-json": "^2.0.0", + "@npmcli/run-script": "^4.1.3", + "bin-links": "^3.0.0", + "cacache": "^16.0.6", + "common-ancestor-path": "^1.0.1", + "json-parse-even-better-errors": "^2.3.1", + "json-stringify-nice": "^1.1.4", + "mkdirp": "^1.0.4", + "mkdirp-infer-owner": "^2.0.0", + "nopt": "^5.0.0", + "npm-install-checks": "^5.0.0", + "npm-package-arg": "^9.0.0", + "npm-pick-manifest": "^7.0.0", + "npm-registry-fetch": "^13.0.0", + "npmlog": "^6.0.2", + "pacote": "^13.6.1", + "parse-conflict-json": "^2.0.1", + "proc-log": "^2.0.0", + "promise-all-reject-late": "^1.0.0", + "promise-call-limit": "^1.0.1", + "read-package-json-fast": "^2.0.2", + "readdir-scoped-modules": "^1.1.0", + "rimraf": "^3.0.2", + "semver": "^7.3.7", + "ssri": "^9.0.0", + "treeverse": "^2.0.0", + "walk-up-path": "^1.0.0" + }, + "bin": { + "arborist": "bin/index.js" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/@npmcli/arborist/node_modules/hosted-git-info": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.1.0.tgz", + "integrity": "sha512-Ek+QmMEqZF8XrbFdwoDjSbm7rT23pCgEMOJmz6GPk/s4yH//RQfNPArhIxbguNxROq/+5lNBwCDHMhA903Kx1Q==", + "dev": true, + "dependencies": { + "lru-cache": "^7.5.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/@npmcli/arborist/node_modules/npm-package-arg": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.0.tgz", + "integrity": "sha512-4J0GL+u2Nh6OnhvUKXRr2ZMG4lR8qtLp+kv7UiV00Y+nGiSxtttCyIRHCt5L5BNkXQld/RceYItau3MDOoGiBw==", + "dev": true, + "dependencies": { + "hosted-git-info": "^5.0.0", + "proc-log": "^2.0.1", + "semver": "^7.3.5", + "validate-npm-package-name": "^4.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/@npmcli/fs": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz", + "integrity": "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==", + "dev": true, + "dependencies": { + "@gar/promisify": "^1.1.3", + "semver": "^7.3.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/@npmcli/git": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-3.0.2.tgz", + "integrity": "sha512-CAcd08y3DWBJqJDpfuVL0uijlq5oaXaOJEKHKc4wqrjd00gkvTZB+nFuLn+doOOKddaQS9JfqtNoFCO2LCvA3w==", + "dev": true, + "dependencies": { + "@npmcli/promise-spawn": "^3.0.0", + "lru-cache": "^7.4.4", + "mkdirp": "^1.0.4", + "npm-pick-manifest": "^7.0.0", + "proc-log": "^2.0.0", + "promise-inflight": "^1.0.1", + "promise-retry": "^2.0.1", + "semver": "^7.3.5", + "which": "^2.0.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/@npmcli/installed-package-contents": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz", + "integrity": "sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw==", + "dev": true, + "dependencies": { + "npm-bundled": "^1.1.1", + "npm-normalize-package-bin": "^1.0.1" + }, + "bin": { + "installed-package-contents": "index.js" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@npmcli/map-workspaces": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@npmcli/map-workspaces/-/map-workspaces-2.0.4.tgz", + "integrity": "sha512-bMo0aAfwhVwqoVM5UzX1DJnlvVvzDCHae821jv48L1EsrYwfOZChlqWYXEtto/+BkBXetPbEWgau++/brh4oVg==", + "dev": true, + "dependencies": { + "@npmcli/name-from-folder": "^1.0.1", + "glob": "^8.0.1", + "minimatch": "^5.0.1", + "read-package-json-fast": "^2.0.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/@npmcli/map-workspaces/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@npmcli/map-workspaces/node_modules/minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@npmcli/metavuln-calculator": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@npmcli/metavuln-calculator/-/metavuln-calculator-3.1.1.tgz", + "integrity": "sha512-n69ygIaqAedecLeVH3KnO39M6ZHiJ2dEv5A7DGvcqCB8q17BGUgW8QaanIkbWUo2aYGZqJaOORTLAlIvKjNDKA==", + "dev": true, + "dependencies": { + "cacache": "^16.0.0", + "json-parse-even-better-errors": "^2.3.1", + "pacote": "^13.0.3", + "semver": "^7.3.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/@npmcli/move-file": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz", + "integrity": "sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==", + "dev": true, + "dependencies": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/@npmcli/name-from-folder": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/name-from-folder/-/name-from-folder-1.0.1.tgz", + "integrity": "sha512-qq3oEfcLFwNfEYOQ8HLimRGKlD8WSeGEdtUa7hmzpR8Sa7haL1KVQrvgO6wqMjhWFFVjgtrh1gIxDz+P8sjUaA==", + "dev": true + }, + "node_modules/@npmcli/node-gyp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-2.0.0.tgz", + "integrity": "sha512-doNI35wIe3bBaEgrlPfdJPaCpUR89pJWep4Hq3aRdh6gKazIVWfs0jHttvSSoq47ZXgC7h73kDsUl8AoIQUB+A==", + "dev": true, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/@npmcli/package-json": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-2.0.0.tgz", + "integrity": "sha512-42jnZ6yl16GzjWSH7vtrmWyJDGVa/LXPdpN2rcUWolFjc9ON2N3uz0qdBbQACfmhuJZ2lbKYtmK5qx68ZPLHMA==", + "dev": true, + "dependencies": { + "json-parse-even-better-errors": "^2.3.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/@npmcli/promise-spawn": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-3.0.0.tgz", + "integrity": "sha512-s9SgS+p3a9Eohe68cSI3fi+hpcZUmXq5P7w0kMlAsWVtR7XbK3ptkZqKT2cK1zLDObJ3sR+8P59sJE0w/KTL1g==", + "dev": true, + "dependencies": { + "infer-owner": "^1.0.4" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/@npmcli/run-script": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-4.2.1.tgz", + "integrity": "sha512-7dqywvVudPSrRCW5nTHpHgeWnbBtz8cFkOuKrecm6ih+oO9ciydhWt6OF7HlqupRRmB8Q/gECVdB9LMfToJbRg==", + "dev": true, + "dependencies": { + "@npmcli/node-gyp": "^2.0.0", + "@npmcli/promise-spawn": "^3.0.0", + "node-gyp": "^9.0.0", + "read-package-json-fast": "^2.0.3", + "which": "^2.0.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/@nrwl/cli": { + "version": "14.5.10", + "resolved": "https://registry.npmjs.org/@nrwl/cli/-/cli-14.5.10.tgz", + "integrity": "sha512-GpnnKGO3+HwlMmZSStbq1MOyoDJg2I0HN4nBqM3ltaQkfxGZv3erwRMOAT+8mba2MWbJJ2QQgASAYvTscNYjOQ==", + "dev": true, + "dependencies": { + "nx": "14.5.10" + } + }, + "node_modules/@nrwl/tao": { + "version": "14.5.10", + "resolved": "https://registry.npmjs.org/@nrwl/tao/-/tao-14.5.10.tgz", + "integrity": "sha512-eWORRba0HlTNmOQFUxHqki0Z5yiRIq1Hl0taprmZpz2lgDXuzPIjGfAi5/ETy5+G5gkEyxFnCq7+SiMilPokwA==", + "dev": true, + "dependencies": { + "nx": "14.5.10" + }, + "bin": { + "tao": "index.js" + } + }, + "node_modules/@octokit/auth-token": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-3.0.1.tgz", + "integrity": "sha512-/USkK4cioY209wXRpund6HZzHo9GmjakpV9ycOkpMcMxMk7QVcVFVyCMtzvXYiHsB2crgDgrtNYSELYFBXhhaA==", + "dev": true, + "dependencies": { + "@octokit/types": "^7.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@octokit/core": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-4.0.5.tgz", + "integrity": "sha512-4R3HeHTYVHCfzSAi0C6pbGXV8UDI5Rk+k3G7kLVNckswN9mvpOzW9oENfjfH3nEmzg8y3AmKmzs8Sg6pLCeOCA==", + "dev": true, + "dependencies": { + "@octokit/auth-token": "^3.0.0", + "@octokit/graphql": "^5.0.0", + "@octokit/request": "^6.0.0", + "@octokit/request-error": "^3.0.0", + "@octokit/types": "^7.0.0", + "before-after-hook": "^2.2.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@octokit/endpoint": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-7.0.1.tgz", + "integrity": "sha512-/wTXAJwt0HzJ2IeE4kQXO+mBScfzyCkI0hMtkIaqyXd9zg76OpOfNQfHL9FlaxAV2RsNiOXZibVWloy8EexENg==", + "dev": true, + "dependencies": { + "@octokit/types": "^7.0.0", + "is-plain-object": "^5.0.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@octokit/graphql": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-5.0.1.tgz", + "integrity": "sha512-sxmnewSwAixkP1TrLdE6yRG53eEhHhDTYUykUwdV9x8f91WcbhunIHk9x1PZLALdBZKRPUO2HRcm4kezZ79HoA==", + "dev": true, + "dependencies": { + "@octokit/request": "^6.0.0", + "@octokit/types": "^7.0.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@octokit/openapi-types": { + "version": "13.4.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-13.4.0.tgz", + "integrity": "sha512-2mVzW0X1+HDO3jF80/+QFZNzJiTefELKbhMu6yaBYbp/1gSMkVDm4rT472gJljTokWUlXaaE63m7WrWENhMDLw==", + "dev": true + }, + "node_modules/@octokit/plugin-enterprise-rest": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@octokit/plugin-enterprise-rest/-/plugin-enterprise-rest-6.0.1.tgz", + "integrity": "sha512-93uGjlhUD+iNg1iWhUENAtJata6w5nE+V4urXOAlIXdco6xNZtUSfYY8dzp3Udy74aqO/B5UZL80x/YMa5PKRw==", + "dev": true + }, + "node_modules/@octokit/plugin-paginate-rest": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-4.1.0.tgz", + "integrity": "sha512-2O5K5fpajYG5g62wjzHR7/cWYaCA88CextAW3vFP+yoIHD0KEdlVMHfM5/i5LyV+JMmqiYW7w5qfg46FR+McNw==", + "dev": true, + "dependencies": { + "@octokit/types": "^7.1.1" + }, + "engines": { + "node": ">= 14" + }, + "peerDependencies": { + "@octokit/core": ">=4" + } + }, + "node_modules/@octokit/plugin-request-log": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz", + "integrity": "sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==", + "dev": true, + "peerDependencies": { + "@octokit/core": ">=3" + } + }, + "node_modules/@octokit/plugin-rest-endpoint-methods": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-6.3.0.tgz", + "integrity": "sha512-qEu2wn6E7hqluZwIEUnDxWROvKjov3zMIAi4H4d7cmKWNMeBprEXZzJe8pE5eStUYC1ysGhD0B7L6IeG1Rfb+g==", + "dev": true, + "dependencies": { + "@octokit/types": "^7.0.0", + "deprecation": "^2.3.1" + }, + "engines": { + "node": ">= 14" + }, + "peerDependencies": { + "@octokit/core": ">=3" + } + }, + "node_modules/@octokit/request": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-6.2.1.tgz", + "integrity": "sha512-gYKRCia3cpajRzDSU+3pt1q2OcuC6PK8PmFIyxZDWCzRXRSIBH8jXjFJ8ZceoygBIm0KsEUg4x1+XcYBz7dHPQ==", + "dev": true, + "dependencies": { + "@octokit/endpoint": "^7.0.0", + "@octokit/request-error": "^3.0.0", + "@octokit/types": "^7.0.0", + "is-plain-object": "^5.0.0", + "node-fetch": "^2.6.7", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@octokit/request-error": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-3.0.1.tgz", + "integrity": "sha512-ym4Bp0HTP7F3VFssV88WD1ZyCIRoE8H35pXSKwLeMizcdZAYc/t6N9X9Yr9n6t3aG9IH75XDnZ6UeZph0vHMWQ==", + "dev": true, + "dependencies": { + "@octokit/types": "^7.0.0", + "deprecation": "^2.0.0", + "once": "^1.4.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@octokit/rest": { + "version": "19.0.4", + "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-19.0.4.tgz", + "integrity": "sha512-LwG668+6lE8zlSYOfwPj4FxWdv/qFXYBpv79TWIQEpBLKA9D/IMcWsF/U9RGpA3YqMVDiTxpgVpEW3zTFfPFTA==", + "dev": true, + "dependencies": { + "@octokit/core": "^4.0.0", + "@octokit/plugin-paginate-rest": "^4.0.0", + "@octokit/plugin-request-log": "^1.0.4", + "@octokit/plugin-rest-endpoint-methods": "^6.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@octokit/types": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-7.1.1.tgz", + "integrity": "sha512-Dx6cNTORyVaKY0Yeb9MbHksk79L8GXsihbG6PtWqTpkyA2TY1qBWE26EQXVG3dHwY9Femdd/WEeRUEiD0+H3TQ==", + "dev": true, + "dependencies": { + "@octokit/openapi-types": "^13.4.0" + } + }, + "node_modules/@parcel/watcher": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.0.4.tgz", + "integrity": "sha512-cTDi+FUDBIUOBKEtj+nhiJ71AZVlkAsQFuGQTun5tV9mwQBQgZvhCzG+URPQc8myeN32yRVZEfVAPCs1RW+Jvg==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "node-addon-api": "^3.2.1", + "node-gyp-build": "^4.3.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true + }, + "node_modules/@types/minimatch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", + "dev": true + }, + "node_modules/@types/minimist": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", + "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", + "dev": true + }, + "node_modules/@types/node": { + "version": "18.7.13", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.13.tgz", + "integrity": "sha512-46yIhxSe5xEaJZXWdIBP7GU4HDTG8/eo0qd9atdiL+lFpA03y8KS+lkTN834TWJj5767GbWv4n/P6efyTFt1Dw==", + "dev": true + }, + "node_modules/@types/normalize-package-data": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", + "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", + "dev": true + }, + "node_modules/@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "dev": true + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "node_modules/add-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/add-stream/-/add-stream-1.0.0.tgz", + "integrity": "sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ==", + "dev": true + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/agentkeepalive": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz", + "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "depd": "^1.1.2", + "humanize-ms": "^1.2.1" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/antlr4ts": { + "version": "0.5.0-alpha.4", + "resolved": "https://registry.npmjs.org/antlr4ts/-/antlr4ts-0.5.0-alpha.4.tgz", + "integrity": "sha512-WPQDt1B74OfPv/IMS2ekXAKkTZIHl88uMetg6q3OTqgFxZ/dxDXI0EWLyZid/1Pe6hTftyg5N7gel5wNAGxXyQ==" + }, + "node_modules/antlr4ts-cli": { + "version": "0.5.0-alpha.4", + "resolved": "https://registry.npmjs.org/antlr4ts-cli/-/antlr4ts-cli-0.5.0-alpha.4.tgz", + "integrity": "sha512-lVPVBTA2CVHRYILSKilL6Jd4hAumhSZZWA7UbQNQrmaSSj7dPmmYaN4bOmZG79cOy0lS00i4LY68JZZjZMWVrw==", + "dev": true, + "bin": { + "antlr4ts": "antlr4ts" + } + }, + "node_modules/anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + "dev": true + }, + "node_modules/are-we-there-yet": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", + "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", + "dev": true, + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/array-differ": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz", + "integrity": "sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/array-ify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", + "integrity": "sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==", + "dev": true + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", + "dev": true + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/before-after-hook": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.2.tgz", + "integrity": "sha512-3pZEU3NT5BFUo/AD5ERPWOgQOCZITni6iavr5AUw5AUwQjMlI0kzu5btnyD39AF0gUEsDPwJT+oY1ORBJijPjQ==", + "dev": true + }, + "node_modules/bin-links": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/bin-links/-/bin-links-3.0.3.tgz", + "integrity": "sha512-zKdnMPWEdh4F5INR07/eBrodC7QrF5JKvqskjz/ZZRXg5YSAZIbn8zGhbhUrElzHBZ2fvEQdOU59RHcTG3GiwA==", + "dev": true, + "dependencies": { + "cmd-shim": "^5.0.0", + "mkdirp-infer-owner": "^2.0.0", + "npm-normalize-package-bin": "^2.0.0", + "read-cmd-shim": "^3.0.0", + "rimraf": "^3.0.0", + "write-file-atomic": "^4.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/bin-links/node_modules/npm-normalize-package-bin": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz", + "integrity": "sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==", + "dev": true, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/builtins": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", + "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", + "dev": true, + "dependencies": { + "semver": "^7.0.0" + } + }, + "node_modules/byte-size": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/byte-size/-/byte-size-7.0.1.tgz", + "integrity": "sha512-crQdqyCwhokxwV1UyDzLZanhkugAgft7vt0qbbdt60C6Zf3CAiGmtUCylbtYwrU6loOUw3euGrNtW1J651ot1A==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/cacache": { + "version": "16.1.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.3.tgz", + "integrity": "sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==", + "dev": true, + "dependencies": { + "@npmcli/fs": "^2.1.0", + "@npmcli/move-file": "^2.0.0", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "glob": "^8.0.1", + "infer-owner": "^1.0.4", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "mkdirp": "^1.0.4", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^9.0.0", + "tar": "^6.1.11", + "unique-filename": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase-keys": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", + "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", + "dev": true, + "dependencies": { + "camelcase": "^5.3.1", + "map-obj": "^4.0.0", + "quick-lru": "^4.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-spinners": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", + "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/clone-deep/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cmd-shim": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cmd-shim/-/cmd-shim-5.0.0.tgz", + "integrity": "sha512-qkCtZ59BidfEwHltnJwkyVZn+XQojdAySM1D1gSeh11Z4pW1Kpolkyo53L5noc0nrxmIvyFwTmJRo4xs7FFLPw==", + "dev": true, + "dependencies": { + "mkdirp-infer-owner": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "dev": true, + "bin": { + "color-support": "bin.js" + } + }, + "node_modules/columnify": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/columnify/-/columnify-1.6.0.tgz", + "integrity": "sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q==", + "dev": true, + "dependencies": { + "strip-ansi": "^6.0.1", + "wcwidth": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/common-ancestor-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz", + "integrity": "sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==", + "dev": true + }, + "node_modules/compare-func": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", + "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", + "dev": true, + "dependencies": { + "array-ify": "^1.0.0", + "dot-prop": "^5.1.0" + } + }, + "node_modules/compare-func/node_modules/dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "dev": true, + "dependencies": { + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/concat-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", + "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", + "dev": true, + "engines": [ + "node >= 6.0" + ], + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.0.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/config-chain": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + "dev": true, + "dependencies": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "node_modules/console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", + "dev": true + }, + "node_modules/conventional-changelog-angular": { + "version": "5.0.13", + "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz", + "integrity": "sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA==", + "dev": true, + "dependencies": { + "compare-func": "^2.0.0", + "q": "^1.5.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-core": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-4.2.4.tgz", + "integrity": "sha512-gDVS+zVJHE2v4SLc6B0sLsPiloR0ygU7HaDW14aNJE1v4SlqJPILPl/aJC7YdtRE4CybBf8gDwObBvKha8Xlyg==", + "dev": true, + "dependencies": { + "add-stream": "^1.0.0", + "conventional-changelog-writer": "^5.0.0", + "conventional-commits-parser": "^3.2.0", + "dateformat": "^3.0.0", + "get-pkg-repo": "^4.0.0", + "git-raw-commits": "^2.0.8", + "git-remote-origin-url": "^2.0.0", + "git-semver-tags": "^4.1.1", + "lodash": "^4.17.15", + "normalize-package-data": "^3.0.0", + "q": "^1.5.1", + "read-pkg": "^3.0.0", + "read-pkg-up": "^3.0.0", + "through2": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-preset-loader": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.4.tgz", + "integrity": "sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-writer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-5.0.1.tgz", + "integrity": "sha512-5WsuKUfxW7suLblAbFnxAcrvf6r+0b7GvNaWUwUIk0bXMnENP/PEieGKVUQrjPqwPT4o3EPAASBXiY6iHooLOQ==", + "dev": true, + "dependencies": { + "conventional-commits-filter": "^2.0.7", + "dateformat": "^3.0.0", + "handlebars": "^4.7.7", + "json-stringify-safe": "^5.0.1", + "lodash": "^4.17.15", + "meow": "^8.0.0", + "semver": "^6.0.0", + "split": "^1.0.0", + "through2": "^4.0.0" + }, + "bin": { + "conventional-changelog-writer": "cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-writer/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/conventional-commits-filter": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-2.0.7.tgz", + "integrity": "sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA==", + "dev": true, + "dependencies": { + "lodash.ismatch": "^4.4.0", + "modify-values": "^1.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-commits-parser": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.2.4.tgz", + "integrity": "sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q==", + "dev": true, + "dependencies": { + "is-text-path": "^1.0.1", + "JSONStream": "^1.0.4", + "lodash": "^4.17.15", + "meow": "^8.0.0", + "split2": "^3.0.0", + "through2": "^4.0.0" + }, + "bin": { + "conventional-commits-parser": "cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-recommended-bump": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/conventional-recommended-bump/-/conventional-recommended-bump-6.1.0.tgz", + "integrity": "sha512-uiApbSiNGM/kkdL9GTOLAqC4hbptObFo4wW2QRyHsKciGAfQuLU1ShZ1BIVI/+K2BE/W1AWYQMCXAsv4dyKPaw==", + "dev": true, + "dependencies": { + "concat-stream": "^2.0.0", + "conventional-changelog-preset-loader": "^2.3.4", + "conventional-commits-filter": "^2.0.7", + "conventional-commits-parser": "^3.2.0", + "git-raw-commits": "^2.0.8", + "git-semver-tags": "^4.1.1", + "meow": "^8.0.0", + "q": "^1.5.1" + }, + "bin": { + "conventional-recommended-bump": "cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true + }, + "node_modules/cosmiconfig": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", + "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", + "dev": true, + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/dargs": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz", + "integrity": "sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/dateformat": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", + "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/debuglog": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz", + "integrity": "sha512-syBZ+rnAK3EgMsH2aYEOLUW7mZSY9Gb+0wUMCFsZvcmiz+HigA0LOcq/HoQqVuGG+EKykunc7QG2bzrponfaSw==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decamelize-keys": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", + "integrity": "sha512-ocLWuYzRPoS9bfiSdDd3cxvrzovVMZnRDVEzAs+hWIVXGDbHxWMECij2OBuyB/An0FFW/nLuq6Kv1i/YC5Qfzg==", + "dev": true, + "dependencies": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decamelize-keys/node_modules/map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", + "dev": true + }, + "node_modules/defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha512-s82itHOnYrN0Ib8r+z7laQz3sdE+4FP3d9Q7VLO7U+KRT+CR0GsWuyHxzdAY82I7cXv0G/twrqomTJLOssO5HA==", + "dev": true, + "dependencies": { + "clone": "^1.0.2" + } + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "dev": true + }, + "node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/deprecation": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", + "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", + "dev": true + }, + "node_modules/detect-indent": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", + "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/dezalgo": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", + "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", + "dev": true, + "dependencies": { + "asap": "^2.0.0", + "wrappy": "1" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dot-prop": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz", + "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==", + "dev": true, + "dependencies": { + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/dotenv": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", + "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "dev": true + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "dev": true, + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, + "node_modules/encoding/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "dependencies": { + "ansi-colors": "^4.1.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/envinfo": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", + "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", + "dev": true, + "bin": { + "envinfo": "dist/cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "dev": true + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "dependencies": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/fast-glob": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", + "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true, + "bin": { + "flat": "cli.js" + } + }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true + }, + "node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/gauge": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", + "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", + "dev": true, + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^3.0.7", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-pkg-repo": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-4.2.1.tgz", + "integrity": "sha512-2+QbHjFRfGB74v/pYWjd5OhU3TDIC2Gv/YKUTk/tCvAz0pkn/Mz6P3uByuBimLOcPvN2jYdScl3xGFSrx0jEcA==", + "dev": true, + "dependencies": { + "@hutson/parse-repository-url": "^3.0.0", + "hosted-git-info": "^4.0.0", + "through2": "^2.0.0", + "yargs": "^16.2.0" + }, + "bin": { + "get-pkg-repo": "src/cli.js" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-pkg-repo/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/get-pkg-repo/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/get-pkg-repo/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/get-pkg-repo/node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/get-port": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz", + "integrity": "sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/git-raw-commits": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.11.tgz", + "integrity": "sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A==", + "dev": true, + "dependencies": { + "dargs": "^7.0.0", + "lodash": "^4.17.15", + "meow": "^8.0.0", + "split2": "^3.0.0", + "through2": "^4.0.0" + }, + "bin": { + "git-raw-commits": "cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/git-remote-origin-url": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz", + "integrity": "sha512-eU+GGrZgccNJcsDH5LkXR3PB9M958hxc7sbA8DFJjrv9j4L2P/eZfKhM+QD6wyzpiv+b1BpK0XrYCxkovtjSLw==", + "dev": true, + "dependencies": { + "gitconfiglocal": "^1.0.0", + "pify": "^2.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/git-remote-origin-url/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/git-semver-tags": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-4.1.1.tgz", + "integrity": "sha512-OWyMt5zBe7xFs8vglMmhM9lRQzCWL3WjHtxNNfJTMngGym7pC1kh8sP6jevfydJ6LP3ZvGxfb6ABYgPUM0mtsA==", + "dev": true, + "dependencies": { + "meow": "^8.0.0", + "semver": "^6.0.0" + }, + "bin": { + "git-semver-tags": "cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/git-semver-tags/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/git-up": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/git-up/-/git-up-6.0.0.tgz", + "integrity": "sha512-6RUFSNd1c/D0xtGnyWN2sxza2bZtZ/EmI9448n6rCZruFwV/ezeEn2fJP7XnUQGwf0RAtd/mmUCbtH6JPYA2SA==", + "dev": true, + "dependencies": { + "is-ssh": "^1.4.0", + "parse-url": "^7.0.2" + } + }, + "node_modules/git-url-parse": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/git-url-parse/-/git-url-parse-12.0.0.tgz", + "integrity": "sha512-I6LMWsxV87vysX1WfsoglXsXg6GjQRKq7+Dgiseo+h0skmp5Hp2rzmcEIRQot9CPA+uzU7x1x7jZdqvTFGnB+Q==", + "dev": true, + "dependencies": { + "git-up": "^6.0.0" + } + }, + "node_modules/gitconfiglocal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz", + "integrity": "sha512-spLUXeTAVHxDtKsJc8FkFVgFtMdEN9qPGpL23VfSHx4fP4+Ds097IXLvymbnDH8FnmxX5Nr9bPw3A+AQ6mWEaQ==", + "dev": true, + "dependencies": { + "ini": "^1.3.2" + } + }, + "node_modules/glob": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", + "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true + }, + "node_modules/handlebars": { + "version": "4.7.7", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", + "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5", + "neo-async": "^2.6.0", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" + }, + "engines": { + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" + } + }, + "node_modules/hard-rejection": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", + "dev": true + }, + "node_modules/hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/hosted-git-info/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/http-cache-semantics": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", + "dev": true + }, + "node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + "dev": true, + "dependencies": { + "ms": "^2.0.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/ignore-walk": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-5.0.1.tgz", + "integrity": "sha512-yemi4pMf51WKT7khInJqAvsIGzoqYXblnsz0ql8tM+yi1EKYTY1evX4NAbJrLL/Aanr2HyZeluqU+Oi7MGHokw==", + "dev": true, + "dependencies": { + "minimatch": "^5.0.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/ignore-walk/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/ignore-walk/node_modules/minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dev": true, + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "dev": true + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "node_modules/init-package-json": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/init-package-json/-/init-package-json-3.0.2.tgz", + "integrity": "sha512-YhlQPEjNFqlGdzrBfDNRLhvoSgX7iQRgSxgsNknRQ9ITXFT7UMfVMWhBTOh2Y+25lRnGrv5Xz8yZwQ3ACR6T3A==", + "dev": true, + "dependencies": { + "npm-package-arg": "^9.0.1", + "promzard": "^0.3.0", + "read": "^1.0.7", + "read-package-json": "^5.0.0", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4", + "validate-npm-package-name": "^4.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/init-package-json/node_modules/hosted-git-info": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.1.0.tgz", + "integrity": "sha512-Ek+QmMEqZF8XrbFdwoDjSbm7rT23pCgEMOJmz6GPk/s4yH//RQfNPArhIxbguNxROq/+5lNBwCDHMhA903Kx1Q==", + "dev": true, + "dependencies": { + "lru-cache": "^7.5.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/init-package-json/node_modules/npm-package-arg": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.0.tgz", + "integrity": "sha512-4J0GL+u2Nh6OnhvUKXRr2ZMG4lR8qtLp+kv7UiV00Y+nGiSxtttCyIRHCt5L5BNkXQld/RceYItau3MDOoGiBw==", + "dev": true, + "dependencies": { + "hosted-git-info": "^5.0.0", + "proc-log": "^2.0.1", + "semver": "^7.3.5", + "validate-npm-package-name": "^4.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/inquirer": { + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.4.tgz", + "integrity": "sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg==", + "dev": true, + "dependencies": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.1", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.21", + "mute-stream": "0.0.8", + "ora": "^5.4.1", + "run-async": "^2.4.0", + "rxjs": "^7.5.5", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/ip": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", + "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", + "dev": true + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "dependencies": { + "ci-info": "^2.0.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/is-core-module": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz", + "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-lambda": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", + "dev": true + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-ssh": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/is-ssh/-/is-ssh-1.4.0.tgz", + "integrity": "sha512-x7+VxdxOdlV3CYpjvRLBv5Lo9OJerlYanjwFrPR9fuGPjCiNiCzFgAWpiLAohSbsnH4ZAys3SBh+hq5rJosxUQ==", + "dev": true, + "dependencies": { + "protocols": "^2.0.1" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-text-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz", + "integrity": "sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==", + "dev": true, + "dependencies": { + "text-extensions": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "dev": true + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "node_modules/json-stringify-nice": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/json-stringify-nice/-/json-stringify-nice-1.1.4.tgz", + "integrity": "sha512-5Z5RFW63yxReJ7vANgW6eZFGWaQvnPE3WNmZoOJrSkGju2etKA2L5rrOa1sm877TVTFt57A80BH1bArcmlLfPw==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "dev": true + }, + "node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/jsonc-parser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz", + "integrity": "sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==", + "dev": true + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", + "dev": true, + "engines": [ + "node >= 0.2.0" + ] + }, + "node_modules/JSONStream": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "dev": true, + "dependencies": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + }, + "bin": { + "JSONStream": "bin.js" + }, + "engines": { + "node": "*" + } + }, + "node_modules/just-diff": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/just-diff/-/just-diff-5.1.1.tgz", + "integrity": "sha512-u8HXJ3HlNrTzY7zrYYKjNEfBlyjqhdBkoyTVdjtn7p02RJD5NvR8rIClzeGA7t+UYP1/7eAkWNLU0+P3QrEqKQ==", + "dev": true + }, + "node_modules/just-diff-apply": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/just-diff-apply/-/just-diff-apply-5.4.1.tgz", + "integrity": "sha512-AAV5Jw7tsniWwih8Ly3fXxEZ06y+6p5TwQMsw0dzZ/wPKilzyDgdAnL0Ug4NNIquPUOh1vfFWEHbmXUqM5+o8g==", + "dev": true + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lerna": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/lerna/-/lerna-5.4.3.tgz", + "integrity": "sha512-PypijMk4Jii8DoWGRLiHhBUaqpjXAmrwbs6uUZgyb07JrqCrXW3nhAyzdZE5S0rk1/sRzjd10fYmntOgNFfKBw==", + "dev": true, + "dependencies": { + "@lerna/add": "5.4.3", + "@lerna/bootstrap": "5.4.3", + "@lerna/changed": "5.4.3", + "@lerna/clean": "5.4.3", + "@lerna/cli": "5.4.3", + "@lerna/create": "5.4.3", + "@lerna/diff": "5.4.3", + "@lerna/exec": "5.4.3", + "@lerna/import": "5.4.3", + "@lerna/info": "5.4.3", + "@lerna/init": "5.4.3", + "@lerna/link": "5.4.3", + "@lerna/list": "5.4.3", + "@lerna/publish": "5.4.3", + "@lerna/run": "5.4.3", + "@lerna/version": "5.4.3", + "import-local": "^3.0.2", + "npmlog": "^6.0.2", + "nx": ">=14.5.4 < 16" + }, + "bin": { + "lerna": "cli.js" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/libnpmaccess": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/libnpmaccess/-/libnpmaccess-6.0.3.tgz", + "integrity": "sha512-4tkfUZprwvih2VUZYMozL7EMKgQ5q9VW2NtRyxWtQWlkLTAWHRklcAvBN49CVqEkhUw7vTX2fNgB5LzgUucgYg==", + "dev": true, + "dependencies": { + "aproba": "^2.0.0", + "minipass": "^3.1.1", + "npm-package-arg": "^9.0.1", + "npm-registry-fetch": "^13.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/libnpmaccess/node_modules/hosted-git-info": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.1.0.tgz", + "integrity": "sha512-Ek+QmMEqZF8XrbFdwoDjSbm7rT23pCgEMOJmz6GPk/s4yH//RQfNPArhIxbguNxROq/+5lNBwCDHMhA903Kx1Q==", + "dev": true, + "dependencies": { + "lru-cache": "^7.5.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/libnpmaccess/node_modules/npm-package-arg": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.0.tgz", + "integrity": "sha512-4J0GL+u2Nh6OnhvUKXRr2ZMG4lR8qtLp+kv7UiV00Y+nGiSxtttCyIRHCt5L5BNkXQld/RceYItau3MDOoGiBw==", + "dev": true, + "dependencies": { + "hosted-git-info": "^5.0.0", + "proc-log": "^2.0.1", + "semver": "^7.3.5", + "validate-npm-package-name": "^4.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/libnpmpublish": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/libnpmpublish/-/libnpmpublish-6.0.4.tgz", + "integrity": "sha512-lvAEYW8mB8QblL6Q/PI/wMzKNvIrF7Kpujf/4fGS/32a2i3jzUXi04TNyIBcK6dQJ34IgywfaKGh+Jq4HYPFmg==", + "dev": true, + "dependencies": { + "normalize-package-data": "^4.0.0", + "npm-package-arg": "^9.0.1", + "npm-registry-fetch": "^13.0.0", + "semver": "^7.3.7", + "ssri": "^9.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/libnpmpublish/node_modules/hosted-git-info": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.1.0.tgz", + "integrity": "sha512-Ek+QmMEqZF8XrbFdwoDjSbm7rT23pCgEMOJmz6GPk/s4yH//RQfNPArhIxbguNxROq/+5lNBwCDHMhA903Kx1Q==", + "dev": true, + "dependencies": { + "lru-cache": "^7.5.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/libnpmpublish/node_modules/normalize-package-data": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-4.0.1.tgz", + "integrity": "sha512-EBk5QKKuocMJhB3BILuKhmaPjI8vNRSpIfO9woLC6NyHVkKKdVEdAO1mrT0ZfxNR1lKwCcTkuZfmGIFdizZ8Pg==", + "dev": true, + "dependencies": { + "hosted-git-info": "^5.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/libnpmpublish/node_modules/npm-package-arg": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.0.tgz", + "integrity": "sha512-4J0GL+u2Nh6OnhvUKXRr2ZMG4lR8qtLp+kv7UiV00Y+nGiSxtttCyIRHCt5L5BNkXQld/RceYItau3MDOoGiBw==", + "dev": true, + "dependencies": { + "hosted-git-info": "^5.0.0", + "proc-log": "^2.0.1", + "semver": "^7.3.5", + "validate-npm-package-name": "^4.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "node_modules/load-json-file": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-6.2.0.tgz", + "integrity": "sha512-gUD/epcRms75Cw8RT1pUdHugZYM5ce64ucs2GEISABwkRsOQr0q2wm/MV2TKThycIe5e0ytRweW2RZxclogCdQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.15", + "parse-json": "^5.0.0", + "strip-bom": "^4.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/load-json-file/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lodash.ismatch": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz", + "integrity": "sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g==", + "dev": true + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lru-cache": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.0.tgz", + "integrity": "sha512-EIRtP1GrSJny0dqb50QXRUNBxHJhcpxHC++M5tD7RYbvLLn5KVWKsbyswSSqDuU15UFi3bgTQIY8nhDMeF6aDQ==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/make-fetch-happen": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz", + "integrity": "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==", + "dev": true, + "dependencies": { + "agentkeepalive": "^4.2.1", + "cacache": "^16.1.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^2.0.3", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^9.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/map-obj": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", + "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/meow": { + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", + "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", + "dev": true, + "dependencies": { + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/meow/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "node_modules/meow/node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/meow/node_modules/read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/meow/node_modules/read-pkg-up/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/meow/node_modules/read-pkg/node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/meow/node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/meow/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/meow/node_modules/type-fest": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "dev": true + }, + "node_modules/minimist-options": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", + "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", + "dev": true, + "dependencies": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0", + "kind-of": "^6.0.3" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/minipass": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz", + "integrity": "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-fetch": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz", + "integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==", + "dev": true, + "dependencies": { + "minipass": "^3.1.6", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, + "node_modules/minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-json-stream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz", + "integrity": "sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==", + "dev": true, + "dependencies": { + "jsonparse": "^1.3.1", + "minipass": "^3.0.0" + } + }, + "node_modules/minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-sized": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mkdirp-infer-owner": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mkdirp-infer-owner/-/mkdirp-infer-owner-2.0.0.tgz", + "integrity": "sha512-sdqtiFt3lkOaYvTXSRIUjkIdPTcxgv5+fgqYE/5qgwdw12cOrAuzzgzvVExIkH/ul1oeHN3bCLOWSG3XOqbKKw==", + "dev": true, + "dependencies": { + "chownr": "^2.0.0", + "infer-owner": "^1.0.4", + "mkdirp": "^1.0.3" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/modify-values": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz", + "integrity": "sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/multimatch": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-5.0.0.tgz", + "integrity": "sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA==", + "dev": true, + "dependencies": { + "@types/minimatch": "^3.0.3", + "array-differ": "^3.0.0", + "array-union": "^2.1.0", + "arrify": "^2.0.1", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/multimatch/node_modules/arrify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "node_modules/node-addon-api": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", + "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", + "dev": true + }, + "node_modules/node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "dev": true, + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-fetch/node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true + }, + "node_modules/node-fetch/node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true + }, + "node_modules/node-fetch/node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/node-gyp": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.1.0.tgz", + "integrity": "sha512-HkmN0ZpQJU7FLbJauJTHkHlSVAXlNGDAzH/VYFZGDOnFyn/Na3GlNJfkudmufOdS6/jNFhy88ObzL7ERz9es1g==", + "dev": true, + "dependencies": { + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^10.0.3", + "nopt": "^5.0.0", + "npmlog": "^6.0.0", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^2.0.2" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": "^12.22 || ^14.13 || >=16" + } + }, + "node_modules/node-gyp-build": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.5.0.tgz", + "integrity": "sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg==", + "dev": true, + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, + "node_modules/node-gyp/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "dev": true, + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/normalize-package-data": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-bundled": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz", + "integrity": "sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==", + "dev": true, + "dependencies": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "node_modules/npm-install-checks": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-5.0.0.tgz", + "integrity": "sha512-65lUsMI8ztHCxFz5ckCEC44DRvEGdZX5usQFriauxHEwt7upv1FKaQEmAtU0YnOAdwuNWCmk64xYiQABNrEyLA==", + "dev": true, + "dependencies": { + "semver": "^7.1.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm-normalize-package-bin": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", + "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", + "dev": true + }, + "node_modules/npm-package-arg": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.1.1.tgz", + "integrity": "sha512-CsP95FhWQDwNqiYS+Q0mZ7FAEDytDZAkNxQqea6IaAFJTAY9Lhhqyl0irU/6PMc7BGfUmnsbHcqxJD7XuVM/rg==", + "dev": true, + "dependencies": { + "hosted-git-info": "^3.0.6", + "semver": "^7.0.0", + "validate-npm-package-name": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm-package-arg/node_modules/builtins": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", + "integrity": "sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==", + "dev": true + }, + "node_modules/npm-package-arg/node_modules/hosted-git-info": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.8.tgz", + "integrity": "sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm-package-arg/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm-package-arg/node_modules/validate-npm-package-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", + "integrity": "sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==", + "dev": true, + "dependencies": { + "builtins": "^1.0.3" + } + }, + "node_modules/npm-packlist": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-5.1.2.tgz", + "integrity": "sha512-rQiBDNmt1H1jNhFEo9ilTD7ZJXd6cvHSmBK+waIBu886v6OyLWjZqb1RD9viR7rgG0AAe29FYnOXcO26TRxT/Q==", + "dev": true, + "dependencies": { + "glob": "^8.0.1", + "ignore-walk": "^5.0.1", + "npm-bundled": "^1.1.2", + "npm-normalize-package-bin": "^2.0.0" + }, + "bin": { + "npm-packlist": "bin/index.js" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm-packlist/node_modules/npm-normalize-package-bin": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz", + "integrity": "sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==", + "dev": true, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm-pick-manifest": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-7.0.1.tgz", + "integrity": "sha512-IA8+tuv8KujbsbLQvselW2XQgmXWS47t3CB0ZrzsRZ82DbDfkcFunOaPm4X7qNuhMfq+FmV7hQT4iFVpHqV7mg==", + "dev": true, + "dependencies": { + "npm-install-checks": "^5.0.0", + "npm-normalize-package-bin": "^1.0.1", + "npm-package-arg": "^9.0.0", + "semver": "^7.3.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm-pick-manifest/node_modules/hosted-git-info": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.1.0.tgz", + "integrity": "sha512-Ek+QmMEqZF8XrbFdwoDjSbm7rT23pCgEMOJmz6GPk/s4yH//RQfNPArhIxbguNxROq/+5lNBwCDHMhA903Kx1Q==", + "dev": true, + "dependencies": { + "lru-cache": "^7.5.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm-pick-manifest/node_modules/npm-package-arg": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.0.tgz", + "integrity": "sha512-4J0GL+u2Nh6OnhvUKXRr2ZMG4lR8qtLp+kv7UiV00Y+nGiSxtttCyIRHCt5L5BNkXQld/RceYItau3MDOoGiBw==", + "dev": true, + "dependencies": { + "hosted-git-info": "^5.0.0", + "proc-log": "^2.0.1", + "semver": "^7.3.5", + "validate-npm-package-name": "^4.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm-registry-fetch": { + "version": "13.3.1", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-13.3.1.tgz", + "integrity": "sha512-eukJPi++DKRTjSBRcDZSDDsGqRK3ehbxfFUcgaRd0Yp6kRwOwh2WVn0r+8rMB4nnuzvAk6rQVzl6K5CkYOmnvw==", + "dev": true, + "dependencies": { + "make-fetch-happen": "^10.0.6", + "minipass": "^3.1.6", + "minipass-fetch": "^2.0.3", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.1.2", + "npm-package-arg": "^9.0.1", + "proc-log": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm-registry-fetch/node_modules/hosted-git-info": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.1.0.tgz", + "integrity": "sha512-Ek+QmMEqZF8XrbFdwoDjSbm7rT23pCgEMOJmz6GPk/s4yH//RQfNPArhIxbguNxROq/+5lNBwCDHMhA903Kx1Q==", + "dev": true, + "dependencies": { + "lru-cache": "^7.5.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm-registry-fetch/node_modules/npm-package-arg": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.0.tgz", + "integrity": "sha512-4J0GL+u2Nh6OnhvUKXRr2ZMG4lR8qtLp+kv7UiV00Y+nGiSxtttCyIRHCt5L5BNkXQld/RceYItau3MDOoGiBw==", + "dev": true, + "dependencies": { + "hosted-git-info": "^5.0.0", + "proc-log": "^2.0.1", + "semver": "^7.3.5", + "validate-npm-package-name": "^4.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npmlog": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", + "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", + "dev": true, + "dependencies": { + "are-we-there-yet": "^3.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^4.0.3", + "set-blocking": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/nx": { + "version": "14.5.10", + "resolved": "https://registry.npmjs.org/nx/-/nx-14.5.10.tgz", + "integrity": "sha512-dqiV+zY32k98mfKFTgiQyYd9HYZmB1zoJj6gYniEuqzs6CKp8ZSpeRDaVQRxR6wEMvW9MSTA9kBg8sJ78W/NZg==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@nrwl/cli": "14.5.10", + "@nrwl/tao": "14.5.10", + "@parcel/watcher": "2.0.4", + "chalk": "4.1.0", + "chokidar": "^3.5.1", + "cli-cursor": "3.1.0", + "cli-spinners": "2.6.1", + "cliui": "^7.0.2", + "dotenv": "~10.0.0", + "enquirer": "~2.3.6", + "fast-glob": "3.2.7", + "figures": "3.2.0", + "flat": "^5.0.2", + "fs-extra": "^10.1.0", + "glob": "7.1.4", + "ignore": "^5.0.4", + "js-yaml": "4.1.0", + "jsonc-parser": "3.0.0", + "minimatch": "3.0.5", + "npm-run-path": "^4.0.1", + "open": "^8.4.0", + "semver": "7.3.4", + "string-width": "^4.2.3", + "tar-stream": "~2.2.0", + "tmp": "~0.2.1", + "tsconfig-paths": "^3.9.0", + "tslib": "^2.3.0", + "v8-compile-cache": "2.3.0", + "yargs": "^17.4.0", + "yargs-parser": "21.0.1" + }, + "bin": { + "nx": "bin/nx.js" + }, + "peerDependencies": { + "@swc-node/register": "^1.4.2", + "@swc/core": "^1.2.173" + }, + "peerDependenciesMeta": { + "@swc-node/register": { + "optional": true + }, + "@swc/core": { + "optional": true + } + } + }, + "node_modules/nx/node_modules/chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/nx/node_modules/fast-glob": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", + "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nx/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/nx/node_modules/glob": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/nx/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/nx/node_modules/minimatch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/nx/node_modules/semver": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", + "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/nx/node_modules/tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dev": true, + "dependencies": { + "rimraf": "^3.0.0" + }, + "engines": { + "node": ">=8.17.0" + } + }, + "node_modules/nx/node_modules/yargs": { + "version": "17.5.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.5.1.tgz", + "integrity": "sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/nx/node_modules/yargs-parser": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.1.tgz", + "integrity": "sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", + "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", + "dev": true, + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dev": true, + "dependencies": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-map-series": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map-series/-/p-map-series-2.1.0.tgz", + "integrity": "sha512-RpYIIK1zXSNEOdwxcfe7FdvGcs7+y5n8rifMhMNWvaxRNMPINJHF5GDeuVxWqnfrcHPSCnp7Oo5yNXHId9Av2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-pipe": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-pipe/-/p-pipe-3.1.0.tgz", + "integrity": "sha512-08pj8ATpzMR0Y80x50yJHn37NF6vjrqHutASaX5LiH5npS9XPvrUmscd9MF5R4fuYRHOxQR1FfMIlF7AzwoPqw==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-queue": { + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz", + "integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==", + "dev": true, + "dependencies": { + "eventemitter3": "^4.0.4", + "p-timeout": "^3.2.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-reduce": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-2.1.0.tgz", + "integrity": "sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-timeout": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", + "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", + "dev": true, + "dependencies": { + "p-finally": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/p-waterfall": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/p-waterfall/-/p-waterfall-2.1.1.tgz", + "integrity": "sha512-RRTnDb2TBG/epPRI2yYXsimO0v3BXC8Yd3ogr1545IaqKK17VGhbWVeGGN+XfCm/08OK8635nH31c8bATkHuSw==", + "dev": true, + "dependencies": { + "p-reduce": "^2.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pacote": { + "version": "13.6.2", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-13.6.2.tgz", + "integrity": "sha512-Gu8fU3GsvOPkak2CkbojR7vjs3k3P9cA6uazKTHdsdV0gpCEQq2opelnEv30KRQWgVzP5Vd/5umjcedma3MKtg==", + "dev": true, + "dependencies": { + "@npmcli/git": "^3.0.0", + "@npmcli/installed-package-contents": "^1.0.7", + "@npmcli/promise-spawn": "^3.0.0", + "@npmcli/run-script": "^4.1.0", + "cacache": "^16.0.0", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "infer-owner": "^1.0.4", + "minipass": "^3.1.6", + "mkdirp": "^1.0.4", + "npm-package-arg": "^9.0.0", + "npm-packlist": "^5.1.0", + "npm-pick-manifest": "^7.0.0", + "npm-registry-fetch": "^13.0.1", + "proc-log": "^2.0.0", + "promise-retry": "^2.0.1", + "read-package-json": "^5.0.0", + "read-package-json-fast": "^2.0.3", + "rimraf": "^3.0.2", + "ssri": "^9.0.0", + "tar": "^6.1.11" + }, + "bin": { + "pacote": "lib/bin.js" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/pacote/node_modules/hosted-git-info": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.1.0.tgz", + "integrity": "sha512-Ek+QmMEqZF8XrbFdwoDjSbm7rT23pCgEMOJmz6GPk/s4yH//RQfNPArhIxbguNxROq/+5lNBwCDHMhA903Kx1Q==", + "dev": true, + "dependencies": { + "lru-cache": "^7.5.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/pacote/node_modules/npm-package-arg": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.0.tgz", + "integrity": "sha512-4J0GL+u2Nh6OnhvUKXRr2ZMG4lR8qtLp+kv7UiV00Y+nGiSxtttCyIRHCt5L5BNkXQld/RceYItau3MDOoGiBw==", + "dev": true, + "dependencies": { + "hosted-git-info": "^5.0.0", + "proc-log": "^2.0.1", + "semver": "^7.3.5", + "validate-npm-package-name": "^4.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-conflict-json": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/parse-conflict-json/-/parse-conflict-json-2.0.2.tgz", + "integrity": "sha512-jDbRGb00TAPFsKWCpZZOT93SxVP9nONOSgES3AevqRq/CHvavEBvKAjxX9p5Y5F0RZLxH9Ufd9+RwtCsa+lFDA==", + "dev": true, + "dependencies": { + "json-parse-even-better-errors": "^2.3.1", + "just-diff": "^5.0.1", + "just-diff-apply": "^5.2.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/parse-path/-/parse-path-5.0.0.tgz", + "integrity": "sha512-qOpH55/+ZJ4jUu/oLO+ifUKjFPNZGfnPJtzvGzKN/4oLMil5m9OH4VpOj6++9/ytJcfks4kzH2hhi87GL/OU9A==", + "dev": true, + "dependencies": { + "protocols": "^2.0.0" + } + }, + "node_modules/parse-url": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/parse-url/-/parse-url-7.0.2.tgz", + "integrity": "sha512-PqO4Z0eCiQ08Wj6QQmrmp5YTTxpYfONdOEamrtvK63AmzXpcavIVQubGHxOEwiIoDZFb8uDOoQFS0NCcjqIYQg==", + "dev": true, + "dependencies": { + "is-ssh": "^1.4.0", + "normalize-url": "^6.1.0", + "parse-path": "^5.0.0", + "protocols": "^2.0.1" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-5.0.0.tgz", + "integrity": "sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/proc-log": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-2.0.1.tgz", + "integrity": "sha512-Kcmo2FhfDTXdcbfDH76N7uBYHINxc/8GW7UAVuVP9I+Va3uHSerrnKV6dLooga/gh7GlgzuCCr/eoldnL1muGw==", + "dev": true, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "node_modules/promise-all-reject-late": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-all-reject-late/-/promise-all-reject-late-1.0.1.tgz", + "integrity": "sha512-vuf0Lf0lOxyQREH7GDIOUMLS7kz+gs8i6B+Yi8dC68a2sychGrHTJYghMBD6k7eUcH0H5P73EckCA48xijWqXw==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/promise-call-limit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-call-limit/-/promise-call-limit-1.0.1.tgz", + "integrity": "sha512-3+hgaa19jzCGLuSCbieeRsu5C2joKfYn8pY6JAuXFRVfF4IO+L7UPpFWNTeWT9pM7uhskvbPPd/oEOktCn317Q==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", + "dev": true + }, + "node_modules/promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "dev": true, + "dependencies": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/promzard": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/promzard/-/promzard-0.3.0.tgz", + "integrity": "sha512-JZeYqd7UAcHCwI+sTOeUDYkvEU+1bQ7iE0UT1MgB/tERkAPkesW46MrpIySzODi+owTjZtiF8Ay5j9m60KmMBw==", + "dev": true, + "dependencies": { + "read": "1" + } + }, + "node_modules/proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", + "dev": true + }, + "node_modules/protocols": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/protocols/-/protocols-2.0.1.tgz", + "integrity": "sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q==", + "dev": true + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", + "dev": true, + "engines": { + "node": ">=0.6.0", + "teleport": ">=0.2.0" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/quick-lru": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", + "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/read": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", + "integrity": "sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==", + "dev": true, + "dependencies": { + "mute-stream": "~0.0.4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/read-cmd-shim": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/read-cmd-shim/-/read-cmd-shim-3.0.1.tgz", + "integrity": "sha512-kEmDUoYf/CDy8yZbLTmhB1X9kkjf9Q80PCNsDMb7ufrGd6zZSQA1+UyjrO+pZm5K/S4OXCWJeiIt1JA8kAsa6g==", + "dev": true, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/read-package-json": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-5.0.2.tgz", + "integrity": "sha512-BSzugrt4kQ/Z0krro8zhTwV1Kd79ue25IhNN/VtHFy1mG/6Tluyi+msc0UpwaoQzxSHa28mntAjIZY6kEgfR9Q==", + "dev": true, + "dependencies": { + "glob": "^8.0.1", + "json-parse-even-better-errors": "^2.3.1", + "normalize-package-data": "^4.0.0", + "npm-normalize-package-bin": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/read-package-json-fast": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz", + "integrity": "sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ==", + "dev": true, + "dependencies": { + "json-parse-even-better-errors": "^2.3.0", + "npm-normalize-package-bin": "^1.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/read-package-json/node_modules/hosted-git-info": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.1.0.tgz", + "integrity": "sha512-Ek+QmMEqZF8XrbFdwoDjSbm7rT23pCgEMOJmz6GPk/s4yH//RQfNPArhIxbguNxROq/+5lNBwCDHMhA903Kx1Q==", + "dev": true, + "dependencies": { + "lru-cache": "^7.5.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/read-package-json/node_modules/normalize-package-data": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-4.0.1.tgz", + "integrity": "sha512-EBk5QKKuocMJhB3BILuKhmaPjI8vNRSpIfO9woLC6NyHVkKKdVEdAO1mrT0ZfxNR1lKwCcTkuZfmGIFdizZ8Pg==", + "dev": true, + "dependencies": { + "hosted-git-info": "^5.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/read-package-json/node_modules/npm-normalize-package-bin": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz", + "integrity": "sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==", + "dev": true, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", + "dev": true, + "dependencies": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", + "integrity": "sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw==", + "dev": true, + "dependencies": { + "find-up": "^2.0.0", + "read-pkg": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", + "dev": true, + "dependencies": { + "locate-path": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", + "dev": true, + "dependencies": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "dependencies": { + "p-try": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", + "dev": true, + "dependencies": { + "p-limit": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "node_modules/read-pkg/node_modules/load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg/node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/read-pkg/node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "dev": true, + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg/node_modules/path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "dependencies": { + "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/read-pkg/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdir-scoped-modules": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz", + "integrity": "sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw==", + "dev": true, + "dependencies": { + "debuglog": "^1.0.1", + "dezalgo": "^1.0.0", + "graceful-fs": "^4.1.2", + "once": "^1.3.0" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "dev": true, + "dependencies": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rxjs": { + "version": "7.5.6", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.6.tgz", + "integrity": "sha512-dnyv2/YsXhnm461G+R/Pe5bWP41Nm6LBXEYWI6eiFP4fiwx6WRI/CD0zbdVAudd9xwLEF2IDcKXLHit0FYjUzw==", + "dev": true, + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "dev": true + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true, + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.0.tgz", + "integrity": "sha512-scnOe9y4VuiNUULJN72GrM26BNOjVsfPXI+j+98PkyEfsIXroa5ofyjT+FzGvn/xHs73U2JtoBYAVx9Hl4quSA==", + "dev": true, + "dependencies": { + "ip": "^2.0.0", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.13.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", + "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", + "dev": true, + "dependencies": { + "agent-base": "^6.0.2", + "debug": "^4.3.3", + "socks": "^2.6.2" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/sort-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-4.2.0.tgz", + "integrity": "sha512-aUYIEU/UviqPgc8mHR6IW1EGxkAXpeRETYcrzg8cLAvUPZcpAlleSXHV2mY7G12GphSH6Gzv+4MMVSSkbdteHg==", + "dev": true, + "dependencies": { + "is-plain-obj": "^2.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/sort-keys/node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", + "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", + "dev": true + }, + "node_modules/split": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", + "dev": true, + "dependencies": { + "through": "2" + }, + "engines": { + "node": "*" + } + }, + "node_modules/split2": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", + "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", + "dev": true, + "dependencies": { + "readable-stream": "^3.0.0" + } + }, + "node_modules/ssri": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", + "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", + "dev": true, + "dependencies": { + "minipass": "^3.1.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "dependencies": { + "min-indent": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strong-log-transformer": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/strong-log-transformer/-/strong-log-transformer-2.1.0.tgz", + "integrity": "sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA==", + "dev": true, + "dependencies": { + "duplexer": "^0.1.1", + "minimist": "^1.2.0", + "through": "^2.3.4" + }, + "bin": { + "sl-log-transformer": "bin/sl-log-transformer.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tar": { + "version": "6.1.11", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", + "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", + "dev": true, + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dev": true, + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/temp-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", + "integrity": "sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/text-extensions": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz", + "integrity": "sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true + }, + "node_modules/through2": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", + "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", + "dev": true, + "dependencies": { + "readable-stream": "3" + } + }, + "node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/tr46": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", + "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "dev": true, + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/treeverse": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/treeverse/-/treeverse-2.0.0.tgz", + "integrity": "sha512-N5gJCkLu1aXccpOTtqV6ddSEi6ZmGkh3hjmbu1IjcavJK4qyOVQmi0myQKM7z5jVGmD68SJoliaVrMmVObhj6A==", + "dev": true, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/trim-newlines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", + "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/tsconfig-paths": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", + "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", + "dev": true, + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.1", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tsconfig-paths/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + }, + "node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", + "dev": true + }, + "node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, + "node_modules/typescript": { + "version": "4.7.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", + "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/uglify-js": { + "version": "3.17.0", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.0.tgz", + "integrity": "sha512-aTeNPVmgIMPpm1cxXr2Q/nEbvkmV8yq66F3om7X3P/cvOXQ0TMQ64Wk63iyT1gPlmdmGzjGpyLh1f3y8MZWXGg==", + "dev": true, + "optional": true, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/unique-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-2.0.0.tgz", + "integrity": "sha512-tpzoz2RpZ//6Zt4GPpOFTyrnfZuSvjIfe8lvx6Thp4yTQwJtAFwPlssEBE62VhGA2We5/COyNpcIu+OABu3/Yg==", + "dev": true, + "dependencies": { + "unique-slug": "^2.0.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4" + } + }, + "node_modules/universal-user-agent": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", + "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==", + "dev": true + }, + "node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/upath": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/upath/-/upath-2.0.1.tgz", + "integrity": "sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==", + "dev": true, + "engines": { + "node": ">=4", + "yarn": "*" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/validate-npm-package-name": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-4.0.0.tgz", + "integrity": "sha512-mzR0L8ZDktZjpX4OB46KT+56MAhl4EIazWP/+G/HPGuvfdaqg4YsCdtOm6U9+LOFyYDoh4dpnpxZRB9MQQns5Q==", + "dev": true, + "dependencies": { + "builtins": "^5.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/walk-up-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/walk-up-path/-/walk-up-path-1.0.0.tgz", + "integrity": "sha512-hwj/qMDUEjCU5h0xr90KGCf0tg0/LgJbmOWgrWKYlcJZM7XvquvUJZ0G/HMGr7F7OQMOUuPHWP9JpriinkAlkg==", + "dev": true + }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "dev": true, + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/webidl-conversions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "dev": true, + "engines": { + "node": ">=10.4" + } + }, + "node_modules/whatwg-url": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", + "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", + "dev": true, + "dependencies": { + "lodash": "^4.7.0", + "tr46": "^2.1.0", + "webidl-conversions": "^6.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "dev": true, + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "node_modules/wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", + "dev": true + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/write-json-file": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/write-json-file/-/write-json-file-4.3.0.tgz", + "integrity": "sha512-PxiShnxf0IlnQuMYOPPhPkhExoCQuTUNPOa/2JWCYTmBquU9njyyDuwRKN26IZBlp4yn1nt+Agh2HOOBl+55HQ==", + "dev": true, + "dependencies": { + "detect-indent": "^6.0.0", + "graceful-fs": "^4.1.15", + "is-plain-obj": "^2.0.0", + "make-dir": "^3.0.0", + "sort-keys": "^4.0.0", + "write-file-atomic": "^3.0.0" + }, + "engines": { + "node": ">=8.3" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/write-json-file/node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/write-json-file/node_modules/write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "node_modules/write-pkg": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/write-pkg/-/write-pkg-4.0.0.tgz", + "integrity": "sha512-v2UQ+50TNf2rNHJ8NyWttfm/EJUBWMJcx6ZTYZr6Qp52uuegWw/lBkCtCbnYZEmPRNL61m+u67dAmGxo+HTULA==", + "dev": true, + "dependencies": { + "sort-keys": "^2.0.0", + "type-fest": "^0.4.1", + "write-json-file": "^3.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/write-pkg/node_modules/detect-indent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz", + "integrity": "sha512-rlpvsxUtM0PQvy9iZe640/IWwWYyBsTApREbA1pHOpmOUIl9MkP/U4z7vTtg4Oaojvqhxt7sdufnT0EzGaR31g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/write-pkg/node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/write-pkg/node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/write-pkg/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/write-pkg/node_modules/sort-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", + "integrity": "sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg==", + "dev": true, + "dependencies": { + "is-plain-obj": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/write-pkg/node_modules/type-fest": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.4.1.tgz", + "integrity": "sha512-IwzA/LSfD2vC1/YDYMv/zHP4rDF1usCwllsDpbolT3D4fUepIO7f9K70jjmUewU/LmGUKJcwcVtDCpnKk4BPMw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/write-pkg/node_modules/write-file-atomic": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", + "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + }, + "node_modules/write-pkg/node_modules/write-json-file": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/write-json-file/-/write-json-file-3.2.0.tgz", + "integrity": "sha512-3xZqT7Byc2uORAatYiP3DHUUAVEkNOswEWNs9H5KXiicRTvzYzYqKjYc4G7p+8pltvAw641lVByKVtMpf+4sYQ==", + "dev": true, + "dependencies": { + "detect-indent": "^5.0.0", + "graceful-fs": "^4.1.15", + "make-dir": "^2.1.0", + "pify": "^4.0.1", + "sort-keys": "^2.0.0", + "write-file-atomic": "^2.4.2" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true, + "engines": { + "node": ">=0.4" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "dev": true, + "engines": { + "node": ">=10" + } + } + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "dev": true, + "requires": { + "@babel/highlight": "^7.18.6" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz", + "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==", + "dev": true + }, + "@babel/highlight": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.18.6", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "@gar/promisify": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", + "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", + "dev": true + }, + "@hutson/parse-repository-url": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz", + "integrity": "sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q==", + "dev": true + }, + "@isaacs/string-locale-compare": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@isaacs/string-locale-compare/-/string-locale-compare-1.1.0.tgz", + "integrity": "sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ==", + "dev": true + }, + "@lerna/add": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/add/-/add-5.4.3.tgz", + "integrity": "sha512-wBjBHX/A0nSiVGJDq5wNpqR+zrxKFREeKrqvIXGmAgcwpDjp76JLVhdSdQns+X+AYsf13NFaNhBqfGlF5SZNnQ==", + "dev": true, + "requires": { + "@lerna/bootstrap": "5.4.3", + "@lerna/command": "5.4.3", + "@lerna/filter-options": "5.4.3", + "@lerna/npm-conf": "5.4.3", + "@lerna/validation-error": "5.4.3", + "dedent": "^0.7.0", + "npm-package-arg": "8.1.1", + "p-map": "^4.0.0", + "pacote": "^13.6.1", + "semver": "^7.3.4" + } + }, + "@lerna/bootstrap": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/bootstrap/-/bootstrap-5.4.3.tgz", + "integrity": "sha512-9mruEpXD2p8mG9Feak0QzU+JcROsJ8J0MvY7gTGtUqQJqBIA6HGEYXQueHbcl+jGdZyTZOz139KsavPui55QEQ==", + "dev": true, + "requires": { + "@lerna/command": "5.4.3", + "@lerna/filter-options": "5.4.3", + "@lerna/has-npm-version": "5.4.3", + "@lerna/npm-install": "5.4.3", + "@lerna/package-graph": "5.4.3", + "@lerna/pulse-till-done": "5.4.3", + "@lerna/rimraf-dir": "5.4.3", + "@lerna/run-lifecycle": "5.4.3", + "@lerna/run-topologically": "5.4.3", + "@lerna/symlink-binary": "5.4.3", + "@lerna/symlink-dependencies": "5.4.3", + "@lerna/validation-error": "5.4.3", + "@npmcli/arborist": "5.3.0", + "dedent": "^0.7.0", + "get-port": "^5.1.1", + "multimatch": "^5.0.0", + "npm-package-arg": "8.1.1", + "npmlog": "^6.0.2", + "p-map": "^4.0.0", + "p-map-series": "^2.1.0", + "p-waterfall": "^2.1.1", + "semver": "^7.3.4" + } + }, + "@lerna/changed": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/changed/-/changed-5.4.3.tgz", + "integrity": "sha512-q1ARClN0pLZ53hBPiR4TJB6GGq17Yhwb6iKwQryZBWuOEc87NqqRtIPWswk5NISj2qcPQlbyrnB3RshwLkyo7w==", + "dev": true, + "requires": { + "@lerna/collect-updates": "5.4.3", + "@lerna/command": "5.4.3", + "@lerna/listable": "5.4.3", + "@lerna/output": "5.4.3" + } + }, + "@lerna/check-working-tree": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/check-working-tree/-/check-working-tree-5.4.3.tgz", + "integrity": "sha512-OnGqIDW8sRcAQDV8mdtvYIh0EIv2FXm+4/qKAveFhyDkWWpnUF/ZSIa/CFVHYoKFFzb5WOBouml2oqWPyFHhbA==", + "dev": true, + "requires": { + "@lerna/collect-uncommitted": "5.4.3", + "@lerna/describe-ref": "5.4.3", + "@lerna/validation-error": "5.4.3" + } + }, + "@lerna/child-process": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/child-process/-/child-process-5.4.3.tgz", + "integrity": "sha512-p7wJ8QT8kXHk4EAy/oyjCD603n1F61Tm4l6thF1h9MAw3ejSvvUZ0BKSg9vPoZ/YMAC9ZuVm1mFsyoi5RlvIHw==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "execa": "^5.0.0", + "strong-log-transformer": "^2.1.0" + } + }, + "@lerna/clean": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/clean/-/clean-5.4.3.tgz", + "integrity": "sha512-Kl04A5NqywbBf7azSt9UJqHzRCXogHNpEh3Yng5+Y4ggunP4zVabzdoYGdggS4AsbDuIOKECx9BmCiDwJ4Qv8g==", + "dev": true, + "requires": { + "@lerna/command": "5.4.3", + "@lerna/filter-options": "5.4.3", + "@lerna/prompt": "5.4.3", + "@lerna/pulse-till-done": "5.4.3", + "@lerna/rimraf-dir": "5.4.3", + "p-map": "^4.0.0", + "p-map-series": "^2.1.0", + "p-waterfall": "^2.1.1" + } + }, + "@lerna/cli": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/cli/-/cli-5.4.3.tgz", + "integrity": "sha512-avnRUZ51nSZMR+tOcMQZ61hnVbDNdmyaVRxfSLByH5OFY+KPnfaTPv1z4ub+rEtV2NTI5DYWAqxupNGLuu9bQQ==", + "dev": true, + "requires": { + "@lerna/global-options": "5.4.3", + "dedent": "^0.7.0", + "npmlog": "^6.0.2", + "yargs": "^16.2.0" + } + }, + "@lerna/collect-uncommitted": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/collect-uncommitted/-/collect-uncommitted-5.4.3.tgz", + "integrity": "sha512-/0u95DbwP1+orGifkPRqaIqD8Ui2vpy9KmeuHTui+4iR/ZvZbgIouMdOhH+fU9e5hfLF6geUKnEFjL+Lxa4qdg==", + "dev": true, + "requires": { + "@lerna/child-process": "5.4.3", + "chalk": "^4.1.0", + "npmlog": "^6.0.2" + } + }, + "@lerna/collect-updates": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/collect-updates/-/collect-updates-5.4.3.tgz", + "integrity": "sha512-TU3+hcwqHWKSK0J+NWNo5pjP7nnCzhnFfL/UfCG6oNAUb6PnmKSgZ9NqjOXja1WjJPrtFDIGoIYzLJZCePFyLw==", + "dev": true, + "requires": { + "@lerna/child-process": "5.4.3", + "@lerna/describe-ref": "5.4.3", + "minimatch": "^3.0.4", + "npmlog": "^6.0.2", + "slash": "^3.0.0" + } + }, + "@lerna/command": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/command/-/command-5.4.3.tgz", + "integrity": "sha512-xBdbqcvHeWltH4QvWcmH9dKjWzD+KXfhSP0NBgwED8ZNMxSuzBz2OS3Ps8KbLemXNP8P0yhjoPgitGmxxeY/ow==", + "dev": true, + "requires": { + "@lerna/child-process": "5.4.3", + "@lerna/package-graph": "5.4.3", + "@lerna/project": "5.4.3", + "@lerna/validation-error": "5.4.3", + "@lerna/write-log-file": "5.4.3", + "clone-deep": "^4.0.1", + "dedent": "^0.7.0", + "execa": "^5.0.0", + "is-ci": "^2.0.0", + "npmlog": "^6.0.2" + } + }, + "@lerna/conventional-commits": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/conventional-commits/-/conventional-commits-5.4.3.tgz", + "integrity": "sha512-GHZdpCUMqalO692O7Mqj5idYftZWaCylb4TSPkHEU8xSfxtufp8lM+Q8Xxv35ymzs0pBrmzSLZIpIMQ9awDABg==", + "dev": true, + "requires": { + "@lerna/validation-error": "5.4.3", + "conventional-changelog-angular": "^5.0.12", + "conventional-changelog-core": "^4.2.4", + "conventional-recommended-bump": "^6.1.0", + "fs-extra": "^9.1.0", + "get-stream": "^6.0.0", + "npm-package-arg": "8.1.1", + "npmlog": "^6.0.2", + "pify": "^5.0.0", + "semver": "^7.3.4" + } + }, + "@lerna/create": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/create/-/create-5.4.3.tgz", + "integrity": "sha512-VLrcfjBNzhUie5tLWSEa203BljirEG7OH62lgoLqR9qA/FVozoWrRKmly/EVw8Q7+5UNw/ciTzXnbm0BPXl6tg==", + "dev": true, + "requires": { + "@lerna/child-process": "5.4.3", + "@lerna/command": "5.4.3", + "@lerna/npm-conf": "5.4.3", + "@lerna/validation-error": "5.4.3", + "dedent": "^0.7.0", + "fs-extra": "^9.1.0", + "globby": "^11.0.2", + "init-package-json": "^3.0.2", + "npm-package-arg": "8.1.1", + "p-reduce": "^2.1.0", + "pacote": "^13.6.1", + "pify": "^5.0.0", + "semver": "^7.3.4", + "slash": "^3.0.0", + "validate-npm-package-license": "^3.0.4", + "validate-npm-package-name": "^4.0.0", + "whatwg-url": "^8.4.0", + "yargs-parser": "20.2.4" + } + }, + "@lerna/create-symlink": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/create-symlink/-/create-symlink-5.4.3.tgz", + "integrity": "sha512-QxmKCHA5woed/qJjKNkOSgkbhhmPV3g61F499uVwPtyPivn9Y2mbeVPMQrLkb0CL9M6aJ7vE4fi6T5XMqsbNpg==", + "dev": true, + "requires": { + "cmd-shim": "^5.0.0", + "fs-extra": "^9.1.0", + "npmlog": "^6.0.2" + } + }, + "@lerna/describe-ref": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/describe-ref/-/describe-ref-5.4.3.tgz", + "integrity": "sha512-g3R5exjZy5MOcMPzgU8+t7sGEt4gGMKQLUFfg5NAceera6RGWUieY8OWL6jlacgyM4c8iyh15Tu14YwzL2DiBA==", + "dev": true, + "requires": { + "@lerna/child-process": "5.4.3", + "npmlog": "^6.0.2" + } + }, + "@lerna/diff": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/diff/-/diff-5.4.3.tgz", + "integrity": "sha512-MJKvy/XC2RpS/gqg7GguQsBv5rZm+S5P/kfnqhapXCniGviZfq+JfY5TQCsAP9umiybR2sB004K1Z7heyU8uMA==", + "dev": true, + "requires": { + "@lerna/child-process": "5.4.3", + "@lerna/command": "5.4.3", + "@lerna/validation-error": "5.4.3", + "npmlog": "^6.0.2" + } + }, + "@lerna/exec": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/exec/-/exec-5.4.3.tgz", + "integrity": "sha512-BLrva/KV6JWTV+7h7h+NQDsxpz0z1Nh99BUqqvZDzGIKMey4c1fo+CQGac77TsAophnv0ieFgHkSmrC6NXJa9g==", + "dev": true, + "requires": { + "@lerna/child-process": "5.4.3", + "@lerna/command": "5.4.3", + "@lerna/filter-options": "5.4.3", + "@lerna/profiler": "5.4.3", + "@lerna/run-topologically": "5.4.3", + "@lerna/validation-error": "5.4.3", + "p-map": "^4.0.0" + } + }, + "@lerna/filter-options": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/filter-options/-/filter-options-5.4.3.tgz", + "integrity": "sha512-581GE81BSWgS9za4tBv1nwZ2ImgH7UO3xil1b7xogvc/iGwM0MgOwt9f1MrS5ZOliNnme4cSZEGFe+QWPXCE4A==", + "dev": true, + "requires": { + "@lerna/collect-updates": "5.4.3", + "@lerna/filter-packages": "5.4.3", + "dedent": "^0.7.0", + "npmlog": "^6.0.2" + } + }, + "@lerna/filter-packages": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/filter-packages/-/filter-packages-5.4.3.tgz", + "integrity": "sha512-W5OVMUjXh/Zii17FCSbIf/6Q3Bo5ETMAWMZ6EpHSU99M0kdvgpjXj3VUSjiCzwccqIa2EZjaua0RWSbOtfZCVg==", + "dev": true, + "requires": { + "@lerna/validation-error": "5.4.3", + "multimatch": "^5.0.0", + "npmlog": "^6.0.2" + } + }, + "@lerna/get-npm-exec-opts": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/get-npm-exec-opts/-/get-npm-exec-opts-5.4.3.tgz", + "integrity": "sha512-q/3zQvlwTpAh6HVtVGOTuCGIgkhtCPK9CcHRo09c0Q3LQk5MsZYkPmJe0ujU1Gf7pILzQA5tnCy56eWT5uMPUg==", + "dev": true, + "requires": { + "npmlog": "^6.0.2" + } + }, + "@lerna/get-packed": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/get-packed/-/get-packed-5.4.3.tgz", + "integrity": "sha512-y97plqJmrTwnZE9EH0MhtwnVHOF/revnH95fD2UyUpGrxdAFvbE7rs3A9zrSxurFLn4q6qWBKONwQLccQSTBTA==", + "dev": true, + "requires": { + "fs-extra": "^9.1.0", + "ssri": "^9.0.1", + "tar": "^6.1.0" + } + }, + "@lerna/github-client": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/github-client/-/github-client-5.4.3.tgz", + "integrity": "sha512-P/i64IUDw72YvS5lTciCLAxvjliN2lZSDZSqH59kQ4m2dma0dChiLTreq1Ei8xyY124oacARwxxQCN95m2u3nw==", + "dev": true, + "requires": { + "@lerna/child-process": "5.4.3", + "@octokit/plugin-enterprise-rest": "^6.0.1", + "@octokit/rest": "^19.0.3", + "git-url-parse": "^12.0.0", + "npmlog": "^6.0.2" + } + }, + "@lerna/gitlab-client": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/gitlab-client/-/gitlab-client-5.4.3.tgz", + "integrity": "sha512-EEr5OkdiS7ev2X9jaknr3UUksPajij1nGFFhPXpAexAEkJYSRjdSvfPtd4ssTViIHMGHKMcNcGrMW+ESly1lpw==", + "dev": true, + "requires": { + "node-fetch": "^2.6.1", + "npmlog": "^6.0.2", + "whatwg-url": "^8.4.0" + } + }, + "@lerna/global-options": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/global-options/-/global-options-5.4.3.tgz", + "integrity": "sha512-e0TVIHLl0IULJWfLA9uGOIYnI3MVAjTp9I0p/9u3fC62dQxJBhoy5/9+y2zuu85MTB+4XTVi2m8G99H9pfBhMA==", + "dev": true + }, + "@lerna/has-npm-version": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/has-npm-version/-/has-npm-version-5.4.3.tgz", + "integrity": "sha512-Vu5etw5vXEbYLOO26lO3u5gEjX9vWUjqLTQfNEnJxflaH9JWw2NNJ/6nXG0hqc8kEmMdhabrw+FHSKaO9ZQygw==", + "dev": true, + "requires": { + "@lerna/child-process": "5.4.3", + "semver": "^7.3.4" + } + }, + "@lerna/import": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/import/-/import-5.4.3.tgz", + "integrity": "sha512-SRUyITjhqbN7JOrUHskaqbppiq8yqpSLw1+tseT3D3HdYQQjvQzR1GjBVm+LZKlHRi9qqku9fqUNQf9AqbtysA==", + "dev": true, + "requires": { + "@lerna/child-process": "5.4.3", + "@lerna/command": "5.4.3", + "@lerna/prompt": "5.4.3", + "@lerna/pulse-till-done": "5.4.3", + "@lerna/validation-error": "5.4.3", + "dedent": "^0.7.0", + "fs-extra": "^9.1.0", + "p-map-series": "^2.1.0" + } + }, + "@lerna/info": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/info/-/info-5.4.3.tgz", + "integrity": "sha512-cO0jWK2zcU9fsnoR2aqYU1IqNxWBkLvvQcTiodPqMsTAVh2F8cbwUXptWJyvsyCkKqO86axa7h6AbeF9rHRj0g==", + "dev": true, + "requires": { + "@lerna/command": "5.4.3", + "@lerna/output": "5.4.3", + "envinfo": "^7.7.4" + } + }, + "@lerna/init": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/init/-/init-5.4.3.tgz", + "integrity": "sha512-cicNfMuswF+8S5RhbvCnXIrdNWTS5/ajwGYOv85x/Gu2FOJ1eqJ4W4Ai6ybANBefErE4+7aSGl/kt/+sRvTeTw==", + "dev": true, + "requires": { + "@lerna/child-process": "5.4.3", + "@lerna/command": "5.4.3", + "@lerna/project": "5.4.3", + "fs-extra": "^9.1.0", + "p-map": "^4.0.0", + "write-json-file": "^4.3.0" + } + }, + "@lerna/link": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/link/-/link-5.4.3.tgz", + "integrity": "sha512-DY6PQYE2g1a5QGDXCoajr8hl87m83vmfUIz1342x1qwWHmfRLfS3KTPPfa5bsZk/ABVOrqjjz/v3m4SEJ4LC5A==", + "dev": true, + "requires": { + "@lerna/command": "5.4.3", + "@lerna/package-graph": "5.4.3", + "@lerna/symlink-dependencies": "5.4.3", + "p-map": "^4.0.0", + "slash": "^3.0.0" + } + }, + "@lerna/list": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/list/-/list-5.4.3.tgz", + "integrity": "sha512-VEoJfobof7Welp+1yX6gm0EtpZw9vyztGvTtOeHQ1fhfW88oav03Qoi/hk1qZXPf7/hVZrJKEmSJ4etxsbZ3/g==", + "dev": true, + "requires": { + "@lerna/command": "5.4.3", + "@lerna/filter-options": "5.4.3", + "@lerna/listable": "5.4.3", + "@lerna/output": "5.4.3" + } + }, + "@lerna/listable": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/listable/-/listable-5.4.3.tgz", + "integrity": "sha512-VcJMw+z84Rj1nLIso474+veFx0tCH9Jas02YXx9cgAnaK1IRP0BI9O0vccQIZ+2Rb62VLiFGzyCJIyKyhcGZHw==", + "dev": true, + "requires": { + "@lerna/query-graph": "5.4.3", + "chalk": "^4.1.0", + "columnify": "^1.6.0" + } + }, + "@lerna/log-packed": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/log-packed/-/log-packed-5.4.3.tgz", + "integrity": "sha512-pFEBaj5JOf44+kOV6eiFHAfEULC6NhHJHHFwkljL1WNcx/+46aOADY9LrjmVtp8uPWv3fMCb3ZGcxuGebz1lYA==", + "dev": true, + "requires": { + "byte-size": "^7.0.0", + "columnify": "^1.6.0", + "has-unicode": "^2.0.1", + "npmlog": "^6.0.2" + } + }, + "@lerna/npm-conf": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/npm-conf/-/npm-conf-5.4.3.tgz", + "integrity": "sha512-iQrrZHxAXqogfCpQvC/ac42/gR3osT+WN2FFB1gjVYYFBMZto5mlpcvyzH8rb75OJfak8iDtOYHUymmwSda1jw==", + "dev": true, + "requires": { + "config-chain": "^1.1.12", + "pify": "^5.0.0" + } + }, + "@lerna/npm-dist-tag": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/npm-dist-tag/-/npm-dist-tag-5.4.3.tgz", + "integrity": "sha512-LnbD6xrnrmMdXH/nntyd/xJueKZGhCv3YLWK9F6YQdmUoeWY+W7eckmdd8LKL6ZqupyeLxgn0NKwiJ5wxf0F2w==", + "dev": true, + "requires": { + "@lerna/otplease": "5.4.3", + "npm-package-arg": "8.1.1", + "npm-registry-fetch": "^13.3.0", + "npmlog": "^6.0.2" + } + }, + "@lerna/npm-install": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/npm-install/-/npm-install-5.4.3.tgz", + "integrity": "sha512-MPXYQ1r/UMV9x+6F2VEk3miHOw4fn+G4zN11PGB5nWmuaT4uq7rPoudkdRvMRqm6bK0NpL/trssSb12ERzevqg==", + "dev": true, + "requires": { + "@lerna/child-process": "5.4.3", + "@lerna/get-npm-exec-opts": "5.4.3", + "fs-extra": "^9.1.0", + "npm-package-arg": "8.1.1", + "npmlog": "^6.0.2", + "signal-exit": "^3.0.3", + "write-pkg": "^4.0.0" + } + }, + "@lerna/npm-publish": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/npm-publish/-/npm-publish-5.4.3.tgz", + "integrity": "sha512-yfwtTWYRace2oJK+a7nVUs7HubypgoA1fEZ6JUZFKVkq54C8tDdyYz4EtTtiFr7WMjP8p3NWxh7RNh7Tyx7ckQ==", + "dev": true, + "requires": { + "@lerna/otplease": "5.4.3", + "@lerna/run-lifecycle": "5.4.3", + "fs-extra": "^9.1.0", + "libnpmpublish": "^6.0.4", + "npm-package-arg": "8.1.1", + "npmlog": "^6.0.2", + "pify": "^5.0.0", + "read-package-json": "^5.0.1" + } + }, + "@lerna/npm-run-script": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/npm-run-script/-/npm-run-script-5.4.3.tgz", + "integrity": "sha512-xb6YAxAxGDBPlpZtjDPlM9NAgIcNte31iuGpG0I5eTYqBppKNZ7CQ8oi76qptrLyrK/ug9kqDIGti5OgyAMihQ==", + "dev": true, + "requires": { + "@lerna/child-process": "5.4.3", + "@lerna/get-npm-exec-opts": "5.4.3", + "npmlog": "^6.0.2" + } + }, + "@lerna/otplease": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/otplease/-/otplease-5.4.3.tgz", + "integrity": "sha512-iy+NpqP9UcB8a0W3Nhq20x2gWSRQcmkOb25qSJj7f5AisCwGWypYlD6RZ9NqCzUD7KEbAaydEEyhoPw9dQRFmg==", + "dev": true, + "requires": { + "@lerna/prompt": "5.4.3" + } + }, + "@lerna/output": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/output/-/output-5.4.3.tgz", + "integrity": "sha512-y/skSk0jMxPlJ1gpQwmKiMdElbznOMCYdCi170wfj3esby+fr8eULiwx7wUy3K+YtEGp7JS6TUjXb4zm9O0rMw==", + "dev": true, + "requires": { + "npmlog": "^6.0.2" + } + }, + "@lerna/pack-directory": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/pack-directory/-/pack-directory-5.4.3.tgz", + "integrity": "sha512-47vsQem4Jr1W7Ce03RKihprBFLh2Q+VKgIcQGPec764i5uv3QWHzqK//da7+fmHr86qusinHvCIV7X3pXcohWg==", + "dev": true, + "requires": { + "@lerna/get-packed": "5.4.3", + "@lerna/package": "5.4.3", + "@lerna/run-lifecycle": "5.4.3", + "@lerna/temp-write": "5.4.3", + "npm-packlist": "^5.1.1", + "npmlog": "^6.0.2", + "tar": "^6.1.0" + } + }, + "@lerna/package": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/package/-/package-5.4.3.tgz", + "integrity": "sha512-EIw82v4ijzS3qRCSKHNSJ/UTnFDroaEp6mj7pzLO6lIrAqg7MgtKeThMhzEAMvF4yNB7BL+UR+dZ0jI47WgQJQ==", + "dev": true, + "requires": { + "load-json-file": "^6.2.0", + "npm-package-arg": "8.1.1", + "write-pkg": "^4.0.0" + } + }, + "@lerna/package-graph": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/package-graph/-/package-graph-5.4.3.tgz", + "integrity": "sha512-8eyAS+hb+K/+1Si2UNh4KPaLFdgTgdrRcsuTY7aKaINyrzoLTArAKPk4dQZTH1d0SUWtFzicvWixkkzq21QuOw==", + "dev": true, + "requires": { + "@lerna/prerelease-id-from-version": "5.4.3", + "@lerna/validation-error": "5.4.3", + "npm-package-arg": "8.1.1", + "npmlog": "^6.0.2", + "semver": "^7.3.4" + } + }, + "@lerna/prerelease-id-from-version": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/prerelease-id-from-version/-/prerelease-id-from-version-5.4.3.tgz", + "integrity": "sha512-bXsBCv/VJrWXz2usnk52TtTb4dsXSeYDI2U1N2z/DssFKlOpH7xL1mKWC4OXE2XBqb9I49sDPfZzN8BxTfJdJQ==", + "dev": true, + "requires": { + "semver": "^7.3.4" + } + }, + "@lerna/profiler": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/profiler/-/profiler-5.4.3.tgz", + "integrity": "sha512-6otMDwCzfWszV0K7RRjlF5gibLZt1ay+NmtrhL7TZ7PSizIJXlf6HxZiYodGgjahKAdGxx34H9XyToVzOLdg3w==", + "dev": true, + "requires": { + "fs-extra": "^9.1.0", + "npmlog": "^6.0.2", + "upath": "^2.0.1" + } + }, + "@lerna/project": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/project/-/project-5.4.3.tgz", + "integrity": "sha512-j2EeuwdbHsL++jy0s2ShDbdOPirPOL/FNMRf7Qtwl4pEWoOiSYmv/LnIt2pV7cwww9Lx8Y682/7CQwlXdgrrMw==", + "dev": true, + "requires": { + "@lerna/package": "5.4.3", + "@lerna/validation-error": "5.4.3", + "cosmiconfig": "^7.0.0", + "dedent": "^0.7.0", + "dot-prop": "^6.0.1", + "glob-parent": "^5.1.1", + "globby": "^11.0.2", + "load-json-file": "^6.2.0", + "npmlog": "^6.0.2", + "p-map": "^4.0.0", + "resolve-from": "^5.0.0", + "write-json-file": "^4.3.0" + } + }, + "@lerna/prompt": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/prompt/-/prompt-5.4.3.tgz", + "integrity": "sha512-VqrTgnbm1H24aYacXmZ2z7atHO6W4NamvwHroGRFqiM34dCLQh8S22X5mNnb4nX5lgfb+doqcxBtOi91vqpJ2g==", + "dev": true, + "requires": { + "inquirer": "^8.2.4", + "npmlog": "^6.0.2" + } + }, + "@lerna/publish": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/publish/-/publish-5.4.3.tgz", + "integrity": "sha512-SYziRvRwahzbM0A4T63FfQsk2i33cIauKXlJz6t3GQZvVzUFb0gD/baVas2V7Fs/Ty1oCqtmDKB/ABTznWYwGg==", + "dev": true, + "requires": { + "@lerna/check-working-tree": "5.4.3", + "@lerna/child-process": "5.4.3", + "@lerna/collect-updates": "5.4.3", + "@lerna/command": "5.4.3", + "@lerna/describe-ref": "5.4.3", + "@lerna/log-packed": "5.4.3", + "@lerna/npm-conf": "5.4.3", + "@lerna/npm-dist-tag": "5.4.3", + "@lerna/npm-publish": "5.4.3", + "@lerna/otplease": "5.4.3", + "@lerna/output": "5.4.3", + "@lerna/pack-directory": "5.4.3", + "@lerna/prerelease-id-from-version": "5.4.3", + "@lerna/prompt": "5.4.3", + "@lerna/pulse-till-done": "5.4.3", + "@lerna/run-lifecycle": "5.4.3", + "@lerna/run-topologically": "5.4.3", + "@lerna/validation-error": "5.4.3", + "@lerna/version": "5.4.3", + "fs-extra": "^9.1.0", + "libnpmaccess": "^6.0.3", + "npm-package-arg": "8.1.1", + "npm-registry-fetch": "^13.3.0", + "npmlog": "^6.0.2", + "p-map": "^4.0.0", + "p-pipe": "^3.1.0", + "pacote": "^13.6.1", + "semver": "^7.3.4" + } + }, + "@lerna/pulse-till-done": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/pulse-till-done/-/pulse-till-done-5.4.3.tgz", + "integrity": "sha512-Twy0UmVtyFzC+sLDnuY0u37Xu17WAP7ysQ7riaLx9KhO0M9MZvoY+kDF/hg0K204tZi0dr6R5eLGEUd+Xkg9Rw==", + "dev": true, + "requires": { + "npmlog": "^6.0.2" + } + }, + "@lerna/query-graph": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/query-graph/-/query-graph-5.4.3.tgz", + "integrity": "sha512-eiRsEPg+t2tN9VWXSAj2y0zEphPrOz6DdYw/5ntVFDecIfoANxGKcCkOTqb3PnaC8BojI64N3Ju+i41jcO0mLw==", + "dev": true, + "requires": { + "@lerna/package-graph": "5.4.3" + } + }, + "@lerna/resolve-symlink": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/resolve-symlink/-/resolve-symlink-5.4.3.tgz", + "integrity": "sha512-BzqinKmTny70KgSBAaVgdLHaVR3WXRVk5EDbQHB73qg4dHiyYrzvDBqkaKzv1K1th8E4LdQQXf5LiNEbfU/1Bg==", + "dev": true, + "requires": { + "fs-extra": "^9.1.0", + "npmlog": "^6.0.2", + "read-cmd-shim": "^3.0.0" + } + }, + "@lerna/rimraf-dir": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/rimraf-dir/-/rimraf-dir-5.4.3.tgz", + "integrity": "sha512-gBraUVczKk4Jik1+qCj4jtQ53l1zmWmMoH7A11ifYI60Dg7Mc6iQcIZOIj6siD5TSOtSCy7qePu3VyXBOIquvQ==", + "dev": true, + "requires": { + "@lerna/child-process": "5.4.3", + "npmlog": "^6.0.2", + "path-exists": "^4.0.0", + "rimraf": "^3.0.2" + } + }, + "@lerna/run": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/run/-/run-5.4.3.tgz", + "integrity": "sha512-PyHOYCsuJ+5r9ymjtwbQCbMMebVhaZ7Xy4jNpL9kqIvmdxe1S5QTP6Vyc6+RAvUtx0upP++0MFFA8CbZ1ZwOcw==", + "dev": true, + "requires": { + "@lerna/command": "5.4.3", + "@lerna/filter-options": "5.4.3", + "@lerna/npm-run-script": "5.4.3", + "@lerna/output": "5.4.3", + "@lerna/profiler": "5.4.3", + "@lerna/run-topologically": "5.4.3", + "@lerna/timer": "5.4.3", + "@lerna/validation-error": "5.4.3", + "p-map": "^4.0.0" + } + }, + "@lerna/run-lifecycle": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/run-lifecycle/-/run-lifecycle-5.4.3.tgz", + "integrity": "sha512-XKUfELNjkR6EUg+Xh92s1etjNvCbTBw20QMXDsyGSipHcLr7huXjC0D2/4/+j8/N5sz/rg+JufQfc1ldtpOU0A==", + "dev": true, + "requires": { + "@lerna/npm-conf": "5.4.3", + "@npmcli/run-script": "^4.1.7", + "npmlog": "^6.0.2", + "p-queue": "^6.6.2" + } + }, + "@lerna/run-topologically": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/run-topologically/-/run-topologically-5.4.3.tgz", + "integrity": "sha512-9bT8mJ0RICIk16l8L9jRRqSXGSiLEKUd50DLz5Tv0EdOKD+prwffAivCpVMYF9tdD5UaQzDAK/VzFdS5FEzPQg==", + "dev": true, + "requires": { + "@lerna/query-graph": "5.4.3", + "p-queue": "^6.6.2" + } + }, + "@lerna/symlink-binary": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/symlink-binary/-/symlink-binary-5.4.3.tgz", + "integrity": "sha512-iXBijyb1+NiOeifnRsbicSju6/FGtv6hvNny2lbjyr0EJ8jMz6JaoQ6eep9yXhgaNRJND1Pw9JBiCv6EhhcyCw==", + "dev": true, + "requires": { + "@lerna/create-symlink": "5.4.3", + "@lerna/package": "5.4.3", + "fs-extra": "^9.1.0", + "p-map": "^4.0.0" + } + }, + "@lerna/symlink-dependencies": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/symlink-dependencies/-/symlink-dependencies-5.4.3.tgz", + "integrity": "sha512-9fK3fIl6wyihyfKhDUquiAx8JoMjctBJ7zhLjrgOon5Ua2fyc+mVp9fTWsjHtv7IaC/TeP9oA4/IcBtdr2xieg==", + "dev": true, + "requires": { + "@lerna/create-symlink": "5.4.3", + "@lerna/resolve-symlink": "5.4.3", + "@lerna/symlink-binary": "5.4.3", + "fs-extra": "^9.1.0", + "p-map": "^4.0.0", + "p-map-series": "^2.1.0" + } + }, + "@lerna/temp-write": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/temp-write/-/temp-write-5.4.3.tgz", + "integrity": "sha512-HgAVNmKfeRKm4QPFGFfmzVC/lA2jv5QpMXPPDahoBEI6BhYtMmHiUWQan6dfsCoSf65xDd+9NTESya9AOSbN2w==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.15", + "is-stream": "^2.0.0", + "make-dir": "^3.0.0", + "temp-dir": "^1.0.0", + "uuid": "^8.3.2" + } + }, + "@lerna/timer": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/timer/-/timer-5.4.3.tgz", + "integrity": "sha512-0NwrCxug6pmSAuPaAHNr5VRGw7+nqikoIpwx6RViJiOD+UYFf3k955fngtSX2JhETR/7it9ncgpbaLvlxusx9g==", + "dev": true + }, + "@lerna/validation-error": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/validation-error/-/validation-error-5.4.3.tgz", + "integrity": "sha512-edf9vbQaDViffhHqL/wHdGs83RV7uJ4N5E3VEpjXefWIUfgmw9wYjkX338WYUh/XqDYbSV6C1M8A24FT3/0uzw==", + "dev": true, + "requires": { + "npmlog": "^6.0.2" + } + }, + "@lerna/version": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/version/-/version-5.4.3.tgz", + "integrity": "sha512-a6Q+o1fZbOg/GVG8QtvfyOpX0sZ38bbI9hSJU5YMf99YKdyzp80dDDav+IGMxIaZSj08HJ1pPyXOLR27I8fTUQ==", + "dev": true, + "requires": { + "@lerna/check-working-tree": "5.4.3", + "@lerna/child-process": "5.4.3", + "@lerna/collect-updates": "5.4.3", + "@lerna/command": "5.4.3", + "@lerna/conventional-commits": "5.4.3", + "@lerna/github-client": "5.4.3", + "@lerna/gitlab-client": "5.4.3", + "@lerna/output": "5.4.3", + "@lerna/prerelease-id-from-version": "5.4.3", + "@lerna/prompt": "5.4.3", + "@lerna/run-lifecycle": "5.4.3", + "@lerna/run-topologically": "5.4.3", + "@lerna/temp-write": "5.4.3", + "@lerna/validation-error": "5.4.3", + "chalk": "^4.1.0", + "dedent": "^0.7.0", + "load-json-file": "^6.2.0", + "minimatch": "^3.0.4", + "npmlog": "^6.0.2", + "p-map": "^4.0.0", + "p-pipe": "^3.1.0", + "p-reduce": "^2.1.0", + "p-waterfall": "^2.1.1", + "semver": "^7.3.4", + "slash": "^3.0.0", + "write-json-file": "^4.3.0" + } + }, + "@lerna/write-log-file": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@lerna/write-log-file/-/write-log-file-5.4.3.tgz", + "integrity": "sha512-S2kctFhsO4mMbR52tW9VjYrGWUMYO5YIjprg8B7vQSwYvWOOJfqOKy/A+P/U5zXuCSAbDDGssyS+CCM36MFEQw==", + "dev": true, + "requires": { + "npmlog": "^6.0.2", + "write-file-atomic": "^4.0.1" + } + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@npmcli/arborist": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@npmcli/arborist/-/arborist-5.3.0.tgz", + "integrity": "sha512-+rZ9zgL1lnbl8Xbb1NQdMjveOMwj4lIYfcDtyJHHi5x4X8jtR6m8SXooJMZy5vmFVZ8w7A2Bnd/oX9eTuU8w5A==", + "dev": true, + "requires": { + "@isaacs/string-locale-compare": "^1.1.0", + "@npmcli/installed-package-contents": "^1.0.7", + "@npmcli/map-workspaces": "^2.0.3", + "@npmcli/metavuln-calculator": "^3.0.1", + "@npmcli/move-file": "^2.0.0", + "@npmcli/name-from-folder": "^1.0.1", + "@npmcli/node-gyp": "^2.0.0", + "@npmcli/package-json": "^2.0.0", + "@npmcli/run-script": "^4.1.3", + "bin-links": "^3.0.0", + "cacache": "^16.0.6", + "common-ancestor-path": "^1.0.1", + "json-parse-even-better-errors": "^2.3.1", + "json-stringify-nice": "^1.1.4", + "mkdirp": "^1.0.4", + "mkdirp-infer-owner": "^2.0.0", + "nopt": "^5.0.0", + "npm-install-checks": "^5.0.0", + "npm-package-arg": "^9.0.0", + "npm-pick-manifest": "^7.0.0", + "npm-registry-fetch": "^13.0.0", + "npmlog": "^6.0.2", + "pacote": "^13.6.1", + "parse-conflict-json": "^2.0.1", + "proc-log": "^2.0.0", + "promise-all-reject-late": "^1.0.0", + "promise-call-limit": "^1.0.1", + "read-package-json-fast": "^2.0.2", + "readdir-scoped-modules": "^1.1.0", + "rimraf": "^3.0.2", + "semver": "^7.3.7", + "ssri": "^9.0.0", + "treeverse": "^2.0.0", + "walk-up-path": "^1.0.0" + }, + "dependencies": { + "hosted-git-info": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.1.0.tgz", + "integrity": "sha512-Ek+QmMEqZF8XrbFdwoDjSbm7rT23pCgEMOJmz6GPk/s4yH//RQfNPArhIxbguNxROq/+5lNBwCDHMhA903Kx1Q==", + "dev": true, + "requires": { + "lru-cache": "^7.5.1" + } + }, + "npm-package-arg": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.0.tgz", + "integrity": "sha512-4J0GL+u2Nh6OnhvUKXRr2ZMG4lR8qtLp+kv7UiV00Y+nGiSxtttCyIRHCt5L5BNkXQld/RceYItau3MDOoGiBw==", + "dev": true, + "requires": { + "hosted-git-info": "^5.0.0", + "proc-log": "^2.0.1", + "semver": "^7.3.5", + "validate-npm-package-name": "^4.0.0" + } + } + } + }, + "@npmcli/fs": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz", + "integrity": "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==", + "dev": true, + "requires": { + "@gar/promisify": "^1.1.3", + "semver": "^7.3.5" + } + }, + "@npmcli/git": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-3.0.2.tgz", + "integrity": "sha512-CAcd08y3DWBJqJDpfuVL0uijlq5oaXaOJEKHKc4wqrjd00gkvTZB+nFuLn+doOOKddaQS9JfqtNoFCO2LCvA3w==", + "dev": true, + "requires": { + "@npmcli/promise-spawn": "^3.0.0", + "lru-cache": "^7.4.4", + "mkdirp": "^1.0.4", + "npm-pick-manifest": "^7.0.0", + "proc-log": "^2.0.0", + "promise-inflight": "^1.0.1", + "promise-retry": "^2.0.1", + "semver": "^7.3.5", + "which": "^2.0.2" + } + }, + "@npmcli/installed-package-contents": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz", + "integrity": "sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw==", + "dev": true, + "requires": { + "npm-bundled": "^1.1.1", + "npm-normalize-package-bin": "^1.0.1" + } + }, + "@npmcli/map-workspaces": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@npmcli/map-workspaces/-/map-workspaces-2.0.4.tgz", + "integrity": "sha512-bMo0aAfwhVwqoVM5UzX1DJnlvVvzDCHae821jv48L1EsrYwfOZChlqWYXEtto/+BkBXetPbEWgau++/brh4oVg==", + "dev": true, + "requires": { + "@npmcli/name-from-folder": "^1.0.1", + "glob": "^8.0.1", + "minimatch": "^5.0.1", + "read-package-json-fast": "^2.0.3" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "@npmcli/metavuln-calculator": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@npmcli/metavuln-calculator/-/metavuln-calculator-3.1.1.tgz", + "integrity": "sha512-n69ygIaqAedecLeVH3KnO39M6ZHiJ2dEv5A7DGvcqCB8q17BGUgW8QaanIkbWUo2aYGZqJaOORTLAlIvKjNDKA==", + "dev": true, + "requires": { + "cacache": "^16.0.0", + "json-parse-even-better-errors": "^2.3.1", + "pacote": "^13.0.3", + "semver": "^7.3.5" + } + }, + "@npmcli/move-file": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz", + "integrity": "sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==", + "dev": true, + "requires": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + } + }, + "@npmcli/name-from-folder": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/name-from-folder/-/name-from-folder-1.0.1.tgz", + "integrity": "sha512-qq3oEfcLFwNfEYOQ8HLimRGKlD8WSeGEdtUa7hmzpR8Sa7haL1KVQrvgO6wqMjhWFFVjgtrh1gIxDz+P8sjUaA==", + "dev": true + }, + "@npmcli/node-gyp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-2.0.0.tgz", + "integrity": "sha512-doNI35wIe3bBaEgrlPfdJPaCpUR89pJWep4Hq3aRdh6gKazIVWfs0jHttvSSoq47ZXgC7h73kDsUl8AoIQUB+A==", + "dev": true + }, + "@npmcli/package-json": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-2.0.0.tgz", + "integrity": "sha512-42jnZ6yl16GzjWSH7vtrmWyJDGVa/LXPdpN2rcUWolFjc9ON2N3uz0qdBbQACfmhuJZ2lbKYtmK5qx68ZPLHMA==", + "dev": true, + "requires": { + "json-parse-even-better-errors": "^2.3.1" + } + }, + "@npmcli/promise-spawn": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-3.0.0.tgz", + "integrity": "sha512-s9SgS+p3a9Eohe68cSI3fi+hpcZUmXq5P7w0kMlAsWVtR7XbK3ptkZqKT2cK1zLDObJ3sR+8P59sJE0w/KTL1g==", + "dev": true, + "requires": { + "infer-owner": "^1.0.4" + } + }, + "@npmcli/run-script": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-4.2.1.tgz", + "integrity": "sha512-7dqywvVudPSrRCW5nTHpHgeWnbBtz8cFkOuKrecm6ih+oO9ciydhWt6OF7HlqupRRmB8Q/gECVdB9LMfToJbRg==", + "dev": true, + "requires": { + "@npmcli/node-gyp": "^2.0.0", + "@npmcli/promise-spawn": "^3.0.0", + "node-gyp": "^9.0.0", + "read-package-json-fast": "^2.0.3", + "which": "^2.0.2" + } + }, + "@nrwl/cli": { + "version": "14.5.10", + "resolved": "https://registry.npmjs.org/@nrwl/cli/-/cli-14.5.10.tgz", + "integrity": "sha512-GpnnKGO3+HwlMmZSStbq1MOyoDJg2I0HN4nBqM3ltaQkfxGZv3erwRMOAT+8mba2MWbJJ2QQgASAYvTscNYjOQ==", + "dev": true, + "requires": { + "nx": "14.5.10" + } + }, + "@nrwl/tao": { + "version": "14.5.10", + "resolved": "https://registry.npmjs.org/@nrwl/tao/-/tao-14.5.10.tgz", + "integrity": "sha512-eWORRba0HlTNmOQFUxHqki0Z5yiRIq1Hl0taprmZpz2lgDXuzPIjGfAi5/ETy5+G5gkEyxFnCq7+SiMilPokwA==", + "dev": true, + "requires": { + "nx": "14.5.10" + } + }, + "@octokit/auth-token": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-3.0.1.tgz", + "integrity": "sha512-/USkK4cioY209wXRpund6HZzHo9GmjakpV9ycOkpMcMxMk7QVcVFVyCMtzvXYiHsB2crgDgrtNYSELYFBXhhaA==", + "dev": true, + "requires": { + "@octokit/types": "^7.0.0" + } + }, + "@octokit/core": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-4.0.5.tgz", + "integrity": "sha512-4R3HeHTYVHCfzSAi0C6pbGXV8UDI5Rk+k3G7kLVNckswN9mvpOzW9oENfjfH3nEmzg8y3AmKmzs8Sg6pLCeOCA==", + "dev": true, + "requires": { + "@octokit/auth-token": "^3.0.0", + "@octokit/graphql": "^5.0.0", + "@octokit/request": "^6.0.0", + "@octokit/request-error": "^3.0.0", + "@octokit/types": "^7.0.0", + "before-after-hook": "^2.2.0", + "universal-user-agent": "^6.0.0" + } + }, + "@octokit/endpoint": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-7.0.1.tgz", + "integrity": "sha512-/wTXAJwt0HzJ2IeE4kQXO+mBScfzyCkI0hMtkIaqyXd9zg76OpOfNQfHL9FlaxAV2RsNiOXZibVWloy8EexENg==", + "dev": true, + "requires": { + "@octokit/types": "^7.0.0", + "is-plain-object": "^5.0.0", + "universal-user-agent": "^6.0.0" + } + }, + "@octokit/graphql": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-5.0.1.tgz", + "integrity": "sha512-sxmnewSwAixkP1TrLdE6yRG53eEhHhDTYUykUwdV9x8f91WcbhunIHk9x1PZLALdBZKRPUO2HRcm4kezZ79HoA==", + "dev": true, + "requires": { + "@octokit/request": "^6.0.0", + "@octokit/types": "^7.0.0", + "universal-user-agent": "^6.0.0" + } + }, + "@octokit/openapi-types": { + "version": "13.4.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-13.4.0.tgz", + "integrity": "sha512-2mVzW0X1+HDO3jF80/+QFZNzJiTefELKbhMu6yaBYbp/1gSMkVDm4rT472gJljTokWUlXaaE63m7WrWENhMDLw==", + "dev": true + }, + "@octokit/plugin-enterprise-rest": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@octokit/plugin-enterprise-rest/-/plugin-enterprise-rest-6.0.1.tgz", + "integrity": "sha512-93uGjlhUD+iNg1iWhUENAtJata6w5nE+V4urXOAlIXdco6xNZtUSfYY8dzp3Udy74aqO/B5UZL80x/YMa5PKRw==", + "dev": true + }, + "@octokit/plugin-paginate-rest": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-4.1.0.tgz", + "integrity": "sha512-2O5K5fpajYG5g62wjzHR7/cWYaCA88CextAW3vFP+yoIHD0KEdlVMHfM5/i5LyV+JMmqiYW7w5qfg46FR+McNw==", + "dev": true, + "requires": { + "@octokit/types": "^7.1.1" + } + }, + "@octokit/plugin-request-log": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz", + "integrity": "sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==", + "dev": true, + "requires": {} + }, + "@octokit/plugin-rest-endpoint-methods": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-6.3.0.tgz", + "integrity": "sha512-qEu2wn6E7hqluZwIEUnDxWROvKjov3zMIAi4H4d7cmKWNMeBprEXZzJe8pE5eStUYC1ysGhD0B7L6IeG1Rfb+g==", + "dev": true, + "requires": { + "@octokit/types": "^7.0.0", + "deprecation": "^2.3.1" + } + }, + "@octokit/request": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-6.2.1.tgz", + "integrity": "sha512-gYKRCia3cpajRzDSU+3pt1q2OcuC6PK8PmFIyxZDWCzRXRSIBH8jXjFJ8ZceoygBIm0KsEUg4x1+XcYBz7dHPQ==", + "dev": true, + "requires": { + "@octokit/endpoint": "^7.0.0", + "@octokit/request-error": "^3.0.0", + "@octokit/types": "^7.0.0", + "is-plain-object": "^5.0.0", + "node-fetch": "^2.6.7", + "universal-user-agent": "^6.0.0" + } + }, + "@octokit/request-error": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-3.0.1.tgz", + "integrity": "sha512-ym4Bp0HTP7F3VFssV88WD1ZyCIRoE8H35pXSKwLeMizcdZAYc/t6N9X9Yr9n6t3aG9IH75XDnZ6UeZph0vHMWQ==", + "dev": true, + "requires": { + "@octokit/types": "^7.0.0", + "deprecation": "^2.0.0", + "once": "^1.4.0" + } + }, + "@octokit/rest": { + "version": "19.0.4", + "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-19.0.4.tgz", + "integrity": "sha512-LwG668+6lE8zlSYOfwPj4FxWdv/qFXYBpv79TWIQEpBLKA9D/IMcWsF/U9RGpA3YqMVDiTxpgVpEW3zTFfPFTA==", + "dev": true, + "requires": { + "@octokit/core": "^4.0.0", + "@octokit/plugin-paginate-rest": "^4.0.0", + "@octokit/plugin-request-log": "^1.0.4", + "@octokit/plugin-rest-endpoint-methods": "^6.0.0" + } + }, + "@octokit/types": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-7.1.1.tgz", + "integrity": "sha512-Dx6cNTORyVaKY0Yeb9MbHksk79L8GXsihbG6PtWqTpkyA2TY1qBWE26EQXVG3dHwY9Femdd/WEeRUEiD0+H3TQ==", + "dev": true, + "requires": { + "@octokit/openapi-types": "^13.4.0" + } + }, + "@parcel/watcher": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.0.4.tgz", + "integrity": "sha512-cTDi+FUDBIUOBKEtj+nhiJ71AZVlkAsQFuGQTun5tV9mwQBQgZvhCzG+URPQc8myeN32yRVZEfVAPCs1RW+Jvg==", + "dev": true, + "requires": { + "node-addon-api": "^3.2.1", + "node-gyp-build": "^4.3.0" + } + }, + "@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true + }, + "@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true + }, + "@types/minimatch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", + "dev": true + }, + "@types/minimist": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", + "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", + "dev": true + }, + "@types/node": { + "version": "18.7.13", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.13.tgz", + "integrity": "sha512-46yIhxSe5xEaJZXWdIBP7GU4HDTG8/eo0qd9atdiL+lFpA03y8KS+lkTN834TWJj5767GbWv4n/P6efyTFt1Dw==", + "dev": true + }, + "@types/normalize-package-data": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", + "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", + "dev": true + }, + "@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "dev": true + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "add-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/add-stream/-/add-stream-1.0.0.tgz", + "integrity": "sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ==", + "dev": true + }, + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "requires": { + "debug": "4" + } + }, + "agentkeepalive": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz", + "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "depd": "^1.1.2", + "humanize-ms": "^1.2.1" + } + }, + "aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, + "ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true + }, + "ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "requires": { + "type-fest": "^0.21.3" + } + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "antlr4ts": { + "version": "0.5.0-alpha.4", + "resolved": "https://registry.npmjs.org/antlr4ts/-/antlr4ts-0.5.0-alpha.4.tgz", + "integrity": "sha512-WPQDt1B74OfPv/IMS2ekXAKkTZIHl88uMetg6q3OTqgFxZ/dxDXI0EWLyZid/1Pe6hTftyg5N7gel5wNAGxXyQ==" + }, + "antlr4ts-cli": { + "version": "0.5.0-alpha.4", + "resolved": "https://registry.npmjs.org/antlr4ts-cli/-/antlr4ts-cli-0.5.0-alpha.4.tgz", + "integrity": "sha512-lVPVBTA2CVHRYILSKilL6Jd4hAumhSZZWA7UbQNQrmaSSj7dPmmYaN4bOmZG79cOy0lS00i4LY68JZZjZMWVrw==", + "dev": true + }, + "anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + "dev": true + }, + "are-we-there-yet": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", + "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", + "dev": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + } + }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "array-differ": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz", + "integrity": "sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==", + "dev": true + }, + "array-ify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", + "integrity": "sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==", + "dev": true + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", + "dev": true + }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", + "dev": true + }, + "at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true + }, + "before-after-hook": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.2.tgz", + "integrity": "sha512-3pZEU3NT5BFUo/AD5ERPWOgQOCZITni6iavr5AUw5AUwQjMlI0kzu5btnyD39AF0gUEsDPwJT+oY1ORBJijPjQ==", + "dev": true + }, + "bin-links": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/bin-links/-/bin-links-3.0.3.tgz", + "integrity": "sha512-zKdnMPWEdh4F5INR07/eBrodC7QrF5JKvqskjz/ZZRXg5YSAZIbn8zGhbhUrElzHBZ2fvEQdOU59RHcTG3GiwA==", + "dev": true, + "requires": { + "cmd-shim": "^5.0.0", + "mkdirp-infer-owner": "^2.0.0", + "npm-normalize-package-bin": "^2.0.0", + "read-cmd-shim": "^3.0.0", + "rimraf": "^3.0.0", + "write-file-atomic": "^4.0.0" + }, + "dependencies": { + "npm-normalize-package-bin": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz", + "integrity": "sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==", + "dev": true + } + } + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true + }, + "bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "requires": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "builtins": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", + "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", + "dev": true, + "requires": { + "semver": "^7.0.0" + } + }, + "byte-size": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/byte-size/-/byte-size-7.0.1.tgz", + "integrity": "sha512-crQdqyCwhokxwV1UyDzLZanhkugAgft7vt0qbbdt60C6Zf3CAiGmtUCylbtYwrU6loOUw3euGrNtW1J651ot1A==", + "dev": true + }, + "cacache": { + "version": "16.1.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.3.tgz", + "integrity": "sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==", + "dev": true, + "requires": { + "@npmcli/fs": "^2.1.0", + "@npmcli/move-file": "^2.0.0", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "glob": "^8.0.1", + "infer-owner": "^1.0.4", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "mkdirp": "^1.0.4", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^9.0.0", + "tar": "^6.1.11", + "unique-filename": "^2.0.0" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "camelcase-keys": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", + "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "map-obj": "^4.0.0", + "quick-lru": "^4.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + } + }, + "chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true + }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "cli-spinners": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", + "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==", + "dev": true + }, + "cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "dev": true + }, + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "dev": true + }, + "clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "dependencies": { + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + } + } + }, + "cmd-shim": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cmd-shim/-/cmd-shim-5.0.0.tgz", + "integrity": "sha512-qkCtZ59BidfEwHltnJwkyVZn+XQojdAySM1D1gSeh11Z4pW1Kpolkyo53L5noc0nrxmIvyFwTmJRo4xs7FFLPw==", + "dev": true, + "requires": { + "mkdirp-infer-owner": "^2.0.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "dev": true + }, + "columnify": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/columnify/-/columnify-1.6.0.tgz", + "integrity": "sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q==", + "dev": true, + "requires": { + "strip-ansi": "^6.0.1", + "wcwidth": "^1.0.0" + } + }, + "common-ancestor-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz", + "integrity": "sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==", + "dev": true + }, + "compare-func": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", + "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", + "dev": true, + "requires": { + "array-ify": "^1.0.0", + "dot-prop": "^5.1.0" + }, + "dependencies": { + "dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "dev": true, + "requires": { + "is-obj": "^2.0.0" + } + } + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "concat-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", + "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.0.2", + "typedarray": "^0.0.6" + } + }, + "config-chain": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + "dev": true, + "requires": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", + "dev": true + }, + "conventional-changelog-angular": { + "version": "5.0.13", + "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz", + "integrity": "sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA==", + "dev": true, + "requires": { + "compare-func": "^2.0.0", + "q": "^1.5.1" + } + }, + "conventional-changelog-core": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-4.2.4.tgz", + "integrity": "sha512-gDVS+zVJHE2v4SLc6B0sLsPiloR0ygU7HaDW14aNJE1v4SlqJPILPl/aJC7YdtRE4CybBf8gDwObBvKha8Xlyg==", + "dev": true, + "requires": { + "add-stream": "^1.0.0", + "conventional-changelog-writer": "^5.0.0", + "conventional-commits-parser": "^3.2.0", + "dateformat": "^3.0.0", + "get-pkg-repo": "^4.0.0", + "git-raw-commits": "^2.0.8", + "git-remote-origin-url": "^2.0.0", + "git-semver-tags": "^4.1.1", + "lodash": "^4.17.15", + "normalize-package-data": "^3.0.0", + "q": "^1.5.1", + "read-pkg": "^3.0.0", + "read-pkg-up": "^3.0.0", + "through2": "^4.0.0" + } + }, + "conventional-changelog-preset-loader": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.4.tgz", + "integrity": "sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g==", + "dev": true + }, + "conventional-changelog-writer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-5.0.1.tgz", + "integrity": "sha512-5WsuKUfxW7suLblAbFnxAcrvf6r+0b7GvNaWUwUIk0bXMnENP/PEieGKVUQrjPqwPT4o3EPAASBXiY6iHooLOQ==", + "dev": true, + "requires": { + "conventional-commits-filter": "^2.0.7", + "dateformat": "^3.0.0", + "handlebars": "^4.7.7", + "json-stringify-safe": "^5.0.1", + "lodash": "^4.17.15", + "meow": "^8.0.0", + "semver": "^6.0.0", + "split": "^1.0.0", + "through2": "^4.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "conventional-commits-filter": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-2.0.7.tgz", + "integrity": "sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA==", + "dev": true, + "requires": { + "lodash.ismatch": "^4.4.0", + "modify-values": "^1.0.0" + } + }, + "conventional-commits-parser": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.2.4.tgz", + "integrity": "sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q==", + "dev": true, + "requires": { + "is-text-path": "^1.0.1", + "JSONStream": "^1.0.4", + "lodash": "^4.17.15", + "meow": "^8.0.0", + "split2": "^3.0.0", + "through2": "^4.0.0" + } + }, + "conventional-recommended-bump": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/conventional-recommended-bump/-/conventional-recommended-bump-6.1.0.tgz", + "integrity": "sha512-uiApbSiNGM/kkdL9GTOLAqC4hbptObFo4wW2QRyHsKciGAfQuLU1ShZ1BIVI/+K2BE/W1AWYQMCXAsv4dyKPaw==", + "dev": true, + "requires": { + "concat-stream": "^2.0.0", + "conventional-changelog-preset-loader": "^2.3.4", + "conventional-commits-filter": "^2.0.7", + "conventional-commits-parser": "^3.2.0", + "git-raw-commits": "^2.0.8", + "git-semver-tags": "^4.1.1", + "meow": "^8.0.0", + "q": "^1.5.1" + } + }, + "core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true + }, + "cosmiconfig": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", + "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", + "dev": true, + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + } + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "dargs": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz", + "integrity": "sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==", + "dev": true + }, + "dateformat": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", + "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", + "dev": true + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "debuglog": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz", + "integrity": "sha512-syBZ+rnAK3EgMsH2aYEOLUW7mZSY9Gb+0wUMCFsZvcmiz+HigA0LOcq/HoQqVuGG+EKykunc7QG2bzrponfaSw==", + "dev": true + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "dev": true + }, + "decamelize-keys": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", + "integrity": "sha512-ocLWuYzRPoS9bfiSdDd3cxvrzovVMZnRDVEzAs+hWIVXGDbHxWMECij2OBuyB/An0FFW/nLuq6Kv1i/YC5Qfzg==", + "dev": true, + "requires": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + }, + "dependencies": { + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", + "dev": true + } + } + }, + "dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", + "dev": true + }, + "defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha512-s82itHOnYrN0Ib8r+z7laQz3sdE+4FP3d9Q7VLO7U+KRT+CR0GsWuyHxzdAY82I7cXv0G/twrqomTJLOssO5HA==", + "dev": true, + "requires": { + "clone": "^1.0.2" + } + }, + "define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "dev": true + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true + }, + "deprecation": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", + "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", + "dev": true + }, + "detect-indent": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", + "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", + "dev": true + }, + "dezalgo": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", + "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", + "dev": true, + "requires": { + "asap": "^2.0.0", + "wrappy": "1" + } + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + } + }, + "dot-prop": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz", + "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==", + "dev": true, + "requires": { + "is-obj": "^2.0.0" + } + }, + "dotenv": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", + "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==", + "dev": true + }, + "duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "dev": true, + "optional": true, + "requires": { + "iconv-lite": "^0.6.2" + }, + "dependencies": { + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + } + } + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "requires": { + "ansi-colors": "^4.1.1" + } + }, + "env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true + }, + "envinfo": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", + "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", + "dev": true + }, + "err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "dev": true + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + }, + "eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + } + }, + "external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + } + }, + "fast-glob": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", + "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + } + }, + "fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, + "figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true + }, + "fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true + }, + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "gauge": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", + "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", + "dev": true, + "requires": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^3.0.7", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" + } + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "get-pkg-repo": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-4.2.1.tgz", + "integrity": "sha512-2+QbHjFRfGB74v/pYWjd5OhU3TDIC2Gv/YKUTk/tCvAz0pkn/Mz6P3uByuBimLOcPvN2jYdScl3xGFSrx0jEcA==", + "dev": true, + "requires": { + "@hutson/parse-repository-url": "^3.0.0", + "hosted-git-info": "^4.0.0", + "through2": "^2.0.0", + "yargs": "^16.2.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + } + } + }, + "get-port": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz", + "integrity": "sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==", + "dev": true + }, + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true + }, + "git-raw-commits": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.11.tgz", + "integrity": "sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A==", + "dev": true, + "requires": { + "dargs": "^7.0.0", + "lodash": "^4.17.15", + "meow": "^8.0.0", + "split2": "^3.0.0", + "through2": "^4.0.0" + } + }, + "git-remote-origin-url": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz", + "integrity": "sha512-eU+GGrZgccNJcsDH5LkXR3PB9M958hxc7sbA8DFJjrv9j4L2P/eZfKhM+QD6wyzpiv+b1BpK0XrYCxkovtjSLw==", + "dev": true, + "requires": { + "gitconfiglocal": "^1.0.0", + "pify": "^2.3.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true + } + } + }, + "git-semver-tags": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-4.1.1.tgz", + "integrity": "sha512-OWyMt5zBe7xFs8vglMmhM9lRQzCWL3WjHtxNNfJTMngGym7pC1kh8sP6jevfydJ6LP3ZvGxfb6ABYgPUM0mtsA==", + "dev": true, + "requires": { + "meow": "^8.0.0", + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "git-up": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/git-up/-/git-up-6.0.0.tgz", + "integrity": "sha512-6RUFSNd1c/D0xtGnyWN2sxza2bZtZ/EmI9448n6rCZruFwV/ezeEn2fJP7XnUQGwf0RAtd/mmUCbtH6JPYA2SA==", + "dev": true, + "requires": { + "is-ssh": "^1.4.0", + "parse-url": "^7.0.2" + } + }, + "git-url-parse": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/git-url-parse/-/git-url-parse-12.0.0.tgz", + "integrity": "sha512-I6LMWsxV87vysX1WfsoglXsXg6GjQRKq7+Dgiseo+h0skmp5Hp2rzmcEIRQot9CPA+uzU7x1x7jZdqvTFGnB+Q==", + "dev": true, + "requires": { + "git-up": "^6.0.0" + } + }, + "gitconfiglocal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz", + "integrity": "sha512-spLUXeTAVHxDtKsJc8FkFVgFtMdEN9qPGpL23VfSHx4fP4+Ds097IXLvymbnDH8FnmxX5Nr9bPw3A+AQ6mWEaQ==", + "dev": true, + "requires": { + "ini": "^1.3.2" + } + }, + "glob": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", + "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + } + }, + "graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true + }, + "handlebars": { + "version": "4.7.7", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", + "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", + "dev": true, + "requires": { + "minimist": "^1.2.5", + "neo-async": "^2.6.0", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4", + "wordwrap": "^1.0.0" + } + }, + "hard-rejection": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", + "dev": true + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", + "dev": true + }, + "hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + } + } + }, + "http-cache-semantics": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", + "dev": true + }, + "http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, + "requires": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + } + }, + "https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "requires": { + "agent-base": "6", + "debug": "4" + } + }, + "human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true + }, + "humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + "dev": true, + "requires": { + "ms": "^2.0.0" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true + }, + "ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true + }, + "ignore-walk": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-5.0.1.tgz", + "integrity": "sha512-yemi4pMf51WKT7khInJqAvsIGzoqYXblnsz0ql8tM+yi1EKYTY1evX4NAbJrLL/Aanr2HyZeluqU+Oi7MGHokw==", + "dev": true, + "requires": { + "minimatch": "^5.0.1" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + } + } + }, + "import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dev": true, + "requires": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true + }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true + }, + "infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "init-package-json": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/init-package-json/-/init-package-json-3.0.2.tgz", + "integrity": "sha512-YhlQPEjNFqlGdzrBfDNRLhvoSgX7iQRgSxgsNknRQ9ITXFT7UMfVMWhBTOh2Y+25lRnGrv5Xz8yZwQ3ACR6T3A==", + "dev": true, + "requires": { + "npm-package-arg": "^9.0.1", + "promzard": "^0.3.0", + "read": "^1.0.7", + "read-package-json": "^5.0.0", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4", + "validate-npm-package-name": "^4.0.0" + }, + "dependencies": { + "hosted-git-info": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.1.0.tgz", + "integrity": "sha512-Ek+QmMEqZF8XrbFdwoDjSbm7rT23pCgEMOJmz6GPk/s4yH//RQfNPArhIxbguNxROq/+5lNBwCDHMhA903Kx1Q==", + "dev": true, + "requires": { + "lru-cache": "^7.5.1" + } + }, + "npm-package-arg": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.0.tgz", + "integrity": "sha512-4J0GL+u2Nh6OnhvUKXRr2ZMG4lR8qtLp+kv7UiV00Y+nGiSxtttCyIRHCt5L5BNkXQld/RceYItau3MDOoGiBw==", + "dev": true, + "requires": { + "hosted-git-info": "^5.0.0", + "proc-log": "^2.0.1", + "semver": "^7.3.5", + "validate-npm-package-name": "^4.0.0" + } + } + } + }, + "inquirer": { + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.4.tgz", + "integrity": "sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg==", + "dev": true, + "requires": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.1", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.21", + "mute-stream": "0.0.8", + "ora": "^5.4.1", + "run-async": "^2.4.0", + "rxjs": "^7.5.5", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6", + "wrap-ansi": "^7.0.0" + } + }, + "ip": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", + "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", + "dev": true + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "requires": { + "ci-info": "^2.0.0" + } + }, + "is-core-module": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz", + "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "dev": true + }, + "is-lambda": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "dev": true + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", + "dev": true + }, + "is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "dev": true + }, + "is-ssh": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/is-ssh/-/is-ssh-1.4.0.tgz", + "integrity": "sha512-x7+VxdxOdlV3CYpjvRLBv5Lo9OJerlYanjwFrPR9fuGPjCiNiCzFgAWpiLAohSbsnH4ZAys3SBh+hq5rJosxUQ==", + "dev": true, + "requires": { + "protocols": "^2.0.1" + } + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true + }, + "is-text-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz", + "integrity": "sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==", + "dev": true, + "requires": { + "text-extensions": "^1.0.0" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "dev": true + }, + "is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true + }, + "is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "requires": { + "is-docker": "^2.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "json-stringify-nice": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/json-stringify-nice/-/json-stringify-nice-1.1.4.tgz", + "integrity": "sha512-5Z5RFW63yxReJ7vANgW6eZFGWaQvnPE3WNmZoOJrSkGju2etKA2L5rrOa1sm877TVTFt57A80BH1bArcmlLfPw==", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "dev": true + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "jsonc-parser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz", + "integrity": "sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==", + "dev": true + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", + "dev": true + }, + "JSONStream": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "dev": true, + "requires": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + } + }, + "just-diff": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/just-diff/-/just-diff-5.1.1.tgz", + "integrity": "sha512-u8HXJ3HlNrTzY7zrYYKjNEfBlyjqhdBkoyTVdjtn7p02RJD5NvR8rIClzeGA7t+UYP1/7eAkWNLU0+P3QrEqKQ==", + "dev": true + }, + "just-diff-apply": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/just-diff-apply/-/just-diff-apply-5.4.1.tgz", + "integrity": "sha512-AAV5Jw7tsniWwih8Ly3fXxEZ06y+6p5TwQMsw0dzZ/wPKilzyDgdAnL0Ug4NNIquPUOh1vfFWEHbmXUqM5+o8g==", + "dev": true + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + }, + "lerna": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/lerna/-/lerna-5.4.3.tgz", + "integrity": "sha512-PypijMk4Jii8DoWGRLiHhBUaqpjXAmrwbs6uUZgyb07JrqCrXW3nhAyzdZE5S0rk1/sRzjd10fYmntOgNFfKBw==", + "dev": true, + "requires": { + "@lerna/add": "5.4.3", + "@lerna/bootstrap": "5.4.3", + "@lerna/changed": "5.4.3", + "@lerna/clean": "5.4.3", + "@lerna/cli": "5.4.3", + "@lerna/create": "5.4.3", + "@lerna/diff": "5.4.3", + "@lerna/exec": "5.4.3", + "@lerna/import": "5.4.3", + "@lerna/info": "5.4.3", + "@lerna/init": "5.4.3", + "@lerna/link": "5.4.3", + "@lerna/list": "5.4.3", + "@lerna/publish": "5.4.3", + "@lerna/run": "5.4.3", + "@lerna/version": "5.4.3", + "import-local": "^3.0.2", + "npmlog": "^6.0.2", + "nx": ">=14.5.4 < 16" + } + }, + "libnpmaccess": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/libnpmaccess/-/libnpmaccess-6.0.3.tgz", + "integrity": "sha512-4tkfUZprwvih2VUZYMozL7EMKgQ5q9VW2NtRyxWtQWlkLTAWHRklcAvBN49CVqEkhUw7vTX2fNgB5LzgUucgYg==", + "dev": true, + "requires": { + "aproba": "^2.0.0", + "minipass": "^3.1.1", + "npm-package-arg": "^9.0.1", + "npm-registry-fetch": "^13.0.0" + }, + "dependencies": { + "hosted-git-info": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.1.0.tgz", + "integrity": "sha512-Ek+QmMEqZF8XrbFdwoDjSbm7rT23pCgEMOJmz6GPk/s4yH//RQfNPArhIxbguNxROq/+5lNBwCDHMhA903Kx1Q==", + "dev": true, + "requires": { + "lru-cache": "^7.5.1" + } + }, + "npm-package-arg": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.0.tgz", + "integrity": "sha512-4J0GL+u2Nh6OnhvUKXRr2ZMG4lR8qtLp+kv7UiV00Y+nGiSxtttCyIRHCt5L5BNkXQld/RceYItau3MDOoGiBw==", + "dev": true, + "requires": { + "hosted-git-info": "^5.0.0", + "proc-log": "^2.0.1", + "semver": "^7.3.5", + "validate-npm-package-name": "^4.0.0" + } + } + } + }, + "libnpmpublish": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/libnpmpublish/-/libnpmpublish-6.0.4.tgz", + "integrity": "sha512-lvAEYW8mB8QblL6Q/PI/wMzKNvIrF7Kpujf/4fGS/32a2i3jzUXi04TNyIBcK6dQJ34IgywfaKGh+Jq4HYPFmg==", + "dev": true, + "requires": { + "normalize-package-data": "^4.0.0", + "npm-package-arg": "^9.0.1", + "npm-registry-fetch": "^13.0.0", + "semver": "^7.3.7", + "ssri": "^9.0.0" + }, + "dependencies": { + "hosted-git-info": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.1.0.tgz", + "integrity": "sha512-Ek+QmMEqZF8XrbFdwoDjSbm7rT23pCgEMOJmz6GPk/s4yH//RQfNPArhIxbguNxROq/+5lNBwCDHMhA903Kx1Q==", + "dev": true, + "requires": { + "lru-cache": "^7.5.1" + } + }, + "normalize-package-data": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-4.0.1.tgz", + "integrity": "sha512-EBk5QKKuocMJhB3BILuKhmaPjI8vNRSpIfO9woLC6NyHVkKKdVEdAO1mrT0ZfxNR1lKwCcTkuZfmGIFdizZ8Pg==", + "dev": true, + "requires": { + "hosted-git-info": "^5.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + } + }, + "npm-package-arg": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.0.tgz", + "integrity": "sha512-4J0GL+u2Nh6OnhvUKXRr2ZMG4lR8qtLp+kv7UiV00Y+nGiSxtttCyIRHCt5L5BNkXQld/RceYItau3MDOoGiBw==", + "dev": true, + "requires": { + "hosted-git-info": "^5.0.0", + "proc-log": "^2.0.1", + "semver": "^7.3.5", + "validate-npm-package-name": "^4.0.0" + } + } + } + }, + "lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "load-json-file": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-6.2.0.tgz", + "integrity": "sha512-gUD/epcRms75Cw8RT1pUdHugZYM5ce64ucs2GEISABwkRsOQr0q2wm/MV2TKThycIe5e0ytRweW2RZxclogCdQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.15", + "parse-json": "^5.0.0", + "strip-bom": "^4.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true + } + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "lodash.ismatch": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz", + "integrity": "sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g==", + "dev": true + }, + "log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + } + }, + "lru-cache": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.0.tgz", + "integrity": "sha512-EIRtP1GrSJny0dqb50QXRUNBxHJhcpxHC++M5tD7RYbvLLn5KVWKsbyswSSqDuU15UFi3bgTQIY8nhDMeF6aDQ==", + "dev": true + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "make-fetch-happen": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz", + "integrity": "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==", + "dev": true, + "requires": { + "agentkeepalive": "^4.2.1", + "cacache": "^16.1.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^2.0.3", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^9.0.0" + } + }, + "map-obj": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", + "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", + "dev": true + }, + "meow": { + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", + "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", + "dev": true, + "requires": { + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" + }, + "dependencies": { + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true + } + } + }, + "read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "requires": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "dependencies": { + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + } + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "type-fest": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", + "dev": true + } + } + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, + "micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "dev": true + }, + "minimist-options": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", + "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", + "dev": true, + "requires": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0", + "kind-of": "^6.0.3" + } + }, + "minipass": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz", + "integrity": "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-fetch": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz", + "integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==", + "dev": true, + "requires": { + "encoding": "^0.1.13", + "minipass": "^3.1.6", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + } + }, + "minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-json-stream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz", + "integrity": "sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==", + "dev": true, + "requires": { + "jsonparse": "^1.3.1", + "minipass": "^3.0.0" + } + }, + "minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-sized": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "requires": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + } + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, + "mkdirp-infer-owner": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mkdirp-infer-owner/-/mkdirp-infer-owner-2.0.0.tgz", + "integrity": "sha512-sdqtiFt3lkOaYvTXSRIUjkIdPTcxgv5+fgqYE/5qgwdw12cOrAuzzgzvVExIkH/ul1oeHN3bCLOWSG3XOqbKKw==", + "dev": true, + "requires": { + "chownr": "^2.0.0", + "infer-owner": "^1.0.4", + "mkdirp": "^1.0.3" + } + }, + "modify-values": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz", + "integrity": "sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "multimatch": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-5.0.0.tgz", + "integrity": "sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA==", + "dev": true, + "requires": { + "@types/minimatch": "^3.0.3", + "array-differ": "^3.0.0", + "array-union": "^2.1.0", + "arrify": "^2.0.1", + "minimatch": "^3.0.4" + }, + "dependencies": { + "arrify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", + "dev": true + } + } + }, + "mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, + "negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true + }, + "neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "node-addon-api": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", + "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", + "dev": true + }, + "node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "dev": true, + "requires": { + "whatwg-url": "^5.0.0" + }, + "dependencies": { + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true + }, + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true + }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + } + } + }, + "node-gyp": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.1.0.tgz", + "integrity": "sha512-HkmN0ZpQJU7FLbJauJTHkHlSVAXlNGDAzH/VYFZGDOnFyn/Na3GlNJfkudmufOdS6/jNFhy88ObzL7ERz9es1g==", + "dev": true, + "requires": { + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^10.0.3", + "nopt": "^5.0.0", + "npmlog": "^6.0.0", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^2.0.2" + }, + "dependencies": { + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } + } + }, + "node-gyp-build": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.5.0.tgz", + "integrity": "sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg==", + "dev": true + }, + "nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "dev": true, + "requires": { + "abbrev": "1" + } + }, + "normalize-package-data": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "dev": true, + "requires": { + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "dev": true + }, + "npm-bundled": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz", + "integrity": "sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==", + "dev": true, + "requires": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-install-checks": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-5.0.0.tgz", + "integrity": "sha512-65lUsMI8ztHCxFz5ckCEC44DRvEGdZX5usQFriauxHEwt7upv1FKaQEmAtU0YnOAdwuNWCmk64xYiQABNrEyLA==", + "dev": true, + "requires": { + "semver": "^7.1.1" + } + }, + "npm-normalize-package-bin": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", + "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", + "dev": true + }, + "npm-package-arg": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.1.1.tgz", + "integrity": "sha512-CsP95FhWQDwNqiYS+Q0mZ7FAEDytDZAkNxQqea6IaAFJTAY9Lhhqyl0irU/6PMc7BGfUmnsbHcqxJD7XuVM/rg==", + "dev": true, + "requires": { + "hosted-git-info": "^3.0.6", + "semver": "^7.0.0", + "validate-npm-package-name": "^3.0.0" + }, + "dependencies": { + "builtins": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", + "integrity": "sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==", + "dev": true + }, + "hosted-git-info": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.8.tgz", + "integrity": "sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "validate-npm-package-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", + "integrity": "sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==", + "dev": true, + "requires": { + "builtins": "^1.0.3" + } + } + } + }, + "npm-packlist": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-5.1.2.tgz", + "integrity": "sha512-rQiBDNmt1H1jNhFEo9ilTD7ZJXd6cvHSmBK+waIBu886v6OyLWjZqb1RD9viR7rgG0AAe29FYnOXcO26TRxT/Q==", + "dev": true, + "requires": { + "glob": "^8.0.1", + "ignore-walk": "^5.0.1", + "npm-bundled": "^1.1.2", + "npm-normalize-package-bin": "^2.0.0" + }, + "dependencies": { + "npm-normalize-package-bin": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz", + "integrity": "sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==", + "dev": true + } + } + }, + "npm-pick-manifest": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-7.0.1.tgz", + "integrity": "sha512-IA8+tuv8KujbsbLQvselW2XQgmXWS47t3CB0ZrzsRZ82DbDfkcFunOaPm4X7qNuhMfq+FmV7hQT4iFVpHqV7mg==", + "dev": true, + "requires": { + "npm-install-checks": "^5.0.0", + "npm-normalize-package-bin": "^1.0.1", + "npm-package-arg": "^9.0.0", + "semver": "^7.3.5" + }, + "dependencies": { + "hosted-git-info": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.1.0.tgz", + "integrity": "sha512-Ek+QmMEqZF8XrbFdwoDjSbm7rT23pCgEMOJmz6GPk/s4yH//RQfNPArhIxbguNxROq/+5lNBwCDHMhA903Kx1Q==", + "dev": true, + "requires": { + "lru-cache": "^7.5.1" + } + }, + "npm-package-arg": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.0.tgz", + "integrity": "sha512-4J0GL+u2Nh6OnhvUKXRr2ZMG4lR8qtLp+kv7UiV00Y+nGiSxtttCyIRHCt5L5BNkXQld/RceYItau3MDOoGiBw==", + "dev": true, + "requires": { + "hosted-git-info": "^5.0.0", + "proc-log": "^2.0.1", + "semver": "^7.3.5", + "validate-npm-package-name": "^4.0.0" + } + } + } + }, + "npm-registry-fetch": { + "version": "13.3.1", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-13.3.1.tgz", + "integrity": "sha512-eukJPi++DKRTjSBRcDZSDDsGqRK3ehbxfFUcgaRd0Yp6kRwOwh2WVn0r+8rMB4nnuzvAk6rQVzl6K5CkYOmnvw==", + "dev": true, + "requires": { + "make-fetch-happen": "^10.0.6", + "minipass": "^3.1.6", + "minipass-fetch": "^2.0.3", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.1.2", + "npm-package-arg": "^9.0.1", + "proc-log": "^2.0.0" + }, + "dependencies": { + "hosted-git-info": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.1.0.tgz", + "integrity": "sha512-Ek+QmMEqZF8XrbFdwoDjSbm7rT23pCgEMOJmz6GPk/s4yH//RQfNPArhIxbguNxROq/+5lNBwCDHMhA903Kx1Q==", + "dev": true, + "requires": { + "lru-cache": "^7.5.1" + } + }, + "npm-package-arg": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.0.tgz", + "integrity": "sha512-4J0GL+u2Nh6OnhvUKXRr2ZMG4lR8qtLp+kv7UiV00Y+nGiSxtttCyIRHCt5L5BNkXQld/RceYItau3MDOoGiBw==", + "dev": true, + "requires": { + "hosted-git-info": "^5.0.0", + "proc-log": "^2.0.1", + "semver": "^7.3.5", + "validate-npm-package-name": "^4.0.0" + } + } + } + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "npmlog": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", + "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", + "dev": true, + "requires": { + "are-we-there-yet": "^3.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^4.0.3", + "set-blocking": "^2.0.0" + } + }, + "nx": { + "version": "14.5.10", + "resolved": "https://registry.npmjs.org/nx/-/nx-14.5.10.tgz", + "integrity": "sha512-dqiV+zY32k98mfKFTgiQyYd9HYZmB1zoJj6gYniEuqzs6CKp8ZSpeRDaVQRxR6wEMvW9MSTA9kBg8sJ78W/NZg==", + "dev": true, + "requires": { + "@nrwl/cli": "14.5.10", + "@nrwl/tao": "14.5.10", + "@parcel/watcher": "2.0.4", + "chalk": "4.1.0", + "chokidar": "^3.5.1", + "cli-cursor": "3.1.0", + "cli-spinners": "2.6.1", + "cliui": "^7.0.2", + "dotenv": "~10.0.0", + "enquirer": "~2.3.6", + "fast-glob": "3.2.7", + "figures": "3.2.0", + "flat": "^5.0.2", + "fs-extra": "^10.1.0", + "glob": "7.1.4", + "ignore": "^5.0.4", + "js-yaml": "4.1.0", + "jsonc-parser": "3.0.0", + "minimatch": "3.0.5", + "npm-run-path": "^4.0.1", + "open": "^8.4.0", + "semver": "7.3.4", + "string-width": "^4.2.3", + "tar-stream": "~2.2.0", + "tmp": "~0.2.1", + "tsconfig-paths": "^3.9.0", + "tslib": "^2.3.0", + "v8-compile-cache": "2.3.0", + "yargs": "^17.4.0", + "yargs-parser": "21.0.1" + }, + "dependencies": { + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "fast-glob": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", + "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + } + }, + "fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "glob": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "minimatch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "semver": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", + "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dev": true, + "requires": { + "rimraf": "^3.0.0" + } + }, + "yargs": { + "version": "17.5.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.5.1.tgz", + "integrity": "sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA==", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.0.0" + } + }, + "yargs-parser": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.1.tgz", + "integrity": "sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==", + "dev": true + } + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "open": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", + "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", + "dev": true, + "requires": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + } + }, + "ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dev": true, + "requires": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "dev": true + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", + "dev": true + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "p-map-series": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map-series/-/p-map-series-2.1.0.tgz", + "integrity": "sha512-RpYIIK1zXSNEOdwxcfe7FdvGcs7+y5n8rifMhMNWvaxRNMPINJHF5GDeuVxWqnfrcHPSCnp7Oo5yNXHId9Av2Q==", + "dev": true + }, + "p-pipe": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-pipe/-/p-pipe-3.1.0.tgz", + "integrity": "sha512-08pj8ATpzMR0Y80x50yJHn37NF6vjrqHutASaX5LiH5npS9XPvrUmscd9MF5R4fuYRHOxQR1FfMIlF7AzwoPqw==", + "dev": true + }, + "p-queue": { + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz", + "integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==", + "dev": true, + "requires": { + "eventemitter3": "^4.0.4", + "p-timeout": "^3.2.0" + } + }, + "p-reduce": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-2.1.0.tgz", + "integrity": "sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw==", + "dev": true + }, + "p-timeout": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", + "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", + "dev": true, + "requires": { + "p-finally": "^1.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "p-waterfall": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/p-waterfall/-/p-waterfall-2.1.1.tgz", + "integrity": "sha512-RRTnDb2TBG/epPRI2yYXsimO0v3BXC8Yd3ogr1545IaqKK17VGhbWVeGGN+XfCm/08OK8635nH31c8bATkHuSw==", + "dev": true, + "requires": { + "p-reduce": "^2.0.0" + } + }, + "pacote": { + "version": "13.6.2", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-13.6.2.tgz", + "integrity": "sha512-Gu8fU3GsvOPkak2CkbojR7vjs3k3P9cA6uazKTHdsdV0gpCEQq2opelnEv30KRQWgVzP5Vd/5umjcedma3MKtg==", + "dev": true, + "requires": { + "@npmcli/git": "^3.0.0", + "@npmcli/installed-package-contents": "^1.0.7", + "@npmcli/promise-spawn": "^3.0.0", + "@npmcli/run-script": "^4.1.0", + "cacache": "^16.0.0", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "infer-owner": "^1.0.4", + "minipass": "^3.1.6", + "mkdirp": "^1.0.4", + "npm-package-arg": "^9.0.0", + "npm-packlist": "^5.1.0", + "npm-pick-manifest": "^7.0.0", + "npm-registry-fetch": "^13.0.1", + "proc-log": "^2.0.0", + "promise-retry": "^2.0.1", + "read-package-json": "^5.0.0", + "read-package-json-fast": "^2.0.3", + "rimraf": "^3.0.2", + "ssri": "^9.0.0", + "tar": "^6.1.11" + }, + "dependencies": { + "hosted-git-info": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.1.0.tgz", + "integrity": "sha512-Ek+QmMEqZF8XrbFdwoDjSbm7rT23pCgEMOJmz6GPk/s4yH//RQfNPArhIxbguNxROq/+5lNBwCDHMhA903Kx1Q==", + "dev": true, + "requires": { + "lru-cache": "^7.5.1" + } + }, + "npm-package-arg": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.0.tgz", + "integrity": "sha512-4J0GL+u2Nh6OnhvUKXRr2ZMG4lR8qtLp+kv7UiV00Y+nGiSxtttCyIRHCt5L5BNkXQld/RceYItau3MDOoGiBw==", + "dev": true, + "requires": { + "hosted-git-info": "^5.0.0", + "proc-log": "^2.0.1", + "semver": "^7.3.5", + "validate-npm-package-name": "^4.0.0" + } + } + } + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "parse-conflict-json": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/parse-conflict-json/-/parse-conflict-json-2.0.2.tgz", + "integrity": "sha512-jDbRGb00TAPFsKWCpZZOT93SxVP9nONOSgES3AevqRq/CHvavEBvKAjxX9p5Y5F0RZLxH9Ufd9+RwtCsa+lFDA==", + "dev": true, + "requires": { + "json-parse-even-better-errors": "^2.3.1", + "just-diff": "^5.0.1", + "just-diff-apply": "^5.2.0" + } + }, + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + }, + "parse-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/parse-path/-/parse-path-5.0.0.tgz", + "integrity": "sha512-qOpH55/+ZJ4jUu/oLO+ifUKjFPNZGfnPJtzvGzKN/4oLMil5m9OH4VpOj6++9/ytJcfks4kzH2hhi87GL/OU9A==", + "dev": true, + "requires": { + "protocols": "^2.0.0" + } + }, + "parse-url": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/parse-url/-/parse-url-7.0.2.tgz", + "integrity": "sha512-PqO4Z0eCiQ08Wj6QQmrmp5YTTxpYfONdOEamrtvK63AmzXpcavIVQubGHxOEwiIoDZFb8uDOoQFS0NCcjqIYQg==", + "dev": true, + "requires": { + "is-ssh": "^1.4.0", + "normalize-url": "^6.1.0", + "parse-path": "^5.0.0", + "protocols": "^2.0.1" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + }, + "pify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-5.0.0.tgz", + "integrity": "sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==", + "dev": true + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + }, + "proc-log": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-2.0.1.tgz", + "integrity": "sha512-Kcmo2FhfDTXdcbfDH76N7uBYHINxc/8GW7UAVuVP9I+Va3uHSerrnKV6dLooga/gh7GlgzuCCr/eoldnL1muGw==", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "promise-all-reject-late": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-all-reject-late/-/promise-all-reject-late-1.0.1.tgz", + "integrity": "sha512-vuf0Lf0lOxyQREH7GDIOUMLS7kz+gs8i6B+Yi8dC68a2sychGrHTJYghMBD6k7eUcH0H5P73EckCA48xijWqXw==", + "dev": true + }, + "promise-call-limit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-call-limit/-/promise-call-limit-1.0.1.tgz", + "integrity": "sha512-3+hgaa19jzCGLuSCbieeRsu5C2joKfYn8pY6JAuXFRVfF4IO+L7UPpFWNTeWT9pM7uhskvbPPd/oEOktCn317Q==", + "dev": true + }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", + "dev": true + }, + "promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "dev": true, + "requires": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + } + }, + "promzard": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/promzard/-/promzard-0.3.0.tgz", + "integrity": "sha512-JZeYqd7UAcHCwI+sTOeUDYkvEU+1bQ7iE0UT1MgB/tERkAPkesW46MrpIySzODi+owTjZtiF8Ay5j9m60KmMBw==", + "dev": true, + "requires": { + "read": "1" + } + }, + "proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", + "dev": true + }, + "protocols": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/protocols/-/protocols-2.0.1.tgz", + "integrity": "sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q==", + "dev": true + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", + "dev": true + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, + "quick-lru": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", + "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", + "dev": true + }, + "read": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", + "integrity": "sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==", + "dev": true, + "requires": { + "mute-stream": "~0.0.4" + } + }, + "read-cmd-shim": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/read-cmd-shim/-/read-cmd-shim-3.0.1.tgz", + "integrity": "sha512-kEmDUoYf/CDy8yZbLTmhB1X9kkjf9Q80PCNsDMb7ufrGd6zZSQA1+UyjrO+pZm5K/S4OXCWJeiIt1JA8kAsa6g==", + "dev": true + }, + "read-package-json": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-5.0.2.tgz", + "integrity": "sha512-BSzugrt4kQ/Z0krro8zhTwV1Kd79ue25IhNN/VtHFy1mG/6Tluyi+msc0UpwaoQzxSHa28mntAjIZY6kEgfR9Q==", + "dev": true, + "requires": { + "glob": "^8.0.1", + "json-parse-even-better-errors": "^2.3.1", + "normalize-package-data": "^4.0.0", + "npm-normalize-package-bin": "^2.0.0" + }, + "dependencies": { + "hosted-git-info": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.1.0.tgz", + "integrity": "sha512-Ek+QmMEqZF8XrbFdwoDjSbm7rT23pCgEMOJmz6GPk/s4yH//RQfNPArhIxbguNxROq/+5lNBwCDHMhA903Kx1Q==", + "dev": true, + "requires": { + "lru-cache": "^7.5.1" + } + }, + "normalize-package-data": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-4.0.1.tgz", + "integrity": "sha512-EBk5QKKuocMJhB3BILuKhmaPjI8vNRSpIfO9woLC6NyHVkKKdVEdAO1mrT0ZfxNR1lKwCcTkuZfmGIFdizZ8Pg==", + "dev": true, + "requires": { + "hosted-git-info": "^5.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + } + }, + "npm-normalize-package-bin": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz", + "integrity": "sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==", + "dev": true + } + } + }, + "read-package-json-fast": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz", + "integrity": "sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ==", + "dev": true, + "requires": { + "json-parse-even-better-errors": "^2.3.0", + "npm-normalize-package-bin": "^1.0.1" + } + }, + "read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", + "dev": true, + "requires": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + }, + "dependencies": { + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + } + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true + } + } + }, + "read-pkg-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", + "integrity": "sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw==", + "dev": true, + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^3.0.0" + }, + "dependencies": { + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true + } + } + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "readdir-scoped-modules": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz", + "integrity": "sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw==", + "dev": true, + "requires": { + "debuglog": "^1.0.1", + "dezalgo": "^1.0.0", + "graceful-fs": "^4.1.2", + "once": "^1.3.0" + } + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "dev": true, + "requires": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true + }, + "resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dev": true, + "requires": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "requires": { + "resolve-from": "^5.0.0" + } + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "dev": true + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + }, + "dependencies": { + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } + } + }, + "run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true + }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "rxjs": { + "version": "7.5.6", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.6.tgz", + "integrity": "sha512-dnyv2/YsXhnm461G+R/Pe5bWP41Nm6LBXEYWI6eiFP4fiwx6WRI/CD0zbdVAudd9xwLEF2IDcKXLHit0FYjUzw==", + "dev": true, + "requires": { + "tslib": "^2.1.0" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + } + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "dev": true + }, + "shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "requires": { + "kind-of": "^6.0.2" + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true + }, + "socks": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.0.tgz", + "integrity": "sha512-scnOe9y4VuiNUULJN72GrM26BNOjVsfPXI+j+98PkyEfsIXroa5ofyjT+FzGvn/xHs73U2JtoBYAVx9Hl4quSA==", + "dev": true, + "requires": { + "ip": "^2.0.0", + "smart-buffer": "^4.2.0" + } + }, + "socks-proxy-agent": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", + "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", + "dev": true, + "requires": { + "agent-base": "^6.0.2", + "debug": "^4.3.3", + "socks": "^2.6.2" + } + }, + "sort-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-4.2.0.tgz", + "integrity": "sha512-aUYIEU/UviqPgc8mHR6IW1EGxkAXpeRETYcrzg8cLAvUPZcpAlleSXHV2mY7G12GphSH6Gzv+4MMVSSkbdteHg==", + "dev": true, + "requires": { + "is-plain-obj": "^2.0.0" + }, + "dependencies": { + "is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true + } + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", + "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", + "dev": true + }, + "split": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", + "dev": true, + "requires": { + "through": "2" + } + }, + "split2": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", + "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", + "dev": true, + "requires": { + "readable-stream": "^3.0.0" + } + }, + "ssri": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", + "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", + "dev": true, + "requires": { + "minipass": "^3.1.1" + } + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + } + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true + }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true + }, + "strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "requires": { + "min-indent": "^1.0.0" + } + }, + "strong-log-transformer": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/strong-log-transformer/-/strong-log-transformer-2.1.0.tgz", + "integrity": "sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA==", + "dev": true, + "requires": { + "duplexer": "^0.1.1", + "minimist": "^1.2.0", + "through": "^2.3.4" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true + }, + "tar": { + "version": "6.1.11", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", + "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", + "dev": true, + "requires": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + } + }, + "tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dev": true, + "requires": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + } + }, + "temp-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", + "integrity": "sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==", + "dev": true + }, + "text-extensions": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz", + "integrity": "sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true + }, + "through2": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", + "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", + "dev": true, + "requires": { + "readable-stream": "3" + } + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "tr46": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", + "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "dev": true, + "requires": { + "punycode": "^2.1.1" + } + }, + "treeverse": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/treeverse/-/treeverse-2.0.0.tgz", + "integrity": "sha512-N5gJCkLu1aXccpOTtqV6ddSEi6ZmGkh3hjmbu1IjcavJK4qyOVQmi0myQKM7z5jVGmD68SJoliaVrMmVObhj6A==", + "dev": true + }, + "trim-newlines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", + "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", + "dev": true + }, + "tsconfig-paths": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", + "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", + "dev": true, + "requires": { + "@types/json5": "^0.0.29", + "json5": "^1.0.1", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + }, + "dependencies": { + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true + } + } + }, + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + }, + "type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", + "dev": true + }, + "typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "requires": { + "is-typedarray": "^1.0.0" + } + }, + "typescript": { + "version": "4.7.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", + "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==", + "dev": true + }, + "uglify-js": { + "version": "3.17.0", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.0.tgz", + "integrity": "sha512-aTeNPVmgIMPpm1cxXr2Q/nEbvkmV8yq66F3om7X3P/cvOXQ0TMQ64Wk63iyT1gPlmdmGzjGpyLh1f3y8MZWXGg==", + "dev": true, + "optional": true + }, + "unique-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-2.0.0.tgz", + "integrity": "sha512-tpzoz2RpZ//6Zt4GPpOFTyrnfZuSvjIfe8lvx6Thp4yTQwJtAFwPlssEBE62VhGA2We5/COyNpcIu+OABu3/Yg==", + "dev": true, + "requires": { + "unique-slug": "^2.0.2" + } + }, + "unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "universal-user-agent": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", + "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==", + "dev": true + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + }, + "upath": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/upath/-/upath-2.0.1.tgz", + "integrity": "sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==", + "dev": true + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true + }, + "v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "validate-npm-package-name": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-4.0.0.tgz", + "integrity": "sha512-mzR0L8ZDktZjpX4OB46KT+56MAhl4EIazWP/+G/HPGuvfdaqg4YsCdtOm6U9+LOFyYDoh4dpnpxZRB9MQQns5Q==", + "dev": true, + "requires": { + "builtins": "^5.0.0" + } + }, + "walk-up-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/walk-up-path/-/walk-up-path-1.0.0.tgz", + "integrity": "sha512-hwj/qMDUEjCU5h0xr90KGCf0tg0/LgJbmOWgrWKYlcJZM7XvquvUJZ0G/HMGr7F7OQMOUuPHWP9JpriinkAlkg==", + "dev": true + }, + "wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "dev": true, + "requires": { + "defaults": "^1.0.3" + } + }, + "webidl-conversions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "dev": true + }, + "whatwg-url": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", + "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", + "dev": true, + "requires": { + "lodash": "^4.7.0", + "tr46": "^2.1.0", + "webidl-conversions": "^6.1.0" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "dev": true, + "requires": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", + "dev": true + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + } + }, + "write-json-file": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/write-json-file/-/write-json-file-4.3.0.tgz", + "integrity": "sha512-PxiShnxf0IlnQuMYOPPhPkhExoCQuTUNPOa/2JWCYTmBquU9njyyDuwRKN26IZBlp4yn1nt+Agh2HOOBl+55HQ==", + "dev": true, + "requires": { + "detect-indent": "^6.0.0", + "graceful-fs": "^4.1.15", + "is-plain-obj": "^2.0.0", + "make-dir": "^3.0.0", + "sort-keys": "^4.0.0", + "write-file-atomic": "^3.0.0" + }, + "dependencies": { + "is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true + }, + "write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + } + } + }, + "write-pkg": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/write-pkg/-/write-pkg-4.0.0.tgz", + "integrity": "sha512-v2UQ+50TNf2rNHJ8NyWttfm/EJUBWMJcx6ZTYZr6Qp52uuegWw/lBkCtCbnYZEmPRNL61m+u67dAmGxo+HTULA==", + "dev": true, + "requires": { + "sort-keys": "^2.0.0", + "type-fest": "^0.4.1", + "write-json-file": "^3.2.0" + }, + "dependencies": { + "detect-indent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz", + "integrity": "sha512-rlpvsxUtM0PQvy9iZe640/IWwWYyBsTApREbA1pHOpmOUIl9MkP/U4z7vTtg4Oaojvqhxt7sdufnT0EzGaR31g==", + "dev": true + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "sort-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", + "integrity": "sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg==", + "dev": true, + "requires": { + "is-plain-obj": "^1.0.0" + } + }, + "type-fest": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.4.1.tgz", + "integrity": "sha512-IwzA/LSfD2vC1/YDYMv/zHP4rDF1usCwllsDpbolT3D4fUepIO7f9K70jjmUewU/LmGUKJcwcVtDCpnKk4BPMw==", + "dev": true + }, + "write-file-atomic": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", + "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + }, + "write-json-file": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/write-json-file/-/write-json-file-3.2.0.tgz", + "integrity": "sha512-3xZqT7Byc2uORAatYiP3DHUUAVEkNOswEWNs9H5KXiicRTvzYzYqKjYc4G7p+8pltvAw641lVByKVtMpf+4sYQ==", + "dev": true, + "requires": { + "detect-indent": "^5.0.0", + "graceful-fs": "^4.1.15", + "make-dir": "^2.1.0", + "pify": "^4.0.1", + "sort-keys": "^2.0.0", + "write-file-atomic": "^2.4.2" + } + } + } + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true + }, + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + } + }, + "yargs-parser": { + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "dev": true + } + } +} diff --git a/examples/Example - Pascal Symbol Table/package.json b/examples/Example - Pascal Symbol Table/package.json new file mode 100644 index 0000000..d21f8b8 --- /dev/null +++ b/examples/Example - Pascal Symbol Table/package.json @@ -0,0 +1,26 @@ +{ + "name": "@examples/pascal-symbol-table", + "version": "1.0.0", + "description": "", + "main": "dist/main.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1", + "antlr4ts": "antlr4ts -visitor ./pascal.g4", + "build": "tsc --build tsconfig.json", + "lint": "npx eslint src" , + "go": "node dist/main.js" + }, + "author": "", + "license": "ISC", + "dependencies": { + "antlr4ts": "^0.5.0-alpha.4", + "@easycompiler/ast": "1.0.0", + "@easycompiler/frontend": "1.0.0" + }, + "devDependencies": { + "@types/node": "^18.0.4", + "antlr4ts-cli": "^0.5.0-alpha.4", + "typescript": "^4.7.4", + "lerna": "^5.1.7" + } +} \ No newline at end of file diff --git a/examples/Example - Pascal Symbol Table/pascal.g4 b/examples/Example - Pascal Symbol Table/pascal.g4 new file mode 100644 index 0000000..b72e3cc --- /dev/null +++ b/examples/Example - Pascal Symbol Table/pascal.g4 @@ -0,0 +1,893 @@ +/* +BSD License + +Copyright (c) 2013, Tom Everett +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. Neither the name of Tom Everett nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ +/* +Adapted from pascal.g by Hakki Dogusan, Piet Schoutteten and Marton Papp +*/ + +grammar pascal; + + +start + : program; + +program + : programHeading (INTERFACE)? block DOT EOF; + +programHeading + : PROGRAM identifier (LPAREN identifierList RPAREN)? SEMI + | UNIT identifier SEMI + ; + +identifier + : IDENT + ; + +block + : (labelDeclarationPart | constantDefinitionPart | typeDefinitionPart | variableDeclarationPart | procedureAndFunctionDeclarationPart | usesUnitsPart | IMPLEMENTATION)* compoundStatement + ; + +usesUnitsPart + : USES identifierList SEMI + ; + +labelDeclarationPart + : LABEL label (COMMA label)* SEMI + ; + +label + : unsignedInteger + ; + +constantDefinitionPart + : CONST (constantDefinition SEMI) + + ; + +constantDefinition + : identifier EQUAL constant + ; + +constantChr + : CHR LPAREN unsignedInteger RPAREN + ; + +constant + : unsignedNumber + | sign unsignedNumber + | identifier + | sign identifier + | string + | constantChr + ; + +unsignedNumber + : unsignedInteger + | unsignedReal + ; + +unsignedInteger + : NUM_INT + ; + +unsignedReal + : NUM_REAL + ; + +sign + : PLUS + | MINUS + ; + +bool_ + : TRUE + | FALSE + ; + +string + : STRING_LITERAL + ; + +typeDefinitionPart + : TYPE (typeDefinition SEMI) + + ; + +typeDefinition + : identifier EQUAL (type_ | functionType | procedureType) + ; + +functionType + : FUNCTION (formalParameterList)? COLON resultType + ; + +procedureType + : PROCEDURE (formalParameterList)? + ; + +type_ + : simpleType + | structuredType + | pointerType + ; + +simpleType + : scalarType + | subrangeType + | typeIdentifier + | stringtype + ; + +scalarType + : LPAREN identifierList RPAREN + ; + +subrangeType + : constant DOTDOT constant + ; + +typeIdentifier + : identifier + | (CHAR | BOOLEAN | INTEGER | REAL | STRING) + ; + +structuredType + : PACKED unpackedStructuredType + | unpackedStructuredType + ; + +unpackedStructuredType + : arrayType + | recordType + | setType + | fileType + ; + +stringtype + : STRING LBRACK (identifier | unsignedNumber) RBRACK + ; + +arrayType + : ARRAY LBRACK typeList RBRACK OF componentType + | ARRAY LBRACK2 typeList RBRACK2 OF componentType + ; + +typeList + : indexType (COMMA indexType)* + ; + +indexType + : simpleType + ; + +componentType + : type_ + ; + +recordType + : RECORD fieldList? END + ; + +fieldList + : fixedPart (SEMI variantPart)? + | variantPart + ; + +fixedPart + : recordSection (SEMI recordSection)* + ; + +recordSection + : identifierList COLON type_ + ; + +variantPart + : CASE tag OF variant (SEMI variant)* + ; + +tag + : identifier COLON typeIdentifier + | typeIdentifier + ; + +variant + : constList COLON LPAREN fieldList RPAREN + ; + +setType + : SET OF baseType + ; + +baseType + : simpleType + ; + +fileType + : FILE OF type_ + | FILE + ; + +pointerType + : POINTER typeIdentifier + ; + +variableDeclarationPart + : VAR variableDeclaration (SEMI variableDeclaration)* SEMI + ; + +variableDeclaration + : identifierList COLON type_ + ; + +procedureAndFunctionDeclarationPart + : procedureOrFunctionDeclaration SEMI + ; + +procedureOrFunctionDeclaration + : procedureDeclaration + | functionDeclaration + ; + +procedureDeclaration + : PROCEDURE identifier (formalParameterList)? SEMI block + ; + +formalParameterList + : LPAREN formalParameterSection (SEMI formalParameterSection)* RPAREN + ; + +formalParameterSection + : parameterGroup + | VAR parameterGroup + | FUNCTION parameterGroup + | PROCEDURE parameterGroup + ; + +parameterGroup + : identifierList COLON typeIdentifier + ; + +identifierList + : identifier (COMMA identifier)* + ; + +constList + : constant (COMMA constant)* + ; + +functionDeclaration + : FUNCTION identifier (formalParameterList)? COLON resultType SEMI block + ; + +resultType + : typeIdentifier + ; + +statement + : label COLON unlabelledStatement + | unlabelledStatement + ; + +unlabelledStatement + : simpleStatement + | structuredStatement + ; + +simpleStatement + : assignmentStatement + | procedureStatement + | gotoStatement + | emptyStatement_ + ; + +assignmentStatement + : variable ASSIGN expression + ; + +variable + : (AT identifier | identifier) (LBRACK expression (COMMA expression)* RBRACK | LBRACK2 expression (COMMA expression)* RBRACK2 | DOT identifier | POINTER)* + ; + +expression + : simpleExpression (relationaloperator expression)? + ; + +relationaloperator + : EQUAL + | NOT_EQUAL + | LT + | LE + | GE + | GT + | IN + ; + +simpleExpression + : term (additiveoperator simpleExpression)? + ; + +additiveoperator + : PLUS + | MINUS + | OR + ; + +term + : signedFactor (multiplicativeoperator term)? + ; + +multiplicativeoperator + : STAR + | SLASH + | DIV + | MOD + | AND + ; + +signedFactor + : (PLUS | MINUS)? factor + ; + +factor + : variable + | LPAREN expression RPAREN + | functionDesignator + | unsignedConstant + | set_ + | NOT factor + | bool_ + ; + +unsignedConstant + : unsignedNumber + | constantChr + | string + | NIL + ; + +functionDesignator + : identifier LPAREN parameterList RPAREN + ; + +parameterList + : actualParameter (COMMA actualParameter)* + ; + +set_ + : LBRACK elementList RBRACK + | LBRACK2 elementList RBRACK2 + ; + +elementList + : element (COMMA element)* + | + ; + +element + : expression (DOTDOT expression)? + ; + +procedureStatement + : identifier (LPAREN parameterList RPAREN)? + ; + +actualParameter + : expression parameterwidth* + ; + +parameterwidth + : ':' expression + ; + +gotoStatement + : GOTO label + ; + +emptyStatement_ + : + ; + +empty_ + : + /* empty */ + ; + +structuredStatement + : compoundStatement + | conditionalStatement + | repetetiveStatement + | withStatement + ; + +compoundStatement + : BEGIN statements END + ; + +statements + : statement (SEMI statement)* + ; + +conditionalStatement + : ifStatement + | caseStatement + ; + +ifStatement + : IF expression THEN statement (: ELSE statement)? + ; + +caseStatement + : CASE expression OF caseListElement (SEMI caseListElement)* (SEMI ELSE statements)? END + ; + +caseListElement + : constList COLON statement + ; + +repetetiveStatement + : whileStatement + | repeatStatement + | forStatement + ; + +whileStatement + : WHILE expression DO statement + ; + +repeatStatement + : REPEAT statements UNTIL expression + ; + +forStatement + : FOR identifier ASSIGN forList DO statement + ; + +forList + : initialValue (TO | DOWNTO) finalValue + ; + +initialValue + : expression + ; + +finalValue + : expression + ; + +withStatement + : WITH recordVariableList DO statement + ; + +recordVariableList + : variable (COMMA variable)* + ; + +AND + : 'AND' + ; + + +ARRAY + : 'ARRAY' + ; + + +BEGIN + : 'BEGIN' + ; + + +BOOLEAN + : 'BOOLEAN' + ; + + +CASE + : 'CASE' + ; + + +CHAR + : 'CHAR' + ; + + +CHR + : 'CHR' + ; + + +CONST + : 'CONST' + ; + + +DIV + : 'DIV' + ; + + +DO + : 'DO' + ; + + +DOWNTO + : 'DOWNTO' + ; + + +ELSE + : 'ELSE' + ; + + +END + : 'END' + ; + + +FILE + : 'FILE' + ; + + +FOR + : 'FOR' + ; + + +FUNCTION + : 'FUNCTION' + ; + + +GOTO + : 'GOTO' + ; + + +IF + : 'IF' + ; + + +IN + : 'IN' + ; + + +INTEGER + : 'INTEGER' + ; + + +LABEL + : 'LABEL' + ; + + +MOD + : 'MOD' + ; + + +NIL + : 'NIL' + ; + + +NOT + : 'NOT' + ; + + +OF + : 'OF' + ; + + +OR + : 'OR' + ; + + +PACKED + : 'PACKED' + ; + + +PROCEDURE + : 'PROCEDURE' + ; + + +PROGRAM + : 'PROGRAM' + ; + + +REAL + : 'REAL' + ; + + +RECORD + : 'RECORD' + ; + + +REPEAT + : 'REPEAT' + ; + + +SET + : 'SET' + ; + + +THEN + : 'THEN' + ; + + +TO + : 'TO' + ; + + +TYPE + : 'TYPE' + ; + + +UNTIL + : 'UNTIL' + ; + + +VAR + : 'VAR' + ; + + +WHILE + : 'WHILE' + ; + + +WITH + : 'WITH' + ; + + +PLUS + : '+' + ; + + +MINUS + : '-' + ; + + +STAR + : '*' + ; + + +SLASH + : '/' + ; + + +ASSIGN + : ':=' + ; + + +COMMA + : ',' + ; + + +SEMI + : ';' + ; + + +COLON + : ':' + ; + + +EQUAL + : '=' + ; + + +NOT_EQUAL + : '<>' + ; + + +LT + : '<' + ; + + +LE + : '<=' + ; + + +GE + : '>=' + ; + + +GT + : '>' + ; + + +LPAREN + : '(' + ; + + +RPAREN + : ')' + ; + + +LBRACK + : '[' + ; + + +LBRACK2 + : '(.' + ; + + +RBRACK + : ']' + ; + + +RBRACK2 + : '.)' + ; + + +POINTER + : '^' + ; + + +AT + : '@' + ; + + +DOT + : '.' + ; + + +DOTDOT + : '..' + ; + + +LCURLY + : '{' + ; + + +RCURLY + : '}' + ; + + +UNIT + : 'UNIT' + ; + + +INTERFACE + : 'INTERFACE' + ; + + +USES + : 'USES' + ; + + +STRING + : 'STRING' + ; + + +IMPLEMENTATION + : 'IMPLEMENTATION' + ; + + +TRUE + : 'TRUE' + ; + + +FALSE + : 'FALSE' + ; + + +WS + : [ \t\r\n] -> skip + ; + + +COMMENT_1 + : '(*' .*? '*)' -> skip + ; + + +COMMENT_2 + : '{' .*? '}' -> skip + ; + + +IDENT + : ('A' .. 'Z') ('A' .. 'Z' | '0' .. '9' | '_')* + ; + + +STRING_LITERAL + : '\'' ('\'\'' | ~ ('\''))* '\'' + ; + + +NUM_INT + : ('0' .. '9') + + ; + + +NUM_REAL + : ('0' .. '9') + (('.' ('0' .. '9') + (EXPONENT)?)? | EXPONENT) + ; + + +fragment EXPONENT + : ('E') ('+' | '-')? ('0' .. '9') + + ; \ No newline at end of file diff --git a/examples/Example - Pascal Symbol Table/pascal.interp b/examples/Example - Pascal Symbol Table/pascal.interp new file mode 100644 index 0000000..20ee6e8 --- /dev/null +++ b/examples/Example - Pascal Symbol Table/pascal.interp @@ -0,0 +1,269 @@ +token literal names: +null +'AND' +'ARRAY' +'BEGIN' +'BOOLEAN' +'CASE' +'CHAR' +'CHR' +'CONST' +'DIV' +'DO' +'DOWNTO' +'ELSE' +'END' +'FILE' +'FOR' +'FUNCTION' +'GOTO' +'IF' +'IN' +'INTEGER' +'LABEL' +'MOD' +'NIL' +'NOT' +'OF' +'OR' +'PACKED' +'PROCEDURE' +'PROGRAM' +'REAL' +'RECORD' +'REPEAT' +'SET' +'THEN' +'TO' +'TYPE' +'UNTIL' +'VAR' +'WHILE' +'WITH' +'+' +'-' +'*' +'/' +':=' +',' +';' +':' +'=' +'<>' +'<' +'<=' +'>=' +'>' +'(' +')' +'[' +'(.' +']' +'.)' +'^' +'@' +'.' +'..' +'{' +'}' +'UNIT' +'INTERFACE' +'USES' +'STRING' +'IMPLEMENTATION' +'TRUE' +'FALSE' +null +null +null +null +null +null +null + +token symbolic names: +null +AND +ARRAY +BEGIN +BOOLEAN +CASE +CHAR +CHR +CONST +DIV +DO +DOWNTO +ELSE +END +FILE +FOR +FUNCTION +GOTO +IF +IN +INTEGER +LABEL +MOD +NIL +NOT +OF +OR +PACKED +PROCEDURE +PROGRAM +REAL +RECORD +REPEAT +SET +THEN +TO +TYPE +UNTIL +VAR +WHILE +WITH +PLUS +MINUS +STAR +SLASH +ASSIGN +COMMA +SEMI +COLON +EQUAL +NOT_EQUAL +LT +LE +GE +GT +LPAREN +RPAREN +LBRACK +LBRACK2 +RBRACK +RBRACK2 +POINTER +AT +DOT +DOTDOT +LCURLY +RCURLY +UNIT +INTERFACE +USES +STRING +IMPLEMENTATION +TRUE +FALSE +WS +COMMENT_1 +COMMENT_2 +IDENT +STRING_LITERAL +NUM_INT +NUM_REAL + +rule names: +start +program +programHeading +identifier +block +usesUnitsPart +labelDeclarationPart +label +constantDefinitionPart +constantDefinition +constantChr +constant +unsignedNumber +unsignedInteger +unsignedReal +sign +bool_ +string +typeDefinitionPart +typeDefinition +functionType +procedureType +type_ +simpleType +scalarType +subrangeType +typeIdentifier +structuredType +unpackedStructuredType +stringtype +arrayType +typeList +indexType +componentType +recordType +fieldList +fixedPart +recordSection +variantPart +tag +variant +setType +baseType +fileType +pointerType +variableDeclarationPart +variableDeclaration +procedureAndFunctionDeclarationPart +procedureOrFunctionDeclaration +procedureDeclaration +formalParameterList +formalParameterSection +parameterGroup +identifierList +constList +functionDeclaration +resultType +statement +unlabelledStatement +simpleStatement +assignmentStatement +variable +expression +relationaloperator +simpleExpression +additiveoperator +term +multiplicativeoperator +signedFactor +factor +unsignedConstant +functionDesignator +parameterList +set_ +elementList +element +procedureStatement +actualParameter +parameterwidth +gotoStatement +emptyStatement_ +empty_ +structuredStatement +compoundStatement +statements +conditionalStatement +ifStatement +caseStatement +caseListElement +repetetiveStatement +whileStatement +repeatStatement +forStatement +forList +initialValue +finalValue +withStatement +recordVariableList + + +atn: +[3, 51485, 51898, 1421, 44986, 20307, 1543, 60043, 49729, 3, 82, 806, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 4, 27, 9, 27, 4, 28, 9, 28, 4, 29, 9, 29, 4, 30, 9, 30, 4, 31, 9, 31, 4, 32, 9, 32, 4, 33, 9, 33, 4, 34, 9, 34, 4, 35, 9, 35, 4, 36, 9, 36, 4, 37, 9, 37, 4, 38, 9, 38, 4, 39, 9, 39, 4, 40, 9, 40, 4, 41, 9, 41, 4, 42, 9, 42, 4, 43, 9, 43, 4, 44, 9, 44, 4, 45, 9, 45, 4, 46, 9, 46, 4, 47, 9, 47, 4, 48, 9, 48, 4, 49, 9, 49, 4, 50, 9, 50, 4, 51, 9, 51, 4, 52, 9, 52, 4, 53, 9, 53, 4, 54, 9, 54, 4, 55, 9, 55, 4, 56, 9, 56, 4, 57, 9, 57, 4, 58, 9, 58, 4, 59, 9, 59, 4, 60, 9, 60, 4, 61, 9, 61, 4, 62, 9, 62, 4, 63, 9, 63, 4, 64, 9, 64, 4, 65, 9, 65, 4, 66, 9, 66, 4, 67, 9, 67, 4, 68, 9, 68, 4, 69, 9, 69, 4, 70, 9, 70, 4, 71, 9, 71, 4, 72, 9, 72, 4, 73, 9, 73, 4, 74, 9, 74, 4, 75, 9, 75, 4, 76, 9, 76, 4, 77, 9, 77, 4, 78, 9, 78, 4, 79, 9, 79, 4, 80, 9, 80, 4, 81, 9, 81, 4, 82, 9, 82, 4, 83, 9, 83, 4, 84, 9, 84, 4, 85, 9, 85, 4, 86, 9, 86, 4, 87, 9, 87, 4, 88, 9, 88, 4, 89, 9, 89, 4, 90, 9, 90, 4, 91, 9, 91, 4, 92, 9, 92, 4, 93, 9, 93, 4, 94, 9, 94, 4, 95, 9, 95, 4, 96, 9, 96, 4, 97, 9, 97, 4, 98, 9, 98, 4, 99, 9, 99, 3, 2, 3, 2, 3, 3, 3, 3, 5, 3, 203, 10, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 5, 4, 215, 10, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 5, 4, 223, 10, 4, 3, 5, 3, 5, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 7, 6, 234, 10, 6, 12, 6, 14, 6, 237, 11, 6, 3, 6, 3, 6, 3, 7, 3, 7, 3, 7, 3, 7, 3, 8, 3, 8, 3, 8, 3, 8, 7, 8, 249, 10, 8, 12, 8, 14, 8, 252, 11, 8, 3, 8, 3, 8, 3, 9, 3, 9, 3, 10, 3, 10, 3, 10, 3, 10, 6, 10, 262, 10, 10, 13, 10, 14, 10, 263, 3, 11, 3, 11, 3, 11, 3, 11, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 5, 13, 285, 10, 13, 3, 14, 3, 14, 5, 14, 289, 10, 14, 3, 15, 3, 15, 3, 16, 3, 16, 3, 17, 3, 17, 3, 18, 3, 18, 3, 19, 3, 19, 3, 20, 3, 20, 3, 20, 3, 20, 6, 20, 305, 10, 20, 13, 20, 14, 20, 306, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 5, 21, 314, 10, 21, 3, 22, 3, 22, 5, 22, 318, 10, 22, 3, 22, 3, 22, 3, 22, 3, 23, 3, 23, 5, 23, 325, 10, 23, 3, 24, 3, 24, 3, 24, 5, 24, 330, 10, 24, 3, 25, 3, 25, 3, 25, 3, 25, 5, 25, 336, 10, 25, 3, 26, 3, 26, 3, 26, 3, 26, 3, 27, 3, 27, 3, 27, 3, 27, 3, 28, 3, 28, 5, 28, 348, 10, 28, 3, 29, 3, 29, 3, 29, 5, 29, 353, 10, 29, 3, 30, 3, 30, 3, 30, 3, 30, 5, 30, 359, 10, 30, 3, 31, 3, 31, 3, 31, 3, 31, 5, 31, 365, 10, 31, 3, 31, 3, 31, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 5, 32, 383, 10, 32, 3, 33, 3, 33, 3, 33, 7, 33, 388, 10, 33, 12, 33, 14, 33, 391, 11, 33, 3, 34, 3, 34, 3, 35, 3, 35, 3, 36, 3, 36, 5, 36, 399, 10, 36, 3, 36, 3, 36, 3, 37, 3, 37, 3, 37, 5, 37, 406, 10, 37, 3, 37, 5, 37, 409, 10, 37, 3, 38, 3, 38, 3, 38, 7, 38, 414, 10, 38, 12, 38, 14, 38, 417, 11, 38, 3, 39, 3, 39, 3, 39, 3, 39, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 7, 40, 429, 10, 40, 12, 40, 14, 40, 432, 11, 40, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 5, 41, 439, 10, 41, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 43, 3, 43, 3, 43, 3, 43, 3, 44, 3, 44, 3, 45, 3, 45, 3, 45, 3, 45, 5, 45, 457, 10, 45, 3, 46, 3, 46, 3, 46, 3, 47, 3, 47, 3, 47, 3, 47, 7, 47, 466, 10, 47, 12, 47, 14, 47, 469, 11, 47, 3, 47, 3, 47, 3, 48, 3, 48, 3, 48, 3, 48, 3, 49, 3, 49, 3, 49, 3, 50, 3, 50, 5, 50, 482, 10, 50, 3, 51, 3, 51, 3, 51, 5, 51, 487, 10, 51, 3, 51, 3, 51, 3, 51, 3, 52, 3, 52, 3, 52, 3, 52, 7, 52, 496, 10, 52, 12, 52, 14, 52, 499, 11, 52, 3, 52, 3, 52, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 5, 53, 510, 10, 53, 3, 54, 3, 54, 3, 54, 3, 54, 3, 55, 3, 55, 3, 55, 7, 55, 519, 10, 55, 12, 55, 14, 55, 522, 11, 55, 3, 56, 3, 56, 3, 56, 7, 56, 527, 10, 56, 12, 56, 14, 56, 530, 11, 56, 3, 57, 3, 57, 3, 57, 5, 57, 535, 10, 57, 3, 57, 3, 57, 3, 57, 3, 57, 3, 57, 3, 58, 3, 58, 3, 59, 3, 59, 3, 59, 3, 59, 3, 59, 5, 59, 549, 10, 59, 3, 60, 3, 60, 5, 60, 553, 10, 60, 3, 61, 3, 61, 3, 61, 3, 61, 5, 61, 559, 10, 61, 3, 62, 3, 62, 3, 62, 3, 62, 3, 63, 3, 63, 3, 63, 5, 63, 568, 10, 63, 3, 63, 3, 63, 3, 63, 3, 63, 7, 63, 574, 10, 63, 12, 63, 14, 63, 577, 11, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 7, 63, 585, 10, 63, 12, 63, 14, 63, 588, 11, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 7, 63, 595, 10, 63, 12, 63, 14, 63, 598, 11, 63, 3, 64, 3, 64, 3, 64, 3, 64, 5, 64, 604, 10, 64, 3, 65, 3, 65, 3, 66, 3, 66, 3, 66, 3, 66, 5, 66, 612, 10, 66, 3, 67, 3, 67, 3, 68, 3, 68, 3, 68, 3, 68, 5, 68, 620, 10, 68, 3, 69, 3, 69, 3, 70, 5, 70, 625, 10, 70, 3, 70, 3, 70, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 5, 71, 640, 10, 71, 3, 72, 3, 72, 3, 72, 3, 72, 5, 72, 646, 10, 72, 3, 73, 3, 73, 3, 73, 3, 73, 3, 73, 3, 74, 3, 74, 3, 74, 7, 74, 656, 10, 74, 12, 74, 14, 74, 659, 11, 74, 3, 75, 3, 75, 3, 75, 3, 75, 3, 75, 3, 75, 3, 75, 3, 75, 5, 75, 669, 10, 75, 3, 76, 3, 76, 3, 76, 7, 76, 674, 10, 76, 12, 76, 14, 76, 677, 11, 76, 3, 76, 5, 76, 680, 10, 76, 3, 77, 3, 77, 3, 77, 5, 77, 685, 10, 77, 3, 78, 3, 78, 3, 78, 3, 78, 3, 78, 5, 78, 692, 10, 78, 3, 79, 3, 79, 7, 79, 696, 10, 79, 12, 79, 14, 79, 699, 11, 79, 3, 80, 3, 80, 3, 80, 3, 81, 3, 81, 3, 81, 3, 82, 3, 82, 3, 83, 3, 83, 3, 84, 3, 84, 3, 84, 3, 84, 5, 84, 715, 10, 84, 3, 85, 3, 85, 3, 85, 3, 85, 3, 86, 3, 86, 3, 86, 7, 86, 724, 10, 86, 12, 86, 14, 86, 727, 11, 86, 3, 87, 3, 87, 5, 87, 731, 10, 87, 3, 88, 3, 88, 3, 88, 3, 88, 3, 88, 3, 88, 5, 88, 739, 10, 88, 3, 89, 3, 89, 3, 89, 3, 89, 3, 89, 3, 89, 7, 89, 747, 10, 89, 12, 89, 14, 89, 750, 11, 89, 3, 89, 3, 89, 3, 89, 5, 89, 755, 10, 89, 3, 89, 3, 89, 3, 90, 3, 90, 3, 90, 3, 90, 3, 91, 3, 91, 3, 91, 5, 91, 766, 10, 91, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 93, 3, 93, 3, 93, 3, 93, 3, 93, 3, 94, 3, 94, 3, 94, 3, 94, 3, 94, 3, 94, 3, 94, 3, 95, 3, 95, 3, 95, 3, 95, 3, 96, 3, 96, 3, 97, 3, 97, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 99, 3, 99, 3, 99, 7, 99, 801, 10, 99, 12, 99, 14, 99, 804, 11, 99, 3, 99, 2, 2, 2, 100, 2, 2, 4, 2, 6, 2, 8, 2, 10, 2, 12, 2, 14, 2, 16, 2, 18, 2, 20, 2, 22, 2, 24, 2, 26, 2, 28, 2, 30, 2, 32, 2, 34, 2, 36, 2, 38, 2, 40, 2, 42, 2, 44, 2, 46, 2, 48, 2, 50, 2, 52, 2, 54, 2, 56, 2, 58, 2, 60, 2, 62, 2, 64, 2, 66, 2, 68, 2, 70, 2, 72, 2, 74, 2, 76, 2, 78, 2, 80, 2, 82, 2, 84, 2, 86, 2, 88, 2, 90, 2, 92, 2, 94, 2, 96, 2, 98, 2, 100, 2, 102, 2, 104, 2, 106, 2, 108, 2, 110, 2, 112, 2, 114, 2, 116, 2, 118, 2, 120, 2, 122, 2, 124, 2, 126, 2, 128, 2, 130, 2, 132, 2, 134, 2, 136, 2, 138, 2, 140, 2, 142, 2, 144, 2, 146, 2, 148, 2, 150, 2, 152, 2, 154, 2, 156, 2, 158, 2, 160, 2, 162, 2, 164, 2, 166, 2, 168, 2, 170, 2, 172, 2, 174, 2, 176, 2, 178, 2, 180, 2, 182, 2, 184, 2, 186, 2, 188, 2, 190, 2, 192, 2, 194, 2, 196, 2, 2, 9, 3, 2, 43, 44, 3, 2, 74, 75, 7, 2, 6, 6, 8, 8, 22, 22, 32, 32, 72, 72, 4, 2, 21, 21, 51, 56, 4, 2, 28, 28, 43, 44, 6, 2, 3, 3, 11, 11, 24, 24, 45, 46, 4, 2, 13, 13, 37, 37, 2, 803, 2, 198, 3, 2, 2, 2, 4, 200, 3, 2, 2, 2, 6, 222, 3, 2, 2, 2, 8, 224, 3, 2, 2, 2, 10, 235, 3, 2, 2, 2, 12, 240, 3, 2, 2, 2, 14, 244, 3, 2, 2, 2, 16, 255, 3, 2, 2, 2, 18, 257, 3, 2, 2, 2, 20, 265, 3, 2, 2, 2, 22, 269, 3, 2, 2, 2, 24, 284, 3, 2, 2, 2, 26, 288, 3, 2, 2, 2, 28, 290, 3, 2, 2, 2, 30, 292, 3, 2, 2, 2, 32, 294, 3, 2, 2, 2, 34, 296, 3, 2, 2, 2, 36, 298, 3, 2, 2, 2, 38, 300, 3, 2, 2, 2, 40, 308, 3, 2, 2, 2, 42, 315, 3, 2, 2, 2, 44, 322, 3, 2, 2, 2, 46, 329, 3, 2, 2, 2, 48, 335, 3, 2, 2, 2, 50, 337, 3, 2, 2, 2, 52, 341, 3, 2, 2, 2, 54, 347, 3, 2, 2, 2, 56, 352, 3, 2, 2, 2, 58, 358, 3, 2, 2, 2, 60, 360, 3, 2, 2, 2, 62, 382, 3, 2, 2, 2, 64, 384, 3, 2, 2, 2, 66, 392, 3, 2, 2, 2, 68, 394, 3, 2, 2, 2, 70, 396, 3, 2, 2, 2, 72, 408, 3, 2, 2, 2, 74, 410, 3, 2, 2, 2, 76, 418, 3, 2, 2, 2, 78, 422, 3, 2, 2, 2, 80, 438, 3, 2, 2, 2, 82, 440, 3, 2, 2, 2, 84, 446, 3, 2, 2, 2, 86, 450, 3, 2, 2, 2, 88, 456, 3, 2, 2, 2, 90, 458, 3, 2, 2, 2, 92, 461, 3, 2, 2, 2, 94, 472, 3, 2, 2, 2, 96, 476, 3, 2, 2, 2, 98, 481, 3, 2, 2, 2, 100, 483, 3, 2, 2, 2, 102, 491, 3, 2, 2, 2, 104, 509, 3, 2, 2, 2, 106, 511, 3, 2, 2, 2, 108, 515, 3, 2, 2, 2, 110, 523, 3, 2, 2, 2, 112, 531, 3, 2, 2, 2, 114, 541, 3, 2, 2, 2, 116, 548, 3, 2, 2, 2, 118, 552, 3, 2, 2, 2, 120, 558, 3, 2, 2, 2, 122, 560, 3, 2, 2, 2, 124, 567, 3, 2, 2, 2, 126, 599, 3, 2, 2, 2, 128, 605, 3, 2, 2, 2, 130, 607, 3, 2, 2, 2, 132, 613, 3, 2, 2, 2, 134, 615, 3, 2, 2, 2, 136, 621, 3, 2, 2, 2, 138, 624, 3, 2, 2, 2, 140, 639, 3, 2, 2, 2, 142, 645, 3, 2, 2, 2, 144, 647, 3, 2, 2, 2, 146, 652, 3, 2, 2, 2, 148, 668, 3, 2, 2, 2, 150, 679, 3, 2, 2, 2, 152, 681, 3, 2, 2, 2, 154, 686, 3, 2, 2, 2, 156, 693, 3, 2, 2, 2, 158, 700, 3, 2, 2, 2, 160, 703, 3, 2, 2, 2, 162, 706, 3, 2, 2, 2, 164, 708, 3, 2, 2, 2, 166, 714, 3, 2, 2, 2, 168, 716, 3, 2, 2, 2, 170, 720, 3, 2, 2, 2, 172, 730, 3, 2, 2, 2, 174, 732, 3, 2, 2, 2, 176, 740, 3, 2, 2, 2, 178, 758, 3, 2, 2, 2, 180, 765, 3, 2, 2, 2, 182, 767, 3, 2, 2, 2, 184, 772, 3, 2, 2, 2, 186, 777, 3, 2, 2, 2, 188, 784, 3, 2, 2, 2, 190, 788, 3, 2, 2, 2, 192, 790, 3, 2, 2, 2, 194, 792, 3, 2, 2, 2, 196, 797, 3, 2, 2, 2, 198, 199, 5, 4, 3, 2, 199, 3, 3, 2, 2, 2, 200, 202, 5, 6, 4, 2, 201, 203, 7, 70, 2, 2, 202, 201, 3, 2, 2, 2, 202, 203, 3, 2, 2, 2, 203, 204, 3, 2, 2, 2, 204, 205, 5, 10, 6, 2, 205, 206, 7, 65, 2, 2, 206, 207, 7, 2, 2, 3, 207, 5, 3, 2, 2, 2, 208, 209, 7, 31, 2, 2, 209, 214, 5, 8, 5, 2, 210, 211, 7, 57, 2, 2, 211, 212, 5, 108, 55, 2, 212, 213, 7, 58, 2, 2, 213, 215, 3, 2, 2, 2, 214, 210, 3, 2, 2, 2, 214, 215, 3, 2, 2, 2, 215, 216, 3, 2, 2, 2, 216, 217, 7, 49, 2, 2, 217, 223, 3, 2, 2, 2, 218, 219, 7, 69, 2, 2, 219, 220, 5, 8, 5, 2, 220, 221, 7, 49, 2, 2, 221, 223, 3, 2, 2, 2, 222, 208, 3, 2, 2, 2, 222, 218, 3, 2, 2, 2, 223, 7, 3, 2, 2, 2, 224, 225, 7, 79, 2, 2, 225, 9, 3, 2, 2, 2, 226, 234, 5, 14, 8, 2, 227, 234, 5, 18, 10, 2, 228, 234, 5, 38, 20, 2, 229, 234, 5, 92, 47, 2, 230, 234, 5, 96, 49, 2, 231, 234, 5, 12, 7, 2, 232, 234, 7, 73, 2, 2, 233, 226, 3, 2, 2, 2, 233, 227, 3, 2, 2, 2, 233, 228, 3, 2, 2, 2, 233, 229, 3, 2, 2, 2, 233, 230, 3, 2, 2, 2, 233, 231, 3, 2, 2, 2, 233, 232, 3, 2, 2, 2, 234, 237, 3, 2, 2, 2, 235, 233, 3, 2, 2, 2, 235, 236, 3, 2, 2, 2, 236, 238, 3, 2, 2, 2, 237, 235, 3, 2, 2, 2, 238, 239, 5, 168, 85, 2, 239, 11, 3, 2, 2, 2, 240, 241, 7, 71, 2, 2, 241, 242, 5, 108, 55, 2, 242, 243, 7, 49, 2, 2, 243, 13, 3, 2, 2, 2, 244, 245, 7, 23, 2, 2, 245, 250, 5, 16, 9, 2, 246, 247, 7, 48, 2, 2, 247, 249, 5, 16, 9, 2, 248, 246, 3, 2, 2, 2, 249, 252, 3, 2, 2, 2, 250, 248, 3, 2, 2, 2, 250, 251, 3, 2, 2, 2, 251, 253, 3, 2, 2, 2, 252, 250, 3, 2, 2, 2, 253, 254, 7, 49, 2, 2, 254, 15, 3, 2, 2, 2, 255, 256, 5, 28, 15, 2, 256, 17, 3, 2, 2, 2, 257, 261, 7, 10, 2, 2, 258, 259, 5, 20, 11, 2, 259, 260, 7, 49, 2, 2, 260, 262, 3, 2, 2, 2, 261, 258, 3, 2, 2, 2, 262, 263, 3, 2, 2, 2, 263, 261, 3, 2, 2, 2, 263, 264, 3, 2, 2, 2, 264, 19, 3, 2, 2, 2, 265, 266, 5, 8, 5, 2, 266, 267, 7, 51, 2, 2, 267, 268, 5, 24, 13, 2, 268, 21, 3, 2, 2, 2, 269, 270, 7, 9, 2, 2, 270, 271, 7, 57, 2, 2, 271, 272, 5, 28, 15, 2, 272, 273, 7, 58, 2, 2, 273, 23, 3, 2, 2, 2, 274, 285, 5, 26, 14, 2, 275, 276, 5, 32, 17, 2, 276, 277, 5, 26, 14, 2, 277, 285, 3, 2, 2, 2, 278, 285, 5, 8, 5, 2, 279, 280, 5, 32, 17, 2, 280, 281, 5, 8, 5, 2, 281, 285, 3, 2, 2, 2, 282, 285, 5, 36, 19, 2, 283, 285, 5, 22, 12, 2, 284, 274, 3, 2, 2, 2, 284, 275, 3, 2, 2, 2, 284, 278, 3, 2, 2, 2, 284, 279, 3, 2, 2, 2, 284, 282, 3, 2, 2, 2, 284, 283, 3, 2, 2, 2, 285, 25, 3, 2, 2, 2, 286, 289, 5, 28, 15, 2, 287, 289, 5, 30, 16, 2, 288, 286, 3, 2, 2, 2, 288, 287, 3, 2, 2, 2, 289, 27, 3, 2, 2, 2, 290, 291, 7, 81, 2, 2, 291, 29, 3, 2, 2, 2, 292, 293, 7, 82, 2, 2, 293, 31, 3, 2, 2, 2, 294, 295, 9, 2, 2, 2, 295, 33, 3, 2, 2, 2, 296, 297, 9, 3, 2, 2, 297, 35, 3, 2, 2, 2, 298, 299, 7, 80, 2, 2, 299, 37, 3, 2, 2, 2, 300, 304, 7, 38, 2, 2, 301, 302, 5, 40, 21, 2, 302, 303, 7, 49, 2, 2, 303, 305, 3, 2, 2, 2, 304, 301, 3, 2, 2, 2, 305, 306, 3, 2, 2, 2, 306, 304, 3, 2, 2, 2, 306, 307, 3, 2, 2, 2, 307, 39, 3, 2, 2, 2, 308, 309, 5, 8, 5, 2, 309, 313, 7, 51, 2, 2, 310, 314, 5, 46, 24, 2, 311, 314, 5, 42, 22, 2, 312, 314, 5, 44, 23, 2, 313, 310, 3, 2, 2, 2, 313, 311, 3, 2, 2, 2, 313, 312, 3, 2, 2, 2, 314, 41, 3, 2, 2, 2, 315, 317, 7, 18, 2, 2, 316, 318, 5, 102, 52, 2, 317, 316, 3, 2, 2, 2, 317, 318, 3, 2, 2, 2, 318, 319, 3, 2, 2, 2, 319, 320, 7, 50, 2, 2, 320, 321, 5, 114, 58, 2, 321, 43, 3, 2, 2, 2, 322, 324, 7, 30, 2, 2, 323, 325, 5, 102, 52, 2, 324, 323, 3, 2, 2, 2, 324, 325, 3, 2, 2, 2, 325, 45, 3, 2, 2, 2, 326, 330, 5, 48, 25, 2, 327, 330, 5, 56, 29, 2, 328, 330, 5, 90, 46, 2, 329, 326, 3, 2, 2, 2, 329, 327, 3, 2, 2, 2, 329, 328, 3, 2, 2, 2, 330, 47, 3, 2, 2, 2, 331, 336, 5, 50, 26, 2, 332, 336, 5, 52, 27, 2, 333, 336, 5, 54, 28, 2, 334, 336, 5, 60, 31, 2, 335, 331, 3, 2, 2, 2, 335, 332, 3, 2, 2, 2, 335, 333, 3, 2, 2, 2, 335, 334, 3, 2, 2, 2, 336, 49, 3, 2, 2, 2, 337, 338, 7, 57, 2, 2, 338, 339, 5, 108, 55, 2, 339, 340, 7, 58, 2, 2, 340, 51, 3, 2, 2, 2, 341, 342, 5, 24, 13, 2, 342, 343, 7, 66, 2, 2, 343, 344, 5, 24, 13, 2, 344, 53, 3, 2, 2, 2, 345, 348, 5, 8, 5, 2, 346, 348, 9, 4, 2, 2, 347, 345, 3, 2, 2, 2, 347, 346, 3, 2, 2, 2, 348, 55, 3, 2, 2, 2, 349, 350, 7, 29, 2, 2, 350, 353, 5, 58, 30, 2, 351, 353, 5, 58, 30, 2, 352, 349, 3, 2, 2, 2, 352, 351, 3, 2, 2, 2, 353, 57, 3, 2, 2, 2, 354, 359, 5, 62, 32, 2, 355, 359, 5, 70, 36, 2, 356, 359, 5, 84, 43, 2, 357, 359, 5, 88, 45, 2, 358, 354, 3, 2, 2, 2, 358, 355, 3, 2, 2, 2, 358, 356, 3, 2, 2, 2, 358, 357, 3, 2, 2, 2, 359, 59, 3, 2, 2, 2, 360, 361, 7, 72, 2, 2, 361, 364, 7, 59, 2, 2, 362, 365, 5, 8, 5, 2, 363, 365, 5, 26, 14, 2, 364, 362, 3, 2, 2, 2, 364, 363, 3, 2, 2, 2, 365, 366, 3, 2, 2, 2, 366, 367, 7, 61, 2, 2, 367, 61, 3, 2, 2, 2, 368, 369, 7, 4, 2, 2, 369, 370, 7, 59, 2, 2, 370, 371, 5, 64, 33, 2, 371, 372, 7, 61, 2, 2, 372, 373, 7, 27, 2, 2, 373, 374, 5, 68, 35, 2, 374, 383, 3, 2, 2, 2, 375, 376, 7, 4, 2, 2, 376, 377, 7, 60, 2, 2, 377, 378, 5, 64, 33, 2, 378, 379, 7, 62, 2, 2, 379, 380, 7, 27, 2, 2, 380, 381, 5, 68, 35, 2, 381, 383, 3, 2, 2, 2, 382, 368, 3, 2, 2, 2, 382, 375, 3, 2, 2, 2, 383, 63, 3, 2, 2, 2, 384, 389, 5, 66, 34, 2, 385, 386, 7, 48, 2, 2, 386, 388, 5, 66, 34, 2, 387, 385, 3, 2, 2, 2, 388, 391, 3, 2, 2, 2, 389, 387, 3, 2, 2, 2, 389, 390, 3, 2, 2, 2, 390, 65, 3, 2, 2, 2, 391, 389, 3, 2, 2, 2, 392, 393, 5, 48, 25, 2, 393, 67, 3, 2, 2, 2, 394, 395, 5, 46, 24, 2, 395, 69, 3, 2, 2, 2, 396, 398, 7, 33, 2, 2, 397, 399, 5, 72, 37, 2, 398, 397, 3, 2, 2, 2, 398, 399, 3, 2, 2, 2, 399, 400, 3, 2, 2, 2, 400, 401, 7, 15, 2, 2, 401, 71, 3, 2, 2, 2, 402, 405, 5, 74, 38, 2, 403, 404, 7, 49, 2, 2, 404, 406, 5, 78, 40, 2, 405, 403, 3, 2, 2, 2, 405, 406, 3, 2, 2, 2, 406, 409, 3, 2, 2, 2, 407, 409, 5, 78, 40, 2, 408, 402, 3, 2, 2, 2, 408, 407, 3, 2, 2, 2, 409, 73, 3, 2, 2, 2, 410, 415, 5, 76, 39, 2, 411, 412, 7, 49, 2, 2, 412, 414, 5, 76, 39, 2, 413, 411, 3, 2, 2, 2, 414, 417, 3, 2, 2, 2, 415, 413, 3, 2, 2, 2, 415, 416, 3, 2, 2, 2, 416, 75, 3, 2, 2, 2, 417, 415, 3, 2, 2, 2, 418, 419, 5, 108, 55, 2, 419, 420, 7, 50, 2, 2, 420, 421, 5, 46, 24, 2, 421, 77, 3, 2, 2, 2, 422, 423, 7, 7, 2, 2, 423, 424, 5, 80, 41, 2, 424, 425, 7, 27, 2, 2, 425, 430, 5, 82, 42, 2, 426, 427, 7, 49, 2, 2, 427, 429, 5, 82, 42, 2, 428, 426, 3, 2, 2, 2, 429, 432, 3, 2, 2, 2, 430, 428, 3, 2, 2, 2, 430, 431, 3, 2, 2, 2, 431, 79, 3, 2, 2, 2, 432, 430, 3, 2, 2, 2, 433, 434, 5, 8, 5, 2, 434, 435, 7, 50, 2, 2, 435, 436, 5, 54, 28, 2, 436, 439, 3, 2, 2, 2, 437, 439, 5, 54, 28, 2, 438, 433, 3, 2, 2, 2, 438, 437, 3, 2, 2, 2, 439, 81, 3, 2, 2, 2, 440, 441, 5, 110, 56, 2, 441, 442, 7, 50, 2, 2, 442, 443, 7, 57, 2, 2, 443, 444, 5, 72, 37, 2, 444, 445, 7, 58, 2, 2, 445, 83, 3, 2, 2, 2, 446, 447, 7, 35, 2, 2, 447, 448, 7, 27, 2, 2, 448, 449, 5, 86, 44, 2, 449, 85, 3, 2, 2, 2, 450, 451, 5, 48, 25, 2, 451, 87, 3, 2, 2, 2, 452, 453, 7, 16, 2, 2, 453, 454, 7, 27, 2, 2, 454, 457, 5, 46, 24, 2, 455, 457, 7, 16, 2, 2, 456, 452, 3, 2, 2, 2, 456, 455, 3, 2, 2, 2, 457, 89, 3, 2, 2, 2, 458, 459, 7, 63, 2, 2, 459, 460, 5, 54, 28, 2, 460, 91, 3, 2, 2, 2, 461, 462, 7, 40, 2, 2, 462, 467, 5, 94, 48, 2, 463, 464, 7, 49, 2, 2, 464, 466, 5, 94, 48, 2, 465, 463, 3, 2, 2, 2, 466, 469, 3, 2, 2, 2, 467, 465, 3, 2, 2, 2, 467, 468, 3, 2, 2, 2, 468, 470, 3, 2, 2, 2, 469, 467, 3, 2, 2, 2, 470, 471, 7, 49, 2, 2, 471, 93, 3, 2, 2, 2, 472, 473, 5, 108, 55, 2, 473, 474, 7, 50, 2, 2, 474, 475, 5, 46, 24, 2, 475, 95, 3, 2, 2, 2, 476, 477, 5, 98, 50, 2, 477, 478, 7, 49, 2, 2, 478, 97, 3, 2, 2, 2, 479, 482, 5, 100, 51, 2, 480, 482, 5, 112, 57, 2, 481, 479, 3, 2, 2, 2, 481, 480, 3, 2, 2, 2, 482, 99, 3, 2, 2, 2, 483, 484, 7, 30, 2, 2, 484, 486, 5, 8, 5, 2, 485, 487, 5, 102, 52, 2, 486, 485, 3, 2, 2, 2, 486, 487, 3, 2, 2, 2, 487, 488, 3, 2, 2, 2, 488, 489, 7, 49, 2, 2, 489, 490, 5, 10, 6, 2, 490, 101, 3, 2, 2, 2, 491, 492, 7, 57, 2, 2, 492, 497, 5, 104, 53, 2, 493, 494, 7, 49, 2, 2, 494, 496, 5, 104, 53, 2, 495, 493, 3, 2, 2, 2, 496, 499, 3, 2, 2, 2, 497, 495, 3, 2, 2, 2, 497, 498, 3, 2, 2, 2, 498, 500, 3, 2, 2, 2, 499, 497, 3, 2, 2, 2, 500, 501, 7, 58, 2, 2, 501, 103, 3, 2, 2, 2, 502, 510, 5, 106, 54, 2, 503, 504, 7, 40, 2, 2, 504, 510, 5, 106, 54, 2, 505, 506, 7, 18, 2, 2, 506, 510, 5, 106, 54, 2, 507, 508, 7, 30, 2, 2, 508, 510, 5, 106, 54, 2, 509, 502, 3, 2, 2, 2, 509, 503, 3, 2, 2, 2, 509, 505, 3, 2, 2, 2, 509, 507, 3, 2, 2, 2, 510, 105, 3, 2, 2, 2, 511, 512, 5, 108, 55, 2, 512, 513, 7, 50, 2, 2, 513, 514, 5, 54, 28, 2, 514, 107, 3, 2, 2, 2, 515, 520, 5, 8, 5, 2, 516, 517, 7, 48, 2, 2, 517, 519, 5, 8, 5, 2, 518, 516, 3, 2, 2, 2, 519, 522, 3, 2, 2, 2, 520, 518, 3, 2, 2, 2, 520, 521, 3, 2, 2, 2, 521, 109, 3, 2, 2, 2, 522, 520, 3, 2, 2, 2, 523, 528, 5, 24, 13, 2, 524, 525, 7, 48, 2, 2, 525, 527, 5, 24, 13, 2, 526, 524, 3, 2, 2, 2, 527, 530, 3, 2, 2, 2, 528, 526, 3, 2, 2, 2, 528, 529, 3, 2, 2, 2, 529, 111, 3, 2, 2, 2, 530, 528, 3, 2, 2, 2, 531, 532, 7, 18, 2, 2, 532, 534, 5, 8, 5, 2, 533, 535, 5, 102, 52, 2, 534, 533, 3, 2, 2, 2, 534, 535, 3, 2, 2, 2, 535, 536, 3, 2, 2, 2, 536, 537, 7, 50, 2, 2, 537, 538, 5, 114, 58, 2, 538, 539, 7, 49, 2, 2, 539, 540, 5, 10, 6, 2, 540, 113, 3, 2, 2, 2, 541, 542, 5, 54, 28, 2, 542, 115, 3, 2, 2, 2, 543, 544, 5, 16, 9, 2, 544, 545, 7, 50, 2, 2, 545, 546, 5, 118, 60, 2, 546, 549, 3, 2, 2, 2, 547, 549, 5, 118, 60, 2, 548, 543, 3, 2, 2, 2, 548, 547, 3, 2, 2, 2, 549, 117, 3, 2, 2, 2, 550, 553, 5, 120, 61, 2, 551, 553, 5, 166, 84, 2, 552, 550, 3, 2, 2, 2, 552, 551, 3, 2, 2, 2, 553, 119, 3, 2, 2, 2, 554, 559, 5, 122, 62, 2, 555, 559, 5, 154, 78, 2, 556, 559, 5, 160, 81, 2, 557, 559, 5, 162, 82, 2, 558, 554, 3, 2, 2, 2, 558, 555, 3, 2, 2, 2, 558, 556, 3, 2, 2, 2, 558, 557, 3, 2, 2, 2, 559, 121, 3, 2, 2, 2, 560, 561, 5, 124, 63, 2, 561, 562, 7, 47, 2, 2, 562, 563, 5, 126, 64, 2, 563, 123, 3, 2, 2, 2, 564, 565, 7, 64, 2, 2, 565, 568, 5, 8, 5, 2, 566, 568, 5, 8, 5, 2, 567, 564, 3, 2, 2, 2, 567, 566, 3, 2, 2, 2, 568, 596, 3, 2, 2, 2, 569, 570, 7, 59, 2, 2, 570, 575, 5, 126, 64, 2, 571, 572, 7, 48, 2, 2, 572, 574, 5, 126, 64, 2, 573, 571, 3, 2, 2, 2, 574, 577, 3, 2, 2, 2, 575, 573, 3, 2, 2, 2, 575, 576, 3, 2, 2, 2, 576, 578, 3, 2, 2, 2, 577, 575, 3, 2, 2, 2, 578, 579, 7, 61, 2, 2, 579, 595, 3, 2, 2, 2, 580, 581, 7, 60, 2, 2, 581, 586, 5, 126, 64, 2, 582, 583, 7, 48, 2, 2, 583, 585, 5, 126, 64, 2, 584, 582, 3, 2, 2, 2, 585, 588, 3, 2, 2, 2, 586, 584, 3, 2, 2, 2, 586, 587, 3, 2, 2, 2, 587, 589, 3, 2, 2, 2, 588, 586, 3, 2, 2, 2, 589, 590, 7, 62, 2, 2, 590, 595, 3, 2, 2, 2, 591, 592, 7, 65, 2, 2, 592, 595, 5, 8, 5, 2, 593, 595, 7, 63, 2, 2, 594, 569, 3, 2, 2, 2, 594, 580, 3, 2, 2, 2, 594, 591, 3, 2, 2, 2, 594, 593, 3, 2, 2, 2, 595, 598, 3, 2, 2, 2, 596, 594, 3, 2, 2, 2, 596, 597, 3, 2, 2, 2, 597, 125, 3, 2, 2, 2, 598, 596, 3, 2, 2, 2, 599, 603, 5, 130, 66, 2, 600, 601, 5, 128, 65, 2, 601, 602, 5, 126, 64, 2, 602, 604, 3, 2, 2, 2, 603, 600, 3, 2, 2, 2, 603, 604, 3, 2, 2, 2, 604, 127, 3, 2, 2, 2, 605, 606, 9, 5, 2, 2, 606, 129, 3, 2, 2, 2, 607, 611, 5, 134, 68, 2, 608, 609, 5, 132, 67, 2, 609, 610, 5, 130, 66, 2, 610, 612, 3, 2, 2, 2, 611, 608, 3, 2, 2, 2, 611, 612, 3, 2, 2, 2, 612, 131, 3, 2, 2, 2, 613, 614, 9, 6, 2, 2, 614, 133, 3, 2, 2, 2, 615, 619, 5, 138, 70, 2, 616, 617, 5, 136, 69, 2, 617, 618, 5, 134, 68, 2, 618, 620, 3, 2, 2, 2, 619, 616, 3, 2, 2, 2, 619, 620, 3, 2, 2, 2, 620, 135, 3, 2, 2, 2, 621, 622, 9, 7, 2, 2, 622, 137, 3, 2, 2, 2, 623, 625, 9, 2, 2, 2, 624, 623, 3, 2, 2, 2, 624, 625, 3, 2, 2, 2, 625, 626, 3, 2, 2, 2, 626, 627, 5, 140, 71, 2, 627, 139, 3, 2, 2, 2, 628, 640, 5, 124, 63, 2, 629, 630, 7, 57, 2, 2, 630, 631, 5, 126, 64, 2, 631, 632, 7, 58, 2, 2, 632, 640, 3, 2, 2, 2, 633, 640, 5, 144, 73, 2, 634, 640, 5, 142, 72, 2, 635, 640, 5, 148, 75, 2, 636, 637, 7, 26, 2, 2, 637, 640, 5, 140, 71, 2, 638, 640, 5, 34, 18, 2, 639, 628, 3, 2, 2, 2, 639, 629, 3, 2, 2, 2, 639, 633, 3, 2, 2, 2, 639, 634, 3, 2, 2, 2, 639, 635, 3, 2, 2, 2, 639, 636, 3, 2, 2, 2, 639, 638, 3, 2, 2, 2, 640, 141, 3, 2, 2, 2, 641, 646, 5, 26, 14, 2, 642, 646, 5, 22, 12, 2, 643, 646, 5, 36, 19, 2, 644, 646, 7, 25, 2, 2, 645, 641, 3, 2, 2, 2, 645, 642, 3, 2, 2, 2, 645, 643, 3, 2, 2, 2, 645, 644, 3, 2, 2, 2, 646, 143, 3, 2, 2, 2, 647, 648, 5, 8, 5, 2, 648, 649, 7, 57, 2, 2, 649, 650, 5, 146, 74, 2, 650, 651, 7, 58, 2, 2, 651, 145, 3, 2, 2, 2, 652, 657, 5, 156, 79, 2, 653, 654, 7, 48, 2, 2, 654, 656, 5, 156, 79, 2, 655, 653, 3, 2, 2, 2, 656, 659, 3, 2, 2, 2, 657, 655, 3, 2, 2, 2, 657, 658, 3, 2, 2, 2, 658, 147, 3, 2, 2, 2, 659, 657, 3, 2, 2, 2, 660, 661, 7, 59, 2, 2, 661, 662, 5, 150, 76, 2, 662, 663, 7, 61, 2, 2, 663, 669, 3, 2, 2, 2, 664, 665, 7, 60, 2, 2, 665, 666, 5, 150, 76, 2, 666, 667, 7, 62, 2, 2, 667, 669, 3, 2, 2, 2, 668, 660, 3, 2, 2, 2, 668, 664, 3, 2, 2, 2, 669, 149, 3, 2, 2, 2, 670, 675, 5, 152, 77, 2, 671, 672, 7, 48, 2, 2, 672, 674, 5, 152, 77, 2, 673, 671, 3, 2, 2, 2, 674, 677, 3, 2, 2, 2, 675, 673, 3, 2, 2, 2, 675, 676, 3, 2, 2, 2, 676, 680, 3, 2, 2, 2, 677, 675, 3, 2, 2, 2, 678, 680, 3, 2, 2, 2, 679, 670, 3, 2, 2, 2, 679, 678, 3, 2, 2, 2, 680, 151, 3, 2, 2, 2, 681, 684, 5, 126, 64, 2, 682, 683, 7, 66, 2, 2, 683, 685, 5, 126, 64, 2, 684, 682, 3, 2, 2, 2, 684, 685, 3, 2, 2, 2, 685, 153, 3, 2, 2, 2, 686, 691, 5, 8, 5, 2, 687, 688, 7, 57, 2, 2, 688, 689, 5, 146, 74, 2, 689, 690, 7, 58, 2, 2, 690, 692, 3, 2, 2, 2, 691, 687, 3, 2, 2, 2, 691, 692, 3, 2, 2, 2, 692, 155, 3, 2, 2, 2, 693, 697, 5, 126, 64, 2, 694, 696, 5, 158, 80, 2, 695, 694, 3, 2, 2, 2, 696, 699, 3, 2, 2, 2, 697, 695, 3, 2, 2, 2, 697, 698, 3, 2, 2, 2, 698, 157, 3, 2, 2, 2, 699, 697, 3, 2, 2, 2, 700, 701, 7, 50, 2, 2, 701, 702, 5, 126, 64, 2, 702, 159, 3, 2, 2, 2, 703, 704, 7, 19, 2, 2, 704, 705, 5, 16, 9, 2, 705, 161, 3, 2, 2, 2, 706, 707, 3, 2, 2, 2, 707, 163, 3, 2, 2, 2, 708, 709, 3, 2, 2, 2, 709, 165, 3, 2, 2, 2, 710, 715, 5, 168, 85, 2, 711, 715, 5, 172, 87, 2, 712, 715, 5, 180, 91, 2, 713, 715, 5, 194, 98, 2, 714, 710, 3, 2, 2, 2, 714, 711, 3, 2, 2, 2, 714, 712, 3, 2, 2, 2, 714, 713, 3, 2, 2, 2, 715, 167, 3, 2, 2, 2, 716, 717, 7, 5, 2, 2, 717, 718, 5, 170, 86, 2, 718, 719, 7, 15, 2, 2, 719, 169, 3, 2, 2, 2, 720, 725, 5, 116, 59, 2, 721, 722, 7, 49, 2, 2, 722, 724, 5, 116, 59, 2, 723, 721, 3, 2, 2, 2, 724, 727, 3, 2, 2, 2, 725, 723, 3, 2, 2, 2, 725, 726, 3, 2, 2, 2, 726, 171, 3, 2, 2, 2, 727, 725, 3, 2, 2, 2, 728, 731, 5, 174, 88, 2, 729, 731, 5, 176, 89, 2, 730, 728, 3, 2, 2, 2, 730, 729, 3, 2, 2, 2, 731, 173, 3, 2, 2, 2, 732, 733, 7, 20, 2, 2, 733, 734, 5, 126, 64, 2, 734, 735, 7, 36, 2, 2, 735, 738, 5, 116, 59, 2, 736, 737, 7, 14, 2, 2, 737, 739, 5, 116, 59, 2, 738, 736, 3, 2, 2, 2, 738, 739, 3, 2, 2, 2, 739, 175, 3, 2, 2, 2, 740, 741, 7, 7, 2, 2, 741, 742, 5, 126, 64, 2, 742, 743, 7, 27, 2, 2, 743, 748, 5, 178, 90, 2, 744, 745, 7, 49, 2, 2, 745, 747, 5, 178, 90, 2, 746, 744, 3, 2, 2, 2, 747, 750, 3, 2, 2, 2, 748, 746, 3, 2, 2, 2, 748, 749, 3, 2, 2, 2, 749, 754, 3, 2, 2, 2, 750, 748, 3, 2, 2, 2, 751, 752, 7, 49, 2, 2, 752, 753, 7, 14, 2, 2, 753, 755, 5, 170, 86, 2, 754, 751, 3, 2, 2, 2, 754, 755, 3, 2, 2, 2, 755, 756, 3, 2, 2, 2, 756, 757, 7, 15, 2, 2, 757, 177, 3, 2, 2, 2, 758, 759, 5, 110, 56, 2, 759, 760, 7, 50, 2, 2, 760, 761, 5, 116, 59, 2, 761, 179, 3, 2, 2, 2, 762, 766, 5, 182, 92, 2, 763, 766, 5, 184, 93, 2, 764, 766, 5, 186, 94, 2, 765, 762, 3, 2, 2, 2, 765, 763, 3, 2, 2, 2, 765, 764, 3, 2, 2, 2, 766, 181, 3, 2, 2, 2, 767, 768, 7, 41, 2, 2, 768, 769, 5, 126, 64, 2, 769, 770, 7, 12, 2, 2, 770, 771, 5, 116, 59, 2, 771, 183, 3, 2, 2, 2, 772, 773, 7, 34, 2, 2, 773, 774, 5, 170, 86, 2, 774, 775, 7, 39, 2, 2, 775, 776, 5, 126, 64, 2, 776, 185, 3, 2, 2, 2, 777, 778, 7, 17, 2, 2, 778, 779, 5, 8, 5, 2, 779, 780, 7, 47, 2, 2, 780, 781, 5, 188, 95, 2, 781, 782, 7, 12, 2, 2, 782, 783, 5, 116, 59, 2, 783, 187, 3, 2, 2, 2, 784, 785, 5, 190, 96, 2, 785, 786, 9, 8, 2, 2, 786, 787, 5, 192, 97, 2, 787, 189, 3, 2, 2, 2, 788, 789, 5, 126, 64, 2, 789, 191, 3, 2, 2, 2, 790, 791, 5, 126, 64, 2, 791, 193, 3, 2, 2, 2, 792, 793, 7, 42, 2, 2, 793, 794, 5, 196, 99, 2, 794, 795, 7, 12, 2, 2, 795, 796, 5, 116, 59, 2, 796, 195, 3, 2, 2, 2, 797, 802, 5, 124, 63, 2, 798, 799, 7, 48, 2, 2, 799, 801, 5, 124, 63, 2, 800, 798, 3, 2, 2, 2, 801, 804, 3, 2, 2, 2, 802, 800, 3, 2, 2, 2, 802, 803, 3, 2, 2, 2, 803, 197, 3, 2, 2, 2, 804, 802, 3, 2, 2, 2, 67, 202, 214, 222, 233, 235, 250, 263, 284, 288, 306, 313, 317, 324, 329, 335, 347, 352, 358, 364, 382, 389, 398, 405, 408, 415, 430, 438, 456, 467, 481, 486, 497, 509, 520, 528, 534, 548, 552, 558, 567, 575, 586, 594, 596, 603, 611, 619, 624, 639, 645, 657, 668, 675, 679, 684, 691, 697, 714, 725, 730, 738, 748, 754, 765, 802] \ No newline at end of file diff --git a/examples/Example - Pascal Symbol Table/pascal.tokens b/examples/Example - Pascal Symbol Table/pascal.tokens new file mode 100644 index 0000000..a0e3feb --- /dev/null +++ b/examples/Example - Pascal Symbol Table/pascal.tokens @@ -0,0 +1,153 @@ +AND=1 +ARRAY=2 +BEGIN=3 +BOOLEAN=4 +CASE=5 +CHAR=6 +CHR=7 +CONST=8 +DIV=9 +DO=10 +DOWNTO=11 +ELSE=12 +END=13 +FILE=14 +FOR=15 +FUNCTION=16 +GOTO=17 +IF=18 +IN=19 +INTEGER=20 +LABEL=21 +MOD=22 +NIL=23 +NOT=24 +OF=25 +OR=26 +PACKED=27 +PROCEDURE=28 +PROGRAM=29 +REAL=30 +RECORD=31 +REPEAT=32 +SET=33 +THEN=34 +TO=35 +TYPE=36 +UNTIL=37 +VAR=38 +WHILE=39 +WITH=40 +PLUS=41 +MINUS=42 +STAR=43 +SLASH=44 +ASSIGN=45 +COMMA=46 +SEMI=47 +COLON=48 +EQUAL=49 +NOT_EQUAL=50 +LT=51 +LE=52 +GE=53 +GT=54 +LPAREN=55 +RPAREN=56 +LBRACK=57 +LBRACK2=58 +RBRACK=59 +RBRACK2=60 +POINTER=61 +AT=62 +DOT=63 +DOTDOT=64 +LCURLY=65 +RCURLY=66 +UNIT=67 +INTERFACE=68 +USES=69 +STRING=70 +IMPLEMENTATION=71 +TRUE=72 +FALSE=73 +WS=74 +COMMENT_1=75 +COMMENT_2=76 +IDENT=77 +STRING_LITERAL=78 +NUM_INT=79 +NUM_REAL=80 +'AND'=1 +'ARRAY'=2 +'BEGIN'=3 +'BOOLEAN'=4 +'CASE'=5 +'CHAR'=6 +'CHR'=7 +'CONST'=8 +'DIV'=9 +'DO'=10 +'DOWNTO'=11 +'ELSE'=12 +'END'=13 +'FILE'=14 +'FOR'=15 +'FUNCTION'=16 +'GOTO'=17 +'IF'=18 +'IN'=19 +'INTEGER'=20 +'LABEL'=21 +'MOD'=22 +'NIL'=23 +'NOT'=24 +'OF'=25 +'OR'=26 +'PACKED'=27 +'PROCEDURE'=28 +'PROGRAM'=29 +'REAL'=30 +'RECORD'=31 +'REPEAT'=32 +'SET'=33 +'THEN'=34 +'TO'=35 +'TYPE'=36 +'UNTIL'=37 +'VAR'=38 +'WHILE'=39 +'WITH'=40 +'+'=41 +'-'=42 +'*'=43 +'/'=44 +':='=45 +','=46 +';'=47 +':'=48 +'='=49 +'<>'=50 +'<'=51 +'<='=52 +'>='=53 +'>'=54 +'('=55 +')'=56 +'['=57 +'(.'=58 +']'=59 +'.)'=60 +'^'=61 +'@'=62 +'.'=63 +'..'=64 +'{'=65 +'}'=66 +'UNIT'=67 +'INTERFACE'=68 +'USES'=69 +'STRING'=70 +'IMPLEMENTATION'=71 +'TRUE'=72 +'FALSE'=73 diff --git a/examples/Example - Pascal Symbol Table/pascalLexer.interp b/examples/Example - Pascal Symbol Table/pascalLexer.interp new file mode 100644 index 0000000..a2ae813 --- /dev/null +++ b/examples/Example - Pascal Symbol Table/pascalLexer.interp @@ -0,0 +1,258 @@ +token literal names: +null +'AND' +'ARRAY' +'BEGIN' +'BOOLEAN' +'CASE' +'CHAR' +'CHR' +'CONST' +'DIV' +'DO' +'DOWNTO' +'ELSE' +'END' +'FILE' +'FOR' +'FUNCTION' +'GOTO' +'IF' +'IN' +'INTEGER' +'LABEL' +'MOD' +'NIL' +'NOT' +'OF' +'OR' +'PACKED' +'PROCEDURE' +'PROGRAM' +'REAL' +'RECORD' +'REPEAT' +'SET' +'THEN' +'TO' +'TYPE' +'UNTIL' +'VAR' +'WHILE' +'WITH' +'+' +'-' +'*' +'/' +':=' +',' +';' +':' +'=' +'<>' +'<' +'<=' +'>=' +'>' +'(' +')' +'[' +'(.' +']' +'.)' +'^' +'@' +'.' +'..' +'{' +'}' +'UNIT' +'INTERFACE' +'USES' +'STRING' +'IMPLEMENTATION' +'TRUE' +'FALSE' +null +null +null +null +null +null +null + +token symbolic names: +null +AND +ARRAY +BEGIN +BOOLEAN +CASE +CHAR +CHR +CONST +DIV +DO +DOWNTO +ELSE +END +FILE +FOR +FUNCTION +GOTO +IF +IN +INTEGER +LABEL +MOD +NIL +NOT +OF +OR +PACKED +PROCEDURE +PROGRAM +REAL +RECORD +REPEAT +SET +THEN +TO +TYPE +UNTIL +VAR +WHILE +WITH +PLUS +MINUS +STAR +SLASH +ASSIGN +COMMA +SEMI +COLON +EQUAL +NOT_EQUAL +LT +LE +GE +GT +LPAREN +RPAREN +LBRACK +LBRACK2 +RBRACK +RBRACK2 +POINTER +AT +DOT +DOTDOT +LCURLY +RCURLY +UNIT +INTERFACE +USES +STRING +IMPLEMENTATION +TRUE +FALSE +WS +COMMENT_1 +COMMENT_2 +IDENT +STRING_LITERAL +NUM_INT +NUM_REAL + +rule names: +AND +ARRAY +BEGIN +BOOLEAN +CASE +CHAR +CHR +CONST +DIV +DO +DOWNTO +ELSE +END +FILE +FOR +FUNCTION +GOTO +IF +IN +INTEGER +LABEL +MOD +NIL +NOT +OF +OR +PACKED +PROCEDURE +PROGRAM +REAL +RECORD +REPEAT +SET +THEN +TO +TYPE +UNTIL +VAR +WHILE +WITH +PLUS +MINUS +STAR +SLASH +ASSIGN +COMMA +SEMI +COLON +EQUAL +NOT_EQUAL +LT +LE +GE +GT +LPAREN +RPAREN +LBRACK +LBRACK2 +RBRACK +RBRACK2 +POINTER +AT +DOT +DOTDOT +LCURLY +RCURLY +UNIT +INTERFACE +USES +STRING +IMPLEMENTATION +TRUE +FALSE +WS +COMMENT_1 +COMMENT_2 +IDENT +STRING_LITERAL +NUM_INT +NUM_REAL +EXPONENT + +channel names: +DEFAULT_TOKEN_CHANNEL +HIDDEN + +mode names: +DEFAULT_MODE + +atn: +[3, 51485, 51898, 1421, 44986, 20307, 1543, 60043, 49729, 2, 82, 567, 8, 1, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 4, 27, 9, 27, 4, 28, 9, 28, 4, 29, 9, 29, 4, 30, 9, 30, 4, 31, 9, 31, 4, 32, 9, 32, 4, 33, 9, 33, 4, 34, 9, 34, 4, 35, 9, 35, 4, 36, 9, 36, 4, 37, 9, 37, 4, 38, 9, 38, 4, 39, 9, 39, 4, 40, 9, 40, 4, 41, 9, 41, 4, 42, 9, 42, 4, 43, 9, 43, 4, 44, 9, 44, 4, 45, 9, 45, 4, 46, 9, 46, 4, 47, 9, 47, 4, 48, 9, 48, 4, 49, 9, 49, 4, 50, 9, 50, 4, 51, 9, 51, 4, 52, 9, 52, 4, 53, 9, 53, 4, 54, 9, 54, 4, 55, 9, 55, 4, 56, 9, 56, 4, 57, 9, 57, 4, 58, 9, 58, 4, 59, 9, 59, 4, 60, 9, 60, 4, 61, 9, 61, 4, 62, 9, 62, 4, 63, 9, 63, 4, 64, 9, 64, 4, 65, 9, 65, 4, 66, 9, 66, 4, 67, 9, 67, 4, 68, 9, 68, 4, 69, 9, 69, 4, 70, 9, 70, 4, 71, 9, 71, 4, 72, 9, 72, 4, 73, 9, 73, 4, 74, 9, 74, 4, 75, 9, 75, 4, 76, 9, 76, 4, 77, 9, 77, 4, 78, 9, 78, 4, 79, 9, 79, 4, 80, 9, 80, 4, 81, 9, 81, 4, 82, 9, 82, 3, 2, 3, 2, 3, 2, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 8, 3, 8, 3, 8, 3, 8, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 10, 3, 10, 3, 10, 3, 10, 3, 11, 3, 11, 3, 11, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 14, 3, 14, 3, 14, 3, 14, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 16, 3, 16, 3, 16, 3, 16, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 19, 3, 19, 3, 19, 3, 20, 3, 20, 3, 20, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 23, 3, 23, 3, 23, 3, 23, 3, 24, 3, 24, 3, 24, 3, 24, 3, 25, 3, 25, 3, 25, 3, 25, 3, 26, 3, 26, 3, 26, 3, 27, 3, 27, 3, 27, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 34, 3, 34, 3, 34, 3, 34, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 36, 3, 36, 3, 36, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 39, 3, 39, 3, 39, 3, 39, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 42, 3, 42, 3, 43, 3, 43, 3, 44, 3, 44, 3, 45, 3, 45, 3, 46, 3, 46, 3, 46, 3, 47, 3, 47, 3, 48, 3, 48, 3, 49, 3, 49, 3, 50, 3, 50, 3, 51, 3, 51, 3, 51, 3, 52, 3, 52, 3, 53, 3, 53, 3, 53, 3, 54, 3, 54, 3, 54, 3, 55, 3, 55, 3, 56, 3, 56, 3, 57, 3, 57, 3, 58, 3, 58, 3, 59, 3, 59, 3, 59, 3, 60, 3, 60, 3, 61, 3, 61, 3, 61, 3, 62, 3, 62, 3, 63, 3, 63, 3, 64, 3, 64, 3, 65, 3, 65, 3, 65, 3, 66, 3, 66, 3, 67, 3, 67, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 73, 3, 73, 3, 73, 3, 73, 3, 73, 3, 74, 3, 74, 3, 74, 3, 74, 3, 74, 3, 74, 3, 75, 3, 75, 3, 75, 3, 75, 3, 76, 3, 76, 3, 76, 3, 76, 7, 76, 496, 10, 76, 12, 76, 14, 76, 499, 11, 76, 3, 76, 3, 76, 3, 76, 3, 76, 3, 76, 3, 77, 3, 77, 7, 77, 508, 10, 77, 12, 77, 14, 77, 511, 11, 77, 3, 77, 3, 77, 3, 77, 3, 77, 3, 78, 3, 78, 7, 78, 519, 10, 78, 12, 78, 14, 78, 522, 11, 78, 3, 79, 3, 79, 3, 79, 3, 79, 7, 79, 528, 10, 79, 12, 79, 14, 79, 531, 11, 79, 3, 79, 3, 79, 3, 80, 6, 80, 536, 10, 80, 13, 80, 14, 80, 537, 3, 81, 6, 81, 541, 10, 81, 13, 81, 14, 81, 542, 3, 81, 3, 81, 6, 81, 547, 10, 81, 13, 81, 14, 81, 548, 3, 81, 5, 81, 552, 10, 81, 5, 81, 554, 10, 81, 3, 81, 5, 81, 557, 10, 81, 3, 82, 3, 82, 5, 82, 561, 10, 82, 3, 82, 6, 82, 564, 10, 82, 13, 82, 14, 82, 565, 4, 497, 509, 2, 2, 83, 3, 2, 3, 5, 2, 4, 7, 2, 5, 9, 2, 6, 11, 2, 7, 13, 2, 8, 15, 2, 9, 17, 2, 10, 19, 2, 11, 21, 2, 12, 23, 2, 13, 25, 2, 14, 27, 2, 15, 29, 2, 16, 31, 2, 17, 33, 2, 18, 35, 2, 19, 37, 2, 20, 39, 2, 21, 41, 2, 22, 43, 2, 23, 45, 2, 24, 47, 2, 25, 49, 2, 26, 51, 2, 27, 53, 2, 28, 55, 2, 29, 57, 2, 30, 59, 2, 31, 61, 2, 32, 63, 2, 33, 65, 2, 34, 67, 2, 35, 69, 2, 36, 71, 2, 37, 73, 2, 38, 75, 2, 39, 77, 2, 40, 79, 2, 41, 81, 2, 42, 83, 2, 43, 85, 2, 44, 87, 2, 45, 89, 2, 46, 91, 2, 47, 93, 2, 48, 95, 2, 49, 97, 2, 50, 99, 2, 51, 101, 2, 52, 103, 2, 53, 105, 2, 54, 107, 2, 55, 109, 2, 56, 111, 2, 57, 113, 2, 58, 115, 2, 59, 117, 2, 60, 119, 2, 61, 121, 2, 62, 123, 2, 63, 125, 2, 64, 127, 2, 65, 129, 2, 66, 131, 2, 67, 133, 2, 68, 135, 2, 69, 137, 2, 70, 139, 2, 71, 141, 2, 72, 143, 2, 73, 145, 2, 74, 147, 2, 75, 149, 2, 76, 151, 2, 77, 153, 2, 78, 155, 2, 79, 157, 2, 80, 159, 2, 81, 161, 2, 82, 163, 2, 2, 3, 2, 6, 5, 2, 11, 12, 15, 15, 34, 34, 5, 2, 50, 59, 67, 92, 97, 97, 3, 2, 41, 41, 4, 2, 45, 45, 47, 47, 2, 578, 2, 3, 3, 2, 2, 2, 2, 5, 3, 2, 2, 2, 2, 7, 3, 2, 2, 2, 2, 9, 3, 2, 2, 2, 2, 11, 3, 2, 2, 2, 2, 13, 3, 2, 2, 2, 2, 15, 3, 2, 2, 2, 2, 17, 3, 2, 2, 2, 2, 19, 3, 2, 2, 2, 2, 21, 3, 2, 2, 2, 2, 23, 3, 2, 2, 2, 2, 25, 3, 2, 2, 2, 2, 27, 3, 2, 2, 2, 2, 29, 3, 2, 2, 2, 2, 31, 3, 2, 2, 2, 2, 33, 3, 2, 2, 2, 2, 35, 3, 2, 2, 2, 2, 37, 3, 2, 2, 2, 2, 39, 3, 2, 2, 2, 2, 41, 3, 2, 2, 2, 2, 43, 3, 2, 2, 2, 2, 45, 3, 2, 2, 2, 2, 47, 3, 2, 2, 2, 2, 49, 3, 2, 2, 2, 2, 51, 3, 2, 2, 2, 2, 53, 3, 2, 2, 2, 2, 55, 3, 2, 2, 2, 2, 57, 3, 2, 2, 2, 2, 59, 3, 2, 2, 2, 2, 61, 3, 2, 2, 2, 2, 63, 3, 2, 2, 2, 2, 65, 3, 2, 2, 2, 2, 67, 3, 2, 2, 2, 2, 69, 3, 2, 2, 2, 2, 71, 3, 2, 2, 2, 2, 73, 3, 2, 2, 2, 2, 75, 3, 2, 2, 2, 2, 77, 3, 2, 2, 2, 2, 79, 3, 2, 2, 2, 2, 81, 3, 2, 2, 2, 2, 83, 3, 2, 2, 2, 2, 85, 3, 2, 2, 2, 2, 87, 3, 2, 2, 2, 2, 89, 3, 2, 2, 2, 2, 91, 3, 2, 2, 2, 2, 93, 3, 2, 2, 2, 2, 95, 3, 2, 2, 2, 2, 97, 3, 2, 2, 2, 2, 99, 3, 2, 2, 2, 2, 101, 3, 2, 2, 2, 2, 103, 3, 2, 2, 2, 2, 105, 3, 2, 2, 2, 2, 107, 3, 2, 2, 2, 2, 109, 3, 2, 2, 2, 2, 111, 3, 2, 2, 2, 2, 113, 3, 2, 2, 2, 2, 115, 3, 2, 2, 2, 2, 117, 3, 2, 2, 2, 2, 119, 3, 2, 2, 2, 2, 121, 3, 2, 2, 2, 2, 123, 3, 2, 2, 2, 2, 125, 3, 2, 2, 2, 2, 127, 3, 2, 2, 2, 2, 129, 3, 2, 2, 2, 2, 131, 3, 2, 2, 2, 2, 133, 3, 2, 2, 2, 2, 135, 3, 2, 2, 2, 2, 137, 3, 2, 2, 2, 2, 139, 3, 2, 2, 2, 2, 141, 3, 2, 2, 2, 2, 143, 3, 2, 2, 2, 2, 145, 3, 2, 2, 2, 2, 147, 3, 2, 2, 2, 2, 149, 3, 2, 2, 2, 2, 151, 3, 2, 2, 2, 2, 153, 3, 2, 2, 2, 2, 155, 3, 2, 2, 2, 2, 157, 3, 2, 2, 2, 2, 159, 3, 2, 2, 2, 2, 161, 3, 2, 2, 2, 3, 165, 3, 2, 2, 2, 5, 169, 3, 2, 2, 2, 7, 175, 3, 2, 2, 2, 9, 181, 3, 2, 2, 2, 11, 189, 3, 2, 2, 2, 13, 194, 3, 2, 2, 2, 15, 199, 3, 2, 2, 2, 17, 203, 3, 2, 2, 2, 19, 209, 3, 2, 2, 2, 21, 213, 3, 2, 2, 2, 23, 216, 3, 2, 2, 2, 25, 223, 3, 2, 2, 2, 27, 228, 3, 2, 2, 2, 29, 232, 3, 2, 2, 2, 31, 237, 3, 2, 2, 2, 33, 241, 3, 2, 2, 2, 35, 250, 3, 2, 2, 2, 37, 255, 3, 2, 2, 2, 39, 258, 3, 2, 2, 2, 41, 261, 3, 2, 2, 2, 43, 269, 3, 2, 2, 2, 45, 275, 3, 2, 2, 2, 47, 279, 3, 2, 2, 2, 49, 283, 3, 2, 2, 2, 51, 287, 3, 2, 2, 2, 53, 290, 3, 2, 2, 2, 55, 293, 3, 2, 2, 2, 57, 300, 3, 2, 2, 2, 59, 310, 3, 2, 2, 2, 61, 318, 3, 2, 2, 2, 63, 323, 3, 2, 2, 2, 65, 330, 3, 2, 2, 2, 67, 337, 3, 2, 2, 2, 69, 341, 3, 2, 2, 2, 71, 346, 3, 2, 2, 2, 73, 349, 3, 2, 2, 2, 75, 354, 3, 2, 2, 2, 77, 360, 3, 2, 2, 2, 79, 364, 3, 2, 2, 2, 81, 370, 3, 2, 2, 2, 83, 375, 3, 2, 2, 2, 85, 377, 3, 2, 2, 2, 87, 379, 3, 2, 2, 2, 89, 381, 3, 2, 2, 2, 91, 383, 3, 2, 2, 2, 93, 386, 3, 2, 2, 2, 95, 388, 3, 2, 2, 2, 97, 390, 3, 2, 2, 2, 99, 392, 3, 2, 2, 2, 101, 394, 3, 2, 2, 2, 103, 397, 3, 2, 2, 2, 105, 399, 3, 2, 2, 2, 107, 402, 3, 2, 2, 2, 109, 405, 3, 2, 2, 2, 111, 407, 3, 2, 2, 2, 113, 409, 3, 2, 2, 2, 115, 411, 3, 2, 2, 2, 117, 413, 3, 2, 2, 2, 119, 416, 3, 2, 2, 2, 121, 418, 3, 2, 2, 2, 123, 421, 3, 2, 2, 2, 125, 423, 3, 2, 2, 2, 127, 425, 3, 2, 2, 2, 129, 427, 3, 2, 2, 2, 131, 430, 3, 2, 2, 2, 133, 432, 3, 2, 2, 2, 135, 434, 3, 2, 2, 2, 137, 439, 3, 2, 2, 2, 139, 449, 3, 2, 2, 2, 141, 454, 3, 2, 2, 2, 143, 461, 3, 2, 2, 2, 145, 476, 3, 2, 2, 2, 147, 481, 3, 2, 2, 2, 149, 487, 3, 2, 2, 2, 151, 491, 3, 2, 2, 2, 153, 505, 3, 2, 2, 2, 155, 516, 3, 2, 2, 2, 157, 523, 3, 2, 2, 2, 159, 535, 3, 2, 2, 2, 161, 540, 3, 2, 2, 2, 163, 558, 3, 2, 2, 2, 165, 166, 7, 67, 2, 2, 166, 167, 7, 80, 2, 2, 167, 168, 7, 70, 2, 2, 168, 4, 3, 2, 2, 2, 169, 170, 7, 67, 2, 2, 170, 171, 7, 84, 2, 2, 171, 172, 7, 84, 2, 2, 172, 173, 7, 67, 2, 2, 173, 174, 7, 91, 2, 2, 174, 6, 3, 2, 2, 2, 175, 176, 7, 68, 2, 2, 176, 177, 7, 71, 2, 2, 177, 178, 7, 73, 2, 2, 178, 179, 7, 75, 2, 2, 179, 180, 7, 80, 2, 2, 180, 8, 3, 2, 2, 2, 181, 182, 7, 68, 2, 2, 182, 183, 7, 81, 2, 2, 183, 184, 7, 81, 2, 2, 184, 185, 7, 78, 2, 2, 185, 186, 7, 71, 2, 2, 186, 187, 7, 67, 2, 2, 187, 188, 7, 80, 2, 2, 188, 10, 3, 2, 2, 2, 189, 190, 7, 69, 2, 2, 190, 191, 7, 67, 2, 2, 191, 192, 7, 85, 2, 2, 192, 193, 7, 71, 2, 2, 193, 12, 3, 2, 2, 2, 194, 195, 7, 69, 2, 2, 195, 196, 7, 74, 2, 2, 196, 197, 7, 67, 2, 2, 197, 198, 7, 84, 2, 2, 198, 14, 3, 2, 2, 2, 199, 200, 7, 69, 2, 2, 200, 201, 7, 74, 2, 2, 201, 202, 7, 84, 2, 2, 202, 16, 3, 2, 2, 2, 203, 204, 7, 69, 2, 2, 204, 205, 7, 81, 2, 2, 205, 206, 7, 80, 2, 2, 206, 207, 7, 85, 2, 2, 207, 208, 7, 86, 2, 2, 208, 18, 3, 2, 2, 2, 209, 210, 7, 70, 2, 2, 210, 211, 7, 75, 2, 2, 211, 212, 7, 88, 2, 2, 212, 20, 3, 2, 2, 2, 213, 214, 7, 70, 2, 2, 214, 215, 7, 81, 2, 2, 215, 22, 3, 2, 2, 2, 216, 217, 7, 70, 2, 2, 217, 218, 7, 81, 2, 2, 218, 219, 7, 89, 2, 2, 219, 220, 7, 80, 2, 2, 220, 221, 7, 86, 2, 2, 221, 222, 7, 81, 2, 2, 222, 24, 3, 2, 2, 2, 223, 224, 7, 71, 2, 2, 224, 225, 7, 78, 2, 2, 225, 226, 7, 85, 2, 2, 226, 227, 7, 71, 2, 2, 227, 26, 3, 2, 2, 2, 228, 229, 7, 71, 2, 2, 229, 230, 7, 80, 2, 2, 230, 231, 7, 70, 2, 2, 231, 28, 3, 2, 2, 2, 232, 233, 7, 72, 2, 2, 233, 234, 7, 75, 2, 2, 234, 235, 7, 78, 2, 2, 235, 236, 7, 71, 2, 2, 236, 30, 3, 2, 2, 2, 237, 238, 7, 72, 2, 2, 238, 239, 7, 81, 2, 2, 239, 240, 7, 84, 2, 2, 240, 32, 3, 2, 2, 2, 241, 242, 7, 72, 2, 2, 242, 243, 7, 87, 2, 2, 243, 244, 7, 80, 2, 2, 244, 245, 7, 69, 2, 2, 245, 246, 7, 86, 2, 2, 246, 247, 7, 75, 2, 2, 247, 248, 7, 81, 2, 2, 248, 249, 7, 80, 2, 2, 249, 34, 3, 2, 2, 2, 250, 251, 7, 73, 2, 2, 251, 252, 7, 81, 2, 2, 252, 253, 7, 86, 2, 2, 253, 254, 7, 81, 2, 2, 254, 36, 3, 2, 2, 2, 255, 256, 7, 75, 2, 2, 256, 257, 7, 72, 2, 2, 257, 38, 3, 2, 2, 2, 258, 259, 7, 75, 2, 2, 259, 260, 7, 80, 2, 2, 260, 40, 3, 2, 2, 2, 261, 262, 7, 75, 2, 2, 262, 263, 7, 80, 2, 2, 263, 264, 7, 86, 2, 2, 264, 265, 7, 71, 2, 2, 265, 266, 7, 73, 2, 2, 266, 267, 7, 71, 2, 2, 267, 268, 7, 84, 2, 2, 268, 42, 3, 2, 2, 2, 269, 270, 7, 78, 2, 2, 270, 271, 7, 67, 2, 2, 271, 272, 7, 68, 2, 2, 272, 273, 7, 71, 2, 2, 273, 274, 7, 78, 2, 2, 274, 44, 3, 2, 2, 2, 275, 276, 7, 79, 2, 2, 276, 277, 7, 81, 2, 2, 277, 278, 7, 70, 2, 2, 278, 46, 3, 2, 2, 2, 279, 280, 7, 80, 2, 2, 280, 281, 7, 75, 2, 2, 281, 282, 7, 78, 2, 2, 282, 48, 3, 2, 2, 2, 283, 284, 7, 80, 2, 2, 284, 285, 7, 81, 2, 2, 285, 286, 7, 86, 2, 2, 286, 50, 3, 2, 2, 2, 287, 288, 7, 81, 2, 2, 288, 289, 7, 72, 2, 2, 289, 52, 3, 2, 2, 2, 290, 291, 7, 81, 2, 2, 291, 292, 7, 84, 2, 2, 292, 54, 3, 2, 2, 2, 293, 294, 7, 82, 2, 2, 294, 295, 7, 67, 2, 2, 295, 296, 7, 69, 2, 2, 296, 297, 7, 77, 2, 2, 297, 298, 7, 71, 2, 2, 298, 299, 7, 70, 2, 2, 299, 56, 3, 2, 2, 2, 300, 301, 7, 82, 2, 2, 301, 302, 7, 84, 2, 2, 302, 303, 7, 81, 2, 2, 303, 304, 7, 69, 2, 2, 304, 305, 7, 71, 2, 2, 305, 306, 7, 70, 2, 2, 306, 307, 7, 87, 2, 2, 307, 308, 7, 84, 2, 2, 308, 309, 7, 71, 2, 2, 309, 58, 3, 2, 2, 2, 310, 311, 7, 82, 2, 2, 311, 312, 7, 84, 2, 2, 312, 313, 7, 81, 2, 2, 313, 314, 7, 73, 2, 2, 314, 315, 7, 84, 2, 2, 315, 316, 7, 67, 2, 2, 316, 317, 7, 79, 2, 2, 317, 60, 3, 2, 2, 2, 318, 319, 7, 84, 2, 2, 319, 320, 7, 71, 2, 2, 320, 321, 7, 67, 2, 2, 321, 322, 7, 78, 2, 2, 322, 62, 3, 2, 2, 2, 323, 324, 7, 84, 2, 2, 324, 325, 7, 71, 2, 2, 325, 326, 7, 69, 2, 2, 326, 327, 7, 81, 2, 2, 327, 328, 7, 84, 2, 2, 328, 329, 7, 70, 2, 2, 329, 64, 3, 2, 2, 2, 330, 331, 7, 84, 2, 2, 331, 332, 7, 71, 2, 2, 332, 333, 7, 82, 2, 2, 333, 334, 7, 71, 2, 2, 334, 335, 7, 67, 2, 2, 335, 336, 7, 86, 2, 2, 336, 66, 3, 2, 2, 2, 337, 338, 7, 85, 2, 2, 338, 339, 7, 71, 2, 2, 339, 340, 7, 86, 2, 2, 340, 68, 3, 2, 2, 2, 341, 342, 7, 86, 2, 2, 342, 343, 7, 74, 2, 2, 343, 344, 7, 71, 2, 2, 344, 345, 7, 80, 2, 2, 345, 70, 3, 2, 2, 2, 346, 347, 7, 86, 2, 2, 347, 348, 7, 81, 2, 2, 348, 72, 3, 2, 2, 2, 349, 350, 7, 86, 2, 2, 350, 351, 7, 91, 2, 2, 351, 352, 7, 82, 2, 2, 352, 353, 7, 71, 2, 2, 353, 74, 3, 2, 2, 2, 354, 355, 7, 87, 2, 2, 355, 356, 7, 80, 2, 2, 356, 357, 7, 86, 2, 2, 357, 358, 7, 75, 2, 2, 358, 359, 7, 78, 2, 2, 359, 76, 3, 2, 2, 2, 360, 361, 7, 88, 2, 2, 361, 362, 7, 67, 2, 2, 362, 363, 7, 84, 2, 2, 363, 78, 3, 2, 2, 2, 364, 365, 7, 89, 2, 2, 365, 366, 7, 74, 2, 2, 366, 367, 7, 75, 2, 2, 367, 368, 7, 78, 2, 2, 368, 369, 7, 71, 2, 2, 369, 80, 3, 2, 2, 2, 370, 371, 7, 89, 2, 2, 371, 372, 7, 75, 2, 2, 372, 373, 7, 86, 2, 2, 373, 374, 7, 74, 2, 2, 374, 82, 3, 2, 2, 2, 375, 376, 7, 45, 2, 2, 376, 84, 3, 2, 2, 2, 377, 378, 7, 47, 2, 2, 378, 86, 3, 2, 2, 2, 379, 380, 7, 44, 2, 2, 380, 88, 3, 2, 2, 2, 381, 382, 7, 49, 2, 2, 382, 90, 3, 2, 2, 2, 383, 384, 7, 60, 2, 2, 384, 385, 7, 63, 2, 2, 385, 92, 3, 2, 2, 2, 386, 387, 7, 46, 2, 2, 387, 94, 3, 2, 2, 2, 388, 389, 7, 61, 2, 2, 389, 96, 3, 2, 2, 2, 390, 391, 7, 60, 2, 2, 391, 98, 3, 2, 2, 2, 392, 393, 7, 63, 2, 2, 393, 100, 3, 2, 2, 2, 394, 395, 7, 62, 2, 2, 395, 396, 7, 64, 2, 2, 396, 102, 3, 2, 2, 2, 397, 398, 7, 62, 2, 2, 398, 104, 3, 2, 2, 2, 399, 400, 7, 62, 2, 2, 400, 401, 7, 63, 2, 2, 401, 106, 3, 2, 2, 2, 402, 403, 7, 64, 2, 2, 403, 404, 7, 63, 2, 2, 404, 108, 3, 2, 2, 2, 405, 406, 7, 64, 2, 2, 406, 110, 3, 2, 2, 2, 407, 408, 7, 42, 2, 2, 408, 112, 3, 2, 2, 2, 409, 410, 7, 43, 2, 2, 410, 114, 3, 2, 2, 2, 411, 412, 7, 93, 2, 2, 412, 116, 3, 2, 2, 2, 413, 414, 7, 42, 2, 2, 414, 415, 7, 48, 2, 2, 415, 118, 3, 2, 2, 2, 416, 417, 7, 95, 2, 2, 417, 120, 3, 2, 2, 2, 418, 419, 7, 48, 2, 2, 419, 420, 7, 43, 2, 2, 420, 122, 3, 2, 2, 2, 421, 422, 7, 96, 2, 2, 422, 124, 3, 2, 2, 2, 423, 424, 7, 66, 2, 2, 424, 126, 3, 2, 2, 2, 425, 426, 7, 48, 2, 2, 426, 128, 3, 2, 2, 2, 427, 428, 7, 48, 2, 2, 428, 429, 7, 48, 2, 2, 429, 130, 3, 2, 2, 2, 430, 431, 7, 125, 2, 2, 431, 132, 3, 2, 2, 2, 432, 433, 7, 127, 2, 2, 433, 134, 3, 2, 2, 2, 434, 435, 7, 87, 2, 2, 435, 436, 7, 80, 2, 2, 436, 437, 7, 75, 2, 2, 437, 438, 7, 86, 2, 2, 438, 136, 3, 2, 2, 2, 439, 440, 7, 75, 2, 2, 440, 441, 7, 80, 2, 2, 441, 442, 7, 86, 2, 2, 442, 443, 7, 71, 2, 2, 443, 444, 7, 84, 2, 2, 444, 445, 7, 72, 2, 2, 445, 446, 7, 67, 2, 2, 446, 447, 7, 69, 2, 2, 447, 448, 7, 71, 2, 2, 448, 138, 3, 2, 2, 2, 449, 450, 7, 87, 2, 2, 450, 451, 7, 85, 2, 2, 451, 452, 7, 71, 2, 2, 452, 453, 7, 85, 2, 2, 453, 140, 3, 2, 2, 2, 454, 455, 7, 85, 2, 2, 455, 456, 7, 86, 2, 2, 456, 457, 7, 84, 2, 2, 457, 458, 7, 75, 2, 2, 458, 459, 7, 80, 2, 2, 459, 460, 7, 73, 2, 2, 460, 142, 3, 2, 2, 2, 461, 462, 7, 75, 2, 2, 462, 463, 7, 79, 2, 2, 463, 464, 7, 82, 2, 2, 464, 465, 7, 78, 2, 2, 465, 466, 7, 71, 2, 2, 466, 467, 7, 79, 2, 2, 467, 468, 7, 71, 2, 2, 468, 469, 7, 80, 2, 2, 469, 470, 7, 86, 2, 2, 470, 471, 7, 67, 2, 2, 471, 472, 7, 86, 2, 2, 472, 473, 7, 75, 2, 2, 473, 474, 7, 81, 2, 2, 474, 475, 7, 80, 2, 2, 475, 144, 3, 2, 2, 2, 476, 477, 7, 86, 2, 2, 477, 478, 7, 84, 2, 2, 478, 479, 7, 87, 2, 2, 479, 480, 7, 71, 2, 2, 480, 146, 3, 2, 2, 2, 481, 482, 7, 72, 2, 2, 482, 483, 7, 67, 2, 2, 483, 484, 7, 78, 2, 2, 484, 485, 7, 85, 2, 2, 485, 486, 7, 71, 2, 2, 486, 148, 3, 2, 2, 2, 487, 488, 9, 2, 2, 2, 488, 489, 3, 2, 2, 2, 489, 490, 8, 75, 2, 2, 490, 150, 3, 2, 2, 2, 491, 492, 7, 42, 2, 2, 492, 493, 7, 44, 2, 2, 493, 497, 3, 2, 2, 2, 494, 496, 11, 2, 2, 2, 495, 494, 3, 2, 2, 2, 496, 499, 3, 2, 2, 2, 497, 498, 3, 2, 2, 2, 497, 495, 3, 2, 2, 2, 498, 500, 3, 2, 2, 2, 499, 497, 3, 2, 2, 2, 500, 501, 7, 44, 2, 2, 501, 502, 7, 43, 2, 2, 502, 503, 3, 2, 2, 2, 503, 504, 8, 76, 2, 2, 504, 152, 3, 2, 2, 2, 505, 509, 7, 125, 2, 2, 506, 508, 11, 2, 2, 2, 507, 506, 3, 2, 2, 2, 508, 511, 3, 2, 2, 2, 509, 510, 3, 2, 2, 2, 509, 507, 3, 2, 2, 2, 510, 512, 3, 2, 2, 2, 511, 509, 3, 2, 2, 2, 512, 513, 7, 127, 2, 2, 513, 514, 3, 2, 2, 2, 514, 515, 8, 77, 2, 2, 515, 154, 3, 2, 2, 2, 516, 520, 4, 67, 92, 2, 517, 519, 9, 3, 2, 2, 518, 517, 3, 2, 2, 2, 519, 522, 3, 2, 2, 2, 520, 518, 3, 2, 2, 2, 520, 521, 3, 2, 2, 2, 521, 156, 3, 2, 2, 2, 522, 520, 3, 2, 2, 2, 523, 529, 7, 41, 2, 2, 524, 525, 7, 41, 2, 2, 525, 528, 7, 41, 2, 2, 526, 528, 10, 4, 2, 2, 527, 524, 3, 2, 2, 2, 527, 526, 3, 2, 2, 2, 528, 531, 3, 2, 2, 2, 529, 527, 3, 2, 2, 2, 529, 530, 3, 2, 2, 2, 530, 532, 3, 2, 2, 2, 531, 529, 3, 2, 2, 2, 532, 533, 7, 41, 2, 2, 533, 158, 3, 2, 2, 2, 534, 536, 4, 50, 59, 2, 535, 534, 3, 2, 2, 2, 536, 537, 3, 2, 2, 2, 537, 535, 3, 2, 2, 2, 537, 538, 3, 2, 2, 2, 538, 160, 3, 2, 2, 2, 539, 541, 4, 50, 59, 2, 540, 539, 3, 2, 2, 2, 541, 542, 3, 2, 2, 2, 542, 540, 3, 2, 2, 2, 542, 543, 3, 2, 2, 2, 543, 556, 3, 2, 2, 2, 544, 546, 7, 48, 2, 2, 545, 547, 4, 50, 59, 2, 546, 545, 3, 2, 2, 2, 547, 548, 3, 2, 2, 2, 548, 546, 3, 2, 2, 2, 548, 549, 3, 2, 2, 2, 549, 551, 3, 2, 2, 2, 550, 552, 5, 163, 82, 2, 551, 550, 3, 2, 2, 2, 551, 552, 3, 2, 2, 2, 552, 554, 3, 2, 2, 2, 553, 544, 3, 2, 2, 2, 553, 554, 3, 2, 2, 2, 554, 557, 3, 2, 2, 2, 555, 557, 5, 163, 82, 2, 556, 553, 3, 2, 2, 2, 556, 555, 3, 2, 2, 2, 557, 162, 3, 2, 2, 2, 558, 560, 7, 71, 2, 2, 559, 561, 9, 5, 2, 2, 560, 559, 3, 2, 2, 2, 560, 561, 3, 2, 2, 2, 561, 563, 3, 2, 2, 2, 562, 564, 4, 50, 59, 2, 563, 562, 3, 2, 2, 2, 564, 565, 3, 2, 2, 2, 565, 563, 3, 2, 2, 2, 565, 566, 3, 2, 2, 2, 566, 164, 3, 2, 2, 2, 16, 2, 497, 509, 520, 527, 529, 537, 542, 548, 551, 553, 556, 560, 565, 3, 8, 2, 2] \ No newline at end of file diff --git a/examples/Example - Pascal Symbol Table/pascalLexer.tokens b/examples/Example - Pascal Symbol Table/pascalLexer.tokens new file mode 100644 index 0000000..a0e3feb --- /dev/null +++ b/examples/Example - Pascal Symbol Table/pascalLexer.tokens @@ -0,0 +1,153 @@ +AND=1 +ARRAY=2 +BEGIN=3 +BOOLEAN=4 +CASE=5 +CHAR=6 +CHR=7 +CONST=8 +DIV=9 +DO=10 +DOWNTO=11 +ELSE=12 +END=13 +FILE=14 +FOR=15 +FUNCTION=16 +GOTO=17 +IF=18 +IN=19 +INTEGER=20 +LABEL=21 +MOD=22 +NIL=23 +NOT=24 +OF=25 +OR=26 +PACKED=27 +PROCEDURE=28 +PROGRAM=29 +REAL=30 +RECORD=31 +REPEAT=32 +SET=33 +THEN=34 +TO=35 +TYPE=36 +UNTIL=37 +VAR=38 +WHILE=39 +WITH=40 +PLUS=41 +MINUS=42 +STAR=43 +SLASH=44 +ASSIGN=45 +COMMA=46 +SEMI=47 +COLON=48 +EQUAL=49 +NOT_EQUAL=50 +LT=51 +LE=52 +GE=53 +GT=54 +LPAREN=55 +RPAREN=56 +LBRACK=57 +LBRACK2=58 +RBRACK=59 +RBRACK2=60 +POINTER=61 +AT=62 +DOT=63 +DOTDOT=64 +LCURLY=65 +RCURLY=66 +UNIT=67 +INTERFACE=68 +USES=69 +STRING=70 +IMPLEMENTATION=71 +TRUE=72 +FALSE=73 +WS=74 +COMMENT_1=75 +COMMENT_2=76 +IDENT=77 +STRING_LITERAL=78 +NUM_INT=79 +NUM_REAL=80 +'AND'=1 +'ARRAY'=2 +'BEGIN'=3 +'BOOLEAN'=4 +'CASE'=5 +'CHAR'=6 +'CHR'=7 +'CONST'=8 +'DIV'=9 +'DO'=10 +'DOWNTO'=11 +'ELSE'=12 +'END'=13 +'FILE'=14 +'FOR'=15 +'FUNCTION'=16 +'GOTO'=17 +'IF'=18 +'IN'=19 +'INTEGER'=20 +'LABEL'=21 +'MOD'=22 +'NIL'=23 +'NOT'=24 +'OF'=25 +'OR'=26 +'PACKED'=27 +'PROCEDURE'=28 +'PROGRAM'=29 +'REAL'=30 +'RECORD'=31 +'REPEAT'=32 +'SET'=33 +'THEN'=34 +'TO'=35 +'TYPE'=36 +'UNTIL'=37 +'VAR'=38 +'WHILE'=39 +'WITH'=40 +'+'=41 +'-'=42 +'*'=43 +'/'=44 +':='=45 +','=46 +';'=47 +':'=48 +'='=49 +'<>'=50 +'<'=51 +'<='=52 +'>='=53 +'>'=54 +'('=55 +')'=56 +'['=57 +'(.'=58 +']'=59 +'.)'=60 +'^'=61 +'@'=62 +'.'=63 +'..'=64 +'{'=65 +'}'=66 +'UNIT'=67 +'INTERFACE'=68 +'USES'=69 +'STRING'=70 +'IMPLEMENTATION'=71 +'TRUE'=72 +'FALSE'=73 diff --git a/examples/Example - Pascal Symbol Table/src/main.ts b/examples/Example - Pascal Symbol Table/src/main.ts new file mode 100644 index 0000000..44b9f9b --- /dev/null +++ b/examples/Example - Pascal Symbol Table/src/main.ts @@ -0,0 +1,287 @@ +import { CharStreams, CodePointCharStream, CommonTokenStream } from 'antlr4ts'; +import { pascalLexer } from './pascalLexer'; +import { ActualParameterContext, BlockContext, CompoundStatementContext, ConstantContext, ConstantDefinitionContext, EmptyStatement_Context, ExpressionContext, FactorContext, FunctionDesignatorContext, IdentifierContext, IdentifierListContext, ParameterListContext, pascalParser, ProcedureStatementContext, ProgramContext, ProgramHeadingContext, SignedFactorContext, SimpleExpressionContext, SimpleStatementContext, SimpleTypeContext, StartContext, StatementContext, StatementsContext, StringContext, TermContext, TypeDefinitionContext, TypeDefinitionPartContext, TypeIdentifierContext, TypeListContext, Type_Context, UnlabelledStatementContext, UnsignedConstantContext, VariableContext, VariableDeclarationContext, VariableDeclarationPartContext } from './pascalParser'; +import { AbstractParseTreeVisitor } from "antlr4ts/tree/AbstractParseTreeVisitor"; +import { pascalVisitor } from './pascalVisitor'; + +import * as fs from 'fs'; + +import * as ast from '@easycompiler/ast'; +import { IFrontend } from '@easycompiler/frontend'; +import { SymbolTable } from '@easycompiler/ast'; +import { ConstantDefinitionPartContext } from './pascalParser'; +import { TerminalNode } from 'antlr4ts/tree/TerminalNode'; + + +// class ExpressionPascal extends Ast.Expression{ +// nodeId: string; +// constructor(nodeId: string, value?: Ast.Value, type?: Ast.Type) { +// super(value,type); +// this.nodeId=nodeId; +// } +// toJSON():string{ +// const json = JSON.parse(super.toJSON()); +// return JSON.stringify(json); +// } +// } +let symbolTable:SymbolTable.SymbolTable=new SymbolTable.SymbolTable(); +class pascalVisitors extends AbstractParseTreeVisitor implements pascalVisitor{ + visitProgram(ctx: ProgramContext): ast.Ast{ + let program:ast.Block=new ast.Block("Program"); + program.addChild(this.visit(ctx.programHeading())); + program.addChild(this.visit(ctx.block())); + symbolTable.currentBlock="global"; + return program; + } + visitProgramHeading(ctx: ProgramHeadingContext): ast.Ast{ + return new ast.Label((this.visit(ctx.identifier()) as ast.Identifier).name); + } + visitBlock(ctx: BlockContext): ast.Ast{ + let block: ast.Block= new ast.Block("Block"); + if(ctx.constantDefinitionPart()){ + for(let i=0;i = [ + undefined, "'AND'", "'ARRAY'", "'BEGIN'", "'BOOLEAN'", "'CASE'", "'CHAR'", + "'CHR'", "'CONST'", "'DIV'", "'DO'", "'DOWNTO'", "'ELSE'", "'END'", "'FILE'", + "'FOR'", "'FUNCTION'", "'GOTO'", "'IF'", "'IN'", "'INTEGER'", "'LABEL'", + "'MOD'", "'NIL'", "'NOT'", "'OF'", "'OR'", "'PACKED'", "'PROCEDURE'", + "'PROGRAM'", "'REAL'", "'RECORD'", "'REPEAT'", "'SET'", "'THEN'", "'TO'", + "'TYPE'", "'UNTIL'", "'VAR'", "'WHILE'", "'WITH'", "'+'", "'-'", "'*'", + "'/'", "':='", "','", "';'", "':'", "'='", "'<>'", "'<'", "'<='", "'>='", + "'>'", "'('", "')'", "'['", "'(.'", "']'", "'.)'", "'^'", "'@'", "'.'", + "'..'", "'{'", "'}'", "'UNIT'", "'INTERFACE'", "'USES'", "'STRING'", "'IMPLEMENTATION'", + "'TRUE'", "'FALSE'", + ]; + private static readonly _SYMBOLIC_NAMES: Array = [ + undefined, "AND", "ARRAY", "BEGIN", "BOOLEAN", "CASE", "CHAR", "CHR", + "CONST", "DIV", "DO", "DOWNTO", "ELSE", "END", "FILE", "FOR", "FUNCTION", + "GOTO", "IF", "IN", "INTEGER", "LABEL", "MOD", "NIL", "NOT", "OF", "OR", + "PACKED", "PROCEDURE", "PROGRAM", "REAL", "RECORD", "REPEAT", "SET", "THEN", + "TO", "TYPE", "UNTIL", "VAR", "WHILE", "WITH", "PLUS", "MINUS", "STAR", + "SLASH", "ASSIGN", "COMMA", "SEMI", "COLON", "EQUAL", "NOT_EQUAL", "LT", + "LE", "GE", "GT", "LPAREN", "RPAREN", "LBRACK", "LBRACK2", "RBRACK", "RBRACK2", + "POINTER", "AT", "DOT", "DOTDOT", "LCURLY", "RCURLY", "UNIT", "INTERFACE", + "USES", "STRING", "IMPLEMENTATION", "TRUE", "FALSE", "WS", "COMMENT_1", + "COMMENT_2", "IDENT", "STRING_LITERAL", "NUM_INT", "NUM_REAL", + ]; + public static readonly VOCABULARY: Vocabulary = new VocabularyImpl(pascalLexer._LITERAL_NAMES, pascalLexer._SYMBOLIC_NAMES, []); + + // @Override + // @NotNull + public get vocabulary(): Vocabulary { + return pascalLexer.VOCABULARY; + } + // tslint:enable:no-trailing-whitespace + + + constructor(input: CharStream) { + super(input); + this._interp = new LexerATNSimulator(pascalLexer._ATN, this); + } + + // @Override + public get grammarFileName(): string { return "pascal.g4"; } + + // @Override + public get ruleNames(): string[] { return pascalLexer.ruleNames; } + + // @Override + public get serializedATN(): string { return pascalLexer._serializedATN; } + + // @Override + public get channelNames(): string[] { return pascalLexer.channelNames; } + + // @Override + public get modeNames(): string[] { return pascalLexer.modeNames; } + + public static readonly _serializedATN: string = + "\x03\uC91D\uCABA\u058D\uAFBA\u4F53\u0607\uEA8B\uC241\x02R\u0237\b\x01" + + "\x04\x02\t\x02\x04\x03\t\x03\x04\x04\t\x04\x04\x05\t\x05\x04\x06\t\x06" + + "\x04\x07\t\x07\x04\b\t\b\x04\t\t\t\x04\n\t\n\x04\v\t\v\x04\f\t\f\x04\r" + + "\t\r\x04\x0E\t\x0E\x04\x0F\t\x0F\x04\x10\t\x10\x04\x11\t\x11\x04\x12\t" + + "\x12\x04\x13\t\x13\x04\x14\t\x14\x04\x15\t\x15\x04\x16\t\x16\x04\x17\t" + + "\x17\x04\x18\t\x18\x04\x19\t\x19\x04\x1A\t\x1A\x04\x1B\t\x1B\x04\x1C\t" + + "\x1C\x04\x1D\t\x1D\x04\x1E\t\x1E\x04\x1F\t\x1F\x04 \t \x04!\t!\x04\"\t" + + "\"\x04#\t#\x04$\t$\x04%\t%\x04&\t&\x04\'\t\'\x04(\t(\x04)\t)\x04*\t*\x04" + + "+\t+\x04,\t,\x04-\t-\x04.\t.\x04/\t/\x040\t0\x041\t1\x042\t2\x043\t3\x04" + + "4\t4\x045\t5\x046\t6\x047\t7\x048\t8\x049\t9\x04:\t:\x04;\t;\x04<\t<\x04" + + "=\t=\x04>\t>\x04?\t?\x04@\t@\x04A\tA\x04B\tB\x04C\tC\x04D\tD\x04E\tE\x04" + + "F\tF\x04G\tG\x04H\tH\x04I\tI\x04J\tJ\x04K\tK\x04L\tL\x04M\tM\x04N\tN\x04" + + "O\tO\x04P\tP\x04Q\tQ\x04R\tR\x03\x02\x03\x02\x03\x02\x03\x02\x03\x03\x03" + + "\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x04\x03\x04\x03\x04\x03\x04\x03" + + "\x04\x03\x04\x03\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03" + + "\x05\x03\x06\x03\x06\x03\x06\x03\x06\x03\x06\x03\x07\x03\x07\x03\x07\x03" + + "\x07\x03\x07\x03\b\x03\b\x03\b\x03\b\x03\t\x03\t\x03\t\x03\t\x03\t\x03" + + "\t\x03\n\x03\n\x03\n\x03\n\x03\v\x03\v\x03\v\x03\f\x03\f\x03\f\x03\f\x03" + + "\f\x03\f\x03\f\x03\r\x03\r\x03\r\x03\r\x03\r\x03\x0E\x03\x0E\x03\x0E\x03" + + "\x0E\x03\x0F\x03\x0F\x03\x0F\x03\x0F\x03\x0F\x03\x10\x03\x10\x03\x10\x03" + + "\x10\x03\x11\x03\x11\x03\x11\x03\x11\x03\x11\x03\x11\x03\x11\x03\x11\x03" + + "\x11\x03\x12\x03\x12\x03\x12\x03\x12\x03\x12\x03\x13\x03\x13\x03\x13\x03" + + "\x14\x03\x14\x03\x14\x03\x15\x03\x15\x03\x15\x03\x15\x03\x15\x03\x15\x03" + + "\x15\x03\x15\x03\x16\x03\x16\x03\x16\x03\x16\x03\x16\x03\x16\x03\x17\x03" + + "\x17\x03\x17\x03\x17\x03\x18\x03\x18\x03\x18\x03\x18\x03\x19\x03\x19\x03" + + "\x19\x03\x19\x03\x1A\x03\x1A\x03\x1A\x03\x1B\x03\x1B\x03\x1B\x03\x1C\x03" + + "\x1C\x03\x1C\x03\x1C\x03\x1C\x03\x1C\x03\x1C\x03\x1D\x03\x1D\x03\x1D\x03" + + "\x1D\x03\x1D\x03\x1D\x03\x1D\x03\x1D\x03\x1D\x03\x1D\x03\x1E\x03\x1E\x03" + + "\x1E\x03\x1E\x03\x1E\x03\x1E\x03\x1E\x03\x1E\x03\x1F\x03\x1F\x03\x1F\x03" + + "\x1F\x03\x1F\x03 \x03 \x03 \x03 \x03 \x03 \x03 \x03!\x03!\x03!\x03!\x03" + + "!\x03!\x03!\x03\"\x03\"\x03\"\x03\"\x03#\x03#\x03#\x03#\x03#\x03$\x03" + + "$\x03$\x03%\x03%\x03%\x03%\x03%\x03&\x03&\x03&\x03&\x03&\x03&\x03\'\x03" + + "\'\x03\'\x03\'\x03(\x03(\x03(\x03(\x03(\x03(\x03)\x03)\x03)\x03)\x03)" + + "\x03*\x03*\x03+\x03+\x03,\x03,\x03-\x03-\x03.\x03.\x03.\x03/\x03/\x03" + + "0\x030\x031\x031\x032\x032\x033\x033\x033\x034\x034\x035\x035\x035\x03" + + "6\x036\x036\x037\x037\x038\x038\x039\x039\x03:\x03:\x03;\x03;\x03;\x03" + + "<\x03<\x03=\x03=\x03=\x03>\x03>\x03?\x03?\x03@\x03@\x03A\x03A\x03A\x03" + + "B\x03B\x03C\x03C\x03D\x03D\x03D\x03D\x03D\x03E\x03E\x03E\x03E\x03E\x03" + + "E\x03E\x03E\x03E\x03E\x03F\x03F\x03F\x03F\x03F\x03G\x03G\x03G\x03G\x03" + + "G\x03G\x03G\x03H\x03H\x03H\x03H\x03H\x03H\x03H\x03H\x03H\x03H\x03H\x03" + + "H\x03H\x03H\x03H\x03I\x03I\x03I\x03I\x03I\x03J\x03J\x03J\x03J\x03J\x03" + + "J\x03K\x03K\x03K\x03K\x03L\x03L\x03L\x03L\x07L\u01F0\nL\fL\x0EL\u01F3" + + "\vL\x03L\x03L\x03L\x03L\x03L\x03M\x03M\x07M\u01FC\nM\fM\x0EM\u01FF\vM" + + "\x03M\x03M\x03M\x03M\x03N\x03N\x07N\u0207\nN\fN\x0EN\u020A\vN\x03O\x03" + + "O\x03O\x03O\x07O\u0210\nO\fO\x0EO\u0213\vO\x03O\x03O\x03P\x06P\u0218\n" + + "P\rP\x0EP\u0219\x03Q\x06Q\u021D\nQ\rQ\x0EQ\u021E\x03Q\x03Q\x06Q\u0223" + + "\nQ\rQ\x0EQ\u0224\x03Q\x05Q\u0228\nQ\x05Q\u022A\nQ\x03Q\x05Q\u022D\nQ" + + "\x03R\x03R\x05R\u0231\nR\x03R\x06R\u0234\nR\rR\x0ER\u0235\x04\u01F1\u01FD" + + "\x02\x02S\x03\x02\x03\x05\x02\x04\x07\x02\x05\t\x02\x06\v\x02\x07\r\x02" + + "\b\x0F\x02\t\x11\x02\n\x13\x02\v\x15\x02\f\x17\x02\r\x19\x02\x0E\x1B\x02" + + "\x0F\x1D\x02\x10\x1F\x02\x11!\x02\x12#\x02\x13%\x02\x14\'\x02\x15)\x02" + + "\x16+\x02\x17-\x02\x18/\x02\x191\x02\x1A3\x02\x1B5\x02\x1C7\x02\x1D9\x02" + + "\x1E;\x02\x1F=\x02 ?\x02!A\x02\"C\x02#E\x02$G\x02%I\x02&K\x02\'M\x02(" + + "O\x02)Q\x02*S\x02+U\x02,W\x02-Y\x02.[\x02/]\x020_\x021a\x022c\x023e\x02" + + "4g\x025i\x026k\x027m\x028o\x029q\x02:s\x02;u\x02{\x02?}\x02" + + "@\x7F\x02A\x81\x02B\x83\x02C\x85\x02D\x87\x02E\x89\x02F\x8B\x02G\x8D\x02" + + "H\x8F\x02I\x91\x02J\x93\x02K\x95\x02L\x97\x02M\x99\x02N\x9B\x02O\x9D\x02" + + "P\x9F\x02Q\xA1\x02R\xA3\x02\x02\x03\x02\x06\x05\x02\v\f\x0F\x0F\"\"\x05" + + "\x022;C\\aa\x03\x02))\x04\x02--//\x02\u0242\x02\x03\x03\x02\x02\x02\x02" + + "\x05\x03\x02\x02\x02\x02\x07\x03\x02\x02\x02\x02\t\x03\x02\x02\x02\x02" + + "\v\x03\x02\x02\x02\x02\r\x03\x02\x02\x02\x02\x0F\x03\x02\x02\x02\x02\x11" + + "\x03\x02\x02\x02\x02\x13\x03\x02\x02\x02\x02\x15\x03\x02\x02\x02\x02\x17" + + "\x03\x02\x02\x02\x02\x19\x03\x02\x02\x02\x02\x1B\x03\x02\x02\x02\x02\x1D" + + "\x03\x02\x02\x02\x02\x1F\x03\x02\x02\x02\x02!\x03\x02\x02\x02\x02#\x03" + + "\x02\x02\x02\x02%\x03\x02\x02\x02\x02\'\x03\x02\x02\x02\x02)\x03\x02\x02" + + "\x02\x02+\x03\x02\x02\x02\x02-\x03\x02\x02\x02\x02/\x03\x02\x02\x02\x02" + + "1\x03\x02\x02\x02\x023\x03\x02\x02\x02\x025\x03\x02\x02\x02\x027\x03\x02" + + "\x02\x02\x029\x03\x02\x02\x02\x02;\x03\x02\x02\x02\x02=\x03\x02\x02\x02" + + "\x02?\x03\x02\x02\x02\x02A\x03\x02\x02\x02\x02C\x03\x02\x02\x02\x02E\x03" + + "\x02\x02\x02\x02G\x03\x02\x02\x02\x02I\x03\x02\x02\x02\x02K\x03\x02\x02" + + "\x02\x02M\x03\x02\x02\x02\x02O\x03\x02\x02\x02\x02Q\x03\x02\x02\x02\x02" + + "S\x03\x02\x02\x02\x02U\x03\x02\x02\x02\x02W\x03\x02\x02\x02\x02Y\x03\x02" + + "\x02\x02\x02[\x03\x02\x02\x02\x02]\x03\x02\x02\x02\x02_\x03\x02\x02\x02" + + "\x02a\x03\x02\x02\x02\x02c\x03\x02\x02\x02\x02e\x03\x02\x02\x02\x02g\x03" + + "\x02\x02\x02\x02i\x03\x02\x02\x02\x02k\x03\x02\x02\x02\x02m\x03\x02\x02" + + "\x02\x02o\x03\x02\x02\x02\x02q\x03\x02\x02\x02\x02s\x03\x02\x02\x02\x02" + + "u\x03\x02\x02\x02\x02w\x03\x02\x02\x02\x02y\x03\x02\x02\x02\x02{\x03\x02" + + "\x02\x02\x02}\x03\x02\x02\x02\x02\x7F\x03\x02\x02\x02\x02\x81\x03\x02" + + "\x02\x02\x02\x83\x03\x02\x02\x02\x02\x85\x03\x02\x02\x02\x02\x87\x03\x02" + + "\x02\x02\x02\x89\x03\x02\x02\x02\x02\x8B\x03\x02\x02\x02\x02\x8D\x03\x02" + + "\x02\x02\x02\x8F\x03\x02\x02\x02\x02\x91\x03\x02\x02\x02\x02\x93\x03\x02" + + "\x02\x02\x02\x95\x03\x02\x02\x02\x02\x97\x03\x02\x02\x02\x02\x99\x03\x02" + + "\x02\x02\x02\x9B\x03\x02\x02\x02\x02\x9D\x03\x02\x02\x02\x02\x9F\x03\x02" + + "\x02\x02\x02\xA1\x03\x02\x02\x02\x03\xA5\x03\x02\x02\x02\x05\xA9\x03\x02" + + "\x02\x02\x07\xAF\x03\x02\x02\x02\t\xB5\x03\x02\x02\x02\v\xBD\x03\x02\x02" + + "\x02\r\xC2\x03\x02\x02\x02\x0F\xC7\x03\x02\x02\x02\x11\xCB\x03\x02\x02" + + "\x02\x13\xD1\x03\x02\x02\x02\x15\xD5\x03\x02\x02\x02\x17\xD8\x03\x02\x02" + + "\x02\x19\xDF\x03\x02\x02\x02\x1B\xE4\x03\x02\x02\x02\x1D\xE8\x03\x02\x02" + + "\x02\x1F\xED\x03\x02\x02\x02!\xF1\x03\x02\x02\x02#\xFA\x03\x02\x02\x02" + + "%\xFF\x03\x02\x02\x02\'\u0102\x03\x02\x02\x02)\u0105\x03\x02\x02\x02+" + + "\u010D\x03\x02\x02\x02-\u0113\x03\x02\x02\x02/\u0117\x03\x02\x02\x021" + + "\u011B\x03\x02\x02\x023\u011F\x03\x02\x02\x025\u0122\x03\x02\x02\x027" + + "\u0125\x03\x02\x02\x029\u012C\x03\x02\x02\x02;\u0136\x03\x02\x02\x02=" + + "\u013E\x03\x02\x02\x02?\u0143\x03\x02\x02\x02A\u014A\x03\x02\x02\x02C" + + "\u0151\x03\x02\x02\x02E\u0155\x03\x02\x02\x02G\u015A\x03\x02\x02\x02I" + + "\u015D\x03\x02\x02\x02K\u0162\x03\x02\x02\x02M\u0168\x03\x02\x02\x02O" + + "\u016C\x03\x02\x02\x02Q\u0172\x03\x02\x02\x02S\u0177\x03\x02\x02\x02U" + + "\u0179\x03\x02\x02\x02W\u017B\x03\x02\x02\x02Y\u017D\x03\x02\x02\x02[" + + "\u017F\x03\x02\x02\x02]\u0182\x03\x02\x02\x02_\u0184\x03\x02\x02\x02a" + + "\u0186\x03\x02\x02\x02c\u0188\x03\x02\x02\x02e\u018A\x03\x02\x02\x02g" + + "\u018D\x03\x02\x02\x02i\u018F\x03\x02\x02\x02k\u0192\x03\x02\x02\x02m" + + "\u0195\x03\x02\x02\x02o\u0197\x03\x02\x02\x02q\u0199\x03\x02\x02\x02s" + + "\u019B\x03\x02\x02\x02u\u019D\x03\x02\x02\x02w\u01A0\x03\x02\x02\x02y" + + "\u01A2\x03\x02\x02\x02{\u01A5\x03\x02\x02\x02}\u01A7\x03\x02\x02\x02\x7F" + + "\u01A9\x03\x02\x02\x02\x81\u01AB\x03\x02\x02\x02\x83\u01AE\x03\x02\x02" + + "\x02\x85\u01B0\x03\x02\x02\x02\x87\u01B2\x03\x02\x02\x02\x89\u01B7\x03" + + "\x02\x02\x02\x8B\u01C1\x03\x02\x02\x02\x8D\u01C6\x03\x02\x02\x02\x8F\u01CD" + + "\x03\x02\x02\x02\x91\u01DC\x03\x02\x02\x02\x93\u01E1\x03\x02\x02\x02\x95" + + "\u01E7\x03\x02\x02\x02\x97\u01EB\x03\x02\x02\x02\x99\u01F9\x03\x02\x02" + + "\x02\x9B\u0204\x03\x02\x02\x02\x9D\u020B\x03\x02\x02\x02\x9F\u0217\x03" + + "\x02\x02\x02\xA1\u021C\x03\x02\x02\x02\xA3\u022E\x03\x02\x02\x02\xA5\xA6" + + "\x07C\x02\x02\xA6\xA7\x07P\x02\x02\xA7\xA8\x07F\x02\x02\xA8\x04\x03\x02" + + "\x02\x02\xA9\xAA\x07C\x02\x02\xAA\xAB\x07T\x02\x02\xAB\xAC\x07T\x02\x02" + + "\xAC\xAD\x07C\x02\x02\xAD\xAE\x07[\x02\x02\xAE\x06\x03\x02\x02\x02\xAF" + + "\xB0\x07D\x02\x02\xB0\xB1\x07G\x02\x02\xB1\xB2\x07I\x02\x02\xB2\xB3\x07" + + "K\x02\x02\xB3\xB4\x07P\x02\x02\xB4\b\x03\x02\x02\x02\xB5\xB6\x07D\x02" + + "\x02\xB6\xB7\x07Q\x02\x02\xB7\xB8\x07Q\x02\x02\xB8\xB9\x07N\x02\x02\xB9" + + "\xBA\x07G\x02\x02\xBA\xBB\x07C\x02\x02\xBB\xBC\x07P\x02\x02\xBC\n\x03" + + "\x02\x02\x02\xBD\xBE\x07E\x02\x02\xBE\xBF\x07C\x02\x02\xBF\xC0\x07U\x02" + + "\x02\xC0\xC1\x07G\x02\x02\xC1\f\x03\x02\x02\x02\xC2\xC3\x07E\x02\x02\xC3" + + "\xC4\x07J\x02\x02\xC4\xC5\x07C\x02\x02\xC5\xC6\x07T\x02\x02\xC6\x0E\x03" + + "\x02\x02\x02\xC7\xC8\x07E\x02\x02\xC8\xC9\x07J\x02\x02\xC9\xCA\x07T\x02" + + "\x02\xCA\x10\x03\x02\x02\x02\xCB\xCC\x07E\x02\x02\xCC\xCD\x07Q\x02\x02" + + "\xCD\xCE\x07P\x02\x02\xCE\xCF\x07U\x02\x02\xCF\xD0\x07V\x02\x02\xD0\x12" + + "\x03\x02\x02\x02\xD1\xD2\x07F\x02\x02\xD2\xD3\x07K\x02\x02\xD3\xD4\x07" + + "X\x02\x02\xD4\x14\x03\x02\x02\x02\xD5\xD6\x07F\x02\x02\xD6\xD7\x07Q\x02" + + "\x02\xD7\x16\x03\x02\x02\x02\xD8\xD9\x07F\x02\x02\xD9\xDA\x07Q\x02\x02" + + "\xDA\xDB\x07Y\x02\x02\xDB\xDC\x07P\x02\x02\xDC\xDD\x07V\x02\x02\xDD\xDE" + + "\x07Q\x02\x02\xDE\x18\x03\x02\x02\x02\xDF\xE0\x07G\x02\x02\xE0\xE1\x07" + + "N\x02\x02\xE1\xE2\x07U\x02\x02\xE2\xE3\x07G\x02\x02\xE3\x1A\x03\x02\x02" + + "\x02\xE4\xE5\x07G\x02\x02\xE5\xE6\x07P\x02\x02\xE6\xE7\x07F\x02\x02\xE7" + + "\x1C\x03\x02\x02\x02\xE8\xE9\x07H\x02\x02\xE9\xEA\x07K\x02\x02\xEA\xEB" + + "\x07N\x02\x02\xEB\xEC\x07G\x02\x02\xEC\x1E\x03\x02\x02\x02\xED\xEE\x07" + + "H\x02\x02\xEE\xEF\x07Q\x02\x02\xEF\xF0\x07T\x02\x02\xF0 \x03\x02\x02\x02" + + "\xF1\xF2\x07H\x02\x02\xF2\xF3\x07W\x02\x02\xF3\xF4\x07P\x02\x02\xF4\xF5" + + "\x07E\x02\x02\xF5\xF6\x07V\x02\x02\xF6\xF7\x07K\x02\x02\xF7\xF8\x07Q\x02" + + "\x02\xF8\xF9\x07P\x02\x02\xF9\"\x03\x02\x02\x02\xFA\xFB\x07I\x02\x02\xFB" + + "\xFC\x07Q\x02\x02\xFC\xFD\x07V\x02\x02\xFD\xFE\x07Q\x02\x02\xFE$\x03\x02" + + "\x02\x02\xFF\u0100\x07K\x02\x02\u0100\u0101\x07H\x02\x02\u0101&\x03\x02" + + "\x02\x02\u0102\u0103\x07K\x02\x02\u0103\u0104\x07P\x02\x02\u0104(\x03" + + "\x02\x02\x02\u0105\u0106\x07K\x02\x02\u0106\u0107\x07P\x02\x02\u0107\u0108" + + "\x07V\x02\x02\u0108\u0109\x07G\x02\x02\u0109\u010A\x07I\x02\x02\u010A" + + "\u010B\x07G\x02\x02\u010B\u010C\x07T\x02\x02\u010C*\x03\x02\x02\x02\u010D" + + "\u010E\x07N\x02\x02\u010E\u010F\x07C\x02\x02\u010F\u0110\x07D\x02\x02" + + "\u0110\u0111\x07G\x02\x02\u0111\u0112\x07N\x02\x02\u0112,\x03\x02\x02" + + "\x02\u0113\u0114\x07O\x02\x02\u0114\u0115\x07Q\x02\x02\u0115\u0116\x07" + + "F\x02\x02\u0116.\x03\x02\x02\x02\u0117\u0118\x07P\x02\x02\u0118\u0119" + + "\x07K\x02\x02\u0119\u011A\x07N\x02\x02\u011A0\x03\x02\x02\x02\u011B\u011C" + + "\x07P\x02\x02\u011C\u011D\x07Q\x02\x02\u011D\u011E\x07V\x02\x02\u011E" + + "2\x03\x02\x02\x02\u011F\u0120\x07Q\x02\x02\u0120\u0121\x07H\x02\x02\u0121" + + "4\x03\x02\x02\x02\u0122\u0123\x07Q\x02\x02\u0123\u0124\x07T\x02\x02\u0124" + + "6\x03\x02\x02\x02\u0125\u0126\x07R\x02\x02\u0126\u0127\x07C\x02\x02\u0127" + + "\u0128\x07E\x02\x02\u0128\u0129\x07M\x02\x02\u0129\u012A\x07G\x02\x02" + + "\u012A\u012B\x07F\x02\x02\u012B8\x03\x02\x02\x02\u012C\u012D\x07R\x02" + + "\x02\u012D\u012E\x07T\x02\x02\u012E\u012F\x07Q\x02\x02\u012F\u0130\x07" + + "E\x02\x02\u0130\u0131\x07G\x02\x02\u0131\u0132\x07F\x02\x02\u0132\u0133" + + "\x07W\x02\x02\u0133\u0134\x07T\x02\x02\u0134\u0135\x07G\x02\x02\u0135" + + ":\x03\x02\x02\x02\u0136\u0137\x07R\x02\x02\u0137\u0138\x07T\x02\x02\u0138" + + "\u0139\x07Q\x02\x02\u0139\u013A\x07I\x02\x02\u013A\u013B\x07T\x02\x02" + + "\u013B\u013C\x07C\x02\x02\u013C\u013D\x07O\x02\x02\u013D<\x03\x02\x02" + + "\x02\u013E\u013F\x07T\x02\x02\u013F\u0140\x07G\x02\x02\u0140\u0141\x07" + + "C\x02\x02\u0141\u0142\x07N\x02\x02\u0142>\x03\x02\x02\x02\u0143\u0144" + + "\x07T\x02\x02\u0144\u0145\x07G\x02\x02\u0145\u0146\x07E\x02\x02\u0146" + + "\u0147\x07Q\x02\x02\u0147\u0148\x07T\x02\x02\u0148\u0149\x07F\x02\x02" + + "\u0149@\x03\x02\x02\x02\u014A\u014B\x07T\x02\x02\u014B\u014C\x07G\x02" + + "\x02\u014C\u014D\x07R\x02\x02\u014D\u014E\x07G\x02\x02\u014E\u014F\x07" + + "C\x02\x02\u014F\u0150\x07V\x02\x02\u0150B\x03\x02\x02\x02\u0151\u0152" + + "\x07U\x02\x02\u0152\u0153\x07G\x02\x02\u0153\u0154\x07V\x02\x02\u0154" + + "D\x03\x02\x02\x02\u0155\u0156\x07V\x02\x02\u0156\u0157\x07J\x02\x02\u0157" + + "\u0158\x07G\x02\x02\u0158\u0159\x07P\x02\x02\u0159F\x03\x02\x02\x02\u015A" + + "\u015B\x07V\x02\x02\u015B\u015C\x07Q\x02\x02\u015CH\x03\x02\x02\x02\u015D" + + "\u015E\x07V\x02\x02\u015E\u015F\x07[\x02\x02\u015F\u0160\x07R\x02\x02" + + "\u0160\u0161\x07G\x02\x02\u0161J\x03\x02\x02\x02\u0162\u0163\x07W\x02" + + "\x02\u0163\u0164\x07P\x02\x02\u0164\u0165\x07V\x02\x02\u0165\u0166\x07" + + "K\x02\x02\u0166\u0167\x07N\x02\x02\u0167L\x03\x02\x02\x02\u0168\u0169" + + "\x07X\x02\x02\u0169\u016A\x07C\x02\x02\u016A\u016B\x07T\x02\x02\u016B" + + "N\x03\x02\x02\x02\u016C\u016D\x07Y\x02\x02\u016D\u016E\x07J\x02\x02\u016E" + + "\u016F\x07K\x02\x02\u016F\u0170\x07N\x02\x02\u0170\u0171\x07G\x02\x02" + + "\u0171P\x03\x02\x02\x02\u0172\u0173\x07Y\x02\x02\u0173\u0174\x07K\x02" + + "\x02\u0174\u0175\x07V\x02\x02\u0175\u0176\x07J\x02\x02\u0176R\x03\x02" + + "\x02\x02\u0177\u0178\x07-\x02\x02\u0178T\x03\x02\x02\x02\u0179\u017A\x07" + + "/\x02\x02\u017AV\x03\x02\x02\x02\u017B\u017C\x07,\x02\x02\u017CX\x03\x02" + + "\x02\x02\u017D\u017E\x071\x02\x02\u017EZ\x03\x02\x02\x02\u017F\u0180\x07" + + "<\x02\x02\u0180\u0181\x07?\x02\x02\u0181\\\x03\x02\x02\x02\u0182\u0183" + + "\x07.\x02\x02\u0183^\x03\x02\x02\x02\u0184\u0185\x07=\x02\x02\u0185`\x03" + + "\x02\x02\x02\u0186\u0187\x07<\x02\x02\u0187b\x03\x02\x02\x02\u0188\u0189" + + "\x07?\x02\x02\u0189d\x03\x02\x02\x02\u018A\u018B\x07>\x02\x02\u018B\u018C" + + "\x07@\x02\x02\u018Cf\x03\x02\x02\x02\u018D\u018E\x07>\x02\x02\u018Eh\x03" + + "\x02\x02\x02\u018F\u0190\x07>\x02\x02\u0190\u0191\x07?\x02\x02\u0191j" + + "\x03\x02\x02\x02\u0192\u0193\x07@\x02\x02\u0193\u0194\x07?\x02\x02\u0194" + + "l\x03\x02\x02\x02\u0195\u0196\x07@\x02\x02\u0196n\x03\x02\x02\x02\u0197" + + "\u0198\x07*\x02\x02\u0198p\x03\x02\x02\x02\u0199\u019A\x07+\x02\x02\u019A" + + "r\x03\x02\x02\x02\u019B\u019C\x07]\x02\x02\u019Ct\x03\x02\x02\x02\u019D" + + "\u019E\x07*\x02\x02\u019E\u019F\x070\x02\x02\u019Fv\x03\x02\x02\x02\u01A0" + + "\u01A1\x07_\x02\x02\u01A1x\x03\x02\x02\x02\u01A2\u01A3\x070\x02\x02\u01A3" + + "\u01A4\x07+\x02\x02\u01A4z\x03\x02\x02\x02\u01A5\u01A6\x07`\x02\x02\u01A6" + + "|\x03\x02\x02\x02\u01A7\u01A8\x07B\x02\x02\u01A8~\x03\x02\x02\x02\u01A9" + + "\u01AA\x070\x02\x02\u01AA\x80\x03\x02\x02\x02\u01AB\u01AC\x070\x02\x02" + + "\u01AC\u01AD\x070\x02\x02\u01AD\x82\x03\x02\x02\x02\u01AE\u01AF\x07}\x02" + + "\x02\u01AF\x84\x03\x02\x02\x02\u01B0\u01B1\x07\x7F\x02\x02\u01B1\x86\x03" + + "\x02\x02\x02\u01B2\u01B3\x07W\x02\x02\u01B3\u01B4\x07P\x02\x02\u01B4\u01B5" + + "\x07K\x02\x02\u01B5\u01B6\x07V\x02\x02\u01B6\x88\x03\x02\x02\x02\u01B7" + + "\u01B8\x07K\x02\x02\u01B8\u01B9\x07P\x02\x02\u01B9\u01BA\x07V\x02\x02" + + "\u01BA\u01BB\x07G\x02\x02\u01BB\u01BC\x07T\x02\x02\u01BC\u01BD\x07H\x02" + + "\x02\u01BD\u01BE\x07C\x02\x02\u01BE\u01BF\x07E\x02\x02\u01BF\u01C0\x07" + + "G\x02\x02\u01C0\x8A\x03\x02\x02\x02\u01C1\u01C2\x07W\x02\x02\u01C2\u01C3" + + "\x07U\x02\x02\u01C3\u01C4\x07G\x02\x02\u01C4\u01C5\x07U\x02\x02\u01C5" + + "\x8C\x03\x02\x02\x02\u01C6\u01C7\x07U\x02\x02\u01C7\u01C8\x07V\x02\x02" + + "\u01C8\u01C9\x07T\x02\x02\u01C9\u01CA\x07K\x02\x02\u01CA\u01CB\x07P\x02" + + "\x02\u01CB\u01CC\x07I\x02\x02\u01CC\x8E\x03\x02\x02\x02\u01CD\u01CE\x07" + + "K\x02\x02\u01CE\u01CF\x07O\x02\x02\u01CF\u01D0\x07R\x02\x02\u01D0\u01D1" + + "\x07N\x02\x02\u01D1\u01D2\x07G\x02\x02\u01D2\u01D3\x07O\x02\x02\u01D3" + + "\u01D4\x07G\x02\x02\u01D4\u01D5\x07P\x02\x02\u01D5\u01D6\x07V\x02\x02" + + "\u01D6\u01D7\x07C\x02\x02\u01D7\u01D8\x07V\x02\x02\u01D8\u01D9\x07K\x02" + + "\x02\u01D9\u01DA\x07Q\x02\x02\u01DA\u01DB\x07P\x02\x02\u01DB\x90\x03\x02" + + "\x02\x02\u01DC\u01DD\x07V\x02\x02\u01DD\u01DE\x07T\x02\x02\u01DE\u01DF" + + "\x07W\x02\x02\u01DF\u01E0\x07G\x02\x02\u01E0\x92\x03\x02\x02\x02\u01E1" + + "\u01E2\x07H\x02\x02\u01E2\u01E3\x07C\x02\x02\u01E3\u01E4\x07N\x02\x02" + + "\u01E4\u01E5\x07U\x02\x02\u01E5\u01E6\x07G\x02\x02\u01E6\x94\x03\x02\x02" + + "\x02\u01E7\u01E8\t\x02\x02\x02\u01E8\u01E9\x03\x02\x02\x02\u01E9\u01EA" + + "\bK\x02\x02\u01EA\x96\x03\x02\x02\x02\u01EB\u01EC\x07*\x02\x02\u01EC\u01ED" + + "\x07,\x02\x02\u01ED\u01F1\x03\x02\x02\x02\u01EE\u01F0\v\x02\x02\x02\u01EF" + + "\u01EE\x03\x02\x02\x02\u01F0\u01F3\x03\x02\x02\x02\u01F1\u01F2\x03\x02" + + "\x02\x02\u01F1\u01EF\x03\x02\x02\x02\u01F2\u01F4\x03\x02\x02\x02\u01F3" + + "\u01F1\x03\x02\x02\x02\u01F4\u01F5\x07,\x02\x02\u01F5\u01F6\x07+\x02\x02" + + "\u01F6\u01F7\x03\x02\x02\x02\u01F7\u01F8\bL\x02\x02\u01F8\x98\x03\x02" + + "\x02\x02\u01F9\u01FD\x07}\x02\x02\u01FA\u01FC\v\x02\x02\x02\u01FB\u01FA" + + "\x03\x02\x02\x02\u01FC\u01FF\x03\x02\x02\x02\u01FD\u01FE\x03\x02\x02\x02" + + "\u01FD\u01FB\x03\x02\x02\x02\u01FE\u0200\x03\x02\x02\x02\u01FF\u01FD\x03" + + "\x02\x02\x02\u0200\u0201\x07\x7F\x02\x02\u0201\u0202\x03\x02\x02\x02\u0202" + + "\u0203\bM\x02\x02\u0203\x9A\x03\x02\x02\x02\u0204\u0208\x04C\\\x02\u0205" + + "\u0207\t\x03\x02\x02\u0206\u0205\x03\x02\x02\x02\u0207\u020A\x03\x02\x02" + + "\x02\u0208\u0206\x03\x02\x02\x02\u0208\u0209\x03\x02\x02\x02\u0209\x9C" + + "\x03\x02\x02\x02\u020A\u0208\x03\x02\x02\x02\u020B\u0211\x07)\x02\x02" + + "\u020C\u020D\x07)\x02\x02\u020D\u0210\x07)\x02\x02\u020E\u0210\n\x04\x02" + + "\x02\u020F\u020C\x03\x02\x02\x02\u020F\u020E\x03\x02\x02\x02\u0210\u0213" + + "\x03\x02\x02\x02\u0211\u020F\x03\x02\x02\x02\u0211\u0212\x03\x02\x02\x02" + + "\u0212\u0214\x03\x02\x02\x02\u0213\u0211\x03\x02\x02\x02\u0214\u0215\x07" + + ")\x02\x02\u0215\x9E\x03\x02\x02\x02\u0216\u0218\x042;\x02\u0217\u0216" + + "\x03\x02\x02\x02\u0218\u0219\x03\x02\x02\x02\u0219\u0217\x03\x02\x02\x02" + + "\u0219\u021A\x03\x02\x02\x02\u021A\xA0\x03\x02\x02\x02\u021B\u021D\x04" + + "2;\x02\u021C\u021B\x03\x02\x02\x02\u021D\u021E\x03\x02\x02\x02\u021E\u021C" + + "\x03\x02\x02\x02\u021E\u021F\x03\x02\x02\x02\u021F\u022C\x03\x02\x02\x02" + + "\u0220\u0222\x070\x02\x02\u0221\u0223\x042;\x02\u0222\u0221\x03\x02\x02" + + "\x02\u0223\u0224\x03\x02\x02\x02\u0224\u0222\x03\x02\x02\x02\u0224\u0225" + + "\x03\x02\x02\x02\u0225\u0227\x03\x02\x02\x02\u0226\u0228\x05\xA3R\x02" + + "\u0227\u0226\x03\x02\x02\x02\u0227\u0228\x03\x02\x02\x02\u0228\u022A\x03" + + "\x02\x02\x02\u0229\u0220\x03\x02\x02\x02\u0229\u022A\x03\x02\x02\x02\u022A" + + "\u022D\x03\x02\x02\x02\u022B\u022D\x05\xA3R\x02\u022C\u0229\x03\x02\x02" + + "\x02\u022C\u022B\x03\x02\x02\x02\u022D\xA2\x03\x02\x02\x02\u022E\u0230" + + "\x07G\x02\x02\u022F\u0231\t\x05\x02\x02\u0230\u022F\x03\x02\x02\x02\u0230" + + "\u0231\x03\x02\x02\x02\u0231\u0233\x03\x02\x02\x02\u0232\u0234\x042;\x02" + + "\u0233\u0232\x03\x02\x02\x02\u0234\u0235\x03\x02\x02\x02\u0235\u0233\x03" + + "\x02\x02\x02\u0235\u0236\x03\x02\x02\x02\u0236\xA4\x03\x02\x02\x02\x10" + + "\x02\u01F1\u01FD\u0208\u020F\u0211\u0219\u021E\u0224\u0227\u0229\u022C" + + "\u0230\u0235\x03\b\x02\x02"; + public static __ATN: ATN; + public static get _ATN(): ATN { + if (!pascalLexer.__ATN) { + pascalLexer.__ATN = new ATNDeserializer().deserialize(Utils.toCharArray(pascalLexer._serializedATN)); + } + + return pascalLexer.__ATN; + } + +} + diff --git a/examples/Example - Pascal Symbol Table/src/pascalListener.ts b/examples/Example - Pascal Symbol Table/src/pascalListener.ts new file mode 100644 index 0000000..2d6a259 --- /dev/null +++ b/examples/Example - Pascal Symbol Table/src/pascalListener.ts @@ -0,0 +1,1189 @@ +// Generated from ./pascal.g4 by ANTLR 4.9.0-SNAPSHOT + + +import { ParseTreeListener } from "antlr4ts/tree/ParseTreeListener"; + +import { StartContext } from "./pascalParser"; +import { ProgramContext } from "./pascalParser"; +import { ProgramHeadingContext } from "./pascalParser"; +import { IdentifierContext } from "./pascalParser"; +import { BlockContext } from "./pascalParser"; +import { UsesUnitsPartContext } from "./pascalParser"; +import { LabelDeclarationPartContext } from "./pascalParser"; +import { LabelContext } from "./pascalParser"; +import { ConstantDefinitionPartContext } from "./pascalParser"; +import { ConstantDefinitionContext } from "./pascalParser"; +import { ConstantChrContext } from "./pascalParser"; +import { ConstantContext } from "./pascalParser"; +import { UnsignedNumberContext } from "./pascalParser"; +import { UnsignedIntegerContext } from "./pascalParser"; +import { UnsignedRealContext } from "./pascalParser"; +import { SignContext } from "./pascalParser"; +import { Bool_Context } from "./pascalParser"; +import { StringContext } from "./pascalParser"; +import { TypeDefinitionPartContext } from "./pascalParser"; +import { TypeDefinitionContext } from "./pascalParser"; +import { FunctionTypeContext } from "./pascalParser"; +import { ProcedureTypeContext } from "./pascalParser"; +import { Type_Context } from "./pascalParser"; +import { SimpleTypeContext } from "./pascalParser"; +import { ScalarTypeContext } from "./pascalParser"; +import { SubrangeTypeContext } from "./pascalParser"; +import { TypeIdentifierContext } from "./pascalParser"; +import { StructuredTypeContext } from "./pascalParser"; +import { UnpackedStructuredTypeContext } from "./pascalParser"; +import { StringtypeContext } from "./pascalParser"; +import { ArrayTypeContext } from "./pascalParser"; +import { TypeListContext } from "./pascalParser"; +import { IndexTypeContext } from "./pascalParser"; +import { ComponentTypeContext } from "./pascalParser"; +import { RecordTypeContext } from "./pascalParser"; +import { FieldListContext } from "./pascalParser"; +import { FixedPartContext } from "./pascalParser"; +import { RecordSectionContext } from "./pascalParser"; +import { VariantPartContext } from "./pascalParser"; +import { TagContext } from "./pascalParser"; +import { VariantContext } from "./pascalParser"; +import { SetTypeContext } from "./pascalParser"; +import { BaseTypeContext } from "./pascalParser"; +import { FileTypeContext } from "./pascalParser"; +import { PointerTypeContext } from "./pascalParser"; +import { VariableDeclarationPartContext } from "./pascalParser"; +import { VariableDeclarationContext } from "./pascalParser"; +import { ProcedureAndFunctionDeclarationPartContext } from "./pascalParser"; +import { ProcedureOrFunctionDeclarationContext } from "./pascalParser"; +import { ProcedureDeclarationContext } from "./pascalParser"; +import { FormalParameterListContext } from "./pascalParser"; +import { FormalParameterSectionContext } from "./pascalParser"; +import { ParameterGroupContext } from "./pascalParser"; +import { IdentifierListContext } from "./pascalParser"; +import { ConstListContext } from "./pascalParser"; +import { FunctionDeclarationContext } from "./pascalParser"; +import { ResultTypeContext } from "./pascalParser"; +import { StatementContext } from "./pascalParser"; +import { UnlabelledStatementContext } from "./pascalParser"; +import { SimpleStatementContext } from "./pascalParser"; +import { AssignmentStatementContext } from "./pascalParser"; +import { VariableContext } from "./pascalParser"; +import { ExpressionContext } from "./pascalParser"; +import { RelationaloperatorContext } from "./pascalParser"; +import { SimpleExpressionContext } from "./pascalParser"; +import { AdditiveoperatorContext } from "./pascalParser"; +import { TermContext } from "./pascalParser"; +import { MultiplicativeoperatorContext } from "./pascalParser"; +import { SignedFactorContext } from "./pascalParser"; +import { FactorContext } from "./pascalParser"; +import { UnsignedConstantContext } from "./pascalParser"; +import { FunctionDesignatorContext } from "./pascalParser"; +import { ParameterListContext } from "./pascalParser"; +import { Set_Context } from "./pascalParser"; +import { ElementListContext } from "./pascalParser"; +import { ElementContext } from "./pascalParser"; +import { ProcedureStatementContext } from "./pascalParser"; +import { ActualParameterContext } from "./pascalParser"; +import { ParameterwidthContext } from "./pascalParser"; +import { GotoStatementContext } from "./pascalParser"; +import { EmptyStatement_Context } from "./pascalParser"; +import { Empty_Context } from "./pascalParser"; +import { StructuredStatementContext } from "./pascalParser"; +import { CompoundStatementContext } from "./pascalParser"; +import { StatementsContext } from "./pascalParser"; +import { ConditionalStatementContext } from "./pascalParser"; +import { IfStatementContext } from "./pascalParser"; +import { CaseStatementContext } from "./pascalParser"; +import { CaseListElementContext } from "./pascalParser"; +import { RepetetiveStatementContext } from "./pascalParser"; +import { WhileStatementContext } from "./pascalParser"; +import { RepeatStatementContext } from "./pascalParser"; +import { ForStatementContext } from "./pascalParser"; +import { ForListContext } from "./pascalParser"; +import { InitialValueContext } from "./pascalParser"; +import { FinalValueContext } from "./pascalParser"; +import { WithStatementContext } from "./pascalParser"; +import { RecordVariableListContext } from "./pascalParser"; + + +/** + * This interface defines a complete listener for a parse tree produced by + * `pascalParser`. + */ +export interface pascalListener extends ParseTreeListener { + /** + * Enter a parse tree produced by `pascalParser.start`. + * @param ctx the parse tree + */ + enterStart?: (ctx: StartContext) => void; + /** + * Exit a parse tree produced by `pascalParser.start`. + * @param ctx the parse tree + */ + exitStart?: (ctx: StartContext) => void; + + /** + * Enter a parse tree produced by `pascalParser.program`. + * @param ctx the parse tree + */ + enterProgram?: (ctx: ProgramContext) => void; + /** + * Exit a parse tree produced by `pascalParser.program`. + * @param ctx the parse tree + */ + exitProgram?: (ctx: ProgramContext) => void; + + /** + * Enter a parse tree produced by `pascalParser.programHeading`. + * @param ctx the parse tree + */ + enterProgramHeading?: (ctx: ProgramHeadingContext) => void; + /** + * Exit a parse tree produced by `pascalParser.programHeading`. + * @param ctx the parse tree + */ + exitProgramHeading?: (ctx: ProgramHeadingContext) => void; + + /** + * Enter a parse tree produced by `pascalParser.identifier`. + * @param ctx the parse tree + */ + enterIdentifier?: (ctx: IdentifierContext) => void; + /** + * Exit a parse tree produced by `pascalParser.identifier`. + * @param ctx the parse tree + */ + exitIdentifier?: (ctx: IdentifierContext) => void; + + /** + * Enter a parse tree produced by `pascalParser.block`. + * @param ctx the parse tree + */ + enterBlock?: (ctx: BlockContext) => void; + /** + * Exit a parse tree produced by `pascalParser.block`. + * @param ctx the parse tree + */ + exitBlock?: (ctx: BlockContext) => void; + + /** + * Enter a parse tree produced by `pascalParser.usesUnitsPart`. + * @param ctx the parse tree + */ + enterUsesUnitsPart?: (ctx: UsesUnitsPartContext) => void; + /** + * Exit a parse tree produced by `pascalParser.usesUnitsPart`. + * @param ctx the parse tree + */ + exitUsesUnitsPart?: (ctx: UsesUnitsPartContext) => void; + + /** + * Enter a parse tree produced by `pascalParser.labelDeclarationPart`. + * @param ctx the parse tree + */ + enterLabelDeclarationPart?: (ctx: LabelDeclarationPartContext) => void; + /** + * Exit a parse tree produced by `pascalParser.labelDeclarationPart`. + * @param ctx the parse tree + */ + exitLabelDeclarationPart?: (ctx: LabelDeclarationPartContext) => void; + + /** + * Enter a parse tree produced by `pascalParser.label`. + * @param ctx the parse tree + */ + enterLabel?: (ctx: LabelContext) => void; + /** + * Exit a parse tree produced by `pascalParser.label`. + * @param ctx the parse tree + */ + exitLabel?: (ctx: LabelContext) => void; + + /** + * Enter a parse tree produced by `pascalParser.constantDefinitionPart`. + * @param ctx the parse tree + */ + enterConstantDefinitionPart?: (ctx: ConstantDefinitionPartContext) => void; + /** + * Exit a parse tree produced by `pascalParser.constantDefinitionPart`. + * @param ctx the parse tree + */ + exitConstantDefinitionPart?: (ctx: ConstantDefinitionPartContext) => void; + + /** + * Enter a parse tree produced by `pascalParser.constantDefinition`. + * @param ctx the parse tree + */ + enterConstantDefinition?: (ctx: ConstantDefinitionContext) => void; + /** + * Exit a parse tree produced by `pascalParser.constantDefinition`. + * @param ctx the parse tree + */ + exitConstantDefinition?: (ctx: ConstantDefinitionContext) => void; + + /** + * Enter a parse tree produced by `pascalParser.constantChr`. + * @param ctx the parse tree + */ + enterConstantChr?: (ctx: ConstantChrContext) => void; + /** + * Exit a parse tree produced by `pascalParser.constantChr`. + * @param ctx the parse tree + */ + exitConstantChr?: (ctx: ConstantChrContext) => void; + + /** + * Enter a parse tree produced by `pascalParser.constant`. + * @param ctx the parse tree + */ + enterConstant?: (ctx: ConstantContext) => void; + /** + * Exit a parse tree produced by `pascalParser.constant`. + * @param ctx the parse tree + */ + exitConstant?: (ctx: ConstantContext) => void; + + /** + * Enter a parse tree produced by `pascalParser.unsignedNumber`. + * @param ctx the parse tree + */ + enterUnsignedNumber?: (ctx: UnsignedNumberContext) => void; + /** + * Exit a parse tree produced by `pascalParser.unsignedNumber`. + * @param ctx the parse tree + */ + exitUnsignedNumber?: (ctx: UnsignedNumberContext) => void; + + /** + * Enter a parse tree produced by `pascalParser.unsignedInteger`. + * @param ctx the parse tree + */ + enterUnsignedInteger?: (ctx: UnsignedIntegerContext) => void; + /** + * Exit a parse tree produced by `pascalParser.unsignedInteger`. + * @param ctx the parse tree + */ + exitUnsignedInteger?: (ctx: UnsignedIntegerContext) => void; + + /** + * Enter a parse tree produced by `pascalParser.unsignedReal`. + * @param ctx the parse tree + */ + enterUnsignedReal?: (ctx: UnsignedRealContext) => void; + /** + * Exit a parse tree produced by `pascalParser.unsignedReal`. + * @param ctx the parse tree + */ + exitUnsignedReal?: (ctx: UnsignedRealContext) => void; + + /** + * Enter a parse tree produced by `pascalParser.sign`. + * @param ctx the parse tree + */ + enterSign?: (ctx: SignContext) => void; + /** + * Exit a parse tree produced by `pascalParser.sign`. + * @param ctx the parse tree + */ + exitSign?: (ctx: SignContext) => void; + + /** + * Enter a parse tree produced by `pascalParser.bool_`. + * @param ctx the parse tree + */ + enterBool_?: (ctx: Bool_Context) => void; + /** + * Exit a parse tree produced by `pascalParser.bool_`. + * @param ctx the parse tree + */ + exitBool_?: (ctx: Bool_Context) => void; + + /** + * Enter a parse tree produced by `pascalParser.string`. + * @param ctx the parse tree + */ + enterString?: (ctx: StringContext) => void; + /** + * Exit a parse tree produced by `pascalParser.string`. + * @param ctx the parse tree + */ + exitString?: (ctx: StringContext) => void; + + /** + * Enter a parse tree produced by `pascalParser.typeDefinitionPart`. + * @param ctx the parse tree + */ + enterTypeDefinitionPart?: (ctx: TypeDefinitionPartContext) => void; + /** + * Exit a parse tree produced by `pascalParser.typeDefinitionPart`. + * @param ctx the parse tree + */ + exitTypeDefinitionPart?: (ctx: TypeDefinitionPartContext) => void; + + /** + * Enter a parse tree produced by `pascalParser.typeDefinition`. + * @param ctx the parse tree + */ + enterTypeDefinition?: (ctx: TypeDefinitionContext) => void; + /** + * Exit a parse tree produced by `pascalParser.typeDefinition`. + * @param ctx the parse tree + */ + exitTypeDefinition?: (ctx: TypeDefinitionContext) => void; + + /** + * Enter a parse tree produced by `pascalParser.functionType`. + * @param ctx the parse tree + */ + enterFunctionType?: (ctx: FunctionTypeContext) => void; + /** + * Exit a parse tree produced by `pascalParser.functionType`. + * @param ctx the parse tree + */ + exitFunctionType?: (ctx: FunctionTypeContext) => void; + + /** + * Enter a parse tree produced by `pascalParser.procedureType`. + * @param ctx the parse tree + */ + enterProcedureType?: (ctx: ProcedureTypeContext) => void; + /** + * Exit a parse tree produced by `pascalParser.procedureType`. + * @param ctx the parse tree + */ + exitProcedureType?: (ctx: ProcedureTypeContext) => void; + + /** + * Enter a parse tree produced by `pascalParser.type_`. + * @param ctx the parse tree + */ + enterType_?: (ctx: Type_Context) => void; + /** + * Exit a parse tree produced by `pascalParser.type_`. + * @param ctx the parse tree + */ + exitType_?: (ctx: Type_Context) => void; + + /** + * Enter a parse tree produced by `pascalParser.simpleType`. + * @param ctx the parse tree + */ + enterSimpleType?: (ctx: SimpleTypeContext) => void; + /** + * Exit a parse tree produced by `pascalParser.simpleType`. + * @param ctx the parse tree + */ + exitSimpleType?: (ctx: SimpleTypeContext) => void; + + /** + * Enter a parse tree produced by `pascalParser.scalarType`. + * @param ctx the parse tree + */ + enterScalarType?: (ctx: ScalarTypeContext) => void; + /** + * Exit a parse tree produced by `pascalParser.scalarType`. + * @param ctx the parse tree + */ + exitScalarType?: (ctx: ScalarTypeContext) => void; + + /** + * Enter a parse tree produced by `pascalParser.subrangeType`. + * @param ctx the parse tree + */ + enterSubrangeType?: (ctx: SubrangeTypeContext) => void; + /** + * Exit a parse tree produced by `pascalParser.subrangeType`. + * @param ctx the parse tree + */ + exitSubrangeType?: (ctx: SubrangeTypeContext) => void; + + /** + * Enter a parse tree produced by `pascalParser.typeIdentifier`. + * @param ctx the parse tree + */ + enterTypeIdentifier?: (ctx: TypeIdentifierContext) => void; + /** + * Exit a parse tree produced by `pascalParser.typeIdentifier`. + * @param ctx the parse tree + */ + exitTypeIdentifier?: (ctx: TypeIdentifierContext) => void; + + /** + * Enter a parse tree produced by `pascalParser.structuredType`. + * @param ctx the parse tree + */ + enterStructuredType?: (ctx: StructuredTypeContext) => void; + /** + * Exit a parse tree produced by `pascalParser.structuredType`. + * @param ctx the parse tree + */ + exitStructuredType?: (ctx: StructuredTypeContext) => void; + + /** + * Enter a parse tree produced by `pascalParser.unpackedStructuredType`. + * @param ctx the parse tree + */ + enterUnpackedStructuredType?: (ctx: UnpackedStructuredTypeContext) => void; + /** + * Exit a parse tree produced by `pascalParser.unpackedStructuredType`. + * @param ctx the parse tree + */ + exitUnpackedStructuredType?: (ctx: UnpackedStructuredTypeContext) => void; + + /** + * Enter a parse tree produced by `pascalParser.stringtype`. + * @param ctx the parse tree + */ + enterStringtype?: (ctx: StringtypeContext) => void; + /** + * Exit a parse tree produced by `pascalParser.stringtype`. + * @param ctx the parse tree + */ + exitStringtype?: (ctx: StringtypeContext) => void; + + /** + * Enter a parse tree produced by `pascalParser.arrayType`. + * @param ctx the parse tree + */ + enterArrayType?: (ctx: ArrayTypeContext) => void; + /** + * Exit a parse tree produced by `pascalParser.arrayType`. + * @param ctx the parse tree + */ + exitArrayType?: (ctx: ArrayTypeContext) => void; + + /** + * Enter a parse tree produced by `pascalParser.typeList`. + * @param ctx the parse tree + */ + enterTypeList?: (ctx: TypeListContext) => void; + /** + * Exit a parse tree produced by `pascalParser.typeList`. + * @param ctx the parse tree + */ + exitTypeList?: (ctx: TypeListContext) => void; + + /** + * Enter a parse tree produced by `pascalParser.indexType`. + * @param ctx the parse tree + */ + enterIndexType?: (ctx: IndexTypeContext) => void; + /** + * Exit a parse tree produced by `pascalParser.indexType`. + * @param ctx the parse tree + */ + exitIndexType?: (ctx: IndexTypeContext) => void; + + /** + * Enter a parse tree produced by `pascalParser.componentType`. + * @param ctx the parse tree + */ + enterComponentType?: (ctx: ComponentTypeContext) => void; + /** + * Exit a parse tree produced by `pascalParser.componentType`. + * @param ctx the parse tree + */ + exitComponentType?: (ctx: ComponentTypeContext) => void; + + /** + * Enter a parse tree produced by `pascalParser.recordType`. + * @param ctx the parse tree + */ + enterRecordType?: (ctx: RecordTypeContext) => void; + /** + * Exit a parse tree produced by `pascalParser.recordType`. + * @param ctx the parse tree + */ + exitRecordType?: (ctx: RecordTypeContext) => void; + + /** + * Enter a parse tree produced by `pascalParser.fieldList`. + * @param ctx the parse tree + */ + enterFieldList?: (ctx: FieldListContext) => void; + /** + * Exit a parse tree produced by `pascalParser.fieldList`. + * @param ctx the parse tree + */ + exitFieldList?: (ctx: FieldListContext) => void; + + /** + * Enter a parse tree produced by `pascalParser.fixedPart`. + * @param ctx the parse tree + */ + enterFixedPart?: (ctx: FixedPartContext) => void; + /** + * Exit a parse tree produced by `pascalParser.fixedPart`. + * @param ctx the parse tree + */ + exitFixedPart?: (ctx: FixedPartContext) => void; + + /** + * Enter a parse tree produced by `pascalParser.recordSection`. + * @param ctx the parse tree + */ + enterRecordSection?: (ctx: RecordSectionContext) => void; + /** + * Exit a parse tree produced by `pascalParser.recordSection`. + * @param ctx the parse tree + */ + exitRecordSection?: (ctx: RecordSectionContext) => void; + + /** + * Enter a parse tree produced by `pascalParser.variantPart`. + * @param ctx the parse tree + */ + enterVariantPart?: (ctx: VariantPartContext) => void; + /** + * Exit a parse tree produced by `pascalParser.variantPart`. + * @param ctx the parse tree + */ + exitVariantPart?: (ctx: VariantPartContext) => void; + + /** + * Enter a parse tree produced by `pascalParser.tag`. + * @param ctx the parse tree + */ + enterTag?: (ctx: TagContext) => void; + /** + * Exit a parse tree produced by `pascalParser.tag`. + * @param ctx the parse tree + */ + exitTag?: (ctx: TagContext) => void; + + /** + * Enter a parse tree produced by `pascalParser.variant`. + * @param ctx the parse tree + */ + enterVariant?: (ctx: VariantContext) => void; + /** + * Exit a parse tree produced by `pascalParser.variant`. + * @param ctx the parse tree + */ + exitVariant?: (ctx: VariantContext) => void; + + /** + * Enter a parse tree produced by `pascalParser.setType`. + * @param ctx the parse tree + */ + enterSetType?: (ctx: SetTypeContext) => void; + /** + * Exit a parse tree produced by `pascalParser.setType`. + * @param ctx the parse tree + */ + exitSetType?: (ctx: SetTypeContext) => void; + + /** + * Enter a parse tree produced by `pascalParser.baseType`. + * @param ctx the parse tree + */ + enterBaseType?: (ctx: BaseTypeContext) => void; + /** + * Exit a parse tree produced by `pascalParser.baseType`. + * @param ctx the parse tree + */ + exitBaseType?: (ctx: BaseTypeContext) => void; + + /** + * Enter a parse tree produced by `pascalParser.fileType`. + * @param ctx the parse tree + */ + enterFileType?: (ctx: FileTypeContext) => void; + /** + * Exit a parse tree produced by `pascalParser.fileType`. + * @param ctx the parse tree + */ + exitFileType?: (ctx: FileTypeContext) => void; + + /** + * Enter a parse tree produced by `pascalParser.pointerType`. + * @param ctx the parse tree + */ + enterPointerType?: (ctx: PointerTypeContext) => void; + /** + * Exit a parse tree produced by `pascalParser.pointerType`. + * @param ctx the parse tree + */ + exitPointerType?: (ctx: PointerTypeContext) => void; + + /** + * Enter a parse tree produced by `pascalParser.variableDeclarationPart`. + * @param ctx the parse tree + */ + enterVariableDeclarationPart?: (ctx: VariableDeclarationPartContext) => void; + /** + * Exit a parse tree produced by `pascalParser.variableDeclarationPart`. + * @param ctx the parse tree + */ + exitVariableDeclarationPart?: (ctx: VariableDeclarationPartContext) => void; + + /** + * Enter a parse tree produced by `pascalParser.variableDeclaration`. + * @param ctx the parse tree + */ + enterVariableDeclaration?: (ctx: VariableDeclarationContext) => void; + /** + * Exit a parse tree produced by `pascalParser.variableDeclaration`. + * @param ctx the parse tree + */ + exitVariableDeclaration?: (ctx: VariableDeclarationContext) => void; + + /** + * Enter a parse tree produced by `pascalParser.procedureAndFunctionDeclarationPart`. + * @param ctx the parse tree + */ + enterProcedureAndFunctionDeclarationPart?: (ctx: ProcedureAndFunctionDeclarationPartContext) => void; + /** + * Exit a parse tree produced by `pascalParser.procedureAndFunctionDeclarationPart`. + * @param ctx the parse tree + */ + exitProcedureAndFunctionDeclarationPart?: (ctx: ProcedureAndFunctionDeclarationPartContext) => void; + + /** + * Enter a parse tree produced by `pascalParser.procedureOrFunctionDeclaration`. + * @param ctx the parse tree + */ + enterProcedureOrFunctionDeclaration?: (ctx: ProcedureOrFunctionDeclarationContext) => void; + /** + * Exit a parse tree produced by `pascalParser.procedureOrFunctionDeclaration`. + * @param ctx the parse tree + */ + exitProcedureOrFunctionDeclaration?: (ctx: ProcedureOrFunctionDeclarationContext) => void; + + /** + * Enter a parse tree produced by `pascalParser.procedureDeclaration`. + * @param ctx the parse tree + */ + enterProcedureDeclaration?: (ctx: ProcedureDeclarationContext) => void; + /** + * Exit a parse tree produced by `pascalParser.procedureDeclaration`. + * @param ctx the parse tree + */ + exitProcedureDeclaration?: (ctx: ProcedureDeclarationContext) => void; + + /** + * Enter a parse tree produced by `pascalParser.formalParameterList`. + * @param ctx the parse tree + */ + enterFormalParameterList?: (ctx: FormalParameterListContext) => void; + /** + * Exit a parse tree produced by `pascalParser.formalParameterList`. + * @param ctx the parse tree + */ + exitFormalParameterList?: (ctx: FormalParameterListContext) => void; + + /** + * Enter a parse tree produced by `pascalParser.formalParameterSection`. + * @param ctx the parse tree + */ + enterFormalParameterSection?: (ctx: FormalParameterSectionContext) => void; + /** + * Exit a parse tree produced by `pascalParser.formalParameterSection`. + * @param ctx the parse tree + */ + exitFormalParameterSection?: (ctx: FormalParameterSectionContext) => void; + + /** + * Enter a parse tree produced by `pascalParser.parameterGroup`. + * @param ctx the parse tree + */ + enterParameterGroup?: (ctx: ParameterGroupContext) => void; + /** + * Exit a parse tree produced by `pascalParser.parameterGroup`. + * @param ctx the parse tree + */ + exitParameterGroup?: (ctx: ParameterGroupContext) => void; + + /** + * Enter a parse tree produced by `pascalParser.identifierList`. + * @param ctx the parse tree + */ + enterIdentifierList?: (ctx: IdentifierListContext) => void; + /** + * Exit a parse tree produced by `pascalParser.identifierList`. + * @param ctx the parse tree + */ + exitIdentifierList?: (ctx: IdentifierListContext) => void; + + /** + * Enter a parse tree produced by `pascalParser.constList`. + * @param ctx the parse tree + */ + enterConstList?: (ctx: ConstListContext) => void; + /** + * Exit a parse tree produced by `pascalParser.constList`. + * @param ctx the parse tree + */ + exitConstList?: (ctx: ConstListContext) => void; + + /** + * Enter a parse tree produced by `pascalParser.functionDeclaration`. + * @param ctx the parse tree + */ + enterFunctionDeclaration?: (ctx: FunctionDeclarationContext) => void; + /** + * Exit a parse tree produced by `pascalParser.functionDeclaration`. + * @param ctx the parse tree + */ + exitFunctionDeclaration?: (ctx: FunctionDeclarationContext) => void; + + /** + * Enter a parse tree produced by `pascalParser.resultType`. + * @param ctx the parse tree + */ + enterResultType?: (ctx: ResultTypeContext) => void; + /** + * Exit a parse tree produced by `pascalParser.resultType`. + * @param ctx the parse tree + */ + exitResultType?: (ctx: ResultTypeContext) => void; + + /** + * Enter a parse tree produced by `pascalParser.statement`. + * @param ctx the parse tree + */ + enterStatement?: (ctx: StatementContext) => void; + /** + * Exit a parse tree produced by `pascalParser.statement`. + * @param ctx the parse tree + */ + exitStatement?: (ctx: StatementContext) => void; + + /** + * Enter a parse tree produced by `pascalParser.unlabelledStatement`. + * @param ctx the parse tree + */ + enterUnlabelledStatement?: (ctx: UnlabelledStatementContext) => void; + /** + * Exit a parse tree produced by `pascalParser.unlabelledStatement`. + * @param ctx the parse tree + */ + exitUnlabelledStatement?: (ctx: UnlabelledStatementContext) => void; + + /** + * Enter a parse tree produced by `pascalParser.simpleStatement`. + * @param ctx the parse tree + */ + enterSimpleStatement?: (ctx: SimpleStatementContext) => void; + /** + * Exit a parse tree produced by `pascalParser.simpleStatement`. + * @param ctx the parse tree + */ + exitSimpleStatement?: (ctx: SimpleStatementContext) => void; + + /** + * Enter a parse tree produced by `pascalParser.assignmentStatement`. + * @param ctx the parse tree + */ + enterAssignmentStatement?: (ctx: AssignmentStatementContext) => void; + /** + * Exit a parse tree produced by `pascalParser.assignmentStatement`. + * @param ctx the parse tree + */ + exitAssignmentStatement?: (ctx: AssignmentStatementContext) => void; + + /** + * Enter a parse tree produced by `pascalParser.variable`. + * @param ctx the parse tree + */ + enterVariable?: (ctx: VariableContext) => void; + /** + * Exit a parse tree produced by `pascalParser.variable`. + * @param ctx the parse tree + */ + exitVariable?: (ctx: VariableContext) => void; + + /** + * Enter a parse tree produced by `pascalParser.expression`. + * @param ctx the parse tree + */ + enterExpression?: (ctx: ExpressionContext) => void; + /** + * Exit a parse tree produced by `pascalParser.expression`. + * @param ctx the parse tree + */ + exitExpression?: (ctx: ExpressionContext) => void; + + /** + * Enter a parse tree produced by `pascalParser.relationaloperator`. + * @param ctx the parse tree + */ + enterRelationaloperator?: (ctx: RelationaloperatorContext) => void; + /** + * Exit a parse tree produced by `pascalParser.relationaloperator`. + * @param ctx the parse tree + */ + exitRelationaloperator?: (ctx: RelationaloperatorContext) => void; + + /** + * Enter a parse tree produced by `pascalParser.simpleExpression`. + * @param ctx the parse tree + */ + enterSimpleExpression?: (ctx: SimpleExpressionContext) => void; + /** + * Exit a parse tree produced by `pascalParser.simpleExpression`. + * @param ctx the parse tree + */ + exitSimpleExpression?: (ctx: SimpleExpressionContext) => void; + + /** + * Enter a parse tree produced by `pascalParser.additiveoperator`. + * @param ctx the parse tree + */ + enterAdditiveoperator?: (ctx: AdditiveoperatorContext) => void; + /** + * Exit a parse tree produced by `pascalParser.additiveoperator`. + * @param ctx the parse tree + */ + exitAdditiveoperator?: (ctx: AdditiveoperatorContext) => void; + + /** + * Enter a parse tree produced by `pascalParser.term`. + * @param ctx the parse tree + */ + enterTerm?: (ctx: TermContext) => void; + /** + * Exit a parse tree produced by `pascalParser.term`. + * @param ctx the parse tree + */ + exitTerm?: (ctx: TermContext) => void; + + /** + * Enter a parse tree produced by `pascalParser.multiplicativeoperator`. + * @param ctx the parse tree + */ + enterMultiplicativeoperator?: (ctx: MultiplicativeoperatorContext) => void; + /** + * Exit a parse tree produced by `pascalParser.multiplicativeoperator`. + * @param ctx the parse tree + */ + exitMultiplicativeoperator?: (ctx: MultiplicativeoperatorContext) => void; + + /** + * Enter a parse tree produced by `pascalParser.signedFactor`. + * @param ctx the parse tree + */ + enterSignedFactor?: (ctx: SignedFactorContext) => void; + /** + * Exit a parse tree produced by `pascalParser.signedFactor`. + * @param ctx the parse tree + */ + exitSignedFactor?: (ctx: SignedFactorContext) => void; + + /** + * Enter a parse tree produced by `pascalParser.factor`. + * @param ctx the parse tree + */ + enterFactor?: (ctx: FactorContext) => void; + /** + * Exit a parse tree produced by `pascalParser.factor`. + * @param ctx the parse tree + */ + exitFactor?: (ctx: FactorContext) => void; + + /** + * Enter a parse tree produced by `pascalParser.unsignedConstant`. + * @param ctx the parse tree + */ + enterUnsignedConstant?: (ctx: UnsignedConstantContext) => void; + /** + * Exit a parse tree produced by `pascalParser.unsignedConstant`. + * @param ctx the parse tree + */ + exitUnsignedConstant?: (ctx: UnsignedConstantContext) => void; + + /** + * Enter a parse tree produced by `pascalParser.functionDesignator`. + * @param ctx the parse tree + */ + enterFunctionDesignator?: (ctx: FunctionDesignatorContext) => void; + /** + * Exit a parse tree produced by `pascalParser.functionDesignator`. + * @param ctx the parse tree + */ + exitFunctionDesignator?: (ctx: FunctionDesignatorContext) => void; + + /** + * Enter a parse tree produced by `pascalParser.parameterList`. + * @param ctx the parse tree + */ + enterParameterList?: (ctx: ParameterListContext) => void; + /** + * Exit a parse tree produced by `pascalParser.parameterList`. + * @param ctx the parse tree + */ + exitParameterList?: (ctx: ParameterListContext) => void; + + /** + * Enter a parse tree produced by `pascalParser.set_`. + * @param ctx the parse tree + */ + enterSet_?: (ctx: Set_Context) => void; + /** + * Exit a parse tree produced by `pascalParser.set_`. + * @param ctx the parse tree + */ + exitSet_?: (ctx: Set_Context) => void; + + /** + * Enter a parse tree produced by `pascalParser.elementList`. + * @param ctx the parse tree + */ + enterElementList?: (ctx: ElementListContext) => void; + /** + * Exit a parse tree produced by `pascalParser.elementList`. + * @param ctx the parse tree + */ + exitElementList?: (ctx: ElementListContext) => void; + + /** + * Enter a parse tree produced by `pascalParser.element`. + * @param ctx the parse tree + */ + enterElement?: (ctx: ElementContext) => void; + /** + * Exit a parse tree produced by `pascalParser.element`. + * @param ctx the parse tree + */ + exitElement?: (ctx: ElementContext) => void; + + /** + * Enter a parse tree produced by `pascalParser.procedureStatement`. + * @param ctx the parse tree + */ + enterProcedureStatement?: (ctx: ProcedureStatementContext) => void; + /** + * Exit a parse tree produced by `pascalParser.procedureStatement`. + * @param ctx the parse tree + */ + exitProcedureStatement?: (ctx: ProcedureStatementContext) => void; + + /** + * Enter a parse tree produced by `pascalParser.actualParameter`. + * @param ctx the parse tree + */ + enterActualParameter?: (ctx: ActualParameterContext) => void; + /** + * Exit a parse tree produced by `pascalParser.actualParameter`. + * @param ctx the parse tree + */ + exitActualParameter?: (ctx: ActualParameterContext) => void; + + /** + * Enter a parse tree produced by `pascalParser.parameterwidth`. + * @param ctx the parse tree + */ + enterParameterwidth?: (ctx: ParameterwidthContext) => void; + /** + * Exit a parse tree produced by `pascalParser.parameterwidth`. + * @param ctx the parse tree + */ + exitParameterwidth?: (ctx: ParameterwidthContext) => void; + + /** + * Enter a parse tree produced by `pascalParser.gotoStatement`. + * @param ctx the parse tree + */ + enterGotoStatement?: (ctx: GotoStatementContext) => void; + /** + * Exit a parse tree produced by `pascalParser.gotoStatement`. + * @param ctx the parse tree + */ + exitGotoStatement?: (ctx: GotoStatementContext) => void; + + /** + * Enter a parse tree produced by `pascalParser.emptyStatement_`. + * @param ctx the parse tree + */ + enterEmptyStatement_?: (ctx: EmptyStatement_Context) => void; + /** + * Exit a parse tree produced by `pascalParser.emptyStatement_`. + * @param ctx the parse tree + */ + exitEmptyStatement_?: (ctx: EmptyStatement_Context) => void; + + /** + * Enter a parse tree produced by `pascalParser.empty_`. + * @param ctx the parse tree + */ + enterEmpty_?: (ctx: Empty_Context) => void; + /** + * Exit a parse tree produced by `pascalParser.empty_`. + * @param ctx the parse tree + */ + exitEmpty_?: (ctx: Empty_Context) => void; + + /** + * Enter a parse tree produced by `pascalParser.structuredStatement`. + * @param ctx the parse tree + */ + enterStructuredStatement?: (ctx: StructuredStatementContext) => void; + /** + * Exit a parse tree produced by `pascalParser.structuredStatement`. + * @param ctx the parse tree + */ + exitStructuredStatement?: (ctx: StructuredStatementContext) => void; + + /** + * Enter a parse tree produced by `pascalParser.compoundStatement`. + * @param ctx the parse tree + */ + enterCompoundStatement?: (ctx: CompoundStatementContext) => void; + /** + * Exit a parse tree produced by `pascalParser.compoundStatement`. + * @param ctx the parse tree + */ + exitCompoundStatement?: (ctx: CompoundStatementContext) => void; + + /** + * Enter a parse tree produced by `pascalParser.statements`. + * @param ctx the parse tree + */ + enterStatements?: (ctx: StatementsContext) => void; + /** + * Exit a parse tree produced by `pascalParser.statements`. + * @param ctx the parse tree + */ + exitStatements?: (ctx: StatementsContext) => void; + + /** + * Enter a parse tree produced by `pascalParser.conditionalStatement`. + * @param ctx the parse tree + */ + enterConditionalStatement?: (ctx: ConditionalStatementContext) => void; + /** + * Exit a parse tree produced by `pascalParser.conditionalStatement`. + * @param ctx the parse tree + */ + exitConditionalStatement?: (ctx: ConditionalStatementContext) => void; + + /** + * Enter a parse tree produced by `pascalParser.ifStatement`. + * @param ctx the parse tree + */ + enterIfStatement?: (ctx: IfStatementContext) => void; + /** + * Exit a parse tree produced by `pascalParser.ifStatement`. + * @param ctx the parse tree + */ + exitIfStatement?: (ctx: IfStatementContext) => void; + + /** + * Enter a parse tree produced by `pascalParser.caseStatement`. + * @param ctx the parse tree + */ + enterCaseStatement?: (ctx: CaseStatementContext) => void; + /** + * Exit a parse tree produced by `pascalParser.caseStatement`. + * @param ctx the parse tree + */ + exitCaseStatement?: (ctx: CaseStatementContext) => void; + + /** + * Enter a parse tree produced by `pascalParser.caseListElement`. + * @param ctx the parse tree + */ + enterCaseListElement?: (ctx: CaseListElementContext) => void; + /** + * Exit a parse tree produced by `pascalParser.caseListElement`. + * @param ctx the parse tree + */ + exitCaseListElement?: (ctx: CaseListElementContext) => void; + + /** + * Enter a parse tree produced by `pascalParser.repetetiveStatement`. + * @param ctx the parse tree + */ + enterRepetetiveStatement?: (ctx: RepetetiveStatementContext) => void; + /** + * Exit a parse tree produced by `pascalParser.repetetiveStatement`. + * @param ctx the parse tree + */ + exitRepetetiveStatement?: (ctx: RepetetiveStatementContext) => void; + + /** + * Enter a parse tree produced by `pascalParser.whileStatement`. + * @param ctx the parse tree + */ + enterWhileStatement?: (ctx: WhileStatementContext) => void; + /** + * Exit a parse tree produced by `pascalParser.whileStatement`. + * @param ctx the parse tree + */ + exitWhileStatement?: (ctx: WhileStatementContext) => void; + + /** + * Enter a parse tree produced by `pascalParser.repeatStatement`. + * @param ctx the parse tree + */ + enterRepeatStatement?: (ctx: RepeatStatementContext) => void; + /** + * Exit a parse tree produced by `pascalParser.repeatStatement`. + * @param ctx the parse tree + */ + exitRepeatStatement?: (ctx: RepeatStatementContext) => void; + + /** + * Enter a parse tree produced by `pascalParser.forStatement`. + * @param ctx the parse tree + */ + enterForStatement?: (ctx: ForStatementContext) => void; + /** + * Exit a parse tree produced by `pascalParser.forStatement`. + * @param ctx the parse tree + */ + exitForStatement?: (ctx: ForStatementContext) => void; + + /** + * Enter a parse tree produced by `pascalParser.forList`. + * @param ctx the parse tree + */ + enterForList?: (ctx: ForListContext) => void; + /** + * Exit a parse tree produced by `pascalParser.forList`. + * @param ctx the parse tree + */ + exitForList?: (ctx: ForListContext) => void; + + /** + * Enter a parse tree produced by `pascalParser.initialValue`. + * @param ctx the parse tree + */ + enterInitialValue?: (ctx: InitialValueContext) => void; + /** + * Exit a parse tree produced by `pascalParser.initialValue`. + * @param ctx the parse tree + */ + exitInitialValue?: (ctx: InitialValueContext) => void; + + /** + * Enter a parse tree produced by `pascalParser.finalValue`. + * @param ctx the parse tree + */ + enterFinalValue?: (ctx: FinalValueContext) => void; + /** + * Exit a parse tree produced by `pascalParser.finalValue`. + * @param ctx the parse tree + */ + exitFinalValue?: (ctx: FinalValueContext) => void; + + /** + * Enter a parse tree produced by `pascalParser.withStatement`. + * @param ctx the parse tree + */ + enterWithStatement?: (ctx: WithStatementContext) => void; + /** + * Exit a parse tree produced by `pascalParser.withStatement`. + * @param ctx the parse tree + */ + exitWithStatement?: (ctx: WithStatementContext) => void; + + /** + * Enter a parse tree produced by `pascalParser.recordVariableList`. + * @param ctx the parse tree + */ + enterRecordVariableList?: (ctx: RecordVariableListContext) => void; + /** + * Exit a parse tree produced by `pascalParser.recordVariableList`. + * @param ctx the parse tree + */ + exitRecordVariableList?: (ctx: RecordVariableListContext) => void; +} + diff --git a/examples/Example - Pascal Symbol Table/src/pascalParser.ts b/examples/Example - Pascal Symbol Table/src/pascalParser.ts new file mode 100644 index 0000000..05958f6 --- /dev/null +++ b/examples/Example - Pascal Symbol Table/src/pascalParser.ts @@ -0,0 +1,8588 @@ +// Generated from ./pascal.g4 by ANTLR 4.9.0-SNAPSHOT + + +import { ATN } from "antlr4ts/atn/ATN"; +import { ATNDeserializer } from "antlr4ts/atn/ATNDeserializer"; +import { FailedPredicateException } from "antlr4ts/FailedPredicateException"; +import { NotNull } from "antlr4ts/Decorators"; +import { NoViableAltException } from "antlr4ts/NoViableAltException"; +import { Override } from "antlr4ts/Decorators"; +import { Parser } from "antlr4ts/Parser"; +import { ParserRuleContext } from "antlr4ts/ParserRuleContext"; +import { ParserATNSimulator } from "antlr4ts/atn/ParserATNSimulator"; +import { ParseTreeListener } from "antlr4ts/tree/ParseTreeListener"; +import { ParseTreeVisitor } from "antlr4ts/tree/ParseTreeVisitor"; +import { RecognitionException } from "antlr4ts/RecognitionException"; +import { RuleContext } from "antlr4ts/RuleContext"; +//import { RuleVersion } from "antlr4ts/RuleVersion"; +import { TerminalNode } from "antlr4ts/tree/TerminalNode"; +import { Token } from "antlr4ts/Token"; +import { TokenStream } from "antlr4ts/TokenStream"; +import { Vocabulary } from "antlr4ts/Vocabulary"; +import { VocabularyImpl } from "antlr4ts/VocabularyImpl"; + +import * as Utils from "antlr4ts/misc/Utils"; + +import { pascalListener } from "./pascalListener"; +import { pascalVisitor } from "./pascalVisitor"; + + +export class pascalParser extends Parser { + public static readonly AND = 1; + public static readonly ARRAY = 2; + public static readonly BEGIN = 3; + public static readonly BOOLEAN = 4; + public static readonly CASE = 5; + public static readonly CHAR = 6; + public static readonly CHR = 7; + public static readonly CONST = 8; + public static readonly DIV = 9; + public static readonly DO = 10; + public static readonly DOWNTO = 11; + public static readonly ELSE = 12; + public static readonly END = 13; + public static readonly FILE = 14; + public static readonly FOR = 15; + public static readonly FUNCTION = 16; + public static readonly GOTO = 17; + public static readonly IF = 18; + public static readonly IN = 19; + public static readonly INTEGER = 20; + public static readonly LABEL = 21; + public static readonly MOD = 22; + public static readonly NIL = 23; + public static readonly NOT = 24; + public static readonly OF = 25; + public static readonly OR = 26; + public static readonly PACKED = 27; + public static readonly PROCEDURE = 28; + public static readonly PROGRAM = 29; + public static readonly REAL = 30; + public static readonly RECORD = 31; + public static readonly REPEAT = 32; + public static readonly SET = 33; + public static readonly THEN = 34; + public static readonly TO = 35; + public static readonly TYPE = 36; + public static readonly UNTIL = 37; + public static readonly VAR = 38; + public static readonly WHILE = 39; + public static readonly WITH = 40; + public static readonly PLUS = 41; + public static readonly MINUS = 42; + public static readonly STAR = 43; + public static readonly SLASH = 44; + public static readonly ASSIGN = 45; + public static readonly COMMA = 46; + public static readonly SEMI = 47; + public static readonly COLON = 48; + public static readonly EQUAL = 49; + public static readonly NOT_EQUAL = 50; + public static readonly LT = 51; + public static readonly LE = 52; + public static readonly GE = 53; + public static readonly GT = 54; + public static readonly LPAREN = 55; + public static readonly RPAREN = 56; + public static readonly LBRACK = 57; + public static readonly LBRACK2 = 58; + public static readonly RBRACK = 59; + public static readonly RBRACK2 = 60; + public static readonly POINTER = 61; + public static readonly AT = 62; + public static readonly DOT = 63; + public static readonly DOTDOT = 64; + public static readonly LCURLY = 65; + public static readonly RCURLY = 66; + public static readonly UNIT = 67; + public static readonly INTERFACE = 68; + public static readonly USES = 69; + public static readonly STRING = 70; + public static readonly IMPLEMENTATION = 71; + public static readonly TRUE = 72; + public static readonly FALSE = 73; + public static readonly WS = 74; + public static readonly COMMENT_1 = 75; + public static readonly COMMENT_2 = 76; + public static readonly IDENT = 77; + public static readonly STRING_LITERAL = 78; + public static readonly NUM_INT = 79; + public static readonly NUM_REAL = 80; + public static readonly RULE_start = 0; + public static readonly RULE_program = 1; + public static readonly RULE_programHeading = 2; + public static readonly RULE_identifier = 3; + public static readonly RULE_block = 4; + public static readonly RULE_usesUnitsPart = 5; + public static readonly RULE_labelDeclarationPart = 6; + public static readonly RULE_label = 7; + public static readonly RULE_constantDefinitionPart = 8; + public static readonly RULE_constantDefinition = 9; + public static readonly RULE_constantChr = 10; + public static readonly RULE_constant = 11; + public static readonly RULE_unsignedNumber = 12; + public static readonly RULE_unsignedInteger = 13; + public static readonly RULE_unsignedReal = 14; + public static readonly RULE_sign = 15; + public static readonly RULE_bool_ = 16; + public static readonly RULE_string = 17; + public static readonly RULE_typeDefinitionPart = 18; + public static readonly RULE_typeDefinition = 19; + public static readonly RULE_functionType = 20; + public static readonly RULE_procedureType = 21; + public static readonly RULE_type_ = 22; + public static readonly RULE_simpleType = 23; + public static readonly RULE_scalarType = 24; + public static readonly RULE_subrangeType = 25; + public static readonly RULE_typeIdentifier = 26; + public static readonly RULE_structuredType = 27; + public static readonly RULE_unpackedStructuredType = 28; + public static readonly RULE_stringtype = 29; + public static readonly RULE_arrayType = 30; + public static readonly RULE_typeList = 31; + public static readonly RULE_indexType = 32; + public static readonly RULE_componentType = 33; + public static readonly RULE_recordType = 34; + public static readonly RULE_fieldList = 35; + public static readonly RULE_fixedPart = 36; + public static readonly RULE_recordSection = 37; + public static readonly RULE_variantPart = 38; + public static readonly RULE_tag = 39; + public static readonly RULE_variant = 40; + public static readonly RULE_setType = 41; + public static readonly RULE_baseType = 42; + public static readonly RULE_fileType = 43; + public static readonly RULE_pointerType = 44; + public static readonly RULE_variableDeclarationPart = 45; + public static readonly RULE_variableDeclaration = 46; + public static readonly RULE_procedureAndFunctionDeclarationPart = 47; + public static readonly RULE_procedureOrFunctionDeclaration = 48; + public static readonly RULE_procedureDeclaration = 49; + public static readonly RULE_formalParameterList = 50; + public static readonly RULE_formalParameterSection = 51; + public static readonly RULE_parameterGroup = 52; + public static readonly RULE_identifierList = 53; + public static readonly RULE_constList = 54; + public static readonly RULE_functionDeclaration = 55; + public static readonly RULE_resultType = 56; + public static readonly RULE_statement = 57; + public static readonly RULE_unlabelledStatement = 58; + public static readonly RULE_simpleStatement = 59; + public static readonly RULE_assignmentStatement = 60; + public static readonly RULE_variable = 61; + public static readonly RULE_expression = 62; + public static readonly RULE_relationaloperator = 63; + public static readonly RULE_simpleExpression = 64; + public static readonly RULE_additiveoperator = 65; + public static readonly RULE_term = 66; + public static readonly RULE_multiplicativeoperator = 67; + public static readonly RULE_signedFactor = 68; + public static readonly RULE_factor = 69; + public static readonly RULE_unsignedConstant = 70; + public static readonly RULE_functionDesignator = 71; + public static readonly RULE_parameterList = 72; + public static readonly RULE_set_ = 73; + public static readonly RULE_elementList = 74; + public static readonly RULE_element = 75; + public static readonly RULE_procedureStatement = 76; + public static readonly RULE_actualParameter = 77; + public static readonly RULE_parameterwidth = 78; + public static readonly RULE_gotoStatement = 79; + public static readonly RULE_emptyStatement_ = 80; + public static readonly RULE_empty_ = 81; + public static readonly RULE_structuredStatement = 82; + public static readonly RULE_compoundStatement = 83; + public static readonly RULE_statements = 84; + public static readonly RULE_conditionalStatement = 85; + public static readonly RULE_ifStatement = 86; + public static readonly RULE_caseStatement = 87; + public static readonly RULE_caseListElement = 88; + public static readonly RULE_repetetiveStatement = 89; + public static readonly RULE_whileStatement = 90; + public static readonly RULE_repeatStatement = 91; + public static readonly RULE_forStatement = 92; + public static readonly RULE_forList = 93; + public static readonly RULE_initialValue = 94; + public static readonly RULE_finalValue = 95; + public static readonly RULE_withStatement = 96; + public static readonly RULE_recordVariableList = 97; + // tslint:disable:no-trailing-whitespace + public static readonly ruleNames: string[] = [ + "start", "program", "programHeading", "identifier", "block", "usesUnitsPart", + "labelDeclarationPart", "label", "constantDefinitionPart", "constantDefinition", + "constantChr", "constant", "unsignedNumber", "unsignedInteger", "unsignedReal", + "sign", "bool_", "string", "typeDefinitionPart", "typeDefinition", "functionType", + "procedureType", "type_", "simpleType", "scalarType", "subrangeType", + "typeIdentifier", "structuredType", "unpackedStructuredType", "stringtype", + "arrayType", "typeList", "indexType", "componentType", "recordType", "fieldList", + "fixedPart", "recordSection", "variantPart", "tag", "variant", "setType", + "baseType", "fileType", "pointerType", "variableDeclarationPart", "variableDeclaration", + "procedureAndFunctionDeclarationPart", "procedureOrFunctionDeclaration", + "procedureDeclaration", "formalParameterList", "formalParameterSection", + "parameterGroup", "identifierList", "constList", "functionDeclaration", + "resultType", "statement", "unlabelledStatement", "simpleStatement", "assignmentStatement", + "variable", "expression", "relationaloperator", "simpleExpression", "additiveoperator", + "term", "multiplicativeoperator", "signedFactor", "factor", "unsignedConstant", + "functionDesignator", "parameterList", "set_", "elementList", "element", + "procedureStatement", "actualParameter", "parameterwidth", "gotoStatement", + "emptyStatement_", "empty_", "structuredStatement", "compoundStatement", + "statements", "conditionalStatement", "ifStatement", "caseStatement", + "caseListElement", "repetetiveStatement", "whileStatement", "repeatStatement", + "forStatement", "forList", "initialValue", "finalValue", "withStatement", + "recordVariableList", + ]; + + private static readonly _LITERAL_NAMES: Array = [ + undefined, "'AND'", "'ARRAY'", "'BEGIN'", "'BOOLEAN'", "'CASE'", "'CHAR'", + "'CHR'", "'CONST'", "'DIV'", "'DO'", "'DOWNTO'", "'ELSE'", "'END'", "'FILE'", + "'FOR'", "'FUNCTION'", "'GOTO'", "'IF'", "'IN'", "'INTEGER'", "'LABEL'", + "'MOD'", "'NIL'", "'NOT'", "'OF'", "'OR'", "'PACKED'", "'PROCEDURE'", + "'PROGRAM'", "'REAL'", "'RECORD'", "'REPEAT'", "'SET'", "'THEN'", "'TO'", + "'TYPE'", "'UNTIL'", "'VAR'", "'WHILE'", "'WITH'", "'+'", "'-'", "'*'", + "'/'", "':='", "','", "';'", "':'", "'='", "'<>'", "'<'", "'<='", "'>='", + "'>'", "'('", "')'", "'['", "'(.'", "']'", "'.)'", "'^'", "'@'", "'.'", + "'..'", "'{'", "'}'", "'UNIT'", "'INTERFACE'", "'USES'", "'STRING'", "'IMPLEMENTATION'", + "'TRUE'", "'FALSE'", + ]; + private static readonly _SYMBOLIC_NAMES: Array = [ + undefined, "AND", "ARRAY", "BEGIN", "BOOLEAN", "CASE", "CHAR", "CHR", + "CONST", "DIV", "DO", "DOWNTO", "ELSE", "END", "FILE", "FOR", "FUNCTION", + "GOTO", "IF", "IN", "INTEGER", "LABEL", "MOD", "NIL", "NOT", "OF", "OR", + "PACKED", "PROCEDURE", "PROGRAM", "REAL", "RECORD", "REPEAT", "SET", "THEN", + "TO", "TYPE", "UNTIL", "VAR", "WHILE", "WITH", "PLUS", "MINUS", "STAR", + "SLASH", "ASSIGN", "COMMA", "SEMI", "COLON", "EQUAL", "NOT_EQUAL", "LT", + "LE", "GE", "GT", "LPAREN", "RPAREN", "LBRACK", "LBRACK2", "RBRACK", "RBRACK2", + "POINTER", "AT", "DOT", "DOTDOT", "LCURLY", "RCURLY", "UNIT", "INTERFACE", + "USES", "STRING", "IMPLEMENTATION", "TRUE", "FALSE", "WS", "COMMENT_1", + "COMMENT_2", "IDENT", "STRING_LITERAL", "NUM_INT", "NUM_REAL", + ]; + public static readonly VOCABULARY: Vocabulary = new VocabularyImpl(pascalParser._LITERAL_NAMES, pascalParser._SYMBOLIC_NAMES, []); + + // @Override + // @NotNull + public get vocabulary(): Vocabulary { + return pascalParser.VOCABULARY; + } + // tslint:enable:no-trailing-whitespace + + // @Override + public get grammarFileName(): string { return "pascal.g4"; } + + // @Override + public get ruleNames(): string[] { return pascalParser.ruleNames; } + + // @Override + public get serializedATN(): string { return pascalParser._serializedATN; } + + protected createFailedPredicateException(predicate?: string, message?: string): FailedPredicateException { + return new FailedPredicateException(this, predicate, message); + } + + constructor(input: TokenStream) { + super(input); + this._interp = new ParserATNSimulator(pascalParser._ATN, this); + } + // @RuleVersion(0) + public start(): StartContext { + let _localctx: StartContext = new StartContext(this._ctx, this.state); + this.enterRule(_localctx, 0, pascalParser.RULE_start); + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 196; + this.program(); + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public program(): ProgramContext { + let _localctx: ProgramContext = new ProgramContext(this._ctx, this.state); + this.enterRule(_localctx, 2, pascalParser.RULE_program); + let _la: number; + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 198; + this.programHeading(); + this.state = 200; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (_la === pascalParser.INTERFACE) { + { + this.state = 199; + this.match(pascalParser.INTERFACE); + } + } + + this.state = 202; + this.block(); + this.state = 203; + this.match(pascalParser.DOT); + this.state = 204; + this.match(pascalParser.EOF); + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public programHeading(): ProgramHeadingContext { + let _localctx: ProgramHeadingContext = new ProgramHeadingContext(this._ctx, this.state); + this.enterRule(_localctx, 4, pascalParser.RULE_programHeading); + let _la: number; + try { + this.state = 220; + this._errHandler.sync(this); + switch (this._input.LA(1)) { + case pascalParser.PROGRAM: + this.enterOuterAlt(_localctx, 1); + { + this.state = 206; + this.match(pascalParser.PROGRAM); + this.state = 207; + this.identifier(); + this.state = 212; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (_la === pascalParser.LPAREN) { + { + this.state = 208; + this.match(pascalParser.LPAREN); + this.state = 209; + this.identifierList(); + this.state = 210; + this.match(pascalParser.RPAREN); + } + } + + this.state = 214; + this.match(pascalParser.SEMI); + } + break; + case pascalParser.UNIT: + this.enterOuterAlt(_localctx, 2); + { + this.state = 216; + this.match(pascalParser.UNIT); + this.state = 217; + this.identifier(); + this.state = 218; + this.match(pascalParser.SEMI); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public identifier(): IdentifierContext { + let _localctx: IdentifierContext = new IdentifierContext(this._ctx, this.state); + this.enterRule(_localctx, 6, pascalParser.RULE_identifier); + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 222; + this.match(pascalParser.IDENT); + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public block(): BlockContext { + let _localctx: BlockContext = new BlockContext(this._ctx, this.state); + this.enterRule(_localctx, 8, pascalParser.RULE_block); + let _la: number; + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 233; + this._errHandler.sync(this); + _la = this._input.LA(1); + while (((((_la - 8)) & ~0x1F) === 0 && ((1 << (_la - 8)) & ((1 << (pascalParser.CONST - 8)) | (1 << (pascalParser.FUNCTION - 8)) | (1 << (pascalParser.LABEL - 8)) | (1 << (pascalParser.PROCEDURE - 8)) | (1 << (pascalParser.TYPE - 8)) | (1 << (pascalParser.VAR - 8)))) !== 0) || _la === pascalParser.USES || _la === pascalParser.IMPLEMENTATION) { + { + this.state = 231; + this._errHandler.sync(this); + switch (this._input.LA(1)) { + case pascalParser.LABEL: + { + this.state = 224; + this.labelDeclarationPart(); + } + break; + case pascalParser.CONST: + { + this.state = 225; + this.constantDefinitionPart(); + } + break; + case pascalParser.TYPE: + { + this.state = 226; + this.typeDefinitionPart(); + } + break; + case pascalParser.VAR: + { + this.state = 227; + this.variableDeclarationPart(); + } + break; + case pascalParser.FUNCTION: + case pascalParser.PROCEDURE: + { + this.state = 228; + this.procedureAndFunctionDeclarationPart(); + } + break; + case pascalParser.USES: + { + this.state = 229; + this.usesUnitsPart(); + } + break; + case pascalParser.IMPLEMENTATION: + { + this.state = 230; + this.match(pascalParser.IMPLEMENTATION); + } + break; + default: + throw new NoViableAltException(this); + } + } + this.state = 235; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 236; + this.compoundStatement(); + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public usesUnitsPart(): UsesUnitsPartContext { + let _localctx: UsesUnitsPartContext = new UsesUnitsPartContext(this._ctx, this.state); + this.enterRule(_localctx, 10, pascalParser.RULE_usesUnitsPart); + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 238; + this.match(pascalParser.USES); + this.state = 239; + this.identifierList(); + this.state = 240; + this.match(pascalParser.SEMI); + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public labelDeclarationPart(): LabelDeclarationPartContext { + let _localctx: LabelDeclarationPartContext = new LabelDeclarationPartContext(this._ctx, this.state); + this.enterRule(_localctx, 12, pascalParser.RULE_labelDeclarationPart); + let _la: number; + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 242; + this.match(pascalParser.LABEL); + this.state = 243; + this.label(); + this.state = 248; + this._errHandler.sync(this); + _la = this._input.LA(1); + while (_la === pascalParser.COMMA) { + { + { + this.state = 244; + this.match(pascalParser.COMMA); + this.state = 245; + this.label(); + } + } + this.state = 250; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 251; + this.match(pascalParser.SEMI); + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public label(): LabelContext { + let _localctx: LabelContext = new LabelContext(this._ctx, this.state); + this.enterRule(_localctx, 14, pascalParser.RULE_label); + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 253; + this.unsignedInteger(); + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public constantDefinitionPart(): ConstantDefinitionPartContext { + let _localctx: ConstantDefinitionPartContext = new ConstantDefinitionPartContext(this._ctx, this.state); + this.enterRule(_localctx, 16, pascalParser.RULE_constantDefinitionPart); + let _la: number; + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 255; + this.match(pascalParser.CONST); + this.state = 259; + this._errHandler.sync(this); + _la = this._input.LA(1); + do { + { + { + this.state = 256; + this.constantDefinition(); + this.state = 257; + this.match(pascalParser.SEMI); + } + } + this.state = 261; + this._errHandler.sync(this); + _la = this._input.LA(1); + } while (_la === pascalParser.IDENT); + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public constantDefinition(): ConstantDefinitionContext { + let _localctx: ConstantDefinitionContext = new ConstantDefinitionContext(this._ctx, this.state); + this.enterRule(_localctx, 18, pascalParser.RULE_constantDefinition); + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 263; + this.identifier(); + this.state = 264; + this.match(pascalParser.EQUAL); + this.state = 265; + this.constant(); + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public constantChr(): ConstantChrContext { + let _localctx: ConstantChrContext = new ConstantChrContext(this._ctx, this.state); + this.enterRule(_localctx, 20, pascalParser.RULE_constantChr); + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 267; + this.match(pascalParser.CHR); + this.state = 268; + this.match(pascalParser.LPAREN); + this.state = 269; + this.unsignedInteger(); + this.state = 270; + this.match(pascalParser.RPAREN); + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public constant(): ConstantContext { + let _localctx: ConstantContext = new ConstantContext(this._ctx, this.state); + this.enterRule(_localctx, 22, pascalParser.RULE_constant); + try { + this.state = 282; + this._errHandler.sync(this); + switch ( this.interpreter.adaptivePredict(this._input, 7, this._ctx) ) { + case 1: + this.enterOuterAlt(_localctx, 1); + { + this.state = 272; + this.unsignedNumber(); + } + break; + + case 2: + this.enterOuterAlt(_localctx, 2); + { + this.state = 273; + this.sign(); + this.state = 274; + this.unsignedNumber(); + } + break; + + case 3: + this.enterOuterAlt(_localctx, 3); + { + this.state = 276; + this.identifier(); + } + break; + + case 4: + this.enterOuterAlt(_localctx, 4); + { + this.state = 277; + this.sign(); + this.state = 278; + this.identifier(); + } + break; + + case 5: + this.enterOuterAlt(_localctx, 5); + { + this.state = 280; + this.string(); + } + break; + + case 6: + this.enterOuterAlt(_localctx, 6); + { + this.state = 281; + this.constantChr(); + } + break; + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public unsignedNumber(): UnsignedNumberContext { + let _localctx: UnsignedNumberContext = new UnsignedNumberContext(this._ctx, this.state); + this.enterRule(_localctx, 24, pascalParser.RULE_unsignedNumber); + try { + this.state = 286; + this._errHandler.sync(this); + switch (this._input.LA(1)) { + case pascalParser.NUM_INT: + this.enterOuterAlt(_localctx, 1); + { + this.state = 284; + this.unsignedInteger(); + } + break; + case pascalParser.NUM_REAL: + this.enterOuterAlt(_localctx, 2); + { + this.state = 285; + this.unsignedReal(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public unsignedInteger(): UnsignedIntegerContext { + let _localctx: UnsignedIntegerContext = new UnsignedIntegerContext(this._ctx, this.state); + this.enterRule(_localctx, 26, pascalParser.RULE_unsignedInteger); + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 288; + this.match(pascalParser.NUM_INT); + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public unsignedReal(): UnsignedRealContext { + let _localctx: UnsignedRealContext = new UnsignedRealContext(this._ctx, this.state); + this.enterRule(_localctx, 28, pascalParser.RULE_unsignedReal); + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 290; + this.match(pascalParser.NUM_REAL); + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public sign(): SignContext { + let _localctx: SignContext = new SignContext(this._ctx, this.state); + this.enterRule(_localctx, 30, pascalParser.RULE_sign); + let _la: number; + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 292; + _la = this._input.LA(1); + if (!(_la === pascalParser.PLUS || _la === pascalParser.MINUS)) { + this._errHandler.recoverInline(this); + } else { + if (this._input.LA(1) === Token.EOF) { + this.matchedEOF = true; + } + + this._errHandler.reportMatch(this); + this.consume(); + } + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public bool_(): Bool_Context { + let _localctx: Bool_Context = new Bool_Context(this._ctx, this.state); + this.enterRule(_localctx, 32, pascalParser.RULE_bool_); + let _la: number; + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 294; + _la = this._input.LA(1); + if (!(_la === pascalParser.TRUE || _la === pascalParser.FALSE)) { + this._errHandler.recoverInline(this); + } else { + if (this._input.LA(1) === Token.EOF) { + this.matchedEOF = true; + } + + this._errHandler.reportMatch(this); + this.consume(); + } + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public string(): StringContext { + let _localctx: StringContext = new StringContext(this._ctx, this.state); + this.enterRule(_localctx, 34, pascalParser.RULE_string); + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 296; + this.match(pascalParser.STRING_LITERAL); + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public typeDefinitionPart(): TypeDefinitionPartContext { + let _localctx: TypeDefinitionPartContext = new TypeDefinitionPartContext(this._ctx, this.state); + this.enterRule(_localctx, 36, pascalParser.RULE_typeDefinitionPart); + let _la: number; + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 298; + this.match(pascalParser.TYPE); + this.state = 302; + this._errHandler.sync(this); + _la = this._input.LA(1); + do { + { + { + this.state = 299; + this.typeDefinition(); + this.state = 300; + this.match(pascalParser.SEMI); + } + } + this.state = 304; + this._errHandler.sync(this); + _la = this._input.LA(1); + } while (_la === pascalParser.IDENT); + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public typeDefinition(): TypeDefinitionContext { + let _localctx: TypeDefinitionContext = new TypeDefinitionContext(this._ctx, this.state); + this.enterRule(_localctx, 38, pascalParser.RULE_typeDefinition); + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 306; + this.identifier(); + this.state = 307; + this.match(pascalParser.EQUAL); + this.state = 311; + this._errHandler.sync(this); + switch (this._input.LA(1)) { + case pascalParser.ARRAY: + case pascalParser.BOOLEAN: + case pascalParser.CHAR: + case pascalParser.CHR: + case pascalParser.FILE: + case pascalParser.INTEGER: + case pascalParser.PACKED: + case pascalParser.REAL: + case pascalParser.RECORD: + case pascalParser.SET: + case pascalParser.PLUS: + case pascalParser.MINUS: + case pascalParser.LPAREN: + case pascalParser.POINTER: + case pascalParser.STRING: + case pascalParser.IDENT: + case pascalParser.STRING_LITERAL: + case pascalParser.NUM_INT: + case pascalParser.NUM_REAL: + { + this.state = 308; + this.type_(); + } + break; + case pascalParser.FUNCTION: + { + this.state = 309; + this.functionType(); + } + break; + case pascalParser.PROCEDURE: + { + this.state = 310; + this.procedureType(); + } + break; + default: + throw new NoViableAltException(this); + } + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public functionType(): FunctionTypeContext { + let _localctx: FunctionTypeContext = new FunctionTypeContext(this._ctx, this.state); + this.enterRule(_localctx, 40, pascalParser.RULE_functionType); + let _la: number; + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 313; + this.match(pascalParser.FUNCTION); + this.state = 315; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (_la === pascalParser.LPAREN) { + { + this.state = 314; + this.formalParameterList(); + } + } + + this.state = 317; + this.match(pascalParser.COLON); + this.state = 318; + this.resultType(); + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public procedureType(): ProcedureTypeContext { + let _localctx: ProcedureTypeContext = new ProcedureTypeContext(this._ctx, this.state); + this.enterRule(_localctx, 42, pascalParser.RULE_procedureType); + let _la: number; + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 320; + this.match(pascalParser.PROCEDURE); + this.state = 322; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (_la === pascalParser.LPAREN) { + { + this.state = 321; + this.formalParameterList(); + } + } + + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public type_(): Type_Context { + let _localctx: Type_Context = new Type_Context(this._ctx, this.state); + this.enterRule(_localctx, 44, pascalParser.RULE_type_); + try { + this.state = 327; + this._errHandler.sync(this); + switch (this._input.LA(1)) { + case pascalParser.BOOLEAN: + case pascalParser.CHAR: + case pascalParser.CHR: + case pascalParser.INTEGER: + case pascalParser.REAL: + case pascalParser.PLUS: + case pascalParser.MINUS: + case pascalParser.LPAREN: + case pascalParser.STRING: + case pascalParser.IDENT: + case pascalParser.STRING_LITERAL: + case pascalParser.NUM_INT: + case pascalParser.NUM_REAL: + this.enterOuterAlt(_localctx, 1); + { + this.state = 324; + this.simpleType(); + } + break; + case pascalParser.ARRAY: + case pascalParser.FILE: + case pascalParser.PACKED: + case pascalParser.RECORD: + case pascalParser.SET: + this.enterOuterAlt(_localctx, 2); + { + this.state = 325; + this.structuredType(); + } + break; + case pascalParser.POINTER: + this.enterOuterAlt(_localctx, 3); + { + this.state = 326; + this.pointerType(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public simpleType(): SimpleTypeContext { + let _localctx: SimpleTypeContext = new SimpleTypeContext(this._ctx, this.state); + this.enterRule(_localctx, 46, pascalParser.RULE_simpleType); + try { + this.state = 333; + this._errHandler.sync(this); + switch ( this.interpreter.adaptivePredict(this._input, 14, this._ctx) ) { + case 1: + this.enterOuterAlt(_localctx, 1); + { + this.state = 329; + this.scalarType(); + } + break; + + case 2: + this.enterOuterAlt(_localctx, 2); + { + this.state = 330; + this.subrangeType(); + } + break; + + case 3: + this.enterOuterAlt(_localctx, 3); + { + this.state = 331; + this.typeIdentifier(); + } + break; + + case 4: + this.enterOuterAlt(_localctx, 4); + { + this.state = 332; + this.stringtype(); + } + break; + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public scalarType(): ScalarTypeContext { + let _localctx: ScalarTypeContext = new ScalarTypeContext(this._ctx, this.state); + this.enterRule(_localctx, 48, pascalParser.RULE_scalarType); + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 335; + this.match(pascalParser.LPAREN); + this.state = 336; + this.identifierList(); + this.state = 337; + this.match(pascalParser.RPAREN); + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public subrangeType(): SubrangeTypeContext { + let _localctx: SubrangeTypeContext = new SubrangeTypeContext(this._ctx, this.state); + this.enterRule(_localctx, 50, pascalParser.RULE_subrangeType); + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 339; + this.constant(); + this.state = 340; + this.match(pascalParser.DOTDOT); + this.state = 341; + this.constant(); + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public typeIdentifier(): TypeIdentifierContext { + let _localctx: TypeIdentifierContext = new TypeIdentifierContext(this._ctx, this.state); + this.enterRule(_localctx, 52, pascalParser.RULE_typeIdentifier); + let _la: number; + try { + this.state = 345; + this._errHandler.sync(this); + switch (this._input.LA(1)) { + case pascalParser.IDENT: + this.enterOuterAlt(_localctx, 1); + { + this.state = 343; + this.identifier(); + } + break; + case pascalParser.BOOLEAN: + case pascalParser.CHAR: + case pascalParser.INTEGER: + case pascalParser.REAL: + case pascalParser.STRING: + this.enterOuterAlt(_localctx, 2); + { + this.state = 344; + _la = this._input.LA(1); + if (!((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << pascalParser.BOOLEAN) | (1 << pascalParser.CHAR) | (1 << pascalParser.INTEGER) | (1 << pascalParser.REAL))) !== 0) || _la === pascalParser.STRING)) { + this._errHandler.recoverInline(this); + } else { + if (this._input.LA(1) === Token.EOF) { + this.matchedEOF = true; + } + + this._errHandler.reportMatch(this); + this.consume(); + } + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public structuredType(): StructuredTypeContext { + let _localctx: StructuredTypeContext = new StructuredTypeContext(this._ctx, this.state); + this.enterRule(_localctx, 54, pascalParser.RULE_structuredType); + try { + this.state = 350; + this._errHandler.sync(this); + switch (this._input.LA(1)) { + case pascalParser.PACKED: + this.enterOuterAlt(_localctx, 1); + { + this.state = 347; + this.match(pascalParser.PACKED); + this.state = 348; + this.unpackedStructuredType(); + } + break; + case pascalParser.ARRAY: + case pascalParser.FILE: + case pascalParser.RECORD: + case pascalParser.SET: + this.enterOuterAlt(_localctx, 2); + { + this.state = 349; + this.unpackedStructuredType(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public unpackedStructuredType(): UnpackedStructuredTypeContext { + let _localctx: UnpackedStructuredTypeContext = new UnpackedStructuredTypeContext(this._ctx, this.state); + this.enterRule(_localctx, 56, pascalParser.RULE_unpackedStructuredType); + try { + this.state = 356; + this._errHandler.sync(this); + switch (this._input.LA(1)) { + case pascalParser.ARRAY: + this.enterOuterAlt(_localctx, 1); + { + this.state = 352; + this.arrayType(); + } + break; + case pascalParser.RECORD: + this.enterOuterAlt(_localctx, 2); + { + this.state = 353; + this.recordType(); + } + break; + case pascalParser.SET: + this.enterOuterAlt(_localctx, 3); + { + this.state = 354; + this.setType(); + } + break; + case pascalParser.FILE: + this.enterOuterAlt(_localctx, 4); + { + this.state = 355; + this.fileType(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public stringtype(): StringtypeContext { + let _localctx: StringtypeContext = new StringtypeContext(this._ctx, this.state); + this.enterRule(_localctx, 58, pascalParser.RULE_stringtype); + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 358; + this.match(pascalParser.STRING); + this.state = 359; + this.match(pascalParser.LBRACK); + this.state = 362; + this._errHandler.sync(this); + switch (this._input.LA(1)) { + case pascalParser.IDENT: + { + this.state = 360; + this.identifier(); + } + break; + case pascalParser.NUM_INT: + case pascalParser.NUM_REAL: + { + this.state = 361; + this.unsignedNumber(); + } + break; + default: + throw new NoViableAltException(this); + } + this.state = 364; + this.match(pascalParser.RBRACK); + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public arrayType(): ArrayTypeContext { + let _localctx: ArrayTypeContext = new ArrayTypeContext(this._ctx, this.state); + this.enterRule(_localctx, 60, pascalParser.RULE_arrayType); + try { + this.state = 380; + this._errHandler.sync(this); + switch ( this.interpreter.adaptivePredict(this._input, 19, this._ctx) ) { + case 1: + this.enterOuterAlt(_localctx, 1); + { + this.state = 366; + this.match(pascalParser.ARRAY); + this.state = 367; + this.match(pascalParser.LBRACK); + this.state = 368; + this.typeList(); + this.state = 369; + this.match(pascalParser.RBRACK); + this.state = 370; + this.match(pascalParser.OF); + this.state = 371; + this.componentType(); + } + break; + + case 2: + this.enterOuterAlt(_localctx, 2); + { + this.state = 373; + this.match(pascalParser.ARRAY); + this.state = 374; + this.match(pascalParser.LBRACK2); + this.state = 375; + this.typeList(); + this.state = 376; + this.match(pascalParser.RBRACK2); + this.state = 377; + this.match(pascalParser.OF); + this.state = 378; + this.componentType(); + } + break; + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public typeList(): TypeListContext { + let _localctx: TypeListContext = new TypeListContext(this._ctx, this.state); + this.enterRule(_localctx, 62, pascalParser.RULE_typeList); + let _la: number; + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 382; + this.indexType(); + this.state = 387; + this._errHandler.sync(this); + _la = this._input.LA(1); + while (_la === pascalParser.COMMA) { + { + { + this.state = 383; + this.match(pascalParser.COMMA); + this.state = 384; + this.indexType(); + } + } + this.state = 389; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public indexType(): IndexTypeContext { + let _localctx: IndexTypeContext = new IndexTypeContext(this._ctx, this.state); + this.enterRule(_localctx, 64, pascalParser.RULE_indexType); + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 390; + this.simpleType(); + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public componentType(): ComponentTypeContext { + let _localctx: ComponentTypeContext = new ComponentTypeContext(this._ctx, this.state); + this.enterRule(_localctx, 66, pascalParser.RULE_componentType); + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 392; + this.type_(); + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public recordType(): RecordTypeContext { + let _localctx: RecordTypeContext = new RecordTypeContext(this._ctx, this.state); + this.enterRule(_localctx, 68, pascalParser.RULE_recordType); + let _la: number; + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 394; + this.match(pascalParser.RECORD); + this.state = 396; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (_la === pascalParser.CASE || _la === pascalParser.IDENT) { + { + this.state = 395; + this.fieldList(); + } + } + + this.state = 398; + this.match(pascalParser.END); + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public fieldList(): FieldListContext { + let _localctx: FieldListContext = new FieldListContext(this._ctx, this.state); + this.enterRule(_localctx, 70, pascalParser.RULE_fieldList); + let _la: number; + try { + this.state = 406; + this._errHandler.sync(this); + switch (this._input.LA(1)) { + case pascalParser.IDENT: + this.enterOuterAlt(_localctx, 1); + { + this.state = 400; + this.fixedPart(); + this.state = 403; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (_la === pascalParser.SEMI) { + { + this.state = 401; + this.match(pascalParser.SEMI); + this.state = 402; + this.variantPart(); + } + } + + } + break; + case pascalParser.CASE: + this.enterOuterAlt(_localctx, 2); + { + this.state = 405; + this.variantPart(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public fixedPart(): FixedPartContext { + let _localctx: FixedPartContext = new FixedPartContext(this._ctx, this.state); + this.enterRule(_localctx, 72, pascalParser.RULE_fixedPart); + try { + let _alt: number; + this.enterOuterAlt(_localctx, 1); + { + this.state = 408; + this.recordSection(); + this.state = 413; + this._errHandler.sync(this); + _alt = this.interpreter.adaptivePredict(this._input, 24, this._ctx); + while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { + if (_alt === 1) { + { + { + this.state = 409; + this.match(pascalParser.SEMI); + this.state = 410; + this.recordSection(); + } + } + } + this.state = 415; + this._errHandler.sync(this); + _alt = this.interpreter.adaptivePredict(this._input, 24, this._ctx); + } + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public recordSection(): RecordSectionContext { + let _localctx: RecordSectionContext = new RecordSectionContext(this._ctx, this.state); + this.enterRule(_localctx, 74, pascalParser.RULE_recordSection); + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 416; + this.identifierList(); + this.state = 417; + this.match(pascalParser.COLON); + this.state = 418; + this.type_(); + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public variantPart(): VariantPartContext { + let _localctx: VariantPartContext = new VariantPartContext(this._ctx, this.state); + this.enterRule(_localctx, 76, pascalParser.RULE_variantPart); + let _la: number; + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 420; + this.match(pascalParser.CASE); + this.state = 421; + this.tag(); + this.state = 422; + this.match(pascalParser.OF); + this.state = 423; + this.variant(); + this.state = 428; + this._errHandler.sync(this); + _la = this._input.LA(1); + while (_la === pascalParser.SEMI) { + { + { + this.state = 424; + this.match(pascalParser.SEMI); + this.state = 425; + this.variant(); + } + } + this.state = 430; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public tag(): TagContext { + let _localctx: TagContext = new TagContext(this._ctx, this.state); + this.enterRule(_localctx, 78, pascalParser.RULE_tag); + try { + this.state = 436; + this._errHandler.sync(this); + switch ( this.interpreter.adaptivePredict(this._input, 26, this._ctx) ) { + case 1: + this.enterOuterAlt(_localctx, 1); + { + this.state = 431; + this.identifier(); + this.state = 432; + this.match(pascalParser.COLON); + this.state = 433; + this.typeIdentifier(); + } + break; + + case 2: + this.enterOuterAlt(_localctx, 2); + { + this.state = 435; + this.typeIdentifier(); + } + break; + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public variant(): VariantContext { + let _localctx: VariantContext = new VariantContext(this._ctx, this.state); + this.enterRule(_localctx, 80, pascalParser.RULE_variant); + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 438; + this.constList(); + this.state = 439; + this.match(pascalParser.COLON); + this.state = 440; + this.match(pascalParser.LPAREN); + this.state = 441; + this.fieldList(); + this.state = 442; + this.match(pascalParser.RPAREN); + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public setType(): SetTypeContext { + let _localctx: SetTypeContext = new SetTypeContext(this._ctx, this.state); + this.enterRule(_localctx, 82, pascalParser.RULE_setType); + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 444; + this.match(pascalParser.SET); + this.state = 445; + this.match(pascalParser.OF); + this.state = 446; + this.baseType(); + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public baseType(): BaseTypeContext { + let _localctx: BaseTypeContext = new BaseTypeContext(this._ctx, this.state); + this.enterRule(_localctx, 84, pascalParser.RULE_baseType); + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 448; + this.simpleType(); + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public fileType(): FileTypeContext { + let _localctx: FileTypeContext = new FileTypeContext(this._ctx, this.state); + this.enterRule(_localctx, 86, pascalParser.RULE_fileType); + try { + this.state = 454; + this._errHandler.sync(this); + switch ( this.interpreter.adaptivePredict(this._input, 27, this._ctx) ) { + case 1: + this.enterOuterAlt(_localctx, 1); + { + this.state = 450; + this.match(pascalParser.FILE); + this.state = 451; + this.match(pascalParser.OF); + this.state = 452; + this.type_(); + } + break; + + case 2: + this.enterOuterAlt(_localctx, 2); + { + this.state = 453; + this.match(pascalParser.FILE); + } + break; + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public pointerType(): PointerTypeContext { + let _localctx: PointerTypeContext = new PointerTypeContext(this._ctx, this.state); + this.enterRule(_localctx, 88, pascalParser.RULE_pointerType); + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 456; + this.match(pascalParser.POINTER); + this.state = 457; + this.typeIdentifier(); + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public variableDeclarationPart(): VariableDeclarationPartContext { + let _localctx: VariableDeclarationPartContext = new VariableDeclarationPartContext(this._ctx, this.state); + this.enterRule(_localctx, 90, pascalParser.RULE_variableDeclarationPart); + try { + let _alt: number; + this.enterOuterAlt(_localctx, 1); + { + this.state = 459; + this.match(pascalParser.VAR); + this.state = 460; + this.variableDeclaration(); + this.state = 465; + this._errHandler.sync(this); + _alt = this.interpreter.adaptivePredict(this._input, 28, this._ctx); + while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { + if (_alt === 1) { + { + { + this.state = 461; + this.match(pascalParser.SEMI); + this.state = 462; + this.variableDeclaration(); + } + } + } + this.state = 467; + this._errHandler.sync(this); + _alt = this.interpreter.adaptivePredict(this._input, 28, this._ctx); + } + this.state = 468; + this.match(pascalParser.SEMI); + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public variableDeclaration(): VariableDeclarationContext { + let _localctx: VariableDeclarationContext = new VariableDeclarationContext(this._ctx, this.state); + this.enterRule(_localctx, 92, pascalParser.RULE_variableDeclaration); + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 470; + this.identifierList(); + this.state = 471; + this.match(pascalParser.COLON); + this.state = 472; + this.type_(); + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public procedureAndFunctionDeclarationPart(): ProcedureAndFunctionDeclarationPartContext { + let _localctx: ProcedureAndFunctionDeclarationPartContext = new ProcedureAndFunctionDeclarationPartContext(this._ctx, this.state); + this.enterRule(_localctx, 94, pascalParser.RULE_procedureAndFunctionDeclarationPart); + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 474; + this.procedureOrFunctionDeclaration(); + this.state = 475; + this.match(pascalParser.SEMI); + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public procedureOrFunctionDeclaration(): ProcedureOrFunctionDeclarationContext { + let _localctx: ProcedureOrFunctionDeclarationContext = new ProcedureOrFunctionDeclarationContext(this._ctx, this.state); + this.enterRule(_localctx, 96, pascalParser.RULE_procedureOrFunctionDeclaration); + try { + this.state = 479; + this._errHandler.sync(this); + switch (this._input.LA(1)) { + case pascalParser.PROCEDURE: + this.enterOuterAlt(_localctx, 1); + { + this.state = 477; + this.procedureDeclaration(); + } + break; + case pascalParser.FUNCTION: + this.enterOuterAlt(_localctx, 2); + { + this.state = 478; + this.functionDeclaration(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public procedureDeclaration(): ProcedureDeclarationContext { + let _localctx: ProcedureDeclarationContext = new ProcedureDeclarationContext(this._ctx, this.state); + this.enterRule(_localctx, 98, pascalParser.RULE_procedureDeclaration); + let _la: number; + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 481; + this.match(pascalParser.PROCEDURE); + this.state = 482; + this.identifier(); + this.state = 484; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (_la === pascalParser.LPAREN) { + { + this.state = 483; + this.formalParameterList(); + } + } + + this.state = 486; + this.match(pascalParser.SEMI); + this.state = 487; + this.block(); + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public formalParameterList(): FormalParameterListContext { + let _localctx: FormalParameterListContext = new FormalParameterListContext(this._ctx, this.state); + this.enterRule(_localctx, 100, pascalParser.RULE_formalParameterList); + let _la: number; + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 489; + this.match(pascalParser.LPAREN); + this.state = 490; + this.formalParameterSection(); + this.state = 495; + this._errHandler.sync(this); + _la = this._input.LA(1); + while (_la === pascalParser.SEMI) { + { + { + this.state = 491; + this.match(pascalParser.SEMI); + this.state = 492; + this.formalParameterSection(); + } + } + this.state = 497; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 498; + this.match(pascalParser.RPAREN); + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public formalParameterSection(): FormalParameterSectionContext { + let _localctx: FormalParameterSectionContext = new FormalParameterSectionContext(this._ctx, this.state); + this.enterRule(_localctx, 102, pascalParser.RULE_formalParameterSection); + try { + this.state = 507; + this._errHandler.sync(this); + switch (this._input.LA(1)) { + case pascalParser.IDENT: + this.enterOuterAlt(_localctx, 1); + { + this.state = 500; + this.parameterGroup(); + } + break; + case pascalParser.VAR: + this.enterOuterAlt(_localctx, 2); + { + this.state = 501; + this.match(pascalParser.VAR); + this.state = 502; + this.parameterGroup(); + } + break; + case pascalParser.FUNCTION: + this.enterOuterAlt(_localctx, 3); + { + this.state = 503; + this.match(pascalParser.FUNCTION); + this.state = 504; + this.parameterGroup(); + } + break; + case pascalParser.PROCEDURE: + this.enterOuterAlt(_localctx, 4); + { + this.state = 505; + this.match(pascalParser.PROCEDURE); + this.state = 506; + this.parameterGroup(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public parameterGroup(): ParameterGroupContext { + let _localctx: ParameterGroupContext = new ParameterGroupContext(this._ctx, this.state); + this.enterRule(_localctx, 104, pascalParser.RULE_parameterGroup); + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 509; + this.identifierList(); + this.state = 510; + this.match(pascalParser.COLON); + this.state = 511; + this.typeIdentifier(); + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public identifierList(): IdentifierListContext { + let _localctx: IdentifierListContext = new IdentifierListContext(this._ctx, this.state); + this.enterRule(_localctx, 106, pascalParser.RULE_identifierList); + let _la: number; + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 513; + this.identifier(); + this.state = 518; + this._errHandler.sync(this); + _la = this._input.LA(1); + while (_la === pascalParser.COMMA) { + { + { + this.state = 514; + this.match(pascalParser.COMMA); + this.state = 515; + this.identifier(); + } + } + this.state = 520; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public constList(): ConstListContext { + let _localctx: ConstListContext = new ConstListContext(this._ctx, this.state); + this.enterRule(_localctx, 108, pascalParser.RULE_constList); + let _la: number; + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 521; + this.constant(); + this.state = 526; + this._errHandler.sync(this); + _la = this._input.LA(1); + while (_la === pascalParser.COMMA) { + { + { + this.state = 522; + this.match(pascalParser.COMMA); + this.state = 523; + this.constant(); + } + } + this.state = 528; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public functionDeclaration(): FunctionDeclarationContext { + let _localctx: FunctionDeclarationContext = new FunctionDeclarationContext(this._ctx, this.state); + this.enterRule(_localctx, 110, pascalParser.RULE_functionDeclaration); + let _la: number; + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 529; + this.match(pascalParser.FUNCTION); + this.state = 530; + this.identifier(); + this.state = 532; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (_la === pascalParser.LPAREN) { + { + this.state = 531; + this.formalParameterList(); + } + } + + this.state = 534; + this.match(pascalParser.COLON); + this.state = 535; + this.resultType(); + this.state = 536; + this.match(pascalParser.SEMI); + this.state = 537; + this.block(); + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public resultType(): ResultTypeContext { + let _localctx: ResultTypeContext = new ResultTypeContext(this._ctx, this.state); + this.enterRule(_localctx, 112, pascalParser.RULE_resultType); + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 539; + this.typeIdentifier(); + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public statement(): StatementContext { + let _localctx: StatementContext = new StatementContext(this._ctx, this.state); + this.enterRule(_localctx, 114, pascalParser.RULE_statement); + try { + this.state = 546; + this._errHandler.sync(this); + switch (this._input.LA(1)) { + case pascalParser.NUM_INT: + this.enterOuterAlt(_localctx, 1); + { + this.state = 541; + this.label(); + this.state = 542; + this.match(pascalParser.COLON); + this.state = 543; + this.unlabelledStatement(); + } + break; + case pascalParser.BEGIN: + case pascalParser.CASE: + case pascalParser.ELSE: + case pascalParser.END: + case pascalParser.FOR: + case pascalParser.GOTO: + case pascalParser.IF: + case pascalParser.REPEAT: + case pascalParser.UNTIL: + case pascalParser.WHILE: + case pascalParser.WITH: + case pascalParser.SEMI: + case pascalParser.AT: + case pascalParser.IDENT: + this.enterOuterAlt(_localctx, 2); + { + this.state = 545; + this.unlabelledStatement(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public unlabelledStatement(): UnlabelledStatementContext { + let _localctx: UnlabelledStatementContext = new UnlabelledStatementContext(this._ctx, this.state); + this.enterRule(_localctx, 116, pascalParser.RULE_unlabelledStatement); + try { + this.state = 550; + this._errHandler.sync(this); + switch (this._input.LA(1)) { + case pascalParser.ELSE: + case pascalParser.END: + case pascalParser.GOTO: + case pascalParser.UNTIL: + case pascalParser.SEMI: + case pascalParser.AT: + case pascalParser.IDENT: + this.enterOuterAlt(_localctx, 1); + { + this.state = 548; + this.simpleStatement(); + } + break; + case pascalParser.BEGIN: + case pascalParser.CASE: + case pascalParser.FOR: + case pascalParser.IF: + case pascalParser.REPEAT: + case pascalParser.WHILE: + case pascalParser.WITH: + this.enterOuterAlt(_localctx, 2); + { + this.state = 549; + this.structuredStatement(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public simpleStatement(): SimpleStatementContext { + let _localctx: SimpleStatementContext = new SimpleStatementContext(this._ctx, this.state); + this.enterRule(_localctx, 118, pascalParser.RULE_simpleStatement); + try { + this.state = 556; + this._errHandler.sync(this); + switch ( this.interpreter.adaptivePredict(this._input, 38, this._ctx) ) { + case 1: + this.enterOuterAlt(_localctx, 1); + { + this.state = 552; + this.assignmentStatement(); + } + break; + + case 2: + this.enterOuterAlt(_localctx, 2); + { + this.state = 553; + this.procedureStatement(); + } + break; + + case 3: + this.enterOuterAlt(_localctx, 3); + { + this.state = 554; + this.gotoStatement(); + } + break; + + case 4: + this.enterOuterAlt(_localctx, 4); + { + this.state = 555; + this.emptyStatement_(); + } + break; + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public assignmentStatement(): AssignmentStatementContext { + let _localctx: AssignmentStatementContext = new AssignmentStatementContext(this._ctx, this.state); + this.enterRule(_localctx, 120, pascalParser.RULE_assignmentStatement); + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 558; + this.variable(); + this.state = 559; + this.match(pascalParser.ASSIGN); + this.state = 560; + this.expression(); + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public variable(): VariableContext { + let _localctx: VariableContext = new VariableContext(this._ctx, this.state); + this.enterRule(_localctx, 122, pascalParser.RULE_variable); + let _la: number; + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 565; + this._errHandler.sync(this); + switch (this._input.LA(1)) { + case pascalParser.AT: + { + this.state = 562; + this.match(pascalParser.AT); + this.state = 563; + this.identifier(); + } + break; + case pascalParser.IDENT: + { + this.state = 564; + this.identifier(); + } + break; + default: + throw new NoViableAltException(this); + } + this.state = 594; + this._errHandler.sync(this); + _la = this._input.LA(1); + while (((((_la - 57)) & ~0x1F) === 0 && ((1 << (_la - 57)) & ((1 << (pascalParser.LBRACK - 57)) | (1 << (pascalParser.LBRACK2 - 57)) | (1 << (pascalParser.POINTER - 57)) | (1 << (pascalParser.DOT - 57)))) !== 0)) { + { + this.state = 592; + this._errHandler.sync(this); + switch (this._input.LA(1)) { + case pascalParser.LBRACK: + { + this.state = 567; + this.match(pascalParser.LBRACK); + this.state = 568; + this.expression(); + this.state = 573; + this._errHandler.sync(this); + _la = this._input.LA(1); + while (_la === pascalParser.COMMA) { + { + { + this.state = 569; + this.match(pascalParser.COMMA); + this.state = 570; + this.expression(); + } + } + this.state = 575; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 576; + this.match(pascalParser.RBRACK); + } + break; + case pascalParser.LBRACK2: + { + this.state = 578; + this.match(pascalParser.LBRACK2); + this.state = 579; + this.expression(); + this.state = 584; + this._errHandler.sync(this); + _la = this._input.LA(1); + while (_la === pascalParser.COMMA) { + { + { + this.state = 580; + this.match(pascalParser.COMMA); + this.state = 581; + this.expression(); + } + } + this.state = 586; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 587; + this.match(pascalParser.RBRACK2); + } + break; + case pascalParser.DOT: + { + this.state = 589; + this.match(pascalParser.DOT); + this.state = 590; + this.identifier(); + } + break; + case pascalParser.POINTER: + { + this.state = 591; + this.match(pascalParser.POINTER); + } + break; + default: + throw new NoViableAltException(this); + } + } + this.state = 596; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public expression(): ExpressionContext { + let _localctx: ExpressionContext = new ExpressionContext(this._ctx, this.state); + this.enterRule(_localctx, 124, pascalParser.RULE_expression); + let _la: number; + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 597; + this.simpleExpression(); + this.state = 601; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (_la === pascalParser.IN || ((((_la - 49)) & ~0x1F) === 0 && ((1 << (_la - 49)) & ((1 << (pascalParser.EQUAL - 49)) | (1 << (pascalParser.NOT_EQUAL - 49)) | (1 << (pascalParser.LT - 49)) | (1 << (pascalParser.LE - 49)) | (1 << (pascalParser.GE - 49)) | (1 << (pascalParser.GT - 49)))) !== 0)) { + { + this.state = 598; + this.relationaloperator(); + this.state = 599; + this.expression(); + } + } + + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public relationaloperator(): RelationaloperatorContext { + let _localctx: RelationaloperatorContext = new RelationaloperatorContext(this._ctx, this.state); + this.enterRule(_localctx, 126, pascalParser.RULE_relationaloperator); + let _la: number; + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 603; + _la = this._input.LA(1); + if (!(_la === pascalParser.IN || ((((_la - 49)) & ~0x1F) === 0 && ((1 << (_la - 49)) & ((1 << (pascalParser.EQUAL - 49)) | (1 << (pascalParser.NOT_EQUAL - 49)) | (1 << (pascalParser.LT - 49)) | (1 << (pascalParser.LE - 49)) | (1 << (pascalParser.GE - 49)) | (1 << (pascalParser.GT - 49)))) !== 0))) { + this._errHandler.recoverInline(this); + } else { + if (this._input.LA(1) === Token.EOF) { + this.matchedEOF = true; + } + + this._errHandler.reportMatch(this); + this.consume(); + } + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public simpleExpression(): SimpleExpressionContext { + let _localctx: SimpleExpressionContext = new SimpleExpressionContext(this._ctx, this.state); + this.enterRule(_localctx, 128, pascalParser.RULE_simpleExpression); + let _la: number; + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 605; + this.term(); + this.state = 609; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (((((_la - 26)) & ~0x1F) === 0 && ((1 << (_la - 26)) & ((1 << (pascalParser.OR - 26)) | (1 << (pascalParser.PLUS - 26)) | (1 << (pascalParser.MINUS - 26)))) !== 0)) { + { + this.state = 606; + this.additiveoperator(); + this.state = 607; + this.simpleExpression(); + } + } + + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public additiveoperator(): AdditiveoperatorContext { + let _localctx: AdditiveoperatorContext = new AdditiveoperatorContext(this._ctx, this.state); + this.enterRule(_localctx, 130, pascalParser.RULE_additiveoperator); + let _la: number; + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 611; + _la = this._input.LA(1); + if (!(((((_la - 26)) & ~0x1F) === 0 && ((1 << (_la - 26)) & ((1 << (pascalParser.OR - 26)) | (1 << (pascalParser.PLUS - 26)) | (1 << (pascalParser.MINUS - 26)))) !== 0))) { + this._errHandler.recoverInline(this); + } else { + if (this._input.LA(1) === Token.EOF) { + this.matchedEOF = true; + } + + this._errHandler.reportMatch(this); + this.consume(); + } + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public term(): TermContext { + let _localctx: TermContext = new TermContext(this._ctx, this.state); + this.enterRule(_localctx, 132, pascalParser.RULE_term); + let _la: number; + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 613; + this.signedFactor(); + this.state = 617; + this._errHandler.sync(this); + _la = this._input.LA(1); + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << pascalParser.AND) | (1 << pascalParser.DIV) | (1 << pascalParser.MOD))) !== 0) || _la === pascalParser.STAR || _la === pascalParser.SLASH) { + { + this.state = 614; + this.multiplicativeoperator(); + this.state = 615; + this.term(); + } + } + + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public multiplicativeoperator(): MultiplicativeoperatorContext { + let _localctx: MultiplicativeoperatorContext = new MultiplicativeoperatorContext(this._ctx, this.state); + this.enterRule(_localctx, 134, pascalParser.RULE_multiplicativeoperator); + let _la: number; + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 619; + _la = this._input.LA(1); + if (!((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << pascalParser.AND) | (1 << pascalParser.DIV) | (1 << pascalParser.MOD))) !== 0) || _la === pascalParser.STAR || _la === pascalParser.SLASH)) { + this._errHandler.recoverInline(this); + } else { + if (this._input.LA(1) === Token.EOF) { + this.matchedEOF = true; + } + + this._errHandler.reportMatch(this); + this.consume(); + } + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public signedFactor(): SignedFactorContext { + let _localctx: SignedFactorContext = new SignedFactorContext(this._ctx, this.state); + this.enterRule(_localctx, 136, pascalParser.RULE_signedFactor); + let _la: number; + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 622; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (_la === pascalParser.PLUS || _la === pascalParser.MINUS) { + { + this.state = 621; + _la = this._input.LA(1); + if (!(_la === pascalParser.PLUS || _la === pascalParser.MINUS)) { + this._errHandler.recoverInline(this); + } else { + if (this._input.LA(1) === Token.EOF) { + this.matchedEOF = true; + } + + this._errHandler.reportMatch(this); + this.consume(); + } + } + } + + this.state = 624; + this.factor(); + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public factor(): FactorContext { + let _localctx: FactorContext = new FactorContext(this._ctx, this.state); + this.enterRule(_localctx, 138, pascalParser.RULE_factor); + try { + this.state = 637; + this._errHandler.sync(this); + switch ( this.interpreter.adaptivePredict(this._input, 48, this._ctx) ) { + case 1: + this.enterOuterAlt(_localctx, 1); + { + this.state = 626; + this.variable(); + } + break; + + case 2: + this.enterOuterAlt(_localctx, 2); + { + this.state = 627; + this.match(pascalParser.LPAREN); + this.state = 628; + this.expression(); + this.state = 629; + this.match(pascalParser.RPAREN); + } + break; + + case 3: + this.enterOuterAlt(_localctx, 3); + { + this.state = 631; + this.functionDesignator(); + } + break; + + case 4: + this.enterOuterAlt(_localctx, 4); + { + this.state = 632; + this.unsignedConstant(); + } + break; + + case 5: + this.enterOuterAlt(_localctx, 5); + { + this.state = 633; + this.set_(); + } + break; + + case 6: + this.enterOuterAlt(_localctx, 6); + { + this.state = 634; + this.match(pascalParser.NOT); + this.state = 635; + this.factor(); + } + break; + + case 7: + this.enterOuterAlt(_localctx, 7); + { + this.state = 636; + this.bool_(); + } + break; + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public unsignedConstant(): UnsignedConstantContext { + let _localctx: UnsignedConstantContext = new UnsignedConstantContext(this._ctx, this.state); + this.enterRule(_localctx, 140, pascalParser.RULE_unsignedConstant); + try { + this.state = 643; + this._errHandler.sync(this); + switch (this._input.LA(1)) { + case pascalParser.NUM_INT: + case pascalParser.NUM_REAL: + this.enterOuterAlt(_localctx, 1); + { + this.state = 639; + this.unsignedNumber(); + } + break; + case pascalParser.CHR: + this.enterOuterAlt(_localctx, 2); + { + this.state = 640; + this.constantChr(); + } + break; + case pascalParser.STRING_LITERAL: + this.enterOuterAlt(_localctx, 3); + { + this.state = 641; + this.string(); + } + break; + case pascalParser.NIL: + this.enterOuterAlt(_localctx, 4); + { + this.state = 642; + this.match(pascalParser.NIL); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public functionDesignator(): FunctionDesignatorContext { + let _localctx: FunctionDesignatorContext = new FunctionDesignatorContext(this._ctx, this.state); + this.enterRule(_localctx, 142, pascalParser.RULE_functionDesignator); + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 645; + this.identifier(); + this.state = 646; + this.match(pascalParser.LPAREN); + this.state = 647; + this.parameterList(); + this.state = 648; + this.match(pascalParser.RPAREN); + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public parameterList(): ParameterListContext { + let _localctx: ParameterListContext = new ParameterListContext(this._ctx, this.state); + this.enterRule(_localctx, 144, pascalParser.RULE_parameterList); + let _la: number; + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 650; + this.actualParameter(); + this.state = 655; + this._errHandler.sync(this); + _la = this._input.LA(1); + while (_la === pascalParser.COMMA) { + { + { + this.state = 651; + this.match(pascalParser.COMMA); + this.state = 652; + this.actualParameter(); + } + } + this.state = 657; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public set_(): Set_Context { + let _localctx: Set_Context = new Set_Context(this._ctx, this.state); + this.enterRule(_localctx, 146, pascalParser.RULE_set_); + try { + this.state = 666; + this._errHandler.sync(this); + switch (this._input.LA(1)) { + case pascalParser.LBRACK: + this.enterOuterAlt(_localctx, 1); + { + this.state = 658; + this.match(pascalParser.LBRACK); + this.state = 659; + this.elementList(); + this.state = 660; + this.match(pascalParser.RBRACK); + } + break; + case pascalParser.LBRACK2: + this.enterOuterAlt(_localctx, 2); + { + this.state = 662; + this.match(pascalParser.LBRACK2); + this.state = 663; + this.elementList(); + this.state = 664; + this.match(pascalParser.RBRACK2); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public elementList(): ElementListContext { + let _localctx: ElementListContext = new ElementListContext(this._ctx, this.state); + this.enterRule(_localctx, 148, pascalParser.RULE_elementList); + let _la: number; + try { + this.state = 677; + this._errHandler.sync(this); + switch (this._input.LA(1)) { + case pascalParser.CHR: + case pascalParser.NIL: + case pascalParser.NOT: + case pascalParser.PLUS: + case pascalParser.MINUS: + case pascalParser.LPAREN: + case pascalParser.LBRACK: + case pascalParser.LBRACK2: + case pascalParser.AT: + case pascalParser.TRUE: + case pascalParser.FALSE: + case pascalParser.IDENT: + case pascalParser.STRING_LITERAL: + case pascalParser.NUM_INT: + case pascalParser.NUM_REAL: + this.enterOuterAlt(_localctx, 1); + { + this.state = 668; + this.element(); + this.state = 673; + this._errHandler.sync(this); + _la = this._input.LA(1); + while (_la === pascalParser.COMMA) { + { + { + this.state = 669; + this.match(pascalParser.COMMA); + this.state = 670; + this.element(); + } + } + this.state = 675; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + } + break; + case pascalParser.RBRACK: + case pascalParser.RBRACK2: + this.enterOuterAlt(_localctx, 2); + // tslint:disable-next-line:no-empty + { + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public element(): ElementContext { + let _localctx: ElementContext = new ElementContext(this._ctx, this.state); + this.enterRule(_localctx, 150, pascalParser.RULE_element); + let _la: number; + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 679; + this.expression(); + this.state = 682; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (_la === pascalParser.DOTDOT) { + { + this.state = 680; + this.match(pascalParser.DOTDOT); + this.state = 681; + this.expression(); + } + } + + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public procedureStatement(): ProcedureStatementContext { + let _localctx: ProcedureStatementContext = new ProcedureStatementContext(this._ctx, this.state); + this.enterRule(_localctx, 152, pascalParser.RULE_procedureStatement); + let _la: number; + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 684; + this.identifier(); + this.state = 689; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (_la === pascalParser.LPAREN) { + { + this.state = 685; + this.match(pascalParser.LPAREN); + this.state = 686; + this.parameterList(); + this.state = 687; + this.match(pascalParser.RPAREN); + } + } + + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public actualParameter(): ActualParameterContext { + let _localctx: ActualParameterContext = new ActualParameterContext(this._ctx, this.state); + this.enterRule(_localctx, 154, pascalParser.RULE_actualParameter); + let _la: number; + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 691; + this.expression(); + this.state = 695; + this._errHandler.sync(this); + _la = this._input.LA(1); + while (_la === pascalParser.COLON) { + { + { + this.state = 692; + this.parameterwidth(); + } + } + this.state = 697; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public parameterwidth(): ParameterwidthContext { + let _localctx: ParameterwidthContext = new ParameterwidthContext(this._ctx, this.state); + this.enterRule(_localctx, 156, pascalParser.RULE_parameterwidth); + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 698; + this.match(pascalParser.COLON); + this.state = 699; + this.expression(); + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public gotoStatement(): GotoStatementContext { + let _localctx: GotoStatementContext = new GotoStatementContext(this._ctx, this.state); + this.enterRule(_localctx, 158, pascalParser.RULE_gotoStatement); + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 701; + this.match(pascalParser.GOTO); + this.state = 702; + this.label(); + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public emptyStatement_(): EmptyStatement_Context { + let _localctx: EmptyStatement_Context = new EmptyStatement_Context(this._ctx, this.state); + this.enterRule(_localctx, 160, pascalParser.RULE_emptyStatement_); + try { + this.enterOuterAlt(_localctx, 1); + // tslint:disable-next-line:no-empty + { + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public empty_(): Empty_Context { + let _localctx: Empty_Context = new Empty_Context(this._ctx, this.state); + this.enterRule(_localctx, 162, pascalParser.RULE_empty_); + try { + this.enterOuterAlt(_localctx, 1); + // tslint:disable-next-line:no-empty + { + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public structuredStatement(): StructuredStatementContext { + let _localctx: StructuredStatementContext = new StructuredStatementContext(this._ctx, this.state); + this.enterRule(_localctx, 164, pascalParser.RULE_structuredStatement); + try { + this.state = 712; + this._errHandler.sync(this); + switch (this._input.LA(1)) { + case pascalParser.BEGIN: + this.enterOuterAlt(_localctx, 1); + { + this.state = 708; + this.compoundStatement(); + } + break; + case pascalParser.CASE: + case pascalParser.IF: + this.enterOuterAlt(_localctx, 2); + { + this.state = 709; + this.conditionalStatement(); + } + break; + case pascalParser.FOR: + case pascalParser.REPEAT: + case pascalParser.WHILE: + this.enterOuterAlt(_localctx, 3); + { + this.state = 710; + this.repetetiveStatement(); + } + break; + case pascalParser.WITH: + this.enterOuterAlt(_localctx, 4); + { + this.state = 711; + this.withStatement(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public compoundStatement(): CompoundStatementContext { + let _localctx: CompoundStatementContext = new CompoundStatementContext(this._ctx, this.state); + this.enterRule(_localctx, 166, pascalParser.RULE_compoundStatement); + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 714; + this.match(pascalParser.BEGIN); + this.state = 715; + this.statements(); + this.state = 716; + this.match(pascalParser.END); + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public statements(): StatementsContext { + let _localctx: StatementsContext = new StatementsContext(this._ctx, this.state); + this.enterRule(_localctx, 168, pascalParser.RULE_statements); + let _la: number; + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 718; + this.statement(); + this.state = 723; + this._errHandler.sync(this); + _la = this._input.LA(1); + while (_la === pascalParser.SEMI) { + { + { + this.state = 719; + this.match(pascalParser.SEMI); + this.state = 720; + this.statement(); + } + } + this.state = 725; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public conditionalStatement(): ConditionalStatementContext { + let _localctx: ConditionalStatementContext = new ConditionalStatementContext(this._ctx, this.state); + this.enterRule(_localctx, 170, pascalParser.RULE_conditionalStatement); + try { + this.state = 728; + this._errHandler.sync(this); + switch (this._input.LA(1)) { + case pascalParser.IF: + this.enterOuterAlt(_localctx, 1); + { + this.state = 726; + this.ifStatement(); + } + break; + case pascalParser.CASE: + this.enterOuterAlt(_localctx, 2); + { + this.state = 727; + this.caseStatement(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public ifStatement(): IfStatementContext { + let _localctx: IfStatementContext = new IfStatementContext(this._ctx, this.state); + this.enterRule(_localctx, 172, pascalParser.RULE_ifStatement); + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 730; + this.match(pascalParser.IF); + this.state = 731; + this.expression(); + this.state = 732; + this.match(pascalParser.THEN); + this.state = 733; + this.statement(); + this.state = 736; + this._errHandler.sync(this); + switch ( this.interpreter.adaptivePredict(this._input, 60, this._ctx) ) { + case 1: + { + this.state = 734; + this.match(pascalParser.ELSE); + this.state = 735; + this.statement(); + } + break; + } + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public caseStatement(): CaseStatementContext { + let _localctx: CaseStatementContext = new CaseStatementContext(this._ctx, this.state); + this.enterRule(_localctx, 174, pascalParser.RULE_caseStatement); + let _la: number; + try { + let _alt: number; + this.enterOuterAlt(_localctx, 1); + { + this.state = 738; + this.match(pascalParser.CASE); + this.state = 739; + this.expression(); + this.state = 740; + this.match(pascalParser.OF); + this.state = 741; + this.caseListElement(); + this.state = 746; + this._errHandler.sync(this); + _alt = this.interpreter.adaptivePredict(this._input, 61, this._ctx); + while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { + if (_alt === 1) { + { + { + this.state = 742; + this.match(pascalParser.SEMI); + this.state = 743; + this.caseListElement(); + } + } + } + this.state = 748; + this._errHandler.sync(this); + _alt = this.interpreter.adaptivePredict(this._input, 61, this._ctx); + } + this.state = 752; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (_la === pascalParser.SEMI) { + { + this.state = 749; + this.match(pascalParser.SEMI); + this.state = 750; + this.match(pascalParser.ELSE); + this.state = 751; + this.statements(); + } + } + + this.state = 754; + this.match(pascalParser.END); + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public caseListElement(): CaseListElementContext { + let _localctx: CaseListElementContext = new CaseListElementContext(this._ctx, this.state); + this.enterRule(_localctx, 176, pascalParser.RULE_caseListElement); + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 756; + this.constList(); + this.state = 757; + this.match(pascalParser.COLON); + this.state = 758; + this.statement(); + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public repetetiveStatement(): RepetetiveStatementContext { + let _localctx: RepetetiveStatementContext = new RepetetiveStatementContext(this._ctx, this.state); + this.enterRule(_localctx, 178, pascalParser.RULE_repetetiveStatement); + try { + this.state = 763; + this._errHandler.sync(this); + switch (this._input.LA(1)) { + case pascalParser.WHILE: + this.enterOuterAlt(_localctx, 1); + { + this.state = 760; + this.whileStatement(); + } + break; + case pascalParser.REPEAT: + this.enterOuterAlt(_localctx, 2); + { + this.state = 761; + this.repeatStatement(); + } + break; + case pascalParser.FOR: + this.enterOuterAlt(_localctx, 3); + { + this.state = 762; + this.forStatement(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public whileStatement(): WhileStatementContext { + let _localctx: WhileStatementContext = new WhileStatementContext(this._ctx, this.state); + this.enterRule(_localctx, 180, pascalParser.RULE_whileStatement); + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 765; + this.match(pascalParser.WHILE); + this.state = 766; + this.expression(); + this.state = 767; + this.match(pascalParser.DO); + this.state = 768; + this.statement(); + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public repeatStatement(): RepeatStatementContext { + let _localctx: RepeatStatementContext = new RepeatStatementContext(this._ctx, this.state); + this.enterRule(_localctx, 182, pascalParser.RULE_repeatStatement); + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 770; + this.match(pascalParser.REPEAT); + this.state = 771; + this.statements(); + this.state = 772; + this.match(pascalParser.UNTIL); + this.state = 773; + this.expression(); + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public forStatement(): ForStatementContext { + let _localctx: ForStatementContext = new ForStatementContext(this._ctx, this.state); + this.enterRule(_localctx, 184, pascalParser.RULE_forStatement); + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 775; + this.match(pascalParser.FOR); + this.state = 776; + this.identifier(); + this.state = 777; + this.match(pascalParser.ASSIGN); + this.state = 778; + this.forList(); + this.state = 779; + this.match(pascalParser.DO); + this.state = 780; + this.statement(); + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public forList(): ForListContext { + let _localctx: ForListContext = new ForListContext(this._ctx, this.state); + this.enterRule(_localctx, 186, pascalParser.RULE_forList); + let _la: number; + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 782; + this.initialValue(); + this.state = 783; + _la = this._input.LA(1); + if (!(_la === pascalParser.DOWNTO || _la === pascalParser.TO)) { + this._errHandler.recoverInline(this); + } else { + if (this._input.LA(1) === Token.EOF) { + this.matchedEOF = true; + } + + this._errHandler.reportMatch(this); + this.consume(); + } + this.state = 784; + this.finalValue(); + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public initialValue(): InitialValueContext { + let _localctx: InitialValueContext = new InitialValueContext(this._ctx, this.state); + this.enterRule(_localctx, 188, pascalParser.RULE_initialValue); + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 786; + this.expression(); + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public finalValue(): FinalValueContext { + let _localctx: FinalValueContext = new FinalValueContext(this._ctx, this.state); + this.enterRule(_localctx, 190, pascalParser.RULE_finalValue); + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 788; + this.expression(); + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public withStatement(): WithStatementContext { + let _localctx: WithStatementContext = new WithStatementContext(this._ctx, this.state); + this.enterRule(_localctx, 192, pascalParser.RULE_withStatement); + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 790; + this.match(pascalParser.WITH); + this.state = 791; + this.recordVariableList(); + this.state = 792; + this.match(pascalParser.DO); + this.state = 793; + this.statement(); + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public recordVariableList(): RecordVariableListContext { + let _localctx: RecordVariableListContext = new RecordVariableListContext(this._ctx, this.state); + this.enterRule(_localctx, 194, pascalParser.RULE_recordVariableList); + let _la: number; + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 795; + this.variable(); + this.state = 800; + this._errHandler.sync(this); + _la = this._input.LA(1); + while (_la === pascalParser.COMMA) { + { + { + this.state = 796; + this.match(pascalParser.COMMA); + this.state = 797; + this.variable(); + } + } + this.state = 802; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + + private static readonly _serializedATNSegments: number = 2; + private static readonly _serializedATNSegment0: string = + "\x03\uC91D\uCABA\u058D\uAFBA\u4F53\u0607\uEA8B\uC241\x03R\u0326\x04\x02" + + "\t\x02\x04\x03\t\x03\x04\x04\t\x04\x04\x05\t\x05\x04\x06\t\x06\x04\x07" + + "\t\x07\x04\b\t\b\x04\t\t\t\x04\n\t\n\x04\v\t\v\x04\f\t\f\x04\r\t\r\x04" + + "\x0E\t\x0E\x04\x0F\t\x0F\x04\x10\t\x10\x04\x11\t\x11\x04\x12\t\x12\x04" + + "\x13\t\x13\x04\x14\t\x14\x04\x15\t\x15\x04\x16\t\x16\x04\x17\t\x17\x04" + + "\x18\t\x18\x04\x19\t\x19\x04\x1A\t\x1A\x04\x1B\t\x1B\x04\x1C\t\x1C\x04" + + "\x1D\t\x1D\x04\x1E\t\x1E\x04\x1F\t\x1F\x04 \t \x04!\t!\x04\"\t\"\x04#" + + "\t#\x04$\t$\x04%\t%\x04&\t&\x04\'\t\'\x04(\t(\x04)\t)\x04*\t*\x04+\t+" + + "\x04,\t,\x04-\t-\x04.\t.\x04/\t/\x040\t0\x041\t1\x042\t2\x043\t3\x044" + + "\t4\x045\t5\x046\t6\x047\t7\x048\t8\x049\t9\x04:\t:\x04;\t;\x04<\t<\x04" + + "=\t=\x04>\t>\x04?\t?\x04@\t@\x04A\tA\x04B\tB\x04C\tC\x04D\tD\x04E\tE\x04" + + "F\tF\x04G\tG\x04H\tH\x04I\tI\x04J\tJ\x04K\tK\x04L\tL\x04M\tM\x04N\tN\x04" + + "O\tO\x04P\tP\x04Q\tQ\x04R\tR\x04S\tS\x04T\tT\x04U\tU\x04V\tV\x04W\tW\x04" + + "X\tX\x04Y\tY\x04Z\tZ\x04[\t[\x04\\\t\\\x04]\t]\x04^\t^\x04_\t_\x04`\t" + + "`\x04a\ta\x04b\tb\x04c\tc\x03\x02\x03\x02\x03\x03\x03\x03\x05\x03\xCB" + + "\n\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x04\x03\x04\x03\x04\x03\x04" + + "\x03\x04\x03\x04\x05\x04\xD7\n\x04\x03\x04\x03\x04\x03\x04\x03\x04\x03" + + "\x04\x03\x04\x05\x04\xDF\n\x04\x03\x05\x03\x05\x03\x06\x03\x06\x03\x06" + + "\x03\x06\x03\x06\x03\x06\x03\x06\x07\x06\xEA\n\x06\f\x06\x0E\x06\xED\v" + + "\x06\x03\x06\x03\x06\x03\x07\x03\x07\x03\x07\x03\x07\x03\b\x03\b\x03\b" + + "\x03\b\x07\b\xF9\n\b\f\b\x0E\b\xFC\v\b\x03\b\x03\b\x03\t\x03\t\x03\n\x03" + + "\n\x03\n\x03\n\x06\n\u0106\n\n\r\n\x0E\n\u0107\x03\v\x03\v\x03\v\x03\v" + + "\x03\f\x03\f\x03\f\x03\f\x03\f\x03\r\x03\r\x03\r\x03\r\x03\r\x03\r\x03" + + "\r\x03\r\x03\r\x03\r\x05\r\u011D\n\r\x03\x0E\x03\x0E\x05\x0E\u0121\n\x0E" + + "\x03\x0F\x03\x0F\x03\x10\x03\x10\x03\x11\x03\x11\x03\x12\x03\x12\x03\x13" + + "\x03\x13\x03\x14\x03\x14\x03\x14\x03\x14\x06\x14\u0131\n\x14\r\x14\x0E" + + "\x14\u0132\x03\x15\x03\x15\x03\x15\x03\x15\x03\x15\x05\x15\u013A\n\x15" + + "\x03\x16\x03\x16\x05\x16\u013E\n\x16\x03\x16\x03\x16\x03\x16\x03\x17\x03" + + "\x17\x05\x17\u0145\n\x17\x03\x18\x03\x18\x03\x18\x05\x18\u014A\n\x18\x03" + + "\x19\x03\x19\x03\x19\x03\x19\x05\x19\u0150\n\x19\x03\x1A\x03\x1A\x03\x1A" + + "\x03\x1A\x03\x1B\x03\x1B\x03\x1B\x03\x1B\x03\x1C\x03\x1C\x05\x1C\u015C" + + "\n\x1C\x03\x1D\x03\x1D\x03\x1D\x05\x1D\u0161\n\x1D\x03\x1E\x03\x1E\x03" + + "\x1E\x03\x1E\x05\x1E\u0167\n\x1E\x03\x1F\x03\x1F\x03\x1F\x03\x1F\x05\x1F" + + "\u016D\n\x1F\x03\x1F\x03\x1F\x03 \x03 \x03 \x03 \x03 \x03 \x03 \x03 \x03" + + " \x03 \x03 \x03 \x03 \x03 \x05 \u017F\n \x03!\x03!\x03!\x07!\u0184\n!" + + "\f!\x0E!\u0187\v!\x03\"\x03\"\x03#\x03#\x03$\x03$\x05$\u018F\n$\x03$\x03" + + "$\x03%\x03%\x03%\x05%\u0196\n%\x03%\x05%\u0199\n%\x03&\x03&\x03&\x07&" + + "\u019E\n&\f&\x0E&\u01A1\v&\x03\'\x03\'\x03\'\x03\'\x03(\x03(\x03(\x03" + + "(\x03(\x03(\x07(\u01AD\n(\f(\x0E(\u01B0\v(\x03)\x03)\x03)\x03)\x03)\x05" + + ")\u01B7\n)\x03*\x03*\x03*\x03*\x03*\x03*\x03+\x03+\x03+\x03+\x03,\x03" + + ",\x03-\x03-\x03-\x03-\x05-\u01C9\n-\x03.\x03.\x03.\x03/\x03/\x03/\x03" + + "/\x07/\u01D2\n/\f/\x0E/\u01D5\v/\x03/\x03/\x030\x030\x030\x030\x031\x03" + + "1\x031\x032\x032\x052\u01E2\n2\x033\x033\x033\x053\u01E7\n3\x033\x033" + + "\x033\x034\x034\x034\x034\x074\u01F0\n4\f4\x0E4\u01F3\v4\x034\x034\x03" + + "5\x035\x035\x035\x035\x035\x035\x055\u01FE\n5\x036\x036\x036\x036\x03" + + "7\x037\x037\x077\u0207\n7\f7\x0E7\u020A\v7\x038\x038\x038\x078\u020F\n" + + "8\f8\x0E8\u0212\v8\x039\x039\x039\x059\u0217\n9\x039\x039\x039\x039\x03" + + "9\x03:\x03:\x03;\x03;\x03;\x03;\x03;\x05;\u0225\n;\x03<\x03<\x05<\u0229" + + "\n<\x03=\x03=\x03=\x03=\x05=\u022F\n=\x03>\x03>\x03>\x03>\x03?\x03?\x03" + + "?\x05?\u0238\n?\x03?\x03?\x03?\x03?\x07?\u023E\n?\f?\x0E?\u0241\v?\x03" + + "?\x03?\x03?\x03?\x03?\x03?\x07?\u0249\n?\f?\x0E?\u024C\v?\x03?\x03?\x03" + + "?\x03?\x03?\x07?\u0253\n?\f?\x0E?\u0256\v?\x03@\x03@\x03@\x03@\x05@\u025C" + + "\n@\x03A\x03A\x03B\x03B\x03B\x03B\x05B\u0264\nB\x03C\x03C\x03D\x03D\x03" + + "D\x03D\x05D\u026C\nD\x03E\x03E\x03F\x05F\u0271\nF\x03F\x03F\x03G\x03G" + + "\x03G\x03G\x03G\x03G\x03G\x03G\x03G\x03G\x03G\x05G\u0280\nG\x03H\x03H" + + "\x03H\x03H\x05H\u0286\nH\x03I\x03I\x03I\x03I\x03I\x03J\x03J\x03J\x07J" + + "\u0290\nJ\fJ\x0EJ\u0293\vJ\x03K\x03K\x03K\x03K\x03K\x03K\x03K\x03K\x05" + + "K\u029D\nK\x03L\x03L\x03L\x07L\u02A2\nL\fL\x0EL\u02A5\vL\x03L\x05L\u02A8" + + "\nL\x03M\x03M\x03M\x05M\u02AD\nM\x03N\x03N\x03N\x03N\x03N\x05N\u02B4\n" + + "N\x03O\x03O\x07O\u02B8\nO\fO\x0EO\u02BB\vO\x03P\x03P\x03P\x03Q\x03Q\x03" + + "Q\x03R\x03R\x03S\x03S\x03T\x03T\x03T\x03T\x05T\u02CB\nT\x03U\x03U\x03" + + "U\x03U\x03V\x03V\x03V\x07V\u02D4\nV\fV\x0EV\u02D7\vV\x03W\x03W\x05W\u02DB" + + "\nW\x03X\x03X\x03X\x03X\x03X\x03X\x05X\u02E3\nX\x03Y\x03Y\x03Y\x03Y\x03" + + "Y\x03Y\x07Y\u02EB\nY\fY\x0EY\u02EE\vY\x03Y\x03Y\x03Y\x05Y\u02F3\nY\x03" + + "Y\x03Y\x03Z\x03Z\x03Z\x03Z\x03[\x03[\x03[\x05[\u02FE\n[\x03\\\x03\\\x03" + + "\\\x03\\\x03\\\x03]\x03]\x03]\x03]\x03]\x03^\x03^\x03^\x03^\x03^\x03^" + + "\x03^\x03_\x03_\x03_\x03_\x03`\x03`\x03a\x03a\x03b\x03b\x03b\x03b\x03" + + "b\x03c\x03c\x03c\x07c\u0321\nc\fc\x0Ec\u0324\vc\x03c\x02\x02\x02d\x02" + + "\x02\x04\x02\x06\x02\b\x02\n\x02\f\x02\x0E\x02\x10\x02\x12\x02\x14\x02" + + "\x16\x02\x18\x02\x1A\x02\x1C\x02\x1E\x02 \x02\"\x02$\x02&\x02(\x02*\x02" + + ",\x02.\x020\x022\x024\x026\x028\x02:\x02<\x02>\x02@\x02B\x02D\x02F\x02" + + "H\x02J\x02L\x02N\x02P\x02R\x02T\x02V\x02X\x02Z\x02\\\x02^\x02`\x02b\x02" + + "d\x02f\x02h\x02j\x02l\x02n\x02p\x02r\x02t\x02v\x02x\x02z\x02|\x02~\x02" + + "\x80\x02\x82\x02\x84\x02\x86\x02\x88\x02\x8A\x02\x8C\x02\x8E\x02\x90\x02" + + "\x92\x02\x94\x02\x96\x02\x98\x02\x9A\x02\x9C\x02\x9E\x02\xA0\x02\xA2\x02" + + "\xA4\x02\xA6\x02\xA8\x02\xAA\x02\xAC\x02\xAE\x02\xB0\x02\xB2\x02\xB4\x02" + + "\xB6\x02\xB8\x02\xBA\x02\xBC\x02\xBE\x02\xC0\x02\xC2\x02\xC4\x02\x02\t" + + "\x03\x02+,\x03\x02JK\x07\x02\x06\x06\b\b\x16\x16 HH\x04\x02\x15\x153" + + "8\x04\x02\x1C\x1C+,\x06\x02\x03\x03\v\v\x18\x18-.\x04\x02\r\r%%\x02\u0323" + + "\x02\xC6\x03\x02\x02\x02\x04\xC8\x03\x02\x02\x02\x06\xDE\x03\x02\x02\x02" + + "\b\xE0\x03\x02\x02\x02\n\xEB\x03\x02\x02\x02\f\xF0\x03\x02\x02\x02\x0E" + + "\xF4\x03\x02\x02\x02\x10\xFF\x03\x02\x02\x02\x12\u0101\x03\x02\x02\x02" + + "\x14\u0109\x03\x02\x02\x02\x16\u010D\x03\x02\x02\x02\x18\u011C\x03\x02" + + "\x02\x02\x1A\u0120\x03\x02\x02\x02\x1C\u0122\x03\x02\x02\x02\x1E\u0124" + + "\x03\x02\x02\x02 \u0126\x03\x02\x02\x02\"\u0128\x03\x02\x02\x02$\u012A" + + "\x03\x02\x02\x02&\u012C\x03\x02\x02\x02(\u0134\x03\x02\x02\x02*\u013B" + + "\x03\x02\x02\x02,\u0142\x03\x02\x02\x02.\u0149\x03\x02\x02\x020\u014F" + + "\x03\x02\x02\x022\u0151\x03\x02\x02\x024\u0155\x03\x02\x02\x026\u015B" + + "\x03\x02\x02\x028\u0160\x03\x02\x02\x02:\u0166\x03\x02\x02\x02<\u0168" + + "\x03\x02\x02\x02>\u017E\x03\x02\x02\x02@\u0180\x03\x02\x02\x02B\u0188" + + "\x03\x02\x02\x02D\u018A\x03\x02\x02\x02F\u018C\x03\x02\x02\x02H\u0198" + + "\x03\x02\x02\x02J\u019A\x03\x02\x02\x02L\u01A2\x03\x02\x02\x02N\u01A6" + + "\x03\x02\x02\x02P\u01B6\x03\x02\x02\x02R\u01B8\x03\x02\x02\x02T\u01BE" + + "\x03\x02\x02\x02V\u01C2\x03\x02\x02\x02X\u01C8\x03\x02\x02\x02Z\u01CA" + + "\x03\x02\x02\x02\\\u01CD\x03\x02\x02\x02^\u01D8\x03\x02\x02\x02`\u01DC" + + "\x03\x02\x02\x02b\u01E1\x03\x02\x02\x02d\u01E3\x03\x02\x02\x02f\u01EB" + + "\x03\x02\x02\x02h\u01FD\x03\x02\x02\x02j\u01FF\x03\x02\x02\x02l\u0203" + + "\x03\x02\x02\x02n\u020B\x03\x02\x02\x02p\u0213\x03\x02\x02\x02r\u021D" + + "\x03\x02\x02\x02t\u0224\x03\x02\x02\x02v\u0228\x03\x02\x02\x02x\u022E" + + "\x03\x02\x02\x02z\u0230\x03\x02\x02\x02|\u0237\x03\x02\x02\x02~\u0257" + + "\x03\x02\x02\x02\x80\u025D\x03\x02\x02\x02\x82\u025F\x03\x02\x02\x02\x84" + + "\u0265\x03\x02\x02\x02\x86\u0267\x03\x02\x02\x02\x88\u026D\x03\x02\x02" + + "\x02\x8A\u0270\x03\x02\x02\x02\x8C\u027F\x03\x02\x02\x02\x8E\u0285\x03" + + "\x02\x02\x02\x90\u0287\x03\x02\x02\x02\x92\u028C\x03\x02\x02\x02\x94\u029C" + + "\x03\x02\x02\x02\x96\u02A7\x03\x02\x02\x02\x98\u02A9\x03\x02\x02\x02\x9A" + + "\u02AE\x03\x02\x02\x02\x9C\u02B5\x03\x02\x02\x02\x9E\u02BC\x03\x02\x02" + + "\x02\xA0\u02BF\x03\x02\x02\x02\xA2\u02C2\x03\x02\x02\x02\xA4\u02C4\x03" + + "\x02\x02\x02\xA6\u02CA\x03\x02\x02\x02\xA8\u02CC\x03\x02\x02\x02\xAA\u02D0" + + "\x03\x02\x02\x02\xAC\u02DA\x03\x02\x02\x02\xAE\u02DC\x03\x02\x02\x02\xB0" + + "\u02E4\x03\x02\x02\x02\xB2\u02F6\x03\x02\x02\x02\xB4\u02FD\x03\x02\x02" + + "\x02\xB6\u02FF\x03\x02\x02\x02\xB8\u0304\x03\x02\x02\x02\xBA\u0309\x03" + + "\x02\x02\x02\xBC\u0310\x03\x02\x02\x02\xBE\u0314\x03\x02\x02\x02\xC0\u0316" + + "\x03\x02\x02\x02\xC2\u0318\x03\x02\x02\x02\xC4\u031D\x03\x02\x02\x02\xC6" + + "\xC7\x05\x04\x03\x02\xC7\x03\x03\x02\x02\x02\xC8\xCA\x05\x06\x04\x02\xC9" + + "\xCB\x07F\x02\x02\xCA\xC9\x03\x02\x02\x02\xCA\xCB\x03\x02\x02\x02\xCB" + + "\xCC\x03\x02\x02\x02\xCC\xCD\x05\n\x06\x02\xCD\xCE\x07A\x02\x02\xCE\xCF" + + "\x07\x02\x02\x03\xCF\x05\x03\x02\x02\x02\xD0\xD1\x07\x1F\x02\x02\xD1\xD6" + + "\x05\b\x05\x02\xD2\xD3\x079\x02\x02\xD3\xD4\x05l7\x02\xD4\xD5\x07:\x02" + + "\x02\xD5\xD7\x03\x02\x02\x02\xD6\xD2\x03\x02\x02\x02\xD6\xD7\x03\x02\x02" + + "\x02\xD7\xD8\x03\x02\x02\x02\xD8\xD9\x071\x02\x02\xD9\xDF\x03\x02\x02" + + "\x02\xDA\xDB\x07E\x02\x02\xDB\xDC\x05\b\x05\x02\xDC\xDD\x071\x02\x02\xDD" + + "\xDF\x03\x02\x02\x02\xDE\xD0\x03\x02\x02\x02\xDE\xDA\x03\x02\x02\x02\xDF" + + "\x07\x03\x02\x02\x02\xE0\xE1\x07O\x02\x02\xE1\t\x03\x02\x02\x02\xE2\xEA" + + "\x05\x0E\b\x02\xE3\xEA\x05\x12\n\x02\xE4\xEA\x05&\x14\x02\xE5\xEA\x05" + + "\\/\x02\xE6\xEA\x05`1\x02\xE7\xEA\x05\f\x07\x02\xE8\xEA\x07I\x02\x02\xE9" + + "\xE2\x03\x02\x02\x02\xE9\xE3\x03\x02\x02\x02\xE9\xE4\x03\x02\x02\x02\xE9" + + "\xE5\x03\x02\x02\x02\xE9\xE6\x03\x02\x02\x02\xE9\xE7\x03\x02\x02\x02\xE9" + + "\xE8\x03\x02\x02\x02\xEA\xED\x03\x02\x02\x02\xEB\xE9\x03\x02\x02\x02\xEB" + + "\xEC\x03\x02\x02\x02\xEC\xEE\x03\x02\x02\x02\xED\xEB\x03\x02\x02\x02\xEE" + + "\xEF\x05\xA8U\x02\xEF\v\x03\x02\x02\x02\xF0\xF1\x07G\x02\x02\xF1\xF2\x05" + + "l7\x02\xF2\xF3\x071\x02\x02\xF3\r\x03\x02\x02\x02\xF4\xF5\x07\x17\x02" + + "\x02\xF5\xFA\x05\x10\t\x02\xF6\xF7\x070\x02\x02\xF7\xF9\x05\x10\t\x02" + + "\xF8\xF6\x03\x02\x02\x02\xF9\xFC\x03\x02\x02\x02\xFA\xF8\x03\x02\x02\x02" + + "\xFA\xFB\x03\x02\x02\x02\xFB\xFD\x03\x02\x02\x02\xFC\xFA\x03\x02\x02\x02" + + "\xFD\xFE\x071\x02\x02\xFE\x0F\x03\x02\x02\x02\xFF\u0100\x05\x1C\x0F\x02" + + "\u0100\x11\x03\x02\x02\x02\u0101\u0105\x07\n\x02\x02\u0102\u0103\x05\x14" + + "\v\x02\u0103\u0104\x071\x02\x02\u0104\u0106\x03\x02\x02\x02\u0105\u0102" + + "\x03\x02\x02\x02\u0106\u0107\x03\x02\x02\x02\u0107\u0105\x03\x02\x02\x02" + + "\u0107\u0108\x03\x02\x02\x02\u0108\x13\x03\x02\x02\x02\u0109\u010A\x05" + + "\b\x05\x02\u010A\u010B\x073\x02\x02\u010B\u010C\x05\x18\r\x02\u010C\x15" + + "\x03\x02\x02\x02\u010D\u010E\x07\t\x02\x02\u010E\u010F\x079\x02\x02\u010F" + + "\u0110\x05\x1C\x0F\x02\u0110\u0111\x07:\x02\x02\u0111\x17\x03\x02\x02" + + "\x02\u0112\u011D\x05\x1A\x0E\x02\u0113\u0114\x05 \x11\x02\u0114\u0115" + + "\x05\x1A\x0E\x02\u0115\u011D\x03\x02\x02\x02\u0116\u011D\x05\b\x05\x02" + + "\u0117\u0118\x05 \x11\x02\u0118\u0119\x05\b\x05\x02\u0119\u011D\x03\x02" + + "\x02\x02\u011A\u011D\x05$\x13\x02\u011B\u011D\x05\x16\f\x02\u011C\u0112" + + "\x03\x02\x02\x02\u011C\u0113\x03\x02\x02\x02\u011C\u0116\x03\x02\x02\x02" + + "\u011C\u0117\x03\x02\x02\x02\u011C\u011A\x03\x02\x02\x02\u011C\u011B\x03" + + "\x02\x02\x02\u011D\x19\x03\x02\x02\x02\u011E\u0121\x05\x1C\x0F\x02\u011F" + + "\u0121\x05\x1E\x10\x02\u0120\u011E\x03\x02\x02\x02\u0120\u011F\x03\x02" + + "\x02\x02\u0121\x1B\x03\x02\x02\x02\u0122\u0123\x07Q\x02\x02\u0123\x1D" + + "\x03\x02\x02\x02\u0124\u0125\x07R\x02\x02\u0125\x1F\x03\x02\x02\x02\u0126" + + "\u0127\t\x02\x02\x02\u0127!\x03\x02\x02\x02\u0128\u0129\t\x03\x02\x02" + + "\u0129#\x03\x02\x02\x02\u012A\u012B\x07P\x02\x02\u012B%\x03\x02\x02\x02" + + "\u012C\u0130\x07&\x02\x02\u012D\u012E\x05(\x15\x02\u012E\u012F\x071\x02" + + "\x02\u012F\u0131\x03\x02\x02\x02\u0130\u012D\x03\x02\x02\x02\u0131\u0132" + + "\x03\x02\x02\x02\u0132\u0130\x03\x02\x02\x02\u0132\u0133\x03\x02\x02\x02" + + "\u0133\'\x03\x02\x02\x02\u0134\u0135\x05\b\x05\x02\u0135\u0139\x073\x02" + + "\x02\u0136\u013A\x05.\x18\x02\u0137\u013A\x05*\x16\x02\u0138\u013A\x05" + + ",\x17\x02\u0139\u0136\x03\x02\x02\x02\u0139\u0137\x03\x02\x02\x02\u0139" + + "\u0138\x03\x02\x02\x02\u013A)\x03\x02\x02\x02\u013B\u013D\x07\x12\x02" + + "\x02\u013C\u013E\x05f4\x02\u013D\u013C\x03\x02\x02\x02\u013D\u013E\x03" + + "\x02\x02\x02\u013E\u013F\x03\x02\x02\x02\u013F\u0140\x072\x02\x02\u0140" + + "\u0141\x05r:\x02\u0141+\x03\x02\x02\x02\u0142\u0144\x07\x1E\x02\x02\u0143" + + "\u0145\x05f4\x02\u0144\u0143\x03\x02\x02\x02\u0144\u0145\x03\x02\x02\x02" + + "\u0145-\x03\x02\x02\x02\u0146\u014A\x050\x19\x02\u0147\u014A\x058\x1D" + + "\x02\u0148\u014A\x05Z.\x02\u0149\u0146\x03\x02\x02\x02\u0149\u0147\x03" + + "\x02\x02\x02\u0149\u0148\x03\x02\x02\x02\u014A/\x03\x02\x02\x02\u014B" + + "\u0150\x052\x1A\x02\u014C\u0150\x054\x1B\x02\u014D\u0150\x056\x1C\x02" + + "\u014E\u0150\x05<\x1F\x02\u014F\u014B\x03\x02\x02\x02\u014F\u014C\x03" + + "\x02\x02\x02\u014F\u014D\x03\x02\x02\x02\u014F\u014E\x03\x02\x02\x02\u0150" + + "1\x03\x02\x02\x02\u0151\u0152\x079\x02\x02\u0152\u0153\x05l7\x02\u0153" + + "\u0154\x07:\x02\x02\u01543\x03\x02\x02\x02\u0155\u0156\x05\x18\r\x02\u0156" + + "\u0157\x07B\x02\x02\u0157\u0158\x05\x18\r\x02\u01585\x03\x02\x02\x02\u0159" + + "\u015C\x05\b\x05\x02\u015A\u015C\t\x04\x02\x02\u015B\u0159\x03\x02\x02" + + "\x02\u015B\u015A\x03\x02\x02\x02\u015C7\x03\x02\x02\x02\u015D\u015E\x07" + + "\x1D\x02\x02\u015E\u0161\x05:\x1E\x02\u015F\u0161\x05:\x1E\x02\u0160\u015D" + + "\x03\x02\x02\x02\u0160\u015F\x03\x02\x02\x02\u01619\x03\x02\x02\x02\u0162" + + "\u0167\x05> \x02\u0163\u0167\x05F$\x02\u0164\u0167\x05T+\x02\u0165\u0167" + + "\x05X-\x02\u0166\u0162\x03\x02\x02\x02\u0166\u0163\x03\x02\x02\x02\u0166" + + "\u0164\x03\x02\x02\x02\u0166\u0165\x03\x02\x02\x02\u0167;\x03\x02\x02" + + "\x02\u0168\u0169\x07H\x02\x02\u0169\u016C\x07;\x02\x02\u016A\u016D\x05" + + "\b\x05\x02\u016B\u016D\x05\x1A\x0E\x02\u016C\u016A\x03\x02\x02\x02\u016C" + + "\u016B\x03\x02\x02\x02\u016D\u016E\x03\x02\x02\x02\u016E\u016F\x07=\x02" + + "\x02\u016F=\x03\x02\x02\x02\u0170\u0171\x07\x04\x02\x02\u0171\u0172\x07" + + ";\x02\x02\u0172\u0173\x05@!\x02\u0173\u0174\x07=\x02\x02\u0174\u0175\x07" + + "\x1B\x02\x02\u0175\u0176\x05D#\x02\u0176\u017F\x03\x02\x02\x02\u0177\u0178" + + "\x07\x04\x02\x02\u0178\u0179\x07<\x02\x02\u0179\u017A\x05@!\x02\u017A" + + "\u017B\x07>\x02\x02\u017B\u017C\x07\x1B\x02\x02\u017C\u017D\x05D#\x02" + + "\u017D\u017F\x03\x02\x02\x02\u017E\u0170\x03\x02\x02\x02\u017E\u0177\x03" + + "\x02\x02\x02\u017F?\x03\x02\x02\x02\u0180\u0185\x05B\"\x02\u0181\u0182" + + "\x070\x02\x02\u0182\u0184\x05B\"\x02\u0183\u0181\x03\x02\x02\x02\u0184" + + "\u0187\x03\x02\x02\x02\u0185\u0183\x03\x02\x02\x02\u0185\u0186\x03\x02" + + "\x02\x02\u0186A\x03\x02\x02\x02\u0187\u0185\x03\x02\x02\x02\u0188\u0189" + + "\x050\x19\x02\u0189C\x03\x02\x02\x02\u018A\u018B\x05.\x18\x02\u018BE\x03" + + "\x02\x02\x02\u018C\u018E\x07!\x02\x02\u018D\u018F\x05H%\x02\u018E\u018D" + + "\x03\x02\x02\x02\u018E\u018F\x03\x02\x02\x02\u018F\u0190\x03\x02\x02\x02" + + "\u0190\u0191\x07\x0F\x02\x02\u0191G\x03\x02\x02\x02\u0192\u0195\x05J&" + + "\x02\u0193\u0194\x071\x02\x02\u0194\u0196\x05N(\x02\u0195\u0193\x03\x02" + + "\x02\x02\u0195\u0196\x03\x02\x02\x02\u0196\u0199\x03\x02\x02\x02\u0197" + + "\u0199\x05N(\x02\u0198\u0192\x03\x02\x02\x02\u0198\u0197\x03\x02\x02\x02" + + "\u0199I\x03\x02\x02\x02\u019A\u019F\x05L\'\x02\u019B\u019C\x071\x02\x02" + + "\u019C\u019E\x05L\'\x02\u019D\u019B\x03\x02\x02\x02\u019E\u01A1\x03\x02" + + "\x02\x02\u019F\u019D\x03\x02\x02\x02\u019F\u01A0\x03\x02\x02\x02\u01A0" + + "K\x03\x02\x02\x02\u01A1\u019F\x03\x02\x02\x02\u01A2\u01A3\x05l7\x02\u01A3" + + "\u01A4\x072\x02\x02\u01A4\u01A5\x05.\x18\x02\u01A5M\x03\x02\x02\x02\u01A6" + + "\u01A7\x07\x07\x02\x02\u01A7\u01A8\x05P)\x02\u01A8\u01A9\x07\x1B\x02\x02" + + "\u01A9\u01AE\x05R*\x02\u01AA\u01AB\x071\x02\x02\u01AB\u01AD\x05R*\x02" + + "\u01AC\u01AA\x03\x02\x02\x02\u01AD\u01B0\x03\x02\x02\x02\u01AE\u01AC\x03" + + "\x02\x02\x02\u01AE\u01AF\x03\x02\x02\x02\u01AFO\x03\x02\x02\x02\u01B0" + + "\u01AE\x03\x02\x02\x02\u01B1\u01B2\x05\b\x05\x02\u01B2\u01B3\x072\x02" + + "\x02\u01B3\u01B4\x056\x1C\x02\u01B4\u01B7\x03\x02\x02\x02\u01B5\u01B7" + + "\x056\x1C\x02\u01B6\u01B1\x03\x02\x02\x02\u01B6\u01B5\x03\x02\x02\x02" + + "\u01B7Q\x03\x02\x02\x02\u01B8\u01B9\x05n8\x02\u01B9\u01BA\x072\x02\x02" + + "\u01BA\u01BB\x079\x02\x02\u01BB\u01BC\x05H%\x02\u01BC\u01BD\x07:\x02\x02" + + "\u01BDS\x03\x02\x02\x02\u01BE\u01BF\x07#\x02\x02\u01BF\u01C0\x07\x1B\x02" + + "\x02\u01C0\u01C1\x05V,\x02\u01C1U\x03\x02\x02\x02\u01C2\u01C3\x050\x19" + + "\x02\u01C3W\x03\x02\x02\x02\u01C4\u01C5\x07\x10\x02\x02\u01C5\u01C6\x07" + + "\x1B\x02\x02\u01C6\u01C9\x05.\x18\x02\u01C7\u01C9\x07\x10\x02\x02\u01C8" + + "\u01C4\x03\x02\x02\x02\u01C8\u01C7\x03\x02\x02\x02\u01C9Y\x03\x02\x02" + + "\x02\u01CA\u01CB\x07?\x02\x02\u01CB\u01CC\x056\x1C\x02\u01CC[\x03\x02" + + "\x02\x02\u01CD\u01CE\x07(\x02\x02\u01CE\u01D3\x05^0\x02\u01CF\u01D0\x07" + + "1\x02\x02\u01D0\u01D2\x05^0\x02\u01D1\u01CF\x03\x02\x02\x02\u01D2\u01D5" + + "\x03\x02\x02\x02\u01D3\u01D1\x03\x02\x02\x02\u01D3\u01D4\x03\x02\x02\x02" + + "\u01D4\u01D6\x03\x02\x02\x02\u01D5\u01D3\x03\x02\x02\x02\u01D6\u01D7\x07" + + "1\x02\x02\u01D7]\x03\x02\x02\x02\u01D8\u01D9\x05l7\x02\u01D9\u01DA\x07" + + "2\x02\x02\u01DA\u01DB\x05.\x18\x02\u01DB_\x03\x02\x02\x02\u01DC\u01DD" + + "\x05b2\x02\u01DD\u01DE\x071\x02\x02\u01DEa\x03\x02\x02\x02\u01DF\u01E2" + + "\x05d3\x02\u01E0\u01E2\x05p9\x02\u01E1\u01DF\x03\x02\x02\x02\u01E1\u01E0" + + "\x03\x02\x02\x02\u01E2c\x03\x02\x02\x02\u01E3\u01E4\x07\x1E\x02\x02\u01E4" + + "\u01E6\x05\b\x05\x02\u01E5\u01E7\x05f4\x02\u01E6\u01E5\x03\x02\x02\x02" + + "\u01E6\u01E7\x03\x02\x02\x02\u01E7\u01E8\x03\x02\x02\x02\u01E8\u01E9\x07" + + "1\x02\x02\u01E9\u01EA\x05\n\x06\x02\u01EAe\x03\x02\x02\x02\u01EB\u01EC" + + "\x079\x02\x02\u01EC\u01F1\x05h5\x02\u01ED\u01EE\x071\x02\x02\u01EE\u01F0" + + "\x05h5\x02\u01EF\u01ED\x03\x02\x02\x02\u01F0\u01F3\x03\x02\x02\x02\u01F1" + + "\u01EF\x03\x02\x02\x02\u01F1\u01F2\x03\x02\x02\x02\u01F2\u01F4\x03\x02" + + "\x02\x02\u01F3\u01F1\x03\x02\x02\x02\u01F4\u01F5\x07:\x02\x02\u01F5g\x03" + + "\x02\x02\x02\u01F6\u01FE\x05j6\x02\u01F7\u01F8\x07(\x02\x02\u01F8\u01FE" + + "\x05j6\x02\u01F9\u01FA\x07\x12\x02\x02\u01FA\u01FE\x05j6\x02\u01FB\u01FC" + + "\x07\x1E\x02\x02\u01FC\u01FE\x05j6\x02\u01FD\u01F6\x03\x02\x02\x02\u01FD" + + "\u01F7\x03\x02\x02\x02\u01FD\u01F9\x03\x02\x02\x02\u01FD\u01FB\x03\x02" + + "\x02\x02\u01FEi\x03\x02\x02\x02\u01FF\u0200\x05l7\x02\u0200\u0201\x07" + + "2\x02\x02\u0201\u0202\x056\x1C\x02\u0202k\x03\x02\x02\x02\u0203\u0208" + + "\x05\b\x05\x02\u0204\u0205\x070\x02\x02\u0205\u0207\x05\b\x05\x02\u0206" + + "\u0204\x03\x02\x02\x02\u0207\u020A\x03\x02\x02\x02\u0208\u0206\x03\x02" + + "\x02\x02\u0208\u0209\x03\x02\x02\x02\u0209m\x03\x02\x02\x02\u020A\u0208" + + "\x03\x02\x02\x02\u020B\u0210\x05\x18\r\x02\u020C\u020D\x070\x02\x02\u020D" + + "\u020F\x05\x18\r\x02\u020E\u020C\x03\x02\x02\x02\u020F\u0212\x03\x02\x02" + + "\x02\u0210\u020E\x03\x02\x02\x02\u0210\u0211\x03\x02\x02\x02\u0211o\x03" + + "\x02\x02\x02\u0212\u0210\x03\x02\x02\x02\u0213\u0214\x07\x12\x02\x02\u0214" + + "\u0216\x05\b\x05\x02\u0215\u0217\x05f4\x02\u0216\u0215\x03\x02\x02\x02" + + "\u0216\u0217\x03\x02\x02\x02\u0217\u0218\x03\x02\x02\x02\u0218\u0219\x07" + + "2\x02\x02\u0219\u021A\x05r:\x02\u021A\u021B\x071\x02\x02\u021B\u021C\x05" + + "\n\x06\x02\u021Cq\x03\x02\x02\x02\u021D\u021E\x056\x1C\x02\u021Es\x03" + + "\x02\x02\x02\u021F\u0220\x05\x10\t\x02\u0220\u0221\x072\x02\x02\u0221" + + "\u0222\x05v<\x02\u0222\u0225\x03\x02\x02\x02\u0223\u0225\x05v<\x02\u0224" + + "\u021F\x03\x02\x02\x02\u0224\u0223\x03\x02\x02\x02\u0225u\x03\x02\x02" + + "\x02\u0226\u0229\x05x=\x02\u0227\u0229\x05\xA6T\x02\u0228\u0226\x03\x02" + + "\x02\x02\u0228\u0227\x03"; + private static readonly _serializedATNSegment1: string = + "\x02\x02\x02\u0229w\x03\x02\x02\x02\u022A\u022F\x05z>\x02\u022B\u022F" + + "\x05\x9AN\x02\u022C\u022F\x05\xA0Q\x02\u022D\u022F\x05\xA2R\x02\u022E" + + "\u022A\x03\x02\x02\x02\u022E\u022B\x03\x02\x02\x02\u022E\u022C\x03\x02" + + "\x02\x02\u022E\u022D\x03\x02\x02\x02\u022Fy\x03\x02\x02\x02\u0230\u0231" + + "\x05|?\x02\u0231\u0232\x07/\x02\x02\u0232\u0233\x05~@\x02\u0233{\x03\x02" + + "\x02\x02\u0234\u0235\x07@\x02\x02\u0235\u0238\x05\b\x05\x02\u0236\u0238" + + "\x05\b\x05\x02\u0237\u0234\x03\x02\x02\x02\u0237\u0236\x03\x02\x02\x02" + + "\u0238\u0254\x03\x02\x02\x02\u0239\u023A\x07;\x02\x02\u023A\u023F\x05" + + "~@\x02\u023B\u023C\x070\x02\x02\u023C\u023E\x05~@\x02\u023D\u023B\x03" + + "\x02\x02\x02\u023E\u0241\x03\x02\x02\x02\u023F\u023D\x03\x02\x02\x02\u023F" + + "\u0240\x03\x02\x02\x02\u0240\u0242\x03\x02\x02\x02\u0241\u023F\x03\x02" + + "\x02\x02\u0242\u0243\x07=\x02\x02\u0243\u0253\x03\x02\x02\x02\u0244\u0245" + + "\x07<\x02\x02\u0245\u024A\x05~@\x02\u0246\u0247\x070\x02\x02\u0247\u0249" + + "\x05~@\x02\u0248\u0246\x03\x02\x02\x02\u0249\u024C\x03\x02\x02\x02\u024A" + + "\u0248\x03\x02\x02\x02\u024A\u024B\x03\x02\x02\x02\u024B\u024D\x03\x02" + + "\x02\x02\u024C\u024A\x03\x02\x02\x02\u024D\u024E\x07>\x02\x02\u024E\u0253" + + "\x03\x02\x02\x02\u024F\u0250\x07A\x02\x02\u0250\u0253\x05\b\x05\x02\u0251" + + "\u0253\x07?\x02\x02\u0252\u0239\x03\x02\x02\x02\u0252\u0244\x03\x02\x02" + + "\x02\u0252\u024F\x03\x02\x02\x02\u0252\u0251\x03\x02\x02\x02\u0253\u0256" + + "\x03\x02\x02\x02\u0254\u0252\x03\x02\x02\x02\u0254\u0255\x03\x02\x02\x02" + + "\u0255}\x03\x02\x02\x02\u0256\u0254\x03\x02\x02\x02\u0257\u025B\x05\x82" + + "B\x02\u0258\u0259\x05\x80A\x02\u0259\u025A\x05~@\x02\u025A\u025C\x03\x02" + + "\x02\x02\u025B\u0258\x03\x02\x02\x02\u025B\u025C\x03\x02\x02\x02\u025C" + + "\x7F\x03\x02\x02\x02\u025D\u025E\t\x05\x02\x02\u025E\x81\x03\x02\x02\x02" + + "\u025F\u0263\x05\x86D\x02\u0260\u0261\x05\x84C\x02\u0261\u0262\x05\x82" + + "B\x02\u0262\u0264\x03\x02\x02\x02\u0263\u0260\x03\x02\x02\x02\u0263\u0264" + + "\x03\x02\x02\x02\u0264\x83\x03\x02\x02\x02\u0265\u0266\t\x06\x02\x02\u0266" + + "\x85\x03\x02\x02\x02\u0267\u026B\x05\x8AF\x02\u0268\u0269\x05\x88E\x02" + + "\u0269\u026A\x05\x86D\x02\u026A\u026C\x03\x02\x02\x02\u026B\u0268\x03" + + "\x02\x02\x02\u026B\u026C\x03\x02\x02\x02\u026C\x87\x03\x02\x02\x02\u026D" + + "\u026E\t\x07\x02\x02\u026E\x89\x03\x02\x02\x02\u026F\u0271\t\x02\x02\x02" + + "\u0270\u026F\x03\x02\x02\x02\u0270\u0271\x03\x02\x02\x02\u0271\u0272\x03" + + "\x02\x02\x02\u0272\u0273\x05\x8CG\x02\u0273\x8B\x03\x02\x02\x02\u0274" + + "\u0280\x05|?\x02\u0275\u0276\x079\x02\x02\u0276\u0277\x05~@\x02\u0277" + + "\u0278\x07:\x02\x02\u0278\u0280\x03\x02\x02\x02\u0279\u0280\x05\x90I\x02" + + "\u027A\u0280\x05\x8EH\x02\u027B\u0280\x05\x94K\x02\u027C\u027D\x07\x1A" + + "\x02\x02\u027D\u0280\x05\x8CG\x02\u027E\u0280\x05\"\x12\x02\u027F\u0274" + + "\x03\x02\x02\x02\u027F\u0275\x03\x02\x02\x02\u027F\u0279\x03\x02\x02\x02" + + "\u027F\u027A\x03\x02\x02\x02\u027F\u027B\x03\x02\x02\x02\u027F\u027C\x03" + + "\x02\x02\x02\u027F\u027E\x03\x02\x02\x02\u0280\x8D\x03\x02\x02\x02\u0281" + + "\u0286\x05\x1A\x0E\x02\u0282\u0286\x05\x16\f\x02\u0283\u0286\x05$\x13" + + "\x02\u0284\u0286\x07\x19\x02\x02\u0285\u0281\x03\x02\x02\x02\u0285\u0282" + + "\x03\x02\x02\x02\u0285\u0283\x03\x02\x02\x02\u0285\u0284\x03\x02\x02\x02" + + "\u0286\x8F\x03\x02\x02\x02\u0287\u0288\x05\b\x05\x02\u0288\u0289\x079" + + "\x02\x02\u0289\u028A\x05\x92J\x02\u028A\u028B\x07:\x02\x02\u028B\x91\x03" + + "\x02\x02\x02\u028C\u0291\x05\x9CO\x02\u028D\u028E\x070\x02\x02\u028E\u0290" + + "\x05\x9CO\x02\u028F\u028D\x03\x02\x02\x02\u0290\u0293\x03\x02\x02\x02" + + "\u0291\u028F\x03\x02\x02\x02\u0291\u0292\x03\x02\x02\x02\u0292\x93\x03" + + "\x02\x02\x02\u0293\u0291\x03\x02\x02\x02\u0294\u0295\x07;\x02\x02\u0295" + + "\u0296\x05\x96L\x02\u0296\u0297\x07=\x02\x02\u0297\u029D\x03\x02\x02\x02" + + "\u0298\u0299\x07<\x02\x02\u0299\u029A\x05\x96L\x02\u029A\u029B\x07>\x02" + + "\x02\u029B\u029D\x03\x02\x02\x02\u029C\u0294\x03\x02\x02\x02\u029C\u0298" + + "\x03\x02\x02\x02\u029D\x95\x03\x02\x02\x02\u029E\u02A3\x05\x98M\x02\u029F" + + "\u02A0\x070\x02\x02\u02A0\u02A2\x05\x98M\x02\u02A1\u029F\x03\x02\x02\x02" + + "\u02A2\u02A5\x03\x02\x02\x02\u02A3\u02A1\x03\x02\x02\x02\u02A3\u02A4\x03" + + "\x02\x02\x02\u02A4\u02A8\x03\x02\x02\x02\u02A5\u02A3\x03\x02\x02\x02\u02A6" + + "\u02A8\x03\x02\x02\x02\u02A7\u029E\x03\x02\x02\x02\u02A7\u02A6\x03\x02" + + "\x02\x02\u02A8\x97\x03\x02\x02\x02\u02A9\u02AC\x05~@\x02\u02AA\u02AB\x07" + + "B\x02\x02\u02AB\u02AD\x05~@\x02\u02AC\u02AA\x03\x02\x02\x02\u02AC\u02AD" + + "\x03\x02\x02\x02\u02AD\x99\x03\x02\x02\x02\u02AE\u02B3\x05\b\x05\x02\u02AF" + + "\u02B0\x079\x02\x02\u02B0\u02B1\x05\x92J\x02\u02B1\u02B2\x07:\x02\x02" + + "\u02B2\u02B4\x03\x02\x02\x02\u02B3\u02AF\x03\x02\x02\x02\u02B3\u02B4\x03" + + "\x02\x02\x02\u02B4\x9B\x03\x02\x02\x02\u02B5\u02B9\x05~@\x02\u02B6\u02B8" + + "\x05\x9EP\x02\u02B7\u02B6\x03\x02\x02\x02\u02B8\u02BB\x03\x02\x02\x02" + + "\u02B9\u02B7\x03\x02\x02\x02\u02B9\u02BA\x03\x02\x02\x02\u02BA\x9D\x03" + + "\x02\x02\x02\u02BB\u02B9\x03\x02\x02\x02\u02BC\u02BD\x072\x02\x02\u02BD" + + "\u02BE\x05~@\x02\u02BE\x9F\x03\x02\x02\x02\u02BF\u02C0\x07\x13\x02\x02" + + "\u02C0\u02C1\x05\x10\t\x02\u02C1\xA1\x03\x02\x02\x02\u02C2\u02C3\x03\x02" + + "\x02\x02\u02C3\xA3\x03\x02\x02\x02\u02C4\u02C5\x03\x02\x02\x02\u02C5\xA5" + + "\x03\x02\x02\x02\u02C6\u02CB\x05\xA8U\x02\u02C7\u02CB\x05\xACW\x02\u02C8" + + "\u02CB\x05\xB4[\x02\u02C9\u02CB\x05\xC2b\x02\u02CA\u02C6\x03\x02\x02\x02" + + "\u02CA\u02C7\x03\x02\x02\x02\u02CA\u02C8\x03\x02\x02\x02\u02CA\u02C9\x03" + + "\x02\x02\x02\u02CB\xA7\x03\x02\x02\x02\u02CC\u02CD\x07\x05\x02\x02\u02CD" + + "\u02CE\x05\xAAV\x02\u02CE\u02CF\x07\x0F\x02\x02\u02CF\xA9\x03\x02\x02" + + "\x02\u02D0\u02D5\x05t;\x02\u02D1\u02D2\x071\x02\x02\u02D2\u02D4\x05t;" + + "\x02\u02D3\u02D1\x03\x02\x02\x02\u02D4\u02D7\x03\x02\x02\x02\u02D5\u02D3" + + "\x03\x02\x02\x02\u02D5\u02D6\x03\x02\x02\x02\u02D6\xAB\x03\x02\x02\x02" + + "\u02D7\u02D5\x03\x02\x02\x02\u02D8\u02DB\x05\xAEX\x02\u02D9\u02DB\x05" + + "\xB0Y\x02\u02DA\u02D8\x03\x02\x02\x02\u02DA\u02D9\x03\x02\x02\x02\u02DB" + + "\xAD\x03\x02\x02\x02\u02DC\u02DD\x07\x14\x02\x02\u02DD\u02DE\x05~@\x02" + + "\u02DE\u02DF\x07$\x02\x02\u02DF\u02E2\x05t;\x02\u02E0\u02E1\x07\x0E\x02" + + "\x02\u02E1\u02E3\x05t;\x02\u02E2\u02E0\x03\x02\x02\x02\u02E2\u02E3\x03" + + "\x02\x02\x02\u02E3\xAF\x03\x02\x02\x02\u02E4\u02E5\x07\x07\x02\x02\u02E5" + + "\u02E6\x05~@\x02\u02E6\u02E7\x07\x1B\x02\x02\u02E7\u02EC\x05\xB2Z\x02" + + "\u02E8\u02E9\x071\x02\x02\u02E9\u02EB\x05\xB2Z\x02\u02EA\u02E8\x03\x02" + + "\x02\x02\u02EB\u02EE\x03\x02\x02\x02\u02EC\u02EA\x03\x02\x02\x02\u02EC" + + "\u02ED\x03\x02\x02\x02\u02ED\u02F2\x03\x02\x02\x02\u02EE\u02EC\x03\x02" + + "\x02\x02\u02EF\u02F0\x071\x02\x02\u02F0\u02F1\x07\x0E\x02\x02\u02F1\u02F3" + + "\x05\xAAV\x02\u02F2\u02EF\x03\x02\x02\x02\u02F2\u02F3\x03\x02\x02\x02" + + "\u02F3\u02F4\x03\x02\x02\x02\u02F4\u02F5\x07\x0F\x02\x02\u02F5\xB1\x03" + + "\x02\x02\x02\u02F6\u02F7\x05n8\x02\u02F7\u02F8\x072\x02\x02\u02F8\u02F9" + + "\x05t;\x02\u02F9\xB3\x03\x02\x02\x02\u02FA\u02FE\x05\xB6\\\x02\u02FB\u02FE" + + "\x05\xB8]\x02\u02FC\u02FE\x05\xBA^\x02\u02FD\u02FA\x03\x02\x02\x02\u02FD" + + "\u02FB\x03\x02\x02\x02\u02FD\u02FC\x03\x02\x02\x02\u02FE\xB5\x03\x02\x02" + + "\x02\u02FF\u0300\x07)\x02\x02\u0300\u0301\x05~@\x02\u0301\u0302\x07\f" + + "\x02\x02\u0302\u0303\x05t;\x02\u0303\xB7\x03\x02\x02\x02\u0304\u0305\x07" + + "\"\x02\x02\u0305\u0306\x05\xAAV\x02\u0306\u0307\x07\'\x02\x02\u0307\u0308" + + "\x05~@\x02\u0308\xB9\x03\x02\x02\x02\u0309\u030A\x07\x11\x02\x02\u030A" + + "\u030B\x05\b\x05\x02\u030B\u030C\x07/\x02\x02\u030C\u030D\x05\xBC_\x02" + + "\u030D\u030E\x07\f\x02\x02\u030E\u030F\x05t;\x02\u030F\xBB\x03\x02\x02" + + "\x02\u0310\u0311\x05\xBE`\x02\u0311\u0312\t\b\x02\x02\u0312\u0313\x05" + + "\xC0a\x02\u0313\xBD\x03\x02\x02\x02\u0314\u0315\x05~@\x02\u0315\xBF\x03" + + "\x02\x02\x02\u0316\u0317\x05~@\x02\u0317\xC1\x03\x02\x02\x02\u0318\u0319" + + "\x07*\x02\x02\u0319\u031A\x05\xC4c\x02\u031A\u031B\x07\f\x02\x02\u031B" + + "\u031C\x05t;\x02\u031C\xC3\x03\x02\x02\x02\u031D\u0322\x05|?\x02\u031E" + + "\u031F\x070\x02\x02\u031F\u0321\x05|?\x02\u0320\u031E\x03\x02\x02\x02" + + "\u0321\u0324\x03\x02\x02\x02\u0322\u0320\x03\x02\x02\x02\u0322\u0323\x03" + + "\x02\x02\x02\u0323\xC5\x03\x02\x02\x02\u0324\u0322\x03\x02\x02\x02C\xCA" + + "\xD6\xDE\xE9\xEB\xFA\u0107\u011C\u0120\u0132\u0139\u013D\u0144\u0149\u014F" + + "\u015B\u0160\u0166\u016C\u017E\u0185\u018E\u0195\u0198\u019F\u01AE\u01B6" + + "\u01C8\u01D3\u01E1\u01E6\u01F1\u01FD\u0208\u0210\u0216\u0224\u0228\u022E" + + "\u0237\u023F\u024A\u0252\u0254\u025B\u0263\u026B\u0270\u027F\u0285\u0291" + + "\u029C\u02A3\u02A7\u02AC\u02B3\u02B9\u02CA\u02D5\u02DA\u02E2\u02EC\u02F2" + + "\u02FD\u0322"; + public static readonly _serializedATN: string = Utils.join( + [ + pascalParser._serializedATNSegment0, + pascalParser._serializedATNSegment1, + ], + "", + ); + public static __ATN: ATN; + public static get _ATN(): ATN { + if (!pascalParser.__ATN) { + pascalParser.__ATN = new ATNDeserializer().deserialize(Utils.toCharArray(pascalParser._serializedATN)); + } + + return pascalParser.__ATN; + } + +} + +export class StartContext extends ParserRuleContext { + public program(): ProgramContext { + return this.getRuleContext(0, ProgramContext); + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_start; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterStart) { + listener.enterStart(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitStart) { + listener.exitStart(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitStart) { + return visitor.visitStart(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class ProgramContext extends ParserRuleContext { + public programHeading(): ProgramHeadingContext { + return this.getRuleContext(0, ProgramHeadingContext); + } + public block(): BlockContext { + return this.getRuleContext(0, BlockContext); + } + public DOT(): TerminalNode { return this.getToken(pascalParser.DOT, 0); } + public EOF(): TerminalNode { return this.getToken(pascalParser.EOF, 0); } + public INTERFACE(): TerminalNode | undefined { return this.tryGetToken(pascalParser.INTERFACE, 0); } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_program; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterProgram) { + listener.enterProgram(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitProgram) { + listener.exitProgram(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitProgram) { + return visitor.visitProgram(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class ProgramHeadingContext extends ParserRuleContext { + public PROGRAM(): TerminalNode | undefined { return this.tryGetToken(pascalParser.PROGRAM, 0); } + public identifier(): IdentifierContext { + return this.getRuleContext(0, IdentifierContext); + } + public SEMI(): TerminalNode { return this.getToken(pascalParser.SEMI, 0); } + public LPAREN(): TerminalNode | undefined { return this.tryGetToken(pascalParser.LPAREN, 0); } + public identifierList(): IdentifierListContext | undefined { + return this.tryGetRuleContext(0, IdentifierListContext); + } + public RPAREN(): TerminalNode | undefined { return this.tryGetToken(pascalParser.RPAREN, 0); } + public UNIT(): TerminalNode | undefined { return this.tryGetToken(pascalParser.UNIT, 0); } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_programHeading; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterProgramHeading) { + listener.enterProgramHeading(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitProgramHeading) { + listener.exitProgramHeading(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitProgramHeading) { + return visitor.visitProgramHeading(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class IdentifierContext extends ParserRuleContext { + public IDENT(): TerminalNode { return this.getToken(pascalParser.IDENT, 0); } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_identifier; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterIdentifier) { + listener.enterIdentifier(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitIdentifier) { + listener.exitIdentifier(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitIdentifier) { + return visitor.visitIdentifier(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class BlockContext extends ParserRuleContext { + public compoundStatement(): CompoundStatementContext { + return this.getRuleContext(0, CompoundStatementContext); + } + public labelDeclarationPart(): LabelDeclarationPartContext[]; + public labelDeclarationPart(i: number): LabelDeclarationPartContext; + public labelDeclarationPart(i?: number): LabelDeclarationPartContext | LabelDeclarationPartContext[] { + if (i === undefined) { + return this.getRuleContexts(LabelDeclarationPartContext); + } else { + return this.getRuleContext(i, LabelDeclarationPartContext); + } + } + public constantDefinitionPart(): ConstantDefinitionPartContext[]; + public constantDefinitionPart(i: number): ConstantDefinitionPartContext; + public constantDefinitionPart(i?: number): ConstantDefinitionPartContext | ConstantDefinitionPartContext[] { + if (i === undefined) { + return this.getRuleContexts(ConstantDefinitionPartContext); + } else { + return this.getRuleContext(i, ConstantDefinitionPartContext); + } + } + public typeDefinitionPart(): TypeDefinitionPartContext[]; + public typeDefinitionPart(i: number): TypeDefinitionPartContext; + public typeDefinitionPart(i?: number): TypeDefinitionPartContext | TypeDefinitionPartContext[] { + if (i === undefined) { + return this.getRuleContexts(TypeDefinitionPartContext); + } else { + return this.getRuleContext(i, TypeDefinitionPartContext); + } + } + public variableDeclarationPart(): VariableDeclarationPartContext[]; + public variableDeclarationPart(i: number): VariableDeclarationPartContext; + public variableDeclarationPart(i?: number): VariableDeclarationPartContext | VariableDeclarationPartContext[] { + if (i === undefined) { + return this.getRuleContexts(VariableDeclarationPartContext); + } else { + return this.getRuleContext(i, VariableDeclarationPartContext); + } + } + public procedureAndFunctionDeclarationPart(): ProcedureAndFunctionDeclarationPartContext[]; + public procedureAndFunctionDeclarationPart(i: number): ProcedureAndFunctionDeclarationPartContext; + public procedureAndFunctionDeclarationPart(i?: number): ProcedureAndFunctionDeclarationPartContext | ProcedureAndFunctionDeclarationPartContext[] { + if (i === undefined) { + return this.getRuleContexts(ProcedureAndFunctionDeclarationPartContext); + } else { + return this.getRuleContext(i, ProcedureAndFunctionDeclarationPartContext); + } + } + public usesUnitsPart(): UsesUnitsPartContext[]; + public usesUnitsPart(i: number): UsesUnitsPartContext; + public usesUnitsPart(i?: number): UsesUnitsPartContext | UsesUnitsPartContext[] { + if (i === undefined) { + return this.getRuleContexts(UsesUnitsPartContext); + } else { + return this.getRuleContext(i, UsesUnitsPartContext); + } + } + public IMPLEMENTATION(): TerminalNode[]; + public IMPLEMENTATION(i: number): TerminalNode; + public IMPLEMENTATION(i?: number): TerminalNode | TerminalNode[] { + if (i === undefined) { + return this.getTokens(pascalParser.IMPLEMENTATION); + } else { + return this.getToken(pascalParser.IMPLEMENTATION, i); + } + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_block; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterBlock) { + listener.enterBlock(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitBlock) { + listener.exitBlock(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitBlock) { + return visitor.visitBlock(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class UsesUnitsPartContext extends ParserRuleContext { + public USES(): TerminalNode { return this.getToken(pascalParser.USES, 0); } + public identifierList(): IdentifierListContext { + return this.getRuleContext(0, IdentifierListContext); + } + public SEMI(): TerminalNode { return this.getToken(pascalParser.SEMI, 0); } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_usesUnitsPart; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterUsesUnitsPart) { + listener.enterUsesUnitsPart(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitUsesUnitsPart) { + listener.exitUsesUnitsPart(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitUsesUnitsPart) { + return visitor.visitUsesUnitsPart(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class LabelDeclarationPartContext extends ParserRuleContext { + public LABEL(): TerminalNode { return this.getToken(pascalParser.LABEL, 0); } + public label(): LabelContext[]; + public label(i: number): LabelContext; + public label(i?: number): LabelContext | LabelContext[] { + if (i === undefined) { + return this.getRuleContexts(LabelContext); + } else { + return this.getRuleContext(i, LabelContext); + } + } + public SEMI(): TerminalNode { return this.getToken(pascalParser.SEMI, 0); } + public COMMA(): TerminalNode[]; + public COMMA(i: number): TerminalNode; + public COMMA(i?: number): TerminalNode | TerminalNode[] { + if (i === undefined) { + return this.getTokens(pascalParser.COMMA); + } else { + return this.getToken(pascalParser.COMMA, i); + } + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_labelDeclarationPart; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterLabelDeclarationPart) { + listener.enterLabelDeclarationPart(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitLabelDeclarationPart) { + listener.exitLabelDeclarationPart(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitLabelDeclarationPart) { + return visitor.visitLabelDeclarationPart(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class LabelContext extends ParserRuleContext { + public unsignedInteger(): UnsignedIntegerContext { + return this.getRuleContext(0, UnsignedIntegerContext); + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_label; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterLabel) { + listener.enterLabel(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitLabel) { + listener.exitLabel(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitLabel) { + return visitor.visitLabel(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class ConstantDefinitionPartContext extends ParserRuleContext { + public CONST(): TerminalNode { return this.getToken(pascalParser.CONST, 0); } + public constantDefinition(): ConstantDefinitionContext[]; + public constantDefinition(i: number): ConstantDefinitionContext; + public constantDefinition(i?: number): ConstantDefinitionContext | ConstantDefinitionContext[] { + if (i === undefined) { + return this.getRuleContexts(ConstantDefinitionContext); + } else { + return this.getRuleContext(i, ConstantDefinitionContext); + } + } + public SEMI(): TerminalNode[]; + public SEMI(i: number): TerminalNode; + public SEMI(i?: number): TerminalNode | TerminalNode[] { + if (i === undefined) { + return this.getTokens(pascalParser.SEMI); + } else { + return this.getToken(pascalParser.SEMI, i); + } + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_constantDefinitionPart; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterConstantDefinitionPart) { + listener.enterConstantDefinitionPart(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitConstantDefinitionPart) { + listener.exitConstantDefinitionPart(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitConstantDefinitionPart) { + return visitor.visitConstantDefinitionPart(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class ConstantDefinitionContext extends ParserRuleContext { + public identifier(): IdentifierContext { + return this.getRuleContext(0, IdentifierContext); + } + public EQUAL(): TerminalNode { return this.getToken(pascalParser.EQUAL, 0); } + public constant(): ConstantContext { + return this.getRuleContext(0, ConstantContext); + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_constantDefinition; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterConstantDefinition) { + listener.enterConstantDefinition(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitConstantDefinition) { + listener.exitConstantDefinition(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitConstantDefinition) { + return visitor.visitConstantDefinition(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class ConstantChrContext extends ParserRuleContext { + public CHR(): TerminalNode { return this.getToken(pascalParser.CHR, 0); } + public LPAREN(): TerminalNode { return this.getToken(pascalParser.LPAREN, 0); } + public unsignedInteger(): UnsignedIntegerContext { + return this.getRuleContext(0, UnsignedIntegerContext); + } + public RPAREN(): TerminalNode { return this.getToken(pascalParser.RPAREN, 0); } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_constantChr; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterConstantChr) { + listener.enterConstantChr(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitConstantChr) { + listener.exitConstantChr(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitConstantChr) { + return visitor.visitConstantChr(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class ConstantContext extends ParserRuleContext { + public unsignedNumber(): UnsignedNumberContext | undefined { + return this.tryGetRuleContext(0, UnsignedNumberContext); + } + public sign(): SignContext | undefined { + return this.tryGetRuleContext(0, SignContext); + } + public identifier(): IdentifierContext | undefined { + return this.tryGetRuleContext(0, IdentifierContext); + } + public string(): StringContext | undefined { + return this.tryGetRuleContext(0, StringContext); + } + public constantChr(): ConstantChrContext | undefined { + return this.tryGetRuleContext(0, ConstantChrContext); + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_constant; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterConstant) { + listener.enterConstant(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitConstant) { + listener.exitConstant(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitConstant) { + return visitor.visitConstant(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class UnsignedNumberContext extends ParserRuleContext { + public unsignedInteger(): UnsignedIntegerContext | undefined { + return this.tryGetRuleContext(0, UnsignedIntegerContext); + } + public unsignedReal(): UnsignedRealContext | undefined { + return this.tryGetRuleContext(0, UnsignedRealContext); + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_unsignedNumber; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterUnsignedNumber) { + listener.enterUnsignedNumber(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitUnsignedNumber) { + listener.exitUnsignedNumber(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitUnsignedNumber) { + return visitor.visitUnsignedNumber(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class UnsignedIntegerContext extends ParserRuleContext { + public NUM_INT(): TerminalNode { return this.getToken(pascalParser.NUM_INT, 0); } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_unsignedInteger; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterUnsignedInteger) { + listener.enterUnsignedInteger(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitUnsignedInteger) { + listener.exitUnsignedInteger(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitUnsignedInteger) { + return visitor.visitUnsignedInteger(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class UnsignedRealContext extends ParserRuleContext { + public NUM_REAL(): TerminalNode { return this.getToken(pascalParser.NUM_REAL, 0); } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_unsignedReal; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterUnsignedReal) { + listener.enterUnsignedReal(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitUnsignedReal) { + listener.exitUnsignedReal(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitUnsignedReal) { + return visitor.visitUnsignedReal(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class SignContext extends ParserRuleContext { + public PLUS(): TerminalNode | undefined { return this.tryGetToken(pascalParser.PLUS, 0); } + public MINUS(): TerminalNode | undefined { return this.tryGetToken(pascalParser.MINUS, 0); } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_sign; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterSign) { + listener.enterSign(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitSign) { + listener.exitSign(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitSign) { + return visitor.visitSign(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class Bool_Context extends ParserRuleContext { + public TRUE(): TerminalNode | undefined { return this.tryGetToken(pascalParser.TRUE, 0); } + public FALSE(): TerminalNode | undefined { return this.tryGetToken(pascalParser.FALSE, 0); } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_bool_; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterBool_) { + listener.enterBool_(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitBool_) { + listener.exitBool_(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitBool_) { + return visitor.visitBool_(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class StringContext extends ParserRuleContext { + public STRING_LITERAL(): TerminalNode { return this.getToken(pascalParser.STRING_LITERAL, 0); } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_string; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterString) { + listener.enterString(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitString) { + listener.exitString(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitString) { + return visitor.visitString(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class TypeDefinitionPartContext extends ParserRuleContext { + public TYPE(): TerminalNode { return this.getToken(pascalParser.TYPE, 0); } + public typeDefinition(): TypeDefinitionContext[]; + public typeDefinition(i: number): TypeDefinitionContext; + public typeDefinition(i?: number): TypeDefinitionContext | TypeDefinitionContext[] { + if (i === undefined) { + return this.getRuleContexts(TypeDefinitionContext); + } else { + return this.getRuleContext(i, TypeDefinitionContext); + } + } + public SEMI(): TerminalNode[]; + public SEMI(i: number): TerminalNode; + public SEMI(i?: number): TerminalNode | TerminalNode[] { + if (i === undefined) { + return this.getTokens(pascalParser.SEMI); + } else { + return this.getToken(pascalParser.SEMI, i); + } + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_typeDefinitionPart; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterTypeDefinitionPart) { + listener.enterTypeDefinitionPart(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitTypeDefinitionPart) { + listener.exitTypeDefinitionPart(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitTypeDefinitionPart) { + return visitor.visitTypeDefinitionPart(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class TypeDefinitionContext extends ParserRuleContext { + public identifier(): IdentifierContext { + return this.getRuleContext(0, IdentifierContext); + } + public EQUAL(): TerminalNode { return this.getToken(pascalParser.EQUAL, 0); } + public type_(): Type_Context | undefined { + return this.tryGetRuleContext(0, Type_Context); + } + public functionType(): FunctionTypeContext | undefined { + return this.tryGetRuleContext(0, FunctionTypeContext); + } + public procedureType(): ProcedureTypeContext | undefined { + return this.tryGetRuleContext(0, ProcedureTypeContext); + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_typeDefinition; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterTypeDefinition) { + listener.enterTypeDefinition(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitTypeDefinition) { + listener.exitTypeDefinition(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitTypeDefinition) { + return visitor.visitTypeDefinition(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class FunctionTypeContext extends ParserRuleContext { + public FUNCTION(): TerminalNode { return this.getToken(pascalParser.FUNCTION, 0); } + public COLON(): TerminalNode { return this.getToken(pascalParser.COLON, 0); } + public resultType(): ResultTypeContext { + return this.getRuleContext(0, ResultTypeContext); + } + public formalParameterList(): FormalParameterListContext | undefined { + return this.tryGetRuleContext(0, FormalParameterListContext); + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_functionType; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterFunctionType) { + listener.enterFunctionType(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitFunctionType) { + listener.exitFunctionType(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitFunctionType) { + return visitor.visitFunctionType(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class ProcedureTypeContext extends ParserRuleContext { + public PROCEDURE(): TerminalNode { return this.getToken(pascalParser.PROCEDURE, 0); } + public formalParameterList(): FormalParameterListContext | undefined { + return this.tryGetRuleContext(0, FormalParameterListContext); + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_procedureType; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterProcedureType) { + listener.enterProcedureType(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitProcedureType) { + listener.exitProcedureType(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitProcedureType) { + return visitor.visitProcedureType(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class Type_Context extends ParserRuleContext { + public simpleType(): SimpleTypeContext | undefined { + return this.tryGetRuleContext(0, SimpleTypeContext); + } + public structuredType(): StructuredTypeContext | undefined { + return this.tryGetRuleContext(0, StructuredTypeContext); + } + public pointerType(): PointerTypeContext | undefined { + return this.tryGetRuleContext(0, PointerTypeContext); + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_type_; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterType_) { + listener.enterType_(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitType_) { + listener.exitType_(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitType_) { + return visitor.visitType_(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class SimpleTypeContext extends ParserRuleContext { + public scalarType(): ScalarTypeContext | undefined { + return this.tryGetRuleContext(0, ScalarTypeContext); + } + public subrangeType(): SubrangeTypeContext | undefined { + return this.tryGetRuleContext(0, SubrangeTypeContext); + } + public typeIdentifier(): TypeIdentifierContext | undefined { + return this.tryGetRuleContext(0, TypeIdentifierContext); + } + public stringtype(): StringtypeContext | undefined { + return this.tryGetRuleContext(0, StringtypeContext); + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_simpleType; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterSimpleType) { + listener.enterSimpleType(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitSimpleType) { + listener.exitSimpleType(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitSimpleType) { + return visitor.visitSimpleType(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class ScalarTypeContext extends ParserRuleContext { + public LPAREN(): TerminalNode { return this.getToken(pascalParser.LPAREN, 0); } + public identifierList(): IdentifierListContext { + return this.getRuleContext(0, IdentifierListContext); + } + public RPAREN(): TerminalNode { return this.getToken(pascalParser.RPAREN, 0); } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_scalarType; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterScalarType) { + listener.enterScalarType(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitScalarType) { + listener.exitScalarType(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitScalarType) { + return visitor.visitScalarType(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class SubrangeTypeContext extends ParserRuleContext { + public constant(): ConstantContext[]; + public constant(i: number): ConstantContext; + public constant(i?: number): ConstantContext | ConstantContext[] { + if (i === undefined) { + return this.getRuleContexts(ConstantContext); + } else { + return this.getRuleContext(i, ConstantContext); + } + } + public DOTDOT(): TerminalNode { return this.getToken(pascalParser.DOTDOT, 0); } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_subrangeType; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterSubrangeType) { + listener.enterSubrangeType(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitSubrangeType) { + listener.exitSubrangeType(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitSubrangeType) { + return visitor.visitSubrangeType(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class TypeIdentifierContext extends ParserRuleContext { + public identifier(): IdentifierContext | undefined { + return this.tryGetRuleContext(0, IdentifierContext); + } + public CHAR(): TerminalNode | undefined { return this.tryGetToken(pascalParser.CHAR, 0); } + public BOOLEAN(): TerminalNode | undefined { return this.tryGetToken(pascalParser.BOOLEAN, 0); } + public INTEGER(): TerminalNode | undefined { return this.tryGetToken(pascalParser.INTEGER, 0); } + public REAL(): TerminalNode | undefined { return this.tryGetToken(pascalParser.REAL, 0); } + public STRING(): TerminalNode | undefined { return this.tryGetToken(pascalParser.STRING, 0); } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_typeIdentifier; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterTypeIdentifier) { + listener.enterTypeIdentifier(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitTypeIdentifier) { + listener.exitTypeIdentifier(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitTypeIdentifier) { + return visitor.visitTypeIdentifier(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class StructuredTypeContext extends ParserRuleContext { + public PACKED(): TerminalNode | undefined { return this.tryGetToken(pascalParser.PACKED, 0); } + public unpackedStructuredType(): UnpackedStructuredTypeContext { + return this.getRuleContext(0, UnpackedStructuredTypeContext); + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_structuredType; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterStructuredType) { + listener.enterStructuredType(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitStructuredType) { + listener.exitStructuredType(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitStructuredType) { + return visitor.visitStructuredType(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class UnpackedStructuredTypeContext extends ParserRuleContext { + public arrayType(): ArrayTypeContext | undefined { + return this.tryGetRuleContext(0, ArrayTypeContext); + } + public recordType(): RecordTypeContext | undefined { + return this.tryGetRuleContext(0, RecordTypeContext); + } + public setType(): SetTypeContext | undefined { + return this.tryGetRuleContext(0, SetTypeContext); + } + public fileType(): FileTypeContext | undefined { + return this.tryGetRuleContext(0, FileTypeContext); + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_unpackedStructuredType; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterUnpackedStructuredType) { + listener.enterUnpackedStructuredType(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitUnpackedStructuredType) { + listener.exitUnpackedStructuredType(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitUnpackedStructuredType) { + return visitor.visitUnpackedStructuredType(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class StringtypeContext extends ParserRuleContext { + public STRING(): TerminalNode { return this.getToken(pascalParser.STRING, 0); } + public LBRACK(): TerminalNode { return this.getToken(pascalParser.LBRACK, 0); } + public RBRACK(): TerminalNode { return this.getToken(pascalParser.RBRACK, 0); } + public identifier(): IdentifierContext | undefined { + return this.tryGetRuleContext(0, IdentifierContext); + } + public unsignedNumber(): UnsignedNumberContext | undefined { + return this.tryGetRuleContext(0, UnsignedNumberContext); + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_stringtype; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterStringtype) { + listener.enterStringtype(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitStringtype) { + listener.exitStringtype(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitStringtype) { + return visitor.visitStringtype(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class ArrayTypeContext extends ParserRuleContext { + public ARRAY(): TerminalNode { return this.getToken(pascalParser.ARRAY, 0); } + public LBRACK(): TerminalNode | undefined { return this.tryGetToken(pascalParser.LBRACK, 0); } + public typeList(): TypeListContext { + return this.getRuleContext(0, TypeListContext); + } + public RBRACK(): TerminalNode | undefined { return this.tryGetToken(pascalParser.RBRACK, 0); } + public OF(): TerminalNode { return this.getToken(pascalParser.OF, 0); } + public componentType(): ComponentTypeContext { + return this.getRuleContext(0, ComponentTypeContext); + } + public LBRACK2(): TerminalNode | undefined { return this.tryGetToken(pascalParser.LBRACK2, 0); } + public RBRACK2(): TerminalNode | undefined { return this.tryGetToken(pascalParser.RBRACK2, 0); } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_arrayType; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterArrayType) { + listener.enterArrayType(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitArrayType) { + listener.exitArrayType(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitArrayType) { + return visitor.visitArrayType(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class TypeListContext extends ParserRuleContext { + public indexType(): IndexTypeContext[]; + public indexType(i: number): IndexTypeContext; + public indexType(i?: number): IndexTypeContext | IndexTypeContext[] { + if (i === undefined) { + return this.getRuleContexts(IndexTypeContext); + } else { + return this.getRuleContext(i, IndexTypeContext); + } + } + public COMMA(): TerminalNode[]; + public COMMA(i: number): TerminalNode; + public COMMA(i?: number): TerminalNode | TerminalNode[] { + if (i === undefined) { + return this.getTokens(pascalParser.COMMA); + } else { + return this.getToken(pascalParser.COMMA, i); + } + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_typeList; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterTypeList) { + listener.enterTypeList(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitTypeList) { + listener.exitTypeList(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitTypeList) { + return visitor.visitTypeList(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class IndexTypeContext extends ParserRuleContext { + public simpleType(): SimpleTypeContext { + return this.getRuleContext(0, SimpleTypeContext); + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_indexType; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterIndexType) { + listener.enterIndexType(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitIndexType) { + listener.exitIndexType(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitIndexType) { + return visitor.visitIndexType(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class ComponentTypeContext extends ParserRuleContext { + public type_(): Type_Context { + return this.getRuleContext(0, Type_Context); + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_componentType; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterComponentType) { + listener.enterComponentType(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitComponentType) { + listener.exitComponentType(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitComponentType) { + return visitor.visitComponentType(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class RecordTypeContext extends ParserRuleContext { + public RECORD(): TerminalNode { return this.getToken(pascalParser.RECORD, 0); } + public END(): TerminalNode { return this.getToken(pascalParser.END, 0); } + public fieldList(): FieldListContext | undefined { + return this.tryGetRuleContext(0, FieldListContext); + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_recordType; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterRecordType) { + listener.enterRecordType(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitRecordType) { + listener.exitRecordType(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitRecordType) { + return visitor.visitRecordType(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class FieldListContext extends ParserRuleContext { + public fixedPart(): FixedPartContext | undefined { + return this.tryGetRuleContext(0, FixedPartContext); + } + public SEMI(): TerminalNode | undefined { return this.tryGetToken(pascalParser.SEMI, 0); } + public variantPart(): VariantPartContext | undefined { + return this.tryGetRuleContext(0, VariantPartContext); + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_fieldList; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterFieldList) { + listener.enterFieldList(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitFieldList) { + listener.exitFieldList(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitFieldList) { + return visitor.visitFieldList(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class FixedPartContext extends ParserRuleContext { + public recordSection(): RecordSectionContext[]; + public recordSection(i: number): RecordSectionContext; + public recordSection(i?: number): RecordSectionContext | RecordSectionContext[] { + if (i === undefined) { + return this.getRuleContexts(RecordSectionContext); + } else { + return this.getRuleContext(i, RecordSectionContext); + } + } + public SEMI(): TerminalNode[]; + public SEMI(i: number): TerminalNode; + public SEMI(i?: number): TerminalNode | TerminalNode[] { + if (i === undefined) { + return this.getTokens(pascalParser.SEMI); + } else { + return this.getToken(pascalParser.SEMI, i); + } + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_fixedPart; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterFixedPart) { + listener.enterFixedPart(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitFixedPart) { + listener.exitFixedPart(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitFixedPart) { + return visitor.visitFixedPart(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class RecordSectionContext extends ParserRuleContext { + public identifierList(): IdentifierListContext { + return this.getRuleContext(0, IdentifierListContext); + } + public COLON(): TerminalNode { return this.getToken(pascalParser.COLON, 0); } + public type_(): Type_Context { + return this.getRuleContext(0, Type_Context); + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_recordSection; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterRecordSection) { + listener.enterRecordSection(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitRecordSection) { + listener.exitRecordSection(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitRecordSection) { + return visitor.visitRecordSection(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class VariantPartContext extends ParserRuleContext { + public CASE(): TerminalNode { return this.getToken(pascalParser.CASE, 0); } + public tag(): TagContext { + return this.getRuleContext(0, TagContext); + } + public OF(): TerminalNode { return this.getToken(pascalParser.OF, 0); } + public variant(): VariantContext[]; + public variant(i: number): VariantContext; + public variant(i?: number): VariantContext | VariantContext[] { + if (i === undefined) { + return this.getRuleContexts(VariantContext); + } else { + return this.getRuleContext(i, VariantContext); + } + } + public SEMI(): TerminalNode[]; + public SEMI(i: number): TerminalNode; + public SEMI(i?: number): TerminalNode | TerminalNode[] { + if (i === undefined) { + return this.getTokens(pascalParser.SEMI); + } else { + return this.getToken(pascalParser.SEMI, i); + } + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_variantPart; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterVariantPart) { + listener.enterVariantPart(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitVariantPart) { + listener.exitVariantPart(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitVariantPart) { + return visitor.visitVariantPart(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class TagContext extends ParserRuleContext { + public identifier(): IdentifierContext | undefined { + return this.tryGetRuleContext(0, IdentifierContext); + } + public COLON(): TerminalNode | undefined { return this.tryGetToken(pascalParser.COLON, 0); } + public typeIdentifier(): TypeIdentifierContext { + return this.getRuleContext(0, TypeIdentifierContext); + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_tag; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterTag) { + listener.enterTag(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitTag) { + listener.exitTag(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitTag) { + return visitor.visitTag(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class VariantContext extends ParserRuleContext { + public constList(): ConstListContext { + return this.getRuleContext(0, ConstListContext); + } + public COLON(): TerminalNode { return this.getToken(pascalParser.COLON, 0); } + public LPAREN(): TerminalNode { return this.getToken(pascalParser.LPAREN, 0); } + public fieldList(): FieldListContext { + return this.getRuleContext(0, FieldListContext); + } + public RPAREN(): TerminalNode { return this.getToken(pascalParser.RPAREN, 0); } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_variant; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterVariant) { + listener.enterVariant(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitVariant) { + listener.exitVariant(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitVariant) { + return visitor.visitVariant(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class SetTypeContext extends ParserRuleContext { + public SET(): TerminalNode { return this.getToken(pascalParser.SET, 0); } + public OF(): TerminalNode { return this.getToken(pascalParser.OF, 0); } + public baseType(): BaseTypeContext { + return this.getRuleContext(0, BaseTypeContext); + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_setType; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterSetType) { + listener.enterSetType(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitSetType) { + listener.exitSetType(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitSetType) { + return visitor.visitSetType(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class BaseTypeContext extends ParserRuleContext { + public simpleType(): SimpleTypeContext { + return this.getRuleContext(0, SimpleTypeContext); + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_baseType; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterBaseType) { + listener.enterBaseType(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitBaseType) { + listener.exitBaseType(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitBaseType) { + return visitor.visitBaseType(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class FileTypeContext extends ParserRuleContext { + public FILE(): TerminalNode { return this.getToken(pascalParser.FILE, 0); } + public OF(): TerminalNode | undefined { return this.tryGetToken(pascalParser.OF, 0); } + public type_(): Type_Context | undefined { + return this.tryGetRuleContext(0, Type_Context); + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_fileType; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterFileType) { + listener.enterFileType(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitFileType) { + listener.exitFileType(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitFileType) { + return visitor.visitFileType(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class PointerTypeContext extends ParserRuleContext { + public POINTER(): TerminalNode { return this.getToken(pascalParser.POINTER, 0); } + public typeIdentifier(): TypeIdentifierContext { + return this.getRuleContext(0, TypeIdentifierContext); + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_pointerType; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterPointerType) { + listener.enterPointerType(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitPointerType) { + listener.exitPointerType(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitPointerType) { + return visitor.visitPointerType(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class VariableDeclarationPartContext extends ParserRuleContext { + public VAR(): TerminalNode { return this.getToken(pascalParser.VAR, 0); } + public variableDeclaration(): VariableDeclarationContext[]; + public variableDeclaration(i: number): VariableDeclarationContext; + public variableDeclaration(i?: number): VariableDeclarationContext | VariableDeclarationContext[] { + if (i === undefined) { + return this.getRuleContexts(VariableDeclarationContext); + } else { + return this.getRuleContext(i, VariableDeclarationContext); + } + } + public SEMI(): TerminalNode[]; + public SEMI(i: number): TerminalNode; + public SEMI(i?: number): TerminalNode | TerminalNode[] { + if (i === undefined) { + return this.getTokens(pascalParser.SEMI); + } else { + return this.getToken(pascalParser.SEMI, i); + } + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_variableDeclarationPart; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterVariableDeclarationPart) { + listener.enterVariableDeclarationPart(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitVariableDeclarationPart) { + listener.exitVariableDeclarationPart(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitVariableDeclarationPart) { + return visitor.visitVariableDeclarationPart(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class VariableDeclarationContext extends ParserRuleContext { + public identifierList(): IdentifierListContext { + return this.getRuleContext(0, IdentifierListContext); + } + public COLON(): TerminalNode { return this.getToken(pascalParser.COLON, 0); } + public type_(): Type_Context { + return this.getRuleContext(0, Type_Context); + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_variableDeclaration; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterVariableDeclaration) { + listener.enterVariableDeclaration(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitVariableDeclaration) { + listener.exitVariableDeclaration(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitVariableDeclaration) { + return visitor.visitVariableDeclaration(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class ProcedureAndFunctionDeclarationPartContext extends ParserRuleContext { + public procedureOrFunctionDeclaration(): ProcedureOrFunctionDeclarationContext { + return this.getRuleContext(0, ProcedureOrFunctionDeclarationContext); + } + public SEMI(): TerminalNode { return this.getToken(pascalParser.SEMI, 0); } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_procedureAndFunctionDeclarationPart; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterProcedureAndFunctionDeclarationPart) { + listener.enterProcedureAndFunctionDeclarationPart(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitProcedureAndFunctionDeclarationPart) { + listener.exitProcedureAndFunctionDeclarationPart(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitProcedureAndFunctionDeclarationPart) { + return visitor.visitProcedureAndFunctionDeclarationPart(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class ProcedureOrFunctionDeclarationContext extends ParserRuleContext { + public procedureDeclaration(): ProcedureDeclarationContext | undefined { + return this.tryGetRuleContext(0, ProcedureDeclarationContext); + } + public functionDeclaration(): FunctionDeclarationContext | undefined { + return this.tryGetRuleContext(0, FunctionDeclarationContext); + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_procedureOrFunctionDeclaration; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterProcedureOrFunctionDeclaration) { + listener.enterProcedureOrFunctionDeclaration(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitProcedureOrFunctionDeclaration) { + listener.exitProcedureOrFunctionDeclaration(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitProcedureOrFunctionDeclaration) { + return visitor.visitProcedureOrFunctionDeclaration(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class ProcedureDeclarationContext extends ParserRuleContext { + public PROCEDURE(): TerminalNode { return this.getToken(pascalParser.PROCEDURE, 0); } + public identifier(): IdentifierContext { + return this.getRuleContext(0, IdentifierContext); + } + public SEMI(): TerminalNode { return this.getToken(pascalParser.SEMI, 0); } + public block(): BlockContext { + return this.getRuleContext(0, BlockContext); + } + public formalParameterList(): FormalParameterListContext | undefined { + return this.tryGetRuleContext(0, FormalParameterListContext); + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_procedureDeclaration; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterProcedureDeclaration) { + listener.enterProcedureDeclaration(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitProcedureDeclaration) { + listener.exitProcedureDeclaration(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitProcedureDeclaration) { + return visitor.visitProcedureDeclaration(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class FormalParameterListContext extends ParserRuleContext { + public LPAREN(): TerminalNode { return this.getToken(pascalParser.LPAREN, 0); } + public formalParameterSection(): FormalParameterSectionContext[]; + public formalParameterSection(i: number): FormalParameterSectionContext; + public formalParameterSection(i?: number): FormalParameterSectionContext | FormalParameterSectionContext[] { + if (i === undefined) { + return this.getRuleContexts(FormalParameterSectionContext); + } else { + return this.getRuleContext(i, FormalParameterSectionContext); + } + } + public RPAREN(): TerminalNode { return this.getToken(pascalParser.RPAREN, 0); } + public SEMI(): TerminalNode[]; + public SEMI(i: number): TerminalNode; + public SEMI(i?: number): TerminalNode | TerminalNode[] { + if (i === undefined) { + return this.getTokens(pascalParser.SEMI); + } else { + return this.getToken(pascalParser.SEMI, i); + } + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_formalParameterList; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterFormalParameterList) { + listener.enterFormalParameterList(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitFormalParameterList) { + listener.exitFormalParameterList(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitFormalParameterList) { + return visitor.visitFormalParameterList(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class FormalParameterSectionContext extends ParserRuleContext { + public parameterGroup(): ParameterGroupContext { + return this.getRuleContext(0, ParameterGroupContext); + } + public VAR(): TerminalNode | undefined { return this.tryGetToken(pascalParser.VAR, 0); } + public FUNCTION(): TerminalNode | undefined { return this.tryGetToken(pascalParser.FUNCTION, 0); } + public PROCEDURE(): TerminalNode | undefined { return this.tryGetToken(pascalParser.PROCEDURE, 0); } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_formalParameterSection; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterFormalParameterSection) { + listener.enterFormalParameterSection(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitFormalParameterSection) { + listener.exitFormalParameterSection(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitFormalParameterSection) { + return visitor.visitFormalParameterSection(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class ParameterGroupContext extends ParserRuleContext { + public identifierList(): IdentifierListContext { + return this.getRuleContext(0, IdentifierListContext); + } + public COLON(): TerminalNode { return this.getToken(pascalParser.COLON, 0); } + public typeIdentifier(): TypeIdentifierContext { + return this.getRuleContext(0, TypeIdentifierContext); + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_parameterGroup; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterParameterGroup) { + listener.enterParameterGroup(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitParameterGroup) { + listener.exitParameterGroup(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitParameterGroup) { + return visitor.visitParameterGroup(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class IdentifierListContext extends ParserRuleContext { + public identifier(): IdentifierContext[]; + public identifier(i: number): IdentifierContext; + public identifier(i?: number): IdentifierContext | IdentifierContext[] { + if (i === undefined) { + return this.getRuleContexts(IdentifierContext); + } else { + return this.getRuleContext(i, IdentifierContext); + } + } + public COMMA(): TerminalNode[]; + public COMMA(i: number): TerminalNode; + public COMMA(i?: number): TerminalNode | TerminalNode[] { + if (i === undefined) { + return this.getTokens(pascalParser.COMMA); + } else { + return this.getToken(pascalParser.COMMA, i); + } + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_identifierList; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterIdentifierList) { + listener.enterIdentifierList(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitIdentifierList) { + listener.exitIdentifierList(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitIdentifierList) { + return visitor.visitIdentifierList(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class ConstListContext extends ParserRuleContext { + public constant(): ConstantContext[]; + public constant(i: number): ConstantContext; + public constant(i?: number): ConstantContext | ConstantContext[] { + if (i === undefined) { + return this.getRuleContexts(ConstantContext); + } else { + return this.getRuleContext(i, ConstantContext); + } + } + public COMMA(): TerminalNode[]; + public COMMA(i: number): TerminalNode; + public COMMA(i?: number): TerminalNode | TerminalNode[] { + if (i === undefined) { + return this.getTokens(pascalParser.COMMA); + } else { + return this.getToken(pascalParser.COMMA, i); + } + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_constList; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterConstList) { + listener.enterConstList(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitConstList) { + listener.exitConstList(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitConstList) { + return visitor.visitConstList(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class FunctionDeclarationContext extends ParserRuleContext { + public FUNCTION(): TerminalNode { return this.getToken(pascalParser.FUNCTION, 0); } + public identifier(): IdentifierContext { + return this.getRuleContext(0, IdentifierContext); + } + public COLON(): TerminalNode { return this.getToken(pascalParser.COLON, 0); } + public resultType(): ResultTypeContext { + return this.getRuleContext(0, ResultTypeContext); + } + public SEMI(): TerminalNode { return this.getToken(pascalParser.SEMI, 0); } + public block(): BlockContext { + return this.getRuleContext(0, BlockContext); + } + public formalParameterList(): FormalParameterListContext | undefined { + return this.tryGetRuleContext(0, FormalParameterListContext); + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_functionDeclaration; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterFunctionDeclaration) { + listener.enterFunctionDeclaration(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitFunctionDeclaration) { + listener.exitFunctionDeclaration(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitFunctionDeclaration) { + return visitor.visitFunctionDeclaration(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class ResultTypeContext extends ParserRuleContext { + public typeIdentifier(): TypeIdentifierContext { + return this.getRuleContext(0, TypeIdentifierContext); + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_resultType; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterResultType) { + listener.enterResultType(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitResultType) { + listener.exitResultType(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitResultType) { + return visitor.visitResultType(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class StatementContext extends ParserRuleContext { + public label(): LabelContext | undefined { + return this.tryGetRuleContext(0, LabelContext); + } + public COLON(): TerminalNode | undefined { return this.tryGetToken(pascalParser.COLON, 0); } + public unlabelledStatement(): UnlabelledStatementContext { + return this.getRuleContext(0, UnlabelledStatementContext); + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_statement; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterStatement) { + listener.enterStatement(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitStatement) { + listener.exitStatement(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitStatement) { + return visitor.visitStatement(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class UnlabelledStatementContext extends ParserRuleContext { + public simpleStatement(): SimpleStatementContext | undefined { + return this.tryGetRuleContext(0, SimpleStatementContext); + } + public structuredStatement(): StructuredStatementContext | undefined { + return this.tryGetRuleContext(0, StructuredStatementContext); + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_unlabelledStatement; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterUnlabelledStatement) { + listener.enterUnlabelledStatement(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitUnlabelledStatement) { + listener.exitUnlabelledStatement(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitUnlabelledStatement) { + return visitor.visitUnlabelledStatement(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class SimpleStatementContext extends ParserRuleContext { + public assignmentStatement(): AssignmentStatementContext | undefined { + return this.tryGetRuleContext(0, AssignmentStatementContext); + } + public procedureStatement(): ProcedureStatementContext | undefined { + return this.tryGetRuleContext(0, ProcedureStatementContext); + } + public gotoStatement(): GotoStatementContext | undefined { + return this.tryGetRuleContext(0, GotoStatementContext); + } + public emptyStatement_(): EmptyStatement_Context | undefined { + return this.tryGetRuleContext(0, EmptyStatement_Context); + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_simpleStatement; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterSimpleStatement) { + listener.enterSimpleStatement(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitSimpleStatement) { + listener.exitSimpleStatement(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitSimpleStatement) { + return visitor.visitSimpleStatement(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class AssignmentStatementContext extends ParserRuleContext { + public variable(): VariableContext { + return this.getRuleContext(0, VariableContext); + } + public ASSIGN(): TerminalNode { return this.getToken(pascalParser.ASSIGN, 0); } + public expression(): ExpressionContext { + return this.getRuleContext(0, ExpressionContext); + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_assignmentStatement; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterAssignmentStatement) { + listener.enterAssignmentStatement(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitAssignmentStatement) { + listener.exitAssignmentStatement(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitAssignmentStatement) { + return visitor.visitAssignmentStatement(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class VariableContext extends ParserRuleContext { + public AT(): TerminalNode | undefined { return this.tryGetToken(pascalParser.AT, 0); } + public identifier(): IdentifierContext[]; + public identifier(i: number): IdentifierContext; + public identifier(i?: number): IdentifierContext | IdentifierContext[] { + if (i === undefined) { + return this.getRuleContexts(IdentifierContext); + } else { + return this.getRuleContext(i, IdentifierContext); + } + } + public LBRACK(): TerminalNode[]; + public LBRACK(i: number): TerminalNode; + public LBRACK(i?: number): TerminalNode | TerminalNode[] { + if (i === undefined) { + return this.getTokens(pascalParser.LBRACK); + } else { + return this.getToken(pascalParser.LBRACK, i); + } + } + public expression(): ExpressionContext[]; + public expression(i: number): ExpressionContext; + public expression(i?: number): ExpressionContext | ExpressionContext[] { + if (i === undefined) { + return this.getRuleContexts(ExpressionContext); + } else { + return this.getRuleContext(i, ExpressionContext); + } + } + public RBRACK(): TerminalNode[]; + public RBRACK(i: number): TerminalNode; + public RBRACK(i?: number): TerminalNode | TerminalNode[] { + if (i === undefined) { + return this.getTokens(pascalParser.RBRACK); + } else { + return this.getToken(pascalParser.RBRACK, i); + } + } + public LBRACK2(): TerminalNode[]; + public LBRACK2(i: number): TerminalNode; + public LBRACK2(i?: number): TerminalNode | TerminalNode[] { + if (i === undefined) { + return this.getTokens(pascalParser.LBRACK2); + } else { + return this.getToken(pascalParser.LBRACK2, i); + } + } + public RBRACK2(): TerminalNode[]; + public RBRACK2(i: number): TerminalNode; + public RBRACK2(i?: number): TerminalNode | TerminalNode[] { + if (i === undefined) { + return this.getTokens(pascalParser.RBRACK2); + } else { + return this.getToken(pascalParser.RBRACK2, i); + } + } + public DOT(): TerminalNode[]; + public DOT(i: number): TerminalNode; + public DOT(i?: number): TerminalNode | TerminalNode[] { + if (i === undefined) { + return this.getTokens(pascalParser.DOT); + } else { + return this.getToken(pascalParser.DOT, i); + } + } + public POINTER(): TerminalNode[]; + public POINTER(i: number): TerminalNode; + public POINTER(i?: number): TerminalNode | TerminalNode[] { + if (i === undefined) { + return this.getTokens(pascalParser.POINTER); + } else { + return this.getToken(pascalParser.POINTER, i); + } + } + public COMMA(): TerminalNode[]; + public COMMA(i: number): TerminalNode; + public COMMA(i?: number): TerminalNode | TerminalNode[] { + if (i === undefined) { + return this.getTokens(pascalParser.COMMA); + } else { + return this.getToken(pascalParser.COMMA, i); + } + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_variable; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterVariable) { + listener.enterVariable(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitVariable) { + listener.exitVariable(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitVariable) { + return visitor.visitVariable(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class ExpressionContext extends ParserRuleContext { + public simpleExpression(): SimpleExpressionContext { + return this.getRuleContext(0, SimpleExpressionContext); + } + public relationaloperator(): RelationaloperatorContext | undefined { + return this.tryGetRuleContext(0, RelationaloperatorContext); + } + public expression(): ExpressionContext | undefined { + return this.tryGetRuleContext(0, ExpressionContext); + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_expression; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterExpression) { + listener.enterExpression(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitExpression) { + listener.exitExpression(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitExpression) { + return visitor.visitExpression(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class RelationaloperatorContext extends ParserRuleContext { + public EQUAL(): TerminalNode | undefined { return this.tryGetToken(pascalParser.EQUAL, 0); } + public NOT_EQUAL(): TerminalNode | undefined { return this.tryGetToken(pascalParser.NOT_EQUAL, 0); } + public LT(): TerminalNode | undefined { return this.tryGetToken(pascalParser.LT, 0); } + public LE(): TerminalNode | undefined { return this.tryGetToken(pascalParser.LE, 0); } + public GE(): TerminalNode | undefined { return this.tryGetToken(pascalParser.GE, 0); } + public GT(): TerminalNode | undefined { return this.tryGetToken(pascalParser.GT, 0); } + public IN(): TerminalNode | undefined { return this.tryGetToken(pascalParser.IN, 0); } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_relationaloperator; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterRelationaloperator) { + listener.enterRelationaloperator(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitRelationaloperator) { + listener.exitRelationaloperator(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitRelationaloperator) { + return visitor.visitRelationaloperator(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class SimpleExpressionContext extends ParserRuleContext { + public term(): TermContext { + return this.getRuleContext(0, TermContext); + } + public additiveoperator(): AdditiveoperatorContext | undefined { + return this.tryGetRuleContext(0, AdditiveoperatorContext); + } + public simpleExpression(): SimpleExpressionContext | undefined { + return this.tryGetRuleContext(0, SimpleExpressionContext); + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_simpleExpression; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterSimpleExpression) { + listener.enterSimpleExpression(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitSimpleExpression) { + listener.exitSimpleExpression(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitSimpleExpression) { + return visitor.visitSimpleExpression(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class AdditiveoperatorContext extends ParserRuleContext { + public PLUS(): TerminalNode | undefined { return this.tryGetToken(pascalParser.PLUS, 0); } + public MINUS(): TerminalNode | undefined { return this.tryGetToken(pascalParser.MINUS, 0); } + public OR(): TerminalNode | undefined { return this.tryGetToken(pascalParser.OR, 0); } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_additiveoperator; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterAdditiveoperator) { + listener.enterAdditiveoperator(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitAdditiveoperator) { + listener.exitAdditiveoperator(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitAdditiveoperator) { + return visitor.visitAdditiveoperator(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class TermContext extends ParserRuleContext { + public signedFactor(): SignedFactorContext { + return this.getRuleContext(0, SignedFactorContext); + } + public multiplicativeoperator(): MultiplicativeoperatorContext | undefined { + return this.tryGetRuleContext(0, MultiplicativeoperatorContext); + } + public term(): TermContext | undefined { + return this.tryGetRuleContext(0, TermContext); + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_term; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterTerm) { + listener.enterTerm(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitTerm) { + listener.exitTerm(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitTerm) { + return visitor.visitTerm(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class MultiplicativeoperatorContext extends ParserRuleContext { + public STAR(): TerminalNode | undefined { return this.tryGetToken(pascalParser.STAR, 0); } + public SLASH(): TerminalNode | undefined { return this.tryGetToken(pascalParser.SLASH, 0); } + public DIV(): TerminalNode | undefined { return this.tryGetToken(pascalParser.DIV, 0); } + public MOD(): TerminalNode | undefined { return this.tryGetToken(pascalParser.MOD, 0); } + public AND(): TerminalNode | undefined { return this.tryGetToken(pascalParser.AND, 0); } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_multiplicativeoperator; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterMultiplicativeoperator) { + listener.enterMultiplicativeoperator(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitMultiplicativeoperator) { + listener.exitMultiplicativeoperator(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitMultiplicativeoperator) { + return visitor.visitMultiplicativeoperator(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class SignedFactorContext extends ParserRuleContext { + public factor(): FactorContext { + return this.getRuleContext(0, FactorContext); + } + public PLUS(): TerminalNode | undefined { return this.tryGetToken(pascalParser.PLUS, 0); } + public MINUS(): TerminalNode | undefined { return this.tryGetToken(pascalParser.MINUS, 0); } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_signedFactor; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterSignedFactor) { + listener.enterSignedFactor(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitSignedFactor) { + listener.exitSignedFactor(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitSignedFactor) { + return visitor.visitSignedFactor(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class FactorContext extends ParserRuleContext { + public variable(): VariableContext | undefined { + return this.tryGetRuleContext(0, VariableContext); + } + public LPAREN(): TerminalNode | undefined { return this.tryGetToken(pascalParser.LPAREN, 0); } + public expression(): ExpressionContext | undefined { + return this.tryGetRuleContext(0, ExpressionContext); + } + public RPAREN(): TerminalNode | undefined { return this.tryGetToken(pascalParser.RPAREN, 0); } + public functionDesignator(): FunctionDesignatorContext | undefined { + return this.tryGetRuleContext(0, FunctionDesignatorContext); + } + public unsignedConstant(): UnsignedConstantContext | undefined { + return this.tryGetRuleContext(0, UnsignedConstantContext); + } + public set_(): Set_Context | undefined { + return this.tryGetRuleContext(0, Set_Context); + } + public NOT(): TerminalNode | undefined { return this.tryGetToken(pascalParser.NOT, 0); } + public factor(): FactorContext | undefined { + return this.tryGetRuleContext(0, FactorContext); + } + public bool_(): Bool_Context | undefined { + return this.tryGetRuleContext(0, Bool_Context); + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_factor; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterFactor) { + listener.enterFactor(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitFactor) { + listener.exitFactor(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitFactor) { + return visitor.visitFactor(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class UnsignedConstantContext extends ParserRuleContext { + public unsignedNumber(): UnsignedNumberContext | undefined { + return this.tryGetRuleContext(0, UnsignedNumberContext); + } + public constantChr(): ConstantChrContext | undefined { + return this.tryGetRuleContext(0, ConstantChrContext); + } + public string(): StringContext | undefined { + return this.tryGetRuleContext(0, StringContext); + } + public NIL(): TerminalNode | undefined { return this.tryGetToken(pascalParser.NIL, 0); } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_unsignedConstant; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterUnsignedConstant) { + listener.enterUnsignedConstant(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitUnsignedConstant) { + listener.exitUnsignedConstant(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitUnsignedConstant) { + return visitor.visitUnsignedConstant(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class FunctionDesignatorContext extends ParserRuleContext { + public identifier(): IdentifierContext { + return this.getRuleContext(0, IdentifierContext); + } + public LPAREN(): TerminalNode { return this.getToken(pascalParser.LPAREN, 0); } + public parameterList(): ParameterListContext { + return this.getRuleContext(0, ParameterListContext); + } + public RPAREN(): TerminalNode { return this.getToken(pascalParser.RPAREN, 0); } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_functionDesignator; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterFunctionDesignator) { + listener.enterFunctionDesignator(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitFunctionDesignator) { + listener.exitFunctionDesignator(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitFunctionDesignator) { + return visitor.visitFunctionDesignator(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class ParameterListContext extends ParserRuleContext { + public actualParameter(): ActualParameterContext[]; + public actualParameter(i: number): ActualParameterContext; + public actualParameter(i?: number): ActualParameterContext | ActualParameterContext[] { + if (i === undefined) { + return this.getRuleContexts(ActualParameterContext); + } else { + return this.getRuleContext(i, ActualParameterContext); + } + } + public COMMA(): TerminalNode[]; + public COMMA(i: number): TerminalNode; + public COMMA(i?: number): TerminalNode | TerminalNode[] { + if (i === undefined) { + return this.getTokens(pascalParser.COMMA); + } else { + return this.getToken(pascalParser.COMMA, i); + } + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_parameterList; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterParameterList) { + listener.enterParameterList(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitParameterList) { + listener.exitParameterList(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitParameterList) { + return visitor.visitParameterList(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class Set_Context extends ParserRuleContext { + public LBRACK(): TerminalNode | undefined { return this.tryGetToken(pascalParser.LBRACK, 0); } + public elementList(): ElementListContext { + return this.getRuleContext(0, ElementListContext); + } + public RBRACK(): TerminalNode | undefined { return this.tryGetToken(pascalParser.RBRACK, 0); } + public LBRACK2(): TerminalNode | undefined { return this.tryGetToken(pascalParser.LBRACK2, 0); } + public RBRACK2(): TerminalNode | undefined { return this.tryGetToken(pascalParser.RBRACK2, 0); } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_set_; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterSet_) { + listener.enterSet_(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitSet_) { + listener.exitSet_(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitSet_) { + return visitor.visitSet_(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class ElementListContext extends ParserRuleContext { + public element(): ElementContext[]; + public element(i: number): ElementContext; + public element(i?: number): ElementContext | ElementContext[] { + if (i === undefined) { + return this.getRuleContexts(ElementContext); + } else { + return this.getRuleContext(i, ElementContext); + } + } + public COMMA(): TerminalNode[]; + public COMMA(i: number): TerminalNode; + public COMMA(i?: number): TerminalNode | TerminalNode[] { + if (i === undefined) { + return this.getTokens(pascalParser.COMMA); + } else { + return this.getToken(pascalParser.COMMA, i); + } + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_elementList; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterElementList) { + listener.enterElementList(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitElementList) { + listener.exitElementList(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitElementList) { + return visitor.visitElementList(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class ElementContext extends ParserRuleContext { + public expression(): ExpressionContext[]; + public expression(i: number): ExpressionContext; + public expression(i?: number): ExpressionContext | ExpressionContext[] { + if (i === undefined) { + return this.getRuleContexts(ExpressionContext); + } else { + return this.getRuleContext(i, ExpressionContext); + } + } + public DOTDOT(): TerminalNode | undefined { return this.tryGetToken(pascalParser.DOTDOT, 0); } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_element; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterElement) { + listener.enterElement(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitElement) { + listener.exitElement(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitElement) { + return visitor.visitElement(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class ProcedureStatementContext extends ParserRuleContext { + public identifier(): IdentifierContext { + return this.getRuleContext(0, IdentifierContext); + } + public LPAREN(): TerminalNode | undefined { return this.tryGetToken(pascalParser.LPAREN, 0); } + public parameterList(): ParameterListContext | undefined { + return this.tryGetRuleContext(0, ParameterListContext); + } + public RPAREN(): TerminalNode | undefined { return this.tryGetToken(pascalParser.RPAREN, 0); } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_procedureStatement; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterProcedureStatement) { + listener.enterProcedureStatement(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitProcedureStatement) { + listener.exitProcedureStatement(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitProcedureStatement) { + return visitor.visitProcedureStatement(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class ActualParameterContext extends ParserRuleContext { + public expression(): ExpressionContext { + return this.getRuleContext(0, ExpressionContext); + } + public parameterwidth(): ParameterwidthContext[]; + public parameterwidth(i: number): ParameterwidthContext; + public parameterwidth(i?: number): ParameterwidthContext | ParameterwidthContext[] { + if (i === undefined) { + return this.getRuleContexts(ParameterwidthContext); + } else { + return this.getRuleContext(i, ParameterwidthContext); + } + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_actualParameter; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterActualParameter) { + listener.enterActualParameter(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitActualParameter) { + listener.exitActualParameter(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitActualParameter) { + return visitor.visitActualParameter(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class ParameterwidthContext extends ParserRuleContext { + public COLON(): TerminalNode { return this.getToken(pascalParser.COLON, 0); } + public expression(): ExpressionContext { + return this.getRuleContext(0, ExpressionContext); + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_parameterwidth; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterParameterwidth) { + listener.enterParameterwidth(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitParameterwidth) { + listener.exitParameterwidth(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitParameterwidth) { + return visitor.visitParameterwidth(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class GotoStatementContext extends ParserRuleContext { + public GOTO(): TerminalNode { return this.getToken(pascalParser.GOTO, 0); } + public label(): LabelContext { + return this.getRuleContext(0, LabelContext); + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_gotoStatement; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterGotoStatement) { + listener.enterGotoStatement(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitGotoStatement) { + listener.exitGotoStatement(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitGotoStatement) { + return visitor.visitGotoStatement(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class EmptyStatement_Context extends ParserRuleContext { + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_emptyStatement_; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterEmptyStatement_) { + listener.enterEmptyStatement_(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitEmptyStatement_) { + listener.exitEmptyStatement_(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitEmptyStatement_) { + return visitor.visitEmptyStatement_(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class Empty_Context extends ParserRuleContext { + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_empty_; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterEmpty_) { + listener.enterEmpty_(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitEmpty_) { + listener.exitEmpty_(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitEmpty_) { + return visitor.visitEmpty_(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class StructuredStatementContext extends ParserRuleContext { + public compoundStatement(): CompoundStatementContext | undefined { + return this.tryGetRuleContext(0, CompoundStatementContext); + } + public conditionalStatement(): ConditionalStatementContext | undefined { + return this.tryGetRuleContext(0, ConditionalStatementContext); + } + public repetetiveStatement(): RepetetiveStatementContext | undefined { + return this.tryGetRuleContext(0, RepetetiveStatementContext); + } + public withStatement(): WithStatementContext | undefined { + return this.tryGetRuleContext(0, WithStatementContext); + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_structuredStatement; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterStructuredStatement) { + listener.enterStructuredStatement(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitStructuredStatement) { + listener.exitStructuredStatement(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitStructuredStatement) { + return visitor.visitStructuredStatement(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class CompoundStatementContext extends ParserRuleContext { + public BEGIN(): TerminalNode { return this.getToken(pascalParser.BEGIN, 0); } + public statements(): StatementsContext { + return this.getRuleContext(0, StatementsContext); + } + public END(): TerminalNode { return this.getToken(pascalParser.END, 0); } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_compoundStatement; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterCompoundStatement) { + listener.enterCompoundStatement(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitCompoundStatement) { + listener.exitCompoundStatement(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitCompoundStatement) { + return visitor.visitCompoundStatement(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class StatementsContext extends ParserRuleContext { + public statement(): StatementContext[]; + public statement(i: number): StatementContext; + public statement(i?: number): StatementContext | StatementContext[] { + if (i === undefined) { + return this.getRuleContexts(StatementContext); + } else { + return this.getRuleContext(i, StatementContext); + } + } + public SEMI(): TerminalNode[]; + public SEMI(i: number): TerminalNode; + public SEMI(i?: number): TerminalNode | TerminalNode[] { + if (i === undefined) { + return this.getTokens(pascalParser.SEMI); + } else { + return this.getToken(pascalParser.SEMI, i); + } + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_statements; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterStatements) { + listener.enterStatements(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitStatements) { + listener.exitStatements(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitStatements) { + return visitor.visitStatements(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class ConditionalStatementContext extends ParserRuleContext { + public ifStatement(): IfStatementContext | undefined { + return this.tryGetRuleContext(0, IfStatementContext); + } + public caseStatement(): CaseStatementContext | undefined { + return this.tryGetRuleContext(0, CaseStatementContext); + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_conditionalStatement; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterConditionalStatement) { + listener.enterConditionalStatement(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitConditionalStatement) { + listener.exitConditionalStatement(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitConditionalStatement) { + return visitor.visitConditionalStatement(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class IfStatementContext extends ParserRuleContext { + public IF(): TerminalNode { return this.getToken(pascalParser.IF, 0); } + public expression(): ExpressionContext { + return this.getRuleContext(0, ExpressionContext); + } + public THEN(): TerminalNode { return this.getToken(pascalParser.THEN, 0); } + public statement(): StatementContext[]; + public statement(i: number): StatementContext; + public statement(i?: number): StatementContext | StatementContext[] { + if (i === undefined) { + return this.getRuleContexts(StatementContext); + } else { + return this.getRuleContext(i, StatementContext); + } + } + public ELSE(): TerminalNode | undefined { return this.tryGetToken(pascalParser.ELSE, 0); } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_ifStatement; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterIfStatement) { + listener.enterIfStatement(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitIfStatement) { + listener.exitIfStatement(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitIfStatement) { + return visitor.visitIfStatement(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class CaseStatementContext extends ParserRuleContext { + public CASE(): TerminalNode { return this.getToken(pascalParser.CASE, 0); } + public expression(): ExpressionContext { + return this.getRuleContext(0, ExpressionContext); + } + public OF(): TerminalNode { return this.getToken(pascalParser.OF, 0); } + public caseListElement(): CaseListElementContext[]; + public caseListElement(i: number): CaseListElementContext; + public caseListElement(i?: number): CaseListElementContext | CaseListElementContext[] { + if (i === undefined) { + return this.getRuleContexts(CaseListElementContext); + } else { + return this.getRuleContext(i, CaseListElementContext); + } + } + public END(): TerminalNode { return this.getToken(pascalParser.END, 0); } + public SEMI(): TerminalNode[]; + public SEMI(i: number): TerminalNode; + public SEMI(i?: number): TerminalNode | TerminalNode[] { + if (i === undefined) { + return this.getTokens(pascalParser.SEMI); + } else { + return this.getToken(pascalParser.SEMI, i); + } + } + public ELSE(): TerminalNode | undefined { return this.tryGetToken(pascalParser.ELSE, 0); } + public statements(): StatementsContext | undefined { + return this.tryGetRuleContext(0, StatementsContext); + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_caseStatement; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterCaseStatement) { + listener.enterCaseStatement(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitCaseStatement) { + listener.exitCaseStatement(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitCaseStatement) { + return visitor.visitCaseStatement(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class CaseListElementContext extends ParserRuleContext { + public constList(): ConstListContext { + return this.getRuleContext(0, ConstListContext); + } + public COLON(): TerminalNode { return this.getToken(pascalParser.COLON, 0); } + public statement(): StatementContext { + return this.getRuleContext(0, StatementContext); + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_caseListElement; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterCaseListElement) { + listener.enterCaseListElement(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitCaseListElement) { + listener.exitCaseListElement(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitCaseListElement) { + return visitor.visitCaseListElement(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class RepetetiveStatementContext extends ParserRuleContext { + public whileStatement(): WhileStatementContext | undefined { + return this.tryGetRuleContext(0, WhileStatementContext); + } + public repeatStatement(): RepeatStatementContext | undefined { + return this.tryGetRuleContext(0, RepeatStatementContext); + } + public forStatement(): ForStatementContext | undefined { + return this.tryGetRuleContext(0, ForStatementContext); + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_repetetiveStatement; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterRepetetiveStatement) { + listener.enterRepetetiveStatement(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitRepetetiveStatement) { + listener.exitRepetetiveStatement(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitRepetetiveStatement) { + return visitor.visitRepetetiveStatement(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class WhileStatementContext extends ParserRuleContext { + public WHILE(): TerminalNode { return this.getToken(pascalParser.WHILE, 0); } + public expression(): ExpressionContext { + return this.getRuleContext(0, ExpressionContext); + } + public DO(): TerminalNode { return this.getToken(pascalParser.DO, 0); } + public statement(): StatementContext { + return this.getRuleContext(0, StatementContext); + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_whileStatement; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterWhileStatement) { + listener.enterWhileStatement(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitWhileStatement) { + listener.exitWhileStatement(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitWhileStatement) { + return visitor.visitWhileStatement(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class RepeatStatementContext extends ParserRuleContext { + public REPEAT(): TerminalNode { return this.getToken(pascalParser.REPEAT, 0); } + public statements(): StatementsContext { + return this.getRuleContext(0, StatementsContext); + } + public UNTIL(): TerminalNode { return this.getToken(pascalParser.UNTIL, 0); } + public expression(): ExpressionContext { + return this.getRuleContext(0, ExpressionContext); + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_repeatStatement; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterRepeatStatement) { + listener.enterRepeatStatement(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitRepeatStatement) { + listener.exitRepeatStatement(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitRepeatStatement) { + return visitor.visitRepeatStatement(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class ForStatementContext extends ParserRuleContext { + public FOR(): TerminalNode { return this.getToken(pascalParser.FOR, 0); } + public identifier(): IdentifierContext { + return this.getRuleContext(0, IdentifierContext); + } + public ASSIGN(): TerminalNode { return this.getToken(pascalParser.ASSIGN, 0); } + public forList(): ForListContext { + return this.getRuleContext(0, ForListContext); + } + public DO(): TerminalNode { return this.getToken(pascalParser.DO, 0); } + public statement(): StatementContext { + return this.getRuleContext(0, StatementContext); + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_forStatement; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterForStatement) { + listener.enterForStatement(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitForStatement) { + listener.exitForStatement(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitForStatement) { + return visitor.visitForStatement(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class ForListContext extends ParserRuleContext { + public initialValue(): InitialValueContext { + return this.getRuleContext(0, InitialValueContext); + } + public finalValue(): FinalValueContext { + return this.getRuleContext(0, FinalValueContext); + } + public TO(): TerminalNode | undefined { return this.tryGetToken(pascalParser.TO, 0); } + public DOWNTO(): TerminalNode | undefined { return this.tryGetToken(pascalParser.DOWNTO, 0); } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_forList; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterForList) { + listener.enterForList(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitForList) { + listener.exitForList(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitForList) { + return visitor.visitForList(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class InitialValueContext extends ParserRuleContext { + public expression(): ExpressionContext { + return this.getRuleContext(0, ExpressionContext); + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_initialValue; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterInitialValue) { + listener.enterInitialValue(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitInitialValue) { + listener.exitInitialValue(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitInitialValue) { + return visitor.visitInitialValue(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class FinalValueContext extends ParserRuleContext { + public expression(): ExpressionContext { + return this.getRuleContext(0, ExpressionContext); + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_finalValue; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterFinalValue) { + listener.enterFinalValue(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitFinalValue) { + listener.exitFinalValue(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitFinalValue) { + return visitor.visitFinalValue(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class WithStatementContext extends ParserRuleContext { + public WITH(): TerminalNode { return this.getToken(pascalParser.WITH, 0); } + public recordVariableList(): RecordVariableListContext { + return this.getRuleContext(0, RecordVariableListContext); + } + public DO(): TerminalNode { return this.getToken(pascalParser.DO, 0); } + public statement(): StatementContext { + return this.getRuleContext(0, StatementContext); + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_withStatement; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterWithStatement) { + listener.enterWithStatement(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitWithStatement) { + listener.exitWithStatement(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitWithStatement) { + return visitor.visitWithStatement(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class RecordVariableListContext extends ParserRuleContext { + public variable(): VariableContext[]; + public variable(i: number): VariableContext; + public variable(i?: number): VariableContext | VariableContext[] { + if (i === undefined) { + return this.getRuleContexts(VariableContext); + } else { + return this.getRuleContext(i, VariableContext); + } + } + public COMMA(): TerminalNode[]; + public COMMA(i: number): TerminalNode; + public COMMA(i?: number): TerminalNode | TerminalNode[] { + if (i === undefined) { + return this.getTokens(pascalParser.COMMA); + } else { + return this.getToken(pascalParser.COMMA, i); + } + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return pascalParser.RULE_recordVariableList; } + // @Override + public enterRule(listener: pascalListener): void { + if (listener.enterRecordVariableList) { + listener.enterRecordVariableList(this); + } + } + // @Override + public exitRule(listener: pascalListener): void { + if (listener.exitRecordVariableList) { + listener.exitRecordVariableList(this); + } + } + // @Override + public accept(visitor: pascalVisitor): Result { + if (visitor.visitRecordVariableList) { + return visitor.visitRecordVariableList(this); + } else { + return visitor.visitChildren(this); + } + } +} + + diff --git a/examples/Example - Pascal Symbol Table/src/pascalVisitor.ts b/examples/Example - Pascal Symbol Table/src/pascalVisitor.ts new file mode 100644 index 0000000..cca385c --- /dev/null +++ b/examples/Example - Pascal Symbol Table/src/pascalVisitor.ts @@ -0,0 +1,800 @@ +// Generated from ./pascal.g4 by ANTLR 4.9.0-SNAPSHOT + + +import { ParseTreeVisitor } from "antlr4ts/tree/ParseTreeVisitor"; + +import { StartContext } from "./pascalParser"; +import { ProgramContext } from "./pascalParser"; +import { ProgramHeadingContext } from "./pascalParser"; +import { IdentifierContext } from "./pascalParser"; +import { BlockContext } from "./pascalParser"; +import { UsesUnitsPartContext } from "./pascalParser"; +import { LabelDeclarationPartContext } from "./pascalParser"; +import { LabelContext } from "./pascalParser"; +import { ConstantDefinitionPartContext } from "./pascalParser"; +import { ConstantDefinitionContext } from "./pascalParser"; +import { ConstantChrContext } from "./pascalParser"; +import { ConstantContext } from "./pascalParser"; +import { UnsignedNumberContext } from "./pascalParser"; +import { UnsignedIntegerContext } from "./pascalParser"; +import { UnsignedRealContext } from "./pascalParser"; +import { SignContext } from "./pascalParser"; +import { Bool_Context } from "./pascalParser"; +import { StringContext } from "./pascalParser"; +import { TypeDefinitionPartContext } from "./pascalParser"; +import { TypeDefinitionContext } from "./pascalParser"; +import { FunctionTypeContext } from "./pascalParser"; +import { ProcedureTypeContext } from "./pascalParser"; +import { Type_Context } from "./pascalParser"; +import { SimpleTypeContext } from "./pascalParser"; +import { ScalarTypeContext } from "./pascalParser"; +import { SubrangeTypeContext } from "./pascalParser"; +import { TypeIdentifierContext } from "./pascalParser"; +import { StructuredTypeContext } from "./pascalParser"; +import { UnpackedStructuredTypeContext } from "./pascalParser"; +import { StringtypeContext } from "./pascalParser"; +import { ArrayTypeContext } from "./pascalParser"; +import { TypeListContext } from "./pascalParser"; +import { IndexTypeContext } from "./pascalParser"; +import { ComponentTypeContext } from "./pascalParser"; +import { RecordTypeContext } from "./pascalParser"; +import { FieldListContext } from "./pascalParser"; +import { FixedPartContext } from "./pascalParser"; +import { RecordSectionContext } from "./pascalParser"; +import { VariantPartContext } from "./pascalParser"; +import { TagContext } from "./pascalParser"; +import { VariantContext } from "./pascalParser"; +import { SetTypeContext } from "./pascalParser"; +import { BaseTypeContext } from "./pascalParser"; +import { FileTypeContext } from "./pascalParser"; +import { PointerTypeContext } from "./pascalParser"; +import { VariableDeclarationPartContext } from "./pascalParser"; +import { VariableDeclarationContext } from "./pascalParser"; +import { ProcedureAndFunctionDeclarationPartContext } from "./pascalParser"; +import { ProcedureOrFunctionDeclarationContext } from "./pascalParser"; +import { ProcedureDeclarationContext } from "./pascalParser"; +import { FormalParameterListContext } from "./pascalParser"; +import { FormalParameterSectionContext } from "./pascalParser"; +import { ParameterGroupContext } from "./pascalParser"; +import { IdentifierListContext } from "./pascalParser"; +import { ConstListContext } from "./pascalParser"; +import { FunctionDeclarationContext } from "./pascalParser"; +import { ResultTypeContext } from "./pascalParser"; +import { StatementContext } from "./pascalParser"; +import { UnlabelledStatementContext } from "./pascalParser"; +import { SimpleStatementContext } from "./pascalParser"; +import { AssignmentStatementContext } from "./pascalParser"; +import { VariableContext } from "./pascalParser"; +import { ExpressionContext } from "./pascalParser"; +import { RelationaloperatorContext } from "./pascalParser"; +import { SimpleExpressionContext } from "./pascalParser"; +import { AdditiveoperatorContext } from "./pascalParser"; +import { TermContext } from "./pascalParser"; +import { MultiplicativeoperatorContext } from "./pascalParser"; +import { SignedFactorContext } from "./pascalParser"; +import { FactorContext } from "./pascalParser"; +import { UnsignedConstantContext } from "./pascalParser"; +import { FunctionDesignatorContext } from "./pascalParser"; +import { ParameterListContext } from "./pascalParser"; +import { Set_Context } from "./pascalParser"; +import { ElementListContext } from "./pascalParser"; +import { ElementContext } from "./pascalParser"; +import { ProcedureStatementContext } from "./pascalParser"; +import { ActualParameterContext } from "./pascalParser"; +import { ParameterwidthContext } from "./pascalParser"; +import { GotoStatementContext } from "./pascalParser"; +import { EmptyStatement_Context } from "./pascalParser"; +import { Empty_Context } from "./pascalParser"; +import { StructuredStatementContext } from "./pascalParser"; +import { CompoundStatementContext } from "./pascalParser"; +import { StatementsContext } from "./pascalParser"; +import { ConditionalStatementContext } from "./pascalParser"; +import { IfStatementContext } from "./pascalParser"; +import { CaseStatementContext } from "./pascalParser"; +import { CaseListElementContext } from "./pascalParser"; +import { RepetetiveStatementContext } from "./pascalParser"; +import { WhileStatementContext } from "./pascalParser"; +import { RepeatStatementContext } from "./pascalParser"; +import { ForStatementContext } from "./pascalParser"; +import { ForListContext } from "./pascalParser"; +import { InitialValueContext } from "./pascalParser"; +import { FinalValueContext } from "./pascalParser"; +import { WithStatementContext } from "./pascalParser"; +import { RecordVariableListContext } from "./pascalParser"; + + +/** + * This interface defines a complete generic visitor for a parse tree produced + * by `pascalParser`. + * + * @param The return type of the visit operation. Use `void` for + * operations with no return type. + */ +export interface pascalVisitor extends ParseTreeVisitor { + /** + * Visit a parse tree produced by `pascalParser.start`. + * @param ctx the parse tree + * @return the visitor result + */ + visitStart?: (ctx: StartContext) => Result; + + /** + * Visit a parse tree produced by `pascalParser.program`. + * @param ctx the parse tree + * @return the visitor result + */ + visitProgram?: (ctx: ProgramContext) => Result; + + /** + * Visit a parse tree produced by `pascalParser.programHeading`. + * @param ctx the parse tree + * @return the visitor result + */ + visitProgramHeading?: (ctx: ProgramHeadingContext) => Result; + + /** + * Visit a parse tree produced by `pascalParser.identifier`. + * @param ctx the parse tree + * @return the visitor result + */ + visitIdentifier?: (ctx: IdentifierContext) => Result; + + /** + * Visit a parse tree produced by `pascalParser.block`. + * @param ctx the parse tree + * @return the visitor result + */ + visitBlock?: (ctx: BlockContext) => Result; + + /** + * Visit a parse tree produced by `pascalParser.usesUnitsPart`. + * @param ctx the parse tree + * @return the visitor result + */ + visitUsesUnitsPart?: (ctx: UsesUnitsPartContext) => Result; + + /** + * Visit a parse tree produced by `pascalParser.labelDeclarationPart`. + * @param ctx the parse tree + * @return the visitor result + */ + visitLabelDeclarationPart?: (ctx: LabelDeclarationPartContext) => Result; + + /** + * Visit a parse tree produced by `pascalParser.label`. + * @param ctx the parse tree + * @return the visitor result + */ + visitLabel?: (ctx: LabelContext) => Result; + + /** + * Visit a parse tree produced by `pascalParser.constantDefinitionPart`. + * @param ctx the parse tree + * @return the visitor result + */ + visitConstantDefinitionPart?: (ctx: ConstantDefinitionPartContext) => Result; + + /** + * Visit a parse tree produced by `pascalParser.constantDefinition`. + * @param ctx the parse tree + * @return the visitor result + */ + visitConstantDefinition?: (ctx: ConstantDefinitionContext) => Result; + + /** + * Visit a parse tree produced by `pascalParser.constantChr`. + * @param ctx the parse tree + * @return the visitor result + */ + visitConstantChr?: (ctx: ConstantChrContext) => Result; + + /** + * Visit a parse tree produced by `pascalParser.constant`. + * @param ctx the parse tree + * @return the visitor result + */ + visitConstant?: (ctx: ConstantContext) => Result; + + /** + * Visit a parse tree produced by `pascalParser.unsignedNumber`. + * @param ctx the parse tree + * @return the visitor result + */ + visitUnsignedNumber?: (ctx: UnsignedNumberContext) => Result; + + /** + * Visit a parse tree produced by `pascalParser.unsignedInteger`. + * @param ctx the parse tree + * @return the visitor result + */ + visitUnsignedInteger?: (ctx: UnsignedIntegerContext) => Result; + + /** + * Visit a parse tree produced by `pascalParser.unsignedReal`. + * @param ctx the parse tree + * @return the visitor result + */ + visitUnsignedReal?: (ctx: UnsignedRealContext) => Result; + + /** + * Visit a parse tree produced by `pascalParser.sign`. + * @param ctx the parse tree + * @return the visitor result + */ + visitSign?: (ctx: SignContext) => Result; + + /** + * Visit a parse tree produced by `pascalParser.bool_`. + * @param ctx the parse tree + * @return the visitor result + */ + visitBool_?: (ctx: Bool_Context) => Result; + + /** + * Visit a parse tree produced by `pascalParser.string`. + * @param ctx the parse tree + * @return the visitor result + */ + visitString?: (ctx: StringContext) => Result; + + /** + * Visit a parse tree produced by `pascalParser.typeDefinitionPart`. + * @param ctx the parse tree + * @return the visitor result + */ + visitTypeDefinitionPart?: (ctx: TypeDefinitionPartContext) => Result; + + /** + * Visit a parse tree produced by `pascalParser.typeDefinition`. + * @param ctx the parse tree + * @return the visitor result + */ + visitTypeDefinition?: (ctx: TypeDefinitionContext) => Result; + + /** + * Visit a parse tree produced by `pascalParser.functionType`. + * @param ctx the parse tree + * @return the visitor result + */ + visitFunctionType?: (ctx: FunctionTypeContext) => Result; + + /** + * Visit a parse tree produced by `pascalParser.procedureType`. + * @param ctx the parse tree + * @return the visitor result + */ + visitProcedureType?: (ctx: ProcedureTypeContext) => Result; + + /** + * Visit a parse tree produced by `pascalParser.type_`. + * @param ctx the parse tree + * @return the visitor result + */ + visitType_?: (ctx: Type_Context) => Result; + + /** + * Visit a parse tree produced by `pascalParser.simpleType`. + * @param ctx the parse tree + * @return the visitor result + */ + visitSimpleType?: (ctx: SimpleTypeContext) => Result; + + /** + * Visit a parse tree produced by `pascalParser.scalarType`. + * @param ctx the parse tree + * @return the visitor result + */ + visitScalarType?: (ctx: ScalarTypeContext) => Result; + + /** + * Visit a parse tree produced by `pascalParser.subrangeType`. + * @param ctx the parse tree + * @return the visitor result + */ + visitSubrangeType?: (ctx: SubrangeTypeContext) => Result; + + /** + * Visit a parse tree produced by `pascalParser.typeIdentifier`. + * @param ctx the parse tree + * @return the visitor result + */ + visitTypeIdentifier?: (ctx: TypeIdentifierContext) => Result; + + /** + * Visit a parse tree produced by `pascalParser.structuredType`. + * @param ctx the parse tree + * @return the visitor result + */ + visitStructuredType?: (ctx: StructuredTypeContext) => Result; + + /** + * Visit a parse tree produced by `pascalParser.unpackedStructuredType`. + * @param ctx the parse tree + * @return the visitor result + */ + visitUnpackedStructuredType?: (ctx: UnpackedStructuredTypeContext) => Result; + + /** + * Visit a parse tree produced by `pascalParser.stringtype`. + * @param ctx the parse tree + * @return the visitor result + */ + visitStringtype?: (ctx: StringtypeContext) => Result; + + /** + * Visit a parse tree produced by `pascalParser.arrayType`. + * @param ctx the parse tree + * @return the visitor result + */ + visitArrayType?: (ctx: ArrayTypeContext) => Result; + + /** + * Visit a parse tree produced by `pascalParser.typeList`. + * @param ctx the parse tree + * @return the visitor result + */ + visitTypeList?: (ctx: TypeListContext) => Result; + + /** + * Visit a parse tree produced by `pascalParser.indexType`. + * @param ctx the parse tree + * @return the visitor result + */ + visitIndexType?: (ctx: IndexTypeContext) => Result; + + /** + * Visit a parse tree produced by `pascalParser.componentType`. + * @param ctx the parse tree + * @return the visitor result + */ + visitComponentType?: (ctx: ComponentTypeContext) => Result; + + /** + * Visit a parse tree produced by `pascalParser.recordType`. + * @param ctx the parse tree + * @return the visitor result + */ + visitRecordType?: (ctx: RecordTypeContext) => Result; + + /** + * Visit a parse tree produced by `pascalParser.fieldList`. + * @param ctx the parse tree + * @return the visitor result + */ + visitFieldList?: (ctx: FieldListContext) => Result; + + /** + * Visit a parse tree produced by `pascalParser.fixedPart`. + * @param ctx the parse tree + * @return the visitor result + */ + visitFixedPart?: (ctx: FixedPartContext) => Result; + + /** + * Visit a parse tree produced by `pascalParser.recordSection`. + * @param ctx the parse tree + * @return the visitor result + */ + visitRecordSection?: (ctx: RecordSectionContext) => Result; + + /** + * Visit a parse tree produced by `pascalParser.variantPart`. + * @param ctx the parse tree + * @return the visitor result + */ + visitVariantPart?: (ctx: VariantPartContext) => Result; + + /** + * Visit a parse tree produced by `pascalParser.tag`. + * @param ctx the parse tree + * @return the visitor result + */ + visitTag?: (ctx: TagContext) => Result; + + /** + * Visit a parse tree produced by `pascalParser.variant`. + * @param ctx the parse tree + * @return the visitor result + */ + visitVariant?: (ctx: VariantContext) => Result; + + /** + * Visit a parse tree produced by `pascalParser.setType`. + * @param ctx the parse tree + * @return the visitor result + */ + visitSetType?: (ctx: SetTypeContext) => Result; + + /** + * Visit a parse tree produced by `pascalParser.baseType`. + * @param ctx the parse tree + * @return the visitor result + */ + visitBaseType?: (ctx: BaseTypeContext) => Result; + + /** + * Visit a parse tree produced by `pascalParser.fileType`. + * @param ctx the parse tree + * @return the visitor result + */ + visitFileType?: (ctx: FileTypeContext) => Result; + + /** + * Visit a parse tree produced by `pascalParser.pointerType`. + * @param ctx the parse tree + * @return the visitor result + */ + visitPointerType?: (ctx: PointerTypeContext) => Result; + + /** + * Visit a parse tree produced by `pascalParser.variableDeclarationPart`. + * @param ctx the parse tree + * @return the visitor result + */ + visitVariableDeclarationPart?: (ctx: VariableDeclarationPartContext) => Result; + + /** + * Visit a parse tree produced by `pascalParser.variableDeclaration`. + * @param ctx the parse tree + * @return the visitor result + */ + visitVariableDeclaration?: (ctx: VariableDeclarationContext) => Result; + + /** + * Visit a parse tree produced by `pascalParser.procedureAndFunctionDeclarationPart`. + * @param ctx the parse tree + * @return the visitor result + */ + visitProcedureAndFunctionDeclarationPart?: (ctx: ProcedureAndFunctionDeclarationPartContext) => Result; + + /** + * Visit a parse tree produced by `pascalParser.procedureOrFunctionDeclaration`. + * @param ctx the parse tree + * @return the visitor result + */ + visitProcedureOrFunctionDeclaration?: (ctx: ProcedureOrFunctionDeclarationContext) => Result; + + /** + * Visit a parse tree produced by `pascalParser.procedureDeclaration`. + * @param ctx the parse tree + * @return the visitor result + */ + visitProcedureDeclaration?: (ctx: ProcedureDeclarationContext) => Result; + + /** + * Visit a parse tree produced by `pascalParser.formalParameterList`. + * @param ctx the parse tree + * @return the visitor result + */ + visitFormalParameterList?: (ctx: FormalParameterListContext) => Result; + + /** + * Visit a parse tree produced by `pascalParser.formalParameterSection`. + * @param ctx the parse tree + * @return the visitor result + */ + visitFormalParameterSection?: (ctx: FormalParameterSectionContext) => Result; + + /** + * Visit a parse tree produced by `pascalParser.parameterGroup`. + * @param ctx the parse tree + * @return the visitor result + */ + visitParameterGroup?: (ctx: ParameterGroupContext) => Result; + + /** + * Visit a parse tree produced by `pascalParser.identifierList`. + * @param ctx the parse tree + * @return the visitor result + */ + visitIdentifierList?: (ctx: IdentifierListContext) => Result; + + /** + * Visit a parse tree produced by `pascalParser.constList`. + * @param ctx the parse tree + * @return the visitor result + */ + visitConstList?: (ctx: ConstListContext) => Result; + + /** + * Visit a parse tree produced by `pascalParser.functionDeclaration`. + * @param ctx the parse tree + * @return the visitor result + */ + visitFunctionDeclaration?: (ctx: FunctionDeclarationContext) => Result; + + /** + * Visit a parse tree produced by `pascalParser.resultType`. + * @param ctx the parse tree + * @return the visitor result + */ + visitResultType?: (ctx: ResultTypeContext) => Result; + + /** + * Visit a parse tree produced by `pascalParser.statement`. + * @param ctx the parse tree + * @return the visitor result + */ + visitStatement?: (ctx: StatementContext) => Result; + + /** + * Visit a parse tree produced by `pascalParser.unlabelledStatement`. + * @param ctx the parse tree + * @return the visitor result + */ + visitUnlabelledStatement?: (ctx: UnlabelledStatementContext) => Result; + + /** + * Visit a parse tree produced by `pascalParser.simpleStatement`. + * @param ctx the parse tree + * @return the visitor result + */ + visitSimpleStatement?: (ctx: SimpleStatementContext) => Result; + + /** + * Visit a parse tree produced by `pascalParser.assignmentStatement`. + * @param ctx the parse tree + * @return the visitor result + */ + visitAssignmentStatement?: (ctx: AssignmentStatementContext) => Result; + + /** + * Visit a parse tree produced by `pascalParser.variable`. + * @param ctx the parse tree + * @return the visitor result + */ + visitVariable?: (ctx: VariableContext) => Result; + + /** + * Visit a parse tree produced by `pascalParser.expression`. + * @param ctx the parse tree + * @return the visitor result + */ + visitExpression?: (ctx: ExpressionContext) => Result; + + /** + * Visit a parse tree produced by `pascalParser.relationaloperator`. + * @param ctx the parse tree + * @return the visitor result + */ + visitRelationaloperator?: (ctx: RelationaloperatorContext) => Result; + + /** + * Visit a parse tree produced by `pascalParser.simpleExpression`. + * @param ctx the parse tree + * @return the visitor result + */ + visitSimpleExpression?: (ctx: SimpleExpressionContext) => Result; + + /** + * Visit a parse tree produced by `pascalParser.additiveoperator`. + * @param ctx the parse tree + * @return the visitor result + */ + visitAdditiveoperator?: (ctx: AdditiveoperatorContext) => Result; + + /** + * Visit a parse tree produced by `pascalParser.term`. + * @param ctx the parse tree + * @return the visitor result + */ + visitTerm?: (ctx: TermContext) => Result; + + /** + * Visit a parse tree produced by `pascalParser.multiplicativeoperator`. + * @param ctx the parse tree + * @return the visitor result + */ + visitMultiplicativeoperator?: (ctx: MultiplicativeoperatorContext) => Result; + + /** + * Visit a parse tree produced by `pascalParser.signedFactor`. + * @param ctx the parse tree + * @return the visitor result + */ + visitSignedFactor?: (ctx: SignedFactorContext) => Result; + + /** + * Visit a parse tree produced by `pascalParser.factor`. + * @param ctx the parse tree + * @return the visitor result + */ + visitFactor?: (ctx: FactorContext) => Result; + + /** + * Visit a parse tree produced by `pascalParser.unsignedConstant`. + * @param ctx the parse tree + * @return the visitor result + */ + visitUnsignedConstant?: (ctx: UnsignedConstantContext) => Result; + + /** + * Visit a parse tree produced by `pascalParser.functionDesignator`. + * @param ctx the parse tree + * @return the visitor result + */ + visitFunctionDesignator?: (ctx: FunctionDesignatorContext) => Result; + + /** + * Visit a parse tree produced by `pascalParser.parameterList`. + * @param ctx the parse tree + * @return the visitor result + */ + visitParameterList?: (ctx: ParameterListContext) => Result; + + /** + * Visit a parse tree produced by `pascalParser.set_`. + * @param ctx the parse tree + * @return the visitor result + */ + visitSet_?: (ctx: Set_Context) => Result; + + /** + * Visit a parse tree produced by `pascalParser.elementList`. + * @param ctx the parse tree + * @return the visitor result + */ + visitElementList?: (ctx: ElementListContext) => Result; + + /** + * Visit a parse tree produced by `pascalParser.element`. + * @param ctx the parse tree + * @return the visitor result + */ + visitElement?: (ctx: ElementContext) => Result; + + /** + * Visit a parse tree produced by `pascalParser.procedureStatement`. + * @param ctx the parse tree + * @return the visitor result + */ + visitProcedureStatement?: (ctx: ProcedureStatementContext) => Result; + + /** + * Visit a parse tree produced by `pascalParser.actualParameter`. + * @param ctx the parse tree + * @return the visitor result + */ + visitActualParameter?: (ctx: ActualParameterContext) => Result; + + /** + * Visit a parse tree produced by `pascalParser.parameterwidth`. + * @param ctx the parse tree + * @return the visitor result + */ + visitParameterwidth?: (ctx: ParameterwidthContext) => Result; + + /** + * Visit a parse tree produced by `pascalParser.gotoStatement`. + * @param ctx the parse tree + * @return the visitor result + */ + visitGotoStatement?: (ctx: GotoStatementContext) => Result; + + /** + * Visit a parse tree produced by `pascalParser.emptyStatement_`. + * @param ctx the parse tree + * @return the visitor result + */ + visitEmptyStatement_?: (ctx: EmptyStatement_Context) => Result; + + /** + * Visit a parse tree produced by `pascalParser.empty_`. + * @param ctx the parse tree + * @return the visitor result + */ + visitEmpty_?: (ctx: Empty_Context) => Result; + + /** + * Visit a parse tree produced by `pascalParser.structuredStatement`. + * @param ctx the parse tree + * @return the visitor result + */ + visitStructuredStatement?: (ctx: StructuredStatementContext) => Result; + + /** + * Visit a parse tree produced by `pascalParser.compoundStatement`. + * @param ctx the parse tree + * @return the visitor result + */ + visitCompoundStatement?: (ctx: CompoundStatementContext) => Result; + + /** + * Visit a parse tree produced by `pascalParser.statements`. + * @param ctx the parse tree + * @return the visitor result + */ + visitStatements?: (ctx: StatementsContext) => Result; + + /** + * Visit a parse tree produced by `pascalParser.conditionalStatement`. + * @param ctx the parse tree + * @return the visitor result + */ + visitConditionalStatement?: (ctx: ConditionalStatementContext) => Result; + + /** + * Visit a parse tree produced by `pascalParser.ifStatement`. + * @param ctx the parse tree + * @return the visitor result + */ + visitIfStatement?: (ctx: IfStatementContext) => Result; + + /** + * Visit a parse tree produced by `pascalParser.caseStatement`. + * @param ctx the parse tree + * @return the visitor result + */ + visitCaseStatement?: (ctx: CaseStatementContext) => Result; + + /** + * Visit a parse tree produced by `pascalParser.caseListElement`. + * @param ctx the parse tree + * @return the visitor result + */ + visitCaseListElement?: (ctx: CaseListElementContext) => Result; + + /** + * Visit a parse tree produced by `pascalParser.repetetiveStatement`. + * @param ctx the parse tree + * @return the visitor result + */ + visitRepetetiveStatement?: (ctx: RepetetiveStatementContext) => Result; + + /** + * Visit a parse tree produced by `pascalParser.whileStatement`. + * @param ctx the parse tree + * @return the visitor result + */ + visitWhileStatement?: (ctx: WhileStatementContext) => Result; + + /** + * Visit a parse tree produced by `pascalParser.repeatStatement`. + * @param ctx the parse tree + * @return the visitor result + */ + visitRepeatStatement?: (ctx: RepeatStatementContext) => Result; + + /** + * Visit a parse tree produced by `pascalParser.forStatement`. + * @param ctx the parse tree + * @return the visitor result + */ + visitForStatement?: (ctx: ForStatementContext) => Result; + + /** + * Visit a parse tree produced by `pascalParser.forList`. + * @param ctx the parse tree + * @return the visitor result + */ + visitForList?: (ctx: ForListContext) => Result; + + /** + * Visit a parse tree produced by `pascalParser.initialValue`. + * @param ctx the parse tree + * @return the visitor result + */ + visitInitialValue?: (ctx: InitialValueContext) => Result; + + /** + * Visit a parse tree produced by `pascalParser.finalValue`. + * @param ctx the parse tree + * @return the visitor result + */ + visitFinalValue?: (ctx: FinalValueContext) => Result; + + /** + * Visit a parse tree produced by `pascalParser.withStatement`. + * @param ctx the parse tree + * @return the visitor result + */ + visitWithStatement?: (ctx: WithStatementContext) => Result; + + /** + * Visit a parse tree produced by `pascalParser.recordVariableList`. + * @param ctx the parse tree + * @return the visitor result + */ + visitRecordVariableList?: (ctx: RecordVariableListContext) => Result; +} + diff --git a/examples/Example - Pascal Symbol Table/tsconfig.json b/examples/Example - Pascal Symbol Table/tsconfig.json new file mode 100644 index 0000000..154453d --- /dev/null +++ b/examples/Example - Pascal Symbol Table/tsconfig.json @@ -0,0 +1,17 @@ +{ + "compilerOptions": { + "target": "es6", + "module": "commonjs", + "strict": true, + "esModuleInterop": true, + "skipLibCheck": true, + "forceConsistentCasingInFileNames": true, + "lib": ["es6"], + "moduleResolution": "node", + //"declaration": true, /* Generates corresponding '.d.ts' file. */ + //"declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */ + "outDir": "dist", + "rootDir": "src", + "baseUrl": ".", + } +} \ No newline at end of file diff --git a/lerna.json b/lerna.json index b61299d..95adb35 100644 --- a/lerna.json +++ b/lerna.json @@ -1,7 +1,7 @@ { "packages": [ "packages/*", - "examples/*", + "examples/Example - Pascal Symbol Table", "packages/ast/src/*" ], "useNx": false, diff --git a/package-lock.json b/package-lock.json index 6543808..c4124d2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,6 +14,8 @@ "devDependencies": { "@typescript-eslint/eslint-plugin": "^5.30.5", "@typescript-eslint/parser": "^5.30.5", + "antlr4ts": "^0.5.0-alpha.4", + "antlr4ts-cli": "^0.5.0-alpha.4", "eslint": "^8.19.0", "eslint-config-google": "^0.14.0", "lerna": "^5.1.7" @@ -2178,6 +2180,21 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/antlr4ts": { + "version": "0.5.0-alpha.4", + "resolved": "https://registry.npmjs.org/antlr4ts/-/antlr4ts-0.5.0-alpha.4.tgz", + "integrity": "sha512-WPQDt1B74OfPv/IMS2ekXAKkTZIHl88uMetg6q3OTqgFxZ/dxDXI0EWLyZid/1Pe6hTftyg5N7gel5wNAGxXyQ==", + "dev": true + }, + "node_modules/antlr4ts-cli": { + "version": "0.5.0-alpha.4", + "resolved": "https://registry.npmjs.org/antlr4ts-cli/-/antlr4ts-cli-0.5.0-alpha.4.tgz", + "integrity": "sha512-lVPVBTA2CVHRYILSKilL6Jd4hAumhSZZWA7UbQNQrmaSSj7dPmmYaN4bOmZG79cOy0lS00i4LY68JZZjZMWVrw==", + "dev": true, + "bin": { + "antlr4ts": "antlr4ts" + } + }, "node_modules/aproba": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", @@ -9487,6 +9504,18 @@ "color-convert": "^2.0.1" } }, + "antlr4ts": { + "version": "0.5.0-alpha.4", + "resolved": "https://registry.npmjs.org/antlr4ts/-/antlr4ts-0.5.0-alpha.4.tgz", + "integrity": "sha512-WPQDt1B74OfPv/IMS2ekXAKkTZIHl88uMetg6q3OTqgFxZ/dxDXI0EWLyZid/1Pe6hTftyg5N7gel5wNAGxXyQ==", + "dev": true + }, + "antlr4ts-cli": { + "version": "0.5.0-alpha.4", + "resolved": "https://registry.npmjs.org/antlr4ts-cli/-/antlr4ts-cli-0.5.0-alpha.4.tgz", + "integrity": "sha512-lVPVBTA2CVHRYILSKilL6Jd4hAumhSZZWA7UbQNQrmaSSj7dPmmYaN4bOmZG79cOy0lS00i4LY68JZZjZMWVrw==", + "dev": true + }, "aproba": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", diff --git a/package.json b/package.json index a953111..519a914 100644 --- a/package.json +++ b/package.json @@ -20,6 +20,8 @@ "devDependencies": { "@typescript-eslint/eslint-plugin": "^5.30.5", "@typescript-eslint/parser": "^5.30.5", + "antlr4ts": "^0.5.0-alpha.4", + "antlr4ts-cli": "^0.5.0-alpha.4", "eslint": "^8.19.0", "eslint-config-google": "^0.14.0", "lerna": "^5.1.7" diff --git a/packages/ast/package.json b/packages/ast/package.json index a787ff8..1813117 100644 --- a/packages/ast/package.json +++ b/packages/ast/package.json @@ -3,6 +3,7 @@ "version": "1.0.0", "description": "", "main": "dist/index.js", + "types": "dist/index.d.ts", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "build": "tsc --build tsconfig.json", @@ -24,5 +25,8 @@ "dependencies": { "@types/node": "^18.0.3", "@easycompiler/util": "1.0.0" - } + }, + "include": [ + "./src/" + ] } diff --git a/packages/ast/src/errors/ASTError.ts b/packages/ast/src/errors/ASTError.ts index a2c2298..2dcfe03 100644 --- a/packages/ast/src/errors/ASTError.ts +++ b/packages/ast/src/errors/ASTError.ts @@ -18,7 +18,7 @@ * limitations under the License. */ -export class ASTError extends Error +export class AstError extends Error { } \ No newline at end of file diff --git a/packages/ast/src/errors/index.ts b/packages/ast/src/errors/index.ts index ccc8650..d7038f6 100644 --- a/packages/ast/src/errors/index.ts +++ b/packages/ast/src/errors/index.ts @@ -18,4 +18,4 @@ * limitations under the License. */ -export { ASTError } from './ASTError'; \ No newline at end of file +export { AstError } from './AstError'; \ No newline at end of file diff --git a/packages/ast/src/index.ts b/packages/ast/src/index.ts index 7849897..cabd508 100644 --- a/packages/ast/src/index.ts +++ b/packages/ast/src/index.ts @@ -1,4 +1,4 @@ -export * from './errors/ASTError'; +export * from './errors/AstError'; export * from './nodes'; -export * from './symbol'; +export * as SymbolTable from './symbol'; export * from './types'; \ No newline at end of file diff --git a/packages/ast/src/nodes/AST.ts b/packages/ast/src/nodes/AST.ts index 422e9f5..3d84dad 100644 --- a/packages/ast/src/nodes/AST.ts +++ b/packages/ast/src/nodes/AST.ts @@ -1,7 +1,3 @@ -/** - * @module ast/nodes - */ - /** * Copyright 2018 Alexandru RADOVICI * @@ -18,9 +14,18 @@ * limitations under the License. */ -import { Node, NodeID } from "@easycompiler/util"; +import { INode, Node } from "@easycompiler/util"; + +export interface IAst extends INode { + +} -export abstract class AST extends Node +/** + * An AST Node +*/ +export abstract class Ast extends Node { - protected NODE_ID: NodeID = NodeID.AST; + public asInterface(): IAst { + return super.asInterface(); + } } \ No newline at end of file diff --git a/packages/ast/src/nodes/ArrayElement.ts b/packages/ast/src/nodes/ArrayElement.ts index bae7dc7..1e665e6 100644 --- a/packages/ast/src/nodes/ArrayElement.ts +++ b/packages/ast/src/nodes/ArrayElement.ts @@ -20,70 +20,104 @@ -import { Type } from '../types'; +import { Type, TypeID } from '../types'; import { Expression } from './Expression'; -import { NodeID, ParentNode } from '@easycompiler/util'; +import { ParentNode } from '@easycompiler/util'; import { Node } from "@easycompiler/util"; -import { ASTError } from '../errors'; - +import { AstError } from '../errors'; -export class ArrayElement extends Expression implements ParentNode +import type { NodeID } from '@easycompiler/util'; +import { IAst } from './Ast'; + +interface IArrayElement extends IAst{ + expression: Expression, + index: Expression +} +/** + * Ast Node corresponding to an array element + * + * @param _expression - The element of the array + * @param _index - The position in the array +*/ +export class ArrayElement extends Expression implements IArrayElement,ParentNode { - protected NODE_ID: NodeID = NodeID.ARRAY_ELEMENT; - - constructor (private _expression: Expression, public _index:Expression) + static ID: NodeID = "arrayElement"; + public nodeId: NodeID = ArrayElement.ID; + constructor (expression: Expression, index:Expression) { super (); - this._expression.parent = this; - this._index.parent = this; + this.expression=expression; + this.index=index; + this.expression.parent = this; + this.index.parent = this; } get expression ():Expression { - return this._expression; + return this.expression; } set expression (expression: Expression) { expression.parent = this; - const oldExpression = this._expression; - this._expression = expression; + const oldExpression = this.expression; + this.expression = expression; oldExpression.removeFromParent (); } get index ():Expression { - return this._index; + return this.index; } set index (index: Expression) { index.parent = this; - const oldIndex = this._index; - this._index = index; + const oldIndex = this.index; + this.index = index; oldIndex.removeFromParent (); } - - getType ():Type + /** + * Gets type of the array element + * + * @returns The type of the array element + */ + public getType ():Type { - return this.expression.type; + if(this.expression.type){ + return this.expression.type; + } + return new Type(TypeID.UNKNOWN); } + /** + * Removes Ast Node + * + * @param node - Ast Node to be removed + */ _removeChild (node: Node): void { if (node === this.expression) { - throw new ASTError ('You can not remove the expression from an ArrayElement'); + throw new AstError ('You can not remove the expression from an ArrayElement'); } } - toJSON ():string - { - const json = JSON.parse(super.toJSON()); - json.expression = this._expression.toJSON (); - json.index = this._index; - return JSON.stringify(json); + public asInterface(): IArrayElement{ + const json: IArrayElement = { + ...super.asInterface(), + expression: this.expression, + index: this.index, + }; + return json; + } + + public toJSON(): string { + return JSON.stringify(this.asInterface()); + } + public stringToJSON():JSON{ + return JSON.parse(this.toJSON()) } } \ No newline at end of file diff --git a/packages/ast/src/nodes/Block.ts b/packages/ast/src/nodes/Block.ts index b4899de..8767e21 100644 --- a/packages/ast/src/nodes/Block.ts +++ b/packages/ast/src/nodes/Block.ts @@ -1,7 +1,3 @@ -/** - * @module ast/nodes - */ - /** * Copyright 2018 Alexandru RADOVICI * @@ -22,22 +18,51 @@ import { Node, NodeID, ParentNode } from '@easycompiler/util'; import { i32, u32 } from '@easycompiler/util'; -import { AST } from './AST'; +import { IAst, Ast } from './Ast'; -export class Block extends AST implements ParentNode +interface IBlock extends IAst { + readonly children: IAst[]; + readonly name: string; +} + +/** + * Ast Node corresponding to a block of code + * + * @param name + * @param children - Ast Nodes that are contained + * +*/ +export class Block extends Ast implements IBlock,ParentNode { - protected readonly NODE_ID: NodeID = NodeID.BLOCK; + static ID: NodeID = "block"; + public nodeId: NodeID = Block.ID; - public readonly children: AST[] = []; + public readonly children: Ast[] = []; + public readonly name: string; + constructor(name: string){ + super(); + this.name=name; + } - addChild (node: AST): void + /** + * Adds child Ast node to the block + * + * @param node - Ast node to be added + */ + addChild (node: Ast): void { node.parent = this; this.children.push (node); // TODO should throw or just silently remove element from parent } - getChildPosition (node: AST): i32 + /** + * Gets position of child Ast node + * + * @param node - Ast Node to be verified + * @returns position of the Ast node if it exists, otherwise -1 + */ + getChildPosition (node: Ast): i32 { for (const pos in this.children) { @@ -45,11 +70,16 @@ export class Block extends AST implements ParentNode } return -1; } - + + /** + * Removes Ast Node + * + * @param node - Ast Node to be removed + */ _removeChild (node: Node | u32): void { let pos; - if (node instanceof AST) + if (node instanceof Ast) { pos = this.getChildPosition (node); } @@ -67,20 +97,34 @@ export class Block extends AST implements ParentNode this.children.splice (pos, 1); } } - + /** + * Checks if Ast Block is empty + * + * @returns true if the Ast Block is empty, otherwise false + */ isEmpty (): boolean { return this.children.length === 0; } - toJSON ():string - { - const json = JSON.parse(super.toJSON ()); - json.children = []; - for (const index in this.children) - { - json.children.push (this.children[index].toJSON()); + public asInterface(): IBlock { + let json_children=[]; + for(const child of this.children){ + json_children.push(child.asInterface()); } - return JSON.stringify(json); + const json: IBlock = { + ...super.asInterface(), + name: this.name, + children: json_children, + }; + // console.log(json); + return json; + } + + public toJSON(): string { + return JSON.stringify(this.asInterface()); + } + public stringToJSON():JSON{ + return JSON.parse(this.toJSON()) } } \ No newline at end of file diff --git a/packages/ast/src/nodes/Branch.ts b/packages/ast/src/nodes/Branch.ts index 11c46d2..206053e 100644 --- a/packages/ast/src/nodes/Branch.ts +++ b/packages/ast/src/nodes/Branch.ts @@ -1,7 +1,3 @@ -/** - * @module ast/nodes - */ - /** * Copyright 2018 Alexandru RADOVICI * @@ -23,85 +19,110 @@ import { NodeID, ParentNode } from '@easycompiler/util'; import { Block } from './Block'; import { Expression } from './Expression'; -import { ASTError } from '../errors'; -import { AST } from './AST'; +import { AstError } from '../errors'; +import { Ast, IAst } from './Ast'; - -export class Branch extends AST implements ParentNode +interface IBranch extends IAst{ + expression: Expression; + thenBlock: Block; + elseBlock: Block +} +/** + * Ast Node corresponding to a branch in the code + * @param _expression - expression that is verified in the branch + * @param _thenBlock - Ast block that contains the code to be executed after `_expression` is true + * @param _elseBlock - Ast block that contains the code to be executed after `_expression` is false +*/ +export class Branch extends Ast implements IBranch,ParentNode { - protected NODE_ID: NodeID = NodeID.BRANCH; - - constructor (private _expression:Expression, private _thenBlock: Block, private _elseBlock: Block) + static ID: NodeID = "branch"; + public nodeId: NodeID = Branch.ID; + + constructor (expression:Expression, thenBlock: Block, elseBlock: Block) { super (); - _expression.parent = this; - _thenBlock.parent = this; - _elseBlock.parent = this; + this.expression=expression; + this.thenBlock=thenBlock; + this.elseBlock=elseBlock; } get expression ():Expression { - return this._expression; + return this.expression; } set expression (newExpression: Expression) { newExpression.parent = this; - const oldExpression = this._expression; - this._expression = newExpression + const oldExpression = this.expression; + this.expression = newExpression oldExpression.removeFromParent (); } get thenBlock ():Block { - return this._thenBlock; + return this.thenBlock; } set thenBlock (newBlock: Block) { newBlock.parent = this; - const oldBlock = this._thenBlock; - this._thenBlock = newBlock; + const oldBlock = this.thenBlock; + this.thenBlock = newBlock; oldBlock.removeFromParent (); } get elseBlock ():Block { - return this._elseBlock; + return this.elseBlock; } set elseBlock (newBlock: Block) { newBlock.parent = this; - const oldBlock = this._elseBlock; - this._elseBlock = newBlock; + const oldBlock = this.elseBlock; + this.elseBlock = newBlock; oldBlock.removeFromParent (); } - _removeChild (node: AST): void + /** + * Removes Ast Node + * + * @param node - Ast Node to be removed + */ + _removeChild (node: Ast): void { - if (node === this._expression) + if (node === this.expression) { - throw new ASTError ('The expression cannot be removed from Branch node'); + throw new AstError ('The expression cannot be removed from Branch node'); } else - if (node === this._thenBlock) + if (node === this.thenBlock) { - throw new ASTError ('The then block cannot be removed from Branch node'); + throw new AstError ('The then block cannot be removed from Branch node'); } else - if (node === this._elseBlock) + if (node === this.elseBlock) { - throw new ASTError ('The else block cannot be removed from Branch node'); + throw new AstError ('The else block cannot be removed from Branch node'); } } - toJSON ():string - { - const json = JSON.parse(super.toJSON ()); - json.expression = this._expression.toJSON (); - json.thenBlock = this._thenBlock.toJSON (); - json.elseBlock = this._elseBlock.toJSON (); - return JSON.stringify(json); + public asInterface(): IBranch{ + const json: IBranch = { + ...super.asInterface(), + expression: this.expression, + thenBlock: this.thenBlock, + elseBlock: this.elseBlock, + }; + return json; + } + + public toJSON(): string { + + return JSON.stringify(this.asInterface()); + } + public stringToJSON():JSON{ + return JSON.parse(this.toJSON()) } } \ No newline at end of file diff --git a/packages/ast/src/nodes/Constant.ts b/packages/ast/src/nodes/Constant.ts index 87debf9..813e8b3 100644 --- a/packages/ast/src/nodes/Constant.ts +++ b/packages/ast/src/nodes/Constant.ts @@ -1,7 +1,3 @@ -/** - * @module ast/nodes - */ - /** * Copyright 2018 Alexandru RADOVICI * @@ -23,22 +19,47 @@ import { Type } from '../types'; import { Identifier } from './Identifier'; import { NodeID } from '@easycompiler/util'; +import { Value } from './Value'; +import { IAst } from './Ast'; +export interface IConstant extends IAst{ + name: string; + type: Type; + value: Value; +} -export class Constant extends Identifier +/** + * Ast Node corresponding to a constant + * @param name + * @param type + * @param value +*/ +export class Constant extends Identifier implements IConstant { - protected NODE_ID: NodeID = NodeID.CONSTANT; - - constructor (name: string, type: Type, public value: number | string) + static ID: NodeID = "constant"; + public nodeId: NodeID = Constant.ID; + public value: Value; + constructor (name: string, type: Type, value: Value) { super (name, type); + this.value=value; } - toJSON ():string - { - const json = JSON.parse(super.toJSON ()); - json.value = this.value; - return JSON.stringify(json); + public asInterface(): IConstant{ + const json: IConstant = { + ...super.asInterface(), + name: this.name, + type: this.type, + value: this.value, + + }; + return json; + } + public toJSON(): string { + return JSON.stringify(this.asInterface()); + } + public stringToJSON():JSON{ + return JSON.parse(this.toJSON()) } } diff --git a/packages/ast/src/nodes/Definition.ts b/packages/ast/src/nodes/Definition.ts index 6b91e16..501601c 100644 --- a/packages/ast/src/nodes/Definition.ts +++ b/packages/ast/src/nodes/Definition.ts @@ -1,7 +1,3 @@ -/** - * @module ast/nodes - */ - /** * Copyright 2018 Alexandru RADOVICI * @@ -18,10 +14,32 @@ * limitations under the License. */ -import { NodeID } from '@easycompiler/util'; -import { AST } from './AST'; +import { INode, NodeID } from '@easycompiler/util'; +import { Ast, IAst } from './Ast'; + -export abstract class Definition extends AST + +/** + * Ast Node corresponding to a definition +*/ +export abstract class Definition extends Ast { - protected NODE_ID: NodeID = NodeID.DEFINITION; + static ID: NodeID = "definition"; + public nodeId: NodeID = Definition.ID; + + constructor () + { + super (); + } + + public asInterface():IAst{ + const json: IAst = { + ...super.asInterface() + }; + return json; + } + public toJSON(): string { + return JSON.stringify(this.asInterface()); + } + } \ No newline at end of file diff --git a/packages/ast/src/nodes/Expression.ts b/packages/ast/src/nodes/Expression.ts index 31576a7..13ac244 100644 --- a/packages/ast/src/nodes/Expression.ts +++ b/packages/ast/src/nodes/Expression.ts @@ -1,7 +1,3 @@ -/** - * @module ast/nodes - */ - /** * Copyright 2018 Alexandru RADOVICI * @@ -18,24 +14,53 @@ * limitations under the License. */ -import { NodeID } from '@easycompiler/util'; -import { Type, Unknown } from '../types'; -import { AST } from './AST'; + +import type { NodeID } from '@easycompiler/util'; +import { Type } from '../types'; +import { Ast, IAst } from './Ast'; +import { Value } from './Value'; +interface IExpression extends IAst{ + readonly value?: Value; + readonly type?: Type; +} -export abstract class Expression extends AST +/** + * Ast Node corresponding to an expression + * + * @param value + * @param type +*/ +export abstract class Expression extends Ast implements IExpression { - protected NODE_ID: NodeID = NodeID.EXPRESSION; - constructor (public readonly type: Type = new Unknown()) + protected NODE_ID: NodeID = "expression"; + public value?:Value; + public readonly type?: Type; + constructor (value?: Value, type? :Type) { - super (); + super(); + if(value){ + this.value=value; + } + if(type){ + this.type=type; + } } - toJSON ():string - { - const json = JSON.parse(super.toJSON()); - json.type = this.type.toJSON (); - return JSON.stringify(json); + public asInterface():IExpression{ + const json: IExpression = { + ...super.asInterface(), + value: this.value, + type: this.type, + }; + return json; + } + + public toJSON(): string { + return JSON.stringify(this.asInterface()); + } + public stringToJSON():JSON{ + return JSON.parse(this.toJSON()) } } \ No newline at end of file diff --git a/packages/ast/src/nodes/FunctionCall.ts b/packages/ast/src/nodes/FunctionCall.ts index aa830ec..feae79d 100644 --- a/packages/ast/src/nodes/FunctionCall.ts +++ b/packages/ast/src/nodes/FunctionCall.ts @@ -1,7 +1,3 @@ -/** - * @module ast/nodes - */ - /** * Copyright 2018 Alexandru RADOVICI * @@ -23,47 +19,48 @@ import { Node } from "@easycompiler/util"; import { Expression } from './Expression'; import { u32 } from '@easycompiler/util'; import { i32 } from '@easycompiler/util'; -import { ASTError } from '../errors'; +import { AstError } from '../errors'; +import { Identifier } from './Identifier'; +import { Ast, IAst } from './Ast'; +import { ParameterList } from './ParameterList'; +export interface IFunctionCall extends IAst{ + fn: Identifier; + args?: IAst; +} -export class FunctionCall extends Expression implements ParentNode -{ - protected NODE_ID: NodeID = NodeID.FUNCTION_CALL; - - constructor (private _fn: Expression, public readonly args:Expression[]) +/** + * Ast Node corresponding to a function call + * + * @param _fn - name of the function + * @param type - type of return + * @param args - array of arguments +*/ +export class FunctionCall extends Expression implements ParentNode, IFunctionCall +{ + static ID: NodeID = "functionCall"; + public nodeId: NodeID = FunctionCall.ID; + public fn: Identifier; + public args?: ParameterList; + constructor (fn: Identifier, args?: ParameterList) { super (); - _fn.parent = this; - for (const expression of args) - { - expression.parent = this; + this.fn=fn; + if(args){ + this.args=args; } } - get fn (): Expression - { - return this._fn; - } - - - set fn (newFn: Expression) - { - newFn.parent = this; - const oldFn = this._fn; - this._fn = newFn; - oldFn.removeFromParent (); - } - - getType () - { - return this._fn.type; - } - - _removeChild (expression: Node | u32): void + /** + * Removes Ast Node + * + * @param node - Ast Node to be removed + */ + _removeChild (expression: Node | string | u32): void { - if (expression === this._fn) + if (expression === this.fn) { - throw new ASTError ('You can not remove the function expression from the function call'); + throw new AstError ('You can not remove the function expression from the function call'); } else { @@ -72,41 +69,68 @@ export class FunctionCall extends Expression implements ParentNode { pos = this.getArgPosition (expression); } - else - if (expression instanceof Node) - { - // this is not a child here - pos = -1; - } - else + else { - pos = expression; + if (expression instanceof Node) + { + // this is not a child here + pos = -1; + } + else + { + pos = expression; + } } if (pos >= 0) { - this.args.splice (pos, 1); + if(this.args) { + if(this.args.parameters){ + this.args.parameters.splice (pos as u32, 1); + } + } } } } - getArgPosition (expression: Expression): i32 + /** + * Gets the position of the given argument + * + * @param arg - Argument to be verified + * @returns the position of the argument + */ + getArgPosition (arg: Expression): i32 { - for (const pos in this.args) - { - if (this.args[pos] === expression) return parseInt (pos); - } + if(this.args instanceof ParameterList) + if(this.args.parameters) + for (const pos in this.args.parameters) + { + if (this.args.parameters[pos] === arg) return parseInt (pos); + } return -1; } - toJSON ():string - { - const json = JSON.parse(super.toJSON ()); - json.fn = this._fn.toJSON (); - json.args = []; - for (const index in this.args) - { - json.args.push (this.args[index].toJSON ()); - } - return JSON.stringify(json); + public asInterface():IFunctionCall{ + // let json_args=[]; + // if(this.args instanceof ParameterList) + // if(this.args.parameters){ + // for (const index in this.args.parameters) + // { + // json_args.push (this.args.parameters[index].asInterface()); + // } + // } + const json: IFunctionCall = { + ...super.asInterface(), + fn: this.fn, + args: this.args, + + }; + return json; + } + + public toJSON(): string { + return JSON.stringify(this.asInterface()); + } + public stringToJSON():JSON{ + return JSON.parse(this.toJSON()) } } \ No newline at end of file diff --git a/packages/ast/src/nodes/FunctionDefinition.ts b/packages/ast/src/nodes/FunctionDefinition.ts index 53e2d59..ad2c33e 100644 --- a/packages/ast/src/nodes/FunctionDefinition.ts +++ b/packages/ast/src/nodes/FunctionDefinition.ts @@ -1,7 +1,3 @@ -/** - * @module ast/nodes - */ - /** * Copyright 2018 Alexandru RADOVICI * @@ -26,46 +22,64 @@ import { Block } from './Block'; import { Definition } from './Definition'; import { VariableDefinition } from './VariableDefinition'; import { u32 } from '@easycompiler/util'; -import { ASTError } from '../errors'; +import { AstError } from '../errors'; +import { IAst } from './Ast'; +import { IFunctionCall } from './FunctionCall'; +interface IFunctionDefinition extends IAst{ + name: string, + block: Block, + returnType: Type, + parameters?: IAst[], +} -export class FunctionDefinition extends Definition implements ParentNode +/** + * Ast Node corresponding to a function definition + * + * @param name - Name of the function + * @param _parameters - Parameters deckaration + * @param _block - Block of code contained in the function + * @param returnType - Type of function return +*/ +export class FunctionDefinition extends Definition implements ParentNode, IFunctionDefinition { - protected NODE_ID: NodeID = NodeID.FUNCTION_DEFINITION; + static ID: NodeID = "functionDefinition"; + public nodeId: NodeID = FunctionDefinition.ID; + public name: string; + public returnType: Type; + public parameters?:VariableDefinition[]; - constructor (public name: string, private _parameters:VariableDefinition[], private _block:Block, public returnType: Type) + constructor (name: string, block: Block, returnType: Type, parameters?: VariableDefinition[]) { super (); - for (const parameter of _parameters) - { - parameter.parent = this; + this.name=name; + this.block=block; + this.returnType=returnType; + if(parameters){ + this.parameters=parameters; } - _block.parent = this; - } - - get parameters (): VariableDefinition[] - { - return this._parameters; } get block (): Block { - return this._block; + return this.block; } set block (newBlock: Block) { - newBlock.parent = this; - const oldBlock = this._block; - this._block = newBlock; - oldBlock.removeFromParent (); + this.block = newBlock; } + /** + * Removes Ast Node + * + * @param node - Ast Node to be removed + */ _removeChild (variableDefinition: Node | u32): void { - if (variableDefinition === this._block) + if (variableDefinition === this.block) { - throw new ASTError ('You can not remove the block from the function definition'); + throw new AstError ('You can not remove the block from the function definition'); } else { @@ -77,7 +91,6 @@ export class FunctionDefinition extends Definition implements ParentNode else if (variableDefinition instanceof Node) { - // this is not a child here pos = -1; } else @@ -86,31 +99,55 @@ export class FunctionDefinition extends Definition implements ParentNode } if (pos >= 0) { - this._parameters.splice (pos, 1); + if(this.parameters){ + this.parameters.splice (pos, 1); + } } } } - getParameterPosition (variableDefinition: VariableDefinition): i32 + /** + * Gets the position of the given parameter + * + * @param arg - Parameter to be verified + * @returns the position of the parameter + */ + public getParameterPosition (param: VariableDefinition): i32 { - for (const pos in this._parameters) - { - if (this._parameters[pos] === variableDefinition) return parseInt (pos); - } + if(this.parameters){ + for (const pos in this.parameters) + { + if (this.parameters[pos] === param) + return parseInt (pos); + } + } return -1; } - toJSON ():string - { - const json = JSON.parse(super.toJSON ()); - json.name = this.name; - json.parameters = []; - for (const index in this._parameters) - { - json.parameters.push (this._parameters[index].toJSON()); + public asInterface():IFunctionDefinition{ + let json_parameters=[]; + if(this.parameters){ + for (const index in this.parameters) + { + json_parameters.push (this.parameters[index].asInterface()); + } } - json.block = this._block.toJSON (); - json.returnType = this.returnType.toJSON (); - return JSON.stringify(json); + const json: IFunctionDefinition = { + ...super.asInterface(), + name: this.name, + block: this.block, + returnType: this.returnType, + parameters: json_parameters, + + }; + return json; + } + + public toJSON(): string { + + return JSON.stringify(this.asInterface()); + } + public stringToJSON():JSON{ + return JSON.parse(this.toJSON()) } } \ No newline at end of file diff --git a/packages/ast/src/nodes/Identifier.ts b/packages/ast/src/nodes/Identifier.ts index 6ada44b..da2dd2b 100644 --- a/packages/ast/src/nodes/Identifier.ts +++ b/packages/ast/src/nodes/Identifier.ts @@ -1,7 +1,3 @@ -/** - * @module ast/nodes - */ - /** * Copyright 2018 Alexandru RADOVICI * @@ -20,23 +16,46 @@ import { NodeID } from '@easycompiler/util'; import { Type, Unknown } from '../types'; +import { IAst } from './Ast'; import { Expression } from './Expression'; +export interface IIdentifier extends IAst{ + name: string; + type: Type; +} +/** + * Ast Node corresponding to an indentifier + * + * @param name + * @param type +*/ export class Identifier extends Expression { - protected NODE_ID: NodeID = NodeID.IDENTIFIER; - - constructor (public name: string, public type: Type = new Unknown()) + static ID: NodeID = "identifier"; + public nodeId: NodeID = Identifier.ID; + public name: string; + public type: Type = new Unknown(); + constructor (name: string, type: Type) { super (); + this.name=name; + this.type=type; } - toJSON ():string - { - const json = JSON.parse(super.toJSON ()); - json.name = this.name; - json.type = this.type.toJSON (); - return JSON.stringify(json); + public asInterface():IIdentifier{ + const json: IIdentifier = { + ...super.asInterface(), + name: this.name, + type: this.type, + }; + return json; + } + public toJSON(): string { + + return JSON.stringify(this.asInterface()); + } + public stringToJSON():JSON{ + return JSON.parse(this.toJSON()) } } \ No newline at end of file diff --git a/packages/ast/src/nodes/Jump.ts b/packages/ast/src/nodes/Jump.ts index a00ddb5..f3db6e8 100644 --- a/packages/ast/src/nodes/Jump.ts +++ b/packages/ast/src/nodes/Jump.ts @@ -1,7 +1,3 @@ -/** - * @module ast/nodes - */ - /** * Copyright 2018 Alexandru RADOVICI * @@ -18,9 +14,10 @@ * limitations under the License. */ - + + import { NodeID } from '../nodes'; -import { AST } from './AST'; +import { Ast, IAst } from './Ast'; export enum JumpType { BREAK = 'break', @@ -28,20 +25,42 @@ export enum JumpType { JUMP_TO_LABEL = 'label' } -export abstract class Jump extends AST -{ - protected NODE_ID: NodeID = NodeID.JUMP; +interface IJump extends IAst{ + jumpType: JumpType|string; + name?:string; +} - constructor (public jumpType: JumpType | string, public name?: string) +/** + * Ast Node corresponding to a jump in code + * + * @param jumpType - Type of jump in the code + * @param name +*/ +export abstract class Jump extends Ast implements IJump +{ + static ID: NodeID = "jump"; + public nodeId: NodeID = Jump.ID; + public jumpType: JumpType | string; + public name?: string; + constructor (jumpType: JumpType|string, name?: string) { super (); + this.jumpType=jumpType; + if(name){ + this.name=name; + } } - toJSON ():string - { - const json = JSON.parse(super.toJSON ()); - json.name = this.name; - json.jumpType = this.jumpType; - return JSON.stringify(json); + public asInterface():IJump{ + const json: IJump = { + ...this.asInterface(), + name: this.name, + jumpType: this.jumpType as string, + }; + return json; } + + public toJSON(): string { + return JSON.stringify(this.asInterface()); + } } \ No newline at end of file diff --git a/packages/ast/src/nodes/Label.ts b/packages/ast/src/nodes/Label.ts index 4fdb121..88ab4b4 100644 --- a/packages/ast/src/nodes/Label.ts +++ b/packages/ast/src/nodes/Label.ts @@ -20,21 +20,41 @@ import { NodeID } from '@easycompiler/util'; -import { AST } from './AST'; +import { IAst, Ast } from './Ast'; -export class Label extends AST -{ - protected NODE_ID: NodeID = NodeID.LABEL; +interface iLabel extends IAst{ + name: string +} - constructor (public name: string) +/** + * Ast Node corresponding to a label + * + * @param name +*/ +export class Label extends Ast implements iLabel +{ + static ID: NodeID = "label"; + public nodeId: NodeID = Label.ID; + public name:string; + constructor (name: string) { super (); + this.name=name; } - toJSON ():string - { - const json = JSON.parse(super.toJSON ()); - json.name = this.name; - return JSON.stringify(json); + public asInterface(): iLabel { + const json: iLabel = { + ...super.asInterface(), + name: this.name, + }; + // console.log(json); + return json; + } + + public toJSON(): string { + return JSON.stringify(this.asInterface()); + } + public stringToJSON():JSON{ + return JSON.parse(this.toJSON()) } } \ No newline at end of file diff --git a/packages/ast/src/nodes/Loop.ts b/packages/ast/src/nodes/Loop.ts index 2da2f06..a8154ad 100644 --- a/packages/ast/src/nodes/Loop.ts +++ b/packages/ast/src/nodes/Loop.ts @@ -20,83 +20,101 @@ import { ParentNode, NodeID } from '@easycompiler/util'; import { Block } from './Block'; -import { ASTError } from '../errors'; -import { AST } from './AST'; - +import { AstError } from '../errors'; +import { Ast, IAst } from './Ast'; -export class Loop extends AST implements ParentNode -{ - protected NODE_ID: NodeID = NodeID.LOOP; +interface ILoop extends IAst{ + header: Block, + body: Block, + end: Block, +} - constructor (private _header:Block, private _body: Block, private _end: Block) +/** + * Ast Node corresponding to a loop + * + * @param _header - The definition of the loop + * @param _body - Block of code contained in the loop + * @param _end - The end of the loop +*/ +export class Loop extends Ast implements ILoop,ParentNode +{ + static ID: NodeID = "loop"; + public nodeId: NodeID = Loop.ID; + constructor (header:Block, body: Block, end: Block) { super (); - _header.parent = this; + this.header=header; + this.body=body; + this.end=end; } get header (): Block { - return this._header; + return this.header; } set header (newHeader: Block) { - newHeader.parent = this; - const oldBlock = this._header; - this._header = newHeader; - oldBlock.removeFromParent (); + this.header = newHeader; } get body (): Block { - return this._body; + return this.body; } set body (newBody: Block) { - newBody.parent = this; - const oldBody = this._body; - this._body = newBody; - oldBody.removeFromParent (); + this.body = newBody; } get end (): Block { - return this._end; + return this.end; } set end (newEnd: Block) { - newEnd.parent = this; - const oldEnd = this._end; - this._end = newEnd; - oldEnd.removeFromParent (); + this.end = newEnd; } - _removeChild (expression: AST): void + /** + * Removes Ast Node + * + * @param node - Ast Node to be removed + */ + _removeChild (node: Ast): void { - if (expression === this._header) + if (node === this.header) { - throw new ASTError ('You can not remove the header block from the loop definition'); + throw new AstError ('You can not remove the header block from the loop definition'); } else - if (expression === this._body) + if (node === this.body) { - throw new ASTError ('You can not remove the body block from the loop definition'); + throw new AstError ('You can not remove the body block from the loop definition'); } else - if (expression === this._end) + if (node === this.end) { - throw new ASTError ('You can not remove the end block from the loop definition'); + throw new AstError ('You can not remove the end block from the loop definition'); } } - toJSON ():string - { - const json = JSON.parse(super.toJSON ()); - json.header = this._header.toJSON (); - json.body = this._body.toJSON (); - json.end = this._end.toJSON (); - return JSON.stringify(json); + public asInterface():ILoop{ + const json: ILoop = { + ...super.asInterface(), + header: this.header, + body: this.body, + end:this.end, + }; + return json; + } + + public toJSON(): string { + return JSON.stringify(this.asInterface()); + } + public stringToJSON():JSON{ + return JSON.parse(this.toJSON()) } } \ No newline at end of file diff --git a/packages/ast/src/nodes/Module.ts b/packages/ast/src/nodes/Module.ts index f9bd5bf..00c0ad0 100644 --- a/packages/ast/src/nodes/Module.ts +++ b/packages/ast/src/nodes/Module.ts @@ -20,46 +20,71 @@ import { NodeID, ParentNode } from '@easycompiler/util'; import { Block } from './Block'; -import { ASTError } from '../errors'; -import { AST } from './AST'; +import { AstError } from '../errors'; +import { Ast, IAst } from './Ast'; +interface IModule extends IAst{ + name: string, + block: Block, +} -export class Module extends AST implements ParentNode +/** + * Ast Node corresponding to a module + * + * @param name - Ast Nodes that are contained + * @param _block - Block of code contained in the module +*/ +export class Module extends Ast implements IModule,ParentNode { - protected NODE_ID: NodeID = NodeID.MODULE; - - constructor (public name: string, private _block: Block) + static ID: NodeID = "module"; + public nodeId: NodeID = Module.ID; + public name: string; + constructor (name: string, block: Block) { super (); - _block.parent = this; + this.name=name; + this.block=block; } get block (): Block { - return this._block; + return this.block; } set block (newBlock: Block) { newBlock.parent = this; - this._block = newBlock; + this.block = newBlock; newBlock.removeFromParent (); } - _removeChild (expression: AST): void + /** + * Removes Ast Node + * + * @param node - Ast Node to be removed + */ + _removeChild (node: Ast): void { - if (expression === this._block) + if (node === this.block) { - throw new ASTError ('You can not remove the block from the Module node'); + throw new AstError ('You can not remove the block from the Module node'); } } - toJSON ():string - { - const json = JSON.parse(super.toJSON ()); - json.id = this.NODE_ID; - json.name = this.name; - json.block = this._block.toJSON (); - return JSON.stringify(json); + public asInterface():IModule{ + const json: IModule = { + ...super.asInterface(), + name: this.name, + block: this.block, + }; + return json; + } + + public toJSON(): string { + + return JSON.stringify(this.asInterface()); + } + public stringToJSON():JSON{ + return JSON.parse(this.toJSON()) } } \ No newline at end of file diff --git a/packages/ast/src/nodes/ParameterList.ts b/packages/ast/src/nodes/ParameterList.ts new file mode 100644 index 0000000..6d52107 --- /dev/null +++ b/packages/ast/src/nodes/ParameterList.ts @@ -0,0 +1,68 @@ +/** + * Copyright 2018 Alexandru RADOVICI + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + + import type { NodeID } from '@easycompiler/util'; + import { Type } from '../types'; + import { Ast, IAst } from './Ast'; +import { Expression } from './Expression'; + import { Value } from './Value'; + + interface IParameterList extends IAst{ + parameters?:IAst[]; + } + + /** + * Ast Node corresponding to an expression + * + * @param value + * @param type + */ + export class ParameterList extends Ast implements IParameterList + { + + static ID: NodeID = "parameterList"; + public nodeId: NodeID = ParameterList.ID; + public parameters?:Expression[]; + constructor (parameters?: Expression[]) + { + super(); + if([parameters]){ + this.parameters=parameters; + } + } + + public asInterface():IParameterList{ + let json_parameters=[]; + if(this.parameters){ + for(let parameter of this.parameters){ + json_parameters.push(parameter.asInterface()); + } + } + const json: IParameterList = { + ...super.asInterface(), + parameters:json_parameters, + }; + return json; + } + + public toJSON(): string { + return JSON.stringify(this.asInterface()); + } + public stringToJSON():JSON{ + return JSON.parse(this.toJSON()) + } + } \ No newline at end of file diff --git a/packages/ast/src/nodes/Return.ts b/packages/ast/src/nodes/Return.ts index 3192de4..80da721 100644 --- a/packages/ast/src/nodes/Return.ts +++ b/packages/ast/src/nodes/Return.ts @@ -21,32 +21,40 @@ import { ParentNode, NodeID } from '@easycompiler/util'; import { Expression } from './Expression'; import { Type } from '../types'; -import { AST } from './AST'; +import { Ast, IAst } from './Ast'; +export interface IReturn extends IAst{ + expression?: Expression +} -export class Return extends AST implements ParentNode +/** + * Ast Node corresponding to return code + * + * @param _expression - The expression that is to be returned +*/ +export class Return extends Ast implements IReturn,ParentNode { - protected NODE_ID: NodeID = NodeID.RETURN; - - constructor (private _expression: Expression | undefined, public type: Type) + static ID: NodeID = "return"; + public nodeId: NodeID = Return.ID; + constructor (expression?: Expression | undefined) { super (); - if (_expression) + if (expression) { - _expression.parent = this; + this.expression=expression; } } get expression ():Expression | undefined { - return this._expression; + return this.expression; } set expression (expression: Expression | undefined) { - if (this._expression) + if (this.expression) { - this._expression.removeFromParent (); + this.expression.removeFromParent (); } if (expression) { @@ -54,7 +62,12 @@ export class Return extends AST implements ParentNode } } - _removeChild (node: AST): void + /** + * Removes Ast Node + * + * @param node - Ast Node to be removed + */ + _removeChild (node: Ast): void { if (node === this.expression) { @@ -62,11 +75,22 @@ export class Return extends AST implements ParentNode } } - toJSON ():string - { - const json = JSON.parse(super.toJSON ()); - if (this.expression) json.expression = this.expression.toJSON (); - json.type = this.type.toJSON (); - return JSON.stringify(json); + public asInterface():IReturn{ + let e; + if(this.expression){ + e=this.expression + } + const json: IReturn = { + ...super.asInterface(), + expression: e, + }; + return json; + } + + public toJSON(): string { + return JSON.stringify(this.asInterface()); + } + public stringToJSON():JSON{ + return JSON.parse(this.toJSON()) } } \ No newline at end of file diff --git a/packages/ast/src/nodes/StructElement.ts b/packages/ast/src/nodes/StructElement.ts index 801f490..a017665 100644 --- a/packages/ast/src/nodes/StructElement.ts +++ b/packages/ast/src/nodes/StructElement.ts @@ -22,56 +22,88 @@ import { Type, Struct } from '../types'; import { Expression } from './Expression'; import { Unknown } from '../types'; import { ParentNode, NodeID } from '@easycompiler/util'; -import { ASTError } from '../errors'; -import { AST } from './AST'; +import { AstError } from '../errors'; +import { Ast, IAst } from './Ast'; +import { VariableDefinition } from './VariableDefinition'; +export interface IStructElement extends IAst{ + name: string, + struct: VariableDefinition, +} -export class StructElement extends Expression implements ParentNode +/** + * Ast Node corresponding to a struct element + * + * @param _struct - The definition of the struct element + * @param name - The name of the struct element +*/ +export class StructElement extends Expression implements IStructElement,ParentNode { - protected NODE_ID: NodeID = NodeID.STRUCT_ELEMENT; - - constructor (private _struct: Expression, public name:string) + static ID: NodeID = "structElement"; + public nodeId: NodeID = StructElement.ID; + public name:string; + constructor (name:string, struct: VariableDefinition, ) { super (); - _struct.parent = this; + this.name=name; + this.struct=struct; } - get struct ():Expression + get struct ():VariableDefinition { - return this._struct; + return this.struct; } - set struct (newStruct: Expression) + set struct (newStruct: VariableDefinition) { - newStruct.parent = this; - const oldStruct = this._struct; - this._struct = newStruct; - oldStruct.removeFromParent (); + this.struct = newStruct; } + /** + * Gets type of the struct element + * + * @returns - The type of the struct element + */ getType ():Type { - if (this._struct.type instanceof Struct) + if (this.struct.type instanceof Struct) { - const element = this._struct.type.getElement (this.name); - if (element) return element.type; + const element = this.struct.type.getElement (this.name); + if (element){ + if(element.type){ + return element.type; + } + } } return new Unknown(); } - _removeChild (expression: AST): void + /** + * Removes Ast Node + * + * @param node - Ast Node to be removed + */ + _removeChild (node: Ast): void { - if (expression === this._struct) + if (node === this.struct) { - throw new ASTError ('You can not remove the struct from the StructElement node'); + throw new AstError ('You can not remove the struct from the StructElement node'); } } - toJSON ():string - { - const json = JSON.parse(super.toJSON ()); - json.struct = this._struct.toJSON (); - json.name = this.name; - return JSON.stringify(json); + public asInterface(){ + const json: IStructElement = { + ...super.asInterface(), + name: this.name, + struct: this.struct, + }; + return json; + } + + public toJSON(): string { + return JSON.stringify(this.asInterface()); + } + public stringToJSON():JSON{ + return JSON.parse(this.toJSON()) } } \ No newline at end of file diff --git a/packages/ast/src/nodes/TypeCast.ts b/packages/ast/src/nodes/TypeCast.ts index dde25db..f6efb02 100644 --- a/packages/ast/src/nodes/TypeCast.ts +++ b/packages/ast/src/nodes/TypeCast.ts @@ -21,44 +21,67 @@ import { Expression } from "../nodes/Expression"; import { Type } from "../types"; import { ParentNode, NodeID } from '@easycompiler/util'; -import { ASTError } from '../errors'; -import { AST } from "./AST"; +import { AstError } from '../errors'; +import { IAst, Ast } from "./Ast"; -export class TypeCase extends Expression implements ParentNode -{ - protected NODE_ID: NodeID = NodeID.TYPE_CAST; +interface iTypeCast{ + target: IAst, + type: Type, +} - constructor (private _target: AST, public type: Type) +/** + * Ast Node corresponding to a type cast in code + * + * @param _target - The variable that will have the new type + * @param type - The new type +*/ +export class TypeCast extends Expression implements iTypeCast, ParentNode +{ + static ID: NodeID = "typeCast"; + public nodeId: NodeID = TypeCast.ID; + public type: Type; + constructor (target: Ast, type: Type) { super (); - _target.parent = this; + this.target=target; + this.type=type; } - get target (): AST + get target (): Ast { - return this._target; + return this.target; } - set target (newTarget: AST) + set target (newTarget: Ast) { newTarget.parent = this; - const oldTarget = this._target; - this._target = newTarget; + const oldTarget = this.target; + this.target = newTarget; oldTarget.removeFromParent (); } - _removeChild (expression: AST): void + /** + * Removes Ast Node + * + * @param node - Ast Node to be removed + */ + _removeChild (node: Ast): void { - if (expression === this._target) + if (node === this.target) { - throw new ASTError ('You can not remove the target from the TypeCast node'); + throw new AstError ('You can not remove the target from the TypeCast node'); } } - toJSON ():string - { - const json = JSON.parse(super.toJSON ()); - json.target = this._target.toJSON (); - return JSON.stringify(json); + public toJSON(): string { + const json: iTypeCast = { + target: this.target.asInterface(), + type: this.type, + ...super.asInterface() + }; + return JSON.stringify(json); + } + public stringToJSON():JSON{ + return JSON.parse(this.toJSON()) } } \ No newline at end of file diff --git a/packages/ast/src/nodes/TypeDefinition.ts b/packages/ast/src/nodes/TypeDefinition.ts index 416390a..69fb6cd 100644 --- a/packages/ast/src/nodes/TypeDefinition.ts +++ b/packages/ast/src/nodes/TypeDefinition.ts @@ -21,20 +21,41 @@ import { Definition } from "./Definition"; import { Type } from "../types"; import { NodeID } from '@easycompiler/util'; -export class TypeDefinition extends Definition -{ - protected readonly NODE_ID: NodeID = NodeID.TYPE_DEFINITION; +import { IAst } from "./Ast"; + +export interface ITypeDefinition extends IAst{ + name: string, + type: Type, +} - constructor (public name: string, public type: Type) +/** + * Ast Node corresponding to a type definition in code + * + * @param name - The name of the type + * @param type - The type of the new type +*/ +export class TypeDefinition extends Definition implements ITypeDefinition +{ + static ID: NodeID = "typeDefinition"; + public nodeId: NodeID = TypeDefinition.ID; + public name: string; + public type: Type; + constructor (name: string, type: Type) { super (); + this.name=name; + this.type=type; } - toJSON ():string - { - const json = JSON.parse(super.toJSON ()); - json.name = this.name; - json.type = this.type.toJSON (); - return JSON.stringify(json); + public toJSON(): string { + const json: ITypeDefinition = { + ...this.asInterface(), + name: this.name, + type: this.type, + }; + return JSON.stringify(json); + } + public stringToJSON():JSON{ + return JSON.parse(this.toJSON()) } } \ No newline at end of file diff --git a/packages/ast/src/nodes/Value.ts b/packages/ast/src/nodes/Value.ts new file mode 100644 index 0000000..e1650b1 --- /dev/null +++ b/packages/ast/src/nodes/Value.ts @@ -0,0 +1,62 @@ +/** + * Copyright 2018 Alexandru RADOVICI + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { IType, Type } from '../types'; +import { INode, NodeID } from '@easycompiler/util'; +import { Ast } from "./Ast"; + +/** + * Ast Node corresponding to a value in code + * + * @param value - The value + * @param type - The type of the value +*/ +interface IValue extends INode { + readonly value: string | number | boolean; + readonly type: Type | undefined; +} + +export class Value extends Ast implements IValue { + static ID: NodeID = "value"; + public nodeId: NodeID = Value.ID; + public readonly value: string | number | boolean; + public readonly type: Type | undefined; + constructor(value: string | number | boolean, type?: Type) { + super(); + this.value = value; + this.type = type; + } + + public asInterface():IValue{ + let t; + if(this.type){ + t=this.type + } + const json: IValue = { + ...super.asInterface(), + value: this.value, + type: t, + }; + return json; + } + + public toJSON(): string { + return JSON.stringify(this.asInterface()); + } + public stringToJSON():JSON{ + return JSON.parse(this.toJSON()) + } +} \ No newline at end of file diff --git a/packages/ast/src/nodes/VariableDefinition.ts b/packages/ast/src/nodes/VariableDefinition.ts index 2e728dd..fe1659f 100644 --- a/packages/ast/src/nodes/VariableDefinition.ts +++ b/packages/ast/src/nodes/VariableDefinition.ts @@ -21,20 +21,45 @@ import { Definition } from "./Definition"; import { Type } from '../types'; import { NodeID } from '@easycompiler/util'; -export class VariableDefinition extends Definition -{ - protected NODE_ID: NodeID = NodeID.VARIABLE_DEFINITION; +import { IAst } from "./Ast"; + +interface IVariableDefinition extends IAst{ + name: string, + type: Type, +} - constructor (public name: string, public type: Type) +/** + * Ast Node corresponding to a variable definition in code + * + * @param name - The name of the variable + * @param type - The type of the variable +*/ +export class VariableDefinition extends Definition implements IVariableDefinition +{ + static ID: NodeID = "variableDefinition"; + public nodeId: NodeID = VariableDefinition.ID; + public name: string; + public type: Type; + constructor (name: string, type: Type) { super (); + this.name=name; + this.type=type; } - toJSON ():string - { - const json= JSON.parse(super.toJSON ()); - json.name = this.name; - json.type = this.type.toJSON (); - return JSON.stringify(json); + public asInterface():IVariableDefinition{ + const json: IVariableDefinition = { + ...super.asInterface(), + name: this.name, + type: this.type, + }; + return json; + } + + public toJSON(): string { + return JSON.stringify(this.asInterface()); + } + public stringToJSON():JSON{ + return JSON.parse(this.toJSON()) } } \ No newline at end of file diff --git a/packages/ast/src/nodes/expressions/BinaryExpression.ts b/packages/ast/src/nodes/expressions/BinaryExpression.ts index 57c4657..58680f3 100644 --- a/packages/ast/src/nodes/expressions/BinaryExpression.ts +++ b/packages/ast/src/nodes/expressions/BinaryExpression.ts @@ -22,7 +22,13 @@ import { Node, ParentNode, NodeID } from '..'; import { Expression } from '..'; -import { ASTError } from '../../errors'; +import { AstError } from '../../errors'; + +export interface iBinaryExpression{ + left: Expression, + right: Expression, + operator: BinaryExpressionOperator|string +} export enum BinaryExpressionOperator { OPERATOR_ADD = '+', @@ -41,59 +47,73 @@ export enum BinaryExpressionOperator { OPERATIR_SHR = '>>' } -export class BinaryExpression extends Expression implements ParentNode +/** + * Ast Node corresponding to a binary expression + * + * @param _left - The left part of the binary expression + * @param _right - The right part of the binry expression + * @param operator - The operator of the expression +*/ +export class BinaryExpression extends Expression implements ParentNode, iBinaryExpression { - protected NODE_ID: NodeID = NodeID.BINARY_EXPRESSION; - - constructor (private _left: Expression, private _right: Expression, public operator: BinaryExpressionOperator | string) + static ID: NodeID = "binaryExpression"; + public nodeId: NodeID = BinaryExpression.ID; + public operator: BinaryExpressionOperator|string; + constructor (left: Expression, right: Expression, operator: BinaryExpressionOperator | string) { - super (); + super(); + this.left=left; + this.right=right; + this.operator=operator; } get left (): Expression { - return this._left; + return this.left; } set left (expression: Expression) { - expression.parent = this; - const oldExpression = this._left; - this._left = expression; - oldExpression.removeFromParent (); + this.left = expression; } get right ():Expression { - return this._right; + return this.right; } set right (expression: Expression) { - expression.parent = this; - const oldExpression = this._right; - this._right = expression; - oldExpression.removeFromParent (); + this.right = expression; } + /** + * Removes Ast Node + * + * @param node - Ast Node to be removed + */ _removeChild (node: Node): void { if (node === this.left) { - throw new ASTError ('You can not remove the left expression from a BinaryExpression'); + throw new AstError ('You can not remove the left expression from a BinaryExpression'); } if (node === this.right) { - throw new ASTError ('You can not remove the right expression from a BinaryExpression'); + throw new AstError ('You can not remove the right expression from a BinaryExpression'); } } - toJSON ():string - { - const json = JSON.parse(super.toJSON ()); - json.left = this._left.toJSON (); - json.right = this._right.toJSON (); - json.operator = this.operator; - return JSON.stringify(json); + public toJSON(): string { + const json: iBinaryExpression = { + left: this.left, + right: this.right, + operator: this.operator, + ...this.asInterface() + }; + return JSON.stringify(json); + } + public stringToJSON():JSON{ + return JSON.parse(this.toJSON()) } } \ No newline at end of file diff --git a/packages/ast/src/nodes/expressions/UnaryExpression.ts b/packages/ast/src/nodes/expressions/UnaryExpression.ts index ca0bda7..0df1cb5 100644 --- a/packages/ast/src/nodes/expressions/UnaryExpression.ts +++ b/packages/ast/src/nodes/expressions/UnaryExpression.ts @@ -23,7 +23,12 @@ import { Node, ParentNode, NodeID } from '..'; import { Expression } from '..'; -import { ASTError } from '../../errors'; +import { AstError } from '../../errors'; + +interface iUnaryExpression{ + expression: Expression, + operator: UnaryExpressionOperator|string +} export enum UnaryExpressionOperator { OPERATOR_NEGATIVE = '-', @@ -33,41 +38,61 @@ export enum UnaryExpressionOperator { OPERATOR_DECREMENT = '--' } -export class UnaryExpression extends Expression implements ParentNode + +/** + * Ast Node corresponding to a binary expression + * + * @param left - The left part of the binary expression + * @param right - The right part of the binry expression + * @param operator - The operator of the expression +*/ +export class UnaryExpression extends Expression implements ParentNode,iUnaryExpression { - protected NODE_ID: NodeID = NodeID.UNARY_EXPRESSION; + static ID: NodeID = "unaryExpression"; + public nodeId: NodeID = UnaryExpression.ID; + public operator: UnaryExpressionOperator|string; + public expression: Expression; - constructor (private _expression: Expression, private operator: UnaryExpressionOperator | string) - { - super (); - } - get expression (): Expression + constructor (expression: Expression, operator: UnaryExpressionOperator | string) { - return this._expression; + super(); + this.expression=expression; + this.operator=operator; } - set expression (expression: Expression) - { - expression.parent = this; - const oldExpression = this._expression; - this._expression = expression; - oldExpression.removeFromParent (); - } + // get expression(): Expression + // { + // return this.expression; + // } + // set expression(expression: Expression) + // { + // this.expression = expression; + // } + + /** + * Removes Ast Node + * + * @param node - Ast Node to be removed + */ _removeChild (node: Node): void { if (node === this.expression) { - throw new ASTError ('You can not remove the left expression from a UniaryExpression'); + throw new AstError ('You can not remove the left expression from a UniaryExpression'); } } - toJSON ():string - { - const json = JSON.parse(super.toJSON ()); - json.expression = this._expression.toJSON (); - json.operator = this.operator; - return JSON.stringify(json); + public toJSON(): string { + const json: iUnaryExpression = { + expression: this.expression, + operator: this.operator, + ...this.asInterface() + }; + return JSON.stringify(json); + } + public stringToJSON():JSON{ + return JSON.parse(this.toJSON()) } } \ No newline at end of file diff --git a/packages/ast/src/nodes/index.ts b/packages/ast/src/nodes/index.ts index ba5bd41..b1c9610 100644 --- a/packages/ast/src/nodes/index.ts +++ b/packages/ast/src/nodes/index.ts @@ -22,19 +22,22 @@ export { ArrayElement } from './ArrayElement'; export { Block } from './Block'; export { Branch } from './Branch'; export { Loop } from './Loop'; +export { Label } from './Label'; export { Node, ParentNode, NodeID } from '@easycompiler/util'; -export { AST } from './AST'; +export { Ast } from './Ast'; export { Identifier } from './Identifier'; export { Constant } from './Constant'; export { Definition } from './Definition'; export { FunctionCall } from './FunctionCall'; export { FunctionDefinition } from './FunctionDefinition'; export { StructElement } from './StructElement'; -export { TypeCase } from './TypeCast'; +export { TypeCast } from './TypeCast'; +export { Value } from './Value'; export { VariableDefinition } from './VariableDefinition'; export { Expression } from './Expression'; export { Module } from './Module'; export { Jump } from './Jump'; export { Return } from './Return'; export { TypeDefinition } from './TypeDefinition'; +export { ParameterList } from './ParameterList'; export * from './expressions'; \ No newline at end of file diff --git a/packages/ast/src/symbol/SymbolTable.ts b/packages/ast/src/symbol/SymbolTable.ts index e899232..9f2417b 100644 --- a/packages/ast/src/symbol/SymbolTable.ts +++ b/packages/ast/src/symbol/SymbolTable.ts @@ -33,65 +33,298 @@ export enum SymbolType OTHER } -export class CSymbol implements Tags -{ +export enum SymScope{ + GLOBAL="Global", + LOCAL="Local", + PARAM="Parameter" +} +export class SymAttributes{ + private _isReserved: boolean = false; + private _isConst: boolean = false; + private _scope: SymScope = SymScope.GLOBAL; + private _tags: NodeTag = {}; + + constructor(reserved: boolean = false, isConst: boolean = false, scope: string = "global"){ + this.isReserved=reserved; + this.isConst=isConst; + this.scope=scope; + } + + set isReserved(reserved: boolean){ + this._isReserved=reserved; + } + get isReserved(): boolean{ + return this._isReserved; + } + + set isConst(isConst: boolean){ + this._isConst=isConst; + } + get isConst(): boolean{ + return this._isConst; + } - public readonly tags: NodeTag = {}; + set scope(scope: string){ + switch(scope.toLowerCase()){ + case "local": { + this._scope=SymScope.LOCAL; + } + case "parameter": { + this._scope=SymScope.PARAM; + } + default: { + this._scope=SymScope.GLOBAL; + } + } + } + get scope(): string{ + return this._scope; + } - constructor (public name: string, public type: SymbolType) + public hasTag (label: string): boolean { + if(this._tags[label]) + { + return true; + } + else + { + return false; + } + } +} +export class Sym //implements Tags +{ + //public readonly tags: NodeTag = {}; + public type: SymbolType=SymbolType.UNDEFINED; + public attributes: SymAttributes = new SymAttributes(); + constructor (/*public name: string,*/ type?: string){ + if(type){ + this.setType(type); + } + } + setType(type: string){ + switch(type){ + case "identifier":{ + this.type=SymbolType.IDENTIFIER; + } + case "typedef_name":{ + this.type=SymbolType.TYPEDEF_NAME; + } + case "enumeration_constant":{ + this.type=SymbolType.ENUMERATION_CONSTANT; + } + default: { + this.type=SymbolType.OTHER; + } + } + } + toJSON(): string { + let json={ + type: this.type + } + return JSON.parse(JSON.stringify(json)); } } + export class SymbolStorage { - [name: string]: CSymbol; + storage: { [name: string]: Sym; }={}; + toJSON():string{ + let json={ + storage: this.storage + } + return JSON.parse(JSON.stringify(json)); + } +} +export class symbolBlock { + public blockLevel: number; + private total: number=0; + public symbols: SymbolStorage=new SymbolStorage(); + public parent?: symbolBlock; + public blocks: SymbolList=new SymbolList(); + + constructor(blockLevel: number, parent?:symbolBlock){ + this.blockLevel=blockLevel; + if(parent) this.parent=parent; + } + setTotal(){ + this.total=Object.keys(this.symbols).length; + } + toJSON():JSON{ + let json:{ + blocklevel: number, + total: number, + symbols: { + [key: string]: string + }, + blocks: { + [key: string]: JSON + }, + }={ + blocklevel: 0, + total: 0, + symbols: {}, + blocks: {} + }; + + json.blocklevel=this.blockLevel; + json.total=this.total; + for(const key in Object.keys(this.symbols.storage)){ + json.symbols[key]=this.symbols.storage[key].toJSON(); + + } + for(const key of Object.keys(this.blocks.list)){ + json.blocks[key]=this.blocks.list[key].toJSON(); + + } + return JSON.parse(JSON.stringify(json)); + } +}; + +export class SymbolList{ + list: { [name: string]: symbolBlock; }={}; + toJSON():string{ + let json:{ [key: string]: JSON}={}; + for(const key of Object.keys(this.list)){ + //console.log("Key: "+key,this.list[key]); + if(this.list[key]){ + json[key]=this.list[key].toJSON(); + //console.log("keys: ", json[key]); + } + } + return JSON.stringify(json); + } } export class SymbolTable { - private symbols: SymbolStorage = new SymbolStorage (); + // .. <-- lvl3(locals) <-- lvl2(globals) <-- lvl1(keywords) <-- lvl0(null) + private symList:SymbolList=new SymbolList(); + public currentBlock:String; - set (name: string, type: SymbolType, redefine: boolean): void - { - if(redefine !== true) - { - redefine=false; - } - if (redefine || this.symbols[name] === undefined) - { - this.symbols[name] = new CSymbol (name, type); + constructor(){ + this.symList.list["firstblock"]=new symbolBlock(0); + this.addBlockToList("firstblock","keywords"); + console.log("addBlock :", this.addBlockToList("keywords","global")); + this.currentBlock="global"; + } + + //block functions + addBlockToList(parentBlock: string, blockName: string): number{ + let blockNameLC=blockName.toLowerCase(); + let res= this.getBlock(parentBlock); + if(typeof res==="number") return -1; + let newBlock:symbolBlock=new symbolBlock(res.blockLevel+1,res); + if(newBlock.parent){ + newBlock.parent.blocks.list[blockNameLC]=newBlock; } + res.blocks.list[blockNameLC]=newBlock; + return 0; + //console.log("Block added:", res.blocks.list[blockNameLC]); } - - SYM (name: string, type: SymbolType, redefine: boolean): void - { - if(redefine !== true){ - redefine=false; + + getBlock(blockName:string): symbolBlock|number{ + let list=this.symList; + let blockNameLC=blockName.toLowerCase(); + return this.getBlockWithList(blockNameLC, list); + } + + getBlockWithList(blockName: string, list: SymbolList): symbolBlock|number{ + if(list.list[blockName]){ + console.log("Block name: ",blockName); + console.log("Level: ", list.list[blockName].blockLevel); + if(list.list[blockName].blockLevel==0) return this.symList.list["firstblock"]; + else if(list.list[blockName].blockLevel==1) return this.symList.list["firstblock"].blocks.list["keywords"]; + else if(list.list[blockName].blockLevel==2) return this.symList.list["firstblock"].blocks.list["keywords"].blocks.list["global"]; } - this.set (name, type, redefine); + else{ + for(const block of Object.keys(list.list)){ + console.log("Else Block name: ", blockName); + if(list.list[block].blocks.list[blockName]){ + console.log("Else parent name of "+blockName+": ", block); + return list.list[block].blocks.list[blockName]; + } + else{ + list=list.list[block].blocks; + this.getBlockWithList(blockName, list); + } + + } + } + return -1; } - get (name: string): CSymbol | undefined + //symbol search functions + lookupByBlock (symName: string, block: symbolBlock): Sym | number { - return this.symbols[name]; + let symNameLC=symName.toLowerCase(); + if(block.symbols.storage[symNameLC]){ + return block.symbols.storage[symNameLC]; + } + else if(block.blockLevel==1){ + return -1; + } + else{ + return this.lookupByBlock(symNameLC, (block.parent as symbolBlock)); + } } - type (name: string): SymbolType - { - if (this.symbols[name]) return this.symbols[name].type; - else return SymbolType.UNDEFINED; + lookup(symName: string, blockName: string): Sym | number { + let symNameLC=symName.toLowerCase(); + let res= this.getBlock(blockName); + if(typeof res!=="number"){ + this.lookupByBlock(symNameLC, res); + } + return -1; } - SYM_TYPE (name: string): SymbolType - { - return this.type (name); + //symbol functions + addOrReplaceSymbolToStorage(blockName: string, symName: string, symType: string): number{ + let symNameLC=symName.toLowerCase(); + let res= this.getBlock(blockName); + if(typeof res==="number") return -1; + if(res.symbols.storage[symNameLC]){ + res.symbols.storage[symNameLC]=new Sym(symType); + res.setTotal(); + } + else{ + res.symbols.storage[symName].setType(symType); + } + return 0; + } + + setSymbolType(symName: string, symbolType: string, blockName: string){ + let res= this.lookup(symName, blockName); + if(typeof res!=="number"){ + res.setType(symbolType); + } } + setSymbolAttributes(symName: string, blockName: string, isReserved?: boolean, isConst?: boolean, scope?: string){ + let res= this.lookup(symName, blockName); + if(typeof res!=="number"){ + if(isConst){ + res.attributes.isConst=isConst; + } + if(isReserved){ + res.attributes.isReserved=isReserved; + } + if(scope){ + res.attributes.scope=scope; + } + } + } + + toJSON():string{ + return this.symList.toJSON(); + } + flush (): void { - this.symbols = new SymbolStorage (); + this.symList = new SymbolList (); } } diff --git a/packages/ast/src/symbol/index.ts b/packages/ast/src/symbol/index.ts index 8d66a51..6612cde 100644 --- a/packages/ast/src/symbol/index.ts +++ b/packages/ast/src/symbol/index.ts @@ -18,4 +18,4 @@ * limitations under the License. */ -export { SymbolTable, CSymbol, SymbolType } from './SymbolTable'; \ No newline at end of file +export { SymbolTable, SymbolType, SymScope, SymAttributes, Sym, SymbolStorage, symbolBlock, SymbolList } from './SymbolTable'; \ No newline at end of file diff --git a/packages/ast/src/types/Array.ts b/packages/ast/src/types/Array.ts index e9b9f49..e156138 100644 --- a/packages/ast/src/types/Array.ts +++ b/packages/ast/src/types/Array.ts @@ -21,24 +21,41 @@ -import { Type, TypeID } from './Type'; +import { IType, Type, TypeID } from './Type'; import { u32 } from '@easycompiler/util'; +interface IArray extends IType{ + name: string, + arrayType: Type, + size: u32, +} -export class Array extends Type +export class Array extends Type implements IArray { protected readonly TYPE_ID: TypeID = TypeID.ARRAY; + public readonly name: string; + public readonly arrayType: Type; + public readonly size: u32; - constructor (name: string, public readonly type: Type, public readonly size: u32) + constructor (name: string, type: Type, size: u32) { - super (name); + super (TypeID.ARRAY); + this.name=name; + this.arrayType=type; + this.size=size; } - toJSON ():string - { - const json = JSON.parse(super.toJSON ()); - json.type = this.type.toJSON (); - json.size = this.size; - return JSON.stringify(json); + public asInterface(): IArray { + const json: IArray = { + ...super.asInterface(), + name: this.name, + arrayType: this.arrayType, + size: this.size, + }; + return json; } + + public toJSON(): string { + return JSON.stringify(this.asInterface()); + } } \ No newline at end of file diff --git a/packages/ast/src/types/Bool.ts b/packages/ast/src/types/Bool.ts index 01b1464..9588022 100644 --- a/packages/ast/src/types/Bool.ts +++ b/packages/ast/src/types/Bool.ts @@ -19,21 +19,32 @@ */ -import { Type, TypeID } from './Type'; +import { IType, Type, TypeID } from './Type'; -export class Bool extends Type +export interface IBool extends IType{ + name: string +} + +export class Bool extends Type implements IBool { protected readonly TYPE_ID: TypeID = TypeID.BOOL; - constructor (name: string, public type: Type) - { - super (name); - } + public readonly name; + constructor (name: string) + { + super (TypeID.BOOL); + this.name=name; + } + + public asInterface():IBool{ + const json: IBool = { + ...super.asInterface(), + name: this.name, + }; + return json; + } - toJSON ():string - { - const json = JSON.parse(super.toJSON ()); - json.type = this.type.toJSON (); - return JSON.stringify(json); - } + public toJSON(): string { + return JSON.stringify(this.asInterface()); + } } \ No newline at end of file diff --git a/packages/ast/src/types/Char.ts b/packages/ast/src/types/Char.ts index 77deed8..7afd91c 100644 --- a/packages/ast/src/types/Char.ts +++ b/packages/ast/src/types/Char.ts @@ -19,20 +19,31 @@ */ -import { Type, TypeID } from './Type'; +import { IType, Type, TypeID } from './Type'; -export class Char extends Type +export interface IChar extends IType{ + name: string +} + +export class Char extends Type implements IChar { protected readonly TYPE_ID: TypeID = TypeID.CHAR; - constructor (name: string, public type: Type) + public readonly name; + constructor (name: string) { - super (name); + super (TypeID.CHAR); + this.name=name; } - toJSON ():string - { - const json = JSON.parse(super.toJSON ()); - json.type = this.type.toJSON (); - return JSON.stringify(json); + public asInterface(): IChar { + const json: IChar = { + ...super.asInterface(), + name: this.name, + }; + return json; + } + + public toJSON(): string { + return JSON.stringify(this.asInterface()); } } \ No newline at end of file diff --git a/packages/ast/src/types/Function.ts b/packages/ast/src/types/Function.ts index 175a6f2..3f3f35c 100644 --- a/packages/ast/src/types/Function.ts +++ b/packages/ast/src/types/Function.ts @@ -18,16 +18,41 @@ * limitations under the License. */ -import { Type, TypeID } from './Type'; +import { IType, Type, TypeID } from './Type'; -export class Function extends Type +interface IFunction extends IType{ + name: string, + functionType: Type, + parameterTypes: Type[], +} +export class Function extends Type implements IFunction { protected readonly TYPE_ID: TypeID = TypeID.FUNCTION; - - constructor () + public name: string; + public functionType: Type; + public parameterTypes: Type[]; + constructor (name: string, functionType: Type, parameterTypes: Type[]) { - super ('__function'); + super (TypeID.FUNCTION); + this.name=name; + this.functionType=functionType; + this.parameterTypes=parameterTypes; } - - // TODO add parameter types + public addParameterType(parameterType: Type){ + this.parameterTypes.push(parameterType); + } + public toJSON(): string { + let json_parameterTypes=[]; + for(const parameterType of this.parameterTypes){ + json_parameterTypes.push(parameterType) + } + const json: IFunction = { + ...super.asInterface(), + name: this.name, + functionType: this.functionType, + parameterTypes: json_parameterTypes, + typeID: super.type + }; + return JSON.stringify(json); + } } \ No newline at end of file diff --git a/packages/ast/src/types/Pointer.ts b/packages/ast/src/types/Pointer.ts index be0d95b..9d5599a 100644 --- a/packages/ast/src/types/Pointer.ts +++ b/packages/ast/src/types/Pointer.ts @@ -19,21 +19,30 @@ */ -import { Type, TypeID } from './Type'; +import { IType, Type, TypeID } from './Type'; -export class Pointer extends Type +export interface iPointer extends IType{ + name: string +} + + +export class Pointer extends Type implements iPointer { protected readonly TYPE_ID: TypeID = TypeID.POINTER; - constructor (name: string, public type: Type) - { - super (name); - } + public readonly name; + constructor (name: string) + { + super (TypeID.POINTER); + this.name=name; + } - toJSON ():string - { - const json = JSON.parse(super.toJSON ()); - json.type = this.type.toJSON (); - return JSON.stringify(json); - } + public toJSON(): string { + const json: iPointer = { + ...super.asInterface(), + name: this.name, + typeID: super.type + }; + return JSON.stringify(json); + } } \ No newline at end of file diff --git a/packages/ast/src/types/String.ts b/packages/ast/src/types/String.ts index fc77f83..7517816 100644 --- a/packages/ast/src/types/String.ts +++ b/packages/ast/src/types/String.ts @@ -19,20 +19,29 @@ */ -import { Type, TypeID } from './Type'; +import { IType, Type, TypeID } from './Type'; -export class String extends Type +interface iString extends IType{ + name: string +} + + +export class String extends Type implements iString { protected readonly TYPE_ID: TypeID = TypeID.STRING; - constructor (name: string, public type: Type) + public readonly name; + constructor (name: string) { - super (name); + super (TypeID.STRING); + this.name=name; } - toJSON():string - { - const json = JSON.parse(super.toJSON ()); - json.type = this.type.toJSON (); + public toJSON(): string { + const json: iString = { + ...super.asInterface(), + name: this.name, + typeID: super.type + }; return JSON.stringify(json); } } \ No newline at end of file diff --git a/packages/ast/src/types/Struct.ts b/packages/ast/src/types/Struct.ts index ff1ecfa..6b4f62a 100644 --- a/packages/ast/src/types/Struct.ts +++ b/packages/ast/src/types/Struct.ts @@ -18,34 +18,29 @@ * limitations under the License. */ -import { Type, TypeID } from './Type'; +import { IType, Type, TypeID } from './Type'; import { u32 } from '@easycompiler/util'; -// export class StructElement { -// constructor (public name: string, public type: Type) -// { - -// } - -// toJSON ():any -// { -// let json:any = { -// name: this.name, -// type: this.type.toJSON () -// }; -// return json; -// } -// } - import { StructElement } from '../nodes'; +import { IAst } from 'src/nodes/Ast'; -export class Struct extends Type +interface iStruct extends IType{ + name: string, + elements: IAst[] +} + + +export class Struct extends Type implements iStruct { protected readonly TYPE_ID: TypeID = TypeID.STRUCT; - constructor (name: string, public readonly elements: StructElement[] = []) + public readonly name: string; + public readonly elements: StructElement[]=[]; + constructor (name: string, elements: StructElement[]) { - super (name); + super (TypeID.STRUCT); + this.name=name; + this.elements=elements; } addElement (element: StructElement, position: u32 = -1) @@ -99,14 +94,18 @@ export class Struct extends Type return (this.getElement (name) === null); } - toJSON ():string - { - const json = JSON.parse(super.toJSON ()); - json.elements = []; + public toJSON(): string { + let json_elements=[]; for (const element in this.elements) { - json.elements.pushs (this.elements[element].toJSON ()); + json_elements.push(this.elements[element].asInterface()); } - return JSON.stringify(json); - } + const json: iStruct = { + ...super.asInterface(), + name: this.name, + elements: json_elements, + typeID: super.type + }; + return JSON.stringify(json); + } } \ No newline at end of file diff --git a/packages/ast/src/types/Type.ts b/packages/ast/src/types/Type.ts index ea782f8..fb6f2ef 100644 --- a/packages/ast/src/types/Type.ts +++ b/packages/ast/src/types/Type.ts @@ -18,41 +18,44 @@ * limitations under the License. */ - -import { u32 } from '@easycompiler/util'; - export enum TypeID { - TYPE, - INTEGER, - FLOAT, - STRING, - CHAR, - ARRAY, - FUNCTION, - POINTER, - STRUCT, - UNKNOWN, - VOID, - BOOL + TYPE="Type", + INTEGER="Integer", + FLOAT="Float", + STRING="String", + CHAR="Char", + BOOL="Bool", + ARRAY="Array", + FUNCTION="Function", + POINTER="Pointer", + STRUCT="Struct", + UNKNOWN="Unknown", + VOID="Void" } -export abstract class Type + +export interface IType{ + readonly typeID: TypeID|string; +} +export class Type implements IType { - protected version:u32 = 1; - protected readonly TYPE_ID: TypeID = TypeID.TYPE; + public readonly typeID: TypeID = TypeID.TYPE; + - constructor (public readonly name: string) - { + constructor (public readonly type: TypeID|string){ + } + public asInterface(): IType{ + const json: IType = { + typeID: this.typeID as string, + }; + return json; } - toJSON ():string - { - const json = { - version: this.version, - typeID: this.TYPE_ID, - name: this.name - }; - return JSON.stringify(json); + public toJSON(): string { + return JSON.stringify(this.asInterface()); + } + public stringToJSON():JSON{ + return JSON.parse(this.toJSON()) } } \ No newline at end of file diff --git a/packages/ast/src/types/Unknown.ts b/packages/ast/src/types/Unknown.ts index 772e18a..fbff23b 100644 --- a/packages/ast/src/types/Unknown.ts +++ b/packages/ast/src/types/Unknown.ts @@ -26,6 +26,6 @@ export class Unknown extends Type constructor () { - super ('__unknown'); + super (TypeID.UNKNOWN); } } diff --git a/packages/ast/src/types/Void.ts b/packages/ast/src/types/Void.ts index be5e37c..ba80549 100644 --- a/packages/ast/src/types/Void.ts +++ b/packages/ast/src/types/Void.ts @@ -23,4 +23,8 @@ import { Type, TypeID } from './Type'; export class Void extends Type { protected readonly TYPE_ID: TypeID = TypeID.VOID; + constructor () + { + super (TypeID.VOID); + } } diff --git a/packages/ast/src/types/float/Float.ts b/packages/ast/src/types/float/Float.ts index abf050e..46c1a4a 100644 --- a/packages/ast/src/types/float/Float.ts +++ b/packages/ast/src/types/float/Float.ts @@ -19,26 +19,38 @@ */ -import { Type, TypeID } from '../Type'; +import { IType, Type, TypeID } from '../Type'; + +interface iFloat extends IType{ + name: string, + precision: Precision +} + export enum Precision { SIMPLE = 0, DOUBLE = 1 } -export class Float extends Type +export class Float extends Type implements iFloat { protected readonly TYPE_ID: TypeID = TypeID.FLOAT; - - constructor (name: string, public readonly precision: Precision) + public readonly name: string; + public readonly precision: Precision; + constructor (name: string, precision: Precision) { - super (name); + super (TypeID.FLOAT); + this.name=name; + this.precision=precision } - toJSON ():string - { - const json = JSON.parse(super.toJSON ()); - json.precision = this.precision; - return JSON.stringify(json); - } + public toJSON(): string { + const json: iFloat = { + ...super.asInterface(), + name: this.name, + precision: this.precision as number, + typeID: super.type + }; + return JSON.stringify(json); + } } \ No newline at end of file diff --git a/packages/ast/src/types/index.ts b/packages/ast/src/types/index.ts index 067bed8..159496d 100644 --- a/packages/ast/src/types/index.ts +++ b/packages/ast/src/types/index.ts @@ -18,7 +18,7 @@ * limitations under the License. */ -export { Type, TypeID } from './Type'; +export { IType, Type, TypeID } from './Type'; export { Array } from './Array'; export { Function } from './Function'; export { Struct } from './Struct'; diff --git a/packages/ast/src/types/integer/Integer.ts b/packages/ast/src/types/integer/Integer.ts index aac0ed4..0b7076e 100644 --- a/packages/ast/src/types/integer/Integer.ts +++ b/packages/ast/src/types/integer/Integer.ts @@ -18,24 +18,39 @@ * limitations under the License. */ -import { Type, TypeID } from '../Type'; +import { IType, Type, TypeID } from '../Type'; import { u32 } from '@easycompiler/util'; +interface iInteger extends IType{ + name: string, + bits: u32, + signed: boolean +} -export class Integer extends Type + +export class Integer extends Type implements iInteger { protected readonly TYPE_ID: TypeID = TypeID.INTEGER; + public readonly name: string; + public readonly bits: u32; + public readonly signed: boolean; - constructor (name: string, public readonly bits: u32, public readonly signed: boolean) + constructor (name: string,bits: u32, signed: boolean) { - super (name); + super (TypeID.INTEGER); + this.name=name; + this.bits=bits; + this.signed=signed; } - toJSON ():string - { - const json = JSON.parse(super.toJSON ()); - json.bits = this.bits; - json.signed = this.signed; - return JSON.stringify(json); - } + public toJSON(): string { + const json: iInteger = { + ...super.asInterface(), + name: this.name, + bits: this.bits, + signed: this.signed, + typeID: super.type + }; + return JSON.stringify(json); + } } \ No newline at end of file diff --git a/packages/ast/src/util/index.ts b/packages/ast/src/util/index.ts index 3ce1567..74d66dc 100644 --- a/packages/ast/src/util/index.ts +++ b/packages/ast/src/util/index.ts @@ -1,3 +1,3 @@ -export { Node, NodeID, ParentNode } from "./src/Node"; +export { INode, Node, NodeID, ParentNode } from "./src/Node"; export { u32, i32, f32, u64, i64, f64 } from "./src/types"; export { NodeTag, Tags } from "./src/Tags"; diff --git a/packages/ast/src/util/src/Node.ts b/packages/ast/src/util/src/Node.ts index 9c5602b..c2dad20 100644 --- a/packages/ast/src/util/src/Node.ts +++ b/packages/ast/src/util/src/Node.ts @@ -20,57 +20,72 @@ import { u32 } from './types'; import { Tags, NodeTag, NodeTagValue } from './Tags'; - -export enum NodeID { - NODE, - - // AST Nodes - AST, - ARRAY_ELEMENT, - BLOCK, - BRANCH, - CONSTANT, - DEFINITION, - EXPRESSION, - FUNCTION_CALL, - FUNCTION_DEFINITION, - IDENTIFIER, - LOOP, - STRUCT_ELEMENT, - TYPE_CAST, - VARIABLE_DEFINITION, - BINARY_EXPRESSION, - UNARY_EXPRESSION, - RETURN, - MODULE, - JUMP, - LABEL, - TYPE_DEFINITION, - - // ParseTree Nodes - RULE, - TOKEN, - - // Other - OTHER -} - +export type NodeID = string; + +// export enum NodeID { +// NODE="Node", + +// // Ast Nodes +// Ast="Ast", +// ARRAY_ELEMENT="ArrayElement", +// BLOCK="Block", +// BRANCH="Branch", +// CONSTANT="Constant", +// DEFINITION="Definition", +// EXPRESSION="Expression", +// FUNCTION_CALL="FunctionCall", +// FUNCTION_DEFINITION="FunctionDefinition", +// IDENTIFIER="Identifier", +// LOOP="Loop", +// STRUCT_ELEMENT="StructElement", +// TYPE_CAst="TypeCast", +// VARIABLE_DEFINITION="VariableDefinition", +// BINARY_EXPRESSION="BinaryExpression", +// UNARY_EXPRESSION="UnaryExpression", +// RETURN="Return", +// MODULE="Module", +// JUMP="Jump", +// LABEL="Label", +// TYPE_DEFINITION="TypeDefinition", +// VALUE="Value", + +// // ParseTree Nodes +// RULE="Rule", +// TOKEN="Token", + +// // Other +// OTHER="Other" +// } export interface ParentNode { _removeChild (child:Node): void; } -export abstract class Node implements Tags +export interface INode { + /** + * class version + */ + readonly version: u32; + /** + * class node id, used for serializing and deserializing + */ + readonly nodeId: NodeID; + readonly tags: NodeTag; +} + +export abstract class Node implements INode, Tags { + static VERSION: u32 = 1; + static NODEID: string; /** * class version */ - protected readonly VERSION: u32 = 1; + readonly version: u32 = Node.VERSION; /** * class node id, used for serializing and deserializing */ - protected readonly NODE_ID: NodeID = NodeID.NODE; + abstract readonly nodeId: NodeID; public readonly tags: NodeTag = {}; @@ -87,7 +102,7 @@ export abstract class Node implements Tags this._parent = parent; } - hasTag (label: string): boolean + public hasTag (label: string): boolean { if(this.tags[label]) { @@ -108,20 +123,17 @@ export abstract class Node implements Tags } } - toJSON (): string + public toJSON(): string { + // console.log (this.asInterface()); + return JSON.stringify(this.asInterface()); + } + + public asInterface(): INode { - type json_type={ - version: u32, - node?: NodeID, - tags?: { - [key: string]: NodeTagValue, - } - } - - const json:json_type={ - node: this.NODE_ID, - version: this.VERSION, - tags: {} + const json: INode = { + nodeId: this.nodeId, + version: this.version, + tags: {} as NodeTag }; if(json.tags){ for (const tag in this.tags) @@ -129,8 +141,22 @@ export abstract class Node implements Tags json.tags[tag]=this.tags[tag]; } } - //json.tags= this.tags; - return JSON.stringify(json); + // we must force this + return json; } } +class NodeIdType +{ + [nodeId:string]:typeof Node +} + +export class NodeFactory { + static nodeIds: NodeIdType = {}; + + static registerNode(node: typeof Node) { + NodeFactory.nodeIds[node.NODEID] = node; + } + + private Nodefactory() {} +} diff --git a/packages/ast/src/util/tsconfig.json b/packages/ast/src/util/tsconfig.json index 3a1bb91..2cb2c37 100644 --- a/packages/ast/src/util/tsconfig.json +++ b/packages/ast/src/util/tsconfig.json @@ -7,8 +7,8 @@ "allowJs": true, /* Allow javascript files to be compiled. */ // "checkJs": true, /* Report errors in .js files. */ // "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */ - // "declaration": true, /* Generates corresponding '.d.ts' file. */ - // "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */ + // "declaration": true, /* Generates corresponding '.d.ts' file. */ + //"declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */ // "sourceMap": true, /* Generates corresponding '.map' file. */ // "outFile": "./easycompiler.js", "outDir": "dist", diff --git a/packages/ast/tsconfig.json b/packages/ast/tsconfig.json index 3a1bb91..2af9c9d 100644 --- a/packages/ast/tsconfig.json +++ b/packages/ast/tsconfig.json @@ -7,8 +7,8 @@ "allowJs": true, /* Allow javascript files to be compiled. */ // "checkJs": true, /* Report errors in .js files. */ // "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */ - // "declaration": true, /* Generates corresponding '.d.ts' file. */ - // "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */ + "declaration": true, /* Generates corresponding '.d.ts' file. */ + "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */ // "sourceMap": true, /* Generates corresponding '.map' file. */ // "outFile": "./easycompiler.js", "outDir": "dist", diff --git a/packages/backend/package.json b/packages/backend/package.json index bd5748a..91c6948 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -3,6 +3,7 @@ "version": "1.0.0", "description": "", "main": "dist/index.js", + "types": "dist/index.d.ts", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "build": "tsc --build tsconfig.json", diff --git a/packages/backend/src/backend.ts b/packages/backend/src/backend.ts index 36064b4..83ee941 100644 --- a/packages/backend/src/backend.ts +++ b/packages/backend/src/backend.ts @@ -1,5 +1,5 @@ export interface IBackend{ - generateCode(AST: string): string; + generateCode(Ast: string): string; } export abstract class BackendError extends Error { diff --git a/packages/backend/tsconfig.json b/packages/backend/tsconfig.json index 3a1bb91..2af9c9d 100644 --- a/packages/backend/tsconfig.json +++ b/packages/backend/tsconfig.json @@ -7,8 +7,8 @@ "allowJs": true, /* Allow javascript files to be compiled. */ // "checkJs": true, /* Report errors in .js files. */ // "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */ - // "declaration": true, /* Generates corresponding '.d.ts' file. */ - // "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */ + "declaration": true, /* Generates corresponding '.d.ts' file. */ + "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */ // "sourceMap": true, /* Generates corresponding '.map' file. */ // "outFile": "./easycompiler.js", "outDir": "dist", diff --git a/packages/frontend/package.json b/packages/frontend/package.json index 1391c60..abf1deb 100644 --- a/packages/frontend/package.json +++ b/packages/frontend/package.json @@ -3,6 +3,7 @@ "version": "1.0.0", "description": "", "main": "dist/index.js", + "types": "dist/index.d.ts", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "build": "tsc --build tsconfig.json", diff --git a/packages/frontend/src/frontend.ts b/packages/frontend/src/frontend.ts index 99ed4cc..26d452f 100644 --- a/packages/frontend/src/frontend.ts +++ b/packages/frontend/src/frontend.ts @@ -1,16 +1,17 @@ +import { Ast } from "@easycompiler/ast"; + export interface IFrontend{ /** - * Parses an input string and generates the correspoding AST + * Parses an input string and generates the correspoding Ast * * @param sourceCode - The source code to be transformed - * into an AST + * into an Ast * - * @returns the parsed AST for the `sourceCode` + * @returns the parsed Ast for the `sourceCode` * @throws {@link FrontendError} if `sourceCode` cannot be * parsed */ - parse(sourceCode :string): string; - print():void; + parse(sourceCode :string): Ast; } export abstract class FrontendError extends Error { diff --git a/packages/frontend/tsconfig.json b/packages/frontend/tsconfig.json index 3a1bb91..2af9c9d 100644 --- a/packages/frontend/tsconfig.json +++ b/packages/frontend/tsconfig.json @@ -7,8 +7,8 @@ "allowJs": true, /* Allow javascript files to be compiled. */ // "checkJs": true, /* Report errors in .js files. */ // "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */ - // "declaration": true, /* Generates corresponding '.d.ts' file. */ - // "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */ + "declaration": true, /* Generates corresponding '.d.ts' file. */ + "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */ // "sourceMap": true, /* Generates corresponding '.map' file. */ // "outFile": "./easycompiler.js", "outDir": "dist", diff --git a/packages/optimizer/package.json b/packages/optimizer/package.json index 6fc6579..b80c2c5 100644 --- a/packages/optimizer/package.json +++ b/packages/optimizer/package.json @@ -1,29 +1,29 @@ { - "name": "@easycompiler/optimizer", - "version": "1.0.0", - "description": "", - "main": "dist/index.js", - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1", - "build": "tsc --build tsconfig.json", - "lint": "npx eslint src" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/alexandruradovici/easycompiler.git" - }, - "author": "", - "license": "ISC", - "bugs": { - "url": "https://github.com/alexandruradovici/easycompiler/issues" - }, - "homepage": "https://github.com/alexandruradovici/easycompiler#readme", - "devDependencies": { - "lerna": "^5.1.7" - }, - "dependencies": { - "@types/node": "^18.0.3", - "@easycompiler/ast": "1.0.0" - } + "name": "@easycompiler/optimizer", + "version": "1.0.0", + "description": "", + "main": "dist/index.js", + "types": "dist/index.d.ts", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1", + "build": "tsc --build tsconfig.json", + "lint": "npx eslint src" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/alexandruradovici/easycompiler.git" + }, + "author": "", + "license": "ISC", + "bugs": { + "url": "https://github.com/alexandruradovici/easycompiler/issues" + }, + "homepage": "https://github.com/alexandruradovici/easycompiler#readme", + "devDependencies": { + "lerna": "^5.1.7" + }, + "dependencies": { + "@types/node": "^18.0.3", + "@easycompiler/ast": "1.0.0" } - \ No newline at end of file +} \ No newline at end of file diff --git a/packages/optimizer/src/optimizer.ts b/packages/optimizer/src/optimizer.ts index a2c91ad..80eb9d8 100644 --- a/packages/optimizer/src/optimizer.ts +++ b/packages/optimizer/src/optimizer.ts @@ -1,5 +1,6 @@ +import { Ast } from '@easycompiler/ast'; export interface IOptimizer{ - optimize(AST :string): AST; + optimize(Ast :string): Ast } export abstract class OptimizerError extends Error { diff --git a/packages/optimizer/tsconfig.json b/packages/optimizer/tsconfig.json index 3a1bb91..2af9c9d 100644 --- a/packages/optimizer/tsconfig.json +++ b/packages/optimizer/tsconfig.json @@ -7,8 +7,8 @@ "allowJs": true, /* Allow javascript files to be compiled. */ // "checkJs": true, /* Report errors in .js files. */ // "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */ - // "declaration": true, /* Generates corresponding '.d.ts' file. */ - // "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */ + "declaration": true, /* Generates corresponding '.d.ts' file. */ + "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */ // "sourceMap": true, /* Generates corresponding '.map' file. */ // "outFile": "./easycompiler.js", "outDir": "dist",