UNPKG

objection

Version:
784 lines (713 loc) 75.1 kB
"use strict"; module.exports = function () { /* * Generated by PEG.js 0.8.0. * * http://pegjs.majda.cz/ */ function peg$subclass(child, parent) { function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); } function SyntaxError(message, expected, found, offset, line, column) { this.message = message; this.expected = expected; this.found = found; this.offset = offset; this.line = line; this.column = column; this.name = "SyntaxError"; } peg$subclass(SyntaxError, Error); function parse(input) { var options = arguments.length > 1 ? arguments[1] : {}, peg$FAILED = {}, peg$startRuleFunctions = { start: peg$parsestart }, peg$startRuleFunction = peg$parsestart, peg$c0 = peg$FAILED, peg$c1 = null, peg$c2 = ":", peg$c3 = { type: "literal", value: ":", description: "\":\"" }, peg$c4 = [], peg$c5 = function peg$c5(column, refs) { var access = []; if (refs) { var firstAccess = refs[1]; access = refs[2]; access.unshift(firstAccess); } return { columnName: column, access: access }; }, peg$c6 = "[", peg$c7 = { type: "literal", value: "[", description: "\"[\"" }, peg$c8 = "\"", peg$c9 = { type: "literal", value: "\"", description: "\"\\\"\"" }, peg$c10 = "'", peg$c11 = { type: "literal", value: "'", description: "\"'\"" }, peg$c12 = "]", peg$c13 = { type: "literal", value: "]", description: "\"]\"" }, peg$c14 = function peg$c14(key) { return { type: 'object', ref: Array.isArray(key) ? key[1] : key }; }, peg$c15 = function peg$c15(index) { return { type: 'array', ref: parseInt(index, 10) }; }, peg$c16 = function peg$c16(key) { return { type: 'object', ref: key }; }, peg$c17 = ".", peg$c18 = { type: "literal", value: ".", description: "\".\"" }, peg$c19 = /^[^\][]/, peg$c20 = { type: "class", value: "[^\\][]", description: "[^\\][]" }, peg$c21 = function peg$c21(chars) { return chars.join(""); }, peg$c22 = /^[^:]/, peg$c23 = { type: "class", value: "[^:]", description: "[^:]" }, peg$c24 = /^[^"]/, peg$c25 = { type: "class", value: "[^\"]", description: "[^\"]" }, peg$c26 = /^[^']/, peg$c27 = { type: "class", value: "[^']", description: "[^']" }, peg$c28 = /^[^.\][]/, peg$c29 = { type: "class", value: "[^.\\][]", description: "[^.\\][]" }, peg$c30 = /^[0-9]/, peg$c31 = { type: "class", value: "[0-9]", description: "[0-9]" }, peg$c32 = function peg$c32(digits) { return digits.join(""); }, peg$currPos = 0, peg$reportedPos = 0, peg$cachedPos = 0, peg$cachedPosDetails = { line: 1, column: 1, seenCR: false }, peg$maxFailPos = 0, peg$maxFailExpected = [], peg$silentFails = 0, peg$result; if ("startRule" in options) { if (!(options.startRule in peg$startRuleFunctions)) { throw new Error("Can't start parsing from rule \"" + options.startRule + "\"."); } peg$startRuleFunction = peg$startRuleFunctions[options.startRule]; } function text() { return input.substring(peg$reportedPos, peg$currPos); } function offset() { return peg$reportedPos; } function line() { return peg$computePosDetails(peg$reportedPos).line; } function column() { return peg$computePosDetails(peg$reportedPos).column; } function expected(description) { throw peg$buildException(null, [{ type: "other", description: description }], peg$reportedPos); } function error(message) { throw peg$buildException(message, null, peg$reportedPos); } function peg$computePosDetails(pos) { function advance(details, startPos, endPos) { var p, ch; for (p = startPos; p < endPos; p++) { ch = input.charAt(p); if (ch === "\n") { if (!details.seenCR) { details.line++; } details.column = 1; details.seenCR = false; } else if (ch === "\r" || ch === "\u2028" || ch === "\u2029") { details.line++; details.column = 1; details.seenCR = true; } else { details.column++; details.seenCR = false; } } } if (peg$cachedPos !== pos) { if (peg$cachedPos > pos) { peg$cachedPos = 0; peg$cachedPosDetails = { line: 1, column: 1, seenCR: false }; } advance(peg$cachedPosDetails, peg$cachedPos, pos); peg$cachedPos = pos; } return peg$cachedPosDetails; } function peg$fail(expected) { if (peg$currPos < peg$maxFailPos) { return; } if (peg$currPos > peg$maxFailPos) { peg$maxFailPos = peg$currPos; peg$maxFailExpected = []; } peg$maxFailExpected.push(expected); } function peg$buildException(message, expected, pos) { function cleanupExpected(expected) { var i = 1; expected.sort(function (a, b) { if (a.description < b.description) { return -1; } else if (a.description > b.description) { return 1; } else { return 0; } }); while (i < expected.length) { if (expected[i - 1] === expected[i]) { expected.splice(i, 1); } else { i++; } } } function buildMessage(expected, found) { function stringEscape(s) { function hex(ch) { return ch.charCodeAt(0).toString(16).toUpperCase(); } return s.replace(/\\/g, '\\\\').replace(/"/g, '\\"').replace(/\x08/g, '\\b').replace(/\t/g, '\\t').replace(/\n/g, '\\n').replace(/\f/g, '\\f').replace(/\r/g, '\\r').replace(/[\x00-\x07\x0B\x0E\x0F]/g, function (ch) { return '\\x0' + hex(ch); }).replace(/[\x10-\x1F\x80-\xFF]/g, function (ch) { return '\\x' + hex(ch); }).replace(/[\u0180-\u0FFF]/g, function (ch) { return "\\u0" + hex(ch); }).replace(/[\u1080-\uFFFF]/g, function (ch) { return "\\u" + hex(ch); }); } var expectedDescs = new Array(expected.length), expectedDesc, foundDesc, i; for (i = 0; i < expected.length; i++) { expectedDescs[i] = expected[i].description; } expectedDesc = expected.length > 1 ? expectedDescs.slice(0, -1).join(", ") + " or " + expectedDescs[expected.length - 1] : expectedDescs[0]; foundDesc = found ? "\"" + stringEscape(found) + "\"" : "end of input"; return "Expected " + expectedDesc + " but " + foundDesc + " found."; } var posDetails = peg$computePosDetails(pos), found = pos < input.length ? input.charAt(pos) : null; if (expected !== null) { cleanupExpected(expected); } return new SyntaxError(message !== null ? message : buildMessage(expected, found), expected, found, pos, posDetails.line, posDetails.column); } function peg$parsestart() { var s0, s1, s2, s3, s4, s5, s6; s0 = peg$currPos; s1 = peg$parsestringWithoutColon(); if (s1 !== peg$FAILED) { s2 = peg$currPos; if (input.charCodeAt(peg$currPos) === 58) { s3 = peg$c2; peg$currPos++; } else { s3 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c3); } } if (s3 !== peg$FAILED) { s4 = peg$parsebracketIndexRef(); if (s4 === peg$FAILED) { s4 = peg$parsebracketStringRef(); if (s4 === peg$FAILED) { s4 = peg$parsecolonReference(); } } if (s4 !== peg$FAILED) { s5 = []; s6 = peg$parsebracketIndexRef(); if (s6 === peg$FAILED) { s6 = peg$parsebracketStringRef(); if (s6 === peg$FAILED) { s6 = peg$parsedotReference(); } } while (s6 !== peg$FAILED) { s5.push(s6); s6 = peg$parsebracketIndexRef(); if (s6 === peg$FAILED) { s6 = peg$parsebracketStringRef(); if (s6 === peg$FAILED) { s6 = peg$parsedotReference(); } } } if (s5 !== peg$FAILED) { s3 = [s3, s4, s5]; s2 = s3; } else { peg$currPos = s2; s2 = peg$c0; } } else { peg$currPos = s2; s2 = peg$c0; } } else { peg$currPos = s2; s2 = peg$c0; } if (s2 === peg$FAILED) { s2 = peg$c1; } if (s2 !== peg$FAILED) { peg$reportedPos = s0; s1 = peg$c5(s1, s2); s0 = s1; } else { peg$currPos = s0; s0 = peg$c0; } } else { peg$currPos = s0; s0 = peg$c0; } return s0; } function peg$parsebracketStringRef() { var s0, s1, s2, s3, s4, s5; s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 91) { s1 = peg$c6; peg$currPos++; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c7); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; if (input.charCodeAt(peg$currPos) === 34) { s3 = peg$c8; peg$currPos++; } else { s3 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c9); } } if (s3 !== peg$FAILED) { s4 = peg$parsestringWithoutDoubleQuotes(); if (s4 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 34) { s5 = peg$c8; peg$currPos++; } else { s5 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c9); } } if (s5 !== peg$FAILED) { s3 = [s3, s4, s5]; s2 = s3; } else { peg$currPos = s2; s2 = peg$c0; } } else { peg$currPos = s2; s2 = peg$c0; } } else { peg$currPos = s2; s2 = peg$c0; } if (s2 === peg$FAILED) { s2 = peg$currPos; if (input.charCodeAt(peg$currPos) === 39) { s3 = peg$c10; peg$currPos++; } else { s3 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c11); } } if (s3 !== peg$FAILED) { s4 = peg$parsestringWithoutSingleQuotes(); if (s4 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 39) { s5 = peg$c10; peg$currPos++; } else { s5 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c11); } } if (s5 !== peg$FAILED) { s3 = [s3, s4, s5]; s2 = s3; } else { peg$currPos = s2; s2 = peg$c0; } } else { peg$currPos = s2; s2 = peg$c0; } } else { peg$currPos = s2; s2 = peg$c0; } if (s2 === peg$FAILED) { s2 = peg$parsestringWithoutSquareBrackets(); } } if (s2 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 93) { s3 = peg$c12; peg$currPos++; } else { s3 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c13); } } if (s3 !== peg$FAILED) { peg$reportedPos = s0; s1 = peg$c14(s2); s0 = s1; } else { peg$currPos = s0; s0 = peg$c0; } } else { peg$currPos = s0; s0 = peg$c0; } } else { peg$currPos = s0; s0 = peg$c0; } return s0; } function peg$parsebracketIndexRef() { var s0, s1, s2, s3; s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 91) { s1 = peg$c6; peg$currPos++; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c7); } } if (s1 !== peg$FAILED) { s2 = peg$parseinteger(); if (s2 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 93) { s3 = peg$c12; peg$currPos++; } else { s3 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c13); } } if (s3 !== peg$FAILED) { peg$reportedPos = s0; s1 = peg$c15(s2); s0 = s1; } else { peg$currPos = s0; s0 = peg$c0; } } else { peg$currPos = s0; s0 = peg$c0; } } else { peg$currPos = s0; s0 = peg$c0; } return s0; } function peg$parsecolonReference() { var s0, s1; s0 = peg$currPos; s1 = peg$parsestringWithoutSquareBracketsOrDots(); if (s1 !== peg$FAILED) { peg$reportedPos = s0; s1 = peg$c16(s1); } s0 = s1; return s0; } function peg$parsedotReference() { var s0, s1, s2; s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 46) { s1 = peg$c17; peg$currPos++; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c18); } } if (s1 !== peg$FAILED) { s2 = peg$parsestringWithoutSquareBracketsOrDots(); if (s2 !== peg$FAILED) { peg$reportedPos = s0; s1 = peg$c16(s2); s0 = s1; } else { peg$currPos = s0; s0 = peg$c0; } } else { peg$currPos = s0; s0 = peg$c0; } return s0; } function peg$parsestringWithoutSquareBrackets() { var s0, s1, s2; s0 = peg$currPos; s1 = []; if (peg$c19.test(input.charAt(peg$currPos))) { s2 = input.charAt(peg$currPos); peg$currPos++; } else { s2 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c20); } } if (s2 !== peg$FAILED) { while (s2 !== peg$FAILED) { s1.push(s2); if (peg$c19.test(input.charAt(peg$currPos))) { s2 = input.charAt(peg$currPos); peg$currPos++; } else { s2 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c20); } } } } else { s1 = peg$c0; } if (s1 !== peg$FAILED) { peg$reportedPos = s0; s1 = peg$c21(s1); } s0 = s1; return s0; } function peg$parsestringWithoutColon() { var s0, s1, s2; s0 = peg$currPos; s1 = []; if (peg$c22.test(input.charAt(peg$currPos))) { s2 = input.charAt(peg$currPos); peg$currPos++; } else { s2 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c23); } } if (s2 !== peg$FAILED) { while (s2 !== peg$FAILED) { s1.push(s2); if (peg$c22.test(input.charAt(peg$currPos))) { s2 = input.charAt(peg$currPos); peg$currPos++; } else { s2 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c23); } } } } else { s1 = peg$c0; } if (s1 !== peg$FAILED) { peg$reportedPos = s0; s1 = peg$c21(s1); } s0 = s1; return s0; } function peg$parsestringWithoutDoubleQuotes() { var s0, s1, s2; s0 = peg$currPos; s1 = []; if (peg$c24.test(input.charAt(peg$currPos))) { s2 = input.charAt(peg$currPos); peg$currPos++; } else { s2 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c25); } } if (s2 !== peg$FAILED) { while (s2 !== peg$FAILED) { s1.push(s2); if (peg$c24.test(input.charAt(peg$currPos))) { s2 = input.charAt(peg$currPos); peg$currPos++; } else { s2 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c25); } } } } else { s1 = peg$c0; } if (s1 !== peg$FAILED) { peg$reportedPos = s0; s1 = peg$c21(s1); } s0 = s1; return s0; } function peg$parsestringWithoutSingleQuotes() { var s0, s1, s2; s0 = peg$currPos; s1 = []; if (peg$c26.test(input.charAt(peg$currPos))) { s2 = input.charAt(peg$currPos); peg$currPos++; } else { s2 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c27); } } if (s2 !== peg$FAILED) { while (s2 !== peg$FAILED) { s1.push(s2); if (peg$c26.test(input.charAt(peg$currPos))) { s2 = input.charAt(peg$currPos); peg$currPos++; } else { s2 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c27); } } } } else { s1 = peg$c0; } if (s1 !== peg$FAILED) { peg$reportedPos = s0; s1 = peg$c21(s1); } s0 = s1; return s0; } function peg$parsestringWithoutSquareBracketsOrDots() { var s0, s1, s2; s0 = peg$currPos; s1 = []; if (peg$c28.test(input.charAt(peg$currPos))) { s2 = input.charAt(peg$currPos); peg$currPos++; } else { s2 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c29); } } if (s2 !== peg$FAILED) { while (s2 !== peg$FAILED) { s1.push(s2); if (peg$c28.test(input.charAt(peg$currPos))) { s2 = input.charAt(peg$currPos); peg$currPos++; } else { s2 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c29); } } } } else { s1 = peg$c0; } if (s1 !== peg$FAILED) { peg$reportedPos = s0; s1 = peg$c21(s1); } s0 = s1; return s0; } function peg$parseinteger() { var s0, s1, s2; s0 = peg$currPos; s1 = []; if (peg$c30.test(input.charAt(peg$currPos))) { s2 = input.charAt(peg$currPos); peg$currPos++; } else { s2 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c31); } } if (s2 !== peg$FAILED) { while (s2 !== peg$FAILED) { s1.push(s2); if (peg$c30.test(input.charAt(peg$currPos))) { s2 = input.charAt(peg$currPos); peg$currPos++; } else { s2 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c31); } } } } else { s1 = peg$c0; } if (s1 !== peg$FAILED) { peg$reportedPos = s0; s1 = peg$c32(s1); } s0 = s1; return s0; } peg$result = peg$startRuleFunction(); if (peg$result !== peg$FAILED && peg$currPos === input.length) { return peg$result; } else { if (peg$result !== peg$FAILED && peg$currPos < input.length) { peg$fail({ type: "end", description: "end of input" }); } throw peg$buildException(null, peg$maxFailExpected, peg$maxFailPos); } } return { SyntaxError: SyntaxError, parse: parse }; }(); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImpzb25GaWVsZEV4cHJlc3Npb25QYXJzZXIuanMiXSwibmFtZXMiOlsibW9kdWxlIiwiZXhwb3J0cyIsInBlZyRzdWJjbGFzcyIsImNoaWxkIiwicGFyZW50IiwiY3RvciIsImNvbnN0cnVjdG9yIiwicHJvdG90eXBlIiwiU3ludGF4RXJyb3IiLCJtZXNzYWdlIiwiZXhwZWN0ZWQiLCJmb3VuZCIsIm9mZnNldCIsImxpbmUiLCJjb2x1bW4iLCJuYW1lIiwiRXJyb3IiLCJwYXJzZSIsImlucHV0Iiwib3B0aW9ucyIsImFyZ3VtZW50cyIsImxlbmd0aCIsInBlZyRGQUlMRUQiLCJwZWckc3RhcnRSdWxlRnVuY3Rpb25zIiwic3RhcnQiLCJwZWckcGFyc2VzdGFydCIsInBlZyRzdGFydFJ1bGVGdW5jdGlvbiIsInBlZyRjMCIsInBlZyRjMSIsInBlZyRjMiIsInBlZyRjMyIsInR5cGUiLCJ2YWx1ZSIsImRlc2NyaXB0aW9uIiwicGVnJGM0IiwicGVnJGM1IiwicmVmcyIsImFjY2VzcyIsImZpcnN0QWNjZXNzIiwidW5zaGlmdCIsImNvbHVtbk5hbWUiLCJwZWckYzYiLCJwZWckYzciLCJwZWckYzgiLCJwZWckYzkiLCJwZWckYzEwIiwicGVnJGMxMSIsInBlZyRjMTIiLCJwZWckYzEzIiwicGVnJGMxNCIsImtleSIsInJlZiIsIkFycmF5IiwiaXNBcnJheSIsInBlZyRjMTUiLCJpbmRleCIsInBhcnNlSW50IiwicGVnJGMxNiIsInBlZyRjMTciLCJwZWckYzE4IiwicGVnJGMxOSIsInBlZyRjMjAiLCJwZWckYzIxIiwiY2hhcnMiLCJqb2luIiwicGVnJGMyMiIsInBlZyRjMjMiLCJwZWckYzI0IiwicGVnJGMyNSIsInBlZyRjMjYiLCJwZWckYzI3IiwicGVnJGMyOCIsInBlZyRjMjkiLCJwZWckYzMwIiwicGVnJGMzMSIsInBlZyRjMzIiLCJkaWdpdHMiLCJwZWckY3VyclBvcyIsInBlZyRyZXBvcnRlZFBvcyIsInBlZyRjYWNoZWRQb3MiLCJwZWckY2FjaGVkUG9zRGV0YWlscyIsInNlZW5DUiIsInBlZyRtYXhGYWlsUG9zIiwicGVnJG1heEZhaWxFeHBlY3RlZCIsInBlZyRzaWxlbnRGYWlscyIsInBlZyRyZXN1bHQiLCJzdGFydFJ1bGUiLCJ0ZXh0Iiwic3Vic3RyaW5nIiwicGVnJGNvbXB1dGVQb3NEZXRhaWxzIiwicGVnJGJ1aWxkRXhjZXB0aW9uIiwiZXJyb3IiLCJwb3MiLCJhZHZhbmNlIiwiZGV0YWlscyIsInN0YXJ0UG9zIiwiZW5kUG9zIiwicCIsImNoIiwiY2hhckF0IiwicGVnJGZhaWwiLCJwdXNoIiwiY2xlYW51cEV4cGVjdGVkIiwiaSIsInNvcnQiLCJhIiwiYiIsInNwbGljZSIsImJ1aWxkTWVzc2FnZSIsInN0cmluZ0VzY2FwZSIsInMiLCJoZXgiLCJjaGFyQ29kZUF0IiwidG9TdHJpbmciLCJ0b1VwcGVyQ2FzZSIsInJlcGxhY2UiLCJleHBlY3RlZERlc2NzIiwiZXhwZWN0ZWREZXNjIiwiZm91bmREZXNjIiwic2xpY2UiLCJwb3NEZXRhaWxzIiwiczAiLCJzMSIsInMyIiwiczMiLCJzNCIsInM1IiwiczYiLCJwZWckcGFyc2VzdHJpbmdXaXRob3V0Q29sb24iLCJwZWckcGFyc2VicmFja2V0SW5kZXhSZWYiLCJwZWckcGFyc2VicmFja2V0U3RyaW5nUmVmIiwicGVnJHBhcnNlY29sb25SZWZlcmVuY2UiLCJwZWckcGFyc2Vkb3RSZWZlcmVuY2UiLCJwZWckcGFyc2VzdHJpbmdXaXRob3V0RG91YmxlUXVvdGVzIiwicGVnJHBhcnNlc3RyaW5nV2l0aG91dFNpbmdsZVF1b3RlcyIsInBlZyRwYXJzZXN0cmluZ1dpdGhvdXRTcXVhcmVCcmFja2V0cyIsInBlZyRwYXJzZWludGVnZXIiLCJwZWckcGFyc2VzdHJpbmdXaXRob3V0U3F1YXJlQnJhY2tldHNPckRvdHMiLCJ0ZXN0Il0sIm1hcHBpbmdzIjoiOztBQUFBQSxPQUFPQyxPQUFQLEdBQWtCLFlBQVc7QUFDM0I7Ozs7OztBQU1BLFdBQVNDLFlBQVQsQ0FBc0JDLEtBQXRCLEVBQTZCQyxN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aUYsTUFBTixDQUFhdEIsV0FBYixDQUFiLENBQUosRUFBNkM7QUFDM0M4QyxpQkFBS3pHLE1BQU1pRixNQUFOLENBQWF0QixXQUFiLENBQUw7QUFDQUE7QUFDRCxXQUhELE1BR087QUFDTDhDLGlCQUFLckcsVUFBTDtBQUNBLGdCQUFJOEQsb0JBQW9CLENBQXhCLEVBQTJCO0FBQUVnQix1QkFBUzFCLE9BQVQ7QUFBb0I7QUFDbEQ7QUFDRjtBQUNGLE9BWEQsTUFXTztBQUNMZ0QsYUFBSy9GLE1BQUw7QUFDRDtBQUNELFVBQUkrRixPQUFPcEcsVUFBWCxFQUF1QjtBQUNyQndELDBCQUFrQjJDLEVBQWxCO0FBQ0FDLGFBQUsvQyxRQUFRK0MsRUFBUixDQUFMO0FBQ0Q7QUFDREQsV0FBS0MsRUFBTDs7QUFFQSxhQUFPRCxFQUFQO0FBQ0Q7O0FBRURwQyxpQkFBYTNELHVCQUFiOztBQUVBLFFBQUkyRCxlQUFlL0QsVUFBZixJQUE2QnVELGdCQUFnQjNELE1BQU1HLE1BQXZELEVBQStEO0FBQzdELGFBQU9nRSxVQUFQO0FBQ0QsS0FGRCxNQUVPO0FBQ0wsVUFBSUEsZUFBZS9ELFVBQWYsSUFBNkJ1RCxjQUFjM0QsTUFBTUcsTUFBckQsRUFBNkQ7QUFDM0QrRSxpQkFBUyxFQUFFckUsTUFBTSxLQUFSLEVBQWVFLGFBQWEsY0FBNUIsRUFBVDtBQUNEOztBQUVELFlBQU15RCxtQkFBbUIsSUFBbkIsRUFBeUJQLG1CQUF6QixFQUE4Q0QsY0FBOUMsQ0FBTjtBQUNEO0FBQ0Y7O0FBRUQsU0FBTztBQUNMMUUsaUJBQWFBLFdBRFI7QUFFTFMsV0FBYUE7QUFGUixHQUFQO0FBSUQsQ0FudUJnQixFQUFqQiIsImZpbGUiOiJqc29uRmllbGRFeHByZXNzaW9uUGFyc2VyLmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSAoZnVuY3Rpb24oKSB7XG4gIC8qXG4gICAqIEdlbmVyYXRlZCBieSBQRUcuanMgMC44LjAuXG4gICAqXG4gICAqIGh0dHA6Ly9wZWdqcy5tYWpkYS5jei9cbiAgICovXG5cbiAgZnVuY3Rpb24gcGVnJHN1YmNsYXNzKGNoaWxkLCBwYXJlbnQpIHtcbiAgICBmdW5jdGlvbiBjdG9yKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gY2hpbGQ7IH1cbiAgICBjdG9yLnByb3RvdHlwZSA9IHBhcmVudC5wcm90b3R5cGU7XG4gICAgY2hpbGQucHJvdG90eXBlID0gbmV3IGN0b3IoKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIFN5bnRheEVycm9yKG1lc3NhZ2UsIGV4cGVjdGVkLCBmb3VuZCwgb2Zmc2V0LCBsaW5lLCBjb2x1bW4pIHtcbiAgICB0aGlzLm1lc3NhZ2UgID0gbWVzc2FnZTtcbiAgICB0aGlzLmV4cGVjdGVkID0gZXhwZWN0ZWQ7XG4gICAgdGhpcy5mb3VuZCAgICA9IGZvdW5kO1xuICAgIHRoaXMub2Zmc2V0ICAgPSBvZmZzZXQ7XG4gICAgdGhpcy5saW5lICAgICA9IGxpbmU7XG4gICAgdGhpcy5jb2x1bW4gICA9IGNvbHVtbjtcblxuICAgIHRoaXMubmFtZSAgICAgPSBcIlN5bnRheEVycm9yXCI7XG4gIH1cblxuICBwZWckc3ViY2xhc3MoU3ludGF4RXJyb3IsIEVycm9yKTtcblxuICBmdW5jdGlvbiBwYXJzZShpbnB1dCkge1xuICAgIHZhciBvcHRpb25zID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB7fSxcblxuICAgICAgICBwZWckRkFJTEVEID0ge30sXG5cbiAgICAgICAgcGVnJHN0YXJ0UnVsZUZ1bmN0aW9ucyA9IHsgc3RhcnQ6IHBlZyRwYXJzZXN0YXJ0IH0sXG4gICAgICAgIHBlZyRzdGFydFJ1bGVGdW5jdGlvbiAgPSBwZWckcGFyc2VzdGFydCxcblxuICAgICAgICBwZWckYzAgPSBwZWckRkFJTEVELFxuICAgICAgICBwZWckYzEgPSBudWxsLFxuICAgICAgICBwZWckYzIgPSBcIjpcIixcbiAgICAgICAgcGVnJGMzID0geyB0eXBlOiBcImxpdGVyYWxcIiwgdmFsdWU6IFwiOlwiLCBkZXNjcmlwdGlvbjogXCJcXFwiOlxcXCJcIiB9LFxuICAgICAgICBwZWckYzQgPSBbXSxcbiAgICAgICAgcGVnJGM1ID0gZnVuY3Rpb24oY29sdW1uLCByZWZzKSB7IFxuICAgICAgICAgICAgdmFyIGFjY2VzcyA9IFtdO1xuICAgICAgICAgICAgaWYgKHJlZnMpIHtcbiAgICAgICAgICAgICAgdmFyIGZpcnN0QWNjZXNzID0gcmVmc1sxXTtcbiAgICAgICAgICAgICAgYWNjZXNzID0gcmVmc1syXTtcbiAgICAgICAgICAgICAgYWNjZXNzLnVuc2hpZnQoZmlyc3RBY2Nlc3MpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHsgY29sdW1uTmFtZTogY29sdW1uLCBhY2Nlc3M6IGFjY2VzcyB9O1xuICAgICAgICAgIH0sXG4gICAgICAgIHBlZyRjNiA9IFwiW1wiLFxuICAgICAgICBwZWckYzcgPSB7IHR5cGU6IFwibGl0ZXJhbFwiLCB2YWx1ZTogXCJbXCIsIGRlc2NyaXB0aW9uOiBcIlxcXCJbXFxcIlwiIH0sXG4gICAgICAgIHBlZyRjOCA9IFwiXFxcIlwiLFxuICAgICAgICBwZWckYzkgPSB7IHR5cGU6IFwibGl0ZXJhbFwiLCB2YWx1ZTogXCJcXFwiXCIsIGRlc2NyaXB0aW9uOiBcIlxcXCJcXFxcXFxcIlxcXCJcIiB9LFxuICAgICAgICBwZWckYzEwID0gXCInXCIsXG4gICAgICAgIHBlZyRjMTEgPSB7IHR5cGU6IFwibGl0ZXJhbFwiLCB2YWx1ZTogXCInXCIsIGRlc2NyaXB0aW9uOiBcIlxcXCInXFxcIlwiIH0sXG4gICAgICAgIHBlZyRjMTIgPSBcIl1cIixcbiAgICAgICAgcGVnJGMxMyA9IHsgdHlwZTogXCJsaXRlcmFsXCIsIHZhbHVlOiBcIl1cIiwgZGVzY3JpcHRpb246IFwiXFxcIl1cXFwiXCIgfSxcbiAgICAgICAgcGVnJGMxNCA9IGZ1bmN0aW9uKGtleSkgeyByZXR1cm4geyB0eXBlOiAnb2JqZWN0JywgcmVmOiBBcnJheS5pc0FycmF5KGtleSkgPyBrZXlbMV0gOiBrZXkgfTsgfSxcbiAgICAgICAgcGVnJGMxNSA9IGZ1bmN0aW9uKGluZGV4KSB7IHJldHVybiB7IHR5cGU6ICdhcnJheScsIHJlZjogcGFyc2VJbnQoaW5kZXgsIDEwKSB9OyB9LFxuICAgICAgICBwZWckYzE2ID0gZnVuY3Rpb24oa2V5KSB7IHJldHVybiB7IHR5cGU6ICdvYmplY3QnLCByZWY6IGtleSB9OyB9LFxuICAgICAgICBwZWckYzE3ID0gXCIuXCIsXG4gICAgICAgIHBlZyRjMTggPSB7IHR5cGU6IFwibGl0ZXJhbFwiLCB2YWx1ZTogXCIuXCIsIGRlc2NyaXB0aW9uOiBcIlxcXCIuXFxcIlwiIH0sXG4gICAgICAgIHBlZyRjMTkgPSAvXlteXFxdW10vLFxuICAgICAgICBwZWckYzIwID0geyB0eXBlOiBcImNsYXNzXCIsIHZhbHVlOiBcIlteXFxcXF1bXVwiLCBkZXNjcmlwdGlvbjogXCJbXlxcXFxdW11cIiB9LFxuICAgICAgICBwZWckYzIxID0gZnVuY3Rpb24oY2hh