occam-verify-cli 1.0.617 → 1.0.631
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/context/ephemeral.js +152 -47
- package/lib/context/file/nominal.js +136 -140
- package/lib/context/liminal.js +16 -26
- package/lib/context/scoped.js +26 -55
- package/lib/context.js +103 -53
- package/lib/element/assertion/contained.js +3 -1
- package/lib/element/assertion/defined.js +3 -1
- package/lib/element/assertion/property.js +10 -58
- package/lib/element/assertion/satisfies.js +3 -1
- package/lib/element/assertion/subproof.js +3 -1
- package/lib/element/assertion/type.js +63 -109
- package/lib/element/assumption.js +40 -16
- package/lib/element/derivation.js +8 -10
- package/lib/element/equality.js +102 -62
- package/lib/element/equivalence.js +6 -6
- package/lib/element/equivalences.js +4 -4
- package/lib/element/frame.js +21 -21
- package/lib/element/hypothesis.js +5 -7
- package/lib/element/judgement.js +47 -25
- package/lib/element/metaType.js +2 -2
- package/lib/element/metavariable.js +12 -3
- package/lib/element/reference.js +9 -21
- package/lib/element/rule.js +13 -15
- package/lib/element/statement.js +23 -25
- package/lib/element/subDerivation.js +4 -6
- package/lib/element/substitution/frame.js +4 -4
- package/lib/element/substitution/reference.js +4 -4
- package/lib/element/substitution/statement.js +4 -4
- package/lib/element/substitution/term.js +7 -1
- package/lib/element/substitution.js +71 -43
- package/lib/element/term.js +15 -1
- package/lib/element/topLevelAssertion.js +9 -11
- package/lib/element/topLevelMetaAssertion.js +9 -11
- package/lib/element/variable.js +44 -3
- package/lib/process/assign.js +96 -26
- package/lib/process/unify.js +3 -4
- package/lib/process/validate.js +2 -2
- package/lib/process/verify.js +2 -2
- package/lib/utilities/element.js +74 -12
- package/lib/utilities/json.js +2 -2
- package/lib/utilities/string.js +9 -24
- package/lib/utilities/substitutions.js +14 -22
- package/package.json +1 -1
- package/src/context/ephemeral.js +170 -50
- package/src/context/file/nominal.js +136 -141
- package/src/context/liminal.js +22 -34
- package/src/context/scoped.js +33 -74
- package/src/context.js +97 -46
- package/src/element/assertion/contained.js +4 -0
- package/src/element/assertion/defined.js +4 -0
- package/src/element/assertion/property.js +15 -26
- package/src/element/assertion/satisfies.js +4 -0
- package/src/element/assertion/subproof.js +4 -0
- package/src/element/assertion/type.js +67 -77
- package/src/element/assumption.js +48 -16
- package/src/element/derivation.js +3 -5
- package/src/element/equality.js +109 -74
- package/src/element/equivalence.js +7 -7
- package/src/element/equivalences.js +7 -5
- package/src/element/frame.js +25 -25
- package/src/element/hypothesis.js +4 -6
- package/src/element/judgement.js +54 -24
- package/src/element/metaType.js +1 -1
- package/src/element/metavariable.js +16 -3
- package/src/element/reference.js +12 -26
- package/src/element/rule.js +8 -10
- package/src/element/statement.js +27 -30
- package/src/element/subDerivation.js +3 -5
- package/src/element/substitution/frame.js +1 -1
- package/src/element/substitution/reference.js +1 -1
- package/src/element/substitution/statement.js +1 -1
- package/src/element/substitution/term.js +2 -0
- package/src/element/substitution.js +60 -36
- package/src/element/term.js +20 -2
- package/src/element/topLevelAssertion.js +4 -6
- package/src/element/topLevelMetaAssertion.js +4 -6
- package/src/element/variable.js +2 -0
- package/src/process/assign.js +114 -37
- package/src/process/unify.js +2 -3
- package/src/process/validate.js +1 -1
- package/src/process/verify.js +1 -1
- package/src/utilities/element.js +83 -26
- package/src/utilities/json.js +1 -1
- package/src/utilities/string.js +7 -29
- package/src/utilities/substitutions.js +18 -29
|
@@ -185,6 +185,15 @@ var _default = (0, _elements.define)((_Assumption = /*#__PURE__*/ function(Eleme
|
|
|
185
185
|
return this.reference.getMetavariable();
|
|
186
186
|
}
|
|
187
187
|
},
|
|
188
|
+
{
|
|
189
|
+
key: "matchAssumptionNode",
|
|
190
|
+
value: function matchAssumptionNode(assumptionode) {
|
|
191
|
+
var assumptionodeA = assumptionode; ///
|
|
192
|
+
assumptionode = this.getAssumptionNode();
|
|
193
|
+
var assumptionodeB = assumptionode, assumptionodeAAMatchesAssumptionBNodeB = assumptionodeA.match(assumptionodeB), assumptionodeMatches = assumptionodeAAMatchesAssumptionBNodeB; ///
|
|
194
|
+
return assumptionodeMatches;
|
|
195
|
+
}
|
|
196
|
+
},
|
|
188
197
|
{
|
|
189
198
|
key: "compareSubstitution",
|
|
190
199
|
value: function compareSubstitution(substitution, context) {
|
|
@@ -201,29 +210,44 @@ var _default = (0, _elements.define)((_Assumption = /*#__PURE__*/ function(Eleme
|
|
|
201
210
|
return comparesToSubstituion;
|
|
202
211
|
}
|
|
203
212
|
},
|
|
213
|
+
{
|
|
214
|
+
key: "isValid",
|
|
215
|
+
value: function isValid(context) {
|
|
216
|
+
var assumptionNode = this.getAssumptionNode(), assumptionPresent = context.isAssumptionPresentByAssumptionNode(assumptionNode), valid = assumptionPresent; ///
|
|
217
|
+
return valid;
|
|
218
|
+
}
|
|
219
|
+
},
|
|
204
220
|
{
|
|
205
221
|
key: "validate",
|
|
206
222
|
value: function validate(assignments, stated, context) {
|
|
207
223
|
var validates = false;
|
|
208
224
|
var assumptionString = this.getString(); ///
|
|
209
225
|
context.trace("Validating the '".concat(assumptionString, "' assumption..."));
|
|
210
|
-
var
|
|
211
|
-
if (
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
226
|
+
var valid = this.isValid(context);
|
|
227
|
+
if (valid) {
|
|
228
|
+
validates = true;
|
|
229
|
+
context.debug("...the '".concat(assumptionString, "' assumption is already valid."));
|
|
230
|
+
} else {
|
|
231
|
+
var referenceValidates = this.validateReference(assignments, stated, context);
|
|
232
|
+
if (referenceValidates) {
|
|
233
|
+
var statementValidates = this.validateStatement(assignments, stated, context);
|
|
234
|
+
if (statementValidates) {
|
|
235
|
+
var validatesWhenStated = false, validatesWhenDerived = false;
|
|
236
|
+
if (stated) {
|
|
237
|
+
validatesWhenStated = this.validateWhenStated(assignments, context);
|
|
238
|
+
} else {
|
|
239
|
+
validatesWhenDerived = this.validateWhenDerived(context);
|
|
240
|
+
}
|
|
241
|
+
if (validatesWhenStated || validatesWhenDerived) {
|
|
242
|
+
validates = true;
|
|
243
|
+
}
|
|
222
244
|
}
|
|
223
245
|
}
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
246
|
+
if (validates) {
|
|
247
|
+
var assumption = this; ///
|
|
248
|
+
context.addAssumption(assumption);
|
|
249
|
+
context.debug("...validated the '".concat(assumptionString, "' assumption."));
|
|
250
|
+
}
|
|
227
251
|
}
|
|
228
252
|
return validates;
|
|
229
253
|
}
|
|
@@ -389,4 +413,4 @@ var _default = (0, _elements.define)((_Assumption = /*#__PURE__*/ function(Eleme
|
|
|
389
413
|
return Assumption;
|
|
390
414
|
}(_wrap_native_super(_occamlanguages.Element)), _define_property(_Assumption, "name", "Assumption"), _Assumption));
|
|
391
415
|
|
|
392
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2Fzc3VtcHRpb24uanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IEVsZW1lbnQgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgdW5pZnlTdGF0ZW1lbnRJbnRyaW5zaWNhbGx5IH0gZnJvbSBcIi4uL3Byb2Nlc3MvdW5pZnlcIjtcbmltcG9ydCB7IHJlZmVyZW5jZUZyb21KU09OLCByZWZlcmVuY2VUb1JlZmVyZW5jZUpTT04gfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2pzb25cIjtcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIEFzc3VtcHRpb24gZXh0ZW5kcyBFbGVtZW50IHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCByZWZlcmVuY2UsIHN0YXRlbWVudCkge1xuICAgIHN1cGVyKGNvbnRleHQsIHN0cmluZywgbm9kZSk7XG5cbiAgICB0aGlzLnN0YXRlbWVudCA9IHN0YXRlbWVudDtcbiAgICB0aGlzLnJlZmVyZW5jZSA9IHJlZmVyZW5jZTtcbiAgfVxuXG4gIGdldFJlZmVyZW5jZSgpIHtcbiAgICByZXR1cm4gdGhpcy5yZWZlcmVuY2U7XG4gIH1cblxuICBnZXRTdGF0ZW1lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGVtZW50O1xuICB9XG5cbiAgZ2V0QXNzdW1wdGlvbk5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIGFzc3VtcHRpb25Ob2RlID0gbm9kZTsgIC8vL1xuXG4gICAgcmV0dXJuIGFzc3VtcHRpb25Ob2RlO1xuICB9XG5cbiAgZ2V0TWV0YXZhcmlhYmxlKCkgeyByZXR1cm4gdGhpcy5yZWZlcmVuY2UuZ2V0TWV0YXZhcmlhYmxlKCk7IH1cblxuICBjb21wYXJlU3Vic3RpdHV0aW9uKHN1YnN0aXR1dGlvbiwgY29udGV4dCkge1xuICAgIGxldCBjb21wYXJlc1RvU3Vic3RpdHVpb24gPSBmYWxzZTtcblxuICAgIGNvbnN0IGFzc3VtcHRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpLCAgLy8vXG4gICAgICAgICAgc3Vic3RpdHV0aW9uU3RyaW5nID0gc3Vic3RpdHV0aW9uLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgQ29tcGFyaW5nIHRoZSAnJHthc3N1bXB0aW9uU3RyaW5nfScgYXNzdW1wdGlvbiB0byB0aGUgJyR7c3Vic3RpdHV0aW9uU3RyaW5nfScgc3Vic3RpdHV0aW9uLi4uYCk7XG5cbiAgICBjb25zdCBzdGF0ZW1lbnQgPSBzdWJzdGl0dXRpb24uZ2V0U3RhdGVtZW50KCksXG4gICAgICAgICAgbWV0YXZhcmlhYmxlTmFtZSA9IHN1YnN0aXR1dGlvbi5nZXRNZXRhdmFyaWFibGVOYW1lKCksXG4gICAgICAgICAgc3RhdGVtZW50RXF1YWxUb1N0YXRlbWVudCA9IHRoaXMuc3RhdGVtZW50LmlzRXF1YWxUbyhzdGF0ZW1lbnQpLFxuICAgICAgICAgIHJlZmVyZW5jZU1ldGF2YXJpYWJsZUNvbXBhcmVzVG9NZXRhdmFyaWFibGUgPSB0aGlzLnJlZmVyZW5jZS5jb21wYXJlTWV0YXZhcmlhYmxlTmFtZShtZXRhdmFyaWFibGVOYW1lKTtcblxuICAgIGlmIChzdGF0ZW1lbnRFcXVhbFRvU3RhdGVtZW50ICYmIHJlZmVyZW5jZU1ldGF2YXJpYWJsZUNvbXBhcmVzVG9NZXRhdmFyaWFibGUpIHtcbiAgICAgIGNvbXBhcmVzVG9TdWJzdGl0dWlvbiA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKGNvbXBhcmVzVG9TdWJzdGl0dWlvbikge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4uY29tcGFyZWQgdGhlICcke3N1YnN0aXR1dGlvblN0cmluZ30nIGFzc3VtcHRpb24gdG8gdGhlICcke2Fzc3VtcHRpb25TdHJpbmd9JyBzdWJzdGl0dXRpb24uYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbXBhcmVzVG9TdWJzdGl0dWlvbjtcbiAgfVxuXG4gIHZhbGlkYXRlKGFzc2lnbm1lbnRzLCBzdGF0ZWQsIGNvbnRleHQpIHtcbiAgICBsZXQgdmFsaWRhdGVzID0gZmFsc2U7XG5cbiAgICBjb25zdCBhc3N1bXB0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7YXNzdW1wdGlvblN0cmluZ30nIGFzc3VtcHRpb24uLi5gKTtcblxuICAgIGNvbnN0IHJlZmVyZW5jZVZhbGlkYXRlcyA9IHRoaXMudmFsaWRhdGVSZWZlcmVuY2UoYXNzaWdubWVudHMsIHN0YXRlZCwgY29udGV4dCk7XG5cbiAgICBpZiAocmVmZXJlbmNlVmFsaWRhdGVzKSB7XG4gICAgICBjb25zdCBzdGF0ZW1lbnRWYWxpZGF0ZXMgPSB0aGlzLnZhbGlkYXRlU3RhdGVtZW50KGFzc2lnbm1lbnRzLCBzdGF0ZWQsIGNvbnRleHQpO1xuXG4gICAgICBpZiAoc3RhdGVtZW50VmFsaWRhdGVzKSB7XG4gICAgICAgIGxldCB2YWxpZGF0ZXNXaGVuU3RhdGVkID0gZmFsc2UsXG4gICAgICAgICAgICB2YWxpZGF0ZXNXaGVuRGVyaXZlZCA9IGZhbHNlO1xuXG4gICAgICAgIGlmIChzdGF0ZWQpIHtcbiAgICAgICAgICB2YWxpZGF0ZXNXaGVuU3RhdGVkID0gdGhpcy52YWxpZGF0ZVdoZW5TdGF0ZWQoYXNzaWdubWVudHMsIGNvbnRleHQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZhbGlkYXRlc1doZW5EZXJpdmVkID0gdGhpcy52YWxpZGF0ZVdoZW5EZXJpdmVkKGNvbnRleHQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHZhbGlkYXRlc1doZW5TdGF0ZWQgfHwgdmFsaWRhdGVzV2hlbkRlcml2ZWQpIHtcbiAgICAgICAgICB2YWxpZGF0ZXMgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHZhbGlkYXRlcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHthc3N1bXB0aW9uU3RyaW5nfScgYXNzdW1wdGlvbi5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsaWRhdGVzO1xuICB9XG5cbiAgdmFsaWRhdGVSZWZlcmVuY2UoYXNzaWdubWVudHMsIHN0YXRlZCwgY29udGV4dCkge1xuICAgIGxldCByZWZlcmVuY2VWYWxpZGF0ZXM7XG5cbiAgICBjb25zdCBhc3N1bXB0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKSwgIC8vL1xuICAgICAgICAgIHJlZmVyZW5jZVN0cmluZyA9IHRoaXMucmVmZXJlbmNlLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7YXNzdW1wdGlvblN0cmluZ30nIGFzc3VtcHRpb24ncyAnJHtyZWZlcmVuY2VTdHJpbmd9JyByZWZlcmVuY2UuLi5gKTtcblxuICAgIHJlZmVyZW5jZVZhbGlkYXRlcyA9IHRoaXMucmVmZXJlbmNlLnZhbGlkYXRlKGNvbnRleHQpO1xuXG4gICAgaWYgKHJlZmVyZW5jZVZhbGlkYXRlcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHthc3N1bXB0aW9uU3RyaW5nfScgYXNzdW1wdGlvbidzICcke3JlZmVyZW5jZVN0cmluZ30nIHN0YXRlbWVudC5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVmZXJlbmNlVmFsaWRhdGVzO1xuICB9XG5cbiAgdmFsaWRhdGVTdGF0ZW1lbnQoYXNzaWdubWVudHMsIHN0YXRlZCwgY29udGV4dCkge1xuICAgIGxldCBzdGF0ZW1lbnRWYWxpZGF0ZXM7XG5cbiAgICBjb25zdCBhc3N1bXB0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKSwgIC8vL1xuICAgICAgICAgIHN0YXRlbWVudFN0cmluZyA9IHRoaXMuc3RhdGVtZW50LmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7YXNzdW1wdGlvblN0cmluZ30nIGFzc3VtcHRpb24ncyAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQuLi5gKTtcblxuICAgIHN0YXRlZCA9IHRydWU7ICAvLy9cblxuICAgIGFzc2lnbm1lbnRzID0gbnVsbDsgLy8vXG5cbiAgICBzdGF0ZW1lbnRWYWxpZGF0ZXMgPSB0aGlzLnN0YXRlbWVudC52YWxpZGF0ZShhc3NpZ25tZW50cywgc3RhdGVkLCBjb250ZXh0KTtcblxuICAgIGlmIChzdGF0ZW1lbnRWYWxpZGF0ZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7YXNzdW1wdGlvblN0cmluZ30nIGFzc3VtcHRpb24ncyAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0YXRlbWVudFZhbGlkYXRlcztcbiAgfVxuXG4gIHZhbGlkYXRlUmVmZXJlbmNlQXNNZXRhdmFyaWFibGUoYXNzaWdubWVudHMsIHN0YXRlZCwgY29udGV4dCkge1xuICAgIGxldCByZWZlcmVuY2VWYWxpZGF0ZXNBc01ldGF2YXJpYWJsZTtcblxuICAgIGNvbnN0IHJlZmVyZW5jZVN0cmluZyA9IHRoaXMucmVmZXJlbmNlLmdldFN0cmluZygpLFxuICAgICAgICAgIGFzc3VtcHRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2Fzc3VtcHRpb25TdHJpbmd9JyBhc3N1bXB0aW9uJ3MgJyR7cmVmZXJlbmNlU3RyaW5nfScgcmVmZXJlbmNlIGFzIHMgbWV0YXZhcmlhYmxlLi4uYCk7XG5cbiAgICByZWZlcmVuY2VWYWxpZGF0ZXNBc01ldGF2YXJpYWJsZSA9IHRoaXMucmVmZXJlbmNlLnZhbGlkYXRlQXNNZXRhdmFyaWFibGUoY29udGV4dCk7XG5cbiAgICBpZiAocmVmZXJlbmNlVmFsaWRhdGVzQXNNZXRhdmFyaWFibGUpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7YXNzdW1wdGlvblN0cmluZ30nIGFzc3VtcHRpb24ncyAnJHtyZWZlcmVuY2VTdHJpbmd9JyByZWZlcmVuY2UgYXMgYSBtZXRhdmFyaWFibGUuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlZmVyZW5jZVZhbGlkYXRlc0FzTWV0YXZhcmlhYmxlO1xuICB9XG5cbiAgdmFsaWRhdGVXaGVuU3RhdGVkKGFzc2lnbm1lbnRzLCBjb250ZXh0KSB7XG4gICAgbGV0IHZhbGlkYXRlc1doZW5TdGF0ZWQ7XG5cbiAgICBjb25zdCBhc3N1bXB0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7YXNzdW1wdGlvblN0cmluZ30nIHN0YXRlZCBhc3N1bXB0aW9uLi4uYCk7XG5cbiAgICBjb25zdCBtZXRhdmFyaWFibGVQcmVzZW50ID0gY29udGV4dC5pc01ldGF2YXJpYWJsZVByZXNlbnRCeVJlZmVyZW5jZSh0aGlzLnJlZmVyZW5jZSk7XG5cbiAgICBpZiAobWV0YXZhcmlhYmxlUHJlc2VudCkge1xuICAgICAgdmFsaWRhdGVzV2hlblN0YXRlZCA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHRvcExldmVsTWV0YUFzc2VydGlvbnMgPSBjb250ZXh0LmZpbmRUb3BMZXZlbE1ldGFBc3NlcnRpb25zQnlSZWZlcmVuY2UodGhpcy5yZWZlcmVuY2UpLFxuICAgICAgICAgICAgdG9wTGV2ZWxNZXRhQXNzZXJ0aW9uc1VuaWZ5ID0gdG9wTGV2ZWxNZXRhQXNzZXJ0aW9ucy5ldmVyeSgodG9wTGV2ZWxNZXRhQXNzZXJ0aW9uKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IHRvcExldmVsTWV0YUFzc2VydGlvblVuaWZpZXMgPSB0aGlzLnVuaWZ5VG9wTGV2ZWxNZXRhQXNzZXJ0aW9uKHRvcExldmVsTWV0YUFzc2VydGlvbiwgY29udGV4dCk7XG5cbiAgICAgICAgICAgICAgaWYgKHRvcExldmVsTWV0YUFzc2VydGlvblVuaWZpZXMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgIHZhbGlkYXRlc1doZW5TdGF0ZWQgPSB0b3BMZXZlbE1ldGFBc3NlcnRpb25zVW5pZnk7IC8vL1xuICAgIH1cblxuICAgIGlmICh2YWxpZGF0ZXNXaGVuU3RhdGVkKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2Fzc3VtcHRpb25TdHJpbmd9JyBzdGF0ZWQgYXNzdW1wdGlvbi5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsaWRhdGVzV2hlblN0YXRlZDtcbiAgfVxuXG4gIHZhbGlkYXRlV2hlbkRlcml2ZWQoY29udGV4dCkge1xuICAgIGxldCB2YWxpZGF0ZXNXaGVuRGVyaXZlZDtcblxuICAgIGNvbnN0IGFzc3VtcHRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHthc3N1bXB0aW9uU3RyaW5nfScgZGVyaXZlZCBhc3N1bXB0aW9uLi4uYCk7XG5cbiAgICBjb25zdCB0b3BMZXZlbE1ldGFBc3NlcnRpb25QcmVzZW50ID0gY29udGV4dC5pc1RvcExldmVsTWV0YUFzc2VydGlvblByZXNlbnRCeVJlZmVyZW5jZSh0aGlzLnJlZmVyZW5jZSk7XG5cbiAgICB2YWxpZGF0ZXNXaGVuRGVyaXZlZCA9IHRvcExldmVsTWV0YUFzc2VydGlvblByZXNlbnQ7IC8vL1xuXG4gICAgaWYgKHZhbGlkYXRlc1doZW5EZXJpdmVkKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2Fzc3VtcHRpb25TdHJpbmd9JyBkZXJpdmVkIGFzc3VtcHRpb24uYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbGlkYXRlc1doZW5EZXJpdmVkO1xuICB9XG5cbiAgdW5pZnlTdGF0ZW1lbnQoc3RhdGVtZW50LCBzdWJzdGl0dXRpb25zLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KSB7XG4gICAgbGV0IHN0YXRlbWVudFVuaWZpZXM7XG5cbiAgICBjb25zdCBjb250ZXh0ID0gZ2VuZXJhbENvbnRleHQsICAvLy9cbiAgICAgICAgICBzdGF0ZW1lbnRTdHJpbmcgPSBzdGF0ZW1lbnQuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgYXNzdW1wdGlvblN0YXRlbWVudFN0cmluZyA9IHRoaXMuc3RhdGVtZW50LmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCB3aXRoIHRoZSAnJHthc3N1bXB0aW9uU3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50Li4uYCk7XG5cbiAgICBjb25zdCBnZW5lcmFsU3RhdGVtZW50ID0gdGhpcy5zdGF0ZW1lbnQsXG4gICAgICAgICAgc3BlY2lmaWNTdGF0ZW1lbnQgPSBzdGF0ZW1lbnQsICAvLy9cbiAgICAgICAgICBzdGF0ZW1lbnRVVW5pZmllc0ludHJpbnNpY2FsbHkgPSB1bmlmeVN0YXRlbWVudEludHJpbnNpY2FsbHkoZ2VuZXJhbFN0YXRlbWVudCwgc3BlY2lmaWNTdGF0ZW1lbnQsIHN1YnN0aXR1dGlvbnMsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpO1xuXG4gICAgc3RhdGVtZW50VW5pZmllcyA9IHN0YXRlbWVudFVVbmlmaWVzSW50cmluc2ljYWxseTsgIC8vL1xuXG4gICAgaWYgKHN0YXRlbWVudFVuaWZpZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCB3aXRoIHRoZSAnJHthc3N1bXB0aW9uU3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50LmApO1xuICAgIH1cblxuICAgIHJldHVybiBzdGF0ZW1lbnRVbmlmaWVzO1xuICB9XG5cbiAgdW5pZnlMYWJlbChsYWJlbCwgc3Vic3RpdHV0aW9ucywgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCkge1xuICAgIGxldCBsYWJlbFVuaWZpZXNXaXRoUmVmZXJlbmNlO1xuXG4gICAgY29uc3QgY29udGV4dCA9IGdlbmVyYWxDb250ZXh0LCAvLy9cbiAgICAgICAgICBsYWJlbFN0cmluZyA9IGxhYmVsLmdldFN0cmluZygpLFxuICAgICAgICAgIGFzc3VtcHRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy87L1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke2xhYmVsU3RyaW5nfScgbGFiZWwgd2l0aCB0aGUgJyR7YXNzdW1wdGlvblN0cmluZ30nIGFzc3VtcHRpb24uLi5gKTtcblxuICAgIGNvbnN0IGxhYmVsVW5pZmllcyA9IHRoaXMucmVmZXJlbmNlLnVuaWZ5TGFiZWwobGFiZWwsIHN1YnN0aXR1dGlvbnMsIGNvbnRleHQpO1xuXG4gICAgbGFiZWxVbmlmaWVzV2l0aFJlZmVyZW5jZSA9IGxhYmVsVW5pZmllczsgLy8vXG5cbiAgICBpZiAobGFiZWxVbmlmaWVzV2l0aFJlZmVyZW5jZSkge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7bGFiZWxTdHJpbmd9JyBsYWJlbCB3aXRoIHRoZSAnJHthc3N1bXB0aW9uU3RyaW5nfScgYXNzdW1wdGlvbi5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbGFiZWxVbmlmaWVzV2l0aFJlZmVyZW5jZTtcbiAgfVxuXG4gIHVuaWZ5VG9wTGV2ZWxNZXRhQXNzZXJ0aW9uKHRvcExldmVsTWV0YUFzc2VydGlvbiwgY29udGV4dCkge1xuICAgIGxldCB0b3BMZXZlbE1ldGFBc3NlcnRpb25VbmlmaWVzID0gZmFsc2U7XG5cbiAgICBjb25zdCBhc3N1bXB0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKSwgIC8vL1xuICAgICAgICAgIHRvcExldmVsTWV0YUFzc2VydGlvblN0cmluZyA9IHRvcExldmVsTWV0YUFzc2VydGlvbi5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHt0b3BMZXZlbE1ldGFBc3NlcnRpb25TdHJpbmd9JyB0b3AgbGV2ZWwgbWV0YS1hc3NlcnRpb24gd2l0aCB0aGUgJyR7YXNzdW1wdGlvblN0cmluZ30nIGFzc3VtcHRpb24uLi5gKTtcblxuICAgIGNvbnN0IGdlbmVyYWxDb250ZXh0ID0gY29udGV4dDsgLy8vXG5cbiAgICBjb250ZXh0ID0gdG9wTGV2ZWxNZXRhQXNzZXJ0aW9uLmdldENvbnRleHQoKTsgIC8vL1xuXG4gICAgY29uc3Qgc3BlY2lmaWNDb250ZXh0ID0gY29udGV4dCwgIC8vL1xuICAgICAgICAgIGxhYmVsU3Vic3RpdHV0aW9ucyA9IFtdLFxuICAgICAgICAgIGxhYmVsID0gdG9wTGV2ZWxNZXRhQXNzZXJ0aW9uLmdldExhYmVsKCksXG4gICAgICAgICAgc3Vic3RpdHV0aW9ucyA9IGxhYmVsU3Vic3RpdHV0aW9ucywgLy8vXG4gICAgICAgICAgbGFiZWxVbmlmaWVzID0gdGhpcy51bmlmeUxhYmVsKGxhYmVsLCBzdWJzdGl0dXRpb25zLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KTtcblxuICAgIGlmIChsYWJlbFVuaWZpZXMpIHtcbiAgICAgIGNvbnN0IHN0YXRlbWVudFN1YnN0aXR1dGlvbnMgPSBbXSxcbiAgICAgICAgICAgIHN0YXRlbWVudCA9IHRvcExldmVsTWV0YUFzc2VydGlvbi5nZXRTdGF0ZW1lbnQoKSxcbiAgICAgICAgICAgIHN1YnN0aXR1dGlvbnMgPSBzdGF0ZW1lbnRTdWJzdGl0dXRpb25zLCAvLy9cbiAgICAgICAgICAgIHN0YXRlbWVudFVVbmlmaWVzID0gdGhpcy51bmlmeVN0YXRlbWVudChzdGF0ZW1lbnQsIHN1YnN0aXR1dGlvbnMsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpO1xuXG4gICAgICBpZiAoc3RhdGVtZW50VVVuaWZpZXMpIHtcbiAgICAgICAgY29uc3QgbGFiZWxTdWJzdGl0dXRpb25zQ29ycmVsYXRlU3RhdGVtZW50U3Vic3RpdHV0aW9ucyA9IGxhYmVsU3Vic3RpdHV0aW9ucy5jb3JyZWxhdGVTdWJzdGl0dXRpb25zKHN0YXRlbWVudFN1YnN0aXR1dGlvbnMpO1xuXG4gICAgICAgIGlmIChsYWJlbFN1YnN0aXR1dGlvbnNDb3JyZWxhdGVTdGF0ZW1lbnRTdWJzdGl0dXRpb25zKSB7XG4gICAgICAgICAgdG9wTGV2ZWxNZXRhQXNzZXJ0aW9uVW5pZmllcyA9IHRydWU7IC8vL1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRvcExldmVsTWV0YUFzc2VydGlvblVuaWZpZXMpIHtcbiAgICAgIGNvbnRleHQgPSBnZW5lcmFsQ29udGV4dDsgLy8vXG5cbiAgICAgIGNvbnRleHQudHJhY2UoYC4uLnVuaWZpZWQgdGhlICcke3RvcExldmVsTWV0YUFzc2VydGlvblN0cmluZ30nIHRvcCBsZXZlbCBtZXRhLWFzc2VydGlvbiB3aXRoIHRoZSAnJHthc3N1bXB0aW9uU3RyaW5nfScgYXNzdW1wdGlvbi4uLmApO1xuICAgIH1cblxuICAgIHJldHVybiB0b3BMZXZlbE1ldGFBc3NlcnRpb25VbmlmaWVzO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIGxldCBqc29uID0gbnVsbDtcblxuICAgIGNvbnN0IHNpbXBsZSA9IHRoaXMuaXNTaW1wbGUoKTtcblxuICAgIGlmIChzaW1wbGUpIHtcbiAgICAgIGNvbnN0IHJlZmVyZW5jZSA9IHRoaXMsIC8vL1xuICAgICAgICAgICAgcmVmZXJlbmNlSlNPTiA9IHJlZmVyZW5jZVRvUmVmZXJlbmNlSlNPTihyZWZlcmVuY2UpO1xuXG4gICAgICBqc29uID0gcmVmZXJlbmNlSlNPTjsgIC8vL1xuICAgIH1cblxuICAgIHJldHVybiBqc29uO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIkFzc3VtcHRpb25cIjtcblxuICBzdGF0aWMgZnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICAgIGxldCBhc3N1bXB0aW9uID0gbnVsbDtcblxuICAgIGlmIChqc29uICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBzdHJpbmcgPSBudWxsLFxuICAgICAgICAgICAgbm9kZSA9IG51bGwsXG4gICAgICAgICAgICBzdGF0ZW1lbnQgPSBudWxsLFxuICAgICAgICAgICAgcmVmZXJlbmNlID0gcmVmZXJlbmNlRnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICAgIGFzc3VtcHRpb24gPSBuZXcgQXNzdW1wdGlvbihzdHJpbmcsIG5vZGUsIHN0YXRlbWVudCwgcmVmZXJlbmNlKVxuICAgIH1cblxuICAgIHJldHVybiBhc3N1bXB0aW9uO1xuICB9XG59KTtcbiJdLCJuYW1lcyI6WyJkZWZpbmUiLCJBc3N1bXB0aW9uIiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJyZWZlcmVuY2UiLCJzdGF0ZW1lbnQiLCJnZXRSZWZlcmVuY2UiLCJnZXRTdGF0ZW1lbnQiLCJnZXRBc3N1bXB0aW9uTm9kZSIsImdldE5vZGUiLCJhc3N1bXB0aW9uTm9kZSIsImdldE1ldGF2YXJpYWJsZSIsImNvbXBhcmVTdWJzdGl0dXRpb24iLCJzdWJzdGl0dXRpb24iLCJjb21wYXJlc1RvU3Vic3RpdHVpb24iLCJhc3N1bXB0aW9uU3RyaW5nIiwiZ2V0U3RyaW5nIiwic3Vic3RpdHV0aW9uU3RyaW5nIiwidHJhY2UiLCJtZXRhdmFyaWFibGVOYW1lIiwiZ2V0TWV0YXZhcmlhYmxlTmFtZSIsInN0YXRlbWVudEVxdWFsVG9TdGF0ZW1lbnQiLCJpc0VxdWFsVG8iLCJyZWZlcmVuY2VNZXRhdmFyaWFibGVDb21wYXJlc1RvTWV0YXZhcmlhYmxlIiwiY29tcGFyZU1ldGF2YXJpYWJsZU5hbWUiLCJkZWJ1ZyIsInZhbGlkYXRlIiwiYXNzaWdubWVudHMiLCJzdGF0ZWQiLCJ2YWxpZGF0ZXMiLCJyZWZlcmVuY2VWYWxpZGF0ZXMiLCJ2YWxpZGF0ZVJlZmVyZW5jZSIsInN0YXRlbWVudFZhbGlkYXRlcyIsInZhbGlkYXRlU3RhdGVtZW50IiwidmFsaWRhdGVzV2hlblN0YXRlZCIsInZhbGlkYXRlc1doZW5EZXJpdmVkIiwidmFsaWRhdGVXaGVuU3RhdGVkIiwidmFsaWRhdGVXaGVuRGVyaXZlZCIsInJlZmVyZW5jZVN0cmluZyIsInN0YXRlbWVudFN0cmluZyIsInZhbGlkYXRlUmVmZXJlbmNlQXNNZXRhdmFyaWFibGUiLCJyZWZlcmVuY2VWYWxpZGF0ZXNBc01ldGF2YXJpYWJsZSIsInZhbGlkYXRlQXNNZXRhdmFyaWFibGUiLCJtZXRhdmFyaWFibGVQcmVzZW50IiwiaXNNZXRhdmFyaWFibGVQcmVzZW50QnlSZWZlcmVuY2UiLCJ0b3BMZXZlbE1ldGFBc3NlcnRpb25zIiwiZmluZFRvcExldmVsTWV0YUFzc2VydGlvbnNCeVJlZmVyZW5jZSIsInRvcExldmVsTWV0YUFzc2VydGlvbnNVbmlmeSIsImV2ZXJ5IiwidG9wTGV2ZWxNZXRhQXNzZXJ0aW9uIiwidG9wTGV2ZWxNZXRhQXNzZXJ0aW9uVW5pZmllcyIsInVuaWZ5VG9wTGV2ZWxNZXRhQXNzZXJ0aW9uIiwidG9wTGV2ZWxNZXRhQXNzZXJ0aW9uUHJlc2VudCIsImlzVG9wTGV2ZWxNZXRhQXNzZXJ0aW9uUHJlc2VudEJ5UmVmZXJlbmNlIiwidW5pZnlTdGF0ZW1lbnQiLCJzdWJzdGl0dXRpb25zIiwiZ2VuZXJhbENvbnRleHQiLCJzcGVjaWZpY0NvbnRleHQiLCJzdGF0ZW1lbnRVbmlmaWVzIiwiYXNzdW1wdGlvblN0YXRlbWVudFN0cmluZyIsImdlbmVyYWxTdGF0ZW1lbnQiLCJzcGVjaWZpY1N0YXRlbWVudCIsInN0YXRlbWVudFVVbmlmaWVzSW50cmluc2ljYWxseSIsInVuaWZ5U3RhdGVtZW50SW50cmluc2ljYWxseSIsInVuaWZ5TGFiZWwiLCJsYWJlbCIsImxhYmVsVW5pZmllc1dpdGhSZWZlcmVuY2UiLCJsYWJlbFN0cmluZyIsImxhYmVsVW5pZmllcyIsInRvcExldmVsTWV0YUFzc2VydGlvblN0cmluZyIsImdldENvbnRleHQiLCJsYWJlbFN1YnN0aXR1dGlvbnMiLCJnZXRMYWJlbCIsInN0YXRlbWVudFN1YnN0aXR1dGlvbnMiLCJzdGF0ZW1lbnRVVW5pZmllcyIsImxhYmVsU3Vic3RpdHV0aW9uc0NvcnJlbGF0ZVN0YXRlbWVudFN1YnN0aXR1dGlvbnMiLCJjb3JyZWxhdGVTdWJzdGl0dXRpb25zIiwidG9KU09OIiwianNvbiIsInNpbXBsZSIsImlzU2ltcGxlIiwicmVmZXJlbmNlSlNPTiIsInJlZmVyZW5jZVRvUmVmZXJlbmNlSlNPTiIsImZyb21KU09OIiwiYXNzdW1wdGlvbiIsInJlZmVyZW5jZUZyb21KU09OIiwiRWxlbWVudCIsIm5hbWUiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQVFBOzs7ZUFBQTs7OzhCQU53Qjt3QkFFRDtxQkFDcUI7b0JBQ2dCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUU1RCxXQUFlQSxJQUFBQSxnQkFBTSwrQkFBQzs7YUFBTUMsV0FDZEMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLElBQUksRUFBRUMsU0FBUyxFQUFFQyxTQUFTO2dDQUQ3Qkw7O2dCQUV4QixrQkFGd0JBO1lBRWxCQztZQUFTQztZQUFRQzs7UUFFdkIsTUFBS0UsU0FBUyxHQUFHQTtRQUNqQixNQUFLRCxTQUFTLEdBQUdBOzs7OztZQUduQkUsS0FBQUE7bUJBQUFBLFNBQUFBO2dCQUNFLE9BQU8sSUFBSSxDQUFDRixTQUFTO1lBQ3ZCOzs7WUFFQUcsS0FBQUE7bUJBQUFBLFNBQUFBO2dCQUNFLE9BQU8sSUFBSSxDQUFDRixTQUFTO1lBQ3ZCOzs7WUFFQUcsS0FBQUE7bUJBQUFBLFNBQUFBO2dCQUNFLElBQU1MLE9BQU8sSUFBSSxDQUFDTSxPQUFPLElBQ25CQyxpQkFBaUJQLE1BQU8sR0FBRztnQkFFakMsT0FBT087WUFDVDs7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
|
|
416
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2Fzc3VtcHRpb24uanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IEVsZW1lbnQgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgdW5pZnlTdGF0ZW1lbnRJbnRyaW5zaWNhbGx5IH0gZnJvbSBcIi4uL3Byb2Nlc3MvdW5pZnlcIjtcbmltcG9ydCB7IHJlZmVyZW5jZUZyb21KU09OLCByZWZlcmVuY2VUb1JlZmVyZW5jZUpTT04gfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2pzb25cIjtcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIEFzc3VtcHRpb24gZXh0ZW5kcyBFbGVtZW50IHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCByZWZlcmVuY2UsIHN0YXRlbWVudCkge1xuICAgIHN1cGVyKGNvbnRleHQsIHN0cmluZywgbm9kZSk7XG5cbiAgICB0aGlzLnN0YXRlbWVudCA9IHN0YXRlbWVudDtcbiAgICB0aGlzLnJlZmVyZW5jZSA9IHJlZmVyZW5jZTtcbiAgfVxuXG4gIGdldFJlZmVyZW5jZSgpIHtcbiAgICByZXR1cm4gdGhpcy5yZWZlcmVuY2U7XG4gIH1cblxuICBnZXRTdGF0ZW1lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGVtZW50O1xuICB9XG5cbiAgZ2V0QXNzdW1wdGlvbk5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIGFzc3VtcHRpb25Ob2RlID0gbm9kZTsgIC8vL1xuXG4gICAgcmV0dXJuIGFzc3VtcHRpb25Ob2RlO1xuICB9XG5cbiAgZ2V0TWV0YXZhcmlhYmxlKCkgeyByZXR1cm4gdGhpcy5yZWZlcmVuY2UuZ2V0TWV0YXZhcmlhYmxlKCk7IH1cblxuICBtYXRjaEFzc3VtcHRpb25Ob2RlKGFzc3VtcHRpb25vZGUpIHtcbiAgICBjb25zdCBhc3N1bXB0aW9ub2RlQSA9IGFzc3VtcHRpb25vZGU7IC8vL1xuXG4gICAgYXNzdW1wdGlvbm9kZSA9IHRoaXMuZ2V0QXNzdW1wdGlvbk5vZGUoKTtcblxuICAgIGNvbnN0IGFzc3VtcHRpb25vZGVCID0gYXNzdW1wdGlvbm9kZSwgLy8vXG4gICAgICAgICAgYXNzdW1wdGlvbm9kZUFBTWF0Y2hlc0Fzc3VtcHRpb25CTm9kZUIgPSBhc3N1bXB0aW9ub2RlQS5tYXRjaChhc3N1bXB0aW9ub2RlQiksXG4gICAgICAgICAgYXNzdW1wdGlvbm9kZU1hdGNoZXMgPSBhc3N1bXB0aW9ub2RlQUFNYXRjaGVzQXNzdW1wdGlvbkJOb2RlQjsgLy8vXG5cbiAgICByZXR1cm4gYXNzdW1wdGlvbm9kZU1hdGNoZXM7XG4gIH1cblxuICBjb21wYXJlU3Vic3RpdHV0aW9uKHN1YnN0aXR1dGlvbiwgY29udGV4dCkge1xuICAgIGxldCBjb21wYXJlc1RvU3Vic3RpdHVpb24gPSBmYWxzZTtcblxuICAgIGNvbnN0IGFzc3VtcHRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpLCAgLy8vXG4gICAgICAgICAgc3Vic3RpdHV0aW9uU3RyaW5nID0gc3Vic3RpdHV0aW9uLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgQ29tcGFyaW5nIHRoZSAnJHthc3N1bXB0aW9uU3RyaW5nfScgYXNzdW1wdGlvbiB0byB0aGUgJyR7c3Vic3RpdHV0aW9uU3RyaW5nfScgc3Vic3RpdHV0aW9uLi4uYCk7XG5cbiAgICBjb25zdCBzdGF0ZW1lbnQgPSBzdWJzdGl0dXRpb24uZ2V0U3RhdGVtZW50KCksXG4gICAgICAgICAgbWV0YXZhcmlhYmxlTmFtZSA9IHN1YnN0aXR1dGlvbi5nZXRNZXRhdmFyaWFibGVOYW1lKCksXG4gICAgICAgICAgc3RhdGVtZW50RXF1YWxUb1N0YXRlbWVudCA9IHRoaXMuc3RhdGVtZW50LmlzRXF1YWxUbyhzdGF0ZW1lbnQpLFxuICAgICAgICAgIHJlZmVyZW5jZU1ldGF2YXJpYWJsZUNvbXBhcmVzVG9NZXRhdmFyaWFibGUgPSB0aGlzLnJlZmVyZW5jZS5jb21wYXJlTWV0YXZhcmlhYmxlTmFtZShtZXRhdmFyaWFibGVOYW1lKTtcblxuICAgIGlmIChzdGF0ZW1lbnRFcXVhbFRvU3RhdGVtZW50ICYmIHJlZmVyZW5jZU1ldGF2YXJpYWJsZUNvbXBhcmVzVG9NZXRhdmFyaWFibGUpIHtcbiAgICAgIGNvbXBhcmVzVG9TdWJzdGl0dWlvbiA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKGNvbXBhcmVzVG9TdWJzdGl0dWlvbikge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4uY29tcGFyZWQgdGhlICcke3N1YnN0aXR1dGlvblN0cmluZ30nIGFzc3VtcHRpb24gdG8gdGhlICcke2Fzc3VtcHRpb25TdHJpbmd9JyBzdWJzdGl0dXRpb24uYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbXBhcmVzVG9TdWJzdGl0dWlvbjtcbiAgfVxuXG4gIGlzVmFsaWQoY29udGV4dCkge1xuICAgIGNvbnN0IGFzc3VtcHRpb25Ob2RlID0gdGhpcy5nZXRBc3N1bXB0aW9uTm9kZSgpLFxuICAgICAgICAgIGFzc3VtcHRpb25QcmVzZW50ID0gY29udGV4dC5pc0Fzc3VtcHRpb25QcmVzZW50QnlBc3N1bXB0aW9uTm9kZShhc3N1bXB0aW9uTm9kZSksXG4gICAgICAgICAgdmFsaWQgPSBhc3N1bXB0aW9uUHJlc2VudDsgIC8vL1xuXG4gICAgcmV0dXJuIHZhbGlkO1xuICB9XG5cbiAgdmFsaWRhdGUoYXNzaWdubWVudHMsIHN0YXRlZCwgY29udGV4dCkge1xuICAgIGxldCB2YWxpZGF0ZXMgPSBmYWxzZTtcblxuICAgIGNvbnN0IGFzc3VtcHRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHthc3N1bXB0aW9uU3RyaW5nfScgYXNzdW1wdGlvbi4uLmApO1xuXG4gICAgY29uc3QgdmFsaWQgPSB0aGlzLmlzVmFsaWQoY29udGV4dCk7XG5cbiAgICBpZiAodmFsaWQpIHtcbiAgICAgIHZhbGlkYXRlcyA9IHRydWU7XG5cbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnRoZSAnJHthc3N1bXB0aW9uU3RyaW5nfScgYXNzdW1wdGlvbiBpcyBhbHJlYWR5IHZhbGlkLmApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCByZWZlcmVuY2VWYWxpZGF0ZXMgPSB0aGlzLnZhbGlkYXRlUmVmZXJlbmNlKGFzc2lnbm1lbnRzLCBzdGF0ZWQsIGNvbnRleHQpO1xuXG4gICAgICBpZiAocmVmZXJlbmNlVmFsaWRhdGVzKSB7XG4gICAgICAgIGNvbnN0IHN0YXRlbWVudFZhbGlkYXRlcyA9IHRoaXMudmFsaWRhdGVTdGF0ZW1lbnQoYXNzaWdubWVudHMsIHN0YXRlZCwgY29udGV4dCk7XG5cbiAgICAgICAgaWYgKHN0YXRlbWVudFZhbGlkYXRlcykge1xuICAgICAgICAgIGxldCB2YWxpZGF0ZXNXaGVuU3RhdGVkID0gZmFsc2UsXG4gICAgICAgICAgICAgIHZhbGlkYXRlc1doZW5EZXJpdmVkID0gZmFsc2U7XG5cbiAgICAgICAgICBpZiAoc3RhdGVkKSB7XG4gICAgICAgICAgICB2YWxpZGF0ZXNXaGVuU3RhdGVkID0gdGhpcy52YWxpZGF0ZVdoZW5TdGF0ZWQoYXNzaWdubWVudHMsIGNvbnRleHQpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2YWxpZGF0ZXNXaGVuRGVyaXZlZCA9IHRoaXMudmFsaWRhdGVXaGVuRGVyaXZlZChjb250ZXh0KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAodmFsaWRhdGVzV2hlblN0YXRlZCB8fCB2YWxpZGF0ZXNXaGVuRGVyaXZlZCkge1xuICAgICAgICAgICAgdmFsaWRhdGVzID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHZhbGlkYXRlcykge1xuICAgICAgICBjb25zdCBhc3N1bXB0aW9uID0gdGhpczsgIC8vL1xuXG4gICAgICAgIGNvbnRleHQuYWRkQXNzdW1wdGlvbihhc3N1bXB0aW9uKTtcblxuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2Fzc3VtcHRpb25TdHJpbmd9JyBhc3N1bXB0aW9uLmApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB2YWxpZGF0ZXM7XG4gIH1cblxuICB2YWxpZGF0ZVJlZmVyZW5jZShhc3NpZ25tZW50cywgc3RhdGVkLCBjb250ZXh0KSB7XG4gICAgbGV0IHJlZmVyZW5jZVZhbGlkYXRlcztcblxuICAgIGNvbnN0IGFzc3VtcHRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpLCAgLy8vXG4gICAgICAgICAgcmVmZXJlbmNlU3RyaW5nID0gdGhpcy5yZWZlcmVuY2UuZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHthc3N1bXB0aW9uU3RyaW5nfScgYXNzdW1wdGlvbidzICcke3JlZmVyZW5jZVN0cmluZ30nIHJlZmVyZW5jZS4uLmApO1xuXG4gICAgcmVmZXJlbmNlVmFsaWRhdGVzID0gdGhpcy5yZWZlcmVuY2UudmFsaWRhdGUoY29udGV4dCk7XG5cbiAgICBpZiAocmVmZXJlbmNlVmFsaWRhdGVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2Fzc3VtcHRpb25TdHJpbmd9JyBhc3N1bXB0aW9uJ3MgJyR7cmVmZXJlbmNlU3RyaW5nfScgc3RhdGVtZW50LmApO1xuICAgIH1cblxuICAgIHJldHVybiByZWZlcmVuY2VWYWxpZGF0ZXM7XG4gIH1cblxuICB2YWxpZGF0ZVN0YXRlbWVudChhc3NpZ25tZW50cywgc3RhdGVkLCBjb250ZXh0KSB7XG4gICAgbGV0IHN0YXRlbWVudFZhbGlkYXRlcztcblxuICAgIGNvbnN0IGFzc3VtcHRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpLCAgLy8vXG4gICAgICAgICAgc3RhdGVtZW50U3RyaW5nID0gdGhpcy5zdGF0ZW1lbnQuZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHthc3N1bXB0aW9uU3RyaW5nfScgYXNzdW1wdGlvbidzICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudC4uLmApO1xuXG4gICAgc3RhdGVkID0gdHJ1ZTsgIC8vL1xuXG4gICAgYXNzaWdubWVudHMgPSBudWxsOyAvLy9cblxuICAgIHN0YXRlbWVudFZhbGlkYXRlcyA9IHRoaXMuc3RhdGVtZW50LnZhbGlkYXRlKGFzc2lnbm1lbnRzLCBzdGF0ZWQsIGNvbnRleHQpO1xuXG4gICAgaWYgKHN0YXRlbWVudFZhbGlkYXRlcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHthc3N1bXB0aW9uU3RyaW5nfScgYXNzdW1wdGlvbidzICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudC5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3RhdGVtZW50VmFsaWRhdGVzO1xuICB9XG5cbiAgdmFsaWRhdGVSZWZlcmVuY2VBc01ldGF2YXJpYWJsZShhc3NpZ25tZW50cywgc3RhdGVkLCBjb250ZXh0KSB7XG4gICAgbGV0IHJlZmVyZW5jZVZhbGlkYXRlc0FzTWV0YXZhcmlhYmxlO1xuXG4gICAgY29uc3QgcmVmZXJlbmNlU3RyaW5nID0gdGhpcy5yZWZlcmVuY2UuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgYXNzdW1wdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7YXNzdW1wdGlvblN0cmluZ30nIGFzc3VtcHRpb24ncyAnJHtyZWZlcmVuY2VTdHJpbmd9JyByZWZlcmVuY2UgYXMgcyBtZXRhdmFyaWFibGUuLi5gKTtcblxuICAgIHJlZmVyZW5jZVZhbGlkYXRlc0FzTWV0YXZhcmlhYmxlID0gdGhpcy5yZWZlcmVuY2UudmFsaWRhdGVBc01ldGF2YXJpYWJsZShjb250ZXh0KTtcblxuICAgIGlmIChyZWZlcmVuY2VWYWxpZGF0ZXNBc01ldGF2YXJpYWJsZSkge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHthc3N1bXB0aW9uU3RyaW5nfScgYXNzdW1wdGlvbidzICcke3JlZmVyZW5jZVN0cmluZ30nIHJlZmVyZW5jZSBhcyBhIG1ldGF2YXJpYWJsZS5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVmZXJlbmNlVmFsaWRhdGVzQXNNZXRhdmFyaWFibGU7XG4gIH1cblxuICB2YWxpZGF0ZVdoZW5TdGF0ZWQoYXNzaWdubWVudHMsIGNvbnRleHQpIHtcbiAgICBsZXQgdmFsaWRhdGVzV2hlblN0YXRlZDtcblxuICAgIGNvbnN0IGFzc3VtcHRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHthc3N1bXB0aW9uU3RyaW5nfScgc3RhdGVkIGFzc3VtcHRpb24uLi5gKTtcblxuICAgIGNvbnN0IG1ldGF2YXJpYWJsZVByZXNlbnQgPSBjb250ZXh0LmlzTWV0YXZhcmlhYmxlUHJlc2VudEJ5UmVmZXJlbmNlKHRoaXMucmVmZXJlbmNlKTtcblxuICAgIGlmIChtZXRhdmFyaWFibGVQcmVzZW50KSB7XG4gICAgICB2YWxpZGF0ZXNXaGVuU3RhdGVkID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgdG9wTGV2ZWxNZXRhQXNzZXJ0aW9ucyA9IGNvbnRleHQuZmluZFRvcExldmVsTWV0YUFzc2VydGlvbnNCeVJlZmVyZW5jZSh0aGlzLnJlZmVyZW5jZSksXG4gICAgICAgICAgICB0b3BMZXZlbE1ldGFBc3NlcnRpb25zVW5pZnkgPSB0b3BMZXZlbE1ldGFBc3NlcnRpb25zLmV2ZXJ5KCh0b3BMZXZlbE1ldGFBc3NlcnRpb24pID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgdG9wTGV2ZWxNZXRhQXNzZXJ0aW9uVW5pZmllcyA9IHRoaXMudW5pZnlUb3BMZXZlbE1ldGFBc3NlcnRpb24odG9wTGV2ZWxNZXRhQXNzZXJ0aW9uLCBjb250ZXh0KTtcblxuICAgICAgICAgICAgICBpZiAodG9wTGV2ZWxNZXRhQXNzZXJ0aW9uVW5pZmllcykge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgdmFsaWRhdGVzV2hlblN0YXRlZCA9IHRvcExldmVsTWV0YUFzc2VydGlvbnNVbmlmeTsgLy8vXG4gICAgfVxuXG4gICAgaWYgKHZhbGlkYXRlc1doZW5TdGF0ZWQpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7YXNzdW1wdGlvblN0cmluZ30nIHN0YXRlZCBhc3N1bXB0aW9uLmApO1xuICAgIH1cblxuICAgIHJldHVybiB2YWxpZGF0ZXNXaGVuU3RhdGVkO1xuICB9XG5cbiAgdmFsaWRhdGVXaGVuRGVyaXZlZChjb250ZXh0KSB7XG4gICAgbGV0IHZhbGlkYXRlc1doZW5EZXJpdmVkO1xuXG4gICAgY29uc3QgYXNzdW1wdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2Fzc3VtcHRpb25TdHJpbmd9JyBkZXJpdmVkIGFzc3VtcHRpb24uLi5gKTtcblxuICAgIGNvbnN0IHRvcExldmVsTWV0YUFzc2VydGlvblByZXNlbnQgPSBjb250ZXh0LmlzVG9wTGV2ZWxNZXRhQXNzZXJ0aW9uUHJlc2VudEJ5UmVmZXJlbmNlKHRoaXMucmVmZXJlbmNlKTtcblxuICAgIHZhbGlkYXRlc1doZW5EZXJpdmVkID0gdG9wTGV2ZWxNZXRhQXNzZXJ0aW9uUHJlc2VudDsgLy8vXG5cbiAgICBpZiAodmFsaWRhdGVzV2hlbkRlcml2ZWQpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7YXNzdW1wdGlvblN0cmluZ30nIGRlcml2ZWQgYXNzdW1wdGlvbi5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsaWRhdGVzV2hlbkRlcml2ZWQ7XG4gIH1cblxuICB1bmlmeVN0YXRlbWVudChzdGF0ZW1lbnQsIHN1YnN0aXR1dGlvbnMsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpIHtcbiAgICBsZXQgc3RhdGVtZW50VW5pZmllcztcblxuICAgIGNvbnN0IGNvbnRleHQgPSBnZW5lcmFsQ29udGV4dCwgIC8vL1xuICAgICAgICAgIHN0YXRlbWVudFN0cmluZyA9IHN0YXRlbWVudC5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBhc3N1bXB0aW9uU3RhdGVtZW50U3RyaW5nID0gdGhpcy5zdGF0ZW1lbnQuZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IHdpdGggdGhlICcke2Fzc3VtcHRpb25TdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQuLi5gKTtcblxuICAgIGNvbnN0IGdlbmVyYWxTdGF0ZW1lbnQgPSB0aGlzLnN0YXRlbWVudCxcbiAgICAgICAgICBzcGVjaWZpY1N0YXRlbWVudCA9IHN0YXRlbWVudCwgIC8vL1xuICAgICAgICAgIHN0YXRlbWVudFVVbmlmaWVzSW50cmluc2ljYWxseSA9IHVuaWZ5U3RhdGVtZW50SW50cmluc2ljYWxseShnZW5lcmFsU3RhdGVtZW50LCBzcGVjaWZpY1N0YXRlbWVudCwgc3Vic3RpdHV0aW9ucywgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCk7XG5cbiAgICBzdGF0ZW1lbnRVbmlmaWVzID0gc3RhdGVtZW50VVVuaWZpZXNJbnRyaW5zaWNhbGx5OyAgLy8vXG5cbiAgICBpZiAoc3RhdGVtZW50VW5pZmllcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IHdpdGggdGhlICcke2Fzc3VtcHRpb25TdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0YXRlbWVudFVuaWZpZXM7XG4gIH1cblxuICB1bmlmeUxhYmVsKGxhYmVsLCBzdWJzdGl0dXRpb25zLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KSB7XG4gICAgbGV0IGxhYmVsVW5pZmllc1dpdGhSZWZlcmVuY2U7XG5cbiAgICBjb25zdCBjb250ZXh0ID0gZ2VuZXJhbENvbnRleHQsIC8vL1xuICAgICAgICAgIGxhYmVsU3RyaW5nID0gbGFiZWwuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgYXNzdW1wdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLzsvXG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7bGFiZWxTdHJpbmd9JyBsYWJlbCB3aXRoIHRoZSAnJHthc3N1bXB0aW9uU3RyaW5nfScgYXNzdW1wdGlvbi4uLmApO1xuXG4gICAgY29uc3QgbGFiZWxVbmlmaWVzID0gdGhpcy5yZWZlcmVuY2UudW5pZnlMYWJlbChsYWJlbCwgc3Vic3RpdHV0aW9ucywgY29udGV4dCk7XG5cbiAgICBsYWJlbFVuaWZpZXNXaXRoUmVmZXJlbmNlID0gbGFiZWxVbmlmaWVzOyAvLy9cblxuICAgIGlmIChsYWJlbFVuaWZpZXNXaXRoUmVmZXJlbmNlKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtsYWJlbFN0cmluZ30nIGxhYmVsIHdpdGggdGhlICcke2Fzc3VtcHRpb25TdHJpbmd9JyBhc3N1bXB0aW9uLmApO1xuICAgIH1cblxuICAgIHJldHVybiBsYWJlbFVuaWZpZXNXaXRoUmVmZXJlbmNlO1xuICB9XG5cbiAgdW5pZnlUb3BMZXZlbE1ldGFBc3NlcnRpb24odG9wTGV2ZWxNZXRhQXNzZXJ0aW9uLCBjb250ZXh0KSB7XG4gICAgbGV0IHRvcExldmVsTWV0YUFzc2VydGlvblVuaWZpZXMgPSBmYWxzZTtcblxuICAgIGNvbnN0IGFzc3VtcHRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpLCAgLy8vXG4gICAgICAgICAgdG9wTGV2ZWxNZXRhQXNzZXJ0aW9uU3RyaW5nID0gdG9wTGV2ZWxNZXRhQXNzZXJ0aW9uLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3RvcExldmVsTWV0YUFzc2VydGlvblN0cmluZ30nIHRvcCBsZXZlbCBtZXRhLWFzc2VydGlvbiB3aXRoIHRoZSAnJHthc3N1bXB0aW9uU3RyaW5nfScgYXNzdW1wdGlvbi4uLmApO1xuXG4gICAgY29uc3QgZ2VuZXJhbENvbnRleHQgPSBjb250ZXh0OyAvLy9cblxuICAgIGNvbnRleHQgPSB0b3BMZXZlbE1ldGFBc3NlcnRpb24uZ2V0Q29udGV4dCgpOyAgLy8vXG5cbiAgICBjb25zdCBzcGVjaWZpY0NvbnRleHQgPSBjb250ZXh0LCAgLy8vXG4gICAgICAgICAgbGFiZWxTdWJzdGl0dXRpb25zID0gW10sXG4gICAgICAgICAgbGFiZWwgPSB0b3BMZXZlbE1ldGFBc3NlcnRpb24uZ2V0TGFiZWwoKSxcbiAgICAgICAgICBzdWJzdGl0dXRpb25zID0gbGFiZWxTdWJzdGl0dXRpb25zLCAvLy9cbiAgICAgICAgICBsYWJlbFVuaWZpZXMgPSB0aGlzLnVuaWZ5TGFiZWwobGFiZWwsIHN1YnN0aXR1dGlvbnMsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpO1xuXG4gICAgaWYgKGxhYmVsVW5pZmllcykge1xuICAgICAgY29uc3Qgc3RhdGVtZW50U3Vic3RpdHV0aW9ucyA9IFtdLFxuICAgICAgICAgICAgc3RhdGVtZW50ID0gdG9wTGV2ZWxNZXRhQXNzZXJ0aW9uLmdldFN0YXRlbWVudCgpLFxuICAgICAgICAgICAgc3Vic3RpdHV0aW9ucyA9IHN0YXRlbWVudFN1YnN0aXR1dGlvbnMsIC8vL1xuICAgICAgICAgICAgc3RhdGVtZW50VVVuaWZpZXMgPSB0aGlzLnVuaWZ5U3RhdGVtZW50KHN0YXRlbWVudCwgc3Vic3RpdHV0aW9ucywgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCk7XG5cbiAgICAgIGlmIChzdGF0ZW1lbnRVVW5pZmllcykge1xuICAgICAgICBjb25zdCBsYWJlbFN1YnN0aXR1dGlvbnNDb3JyZWxhdGVTdGF0ZW1lbnRTdWJzdGl0dXRpb25zID0gbGFiZWxTdWJzdGl0dXRpb25zLmNvcnJlbGF0ZVN1YnN0aXR1dGlvbnMoc3RhdGVtZW50U3Vic3RpdHV0aW9ucyk7XG5cbiAgICAgICAgaWYgKGxhYmVsU3Vic3RpdHV0aW9uc0NvcnJlbGF0ZVN0YXRlbWVudFN1YnN0aXR1dGlvbnMpIHtcbiAgICAgICAgICB0b3BMZXZlbE1ldGFBc3NlcnRpb25VbmlmaWVzID0gdHJ1ZTsgLy8vXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodG9wTGV2ZWxNZXRhQXNzZXJ0aW9uVW5pZmllcykge1xuICAgICAgY29udGV4dCA9IGdlbmVyYWxDb250ZXh0OyAvLy9cblxuICAgICAgY29udGV4dC50cmFjZShgLi4udW5pZmllZCB0aGUgJyR7dG9wTGV2ZWxNZXRhQXNzZXJ0aW9uU3RyaW5nfScgdG9wIGxldmVsIG1ldGEtYXNzZXJ0aW9uIHdpdGggdGhlICcke2Fzc3VtcHRpb25TdHJpbmd9JyBhc3N1bXB0aW9uLi4uYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRvcExldmVsTWV0YUFzc2VydGlvblVuaWZpZXM7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgbGV0IGpzb24gPSBudWxsO1xuXG4gICAgY29uc3Qgc2ltcGxlID0gdGhpcy5pc1NpbXBsZSgpO1xuXG4gICAgaWYgKHNpbXBsZSkge1xuICAgICAgY29uc3QgcmVmZXJlbmNlID0gdGhpcywgLy8vXG4gICAgICAgICAgICByZWZlcmVuY2VKU09OID0gcmVmZXJlbmNlVG9SZWZlcmVuY2VKU09OKHJlZmVyZW5jZSk7XG5cbiAgICAgIGpzb24gPSByZWZlcmVuY2VKU09OOyAgLy8vXG4gICAgfVxuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiQXNzdW1wdGlvblwiO1xuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gICAgbGV0IGFzc3VtcHRpb24gPSBudWxsO1xuXG4gICAgaWYgKGpzb24gIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHN0cmluZyA9IG51bGwsXG4gICAgICAgICAgICBub2RlID0gbnVsbCxcbiAgICAgICAgICAgIHN0YXRlbWVudCA9IG51bGwsXG4gICAgICAgICAgICByZWZlcmVuY2UgPSByZWZlcmVuY2VGcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgICAgYXNzdW1wdGlvbiA9IG5ldyBBc3N1bXB0aW9uKHN0cmluZywgbm9kZSwgc3RhdGVtZW50LCByZWZlcmVuY2UpXG4gICAgfVxuXG4gICAgcmV0dXJuIGFzc3VtcHRpb247XG4gIH1cbn0pO1xuIl0sIm5hbWVzIjpbImRlZmluZSIsIkFzc3VtcHRpb24iLCJjb250ZXh0Iiwic3RyaW5nIiwibm9kZSIsInJlZmVyZW5jZSIsInN0YXRlbWVudCIsImdldFJlZmVyZW5jZSIsImdldFN0YXRlbWVudCIsImdldEFzc3VtcHRpb25Ob2RlIiwiZ2V0Tm9kZSIsImFzc3VtcHRpb25Ob2RlIiwiZ2V0TWV0YXZhcmlhYmxlIiwibWF0Y2hBc3N1bXB0aW9uTm9kZSIsImFzc3VtcHRpb25vZGUiLCJhc3N1bXB0aW9ub2RlQSIsImFzc3VtcHRpb25vZGVCIiwiYXNzdW1wdGlvbm9kZUFBTWF0Y2hlc0Fzc3VtcHRpb25CTm9kZUIiLCJtYXRjaCIsImFzc3VtcHRpb25vZGVNYXRjaGVzIiwiY29tcGFyZVN1YnN0aXR1dGlvbiIsInN1YnN0aXR1dGlvbiIsImNvbXBhcmVzVG9TdWJzdGl0dWlvbiIsImFzc3VtcHRpb25TdHJpbmciLCJnZXRTdHJpbmciLCJzdWJzdGl0dXRpb25TdHJpbmciLCJ0cmFjZSIsIm1ldGF2YXJpYWJsZU5hbWUiLCJnZXRNZXRhdmFyaWFibGVOYW1lIiwic3RhdGVtZW50RXF1YWxUb1N0YXRlbWVudCIsImlzRXF1YWxUbyIsInJlZmVyZW5jZU1ldGF2YXJpYWJsZUNvbXBhcmVzVG9NZXRhdmFyaWFibGUiLCJjb21wYXJlTWV0YXZhcmlhYmxlTmFtZSIsImRlYnVnIiwiaXNWYWxpZCIsImFzc3VtcHRpb25QcmVzZW50IiwiaXNBc3N1bXB0aW9uUHJlc2VudEJ5QXNzdW1wdGlvbk5vZGUiLCJ2YWxpZCIsInZhbGlkYXRlIiwiYXNzaWdubWVudHMiLCJzdGF0ZWQiLCJ2YWxpZGF0ZXMiLCJyZWZlcmVuY2VWYWxpZGF0ZXMiLCJ2YWxpZGF0ZVJlZmVyZW5jZSIsInN0YXRlbWVudFZhbGlkYXRlcyIsInZhbGlkYXRlU3RhdGVtZW50IiwidmFsaWRhdGVzV2hlblN0YXRlZCIsInZhbGlkYXRlc1doZW5EZXJpdmVkIiwidmFsaWRhdGVXaGVuU3RhdGVkIiwidmFsaWRhdGVXaGVuRGVyaXZlZCIsImFzc3VtcHRpb24iLCJhZGRBc3N1bXB0aW9uIiwicmVmZXJlbmNlU3RyaW5nIiwic3RhdGVtZW50U3RyaW5nIiwidmFsaWRhdGVSZWZlcmVuY2VBc01ldGF2YXJpYWJsZSIsInJlZmVyZW5jZVZhbGlkYXRlc0FzTWV0YXZhcmlhYmxlIiwidmFsaWRhdGVBc01ldGF2YXJpYWJsZSIsIm1ldGF2YXJpYWJsZVByZXNlbnQiLCJpc01ldGF2YXJpYWJsZVByZXNlbnRCeVJlZmVyZW5jZSIsInRvcExldmVsTWV0YUFzc2VydGlvbnMiLCJmaW5kVG9wTGV2ZWxNZXRhQXNzZXJ0aW9uc0J5UmVmZXJlbmNlIiwidG9wTGV2ZWxNZXRhQXNzZXJ0aW9uc1VuaWZ5IiwiZXZlcnkiLCJ0b3BMZXZlbE1ldGFBc3NlcnRpb24iLCJ0b3BMZXZlbE1ldGFBc3NlcnRpb25VbmlmaWVzIiwidW5pZnlUb3BMZXZlbE1ldGFBc3NlcnRpb24iLCJ0b3BMZXZlbE1ldGFBc3NlcnRpb25QcmVzZW50IiwiaXNUb3BMZXZlbE1ldGFBc3NlcnRpb25QcmVzZW50QnlSZWZlcmVuY2UiLCJ1bmlmeVN0YXRlbWVudCIsInN1YnN0aXR1dGlvbnMiLCJnZW5lcmFsQ29udGV4dCIsInNwZWNpZmljQ29udGV4dCIsInN0YXRlbWVudFVuaWZpZXMiLCJhc3N1bXB0aW9uU3RhdGVtZW50U3RyaW5nIiwiZ2VuZXJhbFN0YXRlbWVudCIsInNwZWNpZmljU3RhdGVtZW50Iiwic3RhdGVtZW50VVVuaWZpZXNJbnRyaW5zaWNhbGx5IiwidW5pZnlTdGF0ZW1lbnRJbnRyaW5zaWNhbGx5IiwidW5pZnlMYWJlbCIsImxhYmVsIiwibGFiZWxVbmlmaWVzV2l0aFJlZmVyZW5jZSIsImxhYmVsU3RyaW5nIiwibGFiZWxVbmlmaWVzIiwidG9wTGV2ZWxNZXRhQXNzZXJ0aW9uU3RyaW5nIiwiZ2V0Q29udGV4dCIsImxhYmVsU3Vic3RpdHV0aW9ucyIsImdldExhYmVsIiwic3RhdGVtZW50U3Vic3RpdHV0aW9ucyIsInN0YXRlbWVudFVVbmlmaWVzIiwibGFiZWxTdWJzdGl0dXRpb25zQ29ycmVsYXRlU3RhdGVtZW50U3Vic3RpdHV0aW9ucyIsImNvcnJlbGF0ZVN1YnN0aXR1dGlvbnMiLCJ0b0pTT04iLCJqc29uIiwic2ltcGxlIiwiaXNTaW1wbGUiLCJyZWZlcmVuY2VKU09OIiwicmVmZXJlbmNlVG9SZWZlcmVuY2VKU09OIiwiZnJvbUpTT04iLCJyZWZlcmVuY2VGcm9tSlNPTiIsIkVsZW1lbnQiLCJuYW1lIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFRQTs7O2VBQUE7Ozs4QkFOd0I7d0JBRUQ7cUJBQ3FCO29CQUNnQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFFNUQsV0FBZUEsSUFBQUEsZ0JBQU0sK0JBQUM7O2FBQU1DLFdBQ2RDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxJQUFJLEVBQUVDLFNBQVMsRUFBRUMsU0FBUztnQ0FEN0JMOztnQkFFeEIsa0JBRndCQTtZQUVs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
|
|
@@ -317,7 +317,7 @@ var _default = (0, _elements.define)((_Derivation = /*#__PURE__*/ function(Eleme
|
|
|
317
317
|
4,
|
|
318
318
|
asyncEvery(this.subproofOrProofAssertions, function(subproofOrProofAssertion) {
|
|
319
319
|
return _async_to_generator(function() {
|
|
320
|
-
var assignments, subproofOrProofAssertionVerifies
|
|
320
|
+
var assignments, subproofOrProofAssertionVerifies;
|
|
321
321
|
return _ts_generator(this, function(_state) {
|
|
322
322
|
switch(_state.label){
|
|
323
323
|
case 0:
|
|
@@ -329,14 +329,12 @@ var _default = (0, _elements.define)((_Derivation = /*#__PURE__*/ function(Eleme
|
|
|
329
329
|
case 1:
|
|
330
330
|
subproofOrProofAssertionVerifies = _state.sent();
|
|
331
331
|
if (subproofOrProofAssertionVerifies) {
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
];
|
|
339
|
-
}
|
|
332
|
+
(0, _assign.default)(assignments, context);
|
|
333
|
+
context.addSubproofOrProofAssertion(subproofOrProofAssertion);
|
|
334
|
+
return [
|
|
335
|
+
2,
|
|
336
|
+
true
|
|
337
|
+
];
|
|
340
338
|
}
|
|
341
339
|
return [
|
|
342
340
|
2
|
|
@@ -361,4 +359,4 @@ var _default = (0, _elements.define)((_Derivation = /*#__PURE__*/ function(Eleme
|
|
|
361
359
|
return Derivation;
|
|
362
360
|
}(_wrap_native_super(_occamlanguages.Element)), _define_property(_Derivation, "name", "Derivation"), _Derivation));
|
|
363
361
|
|
|
364
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
362
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2Rlcml2YXRpb24uanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGFycmF5VXRpbGl0aWVzIH0gZnJvbSBcIm5lY2Vzc2FyeVwiO1xuaW1wb3J0IHsgRWxlbWVudCwgYXN5bmNocm9ub3VzVXRpbGl0aWVzIH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5pbXBvcnQgYXNzaWduQXNzaWdubWVudHMgZnJvbSBcIi4uL3Byb2Nlc3MvYXNzaWduXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi9lbGVtZW50c1wiO1xuXG5jb25zdCB7IGxhc3QgfSA9IGFycmF5VXRpbGl0aWVzLFxuICAgICAgeyBhc3luY0V2ZXJ5IH0gPSBhc3luY2hyb25vdXNVdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBEZXJpdmF0aW9uIGV4dGVuZHMgRWxlbWVudCB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgc3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucykge1xuICAgIHN1cGVyKGNvbnRleHQsIHN0cmluZywgbm9kZSk7XG5cbiAgICB0aGlzLnN1YnByb29mT3JQcm9vZkFzc2VydGlvbnMgPSBzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zO1xuICB9XG5cbiAgZ2V0U3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy5zdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zO1xuICB9XG5cbiAgZ2V0RGVyaXZhdGlvbk5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIGRlcml2YXRpb25Ob2RlID0gbm9kZTsgIC8vL1xuXG4gICAgcmV0dXJuIGRlcml2YXRpb25Ob2RlO1xuICB9XG5cbiAgZ2V0TGFzdFByb29mQXNzZXJ0aW9uKCkge1xuICAgIGNvbnN0IGxhc3RTdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb24gPSBsYXN0KHRoaXMuc3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucyksXG4gICAgICAgICAgbGFzdFByb29mQXNzZXJ0aW9uID0gbGFzdFN1YnByb29mT3JQcm9vZkFzc2VydGlvbjsgIC8vL1xuXG4gICAgcmV0dXJuIGxhc3RQcm9vZkFzc2VydGlvbjtcbiAgfVxuXG4gIGFzeW5jIHZlcmlmeShjb250ZXh0KSB7XG4gICAgbGV0IHZlcmlmaWVzO1xuXG4gICAgdmVyaWZpZXMgPSBhd2FpdCBhc3luY0V2ZXJ5KHRoaXMuc3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucywgYXN5bmMgKHN1YnByb29mT3JQcm9vZkFzc2VydGlvbikgPT4geyAvLy9cbiAgICAgIGNvbnN0IGFzc2lnbm1lbnRzID0gW10sXG4gICAgICAgICAgICBzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25WZXJpZmllcyA9IGF3YWl0IHN1YnByb29mT3JQcm9vZkFzc2VydGlvbi52ZXJpZnkoYXNzaWdubWVudHMsIGNvbnRleHQpO1xuXG4gICAgICBpZiAoc3VicHJvb2ZPclByb29mQXNzZXJ0aW9uVmVyaWZpZXMpIHtcbiAgICAgICAgYXNzaWduQXNzaWdubWVudHMoYXNzaWdubWVudHMsIGNvbnRleHQpO1xuXG4gICAgICAgIGNvbnRleHQuYWRkU3VicHJvb2ZPclByb29mQXNzZXJ0aW9uKHN1YnByb29mT3JQcm9vZkFzc2VydGlvbik7XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdmVyaWZpZXM7XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiRGVyaXZhdGlvblwiO1xufSk7XG5cbiJdLCJuYW1lcyI6WyJsYXN0IiwiYXJyYXlVdGlsaXRpZXMiLCJhc3luY0V2ZXJ5IiwiYXN5bmNocm9ub3VzVXRpbGl0aWVzIiwiZGVmaW5lIiwiRGVyaXZhdGlvbiIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwic3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucyIsImdldFN1YnByb29mT3JQcm9vZkFzc2VydGlvbnMiLCJnZXREZXJpdmF0aW9uTm9kZSIsImdldE5vZGUiLCJkZXJpdmF0aW9uTm9kZSIsImdldExhc3RQcm9vZkFzc2VydGlvbiIsImxhc3RTdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb24iLCJsYXN0UHJvb2ZBc3NlcnRpb24iLCJ2ZXJpZnkiLCJ2ZXJpZmllcyIsInN1YnByb29mT3JQcm9vZkFzc2VydGlvbiIsImFzc2lnbm1lbnRzIiwic3VicHJvb2ZPclByb29mQXNzZXJ0aW9uVmVyaWZpZXMiLCJhc3NpZ25Bc3NpZ25tZW50cyIsImFkZFN1YnByb29mT3JQcm9vZkFzc2VydGlvbiIsIkVsZW1lbnQiLCJuYW1lIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFZQTs7O2VBQUE7Ozt5QkFWK0I7OEJBQ2dCOzZEQUVqQjt3QkFFUDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUV2QixJQUFNLEFBQUVBLE9BQVNDLHlCQUFjLENBQXZCRCxNQUNGLEFBQUVFLGFBQWVDLHFDQUFxQixDQUFwQ0Q7SUFFUixXQUFlRSxJQUFBQSxnQkFBTSwrQkFBQzs7YUFBTUMsV0FDZEMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLElBQUksRUFBRUMseUJBQXlCO2dDQURsQ0o7O2dCQUV4QixrQkFGd0JBO1lBRWxCQztZQUFTQztZQUFRQzs7UUFFdkIsTUFBS0MseUJBQXlCLEdBQUdBOzs7OztZQUduQ0MsS0FBQUE7bUJBQUFBLFNBQUFBO2dCQUNFLE9BQU8sSUFBSSxDQUFDRCx5QkFBeUI7WUFDdkM7OztZQUVBRSxLQUFBQTttQkFBQUEsU0FBQUE7Z0JBQ0UsSUFBTUgsT0FBTyxJQUFJLENBQUNJLE9BQU8sSUFDbkJDLGlCQUFpQkwsTUFBTyxHQUFHO2dCQUVqQyxPQUFPSztZQUNUOzs7WUFFQUMsS0FBQUE7bUJBQUFBLFNBQUFBO2dCQUNFLElBQU1DLCtCQUErQmYsS0FBSyxJQUFJLENBQUNTLHlCQUF5QixHQUNsRU8scUJBQXFCRCw4QkFBK0IsR0FBRztnQkFFN0QsT0FBT0M7WUFDVDs7O1lBRU1DLEtBQUFBO21CQUFOLFNBQU1BLE9BQU9YLE9BQU87O3dCQUNkWTs7OztnQ0FFTzs7b0NBQU1oQixXQUFXLElBQUksQ0FBQ08seUJBQXlCLEVBQUUsU0FBT1U7O2dEQUMzREMsYUFDQUM7Ozs7d0RBREFEO3dEQUNtQzs7NERBQU1ELHlCQUF5QkYsTUFBTSxDQUFDRyxhQUFhZDs7O3dEQUF0RmUsbUNBQW1DO3dEQUV6QyxJQUFJQSxrQ0FBa0M7NERBQ3BDQyxJQUFBQSxlQUFpQixFQUFDRixhQUFhZDs0REFFL0JBLFFBQVFpQiwyQkFBMkIsQ0FBQ0o7NERBRXBDOztnRUFBTzs7d0RBQ1Q7Ozs7Ozt3Q0FDRjs7OztnQ0FYQUQsV0FBVztnQ0FhWDs7b0NBQU9BOzs7O2dCQUNUOzs7OztxQkExQzZDTSx1QkFBTyxJQTRDcEQsOEJBQU9DLFFBQU8ifQ==
|
package/lib/element/equality.js
CHANGED
|
@@ -179,6 +179,20 @@ var _default = (0, _elements.define)((_Equality = /*#__PURE__*/ function(Element
|
|
|
179
179
|
return equalityNde;
|
|
180
180
|
}
|
|
181
181
|
},
|
|
182
|
+
{
|
|
183
|
+
key: "getLeftTermNode",
|
|
184
|
+
value: function getLeftTermNode() {
|
|
185
|
+
var leftTermNode = this.leftTerm.getNode();
|
|
186
|
+
return leftTermNode;
|
|
187
|
+
}
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
key: "getRightTermNode",
|
|
191
|
+
value: function getRightTermNode() {
|
|
192
|
+
var rightTermNode = this.rightTerm.getNode();
|
|
193
|
+
return rightTermNode;
|
|
194
|
+
}
|
|
195
|
+
},
|
|
182
196
|
{
|
|
183
197
|
key: "getType",
|
|
184
198
|
value: function getType() {
|
|
@@ -203,6 +217,15 @@ var _default = (0, _elements.define)((_Equality = /*#__PURE__*/ function(Element
|
|
|
203
217
|
return terms;
|
|
204
218
|
}
|
|
205
219
|
},
|
|
220
|
+
{
|
|
221
|
+
key: "matchEqualityNode",
|
|
222
|
+
value: function matchEqualityNode(equalityNode) {
|
|
223
|
+
var equalityNodeA = equalityNode; ///
|
|
224
|
+
equalityNode = this.getEqualityNode();
|
|
225
|
+
var equalityNodeB = equalityNode, equalityNodeAAMatchesEqualityBNodeB = equalityNodeA.match(equalityNodeB), equalityNodeMatches = equalityNodeAAMatchesEqualityBNodeB; ///
|
|
226
|
+
return equalityNodeMatches;
|
|
227
|
+
}
|
|
228
|
+
},
|
|
206
229
|
{
|
|
207
230
|
key: "isReflexive",
|
|
208
231
|
value: function isReflexive() {
|
|
@@ -210,6 +233,13 @@ var _default = (0, _elements.define)((_Equality = /*#__PURE__*/ function(Element
|
|
|
210
233
|
return reflexive;
|
|
211
234
|
}
|
|
212
235
|
},
|
|
236
|
+
{
|
|
237
|
+
key: "isEqualTo",
|
|
238
|
+
value: function isEqualTo(equality) {
|
|
239
|
+
var equalityNode = equality.getNode(), equalityNodeMatches = this.matchEqualityNode(equalityNode), equalTo = equalityNodeMatches; ///
|
|
240
|
+
return equalTo;
|
|
241
|
+
}
|
|
242
|
+
},
|
|
213
243
|
{
|
|
214
244
|
key: "isEqual",
|
|
215
245
|
value: function isEqual(context) {
|
|
@@ -222,108 +252,118 @@ var _default = (0, _elements.define)((_Equality = /*#__PURE__*/ function(Element
|
|
|
222
252
|
}
|
|
223
253
|
},
|
|
224
254
|
{
|
|
225
|
-
key: "
|
|
226
|
-
value: function
|
|
227
|
-
var
|
|
255
|
+
key: "isValid",
|
|
256
|
+
value: function isValid(context) {
|
|
257
|
+
var equalityNode = this.getEqualityNode(), equalityPresent = context.isEqualityPresentByEqualityNode(equalityNode), valid = equalityPresent; ///
|
|
258
|
+
return valid;
|
|
259
|
+
}
|
|
260
|
+
},
|
|
261
|
+
{
|
|
262
|
+
key: "validate",
|
|
263
|
+
value: function validate(assignments, stated, context) {
|
|
264
|
+
var validates = false;
|
|
228
265
|
var equalityString = this.getString(); ///
|
|
229
|
-
context.trace("
|
|
230
|
-
var
|
|
231
|
-
if (
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
266
|
+
context.trace("Validating the '".concat(equalityString, "' equality..."));
|
|
267
|
+
var valid = this.isValid(context);
|
|
268
|
+
if (valid) {
|
|
269
|
+
validates = true;
|
|
270
|
+
context.debug("...the '".concat(equalityString, "' equality is already valid."));
|
|
271
|
+
} else {
|
|
272
|
+
var termsValidate = this.validateTerms(context);
|
|
273
|
+
if (termsValidate) {
|
|
274
|
+
var validatesWhenStated = false, validatesWhenDerived = false;
|
|
275
|
+
if (stated) {
|
|
276
|
+
validatesWhenStated = this.validateWhenStated(assignments, context);
|
|
277
|
+
} else {
|
|
278
|
+
validatesWhenDerived = this.validateWhenDerived(context);
|
|
279
|
+
}
|
|
280
|
+
if (validatesWhenStated || validatesWhenDerived) {
|
|
281
|
+
validates = true;
|
|
282
|
+
}
|
|
237
283
|
}
|
|
238
|
-
if (
|
|
239
|
-
|
|
284
|
+
if (validates) {
|
|
285
|
+
var equality = this; ///
|
|
286
|
+
context.addEquality(equality);
|
|
287
|
+
this.assign(assignments, stated, context);
|
|
288
|
+
context.debug("...validated the '".concat(equalityString, "' equality."));
|
|
240
289
|
}
|
|
241
290
|
}
|
|
242
|
-
|
|
243
|
-
this.assign(assignments, context);
|
|
244
|
-
}
|
|
245
|
-
if (verifies) {
|
|
246
|
-
context.debug("...verified the '".concat(equalityString, "' equality."));
|
|
247
|
-
}
|
|
248
|
-
return verifies;
|
|
291
|
+
return validates;
|
|
249
292
|
}
|
|
250
293
|
},
|
|
251
294
|
{
|
|
252
|
-
key: "
|
|
253
|
-
value: function
|
|
295
|
+
key: "validateTerms",
|
|
296
|
+
value: function validateTerms(context) {
|
|
254
297
|
var _this = this;
|
|
255
|
-
var
|
|
298
|
+
var termsValidate;
|
|
256
299
|
var equalityString = this.getString(); ///
|
|
257
|
-
context.trace("
|
|
258
|
-
var
|
|
259
|
-
var
|
|
260
|
-
var
|
|
261
|
-
var
|
|
300
|
+
context.trace("Validating the '".concat(equalityString, "' equality's terms..."));
|
|
301
|
+
var leftTermValidates = this.leftTerm.validate(context, function() {
|
|
302
|
+
var validatesForwards;
|
|
303
|
+
var rightTermValidates = _this.rightTerm.validate(context, function() {
|
|
304
|
+
var validatesForwards;
|
|
262
305
|
var leftTermType = _this.leftTerm.getType(), rightTermType = _this.rightTerm.getType(), leftTermTypeComparableToRightTermType = leftTermType.isComparableTo(rightTermType);
|
|
263
|
-
|
|
264
|
-
return
|
|
306
|
+
validatesForwards = leftTermTypeComparableToRightTermType; ///
|
|
307
|
+
return validatesForwards;
|
|
265
308
|
});
|
|
266
|
-
|
|
267
|
-
return
|
|
309
|
+
validatesForwards = rightTermValidates; ///
|
|
310
|
+
return validatesForwards;
|
|
268
311
|
});
|
|
269
|
-
|
|
270
|
-
if (
|
|
271
|
-
context.debug("...
|
|
312
|
+
termsValidate = leftTermValidates; ///
|
|
313
|
+
if (termsValidate) {
|
|
314
|
+
context.debug("...validated the '".concat(equalityString, "' equality's terms."));
|
|
272
315
|
}
|
|
273
|
-
return
|
|
316
|
+
return termsValidate;
|
|
274
317
|
}
|
|
275
318
|
},
|
|
276
319
|
{
|
|
277
|
-
key: "
|
|
278
|
-
value: function
|
|
279
|
-
var
|
|
320
|
+
key: "validateWhenStated",
|
|
321
|
+
value: function validateWhenStated(assignments, context) {
|
|
322
|
+
var validatesWhenStated;
|
|
280
323
|
var equalityString = this.getString(); ///
|
|
281
|
-
context.trace("
|
|
282
|
-
|
|
283
|
-
if (
|
|
284
|
-
context.debug("...
|
|
324
|
+
context.trace("Validating the '".concat(equalityString, "' stated equality..."));
|
|
325
|
+
validatesWhenStated = true;
|
|
326
|
+
if (validatesWhenStated) {
|
|
327
|
+
context.debug("...validated the '".concat(equalityString, "' stated equality."));
|
|
285
328
|
}
|
|
286
|
-
return
|
|
329
|
+
return validatesWhenStated;
|
|
287
330
|
}
|
|
288
331
|
},
|
|
289
332
|
{
|
|
290
|
-
key: "
|
|
291
|
-
value: function
|
|
292
|
-
var
|
|
333
|
+
key: "validateWhenDerived",
|
|
334
|
+
value: function validateWhenDerived(context) {
|
|
335
|
+
var validatesWhenDerived;
|
|
293
336
|
var equalityString = this.getString(); ///
|
|
294
|
-
context.trace("
|
|
295
|
-
|
|
296
|
-
if (
|
|
297
|
-
context.debug("...
|
|
337
|
+
context.trace("Validating the '".concat(equalityString, "' derived equality..."));
|
|
338
|
+
validatesWhenDerived = true; ///
|
|
339
|
+
if (validatesWhenDerived) {
|
|
340
|
+
context.debug("...validated the '".concat(equalityString, "' derived equality."));
|
|
298
341
|
}
|
|
299
|
-
return
|
|
342
|
+
return validatesWhenDerived;
|
|
300
343
|
}
|
|
301
344
|
},
|
|
302
345
|
{
|
|
303
346
|
key: "assign",
|
|
304
|
-
value: function assign(assignments, context) {
|
|
347
|
+
value: function assign(assignments, stated, context) {
|
|
305
348
|
if (assignments === null) {
|
|
306
349
|
return;
|
|
307
350
|
}
|
|
308
|
-
var
|
|
351
|
+
var equality = this, equalityAssignment = (0, _assign.equalityAssignmentFromEquality)(equality, context), leftVariableAssignment = (0, _assign.leftVariableAssignmentFromEquality)(equality, context), rightVariableAssignment = (0, _assign.rightVariableAssignmentFromEquality)(equality, context);
|
|
309
352
|
var assignment;
|
|
310
|
-
|
|
311
|
-
|
|
353
|
+
assignment = equalityAssignment; ///
|
|
354
|
+
assignments.push(assignment);
|
|
355
|
+
if (leftVariableAssignment !== null) {
|
|
312
356
|
assignment = leftVariableAssignment; ///
|
|
313
357
|
assignments.push(assignment);
|
|
314
358
|
}
|
|
315
|
-
if (
|
|
316
|
-
var rightVariable = Variable.fromVariableNodeAndType(rightVariableNode, type, context), rightVariableAssignment = (0, _assign.variableAssignmentFromVariable)(rightVariable);
|
|
359
|
+
if (rightVariableAssignment !== null) {
|
|
317
360
|
assignment = rightVariableAssignment; ///
|
|
318
361
|
assignments.push(assignment);
|
|
319
362
|
}
|
|
320
|
-
var equality = this, equalityAssignment = (0, _assign.equalityAssignmentFromEquality)(equality);
|
|
321
|
-
assignment = equalityAssignment; ///
|
|
322
|
-
assignments.push(assignment);
|
|
323
363
|
}
|
|
324
364
|
}
|
|
325
365
|
]);
|
|
326
366
|
return Equality;
|
|
327
367
|
}(_wrap_native_super(_occamlanguages.Element)), _define_property(_Equality, "name", "Equality"), _Equality));
|
|
328
368
|
|
|
329
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2VxdWFsaXR5LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBFbGVtZW50IH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IGVxdWF0ZVRlcm1zIH0gZnJvbSBcIi4uL3Byb2Nlc3MvZXF1YXRlXCI7XG5pbXBvcnQgeyBlcXVhbGl0eUFzc2lnbm1lbnRGcm9tRXF1YWxpdHksIHZhcmlhYmxlQXNzaWdubWVudEZyb21WYXJpYWJsZSB9IGZyb20gXCIuLi9wcm9jZXNzL2Fzc2lnblwiO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgRXF1YWxpdHkgZXh0ZW5kcyBFbGVtZW50IHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCBsZWZ0VGVybSwgcmlnaHRUZXJtKSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlKTtcblxuICAgIHRoaXMubGVmdFRlcm0gPSBsZWZ0VGVybTtcbiAgICB0aGlzLnJpZ2h0VGVybSA9IHJpZ2h0VGVybTtcbiAgfVxuXG4gIGdldExlZnRUZXJtKCkge1xuICAgIHJldHVybiB0aGlzLmxlZnRUZXJtO1xuICB9XG5cbiAgZ2V0UmlnaHRUZXJtKCkge1xuICAgIHJldHVybiB0aGlzLnJpZ2h0VGVybTtcbiAgfVxuXG4gIGdldEVxdWFsaXR5Tm9kZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5nZXROb2RlKCksXG4gICAgICAgICAgZXF1YWxpdHlOZGUgPSBub2RlOyAvLy9cblxuICAgIHJldHVybiBlcXVhbGl0eU5kZTtcbiAgfVxuXG4gIGdldFR5cGUoKSB7XG4gICAgbGV0IHR5cGU7XG5cbiAgICBjb25zdCBsZWZ0VGVybVR5cGUgPSB0aGlzLmxlZnRUZXJtLmdldFR5cGUoKSxcbiAgICAgICAgICByaWdodFRlcm1UeXBlID0gdGhpcy5yaWdodFRlcm0uZ2V0VHlwZSgpLFxuICAgICAgICAgIGxlZnRUZXJtVHlwZUVxdWFsVG9PclN1YlR5cGVPZlJpZ2h0VGVybVR5cGUgPSBsZWZ0VGVybVR5cGUuaXNFcXVhbFRvT3JTdWJUeXBlT2YocmlnaHRUZXJtVHlwZSksXG4gICAgICAgICAgcmlnaHRUZXJtVHlwZUVxdWFsVG9PclN1YlR5cGVPZkxlZnRUZXJtVHlwZSA9IHJpZ2h0VGVybVR5cGUuaXNFcXVhbFRvT3JTdWJUeXBlT2YobGVmdFRlcm1UeXBlKTtcblxuICAgIGlmIChsZWZ0VGVybVR5cGVFcXVhbFRvT3JTdWJUeXBlT2ZSaWdodFRlcm1UeXBlKSB7XG4gICAgICB0eXBlID0gbGVmdFRlcm1UeXBlOyAgLy8vXG4gICAgfVxuXG4gICAgaWYgKHJpZ2h0VGVybVR5cGVFcXVhbFRvT3JTdWJUeXBlT2ZMZWZ0VGVybVR5cGUpIHtcbiAgICAgIHR5cGUgPSByaWdodFRlcm1UeXBlOyAvLy9cbiAgICB9XG5cbiAgICByZXR1cm4gdHlwZTtcbiAgfVxuXG4gIGdldFRlcm1zKCkge1xuICAgIGNvbnN0IHRlcm1zID0gW1xuICAgICAgdGhpcy5sZWZ0VGVybSxcbiAgICAgIHRoaXMucmlnaHRUZXJtXG4gICAgXTtcblxuICAgIHJldHVybiB0ZXJtcztcbiAgfVxuXG4gIGlzUmVmbGV4aXZlKCkge1xuICAgIGNvbnN0IGxlZnRUZXJtU3RyaW5nID0gdGhpcy5sZWZ0VGVybS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICByaWdodFRlcm1TdHJpbmcgPSB0aGlzLnJpZ2h0VGVybS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICByZWZsZXhpdmUgPSAobGVmdFRlcm1TdHJpbmcgPT09IHJpZ2h0VGVybVN0cmluZyk7XG5cbiAgICByZXR1cm4gcmVmbGV4aXZlO1xuICB9XG5cbiAgaXNFcXVhbChjb250ZXh0KSB7XG4gICAgbGV0IGVxdWFsID0gZmFsc2U7XG5cbiAgICBjb25zdCBsZWZ0VGVybU5vZGUgPSB0aGlzLmxlZnRUZXJtLmdldE5vZGUoKSxcbiAgICAgICAgICByaWdodFRlcm1Ob2RlID0gdGhpcy5yaWdodFRlcm0uZ2V0Tm9kZSgpLFxuICAgICAgICAgIHRlcm1zRXF1YXRlID0gZXF1YXRlVGVybXMobGVmdFRlcm1Ob2RlLCByaWdodFRlcm1Ob2RlLCBjb250ZXh0KTtcblxuICAgIGlmICh0ZXJtc0VxdWF0ZSkge1xuICAgICAgZXF1YWwgPSB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBlcXVhbDtcbiAgfVxuXG4gIHZlcmlmeShhc3NpZ25tZW50cywgc3RhdGVkLCBjb250ZXh0KSB7XG4gICAgbGV0IHZlcmlmaWVzID0gZmFsc2U7XG5cbiAgICBjb25zdCBlcXVhbGl0eVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtlcXVhbGl0eVN0cmluZ30nIGVxdWFsaXR5Li4uYCk7XG5cbiAgICBjb25zdCB0ZXJtc1ZlcmlmeSA9IHRoaXMudmVyaWZ5VGVybXMoY29udGV4dCk7XG5cbiAgICBpZiAodGVybXNWZXJpZnkpIHtcbiAgICAgIGxldCB2ZXJpZmllc1doZW5TdGF0ZWQgPSBmYWxzZSxcbiAgICAgICAgICB2ZXJpZmllc1doZW5EZXJpdmVkID0gZmFsc2U7XG5cbiAgICAgIGlmIChzdGF0ZWQpIHtcbiAgICAgICAgdmVyaWZpZXNXaGVuU3RhdGVkID0gdGhpcy52ZXJpZnlXaGVuU3RhdGVkKGFzc2lnbm1lbnRzLCBjb250ZXh0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZlcmlmaWVzV2hlbkRlcml2ZWQgPSB0aGlzLnZlcmlmeVdoZW5EZXJpdmVkKGNvbnRleHQpO1xuICAgICAgfVxuXG4gICAgICBpZiAodmVyaWZpZXNXaGVuU3RhdGVkIHx8IHZlcmlmaWVzV2hlbkRlcml2ZWQpIHtcbiAgICAgICAgdmVyaWZpZXMgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh2ZXJpZmllcykge1xuXG4gICAgICAgIHRoaXMuYXNzaWduKGFzc2lnbm1lbnRzLCBjb250ZXh0KTtcblxuICAgIH1cblxuICAgIGlmICh2ZXJpZmllcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke2VxdWFsaXR5U3RyaW5nfScgZXF1YWxpdHkuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZlcmlmaWVzO1xuICB9XG5cbiAgdmVyaWZ5VGVybXMoY29udGV4dCkge1xuICAgIGxldCB0ZXJtc1ZlcmlmeTtcblxuICAgIGNvbnN0IGVxdWFsaXR5U3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke2VxdWFsaXR5U3RyaW5nfScgZXF1YWxpdHkncyB0ZXJtcy4uLmApO1xuXG4gICAgY29uc3QgbGVmdFRlcm1WZXJpZmllcyA9IHRoaXMubGVmdFRlcm0udmVyaWZ5KGNvbnRleHQsICgpID0+IHtcbiAgICAgIGxldCB2ZXJpZmllc0ZvcndhcmRzO1xuXG4gICAgICBjb25zdCByaWdodFRlcm1WZXJpZmllcyA9IHRoaXMucmlnaHRUZXJtLnZlcmlmeShjb250ZXh0LCAoKSA9PiB7XG4gICAgICAgIGxldCB2ZXJpZmllc0ZvcndhcmRzO1xuXG4gICAgICAgIGNvbnN0IGxlZnRUZXJtVHlwZSA9IHRoaXMubGVmdFRlcm0uZ2V0VHlwZSgpLFxuICAgICAgICAgICAgICByaWdodFRlcm1UeXBlID0gdGhpcy5yaWdodFRlcm0uZ2V0VHlwZSgpLFxuICAgICAgICAgICAgICBsZWZ0VGVybVR5cGVDb21wYXJhYmxlVG9SaWdodFRlcm1UeXBlID0gbGVmdFRlcm1UeXBlLmlzQ29tcGFyYWJsZVRvKHJpZ2h0VGVybVR5cGUpO1xuXG4gICAgICAgIHZlcmlmaWVzRm9yd2FyZHMgPSBsZWZ0VGVybVR5cGVDb21wYXJhYmxlVG9SaWdodFRlcm1UeXBlOyAgLy8vXG5cbiAgICAgICAgcmV0dXJuIHZlcmlmaWVzRm9yd2FyZHM7XG4gICAgICB9KTtcblxuICAgICAgdmVyaWZpZXNGb3J3YXJkcyA9IHJpZ2h0VGVybVZlcmlmaWVzOyAvLy9cblxuICAgICAgcmV0dXJuIHZlcmlmaWVzRm9yd2FyZHM7XG4gICAgfSk7XG5cbiAgICB0ZXJtc1ZlcmlmeSA9IGxlZnRUZXJtVmVyaWZpZXM7IC8vL1xuXG4gICAgaWYgKHRlcm1zVmVyaWZ5KSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7ZXF1YWxpdHlTdHJpbmd9JyBlcXVhbGl0eSdzIHRlcm1zLmApO1xuICAgIH1cblxuICAgIHJldHVybiB0ZXJtc1ZlcmlmeTtcbiAgfVxuXG4gIHZlcmlmeVdoZW5TdGF0ZWQoYXNzaWdubWVudHMsIGNvbnRleHQpIHtcbiAgICBsZXQgdmVyaWZpZXNXaGVuU3RhdGVkO1xuXG4gICAgY29uc3QgZXF1YWxpdHlTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7ZXF1YWxpdHlTdHJpbmd9JyBzdGF0ZWQgZXF1YWxpdHkuLi5gKTtcblxuICAgIHZlcmlmaWVzV2hlblN0YXRlZCA9IHRydWU7XG5cbiAgICBpZiAodmVyaWZpZXNXaGVuU3RhdGVkKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7ZXF1YWxpdHlTdHJpbmd9JyBzdGF0ZWQgZXF1YWxpdHkuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZlcmlmaWVzV2hlblN0YXRlZDtcbiAgfVxuXG4gIHZlcmlmeVdoZW5EZXJpdmVkKGNvbnRleHQpIHtcbiAgICBsZXQgdmVyaWZpZXNXaGVuRGVyaXZlZDtcblxuICAgIGNvbnN0IGVxdWFsaXR5U3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke2VxdWFsaXR5U3RyaW5nfScgZGVyaXZlZCBlcXVhbGl0eS4uLmApO1xuXG4gICAgdmVyaWZpZXNXaGVuRGVyaXZlZCA9IHRydWU7ICAvLy9cblxuICAgIGlmICh2ZXJpZmllc1doZW5EZXJpdmVkKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7ZXF1YWxpdHlTdHJpbmd9JyBkZXJpdmVkIGVxdWFsaXR5LmApO1xuICAgIH1cblxuICAgIHJldHVybiB2ZXJpZmllc1doZW5EZXJpdmVkO1xuICB9XG5cbiAgYXNzaWduKGFzc2lnbm1lbnRzLCBjb250ZXh0KSB7XG4gICAgaWYgKGFzc2lnbm1lbnRzID09PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgeyBWYXJpYWJsZSB9ID0gZWxlbWVudHMsXG4gICAgICAgICAgdHlwZSA9IHRoaXMuZ2V0VHlwZSgpLFxuICAgICAgICAgIGxlZnRUZXJtTm9kZSA9IHRoaXMubGVmdFRlcm0uZ2V0Tm9kZSgpLFxuICAgICAgICAgIHJpZ2h0VGVybU5vZGUgPSB0aGlzLnJpZ2h0VGVybS5nZXROb2RlKCksXG4gICAgICAgICAgbGVmdFRlcm1Ob2RlU2luZ3VsYXJWYXJpYWJsZU5vZGUgPSBsZWZ0VGVybU5vZGUuZ2V0U2luZ3VsYXJWYXJpYWJsZU5vZGUoKSxcbiAgICAgICAgICByaWdodFRlcm1Ob2RlU2luZ3VsYXJWYXJpYWJsZU5vZGUgPSByaWdodFRlcm1Ob2RlLmdldFNpbmd1bGFyVmFyaWFibGVOb2RlKCksXG4gICAgICAgICAgbGVmdFZhcmlhYmxlTm9kZSA9IGxlZnRUZXJtTm9kZVNpbmd1bGFyVmFyaWFibGVOb2RlLCAgLy8vXG4gICAgICAgICAgcmlnaHRWYXJpYWJsZU5vZGUgPSByaWdodFRlcm1Ob2RlU2luZ3VsYXJWYXJpYWJsZU5vZGU7ICAvLy9cblxuICAgIGxldCBhc3NpZ25tZW50O1xuXG4gICAgaWYgKGxlZnRWYXJpYWJsZU5vZGUgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGxlZnRWYXJpYWJsZSA9IFZhcmlhYmxlLmZyb21WYXJpYWJsZU5vZGVBbmRUeXBlKGxlZnRWYXJpYWJsZU5vZGUsIHR5cGUsIGNvbnRleHQpLFxuICAgICAgICAgICAgbGVmdFZhcmlhYmxlQXNzaWdubWVudCA9IHZhcmlhYmxlQXNzaWdubWVudEZyb21WYXJpYWJsZShsZWZ0VmFyaWFibGUpO1xuXG4gICAgICBhc3NpZ25tZW50ID0gbGVmdFZhcmlhYmxlQXNzaWdubWVudDsgIC8vL1xuXG4gICAgICBhc3NpZ25tZW50cy5wdXNoKGFzc2lnbm1lbnQpO1xuICAgIH1cblxuICAgIGlmIChyaWdodFZhcmlhYmxlTm9kZSAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgcmlnaHRWYXJpYWJsZSA9IFZhcmlhYmxlLmZyb21WYXJpYWJsZU5vZGVBbmRUeXBlKHJpZ2h0VmFyaWFibGVOb2RlLCB0eXBlLCBjb250ZXh0KSxcbiAgICAgICAgICAgIHJpZ2h0VmFyaWFibGVBc3NpZ25tZW50ID0gdmFyaWFibGVBc3NpZ25tZW50RnJvbVZhcmlhYmxlKHJpZ2h0VmFyaWFibGUpO1xuXG4gICAgICBhc3NpZ25tZW50ID0gcmlnaHRWYXJpYWJsZUFzc2lnbm1lbnQ7ICAvLy9cblxuICAgICAgYXNzaWdubWVudHMucHVzaChhc3NpZ25tZW50KTtcbiAgICB9XG5cbiAgICBjb25zdCBlcXVhbGl0eSA9IHRoaXMsICAvL1xuICAgICAgICAgIGVxdWFsaXR5QXNzaWdubWVudCA9IGVxdWFsaXR5QXNzaWdubWVudEZyb21FcXVhbGl0eShlcXVhbGl0eSk7XG5cbiAgICBhc3NpZ25tZW50ID0gZXF1YWxpdHlBc3NpZ25tZW50OyAvLy9cblxuICAgIGFzc2lnbm1lbnRzLnB1c2goYXNzaWdubWVudCk7XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiRXF1YWxpdHlcIjtcbn0pO1xuIl0sIm5hbWVzIjpbImRlZmluZSIsIkVxdWFsaXR5IiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJsZWZ0VGVybSIsInJpZ2h0VGVybSIsImdldExlZnRUZXJtIiwiZ2V0UmlnaHRUZXJtIiwiZ2V0RXF1YWxpdHlOb2RlIiwiZ2V0Tm9kZSIsImVxdWFsaXR5TmRlIiwiZ2V0VHlwZSIsInR5cGUiLCJsZWZ0VGVybVR5cGUiLCJyaWdodFRlcm1UeXBlIiwibGVmdFRlcm1UeXBlRXF1YWxUb09yU3ViVHlwZU9mUmlnaHRUZXJtVHlwZSIsImlzRXF1YWxUb09yU3ViVHlwZU9mIiwicmlnaHRUZXJtVHlwZUVxdWFsVG9PclN1YlR5cGVPZkxlZnRUZXJtVHlwZSIsImdldFRlcm1zIiwidGVybXMiLCJpc1JlZmxleGl2ZSIsImxlZnRUZXJtU3RyaW5nIiwiZ2V0U3RyaW5nIiwicmlnaHRUZXJtU3RyaW5nIiwicmVmbGV4aXZlIiwiaXNFcXVhbCIsImVxdWFsIiwibGVmdFRlcm1Ob2RlIiwicmlnaHRUZXJtTm9kZSIsInRlcm1zRXF1YXRlIiwiZXF1YXRlVGVybXMiLCJ2ZXJpZnkiLCJhc3NpZ25tZW50cyIsInN0YXRlZCIsInZlcmlmaWVzIiwiZXF1YWxpdHlTdHJpbmciLCJ0cmFjZSIsInRlcm1zVmVyaWZ5IiwidmVyaWZ5VGVybXMiLCJ2ZXJpZmllc1doZW5TdGF0ZWQiLCJ2ZXJpZmllc1doZW5EZXJpdmVkIiwidmVyaWZ5V2hlblN0YXRlZCIsInZlcmlmeVdoZW5EZXJpdmVkIiwiYXNzaWduIiwiZGVidWciLCJsZWZ0VGVybVZlcmlmaWVzIiwidmVyaWZpZXNGb3J3YXJkcyIsInJpZ2h0VGVybVZlcmlmaWVzIiwibGVmdFRlcm1UeXBlQ29tcGFyYWJsZVRvUmlnaHRUZXJtVHlwZSIsImlzQ29tcGFyYWJsZVRvIiwiVmFyaWFibGUiLCJlbGVtZW50cyIsImxlZnRUZXJtTm9kZVNpbmd1bGFyVmFyaWFibGVOb2RlIiwiZ2V0U2luZ3VsYXJWYXJpYWJsZU5vZGUiLCJyaWdodFRlcm1Ob2RlU2luZ3VsYXJWYXJpYWJsZU5vZGUiLCJsZWZ0VmFyaWFibGVOb2RlIiwicmlnaHRWYXJpYWJsZU5vZGUiLCJhc3NpZ25tZW50IiwibGVmdFZhcmlhYmxlIiwiZnJvbVZhcmlhYmxlTm9kZUFuZFR5cGUiLCJsZWZ0VmFyaWFibGVBc3NpZ25tZW50IiwidmFyaWFibGVBc3NpZ25tZW50RnJvbVZhcmlhYmxlIiwicHVzaCIsInJpZ2h0VmFyaWFibGUiLCJyaWdodFZhcmlhYmxlQXNzaWdubWVudCIsImVxdWFsaXR5IiwiZXF1YWxpdHlBc3NpZ25tZW50IiwiZXF1YWxpdHlBc3NpZ25tZW50RnJvbUVxdWFsaXR5IiwiRWxlbWVudCIsIm5hbWUiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQVFBOzs7ZUFBQTs7OzhCQU53Qjt3QkFFRDtzQkFDSztzQkFDbUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBRS9FLFdBQWVBLElBQUFBLGdCQUFNLDZCQUFDOzthQUFNQyxTQUNkQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxRQUFRLEVBQUVDLFNBQVM7Z0NBRDVCTDs7Z0JBRXhCLGtCQUZ3QkE7WUFFbEJDO1lBQVNDO1lBQVFDOztRQUV2QixNQUFLQyxRQUFRLEdBQUdBO1FBQ2hCLE1BQUtDLFNBQVMsR0FBR0E7Ozs7O1lBR25CQyxLQUFBQTttQkFBQUEsU0FBQUE7Z0JBQ0UsT0FBTyxJQUFJLENBQUNGLFFBQVE7WUFDdEI7OztZQUVBRyxLQUFBQTttQkFBQUEsU0FBQUE7Z0JBQ0UsT0FBTyxJQUFJLENBQUNGLFNBQVM7WUFDdkI7OztZQUVBRyxLQUFBQTttQkFBQUEsU0FBQUE7Z0JBQ0UsSUFBTUwsT0FBTyxJQUFJLENBQUNNLE9BQU8sSUFDbkJDLGNBQWNQLE1BQU0sR0FBRztnQkFFN0IsT0FBT087WUFDVDs7O1lBRUFDLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFDRSxJQUFJQztnQkFFSixJQUFNQyxlQUFlLElBQUksQ0FBQ1QsUUFBUSxDQUFDTyxPQUFPLElBQ3BDRyxnQkFBZ0IsSUFBSSxDQUFDVCxTQUFTLENBQUNNLE9BQU8sSUFDdENJLDhDQUE4Q0YsYUFBYUcsb0JBQW9CLENBQUNGLGdCQUNoRkcsOENB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
|
|
369
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2VxdWFsaXR5LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBFbGVtZW50IH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IGVxdWF0ZVRlcm1zIH0gZnJvbSBcIi4uL3Byb2Nlc3MvZXF1YXRlXCI7XG5pbXBvcnQgeyBlcXVhbGl0eUFzc2lnbm1lbnRGcm9tRXF1YWxpdHksIGxlZnRWYXJpYWJsZUFzc2lnbm1lbnRGcm9tRXF1YWxpdHksIHJpZ2h0VmFyaWFibGVBc3NpZ25tZW50RnJvbUVxdWFsaXR5IH0gZnJvbSBcIi4uL3Byb2Nlc3MvYXNzaWduXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBFcXVhbGl0eSBleHRlbmRzIEVsZW1lbnQge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGxlZnRUZXJtLCByaWdodFRlcm0pIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUpO1xuXG4gICAgdGhpcy5sZWZ0VGVybSA9IGxlZnRUZXJtO1xuICAgIHRoaXMucmlnaHRUZXJtID0gcmlnaHRUZXJtO1xuICB9XG5cbiAgZ2V0TGVmdFRlcm0oKSB7XG4gICAgcmV0dXJuIHRoaXMubGVmdFRlcm07XG4gIH1cblxuICBnZXRSaWdodFRlcm0oKSB7XG4gICAgcmV0dXJuIHRoaXMucmlnaHRUZXJtO1xuICB9XG5cbiAgZ2V0RXF1YWxpdHlOb2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBlcXVhbGl0eU5kZSA9IG5vZGU7IC8vL1xuXG4gICAgcmV0dXJuIGVxdWFsaXR5TmRlO1xuICB9XG5cbiAgZ2V0TGVmdFRlcm1Ob2RlKCkge1xuICAgIGNvbnN0IGxlZnRUZXJtTm9kZSA9IHRoaXMubGVmdFRlcm0uZ2V0Tm9kZSgpO1xuXG4gICAgcmV0dXJuIGxlZnRUZXJtTm9kZTtcbiAgfVxuXG4gIGdldFJpZ2h0VGVybU5vZGUoKSB7XG4gICAgY29uc3QgcmlnaHRUZXJtTm9kZSA9IHRoaXMucmlnaHRUZXJtLmdldE5vZGUoKTtcblxuICAgIHJldHVybiByaWdodFRlcm1Ob2RlO1xuICB9XG5cbiAgZ2V0VHlwZSgpIHtcbiAgICBsZXQgdHlwZTtcblxuICAgIGNvbnN0IGxlZnRUZXJtVHlwZSA9IHRoaXMubGVmdFRlcm0uZ2V0VHlwZSgpLFxuICAgICAgICAgIHJpZ2h0VGVybVR5cGUgPSB0aGlzLnJpZ2h0VGVybS5nZXRUeXBlKCksXG4gICAgICAgICAgbGVmdFRlcm1UeXBlRXF1YWxUb09yU3ViVHlwZU9mUmlnaHRUZXJtVHlwZSA9IGxlZnRUZXJtVHlwZS5pc0VxdWFsVG9PclN1YlR5cGVPZihyaWdodFRlcm1UeXBlKSxcbiAgICAgICAgICByaWdodFRlcm1UeXBlRXF1YWxUb09yU3ViVHlwZU9mTGVmdFRlcm1UeXBlID0gcmlnaHRUZXJtVHlwZS5pc0VxdWFsVG9PclN1YlR5cGVPZihsZWZ0VGVybVR5cGUpO1xuXG4gICAgaWYgKGxlZnRUZXJtVHlwZUVxdWFsVG9PclN1YlR5cGVPZlJpZ2h0VGVybVR5cGUpIHtcbiAgICAgIHR5cGUgPSBsZWZ0VGVybVR5cGU7ICAvLy9cbiAgICB9XG5cbiAgICBpZiAocmlnaHRUZXJtVHlwZUVxdWFsVG9PclN1YlR5cGVPZkxlZnRUZXJtVHlwZSkge1xuICAgICAgdHlwZSA9IHJpZ2h0VGVybVR5cGU7IC8vL1xuICAgIH1cblxuICAgIHJldHVybiB0eXBlO1xuICB9XG5cbiAgZ2V0VGVybXMoKSB7XG4gICAgY29uc3QgdGVybXMgPSBbXG4gICAgICB0aGlzLmxlZnRUZXJtLFxuICAgICAgdGhpcy5yaWdodFRlcm1cbiAgICBdO1xuXG4gICAgcmV0dXJuIHRlcm1zO1xuICB9XG5cbiAgbWF0Y2hFcXVhbGl0eU5vZGUoZXF1YWxpdHlOb2RlKSB7XG4gICAgY29uc3QgZXF1YWxpdHlOb2RlQSA9IGVxdWFsaXR5Tm9kZTsgLy8vXG5cbiAgICBlcXVhbGl0eU5vZGUgPSB0aGlzLmdldEVxdWFsaXR5Tm9kZSgpO1xuXG4gICAgY29uc3QgZXF1YWxpdHlOb2RlQiA9IGVxdWFsaXR5Tm9kZSwgLy8vXG4gICAgICAgICAgZXF1YWxpdHlOb2RlQUFNYXRjaGVzRXF1YWxpdHlCTm9kZUIgPSBlcXVhbGl0eU5vZGVBLm1hdGNoKGVxdWFsaXR5Tm9kZUIpLFxuICAgICAgICAgIGVxdWFsaXR5Tm9kZU1hdGNoZXMgPSBlcXVhbGl0eU5vZGVBQU1hdGNoZXNFcXVhbGl0eUJOb2RlQjsgLy8vXG5cbiAgICByZXR1cm4gZXF1YWxpdHlOb2RlTWF0Y2hlcztcbiAgfVxuXG4gIGlzUmVmbGV4aXZlKCkge1xuICAgIGNvbnN0IGxlZnRUZXJtU3RyaW5nID0gdGhpcy5sZWZ0VGVybS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICByaWdodFRlcm1TdHJpbmcgPSB0aGlzLnJpZ2h0VGVybS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICByZWZsZXhpdmUgPSAobGVmdFRlcm1TdHJpbmcgPT09IHJpZ2h0VGVybVN0cmluZyk7XG5cbiAgICByZXR1cm4gcmVmbGV4aXZlO1xuICB9XG5cbiAgaXNFcXVhbFRvKGVxdWFsaXR5KSB7XG4gICAgY29uc3QgZXF1YWxpdHlOb2RlID0gZXF1YWxpdHkuZ2V0Tm9kZSgpLFxuICAgICAgICAgIGVxdWFsaXR5Tm9kZU1hdGNoZXMgPSB0aGlzLm1hdGNoRXF1YWxpdHlOb2RlKGVxdWFsaXR5Tm9kZSksXG4gICAgICAgICAgZXF1YWxUbyA9IGVxdWFsaXR5Tm9kZU1hdGNoZXM7ICAvLy9cblxuICAgIHJldHVybiBlcXVhbFRvO1xuICB9XG5cbiAgaXNFcXVhbChjb250ZXh0KSB7XG4gICAgbGV0IGVxdWFsID0gZmFsc2U7XG5cbiAgICBjb25zdCBsZWZ0VGVybU5vZGUgPSB0aGlzLmxlZnRUZXJtLmdldE5vZGUoKSxcbiAgICAgICAgICByaWdodFRlcm1Ob2RlID0gdGhpcy5yaWdodFRlcm0uZ2V0Tm9kZSgpLFxuICAgICAgICAgIHRlcm1zRXF1YXRlID0gZXF1YXRlVGVybXMobGVmdFRlcm1Ob2RlLCByaWdodFRlcm1Ob2RlLCBjb250ZXh0KTtcblxuICAgIGlmICh0ZXJtc0VxdWF0ZSkge1xuICAgICAgZXF1YWwgPSB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBlcXVhbDtcbiAgfVxuXG4gIGlzVmFsaWQoY29udGV4dCkge1xuICAgIGNvbnN0IGVxdWFsaXR5Tm9kZSA9IHRoaXMuZ2V0RXF1YWxpdHlOb2RlKCksXG4gICAgICAgICAgZXF1YWxpdHlQcmVzZW50ID0gY29udGV4dC5pc0VxdWFsaXR5UHJlc2VudEJ5RXF1YWxpdHlOb2RlKGVxdWFsaXR5Tm9kZSksXG4gICAgICAgICAgdmFsaWQgPSBlcXVhbGl0eVByZXNlbnQ7ICAvLy9cblxuICAgIHJldHVybiB2YWxpZDtcbiAgfVxuXG4gIHZhbGlkYXRlKGFzc2lnbm1lbnRzLCBzdGF0ZWQsIGNvbnRleHQpIHtcbiAgICBsZXQgdmFsaWRhdGVzID0gZmFsc2U7XG5cbiAgICBjb25zdCBlcXVhbGl0eVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7ZXF1YWxpdHlTdHJpbmd9JyBlcXVhbGl0eS4uLmApO1xuXG4gICAgY29uc3QgdmFsaWQgPSB0aGlzLmlzVmFsaWQoY29udGV4dCk7XG5cbiAgICBpZiAodmFsaWQpIHtcbiAgICAgIHZhbGlkYXRlcyA9IHRydWU7XG5cbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnRoZSAnJHtlcXVhbGl0eVN0cmluZ30nIGVxdWFsaXR5IGlzIGFscmVhZHkgdmFsaWQuYCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHRlcm1zVmFsaWRhdGUgPSB0aGlzLnZhbGlkYXRlVGVybXMoY29udGV4dCk7XG5cbiAgICAgIGlmICh0ZXJtc1ZhbGlkYXRlKSB7XG4gICAgICAgIGxldCB2YWxpZGF0ZXNXaGVuU3RhdGVkID0gZmFsc2UsXG4gICAgICAgICAgICB2YWxpZGF0ZXNXaGVuRGVyaXZlZCA9IGZhbHNlO1xuXG4gICAgICAgIGlmIChzdGF0ZWQpIHtcbiAgICAgICAgICB2YWxpZGF0ZXNXaGVuU3RhdGVkID0gdGhpcy52YWxpZGF0ZVdoZW5TdGF0ZWQoYXNzaWdubWVudHMsIGNvbnRleHQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZhbGlkYXRlc1doZW5EZXJpdmVkID0gdGhpcy52YWxpZGF0ZVdoZW5EZXJpdmVkKGNvbnRleHQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHZhbGlkYXRlc1doZW5TdGF0ZWQgfHwgdmFsaWRhdGVzV2hlbkRlcml2ZWQpIHtcbiAgICAgICAgICB2YWxpZGF0ZXMgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh2YWxpZGF0ZXMpIHtcbiAgICAgICAgY29uc3QgZXF1YWxpdHkgPSB0aGlzOyAgLy8vXG5cbiAgICAgICAgY29udGV4dC5hZGRFcXVhbGl0eShlcXVhbGl0eSk7XG5cbiAgICAgICAgdGhpcy5hc3NpZ24oYXNzaWdubWVudHMsIHN0YXRlZCwgY29udGV4dCk7XG5cbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtlcXVhbGl0eVN0cmluZ30nIGVxdWFsaXR5LmApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB2YWxpZGF0ZXM7XG4gIH1cblxuICB2YWxpZGF0ZVRlcm1zKGNvbnRleHQpIHtcbiAgICBsZXQgdGVybXNWYWxpZGF0ZTtcblxuICAgIGNvbnN0IGVxdWFsaXR5U3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtlcXVhbGl0eVN0cmluZ30nIGVxdWFsaXR5J3MgdGVybXMuLi5gKTtcblxuICAgIGNvbnN0IGxlZnRUZXJtVmFsaWRhdGVzID0gdGhpcy5sZWZ0VGVybS52YWxpZGF0ZShjb250ZXh0LCAoKSA9PiB7XG4gICAgICBsZXQgdmFsaWRhdGVzRm9yd2FyZHM7XG5cbiAgICAgIGNvbnN0IHJpZ2h0VGVybVZhbGlkYXRlcyA9IHRoaXMucmlnaHRUZXJtLnZhbGlkYXRlKGNvbnRleHQsICgpID0+IHtcbiAgICAgICAgbGV0IHZhbGlkYXRlc0ZvcndhcmRzO1xuXG4gICAgICAgIGNvbnN0IGxlZnRUZXJtVHlwZSA9IHRoaXMubGVmdFRlcm0uZ2V0VHlwZSgpLFxuICAgICAgICAgICAgICByaWdodFRlcm1UeXBlID0gdGhpcy5yaWdodFRlcm0uZ2V0VHlwZSgpLFxuICAgICAgICAgICAgICBsZWZ0VGVybVR5cGVDb21wYXJhYmxlVG9SaWdodFRlcm1UeXBlID0gbGVmdFRlcm1UeXBlLmlzQ29tcGFyYWJsZVRvKHJpZ2h0VGVybVR5cGUpO1xuXG4gICAgICAgIHZhbGlkYXRlc0ZvcndhcmRzID0gbGVmdFRlcm1UeXBlQ29tcGFyYWJsZVRvUmlnaHRUZXJtVHlwZTsgIC8vL1xuXG4gICAgICAgIHJldHVybiB2YWxpZGF0ZXNGb3J3YXJkcztcbiAgICAgIH0pO1xuXG4gICAgICB2YWxpZGF0ZXNGb3J3YXJkcyA9IHJpZ2h0VGVybVZhbGlkYXRlczsgLy8vXG5cbiAgICAgIHJldHVybiB2YWxpZGF0ZXNGb3J3YXJkcztcbiAgICB9KTtcblxuICAgIHRlcm1zVmFsaWRhdGUgPSBsZWZ0VGVybVZhbGlkYXRlczsgLy8vXG5cbiAgICBpZiAodGVybXNWYWxpZGF0ZSkge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtlcXVhbGl0eVN0cmluZ30nIGVxdWFsaXR5J3MgdGVybXMuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRlcm1zVmFsaWRhdGU7XG4gIH1cblxuICB2YWxpZGF0ZVdoZW5TdGF0ZWQoYXNzaWdubWVudHMsIGNvbnRleHQpIHtcbiAgICBsZXQgdmFsaWRhdGVzV2hlblN0YXRlZDtcblxuICAgIGNvbnN0IGVxdWFsaXR5U3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtlcXVhbGl0eVN0cmluZ30nIHN0YXRlZCBlcXVhbGl0eS4uLmApO1xuXG4gICAgdmFsaWRhdGVzV2hlblN0YXRlZCA9IHRydWU7XG5cbiAgICBpZiAodmFsaWRhdGVzV2hlblN0YXRlZCkge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtlcXVhbGl0eVN0cmluZ30nIHN0YXRlZCBlcXVhbGl0eS5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsaWRhdGVzV2hlblN0YXRlZDtcbiAgfVxuXG4gIHZhbGlkYXRlV2hlbkRlcml2ZWQoY29udGV4dCkge1xuICAgIGxldCB2YWxpZGF0ZXNXaGVuRGVyaXZlZDtcblxuICAgIGNvbnN0IGVxdWFsaXR5U3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtlcXVhbGl0eVN0cmluZ30nIGRlcml2ZWQgZXF1YWxpdHkuLi5gKTtcblxuICAgIHZhbGlkYXRlc1doZW5EZXJpdmVkID0gdHJ1ZTsgIC8vL1xuXG4gICAgaWYgKHZhbGlkYXRlc1doZW5EZXJpdmVkKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2VxdWFsaXR5U3RyaW5nfScgZGVyaXZlZCBlcXVhbGl0eS5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsaWRhdGVzV2hlbkRlcml2ZWQ7XG4gIH1cblxuICBhc3NpZ24oYXNzaWdubWVudHMsIHN0YXRlZCwgY29udGV4dCkge1xuICAgIGlmIChhc3NpZ25tZW50cyA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGVxdWFsaXR5ID0gdGhpcywgIC8vL1xuICAgICAgICAgIGVxdWFsaXR5QXNzaWdubWVudCA9IGVxdWFsaXR5QXNzaWdubWVudEZyb21FcXVhbGl0eShlcXVhbGl0eSwgY29udGV4dCksXG4gICAgICAgICAgbGVmdFZhcmlhYmxlQXNzaWdubWVudCA9IGxlZnRWYXJpYWJsZUFzc2lnbm1lbnRGcm9tRXF1YWxpdHkoZXF1YWxpdHksIGNvbnRleHQpLFxuICAgICAgICAgIHJpZ2h0VmFyaWFibGVBc3NpZ25tZW50ID0gcmlnaHRWYXJpYWJsZUFzc2lnbm1lbnRGcm9tRXF1YWxpdHkoZXF1YWxpdHksIGNvbnRleHQpO1xuXG4gICAgbGV0IGFzc2lnbm1lbnQ7XG5cbiAgICBhc3NpZ25tZW50ID0gZXF1YWxpdHlBc3NpZ25tZW50OyAvLy9cblxuICAgIGFzc2lnbm1lbnRzLnB1c2goYXNzaWdubWVudCk7XG5cbiAgICBpZiAobGVmdFZhcmlhYmxlQXNzaWdubWVudCAhPT0gbnVsbCkge1xuICAgICAgYXNzaWdubWVudCA9IGxlZnRWYXJpYWJsZUFzc2lnbm1lbnQ7ICAvLy9cblxuICAgICAgYXNzaWdubWVudHMucHVzaChhc3NpZ25tZW50KTtcbiAgICB9XG5cbiAgICBpZiAocmlnaHRWYXJpYWJsZUFzc2lnbm1lbnQgIT09IG51bGwpIHtcbiAgICAgIGFzc2lnbm1lbnQgPSByaWdodFZhcmlhYmxlQXNzaWdubWVudDsgIC8vL1xuXG4gICAgICBhc3NpZ25tZW50cy5wdXNoKGFzc2lnbm1lbnQpO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJFcXVhbGl0eVwiO1xufSk7XG4iXSwibmFtZXMiOlsiZGVmaW5lIiwiRXF1YWxpdHkiLCJjb250ZXh0Iiwic3RyaW5nIiwibm9kZSIsImxlZnRUZXJtIiwicmlnaHRUZXJtIiwiZ2V0TGVmdFRlcm0iLCJnZXRSaWdodFRlcm0iLCJnZXRFcXVhbGl0eU5vZGUiLCJnZXROb2RlIiwiZXF1YWxpdHlOZGUiLCJnZXRMZWZ0VGVybU5vZGUiLCJsZWZ0VGVybU5vZGUiLCJnZXRSaWdodFRlcm1Ob2RlIiwicmlnaHRUZXJtTm9kZSIsImdldFR5cGUiLCJ0eXBlIiwibGVmdFRlcm1UeXBlIiwicmlnaHRUZXJtVHlwZSIsImxlZnRUZXJtVHlwZUVxdWFsVG9PclN1YlR5cGVPZlJpZ2h0VGVybVR5cGUiLCJpc0VxdWFsVG9PclN1YlR5cGVPZiIsInJpZ2h0VGVybVR5cGVFcXVhbFRvT3JTdWJUeXBlT2ZMZWZ0VGVybVR5cGUiLCJnZXRUZXJtcyIsInRlcm1zIiwibWF0Y2hFcXVhbGl0eU5vZGUiLCJlcXVhbGl0eU5vZGUiLCJlcXVhbGl0eU5vZGVBIiwiZXF1YWxpdHlOb2RlQiIsImVxdWFsaXR5Tm9kZUFBTWF0Y2hlc0VxdWFsaXR5Qk5vZGVCIiwibWF0Y2giLCJlcXVhbGl0eU5vZGVNYXRjaGVzIiwiaXNSZWZsZXhpdmUiLCJsZWZ0VGVybVN0cmluZyIsImdldFN0cmluZyIsInJpZ2h0VGVybVN0cmluZyIsInJlZmxleGl2ZSIsImlzRXF1YWxUbyIsImVxdWFsaXR5IiwiZXF1YWxUbyIsImlzRXF1YWwiLCJlcXVhbCIsInRlcm1zRXF1YXRlIiwiZXF1YXRlVGVybXMiLCJpc1ZhbGlkIiwiZXF1YWxpdHlQcmVzZW50IiwiaXNFcXVhbGl0eVByZXNlbnRCeUVxdWFsaXR5Tm9kZSIsInZhbGlkIiwidmFsaWRhdGUiLCJhc3NpZ25tZW50cyIsInN0YXRlZCIsInZhbGlkYXRlcyIsImVxdWFsaXR5U3RyaW5nIiwidHJhY2UiLCJkZWJ1ZyIsInRlcm1zVmFsaWRhdGUiLCJ2YWxpZGF0ZVRlcm1zIiwidmFsaWRhdGVzV2hlblN0YXRlZCIsInZhbGlkYXRlc1doZW5EZXJpdmVkIiwidmFsaWRhdGVXaGVuU3RhdGVkIiwidmFsaWRhdGVXaGVuRGVyaXZlZCIsImFkZEVxdWFsaXR5IiwiYXNzaWduIiwibGVmdFRlcm1WYWxpZGF0ZXMiLCJ2YWxpZGF0ZXNGb3J3YXJkcyIsInJpZ2h0VGVybVZhbGlkYXRlcyIsImxlZnRUZXJtVHlwZUNvbXBhcmFibGVUb1JpZ2h0VGVybVR5cGUiLCJpc0NvbXBhcmFibGVUbyIsImVxdWFsaXR5QXNzaWdubWVudCIsImVxdWFsaXR5QXNzaWdubWVudEZyb21FcXVhbGl0eSIsImxlZnRWYXJpYWJsZUFzc2lnbm1lbnQiLCJsZWZ0VmFyaWFibGVBc3NpZ25tZW50RnJvbUVxdWFsaXR5IiwicmlnaHRWYXJpYWJsZUFzc2lnbm1lbnQiLCJyaWdodFZhcmlhYmxlQXNzaWdubWVudEZyb21FcXVhbGl0eSIsImFzc2lnbm1lbnQiLCJwdXNoIiwiRWxlbWVudCIsIm5hbWUiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQVFBOzs7ZUFBQTs7OzhCQU53Qjt3QkFFRDtzQkFDSztzQkFDNEY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBRXhILFdBQWVBLElBQUFBLGdCQUFNLDZCQUFDOzthQUFNQyxTQUNkQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxRQUFRLEVBQUVDLFNBQVM7Z0NBRDVCTDs7Z0JBRXhCLGtCQUZ3QkE7WUFFbEJDO1lBQVNDO1lBQVFDOztRQUV2QixNQUFLQyxRQUFRLEdBQUdBO1FBQ2hCLE1BQUtDLFNBQVMsR0FBR0E7Ozs7O1lBR25CQyxLQUFBQTttQkFBQUEsU0FBQUE7Z0JBQ0UsT0FBTyxJQUFJLENBQUNGLFFBQVE7WUFDdEI7OztZQUVBRyxLQUFBQTttQkFBQUEsU0FBQUE7Z0JBQ0UsT0FBTyxJQUFJLENBQUNGLFNBQVM7WUFDdkI7OztZQUVBRyxLQUFBQTttQkFBQUEsU0FBQUE7Z0JBQ0UsSUFBTUwsT0FBTyxJQUFJLENBQUNNLE9BQU8sSUFDbkJDLGNBQWNQLE1BQU0sR0FBRztnQkFFN0IsT0FBT087WUFDVDs7O1lBRUFDLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFDRSxJQUFNQyxlQUFlLElBQUksQ0FBQ1IsUUFBUSxDQUFDSyxPQUFPO2dCQUUxQyxPQUFPRztZQUNUOzs7WUFFQUMsS0FBQUE7bUJBQUFBLFNBQUFBO2dCQUNFLElBQU1DLGdCQUFnQixJQUFJLENBQUNULFNBQVMsQ0FBQ0ksT0FBTztn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
|