{"version":3,"file":"intl-messageformat-parser.min.js","sources":["../../lib/types.js","../../lib/parser.js","../../lib/normalize.js","../../lib/skeleton.js","../../lib/index.js"],"sourcesContent":["export var TYPE;\n(function (TYPE) {\n /**\n * Raw text\n */\n TYPE[TYPE[\"literal\"] = 0] = \"literal\";\n /**\n * Variable w/o any format, e.g `var` in `this is a {var}`\n */\n TYPE[TYPE[\"argument\"] = 1] = \"argument\";\n /**\n * Variable w/ number format\n */\n TYPE[TYPE[\"number\"] = 2] = \"number\";\n /**\n * Variable w/ date format\n */\n TYPE[TYPE[\"date\"] = 3] = \"date\";\n /**\n * Variable w/ time format\n */\n TYPE[TYPE[\"time\"] = 4] = \"time\";\n /**\n * Variable w/ select format\n */\n TYPE[TYPE[\"select\"] = 5] = \"select\";\n /**\n * Variable w/ plural format\n */\n TYPE[TYPE[\"plural\"] = 6] = \"plural\";\n /**\n * Only possible within plural argument.\n * This is the `#` symbol that will be substituted with the count.\n */\n TYPE[TYPE[\"pound\"] = 7] = \"pound\";\n})(TYPE || (TYPE = {}));\n/**\n * Type Guards\n */\nexport function isLiteralElement(el) {\n return el.type === TYPE.literal;\n}\nexport function isArgumentElement(el) {\n return el.type === TYPE.argument;\n}\nexport function isNumberElement(el) {\n return el.type === TYPE.number;\n}\nexport function isDateElement(el) {\n return el.type === TYPE.date;\n}\nexport function isTimeElement(el) {\n return el.type === TYPE.time;\n}\nexport function isSelectElement(el) {\n return el.type === TYPE.select;\n}\nexport function isPluralElement(el) {\n return el.type === TYPE.plural;\n}\nexport function isPoundElement(el) {\n return el.type === TYPE.pound;\n}\nexport function isNumberSkeleton(el) {\n return !!(el && typeof el === 'object' && el.type === 0 /* number */);\n}\nexport function isDateTimeSkeleton(el) {\n return !!(el && typeof el === 'object' && el.type === 1 /* dateTime */);\n}\nexport function createLiteralElement(value) {\n return {\n type: TYPE.literal,\n value: value,\n };\n}\nexport function createNumberElement(value, style) {\n return {\n type: TYPE.number,\n value: value,\n style: style,\n };\n}\n","// tslint:disable:only-arrow-functions\n// tslint:disable:object-literal-shorthand\n// tslint:disable:trailing-comma\n// tslint:disable:object-literal-sort-keys\n// tslint:disable:one-variable-per-declaration\n// tslint:disable:max-line-length\n// tslint:disable:no-consecutive-blank-lines\n// tslint:disable:align\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\n// Generated by PEG.js v. 0.10.0 (ts-pegjs plugin v. 0.2.6 )\n//\n// https://pegjs.org/ https://github.com/metadevpro/ts-pegjs\nimport { TYPE, } from './types';\nvar SyntaxError = /** @class */ (function (_super) {\n __extends(SyntaxError, _super);\n function SyntaxError(message, expected, found, location) {\n var _this = _super.call(this) || this;\n _this.message = message;\n _this.expected = expected;\n _this.found = found;\n _this.location = location;\n _this.name = \"SyntaxError\";\n if (typeof Error.captureStackTrace === \"function\") {\n Error.captureStackTrace(_this, SyntaxError);\n }\n return _this;\n }\n SyntaxError.buildMessage = function (expected, found) {\n function hex(ch) {\n return ch.charCodeAt(0).toString(16).toUpperCase();\n }\n function literalEscape(s) {\n return s\n .replace(/\\\\/g, \"\\\\\\\\\")\n .replace(/\"/g, \"\\\\\\\"\")\n .replace(/\\0/g, \"\\\\0\")\n .replace(/\\t/g, \"\\\\t\")\n .replace(/\\n/g, \"\\\\n\")\n .replace(/\\r/g, \"\\\\r\")\n .replace(/[\\x00-\\x0F]/g, function (ch) { return \"\\\\x0\" + hex(ch); })\n .replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, function (ch) { return \"\\\\x\" + hex(ch); });\n }\n function classEscape(s) {\n return s\n .replace(/\\\\/g, \"\\\\\\\\\")\n .replace(/\\]/g, \"\\\\]\")\n .replace(/\\^/g, \"\\\\^\")\n .replace(/-/g, \"\\\\-\")\n .replace(/\\0/g, \"\\\\0\")\n .replace(/\\t/g, \"\\\\t\")\n .replace(/\\n/g, \"\\\\n\")\n .replace(/\\r/g, \"\\\\r\")\n .replace(/[\\x00-\\x0F]/g, function (ch) { return \"\\\\x0\" + hex(ch); })\n .replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, function (ch) { return \"\\\\x\" + hex(ch); });\n }\n function describeExpectation(expectation) {\n switch (expectation.type) {\n case \"literal\":\n return \"\\\"\" + literalEscape(expectation.text) + \"\\\"\";\n case \"class\":\n var escapedParts = expectation.parts.map(function (part) {\n return Array.isArray(part)\n ? classEscape(part[0]) + \"-\" + classEscape(part[1])\n : classEscape(part);\n });\n return \"[\" + (expectation.inverted ? \"^\" : \"\") + escapedParts + \"]\";\n case \"any\":\n return \"any character\";\n case \"end\":\n return \"end of input\";\n case \"other\":\n return expectation.description;\n }\n }\n function describeExpected(expected1) {\n var descriptions = expected1.map(describeExpectation);\n var i;\n var j;\n descriptions.sort();\n if (descriptions.length > 0) {\n for (i = 1, j = 1; i < descriptions.length; i++) {\n if (descriptions[i - 1] !== descriptions[i]) {\n descriptions[j] = descriptions[i];\n j++;\n }\n }\n descriptions.length = j;\n }\n switch (descriptions.length) {\n case 1:\n return descriptions[0];\n case 2:\n return descriptions[0] + \" or \" + descriptions[1];\n default:\n return descriptions.slice(0, -1).join(\", \")\n + \", or \"\n + descriptions[descriptions.length - 1];\n }\n }\n function describeFound(found1) {\n return found1 ? \"\\\"\" + literalEscape(found1) + \"\\\"\" : \"end of input\";\n }\n return \"Expected \" + describeExpected(expected) + \" but \" + describeFound(found) + \" found.\";\n };\n return SyntaxError;\n}(Error));\nexport { SyntaxError };\nfunction peg$parse(input, options) {\n options = options !== undefined ? options : {};\n var peg$FAILED = {};\n var peg$startRuleFunctions = { start: peg$parsestart };\n var peg$startRuleFunction = peg$parsestart;\n var peg$c0 = function (parts) {\n return parts.join('');\n };\n var peg$c1 = function (messageText) {\n return __assign({ type: TYPE.literal, value: messageText }, insertLocation());\n };\n var peg$c2 = \"#\";\n var peg$c3 = peg$literalExpectation(\"#\", false);\n var peg$c4 = function () {\n return __assign({ type: TYPE.pound }, insertLocation());\n };\n var peg$c5 = peg$otherExpectation(\"argumentElement\");\n var peg$c6 = \"{\";\n var peg$c7 = peg$literalExpectation(\"{\", false);\n var peg$c8 = \"}\";\n var peg$c9 = peg$literalExpectation(\"}\", false);\n var peg$c10 = function (value) {\n return __assign({ type: TYPE.argument, value: value }, insertLocation());\n };\n var peg$c11 = peg$otherExpectation(\"numberSkeletonId\");\n var peg$c12 = /^['\\/{}]/;\n var peg$c13 = peg$classExpectation([\"'\", \"/\", \"{\", \"}\"], false, false);\n var peg$c14 = peg$anyExpectation();\n var peg$c15 = peg$otherExpectation(\"numberSkeletonTokenOption\");\n var peg$c16 = \"/\";\n var peg$c17 = peg$literalExpectation(\"/\", false);\n var peg$c18 = function (option) { return option; };\n var peg$c19 = peg$otherExpectation(\"numberSkeletonToken\");\n var peg$c20 = function (stem, options) {\n return { stem: stem, options: options };\n };\n var peg$c21 = function (tokens) {\n return __assign({ type: 0 /* number */, tokens: tokens }, insertLocation());\n };\n var peg$c22 = \"::\";\n var peg$c23 = peg$literalExpectation(\"::\", false);\n var peg$c24 = function (skeleton) { return skeleton; };\n var peg$c25 = function () { messageCtx.push('numberArgStyle'); return true; };\n var peg$c26 = function (style) {\n messageCtx.pop();\n return style.replace(/\\s*$/, '');\n };\n var peg$c27 = \",\";\n var peg$c28 = peg$literalExpectation(\",\", false);\n var peg$c29 = \"number\";\n var peg$c30 = peg$literalExpectation(\"number\", false);\n var peg$c31 = function (value, type, style) {\n return __assign({ type: type === 'number' ? TYPE.number : type === 'date' ? TYPE.date : TYPE.time, style: style && style[2], value: value }, insertLocation());\n };\n var peg$c32 = \"'\";\n var peg$c33 = peg$literalExpectation(\"'\", false);\n var peg$c34 = /^[^']/;\n var peg$c35 = peg$classExpectation([\"'\"], true, false);\n var peg$c36 = /^[^a-zA-Z'{}]/;\n var peg$c37 = peg$classExpectation([[\"a\", \"z\"], [\"A\", \"Z\"], \"'\", \"{\", \"}\"], true, false);\n var peg$c38 = /^[a-zA-Z]/;\n var peg$c39 = peg$classExpectation([[\"a\", \"z\"], [\"A\", \"Z\"]], false, false);\n var peg$c40 = function (pattern) {\n return __assign({ type: 1 /* dateTime */, pattern: pattern }, insertLocation());\n };\n var peg$c41 = function () { messageCtx.push('dateOrTimeArgStyle'); return true; };\n var peg$c42 = \"date\";\n var peg$c43 = peg$literalExpectation(\"date\", false);\n var peg$c44 = \"time\";\n var peg$c45 = peg$literalExpectation(\"time\", false);\n var peg$c46 = \"plural\";\n var peg$c47 = peg$literalExpectation(\"plural\", false);\n var peg$c48 = \"selectordinal\";\n var peg$c49 = peg$literalExpectation(\"selectordinal\", false);\n var peg$c50 = \"offset:\";\n var peg$c51 = peg$literalExpectation(\"offset:\", false);\n var peg$c52 = function (value, pluralType, offset, options) {\n return __assign({ type: TYPE.plural, pluralType: pluralType === 'plural' ? 'cardinal' : 'ordinal', value: value, offset: offset ? offset[2] : 0, options: options.reduce(function (all, _a) {\n var id = _a.id, value = _a.value, optionLocation = _a.location;\n if (id in all) {\n error(\"Duplicate option \\\"\" + id + \"\\\" in plural element: \\\"\" + text() + \"\\\"\", location());\n }\n all[id] = {\n value: value,\n location: optionLocation\n };\n return all;\n }, {}) }, insertLocation());\n };\n var peg$c53 = \"select\";\n var peg$c54 = peg$literalExpectation(\"select\", false);\n var peg$c55 = function (value, options) {\n return __assign({ type: TYPE.select, value: value, options: options.reduce(function (all, _a) {\n var id = _a.id, value = _a.value, optionLocation = _a.location;\n if (id in all) {\n error(\"Duplicate option \\\"\" + id + \"\\\" in select element: \\\"\" + text() + \"\\\"\", location());\n }\n all[id] = {\n value: value,\n location: optionLocation\n };\n return all;\n }, {}) }, insertLocation());\n };\n var peg$c56 = \"=\";\n var peg$c57 = peg$literalExpectation(\"=\", false);\n var peg$c58 = function (id) { messageCtx.push('select'); return true; };\n var peg$c59 = function (id, value) {\n messageCtx.pop();\n return __assign({ id: id,\n value: value }, insertLocation());\n };\n var peg$c60 = function (id) { messageCtx.push('plural'); return true; };\n var peg$c61 = function (id, value) {\n messageCtx.pop();\n return __assign({ id: id,\n value: value }, insertLocation());\n };\n var peg$c62 = peg$otherExpectation(\"whitespace\");\n var peg$c63 = /^[\\t-\\r \\x85\\xA0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]/;\n var peg$c64 = peg$classExpectation([[\"\\t\", \"\\r\"], \" \", \"\\x85\", \"\\xA0\", \"\\u1680\", [\"\\u2000\", \"\\u200A\"], \"\\u2028\", \"\\u2029\", \"\\u202F\", \"\\u205F\", \"\\u3000\"], false, false);\n var peg$c65 = peg$otherExpectation(\"syntax pattern\");\n var peg$c66 = /^[!-\\/:-@[-\\^`{-~\\xA1-\\xA7\\xA9\\xAB\\xAC\\xAE\\xB0\\xB1\\xB6\\xBB\\xBF\\xD7\\xF7\\u2010-\\u2027\\u2030-\\u203E\\u2041-\\u2053\\u2055-\\u205E\\u2190-\\u245F\\u2500-\\u2775\\u2794-\\u2BFF\\u2E00-\\u2E7F\\u3001-\\u3003\\u3008-\\u3020\\u3030\\uFD3E\\uFD3F\\uFE45\\uFE46]/;\n var peg$c67 = peg$classExpectation([[\"!\", \"/\"], [\":\", \"@\"], [\"[\", \"^\"], \"`\", [\"{\", \"~\"], [\"\\xA1\", \"\\xA7\"], \"\\xA9\", \"\\xAB\", \"\\xAC\", \"\\xAE\", \"\\xB0\", \"\\xB1\", \"\\xB6\", \"\\xBB\", \"\\xBF\", \"\\xD7\", \"\\xF7\", [\"\\u2010\", \"\\u2027\"], [\"\\u2030\", \"\\u203E\"], [\"\\u2041\", \"\\u2053\"], [\"\\u2055\", \"\\u205E\"], [\"\\u2190\", \"\\u245F\"], [\"\\u2500\", \"\\u2775\"], [\"\\u2794\", \"\\u2BFF\"], [\"\\u2E00\", \"\\u2E7F\"], [\"\\u3001\", \"\\u3003\"], [\"\\u3008\", \"\\u3020\"], \"\\u3030\", \"\\uFD3E\", \"\\uFD3F\", \"\\uFE45\", \"\\uFE46\"], false, false);\n var peg$c68 = peg$otherExpectation(\"optional whitespace\");\n var peg$c69 = peg$otherExpectation(\"number\");\n var peg$c70 = \"-\";\n var peg$c71 = peg$literalExpectation(\"-\", false);\n var peg$c72 = function (negative, num) {\n return num\n ? negative\n ? -num\n : num\n : 0;\n };\n var peg$c73 = peg$otherExpectation(\"apostrophe\");\n var peg$c74 = peg$otherExpectation(\"double apostrophes\");\n var peg$c75 = \"''\";\n var peg$c76 = peg$literalExpectation(\"''\", false);\n var peg$c77 = function () { return \"'\"; };\n var peg$c78 = function (escapedChar, quotedChars) {\n return escapedChar + quotedChars.replace(\"''\", \"'\");\n };\n var peg$c79 = function (x) {\n return (x !== '{' &&\n !(isInPluralOption() && x === '#') &&\n !(isNestedMessageText() && x === '}'));\n };\n var peg$c80 = \"\\n\";\n var peg$c81 = peg$literalExpectation(\"\\n\", false);\n var peg$c82 = function (x) {\n return x === '{' || x === '}' || (isInPluralOption() && x === '#');\n };\n var peg$c83 = peg$otherExpectation(\"argNameOrNumber\");\n var peg$c84 = peg$otherExpectation(\"argNumber\");\n var peg$c85 = \"0\";\n var peg$c86 = peg$literalExpectation(\"0\", false);\n var peg$c87 = function () { return 0; };\n var peg$c88 = /^[1-9]/;\n var peg$c89 = peg$classExpectation([[\"1\", \"9\"]], false, false);\n var peg$c90 = /^[0-9]/;\n var peg$c91 = peg$classExpectation([[\"0\", \"9\"]], false, false);\n var peg$c92 = function (digits) {\n return parseInt(digits.join(''), 10);\n };\n var peg$c93 = peg$otherExpectation(\"argName\");\n var peg$currPos = 0;\n var peg$savedPos = 0;\n var peg$posDetailsCache = [{ line: 1, column: 1 }];\n var peg$maxFailPos = 0;\n var peg$maxFailExpected = [];\n var peg$silentFails = 0;\n var peg$result;\n if (options.startRule !== undefined) {\n if (!(options.startRule in peg$startRuleFunctions)) {\n throw new Error(\"Can't start parsing from rule \\\"\" + options.startRule + \"\\\".\");\n }\n peg$startRuleFunction = peg$startRuleFunctions[options.startRule];\n }\n function text() {\n return input.substring(peg$savedPos, peg$currPos);\n }\n function location() {\n return peg$computeLocation(peg$savedPos, peg$currPos);\n }\n function expected(description, location1) {\n location1 = location1 !== undefined\n ? location1\n : peg$computeLocation(peg$savedPos, peg$currPos);\n throw peg$buildStructuredError([peg$otherExpectation(description)], input.substring(peg$savedPos, peg$currPos), location1);\n }\n function error(message, location1) {\n location1 = location1 !== undefined\n ? location1\n : peg$computeLocation(peg$savedPos, peg$currPos);\n throw peg$buildSimpleError(message, location1);\n }\n function peg$literalExpectation(text1, ignoreCase) {\n return { type: \"literal\", text: text1, ignoreCase: ignoreCase };\n }\n function peg$classExpectation(parts, inverted, ignoreCase) {\n return { type: \"class\", parts: parts, inverted: inverted, ignoreCase: ignoreCase };\n }\n function peg$anyExpectation() {\n return { type: \"any\" };\n }\n function peg$endExpectation() {\n return { type: \"end\" };\n }\n function peg$otherExpectation(description) {\n return { type: \"other\", description: description };\n }\n function peg$computePosDetails(pos) {\n var details = peg$posDetailsCache[pos];\n var p;\n if (details) {\n return details;\n }\n else {\n p = pos - 1;\n while (!peg$posDetailsCache[p]) {\n p--;\n }\n details = peg$posDetailsCache[p];\n details = {\n line: details.line,\n column: details.column\n };\n while (p < pos) {\n if (input.charCodeAt(p) === 10) {\n details.line++;\n details.column = 1;\n }\n else {\n details.column++;\n }\n p++;\n }\n peg$posDetailsCache[pos] = details;\n return details;\n }\n }\n function peg$computeLocation(startPos, endPos) {\n var startPosDetails = peg$computePosDetails(startPos);\n var endPosDetails = peg$computePosDetails(endPos);\n return {\n start: {\n offset: startPos,\n line: startPosDetails.line,\n column: startPosDetails.column\n },\n end: {\n offset: endPos,\n line: endPosDetails.line,\n column: endPosDetails.column\n }\n };\n }\n function peg$fail(expected1) {\n if (peg$currPos < peg$maxFailPos) {\n return;\n }\n if (peg$currPos > peg$maxFailPos) {\n peg$maxFailPos = peg$currPos;\n peg$maxFailExpected = [];\n }\n peg$maxFailExpected.push(expected1);\n }\n function peg$buildSimpleError(message, location1) {\n return new SyntaxError(message, [], \"\", location1);\n }\n function peg$buildStructuredError(expected1, found, location1) {\n return new SyntaxError(SyntaxError.buildMessage(expected1, found), expected1, found, location1);\n }\n function peg$parsestart() {\n var s0;\n s0 = peg$parsemessage();\n return s0;\n }\n function peg$parsemessage() {\n var s0, s1;\n s0 = [];\n s1 = peg$parsemessageElement();\n while (s1 !== peg$FAILED) {\n s0.push(s1);\n s1 = peg$parsemessageElement();\n }\n return s0;\n }\n function peg$parsemessageElement() {\n var s0;\n s0 = peg$parseliteralElement();\n if (s0 === peg$FAILED) {\n s0 = peg$parseargumentElement();\n if (s0 === peg$FAILED) {\n s0 = peg$parsesimpleFormatElement();\n if (s0 === peg$FAILED) {\n s0 = peg$parsepluralElement();\n if (s0 === peg$FAILED) {\n s0 = peg$parseselectElement();\n if (s0 === peg$FAILED) {\n s0 = peg$parsepoundElement();\n }\n }\n }\n }\n }\n return s0;\n }\n function peg$parsemessageText() {\n var s0, s1, s2;\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parsedoubleApostrophes();\n if (s2 === peg$FAILED) {\n s2 = peg$parsequotedString();\n if (s2 === peg$FAILED) {\n s2 = peg$parseunquotedString();\n }\n }\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parsedoubleApostrophes();\n if (s2 === peg$FAILED) {\n s2 = peg$parsequotedString();\n if (s2 === peg$FAILED) {\n s2 = peg$parseunquotedString();\n }\n }\n }\n }\n else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c0(s1);\n }\n s0 = s1;\n return s0;\n }\n function peg$parseliteralElement() {\n var s0, s1;\n s0 = peg$currPos;\n s1 = peg$parsemessageText();\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c1(s1);\n }\n s0 = s1;\n return s0;\n }\n function peg$parsepoundElement() {\n var s0, s1;\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 35) {\n s1 = peg$c2;\n peg$currPos++;\n }\n else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c3);\n }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c4();\n }\n s0 = s1;\n return s0;\n }\n function peg$parseargumentElement() {\n var s0, s1, s2, s3, s4, s5;\n peg$silentFails++;\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 123) {\n s1 = peg$c6;\n peg$currPos++;\n }\n else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c7);\n }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseargNameOrNumber();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse_();\n if (s4 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 125) {\n s5 = peg$c8;\n peg$currPos++;\n }\n else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c9);\n }\n }\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c10(s3);\n s0 = s1;\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c5);\n }\n }\n return s0;\n }\n function peg$parsenumberSkeletonId() {\n var s0, s1, s2, s3, s4;\n peg$silentFails++;\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$currPos;\n s3 = peg$currPos;\n peg$silentFails++;\n s4 = peg$parsewhiteSpace();\n if (s4 === peg$FAILED) {\n if (peg$c12.test(input.charAt(peg$currPos))) {\n s4 = input.charAt(peg$currPos);\n peg$currPos++;\n }\n else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c13);\n }\n }\n }\n peg$silentFails--;\n if (s4 === peg$FAILED) {\n s3 = undefined;\n }\n else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n if (s3 !== peg$FAILED) {\n if (input.length > peg$currPos) {\n s4 = input.charAt(peg$currPos);\n peg$currPos++;\n }\n else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c14);\n }\n }\n if (s4 !== peg$FAILED) {\n s3 = [s3, s4];\n s2 = s3;\n }\n else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$currPos;\n s3 = peg$currPos;\n peg$silentFails++;\n s4 = peg$parsewhiteSpace();\n if (s4 === peg$FAILED) {\n if (peg$c12.test(input.charAt(peg$currPos))) {\n s4 = input.charAt(peg$currPos);\n peg$currPos++;\n }\n else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c13);\n }\n }\n }\n peg$silentFails--;\n if (s4 === peg$FAILED) {\n s3 = undefined;\n }\n else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n if (s3 !== peg$FAILED) {\n if (input.length > peg$currPos) {\n s4 = input.charAt(peg$currPos);\n peg$currPos++;\n }\n else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c14);\n }\n }\n if (s4 !== peg$FAILED) {\n s3 = [s3, s4];\n s2 = s3;\n }\n else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n }\n }\n else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n s0 = input.substring(s0, peg$currPos);\n }\n else {\n s0 = s1;\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c11);\n }\n }\n return s0;\n }\n function peg$parsenumberSkeletonTokenOption() {\n var s0, s1, s2;\n peg$silentFails++;\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 47) {\n s1 = peg$c16;\n peg$currPos++;\n }\n else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c17);\n }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsenumberSkeletonId();\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c18(s2);\n s0 = s1;\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c15);\n }\n }\n return s0;\n }\n function peg$parsenumberSkeletonToken() {\n var s0, s1, s2, s3, s4;\n peg$silentFails++;\n s0 = peg$currPos;\n s1 = peg$parse_();\n if (s1 !== peg$FAILED) {\n s2 = peg$parsenumberSkeletonId();\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$parsenumberSkeletonTokenOption();\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parsenumberSkeletonTokenOption();\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c20(s2, s3);\n s0 = s1;\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c19);\n }\n }\n return s0;\n }\n function peg$parsenumberSkeleton() {\n var s0, s1, s2;\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parsenumberSkeletonToken();\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parsenumberSkeletonToken();\n }\n }\n else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c21(s1);\n }\n s0 = s1;\n return s0;\n }\n function peg$parsenumberArgStyle() {\n var s0, s1, s2;\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c22) {\n s1 = peg$c22;\n peg$currPos += 2;\n }\n else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c23);\n }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsenumberSkeleton();\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c24(s2);\n s0 = s1;\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n peg$savedPos = peg$currPos;\n s1 = peg$c25();\n if (s1) {\n s1 = undefined;\n }\n else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsemessageText();\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c26(s2);\n s0 = s1;\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n return s0;\n }\n function peg$parsenumberFormatElement() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12;\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 123) {\n s1 = peg$c6;\n peg$currPos++;\n }\n else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c7);\n }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseargNameOrNumber();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse_();\n if (s4 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 44) {\n s5 = peg$c27;\n peg$currPos++;\n }\n else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c28);\n }\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parse_();\n if (s6 !== peg$FAILED) {\n if (input.substr(peg$currPos, 6) === peg$c29) {\n s7 = peg$c29;\n peg$currPos += 6;\n }\n else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c30);\n }\n }\n if (s7 !== peg$FAILED) {\n s8 = peg$parse_();\n if (s8 !== peg$FAILED) {\n s9 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 44) {\n s10 = peg$c27;\n peg$currPos++;\n }\n else {\n s10 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c28);\n }\n }\n if (s10 !== peg$FAILED) {\n s11 = peg$parse_();\n if (s11 !== peg$FAILED) {\n s12 = peg$parsenumberArgStyle();\n if (s12 !== peg$FAILED) {\n s10 = [s10, s11, s12];\n s9 = s10;\n }\n else {\n peg$currPos = s9;\n s9 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s9;\n s9 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s9;\n s9 = peg$FAILED;\n }\n if (s9 === peg$FAILED) {\n s9 = null;\n }\n if (s9 !== peg$FAILED) {\n s10 = peg$parse_();\n if (s10 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 125) {\n s11 = peg$c8;\n peg$currPos++;\n }\n else {\n s11 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c9);\n }\n }\n if (s11 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c31(s3, s7, s9);\n s0 = s1;\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n return s0;\n }\n function peg$parsedateTimeSkeletonLiteral() {\n var s0, s1, s2, s3;\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 39) {\n s1 = peg$c32;\n peg$currPos++;\n }\n else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c33);\n }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parsedoubleApostrophes();\n if (s3 === peg$FAILED) {\n if (peg$c34.test(input.charAt(peg$currPos))) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n }\n else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c35);\n }\n }\n }\n if (s3 !== peg$FAILED) {\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parsedoubleApostrophes();\n if (s3 === peg$FAILED) {\n if (peg$c34.test(input.charAt(peg$currPos))) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n }\n else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c35);\n }\n }\n }\n }\n }\n else {\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 39) {\n s3 = peg$c32;\n peg$currPos++;\n }\n else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c33);\n }\n }\n if (s3 !== peg$FAILED) {\n s1 = [s1, s2, s3];\n s0 = s1;\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = [];\n s1 = peg$parsedoubleApostrophes();\n if (s1 === peg$FAILED) {\n if (peg$c36.test(input.charAt(peg$currPos))) {\n s1 = input.charAt(peg$currPos);\n peg$currPos++;\n }\n else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c37);\n }\n }\n }\n if (s1 !== peg$FAILED) {\n while (s1 !== peg$FAILED) {\n s0.push(s1);\n s1 = peg$parsedoubleApostrophes();\n if (s1 === peg$FAILED) {\n if (peg$c36.test(input.charAt(peg$currPos))) {\n s1 = input.charAt(peg$currPos);\n peg$currPos++;\n }\n else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c37);\n }\n }\n }\n }\n }\n else {\n s0 = peg$FAILED;\n }\n }\n return s0;\n }\n function peg$parsedateTimeSkeletonPattern() {\n var s0, s1;\n s0 = [];\n if (peg$c38.test(input.charAt(peg$currPos))) {\n s1 = input.charAt(peg$currPos);\n peg$currPos++;\n }\n else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c39);\n }\n }\n if (s1 !== peg$FAILED) {\n while (s1 !== peg$FAILED) {\n s0.push(s1);\n if (peg$c38.test(input.charAt(peg$currPos))) {\n s1 = input.charAt(peg$currPos);\n peg$currPos++;\n }\n else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c39);\n }\n }\n }\n }\n else {\n s0 = peg$FAILED;\n }\n return s0;\n }\n function peg$parsedateTimeSkeleton() {\n var s0, s1, s2, s3;\n s0 = peg$currPos;\n s1 = peg$currPos;\n s2 = [];\n s3 = peg$parsedateTimeSkeletonLiteral();\n if (s3 === peg$FAILED) {\n s3 = peg$parsedateTimeSkeletonPattern();\n }\n if (s3 !== peg$FAILED) {\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parsedateTimeSkeletonLiteral();\n if (s3 === peg$FAILED) {\n s3 = peg$parsedateTimeSkeletonPattern();\n }\n }\n }\n else {\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s1 = input.substring(s1, peg$currPos);\n }\n else {\n s1 = s2;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c40(s1);\n }\n s0 = s1;\n return s0;\n }\n function peg$parsedateOrTimeArgStyle() {\n var s0, s1, s2;\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c22) {\n s1 = peg$c22;\n peg$currPos += 2;\n }\n else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c23);\n }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsedateTimeSkeleton();\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c24(s2);\n s0 = s1;\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n peg$savedPos = peg$currPos;\n s1 = peg$c41();\n if (s1) {\n s1 = undefined;\n }\n else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsemessageText();\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c26(s2);\n s0 = s1;\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n return s0;\n }\n function peg$parsedateOrTimeFormatElement() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12;\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 123) {\n s1 = peg$c6;\n peg$currPos++;\n }\n else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c7);\n }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseargNameOrNumber();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse_();\n if (s4 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 44) {\n s5 = peg$c27;\n peg$currPos++;\n }\n else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c28);\n }\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parse_();\n if (s6 !== peg$FAILED) {\n if (input.substr(peg$currPos, 4) === peg$c42) {\n s7 = peg$c42;\n peg$currPos += 4;\n }\n else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c43);\n }\n }\n if (s7 === peg$FAILED) {\n if (input.substr(peg$currPos, 4) === peg$c44) {\n s7 = peg$c44;\n peg$currPos += 4;\n }\n else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c45);\n }\n }\n }\n if (s7 !== peg$FAILED) {\n s8 = peg$parse_();\n if (s8 !== peg$FAILED) {\n s9 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 44) {\n s10 = peg$c27;\n peg$currPos++;\n }\n else {\n s10 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c28);\n }\n }\n if (s10 !== peg$FAILED) {\n s11 = peg$parse_();\n if (s11 !== peg$FAILED) {\n s12 = peg$parsedateOrTimeArgStyle();\n if (s12 !== peg$FAILED) {\n s10 = [s10, s11, s12];\n s9 = s10;\n }\n else {\n peg$currPos = s9;\n s9 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s9;\n s9 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s9;\n s9 = peg$FAILED;\n }\n if (s9 === peg$FAILED) {\n s9 = null;\n }\n if (s9 !== peg$FAILED) {\n s10 = peg$parse_();\n if (s10 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 125) {\n s11 = peg$c8;\n peg$currPos++;\n }\n else {\n s11 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c9);\n }\n }\n if (s11 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c31(s3, s7, s9);\n s0 = s1;\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n return s0;\n }\n function peg$parsesimpleFormatElement() {\n var s0;\n s0 = peg$parsenumberFormatElement();\n if (s0 === peg$FAILED) {\n s0 = peg$parsedateOrTimeFormatElement();\n }\n return s0;\n }\n function peg$parsepluralElement() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15;\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 123) {\n s1 = peg$c6;\n peg$currPos++;\n }\n else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c7);\n }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseargNameOrNumber();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse_();\n if (s4 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 44) {\n s5 = peg$c27;\n peg$currPos++;\n }\n else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c28);\n }\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parse_();\n if (s6 !== peg$FAILED) {\n if (input.substr(peg$currPos, 6) === peg$c46) {\n s7 = peg$c46;\n peg$currPos += 6;\n }\n else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c47);\n }\n }\n if (s7 === peg$FAILED) {\n if (input.substr(peg$currPos, 13) === peg$c48) {\n s7 = peg$c48;\n peg$currPos += 13;\n }\n else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c49);\n }\n }\n }\n if (s7 !== peg$FAILED) {\n s8 = peg$parse_();\n if (s8 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 44) {\n s9 = peg$c27;\n peg$currPos++;\n }\n else {\n s9 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c28);\n }\n }\n if (s9 !== peg$FAILED) {\n s10 = peg$parse_();\n if (s10 !== peg$FAILED) {\n s11 = peg$currPos;\n if (input.substr(peg$currPos, 7) === peg$c50) {\n s12 = peg$c50;\n peg$currPos += 7;\n }\n else {\n s12 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c51);\n }\n }\n if (s12 !== peg$FAILED) {\n s13 = peg$parse_();\n if (s13 !== peg$FAILED) {\n s14 = peg$parsenumber();\n if (s14 !== peg$FAILED) {\n s12 = [s12, s13, s14];\n s11 = s12;\n }\n else {\n peg$currPos = s11;\n s11 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s11;\n s11 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s11;\n s11 = peg$FAILED;\n }\n if (s11 === peg$FAILED) {\n s11 = null;\n }\n if (s11 !== peg$FAILED) {\n s12 = peg$parse_();\n if (s12 !== peg$FAILED) {\n s13 = [];\n s14 = peg$parsepluralOption();\n if (s14 !== peg$FAILED) {\n while (s14 !== peg$FAILED) {\n s13.push(s14);\n s14 = peg$parsepluralOption();\n }\n }\n else {\n s13 = peg$FAILED;\n }\n if (s13 !== peg$FAILED) {\n s14 = peg$parse_();\n if (s14 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 125) {\n s15 = peg$c8;\n peg$currPos++;\n }\n else {\n s15 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c9);\n }\n }\n if (s15 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c52(s3, s7, s11, s13);\n s0 = s1;\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n return s0;\n }\n function peg$parseselectElement() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13;\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 123) {\n s1 = peg$c6;\n peg$currPos++;\n }\n else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c7);\n }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseargNameOrNumber();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse_();\n if (s4 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 44) {\n s5 = peg$c27;\n peg$currPos++;\n }\n else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c28);\n }\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parse_();\n if (s6 !== peg$FAILED) {\n if (input.substr(peg$currPos, 6) === peg$c53) {\n s7 = peg$c53;\n peg$currPos += 6;\n }\n else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c54);\n }\n }\n if (s7 !== peg$FAILED) {\n s8 = peg$parse_();\n if (s8 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 44) {\n s9 = peg$c27;\n peg$currPos++;\n }\n else {\n s9 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c28);\n }\n }\n if (s9 !== peg$FAILED) {\n s10 = peg$parse_();\n if (s10 !== peg$FAILED) {\n s11 = [];\n s12 = peg$parseselectOption();\n if (s12 !== peg$FAILED) {\n while (s12 !== peg$FAILED) {\n s11.push(s12);\n s12 = peg$parseselectOption();\n }\n }\n else {\n s11 = peg$FAILED;\n }\n if (s11 !== peg$FAILED) {\n s12 = peg$parse_();\n if (s12 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 125) {\n s13 = peg$c8;\n peg$currPos++;\n }\n else {\n s13 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c9);\n }\n }\n if (s13 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c55(s3, s11);\n s0 = s1;\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n return s0;\n }\n function peg$parsepluralRuleSelectValue() {\n var s0, s1, s2, s3;\n s0 = peg$currPos;\n s1 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 61) {\n s2 = peg$c56;\n peg$currPos++;\n }\n else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c57);\n }\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parsenumber();\n if (s3 !== peg$FAILED) {\n s2 = [s2, s3];\n s1 = s2;\n }\n else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n s0 = input.substring(s0, peg$currPos);\n }\n else {\n s0 = s1;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$parseargName();\n }\n return s0;\n }\n function peg$parseselectOption() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n s0 = peg$currPos;\n s1 = peg$parse_();\n if (s1 !== peg$FAILED) {\n s2 = peg$parseargName();\n if (s2 !== peg$FAILED) {\n s3 = peg$parse_();\n if (s3 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 123) {\n s4 = peg$c6;\n peg$currPos++;\n }\n else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c7);\n }\n }\n if (s4 !== peg$FAILED) {\n peg$savedPos = peg$currPos;\n s5 = peg$c58(s2);\n if (s5) {\n s5 = undefined;\n }\n else {\n s5 = peg$FAILED;\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parsemessage();\n if (s6 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 125) {\n s7 = peg$c8;\n peg$currPos++;\n }\n else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c9);\n }\n }\n if (s7 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c59(s2, s6);\n s0 = s1;\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n return s0;\n }\n function peg$parsepluralOption() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n s0 = peg$currPos;\n s1 = peg$parse_();\n if (s1 !== peg$FAILED) {\n s2 = peg$parsepluralRuleSelectValue();\n if (s2 !== peg$FAILED) {\n s3 = peg$parse_();\n if (s3 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 123) {\n s4 = peg$c6;\n peg$currPos++;\n }\n else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c7);\n }\n }\n if (s4 !== peg$FAILED) {\n peg$savedPos = peg$currPos;\n s5 = peg$c60(s2);\n if (s5) {\n s5 = undefined;\n }\n else {\n s5 = peg$FAILED;\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parsemessage();\n if (s6 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 125) {\n s7 = peg$c8;\n peg$currPos++;\n }\n else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c9);\n }\n }\n if (s7 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c61(s2, s6);\n s0 = s1;\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n return s0;\n }\n function peg$parsewhiteSpace() {\n var s0, s1;\n peg$silentFails++;\n if (peg$c63.test(input.charAt(peg$currPos))) {\n s0 = input.charAt(peg$currPos);\n peg$currPos++;\n }\n else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c64);\n }\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c62);\n }\n }\n return s0;\n }\n function peg$parsepatternSyntax() {\n var s0, s1;\n peg$silentFails++;\n if (peg$c66.test(input.charAt(peg$currPos))) {\n s0 = input.charAt(peg$currPos);\n peg$currPos++;\n }\n else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c67);\n }\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c65);\n }\n }\n return s0;\n }\n function peg$parse_() {\n var s0, s1, s2;\n peg$silentFails++;\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parsewhiteSpace();\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parsewhiteSpace();\n }\n if (s1 !== peg$FAILED) {\n s0 = input.substring(s0, peg$currPos);\n }\n else {\n s0 = s1;\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c68);\n }\n }\n return s0;\n }\n function peg$parsenumber() {\n var s0, s1, s2;\n peg$silentFails++;\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 45) {\n s1 = peg$c70;\n peg$currPos++;\n }\n else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c71);\n }\n }\n if (s1 === peg$FAILED) {\n s1 = null;\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parseargNumber();\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c72(s1, s2);\n s0 = s1;\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c69);\n }\n }\n return s0;\n }\n function peg$parseapostrophe() {\n var s0, s1;\n peg$silentFails++;\n if (input.charCodeAt(peg$currPos) === 39) {\n s0 = peg$c32;\n peg$currPos++;\n }\n else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c33);\n }\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c73);\n }\n }\n return s0;\n }\n function peg$parsedoubleApostrophes() {\n var s0, s1;\n peg$silentFails++;\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c75) {\n s1 = peg$c75;\n peg$currPos += 2;\n }\n else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c76);\n }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c77();\n }\n s0 = s1;\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c74);\n }\n }\n return s0;\n }\n function peg$parsequotedString() {\n var s0, s1, s2, s3, s4, s5;\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 39) {\n s1 = peg$c32;\n peg$currPos++;\n }\n else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c33);\n }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parseescapedChar();\n if (s2 !== peg$FAILED) {\n s3 = peg$currPos;\n s4 = [];\n if (input.substr(peg$currPos, 2) === peg$c75) {\n s5 = peg$c75;\n peg$currPos += 2;\n }\n else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c76);\n }\n }\n if (s5 === peg$FAILED) {\n if (peg$c34.test(input.charAt(peg$currPos))) {\n s5 = input.charAt(peg$currPos);\n peg$currPos++;\n }\n else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c35);\n }\n }\n }\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n if (input.substr(peg$currPos, 2) === peg$c75) {\n s5 = peg$c75;\n peg$currPos += 2;\n }\n else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c76);\n }\n }\n if (s5 === peg$FAILED) {\n if (peg$c34.test(input.charAt(peg$currPos))) {\n s5 = input.charAt(peg$currPos);\n peg$currPos++;\n }\n else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c35);\n }\n }\n }\n }\n if (s4 !== peg$FAILED) {\n s3 = input.substring(s3, peg$currPos);\n }\n else {\n s3 = s4;\n }\n if (s3 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 39) {\n s4 = peg$c32;\n peg$currPos++;\n }\n else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c33);\n }\n }\n if (s4 === peg$FAILED) {\n s4 = null;\n }\n if (s4 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c78(s2, s3);\n s0 = s1;\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n return s0;\n }\n function peg$parseunquotedString() {\n var s0, s1, s2, s3;\n s0 = peg$currPos;\n s1 = peg$currPos;\n if (input.length > peg$currPos) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n }\n else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c14);\n }\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = peg$currPos;\n s3 = peg$c79(s2);\n if (s3) {\n s3 = undefined;\n }\n else {\n s3 = peg$FAILED;\n }\n if (s3 !== peg$FAILED) {\n s2 = [s2, s3];\n s1 = s2;\n }\n else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 10) {\n s1 = peg$c80;\n peg$currPos++;\n }\n else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c81);\n }\n }\n }\n if (s1 !== peg$FAILED) {\n s0 = input.substring(s0, peg$currPos);\n }\n else {\n s0 = s1;\n }\n return s0;\n }\n function peg$parseescapedChar() {\n var s0, s1, s2, s3;\n s0 = peg$currPos;\n s1 = peg$currPos;\n if (input.length > peg$currPos) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n }\n else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c14);\n }\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = peg$currPos;\n s3 = peg$c82(s2);\n if (s3) {\n s3 = undefined;\n }\n else {\n s3 = peg$FAILED;\n }\n if (s3 !== peg$FAILED) {\n s2 = [s2, s3];\n s1 = s2;\n }\n else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n s0 = input.substring(s0, peg$currPos);\n }\n else {\n s0 = s1;\n }\n return s0;\n }\n function peg$parseargNameOrNumber() {\n var s0, s1;\n peg$silentFails++;\n s0 = peg$currPos;\n s1 = peg$parseargNumber();\n if (s1 === peg$FAILED) {\n s1 = peg$parseargName();\n }\n if (s1 !== peg$FAILED) {\n s0 = input.substring(s0, peg$currPos);\n }\n else {\n s0 = s1;\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c83);\n }\n }\n return s0;\n }\n function peg$parseargNumber() {\n var s0, s1, s2, s3, s4;\n peg$silentFails++;\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 48) {\n s1 = peg$c85;\n peg$currPos++;\n }\n else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c86);\n }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c87();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$currPos;\n if (peg$c88.test(input.charAt(peg$currPos))) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n }\n else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c89);\n }\n }\n if (s2 !== peg$FAILED) {\n s3 = [];\n if (peg$c90.test(input.charAt(peg$currPos))) {\n s4 = input.charAt(peg$currPos);\n peg$currPos++;\n }\n else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c91);\n }\n }\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n if (peg$c90.test(input.charAt(peg$currPos))) {\n s4 = input.charAt(peg$currPos);\n peg$currPos++;\n }\n else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c91);\n }\n }\n }\n if (s3 !== peg$FAILED) {\n s2 = [s2, s3];\n s1 = s2;\n }\n else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c92(s1);\n }\n s0 = s1;\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c84);\n }\n }\n return s0;\n }\n function peg$parseargName() {\n var s0, s1, s2, s3, s4;\n peg$silentFails++;\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$currPos;\n s3 = peg$currPos;\n peg$silentFails++;\n s4 = peg$parsewhiteSpace();\n if (s4 === peg$FAILED) {\n s4 = peg$parsepatternSyntax();\n }\n peg$silentFails--;\n if (s4 === peg$FAILED) {\n s3 = undefined;\n }\n else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n if (s3 !== peg$FAILED) {\n if (input.length > peg$currPos) {\n s4 = input.charAt(peg$currPos);\n peg$currPos++;\n }\n else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c14);\n }\n }\n if (s4 !== peg$FAILED) {\n s3 = [s3, s4];\n s2 = s3;\n }\n else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$currPos;\n s3 = peg$currPos;\n peg$silentFails++;\n s4 = peg$parsewhiteSpace();\n if (s4 === peg$FAILED) {\n s4 = peg$parsepatternSyntax();\n }\n peg$silentFails--;\n if (s4 === peg$FAILED) {\n s3 = undefined;\n }\n else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n if (s3 !== peg$FAILED) {\n if (input.length > peg$currPos) {\n s4 = input.charAt(peg$currPos);\n peg$currPos++;\n }\n else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c14);\n }\n }\n if (s4 !== peg$FAILED) {\n s3 = [s3, s4];\n s2 = s3;\n }\n else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n }\n }\n else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n s0 = input.substring(s0, peg$currPos);\n }\n else {\n s0 = s1;\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c93);\n }\n }\n return s0;\n }\n var messageCtx = ['root'];\n function isNestedMessageText() {\n return messageCtx.length > 1;\n }\n function isInPluralOption() {\n return messageCtx[messageCtx.length - 1] === 'plural';\n }\n function insertLocation() {\n return options && options.captureLocation ? {\n location: location()\n } : {};\n }\n peg$result = peg$startRuleFunction();\n if (peg$result !== peg$FAILED && peg$currPos === input.length) {\n return peg$result;\n }\n else {\n if (peg$result !== peg$FAILED && peg$currPos < input.length) {\n peg$fail(peg$endExpectation());\n }\n throw peg$buildStructuredError(peg$maxFailExpected, peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null, peg$maxFailPos < input.length\n ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1)\n : peg$computeLocation(peg$maxFailPos, peg$maxFailPos));\n }\n}\nexport var pegParse = peg$parse;\n","var __spreadArrays = (this && this.__spreadArrays) || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n};\nimport { isPluralElement, isLiteralElement, isSelectElement, } from './types';\nimport { pegParse } from './parser';\nvar PLURAL_HASHTAG_REGEX = /(^|[^\\\\])#/g;\n/**\n * Whether to convert `#` in plural rule options\n * to `{var, number}`\n * @param el AST Element\n * @param pluralStack current plural stack\n */\nexport function normalizeHashtagInPlural(els) {\n els.forEach(function (el) {\n // If we're encountering a plural el\n if (!isPluralElement(el) && !isSelectElement(el)) {\n return;\n }\n // Go down the options and search for # in any literal element\n Object.keys(el.options).forEach(function (id) {\n var _a;\n var opt = el.options[id];\n // If we got a match, we have to split this\n // and inject a NumberElement in the middle\n var matchingLiteralElIndex = -1;\n var literalEl = undefined;\n for (var i = 0; i < opt.value.length; i++) {\n var el_1 = opt.value[i];\n if (isLiteralElement(el_1) && PLURAL_HASHTAG_REGEX.test(el_1.value)) {\n matchingLiteralElIndex = i;\n literalEl = el_1;\n break;\n }\n }\n if (literalEl) {\n var newValue = literalEl.value.replace(PLURAL_HASHTAG_REGEX, \"$1{\" + el.value + \", number}\");\n var newEls = pegParse(newValue);\n (_a = opt.value).splice.apply(_a, __spreadArrays([matchingLiteralElIndex, 1], newEls));\n }\n normalizeHashtagInPlural(opt.value);\n });\n });\n}\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\n/**\n * https://unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * Credit: https://github.com/caridy/intl-datetimeformat-pattern/blob/master/index.js\n * with some tweaks\n */\nvar DATE_TIME_REGEX = /(?:[Eec]{1,6}|G{1,5}|[Qq]{1,5}|(?:[yYur]+|U{1,5})|[ML]{1,5}|d{1,2}|D{1,3}|F{1}|[abB]{1,5}|[hkHK]{1,2}|w{1,2}|W{1}|m{1,2}|s{1,2}|[zZOvVxX]{1,4})(?=([^']*'[^']*')*[^']*$)/g;\n/**\n * Parse Date time skeleton into Intl.DateTimeFormatOptions\n * Ref: https://unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * @public\n * @param skeleton skeleton string\n */\nexport function parseDateTimeSkeleton(skeleton) {\n var result = {};\n skeleton.replace(DATE_TIME_REGEX, function (match) {\n var len = match.length;\n switch (match[0]) {\n // Era\n case 'G':\n result.era = len === 4 ? 'long' : len === 5 ? 'narrow' : 'short';\n break;\n // Year\n case 'y':\n result.year = len === 2 ? '2-digit' : 'numeric';\n break;\n case 'Y':\n case 'u':\n case 'U':\n case 'r':\n throw new RangeError('`Y/u/U/r` (year) patterns are not supported, use `y` instead');\n // Quarter\n case 'q':\n case 'Q':\n throw new RangeError('`q/Q` (quarter) patterns are not supported');\n // Month\n case 'M':\n case 'L':\n result.month = ['numeric', '2-digit', 'short', 'long', 'narrow'][len - 1];\n break;\n // Week\n case 'w':\n case 'W':\n throw new RangeError('`w/W` (week) patterns are not supported');\n case 'd':\n result.day = ['numeric', '2-digit'][len - 1];\n break;\n case 'D':\n case 'F':\n case 'g':\n throw new RangeError('`D/F/g` (day) patterns are not supported, use `d` instead');\n // Weekday\n case 'E':\n result.weekday = len === 4 ? 'short' : len === 5 ? 'narrow' : 'short';\n break;\n case 'e':\n if (len < 4) {\n throw new RangeError('`e..eee` (weekday) patterns are not supported');\n }\n result.weekday = ['short', 'long', 'narrow', 'short'][len - 4];\n break;\n case 'c':\n if (len < 4) {\n throw new RangeError('`c..ccc` (weekday) patterns are not supported');\n }\n result.weekday = ['short', 'long', 'narrow', 'short'][len - 4];\n break;\n // Period\n case 'a': // AM, PM\n result.hour12 = true;\n break;\n case 'b': // am, pm, noon, midnight\n case 'B': // flexible day periods\n throw new RangeError('`b/B` (period) patterns are not supported, use `a` instead');\n // Hour\n case 'h':\n result.hourCycle = 'h12';\n result.hour = ['numeric', '2-digit'][len - 1];\n break;\n case 'H':\n result.hourCycle = 'h23';\n result.hour = ['numeric', '2-digit'][len - 1];\n break;\n case 'K':\n result.hourCycle = 'h11';\n result.hour = ['numeric', '2-digit'][len - 1];\n break;\n case 'k':\n result.hourCycle = 'h24';\n result.hour = ['numeric', '2-digit'][len - 1];\n break;\n case 'j':\n case 'J':\n case 'C':\n throw new RangeError('`j/J/C` (hour) patterns are not supported, use `h/H/K/k` instead');\n // Minute\n case 'm':\n result.minute = ['numeric', '2-digit'][len - 1];\n break;\n // Second\n case 's':\n result.second = ['numeric', '2-digit'][len - 1];\n break;\n case 'S':\n case 'A':\n throw new RangeError('`S/A` (second) pattenrs are not supported, use `s` instead');\n // Zone\n case 'z': // 1..3, 4: specific non-location format\n result.timeZoneName = len < 4 ? 'short' : 'long';\n break;\n case 'Z': // 1..3, 4, 5: The ISO8601 varios formats\n case 'O': // 1, 4: miliseconds in day short, long\n case 'v': // 1, 4: generic non-location format\n case 'V': // 1, 2, 3, 4: time zone ID or city\n case 'X': // 1, 2, 3, 4: The ISO8601 varios formats\n case 'x': // 1, 2, 3, 4: The ISO8601 varios formats\n throw new RangeError('`Z/O/v/V/X/x` (timeZone) pattenrs are not supported, use `z` instead');\n }\n return '';\n });\n return result;\n}\nfunction icuUnitToEcma(unit) {\n return unit.replace(/^(.*?)-/, '');\n}\nvar FRACTION_PRECISION_REGEX = /^\\.(?:(0+)(\\+|#+)?)?$/g;\nvar SIGNIFICANT_PRECISION_REGEX = /^(@+)?(\\+|#+)?$/g;\nfunction parseSignificantPrecision(str) {\n var result = {};\n str.replace(SIGNIFICANT_PRECISION_REGEX, function (_, g1, g2) {\n // @@@ case\n if (typeof g2 !== 'string') {\n result.minimumSignificantDigits = g1.length;\n result.maximumSignificantDigits = g1.length;\n }\n // @@@+ case\n else if (g2 === '+') {\n result.minimumSignificantDigits = g1.length;\n }\n // .### case\n else if (g1[0] === '#') {\n result.maximumSignificantDigits = g1.length;\n }\n // .@@## or .@@@ case\n else {\n result.minimumSignificantDigits = g1.length;\n result.maximumSignificantDigits =\n g1.length + (typeof g2 === 'string' ? g2.length : 0);\n }\n return '';\n });\n return result;\n}\nfunction parseSign(str) {\n switch (str) {\n case 'sign-auto':\n return {\n signDisplay: 'auto',\n };\n case 'sign-accounting':\n return {\n currencySign: 'accounting',\n };\n case 'sign-always':\n return {\n signDisplay: 'always',\n };\n case 'sign-accounting-always':\n return {\n signDisplay: 'always',\n currencySign: 'accounting',\n };\n case 'sign-except-zero':\n return {\n signDisplay: 'exceptZero',\n };\n case 'sign-accounting-except-zero':\n return {\n signDisplay: 'exceptZero',\n currencySign: 'accounting',\n };\n case 'sign-never':\n return {\n signDisplay: 'never',\n };\n }\n}\nfunction parseNotationOptions(opt) {\n var result = {};\n var signOpts = parseSign(opt);\n if (signOpts) {\n return signOpts;\n }\n return result;\n}\n/**\n * https://github.com/unicode-org/icu/blob/master/docs/userguide/format_parse/numbers/skeletons.md#skeleton-stems-and-options\n */\nexport function convertNumberSkeletonToNumberFormatOptions(tokens) {\n var result = {};\n for (var _i = 0, tokens_1 = tokens; _i < tokens_1.length; _i++) {\n var token = tokens_1[_i];\n switch (token.stem) {\n case 'percent':\n result.style = 'percent';\n continue;\n case 'currency':\n result.style = 'currency';\n result.currency = token.options[0];\n continue;\n case 'group-off':\n result.useGrouping = false;\n continue;\n case 'precision-integer':\n result.maximumFractionDigits = 0;\n continue;\n case 'measure-unit':\n result.style = 'unit';\n result.unit = icuUnitToEcma(token.options[0]);\n continue;\n case 'compact-short':\n result.notation = 'compact';\n result.compactDisplay = 'short';\n continue;\n case 'compact-long':\n result.notation = 'compact';\n result.compactDisplay = 'long';\n continue;\n case 'scientific':\n result = __assign(__assign(__assign({}, result), { notation: 'scientific' }), token.options.reduce(function (all, opt) { return (__assign(__assign({}, all), parseNotationOptions(opt))); }, {}));\n continue;\n case 'engineering':\n result = __assign(__assign(__assign({}, result), { notation: 'engineering' }), token.options.reduce(function (all, opt) { return (__assign(__assign({}, all), parseNotationOptions(opt))); }, {}));\n continue;\n case 'notation-simple':\n result.notation = 'standard';\n continue;\n // https://github.com/unicode-org/icu/blob/master/icu4c/source/i18n/unicode/unumberformatter.h\n case 'unit-width-narrow':\n result.currencyDisplay = 'narrowSymbol';\n result.unitDisplay = 'narrow';\n continue;\n case 'unit-width-short':\n result.currencyDisplay = 'code';\n result.unitDisplay = 'short';\n continue;\n case 'unit-width-full-name':\n result.currencyDisplay = 'name';\n result.unitDisplay = 'long';\n continue;\n case 'unit-width-iso-code':\n result.currencyDisplay = 'symbol';\n continue;\n }\n // Precision\n // https://github.com/unicode-org/icu/blob/master/docs/userguide/format_parse/numbers/skeletons.md#fraction-precision\n if (FRACTION_PRECISION_REGEX.test(token.stem)) {\n if (token.options.length > 1) {\n throw new RangeError('Fraction-precision stems only accept a single optional option');\n }\n token.stem.replace(FRACTION_PRECISION_REGEX, function (match, g1, g2) {\n // precision-integer case\n if (match === '.') {\n result.maximumFractionDigits = 0;\n }\n // .000+ case\n else if (g2 === '+') {\n result.minimumFractionDigits = g2.length;\n }\n // .### case\n else if (g1[0] === '#') {\n result.maximumFractionDigits = g1.length;\n }\n // .00## or .000 case\n else {\n result.minimumFractionDigits = g1.length;\n result.maximumFractionDigits =\n g1.length + (typeof g2 === 'string' ? g2.length : 0);\n }\n return '';\n });\n if (token.options.length) {\n result = __assign(__assign({}, result), parseSignificantPrecision(token.options[0]));\n }\n continue;\n }\n if (SIGNIFICANT_PRECISION_REGEX.test(token.stem)) {\n result = __assign(__assign({}, result), parseSignificantPrecision(token.stem));\n continue;\n }\n var signOpts = parseSign(token.stem);\n if (signOpts) {\n result = __assign(__assign({}, result), signOpts);\n }\n }\n return result;\n}\n","import { pegParse } from './parser';\nimport { normalizeHashtagInPlural } from './normalize';\nexport * from './types';\nexport * from './parser';\nexport * from './skeleton';\nexport function parse(input, opts) {\n var els = pegParse(input, opts);\n if (!opts || opts.normalizeHashtagInPlural !== false) {\n normalizeHashtagInPlural(els);\n }\n return els;\n}\n"],"names":["TYPE","isLiteralElement","el","type","literal","isSelectElement","select","isPluralElement","plural","extendStatics","_super","__extends","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__","this","constructor","prototype","create","__assign","assign","t","s","i","n","arguments","length","call","apply","SyntaxError","Error","buildMessage","expected","found","hex","ch","charCodeAt","toString","toUpperCase","literalEscape","replace","classEscape","describeExpectation","expectation","text","escapedParts","parts","map","part","isArray","inverted","description","expected1","j","descriptions","sort","slice","join","describeExpected","found1","message","location","_this","name","captureStackTrace","pegParse","input","options","undefined","peg$result","peg$FAILED","peg$startRuleFunctions","start","peg$parsestart","peg$startRuleFunction","peg$c0","peg$c1","messageText","value","insertLocation","peg$c2","peg$c3","peg$literalExpectation","peg$c4","pound","peg$c5","peg$otherExpectation","peg$c6","peg$c7","peg$c8","peg$c9","peg$c10","argument","peg$c11","peg$c12","peg$c13","peg$classExpectation","peg$c14","peg$c15","peg$c16","peg$c17","peg$c18","option","peg$c19","peg$c20","stem","peg$c21","tokens","peg$c22","peg$c23","peg$c24","skeleton","peg$c25","messageCtx","push","peg$c26","style","pop","peg$c27","peg$c28","peg$c29","peg$c30","peg$c31","number","date","time","peg$c32","peg$c33","peg$c34","peg$c35","peg$c36","peg$c37","peg$c38","peg$c39","peg$c40","pattern","peg$c41","peg$c42","peg$c43","peg$c44","peg$c45","peg$c46","peg$c47","peg$c48","peg$c49","peg$c50","peg$c51","peg$c52","pluralType","offset","reduce","all","_a","id","optionLocation","error","peg$c53","peg$c54","peg$c55","peg$c56","peg$c57","peg$c58","peg$c59","peg$c60","peg$c61","peg$c62","peg$c63","peg$c64","peg$c65","peg$c66","peg$c67","peg$c68","peg$c69","peg$c70","peg$c71","peg$c72","negative","num","peg$c74","peg$c75","peg$c76","peg$c77","peg$c78","escapedChar","quotedChars","peg$c79","x","isInPluralOption","peg$c80","peg$c81","peg$c82","peg$c83","peg$c84","peg$c85","peg$c86","peg$c87","peg$c88","peg$c89","peg$c90","peg$c91","peg$c92","digits","parseInt","peg$c93","peg$currPos","peg$savedPos","peg$posDetailsCache","line","column","peg$maxFailPos","peg$maxFailExpected","peg$silentFails","startRule","substring","peg$computeLocation","location1","peg$buildSimpleError","text1","ignoreCase","peg$computePosDetails","pos","details","startPos","endPos","startPosDetails","endPosDetails","end","peg$fail","peg$parsemessage","s0","s1","peg$parsemessageElement","peg$parsemessageText","peg$parseliteralElement","s2","s3","s5","peg$parse_","peg$parseargNameOrNumber","peg$parseargumentElement","s7","s9","s10","s11","s12","substr","peg$parsenumberSkeletonToken","peg$parsenumberSkeleton","peg$parsenumberArgStyle","peg$parsenumberFormatElement","peg$parsedateTimeSkeletonLiteral","peg$parsedateTimeSkeletonPattern","peg$parsedateTimeSkeleton","peg$parsedateOrTimeArgStyle","peg$parsedateOrTimeFormatElement","peg$parsesimpleFormatElement","s13","s14","s15","peg$parsenumber","peg$parsepluralOption","peg$parsepluralElement","peg$parseselectOption","peg$parseselectElement","peg$parsepoundElement","peg$parsedoubleApostrophes","peg$parsequotedString","peg$parseunquotedString","peg$parsenumberSkeletonId","s4","peg$parsewhiteSpace","test","charAt","peg$parsenumberSkeletonTokenOption","s6","peg$parseargName","peg$parsepluralRuleSelectValue","peg$parsepatternSyntax","peg$parseargNumber","peg$parseescapedChar","captureLocation","__spreadArrays","il","r","k","a","jl","PLURAL_HASHTAG_REGEX","DATE_TIME_REGEX","FRACTION_PRECISION_REGEX","SIGNIFICANT_PRECISION_REGEX","parseSignificantPrecision","str","result","_","g1","g2","minimumSignificantDigits","maximumSignificantDigits","parseSign","signDisplay","currencySign","parseNotationOptions","opt","signOpts","_i","tokens_1","token","currency","useGrouping","maximumFractionDigits","unit","notation","compactDisplay","currencyDisplay","unitDisplay","RangeError","match","minimumFractionDigits","opts","els","normalizeHashtagInPlural","forEach","keys","matchingLiteralElIndex","literalEl","el_1","newValue","newEls","splice","len","era","year","month","day","weekday","hour12","hourCycle","hour","minute","second","timeZoneName"],"mappings":"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"}