time-to-botec

Benchmark sampling in different programming languages
Log | Files | Refs | README

peggyParser.js (197361B)


      1 import * as h from './peggyHelpers.js';
      2 function peg$subclass(child, parent) {
      3     function C() { this.constructor = child; }
      4     C.prototype = parent.prototype;
      5     child.prototype = new C();
      6 }
      7 function peg$SyntaxError(message, expected, found, location) {
      8     var self = Error.call(this, message);
      9     if (Object.setPrototypeOf) {
     10         Object.setPrototypeOf(self, peg$SyntaxError.prototype);
     11     }
     12     self.expected = expected;
     13     self.found = found;
     14     self.location = location;
     15     self.name = "SyntaxError";
     16     return self;
     17 }
     18 peg$subclass(peg$SyntaxError, Error);
     19 function peg$padEnd(str, targetLength, padString) {
     20     padString = padString || " ";
     21     if (str.length > targetLength) {
     22         return str;
     23     }
     24     targetLength -= str.length;
     25     padString += padString.repeat(targetLength);
     26     return str + padString.slice(0, targetLength);
     27 }
     28 peg$SyntaxError.prototype.format = function (sources) {
     29     var str = "Error: " + this.message;
     30     if (this.location) {
     31         var src = null;
     32         var k;
     33         for (k = 0; k < sources.length; k++) {
     34             if (sources[k].source === this.location.source) {
     35                 src = sources[k].text.split(/\r\n|\n|\r/g);
     36                 break;
     37             }
     38         }
     39         var s = this.location.start;
     40         var offset_s = (this.location.source && (typeof this.location.source.offset === "function"))
     41             ? this.location.source.offset(s)
     42             : s;
     43         var loc = this.location.source + ":" + offset_s.line + ":" + offset_s.column;
     44         if (src) {
     45             var e = this.location.end;
     46             var filler = peg$padEnd("", offset_s.line.toString().length, ' ');
     47             var line = src[s.line - 1];
     48             var last = s.line === e.line ? e.column : line.length + 1;
     49             var hatLen = (last - s.column) || 1;
     50             str += "\n --> " + loc + "\n"
     51                 + filler + " |\n"
     52                 + offset_s.line + " | " + line + "\n"
     53                 + filler + " | " + peg$padEnd("", s.column - 1, ' ')
     54                 + peg$padEnd("", hatLen, "^");
     55         }
     56         else {
     57             str += "\n at " + loc;
     58         }
     59     }
     60     return str;
     61 };
     62 peg$SyntaxError.buildMessage = function (expected, found) {
     63     var DESCRIBE_EXPECTATION_FNS = {
     64         literal: function (expectation) {
     65             return "\"" + literalEscape(expectation.text) + "\"";
     66         },
     67         class: function (expectation) {
     68             var escapedParts = expectation.parts.map(function (part) {
     69                 return Array.isArray(part)
     70                     ? classEscape(part[0]) + "-" + classEscape(part[1])
     71                     : classEscape(part);
     72             });
     73             return "[" + (expectation.inverted ? "^" : "") + escapedParts.join("") + "]";
     74         },
     75         any: function () {
     76             return "any character";
     77         },
     78         end: function () {
     79             return "end of input";
     80         },
     81         other: function (expectation) {
     82             return expectation.description;
     83         }
     84     };
     85     function hex(ch) {
     86         return ch.charCodeAt(0).toString(16).toUpperCase();
     87     }
     88     function literalEscape(s) {
     89         return s
     90             .replace(/\\/g, "\\\\")
     91             .replace(/"/g, "\\\"")
     92             .replace(/\0/g, "\\0")
     93             .replace(/\t/g, "\\t")
     94             .replace(/\n/g, "\\n")
     95             .replace(/\r/g, "\\r")
     96             .replace(/[\x00-\x0F]/g, function (ch) { return "\\x0" + hex(ch); })
     97             .replace(/[\x10-\x1F\x7F-\x9F]/g, function (ch) { return "\\x" + hex(ch); });
     98     }
     99     function classEscape(s) {
    100         return s
    101             .replace(/\\/g, "\\\\")
    102             .replace(/\]/g, "\\]")
    103             .replace(/\^/g, "\\^")
    104             .replace(/-/g, "\\-")
    105             .replace(/\0/g, "\\0")
    106             .replace(/\t/g, "\\t")
    107             .replace(/\n/g, "\\n")
    108             .replace(/\r/g, "\\r")
    109             .replace(/[\x00-\x0F]/g, function (ch) { return "\\x0" + hex(ch); })
    110             .replace(/[\x10-\x1F\x7F-\x9F]/g, function (ch) { return "\\x" + hex(ch); });
    111     }
    112     function describeExpectation(expectation) {
    113         return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation);
    114     }
    115     function describeExpected(expected) {
    116         var descriptions = expected.map(describeExpectation);
    117         var i, j;
    118         descriptions.sort();
    119         if (descriptions.length > 0) {
    120             for (i = 1, j = 1; i < descriptions.length; i++) {
    121                 if (descriptions[i - 1] !== descriptions[i]) {
    122                     descriptions[j] = descriptions[i];
    123                     j++;
    124                 }
    125             }
    126             descriptions.length = j;
    127         }
    128         switch (descriptions.length) {
    129             case 1:
    130                 return descriptions[0];
    131             case 2:
    132                 return descriptions[0] + " or " + descriptions[1];
    133             default:
    134                 return descriptions.slice(0, -1).join(", ")
    135                     + ", or "
    136                     + descriptions[descriptions.length - 1];
    137         }
    138     }
    139     function describeFound(found) {
    140         return found ? "\"" + literalEscape(found) + "\"" : "end of input";
    141     }
    142     return "Expected " + describeExpected(expected) + " but " + describeFound(found) + " found.";
    143 };
    144 function peg$parse(input, options) {
    145     options = options !== undefined ? options : {};
    146     var peg$FAILED = {};
    147     var peg$source = options.grammarSource;
    148     var peg$startRuleFunctions = { start: peg$parsestart };
    149     var peg$startRuleFunction = peg$parsestart;
    150     var peg$c0 = "import";
    151     var peg$c1 = "as";
    152     var peg$c2 = "{";
    153     var peg$c3 = "}";
    154     var peg$c4 = "call";
    155     var peg$c5 = "export";
    156     var peg$c6 = "(";
    157     var peg$c7 = ")";
    158     var peg$c8 = "=";
    159     var peg$c9 = ":";
    160     var peg$c10 = "if";
    161     var peg$c11 = "then";
    162     var peg$c12 = "else";
    163     var peg$c13 = "?";
    164     var peg$c14 = "||";
    165     var peg$c15 = "&&";
    166     var peg$c16 = "==";
    167     var peg$c17 = "!=";
    168     var peg$c18 = "<=";
    169     var peg$c19 = "<";
    170     var peg$c20 = ">=";
    171     var peg$c21 = ">";
    172     var peg$c22 = "to";
    173     var peg$c23 = "+";
    174     var peg$c24 = "-";
    175     var peg$c25 = ".+";
    176     var peg$c26 = ".-";
    177     var peg$c27 = "*";
    178     var peg$c28 = "/";
    179     var peg$c29 = ".*";
    180     var peg$c30 = "./";
    181     var peg$c31 = "^";
    182     var peg$c32 = ".^";
    183     var peg$c33 = "->";
    184     var peg$c34 = "!";
    185     var peg$c35 = "[";
    186     var peg$c36 = ".";
    187     var peg$c37 = "]";
    188     var peg$c38 = "()";
    189     var peg$c39 = "minutes";
    190     var peg$c40 = "hours";
    191     var peg$c41 = "days";
    192     var peg$c42 = "years";
    193     var peg$c43 = "n";
    194     var peg$c44 = "m";
    195     var peg$c45 = "k";
    196     var peg$c46 = "M";
    197     var peg$c47 = "B";
    198     var peg$c48 = "G";
    199     var peg$c49 = "T";
    200     var peg$c50 = "P";
    201     var peg$c51 = "%";
    202     var peg$c52 = "\\";
    203     var peg$c53 = "u";
    204     var peg$c54 = "'";
    205     var peg$c55 = "\"";
    206     var peg$c56 = "true";
    207     var peg$c57 = "false";
    208     var peg$c58 = "|";
    209     var peg$c59 = ";";
    210     var peg$c60 = ",";
    211     var peg$c61 = "//";
    212     var peg$c62 = "/*";
    213     var peg$c63 = "*/";
    214     var peg$r0 = /^[A-Z]/;
    215     var peg$r1 = /^[_a-z0-9]/i;
    216     var peg$r2 = /^[_a-z]/;
    217     var peg$r3 = /^[$_a-z]/;
    218     var peg$r4 = /^[$_a-z0-9]/i;
    219     var peg$r5 = /^[^u]/;
    220     var peg$r6 = /^[e]/i;
    221     var peg$r7 = /^[0-9]/;
    222     var peg$r8 = /^[a-z]/i;
    223     var peg$r9 = /^[_$]/;
    224     var peg$r10 = /^[\n\r]/;
    225     var peg$r11 = /^[^\r\n]/;
    226     var peg$r12 = /^[^*]/;
    227     var peg$r13 = /^[*]/;
    228     var peg$r14 = /^[^\/]/;
    229     var peg$r15 = /^[ \t]/;
    230     var peg$e0 = peg$literalExpectation("import", false);
    231     var peg$e1 = peg$literalExpectation("as", false);
    232     var peg$e2 = peg$literalExpectation("{", false);
    233     var peg$e3 = peg$literalExpectation("}", false);
    234     var peg$e4 = peg$literalExpectation("call", false);
    235     var peg$e5 = peg$literalExpectation("export", false);
    236     var peg$e6 = peg$literalExpectation("(", false);
    237     var peg$e7 = peg$literalExpectation(")", false);
    238     var peg$e8 = peg$otherExpectation("assignment");
    239     var peg$e9 = peg$literalExpectation("=", false);
    240     var peg$e10 = peg$literalExpectation(":", false);
    241     var peg$e11 = peg$literalExpectation("if", false);
    242     var peg$e12 = peg$literalExpectation("then", false);
    243     var peg$e13 = peg$literalExpectation("else", false);
    244     var peg$e14 = peg$literalExpectation("?", false);
    245     var peg$e15 = peg$otherExpectation("operator");
    246     var peg$e16 = peg$literalExpectation("||", false);
    247     var peg$e17 = peg$literalExpectation("&&", false);
    248     var peg$e18 = peg$literalExpectation("==", false);
    249     var peg$e19 = peg$literalExpectation("!=", false);
    250     var peg$e20 = peg$literalExpectation("<=", false);
    251     var peg$e21 = peg$literalExpectation("<", false);
    252     var peg$e22 = peg$literalExpectation(">=", false);
    253     var peg$e23 = peg$literalExpectation(">", false);
    254     var peg$e24 = peg$literalExpectation("to", false);
    255     var peg$e25 = peg$literalExpectation("+", false);
    256     var peg$e26 = peg$literalExpectation("-", false);
    257     var peg$e27 = peg$literalExpectation(".+", false);
    258     var peg$e28 = peg$literalExpectation(".-", false);
    259     var peg$e29 = peg$literalExpectation("*", false);
    260     var peg$e30 = peg$literalExpectation("/", false);
    261     var peg$e31 = peg$literalExpectation(".*", false);
    262     var peg$e32 = peg$literalExpectation("./", false);
    263     var peg$e33 = peg$literalExpectation("^", false);
    264     var peg$e34 = peg$literalExpectation(".^", false);
    265     var peg$e35 = peg$literalExpectation("->", false);
    266     var peg$e36 = peg$otherExpectation("unary operator");
    267     var peg$e37 = peg$literalExpectation("!", false);
    268     var peg$e38 = peg$literalExpectation("[", false);
    269     var peg$e39 = peg$literalExpectation(".", false);
    270     var peg$e40 = peg$literalExpectation("]", false);
    271     var peg$e41 = peg$otherExpectation("void");
    272     var peg$e42 = peg$literalExpectation("()", false);
    273     var peg$e43 = peg$otherExpectation("identifier");
    274     var peg$e44 = peg$classExpectation([["A", "Z"]], false, false);
    275     var peg$e45 = peg$classExpectation(["_", ["a", "z"], ["0", "9"]], false, true);
    276     var peg$e46 = peg$classExpectation(["_", ["a", "z"]], false, false);
    277     var peg$e47 = peg$literalExpectation("minutes", false);
    278     var peg$e48 = peg$literalExpectation("hours", false);
    279     var peg$e49 = peg$literalExpectation("days", false);
    280     var peg$e50 = peg$literalExpectation("years", false);
    281     var peg$e51 = peg$literalExpectation("n", false);
    282     var peg$e52 = peg$literalExpectation("m", false);
    283     var peg$e53 = peg$literalExpectation("k", false);
    284     var peg$e54 = peg$literalExpectation("M", false);
    285     var peg$e55 = peg$literalExpectation("B", false);
    286     var peg$e56 = peg$literalExpectation("G", false);
    287     var peg$e57 = peg$literalExpectation("T", false);
    288     var peg$e58 = peg$literalExpectation("P", false);
    289     var peg$e59 = peg$literalExpectation("%", false);
    290     var peg$e60 = peg$classExpectation(["$", "_", ["a", "z"]], false, false);
    291     var peg$e61 = peg$classExpectation(["$", "_", ["a", "z"], ["0", "9"]], false, true);
    292     var peg$e62 = peg$otherExpectation("escape sequence");
    293     var peg$e63 = peg$literalExpectation("\\", false);
    294     var peg$e64 = peg$classExpectation(["u"], true, false);
    295     var peg$e65 = peg$literalExpectation("u", false);
    296     var peg$e66 = peg$anyExpectation();
    297     var peg$e67 = peg$otherExpectation("string");
    298     var peg$e68 = peg$literalExpectation("'", false);
    299     var peg$e69 = peg$literalExpectation("\"", false);
    300     var peg$e70 = peg$otherExpectation("number");
    301     var peg$e71 = peg$classExpectation(["e"], false, true);
    302     var peg$e72 = peg$classExpectation([["0", "9"]], false, false);
    303     var peg$e73 = peg$otherExpectation("boolean");
    304     var peg$e74 = peg$literalExpectation("true", false);
    305     var peg$e75 = peg$literalExpectation("false", false);
    306     var peg$e76 = peg$classExpectation([["a", "z"]], false, true);
    307     var peg$e77 = peg$classExpectation(["_", "$"], false, false);
    308     var peg$e78 = peg$literalExpectation("|", false);
    309     var peg$e79 = peg$otherExpectation("array");
    310     var peg$e80 = peg$otherExpectation("dict");
    311     var peg$e81 = peg$otherExpectation("whitespace");
    312     var peg$e82 = peg$otherExpectation(";");
    313     var peg$e83 = peg$literalExpectation(";", false);
    314     var peg$e84 = peg$otherExpectation(",");
    315     var peg$e85 = peg$literalExpectation(",", false);
    316     var peg$e86 = peg$otherExpectation("newline");
    317     var peg$e87 = peg$classExpectation(["\n", "\r"], false, false);
    318     var peg$e88 = peg$otherExpectation("line comment");
    319     var peg$e89 = peg$literalExpectation("//", false);
    320     var peg$e90 = peg$classExpectation(["\r", "\n"], true, false);
    321     var peg$e91 = peg$otherExpectation("comment");
    322     var peg$e92 = peg$literalExpectation("/*", false);
    323     var peg$e93 = peg$classExpectation(["*"], true, false);
    324     var peg$e94 = peg$classExpectation(["*"], false, false);
    325     var peg$e95 = peg$classExpectation(["/"], true, false);
    326     var peg$e96 = peg$literalExpectation("*/", false);
    327     var peg$e97 = peg$classExpectation([" ", "\t"], false, false);
    328     var peg$f0 = function (start) { return start; };
    329     var peg$f1 = function (imports, statements, finalExpression) {
    330         if (finalExpression) {
    331             statements.push(finalExpression);
    332         }
    333         return h.nodeProgram(imports, statements, location());
    334     };
    335     var peg$f2 = function (imports, finalExpression) { return h.nodeProgram(imports, [finalExpression], location()); };
    336     var peg$f3 = function (file, variable) { return [file, variable]; };
    337     var peg$f4 = function (finalExpression) { return h.nodeBlock([finalExpression], location()); };
    338     var peg$f5 = function (statements, finalExpression) {
    339         if (finalExpression) {
    340             statements.push(finalExpression);
    341         }
    342         return h.nodeBlock(statements, location());
    343     };
    344     var peg$f6 = function (finalExpression) { return h.nodeBlock([finalExpression], location()); };
    345     var peg$f7 = function (value) {
    346         const variable = h.nodeIdentifier("_", location());
    347         return h.nodeLetStatement(variable, value, false, location());
    348     };
    349     var peg$f8 = function (exported, variable, value) { return h.nodeLetStatement(variable, value, Boolean(exported), location()); };
    350     var peg$f9 = function (exported, variable, args, body) {
    351         const value = h.nodeLambda(args, body, location(), variable);
    352         return h.nodeDefunStatement(variable, value, Boolean(exported), location());
    353     };
    354     var peg$f10 = function (id, annotation) {
    355         return annotation ? h.nodeIdentifierWithAnnotation(id.value, annotation, location()) : id;
    356     };
    357     var peg$f11 = function (condition, trueExpression, falseExpression) { return h.nodeTernary(condition, trueExpression, falseExpression, 'IfThenElse', location()); };
    358     var peg$f12 = function (condition, trueExpression, falseExpression) { return h.nodeTernary(condition, trueExpression, falseExpression, 'C', location()); };
    359     var peg$f13 = function (head, tail) { return h.makeInfixChain(head, tail, location()); };
    360     var peg$f14 = function (head, tail) { return h.makeInfixChain(head, tail, location()); };
    361     var peg$f15 = function (left, operator, right) { return h.nodeInfixCall(operator, left, right, location()); };
    362     var peg$f16 = function (left, operator, right) { return h.nodeInfixCall(operator, left, right, location()); };
    363     var peg$f17 = function (head, tail) { return h.makeInfixChain(head, tail, location()); };
    364     var peg$f18 = function (head, tail) { return h.makeInfixChain(head, tail, location()); };
    365     var peg$f19 = function (head, tail) { return h.makeInfixChain(head, tail, location()); };
    366     var peg$f20 = function (left, operator, right) { return h.nodeInfixCall(operator, left, right, location()); };
    367     var peg$f21 = function (head, tail) {
    368         return tail.reduce(function (result, element) {
    369             return h.nodePipe(result, element.callable, element.args, location());
    370         }, head);
    371     };
    372     var peg$f22 = function (fn, args) { return { callable: fn, args }; };
    373     var peg$f23 = function (fn) { return { callable: fn, args: [] }; };
    374     var peg$f24 = function (unaryOperator, right) { return h.nodeUnaryCall(unaryOperator, right, location()); };
    375     var peg$f25 = function (head, arg) { return { mode: 'bracket', arg }; };
    376     var peg$f26 = function (head, arg) { return { mode: 'dot', arg }; };
    377     var peg$f27 = function (head, tail) {
    378         return tail.reduce(function (result, element) {
    379             switch (element.mode) {
    380                 case 'dot':
    381                     return h.nodeDotLookup(result, element.arg, location());
    382                 case 'bracket':
    383                     return h.nodeBracketLookup(result, element.arg, location());
    384                 default:
    385                     throw new Error("Parser implementation error");
    386             }
    387         }, head);
    388     };
    389     var peg$f28 = function (head, args) { return { mode: 'call', args }; };
    390     var peg$f29 = function (head, arg) { return { mode: 'bracket', arg }; };
    391     var peg$f30 = function (head, arg) { return { mode: 'dot', arg }; };
    392     var peg$f31 = function (head, tail) {
    393         return tail.reduce(function (result, element) {
    394             switch (element.mode) {
    395                 case 'call':
    396                     return h.nodeCall(result, element.args, location());
    397                 case 'dot':
    398                     return h.nodeDotLookup(result, element.arg, location());
    399                 case 'bracket':
    400                     return h.nodeBracketLookup(result, element.arg, location());
    401                 default:
    402                     throw new Error("Parser implementation error");
    403             }
    404         }, head);
    405     };
    406     var peg$f32 = function () { return h.nodeVoid(location()); };
    407     var peg$f33 = function (head, tail, final) {
    408         const modifiers = [head, ...tail, final];
    409         const modifiedIdentifier = modifiers.join('.');
    410         return h.nodeIdentifier(modifiedIdentifier, location());
    411     };
    412     var peg$f34 = function () { return h.nodeIdentifier(text(), location()); };
    413     var peg$f35 = function () { return h.nodeIdentifier(text(), location()); };
    414     var peg$f36 = function (esc) { return h.parseEscapeSequence([esc], location(), error); };
    415     var peg$f37 = function (esc) { return h.parseEscapeSequence(esc, location(), error); };
    416     var peg$f38 = function (characters) { return h.nodeString(characters.join(""), location()); };
    417     var peg$f39 = function (characters) { return h.nodeString(characters.join(""), location()); };
    418     var peg$f40 = function (number, unit) {
    419         if (unit === null) {
    420             return number;
    421         }
    422         else {
    423             return h.nodeUnitValue(number, unit, location());
    424         }
    425     };
    426     var peg$f41 = function (significand, exponent) {
    427         return h.nodeFloat({
    428             integer: significand.integer,
    429             fractional: significand.fractional,
    430             exponent,
    431         }, location());
    432     };
    433     var peg$f42 = function (integer, fractional) {
    434         return {
    435             integer,
    436             fractional,
    437         };
    438     };
    439     var peg$f43 = function (integer) {
    440         return {
    441             integer,
    442             fractional: null,
    443         };
    444     };
    445     var peg$f44 = function (fractional) {
    446         return {
    447             integer: 0,
    448             fractional,
    449         };
    450     };
    451     var peg$f45 = function () { return parseInt(text(), 10); };
    452     var peg$f46 = function () { return parseInt(text(), 10); };
    453     var peg$f47 = function () { return h.nodeBoolean(text() === 'true', location()); };
    454     var peg$f48 = function (args, statements, finalExpression) {
    455         statements.push(finalExpression);
    456         return h.nodeLambda(args, h.nodeBlock(statements, location()), location(), undefined);
    457     };
    458     var peg$f49 = function (args, finalExpression) { return h.nodeLambda(args, finalExpression, location(), undefined); };
    459     var peg$f50 = function () { return h.nodeArray([], location()); };
    460     var peg$f51 = function (args) { return h.nodeArray(args, location()); };
    461     var peg$f52 = function () { return h.nodeDict([], location()); };
    462     var peg$f53 = function (args) { return h.nodeDict(args, location()); };
    463     var peg$f54 = function (key, value) { return h.nodeKeyValue(key, value, location()); };
    464     var peg$f55 = function (comment) { options.comments.push(h.lineComment(comment, location())); };
    465     var peg$f56 = function (comment) { options.comments.push(h.blockComment(comment, location())); };
    466     var peg$currPos = 0;
    467     var peg$savedPos = 0;
    468     var peg$posDetailsCache = [{ line: 1, column: 1 }];
    469     var peg$maxFailPos = 0;
    470     var peg$maxFailExpected = [];
    471     var peg$silentFails = 0;
    472     var peg$resultsCache = {};
    473     var peg$result;
    474     if ("startRule" in options) {
    475         if (!(options.startRule in peg$startRuleFunctions)) {
    476             throw new Error("Can't start parsing from rule \"" + options.startRule + "\".");
    477         }
    478         peg$startRuleFunction = peg$startRuleFunctions[options.startRule];
    479     }
    480     function text() {
    481         return input.substring(peg$savedPos, peg$currPos);
    482     }
    483     function offset() {
    484         return peg$savedPos;
    485     }
    486     function range() {
    487         return {
    488             source: peg$source,
    489             start: peg$savedPos,
    490             end: peg$currPos
    491         };
    492     }
    493     function location() {
    494         return peg$computeLocation(peg$savedPos, peg$currPos);
    495     }
    496     function expected(description, location) {
    497         location = location !== undefined
    498             ? location
    499             : peg$computeLocation(peg$savedPos, peg$currPos);
    500         throw peg$buildStructuredError([peg$otherExpectation(description)], input.substring(peg$savedPos, peg$currPos), location);
    501     }
    502     function error(message, location) {
    503         location = location !== undefined
    504             ? location
    505             : peg$computeLocation(peg$savedPos, peg$currPos);
    506         throw peg$buildSimpleError(message, location);
    507     }
    508     function peg$literalExpectation(text, ignoreCase) {
    509         return { type: "literal", text: text, ignoreCase: ignoreCase };
    510     }
    511     function peg$classExpectation(parts, inverted, ignoreCase) {
    512         return { type: "class", parts: parts, inverted: inverted, ignoreCase: ignoreCase };
    513     }
    514     function peg$anyExpectation() {
    515         return { type: "any" };
    516     }
    517     function peg$endExpectation() {
    518         return { type: "end" };
    519     }
    520     function peg$otherExpectation(description) {
    521         return { type: "other", description: description };
    522     }
    523     function peg$computePosDetails(pos) {
    524         var details = peg$posDetailsCache[pos];
    525         var p;
    526         if (details) {
    527             return details;
    528         }
    529         else {
    530             p = pos - 1;
    531             while (!peg$posDetailsCache[p]) {
    532                 p--;
    533             }
    534             details = peg$posDetailsCache[p];
    535             details = {
    536                 line: details.line,
    537                 column: details.column
    538             };
    539             while (p < pos) {
    540                 if (input.charCodeAt(p) === 10) {
    541                     details.line++;
    542                     details.column = 1;
    543                 }
    544                 else {
    545                     details.column++;
    546                 }
    547                 p++;
    548             }
    549             peg$posDetailsCache[pos] = details;
    550             return details;
    551         }
    552     }
    553     function peg$computeLocation(startPos, endPos, offset) {
    554         var startPosDetails = peg$computePosDetails(startPos);
    555         var endPosDetails = peg$computePosDetails(endPos);
    556         var res = {
    557             source: peg$source,
    558             start: {
    559                 offset: startPos,
    560                 line: startPosDetails.line,
    561                 column: startPosDetails.column
    562             },
    563             end: {
    564                 offset: endPos,
    565                 line: endPosDetails.line,
    566                 column: endPosDetails.column
    567             }
    568         };
    569         if (offset && peg$source && (typeof peg$source.offset === "function")) {
    570             res.start = peg$source.offset(res.start);
    571             res.end = peg$source.offset(res.end);
    572         }
    573         return res;
    574     }
    575     function peg$fail(expected) {
    576         if (peg$currPos < peg$maxFailPos) {
    577             return;
    578         }
    579         if (peg$currPos > peg$maxFailPos) {
    580             peg$maxFailPos = peg$currPos;
    581             peg$maxFailExpected = [];
    582         }
    583         peg$maxFailExpected.push(expected);
    584     }
    585     function peg$buildSimpleError(message, location) {
    586         return new peg$SyntaxError(message, null, null, location);
    587     }
    588     function peg$buildStructuredError(expected, found, location) {
    589         return new peg$SyntaxError(peg$SyntaxError.buildMessage(expected, found), expected, found, location);
    590     }
    591     function peg$parsestart() {
    592         var s0, s1, s2, s3, s4;
    593         var key = peg$currPos * 82 + 0;
    594         var cached = peg$resultsCache[key];
    595         if (cached) {
    596             peg$currPos = cached.nextPos;
    597             return cached.result;
    598         }
    599         s0 = peg$currPos;
    600         s1 = peg$parse_nl();
    601         s2 = peg$parseouterBlock();
    602         if (s2 !== peg$FAILED) {
    603             s3 = peg$parse_nl();
    604             s4 = peg$parsefinalComment();
    605             if (s4 === peg$FAILED) {
    606                 s4 = null;
    607             }
    608             peg$savedPos = s0;
    609             s0 = peg$f0(s2);
    610         }
    611         else {
    612             peg$currPos = s0;
    613             s0 = peg$FAILED;
    614         }
    615         peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
    616         return s0;
    617     }
    618     function peg$parsezeroOMoreArgumentsBlockOrExpression() {
    619         var s0;
    620         var key = peg$currPos * 82 + 1;
    621         var cached = peg$resultsCache[key];
    622         if (cached) {
    623             peg$currPos = cached.nextPos;
    624             return cached.result;
    625         }
    626         s0 = peg$parselambda();
    627         if (s0 === peg$FAILED) {
    628             s0 = peg$parseinnerBlockOrExpression();
    629         }
    630         peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
    631         return s0;
    632     }
    633     function peg$parseouterBlock() {
    634         var s0, s1, s2, s3, s4, s5;
    635         var key = peg$currPos * 82 + 2;
    636         var cached = peg$resultsCache[key];
    637         if (cached) {
    638             peg$currPos = cached.nextPos;
    639             return cached.result;
    640         }
    641         s0 = peg$currPos;
    642         s1 = peg$parseimportStatementsList();
    643         s2 = peg$parsestatementsList();
    644         if (s2 !== peg$FAILED) {
    645             s3 = peg$currPos;
    646             s4 = peg$parsestatementSeparator();
    647             if (s4 !== peg$FAILED) {
    648                 s5 = peg$parseexpression();
    649                 if (s5 !== peg$FAILED) {
    650                     s3 = s5;
    651                 }
    652                 else {
    653                     peg$currPos = s3;
    654                     s3 = peg$FAILED;
    655                 }
    656             }
    657             else {
    658                 peg$currPos = s3;
    659                 s3 = peg$FAILED;
    660             }
    661             if (s3 === peg$FAILED) {
    662                 s3 = null;
    663             }
    664             peg$savedPos = s0;
    665             s0 = peg$f1(s1, s2, s3);
    666         }
    667         else {
    668             peg$currPos = s0;
    669             s0 = peg$FAILED;
    670         }
    671         if (s0 === peg$FAILED) {
    672             s0 = peg$currPos;
    673             s1 = peg$parseimportStatementsList();
    674             s2 = peg$parseexpression();
    675             if (s2 !== peg$FAILED) {
    676                 peg$savedPos = s0;
    677                 s0 = peg$f2(s1, s2);
    678             }
    679             else {
    680                 peg$currPos = s0;
    681                 s0 = peg$FAILED;
    682             }
    683         }
    684         peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
    685         return s0;
    686     }
    687     function peg$parseimportStatementsList() {
    688         var s0, s1, s2, s3;
    689         var key = peg$currPos * 82 + 3;
    690         var cached = peg$resultsCache[key];
    691         if (cached) {
    692             peg$currPos = cached.nextPos;
    693             return cached.result;
    694         }
    695         s0 = [];
    696         s1 = peg$currPos;
    697         s2 = peg$parseimportStatement();
    698         if (s2 !== peg$FAILED) {
    699             s3 = peg$parse__nl();
    700             if (s3 !== peg$FAILED) {
    701                 s1 = s2;
    702             }
    703             else {
    704                 peg$currPos = s1;
    705                 s1 = peg$FAILED;
    706             }
    707         }
    708         else {
    709             peg$currPos = s1;
    710             s1 = peg$FAILED;
    711         }
    712         while (s1 !== peg$FAILED) {
    713             s0.push(s1);
    714             s1 = peg$currPos;
    715             s2 = peg$parseimportStatement();
    716             if (s2 !== peg$FAILED) {
    717                 s3 = peg$parse__nl();
    718                 if (s3 !== peg$FAILED) {
    719                     s1 = s2;
    720                 }
    721                 else {
    722                     peg$currPos = s1;
    723                     s1 = peg$FAILED;
    724                 }
    725             }
    726             else {
    727                 peg$currPos = s1;
    728                 s1 = peg$FAILED;
    729             }
    730         }
    731         peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
    732         return s0;
    733     }
    734     function peg$parseimportStatement() {
    735         var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9;
    736         var key = peg$currPos * 82 + 4;
    737         var cached = peg$resultsCache[key];
    738         if (cached) {
    739             peg$currPos = cached.nextPos;
    740             return cached.result;
    741         }
    742         s0 = peg$currPos;
    743         s1 = peg$parse_nl();
    744         if (input.substr(peg$currPos, 6) === peg$c0) {
    745             s2 = peg$c0;
    746             peg$currPos += 6;
    747         }
    748         else {
    749             s2 = peg$FAILED;
    750             if (peg$silentFails === 0) {
    751                 peg$fail(peg$e0);
    752             }
    753         }
    754         if (s2 !== peg$FAILED) {
    755             s3 = peg$parse__();
    756             if (s3 !== peg$FAILED) {
    757                 s4 = peg$parsestring();
    758                 if (s4 !== peg$FAILED) {
    759                     s5 = peg$currPos;
    760                     s6 = peg$parse__();
    761                     if (s6 !== peg$FAILED) {
    762                         if (input.substr(peg$currPos, 2) === peg$c1) {
    763                             s7 = peg$c1;
    764                             peg$currPos += 2;
    765                         }
    766                         else {
    767                             s7 = peg$FAILED;
    768                             if (peg$silentFails === 0) {
    769                                 peg$fail(peg$e1);
    770                             }
    771                         }
    772                         if (s7 !== peg$FAILED) {
    773                             s8 = peg$parse__();
    774                             if (s8 !== peg$FAILED) {
    775                                 s9 = peg$parseidentifier();
    776                                 if (s9 !== peg$FAILED) {
    777                                     s5 = s9;
    778                                 }
    779                                 else {
    780                                     peg$currPos = s5;
    781                                     s5 = peg$FAILED;
    782                                 }
    783                             }
    784                             else {
    785                                 peg$currPos = s5;
    786                                 s5 = peg$FAILED;
    787                             }
    788                         }
    789                         else {
    790                             peg$currPos = s5;
    791                             s5 = peg$FAILED;
    792                         }
    793                     }
    794                     else {
    795                         peg$currPos = s5;
    796                         s5 = peg$FAILED;
    797                     }
    798                     if (s5 !== peg$FAILED) {
    799                         peg$savedPos = s0;
    800                         s0 = peg$f3(s4, s5);
    801                     }
    802                     else {
    803                         peg$currPos = s0;
    804                         s0 = peg$FAILED;
    805                     }
    806                 }
    807                 else {
    808                     peg$currPos = s0;
    809                     s0 = peg$FAILED;
    810                 }
    811             }
    812             else {
    813                 peg$currPos = s0;
    814                 s0 = peg$FAILED;
    815             }
    816         }
    817         else {
    818             peg$currPos = s0;
    819             s0 = peg$FAILED;
    820         }
    821         peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
    822         return s0;
    823     }
    824     function peg$parseinnerBlockOrExpression() {
    825         var s0, s1;
    826         var key = peg$currPos * 82 + 5;
    827         var cached = peg$resultsCache[key];
    828         if (cached) {
    829             peg$currPos = cached.nextPos;
    830             return cached.result;
    831         }
    832         s0 = peg$parsequotedInnerBlock();
    833         if (s0 === peg$FAILED) {
    834             s0 = peg$currPos;
    835             s1 = peg$parseexpression();
    836             if (s1 !== peg$FAILED) {
    837                 peg$savedPos = s0;
    838                 s1 = peg$f4(s1);
    839             }
    840             s0 = s1;
    841         }
    842         peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
    843         return s0;
    844     }
    845     function peg$parsequotedInnerBlock() {
    846         var s0, s1, s2, s3, s4, s5, s6;
    847         var key = peg$currPos * 82 + 6;
    848         var cached = peg$resultsCache[key];
    849         if (cached) {
    850             peg$currPos = cached.nextPos;
    851             return cached.result;
    852         }
    853         s0 = peg$currPos;
    854         if (input.charCodeAt(peg$currPos) === 123) {
    855             s1 = peg$c2;
    856             peg$currPos++;
    857         }
    858         else {
    859             s1 = peg$FAILED;
    860             if (peg$silentFails === 0) {
    861                 peg$fail(peg$e2);
    862             }
    863         }
    864         if (s1 !== peg$FAILED) {
    865             s2 = peg$parse_nl();
    866             s3 = peg$parsestatementsList();
    867             if (s3 !== peg$FAILED) {
    868                 s4 = peg$currPos;
    869                 s5 = peg$parsestatementSeparator();
    870                 if (s5 !== peg$FAILED) {
    871                     s6 = peg$parseexpression();
    872                     if (s6 !== peg$FAILED) {
    873                         s4 = s6;
    874                     }
    875                     else {
    876                         peg$currPos = s4;
    877                         s4 = peg$FAILED;
    878                     }
    879                 }
    880                 else {
    881                     peg$currPos = s4;
    882                     s4 = peg$FAILED;
    883                 }
    884                 if (s4 !== peg$FAILED) {
    885                     s5 = peg$parse_nl();
    886                     if (input.charCodeAt(peg$currPos) === 125) {
    887                         s6 = peg$c3;
    888                         peg$currPos++;
    889                     }
    890                     else {
    891                         s6 = peg$FAILED;
    892                         if (peg$silentFails === 0) {
    893                             peg$fail(peg$e3);
    894                         }
    895                     }
    896                     if (s6 !== peg$FAILED) {
    897                         peg$savedPos = s0;
    898                         s0 = peg$f5(s3, s4);
    899                     }
    900                     else {
    901                         peg$currPos = s0;
    902                         s0 = peg$FAILED;
    903                     }
    904                 }
    905                 else {
    906                     peg$currPos = s0;
    907                     s0 = peg$FAILED;
    908                 }
    909             }
    910             else {
    911                 peg$currPos = s0;
    912                 s0 = peg$FAILED;
    913             }
    914         }
    915         else {
    916             peg$currPos = s0;
    917             s0 = peg$FAILED;
    918         }
    919         if (s0 === peg$FAILED) {
    920             s0 = peg$currPos;
    921             if (input.charCodeAt(peg$currPos) === 123) {
    922                 s1 = peg$c2;
    923                 peg$currPos++;
    924             }
    925             else {
    926                 s1 = peg$FAILED;
    927                 if (peg$silentFails === 0) {
    928                     peg$fail(peg$e2);
    929                 }
    930             }
    931             if (s1 !== peg$FAILED) {
    932                 s2 = peg$parse_nl();
    933                 s3 = peg$parseexpression();
    934                 if (s3 !== peg$FAILED) {
    935                     s4 = peg$parse_nl();
    936                     if (input.charCodeAt(peg$currPos) === 125) {
    937                         s5 = peg$c3;
    938                         peg$currPos++;
    939                     }
    940                     else {
    941                         s5 = peg$FAILED;
    942                         if (peg$silentFails === 0) {
    943                             peg$fail(peg$e3);
    944                         }
    945                     }
    946                     if (s5 !== peg$FAILED) {
    947                         peg$savedPos = s0;
    948                         s0 = peg$f6(s3);
    949                     }
    950                     else {
    951                         peg$currPos = s0;
    952                         s0 = peg$FAILED;
    953                     }
    954                 }
    955                 else {
    956                     peg$currPos = s0;
    957                     s0 = peg$FAILED;
    958                 }
    959             }
    960             else {
    961                 peg$currPos = s0;
    962                 s0 = peg$FAILED;
    963             }
    964         }
    965         peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
    966         return s0;
    967     }
    968     function peg$parsestatementsList() {
    969         var s0, s1, s2, s3;
    970         var key = peg$currPos * 82 + 7;
    971         var cached = peg$resultsCache[key];
    972         if (cached) {
    973             peg$currPos = cached.nextPos;
    974             return cached.result;
    975         }
    976         s0 = peg$currPos;
    977         s1 = [];
    978         s2 = peg$parsestatement();
    979         while (s2 !== peg$FAILED) {
    980             s1.push(s2);
    981             s2 = peg$currPos;
    982             s3 = peg$parsestatementSeparator();
    983             if (s3 !== peg$FAILED) {
    984                 s3 = peg$parsestatement();
    985                 if (s3 === peg$FAILED) {
    986                     peg$currPos = s2;
    987                     s2 = peg$FAILED;
    988                 }
    989                 else {
    990                     s2 = s3;
    991                 }
    992             }
    993             else {
    994                 s2 = s3;
    995             }
    996         }
    997         if (s1.length < 1) {
    998             peg$currPos = s0;
    999             s0 = peg$FAILED;
   1000         }
   1001         else {
   1002             s0 = s1;
   1003         }
   1004         peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
   1005         return s0;
   1006     }
   1007     function peg$parsestatement() {
   1008         var s0;
   1009         var key = peg$currPos * 82 + 8;
   1010         var cached = peg$resultsCache[key];
   1011         if (cached) {
   1012             peg$currPos = cached.nextPos;
   1013             return cached.result;
   1014         }
   1015         s0 = peg$parseletStatement();
   1016         if (s0 === peg$FAILED) {
   1017             s0 = peg$parsedefunStatement();
   1018             if (s0 === peg$FAILED) {
   1019                 s0 = peg$parsevoidStatement();
   1020             }
   1021         }
   1022         peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
   1023         return s0;
   1024     }
   1025     function peg$parsevoidStatement() {
   1026         var s0, s1, s2, s3;
   1027         var key = peg$currPos * 82 + 9;
   1028         var cached = peg$resultsCache[key];
   1029         if (cached) {
   1030             peg$currPos = cached.nextPos;
   1031             return cached.result;
   1032         }
   1033         s0 = peg$currPos;
   1034         if (input.substr(peg$currPos, 4) === peg$c4) {
   1035             s1 = peg$c4;
   1036             peg$currPos += 4;
   1037         }
   1038         else {
   1039             s1 = peg$FAILED;
   1040             if (peg$silentFails === 0) {
   1041                 peg$fail(peg$e4);
   1042             }
   1043         }
   1044         if (s1 !== peg$FAILED) {
   1045             s2 = peg$parse_nl();
   1046             s3 = peg$parsezeroOMoreArgumentsBlockOrExpression();
   1047             if (s3 !== peg$FAILED) {
   1048                 peg$savedPos = s0;
   1049                 s0 = peg$f7(s3);
   1050             }
   1051             else {
   1052                 peg$currPos = s0;
   1053                 s0 = peg$FAILED;
   1054             }
   1055         }
   1056         else {
   1057             peg$currPos = s0;
   1058             s0 = peg$FAILED;
   1059         }
   1060         peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
   1061         return s0;
   1062     }
   1063     function peg$parseletStatement() {
   1064         var s0, s1, s2, s3, s4, s5, s6;
   1065         var key = peg$currPos * 82 + 10;
   1066         var cached = peg$resultsCache[key];
   1067         if (cached) {
   1068             peg$currPos = cached.nextPos;
   1069             return cached.result;
   1070         }
   1071         s0 = peg$currPos;
   1072         s1 = peg$currPos;
   1073         if (input.substr(peg$currPos, 6) === peg$c5) {
   1074             s2 = peg$c5;
   1075             peg$currPos += 6;
   1076         }
   1077         else {
   1078             s2 = peg$FAILED;
   1079             if (peg$silentFails === 0) {
   1080                 peg$fail(peg$e5);
   1081             }
   1082         }
   1083         if (s2 !== peg$FAILED) {
   1084             s3 = peg$parse__nl();
   1085             if (s3 !== peg$FAILED) {
   1086                 s2 = [s2, s3];
   1087                 s1 = s2;
   1088             }
   1089             else {
   1090                 peg$currPos = s1;
   1091                 s1 = peg$FAILED;
   1092             }
   1093         }
   1094         else {
   1095             peg$currPos = s1;
   1096             s1 = peg$FAILED;
   1097         }
   1098         if (s1 === peg$FAILED) {
   1099             s1 = null;
   1100         }
   1101         s2 = peg$parsevariable();
   1102         if (s2 !== peg$FAILED) {
   1103             s3 = peg$parse_();
   1104             s4 = peg$parseassignmentOp();
   1105             if (s4 !== peg$FAILED) {
   1106                 s5 = peg$parse_nl();
   1107                 s6 = peg$parsezeroOMoreArgumentsBlockOrExpression();
   1108                 if (s6 !== peg$FAILED) {
   1109                     peg$savedPos = s0;
   1110                     s0 = peg$f8(s1, s2, s6);
   1111                 }
   1112                 else {
   1113                     peg$currPos = s0;
   1114                     s0 = peg$FAILED;
   1115                 }
   1116             }
   1117             else {
   1118                 peg$currPos = s0;
   1119                 s0 = peg$FAILED;
   1120             }
   1121         }
   1122         else {
   1123             peg$currPos = s0;
   1124             s0 = peg$FAILED;
   1125         }
   1126         peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
   1127         return s0;
   1128     }
   1129     function peg$parsedefunStatement() {
   1130         var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11;
   1131         var key = peg$currPos * 82 + 11;
   1132         var cached = peg$resultsCache[key];
   1133         if (cached) {
   1134             peg$currPos = cached.nextPos;
   1135             return cached.result;
   1136         }
   1137         s0 = peg$currPos;
   1138         s1 = peg$currPos;
   1139         if (input.substr(peg$currPos, 6) === peg$c5) {
   1140             s2 = peg$c5;
   1141             peg$currPos += 6;
   1142         }
   1143         else {
   1144             s2 = peg$FAILED;
   1145             if (peg$silentFails === 0) {
   1146                 peg$fail(peg$e5);
   1147             }
   1148         }
   1149         if (s2 !== peg$FAILED) {
   1150             s3 = peg$parse__nl();
   1151             if (s3 !== peg$FAILED) {
   1152                 s2 = [s2, s3];
   1153                 s1 = s2;
   1154             }
   1155             else {
   1156                 peg$currPos = s1;
   1157                 s1 = peg$FAILED;
   1158             }
   1159         }
   1160         else {
   1161             peg$currPos = s1;
   1162             s1 = peg$FAILED;
   1163         }
   1164         if (s1 === peg$FAILED) {
   1165             s1 = null;
   1166         }
   1167         s2 = peg$parsevariable();
   1168         if (s2 !== peg$FAILED) {
   1169             if (input.charCodeAt(peg$currPos) === 40) {
   1170                 s3 = peg$c6;
   1171                 peg$currPos++;
   1172             }
   1173             else {
   1174                 s3 = peg$FAILED;
   1175                 if (peg$silentFails === 0) {
   1176                     peg$fail(peg$e6);
   1177                 }
   1178             }
   1179             if (s3 !== peg$FAILED) {
   1180                 s4 = peg$parse_nl();
   1181                 s5 = peg$parsefunctionParameters();
   1182                 s6 = peg$parse_nl();
   1183                 if (input.charCodeAt(peg$currPos) === 41) {
   1184                     s7 = peg$c7;
   1185                     peg$currPos++;
   1186                 }
   1187                 else {
   1188                     s7 = peg$FAILED;
   1189                     if (peg$silentFails === 0) {
   1190                         peg$fail(peg$e7);
   1191                     }
   1192                 }
   1193                 if (s7 !== peg$FAILED) {
   1194                     s8 = peg$parse_();
   1195                     s9 = peg$parseassignmentOp();
   1196                     if (s9 !== peg$FAILED) {
   1197                         s10 = peg$parse_nl();
   1198                         s11 = peg$parseinnerBlockOrExpression();
   1199                         if (s11 !== peg$FAILED) {
   1200                             peg$savedPos = s0;
   1201                             s0 = peg$f9(s1, s2, s5, s11);
   1202                         }
   1203                         else {
   1204                             peg$currPos = s0;
   1205                             s0 = peg$FAILED;
   1206                         }
   1207                     }
   1208                     else {
   1209                         peg$currPos = s0;
   1210                         s0 = peg$FAILED;
   1211                     }
   1212                 }
   1213                 else {
   1214                     peg$currPos = s0;
   1215                     s0 = peg$FAILED;
   1216                 }
   1217             }
   1218             else {
   1219                 peg$currPos = s0;
   1220                 s0 = peg$FAILED;
   1221             }
   1222         }
   1223         else {
   1224             peg$currPos = s0;
   1225             s0 = peg$FAILED;
   1226         }
   1227         peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
   1228         return s0;
   1229     }
   1230     function peg$parseassignmentOp() {
   1231         var s0, s1;
   1232         var key = peg$currPos * 82 + 12;
   1233         var cached = peg$resultsCache[key];
   1234         if (cached) {
   1235             peg$currPos = cached.nextPos;
   1236             return cached.result;
   1237         }
   1238         peg$silentFails++;
   1239         if (input.charCodeAt(peg$currPos) === 61) {
   1240             s0 = peg$c8;
   1241             peg$currPos++;
   1242         }
   1243         else {
   1244             s0 = peg$FAILED;
   1245             if (peg$silentFails === 0) {
   1246                 peg$fail(peg$e9);
   1247             }
   1248         }
   1249         peg$silentFails--;
   1250         if (s0 === peg$FAILED) {
   1251             s1 = peg$FAILED;
   1252             if (peg$silentFails === 0) {
   1253                 peg$fail(peg$e8);
   1254             }
   1255         }
   1256         peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
   1257         return s0;
   1258     }
   1259     function peg$parsefunctionParameters() {
   1260         var s0, s1, s2;
   1261         var key = peg$currPos * 82 + 13;
   1262         var cached = peg$resultsCache[key];
   1263         if (cached) {
   1264             peg$currPos = cached.nextPos;
   1265             return cached.result;
   1266         }
   1267         s0 = [];
   1268         s1 = peg$parsefunctionParameter();
   1269         while (s1 !== peg$FAILED) {
   1270             s0.push(s1);
   1271             s1 = peg$currPos;
   1272             s2 = peg$parsecommaSeparator();
   1273             if (s2 !== peg$FAILED) {
   1274                 s2 = peg$parsefunctionParameter();
   1275                 if (s2 === peg$FAILED) {
   1276                     peg$currPos = s1;
   1277                     s1 = peg$FAILED;
   1278                 }
   1279                 else {
   1280                     s1 = s2;
   1281                 }
   1282             }
   1283             else {
   1284                 s1 = s2;
   1285             }
   1286         }
   1287         peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
   1288         return s0;
   1289     }
   1290     function peg$parsefunctionParameter() {
   1291         var s0, s1, s2, s3, s4, s5, s6;
   1292         var key = peg$currPos * 82 + 14;
   1293         var cached = peg$resultsCache[key];
   1294         if (cached) {
   1295             peg$currPos = cached.nextPos;
   1296             return cached.result;
   1297         }
   1298         s0 = peg$currPos;
   1299         s1 = peg$parsedollarIdentifier();
   1300         if (s1 !== peg$FAILED) {
   1301             s2 = peg$currPos;
   1302             s3 = peg$parse_();
   1303             if (input.charCodeAt(peg$currPos) === 58) {
   1304                 s4 = peg$c9;
   1305                 peg$currPos++;
   1306             }
   1307             else {
   1308                 s4 = peg$FAILED;
   1309                 if (peg$silentFails === 0) {
   1310                     peg$fail(peg$e10);
   1311                 }
   1312             }
   1313             if (s4 !== peg$FAILED) {
   1314                 s5 = peg$parse_nl();
   1315                 s6 = peg$parseexpression();
   1316                 if (s6 !== peg$FAILED) {
   1317                     s2 = s6;
   1318                 }
   1319                 else {
   1320                     peg$currPos = s2;
   1321                     s2 = peg$FAILED;
   1322                 }
   1323             }
   1324             else {
   1325                 peg$currPos = s2;
   1326                 s2 = peg$FAILED;
   1327             }
   1328             if (s2 === peg$FAILED) {
   1329                 s2 = null;
   1330             }
   1331             peg$savedPos = s0;
   1332             s0 = peg$f10(s1, s2);
   1333         }
   1334         else {
   1335             peg$currPos = s0;
   1336             s0 = peg$FAILED;
   1337         }
   1338         peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
   1339         return s0;
   1340     }
   1341     function peg$parseexpression() {
   1342         var s0;
   1343         var key = peg$currPos * 82 + 15;
   1344         var cached = peg$resultsCache[key];
   1345         if (cached) {
   1346             peg$currPos = cached.nextPos;
   1347             return cached.result;
   1348         }
   1349         s0 = peg$parseifthenelse();
   1350         if (s0 === peg$FAILED) {
   1351             s0 = peg$parseternary();
   1352             if (s0 === peg$FAILED) {
   1353                 s0 = peg$parselogicalOr();
   1354             }
   1355         }
   1356         peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
   1357         return s0;
   1358     }
   1359     function peg$parseifthenelse() {
   1360         var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11;
   1361         var key = peg$currPos * 82 + 16;
   1362         var cached = peg$resultsCache[key];
   1363         if (cached) {
   1364             peg$currPos = cached.nextPos;
   1365             return cached.result;
   1366         }
   1367         s0 = peg$currPos;
   1368         if (input.substr(peg$currPos, 2) === peg$c10) {
   1369             s1 = peg$c10;
   1370             peg$currPos += 2;
   1371         }
   1372         else {
   1373             s1 = peg$FAILED;
   1374             if (peg$silentFails === 0) {
   1375                 peg$fail(peg$e11);
   1376             }
   1377         }
   1378         if (s1 !== peg$FAILED) {
   1379             s2 = peg$parse__nl();
   1380             if (s2 !== peg$FAILED) {
   1381                 s3 = peg$parselogicalOr();
   1382                 if (s3 !== peg$FAILED) {
   1383                     s4 = peg$parse__nl();
   1384                     if (s4 !== peg$FAILED) {
   1385                         if (input.substr(peg$currPos, 4) === peg$c11) {
   1386                             s5 = peg$c11;
   1387                             peg$currPos += 4;
   1388                         }
   1389                         else {
   1390                             s5 = peg$FAILED;
   1391                             if (peg$silentFails === 0) {
   1392                                 peg$fail(peg$e12);
   1393                             }
   1394                         }
   1395                         if (s5 !== peg$FAILED) {
   1396                             s6 = peg$parse__nl();
   1397                             if (s6 !== peg$FAILED) {
   1398                                 s7 = peg$parseinnerBlockOrExpression();
   1399                                 if (s7 !== peg$FAILED) {
   1400                                     s8 = peg$parse__nl();
   1401                                     if (s8 !== peg$FAILED) {
   1402                                         if (input.substr(peg$currPos, 4) === peg$c12) {
   1403                                             s9 = peg$c12;
   1404                                             peg$currPos += 4;
   1405                                         }
   1406                                         else {
   1407                                             s9 = peg$FAILED;
   1408                                             if (peg$silentFails === 0) {
   1409                                                 peg$fail(peg$e13);
   1410                                             }
   1411                                         }
   1412                                         if (s9 !== peg$FAILED) {
   1413                                             s10 = peg$parse__nl();
   1414                                             if (s10 !== peg$FAILED) {
   1415                                                 s11 = peg$parseifthenelse();
   1416                                                 if (s11 === peg$FAILED) {
   1417                                                     s11 = peg$parseinnerBlockOrExpression();
   1418                                                 }
   1419                                                 if (s11 !== peg$FAILED) {
   1420                                                     peg$savedPos = s0;
   1421                                                     s0 = peg$f11(s3, s7, s11);
   1422                                                 }
   1423                                                 else {
   1424                                                     peg$currPos = s0;
   1425                                                     s0 = peg$FAILED;
   1426                                                 }
   1427                                             }
   1428                                             else {
   1429                                                 peg$currPos = s0;
   1430                                                 s0 = peg$FAILED;
   1431                                             }
   1432                                         }
   1433                                         else {
   1434                                             peg$currPos = s0;
   1435                                             s0 = peg$FAILED;
   1436                                         }
   1437                                     }
   1438                                     else {
   1439                                         peg$currPos = s0;
   1440                                         s0 = peg$FAILED;
   1441                                     }
   1442                                 }
   1443                                 else {
   1444                                     peg$currPos = s0;
   1445                                     s0 = peg$FAILED;
   1446                                 }
   1447                             }
   1448                             else {
   1449                                 peg$currPos = s0;
   1450                                 s0 = peg$FAILED;
   1451                             }
   1452                         }
   1453                         else {
   1454                             peg$currPos = s0;
   1455                             s0 = peg$FAILED;
   1456                         }
   1457                     }
   1458                     else {
   1459                         peg$currPos = s0;
   1460                         s0 = peg$FAILED;
   1461                     }
   1462                 }
   1463                 else {
   1464                     peg$currPos = s0;
   1465                     s0 = peg$FAILED;
   1466                 }
   1467             }
   1468             else {
   1469                 peg$currPos = s0;
   1470                 s0 = peg$FAILED;
   1471             }
   1472         }
   1473         else {
   1474             peg$currPos = s0;
   1475             s0 = peg$FAILED;
   1476         }
   1477         peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
   1478         return s0;
   1479     }
   1480     function peg$parseternary() {
   1481         var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9;
   1482         var key = peg$currPos * 82 + 17;
   1483         var cached = peg$resultsCache[key];
   1484         if (cached) {
   1485             peg$currPos = cached.nextPos;
   1486             return cached.result;
   1487         }
   1488         s0 = peg$currPos;
   1489         s1 = peg$parselogicalOr();
   1490         if (s1 !== peg$FAILED) {
   1491             s2 = peg$parse_();
   1492             if (input.charCodeAt(peg$currPos) === 63) {
   1493                 s3 = peg$c13;
   1494                 peg$currPos++;
   1495             }
   1496             else {
   1497                 s3 = peg$FAILED;
   1498                 if (peg$silentFails === 0) {
   1499                     peg$fail(peg$e14);
   1500                 }
   1501             }
   1502             if (s3 !== peg$FAILED) {
   1503                 s4 = peg$parse_nl();
   1504                 s5 = peg$parselogicalOr();
   1505                 if (s5 !== peg$FAILED) {
   1506                     s6 = peg$parse_();
   1507                     if (input.charCodeAt(peg$currPos) === 58) {
   1508                         s7 = peg$c9;
   1509                         peg$currPos++;
   1510                     }
   1511                     else {
   1512                         s7 = peg$FAILED;
   1513                         if (peg$silentFails === 0) {
   1514                             peg$fail(peg$e10);
   1515                         }
   1516                     }
   1517                     if (s7 !== peg$FAILED) {
   1518                         s8 = peg$parse_nl();
   1519                         s9 = peg$parseternary();
   1520                         if (s9 === peg$FAILED) {
   1521                             s9 = peg$parselogicalOr();
   1522                         }
   1523                         if (s9 !== peg$FAILED) {
   1524                             peg$savedPos = s0;
   1525                             s0 = peg$f12(s1, s5, s9);
   1526                         }
   1527                         else {
   1528                             peg$currPos = s0;
   1529                             s0 = peg$FAILED;
   1530                         }
   1531                     }
   1532                     else {
   1533                         peg$currPos = s0;
   1534                         s0 = peg$FAILED;
   1535                     }
   1536                 }
   1537                 else {
   1538                     peg$currPos = s0;
   1539                     s0 = peg$FAILED;
   1540                 }
   1541             }
   1542             else {
   1543                 peg$currPos = s0;
   1544                 s0 = peg$FAILED;
   1545             }
   1546         }
   1547         else {
   1548             peg$currPos = s0;
   1549             s0 = peg$FAILED;
   1550         }
   1551         peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
   1552         return s0;
   1553     }
   1554     function peg$parselogicalOr() {
   1555         var s0, s1, s2, s3, s4, s5, s6, s7;
   1556         var key = peg$currPos * 82 + 18;
   1557         var cached = peg$resultsCache[key];
   1558         if (cached) {
   1559             peg$currPos = cached.nextPos;
   1560             return cached.result;
   1561         }
   1562         s0 = peg$currPos;
   1563         s1 = peg$parselogicalAnd();
   1564         if (s1 !== peg$FAILED) {
   1565             s2 = [];
   1566             s3 = peg$currPos;
   1567             s4 = peg$parse_();
   1568             s5 = peg$parselogicalOrOp();
   1569             if (s5 !== peg$FAILED) {
   1570                 s6 = peg$parse_nl();
   1571                 s7 = peg$parselogicalAnd();
   1572                 if (s7 !== peg$FAILED) {
   1573                     s3 = [s5, s7];
   1574                 }
   1575                 else {
   1576                     peg$currPos = s3;
   1577                     s3 = peg$FAILED;
   1578                 }
   1579             }
   1580             else {
   1581                 peg$currPos = s3;
   1582                 s3 = peg$FAILED;
   1583             }
   1584             while (s3 !== peg$FAILED) {
   1585                 s2.push(s3);
   1586                 s3 = peg$currPos;
   1587                 s4 = peg$parse_();
   1588                 s5 = peg$parselogicalOrOp();
   1589                 if (s5 !== peg$FAILED) {
   1590                     s6 = peg$parse_nl();
   1591                     s7 = peg$parselogicalAnd();
   1592                     if (s7 !== peg$FAILED) {
   1593                         s3 = [s5, s7];
   1594                     }
   1595                     else {
   1596                         peg$currPos = s3;
   1597                         s3 = peg$FAILED;
   1598                     }
   1599                 }
   1600                 else {
   1601                     peg$currPos = s3;
   1602                     s3 = peg$FAILED;
   1603                 }
   1604             }
   1605             peg$savedPos = s0;
   1606             s0 = peg$f13(s1, s2);
   1607         }
   1608         else {
   1609             peg$currPos = s0;
   1610             s0 = peg$FAILED;
   1611         }
   1612         peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
   1613         return s0;
   1614     }
   1615     function peg$parselogicalOrOp() {
   1616         var s0, s1;
   1617         var key = peg$currPos * 82 + 19;
   1618         var cached = peg$resultsCache[key];
   1619         if (cached) {
   1620             peg$currPos = cached.nextPos;
   1621             return cached.result;
   1622         }
   1623         peg$silentFails++;
   1624         if (input.substr(peg$currPos, 2) === peg$c14) {
   1625             s0 = peg$c14;
   1626             peg$currPos += 2;
   1627         }
   1628         else {
   1629             s0 = peg$FAILED;
   1630             if (peg$silentFails === 0) {
   1631                 peg$fail(peg$e16);
   1632             }
   1633         }
   1634         peg$silentFails--;
   1635         if (s0 === peg$FAILED) {
   1636             s1 = peg$FAILED;
   1637             if (peg$silentFails === 0) {
   1638                 peg$fail(peg$e15);
   1639             }
   1640         }
   1641         peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
   1642         return s0;
   1643     }
   1644     function peg$parselogicalAnd() {
   1645         var s0, s1, s2, s3, s4, s5, s6, s7;
   1646         var key = peg$currPos * 82 + 20;
   1647         var cached = peg$resultsCache[key];
   1648         if (cached) {
   1649             peg$currPos = cached.nextPos;
   1650             return cached.result;
   1651         }
   1652         s0 = peg$currPos;
   1653         s1 = peg$parseequality();
   1654         if (s1 !== peg$FAILED) {
   1655             s2 = [];
   1656             s3 = peg$currPos;
   1657             s4 = peg$parse_();
   1658             s5 = peg$parselogicalAndOp();
   1659             if (s5 !== peg$FAILED) {
   1660                 s6 = peg$parse_nl();
   1661                 s7 = peg$parseequality();
   1662                 if (s7 !== peg$FAILED) {
   1663                     s3 = [s5, s7];
   1664                 }
   1665                 else {
   1666                     peg$currPos = s3;
   1667                     s3 = peg$FAILED;
   1668                 }
   1669             }
   1670             else {
   1671                 peg$currPos = s3;
   1672                 s3 = peg$FAILED;
   1673             }
   1674             while (s3 !== peg$FAILED) {
   1675                 s2.push(s3);
   1676                 s3 = peg$currPos;
   1677                 s4 = peg$parse_();
   1678                 s5 = peg$parselogicalAndOp();
   1679                 if (s5 !== peg$FAILED) {
   1680                     s6 = peg$parse_nl();
   1681                     s7 = peg$parseequality();
   1682                     if (s7 !== peg$FAILED) {
   1683                         s3 = [s5, s7];
   1684                     }
   1685                     else {
   1686                         peg$currPos = s3;
   1687                         s3 = peg$FAILED;
   1688                     }
   1689                 }
   1690                 else {
   1691                     peg$currPos = s3;
   1692                     s3 = peg$FAILED;
   1693                 }
   1694             }
   1695             peg$savedPos = s0;
   1696             s0 = peg$f14(s1, s2);
   1697         }
   1698         else {
   1699             peg$currPos = s0;
   1700             s0 = peg$FAILED;
   1701         }
   1702         peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
   1703         return s0;
   1704     }
   1705     function peg$parselogicalAndOp() {
   1706         var s0, s1;
   1707         var key = peg$currPos * 82 + 21;
   1708         var cached = peg$resultsCache[key];
   1709         if (cached) {
   1710             peg$currPos = cached.nextPos;
   1711             return cached.result;
   1712         }
   1713         peg$silentFails++;
   1714         if (input.substr(peg$currPos, 2) === peg$c15) {
   1715             s0 = peg$c15;
   1716             peg$currPos += 2;
   1717         }
   1718         else {
   1719             s0 = peg$FAILED;
   1720             if (peg$silentFails === 0) {
   1721                 peg$fail(peg$e17);
   1722             }
   1723         }
   1724         peg$silentFails--;
   1725         if (s0 === peg$FAILED) {
   1726             s1 = peg$FAILED;
   1727             if (peg$silentFails === 0) {
   1728                 peg$fail(peg$e15);
   1729             }
   1730         }
   1731         peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
   1732         return s0;
   1733     }
   1734     function peg$parseequality() {
   1735         var s0, s1, s2, s3, s4, s5;
   1736         var key = peg$currPos * 82 + 22;
   1737         var cached = peg$resultsCache[key];
   1738         if (cached) {
   1739             peg$currPos = cached.nextPos;
   1740             return cached.result;
   1741         }
   1742         s0 = peg$currPos;
   1743         s1 = peg$parserelational();
   1744         if (s1 !== peg$FAILED) {
   1745             s2 = peg$parse_();
   1746             s3 = peg$parseequalityOp();
   1747             if (s3 !== peg$FAILED) {
   1748                 s4 = peg$parse_nl();
   1749                 s5 = peg$parserelational();
   1750                 if (s5 !== peg$FAILED) {
   1751                     peg$savedPos = s0;
   1752                     s0 = peg$f15(s1, s3, s5);
   1753                 }
   1754                 else {
   1755                     peg$currPos = s0;
   1756                     s0 = peg$FAILED;
   1757                 }
   1758             }
   1759             else {
   1760                 peg$currPos = s0;
   1761                 s0 = peg$FAILED;
   1762             }
   1763         }
   1764         else {
   1765             peg$currPos = s0;
   1766             s0 = peg$FAILED;
   1767         }
   1768         if (s0 === peg$FAILED) {
   1769             s0 = peg$parserelational();
   1770         }
   1771         peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
   1772         return s0;
   1773     }
   1774     function peg$parseequalityOp() {
   1775         var s0, s1;
   1776         var key = peg$currPos * 82 + 23;
   1777         var cached = peg$resultsCache[key];
   1778         if (cached) {
   1779             peg$currPos = cached.nextPos;
   1780             return cached.result;
   1781         }
   1782         peg$silentFails++;
   1783         if (input.substr(peg$currPos, 2) === peg$c16) {
   1784             s0 = peg$c16;
   1785             peg$currPos += 2;
   1786         }
   1787         else {
   1788             s0 = peg$FAILED;
   1789             if (peg$silentFails === 0) {
   1790                 peg$fail(peg$e18);
   1791             }
   1792         }
   1793         if (s0 === peg$FAILED) {
   1794             if (input.substr(peg$currPos, 2) === peg$c17) {
   1795                 s0 = peg$c17;
   1796                 peg$currPos += 2;
   1797             }
   1798             else {
   1799                 s0 = peg$FAILED;
   1800                 if (peg$silentFails === 0) {
   1801                     peg$fail(peg$e19);
   1802                 }
   1803             }
   1804         }
   1805         peg$silentFails--;
   1806         if (s0 === peg$FAILED) {
   1807             s1 = peg$FAILED;
   1808             if (peg$silentFails === 0) {
   1809                 peg$fail(peg$e15);
   1810             }
   1811         }
   1812         peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
   1813         return s0;
   1814     }
   1815     function peg$parserelational() {
   1816         var s0, s1, s2, s3, s4, s5;
   1817         var key = peg$currPos * 82 + 24;
   1818         var cached = peg$resultsCache[key];
   1819         if (cached) {
   1820             peg$currPos = cached.nextPos;
   1821             return cached.result;
   1822         }
   1823         s0 = peg$currPos;
   1824         s1 = peg$parsecredibleInterval();
   1825         if (s1 !== peg$FAILED) {
   1826             s2 = peg$parse_();
   1827             s3 = peg$parserelationalOp();
   1828             if (s3 !== peg$FAILED) {
   1829                 s4 = peg$parse_nl();
   1830                 s5 = peg$parsecredibleInterval();
   1831                 if (s5 !== peg$FAILED) {
   1832                     peg$savedPos = s0;
   1833                     s0 = peg$f16(s1, s3, s5);
   1834                 }
   1835                 else {
   1836                     peg$currPos = s0;
   1837                     s0 = peg$FAILED;
   1838                 }
   1839             }
   1840             else {
   1841                 peg$currPos = s0;
   1842                 s0 = peg$FAILED;
   1843             }
   1844         }
   1845         else {
   1846             peg$currPos = s0;
   1847             s0 = peg$FAILED;
   1848         }
   1849         if (s0 === peg$FAILED) {
   1850             s0 = peg$parsecredibleInterval();
   1851         }
   1852         peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
   1853         return s0;
   1854     }
   1855     function peg$parserelationalOp() {
   1856         var s0, s1;
   1857         var key = peg$currPos * 82 + 25;
   1858         var cached = peg$resultsCache[key];
   1859         if (cached) {
   1860             peg$currPos = cached.nextPos;
   1861             return cached.result;
   1862         }
   1863         peg$silentFails++;
   1864         if (input.substr(peg$currPos, 2) === peg$c18) {
   1865             s0 = peg$c18;
   1866             peg$currPos += 2;
   1867         }
   1868         else {
   1869             s0 = peg$FAILED;
   1870             if (peg$silentFails === 0) {
   1871                 peg$fail(peg$e20);
   1872             }
   1873         }
   1874         if (s0 === peg$FAILED) {
   1875             if (input.charCodeAt(peg$currPos) === 60) {
   1876                 s0 = peg$c19;
   1877                 peg$currPos++;
   1878             }
   1879             else {
   1880                 s0 = peg$FAILED;
   1881                 if (peg$silentFails === 0) {
   1882                     peg$fail(peg$e21);
   1883                 }
   1884             }
   1885             if (s0 === peg$FAILED) {
   1886                 if (input.substr(peg$currPos, 2) === peg$c20) {
   1887                     s0 = peg$c20;
   1888                     peg$currPos += 2;
   1889                 }
   1890                 else {
   1891                     s0 = peg$FAILED;
   1892                     if (peg$silentFails === 0) {
   1893                         peg$fail(peg$e22);
   1894                     }
   1895                 }
   1896                 if (s0 === peg$FAILED) {
   1897                     if (input.charCodeAt(peg$currPos) === 62) {
   1898                         s0 = peg$c21;
   1899                         peg$currPos++;
   1900                     }
   1901                     else {
   1902                         s0 = peg$FAILED;
   1903                         if (peg$silentFails === 0) {
   1904                             peg$fail(peg$e23);
   1905                         }
   1906                     }
   1907                 }
   1908             }
   1909         }
   1910         peg$silentFails--;
   1911         if (s0 === peg$FAILED) {
   1912             s1 = peg$FAILED;
   1913             if (peg$silentFails === 0) {
   1914                 peg$fail(peg$e15);
   1915             }
   1916         }
   1917         peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
   1918         return s0;
   1919     }
   1920     function peg$parsecredibleInterval() {
   1921         var s0, s1, s2, s3, s4, s5, s6, s7;
   1922         var key = peg$currPos * 82 + 26;
   1923         var cached = peg$resultsCache[key];
   1924         if (cached) {
   1925             peg$currPos = cached.nextPos;
   1926             return cached.result;
   1927         }
   1928         s0 = peg$currPos;
   1929         s1 = peg$parseadditive();
   1930         if (s1 !== peg$FAILED) {
   1931             s2 = [];
   1932             s3 = peg$currPos;
   1933             s4 = peg$parse__();
   1934             if (s4 !== peg$FAILED) {
   1935                 s5 = peg$parsecredibleIntervalOp();
   1936                 if (s5 !== peg$FAILED) {
   1937                     s6 = peg$parse__nl();
   1938                     if (s6 !== peg$FAILED) {
   1939                         s7 = peg$parseadditive();
   1940                         if (s7 !== peg$FAILED) {
   1941                             s3 = [s5, s7];
   1942                         }
   1943                         else {
   1944                             peg$currPos = s3;
   1945                             s3 = peg$FAILED;
   1946                         }
   1947                     }
   1948                     else {
   1949                         peg$currPos = s3;
   1950                         s3 = peg$FAILED;
   1951                     }
   1952                 }
   1953                 else {
   1954                     peg$currPos = s3;
   1955                     s3 = peg$FAILED;
   1956                 }
   1957             }
   1958             else {
   1959                 peg$currPos = s3;
   1960                 s3 = peg$FAILED;
   1961             }
   1962             while (s3 !== peg$FAILED) {
   1963                 s2.push(s3);
   1964                 s3 = peg$currPos;
   1965                 s4 = peg$parse__();
   1966                 if (s4 !== peg$FAILED) {
   1967                     s5 = peg$parsecredibleIntervalOp();
   1968                     if (s5 !== peg$FAILED) {
   1969                         s6 = peg$parse__nl();
   1970                         if (s6 !== peg$FAILED) {
   1971                             s7 = peg$parseadditive();
   1972                             if (s7 !== peg$FAILED) {
   1973                                 s3 = [s5, s7];
   1974                             }
   1975                             else {
   1976                                 peg$currPos = s3;
   1977                                 s3 = peg$FAILED;
   1978                             }
   1979                         }
   1980                         else {
   1981                             peg$currPos = s3;
   1982                             s3 = peg$FAILED;
   1983                         }
   1984                     }
   1985                     else {
   1986                         peg$currPos = s3;
   1987                         s3 = peg$FAILED;
   1988                     }
   1989                 }
   1990                 else {
   1991                     peg$currPos = s3;
   1992                     s3 = peg$FAILED;
   1993                 }
   1994             }
   1995             peg$savedPos = s0;
   1996             s0 = peg$f17(s1, s2);
   1997         }
   1998         else {
   1999             peg$currPos = s0;
   2000             s0 = peg$FAILED;
   2001         }
   2002         peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
   2003         return s0;
   2004     }
   2005     function peg$parsecredibleIntervalOp() {
   2006         var s0, s1;
   2007         var key = peg$currPos * 82 + 27;
   2008         var cached = peg$resultsCache[key];
   2009         if (cached) {
   2010             peg$currPos = cached.nextPos;
   2011             return cached.result;
   2012         }
   2013         peg$silentFails++;
   2014         if (input.substr(peg$currPos, 2) === peg$c22) {
   2015             s0 = peg$c22;
   2016             peg$currPos += 2;
   2017         }
   2018         else {
   2019             s0 = peg$FAILED;
   2020             if (peg$silentFails === 0) {
   2021                 peg$fail(peg$e24);
   2022             }
   2023         }
   2024         peg$silentFails--;
   2025         if (s0 === peg$FAILED) {
   2026             s1 = peg$FAILED;
   2027             if (peg$silentFails === 0) {
   2028                 peg$fail(peg$e15);
   2029             }
   2030         }
   2031         peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
   2032         return s0;
   2033     }
   2034     function peg$parseadditive() {
   2035         var s0, s1, s2, s3, s4, s5, s6, s7;
   2036         var key = peg$currPos * 82 + 28;
   2037         var cached = peg$resultsCache[key];
   2038         if (cached) {
   2039             peg$currPos = cached.nextPos;
   2040             return cached.result;
   2041         }
   2042         s0 = peg$currPos;
   2043         s1 = peg$parsemultiplicative();
   2044         if (s1 !== peg$FAILED) {
   2045             s2 = [];
   2046             s3 = peg$currPos;
   2047             s4 = peg$parse_();
   2048             s5 = peg$parseadditiveOp();
   2049             if (s5 !== peg$FAILED) {
   2050                 s6 = peg$parse_nl();
   2051                 s7 = peg$parsemultiplicative();
   2052                 if (s7 !== peg$FAILED) {
   2053                     s3 = [s5, s7];
   2054                 }
   2055                 else {
   2056                     peg$currPos = s3;
   2057                     s3 = peg$FAILED;
   2058                 }
   2059             }
   2060             else {
   2061                 peg$currPos = s3;
   2062                 s3 = peg$FAILED;
   2063             }
   2064             while (s3 !== peg$FAILED) {
   2065                 s2.push(s3);
   2066                 s3 = peg$currPos;
   2067                 s4 = peg$parse_();
   2068                 s5 = peg$parseadditiveOp();
   2069                 if (s5 !== peg$FAILED) {
   2070                     s6 = peg$parse_nl();
   2071                     s7 = peg$parsemultiplicative();
   2072                     if (s7 !== peg$FAILED) {
   2073                         s3 = [s5, s7];
   2074                     }
   2075                     else {
   2076                         peg$currPos = s3;
   2077                         s3 = peg$FAILED;
   2078                     }
   2079                 }
   2080                 else {
   2081                     peg$currPos = s3;
   2082                     s3 = peg$FAILED;
   2083                 }
   2084             }
   2085             peg$savedPos = s0;
   2086             s0 = peg$f18(s1, s2);
   2087         }
   2088         else {
   2089             peg$currPos = s0;
   2090             s0 = peg$FAILED;
   2091         }
   2092         peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
   2093         return s0;
   2094     }
   2095     function peg$parseadditiveOp() {
   2096         var s0, s1;
   2097         var key = peg$currPos * 82 + 29;
   2098         var cached = peg$resultsCache[key];
   2099         if (cached) {
   2100             peg$currPos = cached.nextPos;
   2101             return cached.result;
   2102         }
   2103         peg$silentFails++;
   2104         if (input.charCodeAt(peg$currPos) === 43) {
   2105             s0 = peg$c23;
   2106             peg$currPos++;
   2107         }
   2108         else {
   2109             s0 = peg$FAILED;
   2110             if (peg$silentFails === 0) {
   2111                 peg$fail(peg$e25);
   2112             }
   2113         }
   2114         if (s0 === peg$FAILED) {
   2115             if (input.charCodeAt(peg$currPos) === 45) {
   2116                 s0 = peg$c24;
   2117                 peg$currPos++;
   2118             }
   2119             else {
   2120                 s0 = peg$FAILED;
   2121                 if (peg$silentFails === 0) {
   2122                     peg$fail(peg$e26);
   2123                 }
   2124             }
   2125             if (s0 === peg$FAILED) {
   2126                 if (input.substr(peg$currPos, 2) === peg$c25) {
   2127                     s0 = peg$c25;
   2128                     peg$currPos += 2;
   2129                 }
   2130                 else {
   2131                     s0 = peg$FAILED;
   2132                     if (peg$silentFails === 0) {
   2133                         peg$fail(peg$e27);
   2134                     }
   2135                 }
   2136                 if (s0 === peg$FAILED) {
   2137                     if (input.substr(peg$currPos, 2) === peg$c26) {
   2138                         s0 = peg$c26;
   2139                         peg$currPos += 2;
   2140                     }
   2141                     else {
   2142                         s0 = peg$FAILED;
   2143                         if (peg$silentFails === 0) {
   2144                             peg$fail(peg$e28);
   2145                         }
   2146                     }
   2147                 }
   2148             }
   2149         }
   2150         peg$silentFails--;
   2151         if (s0 === peg$FAILED) {
   2152             s1 = peg$FAILED;
   2153             if (peg$silentFails === 0) {
   2154                 peg$fail(peg$e15);
   2155             }
   2156         }
   2157         peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
   2158         return s0;
   2159     }
   2160     function peg$parsemultiplicative() {
   2161         var s0, s1, s2, s3, s4, s5, s6, s7;
   2162         var key = peg$currPos * 82 + 30;
   2163         var cached = peg$resultsCache[key];
   2164         if (cached) {
   2165             peg$currPos = cached.nextPos;
   2166             return cached.result;
   2167         }
   2168         s0 = peg$currPos;
   2169         s1 = peg$parsepower();
   2170         if (s1 !== peg$FAILED) {
   2171             s2 = [];
   2172             s3 = peg$currPos;
   2173             s4 = peg$parse_();
   2174             s5 = peg$parsemultiplicativeOp();
   2175             if (s5 !== peg$FAILED) {
   2176                 s6 = peg$parse_nl();
   2177                 s7 = peg$parsepower();
   2178                 if (s7 !== peg$FAILED) {
   2179                     s3 = [s5, s7];
   2180                 }
   2181                 else {
   2182                     peg$currPos = s3;
   2183                     s3 = peg$FAILED;
   2184                 }
   2185             }
   2186             else {
   2187                 peg$currPos = s3;
   2188                 s3 = peg$FAILED;
   2189             }
   2190             while (s3 !== peg$FAILED) {
   2191                 s2.push(s3);
   2192                 s3 = peg$currPos;
   2193                 s4 = peg$parse_();
   2194                 s5 = peg$parsemultiplicativeOp();
   2195                 if (s5 !== peg$FAILED) {
   2196                     s6 = peg$parse_nl();
   2197                     s7 = peg$parsepower();
   2198                     if (s7 !== peg$FAILED) {
   2199                         s3 = [s5, s7];
   2200                     }
   2201                     else {
   2202                         peg$currPos = s3;
   2203                         s3 = peg$FAILED;
   2204                     }
   2205                 }
   2206                 else {
   2207                     peg$currPos = s3;
   2208                     s3 = peg$FAILED;
   2209                 }
   2210             }
   2211             peg$savedPos = s0;
   2212             s0 = peg$f19(s1, s2);
   2213         }
   2214         else {
   2215             peg$currPos = s0;
   2216             s0 = peg$FAILED;
   2217         }
   2218         peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
   2219         return s0;
   2220     }
   2221     function peg$parsemultiplicativeOp() {
   2222         var s0, s1;
   2223         var key = peg$currPos * 82 + 31;
   2224         var cached = peg$resultsCache[key];
   2225         if (cached) {
   2226             peg$currPos = cached.nextPos;
   2227             return cached.result;
   2228         }
   2229         peg$silentFails++;
   2230         if (input.charCodeAt(peg$currPos) === 42) {
   2231             s0 = peg$c27;
   2232             peg$currPos++;
   2233         }
   2234         else {
   2235             s0 = peg$FAILED;
   2236             if (peg$silentFails === 0) {
   2237                 peg$fail(peg$e29);
   2238             }
   2239         }
   2240         if (s0 === peg$FAILED) {
   2241             if (input.charCodeAt(peg$currPos) === 47) {
   2242                 s0 = peg$c28;
   2243                 peg$currPos++;
   2244             }
   2245             else {
   2246                 s0 = peg$FAILED;
   2247                 if (peg$silentFails === 0) {
   2248                     peg$fail(peg$e30);
   2249                 }
   2250             }
   2251             if (s0 === peg$FAILED) {
   2252                 if (input.substr(peg$currPos, 2) === peg$c29) {
   2253                     s0 = peg$c29;
   2254                     peg$currPos += 2;
   2255                 }
   2256                 else {
   2257                     s0 = peg$FAILED;
   2258                     if (peg$silentFails === 0) {
   2259                         peg$fail(peg$e31);
   2260                     }
   2261                 }
   2262                 if (s0 === peg$FAILED) {
   2263                     if (input.substr(peg$currPos, 2) === peg$c30) {
   2264                         s0 = peg$c30;
   2265                         peg$currPos += 2;
   2266                     }
   2267                     else {
   2268                         s0 = peg$FAILED;
   2269                         if (peg$silentFails === 0) {
   2270                             peg$fail(peg$e32);
   2271                         }
   2272                     }
   2273                 }
   2274             }
   2275         }
   2276         peg$silentFails--;
   2277         if (s0 === peg$FAILED) {
   2278             s1 = peg$FAILED;
   2279             if (peg$silentFails === 0) {
   2280                 peg$fail(peg$e15);
   2281             }
   2282         }
   2283         peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
   2284         return s0;
   2285     }
   2286     function peg$parsepower() {
   2287         var s0, s1, s2, s3, s4, s5;
   2288         var key = peg$currPos * 82 + 32;
   2289         var cached = peg$resultsCache[key];
   2290         if (cached) {
   2291             peg$currPos = cached.nextPos;
   2292             return cached.result;
   2293         }
   2294         s0 = peg$currPos;
   2295         s1 = peg$parsechainFunctionCall();
   2296         if (s1 !== peg$FAILED) {
   2297             s2 = peg$parse_();
   2298             s3 = peg$parsepowerOp();
   2299             if (s3 !== peg$FAILED) {
   2300                 s4 = peg$parse_nl();
   2301                 s5 = peg$parsepower();
   2302                 if (s5 !== peg$FAILED) {
   2303                     peg$savedPos = s0;
   2304                     s0 = peg$f20(s1, s3, s5);
   2305                 }
   2306                 else {
   2307                     peg$currPos = s0;
   2308                     s0 = peg$FAILED;
   2309                 }
   2310             }
   2311             else {
   2312                 peg$currPos = s0;
   2313                 s0 = peg$FAILED;
   2314             }
   2315         }
   2316         else {
   2317             peg$currPos = s0;
   2318             s0 = peg$FAILED;
   2319         }
   2320         if (s0 === peg$FAILED) {
   2321             s0 = peg$parsechainFunctionCall();
   2322         }
   2323         peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
   2324         return s0;
   2325     }
   2326     function peg$parsepowerOp() {
   2327         var s0, s1;
   2328         var key = peg$currPos * 82 + 33;
   2329         var cached = peg$resultsCache[key];
   2330         if (cached) {
   2331             peg$currPos = cached.nextPos;
   2332             return cached.result;
   2333         }
   2334         peg$silentFails++;
   2335         if (input.charCodeAt(peg$currPos) === 94) {
   2336             s0 = peg$c31;
   2337             peg$currPos++;
   2338         }
   2339         else {
   2340             s0 = peg$FAILED;
   2341             if (peg$silentFails === 0) {
   2342                 peg$fail(peg$e33);
   2343             }
   2344         }
   2345         if (s0 === peg$FAILED) {
   2346             if (input.substr(peg$currPos, 2) === peg$c32) {
   2347                 s0 = peg$c32;
   2348                 peg$currPos += 2;
   2349             }
   2350             else {
   2351                 s0 = peg$FAILED;
   2352                 if (peg$silentFails === 0) {
   2353                     peg$fail(peg$e34);
   2354                 }
   2355             }
   2356         }
   2357         peg$silentFails--;
   2358         if (s0 === peg$FAILED) {
   2359             s1 = peg$FAILED;
   2360             if (peg$silentFails === 0) {
   2361                 peg$fail(peg$e15);
   2362             }
   2363         }
   2364         peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
   2365         return s0;
   2366     }
   2367     function peg$parsechainFunctionCall() {
   2368         var s0, s1, s2, s3, s4, s5, s6, s7;
   2369         var key = peg$currPos * 82 + 34;
   2370         var cached = peg$resultsCache[key];
   2371         if (cached) {
   2372             peg$currPos = cached.nextPos;
   2373             return cached.result;
   2374         }
   2375         s0 = peg$currPos;
   2376         s1 = peg$parseunary();
   2377         if (s1 !== peg$FAILED) {
   2378             s2 = [];
   2379             s3 = peg$currPos;
   2380             s4 = peg$parse_();
   2381             if (input.substr(peg$currPos, 2) === peg$c33) {
   2382                 s5 = peg$c33;
   2383                 peg$currPos += 2;
   2384             }
   2385             else {
   2386                 s5 = peg$FAILED;
   2387                 if (peg$silentFails === 0) {
   2388                     peg$fail(peg$e35);
   2389                 }
   2390             }
   2391             if (s5 !== peg$FAILED) {
   2392                 s6 = peg$parse_nl();
   2393                 s7 = peg$parsechainedFunction();
   2394                 if (s7 !== peg$FAILED) {
   2395                     s3 = s7;
   2396                 }
   2397                 else {
   2398                     peg$currPos = s3;
   2399                     s3 = peg$FAILED;
   2400                 }
   2401             }
   2402             else {
   2403                 peg$currPos = s3;
   2404                 s3 = peg$FAILED;
   2405             }
   2406             while (s3 !== peg$FAILED) {
   2407                 s2.push(s3);
   2408                 s3 = peg$currPos;
   2409                 s4 = peg$parse_();
   2410                 if (input.substr(peg$currPos, 2) === peg$c33) {
   2411                     s5 = peg$c33;
   2412                     peg$currPos += 2;
   2413                 }
   2414                 else {
   2415                     s5 = peg$FAILED;
   2416                     if (peg$silentFails === 0) {
   2417                         peg$fail(peg$e35);
   2418                     }
   2419                 }
   2420                 if (s5 !== peg$FAILED) {
   2421                     s6 = peg$parse_nl();
   2422                     s7 = peg$parsechainedFunction();
   2423                     if (s7 !== peg$FAILED) {
   2424                         s3 = s7;
   2425                     }
   2426                     else {
   2427                         peg$currPos = s3;
   2428                         s3 = peg$FAILED;
   2429                     }
   2430                 }
   2431                 else {
   2432                     peg$currPos = s3;
   2433                     s3 = peg$FAILED;
   2434                 }
   2435             }
   2436             peg$savedPos = s0;
   2437             s0 = peg$f21(s1, s2);
   2438         }
   2439         else {
   2440             peg$currPos = s0;
   2441             s0 = peg$FAILED;
   2442         }
   2443         peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
   2444         return s0;
   2445     }
   2446     function peg$parsechainedFunction() {
   2447         var s0, s1, s2, s3, s4, s5, s6;
   2448         var key = peg$currPos * 82 + 35;
   2449         var cached = peg$resultsCache[key];
   2450         if (cached) {
   2451             peg$currPos = cached.nextPos;
   2452             return cached.result;
   2453         }
   2454         s0 = peg$currPos;
   2455         s1 = peg$parsecallableBasicValue();
   2456         if (s1 !== peg$FAILED) {
   2457             if (input.charCodeAt(peg$currPos) === 40) {
   2458                 s2 = peg$c6;
   2459                 peg$currPos++;
   2460             }
   2461             else {
   2462                 s2 = peg$FAILED;
   2463                 if (peg$silentFails === 0) {
   2464                     peg$fail(peg$e6);
   2465                 }
   2466             }
   2467             if (s2 !== peg$FAILED) {
   2468                 s3 = peg$parse_nl();
   2469                 s4 = peg$parsefunctionArguments();
   2470                 s5 = peg$parse_nl();
   2471                 if (input.charCodeAt(peg$currPos) === 41) {
   2472                     s6 = peg$c7;
   2473                     peg$currPos++;
   2474                 }
   2475                 else {
   2476                     s6 = peg$FAILED;
   2477                     if (peg$silentFails === 0) {
   2478                         peg$fail(peg$e7);
   2479                     }
   2480                 }
   2481                 if (s6 !== peg$FAILED) {
   2482                     peg$savedPos = s0;
   2483                     s0 = peg$f22(s1, s4);
   2484                 }
   2485                 else {
   2486                     peg$currPos = s0;
   2487                     s0 = peg$FAILED;
   2488                 }
   2489             }
   2490             else {
   2491                 peg$currPos = s0;
   2492                 s0 = peg$FAILED;
   2493             }
   2494         }
   2495         else {
   2496             peg$currPos = s0;
   2497             s0 = peg$FAILED;
   2498         }
   2499         if (s0 === peg$FAILED) {
   2500             s0 = peg$currPos;
   2501             s1 = peg$parsecallableBasicValue();
   2502             if (s1 !== peg$FAILED) {
   2503                 peg$savedPos = s0;
   2504                 s1 = peg$f23(s1);
   2505             }
   2506             s0 = s1;
   2507         }
   2508         peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
   2509         return s0;
   2510     }
   2511     function peg$parsecallableBasicValue() {
   2512         var s0;
   2513         var key = peg$currPos * 82 + 36;
   2514         var cached = peg$resultsCache[key];
   2515         if (cached) {
   2516             peg$currPos = cached.nextPos;
   2517             return cached.result;
   2518         }
   2519         s0 = peg$parsestaticCollectionElement();
   2520         if (s0 === peg$FAILED) {
   2521             s0 = peg$parsevalueConstructor();
   2522             if (s0 === peg$FAILED) {
   2523                 s0 = peg$parsevariable();
   2524             }
   2525         }
   2526         peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
   2527         return s0;
   2528     }
   2529     function peg$parseunary() {
   2530         var s0, s1, s2, s3;
   2531         var key = peg$currPos * 82 + 37;
   2532         var cached = peg$resultsCache[key];
   2533         if (cached) {
   2534             peg$currPos = cached.nextPos;
   2535             return cached.result;
   2536         }
   2537         s0 = peg$currPos;
   2538         s1 = peg$parseunaryOperator();
   2539         if (s1 !== peg$FAILED) {
   2540             s2 = peg$parse_nl();
   2541             s3 = peg$parseunary();
   2542             if (s3 === peg$FAILED) {
   2543                 s3 = peg$parsepostOperator();
   2544             }
   2545             if (s3 !== peg$FAILED) {
   2546                 peg$savedPos = s0;
   2547                 s0 = peg$f24(s1, s3);
   2548             }
   2549             else {
   2550                 peg$currPos = s0;
   2551                 s0 = peg$FAILED;
   2552             }
   2553         }
   2554         else {
   2555             peg$currPos = s0;
   2556             s0 = peg$FAILED;
   2557         }
   2558         if (s0 === peg$FAILED) {
   2559             s0 = peg$parsepostOperator();
   2560         }
   2561         peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
   2562         return s0;
   2563     }
   2564     function peg$parseunaryOperator() {
   2565         var s0, s1;
   2566         var key = peg$currPos * 82 + 38;
   2567         var cached = peg$resultsCache[key];
   2568         if (cached) {
   2569             peg$currPos = cached.nextPos;
   2570             return cached.result;
   2571         }
   2572         peg$silentFails++;
   2573         if (input.charCodeAt(peg$currPos) === 45) {
   2574             s0 = peg$c24;
   2575             peg$currPos++;
   2576         }
   2577         else {
   2578             s0 = peg$FAILED;
   2579             if (peg$silentFails === 0) {
   2580                 peg$fail(peg$e26);
   2581             }
   2582         }
   2583         if (s0 === peg$FAILED) {
   2584             if (input.substr(peg$currPos, 2) === peg$c26) {
   2585                 s0 = peg$c26;
   2586                 peg$currPos += 2;
   2587             }
   2588             else {
   2589                 s0 = peg$FAILED;
   2590                 if (peg$silentFails === 0) {
   2591                     peg$fail(peg$e28);
   2592                 }
   2593             }
   2594             if (s0 === peg$FAILED) {
   2595                 if (input.charCodeAt(peg$currPos) === 33) {
   2596                     s0 = peg$c34;
   2597                     peg$currPos++;
   2598                 }
   2599                 else {
   2600                     s0 = peg$FAILED;
   2601                     if (peg$silentFails === 0) {
   2602                         peg$fail(peg$e37);
   2603                     }
   2604                 }
   2605             }
   2606         }
   2607         peg$silentFails--;
   2608         if (s0 === peg$FAILED) {
   2609             s1 = peg$FAILED;
   2610             if (peg$silentFails === 0) {
   2611                 peg$fail(peg$e36);
   2612             }
   2613         }
   2614         peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
   2615         return s0;
   2616     }
   2617     function peg$parsepostOperator() {
   2618         var s0;
   2619         var key = peg$currPos * 82 + 39;
   2620         var cached = peg$resultsCache[key];
   2621         if (cached) {
   2622             peg$currPos = cached.nextPos;
   2623             return cached.result;
   2624         }
   2625         s0 = peg$parsecollectionElement();
   2626         if (s0 === peg$FAILED) {
   2627             s0 = peg$parseatom();
   2628         }
   2629         peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
   2630         return s0;
   2631     }
   2632     function peg$parsestaticCollectionElement() {
   2633         var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10;
   2634         var key = peg$currPos * 82 + 40;
   2635         var cached = peg$resultsCache[key];
   2636         if (cached) {
   2637             peg$currPos = cached.nextPos;
   2638             return cached.result;
   2639         }
   2640         s0 = peg$currPos;
   2641         s1 = peg$parseatom();
   2642         if (s1 !== peg$FAILED) {
   2643             s2 = peg$currPos;
   2644             peg$silentFails++;
   2645             if (input.charCodeAt(peg$currPos) === 91) {
   2646                 s3 = peg$c35;
   2647                 peg$currPos++;
   2648             }
   2649             else {
   2650                 s3 = peg$FAILED;
   2651                 if (peg$silentFails === 0) {
   2652                     peg$fail(peg$e38);
   2653                 }
   2654             }
   2655             if (s3 === peg$FAILED) {
   2656                 if (input.charCodeAt(peg$currPos) === 46) {
   2657                     s3 = peg$c36;
   2658                     peg$currPos++;
   2659                 }
   2660                 else {
   2661                     s3 = peg$FAILED;
   2662                     if (peg$silentFails === 0) {
   2663                         peg$fail(peg$e39);
   2664                     }
   2665                 }
   2666             }
   2667             peg$silentFails--;
   2668             if (s3 !== peg$FAILED) {
   2669                 peg$currPos = s2;
   2670                 s2 = undefined;
   2671             }
   2672             else {
   2673                 s2 = peg$FAILED;
   2674             }
   2675             if (s2 !== peg$FAILED) {
   2676                 s3 = [];
   2677                 s4 = peg$currPos;
   2678                 s5 = peg$parse_();
   2679                 if (input.charCodeAt(peg$currPos) === 91) {
   2680                     s6 = peg$c35;
   2681                     peg$currPos++;
   2682                 }
   2683                 else {
   2684                     s6 = peg$FAILED;
   2685                     if (peg$silentFails === 0) {
   2686                         peg$fail(peg$e38);
   2687                     }
   2688                 }
   2689                 if (s6 !== peg$FAILED) {
   2690                     s7 = peg$parse_nl();
   2691                     s8 = peg$parseexpression();
   2692                     if (s8 !== peg$FAILED) {
   2693                         s9 = peg$parse_nl();
   2694                         if (input.charCodeAt(peg$currPos) === 93) {
   2695                             s10 = peg$c37;
   2696                             peg$currPos++;
   2697                         }
   2698                         else {
   2699                             s10 = peg$FAILED;
   2700                             if (peg$silentFails === 0) {
   2701                                 peg$fail(peg$e40);
   2702                             }
   2703                         }
   2704                         if (s10 !== peg$FAILED) {
   2705                             peg$savedPos = s4;
   2706                             s4 = peg$f25(s1, s8);
   2707                         }
   2708                         else {
   2709                             peg$currPos = s4;
   2710                             s4 = peg$FAILED;
   2711                         }
   2712                     }
   2713                     else {
   2714                         peg$currPos = s4;
   2715                         s4 = peg$FAILED;
   2716                     }
   2717                 }
   2718                 else {
   2719                     peg$currPos = s4;
   2720                     s4 = peg$FAILED;
   2721                 }
   2722                 if (s4 === peg$FAILED) {
   2723                     s4 = peg$currPos;
   2724                     if (input.charCodeAt(peg$currPos) === 46) {
   2725                         s5 = peg$c36;
   2726                         peg$currPos++;
   2727                     }
   2728                     else {
   2729                         s5 = peg$FAILED;
   2730                         if (peg$silentFails === 0) {
   2731                             peg$fail(peg$e39);
   2732                         }
   2733                     }
   2734                     if (s5 !== peg$FAILED) {
   2735                         s6 = peg$currPos;
   2736                         s7 = peg$parsedollarIdentifier();
   2737                         if (s7 !== peg$FAILED) {
   2738                             s6 = input.substring(s6, peg$currPos);
   2739                         }
   2740                         else {
   2741                             s6 = s7;
   2742                         }
   2743                         if (s6 !== peg$FAILED) {
   2744                             peg$savedPos = s4;
   2745                             s4 = peg$f26(s1, s6);
   2746                         }
   2747                         else {
   2748                             peg$currPos = s4;
   2749                             s4 = peg$FAILED;
   2750                         }
   2751                     }
   2752                     else {
   2753                         peg$currPos = s4;
   2754                         s4 = peg$FAILED;
   2755                     }
   2756                 }
   2757                 while (s4 !== peg$FAILED) {
   2758                     s3.push(s4);
   2759                     s4 = peg$currPos;
   2760                     s5 = peg$parse_();
   2761                     if (input.charCodeAt(peg$currPos) === 91) {
   2762                         s6 = peg$c35;
   2763                         peg$currPos++;
   2764                     }
   2765                     else {
   2766                         s6 = peg$FAILED;
   2767                         if (peg$silentFails === 0) {
   2768                             peg$fail(peg$e38);
   2769                         }
   2770                     }
   2771                     if (s6 !== peg$FAILED) {
   2772                         s7 = peg$parse_nl();
   2773                         s8 = peg$parseexpression();
   2774                         if (s8 !== peg$FAILED) {
   2775                             s9 = peg$parse_nl();
   2776                             if (input.charCodeAt(peg$currPos) === 93) {
   2777                                 s10 = peg$c37;
   2778                                 peg$currPos++;
   2779                             }
   2780                             else {
   2781                                 s10 = peg$FAILED;
   2782                                 if (peg$silentFails === 0) {
   2783                                     peg$fail(peg$e40);
   2784                                 }
   2785                             }
   2786                             if (s10 !== peg$FAILED) {
   2787                                 peg$savedPos = s4;
   2788                                 s4 = peg$f25(s1, s8);
   2789                             }
   2790                             else {
   2791                                 peg$currPos = s4;
   2792                                 s4 = peg$FAILED;
   2793                             }
   2794                         }
   2795                         else {
   2796                             peg$currPos = s4;
   2797                             s4 = peg$FAILED;
   2798                         }
   2799                     }
   2800                     else {
   2801                         peg$currPos = s4;
   2802                         s4 = peg$FAILED;
   2803                     }
   2804                     if (s4 === peg$FAILED) {
   2805                         s4 = peg$currPos;
   2806                         if (input.charCodeAt(peg$currPos) === 46) {
   2807                             s5 = peg$c36;
   2808                             peg$currPos++;
   2809                         }
   2810                         else {
   2811                             s5 = peg$FAILED;
   2812                             if (peg$silentFails === 0) {
   2813                                 peg$fail(peg$e39);
   2814                             }
   2815                         }
   2816                         if (s5 !== peg$FAILED) {
   2817                             s6 = peg$currPos;
   2818                             s7 = peg$parsedollarIdentifier();
   2819                             if (s7 !== peg$FAILED) {
   2820                                 s6 = input.substring(s6, peg$currPos);
   2821                             }
   2822                             else {
   2823                                 s6 = s7;
   2824                             }
   2825                             if (s6 !== peg$FAILED) {
   2826                                 peg$savedPos = s4;
   2827                                 s4 = peg$f26(s1, s6);
   2828                             }
   2829                             else {
   2830                                 peg$currPos = s4;
   2831                                 s4 = peg$FAILED;
   2832                             }
   2833                         }
   2834                         else {
   2835                             peg$currPos = s4;
   2836                             s4 = peg$FAILED;
   2837                         }
   2838                     }
   2839                 }
   2840                 peg$savedPos = s0;
   2841                 s0 = peg$f27(s1, s3);
   2842             }
   2843             else {
   2844                 peg$currPos = s0;
   2845                 s0 = peg$FAILED;
   2846             }
   2847         }
   2848         else {
   2849             peg$currPos = s0;
   2850             s0 = peg$FAILED;
   2851         }
   2852         peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
   2853         return s0;
   2854     }
   2855     function peg$parsecollectionElement() {
   2856         var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10;
   2857         var key = peg$currPos * 82 + 41;
   2858         var cached = peg$resultsCache[key];
   2859         if (cached) {
   2860             peg$currPos = cached.nextPos;
   2861             return cached.result;
   2862         }
   2863         s0 = peg$currPos;
   2864         s1 = peg$parseatom();
   2865         if (s1 !== peg$FAILED) {
   2866             s2 = peg$currPos;
   2867             peg$silentFails++;
   2868             if (input.charCodeAt(peg$currPos) === 91) {
   2869                 s3 = peg$c35;
   2870                 peg$currPos++;
   2871             }
   2872             else {
   2873                 s3 = peg$FAILED;
   2874                 if (peg$silentFails === 0) {
   2875                     peg$fail(peg$e38);
   2876                 }
   2877             }
   2878             if (s3 === peg$FAILED) {
   2879                 if (input.charCodeAt(peg$currPos) === 40) {
   2880                     s3 = peg$c6;
   2881                     peg$currPos++;
   2882                 }
   2883                 else {
   2884                     s3 = peg$FAILED;
   2885                     if (peg$silentFails === 0) {
   2886                         peg$fail(peg$e6);
   2887                     }
   2888                 }
   2889                 if (s3 === peg$FAILED) {
   2890                     if (input.charCodeAt(peg$currPos) === 46) {
   2891                         s3 = peg$c36;
   2892                         peg$currPos++;
   2893                     }
   2894                     else {
   2895                         s3 = peg$FAILED;
   2896                         if (peg$silentFails === 0) {
   2897                             peg$fail(peg$e39);
   2898                         }
   2899                     }
   2900                 }
   2901             }
   2902             peg$silentFails--;
   2903             if (s3 !== peg$FAILED) {
   2904                 peg$currPos = s2;
   2905                 s2 = undefined;
   2906             }
   2907             else {
   2908                 s2 = peg$FAILED;
   2909             }
   2910             if (s2 !== peg$FAILED) {
   2911                 s3 = [];
   2912                 s4 = peg$currPos;
   2913                 s5 = peg$parse_();
   2914                 if (input.charCodeAt(peg$currPos) === 40) {
   2915                     s6 = peg$c6;
   2916                     peg$currPos++;
   2917                 }
   2918                 else {
   2919                     s6 = peg$FAILED;
   2920                     if (peg$silentFails === 0) {
   2921                         peg$fail(peg$e6);
   2922                     }
   2923                 }
   2924                 if (s6 !== peg$FAILED) {
   2925                     s7 = peg$parse_nl();
   2926                     s8 = peg$parsefunctionArguments();
   2927                     s9 = peg$parse_nl();
   2928                     if (input.charCodeAt(peg$currPos) === 41) {
   2929                         s10 = peg$c7;
   2930                         peg$currPos++;
   2931                     }
   2932                     else {
   2933                         s10 = peg$FAILED;
   2934                         if (peg$silentFails === 0) {
   2935                             peg$fail(peg$e7);
   2936                         }
   2937                     }
   2938                     if (s10 !== peg$FAILED) {
   2939                         peg$savedPos = s4;
   2940                         s4 = peg$f28(s1, s8);
   2941                     }
   2942                     else {
   2943                         peg$currPos = s4;
   2944                         s4 = peg$FAILED;
   2945                     }
   2946                 }
   2947                 else {
   2948                     peg$currPos = s4;
   2949                     s4 = peg$FAILED;
   2950                 }
   2951                 if (s4 === peg$FAILED) {
   2952                     s4 = peg$currPos;
   2953                     s5 = peg$parse_();
   2954                     if (input.charCodeAt(peg$currPos) === 91) {
   2955                         s6 = peg$c35;
   2956                         peg$currPos++;
   2957                     }
   2958                     else {
   2959                         s6 = peg$FAILED;
   2960                         if (peg$silentFails === 0) {
   2961                             peg$fail(peg$e38);
   2962                         }
   2963                     }
   2964                     if (s6 !== peg$FAILED) {
   2965                         s7 = peg$parse_nl();
   2966                         s8 = peg$parseexpression();
   2967                         if (s8 !== peg$FAILED) {
   2968                             s9 = peg$parse_nl();
   2969                             if (input.charCodeAt(peg$currPos) === 93) {
   2970                                 s10 = peg$c37;
   2971                                 peg$currPos++;
   2972                             }
   2973                             else {
   2974                                 s10 = peg$FAILED;
   2975                                 if (peg$silentFails === 0) {
   2976                                     peg$fail(peg$e40);
   2977                                 }
   2978                             }
   2979                             if (s10 !== peg$FAILED) {
   2980                                 peg$savedPos = s4;
   2981                                 s4 = peg$f29(s1, s8);
   2982                             }
   2983                             else {
   2984                                 peg$currPos = s4;
   2985                                 s4 = peg$FAILED;
   2986                             }
   2987                         }
   2988                         else {
   2989                             peg$currPos = s4;
   2990                             s4 = peg$FAILED;
   2991                         }
   2992                     }
   2993                     else {
   2994                         peg$currPos = s4;
   2995                         s4 = peg$FAILED;
   2996                     }
   2997                     if (s4 === peg$FAILED) {
   2998                         s4 = peg$currPos;
   2999                         if (input.charCodeAt(peg$currPos) === 46) {
   3000                             s5 = peg$c36;
   3001                             peg$currPos++;
   3002                         }
   3003                         else {
   3004                             s5 = peg$FAILED;
   3005                             if (peg$silentFails === 0) {
   3006                                 peg$fail(peg$e39);
   3007                             }
   3008                         }
   3009                         if (s5 !== peg$FAILED) {
   3010                             s6 = peg$currPos;
   3011                             s7 = peg$parsedollarIdentifier();
   3012                             if (s7 !== peg$FAILED) {
   3013                                 s6 = input.substring(s6, peg$currPos);
   3014                             }
   3015                             else {
   3016                                 s6 = s7;
   3017                             }
   3018                             if (s6 !== peg$FAILED) {
   3019                                 peg$savedPos = s4;
   3020                                 s4 = peg$f30(s1, s6);
   3021                             }
   3022                             else {
   3023                                 peg$currPos = s4;
   3024                                 s4 = peg$FAILED;
   3025                             }
   3026                         }
   3027                         else {
   3028                             peg$currPos = s4;
   3029                             s4 = peg$FAILED;
   3030                         }
   3031                     }
   3032                 }
   3033                 while (s4 !== peg$FAILED) {
   3034                     s3.push(s4);
   3035                     s4 = peg$currPos;
   3036                     s5 = peg$parse_();
   3037                     if (input.charCodeAt(peg$currPos) === 40) {
   3038                         s6 = peg$c6;
   3039                         peg$currPos++;
   3040                     }
   3041                     else {
   3042                         s6 = peg$FAILED;
   3043                         if (peg$silentFails === 0) {
   3044                             peg$fail(peg$e6);
   3045                         }
   3046                     }
   3047                     if (s6 !== peg$FAILED) {
   3048                         s7 = peg$parse_nl();
   3049                         s8 = peg$parsefunctionArguments();
   3050                         s9 = peg$parse_nl();
   3051                         if (input.charCodeAt(peg$currPos) === 41) {
   3052                             s10 = peg$c7;
   3053                             peg$currPos++;
   3054                         }
   3055                         else {
   3056                             s10 = peg$FAILED;
   3057                             if (peg$silentFails === 0) {
   3058                                 peg$fail(peg$e7);
   3059                             }
   3060                         }
   3061                         if (s10 !== peg$FAILED) {
   3062                             peg$savedPos = s4;
   3063                             s4 = peg$f28(s1, s8);
   3064                         }
   3065                         else {
   3066                             peg$currPos = s4;
   3067                             s4 = peg$FAILED;
   3068                         }
   3069                     }
   3070                     else {
   3071                         peg$currPos = s4;
   3072                         s4 = peg$FAILED;
   3073                     }
   3074                     if (s4 === peg$FAILED) {
   3075                         s4 = peg$currPos;
   3076                         s5 = peg$parse_();
   3077                         if (input.charCodeAt(peg$currPos) === 91) {
   3078                             s6 = peg$c35;
   3079                             peg$currPos++;
   3080                         }
   3081                         else {
   3082                             s6 = peg$FAILED;
   3083                             if (peg$silentFails === 0) {
   3084                                 peg$fail(peg$e38);
   3085                             }
   3086                         }
   3087                         if (s6 !== peg$FAILED) {
   3088                             s7 = peg$parse_nl();
   3089                             s8 = peg$parseexpression();
   3090                             if (s8 !== peg$FAILED) {
   3091                                 s9 = peg$parse_nl();
   3092                                 if (input.charCodeAt(peg$currPos) === 93) {
   3093                                     s10 = peg$c37;
   3094                                     peg$currPos++;
   3095                                 }
   3096                                 else {
   3097                                     s10 = peg$FAILED;
   3098                                     if (peg$silentFails === 0) {
   3099                                         peg$fail(peg$e40);
   3100                                     }
   3101                                 }
   3102                                 if (s10 !== peg$FAILED) {
   3103                                     peg$savedPos = s4;
   3104                                     s4 = peg$f29(s1, s8);
   3105                                 }
   3106                                 else {
   3107                                     peg$currPos = s4;
   3108                                     s4 = peg$FAILED;
   3109                                 }
   3110                             }
   3111                             else {
   3112                                 peg$currPos = s4;
   3113                                 s4 = peg$FAILED;
   3114                             }
   3115                         }
   3116                         else {
   3117                             peg$currPos = s4;
   3118                             s4 = peg$FAILED;
   3119                         }
   3120                         if (s4 === peg$FAILED) {
   3121                             s4 = peg$currPos;
   3122                             if (input.charCodeAt(peg$currPos) === 46) {
   3123                                 s5 = peg$c36;
   3124                                 peg$currPos++;
   3125                             }
   3126                             else {
   3127                                 s5 = peg$FAILED;
   3128                                 if (peg$silentFails === 0) {
   3129                                     peg$fail(peg$e39);
   3130                                 }
   3131                             }
   3132                             if (s5 !== peg$FAILED) {
   3133                                 s6 = peg$currPos;
   3134                                 s7 = peg$parsedollarIdentifier();
   3135                                 if (s7 !== peg$FAILED) {
   3136                                     s6 = input.substring(s6, peg$currPos);
   3137                                 }
   3138                                 else {
   3139                                     s6 = s7;
   3140                                 }
   3141                                 if (s6 !== peg$FAILED) {
   3142                                     peg$savedPos = s4;
   3143                                     s4 = peg$f30(s1, s6);
   3144                                 }
   3145                                 else {
   3146                                     peg$currPos = s4;
   3147                                     s4 = peg$FAILED;
   3148                                 }
   3149                             }
   3150                             else {
   3151                                 peg$currPos = s4;
   3152                                 s4 = peg$FAILED;
   3153                             }
   3154                         }
   3155                     }
   3156                 }
   3157                 peg$savedPos = s0;
   3158                 s0 = peg$f31(s1, s3);
   3159             }
   3160             else {
   3161                 peg$currPos = s0;
   3162                 s0 = peg$FAILED;
   3163             }
   3164         }
   3165         else {
   3166             peg$currPos = s0;
   3167             s0 = peg$FAILED;
   3168         }
   3169         peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
   3170         return s0;
   3171     }
   3172     function peg$parsefunctionArguments() {
   3173         var s0, s1, s2;
   3174         var key = peg$currPos * 82 + 42;
   3175         var cached = peg$resultsCache[key];
   3176         if (cached) {
   3177             peg$currPos = cached.nextPos;
   3178             return cached.result;
   3179         }
   3180         s0 = [];
   3181         s1 = peg$parseexpression();
   3182         while (s1 !== peg$FAILED) {
   3183             s0.push(s1);
   3184             s1 = peg$currPos;
   3185             s2 = peg$parsecommaSeparator();
   3186             if (s2 !== peg$FAILED) {
   3187                 s2 = peg$parseexpression();
   3188                 if (s2 === peg$FAILED) {
   3189                     peg$currPos = s1;
   3190                     s1 = peg$FAILED;
   3191                 }
   3192                 else {
   3193                     s1 = s2;
   3194                 }
   3195             }
   3196             else {
   3197                 s1 = s2;
   3198             }
   3199         }
   3200         peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
   3201         return s0;
   3202     }
   3203     function peg$parseatom() {
   3204         var s0, s1, s2, s3, s4, s5;
   3205         var key = peg$currPos * 82 + 43;
   3206         var cached = peg$resultsCache[key];
   3207         if (cached) {
   3208             peg$currPos = cached.nextPos;
   3209             return cached.result;
   3210         }
   3211         s0 = peg$currPos;
   3212         if (input.charCodeAt(peg$currPos) === 40) {
   3213             s1 = peg$c6;
   3214             peg$currPos++;
   3215         }
   3216         else {
   3217             s1 = peg$FAILED;
   3218             if (peg$silentFails === 0) {
   3219                 peg$fail(peg$e6);
   3220             }
   3221         }
   3222         if (s1 !== peg$FAILED) {
   3223             s2 = peg$parse_nl();
   3224             s3 = peg$parseexpression();
   3225             if (s3 !== peg$FAILED) {
   3226                 s4 = peg$parse_nl();
   3227                 if (input.charCodeAt(peg$currPos) === 41) {
   3228                     s5 = peg$c7;
   3229                     peg$currPos++;
   3230                 }
   3231                 else {
   3232                     s5 = peg$FAILED;
   3233                     if (peg$silentFails === 0) {
   3234                         peg$fail(peg$e7);
   3235                     }
   3236                 }
   3237                 if (s5 !== peg$FAILED) {
   3238                     s0 = s3;
   3239                 }
   3240                 else {
   3241                     peg$currPos = s0;
   3242                     s0 = peg$FAILED;
   3243                 }
   3244             }
   3245             else {
   3246                 peg$currPos = s0;
   3247                 s0 = peg$FAILED;
   3248             }
   3249         }
   3250         else {
   3251             peg$currPos = s0;
   3252             s0 = peg$FAILED;
   3253         }
   3254         if (s0 === peg$FAILED) {
   3255             s0 = peg$parsebasicValue();
   3256         }
   3257         peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
   3258         return s0;
   3259     }
   3260     function peg$parsebasicValue() {
   3261         var s0;
   3262         var key = peg$currPos * 82 + 44;
   3263         var cached = peg$resultsCache[key];
   3264         if (cached) {
   3265             peg$currPos = cached.nextPos;
   3266             return cached.result;
   3267         }
   3268         s0 = peg$parsevalueConstructor();
   3269         if (s0 === peg$FAILED) {
   3270             s0 = peg$parsebasicLiteral();
   3271         }
   3272         peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
   3273         return s0;
   3274     }
   3275     function peg$parsebasicLiteral() {
   3276         var s0;
   3277         var key = peg$currPos * 82 + 45;
   3278         var cached = peg$resultsCache[key];
   3279         if (cached) {
   3280             peg$currPos = cached.nextPos;
   3281             return cached.result;
   3282         }
   3283         s0 = peg$parsestring();
   3284         if (s0 === peg$FAILED) {
   3285             s0 = peg$parsenumber();
   3286             if (s0 === peg$FAILED) {
   3287                 s0 = peg$parseboolean();
   3288                 if (s0 === peg$FAILED) {
   3289                     s0 = peg$parsevariable();
   3290                     if (s0 === peg$FAILED) {
   3291                         s0 = peg$parsevoidLiteral();
   3292                     }
   3293                 }
   3294             }
   3295         }
   3296         peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
   3297         return s0;
   3298     }
   3299     function peg$parsevoidLiteral() {
   3300         var s0, s1;
   3301         var key = peg$currPos * 82 + 46;
   3302         var cached = peg$resultsCache[key];
   3303         if (cached) {
   3304             peg$currPos = cached.nextPos;
   3305             return cached.result;
   3306         }
   3307         peg$silentFails++;
   3308         s0 = peg$currPos;
   3309         if (input.substr(peg$currPos, 2) === peg$c38) {
   3310             s1 = peg$c38;
   3311             peg$currPos += 2;
   3312         }
   3313         else {
   3314             s1 = peg$FAILED;
   3315             if (peg$silentFails === 0) {
   3316                 peg$fail(peg$e42);
   3317             }
   3318         }
   3319         if (s1 !== peg$FAILED) {
   3320             peg$savedPos = s0;
   3321             s1 = peg$f32();
   3322         }
   3323         s0 = s1;
   3324         peg$silentFails--;
   3325         if (s0 === peg$FAILED) {
   3326             s1 = peg$FAILED;
   3327             if (peg$silentFails === 0) {
   3328                 peg$fail(peg$e41);
   3329             }
   3330         }
   3331         peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
   3332         return s0;
   3333     }
   3334     function peg$parsevariable() {
   3335         var s0;
   3336         var key = peg$currPos * 82 + 47;
   3337         var cached = peg$resultsCache[key];
   3338         if (cached) {
   3339             peg$currPos = cached.nextPos;
   3340             return cached.result;
   3341         }
   3342         s0 = peg$parsedollarIdentifierWithModule();
   3343         if (s0 === peg$FAILED) {
   3344             s0 = peg$parsedollarIdentifier();
   3345         }
   3346         peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
   3347         return s0;
   3348     }
   3349     function peg$parsedollarIdentifierWithModule() {
   3350         var s0, s1, s2, s3, s4, s5, s6, s7;
   3351         var key = peg$currPos * 82 + 48;
   3352         var cached = peg$resultsCache[key];
   3353         if (cached) {
   3354             peg$currPos = cached.nextPos;
   3355             return cached.result;
   3356         }
   3357         peg$silentFails++;
   3358         s0 = peg$currPos;
   3359         s1 = peg$currPos;
   3360         s2 = peg$parsemoduleIdentifier();
   3361         if (s2 !== peg$FAILED) {
   3362             s1 = input.substring(s1, peg$currPos);
   3363         }
   3364         else {
   3365             s1 = s2;
   3366         }
   3367         if (s1 !== peg$FAILED) {
   3368             s2 = [];
   3369             s3 = peg$currPos;
   3370             if (input.charCodeAt(peg$currPos) === 46) {
   3371                 s4 = peg$c36;
   3372                 peg$currPos++;
   3373             }
   3374             else {
   3375                 s4 = peg$FAILED;
   3376                 if (peg$silentFails === 0) {
   3377                     peg$fail(peg$e39);
   3378                 }
   3379             }
   3380             if (s4 !== peg$FAILED) {
   3381                 s5 = peg$parse_nl();
   3382                 s6 = peg$currPos;
   3383                 s7 = peg$parsemoduleIdentifier();
   3384                 if (s7 !== peg$FAILED) {
   3385                     s6 = input.substring(s6, peg$currPos);
   3386                 }
   3387                 else {
   3388                     s6 = s7;
   3389                 }
   3390                 if (s6 !== peg$FAILED) {
   3391                     s3 = s6;
   3392                 }
   3393                 else {
   3394                     peg$currPos = s3;
   3395                     s3 = peg$FAILED;
   3396                 }
   3397             }
   3398             else {
   3399                 peg$currPos = s3;
   3400                 s3 = peg$FAILED;
   3401             }
   3402             while (s3 !== peg$FAILED) {
   3403                 s2.push(s3);
   3404                 s3 = peg$currPos;
   3405                 if (input.charCodeAt(peg$currPos) === 46) {
   3406                     s4 = peg$c36;
   3407                     peg$currPos++;
   3408                 }
   3409                 else {
   3410                     s4 = peg$FAILED;
   3411                     if (peg$silentFails === 0) {
   3412                         peg$fail(peg$e39);
   3413                     }
   3414                 }
   3415                 if (s4 !== peg$FAILED) {
   3416                     s5 = peg$parse_nl();
   3417                     s6 = peg$currPos;
   3418                     s7 = peg$parsemoduleIdentifier();
   3419                     if (s7 !== peg$FAILED) {
   3420                         s6 = input.substring(s6, peg$currPos);
   3421                     }
   3422                     else {
   3423                         s6 = s7;
   3424                     }
   3425                     if (s6 !== peg$FAILED) {
   3426                         s3 = s6;
   3427                     }
   3428                     else {
   3429                         peg$currPos = s3;
   3430                         s3 = peg$FAILED;
   3431                     }
   3432                 }
   3433                 else {
   3434                     peg$currPos = s3;
   3435                     s3 = peg$FAILED;
   3436                 }
   3437             }
   3438             if (input.charCodeAt(peg$currPos) === 46) {
   3439                 s3 = peg$c36;
   3440                 peg$currPos++;
   3441             }
   3442             else {
   3443                 s3 = peg$FAILED;
   3444                 if (peg$silentFails === 0) {
   3445                     peg$fail(peg$e39);
   3446                 }
   3447             }
   3448             if (s3 !== peg$FAILED) {
   3449                 s4 = peg$parse_nl();
   3450                 s5 = peg$currPos;
   3451                 s6 = peg$parsedollarIdentifier();
   3452                 if (s6 !== peg$FAILED) {
   3453                     s5 = input.substring(s5, peg$currPos);
   3454                 }
   3455                 else {
   3456                     s5 = s6;
   3457                 }
   3458                 if (s5 !== peg$FAILED) {
   3459                     peg$savedPos = s0;
   3460                     s0 = peg$f33(s1, s2, s5);
   3461                 }
   3462                 else {
   3463                     peg$currPos = s0;
   3464                     s0 = peg$FAILED;
   3465                 }
   3466             }
   3467             else {
   3468                 peg$currPos = s0;
   3469                 s0 = peg$FAILED;
   3470             }
   3471         }
   3472         else {
   3473             peg$currPos = s0;
   3474             s0 = peg$FAILED;
   3475         }
   3476         peg$silentFails--;
   3477         if (s0 === peg$FAILED) {
   3478             s1 = peg$FAILED;
   3479             if (peg$silentFails === 0) {
   3480                 peg$fail(peg$e43);
   3481             }
   3482         }
   3483         peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
   3484         return s0;
   3485     }
   3486     function peg$parsemoduleIdentifier() {
   3487         var s0, s1, s2, s3;
   3488         var key = peg$currPos * 82 + 49;
   3489         var cached = peg$resultsCache[key];
   3490         if (cached) {
   3491             peg$currPos = cached.nextPos;
   3492             return cached.result;
   3493         }
   3494         peg$silentFails++;
   3495         s0 = peg$currPos;
   3496         s1 = [];
   3497         if (peg$r0.test(input.charAt(peg$currPos))) {
   3498             s2 = input.charAt(peg$currPos);
   3499             peg$currPos++;
   3500         }
   3501         else {
   3502             s2 = peg$FAILED;
   3503             if (peg$silentFails === 0) {
   3504                 peg$fail(peg$e44);
   3505             }
   3506         }
   3507         if (s2 !== peg$FAILED) {
   3508             while (s2 !== peg$FAILED) {
   3509                 s1.push(s2);
   3510                 if (peg$r0.test(input.charAt(peg$currPos))) {
   3511                     s2 = input.charAt(peg$currPos);
   3512                     peg$currPos++;
   3513                 }
   3514                 else {
   3515                     s2 = peg$FAILED;
   3516                     if (peg$silentFails === 0) {
   3517                         peg$fail(peg$e44);
   3518                     }
   3519                 }
   3520             }
   3521         }
   3522         else {
   3523             s1 = peg$FAILED;
   3524         }
   3525         if (s1 !== peg$FAILED) {
   3526             s2 = [];
   3527             if (peg$r1.test(input.charAt(peg$currPos))) {
   3528                 s3 = input.charAt(peg$currPos);
   3529                 peg$currPos++;
   3530             }
   3531             else {
   3532                 s3 = peg$FAILED;
   3533                 if (peg$silentFails === 0) {
   3534                     peg$fail(peg$e45);
   3535                 }
   3536             }
   3537             while (s3 !== peg$FAILED) {
   3538                 s2.push(s3);
   3539                 if (peg$r1.test(input.charAt(peg$currPos))) {
   3540                     s3 = input.charAt(peg$currPos);
   3541                     peg$currPos++;
   3542                 }
   3543                 else {
   3544                     s3 = peg$FAILED;
   3545                     if (peg$silentFails === 0) {
   3546                         peg$fail(peg$e45);
   3547                     }
   3548                 }
   3549             }
   3550             s1 = [s1, s2];
   3551             s0 = s1;
   3552         }
   3553         else {
   3554             peg$currPos = s0;
   3555             s0 = peg$FAILED;
   3556         }
   3557         peg$silentFails--;
   3558         if (s0 === peg$FAILED) {
   3559             s1 = peg$FAILED;
   3560             if (peg$silentFails === 0) {
   3561                 peg$fail(peg$e43);
   3562             }
   3563         }
   3564         peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
   3565         return s0;
   3566     }
   3567     function peg$parseidentifier() {
   3568         var s0, s1, s2, s3, s4;
   3569         var key = peg$currPos * 82 + 50;
   3570         var cached = peg$resultsCache[key];
   3571         if (cached) {
   3572             peg$currPos = cached.nextPos;
   3573             return cached.result;
   3574         }
   3575         peg$silentFails++;
   3576         s0 = peg$currPos;
   3577         s1 = peg$currPos;
   3578         s2 = [];
   3579         if (peg$r2.test(input.charAt(peg$currPos))) {
   3580             s3 = input.charAt(peg$currPos);
   3581             peg$currPos++;
   3582         }
   3583         else {
   3584             s3 = peg$FAILED;
   3585             if (peg$silentFails === 0) {
   3586                 peg$fail(peg$e46);
   3587             }
   3588         }
   3589         if (s3 !== peg$FAILED) {
   3590             while (s3 !== peg$FAILED) {
   3591                 s2.push(s3);
   3592                 if (peg$r2.test(input.charAt(peg$currPos))) {
   3593                     s3 = input.charAt(peg$currPos);
   3594                     peg$currPos++;
   3595                 }
   3596                 else {
   3597                     s3 = peg$FAILED;
   3598                     if (peg$silentFails === 0) {
   3599                         peg$fail(peg$e46);
   3600                     }
   3601                 }
   3602             }
   3603         }
   3604         else {
   3605             s2 = peg$FAILED;
   3606         }
   3607         if (s2 !== peg$FAILED) {
   3608             s3 = [];
   3609             if (peg$r1.test(input.charAt(peg$currPos))) {
   3610                 s4 = input.charAt(peg$currPos);
   3611                 peg$currPos++;
   3612             }
   3613             else {
   3614                 s4 = peg$FAILED;
   3615                 if (peg$silentFails === 0) {
   3616                     peg$fail(peg$e45);
   3617                 }
   3618             }
   3619             while (s4 !== peg$FAILED) {
   3620                 s3.push(s4);
   3621                 if (peg$r1.test(input.charAt(peg$currPos))) {
   3622                     s4 = input.charAt(peg$currPos);
   3623                     peg$currPos++;
   3624                 }
   3625                 else {
   3626                     s4 = peg$FAILED;
   3627                     if (peg$silentFails === 0) {
   3628                         peg$fail(peg$e45);
   3629                     }
   3630                 }
   3631             }
   3632             s2 = [s2, s3];
   3633             s1 = s2;
   3634         }
   3635         else {
   3636             peg$currPos = s1;
   3637             s1 = peg$FAILED;
   3638         }
   3639         if (s1 !== peg$FAILED) {
   3640             peg$savedPos = s0;
   3641             s1 = peg$f34();
   3642         }
   3643         s0 = s1;
   3644         peg$silentFails--;
   3645         if (s0 === peg$FAILED) {
   3646             s1 = peg$FAILED;
   3647             if (peg$silentFails === 0) {
   3648                 peg$fail(peg$e43);
   3649             }
   3650         }
   3651         peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
   3652         return s0;
   3653     }
   3654     function peg$parseunitIdentifier() {
   3655         var s0, s1;
   3656         var key = peg$currPos * 82 + 51;
   3657         var cached = peg$resultsCache[key];
   3658         if (cached) {
   3659             peg$currPos = cached.nextPos;
   3660             return cached.result;
   3661         }
   3662         peg$silentFails++;
   3663         if (input.substr(peg$currPos, 7) === peg$c39) {
   3664             s0 = peg$c39;
   3665             peg$currPos += 7;
   3666         }
   3667         else {
   3668             s0 = peg$FAILED;
   3669             if (peg$silentFails === 0) {
   3670                 peg$fail(peg$e47);
   3671             }
   3672         }
   3673         if (s0 === peg$FAILED) {
   3674             if (input.substr(peg$currPos, 5) === peg$c40) {
   3675                 s0 = peg$c40;
   3676                 peg$currPos += 5;
   3677             }
   3678             else {
   3679                 s0 = peg$FAILED;
   3680                 if (peg$silentFails === 0) {
   3681                     peg$fail(peg$e48);
   3682                 }
   3683             }
   3684             if (s0 === peg$FAILED) {
   3685                 if (input.substr(peg$currPos, 4) === peg$c41) {
   3686                     s0 = peg$c41;
   3687                     peg$currPos += 4;
   3688                 }
   3689                 else {
   3690                     s0 = peg$FAILED;
   3691                     if (peg$silentFails === 0) {
   3692                         peg$fail(peg$e49);
   3693                     }
   3694                 }
   3695                 if (s0 === peg$FAILED) {
   3696                     if (input.substr(peg$currPos, 5) === peg$c42) {
   3697                         s0 = peg$c42;
   3698                         peg$currPos += 5;
   3699                     }
   3700                     else {
   3701                         s0 = peg$FAILED;
   3702                         if (peg$silentFails === 0) {
   3703                             peg$fail(peg$e50);
   3704                         }
   3705                     }
   3706                     if (s0 === peg$FAILED) {
   3707                         if (input.charCodeAt(peg$currPos) === 110) {
   3708                             s0 = peg$c43;
   3709                             peg$currPos++;
   3710                         }
   3711                         else {
   3712                             s0 = peg$FAILED;
   3713                             if (peg$silentFails === 0) {
   3714                                 peg$fail(peg$e51);
   3715                             }
   3716                         }
   3717                         if (s0 === peg$FAILED) {
   3718                             if (input.charCodeAt(peg$currPos) === 109) {
   3719                                 s0 = peg$c44;
   3720                                 peg$currPos++;
   3721                             }
   3722                             else {
   3723                                 s0 = peg$FAILED;
   3724                                 if (peg$silentFails === 0) {
   3725                                     peg$fail(peg$e52);
   3726                                 }
   3727                             }
   3728                             if (s0 === peg$FAILED) {
   3729                                 if (input.charCodeAt(peg$currPos) === 107) {
   3730                                     s0 = peg$c45;
   3731                                     peg$currPos++;
   3732                                 }
   3733                                 else {
   3734                                     s0 = peg$FAILED;
   3735                                     if (peg$silentFails === 0) {
   3736                                         peg$fail(peg$e53);
   3737                                     }
   3738                                 }
   3739                                 if (s0 === peg$FAILED) {
   3740                                     if (input.charCodeAt(peg$currPos) === 77) {
   3741                                         s0 = peg$c46;
   3742                                         peg$currPos++;
   3743                                     }
   3744                                     else {
   3745                                         s0 = peg$FAILED;
   3746                                         if (peg$silentFails === 0) {
   3747                                             peg$fail(peg$e54);
   3748                                         }
   3749                                     }
   3750                                     if (s0 === peg$FAILED) {
   3751                                         if (input.charCodeAt(peg$currPos) === 66) {
   3752                                             s0 = peg$c47;
   3753                                             peg$currPos++;
   3754                                         }
   3755                                         else {
   3756                                             s0 = peg$FAILED;
   3757                                             if (peg$silentFails === 0) {
   3758                                                 peg$fail(peg$e55);
   3759                                             }
   3760                                         }
   3761                                         if (s0 === peg$FAILED) {
   3762                                             if (input.charCodeAt(peg$currPos) === 71) {
   3763                                                 s0 = peg$c48;
   3764                                                 peg$currPos++;
   3765                                             }
   3766                                             else {
   3767                                                 s0 = peg$FAILED;
   3768                                                 if (peg$silentFails === 0) {
   3769                                                     peg$fail(peg$e56);
   3770                                                 }
   3771                                             }
   3772                                             if (s0 === peg$FAILED) {
   3773                                                 if (input.charCodeAt(peg$currPos) === 84) {
   3774                                                     s0 = peg$c49;
   3775                                                     peg$currPos++;
   3776                                                 }
   3777                                                 else {
   3778                                                     s0 = peg$FAILED;
   3779                                                     if (peg$silentFails === 0) {
   3780                                                         peg$fail(peg$e57);
   3781                                                     }
   3782                                                 }
   3783                                                 if (s0 === peg$FAILED) {
   3784                                                     if (input.charCodeAt(peg$currPos) === 80) {
   3785                                                         s0 = peg$c50;
   3786                                                         peg$currPos++;
   3787                                                     }
   3788                                                     else {
   3789                                                         s0 = peg$FAILED;
   3790                                                         if (peg$silentFails === 0) {
   3791                                                             peg$fail(peg$e58);
   3792                                                         }
   3793                                                     }
   3794                                                     if (s0 === peg$FAILED) {
   3795                                                         if (input.charCodeAt(peg$currPos) === 37) {
   3796                                                             s0 = peg$c51;
   3797                                                             peg$currPos++;
   3798                                                         }
   3799                                                         else {
   3800                                                             s0 = peg$FAILED;
   3801                                                             if (peg$silentFails === 0) {
   3802                                                                 peg$fail(peg$e59);
   3803                                                             }
   3804                                                         }
   3805                                                     }
   3806                                                 }
   3807                                             }
   3808                                         }
   3809                                     }
   3810                                 }
   3811                             }
   3812                         }
   3813                     }
   3814                 }
   3815             }
   3816         }
   3817         peg$silentFails--;
   3818         if (s0 === peg$FAILED) {
   3819             s1 = peg$FAILED;
   3820             if (peg$silentFails === 0) {
   3821                 peg$fail(peg$e43);
   3822             }
   3823         }
   3824         peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
   3825         return s0;
   3826     }
   3827     function peg$parsedollarIdentifier() {
   3828         var s0, s1, s2, s3, s4;
   3829         var key = peg$currPos * 82 + 52;
   3830         var cached = peg$resultsCache[key];
   3831         if (cached) {
   3832             peg$currPos = cached.nextPos;
   3833             return cached.result;
   3834         }
   3835         peg$silentFails++;
   3836         s0 = peg$currPos;
   3837         s1 = peg$currPos;
   3838         s2 = [];
   3839         if (peg$r3.test(input.charAt(peg$currPos))) {
   3840             s3 = input.charAt(peg$currPos);
   3841             peg$currPos++;
   3842         }
   3843         else {
   3844             s3 = peg$FAILED;
   3845             if (peg$silentFails === 0) {
   3846                 peg$fail(peg$e60);
   3847             }
   3848         }
   3849         if (s3 !== peg$FAILED) {
   3850             while (s3 !== peg$FAILED) {
   3851                 s2.push(s3);
   3852                 if (peg$r3.test(input.charAt(peg$currPos))) {
   3853                     s3 = input.charAt(peg$currPos);
   3854                     peg$currPos++;
   3855                 }
   3856                 else {
   3857                     s3 = peg$FAILED;
   3858                     if (peg$silentFails === 0) {
   3859                         peg$fail(peg$e60);
   3860                     }
   3861                 }
   3862             }
   3863         }
   3864         else {
   3865             s2 = peg$FAILED;
   3866         }
   3867         if (s2 !== peg$FAILED) {
   3868             s3 = [];
   3869             if (peg$r4.test(input.charAt(peg$currPos))) {
   3870                 s4 = input.charAt(peg$currPos);
   3871                 peg$currPos++;
   3872             }
   3873             else {
   3874                 s4 = peg$FAILED;
   3875                 if (peg$silentFails === 0) {
   3876                     peg$fail(peg$e61);
   3877                 }
   3878             }
   3879             while (s4 !== peg$FAILED) {
   3880                 s3.push(s4);
   3881                 if (peg$r4.test(input.charAt(peg$currPos))) {
   3882                     s4 = input.charAt(peg$currPos);
   3883                     peg$currPos++;
   3884                 }
   3885                 else {
   3886                     s4 = peg$FAILED;
   3887                     if (peg$silentFails === 0) {
   3888                         peg$fail(peg$e61);
   3889                     }
   3890                 }
   3891             }
   3892             s2 = [s2, s3];
   3893             s1 = s2;
   3894         }
   3895         else {
   3896             peg$currPos = s1;
   3897             s1 = peg$FAILED;
   3898         }
   3899         if (s1 !== peg$FAILED) {
   3900             peg$savedPos = s0;
   3901             s1 = peg$f35();
   3902         }
   3903         s0 = s1;
   3904         peg$silentFails--;
   3905         if (s0 === peg$FAILED) {
   3906             s1 = peg$FAILED;
   3907             if (peg$silentFails === 0) {
   3908                 peg$fail(peg$e43);
   3909             }
   3910         }
   3911         peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
   3912         return s0;
   3913     }
   3914     function peg$parseescapeSeq() {
   3915         var s0, s1, s2, s3, s4, s5, s6, s7, s8;
   3916         var key = peg$currPos * 82 + 53;
   3917         var cached = peg$resultsCache[key];
   3918         if (cached) {
   3919             peg$currPos = cached.nextPos;
   3920             return cached.result;
   3921         }
   3922         peg$silentFails++;
   3923         s0 = peg$currPos;
   3924         if (input.charCodeAt(peg$currPos) === 92) {
   3925             s1 = peg$c52;
   3926             peg$currPos++;
   3927         }
   3928         else {
   3929             s1 = peg$FAILED;
   3930             if (peg$silentFails === 0) {
   3931                 peg$fail(peg$e63);
   3932             }
   3933         }
   3934         if (s1 !== peg$FAILED) {
   3935             s2 = peg$currPos;
   3936             if (peg$r5.test(input.charAt(peg$currPos))) {
   3937                 s3 = input.charAt(peg$currPos);
   3938                 peg$currPos++;
   3939             }
   3940             else {
   3941                 s3 = peg$FAILED;
   3942                 if (peg$silentFails === 0) {
   3943                     peg$fail(peg$e64);
   3944                 }
   3945             }
   3946             if (s3 !== peg$FAILED) {
   3947                 peg$savedPos = s2;
   3948                 s3 = peg$f36(s3);
   3949             }
   3950             s2 = s3;
   3951             if (s2 === peg$FAILED) {
   3952                 s2 = peg$currPos;
   3953                 s3 = peg$currPos;
   3954                 if (input.charCodeAt(peg$currPos) === 117) {
   3955                     s4 = peg$c53;
   3956                     peg$currPos++;
   3957                 }
   3958                 else {
   3959                     s4 = peg$FAILED;
   3960                     if (peg$silentFails === 0) {
   3961                         peg$fail(peg$e65);
   3962                     }
   3963                 }
   3964                 if (s4 !== peg$FAILED) {
   3965                     if (input.length > peg$currPos) {
   3966                         s5 = input.charAt(peg$currPos);
   3967                         peg$currPos++;
   3968                     }
   3969                     else {
   3970                         s5 = peg$FAILED;
   3971                         if (peg$silentFails === 0) {
   3972                             peg$fail(peg$e66);
   3973                         }
   3974                     }
   3975                     if (s5 !== peg$FAILED) {
   3976                         if (input.length > peg$currPos) {
   3977                             s6 = input.charAt(peg$currPos);
   3978                             peg$currPos++;
   3979                         }
   3980                         else {
   3981                             s6 = peg$FAILED;
   3982                             if (peg$silentFails === 0) {
   3983                                 peg$fail(peg$e66);
   3984                             }
   3985                         }
   3986                         if (s6 !== peg$FAILED) {
   3987                             if (input.length > peg$currPos) {
   3988                                 s7 = input.charAt(peg$currPos);
   3989                                 peg$currPos++;
   3990                             }
   3991                             else {
   3992                                 s7 = peg$FAILED;
   3993                                 if (peg$silentFails === 0) {
   3994                                     peg$fail(peg$e66);
   3995                                 }
   3996                             }
   3997                             if (s7 !== peg$FAILED) {
   3998                                 if (input.length > peg$currPos) {
   3999                                     s8 = input.charAt(peg$currPos);
   4000                                     peg$currPos++;
   4001                                 }
   4002                                 else {
   4003                                     s8 = peg$FAILED;
   4004                                     if (peg$silentFails === 0) {
   4005                                         peg$fail(peg$e66);
   4006                                     }
   4007                                 }
   4008                                 if (s8 !== peg$FAILED) {
   4009                                     s4 = [s4, s5, s6, s7, s8];
   4010                                     s3 = s4;
   4011                                 }
   4012                                 else {
   4013                                     peg$currPos = s3;
   4014                                     s3 = peg$FAILED;
   4015                                 }
   4016                             }
   4017                             else {
   4018                                 peg$currPos = s3;
   4019                                 s3 = peg$FAILED;
   4020                             }
   4021                         }
   4022                         else {
   4023                             peg$currPos = s3;
   4024                             s3 = peg$FAILED;
   4025                         }
   4026                     }
   4027                     else {
   4028                         peg$currPos = s3;
   4029                         s3 = peg$FAILED;
   4030                     }
   4031                 }
   4032                 else {
   4033                     peg$currPos = s3;
   4034                     s3 = peg$FAILED;
   4035                 }
   4036                 if (s3 !== peg$FAILED) {
   4037                     peg$savedPos = s2;
   4038                     s3 = peg$f37(s3);
   4039                 }
   4040                 s2 = s3;
   4041             }
   4042             if (s2 !== peg$FAILED) {
   4043                 s0 = s2;
   4044             }
   4045             else {
   4046                 peg$currPos = s0;
   4047                 s0 = peg$FAILED;
   4048             }
   4049         }
   4050         else {
   4051             peg$currPos = s0;
   4052             s0 = peg$FAILED;
   4053         }
   4054         peg$silentFails--;
   4055         if (s0 === peg$FAILED) {
   4056             s1 = peg$FAILED;
   4057             if (peg$silentFails === 0) {
   4058                 peg$fail(peg$e62);
   4059             }
   4060         }
   4061         peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
   4062         return s0;
   4063     }
   4064     function peg$parsestring() {
   4065         var s0, s1, s2, s3, s4, s5;
   4066         var key = peg$currPos * 82 + 54;
   4067         var cached = peg$resultsCache[key];
   4068         if (cached) {
   4069             peg$currPos = cached.nextPos;
   4070             return cached.result;
   4071         }
   4072         peg$silentFails++;
   4073         s0 = peg$currPos;
   4074         if (input.charCodeAt(peg$currPos) === 39) {
   4075             s1 = peg$c54;
   4076             peg$currPos++;
   4077         }
   4078         else {
   4079             s1 = peg$FAILED;
   4080             if (peg$silentFails === 0) {
   4081                 peg$fail(peg$e68);
   4082             }
   4083         }
   4084         if (s1 !== peg$FAILED) {
   4085             s2 = [];
   4086             s3 = peg$currPos;
   4087             s4 = peg$currPos;
   4088             peg$silentFails++;
   4089             if (input.charCodeAt(peg$currPos) === 39) {
   4090                 s5 = peg$c54;
   4091                 peg$currPos++;
   4092             }
   4093             else {
   4094                 s5 = peg$FAILED;
   4095                 if (peg$silentFails === 0) {
   4096                     peg$fail(peg$e68);
   4097                 }
   4098             }
   4099             if (s5 === peg$FAILED) {
   4100                 if (input.charCodeAt(peg$currPos) === 92) {
   4101                     s5 = peg$c52;
   4102                     peg$currPos++;
   4103                 }
   4104                 else {
   4105                     s5 = peg$FAILED;
   4106                     if (peg$silentFails === 0) {
   4107                         peg$fail(peg$e63);
   4108                     }
   4109                 }
   4110             }
   4111             peg$silentFails--;
   4112             if (s5 === peg$FAILED) {
   4113                 s4 = undefined;
   4114             }
   4115             else {
   4116                 peg$currPos = s4;
   4117                 s4 = peg$FAILED;
   4118             }
   4119             if (s4 !== peg$FAILED) {
   4120                 if (input.length > peg$currPos) {
   4121                     s5 = input.charAt(peg$currPos);
   4122                     peg$currPos++;
   4123                 }
   4124                 else {
   4125                     s5 = peg$FAILED;
   4126                     if (peg$silentFails === 0) {
   4127                         peg$fail(peg$e66);
   4128                     }
   4129                 }
   4130                 if (s5 !== peg$FAILED) {
   4131                     s3 = s5;
   4132                 }
   4133                 else {
   4134                     peg$currPos = s3;
   4135                     s3 = peg$FAILED;
   4136                 }
   4137             }
   4138             else {
   4139                 peg$currPos = s3;
   4140                 s3 = peg$FAILED;
   4141             }
   4142             if (s3 === peg$FAILED) {
   4143                 s3 = peg$parseescapeSeq();
   4144             }
   4145             while (s3 !== peg$FAILED) {
   4146                 s2.push(s3);
   4147                 s3 = peg$currPos;
   4148                 s4 = peg$currPos;
   4149                 peg$silentFails++;
   4150                 if (input.charCodeAt(peg$currPos) === 39) {
   4151                     s5 = peg$c54;
   4152                     peg$currPos++;
   4153                 }
   4154                 else {
   4155                     s5 = peg$FAILED;
   4156                     if (peg$silentFails === 0) {
   4157                         peg$fail(peg$e68);
   4158                     }
   4159                 }
   4160                 if (s5 === peg$FAILED) {
   4161                     if (input.charCodeAt(peg$currPos) === 92) {
   4162                         s5 = peg$c52;
   4163                         peg$currPos++;
   4164                     }
   4165                     else {
   4166                         s5 = peg$FAILED;
   4167                         if (peg$silentFails === 0) {
   4168                             peg$fail(peg$e63);
   4169                         }
   4170                     }
   4171                 }
   4172                 peg$silentFails--;
   4173                 if (s5 === peg$FAILED) {
   4174                     s4 = undefined;
   4175                 }
   4176                 else {
   4177                     peg$currPos = s4;
   4178                     s4 = peg$FAILED;
   4179                 }
   4180                 if (s4 !== peg$FAILED) {
   4181                     if (input.length > peg$currPos) {
   4182                         s5 = input.charAt(peg$currPos);
   4183                         peg$currPos++;
   4184                     }
   4185                     else {
   4186                         s5 = peg$FAILED;
   4187                         if (peg$silentFails === 0) {
   4188                             peg$fail(peg$e66);
   4189                         }
   4190                     }
   4191                     if (s5 !== peg$FAILED) {
   4192                         s3 = s5;
   4193                     }
   4194                     else {
   4195                         peg$currPos = s3;
   4196                         s3 = peg$FAILED;
   4197                     }
   4198                 }
   4199                 else {
   4200                     peg$currPos = s3;
   4201                     s3 = peg$FAILED;
   4202                 }
   4203                 if (s3 === peg$FAILED) {
   4204                     s3 = peg$parseescapeSeq();
   4205                 }
   4206             }
   4207             if (input.charCodeAt(peg$currPos) === 39) {
   4208                 s3 = peg$c54;
   4209                 peg$currPos++;
   4210             }
   4211             else {
   4212                 s3 = peg$FAILED;
   4213                 if (peg$silentFails === 0) {
   4214                     peg$fail(peg$e68);
   4215                 }
   4216             }
   4217             if (s3 !== peg$FAILED) {
   4218                 peg$savedPos = s0;
   4219                 s0 = peg$f38(s2);
   4220             }
   4221             else {
   4222                 peg$currPos = s0;
   4223                 s0 = peg$FAILED;
   4224             }
   4225         }
   4226         else {
   4227             peg$currPos = s0;
   4228             s0 = peg$FAILED;
   4229         }
   4230         if (s0 === peg$FAILED) {
   4231             s0 = peg$currPos;
   4232             if (input.charCodeAt(peg$currPos) === 34) {
   4233                 s1 = peg$c55;
   4234                 peg$currPos++;
   4235             }
   4236             else {
   4237                 s1 = peg$FAILED;
   4238                 if (peg$silentFails === 0) {
   4239                     peg$fail(peg$e69);
   4240                 }
   4241             }
   4242             if (s1 !== peg$FAILED) {
   4243                 s2 = [];
   4244                 s3 = peg$currPos;
   4245                 s4 = peg$currPos;
   4246                 peg$silentFails++;
   4247                 if (input.charCodeAt(peg$currPos) === 34) {
   4248                     s5 = peg$c55;
   4249                     peg$currPos++;
   4250                 }
   4251                 else {
   4252                     s5 = peg$FAILED;
   4253                     if (peg$silentFails === 0) {
   4254                         peg$fail(peg$e69);
   4255                     }
   4256                 }
   4257                 if (s5 === peg$FAILED) {
   4258                     if (input.charCodeAt(peg$currPos) === 92) {
   4259                         s5 = peg$c52;
   4260                         peg$currPos++;
   4261                     }
   4262                     else {
   4263                         s5 = peg$FAILED;
   4264                         if (peg$silentFails === 0) {
   4265                             peg$fail(peg$e63);
   4266                         }
   4267                     }
   4268                 }
   4269                 peg$silentFails--;
   4270                 if (s5 === peg$FAILED) {
   4271                     s4 = undefined;
   4272                 }
   4273                 else {
   4274                     peg$currPos = s4;
   4275                     s4 = peg$FAILED;
   4276                 }
   4277                 if (s4 !== peg$FAILED) {
   4278                     if (input.length > peg$currPos) {
   4279                         s5 = input.charAt(peg$currPos);
   4280                         peg$currPos++;
   4281                     }
   4282                     else {
   4283                         s5 = peg$FAILED;
   4284                         if (peg$silentFails === 0) {
   4285                             peg$fail(peg$e66);
   4286                         }
   4287                     }
   4288                     if (s5 !== peg$FAILED) {
   4289                         s3 = s5;
   4290                     }
   4291                     else {
   4292                         peg$currPos = s3;
   4293                         s3 = peg$FAILED;
   4294                     }
   4295                 }
   4296                 else {
   4297                     peg$currPos = s3;
   4298                     s3 = peg$FAILED;
   4299                 }
   4300                 if (s3 === peg$FAILED) {
   4301                     s3 = peg$parseescapeSeq();
   4302                 }
   4303                 while (s3 !== peg$FAILED) {
   4304                     s2.push(s3);
   4305                     s3 = peg$currPos;
   4306                     s4 = peg$currPos;
   4307                     peg$silentFails++;
   4308                     if (input.charCodeAt(peg$currPos) === 34) {
   4309                         s5 = peg$c55;
   4310                         peg$currPos++;
   4311                     }
   4312                     else {
   4313                         s5 = peg$FAILED;
   4314                         if (peg$silentFails === 0) {
   4315                             peg$fail(peg$e69);
   4316                         }
   4317                     }
   4318                     if (s5 === peg$FAILED) {
   4319                         if (input.charCodeAt(peg$currPos) === 92) {
   4320                             s5 = peg$c52;
   4321                             peg$currPos++;
   4322                         }
   4323                         else {
   4324                             s5 = peg$FAILED;
   4325                             if (peg$silentFails === 0) {
   4326                                 peg$fail(peg$e63);
   4327                             }
   4328                         }
   4329                     }
   4330                     peg$silentFails--;
   4331                     if (s5 === peg$FAILED) {
   4332                         s4 = undefined;
   4333                     }
   4334                     else {
   4335                         peg$currPos = s4;
   4336                         s4 = peg$FAILED;
   4337                     }
   4338                     if (s4 !== peg$FAILED) {
   4339                         if (input.length > peg$currPos) {
   4340                             s5 = input.charAt(peg$currPos);
   4341                             peg$currPos++;
   4342                         }
   4343                         else {
   4344                             s5 = peg$FAILED;
   4345                             if (peg$silentFails === 0) {
   4346                                 peg$fail(peg$e66);
   4347                             }
   4348                         }
   4349                         if (s5 !== peg$FAILED) {
   4350                             s3 = s5;
   4351                         }
   4352                         else {
   4353                             peg$currPos = s3;
   4354                             s3 = peg$FAILED;
   4355                         }
   4356                     }
   4357                     else {
   4358                         peg$currPos = s3;
   4359                         s3 = peg$FAILED;
   4360                     }
   4361                     if (s3 === peg$FAILED) {
   4362                         s3 = peg$parseescapeSeq();
   4363                     }
   4364                 }
   4365                 if (input.charCodeAt(peg$currPos) === 34) {
   4366                     s3 = peg$c55;
   4367                     peg$currPos++;
   4368                 }
   4369                 else {
   4370                     s3 = peg$FAILED;
   4371                     if (peg$silentFails === 0) {
   4372                         peg$fail(peg$e69);
   4373                     }
   4374                 }
   4375                 if (s3 !== peg$FAILED) {
   4376                     peg$savedPos = s0;
   4377                     s0 = peg$f39(s2);
   4378                 }
   4379                 else {
   4380                     peg$currPos = s0;
   4381                     s0 = peg$FAILED;
   4382                 }
   4383             }
   4384             else {
   4385                 peg$currPos = s0;
   4386                 s0 = peg$FAILED;
   4387             }
   4388         }
   4389         peg$silentFails--;
   4390         if (s0 === peg$FAILED) {
   4391             s1 = peg$FAILED;
   4392             if (peg$silentFails === 0) {
   4393                 peg$fail(peg$e67);
   4394             }
   4395         }
   4396         peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
   4397         return s0;
   4398     }
   4399     function peg$parsenumber() {
   4400         var s0, s1, s2;
   4401         var key = peg$currPos * 82 + 55;
   4402         var cached = peg$resultsCache[key];
   4403         if (cached) {
   4404             peg$currPos = cached.nextPos;
   4405             return cached.result;
   4406         }
   4407         s0 = peg$currPos;
   4408         s1 = peg$parsefloat();
   4409         if (s1 !== peg$FAILED) {
   4410             s2 = peg$parseunitIdentifier();
   4411             if (s2 === peg$FAILED) {
   4412                 s2 = null;
   4413             }
   4414             peg$savedPos = s0;
   4415             s0 = peg$f40(s1, s2);
   4416         }
   4417         else {
   4418             peg$currPos = s0;
   4419             s0 = peg$FAILED;
   4420         }
   4421         peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
   4422         return s0;
   4423     }
   4424     function peg$parsefloat() {
   4425         var s0, s1, s2;
   4426         var key = peg$currPos * 82 + 56;
   4427         var cached = peg$resultsCache[key];
   4428         if (cached) {
   4429             peg$currPos = cached.nextPos;
   4430             return cached.result;
   4431         }
   4432         peg$silentFails++;
   4433         s0 = peg$currPos;
   4434         s1 = peg$parsefloatSignificand();
   4435         if (s1 !== peg$FAILED) {
   4436             s2 = peg$parsefloatExponent();
   4437             if (s2 === peg$FAILED) {
   4438                 s2 = null;
   4439             }
   4440             peg$savedPos = s0;
   4441             s0 = peg$f41(s1, s2);
   4442         }
   4443         else {
   4444             peg$currPos = s0;
   4445             s0 = peg$FAILED;
   4446         }
   4447         peg$silentFails--;
   4448         if (s0 === peg$FAILED) {
   4449             s1 = peg$FAILED;
   4450             if (peg$silentFails === 0) {
   4451                 peg$fail(peg$e70);
   4452             }
   4453         }
   4454         peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
   4455         return s0;
   4456     }
   4457     function peg$parsefloatSignificand() {
   4458         var s0, s1, s2, s3, s4, s5;
   4459         var key = peg$currPos * 82 + 57;
   4460         var cached = peg$resultsCache[key];
   4461         if (cached) {
   4462             peg$currPos = cached.nextPos;
   4463             return cached.result;
   4464         }
   4465         s0 = peg$currPos;
   4466         s1 = peg$parseintLiteral();
   4467         if (s1 !== peg$FAILED) {
   4468             if (input.charCodeAt(peg$currPos) === 46) {
   4469                 s2 = peg$c36;
   4470                 peg$currPos++;
   4471             }
   4472             else {
   4473                 s2 = peg$FAILED;
   4474                 if (peg$silentFails === 0) {
   4475                     peg$fail(peg$e39);
   4476                 }
   4477             }
   4478             if (s2 !== peg$FAILED) {
   4479                 s3 = peg$currPos;
   4480                 s4 = [];
   4481                 s5 = peg$parsed();
   4482                 if (s5 !== peg$FAILED) {
   4483                     while (s5 !== peg$FAILED) {
   4484                         s4.push(s5);
   4485                         s5 = peg$parsed();
   4486                     }
   4487                 }
   4488                 else {
   4489                     s4 = peg$FAILED;
   4490                 }
   4491                 if (s4 !== peg$FAILED) {
   4492                     s3 = input.substring(s3, peg$currPos);
   4493                 }
   4494                 else {
   4495                     s3 = s4;
   4496                 }
   4497                 if (s3 === peg$FAILED) {
   4498                     s3 = null;
   4499                 }
   4500                 peg$savedPos = s0;
   4501                 s0 = peg$f42(s1, s3);
   4502             }
   4503             else {
   4504                 peg$currPos = s0;
   4505                 s0 = peg$FAILED;
   4506             }
   4507         }
   4508         else {
   4509             peg$currPos = s0;
   4510             s0 = peg$FAILED;
   4511         }
   4512         if (s0 === peg$FAILED) {
   4513             s0 = peg$currPos;
   4514             s1 = peg$parseintLiteral();
   4515             if (s1 !== peg$FAILED) {
   4516                 peg$savedPos = s0;
   4517                 s1 = peg$f43(s1);
   4518             }
   4519             s0 = s1;
   4520             if (s0 === peg$FAILED) {
   4521                 s0 = peg$currPos;
   4522                 if (input.charCodeAt(peg$currPos) === 46) {
   4523                     s1 = peg$c36;
   4524                     peg$currPos++;
   4525                 }
   4526                 else {
   4527                     s1 = peg$FAILED;
   4528                     if (peg$silentFails === 0) {
   4529                         peg$fail(peg$e39);
   4530                     }
   4531                 }
   4532                 if (s1 !== peg$FAILED) {
   4533                     s2 = peg$currPos;
   4534                     s3 = [];
   4535                     s4 = peg$parsed();
   4536                     if (s4 !== peg$FAILED) {
   4537                         while (s4 !== peg$FAILED) {
   4538                             s3.push(s4);
   4539                             s4 = peg$parsed();
   4540                         }
   4541                     }
   4542                     else {
   4543                         s3 = peg$FAILED;
   4544                     }
   4545                     if (s3 !== peg$FAILED) {
   4546                         s2 = input.substring(s2, peg$currPos);
   4547                     }
   4548                     else {
   4549                         s2 = s3;
   4550                     }
   4551                     if (s2 !== peg$FAILED) {
   4552                         peg$savedPos = s0;
   4553                         s0 = peg$f44(s2);
   4554                     }
   4555                     else {
   4556                         peg$currPos = s0;
   4557                         s0 = peg$FAILED;
   4558                     }
   4559                 }
   4560                 else {
   4561                     peg$currPos = s0;
   4562                     s0 = peg$FAILED;
   4563                 }
   4564             }
   4565         }
   4566         peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
   4567         return s0;
   4568     }
   4569     function peg$parsefloatExponent() {
   4570         var s0, s1, s2;
   4571         var key = peg$currPos * 82 + 58;
   4572         var cached = peg$resultsCache[key];
   4573         if (cached) {
   4574             peg$currPos = cached.nextPos;
   4575             return cached.result;
   4576         }
   4577         s0 = peg$currPos;
   4578         if (peg$r6.test(input.charAt(peg$currPos))) {
   4579             s1 = input.charAt(peg$currPos);
   4580             peg$currPos++;
   4581         }
   4582         else {
   4583             s1 = peg$FAILED;
   4584             if (peg$silentFails === 0) {
   4585                 peg$fail(peg$e71);
   4586             }
   4587         }
   4588         if (s1 !== peg$FAILED) {
   4589             s2 = peg$parsesignedIntLiteral();
   4590             if (s2 !== peg$FAILED) {
   4591                 s0 = s2;
   4592             }
   4593             else {
   4594                 peg$currPos = s0;
   4595                 s0 = peg$FAILED;
   4596             }
   4597         }
   4598         else {
   4599             peg$currPos = s0;
   4600             s0 = peg$FAILED;
   4601         }
   4602         peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
   4603         return s0;
   4604     }
   4605     function peg$parseintLiteral() {
   4606         var s0, s1, s2;
   4607         var key = peg$currPos * 82 + 59;
   4608         var cached = peg$resultsCache[key];
   4609         if (cached) {
   4610             peg$currPos = cached.nextPos;
   4611             return cached.result;
   4612         }
   4613         s0 = peg$currPos;
   4614         s1 = [];
   4615         s2 = peg$parsed();
   4616         if (s2 !== peg$FAILED) {
   4617             while (s2 !== peg$FAILED) {
   4618                 s1.push(s2);
   4619                 s2 = peg$parsed();
   4620             }
   4621         }
   4622         else {
   4623             s1 = peg$FAILED;
   4624         }
   4625         if (s1 !== peg$FAILED) {
   4626             peg$savedPos = s0;
   4627             s1 = peg$f45();
   4628         }
   4629         s0 = s1;
   4630         peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
   4631         return s0;
   4632     }
   4633     function peg$parsesignedIntLiteral() {
   4634         var s0, s1, s2, s3;
   4635         var key = peg$currPos * 82 + 60;
   4636         var cached = peg$resultsCache[key];
   4637         if (cached) {
   4638             peg$currPos = cached.nextPos;
   4639             return cached.result;
   4640         }
   4641         s0 = peg$currPos;
   4642         if (input.charCodeAt(peg$currPos) === 45) {
   4643             s1 = peg$c24;
   4644             peg$currPos++;
   4645         }
   4646         else {
   4647             s1 = peg$FAILED;
   4648             if (peg$silentFails === 0) {
   4649                 peg$fail(peg$e26);
   4650             }
   4651         }
   4652         if (s1 === peg$FAILED) {
   4653             if (input.charCodeAt(peg$currPos) === 43) {
   4654                 s1 = peg$c23;
   4655                 peg$currPos++;
   4656             }
   4657             else {
   4658                 s1 = peg$FAILED;
   4659                 if (peg$silentFails === 0) {
   4660                     peg$fail(peg$e25);
   4661                 }
   4662             }
   4663         }
   4664         if (s1 === peg$FAILED) {
   4665             s1 = null;
   4666         }
   4667         s2 = [];
   4668         s3 = peg$parsed();
   4669         if (s3 !== peg$FAILED) {
   4670             while (s3 !== peg$FAILED) {
   4671                 s2.push(s3);
   4672                 s3 = peg$parsed();
   4673             }
   4674         }
   4675         else {
   4676             s2 = peg$FAILED;
   4677         }
   4678         if (s2 !== peg$FAILED) {
   4679             peg$savedPos = s0;
   4680             s0 = peg$f46();
   4681         }
   4682         else {
   4683             peg$currPos = s0;
   4684             s0 = peg$FAILED;
   4685         }
   4686         peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
   4687         return s0;
   4688     }
   4689     function peg$parsed() {
   4690         var s0;
   4691         var key = peg$currPos * 82 + 61;
   4692         var cached = peg$resultsCache[key];
   4693         if (cached) {
   4694             peg$currPos = cached.nextPos;
   4695             return cached.result;
   4696         }
   4697         if (peg$r7.test(input.charAt(peg$currPos))) {
   4698             s0 = input.charAt(peg$currPos);
   4699             peg$currPos++;
   4700         }
   4701         else {
   4702             s0 = peg$FAILED;
   4703             if (peg$silentFails === 0) {
   4704                 peg$fail(peg$e72);
   4705             }
   4706         }
   4707         peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
   4708         return s0;
   4709     }
   4710     function peg$parseboolean() {
   4711         var s0, s1, s2, s3, s4;
   4712         var key = peg$currPos * 82 + 62;
   4713         var cached = peg$resultsCache[key];
   4714         if (cached) {
   4715             peg$currPos = cached.nextPos;
   4716             return cached.result;
   4717         }
   4718         peg$silentFails++;
   4719         s0 = peg$currPos;
   4720         if (input.substr(peg$currPos, 4) === peg$c56) {
   4721             s1 = peg$c56;
   4722             peg$currPos += 4;
   4723         }
   4724         else {
   4725             s1 = peg$FAILED;
   4726             if (peg$silentFails === 0) {
   4727                 peg$fail(peg$e74);
   4728             }
   4729         }
   4730         if (s1 === peg$FAILED) {
   4731             if (input.substr(peg$currPos, 5) === peg$c57) {
   4732                 s1 = peg$c57;
   4733                 peg$currPos += 5;
   4734             }
   4735             else {
   4736                 s1 = peg$FAILED;
   4737                 if (peg$silentFails === 0) {
   4738                     peg$fail(peg$e75);
   4739                 }
   4740             }
   4741         }
   4742         if (s1 !== peg$FAILED) {
   4743             s2 = peg$currPos;
   4744             peg$silentFails++;
   4745             if (peg$r8.test(input.charAt(peg$currPos))) {
   4746                 s3 = input.charAt(peg$currPos);
   4747                 peg$currPos++;
   4748             }
   4749             else {
   4750                 s3 = peg$FAILED;
   4751                 if (peg$silentFails === 0) {
   4752                     peg$fail(peg$e76);
   4753                 }
   4754             }
   4755             peg$silentFails--;
   4756             if (s3 === peg$FAILED) {
   4757                 s2 = undefined;
   4758             }
   4759             else {
   4760                 peg$currPos = s2;
   4761                 s2 = peg$FAILED;
   4762             }
   4763             if (s2 !== peg$FAILED) {
   4764                 s3 = peg$currPos;
   4765                 peg$silentFails++;
   4766                 if (peg$r9.test(input.charAt(peg$currPos))) {
   4767                     s4 = input.charAt(peg$currPos);
   4768                     peg$currPos++;
   4769                 }
   4770                 else {
   4771                     s4 = peg$FAILED;
   4772                     if (peg$silentFails === 0) {
   4773                         peg$fail(peg$e77);
   4774                     }
   4775                 }
   4776                 peg$silentFails--;
   4777                 if (s4 === peg$FAILED) {
   4778                     s3 = undefined;
   4779                 }
   4780                 else {
   4781                     peg$currPos = s3;
   4782                     s3 = peg$FAILED;
   4783                 }
   4784                 if (s3 !== peg$FAILED) {
   4785                     peg$savedPos = s0;
   4786                     s0 = peg$f47();
   4787                 }
   4788                 else {
   4789                     peg$currPos = s0;
   4790                     s0 = peg$FAILED;
   4791                 }
   4792             }
   4793             else {
   4794                 peg$currPos = s0;
   4795                 s0 = peg$FAILED;
   4796             }
   4797         }
   4798         else {
   4799             peg$currPos = s0;
   4800             s0 = peg$FAILED;
   4801         }
   4802         peg$silentFails--;
   4803         if (s0 === peg$FAILED) {
   4804             s1 = peg$FAILED;
   4805             if (peg$silentFails === 0) {
   4806                 peg$fail(peg$e73);
   4807             }
   4808         }
   4809         peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
   4810         return s0;
   4811     }
   4812     function peg$parsevalueConstructor() {
   4813         var s0;
   4814         var key = peg$currPos * 82 + 63;
   4815         var cached = peg$resultsCache[key];
   4816         if (cached) {
   4817             peg$currPos = cached.nextPos;
   4818             return cached.result;
   4819         }
   4820         s0 = peg$parsearrayConstructor();
   4821         if (s0 === peg$FAILED) {
   4822             s0 = peg$parselambda();
   4823             if (s0 === peg$FAILED) {
   4824                 s0 = peg$parsequotedInnerBlock();
   4825                 if (s0 === peg$FAILED) {
   4826                     s0 = peg$parsedictConstructor();
   4827                 }
   4828             }
   4829         }
   4830         peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
   4831         return s0;
   4832     }
   4833     function peg$parselambda() {
   4834         var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12;
   4835         var key = peg$currPos * 82 + 64;
   4836         var cached = peg$resultsCache[key];
   4837         if (cached) {
   4838             peg$currPos = cached.nextPos;
   4839             return cached.result;
   4840         }
   4841         s0 = peg$currPos;
   4842         if (input.charCodeAt(peg$currPos) === 123) {
   4843             s1 = peg$c2;
   4844             peg$currPos++;
   4845         }
   4846         else {
   4847             s1 = peg$FAILED;
   4848             if (peg$silentFails === 0) {
   4849                 peg$fail(peg$e2);
   4850             }
   4851         }
   4852         if (s1 !== peg$FAILED) {
   4853             s2 = peg$parse_nl();
   4854             if (input.charCodeAt(peg$currPos) === 124) {
   4855                 s3 = peg$c58;
   4856                 peg$currPos++;
   4857             }
   4858             else {
   4859                 s3 = peg$FAILED;
   4860                 if (peg$silentFails === 0) {
   4861                     peg$fail(peg$e78);
   4862                 }
   4863             }
   4864             if (s3 !== peg$FAILED) {
   4865                 s4 = peg$parse_nl();
   4866                 s5 = peg$parsefunctionParameters();
   4867                 s6 = peg$parse_nl();
   4868                 if (input.charCodeAt(peg$currPos) === 124) {
   4869                     s7 = peg$c58;
   4870                     peg$currPos++;
   4871                 }
   4872                 else {
   4873                     s7 = peg$FAILED;
   4874                     if (peg$silentFails === 0) {
   4875                         peg$fail(peg$e78);
   4876                     }
   4877                 }
   4878                 if (s7 !== peg$FAILED) {
   4879                     s8 = peg$parse_nl();
   4880                     s9 = peg$parsestatementsList();
   4881                     if (s9 !== peg$FAILED) {
   4882                         s10 = peg$currPos;
   4883                         s11 = peg$parsestatementSeparator();
   4884                         if (s11 !== peg$FAILED) {
   4885                             s12 = peg$parseexpression();
   4886                             if (s12 !== peg$FAILED) {
   4887                                 s10 = s12;
   4888                             }
   4889                             else {
   4890                                 peg$currPos = s10;
   4891                                 s10 = peg$FAILED;
   4892                             }
   4893                         }
   4894                         else {
   4895                             peg$currPos = s10;
   4896                             s10 = peg$FAILED;
   4897                         }
   4898                         if (s10 !== peg$FAILED) {
   4899                             s11 = peg$parse_nl();
   4900                             if (input.charCodeAt(peg$currPos) === 125) {
   4901                                 s12 = peg$c3;
   4902                                 peg$currPos++;
   4903                             }
   4904                             else {
   4905                                 s12 = peg$FAILED;
   4906                                 if (peg$silentFails === 0) {
   4907                                     peg$fail(peg$e3);
   4908                                 }
   4909                             }
   4910                             if (s12 !== peg$FAILED) {
   4911                                 peg$savedPos = s0;
   4912                                 s0 = peg$f48(s5, s9, s10);
   4913                             }
   4914                             else {
   4915                                 peg$currPos = s0;
   4916                                 s0 = peg$FAILED;
   4917                             }
   4918                         }
   4919                         else {
   4920                             peg$currPos = s0;
   4921                             s0 = peg$FAILED;
   4922                         }
   4923                     }
   4924                     else {
   4925                         peg$currPos = s0;
   4926                         s0 = peg$FAILED;
   4927                     }
   4928                 }
   4929                 else {
   4930                     peg$currPos = s0;
   4931                     s0 = peg$FAILED;
   4932                 }
   4933             }
   4934             else {
   4935                 peg$currPos = s0;
   4936                 s0 = peg$FAILED;
   4937             }
   4938         }
   4939         else {
   4940             peg$currPos = s0;
   4941             s0 = peg$FAILED;
   4942         }
   4943         if (s0 === peg$FAILED) {
   4944             s0 = peg$currPos;
   4945             if (input.charCodeAt(peg$currPos) === 123) {
   4946                 s1 = peg$c2;
   4947                 peg$currPos++;
   4948             }
   4949             else {
   4950                 s1 = peg$FAILED;
   4951                 if (peg$silentFails === 0) {
   4952                     peg$fail(peg$e2);
   4953                 }
   4954             }
   4955             if (s1 !== peg$FAILED) {
   4956                 s2 = peg$parse_nl();
   4957                 if (input.charCodeAt(peg$currPos) === 124) {
   4958                     s3 = peg$c58;
   4959                     peg$currPos++;
   4960                 }
   4961                 else {
   4962                     s3 = peg$FAILED;
   4963                     if (peg$silentFails === 0) {
   4964                         peg$fail(peg$e78);
   4965                     }
   4966                 }
   4967                 if (s3 !== peg$FAILED) {
   4968                     s4 = peg$parse_nl();
   4969                     s5 = peg$parsefunctionParameters();
   4970                     s6 = peg$parse_nl();
   4971                     if (input.charCodeAt(peg$currPos) === 124) {
   4972                         s7 = peg$c58;
   4973                         peg$currPos++;
   4974                     }
   4975                     else {
   4976                         s7 = peg$FAILED;
   4977                         if (peg$silentFails === 0) {
   4978                             peg$fail(peg$e78);
   4979                         }
   4980                     }
   4981                     if (s7 !== peg$FAILED) {
   4982                         s8 = peg$parse_nl();
   4983                         s9 = peg$parseexpression();
   4984                         if (s9 !== peg$FAILED) {
   4985                             s10 = peg$parse_nl();
   4986                             if (input.charCodeAt(peg$currPos) === 125) {
   4987                                 s11 = peg$c3;
   4988                                 peg$currPos++;
   4989                             }
   4990                             else {
   4991                                 s11 = peg$FAILED;
   4992                                 if (peg$silentFails === 0) {
   4993                                     peg$fail(peg$e3);
   4994                                 }
   4995                             }
   4996                             if (s11 !== peg$FAILED) {
   4997                                 peg$savedPos = s0;
   4998                                 s0 = peg$f49(s5, s9);
   4999                             }
   5000                             else {
   5001                                 peg$currPos = s0;
   5002                                 s0 = peg$FAILED;
   5003                             }
   5004                         }
   5005                         else {
   5006                             peg$currPos = s0;
   5007                             s0 = peg$FAILED;
   5008                         }
   5009                     }
   5010                     else {
   5011                         peg$currPos = s0;
   5012                         s0 = peg$FAILED;
   5013                     }
   5014                 }
   5015                 else {
   5016                     peg$currPos = s0;
   5017                     s0 = peg$FAILED;
   5018                 }
   5019             }
   5020             else {
   5021                 peg$currPos = s0;
   5022                 s0 = peg$FAILED;
   5023             }
   5024         }
   5025         peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
   5026         return s0;
   5027     }
   5028     function peg$parsearrayConstructor() {
   5029         var s0, s1, s2, s3, s4, s5;
   5030         var key = peg$currPos * 82 + 65;
   5031         var cached = peg$resultsCache[key];
   5032         if (cached) {
   5033             peg$currPos = cached.nextPos;
   5034             return cached.result;
   5035         }
   5036         peg$silentFails++;
   5037         s0 = peg$currPos;
   5038         if (input.charCodeAt(peg$currPos) === 91) {
   5039             s1 = peg$c35;
   5040             peg$currPos++;
   5041         }
   5042         else {
   5043             s1 = peg$FAILED;
   5044             if (peg$silentFails === 0) {
   5045                 peg$fail(peg$e38);
   5046             }
   5047         }
   5048         if (s1 !== peg$FAILED) {
   5049             s2 = peg$parse_nl();
   5050             if (input.charCodeAt(peg$currPos) === 93) {
   5051                 s3 = peg$c37;
   5052                 peg$currPos++;
   5053             }
   5054             else {
   5055                 s3 = peg$FAILED;
   5056                 if (peg$silentFails === 0) {
   5057                     peg$fail(peg$e40);
   5058                 }
   5059             }
   5060             if (s3 !== peg$FAILED) {
   5061                 peg$savedPos = s0;
   5062                 s0 = peg$f50();
   5063             }
   5064             else {
   5065                 peg$currPos = s0;
   5066                 s0 = peg$FAILED;
   5067             }
   5068         }
   5069         else {
   5070             peg$currPos = s0;
   5071             s0 = peg$FAILED;
   5072         }
   5073         if (s0 === peg$FAILED) {
   5074             s0 = peg$currPos;
   5075             if (input.charCodeAt(peg$currPos) === 91) {
   5076                 s1 = peg$c35;
   5077                 peg$currPos++;
   5078             }
   5079             else {
   5080                 s1 = peg$FAILED;
   5081                 if (peg$silentFails === 0) {
   5082                     peg$fail(peg$e38);
   5083                 }
   5084             }
   5085             if (s1 !== peg$FAILED) {
   5086                 s2 = peg$parse_nl();
   5087                 s3 = peg$parsearray_elements();
   5088                 if (s3 !== peg$FAILED) {
   5089                     s4 = peg$parse_nl();
   5090                     if (input.charCodeAt(peg$currPos) === 93) {
   5091                         s5 = peg$c37;
   5092                         peg$currPos++;
   5093                     }
   5094                     else {
   5095                         s5 = peg$FAILED;
   5096                         if (peg$silentFails === 0) {
   5097                             peg$fail(peg$e40);
   5098                         }
   5099                     }
   5100                     if (s5 !== peg$FAILED) {
   5101                         peg$savedPos = s0;
   5102                         s0 = peg$f51(s3);
   5103                     }
   5104                     else {
   5105                         peg$currPos = s0;
   5106                         s0 = peg$FAILED;
   5107                     }
   5108                 }
   5109                 else {
   5110                     peg$currPos = s0;
   5111                     s0 = peg$FAILED;
   5112                 }
   5113             }
   5114             else {
   5115                 peg$currPos = s0;
   5116                 s0 = peg$FAILED;
   5117             }
   5118         }
   5119         peg$silentFails--;
   5120         if (s0 === peg$FAILED) {
   5121             s1 = peg$FAILED;
   5122             if (peg$silentFails === 0) {
   5123                 peg$fail(peg$e79);
   5124             }
   5125         }
   5126         peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
   5127         return s0;
   5128     }
   5129     function peg$parsearray_elements() {
   5130         var s0, s1, s2, s3, s4;
   5131         var key = peg$currPos * 82 + 66;
   5132         var cached = peg$resultsCache[key];
   5133         if (cached) {
   5134             peg$currPos = cached.nextPos;
   5135             return cached.result;
   5136         }
   5137         s0 = peg$currPos;
   5138         s1 = peg$currPos;
   5139         s2 = [];
   5140         s3 = peg$parseexpression();
   5141         while (s3 !== peg$FAILED) {
   5142             s2.push(s3);
   5143             s3 = peg$currPos;
   5144             s4 = peg$parsecommaSeparator();
   5145             if (s4 !== peg$FAILED) {
   5146                 s4 = peg$parseexpression();
   5147                 if (s4 === peg$FAILED) {
   5148                     peg$currPos = s3;
   5149                     s3 = peg$FAILED;
   5150                 }
   5151                 else {
   5152                     s3 = s4;
   5153                 }
   5154             }
   5155             else {
   5156                 s3 = s4;
   5157             }
   5158         }
   5159         if (s2.length < 1) {
   5160             peg$currPos = s1;
   5161             s1 = peg$FAILED;
   5162         }
   5163         else {
   5164             s1 = s2;
   5165         }
   5166         if (s1 !== peg$FAILED) {
   5167             s2 = peg$parsecommaSeparator();
   5168             if (s2 === peg$FAILED) {
   5169                 s2 = null;
   5170             }
   5171             s0 = s1;
   5172         }
   5173         else {
   5174             peg$currPos = s0;
   5175             s0 = peg$FAILED;
   5176         }
   5177         peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
   5178         return s0;
   5179     }
   5180     function peg$parsedictConstructor() {
   5181         var s0, s1, s2, s3, s4, s5;
   5182         var key = peg$currPos * 82 + 67;
   5183         var cached = peg$resultsCache[key];
   5184         if (cached) {
   5185             peg$currPos = cached.nextPos;
   5186             return cached.result;
   5187         }
   5188         peg$silentFails++;
   5189         s0 = peg$currPos;
   5190         if (input.charCodeAt(peg$currPos) === 123) {
   5191             s1 = peg$c2;
   5192             peg$currPos++;
   5193         }
   5194         else {
   5195             s1 = peg$FAILED;
   5196             if (peg$silentFails === 0) {
   5197                 peg$fail(peg$e2);
   5198             }
   5199         }
   5200         if (s1 !== peg$FAILED) {
   5201             s2 = peg$parse_nl();
   5202             if (input.charCodeAt(peg$currPos) === 125) {
   5203                 s3 = peg$c3;
   5204                 peg$currPos++;
   5205             }
   5206             else {
   5207                 s3 = peg$FAILED;
   5208                 if (peg$silentFails === 0) {
   5209                     peg$fail(peg$e3);
   5210                 }
   5211             }
   5212             if (s3 !== peg$FAILED) {
   5213                 peg$savedPos = s0;
   5214                 s0 = peg$f52();
   5215             }
   5216             else {
   5217                 peg$currPos = s0;
   5218                 s0 = peg$FAILED;
   5219             }
   5220         }
   5221         else {
   5222             peg$currPos = s0;
   5223             s0 = peg$FAILED;
   5224         }
   5225         if (s0 === peg$FAILED) {
   5226             s0 = peg$currPos;
   5227             if (input.charCodeAt(peg$currPos) === 123) {
   5228                 s1 = peg$c2;
   5229                 peg$currPos++;
   5230             }
   5231             else {
   5232                 s1 = peg$FAILED;
   5233                 if (peg$silentFails === 0) {
   5234                     peg$fail(peg$e2);
   5235                 }
   5236             }
   5237             if (s1 !== peg$FAILED) {
   5238                 s2 = peg$parse_nl();
   5239                 s3 = peg$parsearray_dictEntries();
   5240                 if (s3 !== peg$FAILED) {
   5241                     s4 = peg$parse_nl();
   5242                     if (input.charCodeAt(peg$currPos) === 125) {
   5243                         s5 = peg$c3;
   5244                         peg$currPos++;
   5245                     }
   5246                     else {
   5247                         s5 = peg$FAILED;
   5248                         if (peg$silentFails === 0) {
   5249                             peg$fail(peg$e3);
   5250                         }
   5251                     }
   5252                     if (s5 !== peg$FAILED) {
   5253                         peg$savedPos = s0;
   5254                         s0 = peg$f53(s3);
   5255                     }
   5256                     else {
   5257                         peg$currPos = s0;
   5258                         s0 = peg$FAILED;
   5259                     }
   5260                 }
   5261                 else {
   5262                     peg$currPos = s0;
   5263                     s0 = peg$FAILED;
   5264                 }
   5265             }
   5266             else {
   5267                 peg$currPos = s0;
   5268                 s0 = peg$FAILED;
   5269             }
   5270         }
   5271         peg$silentFails--;
   5272         if (s0 === peg$FAILED) {
   5273             s1 = peg$FAILED;
   5274             if (peg$silentFails === 0) {
   5275                 peg$fail(peg$e80);
   5276             }
   5277         }
   5278         peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
   5279         return s0;
   5280     }
   5281     function peg$parsearray_dictEntries() {
   5282         var s0, s1, s2, s3, s4;
   5283         var key = peg$currPos * 82 + 68;
   5284         var cached = peg$resultsCache[key];
   5285         if (cached) {
   5286             peg$currPos = cached.nextPos;
   5287             return cached.result;
   5288         }
   5289         s0 = peg$currPos;
   5290         s1 = peg$currPos;
   5291         s2 = [];
   5292         s3 = peg$parsekeyValuePair();
   5293         if (s3 === peg$FAILED) {
   5294             s3 = peg$parseidentifier();
   5295         }
   5296         while (s3 !== peg$FAILED) {
   5297             s2.push(s3);
   5298             s3 = peg$currPos;
   5299             s4 = peg$parsecommaSeparator();
   5300             if (s4 !== peg$FAILED) {
   5301                 s4 = peg$parsekeyValuePair();
   5302                 if (s4 === peg$FAILED) {
   5303                     s4 = peg$parseidentifier();
   5304                 }
   5305                 if (s4 === peg$FAILED) {
   5306                     peg$currPos = s3;
   5307                     s3 = peg$FAILED;
   5308                 }
   5309                 else {
   5310                     s3 = s4;
   5311                 }
   5312             }
   5313             else {
   5314                 s3 = s4;
   5315             }
   5316         }
   5317         if (s2.length < 1) {
   5318             peg$currPos = s1;
   5319             s1 = peg$FAILED;
   5320         }
   5321         else {
   5322             s1 = s2;
   5323         }
   5324         if (s1 !== peg$FAILED) {
   5325             s2 = peg$parsecommaSeparator();
   5326             if (s2 === peg$FAILED) {
   5327                 s2 = null;
   5328             }
   5329             s0 = s1;
   5330         }
   5331         else {
   5332             peg$currPos = s0;
   5333             s0 = peg$FAILED;
   5334         }
   5335         peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
   5336         return s0;
   5337     }
   5338     function peg$parsekeyValuePair() {
   5339         var s0, s1, s2, s3, s4, s5;
   5340         var key = peg$currPos * 82 + 69;
   5341         var cached = peg$resultsCache[key];
   5342         if (cached) {
   5343             peg$currPos = cached.nextPos;
   5344             return cached.result;
   5345         }
   5346         s0 = peg$currPos;
   5347         s1 = peg$parseexpression();
   5348         if (s1 !== peg$FAILED) {
   5349             s2 = peg$parse_();
   5350             if (input.charCodeAt(peg$currPos) === 58) {
   5351                 s3 = peg$c9;
   5352                 peg$currPos++;
   5353             }
   5354             else {
   5355                 s3 = peg$FAILED;
   5356                 if (peg$silentFails === 0) {
   5357                     peg$fail(peg$e10);
   5358                 }
   5359             }
   5360             if (s3 !== peg$FAILED) {
   5361                 s4 = peg$parse_nl();
   5362                 s5 = peg$parseexpression();
   5363                 if (s5 !== peg$FAILED) {
   5364                     peg$savedPos = s0;
   5365                     s0 = peg$f54(s1, s5);
   5366                 }
   5367                 else {
   5368                     peg$currPos = s0;
   5369                     s0 = peg$FAILED;
   5370                 }
   5371             }
   5372             else {
   5373                 peg$currPos = s0;
   5374                 s0 = peg$FAILED;
   5375             }
   5376         }
   5377         else {
   5378             peg$currPos = s0;
   5379             s0 = peg$FAILED;
   5380         }
   5381         peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
   5382         return s0;
   5383     }
   5384     function peg$parse_() {
   5385         var s0, s1;
   5386         var key = peg$currPos * 82 + 70;
   5387         var cached = peg$resultsCache[key];
   5388         if (cached) {
   5389             peg$currPos = cached.nextPos;
   5390             return cached.result;
   5391         }
   5392         peg$silentFails++;
   5393         s0 = [];
   5394         s1 = peg$parsewhiteSpaceCharactersOrComment();
   5395         while (s1 !== peg$FAILED) {
   5396             s0.push(s1);
   5397             s1 = peg$parsewhiteSpaceCharactersOrComment();
   5398         }
   5399         peg$silentFails--;
   5400         s1 = peg$FAILED;
   5401         if (peg$silentFails === 0) {
   5402             peg$fail(peg$e81);
   5403         }
   5404         peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
   5405         return s0;
   5406     }
   5407     function peg$parse_nl() {
   5408         var s0, s1;
   5409         var key = peg$currPos * 82 + 71;
   5410         var cached = peg$resultsCache[key];
   5411         if (cached) {
   5412             peg$currPos = cached.nextPos;
   5413             return cached.result;
   5414         }
   5415         peg$silentFails++;
   5416         s0 = [];
   5417         s1 = peg$parsewhiteSpaceCharactersOrComment();
   5418         if (s1 === peg$FAILED) {
   5419             s1 = peg$parsecommentOrNewLine();
   5420         }
   5421         while (s1 !== peg$FAILED) {
   5422             s0.push(s1);
   5423             s1 = peg$parsewhiteSpaceCharactersOrComment();
   5424             if (s1 === peg$FAILED) {
   5425                 s1 = peg$parsecommentOrNewLine();
   5426             }
   5427         }
   5428         peg$silentFails--;
   5429         s1 = peg$FAILED;
   5430         if (peg$silentFails === 0) {
   5431             peg$fail(peg$e81);
   5432         }
   5433         peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
   5434         return s0;
   5435     }
   5436     function peg$parse__() {
   5437         var s0, s1;
   5438         var key = peg$currPos * 82 + 72;
   5439         var cached = peg$resultsCache[key];
   5440         if (cached) {
   5441             peg$currPos = cached.nextPos;
   5442             return cached.result;
   5443         }
   5444         peg$silentFails++;
   5445         s0 = [];
   5446         s1 = peg$parsewhiteSpaceCharactersOrComment();
   5447         if (s1 !== peg$FAILED) {
   5448             while (s1 !== peg$FAILED) {
   5449                 s0.push(s1);
   5450                 s1 = peg$parsewhiteSpaceCharactersOrComment();
   5451             }
   5452         }
   5453         else {
   5454             s0 = peg$FAILED;
   5455         }
   5456         peg$silentFails--;
   5457         if (s0 === peg$FAILED) {
   5458             s1 = peg$FAILED;
   5459             if (peg$silentFails === 0) {
   5460                 peg$fail(peg$e81);
   5461             }
   5462         }
   5463         peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
   5464         return s0;
   5465     }
   5466     function peg$parse__nl() {
   5467         var s0, s1;
   5468         var key = peg$currPos * 82 + 73;
   5469         var cached = peg$resultsCache[key];
   5470         if (cached) {
   5471             peg$currPos = cached.nextPos;
   5472             return cached.result;
   5473         }
   5474         peg$silentFails++;
   5475         s0 = [];
   5476         s1 = peg$parsewhiteSpaceCharactersOrComment();
   5477         if (s1 === peg$FAILED) {
   5478             s1 = peg$parsecommentOrNewLine();
   5479         }
   5480         if (s1 !== peg$FAILED) {
   5481             while (s1 !== peg$FAILED) {
   5482                 s0.push(s1);
   5483                 s1 = peg$parsewhiteSpaceCharactersOrComment();
   5484                 if (s1 === peg$FAILED) {
   5485                     s1 = peg$parsecommentOrNewLine();
   5486                 }
   5487             }
   5488         }
   5489         else {
   5490             s0 = peg$FAILED;
   5491         }
   5492         peg$silentFails--;
   5493         if (s0 === peg$FAILED) {
   5494             s1 = peg$FAILED;
   5495             if (peg$silentFails === 0) {
   5496                 peg$fail(peg$e81);
   5497             }
   5498         }
   5499         peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
   5500         return s0;
   5501     }
   5502     function peg$parsestatementSeparator() {
   5503         var s0, s1, s2, s3;
   5504         var key = peg$currPos * 82 + 74;
   5505         var cached = peg$resultsCache[key];
   5506         if (cached) {
   5507             peg$currPos = cached.nextPos;
   5508             return cached.result;
   5509         }
   5510         peg$silentFails++;
   5511         s0 = peg$currPos;
   5512         s1 = peg$parse_();
   5513         s2 = [];
   5514         if (input.charCodeAt(peg$currPos) === 59) {
   5515             s3 = peg$c59;
   5516             peg$currPos++;
   5517         }
   5518         else {
   5519             s3 = peg$FAILED;
   5520             if (peg$silentFails === 0) {
   5521                 peg$fail(peg$e83);
   5522             }
   5523         }
   5524         if (s3 === peg$FAILED) {
   5525             s3 = peg$parsecommentOrNewLine();
   5526         }
   5527         if (s3 !== peg$FAILED) {
   5528             while (s3 !== peg$FAILED) {
   5529                 s2.push(s3);
   5530                 if (input.charCodeAt(peg$currPos) === 59) {
   5531                     s3 = peg$c59;
   5532                     peg$currPos++;
   5533                 }
   5534                 else {
   5535                     s3 = peg$FAILED;
   5536                     if (peg$silentFails === 0) {
   5537                         peg$fail(peg$e83);
   5538                     }
   5539                 }
   5540                 if (s3 === peg$FAILED) {
   5541                     s3 = peg$parsecommentOrNewLine();
   5542                 }
   5543             }
   5544         }
   5545         else {
   5546             s2 = peg$FAILED;
   5547         }
   5548         if (s2 !== peg$FAILED) {
   5549             s3 = peg$parse_nl();
   5550             s1 = [s1, s2, s3];
   5551             s0 = s1;
   5552         }
   5553         else {
   5554             peg$currPos = s0;
   5555             s0 = peg$FAILED;
   5556         }
   5557         peg$silentFails--;
   5558         if (s0 === peg$FAILED) {
   5559             s1 = peg$FAILED;
   5560             if (peg$silentFails === 0) {
   5561                 peg$fail(peg$e82);
   5562             }
   5563         }
   5564         peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
   5565         return s0;
   5566     }
   5567     function peg$parsecommaSeparator() {
   5568         var s0, s1, s2, s3;
   5569         var key = peg$currPos * 82 + 75;
   5570         var cached = peg$resultsCache[key];
   5571         if (cached) {
   5572             peg$currPos = cached.nextPos;
   5573             return cached.result;
   5574         }
   5575         peg$silentFails++;
   5576         s0 = peg$currPos;
   5577         s1 = peg$parse_();
   5578         if (input.charCodeAt(peg$currPos) === 44) {
   5579             s2 = peg$c60;
   5580             peg$currPos++;
   5581         }
   5582         else {
   5583             s2 = peg$FAILED;
   5584             if (peg$silentFails === 0) {
   5585                 peg$fail(peg$e85);
   5586             }
   5587         }
   5588         if (s2 !== peg$FAILED) {
   5589             s3 = peg$parse_nl();
   5590             s1 = [s1, s2, s3];
   5591             s0 = s1;
   5592         }
   5593         else {
   5594             peg$currPos = s0;
   5595             s0 = peg$FAILED;
   5596         }
   5597         peg$silentFails--;
   5598         if (s0 === peg$FAILED) {
   5599             s1 = peg$FAILED;
   5600             if (peg$silentFails === 0) {
   5601                 peg$fail(peg$e84);
   5602             }
   5603         }
   5604         peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
   5605         return s0;
   5606     }
   5607     function peg$parsecommentOrNewLine() {
   5608         var s0, s1, s2;
   5609         var key = peg$currPos * 82 + 76;
   5610         var cached = peg$resultsCache[key];
   5611         if (cached) {
   5612             peg$currPos = cached.nextPos;
   5613             return cached.result;
   5614         }
   5615         s0 = peg$currPos;
   5616         s1 = peg$parsefinalComment();
   5617         if (s1 === peg$FAILED) {
   5618             s1 = null;
   5619         }
   5620         s2 = peg$parsenewLine();
   5621         if (s2 !== peg$FAILED) {
   5622             s1 = [s1, s2];
   5623             s0 = s1;
   5624         }
   5625         else {
   5626             peg$currPos = s0;
   5627             s0 = peg$FAILED;
   5628         }
   5629         peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
   5630         return s0;
   5631     }
   5632     function peg$parsenewLine() {
   5633         var s0, s1;
   5634         var key = peg$currPos * 82 + 77;
   5635         var cached = peg$resultsCache[key];
   5636         if (cached) {
   5637             peg$currPos = cached.nextPos;
   5638             return cached.result;
   5639         }
   5640         peg$silentFails++;
   5641         if (peg$r10.test(input.charAt(peg$currPos))) {
   5642             s0 = input.charAt(peg$currPos);
   5643             peg$currPos++;
   5644         }
   5645         else {
   5646             s0 = peg$FAILED;
   5647             if (peg$silentFails === 0) {
   5648                 peg$fail(peg$e87);
   5649             }
   5650         }
   5651         peg$silentFails--;
   5652         if (s0 === peg$FAILED) {
   5653             s1 = peg$FAILED;
   5654             if (peg$silentFails === 0) {
   5655                 peg$fail(peg$e86);
   5656             }
   5657         }
   5658         peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
   5659         return s0;
   5660     }
   5661     function peg$parsefinalComment() {
   5662         var s0, s1, s2, s3, s4, s5;
   5663         var key = peg$currPos * 82 + 78;
   5664         var cached = peg$resultsCache[key];
   5665         if (cached) {
   5666             peg$currPos = cached.nextPos;
   5667             return cached.result;
   5668         }
   5669         peg$silentFails++;
   5670         s0 = peg$currPos;
   5671         s1 = peg$parse_();
   5672         if (input.substr(peg$currPos, 2) === peg$c61) {
   5673             s2 = peg$c61;
   5674             peg$currPos += 2;
   5675         }
   5676         else {
   5677             s2 = peg$FAILED;
   5678             if (peg$silentFails === 0) {
   5679                 peg$fail(peg$e89);
   5680             }
   5681         }
   5682         if (s2 !== peg$FAILED) {
   5683             s3 = peg$currPos;
   5684             s4 = [];
   5685             if (peg$r11.test(input.charAt(peg$currPos))) {
   5686                 s5 = input.charAt(peg$currPos);
   5687                 peg$currPos++;
   5688             }
   5689             else {
   5690                 s5 = peg$FAILED;
   5691                 if (peg$silentFails === 0) {
   5692                     peg$fail(peg$e90);
   5693                 }
   5694             }
   5695             while (s5 !== peg$FAILED) {
   5696                 s4.push(s5);
   5697                 if (peg$r11.test(input.charAt(peg$currPos))) {
   5698                     s5 = input.charAt(peg$currPos);
   5699                     peg$currPos++;
   5700                 }
   5701                 else {
   5702                     s5 = peg$FAILED;
   5703                     if (peg$silentFails === 0) {
   5704                         peg$fail(peg$e90);
   5705                     }
   5706                 }
   5707             }
   5708             s3 = input.substring(s3, peg$currPos);
   5709             peg$savedPos = s0;
   5710             s0 = peg$f55(s3);
   5711         }
   5712         else {
   5713             peg$currPos = s0;
   5714             s0 = peg$FAILED;
   5715         }
   5716         peg$silentFails--;
   5717         if (s0 === peg$FAILED) {
   5718             s1 = peg$FAILED;
   5719             if (peg$silentFails === 0) {
   5720                 peg$fail(peg$e88);
   5721             }
   5722         }
   5723         peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
   5724         return s0;
   5725     }
   5726     function peg$parsewhiteSpaceCharactersOrComment() {
   5727         var s0;
   5728         var key = peg$currPos * 82 + 79;
   5729         var cached = peg$resultsCache[key];
   5730         if (cached) {
   5731             peg$currPos = cached.nextPos;
   5732             return cached.result;
   5733         }
   5734         s0 = peg$parsewhiteSpaceCharacters();
   5735         if (s0 === peg$FAILED) {
   5736             s0 = peg$parsedelimitedComment();
   5737         }
   5738         peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
   5739         return s0;
   5740     }
   5741     function peg$parsedelimitedComment() {
   5742         var s0, s1, s2, s3, s4, s5, s6;
   5743         var key = peg$currPos * 82 + 80;
   5744         var cached = peg$resultsCache[key];
   5745         if (cached) {
   5746             peg$currPos = cached.nextPos;
   5747             return cached.result;
   5748         }
   5749         peg$silentFails++;
   5750         s0 = peg$currPos;
   5751         if (input.substr(peg$currPos, 2) === peg$c62) {
   5752             s1 = peg$c62;
   5753             peg$currPos += 2;
   5754         }
   5755         else {
   5756             s1 = peg$FAILED;
   5757             if (peg$silentFails === 0) {
   5758                 peg$fail(peg$e92);
   5759             }
   5760         }
   5761         if (s1 !== peg$FAILED) {
   5762             s2 = peg$currPos;
   5763             s3 = [];
   5764             if (peg$r12.test(input.charAt(peg$currPos))) {
   5765                 s4 = input.charAt(peg$currPos);
   5766                 peg$currPos++;
   5767             }
   5768             else {
   5769                 s4 = peg$FAILED;
   5770                 if (peg$silentFails === 0) {
   5771                     peg$fail(peg$e93);
   5772                 }
   5773             }
   5774             if (s4 === peg$FAILED) {
   5775                 s4 = peg$currPos;
   5776                 if (peg$r13.test(input.charAt(peg$currPos))) {
   5777                     s5 = input.charAt(peg$currPos);
   5778                     peg$currPos++;
   5779                 }
   5780                 else {
   5781                     s5 = peg$FAILED;
   5782                     if (peg$silentFails === 0) {
   5783                         peg$fail(peg$e94);
   5784                     }
   5785                 }
   5786                 if (s5 !== peg$FAILED) {
   5787                     if (peg$r14.test(input.charAt(peg$currPos))) {
   5788                         s6 = input.charAt(peg$currPos);
   5789                         peg$currPos++;
   5790                     }
   5791                     else {
   5792                         s6 = peg$FAILED;
   5793                         if (peg$silentFails === 0) {
   5794                             peg$fail(peg$e95);
   5795                         }
   5796                     }
   5797                     if (s6 !== peg$FAILED) {
   5798                         s5 = [s5, s6];
   5799                         s4 = s5;
   5800                     }
   5801                     else {
   5802                         peg$currPos = s4;
   5803                         s4 = peg$FAILED;
   5804                     }
   5805                 }
   5806                 else {
   5807                     peg$currPos = s4;
   5808                     s4 = peg$FAILED;
   5809                 }
   5810             }
   5811             while (s4 !== peg$FAILED) {
   5812                 s3.push(s4);
   5813                 if (peg$r12.test(input.charAt(peg$currPos))) {
   5814                     s4 = input.charAt(peg$currPos);
   5815                     peg$currPos++;
   5816                 }
   5817                 else {
   5818                     s4 = peg$FAILED;
   5819                     if (peg$silentFails === 0) {
   5820                         peg$fail(peg$e93);
   5821                     }
   5822                 }
   5823                 if (s4 === peg$FAILED) {
   5824                     s4 = peg$currPos;
   5825                     if (peg$r13.test(input.charAt(peg$currPos))) {
   5826                         s5 = input.charAt(peg$currPos);
   5827                         peg$currPos++;
   5828                     }
   5829                     else {
   5830                         s5 = peg$FAILED;
   5831                         if (peg$silentFails === 0) {
   5832                             peg$fail(peg$e94);
   5833                         }
   5834                     }
   5835                     if (s5 !== peg$FAILED) {
   5836                         if (peg$r14.test(input.charAt(peg$currPos))) {
   5837                             s6 = input.charAt(peg$currPos);
   5838                             peg$currPos++;
   5839                         }
   5840                         else {
   5841                             s6 = peg$FAILED;
   5842                             if (peg$silentFails === 0) {
   5843                                 peg$fail(peg$e95);
   5844                             }
   5845                         }
   5846                         if (s6 !== peg$FAILED) {
   5847                             s5 = [s5, s6];
   5848                             s4 = s5;
   5849                         }
   5850                         else {
   5851                             peg$currPos = s4;
   5852                             s4 = peg$FAILED;
   5853                         }
   5854                     }
   5855                     else {
   5856                         peg$currPos = s4;
   5857                         s4 = peg$FAILED;
   5858                     }
   5859                 }
   5860             }
   5861             s2 = input.substring(s2, peg$currPos);
   5862             if (input.substr(peg$currPos, 2) === peg$c63) {
   5863                 s3 = peg$c63;
   5864                 peg$currPos += 2;
   5865             }
   5866             else {
   5867                 s3 = peg$FAILED;
   5868                 if (peg$silentFails === 0) {
   5869                     peg$fail(peg$e96);
   5870                 }
   5871             }
   5872             if (s3 !== peg$FAILED) {
   5873                 peg$savedPos = s0;
   5874                 s0 = peg$f56(s2);
   5875             }
   5876             else {
   5877                 peg$currPos = s0;
   5878                 s0 = peg$FAILED;
   5879             }
   5880         }
   5881         else {
   5882             peg$currPos = s0;
   5883             s0 = peg$FAILED;
   5884         }
   5885         peg$silentFails--;
   5886         if (s0 === peg$FAILED) {
   5887             s1 = peg$FAILED;
   5888             if (peg$silentFails === 0) {
   5889                 peg$fail(peg$e91);
   5890             }
   5891         }
   5892         peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
   5893         return s0;
   5894     }
   5895     function peg$parsewhiteSpaceCharacters() {
   5896         var s0;
   5897         var key = peg$currPos * 82 + 81;
   5898         var cached = peg$resultsCache[key];
   5899         if (cached) {
   5900             peg$currPos = cached.nextPos;
   5901             return cached.result;
   5902         }
   5903         if (peg$r15.test(input.charAt(peg$currPos))) {
   5904             s0 = input.charAt(peg$currPos);
   5905             peg$currPos++;
   5906         }
   5907         else {
   5908             s0 = peg$FAILED;
   5909             if (peg$silentFails === 0) {
   5910                 peg$fail(peg$e97);
   5911             }
   5912         }
   5913         peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
   5914         return s0;
   5915     }
   5916     peg$result = peg$startRuleFunction();
   5917     if (peg$result !== peg$FAILED && peg$currPos === input.length) {
   5918         return peg$result;
   5919     }
   5920     else {
   5921         if (peg$result !== peg$FAILED && peg$currPos < input.length) {
   5922             peg$fail(peg$endExpectation());
   5923         }
   5924         throw peg$buildStructuredError(peg$maxFailExpected, peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null, peg$maxFailPos < input.length
   5925             ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1)
   5926             : peg$computeLocation(peg$maxFailPos, peg$maxFailPos));
   5927     }
   5928 }
   5929 export { peg$SyntaxError as SyntaxError, peg$parse as parse };
   5930 //# sourceMappingURL=peggyParser.js.map