occam-nominal 1.0.646 → 1.0.648
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/element/assertion/type.js +27 -19
- package/lib/element/constructor.js +5 -5
- package/lib/element/equality.js +3 -3
- package/lib/element/equivalence.js +50 -24
- package/lib/element/generator.js +5 -5
- package/lib/element/type.js +6 -14
- package/lib/utilities/brackets.js +3 -1
- package/lib/utilities/equality.js +96 -0
- package/lib/utilities/string.js +3 -4
- package/package.json +1 -1
- package/src/element/assertion/type.js +38 -24
- package/src/element/constructor.js +4 -4
- package/src/element/equality.js +1 -3
- package/src/element/equivalence.js +76 -32
- package/src/element/generator.js +4 -4
- package/src/element/type.js +11 -20
- package/src/utilities/brackets.js +4 -0
- package/src/utilities/equality.js +101 -0
- package/src/utilities/string.js +5 -6
|
@@ -97,21 +97,8 @@ const _default = (0, _elements.define)(class TypeAssertion extends _assertion.de
|
|
|
97
97
|
const typeAssertionString = this.getString(); ///
|
|
98
98
|
context.trace(`Validating the '${typeAssertionString}' declared type assertion...`);
|
|
99
99
|
return this.term.validate(state, context, (term, context, back)=>{
|
|
100
|
-
|
|
101
|
-
if (
|
|
102
|
-
const termType = term.getType(), termTypeEqualToType = termType.isEqualTo(this.type), termTypeSuperTypeOfType = termType.isSuperTypeOf(this.type);
|
|
103
|
-
if (false) {
|
|
104
|
-
///
|
|
105
|
-
} else if (termTypeEqualToType) {
|
|
106
|
-
validatesWhenDeclared = true;
|
|
107
|
-
} else if (termTypeSuperTypeOfType) {
|
|
108
|
-
const termEstablished = term.isEstablished();
|
|
109
|
-
if (termEstablished) {
|
|
110
|
-
validatesWhenDeclared = true;
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
if (!validatesWhenDeclared) {
|
|
100
|
+
const termType = term.getType(), termTypeEqualToType = termType.isEqualTo(this.type), termTypeSuperTypeOfType = termType.isSuperTypeOf(this.type);
|
|
101
|
+
if (!termTypeSuperTypeOfType && !termTypeEqualToType) {
|
|
115
102
|
return back();
|
|
116
103
|
}
|
|
117
104
|
this.term = term;
|
|
@@ -182,17 +169,38 @@ const _default = (0, _elements.define)(class TypeAssertion extends _assertion.de
|
|
|
182
169
|
});
|
|
183
170
|
function validateWhenDerived(term, type, state, context, forward, back) {
|
|
184
171
|
return term.validate(state, context, (term, context, back)=>{
|
|
185
|
-
const termType = term.getType(),
|
|
172
|
+
const equivalenceTypes = findEquivalenceTypes(term, context), termType = term.getType(), termTypes = [
|
|
173
|
+
...equivalenceTypes,
|
|
174
|
+
termType
|
|
175
|
+
], termTypeEqualToOrSubTypeOfType = termTypes.some((termType)=>{
|
|
176
|
+
const termTypeEqualToOrSubTypeOfType = termType.isEqualToOrSubTypeOf(type);
|
|
177
|
+
if (termTypeEqualToOrSubTypeOfType) {
|
|
178
|
+
return true;
|
|
179
|
+
}
|
|
180
|
+
});
|
|
186
181
|
if (!termTypeEqualToOrSubTypeOfType) {
|
|
187
182
|
return back();
|
|
188
183
|
}
|
|
189
|
-
const
|
|
190
|
-
if (
|
|
184
|
+
const termPProvisional = term.isProvisional();
|
|
185
|
+
if (termPProvisional) {
|
|
191
186
|
return back();
|
|
192
187
|
}
|
|
193
188
|
return forward(term, context, back);
|
|
194
189
|
}, back);
|
|
195
190
|
}
|
|
191
|
+
function findEquivalenceTypes(term, context) {
|
|
192
|
+
let equivalenceTypes = [];
|
|
193
|
+
const equivalences = context.getEquivalences(), equivalence = equivalences.find((equivalence)=>{
|
|
194
|
+
const termEquates = equivalence.equateTerm(term);
|
|
195
|
+
if (termEquates) {
|
|
196
|
+
return true;
|
|
197
|
+
}
|
|
198
|
+
}) || null;
|
|
199
|
+
if (equivalence !== null) {
|
|
200
|
+
equivalenceTypes = equivalence.getTypes();
|
|
201
|
+
}
|
|
202
|
+
return equivalenceTypes;
|
|
203
|
+
}
|
|
196
204
|
function termFromTypeAssertionNode(typeAssertionNode, context) {
|
|
197
205
|
const termNode = typeAssertionNode.getTermNode(), term = context.findTermByTermNode(termNode);
|
|
198
206
|
return term;
|
|
@@ -202,4 +210,4 @@ function typeFromTypeAssertionNode(typeAssertionNode, context) {
|
|
|
202
210
|
return type;
|
|
203
211
|
}
|
|
204
212
|
|
|
205
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2Fzc2VydGlvbi90eXBlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBicmVha1BvaW50VXRpbGl0aWVzLCBjb250aW51YXRpb25VdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCBBc3NlcnRpb24gZnJvbSBcIi4uL2Fzc2VydGlvblwiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IGluc3RhbnRpYXRlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9jb250ZXh0XCI7XG5pbXBvcnQgeyB0eXBlVG9UeXBlSlNPTiB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvanNvblwiO1xuaW1wb3J0IHsgaW5zdGFudGlhdGVUeXBlQXNzZXJ0aW9uIH0gZnJvbSBcIi4uLy4uL3Byb2Nlc3MvaW5zdGFudGlhdGVcIjtcbmltcG9ydCB7IHRlcm1Gcm9tVGVybUFuZFN1YnN0aXR1dGlvbnMgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL3N1YnN0aXR1dGlvbnNcIjtcbmltcG9ydCB7IHR5cGVBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvZWxlbWVudFwiO1xuaW1wb3J0IHsgdmFyaWFibGVBc3NpZ25tZW50RnJvbVR5cGVBc3NlcnRpb24gfSBmcm9tIFwiLi4vLi4vcHJvY2Vzcy9hc3NpZ25cIjtcbmltcG9ydCB7IGRlcml2ZSwgaXNEZXJpdmVkLCBpc0RlY2xhcmVkLCBpc1RyYW5zaWVudH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9zdGF0ZVwiO1xuXG5jb25zdCB7IHVuYnJlYWthYmxlIH0gPSBicmVha1BvaW50VXRpbGl0aWVzLFxuICAgICAgeyBhbGwsIGV4aXN0cyB9ID0gY29udGludWF0aW9uVXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgVHlwZUFzc2VydGlvbiBleHRlbmRzIEFzc2VydGlvbiB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdGVybSwgdHlwZSkge1xuICAgIHN1cGVyKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCk7XG5cbiAgICB0aGlzLnRlcm0gPSB0ZXJtO1xuICAgIHRoaXMudHlwZSA9IHR5cGU7XG4gIH1cblxuICBnZXRUZXJtKCkge1xuICAgIHJldHVybiB0aGlzLnRlcm07XG4gIH1cblxuICBnZXRUeXBlKCkge1xuICAgIHJldHVybiB0aGlzLnR5cGU7XG4gIH1cblxuICBnZXRUeXBlQXNzZXJ0aW9uTkJvZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIHR5cGVBc3NlcnRpb25Ob2RlID0gbm9kZTsgLy8vXG5cbiAgICByZXR1cm4gdHlwZUFzc2VydGlvbk5vZGU7XG4gIH1cblxuICBkaXNjaGFyZ2UoZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQsIC8vL1xuICAgICAgICAgIHR5cGVBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYERpc2NoYXJnaW5nIHRoZSAnJHt0eXBlQXNzZXJ0aW9uU3RyaW5nfScgdHlwZSBhc3NlcnRpb24uLi5gKTtcblxuICAgIGNvbnN0IHRlcm0gPSB0ZXJtRnJvbVRlcm1BbmRTdWJzdGl0dXRpb25zKHRoaXMudGVybSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gZGVyaXZlKChzdGF0ZSkgPT4ge1xuICAgICAgcmV0dXJuIHZhbGlkYXRlV2hlbkRlcml2ZWQodGVybSwgdGhpcy50eXBlLCBzdGF0ZSwgY29udGV4dCwgKHRlcm0sIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgc3BlY2lmaWNDb250ZXh0ID0gY29udGV4dDsgIC8vL1xuXG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLmRpc2NoYXJnZWQgdGhlICcke3R5cGVBc3NlcnRpb25TdHJpbmd9JyB0eXBlIGFzc2VydGlvbi5gKTtcblxuICAgICAgICByZXR1cm4gZm9yd2FyZChnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBiYWNrKTtcbiAgICAgIH0sIGJhY2spO1xuICAgIH0pO1xuICB9XG5cbiAgdmFsaWRhdGUgPSB1bmJyZWFrYWJsZShmdW5jdGlvbiAoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBsZXQgYXNzZXJ0aW9uO1xuXG4gICAgY29uc3QgdHlwZUFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3R5cGVBc3NlcnRpb25TdHJpbmd9JyB0eXBlIGFzc2VydGlvbi4uLmApO1xuXG4gICAgYXNzZXJ0aW9uID0gdGhpcy5maW5kQXNzZXJ0aW9uKGNvbnRleHQpO1xuXG4gICAgaWYgKGFzc2VydGlvbiAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgdHlwZUFzc2VydGlvbiA9IGFzc2VydGlvbjsgLy8vXG5cbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHt0eXBlQXNzZXJ0aW9uU3RyaW5nfScgdHlwZSBhc3NlcnRpb24gaXMgYWxyZWFkeSBwcmVzZW50LmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZCh0eXBlQXNzZXJ0aW9uLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9XG5cbiAgICBjb25zdCB2YWxpZGF0ZVR5cGUgPSB0aGlzLnZhbGlkYXRlVHlwZS5iaW5kKHRoaXMpO1xuXG4gICAgcmV0dXJuIGFsbChbXG4gICAgICB2YWxpZGF0ZVR5cGVcbiAgICBdLCBzdGF0ZSwgY29udGV4dCwgKHN0YXRlLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb25zdCB2YWxpZGF0ZVdoZW5EZWNsYXJlZCA9IHRoaXMudmFsaWRhdGVXaGVuRGVjbGFyZWQuYmluZCh0aGlzKSxcbiAgICAgICAgICAgIHZhbGlkYXRlV2hlbkRlcml2ZWQgPSB0aGlzLnZhbGlkYXRlV2hlbkRlcml2ZWQuYmluZCh0aGlzKTtcblxuICAgICAgcmV0dXJuIGV4aXN0cyhbXG4gICAgICAgIHZhbGlkYXRlV2hlbkRlY2xhcmVkLFxuICAgICAgICB2YWxpZGF0ZVdoZW5EZXJpdmVkXG4gICAgICBdLCBzdGF0ZSwgY29udGV4dCwgKHN0YXRlLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICAgIGFzc2VydGlvbiA9IHRoaXM7IC8vL1xuXG4gICAgICAgIHRoaXMuYXNzaWduKHN0YXRlLCBjb250ZXh0KTtcblxuICAgICAgICBjb250ZXh0LmFkZEFzc2VydGlvbihhc3NlcnRpb24pO1xuXG4gICAgICAgIGNvbnN0IHR5cGVBc3NlcnRpb24gPSBhc3NlcnRpb247IC8vL1xuXG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7dHlwZUFzc2VydGlvblN0cmluZ30nIHR5cGUgYXNzZXJ0aW9uLmApO1xuXG4gICAgICAgIHJldHVybiBmb3J3YXJkKHR5cGVBc3NlcnRpb24sIGNvbnRleHQsIGJhY2spO1xuICAgICAgfSwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH0pO1xuXG4gIHZhbGlkYXRlVHlwZShzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHR5cGVBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHt0eXBlQXNzZXJ0aW9uU3RyaW5nfScgdHlwZSBhc3NlcnRpb24ncyB0eXBlLi4uYCk7XG5cbiAgICByZXR1cm4gdGhpcy50eXBlLnZhbGlkYXRlKGNvbnRleHQsICh0eXBlLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICB0aGlzLnR5cGUgPSB0eXBlO1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3R5cGVBc3NlcnRpb25TdHJpbmd9JyB0eXBlIGFzc2VydGlvbidzIHR5cGUuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHN0YXRlLCBjb250ZXh0LCBiYWNrKVxuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdmFsaWRhdGVXaGVuRGVjbGFyZWQoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBkZWNsYXJlZCA9IGlzRGVjbGFyZWQoc3RhdGUpO1xuXG4gICAgaWYgKCFkZWNsYXJlZCkge1xuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICBjb25zdCB0eXBlQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHt0eXBlQXNzZXJ0aW9uU3RyaW5nfScgZGVjbGFyZWQgdHlwZSBhc3NlcnRpb24uLi5gKTtcblxuICAgIHJldHVybiB0aGlzLnRlcm0udmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsICh0ZXJtLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBsZXQgdmFsaWRhdGVzV2hlbkRlY2xhcmVkID0gZmFsc2U7XG5cbiAgICAgIGlmICh0ZXJtICE9PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IHRlcm1UeXBlID0gdGVybS5nZXRUeXBlKCksXG4gICAgICAgICAgICAgIHRlcm1UeXBlRXF1YWxUb1R5cGUgPSB0ZXJtVHlwZS5pc0VxdWFsVG8odGhpcy50eXBlKSxcbiAgICAgICAgICAgICAgdGVybVR5cGVTdXBlclR5cGVPZlR5cGUgPSB0ZXJtVHlwZS5pc1N1cGVyVHlwZU9mKHRoaXMudHlwZSk7XG5cbiAgICAgICAgaWYgKGZhbHNlKSB7XG4gICAgICAgICAgLy8vXG4gICAgICAgIH0gZWxzZSBpZiAodGVybVR5cGVFcXVhbFRvVHlwZSkge1xuICAgICAgICAgIHZhbGlkYXRlc1doZW5EZWNsYXJlZCA9IHRydWU7XG4gICAgICAgIH0gZWxzZSBpZiAodGVybVR5cGVTdXBlclR5cGVPZlR5cGUpIHtcbiAgICAgICAgICBjb25zdCB0ZXJtRXN0YWJsaXNoZWQgPSB0ZXJtLmlzRXN0YWJsaXNoZWQoKTtcblxuICAgICAgICAgIGlmICh0ZXJtRXN0YWJsaXNoZWQpIHtcbiAgICAgICAgICAgIHZhbGlkYXRlc1doZW5EZWNsYXJlZCA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICghdmFsaWRhdGVzV2hlbkRlY2xhcmVkKSB7XG4gICAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMudGVybSA9IHRlcm07XG5cbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7dHlwZUFzc2VydGlvblN0cmluZ30nIGRlY2xhcmVkIHR5cGUgYXNzZXJ0aW9uLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChzdGF0ZSwgY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB2YWxpZGF0ZVdoZW5EZXJpdmVkKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgZGVyaXZlZCA9IGlzRGVyaXZlZChzdGF0ZSk7XG5cbiAgICBpZiAoIWRlcml2ZWQpIHtcbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfVxuXG4gICAgY29uc3QgdHlwZUFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7dHlwZUFzc2VydGlvblN0cmluZ30nIGRlcml2ZWQgdHlwZSBhc3NlcnRpb24uLi5gKTtcblxuICAgIHJldHVybiB2YWxpZGF0ZVdoZW5EZXJpdmVkKHRoaXMudGVybSwgdGhpcy50eXBlLCBzdGF0ZSwgY29udGV4dCwgKHRlcm0sIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIHRoaXMudGVybSA9IHRlcm07XG5cbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7dHlwZUFzc2VydGlvblN0cmluZ30nIGRlcml2ZWQgdHlwZSBhc3NlcnRpb24uYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHN0YXRlLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIGFwcGx5SW5kZXBlbmRlbnRseShnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dCwgLy8vXG4gICAgICAgICAgdHlwZUFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgQXBwbHlpbmcgdGhlICcke3R5cGVBc3NlcnRpb25TdHJpbmd9JyB0eXBlIGFzc2VydGlvbiBpbmRlcGVuZGVudGx5Li4uYCk7XG5cbiAgICBjb25zdCB0ZXJtID0gdGVybUZyb21UZXJtQW5kU3Vic3RpdHV0aW9ucyh0aGlzLnRlcm0sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGRlcml2ZSgoc3RhdGUpID0+IHtcbiAgICAgIHJldHVybiB2YWxpZGF0ZVdoZW5EZXJpdmVkKHRlcm0sIHRoaXMudHlwZSwgc3RhdGUsIGNvbnRleHQsICh0ZXJtLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICAgIHNwZWNpZmljQ29udGV4dCA9IGNvbnRleHQ7ICAvLy9cblxuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi5hcHBsaWVkIHRoZSAnJHt0eXBlQXNzZXJ0aW9uU3RyaW5nfScgdHlwZSBhc3NlcnRpb24gaW5kZXBlbmRlbnRseS5gKTtcblxuICAgICAgICByZXR1cm4gZm9yd2FyZChnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBiYWNrKTtcbiAgICAgIH0sIGJhY2spO1xuICAgIH0pO1xuICB9XG5cbiAgYXNzaWduKHN0YXRlLCBjb250ZXh0KSB7XG4gICAgY29uc3QgZGVyaXZlZCA9IGlzRGVyaXZlZChzdGF0ZSksXG4gICAgICAgICAgdHJhbnNpZW50ID0gaXNUcmFuc2llbnQoc3RhdGUpO1xuXG4gICAgaWYgKGRlcml2ZWQgfHwgdHJhbnNpZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdHlwZUFzc2VydGlvbiA9IHRoaXMsIC8vL1xuICAgICAgICAgIHZhcmlhYmxlQXNzaWdtZW50ID0gdmFyaWFibGVBc3NpZ25tZW50RnJvbVR5cGVBc3NlcnRpb24odHlwZUFzc2VydGlvbiwgY29udGV4dCk7XG5cbiAgICBjb250ZXh0LmFkZEFzc2lnbm1lbnQodmFyaWFibGVBc3NpZ21lbnQpO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIGxldCBqc29uO1xuXG4gICAgY29uc3QgbmFtZSA9IHRoaXMuZ2V0TmFtZSgpLFxuICAgICAgICAgIHN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgdHlwZUpTT04gPSB0eXBlVG9UeXBlSlNPTih0aGlzLnR5cGUpLFxuICAgICAgICAgIHR5cGUgPSB0eXBlSlNPTjsgIC8vL1xuXG4gICAganNvbiA9IHtcbiAgICAgIG5hbWUsXG4gICAgICBzdHJpbmcsXG4gICAgICB0eXBlXG4gICAgfTtcblxuICAgIHJldHVybiBqc29uO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIlR5cGVBc3NlcnRpb25cIjtcblxuICBzdGF0aWMgZnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICAgIGxldCB0eXBlQXNzZXJ0aW9uID0gbnVsbDtcblxuICAgIGNvbnN0IHsgbmFtZSB9ID0ganNvbjtcblxuICAgIGlmICh0aGlzLm5hbWUgPT09IG5hbWUpIHtcbiAgICAgIGluc3RhbnRpYXRlKChjb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IHsgc3RyaW5nIH0gPSBqc29uLFxuICAgICAgICAgICAgICB0eXBlQXNzZXJ0aW9uTm9kZSA9IGluc3RhbnRpYXRlVHlwZUFzc2VydGlvbihzdHJpbmcsIGNvbnRleHQpLFxuICAgICAgICAgICAgICBub2RlID0gdHlwZUFzc2VydGlvbk5vZGUsIC8vL1xuICAgICAgICAgICAgICBicmVha1BvaW50ID0gbnVsbCxcbiAgICAgICAgICAgICAgdGVybSA9IHRlcm1Gcm9tVHlwZUFzc2VydGlvbk5vZGUodHlwZUFzc2VydGlvbk5vZGUsIGNvbnRleHQpLFxuICAgICAgICAgICAgICB0eXBlID0gdHlwZUZyb21UeXBlQXNzZXJ0aW9uTm9kZSh0eXBlQXNzZXJ0aW9uTm9kZSwgY29udGV4dCk7XG5cbiAgICAgICAgY29udGV4dCA9IG51bGw7XG5cbiAgICAgICAgdHlwZUFzc2VydGlvbiA9IG5ldyBUeXBlQXNzZXJ0aW9uKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdGVybSwgdHlwZSk7XG4gICAgICB9LCBjb250ZXh0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHlwZUFzc2VydGlvbjtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCkge1xuICAgIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnQuZ2V0Tm9kZSgpLFxuICAgICAgICAgIHR5cGVBc3NlcnRpb24gPSB0eXBlQXNzZXJ0aW9uRnJvbVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gdHlwZUFzc2VydGlvbjtcbiAgfVxufSk7XG5cbmZ1bmN0aW9uIHZhbGlkYXRlV2hlbkRlcml2ZWQodGVybSwgdHlwZSwgc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgcmV0dXJuIHRlcm0udmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsICh0ZXJtLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgY29uc3QgdGVybVR5cGUgPSB0ZXJtLmdldFR5cGUoKSxcbiAgICAgICAgICB0ZXJtVHlwZUVxdWFsVG9PclN1YlR5cGVPZlR5cGUgPSB0ZXJtVHlwZS5pc0VxdWFsVG9PclN1YlR5cGVPZih0eXBlKTtcblxuICAgIGlmICghdGVybVR5cGVFcXVhbFRvT3JTdWJUeXBlT2ZUeXBlKSB7XG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH1cblxuICAgIGNvbnN0IHRlcm1Fc3RhYmxpc2hlZCA9IHRlcm0uaXNFc3RhYmxpc2hlZCgpO1xuXG4gICAgaWYgKCF0ZXJtRXN0YWJsaXNoZWQpIHtcbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZvcndhcmQodGVybSwgY29udGV4dCwgYmFjayk7XG4gIH0sIGJhY2spO1xufVxuXG5mdW5jdGlvbiB0ZXJtRnJvbVR5cGVBc3NlcnRpb25Ob2RlKHR5cGVBc3NlcnRpb25Ob2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHRlcm1Ob2RlID0gdHlwZUFzc2VydGlvbk5vZGUuZ2V0VGVybU5vZGUoKSxcbiAgICAgICAgdGVybSA9IGNvbnRleHQuZmluZFRlcm1CeVRlcm1Ob2RlKHRlcm1Ob2RlKTtcblxuICByZXR1cm4gdGVybTtcbn1cblxuZnVuY3Rpb24gdHlwZUZyb21UeXBlQXNzZXJ0aW9uTm9kZSh0eXBlQXNzZXJ0aW9uTm9kZSwgY29udGV4dCkge1xuICBjb25zdCB0eXBlTmFtZSA9IHR5cGVBc3NlcnRpb25Ob2RlLmdldFR5cGVOYW1lKCksXG4gICAgICAgIHR5cGUgPSBjb250ZXh0LmZpbmRUeXBlQnlUeXBlTmFtZSh0eXBlTmFtZSk7XG5cbiAgcmV0dXJuIHR5cGU7XG59Il0sIm5hbWVzIjpbInVuYnJlYWthYmxlIiwiYnJlYWtQb2ludFV0aWxpdGllcyIsImFsbCIsImV4aXN0cyIsImNvbnRpbnVhdGlvblV0aWxpdGllcyIsImRlZmluZSIsIlR5cGVBc3NlcnRpb24iLCJBc3NlcnRpb24iLCJjb250ZXh0Iiwic3RyaW5nIiwibm9kZSIsImJyZWFrUG9pbnQiLCJ0ZXJtIiwidHlwZSIsImdldFRlcm0iLCJnZXRUeXBlIiwiZ2V0VHlwZUFzc2VydGlvbk5Cb2RlIiwiZ2V0Tm9kZSIsInR5cGVBc3NlcnRpb25Ob2RlIiwiZGlzY2hhcmdlIiwiZ2VuZXJhbENvbnRleHQiLCJzcGVjaWZpY0NvbnRleHQiLCJmb3J3YXJkIiwiYmFjayIsInR5cGVBc3NlcnRpb25TdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsInRlcm1Gcm9tVGVybUFuZFN1YnN0aXR1dGlvbnMiLCJkZXJpdmUiLCJzdGF0ZSIsInZhbGlkYXRlV2hlbkRlcml2ZWQiLCJkZWJ1ZyIsInZhbGlkYXRlIiwiYXNzZXJ0aW9uIiwiZmluZEFzc2VydGlvbiIsInR5cGVBc3NlcnRpb24iLCJ2YWxpZGF0ZVR5cGUiLCJiaW5kIiwidmFsaWRhdGVXaGVuRGVjbGFyZWQiLCJhc3NpZ24iLCJhZGRBc3NlcnRpb24iLCJkZWNsYXJlZCIsImlzRGVjbGFyZWQiLCJ2YWxpZGF0ZXNXaGVuRGVjbGFyZWQiLCJ0ZXJtVHlwZSIsInRlcm1UeXBlRXF1YWxUb1R5cGUiLCJpc0VxdWFsVG8iLCJ0ZXJtVHlwZVN1cGVyVHlwZU9mVHlwZSIsImlzU3VwZXJUeXBlT2YiLCJ0ZXJtRXN0YWJsaXNoZWQiLCJpc0VzdGFibGlzaGVkIiwiZGVyaXZlZCIsImlzRGVyaXZlZCIsImFwcGx5SW5kZXBlbmRlbnRseSIsInRyYW5zaWVudCIsImlzVHJhbnNpZW50IiwidmFyaWFibGVBc3NpZ21lbnQiLCJ2YXJpYWJsZUFzc2lnbm1lbnRGcm9tVHlwZUFzc2VydGlvbiIsImFkZEFzc2lnbm1lbnQiLCJ0b0pTT04iLCJqc29uIiwibmFtZSIsImdldE5hbWUiLCJ0eXBlSlNPTiIsInR5cGVUb1R5cGVKU09OIiwiZnJvbUpTT04iLCJpbnN0YW50aWF0ZSIsImluc3RhbnRpYXRlVHlwZUFzc2VydGlvbiIsInRlcm1Gcm9tVHlwZUFzc2VydGlvbk5vZGUiLCJ0eXBlRnJvbVR5cGVBc3NlcnRpb25Ob2RlIiwiZnJvbVN0YXRlbWVudCIsInN0YXRlbWVudCIsInN0YXRlbWVudE5vZGUiLCJ0eXBlQXNzZXJ0aW9uRnJvbVN0YXRlbWVudE5vZGUiLCJ0ZXJtVHlwZUVxdWFsVG9PclN1YlR5cGVPZlR5cGUiLCJpc0VxdWFsVG9PclN1YlR5cGVPZiIsInRlcm1Ob2RlIiwiZ2V0VGVybU5vZGUiLCJmaW5kVGVybUJ5VGVybU5vZGUiLCJ0eXBlTmFtZSIsImdldFR5cGVOYW1lIiwiZmluZFR5cGVCeVR5cGVOYW1lIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFrQkE7OztlQUFBOzs7Z0NBaEIyRDtrRUFFckM7MEJBRUM7eUJBQ0s7c0JBQ0c7NkJBQ1U7K0JBQ0k7eUJBQ0U7d0JBQ0s7dUJBQ007Ozs7OztBQUUxRCxNQUFNLEVBQUVBLFdBQVcsRUFBRSxHQUFHQyxtQ0FBbUIsRUFDckMsRUFBRUMsR0FBRyxFQUFFQyxNQUFNLEVBQUUsR0FBR0MscUNBQXFCO01BRTdDLFdBQWVDLElBQUFBLGdCQUFNLEVBQUMsTUFBTUMsc0JBQXNCQyxrQkFBUztJQUN6RCxZQUFZQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxVQUFVLEVBQUVDLElBQUksRUFBRUMsSUFBSSxDQUFFO1FBQ3pELEtBQUssQ0FBQ0wsU0FBU0MsUUFBUUMsTUFBTUM7UUFFN0IsSUFBSSxDQUFDQyxJQUFJLEdBQUdBO1FBQ1osSUFBSSxDQUFDQyxJQUFJLEdBQUdBO0lBQ2Q7SUFFQUMsVUFBVTtRQUNSLE9BQU8sSUFBSSxDQUFDRixJQUFJO0lBQ2xCO0lBRUFHLFVBQVU7UUFDUixPQUFPLElBQUksQ0FBQ0YsSUFBSTtJQUNsQjtJQUVBRyx3QkFBd0I7UUFDdEIsTUFBTU4sT0FBTyxJQUFJLENBQUNPLE9BQU8sSUFDbkJDLG9CQUFvQlIsTUFBTSxHQUFHO1FBRW5DLE9BQU9RO0lBQ1Q7SUFFQUMsVUFBVUMsY0FBYyxFQUFFQyxlQUFlLEVBQUVDLE9BQU8sRUFBRUMsSUFBSSxFQUFFO1FBQ3hELE1BQU1mLFVBQVVhLGlCQUNWRyxzQkFBc0IsSUFBSSxDQUFDQyxTQUFTLElBQUksR0FBRztRQUVqRGpCLFFBQVFrQixLQUFLLENBQUMsQ0FBQyxpQkFBaUIsRUFBRUYsb0JBQW9CLG1CQUFtQixDQUFDO1FBRTFFLE1BQU1aLE9BQU9lLElBQUFB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
|
|
213
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2Fzc2VydGlvbi90eXBlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBicmVha1BvaW50VXRpbGl0aWVzLCBjb250aW51YXRpb25VdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCBBc3NlcnRpb24gZnJvbSBcIi4uL2Fzc2VydGlvblwiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IGluc3RhbnRpYXRlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9jb250ZXh0XCI7XG5pbXBvcnQgeyB0eXBlVG9UeXBlSlNPTiB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvanNvblwiO1xuaW1wb3J0IHsgaW5zdGFudGlhdGVUeXBlQXNzZXJ0aW9uIH0gZnJvbSBcIi4uLy4uL3Byb2Nlc3MvaW5zdGFudGlhdGVcIjtcbmltcG9ydCB7IHRlcm1Gcm9tVGVybUFuZFN1YnN0aXR1dGlvbnMgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL3N1YnN0aXR1dGlvbnNcIjtcbmltcG9ydCB7IHR5cGVBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvZWxlbWVudFwiO1xuaW1wb3J0IHsgdmFyaWFibGVBc3NpZ25tZW50RnJvbVR5cGVBc3NlcnRpb24gfSBmcm9tIFwiLi4vLi4vcHJvY2Vzcy9hc3NpZ25cIjtcbmltcG9ydCB7IGRlcml2ZSwgaXNEZXJpdmVkLCBpc0RlY2xhcmVkLCBpc1RyYW5zaWVudH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9zdGF0ZVwiO1xuXG5jb25zdCB7IHVuYnJlYWthYmxlIH0gPSBicmVha1BvaW50VXRpbGl0aWVzLFxuICAgICAgeyBhbGwsIGV4aXN0cyB9ID0gY29udGludWF0aW9uVXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgVHlwZUFzc2VydGlvbiBleHRlbmRzIEFzc2VydGlvbiB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdGVybSwgdHlwZSkge1xuICAgIHN1cGVyKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCk7XG5cbiAgICB0aGlzLnRlcm0gPSB0ZXJtO1xuICAgIHRoaXMudHlwZSA9IHR5cGU7XG4gIH1cblxuICBnZXRUZXJtKCkge1xuICAgIHJldHVybiB0aGlzLnRlcm07XG4gIH1cblxuICBnZXRUeXBlKCkge1xuICAgIHJldHVybiB0aGlzLnR5cGU7XG4gIH1cblxuICBnZXRUeXBlQXNzZXJ0aW9uTkJvZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIHR5cGVBc3NlcnRpb25Ob2RlID0gbm9kZTsgLy8vXG5cbiAgICByZXR1cm4gdHlwZUFzc2VydGlvbk5vZGU7XG4gIH1cblxuICBkaXNjaGFyZ2UoZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQsIC8vL1xuICAgICAgICAgIHR5cGVBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYERpc2NoYXJnaW5nIHRoZSAnJHt0eXBlQXNzZXJ0aW9uU3RyaW5nfScgdHlwZSBhc3NlcnRpb24uLi5gKTtcblxuICAgIGNvbnN0IHRlcm0gPSB0ZXJtRnJvbVRlcm1BbmRTdWJzdGl0dXRpb25zKHRoaXMudGVybSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gZGVyaXZlKChzdGF0ZSkgPT4ge1xuICAgICAgcmV0dXJuIHZhbGlkYXRlV2hlbkRlcml2ZWQodGVybSwgdGhpcy50eXBlLCBzdGF0ZSwgY29udGV4dCwgKHRlcm0sIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgc3BlY2lmaWNDb250ZXh0ID0gY29udGV4dDsgIC8vL1xuXG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLmRpc2NoYXJnZWQgdGhlICcke3R5cGVBc3NlcnRpb25TdHJpbmd9JyB0eXBlIGFzc2VydGlvbi5gKTtcblxuICAgICAgICByZXR1cm4gZm9yd2FyZChnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBiYWNrKTtcbiAgICAgIH0sIGJhY2spO1xuICAgIH0pO1xuICB9XG5cbiAgdmFsaWRhdGUgPSB1bmJyZWFrYWJsZShmdW5jdGlvbiAoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBsZXQgYXNzZXJ0aW9uO1xuXG4gICAgY29uc3QgdHlwZUFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3R5cGVBc3NlcnRpb25TdHJpbmd9JyB0eXBlIGFzc2VydGlvbi4uLmApO1xuXG4gICAgYXNzZXJ0aW9uID0gdGhpcy5maW5kQXNzZXJ0aW9uKGNvbnRleHQpO1xuXG4gICAgaWYgKGFzc2VydGlvbiAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgdHlwZUFzc2VydGlvbiA9IGFzc2VydGlvbjsgLy8vXG5cbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHt0eXBlQXNzZXJ0aW9uU3RyaW5nfScgdHlwZSBhc3NlcnRpb24gaXMgYWxyZWFkeSBwcmVzZW50LmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZCh0eXBlQXNzZXJ0aW9uLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9XG5cbiAgICBjb25zdCB2YWxpZGF0ZVR5cGUgPSB0aGlzLnZhbGlkYXRlVHlwZS5iaW5kKHRoaXMpO1xuXG4gICAgcmV0dXJuIGFsbChbXG4gICAgICB2YWxpZGF0ZVR5cGVcbiAgICBdLCBzdGF0ZSwgY29udGV4dCwgKHN0YXRlLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb25zdCB2YWxpZGF0ZVdoZW5EZWNsYXJlZCA9IHRoaXMudmFsaWRhdGVXaGVuRGVjbGFyZWQuYmluZCh0aGlzKSxcbiAgICAgICAgICAgIHZhbGlkYXRlV2hlbkRlcml2ZWQgPSB0aGlzLnZhbGlkYXRlV2hlbkRlcml2ZWQuYmluZCh0aGlzKTtcblxuICAgICAgcmV0dXJuIGV4aXN0cyhbXG4gICAgICAgIHZhbGlkYXRlV2hlbkRlY2xhcmVkLFxuICAgICAgICB2YWxpZGF0ZVdoZW5EZXJpdmVkXG4gICAgICBdLCBzdGF0ZSwgY29udGV4dCwgKHN0YXRlLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICAgIGFzc2VydGlvbiA9IHRoaXM7IC8vL1xuXG4gICAgICAgIHRoaXMuYXNzaWduKHN0YXRlLCBjb250ZXh0KTtcblxuICAgICAgICBjb250ZXh0LmFkZEFzc2VydGlvbihhc3NlcnRpb24pO1xuXG4gICAgICAgIGNvbnN0IHR5cGVBc3NlcnRpb24gPSBhc3NlcnRpb247IC8vL1xuXG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7dHlwZUFzc2VydGlvblN0cmluZ30nIHR5cGUgYXNzZXJ0aW9uLmApO1xuXG4gICAgICAgIHJldHVybiBmb3J3YXJkKHR5cGVBc3NlcnRpb24sIGNvbnRleHQsIGJhY2spO1xuICAgICAgfSwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH0pO1xuXG4gIHZhbGlkYXRlVHlwZShzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHR5cGVBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHt0eXBlQXNzZXJ0aW9uU3RyaW5nfScgdHlwZSBhc3NlcnRpb24ncyB0eXBlLi4uYCk7XG5cbiAgICByZXR1cm4gdGhpcy50eXBlLnZhbGlkYXRlKGNvbnRleHQsICh0eXBlLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICB0aGlzLnR5cGUgPSB0eXBlO1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3R5cGVBc3NlcnRpb25TdHJpbmd9JyB0eXBlIGFzc2VydGlvbidzIHR5cGUuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHN0YXRlLCBjb250ZXh0LCBiYWNrKVxuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdmFsaWRhdGVXaGVuRGVjbGFyZWQoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBkZWNsYXJlZCA9IGlzRGVjbGFyZWQoc3RhdGUpO1xuXG4gICAgaWYgKCFkZWNsYXJlZCkge1xuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICBjb25zdCB0eXBlQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHt0eXBlQXNzZXJ0aW9uU3RyaW5nfScgZGVjbGFyZWQgdHlwZSBhc3NlcnRpb24uLi5gKTtcblxuICAgIHJldHVybiB0aGlzLnRlcm0udmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsICh0ZXJtLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb25zdCB0ZXJtVHlwZSA9IHRlcm0uZ2V0VHlwZSgpLFxuICAgICAgICAgICAgdGVybVR5cGVFcXVhbFRvVHlwZSA9IHRlcm1UeXBlLmlzRXF1YWxUbyh0aGlzLnR5cGUpLFxuICAgICAgICAgICAgdGVybVR5cGVTdXBlclR5cGVPZlR5cGUgPSB0ZXJtVHlwZS5pc1N1cGVyVHlwZU9mKHRoaXMudHlwZSk7XG5cbiAgICAgIGlmICghdGVybVR5cGVTdXBlclR5cGVPZlR5cGUgJiYgIXRlcm1UeXBlRXF1YWxUb1R5cGUpIHtcbiAgICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy50ZXJtID0gdGVybTtcblxuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHt0eXBlQXNzZXJ0aW9uU3RyaW5nfScgZGVjbGFyZWQgdHlwZSBhc3NlcnRpb24uYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHN0YXRlLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHZhbGlkYXRlV2hlbkRlcml2ZWQoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBkZXJpdmVkID0gaXNEZXJpdmVkKHN0YXRlKTtcblxuICAgIGlmICghZGVyaXZlZCkge1xuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICBjb25zdCB0eXBlQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHt0eXBlQXNzZXJ0aW9uU3RyaW5nfScgZGVyaXZlZCB0eXBlIGFzc2VydGlvbi4uLmApO1xuXG4gICAgcmV0dXJuIHZhbGlkYXRlV2hlbkRlcml2ZWQodGhpcy50ZXJtLCB0aGlzLnR5cGUsIHN0YXRlLCBjb250ZXh0LCAodGVybSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgdGhpcy50ZXJtID0gdGVybTtcblxuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHt0eXBlQXNzZXJ0aW9uU3RyaW5nfScgZGVyaXZlZCB0eXBlIGFzc2VydGlvbi5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoc3RhdGUsIGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgYXBwbHlJbmRlcGVuZGVudGx5KGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0LCAvLy9cbiAgICAgICAgICB0eXBlQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBBcHBseWluZyB0aGUgJyR7dHlwZUFzc2VydGlvblN0cmluZ30nIHR5cGUgYXNzZXJ0aW9uIGluZGVwZW5kZW50bHkuLi5gKTtcblxuICAgIGNvbnN0IHRlcm0gPSB0ZXJtRnJvbVRlcm1BbmRTdWJzdGl0dXRpb25zKHRoaXMudGVybSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gZGVyaXZlKChzdGF0ZSkgPT4ge1xuICAgICAgcmV0dXJuIHZhbGlkYXRlV2hlbkRlcml2ZWQodGVybSwgdGhpcy50eXBlLCBzdGF0ZSwgY29udGV4dCwgKHRlcm0sIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgc3BlY2lmaWNDb250ZXh0ID0gY29udGV4dDsgIC8vL1xuXG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLmFwcGxpZWQgdGhlICcke3R5cGVBc3NlcnRpb25TdHJpbmd9JyB0eXBlIGFzc2VydGlvbiBpbmRlcGVuZGVudGx5LmApO1xuXG4gICAgICAgIHJldHVybiBmb3J3YXJkKGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGJhY2spO1xuICAgICAgfSwgYmFjayk7XG4gICAgfSk7XG4gIH1cblxuICBhc3NpZ24oc3RhdGUsIGNvbnRleHQpIHtcbiAgICBjb25zdCBkZXJpdmVkID0gaXNEZXJpdmVkKHN0YXRlKSxcbiAgICAgICAgICB0cmFuc2llbnQgPSBpc1RyYW5zaWVudChzdGF0ZSk7XG5cbiAgICBpZiAoZGVyaXZlZCB8fCB0cmFuc2llbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB0eXBlQXNzZXJ0aW9uID0gdGhpcywgLy8vXG4gICAgICAgICAgdmFyaWFibGVBc3NpZ21lbnQgPSB2YXJpYWJsZUFzc2lnbm1lbnRGcm9tVHlwZUFzc2VydGlvbih0eXBlQXNzZXJ0aW9uLCBjb250ZXh0KTtcblxuICAgIGNvbnRleHQuYWRkQXNzaWdubWVudCh2YXJpYWJsZUFzc2lnbWVudCk7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgbGV0IGpzb247XG5cbiAgICBjb25zdCBuYW1lID0gdGhpcy5nZXROYW1lKCksXG4gICAgICAgICAgc3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKSxcbiAgICAgICAgICB0eXBlSlNPTiA9IHR5cGVUb1R5cGVKU09OKHRoaXMudHlwZSksXG4gICAgICAgICAgdHlwZSA9IHR5cGVKU09OOyAgLy8vXG5cbiAgICBqc29uID0ge1xuICAgICAgbmFtZSxcbiAgICAgIHN0cmluZyxcbiAgICAgIHR5cGVcbiAgICB9O1xuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiVHlwZUFzc2VydGlvblwiO1xuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gICAgbGV0IHR5cGVBc3NlcnRpb24gPSBudWxsO1xuXG4gICAgY29uc3QgeyBuYW1lIH0gPSBqc29uO1xuXG4gICAgaWYgKHRoaXMubmFtZSA9PT0gbmFtZSkge1xuICAgICAgaW5zdGFudGlhdGUoKGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgICAgIHR5cGVBc3NlcnRpb25Ob2RlID0gaW5zdGFudGlhdGVUeXBlQXNzZXJ0aW9uKHN0cmluZywgY29udGV4dCksXG4gICAgICAgICAgICAgIG5vZGUgPSB0eXBlQXNzZXJ0aW9uTm9kZSwgLy8vXG4gICAgICAgICAgICAgIGJyZWFrUG9pbnQgPSBudWxsLFxuICAgICAgICAgICAgICB0ZXJtID0gdGVybUZyb21UeXBlQXNzZXJ0aW9uTm9kZSh0eXBlQXNzZXJ0aW9uTm9kZSwgY29udGV4dCksXG4gICAgICAgICAgICAgIHR5cGUgPSB0eXBlRnJvbVR5cGVBc3NlcnRpb25Ob2RlKHR5cGVBc3NlcnRpb25Ob2RlLCBjb250ZXh0KTtcblxuICAgICAgICBjb250ZXh0ID0gbnVsbDtcblxuICAgICAgICB0eXBlQXNzZXJ0aW9uID0gbmV3IFR5cGVBc3NlcnRpb24oY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB0ZXJtLCB0eXBlKTtcbiAgICAgIH0sIGNvbnRleHQpO1xuICAgIH1cblxuICAgIHJldHVybiB0eXBlQXNzZXJ0aW9uO1xuICB9XG5cbiAgc3RhdGljIGZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KSB7XG4gICAgY29uc3Qgc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudC5nZXROb2RlKCksXG4gICAgICAgICAgdHlwZUFzc2VydGlvbiA9IHR5cGVBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlLCBjb250ZXh0KTtcblxuICAgIHJldHVybiB0eXBlQXNzZXJ0aW9uO1xuICB9XG59KTtcblxuZnVuY3Rpb24gdmFsaWRhdGVXaGVuRGVyaXZlZCh0ZXJtLCB0eXBlLCBzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICByZXR1cm4gdGVybS52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKHRlcm0sIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICBjb25zdCBlcXVpdmFsZW5jZVR5cGVzID0gZmluZEVxdWl2YWxlbmNlVHlwZXModGVybSwgY29udGV4dCksXG4gICAgICAgICAgdGVybVR5cGUgPSB0ZXJtLmdldFR5cGUoKSxcbiAgICAgICAgICB0ZXJtVHlwZXMgPSBbIC8vL1xuICAgICAgICAgICAgLi4uZXF1aXZhbGVuY2VUeXBlcyxcbiAgICAgICAgICAgIHRlcm1UeXBlXG4gICAgICAgICAgXSxcbiAgICAgICAgICB0ZXJtVHlwZUVxdWFsVG9PclN1YlR5cGVPZlR5cGUgPSB0ZXJtVHlwZXMuc29tZSgodGVybVR5cGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHRlcm1UeXBlRXF1YWxUb09yU3ViVHlwZU9mVHlwZSA9IHRlcm1UeXBlLmlzRXF1YWxUb09yU3ViVHlwZU9mKHR5cGUpO1xuXG4gICAgICAgICAgICBpZiAodGVybVR5cGVFcXVhbFRvT3JTdWJUeXBlT2ZUeXBlKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuXG4gICAgaWYgKCF0ZXJtVHlwZUVxdWFsVG9PclN1YlR5cGVPZlR5cGUpIHtcbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfVxuXG4gICAgY29uc3QgdGVybVBQcm92aXNpb25hbCA9IHRlcm0uaXNQcm92aXNpb25hbCgpO1xuXG4gICAgaWYgKHRlcm1QUHJvdmlzaW9uYWwpIHtcbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZvcndhcmQodGVybSwgY29udGV4dCwgYmFjayk7XG4gIH0sIGJhY2spO1xufVxuXG5mdW5jdGlvbiBmaW5kRXF1aXZhbGVuY2VUeXBlcyh0ZXJtLCBjb250ZXh0KSB7XG4gIGxldCBlcXVpdmFsZW5jZVR5cGVzID0gW107XG5cbiAgY29uc3QgZXF1aXZhbGVuY2VzID0gY29udGV4dC5nZXRFcXVpdmFsZW5jZXMoKSxcbiAgICAgICAgZXF1aXZhbGVuY2UgPSBlcXVpdmFsZW5jZXMuZmluZCgoZXF1aXZhbGVuY2UpID0+IHtcbiAgICAgICAgICBjb25zdCB0ZXJtRXF1YXRlcyA9IGVxdWl2YWxlbmNlLmVxdWF0ZVRlcm0odGVybSk7XG5cbiAgICAgICAgICBpZiAodGVybUVxdWF0ZXMpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSkgfHwgbnVsbDtcblxuICBpZiAoZXF1aXZhbGVuY2UgIT09IG51bGwpIHtcbiAgICBlcXVpdmFsZW5jZVR5cGVzID0gZXF1aXZhbGVuY2UuZ2V0VHlwZXMoKTtcbiAgfVxuXG4gIHJldHVybiBlcXVpdmFsZW5jZVR5cGVzO1xufVxuXG5mdW5jdGlvbiB0ZXJtRnJvbVR5cGVBc3NlcnRpb25Ob2RlKHR5cGVBc3NlcnRpb25Ob2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHRlcm1Ob2RlID0gdHlwZUFzc2VydGlvbk5vZGUuZ2V0VGVybU5vZGUoKSxcbiAgICAgICAgdGVybSA9IGNvbnRleHQuZmluZFRlcm1CeVRlcm1Ob2RlKHRlcm1Ob2RlKTtcblxuICByZXR1cm4gdGVybTtcbn1cblxuZnVuY3Rpb24gdHlwZUZyb21UeXBlQXNzZXJ0aW9uTm9kZSh0eXBlQXNzZXJ0aW9uTm9kZSwgY29udGV4dCkge1xuICBjb25zdCB0eXBlTmFtZSA9IHR5cGVBc3NlcnRpb25Ob2RlLmdldFR5cGVOYW1lKCksXG4gICAgICAgIHR5cGUgPSBjb250ZXh0LmZpbmRUeXBlQnlUeXBlTmFtZSh0eXBlTmFtZSk7XG5cbiAgcmV0dXJuIHR5cGU7XG59Il0sIm5hbWVzIjpbInVuYnJlYWthYmxlIiwiYnJlYWtQb2ludFV0aWxpdGllcyIsImFsbCIsImV4aXN0cyIsImNvbnRpbnVhdGlvblV0aWxpdGllcyIsImRlZmluZSIsIlR5cGVBc3NlcnRpb24iLCJBc3NlcnRpb24iLCJjb250ZXh0Iiwic3RyaW5nIiwibm9kZSIsImJyZWFrUG9pbnQiLCJ0ZXJtIiwidHlwZSIsImdldFRlcm0iLCJnZXRUeXBlIiwiZ2V0VHlwZUFzc2VydGlvbk5Cb2RlIiwiZ2V0Tm9kZSIsInR5cGVBc3NlcnRpb25Ob2RlIiwiZGlzY2hhcmdlIiwiZ2VuZXJhbENvbnRleHQiLCJzcGVjaWZpY0NvbnRleHQiLCJmb3J3YXJkIiwiYmFjayIsInR5cGVBc3NlcnRpb25TdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsInRlcm1Gcm9tVGVybUFuZFN1YnN0aXR1dGlvbnMiLCJkZXJpdmUiLCJzdGF0ZSIsInZhbGlkYXRlV2hlbkRlcml2ZWQiLCJkZWJ1ZyIsInZhbGlkYXRlIiwiYXNzZXJ0aW9uIiwiZmluZEFzc2VydGlvbiIsInR5cGVBc3NlcnRpb24iLCJ2YWxpZGF0ZVR5cGUiLCJiaW5kIiwidmFsaWRhdGVXaGVuRGVjbGFyZWQiLCJhc3NpZ24iLCJhZGRBc3NlcnRpb24iLCJkZWNsYXJlZCIsImlzRGVjbGFyZWQiLCJ0ZXJtVHlwZSIsInRlcm1UeXBlRXF1YWxUb1R5cGUiLCJpc0VxdWFsVG8iLCJ0ZXJtVHlwZVN1cGVyVHlwZU9mVHlwZSIsImlzU3VwZXJUeXBlT2YiLCJkZXJpdmVkIiwiaXNEZXJpdmVkIiwiYXBwbHlJbmRlcGVuZGVudGx5IiwidHJhbnNpZW50IiwiaXNUcmFuc2llbnQiLCJ2YXJpYWJsZUFzc2lnbWVudCIsInZhcmlhYmxlQXNzaWdubWVudEZyb21UeXBlQXNzZXJ0aW9uIiwiYWRkQXNzaWdubWVudCIsInRvSlNPTiIsImpzb24iLCJuYW1lIiwiZ2V0TmFtZSIsInR5cGVKU09OIiwidHlwZVRvVHlwZUpTT04iLCJmcm9tSlNPTiIsImluc3RhbnRpYXRlIiwiaW5zdGFudGlhdGVUeXBlQXNzZXJ0aW9uIiwidGVybUZyb21UeXBlQXNzZXJ0aW9uTm9kZSIsInR5cGVGcm9tVHlwZUFzc2VydGlvbk5vZGUiLCJmcm9tU3RhdGVtZW50Iiwic3RhdGVtZW50Iiwic3RhdGVtZW50Tm9kZSIsInR5cGVBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZSIsImVxdWl2YWxlbmNlVHlwZXMiLCJmaW5kRXF1aXZhbGVuY2VUeXBlcyIsInRlcm1UeXBlcyIsInRlcm1UeXBlRXF1YWxUb09yU3ViVHlwZU9mVHlwZSIsInNvbWUiLCJpc0VxdWFsVG9PclN1YlR5cGVPZiIsInRlcm1QUHJvdmlzaW9uYWwiLCJpc1Byb3Zpc2lvbmFsIiwiZXF1aXZhbGVuY2VzIiwiZ2V0RXF1aXZhbGVuY2VzIiwiZXF1aXZhbGVuY2UiLCJmaW5kIiwidGVybUVxdWF0ZXMiLCJlcXVhdGVUZXJtIiwiZ2V0VHlwZXMiLCJ0ZXJtTm9kZSIsImdldFRlcm1Ob2RlIiwiZmluZFRlcm1CeVRlcm1Ob2RlIiwidHlwZU5hbWUiLCJnZXRUeXBlTmFtZSIsImZpbmRUeXBlQnlUeXBlTmFtZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBa0JBOzs7ZUFBQTs7O2dDQWhCMkQ7a0VBRXJDOzBCQUVDO3lCQUNLO3NCQUNHOzZCQUNVOytCQUNJO3lCQUNFO3dCQUNLO3VCQUNNOzs7Ozs7QUFFMUQsTUFBTSxFQUFFQSxXQUFXLEVBQUUsR0FBR0MsbUNBQW1CLEVBQ3JDLEVBQUVDLEdBQUcsRUFBRUMsTUFBTSxFQUFFLEdBQUdDLHFDQUFxQjtNQUU3QyxXQUFlQyxJQUFBQSxnQkFBTSxFQUFD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
|
|
@@ -11,7 +11,7 @@ Object.defineProperty(exports, "default", {
|
|
|
11
11
|
const _occamlanguages = require("occam-languages");
|
|
12
12
|
const _elements = require("../elements");
|
|
13
13
|
const _state = require("../utilities/state");
|
|
14
|
-
const
|
|
14
|
+
const _constants = require("../constants");
|
|
15
15
|
const _instantiate = require("../process/instantiate");
|
|
16
16
|
const _unify = require("../process/unify");
|
|
17
17
|
const _validate = require("../process/validate");
|
|
@@ -107,9 +107,9 @@ const _default = (0, _elements.define)(class Constructor extends _occamlanguages
|
|
|
107
107
|
}
|
|
108
108
|
context.trace(`Validating the '${constructorString}' constructor's term as a variable...`);
|
|
109
109
|
return this.term.validateAsVariable(state, context, (term, context, back)=>{
|
|
110
|
-
const type = term.getType(),
|
|
111
|
-
if (
|
|
112
|
-
const typeString = type.getString(), baseTypeString =
|
|
110
|
+
const type = term.getType(), typeBaseType = type.isBaseType();
|
|
111
|
+
if (!typeBaseType) {
|
|
112
|
+
const typeString = type.getString(), baseTypeString = `${_constants.BASE_TYPE_SYMBOL}`;
|
|
113
113
|
context.debug(`The '${typeString}' type of the '${constructorString}' constructor's term is not the '${baseTypeString}' base type.`);
|
|
114
114
|
return back();
|
|
115
115
|
}
|
|
@@ -212,4 +212,4 @@ function termFromConstructorNode(constructorNode, context) {
|
|
|
212
212
|
return term;
|
|
213
213
|
}
|
|
214
214
|
|
|
215
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2NvbnN0cnVjdG9yLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBFbGVtZW50LCBicmVha1BvaW50VXRpbGl0aWVzLCBjb250aW51YXRpb25VdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgZGVjbGFyZSwgZGVzaXN0IH0gZnJvbSBcIi4uL3V0aWxpdGllcy9zdGF0ZVwiO1xuaW1wb3J0IHsgYmFzZVR5cGVGcm9tTm90aGluZyB9IGZyb20gXCIuLi91dGlsaXRpZXMvdHlwZVwiO1xuaW1wb3J0IHsgaW5zdGFudGlhdGVDb25zdHJ1Y3RvciB9IGZyb20gXCIuLi9wcm9jZXNzL2luc3RhbnRpYXRlXCI7XG5pbXBvcnQgeyB1bmlmeVRlcm1XaXRoQ29uc3RydWN0b3IgfSBmcm9tIFwiLi4vcHJvY2Vzcy91bmlmeVwiO1xuaW1wb3J0IHsgdmFsaWRhdGVUZXJtQXNDb25zdHJ1Y3RvciB9IGZyb20gXCIuLi9wcm9jZXNzL3ZhbGlkYXRlXCI7XG5pbXBvcnQgeyBpc29sYXRlLCBhdHRlbXB0LCBzZXJpYWxpc2UsIHVuc2VyaWFsaXNlLCBpbnN0YW50aWF0ZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvY29udGV4dFwiO1xuaW1wb3J0IHsgdHlwZUZyb21KU09OLCB0eXBlVG9UeXBlSlNPTiwgaHlwb3RoZXNlc0Zyb21KU09OLCBoeXBvdGhlc2VzVG9IeXBvdGhlc2VzSlNPTiB9IGZyb20gXCIuLi91dGlsaXRpZXMvanNvblwiO1xuXG5jb25zdCB7IHVuYnJlYWthYmxlIH0gPSBicmVha1BvaW50VXRpbGl0aWVzLFxuICAgICAgeyBjdXQsIGFsbCwgZXZlcnksIGV4aXN0cyB9ID0gY29udGludWF0aW9uVXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgQ29uc3RydWN0b3IgZXh0ZW5kcyBFbGVtZW50IHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB0ZXJtLCB0eXBlLCBoeXBvdGhlc2VzKSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50KTtcblxuICAgIHRoaXMudGVybSA9IHRlcm07XG4gICAgdGhpcy50eXBlID0gdHlwZTtcbiAgICB0aGlzLmh5cG90aGVzZXMgPSBoeXBvdGhlc2VzO1xuICB9XG5cbiAgZ2V0VGVybSgpIHtcbiAgICByZXR1cm4gdGhpcy50ZXJtO1xuICB9XG5cbiAgZ2V0VHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy50eXBlO1xuICB9XG5cbiAgZ2V0SHlwb3RoZXNlcygpIHtcbiAgICByZXR1cm4gdGhpcy5oeXBvdGhlc2VzO1xuICB9XG5cbiAgc2V0SHlwb3RoZXNlcyhoeXBvdGhlc2VzKSB7XG4gICAgdGhpcy5oeXBvdGhlc2VzID0gaHlwb3RoZXNlcztcbiAgfVxuXG4gIGlzSHlwb3RoZXRpY2FsKCkge1xuICAgIGNvbnN0IGh5cG90aGVzZXNMZW5ndGggPSB0aGlzLmh5cG90aGVzZXMubGVuZ3RoLFxuICAgICAgICAgIGh5cG90aGV0aWNhbCA9IChoeXBvdGhlc2VzTGVuZ3RoID4gMCk7XG5cbiAgICByZXR1cm4gaHlwb3RoZXRpY2FsO1xuICB9XG5cbiAgZ2V0Q29uc3RydWN0b3JOb2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBjb25zdHJ1Y3Rvck5vZGUgPSBub2RlOyAgLy8vXG5cbiAgICByZXR1cm4gY29uc3RydWN0b3JOb2RlO1xuICB9XG5cbiAgZ2V0U3RyaW5nKGluY2x1ZGVUeXBlID0gdHJ1ZSkge1xuICAgIGxldCBzdHJpbmc7XG5cbiAgICBzdHJpbmcgPSBzdXBlci5nZXRTdHJpbmcoKTtcblxuICAgIGlmIChpbmNsdWRlVHlwZSkge1xuICAgICAgY29uc3QgdHlwZVN0cmluZyA9IHRoaXMudHlwZS5nZXRTdHJpbmcoKTtcblxuICAgICAgc3RyaW5nID0gYCR7c3RyaW5nfS4ke3R5cGVTdHJpbmd9YDtcbiAgICB9XG5cbiAgICByZXR1cm4gc3RyaW5nO1xuICB9XG5cbiAgc2V0VHlwZSh0eXBlKSB7XG4gICAgdGhpcy50eXBlID0gdHlwZTtcbiAgfVxuXG4gIGlzTWFsZm9ybWVkKCkge1xuICAgIGNvbnN0IGNvbnN0cnVjdG9yTm9kZSA9IHRoaXMuZ2V0Q29uc3RydWN0b3JOb2RlKCksXG4gICAgICAgICAgbWFsZm9ybWVkID0gY29uc3RydWN0b3JOb2RlLmlzTWFsZm9ybWVkKCk7XG5cbiAgICByZXR1cm4gbWFsZm9ybWVkO1xuICB9XG5cbiAgdmVyaWZ5ID0gdW5icmVha2FibGUoZnVuY3Rpb24gKGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBmb3J3YXJkID0gY3V0KGZvcndhcmQsIGJhY2spOyAvLy9cblxuICAgIGNvbnN0IGluY2x1ZGVUeXBlID0gZmFsc2UsXG4gICAgICAgICAgY29uc3RydWN0b3JTdHJpbmcgPSB0aGlzLmdldFN0cmluZyhpbmNsdWRlVHlwZSk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7Y29uc3RydWN0b3JTdHJpbmd9JyBjb25zdHJ1Y3Rvci4uLmApO1xuXG4gICAgY29uc3QgbWFsZm9ybWVkID0gdGhpcy5pc01hbGZvcm1lZCgpO1xuXG4gICAgaWYgKG1hbGZvcm1lZCkge1xuICAgICAgY29udGV4dC50cmFjZShgVW5hYmxlIHRvIHZlcmlmeSB0aGUgJyR7Y29uc3RydWN0b3JTdHJpbmd9JyBjb25zdHJ1Y3RvciBiZWNhdXNlIGl0IGlzIG1hbGZvcm1lZC5gKTtcblxuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGVjbGFyZSgoc3RhdGUpID0+IHtcbiAgICAgIHJldHVybiBkZXNpc3QoKHN0YXRlKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAoY29uc3RydWN0b3IsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7Y29uc3RydWN0b3JTdHJpbmd9JyBjb25zdHJ1Y3Rvci5gKTtcblxuICAgICAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgICAgICB9LCBiYWNrKTtcbiAgICAgIH0sIHN0YXRlKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgdmFsaWRhdGUgPSB1bmJyZWFrYWJsZShmdW5jdGlvbiAoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBpbmNsdWRlVHlwZSA9IGZhbHNlLFxuICAgICAgICAgIGNvbnN0cnVjdG9yU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoaW5jbHVkZVR5cGUpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtjb25zdHJ1Y3RvclN0cmluZ30nIGNvbnN0cnVjdG9yLi4uYCk7XG5cbiAgICByZXR1cm4gaXNvbGF0ZSgoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spID0+IHtcbiAgICAgIHJldHVybiBhdHRlbXB0KChjb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IHZhbGlkYXRlVGVybUFzVmFyaWFibGUgPSB0aGlzLnZhbGlkYXRlVGVybUFzVmFyaWFibGUuYmluZCh0aGlzKSxcbiAgICAgICAgICAgICAgdmFsaWRhdGVUZXJtQXNDb25zdHJ1Y3RvciA9IHRoaXMudmFsaWRhdGVUZXJtQXNDb25zdHJ1Y3Rvci5iaW5kKHRoaXMpO1xuXG4gICAgICAgIHJldHVybiBleGlzdHMoW1xuICAgICAgICAgIHZhbGlkYXRlVGVybUFzVmFyaWFibGUsXG4gICAgICAgICAgdmFsaWRhdGVUZXJtQXNDb25zdHJ1Y3RvclxuICAgICAgICBdLCBzdGF0ZSwgY29udGV4dCwgKHN0YXRlLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICAgICAgdGhpcy5jb21taXQoY29udGV4dCk7XG5cbiAgICAgICAgICByZXR1cm4gZm9yd2FyZChiYWNrKTtcbiAgICAgICAgfSwgYmFjayk7XG4gICAgICB9LCBjb250ZXh0KTtcbiAgICB9LCBzdGF0ZSwgY29udGV4dCwgKHN0YXRlLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb25zdCBjb25zdHJ1Y3RvciA9IHRoaXM7IC8vL1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2NvbnN0cnVjdG9yU3RyaW5nfScgY29uc3RydWN0b3IuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGNvbnN0cnVjdG9yLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfSk7XG5cbiAgdmFsaWRhdGVUZXJtQXNWYXJpYWJsZShzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGluY2x1ZGVUeXBlID0gZmFsc2UsXG4gICAgICAgICAgY29uc3RydWN0b3JTdHJpbmcgPSB0aGlzLmdldFN0cmluZyhpbmNsdWRlVHlwZSk7ICAvLy9cblxuICAgIGNvbnN0IGh5cG90aGV0aWNhbCA9IHRoaXMuaXNIeXBvdGhldGljYWwoKTtcblxuICAgIGlmICghaHlwb3RoZXRpY2FsKSB7XG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH1cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2NvbnN0cnVjdG9yU3RyaW5nfScgY29uc3RydWN0b3IncyB0ZXJtIGFzIGEgdmFyaWFibGUuLi5gKTtcblxuICAgIHJldHVybiB0aGlzLnRlcm0udmFsaWRhdGVBc1ZhcmlhYmxlKHN0YXRlLCBjb250ZXh0LCAodGVybSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29uc3QgdHlwZSA9IHRlcm0uZ2V0VHlwZSgpLFxuICAgICAgICAgICAgYmFzZVR5cGUgPSBiYXNlVHlwZUZyb21Ob3RoaW5nKCk7XG5cbiAgICAgIGlmICh0eXBlICE9PSBiYXNlVHlwZSkge1xuICAgICAgICBjb25zdCB0eXBlU3RyaW5nID0gdHlwZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICAgICAgYmFzZVR5cGVTdHJpbmcgPSBiYXNlVHlwZS5nZXRTdHJpbmcoKTtcblxuICAgICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7dHlwZVN0cmluZ30nIHR5cGUgb2YgdGhlICcke2NvbnN0cnVjdG9yU3RyaW5nfScgY29uc3RydWN0b3IncyB0ZXJtIGlzIG5vdCB0aGUgJyR7YmFzZVR5cGVTdHJpbmd9JyBiYXNlIHR5cGUuYCk7XG5cbiAgICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICAgIH1cblxuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtjb25zdHJ1Y3RvclN0cmluZ30nIGNvbnN0cnVjdG9yJ3MgdGVybSBhcyBhIHZhcmlhYmxlLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChzdGF0ZSwgY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB2YWxpZGF0ZVRlcm1Bc0NvbnN0cnVjdG9yKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgaW5jbHVkZVR5cGUgPSBmYWxzZSxcbiAgICAgICAgICBjb25zdHJ1Y3RvclN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKGluY2x1ZGVUeXBlKTsgIC8vL1xuXG4gICAgY29uc3QgaHlwb3RoZXRpY2FsID0gdGhpcy5pc0h5cG90aGV0aWNhbCgpO1xuXG4gICAgaWYgKGh5cG90aGV0aWNhbCkge1xuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtjb25zdHJ1Y3RvclN0cmluZ30nIGNvbnN0cnVjdG9yJ3MgdGVybS4uLmApO1xuXG4gICAgcmV0dXJuIHZhbGlkYXRlVGVybUFzQ29uc3RydWN0b3IodGhpcy50ZXJtLCBjb250ZXh0LCAoY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29udGV4dC5hZGRUZXJtKHRoaXMudGVybSk7XG5cbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7Y29uc3RydWN0b3JTdHJpbmd9JyBjb25zdHJ1Y3RvcidzIHRlcm0uYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHN0YXRlLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHVuaWZ5VGVybSh0ZXJtLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgdGVybVN0cmluZyA9IHRlcm0uZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0uLi5gKTtcblxuICAgIGNvbnN0IHVuaWZ5VGVybVdpdGhDb25zdHJ1Y3RvciA9IHRoaXMudW5pZnlUZXJtV2l0aENvbnN0cnVjdG9yLmJpbmQodGhpcyksXG4gICAgICAgICAgZGlzY2hhcmdlSHlwb3RoZXNlc0dpdmVuVGVybSA9IHRoaXMuZGlzY2hhcmdlSHlwb3RoZXNlc0dpdmVuVGVybS5iaW5kKHRoaXMpO1xuXG4gICAgcmV0dXJuIGFsbChbXG4gICAgICBkaXNjaGFyZ2VIeXBvdGhlc2VzR2l2ZW5UZXJtLFxuICAgICAgdW5pZnlUZXJtV2l0aENvbnN0cnVjdG9yXG4gICAgXSwgdGVybSwgY29udGV4dCwgKHRlcm0sIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnN0IHByb3Zpc2lvbmFsID0gdGhpcy50eXBlLmlzUHJvdmlzaW9uYWwoKTtcblxuICAgICAgdGVybS5zZXRQcm92aXNpb25hbChwcm92aXNpb25hbCk7XG5cbiAgICAgIHRlcm0uc2V0VHlwZSh0aGlzLnR5cGUpO1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybS5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQodGVybSwgY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB1bmlmeVRlcm1XaXRoQ29uc3RydWN0b3IodGVybSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHRlcm1TdHJpbmcgPSB0ZXJtLmdldFN0cmluZygpLFxuICAgICAgICAgIGluY2x1ZGVUeXBlID0gdHJ1ZSxcbiAgICAgICAgICBjb25zdHJ1Y3RvclN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKGluY2x1ZGVUeXBlKTsgIC8vL1xuXG4gICAgY29uc3QgaHlwb3RoZXRpY2FsID0gdGhpcy5pc0h5cG90aGV0aWNhbCgpO1xuXG4gICAgaWYgKGh5cG90aGV0aWNhbCkge1xuICAgICAgcmV0dXJuIGZvcndhcmQodGVybSwgY29udGV4dCwgYmFjayk7XG4gICAgfVxuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtIHdpdGggdGhlICcke2NvbnN0cnVjdG9yU3RyaW5nfScgY29uc3RydWN0b3IuLi5gKTtcblxuICAgIGNvbnN0IGNvbnN0cnVjdG9yID0gdGhpcywgLy8vXG4gICAgICAgICAgZ2VuZXJhbENvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSwgIC8vL1xuICAgICAgICAgIHNwZWNpZmljQ29udGV4dCA9IGNvbnRleHQ7IC8vL1xuXG4gICAgcmV0dXJuIHVuaWZ5VGVybVdpdGhDb25zdHJ1Y3Rvcih0ZXJtLCBjb25zdHJ1Y3RvciwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgKGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnN0IGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQ7IC8vL1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybSB3aXRoIHRoZSAnJHtjb25zdHJ1Y3RvclN0cmluZ30nIGNvbnN0cnVjdG9yLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZCh0ZXJtLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIGRpc2NoYXJnZUh5cG90aGVzZXNHaXZlblRlcm0odGVybSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGh5cG90aGV0aWNhbCA9IHRoaXMuaXNIeXBvdGhldGljYWwoKTtcblxuICAgIGlmKCFoeXBvdGhldGljYWwpIHtcbiAgICAgIHJldHVybiBmb3J3YXJkKHRlcm0sIGNvbnRleHQsIGJhY2spO1xuICAgIH1cblxuICAgIGNvbnN0IHRlcm1TdHJpbmcgPSB0ZXJtLmdldFN0cmluZygpLFxuICAgICAgICAgIGNvbnN0cnVjdG9yU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBEaXNjaGFyZ2luZyB0aGUgJyR7Y29uc3RydWN0b3JTdHJpbmd9JyBjb25zdHJ1Y3RvcidzIGh5cG90aGVzZXMgZ2l2ZW4gdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtLi4uYCk7XG5cbiAgICByZXR1cm4gZXZlcnkodGhpcy5oeXBvdGhlc2VzLCAoaHlwb3RoZXNpcywgdGVybSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuZGlzY2hhcmdlSHlwb3RoZXNpc0dpdmVuVGVybShoeXBvdGhlc2lzLCB0ZXJtLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKTtcbiAgICB9LCB0ZXJtLCBjb250ZXh0LCAodGVybSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4uZGlzY2hhcmdlZCB0aGUgJyR7Y29uc3RydWN0b3JTdHJpbmd9JyBjb25zdHJ1Y3RvcidzIGh5cG90aGVzZXMgZ2l2ZW4gdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZCh0ZXJtLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIGRpc2NoYXJnZUh5cG90aGVzaXNHaXZlblRlcm0oaHlwb3RoZXNpcywgdGVybSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHRlcm1TdHJpbmcgPSB0ZXJtLmdldFN0cmluZygpLFxuICAgICAgICAgIGh5cG90aGVzaXNTdHJpbmcgPSBoeXBvdGhlc2lzLmdldFN0cmluZygpLFxuICAgICAgICAgIGNvbnN0cnVjdG9yU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBEaXNjaGFyZ2luZyB0aGUgJyR7Y29uc3RydWN0b3JTdHJpbmd9JyBjb25zdHJ1Y3RvcidzICcke2h5cG90aGVzaXNTdHJpbmd9JyBoeXBvdGhlc2lzIGdpdmVuIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybS4uLmApO1xuXG4gICAgaHlwb3RoZXNpcy5kaXNjaGFyZ2VHaXZlblRlcm0odGVybSwgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQudHJhY2UoYC4uLmRpc2NoYXJnZXMgdGhlICcke2NvbnN0cnVjdG9yU3RyaW5nfScgY29uc3RydWN0b3IncyAnJHtoeXBvdGhlc2lzU3RyaW5nfScgaHlwb3RoZXNpcyBnaXZlbiB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0uYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHRlcm0sIGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIGxldCBqc29uO1xuXG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgc2VyaWFsaXNlKChjb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCBpbmNsdWRlVHlwZSA9IGZhbHNlLFxuICAgICAgICAgICAgc3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoaW5jbHVkZVR5cGUpLFxuICAgICAgICAgICAgdHlwZUpTT04gPSB0eXBlVG9UeXBlSlNPTih0aGlzLnR5cGUpLFxuICAgICAgICAgICAgaHlwb3RoZXNlc0pTT04gPSBoeXBvdGhlc2VzVG9IeXBvdGhlc2VzSlNPTih0aGlzLmh5cG90aGVzZXMpLFxuICAgICAgICAgICAgdHlwZSA9IHR5cGVKU09OLCAgLy8vXG4gICAgICAgICAgICBoeXBvdGhlc2VzID0gaHlwb3RoZXNlc0pTT047ICAvLy9cblxuICAgICAganNvbiA9IHtcbiAgICAgICAgY29udGV4dCxcbiAgICAgICAgc3RyaW5nLFxuICAgICAgICB0eXBlLFxuICAgICAgICBoeXBvdGhlc2VzXG4gICAgICB9O1xuICAgIH0sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiQ29uc3RydWN0b3JcIjtcblxuICBzdGF0aWMgZnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICAgIGxldCBjb25zdHJ1Y3RvcjtcblxuICAgIGluc3RhbnRpYXRlKChjb250ZXh0KSA9PiB7XG4gICAgICB1bnNlcmlhbGlzZSgoanNvbiwgY29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCB7IHN0cmluZyB9ID0ganNvbixcbiAgICAgICAgICAgICAgY29uc3RydWN0b3JOb2RlID0gaW5zdGFudGlhdGVDb25zdHJ1Y3RvcihzdHJpbmcsIGNvbnRleHQpLFxuICAgICAgICAgICAgICBub2RlID0gY29uc3RydWN0b3JOb2RlLCAvLy9cbiAgICAgICAgICAgICAgYnJlYWtQb2ludCA9IG51bGwsXG4gICAgICAgICAgICAgIHRlcm0gPSB0ZXJtRnJvbUNvbnN0cnVjdG9yTm9kZShjb25zdHJ1Y3Rvck5vZGUsIGNvbnRleHQpLFxuICAgICAgICAgICAgICB0eXBlID0gdHlwZUZyb21KU09OKGpzb24sIGNvbnRleHQpLFxuICAgICAgICAgICAgICBoeXBvdGhlc2VzID0gaHlwb3RoZXNlc0Zyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgICAgIGNvbnN0cnVjdG9yID0gbmV3IENvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdGVybSwgdHlwZSwgaHlwb3RoZXNlcyk7XG4gICAgICB9LCBqc29uLCBjb250ZXh0KTtcbiAgICB9LCBjb250ZXh0KTtcblxuICAgIHJldHVybiBjb25zdHJ1Y3RvcjtcbiAgfVxufSk7XG5cbmZ1bmN0aW9uIHRlcm1Gcm9tQ29uc3RydWN0b3JOb2RlKGNvbnN0cnVjdG9yTm9kZSwgY29udGV4dCkge1xuICBjb25zdCB0ZXJtTm9kZSA9IGNvbnN0cnVjdG9yTm9kZS5nZXRUZXJtTm9kZSgpLFxuICAgICAgICB0ZXJtID0gY29udGV4dC5maW5kVGVybUJ5VGVybU5vZGUodGVybU5vZGUpO1xuXG4gIHJldHVybiB0ZXJtO1xufVxuIl0sIm5hbWVzIjpbInVuYnJlYWthYmxlIiwiYnJlYWtQb2ludFV0aWxpdGllcyIsImN1dCIsImFsbCIsImV2ZXJ5IiwiZXhpc3RzIiwiY29udGludWF0aW9uVXRpbGl0aWVzIiwiZGVmaW5lIiwiQ29uc3RydWN0b3IiLCJFbGVtZW50IiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJicmVha1BvaW50IiwidGVybSIsInR5cGUiLCJoeXBvdGhlc2VzIiwiZ2V0VGVybSIsImdldFR5cGUiLCJnZXRIeXBvdGhlc2VzIiwic2V0SHlwb3RoZXNlcyIsImlzSHlwb3RoZXRpY2FsIiwiaHlwb3RoZXNlc0xlbmd0aCIsImxlbmd0aCIsImh5cG90aGV0aWNhbCIsImdldENvbnN0cnVjdG9yTm9kZSIsImdldE5vZGUiLCJjb25zdHJ1Y3Rvck5vZGUiLCJnZXRTdHJpbmciLCJpbmNsdWRlVHlwZSIsInR5cGVTdHJpbmciLCJzZXRUeXBlIiwiaXNNYWxmb3JtZWQiLCJtYWxmb3JtZWQiLCJ2ZXJpZnkiLCJmb3J3YXJkIiwiYmFjayIsImNvbnN0cnVjdG9yU3RyaW5nIiwidHJhY2UiLCJkZWNsYXJlIiwic3RhdGUiLCJkZXNpc3QiLCJ2YWxpZGF0ZSIsImNvbnN0cnVjdG9yIiwiZGVidWciLCJpc29sYXRlIiwiYXR0ZW1wdCIsInZhbGlkYXRlVGVybUFzVmFyaWFibGUiLCJiaW5kIiwidmFsaWRhdGVUZXJtQXNDb25zdHJ1Y3RvciIsImNvbW1pdCIsInZhbGlkYXRlQXNWYXJpYWJsZSIsImJhc2VUeXBlIiwiYmFzZVR5cGVGcm9tTm90aGluZyIsImJhc2VUeXBlU3RyaW5nIiwiYWRkVGVybSIsInVuaWZ5VGVybSIsInRlcm1TdHJpbmciLCJ1bmlmeVRlcm1XaXRoQ29uc3RydWN0b3IiLCJkaXNjaGFyZ2VIeXBvdGhlc2VzR2l2ZW5UZXJtIiwicHJvdmlzaW9uYWwiLCJpc1Byb3Zpc2lvbmFsIiwic2V0UHJvdmlzaW9uYWwiLCJnZW5lcmFsQ29udGV4dCIsImdldENvbnRleHQiLCJzcGVjaWZpY0NvbnRleHQiLCJoeXBvdGhlc2lzIiwiZGlzY2hhcmdlSHlwb3RoZXNpc0dpdmVuVGVybSIsImh5cG90aGVzaXNTdHJpbmciLCJkaXNjaGFyZ2VHaXZlblRlcm0iLCJ0b0pTT04iLCJqc29uIiwic2VyaWFsaXNlIiwidHlwZUpTT04iLCJ0eXBlVG9UeXBlSlNPTiIsImh5cG90aGVzZXNKU09OIiwiaHlwb3RoZXNlc1RvSHlwb3RoZXNlc0pTT04iLCJuYW1lIiwiZnJvbUpTT04iLCJpbnN0YW50aWF0ZSIsInVuc2VyaWFsaXNlIiwiaW5zdGFudGlhdGVDb25zdHJ1Y3RvciIsInRlcm1Gcm9tQ29uc3RydWN0b3JOb2RlIiwidHlwZUZyb21KU09OIiwiaHlwb3RoZXNlc0Zyb21KU09OIiwidGVybU5vZGUiLCJnZXRUZXJtTm9kZSIsImZpbmRUZXJtQnlUZXJtTm9kZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBZ0JBOzs7ZUFBQTs7O2dDQWRvRTswQkFFN0M7dUJBQ1M7c0JBQ0k7NkJBQ0c7dUJBQ0U7MEJBQ0M7eUJBQzRCO3NCQUN1QjtBQUU3RixNQUFNLEVBQUVBLFdBQVcsRUFBRSxHQUFHQyxtQ0FBbUIsRUFDckMsRUFBRUMsR0FBRyxFQUFFQyxHQUFHLEVBQUVDLEtBQUssRUFBRUMsTUFBTSxFQUFFLEdBQUdDLHFDQUFxQjtNQUV6RCxXQUFlQyxJQUFBQSxnQkFBTSxFQUFDLE1BQU1DLG9CQUFvQkMsdUJBQU87SUFDckQsWUFBWUMsT0FBTyxFQUFFQyxNQUFNLEVB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
|
|
215
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2NvbnN0cnVjdG9yLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBFbGVtZW50LCBicmVha1BvaW50VXRpbGl0aWVzLCBjb250aW51YXRpb25VdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgZGVjbGFyZSwgZGVzaXN0IH0gZnJvbSBcIi4uL3V0aWxpdGllcy9zdGF0ZVwiO1xuaW1wb3J0IHsgQkFTRV9UWVBFX1NZTUJPTCB9IGZyb20gXCIuLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IGluc3RhbnRpYXRlQ29uc3RydWN0b3IgfSBmcm9tIFwiLi4vcHJvY2Vzcy9pbnN0YW50aWF0ZVwiO1xuaW1wb3J0IHsgdW5pZnlUZXJtV2l0aENvbnN0cnVjdG9yIH0gZnJvbSBcIi4uL3Byb2Nlc3MvdW5pZnlcIjtcbmltcG9ydCB7IHZhbGlkYXRlVGVybUFzQ29uc3RydWN0b3IgfSBmcm9tIFwiLi4vcHJvY2Vzcy92YWxpZGF0ZVwiO1xuaW1wb3J0IHsgaXNvbGF0ZSwgYXR0ZW1wdCwgc2VyaWFsaXNlLCB1bnNlcmlhbGlzZSwgaW5zdGFudGlhdGUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2NvbnRleHRcIjtcbmltcG9ydCB7IHR5cGVGcm9tSlNPTiwgdHlwZVRvVHlwZUpTT04sIGh5cG90aGVzZXNGcm9tSlNPTiwgaHlwb3RoZXNlc1RvSHlwb3RoZXNlc0pTT04gfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2pzb25cIjtcblxuY29uc3QgeyB1bmJyZWFrYWJsZSB9ID0gYnJlYWtQb2ludFV0aWxpdGllcyxcbiAgICAgIHsgY3V0LCBhbGwsIGV2ZXJ5LCBleGlzdHMgfSA9IGNvbnRpbnVhdGlvblV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIENvbnN0cnVjdG9yIGV4dGVuZHMgRWxlbWVudCB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdGVybSwgdHlwZSwgaHlwb3RoZXNlcykge1xuICAgIHN1cGVyKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCk7XG5cbiAgICB0aGlzLnRlcm0gPSB0ZXJtO1xuICAgIHRoaXMudHlwZSA9IHR5cGU7XG4gICAgdGhpcy5oeXBvdGhlc2VzID0gaHlwb3RoZXNlcztcbiAgfVxuXG4gIGdldFRlcm0oKSB7XG4gICAgcmV0dXJuIHRoaXMudGVybTtcbiAgfVxuXG4gIGdldFR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudHlwZTtcbiAgfVxuXG4gIGdldEh5cG90aGVzZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuaHlwb3RoZXNlcztcbiAgfVxuXG4gIHNldEh5cG90aGVzZXMoaHlwb3RoZXNlcykge1xuICAgIHRoaXMuaHlwb3RoZXNlcyA9IGh5cG90aGVzZXM7XG4gIH1cblxuICBpc0h5cG90aGV0aWNhbCgpIHtcbiAgICBjb25zdCBoeXBvdGhlc2VzTGVuZ3RoID0gdGhpcy5oeXBvdGhlc2VzLmxlbmd0aCxcbiAgICAgICAgICBoeXBvdGhldGljYWwgPSAoaHlwb3RoZXNlc0xlbmd0aCA+IDApO1xuXG4gICAgcmV0dXJuIGh5cG90aGV0aWNhbDtcbiAgfVxuXG4gIGdldENvbnN0cnVjdG9yTm9kZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5nZXROb2RlKCksXG4gICAgICAgICAgY29uc3RydWN0b3JOb2RlID0gbm9kZTsgIC8vL1xuXG4gICAgcmV0dXJuIGNvbnN0cnVjdG9yTm9kZTtcbiAgfVxuXG4gIGdldFN0cmluZyhpbmNsdWRlVHlwZSA9IHRydWUpIHtcbiAgICBsZXQgc3RyaW5nO1xuXG4gICAgc3RyaW5nID0gc3VwZXIuZ2V0U3RyaW5nKCk7XG5cbiAgICBpZiAoaW5jbHVkZVR5cGUpIHtcbiAgICAgIGNvbnN0IHR5cGVTdHJpbmcgPSB0aGlzLnR5cGUuZ2V0U3RyaW5nKCk7XG5cbiAgICAgIHN0cmluZyA9IGAke3N0cmluZ30uJHt0eXBlU3RyaW5nfWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0cmluZztcbiAgfVxuXG4gIHNldFR5cGUodHlwZSkge1xuICAgIHRoaXMudHlwZSA9IHR5cGU7XG4gIH1cblxuICBpc01hbGZvcm1lZCgpIHtcbiAgICBjb25zdCBjb25zdHJ1Y3Rvck5vZGUgPSB0aGlzLmdldENvbnN0cnVjdG9yTm9kZSgpLFxuICAgICAgICAgIG1hbGZvcm1lZCA9IGNvbnN0cnVjdG9yTm9kZS5pc01hbGZvcm1lZCgpO1xuXG4gICAgcmV0dXJuIG1hbGZvcm1lZDtcbiAgfVxuXG4gIHZlcmlmeSA9IHVuYnJlYWthYmxlKGZ1bmN0aW9uIChjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgZm9yd2FyZCA9IGN1dChmb3J3YXJkLCBiYWNrKTsgLy8vXG5cbiAgICBjb25zdCBpbmNsdWRlVHlwZSA9IGZhbHNlLFxuICAgICAgICAgIGNvbnN0cnVjdG9yU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoaW5jbHVkZVR5cGUpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke2NvbnN0cnVjdG9yU3RyaW5nfScgY29uc3RydWN0b3IuLi5gKTtcblxuICAgIGNvbnN0IG1hbGZvcm1lZCA9IHRoaXMuaXNNYWxmb3JtZWQoKTtcblxuICAgIGlmIChtYWxmb3JtZWQpIHtcbiAgICAgIGNvbnRleHQudHJhY2UoYFVuYWJsZSB0byB2ZXJpZnkgdGhlICcke2NvbnN0cnVjdG9yU3RyaW5nfScgY29uc3RydWN0b3IgYmVjYXVzZSBpdCBpcyBtYWxmb3JtZWQuYCk7XG5cbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRlY2xhcmUoKHN0YXRlKSA9PiB7XG4gICAgICByZXR1cm4gZGVzaXN0KChzdGF0ZSkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKGNvbnN0cnVjdG9yLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke2NvbnN0cnVjdG9yU3RyaW5nfScgY29uc3RydWN0b3IuYCk7XG5cbiAgICAgICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICAgICAgfSwgYmFjayk7XG4gICAgICB9LCBzdGF0ZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIHZhbGlkYXRlID0gdW5icmVha2FibGUoZnVuY3Rpb24gKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgaW5jbHVkZVR5cGUgPSBmYWxzZSxcbiAgICAgICAgICBjb25zdHJ1Y3RvclN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKGluY2x1ZGVUeXBlKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7Y29uc3RydWN0b3JTdHJpbmd9JyBjb25zdHJ1Y3Rvci4uLmApO1xuXG4gICAgcmV0dXJuIGlzb2xhdGUoKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICByZXR1cm4gYXR0ZW1wdCgoY29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCB2YWxpZGF0ZVRlcm1Bc1ZhcmlhYmxlID0gdGhpcy52YWxpZGF0ZVRlcm1Bc1ZhcmlhYmxlLmJpbmQodGhpcyksXG4gICAgICAgICAgICAgIHZhbGlkYXRlVGVybUFzQ29uc3RydWN0b3IgPSB0aGlzLnZhbGlkYXRlVGVybUFzQ29uc3RydWN0b3IuYmluZCh0aGlzKTtcblxuICAgICAgICByZXR1cm4gZXhpc3RzKFtcbiAgICAgICAgICB2YWxpZGF0ZVRlcm1Bc1ZhcmlhYmxlLFxuICAgICAgICAgIHZhbGlkYXRlVGVybUFzQ29uc3RydWN0b3JcbiAgICAgICAgXSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICAgIHRoaXMuY29tbWl0KGNvbnRleHQpO1xuXG4gICAgICAgICAgcmV0dXJuIGZvcndhcmQoYmFjayk7XG4gICAgICAgIH0sIGJhY2spO1xuICAgICAgfSwgY29udGV4dCk7XG4gICAgfSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29uc3QgY29uc3RydWN0b3IgPSB0aGlzOyAvLy9cblxuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtjb25zdHJ1Y3RvclN0cmluZ30nIGNvbnN0cnVjdG9yLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChjb25zdHJ1Y3RvciwgY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH0pO1xuXG4gIHZhbGlkYXRlVGVybUFzVmFyaWFibGUoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBpbmNsdWRlVHlwZSA9IGZhbHNlLFxuICAgICAgICAgIGNvbnN0cnVjdG9yU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoaW5jbHVkZVR5cGUpOyAgLy8vXG5cbiAgICBjb25zdCBoeXBvdGhldGljYWwgPSB0aGlzLmlzSHlwb3RoZXRpY2FsKCk7XG5cbiAgICBpZiAoIWh5cG90aGV0aWNhbCkge1xuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtjb25zdHJ1Y3RvclN0cmluZ30nIGNvbnN0cnVjdG9yJ3MgdGVybSBhcyBhIHZhcmlhYmxlLi4uYCk7XG5cbiAgICByZXR1cm4gdGhpcy50ZXJtLnZhbGlkYXRlQXNWYXJpYWJsZShzdGF0ZSwgY29udGV4dCwgKHRlcm0sIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnN0IHR5cGUgPSB0ZXJtLmdldFR5cGUoKSxcbiAgICAgICAgICAgIHR5cGVCYXNlVHlwZSA9IHR5cGUuaXNCYXNlVHlwZSgpO1xuXG4gICAgICBpZiAoIXR5cGVCYXNlVHlwZSkge1xuICAgICAgICBjb25zdCB0eXBlU3RyaW5nID0gdHlwZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICAgICAgYmFzZVR5cGVTdHJpbmcgPSBgJHtCQVNFX1RZUEVfU1lNQk9MfWA7XG5cbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke3R5cGVTdHJpbmd9JyB0eXBlIG9mIHRoZSAnJHtjb25zdHJ1Y3RvclN0cmluZ30nIGNvbnN0cnVjdG9yJ3MgdGVybSBpcyBub3QgdGhlICcke2Jhc2VUeXBlU3RyaW5nfScgYmFzZSB0eXBlLmApO1xuXG4gICAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7Y29uc3RydWN0b3JTdHJpbmd9JyBjb25zdHJ1Y3RvcidzIHRlcm0gYXMgYSB2YXJpYWJsZS5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoc3RhdGUsIGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdmFsaWRhdGVUZXJtQXNDb25zdHJ1Y3RvcihzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGluY2x1ZGVUeXBlID0gZmFsc2UsXG4gICAgICAgICAgY29uc3RydWN0b3JTdHJpbmcgPSB0aGlzLmdldFN0cmluZyhpbmNsdWRlVHlwZSk7ICAvLy9cblxuICAgIGNvbnN0IGh5cG90aGV0aWNhbCA9IHRoaXMuaXNIeXBvdGhldGljYWwoKTtcblxuICAgIGlmIChoeXBvdGhldGljYWwpIHtcbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfVxuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7Y29uc3RydWN0b3JTdHJpbmd9JyBjb25zdHJ1Y3RvcidzIHRlcm0uLi5gKTtcblxuICAgIHJldHVybiB2YWxpZGF0ZVRlcm1Bc0NvbnN0cnVjdG9yKHRoaXMudGVybSwgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQuYWRkVGVybSh0aGlzLnRlcm0pO1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2NvbnN0cnVjdG9yU3RyaW5nfScgY29uc3RydWN0b3IncyB0ZXJtLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChzdGF0ZSwgY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB1bmlmeVRlcm0odGVybSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHRlcm1TdHJpbmcgPSB0ZXJtLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtLi4uYCk7XG5cbiAgICBjb25zdCB1bmlmeVRlcm1XaXRoQ29uc3RydWN0b3IgPSB0aGlzLnVuaWZ5VGVybVdpdGhDb25zdHJ1Y3Rvci5iaW5kKHRoaXMpLFxuICAgICAgICAgIGRpc2NoYXJnZUh5cG90aGVzZXNHaXZlblRlcm0gPSB0aGlzLmRpc2NoYXJnZUh5cG90aGVzZXNHaXZlblRlcm0uYmluZCh0aGlzKTtcblxuICAgIHJldHVybiBhbGwoW1xuICAgICAgZGlzY2hhcmdlSHlwb3RoZXNlc0dpdmVuVGVybSxcbiAgICAgIHVuaWZ5VGVybVdpdGhDb25zdHJ1Y3RvclxuICAgIF0sIHRlcm0sIGNvbnRleHQsICh0ZXJtLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb25zdCBwcm92aXNpb25hbCA9IHRoaXMudHlwZS5pc1Byb3Zpc2lvbmFsKCk7XG5cbiAgICAgIHRlcm0uc2V0UHJvdmlzaW9uYWwocHJvdmlzaW9uYWwpO1xuXG4gICAgICB0ZXJtLnNldFR5cGUodGhpcy50eXBlKTtcblxuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0uYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHRlcm0sIGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdW5pZnlUZXJtV2l0aENvbnN0cnVjdG9yKHRlcm0sIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCB0ZXJtU3RyaW5nID0gdGVybS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBpbmNsdWRlVHlwZSA9IHRydWUsXG4gICAgICAgICAgY29uc3RydWN0b3JTdHJpbmcgPSB0aGlzLmdldFN0cmluZyhpbmNsdWRlVHlwZSk7ICAvLy9cblxuICAgIGNvbnN0IGh5cG90aGV0aWNhbCA9IHRoaXMuaXNIeXBvdGhldGljYWwoKTtcblxuICAgIGlmIChoeXBvdGhldGljYWwpIHtcbiAgICAgIHJldHVybiBmb3J3YXJkKHRlcm0sIGNvbnRleHQsIGJhY2spO1xuICAgIH1cblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybSB3aXRoIHRoZSAnJHtjb25zdHJ1Y3RvclN0cmluZ30nIGNvbnN0cnVjdG9yLi4uYCk7XG5cbiAgICBjb25zdCBjb25zdHJ1Y3RvciA9IHRoaXMsIC8vL1xuICAgICAgICAgIGdlbmVyYWxDb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksICAvLy9cbiAgICAgICAgICBzcGVjaWZpY0NvbnRleHQgPSBjb250ZXh0OyAvLy9cblxuICAgIHJldHVybiB1bmlmeVRlcm1XaXRoQ29uc3RydWN0b3IodGVybSwgY29uc3RydWN0b3IsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIChnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb25zdCBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0OyAvLy9cblxuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0gd2l0aCB0aGUgJyR7Y29uc3RydWN0b3JTdHJpbmd9JyBjb25zdHJ1Y3Rvci5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQodGVybSwgY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICBkaXNjaGFyZ2VIeXBvdGhlc2VzR2l2ZW5UZXJtKHRlcm0sIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBoeXBvdGhldGljYWwgPSB0aGlzLmlzSHlwb3RoZXRpY2FsKCk7XG5cbiAgICBpZighaHlwb3RoZXRpY2FsKSB7XG4gICAgICByZXR1cm4gZm9yd2FyZCh0ZXJtLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9XG5cbiAgICBjb25zdCB0ZXJtU3RyaW5nID0gdGVybS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBjb25zdHJ1Y3RvclN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgRGlzY2hhcmdpbmcgdGhlICcke2NvbnN0cnVjdG9yU3RyaW5nfScgY29uc3RydWN0b3IncyBoeXBvdGhlc2VzIGdpdmVuIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybS4uLmApO1xuXG4gICAgcmV0dXJuIGV2ZXJ5KHRoaXMuaHlwb3RoZXNlcywgKGh5cG90aGVzaXMsIHRlcm0sIGNvbnRleHQsIGZvcndhcmQsIGJhY2spID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmRpc2NoYXJnZUh5cG90aGVzaXNHaXZlblRlcm0oaHlwb3RoZXNpcywgdGVybSwgY29udGV4dCwgZm9yd2FyZCwgYmFjayk7XG4gICAgfSwgdGVybSwgY29udGV4dCwgKHRlcm0sIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLmRpc2NoYXJnZWQgdGhlICcke2NvbnN0cnVjdG9yU3RyaW5nfScgY29uc3RydWN0b3IncyBoeXBvdGhlc2VzIGdpdmVuIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybS5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQodGVybSwgY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICBkaXNjaGFyZ2VIeXBvdGhlc2lzR2l2ZW5UZXJtKGh5cG90aGVzaXMsIHRlcm0sIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCB0ZXJtU3RyaW5nID0gdGVybS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBoeXBvdGhlc2lzU3RyaW5nID0gaHlwb3RoZXNpcy5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBjb25zdHJ1Y3RvclN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgRGlzY2hhcmdpbmcgdGhlICcke2NvbnN0cnVjdG9yU3RyaW5nfScgY29uc3RydWN0b3IncyAnJHtoeXBvdGhlc2lzU3RyaW5nfScgaHlwb3RoZXNpcyBnaXZlbiB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0uLi5gKTtcblxuICAgIGh5cG90aGVzaXMuZGlzY2hhcmdlR2l2ZW5UZXJtKHRlcm0sIGNvbnRleHQsIChjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb250ZXh0LnRyYWNlKGAuLi5kaXNjaGFyZ2VzIHRoZSAnJHtjb25zdHJ1Y3RvclN0cmluZ30nIGNvbnN0cnVjdG9yJ3MgJyR7aHlwb3RoZXNpc1N0cmluZ30nIGh5cG90aGVzaXMgZ2l2ZW4gdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZCh0ZXJtLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICBsZXQganNvbjtcblxuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIHNlcmlhbGlzZSgoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3QgaW5jbHVkZVR5cGUgPSBmYWxzZSxcbiAgICAgICAgICAgIHN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKGluY2x1ZGVUeXBlKSxcbiAgICAgICAgICAgIHR5cGVKU09OID0gdHlwZVRvVHlwZUpTT04odGhpcy50eXBlKSxcbiAgICAgICAgICAgIGh5cG90aGVzZXNKU09OID0gaHlwb3RoZXNlc1RvSHlwb3RoZXNlc0pTT04odGhpcy5oeXBvdGhlc2VzKSxcbiAgICAgICAgICAgIHR5cGUgPSB0eXBlSlNPTiwgIC8vL1xuICAgICAgICAgICAgaHlwb3RoZXNlcyA9IGh5cG90aGVzZXNKU09OOyAgLy8vXG5cbiAgICAgIGpzb24gPSB7XG4gICAgICAgIGNvbnRleHQsXG4gICAgICAgIHN0cmluZyxcbiAgICAgICAgdHlwZSxcbiAgICAgICAgaHlwb3RoZXNlc1xuICAgICAgfTtcbiAgICB9LCBjb250ZXh0KTtcblxuICAgIHJldHVybiBqc29uO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIkNvbnN0cnVjdG9yXCI7XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgICBsZXQgY29uc3RydWN0b3I7XG5cbiAgICBpbnN0YW50aWF0ZSgoY29udGV4dCkgPT4ge1xuICAgICAgdW5zZXJpYWxpc2UoKGpzb24sIGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgICAgIGNvbnN0cnVjdG9yTm9kZSA9IGluc3RhbnRpYXRlQ29uc3RydWN0b3Ioc3RyaW5nLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgbm9kZSA9IGNvbnN0cnVjdG9yTm9kZSwgLy8vXG4gICAgICAgICAgICAgIGJyZWFrUG9pbnQgPSBudWxsLFxuICAgICAgICAgICAgICB0ZXJtID0gdGVybUZyb21Db25zdHJ1Y3Rvck5vZGUoY29uc3RydWN0b3JOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgdHlwZSA9IHR5cGVGcm9tSlNPTihqc29uLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgaHlwb3RoZXNlcyA9IGh5cG90aGVzZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgICAgICBjb25zdHJ1Y3RvciA9IG5ldyBDb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHRlcm0sIHR5cGUsIGh5cG90aGVzZXMpO1xuICAgICAgfSwganNvbiwgY29udGV4dCk7XG4gICAgfSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gY29uc3RydWN0b3I7XG4gIH1cbn0pO1xuXG5mdW5jdGlvbiB0ZXJtRnJvbUNvbnN0cnVjdG9yTm9kZShjb25zdHJ1Y3Rvck5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgdGVybU5vZGUgPSBjb25zdHJ1Y3Rvck5vZGUuZ2V0VGVybU5vZGUoKSxcbiAgICAgICAgdGVybSA9IGNvbnRleHQuZmluZFRlcm1CeVRlcm1Ob2RlKHRlcm1Ob2RlKTtcblxuICByZXR1cm4gdGVybTtcbn1cbiJdLCJuYW1lcyI6WyJ1bmJyZWFrYWJsZSIsImJyZWFrUG9pbnRVdGlsaXRpZXMiLCJjdXQiLCJhbGwiLCJldmVyeSIsImV4aXN0cyIsImNvbnRpbnVhdGlvblV0aWxpdGllcyIsImRlZmluZSIsIkNvbnN0cnVjdG9yIiwiRWxlbWVudCIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsInRlcm0iLCJ0eXBlIiwiaHlwb3RoZXNlcyIsImdldFRlcm0iLCJnZXRUeXBlIiwiZ2V0SHlwb3RoZXNlcyIsInNldEh5cG90aGVzZXMiLCJpc0h5cG90aGV0aWNhbCIsImh5cG90aGVzZXNMZW5ndGgiLCJsZW5ndGgiLCJoeXBvdGhldGljYWwiLCJnZXRDb25zdHJ1Y3Rvck5vZGUiLCJnZXROb2RlIiwiY29uc3RydWN0b3JOb2RlIiwiZ2V0U3RyaW5nIiwiaW5jbHVkZVR5cGUiLCJ0eXBlU3RyaW5nIiwic2V0VHlwZSIsImlzTWFsZm9ybWVkIiwibWFsZm9ybWVkIiwidmVyaWZ5IiwiZm9yd2FyZCIsImJhY2siLCJjb25zdHJ1Y3RvclN0cmluZyIsInRyYWNlIiwiZGVjbGFyZSIsInN0YXRlIiwiZGVzaXN0IiwidmFsaWRhdGUiLCJjb25zdHJ1Y3RvciIsImRlYnVnIiwiaXNvbGF0ZSIsImF0dGVtcHQiLCJ2YWxpZGF0ZVRlcm1Bc1ZhcmlhYmxlIiwiYmluZCIsInZhbGlkYXRlVGVybUFzQ29uc3RydWN0b3IiLCJjb21taXQiLCJ2YWxpZGF0ZUFzVmFyaWFibGUiLCJ0eXBlQmFzZVR5cGUiLCJpc0Jhc2VUeXBlIiwiYmFzZVR5cGVTdHJpbmciLCJCQVNFX1RZUEVfU1lNQk9MIiwiYWRkVGVybSIsInVuaWZ5VGVybSIsInRlcm1TdHJpbmciLCJ1bmlmeVRlcm1XaXRoQ29uc3RydWN0b3IiLCJkaXNjaGFyZ2VIeXBvdGhlc2VzR2l2ZW5UZXJtIiwicHJvdmlzaW9uYWwiLCJpc1Byb3Zpc2lvbmFsIiwic2V0UHJvdmlzaW9uYWwiLCJnZW5lcmFsQ29udGV4dCIsImdldENvbnRleHQiLCJzcGVjaWZpY0NvbnRleHQiLCJoeXBvdGhlc2lzIiwiZGlzY2hhcmdlSHlwb3RoZXNpc0dpdmVuVGVybSIsImh5cG90aGVzaXNTdHJpbmciLCJkaXNjaGFyZ2VHaXZlblRlcm0iLCJ0b0pTT04iLCJqc29uIiwic2VyaWFsaXNlIiwidHlwZUpTT04iLCJ0eXBlVG9UeXBlSlNPTiIsImh5cG90aGVzZXNKU09OIiwiaHlwb3RoZXNlc1RvSHlwb3RoZXNlc0pTT04iLCJuYW1lIiwiZnJvbUpTT04iLCJpbnN0YW50aWF0ZSIsInVuc2VyaWFsaXNlIiwiaW5zdGFudGlhdGVDb25zdHJ1Y3RvciIsInRlcm1Gcm9tQ29uc3RydWN0b3JOb2RlIiwidHlwZUZyb21KU09OIiwiaHlwb3RoZXNlc0Zyb21KU09OIiwidGVybU5vZGUiLCJnZXRUZXJtTm9kZSIsImZpbmRUZXJtQnlUZXJtTm9kZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBZ0JBOzs7ZUFBQTs7O2dDQWRvRTswQkFFN0M7dUJBQ1M7MkJBQ0M7NkJBQ007dUJBQ0U7MEJBQ0M7eUJBQzRCO3NCQUN1QjtBQUU3RixNQUFNLEVBQUVBLFdBQVcsRUFBRSxHQUFHQyxtQ0FBbUIsRUFDckMsRUFBRUMsR0FBRyxFQUFFQyxHQUFHLEVBQUVDLEtBQUssRUFBRUMsTUFBTSxFQUFFLEdBQUdDLHFDQUFxQjtNQUV6RCxXQUFlQyxJQUFBQSxnQkFBTSxFQUFDLE1BQU1DLG9CQUFvQkMsdUJBQU87SUFDckQsWUFBWUMsT0FBTyxFQUFFQyxNQUFN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
|
package/lib/element/equality.js
CHANGED
|
@@ -98,8 +98,8 @@ const _default = (0, _elements.define)(class Equality extends _occamlanguages.El
|
|
|
98
98
|
validateLeftTerm,
|
|
99
99
|
validateRightTerm
|
|
100
100
|
], state, context, (state, context, back)=>{
|
|
101
|
-
const leftTermType = this.leftTerm.getType(), rightTermType = this.rightTerm.getType(),
|
|
102
|
-
if (!
|
|
101
|
+
const leftTermType = this.leftTerm.getType(), rightTermType = this.rightTerm.getType(), leftTermTypeJoinedToRightTermType = leftTermType.isJoinedTo(rightTermType);
|
|
102
|
+
if (!leftTermTypeJoinedToRightTermType) {
|
|
103
103
|
return back();
|
|
104
104
|
}
|
|
105
105
|
context.debug(`...validated the '${equalityString}' equality's terms.`);
|
|
@@ -204,4 +204,4 @@ function rightTermFromEqualityNode(equalityNode, context) {
|
|
|
204
204
|
return rightTerm;
|
|
205
205
|
}
|
|
206
206
|
|
|
207
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2VxdWFsaXR5LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBFbGVtZW50LCBicmVha1BvaW50VXRpbGl0aWVzLCBjb250aW51YXRpb25VdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgZXF1YXRlVGVybXMgfSBmcm9tIFwiLi4vcHJvY2Vzcy9lcXVhdGVcIjtcbmltcG9ydCB7IGluc3RhbnRpYXRlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9jb250ZXh0XCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZUVxdWFsaXR5IH0gZnJvbSBcIi4uL3Byb2Nlc3MvaW5zdGFudGlhdGVcIjtcbmltcG9ydCB7IGVxdWFsaXR5RnJvbVN0YXRlbWVudE5vZGUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2VsZW1lbnRcIjtcbmltcG9ydCB7IGlzRGVyaXZlZCwgaXNEZWNsYXJlZCwgaXNUcmFuc2llbnQgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3N0YXRlXCI7XG5pbXBvcnQgeyBlcXVhbGl0eUFzc2lnbm1lbnRGcm9tRXF1YWxpdHksIGxlZnRWYXJpYWJsZUFzc2lnbm1lbnRGcm9tRXF1YWxpdHksIHJpZ2h0VmFyaWFibGVBc3NpZ25tZW50RnJvbUVxdWFsaXR5IH0gZnJvbSBcIi4uL3Byb2Nlc3MvYXNzaWduXCI7XG5cbmNvbnN0IHsgdW5icmVha2FibGUgfSA9IGJyZWFrUG9pbnRVdGlsaXRpZXMsXG4gICAgICB7IGFsbCwgZXhpc3RzIH0gPSBjb250aW51YXRpb25VdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBFcXVhbGl0eSBleHRlbmRzIEVsZW1lbnQge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIG5lZ2F0ZWQsIGxlZnRUZXJtLCByaWdodFRlcm0pIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy5uZWdhdGVkID0gbmVnYXRlZDtcbiAgICB0aGlzLmxlZnRUZXJtID0gbGVmdFRlcm07XG4gICAgdGhpcy5yaWdodFRlcm0gPSByaWdodFRlcm07XG4gIH1cblxuICBpc05lZ2F0ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMubmVnYXRlZDtcbiAgfVxuXG4gIGdldExlZnRUZXJtKCkge1xuICAgIHJldHVybiB0aGlzLmxlZnRUZXJtO1xuICB9XG5cbiAgZ2V0UmlnaHRUZXJtKCkge1xuICAgIHJldHVybiB0aGlzLnJpZ2h0VGVybTtcbiAgfVxuXG4gIGdldEVxdWFsaXR5Tm9kZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5nZXROb2RlKCksXG4gICAgICAgICAgZXF1YWxpdHlOZGUgPSBub2RlOyAvLy9cblxuICAgIHJldHVybiBlcXVhbGl0eU5kZTtcbiAgfVxuXG4gIGdldExlZnRUZXJtTm9kZSgpIHtcbiAgICBjb25zdCBsZWZ0VGVybU5vZGUgPSB0aGlzLmxlZnRUZXJtLmdldE5vZGUoKTtcblxuICAgIHJldHVybiBsZWZ0VGVybU5vZGU7XG4gIH1cblxuICBnZXRSaWdodFRlcm1Ob2RlKCkge1xuICAgIGNvbnN0IHJpZ2h0VGVybU5vZGUgPSB0aGlzLnJpZ2h0VGVybS5nZXROb2RlKCk7XG5cbiAgICByZXR1cm4gcmlnaHRUZXJtTm9kZTtcbiAgfVxuXG4gIGdldFRlcm1zKCkge1xuICAgIGNvbnN0IHRlcm1zID0gW1xuICAgICAgdGhpcy5sZWZ0VGVybSxcbiAgICAgIHRoaXMucmlnaHRUZXJtXG4gICAgXTtcblxuICAgIHJldHVybiB0ZXJtcztcbiAgfVxuXG4gIG1hdGNoRXF1YWxpdHlOb2RlKGVxdWFsaXR5Tm9kZSkge1xuICAgIGNvbnN0IG5vZGUgPSBlcXVhbGl0eU5vZGUsIC8vL1xuICAgICAgICAgIG5vZGVNYXRjaGVzID0gdGhpcy5tYXRjaE5vZGUobm9kZSksXG4gICAgICAgICAgZXF1YWxpdHlOb2RlTWF0Y2hlcyA9IG5vZGVNYXRjaGVzOyAvLy9cblxuICAgIHJldHVybiBlcXVhbGl0eU5vZGVNYXRjaGVzO1xuICB9XG5cbiAgaXNFcXVhbFRvKGVxdWFsaXR5KSB7XG4gICAgY29uc3QgZXF1YWxpdHlOb2RlID0gZXF1YWxpdHkuZ2V0Tm9kZSgpLFxuICAgICAgICAgIGVxdWFsaXR5Tm9kZU1hdGNoZXMgPSB0aGlzLm1hdGNoRXF1YWxpdHlOb2RlKGVxdWFsaXR5Tm9kZSksXG4gICAgICAgICAgZXF1YWxUbyA9IGVxdWFsaXR5Tm9kZU1hdGNoZXM7ICAvLy9cblxuICAgIHJldHVybiBlcXVhbFRvO1xuICB9XG5cbiAgZmluZEVxdWFsaXR5KGNvbnRleHQpIHtcbiAgICBjb25zdCBlcXVhbGl0eU5vZGUgPSB0aGlzLmdldEVxdWFsaXR5Tm9kZSgpLFxuICAgICAgICAgIGVxdWFsaXR5ID0gY29udGV4dC5maW5kRXF1YWxpdHlCeUVxdWFsaXR5Tm9kZShlcXVhbGl0eU5vZGUpO1xuXG4gICAgcmV0dXJuIGVxdWFsaXR5O1xuICB9XG5cbiAgdmFsaWRhdGUgPSB1bmJyZWFrYWJsZShmdW5jdGlvbiAoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBsZXQgZXF1YWxpdHk7XG5cbiAgICBjb25zdCBlcXVhbGl0eVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2VxdWFsaXR5U3RyaW5nfScgZXF1YWxpdHkuLi5gKTtcblxuICAgIGVxdWFsaXR5ID0gdGhpcy5maW5kRXF1YWxpdHkoY29udGV4dCk7XG5cbiAgICBpZiAoZXF1YWxpdHkgIT09IG51bGwpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHtlcXVhbGl0eVN0cmluZ30nIGVxdWFsaXR5IGlzIGFscmVhZHkgcHJlc2VudC5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoZXF1YWxpdHksIGNvbnRleHQsIGJhY2spO1xuICAgIH1cblxuICAgIGNvbnN0IHZhbGlkYXRlVGVybXMgPSB0aGlzLnZhbGlkYXRlVGVybXMuYmluZCh0aGlzKTtcblxuICAgIHJldHVybiBhbGwoW1xuICAgICAgdmFsaWRhdGVUZXJtc1xuICAgIF0sIHN0YXRlLCBjb250ZXh0LCAoc3RhdGUsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnN0IHZhbGlkYXRlV2hlbkRlY2xhcmVkID0gdGhpcy52YWxpZGF0ZVdoZW5EZWNsYXJlZC5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgdmFsaWRhdGVXaGVuRGVyaXZlZCA9IHRoaXMudmFsaWRhdGVXaGVuRGVyaXZlZC5iaW5kKHRoaXMpO1xuXG4gICAgICByZXR1cm4gZXhpc3RzKFtcbiAgICAgICAgdmFsaWRhdGVXaGVuRGVjbGFyZWQsXG4gICAgICAgIHZhbGlkYXRlV2hlbkRlcml2ZWRcbiAgICAgIF0sIHN0YXRlLCBjb250ZXh0LCAoc3RhdGUsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgZXF1YWxpdHkgPSB0aGlzOyAvLy9cblxuICAgICAgICB0aGlzLmFzc2lnbihzdGF0ZSwgY29udGV4dCk7XG5cbiAgICAgICAgY29udGV4dC5hZGRFcXVhbGl0eShlcXVhbGl0eSk7XG5cbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtlcXVhbGl0eVN0cmluZ31lcXVhbGl0eS5gKTtcblxuICAgICAgICByZXR1cm4gZm9yd2FyZChlcXVhbGl0eSwgY29udGV4dCwgYmFjayk7XG4gICAgICB9LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfSk7XG5cbiAgdmFsaWRhdGVUZXJtcyhzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGVxdWFsaXR5U3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtlcXVhbGl0eVN0cmluZ30nIGVxdWFsaXR5J3MgdGVybXMuLi5gKTtcblxuICAgIGNvbnN0IHZhbGlkYXRlTGVmdFRlcm0gPSB0aGlzLnZhbGlkYXRlTGVmdFRlcm0uYmluZCh0aGlzKSxcbiAgICAgICAgICB2YWxpZGF0ZVJpZ2h0VGVybSA9IHRoaXMudmFsaWRhdGVSaWdodFRlcm0uYmluZCh0aGlzKTtcblxuICAgIHJldHVybiBhbGwoW1xuICAgICAgdmFsaWRhdGVMZWZ0VGVybSxcbiAgICAgIHZhbGlkYXRlUmlnaHRUZXJtXG4gICAgXSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29uc3QgbGVmdFRlcm1UeXBlID0gdGhpcy5sZWZ0VGVybS5nZXRUeXBlKCksXG4gICAgICAgICAgICByaWdodFRlcm1UeXBlID0gdGhpcy5yaWdodFRlcm0uZ2V0VHlwZSgpLFxuICAgICAgICAgICAgbGVmdFRlcm1UeXBlQmFzZVR5cGUgPSBsZWZ0VGVybVR5cGUuaXNCYXNlVHlwZSgpLFxuICAgICAgICAgICAgcmlnaHRUZXJtVHlwZUJhc2VUeXBlID0gcmlnaHRUZXJtVHlwZS5pc0Jhc2VUeXBlKCksXG4gICAgICAgICAgICBsZWZ0VGVybVR5cGVKb2luZWRUb1JpZ2h0VGVybVR5cGUgPSBsZWZ0VGVybVR5cGUuaXNKb2luZWRUbyhyaWdodFRlcm1UeXBlKTtcblxuICAgICAgaWYgKCFsZWZ0VGVybVR5cGVCYXNlVHlwZSAmJiAhcmlnaHRUZXJtVHlwZUJhc2VUeXBlICYmICFsZWZ0VGVybVR5cGVKb2luZWRUb1JpZ2h0VGVybVR5cGUpIHtcbiAgICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICAgIH1cblxuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtlcXVhbGl0eVN0cmluZ30nIGVxdWFsaXR5J3MgdGVybXMuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHN0YXRlLCBjb250ZXh0LCBiYWNrKTtcblxuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdmFsaWRhdGVMZWZ0VGVybShzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGVxdWFsaXR5U3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtlcXVhbGl0eVN0cmluZ30nIGVxdWFsaXR5J3MgbGVmdCB0ZXJtLi4uYCk7XG5cbiAgICByZXR1cm4gdGhpcy5sZWZ0VGVybS52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKGxlZnRUZXJtLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICB0aGlzLmxlZnRUZXJtID0gbGVmdFRlcm07XG5cbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7ZXF1YWxpdHlTdHJpbmd9JyBlcXVhbGl0eSdzIGxlZnQgdGVybS5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoc3RhdGUsIGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdmFsaWRhdGVSaWdodFRlcm0oc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBlcXVhbGl0eVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7ZXF1YWxpdHlTdHJpbmd9JyBlcXVhbGl0eSdzIHJpZ2h0IHRlcm0uLi5gKTtcblxuICAgIHJldHVybiB0aGlzLnJpZ2h0VGVybS52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKHJpZ2h0VGVybSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgdGhpcy5yaWdodFRlcm0gPSByaWdodFRlcm07XG5cbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7ZXF1YWxpdHlTdHJpbmd9JyBlcXVhbGl0eSdzIHJpZ2h0IHRlcm0uYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHN0YXRlLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHZhbGlkYXRlV2hlbkRlY2xhcmVkKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgZGVjbGFyZWQgPSBpc0RlY2xhcmVkKHN0YXRlKTtcblxuICAgIGlmICghZGVjbGFyZWQpIHtcbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfVxuXG4gICAgY29uc3QgZXF1YWxpdHlTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2VxdWFsaXR5U3RyaW5nfScgZGVjbGFyZWQgZXF1YWxpdHkuLi5gKTtcblxuICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7ZXF1YWxpdHlTdHJpbmd9JyBkZWNsYXJlZCBlcXVhbGl0eS5gKTtcblxuICAgIHJldHVybiBmb3J3YXJkKHN0YXRlLCBjb250ZXh0LCBiYWNrKTtcbiAgfVxuXG4gIHZhbGlkYXRlV2hlbkRlcml2ZWQoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBkZXJpdmVkID0gaXNEZXJpdmVkKHN0YXRlKTtcblxuICAgIGlmICghZGVyaXZlZCkge1xuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICBjb25zdCBlcXVhbGl0eVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7ZXF1YWxpdHlTdHJpbmd9JyBkZXJpdmVkIGVxdWFsaXR5Li4uYCk7XG5cbiAgICBjb25zdCB0ZXJtc0VxdWF0ZSA9IGVxdWF0ZVRlcm1zKHRoaXMubGVmdFRlcm0sIHRoaXMucmlnaHRUZXJtLCBjb250ZXh0KTtcblxuICAgIGlmICgodGhpcy5uZWdhdGVkICYmIHRlcm1zRXF1YXRlKSB8fCAoIXRoaXMubmVnYXRlZCAmJiAhdGVybXNFcXVhdGUpKSB7XG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH1cblxuICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7ZXF1YWxpdHlTdHJpbmd9JyBkZXJpdmVkIGVxdWFsaXR5LmApO1xuXG4gICAgcmV0dXJuIGZvcndhcmQoc3RhdGUsIGNvbnRleHQsIGJhY2spO1xuICB9XG5cbiAgYXNzaWduKHN0YXRlLCBjb250ZXh0KSB7XG4gICAgY29uc3QgdHJhbnNpZW50ID0gaXNUcmFuc2llbnQoc3RhdGUpO1xuXG4gICAgaWYgKHRyYW5zaWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG5lZ2F0ZWQgPSB0aGlzLmlzTmVnYXRlZCgpO1xuXG4gICAgaWYgKG5lZ2F0ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBlcXVhbGl0eSA9IHRoaXM7ICAvLy9cblxuICAgIGNvbnN0IGVxdWFsaXR5QXNzaWdubWVudCA9IGVxdWFsaXR5QXNzaWdubWVudEZyb21FcXVhbGl0eShlcXVhbGl0eSwgY29udGV4dCk7XG5cbiAgICBjb250ZXh0LmFkZEFzc2lnbm1lbnQoZXF1YWxpdHlBc3NpZ25tZW50KTtcblxuICAgIGNvbnN0IGRlcml2ZWQgPSBpc0Rlcml2ZWQoc3RhdGUpO1xuXG4gICAgaWYgKGRlcml2ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBsZWZ0VmFyaWFibGVBc3NpZ25tZW50ID0gbGVmdFZhcmlhYmxlQXNzaWdubWVudEZyb21FcXVhbGl0eShlcXVhbGl0eSwgY29udGV4dCksXG4gICAgICAgICAgcmlnaHRWYXJpYWJsZUFzc2lnbm1lbnQgPSByaWdodFZhcmlhYmxlQXNzaWdubWVudEZyb21FcXVhbGl0eShlcXVhbGl0eSwgY29udGV4dCk7XG5cbiAgICBjb250ZXh0LmFkZEFzc2lnbm1lbnQobGVmdFZhcmlhYmxlQXNzaWdubWVudCk7XG5cbiAgICBjb250ZXh0LmFkZEFzc2lnbm1lbnQocmlnaHRWYXJpYWJsZUFzc2lnbm1lbnQpO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIGxldCBqc29uO1xuXG4gICAgY29uc3Qgc3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTtcblxuICAgIGpzb24gPSB7XG4gICAgICBzdHJpbmdcbiAgICB9O1xuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiRXF1YWxpdHlcIjtcblxuICBzdGF0aWMgZnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICAgIGxldCBlcXVhbGl0eTtcblxuICAgIGluc3RhbnRpYXRlKChjb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCB7IHN0cmluZyB9ID0ganNvbixcbiAgICAgICAgICAgIGVxdWFsaXR5Tm9kZSA9IGluc3RhbnRpYXRlRXF1YWxpdHkoc3RyaW5nLCBjb250ZXh0KSxcbiAgICAgICAgICAgIG5vZGUgPSBlcXVhbGl0eU5vZGUsICAvLy9cbiAgICAgICAgICAgIGJyZWFrUG9pbnQgPSBudWxsLFxuICAgICAgICAgICAgbmVnYXRlZCA9IG5lZ2F0ZWRGcm9tRXF1YWxpdHlOb2RlKGVxdWFsaXR5Tm9kZSwgY29udGV4dCksXG4gICAgICAgICAgICBsZWZ0VGVybSA9IGxlZnRUZXJtRnJvbUVxdWFsaXR5Tm9kZShlcXVhbGl0eU5vZGUsIGNvbnRleHQpLFxuICAgICAgICAgICAgcmlnaHRUZXJtID0gcmlnaHRUZXJtRnJvbUVxdWFsaXR5Tm9kZShlcXVhbGl0eU5vZGUsIGNvbnRleHQpO1xuXG4gICAgICBjb250ZXh0ID0gbnVsbDtcblxuICAgICAgZXF1YWxpdHkgPSBuZXcgRXF1YWxpdHkoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCBuZWdhdGVkLCBsZWZ0VGVybSwgcmlnaHRUZXJtKTtcbiAgICB9LCBjb250ZXh0KTtcblxuICAgIHJldHVybiBlcXVhbGl0eTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCkge1xuICAgIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnQuZ2V0Tm9kZSgpLFxuICAgICAgICAgIGVxdWFsaXR5ID0gZXF1YWxpdHlGcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBlcXVhbGl0eTtcbiAgfVxufSk7XG5cbmZ1bmN0aW9uIG5lZ2F0ZWRGcm9tRXF1YWxpdHlOb2RlKGVxdWFsaXR5Tm9kZSwgY29udGV4dCkge1xuICBjb25zdCBuZWdhdGVkID0gZXF1YWxpdHlOb2RlLmlzTmVnYXRlZCgpO1xuXG4gIHJldHVybiBuZWdhdGVkO1xufVxuXG5mdW5jdGlvbiBsZWZ0VGVybUZyb21FcXVhbGl0eU5vZGUoZXF1YWxpdHlOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IGxlZnRUZXJtTm9kZSA9IGVxdWFsaXR5Tm9kZS5nZXRMZWZ0VGVybU5vZGUoKSxcbiAgICAgICAgbGVmdFRlcm0gPSBjb250ZXh0LmZpbmRUZXJtQnlUZXJtTm9kZShsZWZ0VGVybU5vZGUpO1xuXG4gIHJldHVybiBsZWZ0VGVybTtcbn1cblxuZnVuY3Rpb24gcmlnaHRUZXJtRnJvbUVxdWFsaXR5Tm9kZShlcXVhbGl0eU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgcmlnaHRUZXJtTm9kZSA9IGVxdWFsaXR5Tm9kZS5nZXRMZWZ0VGVybU5vZGUoKSxcbiAgICAgICAgcmlnaHRUZXJtID0gY29udGV4dC5maW5kVGVybUJ5VGVybU5vZGUocmlnaHRUZXJtTm9kZSk7XG5cbiAgcmV0dXJuIHJpZ2h0VGVybTtcbn1cbiJdLCJuYW1lcyI6WyJ1bmJyZWFrYWJsZSIsImJyZWFrUG9pbnRVdGlsaXRpZXMiLCJhbGwiLCJleGlzdHMiLCJjb250aW51YXRpb25VdGlsaXRpZXMiLCJkZWZpbmUiLCJFcXVhbGl0eSIsIkVsZW1lbnQiLCJjb250ZXh0Iiwic3RyaW5nIiwibm9kZSIsImJyZWFrUG9pbnQiLCJuZWdhdGVkIiwibGVmdFRlcm0iLCJyaWdodFRlcm0iLCJpc05lZ2F0ZWQiLCJnZXRMZWZ0VGVybSIsImdldFJpZ2h0VGVybSIsImdldEVxdWFsaXR5Tm9kZSIsImdldE5vZGUiLCJlcXVhbGl0eU5kZSIsImdldExlZnRUZXJtTm9kZSIsImxlZnRUZXJtTm9kZSIsImdldFJpZ2h0VGVybU5vZGUiLCJyaWdodFRlcm1Ob2RlIiwiZ2V0VGVybXMiLCJ0ZXJtcyIsIm1hdGNoRXF1YWxpdHlOb2RlIiwiZXF1YWxpdHlOb2RlIiwibm9kZU1hdGNoZXMiLCJtYXRjaE5vZGUiLCJlcXVhbGl0eU5vZGVNYXRjaGVzIiwiaXNFcXVhbFRvIiwiZXF1YWxpdHkiLCJlcXVhbFRvIiwiZmluZEVxdWFsaXR5IiwiZmluZEVxdWFsaXR5QnlFcXVhbGl0eU5vZGUiLCJ2YWxpZGF0ZSIsInN0YXRlIiwiZm9yd2FyZCIsImJhY2siLCJlcXVhbGl0eVN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwiZGVidWciLCJ2YWxpZGF0ZVRlcm1zIiwiYmluZCIsInZhbGlkYXRlV2hlbkRlY2xhcmVkIiwidmFsaWRhdGVXaGVuRGVyaXZlZCIsImFzc2lnbiIsImFkZEVxdWFsaXR5IiwidmFsaWRhdGVMZWZ0VGVybSIsInZhbGlkYXRlUmlnaHRUZXJtIiwibGVmdFRlcm1UeXBlIiwiZ2V0VHlwZSIsInJpZ2h0VGVybVR5cGUiLCJsZWZ0VGVybVR5cGVCYXNlVHlwZSIsImlzQmFzZVR5cGUiLCJyaWdodFRlcm1UeXBlQmFzZVR5cGUiLCJsZWZ0VGVybVR5cGVKb2luZWRUb1JpZ2h0VGVybVR5cGUiLCJpc0pvaW5lZFRvIiwiZGVjbGFyZWQiLCJpc0RlY2xhcmVkIiwiZGVyaXZlZCIsImlzRGVyaXZlZCIsInRlcm1zRXF1YXRlIiwiZXF1YXRlVGVybXMiLCJ0cmFuc2llbnQiLCJpc1RyYW5zaWVudCIsImVxdWFsaXR5QXNzaWdubWVudCIsImVxdWFsaXR5QXNzaWdubWVudEZyb21FcXVhbGl0eSIsImFkZEFzc2lnbm1lbnQiLCJsZWZ0VmFyaWFibGVBc3NpZ25tZW50IiwibGVmdFZhcmlhYmxlQXNzaWdubWVudEZyb21FcXVhbGl0eSIsInJpZ2h0VmFyaWFibGVBc3NpZ25tZW50IiwicmlnaHRWYXJpYWJsZUFzc2lnbm1lbnRGcm9tRXF1YWxpdHkiLCJ0b0pTT04iLCJqc29uIiwibmFtZSIsImZyb21KU09OIiwiaW5zdGFudGlhdGUiLCJpbnN0YW50aWF0ZUVxdWFsaXR5IiwibmVnYXRlZEZyb21FcXVhbGl0eU5vZGUiLCJsZWZ0VGVybUZyb21FcXVhbGl0eU5vZGUiLCJyaWdodFRlcm1Gcm9tRXF1YWxpdHlOb2RlIiwiZnJvbVN0YXRlbWVudCIsInN0YXRlbWVudCIsInN0YXRlbWVudE5vZGUiLCJlcXVhbGl0eUZyb21TdGF0ZW1lbnROb2RlIiwiZmluZFRlcm1CeVRlcm1Ob2RlIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFlQTs7O2VBQUE7OztnQ0Fib0U7MEJBRTdDO3dCQUNLO3lCQUNBOzZCQUNRO3lCQUNNO3VCQUNTO3dCQUNxRTtBQUV4SCxNQUFNLEVBQUVBLFdBQVcsRUFBRSxHQUFHQyxtQ0FBbUIsRUFDckMsRUFBRUMsR0FBRyxFQUFFQyxNQUFNLEVBQUUsR0FBR0MscUNBQXFCO01BRTdDLFdBQWVDLElBQUFBLGdCQUFNLEVBQUMsTUFBTUMsaUJBQWlCQyx1QkFBTztJQUNsRCxZQUFZQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxVQUFVLEVBQUVDLE9BQU8sRUFBRUMsUUFBUSxFQUFFQyxTQUFTLENBQUU7UUFDM0UsS0FBSyxDQUFDTixTQUFTQyxRQUFRQyxNQUFNQztRQUU3QixJQUFJLENBQUNDLE9BQU8sR0FBR0E7UUFDZixJQUFJLENBQUNDLFFBQVEsR0FBR0E7UUFDaEIsSUFBSSxDQUFDQyxTQUFTLEdBQUdBO0lBQ25CO0lBRUFDLFlBQVk7UUFDVixPQUFPLElBQUksQ0FBQ0gsT0FBTztJQUNyQjtJQUVBSSxjQUFjO1FBQ1osT0FBTyxJQUFJLENBQUNILFFBQVE7SUFDdEI7SUFFQUksZUFBZTtRQUNiLE9BQU8sSUFBSSxDQUFDSCxTQUFTO0lBQ3ZCO0lBRUFJLGtCQUFrQjtRQUNoQixNQUFNUixPQUFPLElBQUksQ0FBQ1MsT0FBTyxJQUNuQkMsY0FB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
|
|
207
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2VxdWFsaXR5LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBFbGVtZW50LCBicmVha1BvaW50VXRpbGl0aWVzLCBjb250aW51YXRpb25VdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgZXF1YXRlVGVybXMgfSBmcm9tIFwiLi4vcHJvY2Vzcy9lcXVhdGVcIjtcbmltcG9ydCB7IGluc3RhbnRpYXRlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9jb250ZXh0XCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZUVxdWFsaXR5IH0gZnJvbSBcIi4uL3Byb2Nlc3MvaW5zdGFudGlhdGVcIjtcbmltcG9ydCB7IGVxdWFsaXR5RnJvbVN0YXRlbWVudE5vZGUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2VsZW1lbnRcIjtcbmltcG9ydCB7IGlzRGVyaXZlZCwgaXNEZWNsYXJlZCwgaXNUcmFuc2llbnQgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3N0YXRlXCI7XG5pbXBvcnQgeyBlcXVhbGl0eUFzc2lnbm1lbnRGcm9tRXF1YWxpdHksIGxlZnRWYXJpYWJsZUFzc2lnbm1lbnRGcm9tRXF1YWxpdHksIHJpZ2h0VmFyaWFibGVBc3NpZ25tZW50RnJvbUVxdWFsaXR5IH0gZnJvbSBcIi4uL3Byb2Nlc3MvYXNzaWduXCI7XG5cbmNvbnN0IHsgdW5icmVha2FibGUgfSA9IGJyZWFrUG9pbnRVdGlsaXRpZXMsXG4gICAgICB7IGFsbCwgZXhpc3RzIH0gPSBjb250aW51YXRpb25VdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBFcXVhbGl0eSBleHRlbmRzIEVsZW1lbnQge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIG5lZ2F0ZWQsIGxlZnRUZXJtLCByaWdodFRlcm0pIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy5uZWdhdGVkID0gbmVnYXRlZDtcbiAgICB0aGlzLmxlZnRUZXJtID0gbGVmdFRlcm07XG4gICAgdGhpcy5yaWdodFRlcm0gPSByaWdodFRlcm07XG4gIH1cblxuICBpc05lZ2F0ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMubmVnYXRlZDtcbiAgfVxuXG4gIGdldExlZnRUZXJtKCkge1xuICAgIHJldHVybiB0aGlzLmxlZnRUZXJtO1xuICB9XG5cbiAgZ2V0UmlnaHRUZXJtKCkge1xuICAgIHJldHVybiB0aGlzLnJpZ2h0VGVybTtcbiAgfVxuXG4gIGdldEVxdWFsaXR5Tm9kZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5nZXROb2RlKCksXG4gICAgICAgICAgZXF1YWxpdHlOZGUgPSBub2RlOyAvLy9cblxuICAgIHJldHVybiBlcXVhbGl0eU5kZTtcbiAgfVxuXG4gIGdldExlZnRUZXJtTm9kZSgpIHtcbiAgICBjb25zdCBsZWZ0VGVybU5vZGUgPSB0aGlzLmxlZnRUZXJtLmdldE5vZGUoKTtcblxuICAgIHJldHVybiBsZWZ0VGVybU5vZGU7XG4gIH1cblxuICBnZXRSaWdodFRlcm1Ob2RlKCkge1xuICAgIGNvbnN0IHJpZ2h0VGVybU5vZGUgPSB0aGlzLnJpZ2h0VGVybS5nZXROb2RlKCk7XG5cbiAgICByZXR1cm4gcmlnaHRUZXJtTm9kZTtcbiAgfVxuXG4gIGdldFRlcm1zKCkge1xuICAgIGNvbnN0IHRlcm1zID0gW1xuICAgICAgdGhpcy5sZWZ0VGVybSxcbiAgICAgIHRoaXMucmlnaHRUZXJtXG4gICAgXTtcblxuICAgIHJldHVybiB0ZXJtcztcbiAgfVxuXG4gIG1hdGNoRXF1YWxpdHlOb2RlKGVxdWFsaXR5Tm9kZSkge1xuICAgIGNvbnN0IG5vZGUgPSBlcXVhbGl0eU5vZGUsIC8vL1xuICAgICAgICAgIG5vZGVNYXRjaGVzID0gdGhpcy5tYXRjaE5vZGUobm9kZSksXG4gICAgICAgICAgZXF1YWxpdHlOb2RlTWF0Y2hlcyA9IG5vZGVNYXRjaGVzOyAvLy9cblxuICAgIHJldHVybiBlcXVhbGl0eU5vZGVNYXRjaGVzO1xuICB9XG5cbiAgaXNFcXVhbFRvKGVxdWFsaXR5KSB7XG4gICAgY29uc3QgZXF1YWxpdHlOb2RlID0gZXF1YWxpdHkuZ2V0Tm9kZSgpLFxuICAgICAgICAgIGVxdWFsaXR5Tm9kZU1hdGNoZXMgPSB0aGlzLm1hdGNoRXF1YWxpdHlOb2RlKGVxdWFsaXR5Tm9kZSksXG4gICAgICAgICAgZXF1YWxUbyA9IGVxdWFsaXR5Tm9kZU1hdGNoZXM7ICAvLy9cblxuICAgIHJldHVybiBlcXVhbFRvO1xuICB9XG5cbiAgZmluZEVxdWFsaXR5KGNvbnRleHQpIHtcbiAgICBjb25zdCBlcXVhbGl0eU5vZGUgPSB0aGlzLmdldEVxdWFsaXR5Tm9kZSgpLFxuICAgICAgICAgIGVxdWFsaXR5ID0gY29udGV4dC5maW5kRXF1YWxpdHlCeUVxdWFsaXR5Tm9kZShlcXVhbGl0eU5vZGUpO1xuXG4gICAgcmV0dXJuIGVxdWFsaXR5O1xuICB9XG5cbiAgdmFsaWRhdGUgPSB1bmJyZWFrYWJsZShmdW5jdGlvbiAoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBsZXQgZXF1YWxpdHk7XG5cbiAgICBjb25zdCBlcXVhbGl0eVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2VxdWFsaXR5U3RyaW5nfScgZXF1YWxpdHkuLi5gKTtcblxuICAgIGVxdWFsaXR5ID0gdGhpcy5maW5kRXF1YWxpdHkoY29udGV4dCk7XG5cbiAgICBpZiAoZXF1YWxpdHkgIT09IG51bGwpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHtlcXVhbGl0eVN0cmluZ30nIGVxdWFsaXR5IGlzIGFscmVhZHkgcHJlc2VudC5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoZXF1YWxpdHksIGNvbnRleHQsIGJhY2spO1xuICAgIH1cblxuICAgIGNvbnN0IHZhbGlkYXRlVGVybXMgPSB0aGlzLnZhbGlkYXRlVGVybXMuYmluZCh0aGlzKTtcblxuICAgIHJldHVybiBhbGwoW1xuICAgICAgdmFsaWRhdGVUZXJtc1xuICAgIF0sIHN0YXRlLCBjb250ZXh0LCAoc3RhdGUsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnN0IHZhbGlkYXRlV2hlbkRlY2xhcmVkID0gdGhpcy52YWxpZGF0ZVdoZW5EZWNsYXJlZC5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgdmFsaWRhdGVXaGVuRGVyaXZlZCA9IHRoaXMudmFsaWRhdGVXaGVuRGVyaXZlZC5iaW5kKHRoaXMpO1xuXG4gICAgICByZXR1cm4gZXhpc3RzKFtcbiAgICAgICAgdmFsaWRhdGVXaGVuRGVjbGFyZWQsXG4gICAgICAgIHZhbGlkYXRlV2hlbkRlcml2ZWRcbiAgICAgIF0sIHN0YXRlLCBjb250ZXh0LCAoc3RhdGUsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgZXF1YWxpdHkgPSB0aGlzOyAvLy9cblxuICAgICAgICB0aGlzLmFzc2lnbihzdGF0ZSwgY29udGV4dCk7XG5cbiAgICAgICAgY29udGV4dC5hZGRFcXVhbGl0eShlcXVhbGl0eSk7XG5cbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtlcXVhbGl0eVN0cmluZ31lcXVhbGl0eS5gKTtcblxuICAgICAgICByZXR1cm4gZm9yd2FyZChlcXVhbGl0eSwgY29udGV4dCwgYmFjayk7XG4gICAgICB9LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfSk7XG5cbiAgdmFsaWRhdGVUZXJtcyhzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGVxdWFsaXR5U3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtlcXVhbGl0eVN0cmluZ30nIGVxdWFsaXR5J3MgdGVybXMuLi5gKTtcblxuICAgIGNvbnN0IHZhbGlkYXRlTGVmdFRlcm0gPSB0aGlzLnZhbGlkYXRlTGVmdFRlcm0uYmluZCh0aGlzKSxcbiAgICAgICAgICB2YWxpZGF0ZVJpZ2h0VGVybSA9IHRoaXMudmFsaWRhdGVSaWdodFRlcm0uYmluZCh0aGlzKTtcblxuICAgIHJldHVybiBhbGwoW1xuICAgICAgdmFsaWRhdGVMZWZ0VGVybSxcbiAgICAgIHZhbGlkYXRlUmlnaHRUZXJtXG4gICAgXSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29uc3QgbGVmdFRlcm1UeXBlID0gdGhpcy5sZWZ0VGVybS5nZXRUeXBlKCksXG4gICAgICAgICAgICByaWdodFRlcm1UeXBlID0gdGhpcy5yaWdodFRlcm0uZ2V0VHlwZSgpLFxuICAgICAgICAgICAgbGVmdFRlcm1UeXBlSm9pbmVkVG9SaWdodFRlcm1UeXBlID0gbGVmdFRlcm1UeXBlLmlzSm9pbmVkVG8ocmlnaHRUZXJtVHlwZSk7XG5cbiAgICAgIGlmICghbGVmdFRlcm1UeXBlSm9pbmVkVG9SaWdodFRlcm1UeXBlKSB7XG4gICAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7ZXF1YWxpdHlTdHJpbmd9JyBlcXVhbGl0eSdzIHRlcm1zLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChzdGF0ZSwgY29udGV4dCwgYmFjayk7XG5cbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHZhbGlkYXRlTGVmdFRlcm0oc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBlcXVhbGl0eVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7ZXF1YWxpdHlTdHJpbmd9JyBlcXVhbGl0eSdzIGxlZnQgdGVybS4uLmApO1xuXG4gICAgcmV0dXJuIHRoaXMubGVmdFRlcm0udmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIChsZWZ0VGVybSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgdGhpcy5sZWZ0VGVybSA9IGxlZnRUZXJtO1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2VxdWFsaXR5U3RyaW5nfScgZXF1YWxpdHkncyBsZWZ0IHRlcm0uYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHN0YXRlLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHZhbGlkYXRlUmlnaHRUZXJtKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgZXF1YWxpdHlTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2VxdWFsaXR5U3RyaW5nfScgZXF1YWxpdHkncyByaWdodCB0ZXJtLi4uYCk7XG5cbiAgICByZXR1cm4gdGhpcy5yaWdodFRlcm0udmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIChyaWdodFRlcm0sIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIHRoaXMucmlnaHRUZXJtID0gcmlnaHRUZXJtO1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2VxdWFsaXR5U3RyaW5nfScgZXF1YWxpdHkncyByaWdodCB0ZXJtLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChzdGF0ZSwgY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB2YWxpZGF0ZVdoZW5EZWNsYXJlZChzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGRlY2xhcmVkID0gaXNEZWNsYXJlZChzdGF0ZSk7XG5cbiAgICBpZiAoIWRlY2xhcmVkKSB7XG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH1cblxuICAgIGNvbnN0IGVxdWFsaXR5U3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtlcXVhbGl0eVN0cmluZ30nIGRlY2xhcmVkIGVxdWFsaXR5Li4uYCk7XG5cbiAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2VxdWFsaXR5U3RyaW5nfScgZGVjbGFyZWQgZXF1YWxpdHkuYCk7XG5cbiAgICByZXR1cm4gZm9yd2FyZChzdGF0ZSwgY29udGV4dCwgYmFjayk7XG4gIH1cblxuICB2YWxpZGF0ZVdoZW5EZXJpdmVkKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgZGVyaXZlZCA9IGlzRGVyaXZlZChzdGF0ZSk7XG5cbiAgICBpZiAoIWRlcml2ZWQpIHtcbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfVxuXG4gICAgY29uc3QgZXF1YWxpdHlTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2VxdWFsaXR5U3RyaW5nfScgZGVyaXZlZCBlcXVhbGl0eS4uLmApO1xuXG4gICAgY29uc3QgdGVybXNFcXVhdGUgPSBlcXVhdGVUZXJtcyh0aGlzLmxlZnRUZXJtLCB0aGlzLnJpZ2h0VGVybSwgY29udGV4dCk7XG5cbiAgICBpZiAoKHRoaXMubmVnYXRlZCAmJiB0ZXJtc0VxdWF0ZSkgfHwgKCF0aGlzLm5lZ2F0ZWQgJiYgIXRlcm1zRXF1YXRlKSkge1xuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2VxdWFsaXR5U3RyaW5nfScgZGVyaXZlZCBlcXVhbGl0eS5gKTtcblxuICAgIHJldHVybiBmb3J3YXJkKHN0YXRlLCBjb250ZXh0LCBiYWNrKTtcbiAgfVxuXG4gIGFzc2lnbihzdGF0ZSwgY29udGV4dCkge1xuICAgIGNvbnN0IHRyYW5zaWVudCA9IGlzVHJhbnNpZW50KHN0YXRlKTtcblxuICAgIGlmICh0cmFuc2llbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBuZWdhdGVkID0gdGhpcy5pc05lZ2F0ZWQoKTtcblxuICAgIGlmIChuZWdhdGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZXF1YWxpdHkgPSB0aGlzOyAgLy8vXG5cbiAgICBjb25zdCBlcXVhbGl0eUFzc2lnbm1lbnQgPSBlcXVhbGl0eUFzc2lnbm1lbnRGcm9tRXF1YWxpdHkoZXF1YWxpdHksIGNvbnRleHQpO1xuXG4gICAgY29udGV4dC5hZGRBc3NpZ25tZW50KGVxdWFsaXR5QXNzaWdubWVudCk7XG5cbiAgICBjb25zdCBkZXJpdmVkID0gaXNEZXJpdmVkKHN0YXRlKTtcblxuICAgIGlmIChkZXJpdmVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbGVmdFZhcmlhYmxlQXNzaWdubWVudCA9IGxlZnRWYXJpYWJsZUFzc2lnbm1lbnRGcm9tRXF1YWxpdHkoZXF1YWxpdHksIGNvbnRleHQpLFxuICAgICAgICAgIHJpZ2h0VmFyaWFibGVBc3NpZ25tZW50ID0gcmlnaHRWYXJpYWJsZUFzc2lnbm1lbnRGcm9tRXF1YWxpdHkoZXF1YWxpdHksIGNvbnRleHQpO1xuXG4gICAgY29udGV4dC5hZGRBc3NpZ25tZW50KGxlZnRWYXJpYWJsZUFzc2lnbm1lbnQpO1xuXG4gICAgY29udGV4dC5hZGRBc3NpZ25tZW50KHJpZ2h0VmFyaWFibGVBc3NpZ25tZW50KTtcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICBsZXQganNvbjtcblxuICAgIGNvbnN0IHN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7XG5cbiAgICBqc29uID0ge1xuICAgICAgc3RyaW5nXG4gICAgfTtcblxuICAgIHJldHVybiBqc29uO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIkVxdWFsaXR5XCI7XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgICBsZXQgZXF1YWxpdHk7XG5cbiAgICBpbnN0YW50aWF0ZSgoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgICBlcXVhbGl0eU5vZGUgPSBpbnN0YW50aWF0ZUVxdWFsaXR5KHN0cmluZywgY29udGV4dCksXG4gICAgICAgICAgICBub2RlID0gZXF1YWxpdHlOb2RlLCAgLy8vXG4gICAgICAgICAgICBicmVha1BvaW50ID0gbnVsbCxcbiAgICAgICAgICAgIG5lZ2F0ZWQgPSBuZWdhdGVkRnJvbUVxdWFsaXR5Tm9kZShlcXVhbGl0eU5vZGUsIGNvbnRleHQpLFxuICAgICAgICAgICAgbGVmdFRlcm0gPSBsZWZ0VGVybUZyb21FcXVhbGl0eU5vZGUoZXF1YWxpdHlOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgICAgIHJpZ2h0VGVybSA9IHJpZ2h0VGVybUZyb21FcXVhbGl0eU5vZGUoZXF1YWxpdHlOb2RlLCBjb250ZXh0KTtcblxuICAgICAgY29udGV4dCA9IG51bGw7XG5cbiAgICAgIGVxdWFsaXR5ID0gbmV3IEVxdWFsaXR5KGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgbmVnYXRlZCwgbGVmdFRlcm0sIHJpZ2h0VGVybSk7XG4gICAgfSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gZXF1YWxpdHk7XG4gIH1cblxuICBzdGF0aWMgZnJvbVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50LmdldE5vZGUoKSxcbiAgICAgICAgICBlcXVhbGl0eSA9IGVxdWFsaXR5RnJvbVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gZXF1YWxpdHk7XG4gIH1cbn0pO1xuXG5mdW5jdGlvbiBuZWdhdGVkRnJvbUVxdWFsaXR5Tm9kZShlcXVhbGl0eU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgbmVnYXRlZCA9IGVxdWFsaXR5Tm9kZS5pc05lZ2F0ZWQoKTtcblxuICByZXR1cm4gbmVnYXRlZDtcbn1cblxuZnVuY3Rpb24gbGVmdFRlcm1Gcm9tRXF1YWxpdHlOb2RlKGVxdWFsaXR5Tm9kZSwgY29udGV4dCkge1xuICBjb25zdCBsZWZ0VGVybU5vZGUgPSBlcXVhbGl0eU5vZGUuZ2V0TGVmdFRlcm1Ob2RlKCksXG4gICAgICAgIGxlZnRUZXJtID0gY29udGV4dC5maW5kVGVybUJ5VGVybU5vZGUobGVmdFRlcm1Ob2RlKTtcblxuICByZXR1cm4gbGVmdFRlcm07XG59XG5cbmZ1bmN0aW9uIHJpZ2h0VGVybUZyb21FcXVhbGl0eU5vZGUoZXF1YWxpdHlOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHJpZ2h0VGVybU5vZGUgPSBlcXVhbGl0eU5vZGUuZ2V0TGVmdFRlcm1Ob2RlKCksXG4gICAgICAgIHJpZ2h0VGVybSA9IGNvbnRleHQuZmluZFRlcm1CeVRlcm1Ob2RlKHJpZ2h0VGVybU5vZGUpO1xuXG4gIHJldHVybiByaWdodFRlcm07XG59XG4iXSwibmFtZXMiOlsidW5icmVha2FibGUiLCJicmVha1BvaW50VXRpbGl0aWVzIiwiYWxsIiwiZXhpc3RzIiwiY29udGludWF0aW9uVXRpbGl0aWVzIiwiZGVmaW5lIiwiRXF1YWxpdHkiLCJFbGVtZW50IiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJicmVha1BvaW50IiwibmVnYXRlZCIsImxlZnRUZXJtIiwicmlnaHRUZXJtIiwiaXNOZWdhdGVkIiwiZ2V0TGVmdFRlcm0iLCJnZXRSaWdodFRlcm0iLCJnZXRFcXVhbGl0eU5vZGUiLCJnZXROb2RlIiwiZXF1YWxpdHlOZGUiLCJnZXRMZWZ0VGVybU5vZGUiLCJsZWZ0VGVybU5vZGUiLCJnZXRSaWdodFRlcm1Ob2RlIiwicmlnaHRUZXJtTm9kZSIsImdldFRlcm1zIiwidGVybXMiLCJtYXRjaEVxdWFsaXR5Tm9kZSIsImVxdWFsaXR5Tm9kZSIsIm5vZGVNYXRjaGVzIiwibWF0Y2hOb2RlIiwiZXF1YWxpdHlOb2RlTWF0Y2hlcyIsImlzRXF1YWxUbyIsImVxdWFsaXR5IiwiZXF1YWxUbyIsImZpbmRFcXVhbGl0eSIsImZpbmRFcXVhbGl0eUJ5RXF1YWxpdHlOb2RlIiwidmFsaWRhdGUiLCJzdGF0ZSIsImZvcndhcmQiLCJiYWNrIiwiZXF1YWxpdHlTdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsImRlYnVnIiwidmFsaWRhdGVUZXJtcyIsImJpbmQiLCJ2YWxpZGF0ZVdoZW5EZWNsYXJlZCIsInZhbGlkYXRlV2hlbkRlcml2ZWQiLCJhc3NpZ24iLCJhZGRFcXVhbGl0eSIsInZhbGlkYXRlTGVmdFRlcm0iLCJ2YWxpZGF0ZVJpZ2h0VGVybSIsImxlZnRUZXJtVHlwZSIsImdldFR5cGUiLCJyaWdodFRlcm1UeXBlIiwibGVmdFRlcm1UeXBlSm9pbmVkVG9SaWdodFRlcm1UeXBlIiwiaXNKb2luZWRUbyIsImRlY2xhcmVkIiwiaXNEZWNsYXJlZCIsImRlcml2ZWQiLCJpc0Rlcml2ZWQiLCJ0ZXJtc0VxdWF0ZSIsImVxdWF0ZVRlcm1zIiwidHJhbnNpZW50IiwiaXNUcmFuc2llbnQiLCJlcXVhbGl0eUFzc2lnbm1lbnQiLCJlcXVhbGl0eUFzc2lnbm1lbnRGcm9tRXF1YWxpdHkiLCJhZGRBc3NpZ25tZW50IiwibGVmdFZhcmlhYmxlQXNzaWdubWVudCIsImxlZnRWYXJpYWJsZUFzc2lnbm1lbnRGcm9tRXF1YWxpdHkiLCJyaWdodFZhcmlhYmxlQXNzaWdubWVudCIsInJpZ2h0VmFyaWFibGVBc3NpZ25tZW50RnJvbUVxdWFsaXR5IiwidG9KU09OIiwianNvbiIsIm5hbWUiLCJmcm9tSlNPTiIsImluc3RhbnRpYXRlIiwiaW5zdGFudGlhdGVFcXVhbGl0eSIsIm5lZ2F0ZWRGcm9tRXF1YWxpdHlOb2RlIiwibGVmdFRlcm1Gcm9tRXF1YWxpdHlOb2RlIiwicmlnaHRUZXJtRnJvbUVxdWFsaXR5Tm9kZSIsImZyb21TdGF0ZW1lbnQiLCJzdGF0ZW1lbnQiLCJzdGF0ZW1lbnROb2RlIiwiZXF1YWxp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
|