occam-nominal 1.0.445 → 1.0.452
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/element/assertion/schema.js +2 -2
- package/lib/element/assumption.js +2 -2
- package/lib/element/combinator.js +12 -3
- package/lib/element/constructor.js +57 -45
- package/lib/element/declaration/combinator.js +5 -1
- package/lib/element/declaration/constructor.js +11 -1
- package/lib/element/declaration/generator.js +11 -1
- package/lib/element/declaration/metavariable.js +9 -8
- package/lib/element/declaration/property.js +7 -7
- package/lib/element/fact/premise.js +8 -8
- package/lib/element/fact/step.js +8 -8
- package/lib/element/fact/supposition.js +32 -33
- package/lib/element/fact.js +41 -48
- package/lib/element/generator.js +58 -44
- package/lib/element/hypothesis.js +49 -58
- package/lib/element/label.js +37 -39
- package/lib/element/metavariable.js +94 -93
- package/lib/element/procedureCall.js +2 -2
- package/lib/element/property.js +12 -2
- package/lib/element/resolution/conclusion.js +9 -5
- package/lib/element/resolution/deduction.js +9 -5
- package/lib/element/resolution.js +1 -5
- package/lib/element/signature.js +2 -2
- package/lib/element/statement.js +15 -17
- package/lib/element/term.js +1 -48
- package/lib/example/nominal/bnf.js +411 -0
- package/lib/example/nominal/entries.js +43 -0
- package/lib/example/utilities/nominal.js +37 -0
- package/lib/example/view/div/sizeable.js +25 -0
- package/lib/example/view/input/ruleName.js +48 -0
- package/lib/example/view/subHeading.js +29 -0
- package/lib/example/view/textarea/bnf.js +39 -0
- package/lib/example/view/textarea/content.js +39 -0
- package/lib/example/view/textarea/lexicalEntries.js +39 -0
- package/lib/example/view/textarea/parseTree.js +46 -0
- package/lib/example/view/textarea/tokens.js +55 -0
- package/lib/example/view/textarea.js +31 -0
- package/lib/example/view.js +97 -0
- package/lib/example.js +19 -0
- package/lib/node/combinator.js +9 -1
- package/lib/node/constructor.js +9 -1
- package/lib/node/declaration/combinator.js +5 -1
- package/lib/node/declaration/constructor.js +17 -1
- package/lib/node/declaration/generator.js +17 -1
- package/lib/node/declaration/property.js +17 -1
- package/lib/node/fact.js +5 -1
- package/lib/node/generator.js +9 -1
- package/lib/node/hypothesis.js +5 -1
- package/lib/node/metavariable.js +9 -1
- package/lib/node/property.js +9 -1
- package/lib/node/resolution.js +5 -1
- package/lib/process/unify.js +4 -4
- package/lib/ruleNames.js +9 -1
- package/package.json +14 -4
- package/src/element/assertion/schema.js +1 -1
- package/src/element/assumption.js +1 -1
- package/src/element/combinator.js +17 -3
- package/src/element/constructor.js +84 -54
- package/src/element/declaration/combinator.js +7 -0
- package/src/element/declaration/constructor.js +17 -0
- package/src/element/declaration/generator.js +17 -0
- package/src/element/declaration/metavariable.js +9 -7
- package/src/element/declaration/property.js +7 -6
- package/src/element/fact/premise.js +8 -9
- package/src/element/fact/step.js +8 -7
- package/src/element/fact/supposition.js +33 -41
- package/src/element/fact.js +43 -57
- package/src/element/generator.js +91 -61
- package/src/element/hypothesis.js +65 -58
- package/src/element/label.js +38 -47
- package/src/element/metavariable.js +111 -104
- package/src/element/procedureCall.js +1 -1
- package/src/element/property.js +18 -1
- package/src/element/resolution/conclusion.js +11 -4
- package/src/element/resolution/deduction.js +11 -4
- package/src/element/resolution.js +0 -6
- package/src/element/signature.js +1 -1
- package/src/element/statement.js +15 -19
- package/src/element/term.js +0 -48
- package/src/example/nominal/bnf.js +402 -0
- package/src/example/nominal/entries.js +43 -0
- package/src/example/utilities/nominal.js +19 -0
- package/src/example/view/div/sizeable.js +12 -0
- package/src/example/view/input/ruleName.js +44 -0
- package/src/example/view/subHeading.js +16 -0
- package/src/example/view/textarea/bnf.js +33 -0
- package/src/example/view/textarea/content.js +33 -0
- package/src/example/view/textarea/lexicalEntries.js +37 -0
- package/src/example/view/textarea/parseTree.js +42 -0
- package/src/example/view/textarea/tokens.js +56 -0
- package/src/example/view/textarea.js +18 -0
- package/src/example/view.js +152 -0
- package/src/example.js +21 -0
- package/src/node/combinator.js +15 -1
- package/src/node/constructor.js +15 -1
- package/src/node/declaration/combinator.js +7 -0
- package/src/node/declaration/constructor.js +26 -1
- package/src/node/declaration/generator.js +26 -1
- package/src/node/declaration/property.js +26 -1
- package/src/node/fact.js +7 -0
- package/src/node/generator.js +15 -1
- package/src/node/hypothesis.js +7 -0
- package/src/node/metavariable.js +15 -1
- package/src/node/property.js +15 -1
- package/src/node/resolution.js +7 -0
- package/src/process/unify.js +3 -3
- package/src/ruleNames.js +2 -0
- package/lib/utilities/continuation.js +0 -132
- package/src/utilities/continuation.js +0 -151
|
@@ -89,7 +89,7 @@ const _default = (0, _elements.define)(class SchemaAssertion extends _assertion.
|
|
|
89
89
|
facts.forEach((fact)=>{
|
|
90
90
|
const statement = fact.getStatement(), implicitAssumption = ImplicitAssumption.fromStatement(statement, context);
|
|
91
91
|
(0, _state.declare)((state)=>{
|
|
92
|
-
implicitAssumption.validate(state, context, (implicitAssumption, context)=>true);
|
|
92
|
+
implicitAssumption.validate(state, context, (implicitAssumption, context)=>true); ///
|
|
93
93
|
});
|
|
94
94
|
implicitAssumptions.push(implicitAssumption);
|
|
95
95
|
});
|
|
@@ -169,4 +169,4 @@ const _default = (0, _elements.define)(class SchemaAssertion extends _assertion.
|
|
|
169
169
|
static name = "SchemaAssertion";
|
|
170
170
|
});
|
|
171
171
|
|
|
172
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2Fzc2VydGlvbi9zY2hlbWEuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IEFzc2VydGlvbiBmcm9tIFwiLi4vYXNzZXJ0aW9uXCI7XG5cbmltcG9ydCBlbGVtZW50cyBmcm9tIFwiLi4vLi4vZWxlbWVudHNcIjtcblxuaW1wb3J0IHsgYWxsIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9jb250aW51YXRpb25cIjtcbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi8uLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgZGVjbGFyZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvc3RhdGVcIjtcblxuY29uc3QgeyBhc3luY2hyb25vdXNTb21lIH0gPSBjb250aW51YXRpb25VdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBTY2hlbWFBc3NlcnRpb24gZXh0ZW5kcyBBc3NlcnRpb24ge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIGZyYW1lLCByZWZlcmVuY2UpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy5mcmFtZSA9IGZyYW1lO1xuICAgIHRoaXMucmVmZXJlbmNlID0gcmVmZXJlbmNlO1xuICB9XG5cbiAgZ2V0RnJhbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZnJhbWU7XG4gIH1cblxuICBnZXRSZWZlcmVuY2UoKSB7XG4gICAgcmV0dXJuIHRoaXMucmVmZXJlbmNlO1xuICB9XG5cbiAgZ2V0U2NoZW1hQXNzZXJ0aW9uTm9kZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5nZXROb2RlKCksXG4gICAgICAgICAgc2NoZW1hQXNzZXJ0aW9uTm9kZSA9IG5vZGU7ICAvLy9cblxuICAgIHJldHVybiBzY2hlbWFBc3NlcnRpb25Ob2RlO1xuICB9XG5cbiAgZ2V0QXNzdW1wdGlvbnMoKSB7IHJldHVybiB0aGlzLmZyYW1lLmdldEFzc3VtcHRpb25zKCk7IH1cblxuICBnZXRNZXRhdmFyaWFibGUoKSB7IHJldHVybiB0aGlzLmZyYW1lLmdldE1ldGF2YXJpYWJsZSgpOyB9XG5cbiAgZ2V0SW1wbGljaXRBc3N1bXB0aW9ucyhjb250ZXh0KSB7XG4gICAgY29uc3QgaW1wbGljaXRBc3N1bXB0aW9ucyA9IFtdLFxuICAgICAgICAgIG1ldGF2YXJpYWJsZSA9IHRoaXMuZ2V0TWV0YXZhcmlhYmxlKCk7XG5cbiAgICBpZiAobWV0YXZhcmlhYmxlICE9PSBudWxsKSB7XG4gICAgICBjb25zdCB7IEltcGxpY2l0QXNzdW1wdGlvbiB9ID0gZWxlbWVudHMsXG4gICAgICAgICAgICBmYWN0cyA9IGNvbnRleHQuZ2V0RmFjdHMoKTtcblxuICAgICAgZmFjdHMuZm9yRWFjaCgoZmFjdCkgPT4ge1xuICAgICAgICBjb25zdCBzdGF0ZW1lbnQgPSBmYWN0LmdldFN0YXRlbWVudCgpLFxuICAgICAgICAgICAgICBpbXBsaWNpdEFzc3VtcHRpb24gPSBJbXBsaWNpdEFzc3VtcHRpb24uZnJvbVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpO1xuXG4gICAgICAgIGRlY2xhcmUoKHN0YXRlKSA9PiB7XG4gICAgICAgICAgaW1wbGljaXRBc3N1bXB0aW9uLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAoaW1wbGljaXRBc3N1bXB0aW9uLCBjb250ZXh0KSA9PiB0cnVlKVxuICAgICAgICB9KTtcblxuICAgICAgICBpbXBsaWNpdEFzc3VtcHRpb25zLnB1c2goaW1wbGljaXRBc3N1bXB0aW9uKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBpbXBsaWNpdEFzc3VtcHRpb25zO1xuICB9XG5cbiAgdmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCB2YWxpZGF0ZXM7XG5cbiAgICBjb25zdCBzcGVjaWZpY0NvbnRleHQgPSBjb250ZXh0LCAgLy8vXG4gICAgICAgICAgc2NoYW1lQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7c2NoYW1lQXNzZXJ0aW9uU3RyaW5nfScgc2NoYW1lIGFzc2VydGlvbi4uLmApO1xuXG4gICAgbGV0IGFzc2VydGlvbjtcblxuICAgIGFzc2VydGlvbiA9IHRoaXMuZmluZEFzc2VydGlvbihjb250ZXh0KTtcblxuICAgIGlmIChhc3NlcnRpb24gIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHNjaGFtZUFzc2VydGlvbiA9IGFzc2VydGlvbjsgIC8vL1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7c2NoYW1lQXNzZXJ0aW9uU3RyaW5nfScgc2NoYW1lIGFzc2VydGlvbiBpcyBhbHJlYWR5IHByZXNlbnQuYCk7XG5cbiAgICAgIHZhbGlkYXRlcyA9IGNvbnRpbnVhdGlvbihzY2hhbWVBc3NlcnRpb24sIGNvbnRleHQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhc3NlcnRpb24gPSB0aGlzOyAgLy8vXG5cbiAgICAgIGNvbnN0IHZhbGlkYXRlRnJhbWUgPSB0aGlzLnZhbGlkYXRlRnJhbWUuYmluZCh0aGlzKSxcbiAgICAgICAgICAgIHZhbGlkYXRlUmVmZXJlbmNlID0gdGhpcy52YWxpZGF0ZVJlZmVyZW5jZS5iaW5kKHRoaXMpO1xuXG4gICAgICB2YWxpZGF0ZXMgPSBhbGwoW1xuICAgICAgICB2YWxpZGF0ZUZyYW1lLFxuICAgICAgICB2YWxpZGF0ZVJlZmVyZW5jZVxuICAgICAgXSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCkgPT4ge1xuICAgICAgICBsZXQgdmFsaWRhdGVzO1xuXG4gICAgICAgIGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQ7ICAvLy9cblxuICAgICAgICBjb25zdCBzY2hhbWVBc3NlcnRpb24gPSBhc3NlcnRpb247ICAvLy9cblxuICAgICAgICB2YWxpZGF0ZXMgPSBjb250aW51YXRpb24oc2NoYW1lQXNzZXJ0aW9uLCBjb250ZXh0KTtcblxuICAgICAgICByZXR1cm4gdmFsaWRhdGVzO1xuICAgICAgfSk7XG5cbiAgICAgIGlmICh2YWxpZGF0ZXMpIHtcbiAgICAgICAgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dDsgIC8vL1xuXG4gICAgICAgIGNvbnRleHQuYWRkQXNzZXJ0aW9uKGFzc2VydGlvbik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dDsgIC8vL1xuXG4gICAgaWYgKHZhbGlkYXRlcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtzY2hhbWVBc3NlcnRpb25TdHJpbmd9JyBzY2hhbWUgYXNzZXJ0aW9uLmApO1xuICAgIH1cblxuICAgIHJldHVybiB2YWxpZGF0ZXM7XG4gIH1cblxuICB2YWxpZGF0ZUZyYW1lKHN0YXRlLCBjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBsZXQgZnJhbWVWYWxpZGF0ZXM7XG5cbiAgICBjb25zdCBzY2hhbWVBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtzY2hhbWVBc3NlcnRpb25TdHJpbmd9JyBzY2hhbWUgYXNzZXJ0aW9uJ3MgZnJhbWUuLi5gKTtcblxuICAgIGZyYW1lVmFsaWRhdGVzID0gdGhpcy5mcmFtZS52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKGZyYW1lLCBjb250ZXh0KSA9PiB7XG4gICAgICBsZXQgdmFsaWRhdGVzO1xuXG4gICAgICB0aGlzLmZyYW1lID0gZnJhbWU7XG5cbiAgICAgIHZhbGlkYXRlcyA9IGNvbnRpbnVhdGlvbihzdGF0ZSwgY29udGV4dCk7XG5cbiAgICAgIHJldHVybiB2YWxpZGF0ZXM7XG4gICAgfSk7XG5cbiAgICBpZiAoZnJhbWVWYWxpZGF0ZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7c2NoYW1lQXNzZXJ0aW9uU3RyaW5nfScgc2NoYW1lIGFzc2VydGlvbidzIGZyYW1lLmApO1xuICAgIH1cblxuICAgIHJldHVybiBmcmFtZVZhbGlkYXRlcztcbiAgfVxuXG4gIHZhbGlkYXRlUmVmZXJlbmNlKHN0YXRlLCBjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBsZXQgcmVmZXJlbmNlVmFsaWRhdGVzO1xuXG4gICAgY29uc3Qgc2NoYW1lQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7c2NoYW1lQXNzZXJ0aW9uU3RyaW5nfScgc2NoYW1lIGFzc2VydGlvbidzIHJlZmVyZW5jZS4uLmApO1xuXG4gICAgcmVmZXJlbmNlVmFsaWRhdGVzID0gdGhpcy5yZWZlcmVuY2UudmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIChyZWZlcmVuY2UsIGNvbnRleHQpID0+IHtcbiAgICAgIGxldCB2YWxpZGF0ZXM7XG5cbiAgICAgIHRoaXMucmVmZXJlbmNlID0gcmVmZXJlbmNlO1xuXG4gICAgICB2YWxpZGF0ZXMgPSBjb250aW51YXRpb24oc3RhdGUsIGNvbnRleHQpO1xuXG4gICAgICByZXR1cm4gdmFsaWRhdGVzO1xuICAgIH0pO1xuXG4gICAgaWYgKHJlZmVyZW5jZVZhbGlkYXRlcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtzY2hhbWVBc3NlcnRpb25TdHJpbmd9JyBzY2hhbWUgYXNzZXJ0aW9uJ3MgcmVmZXJlbmNlLmApO1xuICAgIH1cblxuICAgIHJldHVybiByZWZlcmVuY2VWYWxpZGF0ZXM7XG4gIH1cblxuICB1bmlmeVN0ZXAoc3RlcCwgY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgY29uc3Qgc2NoZW1hcyA9IGNvbnRleHQuZ2V0U2NoZW1hcygpLFxuICAgICAgICAgIHN0YXRlbWVudCA9IHN0ZXAuZ2V0U3RhdGVtZW50KCksXG4gICAgICAgICAgc2NoZW1hQXNzZXJ0aW9uID0gdGhpczsgLy8vXG5cbiAgICByZXR1cm4gYXN5bmNocm9ub3VzU29tZShzY2hlbWFzLCAoc2NoZW1hLCBjb250aW51YXRpb24pID0+IHtcbiAgICAgIHJldHVybiBzY2hlbWEudW5pZnlTdGF0ZW1lbnRBbmRTY2hlbWFBc3NlcnRpb24oc3RhdGVtZW50LCBzY2hlbWFBc3NlcnRpb24sIGNvbnRleHQsIGNvbnRpbnVhdGlvbik7XG4gICAgfSwgY29udGludWF0aW9uKTtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJTY2hlbWFBc3NlcnRpb25cIjtcbn0pO1xuIl0sIm5hbWVzIjpbImFzeW5jaHJvbm91c1NvbWUiLCJjb250aW51YXRpb25VdGlsaXRpZXMiLCJkZWZpbmUiLCJTY2hlbWFBc3NlcnRpb24iLCJBc3NlcnRpb24iLCJjb250ZXh0Iiwic3RyaW5nIiwibm9kZSIsImJyZWFrUG9pbnQiLCJmcmFtZSIsInJlZmVyZW5jZSIsImdldEZyYW1lIiwiZ2V0UmVmZXJlbmNlIiwiZ2V0U2NoZW1hQXNzZXJ0aW9uTm9kZSIsImdldE5vZGUiLCJzY2hlbWFBc3NlcnRpb25Ob2RlIiwiZ2V0QXNzdW1wdGlvbnMiLCJnZXRNZXRhdmFyaWFibGUiLCJnZXRJbXBsaWNpdEFzc3VtcHRpb25zIiwiaW1wbGljaXRBc3N1bXB0aW9ucyIsIm1ldGF2YXJpYWJsZSIsIkltcGxpY2l0QXNzdW1wdGlvbiIsImVsZW1lbnRzIiwiZmFjdHMiLCJnZXRGYWN0cyIsImZvckVhY2giLCJmYWN0Iiwic3RhdGVtZW50IiwiZ2V0U3RhdGVtZW50IiwiaW1wbGljaXRBc3N1bXB0aW9uIiwiZnJvbVN0YXRlbWVudCIsImRlY2xhcmUiLCJzdGF0ZSIsInZhbGlkYXRlIiwicHVzaCIsImNvbnRpbnVhdGlvbiIsInZhbGlkYXRlcyIsInNwZWNpZmljQ29udGV4dCIsInNjaGFtZUFzc2VydGlvblN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwiYXNzZXJ0aW9uIiwiZmluZEFzc2VydGlvbiIsInNjaGFtZUFzc2VydGlvbiIsImRlYnVnIiwidmFsaWRhdGVGcmFtZSIsImJpbmQiLCJ2YWxpZGF0ZVJlZmVyZW5jZSIsImFsbCIsImFkZEFzc2VydGlvbiIsImZyYW1lVmFsaWRhdGVzIiwicmVmZXJlbmNlVmFsaWRhdGVzIiwidW5pZnlTdGVwIiwic3RlcCIsInNjaGVtYXMiLCJnZXRTY2hlbWFzIiwic2NoZW1hQXNzZXJ0aW9uIiwic2NoZW1hIiwidW5pZnlTdGF0ZW1lbnRBbmRTY2hlbWFBc3NlcnRpb24iLCJuYW1lIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFjQTs7O2VBQUE7OztnQ0Fac0M7a0VBRWhCO2tFQUVEOzhCQUVEO3VCQUVJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUV4QixNQUFNLEVBQUVBLGdCQUFnQixFQUFFLEdBQUdDLHFDQUFxQjtNQUVsRCxXQUFlQyxJQUFBQSxnQkFBTSxFQUFDLE1BQU1DLHdCQUF3QkMsa0JBQVM7SUFDM0QsWUFBWUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLElBQUksRUFBRUMsVUFBVSxFQUFFQyxLQUFLLEVBQUVDLFNBQVMsQ0FBRTtRQUMvRCxLQUFLLENBQUNMLFNBQVNDLFFBQVFDLE1BQU1DO1FBRTdCLElBQUksQ0FBQ0MsS0FBSyxHQUFHQTtRQUNiLElBQUksQ0FBQ0MsU0FBUyxHQUFHQTtJQUNuQjtJQUVBQyxXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUNGLEtBQUs7SUFDbkI7SUFFQUcsZUFBZTtRQUNiLE9BQU8sSUFBSSxDQUFDRixTQUFTO0lBQ3ZCO0lBRUFHLHlCQUF5QjtRQUN2QixNQUFNTixPQUFPLElBQUksQ0FBQ08sT0FBTyxJQUNuQkMsc0JBQXNCUixNQUFPLEdBQUc7UUFFdEMsT0FBT1E7SUFDVDtJQUVBQyxpQkFBaUI7UUFBRSxPQUFPLElBQUksQ0FB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
|
|
172
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2Fzc2VydGlvbi9zY2hlbWEuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IEFzc2VydGlvbiBmcm9tIFwiLi4vYXNzZXJ0aW9uXCI7XG5cbmltcG9ydCBlbGVtZW50cyBmcm9tIFwiLi4vLi4vZWxlbWVudHNcIjtcblxuaW1wb3J0IHsgYWxsIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9jb250aW51YXRpb25cIjtcbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi8uLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgZGVjbGFyZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvc3RhdGVcIjtcblxuY29uc3QgeyBhc3luY2hyb25vdXNTb21lIH0gPSBjb250aW51YXRpb25VdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBTY2hlbWFBc3NlcnRpb24gZXh0ZW5kcyBBc3NlcnRpb24ge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIGZyYW1lLCByZWZlcmVuY2UpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy5mcmFtZSA9IGZyYW1lO1xuICAgIHRoaXMucmVmZXJlbmNlID0gcmVmZXJlbmNlO1xuICB9XG5cbiAgZ2V0RnJhbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZnJhbWU7XG4gIH1cblxuICBnZXRSZWZlcmVuY2UoKSB7XG4gICAgcmV0dXJuIHRoaXMucmVmZXJlbmNlO1xuICB9XG5cbiAgZ2V0U2NoZW1hQXNzZXJ0aW9uTm9kZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5nZXROb2RlKCksXG4gICAgICAgICAgc2NoZW1hQXNzZXJ0aW9uTm9kZSA9IG5vZGU7ICAvLy9cblxuICAgIHJldHVybiBzY2hlbWFBc3NlcnRpb25Ob2RlO1xuICB9XG5cbiAgZ2V0QXNzdW1wdGlvbnMoKSB7IHJldHVybiB0aGlzLmZyYW1lLmdldEFzc3VtcHRpb25zKCk7IH1cblxuICBnZXRNZXRhdmFyaWFibGUoKSB7IHJldHVybiB0aGlzLmZyYW1lLmdldE1ldGF2YXJpYWJsZSgpOyB9XG5cbiAgZ2V0SW1wbGljaXRBc3N1bXB0aW9ucyhjb250ZXh0KSB7XG4gICAgY29uc3QgaW1wbGljaXRBc3N1bXB0aW9ucyA9IFtdLFxuICAgICAgICAgIG1ldGF2YXJpYWJsZSA9IHRoaXMuZ2V0TWV0YXZhcmlhYmxlKCk7XG5cbiAgICBpZiAobWV0YXZhcmlhYmxlICE9PSBudWxsKSB7XG4gICAgICBjb25zdCB7IEltcGxpY2l0QXNzdW1wdGlvbiB9ID0gZWxlbWVudHMsXG4gICAgICAgICAgICBmYWN0cyA9IGNvbnRleHQuZ2V0RmFjdHMoKTtcblxuICAgICAgZmFjdHMuZm9yRWFjaCgoZmFjdCkgPT4ge1xuICAgICAgICBjb25zdCBzdGF0ZW1lbnQgPSBmYWN0LmdldFN0YXRlbWVudCgpLFxuICAgICAgICAgICAgICBpbXBsaWNpdEFzc3VtcHRpb24gPSBJbXBsaWNpdEFzc3VtcHRpb24uZnJvbVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpO1xuXG4gICAgICAgIGRlY2xhcmUoKHN0YXRlKSA9PiB7XG4gICAgICAgICAgaW1wbGljaXRBc3N1bXB0aW9uLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAoaW1wbGljaXRBc3N1bXB0aW9uLCBjb250ZXh0KSA9PiB0cnVlKSAgLy8vXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGltcGxpY2l0QXNzdW1wdGlvbnMucHVzaChpbXBsaWNpdEFzc3VtcHRpb24pO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGltcGxpY2l0QXNzdW1wdGlvbnM7XG4gIH1cblxuICB2YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgbGV0IHZhbGlkYXRlcztcblxuICAgIGNvbnN0IHNwZWNpZmljQ29udGV4dCA9IGNvbnRleHQsICAvLy9cbiAgICAgICAgICBzY2hhbWVBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtzY2hhbWVBc3NlcnRpb25TdHJpbmd9JyBzY2hhbWUgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgICBsZXQgYXNzZXJ0aW9uO1xuXG4gICAgYXNzZXJ0aW9uID0gdGhpcy5maW5kQXNzZXJ0aW9uKGNvbnRleHQpO1xuXG4gICAgaWYgKGFzc2VydGlvbiAhPT0gbnVsbCkge1xuICAgICAgY29uc3Qgc2NoYW1lQXNzZXJ0aW9uID0gYXNzZXJ0aW9uOyAgLy8vXG5cbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHtzY2hhbWVBc3NlcnRpb25TdHJpbmd9JyBzY2hhbWUgYXNzZXJ0aW9uIGlzIGFscmVhZHkgcHJlc2VudC5gKTtcblxuICAgICAgdmFsaWRhdGVzID0gY29udGludWF0aW9uKHNjaGFtZUFzc2VydGlvbiwgY29udGV4dCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFzc2VydGlvbiA9IHRoaXM7ICAvLy9cblxuICAgICAgY29uc3QgdmFsaWRhdGVGcmFtZSA9IHRoaXMudmFsaWRhdGVGcmFtZS5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgdmFsaWRhdGVSZWZlcmVuY2UgPSB0aGlzLnZhbGlkYXRlUmVmZXJlbmNlLmJpbmQodGhpcyk7XG5cbiAgICAgIHZhbGlkYXRlcyA9IGFsbChbXG4gICAgICAgIHZhbGlkYXRlRnJhbWUsXG4gICAgICAgIHZhbGlkYXRlUmVmZXJlbmNlXG4gICAgICBdLCBzdGF0ZSwgY29udGV4dCwgKHN0YXRlLCBjb250ZXh0KSA9PiB7XG4gICAgICAgIGxldCB2YWxpZGF0ZXM7XG5cbiAgICAgICAgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dDsgIC8vL1xuXG4gICAgICAgIGNvbnN0IHNjaGFtZUFzc2VydGlvbiA9IGFzc2VydGlvbjsgIC8vL1xuXG4gICAgICAgIHZhbGlkYXRlcyA9IGNvbnRpbnVhdGlvbihzY2hhbWVBc3NlcnRpb24sIGNvbnRleHQpO1xuXG4gICAgICAgIHJldHVybiB2YWxpZGF0ZXM7XG4gICAgICB9KTtcblxuICAgICAgaWYgKHZhbGlkYXRlcykge1xuICAgICAgICBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0OyAgLy8vXG5cbiAgICAgICAgY29udGV4dC5hZGRBc3NlcnRpb24oYXNzZXJ0aW9uKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0OyAgLy8vXG5cbiAgICBpZiAodmFsaWRhdGVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3NjaGFtZUFzc2VydGlvblN0cmluZ30nIHNjaGFtZSBhc3NlcnRpb24uYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbGlkYXRlcztcbiAgfVxuXG4gIHZhbGlkYXRlRnJhbWUoc3RhdGUsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCBmcmFtZVZhbGlkYXRlcztcblxuICAgIGNvbnN0IHNjaGFtZUFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3NjaGFtZUFzc2VydGlvblN0cmluZ30nIHNjaGFtZSBhc3NlcnRpb24ncyBmcmFtZS4uLmApO1xuXG4gICAgZnJhbWVWYWxpZGF0ZXMgPSB0aGlzLmZyYW1lLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAoZnJhbWUsIGNvbnRleHQpID0+IHtcbiAgICAgIGxldCB2YWxpZGF0ZXM7XG5cbiAgICAgIHRoaXMuZnJhbWUgPSBmcmFtZTtcblxuICAgICAgdmFsaWRhdGVzID0gY29udGludWF0aW9uKHN0YXRlLCBjb250ZXh0KTtcblxuICAgICAgcmV0dXJuIHZhbGlkYXRlcztcbiAgICB9KTtcblxuICAgIGlmIChmcmFtZVZhbGlkYXRlcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtzY2hhbWVBc3NlcnRpb25TdHJpbmd9JyBzY2hhbWUgYXNzZXJ0aW9uJ3MgZnJhbWUuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZyYW1lVmFsaWRhdGVzO1xuICB9XG5cbiAgdmFsaWRhdGVSZWZlcmVuY2Uoc3RhdGUsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCByZWZlcmVuY2VWYWxpZGF0ZXM7XG5cbiAgICBjb25zdCBzY2hhbWVBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtzY2hhbWVBc3NlcnRpb25TdHJpbmd9JyBzY2hhbWUgYXNzZXJ0aW9uJ3MgcmVmZXJlbmNlLi4uYCk7XG5cbiAgICByZWZlcmVuY2VWYWxpZGF0ZXMgPSB0aGlzLnJlZmVyZW5jZS52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKHJlZmVyZW5jZSwgY29udGV4dCkgPT4ge1xuICAgICAgbGV0IHZhbGlkYXRlcztcblxuICAgICAgdGhpcy5yZWZlcmVuY2UgPSByZWZlcmVuY2U7XG5cbiAgICAgIHZhbGlkYXRlcyA9IGNvbnRpbnVhdGlvbihzdGF0ZSwgY29udGV4dCk7XG5cbiAgICAgIHJldHVybiB2YWxpZGF0ZXM7XG4gICAgfSk7XG5cbiAgICBpZiAocmVmZXJlbmNlVmFsaWRhdGVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3NjaGFtZUFzc2VydGlvblN0cmluZ30nIHNjaGFtZSBhc3NlcnRpb24ncyByZWZlcmVuY2UuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlZmVyZW5jZVZhbGlkYXRlcztcbiAgfVxuXG4gIHVuaWZ5U3RlcChzdGVwLCBjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBjb25zdCBzY2hlbWFzID0gY29udGV4dC5nZXRTY2hlbWFzKCksXG4gICAgICAgICAgc3RhdGVtZW50ID0gc3RlcC5nZXRTdGF0ZW1lbnQoKSxcbiAgICAgICAgICBzY2hlbWFBc3NlcnRpb24gPSB0aGlzOyAvLy9cblxuICAgIHJldHVybiBhc3luY2hyb25vdXNTb21lKHNjaGVtYXMsIChzY2hlbWEsIGNvbnRpbnVhdGlvbikgPT4ge1xuICAgICAgcmV0dXJuIHNjaGVtYS51bmlmeVN0YXRlbWVudEFuZFNjaGVtYUFzc2VydGlvbihzdGF0ZW1lbnQsIHNjaGVtYUFzc2VydGlvbiwgY29udGV4dCwgY29udGludWF0aW9uKTtcbiAgICB9LCBjb250aW51YXRpb24pO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIlNjaGVtYUFzc2VydGlvblwiO1xufSk7XG4iXSwibmFtZXMiOlsiYXN5bmNocm9ub3VzU29tZSIsImNvbnRpbnVhdGlvblV0aWxpdGllcyIsImRlZmluZSIsIlNjaGVtYUFzc2VydGlvbiIsIkFzc2VydGlvbiIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsImZyYW1lIiwicmVmZXJlbmNlIiwiZ2V0RnJhbWUiLCJnZXRSZWZlcmVuY2UiLCJnZXRTY2hlbWFBc3NlcnRpb25Ob2RlIiwiZ2V0Tm9kZSIsInNjaGVtYUFzc2VydGlvbk5vZGUiLCJnZXRBc3N1bXB0aW9ucyIsImdldE1ldGF2YXJpYWJsZSIsImdldEltcGxpY2l0QXNzdW1wdGlvbnMiLCJpbXBsaWNpdEFzc3VtcHRpb25zIiwibWV0YXZhcmlhYmxlIiwiSW1wbGljaXRBc3N1bXB0aW9uIiwiZWxlbWVudHMiLCJmYWN0cyIsImdldEZhY3RzIiwiZm9yRWFjaCIsImZhY3QiLCJzdGF0ZW1lbnQiLCJnZXRTdGF0ZW1lbnQiLCJpbXBsaWNpdEFzc3VtcHRpb24iLCJmcm9tU3RhdGVtZW50IiwiZGVjbGFyZSIsInN0YXRlIiwidmFsaWRhdGUiLCJwdXNoIiwiY29udGludWF0aW9uIiwidmFsaWRhdGVzIiwic3BlY2lmaWNDb250ZXh0Iiwic2NoYW1lQXNzZXJ0aW9uU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJhc3NlcnRpb24iLCJmaW5kQXNzZXJ0aW9uIiwic2NoYW1lQXNzZXJ0aW9uIiwiZGVidWciLCJ2YWxpZGF0ZUZyYW1lIiwiYmluZCIsInZhbGlkYXRlUmVmZXJlbmNlIiwiYWxsIiwiYWRkQXNzZXJ0aW9uIiwiZnJhbWVWYWxpZGF0ZXMiLCJyZWZlcmVuY2VWYWxpZGF0ZXMiLCJ1bmlmeVN0ZXAiLCJzdGVwIiwic2NoZW1hcyIsImdldFNjaGVtYXMiLCJzY2hlbWFBc3NlcnRpb24iLCJzY2hlbWEiLCJ1bmlmeVN0YXRlbWVudEFuZFNjaGVtYUFzc2VydGlvbiIsIm5hbWUiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQWNBOzs7ZUFBQTs7O2dDQVpzQztrRUFFaEI7a0VBRUQ7OEJBRUQ7dUJBRUk7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRXhCLE1BQU0sRUFBRUEsZ0JBQWdCLEVBQUUsR0FBR0MscUNBQXFCO01BRWxELFdBQWVDLElBQUFBLGdCQUFNLEVBQUMsTUFBTUMsd0JBQXdCQyxrQkFBUztJQUMzRCxZQUFZQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxVQUFVLEVBQUVDLEtBQUssRUFBRUMsU0FBUyxDQUFFO1FBQy9ELEtBQUssQ0FBQ0wsU0FBU0MsUUFBUUMsTUFBTUM7UUFFN0IsSUFBSSxDQUFDQyxLQUFLLEdBQUdBO1FBQ2IsSUFBSSxDQUFDQyxTQUFTLEdBQUdBO0lBQ25CO0lBRUFDLFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQ0YsS0FBSztJQUNuQjtJQUVBRyxlQUFlO1FBQ2IsT0FBTyxJQUFJLENBQUNGLFNBQVM7SUFDdkI7SUFFQUcseUJBQXlCO1FBQ3ZCLE1BQU1OLE9BQU8sSUFBSSxDQUFDTyxPQUFPLElBQ25CQyxzQkFBc0JSLE1BQU8sR0FBRztRQUV0QyxPQUFPUTtJQUNUO0lBRUFDLGlCQUFpQjtRQUFFLE9BQU8sSUFB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
|
|
@@ -124,7 +124,7 @@ const _default = (0, _elements.define)(class Assumption extends _occamlanguages.
|
|
|
124
124
|
}
|
|
125
125
|
});
|
|
126
126
|
return success;
|
|
127
|
-
}, context, (context)=>true);
|
|
127
|
+
}, context, (context)=>true); ///
|
|
128
128
|
if (validatesWhenDerived) {
|
|
129
129
|
validatesWhenDerived = continuation(state, context);
|
|
130
130
|
}
|
|
@@ -287,4 +287,4 @@ function statementFromAssumptionNode(assumptionNode, context) {
|
|
|
287
287
|
return statement;
|
|
288
288
|
}
|
|
289
289
|
|
|
290
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2Fzc3VtcHRpb24uanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IEVsZW1lbnQsIGJyZWFrUG9pbnRVdGlsaXRpZXMsIGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvY29udGV4dFwiO1xuaW1wb3J0IHsgam9pbiwgcmVjb25jaWxlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9jb250ZXh0XCI7XG5pbXBvcnQgeyBhbGwsIHNvbWUsIGV4aXN0cyB9IGZyb20gXCIuLi91dGlsaXRpZXMvY29udGludWF0aW9uXCI7XG5pbXBvcnQgeyBpc0Rlcml2ZWQsIGlzRGVjbGFyZWQgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3N0YXRlXCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZUFzc3VtcHRpb24gfSBmcm9tIFwiLi4vcHJvY2Vzcy9pbnN0YW50aWF0ZVwiO1xuXG5jb25zdCB7IGFzeW5jaHJvbm91c0JhY2t3YXJkc0V2ZXJ5IH0gPSBjb250aW51YXRpb25VdGlsaXRpZXMsXG4gICAgICB7IGJyZWFrUG9pbnRGcm9tSlNPTiwgYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04gfSA9IGJyZWFrUG9pbnRVdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBBc3N1bXB0aW9uIGV4dGVuZHMgRWxlbWVudCB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgcmVmZXJlbmNlLCBzdGF0ZW1lbnQpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy5yZWZlcmVuY2UgPSByZWZlcmVuY2U7XG4gICAgdGhpcy5zdGF0ZW1lbnQgPSBzdGF0ZW1lbnQ7XG4gIH1cblxuICBnZXRSZWZlcmVuY2UoKSB7XG4gICAgcmV0dXJuIHRoaXMucmVmZXJlbmNlO1xuICB9XG5cbiAgZ2V0U3RhdGVtZW50KCkge1xuICAgIHJldHVybiB0aGlzLnN0YXRlbWVudDtcbiAgfVxuXG4gIGdldE1ldGF2YXJpYWJsZSgpIHsgcmV0dXJuIHRoaXMucmVmZXJlbmNlLmdldE1ldGF2YXJpYWJsZSgpOyB9XG5cbiAgZ2V0U3RhdGVtZW50Tm9kZSgpIHsgcmV0dXJuIHRoaXMuc3RhdGVtZW50LmdldFN0YXRlbWVudE5vZGUoKTsgfVxuXG4gIGlzQ29uZGl0aW9uYWwoKSB7IHJldHVybiB0aGlzLnN0YXRlbWVudC5pc0NvbmRpdGlvbmFsKCkgfVxuXG4gIGdldEFzc3VtcHRpb25Ob2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBhc3N1bXB0aW9uTm9kZSA9IG5vZGU7ICAvLy9cblxuICAgIHJldHVybiBhc3N1bXB0aW9uTm9kZTtcbiAgfVxuXG4gIGlzRXF1YWxUbyhhc3N1bXB0aW9uKSB7XG4gICAgY29uc3QgYXNzdW1wdGlvbk5vZGUgPSBhc3N1bXB0aW9uLmdldE5vZGUoKSxcbiAgICAgICAgICBhc3N1bXB0aW9uTm9kZU1hdGNoZXMgPSB0aGlzLm1hdGNoQXNzdW1wdGlvbk5vZGUoYXNzdW1wdGlvbk5vZGUpLFxuICAgICAgICAgIGVxdWFsVG8gPSBhc3N1bXB0aW9uTm9kZU1hdGNoZXM7ICAvLy9cblxuICAgIHJldHVybiBlcXVhbFRvO1xuICB9XG5cbiAgbWF0Y2hBc3N1bXB0aW9uTm9kZShhc3N1bXB0aW9uTm9kZSkge1xuICAgIGNvbnN0IG5vZGUgPSBhc3N1bXB0aW9uTm9kZSwgLy8vXG4gICAgICAgICAgbm9kZU1hdGNoZXMgPSB0aGlzLm1hdGNoTm9kZShub2RlKSxcbiAgICAgICAgICBhc3N1bXB0aW9uTm9kZU1hdGNoZXMgPSBub2RlTWF0Y2hlczsgLy8vXG5cbiAgICByZXR1cm4gYXNzdW1wdGlvbk5vZGVNYXRjaGVzO1xuICB9XG5cbiAgZmluZEFzc3VtcHRpb24oY29udGV4dCkge1xuICAgIGNvbnN0IGFzc3VtcHRpb25Ob2RlID0gdGhpcy5nZXRBc3N1bXB0aW9uTm9kZSgpLFxuICAgICAgICAgIGFzc3VtcHRpb24gPSBjb250ZXh0LmZpbmRBc3N1bXB0aW9uQnlBc3N1bXB0aW9uTm9kZShhc3N1bXB0aW9uTm9kZSk7XG5cbiAgICByZXR1cm4gYXNzdW1wdGlvbjtcbiAgfVxuXG4gIGZpbmREZWR1Y2VkU3RhdGVtZW50KGNvbnRleHQpIHsgcmV0dXJuIHRoaXMuc3RhdGVtZW50LmZpbmREZWR1Y2VkU3RhdGVtZW50KGNvbnRleHQpOyB9XG5cbiAgZmluZFN1cHBvc2VkU3RhdGVtZW50cyhjb250ZXh0KSB7IHJldHVybiB0aGlzLnN0YXRlbWVudC5maW5kU3VwcG9zZWRTdGF0ZW1lbnRzKGNvbnRleHQpOyB9XG5cbiAgZmluZFN1YnByb29mQXNzZXJ0aW9uKGNvbnRleHQpIHsgcmV0dXJuIHRoaXMuc3RhdGVtZW50LmZpbmRTdWJwcm9vZkFzc2VydGlvbihjb250ZXh0KTsgfVxuXG4gIHZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBsZXQgdmFsaWRhdGVzO1xuXG4gICAgY29uc3QgYXNzdW1wdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2Fzc3VtcHRpb25TdHJpbmd9JyBhc3N1bXB0aW9uLi4uYCk7XG5cbiAgICBsZXQgYXNzdW1wdGlvbjtcblxuICAgIGFzc3VtcHRpb24gPSB0aGlzLmZpbmRBc3N1bXB0aW9uKGNvbnRleHQpO1xuXG4gICAgaWYgKGFzc3VtcHRpb24gIT09IG51bGwpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHthc3N1bXB0aW9uU3RyaW5nfScgYXNzdW1wdGlvbiBpcyBhbHJlYWR5IHByZXNlbnQuYCk7XG5cbiAgICAgIHZhbGlkYXRlcyA9IGNvbnRpbnVhdGlvbihhc3N1bXB0aW9uLCBjb250ZXh0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXNzdW1wdGlvbiA9IHRoaXM7ICAvLy9cblxuICAgICAgY29uc3QgdmFsaWRhdGVSZWZlcmVuY2UgPSB0aGlzLnZhbGlkYXRlUmVmZXJlbmNlLmJpbmQodGhpcyksXG4gICAgICAgICAgICB2YWxpZGF0ZVN0YXRlbWVudCA9IHRoaXMudmFsaWRhdGVTdGF0ZW1lbnQuYmluZCh0aGlzKTtcblxuICAgICAgdmFsaWRhdGVzID0gYWxsKFtcbiAgICAgICAgdmFsaWRhdGVSZWZlcmVuY2UsXG4gICAgICAgIHZhbGlkYXRlU3RhdGVtZW50XG4gICAgICBdLCBzdGF0ZSwgY29udGV4dCwgKHN0YXRlLCBjb250ZXh0KSA9PiB7XG4gICAgICAgIGxldCB2YWxpZGF0ZXM7XG5cbiAgICAgICAgY29uc3QgdmFsaWRhdGVXaGVuRGVjbGFyZWQgPSB0aGlzLnZhbGlkYXRlV2hlbkRlY2xhcmVkLmJpbmQodGhpcyksXG4gICAgICAgICAgICAgIHZhbGlkYXRlV2hlbkRlcml2ZWQgPSB0aGlzLnZhbGlkYXRlV2hlbkRlcml2ZWQuYmluZCh0aGlzKTtcblxuICAgICAgICB2YWxpZGF0ZXMgPSBleGlzdHMoW1xuICAgICAgICAgIHZhbGlkYXRlV2hlbkRlY2xhcmVkLFxuICAgICAgICAgIHZhbGlkYXRlV2hlbkRlcml2ZWRcbiAgICAgICAgXSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCkgPT4ge1xuICAgICAgICAgIGxldCB2YWxpZGF0ZXM7XG5cbiAgICAgICAgICBjb250ZXh0LmFkZEFzc3VtcHRpb24oYXNzdW1wdGlvbik7XG5cbiAgICAgICAgICB2YWxpZGF0ZXMgPSBjb250aW51YXRpb24oYXNzdW1wdGlvbiwgY29udGV4dCk7XG5cbiAgICAgICAgICByZXR1cm4gdmFsaWRhdGVzO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gdmFsaWRhdGVzO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHZhbGlkYXRlcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHthc3N1bXB0aW9uU3RyaW5nfScgYXNzdW1wdGlvbi5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsaWRhdGVzO1xuICB9XG5cbiAgdmFsaWRhdGVXaGVuRGVjbGFyZWQoc3RhdGUsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCB2YWxpZGF0ZXNXaGVuRGVjbGFyZWQgPSBmYWxzZTtcblxuICAgIGNvbnN0IGRlY2xhcmVkID0gaXNEZWNsYXJlZChzdGF0ZSk7XG5cbiAgICBpZiAoZGVjbGFyZWQpIHtcbiAgICAgIGNvbnN0IGFzc3VtcHRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7YXNzdW1wdGlvblN0cmluZ30nIGRlY2xhcmVkIGFzc3VtcHRpb24uLi5gKTtcblxuICAgICAgdmFsaWRhdGVzV2hlbkRlY2xhcmVkID0gY29udGludWF0aW9uKHN0YXRlLCBjb250ZXh0KTtcblxuICAgICAgaWYgKHZhbGlkYXRlc1doZW5EZWNsYXJlZCkge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2Fzc3VtcHRpb25TdHJpbmd9JyBkZWNsYXJlZCBhc3N1bXB0aW9uLmApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB2YWxpZGF0ZXNXaGVuRGVjbGFyZWQ7XG4gIH1cblxuICB2YWxpZGF0ZVdoZW5EZXJpdmVkKHN0YXRlLCBjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBsZXQgdmFsaWRhdGVzV2hlbkRlcml2ZWQgPSBmYWxzZTtcblxuICAgIGNvbnN0IGRlcml2ZWQgPSBpc0Rlcml2ZWQoc3RhdGUpO1xuXG4gICAgaWYgKGRlcml2ZWQpIHtcbiAgICAgIGNvbnN0IGFzc3VtcHRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7YXNzdW1wdGlvblN0cmluZ30nIGRlcml2ZWQgYXNzdW1wdGlvbi4uLmApO1xuXG4gICAgICBjb25zdCBzY2hlbWFzID0gY29udGV4dC5nZXRTY2hlbWFzKCk7XG5cbiAgICAgIHZhbGlkYXRlc1doZW5EZXJpdmVkID0gc29tZShzY2hlbWFzLCAoc2NoZW1hLCBjb250ZXh0KSA9PiB7XG4gICAgICAgIGxldCBzdWNjZXNzID0gZmFsc2U7XG5cbiAgICAgICAgdGhpcy51bmlmeVNjaGVtYShzY2hlbWEsIGNvbnRleHQsIChzY2hlbWFVbmlmaWVzKSA9PiB7XG4gICAgICAgICAgaWYgKHNjaGVtYVVuaWZpZXMpIHtcbiAgICAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHN1Y2Nlc3M7XG4gICAgICB9LCBjb250ZXh0LCAoY29udGV4dCkgPT4gdHJ1ZSk7XG5cbiAgICAgIGlmICh2YWxpZGF0ZXNXaGVuRGVyaXZlZCkge1xuICAgICAgICB2YWxpZGF0ZXNXaGVuRGVyaXZlZCA9IGNvbnRpbnVhdGlvbihzdGF0ZSwgY29udGV4dCk7XG4gICAgICB9XG5cbiAgICAgIGlmICh2YWxpZGF0ZXNXaGVuRGVyaXZlZCkge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2Fzc3VtcHRpb25TdHJpbmd9JyBkZXJpdmVkIGFzc3VtcHRpb24uYCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbGlkYXRlc1doZW5EZXJpdmVkO1xuICB9XG5cbiAgdmFsaWRhdGVSZWZlcmVuY2Uoc3RhdGUsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCByZWZlcmVuY2VWYWxpZGF0ZXM7XG5cbiAgICBjb25zdCBhc3N1bXB0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7YXNzdW1wdGlvblN0cmluZ30nIGFzc3VtcHRpb24ncyByZWZlcmVuY2UuLi5gKTtcblxuICAgIHJlZmVyZW5jZVZhbGlkYXRlcyA9IHRoaXMucmVmZXJlbmNlLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAocmVmZXJlbmNlLCBjb250ZXh0KSA9PiB7XG4gICAgICBsZXQgdmFsaWRhdGVzO1xuXG4gICAgICB0aGlzLnJlZmVyZW5jZSA9IHJlZmVyZW5jZTtcblxuICAgICAgdmFsaWRhdGVzID0gY29udGludWF0aW9uKHN0YXRlLCBjb250ZXh0KTtcblxuICAgICAgcmV0dXJuIHZhbGlkYXRlcztcbiAgICB9KTtcblxuICAgIGlmIChyZWZlcmVuY2VWYWxpZGF0ZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlcyB0aGUgJyR7YXNzdW1wdGlvblN0cmluZ30nIGFzc3VtcHRpb24ncyByZWZlcmVuY2UuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlZmVyZW5jZVZhbGlkYXRlcztcbiAgfVxuXG4gIHZhbGlkYXRlU3RhdGVtZW50KHN0YXRlLCBjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBsZXQgc3RhdGVtZW50VmFsaWRhdGVzO1xuXG4gICAgY29uc3QgYXNzdW1wdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2Fzc3VtcHRpb25TdHJpbmd9JyBhc3N1bXB0aW9uJ3Mgc3RhdGVtZW50Li4uYCk7XG5cbiAgICBzdGF0ZW1lbnRWYWxpZGF0ZXMgPSB0aGlzLnN0YXRlbWVudC52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKHN0YXRlbWVudCwgY29udGV4dCkgPT4ge1xuICAgICAgbGV0IHZhbGlkYXRlcztcblxuICAgICAgdGhpcy5zdGF0ZW1lbnQgPSBzdGF0ZW1lbnQ7XG5cbiAgICAgIHZhbGlkYXRlcyA9IGNvbnRpbnVhdGlvbihzdGF0ZSwgY29udGV4dCk7XG5cbiAgICAgIHJldHVybiB2YWxpZGF0ZXM7XG4gICAgfSk7XG5cbiAgICBpZiAoc3RhdGVtZW50VmFsaWRhdGVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZXMgdGhlICcke2Fzc3VtcHRpb25TdHJpbmd9JyBhc3N1bXB0aW9uJ3Mgc3RhdGVtZW50LmApO1xuICAgIH1cblxuICAgIHJldHVybiBzdGF0ZW1lbnRWYWxpZGF0ZXM7XG4gIH1cblxuICB1bmlmeVNjaGVtYShzY2hlbWEsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGNvbnN0IGFzc3VtcHRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpLFxuICAgICAgICAgIHNjaGVtYVN0cmluZyA9IHNjaGVtYS5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzY2hlbWFTdHJpbmd9JyBzY2hlbWEgd2l0aCB0aGUgJyR7YXNzdW1wdGlvblN0cmluZ30nIGFzc3VtcHRpb24uLi5gKTtcblxuICAgIGNvbnN0IGdlbmVyYWxDb250ZXh0ID0gY29udGV4dDsgIC8vL1xuXG4gICAgcmV0dXJuIHJlY29uY2lsZSgoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3QgbGFiZWwgPSBzY2hlbWEuZ2V0TGFiZWwoKTtcblxuICAgICAgcmV0dXJuIHRoaXMucmVmZXJlbmNlLnVuaWZ5TGFiZWwobGFiZWwsIGNvbnRleHQsIChsYWJlbFVuaWZpZXMpID0+IHtcbiAgICAgICAgY29uc3Qgc3BlY2lmaWNDb250ZXh0ID0gY29udGV4dDsgIC8vL1xuXG4gICAgICAgIGlmICghbGFiZWxVbmlmaWVzKSB7XG4gICAgICAgICAgY29uc3Qgc2NoZW1hVW5pZmllcyA9IGZhbHNlO1xuXG4gICAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzY2hlbWFVbmlmaWVzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGRlZHVjdGlvbiA9IHNjaGVtYS5nZXREZWR1Y3Rpb24oKSxcbiAgICAgICAgICAgICAgZGVkdWNlZFN0YXRlbWVudCA9IHRoaXMuZmluZERlZHVjZWRTdGF0ZW1lbnQoY29udGV4dCk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMudW5pZnlEZWR1Y3Rpb24oZGVkdWN0aW9uLCBkZWR1Y2VkU3RhdGVtZW50LCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCAoZGVkdWN0aW9uVW5pZmllcykgPT4ge1xuICAgICAgICAgIGxldCBzY2hlbWFVbmlmaWVzID0gZmFsc2U7XG5cbiAgICAgICAgICBpZiAoIWRlZHVjdGlvblVuaWZpZXMpIHtcbiAgICAgICAgICAgIHJldHVybiBjb250aW51YXRpb24oc2NoZW1hVW5pZmllcyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgY29uZGl0aW9uYWwgPSB0aGlzLmlzQ29uZGl0aW9uYWwoKSxcbiAgICAgICAgICAgICAgICBzY2hlbWFDb25kaXRpb25hbCA9IHNjaGVtYS5pc0NvbmRpdGlvbmFsKCk7XG5cbiAgICAgICAgICBpZiAoY29uZGl0aW9uYWwgIT09IHNjaGVtYUNvbmRpdGlvbmFsKSB7XG4gICAgICAgICAgICBjb250ZXh0LnRyYWNlKGBFaXRoZXIgdGhlICcke3NjaGVtYVN0cmluZ30nIHNjaGVtYSBpcyB1bmNvbmRpdGlvbmFsIHdoaWxzdCB0aGUgJyR7YXNzdW1wdGlvblN0cmluZ30nIGFzc3VtcHRpb24gaXMgY29uZGl0aW9uYWwgb3IgdmljZSB2ZXJzZS5gKTtcblxuICAgICAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzY2hlbWFVbmlmaWVzKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBzdXBwb3NpdGlvbnMgPSBzY2hlbWEuZ2V0U3VwcG9zaXRpb25zKCksXG4gICAgICAgICAgICAgICAgc3VwcG9zZWRTdGF0ZW1lbnRzID0gdGhpcy5maW5kU3VwcG9zZWRTdGF0ZW1lbnRzKGNvbnRleHQpO1xuXG4gICAgICAgICAgcmV0dXJuIHRoaXMudW5pZnlTdXBwb3NpdGlvbnMoc3VwcG9zaXRpb25zLCBzdXBwb3NlZFN0YXRlbWVudHMsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIChzdXBwb3NpdGlvbnNVbmlmeSkgPT4ge1xuICAgICAgICAgICAgaWYgKHN1cHBvc2l0aW9uc1VuaWZ5KSB7XG4gICAgICAgICAgICAgIHNjaGVtYVVuaWZpZXMgPSB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoc2NoZW1hVW5pZmllcykge1xuICAgICAgICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtzY2hlbWFTdHJpbmd9JyBzY2hlbWEgd2l0aCB0aGUgJyR7YXNzdW1wdGlvblN0cmluZ30nIGFzc3VtcHRpb24uYCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBjb250aW51YXRpb24oc2NoZW1hVW5pZmllcyk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSwgY29udGV4dCk7XG4gIH1cblxuICB1bmlmeURlZHVjdGlvbihkZWR1Y3Rpb24sIGRlZHVjZWRTdGF0ZW1lbnQsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGNvbnN0IGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQsICAvLy9cbiAgICAgICAgICBhc3N1bXB0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKSwgIC8vL1xuICAgICAgICAgIGRlZHVjdGlvblN0cmluZyA9IGRlZHVjdGlvbi5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtkZWR1Y3Rpb25TdHJpbmd9JyBkZWR1Y3Rpb24ncyBzdGF0ZW1lbnQgIHdpdGggdGhlICcke2Fzc3VtcHRpb25TdHJpbmd9JyBhc3N1bXB0aW9uJ3MgJyR7YXNzdW1wdGlvblN0cmluZ30nIHN0YXRlbWVudC4uLmApO1xuXG4gICAgY29uc3Qgc3RhdGVtZW50ID0gZGVkdWN0aW9uLmdldFN0YXRlbWVudCgpLFxuICAgICAgICAgIGRlZHVjdGlvbkNvbnRleHQgPSBkZWR1Y3Rpb24uZ2V0Q29udGV4dCgpO1xuXG4gICAgc3BlY2lmaWNDb250ZXh0ID0gZGVkdWN0aW9uQ29udGV4dDsgLy8vXG5cbiAgICByZXR1cm4gam9pbigoc3BlY2lmaWNDb250ZXh0KSA9PiB7XG4gICAgICByZXR1cm4gcmVjb25jaWxlKChzcGVjaWZpY0NvbnRleHQpID0+IHtcbiAgICAgICAgcmV0dXJuIGRlZHVjZWRTdGF0ZW1lbnQudW5pZnlTdGF0ZW1lbnQoc3RhdGVtZW50LCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCAoc3RhdGVtZW50VW5pZmllcykgPT4ge1xuICAgICAgICAgIGxldCBkZWR1Y3Rpb25VbmlmaWVzID0gZmFsc2U7XG5cbiAgICAgICAgICBpZiAoc3RhdGVtZW50VW5pZmllcykge1xuICAgICAgICAgICAgc3BlY2lmaWNDb250ZXh0LmNvbW1pdChjb250ZXh0KTtcblxuICAgICAgICAgICAgZGVkdWN0aW9uVW5pZmllcyA9IHRydWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGRlZHVjdGlvblVuaWZpZXMpIHtcbiAgICAgICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke2RlZHVjdGlvblN0cmluZ30nIGRlZHVjdGlvbidzIHN0YXRlbWVudCB3aXRoIHRoZSAnJHthc3N1bXB0aW9uU3RyaW5nfScgYXNzdW1wdGlvbidzICcke2Fzc3VtcHRpb25TdHJpbmd9JyBzdGF0ZW1lbnQuYCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihkZWR1Y3Rpb25VbmlmaWVzKTtcbiAgICAgICAgfSk7XG4gICAgICB9LCBzcGVjaWZpY0NvbnRleHQpO1xuICAgIH0sIHNwZWNpZmljQ29udGV4dCwgY29udGV4dCk7XG4gIH1cblxuICB1bmlmeVN1cHBvc2l0aW9uKHN1cHBvc2l0aW9uLCBzdXBwb3NlZFN0YXRlbWVudCwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dCwgIC8vL1xuICAgICAgICAgIHN1cHBvc2l0aW9uU3RyaW5nID0gc3VwcG9zaXRpb24uZ2V0U3RyaW5nKCksXG4gICAgICAgICAgc3VwcG9zZWRTdGF0ZW1lbnRTdHJpbmcgPSBzdXBwb3NlZFN0YXRlbWVudC5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzdXBwb3NpdGlvblN0cmluZ30nIHN1cHBvc2l0aW9uJ3Mgc3RhdGVtZW50ICB3aXRoIHRoZSAnJHtzdXBwb3NlZFN0YXRlbWVudFN0cmluZ30nIHN1cHBvc2VkIHN0YXRlbWVudC4uLmApO1xuXG4gICAgY29uc3Qgc3RhdGVtZW50ID0gc3VwcG9zaXRpb24uZ2V0U3RhdGVtZW50KCksXG4gICAgICAgICAgc3VwcG9zaXRpb25Db250ZXh0ID0gc3VwcG9zaXRpb24uZ2V0Q29udGV4dCgpO1xuXG4gICAgc3BlY2lmaWNDb250ZXh0ID0gc3VwcG9zaXRpb25Db250ZXh0OyAvLy9cblxuICAgIHJldHVybiBqb2luKChzcGVjaWZpY0NvbnRleHQpID0+IHtcbiAgICAgIHJldHVybiByZWNvbmNpbGUoKHNwZWNpZmljQ29udGV4dCkgPT4ge1xuICAgICAgICByZXR1cm4gc3VwcG9zZWRTdGF0ZW1lbnQudW5pZnlTdGF0ZW1lbnQoc3RhdGVtZW50LCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCAoc3RhdGVtZW50VW5pZmllcykgPT4ge1xuICAgICAgICAgIGxldCBzdXBwb3NpdGlvblVuaWZpZXMgPSBmYWxzZTtcblxuICAgICAgICAgIGlmIChzdGF0ZW1lbnRVbmlmaWVzKSB7XG4gICAgICAgICAgICBzcGVjaWZpY0NvbnRleHQuY29tbWl0KGNvbnRleHQpO1xuXG4gICAgICAgICAgICBzdXBwb3NpdGlvblVuaWZpZXMgPSB0cnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChzdXBwb3NpdGlvblVuaWZpZXMpIHtcbiAgICAgICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3N1cHBvc2l0aW9uU3RyaW5nfScgc3VwcG9zaXRpb24ncyBzdGF0ZW1lbnQgIHdpdGggdGhlICcke3N1cHBvc2VkU3RhdGVtZW50U3RyaW5nfScgc3VwcG9zZWQgc3RhdGVtZW50LmApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBjb250aW51YXRpb24oc3VwcG9zaXRpb25VbmlmaWVzKTtcbiAgICAgICAgfSk7XG4gICAgICB9LCBzcGVjaWZpY0NvbnRleHQpO1xuICAgIH0sIHNwZWNpZmljQ29udGV4dCwgY29udGV4dCk7XG4gIH1cblxuICB1bmlmeVN1cHBvc2l0aW9ucyhzdXBwb3NpdGlvbnMsIHN1cHBvc2VkU3RhdGVtZW50cywgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgY29uc3Qgc3VwcG9zaXRpb25zTGVuZ3RoID0gc3VwcG9zaXRpb25zLmxlbmd0aCxcbiAgICAgICAgICBzdXBwb3NlZFN0YXRlbWVudHNMZW5ndGggPSBzdXBwb3NlZFN0YXRlbWVudHMubGVuZ3RoO1xuXG4gICAgaWYgKHN1cHBvc2l0aW9uc0xlbmd0aCAhPT0gc3VwcG9zZWRTdGF0ZW1lbnRzTGVuZ3RoKSB7XG4gICAgICBjb25zdCBzdXBwb3NpdGlvbnNVbmlmeSA9IGZhbHNlO1xuXG4gICAgICByZXR1cm4gY29udGludWF0aW9uKHN1cHBvc2l0aW9uc1VuaWZ5KTtcbiAgICB9XG5cbiAgICBsZXQgaW5kZXggPSBzdXBwb3NpdGlvbnNMZW5ndGg7IC8vL1xuXG4gICAgcmV0dXJuIGFzeW5jaHJvbm91c0JhY2t3YXJkc0V2ZXJ5KHN1cHBvc2l0aW9ucywgKHN1cHBvc2l0aW9uLCBjb250aW51YXRpb24pID0+IHtcbiAgICAgIGluZGV4LS07XG5cbiAgICAgIGNvbnN0IHN1cHBvc2VkU3RhdGVtZW50ID0gc3VwcG9zZWRTdGF0ZW1lbnRzW2luZGV4XTtcblxuICAgICAgcmV0dXJuIHRoaXMudW5pZnlTdXBwb3NpdGlvbihzdXBwb3NpdGlvbiwgc3VwcG9zZWRTdGF0ZW1lbnQsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGNvbnRpbnVhdGlvbik7XG4gICAgfSwgY29udGludWF0aW9uKTtcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICBjb25zdCBzdHJpbmcgPSB0aGlzLmdldFN0cmluZygpO1xuXG4gICAgbGV0IGJyZWFrUG9pbnQ7XG5cbiAgICBicmVha1BvaW50ID0gdGhpcy5nZXRCcmVha1BvaW50KCk7XG5cbiAgICBjb25zdCBicmVha1BvaW50SlNPTiA9IGJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OKGJyZWFrUG9pbnQpO1xuXG4gICAgYnJlYWtQb2ludCA9IGJyZWFrUG9pbnRKU09OOyAgLy8vXG5cbiAgICBjb25zdCBqc29uID0ge1xuICAgICAgc3RyaW5nLFxuICAgICAgYnJlYWtQb2ludFxuICAgIH07XG5cbiAgICByZXR1cm4ganNvbjtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJBc3N1bXB0aW9uXCI7XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgICBsZXQgYXNzdW1wdGlvbjtcblxuICAgIGluc3RhbnRpYXRlKChjb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCB7IHN0cmluZyB9ID0ganNvbixcbiAgICAgICAgICAgIGFzc3VtcHRpb25Ob2RlID0gaW5zdGFudGlhdGVBc3N1bXB0aW9uKHN0cmluZywgY29udGV4dCksXG4gICAgICAgICAgICBub2RlID0gYXNzdW1wdGlvbk5vZGUsICAvLy9cbiAgICAgICAgICAgIGJyZWFrUG9pbnQgPSBicmVha1BvaW50RnJvbUpTT04oanNvbiksXG4gICAgICAgICAgICByZWZlcmVuY2UgPSByZWZlcmVuY2VGcm9tQXNzdW1wdGlvbk5vZGUoYXNzdW1wdGlvbk5vZGUsIGNvbnRleHQpLFxuICAgICAgICAgICAgc3RhdGVtZW50ID0gc3RhdGVtZW50RnJvbUFzc3VtcHRpb25Ob2RlKGFzc3VtcHRpb25Ob2RlLCBjb250ZXh0KTtcblxuICAgICAgYXNzdW1wdGlvbiA9IG5ldyBBc3N1bXB0aW9uKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgcmVmZXJlbmNlLCBzdGF0ZW1lbnQpO1xuICAgIH0sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGFzc3VtcHRpb247XG4gIH1cbn0pO1xuXG5mdW5jdGlvbiByZWZlcmVuY2VGcm9tQXNzdW1wdGlvbk5vZGUoYXNzdW1wdGlvbk5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgbWV0YXZhcmlhYmxlTm9kZSA9IGFzc3VtcHRpb25Ob2RlLmdldE1ldGF2YXJpYWJsZU5vZGUoY29udGV4dCksXG4gICAgICAgIHJlZmVyZW5jZSA9IGNvbnRleHQuZmluZFJlZmVyZW5jZUJ5TWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKTtcblxuICByZXR1cm4gcmVmZXJlbmNlO1xufVxuXG5mdW5jdGlvbiBzdGF0ZW1lbnRGcm9tQXNzdW1wdGlvbk5vZGUoYXNzdW1wdGlvbk5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3Qgc3RhdGVtZW50Tm9kZSA9IGFzc3VtcHRpb25Ob2RlLmdldFN0YXRlbWVudE5vZGUoKSxcbiAgICAgICAgc3RhdGVtZW50ID0gY29udGV4dC5maW5kU3RhdGVtZW50QnlTdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUpO1xuXG4gIHJldHVybiBzdGF0ZW1lbnQ7XG59XG4iXSwibmFtZXMiOlsiYXN5bmNocm9ub3VzQmFja3dhcmRzRXZlcnkiLCJjb250aW51YXRpb25VdGlsaXRpZXMiLCJicmVha1BvaW50RnJvbUpTT04iLCJicmVha1BvaW50VG9CcmVha1BvaW50SlNPTiIsImJyZWFrUG9pbnRVdGlsaXRpZXMiLCJkZWZpbmUiLCJBc3N1bXB0aW9uIiwiRWxlbWVudCIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsInJlZmVyZW5jZSIsInN0YXRlbWVudCIsImdldFJlZmVyZW5jZSIsImdldFN0YXRlbWVudCIsImdldE1ldGF2YXJpYWJsZSIsImdldFN0YXRlbWVudE5vZGUiLCJpc0NvbmRpdGlvbmFsIiwiZ2V0QXNzdW1wdGlvbk5vZGUiLCJnZXROb2RlIiwiYXNzdW1wdGlvbk5vZGUiLCJpc0VxdWFsVG8iLCJhc3N1bXB0aW9uIiwiYXNzdW1wdGlvbk5vZGVNYXRjaGVzIiwibWF0Y2hBc3N1bXB0aW9uTm9kZSIsImVxdWFsVG8iLCJub2RlTWF0Y2hlcyIsIm1hdGNoTm9kZSIsImZpbmRBc3N1bXB0aW9uIiwiZmluZEFzc3VtcHRpb25CeUFzc3VtcHRpb25Ob2RlIiwiZmluZERlZHVjZWRTdGF0ZW1lbnQiLCJmaW5kU3VwcG9zZWRTdGF0ZW1lbnRzIiwiZmluZFN1YnByb29mQXNzZXJ0aW9uIiwidmFsaWRhdGUiLCJzdGF0ZSIsImNvbnRpbnVhdGlvbiIsInZhbGlkYXRlcyIsImFzc3VtcHRpb25TdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsImRlYnVnIiwidmFsaWRhdGVSZWZlcmVuY2UiLCJiaW5kIiwidmFsaWRhdGVTdGF0ZW1lbnQiLCJhbGwiLCJ2YWxpZGF0ZVdoZW5EZWNsYXJlZCIsInZhbGlkYXRlV2hlbkRlcml2ZWQiLCJleGlzdHMiLCJhZGRBc3N1bXB0aW9uIiwidmFsaWRhdGVzV2hlbkRlY2xhcmVkIiwiZGVjbGFyZWQiLCJpc0RlY2xhcmVkIiwidmFsaWRhdGVzV2hlbkRlcml2ZWQiLCJkZXJpdmVkIiwiaXNEZXJpdmVkIiwic2NoZW1hcyIsImdldFNjaGVtYXMiLCJzb21lIiwic2NoZW1hIiwic3VjY2VzcyIsInVuaWZ5U2NoZW1hIiwic2NoZW1hVW5pZmllcyIsInJlZmVyZW5jZVZhbGlkYXRlcyIsInN0YXRlbWVudFZhbGlkYXRlcyIsInNjaGVtYVN0cmluZyIsImdlbmVyYWxDb250ZXh0IiwicmVjb25jaWxlIiwibGFiZWwiLCJnZXRMYWJlbCIsInVuaWZ5TGFiZWwiLCJsYWJlbFVuaWZpZXMiLCJzcGVjaWZpY0NvbnRleHQiLCJkZWR1Y3Rpb24iLCJnZXREZWR1Y3Rpb24iLCJkZWR1Y2VkU3RhdGVtZW50IiwidW5pZnlEZWR1Y3Rpb24iLCJkZWR1Y3Rpb25VbmlmaWVzIiwiY29uZGl0aW9uYWwiLCJzY2hlbWFDb25kaXRpb25hbCIsInN1cHBvc2l0aW9ucyIsImdldFN1cHBvc2l0aW9ucyIsInN1cHBvc2VkU3RhdGVtZW50cyIsInVuaWZ5U3VwcG9zaXRpb25zIiwic3VwcG9zaXRpb25zVW5pZnkiLCJkZWR1Y3Rpb25TdHJpbmciLCJkZWR1Y3Rpb25Db250ZXh0IiwiZ2V0Q29udGV4dCIsImpvaW4iLCJ1bmlmeVN0YXRlbWVudCIsInN0YXRlbWVudFVuaWZpZXMiLCJjb21taXQiLCJ1bmlmeVN1cHBvc2l0aW9uIiwic3VwcG9zaXRpb24iLCJzdXBwb3NlZFN0YXRlbWVudCIsInN1cHBvc2l0aW9uU3RyaW5nIiwic3VwcG9zZWRTdGF0ZW1lbnRTdHJpbmciLCJzdXBwb3NpdGlvbkNvbnRleHQiLCJzdXBwb3NpdGlvblVuaWZpZXMiLCJzdXBwb3NpdGlvbnNMZW5ndGgiLCJsZW5ndGgiLCJzdXBwb3NlZFN0YXRlbWVudHNMZW5ndGgiLCJpbmRleCIsInRvSlNPTiIsImdldEJyZWFrUG9pbnQiLCJicmVha1BvaW50SlNPTiIsImpzb24iLCJuYW1lIiwiZnJvbUpTT04iLCJpbnN0YW50aWF0ZSIsImluc3RhbnRpYXRlQXNzdW1wdGlvbiIsInJlZmVyZW5jZUZyb21Bc3N1bXB0aW9uTm9kZSIsInN0YXRlbWVudEZyb21Bc3N1bXB0aW9uTm9kZSIsIm1ldGF2YXJpYWJsZU5vZGUiLCJnZXRNZXRhdmFyaWFibGVOb2RlIiwiZmluZFJlZmVyZW5jZUJ5TWV0YXZhcmlhYmxlTm9kZSIsInN0YXRlbWVudE5vZGUiLCJmaW5kU3RhdGVtZW50QnlTdGF0ZW1lbnROb2RlIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFjQTs7O2VBQUE7Oztn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
|
|
290
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2Fzc3VtcHRpb24uanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IEVsZW1lbnQsIGJyZWFrUG9pbnRVdGlsaXRpZXMsIGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvY29udGV4dFwiO1xuaW1wb3J0IHsgam9pbiwgcmVjb25jaWxlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9jb250ZXh0XCI7XG5pbXBvcnQgeyBhbGwsIHNvbWUsIGV4aXN0cyB9IGZyb20gXCIuLi91dGlsaXRpZXMvY29udGludWF0aW9uXCI7XG5pbXBvcnQgeyBpc0Rlcml2ZWQsIGlzRGVjbGFyZWQgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3N0YXRlXCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZUFzc3VtcHRpb24gfSBmcm9tIFwiLi4vcHJvY2Vzcy9pbnN0YW50aWF0ZVwiO1xuXG5jb25zdCB7IGFzeW5jaHJvbm91c0JhY2t3YXJkc0V2ZXJ5IH0gPSBjb250aW51YXRpb25VdGlsaXRpZXMsXG4gICAgICB7IGJyZWFrUG9pbnRGcm9tSlNPTiwgYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04gfSA9IGJyZWFrUG9pbnRVdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBBc3N1bXB0aW9uIGV4dGVuZHMgRWxlbWVudCB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgcmVmZXJlbmNlLCBzdGF0ZW1lbnQpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy5yZWZlcmVuY2UgPSByZWZlcmVuY2U7XG4gICAgdGhpcy5zdGF0ZW1lbnQgPSBzdGF0ZW1lbnQ7XG4gIH1cblxuICBnZXRSZWZlcmVuY2UoKSB7XG4gICAgcmV0dXJuIHRoaXMucmVmZXJlbmNlO1xuICB9XG5cbiAgZ2V0U3RhdGVtZW50KCkge1xuICAgIHJldHVybiB0aGlzLnN0YXRlbWVudDtcbiAgfVxuXG4gIGdldE1ldGF2YXJpYWJsZSgpIHsgcmV0dXJuIHRoaXMucmVmZXJlbmNlLmdldE1ldGF2YXJpYWJsZSgpOyB9XG5cbiAgZ2V0U3RhdGVtZW50Tm9kZSgpIHsgcmV0dXJuIHRoaXMuc3RhdGVtZW50LmdldFN0YXRlbWVudE5vZGUoKTsgfVxuXG4gIGlzQ29uZGl0aW9uYWwoKSB7IHJldHVybiB0aGlzLnN0YXRlbWVudC5pc0NvbmRpdGlvbmFsKCkgfVxuXG4gIGdldEFzc3VtcHRpb25Ob2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBhc3N1bXB0aW9uTm9kZSA9IG5vZGU7ICAvLy9cblxuICAgIHJldHVybiBhc3N1bXB0aW9uTm9kZTtcbiAgfVxuXG4gIGlzRXF1YWxUbyhhc3N1bXB0aW9uKSB7XG4gICAgY29uc3QgYXNzdW1wdGlvbk5vZGUgPSBhc3N1bXB0aW9uLmdldE5vZGUoKSxcbiAgICAgICAgICBhc3N1bXB0aW9uTm9kZU1hdGNoZXMgPSB0aGlzLm1hdGNoQXNzdW1wdGlvbk5vZGUoYXNzdW1wdGlvbk5vZGUpLFxuICAgICAgICAgIGVxdWFsVG8gPSBhc3N1bXB0aW9uTm9kZU1hdGNoZXM7ICAvLy9cblxuICAgIHJldHVybiBlcXVhbFRvO1xuICB9XG5cbiAgbWF0Y2hBc3N1bXB0aW9uTm9kZShhc3N1bXB0aW9uTm9kZSkge1xuICAgIGNvbnN0IG5vZGUgPSBhc3N1bXB0aW9uTm9kZSwgLy8vXG4gICAgICAgICAgbm9kZU1hdGNoZXMgPSB0aGlzLm1hdGNoTm9kZShub2RlKSxcbiAgICAgICAgICBhc3N1bXB0aW9uTm9kZU1hdGNoZXMgPSBub2RlTWF0Y2hlczsgLy8vXG5cbiAgICByZXR1cm4gYXNzdW1wdGlvbk5vZGVNYXRjaGVzO1xuICB9XG5cbiAgZmluZEFzc3VtcHRpb24oY29udGV4dCkge1xuICAgIGNvbnN0IGFzc3VtcHRpb25Ob2RlID0gdGhpcy5nZXRBc3N1bXB0aW9uTm9kZSgpLFxuICAgICAgICAgIGFzc3VtcHRpb24gPSBjb250ZXh0LmZpbmRBc3N1bXB0aW9uQnlBc3N1bXB0aW9uTm9kZShhc3N1bXB0aW9uTm9kZSk7XG5cbiAgICByZXR1cm4gYXNzdW1wdGlvbjtcbiAgfVxuXG4gIGZpbmREZWR1Y2VkU3RhdGVtZW50KGNvbnRleHQpIHsgcmV0dXJuIHRoaXMuc3RhdGVtZW50LmZpbmREZWR1Y2VkU3RhdGVtZW50KGNvbnRleHQpOyB9XG5cbiAgZmluZFN1cHBvc2VkU3RhdGVtZW50cyhjb250ZXh0KSB7IHJldHVybiB0aGlzLnN0YXRlbWVudC5maW5kU3VwcG9zZWRTdGF0ZW1lbnRzKGNvbnRleHQpOyB9XG5cbiAgZmluZFN1YnByb29mQXNzZXJ0aW9uKGNvbnRleHQpIHsgcmV0dXJuIHRoaXMuc3RhdGVtZW50LmZpbmRTdWJwcm9vZkFzc2VydGlvbihjb250ZXh0KTsgfVxuXG4gIHZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBsZXQgdmFsaWRhdGVzO1xuXG4gICAgY29uc3QgYXNzdW1wdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2Fzc3VtcHRpb25TdHJpbmd9JyBhc3N1bXB0aW9uLi4uYCk7XG5cbiAgICBsZXQgYXNzdW1wdGlvbjtcblxuICAgIGFzc3VtcHRpb24gPSB0aGlzLmZpbmRBc3N1bXB0aW9uKGNvbnRleHQpO1xuXG4gICAgaWYgKGFzc3VtcHRpb24gIT09IG51bGwpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHthc3N1bXB0aW9uU3RyaW5nfScgYXNzdW1wdGlvbiBpcyBhbHJlYWR5IHByZXNlbnQuYCk7XG5cbiAgICAgIHZhbGlkYXRlcyA9IGNvbnRpbnVhdGlvbihhc3N1bXB0aW9uLCBjb250ZXh0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXNzdW1wdGlvbiA9IHRoaXM7ICAvLy9cblxuICAgICAgY29uc3QgdmFsaWRhdGVSZWZlcmVuY2UgPSB0aGlzLnZhbGlkYXRlUmVmZXJlbmNlLmJpbmQodGhpcyksXG4gICAgICAgICAgICB2YWxpZGF0ZVN0YXRlbWVudCA9IHRoaXMudmFsaWRhdGVTdGF0ZW1lbnQuYmluZCh0aGlzKTtcblxuICAgICAgdmFsaWRhdGVzID0gYWxsKFtcbiAgICAgICAgdmFsaWRhdGVSZWZlcmVuY2UsXG4gICAgICAgIHZhbGlkYXRlU3RhdGVtZW50XG4gICAgICBdLCBzdGF0ZSwgY29udGV4dCwgKHN0YXRlLCBjb250ZXh0KSA9PiB7XG4gICAgICAgIGxldCB2YWxpZGF0ZXM7XG5cbiAgICAgICAgY29uc3QgdmFsaWRhdGVXaGVuRGVjbGFyZWQgPSB0aGlzLnZhbGlkYXRlV2hlbkRlY2xhcmVkLmJpbmQodGhpcyksXG4gICAgICAgICAgICAgIHZhbGlkYXRlV2hlbkRlcml2ZWQgPSB0aGlzLnZhbGlkYXRlV2hlbkRlcml2ZWQuYmluZCh0aGlzKTtcblxuICAgICAgICB2YWxpZGF0ZXMgPSBleGlzdHMoW1xuICAgICAgICAgIHZhbGlkYXRlV2hlbkRlY2xhcmVkLFxuICAgICAgICAgIHZhbGlkYXRlV2hlbkRlcml2ZWRcbiAgICAgICAgXSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCkgPT4ge1xuICAgICAgICAgIGxldCB2YWxpZGF0ZXM7XG5cbiAgICAgICAgICBjb250ZXh0LmFkZEFzc3VtcHRpb24oYXNzdW1wdGlvbik7XG5cbiAgICAgICAgICB2YWxpZGF0ZXMgPSBjb250aW51YXRpb24oYXNzdW1wdGlvbiwgY29udGV4dCk7XG5cbiAgICAgICAgICByZXR1cm4gdmFsaWRhdGVzO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gdmFsaWRhdGVzO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHZhbGlkYXRlcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHthc3N1bXB0aW9uU3RyaW5nfScgYXNzdW1wdGlvbi5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsaWRhdGVzO1xuICB9XG5cbiAgdmFsaWRhdGVXaGVuRGVjbGFyZWQoc3RhdGUsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCB2YWxpZGF0ZXNXaGVuRGVjbGFyZWQgPSBmYWxzZTtcblxuICAgIGNvbnN0IGRlY2xhcmVkID0gaXNEZWNsYXJlZChzdGF0ZSk7XG5cbiAgICBpZiAoZGVjbGFyZWQpIHtcbiAgICAgIGNvbnN0IGFzc3VtcHRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7YXNzdW1wdGlvblN0cmluZ30nIGRlY2xhcmVkIGFzc3VtcHRpb24uLi5gKTtcblxuICAgICAgdmFsaWRhdGVzV2hlbkRlY2xhcmVkID0gY29udGludWF0aW9uKHN0YXRlLCBjb250ZXh0KTtcblxuICAgICAgaWYgKHZhbGlkYXRlc1doZW5EZWNsYXJlZCkge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2Fzc3VtcHRpb25TdHJpbmd9JyBkZWNsYXJlZCBhc3N1bXB0aW9uLmApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB2YWxpZGF0ZXNXaGVuRGVjbGFyZWQ7XG4gIH1cblxuICB2YWxpZGF0ZVdoZW5EZXJpdmVkKHN0YXRlLCBjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBsZXQgdmFsaWRhdGVzV2hlbkRlcml2ZWQgPSBmYWxzZTtcblxuICAgIGNvbnN0IGRlcml2ZWQgPSBpc0Rlcml2ZWQoc3RhdGUpO1xuXG4gICAgaWYgKGRlcml2ZWQpIHtcbiAgICAgIGNvbnN0IGFzc3VtcHRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7YXNzdW1wdGlvblN0cmluZ30nIGRlcml2ZWQgYXNzdW1wdGlvbi4uLmApO1xuXG4gICAgICBjb25zdCBzY2hlbWFzID0gY29udGV4dC5nZXRTY2hlbWFzKCk7XG5cbiAgICAgIHZhbGlkYXRlc1doZW5EZXJpdmVkID0gc29tZShzY2hlbWFzLCAoc2NoZW1hLCBjb250ZXh0KSA9PiB7XG4gICAgICAgIGxldCBzdWNjZXNzID0gZmFsc2U7XG5cbiAgICAgICAgdGhpcy51bmlmeVNjaGVtYShzY2hlbWEsIGNvbnRleHQsIChzY2hlbWFVbmlmaWVzKSA9PiB7XG4gICAgICAgICAgaWYgKHNjaGVtYVVuaWZpZXMpIHtcbiAgICAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHN1Y2Nlc3M7XG4gICAgICB9LCBjb250ZXh0LCAoY29udGV4dCkgPT4gdHJ1ZSk7IC8vL1xuXG4gICAgICBpZiAodmFsaWRhdGVzV2hlbkRlcml2ZWQpIHtcbiAgICAgICAgdmFsaWRhdGVzV2hlbkRlcml2ZWQgPSBjb250aW51YXRpb24oc3RhdGUsIGNvbnRleHQpO1xuICAgICAgfVxuXG4gICAgICBpZiAodmFsaWRhdGVzV2hlbkRlcml2ZWQpIHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHthc3N1bXB0aW9uU3RyaW5nfScgZGVyaXZlZCBhc3N1bXB0aW9uLmApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB2YWxpZGF0ZXNXaGVuRGVyaXZlZDtcbiAgfVxuXG4gIHZhbGlkYXRlUmVmZXJlbmNlKHN0YXRlLCBjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBsZXQgcmVmZXJlbmNlVmFsaWRhdGVzO1xuXG4gICAgY29uc3QgYXNzdW1wdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2Fzc3VtcHRpb25TdHJpbmd9JyBhc3N1bXB0aW9uJ3MgcmVmZXJlbmNlLi4uYCk7XG5cbiAgICByZWZlcmVuY2VWYWxpZGF0ZXMgPSB0aGlzLnJlZmVyZW5jZS52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKHJlZmVyZW5jZSwgY29udGV4dCkgPT4ge1xuICAgICAgbGV0IHZhbGlkYXRlcztcblxuICAgICAgdGhpcy5yZWZlcmVuY2UgPSByZWZlcmVuY2U7XG5cbiAgICAgIHZhbGlkYXRlcyA9IGNvbnRpbnVhdGlvbihzdGF0ZSwgY29udGV4dCk7XG5cbiAgICAgIHJldHVybiB2YWxpZGF0ZXM7XG4gICAgfSk7XG5cbiAgICBpZiAocmVmZXJlbmNlVmFsaWRhdGVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZXMgdGhlICcke2Fzc3VtcHRpb25TdHJpbmd9JyBhc3N1bXB0aW9uJ3MgcmVmZXJlbmNlLmApO1xuICAgIH1cblxuICAgIHJldHVybiByZWZlcmVuY2VWYWxpZGF0ZXM7XG4gIH1cblxuICB2YWxpZGF0ZVN0YXRlbWVudChzdGF0ZSwgY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgbGV0IHN0YXRlbWVudFZhbGlkYXRlcztcblxuICAgIGNvbnN0IGFzc3VtcHRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHthc3N1bXB0aW9uU3RyaW5nfScgYXNzdW1wdGlvbidzIHN0YXRlbWVudC4uLmApO1xuXG4gICAgc3RhdGVtZW50VmFsaWRhdGVzID0gdGhpcy5zdGF0ZW1lbnQudmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIChzdGF0ZW1lbnQsIGNvbnRleHQpID0+IHtcbiAgICAgIGxldCB2YWxpZGF0ZXM7XG5cbiAgICAgIHRoaXMuc3RhdGVtZW50ID0gc3RhdGVtZW50O1xuXG4gICAgICB2YWxpZGF0ZXMgPSBjb250aW51YXRpb24oc3RhdGUsIGNvbnRleHQpO1xuXG4gICAgICByZXR1cm4gdmFsaWRhdGVzO1xuICAgIH0pO1xuXG4gICAgaWYgKHN0YXRlbWVudFZhbGlkYXRlcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVzIHRoZSAnJHthc3N1bXB0aW9uU3RyaW5nfScgYXNzdW1wdGlvbidzIHN0YXRlbWVudC5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3RhdGVtZW50VmFsaWRhdGVzO1xuICB9XG5cbiAgdW5pZnlTY2hlbWEoc2NoZW1hLCBjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBjb25zdCBhc3N1bXB0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBzY2hlbWFTdHJpbmcgPSBzY2hlbWEuZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7c2NoZW1hU3RyaW5nfScgc2NoZW1hIHdpdGggdGhlICcke2Fzc3VtcHRpb25TdHJpbmd9JyBhc3N1bXB0aW9uLi4uYCk7XG5cbiAgICBjb25zdCBnZW5lcmFsQ29udGV4dCA9IGNvbnRleHQ7ICAvLy9cblxuICAgIHJldHVybiByZWNvbmNpbGUoKGNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IGxhYmVsID0gc2NoZW1hLmdldExhYmVsKCk7XG5cbiAgICAgIHJldHVybiB0aGlzLnJlZmVyZW5jZS51bmlmeUxhYmVsKGxhYmVsLCBjb250ZXh0LCAobGFiZWxVbmlmaWVzKSA9PiB7XG4gICAgICAgIGNvbnN0IHNwZWNpZmljQ29udGV4dCA9IGNvbnRleHQ7ICAvLy9cblxuICAgICAgICBpZiAoIWxhYmVsVW5pZmllcykge1xuICAgICAgICAgIGNvbnN0IHNjaGVtYVVuaWZpZXMgPSBmYWxzZTtcblxuICAgICAgICAgIHJldHVybiBjb250aW51YXRpb24oc2NoZW1hVW5pZmllcyk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkZWR1Y3Rpb24gPSBzY2hlbWEuZ2V0RGVkdWN0aW9uKCksXG4gICAgICAgICAgICAgIGRlZHVjZWRTdGF0ZW1lbnQgPSB0aGlzLmZpbmREZWR1Y2VkU3RhdGVtZW50KGNvbnRleHQpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLnVuaWZ5RGVkdWN0aW9uKGRlZHVjdGlvbiwgZGVkdWNlZFN0YXRlbWVudCwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgKGRlZHVjdGlvblVuaWZpZXMpID0+IHtcbiAgICAgICAgICBsZXQgc2NoZW1hVW5pZmllcyA9IGZhbHNlO1xuXG4gICAgICAgICAgaWYgKCFkZWR1Y3Rpb25VbmlmaWVzKSB7XG4gICAgICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHNjaGVtYVVuaWZpZXMpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IGNvbmRpdGlvbmFsID0gdGhpcy5pc0NvbmRpdGlvbmFsKCksXG4gICAgICAgICAgICAgICAgc2NoZW1hQ29uZGl0aW9uYWwgPSBzY2hlbWEuaXNDb25kaXRpb25hbCgpO1xuXG4gICAgICAgICAgaWYgKGNvbmRpdGlvbmFsICE9PSBzY2hlbWFDb25kaXRpb25hbCkge1xuICAgICAgICAgICAgY29udGV4dC50cmFjZShgRWl0aGVyIHRoZSAnJHtzY2hlbWFTdHJpbmd9JyBzY2hlbWEgaXMgdW5jb25kaXRpb25hbCB3aGlsc3QgdGhlICcke2Fzc3VtcHRpb25TdHJpbmd9JyBhc3N1bXB0aW9uIGlzIGNvbmRpdGlvbmFsIG9yIHZpY2UgdmVyc2UuYCk7XG5cbiAgICAgICAgICAgIHJldHVybiBjb250aW51YXRpb24oc2NoZW1hVW5pZmllcyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3Qgc3VwcG9zaXRpb25zID0gc2NoZW1hLmdldFN1cHBvc2l0aW9ucygpLFxuICAgICAgICAgICAgICAgIHN1cHBvc2VkU3RhdGVtZW50cyA9IHRoaXMuZmluZFN1cHBvc2VkU3RhdGVtZW50cyhjb250ZXh0KTtcblxuICAgICAgICAgIHJldHVybiB0aGlzLnVuaWZ5U3VwcG9zaXRpb25zKHN1cHBvc2l0aW9ucywgc3VwcG9zZWRTdGF0ZW1lbnRzLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCAoc3VwcG9zaXRpb25zVW5pZnkpID0+IHtcbiAgICAgICAgICAgIGlmIChzdXBwb3NpdGlvbnNVbmlmeSkge1xuICAgICAgICAgICAgICBzY2hlbWFVbmlmaWVzID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHNjaGVtYVVuaWZpZXMpIHtcbiAgICAgICAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7c2NoZW1hU3RyaW5nfScgc2NoZW1hIHdpdGggdGhlICcke2Fzc3VtcHRpb25TdHJpbmd9JyBhc3N1bXB0aW9uLmApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHNjaGVtYVVuaWZpZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0sIGNvbnRleHQpO1xuICB9XG5cbiAgdW5pZnlEZWR1Y3Rpb24oZGVkdWN0aW9uLCBkZWR1Y2VkU3RhdGVtZW50LCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBjb25zdCBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0LCAgLy8vXG4gICAgICAgICAgYXNzdW1wdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCksICAvLy9cbiAgICAgICAgICBkZWR1Y3Rpb25TdHJpbmcgPSBkZWR1Y3Rpb24uZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7ZGVkdWN0aW9uU3RyaW5nfScgZGVkdWN0aW9uJ3Mgc3RhdGVtZW50ICB3aXRoIHRoZSAnJHthc3N1bXB0aW9uU3RyaW5nfScgYXNzdW1wdGlvbidzICcke2Fzc3VtcHRpb25TdHJpbmd9JyBzdGF0ZW1lbnQuLi5gKTtcblxuICAgIGNvbnN0IHN0YXRlbWVudCA9IGRlZHVjdGlvbi5nZXRTdGF0ZW1lbnQoKSxcbiAgICAgICAgICBkZWR1Y3Rpb25Db250ZXh0ID0gZGVkdWN0aW9uLmdldENvbnRleHQoKTtcblxuICAgIHNwZWNpZmljQ29udGV4dCA9IGRlZHVjdGlvbkNvbnRleHQ7IC8vL1xuXG4gICAgcmV0dXJuIGpvaW4oKHNwZWNpZmljQ29udGV4dCkgPT4ge1xuICAgICAgcmV0dXJuIHJlY29uY2lsZSgoc3BlY2lmaWNDb250ZXh0KSA9PiB7XG4gICAgICAgIHJldHVybiBkZWR1Y2VkU3RhdGVtZW50LnVuaWZ5U3RhdGVtZW50KHN0YXRlbWVudCwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgKHN0YXRlbWVudFVuaWZpZXMpID0+IHtcbiAgICAgICAgICBsZXQgZGVkdWN0aW9uVW5pZmllcyA9IGZhbHNlO1xuXG4gICAgICAgICAgaWYgKHN0YXRlbWVudFVuaWZpZXMpIHtcbiAgICAgICAgICAgIHNwZWNpZmljQ29udGV4dC5jb21taXQoY29udGV4dCk7XG5cbiAgICAgICAgICAgIGRlZHVjdGlvblVuaWZpZXMgPSB0cnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChkZWR1Y3Rpb25VbmlmaWVzKSB7XG4gICAgICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtkZWR1Y3Rpb25TdHJpbmd9JyBkZWR1Y3Rpb24ncyBzdGF0ZW1lbnQgd2l0aCB0aGUgJyR7YXNzdW1wdGlvblN0cmluZ30nIGFzc3VtcHRpb24ncyAnJHthc3N1bXB0aW9uU3RyaW5nfScgc3RhdGVtZW50LmApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBjb250aW51YXRpb24oZGVkdWN0aW9uVW5pZmllcyk7XG4gICAgICAgIH0pO1xuICAgICAgfSwgc3BlY2lmaWNDb250ZXh0KTtcbiAgICB9LCBzcGVjaWZpY0NvbnRleHQsIGNvbnRleHQpO1xuICB9XG5cbiAgdW5pZnlTdXBwb3NpdGlvbihzdXBwb3NpdGlvbiwgc3VwcG9zZWRTdGF0ZW1lbnQsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGNvbnN0IGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQsICAvLy9cbiAgICAgICAgICBzdXBwb3NpdGlvblN0cmluZyA9IHN1cHBvc2l0aW9uLmdldFN0cmluZygpLFxuICAgICAgICAgIHN1cHBvc2VkU3RhdGVtZW50U3RyaW5nID0gc3VwcG9zZWRTdGF0ZW1lbnQuZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7c3VwcG9zaXRpb25TdHJpbmd9JyBzdXBwb3NpdGlvbidzIHN0YXRlbWVudCAgd2l0aCB0aGUgJyR7c3VwcG9zZWRTdGF0ZW1lbnRTdHJpbmd9JyBzdXBwb3NlZCBzdGF0ZW1lbnQuLi5gKTtcblxuICAgIGNvbnN0IHN0YXRlbWVudCA9IHN1cHBvc2l0aW9uLmdldFN0YXRlbWVudCgpLFxuICAgICAgICAgIHN1cHBvc2l0aW9uQ29udGV4dCA9IHN1cHBvc2l0aW9uLmdldENvbnRleHQoKTtcblxuICAgIHNwZWNpZmljQ29udGV4dCA9IHN1cHBvc2l0aW9uQ29udGV4dDsgLy8vXG5cbiAgICByZXR1cm4gam9pbigoc3BlY2lmaWNDb250ZXh0KSA9PiB7XG4gICAgICByZXR1cm4gcmVjb25jaWxlKChzcGVjaWZpY0NvbnRleHQpID0+IHtcbiAgICAgICAgcmV0dXJuIHN1cHBvc2VkU3RhdGVtZW50LnVuaWZ5U3RhdGVtZW50KHN0YXRlbWVudCwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgKHN0YXRlbWVudFVuaWZpZXMpID0+IHtcbiAgICAgICAgICBsZXQgc3VwcG9zaXRpb25VbmlmaWVzID0gZmFsc2U7XG5cbiAgICAgICAgICBpZiAoc3RhdGVtZW50VW5pZmllcykge1xuICAgICAgICAgICAgc3BlY2lmaWNDb250ZXh0LmNvbW1pdChjb250ZXh0KTtcblxuICAgICAgICAgICAgc3VwcG9zaXRpb25VbmlmaWVzID0gdHJ1ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoc3VwcG9zaXRpb25VbmlmaWVzKSB7XG4gICAgICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtzdXBwb3NpdGlvblN0cmluZ30nIHN1cHBvc2l0aW9uJ3Mgc3RhdGVtZW50ICB3aXRoIHRoZSAnJHtzdXBwb3NlZFN0YXRlbWVudFN0cmluZ30nIHN1cHBvc2VkIHN0YXRlbWVudC5gKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHN1cHBvc2l0aW9uVW5pZmllcyk7XG4gICAgICAgIH0pO1xuICAgICAgfSwgc3BlY2lmaWNDb250ZXh0KTtcbiAgICB9LCBzcGVjaWZpY0NvbnRleHQsIGNvbnRleHQpO1xuICB9XG5cbiAgdW5pZnlTdXBwb3NpdGlvbnMoc3VwcG9zaXRpb25zLCBzdXBwb3NlZFN0YXRlbWVudHMsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGNvbnN0IHN1cHBvc2l0aW9uc0xlbmd0aCA9IHN1cHBvc2l0aW9ucy5sZW5ndGgsXG4gICAgICAgICAgc3VwcG9zZWRTdGF0ZW1lbnRzTGVuZ3RoID0gc3VwcG9zZWRTdGF0ZW1lbnRzLmxlbmd0aDtcblxuICAgIGlmIChzdXBwb3NpdGlvbnNMZW5ndGggIT09IHN1cHBvc2VkU3RhdGVtZW50c0xlbmd0aCkge1xuICAgICAgY29uc3Qgc3VwcG9zaXRpb25zVW5pZnkgPSBmYWxzZTtcblxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzdXBwb3NpdGlvbnNVbmlmeSk7XG4gICAgfVxuXG4gICAgbGV0IGluZGV4ID0gc3VwcG9zaXRpb25zTGVuZ3RoOyAvLy9cblxuICAgIHJldHVybiBhc3luY2hyb25vdXNCYWNrd2FyZHNFdmVyeShzdXBwb3NpdGlvbnMsIChzdXBwb3NpdGlvbiwgY29udGludWF0aW9uKSA9PiB7XG4gICAgICBpbmRleC0tO1xuXG4gICAgICBjb25zdCBzdXBwb3NlZFN0YXRlbWVudCA9IHN1cHBvc2VkU3RhdGVtZW50c1tpbmRleF07XG5cbiAgICAgIHJldHVybiB0aGlzLnVuaWZ5U3VwcG9zaXRpb24oc3VwcG9zaXRpb24sIHN1cHBvc2VkU3RhdGVtZW50LCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBjb250aW51YXRpb24pO1xuICAgIH0sIGNvbnRpbnVhdGlvbik7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgY29uc3Qgc3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTtcblxuICAgIGxldCBicmVha1BvaW50O1xuXG4gICAgYnJlYWtQb2ludCA9IHRoaXMuZ2V0QnJlYWtQb2ludCgpO1xuXG4gICAgY29uc3QgYnJlYWtQb2ludEpTT04gPSBicmVha1BvaW50VG9CcmVha1BvaW50SlNPTihicmVha1BvaW50KTtcblxuICAgIGJyZWFrUG9pbnQgPSBicmVha1BvaW50SlNPTjsgIC8vL1xuXG4gICAgY29uc3QganNvbiA9IHtcbiAgICAgIHN0cmluZyxcbiAgICAgIGJyZWFrUG9pbnRcbiAgICB9O1xuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiQXNzdW1wdGlvblwiO1xuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gICAgbGV0IGFzc3VtcHRpb247XG5cbiAgICBpbnN0YW50aWF0ZSgoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgICBhc3N1bXB0aW9uTm9kZSA9IGluc3RhbnRpYXRlQXNzdW1wdGlvbihzdHJpbmcsIGNvbnRleHQpLFxuICAgICAgICAgICAgbm9kZSA9IGFzc3VtcHRpb25Ob2RlLCAgLy8vXG4gICAgICAgICAgICBicmVha1BvaW50ID0gYnJlYWtQb2ludEZyb21KU09OKGpzb24pLFxuICAgICAgICAgICAgcmVmZXJlbmNlID0gcmVmZXJlbmNlRnJvbUFzc3VtcHRpb25Ob2RlKGFzc3VtcHRpb25Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgICAgIHN0YXRlbWVudCA9IHN0YXRlbWVudEZyb21Bc3N1bXB0aW9uTm9kZShhc3N1bXB0aW9uTm9kZSwgY29udGV4dCk7XG5cbiAgICAgIGFzc3VtcHRpb24gPSBuZXcgQXNzdW1wdGlvbihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHJlZmVyZW5jZSwgc3RhdGVtZW50KTtcbiAgICB9LCBjb250ZXh0KTtcblxuICAgIHJldHVybiBhc3N1bXB0aW9uO1xuICB9XG59KTtcblxuZnVuY3Rpb24gcmVmZXJlbmNlRnJvbUFzc3VtcHRpb25Ob2RlKGFzc3VtcHRpb25Ob2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IG1ldGF2YXJpYWJsZU5vZGUgPSBhc3N1bXB0aW9uTm9kZS5nZXRNZXRhdmFyaWFibGVOb2RlKGNvbnRleHQpLFxuICAgICAgICByZWZlcmVuY2UgPSBjb250ZXh0LmZpbmRSZWZlcmVuY2VCeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSk7XG5cbiAgcmV0dXJuIHJlZmVyZW5jZTtcbn1cblxuZnVuY3Rpb24gc3RhdGVtZW50RnJvbUFzc3VtcHRpb25Ob2RlKGFzc3VtcHRpb25Ob2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBhc3N1bXB0aW9uTm9kZS5nZXRTdGF0ZW1lbnROb2RlKCksXG4gICAgICAgIHN0YXRlbWVudCA9IGNvbnRleHQuZmluZFN0YXRlbWVudEJ5U3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlKTtcblxuICByZXR1cm4gc3RhdGVtZW50O1xufVxuIl0sIm5hbWVzIjpbImFzeW5jaHJvbm91c0JhY2t3YXJkc0V2ZXJ5IiwiY29udGludWF0aW9uVXRpbGl0aWVzIiwiYnJlYWtQb2ludEZyb21KU09OIiwiYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04iLCJicmVha1BvaW50VXRpbGl0aWVzIiwiZGVmaW5lIiwiQXNzdW1wdGlvbiIsIkVsZW1lbnQiLCJjb250ZXh0Iiwic3RyaW5nIiwibm9kZSIsImJyZWFrUG9pbnQiLCJyZWZlcmVuY2UiLCJzdGF0ZW1lbnQiLCJnZXRSZWZlcmVuY2UiLCJnZXRTdGF0ZW1lbnQiLCJnZXRNZXRhdmFyaWFibGUiLCJnZXRTdGF0ZW1lbnROb2RlIiwiaXNDb25kaXRpb25hbCIsImdldEFzc3VtcHRpb25Ob2RlIiwiZ2V0Tm9kZSIsImFzc3VtcHRpb25Ob2RlIiwiaXNFcXVhbFRvIiwiYXNzdW1wdGlvbiIsImFzc3VtcHRpb25Ob2RlTWF0Y2hlcyIsIm1hdGNoQXNzdW1wdGlvbk5vZGUiLCJlcXVhbFRvIiwibm9kZU1hdGNoZXMiLCJtYXRjaE5vZGUiLCJmaW5kQXNzdW1wdGlvbiIsImZpbmRBc3N1bXB0aW9uQnlBc3N1bXB0aW9uTm9kZSIsImZpbmREZWR1Y2VkU3RhdGVtZW50IiwiZmluZFN1cHBvc2VkU3RhdGVtZW50cyIsImZpbmRTdWJwcm9vZkFzc2VydGlvbiIsInZhbGlkYXRlIiwic3RhdGUiLCJjb250aW51YXRpb24iLCJ2YWxpZGF0ZXMiLCJhc3N1bXB0aW9uU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJkZWJ1ZyIsInZhbGlkYXRlUmVmZXJlbmNlIiwiYmluZCIsInZhbGlkYXRlU3RhdGVtZW50IiwiYWxsIiwidmFsaWRhdGVXaGVuRGVjbGFyZWQiLCJ2YWxpZGF0ZVdoZW5EZXJpdmVkIiwiZXhpc3RzIiwiYWRkQXNzdW1wdGlvbiIsInZhbGlkYXRlc1doZW5EZWNsYXJlZCIsImRlY2xhcmVkIiwiaXNEZWNsYXJlZCIsInZhbGlkYXRlc1doZW5EZXJpdmVkIiwiZGVyaXZlZCIsImlzRGVyaXZlZCIsInNjaGVtYXMiLCJnZXRTY2hlbWFzIiwic29tZSIsInNjaGVtYSIsInN1Y2Nlc3MiLCJ1bmlmeVNjaGVtYSIsInNjaGVtYVVuaWZpZXMiLCJyZWZlcmVuY2VWYWxpZGF0ZXMiLCJzdGF0ZW1lbnRWYWxpZGF0ZXMiLCJzY2hlbWFTdHJpbmciLCJnZW5lcmFsQ29udGV4dCIsInJlY29uY2lsZSIsImxhYmVsIiwiZ2V0TGFiZWwiLCJ1bmlmeUxhYmVsIiwibGFiZWxVbmlmaWVzIiwic3BlY2lmaWNDb250ZXh0IiwiZGVkdWN0aW9uIiwiZ2V0RGVkdWN0aW9uIiwiZGVkdWNlZFN0YXRlbWVudCIsInVuaWZ5RGVkdWN0aW9uIiwiZGVkdWN0aW9uVW5pZmllcyIsImNvbmRpdGlvbmFsIiwic2NoZW1hQ29uZGl0aW9uYWwiLCJzdXBwb3NpdGlvbnMiLCJnZXRTdXBwb3NpdGlvbnMiLCJzdXBwb3NlZFN0YXRlbWVudHMiLCJ1bmlmeVN1cHBvc2l0aW9ucyIsInN1cHBvc2l0aW9uc1VuaWZ5IiwiZGVkdWN0aW9uU3RyaW5nIiwiZGVkdWN0aW9uQ29udGV4dCIsImdldENvbnRleHQiLCJqb2luIiwidW5pZnlTdGF0ZW1lbnQiLCJzdGF0ZW1lbnRVbmlmaWVzIiwiY29tbWl0IiwidW5pZnlTdXBwb3NpdGlvbiIsInN1cHBvc2l0aW9uIiwic3VwcG9zZWRTdGF0ZW1lbnQiLCJzdXBwb3NpdGlvblN0cmluZyIsInN1cHBvc2VkU3RhdGVtZW50U3RyaW5nIiwic3VwcG9zaXRpb25Db250ZXh0Iiwic3VwcG9zaXRpb25VbmlmaWVzIiwic3VwcG9zaXRpb25zTGVuZ3RoIiwibGVuZ3RoIiwic3VwcG9zZWRTdGF0ZW1lbnRzTGVuZ3RoIiwiaW5kZXgiLCJ0b0pTT04iLCJnZXRCcmVha1BvaW50IiwiYnJlYWtQb2ludEpTT04iLCJqc29uIiwibmFtZSIsImZyb21KU09OIiwiaW5zdGFudGlhdGUiLCJpbnN0YW50aWF0ZUFzc3VtcHRpb24iLCJyZWZlcmVuY2VGcm9tQXNzdW1wdGlvbk5vZGUiLCJzdGF0ZW1lbnRGcm9tQXNzdW1wdGlvbk5vZGUiLCJtZXRhdmFyaWFibGVOb2RlIiwiZ2V0TWV0YXZhcmlhYmxlTm9kZSIsImZpbmRSZWZlcmVuY2VCeU1ldGF2YXJpYWJsZU5vZGUiLCJzdGF0ZW1lbnROb2RlIiwiZmluZFN0YXRlbWVudEJ5U3RhdGVtZW50Tm9kZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBY0E7OztlQUFB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
|
|
@@ -30,13 +30,22 @@ const _default = (0, _elements.define)(class Combinator extends _occamlanguages.
|
|
|
30
30
|
const node = this.getNode(), combinatorNode = node; ///
|
|
31
31
|
return combinatorNode;
|
|
32
32
|
}
|
|
33
|
+
isMalformed() {
|
|
34
|
+
const combinatoryNode = this.getCombinatoryNode(), malformed = combinatoryNode.isMalformed();
|
|
35
|
+
return malformed;
|
|
36
|
+
}
|
|
33
37
|
verify(context, continuation) {
|
|
34
38
|
let verifies = false;
|
|
35
39
|
const combinatorString = this.getString(); ///
|
|
36
40
|
context.trace(`Verifying the '${combinatorString}' combinator...`);
|
|
41
|
+
const malformed = this.isMalformed();
|
|
42
|
+
if (malformed) {
|
|
43
|
+
context.debug(`Unable to verify the '${combinatorString}' combinator because it is malformed.`);
|
|
44
|
+
return continuation(verifies, context);
|
|
45
|
+
}
|
|
37
46
|
(0, _state.declare)((state)=>{
|
|
38
47
|
(0, _state.desist)((state)=>{
|
|
39
|
-
const validates = this.validate(state, context, (ocmbinator, context)=>true);
|
|
48
|
+
const validates = this.validate(state, context, (ocmbinator, context)=>true); ///
|
|
40
49
|
if (validates) {
|
|
41
50
|
verifies = true;
|
|
42
51
|
}
|
|
@@ -90,7 +99,7 @@ const _default = (0, _elements.define)(class Combinator extends _occamlanguages.
|
|
|
90
99
|
let statementUnifies = false;
|
|
91
100
|
const statementString = statement.getString(), combinatorString = this.getString(); ///
|
|
92
101
|
context.trace(`Unifying the '${statementString}' statement with the '${combinatorString}' combinator...`);
|
|
93
|
-
const combinator = this,
|
|
102
|
+
const combinator = this, generalContext = this.getContext(), specifiContext = context, statementUnifiesWithCombinator = (0, _unify.unifyStatementWithCombinator)(statement, combinator, generalContext, specifiContext, (generalContext, specifiContext)=>{
|
|
94
103
|
let statementUnifiesWithCombinator;
|
|
95
104
|
const context = specifiContext; ///
|
|
96
105
|
statementUnifiesWithCombinator = continuation(statement, context);
|
|
@@ -133,4 +142,4 @@ const _default = (0, _elements.define)(class Combinator extends _occamlanguages.
|
|
|
133
142
|
}
|
|
134
143
|
});
|
|
135
144
|
|
|
136
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2NvbWJpbmF0b3IuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IEVsZW1lbnQsIGJyZWFrUG9pbnRVdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCB7IGFsbCB9IGZyb20gXCIuLi91dGlsaXRpZXMvY29udGludWF0aW9uXCI7XG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IGRlc2lzdCwgZGVjbGFyZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvc3RhdGVcIjtcbmltcG9ydCB7IGluc3RhbnRpYXRlQ29tYmluYXRvciB9IGZyb20gXCIuLi9wcm9jZXNzL2luc3RhbnRpYXRlXCI7XG5pbXBvcnQgeyBzdGF0ZW1lbnRGcm9tQ29tYmluYXRvck5vZGUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2VsZW1lbnRcIjtcbmltcG9ydCB7IHVuaWZ5U3RhdGVtZW50V2l0aENvbWJpbmF0b3IgfSBmcm9tIFwiLi4vcHJvY2Vzcy91bmlmeVwiO1xuaW1wb3J0IHsgdmFsaWRhdGVTdGF0ZW1lbnRBc0NvbWJpbmF0b3IgfSBmcm9tIFwiLi4vcHJvY2Vzcy92YWxpZGF0ZVwiO1xuaW1wb3J0IHsgYXR0ZW1wdCwgc2VyaWFsaXNlLCB1bnNlcmlhbGlzZSwgaW5zdGFudGlhdGUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2NvbnRleHRcIjtcblxuY29uc3QgeyBicmVha1BvaW50RnJvbUpTT04sIGJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OIH0gPSBicmVha1BvaW50VXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgQ29tYmluYXRvciBleHRlbmRzIEVsZW1lbnQge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHN0YXRlbWVudCkge1xuICAgIHN1cGVyKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCk7XG5cbiAgICB0aGlzLnN0YXRlbWVudCA9IHN0YXRlbWVudDtcbiAgfVxuXG4gIGdldFN0YXRlbWVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZW1lbnQ7XG4gIH1cblxuICBnZXRDb21iaW5hdG9yeU5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIGNvbWJpbmF0b3JOb2RlID0gbm9kZTsgIC8vL1xuXG4gICAgcmV0dXJuIGNvbWJpbmF0b3JOb2RlO1xuICB9XG5cbiAgdmVyaWZ5KGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCB2ZXJpZmllcyA9IGZhbHNlO1xuXG4gICAgY29uc3QgY29tYmluYXRvclN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7Y29tYmluYXRvclN0cmluZ30nIGNvbWJpbmF0b3IuLi5gKTtcblxuICAgIGRlY2xhcmUoKHN0YXRlKSA9PiB7XG4gICAgICBkZXNpc3QoKHN0YXRlKSA9PiB7XG4gICAgICAgIGNvbnN0IHZhbGlkYXRlcyA9IHRoaXMudmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIChvY21iaW5hdG9yLCBjb250ZXh0KSA9PiB0cnVlKTtcblxuICAgICAgICBpZiAodmFsaWRhdGVzKSB7XG4gICAgICAgICAgdmVyaWZpZXMgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9LCBzdGF0ZSk7XG4gICAgfSk7XG5cbiAgICBpZiAodmVyaWZpZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtjb21iaW5hdG9yU3RyaW5nfScgY29tYmluYXRvci5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29udGludWF0aW9uKHZlcmlmaWVzLCBjb250ZXh0KTtcbiAgfVxuXG4gIHZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBsZXQgdmFsaWRhdGVzO1xuXG4gICAgY29uc3Qgc3BlY2lmaWNDb250ZXh0ID0gY29udGV4dCwgIC8vL1xuICAgICAgICAgIGNvbWJpbmF0b3JTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtjb21iaW5hdG9yU3RyaW5nfScgY29tYmluYXRvci4uLmApO1xuXG4gICAgY29uc3QgY29tYmluYXRvciA9IHRoaXM7XG5cbiAgICBhdHRlbXB0KChjb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCB2YWxpZGF0ZVN0YXRlbWVudEFzQ29tYmluYXRvciA9IHRoaXMudmFsaWRhdGVTdGF0ZW1lbnRBc0NvbWJpbmF0b3IuYmluZCh0aGlzKTtcblxuICAgICAgdmFsaWRhdGVzID0gYWxsKFtcbiAgICAgICAgdmFsaWRhdGVTdGF0ZW1lbnRBc0NvbWJpbmF0b3JcbiAgICAgIF0sIHN0YXRlLCBjb250ZXh0LCAoc3RhdGUsIGNvbnRleHQpID0+IHtcbiAgICAgICAgbGV0IHZhbGlkYXRlcztcblxuICAgICAgICBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0OyAgLy8vXG5cbiAgICAgICAgdmFsaWRhdGVzID0gY29udGludWF0aW9uKGNvbWJpbmF0b3IsIGNvbnRleHQpO1xuXG4gICAgICAgIHJldHVybiB2YWxpZGF0ZXM7XG4gICAgICB9KTtcblxuICAgICAgaWYgKHZhbGlkYXRlcykge1xuICAgICAgICB0aGlzLmNvbW1pdChjb250ZXh0KVxuICAgICAgfVxuICAgIH0sIGNvbnRleHQpO1xuXG4gICAgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dDsgIC8vL1xuXG4gICAgaWYgKHZhbGlkYXRlcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtjb21iaW5hdG9yU3RyaW5nfScgY29tYmluYXRvci5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsaWRhdGVzO1xuICB9XG5cbiAgdmFsaWRhdGVTdGF0ZW1lbnRBc0NvbWJpbmF0b3Ioc3RhdGUsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCBzdGF0ZW1lbnRWYWxpZGF0ZXNBc0NvbWJpbmF0b3I7XG5cbiAgICBjb25zdCBjb21iaW5hdG9yU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2NvbWJpbmF0b3JTdHJpbmd9JyBjb21iaW5hdG9yJ3Mgc3RhdGVtZW50Li4uYCk7XG5cbiAgICBzdGF0ZW1lbnRWYWxpZGF0ZXNBc0NvbWJpbmF0b3IgPSB2YWxpZGF0ZVN0YXRlbWVudEFzQ29tYmluYXRvcih0aGlzLnN0YXRlbWVudCwgY29udGV4dCwgKGNvbnRleHQpID0+IHtcbiAgICAgIGxldCB2YWxpZGF0ZXM7XG5cbiAgICAgIHZhbGlkYXRlcyA9IGNvbnRpbnVhdGlvbihzdGF0ZSwgY29udGV4dCk7XG5cbiAgICAgIHJldHVybiB2YWxpZGF0ZXM7XG4gICAgfSk7XG5cbiAgICBpZiAoc3RhdGVtZW50VmFsaWRhdGVzQXNDb21iaW5hdG9yKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2NvbWJpbmF0b3JTdHJpbmd9JyBjb21iaW5hdG9yJ3Mgc3RhdGVtZW50LmApO1xuICAgIH1cblxuICAgIHJldHVybiBzdGF0ZW1lbnRWYWxpZGF0ZXNBc0NvbWJpbmF0b3I7XG4gIH1cblxuICB1bmlmeVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCBzdGF0ZW1lbnRVbmlmaWVzID0gZmFsc2U7XG5cbiAgICBjb25zdCBzdGF0ZW1lbnRTdHJpbmcgPSBzdGF0ZW1lbnQuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgY29tYmluYXRvclN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgd2l0aCB0aGUgJyR7Y29tYmluYXRvclN0cmluZ30nIGNvbWJpbmF0b3IuLi5gKTtcblxuICAgIGNvbnN0IGNvbWJpbmF0b3IgPSB0aGlzLCAvLy9cbiAgICAgICAgICBjb21iaW5hdG9yQ29udGV4dCA9IGNvbWJpbmF0b3IuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGdlbmVyYWxDb250ZXh0ID0gY29tYmluYXRvckNvbnRleHQsIC8vL1xuICAgICAgICAgIHNwZWNpZmlDb250ZXh0ID0gY29udGV4dCxcbiAgICAgICAgICBzdGF0ZW1lbnRVbmlmaWVzV2l0aENvbWJpbmF0b3IgPSB1bmlmeVN0YXRlbWVudFdpdGhDb21iaW5hdG9yKHN0YXRlbWVudCwgY29tYmluYXRvciwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmlDb250ZXh0LCAoZ2VuZXJhbENvbnRleHQsIHNwZWNpZmlDb250ZXh0KSA9PiB7XG4gICAgICAgICAgICBsZXQgc3RhdGVtZW50VW5pZmllc1dpdGhDb21iaW5hdG9yO1xuXG4gICAgICAgICAgICBjb25zdCBjb250ZXh0ID0gc3BlY2lmaUNvbnRleHQ7IC8vL1xuXG4gICAgICAgICAgICBzdGF0ZW1lbnRVbmlmaWVzV2l0aENvbWJpbmF0b3IgPSBjb250aW51YXRpb24oc3RhdGVtZW50LCBjb250ZXh0KTtcblxuICAgICAgICAgICAgcmV0dXJuIHN0YXRlbWVudFVuaWZpZXNXaXRoQ29tYmluYXRvcjtcbiAgICAgICAgICB9KTtcblxuICAgIGlmIChzdGF0ZW1lbnRVbmlmaWVzV2l0aENvbWJpbmF0b3IpIHtcbiAgICAgIHN0YXRlbWVudFVuaWZpZXMgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChzdGF0ZW1lbnRVbmlmaWVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgd2l0aCB0aGUgJyR7Y29tYmluYXRvclN0cmluZ30nIGNvbWJpbmF0b3IuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0YXRlbWVudFVuaWZpZXM7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgcmV0dXJuIHNlcmlhbGlzZSgoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3Qgc3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTtcblxuICAgICAgbGV0IGJyZWFrUG9pbnQ7XG5cbiAgICAgIGJyZWFrUG9pbnQgPSB0aGlzLmdldEJyZWFrUG9pbnQoKTtcblxuICAgICAgY29uc3QgYnJlYWtQb2ludEpTT04gPSBicmVha1BvaW50VG9CcmVha1BvaW50SlNPTihicmVha1BvaW50KTtcblxuICAgICAgYnJlYWtQb2ludCA9IGJyZWFrUG9pbnRKU09OOyAgLy8vXG5cbiAgICAgIGNvbnN0IGpzb24gPSB7XG4gICAgICAgIGNvbnRleHQsXG4gICAgICAgIHN0cmluZyxcbiAgICAgICAgYnJlYWtQb2ludFxuICAgICAgfTtcblxuICAgICAgcmV0dXJuIGpzb247XG4gICAgfSwgY29udGV4dCk7XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiQ29tYmluYXRvclwiO1xuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gICAgbGV0IGNvbWJpbmF0b3I7XG5cbiAgICBpbnN0YW50aWF0ZSgoY29udGV4dCkgPT4ge1xuICAgICAgdW5zZXJpYWxpc2UoKGpzb24sIGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgICAgIGNvbWJpbmF0b3JOb2RlID0gaW5zdGFudGlhdGVDb21iaW5hdG9yKHN0cmluZywgY29udGV4dCksXG4gICAgICAgICAgICAgIG5vZGUgPSBjb21iaW5hdG9yTm9kZSwgIC8vL1xuICAgICAgICAgICAgICBicmVha1BvaW50ID0gYnJlYWtQb2ludEZyb21KU09OKGpzb24pLFxuICAgICAgICAgICAgICBzdGF0ZW1lbnQgPSBzdGF0ZW1lbnRGcm9tQ29tYmluYXRvck5vZGUoY29tYmluYXRvck5vZGUsIGNvbnRleHQpO1xuXG4gICAgICAgIGNvbWJpbmF0b3IgPSBuZXcgQ29tYmluYXRvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHN0YXRlbWVudCk7XG4gICAgICB9LCBqc29uLCBjb250ZXh0KTtcbiAgICB9LCBjb250ZXh0KTtcblxuICAgIHJldHVybiBjb21iaW5hdG9yO1xuICB9XG59KTtcbiJdLCJuYW1lcyI6WyJicmVha1BvaW50RnJvbUpTT04iLCJicmVha1BvaW50VG9CcmVha1BvaW50SlNPTiIsImJyZWFrUG9pbnRVdGlsaXRpZXMiLCJkZWZpbmUiLCJDb21iaW5hdG9yIiwiRWxlbWVudCIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsInN0YXRlbWVudCIsImdldFN0YXRlbWVudCIsImdldENvbWJpbmF0b3J5Tm9kZSIsImdldE5vZGUiLCJjb21iaW5hdG9yTm9kZSIsInZlcmlmeSIsImNvbnRpbnVhdGlvbiIsInZlcmlmaWVzIiwiY29tYmluYXRvclN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwiZGVjbGFyZSIsInN0YXRlIiwiZGVzaXN0IiwidmFsaWRhdGVzIiwidmFsaWRhdGUiLCJvY21iaW5hdG9yIiwiZGVidWciLCJzcGVjaWZpY0NvbnRleHQiLCJjb21iaW5hdG9yIiwiYXR0ZW1wdCIsInZhbGlkYXRlU3RhdGVtZW50QXNDb21iaW5hdG9yIiwiYmluZCIsImFsbCIsImNvbW1pdCIsInN0YXRlbWVudFZhbGlkYXRlc0FzQ29tYmluYXRvciIsInVuaWZ5U3RhdGVtZW50Iiwic3RhdGVtZW50VW5pZmllcyIsInN0YXRlbWVudFN0cmluZyIsImNvbWJpbmF0b3JDb250ZXh0IiwiZ2V0Q29udGV4dCIsImdlbmVyYWxDb250ZXh0Iiwic3BlY2lmaUNvbnRleHQiLCJzdGF0ZW1lbnRVbmlmaWVzV2l0aENvbWJpbmF0b3IiLCJ1bmlmeVN0YXRlbWVudFdpdGhDb21iaW5hdG9yIiwidG9KU09OIiwic2VyaWFsaXNlIiwiZ2V0QnJlYWtQb2ludCIsImJyZWFrUG9pbnRKU09OIiwianNvbiIsIm5hbWUiLCJmcm9tSlNPTiIsImluc3RhbnRpYXRlIiwidW5zZXJpYWxpc2UiLCJpbnN0YW50aWF0ZUNvbWJpbmF0b3IiLCJzdGF0ZW1lbnRGcm9tQ29tYmluYXRvck5vZGUiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQWVBOzs7ZUFBQTs7O2dDQWI2Qzs4QkFFekI7MEJBQ0c7dUJBQ1M7NkJBQ007eUJBQ007dUJBQ0M7MEJBQ0M7eUJBQ2U7QUFFN0QsTUFBTSxFQUFFQSxrQkFBa0IsRUFBRUMsMEJBQTBCLEVBQUUsR0FBR0MsbUNBQW1CO01BRTlFLFdBQWVDLElBQUFBLGdCQUFNLEVBQUMsTUFBTUMsbUJBQW1CQyx1QkFBTztJQUNwRCxZQUFZQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxVQUFVLEVBQUVDLFNBQVMsQ0FBRTtRQUN4RCxLQUFLLENBQUNKLFNBQVNDLFFBQVFDLE1BQU1DO1FBRTdCLElBQUksQ0FBQ0MsU0FBUyxHQUFHQTtJQUNuQjtJQUVBQyxlQUFlO1FBQ2IsT0FBTyxJQUFJLENBQUNELFNBQVM7SUFDdkI7SUFFQUUscUJBQXFCO1FBQ25CLE1BQU1KLE9BQU8sSUFBSSxDQUFDSyxPQUFPLElBQ25CQyxpQkFBaUJOLE1BQU8sR0FBRztRQUVqQyxPQUFPTTtJQUNUO0lBRUFDLE9BQU9ULE9BQU8sRUFBRVUsWUFBWSxFQUFFO1FBQzVCLElBQUlDLFdBQVc7UUFFZixNQUFNQyxtQkFBbUIsSUFBSSxDQUFDQyxTQUFTLElBQUssR0FBRztRQUUvQ2IsUUFBUWMsS0FBSyxDQUFDLENBQUMsZUFBZSxFQUFFRixpQkFBaUIsZUFBZSxDQUFDO1FBRWpFRyxJQUFBQSxjQUFPLEVBQUMsQ0FBQ0M7WUFDUEMsSUFBQUEsYUFBTSxFQUFDLENBQUNEO2dCQUNOLE1BQU1FLFlBQVksSUFBSSxDQUFDQyxRQUFRLENBQUNILE9BQU9oQixTQUFTLENBQUNvQixZQUFZcEIsVUFBWTtnQkFFekUsSUFBSWtCLFdB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
|
|
145
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2NvbWJpbmF0b3IuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IEVsZW1lbnQsIGJyZWFrUG9pbnRVdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCB7IGFsbCB9IGZyb20gXCIuLi91dGlsaXRpZXMvY29udGludWF0aW9uXCI7XG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IGRlc2lzdCwgZGVjbGFyZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvc3RhdGVcIjtcbmltcG9ydCB7IGluc3RhbnRpYXRlQ29tYmluYXRvciB9IGZyb20gXCIuLi9wcm9jZXNzL2luc3RhbnRpYXRlXCI7XG5pbXBvcnQgeyBzdGF0ZW1lbnRGcm9tQ29tYmluYXRvck5vZGUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2VsZW1lbnRcIjtcbmltcG9ydCB7IHVuaWZ5U3RhdGVtZW50V2l0aENvbWJpbmF0b3IgfSBmcm9tIFwiLi4vcHJvY2Vzcy91bmlmeVwiO1xuaW1wb3J0IHsgdmFsaWRhdGVTdGF0ZW1lbnRBc0NvbWJpbmF0b3IgfSBmcm9tIFwiLi4vcHJvY2Vzcy92YWxpZGF0ZVwiO1xuaW1wb3J0IHsgYXR0ZW1wdCwgc2VyaWFsaXNlLCB1bnNlcmlhbGlzZSwgaW5zdGFudGlhdGUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2NvbnRleHRcIjtcblxuY29uc3QgeyBicmVha1BvaW50RnJvbUpTT04sIGJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OIH0gPSBicmVha1BvaW50VXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgQ29tYmluYXRvciBleHRlbmRzIEVsZW1lbnQge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHN0YXRlbWVudCkge1xuICAgIHN1cGVyKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCk7XG5cbiAgICB0aGlzLnN0YXRlbWVudCA9IHN0YXRlbWVudDtcbiAgfVxuXG4gIGdldFN0YXRlbWVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZW1lbnQ7XG4gIH1cblxuICBnZXRDb21iaW5hdG9yeU5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIGNvbWJpbmF0b3JOb2RlID0gbm9kZTsgIC8vL1xuXG4gICAgcmV0dXJuIGNvbWJpbmF0b3JOb2RlO1xuICB9XG5cbiAgaXNNYWxmb3JtZWQoKSB7XG4gICAgY29uc3QgY29tYmluYXRvcnlOb2RlID0gdGhpcy5nZXRDb21iaW5hdG9yeU5vZGUoKSxcbiAgICAgICAgICBtYWxmb3JtZWQgPSBjb21iaW5hdG9yeU5vZGUuaXNNYWxmb3JtZWQoKTtcblxuICAgIHJldHVybiBtYWxmb3JtZWQ7XG4gIH1cblxuICB2ZXJpZnkoY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgbGV0IHZlcmlmaWVzID0gZmFsc2U7XG5cbiAgICBjb25zdCBjb21iaW5hdG9yU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtjb21iaW5hdG9yU3RyaW5nfScgY29tYmluYXRvci4uLmApO1xuXG4gICAgY29uc3QgbWFsZm9ybWVkID0gdGhpcy5pc01hbGZvcm1lZCgpO1xuXG4gICAgaWYgKG1hbGZvcm1lZCkge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgVW5hYmxlIHRvIHZlcmlmeSB0aGUgJyR7Y29tYmluYXRvclN0cmluZ30nIGNvbWJpbmF0b3IgYmVjYXVzZSBpdCBpcyBtYWxmb3JtZWQuYCk7XG5cbiAgICAgIHJldHVybiBjb250aW51YXRpb24odmVyaWZpZXMsIGNvbnRleHQpO1xuICAgIH1cblxuICAgIGRlY2xhcmUoKHN0YXRlKSA9PiB7XG4gICAgICBkZXNpc3QoKHN0YXRlKSA9PiB7XG4gICAgICAgIGNvbnN0IHZhbGlkYXRlcyA9IHRoaXMudmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIChvY21iaW5hdG9yLCBjb250ZXh0KSA9PiB0cnVlKTsgLy8vXG5cbiAgICAgICAgaWYgKHZhbGlkYXRlcykge1xuICAgICAgICAgIHZlcmlmaWVzID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSwgc3RhdGUpO1xuICAgIH0pO1xuXG4gICAgaWYgKHZlcmlmaWVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7Y29tYmluYXRvclN0cmluZ30nIGNvbWJpbmF0b3IuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbnRpbnVhdGlvbih2ZXJpZmllcywgY29udGV4dCk7XG4gIH1cblxuICB2YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgbGV0IHZhbGlkYXRlcztcblxuICAgIGNvbnN0IHNwZWNpZmljQ29udGV4dCA9IGNvbnRleHQsICAvLy9cbiAgICAgICAgICBjb21iaW5hdG9yU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7Y29tYmluYXRvclN0cmluZ30nIGNvbWJpbmF0b3IuLi5gKTtcblxuICAgIGNvbnN0IGNvbWJpbmF0b3IgPSB0aGlzO1xuXG4gICAgYXR0ZW1wdCgoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3QgdmFsaWRhdGVTdGF0ZW1lbnRBc0NvbWJpbmF0b3IgPSB0aGlzLnZhbGlkYXRlU3RhdGVtZW50QXNDb21iaW5hdG9yLmJpbmQodGhpcyk7XG5cbiAgICAgIHZhbGlkYXRlcyA9IGFsbChbXG4gICAgICAgIHZhbGlkYXRlU3RhdGVtZW50QXNDb21iaW5hdG9yXG4gICAgICBdLCBzdGF0ZSwgY29udGV4dCwgKHN0YXRlLCBjb250ZXh0KSA9PiB7XG4gICAgICAgIGxldCB2YWxpZGF0ZXM7XG5cbiAgICAgICAgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dDsgIC8vL1xuXG4gICAgICAgIHZhbGlkYXRlcyA9IGNvbnRpbnVhdGlvbihjb21iaW5hdG9yLCBjb250ZXh0KTtcblxuICAgICAgICByZXR1cm4gdmFsaWRhdGVzO1xuICAgICAgfSk7XG5cbiAgICAgIGlmICh2YWxpZGF0ZXMpIHtcbiAgICAgICAgdGhpcy5jb21taXQoY29udGV4dClcbiAgICAgIH1cbiAgICB9LCBjb250ZXh0KTtcblxuICAgIGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQ7ICAvLy9cblxuICAgIGlmICh2YWxpZGF0ZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7Y29tYmluYXRvclN0cmluZ30nIGNvbWJpbmF0b3IuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbGlkYXRlcztcbiAgfVxuXG4gIHZhbGlkYXRlU3RhdGVtZW50QXNDb21iaW5hdG9yKHN0YXRlLCBjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBsZXQgc3RhdGVtZW50VmFsaWRhdGVzQXNDb21iaW5hdG9yO1xuXG4gICAgY29uc3QgY29tYmluYXRvclN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtjb21iaW5hdG9yU3RyaW5nfScgY29tYmluYXRvcidzIHN0YXRlbWVudC4uLmApO1xuXG4gICAgc3RhdGVtZW50VmFsaWRhdGVzQXNDb21iaW5hdG9yID0gdmFsaWRhdGVTdGF0ZW1lbnRBc0NvbWJpbmF0b3IodGhpcy5zdGF0ZW1lbnQsIGNvbnRleHQsIChjb250ZXh0KSA9PiB7XG4gICAgICBsZXQgdmFsaWRhdGVzO1xuXG4gICAgICB2YWxpZGF0ZXMgPSBjb250aW51YXRpb24oc3RhdGUsIGNvbnRleHQpO1xuXG4gICAgICByZXR1cm4gdmFsaWRhdGVzO1xuICAgIH0pO1xuXG4gICAgaWYgKHN0YXRlbWVudFZhbGlkYXRlc0FzQ29tYmluYXRvcikge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtjb21iaW5hdG9yU3RyaW5nfScgY29tYmluYXRvcidzIHN0YXRlbWVudC5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3RhdGVtZW50VmFsaWRhdGVzQXNDb21iaW5hdG9yO1xuICB9XG5cbiAgdW5pZnlTdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBsZXQgc3RhdGVtZW50VW5pZmllcyA9IGZhbHNlO1xuXG4gICAgY29uc3Qgc3RhdGVtZW50U3RyaW5nID0gc3RhdGVtZW50LmdldFN0cmluZygpLFxuICAgICAgICAgIGNvbWJpbmF0b3JTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IHdpdGggdGhlICcke2NvbWJpbmF0b3JTdHJpbmd9JyBjb21iaW5hdG9yLi4uYCk7XG5cbiAgICBjb25zdCBjb21iaW5hdG9yID0gdGhpcywgLy8vXG4gICAgICAgICAgZ2VuZXJhbENvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSwgLy8vXG4gICAgICAgICAgc3BlY2lmaUNvbnRleHQgPSBjb250ZXh0LFxuICAgICAgICAgIHN0YXRlbWVudFVuaWZpZXNXaXRoQ29tYmluYXRvciA9IHVuaWZ5U3RhdGVtZW50V2l0aENvbWJpbmF0b3Ioc3RhdGVtZW50LCBjb21iaW5hdG9yLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaUNvbnRleHQsIChnZW5lcmFsQ29udGV4dCwgc3BlY2lmaUNvbnRleHQpID0+IHtcbiAgICAgICAgICAgIGxldCBzdGF0ZW1lbnRVbmlmaWVzV2l0aENvbWJpbmF0b3I7XG5cbiAgICAgICAgICAgIGNvbnN0IGNvbnRleHQgPSBzcGVjaWZpQ29udGV4dDsgLy8vXG5cbiAgICAgICAgICAgIHN0YXRlbWVudFVuaWZpZXNXaXRoQ29tYmluYXRvciA9IGNvbnRpbnVhdGlvbihzdGF0ZW1lbnQsIGNvbnRleHQpO1xuXG4gICAgICAgICAgICByZXR1cm4gc3RhdGVtZW50VW5pZmllc1dpdGhDb21iaW5hdG9yO1xuICAgICAgICAgIH0pO1xuXG4gICAgaWYgKHN0YXRlbWVudFVuaWZpZXNXaXRoQ29tYmluYXRvcikge1xuICAgICAgc3RhdGVtZW50VW5pZmllcyA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHN0YXRlbWVudFVuaWZpZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCB3aXRoIHRoZSAnJHtjb21iaW5hdG9yU3RyaW5nfScgY29tYmluYXRvci5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3RhdGVtZW50VW5pZmllcztcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICByZXR1cm4gc2VyaWFsaXNlKChjb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCBzdHJpbmcgPSB0aGlzLmdldFN0cmluZygpO1xuXG4gICAgICBsZXQgYnJlYWtQb2ludDtcblxuICAgICAgYnJlYWtQb2ludCA9IHRoaXMuZ2V0QnJlYWtQb2ludCgpO1xuXG4gICAgICBjb25zdCBicmVha1BvaW50SlNPTiA9IGJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OKGJyZWFrUG9pbnQpO1xuXG4gICAgICBicmVha1BvaW50ID0gYnJlYWtQb2ludEpTT047ICAvLy9cblxuICAgICAgY29uc3QganNvbiA9IHtcbiAgICAgICAgY29udGV4dCxcbiAgICAgICAgc3RyaW5nLFxuICAgICAgICBicmVha1BvaW50XG4gICAgICB9O1xuXG4gICAgICByZXR1cm4ganNvbjtcbiAgICB9LCBjb250ZXh0KTtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJDb21iaW5hdG9yXCI7XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgICBsZXQgY29tYmluYXRvcjtcblxuICAgIGluc3RhbnRpYXRlKChjb250ZXh0KSA9PiB7XG4gICAgICB1bnNlcmlhbGlzZSgoanNvbiwgY29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCB7IHN0cmluZyB9ID0ganNvbixcbiAgICAgICAgICAgICAgY29tYmluYXRvck5vZGUgPSBpbnN0YW50aWF0ZUNvbWJpbmF0b3Ioc3RyaW5nLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgbm9kZSA9IGNvbWJpbmF0b3JOb2RlLCAgLy8vXG4gICAgICAgICAgICAgIGJyZWFrUG9pbnQgPSBicmVha1BvaW50RnJvbUpTT04oanNvbiksXG4gICAgICAgICAgICAgIHN0YXRlbWVudCA9IHN0YXRlbWVudEZyb21Db21iaW5hdG9yTm9kZShjb21iaW5hdG9yTm9kZSwgY29udGV4dCk7XG5cbiAgICAgICAgY29tYmluYXRvciA9IG5ldyBDb21iaW5hdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgc3RhdGVtZW50KTtcbiAgICAgIH0sIGpzb24sIGNvbnRleHQpO1xuICAgIH0sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGNvbWJpbmF0b3I7XG4gIH1cbn0pO1xuIl0sIm5hbWVzIjpbImJyZWFrUG9pbnRGcm9tSlNPTiIsImJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OIiwiYnJlYWtQb2ludFV0aWxpdGllcyIsImRlZmluZSIsIkNvbWJpbmF0b3IiLCJFbGVtZW50IiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJicmVha1BvaW50Iiwic3RhdGVtZW50IiwiZ2V0U3RhdGVtZW50IiwiZ2V0Q29tYmluYXRvcnlOb2RlIiwiZ2V0Tm9kZSIsImNvbWJpbmF0b3JOb2RlIiwiaXNNYWxmb3JtZWQiLCJjb21iaW5hdG9yeU5vZGUiLCJtYWxmb3JtZWQiLCJ2ZXJpZnkiLCJjb250aW51YXRpb24iLCJ2ZXJpZmllcyIsImNvbWJpbmF0b3JTdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsImRlYnVnIiwiZGVjbGFyZSIsInN0YXRlIiwiZGVzaXN0IiwidmFsaWRhdGVzIiwidmFsaWRhdGUiLCJvY21iaW5hdG9yIiwic3BlY2lmaWNDb250ZXh0IiwiY29tYmluYXRvciIsImF0dGVtcHQiLCJ2YWxpZGF0ZVN0YXRlbWVudEFzQ29tYmluYXRvciIsImJpbmQiLCJhbGwiLCJjb21taXQiLCJzdGF0ZW1lbnRWYWxpZGF0ZXNBc0NvbWJpbmF0b3IiLCJ1bmlmeVN0YXRlbWVudCIsInN0YXRlbWVudFVuaWZpZXMiLCJzdGF0ZW1lbnRTdHJpbmciLCJnZW5lcmFsQ29udGV4dCIsImdldENvbnRleHQiLCJzcGVjaWZpQ29udGV4dCIsInN0YXRlbWVudFVuaWZpZXNXaXRoQ29tYmluYXRvciIsInVuaWZ5U3RhdGVtZW50V2l0aENvbWJpbmF0b3IiLCJ0b0pTT04iLCJzZXJpYWxpc2UiLCJnZXRCcmVha1BvaW50IiwiYnJlYWtQb2ludEpTT04iLCJqc29uIiwibmFtZSIsImZyb21KU09OIiwiaW5zdGFudGlhdGUiLCJ1bnNlcmlhbGlzZSIsImluc3RhbnRpYXRlQ29tYmluYXRvciIsInN0YXRlbWVudEZyb21Db21iaW5hdG9yTm9kZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBZUE7OztlQUFBOzs7Z0NBYjZDOzhCQUV6QjswQkFDRzt1QkFDUzs2QkFDTTt5QkFDTTt1QkFDQzswQkFDQzt5QkFDZTtBQUU3RCxNQUFNLEVBQUVBLGtCQUFrQixFQUFFQywwQkFBMEIsRUFBRSxHQUFHQyxtQ0FBbUI7TUFFOUUsV0FBZUMsSUFBQUEsZ0JBQU0sRUFBQyxNQUFNQyxtQkFBbUJDLHVCQUFPO0lBQ3BELFlBQVlDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxJQUFJLEVBQUVDLFVBQVUsRUFBRUMsU0FBUyxDQUFFO1FBQ3hELEtBQUssQ0FBQ0osU0FBU0MsUUFBUUMsTUFBTUM7UUFFN0IsSUFBSSxDQUFDQyxTQUFTLEdBQUdBO0lBQ25CO0lBRUFDLGVBQWU7UUFDYixPQUFPLElBQUksQ0FBQ0QsU0FBUztJQUN2QjtJQUVBRSxxQkFBcUI7UUFDbkIsTUFBTUosT0FBTyxJQUFJLENBQUNLLE9BQU8sSUFDbkJDLGlCQUFpQk4sTUFBTyxHQUFHO1FBRWpDLE9BQU9NO0lBQ1Q7SUFFQUMsY0FBYztRQUNaLE1BQU1DLGtCQUFrQixJQUFJLENBQUNKLGtCQUFrQixJQUN6Q0ssWUFBWUQsZ0JBQWdCRCxXQUFXO1FBRTdDLE9BQU9FO0lBQ1Q7SUFFQUMsT0FBT1osT0FBTyxFQUFFYSxZQUFZLEVBQUU7UUFDNUIsSUFBSUMsV0FBVztRQUVmLE1BQU1DLG1CQUFtQixJQUFJLENBQUNDLFNBQVMsSUFBSyxHQUFHO1FBRS9DaEIsUUFBUWlCLEtBQUssQ0FBQyxDQUFDLGVBQWUsRUFBRUYsaUJBQWlCLGVBQWUsQ0FBQztRQUVqRSxNQUFNSixZQUFZLElBQUksQ0FBQ0YsV0FBVztRQUVsQyxJQUFJRSxXQUFXO1lBQ2JYLFFBQVFrQixLQUFLLENBQUMsQ0FBQyxzQkFBc0IsRUFBRUgsaUJBQWlCLHFDQUFxQyxDQUFDO1lBRTlGLE9BQU9GLGFBQWFDLFVBQVVkO1FBQ2hDO1FBRUFtQixJQUFBQSxjQUFPLEVBQUMsQ0FBQ0M7WUFDUEMsSUFBQUEsYUFBTSxFQUFDLENBQUNEO2dCQUNOLE1BQU1FLFlBQVksSUFBSSxDQUFDQyxRQUFRLENBQUNILE9BQU9wQixTQUFTLENBQUN3QixZQUFZeEIsVUFBWSxPQUFPLEdBQUc7Z0JBRW5GLElBQUlzQixXQUFXO29CQUNiUixXQUFXO2dCQUNiO1lBQ0YsR0FBR007UUFDTDtRQUVBLElBQUlOLFVBQVU7WUFDWmQsUUFBUWtCLEtBQUssQ0FBQyxDQUFDLGlCQUFpQixFQUFFSCxpQkFBaUIsYUFBYSxDQUFDO1FBQ25FO1FBRUEsT0FBT0YsYUFBYUMsVUFBVWQ7SUFDaEM7SUFFQXVCLFNBQVNILEtBQUssRUFBRXBCLE9BQU8sRUFBRWEsWUFBWSxFQUFFO1FBQ3JDLElBQUlTO1FBRUosTUFBTUcsa0JBQWtCekIsU0FDbEJlLG1CQUFtQixJQUFJLENBQUNDLFNBQVMsSUFBSyxHQUFHO1FBRS9DaEIsUUFBUWlCLEtBQUssQ0FBQyxDQUFDLGdCQUFnQixFQUFFRixpQkFBaUIsZUFBZSxDQUFDO1FBRWxFLE1BQU1XLGFBQWEsSUFBSTtRQUV2QkMsSUFBQUEsZ0JBQU8sRUFBQyxDQUFDM0I7WUFDUCxNQUFNNEIsZ0NBQWdDLElBQUksQ0FBQ0EsNkJBQTZCLENBQUNDLElBQUksQ0FBQyxJQUFJO1lBRWxGUCxZQUFZUSxJQUFBQSxpQkFBRyxFQUFDO2dCQUNkRjthQUNELEVBQUVSLE9BQU9wQixTQUFTLENBQUNvQixPQUFPcEI7Z0JBQ3pCLElBQUlzQjtnQkFFSnRCLFVBQVV5QixpQkFBa0IsR0FBRztnQkFFL0JILFlBQVlULGFBQWFhLFlBQVkxQjtnQkFFckMsT0FBT3NCO1lBQ1Q7WUFFQSxJQUFJQSxXQUFXO2dCQUNiLElBQUksQ0FBQ1MsTUFBTSxDQUFDL0I7WUFDZDtRQUNGLEdBQUdBO1FBRUhBLFVBQVV5QixpQkFBa0IsR0FBRztRQUUvQixJQUFJSCxXQUFXO1lBQ2J0QixRQUFRa0IsS0FBSyxDQUFDLENBQUMsa0JBQWtCLEVBQUVILGlCQUFpQixhQUFhLENBQUM7UUFDcEU7UUFFQSxPQUFPTztJQUNUO0lBRUFNLDhCQUE4QlIsS0FBSyxFQUFFcEIsT0FBTyxFQUFFYSxZQUFZLEVBQUU7UUFDMUQsSUFBSW1CO1FBRUosTUFBTWpCLG1CQUFtQixJQUFJLENBQUNDLFNBQVM7UUFFdkNoQixRQUFRaUIsS0FBSyxDQUFDLENBQUMsZ0JBQWdCLEVBQUVGLGlCQUFpQiwyQkFBMkIsQ0FBQztRQUU5RWlCLGlDQUFpQ0osSUFBQUEsdUNBQTZCLEVBQUMsSUFBSSxDQUFDeEIsU0FBUyxFQUFFSixTQUFTLENBQUNBO1lBQ3ZGLElBQUlzQjtZQUVKQSxZQUFZVCxhQUFhTyxPQUFPcEI7WUFFaEMsT0FBT3NCO1FBQ1Q7UUFFQSxJQUFJVSxnQ0FBZ0M7WUFDbENoQyxRQUFRa0IsS0FBSyxDQUFDLENBQUMsa0JBQWtCLEVBQUVILGlCQUFpQix5QkFBeUIsQ0FBQztRQUNoRjtRQUVBLE9BQU9pQjtJQUNUO0lBRUFDLGVBQWU3QixTQUFTLEVBQUVKLE9BQU8sRUFBRWEsWUFBWSxFQUFFO1FBQy9DLElBQUlxQixtQkFBbUI7UUFFdkIsTUFBTUMsa0JBQWtCL0IsVUFBVVksU0FBUyxJQUNyQ0QsbUJBQW1CLElBQUksQ0FBQ0MsU0FBUyxJQUFLLEdBQUc7UUFFL0NoQixRQUFRaUIsS0FBSyxDQUFDLENBQUMsY0FBYyxFQUFFa0IsZ0JBQWdCLHNCQUFzQixFQUFFcEIsaUJBQWlCLGVBQWUsQ0FBQztRQUV4RyxNQUFNVyxhQUFhLElBQUksRUFDakJVLGlCQUFpQixJQUFJLENBQUNDLFVBQVUsSUFDaENDLGlCQUFpQnRDLFNBQ2pCdUMsaUNBQWlDQyxJQUFBQSxtQ0FBNEIsRUFBQ3BDLFdBQVdzQixZQUFZVSxnQkFBZ0JFLGdCQUFnQixDQUFDRixnQkFBZ0JFO1lBQ3BJLElBQUlDO1lBRUosTUFBTXZDLFVBQVVzQyxnQkFBZ0IsR0FBRztZQUVuQ0MsaUNBQWlDMUIsYUFBYVQsV0FBV0o7WUFFekQsT0FBT3VDO1FBQ1Q7UUFFTixJQUFJQSxnQ0FBZ0M7WUFDbENMLG1CQUFtQjtRQUNyQjtRQUVBLElBQUlBLGtCQUFrQjtZQUNwQmxDLFFBQVFrQixLQUFLLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRWlCLGdCQUFnQixzQkFBc0IsRUFBRXBCLGlCQUFpQixhQUFhLENBQUM7UUFDMUc7UUFFQSxPQUFPbUI7SUFDVDtJQUVBTyxTQUFTO1FBQ1AsTUFBTXpDLFVBQVUsSUFBSSxDQUFDcUMsVUFBVTtRQUUvQixPQUFPSyxJQUFBQSxrQkFBUyxFQUFDLENBQUMxQztZQUNoQixNQUFNQyxTQUFTLElBQUksQ0FBQ2UsU0FBUztZQUU3QixJQUFJYjtZQUVKQSxhQUFhLElBQUksQ0FBQ3dDLGFBQWE7WUFFL0IsTUFBTUMsaUJBQWlCakQsMkJBQTJCUTtZQUVsREEsYUFBYXlDLGdCQUFpQixHQUFHO1lBRWpDLE1BQU1DLE9BQU87Z0JBQ1g3QztnQkFDQUM7Z0JBQ0FFO1lBQ0Y7WUFFQSxPQUFPMEM7UUFDVCxHQUFHN0M7SUFDTDtJQUVBLE9BQU84QyxPQUFPLGFBQWE7SUFFM0IsT0FBT0MsU0FBU0YsSUFBSSxFQUFFN0MsT0FBTyxFQUFFO1FBQzdCLElBQUkwQjtRQUVKc0IsSUFBQUEsb0JBQVcsRUFBQyxDQUFDaEQ7WUFDWGlELElBQUFBLG9CQUFXLEVBQUMsQ0FBQ0osTUFBTTdDO2dCQUNqQixNQUFNLEVBQUVDLE1BQU0sRUFBRSxHQUFHNEMsTUFDYnJDLGlCQUFpQjBDLElBQUFBLGtDQUFxQixFQUFDakQsUUFBUUQsVUFDL0NFLE9BQU9NLGdCQUNQTCxhQUFhVCxtQkFBbUJtRCxPQUNoQ3pDLFlBQVkrQyxJQUFBQSxvQ0FBMkIsRUFBQzNDLGdCQUFnQlI7Z0JBRTlEMEIsYUFBYSxJQUFJNUIsV0FBV0UsU0FBU0MsUUFBUUMsTUFBTUMsWUFBWUM7WUFDakUsR0FBR3lDLE1BQU03QztRQUNYLEdBQUdBO1FBRUgsT0FBTzBCO0lBQ1Q7QUFDRiJ9
|
|
@@ -10,8 +10,8 @@ Object.defineProperty(exports, "default", {
|
|
|
10
10
|
});
|
|
11
11
|
const _occamlanguages = require("occam-languages");
|
|
12
12
|
const _elements = require("../elements");
|
|
13
|
-
const _continuation = require("../utilities/continuation");
|
|
14
13
|
const _state = require("../utilities/state");
|
|
14
|
+
const _continuation = require("../utilities/continuation");
|
|
15
15
|
const _type = require("../utilities/type");
|
|
16
16
|
const _instantiate = require("../process/instantiate");
|
|
17
17
|
const _element = require("../utilities/element");
|
|
@@ -60,13 +60,22 @@ const _default = (0, _elements.define)(class Constructor extends _occamlanguages
|
|
|
60
60
|
setType(type) {
|
|
61
61
|
this.type = type;
|
|
62
62
|
}
|
|
63
|
+
isMalformed() {
|
|
64
|
+
const constructorNode = this.getConstructorNode(), malformed = constructorNode.isMalformed();
|
|
65
|
+
return malformed;
|
|
66
|
+
}
|
|
63
67
|
verify(context, continuation) {
|
|
64
68
|
let verifies = false;
|
|
65
69
|
const includeType = false, constructorString = this.getString(includeType); ///
|
|
66
70
|
context.trace(`Verifying the '${constructorString}' constructor...`);
|
|
71
|
+
const malformed = this.isMalformed();
|
|
72
|
+
if (malformed) {
|
|
73
|
+
context.debug(`Unable to verify the '${constructorString}' constructor because it is malformed.`);
|
|
74
|
+
return continuation(verifies, context);
|
|
75
|
+
}
|
|
67
76
|
(0, _state.declare)((state)=>{
|
|
68
77
|
(0, _state.desist)((state)=>{
|
|
69
|
-
const validates = this.validate(state, context, (constructor, context)=>true);
|
|
78
|
+
const validates = this.validate(state, context, (constructor, context)=>true); ///
|
|
70
79
|
if (validates) {
|
|
71
80
|
verifies = true;
|
|
72
81
|
}
|
|
@@ -104,7 +113,7 @@ const _default = (0, _elements.define)(class Constructor extends _occamlanguages
|
|
|
104
113
|
validateTermAsVariable(state, context, continuation) {
|
|
105
114
|
let termValidatesAsVariable = false;
|
|
106
115
|
const hypothetical = this.isHypothetical();
|
|
107
|
-
if (
|
|
116
|
+
if (hypothetical) {
|
|
108
117
|
const includeType = false, constructorString = this.getString(includeType); ///
|
|
109
118
|
context.trace(`Validating the '${constructorString}' constructor's term as a variable...`);
|
|
110
119
|
termValidatesAsVariable = this.term.validateAsVariable(state, context, (term, context)=>{
|
|
@@ -139,65 +148,68 @@ const _default = (0, _elements.define)(class Constructor extends _occamlanguages
|
|
|
139
148
|
return termValidatesAsConstructor;
|
|
140
149
|
}
|
|
141
150
|
unifyTerm(term, context, continuation) {
|
|
142
|
-
let termUnifies
|
|
151
|
+
let termUnifies;
|
|
152
|
+
const termString = term.getString();
|
|
153
|
+
context.trace(`Unifying the '${termString}' term...`);
|
|
154
|
+
const unifyTermWithConstructor = this.unifyTermWithConstructor.bind(this), dischargeHypothesesGivenTerm = this.dischargeHypothesesGivenTerm.bind(this);
|
|
155
|
+
termUnifies = (0, _continuation.all)([
|
|
156
|
+
dischargeHypothesesGivenTerm,
|
|
157
|
+
unifyTermWithConstructor
|
|
158
|
+
], term, context, (term, context)=>{
|
|
159
|
+
let validates;
|
|
160
|
+
const provisional = this.type.isProvisional();
|
|
161
|
+
term.setProvisional(provisional);
|
|
162
|
+
term.setType(this.type);
|
|
163
|
+
validates = continuation(term, context);
|
|
164
|
+
return validates;
|
|
165
|
+
});
|
|
166
|
+
if (termUnifies) {
|
|
167
|
+
context.debug(`...unified the '${termString}' term.`);
|
|
168
|
+
}
|
|
169
|
+
return termUnifies;
|
|
170
|
+
}
|
|
171
|
+
unifyTermWithConstructor(term, context, continuation) {
|
|
172
|
+
let termUnifiesWithCConstructor;
|
|
143
173
|
const termString = term.getString(), includeType = true, constructorString = this.getString(includeType); ///
|
|
144
174
|
context.trace(`Unifying the '${termString}' term with the '${constructorString}' constructor...`);
|
|
145
|
-
const
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
term.setType(this.type);
|
|
152
|
-
termUnifiesWithConstructor = continuation(term, context);
|
|
153
|
-
return termUnifiesWithConstructor;
|
|
154
|
-
});
|
|
155
|
-
if (termUnifiesWithConstructor) {
|
|
156
|
-
hypothesesDischargesGivenTerm = true;
|
|
157
|
-
}
|
|
158
|
-
return hypothesesDischargesGivenTerm;
|
|
175
|
+
const constructor = this, generalContext = this.getContext(), specifiContext = context; ///
|
|
176
|
+
termUnifiesWithCConstructor = (0, _unify.unifyTermWithConstructor)(term, constructor, generalContext, specifiContext, (generalContext, specifiContext)=>{
|
|
177
|
+
let termUnifiesWithConstructor;
|
|
178
|
+
const context = specifiContext; ///
|
|
179
|
+
termUnifiesWithConstructor = continuation(term, context);
|
|
180
|
+
return termUnifiesWithConstructor;
|
|
159
181
|
});
|
|
160
|
-
if (
|
|
161
|
-
termUnifies = true;
|
|
162
|
-
}
|
|
163
|
-
if (termUnifies) {
|
|
182
|
+
if (termUnifiesWithCConstructor) {
|
|
164
183
|
context.debug(`...unified the '${termString}' term with the '${constructorString}' constructor.`);
|
|
165
184
|
}
|
|
166
|
-
return
|
|
185
|
+
return termUnifiesWithCConstructor;
|
|
167
186
|
}
|
|
168
187
|
dischargeHypothesesGivenTerm(term, context, continuation) {
|
|
169
188
|
let hypothesesDischargesGivenTerm;
|
|
170
189
|
const hypothetical = this.isHypothetical();
|
|
171
|
-
if (
|
|
172
|
-
hypothesesDischargesGivenTerm = continuation(context);
|
|
173
|
-
} else {
|
|
190
|
+
if (hypothetical) {
|
|
174
191
|
const constructorString = this.getString();
|
|
175
192
|
context.trace(`Discharing the '${constructorString}' constructor's hhypotheses...`);
|
|
176
193
|
const dischargeHypothesisGivenTerm = this.dischargeHypothesisGivenTerm.bind(this);
|
|
177
|
-
hypothesesDischargesGivenTerm = (0, _continuation.every)(this.hypotheses, term, context,
|
|
194
|
+
hypothesesDischargesGivenTerm = (0, _continuation.every)(this.hypotheses, dischargeHypothesisGivenTerm, term, context, continuation);
|
|
178
195
|
if (hypothesesDischargesGivenTerm) {
|
|
179
196
|
context.debug(`...discharged the '${constructorString}' constructor's hhypotheses.`);
|
|
180
197
|
}
|
|
198
|
+
} else {
|
|
199
|
+
hypothesesDischargesGivenTerm = continuation(term, context);
|
|
181
200
|
}
|
|
182
201
|
return hypothesesDischargesGivenTerm;
|
|
183
202
|
}
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
//
|
|
195
|
-
// if (hypothesisDischargesGivenTerm) {
|
|
196
|
-
// context.trace(`...discharges the '${constructorString}' constructor's '${hypothesisString}' hypothesis given the '${termString}' term.`);
|
|
197
|
-
// }
|
|
198
|
-
//
|
|
199
|
-
// return hypothesisDischargesGivenTerm;
|
|
200
|
-
// }
|
|
203
|
+
dischargeHypothesisGivenTerm(hypothesis, term, context, continuation) {
|
|
204
|
+
let hypothesisDischargesGivenTerm;
|
|
205
|
+
const termString = term.getString(), hypothesisString = hypothesis.getString(), constructorString = this.getString(); ///
|
|
206
|
+
context.trace(`Discharding the '${constructorString}' constructor's '${hypothesisString}' hypothesis given the '${termString}' term...`);
|
|
207
|
+
hypothesisDischargesGivenTerm = hypothesis.dischargeGivenTerm(term, context, continuation);
|
|
208
|
+
if (hypothesisDischargesGivenTerm) {
|
|
209
|
+
context.trace(`...discharges the '${constructorString}' constructor's '${hypothesisString}' hypothesis given the '${termString}' term.`);
|
|
210
|
+
}
|
|
211
|
+
return hypothesisDischargesGivenTerm;
|
|
212
|
+
}
|
|
201
213
|
toJSON() {
|
|
202
214
|
const context = this.getContext();
|
|
203
215
|
return (0, _context.serialise)((context)=>{
|
|
@@ -229,4 +241,4 @@ const _default = (0, _elements.define)(class Constructor extends _occamlanguages
|
|
|
229
241
|
}
|
|
230
242
|
});
|
|
231
243
|
|
|
232
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2NvbnN0cnVjdG9yLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBFbGVtZW50LCBicmVha1BvaW50VXRpbGl0aWVzIH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IGV2ZXJ5LCBleGlzdHMgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2NvbnRpbnVhdGlvblwiO1xuaW1wb3J0IHsgZGVjbGFyZSwgZGVzaXN0IH0gZnJvbSBcIi4uL3V0aWxpdGllcy9zdGF0ZVwiO1xuaW1wb3J0IHsgYmFzZVR5cGVGcm9tTm90aGluZyB9IGZyb20gXCIuLi91dGlsaXRpZXMvdHlwZVwiO1xuaW1wb3J0IHsgaW5zdGFudGlhdGVDb25zdHJ1Y3RvciB9IGZyb20gXCIuLi9wcm9jZXNzL2luc3RhbnRpYXRlXCI7XG5pbXBvcnQgeyB0ZXJtRnJvbUNvbnN0cnVjdG9yTm9kZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvZWxlbWVudFwiO1xuaW1wb3J0IHsgdW5pZnlUZXJtV2l0aENvbnN0cnVjdG9yIH0gZnJvbSBcIi4uL3Byb2Nlc3MvdW5pZnlcIjtcbmltcG9ydCB7IHZhbGlkYXRlVGVybUFzQ29uc3RydWN0b3IgfSBmcm9tIFwiLi4vcHJvY2Vzcy92YWxpZGF0ZVwiO1xuaW1wb3J0IHsgYXR0ZW1wdCwgc2VyaWFsaXNlLCB1bnNlcmlhbGlzZSwgaW5zdGFudGlhdGUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2NvbnRleHRcIjtcbmltcG9ydCB7IHR5cGVGcm9tSlNPTiwgdHlwZVRvVHlwZUpTT04sIGh5cG90aGVzZXNGcm9tSlNPTiwgaHlwb3RoZXNlc1RvSHlwb3RoZXNlc0pTT04gfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2pzb25cIjtcblxuY29uc3QgeyBicmVha1BvaW50RnJvbUpTT04sIGJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OIH0gPSBicmVha1BvaW50VXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgQ29uc3RydWN0b3IgZXh0ZW5kcyBFbGVtZW50IHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB0ZXJtLCB0eXBlLCBoeXBvdGhlc2VzKSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50KTtcblxuICAgIHRoaXMudGVybSA9IHRlcm07XG4gICAgdGhpcy50eXBlID0gdHlwZTtcbiAgICB0aGlzLmh5cG90aGVzZXMgPSBoeXBvdGhlc2VzO1xuICB9XG5cbiAgZ2V0VGVybSgpIHtcbiAgICByZXR1cm4gdGhpcy50ZXJtO1xuICB9XG5cbiAgZ2V0VHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy50eXBlO1xuICB9XG5cbiAgZ2V0SHlwb3RoZXNlcygpIHtcbiAgICByZXR1cm4gdGhpcy5oeXBvdGhlc2VzO1xuICB9XG5cbiAgc2V0SHlwb3RoZXNlcyhoeXBvdGhlc2VzKSB7XG4gICAgdGhpcy5oeXBvdGhlc2VzID0gaHlwb3RoZXNlcztcbiAgfVxuXG4gIGlzSHlwb3RoZXRpY2FsKCkge1xuICAgIGNvbnN0IGh5cG90aGVzZXNMZW5ndGggPSB0aGlzLmh5cG90aGVzZXMubGVuZ3RoLFxuICAgICAgICAgIGh5cG90aGV0aWNhbCA9IChoeXBvdGhlc2VzTGVuZ3RoID4gMCk7XG5cbiAgICByZXR1cm4gaHlwb3RoZXRpY2FsO1xuICB9XG5cbiAgZ2V0Q29uc3RydWN0b3JOb2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBjb25zdHJ1Y3Rvck5vZGUgPSBub2RlOyAgLy8vXG5cbiAgICByZXR1cm4gY29uc3RydWN0b3JOb2RlO1xuICB9XG5cbiAgZ2V0U3RyaW5nKGluY2x1ZGVUeXBlID0gdHJ1ZSkge1xuICAgIGxldCBzdHJpbmc7XG5cbiAgICBpZiAoaW5jbHVkZVR5cGUpIHtcbiAgICAgIGNvbnN0IHRlcm1TdHJpbmcgPSB0aGlzLnRlcm0uZ2V0U3RyaW5nKCksXG4gICAgICAgICAgICB0eXBlU3RyaW5nID0gdGhpcy50eXBlLmdldFN0cmluZygpO1xuXG4gICAgICBzdHJpbmcgPSBgJHt0ZXJtU3RyaW5nfS4ke3R5cGVTdHJpbmd9YDtcbiAgICB9IGVsc2Uge1xuICAgICAgc3RyaW5nID0gc3VwZXIuZ2V0U3RyaW5nKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0cmluZztcbiAgfVxuXG4gIHNldFR5cGUodHlwZSkge1xuICAgIHRoaXMudHlwZSA9IHR5cGU7XG4gIH1cblxuICB2ZXJpZnkoY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgbGV0IHZlcmlmaWVzID0gZmFsc2U7XG5cbiAgICBjb25zdCBpbmNsdWRlVHlwZSA9IGZhbHNlLFxuICAgICAgICAgIGNvbnN0cnVjdG9yU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoaW5jbHVkZVR5cGUpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke2NvbnN0cnVjdG9yU3RyaW5nfScgY29uc3RydWN0b3IuLi5gKTtcblxuICAgIGRlY2xhcmUoKHN0YXRlKSA9PiB7XG4gICAgICBkZXNpc3QoKHN0YXRlKSA9PiB7XG4gICAgICAgIGNvbnN0IHZhbGlkYXRlcyA9IHRoaXMudmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIChjb25zdHJ1Y3RvciwgY29udGV4dCkgPT4gdHJ1ZSk7XG5cbiAgICAgICAgaWYgKHZhbGlkYXRlcykge1xuICAgICAgICAgIHZlcmlmaWVzID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSwgc3RhdGUpO1xuICAgIH0pO1xuXG4gICAgaWYgKHZlcmlmaWVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7Y29uc3RydWN0b3JTdHJpbmd9JyBjb25zdHJ1Y3Rvci5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29udGludWF0aW9uKHZlcmlmaWVzLCBjb250ZXh0KTtcbiAgfVxuXG4gIHZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBsZXQgdmFsaWRhdGVzO1xuXG4gICAgY29uc3QgaW5jbHVkZVR5cGUgPSBmYWxzZSxcbiAgICAgICAgICBzcGVjaWZpY0NvbnRleHQgPSBjb250ZXh0LCAgLy8vXG4gICAgICAgICAgY29uc3RydWN0b3JTdHJpbmcgPSB0aGlzLmdldFN0cmluZyhpbmNsdWRlVHlwZSk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2NvbnN0cnVjdG9yU3RyaW5nfScgY29uc3RydWN0b3IuLi5gKTtcblxuICAgIGNvbnN0IGNvbnN0cnVjdG9yID0gdGhpcztcblxuICAgIGF0dGVtcHQoKGNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IHZhbGlkYXRlVGVybUFzVmFyaWFibGUgPSB0aGlzLnZhbGlkYXRlVGVybUFzVmFyaWFibGUuYmluZCh0aGlzKSxcbiAgICAgICAgICAgIHZhbGlkYXRlVGVybUFzQ29uc3RydWN0b3IgPSB0aGlzLnZhbGlkYXRlVGVybUFzQ29uc3RydWN0b3IuYmluZCh0aGlzKTtcblxuICAgICAgdmFsaWRhdGVzID0gZXhpc3RzKFtcbiAgICAgICAgdmFsaWRhdGVUZXJtQXNWYXJpYWJsZSxcbiAgICAgICAgdmFsaWRhdGVUZXJtQXNDb25zdHJ1Y3RvclxuICAgICAgXSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCkgPT4ge1xuICAgICAgICBsZXQgdmFsaWRhdGVzO1xuXG4gICAgICAgIHRoaXMuY29tbWl0KGNvbnRleHQpO1xuXG4gICAgICAgIGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQ7ICAvLy9cblxuICAgICAgICB2YWxpZGF0ZXMgPSBjb250aW51YXRpb24oY29uc3RydWN0b3IsIGNvbnRleHQpO1xuXG4gICAgICAgIHJldHVybiB2YWxpZGF0ZXM7XG4gICAgICB9KTtcbiAgICB9LCBjb250ZXh0KTtcblxuICAgIGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQ7ICAvLy9cblxuICAgIGlmICh2YWxpZGF0ZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7Y29uc3RydWN0b3JTdHJpbmd9JyBjb25zdHJ1Y3Rvci5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsaWRhdGVzO1xuICB9XG5cbiAgdmFsaWRhdGVUZXJtQXNWYXJpYWJsZShzdGF0ZSwgY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgbGV0IHRlcm1WYWxpZGF0ZXNBc1ZhcmlhYmxlID0gZmFsc2U7XG5cbiAgICBjb25zdCBoeXBvdGhldGljYWwgPSB0aGlzLmlzSHlwb3RoZXRpY2FsKCk7XG5cbiAgICBpZiAoIWh5cG90aGV0aWNhbCkge1xuICAgICAgY29uc3QgaW5jbHVkZVR5cGUgPSBmYWxzZSxcbiAgICAgICAgICAgIGNvbnN0cnVjdG9yU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoaW5jbHVkZVR5cGUpOyAgLy8vXG5cbiAgICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2NvbnN0cnVjdG9yU3RyaW5nfScgY29uc3RydWN0b3IncyB0ZXJtIGFzIGEgdmFyaWFibGUuLi5gKTtcblxuICAgICAgdGVybVZhbGlkYXRlc0FzVmFyaWFibGUgPSB0aGlzLnRlcm0udmFsaWRhdGVBc1ZhcmlhYmxlKHN0YXRlLCBjb250ZXh0LCAodGVybSwgY29udGV4dCkgPT4ge1xuICAgICAgICBsZXQgdmFsaWRhdGVzQXNWYXJpYWJsZSA9IGZhbHNlO1xuXG4gICAgICAgIGNvbnN0IHR5cGUgPSB0ZXJtLmdldFR5cGUoKSxcbiAgICAgICAgICAgICAgYmFzZVR5cGUgPSBiYXNlVHlwZUZyb21Ob3RoaW5nKCk7XG5cbiAgICAgICAgaWYgKHR5cGUgPT09IGJhc2VUeXBlKSB7XG4gICAgICAgICAgdmFsaWRhdGVzQXNWYXJpYWJsZSA9IGNvbnRpbnVhdGlvbihzdGF0ZSwgY29udGV4dCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdmFsaWRhdGVzQXNWYXJpYWJsZTtcbiAgICAgIH0pO1xuXG4gICAgICBpZiAodGVybVZhbGlkYXRlc0FzVmFyaWFibGUpIHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtjb25zdHJ1Y3RvclN0cmluZ30nIGNvbnN0cnVjdG9yJ3MgdGVybSBhcyBhIHZhcmlhYmxlLmApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0ZXJtVmFsaWRhdGVzQXNWYXJpYWJsZTtcbiAgfVxuXG4gIHZhbGlkYXRlVGVybUFzQ29uc3RydWN0b3Ioc3RhdGUsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCB0ZXJtVmFsaWRhdGVzQXNDb25zdHJ1Y3RvciA9IGZhbHNlO1xuXG4gICAgY29uc3QgaHlwb3RoZXRpY2FsID0gdGhpcy5pc0h5cG90aGV0aWNhbCgpO1xuXG4gICAgaWYgKCFoeXBvdGhldGljYWwpIHtcbiAgICAgIGNvbnN0IGluY2x1ZGVUeXBlID0gZmFsc2UsXG4gICAgICAgICAgICBjb25zdHJ1Y3RvclN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKGluY2x1ZGVUeXBlKTsgIC8vL1xuXG4gICAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtjb25zdHJ1Y3RvclN0cmluZ30nIGNvbnN0cnVjdG9yJ3MgdGVybS4uLmApO1xuXG4gICAgICB0ZXJtVmFsaWRhdGVzQXNDb25zdHJ1Y3RvciA9IHZhbGlkYXRlVGVybUFzQ29uc3RydWN0b3IodGhpcy50ZXJtLCBjb250ZXh0LCAoY29udGV4dCkgPT4ge1xuICAgICAgICBsZXQgdmFsaWRhdGVzO1xuXG4gICAgICAgIHZhbGlkYXRlcyA9IGNvbnRpbnVhdGlvbihzdGF0ZSwgY29udGV4dCk7XG5cbiAgICAgICAgcmV0dXJuIHZhbGlkYXRlcztcbiAgICAgIH0pO1xuXG4gICAgICBpZiAodGVybVZhbGlkYXRlc0FzQ29uc3RydWN0b3IpIHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtjb25zdHJ1Y3RvclN0cmluZ30nIGNvbnN0cnVjdG9yJ3MgdGVybS5gKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGVybVZhbGlkYXRlc0FzQ29uc3RydWN0b3I7XG4gIH1cblxuICB1bmlmeVRlcm0odGVybSwgY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgbGV0IHRlcm1VbmlmaWVzID0gZmFsc2U7XG5cbiAgICBjb25zdCB0ZXJtU3RyaW5nID0gdGVybS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBpbmNsdWRlVHlwZSA9IHRydWUsXG4gICAgICAgICAgY29uc3RydWN0b3JTdHJpbmcgPSB0aGlzLmdldFN0cmluZyhpbmNsdWRlVHlwZSk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybSB3aXRoIHRoZSAnJHtjb25zdHJ1Y3RvclN0cmluZ30nIGNvbnN0cnVjdG9yLi4uYCk7XG5cbiAgICBjb25zdCBoeXBvdGhlc2VzRGlzY2hhcmdlc0dpdmVuVGVybSA9IHRoaXMuZGlzY2hhcmdlSHlwb3RoZXNlc0dpdmVuVGVybSh0ZXJtLCBjb250ZXh0LCAoY29udGV4dCkgPT4ge1xuICAgICAgbGV0IGh5cG90aGVzZXNEaXNjaGFyZ2VzR2l2ZW5UZXJtID0gZmFsc2U7XG5cbiAgICAgIGNvbnN0IGNvbnN0cnVjdG9yID0gdGhpcywgLy8vXG4gICAgICAgICAgICBjb25zdHJ1Y3RvckNvbnRleHQgPSBjb25zdHJ1Y3Rvci5nZXRDb250ZXh0KCksXG4gICAgICAgICAgICBnZW5lcmFsQ29udGV4dCA9IGNvbnN0cnVjdG9yQ29udGV4dCwgIC8vL1xuICAgICAgICAgICAgc3BlY2lmaUNvbnRleHQgPSBjb250ZXh0LCAvLy9cbiAgICAgICAgICAgIHRlcm1VbmlmaWVzV2l0aENvbnN0cnVjdG9yID0gdW5pZnlUZXJtV2l0aENvbnN0cnVjdG9yKHRlcm0sIGNvbnN0cnVjdG9yLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaUNvbnRleHQsIChnZW5lcmFsQ29udGV4dCwgc3BlY2lmaUNvbnRleHQpID0+IHtcbiAgICAgICAgICAgICAgbGV0IHRlcm1VbmlmaWVzV2l0aENvbnN0cnVjdG9yO1xuXG4gICAgICAgICAgICAgIGNvbnN0IGNvbnRleHQgPSBzcGVjaWZpQ29udGV4dCwgLy8vXG4gICAgICAgICAgICAgICAgICAgIHByb3Zpc2lvbmFsID0gdGhpcy50eXBlLmlzUHJvdmlzaW9uYWwoKTtcblxuICAgICAgICAgICAgICB0ZXJtLnNldFByb3Zpc2lvbmFsKHByb3Zpc2lvbmFsKTtcblxuICAgICAgICAgICAgICB0ZXJtLnNldFR5cGUodGhpcy50eXBlKTtcblxuICAgICAgICAgICAgICB0ZXJtVW5pZmllc1dpdGhDb25zdHJ1Y3RvciA9IGNvbnRpbnVhdGlvbih0ZXJtLCBjb250ZXh0KTtcblxuICAgICAgICAgICAgICByZXR1cm4gdGVybVVuaWZpZXNXaXRoQ29uc3RydWN0b3I7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgaWYgKHRlcm1VbmlmaWVzV2l0aENvbnN0cnVjdG9yKSB7XG4gICAgICAgIGh5cG90aGVzZXNEaXNjaGFyZ2VzR2l2ZW5UZXJtID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGh5cG90aGVzZXNEaXNjaGFyZ2VzR2l2ZW5UZXJtO1xuICAgIH0pO1xuXG4gICAgaWYgKGh5cG90aGVzZXNEaXNjaGFyZ2VzR2l2ZW5UZXJtKSB7XG4gICAgICB0ZXJtVW5pZmllcyA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHRlcm1VbmlmaWVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybSB3aXRoIHRoZSAnJHtjb25zdHJ1Y3RvclN0cmluZ30nIGNvbnN0cnVjdG9yLmApO1xuICAgIH1cblxuICAgIHJldHVybiB0ZXJtVW5pZmllcztcbiAgfVxuXG4gIGRpc2NoYXJnZUh5cG90aGVzZXNHaXZlblRlcm0odGVybSwgY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgbGV0IGh5cG90aGVzZXNEaXNjaGFyZ2VzR2l2ZW5UZXJtO1xuXG4gICAgY29uc3QgaHlwb3RoZXRpY2FsID0gdGhpcy5pc0h5cG90aGV0aWNhbCgpO1xuXG4gICAgaWYoIWh5cG90aGV0aWNhbCkge1xuICAgICAgaHlwb3RoZXNlc0Rpc2NoYXJnZXNHaXZlblRlcm0gPSBjb250aW51YXRpb24oY29udGV4dCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGNvbnN0cnVjdG9yU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTtcblxuICAgICAgY29udGV4dC50cmFjZShgRGlzY2hhcmluZyB0aGUgJyR7Y29uc3RydWN0b3JTdHJpbmd9JyBjb25zdHJ1Y3RvcidzIGhoeXBvdGhlc2VzLi4uYCk7XG5cbiAgICAgIGNvbnN0IGRpc2NoYXJnZUh5cG90aGVzaXNHaXZlblRlcm0gPSB0aGlzLmRpc2NoYXJnZUh5cG90aGVzaXNHaXZlblRlcm0uYmluZCh0aGlzKTtcblxuICAgICAgaHlwb3RoZXNlc0Rpc2NoYXJnZXNHaXZlblRlcm0gPSBldmVyeSh0aGlzLmh5cG90aGVzZXMsIHRlcm0sIGNvbnRleHQsIGRpc2NoYXJnZUh5cG90aGVzaXNHaXZlblRlcm0sIGNvbnRpbnVhdGlvbik7XG5cbiAgICAgIGlmIChoeXBvdGhlc2VzRGlzY2hhcmdlc0dpdmVuVGVybSkge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi5kaXNjaGFyZ2VkIHRoZSAnJHtjb25zdHJ1Y3RvclN0cmluZ30nIGNvbnN0cnVjdG9yJ3MgaGh5cG90aGVzZXMuYCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGh5cG90aGVzZXNEaXNjaGFyZ2VzR2l2ZW5UZXJtO1xuICB9XG5cbiAgLy8gZGlzY2hhcmdlSHlwb3RoZXNpc0dpdmVuVGVybShoeXBvdGhlc2lzLCB0ZXJtLCBjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgLy8gICBsZXQgaHlwb3RoZXNpc0Rpc2NoYXJnZXNHaXZlblRlcm07XG4gIC8vXG4gIC8vICAgY29uc3QgdGVybVN0cmluZyA9IHRlcm0uZ2V0U3RyaW5nKCksXG4gIC8vICAgICAgICAgaHlwb3RoZXNpc1N0cmluZyA9IGh5cG90aGVzaXMuZ2V0U3RyaW5nKCksXG4gIC8vICAgICAgICAgY29uc3RydWN0b3JTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cbiAgLy9cbiAgLy8gICBjb250ZXh0LnRyYWNlKGBEaXNjaGFyZGluZyB0aGUgJyR7Y29uc3RydWN0b3JTdHJpbmd9JyBjb25zdHJ1Y3RvcidzICcke2h5cG90aGVzaXNTdHJpbmd9JyBoeXBvdGhlc2lzIGdpdmVuIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybS4uLmApO1xuICAvL1xuICAvLyAgIGh5cG90aGVzaXNEaXNjaGFyZ2VzR2l2ZW5UZXJtID0gaHlwb3RoZXNpcy5kaXNjaGFyZ2VHaXZlblRlcm0odGVybSwgY29udGV4dCk7XG4gIC8vXG4gIC8vICAgaWYgKGh5cG90aGVzaXNEaXNjaGFyZ2VzR2l2ZW5UZXJtKSB7XG4gIC8vICAgICBjb250ZXh0LnRyYWNlKGAuLi5kaXNjaGFyZ2VzIHRoZSAnJHtjb25zdHJ1Y3RvclN0cmluZ30nIGNvbnN0cnVjdG9yJ3MgJyR7aHlwb3RoZXNpc1N0cmluZ30nIGh5cG90aGVzaXMgZ2l2ZW4gdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtLmApO1xuICAvLyAgIH1cbiAgLy9cbiAgLy8gICByZXR1cm4gaHlwb3RoZXNpc0Rpc2NoYXJnZXNHaXZlblRlcm07XG4gIC8vIH1cblxuICB0b0pTT04oKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgcmV0dXJuIHNlcmlhbGlzZSgoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3QgaW5jbHVkZVR5cGUgPSBmYWxzZSxcbiAgICAgICAgICAgIHR5cGVKU09OID0gdHlwZVRvVHlwZUpTT04odGhpcy50eXBlKSxcbiAgICAgICAgICAgIGh5cG90aGVzZXNKU09OID0gaHlwb3RoZXNlc1RvSHlwb3RoZXNlc0pTT04odGhpcy5oeXBvdGhlc2VzKSxcbiAgICAgICAgICAgIHN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKGluY2x1ZGVUeXBlKTtcblxuICAgICAgbGV0IGJyZWFrUG9pbnQ7XG5cbiAgICAgIGJyZWFrUG9pbnQgPSB0aGlzLmdldEJyZWFrUG9pbnQoKTtcblxuICAgICAgY29uc3QgYnJlYWtQb2ludEpTT04gPSBicmVha1BvaW50VG9CcmVha1BvaW50SlNPTihicmVha1BvaW50KTtcblxuICAgICAgYnJlYWtQb2ludCA9IGJyZWFrUG9pbnRKU09OOyAgLy8vXG5cbiAgICAgIGNvbnN0IHR5cGUgPSB0eXBlSlNPTiwgIC8vL1xuICAgICAgICAgICAgaHlwb3RoZXNlcyA9IGh5cG90aGVzZXNKU09OLCAgLy8vXG4gICAgICAgICAgICBqc29uID0ge1xuICAgICAgICAgICAgICBjb250ZXh0LFxuICAgICAgICAgICAgICBzdHJpbmcsXG4gICAgICAgICAgICAgIGJyZWFrUG9pbnQsXG4gICAgICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgICAgIGh5cG90aGVzZXNcbiAgICAgICAgICAgIH07XG5cbiAgICAgIHJldHVybiBqc29uO1xuICAgIH0sIGNvbnRleHQpO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIkNvbnN0cnVjdG9yXCI7XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgICBsZXQgY29uc3RydWN0b3I7XG5cbiAgICBpbnN0YW50aWF0ZSgoY29udGV4dCkgPT4ge1xuICAgICAgdW5zZXJpYWxpc2UoKGpzb24sIGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgICAgIGNvbnN0cnVjdG9yTm9kZSA9IGluc3RhbnRpYXRlQ29uc3RydWN0b3Ioc3RyaW5nLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgbm9kZSA9IGNvbnN0cnVjdG9yTm9kZSwgLy8vXG4gICAgICAgICAgICAgIGJyZWFrUG9pbnQgPSBicmVha1BvaW50RnJvbUpTT04oanNvbiksXG4gICAgICAgICAgICAgIHRlcm0gPSB0ZXJtRnJvbUNvbnN0cnVjdG9yTm9kZShjb25zdHJ1Y3Rvck5vZGUsIGNvbnRleHQpLFxuICAgICAgICAgICAgICB0eXBlID0gdHlwZUZyb21KU09OKGpzb24sIGNvbnRleHQpLFxuICAgICAgICAgICAgICBoeXBvdGhlc2VzID0gaHlwb3RoZXNlc0Zyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgICAgIGNvbnN0cnVjdG9yID0gbmV3IENvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdGVybSwgdHlwZSwgaHlwb3RoZXNlcyk7XG4gICAgICB9LCBqc29uLCBjb250ZXh0KTtcbiAgICB9LCBjb250ZXh0KTtcblxuICAgIHJldHVybiBjb25zdHJ1Y3RvcjtcbiAgfVxufSk7XG4iXSwibmFtZXMiOlsiYnJlYWtQb2ludEZyb21KU09OIiwiYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04iLCJicmVha1BvaW50VXRpbGl0aWVzIiwiZGVmaW5lIiwiQ29uc3RydWN0b3IiLCJFbGVtZW50IiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJicmVha1BvaW50IiwidGVybSIsInR5cGUiLCJoeXBvdGhlc2VzIiwiZ2V0VGVybSIsImdldFR5cGUiLCJnZXRIeXBvdGhlc2VzIiwic2V0SHlwb3RoZXNlcyIsImlzSHlwb3RoZXRpY2FsIiwiaHlwb3RoZXNlc0xlbmd0aCIsImxlbmd0aCIsImh5cG90aGV0aWNhbCIsImdldENvbnN0cnVjdG9yTm9kZSIsImdldE5vZGUiLCJjb25zdHJ1Y3Rvck5vZGUiLCJnZXRTdHJpbmciLCJpbmNsdWRlVHlwZSIsInRlcm1TdHJpbmciLCJ0eXBlU3RyaW5nIiwic2V0VHlwZSIsInZlcmlmeSIsImNvbnRpbnVhdGlvbiIsInZlcmlmaWVzIiwiY29uc3RydWN0b3JTdHJpbmciLCJ0cmFjZSIsImRlY2xhcmUiLCJzdGF0ZSIsImRlc2lzdCIsInZhbGlkYXRlcyIsInZhbGlkYXRlIiwiY29uc3RydWN0b3IiLCJkZWJ1ZyIsInNwZWNpZmljQ29udGV4dCIsImF0dGVtcHQiLCJ2YWxpZGF0ZVRlcm1Bc1ZhcmlhYmxlIiwiYmluZCIsInZhbGlkYXRlVGVybUFzQ29uc3RydWN0b3IiLCJleGlzdHMiLCJjb21taXQiLCJ0ZXJtVmFsaWRhdGVzQXNWYXJpYWJsZSIsInZhbGlkYXRlQXNWYXJpYWJsZSIsInZhbGlkYXRlc0FzVmFyaWFibGUiLCJiYXNlVHlwZSIsImJhc2VUeXBlRnJvbU5vdGhpbmciLCJ0ZXJtVmFsaWRhdGVzQXNDb25zdHJ1Y3RvciIsInVuaWZ5VGVybSIsInRlcm1VbmlmaWVzIiwiaHlwb3RoZXNlc0Rpc2NoYXJnZXNHaXZlblRlcm0iLCJkaXNjaGFyZ2VIeXBvdGhlc2VzR2l2ZW5UZXJtIiwiY29uc3RydWN0b3JDb250ZXh0IiwiZ2V0Q29udGV4dCIsImdlbmVyYWxDb250ZXh0Iiwic3BlY2lmaUNvbnRleHQiLCJ0ZXJtVW5pZmllc1dpdGhDb25zdHJ1Y3RvciIsInVuaWZ5VGVybVdpdGhDb25zdHJ1Y3RvciIsInByb3Zpc2lvbmFsIiwiaXNQcm92aXNpb25hbCIsInNldFByb3Zpc2lvbmFsIiwiZGlzY2hhcmdlSHlwb3RoZXNpc0dpdmVuVGVybSIsImV2ZXJ5IiwidG9KU09OIiwic2VyaWFsaXNlIiwidHlwZUpTT04iLCJ0eXBlVG9UeXBlSlNPTiIsImh5cG90aGVzZXNKU09OIiwiaHlwb3RoZXNlc1RvSHlwb3RoZXNlc0pTT04iLCJnZXRCcmVha1BvaW50IiwiYnJlYWtQb2ludEpTT04iLCJqc29uIiwibmFtZSIsImZyb21KU09OIiwiaW5zdGFudGlhdGUiLCJ1bnNlcmlhbGlzZSIsImluc3RhbnRpYXRlQ29uc3RydWN0b3IiLCJ0ZXJtRnJvbUNvbnN0cnVjdG9yTm9kZSIsInR5cGVGcm9tSlNPTiIsImh5cG90aGVzZXNGcm9tSlNPTiJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBaUJB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
|
|
244
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2NvbnN0cnVjdG9yLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBFbGVtZW50LCBicmVha1BvaW50VXRpbGl0aWVzIH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IGRlY2xhcmUsIGRlc2lzdCB9IGZyb20gXCIuLi91dGlsaXRpZXMvc3RhdGVcIjtcbmltcG9ydCB7IGFsbCwgZXhpc3RzLCBldmVyeSB9IGZyb20gXCIuLi91dGlsaXRpZXMvY29udGludWF0aW9uXCI7XG5pbXBvcnQgeyBiYXNlVHlwZUZyb21Ob3RoaW5nIH0gZnJvbSBcIi4uL3V0aWxpdGllcy90eXBlXCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZUNvbnN0cnVjdG9yIH0gZnJvbSBcIi4uL3Byb2Nlc3MvaW5zdGFudGlhdGVcIjtcbmltcG9ydCB7IHRlcm1Gcm9tQ29uc3RydWN0b3JOb2RlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9lbGVtZW50XCI7XG5pbXBvcnQgeyB1bmlmeVRlcm1XaXRoQ29uc3RydWN0b3IgfSBmcm9tIFwiLi4vcHJvY2Vzcy91bmlmeVwiO1xuaW1wb3J0IHsgdmFsaWRhdGVUZXJtQXNDb25zdHJ1Y3RvciB9IGZyb20gXCIuLi9wcm9jZXNzL3ZhbGlkYXRlXCI7XG5pbXBvcnQgeyBhdHRlbXB0LCBzZXJpYWxpc2UsIHVuc2VyaWFsaXNlLCBpbnN0YW50aWF0ZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvY29udGV4dFwiO1xuaW1wb3J0IHsgdHlwZUZyb21KU09OLCB0eXBlVG9UeXBlSlNPTiwgaHlwb3RoZXNlc0Zyb21KU09OLCBoeXBvdGhlc2VzVG9IeXBvdGhlc2VzSlNPTiB9IGZyb20gXCIuLi91dGlsaXRpZXMvanNvblwiO1xuXG5jb25zdCB7IGJyZWFrUG9pbnRGcm9tSlNPTiwgYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04gfSA9IGJyZWFrUG9pbnRVdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBDb25zdHJ1Y3RvciBleHRlbmRzIEVsZW1lbnQge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHRlcm0sIHR5cGUsIGh5cG90aGVzZXMpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy50ZXJtID0gdGVybTtcbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICAgIHRoaXMuaHlwb3RoZXNlcyA9IGh5cG90aGVzZXM7XG4gIH1cblxuICBnZXRUZXJtKCkge1xuICAgIHJldHVybiB0aGlzLnRlcm07XG4gIH1cblxuICBnZXRUeXBlKCkge1xuICAgIHJldHVybiB0aGlzLnR5cGU7XG4gIH1cblxuICBnZXRIeXBvdGhlc2VzKCkge1xuICAgIHJldHVybiB0aGlzLmh5cG90aGVzZXM7XG4gIH1cblxuICBzZXRIeXBvdGhlc2VzKGh5cG90aGVzZXMpIHtcbiAgICB0aGlzLmh5cG90aGVzZXMgPSBoeXBvdGhlc2VzO1xuICB9XG5cbiAgaXNIeXBvdGhldGljYWwoKSB7XG4gICAgY29uc3QgaHlwb3RoZXNlc0xlbmd0aCA9IHRoaXMuaHlwb3RoZXNlcy5sZW5ndGgsXG4gICAgICAgICAgaHlwb3RoZXRpY2FsID0gKGh5cG90aGVzZXNMZW5ndGggPiAwKTtcblxuICAgIHJldHVybiBoeXBvdGhldGljYWw7XG4gIH1cblxuICBnZXRDb25zdHJ1Y3Rvck5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIGNvbnN0cnVjdG9yTm9kZSA9IG5vZGU7ICAvLy9cblxuICAgIHJldHVybiBjb25zdHJ1Y3Rvck5vZGU7XG4gIH1cblxuICBnZXRTdHJpbmcoaW5jbHVkZVR5cGUgPSB0cnVlKSB7XG4gICAgbGV0IHN0cmluZztcblxuICAgIGlmIChpbmNsdWRlVHlwZSkge1xuICAgICAgY29uc3QgdGVybVN0cmluZyA9IHRoaXMudGVybS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICAgIHR5cGVTdHJpbmcgPSB0aGlzLnR5cGUuZ2V0U3RyaW5nKCk7XG5cbiAgICAgIHN0cmluZyA9IGAke3Rlcm1TdHJpbmd9LiR7dHlwZVN0cmluZ31gO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdHJpbmcgPSBzdXBlci5nZXRTdHJpbmcoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3RyaW5nO1xuICB9XG5cbiAgc2V0VHlwZSh0eXBlKSB7XG4gICAgdGhpcy50eXBlID0gdHlwZTtcbiAgfVxuXG4gIGlzTWFsZm9ybWVkKCkge1xuICAgIGNvbnN0IGNvbnN0cnVjdG9yTm9kZSA9IHRoaXMuZ2V0Q29uc3RydWN0b3JOb2RlKCksXG4gICAgICBtYWxmb3JtZWQgPSBjb25zdHJ1Y3Rvck5vZGUuaXNNYWxmb3JtZWQoKTtcblxuICAgIHJldHVybiBtYWxmb3JtZWQ7XG4gIH1cblxuICB2ZXJpZnkoY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgbGV0IHZlcmlmaWVzID0gZmFsc2U7XG5cbiAgICBjb25zdCBpbmNsdWRlVHlwZSA9IGZhbHNlLFxuICAgICAgICAgIGNvbnN0cnVjdG9yU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoaW5jbHVkZVR5cGUpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke2NvbnN0cnVjdG9yU3RyaW5nfScgY29uc3RydWN0b3IuLi5gKTtcblxuICAgIGNvbnN0IG1hbGZvcm1lZCA9IHRoaXMuaXNNYWxmb3JtZWQoKTtcblxuICAgIGlmIChtYWxmb3JtZWQpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYFVuYWJsZSB0byB2ZXJpZnkgdGhlICcke2NvbnN0cnVjdG9yU3RyaW5nfScgY29uc3RydWN0b3IgYmVjYXVzZSBpdCBpcyBtYWxmb3JtZWQuYCk7XG5cbiAgICAgIHJldHVybiBjb250aW51YXRpb24odmVyaWZpZXMsIGNvbnRleHQpO1xuICAgIH1cblxuICAgIGRlY2xhcmUoKHN0YXRlKSA9PiB7XG4gICAgICBkZXNpc3QoKHN0YXRlKSA9PiB7XG4gICAgICAgIGNvbnN0IHZhbGlkYXRlcyA9IHRoaXMudmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIChjb25zdHJ1Y3RvciwgY29udGV4dCkgPT4gdHJ1ZSk7ICAvLy9cblxuICAgICAgICBpZiAodmFsaWRhdGVzKSB7XG4gICAgICAgICAgdmVyaWZpZXMgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9LCBzdGF0ZSk7XG4gICAgfSk7XG5cbiAgICBpZiAodmVyaWZpZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtjb25zdHJ1Y3RvclN0cmluZ30nIGNvbnN0cnVjdG9yLmApO1xuICAgIH1cblxuICAgIHJldHVybiBjb250aW51YXRpb24odmVyaWZpZXMsIGNvbnRleHQpO1xuICB9XG5cbiAgdmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCB2YWxpZGF0ZXM7XG5cbiAgICBjb25zdCBpbmNsdWRlVHlwZSA9IGZhbHNlLFxuICAgICAgICAgIHNwZWNpZmljQ29udGV4dCA9IGNvbnRleHQsICAvLy9cbiAgICAgICAgICBjb25zdHJ1Y3RvclN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKGluY2x1ZGVUeXBlKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7Y29uc3RydWN0b3JTdHJpbmd9JyBjb25zdHJ1Y3Rvci4uLmApO1xuXG4gICAgY29uc3QgY29uc3RydWN0b3IgPSB0aGlzO1xuXG4gICAgYXR0ZW1wdCgoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3QgdmFsaWRhdGVUZXJtQXNWYXJpYWJsZSA9IHRoaXMudmFsaWRhdGVUZXJtQXNWYXJpYWJsZS5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgdmFsaWRhdGVUZXJtQXNDb25zdHJ1Y3RvciA9IHRoaXMudmFsaWRhdGVUZXJtQXNDb25zdHJ1Y3Rvci5iaW5kKHRoaXMpO1xuXG4gICAgICB2YWxpZGF0ZXMgPSBleGlzdHMoW1xuICAgICAgICB2YWxpZGF0ZVRlcm1Bc1ZhcmlhYmxlLFxuICAgICAgICB2YWxpZGF0ZVRlcm1Bc0NvbnN0cnVjdG9yXG4gICAgICBdLCBzdGF0ZSwgY29udGV4dCwgKHN0YXRlLCBjb250ZXh0KSA9PiB7XG4gICAgICAgIGxldCB2YWxpZGF0ZXM7XG5cbiAgICAgICAgdGhpcy5jb21taXQoY29udGV4dCk7XG5cbiAgICAgICAgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dDsgIC8vL1xuXG4gICAgICAgIHZhbGlkYXRlcyA9IGNvbnRpbnVhdGlvbihjb25zdHJ1Y3RvciwgY29udGV4dCk7XG5cbiAgICAgICAgcmV0dXJuIHZhbGlkYXRlcztcbiAgICAgIH0pO1xuICAgIH0sIGNvbnRleHQpO1xuXG4gICAgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dDsgIC8vL1xuXG4gICAgaWYgKHZhbGlkYXRlcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtjb25zdHJ1Y3RvclN0cmluZ30nIGNvbnN0cnVjdG9yLmApO1xuICAgIH1cblxuICAgIHJldHVybiB2YWxpZGF0ZXM7XG4gIH1cblxuICB2YWxpZGF0ZVRlcm1Bc1ZhcmlhYmxlKHN0YXRlLCBjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBsZXQgdGVybVZhbGlkYXRlc0FzVmFyaWFibGUgPSBmYWxzZTtcblxuICAgIGNvbnN0IGh5cG90aGV0aWNhbCA9IHRoaXMuaXNIeXBvdGhldGljYWwoKTtcblxuICAgIGlmIChoeXBvdGhldGljYWwpIHtcbiAgICAgIGNvbnN0IGluY2x1ZGVUeXBlID0gZmFsc2UsXG4gICAgICAgICAgICBjb25zdHJ1Y3RvclN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKGluY2x1ZGVUeXBlKTsgIC8vL1xuXG4gICAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtjb25zdHJ1Y3RvclN0cmluZ30nIGNvbnN0cnVjdG9yJ3MgdGVybSBhcyBhIHZhcmlhYmxlLi4uYCk7XG5cbiAgICAgIHRlcm1WYWxpZGF0ZXNBc1ZhcmlhYmxlID0gdGhpcy50ZXJtLnZhbGlkYXRlQXNWYXJpYWJsZShzdGF0ZSwgY29udGV4dCwgKHRlcm0sIGNvbnRleHQpID0+IHtcbiAgICAgICAgbGV0IHZhbGlkYXRlc0FzVmFyaWFibGUgPSBmYWxzZTtcblxuICAgICAgICBjb25zdCB0eXBlID0gdGVybS5nZXRUeXBlKCksXG4gICAgICAgICAgICAgIGJhc2VUeXBlID0gYmFzZVR5cGVGcm9tTm90aGluZygpO1xuXG4gICAgICAgIGlmICh0eXBlID09PSBiYXNlVHlwZSkge1xuICAgICAgICAgIHZhbGlkYXRlc0FzVmFyaWFibGUgPSBjb250aW51YXRpb24oc3RhdGUsIGNvbnRleHQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHZhbGlkYXRlc0FzVmFyaWFibGU7XG4gICAgICB9KTtcblxuICAgICAgaWYgKHRlcm1WYWxpZGF0ZXNBc1ZhcmlhYmxlKSB7XG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7Y29uc3RydWN0b3JTdHJpbmd9JyBjb25zdHJ1Y3RvcidzIHRlcm0gYXMgYSB2YXJpYWJsZS5gKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGVybVZhbGlkYXRlc0FzVmFyaWFibGU7XG4gIH1cblxuICB2YWxpZGF0ZVRlcm1Bc0NvbnN0cnVjdG9yKHN0YXRlLCBjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBsZXQgdGVybVZhbGlkYXRlc0FzQ29uc3RydWN0b3IgPSBmYWxzZTtcblxuICAgIGNvbnN0IGh5cG90aGV0aWNhbCA9IHRoaXMuaXNIeXBvdGhldGljYWwoKTtcblxuICAgIGlmICghaHlwb3RoZXRpY2FsKSB7XG4gICAgICBjb25zdCBpbmNsdWRlVHlwZSA9IGZhbHNlLFxuICAgICAgICAgICAgY29uc3RydWN0b3JTdHJpbmcgPSB0aGlzLmdldFN0cmluZyhpbmNsdWRlVHlwZSk7ICAvLy9cblxuICAgICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7Y29uc3RydWN0b3JTdHJpbmd9JyBjb25zdHJ1Y3RvcidzIHRlcm0uLi5gKTtcblxuICAgICAgdGVybVZhbGlkYXRlc0FzQ29uc3RydWN0b3IgPSB2YWxpZGF0ZVRlcm1Bc0NvbnN0cnVjdG9yKHRoaXMudGVybSwgY29udGV4dCwgKGNvbnRleHQpID0+IHtcbiAgICAgICAgbGV0IHZhbGlkYXRlcztcblxuICAgICAgICB2YWxpZGF0ZXMgPSBjb250aW51YXRpb24oc3RhdGUsIGNvbnRleHQpO1xuXG4gICAgICAgIHJldHVybiB2YWxpZGF0ZXM7XG4gICAgICB9KTtcblxuICAgICAgaWYgKHRlcm1WYWxpZGF0ZXNBc0NvbnN0cnVjdG9yKSB7XG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7Y29uc3RydWN0b3JTdHJpbmd9JyBjb25zdHJ1Y3RvcidzIHRlcm0uYCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRlcm1WYWxpZGF0ZXNBc0NvbnN0cnVjdG9yO1xuICB9XG5cbiAgdW5pZnlUZXJtKHRlcm0sIGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCB0ZXJtVW5pZmllcztcblxuICAgIGNvbnN0IHRlcm1TdHJpbmcgPSB0ZXJtLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtLi4uYCk7XG5cbiAgICBjb25zdCB1bmlmeVRlcm1XaXRoQ29uc3RydWN0b3IgPSB0aGlzLnVuaWZ5VGVybVdpdGhDb25zdHJ1Y3Rvci5iaW5kKHRoaXMpLFxuICAgICAgICAgIGRpc2NoYXJnZUh5cG90aGVzZXNHaXZlblRlcm0gPSB0aGlzLmRpc2NoYXJnZUh5cG90aGVzZXNHaXZlblRlcm0uYmluZCh0aGlzKTtcblxuICAgIHRlcm1VbmlmaWVzID0gYWxsKFtcbiAgICAgIGRpc2NoYXJnZUh5cG90aGVzZXNHaXZlblRlcm0sXG4gICAgICB1bmlmeVRlcm1XaXRoQ29uc3RydWN0b3JcbiAgICBdLCB0ZXJtLCBjb250ZXh0LCAodGVybSwgY29udGV4dCkgPT4ge1xuICAgICAgbGV0IHZhbGlkYXRlcztcblxuICAgICAgY29uc3QgcHJvdmlzaW9uYWwgPSB0aGlzLnR5cGUuaXNQcm92aXNpb25hbCgpO1xuXG4gICAgICB0ZXJtLnNldFByb3Zpc2lvbmFsKHByb3Zpc2lvbmFsKTtcblxuICAgICAgdGVybS5zZXRUeXBlKHRoaXMudHlwZSk7XG5cbiAgICAgIHZhbGlkYXRlcyA9IGNvbnRpbnVhdGlvbih0ZXJtLCBjb250ZXh0KTtcblxuICAgICAgcmV0dXJuIHZhbGlkYXRlcztcbiAgICB9KTtcblxuICAgIGlmICh0ZXJtVW5pZmllcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0uYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRlcm1VbmlmaWVzO1xuICB9XG5cbiAgdW5pZnlUZXJtV2l0aENvbnN0cnVjdG9yKHRlcm0sIGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCB0ZXJtVW5pZmllc1dpdGhDQ29uc3RydWN0b3I7XG5cbiAgICBjb25zdCB0ZXJtU3RyaW5nID0gdGVybS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBpbmNsdWRlVHlwZSA9IHRydWUsXG4gICAgICAgICAgY29uc3RydWN0b3JTdHJpbmcgPSB0aGlzLmdldFN0cmluZyhpbmNsdWRlVHlwZSk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybSB3aXRoIHRoZSAnJHtjb25zdHJ1Y3RvclN0cmluZ30nIGNvbnN0cnVjdG9yLi4uYCk7XG5cbiAgICBjb25zdCBjb25zdHJ1Y3RvciA9IHRoaXMsIC8vL1xuICAgICAgICAgIGdlbmVyYWxDb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksICAvLy9cbiAgICAgICAgICBzcGVjaWZpQ29udGV4dCA9IGNvbnRleHQ7IC8vL1xuXG4gICAgdGVybVVuaWZpZXNXaXRoQ0NvbnN0cnVjdG9yID0gdW5pZnlUZXJtV2l0aENvbnN0cnVjdG9yKHRlcm0sIGNvbnN0cnVjdG9yLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaUNvbnRleHQsIChnZW5lcmFsQ29udGV4dCwgc3BlY2lmaUNvbnRleHQpID0+IHtcbiAgICAgIGxldCB0ZXJtVW5pZmllc1dpdGhDb25zdHJ1Y3RvcjtcblxuICAgICAgY29uc3QgY29udGV4dCA9IHNwZWNpZmlDb250ZXh0OyAvLy9cblxuICAgICAgdGVybVVuaWZpZXNXaXRoQ29uc3RydWN0b3IgPSBjb250aW51YXRpb24odGVybSwgY29udGV4dCk7XG5cbiAgICAgIHJldHVybiB0ZXJtVW5pZmllc1dpdGhDb25zdHJ1Y3RvcjtcbiAgICB9KTtcblxuICAgIGlmICh0ZXJtVW5pZmllc1dpdGhDQ29uc3RydWN0b3IpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtIHdpdGggdGhlICcke2NvbnN0cnVjdG9yU3RyaW5nfScgY29uc3RydWN0b3IuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRlcm1VbmlmaWVzV2l0aENDb25zdHJ1Y3RvcjtcbiAgfVxuXG4gIGRpc2NoYXJnZUh5cG90aGVzZXNHaXZlblRlcm0odGVybSwgY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgbGV0IGh5cG90aGVzZXNEaXNjaGFyZ2VzR2l2ZW5UZXJtO1xuXG4gICAgY29uc3QgaHlwb3RoZXRpY2FsID0gdGhpcy5pc0h5cG90aGV0aWNhbCgpO1xuXG4gICAgaWYoaHlwb3RoZXRpY2FsKSB7XG4gICAgICBjb25zdCBjb25zdHJ1Y3RvclN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7XG5cbiAgICAgIGNvbnRleHQudHJhY2UoYERpc2NoYXJpbmcgdGhlICcke2NvbnN0cnVjdG9yU3RyaW5nfScgY29uc3RydWN0b3IncyBoaHlwb3RoZXNlcy4uLmApO1xuXG4gICAgICBjb25zdCBkaXNjaGFyZ2VIeXBvdGhlc2lzR2l2ZW5UZXJtID0gdGhpcy5kaXNjaGFyZ2VIeXBvdGhlc2lzR2l2ZW5UZXJtLmJpbmQodGhpcyk7XG5cbiAgICAgIGh5cG90aGVzZXNEaXNjaGFyZ2VzR2l2ZW5UZXJtID0gZXZlcnkodGhpcy5oeXBvdGhlc2VzLCBkaXNjaGFyZ2VIeXBvdGhlc2lzR2l2ZW5UZXJtLCB0ZXJtLCBjb250ZXh0LCBjb250aW51YXRpb24pO1xuXG4gICAgICBpZiAoaHlwb3RoZXNlc0Rpc2NoYXJnZXNHaXZlblRlcm0pIHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4uZGlzY2hhcmdlZCB0aGUgJyR7Y29uc3RydWN0b3JTdHJpbmd9JyBjb25zdHJ1Y3RvcidzIGhoeXBvdGhlc2VzLmApO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBoeXBvdGhlc2VzRGlzY2hhcmdlc0dpdmVuVGVybSA9IGNvbnRpbnVhdGlvbih0ZXJtLCBjb250ZXh0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gaHlwb3RoZXNlc0Rpc2NoYXJnZXNHaXZlblRlcm07XG4gIH1cblxuICBkaXNjaGFyZ2VIeXBvdGhlc2lzR2l2ZW5UZXJtKGh5cG90aGVzaXMsIHRlcm0sIGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCBoeXBvdGhlc2lzRGlzY2hhcmdlc0dpdmVuVGVybTtcblxuICAgIGNvbnN0IHRlcm1TdHJpbmcgPSB0ZXJtLmdldFN0cmluZygpLFxuICAgICAgICAgIGh5cG90aGVzaXNTdHJpbmcgPSBoeXBvdGhlc2lzLmdldFN0cmluZygpLFxuICAgICAgICAgIGNvbnN0cnVjdG9yU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBEaXNjaGFyZGluZyB0aGUgJyR7Y29uc3RydWN0b3JTdHJpbmd9JyBjb25zdHJ1Y3RvcidzICcke2h5cG90aGVzaXNTdHJpbmd9JyBoeXBvdGhlc2lzIGdpdmVuIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybS4uLmApO1xuXG4gICAgaHlwb3RoZXNpc0Rpc2NoYXJnZXNHaXZlblRlcm0gPSBoeXBvdGhlc2lzLmRpc2NoYXJnZUdpdmVuVGVybSh0ZXJtLCBjb250ZXh0LCBjb250aW51YXRpb24pO1xuXG4gICAgaWYgKGh5cG90aGVzaXNEaXNjaGFyZ2VzR2l2ZW5UZXJtKSB7XG4gICAgICBjb250ZXh0LnRyYWNlKGAuLi5kaXNjaGFyZ2VzIHRoZSAnJHtjb25zdHJ1Y3RvclN0cmluZ30nIGNvbnN0cnVjdG9yJ3MgJyR7aHlwb3RoZXNpc1N0cmluZ30nIGh5cG90aGVzaXMgZ2l2ZW4gdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtLmApO1xuICAgIH1cblxuICAgIHJldHVybiBoeXBvdGhlc2lzRGlzY2hhcmdlc0dpdmVuVGVybTtcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICByZXR1cm4gc2VyaWFsaXNlKChjb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCBpbmNsdWRlVHlwZSA9IGZhbHNlLFxuICAgICAgICAgICAgdHlwZUpTT04gPSB0eXBlVG9UeXBlSlNPTih0aGlzLnR5cGUpLFxuICAgICAgICAgICAgaHlwb3RoZXNlc0pTT04gPSBoeXBvdGhlc2VzVG9IeXBvdGhlc2VzSlNPTih0aGlzLmh5cG90aGVzZXMpLFxuICAgICAgICAgICAgc3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoaW5jbHVkZVR5cGUpO1xuXG4gICAgICBsZXQgYnJlYWtQb2ludDtcblxuICAgICAgYnJlYWtQb2ludCA9IHRoaXMuZ2V0QnJlYWtQb2ludCgpO1xuXG4gICAgICBjb25zdCBicmVha1BvaW50SlNPTiA9IGJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OKGJyZWFrUG9pbnQpO1xuXG4gICAgICBicmVha1BvaW50ID0gYnJlYWtQb2ludEpTT047ICAvLy9cblxuICAgICAgY29uc3QgdHlwZSA9IHR5cGVKU09OLCAgLy8vXG4gICAgICAgICAgICBoeXBvdGhlc2VzID0gaHlwb3RoZXNlc0pTT04sICAvLy9cbiAgICAgICAgICAgIGpzb24gPSB7XG4gICAgICAgICAgICAgIGNvbnRleHQsXG4gICAgICAgICAgICAgIHN0cmluZyxcbiAgICAgICAgICAgICAgYnJlYWtQb2ludCxcbiAgICAgICAgICAgICAgdHlwZSxcbiAgICAgICAgICAgICAgaHlwb3RoZXNlc1xuICAgICAgICAgICAgfTtcblxuICAgICAgcmV0dXJuIGpzb247XG4gICAgfSwgY29udGV4dCk7XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiQ29uc3RydWN0b3JcIjtcblxuICBzdGF0aWMgZnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICAgIGxldCBjb25zdHJ1Y3RvcjtcblxuICAgIGluc3RhbnRpYXRlKChjb250ZXh0KSA9PiB7XG4gICAgICB1bnNlcmlhbGlzZSgoanNvbiwgY29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCB7IHN0cmluZyB9ID0ganNvbixcbiAgICAgICAgICAgICAgY29uc3RydWN0b3JOb2RlID0gaW5zdGFudGlhdGVDb25zdHJ1Y3RvcihzdHJpbmcsIGNvbnRleHQpLFxuICAgICAgICAgICAgICBub2RlID0gY29uc3RydWN0b3JOb2RlLCAvLy9cbiAgICAgICAgICAgICAgYnJlYWtQb2ludCA9IGJyZWFrUG9pbnRGcm9tSlNPTihqc29uKSxcbiAgICAgICAgICAgICAgdGVybSA9IHRlcm1Gcm9tQ29uc3RydWN0b3JOb2RlKGNvbnN0cnVjdG9yTm9kZSwgY29udGV4dCksXG4gICAgICAgICAgICAgIHR5cGUgPSB0eXBlRnJvbUpTT04oanNvbiwgY29udGV4dCksXG4gICAgICAgICAgICAgIGh5cG90aGVzZXMgPSBoeXBvdGhlc2VzRnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICAgICAgY29uc3RydWN0b3IgPSBuZXcgQ29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB0ZXJtLCB0eXBlLCBoeXBvdGhlc2VzKTtcbiAgICAgIH0sIGpzb24sIGNvbnRleHQpO1xuICAgIH0sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGNvbnN0cnVjdG9yO1xuICB9XG59KTtcbiJdLCJuYW1lcyI6WyJicmVha1BvaW50RnJvbUpTT04iLCJicmVha1BvaW50VG9CcmVha1BvaW50SlNPTiIsImJyZWFrUG9pbnRVdGlsaXRpZXMiLCJkZWZpbmUiLCJDb25zdHJ1Y3RvciIsIkVsZW1lbnQiLCJjb250ZXh0Iiwic3RyaW5nIiwibm9kZSIsImJyZWFrUG9pbnQiLCJ0ZXJtIiwidHlwZSIsImh5cG90aGVzZXMiLCJnZXRUZXJtIiwiZ2V0VHlwZSIsImdldEh5cG90aGVzZXMiLCJzZXRIeXBvdGhlc2VzIiwiaXNIeXBvdGhldGljYWwiLCJoeXBvdGhlc2VzTGVuZ3RoIiwibGVuZ3RoIiwiaHlwb3RoZXRpY2FsIiwiZ2V0Q29uc3RydWN0b3JOb2RlIiwiZ2V0Tm9kZSIsImNvbnN0cnVjdG9yTm9kZSIsImdldFN0cmluZyIsImluY2x1ZGVUeXBlIiwidGVybVN0cmluZyIsInR5cGVTdHJpbmciLCJzZXRUeXBlIiwiaXNNYWxmb3JtZWQiLCJtYWxmb3JtZWQiLCJ2ZXJpZnkiLCJjb250aW51YXRpb24iLCJ2ZXJpZmllcyIsImNvbnN0cnVjdG9yU3RyaW5nIiwidHJhY2UiLCJkZWJ1ZyIsImRlY2xhcmUiLCJzdGF0ZSIsImRlc2lzdCIsInZhbGlkYXRlcyIsInZhbGlkYXRlIiwiY29uc3RydWN0b3IiLCJzcGVjaWZpY0NvbnRleHQiLCJhdHRlbXB0IiwidmFsaWRhdGVUZXJtQXNWYXJpYWJsZSIsImJpbmQiLCJ2YWxpZGF0ZVRlcm1Bc0NvbnN0cnVjdG9yIiwiZXhpc3RzIiwiY29tbWl0IiwidGVybVZhbGlkYXRlc0FzVmFyaWFibGUiLCJ2YWxpZGF0ZUFzVmFyaWFibGUiLCJ2YWxpZGF0ZXNBc1ZhcmlhYmxlIiwiYmFzZVR5cGUiLCJiYXNlVHlwZUZyb21Ob3RoaW5nIiwidGVybVZhbGlkYXRlc0FzQ29uc3RydWN0b3IiLCJ1bmlmeVRlcm0iLCJ0ZXJtVW5pZmllcyIsInVuaWZ5VGVybVdpdGhDb25zdHJ1Y3RvciIsImRpc2NoYXJnZUh5cG90aGVzZXNHaXZlblRlcm0iLCJhbGwiLCJwcm92aXNpb25hbCIsImlzUHJvdmlzaW9uYWwiLCJzZXRQcm92aXNpb25hbCIsInRlcm1VbmlmaWVzV2l0aENDb25zdHJ1Y3RvciIsImdlbmVyYWxDb250ZXh0IiwiZ2V0Q29udGV4dCIsInNwZWNpZmlDb250ZXh0IiwidGVybVVuaWZpZXNXaXRoQ29uc3RydWN0b3IiLCJoeXBvdGhlc2VzRGlzY2hhcmdlc0dpdmVuVGVybSIsImRpc2NoYXJnZUh5cG90aGVzaXNHaXZlblRlcm0iLCJldmVyeSIsImh5cG90aGVzaXMiLCJoeXBvdGhlc2lzRGlzY2hhcmdlc0dpdmVuVGVybSIsImh5cG90aGVzaXNTdHJpbmciLCJkaXNjaGFyZ2VHaXZlblRlcm0iLCJ0b0pTT04iLCJzZXJpYWxpc2UiLCJ0eXBlSlNPTiIsInR5cGVUb1R5cGVKU09OIiwiaHlwb3RoZXNlc0pTT04iLCJoeXBvdGhlc2VzVG9IeXBvdGhlc2VzSlNPTiIsImdldEJyZWFrUG9pbnQiLCJicmVha1BvaW50SlNPTiIsImpzb24iLCJuYW1lIiwiZnJvbUpTT04iLCJpbnN0YW50aWF0ZSIsInVuc2VyaWFsaXNlIiwiaW5zdGFudGlhdGVDb25zdHJ1Y3RvciIsInRlcm1Gcm9tQ29uc3RydWN0b3JOb2RlIiwidHlwZUZyb21KU09OIiwiaHlwb3RoZXNlc0Zyb21KU09OIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFpQkE7OztlQUFBOzs7Z0NBZjZDOzBCQUV0Qjt1QkFDUzs4QkFDRztzQkFDQzs2QkFDRzt5QkFDQzt1QkFDQzswQkFDQzt5QkFDbUI7c0JBQ2dDO0FBRTdGLE1BQU0sRUFBRUEsa0JBQWtCLEVBQUVDLDBCQUEwQixFQUFFLEdBQUdDLG1DQUFtQjtNQUU5RSxXQUFlQyxJQUFBQSxnQkFBTSxFQUFDLE1B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
|