occam-nominal 1.0.540 → 1.0.541
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/contained.js +15 -3
- package/lib/element/assertion/defined.js +11 -3
- package/lib/element/assertion/property.js +11 -3
- package/lib/element/assertion/schema.js +32 -1
- package/lib/element/assertion/signature.js +34 -1
- package/lib/element/assertion/type.js +7 -3
- package/lib/element/frame.js +6 -3
- package/lib/element/link.js +13 -20
- package/lib/utilities/json.js +3 -15
- package/package.json +1 -1
- package/src/element/assertion/contained.js +22 -5
- package/src/element/assertion/defined.js +14 -1
- package/src/element/assertion/property.js +15 -1
- package/src/element/assertion/schema.js +53 -0
- package/src/element/assertion/signature.js +57 -1
- package/src/element/assertion/type.js +8 -1
- package/src/element/frame.js +7 -1
- package/src/element/link.js +22 -30
- package/src/utilities/json.js +4 -18
|
@@ -14,8 +14,8 @@ const _elements = require("../../elements");
|
|
|
14
14
|
const _context = require("../../utilities/context");
|
|
15
15
|
const _state = require("../../utilities/state");
|
|
16
16
|
const _instantiate = require("../../process/instantiate");
|
|
17
|
-
const _substitutions = require("../../utilities/substitutions");
|
|
18
17
|
const _element = require("../../utilities/element");
|
|
18
|
+
const _substitutions = require("../../utilities/substitutions");
|
|
19
19
|
function _interop_require_default(obj) {
|
|
20
20
|
return obj && obj.__esModule ? obj : {
|
|
21
21
|
default: obj
|
|
@@ -148,7 +148,7 @@ const _default = (0, _elements.define)(class ContainedAssertion extends _asserti
|
|
|
148
148
|
const { name } = json;
|
|
149
149
|
if (this.name === name) {
|
|
150
150
|
(0, _context.instantiate)((context)=>{
|
|
151
|
-
const { string } = json, containedAssertionNode = (0, _instantiate.instantiateContainedAssertion)(string, context), node = containedAssertionNode, breakPoint = null, term =
|
|
151
|
+
const { string } = json, containedAssertionNode = (0, _instantiate.instantiateContainedAssertion)(string, context), node = containedAssertionNode, breakPoint = null, term = termFromContainedAssertionNode(containedAssertionNode, context), negated = negatedFromContainedAssertionNode(containedAssertionNode, context), statement = statementFromContainedAssertionNode(containedAssertionNode, context);
|
|
152
152
|
context = null;
|
|
153
153
|
containedAssertion = new ContainedAssertion(context, string, node, breakPoint, term, negated, statement);
|
|
154
154
|
}, context);
|
|
@@ -174,5 +174,17 @@ function validateWhenDerived(term, statement, negated, context, forward, back) {
|
|
|
174
174
|
}
|
|
175
175
|
return forward(context, back);
|
|
176
176
|
}
|
|
177
|
+
function termFromContainedAssertionNode(containedAssertionNode, context) {
|
|
178
|
+
const termNode = containedAssertionNode.getTermNode(), term = context.findTermByTermNode(termNode);
|
|
179
|
+
return term;
|
|
180
|
+
}
|
|
181
|
+
function negatedFromContainedAssertionNode(containedAssertionNode, context) {
|
|
182
|
+
const negated = containedAssertionNode.isNegated();
|
|
183
|
+
return negated;
|
|
184
|
+
}
|
|
185
|
+
function statementFromContainedAssertionNode(containedAssertionNode, context) {
|
|
186
|
+
const statementNode = containedAssertionNode.getStatementNode(), statement = context.findTermByTermNode(statementNode);
|
|
187
|
+
return statement;
|
|
188
|
+
}
|
|
177
189
|
|
|
178
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2Fzc2VydGlvbi9jb250YWluZWQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IEFzc2VydGlvbiBmcm9tIFwiLi4vYXNzZXJ0aW9uXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi8uLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgaW5zdGFudGlhdGUgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2NvbnRleHRcIjtcbmltcG9ydCB7IGlzRGVyaXZlZCwgaXNEZWNsYXJlZCB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvc3RhdGVcIjtcbmltcG9ydCB7IGluc3RhbnRpYXRlQ29udGFpbmVkQXNzZXJ0aW9uIH0gZnJvbSBcIi4uLy4uL3Byb2Nlc3MvaW5zdGFudGlhdGVcIjtcbmltcG9ydCB7IHRlcm1Gcm9tVGVybUFuZFN1YnN0aXR1dGlvbnMsIHN0YXRlbWVudEZyb21TdGF0ZW1lbnRBbmRTdWJzdGl0dXRpb25zIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9zdWJzdGl0dXRpb25zXCI7XG5pbXBvcnQgeyB0ZXJtRnJvbUNvbnRhaW5lZEFzc2VydGlvbk5vZGUsXG4gICAgICAgICBuZWdhdGVkRnJvbUNvbnRhaW5lZEFzc2VydGlvbk5vZGUsXG4gICAgICAgICBzdGF0ZW1lbnRGcm9tQ29udGFpbmVkQXNzZXJ0aW9uTm9kZSxcbiAgICAgICAgIGNvbnRhaW5lZEFzc2VydGlvbkZyb21TdGF0ZW1lbnROb2RlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9lbGVtZW50XCI7XG5cbmNvbnN0IHsgYWxsLCBleGlzdHMgfSA9IGNvbnRpbnVhdGlvblV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIENvbnRhaW5lZEFzc2VydGlvbiBleHRlbmRzIEFzc2VydGlvbiB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdGVybSwgbmVnYXRlZCwgc3RhdGVtZW50KSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50KTtcblxuICAgIHRoaXMudGVybSA9IHRlcm07XG4gICAgdGhpcy5uZWdhdGVkID0gbmVnYXRlZDtcbiAgICB0aGlzLnN0YXRlbWVudCA9IHN0YXRlbWVudDtcbiAgfVxuXG4gIGdldFRlcm0oKSB7XG4gICAgcmV0dXJuIHRoaXMudGVybTtcbiAgfVxuXG4gIGlzTmVnYXRlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5uZWdhdGVkO1xuICB9XG5cbiAgZ2V0U3RhdGVtZW50KCkge1xuICAgIHJldHVybiB0aGlzLnN0YXRlbWVudDtcbiAgfVxuXG4gIGdldENvbnRhaW5lZEFzc2VydGlvbk5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIGNvbnRhaW5lZEFzc2VydGlvbk5vZGUgPSBub2RlOyAgLy8vXG5cbiAgICByZXR1cm4gY29udGFpbmVkQXNzZXJ0aW9uTm9kZTtcbiAgfVxuXG4gIHZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgbGV0IGFzc2VydGlvbjtcblxuICAgIGNvbnN0IGNvbnRhaW5lZEFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2NvbnRhaW5lZEFzc2VydGlvblN0cmluZ30nIGNvbnRhaW5lZCBhc3NlcnRpb24uLi5gKTtcblxuICAgIGFzc2VydGlvbiA9IHRoaXMuZmluZEFzc2VydGlvbihjb250ZXh0KTtcblxuICAgIGlmIChhc3NlcnRpb24gIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGNvbnRhaW5lZEFzc2VydGlvbiA9IGFzc2VydGlvbjsgLy8vXG5cbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHtjb250YWluZWRBc3NlcnRpb25TdHJpbmd9JyBjb250YWluZWQgYXNzZXJ0aW9uIGlzIGFscmVhZHkgcHJlc2VudC5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoY29udGFpbmVkQXNzZXJ0aW9uLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9XG5cbiAgICBhc3NlcnRpb24gPSB0aGlzOyAvLy9cblxuICAgIGNvbnN0IHZhbGlkYXRlVGVybSA9IHRoaXMudmFsaWRhdGVUZXJtLmJpbmQodGhpcyksXG4gICAgICAgICAgdmFsaWRhdGVTdGF0ZW1lbnQgPSB0aGlzLnZhbGlkYXRlU3RhdGVtZW50LmJpbmQodGhpcyk7XG5cbiAgICByZXR1cm4gYWxsKFtcbiAgICAgIHZhbGlkYXRlVGVybSxcbiAgICAgIHZhbGlkYXRlU3RhdGVtZW50XG4gICAgXSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29uc3QgdmFsaWRhdGVXaGVuRGVjbGFyZWQgPSB0aGlzLnZhbGlkYXRlV2hlbkRlY2xhcmVkLmJpbmQodGhpcyksXG4gICAgICAgICAgICB2YWxpZGF0ZVdoZW5EZXJpdmVkID0gdGhpcy52YWxpZGF0ZVdoZW5EZXJpdmVkLmJpbmQodGhpcyk7XG5cbiAgICAgIHJldHVybiBleGlzdHMoW1xuICAgICAgICB2YWxpZGF0ZVdoZW5EZWNsYXJlZCxcbiAgICAgICAgdmFsaWRhdGVXaGVuRGVyaXZlZFxuICAgICAgXSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICBjb25zdCBjb250YWluZWRBc3NlcnRpb24gPSBhc3NlcnRpb247IC8vL1xuXG4gICAgICAgIGNvbnRleHQuYWRkQXNzZXJ0aW9uKGFzc2VydGlvbik7XG5cbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtjb250YWluZWRBc3NlcnRpb25TdHJpbmd9JyBjb250YWluZWQgYXNzZXJ0aW9uLmApO1xuXG4gICAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRhaW5lZEFzc2VydGlvbiwgY29udGV4dCwgYmFjayk7XG4gICAgICB9LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHZhbGlkYXRlVGVybShzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGNvbnRhaW5lZEFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2NvbnRhaW5lZEFzc2VydGlvblN0cmluZ30nIGNvbnRhaW5lZCBhc3NlcnRpb24ncyB0ZXJtLi4uYCk7XG5cbiAgICBjb25zdCB0ZXJtU2luZ3VsYXIgPSB0aGlzLnRlcm0uaXNTaW5ndWxhcigpO1xuXG4gICAgaWYgKCF0ZXJtU2luZ3VsYXIpIHtcbiAgICAgIGNvbnN0IHRlcm1TdHJpbmcgPSB0aGlzLnRlcm0uZ2V0U3RyaW5nKCkgLy8vXG5cbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybSBpcyBub3Qgc2luZ3VsYXIuYCk7XG5cbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMudGVybS52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKHRlcm0sIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIHRoaXMudGVybSAgPSB0ZXJtO1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZXMgdGhlICcke2NvbnRhaW5lZEFzc2VydGlvblN0cmluZ30nIGNvbnRhaW5lZCBhc3NlcnRpb24ncyB0ZXJtLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChzdGF0ZSwgY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB2YWxpZGF0ZVN0YXRlbWVudChzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGNvbnRhaW5lZEFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2NvbnRhaW5lZEFzc2VydGlvblN0cmluZ30nIGNvbnRhaW5lZCBhc3NlcnRpb24ncyBzdGF0ZW1lbnQuLi5gKTtcblxuICAgIGNvbnN0IHN0YXRlbWVudFNpbmd1bGFyID0gdGhpcy5zdGF0ZW1lbnQuaXNTaW5ndWxhcigpO1xuXG4gICAgaWYgKCFzdGF0ZW1lbnRTaW5ndWxhcikge1xuICAgICAgY29uc3Qgc3RhdGVtZW50U3RyaW5nID0gdGhpcy5zdGF0ZW1lbnQuZ2V0U3RyaW5nKCkgLy8vXG5cbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgaXMgbm90IHNpbmd1bGFyLmApO1xuXG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0YXRlbWVudC52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKHN0YXRlbWVudCwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgdGhpcy5zdGF0ZW1lbnQgPSBzdGF0ZW1lbnQ7XG5cbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlcyB0aGUgJyR7Y29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nfScgY29udGFpbmVkIGFzc2VydGlvbidzIHN0YXRlbWVudC5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoc3RhdGUsIGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdmFsaWRhdGVXaGVuRGVjbGFyZWQoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBkZWNsYXJlZCA9IGlzRGVjbGFyZWQoc3RhdGUpO1xuXG4gICAgaWYgKCFkZWNsYXJlZCkge1xuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICBjb25zdCBjb250YWluZWRBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2NvbnRhaW5lZEFzc2VydGlvblN0cmluZ30nIGRlY2xhcmVkIGNvbnRhaW5lZCBhc3NlcnRpb24uLi5gKTtcblxuICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7Y29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nfScgZGVjbGFyZWQgY29udGFpbmVkIGFzc2VydGlvbi5gKTtcblxuICAgIHJldHVybiBmb3J3YXJkKHN0YXRlLCBjb250ZXh0LCBiYWNrKTtcbiAgfVxuXG4gIHZhbGlkYXRlV2hlbkRlcml2ZWQoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBkZXJpdmVkID0gaXNEZXJpdmVkKHN0YXRlKTtcblxuICAgIGlmICghZGVyaXZlZCkge1xuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICBjb25zdCBjb250YWluZWRBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2NvbnRhaW5lZEFzc2VydGlvblN0cmluZ30nIGRlcml2ZWQgY29udGFpbmVkIGFzc2VydGlvbi4uLmApO1xuXG4gICAgcmV0dXJuIHZhbGlkYXRlV2hlbkRlcml2ZWQodGhpcy50ZXJtLCB0aGlzLnN0YXRlbWVudCwgdGhpcy5uZWdhdGVkLCBjb250ZXh0LCAoY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtjb250YWluZWRBc3NlcnRpb25TdHJpbmd9JyBkZXJpdmVkIGNvbnRhaW5lZCBhc3NlcnRpb24uYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHN0YXRlLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIGFwcGx5SW5kZXBlbmRlbnRseShnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dCwgIC8vL1xuICAgICAgICAgIGNvbnRhaW5lZEFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgQXBwbHlpbmcgdGhlICcke2NvbnRhaW5lZEFzc2VydGlvblN0cmluZ30nIGNvbnRhaW5lZCBhc3NlcnRpb24gaW5kZXBlbmRlbnRseS4uLmApO1xuXG4gICAgY29uc3QgdGVybSA9IHRlcm1Gcm9tVGVybUFuZFN1YnN0aXR1dGlvbnModGhpcy50ZXJtLCBjb250ZXh0KSxcbiAgICAgICAgICBzdGF0ZW1lbnQgPSBzdGF0ZW1lbnRGcm9tU3RhdGVtZW50QW5kU3Vic3RpdHV0aW9ucyh0aGlzLnN0YXRlbWVudCwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gdmFsaWRhdGVXaGVuRGVyaXZlZCh0ZXJtLCBzdGF0ZW1lbnQsIHRoaXMubmVnYXRlZCwgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLmFwcGxpZWQgdGhlICcke2NvbnRhaW5lZEFzc2VydGlvblN0cmluZ30nIGNvbnRhaW5lZCBhc3NlcnRpb24gaW5kZXBlbmRlbnRseS5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgbGV0IGpzb247XG5cbiAgICBjb25zdCBuYW1lID0gdGhpcy5nZXROYW1lKCksXG4gICAgICAgICAgc3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTtcblxuICAgIGpzb24gPSB7XG4gICAgICBuYW1lLFxuICAgICAgc3RyaW5nXG4gICAgfTtcblxuICAgIHJldHVybiBqc29uO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIkNvbnRhaW5lZEFzc2VydGlvblwiO1xuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gICAgbGV0IGNvbnRhaW5lZEFzc2VydGlvbiA9IG51bGw7XG5cbiAgICBjb25zdCB7IG5hbWUgfSA9IGpzb247XG5cbiAgICBpZiAodGhpcy5uYW1lID09PSBuYW1lKSB7XG4gICAgICBpbnN0YW50aWF0ZSgoY29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCB7IHN0cmluZyB9ID0ganNvbixcbiAgICAgICAgICAgICAgY29udGFpbmVkQXNzZXJ0aW9uTm9kZSA9IGluc3RhbnRpYXRlQ29udGFpbmVkQXNzZXJ0aW9uKHN0cmluZywgY29udGV4dCksXG4gICAgICAgICAgICAgIG5vZGUgPSBjb250YWluZWRBc3NlcnRpb25Ob2RlLCAgLy8vXG4gICAgICAgICAgICAgIGJyZWFrUG9pbnQgPSBudWxsLFxuICAgICAgICAgICAgICB0ZXJtID0gdGVybUZyb21Db250YWluZWRBc3NlcnRpb25Ob2RlKGNvbnRhaW5lZEFzc2VydGlvbk5vZGUsIGNvbnRleHQpLFxuICAgICAgICAgICAgICBuZWdhdGVkID0gbmVnYXRlZEZyb21Db250YWluZWRBc3NlcnRpb25Ob2RlKGNvbnRhaW5lZEFzc2VydGlvbk5vZGUsIGNvbnRleHQpLFxuICAgICAgICAgICAgICBzdGF0ZW1lbnQgPSBzdGF0ZW1lbnRGcm9tQ29udGFpbmVkQXNzZXJ0aW9uTm9kZShjb250YWluZWRBc3NlcnRpb25Ob2RlLCBjb250ZXh0KTtcblxuICAgICAgICBjb250ZXh0ID0gbnVsbDtcblxuICAgICAgICBjb250YWluZWRBc3NlcnRpb24gPSBuZXcgQ29udGFpbmVkQXNzZXJ0aW9uKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdGVybSwgbmVnYXRlZCwgc3RhdGVtZW50KTtcbiAgICAgIH0sIGNvbnRleHQpO1xuICAgIH1cblxuICAgIHJldHVybiBjb250YWluZWRBc3NlcnRpb247XG4gIH1cblxuICBzdGF0aWMgZnJvbVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50LmdldE5vZGUoKSxcbiAgICAgICAgICBjb250YWluZWRBc3NlcnRpb24gPSBjb250YWluZWRBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBjb250YWluZWRBc3NlcnRpb247XG4gIH1cbn0pO1xuXG5mdW5jdGlvbiB2YWxpZGF0ZVdoZW5EZXJpdmVkKHRlcm0sIHN0YXRlbWVudCwgbmVnYXRlZCwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICBjb25zdCB0ZXJtQ29udGFpbmVkID0gc3RhdGVtZW50LmlzVGVybUNvbnRhaW5lZCh0ZXJtLCBjb250ZXh0KTtcblxuICBsZXQgdmFsaWRhdGVzV2hlbkRlcml2ZWQgPSBmYWxzZTtcblxuICBpZiAoIW5lZ2F0ZWQgJiYgdGVybUNvbnRhaW5lZCkge1xuICAgIHZhbGlkYXRlc1doZW5EZXJpdmVkID0gdHJ1ZTtcbiAgfVxuXG4gIGlmIChuZWdhdGVkICYmICF0ZXJtQ29udGFpbmVkKSB7XG4gICAgdmFsaWRhdGVzV2hlbkRlcml2ZWQgPSB0cnVlO1xuICB9XG5cbiAgaWYgKCF2YWxpZGF0ZXNXaGVuRGVyaXZlZCkge1xuICAgIHJldHVybiBiYWNrKCk7XG4gIH1cblxuICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbn0iXSwibmFtZXMiOlsiYWxsIiwiZXhpc3RzIiwiY29udGludWF0aW9uVXRpbGl0aWVzIiwiZGVmaW5lIiwiQ29udGFpbmVkQXNzZXJ0aW9uIiwiQXNzZXJ0aW9uIiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJicmVha1BvaW50IiwidGVybSIsIm5lZ2F0ZWQiLCJzdGF0ZW1lbnQiLCJnZXRUZXJtIiwiaXNOZWdhdGVkIiwiZ2V0U3RhdGVtZW50IiwiZ2V0Q29udGFpbmVkQXNzZXJ0aW9uTm9kZSIsImdldE5vZGUiLCJjb250YWluZWRBc3NlcnRpb25Ob2RlIiwidmFsaWRhdGUiLCJzdGF0ZSIsImZvcndhcmQiLCJiYWNrIiwiYXNzZXJ0aW9uIiwiY29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJmaW5kQXNzZXJ0aW9uIiwiY29udGFpbmVkQXNzZXJ0aW9uIiwiZGVidWciLCJ2YWxpZGF0ZVRlcm0iLCJiaW5kIiwidmFsaWRhdGVTdGF0ZW1lbnQiLCJ2YWxpZGF0ZVdoZW5EZWNsYXJlZCIsInZhbGlkYXRlV2hlbkRlcml2ZWQiLCJhZGRBc3NlcnRpb24iLCJ0ZXJtU2luZ3VsYXIiLCJpc1Npbmd1bGFyIiwidGVybVN0cmluZyIsInN0YXRlbWVudFNpbmd1bGFyIiwic3RhdGVtZW50U3RyaW5nIiwiZGVjbGFyZWQiLCJpc0RlY2xhcmVkIiwiZGVyaXZlZCIsImlzRGVyaXZlZCIsImFwcGx5SW5kZXBlbmRlbnRseSIsImdlbmVyYWxDb250ZXh0Iiwic3BlY2lmaWNDb250ZXh0IiwidGVybUZyb21UZXJtQW5kU3Vic3RpdHV0aW9ucyIsInN0YXRlbWVudEZyb21TdGF0ZW1lbnRBbmRTdWJzdGl0dXRpb25zIiwidG9KU09OIiwianNvbiIsIm5hbWUiLCJnZXROYW1lIiwiZnJvbUpTT04iLCJpbnN0YW50aWF0ZSIsImluc3RhbnRpYXRlQ29udGFpbmVkQXNzZXJ0aW9uIiwidGVybUZyb21Db250YWluZWRBc3NlcnRpb25Ob2RlIiwibmVnYXRlZEZyb21Db250YWluZWRBc3NlcnRpb25Ob2RlIiwic3RhdGVtZW50RnJvbUNvbnRhaW5lZEFzc2VydGlvbk5vZGUiLCJmcm9tU3RhdGVtZW50Iiwic3RhdGVtZW50Tm9kZSIsImNvbnRhaW5lZEFzc2VydGlvbkZyb21TdGF0ZW1lbnROb2RlIiwidGVybUNvbnRhaW5lZCIsImlzVGVybUNvbnRhaW5lZCIsInZhbGlkYXRlc1doZW5EZXJpdmVkIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFrQkE7OztlQUFBOzs7Z0NBaEJzQztrRUFFaEI7MEJBRUM7eUJBQ0s7dUJBQ1U7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
|
|
190
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2Fzc2VydGlvbi9jb250YWluZWQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IEFzc2VydGlvbiBmcm9tIFwiLi4vYXNzZXJ0aW9uXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi8uLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgaW5zdGFudGlhdGUgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2NvbnRleHRcIjtcbmltcG9ydCB7IGlzRGVyaXZlZCwgaXNEZWNsYXJlZCB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvc3RhdGVcIjtcbmltcG9ydCB7IGluc3RhbnRpYXRlQ29udGFpbmVkQXNzZXJ0aW9uIH0gZnJvbSBcIi4uLy4uL3Byb2Nlc3MvaW5zdGFudGlhdGVcIjtcbmltcG9ydCB7IGNvbnRhaW5lZEFzc2VydGlvbkZyb21TdGF0ZW1lbnROb2RlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9lbGVtZW50XCI7XG5pbXBvcnQgeyB0ZXJtRnJvbVRlcm1BbmRTdWJzdGl0dXRpb25zLCBzdGF0ZW1lbnRGcm9tU3RhdGVtZW50QW5kU3Vic3RpdHV0aW9ucyB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvc3Vic3RpdHV0aW9uc1wiO1xuXG5jb25zdCB7IGFsbCwgZXhpc3RzIH0gPSBjb250aW51YXRpb25VdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBDb250YWluZWRBc3NlcnRpb24gZXh0ZW5kcyBBc3NlcnRpb24ge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHRlcm0sIG5lZ2F0ZWQsIHN0YXRlbWVudCkge1xuICAgIHN1cGVyKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCk7XG5cbiAgICB0aGlzLnRlcm0gPSB0ZXJtO1xuICAgIHRoaXMubmVnYXRlZCA9IG5lZ2F0ZWQ7XG4gICAgdGhpcy5zdGF0ZW1lbnQgPSBzdGF0ZW1lbnQ7XG4gIH1cblxuICBnZXRUZXJtKCkge1xuICAgIHJldHVybiB0aGlzLnRlcm07XG4gIH1cblxuICBpc05lZ2F0ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMubmVnYXRlZDtcbiAgfVxuXG4gIGdldFN0YXRlbWVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZW1lbnQ7XG4gIH1cblxuICBnZXRDb250YWluZWRBc3NlcnRpb25Ob2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBjb250YWluZWRBc3NlcnRpb25Ob2RlID0gbm9kZTsgIC8vL1xuXG4gICAgcmV0dXJuIGNvbnRhaW5lZEFzc2VydGlvbk5vZGU7XG4gIH1cblxuICB2YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGxldCBhc3NlcnRpb247XG5cbiAgICBjb25zdCBjb250YWluZWRBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtjb250YWluZWRBc3NlcnRpb25TdHJpbmd9JyBjb250YWluZWQgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgICBhc3NlcnRpb24gPSB0aGlzLmZpbmRBc3NlcnRpb24oY29udGV4dCk7XG5cbiAgICBpZiAoYXNzZXJ0aW9uICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBjb250YWluZWRBc3NlcnRpb24gPSBhc3NlcnRpb247IC8vL1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7Y29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nfScgY29udGFpbmVkIGFzc2VydGlvbiBpcyBhbHJlYWR5IHByZXNlbnQuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRhaW5lZEFzc2VydGlvbiwgY29udGV4dCwgYmFjayk7XG4gICAgfVxuXG4gICAgYXNzZXJ0aW9uID0gdGhpczsgLy8vXG5cbiAgICBjb25zdCB2YWxpZGF0ZVRlcm0gPSB0aGlzLnZhbGlkYXRlVGVybS5iaW5kKHRoaXMpLFxuICAgICAgICAgIHZhbGlkYXRlU3RhdGVtZW50ID0gdGhpcy52YWxpZGF0ZVN0YXRlbWVudC5iaW5kKHRoaXMpO1xuXG4gICAgcmV0dXJuIGFsbChbXG4gICAgICB2YWxpZGF0ZVRlcm0sXG4gICAgICB2YWxpZGF0ZVN0YXRlbWVudFxuICAgIF0sIHN0YXRlLCBjb250ZXh0LCAoc3RhdGUsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnN0IHZhbGlkYXRlV2hlbkRlY2xhcmVkID0gdGhpcy52YWxpZGF0ZVdoZW5EZWNsYXJlZC5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgdmFsaWRhdGVXaGVuRGVyaXZlZCA9IHRoaXMudmFsaWRhdGVXaGVuRGVyaXZlZC5iaW5kKHRoaXMpO1xuXG4gICAgICByZXR1cm4gZXhpc3RzKFtcbiAgICAgICAgdmFsaWRhdGVXaGVuRGVjbGFyZWQsXG4gICAgICAgIHZhbGlkYXRlV2hlbkRlcml2ZWRcbiAgICAgIF0sIHN0YXRlLCBjb250ZXh0LCAoc3RhdGUsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgY29uc3QgY29udGFpbmVkQXNzZXJ0aW9uID0gYXNzZXJ0aW9uOyAvLy9cblxuICAgICAgICBjb250ZXh0LmFkZEFzc2VydGlvbihhc3NlcnRpb24pO1xuXG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7Y29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nfScgY29udGFpbmVkIGFzc2VydGlvbi5gKTtcblxuICAgICAgICByZXR1cm4gZm9yd2FyZChjb250YWluZWRBc3NlcnRpb24sIGNvbnRleHQsIGJhY2spO1xuICAgICAgfSwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB2YWxpZGF0ZVRlcm0oc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBjb250YWluZWRBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtjb250YWluZWRBc3NlcnRpb25TdHJpbmd9JyBjb250YWluZWQgYXNzZXJ0aW9uJ3MgdGVybS4uLmApO1xuXG4gICAgY29uc3QgdGVybVNpbmd1bGFyID0gdGhpcy50ZXJtLmlzU2luZ3VsYXIoKTtcblxuICAgIGlmICghdGVybVNpbmd1bGFyKSB7XG4gICAgICBjb25zdCB0ZXJtU3RyaW5nID0gdGhpcy50ZXJtLmdldFN0cmluZygpIC8vL1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7dGVybVN0cmluZ30nIHRlcm0gaXMgbm90IHNpbmd1bGFyLmApO1xuXG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnRlcm0udmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsICh0ZXJtLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICB0aGlzLnRlcm0gID0gdGVybTtcblxuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVzIHRoZSAnJHtjb250YWluZWRBc3NlcnRpb25TdHJpbmd9JyBjb250YWluZWQgYXNzZXJ0aW9uJ3MgdGVybS5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoc3RhdGUsIGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdmFsaWRhdGVTdGF0ZW1lbnQoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBjb250YWluZWRBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtjb250YWluZWRBc3NlcnRpb25TdHJpbmd9JyBjb250YWluZWQgYXNzZXJ0aW9uJ3Mgc3RhdGVtZW50Li4uYCk7XG5cbiAgICBjb25zdCBzdGF0ZW1lbnRTaW5ndWxhciA9IHRoaXMuc3RhdGVtZW50LmlzU2luZ3VsYXIoKTtcblxuICAgIGlmICghc3RhdGVtZW50U2luZ3VsYXIpIHtcbiAgICAgIGNvbnN0IHN0YXRlbWVudFN0cmluZyA9IHRoaXMuc3RhdGVtZW50LmdldFN0cmluZygpIC8vL1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IGlzIG5vdCBzaW5ndWxhci5gKTtcblxuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdGF0ZW1lbnQudmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIChzdGF0ZW1lbnQsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIHRoaXMuc3RhdGVtZW50ID0gc3RhdGVtZW50O1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZXMgdGhlICcke2NvbnRhaW5lZEFzc2VydGlvblN0cmluZ30nIGNvbnRhaW5lZCBhc3NlcnRpb24ncyBzdGF0ZW1lbnQuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHN0YXRlLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHZhbGlkYXRlV2hlbkRlY2xhcmVkKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgZGVjbGFyZWQgPSBpc0RlY2xhcmVkKHN0YXRlKTtcblxuICAgIGlmICghZGVjbGFyZWQpIHtcbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfVxuXG4gICAgY29uc3QgY29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtjb250YWluZWRBc3NlcnRpb25TdHJpbmd9JyBkZWNsYXJlZCBjb250YWluZWQgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2NvbnRhaW5lZEFzc2VydGlvblN0cmluZ30nIGRlY2xhcmVkIGNvbnRhaW5lZCBhc3NlcnRpb24uYCk7XG5cbiAgICByZXR1cm4gZm9yd2FyZChzdGF0ZSwgY29udGV4dCwgYmFjayk7XG4gIH1cblxuICB2YWxpZGF0ZVdoZW5EZXJpdmVkKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgZGVyaXZlZCA9IGlzRGVyaXZlZChzdGF0ZSk7XG5cbiAgICBpZiAoIWRlcml2ZWQpIHtcbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfVxuXG4gICAgY29uc3QgY29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtjb250YWluZWRBc3NlcnRpb25TdHJpbmd9JyBkZXJpdmVkIGNvbnRhaW5lZCBhc3NlcnRpb24uLi5gKTtcblxuICAgIHJldHVybiB2YWxpZGF0ZVdoZW5EZXJpdmVkKHRoaXMudGVybSwgdGhpcy5zdGF0ZW1lbnQsIHRoaXMubmVnYXRlZCwgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7Y29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nfScgZGVyaXZlZCBjb250YWluZWQgYXNzZXJ0aW9uLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChzdGF0ZSwgY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICBhcHBseUluZGVwZW5kZW50bHkoZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQsICAvLy9cbiAgICAgICAgICBjb250YWluZWRBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYEFwcGx5aW5nIHRoZSAnJHtjb250YWluZWRBc3NlcnRpb25TdHJpbmd9JyBjb250YWluZWQgYXNzZXJ0aW9uIGluZGVwZW5kZW50bHkuLi5gKTtcblxuICAgIGNvbnN0IHRlcm0gPSB0ZXJtRnJvbVRlcm1BbmRTdWJzdGl0dXRpb25zKHRoaXMudGVybSwgY29udGV4dCksXG4gICAgICAgICAgc3RhdGVtZW50ID0gc3RhdGVtZW50RnJvbVN0YXRlbWVudEFuZFN1YnN0aXR1dGlvbnModGhpcy5zdGF0ZW1lbnQsIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHZhbGlkYXRlV2hlbkRlcml2ZWQodGVybSwgc3RhdGVtZW50LCB0aGlzLm5lZ2F0ZWQsIGNvbnRleHQsIChjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi5hcHBsaWVkIHRoZSAnJHtjb250YWluZWRBc3NlcnRpb25TdHJpbmd9JyBjb250YWluZWQgYXNzZXJ0aW9uIGluZGVwZW5kZW50bHkuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIGxldCBqc29uO1xuXG4gICAgY29uc3QgbmFtZSA9IHRoaXMuZ2V0TmFtZSgpLFxuICAgICAgICAgIHN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7XG5cbiAgICBqc29uID0ge1xuICAgICAgbmFtZSxcbiAgICAgIHN0cmluZ1xuICAgIH07XG5cbiAgICByZXR1cm4ganNvbjtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJDb250YWluZWRBc3NlcnRpb25cIjtcblxuICBzdGF0aWMgZnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICAgIGxldCBjb250YWluZWRBc3NlcnRpb24gPSBudWxsO1xuXG4gICAgY29uc3QgeyBuYW1lIH0gPSBqc29uO1xuXG4gICAgaWYgKHRoaXMubmFtZSA9PT0gbmFtZSkge1xuICAgICAgaW5zdGFudGlhdGUoKGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgICAgIGNvbnRhaW5lZEFzc2VydGlvbk5vZGUgPSBpbnN0YW50aWF0ZUNvbnRhaW5lZEFzc2VydGlvbihzdHJpbmcsIGNvbnRleHQpLFxuICAgICAgICAgICAgICBub2RlID0gY29udGFpbmVkQXNzZXJ0aW9uTm9kZSwgIC8vL1xuICAgICAgICAgICAgICBicmVha1BvaW50ID0gbnVsbCxcbiAgICAgICAgICAgICAgdGVybSA9IHRlcm1Gcm9tQ29udGFpbmVkQXNzZXJ0aW9uTm9kZShjb250YWluZWRBc3NlcnRpb25Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgbmVnYXRlZCA9IG5lZ2F0ZWRGcm9tQ29udGFpbmVkQXNzZXJ0aW9uTm9kZShjb250YWluZWRBc3NlcnRpb25Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgc3RhdGVtZW50ID0gc3RhdGVtZW50RnJvbUNvbnRhaW5lZEFzc2VydGlvbk5vZGUoY29udGFpbmVkQXNzZXJ0aW9uTm9kZSwgY29udGV4dCk7XG5cbiAgICAgICAgY29udGV4dCA9IG51bGw7XG5cbiAgICAgICAgY29udGFpbmVkQXNzZXJ0aW9uID0gbmV3IENvbnRhaW5lZEFzc2VydGlvbihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHRlcm0sIG5lZ2F0ZWQsIHN0YXRlbWVudCk7XG4gICAgICB9LCBjb250ZXh0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29udGFpbmVkQXNzZXJ0aW9uO1xuICB9XG5cbiAgc3RhdGljIGZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KSB7XG4gICAgY29uc3Qgc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudC5nZXROb2RlKCksXG4gICAgICAgICAgY29udGFpbmVkQXNzZXJ0aW9uID0gY29udGFpbmVkQXNzZXJ0aW9uRnJvbVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gY29udGFpbmVkQXNzZXJ0aW9uO1xuICB9XG59KTtcblxuZnVuY3Rpb24gdmFsaWRhdGVXaGVuRGVyaXZlZCh0ZXJtLCBzdGF0ZW1lbnQsIG5lZ2F0ZWQsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgY29uc3QgdGVybUNvbnRhaW5lZCA9IHN0YXRlbWVudC5pc1Rlcm1Db250YWluZWQodGVybSwgY29udGV4dCk7XG5cbiAgbGV0IHZhbGlkYXRlc1doZW5EZXJpdmVkID0gZmFsc2U7XG5cbiAgaWYgKCFuZWdhdGVkICYmIHRlcm1Db250YWluZWQpIHtcbiAgICB2YWxpZGF0ZXNXaGVuRGVyaXZlZCA9IHRydWU7XG4gIH1cblxuICBpZiAobmVnYXRlZCAmJiAhdGVybUNvbnRhaW5lZCkge1xuICAgIHZhbGlkYXRlc1doZW5EZXJpdmVkID0gdHJ1ZTtcbiAgfVxuXG4gIGlmICghdmFsaWRhdGVzV2hlbkRlcml2ZWQpIHtcbiAgICByZXR1cm4gYmFjaygpO1xuICB9XG5cbiAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG59XG5cbmZ1bmN0aW9uIHRlcm1Gcm9tQ29udGFpbmVkQXNzZXJ0aW9uTm9kZShjb250YWluZWRBc3NlcnRpb25Ob2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHRlcm1Ob2RlID0gY29udGFpbmVkQXNzZXJ0aW9uTm9kZS5nZXRUZXJtTm9kZSgpLFxuICAgICAgICB0ZXJtID0gY29udGV4dC5maW5kVGVybUJ5VGVybU5vZGUodGVybU5vZGUpO1xuXG4gIHJldHVybiB0ZXJtO1xufVxuXG5mdW5jdGlvbiBuZWdhdGVkRnJvbUNvbnRhaW5lZEFzc2VydGlvbk5vZGUoY29udGFpbmVkQXNzZXJ0aW9uTm9kZSwgY29udGV4dCkge1xuICBjb25zdCBuZWdhdGVkID0gY29udGFpbmVkQXNzZXJ0aW9uTm9kZS5pc05lZ2F0ZWQoKTtcblxuICByZXR1cm4gbmVnYXRlZDtcbn1cblxuZnVuY3Rpb24gc3RhdGVtZW50RnJvbUNvbnRhaW5lZEFzc2VydGlvbk5vZGUoY29udGFpbmVkQXNzZXJ0aW9uTm9kZSwgY29udGV4dCkge1xuICBjb25zdCBzdGF0ZW1lbnROb2RlID0gY29udGFpbmVkQXNzZXJ0aW9uTm9kZS5nZXRTdGF0ZW1lbnROb2RlKCksXG4gICAgICAgIHN0YXRlbWVudCA9IGNvbnRleHQuZmluZFRlcm1CeVRlcm1Ob2RlKHN0YXRlbWVudE5vZGUpO1xuXG4gIHJldHVybiBzdGF0ZW1lbnQ7XG59XG4iXSwibmFtZXMiOlsiYWxsIiwiZXhpc3RzIiwiY29udGludWF0aW9uVXRpbGl0aWVzIiwiZGVmaW5lIiwiQ29udGFpbmVkQXNzZXJ0aW9uIiwiQXNzZXJ0aW9uIiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJicmVha1BvaW50IiwidGVybSIsIm5lZ2F0ZWQiLCJzdGF0ZW1lbnQiLCJnZXRUZXJtIiwiaXNOZWdhdGVkIiwiZ2V0U3RhdGVtZW50IiwiZ2V0Q29udGFpbmVkQXNzZXJ0aW9uTm9kZSIsImdldE5vZGUiLCJjb250YWluZWRBc3NlcnRpb25Ob2RlIiwidmFsaWRhdGUiLCJzdGF0ZSIsImZvcndhcmQiLCJiYWNrIiwiYXNzZXJ0aW9uIiwiY29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJmaW5kQXNzZXJ0aW9uIiwiY29udGFpbmVkQXNzZXJ0aW9uIiwiZGVidWciLCJ2YWxpZGF0ZVRlcm0iLCJiaW5kIiwidmFsaWRhdGVTdGF0ZW1lbnQiLCJ2YWxpZGF0ZVdoZW5EZWNsYXJlZCIsInZhbGlkYXRlV2hlbkRlcml2ZWQiLCJhZGRBc3NlcnRpb24iLCJ0ZXJtU2luZ3VsYXIiLCJpc1Npbmd1bGFyIiwidGVybVN0cmluZyIsInN0YXRlbWVudFNpbmd1bGFyIiwic3RhdGVtZW50U3RyaW5nIiwiZGVjbGFyZWQiLCJpc0RlY2xhcmVkIiwiZGVyaXZlZCIsImlzRGVyaXZlZCIsImFwcGx5SW5kZXBlbmRlbnRseSIsImdlbmVyYWxDb250ZXh0Iiwic3BlY2lmaWNDb250ZXh0IiwidGVybUZyb21UZXJtQW5kU3Vic3RpdHV0aW9ucyIsInN0YXRlbWVudEZyb21TdGF0ZW1lbnRBbmRTdWJzdGl0dXRpb25zIiwidG9KU09OIiwianNvbiIsIm5hbWUiLCJnZXROYW1lIiwiZnJvbUpTT04iLCJpbnN0YW50aWF0ZSIsImluc3RhbnRpYXRlQ29udGFpbmVkQXNzZXJ0aW9uIiwidGVybUZyb21Db250YWluZWRBc3NlcnRpb25Ob2RlIiwibmVnYXRlZEZyb21Db250YWluZWRBc3NlcnRpb25Ob2RlIiwic3RhdGVtZW50RnJvbUNvbnRhaW5lZEFzc2VydGlvbk5vZGUiLCJmcm9tU3RhdGVtZW50Iiwic3RhdGVtZW50Tm9kZSIsImNvbnRhaW5lZEFzc2VydGlvbkZyb21TdGF0ZW1lbnROb2RlIiwidGVybUNvbnRhaW5lZCIsImlzVGVybUNvbnRhaW5lZCIsInZhbGlkYXRlc1doZW5EZXJpdmVkIiwidGVybU5vZGUiLCJnZXRUZXJtTm9kZSIsImZpbmRUZXJtQnlUZXJtTm9kZSIsImdldFN0YXRlbWVudE5vZGUiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQWVBOzs7ZUFBQTs7O2dDQWJzQztrRUFFaEI7MEJBRUM7eUJBQ0s7dUJBQ1U7NkJBQ1E7eUJBQ007K0JBQ2lDOzs7Ozs7QUFFckYsTUFBTSxFQUFFQSxHQUFHLEVBQUVDLE1BQU0sRUFBRSxHQUFHQyxxQ0FBcUI7TUFFN0MsV0FBZUMsSUFBQUEsZ0JBQU0sRUFBQyxNQUFNQywyQkFBMkJDLGtCQUFTO0lBQzlELFlBQVlDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxJQUFJLEVBQUVDLFVBQVUsRUFBRUMsSUFBSSxFQUFFQyxPQUFPLEVBQUVDLFNBQVMsQ0FBRTtRQUN2RSxLQUFLLENBQUNOLFNBQVNDLFFBQVFDLE1BQU1DO1FBRTdCLElBQUksQ0FBQ0MsSUFBSSxHQUFHQTtRQUNaLElBQUksQ0FBQ0MsT0FBTyxHQUFHQTtRQUNmLElBQUksQ0FBQ0MsU0FBUyxHQUFHQTtJQUNuQjtJQUVBQyxVQUFVO1FBQ1IsT0FBTyxJ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
|
|
@@ -15,8 +15,8 @@ const _context = require("../../utilities/context");
|
|
|
15
15
|
const _state = require("../../utilities/state");
|
|
16
16
|
const _instantiate = require("../../process/instantiate");
|
|
17
17
|
const _substitutions = require("../../utilities/substitutions");
|
|
18
|
-
const _equivalences = require("../../utilities/equivalences");
|
|
19
18
|
const _element = require("../../utilities/element");
|
|
19
|
+
const _equivalences = require("../../utilities/equivalences");
|
|
20
20
|
function _interop_require_default(obj) {
|
|
21
21
|
return obj && obj.__esModule ? obj : {
|
|
22
22
|
default: obj
|
|
@@ -128,7 +128,7 @@ const _default = (0, _elements.define)(class DefinedAssertion extends _assertion
|
|
|
128
128
|
const { name } = json;
|
|
129
129
|
if (this.name === name) {
|
|
130
130
|
(0, _context.instantiate)((context)=>{
|
|
131
|
-
const { string } = json, definedAssertionNode = (0, _instantiate.instantiateDefinedAssertion)(string, context), node = definedAssertionNode, breakPoint = null, term =
|
|
131
|
+
const { string } = json, definedAssertionNode = (0, _instantiate.instantiateDefinedAssertion)(string, context), node = definedAssertionNode, breakPoint = null, term = termFromJDefinedAssertionNode(definedAssertionNode, context), negated = negatedFromJDefinedAssertionNode(definedAssertionNode, context);
|
|
132
132
|
context = null;
|
|
133
133
|
definedAssertion = new DefinedAssertion(context, string, node, breakPoint, term, negated);
|
|
134
134
|
}, context);
|
|
@@ -165,5 +165,13 @@ function validateWhenDerived(term, negated, context, forward, back) {
|
|
|
165
165
|
}
|
|
166
166
|
return forward(context, back);
|
|
167
167
|
}
|
|
168
|
+
function termFromJDefinedAssertionNode(definedAssertionNode, context) {
|
|
169
|
+
const termNode = definedAssertionNode.getTermNode(), term = context.findTermByTermNode(termNode);
|
|
170
|
+
return term;
|
|
171
|
+
}
|
|
172
|
+
function negatedFromJDefinedAssertionNode(definedAssertionNode, context) {
|
|
173
|
+
const negated = definedAssertionNode.isNegated();
|
|
174
|
+
return negated;
|
|
175
|
+
}
|
|
168
176
|
|
|
169
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2Fzc2VydGlvbi9kZWZpbmVkLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBjb250aW51YXRpb25VdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCBBc3NlcnRpb24gZnJvbSBcIi4uL2Fzc2VydGlvblwiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IGluc3RhbnRpYXRlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9jb250ZXh0XCI7XG5pbXBvcnQgeyBpc0Rlcml2ZWQsIGlzRGVjbGFyZWQgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL3N0YXRlXCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZURlZmluZWRBc3NlcnRpb24gfSBmcm9tIFwiLi4vLi4vcHJvY2Vzcy9pbnN0YW50aWF0ZVwiO1xuaW1wb3J0IHsgdGVybUZyb21UZXJtQW5kU3Vic3RpdHV0aW9ucyB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvc3Vic3RpdHV0aW9uc1wiO1xuaW1wb3J0IHsgc2VwYXJhdGVHcm91bmRlZFRlcm1zQW5kRGVmaW5lZFZhcmlhYmxlcyB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvZXF1aXZhbGVuY2VzXCI7XG5pbXBvcnQgeyB0ZXJtRnJvbUpEZWZpbmVkQXNzZXJ0aW9uTm9kZSwgbmVnYXRlZEZyb21KRGVmaW5lZEFzc2VydGlvbk5vZGUsIGRlZmluZWRBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvZWxlbWVudFwiO1xuXG5jb25zdCB7IGFsbCwgZXhpc3RzIH0gPSBjb250aW51YXRpb25VdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBEZWZpbmVkQXNzZXJ0aW9uIGV4dGVuZHMgQXNzZXJ0aW9uIHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB0ZXJtLCBuZWdhdGVkKSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50KTtcblxuICAgIHRoaXMudGVybSA9IHRlcm07XG4gICAgdGhpcy5uZWdhdGVkID0gbmVnYXRlZDtcbiAgfVxuXG4gIGdldFRlcm0oKSB7XG4gICAgcmV0dXJuIHRoaXMudGVybTtcbiAgfVxuXG4gIGlzTmVnYXRlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5uZWdhdGVkO1xuICB9XG5cbiAgZ2V0RGVmaW5lZEFzc2VydGlvbk5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIGRlZmluZWRBc3NlcnRpb25Ob2RlID0gbm9kZTsgIC8vL1xuXG4gICAgcmV0dXJuIGRlZmluZWRBc3NlcnRpb25Ob2RlO1xuICB9XG5cbiAgdmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBsZXQgYXNzZXJ0aW9uO1xuXG4gICAgY29uc3QgZGVmaW5lZEFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2RlZmluZWRBc3NlcnRpb25TdHJpbmd9JyBkZWZpbmVkIGFzc2VydGlvbi4uLmApO1xuXG4gICAgYXNzZXJ0aW9uID0gdGhpcy5maW5kQXNzZXJ0aW9uKGNvbnRleHQpO1xuXG4gICAgaWYgKGFzc2VydGlvbiAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgZGVmaW5lZEFzc2VydGlvbiA9IGFzc2VydGlvbjsgLy8vXG5cbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHtkZWZpbmVkQXNzZXJ0aW9uU3RyaW5nfScgZGVmaW5lZCBhc3NlcnRpb24gaXMgYWxyZWFkeSBwcmVzZW50LmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChkZWZpbmVkQXNzZXJ0aW9uLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9XG5cbiAgICBhc3NlcnRpb24gPSB0aGlzO1xuXG4gICAgY29uc3QgdmFsaWRhdGVUZXJtID0gdGhpcy52YWxpZGF0ZVRlcm0uYmluZCh0aGlzKTtcblxuICAgIHJldHVybiBhbGwoW1xuICAgICAgdmFsaWRhdGVUZXJtXG4gICAgXSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29uc3QgdmFsaWRhdGVXaGVuRGVjbGFyZWQgPSB0aGlzLnZhbGlkYXRlV2hlbkRlY2xhcmVkLmJpbmQodGhpcyksXG4gICAgICAgICAgICB2YWxpZGF0ZVdoZW5EZXJpdmVkID0gdGhpcy52YWxpZGF0ZVdoZW5EZXJpdmVkLmJpbmQodGhpcyk7XG5cbiAgICAgIHJldHVybiBleGlzdHMoW1xuICAgICAgICB2YWxpZGF0ZVdoZW5EZWNsYXJlZCxcbiAgICAgICAgdmFsaWRhdGVXaGVuRGVyaXZlZFxuICAgICAgXSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICBjb25zdCBkZWZpbmVkQXNzZXJ0aW9uID0gYXNzZXJ0aW9uOyAvLy9cblxuICAgICAgICBjb250ZXh0LmFkZEFzc2VydGlvbihhc3NlcnRpb24pO1xuXG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7ZGVmaW5lZEFzc2VydGlvblN0cmluZ30nIGRlZmluZWQgYXNzZXJ0aW9uLmApO1xuXG4gICAgICAgIHJldHVybiBmb3J3YXJkKGRlZmluZWRBc3NlcnRpb24sIGNvbnRleHQsIGJhY2spO1xuICAgICAgfSwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB2YWxpZGF0ZVRlcm0oc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBkZWZpbmVkQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7ZGVmaW5lZEFzc2VydGlvblN0cmluZ30nIGRlZmluZWQgYXNzZXJ0aW9uJ3MgdGVybS4uLmApO1xuXG4gICAgY29uc3QgdGVybVNpbmd1bGFyID0gdGhpcy50ZXJtLmlzU2luZ3VsYXIoKTtcblxuICAgIGlmICghdGVybVNpbmd1bGFyKSB7XG4gICAgICBjb25zdCB0ZXJtU3RyaW5nID0gdGhpcy50ZXJtLmdldFN0cmluZygpIC8vL1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7dGVybVN0cmluZ30nIHRlcm0gaXMgbm90IHNpbmd1bGFyLmApO1xuXG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnRlcm0udmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsICh0ZXJtLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICB0aGlzLnRlcm0gPSB0ZXJtO1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZXMgdGhlICcke2RlZmluZWRBc3NlcnRpb25TdHJpbmd9JyBkZWZpbmVkIGFzc2VydGlvbidzIHRlcm0uYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHN0YXRlLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHZhbGlkYXRlV2hlbkRlY2xhcmVkKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgZGVjbGFyZWQgPSBpc0RlY2xhcmVkKHN0YXRlKTtcblxuICAgIGlmICghZGVjbGFyZWQpIHtcbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfVxuXG4gICAgY29uc3QgZGVmaW5lZEFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7ZGVmaW5lZEFzc2VydGlvblN0cmluZ30nIGRlY2xhcmVkIGRlZmluZWQgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2RlZmluZWRBc3NlcnRpb25TdHJpbmd9JyBkZWNsYXJlZCBkZWZpbmVkIGFzc2VydGlvbi5gKTtcblxuICAgIHJldHVybiBmb3J3YXJkKHN0YXRlLCBjb250ZXh0LCBiYWNrKTtcbiAgfVxuXG4gIHZhbGlkYXRlV2hlbkRlcml2ZWQoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBkZXJpdmVkID0gaXNEZXJpdmVkKHN0YXRlKTtcblxuICAgIGlmICghZGVyaXZlZCkge1xuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICBjb25zdCBkZWZpbmVkQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtkZWZpbmVkQXNzZXJ0aW9uU3RyaW5nfScgZGVyaXZlZCBkZWZpbmVkIGFzc2VydGlvbi4uLmApO1xuXG4gICAgcmV0dXJuIHZhbGlkYXRlV2hlbkRlcml2ZWQodGhpcy50ZXJtLCB0aGlzLm5lZ2F0ZWQsIGNvbnRleHQsIChjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2RlZmluZWRBc3NlcnRpb25TdHJpbmd9JyBkZXJpdmVkIGRlZmluZWQgYXNzZXJ0aW9uLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChzdGF0ZSwgY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICBhcHBseUluZGVwZW5kZW50bHkoZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQsIC8vL1xuICAgICAgICAgIGRlZmluZWRBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYEFwMGx5aW5nIHRoZSAnJHtkZWZpbmVkQXNzZXJ0aW9uU3RyaW5nfScgZGVmaW5lZCBhc3NlcnRpb24gaW5kZXBlbmRlbnRseS4uLmApO1xuXG4gICAgY29uc3QgdGVybSA9IHRlcm1Gcm9tVGVybUFuZFN1YnN0aXR1dGlvbnModGhpcy50ZXJtLCBjb250ZXh0KTtcblxuICAgIHJldHVybiB2YWxpZGF0ZVdoZW5EZXJpdmVkKHRlcm0sIHRoaXMubmVnYXRlZCwgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLmFwcGxpZWQgdGhlICcke2RlZmluZWRBc3NlcnRpb25TdHJpbmd9JyBkZWZpbmVkIGFzc2VydGlvbiBpbmRlcGVuZGVudGx5LmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICBsZXQganNvbjtcblxuICAgIGNvbnN0IG5hbWUgPSB0aGlzLmdldE5hbWUoKSxcbiAgICAgICAgICBzdHJpbmcgPSB0aGlzLmdldFN0cmluZygpO1xuXG4gICAganNvbiA9IHtcbiAgICAgIG5hbWUsXG4gICAgICBzdHJpbmdcbiAgICB9O1xuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiRGVmaW5lZEFzc2VydGlvblwiO1xuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gICAgbGV0IGRlZmluZWRBc3NlcnRpb24gPSBudWxsO1xuXG4gICAgY29uc3QgeyBuYW1lIH0gPSBqc29uO1xuXG4gICAgaWYgKHRoaXMubmFtZSA9PT0gbmFtZSkge1xuICAgICAgaW5zdGFudGlhdGUoKGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgICAgIGRlZmluZWRBc3NlcnRpb25Ob2RlID0gaW5zdGFudGlhdGVEZWZpbmVkQXNzZXJ0aW9uKHN0cmluZywgY29udGV4dCksXG4gICAgICAgICAgICAgIG5vZGUgPSBkZWZpbmVkQXNzZXJ0aW9uTm9kZSwgIC8vL1xuICAgICAgICAgICAgICBicmVha1BvaW50ID0gbnVsbCxcbiAgICAgICAgICAgICAgdGVybSA9IHRlcm1Gcm9tSkRlZmluZWRBc3NlcnRpb25Ob2RlKGRlZmluZWRBc3NlcnRpb25Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgbmVnYXRlZCA9IG5lZ2F0ZWRGcm9tSkRlZmluZWRBc3NlcnRpb25Ob2RlKGRlZmluZWRBc3NlcnRpb25Ob2RlLCBjb250ZXh0KTtcblxuICAgICAgICBjb250ZXh0ID0gbnVsbDtcblxuICAgICAgICBkZWZpbmVkQXNzZXJ0aW9uID0gbmV3IERlZmluZWRBc3NlcnRpb24oY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB0ZXJtLCBuZWdhdGVkKTtcbiAgICAgIH0sIGNvbnRleHQpO1xuICAgIH1cblxuICAgIHJldHVybiBkZWZpbmVkQXNzZXJ0aW9uO1xuICB9XG5cbiAgc3RhdGljIGZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KSB7XG4gICAgY29uc3Qgc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudC5nZXROb2RlKCksXG4gICAgICAgICAgZGVmaW5lZEFzc2VydGlvbiA9IGRlZmluZWRBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBkZWZpbmVkQXNzZXJ0aW9uO1xuICB9XG59KTtcblxuZnVuY3Rpb24gaXNWYXJpYWJsZURlZmluZWQodmFyaWFibGUsIGNvbnRleHQpIHtcbiAgY29uc3QgZXF1aXZhbGVuY2VzID0gY29udGV4dC5nZXRFcXVpdmFsZW5jZXMoKSxcbiAgICAgICAgZ3JvdW5kZWRUZXJtcyA9IFtdLFxuICAgICAgICBkZWZpbmVkVmFyaWFibGVzID0gW107XG5cbiAgc2VwYXJhdGVHcm91bmRlZFRlcm1zQW5kRGVmaW5lZFZhcmlhYmxlcyhlcXVpdmFsZW5jZXMsIGdyb3VuZGVkVGVybXMsIGRlZmluZWRWYXJpYWJsZXMsIGNvbnRleHQpO1xuXG4gIGNvbnN0IHZhcmlhYmxlTWF0Y2hlc0RlZmluZWRWYXJpYWJsZSA9IGRlZmluZWRWYXJpYWJsZXMuc29tZSgoZGVmaW5lZFZhcmlhYmxlKSA9PiB7XG4gICAgICAgICAgY29uc3QgZGVmaW5lZFZhcmlhYmxlRXF1YWxUb1ZhcmlhYmxlID0gZGVmaW5lZFZhcmlhYmxlLmlzRXF1YWxUbyh2YXJpYWJsZSk7XG5cbiAgICAgICAgICBpZiAoZGVmaW5lZFZhcmlhYmxlRXF1YWxUb1ZhcmlhYmxlID09PSB2YXJpYWJsZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgICAgdmFyaWFibGVEZWZpbmVkID0gdmFyaWFibGVNYXRjaGVzRGVmaW5lZFZhcmlhYmxlOyAvLy9cblxuICByZXR1cm4gdmFyaWFibGVEZWZpbmVkO1xufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZVdoZW5EZXJpdmVkKHRlcm0sIG5lZ2F0ZWQsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgY29uc3QgdmFyaWFibGVJZGVudGlmaWVyID0gdGVybS5nZXRWYXJpYWJsZUlkZW50aWZpZXIoKSxcbiAgICAgICAgZGVjbGFyZWREYXJpYWJsZSA9IGNvbnRleHQuZmluZERlY2xhcmVkVmFyaWFibGVCeVZhcmlhYmxlSWRlbnRpZmllcih2YXJpYWJsZUlkZW50aWZpZXIpLFxuICAgICAgICBkZWNsYXJlZERhcmlhYmxlRGVmaW5lZCA9IGlzVmFyaWFibGVEZWZpbmVkKGRlY2xhcmVkRGFyaWFibGUsIGNvbnRleHQpO1xuXG4gIGxldCB2YWxpZGF0ZXNXaGVuRGVyaXZlZCA9IGZhbHNlO1xuXG4gIGlmICghbmVnYXRlZCAmJiBkZWNsYXJlZERhcmlhYmxlRGVmaW5lZCkge1xuICAgIHZhbGlkYXRlc1doZW5EZXJpdmVkID0gdHJ1ZTtcbiAgfVxuXG4gIGlmIChuZWdhdGVkICYmICFkZWNsYXJlZERhcmlhYmxlRGVmaW5lZCkge1xuICAgIHZhbGlkYXRlc1doZW5EZXJpdmVkID0gdHJ1ZTtcbiAgfVxuXG4gIGlmICghdmFsaWRhdGVzV2hlbkRlcml2ZWQpIHtcbiAgICByZXR1cm4gYmFjaygpO1xuICB9XG5cbiAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG59XG4iXSwibmFtZXMiOlsiYWxsIiwiZXhpc3RzIiwiY29udGludWF0aW9uVXRpbGl0aWVzIiwiZGVmaW5lIiwiRGVmaW5lZEFzc2VydGlvbiIsIkFzc2VydGlvbiIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsInRlcm0iLCJuZWdhdGVkIiwiZ2V0VGVybSIsImlzTmVnYXRlZCIsImdldERlZmluZWRBc3NlcnRpb25Ob2RlIiwiZ2V0Tm9kZSIsImRlZmluZWRBc3NlcnRpb25Ob2RlIiwidmFsaWRhdGUiLCJzdGF0ZSIsImZvcndhcmQiLCJiYWNrIiwiYXNzZXJ0aW9uIiwiZGVmaW5lZEFzc2VydGlvblN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwiZmluZEFzc2VydGlvbiIsImRlZmluZWRBc3NlcnRpb24iLCJkZWJ1ZyIsInZhbGlkYXRlVGVybSIsImJpbmQiLCJ2YWxpZGF0ZVdoZW5EZWNsYXJlZCIsInZhbGlkYXRlV2hlbkRlcml2ZWQiLCJhZGRBc3NlcnRpb24iLCJ0ZXJtU2luZ3VsYXIiLCJpc1Npbmd1bGFyIiwidGVybVN0cmluZyIsImRlY2xhcmVkIiwiaXNEZWNsYXJlZCIsImRlcml2ZWQiLCJpc0Rlcml2ZWQiLCJhcHBseUluZGVwZW5kZW50bHkiLCJnZW5lcmFsQ29udGV4dCIsInNwZWNpZmljQ29udGV4dCIsInRlcm1Gcm9tVGVybUFuZFN1YnN0aXR1dGlvbnMiLCJ0b0pTT04iLCJqc29uIiwibmFtZSIsImdldE5hbWUiLCJmcm9tSlNPTiIsImluc3RhbnRpYXRlIiwiaW5zdGFudGlhdGVEZWZpbmVkQXNzZXJ0aW9uIiwidGVybUZyb21KRGVmaW5lZEFzc2VydGlvbk5vZGUiLCJuZWdhdGVkRnJvbUpEZWZpbmVkQXNzZXJ0aW9uTm9kZSIsImZyb21TdGF0ZW1lbnQiLCJzdGF0ZW1lbnQiLCJzdGF0ZW1lbnROb2RlIiwiZGVmaW5lZEFzc2VydGlvbkZyb21TdGF0ZW1lbnROb2RlIiwiaXNWYXJpYWJsZURlZmluZWQiLCJ2YXJpYWJsZSIsImVxdWl2YWxlbmNlcyIsImdldEVxdWl2YWxlbmNlcyIsImdyb3VuZGVkVGVybXMiLCJkZWZpbmVkVmFyaWFibGVzIiwic2VwYXJhdGVHcm91bmRlZFRlcm1zQW5kRGVmaW5lZFZhcmlhYmxlcyIsInZhcmlhYmxlTWF0Y2hlc0RlZmluZWRWYXJpYWJsZSIsInNvbWUiLCJkZWZpbmVkVmFyaWFibGUiLCJkZWZpbmVkVmFyaWFibGVFcXVhbFRvVmFyaWFibGUiLCJpc0VxdWFsVG8iLCJ2YXJpYWJsZURlZmluZWQiLCJ2YXJpYWJsZUlkZW50aWZpZXIiLCJnZXRWYXJpYWJsZUlkZW50aWZpZXIiLCJkZWNsYXJlZERhcmlhYmxlIiwiZmluZERlY2xhcmVkVmFyaWFibGVCeVZhcmlhYmxlSWRlbnRpZmllciIsImRlY2xhcmVkRGFyaWFibGVEZWZpbmVkIiwidmFsaWRhdGVzV2hlbkRlcml2ZWQiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQWdCQTs7O2VBQUE7OztnQ0Fkc0M7a0VBRWhCOzBCQUVDO3lCQUNLO3VCQUNVOzZCQUNNOytCQUNDOzhCQUNZO3lCQUMwRDs7Ozs7O0FBRW5ILE1BQU0sRUFBRUEsR0FBRyxFQUFFQyxNQUFNLEVBQUUsR0FBR0MscUNBQXFCO01BRTdDLFdBQWVDLElBQUFBLGdCQUFNLEVBQUMsTUFBTUMseUJBQXlCQyxrQkFBUztJQUM1RCxZQUFZQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxVQUFVLEVBQUVDLElBQUksRUFBRUMsT0FBTyxDQUFFO1FBQzVELEtBQUssQ0FBQ0wsU0FBU0MsUUFBUUMsTUFBTUM7UUFFN0IsSUFBSSxDQUFDQyxJQUFJLEdBQUdBO1FBQ1osSUFBSSxDQUFDQyxPQUFPLEdBQUdB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
|
|
177
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2Fzc2VydGlvbi9kZWZpbmVkLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBjb250aW51YXRpb25VdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCBBc3NlcnRpb24gZnJvbSBcIi4uL2Fzc2VydGlvblwiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IGluc3RhbnRpYXRlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9jb250ZXh0XCI7XG5pbXBvcnQgeyBpc0Rlcml2ZWQsIGlzRGVjbGFyZWQgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL3N0YXRlXCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZURlZmluZWRBc3NlcnRpb24gfSBmcm9tIFwiLi4vLi4vcHJvY2Vzcy9pbnN0YW50aWF0ZVwiO1xuaW1wb3J0IHsgdGVybUZyb21UZXJtQW5kU3Vic3RpdHV0aW9ucyB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvc3Vic3RpdHV0aW9uc1wiO1xuaW1wb3J0IHsgZGVmaW5lZEFzc2VydGlvbkZyb21TdGF0ZW1lbnROb2RlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9lbGVtZW50XCI7XG5pbXBvcnQgeyBzZXBhcmF0ZUdyb3VuZGVkVGVybXNBbmREZWZpbmVkVmFyaWFibGVzIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9lcXVpdmFsZW5jZXNcIjtcblxuY29uc3QgeyBhbGwsIGV4aXN0cyB9ID0gY29udGludWF0aW9uVXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgRGVmaW5lZEFzc2VydGlvbiBleHRlbmRzIEFzc2VydGlvbiB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdGVybSwgbmVnYXRlZCkge1xuICAgIHN1cGVyKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCk7XG5cbiAgICB0aGlzLnRlcm0gPSB0ZXJtO1xuICAgIHRoaXMubmVnYXRlZCA9IG5lZ2F0ZWQ7XG4gIH1cblxuICBnZXRUZXJtKCkge1xuICAgIHJldHVybiB0aGlzLnRlcm07XG4gIH1cblxuICBpc05lZ2F0ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMubmVnYXRlZDtcbiAgfVxuXG4gIGdldERlZmluZWRBc3NlcnRpb25Ob2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBkZWZpbmVkQXNzZXJ0aW9uTm9kZSA9IG5vZGU7ICAvLy9cblxuICAgIHJldHVybiBkZWZpbmVkQXNzZXJ0aW9uTm9kZTtcbiAgfVxuXG4gIHZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgbGV0IGFzc2VydGlvbjtcblxuICAgIGNvbnN0IGRlZmluZWRBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtkZWZpbmVkQXNzZXJ0aW9uU3RyaW5nfScgZGVmaW5lZCBhc3NlcnRpb24uLi5gKTtcblxuICAgIGFzc2VydGlvbiA9IHRoaXMuZmluZEFzc2VydGlvbihjb250ZXh0KTtcblxuICAgIGlmIChhc3NlcnRpb24gIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGRlZmluZWRBc3NlcnRpb24gPSBhc3NlcnRpb247IC8vL1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7ZGVmaW5lZEFzc2VydGlvblN0cmluZ30nIGRlZmluZWQgYXNzZXJ0aW9uIGlzIGFscmVhZHkgcHJlc2VudC5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoZGVmaW5lZEFzc2VydGlvbiwgY29udGV4dCwgYmFjayk7XG4gICAgfVxuXG4gICAgYXNzZXJ0aW9uID0gdGhpcztcblxuICAgIGNvbnN0IHZhbGlkYXRlVGVybSA9IHRoaXMudmFsaWRhdGVUZXJtLmJpbmQodGhpcyk7XG5cbiAgICByZXR1cm4gYWxsKFtcbiAgICAgIHZhbGlkYXRlVGVybVxuICAgIF0sIHN0YXRlLCBjb250ZXh0LCAoc3RhdGUsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnN0IHZhbGlkYXRlV2hlbkRlY2xhcmVkID0gdGhpcy52YWxpZGF0ZVdoZW5EZWNsYXJlZC5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgdmFsaWRhdGVXaGVuRGVyaXZlZCA9IHRoaXMudmFsaWRhdGVXaGVuRGVyaXZlZC5iaW5kKHRoaXMpO1xuXG4gICAgICByZXR1cm4gZXhpc3RzKFtcbiAgICAgICAgdmFsaWRhdGVXaGVuRGVjbGFyZWQsXG4gICAgICAgIHZhbGlkYXRlV2hlbkRlcml2ZWRcbiAgICAgIF0sIHN0YXRlLCBjb250ZXh0LCAoc3RhdGUsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgY29uc3QgZGVmaW5lZEFzc2VydGlvbiA9IGFzc2VydGlvbjsgLy8vXG5cbiAgICAgICAgY29udGV4dC5hZGRBc3NlcnRpb24oYXNzZXJ0aW9uKTtcblxuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2RlZmluZWRBc3NlcnRpb25TdHJpbmd9JyBkZWZpbmVkIGFzc2VydGlvbi5gKTtcblxuICAgICAgICByZXR1cm4gZm9yd2FyZChkZWZpbmVkQXNzZXJ0aW9uLCBjb250ZXh0LCBiYWNrKTtcbiAgICAgIH0sIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdmFsaWRhdGVUZXJtKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgZGVmaW5lZEFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2RlZmluZWRBc3NlcnRpb25TdHJpbmd9JyBkZWZpbmVkIGFzc2VydGlvbidzIHRlcm0uLi5gKTtcblxuICAgIGNvbnN0IHRlcm1TaW5ndWxhciA9IHRoaXMudGVybS5pc1Npbmd1bGFyKCk7XG5cbiAgICBpZiAoIXRlcm1TaW5ndWxhcikge1xuICAgICAgY29uc3QgdGVybVN0cmluZyA9IHRoaXMudGVybS5nZXRTdHJpbmcoKSAvLy9cblxuICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtIGlzIG5vdCBzaW5ndWxhci5gKTtcblxuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy50ZXJtLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAodGVybSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgdGhpcy50ZXJtID0gdGVybTtcblxuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVzIHRoZSAnJHtkZWZpbmVkQXNzZXJ0aW9uU3RyaW5nfScgZGVmaW5lZCBhc3NlcnRpb24ncyB0ZXJtLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChzdGF0ZSwgY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB2YWxpZGF0ZVdoZW5EZWNsYXJlZChzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGRlY2xhcmVkID0gaXNEZWNsYXJlZChzdGF0ZSk7XG5cbiAgICBpZiAoIWRlY2xhcmVkKSB7XG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH1cblxuICAgIGNvbnN0IGRlZmluZWRBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2RlZmluZWRBc3NlcnRpb25TdHJpbmd9JyBkZWNsYXJlZCBkZWZpbmVkIGFzc2VydGlvbi4uLmApO1xuXG4gICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtkZWZpbmVkQXNzZXJ0aW9uU3RyaW5nfScgZGVjbGFyZWQgZGVmaW5lZCBhc3NlcnRpb24uYCk7XG5cbiAgICByZXR1cm4gZm9yd2FyZChzdGF0ZSwgY29udGV4dCwgYmFjayk7XG4gIH1cblxuICB2YWxpZGF0ZVdoZW5EZXJpdmVkKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgZGVyaXZlZCA9IGlzRGVyaXZlZChzdGF0ZSk7XG5cbiAgICBpZiAoIWRlcml2ZWQpIHtcbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfVxuXG4gICAgY29uc3QgZGVmaW5lZEFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7ZGVmaW5lZEFzc2VydGlvblN0cmluZ30nIGRlcml2ZWQgZGVmaW5lZCBhc3NlcnRpb24uLi5gKTtcblxuICAgIHJldHVybiB2YWxpZGF0ZVdoZW5EZXJpdmVkKHRoaXMudGVybSwgdGhpcy5uZWdhdGVkLCBjb250ZXh0LCAoY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtkZWZpbmVkQXNzZXJ0aW9uU3RyaW5nfScgZGVyaXZlZCBkZWZpbmVkIGFzc2VydGlvbi5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoc3RhdGUsIGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgYXBwbHlJbmRlcGVuZGVudGx5KGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0LCAvLy9cbiAgICAgICAgICBkZWZpbmVkQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBBcDBseWluZyB0aGUgJyR7ZGVmaW5lZEFzc2VydGlvblN0cmluZ30nIGRlZmluZWQgYXNzZXJ0aW9uIGluZGVwZW5kZW50bHkuLi5gKTtcblxuICAgIGNvbnN0IHRlcm0gPSB0ZXJtRnJvbVRlcm1BbmRTdWJzdGl0dXRpb25zKHRoaXMudGVybSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gdmFsaWRhdGVXaGVuRGVyaXZlZCh0ZXJtLCB0aGlzLm5lZ2F0ZWQsIGNvbnRleHQsIChjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi5hcHBsaWVkIHRoZSAnJHtkZWZpbmVkQXNzZXJ0aW9uU3RyaW5nfScgZGVmaW5lZCBhc3NlcnRpb24gaW5kZXBlbmRlbnRseS5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgbGV0IGpzb247XG5cbiAgICBjb25zdCBuYW1lID0gdGhpcy5nZXROYW1lKCksXG4gICAgICAgICAgc3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTtcblxuICAgIGpzb24gPSB7XG4gICAgICBuYW1lLFxuICAgICAgc3RyaW5nXG4gICAgfTtcblxuICAgIHJldHVybiBqc29uO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIkRlZmluZWRBc3NlcnRpb25cIjtcblxuICBzdGF0aWMgZnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICAgIGxldCBkZWZpbmVkQXNzZXJ0aW9uID0gbnVsbDtcblxuICAgIGNvbnN0IHsgbmFtZSB9ID0ganNvbjtcblxuICAgIGlmICh0aGlzLm5hbWUgPT09IG5hbWUpIHtcbiAgICAgIGluc3RhbnRpYXRlKChjb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IHsgc3RyaW5nIH0gPSBqc29uLFxuICAgICAgICAgICAgICBkZWZpbmVkQXNzZXJ0aW9uTm9kZSA9IGluc3RhbnRpYXRlRGVmaW5lZEFzc2VydGlvbihzdHJpbmcsIGNvbnRleHQpLFxuICAgICAgICAgICAgICBub2RlID0gZGVmaW5lZEFzc2VydGlvbk5vZGUsICAvLy9cbiAgICAgICAgICAgICAgYnJlYWtQb2ludCA9IG51bGwsXG4gICAgICAgICAgICAgIHRlcm0gPSB0ZXJtRnJvbUpEZWZpbmVkQXNzZXJ0aW9uTm9kZShkZWZpbmVkQXNzZXJ0aW9uTm9kZSwgY29udGV4dCksXG4gICAgICAgICAgICAgIG5lZ2F0ZWQgPSBuZWdhdGVkRnJvbUpEZWZpbmVkQXNzZXJ0aW9uTm9kZShkZWZpbmVkQXNzZXJ0aW9uTm9kZSwgY29udGV4dCk7XG5cbiAgICAgICAgY29udGV4dCA9IG51bGw7XG5cbiAgICAgICAgZGVmaW5lZEFzc2VydGlvbiA9IG5ldyBEZWZpbmVkQXNzZXJ0aW9uKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdGVybSwgbmVnYXRlZCk7XG4gICAgICB9LCBjb250ZXh0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGVmaW5lZEFzc2VydGlvbjtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCkge1xuICAgIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnQuZ2V0Tm9kZSgpLFxuICAgICAgICAgIGRlZmluZWRBc3NlcnRpb24gPSBkZWZpbmVkQXNzZXJ0aW9uRnJvbVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gZGVmaW5lZEFzc2VydGlvbjtcbiAgfVxufSk7XG5cbmZ1bmN0aW9uIGlzVmFyaWFibGVEZWZpbmVkKHZhcmlhYmxlLCBjb250ZXh0KSB7XG4gIGNvbnN0IGVxdWl2YWxlbmNlcyA9IGNvbnRleHQuZ2V0RXF1aXZhbGVuY2VzKCksXG4gICAgICAgIGdyb3VuZGVkVGVybXMgPSBbXSxcbiAgICAgICAgZGVmaW5lZFZhcmlhYmxlcyA9IFtdO1xuXG4gIHNlcGFyYXRlR3JvdW5kZWRUZXJtc0FuZERlZmluZWRWYXJpYWJsZXMoZXF1aXZhbGVuY2VzLCBncm91bmRlZFRlcm1zLCBkZWZpbmVkVmFyaWFibGVzLCBjb250ZXh0KTtcblxuICBjb25zdCB2YXJpYWJsZU1hdGNoZXNEZWZpbmVkVmFyaWFibGUgPSBkZWZpbmVkVmFyaWFibGVzLnNvbWUoKGRlZmluZWRWYXJpYWJsZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGRlZmluZWRWYXJpYWJsZUVxdWFsVG9WYXJpYWJsZSA9IGRlZmluZWRWYXJpYWJsZS5pc0VxdWFsVG8odmFyaWFibGUpO1xuXG4gICAgICAgICAgaWYgKGRlZmluZWRWYXJpYWJsZUVxdWFsVG9WYXJpYWJsZSA9PT0gdmFyaWFibGUpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICAgIHZhcmlhYmxlRGVmaW5lZCA9IHZhcmlhYmxlTWF0Y2hlc0RlZmluZWRWYXJpYWJsZTsgLy8vXG5cbiAgcmV0dXJuIHZhcmlhYmxlRGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVXaGVuRGVyaXZlZCh0ZXJtLCBuZWdhdGVkLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gIGNvbnN0IHZhcmlhYmxlSWRlbnRpZmllciA9IHRlcm0uZ2V0VmFyaWFibGVJZGVudGlmaWVyKCksXG4gICAgICAgIGRlY2xhcmVkRGFyaWFibGUgPSBjb250ZXh0LmZpbmREZWNsYXJlZFZhcmlhYmxlQnlWYXJpYWJsZUlkZW50aWZpZXIodmFyaWFibGVJZGVudGlmaWVyKSxcbiAgICAgICAgZGVjbGFyZWREYXJpYWJsZURlZmluZWQgPSBpc1ZhcmlhYmxlRGVmaW5lZChkZWNsYXJlZERhcmlhYmxlLCBjb250ZXh0KTtcblxuICBsZXQgdmFsaWRhdGVzV2hlbkRlcml2ZWQgPSBmYWxzZTtcblxuICBpZiAoIW5lZ2F0ZWQgJiYgZGVjbGFyZWREYXJpYWJsZURlZmluZWQpIHtcbiAgICB2YWxpZGF0ZXNXaGVuRGVyaXZlZCA9IHRydWU7XG4gIH1cblxuICBpZiAobmVnYXRlZCAmJiAhZGVjbGFyZWREYXJpYWJsZURlZmluZWQpIHtcbiAgICB2YWxpZGF0ZXNXaGVuRGVyaXZlZCA9IHRydWU7XG4gIH1cblxuICBpZiAoIXZhbGlkYXRlc1doZW5EZXJpdmVkKSB7XG4gICAgcmV0dXJuIGJhY2soKTtcbiAgfVxuXG4gIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xufVxuXG5mdW5jdGlvbiB0ZXJtRnJvbUpEZWZpbmVkQXNzZXJ0aW9uTm9kZShkZWZpbmVkQXNzZXJ0aW9uTm9kZSwgY29udGV4dCkge1xuICBjb25zdCB0ZXJtTm9kZSA9IGRlZmluZWRBc3NlcnRpb25Ob2RlLmdldFRlcm1Ob2RlKCksXG4gICAgICAgIHRlcm0gPSBjb250ZXh0LmZpbmRUZXJtQnlUZXJtTm9kZSh0ZXJtTm9kZSk7XG5cbiAgcmV0dXJuIHRlcm07XG59XG5cbmZ1bmN0aW9uIG5lZ2F0ZWRGcm9tSkRlZmluZWRBc3NlcnRpb25Ob2RlKGRlZmluZWRBc3NlcnRpb25Ob2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IG5lZ2F0ZWQgPSBkZWZpbmVkQXNzZXJ0aW9uTm9kZS5pc05lZ2F0ZWQoKTtcblxuICByZXR1cm4gbmVnYXRlZDtcbn1cbiJdLCJuYW1lcyI6WyJhbGwiLCJleGlzdHMiLCJjb250aW51YXRpb25VdGlsaXRpZXMiLCJkZWZpbmUiLCJEZWZpbmVkQXNzZXJ0aW9uIiwiQXNzZXJ0aW9uIiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJicmVha1BvaW50IiwidGVybSIsIm5lZ2F0ZWQiLCJnZXRUZXJtIiwiaXNOZWdhdGVkIiwiZ2V0RGVmaW5lZEFzc2VydGlvbk5vZGUiLCJnZXROb2RlIiwiZGVmaW5lZEFzc2VydGlvbk5vZGUiLCJ2YWxpZGF0ZSIsInN0YXRlIiwiZm9yd2FyZCIsImJhY2siLCJhc3NlcnRpb24iLCJkZWZpbmVkQXNzZXJ0aW9uU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJmaW5kQXNzZXJ0aW9uIiwiZGVmaW5lZEFzc2VydGlvbiIsImRlYnVnIiwidmFsaWRhdGVUZXJtIiwiYmluZCIsInZhbGlkYXRlV2hlbkRlY2xhcmVkIiwidmFsaWRhdGVXaGVuRGVyaXZlZCIsImFkZEFzc2VydGlvbiIsInRlcm1TaW5ndWxhciIsImlzU2luZ3VsYXIiLCJ0ZXJtU3RyaW5nIiwiZGVjbGFyZWQiLCJpc0RlY2xhcmVkIiwiZGVyaXZlZCIsImlzRGVyaXZlZCIsImFwcGx5SW5kZXBlbmRlbnRseSIsImdlbmVyYWxDb250ZXh0Iiwic3BlY2lmaWNDb250ZXh0IiwidGVybUZyb21UZXJtQW5kU3Vic3RpdHV0aW9ucyIsInRvSlNPTiIsImpzb24iLCJuYW1lIiwiZ2V0TmFtZSIsImZyb21KU09OIiwiaW5zdGFudGlhdGUiLCJpbnN0YW50aWF0ZURlZmluZWRBc3NlcnRpb24iLCJ0ZXJtRnJvbUpEZWZpbmVkQXNzZXJ0aW9uTm9kZSIsIm5lZ2F0ZWRGcm9tSkRlZmluZWRBc3NlcnRpb25Ob2RlIiwiZnJvbVN0YXRlbWVudCIsInN0YXRlbWVudCIsInN0YXRlbWVudE5vZGUiLCJkZWZpbmVkQXNzZXJ0aW9uRnJvbVN0YXRlbWVudE5vZGUiLCJpc1ZhcmlhYmxlRGVmaW5lZCIsInZhcmlhYmxlIiwiZXF1aXZhbGVuY2VzIiwiZ2V0RXF1aXZhbGVuY2VzIiwiZ3JvdW5kZWRUZXJtcyIsImRlZmluZWRWYXJpYWJsZXMiLCJzZXBhcmF0ZUdyb3VuZGVkVGVybXNBbmREZWZpbmVkVmFyaWFibGVzIiwidmFyaWFibGVNYXRjaGVzRGVmaW5lZFZhcmlhYmxlIiwic29tZSIsImRlZmluZWRWYXJpYWJsZSIsImRlZmluZWRWYXJpYWJsZUVxdWFsVG9WYXJpYWJsZSIsImlzRXF1YWxUbyIsInZhcmlhYmxlRGVmaW5lZCIsInZhcmlhYmxlSWRlbnRpZmllciIsImdldFZhcmlhYmxlSWRlbnRpZmllciIsImRlY2xhcmVkRGFyaWFibGUiLCJmaW5kRGVjbGFyZWRWYXJpYWJsZUJ5VmFyaWFibGVJZGVudGlmaWVyIiwiZGVjbGFyZWREYXJpYWJsZURlZmluZWQiLCJ2YWxpZGF0ZXNXaGVuRGVyaXZlZCIsInRlcm1Ob2RlIiwiZ2V0VGVybU5vZGUiLCJmaW5kVGVybUJ5VGVybU5vZGUiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQWdCQTs7O2VBQUE7OztnQ0Fkc0M7a0VBRWhCOzBCQUVDO3lCQUNLO3VCQUNVOzZCQUNNOytCQUNDO3lCQUNLOzhCQUNPOzs7Ozs7QUFFekQsTUFBTSxFQUFFQSxHQUFHLEVBQUVDLE1BQU0sRUFBRSxHQUFHQyxxQ0FBcUI7TUFFN0MsV0FBZUMsSUFBQUEsZ0JBQU0sRUFBQyxNQUFNQyx5QkFBeUJDLGtCQUFTO0lBQzVELFlBQVlDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxJQUFJLEVBQUVDLFVBQVUsRUFBRUMsSUFBSSxFQUFFQyxPQUFPLENBQUU7UUFDNUQsS0FBSyxDQUFDTCxTQUFTQyxRQUFRQyxNQUFNQztRQUU3QixJQUFJLENBQUNDLElBQUksR0FBR0E7UUFDWixJQUFJLENBQUNDLE9BQU8sR0FBR0E7SUFDakI7SUFFQUMsVUFBVTtRQUNSLE9BQU8sSUFBSSxDQUFDRixJQUFJO0lBQ2xCO0lBRUFHLFlBQVk7UUFDVixPQUFPLElBQUksQ0FBQ0YsT0FBTztJQUNyQjtJQUVBRywwQkFBMEI7UUFDeEIsTUFBTU4sT0FBTyxJQUFJLENBQUNPLE9BQU8sSUFDbkJDLHVCQUF1QlIsTUFBTyxHQUFHO1FBRXZDLE9BQU9RO0lBQ1Q7SUFFQUMsU0FBU0MsS0FBSyxFQUFFWixPQUFPLEVBQUVhLE9BQU8sRUFBRUMsSUFBSSxFQUFFO1FBQ3RDLElBQUlDO1FBRUosTUFBTUMseUJBQXlCLElBQUksQ0FBQ0MsU0FBUyxJQUFLLEdBQUc7UUFFckRqQixRQUFRa0IsS0FBSyxDQUFDLENBQUMsZ0JBQWdCLEVBQUVGLHVCQUF1QixzQkFBc0IsQ0FBQztRQUUvRUQsWUFBWSxJQUFJLENBQUNJLGFBQWEsQ0FBQ25CO1FBRS9CLElBQUllLGNBQWMsTUFBTTtZQUN0QixNQUFNSyxtQkFBbUJMLFdBQVcsR0FBRztZQUV2Q2YsUUFBUXFCLEtBQUssQ0FBQyxDQUFDLEtBQUssRUFBRUwsdUJBQXVCLHVDQUF1QyxDQUFDO1lBRXJGLE9BQU9ILFFBQVFPLGtCQUFrQnBCLFNBQVNjO1FBQzVDO1FBRUFDLFlBQVksSUFBSTtRQUVoQixNQUFNTyxlQUFlLElBQUksQ0FBQ0EsWUFBWSxDQUFDQyxJQUFJLENBQUMsSUFBSTtRQUVoRCxPQUFPN0IsSUFBSTtZQUNUNEI7U0FDRCxFQUFFVixPQUFPWixTQUFTLENBQUNZLE9BQU9aLFNBQVNjO1lBQ2xDLE1BQU1VLHVCQUF1QixJQUFJLENBQUNBLG9CQUFvQixDQUFDRCxJQUFJLENBQUMsSUFBSSxHQUMxREUsc0JBQXNCLElBQUksQ0FBQ0EsbUJBQW1CLENBQUNGLElBQUksQ0FBQyxJQUFJO1lBRTlELE9BQU81QixPQUFPO2dCQUNaNkI7Z0JBQ0FDO2FBQ0QsRUFBRWIsT0FBT1osU0FBUyxDQUFDWSxPQUFPWixTQUFTYztnQkFDbEMsTUFBTU0sbUJBQW1CTCxXQUFXLEdBQUc7Z0JBRXZDZixRQUFRMEIsWUFBWSxDQUFDWDtnQkFFckJmLFFBQVFxQixLQUFLLENBQUMsQ0FBQyxrQkFBa0IsRUFBRUwsdUJBQXVCLG9CQUFvQixDQUFDO2dCQUUvRSxPQUFPSCxRQUFRTyxrQkFBa0JwQixTQUFTYztZQUM1QyxHQUFHQTtRQUNMLEdBQUdBO0lBQ0w7SUFFQVEsYUFBYVYsS0FBSyxFQUFFWixPQUFPLEVBQUVhLE9BQU8sRUFBRUMsSUFBSSxFQUFFO1FBQzFDLE1BQU1FLHlCQUF5QixJQUFJLENBQUNDLFNBQVMsSUFBSyxHQUFHO1FBRXJEakIsUUFBUWtCLEtBQUssQ0FBQyxDQUFDLGdCQUFnQixFQUFFRix1QkFBdUIsNkJBQTZCLENBQUM7UUFFdEYsTUFBTVcsZUFBZSxJQUFJLENBQUN2QixJQUFJLENBQUN3QixVQUFVO1FBRXpDLElBQUksQ0FBQ0QsY0FBYztZQUNqQixNQUFNRSxhQUFhLElBQUksQ0FBQ3pCLElBQUksQ0FBQ2EsU0FBUyxHQUFHLEdBQUc7O1lBRTVDakIsUUFBUXFCLEtBQUssQ0FBQyxDQUFDLEtBQUssRUFBRVEsV0FBVyx1QkFBdUIsQ0FBQztZQUV6RCxPQUFPZjtRQUNUO1FBRUEsT0FBTyxJQUFJLENBQUNWLElBQUksQ0FBQ08sUUFBUSxDQUFDQyxPQUFPWixTQUFTLENBQUNJLE1BQU1KLFNBQVNjO1lBQ3hELElBQUksQ0FBQ1YsSUFBSSxHQUFHQTtZQUVaSixRQUFRcUIsS0FBSyxDQUFDLENBQUMsa0JBQWtCLEVBQUVMLHVCQUF1QiwyQkFBMkIsQ0FBQztZQUV0RixPQUFPSCxRQUFRRCxPQUFPWixTQUFTYztRQUNqQyxHQUFHQTtJQUNMO0lBRUFVLHFCQUFxQlosS0FBSyxFQUFFWixPQUFPLEVBQUVhLE9BQU8sRUFBRUMsSUFBSSxFQUFFO1FBQ2xELE1BQU1nQixXQUFXQyxJQUFBQSxpQkFBVSxFQUFDbkI7UUFFNUIsSUFBSSxDQUFDa0IsVUFBVTtZQUNiLE9BQU9oQjtRQUNUO1FBRUEsTUFBTUUseUJBQXlCLElBQUksQ0FBQ0MsU0FBUyxJQUFJLEdBQUc7UUFFcERqQixRQUFRa0IsS0FBSyxDQUFDLENBQUMsZ0JBQWdCLEVBQUVGLHVCQUF1QiwrQkFBK0IsQ0FBQztRQUV4RmhCLFFBQVFxQixLQUFLLENBQUMsQ0FBQyxrQkFBa0IsRUFBRUwsdUJBQXVCLDZCQUE2QixDQUFDO1FBRXhGLE9BQU9ILFFBQVFELE9BQU9aLFNBQVNjO0lBQ2pDO0lBRUFXLG9CQUFvQmIsS0FBSyxFQUFFWixPQUFPLEVBQUVhLE9BQU8sRUFBRUMsSUFBSSxFQUFFO1FBQ2pELE1BQU1rQixVQUFVQyxJQUFBQSxnQkFBUyxFQUFDckI7UUFFMUIsSUFBSSxDQUFDb0IsU0FBUztZQUNaLE9BQU9sQjtRQUNUO1FBRUEsTUFBTUUseUJBQXlCLElBQUksQ0FBQ0MsU0FBUyxJQUFJLEdBQUc7UUFFcERqQixRQUFRa0IsS0FBSyxDQUFDLENBQUMsZ0JBQWdCLEVBQUVGLHVCQUF1Qiw4QkFBOEIsQ0FBQztRQUV2RixPQUFPUyxvQkFBb0IsSUFBSSxDQUFDckIsSUFBSSxFQUFFLElBQUksQ0FBQ0MsT0FBTyxFQUFFTCxTQUFTLENBQUNBLFNBQVNjO1lBQ3JFZCxRQUFRcUIsS0FBSyxDQUFDLENBQUMsa0JBQWtCLEVBQUVMLHVCQUF1Qiw0QkFBNEIsQ0FBQztZQUV2RixPQUFPSCxRQUFRRCxPQUFPWixTQUFTYztRQUNqQyxHQUFHQTtJQUNMO0lBRUFvQixtQkFBbUJDLGNBQWMsRUFBRUMsZUFBZSxFQUFFdkIsT0FBTyxFQUFFQyxJQUFJLEVBQUU7UUFDakUsTUFBTWQsVUFBVW9DLGlCQUNWcEIseUJBQXlCLElBQUksQ0FBQ0MsU0FBUyxJQUFJLEdBQUc7UUFFcERqQixRQUFRa0IsS0FBSyxDQUFDLENBQUMsY0FBYyxFQUFFRix1QkFBdUIsb0NBQW9DLENBQUM7UUFFM0YsTUFBTVosT0FBT2lDLElBQUFBLDJDQUE0QixFQUFDLElBQUksQ0FBQ2pDLElBQUksRUFBRUo7UUFFckQsT0FBT3lCLG9CQUFvQnJCLE1BQU0sSUFBSSxDQUFDQyxPQUFPLEVBQUVMLFNBQVMsQ0FBQ0EsU0FBU2M7WUFDaEVkLFFBQVFxQixLQUFLLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRUwsdUJBQXVCLGtDQUFrQyxDQUFDO1lBRTNGLE9BQU9ILFFBQVFzQixnQkFBZ0JDLGlCQUFpQnRCO1FBQ2xELEdBQUdBO0lBQ0w7SUFFQXdCLFNBQVM7UUFDUCxJQUFJQztRQUVKLE1BQU1DLE9BQU8sSUFBSSxDQUFDQyxPQUFPLElBQ25CeEMsU0FBUyxJQUFJLENBQUNnQixTQUFTO1FBRTdCc0IsT0FBTztZQUNMQztZQUNBdkM7UUFDRjtRQUVBLE9BQU9zQztJQUNUO0lBRUEsT0FBT0MsT0FBTyxtQkFBbUI7SUFFakMsT0FBT0UsU0FBU0gsSUFBSSxFQUFFdkMsT0FBTyxFQUFFO1FBQzdCLElBQUlvQixtQkFBbUI7UUFFdkIsTUFBTSxFQUFFb0IsSUFBSSxFQUFFLEdBQUdEO1FBRWpCLElBQUksSUFBSSxDQUFDQyxJQUFJLEtBQUtBLE1BQU07WUFDdEJHLElBQUFBLG9CQUFXLEVBQUMsQ0FBQzNDO2dCQUNYLE1BQU0sRUFBRUMsTUFBTSxFQUFFLEdBQUdzQyxNQUNiN0IsdUJBQXVCa0MsSUFBQUEsd0NBQTJCLEVBQUMzQyxRQUFRRCxVQUMzREUsT0FBT1Esc0JBQ1BQLGFBQWEsTUFDYkMsT0FBT3lDLDhCQUE4Qm5DLHNCQUFzQlYsVUFDM0RLLFVBQVV5QyxpQ0FBaUNwQyxzQkFBc0JWO2dCQUV2RUEsVUFBVTtnQkFFVm9CLG1CQUFtQixJQUFJdEIsaUJBQWlCRSxTQUFTQyxRQUFRQyxNQUFNQyxZQUFZQyxNQUFNQztZQUNuRixHQUFHTDtRQUNMO1FBRUEsT0FBT29CO0lBQ1Q7SUFFQSxPQUFPMkIsY0FBY0MsU0FBUyxFQUFFaEQsT0FBTyxFQUFFO1FBQ3ZDLE1BQU1pRCxnQkFBZ0JELFVBQVV2QyxPQUFPLElBQ2pDVyxtQkFBbUI4QixJQUFBQSwwQ0FBaUMsRUFBQ0QsZUFBZWpEO1FBRTFFLE9BQU9vQjtJQUNUO0FBQ0Y7QUFFQSxTQUFTK0Isa0JBQWtCQyxRQUFRLEVBQUVwRCxPQUFPO0lBQzFDLE1BQU1xRCxlQUFlckQsUUFBUXNELGVBQWUsSUFDdENDLGdCQUFnQixFQUFFLEVBQ2xCQyxtQkFBbUIsRUFBRTtJQUUzQkMsSUFBQUEsc0RBQXdDLEVBQUNKLGNBQWNFLGVBQWVDLGtCQUFrQnhEO0lBRXhGLE1BQU0wRCxpQ0FBaUNGLGlCQUFpQkcsSUFBSSxDQUFDLENBQUNDO1FBQ3RELE1BQU1DLGlDQUFpQ0QsZ0JBQWdCRSxTQUFTLENBQUNWO1FBRWpFLElBQUlTLG1DQUFtQ1QsVUFBVTtZQUMvQyxPQUFPO1FBQ1Q7SUFDRixJQUNBVyxrQkFBa0JMLGdDQUFnQyxHQUFHO0lBRTNELE9BQU9LO0FBQ1Q7QUFFQSxTQUFTdEMsb0JBQW9CckIsSUFBSSxFQUFFQyxPQUFPLEVBQUVMLE9BQU8sRUFBRWEsT0FBTyxFQUFFQyxJQUFJO0lBQ2hFLE1BQU1rRCxxQkFBcUI1RCxLQUFLNkQscUJBQXFCLElBQy9DQyxtQkFBbUJsRSxRQUFRbUUsd0NBQXdDLENBQUNILHFCQUNwRUksMEJBQTBCakIsa0JBQWtCZSxrQkFBa0JsRTtJQUVwRSxJQUFJcUUsdUJBQXVCO0lBRTNCLElBQUksQ0FBQ2hFLFdBQVcrRCx5QkFBeUI7UUFDdkNDLHVCQUF1QjtJQUN6QjtJQUVBLElBQUloRSxXQUFXLENBQUMrRCx5QkFBeUI7UUFDdkNDLHVCQUF1QjtJQUN6QjtJQUVBLElBQUksQ0FBQ0Esc0JBQXNCO1FBQ3pCLE9BQU92RDtJQUNUO0lBRUEsT0FBT0QsUUFBUWIsU0FBU2M7QUFDMUI7QUFFQSxTQUFTK0IsOEJBQThCbkMsb0JBQW9CLEVBQUVWLE9BQU87SUFDbEUsTUFBTXNFLFdBQVc1RCxxQkFBcUI2RCxXQUFXLElBQzNDbkUsT0FBT0osUUFBUXdFLGtCQUFrQixDQUFDRjtJQUV4QyxPQUFPbEU7QUFDVDtBQUVBLFNBQVMwQyxpQ0FBaUNwQyxvQkFBb0IsRUFBRVYsT0FBTztJQUNyRSxNQUFNSyxVQUFVSyxxQkFBcUJILFNBQVM7SUFFOUMsT0FBT0Y7QUFDVCJ9
|
|
@@ -15,8 +15,8 @@ const _context = require("../../utilities/context");
|
|
|
15
15
|
const _state = require("../../utilities/state");
|
|
16
16
|
const _validation = require("../../process/validation");
|
|
17
17
|
const _instantiate = require("../../process/instantiate");
|
|
18
|
-
const _assign = require("../../process/assign");
|
|
19
18
|
const _element = require("../../utilities/element");
|
|
19
|
+
const _assign = require("../../process/assign");
|
|
20
20
|
function _interop_require_default(obj) {
|
|
21
21
|
return obj && obj.__esModule ? obj : {
|
|
22
22
|
default: obj
|
|
@@ -122,7 +122,7 @@ const _default = (0, _elements.define)(class PropertyAssertion extends _assertio
|
|
|
122
122
|
const { name } = json;
|
|
123
123
|
if (this.name === name) {
|
|
124
124
|
(0, _context.instantiate)((context)=>{
|
|
125
|
-
const { string } = json, propertyAssertionNode = (0, _instantiate.instantiatePropertyAssertion)(string, context), node = propertyAssertionNode, breakPoint = null, subjectTerm =
|
|
125
|
+
const { string } = json, propertyAssertionNode = (0, _instantiate.instantiatePropertyAssertion)(string, context), node = propertyAssertionNode, breakPoint = null, subjectTerm = subjectTermFromPropertyAssertionNode(propertyAssertionNode, context), propertyTerm = propertyTermFromPropertyAssertionNode(propertyAssertionNode, context);
|
|
126
126
|
context = null;
|
|
127
127
|
propertyAssertion = new PropertyAssertion(context, string, node, breakPoint, subjectTerm, propertyTerm);
|
|
128
128
|
}, context);
|
|
@@ -134,5 +134,13 @@ const _default = (0, _elements.define)(class PropertyAssertion extends _assertio
|
|
|
134
134
|
return propertyAssertion;
|
|
135
135
|
}
|
|
136
136
|
});
|
|
137
|
+
function subjectTermFromPropertyAssertionNode(propertyAssertionNode, context) {
|
|
138
|
+
const subjectTermNode = propertyAssertionNode.getSubjectTermNode(), subjectTerm = context.findTermByTermNode(subjectTermNode);
|
|
139
|
+
return subjectTerm;
|
|
140
|
+
}
|
|
141
|
+
function propertyTermFromPropertyAssertionNode(propertyAssertionNode, context) {
|
|
142
|
+
const propertyTermNode = propertyAssertionNode.getPropertyTermNode(), propertyTerm = context.findTermByTermNode(propertyTermNode);
|
|
143
|
+
return propertyTerm;
|
|
144
|
+
}
|
|
137
145
|
|
|
138
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2Fzc2VydGlvbi9wcm9wZXJ0eS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgY29udGludWF0aW9uVXRpbGl0aWVzIH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5pbXBvcnQgQXNzZXJ0aW9uIGZyb20gXCIuLi9hc3NlcnRpb25cIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uLy4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvY29udGV4dFwiO1xuaW1wb3J0IHsgaXNEZXJpdmVkLCBpc1RyYW5zaWVudCB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvc3RhdGVcIjtcbmltcG9ydCB7IHVuaWZ5VGVybVdpdGhQcm9wZXJ0aWVzIH0gZnJvbSBcIi4uLy4uL3Byb2Nlc3MvdmFsaWRhdGlvblwiO1xuaW1wb3J0IHsgaW5zdGFudGlhdGVQcm9wZXJ0eUFzc2VydGlvbiB9IGZyb20gXCIuLi8uLi9wcm9jZXNzL2luc3RhbnRpYXRlXCI7XG5pbXBvcnQgeyB2YXJpYWJsZUFzc2lnbm1lbnRGcm9tUHJlcGVydHlBc3NlcnRpb24gfSBmcm9tIFwiLi4vLi4vcHJvY2Vzcy9hc3NpZ25cIjtcbmltcG9ydCB7IHByb3BlcnR5QXNzZXJ0aW9uRnJvbVN0YXRlbWVudE5vZGUsIHN1YmplY3RUZXJtRnJvbVByb3BlcnR5QXNzZXJ0aW9uTm9kZSwgcHJvcGVydHlUZXJtRnJvbVByb3BlcnR5QXNzZXJ0aW9uTm9kZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvZWxlbWVudFwiO1xuXG5jb25zdCB7IGFsbCB9ID0gY29udGludWF0aW9uVXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgUHJvcGVydHlBc3NlcnRpb24gZXh0ZW5kcyBBc3NlcnRpb24ge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHN1YmplY3RUZXJtLCBwcm9wZXJ0eVRlcm0pIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy5zdWJqZWN0VGVybSA9IHN1YmplY3RUZXJtO1xuICAgIHRoaXMucHJvcGVydHlUZXJtID0gcHJvcGVydHlUZXJtO1xuICB9XG5cbiAgZ2V0U3ViamVjdFRlcm0oKSB7XG4gICAgcmV0dXJuIHRoaXMuc3ViamVjdFRlcm07XG4gIH1cblxuICBnZXRQcm9wZXJ0eVRlcm0oKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvcGVydHlUZXJtO1xuICB9XG5cbiAgZ2V0UHJvcGVydHlBc3NlcnRpb25Ob2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBwcm9wZXJ0eUFzc2VydGlvbk5vZGUgPSBub2RlOyAvLy9cblxuICAgIHJldHVybiBwcm9wZXJ0eUFzc2VydGlvbk5vZGU7XG4gIH1cblxuICBnZXRQcm9wZXJ0eVR5cGUoKSB7XG4gICAgY29uc3QgcHJvcGVydHlUZXJtVHlwZSA9IHRoaXMucHJvcGVydHlUZXJtLmdldFR5cGUoKSxcbiAgICAgICAgICBwcm9wZXJ0eVR5cGUgPSBwcm9wZXJ0eVRlcm1UeXBlOyAgLy8vXG5cbiAgICByZXR1cm4gcHJvcGVydHlUeXBlO1xuICB9XG5cbiAgdmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBsZXQgYXNzZXJ0aW9uO1xuXG4gICAgY29uc3QgcHJvcGVydHlBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtwcm9wZXJ0eUFzc2VydGlvblN0cmluZ30nIHByb3BlcnR5IGFzc2VydGlvbi4uLmApO1xuXG4gICAgYXNzZXJ0aW9uID0gdGhpcy5maW5kQXNzZXJ0aW9uKGNvbnRleHQpO1xuXG4gICAgaWYgKGFzc2VydGlvbiAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgcHJvcGVydHlBc3NlcnRpb24gPSBhc3NlcnRpb247IC8vL1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7cHJvcGVydHlBc3NlcnRpb25TdHJpbmd9JyBwcm9wZXJ0eSBhc3NlcnRpb24gaXMgYWxyZWFkeSBwcmVzZW50LmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChwcm9wZXJ0eUFzc2VydGlvbiwgY29udGV4dCwgYmFjayk7XG4gICAgfVxuXG4gICAgYXNzZXJ0aW9uID0gdGhpcztcblxuICAgIGNvbnN0IHZhbGlkYXRlVGVybXMgPSB0aGlzLnZhbGlkYXRlVGVybXMuYmluZCh0aGlzKTtcblxuICAgIHJldHVybiBhbGwoW1xuICAgICAgdmFsaWRhdGVUZXJtc1xuICAgIF0sIHN0YXRlLCBjb250ZXh0LCAoc3RhdGUsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIHRoaXMuYXNzaWduKHN0YXRlLCBjb250ZXh0KTtcblxuICAgICAgY29udGV4dC5hZGRBc3NlcnRpb24oYXNzZXJ0aW9uKTtcblxuICAgICAgY29uc3QgcHJvcGVydHlBc3NlcnRpb24gPSBhc3NlcnRpb247IC8vL1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3Byb3BlcnR5QXNzZXJ0aW9uU3RyaW5nfScgcHJvcGVydHkgYXNzZXJ0aW9uLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChwcm9wZXJ0eUFzc2VydGlvbiwgY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB2YWxpZGF0ZVRlcm1zKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgcHJvcGVydHlBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3Byb3BlcnR5QXNzZXJ0aW9uU3RyaW5nfScgcHJvcGVydHkgYXNzZXJ0aW9uJ3MgdGVybXMuLi5gKTtcblxuICAgIGNvbnN0IHZhbGlkYXRlU3ViamVjdFRlcm0gPSB0aGlzLnZhbGlkYXRlU3ViamVjdFRlcm0uYmluZCh0aGlzKSxcbiAgICAgICAgICB2YWxpZGF0ZVByb3BlcnR5VGVybSA9IHRoaXMudmFsaWRhdGVQcm9wZXJ0eVRlcm0uYmluZCh0aGlzKTtcblxuICAgIHJldHVybiBhbGwoW1xuICAgICAgdmFsaWRhdGVTdWJqZWN0VGVybSxcbiAgICAgIHZhbGlkYXRlUHJvcGVydHlUZXJtXG4gICAgXSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29uc3Qgc3ViamVjdFRlcm1UeXBlID0gdGhpcy5zdWJqZWN0VGVybS5nZXRUeXBlKCksXG4gICAgICAgICAgICBwcm9wZXJ0eVRlcm1UeXBlID0gdGhpcy5wcm9wZXJ0eVRlcm0uZ2V0VHlwZSgpLFxuICAgICAgICAgICAgc3ViamVjdFRlcm1UeXBlRXF1YWxUb1N1YlR5cGVPclN1cGVyVHlwZU9mUHJvcGVydHlUZXJtVHlwZSA9IHN1YmplY3RUZXJtVHlwZS5pc0VxdWFsVG9TdWJUeXBlT3JTdXBlclR5cGVPZihwcm9wZXJ0eVRlcm1UeXBlKTtcblxuICAgICAgaWYgKCFzdWJqZWN0VGVybVR5cGVFcXVhbFRvU3ViVHlwZU9yU3VwZXJUeXBlT2ZQcm9wZXJ0eVRlcm1UeXBlKSB7XG4gICAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7cHJvcGVydHlBc3NlcnRpb25TdHJpbmd9JyBwcm9wZXJ0eSBhc3NlcnRpb24ncyB0ZXJtcy5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoc3RhdGUsIGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdmFsaWRhdGVTdWJqZWN0VGVybShzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGluY2x1ZGVUeXBlID0gZmFsc2UsXG4gICAgICAgICAgcHJvcGVydHlTdHJpbmcgPSB0aGlzLmdldFN0cmluZyhpbmNsdWRlVHlwZSk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3Byb3BlcnR5U3RyaW5nfScgcHJvcGVydHkgYXNzZXJ0aW9uJ3Mgc3ViamVjdCB0ZXJtLi4uYCk7XG5cbiAgICByZXR1cm4gdGhpcy5zdWJqZWN0VGVybS52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKHN1YmplY3RUZXJtLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICB0aGlzLnN1YmplY3RUZXJtID0gc3ViamVjdFRlcm07XG5cbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7cHJvcGVydHlTdHJpbmd9JyBwcm9wZXJ0eSBhc3NlcnRpb24ncyBzdWJqZWN0IHRlcm0uYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHN0YXRlLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHZhbGlkYXRlUHJvcGVydHlUZXJtKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgaW5jbHVkZVR5cGUgPSBmYWxzZSxcbiAgICAgICAgICBwcm9wZXJ0eVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKGluY2x1ZGVUeXBlKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7cHJvcGVydHlTdHJpbmd9JyBwcm9wZXJ0eSBhc3NlcnRpb24ncyBwcm9wZXJ0eSB0ZXJtLi4uYCk7XG5cbiAgICByZXR1cm4gdW5pZnlUZXJtV2l0aFByb3BlcnRpZXModGhpcy5wcm9wZXJ0eVRlcm0sIHN0YXRlLCBjb250ZXh0LCAocHJvcGVydHlUZXJtLCBzdGF0ZSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgdGhpcy5wcm9wZXJ0eVRlcm0gPSBwcm9wZXJ0eVRlcm07XG5cbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7cHJvcGVydHlTdHJpbmd9JyBwcm9wZXJ0eSBhc3NlcnRpb24ncyBwcm9wZXJ0eSB0ZXJtLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChzdGF0ZSwgY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjaylcbiAgfVxuXG4gIGFzc2lnbihzdGF0ZSwgY29udGV4dCkge1xuICAgIGNvbnN0IGRlcml2ZWQgPSBpc0Rlcml2ZWQoc3RhdGUpLFxuICAgICAgICAgIHRyYW5zaWVudCA9IGlzVHJhbnNpZW50KHN0YXRlKTtcblxuICAgIGlmIChkZXJpdmVkIHx8IHRyYW5zaWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHByb3BlcnR5QXNzZXJ0aW9uID0gdGhpcywgLy8vXG4gICAgICAgICAgdmFyaWFibGVBc3NpZ21lbnQgPSB2YXJpYWJsZUFzc2lnbm1lbnRGcm9tUHJlcGVydHlBc3NlcnRpb24ocHJvcGVydHlBc3NlcnRpb24sIGNvbnRleHQpO1xuXG4gICAgY29udGV4dC5hZGRBc3NpZ25tZW50KHZhcmlhYmxlQXNzaWdtZW50KTtcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICBsZXQganNvbjtcblxuICAgIGNvbnN0IG5hbWUgPSB0aGlzLmdldE5hbWUoKSxcbiAgICAgICAgICBzdHJpbmcgPSB0aGlzLmdldFN0cmluZygpO1xuXG4gICAganNvbiA9IHtcbiAgICAgIG5hbWUsXG4gICAgICBzdHJpbmdcbiAgICB9O1xuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiUHJvcGVydHlBc3NlcnRpb25cIjtcblxuICBzdGF0aWMgZnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICAgIGxldCBwcm9wZXJ0eUFzc2VydGlvbiA9IG51bGw7XG5cbiAgICBjb25zdCB7IG5hbWUgfSA9IGpzb247XG5cbiAgICBpZiAodGhpcy5uYW1lID09PSBuYW1lKSB7XG4gICAgICBpbnN0YW50aWF0ZSgoY29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCB7IHN0cmluZyB9ID0ganNvbixcbiAgICAgICAgICAgICAgcHJvcGVydHlBc3NlcnRpb25Ob2RlID0gaW5zdGFudGlhdGVQcm9wZXJ0eUFzc2VydGlvbihzdHJpbmcsIGNvbnRleHQpLFxuICAgICAgICAgICAgICBub2RlID0gcHJvcGVydHlBc3NlcnRpb25Ob2RlLCAgLy8vXG4gICAgICAgICAgICAgIGJyZWFrUG9pbnQgPSBudWxsLFxuICAgICAgICAgICAgICBzdWJqZWN0VGVybSA9IHN1YmplY3RUZXJtRnJvbVByb3BlcnR5QXNzZXJ0aW9uTm9kZShwcm9wZXJ0eUFzc2VydGlvbk5vZGUsIGNvbnRleHQpLFxuICAgICAgICAgICAgICBwcm9wZXJ0eVRlcm0gPSBwcm9wZXJ0eVRlcm1Gcm9tUHJvcGVydHlBc3NlcnRpb25Ob2RlKHByb3BlcnR5QXNzZXJ0aW9uTm9kZSwgY29udGV4dCk7XG5cbiAgICAgICAgY29udGV4dCA9IG51bGw7XG5cbiAgICAgICAgcHJvcGVydHlBc3NlcnRpb24gPSBuZXcgUHJvcGVydHlBc3NlcnRpb24oY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCBzdWJqZWN0VGVybSwgcHJvcGVydHlUZXJtKTtcbiAgICAgIH0sIGNvbnRleHQpO1xuICAgIH1cblxuICAgIHJldHVybiBwcm9wZXJ0eUFzc2VydGlvbjtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCkge1xuICAgIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnQuZ2V0Tm9kZSgpLFxuICAgICAgICAgIHByb3BlcnR5QXNzZXJ0aW9uID0gcHJvcGVydHlBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBwcm9wZXJ0eUFzc2VydGlvbjtcbiAgfVxufSk7XG4iXSwibmFtZXMiOlsiYWxsIiwiY29udGludWF0aW9uVXRpbGl0aWVzIiwiZGVmaW5lIiwiUHJvcGVydHlBc3NlcnRpb24iLCJBc3NlcnRpb24iLCJjb250ZXh0Iiwic3RyaW5nIiwibm9kZSIsImJyZWFrUG9pbnQiLCJzdWJqZWN0VGVybSIsInByb3BlcnR5VGVybSIsImdldFN1YmplY3RUZXJtIiwiZ2V0UHJvcGVydHlUZXJtIiwiZ2V0UHJvcGVydHlBc3NlcnRpb25Ob2RlIiwiZ2V0Tm9kZSIsInByb3BlcnR5QXNzZXJ0aW9uTm9kZSIsImdldFByb3BlcnR5VHlwZSIsInByb3BlcnR5VGVybVR5cGUiLCJnZXRUeXBlIiwicHJvcGVydHlUeXBlIiwidmFsaWRhdGUiLCJzdGF0ZSIsImZvcndhcmQiLCJiYWNrIiwiYXNzZXJ0aW9uIiwicHJvcGVydHlBc3NlcnRpb25TdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsImZpbmRBc3NlcnRpb24iLCJwcm9wZXJ0eUFzc2VydGlvbiIsImRlYnVnIiwidmFsaWRhdGVUZXJtcyIsImJpbmQiLCJhc3NpZ24iLCJhZGRBc3NlcnRpb24iLCJ2YWxpZGF0ZVN1YmplY3RUZXJtIiwidmFsaWRhdGVQcm9wZXJ0eVRlcm0iLCJzdWJqZWN0VGVybVR5cGUiLCJzdWJqZWN0VGVybVR5cGVFcXVhbFRvU3ViVHlwZU9yU3VwZXJUeXBlT2ZQcm9wZXJ0eVRlcm1UeXBlIiwiaXNFcXVhbFRvU3ViVHlwZU9yU3VwZXJUeXBlT2YiLCJpbmNsdWRlVHlwZSIsInByb3BlcnR5U3RyaW5nIiwidW5pZnlUZXJtV2l0aFByb3BlcnRpZXMiLCJkZXJpdmVkIiwiaXNEZXJpdmVkIiwidHJhbnNpZW50IiwiaXNUcmFuc2llbnQiLCJ2YXJpYWJsZUFzc2lnbWVudCIsInZhcmlhYmxlQXNzaWdubWVudEZyb21QcmVwZXJ0eUFzc2VydGlvbiIsImFkZEFzc2lnbm1lbnQiLCJ0b0pTT04iLCJqc29uIiwibmFtZSIsImdldE5hbWUiLCJmcm9tSlNPTiIsImluc3RhbnRpYXRlIiwiaW5zdGFudGlhdGVQcm9wZXJ0eUFzc2VydGlvbiIsInN1YmplY3RUZXJtRnJvbVByb3BlcnR5QXNzZXJ0aW9uTm9kZSIsInByb3BlcnR5VGVybUZyb21Qcm9wZXJ0eUFzc2VydGlvbk5vZGUiLCJmcm9tU3RhdGVtZW50Iiwic3RhdGVtZW50Iiwic3RhdGVtZW50Tm9kZSIsInByb3BlcnR5QXNzZXJ0aW9uRnJvbVN0YXRlbWVudE5vZGUiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQWdCQTs7O2VBQUE7OztnQ0Fkc0M7a0VBRWhCOzBCQUVDO3lCQUNLO3VCQUNXOzRCQUNDOzZCQUNLO3dCQUNXO3lCQUN3RTs7Ozs7O0FBRWhJLE1BQU0sRUFBRUEsR0FBRyxFQUFFLEdBQUdDLHFDQUFxQjtNQUVyQyxXQUFlQyxJQUFBQSxnQkFBTSxFQUFDLE1BQU1DLDBCQUEwQkMsa0JBQVM7SUFDN0QsWUFBWUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLElBQUksRUFBRUMsVUFBVSxFQUFFQyxXQUFXLEVBQUVDLFlBQVksQ0FBRTtRQUN4RSxLQUFLLENBQUNMLFNBQVNDLFFBQVFDLE1BQU1DO1FBRTdCLElBQUksQ0FBQ0MsV0FBVyxHQUFHQTtRQUNuQixJQUFJLENBQUNDLFlBQVksR0FBR0E7SUFDdEI7SUFFQUMsaUJBQWlCO1FBQ2YsT0FBTyxJQUFJLENBQUNGLFdBQVc7SUFDekI7SUFFQUcsa0JBQWtCO1FBQ2hCLE9BQU8sSUFBSSxDQUFDRixZQUFZO0lBQzFCO0lBRUFHLDJCQUEyQjtRQUN6QixNQUFNTixPQUFPLElBQUksQ0FBQ08sT0FBTyxJQUNuQkMsd0JBQXdCUixNQUFNLEdBQUc7UUFFdkMsT0FBT1E7SUFDVDtJQUVBQyxrQkFBa0I7UUFDaEIsTUFBTUMsbUJBQW1CLElBQUksQ0FBQ1AsWUFBWSxDQUFDUSxPQUFPLElBQzVDQyxlQUFlRixrQkFBbUIsR0FBRztRQUUzQyxPQUFPRTtJQUNUO0lBRUFDLFNBQVNDLEtBQUssRUFBRWhCLE9BQU8sRUFBRWlCLE9BQU8sRUFBRUMsSUFBSSxFQUFFO1FBQ3RDLElBQUlDO1FBRUosTUFBTUMsMEJBQTBCLElBQUksQ0FBQ0MsU0FBUyxJQUFLLEdBQUc7UUFFdERyQixRQUFRc0IsS0FBSyxDQUFDLENBQUMsZ0JBQWdCLEVBQUVGLHdCQUF3Qix1QkFBdUIsQ0FBQztRQUVqRkQsWUFBWSxJQUFJLENBQUNJLGFBQWEsQ0FBQ3ZCO1FBRS9CLElBQUltQixjQUFjLE1BQU07WUFDdEIsTUFBTUssb0JBQW9CTCxXQUFXLEdBQUc7WUFFeENuQixRQUFReUIsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFTCx3QkFBd0Isd0NBQXdDLENBQUM7WUFFdkYsT0FBT0gsUUFBUU8sbUJBQW1CeEIsU0FBU2tCO1FBQzdDO1FBRUFDLFlBQVksSUFBSTtRQUVoQixNQUFNTyxnQkFBZ0IsSUFBSSxDQUFDQSxhQUFhLENBQUNDLElBQUksQ0FBQyxJQUFJO1FBRWxELE9BQU9oQyxJQUFJO1lBQ1QrQjtTQUNELEVBQUVWLE9BQU9oQixTQUFTLENBQUNnQixPQUFPaEIsU0FBU2tCO1lBQ2xDLElBQUksQ0FBQ1UsTUFBTSxDQUFDWixPQUFPaEI7WUFFbkJBLFFBQVE2QixZQUFZLENBQUNWO1lBRXJCLE1BQU1LLG9CQUFvQkwsV0FBVyxHQUFHO1lBRXhDbkIsUUFBUXlCLEtBQUssQ0FBQyxDQUFDLGtCQUFrQixFQUFFTCx3QkFBd0IscUJBQXFCLENBQUM7WUFFakYsT0FBT0gsUUFBUU8sbUJBQW1CeEIsU0FBU2tCO1FBQzdDLEdBQUdBO0lBQ0w7SUFFQVEsY0FBY1YsS0FBSyxFQUFFaEIsT0FBTyxFQUFFaUIsT0FBTyxFQUFFQyxJQUFJLEVBQUU7UUFDM0MsTUFBTUUsMEJBQTBCLElBQUksQ0FBQ0MsU0FBUyxJQUFJLEdBQUc7UUFFckRyQixRQUFRc0IsS0FBSyxDQUFDLENBQUMsZ0JBQWdCLEVBQUVGLHdCQUF3QiwrQkFBK0IsQ0FBQztRQUV6RixNQUFNVSxzQkFBc0IsSUFBSSxDQUFDQSxtQkFBbUIsQ0FBQ0gsSUFBSSxDQUFDLElBQUksR0FDeERJLHVCQUF1QixJQUFJLENBQUNBLG9CQUFvQixDQUFDSixJQUFJLENBQUMsSUFBSTtRQUVoRSxPQUFPaEMsSUFBSTtZQUNUbUM7WUFDQUM7U0FDRCxFQUFFZixPQUFPaEIsU0FBUyxDQUFDZ0IsT0FBT2hCLFNBQVNrQjtZQUNsQyxNQUFNYyxrQkFBa0IsSUFBSSxDQUFDNUIsV0FBVyxDQUFDUyxPQUFPLElBQzFDRCxtQkFBbUIsSUFBSSxDQUFDUCxZQUFZLENBQUNRLE9BQU8sSUFDNUNvQiw2REFBNkRELGdCQUFnQkUsNkJBQTZCLENBQUN0QjtZQUVqSCxJQUFJLENBQUNxQiw0REFBNEQ7Z0JBQy9ELE9BQU9mO1lBQ1Q7WUFFQWxCLFFBQVF5QixLQUFLLENBQUMsQ0FBQyxrQkFBa0IsRUFBRUwsd0JBQXdCLDZCQUE2QixDQUFDO1lBRXpGLE9BQU9ILFFBQVFELE9BQU9oQixTQUFTa0I7UUFDakMsR0FBR0E7SUFDTDtJQUVBWSxvQkFBb0JkLEtBQUssRUFBRWhCLE9BQU8sRUFBRWlCLE9BQU8sRUFBRUMsSUFBSSxFQUFFO1FBQ2pELE1BQU1pQixjQUFjLE9BQ2RDLGlCQUFpQixJQUFJLENBQUNmLFNBQVMsQ0FBQ2MsY0FBZSxHQUFHO1FBRXhEbkMsUUFBUXNCLEtBQUssQ0FBQyxDQUFDLGdCQUFnQixFQUFFYyxlQUFlLHNDQUFzQyxDQUFDO1FBRXZGLE9BQU8sSUFBSSxDQUFDaEMsV0FBVyxDQUFDVyxRQUFRLENBQUNDLE9BQU9oQixTQUFTLENBQUNJLGFBQWFKLFNBQVNrQjtZQUN0RSxJQUFJLENBQUNkLFdBQVcsR0FBR0E7WUFFbkJKLFFBQVF5QixLQUFLLENBQUMsQ0FBQyxrQkFBa0IsRUFBRVcsZUFBZSxvQ0FBb0MsQ0FBQztZQUV2RixPQUFPbkIsUUFBUUQsT0FBT2hCLFNBQVNrQjtRQUNqQyxHQUFHQTtJQUNMO0lBRUFhLHFCQUFxQmYsS0FBSyxFQUFFaEIsT0FBTyxFQUFFaUIsT0FBTyxFQUFFQyxJQUFJLEVBQUU7UUFDbEQsTUFBTWlCLGNBQWMsT0FDZEMsaUJBQWlCLElBQUksQ0FBQ2YsU0FBUyxDQUFDYyxjQUFlLEdBQUc7UUFFeERuQyxRQUFRc0IsS0FBSyxDQUFDLENBQUMsZ0JBQWdCLEVBQUVjLGVBQWUsdUNBQXVDLENBQUM7UUFFeEYsT0FBT0MsSUFBQUEsbUNBQXVCLEVBQUMsSUFBSSxDQUFDaEMsWUFBWSxFQUFFVyxPQUFPaEIsU0FBUyxDQUFDSyxjQUFjVyxPQUFPaEIsU0FBU2tCO1lBQy9GLElBQUksQ0FBQ2IsWUFBWSxHQUFHQTtZQUVwQkwsUUFBUXlCLEtBQUssQ0FBQyxDQUFDLGtCQUFrQixFQUFFVyxlQUFlLHFDQUFxQyxDQUFDO1lBRXhGLE9BQU9uQixRQUFRRCxPQUFPaEIsU0FBU2tCO1FBQ2pDLEdBQUdBO0lBQ0w7SUFFQVUsT0FBT1osS0FBSyxFQUFFaEIsT0FBTyxFQUFFO1FBQ3JCLE1BQU1zQyxVQUFVQyxJQUFBQSxnQkFBUyxFQUFDdkIsUUFDcEJ3QixZQUFZQyxJQUFBQSxrQkFBVyxFQUFDekI7UUFFOUIsSUFBSXNCLFdBQVdFLFdBQVc7WUFDeEI7UUFDRjtRQUVBLE1BQU1oQixvQkFBb0IsSUFBSSxFQUN4QmtCLG9CQUFvQkMsSUFBQUEsK0NBQXVDLEVBQUNuQixtQkFBbUJ4QjtRQUVyRkEsUUFBUTRDLGFBQWEsQ0FBQ0Y7SUFDeEI7SUFFQUcsU0FBUztRQUNQLElBQUlDO1FBRUosTUFBTUMsT0FBTyxJQUFJLENBQUNDLE9BQU8sSUFDbkIvQyxTQUFTLElBQUksQ0FBQ29CLFNBQVM7UUFFN0J5QixPQUFPO1lBQ0xDO1lBQ0E5QztRQUNGO1FBRUEsT0FBTzZDO0lBQ1Q7SUFFQSxPQUFPQyxPQUFPLG9CQUFvQjtJQUVsQyxPQUFPRSxTQUFTSCxJQUFJLEVBQUU5QyxPQUFPLEVBQUU7UUFDN0IsSUFBSXdCLG9CQUFvQjtRQUV4QixNQUFNLEVBQUV1QixJQUFJLEVBQUUsR0FBR0Q7UUFFakIsSUFBSSxJQUFJLENBQUNDLElBQUksS0FBS0EsTUFBTTtZQUN0QkcsSUFBQUEsb0JBQVcsRUFBQyxDQUFDbEQ7Z0JBQ1gsTUFBTSxFQUFFQyxNQUFNLEVBQUUsR0FBRzZDLE1BQ2JwQyx3QkFBd0J5QyxJQUFBQSx5Q0FBNEIsRUFBQ2xELFFBQVFELFVBQzdERSxPQUFPUSx1QkFDUFAsYUFBYSxNQUNiQyxjQUFjZ0QsSUFBQUEsNkNBQW9DLEVBQUMxQyx1QkFBdUJWLFVBQzFFSyxlQUFlZ0QsSUFBQUEsOENBQXFDLEVBQUMzQyx1QkFBdUJWO2dCQUVsRkEsVUFBVTtnQkFFVndCLG9CQUFvQixJQUFJMUIsa0JBQWtCRSxTQUFTQyxRQUFRQyxNQUFNQyxZQUFZQyxhQUFhQztZQUM1RixHQUFHTDtRQUNMO1FBRUEsT0FBT3dCO0lBQ1Q7SUFFQSxPQUFPOEIsY0FBY0MsU0FBUyxFQUFFdkQsT0FBTyxFQUFFO1FBQ3ZDLE1BQU13RCxnQkFBZ0JELFVBQVU5QyxPQUFPLElBQ2pDZSxvQkFBb0JpQyxJQUFBQSwyQ0FBa0MsRUFBQ0QsZUFBZXhEO1FBRTVFLE9BQU93QjtJQUNUO0FBQ0YifQ==
|
|
146
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2Fzc2VydGlvbi9wcm9wZXJ0eS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgY29udGludWF0aW9uVXRpbGl0aWVzIH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5pbXBvcnQgQXNzZXJ0aW9uIGZyb20gXCIuLi9hc3NlcnRpb25cIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uLy4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvY29udGV4dFwiO1xuaW1wb3J0IHsgaXNEZXJpdmVkLCBpc1RyYW5zaWVudCB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvc3RhdGVcIjtcbmltcG9ydCB7IHVuaWZ5VGVybVdpdGhQcm9wZXJ0aWVzIH0gZnJvbSBcIi4uLy4uL3Byb2Nlc3MvdmFsaWRhdGlvblwiO1xuaW1wb3J0IHsgaW5zdGFudGlhdGVQcm9wZXJ0eUFzc2VydGlvbiB9IGZyb20gXCIuLi8uLi9wcm9jZXNzL2luc3RhbnRpYXRlXCI7XG5pbXBvcnQgeyBwcm9wZXJ0eUFzc2VydGlvbkZyb21TdGF0ZW1lbnROb2RlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9lbGVtZW50XCI7XG5pbXBvcnQgeyB2YXJpYWJsZUFzc2lnbm1lbnRGcm9tUHJlcGVydHlBc3NlcnRpb24gfSBmcm9tIFwiLi4vLi4vcHJvY2Vzcy9hc3NpZ25cIjtcblxuY29uc3QgeyBhbGwgfSA9IGNvbnRpbnVhdGlvblV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIFByb3BlcnR5QXNzZXJ0aW9uIGV4dGVuZHMgQXNzZXJ0aW9uIHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCBzdWJqZWN0VGVybSwgcHJvcGVydHlUZXJtKSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50KTtcblxuICAgIHRoaXMuc3ViamVjdFRlcm0gPSBzdWJqZWN0VGVybTtcbiAgICB0aGlzLnByb3BlcnR5VGVybSA9IHByb3BlcnR5VGVybTtcbiAgfVxuXG4gIGdldFN1YmplY3RUZXJtKCkge1xuICAgIHJldHVybiB0aGlzLnN1YmplY3RUZXJtO1xuICB9XG5cbiAgZ2V0UHJvcGVydHlUZXJtKCkge1xuICAgIHJldHVybiB0aGlzLnByb3BlcnR5VGVybTtcbiAgfVxuXG4gIGdldFByb3BlcnR5QXNzZXJ0aW9uTm9kZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5nZXROb2RlKCksXG4gICAgICAgICAgcHJvcGVydHlBc3NlcnRpb25Ob2RlID0gbm9kZTsgLy8vXG5cbiAgICByZXR1cm4gcHJvcGVydHlBc3NlcnRpb25Ob2RlO1xuICB9XG5cbiAgZ2V0UHJvcGVydHlUeXBlKCkge1xuICAgIGNvbnN0IHByb3BlcnR5VGVybVR5cGUgPSB0aGlzLnByb3BlcnR5VGVybS5nZXRUeXBlKCksXG4gICAgICAgICAgcHJvcGVydHlUeXBlID0gcHJvcGVydHlUZXJtVHlwZTsgIC8vL1xuXG4gICAgcmV0dXJuIHByb3BlcnR5VHlwZTtcbiAgfVxuXG4gIHZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgbGV0IGFzc2VydGlvbjtcblxuICAgIGNvbnN0IHByb3BlcnR5QXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7cHJvcGVydHlBc3NlcnRpb25TdHJpbmd9JyBwcm9wZXJ0eSBhc3NlcnRpb24uLi5gKTtcblxuICAgIGFzc2VydGlvbiA9IHRoaXMuZmluZEFzc2VydGlvbihjb250ZXh0KTtcblxuICAgIGlmIChhc3NlcnRpb24gIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHByb3BlcnR5QXNzZXJ0aW9uID0gYXNzZXJ0aW9uOyAvLy9cblxuICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke3Byb3BlcnR5QXNzZXJ0aW9uU3RyaW5nfScgcHJvcGVydHkgYXNzZXJ0aW9uIGlzIGFscmVhZHkgcHJlc2VudC5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQocHJvcGVydHlBc3NlcnRpb24sIGNvbnRleHQsIGJhY2spO1xuICAgIH1cblxuICAgIGFzc2VydGlvbiA9IHRoaXM7XG5cbiAgICBjb25zdCB2YWxpZGF0ZVRlcm1zID0gdGhpcy52YWxpZGF0ZVRlcm1zLmJpbmQodGhpcyk7XG5cbiAgICByZXR1cm4gYWxsKFtcbiAgICAgIHZhbGlkYXRlVGVybXNcbiAgICBdLCBzdGF0ZSwgY29udGV4dCwgKHN0YXRlLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICB0aGlzLmFzc2lnbihzdGF0ZSwgY29udGV4dCk7XG5cbiAgICAgIGNvbnRleHQuYWRkQXNzZXJ0aW9uKGFzc2VydGlvbik7XG5cbiAgICAgIGNvbnN0IHByb3BlcnR5QXNzZXJ0aW9uID0gYXNzZXJ0aW9uOyAvLy9cblxuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtwcm9wZXJ0eUFzc2VydGlvblN0cmluZ30nIHByb3BlcnR5IGFzc2VydGlvbi5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQocHJvcGVydHlBc3NlcnRpb24sIGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdmFsaWRhdGVUZXJtcyhzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHByb3BlcnR5QXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtwcm9wZXJ0eUFzc2VydGlvblN0cmluZ30nIHByb3BlcnR5IGFzc2VydGlvbidzIHRlcm1zLi4uYCk7XG5cbiAgICBjb25zdCB2YWxpZGF0ZVN1YmplY3RUZXJtID0gdGhpcy52YWxpZGF0ZVN1YmplY3RUZXJtLmJpbmQodGhpcyksXG4gICAgICAgICAgdmFsaWRhdGVQcm9wZXJ0eVRlcm0gPSB0aGlzLnZhbGlkYXRlUHJvcGVydHlUZXJtLmJpbmQodGhpcyk7XG5cbiAgICByZXR1cm4gYWxsKFtcbiAgICAgIHZhbGlkYXRlU3ViamVjdFRlcm0sXG4gICAgICB2YWxpZGF0ZVByb3BlcnR5VGVybVxuICAgIF0sIHN0YXRlLCBjb250ZXh0LCAoc3RhdGUsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnN0IHN1YmplY3RUZXJtVHlwZSA9IHRoaXMuc3ViamVjdFRlcm0uZ2V0VHlwZSgpLFxuICAgICAgICAgICAgcHJvcGVydHlUZXJtVHlwZSA9IHRoaXMucHJvcGVydHlUZXJtLmdldFR5cGUoKSxcbiAgICAgICAgICAgIHN1YmplY3RUZXJtVHlwZUVxdWFsVG9TdWJUeXBlT3JTdXBlclR5cGVPZlByb3BlcnR5VGVybVR5cGUgPSBzdWJqZWN0VGVybVR5cGUuaXNFcXVhbFRvU3ViVHlwZU9yU3VwZXJUeXBlT2YocHJvcGVydHlUZXJtVHlwZSk7XG5cbiAgICAgIGlmICghc3ViamVjdFRlcm1UeXBlRXF1YWxUb1N1YlR5cGVPclN1cGVyVHlwZU9mUHJvcGVydHlUZXJtVHlwZSkge1xuICAgICAgICByZXR1cm4gYmFjaygpO1xuICAgICAgfVxuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3Byb3BlcnR5QXNzZXJ0aW9uU3RyaW5nfScgcHJvcGVydHkgYXNzZXJ0aW9uJ3MgdGVybXMuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHN0YXRlLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHZhbGlkYXRlU3ViamVjdFRlcm0oc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBpbmNsdWRlVHlwZSA9IGZhbHNlLFxuICAgICAgICAgIHByb3BlcnR5U3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoaW5jbHVkZVR5cGUpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtwcm9wZXJ0eVN0cmluZ30nIHByb3BlcnR5IGFzc2VydGlvbidzIHN1YmplY3QgdGVybS4uLmApO1xuXG4gICAgcmV0dXJuIHRoaXMuc3ViamVjdFRlcm0udmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIChzdWJqZWN0VGVybSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgdGhpcy5zdWJqZWN0VGVybSA9IHN1YmplY3RUZXJtO1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3Byb3BlcnR5U3RyaW5nfScgcHJvcGVydHkgYXNzZXJ0aW9uJ3Mgc3ViamVjdCB0ZXJtLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChzdGF0ZSwgY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB2YWxpZGF0ZVByb3BlcnR5VGVybShzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGluY2x1ZGVUeXBlID0gZmFsc2UsXG4gICAgICAgICAgcHJvcGVydHlTdHJpbmcgPSB0aGlzLmdldFN0cmluZyhpbmNsdWRlVHlwZSk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3Byb3BlcnR5U3RyaW5nfScgcHJvcGVydHkgYXNzZXJ0aW9uJ3MgcHJvcGVydHkgdGVybS4uLmApO1xuXG4gICAgcmV0dXJuIHVuaWZ5VGVybVdpdGhQcm9wZXJ0aWVzKHRoaXMucHJvcGVydHlUZXJtLCBzdGF0ZSwgY29udGV4dCwgKHByb3BlcnR5VGVybSwgc3RhdGUsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIHRoaXMucHJvcGVydHlUZXJtID0gcHJvcGVydHlUZXJtO1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3Byb3BlcnR5U3RyaW5nfScgcHJvcGVydHkgYXNzZXJ0aW9uJ3MgcHJvcGVydHkgdGVybS5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoc3RhdGUsIGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spXG4gIH1cblxuICBhc3NpZ24oc3RhdGUsIGNvbnRleHQpIHtcbiAgICBjb25zdCBkZXJpdmVkID0gaXNEZXJpdmVkKHN0YXRlKSxcbiAgICAgICAgICB0cmFuc2llbnQgPSBpc1RyYW5zaWVudChzdGF0ZSk7XG5cbiAgICBpZiAoZGVyaXZlZCB8fCB0cmFuc2llbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBwcm9wZXJ0eUFzc2VydGlvbiA9IHRoaXMsIC8vL1xuICAgICAgICAgIHZhcmlhYmxlQXNzaWdtZW50ID0gdmFyaWFibGVBc3NpZ25tZW50RnJvbVByZXBlcnR5QXNzZXJ0aW9uKHByb3BlcnR5QXNzZXJ0aW9uLCBjb250ZXh0KTtcblxuICAgIGNvbnRleHQuYWRkQXNzaWdubWVudCh2YXJpYWJsZUFzc2lnbWVudCk7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgbGV0IGpzb247XG5cbiAgICBjb25zdCBuYW1lID0gdGhpcy5nZXROYW1lKCksXG4gICAgICAgICAgc3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTtcblxuICAgIGpzb24gPSB7XG4gICAgICBuYW1lLFxuICAgICAgc3RyaW5nXG4gICAgfTtcblxuICAgIHJldHVybiBqc29uO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIlByb3BlcnR5QXNzZXJ0aW9uXCI7XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgICBsZXQgcHJvcGVydHlBc3NlcnRpb24gPSBudWxsO1xuXG4gICAgY29uc3QgeyBuYW1lIH0gPSBqc29uO1xuXG4gICAgaWYgKHRoaXMubmFtZSA9PT0gbmFtZSkge1xuICAgICAgaW5zdGFudGlhdGUoKGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgICAgIHByb3BlcnR5QXNzZXJ0aW9uTm9kZSA9IGluc3RhbnRpYXRlUHJvcGVydHlBc3NlcnRpb24oc3RyaW5nLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgbm9kZSA9IHByb3BlcnR5QXNzZXJ0aW9uTm9kZSwgIC8vL1xuICAgICAgICAgICAgICBicmVha1BvaW50ID0gbnVsbCxcbiAgICAgICAgICAgICAgc3ViamVjdFRlcm0gPSBzdWJqZWN0VGVybUZyb21Qcm9wZXJ0eUFzc2VydGlvbk5vZGUocHJvcGVydHlBc3NlcnRpb25Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgcHJvcGVydHlUZXJtID0gcHJvcGVydHlUZXJtRnJvbVByb3BlcnR5QXNzZXJ0aW9uTm9kZShwcm9wZXJ0eUFzc2VydGlvbk5vZGUsIGNvbnRleHQpO1xuXG4gICAgICAgIGNvbnRleHQgPSBudWxsO1xuXG4gICAgICAgIHByb3BlcnR5QXNzZXJ0aW9uID0gbmV3IFByb3BlcnR5QXNzZXJ0aW9uKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgc3ViamVjdFRlcm0sIHByb3BlcnR5VGVybSk7XG4gICAgICB9LCBjb250ZXh0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcHJvcGVydHlBc3NlcnRpb247XG4gIH1cblxuICBzdGF0aWMgZnJvbVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50LmdldE5vZGUoKSxcbiAgICAgICAgICBwcm9wZXJ0eUFzc2VydGlvbiA9IHByb3BlcnR5QXNzZXJ0aW9uRnJvbVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gcHJvcGVydHlBc3NlcnRpb247XG4gIH1cbn0pO1xuXG5mdW5jdGlvbiBzdWJqZWN0VGVybUZyb21Qcm9wZXJ0eUFzc2VydGlvbk5vZGUocHJvcGVydHlBc3NlcnRpb25Ob2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHN1YmplY3RUZXJtTm9kZSA9IHByb3BlcnR5QXNzZXJ0aW9uTm9kZS5nZXRTdWJqZWN0VGVybU5vZGUoKSxcbiAgICAgICAgc3ViamVjdFRlcm0gPSBjb250ZXh0LmZpbmRUZXJtQnlUZXJtTm9kZShzdWJqZWN0VGVybU5vZGUpO1xuXG4gIHJldHVybiBzdWJqZWN0VGVybTtcbn1cblxuZnVuY3Rpb24gcHJvcGVydHlUZXJtRnJvbVByb3BlcnR5QXNzZXJ0aW9uTm9kZShwcm9wZXJ0eUFzc2VydGlvbk5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgcHJvcGVydHlUZXJtTm9kZSA9IHByb3BlcnR5QXNzZXJ0aW9uTm9kZS5nZXRQcm9wZXJ0eVRlcm1Ob2RlKCksXG4gICAgICAgIHByb3BlcnR5VGVybSA9IGNvbnRleHQuZmluZFRlcm1CeVRlcm1Ob2RlKHByb3BlcnR5VGVybU5vZGUpO1xuXG4gIHJldHVybiBwcm9wZXJ0eVRlcm07XG59XG4iXSwibmFtZXMiOlsiYWxsIiwiY29udGludWF0aW9uVXRpbGl0aWVzIiwiZGVmaW5lIiwiUHJvcGVydHlBc3NlcnRpb24iLCJBc3NlcnRpb24iLCJjb250ZXh0Iiwic3RyaW5nIiwibm9kZSIsImJyZWFrUG9pbnQiLCJzdWJqZWN0VGVybSIsInByb3BlcnR5VGVybSIsImdldFN1YmplY3RUZXJtIiwiZ2V0UHJvcGVydHlUZXJtIiwiZ2V0UHJvcGVydHlBc3NlcnRpb25Ob2RlIiwiZ2V0Tm9kZSIsInByb3BlcnR5QXNzZXJ0aW9uTm9kZSIsImdldFByb3BlcnR5VHlwZSIsInByb3BlcnR5VGVybVR5cGUiLCJnZXRUeXBlIiwicHJvcGVydHlUeXBlIiwidmFsaWRhdGUiLCJzdGF0ZSIsImZvcndhcmQiLCJiYWNrIiwiYXNzZXJ0aW9uIiwicHJvcGVydHlBc3NlcnRpb25TdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsImZpbmRBc3NlcnRpb24iLCJwcm9wZXJ0eUFzc2VydGlvbiIsImRlYnVnIiwidmFsaWRhdGVUZXJtcyIsImJpbmQiLCJhc3NpZ24iLCJhZGRBc3NlcnRpb24iLCJ2YWxpZGF0ZVN1YmplY3RUZXJtIiwidmFsaWRhdGVQcm9wZXJ0eVRlcm0iLCJzdWJqZWN0VGVybVR5cGUiLCJzdWJqZWN0VGVybVR5cGVFcXVhbFRvU3ViVHlwZU9yU3VwZXJUeXBlT2ZQcm9wZXJ0eVRlcm1UeXBlIiwiaXNFcXVhbFRvU3ViVHlwZU9yU3VwZXJUeXBlT2YiLCJpbmNsdWRlVHlwZSIsInByb3BlcnR5U3RyaW5nIiwidW5pZnlUZXJtV2l0aFByb3BlcnRpZXMiLCJkZXJpdmVkIiwiaXNEZXJpdmVkIiwidHJhbnNpZW50IiwiaXNUcmFuc2llbnQiLCJ2YXJpYWJsZUFzc2lnbWVudCIsInZhcmlhYmxlQXNzaWdubWVudEZyb21QcmVwZXJ0eUFzc2VydGlvbiIsImFkZEFzc2lnbm1lbnQiLCJ0b0pTT04iLCJqc29uIiwibmFtZSIsImdldE5hbWUiLCJmcm9tSlNPTiIsImluc3RhbnRpYXRlIiwiaW5zdGFudGlhdGVQcm9wZXJ0eUFzc2VydGlvbiIsInN1YmplY3RUZXJtRnJvbVByb3BlcnR5QXNzZXJ0aW9uTm9kZSIsInByb3BlcnR5VGVybUZyb21Qcm9wZXJ0eUFzc2VydGlvbk5vZGUiLCJmcm9tU3RhdGVtZW50Iiwic3RhdGVtZW50Iiwic3RhdGVtZW50Tm9kZSIsInByb3BlcnR5QXNzZXJ0aW9uRnJvbVN0YXRlbWVudE5vZGUiLCJzdWJqZWN0VGVybU5vZGUiLCJnZXRTdWJqZWN0VGVybU5vZGUiLCJmaW5kVGVybUJ5VGVybU5vZGUiLCJwcm9wZXJ0eVRlcm1Ob2RlIiwiZ2V0UHJvcGVydHlUZXJtTm9kZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBZ0JBOzs7ZUFBQTs7O2dDQWRzQztrRUFFaEI7MEJBRUM7eUJBQ0s7dUJBQ1c7NEJBQ0M7NkJBQ0s7eUJBQ007d0JBQ0s7Ozs7OztBQUV4RCxNQUFNLEVBQUVBLEdBQUcsRUFBRSxHQUFHQyxxQ0FBcUI7TUFFckMsV0FBZUMsSUFBQUEsZ0JBQU0sRUFBQyxNQUFNQywwQkFBMEJDLGtCQUFTO0lBQzdELFlBQVlDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxJQUFJLEVB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
|
|
@@ -11,6 +11,8 @@ Object.defineProperty(exports, "default", {
|
|
|
11
11
|
const _occamlanguages = require("occam-languages");
|
|
12
12
|
const _elements = /*#__PURE__*/ _interop_require_wildcard(require("../../elements"));
|
|
13
13
|
const _assertion = /*#__PURE__*/ _interop_require_default(require("../assertion"));
|
|
14
|
+
const _context = require("../../utilities/context");
|
|
15
|
+
const _instantiate = require("../../process/instantiate");
|
|
14
16
|
function _interop_require_default(obj) {
|
|
15
17
|
return obj && obj.__esModule ? obj : {
|
|
16
18
|
default: obj
|
|
@@ -150,7 +152,36 @@ const _default = (0, _elements.define)(class SchemaAssertion extends _assertion.
|
|
|
150
152
|
return forward(state, context, back);
|
|
151
153
|
}, back);
|
|
152
154
|
}
|
|
155
|
+
toJSON() {
|
|
156
|
+
let json;
|
|
157
|
+
const name = this.getName(), string = this.getString();
|
|
158
|
+
json = {
|
|
159
|
+
name,
|
|
160
|
+
string
|
|
161
|
+
};
|
|
162
|
+
return json;
|
|
163
|
+
}
|
|
153
164
|
static name = "SchemaAssertion";
|
|
165
|
+
static fromJSON(json, context) {
|
|
166
|
+
let schemaAssertion = null;
|
|
167
|
+
const { name } = json;
|
|
168
|
+
if (this.name === name) {
|
|
169
|
+
(0, _context.instantiate)((context)=>{
|
|
170
|
+
const { string } = json, schemaAssertionNode = (0, _instantiate.instantiatePropertyAssertion)(string, context), node = schemaAssertionNode, breakPoint = null, link = linkFromSchemaAssertionNode(schemaAssertionNode, context), frame = frameFromSchemaAssertionNode(schemaAssertionNode, context);
|
|
171
|
+
context = null;
|
|
172
|
+
schemaAssertion = new SchemaAssertion(context, string, node, breakPoint, link, frame);
|
|
173
|
+
}, context);
|
|
174
|
+
}
|
|
175
|
+
return schemaAssertion;
|
|
176
|
+
}
|
|
154
177
|
});
|
|
178
|
+
function linkFromSchemaAssertionNode(schemaAssertionNode, context) {
|
|
179
|
+
const linkNode = schemaAssertionNode.getLinkNode(), link = context.findLinkByLinkNode(linkNode);
|
|
180
|
+
return link;
|
|
181
|
+
}
|
|
182
|
+
function frameFromSchemaAssertionNode(schemaAssertionNode, context) {
|
|
183
|
+
const frameNode = schemaAssertionNode.getFrameNode(), frame = context.findFrameByFrameNode(frameNode);
|
|
184
|
+
return frame;
|
|
185
|
+
}
|
|
155
186
|
|
|
156
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2Fzc2VydGlvbi9zY2hlbWEuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGJyZWFrUG9pbnRVdGlsaXRpZXMsIGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IGVsZW1lbnRzIGZyb20gXCIuLi8uLi9lbGVtZW50c1wiO1xuaW1wb3J0IEFzc2VydGlvbiBmcm9tIFwiLi4vYXNzZXJ0aW9uXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi8uLi9lbGVtZW50c1wiO1xuXG5jb25zdCB7IHVuYnJlYWthYmxlIH0gPSBicmVha1BvaW50VXRpbGl0aWVzLFxuICAgICAgeyBjdXQsIGFsbCwgc29tZSwgZXZlcnkgfSA9IGNvbnRpbnVhdGlvblV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIFNjaGVtYUFzc2VydGlvbiBleHRlbmRzIEFzc2VydGlvbiB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgbGluaywgZnJhbWUpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy5saW5rID0gbGluaztcbiAgICB0aGlzLmZyYW1lID0gZnJhbWU7XG4gIH1cblxuICBnZXRMaW5rKCkge1xuICAgIHJldHVybiB0aGlzLmxpbms7XG4gIH1cblxuICBnZXRGcmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5mcmFtZTtcbiAgfVxuXG4gIGdldFNjaGVtYUFzc2VydGlvbk5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIHNjaGVtYUFzc2VydGlvbk5vZGUgPSBub2RlOyAgLy8vXG5cbiAgICByZXR1cm4gc2NoZW1hQXNzZXJ0aW9uTm9kZTtcbiAgfVxuXG4gIGlzU2luZ3VsYXIoKSB7IHJldHVybiB0aGlzLmZyYW1lLmlzU2luZ3VsYXIoKTsgfVxuXG4gIGdldEFzc3VtcHRpb25zKCkgeyByZXR1cm4gdGhpcy5mcmFtZS5nZXRBc3N1bXB0aW9ucygpOyB9XG5cbiAgZ2V0TWV0YXZhcmlhYmxlKCkgeyByZXR1cm4gdGhpcy5mcmFtZS5nZXRNZXRhdmFyaWFibGUoKTsgfVxuXG4gIGdldEltcGxpY2l0QXNzdW1wdGlvbnMoY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGltcGxpY2l0QXNzdW1wdGlvbnMgPSBbXSxcbiAgICAgICAgICBtZXRhdmFyaWFibGUgPSB0aGlzLmdldE1ldGF2YXJpYWJsZSgpO1xuXG4gICAgaWYgKG1ldGF2YXJpYWJsZSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGZvcndhcmQoaW1wbGljaXRBc3N1bXB0aW9ucywgY29udGV4dCwgYmFjayk7XG4gICAgfVxuXG4gICAgY29uc3QgZmFjdHMgPSBjb250ZXh0LmdldEZhY3RzKCk7XG5cbiAgICBmYWN0cy5mb3JFYWNoKChmYWN0KSA9PiB7XG4gICAgICBjb25zdCB7IEltcGxpY2l0QXNzdW1wdGlvbiB9ID0gZWxlbWVudHMsXG4gICAgICAgICAgICBzdGF0ZW1lbnQgPSBmYWN0LmdldFN0YXRlbWVudCgpLFxuICAgICAgICAgICAgaW1wbGljaXRBc3N1bXB0aW9uID0gSW1wbGljaXRBc3N1bXB0aW9uLmZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KTtcblxuICAgICAgaW1wbGljaXRBc3N1bXB0aW9ucy5wdXNoKGltcGxpY2l0QXNzdW1wdGlvbik7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZXZlcnkoaW1wbGljaXRBc3N1bXB0aW9ucywgKGltcGxpY2l0QXNzdW1wdGlvbiwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgICAgcmV0dXJuIGltcGxpY2l0QXNzdW1wdGlvbi52ZXJpZnkoY29udGV4dCwgZm9yd2FyZCwgYmFjayk7XG4gICAgfSwgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIHJldHVybiBmb3J3YXJkKGltcGxpY2l0QXNzdW1wdGlvbnMsIGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgYXBwbHkgPSB1bmJyZWFrYWJsZShmdW5jdGlvbiAoc3RlcCwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGZvcndhcmQgPSBjdXQoZm9yd2FyZCwgYmFjayk7IC8vL1xuXG4gICAgY29uc3Qgc2NoZW1hcyA9IGNvbnRleHQuZ2V0U2NoZW1hcygpLFxuICAgICAgICAgIHN0YXRlbWVudCA9IHN0ZXAuZ2V0U3RhdGVtZW50KCksXG4gICAgICAgICAgc2NoZW1hQXNzZXJ0aW9uID0gdGhpcywgLy8vXG4gICAgICAgICAgc2NoZW1hQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBBcHBseWluZyB0aGUgJyR7c2NoZW1hQXNzZXJ0aW9uU3RyaW5nfScgc2NoZW1hIGFzc2VydGlvbi4uLmApO1xuXG4gICAgcmV0dXJuIHNvbWUoc2NoZW1hcywgKHNjaGVtYSwgZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgICAgcmV0dXJuIHNjaGVtYS5hcHBseShzdGF0ZW1lbnQsIHNjaGVtYUFzc2VydGlvbiwgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4uYXBwbGllZCB0aGUgJyR7c2NoZW1hQXNzZXJ0aW9uU3RyaW5nfScgc2NoZW1hIGFzc2VydGlvbi5gKTtcblxuICAgICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICAgIH0sIGJhY2spO1xuICAgIH0sIGZvcndhcmQsIGJhY2spO1xuICB9KTtcblxuICB2YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGxldCBhc3NlcnRpb247XG5cbiAgICBjb25zdCBzY2hlbWFBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtzY2hlbWFBc3NlcnRpb25TdHJpbmd9JyBzY2hlbWEgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgICBhc3NlcnRpb24gPSB0aGlzLmZpbmRBc3NlcnRpb24oY29udGV4dCk7XG5cbiAgICBpZiAoYXNzZXJ0aW9uICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBzY2hlbWFBc3NlcnRpb24gPSBhc3NlcnRpb247IC8vL1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7c2NoZW1hQXNzZXJ0aW9uU3RyaW5nfScgc2NoZW1hIGFzc2VydGlvbiBpcyBhbHJlYWR5IHByZXNlbnQuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHNjaGVtYUFzc2VydGlvbiwgY29udGV4dCwgYmFjayk7XG4gICAgfVxuXG4gICAgYXNzZXJ0aW9uID0gdGhpczsgLy8vXG5cbiAgICBjb25zdCB2YWxpZGF0ZUxpbmsgPSB0aGlzLnZhbGlkYXRlTGluay5iaW5kKHRoaXMpLFxuICAgICAgICAgIHZhbGlkYXRlRnJhbWUgPSB0aGlzLnZhbGlkYXRlRnJhbWUuYmluZCh0aGlzKTtcblxuICAgIHJldHVybiBhbGwoW1xuICAgICAgdmFsaWRhdGVMaW5rLFxuICAgICAgdmFsaWRhdGVGcmFtZVxuICAgIF0sIHN0YXRlLCBjb250ZXh0LCAoc3RhdGUsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQuYWRkQXNzZXJ0aW9uKGFzc2VydGlvbik7XG5cbiAgICAgIGNvbnN0IHNjaGVtYUFzc2VydGlvbiA9IGFzc2VydGlvbjsgLy8vXG5cbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7c2NoZW1hQXNzZXJ0aW9uU3RyaW5nfScgc2NoZW1hIGFzc2VydGlvbi5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoc2NoZW1hQXNzZXJ0aW9uLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHZhbGlkYXRlTGluayhzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHNjaGVtYUFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3NjaGVtYUFzc2VydGlvblN0cmluZ30nIHNjaGVtYSBhc3NlcnRpb24ncyBsaW5rLi4uYCk7XG5cbiAgICByZXR1cm4gdGhpcy5saW5rLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAobGluaywgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgdGhpcy5saW5rID0gbGluaztcblxuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtzY2hlbWFBc3NlcnRpb25TdHJpbmd9JyBzY2hlbWEgYXNzZXJ0aW9uJ3MgbGluay5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoc3RhdGUsIGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdmFsaWRhdGVGcmFtZShzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHNjaGVtYUFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3NjaGVtYUFzc2VydGlvblN0cmluZ30nIHNjaGVtYSBhc3NlcnRpb24ncyBmcmFtZS4uLmApO1xuXG4gICAgcmV0dXJuIHRoaXMuZnJhbWUudmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIChmcmFtZSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgdGhpcy5mcmFtZSA9IGZyYW1lO1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3NjaGVtYUFzc2VydGlvblN0cmluZ30nIHNjaGVtYSBhc3NlcnRpb24ncyBmcmFtZS5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoc3RhdGUsIGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIlNjaGVtYUFzc2VydGlvblwiO1xufSk7XG4iXSwibmFtZXMiOlsidW5icmVha2FibGUiLCJicmVha1BvaW50VXRpbGl0aWVzIiwiY3V0IiwiYWxsIiwic29tZSIsImV2ZXJ5IiwiY29udGludWF0aW9uVXRpbGl0aWVzIiwiZGVmaW5lIiwiU2NoZW1hQXNzZXJ0aW9uIiwiQXNzZXJ0aW9uIiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJicmVha1BvaW50IiwibGluayIsImZyYW1lIiwiZ2V0TGluayIsImdldEZyYW1lIiwiZ2V0U2NoZW1hQXNzZXJ0aW9uTm9kZSIsImdldE5vZGUiLCJzY2hlbWFBc3NlcnRpb25Ob2RlIiwiaXNTaW5ndWxhciIsImdldEFzc3VtcHRpb25zIiwiZ2V0TWV0YXZhcmlhYmxlIiwiZ2V0SW1wbGljaXRBc3N1bXB0aW9ucyIsImZvcndhcmQiLCJiYWNrIiwiaW1wbGljaXRBc3N1bXB0aW9ucyIsIm1ldGF2YXJpYWJsZSIsImZhY3RzIiwiZ2V0RmFjdHMiLCJmb3JFYWNoIiwiZmFjdCIsIkltcGxpY2l0QXNzdW1wdGlvbiIsImVsZW1lbnRzIiwic3RhdGVtZW50IiwiZ2V0U3RhdGVtZW50IiwiaW1wbGljaXRBc3N1bXB0aW9uIiwiZnJvbVN0YXRlbWVudCIsInB1c2giLCJ2ZXJpZnkiLCJhcHBseSIsInN0ZXAiLCJzY2hlbWFzIiwiZ2V0U2NoZW1hcyIsInNjaGVtYUFzc2VydGlvbiIsInNjaGVtYUFzc2VydGlvblN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwic2NoZW1hIiwiZGVidWciLCJ2YWxpZGF0ZSIsInN0YXRlIiwiYXNzZXJ0aW9uIiwiZmluZEFzc2VydGlvbiIsInZhbGlkYXRlTGluayIsImJpbmQiLCJ2YWxpZGF0ZUZyYW1lIiwiYWRkQXNzZXJ0aW9uIiwibmFtZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7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
|
|
187
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2Fzc2VydGlvbi9zY2hlbWEuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGJyZWFrUG9pbnRVdGlsaXRpZXMsIGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IGVsZW1lbnRzIGZyb20gXCIuLi8uLi9lbGVtZW50c1wiO1xuaW1wb3J0IEFzc2VydGlvbiBmcm9tIFwiLi4vYXNzZXJ0aW9uXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi8uLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgaW5zdGFudGlhdGUgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2NvbnRleHRcIjtcbmltcG9ydCB7IGluc3RhbnRpYXRlUHJvcGVydHlBc3NlcnRpb24gfSBmcm9tIFwiLi4vLi4vcHJvY2Vzcy9pbnN0YW50aWF0ZVwiO1xuXG5jb25zdCB7IHVuYnJlYWthYmxlIH0gPSBicmVha1BvaW50VXRpbGl0aWVzLFxuICAgICAgeyBjdXQsIGFsbCwgc29tZSwgZXZlcnkgfSA9IGNvbnRpbnVhdGlvblV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIFNjaGVtYUFzc2VydGlvbiBleHRlbmRzIEFzc2VydGlvbiB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgbGluaywgZnJhbWUpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy5saW5rID0gbGluaztcbiAgICB0aGlzLmZyYW1lID0gZnJhbWU7XG4gIH1cblxuICBnZXRMaW5rKCkge1xuICAgIHJldHVybiB0aGlzLmxpbms7XG4gIH1cblxuICBnZXRGcmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5mcmFtZTtcbiAgfVxuXG4gIGdldFNjaGVtYUFzc2VydGlvbk5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIHNjaGVtYUFzc2VydGlvbk5vZGUgPSBub2RlOyAgLy8vXG5cbiAgICByZXR1cm4gc2NoZW1hQXNzZXJ0aW9uTm9kZTtcbiAgfVxuXG4gIGlzU2luZ3VsYXIoKSB7IHJldHVybiB0aGlzLmZyYW1lLmlzU2luZ3VsYXIoKTsgfVxuXG4gIGdldEFzc3VtcHRpb25zKCkgeyByZXR1cm4gdGhpcy5mcmFtZS5nZXRBc3N1bXB0aW9ucygpOyB9XG5cbiAgZ2V0TWV0YXZhcmlhYmxlKCkgeyByZXR1cm4gdGhpcy5mcmFtZS5nZXRNZXRhdmFyaWFibGUoKTsgfVxuXG4gIGdldEltcGxpY2l0QXNzdW1wdGlvbnMoY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGltcGxpY2l0QXNzdW1wdGlvbnMgPSBbXSxcbiAgICAgICAgICBtZXRhdmFyaWFibGUgPSB0aGlzLmdldE1ldGF2YXJpYWJsZSgpO1xuXG4gICAgaWYgKG1ldGF2YXJpYWJsZSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGZvcndhcmQoaW1wbGljaXRBc3N1bXB0aW9ucywgY29udGV4dCwgYmFjayk7XG4gICAgfVxuXG4gICAgY29uc3QgZmFjdHMgPSBjb250ZXh0LmdldEZhY3RzKCk7XG5cbiAgICBmYWN0cy5mb3JFYWNoKChmYWN0KSA9PiB7XG4gICAgICBjb25zdCB7IEltcGxpY2l0QXNzdW1wdGlvbiB9ID0gZWxlbWVudHMsXG4gICAgICAgICAgICBzdGF0ZW1lbnQgPSBmYWN0LmdldFN0YXRlbWVudCgpLFxuICAgICAgICAgICAgaW1wbGljaXRBc3N1bXB0aW9uID0gSW1wbGljaXRBc3N1bXB0aW9uLmZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KTtcblxuICAgICAgaW1wbGljaXRBc3N1bXB0aW9ucy5wdXNoKGltcGxpY2l0QXNzdW1wdGlvbik7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZXZlcnkoaW1wbGljaXRBc3N1bXB0aW9ucywgKGltcGxpY2l0QXNzdW1wdGlvbiwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgICAgcmV0dXJuIGltcGxpY2l0QXNzdW1wdGlvbi52ZXJpZnkoY29udGV4dCwgZm9yd2FyZCwgYmFjayk7XG4gICAgfSwgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIHJldHVybiBmb3J3YXJkKGltcGxpY2l0QXNzdW1wdGlvbnMsIGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgYXBwbHkgPSB1bmJyZWFrYWJsZShmdW5jdGlvbiAoc3RlcCwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGZvcndhcmQgPSBjdXQoZm9yd2FyZCwgYmFjayk7IC8vL1xuXG4gICAgY29uc3Qgc2NoZW1hcyA9IGNvbnRleHQuZ2V0U2NoZW1hcygpLFxuICAgICAgICAgIHN0YXRlbWVudCA9IHN0ZXAuZ2V0U3RhdGVtZW50KCksXG4gICAgICAgICAgc2NoZW1hQXNzZXJ0aW9uID0gdGhpcywgLy8vXG4gICAgICAgICAgc2NoZW1hQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBBcHBseWluZyB0aGUgJyR7c2NoZW1hQXNzZXJ0aW9uU3RyaW5nfScgc2NoZW1hIGFzc2VydGlvbi4uLmApO1xuXG4gICAgcmV0dXJuIHNvbWUoc2NoZW1hcywgKHNjaGVtYSwgZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgICAgcmV0dXJuIHNjaGVtYS5hcHBseShzdGF0ZW1lbnQsIHNjaGVtYUFzc2VydGlvbiwgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4uYXBwbGllZCB0aGUgJyR7c2NoZW1hQXNzZXJ0aW9uU3RyaW5nfScgc2NoZW1hIGFzc2VydGlvbi5gKTtcblxuICAgICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICAgIH0sIGJhY2spO1xuICAgIH0sIGZvcndhcmQsIGJhY2spO1xuICB9KTtcblxuICB2YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGxldCBhc3NlcnRpb247XG5cbiAgICBjb25zdCBzY2hlbWFBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtzY2hlbWFBc3NlcnRpb25TdHJpbmd9JyBzY2hlbWEgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgICBhc3NlcnRpb24gPSB0aGlzLmZpbmRBc3NlcnRpb24oY29udGV4dCk7XG5cbiAgICBpZiAoYXNzZXJ0aW9uICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBzY2hlbWFBc3NlcnRpb24gPSBhc3NlcnRpb247IC8vL1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7c2NoZW1hQXNzZXJ0aW9uU3RyaW5nfScgc2NoZW1hIGFzc2VydGlvbiBpcyBhbHJlYWR5IHByZXNlbnQuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHNjaGVtYUFzc2VydGlvbiwgY29udGV4dCwgYmFjayk7XG4gICAgfVxuXG4gICAgYXNzZXJ0aW9uID0gdGhpczsgLy8vXG5cbiAgICBjb25zdCB2YWxpZGF0ZUxpbmsgPSB0aGlzLnZhbGlkYXRlTGluay5iaW5kKHRoaXMpLFxuICAgICAgICAgIHZhbGlkYXRlRnJhbWUgPSB0aGlzLnZhbGlkYXRlRnJhbWUuYmluZCh0aGlzKTtcblxuICAgIHJldHVybiBhbGwoW1xuICAgICAgdmFsaWRhdGVMaW5rLFxuICAgICAgdmFsaWRhdGVGcmFtZVxuICAgIF0sIHN0YXRlLCBjb250ZXh0LCAoc3RhdGUsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQuYWRkQXNzZXJ0aW9uKGFzc2VydGlvbik7XG5cbiAgICAgIGNvbnN0IHNjaGVtYUFzc2VydGlvbiA9IGFzc2VydGlvbjsgLy8vXG5cbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7c2NoZW1hQXNzZXJ0aW9uU3RyaW5nfScgc2NoZW1hIGFzc2VydGlvbi5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoc2NoZW1hQXNzZXJ0aW9uLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHZhbGlkYXRlTGluayhzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHNjaGVtYUFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3NjaGVtYUFzc2VydGlvblN0cmluZ30nIHNjaGVtYSBhc3NlcnRpb24ncyBsaW5rLi4uYCk7XG5cbiAgICByZXR1cm4gdGhpcy5saW5rLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAobGluaywgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgdGhpcy5saW5rID0gbGluaztcblxuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtzY2hlbWFBc3NlcnRpb25TdHJpbmd9JyBzY2hlbWEgYXNzZXJ0aW9uJ3MgbGluay5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoc3RhdGUsIGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdmFsaWRhdGVGcmFtZShzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHNjaGVtYUFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3NjaGVtYUFzc2VydGlvblN0cmluZ30nIHNjaGVtYSBhc3NlcnRpb24ncyBmcmFtZS4uLmApO1xuXG4gICAgcmV0dXJuIHRoaXMuZnJhbWUudmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIChmcmFtZSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgdGhpcy5mcmFtZSA9IGZyYW1lO1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3NjaGVtYUFzc2VydGlvblN0cmluZ30nIHNjaGVtYSBhc3NlcnRpb24ncyBmcmFtZS5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoc3RhdGUsIGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIGxldCBqc29uO1xuXG4gICAgY29uc3QgbmFtZSA9IHRoaXMuZ2V0TmFtZSgpLFxuICAgICAgICAgIHN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7XG5cbiAgICBqc29uID0ge1xuICAgICAgbmFtZSxcbiAgICAgIHN0cmluZ1xuICAgIH07XG5cbiAgICByZXR1cm4ganNvbjtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJTY2hlbWFBc3NlcnRpb25cIjtcblxuICBzdGF0aWMgZnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICAgIGxldCBzY2hlbWFBc3NlcnRpb24gPSBudWxsO1xuXG4gICAgY29uc3QgeyBuYW1lIH0gPSBqc29uO1xuXG4gICAgaWYgKHRoaXMubmFtZSA9PT0gbmFtZSkge1xuICAgICAgaW5zdGFudGlhdGUoKGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgICAgIHNjaGVtYUFzc2VydGlvbk5vZGUgPSBpbnN0YW50aWF0ZVByb3BlcnR5QXNzZXJ0aW9uKHN0cmluZywgY29udGV4dCksXG4gICAgICAgICAgICAgIG5vZGUgPSBzY2hlbWFBc3NlcnRpb25Ob2RlLCAgLy8vXG4gICAgICAgICAgICAgIGJyZWFrUG9pbnQgPSBudWxsLFxuICAgICAgICAgICAgICBsaW5rID0gbGlua0Zyb21TY2hlbWFBc3NlcnRpb25Ob2RlKHNjaGVtYUFzc2VydGlvbk5vZGUsIGNvbnRleHQpLFxuICAgICAgICAgICAgICBmcmFtZSA9IGZyYW1lRnJvbVNjaGVtYUFzc2VydGlvbk5vZGUoc2NoZW1hQXNzZXJ0aW9uTm9kZSwgY29udGV4dCk7XG5cbiAgICAgICAgY29udGV4dCA9IG51bGw7XG5cbiAgICAgICAgc2NoZW1hQXNzZXJ0aW9uID0gbmV3IFNjaGVtYUFzc2VydGlvbihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIGxpbmssIGZyYW1lKTtcbiAgICAgIH0sIGNvbnRleHQpO1xuICAgIH1cblxuICAgIHJldHVybiBzY2hlbWFBc3NlcnRpb247XG4gIH1cbn0pO1xuXG5mdW5jdGlvbiBsaW5rRnJvbVNjaGVtYUFzc2VydGlvbk5vZGUoc2NoZW1hQXNzZXJ0aW9uTm9kZSwgY29udGV4dCkge1xuICBjb25zdCBsaW5rTm9kZSA9IHNjaGVtYUFzc2VydGlvbk5vZGUuZ2V0TGlua05vZGUoKSxcbiAgICAgICAgbGluayA9IGNvbnRleHQuZmluZExpbmtCeUxpbmtOb2RlKGxpbmtOb2RlKTtcblxuICByZXR1cm4gbGluaztcbn1cblxuZnVuY3Rpb24gZnJhbWVGcm9tU2NoZW1hQXNzZXJ0aW9uTm9kZShzY2hlbWFBc3NlcnRpb25Ob2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IGZyYW1lTm9kZSA9IHNjaGVtYUFzc2VydGlvbk5vZGUuZ2V0RnJhbWVOb2RlKCksXG4gICAgICAgIGZyYW1lID0gY29udGV4dC5maW5kRnJhbWVCeUZyYW1lTm9kZShmcmFtZU5vZGUpO1xuXG4gIHJldHVybiBmcmFtZTtcbn1cbiJdLCJuYW1lcyI6WyJ1bmJyZWFrYWJsZSIsImJyZWFrUG9pbnRVdGlsaXRpZXMiLCJjdXQiLCJhbGwiLCJzb21lIiwiZXZlcnkiLCJjb250aW51YXRpb25VdGlsaXRpZXMiLCJkZWZpbmUiLCJTY2hlbWFBc3NlcnRpb24iLCJBc3NlcnRpb24iLCJjb250ZXh0Iiwic3RyaW5nIiwibm9kZSIsImJyZWFrUG9pbnQiLCJsaW5rIiwiZnJhbWUiLCJnZXRMaW5rIiwiZ2V0RnJhbWUiLCJnZXRTY2hlbWFBc3NlcnRpb25Ob2RlIiwiZ2V0Tm9kZSIsInNjaGVtYUFzc2VydGlvbk5vZGUiLCJpc1Npbmd1bGFyIiwiZ2V0QXNzdW1wdGlvbnMiLCJnZXRNZXRhdmFyaWFibGUiLCJnZXRJbXBsaWNpdEFzc3VtcHRpb25zIiwiZm9yd2FyZCIsImJhY2siLCJpbXBsaWNpdEFzc3VtcHRpb25zIiwibWV0YXZhcmlhYmxlIiwiZmFjdHMiLCJnZXRGYWN0cyIsImZvckVhY2giLCJmYWN0IiwiSW1wbGljaXRBc3N1bXB0aW9uIiwiZWxlbWVudHMiLCJzdGF0ZW1lbnQiLCJnZXRTdGF0ZW1lbnQiLCJpbXBsaWNpdEFzc3VtcHRpb24iLCJmcm9tU3RhdGVtZW50IiwicHVzaCIsInZlcmlmeSIsImFwcGx5Iiwic3RlcCIsInNjaGVtYXMiLCJnZXRTY2hlbWFzIiwic2NoZW1hQXNzZXJ0aW9uIiwic2NoZW1hQXNzZXJ0aW9uU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJzY2hlbWEiLCJkZWJ1ZyIsInZhbGlkYXRlIiwic3RhdGUiLCJhc3NlcnRpb24iLCJmaW5kQXNzZXJ0aW9uIiwidmFsaWRhdGVMaW5rIiwiYmluZCIsInZhbGlkYXRlRnJhbWUiLCJhZGRBc3NlcnRpb24iLCJ0b0pTT04iLCJqc29uIiwibmFtZSIsImdldE5hbWUiLCJmcm9tSlNPTiIsImluc3RhbnRpYXRlIiwiaW5zdGFudGlhdGVQcm9wZXJ0eUFzc2VydGlvbiIsImxpbmtGcm9tU2NoZW1hQXNzZXJ0aW9uTm9kZSIsImZyYW1lRnJvbVNjaGVtYUFzc2VydGlvbk5vZGUiLCJsaW5rTm9kZSIsImdldExpbmtOb2RlIiwiZmluZExpbmtCeUxpbmtOb2RlIiwiZnJhbWVOb2RlIiwiZ2V0RnJhbWVOb2RlIiwiZmluZEZyYW1lQnlGcmFtZU5vZGUiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQWNBOzs7ZUFBQTs7O2dDQVoyRDtrRUFFdEM7a0VBQ0M7eUJBR007NkJBQ2lCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUU3QyxNQUFNLEVBQUVBLFdB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
|
|
@@ -11,6 +11,7 @@ Object.defineProperty(exports, "default", {
|
|
|
11
11
|
const _occamlanguages = require("occam-languages");
|
|
12
12
|
const _assertion = /*#__PURE__*/ _interop_require_default(require("../assertion"));
|
|
13
13
|
const _elements = require("../../elements");
|
|
14
|
+
const _instantiate = require("../../process/instantiate");
|
|
14
15
|
const _context = require("../../utilities/context");
|
|
15
16
|
const _element = require("../../utilities/element");
|
|
16
17
|
function _interop_require_default(obj) {
|
|
@@ -127,7 +128,28 @@ const _default = (0, _elements.define)(class SignatureAssertion extends _asserti
|
|
|
127
128
|
});
|
|
128
129
|
}, context);
|
|
129
130
|
}
|
|
131
|
+
toJSON() {
|
|
132
|
+
let json;
|
|
133
|
+
const name = this.getName(), string = this.getString();
|
|
134
|
+
json = {
|
|
135
|
+
name,
|
|
136
|
+
string
|
|
137
|
+
};
|
|
138
|
+
return json;
|
|
139
|
+
}
|
|
130
140
|
static name = "SignatureAssertion";
|
|
141
|
+
static fromJSON(json, context) {
|
|
142
|
+
let signatureAssertion = null;
|
|
143
|
+
const { name } = json;
|
|
144
|
+
if (this.name === name) {
|
|
145
|
+
(0, _context.instantiate)((context)=>{
|
|
146
|
+
const { string } = json, signatureAssertionNode = (0, _instantiate.instantiatePropertyAssertion)(string, context), node = signatureAssertionNode, breakPoint = null, link = linkFromSignatureAssertionNode(signatureAssertionNode, context), terms = termsFromSignatureAssertionNode(signatureAssertionNode, context);
|
|
147
|
+
context = null;
|
|
148
|
+
signatureAssertion = new SignatureAssertion(context, string, node, breakPoint, link, terms);
|
|
149
|
+
}, context);
|
|
150
|
+
}
|
|
151
|
+
return signatureAssertion;
|
|
152
|
+
}
|
|
131
153
|
static fromStep(step, context) {
|
|
132
154
|
const statementNode = step.getStatementNode(), signatureAssertion = (0, _element.signatureAssertionFromStatementNode)(statementNode, context);
|
|
133
155
|
return signatureAssertion;
|
|
@@ -137,5 +159,16 @@ const _default = (0, _elements.define)(class SignatureAssertion extends _asserti
|
|
|
137
159
|
return signatureAssertion;
|
|
138
160
|
}
|
|
139
161
|
});
|
|
162
|
+
function linkFromSignatureAssertionNode(signatureAssertionNode, context) {
|
|
163
|
+
const linkNode = signatureAssertionNode.getLinkNode(), link = context.findLinkByLinkNode(linkNode);
|
|
164
|
+
return link;
|
|
165
|
+
}
|
|
166
|
+
function termsFromSignatureAssertionNode(signatureAssertionNode, context) {
|
|
167
|
+
const termNodes = signatureAssertionNode.getTermNodes(), terms = termNodes.map((termNode)=>{
|
|
168
|
+
const term = context.findTermByTermNode(termNode);
|
|
169
|
+
return term;
|
|
170
|
+
});
|
|
171
|
+
return terms;
|
|
172
|
+
}
|
|
140
173
|
|
|
141
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2Fzc2VydGlvbi9zaWduYXR1cmUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGJyZWFrUG9pbnRVdGlsaXRpZXMsIGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IEFzc2VydGlvbiBmcm9tIFwiLi4vYXNzZXJ0aW9uXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi8uLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgaXNvbGF0ZSwgcmVjb25jaWxlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9jb250ZXh0XCI7XG5pbXBvcnQgeyBzaWduYXR1cmVBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvZWxlbWVudFwiO1xuXG5jb25zdCB7IHVuYnJlYWthYmxlIH0gPSBicmVha1BvaW50VXRpbGl0aWVzLFxuICAgICAgeyBjdXQsIGFsbCwgZXZlcnkgfSA9IGNvbnRpbnVhdGlvblV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIFNpZ25hdHVyZUFzc2VydGlvbiBleHRlbmRzIEFzc2VydGlvbiB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgbGluaywgdGVybXMpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy5saW5rID0gbGluaztcbiAgICB0aGlzLnRlcm1zID0gdGVybXM7XG4gIH1cblxuICBnZXRUZXJtcygpIHtcbiAgICByZXR1cm4gdGhpcy50ZXJtcztcbiAgfVxuXG4gIGdldExpbmsoKSB7XG4gICAgcmV0dXJuIHRoaXMubGluaztcbiAgfVxuXG4gIGdldFNpZ25hdHVyZUFzc2VydGlvbk5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIHNpZ25hdHVyZUFzc2VydGlvbk5vZGUgPSBub2RlOyAgLy8vXG5cbiAgICByZXR1cm4gc2lnbmF0dXJlQXNzZXJ0aW9uTm9kZTtcbiAgfVxuXG4gIGFwcGx5ID0gdW5icmVha2FibGUoZnVuY3Rpb24gKHN0ZXAsIGZhY3RPclN1YnByb29mcywgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGZvcndhcmQgPSBjdXQoZm9yd2FyZCwgYmFjayk7IC8vL1xuXG4gICAgY29uc3Qgc2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgQXBwbHlpbmcgdGhlICcke3NpZ25hdHVyZUFzc2VydGlvblN0cmluZ30nIHNpZ25hdHVyZSBhc3NlcnRpb24uLi5gKTtcblxuICAgIHJldHVybiBpc29sYXRlKChzdGVwLCBmYWN0T3JTdWJwcm9vZnMsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spID0+IHtcbiAgICAgIHJldHVybiByZWNvbmNpbGUoKGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgYXhpb20gPSBjb250ZXh0LmZpbmRBeGlvbUJ5TGluayh0aGlzLmxpbmspLFxuICAgICAgICAgICAgICBzaWduYXR1cmVBc3NlcnRpb24gPSB0aGlzOyAgLy8vXG5cbiAgICAgICAgcmV0dXJuIGF4aW9tLnVuaWZ5U2lnbmF0dXJlQXNzZXJ0aW9uKHNpZ25hdHVyZUFzc2VydGlvbiwgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgICBheGlvbS5hcHBseShzdGVwLCBmYWN0T3JTdWJwcm9vZnMsIGNvbnRleHQsIChjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gZm9yd2FyZChiYWNrKTtcbiAgICAgICAgICB9LCBiYWNrKTtcbiAgICAgICAgfSwgYmFjayk7XG4gICAgICB9LCBjb250ZXh0KTtcbiAgICB9LCBzdGVwLCBmYWN0T3JTdWJwcm9vZnMsIGNvbnRleHQsIChzdGVwLCBmYWN0T3JTdWJwcm9vZnMsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQuZGVidWcoYGFwcGxpZWQgdGhlICcke3NpZ25hdHVyZUFzc2VydGlvblN0cmluZ30nIHNpZ25hdHVyZSBhc3NlcnRpb24uYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9KTtcblxuICB2YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGxldCBhc3NlcnRpb247XG5cbiAgICBjb25zdCBzaWduYXR1cmVBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtzaWduYXR1cmVBc3NlcnRpb25TdHJpbmd9JyBzaWduYXR1cmUgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgICBhc3NlcnRpb24gPSB0aGlzLmZpbmRBc3NlcnRpb24oY29udGV4dCk7XG5cbiAgICBpZiAoYXNzZXJ0aW9uICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBzaWduYXR1cmVBc3NlcnRpb24gPSBhc3NlcnRpb247IC8vL1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7c2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nfScgc2lnbmF0dXJlIGFzc2VydGlvbiBpcyBhbHJlYWR5IHByZXNlbnQuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHNpZ25hdHVyZUFzc2VydGlvbiwgY29udGV4dCwgYmFjayk7XG4gICAgfVxuXG4gICAgYXNzZXJ0aW9uID0gdGhpczsgLy8vXG5cbiAgICBjb25zdCB2YWxpZGF0ZUxpbmsgPSB0aGlzLnZhbGlkYXRlTGluay5iaW5kKHRoaXMpLFxuICAgICAgICAgIHZhbGlkYXRlVGVybXMgPSB0aGlzLnZhbGlkYXRlVGVybXMuYmluZCh0aGlzKTtcblxuICAgIHJldHVybiBhbGwoW1xuICAgICAgdmFsaWRhdGVMaW5rLFxuICAgICAgdmFsaWRhdGVUZXJtc1xuICAgIF0sIHN0YXRlLCBjb250ZXh0LCAoc3RhdGUsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQuYWRkQXNzZXJ0aW9uKGFzc2VydGlvbik7XG5cbiAgICAgIGNvbnN0IHNpZ25hdHVyZUFzc2VydGlvbiA9IGFzc2VydGlvbjsgLy8vXG5cbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7c2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nfScgc2lnbmF0dXJlIGFzc2VydGlvbi5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoc2lnbmF0dXJlQXNzZXJ0aW9uLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHZhbGlkYXRlVGVybSh0ZXJtLCB0ZXJtcywgc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCB0ZXJtU3RyaW5nID0gdGVybS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBzaWduYXR1cmVBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtzaWduYXR1cmVBc3NlcnRpb25TdHJpbmd9JyBzaWduYXR1cmUgYXNzZXJ0aW9uJ3MgJyR7dGVybVN0cmluZ30nIHRlcm0uLi5gKTtcblxuICAgIHJldHVybiB0ZXJtLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAodGVybSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgdGVybXMucHVzaCh0ZXJtKTtcblxuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtzaWduYXR1cmVBc3NlcnRpb25TdHJpbmd9JyBzaWduYXR1cmUgYXNzZXJ0aW9uJ3MgJyR7dGVybVN0cmluZ30nIHRlcm0uYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHRlcm1zLCBzdGF0ZSwgY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB2YWxpZGF0ZUxpbmsoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBzaWduYXR1cmVBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtzaWduYXR1cmVBc3NlcnRpb25TdHJpbmd9JyBzaWduYXR1cmUgYXNzZXJ0aW9uJ3MgbGluay4uLmApO1xuXG4gICAgcmV0dXJuIHRoaXMubGluay52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKGxpbmssIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIHRoaXMubGluayA9IGxpbms7XG5cbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7c2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nfScgc2lnbmF0dXJlIGFzc2VydGlvbidzIGxpbmsuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHN0YXRlLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHZhbGlkYXRlVGVybXMoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBzaWduYXR1cmVBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtzaWduYXR1cmVBc3NlcnRpb25TdHJpbmd9JyBzaWduYXR1cmUgYXNzZXJ0aW9uJ3MgdGVybXMuLi5gKTtcblxuICAgIGNvbnN0IHRlcm1zID0gW107XG5cbiAgICByZXR1cm4gZXZlcnkodGhpcy50ZXJtcywgKHRlcm0sIHRlcm1zLCBzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMudmFsaWRhdGVUZXJtKHRlcm0sIHRlcm1zLCBzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjayk7XG4gICAgfSwgdGVybXMsIHN0YXRlLCBjb250ZXh0LCAodGVybXMsIHN0YXRlLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICB0aGlzLnRlcm1zID0gdGVybXM7XG5cbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7c2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nfScgc2lnbmF0dXJlIGFzc2VydGlvbidzIHRlcm1zLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChzdGF0ZSwgY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB1bmlmeUNsYWltKGNsYWltLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgY2xhaW1TdHJpbmcgPSBjbGFpbS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBzaWduYXR1cmVBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke2NsYWltU3RyaW5nfScgY2xhaW0gd2l0aCB0aGUgJyR7c2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nfScgc2lnbmF0dXJlIGFzc2VydGlvbi4uLmApO1xuXG4gICAgcmV0dXJuIHJlY29uY2lsZSgoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3QgYXhpb20gPSBjb250ZXh0LmZpbmRBeGlvbUJ5TGluayh0aGlzLmxpbmspO1xuXG4gICAgICByZXR1cm4gYXhpb20udW5pZnlUZXJtcyh0aGlzLnRlcm1zLCBjb250ZXh0LCAodGVybXNVbmlmeSkgPT4ge1xuICAgICAgICBpZiAoIXRlcm1zVW5pZnkpIHtcbiAgICAgICAgICBjb25zdCBjbGFpbVVuaWZpZXMgPSBmYWxzZTtcblxuICAgICAgICAgIHJldHVybiBjb250aW51YXRpb24oY2xhaW1VbmlmaWVzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBheGlvbS51bmlmeUNsYWltKGNsYWltLCBjb250ZXh0LCAoY2xhaW1VbmlmaWVzKSA9PiB7XG4gICAgICAgICAgaWYgKGNsYWltVW5pZmllcykge1xuICAgICAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7Y2xhaW1TdHJpbmd9JyBjbGFpbSB3aXRoIHRoZSAnJHtzaWduYXR1cmVBc3NlcnRpb25TdHJpbmd9JyBzaWduYXR1cmUgYXNzZXJ0aW9uLmApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChjbGFpbVVuaWZpZXMpIHtcbiAgICAgICAgICAgIGNvbnRleHQuY29tbWl0KCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihjbGFpbVVuaWZpZXMpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0sIGNvbnRleHQpO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIlNpZ25hdHVyZUFzc2VydGlvblwiO1xuXG4gIHN0YXRpYyBmcm9tU3RlcChzdGVwLCBjb250ZXh0KSB7XG4gICAgY29uc3Qgc3RhdGVtZW50Tm9kZSA9IHN0ZXAuZ2V0U3RhdGVtZW50Tm9kZSgpLFxuICAgICAgICAgIHNpZ25hdHVyZUFzc2VydGlvbiA9IHNpZ25hdHVyZUFzc2VydGlvbkZyb21TdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUsIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHNpZ25hdHVyZUFzc2VydGlvbjtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCkge1xuICAgIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnQuZ2V0Tm9kZSgpLFxuICAgICAgICAgIHNpZ25hdHVyZUFzc2VydGlvbiA9IHNpZ25hdHVyZUFzc2VydGlvbkZyb21TdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUsIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHNpZ25hdHVyZUFzc2VydGlvbjtcbiAgfVxufSk7XG4iXSwibmFtZXMiOlsidW5icmVha2FibGUiLCJicmVha1BvaW50VXRpbGl0aWVzIiwiY3V0IiwiYWxsIiwiZXZlcnkiLCJjb250aW51YXRpb25VdGlsaXRpZXMiLCJkZWZpbmUiLCJTaWduYXR1cmVBc3NlcnRpb24iLCJBc3NlcnRpb24iLCJjb250ZXh0Iiwic3RyaW5nIiwibm9kZSIsImJyZWFrUG9pbnQiLCJsaW5rIiwidGVybXMiLCJnZXRUZXJtcyIsImdldExpbmsiLCJnZXRTaWduYXR1cmVBc3NlcnRpb25Ob2RlIiwiZ2V0Tm9kZSIsInNpZ25hdHVyZUFzc2VydGlvbk5vZGUiLCJhcHBseSIsInN0ZXAiLCJmYWN0T3JTdWJwcm9vZnMiLCJmb3J3YXJkIiwiYmFjayIsInNpZ25hdHVyZUFzc2VydGlvblN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwiaXNvbGF0ZSIsInJlY29uY2lsZSIsImF4aW9tIiwiZmluZEF4aW9tQnlMaW5rIiwic2lnbmF0dXJlQXNzZXJ0aW9uIiwidW5pZnlTaWduYXR1cmVBc3NlcnRpb24iLCJkZWJ1ZyIsInZhbGlkYXRlIiwic3RhdGUiLCJhc3NlcnRpb24iLCJmaW5kQXNzZXJ0aW9uIiwidmFsaWRhdGVMaW5rIiwiYmluZCIsInZhbGlkYXRlVGVybXMiLCJhZGRBc3NlcnRpb24iLCJ2YWxpZGF0ZVRlcm0iLCJ0ZXJtIiwidGVybVN0cmluZyIsInB1c2giLCJ1bmlmeUNsYWltIiwiY2xhaW0iLCJjbGFpbVN0cmluZyIsInVuaWZ5VGVybXMiLCJ0ZXJtc1VuaWZ5IiwiY2xhaW1VbmlmaWVzIiwiY29udGludWF0aW9uIiwiY29tbWl0IiwibmFtZSIsImZyb21TdGVwIiwic3RhdGVtZW50Tm9kZSIsImdldFN0YXRlbWVudE5vZGUiLCJzaWduYXR1cmVBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZSIsImZyb21TdGF0ZW1lbnQiLCJzdGF0ZW1lbnQiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQWFBOzs7ZUFBQTs7O2dDQVgyRDtrRUFFckM7MEJBRUM7eUJBQ1k7eUJBQ2lCOzs7Ozs7QUFFcEQsTUFBTSxFQUFFQSxXQUFXLEVBQUUsR0FBR0MsbUNBQW1C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
|
|
174
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2Fzc2VydGlvbi9zaWduYXR1cmUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGJyZWFrUG9pbnRVdGlsaXRpZXMsIGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IEFzc2VydGlvbiBmcm9tIFwiLi4vYXNzZXJ0aW9uXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi8uLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgaW5zdGFudGlhdGVQcm9wZXJ0eUFzc2VydGlvbiB9IGZyb20gXCIuLi8uLi9wcm9jZXNzL2luc3RhbnRpYXRlXCI7XG5pbXBvcnQgeyBpc29sYXRlLCByZWNvbmNpbGUsIGluc3RhbnRpYXRlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9jb250ZXh0XCI7XG5pbXBvcnQgeyBzaWduYXR1cmVBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvZWxlbWVudFwiO1xuXG5jb25zdCB7IHVuYnJlYWthYmxlIH0gPSBicmVha1BvaW50VXRpbGl0aWVzLFxuICAgICAgeyBjdXQsIGFsbCwgZXZlcnkgfSA9IGNvbnRpbnVhdGlvblV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIFNpZ25hdHVyZUFzc2VydGlvbiBleHRlbmRzIEFzc2VydGlvbiB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgbGluaywgdGVybXMpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy5saW5rID0gbGluaztcbiAgICB0aGlzLnRlcm1zID0gdGVybXM7XG4gIH1cblxuICBnZXRUZXJtcygpIHtcbiAgICByZXR1cm4gdGhpcy50ZXJtcztcbiAgfVxuXG4gIGdldExpbmsoKSB7XG4gICAgcmV0dXJuIHRoaXMubGluaztcbiAgfVxuXG4gIGdldFNpZ25hdHVyZUFzc2VydGlvbk5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIHNpZ25hdHVyZUFzc2VydGlvbk5vZGUgPSBub2RlOyAgLy8vXG5cbiAgICByZXR1cm4gc2lnbmF0dXJlQXNzZXJ0aW9uTm9kZTtcbiAgfVxuXG4gIGFwcGx5ID0gdW5icmVha2FibGUoZnVuY3Rpb24gKHN0ZXAsIGZhY3RPclN1YnByb29mcywgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGZvcndhcmQgPSBjdXQoZm9yd2FyZCwgYmFjayk7IC8vL1xuXG4gICAgY29uc3Qgc2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgQXBwbHlpbmcgdGhlICcke3NpZ25hdHVyZUFzc2VydGlvblN0cmluZ30nIHNpZ25hdHVyZSBhc3NlcnRpb24uLi5gKTtcblxuICAgIHJldHVybiBpc29sYXRlKChzdGVwLCBmYWN0T3JTdWJwcm9vZnMsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spID0+IHtcbiAgICAgIHJldHVybiByZWNvbmNpbGUoKGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgYXhpb20gPSBjb250ZXh0LmZpbmRBeGlvbUJ5TGluayh0aGlzLmxpbmspLFxuICAgICAgICAgICAgICBzaWduYXR1cmVBc3NlcnRpb24gPSB0aGlzOyAgLy8vXG5cbiAgICAgICAgcmV0dXJuIGF4aW9tLnVuaWZ5U2lnbmF0dXJlQXNzZXJ0aW9uKHNpZ25hdHVyZUFzc2VydGlvbiwgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgICBheGlvbS5hcHBseShzdGVwLCBmYWN0T3JTdWJwcm9vZnMsIGNvbnRleHQsIChjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gZm9yd2FyZChiYWNrKTtcbiAgICAgICAgICB9LCBiYWNrKTtcbiAgICAgICAgfSwgYmFjayk7XG4gICAgICB9LCBjb250ZXh0KTtcbiAgICB9LCBzdGVwLCBmYWN0T3JTdWJwcm9vZnMsIGNvbnRleHQsIChzdGVwLCBmYWN0T3JTdWJwcm9vZnMsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQuZGVidWcoYGFwcGxpZWQgdGhlICcke3NpZ25hdHVyZUFzc2VydGlvblN0cmluZ30nIHNpZ25hdHVyZSBhc3NlcnRpb24uYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9KTtcblxuICB2YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGxldCBhc3NlcnRpb247XG5cbiAgICBjb25zdCBzaWduYXR1cmVBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtzaWduYXR1cmVBc3NlcnRpb25TdHJpbmd9JyBzaWduYXR1cmUgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgICBhc3NlcnRpb24gPSB0aGlzLmZpbmRBc3NlcnRpb24oY29udGV4dCk7XG5cbiAgICBpZiAoYXNzZXJ0aW9uICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBzaWduYXR1cmVBc3NlcnRpb24gPSBhc3NlcnRpb247IC8vL1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7c2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nfScgc2lnbmF0dXJlIGFzc2VydGlvbiBpcyBhbHJlYWR5IHByZXNlbnQuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHNpZ25hdHVyZUFzc2VydGlvbiwgY29udGV4dCwgYmFjayk7XG4gICAgfVxuXG4gICAgYXNzZXJ0aW9uID0gdGhpczsgLy8vXG5cbiAgICBjb25zdCB2YWxpZGF0ZUxpbmsgPSB0aGlzLnZhbGlkYXRlTGluay5iaW5kKHRoaXMpLFxuICAgICAgICAgIHZhbGlkYXRlVGVybXMgPSB0aGlzLnZhbGlkYXRlVGVybXMuYmluZCh0aGlzKTtcblxuICAgIHJldHVybiBhbGwoW1xuICAgICAgdmFsaWRhdGVMaW5rLFxuICAgICAgdmFsaWRhdGVUZXJtc1xuICAgIF0sIHN0YXRlLCBjb250ZXh0LCAoc3RhdGUsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQuYWRkQXNzZXJ0aW9uKGFzc2VydGlvbik7XG5cbiAgICAgIGNvbnN0IHNpZ25hdHVyZUFzc2VydGlvbiA9IGFzc2VydGlvbjsgLy8vXG5cbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7c2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nfScgc2lnbmF0dXJlIGFzc2VydGlvbi5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoc2lnbmF0dXJlQXNzZXJ0aW9uLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHZhbGlkYXRlVGVybSh0ZXJtLCB0ZXJtcywgc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCB0ZXJtU3RyaW5nID0gdGVybS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBzaWduYXR1cmVBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtzaWduYXR1cmVBc3NlcnRpb25TdHJpbmd9JyBzaWduYXR1cmUgYXNzZXJ0aW9uJ3MgJyR7dGVybVN0cmluZ30nIHRlcm0uLi5gKTtcblxuICAgIHJldHVybiB0ZXJtLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAodGVybSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgdGVybXMucHVzaCh0ZXJtKTtcblxuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtzaWduYXR1cmVBc3NlcnRpb25TdHJpbmd9JyBzaWduYXR1cmUgYXNzZXJ0aW9uJ3MgJyR7dGVybVN0cmluZ30nIHRlcm0uYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHRlcm1zLCBzdGF0ZSwgY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB2YWxpZGF0ZUxpbmsoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBzaWduYXR1cmVBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtzaWduYXR1cmVBc3NlcnRpb25TdHJpbmd9JyBzaWduYXR1cmUgYXNzZXJ0aW9uJ3MgbGluay4uLmApO1xuXG4gICAgcmV0dXJuIHRoaXMubGluay52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKGxpbmssIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIHRoaXMubGluayA9IGxpbms7XG5cbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7c2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nfScgc2lnbmF0dXJlIGFzc2VydGlvbidzIGxpbmsuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHN0YXRlLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHZhbGlkYXRlVGVybXMoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBzaWduYXR1cmVBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtzaWduYXR1cmVBc3NlcnRpb25TdHJpbmd9JyBzaWduYXR1cmUgYXNzZXJ0aW9uJ3MgdGVybXMuLi5gKTtcblxuICAgIGNvbnN0IHRlcm1zID0gW107XG5cbiAgICByZXR1cm4gZXZlcnkodGhpcy50ZXJtcywgKHRlcm0sIHRlcm1zLCBzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMudmFsaWRhdGVUZXJtKHRlcm0sIHRlcm1zLCBzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjayk7XG4gICAgfSwgdGVybXMsIHN0YXRlLCBjb250ZXh0LCAodGVybXMsIHN0YXRlLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICB0aGlzLnRlcm1zID0gdGVybXM7XG5cbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7c2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nfScgc2lnbmF0dXJlIGFzc2VydGlvbidzIHRlcm1zLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChzdGF0ZSwgY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB1bmlmeUNsYWltKGNsYWltLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgY2xhaW1TdHJpbmcgPSBjbGFpbS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBzaWduYXR1cmVBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke2NsYWltU3RyaW5nfScgY2xhaW0gd2l0aCB0aGUgJyR7c2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nfScgc2lnbmF0dXJlIGFzc2VydGlvbi4uLmApO1xuXG4gICAgcmV0dXJuIHJlY29uY2lsZSgoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3QgYXhpb20gPSBjb250ZXh0LmZpbmRBeGlvbUJ5TGluayh0aGlzLmxpbmspO1xuXG4gICAgICByZXR1cm4gYXhpb20udW5pZnlUZXJtcyh0aGlzLnRlcm1zLCBjb250ZXh0LCAodGVybXNVbmlmeSkgPT4ge1xuICAgICAgICBpZiAoIXRlcm1zVW5pZnkpIHtcbiAgICAgICAgICBjb25zdCBjbGFpbVVuaWZpZXMgPSBmYWxzZTtcblxuICAgICAgICAgIHJldHVybiBjb250aW51YXRpb24oY2xhaW1VbmlmaWVzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBheGlvbS51bmlmeUNsYWltKGNsYWltLCBjb250ZXh0LCAoY2xhaW1VbmlmaWVzKSA9PiB7XG4gICAgICAgICAgaWYgKGNsYWltVW5pZmllcykge1xuICAgICAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7Y2xhaW1TdHJpbmd9JyBjbGFpbSB3aXRoIHRoZSAnJHtzaWduYXR1cmVBc3NlcnRpb25TdHJpbmd9JyBzaWduYXR1cmUgYXNzZXJ0aW9uLmApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChjbGFpbVVuaWZpZXMpIHtcbiAgICAgICAgICAgIGNvbnRleHQuY29tbWl0KCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihjbGFpbVVuaWZpZXMpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0sIGNvbnRleHQpO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIGxldCBqc29uO1xuXG4gICAgY29uc3QgbmFtZSA9IHRoaXMuZ2V0TmFtZSgpLFxuICAgICAgICAgIHN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7XG5cbiAgICBqc29uID0ge1xuICAgICAgbmFtZSxcbiAgICAgIHN0cmluZ1xuICAgIH07XG5cbiAgICByZXR1cm4ganNvbjtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJTaWduYXR1cmVBc3NlcnRpb25cIjtcblxuICBzdGF0aWMgZnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICAgIGxldCBzaWduYXR1cmVBc3NlcnRpb24gPSBudWxsO1xuXG4gICAgY29uc3QgeyBuYW1lIH0gPSBqc29uO1xuXG4gICAgaWYgKHRoaXMubmFtZSA9PT0gbmFtZSkge1xuICAgICAgaW5zdGFudGlhdGUoKGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgICAgIHNpZ25hdHVyZUFzc2VydGlvbk5vZGUgPSBpbnN0YW50aWF0ZVByb3BlcnR5QXNzZXJ0aW9uKHN0cmluZywgY29udGV4dCksXG4gICAgICAgICAgICAgIG5vZGUgPSBzaWduYXR1cmVBc3NlcnRpb25Ob2RlLCAgLy8vXG4gICAgICAgICAgICAgIGJyZWFrUG9pbnQgPSBudWxsLFxuICAgICAgICAgICAgICBsaW5rID0gbGlua0Zyb21TaWduYXR1cmVBc3NlcnRpb25Ob2RlKHNpZ25hdHVyZUFzc2VydGlvbk5vZGUsIGNvbnRleHQpLFxuICAgICAgICAgICAgICB0ZXJtcyA9IHRlcm1zRnJvbVNpZ25hdHVyZUFzc2VydGlvbk5vZGUoc2lnbmF0dXJlQXNzZXJ0aW9uTm9kZSwgY29udGV4dCk7XG5cbiAgICAgICAgY29udGV4dCA9IG51bGw7XG5cbiAgICAgICAgc2lnbmF0dXJlQXNzZXJ0aW9uID0gbmV3IFNpZ25hdHVyZUFzc2VydGlvbihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIGxpbmssIHRlcm1zKTtcbiAgICAgIH0sIGNvbnRleHQpO1xuICAgIH1cblxuICAgIHJldHVybiBzaWduYXR1cmVBc3NlcnRpb247XG4gIH1cblxuICBzdGF0aWMgZnJvbVN0ZXAoc3RlcCwgY29udGV4dCkge1xuICAgIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzdGVwLmdldFN0YXRlbWVudE5vZGUoKSxcbiAgICAgICAgICBzaWduYXR1cmVBc3NlcnRpb24gPSBzaWduYXR1cmVBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBzaWduYXR1cmVBc3NlcnRpb247XG4gIH1cblxuICBzdGF0aWMgZnJvbVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50LmdldE5vZGUoKSxcbiAgICAgICAgICBzaWduYXR1cmVBc3NlcnRpb24gPSBzaWduYXR1cmVBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBzaWduYXR1cmVBc3NlcnRpb247XG4gIH1cbn0pO1xuXG5mdW5jdGlvbiBsaW5rRnJvbVNpZ25hdHVyZUFzc2VydGlvbk5vZGUoc2lnbmF0dXJlQXNzZXJ0aW9uTm9kZSwgY29udGV4dCkge1xuICBjb25zdCBsaW5rTm9kZSA9IHNpZ25hdHVyZUFzc2VydGlvbk5vZGUuZ2V0TGlua05vZGUoKSxcbiAgICAgICAgbGluayA9IGNvbnRleHQuZmluZExpbmtCeUxpbmtOb2RlKGxpbmtOb2RlKTtcblxuICByZXR1cm4gbGluaztcbn1cblxuZnVuY3Rpb24gdGVybXNGcm9tU2lnbmF0dXJlQXNzZXJ0aW9uTm9kZShzaWduYXR1cmVBc3NlcnRpb25Ob2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHRlcm1Ob2RlcyA9IHNpZ25hdHVyZUFzc2VydGlvbk5vZGUuZ2V0VGVybU5vZGVzKCksXG4gICAgICAgIHRlcm1zID0gdGVybU5vZGVzLm1hcCgodGVybU5vZGUpID0+IHtcbiAgICAgICAgICBjb25zdCB0ZXJtID0gY29udGV4dC5maW5kVGVybUJ5VGVybU5vZGUodGVybU5vZGUpO1xuXG4gICAgICAgICAgcmV0dXJuIHRlcm07XG4gICAgICAgIH0pO1xuXG4gIHJldHVybiB0ZXJtcztcbn1cbiJdLCJuYW1lcyI6WyJ1bmJyZWFrYWJsZSIsImJyZWFrUG9pbnRVdGlsaXRpZXMiLCJjdXQiLCJhbGwiLCJldmVyeSIsImNvbnRpbnVhdGlvblV0aWxpdGllcyIsImRlZmluZSIsIlNpZ25hdHVyZUFzc2VydGlvbiIsIkFzc2VydGlvbiIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsImxpbmsiLCJ0ZXJtcyIsImdldFRlcm1zIiwiZ2V0TGluayIsImdldFNpZ25hdHVyZUFzc2VydGlvbk5vZGUiLCJnZXROb2RlIiwic2lnbmF0dXJlQXNzZXJ0aW9uTm9kZSIsImFwcGx5Iiwic3RlcCIsImZhY3RPclN1YnByb29mcyIsImZvcndhcmQiLCJiYWNrIiwic2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJpc29sYXRlIiwicmVjb25jaWxlIiwiYXhpb20iLCJmaW5kQXhpb21CeUxpbmsiLCJzaWduYXR1cmVBc3NlcnRpb24iLCJ1bmlmeVNpZ25hdHVyZUFzc2VydGlvbiIsImRlYnVnIiwidmFsaWRhdGUiLCJzdGF0ZSIsImFzc2VydGlvbiIsImZpbmRBc3NlcnRpb24iLCJ2YWxpZGF0ZUxpbmsiLCJiaW5kIiwidmFsaWRhdGVUZXJtcyIsImFkZEFzc2VydGlvbiIsInZhbGlkYXRlVGVybSIsInRlcm0iLCJ0ZXJtU3RyaW5nIiwicHVzaCIsInVuaWZ5Q2xhaW0iLCJjbGFpbSIsImNsYWltU3RyaW5nIiwidW5pZnlUZXJtcyIsInRlcm1zVW5pZnkiLCJjbGFpbVVuaWZpZXMiLCJjb250aW51YXRpb24iLCJjb21taXQiLCJ0b0pTT04iLCJqc29uIiwibmFtZSIsImdldE5hbWUiLCJmcm9tSlNPTiIsImluc3RhbnRpYXRlIiwiaW5zdGFudGlhdGVQcm9wZXJ0eUFzc2VydGlvbiIsImxpbmtGcm9tU2lnbmF0dXJlQXNzZXJ0aW9uTm9kZSIsInRlcm1zRnJvbVNpZ25hdHVyZUFzc2VydGlvbk5vZGUiLCJmcm9tU3RlcCIsInN0YXRlbWVudE5vZGUiLCJnZXRTdGF0ZW1lbnROb2RlIiwic2lnbmF0dXJlQXNzZXJ0aW9uRnJvbVN0YXRlbWVudE5vZGUiLCJmcm9tU3RhdGVtZW50Iiwic3RhdGVtZW50IiwibGlua05vZGUiLCJnZXRMaW5rTm9kZSIsImZpbmRMaW5rQnlMaW5rTm9kZSIsInRlcm1Ob2RlcyIsImdldFRlcm1Ob2RlcyIsIm1hcCIsInRlcm1Ob2RlIiwiZmluZFRlcm1CeVRlcm1Ob2RlIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFjQTs7O2VBQUE7OztnQ0FaMkQ7a0VBRXJDOzBCQUVDOzZCQUNzQjt5QkFDRzt5QkFDSTs7Ozs7O0FBRXBELE1BQU0sRUFBRUEsV0FBVyxFQUFFLEdBQUdD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
|