occam-nominal 1.0.486 → 1.0.487
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/claim.js +17 -11
- package/lib/element/procedureCall.js +4 -4
- package/lib/element/rule.js +13 -7
- package/package.json +3 -3
- package/src/element/claim.js +17 -11
- package/src/element/procedureCall.js +4 -5
- package/src/element/rule.js +12 -6
package/lib/element/claim.js
CHANGED
|
@@ -207,23 +207,29 @@ class Claim extends _occamlanguages.Element {
|
|
|
207
207
|
});
|
|
208
208
|
}, context);
|
|
209
209
|
}
|
|
210
|
-
unifyFactOrSubproofsWithSupposition(
|
|
211
|
-
return extract(
|
|
210
|
+
unifyFactOrSubproofsWithSupposition(factOrSubproofs, supposition, context, forward, back) {
|
|
211
|
+
return extract(factOrSubproofs, (factOrSubproof, forward, back)=>{
|
|
212
212
|
return supposition.unifyFactOrSubproof(factOrSubproof, context, forward, back);
|
|
213
|
-
}, (factOrSubproof, back)=>{
|
|
214
|
-
return context.solveInferredSubstitutions(
|
|
213
|
+
}, (factOrSubproofs, factOrSubproof, context, back)=>{
|
|
214
|
+
return context.solveInferredSubstitutions((back)=>{
|
|
215
|
+
return forward(factOrSubproofs, context, back);
|
|
216
|
+
}, back);
|
|
215
217
|
}, (exception)=>{
|
|
216
218
|
if (exception) {
|
|
217
219
|
return back(exception);
|
|
218
220
|
}
|
|
219
|
-
return supposition.unifyIndependently(context,
|
|
221
|
+
return supposition.unifyIndependently(context, (context, back)=>{
|
|
222
|
+
return forward(factOrSubproofs, context, back);
|
|
223
|
+
}, back);
|
|
220
224
|
});
|
|
221
225
|
}
|
|
222
|
-
unifyFactOrSubproofsWithSuppositions(
|
|
223
|
-
|
|
224
|
-
return backwardsEvery(this.suppositions, (supposition,
|
|
225
|
-
return this.unifyFactOrSubproofsWithSupposition(
|
|
226
|
-
},
|
|
226
|
+
unifyFactOrSubproofsWithSuppositions(factOrSubproofs, context, forward, back) {
|
|
227
|
+
factOrSubproofs = reverse(factOrSubproofs); ///
|
|
228
|
+
return backwardsEvery(this.suppositions, (supposition, factOrSubproofs, context, forward, back)=>{
|
|
229
|
+
return this.unifyFactOrSubproofsWithSupposition(factOrSubproofs, supposition, context, forward, back);
|
|
230
|
+
}, factOrSubproofs, context, (factOrSubproofs, context, back)=>{
|
|
231
|
+
return forward(context, back);
|
|
232
|
+
}, back);
|
|
227
233
|
}
|
|
228
234
|
toJSON() {
|
|
229
235
|
const labelsJSON = (0, _json.labelsToLabelsJSON)(this.labels), deductionJSON = (0, _json.deductionToDeductionJSON)(this.deduction), suppositionsJSON = (0, _json.suppositionsToSuppositionsJSON)(this.suppositions), signatureJSON = (0, _json.signatureToSignatureJSON)(this.signature), hypothesesJSON = (0, _json.hypothesesToHypothesesJSON)(this.hypotheses), string = this.getString();
|
|
@@ -248,4 +254,4 @@ class Claim extends _occamlanguages.Element {
|
|
|
248
254
|
}
|
|
249
255
|
}
|
|
250
256
|
|
|
251
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2NsYWltLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcbmltcG9ydCB7IEVsZW1lbnQsIGJyZWFrUG9pbnRVdGlsaXRpZXMsIGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IHsgZW5jbG9zZSwgcmVjb25jaWxlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9jb250ZXh0XCI7XG5pbXBvcnQgeyBjbGFpbVN0cmluZ0Zyb21MYWJlbHNTaWduYXR1cmVTdXBwb3NpdGlvbnNBbmREZWR1Y3Rpb24gfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3N0cmluZ1wiO1xuaW1wb3J0IHsgbGFiZWxzRnJvbUpTT04sXG4gICAgICAgICBkZWR1Y3Rpb25Gcm9tSlNPTixcbiAgICAgICAgIHNpZ25hdHVyZUZyb21KU09OLFxuICAgICAgICAgbGFiZWxzVG9MYWJlbHNKU09OLFxuICAgICAgICAgaHlwb3RoZXNlc0Zyb21KU09OLFxuICAgICAgICAgc3VwcG9zaXRpb25zRnJvbUpTT04sXG4gICAgICAgICBkZWR1Y3Rpb25Ub0RlZHVjdGlvbkpTT04sXG4gICAgICAgICBzaWduYXR1cmVUb1NpZ25hdHVyZUpTT04sXG4gICAgICAgICBoeXBvdGhlc2VzVG9IeXBvdGhlc2VzSlNPTixcbiAgICAgICAgIHN1cHBvc2l0aW9uc1RvU3VwcG9zaXRpb25zSlNPTiB9IGZyb20gXCIuLi91dGlsaXRpZXMvanNvblwiO1xuXG5jb25zdCB7IHJldmVyc2UgfSA9IGFycmF5VXRpbGl0aWVzLFxuICAgICAgeyBicmVha1BvaW50RnJvbUpTT04sIGJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OIH0gPSBicmVha1BvaW50VXRpbGl0aWVzLFxuICAgICAgeyBhbGwsIGV2ZXJ5LCBleHRyYWN0LCBmb3J3YXJkc0V2ZXJ5LCBiYWNrd2FyZHNFdmVyeSB9ID0gY29udGludWF0aW9uVXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDbGFpbSBleHRlbmRzIEVsZW1lbnQge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIGxhYmVscywgc3VwcG9zaXRpb25zLCBkZWR1Y3Rpb24sIHByb29mLCBzaWduYXR1cmUsIGh5cG90aGVzZXMpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy5sYWJlbHMgPSBsYWJlbHM7XG4gICAgdGhpcy5zdXBwb3NpdGlvbnMgPSBzdXBwb3NpdGlvbnM7XG4gICAgdGhpcy5kZWR1Y3Rpb24gPSBkZWR1Y3Rpb247XG4gICAgdGhpcy5wcm9vZiA9IHByb29mO1xuICAgIHRoaXMuc2lnbmF0dXJlID0gc2lnbmF0dXJlO1xuICAgIHRoaXMuaHlwb3RoZXNlcyA9IGh5cG90aGVzZXM7XG4gIH1cblxuICBnZXRMYWJlbHMoKSB7XG4gICAgcmV0dXJuIHRoaXMubGFiZWxzO1xuICB9XG5cbiAgZ2V0U3VwcG9zaXRpb25zKCkge1xuICAgIHJldHVybiB0aGlzLnN1cHBvc2l0aW9ucztcbiAgfVxuXG4gIGdldERlZHVjdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5kZWR1Y3Rpb247XG4gIH1cblxuICBnZXRQcm9vZigpIHtcbiAgICByZXR1cm4gdGhpcy5wcm9vZjtcbiAgfVxuXG4gIGdldFNpZ25hdHVyZSgpIHtcbiAgICByZXR1cm4gdGhpcy5zaWduYXR1cmU7XG4gIH1cblxuICBnZXRIeXBvdGhlc2VzKCkge1xuICAgIHJldHVybiB0aGlzLmh5cG90aGVzZXM7XG4gIH1cblxuICBzZXRIeXBvdGhlc2VzKGh5cG90aGVzZXMpIHtcbiAgICB0aGlzLmh5cG90aGVzZXMgPSBoeXBvdGhlc2VzO1xuICB9XG5cbiAgZ2V0U3VwcG9zaXRpb24oaW5kZXgpIHtcbiAgICBjb25zdCBzdXBwb3NpdGlvbiA9IHRoaXMuc3VwcG9zaXRpb25zW2luZGV4XSB8fCBudWxsO1xuXG4gICAgcmV0dXJuIHN1cHBvc2l0aW9uO1xuICB9XG5cbiAgaXNTYXRpc2ZpYWJsZSgpIHtcbiAgICBjb25zdCBzYXRpc2ZpYWJsZSA9IGZhbHNlO1xuXG4gICAgcmV0dXJuIHNhdGlzZmlhYmxlO1xuICB9XG5cbiAgaXNIeXBvdGhldGljYWwoKSB7XG4gICAgY29uc3QgaHlwb3RoZXNlc0xlbmd0aCA9IHRoaXMuaHlwb3RoZXNlcy5sZW5ndGgsXG4gICAgICAgICAgaHlwb3RoZXRpY2FsID0gKGh5cG90aGVzZXNMZW5ndGggPiAwKTtcblxuICAgIHJldHVybiBoeXBvdGhldGljYWw7XG4gIH1cblxuICBtYXRjaE1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSkge1xuICAgIGNvbnN0IG1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzID0gdGhpcy5sYWJlbHMuc29tZSgobGFiZWwpID0+IHtcbiAgICAgIGNvbnN0IG1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzID0gbGFiZWwubWF0Y2hNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpO1xuXG4gICAgICBpZiAobWV0YXZhcmlhYmxlTm9kZU1hdGNoZXMpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbWV0YXZhcmlhYmxlTm9kZU1hdGNoZXM7XG4gIH1cblxuICB2ZXJpZnlFeChjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgcmV0dXJuIGVuY2xvc2UoKGNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IHZlcmlmeVByb29mID0gdGhpcy52ZXJpZnlQcm9vZi5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgdmVyaWZ5TGFiZWxzID0gdGhpcy52ZXJpZnlMYWJlbHMuYmluZCh0aGlzKSxcbiAgICAgICAgICAgIHZlcmlmeURlZHVjdGlvbiA9IHRoaXMudmVyaWZ5RGVkdWN0aW9uLmJpbmQodGhpcyksXG4gICAgICAgICAgICB2ZXJpZnlTdXBwb3NpdGlvbnMgPSB0aGlzLnZlcmlmeVN1cHBvc2l0aW9ucy5iaW5kKHRoaXMpO1xuXG4gICAgICByZXR1cm4gYWxsKFtcbiAgICAgICAgdmVyaWZ5TGFiZWxzLFxuICAgICAgICB2ZXJpZnlTdXBwb3NpdGlvbnMsXG4gICAgICAgIHZlcmlmeURlZHVjdGlvbixcbiAgICAgICAgdmVyaWZ5UHJvb2ZcbiAgICAgIF0sIGNvbnRleHQsIGZvcndhcmQsIGJhY2spO1xuICAgIH0sIGNvbnRleHQpO1xuICB9XG5cbiAgdmVyaWZ5TGFiZWxzKGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBjbGFpbVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7Y2xhaW1TdHJpbmd9JyBjbGFpbSdzIGxhYmVscy4uLmApO1xuXG4gICAgY29uc3QgdmVyaWZ5TGFiZWwgPSB0aGlzLnZlcmlmeUxhYmVsLmJpbmQodGhpcyk7XG5cbiAgICByZXR1cm4gZXZlcnkodGhpcy5sYWJlbHMsIHZlcmlmeUxhYmVsLCBjb250ZXh0LCAoY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke2NsYWltU3RyaW5nfScgY2xhaW0ncyBsYWJlbHMuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdmVyaWZ5TGFiZWwobGFiZWwsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBsYWJlbFN0cmluZyA9IGxhYmVsLmdldFN0cmluZygpLFxuICAgICAgICAgIGNsYWltU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke2NsYWltU3RyaW5nfScgY2xhaW0ncyAnJHtsYWJlbFN0cmluZ30nIGxhYmVsLi4uYCk7XG5cbiAgICByZXR1cm4gbGFiZWwudmVyaWZ5KChiYWNrKSA9PiB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7Y2xhaW1TdHJpbmd9JyBjbGFpbSdzICcke2xhYmVsU3RyaW5nfScgbGFiZWwuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdmVyaWZ5UHJvb2YoY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGlmICh0aGlzLnByb29mID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICB9XG5cbiAgICBjb25zdCBjbGFpbVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7Y2xhaW1TdHJpbmd9JyBjbGFpbSdzIHByb29mLi4uYCk7XG5cbiAgICBjb25zdCBzdGF0ZW1lbnQgPSB0aGlzLmRlZHVjdGlvbi5nZXRTdGF0ZW1lbnQoKTtcblxuICAgIHJldHVybiB0aGlzLnByb29mLnZlcmlmeShzdGF0ZW1lbnQsIGNvbnRleHQsIChwcm9vZlZlcmlmaWVzKSA9PiB7XG4gICAgICBpZiAocHJvb2ZWZXJpZmllcykge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7Y2xhaW1TdHJpbmd9JyBjbGFpbSdzIHByb29mLmApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29udGludWF0aW9uKHByb29mVmVyaWZpZXMsIGNvbnRleHQpO1xuICAgIH0pO1xuICB9XG5cbiAgdmVyaWZ5RGVkdWN0aW9uKGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBjbGFpbVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCksIC8vL1xuICAgICAgICAgIGRlZHVjdGlvblN0cmluZyA9IHRoaXMuZGVkdWN0aW9uLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtjbGFpbVN0cmluZ30nIGNsYWltJ3MgJyR7ZGVkdWN0aW9uU3RyaW5nfScgZGVkdWN0aW9uLi4uYCk7XG5cbiAgICByZXR1cm4gdGhpcy5kZWR1Y3Rpb24udmVyaWZ5KGNvbnRleHQsIChjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7Y2xhaW1TdHJpbmd9JyBjbGFpbSdzICcke2RlZHVjdGlvblN0cmluZ30nIGRlZHVjdGlvbi5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB2ZXJpZnlTdXBwb3NpdGlvbihzdXBwb3NpdGlvbiwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGNsYWltU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKSwgLy8vXG4gICAgICAgICAgc3VwcG9zaXRpb25TdHJpbmcgPSBzdXBwb3NpdGlvbi5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7Y2xhaW1TdHJpbmd9JyBjbGFpbSdzICcke3N1cHBvc2l0aW9uU3RyaW5nfScgc3VwcG9zaXRpb24uLi5gKTtcblxuICAgIHJldHVybiBzdXBwb3NpdGlvbi52ZXJpZnkoY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnN0IGZhY3RPclN1YnByb29mID0gc3VwcG9zaXRpb247ICAvLy8vXG5cbiAgICAgIGNvbnRleHQuYXNzaWduQXNzaWdubWVudHMoKTtcblxuICAgICAgY29udGV4dC5hZGRGYWN0T3JTdWJwcm9vZihmYWN0T3JTdWJwcm9vZik7XG5cbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtjbGFpbVN0cmluZ30nIGNsYWltJ3MgJyR7c3VwcG9zaXRpb25TdHJpbmd9JyBzdXBwb3NpdGlvbi5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB2ZXJpZnlTdXBwb3NpdGlvbnMoY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHN1cHBvc2l0aW9uc0xlbmd0aCA9IHRoaXMuc3VwcG9zaXRpb25zLmxlbmd0aDtcblxuICAgIGlmIChzdXBwb3NpdGlvbnNMZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgIH1cblxuICAgIGNvbnN0IGNsYWltU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtjbGFpbVN0cmluZ30nIGNsYWltJ3Mgc3VwcG9zaXRpb25zLi4uYCk7XG5cbiAgICByZXR1cm4gZm9yd2FyZHNFdmVyeSh0aGlzLnN1cHBvc2l0aW9ucywgKHN1cHBvc2l0aW9uLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy52ZXJpZnlTdXBwb3NpdGlvbihzdXBwb3NpdGlvbiwgY29udGV4dCwgZm9yd2FyZCwgYmFjayk7XG4gICAgfSwgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtjbGFpbVN0cmluZ30nIGNsYWltJ3Mgc3VwcG9zaXRpb25zLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIGRpc2NoYXJnZUh5cG90aGVzaXMoaHlwb3RoZXNpcywgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGNsYWltU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKSwgLy8vXG4gICAgICAgICAgaHlwb3RoZXNpc1N0cmluZyA9IGh5cG90aGVzaXMuZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBEaXNjaGFyZ2luZyB0aGUgJyR7Y2xhaW1TdHJpbmd9JyBjbGFpbSdzICcke2h5cG90aGVzaXNTdHJpbmd9JyBoeXBvdGhlc2lzLi4uYCk7XG5cbiAgICByZXR1cm4gaHlwb3RoZXNpcy5kaXNjaGFyZ2UoY29udGV4dCwgKGh5cG90aGVzaXNEaXNjaGFyZ2VzLCBjb250ZXh0KSA9PiB7XG4gICAgICBpZiAoaHlwb3RoZXNpc0Rpc2NoYXJnZXMpIHtcbiAgICAgICAgY29udGV4dC50cmFjZShgLi4uZGlzY2hhcmdlcyB0aGUgJyR7Y2xhaW1TdHJpbmd9JyBjbGFpbSdzICcke2h5cG90aGVzaXNTdHJpbmd9JyBoeXBvdGhlc2lzLmApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29udGludWF0aW9uKGh5cG90aGVzaXNEaXNjaGFyZ2VzLCBjb250ZXh0KTtcbiAgICB9KTtcbiAgfVxuXG4gIGRpc2NoYXJnZUh5cG90aGVzZXMoY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGh5cG90aGVzZXMgPSB0aGlzLmdldEh5cG90aGVzZXMoKSxcbiAgICAgICAgIGh5cG90aGVzZXNMZW5ndGggPSBoeXBvdGhlc2VzLmxlbmd0aDtcblxuICAgIGlmIChoeXBvdGhlc2VzTGVuZ3RoID09PSAwKSB7XG4gICAgICBjb25zdCBoeXBvdGhlc2VzRGlzY2hhcmdlZCA9IHRydWU7XG5cbiAgICAgIHJldHVybiBjb250aW51YXRpb24oaHlwb3RoZXNlc0Rpc2NoYXJnZWQsIGNvbnRleHQpO1xuICAgIH1cblxuICAgIGNvbnN0IGNsYWltU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBEaXNjaGFyZ2luZyB0aGUgJyR7Y2xhaW1TdHJpbmd9JyBjbGFpbSdzIGh5cG90aGVzZXMuLi5gKTtcblxuICAgIGNvbnN0IGRpc2NoYXJnZUh5cG90aGVzaXMgPSB0aGlzLmRpc2NoYXJnZUh5cG90aGVzaXMuYmluZCh0aGlzKTtcblxuICAgIHJldHVybiBldmVyeShoeXBvdGhlc2VzLCBkaXNjaGFyZ2VIeXBvdGhlc2lzLCBjb250ZXh0LCAoaHlwb3RoZXNlc0Rpc2NoYXJnZWQpID0+IHtcbiAgICAgIGlmIChoeXBvdGhlc2VzRGlzY2hhcmdlZCkge1xuICAgICAgICBjb250ZXh0LnRyYWNlKGAuLi5kaXNjaGFyZ2VkIHRoZSAnJHtjbGFpbVN0cmluZ30nIGNsYWltJ3MgaHlwb3RoZXNlcy5gKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihoeXBvdGhlc2VzRGlzY2hhcmdlZCwgY29udGV4dCk7XG4gICAgfSk7XG4gIH1cblxuICB1bmlmeVN0ZXBXaXRoRGVkdWN0aW9uKHN0ZXAsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBydWxlU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBzdGVwU3RyaW5nID0gc3RlcC5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBkZWR1Y3Rpb25TdHJpbmcgPSB0aGlzLmRlZHVjdGlvbi5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzdGVwU3RyaW5nfScgc3RlcCB3aXRoIHRoZSAnJHtydWxlU3RyaW5nfScgcnVsZSdzICcke2RlZHVjdGlvblN0cmluZ30nIGRlZHVjdGlvbi4uLmApO1xuXG4gICAgcmV0dXJuIHRoaXMuZGVkdWN0aW9uLnVuaWZ5U3RlcChzdGVwLCBjb250ZXh0LCAoc3RlcFVuaWZpZXMpID0+IHtcbiAgICAgIGxldCBzdGVwVW5pZmllc1dpdGhEZWR1Y3Rpb24gPSBmYWxzZTtcblxuICAgICAgaWYgKHN0ZXBVbmlmaWVzKSB7XG4gICAgICAgIHN0ZXBVbmlmaWVzV2l0aERlZHVjdGlvbiA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChzdGVwVW5pZmllc1dpdGhEZWR1Y3Rpb24pIHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7c3RlcFN0cmluZ30nIHN0ZXAgd2l0aCB0aGUgJyR7cnVsZVN0cmluZ30nIHJ1bGUncyAnJHtkZWR1Y3Rpb25TdHJpbmd9JyBkZWR1Y3Rpb24uYCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb250aW51YXRpb24oc3RlcFVuaWZpZXNXaXRoRGVkdWN0aW9uLCBjb250ZXh0KTtcbiAgICB9KTtcbiAgfVxuXG4gIHVuaWZ5U3RlcEFuZEZhY3RPclN1YnByb29mcyhzdGVwLCBmYWN0b3JTdWJwcm9vZnMsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICByZXR1cm4gcmVjb25jaWxlKChjb250ZXh0KSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy51bmlmeVN0ZXBXaXRoRGVkdWN0aW9uKHN0ZXAsIGNvbnRleHQsIChzdGF0ZW1lbnRVbmlmaWVzV2l0aERlZHVjdGlvbikgPT4ge1xuICAgICAgICBpZiAoIXN0YXRlbWVudFVuaWZpZXNXaXRoRGVkdWN0aW9uKSB7XG4gICAgICAgICAgY29uc3Qgc3RlcEFuZEZhY3RPclN1YnByb29mc1VuaWZ5ID0gZmFsc2U7XG5cbiAgICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHN0ZXBBbmRGYWN0T3JTdWJwcm9vZnNVbmlmeSwgY29udGV4dCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5kaXNjaGFyZ2VIeXBvdGhlc2VzKGNvbnRleHQsIChoeXBvdGhlc2VzRGlzY2hhcmdlKSA9PiB7XG4gICAgICAgICAgaWYgKCFoeXBvdGhlc2VzRGlzY2hhcmdlKSB7XG4gICAgICAgICAgICBjb25zdCBzdGVwQW5kRmFjdE9yU3VicHJvb2ZzVW5pZnkgPSBmYWxzZTtcblxuICAgICAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzdGVwQW5kRmFjdE9yU3VicHJvb2ZzVW5pZnkpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB0aGlzLnVuaWZ5RmFjdE9yU3VicHJvb2ZzV2l0aFN1cHBvc2l0aW9ucyhmYWN0b3JTdWJwcm9vZnMsIGNvbnRleHQsIChmYWN0b3JTdWJwcm9vZnNVbmlmaWVzV2l0aFN1cHBvc2l0aW9ucykgPT4ge1xuICAgICAgICAgICAgbGV0IHN0ZXBBbmRGYWN0T3JTdWJwcm9vZnNVbmlmeSA9IGZhbHNlO1xuXG4gICAgICAgICAgICBpZiAoZmFjdG9yU3VicHJvb2ZzVW5pZmllc1dpdGhTdXBwb3NpdGlvbnMpIHtcbiAgICAgICAgICAgICAgY29uc3QgaW5mZXJyZWRTdWJzdGl0dXRpb25zU29sdmVkID0gY29udGV4dC5hcmVJbmZlcnJlZFN1YnN0aXR1dGlvbnNTb2x2ZWQoKTtcblxuICAgICAgICAgICAgICBpZiAoaW5mZXJyZWRTdWJzdGl0dXRpb25zU29sdmVkKSB7XG4gICAgICAgICAgICAgICAgc3RlcEFuZEZhY3RPclN1YnByb29mc1VuaWZ5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHN0ZXBBbmRGYWN0T3JTdWJwcm9vZnNVbmlmeSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSwgY29udGV4dCk7XG4gIH1cblxuICB1bmlmeUZhY3RPclN1YnByb29mc1dpdGhTdXBwb3NpdGlvbihmYWN0b3JTdWJwcm9vZnMsIHN1cHBvc2l0aW9uLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgcmV0dXJuIGV4dHJhY3QoZmFjdG9yU3VicHJvb2ZzLFxuICAgICAgKGZhY3RPclN1YnByb29mLCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICAgIHJldHVybiBzdXBwb3NpdGlvbi51bmlmeUZhY3RPclN1YnByb29mKGZhY3RPclN1YnByb29mLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKTtcbiAgICAgIH0sIChmYWN0T3JTdWJwcm9vZiwgYmFjaykgPT4ge1xuICAgICAgICByZXR1cm4gY29udGV4dC5zb2x2ZUluZmVycmVkU3Vic3RpdHV0aW9ucyhmb3J3YXJkLCBiYWNrKTtcbiAgICAgIH0sIChleGNlcHRpb24pID0+IHtcbiAgICAgICAgaWYgKGV4Y2VwdGlvbikge1xuICAgICAgICAgIHJldHVybiBiYWNrKGV4Y2VwdGlvbik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc3VwcG9zaXRpb24udW5pZnlJbmRlcGVuZGVudGx5KGNvbnRleHQsIGZvcndhcmQsIGJhY2spO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICB1bmlmeUZhY3RPclN1YnByb29mc1dpdGhTdXBwb3NpdGlvbnMoZmFjdG9yU3VicHJvb2ZzLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgZmFjdG9yU3VicHJvb2ZzID0gcmV2ZXJzZShmYWN0b3JTdWJwcm9vZnMpOyAvLy9cblxuICAgIHJldHVybiBiYWNrd2FyZHNFdmVyeSh0aGlzLnN1cHBvc2l0aW9ucywgKHN1cHBvc2l0aW9uLCBjb250aW51YXRpb24pID0+IHtcbiAgICAgIHJldHVybiB0aGlzLnVuaWZ5RmFjdE9yU3VicHJvb2ZzV2l0aFN1cHBvc2l0aW9uKGZhY3RvclN1YnByb29mcywgc3VwcG9zaXRpb24sIGNvbnRleHQsIGNvbnRpbnVhdGlvbik7XG4gICAgfSwgY29udGludWF0aW9uKTtcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICBjb25zdCBsYWJlbHNKU09OID0gbGFiZWxzVG9MYWJlbHNKU09OKHRoaXMubGFiZWxzKSxcbiAgICAgICAgICBkZWR1Y3Rpb25KU09OID0gZGVkdWN0aW9uVG9EZWR1Y3Rpb25KU09OKHRoaXMuZGVkdWN0aW9uKSxcbiAgICAgICAgICBzdXBwb3NpdGlvbnNKU09OID0gc3VwcG9zaXRpb25zVG9TdXBwb3NpdGlvbnNKU09OKHRoaXMuc3VwcG9zaXRpb25zKSxcbiAgICAgICAgICBzaWduYXR1cmVKU09OID0gc2lnbmF0dXJlVG9TaWduYXR1cmVKU09OKHRoaXMuc2lnbmF0dXJlKSxcbiAgICAgICAgICBoeXBvdGhlc2VzSlNPTiA9IGh5cG90aGVzZXNUb0h5cG90aGVzZXNKU09OKHRoaXMuaHlwb3RoZXNlcyksXG4gICAgICAgICAgc3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTtcblxuICAgIGxldCBicmVha1BvaW50O1xuXG4gICAgYnJlYWtQb2ludCA9IHRoaXMuZ2V0QnJlYWtQb2ludCgpO1xuXG4gICAgY29uc3QgYnJlYWtQb2ludEpTT04gPSBicmVha1BvaW50VG9CcmVha1BvaW50SlNPTihicmVha1BvaW50KTtcblxuICAgIGJyZWFrUG9pbnQgPSBicmVha1BvaW50SlNPTjsgIC8vL1xuXG4gICAgY29uc3QgbGFiZWxzID0gbGFiZWxzSlNPTiwgIC8vL1xuICAgICAgICAgIGRlZHVjdGlvbiA9IGRlZHVjdGlvbkpTT04sICAvLy9cbiAgICAgICAgICBzdXBwb3NpdGlvbnMgPSBzdXBwb3NpdGlvbnNKU09OLCAgLy8vXG4gICAgICAgICAgc2lnbmF0dXJlID0gc2lnbmF0dXJlSlNPTiwgIC8vL1xuICAgICAgICAgIGh5cG90aGVzZXMgPSBoeXBvdGhlc2VzSlNPTiwgIC8vL1xuICAgICAgICAgIGpzb24gPSB7XG4gICAgICAgICAgICBzdHJpbmcsXG4gICAgICAgICAgICBicmVha1BvaW50LFxuICAgICAgICAgICAgbGFiZWxzLFxuICAgICAgICAgICAgZGVkdWN0aW9uLFxuICAgICAgICAgICAgc3VwcG9zaXRpb25zLFxuICAgICAgICAgICAgc2lnbmF0dXJlLFxuICAgICAgICAgICAgaHlwb3RoZXNlc1xuICAgICAgICAgIH07XG5cbiAgICByZXR1cm4ganNvbjtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tSlNPTihDbGFzcywganNvbiwgY29udGV4dCkge1xuICAgIGNvbnN0IGxhYmVscyA9IGxhYmVsc0Zyb21KU09OKGpzb24sIGNvbnRleHQpLFxuICAgICAgICAgIGRlZHVjdGlvbiA9IGRlZHVjdGlvbkZyb21KU09OKGpzb24sIGNvbnRleHQpLFxuICAgICAgICAgIHN1cHBvc2l0aW9ucyA9IHN1cHBvc2l0aW9uc0Zyb21KU09OKGpzb24sIGNvbnRleHQpLFxuICAgICAgICAgIHNpZ25hdHVyZSA9IHNpZ25hdHVyZUZyb21KU09OKGpzb24sIGNvbnRleHQpLFxuICAgICAgICAgIGh5cG90aGVzZXMgPSBoeXBvdGhlc2VzRnJvbUpTT04oanNvbiwgY29udGV4dCksXG4gICAgICAgICAgY2xhaW1TdHJpbmcgPSBjbGFpbVN0cmluZ0Zyb21MYWJlbHNTaWduYXR1cmVTdXBwb3NpdGlvbnNBbmREZWR1Y3Rpb24obGFiZWxzLCBzaWduYXR1cmUsIHN1cHBvc2l0aW9ucywgZGVkdWN0aW9uKSxcbiAgICAgICAgICBzdHJpbmcgPSBjbGFpbVN0cmluZywgLy8vXG4gICAgICAgICAgbm9kZSA9IG51bGwsXG4gICAgICAgICAgYnJlYWtQb2ludCA9IGJyZWFrUG9pbnRGcm9tSlNPTihqc29uKSxcbiAgICAgICAgICBwcm9vZiA9IG51bGwsXG4gICAgICAgICAgY2xhaW0gPSBuZXcgQ2xhc3MoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCBsYWJlbHMsIHN1cHBvc2l0aW9ucywgZGVkdWN0aW9uLCBwcm9vZiwgc2lnbmF0dXJlLCBoeXBvdGhlc2VzKTtcblxuICAgIHJldHVybiBjbGFpbTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbIkNsYWltIiwicmV2ZXJzZSIsImFycmF5VXRpbGl0aWVzIiwiYnJlYWtQb2ludEZyb21KU09OIiwiYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04iLCJicmVha1BvaW50VXRpbGl0aWVzIiwiYWxsIiwiZXZlcnkiLCJleHRyYWN0IiwiZm9yd2FyZHNFdmVyeSIsImJhY2t3YXJkc0V2ZXJ5IiwiY29udGludWF0aW9uVXRpbGl0aWVzIiwiRWxlbWVudCIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsImxhYmVscyIsInN1cHBvc2l0aW9ucyIsImRlZHVjdGlvbiIsInByb29mIiwic2lnbmF0dXJlIiwiaHlwb3RoZXNlcyIsImdldExhYmVscyIsImdldFN1cHBvc2l0aW9ucyIsImdldERlZHVjdGlvbiIsImdldFByb29mIiwiZ2V0U2lnbmF0dXJlIiwiZ2V0SHlwb3RoZXNlcyIsInNldEh5cG90aGVzZXMiLCJnZXRTdXBwb3NpdGlvbiIsImluZGV4Iiwic3VwcG9zaXRpb24iLCJpc1NhdGlzZmlhYmxlIiwic2F0aXNmaWFibGUiLCJpc0h5cG90aGV0aWNhbCIsImh5cG90aGVzZXNMZW5ndGgiLCJsZW5ndGgiLCJoeXBvdGhldGljYWwiLCJtYXRjaE1ldGF2YXJpYWJsZU5vZGUiLCJtZXRhdmFyaWFibGVOb2RlIiwibWV0YXZhcmlhYmxlTm9kZU1hdGNoZXMiLCJzb21lIiwibGFiZWwiLCJ2ZXJpZnlFeCIsImZvcndhcmQiLCJiYWNrIiwiZW5jbG9zZSIsInZlcmlmeVByb29mIiwiYmluZCIsInZlcmlmeUxhYmVscyIsInZlcmlmeURlZHVjdGlvbiIsInZlcmlmeVN1cHBvc2l0aW9ucyIsImNsYWltU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJ2ZXJpZnlMYWJlbCIsImRlYnVnIiwibGFiZWxTdHJpbmciLCJ2ZXJpZnkiLCJzdGF0ZW1lbnQiLCJnZXRTdGF0ZW1lbnQiLCJwcm9vZlZlcmlmaWVzIiwiY29udGludWF0aW9uIiwiZGVkdWN0aW9uU3RyaW5nIiwidmVyaWZ5U3VwcG9zaXRpb24iLCJzdXBwb3NpdGlvblN0cmluZyIsImZhY3RPclN1YnByb29mIiwiYXNzaWduQXNzaWdubWVudHMiLCJhZGRGYWN0T3JTdWJwcm9vZiIsInN1cHBvc2l0aW9uc0xlbmd0aCIsImRpc2NoYXJnZUh5cG90aGVzaXMiLCJoeXBvdGhlc2lzIiwiaHlwb3RoZXNpc1N0cmluZyIsImRpc2NoYXJnZSIsImh5cG90aGVzaXNEaXNjaGFyZ2VzIiwiZGlzY2hhcmdlSHlwb3RoZXNlcyIsImh5cG90aGVzZXNEaXNjaGFyZ2VkIiwidW5pZnlTdGVwV2l0aERlZHVjdGlvbiIsInN0ZXAiLCJydWxlU3RyaW5nIiwic3RlcFN0cmluZyIsInVuaWZ5U3RlcCIsInN0ZXBVbmlmaWVzIiwic3RlcFVuaWZpZXNXaXRoRGVkdWN0aW9uIiwidW5pZnlTdGVwQW5kRmFjdE9yU3VicHJvb2ZzIiwiZmFjdG9yU3VicHJvb2ZzIiwicmVjb25jaWxlIiwic3RhdGVtZW50VW5pZmllc1dpdGhEZWR1Y3Rpb24iLCJzdGVwQW5kRmFjdE9yU3VicHJvb2ZzVW5pZnkiLCJoeXBvdGhlc2VzRGlzY2hhcmdlIiwidW5pZnlGYWN0T3JTdWJwcm9vZnNXaXRoU3VwcG9zaXRpb25zIiwiZmFjdG9yU3VicHJvb2ZzVW5pZmllc1dpdGhTdXBwb3NpdGlvbnMiLCJpbmZlcnJlZFN1YnN0aXR1dGlvbnNTb2x2ZWQiLCJhcmVJbmZlcnJlZFN1YnN0aXR1dGlvbnNTb2x2ZWQiLCJ1bmlmeUZhY3RPclN1YnByb29mc1dpdGhTdXBwb3NpdGlvbiIsInVuaWZ5RmFjdE9yU3VicHJvb2YiLCJzb2x2ZUluZmVycmVkU3Vic3RpdHV0aW9ucyIsImV4Y2VwdGlvbiIsInVuaWZ5SW5kZXBlbmRlbnRseSIsInRvSlNPTiIsImxhYmVsc0pTT04iLCJsYWJlbHNUb0xhYmVsc0pTT04iLCJkZWR1Y3Rpb25KU09OIiwiZGVkdWN0aW9uVG9EZWR1Y3Rpb25KU09OIiwic3VwcG9zaXRpb25zSlNPTiIsInN1cHBvc2l0aW9uc1RvU3VwcG9zaXRpb25zSlNPTiIsInNpZ25hdHVyZUpTT04iLCJzaWduYXR1cmVUb1NpZ25hdHVyZUpTT04iLCJoeXBvdGhlc2VzSlNPTiIsImh5cG90aGVzZXNUb0h5cG90aGVzZXNKU09OIiwiZ2V0QnJlYWtQb2ludCIsImJyZWFrUG9pbnRKU09OIiwianNvbiIsImZyb21KU09OIiwiQ2xhc3MiLCJsYWJlbHNGcm9tSlNPTiIsImRlZHVjdGlvbkZyb21KU09OIiwic3VwcG9zaXRpb25zRnJvbUpTT04iLCJzaWduYXR1cmVGcm9tSlNPTiIsImh5cG90aGVzZXNGcm9tSlNPTiIsImNsYWltU3RyaW5nRnJvbUxhYmVsc1NpZ25hdHVyZVN1cHBvc2l0aW9uc0FuZERlZHVjdGlvbiIsImNsYWltIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFzQkE7OztlQUFxQkE7OzsyQkFwQlU7Z0NBQ3FDO3lCQUVqQzt3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
|
|
257
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2NsYWltLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcbmltcG9ydCB7IEVsZW1lbnQsIGJyZWFrUG9pbnRVdGlsaXRpZXMsIGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IHsgZW5jbG9zZSwgcmVjb25jaWxlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9jb250ZXh0XCI7XG5pbXBvcnQgeyBjbGFpbVN0cmluZ0Zyb21MYWJlbHNTaWduYXR1cmVTdXBwb3NpdGlvbnNBbmREZWR1Y3Rpb24gfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3N0cmluZ1wiO1xuaW1wb3J0IHsgbGFiZWxzRnJvbUpTT04sXG4gICAgICAgICBkZWR1Y3Rpb25Gcm9tSlNPTixcbiAgICAgICAgIHNpZ25hdHVyZUZyb21KU09OLFxuICAgICAgICAgbGFiZWxzVG9MYWJlbHNKU09OLFxuICAgICAgICAgaHlwb3RoZXNlc0Zyb21KU09OLFxuICAgICAgICAgc3VwcG9zaXRpb25zRnJvbUpTT04sXG4gICAgICAgICBkZWR1Y3Rpb25Ub0RlZHVjdGlvbkpTT04sXG4gICAgICAgICBzaWduYXR1cmVUb1NpZ25hdHVyZUpTT04sXG4gICAgICAgICBoeXBvdGhlc2VzVG9IeXBvdGhlc2VzSlNPTixcbiAgICAgICAgIHN1cHBvc2l0aW9uc1RvU3VwcG9zaXRpb25zSlNPTiB9IGZyb20gXCIuLi91dGlsaXRpZXMvanNvblwiO1xuXG5jb25zdCB7IHJldmVyc2UgfSA9IGFycmF5VXRpbGl0aWVzLFxuICAgICAgeyBicmVha1BvaW50RnJvbUpTT04sIGJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OIH0gPSBicmVha1BvaW50VXRpbGl0aWVzLFxuICAgICAgeyBhbGwsIGV2ZXJ5LCBleHRyYWN0LCBmb3J3YXJkc0V2ZXJ5LCBiYWNrd2FyZHNFdmVyeSB9ID0gY29udGludWF0aW9uVXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDbGFpbSBleHRlbmRzIEVsZW1lbnQge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIGxhYmVscywgc3VwcG9zaXRpb25zLCBkZWR1Y3Rpb24sIHByb29mLCBzaWduYXR1cmUsIGh5cG90aGVzZXMpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy5sYWJlbHMgPSBsYWJlbHM7XG4gICAgdGhpcy5zdXBwb3NpdGlvbnMgPSBzdXBwb3NpdGlvbnM7XG4gICAgdGhpcy5kZWR1Y3Rpb24gPSBkZWR1Y3Rpb247XG4gICAgdGhpcy5wcm9vZiA9IHByb29mO1xuICAgIHRoaXMuc2lnbmF0dXJlID0gc2lnbmF0dXJlO1xuICAgIHRoaXMuaHlwb3RoZXNlcyA9IGh5cG90aGVzZXM7XG4gIH1cblxuICBnZXRMYWJlbHMoKSB7XG4gICAgcmV0dXJuIHRoaXMubGFiZWxzO1xuICB9XG5cbiAgZ2V0U3VwcG9zaXRpb25zKCkge1xuICAgIHJldHVybiB0aGlzLnN1cHBvc2l0aW9ucztcbiAgfVxuXG4gIGdldERlZHVjdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5kZWR1Y3Rpb247XG4gIH1cblxuICBnZXRQcm9vZigpIHtcbiAgICByZXR1cm4gdGhpcy5wcm9vZjtcbiAgfVxuXG4gIGdldFNpZ25hdHVyZSgpIHtcbiAgICByZXR1cm4gdGhpcy5zaWduYXR1cmU7XG4gIH1cblxuICBnZXRIeXBvdGhlc2VzKCkge1xuICAgIHJldHVybiB0aGlzLmh5cG90aGVzZXM7XG4gIH1cblxuICBzZXRIeXBvdGhlc2VzKGh5cG90aGVzZXMpIHtcbiAgICB0aGlzLmh5cG90aGVzZXMgPSBoeXBvdGhlc2VzO1xuICB9XG5cbiAgZ2V0U3VwcG9zaXRpb24oaW5kZXgpIHtcbiAgICBjb25zdCBzdXBwb3NpdGlvbiA9IHRoaXMuc3VwcG9zaXRpb25zW2luZGV4XSB8fCBudWxsO1xuXG4gICAgcmV0dXJuIHN1cHBvc2l0aW9uO1xuICB9XG5cbiAgaXNTYXRpc2ZpYWJsZSgpIHtcbiAgICBjb25zdCBzYXRpc2ZpYWJsZSA9IGZhbHNlO1xuXG4gICAgcmV0dXJuIHNhdGlzZmlhYmxlO1xuICB9XG5cbiAgaXNIeXBvdGhldGljYWwoKSB7XG4gICAgY29uc3QgaHlwb3RoZXNlc0xlbmd0aCA9IHRoaXMuaHlwb3RoZXNlcy5sZW5ndGgsXG4gICAgICAgICAgaHlwb3RoZXRpY2FsID0gKGh5cG90aGVzZXNMZW5ndGggPiAwKTtcblxuICAgIHJldHVybiBoeXBvdGhldGljYWw7XG4gIH1cblxuICBtYXRjaE1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSkge1xuICAgIGNvbnN0IG1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzID0gdGhpcy5sYWJlbHMuc29tZSgobGFiZWwpID0+IHtcbiAgICAgIGNvbnN0IG1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzID0gbGFiZWwubWF0Y2hNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpO1xuXG4gICAgICBpZiAobWV0YXZhcmlhYmxlTm9kZU1hdGNoZXMpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbWV0YXZhcmlhYmxlTm9kZU1hdGNoZXM7XG4gIH1cblxuICB2ZXJpZnlFeChjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgcmV0dXJuIGVuY2xvc2UoKGNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IHZlcmlmeVByb29mID0gdGhpcy52ZXJpZnlQcm9vZi5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgdmVyaWZ5TGFiZWxzID0gdGhpcy52ZXJpZnlMYWJlbHMuYmluZCh0aGlzKSxcbiAgICAgICAgICAgIHZlcmlmeURlZHVjdGlvbiA9IHRoaXMudmVyaWZ5RGVkdWN0aW9uLmJpbmQodGhpcyksXG4gICAgICAgICAgICB2ZXJpZnlTdXBwb3NpdGlvbnMgPSB0aGlzLnZlcmlmeVN1cHBvc2l0aW9ucy5iaW5kKHRoaXMpO1xuXG4gICAgICByZXR1cm4gYWxsKFtcbiAgICAgICAgdmVyaWZ5TGFiZWxzLFxuICAgICAgICB2ZXJpZnlTdXBwb3NpdGlvbnMsXG4gICAgICAgIHZlcmlmeURlZHVjdGlvbixcbiAgICAgICAgdmVyaWZ5UHJvb2ZcbiAgICAgIF0sIGNvbnRleHQsIGZvcndhcmQsIGJhY2spO1xuICAgIH0sIGNvbnRleHQpO1xuICB9XG5cbiAgdmVyaWZ5TGFiZWxzKGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBjbGFpbVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7Y2xhaW1TdHJpbmd9JyBjbGFpbSdzIGxhYmVscy4uLmApO1xuXG4gICAgY29uc3QgdmVyaWZ5TGFiZWwgPSB0aGlzLnZlcmlmeUxhYmVsLmJpbmQodGhpcyk7XG5cbiAgICByZXR1cm4gZXZlcnkodGhpcy5sYWJlbHMsIHZlcmlmeUxhYmVsLCBjb250ZXh0LCAoY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke2NsYWltU3RyaW5nfScgY2xhaW0ncyBsYWJlbHMuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdmVyaWZ5TGFiZWwobGFiZWwsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBsYWJlbFN0cmluZyA9IGxhYmVsLmdldFN0cmluZygpLFxuICAgICAgICAgIGNsYWltU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke2NsYWltU3RyaW5nfScgY2xhaW0ncyAnJHtsYWJlbFN0cmluZ30nIGxhYmVsLi4uYCk7XG5cbiAgICByZXR1cm4gbGFiZWwudmVyaWZ5KChiYWNrKSA9PiB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7Y2xhaW1TdHJpbmd9JyBjbGFpbSdzICcke2xhYmVsU3RyaW5nfScgbGFiZWwuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdmVyaWZ5UHJvb2YoY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGlmICh0aGlzLnByb29mID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICB9XG5cbiAgICBjb25zdCBjbGFpbVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7Y2xhaW1TdHJpbmd9JyBjbGFpbSdzIHByb29mLi4uYCk7XG5cbiAgICBjb25zdCBzdGF0ZW1lbnQgPSB0aGlzLmRlZHVjdGlvbi5nZXRTdGF0ZW1lbnQoKTtcblxuICAgIHJldHVybiB0aGlzLnByb29mLnZlcmlmeShzdGF0ZW1lbnQsIGNvbnRleHQsIChwcm9vZlZlcmlmaWVzKSA9PiB7XG4gICAgICBpZiAocHJvb2ZWZXJpZmllcykge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7Y2xhaW1TdHJpbmd9JyBjbGFpbSdzIHByb29mLmApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29udGludWF0aW9uKHByb29mVmVyaWZpZXMsIGNvbnRleHQpO1xuICAgIH0pO1xuICB9XG5cbiAgdmVyaWZ5RGVkdWN0aW9uKGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBjbGFpbVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCksIC8vL1xuICAgICAgICAgIGRlZHVjdGlvblN0cmluZyA9IHRoaXMuZGVkdWN0aW9uLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtjbGFpbVN0cmluZ30nIGNsYWltJ3MgJyR7ZGVkdWN0aW9uU3RyaW5nfScgZGVkdWN0aW9uLi4uYCk7XG5cbiAgICByZXR1cm4gdGhpcy5kZWR1Y3Rpb24udmVyaWZ5KGNvbnRleHQsIChjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7Y2xhaW1TdHJpbmd9JyBjbGFpbSdzICcke2RlZHVjdGlvblN0cmluZ30nIGRlZHVjdGlvbi5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB2ZXJpZnlTdXBwb3NpdGlvbihzdXBwb3NpdGlvbiwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGNsYWltU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKSwgLy8vXG4gICAgICAgICAgc3VwcG9zaXRpb25TdHJpbmcgPSBzdXBwb3NpdGlvbi5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7Y2xhaW1TdHJpbmd9JyBjbGFpbSdzICcke3N1cHBvc2l0aW9uU3RyaW5nfScgc3VwcG9zaXRpb24uLi5gKTtcblxuICAgIHJldHVybiBzdXBwb3NpdGlvbi52ZXJpZnkoY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnN0IGZhY3RPclN1YnByb29mID0gc3VwcG9zaXRpb247ICAvLy8vXG5cbiAgICAgIGNvbnRleHQuYXNzaWduQXNzaWdubWVudHMoKTtcblxuICAgICAgY29udGV4dC5hZGRGYWN0T3JTdWJwcm9vZihmYWN0T3JTdWJwcm9vZik7XG5cbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtjbGFpbVN0cmluZ30nIGNsYWltJ3MgJyR7c3VwcG9zaXRpb25TdHJpbmd9JyBzdXBwb3NpdGlvbi5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB2ZXJpZnlTdXBwb3NpdGlvbnMoY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHN1cHBvc2l0aW9uc0xlbmd0aCA9IHRoaXMuc3VwcG9zaXRpb25zLmxlbmd0aDtcblxuICAgIGlmIChzdXBwb3NpdGlvbnNMZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgIH1cblxuICAgIGNvbnN0IGNsYWltU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtjbGFpbVN0cmluZ30nIGNsYWltJ3Mgc3VwcG9zaXRpb25zLi4uYCk7XG5cbiAgICByZXR1cm4gZm9yd2FyZHNFdmVyeSh0aGlzLnN1cHBvc2l0aW9ucywgKHN1cHBvc2l0aW9uLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy52ZXJpZnlTdXBwb3NpdGlvbihzdXBwb3NpdGlvbiwgY29udGV4dCwgZm9yd2FyZCwgYmFjayk7XG4gICAgfSwgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtjbGFpbVN0cmluZ30nIGNsYWltJ3Mgc3VwcG9zaXRpb25zLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIGRpc2NoYXJnZUh5cG90aGVzaXMoaHlwb3RoZXNpcywgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGNsYWltU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKSwgLy8vXG4gICAgICAgICAgaHlwb3RoZXNpc1N0cmluZyA9IGh5cG90aGVzaXMuZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBEaXNjaGFyZ2luZyB0aGUgJyR7Y2xhaW1TdHJpbmd9JyBjbGFpbSdzICcke2h5cG90aGVzaXNTdHJpbmd9JyBoeXBvdGhlc2lzLi4uYCk7XG5cbiAgICByZXR1cm4gaHlwb3RoZXNpcy5kaXNjaGFyZ2UoY29udGV4dCwgKGh5cG90aGVzaXNEaXNjaGFyZ2VzLCBjb250ZXh0KSA9PiB7XG4gICAgICBpZiAoaHlwb3RoZXNpc0Rpc2NoYXJnZXMpIHtcbiAgICAgICAgY29udGV4dC50cmFjZShgLi4uZGlzY2hhcmdlcyB0aGUgJyR7Y2xhaW1TdHJpbmd9JyBjbGFpbSdzICcke2h5cG90aGVzaXNTdHJpbmd9JyBoeXBvdGhlc2lzLmApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29udGludWF0aW9uKGh5cG90aGVzaXNEaXNjaGFyZ2VzLCBjb250ZXh0KTtcbiAgICB9KTtcbiAgfVxuXG4gIGRpc2NoYXJnZUh5cG90aGVzZXMoY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGh5cG90aGVzZXMgPSB0aGlzLmdldEh5cG90aGVzZXMoKSxcbiAgICAgICAgIGh5cG90aGVzZXNMZW5ndGggPSBoeXBvdGhlc2VzLmxlbmd0aDtcblxuICAgIGlmIChoeXBvdGhlc2VzTGVuZ3RoID09PSAwKSB7XG4gICAgICBjb25zdCBoeXBvdGhlc2VzRGlzY2hhcmdlZCA9IHRydWU7XG5cbiAgICAgIHJldHVybiBjb250aW51YXRpb24oaHlwb3RoZXNlc0Rpc2NoYXJnZWQsIGNvbnRleHQpO1xuICAgIH1cblxuICAgIGNvbnN0IGNsYWltU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBEaXNjaGFyZ2luZyB0aGUgJyR7Y2xhaW1TdHJpbmd9JyBjbGFpbSdzIGh5cG90aGVzZXMuLi5gKTtcblxuICAgIGNvbnN0IGRpc2NoYXJnZUh5cG90aGVzaXMgPSB0aGlzLmRpc2NoYXJnZUh5cG90aGVzaXMuYmluZCh0aGlzKTtcblxuICAgIHJldHVybiBldmVyeShoeXBvdGhlc2VzLCBkaXNjaGFyZ2VIeXBvdGhlc2lzLCBjb250ZXh0LCAoaHlwb3RoZXNlc0Rpc2NoYXJnZWQpID0+IHtcbiAgICAgIGlmIChoeXBvdGhlc2VzRGlzY2hhcmdlZCkge1xuICAgICAgICBjb250ZXh0LnRyYWNlKGAuLi5kaXNjaGFyZ2VkIHRoZSAnJHtjbGFpbVN0cmluZ30nIGNsYWltJ3MgaHlwb3RoZXNlcy5gKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihoeXBvdGhlc2VzRGlzY2hhcmdlZCwgY29udGV4dCk7XG4gICAgfSk7XG4gIH1cblxuICB1bmlmeVN0ZXBXaXRoRGVkdWN0aW9uKHN0ZXAsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBydWxlU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBzdGVwU3RyaW5nID0gc3RlcC5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBkZWR1Y3Rpb25TdHJpbmcgPSB0aGlzLmRlZHVjdGlvbi5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzdGVwU3RyaW5nfScgc3RlcCB3aXRoIHRoZSAnJHtydWxlU3RyaW5nfScgcnVsZSdzICcke2RlZHVjdGlvblN0cmluZ30nIGRlZHVjdGlvbi4uLmApO1xuXG4gICAgcmV0dXJuIHRoaXMuZGVkdWN0aW9uLnVuaWZ5U3RlcChzdGVwLCBjb250ZXh0LCAoc3RlcFVuaWZpZXMpID0+IHtcbiAgICAgIGxldCBzdGVwVW5pZmllc1dpdGhEZWR1Y3Rpb24gPSBmYWxzZTtcblxuICAgICAgaWYgKHN0ZXBVbmlmaWVzKSB7XG4gICAgICAgIHN0ZXBVbmlmaWVzV2l0aERlZHVjdGlvbiA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChzdGVwVW5pZmllc1dpdGhEZWR1Y3Rpb24pIHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7c3RlcFN0cmluZ30nIHN0ZXAgd2l0aCB0aGUgJyR7cnVsZVN0cmluZ30nIHJ1bGUncyAnJHtkZWR1Y3Rpb25TdHJpbmd9JyBkZWR1Y3Rpb24uYCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb250aW51YXRpb24oc3RlcFVuaWZpZXNXaXRoRGVkdWN0aW9uLCBjb250ZXh0KTtcbiAgICB9KTtcbiAgfVxuXG4gIHVuaWZ5U3RlcEFuZEZhY3RPclN1YnByb29mcyhzdGVwLCBmYWN0b3JTdWJwcm9vZnMsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICByZXR1cm4gcmVjb25jaWxlKChjb250ZXh0KSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy51bmlmeVN0ZXBXaXRoRGVkdWN0aW9uKHN0ZXAsIGNvbnRleHQsIChzdGF0ZW1lbnRVbmlmaWVzV2l0aERlZHVjdGlvbikgPT4ge1xuICAgICAgICBpZiAoIXN0YXRlbWVudFVuaWZpZXNXaXRoRGVkdWN0aW9uKSB7XG4gICAgICAgICAgY29uc3Qgc3RlcEFuZEZhY3RPclN1YnByb29mc1VuaWZ5ID0gZmFsc2U7XG5cbiAgICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHN0ZXBBbmRGYWN0T3JTdWJwcm9vZnNVbmlmeSwgY29udGV4dCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5kaXNjaGFyZ2VIeXBvdGhlc2VzKGNvbnRleHQsIChoeXBvdGhlc2VzRGlzY2hhcmdlKSA9PiB7XG4gICAgICAgICAgaWYgKCFoeXBvdGhlc2VzRGlzY2hhcmdlKSB7XG4gICAgICAgICAgICBjb25zdCBzdGVwQW5kRmFjdE9yU3VicHJvb2ZzVW5pZnkgPSBmYWxzZTtcblxuICAgICAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzdGVwQW5kRmFjdE9yU3VicHJvb2ZzVW5pZnkpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB0aGlzLnVuaWZ5RmFjdE9yU3VicHJvb2ZzV2l0aFN1cHBvc2l0aW9ucyhmYWN0b3JTdWJwcm9vZnMsIGNvbnRleHQsIChmYWN0b3JTdWJwcm9vZnNVbmlmaWVzV2l0aFN1cHBvc2l0aW9ucykgPT4ge1xuICAgICAgICAgICAgbGV0IHN0ZXBBbmRGYWN0T3JTdWJwcm9vZnNVbmlmeSA9IGZhbHNlO1xuXG4gICAgICAgICAgICBpZiAoZmFjdG9yU3VicHJvb2ZzVW5pZmllc1dpdGhTdXBwb3NpdGlvbnMpIHtcbiAgICAgICAgICAgICAgY29uc3QgaW5mZXJyZWRTdWJzdGl0dXRpb25zU29sdmVkID0gY29udGV4dC5hcmVJbmZlcnJlZFN1YnN0aXR1dGlvbnNTb2x2ZWQoKTtcblxuICAgICAgICAgICAgICBpZiAoaW5mZXJyZWRTdWJzdGl0dXRpb25zU29sdmVkKSB7XG4gICAgICAgICAgICAgICAgc3RlcEFuZEZhY3RPclN1YnByb29mc1VuaWZ5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHN0ZXBBbmRGYWN0T3JTdWJwcm9vZnNVbmlmeSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSwgY29udGV4dCk7XG4gIH1cblxuICB1bmlmeUZhY3RPclN1YnByb29mc1dpdGhTdXBwb3NpdGlvbihmYWN0T3JTdWJwcm9vZnMsIHN1cHBvc2l0aW9uLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgcmV0dXJuIGV4dHJhY3QoZmFjdE9yU3VicHJvb2ZzLFxuICAgICAgKGZhY3RPclN1YnByb29mLCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICAgIHJldHVybiBzdXBwb3NpdGlvbi51bmlmeUZhY3RPclN1YnByb29mKGZhY3RPclN1YnByb29mLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKTtcbiAgICAgIH0sIChmYWN0T3JTdWJwcm9vZnMsIGZhY3RPclN1YnByb29mLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICAgIHJldHVybiBjb250ZXh0LnNvbHZlSW5mZXJyZWRTdWJzdGl0dXRpb25zKChiYWNrKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGZvcndhcmQoZmFjdE9yU3VicHJvb2ZzLCBjb250ZXh0LCBiYWNrKTtcbiAgICAgICAgfSwgYmFjayk7XG4gICAgICB9LCAoZXhjZXB0aW9uKSA9PiB7XG4gICAgICAgIGlmKGV4Y2VwdGlvbikge1xuICAgICAgICAgIHJldHVybiBiYWNrKGV4Y2VwdGlvbik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc3VwcG9zaXRpb24udW5pZnlJbmRlcGVuZGVudGx5KGNvbnRleHQsIChjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGZvcndhcmQoZmFjdE9yU3VicHJvb2ZzLCBjb250ZXh0LCBiYWNrKTtcbiAgICAgICAgfSwgYmFjayk7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIHVuaWZ5RmFjdE9yU3VicHJvb2ZzV2l0aFN1cHBvc2l0aW9ucyhmYWN0T3JTdWJwcm9vZnMsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBmYWN0T3JTdWJwcm9vZnMgPSByZXZlcnNlKGZhY3RPclN1YnByb29mcyk7IC8vL1xuXG4gICAgcmV0dXJuIGJhY2t3YXJkc0V2ZXJ5KHRoaXMuc3VwcG9zaXRpb25zLCAoc3VwcG9zaXRpb24sIGZhY3RPclN1YnByb29mcywgY29udGV4dCwgZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMudW5pZnlGYWN0T3JTdWJwcm9vZnNXaXRoU3VwcG9zaXRpb24oZmFjdE9yU3VicHJvb2ZzLCBzdXBwb3NpdGlvbiwgY29udGV4dCwgZm9yd2FyZCwgYmFjayk7XG4gICAgfSwgZmFjdE9yU3VicHJvb2ZzLCBjb250ZXh0LCAoZmFjdE9yU3VicHJvb2ZzLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICBjb25zdCBsYWJlbHNKU09OID0gbGFiZWxzVG9MYWJlbHNKU09OKHRoaXMubGFiZWxzKSxcbiAgICAgICAgICBkZWR1Y3Rpb25KU09OID0gZGVkdWN0aW9uVG9EZWR1Y3Rpb25KU09OKHRoaXMuZGVkdWN0aW9uKSxcbiAgICAgICAgICBzdXBwb3NpdGlvbnNKU09OID0gc3VwcG9zaXRpb25zVG9TdXBwb3NpdGlvbnNKU09OKHRoaXMuc3VwcG9zaXRpb25zKSxcbiAgICAgICAgICBzaWduYXR1cmVKU09OID0gc2lnbmF0dXJlVG9TaWduYXR1cmVKU09OKHRoaXMuc2lnbmF0dXJlKSxcbiAgICAgICAgICBoeXBvdGhlc2VzSlNPTiA9IGh5cG90aGVzZXNUb0h5cG90aGVzZXNKU09OKHRoaXMuaHlwb3RoZXNlcyksXG4gICAgICAgICAgc3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTtcblxuICAgIGxldCBicmVha1BvaW50O1xuXG4gICAgYnJlYWtQb2ludCA9IHRoaXMuZ2V0QnJlYWtQb2ludCgpO1xuXG4gICAgY29uc3QgYnJlYWtQb2ludEpTT04gPSBicmVha1BvaW50VG9CcmVha1BvaW50SlNPTihicmVha1BvaW50KTtcblxuICAgIGJyZWFrUG9pbnQgPSBicmVha1BvaW50SlNPTjsgIC8vL1xuXG4gICAgY29uc3QgbGFiZWxzID0gbGFiZWxzSlNPTiwgIC8vL1xuICAgICAgICAgIGRlZHVjdGlvbiA9IGRlZHVjdGlvbkpTT04sICAvLy9cbiAgICAgICAgICBzdXBwb3NpdGlvbnMgPSBzdXBwb3NpdGlvbnNKU09OLCAgLy8vXG4gICAgICAgICAgc2lnbmF0dXJlID0gc2lnbmF0dXJlSlNPTiwgIC8vL1xuICAgICAgICAgIGh5cG90aGVzZXMgPSBoeXBvdGhlc2VzSlNPTiwgIC8vL1xuICAgICAgICAgIGpzb24gPSB7XG4gICAgICAgICAgICBzdHJpbmcsXG4gICAgICAgICAgICBicmVha1BvaW50LFxuICAgICAgICAgICAgbGFiZWxzLFxuICAgICAgICAgICAgZGVkdWN0aW9uLFxuICAgICAgICAgICAgc3VwcG9zaXRpb25zLFxuICAgICAgICAgICAgc2lnbmF0dXJlLFxuICAgICAgICAgICAgaHlwb3RoZXNlc1xuICAgICAgICAgIH07XG5cbiAgICByZXR1cm4ganNvbjtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tSlNPTihDbGFzcywganNvbiwgY29udGV4dCkge1xuICAgIGNvbnN0IGxhYmVscyA9IGxhYmVsc0Zyb21KU09OKGpzb24sIGNvbnRleHQpLFxuICAgICAgICAgIGRlZHVjdGlvbiA9IGRlZHVjdGlvbkZyb21KU09OKGpzb24sIGNvbnRleHQpLFxuICAgICAgICAgIHN1cHBvc2l0aW9ucyA9IHN1cHBvc2l0aW9uc0Zyb21KU09OKGpzb24sIGNvbnRleHQpLFxuICAgICAgICAgIHNpZ25hdHVyZSA9IHNpZ25hdHVyZUZyb21KU09OKGpzb24sIGNvbnRleHQpLFxuICAgICAgICAgIGh5cG90aGVzZXMgPSBoeXBvdGhlc2VzRnJvbUpTT04oanNvbiwgY29udGV4dCksXG4gICAgICAgICAgY2xhaW1TdHJpbmcgPSBjbGFpbVN0cmluZ0Zyb21MYWJlbHNTaWduYXR1cmVTdXBwb3NpdGlvbnNBbmREZWR1Y3Rpb24obGFiZWxzLCBzaWduYXR1cmUsIHN1cHBvc2l0aW9ucywgZGVkdWN0aW9uKSxcbiAgICAgICAgICBzdHJpbmcgPSBjbGFpbVN0cmluZywgLy8vXG4gICAgICAgICAgbm9kZSA9IG51bGwsXG4gICAgICAgICAgYnJlYWtQb2ludCA9IGJyZWFrUG9pbnRGcm9tSlNPTihqc29uKSxcbiAgICAgICAgICBwcm9vZiA9IG51bGwsXG4gICAgICAgICAgY2xhaW0gPSBuZXcgQ2xhc3MoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCBsYWJlbHMsIHN1cHBvc2l0aW9ucywgZGVkdWN0aW9uLCBwcm9vZiwgc2lnbmF0dXJlLCBoeXBvdGhlc2VzKTtcblxuICAgIHJldHVybiBjbGFpbTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbIkNsYWltIiwicmV2ZXJzZSIsImFycmF5VXRpbGl0aWVzIiwiYnJlYWtQb2ludEZyb21KU09OIiwiYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04iLCJicmVha1BvaW50VXRpbGl0aWVzIiwiYWxsIiwiZXZlcnkiLCJleHRyYWN0IiwiZm9yd2FyZHNFdmVyeSIsImJhY2t3YXJkc0V2ZXJ5IiwiY29udGludWF0aW9uVXRpbGl0aWVzIiwiRWxlbWVudCIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsImxhYmVscyIsInN1cHBvc2l0aW9ucyIsImRlZHVjdGlvbiIsInByb29mIiwic2lnbmF0dXJlIiwiaHlwb3RoZXNlcyIsImdldExhYmVscyIsImdldFN1cHBvc2l0aW9ucyIsImdldERlZHVjdGlvbiIsImdldFByb29mIiwiZ2V0U2lnbmF0dXJlIiwiZ2V0SHlwb3RoZXNlcyIsInNldEh5cG90aGVzZXMiLCJnZXRTdXBwb3NpdGlvbiIsImluZGV4Iiwic3VwcG9zaXRpb24iLCJpc1NhdGlzZmlhYmxlIiwic2F0aXNmaWFibGUiLCJpc0h5cG90aGV0aWNhbCIsImh5cG90aGVzZXNMZW5ndGgiLCJsZW5ndGgiLCJoeXBvdGhldGljYWwiLCJtYXRjaE1ldGF2YXJpYWJsZU5vZGUiLCJtZXRhdmFyaWFibGVOb2RlIiwibWV0YXZhcmlhYmxlTm9kZU1hdGNoZXMiLCJzb21lIiwibGFiZWwiLCJ2ZXJpZnlFeCIsImZvcndhcmQiLCJiYWNrIiwiZW5jbG9zZSIsInZlcmlmeVByb29mIiwiYmluZCIsInZlcmlmeUxhYmVscyIsInZlcmlmeURlZHVjdGlvbiIsInZlcmlmeVN1cHBvc2l0aW9ucyIsImNsYWltU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJ2ZXJpZnlMYWJlbCIsImRlYnVnIiwibGFiZWxTdHJpbmciLCJ2ZXJpZnkiLCJzdGF0ZW1lbnQiLCJnZXRTdGF0ZW1lbnQiLCJwcm9vZlZlcmlmaWVzIiwiY29udGludWF0aW9uIiwiZGVkdWN0aW9uU3RyaW5nIiwidmVyaWZ5U3VwcG9zaXRpb24iLCJzdXBwb3NpdGlvblN0cmluZyIsImZhY3RPclN1YnByb29mIiwiYXNzaWduQXNzaWdubWVudHMiLCJhZGRGYWN0T3JTdWJwcm9vZiIsInN1cHBvc2l0aW9uc0xlbmd0aCIsImRpc2NoYXJnZUh5cG90aGVzaXMiLCJoeXBvdGhlc2lzIiwiaHlwb3RoZXNpc1N0cmluZyIsImRpc2NoYXJnZSIsImh5cG90aGVzaXNEaXNjaGFyZ2VzIiwiZGlzY2hhcmdlSHlwb3RoZXNlcyIsImh5cG90aGVzZXNEaXNjaGFyZ2VkIiwidW5pZnlTdGVwV2l0aERlZHVjdGlvbiIsInN0ZXAiLCJydWxlU3RyaW5nIiwic3RlcFN0cmluZyIsInVuaWZ5U3RlcCIsInN0ZXBVbmlmaWVzIiwic3RlcFVuaWZpZXNXaXRoRGVkdWN0aW9uIiwidW5pZnlTdGVwQW5kRmFjdE9yU3VicHJvb2ZzIiwiZmFjdG9yU3VicHJvb2ZzIiwicmVjb25jaWxlIiwic3RhdGVtZW50VW5pZmllc1dpdGhEZWR1Y3Rpb24iLCJzdGVwQW5kRmFjdE9yU3VicHJvb2ZzVW5pZnkiLCJoeXBvdGhlc2VzRGlzY2hhcmdlIiwidW5pZnlGYWN0T3JTdWJwcm9vZnNXaXRoU3VwcG9zaXRpb25zIiwiZmFjdG9yU3VicHJvb2ZzVW5pZmllc1dpdGhTdXBwb3NpdGlvbnMiLCJpbmZlcnJlZFN1YnN0aXR1dGlvbnNTb2x2ZWQiLCJhcmVJbmZlcnJlZFN1YnN0aXR1dGlvbnNTb2x2ZWQiLCJ1bmlmeUZhY3RPclN1YnByb29mc1dpdGhTdXBwb3NpdGlvbiIsImZhY3RPclN1YnByb29mcyIsInVuaWZ5RmFjdE9yU3VicHJvb2YiLCJzb2x2ZUluZmVycmVkU3Vic3RpdHV0aW9ucyIsImV4Y2VwdGlvbiIsInVuaWZ5SW5kZXBlbmRlbnRseSIsInRvSlNPTiIsImxhYmVsc0pTT04iLCJsYWJlbHNUb0xhYmVsc0pTT04iLCJkZWR1Y3Rpb25KU09OIiwiZGVkdWN0aW9uVG9EZWR1Y3Rpb25KU09OIiwic3VwcG9zaXRpb25zSlNPTiIsInN1cHBvc2l0aW9uc1RvU3VwcG9zaXRpb25zSlNPTiIsInNpZ25hdHVyZUpTT04iLCJzaWduYXR1cmVUb1NpZ25hdHVyZUpTT04iLCJoeXBvdGhlc2VzSlNPTiIsImh5cG90aGVzZXNUb0h5cG90aGVzZXNKU09OIiwiZ2V0QnJlYWtQb2ludCIsImJyZWFrUG9pbnRKU09OIiwianNvbiIsImZyb21KU09OIiwiQ2xhc3MiLCJsYWJlbHNGcm9tSlNPTiIsImRlZHVjdGlvbkZyb21KU09OIiwic3VwcG9zaXRpb25zRnJvbUpTT04iLCJzaWduYXR1cmVGcm9tSlNPTiIsImh5cG90aGVzZXNGcm9tSlNPTiIsImNsYWltU3RyaW5nRnJvbUxhYmVsc1NpZ25hdHVyZVN1cHBvc2l0aW9uc0FuZERlZHVjdGlvbiIsImNsYWltIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFzQkE7OztlQUFxQkE7OzsyQkFwQlU7Z0NBQ3FDO3lCQUVqQzt3QkFDb0M7c0JBVXhCO0FBRS9DLE1BQU0sRUFBRUMsT0FBTyxFQUFFLEdBQUdDLHlCQUFjLEVBQzVCLEVBQUVDLGtCQUFrQixFQUFFQywwQkFBMEIsRUFBRSxHQUFHQyxtQ0FBbUIsRUFDeEUsRUFBRUMsR0FBRyxFQUFFQyxLQUFLLEVBQUVDLE9BQU8sRUFBRUMsYUFBYSxFQUFFQyxjQUFjLEVBQUUsR0FBR0MscUNBQXFCO0FBRXJFLE1BQU1YLGNBQWNZLHVCQUFPO0lBQ3hDLFlBQVlDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxJQUFJLEVBQUVDLFVBQVUsRUFBRUMsTUFBTSxFQUFFQyxZQUFZLEVBQUVDLFNBQVMsRUFBRUMsS0FBSyxFQUFFQyxTQUFTLEVBQUVDLFVBQVUsQ0FBRTtRQUM1RyxLQUFLLENBQUNULFNBQVNDLFFBQVFDLE1BQU1DO1FBRTdCLElBQUksQ0FBQ0MsTUFBTSxHQUFHQTtRQUNkLElBQUksQ0FBQ0MsWUFBWSxHQUFHQTtRQUNwQixJQUFJLENBQUNDLFNBQVMsR0FBR0E7UUFDakIsSUFBSSxDQUFDQyxLQUFLLEdBQUdBO1FBQ2IsSUFBSSxDQUFDQyxTQUFTLEdBQUdBO1FBQ2pCLElBQUksQ0FBQ0MsVUFBVSxHQUFHQTtJQUNwQjtJQUVBQyxZQUFZO1FBQ1YsT0FBTyxJQUFJLENBQUNOLE1BQU07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
|
|
@@ -19,7 +19,7 @@ function _interop_require_default(obj) {
|
|
|
19
19
|
default: obj
|
|
20
20
|
};
|
|
21
21
|
}
|
|
22
|
-
const {
|
|
22
|
+
const { breakPointFromJSON, breakPointToBreakPointJSON } = _occamlanguages.breakPointUtilities;
|
|
23
23
|
const _default = (0, _elements.define)(class ProcedureCall extends _occamlanguages.Element {
|
|
24
24
|
constructor(context, string, node, breakPoint, parameters, procedureReference){
|
|
25
25
|
super(context, string, node, breakPoint);
|
|
@@ -102,7 +102,7 @@ const _default = (0, _elements.define)(class ProcedureCall extends _occamlanguag
|
|
|
102
102
|
const procedureName = this.getProcedureName(), procedure = context.findProcedureByProcedureName(procedureName), value = _value.default.fromTerm(term, context), values = [
|
|
103
103
|
value
|
|
104
104
|
];
|
|
105
|
-
return procedure.callNominally(values,
|
|
105
|
+
return procedure.callNominally(values, (value, back)=>{
|
|
106
106
|
const boolean = value.isBoolean();
|
|
107
107
|
if (!boolean) {
|
|
108
108
|
context.info(`The '${procedureCallString}' procedure call did not return a boolean.`);
|
|
@@ -114,7 +114,7 @@ const _default = (0, _elements.define)(class ProcedureCall extends _occamlanguag
|
|
|
114
114
|
}
|
|
115
115
|
context.debug(`...discharged the '${procedureCallString}' procedure call given the '${termString}' term.`);
|
|
116
116
|
return forward(back);
|
|
117
|
-
}, back)
|
|
117
|
+
}, back);
|
|
118
118
|
}
|
|
119
119
|
toJSON() {
|
|
120
120
|
const string = this.getString();
|
|
@@ -140,4 +140,4 @@ const _default = (0, _elements.define)(class ProcedureCall extends _occamlanguag
|
|
|
140
140
|
}
|
|
141
141
|
});
|
|
142
142
|
|
|
143
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L3Byb2NlZHVyZUNhbGwuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IEVsZW1lbnQsIGJyZWFrUG9pbnRVdGlsaXRpZXMsIGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IFZhbHVlIGZyb20gXCIuLi92YWx1ZVwiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IGluc3RhbnRpYXRlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9jb250ZXh0XCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZVByb2NlZHVyZUNhbGwgfSBmcm9tIFwiLi4vcHJvY2Vzcy9pbnN0YW50aWF0ZVwiO1xuaW1wb3J0IHsgcGFyYW1ldGVyc0Zyb21Qcm9jZWR1cmVDYWxsTm9kZSwgcHJvY2VkdXJlUmVmZXJlbmNlRnJvbVByb2NlZHVyZUNhbGxOb2RlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9lbGVtZW50XCI7XG5cbmNvbnN0IHsgY3V0IH0gPSBjb250aW51YXRpb25VdGlsaXRpZXMsXG4gICAgICB7IGJyZWFrUG9pbnRGcm9tSlNPTiwgYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04gfSA9IGJyZWFrUG9pbnRVdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBQcm9jZWR1cmVDYWxsIGV4dGVuZHMgRWxlbWVudCB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgcGFyYW1ldGVycywgcHJvY2VkdXJlUmVmZXJlbmNlKSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50KTtcblxuICAgIHRoaXMucGFyYW1ldGVycyA9IHBhcmFtZXRlcnM7XG4gICAgdGhpcy5wcm9jZWR1cmVSZWZlcmVuY2UgPSBwcm9jZWR1cmVSZWZlcmVuY2U7XG4gIH1cblxuICBnZXRQYXJhbWV0ZXJzKCkge1xuICAgIHJldHVybiB0aGlzLnBhcmFtZXRlcnM7XG4gIH1cblxuICBnZXRQcm9jZWR1cmVSZWZlcmVuY2UoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvY2VkdXJlUmVmZXJlbmNlO1xuICB9XG5cbiAgZ2V0UHJvY2VkdXJlQ2FsbE5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIHByb2NlZHVyZUNhbGxOb2RlID0gbm9kZTtcblxuICAgIHJldHVybiBwcm9jZWR1cmVDYWxsTm9kZTtcbiAgfVxuXG4gIGdldFByb2NlZHVyZU5hbWUoKSB7IHJldHVybiB0aGlzLnByb2NlZHVyZVJlZmVyZW5jZS5nZXRQcm9jZWR1cmVOYW1lKCk7IH1cblxuICBpc1VuYXJ5KCkge1xuICAgIGNvbnN0IHBhcmFtZXRlcnNMZW5ndGggPSB0aGlzLnBhcmFtZXRlcnMubGVuZ3RoLFxuICAgICAgICAgIHVuYXJ5ID0gKHBhcmFtZXRlcnNMZW5ndGggPT09IDEpO1xuXG4gICAgcmV0dXJuIHVuYXJ5O1xuICB9XG5cbiAgZmluZFZhbHVlcyhjb250ZXh0KSB7XG4gICAgY29uc3QgaW5mZXJyZWRTdWJzdGl0dXRpb25zID0gY29udGV4dC5nZXRJbmZlcnJlZFN1YnN0aXR1dGlvbnMoKSxcbiAgICAgICAgICBzdWJzdGl0dXRpb25zID0gaW5mZXJyZWRTdWJzdGl0dXRpb25zLCAvLy9cbiAgICAgICAgICB2YWx1ZXMgPSB0aGlzLnBhcmFtZXRlcnMubWFwKChwYXJhbWV0ZXIpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gcGFyYW1ldGVyLmZpbmRWYWx1ZShzdWJzdGl0dXRpb25zKTtcblxuICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICAgIH0pO1xuXG4gICAgcmV0dXJuIHZhbHVlcztcbiAgfVxuXG4gIHZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgcHJvY2VkdXJlQ2FsbFN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7cHJvY2VkdXJlQ2FsbFN0cmluZ30nIHByb2NlZHVyZSBjYWxsLi4uYCk7XG5cbiAgICBjb25zdCBwcm9jZWR1cmVOYW1lID0gdGhpcy5nZXRQcm9jZWR1cmVOYW1lKCksXG4gICAgICAgICAgcHJvY2VkdXJlID0gY29udGV4dC5maW5kUHJvY2VkdXJlQnlQcm9jZWR1cmVOYW1lKHByb2NlZHVyZU5hbWUpO1xuXG4gICAgaWYgKHByb2NlZHVyZSA9PT0gbnVsbCkge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke3Byb2NlZHVyZUNhbGxTdHJpbmd9JyBwcm9jZWR1cmUgaXMgbm90IHByZXNlbnQuYCk7XG5cbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfVxuXG4gICAgY29uc3QgcHJvY2VkdXJlQm9vbGVhbiA9IHByb2NlZHVyZS5pc0Jvb2xlYW4oKTtcblxuICAgIGlmICghcHJvY2VkdXJlQm9vbGVhbikge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke3Byb2NlZHVyZUNhbGxTdHJpbmd9JyBwcm9jZWR1cmUgaXMgbm90IGJvb2xlYW4uYCk7XG5cbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfVxuXG4gICAgY29uc3QgcHJvY2VkdXJlQ2FsbCA9IHRoaXM7IC8vL1xuXG4gICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtwcm9jZWR1cmVDYWxsU3RyaW5nfScgcHJvY2VkdXJlIGNhbGwuYCk7XG5cbiAgICByZXR1cm4gZm9yd2FyZChwcm9jZWR1cmVDYWxsLCBjb250ZXh0LCBiYWNrKTtcbiAgfVxuXG4gIHVuaWZ5SW5kZXBlbmRlbnRseShjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgZGVidWdnZXJcblxuICAgIGNvbnN0IHByb2NlZHVyZUNhbGxTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtwcm9jZWR1cmVDYWxsU3RyaW5nfScgcHJvY2VkdXJlIGNhbGwgaW5kZXBlbmRlbnRseS4uLmApO1xuXG4gICAgY29uc3QgcHJvY2VkdXJlTmFtZSA9IHRoaXMuZ2V0UHJvY2VkdXJlTmFtZSgpLFxuICAgICAgICAgIHByb2NlZHVyZSA9IGNvbnRleHQuZmluZFByb2NlZHVyZUJ5UHJvY2VkdXJlTmFtZShwcm9jZWR1cmVOYW1lKSxcbiAgICAgICAgICB2YWx1ZXMgPSB0aGlzLmZpbmRWYWx1ZXMoY29udGV4dCk7XG5cbiAgICByZXR1cm4gcHJvY2VkdXJlLmNhbGxOb21pbmFsbHkodmFsdWVzLCAodGVybSkgPT4ge1xuICAgICAgbGV0IHVuaWZpZXNJbmRlcGVuZGVudGx5ID0gZmFsc2U7XG5cbiAgICAgIGlmICh0ZXJtICE9PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IGJvb2xlYW4gPSB0ZXJtLmlzQm9vbGVhbigpO1xuXG4gICAgICAgIGlmICghYm9vbGVhbikge1xuICAgICAgICAgIGNvbnRleHQuaW5mbyhgVGhlICcke3Byb2NlZHVyZUNhbGxTdHJpbmd9JyBwcm9jZWR1cmUgY2FsbCBkaWQgbm90IHJldHVybiBhIGJvb2xlYW4uYCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgcHJpbWl0aXZlVmFsdWUgPSB0ZXJtLmdldFByaW1pdGl2ZVZhbHVlKCk7XG5cbiAgICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUpIHtcbiAgICAgICAgICAgIHVuaWZpZXNJbmRlcGVuZGVudGx5ID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHVuaWZpZXNJbmRlcGVuZGVudGx5KSB7XG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3Byb2NlZHVyZUNhbGxTdHJpbmd9JyBwcm9jZWR1cmUgY2FsbCBpbmRlcGVuZGVudGx5LmApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29udGludWF0aW9uKHVuaWZpZXNJbmRlcGVuZGVudGx5KTtcbiAgICB9KTtcbiAgfVxuXG4gIGRpc2NoYXJnZUdpdmVuVGVybSh0ZXJtLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgdGVybVN0cmluZyA9IHRlcm0uZ2V0U3RyaW5nKCksXG4gICAgICAgICAgcHJvY2VkdXJlQ2FsbFN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgRGlzY2hhcmdpbmcgdGhlICcke3Byb2NlZHVyZUNhbGxTdHJpbmd9JyBwcm9jZWR1cmUgY2FsbCBnaXZlbiB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0uLi5gKTtcblxuICAgIGNvbnN0IHVuYXJ5ID0gdGhpcy5pc1VuYXJ5KCk7XG5cbiAgICBpZiAoIXVuYXJ5KSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7cHJvY2VkdXJlQ2FsbFN0cmluZ30nIHByb2NlZHVyZSBjYWxsIGlzIG5vdCB1bmFyeS5gKTtcblxuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICBjb25zdCBwcm9jZWR1cmVOYW1lID0gdGhpcy5nZXRQcm9jZWR1cmVOYW1lKCksXG4gICAgICAgICAgcHJvY2VkdXJlID0gY29udGV4dC5maW5kUHJvY2VkdXJlQnlQcm9jZWR1cmVOYW1lKHByb2NlZHVyZU5hbWUpLFxuICAgICAgICAgIHZhbHVlID0gVmFsdWUuZnJvbVRlcm0odGVybSwgY29udGV4dCksXG4gICAgICAgICAgdmFsdWVzID0gW1xuICAgICAgICAgICAgdmFsdWVcbiAgICAgICAgICBdO1xuXG4gICAgcmV0dXJuIHByb2NlZHVyZS5jYWxsTm9taW5hbGx5KHZhbHVlcywgY3V0KCh2YWx1ZSwgYmFjaykgPT4ge1xuICAgICAgY29uc3QgYm9vbGVhbiA9IHZhbHVlLmlzQm9vbGVhbigpO1xuXG4gICAgICBpZiAoIWJvb2xlYW4pIHtcbiAgICAgICAgY29udGV4dC5pbmZvKGBUaGUgJyR7cHJvY2VkdXJlQ2FsbFN0cmluZ30nIHByb2NlZHVyZSBjYWxsIGRpZCBub3QgcmV0dXJuIGEgYm9vbGVhbi5gKTtcblxuICAgICAgICByZXR1cm4gYmFjaygpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBwcmltaXRpdmVWYWx1ZSA9IHZhbHVlLmdldFByaW1pdGl2ZVZhbHVlKCk7XG5cbiAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICAgIH1cblxuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4uZGlzY2hhcmdlZCB0aGUgJyR7cHJvY2VkdXJlQ2FsbFN0cmluZ30nIHByb2NlZHVyZSBjYWxsIGdpdmVuIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybS5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoYmFjayk7XG4gICAgfSwgYmFjayksIGJhY2spO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIGNvbnN0IHN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7XG5cbiAgICBsZXQgYnJlYWtQb2ludDtcblxuICAgIGJyZWFrUG9pbnQgPSB0aGlzLmdldEJyZWFrUG9pbnQoKTtcblxuICAgIGNvbnN0IGJyZWFrUG9pbnRKU09OID0gYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04oYnJlYWtQb2ludCk7XG5cbiAgICBicmVha1BvaW50ID0gYnJlYWtQb2ludEpTT047ICAvLy9cblxuICAgIGNvbnN0IGpzb24gPSB7XG4gICAgICBzdHJpbmcsXG4gICAgICBicmVha1BvaW50XG4gICAgfTtcblxuICAgIHJldHVybiBqc29uO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIlByb2NlZHVyZUNhbGxcIjtcblxuICBzdGF0aWMgZnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICAgIGxldCBwcm9jZWR1cmVDYWxsO1xuXG4gICAgaW5zdGFudGlhdGUoKGNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IHsgc3RyaW5nIH0gPSBqc29uLFxuICAgICAgICAgICAgcHJvY2VkdXJlQ2FsbE5vZGUgPSBpbnN0YW50aWF0ZVByb2NlZHVyZUNhbGwoc3RyaW5nLCBjb250ZXh0KSxcbiAgICAgICAgICAgIG5vZGUgPSBwcm9jZWR1cmVDYWxsTm9kZSwgIC8vL1xuICAgICAgICAgICAgYnJlYWtQb2ludCA9IGJyZWFrUG9pbnRGcm9tSlNPTihqc29uKSxcbiAgICAgICAgICAgIHBhcmFtZXRlcnMgPSBwYXJhbWV0ZXJzRnJvbVByb2NlZHVyZUNhbGxOb2RlKGpzb24sIGNvbnRleHQpLFxuICAgICAgICAgICAgcHJvY2VkdXJlUmVmZXJlbmNlID0gcHJvY2VkdXJlUmVmZXJlbmNlRnJvbVByb2NlZHVyZUNhbGxOb2RlKGpzb24sIGNvbnRleHQpO1xuXG4gICAgICBjb250ZXh0ID0gbnVsbDtcblxuICAgICAgcHJvY2VkdXJlQ2FsbCA9IG5ldyBQcm9jZWR1cmVDYWxsKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgcGFyYW1ldGVycywgcHJvY2VkdXJlUmVmZXJlbmNlKTtcbiAgICB9LCBjb250ZXh0KTtcblxuICAgIHJldHVybiBwcm9jZWR1cmVDYWxsO1xuICB9XG59KTtcbiJdLCJuYW1lcyI6WyJjdXQiLCJjb250aW51YXRpb25VdGlsaXRpZXMiLCJicmVha1BvaW50RnJvbUpTT04iLCJicmVha1BvaW50VG9CcmVha1BvaW50SlNPTiIsImJyZWFrUG9pbnRVdGlsaXRpZXMiLCJkZWZpbmUiLCJQcm9jZWR1cmVDYWxsIiwiRWxlbWVudCIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsInBhcmFtZXRlcnMiLCJwcm9jZWR1cmVSZWZlcmVuY2UiLCJnZXRQYXJhbWV0ZXJzIiwiZ2V0UHJvY2VkdXJlUmVmZXJlbmNlIiwiZ2V0UHJvY2VkdXJlQ2FsbE5vZGUiLCJnZXROb2RlIiwicHJvY2VkdXJlQ2FsbE5vZGUiLCJnZXRQcm9jZWR1cmVOYW1lIiwiaXNVbmFyeSIsInBhcmFtZXRlcnNMZW5ndGgiLCJsZW5ndGgiLCJ1bmFyeSIsImZpbmRWYWx1ZXMiLCJpbmZlcnJlZFN1YnN0aXR1dGlvbnMiLCJnZXRJbmZlcnJlZFN1YnN0aXR1dGlvbnMiLCJzdWJzdGl0dXRpb25zIiwidmFsdWVzIiwibWFwIiwicGFyYW1ldGVyIiwidmFsdWUiLCJmaW5kVmFsdWUiLCJ2YWxpZGF0ZSIsInN0YXRlIiwiZm9yd2FyZCIsImJhY2siLCJwcm9jZWR1cmVDYWxsU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJwcm9jZWR1cmVOYW1lIiwicHJvY2VkdXJlIiwiZmluZFByb2NlZHVyZUJ5UHJvY2VkdXJlTmFtZSIsImRlYnVnIiwicHJvY2VkdXJlQm9vbGVhbiIsImlzQm9vbGVhbiIsInByb2NlZHVyZUNhbGwiLCJ1bmlmeUluZGVwZW5kZW50bHkiLCJjYWxsTm9taW5hbGx5IiwidGVybSIsInVuaWZpZXNJbmRlcGVuZGVudGx5IiwiYm9vbGVhbiIsImluZm8iLCJwcmltaXRpdmVWYWx1ZSIsImdldFByaW1pdGl2ZVZhbHVlIiwiY29udGludWF0aW9uIiwiZGlzY2hhcmdlR2l2ZW5UZXJtIiwidGVybVN0cmluZyIsIlZhbHVlIiwiZnJvbVRlcm0iLCJ0b0pTT04iLCJnZXRCcmVha1BvaW50IiwiYnJlYWtQb2ludEpTT04iLCJqc29uIiwibmFtZSIsImZyb21KU09OIiwiaW5zdGFudGlhdGUiLCJpbnN0YW50aWF0ZVByb2NlZHVyZUNhbGwiLCJwYXJhbWV0ZXJzRnJvbVByb2NlZHVyZUNhbGxOb2RlIiwicHJvY2VkdXJlUmVmZXJlbmNlRnJvbVByb2NlZHVyZUNhbGxOb2RlIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFjQTs7O2VBQUE7OztnQ0Fab0U7OERBRWxEOzBCQUVLO3lCQUNLOzZCQUNhO3lCQUNnRDs7Ozs7O0FBRXpGLE1BQU0sRUFBRUEsR0FBRyxFQUFFLEdBQUdDLHFDQUFxQixFQUMvQixFQUFFQyxrQkFBa0IsRUFBRUMsMEJBQTBCLEVBQUUsR0FBR0MsbUNBQW1CO01BRTlFLFdBQWVDLElBQUFBLGdCQUFNLEVBQUMs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
|
|
143
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L3Byb2NlZHVyZUNhbGwuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IEVsZW1lbnQsIGJyZWFrUG9pbnRVdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCBWYWx1ZSBmcm9tIFwiLi4vdmFsdWVcIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvY29udGV4dFwiO1xuaW1wb3J0IHsgaW5zdGFudGlhdGVQcm9jZWR1cmVDYWxsIH0gZnJvbSBcIi4uL3Byb2Nlc3MvaW5zdGFudGlhdGVcIjtcbmltcG9ydCB7IHBhcmFtZXRlcnNGcm9tUHJvY2VkdXJlQ2FsbE5vZGUsIHByb2NlZHVyZVJlZmVyZW5jZUZyb21Qcm9jZWR1cmVDYWxsTm9kZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvZWxlbWVudFwiO1xuXG5jb25zdCB7IGJyZWFrUG9pbnRGcm9tSlNPTiwgYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04gfSA9IGJyZWFrUG9pbnRVdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBQcm9jZWR1cmVDYWxsIGV4dGVuZHMgRWxlbWVudCB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgcGFyYW1ldGVycywgcHJvY2VkdXJlUmVmZXJlbmNlKSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50KTtcblxuICAgIHRoaXMucGFyYW1ldGVycyA9IHBhcmFtZXRlcnM7XG4gICAgdGhpcy5wcm9jZWR1cmVSZWZlcmVuY2UgPSBwcm9jZWR1cmVSZWZlcmVuY2U7XG4gIH1cblxuICBnZXRQYXJhbWV0ZXJzKCkge1xuICAgIHJldHVybiB0aGlzLnBhcmFtZXRlcnM7XG4gIH1cblxuICBnZXRQcm9jZWR1cmVSZWZlcmVuY2UoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvY2VkdXJlUmVmZXJlbmNlO1xuICB9XG5cbiAgZ2V0UHJvY2VkdXJlQ2FsbE5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIHByb2NlZHVyZUNhbGxOb2RlID0gbm9kZTtcblxuICAgIHJldHVybiBwcm9jZWR1cmVDYWxsTm9kZTtcbiAgfVxuXG4gIGdldFByb2NlZHVyZU5hbWUoKSB7IHJldHVybiB0aGlzLnByb2NlZHVyZVJlZmVyZW5jZS5nZXRQcm9jZWR1cmVOYW1lKCk7IH1cblxuICBpc1VuYXJ5KCkge1xuICAgIGNvbnN0IHBhcmFtZXRlcnNMZW5ndGggPSB0aGlzLnBhcmFtZXRlcnMubGVuZ3RoLFxuICAgICAgICAgIHVuYXJ5ID0gKHBhcmFtZXRlcnNMZW5ndGggPT09IDEpO1xuXG4gICAgcmV0dXJuIHVuYXJ5O1xuICB9XG5cbiAgZmluZFZhbHVlcyhjb250ZXh0KSB7XG4gICAgY29uc3QgaW5mZXJyZWRTdWJzdGl0dXRpb25zID0gY29udGV4dC5nZXRJbmZlcnJlZFN1YnN0aXR1dGlvbnMoKSxcbiAgICAgICAgICBzdWJzdGl0dXRpb25zID0gaW5mZXJyZWRTdWJzdGl0dXRpb25zLCAvLy9cbiAgICAgICAgICB2YWx1ZXMgPSB0aGlzLnBhcmFtZXRlcnMubWFwKChwYXJhbWV0ZXIpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gcGFyYW1ldGVyLmZpbmRWYWx1ZShzdWJzdGl0dXRpb25zKTtcblxuICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICAgIH0pO1xuXG4gICAgcmV0dXJuIHZhbHVlcztcbiAgfVxuXG4gIHZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgcHJvY2VkdXJlQ2FsbFN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7cHJvY2VkdXJlQ2FsbFN0cmluZ30nIHByb2NlZHVyZSBjYWxsLi4uYCk7XG5cbiAgICBjb25zdCBwcm9jZWR1cmVOYW1lID0gdGhpcy5nZXRQcm9jZWR1cmVOYW1lKCksXG4gICAgICAgICAgcHJvY2VkdXJlID0gY29udGV4dC5maW5kUHJvY2VkdXJlQnlQcm9jZWR1cmVOYW1lKHByb2NlZHVyZU5hbWUpO1xuXG4gICAgaWYgKHByb2NlZHVyZSA9PT0gbnVsbCkge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke3Byb2NlZHVyZUNhbGxTdHJpbmd9JyBwcm9jZWR1cmUgaXMgbm90IHByZXNlbnQuYCk7XG5cbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfVxuXG4gICAgY29uc3QgcHJvY2VkdXJlQm9vbGVhbiA9IHByb2NlZHVyZS5pc0Jvb2xlYW4oKTtcblxuICAgIGlmICghcHJvY2VkdXJlQm9vbGVhbikge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke3Byb2NlZHVyZUNhbGxTdHJpbmd9JyBwcm9jZWR1cmUgaXMgbm90IGJvb2xlYW4uYCk7XG5cbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfVxuXG4gICAgY29uc3QgcHJvY2VkdXJlQ2FsbCA9IHRoaXM7IC8vL1xuXG4gICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtwcm9jZWR1cmVDYWxsU3RyaW5nfScgcHJvY2VkdXJlIGNhbGwuYCk7XG5cbiAgICByZXR1cm4gZm9yd2FyZChwcm9jZWR1cmVDYWxsLCBjb250ZXh0LCBiYWNrKTtcbiAgfVxuXG4gIHVuaWZ5SW5kZXBlbmRlbnRseShjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgZGVidWdnZXJcblxuICAgIGNvbnN0IHByb2NlZHVyZUNhbGxTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtwcm9jZWR1cmVDYWxsU3RyaW5nfScgcHJvY2VkdXJlIGNhbGwgaW5kZXBlbmRlbnRseS4uLmApO1xuXG4gICAgY29uc3QgcHJvY2VkdXJlTmFtZSA9IHRoaXMuZ2V0UHJvY2VkdXJlTmFtZSgpLFxuICAgICAgICAgIHByb2NlZHVyZSA9IGNvbnRleHQuZmluZFByb2NlZHVyZUJ5UHJvY2VkdXJlTmFtZShwcm9jZWR1cmVOYW1lKSxcbiAgICAgICAgICB2YWx1ZXMgPSB0aGlzLmZpbmRWYWx1ZXMoY29udGV4dCk7XG5cbiAgICByZXR1cm4gcHJvY2VkdXJlLmNhbGxOb21pbmFsbHkodmFsdWVzLCAodGVybSkgPT4ge1xuICAgICAgbGV0IHVuaWZpZXNJbmRlcGVuZGVudGx5ID0gZmFsc2U7XG5cbiAgICAgIGlmICh0ZXJtICE9PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IGJvb2xlYW4gPSB0ZXJtLmlzQm9vbGVhbigpO1xuXG4gICAgICAgIGlmICghYm9vbGVhbikge1xuICAgICAgICAgIGNvbnRleHQuaW5mbyhgVGhlICcke3Byb2NlZHVyZUNhbGxTdHJpbmd9JyBwcm9jZWR1cmUgY2FsbCBkaWQgbm90IHJldHVybiBhIGJvb2xlYW4uYCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgcHJpbWl0aXZlVmFsdWUgPSB0ZXJtLmdldFByaW1pdGl2ZVZhbHVlKCk7XG5cbiAgICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUpIHtcbiAgICAgICAgICAgIHVuaWZpZXNJbmRlcGVuZGVudGx5ID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHVuaWZpZXNJbmRlcGVuZGVudGx5KSB7XG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3Byb2NlZHVyZUNhbGxTdHJpbmd9JyBwcm9jZWR1cmUgY2FsbCBpbmRlcGVuZGVudGx5LmApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29udGludWF0aW9uKHVuaWZpZXNJbmRlcGVuZGVudGx5KTtcbiAgICB9KTtcbiAgfVxuXG4gIGRpc2NoYXJnZUdpdmVuVGVybSh0ZXJtLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgdGVybVN0cmluZyA9IHRlcm0uZ2V0U3RyaW5nKCksXG4gICAgICAgICAgcHJvY2VkdXJlQ2FsbFN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgRGlzY2hhcmdpbmcgdGhlICcke3Byb2NlZHVyZUNhbGxTdHJpbmd9JyBwcm9jZWR1cmUgY2FsbCBnaXZlbiB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0uLi5gKTtcblxuICAgIGNvbnN0IHVuYXJ5ID0gdGhpcy5pc1VuYXJ5KCk7XG5cbiAgICBpZiAoIXVuYXJ5KSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7cHJvY2VkdXJlQ2FsbFN0cmluZ30nIHByb2NlZHVyZSBjYWxsIGlzIG5vdCB1bmFyeS5gKTtcblxuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICBjb25zdCBwcm9jZWR1cmVOYW1lID0gdGhpcy5nZXRQcm9jZWR1cmVOYW1lKCksXG4gICAgICAgICAgcHJvY2VkdXJlID0gY29udGV4dC5maW5kUHJvY2VkdXJlQnlQcm9jZWR1cmVOYW1lKHByb2NlZHVyZU5hbWUpLFxuICAgICAgICAgIHZhbHVlID0gVmFsdWUuZnJvbVRlcm0odGVybSwgY29udGV4dCksXG4gICAgICAgICAgdmFsdWVzID0gW1xuICAgICAgICAgICAgdmFsdWVcbiAgICAgICAgICBdO1xuXG4gICAgcmV0dXJuIHByb2NlZHVyZS5jYWxsTm9taW5hbGx5KHZhbHVlcywgKHZhbHVlLCBiYWNrKSA9PiB7XG4gICAgICBjb25zdCBib29sZWFuID0gdmFsdWUuaXNCb29sZWFuKCk7XG5cbiAgICAgIGlmICghYm9vbGVhbikge1xuICAgICAgICBjb250ZXh0LmluZm8oYFRoZSAnJHtwcm9jZWR1cmVDYWxsU3RyaW5nfScgcHJvY2VkdXJlIGNhbGwgZGlkIG5vdCByZXR1cm4gYSBib29sZWFuLmApO1xuXG4gICAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHByaW1pdGl2ZVZhbHVlID0gdmFsdWUuZ2V0UHJpbWl0aXZlVmFsdWUoKTtcblxuICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkge1xuICAgICAgICByZXR1cm4gYmFjaygpO1xuICAgICAgfVxuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi5kaXNjaGFyZ2VkIHRoZSAnJHtwcm9jZWR1cmVDYWxsU3RyaW5nfScgcHJvY2VkdXJlIGNhbGwgZ2l2ZW4gdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICBjb25zdCBzdHJpbmcgPSB0aGlzLmdldFN0cmluZygpO1xuXG4gICAgbGV0IGJyZWFrUG9pbnQ7XG5cbiAgICBicmVha1BvaW50ID0gdGhpcy5nZXRCcmVha1BvaW50KCk7XG5cbiAgICBjb25zdCBicmVha1BvaW50SlNPTiA9IGJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OKGJyZWFrUG9pbnQpO1xuXG4gICAgYnJlYWtQb2ludCA9IGJyZWFrUG9pbnRKU09OOyAgLy8vXG5cbiAgICBjb25zdCBqc29uID0ge1xuICAgICAgc3RyaW5nLFxuICAgICAgYnJlYWtQb2ludFxuICAgIH07XG5cbiAgICByZXR1cm4ganNvbjtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJQcm9jZWR1cmVDYWxsXCI7XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgICBsZXQgcHJvY2VkdXJlQ2FsbDtcblxuICAgIGluc3RhbnRpYXRlKChjb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCB7IHN0cmluZyB9ID0ganNvbixcbiAgICAgICAgICAgIHByb2NlZHVyZUNhbGxOb2RlID0gaW5zdGFudGlhdGVQcm9jZWR1cmVDYWxsKHN0cmluZywgY29udGV4dCksXG4gICAgICAgICAgICBub2RlID0gcHJvY2VkdXJlQ2FsbE5vZGUsICAvLy9cbiAgICAgICAgICAgIGJyZWFrUG9pbnQgPSBicmVha1BvaW50RnJvbUpTT04oanNvbiksXG4gICAgICAgICAgICBwYXJhbWV0ZXJzID0gcGFyYW1ldGVyc0Zyb21Qcm9jZWR1cmVDYWxsTm9kZShqc29uLCBjb250ZXh0KSxcbiAgICAgICAgICAgIHByb2NlZHVyZVJlZmVyZW5jZSA9IHByb2NlZHVyZVJlZmVyZW5jZUZyb21Qcm9jZWR1cmVDYWxsTm9kZShqc29uLCBjb250ZXh0KTtcblxuICAgICAgY29udGV4dCA9IG51bGw7XG5cbiAgICAgIHByb2NlZHVyZUNhbGwgPSBuZXcgUHJvY2VkdXJlQ2FsbChjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHBhcmFtZXRlcnMsIHByb2NlZHVyZVJlZmVyZW5jZSk7XG4gICAgfSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gcHJvY2VkdXJlQ2FsbDtcbiAgfVxufSk7XG4iXSwibmFtZXMiOlsiYnJlYWtQb2ludEZyb21KU09OIiwiYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04iLCJicmVha1BvaW50VXRpbGl0aWVzIiwiZGVmaW5lIiwiUHJvY2VkdXJlQ2FsbCIsIkVsZW1lbnQiLCJjb250ZXh0Iiwic3RyaW5nIiwibm9kZSIsImJyZWFrUG9pbnQiLCJwYXJhbWV0ZXJzIiwicHJvY2VkdXJlUmVmZXJlbmNlIiwiZ2V0UGFyYW1ldGVycyIsImdldFByb2NlZHVyZVJlZmVyZW5jZSIsImdldFByb2NlZHVyZUNhbGxOb2RlIiwiZ2V0Tm9kZSIsInByb2NlZHVyZUNhbGxOb2RlIiwiZ2V0UHJvY2VkdXJlTmFtZSIsImlzVW5hcnkiLCJwYXJhbWV0ZXJzTGVuZ3RoIiwibGVuZ3RoIiwidW5hcnkiLCJmaW5kVmFsdWVzIiwiaW5mZXJyZWRTdWJzdGl0dXRpb25zIiwiZ2V0SW5mZXJyZWRTdWJzdGl0dXRpb25zIiwic3Vic3RpdHV0aW9ucyIsInZhbHVlcyIsIm1hcCIsInBhcmFtZXRlciIsInZhbHVlIiwiZmluZFZhbHVlIiwidmFsaWRhdGUiLCJzdGF0ZSIsImZvcndhcmQiLCJiYWNrIiwicHJvY2VkdXJlQ2FsbFN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwicHJvY2VkdXJlTmFtZSIsInByb2NlZHVyZSIsImZpbmRQcm9jZWR1cmVCeVByb2NlZHVyZU5hbWUiLCJkZWJ1ZyIsInByb2NlZHVyZUJvb2xlYW4iLCJpc0Jvb2xlYW4iLCJwcm9jZWR1cmVDYWxsIiwidW5pZnlJbmRlcGVuZGVudGx5IiwiY2FsbE5vbWluYWxseSIsInRlcm0iLCJ1bmlmaWVzSW5kZXBlbmRlbnRseSIsImJvb2xlYW4iLCJpbmZvIiwicHJpbWl0aXZlVmFsdWUiLCJnZXRQcmltaXRpdmVWYWx1ZSIsImNvbnRpbnVhdGlvbiIsImRpc2NoYXJnZUdpdmVuVGVybSIsInRlcm1TdHJpbmciLCJWYWx1ZSIsImZyb21UZXJtIiwidG9KU09OIiwiZ2V0QnJlYWtQb2ludCIsImJyZWFrUG9pbnRKU09OIiwianNvbiIsIm5hbWUiLCJmcm9tSlNPTiIsImluc3RhbnRpYXRlIiwiaW5zdGFudGlhdGVQcm9jZWR1cmVDYWxsIiwicGFyYW1ldGVyc0Zyb21Qcm9jZWR1cmVDYWxsTm9kZSIsInByb2NlZHVyZVJlZmVyZW5jZUZyb21Qcm9jZWR1cmVDYWxsTm9kZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBYUE7OztlQUFBOzs7Z0NBWDZDOzhEQUUzQjswQkFFSzt5QkFDSzs2QkFDYTt5QkFDZ0Q7Ozs7OztBQUV6RixNQUFNLEVBQUVBLGtCQUFrQixFQUFFQywwQkFBMEIsRUFBRSxHQUFHQyxtQ0FBbUI7TUFFOUUsV0FBZUMsSUFBQUEsZ0JBQU0sRUFBQyxNQUFNQyxzQkFBc0JDLHVCQUFPO0lBQ3ZELFlBQVlDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxJQUFJLEVBQUVDLFVBQVUsRUFBRUMsVUFBVSxFQUFFQyxrQkFBa0IsQ0FBRTtRQUM3RSxLQUFLLENBQUNMLFNBQVNDLFFBQVFDLE1BQU1DO1FBRTdCLElBQUksQ0FBQ0MsVUFBVSxHQUFHQTtRQUNsQixJQUFJLENBQUNDLGtCQUFrQixHQUFHQTtJQUM1QjtJQUVBQyxnQkFBZ0I7UUFDZCxPQUFPLElBQUksQ0FBQ0YsVUFBVTtJQUN4QjtJQUVBRyx3QkFBd0I7UUFDdEIsT0FBTyxJQUFJLENBQUNGLGtCQUFrQjtJQUNoQztJQUVBRyx1QkFBdUI7UUFDckIsTUFBTU4sT0FBTyxJQUFJLENBQUNPLE9BQU8sSUFDbkJDLG9CQUFvQlI7UUFFMUIsT0FBT1E7SUFDVDtJQUVBQyxtQkFBbUI7UUFBRSxPQUFPLElBQUksQ0FBQ04sa0JBQWtCLENBQUNNLGdCQUFnQjtJQUFJO0lBRXhFQyxVQUFVO1FBQ1IsTUFBTUMsbUJBQW1CLElBQUksQ0FBQ1QsVUFBVSxDQUFDVSxNQUFNLEVBQ3pDQyxRQUFTRixxQkFBcUI7UUFFcEMsT0FBT0U7SUFDVDtJQUVBQyxXQUFXaEIsT0FBTyxFQUFFO1FBQ2xCLE1BQU1pQix3QkFBd0JqQixRQUFRa0Isd0JBQXdCLElBQ3hEQyxnQkFBZ0JGLHVCQUNoQkcsU0FBUyxJQUFJLENBQUNoQixVQUFVLENBQUNpQixHQUFHLENBQUMsQ0FBQ0M7WUFDNUIsTUFBTUMsUUFBUUQsVUFBVUUsU0FBUyxDQUFDTDtZQUVsQyxPQUFPSTtRQUNUO1FBRU4sT0FBT0g7SUFDVDtJQUVBSyxTQUFTQyxLQUFLLEVBQUUxQixPQUFPLEVBQUUyQixPQUFPLEVBQUVDLElBQUksRUFBRTtRQUN0QyxNQUFNQyxzQkFBc0IsSUFBSSxDQUFDQyxTQUFTLElBQUksR0FBRztRQUVqRDlCLFFBQVErQixLQUFLLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRUYsb0JBQW9CLG1CQUFtQixDQUFDO1FBRXpFLE1BQU1HLGdCQUFnQixJQUFJLENBQUNyQixnQkFBZ0IsSUFDckNzQixZQUFZakMsUUFBUWtDLDRCQUE0QixDQUFDRjtRQUV2RCxJQUFJQyxjQUFjLE1BQU07WUFDdEJqQyxRQUFRbUMsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFTixvQkFBb0IsMkJBQTJCLENBQUM7WUFFdEUsT0FBT0Q7UUFDVDtRQUVBLE1BQU1RLG1CQUFtQkgsVUFBVUksU0FBUztRQUU1QyxJQUFJLENBQUNELGtCQUFrQjtZQUNyQnBDLFFBQVFtQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUVOLG9CQUFvQiwyQkFBMkIsQ0FBQztZQUV0RSxPQUFPRDtRQUNUO1FBRUEsTUFBTVUsZ0JBQWdCLElBQUksRUFBRSxHQUFHO1FBRS9CdEMsUUFBUW1DLEtBQUssQ0FBQyxDQUFDLGtCQUFrQixFQUFFTixvQkFBb0IsaUJBQWlCLENBQUM7UUFFekUsT0FBT0YsUUFBUVcsZUFBZXRDLFNBQVM0QjtJQUN6QztJQUVBVyxtQkFBbUJ2QyxPQUFPLEVBQUUyQixPQUFPLEVBQUVDLElBQUksRUFBRTtRQUN6QyxRQUFRO1FBRVIsTUFBTUMsc0JBQXNCLElBQUksQ0FBQ0MsU0FBUyxJQUFJLEdBQUc7UUFFakQ5QixRQUFRK0IsS0FBSyxDQUFDLENBQUMsY0FBYyxFQUFFRixvQkFBb0IsaUNBQWlDLENBQUM7UUFFckYsTUFBTUcsZ0JBQWdCLElBQUksQ0FBQ3JCLGdCQUFnQixJQUNyQ3NCLFlBQVlqQyxRQUFRa0MsNEJBQTRCLENBQUNGLGdCQUNqRFosU0FBUyxJQUFJLENBQUNKLFVBQVUsQ0FBQ2hCO1FBRS9CLE9BQU9pQyxVQUFVTyxhQUFhLENBQUNwQixRQUFRLENBQUNxQjtZQUN0QyxJQUFJQyx1QkFBdUI7WUFFM0IsSUFBSUQsU0FBUyxNQUFNO2dCQUNqQixNQUFNRSxVQUFVRixLQUFLSixTQUFTO2dCQUU5QixJQUFJLENBQUNNLFNBQVM7b0JBQ1ozQyxRQUFRNEMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFZixvQkFBb0IsMENBQTBDLENBQUM7Z0JBQ3RGLE9BQU87b0JBQ0wsTUFBTWdCLGlCQUFpQkosS0FBS0ssaUJBQWlCO29CQUU3QyxJQUFJRCxnQkFBZ0I7d0JBQ2xCSCx1QkFBdUI7b0JBQ3pCO2dCQUNGO1lBQ0Y7WUFFQSxJQUFJQSxzQkFBc0I7Z0JBQ3hCMUMsUUFBUW1DLEtBQUssQ0FBQyxDQUFDLGdCQUFnQixFQUFFTixvQkFBb0IsK0JBQStCLENBQUM7WUFDdkY7WUFFQSxPQUFPa0IsYUFBYUw7UUFDdEI7SUFDRjtJQUVBTSxtQkFBbUJQLElBQUksRUFBRXpDLE9BQU8sRUFBRTJCLE9BQU8sRUFBRUMsSUFBSSxFQUFFO1FBQy9DLE1BQU1xQixhQUFhUixLQUFLWCxTQUFTLElBQzNCRCxzQkFBc0IsSUFBSSxDQUFDQyxTQUFTLElBQUksR0FBRztRQUVqRDlCLFFBQVErQixLQUFLLENBQUMsQ0FBQyxpQkFBaUIsRUFBRUYsb0JBQW9CLDRCQUE0QixFQUFFb0IsV0FBVyxTQUFTLENBQUM7UUFFekcsTUFBTWxDLFFBQVEsSUFBSSxDQUFDSCxPQUFPO1FBRTFCLElBQUksQ0FBQ0csT0FBTztZQUNWZixRQUFRbUMsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFTixvQkFBb0IsOEJBQThCLENBQUM7WUFFekUsT0FBT0Q7UUFDVDtRQUVBLE1BQU1JLGdCQUFnQixJQUFJLENBQUNyQixnQkFBZ0IsSUFDckNzQixZQUFZakMsUUFBUWtDLDRCQUE0QixDQUFDRixnQkFDakRULFFBQVEyQixjQUFLLENBQUNDLFFBQVEsQ0FBQ1YsTUFBTXpDLFVBQzdCb0IsU0FBUztZQUNQRztTQUNEO1FBRVAsT0FBT1UsVUFBVU8sYUFBYSxDQUFDcEIsUUFBUSxDQUFDRyxPQUFPSztZQUM3QyxNQUFNZSxVQUFVcEIsTUFBTWMsU0FBUztZQUUvQixJQUFJLENBQUNNLFNBQVM7Z0JBQ1ozQyxRQUFRNEMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFZixvQkFBb0IsMENBQTBDLENBQUM7Z0JBRXBGLE9BQU9EO1lBQ1Q7WUFFQSxNQUFNaUIsaUJBQWlCdEIsTUFBTXVCLGlCQUFpQjtZQUU5QyxJQUFJLENBQUNELGdCQUFnQjtnQkFDbkIsT0FBT2pCO1lBQ1Q7WUFFQTVCLFFBQVFtQyxLQUFLLENBQUMsQ0FBQyxtQkFBbUIsRUFBRU4sb0JBQW9CLDRCQUE0QixFQUFFb0IsV0FBVyxPQUFPLENBQUM7WUFFekcsT0FBT3RCLFFBQVFDO1FBQ2pCLEdBQUdBO0lBQ0w7SUFFQXdCLFNBQVM7UUFDUCxNQUFNbkQsU0FBUyxJQUFJLENBQUM2QixTQUFTO1FBRTdCLElBQUkzQjtRQUVKQSxhQUFhLElBQUksQ0FBQ2tELGFBQWE7UUFFL0IsTUFBTUMsaUJBQWlCM0QsMkJBQTJCUTtRQUVsREEsYUFBYW1ELGdCQUFpQixHQUFHO1FBRWpDLE1BQU1DLE9BQU87WUFDWHREO1lBQ0FFO1FBQ0Y7UUFFQSxPQUFPb0Q7SUFDVDtJQUVBLE9BQU9DLE9BQU8sZ0JBQWdCO0lBRTlCLE9BQU9DLFNBQVNGLElBQUksRUFBRXZELE9BQU8sRUFBRTtRQUM3QixJQUFJc0M7UUFFSm9CLElBQUFBLG9CQUFXLEVBQUMsQ0FBQzFEO1lBQ1gsTUFBTSxFQUFFQyxNQUFNLEVBQUUsR0FBR3NELE1BQ2I3QyxvQkFBb0JpRCxJQUFBQSxxQ0FBd0IsRUFBQzFELFFBQVFELFVBQ3JERSxPQUFPUSxtQkFDUFAsYUFBYVQsbUJBQW1CNkQsT0FDaENuRCxhQUFhd0QsSUFBQUEsd0NBQStCLEVBQUNMLE1BQU12RCxVQUNuREsscUJBQXFCd0QsSUFBQUEsZ0RBQXVDLEVBQUNOLE1BQU12RDtZQUV6RUEsVUFBVTtZQUVWc0MsZ0JBQWdCLElBQUl4QyxjQUFjRSxTQUFTQyxRQUFRQyxNQUFNQyxZQUFZQyxZQUFZQztRQUNuRixHQUFHTDtRQUVILE9BQU9zQztJQUNUO0FBQ0YifQ==
|
package/lib/element/rule.js
CHANGED
|
@@ -139,7 +139,7 @@ const _default = (0, _elements.define)(class Rule extends _occamlanguages.Elemen
|
|
|
139
139
|
const specificContext = context; ///
|
|
140
140
|
return (0, _context.reconcile)((context)=>{
|
|
141
141
|
return this.unifyStepWithConclusion(step, context, (context, back)=>{
|
|
142
|
-
return this.unifyFactOrSubproofsWithPremises(factOrSubproofs, context, (back)=>{
|
|
142
|
+
return this.unifyFactOrSubproofsWithPremises(factOrSubproofs, context, (context, back)=>{
|
|
143
143
|
const inferredSubstitutionsSolved = context.areInferredSubstitutionsSolved();
|
|
144
144
|
if (!inferredSubstitutionsSolved) {
|
|
145
145
|
return back();
|
|
@@ -153,20 +153,26 @@ const _default = (0, _elements.define)(class Rule extends _occamlanguages.Elemen
|
|
|
153
153
|
unifyFactOrSubproofsWithPremise(factOrSubproofs, premise, context, forward, back) {
|
|
154
154
|
return extract(factOrSubproofs, (factOrSubproof, forward, back)=>{
|
|
155
155
|
return premise.unifyFactOrSubproof(factOrSubproof, context, forward, back);
|
|
156
|
-
}, (factOrSubproof, back)=>{
|
|
157
|
-
return context.solveInferredSubstitutions(
|
|
156
|
+
}, (factOrSubproofs, factOrSubproof, context, back)=>{
|
|
157
|
+
return context.solveInferredSubstitutions((back)=>{
|
|
158
|
+
return forward(factOrSubproofs, context, back);
|
|
159
|
+
}, back);
|
|
158
160
|
}, (exception)=>{
|
|
159
161
|
if (exception) {
|
|
160
162
|
return back(exception);
|
|
161
163
|
}
|
|
162
|
-
return premise.unifyIndependently(context,
|
|
164
|
+
return premise.unifyIndependently(context, (context, back)=>{
|
|
165
|
+
return forward(factOrSubproofs, context, back);
|
|
166
|
+
}, back);
|
|
163
167
|
});
|
|
164
168
|
}
|
|
165
169
|
unifyFactOrSubproofsWithPremises(factOrSubproofs, context, forward, back) {
|
|
166
170
|
factOrSubproofs = reverse(factOrSubproofs); ///
|
|
167
|
-
return backwardsEvery(this.premises, (premise, forward, back)=>{
|
|
171
|
+
return backwardsEvery(this.premises, (premise, factOrSubproofs, context, forward, back)=>{
|
|
168
172
|
return this.unifyFactOrSubproofsWithPremise(factOrSubproofs, premise, context, forward, back);
|
|
169
|
-
},
|
|
173
|
+
}, factOrSubproofs, context, (factOrSubproofs, context, back)=>{
|
|
174
|
+
return forward(context, back);
|
|
175
|
+
}, back);
|
|
170
176
|
}
|
|
171
177
|
toJSON() {
|
|
172
178
|
const labelsJSON = (0, _json.labelsToLabelsJSON)(this.labels), premisesJSON = (0, _json.premisesToPremisesJSON)(this.premises), conclusionJSON = (0, _json.conclusionToConclusionJSON)(this.conclusion), string = this.getString();
|
|
@@ -190,4 +196,4 @@ const _default = (0, _elements.define)(class Rule extends _occamlanguages.Elemen
|
|
|
190
196
|
}
|
|
191
197
|
});
|
|
192
198
|
|
|
193
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L3J1bGUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGFycmF5VXRpbGl0aWVzIH0gZnJvbSBcIm5lY2Vzc2FyeVwiO1xuaW1wb3J0IHsgRWxlbWVudCwgYnJlYWtQb2ludFV0aWxpdGllcywgY29udGludWF0aW9uVXRpbGl0aWVzIH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IGVuY2xvc2UsIHJlY29uY2lsZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvY29udGV4dFwiO1xuaW1wb3J0IHsgbGFiZWxzRnJvbUpTT04sIHByZW1pc2VzRnJvbUpTT04sIGNvbmNsdXNpb25Gcm9tSlNPTiwgbGFiZWxzVG9MYWJlbHNKU09OLCBwcmVtaXNlc1RvUHJlbWlzZXNKU09OLCBjb25jbHVzaW9uVG9Db25jbHVzaW9uSlNPTiB9IGZyb20gXCIuLi91dGlsaXRpZXMvanNvblwiO1xuXG5jb25zdCB7IHJldmVyc2UgfSA9IGFycmF5VXRpbGl0aWVzLFxuICAgICAgeyBhbGwsIGV2ZXJ5LCBleHRyYWN0LCBmb3J3YXJkc0V2ZXJ5LCBiYWNrd2FyZHNFdmVyeSB9ID0gY29udGludWF0aW9uVXRpbGl0aWVzLFxuICAgICAgeyBicmVha2FibGUsIGJyZWFrUG9pbnRGcm9tSlNPTiwgYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04gfSA9IGJyZWFrUG9pbnRVdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBSdWxlIGV4dGVuZHMgRWxlbWVudCB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgcHJvb2YsIGxhYmVscywgcHJlbWlzZXMsIGNvbmNsdXNpb24pIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy5wcm9vZiA9IHByb29mO1xuICAgIHRoaXMubGFiZWxzID0gbGFiZWxzO1xuICAgIHRoaXMucHJlbWlzZXMgPSBwcmVtaXNlcztcbiAgICB0aGlzLmNvbmNsdXNpb24gPSBjb25jbHVzaW9uO1xuICB9XG5cbiAgZ2V0TGFiZWxzKCkge1xuICAgIHJldHVybiB0aGlzLmxhYmVscztcbiAgfVxuXG4gIGdldFByZW1pc2VzKCkge1xuICAgIHJldHVybiB0aGlzLnByZW1pc2VzO1xuICB9XG5cbiAgZ2V0UHJvb2YoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvb2Y7XG4gIH1cblxuICBnZXRDb25jbHVzaW9uKCkge1xuICAgIHJldHVybiB0aGlzLmNvbmNsdXNpb247XG4gIH1cblxuICBnZXRSdWxlTm9kZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5nZXROb2RlKCksXG4gICAgICAgICAgcnVsZU5vZGUgPSBub2RlOyAgLy8vXG5cbiAgICByZXR1cm4gcnVsZU5vZGU7XG4gIH1cblxuICBtYXRjaE1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSkge1xuICAgIGNvbnN0IG1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzID0gdGhpcy5sYWJlbHMuc29tZSgobGFiZWwpID0+IHtcbiAgICAgIGNvbnN0IG1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzID0gbGFiZWwubWF0Y2hNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpO1xuXG4gICAgICBpZiAobWV0YXZhcmlhYmxlTm9kZU1hdGNoZXMpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbWV0YXZhcmlhYmxlTm9kZU1hdGNoZXM7XG4gIH1cblxuICB2ZXJpZnkgPSBicmVha2FibGUoZnVuY3Rpb24gKGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBydWxlU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3J1bGVTdHJpbmd9JyBydWxlLi4uYCk7XG5cbiAgICByZXR1cm4gZW5jbG9zZSgoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3QgdmVyaWZ5UHJvb2YgPSB0aGlzLnZlcmlmeVByb29mLmJpbmQodGhpcyksXG4gICAgICAgICAgICB2ZXJpZnlMYWJlbHMgPSB0aGlzLnZlcmlmeUxhYmVscy5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgdmVyaWZ5UHJlbWlzZXMgPSB0aGlzLnZlcmlmeVByZW1pc2VzLmJpbmQodGhpcyksXG4gICAgICAgICAgICB2ZXJpZnlDb25jbHVzaW9uID0gdGhpcy52ZXJpZnlDb25jbHVzaW9uLmJpbmQodGhpcyk7XG5cbiAgICAgIHJldHVybiBhbGwoW1xuICAgICAgICB2ZXJpZnlMYWJlbHMsXG4gICAgICAgIHZlcmlmeVByZW1pc2VzLFxuICAgICAgICB2ZXJpZnlDb25jbHVzaW9uLFxuICAgICAgICB2ZXJpZnlQcm9vZlxuICAgICAgXSwgY29udGV4dCwgKCBfICwgYmFjaykgPT4ge1xuICAgICAgICBjb25zdCBydWxlID0gdGhpczsgLy8vXG5cbiAgICAgICAgY29udGV4dC5hZGRSdWxlKHJ1bGUpO1xuXG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtydWxlU3RyaW5nfScgcnVsZS5gKTtcblxuICAgICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICAgIH0sIGJhY2spO1xuICAgIH0sIGNvbnRleHQpO1xuICB9KTtcblxuICB2ZXJpZnlMYWJlbHMoY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHJ1bGVTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3J1bGVTdHJpbmd9JyBydWxlJ3MgbGFiZWxzLi4uYCk7XG5cbiAgICBjb25zdCB2ZXJpZnlMYWJlbCA9IHRoaXMudmVyaWZ5TGFiZWwuYmluZCh0aGlzKTtcblxuICAgIHJldHVybiBldmVyeSh0aGlzLmxhYmVscywgdmVyaWZ5TGFiZWwsIGNvbnRleHQsIChjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7cnVsZVN0cmluZ30nIHJ1bGUncyBsYWJlbHMuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdmVyaWZ5TGFiZWwobGFiZWwsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBsYWJlbFN0cmluZyA9IGxhYmVsLmdldFN0cmluZygpLFxuICAgICAgICAgIHJ1bGVTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7cnVsZVN0cmluZ30nIHJ1bGUncyAnJHtsYWJlbFN0cmluZ30nIGxhYmVsLi4uYCk7XG5cbiAgICByZXR1cm4gbGFiZWwudmVyaWZ5KChiYWNrKSA9PiB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7cnVsZVN0cmluZ30nIHJ1bGUncyAnJHtsYWJlbFN0cmluZ30nIGxhYmVsLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHZlcmlmeVByb29mKGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBpZiAodGhpcy5wcm9vZiA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgfVxuXG4gICAgY29uc3QgcnVsZVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7cnVsZVN0cmluZ30nIHJ1bGUncyBwcm9vZi4uLmApO1xuXG4gICAgY29uc3Qgc3RhdGVtZW50ID0gdGhpcy5jb25jbHVzaW9uLmdldFN0YXRlbWVudCgpO1xuXG4gICAgcmV0dXJuIHRoaXMucHJvb2YudmVyaWZ5KHN0YXRlbWVudCwgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtydWxlU3RyaW5nfScgcnVsZSdzIHByb29mLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHZlcmlmeUNvbmNsdXNpb24oY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHJ1bGVTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpLCAvLy9cbiAgICAgICAgICBjb25jbHVzaW9uU3RyaW5nID0gdGhpcy5jb25jbHVzaW9uLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtydWxlU3RyaW5nfScgcnVsZSdzICcke2NvbmNsdXNpb25TdHJpbmd9JyBjb25jbHVzaW9uLi4uYCk7XG5cbiAgICByZXR1cm4gdGhpcy5jb25jbHVzaW9uLnZlcmlmeShjb250ZXh0LCAoY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3J1bGVTdHJpbmd9JyBydWxlJ3MgJyR7Y29uY2x1c2lvblN0cmluZ30nIGNvbmNsdXNpb24uYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdmVyaWZ5UHJlbWlzZShwcmVtaXNlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgcnVsZVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCksIC8vL1xuICAgICAgICAgIHByZW1pc2VTdHJpbmcgPSBwcmVtaXNlLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtydWxlU3RyaW5nfScgcnVsZSdzICcke3ByZW1pc2VTdHJpbmd9JyBwcmVtaXNlLi4uYCk7XG5cbiAgICByZXR1cm4gcHJlbWlzZS52ZXJpZnkoY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnN0IGZhY3RPclN1YnByb29mID0gcHJlbWlzZTsgIC8vLy9cblxuICAgICAgY29udGV4dC5hc3NpZ25Bc3NpZ25tZW50cygpO1xuXG4gICAgICBjb250ZXh0LmFkZEZhY3RPclN1YnByb29mKGZhY3RPclN1YnByb29mKTtcblxuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3J1bGVTdHJpbmd9JyBydWxlJ3MgJyR7cHJlbWlzZVN0cmluZ30nIHByZW1pc2UuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdmVyaWZ5UHJlbWlzZXMoY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHByZW1pc2VzTGVuZ3RoID0gdGhpcy5wcmVtaXNlcy5sZW5ndGg7XG5cbiAgICBpZiAocHJlbWlzZXNMZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgIH1cblxuICAgIGNvbnN0IHJ1bGVTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3J1bGVTdHJpbmd9JyBydWxlJ3MgcHJlbWlzZXMuLi5gKTtcblxuICAgIHJldHVybiBmb3J3YXJkc0V2ZXJ5KHRoaXMucHJlbWlzZXMsIChwcmVtaXNlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy52ZXJpZnlQcmVtaXNlKHByZW1pc2UsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spO1xuICAgIH0sIGNvbnRleHQsIChjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7cnVsZVN0cmluZ30nIHJ1bGUncyBwcmVtaXNlcy5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB1bmlmeVN0ZXBXaXRoQ29uY2x1c2lvbihzdGVwLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgcnVsZVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgc3RlcFN0cmluZyA9IHN0ZXAuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgY29uY2x1c2lvblN0cmluZyA9IHRoaXMuY29uY2x1c2lvbi5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzdGVwU3RyaW5nfScgc3RlcCB3aXRoIHRoZSAnJHtydWxlU3RyaW5nfScgcnVsZSdzICcke2NvbmNsdXNpb25TdHJpbmd9JyBjb25jbHVzaW9uLi4uYCk7XG5cbiAgICByZXR1cm4gdGhpcy5jb25jbHVzaW9uLnVuaWZ5U3RlcChzdGVwLCBjb250ZXh0LCAoY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7c3RlcFN0cmluZ30nIHN0ZXAgd2l0aCB0aGUgJyR7cnVsZVN0cmluZ30nIHJ1bGUncyAnJHtjb25jbHVzaW9uU3RyaW5nfScgY29uY2x1c2lvbi5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB1bmlmeVN0ZXBBbmRGYWN0T3JTdWJwcm9vZnMoc3RlcCwgZmFjdE9yU3VicHJvb2ZzLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3Qgc3BlY2lmaWNDb250ZXh0ID0gY29udGV4dDsgIC8vL1xuXG4gICAgcmV0dXJuIHJlY29uY2lsZSgoY29udGV4dCkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMudW5pZnlTdGVwV2l0aENvbmNsdXNpb24oc3RlcCwgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMudW5pZnlGYWN0T3JTdWJwcm9vZnNXaXRoUHJlbWlzZXMoZmFjdE9yU3VicHJvb2ZzLCBjb250ZXh0LCAoYmFjaykgPT4ge1xuICAgICAgICAgIGNvbnN0IGluZmVycmVkU3Vic3RpdHV0aW9uc1NvbHZlZCA9IGNvbnRleHQuYXJlSW5mZXJyZWRTdWJzdGl0dXRpb25zU29sdmVkKCk7XG5cbiAgICAgICAgICBpZiAoIWluZmVycmVkU3Vic3RpdHV0aW9uc1NvbHZlZCkge1xuICAgICAgICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0OyAgLy8vXG5cbiAgICAgICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICAgICAgfSwgYmFjayk7XG4gICAgICB9LCBiYWNrKTtcbiAgICB9LCBjb250ZXh0KVxuICB9XG5cbiAgdW5pZnlGYWN0T3JTdWJwcm9vZnNXaXRoUHJlbWlzZShmYWN0T3JTdWJwcm9vZnMsIHByZW1pc2UsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICByZXR1cm4gZXh0cmFjdChmYWN0T3JTdWJwcm9vZnMsXG4gICAgICAoZmFjdE9yU3VicHJvb2YsIGZvcndhcmQsIGJhY2spID0+IHtcbiAgICAgICAgcmV0dXJuIHByZW1pc2UudW5pZnlGYWN0T3JTdWJwcm9vZihmYWN0T3JTdWJwcm9vZiwgY29udGV4dCwgZm9yd2FyZCwgYmFjayk7XG4gICAgICB9LCAoZmFjdE9yU3VicHJvb2YsIGJhY2spID0+IHtcbiAgICAgICAgcmV0dXJuIGNvbnRleHQuc29sdmVJbmZlcnJlZFN1YnN0aXR1dGlvbnMoZm9yd2FyZCwgYmFjayk7XG4gICAgICB9LCAoZXhjZXB0aW9uKSA9PiB7XG4gICAgICAgIGlmKGV4Y2VwdGlvbikge1xuICAgICAgICAgIHJldHVybiBiYWNrKGV4Y2VwdGlvbik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcHJlbWlzZS51bmlmeUluZGVwZW5kZW50bHkoY29udGV4dCwgZm9yd2FyZCwgYmFjayk7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIHVuaWZ5RmFjdE9yU3VicHJvb2ZzV2l0aFByZW1pc2VzKGZhY3RPclN1YnByb29mcywgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGZhY3RPclN1YnByb29mcyA9IHJldmVyc2UoZmFjdE9yU3VicHJvb2ZzKTsgLy8vXG5cbiAgICByZXR1cm4gYmFja3dhcmRzRXZlcnkodGhpcy5wcmVtaXNlcywgKHByZW1pc2UsIGZvcndhcmQsIGJhY2spID0+IHtcbiAgICAgIHJldHVybiB0aGlzLnVuaWZ5RmFjdE9yU3VicHJvb2ZzV2l0aFByZW1pc2UoZmFjdE9yU3VicHJvb2ZzLCBwcmVtaXNlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKTtcbiAgICB9LCBmb3J3YXJkLCBiYWNrKTtcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICBjb25zdCBsYWJlbHNKU09OID0gbGFiZWxzVG9MYWJlbHNKU09OKHRoaXMubGFiZWxzKSxcbiAgICAgICAgICBwcmVtaXNlc0pTT04gPSBwcmVtaXNlc1RvUHJlbWlzZXNKU09OKHRoaXMucHJlbWlzZXMpLFxuICAgICAgICAgIGNvbmNsdXNpb25KU09OID0gY29uY2x1c2lvblRvQ29uY2x1c2lvbkpTT04odGhpcy5jb25jbHVzaW9uKSxcbiAgICAgICAgICBzdHJpbmcgPSB0aGlzLmdldFN0cmluZygpO1xuXG4gICAgbGV0IGJyZWFrUG9pbnQ7XG5cbiAgICBicmVha1BvaW50ID0gdGhpcy5nZXRCcmVha1BvaW50KCk7XG5cbiAgICBjb25zdCBicmVha1BvaW50SlNPTiA9IGJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OKGJyZWFrUG9pbnQpO1xuXG4gICAgYnJlYWtQb2ludCA9IGJyZWFrUG9pbnRKU09OOyAgLy8vXG5cbiAgICBjb25zdCBsYWJlbHMgPSBsYWJlbHNKU09OLCAgLy8vXG4gICAgICAgICAgcHJlbWlzZXMgPSBwcmVtaXNlc0pTT04sICAvLy9cbiAgICAgICAgICBjb25jbHVzaW9uID0gY29uY2x1c2lvbkpTT04sICAvLy9cbiAgICAgICAgICBqc29uID0ge1xuICAgICAgICAgICAgc3RyaW5nLFxuICAgICAgICAgICAgYnJlYWtQb2ludCxcbiAgICAgICAgICAgIGxhYmVscyxcbiAgICAgICAgICAgIHByZW1pc2VzLFxuICAgICAgICAgICAgY29uY2x1c2lvblxuICAgICAgICAgIH07XG5cbiAgICByZXR1cm4ganNvbjtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJSdWxlXCI7XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgICBjb25zdCB7IHN0cmluZyB9ID0ganNvbixcbiAgICAgICAgICBub2RlID0gbnVsbCxcbiAgICAgICAgICBicmVha1BvaW50ID0gYnJlYWtQb2ludEZyb21KU09OKGpzb24pLFxuICAgICAgICAgIGxhYmVscyA9IGxhYmVsc0Zyb21KU09OKGpzb24sIGNvbnRleHQpLFxuICAgICAgICAgIHByZW1pc2VzID0gcHJlbWlzZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSxcbiAgICAgICAgICBjb25jbHVzaW9uID0gY29uY2x1c2lvbkZyb21KU09OKGpzb24sIGNvbnRleHQpLFxuICAgICAgICAgIHByb29mID0gbnVsbCxcbiAgICAgICAgICBydWxlID0gbmV3IFJ1bGUoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCBwcm9vZiwgbGFiZWxzLCBwcmVtaXNlcywgY29uY2x1c2lvbik7XG5cbiAgICByZXR1cm4gcnVsZTtcbiAgfVxufSk7XG4iXSwibmFtZXMiOlsicmV2ZXJzZSIsImFycmF5VXRpbGl0aWVzIiwiYWxsIiwiZXZlcnkiLCJleHRyYWN0IiwiZm9yd2FyZHNFdmVyeSIsImJhY2t3YXJkc0V2ZXJ5IiwiY29udGludWF0aW9uVXRpbGl0aWVzIiwiYnJlYWthYmxlIiwiYnJlYWtQb2ludEZyb21KU09OIiwiYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04iLCJicmVha1BvaW50VXRpbGl0aWVzIiwiZGVmaW5lIiwiUnVsZSIsIkVsZW1lbnQiLCJjb250ZXh0Iiwic3RyaW5nIiwibm9kZSIsImJyZWFrUG9pbnQiLCJwcm9vZiIsImxhYmVscyIsInByZW1pc2VzIiwiY29uY2x1c2lvbiIsImdldExhYmVscyIsImdldFByZW1pc2VzIiwiZ2V0UHJvb2YiLCJnZXRDb25jbHVzaW9uIiwiZ2V0UnVsZU5vZGUiLCJnZXROb2RlIiwicnVsZU5vZGUiLCJtYXRjaE1ldGF2YXJpYWJsZU5vZGUiLCJtZXRhdmFyaWFibGVOb2RlIiwibWV0YXZhcmlhYmxlTm9kZU1hdGNoZXMiLCJzb21lIiwibGFiZWwiLCJ2ZXJpZnkiLCJmb3J3YXJkIiwiYmFjayIsInJ1bGVTdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsImVuY2xvc2UiLCJ2ZXJpZnlQcm9vZiIsImJpbmQiLCJ2ZXJpZnlMYWJlbHMiLCJ2ZXJpZnlQcmVtaXNlcyIsInZlcmlmeUNvbmNsdXNpb24iLCJfIiwicnVsZSIsImFkZFJ1bGUiLCJkZWJ1ZyIsInZlcmlmeUxhYmVsIiwibGFiZWxTdHJpbmciLCJzdGF0ZW1lbnQiLCJnZXRTdGF0ZW1lbnQiLCJjb25jbHVzaW9uU3RyaW5nIiwidmVyaWZ5UHJlbWlzZSIsInByZW1pc2UiLCJwcmVtaXNlU3RyaW5nIiwiZmFjdE9yU3VicHJvb2YiLCJhc3NpZ25Bc3NpZ25tZW50cyIsImFkZEZhY3RPclN1YnByb29mIiwicHJlbWlzZXNMZW5ndGgiLCJsZW5ndGgiLCJ1bmlmeVN0ZXBXaXRoQ29uY2x1c2lvbiIsInN0ZXAiLCJzdGVwU3RyaW5nIiwidW5pZnlTdGVwIiwidW5pZnlTdGVwQW5kRmFjdE9yU3VicHJvb2ZzIiwiZmFjdE9yU3VicHJvb2ZzIiwic3BlY2lmaWNDb250ZXh0IiwicmVjb25jaWxlIiwidW5pZnlGYWN0T3JTdWJwcm9vZnNXaXRoUHJlbWlzZXMiLCJpbmZlcnJlZFN1YnN0aXR1dGlvbnNTb2x2ZWQiLCJhcmVJbmZlcnJlZFN1YnN0aXR1dGlvbnNTb2x2ZWQiLCJ1bmlmeUZhY3RPclN1YnByb29mc1dpdGhQcmVtaXNlIiwidW5pZnlGYWN0T3JTdWJwcm9vZiIsInNvbHZlSW5mZXJyZWRTdWJzdGl0dXRpb25zIiwiZXhjZXB0aW9uIiwidW5pZnlJbmRlcGVuZGVudGx5IiwidG9KU09OIiwibGFiZWxzSlNPTiIsImxhYmVsc1RvTGFiZWxzSlNPTiIsInByZW1pc2VzSlNPTiIsInByZW1pc2VzVG9QcmVtaXNlc0pTT04iLCJjb25jbHVzaW9uSlNPTiIsImNvbmNsdXNpb25Ub0NvbmNsdXNpb25KU09OIiwiZ2V0QnJlYWtQb2ludCIsImJyZWFrUG9pbnRKU09OIiwianNvbiIsIm5hbWUiLCJmcm9tSlNPTiIsImxhYmVsc0Zyb21KU09OIiwicHJlbWlzZXNGcm9tSlNPTiIsImNvbmNsdXNpb25Gcm9tSlNPTiJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBYUE7OztlQUFBOzs7MkJBWCtCO2dDQUNxQzswQkFFN0M7eUJBQ1k7c0JBQzBHO0FBRTdJLE1BQU0sRUFBRUEsT0FBTyxFQUFFLEdBQUdDLHlCQUFjLEVBQzVCLEVBQUVDLEdBQUcsRUFBRUMsS0FBSyxFQUFFQyxPQUFPLEVBQUVDLGFBQWEsRUFBRUMsY0FBYyxFQUFFLEdBQUdDLHFDQUFxQixFQUM5RSxFQUFFQyxTQUFTLEVBQUVDLGtCQUFrQixFQUFFQywwQkFBMEIsRUFBRSxHQUFHQyxtQ0FBbUI7TUFFekYsV0FBZUMsSUFBQUEsZ0JBQU0sRUFBQyxNQUFNQyxhQUFhQyx1QkFBTztJQUM5QyxZQUFZQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxVQUFVLEVBQUVDLEtBQUssRUFBRUMsTUFBTSxFQUFFQyxRQUFRLEVBQUVDLFVBQVUsQ0FBRTtRQUNsRixLQUFLLENBQUNQLFNBQVNDLFFBQVFDLE1BQU1DO1FBRTdCLElBQUksQ0FBQ0MsS0FBSyxHQUFHQTtRQUNiLElBQUksQ0FB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
|
|
199
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L3J1bGUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGFycmF5VXRpbGl0aWVzIH0gZnJvbSBcIm5lY2Vzc2FyeVwiO1xuaW1wb3J0IHsgRWxlbWVudCwgYnJlYWtQb2ludFV0aWxpdGllcywgY29udGludWF0aW9uVXRpbGl0aWVzIH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IGVuY2xvc2UsIHJlY29uY2lsZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvY29udGV4dFwiO1xuaW1wb3J0IHsgbGFiZWxzRnJvbUpTT04sIHByZW1pc2VzRnJvbUpTT04sIGNvbmNsdXNpb25Gcm9tSlNPTiwgbGFiZWxzVG9MYWJlbHNKU09OLCBwcmVtaXNlc1RvUHJlbWlzZXNKU09OLCBjb25jbHVzaW9uVG9Db25jbHVzaW9uSlNPTiB9IGZyb20gXCIuLi91dGlsaXRpZXMvanNvblwiO1xuXG5jb25zdCB7IHJldmVyc2UgfSA9IGFycmF5VXRpbGl0aWVzLFxuICAgICAgeyBhbGwsIGV2ZXJ5LCBleHRyYWN0LCBmb3J3YXJkc0V2ZXJ5LCBiYWNrd2FyZHNFdmVyeSB9ID0gY29udGludWF0aW9uVXRpbGl0aWVzLFxuICAgICAgeyBicmVha2FibGUsIGJyZWFrUG9pbnRGcm9tSlNPTiwgYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04gfSA9IGJyZWFrUG9pbnRVdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBSdWxlIGV4dGVuZHMgRWxlbWVudCB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgcHJvb2YsIGxhYmVscywgcHJlbWlzZXMsIGNvbmNsdXNpb24pIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy5wcm9vZiA9IHByb29mO1xuICAgIHRoaXMubGFiZWxzID0gbGFiZWxzO1xuICAgIHRoaXMucHJlbWlzZXMgPSBwcmVtaXNlcztcbiAgICB0aGlzLmNvbmNsdXNpb24gPSBjb25jbHVzaW9uO1xuICB9XG5cbiAgZ2V0TGFiZWxzKCkge1xuICAgIHJldHVybiB0aGlzLmxhYmVscztcbiAgfVxuXG4gIGdldFByZW1pc2VzKCkge1xuICAgIHJldHVybiB0aGlzLnByZW1pc2VzO1xuICB9XG5cbiAgZ2V0UHJvb2YoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvb2Y7XG4gIH1cblxuICBnZXRDb25jbHVzaW9uKCkge1xuICAgIHJldHVybiB0aGlzLmNvbmNsdXNpb247XG4gIH1cblxuICBnZXRSdWxlTm9kZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5nZXROb2RlKCksXG4gICAgICAgICAgcnVsZU5vZGUgPSBub2RlOyAgLy8vXG5cbiAgICByZXR1cm4gcnVsZU5vZGU7XG4gIH1cblxuICBtYXRjaE1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSkge1xuICAgIGNvbnN0IG1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzID0gdGhpcy5sYWJlbHMuc29tZSgobGFiZWwpID0+IHtcbiAgICAgIGNvbnN0IG1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzID0gbGFiZWwubWF0Y2hNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpO1xuXG4gICAgICBpZiAobWV0YXZhcmlhYmxlTm9kZU1hdGNoZXMpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbWV0YXZhcmlhYmxlTm9kZU1hdGNoZXM7XG4gIH1cblxuICB2ZXJpZnkgPSBicmVha2FibGUoZnVuY3Rpb24gKGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBydWxlU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3J1bGVTdHJpbmd9JyBydWxlLi4uYCk7XG5cbiAgICByZXR1cm4gZW5jbG9zZSgoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3QgdmVyaWZ5UHJvb2YgPSB0aGlzLnZlcmlmeVByb29mLmJpbmQodGhpcyksXG4gICAgICAgICAgICB2ZXJpZnlMYWJlbHMgPSB0aGlzLnZlcmlmeUxhYmVscy5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgdmVyaWZ5UHJlbWlzZXMgPSB0aGlzLnZlcmlmeVByZW1pc2VzLmJpbmQodGhpcyksXG4gICAgICAgICAgICB2ZXJpZnlDb25jbHVzaW9uID0gdGhpcy52ZXJpZnlDb25jbHVzaW9uLmJpbmQodGhpcyk7XG5cbiAgICAgIHJldHVybiBhbGwoW1xuICAgICAgICB2ZXJpZnlMYWJlbHMsXG4gICAgICAgIHZlcmlmeVByZW1pc2VzLFxuICAgICAgICB2ZXJpZnlDb25jbHVzaW9uLFxuICAgICAgICB2ZXJpZnlQcm9vZlxuICAgICAgXSwgY29udGV4dCwgKCBfICwgYmFjaykgPT4ge1xuICAgICAgICBjb25zdCBydWxlID0gdGhpczsgLy8vXG5cbiAgICAgICAgY29udGV4dC5hZGRSdWxlKHJ1bGUpO1xuXG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtydWxlU3RyaW5nfScgcnVsZS5gKTtcblxuICAgICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICAgIH0sIGJhY2spO1xuICAgIH0sIGNvbnRleHQpO1xuICB9KTtcblxuICB2ZXJpZnlMYWJlbHMoY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHJ1bGVTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3J1bGVTdHJpbmd9JyBydWxlJ3MgbGFiZWxzLi4uYCk7XG5cbiAgICBjb25zdCB2ZXJpZnlMYWJlbCA9IHRoaXMudmVyaWZ5TGFiZWwuYmluZCh0aGlzKTtcblxuICAgIHJldHVybiBldmVyeSh0aGlzLmxhYmVscywgdmVyaWZ5TGFiZWwsIGNvbnRleHQsIChjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7cnVsZVN0cmluZ30nIHJ1bGUncyBsYWJlbHMuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdmVyaWZ5TGFiZWwobGFiZWwsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBsYWJlbFN0cmluZyA9IGxhYmVsLmdldFN0cmluZygpLFxuICAgICAgICAgIHJ1bGVTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7cnVsZVN0cmluZ30nIHJ1bGUncyAnJHtsYWJlbFN0cmluZ30nIGxhYmVsLi4uYCk7XG5cbiAgICByZXR1cm4gbGFiZWwudmVyaWZ5KChiYWNrKSA9PiB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7cnVsZVN0cmluZ30nIHJ1bGUncyAnJHtsYWJlbFN0cmluZ30nIGxhYmVsLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHZlcmlmeVByb29mKGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBpZiAodGhpcy5wcm9vZiA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgfVxuXG4gICAgY29uc3QgcnVsZVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7cnVsZVN0cmluZ30nIHJ1bGUncyBwcm9vZi4uLmApO1xuXG4gICAgY29uc3Qgc3RhdGVtZW50ID0gdGhpcy5jb25jbHVzaW9uLmdldFN0YXRlbWVudCgpO1xuXG4gICAgcmV0dXJuIHRoaXMucHJvb2YudmVyaWZ5KHN0YXRlbWVudCwgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtydWxlU3RyaW5nfScgcnVsZSdzIHByb29mLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHZlcmlmeUNvbmNsdXNpb24oY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHJ1bGVTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpLCAvLy9cbiAgICAgICAgICBjb25jbHVzaW9uU3RyaW5nID0gdGhpcy5jb25jbHVzaW9uLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtydWxlU3RyaW5nfScgcnVsZSdzICcke2NvbmNsdXNpb25TdHJpbmd9JyBjb25jbHVzaW9uLi4uYCk7XG5cbiAgICByZXR1cm4gdGhpcy5jb25jbHVzaW9uLnZlcmlmeShjb250ZXh0LCAoY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3J1bGVTdHJpbmd9JyBydWxlJ3MgJyR7Y29uY2x1c2lvblN0cmluZ30nIGNvbmNsdXNpb24uYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdmVyaWZ5UHJlbWlzZShwcmVtaXNlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgcnVsZVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCksIC8vL1xuICAgICAgICAgIHByZW1pc2VTdHJpbmcgPSBwcmVtaXNlLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtydWxlU3RyaW5nfScgcnVsZSdzICcke3ByZW1pc2VTdHJpbmd9JyBwcmVtaXNlLi4uYCk7XG5cbiAgICByZXR1cm4gcHJlbWlzZS52ZXJpZnkoY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnN0IGZhY3RPclN1YnByb29mID0gcHJlbWlzZTsgIC8vLy9cblxuICAgICAgY29udGV4dC5hc3NpZ25Bc3NpZ25tZW50cygpO1xuXG4gICAgICBjb250ZXh0LmFkZEZhY3RPclN1YnByb29mKGZhY3RPclN1YnByb29mKTtcblxuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3J1bGVTdHJpbmd9JyBydWxlJ3MgJyR7cHJlbWlzZVN0cmluZ30nIHByZW1pc2UuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdmVyaWZ5UHJlbWlzZXMoY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHByZW1pc2VzTGVuZ3RoID0gdGhpcy5wcmVtaXNlcy5sZW5ndGg7XG5cbiAgICBpZiAocHJlbWlzZXNMZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgIH1cblxuICAgIGNvbnN0IHJ1bGVTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3J1bGVTdHJpbmd9JyBydWxlJ3MgcHJlbWlzZXMuLi5gKTtcblxuICAgIHJldHVybiBmb3J3YXJkc0V2ZXJ5KHRoaXMucHJlbWlzZXMsIChwcmVtaXNlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy52ZXJpZnlQcmVtaXNlKHByZW1pc2UsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spO1xuICAgIH0sIGNvbnRleHQsIChjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7cnVsZVN0cmluZ30nIHJ1bGUncyBwcmVtaXNlcy5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB1bmlmeVN0ZXBXaXRoQ29uY2x1c2lvbihzdGVwLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgcnVsZVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgc3RlcFN0cmluZyA9IHN0ZXAuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgY29uY2x1c2lvblN0cmluZyA9IHRoaXMuY29uY2x1c2lvbi5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzdGVwU3RyaW5nfScgc3RlcCB3aXRoIHRoZSAnJHtydWxlU3RyaW5nfScgcnVsZSdzICcke2NvbmNsdXNpb25TdHJpbmd9JyBjb25jbHVzaW9uLi4uYCk7XG5cbiAgICByZXR1cm4gdGhpcy5jb25jbHVzaW9uLnVuaWZ5U3RlcChzdGVwLCBjb250ZXh0LCAoY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7c3RlcFN0cmluZ30nIHN0ZXAgd2l0aCB0aGUgJyR7cnVsZVN0cmluZ30nIHJ1bGUncyAnJHtjb25jbHVzaW9uU3RyaW5nfScgY29uY2x1c2lvbi5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB1bmlmeVN0ZXBBbmRGYWN0T3JTdWJwcm9vZnMoc3RlcCwgZmFjdE9yU3VicHJvb2ZzLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3Qgc3BlY2lmaWNDb250ZXh0ID0gY29udGV4dDsgIC8vL1xuXG4gICAgcmV0dXJuIHJlY29uY2lsZSgoY29udGV4dCkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMudW5pZnlTdGVwV2l0aENvbmNsdXNpb24oc3RlcCwgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMudW5pZnlGYWN0T3JTdWJwcm9vZnNXaXRoUHJlbWlzZXMoZmFjdE9yU3VicHJvb2ZzLCBjb250ZXh0LCAoY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICAgIGNvbnN0IGluZmVycmVkU3Vic3RpdHV0aW9uc1NvbHZlZCA9IGNvbnRleHQuYXJlSW5mZXJyZWRTdWJzdGl0dXRpb25zU29sdmVkKCk7XG5cbiAgICAgICAgICBpZiAoIWluZmVycmVkU3Vic3RpdHV0aW9uc1NvbHZlZCkge1xuICAgICAgICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0OyAgLy8vXG5cbiAgICAgICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICAgICAgfSwgYmFjayk7XG4gICAgICB9LCBiYWNrKTtcbiAgICB9LCBjb250ZXh0KVxuICB9XG5cbiAgdW5pZnlGYWN0T3JTdWJwcm9vZnNXaXRoUHJlbWlzZShmYWN0T3JTdWJwcm9vZnMsIHByZW1pc2UsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICByZXR1cm4gZXh0cmFjdChmYWN0T3JTdWJwcm9vZnMsXG4gICAgICAoZmFjdE9yU3VicHJvb2YsIGZvcndhcmQsIGJhY2spID0+IHtcbiAgICAgICAgcmV0dXJuIHByZW1pc2UudW5pZnlGYWN0T3JTdWJwcm9vZihmYWN0T3JTdWJwcm9vZiwgY29udGV4dCwgZm9yd2FyZCwgYmFjayk7XG4gICAgICB9LCAoZmFjdE9yU3VicHJvb2ZzLCBmYWN0T3JTdWJwcm9vZiwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICByZXR1cm4gY29udGV4dC5zb2x2ZUluZmVycmVkU3Vic3RpdHV0aW9ucygoYmFjaykgPT4ge1xuICAgICAgICAgIHJldHVybiBmb3J3YXJkKGZhY3RPclN1YnByb29mcywgY29udGV4dCwgYmFjayk7XG4gICAgICAgIH0sIGJhY2spO1xuICAgICAgfSwgKGV4Y2VwdGlvbikgPT4ge1xuICAgICAgICBpZihleGNlcHRpb24pIHtcbiAgICAgICAgICByZXR1cm4gYmFjayhleGNlcHRpb24pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHByZW1pc2UudW5pZnlJbmRlcGVuZGVudGx5KGNvbnRleHQsIChjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGZvcndhcmQoZmFjdE9yU3VicHJvb2ZzLCBjb250ZXh0LCBiYWNrKTtcbiAgICAgICAgfSwgYmFjayk7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIHVuaWZ5RmFjdE9yU3VicHJvb2ZzV2l0aFByZW1pc2VzKGZhY3RPclN1YnByb29mcywgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGZhY3RPclN1YnByb29mcyA9IHJldmVyc2UoZmFjdE9yU3VicHJvb2ZzKTsgLy8vXG5cbiAgICByZXR1cm4gYmFja3dhcmRzRXZlcnkodGhpcy5wcmVtaXNlcywgKHByZW1pc2UsIGZhY3RPclN1YnByb29mcywgY29udGV4dCwgZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMudW5pZnlGYWN0T3JTdWJwcm9vZnNXaXRoUHJlbWlzZShmYWN0T3JTdWJwcm9vZnMsIHByZW1pc2UsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spO1xuICAgIH0sIGZhY3RPclN1YnByb29mcywgY29udGV4dCwgKGZhY3RPclN1YnByb29mcywgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgY29uc3QgbGFiZWxzSlNPTiA9IGxhYmVsc1RvTGFiZWxzSlNPTih0aGlzLmxhYmVscyksXG4gICAgICAgICAgcHJlbWlzZXNKU09OID0gcHJlbWlzZXNUb1ByZW1pc2VzSlNPTih0aGlzLnByZW1pc2VzKSxcbiAgICAgICAgICBjb25jbHVzaW9uSlNPTiA9IGNvbmNsdXNpb25Ub0NvbmNsdXNpb25KU09OKHRoaXMuY29uY2x1c2lvbiksXG4gICAgICAgICAgc3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTtcblxuICAgIGxldCBicmVha1BvaW50O1xuXG4gICAgYnJlYWtQb2ludCA9IHRoaXMuZ2V0QnJlYWtQb2ludCgpO1xuXG4gICAgY29uc3QgYnJlYWtQb2ludEpTT04gPSBicmVha1BvaW50VG9CcmVha1BvaW50SlNPTihicmVha1BvaW50KTtcblxuICAgIGJyZWFrUG9pbnQgPSBicmVha1BvaW50SlNPTjsgIC8vL1xuXG4gICAgY29uc3QgbGFiZWxzID0gbGFiZWxzSlNPTiwgIC8vL1xuICAgICAgICAgIHByZW1pc2VzID0gcHJlbWlzZXNKU09OLCAgLy8vXG4gICAgICAgICAgY29uY2x1c2lvbiA9IGNvbmNsdXNpb25KU09OLCAgLy8vXG4gICAgICAgICAganNvbiA9IHtcbiAgICAgICAgICAgIHN0cmluZyxcbiAgICAgICAgICAgIGJyZWFrUG9pbnQsXG4gICAgICAgICAgICBsYWJlbHMsXG4gICAgICAgICAgICBwcmVtaXNlcyxcbiAgICAgICAgICAgIGNvbmNsdXNpb25cbiAgICAgICAgICB9O1xuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiUnVsZVwiO1xuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgbm9kZSA9IG51bGwsXG4gICAgICAgICAgYnJlYWtQb2ludCA9IGJyZWFrUG9pbnRGcm9tSlNPTihqc29uKSxcbiAgICAgICAgICBsYWJlbHMgPSBsYWJlbHNGcm9tSlNPTihqc29uLCBjb250ZXh0KSxcbiAgICAgICAgICBwcmVtaXNlcyA9IHByZW1pc2VzRnJvbUpTT04oanNvbiwgY29udGV4dCksXG4gICAgICAgICAgY29uY2x1c2lvbiA9IGNvbmNsdXNpb25Gcm9tSlNPTihqc29uLCBjb250ZXh0KSxcbiAgICAgICAgICBwcm9vZiA9IG51bGwsXG4gICAgICAgICAgcnVsZSA9IG5ldyBSdWxlKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgcHJvb2YsIGxhYmVscywgcHJlbWlzZXMsIGNvbmNsdXNpb24pO1xuXG4gICAgcmV0dXJuIHJ1bGU7XG4gIH1cbn0pO1xuIl0sIm5hbWVzIjpbInJldmVyc2UiLCJhcnJheVV0aWxpdGllcyIsImFsbCIsImV2ZXJ5IiwiZXh0cmFjdCIsImZvcndhcmRzRXZlcnkiLCJiYWNrd2FyZHNFdmVyeSIsImNvbnRpbnVhdGlvblV0aWxpdGllcyIsImJyZWFrYWJsZSIsImJyZWFrUG9pbnRGcm9tSlNPTiIsImJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OIiwiYnJlYWtQb2ludFV0aWxpdGllcyIsImRlZmluZSIsIlJ1bGUiLCJFbGVtZW50IiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJicmVha1BvaW50IiwicHJvb2YiLCJsYWJlbHMiLCJwcmVtaXNlcyIsImNvbmNsdXNpb24iLCJnZXRMYWJlbHMiLCJnZXRQcmVtaXNlcyIsImdldFByb29mIiwiZ2V0Q29uY2x1c2lvbiIsImdldFJ1bGVOb2RlIiwiZ2V0Tm9kZSIsInJ1bGVOb2RlIiwibWF0Y2hNZXRhdmFyaWFibGVOb2RlIiwibWV0YXZhcmlhYmxlTm9kZSIsIm1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzIiwic29tZSIsImxhYmVsIiwidmVyaWZ5IiwiZm9yd2FyZCIsImJhY2siLCJydWxlU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJlbmNsb3NlIiwidmVyaWZ5UHJvb2YiLCJiaW5kIiwidmVyaWZ5TGFiZWxzIiwidmVyaWZ5UHJlbWlzZXMiLCJ2ZXJpZnlDb25jbHVzaW9uIiwiXyIsInJ1bGUiLCJhZGRSdWxlIiwiZGVidWciLCJ2ZXJpZnlMYWJlbCIsImxhYmVsU3RyaW5nIiwic3RhdGVtZW50IiwiZ2V0U3RhdGVtZW50IiwiY29uY2x1c2lvblN0cmluZyIsInZlcmlmeVByZW1pc2UiLCJwcmVtaXNlIiwicHJlbWlzZVN0cmluZyIsImZhY3RPclN1YnByb29mIiwiYXNzaWduQXNzaWdubWVudHMiLCJhZGRGYWN0T3JTdWJwcm9vZiIsInByZW1pc2VzTGVuZ3RoIiwibGVuZ3RoIiwidW5pZnlTdGVwV2l0aENvbmNsdXNpb24iLCJzdGVwIiwic3RlcFN0cmluZyIsInVuaWZ5U3RlcCIsInVuaWZ5U3RlcEFuZEZhY3RPclN1YnByb29mcyIsImZhY3RPclN1YnByb29mcyIsInNwZWNpZmljQ29udGV4dCIsInJlY29uY2lsZSIsInVuaWZ5RmFjdE9yU3VicHJvb2ZzV2l0aFByZW1pc2VzIiwiaW5mZXJyZWRTdWJzdGl0dXRpb25zU29sdmVkIiwiYXJlSW5mZXJyZWRTdWJzdGl0dXRpb25zU29sdmVkIiwidW5pZnlGYWN0T3JTdWJwcm9vZnNXaXRoUHJlbWlzZSIsInVuaWZ5RmFjdE9yU3VicHJvb2YiLCJzb2x2ZUluZmVycmVkU3Vic3RpdHV0aW9ucyIsImV4Y2VwdGlvbiIsInVuaWZ5SW5kZXBlbmRlbnRseSIsInRvSlNPTiIsImxhYmVsc0pTT04iLCJsYWJlbHNUb0xhYmVsc0pTT04iLCJwcmVtaXNlc0pTT04iLCJwcmVtaXNlc1RvUHJlbWlzZXNKU09OIiwiY29uY2x1c2lvbkpTT04iLCJjb25jbHVzaW9uVG9Db25jbHVzaW9uSlNPTiIsImdldEJyZWFrUG9pbnQiLCJicmVha1BvaW50SlNPTiIsImpzb24iLCJuYW1lIiwiZnJvbUpTT04iLCJsYWJlbHNGcm9tSlNPTiIsInByZW1pc2VzRnJvbUpTT04iLCJjb25jbHVzaW9uRnJvbUpTT04iXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQWFBOzs7ZUFBQTs7OzJCQVgrQjtnQ0FDcUM7MEJBRTdDO3lCQUNZO3NCQUMwRztBQUU3SSxNQUFNLEVBQUVBLE9BQU8sRUFBRSxHQUFHQyx5QkFBYyxFQUM1QixFQUFFQyxHQUFHLEVBQUVDLEtBQUssRUFBRUMsT0FBTyxFQUFF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
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "occam-nominal",
|
|
3
3
|
"author": "James Smith",
|
|
4
|
-
"version": "1.0.
|
|
4
|
+
"version": "1.0.487",
|
|
5
5
|
"license": "MIT, Anti-996",
|
|
6
6
|
"homepage": "https://github.com/djalbat/occam-nominal",
|
|
7
7
|
"description": "Occam's Nominal language.",
|
|
@@ -11,9 +11,9 @@
|
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
13
13
|
"necessary": "^17.6.3",
|
|
14
|
-
"occam-furtle": "^3.0.
|
|
14
|
+
"occam-furtle": "^3.0.484",
|
|
15
15
|
"occam-grammar-utilities": "^8.1.22",
|
|
16
|
-
"occam-languages": "^3.0.
|
|
16
|
+
"occam-languages": "^3.0.44",
|
|
17
17
|
"occam-query": "^4.1.206"
|
|
18
18
|
},
|
|
19
19
|
"devDependencies": {
|
package/src/element/claim.js
CHANGED
|
@@ -302,28 +302,34 @@ export default class Claim extends Element {
|
|
|
302
302
|
}, context);
|
|
303
303
|
}
|
|
304
304
|
|
|
305
|
-
unifyFactOrSubproofsWithSupposition(
|
|
306
|
-
return extract(
|
|
305
|
+
unifyFactOrSubproofsWithSupposition(factOrSubproofs, supposition, context, forward, back) {
|
|
306
|
+
return extract(factOrSubproofs,
|
|
307
307
|
(factOrSubproof, forward, back) => {
|
|
308
308
|
return supposition.unifyFactOrSubproof(factOrSubproof, context, forward, back);
|
|
309
|
-
}, (factOrSubproof, back) => {
|
|
310
|
-
return context.solveInferredSubstitutions(
|
|
309
|
+
}, (factOrSubproofs, factOrSubproof, context, back) => {
|
|
310
|
+
return context.solveInferredSubstitutions((back) => {
|
|
311
|
+
return forward(factOrSubproofs, context, back);
|
|
312
|
+
}, back);
|
|
311
313
|
}, (exception) => {
|
|
312
|
-
if
|
|
314
|
+
if(exception) {
|
|
313
315
|
return back(exception);
|
|
314
316
|
}
|
|
315
317
|
|
|
316
|
-
return supposition.unifyIndependently(context,
|
|
318
|
+
return supposition.unifyIndependently(context, (context, back) => {
|
|
319
|
+
return forward(factOrSubproofs, context, back);
|
|
320
|
+
}, back);
|
|
317
321
|
}
|
|
318
322
|
);
|
|
319
323
|
}
|
|
320
324
|
|
|
321
|
-
unifyFactOrSubproofsWithSuppositions(
|
|
322
|
-
|
|
325
|
+
unifyFactOrSubproofsWithSuppositions(factOrSubproofs, context, forward, back) {
|
|
326
|
+
factOrSubproofs = reverse(factOrSubproofs); ///
|
|
323
327
|
|
|
324
|
-
return backwardsEvery(this.suppositions, (supposition,
|
|
325
|
-
return this.unifyFactOrSubproofsWithSupposition(
|
|
326
|
-
},
|
|
328
|
+
return backwardsEvery(this.suppositions, (supposition, factOrSubproofs, context, forward, back) => {
|
|
329
|
+
return this.unifyFactOrSubproofsWithSupposition(factOrSubproofs, supposition, context, forward, back);
|
|
330
|
+
}, factOrSubproofs, context, (factOrSubproofs, context, back) => {
|
|
331
|
+
return forward(context, back);
|
|
332
|
+
}, back);
|
|
327
333
|
}
|
|
328
334
|
|
|
329
335
|
toJSON() {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import { Element, breakPointUtilities
|
|
3
|
+
import { Element, breakPointUtilities } from "occam-languages";
|
|
4
4
|
|
|
5
5
|
import Value from "../value";
|
|
6
6
|
|
|
@@ -9,8 +9,7 @@ import { instantiate } from "../utilities/context";
|
|
|
9
9
|
import { instantiateProcedureCall } from "../process/instantiate";
|
|
10
10
|
import { parametersFromProcedureCallNode, procedureReferenceFromProcedureCallNode } from "../utilities/element";
|
|
11
11
|
|
|
12
|
-
const {
|
|
13
|
-
{ breakPointFromJSON, breakPointToBreakPointJSON } = breakPointUtilities;
|
|
12
|
+
const { breakPointFromJSON, breakPointToBreakPointJSON } = breakPointUtilities;
|
|
14
13
|
|
|
15
14
|
export default define(class ProcedureCall extends Element {
|
|
16
15
|
constructor(context, string, node, breakPoint, parameters, procedureReference) {
|
|
@@ -142,7 +141,7 @@ export default define(class ProcedureCall extends Element {
|
|
|
142
141
|
value
|
|
143
142
|
];
|
|
144
143
|
|
|
145
|
-
return procedure.callNominally(values,
|
|
144
|
+
return procedure.callNominally(values, (value, back) => {
|
|
146
145
|
const boolean = value.isBoolean();
|
|
147
146
|
|
|
148
147
|
if (!boolean) {
|
|
@@ -160,7 +159,7 @@ export default define(class ProcedureCall extends Element {
|
|
|
160
159
|
context.debug(`...discharged the '${procedureCallString}' procedure call given the '${termString}' term.`);
|
|
161
160
|
|
|
162
161
|
return forward(back);
|
|
163
|
-
}, back)
|
|
162
|
+
}, back);
|
|
164
163
|
}
|
|
165
164
|
|
|
166
165
|
toJSON() {
|
package/src/element/rule.js
CHANGED
|
@@ -200,7 +200,7 @@ export default define(class Rule extends Element {
|
|
|
200
200
|
|
|
201
201
|
return reconcile((context) => {
|
|
202
202
|
return this.unifyStepWithConclusion(step, context, (context, back) => {
|
|
203
|
-
return this.unifyFactOrSubproofsWithPremises(factOrSubproofs, context, (back) => {
|
|
203
|
+
return this.unifyFactOrSubproofsWithPremises(factOrSubproofs, context, (context, back) => {
|
|
204
204
|
const inferredSubstitutionsSolved = context.areInferredSubstitutionsSolved();
|
|
205
205
|
|
|
206
206
|
if (!inferredSubstitutionsSolved) {
|
|
@@ -219,14 +219,18 @@ export default define(class Rule extends Element {
|
|
|
219
219
|
return extract(factOrSubproofs,
|
|
220
220
|
(factOrSubproof, forward, back) => {
|
|
221
221
|
return premise.unifyFactOrSubproof(factOrSubproof, context, forward, back);
|
|
222
|
-
}, (factOrSubproof, back) => {
|
|
223
|
-
return context.solveInferredSubstitutions(
|
|
222
|
+
}, (factOrSubproofs, factOrSubproof, context, back) => {
|
|
223
|
+
return context.solveInferredSubstitutions((back) => {
|
|
224
|
+
return forward(factOrSubproofs, context, back);
|
|
225
|
+
}, back);
|
|
224
226
|
}, (exception) => {
|
|
225
227
|
if(exception) {
|
|
226
228
|
return back(exception);
|
|
227
229
|
}
|
|
228
230
|
|
|
229
|
-
return premise.unifyIndependently(context,
|
|
231
|
+
return premise.unifyIndependently(context, (context, back) => {
|
|
232
|
+
return forward(factOrSubproofs, context, back);
|
|
233
|
+
}, back);
|
|
230
234
|
}
|
|
231
235
|
);
|
|
232
236
|
}
|
|
@@ -234,9 +238,11 @@ export default define(class Rule extends Element {
|
|
|
234
238
|
unifyFactOrSubproofsWithPremises(factOrSubproofs, context, forward, back) {
|
|
235
239
|
factOrSubproofs = reverse(factOrSubproofs); ///
|
|
236
240
|
|
|
237
|
-
return backwardsEvery(this.premises, (premise, forward, back) => {
|
|
241
|
+
return backwardsEvery(this.premises, (premise, factOrSubproofs, context, forward, back) => {
|
|
238
242
|
return this.unifyFactOrSubproofsWithPremise(factOrSubproofs, premise, context, forward, back);
|
|
239
|
-
},
|
|
243
|
+
}, factOrSubproofs, context, (factOrSubproofs, context, back) => {
|
|
244
|
+
return forward(context, back);
|
|
245
|
+
}, back);
|
|
240
246
|
}
|
|
241
247
|
|
|
242
248
|
toJSON() {
|