occam-nominal 1.0.431 → 1.0.434
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/equality.js +4 -13
- package/lib/element/equivalence.js +49 -37
- package/lib/process/equate.js +51 -17
- package/lib/utilities/brackets.js +17 -13
- package/lib/utilities/equivalences.js +6 -6
- package/package.json +5 -5
- package/src/element/equality.js +4 -18
- package/src/element/equivalence.js +66 -49
- package/src/process/equate.js +77 -27
- package/src/utilities/brackets.js +22 -14
- package/src/utilities/equivalences.js +3 -3
package/lib/element/equality.js
CHANGED
|
@@ -61,16 +61,6 @@ const _default = (0, _elements.define)(class Equality extends _occamlanguages.El
|
|
|
61
61
|
const equalityNode = equality.getNode(), equalityNodeMatches = this.matchEqualityNode(equalityNode), equalTo = equalityNodeMatches; ///
|
|
62
62
|
return equalTo;
|
|
63
63
|
}
|
|
64
|
-
isReflexive() {
|
|
65
|
-
let reflexive = false;
|
|
66
|
-
if (!this.negated) {
|
|
67
|
-
const leftTermEqualToRightTerm = this.leftTerm.isEqualTo(this.rightTerm);
|
|
68
|
-
if (leftTermEqualToRightTerm) {
|
|
69
|
-
reflexive = true;
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
return reflexive;
|
|
73
|
-
}
|
|
74
64
|
findEquality(context) {
|
|
75
65
|
const equalityNode = this.getEqualityNode(), equality = context.findEqualityByEqualityNode(equalityNode);
|
|
76
66
|
return equality;
|
|
@@ -171,10 +161,11 @@ const _default = (0, _elements.define)(class Equality extends _occamlanguages.El
|
|
|
171
161
|
if (transient) {
|
|
172
162
|
return;
|
|
173
163
|
}
|
|
174
|
-
const
|
|
175
|
-
if (negated
|
|
164
|
+
const negated = this.isNegated();
|
|
165
|
+
if (negated) {
|
|
176
166
|
return;
|
|
177
167
|
}
|
|
168
|
+
const equality = this; ///
|
|
178
169
|
const equalityAssignment = (0, _assign.equalityAssignmentFromEquality)(equality, context);
|
|
179
170
|
context.addAssignment(equalityAssignment);
|
|
180
171
|
const derived = (0, _state.isDerived)(state);
|
|
@@ -225,4 +216,4 @@ function rightTermFromEqualityNode(equalityNode, context) {
|
|
|
225
216
|
return rightTerm;
|
|
226
217
|
}
|
|
227
218
|
|
|
228
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2VxdWFsaXR5LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBFbGVtZW50LCBicmVha1BvaW50VXRpbGl0aWVzIH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IGVxdWF0ZVRlcm1zIH0gZnJvbSBcIi4uL3Byb2Nlc3MvZXF1YXRlXCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvY29udGV4dFwiO1xuaW1wb3J0IHsgYWxsLCBleGlzdHMgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2NvbnRpbnVhdGlvblwiO1xuaW1wb3J0IHsgaW5zdGFudGlhdGVFcXVhbGl0eSB9IGZyb20gXCIuLi9wcm9jZXNzL2luc3RhbnRpYXRlXCI7XG5pbXBvcnQgeyBlcXVhbGl0eUZyb21TdGF0ZW1lbnROb2RlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9lbGVtZW50XCI7XG5pbXBvcnQgeyBpc0Rlcml2ZWQsIGlzRGVjbGFyZWQsIGlzVHJhbnNpZW50IH0gZnJvbSBcIi4uL3V0aWxpdGllcy9zdGF0ZVwiO1xuaW1wb3J0IHsgZXF1YWxpdHlBc3NpZ25tZW50RnJvbUVxdWFsaXR5LCBsZWZ0VmFyaWFibGVBc3NpZ25tZW50RnJvbUVxdWFsaXR5LCByaWdodFZhcmlhYmxlQXNzaWdubWVudEZyb21FcXVhbGl0eSB9IGZyb20gXCIuLi9wcm9jZXNzL2Fzc2lnblwiO1xuXG5jb25zdCB7IGJyZWFrUG9pbnRGcm9tSlNPTiwgYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04gfSA9IGJyZWFrUG9pbnRVdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBFcXVhbGl0eSBleHRlbmRzIEVsZW1lbnQge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIG5lZ2F0ZWQsIGxlZnRUZXJtLCByaWdodFRlcm0pIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy5uZWdhdGVkID0gbmVnYXRlZDtcbiAgICB0aGlzLmxlZnRUZXJtID0gbGVmdFRlcm07XG4gICAgdGhpcy5yaWdodFRlcm0gPSByaWdodFRlcm07XG4gIH1cblxuICBpc05lZ2F0ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMubmVnYXRlZDtcbiAgfVxuXG4gIGdldExlZnRUZXJtKCkge1xuICAgIHJldHVybiB0aGlzLmxlZnRUZXJtO1xuICB9XG5cbiAgZ2V0UmlnaHRUZXJtKCkge1xuICAgIHJldHVybiB0aGlzLnJpZ2h0VGVybTtcbiAgfVxuXG4gIGdldEVxdWFsaXR5Tm9kZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5nZXROb2RlKCksXG4gICAgICAgICAgZXF1YWxpdHlOZGUgPSBub2RlOyAvLy9cblxuICAgIHJldHVybiBlcXVhbGl0eU5kZTtcbiAgfVxuXG4gIGdldExlZnRUZXJtTm9kZSgpIHtcbiAgICBjb25zdCBsZWZ0VGVybU5vZGUgPSB0aGlzLmxlZnRUZXJtLmdldE5vZGUoKTtcblxuICAgIHJldHVybiBsZWZ0VGVybU5vZGU7XG4gIH1cblxuICBnZXRSaWdodFRlcm1Ob2RlKCkge1xuICAgIGNvbnN0IHJpZ2h0VGVybU5vZGUgPSB0aGlzLnJpZ2h0VGVybS5nZXROb2RlKCk7XG5cbiAgICByZXR1cm4gcmlnaHRUZXJtTm9kZTtcbiAgfVxuXG4gIGdldFRlcm1zKCkge1xuICAgIGNvbnN0IHRlcm1zID0gW1xuICAgICAgdGhpcy5sZWZ0VGVybSxcbiAgICAgIHRoaXMucmlnaHRUZXJtXG4gICAgXTtcblxuICAgIHJldHVybiB0ZXJtcztcbiAgfVxuXG4gIG1hdGNoRXF1YWxpdHlOb2RlKGVxdWFsaXR5Tm9kZSkge1xuICAgIGNvbnN0IG5vZGUgPSBlcXVhbGl0eU5vZGUsIC8vL1xuICAgICAgICAgIG5vZGVNYXRjaGVzID0gdGhpcy5tYXRjaE5vZGUobm9kZSksXG4gICAgICAgICAgZXF1YWxpdHlOb2RlTWF0Y2hlcyA9IG5vZGVNYXRjaGVzOyAvLy9cblxuICAgIHJldHVybiBlcXVhbGl0eU5vZGVNYXRjaGVzO1xuICB9XG5cbiAgaXNFcXVhbFRvKGVxdWFsaXR5KSB7XG4gICAgY29uc3QgZXF1YWxpdHlOb2RlID0gZXF1YWxpdHkuZ2V0Tm9kZSgpLFxuICAgICAgICAgIGVxdWFsaXR5Tm9kZU1hdGNoZXMgPSB0aGlzLm1hdGNoRXF1YWxpdHlOb2RlKGVxdWFsaXR5Tm9kZSksXG4gICAgICAgICAgZXF1YWxUbyA9IGVxdWFsaXR5Tm9kZU1hdGNoZXM7ICAvLy9cblxuICAgIHJldHVybiBlcXVhbFRvO1xuICB9XG5cbiAgaXNSZWZsZXhpdmUoKSB7XG4gICAgbGV0IHJlZmxleGl2ZSA9IGZhbHNlO1xuXG4gICAgaWYgKCF0aGlzLm5lZ2F0ZWQpIHtcbiAgICAgIGNvbnN0IGxlZnRUZXJtRXF1YWxUb1JpZ2h0VGVybSA9IHRoaXMubGVmdFRlcm0uaXNFcXVhbFRvKHRoaXMucmlnaHRUZXJtKTtcblxuICAgICAgaWYgKGxlZnRUZXJtRXF1YWxUb1JpZ2h0VGVybSkge1xuICAgICAgICByZWZsZXhpdmUgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZWZsZXhpdmU7XG4gIH1cblxuICBmaW5kRXF1YWxpdHkoY29udGV4dCkge1xuICAgIGNvbnN0IGVxdWFsaXR5Tm9kZSA9IHRoaXMuZ2V0RXF1YWxpdHlOb2RlKCksXG4gICAgICAgICAgZXF1YWxpdHkgPSBjb250ZXh0LmZpbmRFcXVhbGl0eUJ5RXF1YWxpdHlOb2RlKGVxdWFsaXR5Tm9kZSk7XG5cbiAgICByZXR1cm4gZXF1YWxpdHk7XG4gIH1cblxuICB2YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgbGV0IHZhbGlkYXRlcztcblxuICAgIGNvbnN0IGVxdWFsaXR5U3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7ZXF1YWxpdHlTdHJpbmd9JyBlcXVhbGl0eS4uLmApO1xuXG4gICAgbGV0IGVxdWFsaXR5O1xuXG4gICAgZXF1YWxpdHkgPSB0aGlzLmZpbmRFcXVhbGl0eShjb250ZXh0KTtcblxuICAgIGlmIChlcXVhbGl0eSAhPT0gbnVsbCkge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke2VxdWFsaXR5U3RyaW5nfScgZXF1YWxpdHkgaXMgYWxyZWFkeSBwcmVzZW50LmApO1xuXG4gICAgICB2YWxpZGF0ZXMgPSBjb250aW51YXRpb24oZXF1YWxpdHksIGNvbnRleHQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBlcXVhbGl0eSA9IHRoaXM7ICAvLy9cblxuICAgICAgY29uc3QgdmFsaWRhdGVUZXJtcyA9IHRoaXMudmFsaWRhdGVUZXJtcy5iaW5kKHRoaXMpO1xuXG4gICAgICB2YWxpZGF0ZXMgPSBhbGwoW1xuICAgICAgICB2YWxpZGF0ZVRlcm1zXG4gICAgICBdLCBzdGF0ZSwgY29udGV4dCwgKHN0YXRlLCBjb250ZXh0KSA9PiB7XG4gICAgICAgIGxldCB2YWxpZGF0ZXM7XG5cbiAgICAgICAgY29uc3QgdmFsaWRhdGVXaGVuRGVjbGFyZWQgPSB0aGlzLnZhbGlkYXRlV2hlbkRlY2xhcmVkLmJpbmQodGhpcyksXG4gICAgICAgICAgICAgIHZhbGlkYXRlV2hlbkRlcml2ZWQgPSB0aGlzLnZhbGlkYXRlV2hlbkRlcml2ZWQuYmluZCh0aGlzKTtcblxuICAgICAgICB2YWxpZGF0ZXMgPSBleGlzdHMoW1xuICAgICAgICAgIHZhbGlkYXRlV2hlbkRlY2xhcmVkLFxuICAgICAgICAgIHZhbGlkYXRlV2hlbkRlcml2ZWRcbiAgICAgICAgXSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCkgPT4ge1xuICAgICAgICAgIGxldCB2YWxpZGF0ZXM7XG5cbiAgICAgICAgICBjb250ZXh0LmFkZEVxdWFsaXR5KGVxdWFsaXR5KTtcblxuICAgICAgICAgIHZhbGlkYXRlcyA9IGNvbnRpbnVhdGlvbihlcXVhbGl0eSwgY29udGV4dCk7XG5cbiAgICAgICAgICByZXR1cm4gdmFsaWRhdGVzO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gdmFsaWRhdGVzO1xuICAgICAgfSk7XG5cbiAgICAgIGlmICh2YWxpZGF0ZXMpIHtcbiAgICAgICAgdGhpcy5hc3NpZ24oc3RhdGUsIGNvbnRleHQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh2YWxpZGF0ZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7ZXF1YWxpdHlTdHJpbmd9JyBlcXVhbGl0eS5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsaWRhdGVzO1xuICB9XG5cbiAgdmFsaWRhdGVUZXJtcyhzdGF0ZSwgY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgbGV0IHRlcm1zVmFsaWRhdGUgPSBmYWxzZTtcblxuICAgIGNvbnN0IGVxdWFsaXR5U3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtlcXVhbGl0eVN0cmluZ30nIGVxdWFsaXR5J3MgdGVybXMuLi5gKTtcblxuICAgIGNvbnN0IGxlZnRUZXJtVmFsaWRhdGVzID0gdGhpcy5sZWZ0VGVybS52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKGxlZnRUZXJtLCBjb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCByaWdodFRlcm1WYWxpZHRlcyA9IHRoaXMucmlnaHRUZXJtLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAocmlnaHRUZXJtLCBjb250ZXh0KSA9PiB7XG4gICAgICAgIGxldCB2YWxpZGF0ZXMgPSBmYWxzZTtcblxuICAgICAgICBjb25zdCBsZWZ0VGVybVR5cGUgPSBsZWZ0VGVybS5nZXRUeXBlKCksXG4gICAgICAgICAgICAgIHJpZ2h0VGVybVR5cGUgPSByaWdodFRlcm0uZ2V0VHlwZSgpLFxuICAgICAgICAgICAgICBsZWZ0VGVybVR5cGVCYXNlVHlwZSA9IGxlZnRUZXJtVHlwZS5pc0Jhc2VUeXBlKCksXG4gICAgICAgICAgICAgIHJpZ2h0VGVybVR5cGVCYXNlVHlwZSA9IHJpZ2h0VGVybVR5cGUuaXNCYXNlVHlwZSgpLFxuICAgICAgICAgICAgICBsZWZ0VGVybVR5cGVKb2luZWRUb1JpZ2h0VGVybVR5cGUgPSBsZWZ0VGVybVR5cGUuaXNKb2luZWRUbyhyaWdodFRlcm1UeXBlKTtcblxuICAgICAgICBpZiAobGVmdFRlcm1UeXBlQmFzZVR5cGUgfHwgcmlnaHRUZXJtVHlwZUJhc2VUeXBlIHx8IGxlZnRUZXJtVHlwZUpvaW5lZFRvUmlnaHRUZXJtVHlwZSkge1xuICAgICAgICAgIHRoaXMubGVmdFRlcm0gPSBsZWZ0VGVybTtcblxuICAgICAgICAgIHRoaXMucmlnaHRUZXJtID0gcmlnaHRUZXJtO1xuXG4gICAgICAgICAgdmFsaWRhdGVzID0gY29udGludWF0aW9uKHN0YXRlLCBjb250ZXh0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB2YWxpZGF0ZXM7XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHJpZ2h0VGVybVZhbGlkdGVzO1xuICAgIH0pO1xuXG4gICAgaWYgKGxlZnRUZXJtVmFsaWRhdGVzKSB7XG4gICAgICB0ZXJtc1ZhbGlkYXRlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAodGVybXNWYWxpZGF0ZSkge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtlcXVhbGl0eVN0cmluZ30nIGVxdWFsaXR5J3MgdGVybXMuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRlcm1zVmFsaWRhdGU7XG4gIH1cblxuICB2YWxpZGF0ZVdoZW5EZWNsYXJlZChzdGF0ZSwgY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgbGV0IHZhbGlkYXRlc1doZW5EZWNsYXJlZCA9IGZhbHNlO1xuXG4gICAgY29uc3QgZGVjbGFyZWQgPSBpc0RlY2xhcmVkKHN0YXRlKTtcblxuICAgIGlmIChkZWNsYXJlZCkge1xuICAgICAgY29uc3QgZXF1YWxpdHlTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7ZXF1YWxpdHlTdHJpbmd9JyBkZWNsYXJlZCBlcXVhbGl0eS4uLmApO1xuXG4gICAgICB2YWxpZGF0ZXNXaGVuRGVjbGFyZWQgPSBjb250aW51YXRpb24oc3RhdGUsIGNvbnRleHQpO1xuXG4gICAgICBpZiAodmFsaWRhdGVzV2hlbkRlY2xhcmVkKSB7XG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7ZXF1YWxpdHlTdHJpbmd9JyBkZWNsYXJlZCBlcXVhbGl0eS5gKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdmFsaWRhdGVzV2hlbkRlY2xhcmVkO1xuICB9XG5cbiAgdmFsaWRhdGVXaGVuRGVyaXZlZChzdGF0ZSwgY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgbGV0IHZhbGlkYXRlc1doZW5EZXJpdmVkID0gZmFsc2U7XG5cbiAgICBjb25zdCBkZXJpdmVkID0gaXNEZXJpdmVkKHN0YXRlKTtcblxuICAgIGlmIChkZXJpdmVkKSB7XG4gICAgICBjb25zdCBlcXVhbGl0eVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtlcXVhbGl0eVN0cmluZ30nIGRlcml2ZWQgZXF1YWxpdHkuLi5gKTtcblxuICAgICAgY29uc3QgdGVybXNFcXVhdGUgPSBlcXVhdGVUZXJtcyh0aGlzLmxlZnRUZXJtLCB0aGlzLnJpZ2h0VGVybSwgY29udGV4dCk7XG5cbiAgICAgIGlmICgodGhpcy5uZWdhdGVkICYmICF0ZXJtc0VxdWF0ZSkgfHwgKCF0aGlzLm5lZ2F0ZWQgJiYgdGVybXNFcXVhdGUpKSB7XG4gICAgICAgIHZhbGlkYXRlc1doZW5EZXJpdmVkID0gY29udGludWF0aW9uKHN0YXRlLCBjb250ZXh0KTtcbiAgICAgIH1cblxuICAgICAgaWYgKHZhbGlkYXRlc1doZW5EZXJpdmVkKSB7XG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7ZXF1YWxpdHlTdHJpbmd9JyBkZXJpdmVkIGVxdWFsaXR5LmApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB2YWxpZGF0ZXNXaGVuRGVyaXZlZDtcbiAgfVxuXG4gIGFzc2lnbihzdGF0ZSwgY29udGV4dCkge1xuICAgIGNvbnN0IHRyYW5zaWVudCA9IGlzVHJhbnNpZW50KHN0YXRlKTtcblxuICAgIGlmICh0cmFuc2llbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBlcXVhbGl0eSA9IHRoaXMsICAvLy9cbiAgICAgICAgICBuZWdhdGVkID0gdGhpcy5pc05lZ2F0ZWQoKSxcbiAgICAgICAgICByZWZsZXhpdmUgPSB0aGlzLmlzUmVmbGV4aXZlKCk7XG5cbiAgICBpZiAobmVnYXRlZCB8fCByZWZsZXhpdmUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBlcXVhbGl0eUFzc2lnbm1lbnQgPSBlcXVhbGl0eUFzc2lnbm1lbnRGcm9tRXF1YWxpdHkoZXF1YWxpdHksIGNvbnRleHQpO1xuXG4gICAgY29udGV4dC5hZGRBc3NpZ25tZW50KGVxdWFsaXR5QXNzaWdubWVudCk7XG5cbiAgICBjb25zdCBkZXJpdmVkID0gaXNEZXJpdmVkKHN0YXRlKTtcblxuICAgIGlmIChkZXJpdmVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbGVmdFZhcmlhYmxlQXNzaWdubWVudCA9IGxlZnRWYXJpYWJsZUFzc2lnbm1lbnRGcm9tRXF1YWxpdHkoZXF1YWxpdHksIGNvbnRleHQpLFxuICAgICAgICAgIHJpZ2h0VmFyaWFibGVBc3NpZ25tZW50ID0gcmlnaHRWYXJpYWJsZUFzc2lnbm1lbnRGcm9tRXF1YWxpdHkoZXF1YWxpdHksIGNvbnRleHQpO1xuXG4gICAgY29udGV4dC5hZGRBc3NpZ25tZW50KGxlZnRWYXJpYWJsZUFzc2lnbm1lbnQpO1xuXG4gICAgY29udGV4dC5hZGRBc3NpZ25tZW50KHJpZ2h0VmFyaWFibGVBc3NpZ25tZW50KTtcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICBjb25zdCBzdHJpbmcgPSB0aGlzLmdldFN0cmluZygpO1xuXG4gICAgbGV0IGJyZWFrUG9pbnQ7XG5cbiAgICBicmVha1BvaW50ID0gdGhpcy5nZXRCcmVha1BvaW50KCk7XG5cbiAgICBjb25zdCBicmVha1BvaW50SlNPTiA9IGJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OKGJyZWFrUG9pbnQpO1xuXG4gICAgYnJlYWtQb2ludCA9IGJyZWFrUG9pbnRKU09OOyAgLy8vXG5cbiAgICBjb25zdCBqc29uID0ge1xuICAgICAgc3RyaW5nLFxuICAgICAgYnJlYWtQb2ludFxuICAgIH07XG5cbiAgICByZXR1cm4ganNvbjtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJFcXVhbGl0eVwiO1xuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gICAgbGV0IGVxdWFsaXR5O1xuXG4gICAgaW5zdGFudGlhdGUoKGNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IHsgc3RyaW5nIH0gPSBqc29uLFxuICAgICAgICAgICAgZXF1YWxpdHlOb2RlID0gaW5zdGFudGlhdGVFcXVhbGl0eShzdHJpbmcsIGNvbnRleHQpLFxuICAgICAgICAgICAgbm9kZSA9IGVxdWFsaXR5Tm9kZSwgIC8vL1xuICAgICAgICAgICAgYnJlYWtQb2ludCA9IGJyZWFrUG9pbnRGcm9tSlNPTihqc29uKSxcbiAgICAgICAgICAgIG5lZ2F0ZWQgPSBuZWdhdGVkRnJvbUVxdWFsaXR5Tm9kZShlcXVhbGl0eU5vZGUsIGNvbnRleHQpLFxuICAgICAgICAgICAgbGVmdFRlcm0gPSBsZWZ0VGVybUZyb21FcXVhbGl0eU5vZGUoZXF1YWxpdHlOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgICAgIHJpZ2h0VGVybSA9IHJpZ2h0VGVybUZyb21FcXVhbGl0eU5vZGUoZXF1YWxpdHlOb2RlLCBjb250ZXh0KTtcblxuICAgICAgY29udGV4dCA9IG51bGw7XG5cbiAgICAgIGVxdWFsaXR5ID0gbmV3IEVxdWFsaXR5KGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgbmVnYXRlZCwgbGVmdFRlcm0sIHJpZ2h0VGVybSk7XG4gICAgfSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gZXF1YWxpdHk7XG4gIH1cblxuICBzdGF0aWMgZnJvbVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50LmdldE5vZGUoKSxcbiAgICAgICAgICBlcXVhbGl0eSA9IGVxdWFsaXR5RnJvbVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gZXF1YWxpdHk7XG4gIH1cbn0pO1xuXG5mdW5jdGlvbiBuZWdhdGVkRnJvbUVxdWFsaXR5Tm9kZShlcXVhbGl0eU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgbmVnYXRlZCA9IGVxdWFsaXR5Tm9kZS5pc05lZ2F0ZWQoKTtcblxuICByZXR1cm4gbmVnYXRlZDtcbn1cblxuZnVuY3Rpb24gbGVmdFRlcm1Gcm9tRXF1YWxpdHlOb2RlKGVxdWFsaXR5Tm9kZSwgY29udGV4dCkge1xuICBjb25zdCBsZWZ0VGVybU5vZGUgPSBlcXVhbGl0eU5vZGUuZ2V0TGVmdFRlcm1Ob2RlKCksXG4gICAgICAgIGxlZnRUZXJtID0gY29udGV4dC5maW5kVGVybUJ5VGVybU5vZGUobGVmdFRlcm1Ob2RlKTtcblxuICByZXR1cm4gbGVmdFRlcm07XG59XG5cbmZ1bmN0aW9uIHJpZ2h0VGVybUZyb21FcXVhbGl0eU5vZGUoZXF1YWxpdHlOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHJpZ2h0VGVybU5vZGUgPSBlcXVhbGl0eU5vZGUuZ2V0TGVmdFRlcm1Ob2RlKCksXG4gICAgICAgIHJpZ2h0VGVybSA9IGNvbnRleHQuZmluZFRlcm1CeVRlcm1Ob2RlKHJpZ2h0VGVybU5vZGUpO1xuXG4gIHJldHVybiByaWdodFRlcm07XG59XG4iXSwibmFtZXMiOlsiYnJlYWtQb2ludEZyb21KU09OIiwiYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04iLCJicmVha1BvaW50VXRpbGl0aWVzIiwiZGVmaW5lIiwiRXF1YWxpdHkiLCJFbGVtZW50IiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJicmVha1BvaW50IiwibmVnYXRlZCIsImxlZnRUZXJtIiwicmlnaHRUZXJtIiwiaXNOZWdhdGVkIiwiZ2V0TGVmdFRlcm0iLCJnZXRSaWdodFRlcm0iLCJnZXRFcXVhbGl0eU5vZGUiLCJnZXROb2RlIiwiZXF1YWxpdHlOZGUiLCJnZXRMZWZ0VGVybU5vZGUiLCJsZWZ0VGVybU5vZGUiLCJnZXRSaWdodFRlcm1Ob2RlIiwicmlnaHRUZXJtTm9kZSIsImdldFRlcm1zIiwidGVybXMiLCJtYXRjaEVxdWFsaXR5Tm9kZSIsImVxdWFsaXR5Tm9kZSIsIm5vZGVNYXRjaGVzIiwibWF0Y2hOb2RlIiwiZXF1YWxpdHlOb2RlTWF0Y2hlcyIsImlzRXF1YWxUbyIsImVxdWFsaXR5IiwiZXF1YWxUbyIsImlzUmVmbGV4aXZlIiwicmVmbGV4aXZlIiwibGVmdFRlcm1FcXVhbFRvUmlnaHRUZXJtIiwiZmluZEVxdWFsaXR5IiwiZmluZEVxdWFsaXR5QnlFcXVhbGl0eU5vZGUiLCJ2YWxpZGF0ZSIsInN0YXRlIiwiY29udGludWF0aW9uIiwidmFsaWRhdGVzIiwiZXF1YWxpdHlTdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsImRlYnVnIiwidmFsaWRhdGVUZXJtcyIsImJpbmQiLCJhbGwiLCJ2YWxpZGF0ZVdoZW5EZWNsYXJlZCIsInZhbGlkYXRlV2hlbkRlcml2ZWQiLCJleGlzdHMiLCJhZGRFcXVhbGl0eSIsImFzc2lnbiIsInRlcm1zVmFsaWRhdGUiLCJsZWZ0VGVybVZhbGlkYXRlcyIsInJpZ2h0VGVybVZhbGlkdGVzIiwibGVmdFRlcm1UeXBlIiwiZ2V0VHlwZSIsInJpZ2h0VGVybVR5cGUiLCJsZWZ0VGVybVR5cGVCYXNlVHlwZSIsImlzQmFzZVR5cGUiLCJyaWdodFRlcm1UeXBlQmFzZVR5cGUiLCJsZWZ0VGVybVR5cGVKb2luZWRUb1JpZ2h0VGVybVR5cGUiLCJpc0pvaW5lZFRvIiwidmFsaWRhdGVzV2hlbkRlY2xhcmVkIiwiZGVjbGFyZWQiLCJpc0RlY2xhcmVkIiwidmFsaWRhdGVzV2hlbkRlcml2ZWQiLCJkZXJpdmVkIiwiaXNEZXJpdmVkIiwidGVybXNFcXVhdGUiLCJlcXVhdGVUZXJtcyIsInRyYW5zaWVudCIsImlzVHJhbnNpZW50IiwiZXF1YWxpdHlBc3NpZ25tZW50IiwiZXF1YWxpdHlBc3NpZ25tZW50RnJvbUVxdWFsaXR5IiwiYWRkQXNzaWdubWVudCIsImxlZnRWYXJpYWJsZUFzc2lnbm1lbnQiLCJsZWZ0VmFyaWFibGVBc3NpZ25tZW50RnJvbUVxdWFsaXR5IiwicmlnaHRWYXJpYWJsZUFzc2lnbm1lbnQiLCJyaWdodFZhcmlhYmxlQXNzaWdubWVudEZyb21FcXVhbGl0eSIsInRvSlNPTiIsImdldEJyZWFrUG9pbnQiLCJicmVha1BvaW50SlNPTiIsImpzb24iLCJuYW1lIiwiZnJvbUpTT04iLCJpbnN0YW50aWF0ZSIsImluc3RhbnRpYXRlRXF1YWxpdHkiLCJuZWdhdGVkRnJvbUVxdWFsaXR5Tm9kZSIsImxlZnRUZXJtRnJvbUVxdWFsaXR5Tm9kZSIsInJpZ2h0VGVybUZyb21FcXVhbGl0eU5vZGUiLCJmcm9tU3RhdGVtZW50Iiwic3RhdGVtZW50Iiwic3RhdGVtZW50Tm9kZSIsImVxdWFsaXR5RnJvbVN0YXRlbWVudE5vZGUiLCJmaW5kVGVybUJ5VGVybU5vZGUiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQWVBOzs7ZUFBQTs7O2dDQWI2QzswQkFFdEI7d0JBQ0s7eUJBQ0E7OEJBQ0E7NkJBQ1E7eUJBQ007dUJBQ1M7d0JBQ3FF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
|
|
219
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2VxdWFsaXR5LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBFbGVtZW50LCBicmVha1BvaW50VXRpbGl0aWVzIH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IGVxdWF0ZVRlcm1zIH0gZnJvbSBcIi4uL3Byb2Nlc3MvZXF1YXRlXCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvY29udGV4dFwiO1xuaW1wb3J0IHsgYWxsLCBleGlzdHMgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2NvbnRpbnVhdGlvblwiO1xuaW1wb3J0IHsgaW5zdGFudGlhdGVFcXVhbGl0eSB9IGZyb20gXCIuLi9wcm9jZXNzL2luc3RhbnRpYXRlXCI7XG5pbXBvcnQgeyBlcXVhbGl0eUZyb21TdGF0ZW1lbnROb2RlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9lbGVtZW50XCI7XG5pbXBvcnQgeyBpc0Rlcml2ZWQsIGlzRGVjbGFyZWQsIGlzVHJhbnNpZW50IH0gZnJvbSBcIi4uL3V0aWxpdGllcy9zdGF0ZVwiO1xuaW1wb3J0IHsgZXF1YWxpdHlBc3NpZ25tZW50RnJvbUVxdWFsaXR5LCBsZWZ0VmFyaWFibGVBc3NpZ25tZW50RnJvbUVxdWFsaXR5LCByaWdodFZhcmlhYmxlQXNzaWdubWVudEZyb21FcXVhbGl0eSB9IGZyb20gXCIuLi9wcm9jZXNzL2Fzc2lnblwiO1xuXG5jb25zdCB7IGJyZWFrUG9pbnRGcm9tSlNPTiwgYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04gfSA9IGJyZWFrUG9pbnRVdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBFcXVhbGl0eSBleHRlbmRzIEVsZW1lbnQge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIG5lZ2F0ZWQsIGxlZnRUZXJtLCByaWdodFRlcm0pIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy5uZWdhdGVkID0gbmVnYXRlZDtcbiAgICB0aGlzLmxlZnRUZXJtID0gbGVmdFRlcm07XG4gICAgdGhpcy5yaWdodFRlcm0gPSByaWdodFRlcm07XG4gIH1cblxuICBpc05lZ2F0ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMubmVnYXRlZDtcbiAgfVxuXG4gIGdldExlZnRUZXJtKCkge1xuICAgIHJldHVybiB0aGlzLmxlZnRUZXJtO1xuICB9XG5cbiAgZ2V0UmlnaHRUZXJtKCkge1xuICAgIHJldHVybiB0aGlzLnJpZ2h0VGVybTtcbiAgfVxuXG4gIGdldEVxdWFsaXR5Tm9kZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5nZXROb2RlKCksXG4gICAgICAgICAgZXF1YWxpdHlOZGUgPSBub2RlOyAvLy9cblxuICAgIHJldHVybiBlcXVhbGl0eU5kZTtcbiAgfVxuXG4gIGdldExlZnRUZXJtTm9kZSgpIHtcbiAgICBjb25zdCBsZWZ0VGVybU5vZGUgPSB0aGlzLmxlZnRUZXJtLmdldE5vZGUoKTtcblxuICAgIHJldHVybiBsZWZ0VGVybU5vZGU7XG4gIH1cblxuICBnZXRSaWdodFRlcm1Ob2RlKCkge1xuICAgIGNvbnN0IHJpZ2h0VGVybU5vZGUgPSB0aGlzLnJpZ2h0VGVybS5nZXROb2RlKCk7XG5cbiAgICByZXR1cm4gcmlnaHRUZXJtTm9kZTtcbiAgfVxuXG4gIGdldFRlcm1zKCkge1xuICAgIGNvbnN0IHRlcm1zID0gW1xuICAgICAgdGhpcy5sZWZ0VGVybSxcbiAgICAgIHRoaXMucmlnaHRUZXJtXG4gICAgXTtcblxuICAgIHJldHVybiB0ZXJtcztcbiAgfVxuXG4gIG1hdGNoRXF1YWxpdHlOb2RlKGVxdWFsaXR5Tm9kZSkge1xuICAgIGNvbnN0IG5vZGUgPSBlcXVhbGl0eU5vZGUsIC8vL1xuICAgICAgICAgIG5vZGVNYXRjaGVzID0gdGhpcy5tYXRjaE5vZGUobm9kZSksXG4gICAgICAgICAgZXF1YWxpdHlOb2RlTWF0Y2hlcyA9IG5vZGVNYXRjaGVzOyAvLy9cblxuICAgIHJldHVybiBlcXVhbGl0eU5vZGVNYXRjaGVzO1xuICB9XG5cbiAgaXNFcXVhbFRvKGVxdWFsaXR5KSB7XG4gICAgY29uc3QgZXF1YWxpdHlOb2RlID0gZXF1YWxpdHkuZ2V0Tm9kZSgpLFxuICAgICAgICAgIGVxdWFsaXR5Tm9kZU1hdGNoZXMgPSB0aGlzLm1hdGNoRXF1YWxpdHlOb2RlKGVxdWFsaXR5Tm9kZSksXG4gICAgICAgICAgZXF1YWxUbyA9IGVxdWFsaXR5Tm9kZU1hdGNoZXM7ICAvLy9cblxuICAgIHJldHVybiBlcXVhbFRvO1xuICB9XG5cbiAgZmluZEVxdWFsaXR5KGNvbnRleHQpIHtcbiAgICBjb25zdCBlcXVhbGl0eU5vZGUgPSB0aGlzLmdldEVxdWFsaXR5Tm9kZSgpLFxuICAgICAgICAgIGVxdWFsaXR5ID0gY29udGV4dC5maW5kRXF1YWxpdHlCeUVxdWFsaXR5Tm9kZShlcXVhbGl0eU5vZGUpO1xuXG4gICAgcmV0dXJuIGVxdWFsaXR5O1xuICB9XG5cbiAgdmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCB2YWxpZGF0ZXM7XG5cbiAgICBjb25zdCBlcXVhbGl0eVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2VxdWFsaXR5U3RyaW5nfScgZXF1YWxpdHkuLi5gKTtcblxuICAgIGxldCBlcXVhbGl0eTtcblxuICAgIGVxdWFsaXR5ID0gdGhpcy5maW5kRXF1YWxpdHkoY29udGV4dCk7XG5cbiAgICBpZiAoZXF1YWxpdHkgIT09IG51bGwpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHtlcXVhbGl0eVN0cmluZ30nIGVxdWFsaXR5IGlzIGFscmVhZHkgcHJlc2VudC5gKTtcblxuICAgICAgdmFsaWRhdGVzID0gY29udGludWF0aW9uKGVxdWFsaXR5LCBjb250ZXh0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZXF1YWxpdHkgPSB0aGlzOyAgLy8vXG5cbiAgICAgIGNvbnN0IHZhbGlkYXRlVGVybXMgPSB0aGlzLnZhbGlkYXRlVGVybXMuYmluZCh0aGlzKTtcblxuICAgICAgdmFsaWRhdGVzID0gYWxsKFtcbiAgICAgICAgdmFsaWRhdGVUZXJtc1xuICAgICAgXSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCkgPT4ge1xuICAgICAgICBsZXQgdmFsaWRhdGVzO1xuXG4gICAgICAgIGNvbnN0IHZhbGlkYXRlV2hlbkRlY2xhcmVkID0gdGhpcy52YWxpZGF0ZVdoZW5EZWNsYXJlZC5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgICB2YWxpZGF0ZVdoZW5EZXJpdmVkID0gdGhpcy52YWxpZGF0ZVdoZW5EZXJpdmVkLmJpbmQodGhpcyk7XG5cbiAgICAgICAgdmFsaWRhdGVzID0gZXhpc3RzKFtcbiAgICAgICAgICB2YWxpZGF0ZVdoZW5EZWNsYXJlZCxcbiAgICAgICAgICB2YWxpZGF0ZVdoZW5EZXJpdmVkXG4gICAgICAgIF0sIHN0YXRlLCBjb250ZXh0LCAoc3RhdGUsIGNvbnRleHQpID0+IHtcbiAgICAgICAgICBsZXQgdmFsaWRhdGVzO1xuXG4gICAgICAgICAgY29udGV4dC5hZGRFcXVhbGl0eShlcXVhbGl0eSk7XG5cbiAgICAgICAgICB2YWxpZGF0ZXMgPSBjb250aW51YXRpb24oZXF1YWxpdHksIGNvbnRleHQpO1xuXG4gICAgICAgICAgcmV0dXJuIHZhbGlkYXRlcztcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHZhbGlkYXRlcztcbiAgICAgIH0pO1xuXG4gICAgICBpZiAodmFsaWRhdGVzKSB7XG4gICAgICAgIHRoaXMuYXNzaWduKHN0YXRlLCBjb250ZXh0KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodmFsaWRhdGVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2VxdWFsaXR5U3RyaW5nfScgZXF1YWxpdHkuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbGlkYXRlcztcbiAgfVxuXG4gIHZhbGlkYXRlVGVybXMoc3RhdGUsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCB0ZXJtc1ZhbGlkYXRlID0gZmFsc2U7XG5cbiAgICBjb25zdCBlcXVhbGl0eVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7ZXF1YWxpdHlTdHJpbmd9JyBlcXVhbGl0eSdzIHRlcm1zLi4uYCk7XG5cbiAgICBjb25zdCBsZWZ0VGVybVZhbGlkYXRlcyA9IHRoaXMubGVmdFRlcm0udmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIChsZWZ0VGVybSwgY29udGV4dCkgPT4ge1xuICAgICAgY29uc3QgcmlnaHRUZXJtVmFsaWR0ZXMgPSB0aGlzLnJpZ2h0VGVybS52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKHJpZ2h0VGVybSwgY29udGV4dCkgPT4ge1xuICAgICAgICBsZXQgdmFsaWRhdGVzID0gZmFsc2U7XG5cbiAgICAgICAgY29uc3QgbGVmdFRlcm1UeXBlID0gbGVmdFRlcm0uZ2V0VHlwZSgpLFxuICAgICAgICAgICAgICByaWdodFRlcm1UeXBlID0gcmlnaHRUZXJtLmdldFR5cGUoKSxcbiAgICAgICAgICAgICAgbGVmdFRlcm1UeXBlQmFzZVR5cGUgPSBsZWZ0VGVybVR5cGUuaXNCYXNlVHlwZSgpLFxuICAgICAgICAgICAgICByaWdodFRlcm1UeXBlQmFzZVR5cGUgPSByaWdodFRlcm1UeXBlLmlzQmFzZVR5cGUoKSxcbiAgICAgICAgICAgICAgbGVmdFRlcm1UeXBlSm9pbmVkVG9SaWdodFRlcm1UeXBlID0gbGVmdFRlcm1UeXBlLmlzSm9pbmVkVG8ocmlnaHRUZXJtVHlwZSk7XG5cbiAgICAgICAgaWYgKGxlZnRUZXJtVHlwZUJhc2VUeXBlIHx8IHJpZ2h0VGVybVR5cGVCYXNlVHlwZSB8fCBsZWZ0VGVybVR5cGVKb2luZWRUb1JpZ2h0VGVybVR5cGUpIHtcbiAgICAgICAgICB0aGlzLmxlZnRUZXJtID0gbGVmdFRlcm07XG5cbiAgICAgICAgICB0aGlzLnJpZ2h0VGVybSA9IHJpZ2h0VGVybTtcblxuICAgICAgICAgIHZhbGlkYXRlcyA9IGNvbnRpbnVhdGlvbihzdGF0ZSwgY29udGV4dCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdmFsaWRhdGVzO1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiByaWdodFRlcm1WYWxpZHRlcztcbiAgICB9KTtcblxuICAgIGlmIChsZWZ0VGVybVZhbGlkYXRlcykge1xuICAgICAgdGVybXNWYWxpZGF0ZSA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHRlcm1zVmFsaWRhdGUpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7ZXF1YWxpdHlTdHJpbmd9JyBlcXVhbGl0eSdzIHRlcm1zLmApO1xuICAgIH1cblxuICAgIHJldHVybiB0ZXJtc1ZhbGlkYXRlO1xuICB9XG5cbiAgdmFsaWRhdGVXaGVuRGVjbGFyZWQoc3RhdGUsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCB2YWxpZGF0ZXNXaGVuRGVjbGFyZWQgPSBmYWxzZTtcblxuICAgIGNvbnN0IGRlY2xhcmVkID0gaXNEZWNsYXJlZChzdGF0ZSk7XG5cbiAgICBpZiAoZGVjbGFyZWQpIHtcbiAgICAgIGNvbnN0IGVxdWFsaXR5U3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2VxdWFsaXR5U3RyaW5nfScgZGVjbGFyZWQgZXF1YWxpdHkuLi5gKTtcblxuICAgICAgdmFsaWRhdGVzV2hlbkRlY2xhcmVkID0gY29udGludWF0aW9uKHN0YXRlLCBjb250ZXh0KTtcblxuICAgICAgaWYgKHZhbGlkYXRlc1doZW5EZWNsYXJlZCkge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2VxdWFsaXR5U3RyaW5nfScgZGVjbGFyZWQgZXF1YWxpdHkuYCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbGlkYXRlc1doZW5EZWNsYXJlZDtcbiAgfVxuXG4gIHZhbGlkYXRlV2hlbkRlcml2ZWQoc3RhdGUsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCB2YWxpZGF0ZXNXaGVuRGVyaXZlZCA9IGZhbHNlO1xuXG4gICAgY29uc3QgZGVyaXZlZCA9IGlzRGVyaXZlZChzdGF0ZSk7XG5cbiAgICBpZiAoZGVyaXZlZCkge1xuICAgICAgY29uc3QgZXF1YWxpdHlTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7ZXF1YWxpdHlTdHJpbmd9JyBkZXJpdmVkIGVxdWFsaXR5Li4uYCk7XG5cbiAgICAgIGNvbnN0IHRlcm1zRXF1YXRlID0gZXF1YXRlVGVybXModGhpcy5sZWZ0VGVybSwgdGhpcy5yaWdodFRlcm0sIGNvbnRleHQpO1xuXG4gICAgICBpZiAoKHRoaXMubmVnYXRlZCAmJiAhdGVybXNFcXVhdGUpIHx8ICghdGhpcy5uZWdhdGVkICYmIHRlcm1zRXF1YXRlKSkge1xuICAgICAgICB2YWxpZGF0ZXNXaGVuRGVyaXZlZCA9IGNvbnRpbnVhdGlvbihzdGF0ZSwgY29udGV4dCk7XG4gICAgICB9XG5cbiAgICAgIGlmICh2YWxpZGF0ZXNXaGVuRGVyaXZlZCkge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2VxdWFsaXR5U3RyaW5nfScgZGVyaXZlZCBlcXVhbGl0eS5gKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdmFsaWRhdGVzV2hlbkRlcml2ZWQ7XG4gIH1cblxuICBhc3NpZ24oc3RhdGUsIGNvbnRleHQpIHtcbiAgICBjb25zdCB0cmFuc2llbnQgPSBpc1RyYW5zaWVudChzdGF0ZSk7XG5cbiAgICBpZiAodHJhbnNpZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbmVnYXRlZCA9IHRoaXMuaXNOZWdhdGVkKCk7XG5cbiAgICBpZiAobmVnYXRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGVxdWFsaXR5ID0gdGhpczsgIC8vL1xuXG4gICAgY29uc3QgZXF1YWxpdHlBc3NpZ25tZW50ID0gZXF1YWxpdHlBc3NpZ25tZW50RnJvbUVxdWFsaXR5KGVxdWFsaXR5LCBjb250ZXh0KTtcblxuICAgIGNvbnRleHQuYWRkQXNzaWdubWVudChlcXVhbGl0eUFzc2lnbm1lbnQpO1xuXG4gICAgY29uc3QgZGVyaXZlZCA9IGlzRGVyaXZlZChzdGF0ZSk7XG5cbiAgICBpZiAoZGVyaXZlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGxlZnRWYXJpYWJsZUFzc2lnbm1lbnQgPSBsZWZ0VmFyaWFibGVBc3NpZ25tZW50RnJvbUVxdWFsaXR5KGVxdWFsaXR5LCBjb250ZXh0KSxcbiAgICAgICAgICByaWdodFZhcmlhYmxlQXNzaWdubWVudCA9IHJpZ2h0VmFyaWFibGVBc3NpZ25tZW50RnJvbUVxdWFsaXR5KGVxdWFsaXR5LCBjb250ZXh0KTtcblxuICAgIGNvbnRleHQuYWRkQXNzaWdubWVudChsZWZ0VmFyaWFibGVBc3NpZ25tZW50KTtcblxuICAgIGNvbnRleHQuYWRkQXNzaWdubWVudChyaWdodFZhcmlhYmxlQXNzaWdubWVudCk7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgY29uc3Qgc3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTtcblxuICAgIGxldCBicmVha1BvaW50O1xuXG4gICAgYnJlYWtQb2ludCA9IHRoaXMuZ2V0QnJlYWtQb2ludCgpO1xuXG4gICAgY29uc3QgYnJlYWtQb2ludEpTT04gPSBicmVha1BvaW50VG9CcmVha1BvaW50SlNPTihicmVha1BvaW50KTtcblxuICAgIGJyZWFrUG9pbnQgPSBicmVha1BvaW50SlNPTjsgIC8vL1xuXG4gICAgY29uc3QganNvbiA9IHtcbiAgICAgIHN0cmluZyxcbiAgICAgIGJyZWFrUG9pbnRcbiAgICB9O1xuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiRXF1YWxpdHlcIjtcblxuICBzdGF0aWMgZnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICAgIGxldCBlcXVhbGl0eTtcblxuICAgIGluc3RhbnRpYXRlKChjb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCB7IHN0cmluZyB9ID0ganNvbixcbiAgICAgICAgICAgIGVxdWFsaXR5Tm9kZSA9IGluc3RhbnRpYXRlRXF1YWxpdHkoc3RyaW5nLCBjb250ZXh0KSxcbiAgICAgICAgICAgIG5vZGUgPSBlcXVhbGl0eU5vZGUsICAvLy9cbiAgICAgICAgICAgIGJyZWFrUG9pbnQgPSBicmVha1BvaW50RnJvbUpTT04oanNvbiksXG4gICAgICAgICAgICBuZWdhdGVkID0gbmVnYXRlZEZyb21FcXVhbGl0eU5vZGUoZXF1YWxpdHlOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgICAgIGxlZnRUZXJtID0gbGVmdFRlcm1Gcm9tRXF1YWxpdHlOb2RlKGVxdWFsaXR5Tm9kZSwgY29udGV4dCksXG4gICAgICAgICAgICByaWdodFRlcm0gPSByaWdodFRlcm1Gcm9tRXF1YWxpdHlOb2RlKGVxdWFsaXR5Tm9kZSwgY29udGV4dCk7XG5cbiAgICAgIGNvbnRleHQgPSBudWxsO1xuXG4gICAgICBlcXVhbGl0eSA9IG5ldyBFcXVhbGl0eShjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIG5lZ2F0ZWQsIGxlZnRUZXJtLCByaWdodFRlcm0pO1xuICAgIH0sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGVxdWFsaXR5O1xuICB9XG5cbiAgc3RhdGljIGZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KSB7XG4gICAgY29uc3Qgc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudC5nZXROb2RlKCksXG4gICAgICAgICAgZXF1YWxpdHkgPSBlcXVhbGl0eUZyb21TdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUsIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGVxdWFsaXR5O1xuICB9XG59KTtcblxuZnVuY3Rpb24gbmVnYXRlZEZyb21FcXVhbGl0eU5vZGUoZXF1YWxpdHlOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IG5lZ2F0ZWQgPSBlcXVhbGl0eU5vZGUuaXNOZWdhdGVkKCk7XG5cbiAgcmV0dXJuIG5lZ2F0ZWQ7XG59XG5cbmZ1bmN0aW9uIGxlZnRUZXJtRnJvbUVxdWFsaXR5Tm9kZShlcXVhbGl0eU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgbGVmdFRlcm1Ob2RlID0gZXF1YWxpdHlOb2RlLmdldExlZnRUZXJtTm9kZSgpLFxuICAgICAgICBsZWZ0VGVybSA9IGNvbnRleHQuZmluZFRlcm1CeVRlcm1Ob2RlKGxlZnRUZXJtTm9kZSk7XG5cbiAgcmV0dXJuIGxlZnRUZXJtO1xufVxuXG5mdW5jdGlvbiByaWdodFRlcm1Gcm9tRXF1YWxpdHlOb2RlKGVxdWFsaXR5Tm9kZSwgY29udGV4dCkge1xuICBjb25zdCByaWdodFRlcm1Ob2RlID0gZXF1YWxpdHlOb2RlLmdldExlZnRUZXJtTm9kZSgpLFxuICAgICAgICByaWdodFRlcm0gPSBjb250ZXh0LmZpbmRUZXJtQnlUZXJtTm9kZShyaWdodFRlcm1Ob2RlKTtcblxuICByZXR1cm4gcmlnaHRUZXJtO1xufVxuIl0sIm5hbWVzIjpbImJyZWFrUG9pbnRGcm9tSlNPTiIsImJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OIiwiYnJlYWtQb2ludFV0aWxpdGllcyIsImRlZmluZSIsIkVxdWFsaXR5IiwiRWxlbWVudCIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsIm5lZ2F0ZWQiLCJsZWZ0VGVybSIsInJpZ2h0VGVybSIsImlzTmVnYXRlZCIsImdldExlZnRUZXJtIiwiZ2V0UmlnaHRUZXJtIiwiZ2V0RXF1YWxpdHlOb2RlIiwiZ2V0Tm9kZSIsImVxdWFsaXR5TmRlIiwiZ2V0TGVmdFRlcm1Ob2RlIiwibGVmdFRlcm1Ob2RlIiwiZ2V0UmlnaHRUZXJtTm9kZSIsInJpZ2h0VGVybU5vZGUiLCJnZXRUZXJtcyIsInRlcm1zIiwibWF0Y2hFcXVhbGl0eU5vZGUiLCJlcXVhbGl0eU5vZGUiLCJub2RlTWF0Y2hlcyIsIm1hdGNoTm9kZSIsImVxdWFsaXR5Tm9kZU1hdGNoZXMiLCJpc0VxdWFsVG8iLCJlcXVhbGl0eSIsImVxdWFsVG8iLCJmaW5kRXF1YWxpdHkiLCJmaW5kRXF1YWxpdHlCeUVxdWFsaXR5Tm9kZSIsInZhbGlkYXRlIiwic3RhdGUiLCJjb250aW51YXRpb24iLCJ2YWxpZGF0ZXMiLCJlcXVhbGl0eVN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwiZGVidWciLCJ2YWxpZGF0ZVRlcm1zIiwiYmluZCIsImFsbCIsInZhbGlkYXRlV2hlbkRlY2xhcmVkIiwidmFsaWRhdGVXaGVuRGVyaXZlZCIsImV4aXN0cyIsImFkZEVxdWFsaXR5IiwiYXNzaWduIiwidGVybXNWYWxpZGF0ZSIsImxlZnRUZXJtVmFsaWRhdGVzIiwicmlnaHRUZXJtVmFsaWR0ZXMiLCJsZWZ0VGVybVR5cGUiLCJnZXRUeXBlIiwicmlnaHRUZXJtVHlwZSIsImxlZnRUZXJtVHlwZUJhc2VUeXBlIiwiaXNCYXNlVHlwZSIsInJpZ2h0VGVybVR5cGVCYXNlVHlwZSIsImxlZnRUZXJtVHlwZUpvaW5lZFRvUmlnaHRUZXJtVHlwZSIsImlzSm9pbmVkVG8iLCJ2YWxpZGF0ZXNXaGVuRGVjbGFyZWQiLCJkZWNsYXJlZCIsImlzRGVjbGFyZWQiLCJ2YWxpZGF0ZXNXaGVuRGVyaXZlZCIsImRlcml2ZWQiLCJpc0Rlcml2ZWQiLCJ0ZXJtc0VxdWF0ZSIsImVxdWF0ZVRlcm1zIiwidHJhbnNpZW50IiwiaXNUcmFuc2llbnQiLCJlcXVhbGl0eUFzc2lnbm1lbnQiLCJlcXVhbGl0eUFzc2lnbm1lbnRGcm9tRXF1YWxpdHkiLCJhZGRBc3NpZ25tZW50IiwibGVmdFZhcmlhYmxlQXNzaWdubWVudCIsImxlZnRWYXJpYWJsZUFzc2lnbm1lbnRGcm9tRXF1YWxpdHkiLCJyaWdodFZhcmlhYmxlQXNzaWdubWVudCIsInJpZ2h0VmFyaWFibGVBc3NpZ25tZW50RnJvbUVxdWFsaXR5IiwidG9KU09OIiwiZ2V0QnJlYWtQb2ludCIsImJyZWFrUG9pbnRKU09OIiwianNvbiIsIm5hbWUiLCJmcm9tSlNPTiIsImluc3RhbnRpYXRlIiwiaW5zdGFudGlhdGVFcXVhbGl0eSIsIm5lZ2F0ZWRGcm9tRXF1YWxpdHlOb2RlIiwibGVmdFRlcm1Gcm9tRXF1YWxpdHlOb2RlIiwicmlnaHRUZXJtRnJvbUVxdWFsaXR5Tm9kZSIsImZyb21TdGF0ZW1lbnQiLCJzdGF0ZW1lbnQiLCJzdGF0ZW1lbnROb2RlIiwiZXF1YWxpdHlGcm9tU3RhdGVtZW50Tm9kZSIsImZpbmRUZXJtQnlUZXJtTm9kZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBZUE7OztlQUFBOzs7Z0NBYjZDOzBCQUV0Qjt3QkFDSzt5QkFDQTs4QkFDQTs2QkFDUTt5QkFDTTt1QkFDUzt3QkFDcUU7QUFFeEgsTUFBTSxFQUFFQSxrQkFBa0IsRUFBRUMsMEJBQTBCLEVBQUUsR0FBR0MsbUNBQW1CO01BRTlFLFdBQWVDLElBQUFBLGdCQUFNLEVBQUMsTUFBTUMsaUJBQWlCQyx1QkFBTztJQUNsRCxZQUFZQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxVQUFVLEVBQUVDLE9BQU8sRUFBRUMsUUFBUSxFQUFFQyxTQUFTLENBQUU7UUFDM0UsS0FBSyxDQUFDTixTQUFTQyxRQUFRQyxNQUFNQztRQUU3QixJQUFJLENBQUNDLE9BQU8sR0FBR0E7UUFDZixJQUFJLENBQUNDLFFBQVEsR0FBR0E7UUFDaEIsSUFBSSxDQUFDQyxTQUFTLEdBQUdBO0lBQ25CO0lBRUFDLFlBQVk7UUFDVixPQUFPLElBQUksQ0FBQ0gsT0FBTztJQUNyQjtJQUVBSSxjQUFjO1FBQ1osT0FB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
|
|
@@ -12,11 +12,11 @@ const _occamlanguages = require("occam-languages");
|
|
|
12
12
|
const _necessary = require("necessary");
|
|
13
13
|
const _elements = require("../elements");
|
|
14
14
|
const _context = require("../utilities/context");
|
|
15
|
-
const _instantiate = require("../process/instantiate");
|
|
16
15
|
const _brackets = require("../utilities/brackets");
|
|
16
|
+
const _instantiate = require("../process/instantiate");
|
|
17
17
|
const _string = require("../utilities/string");
|
|
18
18
|
const _element = require("../utilities/element");
|
|
19
|
-
const { compress } = _necessary.arrayUtilities;
|
|
19
|
+
const { first, second, compress } = _necessary.arrayUtilities;
|
|
20
20
|
const _default = (0, _elements.define)(class Equivalence extends _occamlanguages.Element {
|
|
21
21
|
constructor(context, string, node, breakPoint, terms){
|
|
22
22
|
super(context, string, node, breakPoint);
|
|
@@ -70,8 +70,8 @@ const _default = (0, _elements.define)(class Equivalence extends _occamlanguages
|
|
|
70
70
|
}
|
|
71
71
|
isDisjointFrom(equivalence) {
|
|
72
72
|
const disjointFrom = equivalence.everyTerm((term)=>{
|
|
73
|
-
const
|
|
74
|
-
if (!
|
|
73
|
+
const termEquates = this.equateTerm(term);
|
|
74
|
+
if (!termEquates) {
|
|
75
75
|
return true;
|
|
76
76
|
}
|
|
77
77
|
});
|
|
@@ -85,48 +85,32 @@ const _default = (0, _elements.define)(class Equivalence extends _occamlanguages
|
|
|
85
85
|
const implicitlyGroundedTerms = this.getImplicitlyGroundedTerms(definedVariables, context), implicitlyGroundedTermsLength = implicitlyGroundedTerms.length, implicitlyGrounded = implicitlyGroundedTermsLength > 0;
|
|
86
86
|
return implicitlyGrounded;
|
|
87
87
|
}
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
if (termNodeMatches) {
|
|
88
|
+
equateTerm(term) {
|
|
89
|
+
const termA = term, termEquates = this.someTerm((term)=>{
|
|
90
|
+
const termB = term, termAEqualToTermB = termA.isEqualTo(termB);
|
|
91
|
+
if (termAEqualToTermB) {
|
|
93
92
|
return true;
|
|
94
93
|
}
|
|
95
94
|
});
|
|
96
|
-
return
|
|
95
|
+
return termEquates;
|
|
97
96
|
}
|
|
98
|
-
|
|
99
|
-
const
|
|
100
|
-
const
|
|
101
|
-
if (
|
|
97
|
+
equateTerms(terms) {
|
|
98
|
+
const termsEquate = terms.every((term)=>{
|
|
99
|
+
const termEquates = this.equateTerm(term);
|
|
100
|
+
if (termEquates) {
|
|
102
101
|
return true;
|
|
103
102
|
}
|
|
104
103
|
});
|
|
105
|
-
return
|
|
104
|
+
return termsEquate;
|
|
106
105
|
}
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
return this.terms.every(callback);
|
|
112
|
-
}
|
|
113
|
-
compareTerm(term) {
|
|
114
|
-
const termA = term, comparesToTerm = this.someTerm((term)=>{
|
|
115
|
-
const termB = term, termAEqualToTermB = termA.isEqualTo(termB);
|
|
116
|
-
if (termAEqualToTermB) {
|
|
106
|
+
matchTermNode(termNode) {
|
|
107
|
+
const termNodeMatches = this.terms.some((term)=>{
|
|
108
|
+
const termNodeMatches = term.matchTermNode(termNode);
|
|
109
|
+
if (termNodeMatches) {
|
|
117
110
|
return true;
|
|
118
111
|
}
|
|
119
112
|
});
|
|
120
|
-
return
|
|
121
|
-
}
|
|
122
|
-
someOtherTerm(term, callback) {
|
|
123
|
-
const termA = term, terms = this.terms.filter((term)=>{
|
|
124
|
-
const termB = term, termAEqualToTermB = termA.isEqualTo(termB);
|
|
125
|
-
if (!termAEqualToTermB) {
|
|
126
|
-
return true;
|
|
127
|
-
}
|
|
128
|
-
}), result = terms.some(callback);
|
|
129
|
-
return result;
|
|
113
|
+
return termNodeMatches;
|
|
130
114
|
}
|
|
131
115
|
combineTerms(terms) {
|
|
132
116
|
const combinedTerms = [
|
|
@@ -152,15 +136,43 @@ const _default = (0, _elements.define)(class Equivalence extends _occamlanguages
|
|
|
152
136
|
}, context);
|
|
153
137
|
return equivalence;
|
|
154
138
|
}
|
|
139
|
+
someOtherTerm(termNode, callback) {
|
|
140
|
+
const terms = this.terms.filter((term)=>{
|
|
141
|
+
const termNodeMatches = term.matchTermNode(termNode);
|
|
142
|
+
if (!termNodeMatches) {
|
|
143
|
+
return true;
|
|
144
|
+
}
|
|
145
|
+
}), result = terms.some(callback);
|
|
146
|
+
return result;
|
|
147
|
+
}
|
|
148
|
+
someTerm(callback) {
|
|
149
|
+
return this.terms.some(callback);
|
|
150
|
+
}
|
|
151
|
+
everyTerm(callback) {
|
|
152
|
+
return this.terms.every(callback);
|
|
153
|
+
}
|
|
155
154
|
static name = "Equivalence";
|
|
156
155
|
static fromEquality(equality, context) {
|
|
157
156
|
let equivalence;
|
|
157
|
+
let terms;
|
|
158
|
+
terms = equality.getTerms();
|
|
159
|
+
terms = terms.map((term)=>{
|
|
160
|
+
term = (0, _brackets.stripBracketsFromTerm)(term, context);
|
|
161
|
+
return term;
|
|
162
|
+
});
|
|
163
|
+
const firstTerm = first(terms), secondTerm = second(terms), firstTermEqualToSecondTerm = firstTerm.isEqualTo(secondTerm);
|
|
164
|
+
if (firstTermEqualToSecondTerm) {
|
|
165
|
+
const term = firstTerm; ///
|
|
166
|
+
terms = [
|
|
167
|
+
term
|
|
168
|
+
];
|
|
169
|
+
}
|
|
158
170
|
(0, _context.instantiate)((context)=>{
|
|
159
|
-
const
|
|
171
|
+
const equivalenceString = (0, _string.equivalenceStringFromTerms)(terms), string = equivalenceString, equivalenceNode = (0, _instantiate.instantiateEquivalence)(string, context);
|
|
160
172
|
equivalence = (0, _element.equivalenceFromEquivalenceNode)(equivalenceNode, context);
|
|
161
173
|
}, context);
|
|
162
174
|
return equivalence;
|
|
163
175
|
}
|
|
164
176
|
});
|
|
165
177
|
|
|
166
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2VxdWl2YWxlbmNlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBFbGVtZW50IH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuaW1wb3J0IHsgYXJyYXlVdGlsaXRpZXMgfSBmcm9tIFwibmVjZXNzYXJ5XCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgaW5zdGFudGlhdGUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2NvbnRleHRcIjtcbmltcG9ydCB7IGluc3RhbnRpYXRlRXF1aXZhbGVuY2UgfSBmcm9tIFwiLi4vcHJvY2Vzcy9pbnN0YW50aWF0ZVwiO1xuaW1wb3J0IHsgc3RyaXBCcmFja2V0c0Zyb21UZXJtTm9kZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvYnJhY2tldHNcIjtcbmltcG9ydCB7IGVxdWl2YWxlbmNlU3RyaW5nRnJvbVRlcm1zIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9zdHJpbmdcIjtcbmltcG9ydCB7IGVxdWl2YWxlbmNlRnJvbUVxdWl2YWxlbmNlTm9kZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvZWxlbWVudFwiO1xuXG5jb25zdCB7IGNvbXByZXNzIH0gPSBhcnJheVV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIEVxdWl2YWxlbmNlIGV4dGVuZHMgRWxlbWVudCB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdGVybXMpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy50ZXJtcyA9IHRlcm1zO1xuICB9XG5cbiAgZ2V0VGVybXMoKSB7XG4gICAgcmV0dXJuIHRoaXMudGVybXM7XG4gIH1cblxuICBnZXRFcXVpdmFsZW5jZU5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIGVxdWl2YWxlbmNlTm9kZSA9IG5vZGU7IC8vL1xuXG4gICAgcmV0dXJuIGVxdWl2YWxlbmNlTm9kZTtcbiAgfVxuXG4gIGdldEdyb3VuZGVkVGVybXMoZGVmaW5lZFZhcmlhYmxlcywgZ3JvdW5kZWRUZXJtcywgY29udGV4dCkge1xuICAgIHRoaXMudGVybXMuZm9yRWFjaCgodGVybSkgPT4ge1xuICAgICAgY29uc3QgdGVybUdyb3VuZGVkID0gdGVybS5pc0dyb3VuZGVkKGRlZmluZWRWYXJpYWJsZXMsIGNvbnRleHQpO1xuXG4gICAgICBpZiAodGVybUdyb3VuZGVkKSB7XG4gICAgICAgIGNvbnN0IHRlcm1NYXRjaGVzR3JvdW5kZWRUZXJtID0gZ3JvdW5kZWRUZXJtcy5zb21lKChncm91bmRlZFRlcm0pID0+IHtcbiAgICAgICAgICBjb25zdCBncm91bmRlZFRlcm1Ob2RlID0gZ3JvdW5kZWRUZXJtLmdldE5vZGUoKSxcbiAgICAgICAgICAgICAgICBncm91bmRlZFRlcm1Ob2RlTWF0Y2hlcyA9IHRlcm0ubWF0Y2hUZXJtTm9kZShncm91bmRlZFRlcm1Ob2RlKTtcblxuICAgICAgICAgIGlmIChncm91bmRlZFRlcm1Ob2RlTWF0Y2hlcykge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuXG4gICAgICAgIGlmICghdGVybU1hdGNoZXNHcm91bmRlZFRlcm0pIHtcbiAgICAgICAgICBjb25zdCBncm91bmRlZFRlcm0gPSB0ZXJtO1xuXG4gICAgICAgICAgZ3JvdW5kZWRUZXJtcy5wdXNoKGdyb3VuZGVkVGVybSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGdldEluaXRpYWxseUdyb3VuZGVkVGVybXMoY29udGV4dCkge1xuICAgIGNvbnN0IGluaXRpYWxseUdyb3VuZGVkVGVybXMgPSB0aGlzLnRlcm1zLnJlZHVjZSgoaW5pdGlhbGx5R3JvdW5kZWRUZXJtcywgdGVybSkgPT4ge1xuICAgICAgY29uc3QgdGVybUluaXRpYWxseUdyb3VuZGVkID0gdGVybS5pc0luaXRpYWxseUdyb3VuZGVkKGNvbnRleHQpO1xuXG4gICAgICBpZiAodGVybUluaXRpYWxseUdyb3VuZGVkKSB7XG4gICAgICAgIGNvbnN0IGluaXRpYWxseUdyb3VuZGVkVGVybSA9IHRlcm07IC8vL1xuXG4gICAgICAgIGluaXRpYWxseUdyb3VuZGVkVGVybXMucHVzaChpbml0aWFsbHlHcm91bmRlZFRlcm0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gaW5pdGlhbGx5R3JvdW5kZWRUZXJtcztcbiAgICB9LCBbXSk7XG5cbiAgICByZXR1cm4gaW5pdGlhbGx5R3JvdW5kZWRUZXJtcztcbiAgfVxuXG4gIGdldEltcGxpY2l0bHlHcm91bmRlZFRlcm1zKGRlZmluZWRWYXJpYWJsZXMsIGNvbnRleHQpIHtcbiAgICBjb25zdCBpbXBsaWNpdGx5R3JvdW5kZWRUZXJtcyA9IHRoaXMudGVybXMucmVkdWNlKChpbXBsaWNpdGx5R3JvdW5kZWRUZXJtcywgdGVybSkgPT4ge1xuICAgICAgY29uc3QgdGVybUltcGxpY2l0bHlHcm91bmRlZCA9IHRlcm0uaXNJbXBsaWNpdGx5R3JvdW5kZWQoZGVmaW5lZFZhcmlhYmxlcywgY29udGV4dCk7XG5cbiAgICAgIGlmICh0ZXJtSW1wbGljaXRseUdyb3VuZGVkKSB7XG4gICAgICAgIGNvbnN0IGltcGxpY2l0bHlHcm91bmRlZFRlcm0gPSB0ZXJtOyAvLy9cblxuICAgICAgICBpbXBsaWNpdGx5R3JvdW5kZWRUZXJtcy5wdXNoKGltcGxpY2l0bHlHcm91bmRlZFRlcm0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gaW1wbGljaXRseUdyb3VuZGVkVGVybXM7XG4gICAgfSwgW10pO1xuXG4gICAgcmV0dXJuIGltcGxpY2l0bHlHcm91bmRlZFRlcm1zO1xuICB9XG5cbiAgaXNEaXNqb2ludEZyb20oZXF1aXZhbGVuY2UpIHtcbiAgICBjb25zdCBkaXNqb2ludEZyb20gPSBlcXVpdmFsZW5jZS5ldmVyeVRlcm0oKHRlcm0pID0+IHtcbiAgICAgIGNvbnN0IGNvbXBhcmVzVG9UZXJtID0gdGhpcy5jb21wYXJlVGVybSh0ZXJtKTtcblxuICAgICAgaWYgKCFjb21wYXJlc1RvVGVybSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBkaXNqb2ludEZyb207XG4gIH1cblxuICBpc0luaXRpYWxseUdyb3VuZGVkKGNvbnRleHQpIHtcbiAgICBjb25zdCBpbml0aWFsbHlHcm91bmRlZFRlcm1zID0gdGhpcy5nZXRJbml0aWFsbHlHcm91bmRlZFRlcm1zKGNvbnRleHQpLFxuICAgICAgICAgIGluaXRpYWxseUdyb3VuZGVkVGVybXNMZW5ndGggPSBpbml0aWFsbHlHcm91bmRlZFRlcm1zLmxlbmd0aCxcbiAgICAgICAgICBpbml0aWFsbHlHcm91bmRlZCA9IChpbml0aWFsbHlHcm91bmRlZFRlcm1zTGVuZ3RoID4gMCk7XG5cbiAgICByZXR1cm4gaW5pdGlhbGx5R3JvdW5kZWQ7XG4gIH1cblxuICBpc0ltcGxpY2l0bHlHcm91bmRlZChkZWZpbmVkVmFyaWFibGVzLCBjb250ZXh0KSB7XG4gICAgY29uc3QgaW1wbGljaXRseUdyb3VuZGVkVGVybXMgPSB0aGlzLmdldEltcGxpY2l0bHlHcm91bmRlZFRlcm1zKGRlZmluZWRWYXJpYWJsZXMsIGNvbnRleHQpLFxuICAgICAgICAgIGltcGxpY2l0bHlHcm91bmRlZFRlcm1zTGVuZ3RoID0gaW1wbGljaXRseUdyb3VuZGVkVGVybXMubGVuZ3RoLFxuICAgICAgICAgIGltcGxpY2l0bHlHcm91bmRlZCA9IChpbXBsaWNpdGx5R3JvdW5kZWRUZXJtc0xlbmd0aCA+IDApO1xuXG4gICAgcmV0dXJuIGltcGxpY2l0bHlHcm91bmRlZDtcbiAgfVxuXG4gIG1hdGNoVGVybU5vZGUodGVybU5vZGUpIHtcbiAgICB0ZXJtTm9kZSA9IHN0cmlwQnJhY2tldHNGcm9tVGVybU5vZGUodGVybU5vZGUpOyAvLy9cblxuICAgIGNvbnN0IHRlcm1Ob2RlTWF0Y2hlcyA9IHRoaXMuc29tZVRlcm0oKHRlcm0pID0+IHtcbiAgICAgIGNvbnN0IHRlcm1Ob2RlTWF0Y2hlcyA9IHRlcm0ubWF0Y2hUZXJtTm9kZSh0ZXJtTm9kZSk7XG5cbiAgICAgIGlmICh0ZXJtTm9kZU1hdGNoZXMpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGVybU5vZGVNYXRjaGVzO1xuICB9XG5cbiAgbWF0Y2hUZXJtTm9kZXModGVybU5vZGVzKSB7XG4gICAgY29uc3QgdGVybU5vZGVzTWF0Y2ggPSB0ZXJtTm9kZXMuZXZlcnkoKHRlcm1Ob2RlKSA9PiB7XG4gICAgICBjb25zdCB0ZXJtTm9kZU1hdGNoZXMgPSB0aGlzLm1hdGNoVGVybU5vZGUodGVybU5vZGUpO1xuXG4gICAgICBpZiAodGVybU5vZGVNYXRjaGVzKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRlcm1Ob2Rlc01hdGNoO1xuICB9XG5cbiAgc29tZVRlcm0oY2FsbGJhY2spIHsgcmV0dXJuIHRoaXMudGVybXMuc29tZShjYWxsYmFjayk7IH1cblxuICBldmVyeVRlcm0oY2FsbGJhY2spIHsgcmV0dXJuIHRoaXMudGVybXMuZXZlcnkoY2FsbGJhY2spOyB9XG5cbiAgY29tcGFyZVRlcm0odGVybSkge1xuICAgIGNvbnN0IHRlcm1BID0gdGVybSwgLy8vXG4gICAgICAgICAgY29tcGFyZXNUb1Rlcm0gPSB0aGlzLnNvbWVUZXJtKCh0ZXJtKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0ZXJtQiA9IHRlcm0sIC8vL1xuICAgICAgICAgICAgICAgICAgdGVybUFFcXVhbFRvVGVybUIgPSB0ZXJtQS5pc0VxdWFsVG8odGVybUIpO1xuXG4gICAgICAgICAgICBpZiAodGVybUFFcXVhbFRvVGVybUIpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG5cbiAgICByZXR1cm4gY29tcGFyZXNUb1Rlcm07XG4gIH1cblxuICBzb21lT3RoZXJUZXJtKHRlcm0sIGNhbGxiYWNrKSB7XG4gICAgY29uc3QgdGVybUEgPSB0ZXJtLCAvLy9cbiAgICAgICAgICB0ZXJtcyA9IHRoaXMudGVybXMuZmlsdGVyKCh0ZXJtKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0ZXJtQiA9IHRlcm0sIC8vL1xuICAgICAgICAgICAgICAgICAgdGVybUFFcXVhbFRvVGVybUIgPSB0ZXJtQS5pc0VxdWFsVG8odGVybUIpO1xuXG4gICAgICAgICAgICBpZiAoIXRlcm1BRXF1YWxUb1Rlcm1CKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pLFxuICAgICAgICAgIHJlc3VsdCA9IHRlcm1zLnNvbWUoY2FsbGJhY2spO1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIGNvbWJpbmVUZXJtcyh0ZXJtcykge1xuICAgIGNvbnN0IGNvbWJpbmVkVGVybXMgPSBbXG4gICAgICAuLi50aGlzLnRlcm1zLFxuICAgICAgLi4udGVybXNcbiAgICBdO1xuXG4gICAgY29tcHJlc3MoY29tYmluZWRUZXJtcywgKGNvbWJpbmVkVGVybUEsIGNvbWJpbmVkVGVybUIpID0+IHtcbiAgICAgIGNvbnN0IGNvbWJpbmVkVGVybUVxdWFsVG9Db21iaW5lZFRlcm1CID0gY29tYmluZWRUZXJtQS5pc0VxdWFsVG8oY29tYmluZWRUZXJtQik7XG5cbiAgICAgIGlmICghY29tYmluZWRUZXJtRXF1YWxUb0NvbWJpbmVkVGVybUIpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gY29tYmluZWRUZXJtcztcbiAgfVxuXG4gIG1lcmdlZFdpdGgoZXF1aXZhbGVuY2UsIGNvbnRleHQpIHtcbiAgICBpbnN0YW50aWF0ZSgoY29udGV4dCkgPT4ge1xuICAgICAgbGV0IHRlcm1zO1xuXG4gICAgICB0ZXJtcyA9IGVxdWl2YWxlbmNlLmdldFRlcm1zKCk7XG5cbiAgICAgIGNvbnN0IGNvbWJpbmVkVGVybXMgPSB0aGlzLmNvbWJpbmVUZXJtcyh0ZXJtcyk7XG5cbiAgICAgIHRlcm1zID0gY29tYmluZWRUZXJtczsgIC8vL1xuXG4gICAgICBjb25zdCBlcXVpdmFsZW5jZVN0cmluZyA9IGVxdWl2YWxlbmNlU3RyaW5nRnJvbVRlcm1zKHRlcm1zKSxcbiAgICAgICAgICAgIHN0cmluZyA9IGVxdWl2YWxlbmNlU3RyaW5nLCAgLy8vXG4gICAgICAgICAgICBlcXVpdmFsZW5jZU5vZGUgPSBpbnN0YW50aWF0ZUVxdWl2YWxlbmNlKHN0cmluZywgY29udGV4dCk7XG5cbiAgICAgIGVxdWl2YWxlbmNlID0gZXF1aXZhbGVuY2VGcm9tRXF1aXZhbGVuY2VOb2RlKGVxdWl2YWxlbmNlTm9kZSwgY29udGV4dCk7XG4gICAgfSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gZXF1aXZhbGVuY2U7XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiRXF1aXZhbGVuY2VcIjtcblxuICBzdGF0aWMgZnJvbUVxdWFsaXR5KGVxdWFsaXR5LCBjb250ZXh0KSB7XG4gICAgbGV0IGVxdWl2YWxlbmNlO1xuXG4gICAgaW5zdGFudGlhdGUoKGNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IHRlcm1zID0gZXF1YWxpdHkuZ2V0VGVybXMoKSxcbiAgICAgICAgICAgIGVxdWl2YWxlbmNlU3RyaW5nID0gZXF1aXZhbGVuY2VTdHJpbmdGcm9tVGVybXModGVybXMpLFxuICAgICAgICAgICAgc3RyaW5nID0gZXF1aXZhbGVuY2VTdHJpbmcsICAvLy9cbiAgICAgICAgICAgIGVxdWl2YWxlbmNlTm9kZSA9IGluc3RhbnRpYXRlRXF1aXZhbGVuY2Uoc3RyaW5nLCBjb250ZXh0KTtcblxuICAgICAgZXF1aXZhbGVuY2UgPSBlcXVpdmFsZW5jZUZyb21FcXVpdmFsZW5jZU5vZGUoZXF1aXZhbGVuY2VOb2RlLCBjb250ZXh0KTtcbiAgICB9LCBjb250ZXh0KTtcblxuICAgIHJldHVybiBlcXVpdmFsZW5jZTtcbiAgfVxufSk7XG4iXSwibmFtZXMiOlsiY29tcHJlc3MiLCJhcnJheVV0aWxpdGllcyIsImRlZmluZSIsIkVxdWl2YWxlbmNlIiwiRWxlbWVudCIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsInRlcm1zIiwiZ2V0VGVybXMiLCJnZXRFcXVpdmFsZW5jZU5vZGUiLCJnZXROb2RlIiwiZXF1aXZhbGVuY2VOb2RlIiwiZ2V0R3JvdW5kZWRUZXJtcyIsImRlZmluZWRWYXJpYWJsZXMiLCJncm91bmRlZFRlcm1zIiwiZm9yRWFjaCIsInRlcm0iLCJ0ZXJtR3JvdW5kZWQiLCJpc0dyb3VuZGVkIiwidGVybU1hdGNoZXNHcm91bmRlZFRlcm0iLCJzb21lIiwiZ3JvdW5kZWRUZXJtIiwiZ3JvdW5kZWRUZXJtTm9kZSIsImdyb3VuZGVkVGVybU5vZGVNYXRjaGVzIiwibWF0Y2hUZXJtTm9kZSIsInB1c2giLCJnZXRJbml0aWFsbHlHcm91bmRlZFRlcm1zIiwiaW5pdGlhbGx5R3JvdW5kZWRUZXJtcyIsInJlZHVjZSIsInRlcm1Jbml0aWFsbHlHcm91bmRlZCIsImlzSW5pdGlhbGx5R3JvdW5kZWQiLCJpbml0aWFsbHlHcm91bmRlZFRlcm0iLCJnZXRJbXBsaWNpdGx5R3JvdW5kZWRUZXJtcyIsImltcGxpY2l0bHlHcm91bmRlZFRlcm1zIiwidGVybUltcGxpY2l0bHlHcm91bmRlZCIsImlzSW1wbGljaXRseUdyb3VuZGVkIiwiaW1wbGljaXRseUdyb3VuZGVkVGVybSIsImlzRGlzam9pbnRGcm9tIiwiZXF1aXZhbGVuY2UiLCJkaXNqb2ludEZyb20iLCJldmVyeVRlcm0iLCJjb21wYXJlc1RvVGVybSIsImNvbXBhcmVUZXJtIiwiaW5pdGlhbGx5R3JvdW5kZWRUZXJtc0xlbmd0aCIsImxlbmd0aCIsImluaXRpYWxseUdyb3VuZGVkIiwiaW1wbGljaXRseUdyb3VuZGVkVGVybXNMZW5ndGgiLCJpbXBsaWNpdGx5R3JvdW5kZWQiLCJ0ZXJtTm9kZSIsInN0cmlwQnJhY2tldHNGcm9tVGVybU5vZGUiLCJ0ZXJtTm9kZU1hdGNoZXMiLCJzb21lVGVybSIsIm1hdGNoVGVybU5vZGVzIiwidGVybU5vZGVzIiwidGVybU5vZGVzTWF0Y2giLCJldmVyeSIsImNhbGxiYWNrIiwidGVybUEiLCJ0ZXJtQiIsInRlcm1BRXF1YWxUb1Rlcm1CIiwiaXNFcXVhbFRvIiwic29tZU90aGVyVGVybSIsImZpbHRlciIsInJlc3VsdCIsImNvbWJpbmVUZXJtcyIsImNvbWJpbmVkVGVybXMiLCJjb21iaW5lZFRlcm1BIiwiY29tYmluZWRUZXJtQiIsImNvbWJpbmVkVGVybUVxdWFsVG9Db21iaW5lZFRlcm1CIiwibWVyZ2VkV2l0aCIsImluc3RhbnRpYXRlIiwiZXF1aXZhbGVuY2VTdHJpbmciLCJlcXVpdmFsZW5jZVN0cmluZ0Zyb21UZXJtcyIsImluc3RhbnRpYXRlRXF1aXZhbGVuY2UiLCJlcXVpdmFsZW5jZUZyb21FcXVpdmFsZW5jZU5vZGUiLCJuYW1lIiwiZnJvbUVxdWFsaXR5IiwiZXF1YWxpdHkiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQWNBOzs7ZUFBQTs7O2dDQVp3QjsyQkFDTzswQkFFUjt5QkFDSzs2QkFDVzswQkFDRzt3QkFDQzt5QkFDSTtBQUUvQyxNQUFNLEVBQUVBLFFBQVEsRUFBRSxHQUFHQyx5QkFBYztNQUVuQyxXQUFlQyxJQUFBQSxnQkFBTSxFQUFDLE1BQU1DLG9CQUFvQkMsdUJBQU87SUFDckQsWUFBWUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLElBQUksRUFBRUMsVUFBVSxFQUFFQyxLQUFLLENBQUU7UUFDcEQsS0FBSyxDQUFDSixTQUFTQyxRQUFRQyxNQUFNQztRQUU3QixJQUFJLENBQUNDLEtBQUssR0FBR0E7SUFDZjtJQUVBQyxXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUNELEtBQUs7SUFDbkI7SUFFQUUscUJBQXFCO1FBQ25CLE1BQU1KLE9BQU8sSUFBSSxDQUFDSyxP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
|
|
178
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2VxdWl2YWxlbmNlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBFbGVtZW50IH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuaW1wb3J0IHsgYXJyYXlVdGlsaXRpZXMgfSBmcm9tIFwibmVjZXNzYXJ5XCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgaW5zdGFudGlhdGUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2NvbnRleHRcIjtcbmltcG9ydCB7IHN0cmlwQnJhY2tldHNGcm9tVGVybSB9IGZyb20gXCIuLi91dGlsaXRpZXMvYnJhY2tldHNcIjtcbmltcG9ydCB7IGluc3RhbnRpYXRlRXF1aXZhbGVuY2UgfSBmcm9tIFwiLi4vcHJvY2Vzcy9pbnN0YW50aWF0ZVwiO1xuaW1wb3J0IHsgZXF1aXZhbGVuY2VTdHJpbmdGcm9tVGVybXMgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3N0cmluZ1wiO1xuaW1wb3J0IHsgZXF1aXZhbGVuY2VGcm9tRXF1aXZhbGVuY2VOb2RlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9lbGVtZW50XCI7XG5cbmNvbnN0IHsgZmlyc3QsIHNlY29uZCwgY29tcHJlc3MgfSA9IGFycmF5VXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgRXF1aXZhbGVuY2UgZXh0ZW5kcyBFbGVtZW50IHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB0ZXJtcykge1xuICAgIHN1cGVyKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCk7XG5cbiAgICB0aGlzLnRlcm1zID0gdGVybXM7XG4gIH1cblxuICBnZXRUZXJtcygpIHtcbiAgICByZXR1cm4gdGhpcy50ZXJtcztcbiAgfVxuXG4gIGdldEVxdWl2YWxlbmNlTm9kZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5nZXROb2RlKCksXG4gICAgICAgICAgZXF1aXZhbGVuY2VOb2RlID0gbm9kZTsgLy8vXG5cbiAgICByZXR1cm4gZXF1aXZhbGVuY2VOb2RlO1xuICB9XG5cbiAgZ2V0R3JvdW5kZWRUZXJtcyhkZWZpbmVkVmFyaWFibGVzLCBncm91bmRlZFRlcm1zLCBjb250ZXh0KSB7XG4gICAgdGhpcy50ZXJtcy5mb3JFYWNoKCh0ZXJtKSA9PiB7XG4gICAgICBjb25zdCB0ZXJtR3JvdW5kZWQgPSB0ZXJtLmlzR3JvdW5kZWQoZGVmaW5lZFZhcmlhYmxlcywgY29udGV4dCk7XG5cbiAgICAgIGlmICh0ZXJtR3JvdW5kZWQpIHtcbiAgICAgICAgY29uc3QgdGVybU1hdGNoZXNHcm91bmRlZFRlcm0gPSBncm91bmRlZFRlcm1zLnNvbWUoKGdyb3VuZGVkVGVybSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGdyb3VuZGVkVGVybU5vZGUgPSBncm91bmRlZFRlcm0uZ2V0Tm9kZSgpLFxuICAgICAgICAgICAgICAgIGdyb3VuZGVkVGVybU5vZGVNYXRjaGVzID0gdGVybS5tYXRjaFRlcm1Ob2RlKGdyb3VuZGVkVGVybU5vZGUpO1xuXG4gICAgICAgICAgaWYgKGdyb3VuZGVkVGVybU5vZGVNYXRjaGVzKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG5cbiAgICAgICAgaWYgKCF0ZXJtTWF0Y2hlc0dyb3VuZGVkVGVybSkge1xuICAgICAgICAgIGNvbnN0IGdyb3VuZGVkVGVybSA9IHRlcm07XG5cbiAgICAgICAgICBncm91bmRlZFRlcm1zLnB1c2goZ3JvdW5kZWRUZXJtKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgZ2V0SW5pdGlhbGx5R3JvdW5kZWRUZXJtcyhjb250ZXh0KSB7XG4gICAgY29uc3QgaW5pdGlhbGx5R3JvdW5kZWRUZXJtcyA9IHRoaXMudGVybXMucmVkdWNlKChpbml0aWFsbHlHcm91bmRlZFRlcm1zLCB0ZXJtKSA9PiB7XG4gICAgICBjb25zdCB0ZXJtSW5pdGlhbGx5R3JvdW5kZWQgPSB0ZXJtLmlzSW5pdGlhbGx5R3JvdW5kZWQoY29udGV4dCk7XG5cbiAgICAgIGlmICh0ZXJtSW5pdGlhbGx5R3JvdW5kZWQpIHtcbiAgICAgICAgY29uc3QgaW5pdGlhbGx5R3JvdW5kZWRUZXJtID0gdGVybTsgLy8vXG5cbiAgICAgICAgaW5pdGlhbGx5R3JvdW5kZWRUZXJtcy5wdXNoKGluaXRpYWxseUdyb3VuZGVkVGVybSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBpbml0aWFsbHlHcm91bmRlZFRlcm1zO1xuICAgIH0sIFtdKTtcblxuICAgIHJldHVybiBpbml0aWFsbHlHcm91bmRlZFRlcm1zO1xuICB9XG5cbiAgZ2V0SW1wbGljaXRseUdyb3VuZGVkVGVybXMoZGVmaW5lZFZhcmlhYmxlcywgY29udGV4dCkge1xuICAgIGNvbnN0IGltcGxpY2l0bHlHcm91bmRlZFRlcm1zID0gdGhpcy50ZXJtcy5yZWR1Y2UoKGltcGxpY2l0bHlHcm91bmRlZFRlcm1zLCB0ZXJtKSA9PiB7XG4gICAgICBjb25zdCB0ZXJtSW1wbGljaXRseUdyb3VuZGVkID0gdGVybS5pc0ltcGxpY2l0bHlHcm91bmRlZChkZWZpbmVkVmFyaWFibGVzLCBjb250ZXh0KTtcblxuICAgICAgaWYgKHRlcm1JbXBsaWNpdGx5R3JvdW5kZWQpIHtcbiAgICAgICAgY29uc3QgaW1wbGljaXRseUdyb3VuZGVkVGVybSA9IHRlcm07IC8vL1xuXG4gICAgICAgIGltcGxpY2l0bHlHcm91bmRlZFRlcm1zLnB1c2goaW1wbGljaXRseUdyb3VuZGVkVGVybSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBpbXBsaWNpdGx5R3JvdW5kZWRUZXJtcztcbiAgICB9LCBbXSk7XG5cbiAgICByZXR1cm4gaW1wbGljaXRseUdyb3VuZGVkVGVybXM7XG4gIH1cblxuICBpc0Rpc2pvaW50RnJvbShlcXVpdmFsZW5jZSkge1xuICAgIGNvbnN0IGRpc2pvaW50RnJvbSA9IGVxdWl2YWxlbmNlLmV2ZXJ5VGVybSgodGVybSkgPT4ge1xuICAgICAgY29uc3QgdGVybUVxdWF0ZXMgPSB0aGlzLmVxdWF0ZVRlcm0odGVybSk7XG5cbiAgICAgIGlmICghdGVybUVxdWF0ZXMpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZGlzam9pbnRGcm9tO1xuICB9XG5cbiAgaXNJbml0aWFsbHlHcm91bmRlZChjb250ZXh0KSB7XG4gICAgY29uc3QgaW5pdGlhbGx5R3JvdW5kZWRUZXJtcyA9IHRoaXMuZ2V0SW5pdGlhbGx5R3JvdW5kZWRUZXJtcyhjb250ZXh0KSxcbiAgICAgICAgICBpbml0aWFsbHlHcm91bmRlZFRlcm1zTGVuZ3RoID0gaW5pdGlhbGx5R3JvdW5kZWRUZXJtcy5sZW5ndGgsXG4gICAgICAgICAgaW5pdGlhbGx5R3JvdW5kZWQgPSAoaW5pdGlhbGx5R3JvdW5kZWRUZXJtc0xlbmd0aCA+IDApO1xuXG4gICAgcmV0dXJuIGluaXRpYWxseUdyb3VuZGVkO1xuICB9XG5cbiAgaXNJbXBsaWNpdGx5R3JvdW5kZWQoZGVmaW5lZFZhcmlhYmxlcywgY29udGV4dCkge1xuICAgIGNvbnN0IGltcGxpY2l0bHlHcm91bmRlZFRlcm1zID0gdGhpcy5nZXRJbXBsaWNpdGx5R3JvdW5kZWRUZXJtcyhkZWZpbmVkVmFyaWFibGVzLCBjb250ZXh0KSxcbiAgICAgICAgICBpbXBsaWNpdGx5R3JvdW5kZWRUZXJtc0xlbmd0aCA9IGltcGxpY2l0bHlHcm91bmRlZFRlcm1zLmxlbmd0aCxcbiAgICAgICAgICBpbXBsaWNpdGx5R3JvdW5kZWQgPSAoaW1wbGljaXRseUdyb3VuZGVkVGVybXNMZW5ndGggPiAwKTtcblxuICAgIHJldHVybiBpbXBsaWNpdGx5R3JvdW5kZWQ7XG4gIH1cblxuICBlcXVhdGVUZXJtKHRlcm0pIHtcbiAgICBjb25zdCB0ZXJtQSA9IHRlcm0sIC8vL1xuICAgICAgICAgIHRlcm1FcXVhdGVzID0gdGhpcy5zb21lVGVybSgodGVybSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdGVybUIgPSB0ZXJtLCAvLy9cbiAgICAgICAgICAgICAgICAgIHRlcm1BRXF1YWxUb1Rlcm1CID0gdGVybUEuaXNFcXVhbFRvKHRlcm1CKTtcblxuICAgICAgICAgICAgaWYgKHRlcm1BRXF1YWxUb1Rlcm1CKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuXG4gICAgcmV0dXJuIHRlcm1FcXVhdGVzO1xuICB9XG5cbiAgZXF1YXRlVGVybXModGVybXMpIHtcbiAgICBjb25zdCB0ZXJtc0VxdWF0ZSA9IHRlcm1zLmV2ZXJ5KCh0ZXJtKSA9PiB7XG4gICAgICBjb25zdCB0ZXJtRXF1YXRlcyA9IHRoaXMuZXF1YXRlVGVybSh0ZXJtKTtcblxuICAgICAgaWYgKHRlcm1FcXVhdGVzKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRlcm1zRXF1YXRlO1xuICB9XG5cbiAgbWF0Y2hUZXJtTm9kZSh0ZXJtTm9kZSkge1xuICAgIGNvbnN0IHRlcm1Ob2RlTWF0Y2hlcyA9IHRoaXMudGVybXMuc29tZSgodGVybSkgPT4ge1xuICAgICAgY29uc3QgdGVybU5vZGVNYXRjaGVzID0gdGVybS5tYXRjaFRlcm1Ob2RlKHRlcm1Ob2RlKTtcblxuICAgICAgaWYgKHRlcm1Ob2RlTWF0Y2hlcykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiB0ZXJtTm9kZU1hdGNoZXM7XG4gIH1cblxuICBjb21iaW5lVGVybXModGVybXMpIHtcbiAgICBjb25zdCBjb21iaW5lZFRlcm1zID0gW1xuICAgICAgLi4udGhpcy50ZXJtcyxcbiAgICAgIC4uLnRlcm1zXG4gICAgXTtcblxuICAgIGNvbXByZXNzKGNvbWJpbmVkVGVybXMsIChjb21iaW5lZFRlcm1BLCBjb21iaW5lZFRlcm1CKSA9PiB7XG4gICAgICBjb25zdCBjb21iaW5lZFRlcm1FcXVhbFRvQ29tYmluZWRUZXJtQiA9IGNvbWJpbmVkVGVybUEuaXNFcXVhbFRvKGNvbWJpbmVkVGVybUIpO1xuXG4gICAgICBpZiAoIWNvbWJpbmVkVGVybUVxdWFsVG9Db21iaW5lZFRlcm1CKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGNvbWJpbmVkVGVybXM7XG4gIH1cblxuICBtZXJnZWRXaXRoKGVxdWl2YWxlbmNlLCBjb250ZXh0KSB7XG4gICAgaW5zdGFudGlhdGUoKGNvbnRleHQpID0+IHtcbiAgICAgIGxldCB0ZXJtcztcblxuICAgICAgdGVybXMgPSBlcXVpdmFsZW5jZS5nZXRUZXJtcygpO1xuXG4gICAgICBjb25zdCBjb21iaW5lZFRlcm1zID0gdGhpcy5jb21iaW5lVGVybXModGVybXMpO1xuXG4gICAgICB0ZXJtcyA9IGNvbWJpbmVkVGVybXM7ICAvLy9cblxuICAgICAgY29uc3QgZXF1aXZhbGVuY2VTdHJpbmcgPSBlcXVpdmFsZW5jZVN0cmluZ0Zyb21UZXJtcyh0ZXJtcyksXG4gICAgICAgICAgICBzdHJpbmcgPSBlcXVpdmFsZW5jZVN0cmluZywgIC8vL1xuICAgICAgICAgICAgZXF1aXZhbGVuY2VOb2RlID0gaW5zdGFudGlhdGVFcXVpdmFsZW5jZShzdHJpbmcsIGNvbnRleHQpO1xuXG4gICAgICBlcXVpdmFsZW5jZSA9IGVxdWl2YWxlbmNlRnJvbUVxdWl2YWxlbmNlTm9kZShlcXVpdmFsZW5jZU5vZGUsIGNvbnRleHQpO1xuICAgIH0sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGVxdWl2YWxlbmNlO1xuICB9XG5cbiAgc29tZU90aGVyVGVybSh0ZXJtTm9kZSwgY2FsbGJhY2spIHtcbiAgICBjb25zdCB0ZXJtcyA9IHRoaXMudGVybXMuZmlsdGVyKCh0ZXJtKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0ZXJtTm9kZU1hdGNoZXMgPSB0ZXJtLm1hdGNoVGVybU5vZGUodGVybU5vZGUpO1xuXG4gICAgICAgICAgICBpZiAoIXRlcm1Ob2RlTWF0Y2hlcykge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSxcbiAgICAgICAgICByZXN1bHQgPSB0ZXJtcy5zb21lKGNhbGxiYWNrKTtcblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBzb21lVGVybShjYWxsYmFjaykgeyByZXR1cm4gdGhpcy50ZXJtcy5zb21lKGNhbGxiYWNrKTsgfVxuXG4gIGV2ZXJ5VGVybShjYWxsYmFjaykgeyByZXR1cm4gdGhpcy50ZXJtcy5ldmVyeShjYWxsYmFjayk7IH1cblxuICBzdGF0aWMgbmFtZSA9IFwiRXF1aXZhbGVuY2VcIjtcblxuICBzdGF0aWMgZnJvbUVxdWFsaXR5KGVxdWFsaXR5LCBjb250ZXh0KSB7XG4gICAgbGV0IGVxdWl2YWxlbmNlO1xuXG4gICAgbGV0IHRlcm1zO1xuXG4gICAgdGVybXMgPSBlcXVhbGl0eS5nZXRUZXJtcygpO1xuXG4gICAgdGVybXMgPSB0ZXJtcy5tYXAoKHRlcm0pID0+IHsgLy8vXG4gICAgICB0ZXJtID0gc3RyaXBCcmFja2V0c0Zyb21UZXJtKHRlcm0sIGNvbnRleHQpO1xuXG4gICAgICByZXR1cm4gdGVybTtcbiAgICB9KTtcblxuICAgIGNvbnN0IGZpcnN0VGVybSA9IGZpcnN0KHRlcm1zKSxcbiAgICAgICAgICBzZWNvbmRUZXJtID0gc2Vjb25kKHRlcm1zKSxcbiAgICAgICAgICBmaXJzdFRlcm1FcXVhbFRvU2Vjb25kVGVybSA9IGZpcnN0VGVybS5pc0VxdWFsVG8oc2Vjb25kVGVybSk7XG5cbiAgICBpZiAoZmlyc3RUZXJtRXF1YWxUb1NlY29uZFRlcm0pIHtcbiAgICAgIGNvbnN0IHRlcm0gPSBmaXJzdFRlcm07IC8vL1xuXG4gICAgICB0ZXJtcyA9IFtcbiAgICAgICAgdGVybVxuICAgICAgXTtcbiAgICB9XG5cbiAgICBpbnN0YW50aWF0ZSgoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3QgZXF1aXZhbGVuY2VTdHJpbmcgPSBlcXVpdmFsZW5jZVN0cmluZ0Zyb21UZXJtcyh0ZXJtcyksXG4gICAgICAgICAgICBzdHJpbmcgPSBlcXVpdmFsZW5jZVN0cmluZywgIC8vL1xuICAgICAgICAgICAgZXF1aXZhbGVuY2VOb2RlID0gaW5zdGFudGlhdGVFcXVpdmFsZW5jZShzdHJpbmcsIGNvbnRleHQpO1xuXG4gICAgICBlcXVpdmFsZW5jZSA9IGVxdWl2YWxlbmNlRnJvbUVxdWl2YWxlbmNlTm9kZShlcXVpdmFsZW5jZU5vZGUsIGNvbnRleHQpO1xuICAgIH0sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGVxdWl2YWxlbmNlO1xuICB9XG59KTtcbiJdLCJuYW1lcyI6WyJmaXJzdCIsInNlY29uZCIsImNvbXByZXNzIiwiYXJyYXlVdGlsaXRpZXMiLCJkZWZpbmUiLCJFcXVpdmFsZW5jZSIsIkVsZW1lbnQiLCJjb250ZXh0Iiwic3RyaW5nIiwibm9kZSIsImJyZWFrUG9pbnQiLCJ0ZXJtcyIsImdldFRlcm1zIiwiZ2V0RXF1aXZhbGVuY2VOb2RlIiwiZ2V0Tm9kZSIsImVxdWl2YWxlbmNlTm9kZSIsImdldEdyb3VuZGVkVGVybXMiLCJkZWZpbmVkVmFyaWFibGVzIiwiZ3JvdW5kZWRUZXJtcyIsImZvckVhY2giLCJ0ZXJtIiwidGVybUdyb3VuZGVkIiwiaXNHcm91bmRlZCIsInRlcm1NYXRjaGVzR3JvdW5kZWRUZXJtIiwic29tZSIsImdyb3VuZGVkVGVybSIsImdyb3VuZGVkVGVybU5vZGUiLCJncm91bmRlZFRlcm1Ob2RlTWF0Y2hlcyIsIm1hdGNoVGVybU5vZGUiLCJwdXNoIiwiZ2V0SW5pdGlhbGx5R3JvdW5kZWRUZXJtcyIsImluaXRpYWxseUdyb3VuZGVkVGVybXMiLCJyZWR1Y2UiLCJ0ZXJtSW5pdGlhbGx5R3JvdW5kZWQiLCJpc0luaXRpYWxseUdyb3VuZGVkIiwiaW5pdGlhbGx5R3JvdW5kZWRUZXJtIiwiZ2V0SW1wbGljaXRseUdyb3VuZGVkVGVybXMiLCJpbXBsaWNpdGx5R3JvdW5kZWRUZXJtcyIsInRlcm1JbXBsaWNpdGx5R3JvdW5kZWQiLCJpc0ltcGxpY2l0bHlHcm91bmRlZCIsImltcGxpY2l0bHlHcm91bmRlZFRlcm0iLCJpc0Rpc2pvaW50RnJvbSIsImVxdWl2YWxlbmNlIiwiZGlzam9pbnRGcm9tIiwiZXZlcnlUZXJtIiwidGVybUVxdWF0ZXMiLCJlcXVhdGVUZXJtIiwiaW5pdGlhbGx5R3JvdW5kZWRUZXJtc0xlbmd0aCIsImxlbmd0aCIsImluaXRpYWxseUdyb3VuZGVkIiwiaW1wbGljaXRseUdyb3VuZGVkVGVybXNMZW5ndGgiLCJpbXBsaWNpdGx5R3JvdW5kZWQiLCJ0ZXJtQSIsInNvbWVUZXJtIiwidGVybUIiLCJ0ZXJtQUVxdWFsVG9UZXJtQiIsImlzRXF1YWxUbyIsImVxdWF0ZVRlcm1zIiwidGVybXNFcXVhdGUiLCJldmVyeSIsInRlcm1Ob2RlIiwidGVybU5vZGVNYXRjaGVzIiwiY29tYmluZVRlcm1zIiwiY29tYmluZWRUZXJtcyIsImNvbWJpbmVkVGVybUEiLCJjb21iaW5lZFRlcm1CIiwiY29tYmluZWRUZXJtRXF1YWxUb0NvbWJpbmVkVGVybUIiLCJtZXJnZWRXaXRoIiwiaW5zdGFudGlhdGUiLCJlcXVpdmFsZW5jZVN0cmluZyIsImVxdWl2YWxlbmNlU3RyaW5nRnJvbVRlcm1zIiwiaW5zdGFudGlhdGVFcXVpdmFsZW5jZSIsImVxdWl2YWxlbmNlRnJvbUVxdWl2YWxlbmNlTm9kZSIsInNvbWVPdGhlclRlcm0iLCJjYWxsYmFjayIsImZpbHRlciIsInJlc3VsdCIsIm5hbWUiLCJmcm9tRXF1YWxpdHkiLCJlcXVhbGl0eSIsIm1hcCIsInN0cmlwQnJhY2tldHNGcm9tVGVybSIsImZpcnN0VGVybSIsInNlY29uZFRlcm0iLCJmaXJzdFRlcm1FcXVhbFRvU2Vjb25kVGVybSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBY0E7OztlQUFBOzs7Z0NBWndCOzJCQUNPOzBCQUVSO3lCQUNLOzBCQUNVOzZCQUNDO3dCQUNJO3lCQUNJ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
|
package/lib/process/equate.js
CHANGED
|
@@ -18,6 +18,7 @@ _export(exports, {
|
|
|
18
18
|
});
|
|
19
19
|
const _occamquery = require("occam-query");
|
|
20
20
|
const _zip = /*#__PURE__*/ _interop_require_default(require("../pass/zip"));
|
|
21
|
+
const _brackets = require("../utilities/brackets");
|
|
21
22
|
const _equivalences = require("../utilities/equivalences");
|
|
22
23
|
function _interop_require_default(obj) {
|
|
23
24
|
return obj && obj.__esModule ? obj : {
|
|
@@ -33,25 +34,40 @@ class EquationalPass extends _zip.default {
|
|
|
33
34
|
specificNodeQuery: termNodeQuery,
|
|
34
35
|
run: (leftTermNode, rightTermNode, context)=>{
|
|
35
36
|
let success = false;
|
|
37
|
+
leftTermNode = (0, _brackets.stripBracketsFromTermNode)(leftTermNode); ///
|
|
38
|
+
rightTermNode = (0, _brackets.stripBracketsFromTermNode)(rightTermNode); ///
|
|
36
39
|
if (!success) {
|
|
37
|
-
const
|
|
38
|
-
if (
|
|
39
|
-
|
|
40
|
+
const equivalences = context.getEquivalences(), leftEquivalence = (0, _equivalences.findEquivalenceByTermNode)(equivalences, leftTermNode), rightEquivalence = (0, _equivalences.findEquivalenceByTermNode)(equivalences, rightTermNode);
|
|
41
|
+
if (!success) {
|
|
42
|
+
if (leftEquivalence !== null && rightEquivalence !== null && leftEquivalence === rightEquivalence) {
|
|
43
|
+
success = true;
|
|
44
|
+
}
|
|
40
45
|
}
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
46
|
+
if (!success) {
|
|
47
|
+
if (leftEquivalence !== null) {
|
|
48
|
+
success = leftEquivalence.someOtherTerm(leftTermNode, (otherTerm)=>{
|
|
49
|
+
const leftTerm = otherTerm, leftTermNode = leftTerm.getNode(), descended = descend(leftTermNode, rightTermNode, context);
|
|
50
|
+
if (descended) {
|
|
51
|
+
return true;
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
if (!success) {
|
|
57
|
+
if (rightEquivalence !== null) {
|
|
58
|
+
success = rightEquivalence.someOtherTerm(rightTermNode, (otherTerm)=>{
|
|
59
|
+
const rightTerm = otherTerm, rightTermNode = rightTerm.getNode(), descended = descend(leftTermNode, rightTermNode, context);
|
|
60
|
+
if (descended) {
|
|
61
|
+
return true;
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
}
|
|
49
65
|
}
|
|
50
66
|
}
|
|
51
67
|
if (!success) {
|
|
52
68
|
const depth = 1, leftTermNodeMatchesRightTermNode = leftTermNode.match(rightTermNode, depth);
|
|
53
69
|
if (leftTermNodeMatchesRightTermNode) {
|
|
54
|
-
const
|
|
70
|
+
const descended = descend(leftTermNode, rightTermNode, context);
|
|
55
71
|
if (descended) {
|
|
56
72
|
success = true;
|
|
57
73
|
}
|
|
@@ -64,16 +80,34 @@ class EquationalPass extends _zip.default {
|
|
|
64
80
|
}
|
|
65
81
|
const equationalPass = new EquationalPass();
|
|
66
82
|
function equateTerms(leftTerm, rightTerm, context) {
|
|
67
|
-
let termsEquate;
|
|
83
|
+
let termsEquate = false;
|
|
84
|
+
const leftTermString = leftTerm.getString(), rightTermString = rightTerm.getString();
|
|
85
|
+
context.trace(`Equating the '${leftTermString}' and '${rightTermString}' terms...`);
|
|
68
86
|
const leftTermNode = leftTerm.getNode(), rightTermNode = rightTerm.getNode(), generalNode = leftTermNode, specificNode = rightTermNode, success = equationalPass.run(generalNode, specificNode, context);
|
|
69
|
-
|
|
87
|
+
if (success) {
|
|
88
|
+
termsEquate = true;
|
|
89
|
+
}
|
|
90
|
+
if (termsEquate) {
|
|
91
|
+
context.debug(`...equated the '${leftTermString}' and '${rightTermString}' terms.`);
|
|
92
|
+
}
|
|
70
93
|
return termsEquate;
|
|
71
94
|
}
|
|
72
95
|
function equateStatements(leftStatement, rightStatement, context) {
|
|
73
|
-
let statementsEquate;
|
|
96
|
+
let statementsEquate = false;
|
|
97
|
+
const leftStatementString = leftStatement.getString(), rightStatementString = rightStatement.getString();
|
|
98
|
+
context.trace(`Equating the '${leftStatementString}' and '${rightStatementString}' statements...`);
|
|
74
99
|
const leftStatementNode = leftStatement.getNode(), rightStatementNode = rightStatement.getNode(), generalNode = leftStatementNode, specificNode = rightStatementNode, success = equationalPass.run(generalNode, specificNode, context);
|
|
75
|
-
|
|
100
|
+
if (success) {
|
|
101
|
+
statementsEquate = true;
|
|
102
|
+
}
|
|
103
|
+
if (statementsEquate) {
|
|
104
|
+
context.debug(`...equated the '${leftStatementString}' and '${rightStatementString}' statements.`);
|
|
105
|
+
}
|
|
76
106
|
return statementsEquate;
|
|
77
107
|
}
|
|
108
|
+
function descend(leftTermNode, rightTermNode, context) {
|
|
109
|
+
const leftNonTerminalNode = leftTermNode, rightNonTerminalNode = rightTermNode, leftNonTerminalNodeChildNodes = leftNonTerminalNode.getChildNodes(), rightNonTerminalNodeChildNodes = rightNonTerminalNode.getChildNodes(), leftChildNodes = leftNonTerminalNodeChildNodes, rightChildNodes = rightNonTerminalNodeChildNodes, descended = equationalPass.descend(leftChildNodes, rightChildNodes, context);
|
|
110
|
+
return descended;
|
|
111
|
+
}
|
|
78
112
|
|
|
79
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcm9jZXNzL2VxdWF0ZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgcXVlcnlVdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tcXVlcnlcIjtcblxuaW1wb3J0IFppcFBhc3MgZnJvbSBcIi4uL3Bhc3MvemlwXCI7XG5cbmltcG9ydCB7IGZpbmRFcXVpdmFsZW5jZUJ5VGVybU5vZGVzIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9lcXVpdmFsZW5jZXNcIjtcblxuY29uc3QgeyBub2RlUXVlcnkgfSA9IHF1ZXJ5VXRpbGl0aWVzO1xuXG5jb25zdCB0ZXJtTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3Rlcm1cIik7XG5cbmNsYXNzIEVxdWF0aW9uYWxQYXNzIGV4dGVuZHMgWmlwUGFzcyB7XG4gIHN0YXRpYyBtYXBzID0gW1xuICAgIHtcbiAgICAgIGdlbmVyYWxOb2RlUXVlcnk6IHRlcm1Ob2RlUXVlcnksICAvLy9cbiAgICAgIHNwZWNpZmljTm9kZVF1ZXJ5OiB0ZXJtTm9kZVF1ZXJ5LCAvLy9cbiAgICAgIHJ1bjogKGxlZnRUZXJtTm9kZSwgcmlnaHRUZXJtTm9kZSwgY29udGV4dCkgPT4ge1xuICAgICAgICBsZXQgc3VjY2VzcyA9IGZhbHNlO1xuXG4gICAgICAgIGlmICghc3VjY2Vzcykge1xuICAgICAgICAgIGNvbnN0IGRlcHRoID0gSW5maW5pdHksXG4gICAgICAgICAgICAgICAgbGVmdFRlcm1Ob2RlTWF0Y2hlc1JpZ2h0VGVybU5vZGUgPSBsZWZ0VGVybU5vZGUubWF0Y2gocmlnaHRUZXJtTm9kZSwgZGVwdGgpO1xuXG4gICAgICAgICAgaWYgKGxlZnRUZXJtTm9kZU1hdGNoZXNSaWdodFRlcm1Ob2RlKSB7XG4gICAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXN1Y2Nlc3MpIHtcbiAgICAgICAgICBjb25zdCBlcXVpdmFsZW5jZXMgPSBjb250ZXh0LmdldEVxdWl2YWxlbmNlcygpLFxuICAgICAgICAgICAgICAgIHRlcm1Ob2RlcyA9IFtcbiAgICAgICAgICAgICAgICAgIGxlZnRUZXJtTm9kZSxcbiAgICAgICAgICAgICAgICAgIHJpZ2h0VGVybU5vZGVcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIGVxdWl2YWxlbmNlID0gZmluZEVxdWl2YWxlbmNlQnlUZXJtTm9kZXMoZXF1aXZhbGVuY2VzLCB0ZXJtTm9kZXMpO1xuXG4gICAgICAgICAgaWYgKGVxdWl2YWxlbmNlICE9PSBudWxsKSB7XG4gICAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXN1Y2Nlc3MpIHtcbiAgICAgICAgICBjb25zdCBkZXB0aCA9IDEsXG4gICAgICAgICAgICAgICAgbGVmdFRlcm1Ob2RlTWF0Y2hlc1JpZ2h0VGVybU5vZGUgPSBsZWZ0VGVybU5vZGUubWF0Y2gocmlnaHRUZXJtTm9kZSwgZGVwdGgpO1xuXG4gICAgICAgICAgaWYgKGxlZnRUZXJtTm9kZU1hdGNoZXNSaWdodFRlcm1Ob2RlKSB7XG4gICAgICAgICAgICBjb25zdCBsZWZ0Tm9uVGVybWluYWxOb2RlID0gbGVmdFRlcm1Ob2RlLCAvLy9cbiAgICAgICAgICAgICAgICAgIHJpZ2h0Tm9uVGVybWluYWxOb2RlID0gcmlnaHRUZXJtTm9kZSwgLy8vXG4gICAgICAgICAgICAgICAgICBsZWZ0Tm9uVGVybWluYWxOb2RlQ2hpbGROb2RlcyA9IGxlZnROb25UZXJtaW5hbE5vZGUuZ2V0Q2hpbGROb2RlcygpLFxuICAgICAgICAgICAgICAgICAgcmlnaHROb25UZXJtaW5hbE5vZGVDaGlsZE5vZGVzID0gcmlnaHROb25UZXJtaW5hbE5vZGUuZ2V0Q2hpbGROb2RlcygpLFxuICAgICAgICAgICAgICAgICAgbGVmdENoaWxkTm9kZXMgPSBsZWZ0Tm9uVGVybWluYWxOb2RlQ2hpbGROb2RlcywgLy8vXG4gICAgICAgICAgICAgICAgICByaWdodENoaWxkTm9kZXMgPSByaWdodE5vblRlcm1pbmFsTm9kZUNoaWxkTm9kZXMsIC8vL1xuICAgICAgICAgICAgICAgICAgZGVzY2VuZGVkID0gZXF1YXRpb25hbFBhc3MuZGVzY2VuZChsZWZ0Q2hpbGROb2RlcywgcmlnaHRDaGlsZE5vZGVzLCBjb250ZXh0KTtcblxuICAgICAgICAgICAgaWYgKGRlc2NlbmRlZCkge1xuICAgICAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc3VjY2VzcztcbiAgICAgIH1cbiAgICB9XG4gIF07XG59XG5cbmNvbnN0IGVxdWF0aW9uYWxQYXNzID0gbmV3IEVxdWF0aW9uYWxQYXNzKCk7XG5cbmV4cG9ydCBmdW5jdGlvbiBlcXVhdGVUZXJtcyhsZWZ0VGVybSwgcmlnaHRUZXJtLCBjb250ZXh0KSB7XG4gIGxldCB0ZXJtc0VxdWF0ZTtcblxuICBjb25zdCBsZWZ0VGVybU5vZGUgPSBsZWZ0VGVybS5nZXROb2RlKCksXG4gICAgICAgIHJpZ2h0VGVybU5vZGUgPSByaWdodFRlcm0uZ2V0Tm9kZSgpLFxuICAgICAgICBnZW5lcmFsTm9kZSA9IGxlZnRUZXJtTm9kZSwgLy8vXG4gICAgICAgIHNwZWNpZmljTm9kZSA9IHJpZ2h0VGVybU5vZGUsIC8vL1xuICAgICAgICBzdWNjZXNzID0gZXF1YXRpb25hbFBhc3MucnVuKGdlbmVyYWxOb2RlLCBzcGVjaWZpY05vZGUsIGNvbnRleHQpO1xuXG4gIHRlcm1zRXF1YXRlID0gc3VjY2VzczsgLy8vXG5cbiAgcmV0dXJuIHRlcm1zRXF1YXRlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXF1YXRlU3RhdGVtZW50cyhsZWZ0U3RhdGVtZW50LCByaWdodFN0YXRlbWVudCwgY29udGV4dCkge1xuICBsZXQgc3RhdGVtZW50c0VxdWF0ZTtcblxuICBjb25zdCBsZWZ0U3RhdGVtZW50Tm9kZSA9IGxlZnRTdGF0ZW1lbnQuZ2V0Tm9kZSgpLFxuICAgICAgICByaWdodFN0YXRlbWVudE5vZGUgPSByaWdodFN0YXRlbWVudC5nZXROb2RlKCksXG4gICAgICAgIGdlbmVyYWxOb2RlID0gbGVmdFN0YXRlbWVudE5vZGUsIC8vL1xuICAgICAgICBzcGVjaWZpY05vZGUgPSByaWdodFN0YXRlbWVudE5vZGUsIC8vL1xuICAgICAgICBzdWNjZXNzID0gZXF1YXRpb25hbFBhc3MucnVuKGdlbmVyYWxOb2RlLCBzcGVjaWZpY05vZGUsIGNvbnRleHQpO1xuXG4gIHN0YXRlbWVudHNFcXVhdGUgPSBzdWNjZXNzOyAvLy9cblxuICByZXR1cm4gc3RhdGVtZW50c0VxdWF0ZTtcbn1cbiJdLCJuYW1lcyI6WyJlcXVhdGVTdGF0ZW1lbnRzIiwiZXF1YXRlVGVybXMiLCJub2RlUXVlcnkiLCJxdWVyeVV0aWxpdGllcyIsInRlcm1Ob2RlUXVlcnkiLCJFcXVhdGlvbmFsUGFzcyIsIlppcFBhc3MiLCJtYXBzIiwiZ2VuZXJhbE5vZGVRdWVyeSIsInNwZWNpZmljTm9kZVF1ZXJ5IiwicnVuIiwibGVmdFRlcm1Ob2RlIiwicmlnaHRUZXJtTm9kZSIsImNvbnRleHQiLCJzdWNjZXNzIiwiZGVwdGgiLCJJbmZpbml0eSIsImxlZnRUZXJtTm9kZU1hdGNoZXNSaWdodFRlcm1Ob2RlIiwibWF0Y2giLCJlcXVpdmFsZW5jZXMiLCJnZXRFcXVpdmFsZW5jZXMiLCJ0ZXJtTm9kZXMiLCJlcXVpdmFsZW5jZSIsImZpbmRFcXVpdmFsZW5jZUJ5VGVybU5vZGVzIiwibGVmdE5vblRlcm1pbmFsTm9kZSIsInJpZ2h0Tm9uVGVybWluYWxOb2RlIiwibGVmdE5vblRlcm1pbmFsTm9kZUNoaWxkTm9kZXMiLCJnZXRDaGlsZE5vZGVzIiwicmlnaHROb25UZXJtaW5hbE5vZGVDaGlsZE5vZGVzIiwibGVmdENoaWxkTm9kZXMiLCJyaWdodENoaWxkTm9kZXMiLCJkZXNjZW5kZWQiLCJlcXVhdGlvbmFsUGFzcyIsImRlc2NlbmQiLCJsZWZ0VGVybSIsInJpZ2h0VGVybSIsInRlcm1zRXF1YXRlIiwiZ2V0Tm9kZSIsImdlbmVyYWxOb2RlIiwic3BlY2lmaWNOb2RlIiwibGVmdFN0YXRlbWVudCIsInJpZ2h0U3RhdGVtZW50Iiwic3RhdGVtZW50c0VxdWF0ZSIsImxlZnRTdGF0ZW1lbnROb2RlIiwicmlnaHRTdGF0ZW1lbnROb2RlIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7UUFtRmdCQTtlQUFBQTs7UUFkQUM7ZUFBQUE7Ozs0QkFuRWU7NERBRVg7OEJBRXVCOzs7Ozs7QUFFM0MsTUFBTSxFQUFFQyxTQUFTLEVBQUUsR0FBR0MsMEJBQWM7QUFFcEMsTUFBTUMsZ0JBQWdCRixVQUFVO0FBRWhDLE1BQU1HLHVCQUF1QkMsWUFBTztJQUNsQyxPQUFPQyxPQUFPO1FBQ1o7WUFDRUMsa0JBQWtCSjtZQUNsQkssbUJBQW1CTDtZQUNuQk0sS0FBSyxDQUFDQyxjQUFjQyxlQUFlQztnQkFDakMsSUFBSUMsVUFBVTtnQkFFZCxJQUFJLENBQUNBLFNBQVM7b0JBQ1osTUFBTUMsUUFBUUMsVUFDUkMsbUNBQW1DTixhQUFhTyxLQUFLLENBQUNOLGVBQWVHO29CQUUzRSxJQUFJRSxrQ0FBa0M7d0JBQ3BDSCxVQUFVO29CQUNaO2dCQUNGO2dCQUVBLElBQUksQ0FBQ0EsU0FBUztvQkFDWixNQUFNSyxlQUFlTixRQUFRTyxlQUFlLElBQ3RDQyxZQUFZO3dCQUNWVjt3QkFDQUM7cUJBQ0QsRUFDRFUsY0FBY0MsSUFBQUEsd0NBQTBCLEVBQUNKLGNBQWNFO29CQUU3RCxJQUFJQyxnQkFBZ0IsTUFBTTt3QkFDeEJSLFVBQVU7b0JBQ1o7Z0JBQ0Y7Z0JBRUEsSUFBSSxDQUFDQSxTQUFTO29CQUNaLE1BQU1DLFFBQVEsR0FDUkUsbUNBQW1DTixhQUFhTyxLQUFLLENBQUNOLGVBQWVHO29CQUUzRSxJQUFJRSxrQ0FBa0M7d0JBQ3BDLE1BQU1PLHNCQUFzQmIsY0FDdEJjLHVCQUF1QmIsZUFDdkJjLGdDQUFnQ0Ysb0JBQW9CRyxhQUFhLElBQ2pFQyxpQ0FBaUNILHFCQUFxQkUsYUFBYSxJQUNuRUUsaUJBQWlCSCwrQkFDakJJLGtCQUFrQkYsZ0NBQ2xCRyxZQUFZQyxlQUFlQyxPQUFPLENBQUNKLGdCQUFnQkMsaUJBQWlCakI7d0JBRTFFLElBQUlrQixXQUFXOzRCQUNiakIsVUFBVTt3QkFDWjtvQkFDRjtnQkFDRjtnQkFFQSxPQUFPQTtZQUNUO1FBQ0Y7S0FDRCxDQUFDO0FBQ0o7QUFFQSxNQUFNa0IsaUJBQWlCLElBQUkzQjtBQUVwQixTQUFTSixZQUFZaUMsUUFBUSxFQUFFQyxTQUFTLEVBQUV0QixPQUFPO0lBQ3RELElBQUl1QjtJQUVKLE1BQU16QixlQUFldUIsU0FBU0csT0FBTyxJQUMvQnpCLGdCQUFnQnVCLFVBQVVFLE9BQU8sSUFDakNDLGNBQWMzQixjQUNkNEIsZUFBZTNCLGVBQ2ZFLFVBQVVrQixlQUFldEIsR0FBRyxDQUFDNEIsYUFBYUMsY0FBYzFCO0lBRTlEdUIsY0FBY3RCLFNBQVMsR0FBRztJQUUxQixPQUFPc0I7QUFDVDtBQUVPLFNBQVNwQyxpQkFBaUJ3QyxhQUFhLEVBQUVDLGNBQWMsRUFBRTVCLE9BQU87SUFDckUsSUFBSTZCO0lBRUosTUFBTUMsb0JBQW9CSCxjQUFjSCxPQUFPLElBQ3pDTyxxQkFBcUJILGVBQWVKLE9BQU8sSUFDM0NDLGNBQWNLLG1CQUNkSixlQUFlSyxvQkFDZjlCLFVBQVVrQixlQUFldEIsR0FBRyxDQUFDNEIsYUFBYUMsY0FBYzFCO0lBRTlENkIsbUJBQW1CNUIsU0FBUyxHQUFHO0lBRS9CLE9BQU80QjtBQUNUIn0=
|
|
113
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcm9jZXNzL2VxdWF0ZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgcXVlcnlVdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tcXVlcnlcIjtcblxuaW1wb3J0IFppcFBhc3MgZnJvbSBcIi4uL3Bhc3MvemlwXCI7XG5cbmltcG9ydCB7IHN0cmlwQnJhY2tldHNGcm9tVGVybU5vZGUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2JyYWNrZXRzXCI7XG5pbXBvcnQgeyBmaW5kRXF1aXZhbGVuY2VCeVRlcm1Ob2RlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9lcXVpdmFsZW5jZXNcIjtcblxuY29uc3QgeyBub2RlUXVlcnkgfSA9IHF1ZXJ5VXRpbGl0aWVzO1xuXG5jb25zdCB0ZXJtTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3Rlcm1cIik7XG5cbmNsYXNzIEVxdWF0aW9uYWxQYXNzIGV4dGVuZHMgWmlwUGFzcyB7XG4gIHN0YXRpYyBtYXBzID0gW1xuICAgIHtcbiAgICAgIGdlbmVyYWxOb2RlUXVlcnk6IHRlcm1Ob2RlUXVlcnksICAvLy9cbiAgICAgIHNwZWNpZmljTm9kZVF1ZXJ5OiB0ZXJtTm9kZVF1ZXJ5LCAvLy9cbiAgICAgIHJ1bjogKGxlZnRUZXJtTm9kZSwgcmlnaHRUZXJtTm9kZSwgY29udGV4dCkgPT4ge1xuICAgICAgICBsZXQgc3VjY2VzcyA9IGZhbHNlO1xuXG4gICAgICAgIGxlZnRUZXJtTm9kZSA9IHN0cmlwQnJhY2tldHNGcm9tVGVybU5vZGUobGVmdFRlcm1Ob2RlKTsgLy8vXG4gICAgICAgIHJpZ2h0VGVybU5vZGUgPSBzdHJpcEJyYWNrZXRzRnJvbVRlcm1Ob2RlKHJpZ2h0VGVybU5vZGUpOyAvLy9cblxuICAgICAgICBpZiAoIXN1Y2Nlc3MpIHtcbiAgICAgICAgICBjb25zdCBlcXVpdmFsZW5jZXMgPSBjb250ZXh0LmdldEVxdWl2YWxlbmNlcygpLFxuICAgICAgICAgICAgICAgIGxlZnRFcXVpdmFsZW5jZSA9IGZpbmRFcXVpdmFsZW5jZUJ5VGVybU5vZGUoZXF1aXZhbGVuY2VzLCBsZWZ0VGVybU5vZGUpLFxuICAgICAgICAgICAgICAgIHJpZ2h0RXF1aXZhbGVuY2UgPSBmaW5kRXF1aXZhbGVuY2VCeVRlcm1Ob2RlKGVxdWl2YWxlbmNlcywgcmlnaHRUZXJtTm9kZSk7XG5cbiAgICAgICAgICBpZiAoIXN1Y2Nlc3MpIHtcbiAgICAgICAgICAgIGlmICgobGVmdEVxdWl2YWxlbmNlICE9PSBudWxsKSAmJiAocmlnaHRFcXVpdmFsZW5jZSAhPT0gbnVsbCkgJiYgKGxlZnRFcXVpdmFsZW5jZSA9PT0gcmlnaHRFcXVpdmFsZW5jZSkpIHtcbiAgICAgICAgICAgICAgc3VjY2VzcyA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKCFzdWNjZXNzKSB7XG4gICAgICAgICAgICBpZiAobGVmdEVxdWl2YWxlbmNlICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgIHN1Y2Nlc3MgPSBsZWZ0RXF1aXZhbGVuY2Uuc29tZU90aGVyVGVybShsZWZ0VGVybU5vZGUsIChvdGhlclRlcm0pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBsZWZ0VGVybSA9IG90aGVyVGVybSwgLy8vXG4gICAgICAgICAgICAgICAgICAgICAgbGVmdFRlcm1Ob2RlID0gbGVmdFRlcm0uZ2V0Tm9kZSgpLFxuICAgICAgICAgICAgICAgICAgICAgIGRlc2NlbmRlZCA9IGRlc2NlbmQobGVmdFRlcm1Ob2RlLCByaWdodFRlcm1Ob2RlLCBjb250ZXh0KTtcblxuICAgICAgICAgICAgICAgIGlmIChkZXNjZW5kZWQpIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKCFzdWNjZXNzKSB7XG4gICAgICAgICAgICBpZiAocmlnaHRFcXVpdmFsZW5jZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICBzdWNjZXNzID0gcmlnaHRFcXVpdmFsZW5jZS5zb21lT3RoZXJUZXJtKHJpZ2h0VGVybU5vZGUsIChvdGhlclRlcm0pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCByaWdodFRlcm0gPSBvdGhlclRlcm0sIC8vL1xuICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0VGVybU5vZGUgPSByaWdodFRlcm0uZ2V0Tm9kZSgpLFxuICAgICAgICAgICAgICAgICAgICAgIGRlc2NlbmRlZCA9IGRlc2NlbmQobGVmdFRlcm1Ob2RlLCByaWdodFRlcm1Ob2RlLCBjb250ZXh0KTtcblxuICAgICAgICAgICAgICAgIGlmIChkZXNjZW5kZWQpIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFzdWNjZXNzKSB7XG4gICAgICAgICAgY29uc3QgZGVwdGggPSAxLFxuICAgICAgICAgICAgICAgIGxlZnRUZXJtTm9kZU1hdGNoZXNSaWdodFRlcm1Ob2RlID0gbGVmdFRlcm1Ob2RlLm1hdGNoKHJpZ2h0VGVybU5vZGUsIGRlcHRoKTtcblxuICAgICAgICAgIGlmIChsZWZ0VGVybU5vZGVNYXRjaGVzUmlnaHRUZXJtTm9kZSkge1xuICAgICAgICAgICAgY29uc3QgZGVzY2VuZGVkID0gZGVzY2VuZChsZWZ0VGVybU5vZGUsIHJpZ2h0VGVybU5vZGUsIGNvbnRleHQpO1xuXG4gICAgICAgICAgICBpZiAoZGVzY2VuZGVkKSB7XG4gICAgICAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzdWNjZXNzO1xuICAgICAgfVxuICAgIH1cbiAgXTtcbn1cblxuY29uc3QgZXF1YXRpb25hbFBhc3MgPSBuZXcgRXF1YXRpb25hbFBhc3MoKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGVxdWF0ZVRlcm1zKGxlZnRUZXJtLCByaWdodFRlcm0sIGNvbnRleHQpIHtcbiAgbGV0IHRlcm1zRXF1YXRlID0gZmFsc2U7XG5cbiAgY29uc3QgbGVmdFRlcm1TdHJpbmcgPSBsZWZ0VGVybS5nZXRTdHJpbmcoKSxcbiAgICAgICAgcmlnaHRUZXJtU3RyaW5nID0gcmlnaHRUZXJtLmdldFN0cmluZygpO1xuXG4gIGNvbnRleHQudHJhY2UoYEVxdWF0aW5nIHRoZSAnJHtsZWZ0VGVybVN0cmluZ30nIGFuZCAnJHtyaWdodFRlcm1TdHJpbmd9JyB0ZXJtcy4uLmApO1xuXG4gIGNvbnN0IGxlZnRUZXJtTm9kZSA9IGxlZnRUZXJtLmdldE5vZGUoKSxcbiAgICAgICAgcmlnaHRUZXJtTm9kZSA9IHJpZ2h0VGVybS5nZXROb2RlKCksXG4gICAgICAgIGdlbmVyYWxOb2RlID0gbGVmdFRlcm1Ob2RlLCAvLy9cbiAgICAgICAgc3BlY2lmaWNOb2RlID0gcmlnaHRUZXJtTm9kZSwgLy8vXG4gICAgICAgIHN1Y2Nlc3MgPSBlcXVhdGlvbmFsUGFzcy5ydW4oZ2VuZXJhbE5vZGUsIHNwZWNpZmljTm9kZSwgY29udGV4dCk7XG5cbiAgaWYgKHN1Y2Nlc3MpIHtcbiAgICB0ZXJtc0VxdWF0ZSA9IHRydWU7XG4gIH1cblxuICBpZiAodGVybXNFcXVhdGUpIHtcbiAgICBjb250ZXh0LmRlYnVnKGAuLi5lcXVhdGVkIHRoZSAnJHtsZWZ0VGVybVN0cmluZ30nIGFuZCAnJHtyaWdodFRlcm1TdHJpbmd9JyB0ZXJtcy5gKTtcbiAgfVxuXG4gIHJldHVybiB0ZXJtc0VxdWF0ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVxdWF0ZVN0YXRlbWVudHMobGVmdFN0YXRlbWVudCwgcmlnaHRTdGF0ZW1lbnQsIGNvbnRleHQpIHtcbiAgbGV0IHN0YXRlbWVudHNFcXVhdGUgPSBmYWxzZTtcblxuICBjb25zdCBsZWZ0U3RhdGVtZW50U3RyaW5nID0gbGVmdFN0YXRlbWVudC5nZXRTdHJpbmcoKSxcbiAgICAgICAgcmlnaHRTdGF0ZW1lbnRTdHJpbmcgPSByaWdodFN0YXRlbWVudC5nZXRTdHJpbmcoKTtcblxuICBjb250ZXh0LnRyYWNlKGBFcXVhdGluZyB0aGUgJyR7bGVmdFN0YXRlbWVudFN0cmluZ30nIGFuZCAnJHtyaWdodFN0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudHMuLi5gKTtcblxuICBjb25zdCBsZWZ0U3RhdGVtZW50Tm9kZSA9IGxlZnRTdGF0ZW1lbnQuZ2V0Tm9kZSgpLFxuICAgICAgICByaWdodFN0YXRlbWVudE5vZGUgPSByaWdodFN0YXRlbWVudC5nZXROb2RlKCksXG4gICAgICAgIGdlbmVyYWxOb2RlID0gbGVmdFN0YXRlbWVudE5vZGUsIC8vL1xuICAgICAgICBzcGVjaWZpY05vZGUgPSByaWdodFN0YXRlbWVudE5vZGUsIC8vL1xuICAgICAgICBzdWNjZXNzID0gZXF1YXRpb25hbFBhc3MucnVuKGdlbmVyYWxOb2RlLCBzcGVjaWZpY05vZGUsIGNvbnRleHQpO1xuXG4gIGlmIChzdWNjZXNzKSB7XG4gICAgc3RhdGVtZW50c0VxdWF0ZSA9IHRydWU7XG4gIH1cblxuICBpZiAoc3RhdGVtZW50c0VxdWF0ZSkge1xuICAgIGNvbnRleHQuZGVidWcoYC4uLmVxdWF0ZWQgdGhlICcke2xlZnRTdGF0ZW1lbnRTdHJpbmd9JyBhbmQgJyR7cmlnaHRTdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnRzLmApO1xuICB9XG5cbiAgcmV0dXJuIHN0YXRlbWVudHNFcXVhdGU7XG59XG5cbmZ1bmN0aW9uIGRlc2NlbmQobGVmdFRlcm1Ob2RlLCByaWdodFRlcm1Ob2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IGxlZnROb25UZXJtaW5hbE5vZGUgPSBsZWZ0VGVybU5vZGUsIC8vL1xuICAgICAgICByaWdodE5vblRlcm1pbmFsTm9kZSA9IHJpZ2h0VGVybU5vZGUsIC8vL1xuICAgICAgICBsZWZ0Tm9uVGVybWluYWxOb2RlQ2hpbGROb2RlcyA9IGxlZnROb25UZXJtaW5hbE5vZGUuZ2V0Q2hpbGROb2RlcygpLFxuICAgICAgICByaWdodE5vblRlcm1pbmFsTm9kZUNoaWxkTm9kZXMgPSByaWdodE5vblRlcm1pbmFsTm9kZS5nZXRDaGlsZE5vZGVzKCksXG4gICAgICAgIGxlZnRDaGlsZE5vZGVzID0gbGVmdE5vblRlcm1pbmFsTm9kZUNoaWxkTm9kZXMsIC8vL1xuICAgICAgICByaWdodENoaWxkTm9kZXMgPSByaWdodE5vblRlcm1pbmFsTm9kZUNoaWxkTm9kZXMsIC8vL1xuICAgICAgICBkZXNjZW5kZWQgPSBlcXVhdGlvbmFsUGFzcy5kZXNjZW5kKGxlZnRDaGlsZE5vZGVzLCByaWdodENoaWxkTm9kZXMsIGNvbnRleHQpO1xuXG4gIHJldHVybiBkZXNjZW5kZWQ7XG59XG4iXSwibmFtZXMiOlsiZXF1YXRlU3RhdGVtZW50cyIsImVxdWF0ZVRlcm1zIiwibm9kZVF1ZXJ5IiwicXVlcnlVdGlsaXRpZXMiLCJ0ZXJtTm9kZVF1ZXJ5IiwiRXF1YXRpb25hbFBhc3MiLCJaaXBQYXNzIiwibWFwcyIsImdlbmVyYWxOb2RlUXVlcnkiLCJzcGVjaWZpY05vZGVRdWVyeSIsInJ1biIsImxlZnRUZXJtTm9kZSIsInJpZ2h0VGVybU5vZGUiLCJjb250ZXh0Iiwic3VjY2VzcyIsInN0cmlwQnJhY2tldHNGcm9tVGVybU5vZGUiLCJlcXVpdmFsZW5jZXMiLCJnZXRFcXVpdmFsZW5jZXMiLCJsZWZ0RXF1aXZhbGVuY2UiLCJmaW5kRXF1aXZhbGVuY2VCeVRlcm1Ob2RlIiwicmlnaHRFcXVpdmFsZW5jZSIsInNvbWVPdGhlclRlcm0iLCJvdGhlclRlcm0iLCJsZWZ0VGVybSIsImdldE5vZGUiLCJkZXNjZW5kZWQiLCJkZXNjZW5kIiwicmlnaHRUZXJtIiwiZGVwdGgiLCJsZWZ0VGVybU5vZGVNYXRjaGVzUmlnaHRUZXJtTm9kZSIsIm1hdGNoIiwiZXF1YXRpb25hbFBhc3MiLCJ0ZXJtc0VxdWF0ZSIsImxlZnRUZXJtU3RyaW5nIiwiZ2V0U3RyaW5nIiwicmlnaHRUZXJtU3RyaW5nIiwidHJhY2UiLCJnZW5lcmFsTm9kZSIsInNwZWNpZmljTm9kZSIsImRlYnVnIiwibGVmdFN0YXRlbWVudCIsInJpZ2h0U3RhdGVtZW50Iiwic3RhdGVtZW50c0VxdWF0ZSIsImxlZnRTdGF0ZW1lbnRTdHJpbmciLCJyaWdodFN0YXRlbWVudFN0cmluZyIsImxlZnRTdGF0ZW1lbnROb2RlIiwicmlnaHRTdGF0ZW1lbnROb2RlIiwibGVmdE5vblRlcm1pbmFsTm9kZSIsInJpZ2h0Tm9uVGVybWluYWxOb2RlIiwibGVmdE5vblRlcm1pbmFsTm9kZUNoaWxkTm9kZXMiLCJnZXRDaGlsZE5vZGVzIiwicmlnaHROb25UZXJtaW5hbE5vZGVDaGlsZE5vZGVzIiwibGVmdENoaWxkTm9kZXMiLCJyaWdodENoaWxkTm9kZXMiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztRQThHZ0JBO2VBQUFBOztRQXpCQUM7ZUFBQUE7Ozs0QkFuRmU7NERBRVg7MEJBRXNCOzhCQUNBOzs7Ozs7QUFFMUMsTUFBTSxFQUFFQyxTQUFTLEVBQUUsR0FBR0MsMEJBQWM7QUFFcEMsTUFBTUMsZ0JBQWdCRixVQUFVO0FBRWhDLE1BQU1HLHVCQUF1QkMsWUFBTztJQUNsQyxPQUFPQyxPQUFPO1FBQ1o7WUFDRUMsa0JBQWtCSjtZQUNsQkssbUJBQW1CTDtZQUNuQk0sS0FBSyxDQUFDQyxjQUFjQyxlQUFlQztnQkFDakMsSUFBSUMsVUFBVTtnQkFFZEgsZUFBZUksSUFBQUEsbUNBQXlCLEVBQUNKLGVBQWUsR0FBRztnQkFDM0RDLGdCQUFnQkcsSUFBQUEsbUNBQXlCLEVBQUNILGdCQUFnQixHQUFHO2dCQUU3RCxJQUFJLENBQUNFLFNBQVM7b0JBQ1osTUFBTUUsZUFBZUgsUUFBUUksZUFBZSxJQUN0Q0Msa0JBQWtCQyxJQUFBQSx1Q0FBeUIsRUFBQ0gsY0FBY0wsZUFDMURTLG1CQUFtQkQsSUFBQUEsdUNBQXlCLEVBQUNILGNBQWNKO29CQUVqRSxJQUFJLENBQUNFLFNBQVM7d0JBQ1os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
|
|
@@ -26,32 +26,36 @@ const _element = require("../utilities/element");
|
|
|
26
26
|
const _constants = require("../constants");
|
|
27
27
|
const _instance = require("../utilities/instance");
|
|
28
28
|
function stripBracketsFromTerm(term, context) {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
29
|
+
let termNode = term.getNode(), bracketedTermChildNode = bracketedTermChildNodeFromTermNode(termNode);
|
|
30
|
+
while(bracketedTermChildNode !== null){
|
|
31
|
+
termNode = bracketedTermChildNode; ///
|
|
32
|
+
bracketedTermChildNode = bracketedTermChildNodeFromTermNode(termNode);
|
|
33
33
|
}
|
|
34
|
+
term = (0, _element.termFromTermNode)(termNode, context);
|
|
34
35
|
return term;
|
|
35
36
|
}
|
|
36
37
|
function stripBracketsFromTermNode(termNode) {
|
|
37
|
-
|
|
38
|
-
|
|
38
|
+
let bracketedTermChildNode = bracketedTermChildNodeFromTermNode(termNode);
|
|
39
|
+
while(bracketedTermChildNode !== null){
|
|
39
40
|
termNode = bracketedTermChildNode; ///
|
|
41
|
+
bracketedTermChildNode = bracketedTermChildNodeFromTermNode(termNode);
|
|
40
42
|
}
|
|
41
43
|
return termNode;
|
|
42
44
|
}
|
|
43
45
|
function stripBracketsFromStatement(statement, context) {
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
46
|
+
let statementNode = statement.getNode(), bracketedStatementChildNode = bracketedStatementChildNodeFromStatementNode(statementNode);
|
|
47
|
+
while(bracketedStatementChildNode !== null){
|
|
48
|
+
statementNode = bracketedStatementChildNode; ///
|
|
49
|
+
bracketedStatementChildNode = bracketedStatementChildNodeFromStatementNode(statementNode);
|
|
48
50
|
}
|
|
51
|
+
statement = (0, _element.statementFromStatementNode)(statementNode, context);
|
|
49
52
|
return statement;
|
|
50
53
|
}
|
|
51
54
|
function stripBracketsFromStatementNode(statementNode) {
|
|
52
|
-
|
|
53
|
-
|
|
55
|
+
let bracketedStatementChildNode = bracketedStatementChildNodeFromStatementNode(statementNode);
|
|
56
|
+
while(bracketedStatementChildNode !== null){
|
|
54
57
|
statementNode = bracketedStatementChildNode; ///
|
|
58
|
+
bracketedStatementChildNode = bracketedStatementChildNodeFromStatementNode(statementNode);
|
|
55
59
|
}
|
|
56
60
|
return statementNode;
|
|
57
61
|
}
|
|
@@ -74,4 +78,4 @@ function bracketedStatementChildNodeFromStatementNode(statementNode) {
|
|
|
74
78
|
return bracketedStatementChildNode;
|
|
75
79
|
}
|
|
76
80
|
|
|
77
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
81
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvYnJhY2tldHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IHRlcm1Gcm9tVGVybU5vZGUsIHN0YXRlbWVudEZyb21TdGF0ZW1lbnROb2RlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9lbGVtZW50XCI7XG5pbXBvcnQgeyBCUkFDS0VURURfVEVSTV9ERVBUSCwgQlJBQ0tFVEVEX1NUQVRFTUVOVF9ERVBUSCB9IGZyb20gXCIuLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IGJyYWNrZXRlZENvbnN0cnVjdG9yRnJvbU5vdGhpbmcsIGJyYWNrZXRlZENvbWJpbmF0b3JGcm9tTm90aGluZyB9IGZyb20gXCIuLi91dGlsaXRpZXMvaW5zdGFuY2VcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHN0cmlwQnJhY2tldHNGcm9tVGVybSh0ZXJtLCBjb250ZXh0KSB7XG4gIGxldCB0ZXJtTm9kZSA9IHRlcm0uZ2V0Tm9kZSgpLFxuICAgICAgYnJhY2tldGVkVGVybUNoaWxkTm9kZSA9IGJyYWNrZXRlZFRlcm1DaGlsZE5vZGVGcm9tVGVybU5vZGUodGVybU5vZGUpO1xuXG4gIHdoaWxlIChicmFja2V0ZWRUZXJtQ2hpbGROb2RlICE9PSBudWxsKSB7XG4gICAgdGVybU5vZGUgPSBicmFja2V0ZWRUZXJtQ2hpbGROb2RlOyAgLy8vXG5cbiAgICBicmFja2V0ZWRUZXJtQ2hpbGROb2RlID0gYnJhY2tldGVkVGVybUNoaWxkTm9kZUZyb21UZXJtTm9kZSh0ZXJtTm9kZSk7XG4gIH1cblxuICB0ZXJtID0gdGVybUZyb21UZXJtTm9kZSh0ZXJtTm9kZSwgY29udGV4dCk7XG5cbiAgcmV0dXJuIHRlcm07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdHJpcEJyYWNrZXRzRnJvbVRlcm1Ob2RlKHRlcm1Ob2RlKSB7XG4gIGxldCBicmFja2V0ZWRUZXJtQ2hpbGROb2RlID0gYnJhY2tldGVkVGVybUNoaWxkTm9kZUZyb21UZXJtTm9kZSh0ZXJtTm9kZSk7XG5cbiAgd2hpbGUgKGJyYWNrZXRlZFRlcm1DaGlsZE5vZGUgIT09IG51bGwpIHtcbiAgICB0ZXJtTm9kZSA9IGJyYWNrZXRlZFRlcm1DaGlsZE5vZGU7ICAvLy9cblxuICAgIGJyYWNrZXRlZFRlcm1DaGlsZE5vZGUgPSBicmFja2V0ZWRUZXJtQ2hpbGROb2RlRnJvbVRlcm1Ob2RlKHRlcm1Ob2RlKTtcbiAgfVxuXG4gIHJldHVybiB0ZXJtTm9kZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0cmlwQnJhY2tldHNGcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCkge1xuICBsZXQgc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudC5nZXROb2RlKCksXG4gICAgYnJhY2tldGVkU3RhdGVtZW50Q2hpbGROb2RlID0gYnJhY2tldGVkU3RhdGVtZW50Q2hpbGROb2RlRnJvbVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSk7XG5cbiAgd2hpbGUgKGJyYWNrZXRlZFN0YXRlbWVudENoaWxkTm9kZSAhPT0gbnVsbCkge1xuICAgIHN0YXRlbWVudE5vZGUgPSBicmFja2V0ZWRTdGF0ZW1lbnRDaGlsZE5vZGU7ICAvLy9cblxuICAgIGJyYWNrZXRlZFN0YXRlbWVudENoaWxkTm9kZSA9IGJyYWNrZXRlZFN0YXRlbWVudENoaWxkTm9kZUZyb21TdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUpO1xuICB9XG5cbiAgc3RhdGVtZW50ID0gc3RhdGVtZW50RnJvbVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSwgY29udGV4dCk7XG5cbiAgcmV0dXJuIHN0YXRlbWVudDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0cmlwQnJhY2tldHNGcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlKSB7XG4gIGxldCBicmFja2V0ZWRTdGF0ZW1lbnRDaGlsZE5vZGUgPSBicmFja2V0ZWRTdGF0ZW1lbnRDaGlsZE5vZGVGcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlKTtcblxuICB3aGlsZSAoYnJhY2tldGVkU3RhdGVtZW50Q2hpbGROb2RlICE9PSBudWxsKSB7XG4gICAgc3RhdGVtZW50Tm9kZSA9IGJyYWNrZXRlZFN0YXRlbWVudENoaWxkTm9kZTsgIC8vL1xuXG4gICAgYnJhY2tldGVkU3RhdGVtZW50Q2hpbGROb2RlID0gYnJhY2tldGVkU3RhdGVtZW50Q2hpbGROb2RlRnJvbVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSk7XG4gIH1cblxuICByZXR1cm4gc3RhdGVtZW50Tm9kZTtcbn1cblxuZnVuY3Rpb24gYnJhY2tldGVkVGVybUNoaWxkTm9kZUZyb21UZXJtTm9kZSh0ZXJtTm9kZSkge1xuICBsZXQgYnJhY2tldGVkVGVybUNoaWxkTm9kZSA9IG51bGw7XG5cbiAgY29uc3QgZGVwdGggPSBCUkFDS0VURURfVEVSTV9ERVBUSCxcbiAgICAgICAgYnJhY2tldGVkQ29uc3RydWN0b3IgPSBicmFja2V0ZWRDb25zdHJ1Y3RvckZyb21Ob3RoaW5nKCksXG4gICAgICAgIGJyYWNrZXRlZENvbnN0cnVjdG9yVGVybSA9IGJyYWNrZXRlZENvbnN0cnVjdG9yLmdldFRlcm0oKSxcbiAgICAgICAgYnJhY2tldGVkQ29uc3RydWN0b3JUZXJtTm9kZSA9IGJyYWNrZXRlZENvbnN0cnVjdG9yVGVybS5nZXROb2RlKCksXG4gICAgICAgIHRlcm1Ob2RlTWF0Y2hCcmFja2V0ZWRDb25zdHJ1Y3Rvck5vZGUgPSB0ZXJtTm9kZS5tYXRjaChicmFja2V0ZWRDb25zdHJ1Y3RvclRlcm1Ob2RlLCBkZXB0aCk7XG5cbiAgaWYgKHRlcm1Ob2RlTWF0Y2hCcmFja2V0ZWRDb25zdHJ1Y3Rvck5vZGUpIHtcbiAgICBjb25zdCBzaW5ndWxhclRlcm1Ob2RlID0gdGVybU5vZGUuZ2V0U2luZ3VsYXJUZXJtTm9kZSgpO1xuXG4gICAgYnJhY2tldGVkVGVybUNoaWxkTm9kZSA9IHNpbmd1bGFyVGVybU5vZGU7ICAvLy9cbiAgfVxuXG4gIHJldHVybiBicmFja2V0ZWRUZXJtQ2hpbGROb2RlO1xufVxuXG5mdW5jdGlvbiBicmFja2V0ZWRTdGF0ZW1lbnRDaGlsZE5vZGVGcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlKSB7XG4gIGxldCBicmFja2V0ZWRTdGF0ZW1lbnRDaGlsZE5vZGUgPSBudWxsO1xuXG4gIGNvbnN0IGRlcHRoID0gQlJBQ0tFVEVEX1NUQVRFTUVOVF9ERVBUSCxcbiAgICAgICAgYnJhY2tldGVkQ29tYmluYXRvciA9IGJyYWNrZXRlZENvbWJpbmF0b3JGcm9tTm90aGluZygpLFxuICAgICAgICBicmFja2V0ZWRDb21iaW5hdG9yU3RhdGVtZW50ID0gYnJhY2tldGVkQ29tYmluYXRvci5nZXRTdGF0ZW1lbnQoKSxcbiAgICAgICAgYnJhY2tldGVkQ29tYmluYXRvclN0YXRlbWVudG5Ob2RlID0gYnJhY2tldGVkQ29tYmluYXRvclN0YXRlbWVudC5nZXROb2RlKCksXG4gICAgICAgIHN0YXRlbWVudE5vZGVNYXRjaEJyYWNrZXRlZENvbWJpbmF0b3JTdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50Tm9kZS5tYXRjaChicmFja2V0ZWRDb21iaW5hdG9yU3RhdGVtZW50bk5vZGUsIGRlcHRoKTtcblxuICBpZiAoc3RhdGVtZW50Tm9kZU1hdGNoQnJhY2tldGVkQ29tYmluYXRvclN0YXRlbWVudE5vZGUpIHtcbiAgICBjb25zdCBzaW5ndWxhclN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnROb2RlLmdldFNpbmd1bGFyU3RhdGVtZW50Tm9kZSgpO1xuXG4gICAgYnJhY2tldGVkU3RhdGVtZW50Q2hpbGROb2RlID0gc2luZ3VsYXJTdGF0ZW1lbnROb2RlOyAgLy8vXG4gIH1cblxuICByZXR1cm4gYnJhY2tldGVkU3RhdGVtZW50Q2hpbGROb2RlO1xufVxuIl0sIm5hbWVzIjpbInN0cmlwQnJhY2tldHNGcm9tU3RhdGVtZW50Iiwic3RyaXBCcmFja2V0c0Zyb21TdGF0ZW1lbnROb2RlIiwic3RyaXBCcmFja2V0c0Zyb21UZXJtIiwic3RyaXBCcmFja2V0c0Zyb21UZXJtTm9kZSIsInRlcm0iLCJjb250ZXh0IiwidGVybU5vZGUiLCJnZXROb2RlIiwiYnJhY2tldGVkVGVybUNoaWxkTm9kZSIsImJyYWNrZXRlZFRlcm1DaGlsZE5vZGVGcm9tVGVybU5vZGUiLCJ0ZXJtRnJvbVRlcm1Ob2RlIiwic3RhdGVtZW50Iiwic3RhdGVtZW50Tm9kZSIsImJyYWNrZXRlZFN0YXRlbWVudENoaWxkTm9kZSIsImJyYWNrZXRlZFN0YXRlbWVudENoaWxkTm9kZUZyb21TdGF0ZW1lbnROb2RlIiwic3RhdGVtZW50RnJvbVN0YXRlbWVudE5vZGUiLCJkZXB0aCIsIkJSQUNLRVRFRF9URVJNX0RFUFRIIiwiYnJhY2tldGVkQ29uc3RydWN0b3IiLCJicmFja2V0ZWRDb25zdHJ1Y3RvckZyb21Ob3RoaW5nIiwiYnJhY2tldGVkQ29uc3RydWN0b3JUZXJtIiwiZ2V0VGVybSIsImJyYWNrZXRlZENvbnN0cnVjdG9yVGVybU5vZGUiLCJ0ZXJtTm9kZU1hdGNoQnJhY2tldGVkQ29uc3RydWN0b3JOb2RlIiwibWF0Y2giLCJzaW5ndWxhclRlcm1Ob2RlIiwiZ2V0U2luZ3VsYXJUZXJtTm9kZSIsIkJSQUNLRVRFRF9TVEFURU1FTlRfREVQVEgiLCJicmFja2V0ZWRDb21iaW5hdG9yIiwiYnJhY2tldGVkQ29tYmluYXRvckZyb21Ob3RoaW5nIiwiYnJhY2tldGVkQ29tYmluYXRvclN0YXRlbWVudCIsImdldFN0YXRlbWVudCIsImJyYWNrZXRlZENvbWJpbmF0b3JTdGF0ZW1lbnRuTm9kZSIsInN0YXRlbWVudE5vZGVNYXRjaEJyYWNrZXRlZENvbWJpbmF0b3JTdGF0ZW1lbnROb2RlIiwic2luZ3VsYXJTdGF0ZW1lbnROb2RlIiwiZ2V0U2luZ3VsYXJTdGF0ZW1lbnROb2RlIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7UUFpQ2dCQTtlQUFBQTs7UUFlQUM7ZUFBQUE7O1FBMUNBQztlQUFBQTs7UUFlQUM7ZUFBQUE7Ozt5QkFuQjZDOzJCQUNHOzBCQUNnQjtBQUV6RSxTQUFTRCxzQkFBc0JFLElBQUksRUFBRUMsT0FBTztJQUNqRCxJQUFJQyxXQUFXRixLQUFLRyxPQUFPLElBQ3ZCQyx5QkFBeUJDLG1DQUFtQ0g7SUFFaEUsTUFBT0UsMkJBQTJCLEtBQU07UUFDdENGLFdBQVdFLHdCQUF5QixHQUFHO1FBRXZDQSx5QkFBeUJDLG1DQUFtQ0g7SUFDOUQ7SUFFQUYsT0FBT00sSUFBQUEseUJBQWdCLEVBQUNKLFVBQVVEO0lBRWxDLE9BQU9EO0FBQ1Q7QUFFTyxTQUFTRCwwQkFBMEJHLFFBQVE7SUFDaEQsSUFBSUUseUJBQXlCQyxtQ0FBbUNIO0lBRWhFLE1BQU9FLDJCQUEyQixLQUFNO1FBQ3RDRixXQUFXRSx3QkFBeUIsR0FBRztRQUV2Q0EseUJBQXlCQyxtQ0FBbUNIO0lBQzlEO0lBRUEsT0FBT0E7QUFDVDtBQUVPLFNBQVNOLDJCQUEyQlcsU0FBUyxFQUFFTixPQUFPO0lBQzNELElBQUlPLGdCQUFnQkQsVUFBVUosT0FBTyxJQUNuQ00sOEJBQThCQyw2Q0FBNkNGO0lBRTdFLE1BQU9DLGdDQUFnQyxLQUFNO1FBQzNDRCxnQkFBZ0JDLDZCQUE4QixHQUFHO1FBRWpEQSw4QkFBOEJDLDZDQUE2Q0Y7SUFDN0U7SUFFQUQsWUFBWUksSUFBQUEsbUNBQTBCLEVBQUNILGVBQWVQO0lBRXRELE9BQU9NO0FBQ1Q7QUFFTyxTQUFTViwrQkFBK0JXLGFBQWE7SUFDMUQsSUFBSUMsOEJBQThCQyw2Q0FBNkNGO0lBRS9FLE1BQU9DLGdDQUFnQyxLQUFNO1FBQzNDRCxnQkFBZ0JDLDZCQUE4QixHQUFHO1FBRWpEQSw4QkFBOEJDLDZDQUE2Q0Y7SUFDN0U7SUFFQSxPQUFPQTtBQUNUO0FBRUEsU0FBU0gsbUNBQW1DSCxRQUFRO0lBQ2xELElBQUlFLHlCQUF5QjtJQUU3QixNQUFNUSxRQUFRQywrQkFBb0IsRUFDNUJDLHVCQUF1QkMsSUFBQUEseUNBQStCLEtBQ3REQywyQkFBMkJGLHFCQUFxQkcsT0FBTyxJQUN2REMsK0JBQStCRix5QkFBeUJiLE9BQU8sSUFDL0RnQix3Q0FBd0NqQixTQUFTa0IsS0FBSyxDQUFDRiw4QkFBOEJOO0lBRTNGLElBQUlPLHVDQUF1QztRQUN6QyxNQUFNRSxtQkFBbUJuQixTQUFTb0IsbUJBQW1CO1FBRXJEbEIseUJBQXlCaUIsa0JBQW1CLEdBQUc7SUFDakQ7SUFFQSxPQUFPakI7QUFDVDtBQUVBLFNBQVNNLDZDQUE2Q0YsYUFBYTtJQUNqRSxJQUFJQyw4QkFBOEI7SUFFbEMsTUFBTUcsUUFBUVcsb0NBQXlCLEVBQ2pDQyxzQkFBc0JDLElBQUFBLHdDQUE4QixLQUNwREMsK0JBQStCRixvQkFBb0JHLFlBQVksSUFDL0RDLG9DQUFvQ0YsNkJBQTZCdkIsT0FBTyxJQUN4RTBCLHFEQUFxRHJCLGNBQWNZLEtBQUssQ0FBQ1EsbUNBQW1DaEI7SUFFbEgsSUFBSWlCLG9EQUFvRDtRQUN0RCxNQUFNQyx3QkFBd0J0QixjQUFjdUIsd0JBQXdCO1FBRXBFdEIsOEJBQThCcUIsdUJBQXdCLEdBQUc7SUFDM0Q7SUFFQSxPQUFPckI7QUFDVCJ9
|
|
@@ -12,8 +12,8 @@ _export(exports, {
|
|
|
12
12
|
get equivalencesFromEquality () {
|
|
13
13
|
return equivalencesFromEquality;
|
|
14
14
|
},
|
|
15
|
-
get
|
|
16
|
-
return
|
|
15
|
+
get findEquivalenceByTermNode () {
|
|
16
|
+
return findEquivalenceByTermNode;
|
|
17
17
|
},
|
|
18
18
|
get mergeEquivalences () {
|
|
19
19
|
return mergeEquivalences;
|
|
@@ -46,10 +46,10 @@ function equivalencesFromEquality(equality, context) {
|
|
|
46
46
|
];
|
|
47
47
|
return equivalences;
|
|
48
48
|
}
|
|
49
|
-
function
|
|
49
|
+
function findEquivalenceByTermNode(equivalences, termNode) {
|
|
50
50
|
const equivalence = equivalences.find((equivalence)=>{
|
|
51
|
-
const
|
|
52
|
-
if (
|
|
51
|
+
const termEquates = equivalence.matchTermNode(termNode);
|
|
52
|
+
if (termEquates) {
|
|
53
53
|
return true;
|
|
54
54
|
}
|
|
55
55
|
}) || null;
|
|
@@ -131,4 +131,4 @@ function groundedTermsFromGroundedEquivalencesAndDefinedVariables(groundedEquiva
|
|
|
131
131
|
});
|
|
132
132
|
}
|
|
133
133
|
|
|
134
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvZXF1aXZhbGVuY2VzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcblxuaW1wb3J0IGVsZW1lbnRzIGZyb20gXCIuLi9lbGVtZW50c1wiO1xuXG5pbXBvcnQgeyB2YXJpYWJsZXNGcm9tVGVybSB9IGZyb20gXCIuLi91dGlsaXRpZXMvZXF1aXZhbGVuY2VcIjtcblxuY29uc3QgeyBwdXNoLCBzZXBhcmF0ZSB9ID0gYXJyYXlVdGlsaXRpZXM7XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZUVxdWl2YWxlbmNlcyhlcXVpdmFsZW5jZXNBLCBlcXVpdmFsZW5jZXNCLCBjb250ZXh0KSB7XG4gIGVxdWl2YWxlbmNlc0EgPSBbICAvLy9cbiAgICAuLi5lcXVpdmFsZW5jZXNBXG4gIF07XG5cbiAgZXF1aXZhbGVuY2VzQi5mb3JFYWNoKChlcXVpdmFsZW5jZUIpID0+IHtcbiAgICBlcXVpdmFsZW5jZXNBID0gbWVyZ2VFcXVpdmFsZW5jZShlcXVpdmFsZW5jZXNBLCBlcXVpdmFsZW5jZUIsIGNvbnRleHQpO1xuICB9KTtcblxuICByZXR1cm4gZXF1aXZhbGVuY2VzQTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVxdWl2YWxlbmNlc0Zyb21FcXVhbGl0eShlcXVhbGl0eSwgY29udGV4dCkge1xuICBjb25zdCB7IEVxdWl2YWxlbmNlIH0gPSBlbGVtZW50cyxcbiAgICAgICAgZWF1bGl2YWxlbmNlID0gRXF1aXZhbGVuY2UuZnJvbUVxdWFsaXR5KGVxdWFsaXR5LCBjb250ZXh0KSxcbiAgICAgICAgZXF1aXZhbGVuY2VzID0gW1xuICAgICAgICAgIGVhdWxpdmFsZW5jZVxuICAgICAgICBdO1xuXG4gIHJldHVybiBlcXVpdmFsZW5jZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaW5kRXF1aXZhbGVuY2VCeVRlcm1Ob2RlcyhlcXVpdmFsZW5jZXMsIHRlcm1Ob2Rlcykge1xuICBjb25zdCBlcXVpdmFsZW5jZSA9IGVxdWl2YWxlbmNlcy5maW5kKChlcXVpdmFsZW5jZSkgPT4ge1xuICAgIGNvbnN0IHRlcm1Ob2RlTWF0Y2hlcyA9IGVxdWl2YWxlbmNlLm1hdGNoVGVybU5vZGVzKHRlcm1Ob2Rlcyk7XG5cbiAgICBpZiAodGVybU5vZGVNYXRjaGVzKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0pIHx8IG51bGw7XG5cbiAgcmV0dXJuIGVxdWl2YWxlbmNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2VwYXJhdGVHcm91bmRlZFRlcm1zQW5kRGVmaW5lZFZhcmlhYmxlcyhlcXVpdmFsZW5jZXMsIGdyb3VuZGVkVGVybXMsIGRlZmluZWRWYXJpYWJsZXMsIGNvbnRleHQpIHtcbiAgbGV0IGdyb3VuZGVkRXF1aXZhbGVuY2VzLFxuICAgICAgcmVtYWluaW5nRXF1aXZhbGVuY2VzLFxuICAgICAgaW5pdGlhbGx5R3JvdW5kZWRFcXVpdmFsZW5jZXMsXG4gICAgICBpbXBsaWNpdGx5R3JvdW5kZWRFcXVpdmFsZW5jZXM7XG5cbiAgcmVtYWluaW5nRXF1aXZhbGVuY2VzID0gW107XG5cbiAgaW5pdGlhbGx5R3JvdW5kZWRFcXVpdmFsZW5jZXMgPSBbXTtcblxuICBzZXBhcmF0ZUluaXRpYWxseUdyb3VuZGVkRXF1aXZhbGVuY2VzKGVxdWl2YWxlbmNlcywgcmVtYWluaW5nRXF1aXZhbGVuY2VzLCBpbml0aWFsbHlHcm91bmRlZEVxdWl2YWxlbmNlcywgY29udGV4dCk7XG5cbiAgY29uc3QgaW5pdGlhbGx5R3JvdW5kZWRFcXVpdmFsZW5jZXNMZW5ndGggPSBpbml0aWFsbHlHcm91bmRlZEVxdWl2YWxlbmNlcy5sZW5ndGg7XG5cbiAgaWYgKGluaXRpYWxseUdyb3VuZGVkRXF1aXZhbGVuY2VzTGVuZ3RoID4gMCkge1xuICAgIGdyb3VuZGVkRXF1aXZhbGVuY2VzID0gaW5pdGlhbGx5R3JvdW5kZWRFcXVpdmFsZW5jZXM7IC8vL1xuXG4gICAgbGV0IGltcGxpY2l0bHlHcm91bmRlZEVxdWl2YWxlbmNlc0xlbmd0aCA9IDE7XG5cbiAgICB3aGlsZSAoaW1wbGljaXRseUdyb3VuZGVkRXF1aXZhbGVuY2VzTGVuZ3RoID4gMCkge1xuICAgICAgbGV0IGRlZmluZWRWYXJpYWJsZXNMZW5ndGggPSAwLFxuICAgICAgICAgICAgcHJldmlvdXNEZWZpbmVkVmFyaWFibGVzTGVuZ3RoID0gLTE7XG5cbiAgICAgIHdoaWxlIChkZWZpbmVkVmFyaWFibGVzTGVuZ3RoID4gcHJldmlvdXNEZWZpbmVkVmFyaWFibGVzTGVuZ3RoKSB7XG4gICAgICAgIHByZXZpb3VzRGVmaW5lZFZhcmlhYmxlc0xlbmd0aCA9IGRlZmluZWRWYXJpYWJsZXNMZW5ndGg7ICAvLy9cblxuICAgICAgICBncm91bmRlZFRlcm1zRnJvbUdyb3VuZGVkRXF1aXZhbGVuY2VzQW5kRGVmaW5lZFZhcmlhYmxlcyhncm91bmRlZEVxdWl2YWxlbmNlcywgZGVmaW5lZFZhcmlhYmxlcywgZ3JvdW5kZWRUZXJtcywgY29udGV4dCk7XG5cbiAgICAgICAgZGVmaW5lZFZhcmlhYmxlc0Zyb21Hcm91bmRlZFRlcm1zKGdyb3VuZGVkVGVybXMsIGRlZmluZWRWYXJpYWJsZXMsIGNvbnRleHQpO1xuXG4gICAgICAgIGRlZmluZWRWYXJpYWJsZXNMZW5ndGggPSBkZWZpbmVkVmFyaWFibGVzLmxlbmd0aDtcbiAgICAgIH1cblxuICAgICAgZXF1aXZhbGVuY2VzID0gcmVtYWluaW5nRXF1aXZhbGVuY2VzOyAvLy9cblxuICAgICAgcmVtYWluaW5nRXF1aXZhbGVuY2VzID0gW107XG5cbiAgICAgIGltcGxpY2l0bHlHcm91bmRlZEVxdWl2YWxlbmNlcyA9IFtdO1xuXG4gICAgICBzZXBhcmF0ZUltcGxpY2l0bHlHcm91bmRlZEVxdWl2YWxlbmNlcyhlcXVpdmFsZW5jZXMsIHJlbWFpbmluZ0VxdWl2YWxlbmNlcywgaW1wbGljaXRseUdyb3VuZGVkRXF1aXZhbGVuY2VzLCBkZWZpbmVkVmFyaWFibGVzLCBjb250ZXh0KTtcblxuICAgICAgcHVzaChncm91bmRlZEVxdWl2YWxlbmNlcywgaW1wbGljaXRseUdyb3VuZGVkRXF1aXZhbGVuY2VzKTtcblxuICAgICAgaW1wbGljaXRseUdyb3VuZGVkRXF1aXZhbGVuY2VzTGVuZ3RoID0gaW1wbGljaXRseUdyb3VuZGVkRXF1aXZhbGVuY2VzLmxlbmd0aDsgIC8vL1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBtZXJnZUVxdWl2YWxlbmNlKGVxdWl2YWxlbmNlc0EsIGVxdWl2YWxlbmNlQiwgY29udGV4dCkge1xuICBjb25zdCBtZXJnZWRFcXVpdmFsZW5jZXMgPSBbXTtcblxuICBlcXVpdmFsZW5jZXNBLmZvckVhY2goKGVxdWl2YWxlbmNlQSkgPT4ge1xuICAgIGNvbnN0IGVxdWl2YWxlbmNlQkRpc2pvaW50RnJvbUVxdWl2YWxlbmNlQSA9IGVxdWl2YWxlbmNlQi5pc0Rpc2pvaW50RnJvbShlcXVpdmFsZW5jZUEpO1xuXG4gICAgaWYgKGVxdWl2YWxlbmNlQkRpc2pvaW50RnJvbUVxdWl2YWxlbmNlQSkge1xuICAgICAgY29uc3QgbWVyZ2VkRXF1aXZhbGVuY2UgPSBlcXVpdmFsZW5jZUE7ICAvLy9cblxuICAgICAgbWVyZ2VkRXF1aXZhbGVuY2VzLnB1c2gobWVyZ2VkRXF1aXZhbGVuY2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICBlcXVpdmFsZW5jZUIgPSBlcXVpdmFsZW5jZUIubWVyZ2VkV2l0aChlcXVpdmFsZW5jZUEsIGNvbnRleHQpO1xuICAgIH1cbiAgfSk7XG5cbiAgY29uc3QgbWVyZ2VkRXF1aXZhbGVuY2UgPSBlcXVpdmFsZW5jZUI7ICAvLy9cblxuICBtZXJnZWRFcXVpdmFsZW5jZXMucHVzaChtZXJnZWRFcXVpdmFsZW5jZSk7XG5cbiAgZXF1aXZhbGVuY2VzQSA9IG1lcmdlZEVxdWl2YWxlbmNlczsgIC8vL1xuXG4gIHJldHVybiBlcXVpdmFsZW5jZXNBO1xufVxuXG5mdW5jdGlvbiBkZWZpbmVkVmFyaWFibGVzRnJvbUdyb3VuZGVkVGVybXMoZ3JvdW5kZWRUZXJtcywgZGVmaW5lZFZhcmlhYmxlcywgY29udGV4dCkge1xuICBncm91bmRlZFRlcm1zLmZvckVhY2goKGdyb3VuZGVkVGVybSkgPT4ge1xuICAgIGNvbnN0IHRlcm0gPSBncm91bmRlZFRlcm0sICAvLy9cbiAgICAgICAgICB2YXJpYWJsZXMgPSB2YXJpYWJsZXNGcm9tVGVybSh0ZXJtLCBjb250ZXh0KTtcblxuICAgIHZhcmlhYmxlcy5mb3JFYWNoKCh2YXJpYWJsZSkgPT4ge1xuICAgICAgY29uc3QgZGVmaW5lZFZhcmlhYmxlc0luY2x1ZGVzVGVybVZhcmlhYmxlID0gZGVmaW5lZFZhcmlhYmxlcy5pbmNsdWRlcyh2YXJpYWJsZSk7XG5cbiAgICAgIGlmICghZGVmaW5lZFZhcmlhYmxlc0luY2x1ZGVzVGVybVZhcmlhYmxlKSB7XG4gICAgICAgIGNvbnN0IGRlZmluZWRWYXJpYWJsZSA9IHZhcmlhYmxlOyAgLy8vXG5cbiAgICAgICAgZGVmaW5lZFZhcmlhYmxlcy5wdXNoKGRlZmluZWRWYXJpYWJsZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBzZXBhcmF0ZUluaXRpYWxseUdyb3VuZGVkRXF1aXZhbGVuY2VzKGVxdWl2YWxlbmNlcywgcmVtYWluaW5nRXF1aXZhbGVuY2VzLCBpbml0aWFsbHlHcm91bmRlZEVxdWl2YWxlbmNlcywgY29udGV4dCkge1xuICBzZXBhcmF0ZShlcXVpdmFsZW5jZXMsIHJlbWFpbmluZ0VxdWl2YWxlbmNlcywgaW5pdGlhbGx5R3JvdW5kZWRFcXVpdmFsZW5jZXMsIChlcXVpdmFsZW5jZSkgPT4ge1xuICAgIGNvbnN0IGVxdWl2YWxlbmNlSW5pdGlhbGx5R3JvdW5kZWQgPSBlcXVpdmFsZW5jZS5pc0luaXRpYWxseUdyb3VuZGVkKGNvbnRleHQpO1xuXG4gICAgaWYgKCFlcXVpdmFsZW5jZUluaXRpYWxseUdyb3VuZGVkKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBzZXBhcmF0ZUltcGxpY2l0bHlHcm91bmRlZEVxdWl2YWxlbmNlcyhlcXVpdmFsZW5jZXMsIHJlbWFpbmluZ0VxdWl2YWxlbmNlcywgaW1wbGljaXRseUdyb3VuZGVkRXF1aXZhbGVuY2VzLCBkZWZpbmVkVmFyaWFibGVzLCBjb250ZXh0KSB7XG4gIHNlcGFyYXRlKGVxdWl2YWxlbmNlcywgcmVtYWluaW5nRXF1aXZhbGVuY2VzLCBpbXBsaWNpdGx5R3JvdW5kZWRFcXVpdmFsZW5jZXMsIChlcXVpdmFsZW5jZSkgPT4ge1xuICAgIGNvbnN0IGVxdWl2YWxlbmNlSW1wbGljaXRseUdyb3VuZGVkID0gZXF1aXZhbGVuY2UuaXNJbXBsaWNpdGx5R3JvdW5kZWQoZGVmaW5lZFZhcmlhYmxlcywgY29udGV4dCk7XG5cbiAgICBpZiAoIWVxdWl2YWxlbmNlSW1wbGljaXRseUdyb3VuZGVkKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBncm91bmRlZFRlcm1zRnJvbUdyb3VuZGVkRXF1aXZhbGVuY2VzQW5kRGVmaW5lZFZhcmlhYmxlcyhncm91bmRlZEVxdWl2YWxlbmNlcywgZGVmaW5lZFZhcmlhYmxlcywgZ3JvdW5kZWRUZXJtcywgY29udGV4dCkge1xuICBncm91bmRlZEVxdWl2YWxlbmNlcy5mb3JFYWNoKChncm91bmRlZEVxdWl2YWxlbmNlKSA9PiB7XG4gICAgZ3JvdW5kZWRFcXVpdmFsZW5jZS5nZXRHcm91bmRlZFRlcm1zKGRlZmluZWRWYXJpYWJsZXMsIGdyb3VuZGVkVGVybXMsIGNvbnRleHQpO1xuICB9KTtcbn1cbiJdLCJuYW1lcyI6WyJlcXVpdmFsZW5jZXNGcm9tRXF1YWxpdHkiLCJmaW5kRXF1aXZhbGVuY2VCeVRlcm1Ob2RlcyIsIm1lcmdlRXF1aXZhbGVuY2VzIiwic2VwYXJhdGVHcm91bmRlZFRlcm1zQW5kRGVmaW5lZFZhcmlhYmxlcyIsInB1c2giLCJzZXBhcmF0ZSIsImFycmF5VXRpbGl0aWVzIiwiZXF1aXZhbGVuY2VzQSIsImVxdWl2YWxlbmNlc0IiLCJjb250ZXh0IiwiZm9yRWFjaCIsImVxdWl2YWxlbmNlQiIsIm1lcmdlRXF1aXZhbGVuY2UiLCJlcXVhbGl0eSIsIkVxdWl2YWxlbmNlIiwiZWxlbWVudHMiLCJlYXVsaXZhbGVuY2UiLCJmcm9tRXF1YWxpdHkiLCJlcXVpdmFsZW5jZXMiLCJ0ZXJtTm9kZXMiLCJlcXVpdmFsZW5jZSIsImZpbmQiLCJ0ZXJtTm9kZU1hdGNoZXMiLCJtYXRjaFRlcm1Ob2RlcyIsImdyb3VuZGVkVGVybXMiLCJkZWZpbmVkVmFyaWFibGVzIiwiZ3JvdW5kZWRFcXVpdmFsZW5jZXMiLCJyZW1haW5pbmdFcXVpdmFsZW5jZXMiLCJpbml0aWFsbHlHcm91bmRlZEVxdWl2YWxlbmNlcyIsImltcGxpY2l0bHlHcm91bmRlZEVxdWl2YWxlbmNlcyIsInNlcGFyYXRlSW5pdGlhbGx5R3JvdW5kZWRFcXVpdmFsZW5jZXMiLCJpbml0aWFsbHlHcm91bmRlZEVxdWl2YWxlbmNlc0xlbmd0aCIsImxlbmd0aCIsImltcGxpY2l0bHlHcm91bmRlZEVxdWl2YWxlbmNlc0xlbmd0aCIsImRlZmluZWRWYXJpYWJsZXNMZW5ndGgiLCJwcmV2aW91c0RlZmluZWRWYXJpYWJsZXNMZW5ndGgiLCJncm91bmRlZFRlcm1zRnJvbUdyb3VuZGVkRXF1aXZhbGVuY2VzQW5kRGVmaW5lZFZhcmlhYmxlcyIsImRlZmluZWRWYXJpYWJsZXNGcm9tR3JvdW5kZWRUZXJtcyIsInNlcGFyYXRlSW1wbGljaXRseUdyb3VuZGVkRXF1aXZhbGVuY2VzIiwibWVyZ2VkRXF1aXZhbGVuY2VzIiwiZXF1aXZhbGVuY2VBIiwiZXF1aXZhbGVuY2VCRGlzam9pbnRGcm9tRXF1aXZhbGVuY2VBIiwiaXNEaXNqb2ludEZyb20iLCJtZXJnZWRFcXVpdmFsZW5jZSIsIm1lcmdlZFdpdGgiLCJncm91bmRlZFRlcm0iLCJ0ZXJtIiwidmFyaWFibGVzIiwidmFyaWFibGVzRnJvbVRlcm0iLCJ2YXJpYWJsZSIsImRlZmluZWRWYXJpYWJsZXNJbmNsdWRlc1Rlcm1WYXJpYWJsZSIsImluY2x1ZGVzIiwiZGVmaW5lZFZhcmlhYmxlIiwiZXF1aXZhbGVuY2VJbml0aWFsbHlHcm91bmRlZCIsImlzSW5pdGlhbGx5R3JvdW5kZWQiLCJlcXVpdmFsZW5jZUltcGxpY2l0bHlHcm91bmRlZCIsImlzSW1wbGljaXRseUdyb3VuZGVkIiwiZ3JvdW5kZWRFcXVpdmFsZW5jZSIsImdldEdyb3VuZGVkVGVybXMiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztRQXNCZ0JBO2VBQUFBOztRQVVBQztlQUFBQTs7UUF0QkFDO2VBQUFBOztRQWtDQUM7ZUFBQUE7OzsyQkExQ2U7aUVBRVY7NkJBRWE7Ozs7OztBQUVsQyxNQUFNLEVBQUVDLElBQUksRUFBRUMsUUFBUSxFQUFFLEdBQUdDLHlCQUFjO0FBRWxDLFNBQVNKLGtCQUFrQkssYUFBYSxFQUFFQyxhQUFhLEVBQUVDLE9BQU87SUFDckVGLGdCQUFnQjtXQUNYQTtLQUNKO0lBRURDLGNBQWNFLE9BQU8sQ0FBQyxDQUFDQztRQUNyQkosZ0JBQWdCSyxpQkFBaUJMLGVBQWVJLGNBQWNGO0lBQ2hFO0lBRUEsT0FBT0Y7QUFDVDtBQUVPLFNBQVNQLHlCQUF5QmEsUUFBUSxFQUFFSixPQUFPO0lBQ3hELE1BQU0sRUFBRUssV0FBVyxFQUFFLEdBQUdDLGlCQUFRLEVBQzFCQyxlQUFlRixZQUFZRyxZQUFZLENBQUNKLFVBQVVKLFVBQ2xEUyxlQUFlO1FBQ2JGO0tBQ0Q7SUFFUCxPQUFPRTtBQUNUO0FBRU8sU0FBU2pCLDJCQUEyQmlCLFlBQVksRUFBRUMsU0FBUztJQUNoRSxNQUFNQyxjQUFjRixhQUFhRyxJQUFJLENBQUMsQ0FBQ0Q7UUFDckMsTUFBTUUsa0JBQWtCRixZQUFZRyxjQUFjLENBQUNKO1FBRW5ELElBQUlHLGlCQUFpQjtZQUNuQixPQUFPO1FBQ1Q7SUFDRixNQUFNO0lBRU4sT0FBT0Y7QUFDVDtBQUVPLFNBQVNqQix5Q0FBeUNlLFlBQVksRUFBRU0sYUFBYSxFQUFFQyxnQkFBZ0IsRUFBRWhC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
|
|
134
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvZXF1aXZhbGVuY2VzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcblxuaW1wb3J0IGVsZW1lbnRzIGZyb20gXCIuLi9lbGVtZW50c1wiO1xuXG5pbXBvcnQgeyB2YXJpYWJsZXNGcm9tVGVybSB9IGZyb20gXCIuLi91dGlsaXRpZXMvZXF1aXZhbGVuY2VcIjtcblxuY29uc3QgeyBwdXNoLCBzZXBhcmF0ZSB9ID0gYXJyYXlVdGlsaXRpZXM7XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZUVxdWl2YWxlbmNlcyhlcXVpdmFsZW5jZXNBLCBlcXVpdmFsZW5jZXNCLCBjb250ZXh0KSB7XG4gIGVxdWl2YWxlbmNlc0EgPSBbICAvLy9cbiAgICAuLi5lcXVpdmFsZW5jZXNBXG4gIF07XG5cbiAgZXF1aXZhbGVuY2VzQi5mb3JFYWNoKChlcXVpdmFsZW5jZUIpID0+IHtcbiAgICBlcXVpdmFsZW5jZXNBID0gbWVyZ2VFcXVpdmFsZW5jZShlcXVpdmFsZW5jZXNBLCBlcXVpdmFsZW5jZUIsIGNvbnRleHQpO1xuICB9KTtcblxuICByZXR1cm4gZXF1aXZhbGVuY2VzQTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVxdWl2YWxlbmNlc0Zyb21FcXVhbGl0eShlcXVhbGl0eSwgY29udGV4dCkge1xuICBjb25zdCB7IEVxdWl2YWxlbmNlIH0gPSBlbGVtZW50cyxcbiAgICAgICAgZWF1bGl2YWxlbmNlID0gRXF1aXZhbGVuY2UuZnJvbUVxdWFsaXR5KGVxdWFsaXR5LCBjb250ZXh0KSxcbiAgICAgICAgZXF1aXZhbGVuY2VzID0gW1xuICAgICAgICAgIGVhdWxpdmFsZW5jZVxuICAgICAgICBdO1xuXG4gIHJldHVybiBlcXVpdmFsZW5jZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaW5kRXF1aXZhbGVuY2VCeVRlcm1Ob2RlKGVxdWl2YWxlbmNlcywgdGVybU5vZGUpIHtcbiAgY29uc3QgZXF1aXZhbGVuY2UgPSBlcXVpdmFsZW5jZXMuZmluZCgoZXF1aXZhbGVuY2UpID0+IHtcbiAgICBjb25zdCB0ZXJtRXF1YXRlcyA9IGVxdWl2YWxlbmNlLm1hdGNoVGVybU5vZGUodGVybU5vZGUpO1xuXG4gICAgaWYgKHRlcm1FcXVhdGVzKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0pIHx8IG51bGw7XG5cbiAgcmV0dXJuIGVxdWl2YWxlbmNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2VwYXJhdGVHcm91bmRlZFRlcm1zQW5kRGVmaW5lZFZhcmlhYmxlcyhlcXVpdmFsZW5jZXMsIGdyb3VuZGVkVGVybXMsIGRlZmluZWRWYXJpYWJsZXMsIGNvbnRleHQpIHtcbiAgbGV0IGdyb3VuZGVkRXF1aXZhbGVuY2VzLFxuICAgICAgcmVtYWluaW5nRXF1aXZhbGVuY2VzLFxuICAgICAgaW5pdGlhbGx5R3JvdW5kZWRFcXVpdmFsZW5jZXMsXG4gICAgICBpbXBsaWNpdGx5R3JvdW5kZWRFcXVpdmFsZW5jZXM7XG5cbiAgcmVtYWluaW5nRXF1aXZhbGVuY2VzID0gW107XG5cbiAgaW5pdGlhbGx5R3JvdW5kZWRFcXVpdmFsZW5jZXMgPSBbXTtcblxuICBzZXBhcmF0ZUluaXRpYWxseUdyb3VuZGVkRXF1aXZhbGVuY2VzKGVxdWl2YWxlbmNlcywgcmVtYWluaW5nRXF1aXZhbGVuY2VzLCBpbml0aWFsbHlHcm91bmRlZEVxdWl2YWxlbmNlcywgY29udGV4dCk7XG5cbiAgY29uc3QgaW5pdGlhbGx5R3JvdW5kZWRFcXVpdmFsZW5jZXNMZW5ndGggPSBpbml0aWFsbHlHcm91bmRlZEVxdWl2YWxlbmNlcy5sZW5ndGg7XG5cbiAgaWYgKGluaXRpYWxseUdyb3VuZGVkRXF1aXZhbGVuY2VzTGVuZ3RoID4gMCkge1xuICAgIGdyb3VuZGVkRXF1aXZhbGVuY2VzID0gaW5pdGlhbGx5R3JvdW5kZWRFcXVpdmFsZW5jZXM7IC8vL1xuXG4gICAgbGV0IGltcGxpY2l0bHlHcm91bmRlZEVxdWl2YWxlbmNlc0xlbmd0aCA9IDE7XG5cbiAgICB3aGlsZSAoaW1wbGljaXRseUdyb3VuZGVkRXF1aXZhbGVuY2VzTGVuZ3RoID4gMCkge1xuICAgICAgbGV0IGRlZmluZWRWYXJpYWJsZXNMZW5ndGggPSAwLFxuICAgICAgICAgICAgcHJldmlvdXNEZWZpbmVkVmFyaWFibGVzTGVuZ3RoID0gLTE7XG5cbiAgICAgIHdoaWxlIChkZWZpbmVkVmFyaWFibGVzTGVuZ3RoID4gcHJldmlvdXNEZWZpbmVkVmFyaWFibGVzTGVuZ3RoKSB7XG4gICAgICAgIHByZXZpb3VzRGVmaW5lZFZhcmlhYmxlc0xlbmd0aCA9IGRlZmluZWRWYXJpYWJsZXNMZW5ndGg7ICAvLy9cblxuICAgICAgICBncm91bmRlZFRlcm1zRnJvbUdyb3VuZGVkRXF1aXZhbGVuY2VzQW5kRGVmaW5lZFZhcmlhYmxlcyhncm91bmRlZEVxdWl2YWxlbmNlcywgZGVmaW5lZFZhcmlhYmxlcywgZ3JvdW5kZWRUZXJtcywgY29udGV4dCk7XG5cbiAgICAgICAgZGVmaW5lZFZhcmlhYmxlc0Zyb21Hcm91bmRlZFRlcm1zKGdyb3VuZGVkVGVybXMsIGRlZmluZWRWYXJpYWJsZXMsIGNvbnRleHQpO1xuXG4gICAgICAgIGRlZmluZWRWYXJpYWJsZXNMZW5ndGggPSBkZWZpbmVkVmFyaWFibGVzLmxlbmd0aDtcbiAgICAgIH1cblxuICAgICAgZXF1aXZhbGVuY2VzID0gcmVtYWluaW5nRXF1aXZhbGVuY2VzOyAvLy9cblxuICAgICAgcmVtYWluaW5nRXF1aXZhbGVuY2VzID0gW107XG5cbiAgICAgIGltcGxpY2l0bHlHcm91bmRlZEVxdWl2YWxlbmNlcyA9IFtdO1xuXG4gICAgICBzZXBhcmF0ZUltcGxpY2l0bHlHcm91bmRlZEVxdWl2YWxlbmNlcyhlcXVpdmFsZW5jZXMsIHJlbWFpbmluZ0VxdWl2YWxlbmNlcywgaW1wbGljaXRseUdyb3VuZGVkRXF1aXZhbGVuY2VzLCBkZWZpbmVkVmFyaWFibGVzLCBjb250ZXh0KTtcblxuICAgICAgcHVzaChncm91bmRlZEVxdWl2YWxlbmNlcywgaW1wbGljaXRseUdyb3VuZGVkRXF1aXZhbGVuY2VzKTtcblxuICAgICAgaW1wbGljaXRseUdyb3VuZGVkRXF1aXZhbGVuY2VzTGVuZ3RoID0gaW1wbGljaXRseUdyb3VuZGVkRXF1aXZhbGVuY2VzLmxlbmd0aDsgIC8vL1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBtZXJnZUVxdWl2YWxlbmNlKGVxdWl2YWxlbmNlc0EsIGVxdWl2YWxlbmNlQiwgY29udGV4dCkge1xuICBjb25zdCBtZXJnZWRFcXVpdmFsZW5jZXMgPSBbXTtcblxuICBlcXVpdmFsZW5jZXNBLmZvckVhY2goKGVxdWl2YWxlbmNlQSkgPT4ge1xuICAgIGNvbnN0IGVxdWl2YWxlbmNlQkRpc2pvaW50RnJvbUVxdWl2YWxlbmNlQSA9IGVxdWl2YWxlbmNlQi5pc0Rpc2pvaW50RnJvbShlcXVpdmFsZW5jZUEpO1xuXG4gICAgaWYgKGVxdWl2YWxlbmNlQkRpc2pvaW50RnJvbUVxdWl2YWxlbmNlQSkge1xuICAgICAgY29uc3QgbWVyZ2VkRXF1aXZhbGVuY2UgPSBlcXVpdmFsZW5jZUE7ICAvLy9cblxuICAgICAgbWVyZ2VkRXF1aXZhbGVuY2VzLnB1c2gobWVyZ2VkRXF1aXZhbGVuY2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICBlcXVpdmFsZW5jZUIgPSBlcXVpdmFsZW5jZUIubWVyZ2VkV2l0aChlcXVpdmFsZW5jZUEsIGNvbnRleHQpO1xuICAgIH1cbiAgfSk7XG5cbiAgY29uc3QgbWVyZ2VkRXF1aXZhbGVuY2UgPSBlcXVpdmFsZW5jZUI7ICAvLy9cblxuICBtZXJnZWRFcXVpdmFsZW5jZXMucHVzaChtZXJnZWRFcXVpdmFsZW5jZSk7XG5cbiAgZXF1aXZhbGVuY2VzQSA9IG1lcmdlZEVxdWl2YWxlbmNlczsgIC8vL1xuXG4gIHJldHVybiBlcXVpdmFsZW5jZXNBO1xufVxuXG5mdW5jdGlvbiBkZWZpbmVkVmFyaWFibGVzRnJvbUdyb3VuZGVkVGVybXMoZ3JvdW5kZWRUZXJtcywgZGVmaW5lZFZhcmlhYmxlcywgY29udGV4dCkge1xuICBncm91bmRlZFRlcm1zLmZvckVhY2goKGdyb3VuZGVkVGVybSkgPT4ge1xuICAgIGNvbnN0IHRlcm0gPSBncm91bmRlZFRlcm0sICAvLy9cbiAgICAgICAgICB2YXJpYWJsZXMgPSB2YXJpYWJsZXNGcm9tVGVybSh0ZXJtLCBjb250ZXh0KTtcblxuICAgIHZhcmlhYmxlcy5mb3JFYWNoKCh2YXJpYWJsZSkgPT4ge1xuICAgICAgY29uc3QgZGVmaW5lZFZhcmlhYmxlc0luY2x1ZGVzVGVybVZhcmlhYmxlID0gZGVmaW5lZFZhcmlhYmxlcy5pbmNsdWRlcyh2YXJpYWJsZSk7XG5cbiAgICAgIGlmICghZGVmaW5lZFZhcmlhYmxlc0luY2x1ZGVzVGVybVZhcmlhYmxlKSB7XG4gICAgICAgIGNvbnN0IGRlZmluZWRWYXJpYWJsZSA9IHZhcmlhYmxlOyAgLy8vXG5cbiAgICAgICAgZGVmaW5lZFZhcmlhYmxlcy5wdXNoKGRlZmluZWRWYXJpYWJsZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBzZXBhcmF0ZUluaXRpYWxseUdyb3VuZGVkRXF1aXZhbGVuY2VzKGVxdWl2YWxlbmNlcywgcmVtYWluaW5nRXF1aXZhbGVuY2VzLCBpbml0aWFsbHlHcm91bmRlZEVxdWl2YWxlbmNlcywgY29udGV4dCkge1xuICBzZXBhcmF0ZShlcXVpdmFsZW5jZXMsIHJlbWFpbmluZ0VxdWl2YWxlbmNlcywgaW5pdGlhbGx5R3JvdW5kZWRFcXVpdmFsZW5jZXMsIChlcXVpdmFsZW5jZSkgPT4ge1xuICAgIGNvbnN0IGVxdWl2YWxlbmNlSW5pdGlhbGx5R3JvdW5kZWQgPSBlcXVpdmFsZW5jZS5pc0luaXRpYWxseUdyb3VuZGVkKGNvbnRleHQpO1xuXG4gICAgaWYgKCFlcXVpdmFsZW5jZUluaXRpYWxseUdyb3VuZGVkKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBzZXBhcmF0ZUltcGxpY2l0bHlHcm91bmRlZEVxdWl2YWxlbmNlcyhlcXVpdmFsZW5jZXMsIHJlbWFpbmluZ0VxdWl2YWxlbmNlcywgaW1wbGljaXRseUdyb3VuZGVkRXF1aXZhbGVuY2VzLCBkZWZpbmVkVmFyaWFibGVzLCBjb250ZXh0KSB7XG4gIHNlcGFyYXRlKGVxdWl2YWxlbmNlcywgcmVtYWluaW5nRXF1aXZhbGVuY2VzLCBpbXBsaWNpdGx5R3JvdW5kZWRFcXVpdmFsZW5jZXMsIChlcXVpdmFsZW5jZSkgPT4ge1xuICAgIGNvbnN0IGVxdWl2YWxlbmNlSW1wbGljaXRseUdyb3VuZGVkID0gZXF1aXZhbGVuY2UuaXNJbXBsaWNpdGx5R3JvdW5kZWQoZGVmaW5lZFZhcmlhYmxlcywgY29udGV4dCk7XG5cbiAgICBpZiAoIWVxdWl2YWxlbmNlSW1wbGljaXRseUdyb3VuZGVkKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBncm91bmRlZFRlcm1zRnJvbUdyb3VuZGVkRXF1aXZhbGVuY2VzQW5kRGVmaW5lZFZhcmlhYmxlcyhncm91bmRlZEVxdWl2YWxlbmNlcywgZGVmaW5lZFZhcmlhYmxlcywgZ3JvdW5kZWRUZXJtcywgY29udGV4dCkge1xuICBncm91bmRlZEVxdWl2YWxlbmNlcy5mb3JFYWNoKChncm91bmRlZEVxdWl2YWxlbmNlKSA9PiB7XG4gICAgZ3JvdW5kZWRFcXVpdmFsZW5jZS5nZXRHcm91bmRlZFRlcm1zKGRlZmluZWRWYXJpYWJsZXMsIGdyb3VuZGVkVGVybXMsIGNvbnRleHQpO1xuICB9KTtcbn1cbiJdLCJuYW1lcyI6WyJlcXVpdmFsZW5jZXNGcm9tRXF1YWxpdHkiLCJmaW5kRXF1aXZhbGVuY2VCeVRlcm1Ob2RlIiwibWVyZ2VFcXVpdmFsZW5jZXMiLCJzZXBhcmF0ZUdyb3VuZGVkVGVybXNBbmREZWZpbmVkVmFyaWFibGVzIiwicHVzaCIsInNlcGFyYXRlIiwiYXJyYXlVdGlsaXRpZXMiLCJlcXVpdmFsZW5jZXNBIiwiZXF1aXZhbGVuY2VzQiIsImNvbnRleHQiLCJmb3JFYWNoIiwiZXF1aXZhbGVuY2VCIiwibWVyZ2VFcXVpdmFsZW5jZSIsImVxdWFsaXR5IiwiRXF1aXZhbGVuY2UiLCJlbGVtZW50cyIsImVhdWxpdmFsZW5jZSIsImZyb21FcXVhbGl0eSIsImVxdWl2YWxlbmNlcyIsInRlcm1Ob2RlIiwiZXF1aXZhbGVuY2UiLCJmaW5kIiwidGVybUVxdWF0ZXMiLCJtYXRjaFRlcm1Ob2RlIiwiZ3JvdW5kZWRUZXJtcyIsImRlZmluZWRWYXJpYWJsZXMiLCJncm91bmRlZEVxdWl2YWxlbmNlcyIsInJlbWFpbmluZ0VxdWl2YWxlbmNlcyIsImluaXRpYWxseUdyb3VuZGVkRXF1aXZhbGVuY2VzIiwiaW1wbGljaXRseUdyb3VuZGVkRXF1aXZhbGVuY2VzIiwic2VwYXJhdGVJbml0aWFsbHlHcm91bmRlZEVxdWl2YWxlbmNlcyIsImluaXRpYWxseUdyb3VuZGVkRXF1aXZhbGVuY2VzTGVuZ3RoIiwibGVuZ3RoIiwiaW1wbGljaXRseUdyb3VuZGVkRXF1aXZhbGVuY2VzTGVuZ3RoIiwiZGVmaW5lZFZhcmlhYmxlc0xlbmd0aCIsInByZXZpb3VzRGVmaW5lZFZhcmlhYmxlc0xlbmd0aCIsImdyb3VuZGVkVGVybXNGcm9tR3JvdW5kZWRFcXVpdmFsZW5jZXNBbmREZWZpbmVkVmFyaWFibGVzIiwiZGVmaW5lZFZhcmlhYmxlc0Zyb21Hcm91bmRlZFRlcm1zIiwic2VwYXJhdGVJbXBsaWNpdGx5R3JvdW5kZWRFcXVpdmFsZW5jZXMiLCJtZXJnZWRFcXVpdmFsZW5jZXMiLCJlcXVpdmFsZW5jZUEiLCJlcXVpdmFsZW5jZUJEaXNqb2ludEZyb21FcXVpdmFsZW5jZUEiLCJpc0Rpc2pvaW50RnJvbSIsIm1lcmdlZEVxdWl2YWxlbmNlIiwibWVyZ2VkV2l0aCIsImdyb3VuZGVkVGVybSIsInRlcm0iLCJ2YXJpYWJsZXMiLCJ2YXJpYWJsZXNGcm9tVGVybSIsInZhcmlhYmxlIiwiZGVmaW5lZFZhcmlhYmxlc0luY2x1ZGVzVGVybVZhcmlhYmxlIiwiaW5jbHVkZXMiLCJkZWZpbmVkVmFyaWFibGUiLCJlcXVpdmFsZW5jZUluaXRpYWxseUdyb3VuZGVkIiwiaXNJbml0aWFsbHlHcm91bmRlZCIsImVxdWl2YWxlbmNlSW1wbGljaXRseUdyb3VuZGVkIiwiaXNJbXBsaWNpdGx5R3JvdW5kZWQiLCJncm91bmRlZEVxdWl2YWxlbmNlIiwiZ2V0R3JvdW5kZWRUZXJtcyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O1FBc0JnQkE7ZUFBQUE7O1FBVUFDO2VBQUFBOztRQXRCQUM7ZUFBQUE7O1FBa0NBQztlQUFBQTs7OzJCQTFDZTtpRUFFVjs2QkFFYTs7Ozs7O0FBRWxDLE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxRQUFRLEVBQUUsR0FBR0MseUJBQWM7QUFFbEMsU0FBU0osa0JBQWtCSyxhQUFhLEVBQUVDLGFBQWEsRUFBRUMsT0FBTztJQUNyRUYsZ0JBQWdCO1dBQ1hBO0tBQ0o7SUFFREMsY0FBY0UsT0FBTyxDQUFDLENBQUNDO1FBQ3JCSixnQkFBZ0JLLGlCQUFpQkwsZUFBZUksY0FBY0Y7SUFDaEU7SUFFQSxPQUFPRjtBQUNUO0FBRU8sU0FBU1AseUJBQXlCYSxRQUFRLEVBQUVKLE9BQU87SUFDeEQsTUFBTSxFQUFFSyxXQUFXLEVBQUUsR0FBR0MsaUJBQVEsRUFDMUJDLGVBQWVGLFlBQVlHLFlBQVksQ0FBQ0osVUFBVUosVUFDbERTLGVBQWU7UUFDYkY7S0FDRDtJQUVQLE9BQU9FO0FBQ1Q7QUFFTyxTQUFTakIsMEJBQTBCaUIsWUFBWSxFQUFFQyxRQUFRO0lBQzlELE1BQU1DLGNBQWNGLGFBQWFHLElBQUksQ0FBQyxDQUFDRDtRQUNyQyxNQUFNRSxjQUFjRixZQUFZRyxhQUFhLENBQUNKO1FBRTlDLElBQUlHLGFBQWE7WUFDZixPQUFPO1FBQ1Q7SUFDRixNQUFNO0lBRU4sT0FBT0Y7QUFDVDtBQUVPLFNBQVNqQix5Q0FBeUNlLFlBQVksRUFBRU0sYUFBYSxFQUFFQyxnQkFBZ0IsRUFBRWhCLE9BQU87SUFDN0csSUFBSWlCLHNCQUNB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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.434",
|
|
5
5
|
"license": "MIT, Anti-996",
|
|
6
6
|
"homepage": "https://github.com/djalbat/occam-nominal",
|
|
7
7
|
"description": "Occam's Nominal language.",
|
|
@@ -11,16 +11,16 @@
|
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
13
13
|
"necessary": "^17.6.3",
|
|
14
|
-
"occam-furtle": "^3.0.
|
|
14
|
+
"occam-furtle": "^3.0.440",
|
|
15
15
|
"occam-grammar-utilities": "^8.1.22",
|
|
16
|
-
"occam-languages": "^2.2.
|
|
16
|
+
"occam-languages": "^2.2.57",
|
|
17
17
|
"occam-query": "^4.1.203"
|
|
18
18
|
},
|
|
19
19
|
"devDependencies": {
|
|
20
20
|
"@swc/core": "1.13.20",
|
|
21
21
|
"decaf-cli": "^1.0.37",
|
|
22
|
-
"occam-model": "^1.0.
|
|
23
|
-
"occam-server": "^7.0.
|
|
22
|
+
"occam-model": "^1.0.574",
|
|
23
|
+
"occam-server": "^7.0.74",
|
|
24
24
|
"watchful-cli": "^1.7.102"
|
|
25
25
|
},
|
|
26
26
|
"scripts": {
|
package/src/element/equality.js
CHANGED
|
@@ -78,20 +78,6 @@ export default define(class Equality extends Element {
|
|
|
78
78
|
return equalTo;
|
|
79
79
|
}
|
|
80
80
|
|
|
81
|
-
isReflexive() {
|
|
82
|
-
let reflexive = false;
|
|
83
|
-
|
|
84
|
-
if (!this.negated) {
|
|
85
|
-
const leftTermEqualToRightTerm = this.leftTerm.isEqualTo(this.rightTerm);
|
|
86
|
-
|
|
87
|
-
if (leftTermEqualToRightTerm) {
|
|
88
|
-
reflexive = true;
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
return reflexive;
|
|
93
|
-
}
|
|
94
|
-
|
|
95
81
|
findEquality(context) {
|
|
96
82
|
const equalityNode = this.getEqualityNode(),
|
|
97
83
|
equality = context.findEqualityByEqualityNode(equalityNode);
|
|
@@ -248,14 +234,14 @@ export default define(class Equality extends Element {
|
|
|
248
234
|
return;
|
|
249
235
|
}
|
|
250
236
|
|
|
251
|
-
const
|
|
252
|
-
negated = this.isNegated(),
|
|
253
|
-
reflexive = this.isReflexive();
|
|
237
|
+
const negated = this.isNegated();
|
|
254
238
|
|
|
255
|
-
if (negated
|
|
239
|
+
if (negated) {
|
|
256
240
|
return;
|
|
257
241
|
}
|
|
258
242
|
|
|
243
|
+
const equality = this; ///
|
|
244
|
+
|
|
259
245
|
const equalityAssignment = equalityAssignmentFromEquality(equality, context);
|
|
260
246
|
|
|
261
247
|
context.addAssignment(equalityAssignment);
|
|
@@ -5,12 +5,12 @@ import { arrayUtilities } from "necessary";
|
|
|
5
5
|
|
|
6
6
|
import { define } from "../elements";
|
|
7
7
|
import { instantiate } from "../utilities/context";
|
|
8
|
+
import { stripBracketsFromTerm } from "../utilities/brackets";
|
|
8
9
|
import { instantiateEquivalence } from "../process/instantiate";
|
|
9
|
-
import { stripBracketsFromTermNode } from "../utilities/brackets";
|
|
10
10
|
import { equivalenceStringFromTerms } from "../utilities/string";
|
|
11
11
|
import { equivalenceFromEquivalenceNode } from "../utilities/element";
|
|
12
12
|
|
|
13
|
-
const { compress } = arrayUtilities;
|
|
13
|
+
const { first, second, compress } = arrayUtilities;
|
|
14
14
|
|
|
15
15
|
export default define(class Equivalence extends Element {
|
|
16
16
|
constructor(context, string, node, breakPoint, terms) {
|
|
@@ -87,9 +87,9 @@ export default define(class Equivalence extends Element {
|
|
|
87
87
|
|
|
88
88
|
isDisjointFrom(equivalence) {
|
|
89
89
|
const disjointFrom = equivalence.everyTerm((term) => {
|
|
90
|
-
const
|
|
90
|
+
const termEquates = this.equateTerm(term);
|
|
91
91
|
|
|
92
|
-
if (!
|
|
92
|
+
if (!termEquates) {
|
|
93
93
|
return true;
|
|
94
94
|
}
|
|
95
95
|
});
|
|
@@ -113,63 +113,42 @@ export default define(class Equivalence extends Element {
|
|
|
113
113
|
return implicitlyGrounded;
|
|
114
114
|
}
|
|
115
115
|
|
|
116
|
-
|
|
117
|
-
|
|
116
|
+
equateTerm(term) {
|
|
117
|
+
const termA = term, ///
|
|
118
|
+
termEquates = this.someTerm((term) => {
|
|
119
|
+
const termB = term, ///
|
|
120
|
+
termAEqualToTermB = termA.isEqualTo(termB);
|
|
118
121
|
|
|
119
|
-
|
|
120
|
-
|
|
122
|
+
if (termAEqualToTermB) {
|
|
123
|
+
return true;
|
|
124
|
+
}
|
|
125
|
+
});
|
|
121
126
|
|
|
122
|
-
|
|
127
|
+
return termEquates;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
equateTerms(terms) {
|
|
131
|
+
const termsEquate = terms.every((term) => {
|
|
132
|
+
const termEquates = this.equateTerm(term);
|
|
133
|
+
|
|
134
|
+
if (termEquates) {
|
|
123
135
|
return true;
|
|
124
136
|
}
|
|
125
137
|
});
|
|
126
138
|
|
|
127
|
-
return
|
|
139
|
+
return termsEquate;
|
|
128
140
|
}
|
|
129
141
|
|
|
130
|
-
|
|
131
|
-
const
|
|
132
|
-
const termNodeMatches =
|
|
142
|
+
matchTermNode(termNode) {
|
|
143
|
+
const termNodeMatches = this.terms.some((term) => {
|
|
144
|
+
const termNodeMatches = term.matchTermNode(termNode);
|
|
133
145
|
|
|
134
146
|
if (termNodeMatches) {
|
|
135
147
|
return true;
|
|
136
148
|
}
|
|
137
149
|
});
|
|
138
150
|
|
|
139
|
-
return
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
someTerm(callback) { return this.terms.some(callback); }
|
|
143
|
-
|
|
144
|
-
everyTerm(callback) { return this.terms.every(callback); }
|
|
145
|
-
|
|
146
|
-
compareTerm(term) {
|
|
147
|
-
const termA = term, ///
|
|
148
|
-
comparesToTerm = this.someTerm((term) => {
|
|
149
|
-
const termB = term, ///
|
|
150
|
-
termAEqualToTermB = termA.isEqualTo(termB);
|
|
151
|
-
|
|
152
|
-
if (termAEqualToTermB) {
|
|
153
|
-
return true;
|
|
154
|
-
}
|
|
155
|
-
});
|
|
156
|
-
|
|
157
|
-
return comparesToTerm;
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
someOtherTerm(term, callback) {
|
|
161
|
-
const termA = term, ///
|
|
162
|
-
terms = this.terms.filter((term) => {
|
|
163
|
-
const termB = term, ///
|
|
164
|
-
termAEqualToTermB = termA.isEqualTo(termB);
|
|
165
|
-
|
|
166
|
-
if (!termAEqualToTermB) {
|
|
167
|
-
return true;
|
|
168
|
-
}
|
|
169
|
-
}),
|
|
170
|
-
result = terms.some(callback);
|
|
171
|
-
|
|
172
|
-
return result;
|
|
151
|
+
return termNodeMatches;
|
|
173
152
|
}
|
|
174
153
|
|
|
175
154
|
combineTerms(terms) {
|
|
@@ -209,14 +188,52 @@ export default define(class Equivalence extends Element {
|
|
|
209
188
|
return equivalence;
|
|
210
189
|
}
|
|
211
190
|
|
|
191
|
+
someOtherTerm(termNode, callback) {
|
|
192
|
+
const terms = this.terms.filter((term) => {
|
|
193
|
+
const termNodeMatches = term.matchTermNode(termNode);
|
|
194
|
+
|
|
195
|
+
if (!termNodeMatches) {
|
|
196
|
+
return true;
|
|
197
|
+
}
|
|
198
|
+
}),
|
|
199
|
+
result = terms.some(callback);
|
|
200
|
+
|
|
201
|
+
return result;
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
someTerm(callback) { return this.terms.some(callback); }
|
|
205
|
+
|
|
206
|
+
everyTerm(callback) { return this.terms.every(callback); }
|
|
207
|
+
|
|
212
208
|
static name = "Equivalence";
|
|
213
209
|
|
|
214
210
|
static fromEquality(equality, context) {
|
|
215
211
|
let equivalence;
|
|
216
212
|
|
|
213
|
+
let terms;
|
|
214
|
+
|
|
215
|
+
terms = equality.getTerms();
|
|
216
|
+
|
|
217
|
+
terms = terms.map((term) => { ///
|
|
218
|
+
term = stripBracketsFromTerm(term, context);
|
|
219
|
+
|
|
220
|
+
return term;
|
|
221
|
+
});
|
|
222
|
+
|
|
223
|
+
const firstTerm = first(terms),
|
|
224
|
+
secondTerm = second(terms),
|
|
225
|
+
firstTermEqualToSecondTerm = firstTerm.isEqualTo(secondTerm);
|
|
226
|
+
|
|
227
|
+
if (firstTermEqualToSecondTerm) {
|
|
228
|
+
const term = firstTerm; ///
|
|
229
|
+
|
|
230
|
+
terms = [
|
|
231
|
+
term
|
|
232
|
+
];
|
|
233
|
+
}
|
|
234
|
+
|
|
217
235
|
instantiate((context) => {
|
|
218
|
-
const
|
|
219
|
-
equivalenceString = equivalenceStringFromTerms(terms),
|
|
236
|
+
const equivalenceString = equivalenceStringFromTerms(terms),
|
|
220
237
|
string = equivalenceString, ///
|
|
221
238
|
equivalenceNode = instantiateEquivalence(string, context);
|
|
222
239
|
|
package/src/process/equate.js
CHANGED
|
@@ -4,7 +4,8 @@ import { queryUtilities } from "occam-query";
|
|
|
4
4
|
|
|
5
5
|
import ZipPass from "../pass/zip";
|
|
6
6
|
|
|
7
|
-
import {
|
|
7
|
+
import { stripBracketsFromTermNode } from "../utilities/brackets";
|
|
8
|
+
import { findEquivalenceByTermNode } from "../utilities/equivalences";
|
|
8
9
|
|
|
9
10
|
const { nodeQuery } = queryUtilities;
|
|
10
11
|
|
|
@@ -18,25 +19,46 @@ class EquationalPass extends ZipPass {
|
|
|
18
19
|
run: (leftTermNode, rightTermNode, context) => {
|
|
19
20
|
let success = false;
|
|
20
21
|
|
|
22
|
+
leftTermNode = stripBracketsFromTermNode(leftTermNode); ///
|
|
23
|
+
rightTermNode = stripBracketsFromTermNode(rightTermNode); ///
|
|
24
|
+
|
|
21
25
|
if (!success) {
|
|
22
|
-
const
|
|
23
|
-
|
|
26
|
+
const equivalences = context.getEquivalences(),
|
|
27
|
+
leftEquivalence = findEquivalenceByTermNode(equivalences, leftTermNode),
|
|
28
|
+
rightEquivalence = findEquivalenceByTermNode(equivalences, rightTermNode);
|
|
24
29
|
|
|
25
|
-
if (
|
|
26
|
-
|
|
30
|
+
if (!success) {
|
|
31
|
+
if ((leftEquivalence !== null) && (rightEquivalence !== null) && (leftEquivalence === rightEquivalence)) {
|
|
32
|
+
success = true;
|
|
33
|
+
}
|
|
27
34
|
}
|
|
28
|
-
}
|
|
29
35
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
36
|
+
if (!success) {
|
|
37
|
+
if (leftEquivalence !== null) {
|
|
38
|
+
success = leftEquivalence.someOtherTerm(leftTermNode, (otherTerm) => {
|
|
39
|
+
const leftTerm = otherTerm, ///
|
|
40
|
+
leftTermNode = leftTerm.getNode(),
|
|
41
|
+
descended = descend(leftTermNode, rightTermNode, context);
|
|
42
|
+
|
|
43
|
+
if (descended) {
|
|
44
|
+
return true;
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
if (!success) {
|
|
51
|
+
if (rightEquivalence !== null) {
|
|
52
|
+
success = rightEquivalence.someOtherTerm(rightTermNode, (otherTerm) => {
|
|
53
|
+
const rightTerm = otherTerm, ///
|
|
54
|
+
rightTermNode = rightTerm.getNode(),
|
|
55
|
+
descended = descend(leftTermNode, rightTermNode, context);
|
|
56
|
+
|
|
57
|
+
if (descended) {
|
|
58
|
+
return true;
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
}
|
|
40
62
|
}
|
|
41
63
|
}
|
|
42
64
|
|
|
@@ -45,13 +67,7 @@ class EquationalPass extends ZipPass {
|
|
|
45
67
|
leftTermNodeMatchesRightTermNode = leftTermNode.match(rightTermNode, depth);
|
|
46
68
|
|
|
47
69
|
if (leftTermNodeMatchesRightTermNode) {
|
|
48
|
-
const
|
|
49
|
-
rightNonTerminalNode = rightTermNode, ///
|
|
50
|
-
leftNonTerminalNodeChildNodes = leftNonTerminalNode.getChildNodes(),
|
|
51
|
-
rightNonTerminalNodeChildNodes = rightNonTerminalNode.getChildNodes(),
|
|
52
|
-
leftChildNodes = leftNonTerminalNodeChildNodes, ///
|
|
53
|
-
rightChildNodes = rightNonTerminalNodeChildNodes, ///
|
|
54
|
-
descended = equationalPass.descend(leftChildNodes, rightChildNodes, context);
|
|
70
|
+
const descended = descend(leftTermNode, rightTermNode, context);
|
|
55
71
|
|
|
56
72
|
if (descended) {
|
|
57
73
|
success = true;
|
|
@@ -68,7 +84,12 @@ class EquationalPass extends ZipPass {
|
|
|
68
84
|
const equationalPass = new EquationalPass();
|
|
69
85
|
|
|
70
86
|
export function equateTerms(leftTerm, rightTerm, context) {
|
|
71
|
-
let termsEquate;
|
|
87
|
+
let termsEquate = false;
|
|
88
|
+
|
|
89
|
+
const leftTermString = leftTerm.getString(),
|
|
90
|
+
rightTermString = rightTerm.getString();
|
|
91
|
+
|
|
92
|
+
context.trace(`Equating the '${leftTermString}' and '${rightTermString}' terms...`);
|
|
72
93
|
|
|
73
94
|
const leftTermNode = leftTerm.getNode(),
|
|
74
95
|
rightTermNode = rightTerm.getNode(),
|
|
@@ -76,13 +97,24 @@ export function equateTerms(leftTerm, rightTerm, context) {
|
|
|
76
97
|
specificNode = rightTermNode, ///
|
|
77
98
|
success = equationalPass.run(generalNode, specificNode, context);
|
|
78
99
|
|
|
79
|
-
|
|
100
|
+
if (success) {
|
|
101
|
+
termsEquate = true;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
if (termsEquate) {
|
|
105
|
+
context.debug(`...equated the '${leftTermString}' and '${rightTermString}' terms.`);
|
|
106
|
+
}
|
|
80
107
|
|
|
81
108
|
return termsEquate;
|
|
82
109
|
}
|
|
83
110
|
|
|
84
111
|
export function equateStatements(leftStatement, rightStatement, context) {
|
|
85
|
-
let statementsEquate;
|
|
112
|
+
let statementsEquate = false;
|
|
113
|
+
|
|
114
|
+
const leftStatementString = leftStatement.getString(),
|
|
115
|
+
rightStatementString = rightStatement.getString();
|
|
116
|
+
|
|
117
|
+
context.trace(`Equating the '${leftStatementString}' and '${rightStatementString}' statements...`);
|
|
86
118
|
|
|
87
119
|
const leftStatementNode = leftStatement.getNode(),
|
|
88
120
|
rightStatementNode = rightStatement.getNode(),
|
|
@@ -90,7 +122,25 @@ export function equateStatements(leftStatement, rightStatement, context) {
|
|
|
90
122
|
specificNode = rightStatementNode, ///
|
|
91
123
|
success = equationalPass.run(generalNode, specificNode, context);
|
|
92
124
|
|
|
93
|
-
|
|
125
|
+
if (success) {
|
|
126
|
+
statementsEquate = true;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
if (statementsEquate) {
|
|
130
|
+
context.debug(`...equated the '${leftStatementString}' and '${rightStatementString}' statements.`);
|
|
131
|
+
}
|
|
94
132
|
|
|
95
133
|
return statementsEquate;
|
|
96
134
|
}
|
|
135
|
+
|
|
136
|
+
function descend(leftTermNode, rightTermNode, context) {
|
|
137
|
+
const leftNonTerminalNode = leftTermNode, ///
|
|
138
|
+
rightNonTerminalNode = rightTermNode, ///
|
|
139
|
+
leftNonTerminalNodeChildNodes = leftNonTerminalNode.getChildNodes(),
|
|
140
|
+
rightNonTerminalNodeChildNodes = rightNonTerminalNode.getChildNodes(),
|
|
141
|
+
leftChildNodes = leftNonTerminalNodeChildNodes, ///
|
|
142
|
+
rightChildNodes = rightNonTerminalNodeChildNodes, ///
|
|
143
|
+
descended = equationalPass.descend(leftChildNodes, rightChildNodes, context);
|
|
144
|
+
|
|
145
|
+
return descended;
|
|
146
|
+
}
|
|
@@ -5,46 +5,54 @@ import { BRACKETED_TERM_DEPTH, BRACKETED_STATEMENT_DEPTH } from "../constants";
|
|
|
5
5
|
import { bracketedConstructorFromNothing, bracketedCombinatorFromNothing } from "../utilities/instance";
|
|
6
6
|
|
|
7
7
|
export function stripBracketsFromTerm(term, context) {
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
let termNode = term.getNode(),
|
|
9
|
+
bracketedTermChildNode = bracketedTermChildNodeFromTermNode(termNode);
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
while (bracketedTermChildNode !== null) {
|
|
12
|
+
termNode = bracketedTermChildNode; ///
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
bracketedTermChildNode = bracketedTermChildNodeFromTermNode(termNode);
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
+
term = termFromTermNode(termNode, context);
|
|
18
|
+
|
|
17
19
|
return term;
|
|
18
20
|
}
|
|
19
21
|
|
|
20
22
|
export function stripBracketsFromTermNode(termNode) {
|
|
21
|
-
|
|
23
|
+
let bracketedTermChildNode = bracketedTermChildNodeFromTermNode(termNode);
|
|
22
24
|
|
|
23
|
-
|
|
25
|
+
while (bracketedTermChildNode !== null) {
|
|
24
26
|
termNode = bracketedTermChildNode; ///
|
|
27
|
+
|
|
28
|
+
bracketedTermChildNode = bracketedTermChildNodeFromTermNode(termNode);
|
|
25
29
|
}
|
|
26
30
|
|
|
27
31
|
return termNode;
|
|
28
32
|
}
|
|
29
33
|
|
|
30
34
|
export function stripBracketsFromStatement(statement, context) {
|
|
31
|
-
|
|
32
|
-
|
|
35
|
+
let statementNode = statement.getNode(),
|
|
36
|
+
bracketedStatementChildNode = bracketedStatementChildNodeFromStatementNode(statementNode);
|
|
33
37
|
|
|
34
|
-
|
|
35
|
-
|
|
38
|
+
while (bracketedStatementChildNode !== null) {
|
|
39
|
+
statementNode = bracketedStatementChildNode; ///
|
|
36
40
|
|
|
37
|
-
|
|
41
|
+
bracketedStatementChildNode = bracketedStatementChildNodeFromStatementNode(statementNode);
|
|
38
42
|
}
|
|
39
43
|
|
|
44
|
+
statement = statementFromStatementNode(statementNode, context);
|
|
45
|
+
|
|
40
46
|
return statement;
|
|
41
47
|
}
|
|
42
48
|
|
|
43
49
|
export function stripBracketsFromStatementNode(statementNode) {
|
|
44
|
-
|
|
50
|
+
let bracketedStatementChildNode = bracketedStatementChildNodeFromStatementNode(statementNode);
|
|
45
51
|
|
|
46
|
-
|
|
52
|
+
while (bracketedStatementChildNode !== null) {
|
|
47
53
|
statementNode = bracketedStatementChildNode; ///
|
|
54
|
+
|
|
55
|
+
bracketedStatementChildNode = bracketedStatementChildNodeFromStatementNode(statementNode);
|
|
48
56
|
}
|
|
49
57
|
|
|
50
58
|
return statementNode;
|
|
@@ -30,11 +30,11 @@ export function equivalencesFromEquality(equality, context) {
|
|
|
30
30
|
return equivalences;
|
|
31
31
|
}
|
|
32
32
|
|
|
33
|
-
export function
|
|
33
|
+
export function findEquivalenceByTermNode(equivalences, termNode) {
|
|
34
34
|
const equivalence = equivalences.find((equivalence) => {
|
|
35
|
-
const
|
|
35
|
+
const termEquates = equivalence.matchTermNode(termNode);
|
|
36
36
|
|
|
37
|
-
if (
|
|
37
|
+
if (termEquates) {
|
|
38
38
|
return true;
|
|
39
39
|
}
|
|
40
40
|
}) || null;
|