UNPKG

@stordata/grammars

Version:

A collection of ANTLR grammars used at Stordata. This project exists so that we can package the grammars (and various utilities) as a CommonJS module. The `antlr4` Javascript runtime is only available as an ES module at the time of writing.

4,073 lines (4,061 loc) 73.1 kB
'use strict'; const antlr4 = require('antlr4'); function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e.default : e; } const antlr4__default = /*#__PURE__*/_interopDefaultCompat(antlr4); class CustomMetricListener extends antlr4__default.tree.ParseTreeListener { // Enter a parse tree produced by CustomMetricParser#all. enterAll(ctx) { } // Exit a parse tree produced by CustomMetricParser#all. exitAll(ctx) { } // Enter a parse tree produced by CustomMetricParser#Function. enterFunction(ctx) { } // Exit a parse tree produced by CustomMetricParser#Function. exitFunction(ctx) { } // Enter a parse tree produced by CustomMetricParser#Addition. enterAddition(ctx) { } // Exit a parse tree produced by CustomMetricParser#Addition. exitAddition(ctx) { } // Enter a parse tree produced by CustomMetricParser#Multiplication. enterMultiplication(ctx) { } // Exit a parse tree produced by CustomMetricParser#Multiplication. exitMultiplication(ctx) { } // Enter a parse tree produced by CustomMetricParser#Subtraction. enterSubtraction(ctx) { } // Exit a parse tree produced by CustomMetricParser#Subtraction. exitSubtraction(ctx) { } // Enter a parse tree produced by CustomMetricParser#Number. enterNumber(ctx) { } // Exit a parse tree produced by CustomMetricParser#Number. exitNumber(ctx) { } // Enter a parse tree produced by CustomMetricParser#WrappedExpression. enterWrappedExpression(ctx) { } // Exit a parse tree produced by CustomMetricParser#WrappedExpression. exitWrappedExpression(ctx) { } // Enter a parse tree produced by CustomMetricParser#Division. enterDivision(ctx) { } // Exit a parse tree produced by CustomMetricParser#Division. exitDivision(ctx) { } // Enter a parse tree produced by CustomMetricParser#String. enterString(ctx) { } // Exit a parse tree produced by CustomMetricParser#String. exitString(ctx) { } } class CustomMetricVisitor extends antlr4__default.tree.ParseTreeVisitor { // Visit a parse tree produced by CustomMetricParser#all. visitAll(ctx) { return this.visitChildren(ctx); } // Visit a parse tree produced by CustomMetricParser#Function. visitFunction(ctx) { return this.visitChildren(ctx); } // Visit a parse tree produced by CustomMetricParser#Addition. visitAddition(ctx) { return this.visitChildren(ctx); } // Visit a parse tree produced by CustomMetricParser#Multiplication. visitMultiplication(ctx) { return this.visitChildren(ctx); } // Visit a parse tree produced by CustomMetricParser#Subtraction. visitSubtraction(ctx) { return this.visitChildren(ctx); } // Visit a parse tree produced by CustomMetricParser#Number. visitNumber(ctx) { return this.visitChildren(ctx); } // Visit a parse tree produced by CustomMetricParser#WrappedExpression. visitWrappedExpression(ctx) { return this.visitChildren(ctx); } // Visit a parse tree produced by CustomMetricParser#Division. visitDivision(ctx) { return this.visitChildren(ctx); } // Visit a parse tree produced by CustomMetricParser#String. visitString(ctx) { return this.visitChildren(ctx); } } const serializedATN$5 = [ 4, 1, 23, 47, 2, 0, 7, 0, 2, 1, 7, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 18, 8, 1, 1, 1, 1, 1, 5, 1, 22, 8, 1, 10, 1, 12, 1, 25, 9, 1, 1, 1, 3, 1, 28, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 1, 42, 8, 1, 10, 1, 12, 1, 45, 9, 1, 1, 1, 0, 1, 2, 2, 0, 2, 0, 0, 53, 0, 4, 1, 0, 0, 0, 2, 27, 1, 0, 0, 0, 4, 5, 3, 2, 1, 0, 5, 6, 5, 0, 0, 1, 6, 1, 1, 0, 0, 0, 7, 8, 6, 1, -1, 0, 8, 9, 5, 12, 0, 0, 9, 10, 3, 2, 1, 0, 10, 11, 5, 13, 0, 0, 11, 28, 1, 0, 0, 0, 12, 28, 5, 2, 0, 0, 13, 28, 5, 3, 0, 0, 14, 15, 5, 4, 0, 0, 15, 17, 5, 12, 0, 0, 16, 18, 3, 2, 1, 0, 17, 16, 1, 0, 0, 0, 17, 18, 1, 0, 0, 0, 18, 23, 1, 0, 0, 0, 19, 20, 5, 1, 0, 0, 20, 22, 3, 2, 1, 0, 21, 19, 1, 0, 0, 0, 22, 25, 1, 0, 0, 0, 23, 21, 1, 0, 0, 0, 23, 24, 1, 0, 0, 0, 24, 26, 1, 0, 0, 0, 25, 23, 1, 0, 0, 0, 26, 28, 5, 13, 0, 0, 27, 7, 1, 0, 0, 0, 27, 12, 1, 0, 0, 0, 27, 13, 1, 0, 0, 0, 27, 14, 1, 0, 0, 0, 28, 43, 1, 0, 0, 0, 29, 30, 10, 8, 0, 0, 30, 31, 5, 6, 0, 0, 31, 42, 3, 2, 1, 9, 32, 33, 10, 7, 0, 0, 33, 34, 5, 7, 0, 0, 34, 42, 3, 2, 1, 8, 35, 36, 10, 6, 0, 0, 36, 37, 5, 8, 0, 0, 37, 42, 3, 2, 1, 7, 38, 39, 10, 5, 0, 0, 39, 40, 5, 9, 0, 0, 40, 42, 3, 2, 1, 6, 41, 29, 1, 0, 0, 0, 41, 32, 1, 0, 0, 0, 41, 35, 1, 0, 0, 0, 41, 38, 1, 0, 0, 0, 42, 45, 1, 0, 0, 0, 43, 41, 1, 0, 0, 0, 43, 44, 1, 0, 0, 0, 44, 3, 1, 0, 0, 0, 45, 43, 1, 0, 0, 0, 5, 17, 23, 27, 41, 43 ]; const atn$5 = new antlr4__default.atn.ATNDeserializer().deserialize(serializedATN$5); const decisionsToDFA$5 = atn$5.decisionToState.map((ds, index) => new antlr4__default.dfa.DFA(ds, index)); const sharedContextCache$2 = new antlr4__default.atn.PredictionContextCache(); class CustomMetricParser extends antlr4__default.Parser { static grammarFileName = "CustomMetric.g4"; static literalNames = [ null, "','", null, null, null, null, null, null, null, null, null, "'.'", "'('", "')'", "'+'", "'-'", "'*'", "'/'", `'"'`, "' '" ]; static symbolicNames = [ null, null, "NUMBER", "STRING", "FN", "WHITESPACE", "ADD", "SUBTRACT", "MULTIPLY", "DIVIDE", "DIGIT", "DOT", "L_PARANT", "R_PARANT", "PLUS", "MINUS", "STAR", "SLASH", "DQUOTE", "SPACE", "TAB", "CR", "LF", "ANY" ]; static ruleNames = ["all", "expression"]; constructor(input) { super(input); this._interp = new antlr4__default.atn.ParserATNSimulator(this, atn$5, decisionsToDFA$5, sharedContextCache$2); this.ruleNames = CustomMetricParser.ruleNames; this.literalNames = CustomMetricParser.literalNames; this.symbolicNames = CustomMetricParser.symbolicNames; } sempred(localctx, ruleIndex, predIndex) { switch (ruleIndex) { case 1: return this.expression_sempred(localctx, predIndex); default: throw "No predicate with index:" + ruleIndex; } } expression_sempred(localctx, predIndex) { switch (predIndex) { case 0: return this.precpred(this._ctx, 8); case 1: return this.precpred(this._ctx, 7); case 2: return this.precpred(this._ctx, 6); case 3: return this.precpred(this._ctx, 5); default: throw "No predicate with index:" + predIndex; } } all() { let localctx = new AllContext$2(this, this._ctx, this.state); this.enterRule(localctx, 0, CustomMetricParser.RULE_all); try { this.enterOuterAlt(localctx, 1); this.state = 4; this.expression(0); this.state = 5; this.match(CustomMetricParser.EOF); } catch (re) { if (re instanceof antlr4__default.error.RecognitionException) { localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { throw re; } } finally { this.exitRule(); } return localctx; } expression(_p) { if (_p === void 0) { _p = 0; } const _parentctx = this._ctx; const _parentState = this.state; let localctx = new ExpressionContext(this, this._ctx, _parentState); let _prevctx = localctx; const _startState = 2; this.enterRecursionRule(localctx, 2, CustomMetricParser.RULE_expression, _p); var _la = 0; try { this.enterOuterAlt(localctx, 1); this.state = 27; this._errHandler.sync(this); switch (this._input.LA(1)) { case 12: localctx = new WrappedExpressionContext(this, localctx); this._ctx = localctx; _prevctx = localctx; this.state = 8; this.match(CustomMetricParser.L_PARANT); this.state = 9; this.expression(0); this.state = 10; this.match(CustomMetricParser.R_PARANT); break; case 2: localctx = new NumberContext(this, localctx); this._ctx = localctx; _prevctx = localctx; this.state = 12; this.match(CustomMetricParser.NUMBER); break; case 3: localctx = new StringContext(this, localctx); this._ctx = localctx; _prevctx = localctx; this.state = 13; this.match(CustomMetricParser.STRING); break; case 4: localctx = new FunctionContext(this, localctx); this._ctx = localctx; _prevctx = localctx; this.state = 14; this.match(CustomMetricParser.FN); this.state = 15; this.match(CustomMetricParser.L_PARANT); this.state = 17; this._errHandler.sync(this); _la = this._input.LA(1); if ((_la & ~31) === 0 && (1 << _la & 4124) !== 0) { this.state = 16; this.expression(0); } this.state = 23; this._errHandler.sync(this); _la = this._input.LA(1); while (_la === 1) { this.state = 19; this.match(CustomMetricParser.T__0); this.state = 20; this.expression(0); this.state = 25; this._errHandler.sync(this); _la = this._input.LA(1); } this.state = 26; this.match(CustomMetricParser.R_PARANT); break; default: throw new antlr4__default.error.NoViableAltException(this); } this._ctx.stop = this._input.LT(-1); this.state = 43; this._errHandler.sync(this); var _alt = this._interp.adaptivePredict(this._input, 4, this._ctx); while (_alt != 2 && _alt != antlr4__default.atn.ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { if (this._parseListeners !== null) { this.triggerExitRuleEvent(); } _prevctx = localctx; this.state = 41; this._errHandler.sync(this); var la_ = this._interp.adaptivePredict(this._input, 3, this._ctx); switch (la_) { case 1: localctx = new AdditionContext(this, new ExpressionContext(this, _parentctx, _parentState)); localctx.left = _prevctx; this.pushNewRecursionContext(localctx, _startState, CustomMetricParser.RULE_expression); this.state = 29; if (!this.precpred(this._ctx, 8)) { throw new antlr4__default.error.FailedPredicateException(this, "this.precpred(this._ctx, 8)"); } this.state = 30; this.match(CustomMetricParser.ADD); this.state = 31; localctx.right = this.expression(9); break; case 2: localctx = new SubtractionContext(this, new ExpressionContext(this, _parentctx, _parentState)); localctx.left = _prevctx; this.pushNewRecursionContext(localctx, _startState, CustomMetricParser.RULE_expression); this.state = 32; if (!this.precpred(this._ctx, 7)) { throw new antlr4__default.error.FailedPredicateException(this, "this.precpred(this._ctx, 7)"); } this.state = 33; this.match(CustomMetricParser.SUBTRACT); this.state = 34; localctx.right = this.expression(8); break; case 3: localctx = new MultiplicationContext(this, new ExpressionContext(this, _parentctx, _parentState)); localctx.left = _prevctx; this.pushNewRecursionContext(localctx, _startState, CustomMetricParser.RULE_expression); this.state = 35; if (!this.precpred(this._ctx, 6)) { throw new antlr4__default.error.FailedPredicateException(this, "this.precpred(this._ctx, 6)"); } this.state = 36; this.match(CustomMetricParser.MULTIPLY); this.state = 37; localctx.right = this.expression(7); break; case 4: localctx = new DivisionContext(this, new ExpressionContext(this, _parentctx, _parentState)); localctx.left = _prevctx; this.pushNewRecursionContext(localctx, _startState, CustomMetricParser.RULE_expression); this.state = 38; if (!this.precpred(this._ctx, 5)) { throw new antlr4__default.error.FailedPredicateException(this, "this.precpred(this._ctx, 5)"); } this.state = 39; this.match(CustomMetricParser.DIVIDE); this.state = 40; localctx.right = this.expression(6); break; } } this.state = 45; this._errHandler.sync(this); _alt = this._interp.adaptivePredict(this._input, 4, this._ctx); } } catch (error) { if (error instanceof antlr4__default.error.RecognitionException) { localctx.exception = error; this._errHandler.reportError(this, error); this._errHandler.recover(this, error); } else { throw error; } } finally { this.unrollRecursionContexts(_parentctx); } return localctx; } } CustomMetricParser.EOF = antlr4__default.Token.EOF; CustomMetricParser.T__0 = 1; CustomMetricParser.NUMBER = 2; CustomMetricParser.STRING = 3; CustomMetricParser.FN = 4; CustomMetricParser.WHITESPACE = 5; CustomMetricParser.ADD = 6; CustomMetricParser.SUBTRACT = 7; CustomMetricParser.MULTIPLY = 8; CustomMetricParser.DIVIDE = 9; CustomMetricParser.DIGIT = 10; CustomMetricParser.DOT = 11; CustomMetricParser.L_PARANT = 12; CustomMetricParser.R_PARANT = 13; CustomMetricParser.PLUS = 14; CustomMetricParser.MINUS = 15; CustomMetricParser.STAR = 16; CustomMetricParser.SLASH = 17; CustomMetricParser.DQUOTE = 18; CustomMetricParser.SPACE = 19; CustomMetricParser.TAB = 20; CustomMetricParser.CR = 21; CustomMetricParser.LF = 22; CustomMetricParser.ANY = 23; CustomMetricParser.RULE_all = 0; CustomMetricParser.RULE_expression = 1; let AllContext$2 = class AllContext extends antlr4__default.ParserRuleContext { constructor(parser, parent, invokingState) { if (parent === void 0) { parent = null; } if (invokingState === void 0 || invokingState === null) { invokingState = -1; } super(parent, invokingState); this.parser = parser; this.ruleIndex = CustomMetricParser.RULE_all; } expression() { return this.getTypedRuleContext(ExpressionContext, 0); } EOF() { return this.getToken(CustomMetricParser.EOF, 0); } enterRule(listener) { if (listener instanceof CustomMetricListener) { listener.enterAll(this); } } exitRule(listener) { if (listener instanceof CustomMetricListener) { listener.exitAll(this); } } accept(visitor) { if (visitor instanceof CustomMetricVisitor) { return visitor.visitAll(this); } else { return visitor.visitChildren(this); } } }; class ExpressionContext extends antlr4__default.ParserRuleContext { constructor(parser, parent, invokingState) { if (parent === void 0) { parent = null; } if (invokingState === void 0 || invokingState === null) { invokingState = -1; } super(parent, invokingState); this.parser = parser; this.ruleIndex = CustomMetricParser.RULE_expression; } copyFrom(ctx) { super.copyFrom(ctx); } } class FunctionContext extends ExpressionContext { constructor(parser, ctx) { super(parser); super.copyFrom(ctx); } FN() { return this.getToken(CustomMetricParser.FN, 0); } L_PARANT() { return this.getToken(CustomMetricParser.L_PARANT, 0); } R_PARANT() { return this.getToken(CustomMetricParser.R_PARANT, 0); } expression = function(i) { if (i === void 0) { i = null; } if (i === null) { return this.getTypedRuleContexts(ExpressionContext); } else { return this.getTypedRuleContext(ExpressionContext, i); } }; enterRule(listener) { if (listener instanceof CustomMetricListener) { listener.enterFunction(this); } } exitRule(listener) { if (listener instanceof CustomMetricListener) { listener.exitFunction(this); } } accept(visitor) { if (visitor instanceof CustomMetricVisitor) { return visitor.visitFunction(this); } else { return visitor.visitChildren(this); } } } CustomMetricParser.FunctionContext = FunctionContext; class AdditionContext extends ExpressionContext { constructor(parser, ctx) { super(parser); this.left = null; this.right = null; super.copyFrom(ctx); } ADD() { return this.getToken(CustomMetricParser.ADD, 0); } expression = function(i) { if (i === void 0) { i = null; } if (i === null) { return this.getTypedRuleContexts(ExpressionContext); } else { return this.getTypedRuleContext(ExpressionContext, i); } }; enterRule(listener) { if (listener instanceof CustomMetricListener) { listener.enterAddition(this); } } exitRule(listener) { if (listener instanceof CustomMetricListener) { listener.exitAddition(this); } } accept(visitor) { if (visitor instanceof CustomMetricVisitor) { return visitor.visitAddition(this); } else { return visitor.visitChildren(this); } } } CustomMetricParser.AdditionContext = AdditionContext; class MultiplicationContext extends ExpressionContext { constructor(parser, ctx) { super(parser); this.left = null; this.right = null; super.copyFrom(ctx); } MULTIPLY() { return this.getToken(CustomMetricParser.MULTIPLY, 0); } expression = function(i) { if (i === void 0) { i = null; } if (i === null) { return this.getTypedRuleContexts(ExpressionContext); } else { return this.getTypedRuleContext(ExpressionContext, i); } }; enterRule(listener) { if (listener instanceof CustomMetricListener) { listener.enterMultiplication(this); } } exitRule(listener) { if (listener instanceof CustomMetricListener) { listener.exitMultiplication(this); } } accept(visitor) { if (visitor instanceof CustomMetricVisitor) { return visitor.visitMultiplication(this); } else { return visitor.visitChildren(this); } } } CustomMetricParser.MultiplicationContext = MultiplicationContext; class SubtractionContext extends ExpressionContext { constructor(parser, ctx) { super(parser); this.left = null; this.right = null; super.copyFrom(ctx); } SUBTRACT() { return this.getToken(CustomMetricParser.SUBTRACT, 0); } expression = function(i) { if (i === void 0) { i = null; } if (i === null) { return this.getTypedRuleContexts(ExpressionContext); } else { return this.getTypedRuleContext(ExpressionContext, i); } }; enterRule(listener) { if (listener instanceof CustomMetricListener) { listener.enterSubtraction(this); } } exitRule(listener) { if (listener instanceof CustomMetricListener) { listener.exitSubtraction(this); } } accept(visitor) { if (visitor instanceof CustomMetricVisitor) { return visitor.visitSubtraction(this); } else { return visitor.visitChildren(this); } } } CustomMetricParser.SubtractionContext = SubtractionContext; class NumberContext extends ExpressionContext { constructor(parser, ctx) { super(parser); super.copyFrom(ctx); } NUMBER() { return this.getToken(CustomMetricParser.NUMBER, 0); } enterRule(listener) { if (listener instanceof CustomMetricListener) { listener.enterNumber(this); } } exitRule(listener) { if (listener instanceof CustomMetricListener) { listener.exitNumber(this); } } accept(visitor) { if (visitor instanceof CustomMetricVisitor) { return visitor.visitNumber(this); } else { return visitor.visitChildren(this); } } } CustomMetricParser.NumberContext = NumberContext; class WrappedExpressionContext extends ExpressionContext { constructor(parser, ctx) { super(parser); super.copyFrom(ctx); } L_PARANT() { return this.getToken(CustomMetricParser.L_PARANT, 0); } expression() { return this.getTypedRuleContext(ExpressionContext, 0); } R_PARANT() { return this.getToken(CustomMetricParser.R_PARANT, 0); } enterRule(listener) { if (listener instanceof CustomMetricListener) { listener.enterWrappedExpression(this); } } exitRule(listener) { if (listener instanceof CustomMetricListener) { listener.exitWrappedExpression(this); } } accept(visitor) { if (visitor instanceof CustomMetricVisitor) { return visitor.visitWrappedExpression(this); } else { return visitor.visitChildren(this); } } } CustomMetricParser.WrappedExpressionContext = WrappedExpressionContext; class DivisionContext extends ExpressionContext { constructor(parser, ctx) { super(parser); this.left = null; this.right = null; super.copyFrom(ctx); } DIVIDE() { return this.getToken(CustomMetricParser.DIVIDE, 0); } expression = function(i) { if (i === void 0) { i = null; } if (i === null) { return this.getTypedRuleContexts(ExpressionContext); } else { return this.getTypedRuleContext(ExpressionContext, i); } }; enterRule(listener) { if (listener instanceof CustomMetricListener) { listener.enterDivision(this); } } exitRule(listener) { if (listener instanceof CustomMetricListener) { listener.exitDivision(this); } } accept(visitor) { if (visitor instanceof CustomMetricVisitor) { return visitor.visitDivision(this); } else { return visitor.visitChildren(this); } } } CustomMetricParser.DivisionContext = DivisionContext; class StringContext extends ExpressionContext { constructor(parser, ctx) { super(parser); super.copyFrom(ctx); } STRING() { return this.getToken(CustomMetricParser.STRING, 0); } enterRule(listener) { if (listener instanceof CustomMetricListener) { listener.enterString(this); } } exitRule(listener) { if (listener instanceof CustomMetricListener) { listener.exitString(this); } } accept(visitor) { if (visitor instanceof CustomMetricVisitor) { return visitor.visitString(this); } else { return visitor.visitChildren(this); } } } CustomMetricParser.StringContext = StringContext; CustomMetricParser.AllContext = AllContext$2; CustomMetricParser.ExpressionContext = ExpressionContext; const serializedATN$4 = [ 4, 0, 23, 124, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 1, 0, 1, 0, 1, 1, 3, 1, 51, 8, 1, 1, 1, 4, 1, 54, 8, 1, 11, 1, 12, 1, 55, 1, 1, 1, 1, 4, 1, 60, 8, 1, 11, 1, 12, 1, 61, 3, 1, 64, 8, 1, 1, 2, 1, 2, 4, 2, 68, 8, 2, 11, 2, 12, 2, 69, 1, 2, 1, 2, 1, 3, 4, 3, 75, 8, 3, 11, 3, 12, 3, 76, 1, 4, 1, 4, 1, 4, 1, 4, 4, 4, 83, 8, 4, 11, 4, 12, 4, 84, 1, 4, 1, 4, 1, 5, 1, 5, 1, 6, 1, 6, 1, 7, 1, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 11, 1, 11, 1, 12, 1, 12, 1, 13, 1, 13, 1, 14, 1, 14, 1, 15, 1, 15, 1, 16, 1, 16, 1, 17, 1, 17, 1, 18, 1, 18, 1, 19, 1, 19, 1, 20, 1, 20, 1, 21, 1, 21, 1, 22, 1, 22, 1, 69, 0, 23, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, 35, 18, 37, 19, 39, 20, 41, 21, 43, 22, 45, 23, 1, 0, 5, 2, 0, 65, 90, 97, 122, 1, 0, 48, 57, 1, 0, 9, 9, 1, 0, 13, 13, 1, 0, 10, 10, 133, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 1, 47, 1, 0, 0, 0, 3, 50, 1, 0, 0, 0, 5, 65, 1, 0, 0, 0, 7, 74, 1, 0, 0, 0, 9, 82, 1, 0, 0, 0, 11, 88, 1, 0, 0, 0, 13, 90, 1, 0, 0, 0, 15, 92, 1, 0, 0, 0, 17, 94, 1, 0, 0, 0, 19, 96, 1, 0, 0, 0, 21, 98, 1, 0, 0, 0, 23, 100, 1, 0, 0, 0, 25, 102, 1, 0, 0, 0, 27, 104, 1, 0, 0, 0, 29, 106, 1, 0, 0, 0, 31, 108, 1, 0, 0, 0, 33, 110, 1, 0, 0, 0, 35, 112, 1, 0, 0, 0, 37, 114, 1, 0, 0, 0, 39, 116, 1, 0, 0, 0, 41, 118, 1, 0, 0, 0, 43, 120, 1, 0, 0, 0, 45, 122, 1, 0, 0, 0, 47, 48, 5, 44, 0, 0, 48, 2, 1, 0, 0, 0, 49, 51, 3, 29, 14, 0, 50, 49, 1, 0, 0, 0, 50, 51, 1, 0, 0, 0, 51, 53, 1, 0, 0, 0, 52, 54, 3, 19, 9, 0, 53, 52, 1, 0, 0, 0, 54, 55, 1, 0, 0, 0, 55, 53, 1, 0, 0, 0, 55, 56, 1, 0, 0, 0, 56, 63, 1, 0, 0, 0, 57, 59, 3, 21, 10, 0, 58, 60, 3, 19, 9, 0, 59, 58, 1, 0, 0, 0, 60, 61, 1, 0, 0, 0, 61, 59, 1, 0, 0, 0, 61, 62, 1, 0, 0, 0, 62, 64, 1, 0, 0, 0, 63, 57, 1, 0, 0, 0, 63, 64, 1, 0, 0, 0, 64, 4, 1, 0, 0, 0, 65, 67, 3, 35, 17, 0, 66, 68, 3, 45, 22, 0, 67, 66, 1, 0, 0, 0, 68, 69, 1, 0, 0, 0, 69, 70, 1, 0, 0, 0, 69, 67, 1, 0, 0, 0, 70, 71, 1, 0, 0, 0, 71, 72, 3, 35, 17, 0, 72, 6, 1, 0, 0, 0, 73, 75, 7, 0, 0, 0, 74, 73, 1, 0, 0, 0, 75, 76, 1, 0, 0, 0, 76, 74, 1, 0, 0, 0, 76, 77, 1, 0, 0, 0, 77, 8, 1, 0, 0, 0, 78, 83, 3, 37, 18, 0, 79, 83, 3, 39, 19, 0, 80, 83, 3, 41, 20, 0, 81, 83, 3, 43, 21, 0, 82, 78, 1, 0, 0, 0, 82, 79, 1, 0, 0, 0, 82, 80, 1, 0, 0, 0, 82, 81, 1, 0, 0, 0, 83, 84, 1, 0, 0, 0, 84, 82, 1, 0, 0, 0, 84, 85, 1, 0, 0, 0, 85, 86, 1, 0, 0, 0, 86, 87, 6, 4, 0, 0, 87, 10, 1, 0, 0, 0, 88, 89, 3, 27, 13, 0, 89, 12, 1, 0, 0, 0, 90, 91, 3, 29, 14, 0, 91, 14, 1, 0, 0, 0, 92, 93, 3, 31, 15, 0, 93, 16, 1, 0, 0, 0, 94, 95, 3, 33, 16, 0, 95, 18, 1, 0, 0, 0, 96, 97, 7, 1, 0, 0, 97, 20, 1, 0, 0, 0, 98, 99, 5, 46, 0, 0, 99, 22, 1, 0, 0, 0, 100, 101, 5, 40, 0, 0, 101, 24, 1, 0, 0, 0, 102, 103, 5, 41, 0, 0, 103, 26, 1, 0, 0, 0, 104, 105, 5, 43, 0, 0, 105, 28, 1, 0, 0, 0, 106, 107, 5, 45, 0, 0, 107, 30, 1, 0, 0, 0, 108, 109, 5, 42, 0, 0, 109, 32, 1, 0, 0, 0, 110, 111, 5, 47, 0, 0, 111, 34, 1, 0, 0, 0, 112, 113, 5, 34, 0, 0, 113, 36, 1, 0, 0, 0, 114, 115, 5, 32, 0, 0, 115, 38, 1, 0, 0, 0, 116, 117, 7, 2, 0, 0, 117, 40, 1, 0, 0, 0, 118, 119, 7, 3, 0, 0, 119, 42, 1, 0, 0, 0, 120, 121, 7, 4, 0, 0, 121, 44, 1, 0, 0, 0, 122, 123, 9, 0, 0, 0, 123, 46, 1, 0, 0, 0, 9, 0, 50, 55, 61, 63, 69, 76, 82, 84, 1, 6, 0, 0 ]; const atn$4 = new antlr4__default.atn.ATNDeserializer().deserialize(serializedATN$4); const decisionsToDFA$4 = atn$4.decisionToState.map((ds, index) => new antlr4__default.dfa.DFA(ds, index)); class CustomMetricLexer extends antlr4__default.Lexer { static grammarFileName = "CustomMetric.g4"; static channelNames = ["DEFAULT_TOKEN_CHANNEL", "HIDDEN"]; static modeNames = ["DEFAULT_MODE"]; static literalNames = [ null, "','", null, null, null, null, null, null, null, null, null, "'.'", "'('", "')'", "'+'", "'-'", "'*'", "'/'", `'"'`, "' '" ]; static symbolicNames = [ null, null, "NUMBER", "STRING", "FN", "WHITESPACE", "ADD", "SUBTRACT", "MULTIPLY", "DIVIDE", "DIGIT", "DOT", "L_PARANT", "R_PARANT", "PLUS", "MINUS", "STAR", "SLASH", "DQUOTE", "SPACE", "TAB", "CR", "LF", "ANY" ]; static ruleNames = [ "T__0", "NUMBER", "STRING", "FN", "WHITESPACE", "ADD", "SUBTRACT", "MULTIPLY", "DIVIDE", "DIGIT", "DOT", "L_PARANT", "R_PARANT", "PLUS", "MINUS", "STAR", "SLASH", "DQUOTE", "SPACE", "TAB", "CR", "LF", "ANY" ]; constructor(input) { super(input); this._interp = new antlr4__default.atn.LexerATNSimulator(this, atn$4, decisionsToDFA$4, new antlr4__default.atn.PredictionContextCache()); } } CustomMetricLexer.EOF = antlr4__default.Token.EOF; CustomMetricLexer.T__0 = 1; CustomMetricLexer.NUMBER = 2; CustomMetricLexer.STRING = 3; CustomMetricLexer.FN = 4; CustomMetricLexer.WHITESPACE = 5; CustomMetricLexer.ADD = 6; CustomMetricLexer.SUBTRACT = 7; CustomMetricLexer.MULTIPLY = 8; CustomMetricLexer.DIVIDE = 9; CustomMetricLexer.DIGIT = 10; CustomMetricLexer.DOT = 11; CustomMetricLexer.L_PARANT = 12; CustomMetricLexer.R_PARANT = 13; CustomMetricLexer.PLUS = 14; CustomMetricLexer.MINUS = 15; CustomMetricLexer.STAR = 16; CustomMetricLexer.SLASH = 17; CustomMetricLexer.DQUOTE = 18; CustomMetricLexer.SPACE = 19; CustomMetricLexer.TAB = 20; CustomMetricLexer.CR = 21; CustomMetricLexer.LF = 22; CustomMetricLexer.ANY = 23; const serializedATN$3 = [ 4, 0, 5, 33, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 4, 2, 17, 8, 2, 11, 2, 12, 2, 18, 1, 3, 1, 3, 1, 3, 1, 3, 5, 3, 25, 8, 3, 10, 3, 12, 3, 28, 9, 3, 1, 3, 1, 3, 1, 4, 1, 4, 0, 0, 5, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 1, 0, 3, 4, 0, 10, 10, 13, 13, 44, 44, 59, 59, 1, 0, 34, 34, 2, 0, 44, 44, 59, 59, 35, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 1, 11, 1, 0, 0, 0, 3, 13, 1, 0, 0, 0, 5, 16, 1, 0, 0, 0, 7, 20, 1, 0, 0, 0, 9, 31, 1, 0, 0, 0, 11, 12, 5, 13, 0, 0, 12, 2, 1, 0, 0, 0, 13, 14, 5, 10, 0, 0, 14, 4, 1, 0, 0, 0, 15, 17, 8, 0, 0, 0, 16, 15, 1, 0, 0, 0, 17, 18, 1, 0, 0, 0, 18, 16, 1, 0, 0, 0, 18, 19, 1, 0, 0, 0, 19, 6, 1, 0, 0, 0, 20, 26, 5, 34, 0, 0, 21, 22, 5, 34, 0, 0, 22, 25, 5, 34, 0, 0, 23, 25, 8, 1, 0, 0, 24, 21, 1, 0, 0, 0, 24, 23, 1, 0, 0, 0, 25, 28, 1, 0, 0, 0, 26, 24, 1, 0, 0, 0, 26, 27, 1, 0, 0, 0, 27, 29, 1, 0, 0, 0, 28, 26, 1, 0, 0, 0, 29, 30, 5, 34, 0, 0, 30, 8, 1, 0, 0, 0, 31, 32, 7, 2, 0, 0, 32, 10, 1, 0, 0, 0, 4, 0, 18, 24, 26, 0 ]; const atn$3 = new antlr4__default.atn.ATNDeserializer().deserialize(serializedATN$3); const decisionsToDFA$3 = atn$3.decisionToState.map((ds, index) => new antlr4__default.dfa.DFA(ds, index)); class CSVLexer extends antlr4__default.Lexer { static grammarFileName = "CSV.g4"; static channelNames = ["DEFAULT_TOKEN_CHANNEL", "HIDDEN"]; static modeNames = ["DEFAULT_MODE"]; static literalNames = [null, "'\\r'", "'\\n'"]; static symbolicNames = [null, null, null, "UNQUOTED", "QUOTED", "DELIMITER"]; static ruleNames = ["T__0", "T__1", "UNQUOTED", "QUOTED", "DELIMITER"]; constructor(input) { super(input); this._interp = new antlr4__default.atn.LexerATNSimulator(this, atn$3, decisionsToDFA$3, new antlr4__default.atn.PredictionContextCache()); } } CSVLexer.EOF = antlr4__default.Token.EOF; CSVLexer.T__0 = 1; CSVLexer.T__1 = 2; CSVLexer.UNQUOTED = 3; CSVLexer.QUOTED = 4; CSVLexer.DELIMITER = 5; class CSVListener extends antlr4__default.tree.ParseTreeListener { // Enter a parse tree produced by CSVParser#all. enterAll(ctx) { } // Exit a parse tree produced by CSVParser#all. exitAll(ctx) { } // Enter a parse tree produced by CSVParser#headers. enterHeaders(ctx) { } // Exit a parse tree produced by CSVParser#headers. exitHeaders(ctx) { } // Enter a parse tree produced by CSVParser#line. enterLine(ctx) { } // Exit a parse tree produced by CSVParser#line. exitLine(ctx) { } // Enter a parse tree produced by CSVParser#column. enterColumn(ctx) { } // Exit a parse tree produced by CSVParser#column. exitColumn(ctx) { } } class CSVVisitor extends antlr4__default.tree.ParseTreeVisitor { // Visit a parse tree produced by CSVParser#all. visitAll(ctx) { return this.visitChildren(ctx); } // Visit a parse tree produced by CSVParser#headers. visitHeaders(ctx) { return this.visitChildren(ctx); } // Visit a parse tree produced by CSVParser#line. visitLine(ctx) { return this.visitChildren(ctx); } // Visit a parse tree produced by CSVParser#column. visitColumn(ctx) { return this.visitChildren(ctx); } } const serializedATN$2 = [ 4, 1, 5, 37, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 1, 0, 1, 0, 3, 0, 11, 8, 0, 1, 0, 1, 0, 5, 0, 15, 8, 0, 10, 0, 12, 0, 18, 9, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 5, 2, 27, 8, 2, 10, 2, 12, 2, 30, 9, 2, 1, 3, 1, 3, 1, 3, 3, 3, 35, 8, 3, 1, 3, 0, 0, 4, 0, 2, 4, 6, 0, 0, 37, 0, 8, 1, 0, 0, 0, 2, 21, 1, 0, 0, 0, 4, 23, 1, 0, 0, 0, 6, 34, 1, 0, 0, 0, 8, 16, 3, 2, 1, 0, 9, 11, 5, 1, 0, 0, 10, 9, 1, 0, 0, 0, 10, 11, 1, 0, 0, 0, 11, 12, 1, 0, 0, 0, 12, 13, 5, 2, 0, 0, 13, 15, 3, 4, 2, 0, 14, 10, 1, 0, 0, 0, 15, 18, 1, 0, 0, 0, 16, 14, 1, 0, 0, 0, 16, 17, 1, 0, 0, 0, 17, 19, 1, 0, 0, 0, 18, 16, 1, 0, 0, 0, 19, 20, 5, 0, 0, 1, 20, 1, 1, 0, 0, 0, 21, 22, 3, 4, 2, 0, 22, 3, 1, 0, 0, 0, 23, 28, 3, 6, 3, 0, 24, 25, 5, 5, 0, 0, 25, 27, 3, 6, 3, 0, 26, 24, 1, 0, 0, 0, 27, 30, 1, 0, 0, 0, 28, 26, 1, 0, 0, 0, 28, 29, 1, 0, 0, 0, 29, 5, 1, 0, 0, 0, 30, 28, 1, 0, 0, 0, 31, 35, 5, 3, 0, 0, 32, 35, 5, 4, 0, 0, 33, 35, 1, 0, 0, 0, 34, 31, 1, 0, 0, 0, 34, 32, 1, 0, 0, 0, 34, 33, 1, 0, 0, 0, 35, 7, 1, 0, 0, 0, 4, 10, 16, 28, 34 ]; const atn$2 = new antlr4__default.atn.ATNDeserializer().deserialize(serializedATN$2); const decisionsToDFA$2 = atn$2.decisionToState.map((ds, index) => new antlr4__default.dfa.DFA(ds, index)); const sharedContextCache$1 = new antlr4__default.atn.PredictionContextCache(); class CSVParser extends antlr4__default.Parser { static grammarFileName = "CSV.g4"; static literalNames = [null, "'\\r'", "'\\n'"]; static symbolicNames = [null, null, null, "UNQUOTED", "QUOTED", "DELIMITER"]; static ruleNames = ["all", "headers", "line", "column"]; constructor(input) { super(input); this._interp = new antlr4__default.atn.ParserATNSimulator(this, atn$2, decisionsToDFA$2, sharedContextCache$1); this.ruleNames = CSVParser.ruleNames; this.literalNames = CSVParser.literalNames; this.symbolicNames = CSVParser.symbolicNames; } all() { let localctx = new AllContext$1(this, this._ctx, this.state); this.enterRule(localctx, 0, CSVParser.RULE_all); var _la = 0; try { this.enterOuterAlt(localctx, 1); this.state = 8; this.headers(); this.state = 16; this._errHandler.sync(this); _la = this._input.LA(1); while (_la === 1 || _la === 2) { this.state = 10; this._errHandler.sync(this); _la = this._input.LA(1); if (_la === 1) { this.state = 9; this.match(CSVParser.T__0); } this.state = 12; this.match(CSVParser.T__1); this.state = 13; this.line(); this.state = 18; this._errHandler.sync(this); _la = this._input.LA(1); } this.state = 19; this.match(CSVParser.EOF); } catch (re) { if (re instanceof antlr4__default.error.RecognitionException) { localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { throw re; } } finally { this.exitRule(); } return localctx; } headers() { let localctx = new HeadersContext(this, this._ctx, this.state); this.enterRule(localctx, 2, CSVParser.RULE_headers); try { this.enterOuterAlt(localctx, 1); this.state = 21; this.line(); } catch (re) { if (re instanceof antlr4__default.error.RecognitionException) { localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { throw re; } } finally { this.exitRule(); } return localctx; } line() { let localctx = new LineContext$1(this, this._ctx, this.state); this.enterRule(localctx, 4, CSVParser.RULE_line); var _la = 0; try { this.enterOuterAlt(localctx, 1); this.state = 23; this.column(); this.state = 28; this._errHandler.sync(this); _la = this._input.LA(1); while (_la === 5) { this.state = 24; this.match(CSVParser.DELIMITER); this.state = 25; this.column(); this.state = 30; this._errHandler.sync(this); _la = this._input.LA(1); } } catch (re) { if (re instanceof antlr4__default.error.RecognitionException) { localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { throw re; } } finally { this.exitRule(); } return localctx; } column() { let localctx = new ColumnContext(this, this._ctx, this.state); this.enterRule(localctx, 6, CSVParser.RULE_column); try { this.state = 34; this._errHandler.sync(this); switch (this._input.LA(1)) { case 3: this.enterOuterAlt(localctx, 1); this.state = 31; this.match(CSVParser.UNQUOTED); break; case 4: this.enterOuterAlt(localctx, 2); this.state = 32; this.match(CSVParser.QUOTED); break; case -1: case 1: case 2: case 5: this.enterOuterAlt(localctx, 3); break; default: throw new antlr4__default.error.NoViableAltException(this); } } catch (re) { if (re instanceof antlr4__default.error.RecognitionException) { localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { throw re; } } finally { this.exitRule(); } return localctx; } } CSVParser.EOF = antlr4__default.Token.EOF; CSVParser.T__0 = 1; CSVParser.T__1 = 2; CSVParser.UNQUOTED = 3; CSVParser.QUOTED = 4; CSVParser.DELIMITER = 5; CSVParser.RULE_all = 0; CSVParser.RULE_headers = 1; CSVParser.RULE_line = 2; CSVParser.RULE_column = 3; let AllContext$1 = class AllContext extends antlr4__default.ParserRuleContext { constructor(parser, parent, invokingState) { if (parent === void 0) { parent = null; } if (invokingState === void 0 || invokingState === null) { invokingState = -1; } super(parent, invokingState); this.parser = parser; this.ruleIndex = CSVParser.RULE_all; } headers() { return this.getTypedRuleContext(HeadersContext, 0); } EOF() { return this.getToken(CSVParser.EOF, 0); } line = function(i) { if (i === void 0) { i = null; } if (i === null) { return this.getTypedRuleContexts(LineContext$1); } else { return this.getTypedRuleContext(LineContext$1, i); } }; enterRule(listener) { if (listener instanceof CSVListener) { listener.enterAll(this); } } exitRule(listener) { if (listener instanceof CSVListener) { listener.exitAll(this); } } accept(visitor) { if (visitor instanceof CSVVisitor) { return visitor.visitAll(this); } else { return visitor.visitChildren(this); } } }; class HeadersContext extends antlr4__default.ParserRuleContext { constructor(parser, parent, invokingState) { if (parent === void 0) { parent = null; } if (invokingState === void 0 || invokingState === null) { invokingState = -1; } super(parent, invokingState); this.parser = parser; this.ruleIndex = CSVParser.RULE_headers; } line() { return this.getTypedRuleContext(LineContext$1, 0); } enterRule(listener) { if (listener instanceof CSVListener) { listener.enterHeaders(this); } } exitRule(listener) { if (listener instanceof CSVListener) { listener.exitHeaders(this); } } accept(visitor) { if (visitor instanceof CSVVisitor) { return visitor.visitHeaders(this); } else { return visitor.visitChildren(this); } } } let LineContext$1 = class LineContext extends antlr4__default.ParserRuleContext { constructor(parser, parent, invokingState) { if (parent === void 0) { parent = null; } if (invokingState === void 0 || invokingState === null) { invokingState = -1; } super(parent, invokingState); this.parser = parser; this.ruleIndex = CSVParser.RULE_line; } column = function(i) { if (i === void 0) { i = null; } if (i === null) { return this.getTypedRuleContexts(ColumnContext); } else { return this.getTypedRuleContext(ColumnContext, i); } }; DELIMITER = function(i) { if (i === void 0) { i = null; } if (i === null) { return this.getTokens(CSVParser.DELIMITER); } else { return this.getToken(CSVParser.DELIMITER, i); } }; enterRule(listener) { if (listener instanceof CSVListener) { listener.enterLine(this); } } exitRule(listener) { if (listener instanceof CSVListener) { listener.exitLine(this); } } accept(visitor) { if (visitor instanceof CSVVisitor) { return visitor.visitLine(this); } else { return visitor.visitChildren(this); } } }; class ColumnContext extends antlr4__default.ParserRuleContext { constructor(parser, parent, invokingState) { if (parent === void 0) { parent = null; } if (invokingState === void 0 || invokingState === null) { invokingState = -1; } super(parent, invokingState); this.parser = parser; this.ruleIndex = CSVParser.RULE_column; } UNQUOTED() { return this.getToken(CSVParser.UNQUOTED, 0); } QUOTED() { return this.getToken(CSVParser.QUOTED, 0); } enterRule(listener) { if (listener instanceof CSVListener) { listener.enterColumn(this); } } exitRule(listener) { if (listener instanceof CSVListener) { listener.exitColumn(this); } } accept(visitor) { if (visitor instanceof CSVVisitor) { return visitor.visitColumn(this); } else { return visitor.visitChildren(this); } } } CSVParser.AllContext = AllContext$1; CSVParser.HeadersContext = HeadersContext; CSVParser.LineContext = LineContext$1; CSVParser.ColumnContext = ColumnContext; const serializedATN$1 = [ 4, 0, 9, 67, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 5, 4, 5, 31, 8, 5, 11, 5, 12, 5, 32, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 5, 6, 45, 8, 6, 10, 6, 12, 6, 48, 9, 6, 1, 6, 1, 6, 1, 7, 4, 7, 53, 8, 7, 11, 7, 12, 7, 54, 1, 7, 1, 7, 1, 8, 1, 8, 5, 8, 61, 8, 8, 10, 8, 12, 8, 64, 9, 8, 1, 8, 1, 8, 0, 0, 9, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 1, 0, 3, 8, 0, 10, 10, 13, 13, 32, 32, 34, 34, 44, 44, 61, 61, 123, 123, 125, 125, 4, 0, 10, 10, 13, 13, 34, 34, 92, 92, 2, 0, 10, 10, 13, 13, 74, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 1, 19, 1, 0, 0, 0, 3, 21, 1, 0, 0, 0, 5, 23, 1, 0, 0, 0, 7, 25, 1, 0, 0, 0, 9, 27, 1, 0, 0, 0, 11, 30, 1, 0, 0, 0, 13, 34, 1, 0, 0, 0, 15, 52, 1, 0, 0, 0, 17, 58, 1, 0, 0, 0, 19, 20, 5, 32, 0, 0, 20, 2, 1, 0, 0, 0, 21, 22, 5, 123, 0, 0, 22, 4, 1, 0, 0, 0, 23, 24, 5, 125, 0, 0, 24, 6, 1, 0, 0, 0, 25, 26, 5, 44, 0, 0, 26, 8, 1, 0, 0, 0, 27, 28, 5, 61, 0, 0, 28, 10, 1, 0, 0, 0, 29, 31, 8, 0, 0, 0, 30, 29, 1, 0, 0, 0, 31, 32, 1, 0, 0, 0, 32, 30, 1, 0, 0, 0, 32, 33, 1, 0, 0, 0, 33, 12, 1, 0, 0, 0, 34, 46, 5, 34, 0, 0, 35, 36, 5, 92, 0, 0, 36, 45, 5, 34, 0, 0, 37, 38, 5, 92, 0, 0, 38, 45, 5, 114, 0, 0, 39, 40, 5, 92, 0, 0, 40, 45, 5, 110, 0, 0, 41, 42, 5, 92, 0, 0, 42, 45, 5, 92, 0, 0, 43, 45, 8, 1, 0, 0, 44, 35, 1, 0, 0, 0, 44, 37, 1, 0, 0, 0, 44, 39, 1, 0, 0, 0, 44, 41, 1, 0, 0, 0, 44, 43, 1, 0, 0, 0, 45, 48, 1, 0, 0, 0, 46, 44, 1, 0, 0, 0, 46, 47, 1, 0, 0, 0, 47, 49, 1, 0, 0, 0, 48, 46, 1, 0, 0, 0, 49, 50, 5, 34, 0, 0, 50, 14, 1, 0, 0, 0, 51, 53, 7, 2, 0, 0, 52, 51, 1, 0, 0, 0, 53, 54, 1, 0, 0, 0, 54, 52, 1, 0, 0, 0, 54, 55, 1, 0, 0, 0, 55, 56, 1, 0, 0, 0, 56, 57, 6, 7, 0, 0, 57, 1