occam-nominal 1.0.542 → 1.0.543
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/context/mnemic.js +2 -2
- package/lib/element/assertion/contained.js +4 -8
- package/lib/element/assertion/defined.js +4 -8
- package/lib/element/assertion/signature.js +20 -18
- package/lib/element/assertion/type.js +7 -13
- package/lib/element/claim/axiom.js +34 -38
- package/package.json +3 -3
- package/src/context/mnemic.js +2 -2
- package/src/element/assertion/contained.js +3 -9
- package/src/element/assertion/defined.js +3 -9
- package/src/element/assertion/signature.js +20 -18
- package/src/element/assertion/type.js +6 -16
- package/src/element/claim/axiom.js +37 -42
package/lib/context/mnemic.js
CHANGED
|
@@ -382,8 +382,8 @@ class MnemicContext extends _context.default {
|
|
|
382
382
|
initialise(json) {
|
|
383
383
|
const context = this; ///
|
|
384
384
|
this.terms = (0, _json.termsFromJSON)(json, context);
|
|
385
|
-
this.metavariables = (0, _json.metavariablesFromJSON)(json, context);
|
|
386
385
|
this.statements = (0, _json.statementsFromJSON)(json, context);
|
|
386
|
+
this.metavariables = (0, _json.metavariablesFromJSON)(json, context);
|
|
387
387
|
this.equalities = (0, _json.equalitiesFromJSON)(json, context);
|
|
388
388
|
this.assumptions = (0, _json.assumptionsFromJSON)(json, context);
|
|
389
389
|
this.links = (0, _json.linksFromJSON)(json, context);
|
|
@@ -433,4 +433,4 @@ class MnemicContext extends _context.default {
|
|
|
433
433
|
}
|
|
434
434
|
}
|
|
435
435
|
|
|
436
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250ZXh0L21uZW1pYy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgYXJyYXlVdGlsaXRpZXMgfSBmcm9tIFwibmVjZXNzYXJ5XCI7XG5cbmltcG9ydCBDb250ZXh0IGZyb20gXCIuLi9jb250ZXh0XCI7XG5cbmltcG9ydCB7IHRlcm1zRnJvbUpTT04sXG4gICAgICAgICBsaW5rc0Zyb21KU09OLFxuICAgICAgICAgZnJhbWVzRnJvbUpTT04sXG4gICAgICAgICB0ZXJtc1RvVGVybXNKU09OLFxuICAgICAgICAgbGlua3NUb0xpbmtzSlNPTixcbiAgICAgICAgIGZyYW1lc1RvRnJhbWVzSlNPTixcbiAgICAgICAgIGVxdWFsaXRpZXNGcm9tSlNPTixcbiAgICAgICAgIHN0YXRlbWVudHNGcm9tSlNPTixcbiAgICAgICAgIGFzc2VydGlvbnNGcm9tSlNPTixcbiAgICAgICAgIGFzc3VtcHRpb25zRnJvbUpTT04sXG4gICAgICAgICBtZXRhdmFyaWFibGVzRnJvbUpTT04sXG4gICAgICAgICBzdWJzdGl0dXRpb25zRnJvbUpTT04sXG4gICAgICAgICBlcXVhbGl0aWVzVG9FcXVhbGl0aWVzSlNPTixcbiAgICAgICAgIHN0YXRlbWVudHNUb1N0YXRlbWVudHNKU09OLFxuICAgICAgICAgYXNzZXJ0aW9uc1RvQXNzZXJ0aW9uc0pTT04sXG4gICAgICAgICBhc3N1bXB0aW9uc1RvQXNzdW1wdGlvbnNKU09OLFxuICAgICAgICAgbWV0YXZhcmlhYmxlc1RvTWV0YXZhcmlhYmxlc0pTT04sXG4gICAgICAgICBzdWJzdGl0dXRpb25zVG9TdWJzdGl0dXRpb25zSlNPTiB9IGZyb20gXCIuLi91dGlsaXRpZXMvanNvblwiO1xuXG5jb25zdCB7IHB1c2gsIGV4dHJhY3QgfSA9IGFycmF5VXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBNbmVtaWNDb250ZXh0IGV4dGVuZHMgQ29udGV4dCB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHRlcm1zLCBsaW5rcywgZnJhbWVzLCBlcXVhbGl0aWVzLCBhc3NlcnRpb25zLCBzdGF0ZW1lbnRzLCBhc3N1bXB0aW9ucywgbWV0YXZhcmlhYmxlcywgc3Vic3RpdHV0aW9ucykge1xuICAgIHN1cGVyKGNvbnRleHQpO1xuXG4gICAgdGhpcy50ZXJtcyA9IHRlcm1zO1xuICAgIHRoaXMubGlua3MgPSBsaW5rcztcbiAgICB0aGlzLmZyYW1lcyA9IGZyYW1lcztcbiAgICB0aGlzLmVxdWFsaXRpZXMgPSBlcXVhbGl0aWVzO1xuICAgIHRoaXMuYXNzZXJ0aW9ucyA9IGFzc2VydGlvbnM7XG4gICAgdGhpcy5zdGF0ZW1lbnRzID0gc3RhdGVtZW50cztcbiAgICB0aGlzLmFzc3VtcHRpb25zID0gYXNzdW1wdGlvbnM7XG4gICAgdGhpcy5tZXRhdmFyaWFibGVzID0gbWV0YXZhcmlhYmxlcztcbiAgICB0aGlzLnN1YnN0aXR1dGlvbnMgPSBzdWJzdGl0dXRpb25zO1xuICB9XG5cbiAgZ2V0VGVybXModGVybXMgPSBbXSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIHB1c2godGVybXMsIHRoaXMudGVybXMpO1xuXG4gICAgY29udGV4dC5nZXRUZXJtcyh0ZXJtcyk7XG5cbiAgICByZXR1cm4gdGVybXM7XG4gIH1cblxuICBnZXRMaW5rcyhsaW5rcyA9IFtdKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgcHVzaChsaW5rcywgdGhpcy5saW5rcyk7XG5cbiAgICBjb250ZXh0LmdldExpbmtzKGxpbmtzKTtcblxuICAgIHJldHVybiBsaW5rcztcbiAgfVxuXG4gIGdldEZyYW1lcyhmcmFtZXMgPSBbXSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIHB1c2goZnJhbWVzLCB0aGlzLmZyYW1lcyk7XG5cbiAgICBjb250ZXh0LmdldEZyYW1lcyhmcmFtZXMpO1xuXG4gICAgcmV0dXJuIGZyYW1lcztcbiAgfVxuXG4gIGdldEVxdWFsaXRpZXMoZXF1YWxpdGllcyA9IFtdKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgcHVzaChlcXVhbGl0aWVzLCB0aGlzLmVxdWFsaXRpZXMpO1xuXG4gICAgY29udGV4dC5nZXRFcXVhbGl0aWVzKGVxdWFsaXRpZXMpO1xuXG4gICAgcmV0dXJuIGVxdWFsaXRpZXM7XG4gIH1cblxuICBnZXRTdGF0ZW1lbnRzKHN0YXRlbWVudHMgPSBbXSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIHB1c2goc3RhdGVtZW50cywgdGhpcy5zdGF0ZW1lbnRzKTtcblxuICAgIGNvbnRleHQuZ2V0U3RhdGVtZW50cyhzdGF0ZW1lbnRzKTtcblxuICAgIHJldHVybiBzdGF0ZW1lbnRzO1xuICB9XG5cbiAgZ2V0QXNzZXJ0aW9ucyhhc3NlcnRpb25zID0gW10pIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBwdXNoKGFzc2VydGlvbnMsIHRoaXMuYXNzZXJ0aW9ucyk7XG5cbiAgICBjb250ZXh0LmdldEFzc2VydGlvbnMoYXNzZXJ0aW9ucyk7XG5cbiAgICByZXR1cm4gYXNzZXJ0aW9ucztcbiAgfVxuXG4gIGdldEFzc3VtcHRpb25zKGFzc3VtcHRpb25zID0gW10pIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBwdXNoKGFzc3VtcHRpb25zLCB0aGlzLmFzc3VtcHRpb25zKTtcblxuICAgIGNvbnRleHQuZ2V0QXNzdW1wdGlvbnMoYXNzdW1wdGlvbnMpO1xuXG4gICAgcmV0dXJuIGFzc3VtcHRpb25zO1xuICB9XG5cbiAgZ2V0TWV0YXZhcmlhYmxlcyhtZXRhdmFyaWFibGVzID0gW10pIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBwdXNoKG1ldGF2YXJpYWJsZXMsIHRoaXMubWV0YXZhcmlhYmxlcyk7XG5cbiAgICBjb250ZXh0LmdldE1ldGF2YXJpYWJsZXMobWV0YXZhcmlhYmxlcyk7XG5cbiAgICByZXR1cm4gbWV0YXZhcmlhYmxlcztcbiAgfVxuXG4gIGdldFN1YnN0aXR1dGlvbnMoc3Vic3RpdHV0aW9ucyA9IFtdKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgcHVzaChzdWJzdGl0dXRpb25zLCB0aGlzLnN1YnN0aXR1dGlvbnMpO1xuXG4gICAgY29udGV4dC5nZXRTdWJzdGl0dXRpb25zKHN1YnN0aXR1dGlvbnMpO1xuXG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbnM7XG4gIH1cblxuICBhZGRUZXJtKHRlcm0pIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcywgLy8vXG4gICAgICAgICAgdGVybVN0cmluZyA9IHRlcm0uZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBBZGRpbmcgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtIHRvIHRoZSBtbmVtaWMgY29udGV4dC4uLmApO1xuXG4gICAgY29uc3QgdGVybUEgPSB0ZXJtOyAvLy9cblxuICAgIGV4dHJhY3QodGhpcy50ZXJtcywgKHRlcm0pID0+IHtcbiAgICAgIGNvbnN0IHRlcm1CID0gdGVybSwgLy8vXG4gICAgICAgICAgICB0ZXJtQUVxdWFsVG9UZXJtQiA9IHRlcm1BLmlzRXF1YWxUbyh0ZXJtQik7XG5cbiAgICAgIGlmICh0ZXJtQUVxdWFsVG9UZXJtQikge1xuICAgICAgICBjb25zdCB0ZXJtU3RyaW5nID0gdGVybS5nZXRTdHJpbmcoKTtcblxuICAgICAgICBjb250ZXh0LnRyYWNlKGBSZW1vdmVkIHRoZSBleGlzdGluZyAnJHt0ZXJtU3RyaW5nfScgdGVybSBmcm9tIHRoZSBtbmVtaWMgY29udGV4dC4uLmApO1xuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy50ZXJtcy5wdXNoKHRlcm0pO1xuXG4gICAgY29udGV4dC5kZWJ1ZyhgLi4uYWRkZWQgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtIHRvIHRoZSBtbmVtaWMgY29udGV4dC5gKTtcbiAgfVxuXG4gIGFkZExpbmsobGluaykge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLCAvLy9cbiAgICAgICAgICBsaW5rU3RyaW5nID0gbGluay5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYEFkZGluZyB0aGUgJyR7bGlua1N0cmluZ30nIGxpbmsgdG8gdGhlIG1uZW1pYyBjb250ZXh0Li4uYCk7XG5cbiAgICBjb25zdCBsaW5rQSA9IGxpbms7IC8vL1xuXG4gICAgZXh0cmFjdCh0aGlzLmxpbmtzLCAobGluaykgPT4ge1xuICAgICAgY29uc3QgbGlua0IgPSBsaW5rLCAvLy9cbiAgICAgICAgICAgIGxpbmtBRXF1YWxUb0xpbmtCID0gbGlua0EuaXNFcXVhbFRvKGxpbmtCKTtcblxuICAgICAgaWYgKGxpbmtBRXF1YWxUb0xpbmtCKSB7XG4gICAgICAgIGNvbnN0IGxpbmtTdHJpbmcgPSBsaW5rLmdldFN0cmluZygpO1xuXG4gICAgICAgIGNvbnRleHQudHJhY2UoYFJlbW92ZWQgdGhlIGV4aXN0aW5nICcke2xpbmtTdHJpbmd9JyBsaW5rIGZyb20gdGhlIG1uZW1pYyBjb250ZXh0Li4uYCk7XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLmxpbmtzLnB1c2gobGluayk7XG5cbiAgICBjb250ZXh0LmRlYnVnKGAuLi5hZGRlZCB0aGUgJyR7bGlua1N0cmluZ30nIGxpbmsgdG8gdGhlIG1uZW1pYyBjb250ZXh0LmApO1xuICB9XG5cbiAgYWRkRnJhbWUoZnJhbWUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcywgLy8vXG4gICAgICAgICAgZnJhbWVTdHJpbmcgPSBmcmFtZS5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYEFkZGluZyB0aGUgJyR7ZnJhbWVTdHJpbmd9JyBmcmFtZSB0byB0aGUgbW5lbWljIGNvbnRleHQuLi5gKTtcblxuICAgIGNvbnN0IGZyYW1lQSA9IGZyYW1lOyAvLy9cblxuICAgIGV4dHJhY3QodGhpcy5mcmFtZXMsIChmcmFtZSkgPT4ge1xuICAgICAgY29uc3QgZnJhbWVCID0gZnJhbWUsIC8vL1xuICAgICAgICAgICAgZnJhbWVBRXF1YWxUb0ZyYW1lQiA9IGZyYW1lQS5pc0VxdWFsVG8oZnJhbWVCKTtcblxuICAgICAgaWYgKGZyYW1lQUVxdWFsVG9GcmFtZUIpIHtcbiAgICAgICAgY29uc3QgZnJhbWVTdHJpbmcgPSBmcmFtZS5nZXRTdHJpbmcoKTtcblxuICAgICAgICBjb250ZXh0LnRyYWNlKGBSZW1vdmVkIHRoZSBleGlzdGluZyAnJHtmcmFtZVN0cmluZ30nIGZyYW1lIGZyb20gdGhlIG1uZW1pYyBjb250ZXh0Li4uYCk7XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLmZyYW1lcy5wdXNoKGZyYW1lKTtcblxuICAgIGNvbnRleHQuZGVidWcoYC4uLmFkZGVkIHRoZSAnJHtmcmFtZVN0cmluZ30nIGZyYW1lIHRvIHRoZSBtbmVtaWMgY29udGV4dC5gKTtcbiAgfVxuXG4gIGFkZEVxdWFsaXR5KGVxdWFsaXR5KSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMsIC8vL1xuICAgICAgICAgIGVxdWFsaXR5U3RyaW5nID0gZXF1YWxpdHkuZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBBZGRpbmcgdGhlICcke2VxdWFsaXR5U3RyaW5nfScgZXF1YWxpdHkgdG8gdGhlIG1uZW1pYyBjb250ZXh0Li4uYCk7XG5cbiAgICBjb25zdCBlcXVhbGl0eUEgPSBlcXVhbGl0eTsgLy8vXG5cbiAgICBleHRyYWN0KHRoaXMuZXF1YWxpdGllcywgKGVxdWFsaXR5KSA9PiB7XG4gICAgICBjb25zdCBlcXVhbGl0eUIgPSBlcXVhbGl0eSwgLy8vXG4gICAgICAgICAgICBlcXVhbGl0eUFFcXVhbFRvRXF1YWxpdHlCID0gZXF1YWxpdHlBLmlzRXF1YWxUbyhlcXVhbGl0eUIpO1xuXG4gICAgICBpZiAoZXF1YWxpdHlBRXF1YWxUb0VxdWFsaXR5Qikge1xuICAgICAgICBjb25zdCBlcXVhbGl0eVN0cmluZyA9IGVxdWFsaXR5LmdldFN0cmluZygpO1xuXG4gICAgICAgIGNvbnRleHQudHJhY2UoYFJlbW92ZWQgdGhlIGV4aXN0aW5nICcke2VxdWFsaXR5U3RyaW5nfScgZXF1YWxpdHkgZnJvbSB0aGUgbW5lbWljIGNvbnRleHQuLi5gKTtcblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuZXF1YWxpdGllcy5wdXNoKGVxdWFsaXR5KTtcblxuICAgIGNvbnRleHQuZGVidWcoYC4uLmFkZGVkIHRoZSAnJHtlcXVhbGl0eVN0cmluZ30nIGVxdWFsaXR5IHRvIHRoZSBtbmVtaWMgY29udGV4dC5gKTtcbiAgfVxuXG4gIGFkZEFzc2VydGlvbihhc3NlcnRpb24pIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcywgLy8vXG4gICAgICAgICAgYXNzZXJ0aW9uU3RyaW5nID0gYXNzZXJ0aW9uLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgQWRkaW5nIHRoZSAnJHthc3NlcnRpb25TdHJpbmd9JyBhc3NlcnRpb24gdG8gdGhlIG1uZW1pYyBjb250ZXh0Li4uYCk7XG5cbiAgICBjb25zdCBhc3NlcnRpb25BID0gYXNzZXJ0aW9uOyAvLy9cblxuICAgIGV4dHJhY3QodGhpcy5hc3NlcnRpb25zLCAoYXNzZXJ0aW9uKSA9PiB7XG4gICAgICBjb25zdCBhc3NlcnRpb25CID0gYXNzZXJ0aW9uLCAvLy9cbiAgICAgICAgICAgIGFzc2VydGlvbkFFcXVhbFRvQXNzZXJ0aW9uQiA9IGFzc2VydGlvbkEuaXNFcXVhbFRvKGFzc2VydGlvbkIpO1xuXG4gICAgICBpZiAoYXNzZXJ0aW9uQUVxdWFsVG9Bc3NlcnRpb25CKSB7XG4gICAgICAgIGNvbnN0IGFzc2VydGlvblN0cmluZyA9IGFzc2VydGlvbi5nZXRTdHJpbmcoKTtcblxuICAgICAgICBjb250ZXh0LnRyYWNlKGBSZW1vdmVkIHRoZSBleGlzdGluZyAnJHthc3NlcnRpb25TdHJpbmd9JyBhc3NlcnRpb24gZnJvbSB0aGUgbW5lbWljIGNvbnRleHQuLi5gKTtcblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuYXNzZXJ0aW9ucy5wdXNoKGFzc2VydGlvbik7XG5cbiAgICBjb250ZXh0LmRlYnVnKGAuLi5hZGRlZCB0aGUgJyR7YXNzZXJ0aW9uU3RyaW5nfScgYXNzZXJ0aW9uIHRvIHRoZSBtbmVtaWMgY29udGV4dC5gKTtcbiAgfVxuXG4gIGFkZFN0YXRlbWVudChzdGF0ZW1lbnQpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcywgLy8vXG4gICAgICAgICAgc3RhdGVtZW50U3RyaW5nID0gc3RhdGVtZW50LmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgQWRkaW5nIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgdG8gdGhlIG1uZW1pYyBjb250ZXh0Li4uYCk7XG5cbiAgICBjb25zdCBzdGF0ZW1lbnRBID0gc3RhdGVtZW50OyAvLy9cblxuICAgIGV4dHJhY3QodGhpcy5zdGF0ZW1lbnRzLCAoc3RhdGVtZW50KSA9PiB7XG4gICAgICBjb25zdCBzdGF0ZW1lbnRCID0gc3RhdGVtZW50LCAvLy9cbiAgICAgICAgICAgIHN0YXRlbWVudEFFcXVhbFRvU3RhdGVtZW50QiA9IHN0YXRlbWVudEEuaXNFcXVhbFRvKHN0YXRlbWVudEIpO1xuXG4gICAgICBpZiAoc3RhdGVtZW50QUVxdWFsVG9TdGF0ZW1lbnRCKSB7XG4gICAgICAgIGNvbnN0IHN0YXRlbWVudFN0cmluZyA9IHN0YXRlbWVudC5nZXRTdHJpbmcoKTtcblxuICAgICAgICBjb250ZXh0LnRyYWNlKGBSZW1vdmVkIHRoZSBleGlzdGluZyAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgZnJvbSB0aGUgbW5lbWljIGNvbnRleHQuLi5gKTtcblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuc3RhdGVtZW50cy5wdXNoKHN0YXRlbWVudCk7XG5cbiAgICBjb250ZXh0LmRlYnVnKGAuLi5hZGRlZCB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IHRvIHRoZSBtbmVtaWMgY29udGV4dC5gKTtcbiAgfVxuXG4gIGFkZEFzc3VtcHRpb24oYXNzdW1wdGlvbikge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLCAvLy9cbiAgICAgICAgICBhc3N1bXB0aW9uU3RyaW5nID0gYXNzdW1wdGlvbi5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYEFkZGluZyB0aGUgJyR7YXNzdW1wdGlvblN0cmluZ30nIGFzc3VtcHRpb24gdG8gdGhlIG1uZW1pYyBjb250ZXh0Li4uYCk7XG5cbiAgICBjb25zdCBhc3N1bXB0aW9uQSA9IGFzc3VtcHRpb247IC8vL1xuXG4gICAgZXh0cmFjdCh0aGlzLmFzc3VtcHRpb25zLCAoYXNzdW1wdGlvbikgPT4ge1xuICAgICAgY29uc3QgYXNzdW1wdGlvbkIgPSBhc3N1bXB0aW9uLCAvLy9cbiAgICAgICAgICAgIGFzc3VtcHRpb25BRXF1YWxUb0Fzc3VtcHRpb25CID0gYXNzdW1wdGlvbkEuaXNFcXVhbFRvKGFzc3VtcHRpb25CKTtcblxuICAgICAgaWYgKGFzc3VtcHRpb25BRXF1YWxUb0Fzc3VtcHRpb25CKSB7XG4gICAgICAgIGNvbnN0IGFzc3VtcHRpb25TdHJpbmcgPSBhc3N1bXB0aW9uLmdldFN0cmluZygpO1xuXG4gICAgICAgIGNvbnRleHQudHJhY2UoYFJlbW92ZWQgdGhlIGV4aXN0aW5nICcke2Fzc3VtcHRpb25TdHJpbmd9JyBhc3N1bXB0aW9uIGZyb20gdGhlIG1uZW1pYyBjb250ZXh0Li4uYCk7XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLmFzc3VtcHRpb25zLnB1c2goYXNzdW1wdGlvbik7XG5cbiAgICBjb250ZXh0LmRlYnVnKGAuLi5hZGRlZCB0aGUgJyR7YXNzdW1wdGlvblN0cmluZ30nIGFzc3VtcHRpb24gdG8gdGhlIG1uZW1pYyBjb250ZXh0LmApO1xuICB9XG5cbiAgYWRkTWV0YXZhcmlhYmxlKG1ldGF2YXJpYWJsZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLCAvLy9cbiAgICAgICAgICBtZXRhdmFyaWFibGVTdHJpbmcgPSBtZXRhdmFyaWFibGUuZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBBZGRpbmcgdGhlICcke21ldGF2YXJpYWJsZVN0cmluZ30nIG1ldGF2YXJpYWJsZSB0byB0aGUgbW5lbWljIGNvbnRleHQuLi5gKTtcblxuICAgIGNvbnN0IG1ldGF2YXJpYWJsZUEgPSBtZXRhdmFyaWFibGU7IC8vL1xuXG4gICAgZXh0cmFjdCh0aGlzLm1ldGF2YXJpYWJsZXMsIChtZXRhdmFyaWFibGUpID0+IHtcbiAgICAgIGNvbnN0IG1ldGF2YXJpYWJsZUIgPSBtZXRhdmFyaWFibGUsIC8vL1xuICAgICAgICAgICAgbWV0YXZhcmlhYmxlQUVxdWFsVG9NZXRhdmFyaWFibGVCID0gbWV0YXZhcmlhYmxlQS5pc0VxdWFsVG8obWV0YXZhcmlhYmxlQik7XG5cbiAgICAgIGlmIChtZXRhdmFyaWFibGVBRXF1YWxUb01ldGF2YXJpYWJsZUIpIHtcbiAgICAgICAgY29uc3QgbWV0YXZhcmlhYmxlU3RyaW5nID0gbWV0YXZhcmlhYmxlLmdldFN0cmluZygpO1xuXG4gICAgICAgIGNvbnRleHQudHJhY2UoYFJlbW92ZWQgdGhlIGV4aXN0aW5nICcke21ldGF2YXJpYWJsZVN0cmluZ30nIG1ldGF2YXJpYWJsZSBmcm9tIHRoZSBtbmVtaWMgY29udGV4dC4uLmApO1xuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5tZXRhdmFyaWFibGVzLnB1c2gobWV0YXZhcmlhYmxlKTtcblxuICAgIGNvbnRleHQuZGVidWcoYC4uLmFkZGVkIHRoZSAnJHttZXRhdmFyaWFibGVTdHJpbmd9JyBtZXRhdmFyaWFibGUgdG8gdGhlIG1uZW1pYyBjb250ZXh0LmApO1xuICB9XG5cbiAgYWRkU3Vic3RpdHV0aW9uKHN1YnN0aXR1dGlvbikge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLCAvLy9cbiAgICAgICAgICBzdWJzdGl0dXRpb25TdHJpbmcgPSBzdWJzdGl0dXRpb24uZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBBZGRpbmcgdGhlICcke3N1YnN0aXR1dGlvblN0cmluZ30nIHN1YnN0aXR1dGlvbiB0byB0aGUgbW5lbWljIGNvbnRleHQuLi5gKTtcblxuICAgIGNvbnN0IHN1YnN0aXR1dGlvbkEgPSBzdWJzdGl0dXRpb247IC8vL1xuXG4gICAgZXh0cmFjdCh0aGlzLnN1YnN0aXR1dGlvbnMsIChzdWJzdGl0dXRpb24pID0+IHtcbiAgICAgIGNvbnN0IHN1YnN0aXR1dGlvbkIgPSBzdWJzdGl0dXRpb24sIC8vL1xuICAgICAgICAgICAgc3Vic3RpdHV0aW9uQUVxdWFsVG9TdWJzdGl0dXRpb25CID0gc3Vic3RpdHV0aW9uQS5pc0VxdWFsVG8oc3Vic3RpdHV0aW9uQik7XG5cbiAgICAgIGlmIChzdWJzdGl0dXRpb25BRXF1YWxUb1N1YnN0aXR1dGlvbkIpIHtcbiAgICAgICAgY29uc3Qgc3Vic3RpdHV0aW9uU3RyaW5nID0gc3Vic3RpdHV0aW9uLmdldFN0cmluZygpO1xuXG4gICAgICAgIGNvbnRleHQudHJhY2UoYFJlbW92ZWQgdGhlIGV4aXN0aW5nICcke3N1YnN0aXR1dGlvblN0cmluZ30nIHN1YnN0aXR1dGlvbiBmcm9tIHRoZSBtbmVtaWMgY29udGV4dC4uLmApO1xuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5zdWJzdGl0dXRpb25zLnB1c2goc3Vic3RpdHV0aW9uKTtcblxuICAgIGNvbnRleHQuZGVidWcoYC4uLmFkZGVkIHRoZSAnJHtzdWJzdGl0dXRpb25TdHJpbmd9JyBzdWJzdGl0dXRpb24gdG8gdGhlIG1uZW1pYyBjb250ZXh0LmApO1xuICB9XG5cbiAgYWRkQXNzaWdubWVudChhc3NpZ25tZW50KSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgY29udGV4dC5hZGRBc3NpZ25tZW50KGFzc2lnbm1lbnQpO1xuICB9XG5cbiAgYWRkSW5mZXJyZWRTdWJzdGl0dXRpb25zKGluZmVycmVkU3Vic3RpdHV0aW9ucykge1xuICAgIC8vL1xuICB9XG5cbiAgYWRkVGVybXModGVybXMpIHtcbiAgICB0ZXJtcy5mb3JFYWNoKCh0ZXJtKSA9PiB7XG4gICAgICB0aGlzLmFkZFRlcm0odGVybSk7XG4gICAgfSk7XG4gIH1cblxuICBhZGRMaW5rcyhsaW5rcykge1xuICAgIGxpbmtzLmZvckVhY2goKGxpbmspID0+IHtcbiAgICAgIHRoaXMuYWRkTGluayhsaW5rKTtcbiAgICB9KTtcbiAgfVxuXG4gIGFkZEZyYW1lcyhmcmFtZXMpIHtcbiAgICBmcmFtZXMuZm9yRWFjaCgoZnJhbWUpID0+IHtcbiAgICAgIHRoaXMuYWRkRnJhbWUoZnJhbWUpO1xuICAgIH0pO1xuICB9XG5cbiAgYWRkRXF1YWxpdGllcyhlcXVhbGl0aWVzKSB7XG4gICAgZXF1YWxpdGllcy5mb3JFYWNoKChlcXVhbGl0eSkgPT4ge1xuICAgICAgdGhpcy5hZGRFcXVhbGl0eShlcXVhbGl0eSk7XG4gICAgfSk7XG4gIH1cblxuICBhZGRBc3NlcnRpb25zKGFzc2VydGlvbnMpIHtcbiAgICBhc3NlcnRpb25zLmZvckVhY2goKGFzc2VydGlvbikgPT4ge1xuICAgICAgdGhpcy5hZGRBc3NlcnRpb24oYXNzZXJ0aW9uKTtcbiAgICB9KTtcbiAgfVxuXG4gIGFkZFN0YXRlbWVudHMoc3RhdGVtZW50cykge1xuICAgIHN0YXRlbWVudHMuZm9yRWFjaCgoc3RhdGVtZW50KSA9PiB7XG4gICAgICB0aGlzLmFkZFN0YXRlbWVudChzdGF0ZW1lbnQpO1xuICAgIH0pO1xuICB9XG5cbiAgYWRkQXNzdW1wdGlvbnMoYXNzdW1wdGlvbnMpIHtcbiAgICBhc3N1bXB0aW9ucy5mb3JFYWNoKChhc3N1bXB0aW9uKSA9PiB7XG4gICAgICB0aGlzLmFkZEFzc3VtcHRpb24oYXNzdW1wdGlvbik7XG4gICAgfSk7XG4gIH1cblxuICBhZGRNZXRhdmFyaWFibGVzKG1ldGF2YXJpYWJsZXMpIHtcbiAgICBtZXRhdmFyaWFibGVzLmZvckVhY2goKG1ldGF2YXJpYWJsZSkgPT4ge1xuICAgICAgdGhpcy5hZGRNZXRhdmFyaWFibGUobWV0YXZhcmlhYmxlKTtcbiAgICB9KTtcbiAgfVxuXG4gIGZpbmRUZXJtQnlUZXJtTm9kZSh0ZXJtTm9kZSkge1xuICAgIGNvbnN0IHRlcm1zID0gdGhpcy5nZXRUZXJtcygpLFxuICAgICAgICAgIHRlcm0gPSB0ZXJtcy5maW5kKCh0ZXJtKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0ZXJtTm9kZU1hdGNoZXMgPSB0ZXJtLm1hdGNoVGVybU5vZGUodGVybU5vZGUpO1xuXG4gICAgICAgICAgICBpZiAodGVybU5vZGVNYXRjaGVzKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pIHx8IG51bGw7XG5cbiAgICByZXR1cm4gdGVybTtcbiAgfVxuXG4gIGZpbmRMaW5rQnlMaW5rTm9kZShsaW5rTm9kZSkge1xuICAgIGNvbnN0IGxpbmtzID0gdGhpcy5nZXRMaW5rcygpLFxuICAgICAgICAgIGxpbmsgPSBsaW5rcy5maW5kKChsaW5rKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBsaW5rTm9kZU1hdGNoZXMgPSBsaW5rLm1hdGNoTGlua05vZGUobGlua05vZGUpO1xuXG4gICAgICAgICAgICBpZiAobGlua05vZGVNYXRjaGVzKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pIHx8IG51bGw7XG5cbiAgICByZXR1cm4gbGluaztcbiAgfVxuXG4gIGZpbmRGcmFtZUJ5RnJhbWVOb2RlKGZyYW1lTm9kZSkge1xuICAgIGNvbnN0IGZyYW1lcyA9IHRoaXMuZ2V0RnJhbWVzKCksXG4gICAgICAgICAgZnJhbWUgPSBmcmFtZXMuZmluZCgoZnJhbWUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZyYW1lTm9kZU1hdGNoZXMgPSBmcmFtZS5tYXRjaEZyYW1lTm9kZShmcmFtZU5vZGUpO1xuXG4gICAgICAgICAgICBpZiAoZnJhbWVOb2RlTWF0Y2hlcykge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSB8fCBudWxsO1xuXG4gICAgcmV0dXJuIGZyYW1lO1xuICB9XG5cbiAgZmluZEVxdWFsaXR5QnlFcXVhbGl0eU5vZGUoZXF1YWxpdHlOb2RlKSB7XG4gICAgY29uc3QgZXF1YWxpdGllcyA9IHRoaXMuZ2V0RXF1YWxpdGllcygpLFxuICAgICAgZXF1YWxpdHkgPSBlcXVhbGl0aWVzLmZpbmQoKGVxdWFsaXR5KSA9PiB7XG4gICAgICAgIGNvbnN0IGVxdWFsaXR5Tm9kZU1hdGNoZXMgPSBlcXVhbGl0eS5tYXRjaEVxdWFsaXR5Tm9kZShlcXVhbGl0eU5vZGUpO1xuXG4gICAgICAgIGlmIChlcXVhbGl0eU5vZGVNYXRjaGVzKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pIHx8IG51bGw7XG5cbiAgICByZXR1cm4gZXF1YWxpdHk7XG4gIH1cblxuICBmaW5kQXNzZXJ0aW9uQnlBc3NlcnRpb25Ob2RlKGFzc2VydGlvbk5vZGUpIHtcbiAgICBjb25zdCBhc3NlcnRpb25zID0gdGhpcy5nZXRBc3NlcnRpb25zKCksXG4gICAgICAgICAgYXNzZXJ0aW9uID0gYXNzZXJ0aW9ucy5maW5kKChhc3NlcnRpb24pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGFzc2VydGlvbk5vZGVNYXRjaGVzID0gYXNzZXJ0aW9uLm1hdGNoQXNzZXJ0aW9uTm9kZShhc3NlcnRpb25Ob2RlKTtcblxuICAgICAgICAgICAgaWYgKGFzc2VydGlvbk5vZGVNYXRjaGVzKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pIHx8IG51bGw7XG5cbiAgICByZXR1cm4gYXNzZXJ0aW9uO1xuICB9XG5cbiAgZmluZFN0YXRlbWVudEJ5U3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlKSB7XG4gICAgY29uc3Qgc3RhdGVtZW50cyA9IHRoaXMuZ2V0U3RhdGVtZW50cygpLFxuICAgICAgICAgIHN0YXRlbWVudCA9IHN0YXRlbWVudHMuZmluZCgoc3RhdGVtZW50KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzdGF0ZW1lbnROb2RlTWF0Y2hlcyA9IHN0YXRlbWVudC5tYXRjaFN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSk7XG5cbiAgICAgICAgICAgIGlmIChzdGF0ZW1lbnROb2RlTWF0Y2hlcykge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSB8fCBudWxsO1xuXG4gICAgcmV0dXJuIHN0YXRlbWVudDtcbiAgfVxuXG4gIGZpbmRBc3N1bXB0aW9uQnlBc3N1bXB0aW9uTm9kZShhc3N1bXB0aW9uTm9kZSkge1xuICAgIGNvbnN0IGFzc3VtcHRpb25zID0gdGhpcy5nZXRBc3N1bXB0aW9ucygpLFxuICAgICAgICAgIGFzc3VtcHRpb24gPSBhc3N1bXB0aW9ucy5maW5kKChhc3N1bXB0aW9uKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBhc3N1bXB0aW9uTm9kZU1hdGNoZXMgPSBhc3N1bXB0aW9uLm1hdGNoQXNzdW1wdGlvbk5vZGUoYXNzdW1wdGlvbk5vZGUpO1xuXG4gICAgICAgICAgICBpZiAoYXNzdW1wdGlvbk5vZGVNYXRjaGVzKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pIHx8IG51bGw7XG5cbiAgICByZXR1cm4gYXNzdW1wdGlvbjtcbiAgfVxuXG4gIGZpbmRNZXRhdmFyaWFibGVCeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSkge1xuICAgIGNvbnN0IG1ldGF2YXJpYWJsZXMgPSB0aGlzLmdldE1ldGF2YXJpYWJsZXMoKSxcbiAgICAgICAgICBtZXRhdmFyaWFibGUgPSBtZXRhdmFyaWFibGVzLmZpbmQoKG1ldGF2YXJpYWJsZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbWV0YXZhcmlhYmxlTm9kZU1hdGNoZXMgPSBtZXRhdmFyaWFibGUubWF0Y2hNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpO1xuXG4gICAgICAgICAgICBpZiAobWV0YXZhcmlhYmxlTm9kZU1hdGNoZXMpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSkgfHwgbnVsbDtcblxuICAgIHJldHVybiBtZXRhdmFyaWFibGU7XG4gIH1cblxuICBmaW5kU3Vic3RpdHV0aW9uQnlTdWJzdGl0dXRpb25Ob2RlKHN1YnN0aXR1dGlvbk5vZGUpIHtcbiAgICBjb25zdCBzdWJzdGl0dXRpb25zID0gdGhpcy5nZXRTdWJzdGl0dXRpb25zKCksXG4gICAgICAgICAgc3Vic3RpdHV0aW9uID0gc3Vic3RpdHV0aW9ucy5maW5kKChzdWJzdGl0dXRpb24pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHN1YnN0aXR1dGlvbk5vZGVNYXRjaGVzID0gc3Vic3RpdHV0aW9uLm1hdGNoU3Vic3RpdHV0aW9uTm9kZShzdWJzdGl0dXRpb25Ob2RlKTtcblxuICAgICAgICAgICAgaWYgKHN1YnN0aXR1dGlvbk5vZGVNYXRjaGVzKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pIHx8IG51bGw7XG5cbiAgICByZXR1cm4gc3Vic3RpdHV0aW9uO1xuICB9XG5cbiAgaXNUZXJtUHJlc2VudEJ5VGVybU5vZGUodGVybU5vZGUpIHtcbiAgICBjb25zdCB0ZXJtID0gdGhpcy5maW5kVGVybUJ5VGVybU5vZGUodGVybU5vZGUpLFxuICAgICAgdGVybVByZXNlbnQgPSAodGVybSAhPT0gbnVsbCk7XG5cbiAgICByZXR1cm4gdGVybVByZXNlbnQ7XG4gIH1cblxuICBpc0xpbmtQcmVzZW50QnlMaW5rTm9kZShsaW5rTm9kZSkge1xuICAgIGNvbnN0IGxpbmsgPSB0aGlzLmZpbmRMaW5rQnlMaW5rTm9kZShsaW5rTm9kZSksXG4gICAgICAgICAgbGlua1ByZXNlbnQgPSAobGluayAhPT0gbnVsbCk7XG5cbiAgICByZXR1cm4gbGlua1ByZXNlbnQ7XG4gIH1cblxuICBpc0ZyYW1lUHJlc2VudEJ5RnJhbWVOb2RlKGZyYW1lTm9kZSkge1xuICAgIGNvbnN0IGZyYW1lID0gdGhpcy5maW5kRnJhbWVCeUZyYW1lTm9kZShmcmFtZU5vZGUpLFxuICAgICAgICAgIGZyYW1lUHJlc2VudCA9IChmcmFtZSAhPT0gbnVsbCk7XG5cbiAgICByZXR1cm4gZnJhbWVQcmVzZW50O1xuICB9XG5cbiAgaXNFcXVhbGl0eVByZXNlbnRCeUVxdWFsaXR5Tm9kZShlcXVhbGl0eU5vZGUpIHtcbiAgICBjb25zdCBlcXVhbGl0eSA9IHRoaXMuZmluZEVxdWFsaXR5QnlFcXVhbGl0eU5vZGUoZXF1YWxpdHlOb2RlKSxcbiAgICAgICAgICBlcXVhbGl0eVByZXNlbnQgPSAoZXF1YWxpdHkgIT09IG51bGwpO1xuXG4gICAgcmV0dXJuIGVxdWFsaXR5UHJlc2VudDtcbiAgfVxuXG4gIGlzQXNzZXJ0aW9uUHJlc2VudEJ5QXNzZXJ0aW9uTm9kZShhc3NlcnRpb25Ob2RlKSB7XG4gICAgY29uc3QgYXNzZXJ0aW9uID0gdGhpcy5maW5kQXNzZXJ0aW9uQnlBc3NlcnRpb25Ob2RlKGFzc2VydGlvbk5vZGUpLFxuICAgICAgICAgIGFzc2VydGlvblByZXNlbnQgPSAoYXNzZXJ0aW9uICE9PSBudWxsKTtcblxuICAgIHJldHVybiBhc3NlcnRpb25QcmVzZW50O1xuICB9XG5cbiAgaXNTdGF0ZW1lbnRQcmVzZW50QnlTdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnQgPSB0aGlzLmZpbmRTdGF0ZW1lbnRCeVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSksXG4gICAgICAgICAgc3RhdGVtZW50UHJlc2VudCA9IChzdGF0ZW1lbnQgIT09IG51bGwpO1xuXG4gICAgcmV0dXJuIHN0YXRlbWVudFByZXNlbnQ7XG4gIH1cblxuICBpc0Fzc3VtcHRpb25QcmVzZW50QnlBc3N1bXB0aW9uTm9kZShhc3N1bXB0aW9uTm9kZSkge1xuICAgIGNvbnN0IGFzc3VtcHRpb24gPSB0aGlzLmZpbmRBc3N1bXB0aW9uQnlBc3N1bXB0aW9uTm9kZShhc3N1bXB0aW9uTm9kZSksXG4gICAgICAgICAgYXNzdW1wdGlvblByZXNlbnQgPSAoYXNzdW1wdGlvbiAhPT0gbnVsbCk7XG5cbiAgICByZXR1cm4gYXNzdW1wdGlvblByZXNlbnQ7XG4gIH1cblxuICBpc01ldGF2YXJpYWJsZVByZXNlbnRCeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSkge1xuICAgIGNvbnN0IG1ldGF2YXJpYWJsZW4gPSB0aGlzLmZpbmRNZXRhdmFyaWFibGVCeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSksXG4gICAgICAgICAgbWV0YXZhcmlhYmxlblByZXNlbnQgPSAobWV0YXZhcmlhYmxlbiAhPT0gbnVsbCk7XG5cbiAgICByZXR1cm4gbWV0YXZhcmlhYmxlblByZXNlbnQ7XG4gIH1cblxuICBpbml0aWFsaXNlKGpzb24pIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpczsgLy8vXG5cbiAgICB0aGlzLnRlcm1zID0gdGVybXNGcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHRoaXMubWV0YXZhcmlhYmxlcyA9IG1ldGF2YXJpYWJsZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHRoaXMuc3RhdGVtZW50cyA9IHN0YXRlbWVudHNGcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHRoaXMuZXF1YWxpdGllcyA9IGVxdWFsaXRpZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KTtcbiAgICB0aGlzLmFzc3VtcHRpb25zID0gYXNzdW1wdGlvbnNGcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHRoaXMubGlua3MgPSBsaW5rc0Zyb21KU09OKGpzb24sIGNvbnRleHQpO1xuICAgIHRoaXMuZnJhbWVzID0gZnJhbWVzRnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICB0aGlzLmFzc2VydGlvbnMgPSBhc3NlcnRpb25zRnJvbUpTT04oanNvbiwgY29udGV4dCk7XG4gICAgdGhpcy5zdWJzdGl0dXRpb25zID0gc3Vic3RpdHV0aW9uc0Zyb21KU09OKGpzb24sIGNvbnRleHQpO1xuICB9XG5cbiAgY29tbWl0KCkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzO1xuXG4gICAgY29udGV4dC5kZWJ1ZyhgQ29tbWl0dGVkIHRoZSBtbmVtaWMgY29udGV4dC5gKTtcblxuICAgIHJldHVybiBjb250ZXh0O1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIGxldCBqc29uO1xuXG4gICAgbGV0IHRlcm1zID0gdGhpcy5nZXRUZXJtcygpLFxuICAgICAgICBsaW5rcyA9IHRoaXMuZ2V0TGlua3MoKSxcbiAgICAgICAgZnJhbWVzID0gdGhpcy5nZXRGcmFtZXMoKSxcbiAgICAgICAgZXF1YWxpdGllcyA9IHRoaXMuZ2V0RXF1YWxpdGllcygpLFxuICAgICAgICBhc3NlcnRpb25zID0gdGhpcy5nZXRBc3NlcnRpb25zKCksXG4gICAgICAgIHN0YXRlbWVudHMgPSB0aGlzLmdldFN0YXRlbWVudHMoKSxcbiAgICAgICAgYXNzdW1wdGlvbnMgPSB0aGlzLmdldEFzc3VtcHRpb25zKCksXG4gICAgICAgIG1ldGF2YXJpYWJsZXMgPSB0aGlzLmdldE1ldGF2YXJpYWJsZXMoKSxcbiAgICAgICAgc3Vic3RpdHV0aW9ucyA9IHRoaXMuZ2V0U3Vic3RpdHV0aW9ucygpO1xuXG4gICAgY29uc3QgdGVybXNKU09OID0gdGVybXNUb1Rlcm1zSlNPTih0ZXJtcyksXG4gICAgICAgICAgbGlua3NKU09OID0gbGlua3NUb0xpbmtzSlNPTihsaW5rcyksXG4gICAgICAgICAgZnJhbWVzSlNPTiA9IGZyYW1lc1RvRnJhbWVzSlNPTihmcmFtZXMpLFxuICAgICAgICAgIGVxdWFsaXRpZXNKU09OID0gZXF1YWxpdGllc1RvRXF1YWxpdGllc0pTT04oZXF1YWxpdGllcyksXG4gICAgICAgICAgYXNzZXJ0aW9uc0pTT04gPSBhc3NlcnRpb25zVG9Bc3NlcnRpb25zSlNPTihhc3NlcnRpb25zKSxcbiAgICAgICAgICBzdGF0ZW1lbnRzSlNPTiA9IHN0YXRlbWVudHNUb1N0YXRlbWVudHNKU09OKHN0YXRlbWVudHMpLFxuICAgICAgICAgIGFzc3VtcHRpb25zSlNPTiA9IGFzc3VtcHRpb25zVG9Bc3N1bXB0aW9uc0pTT04oYXNzdW1wdGlvbnMpLFxuICAgICAgICAgIG1ldGF2YXJpYWJsZXNKU09OID0gbWV0YXZhcmlhYmxlc1RvTWV0YXZhcmlhYmxlc0pTT04obWV0YXZhcmlhYmxlcyksXG4gICAgICAgICAgc3Vic3RpdHV0aW9uc0pTT04gPSBzdWJzdGl0dXRpb25zVG9TdWJzdGl0dXRpb25zSlNPTihzdWJzdGl0dXRpb25zKTtcblxuICAgIHRlcm1zID0gdGVybXNKU09OOyAvLy9cbiAgICBsaW5rcyA9IGxpbmtzSlNPTjsgLy8vXG4gICAgZnJhbWVzID0gZnJhbWVzSlNPTjsgLy8vXG4gICAgZXF1YWxpdGllcyA9IGVxdWFsaXRpZXNKU09OOyAvLy9cbiAgICBhc3NlcnRpb25zID0gYXNzZXJ0aW9uc0pTT047IC8vL1xuICAgIHN0YXRlbWVudHMgPSBzdGF0ZW1lbnRzSlNPTjsgLy8vXG4gICAgYXNzdW1wdGlvbnMgPSBhc3N1bXB0aW9uc0pTT047IC8vL1xuICAgIG1ldGF2YXJpYWJsZXMgPSBtZXRhdmFyaWFibGVzSlNPTjsgIC8vXG4gICAgc3Vic3RpdHV0aW9ucyA9IHN1YnN0aXR1dGlvbnNKU09OOyAvLy9cblxuICAgIGpzb24gPSB7XG4gICAgICB0ZXJtcyxcbiAgICAgIGxpbmtzLFxuICAgICAgZnJhbWVzLFxuICAgICAgZXF1YWxpdGllcyxcbiAgICAgIGFzc2VydGlvbnMsXG4gICAgICBzdGF0ZW1lbnRzLFxuICAgICAgYXNzdW1wdGlvbnMsXG4gICAgICBtZXRhdmFyaWFibGVzLFxuICAgICAgc3Vic3RpdHV0aW9uc1xuICAgIH07XG5cbiAgICByZXR1cm4ganNvbjtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gICAgY29uc3QgdGVybXMgPSBudWxsLFxuICAgICAgICAgIGxpbmtzID0gbnVsbCxcbiAgICAgICAgICBmcmFtZXMgPSBudWxsLFxuICAgICAgICAgIGVxdWFsaXRpZXMgPSBudWxsLFxuICAgICAgICAgIHN0YXRlbWVudHMgPSBudWxsLFxuICAgICAgICAgIGFzc2VydGlvbnMgPSBudWxsLFxuICAgICAgICAgIGFzc3VtcHRpb25zID0gbnVsbCxcbiAgICAgICAgICBtZXRhdmFyaWFibGVzID0gbnVsbCxcbiAgICAgICAgICBzdWJzdGl0dXRpb25zID0gbnVsbCxcbiAgICAgICAgICBtbmVtaWNDb250ZXh0ID0gbmV3IE1uZW1pY0NvbnRleHQoY29udGV4dCwgdGVybXMsIGxpbmtzLCBmcmFtZXMsIGVxdWFsaXRpZXMsIGFzc2VydGlvbnMsIHN0YXRlbWVudHMsIGFzc3VtcHRpb25zLCBtZXRhdmFyaWFibGVzLCBzdWJzdGl0dXRpb25zKTtcblxuICAgIG1uZW1pY0NvbnRleHQuaW5pdGlhbGlzZShqc29uKTtcblxuICAgIHJldHVybiBtbmVtaWNDb250ZXh0O1xuICB9XG5cbiAgc3RhdGljIGZyb21Ob3RoaW5nKGNvbnRleHQpIHtcbiAgICBjb25zdCB0ZXJtcyA9IFtdLFxuICAgICAgICAgIGxpbmtzID0gW10sXG4gICAgICAgICAgZnJhbWVzID0gW10sXG4gICAgICAgICAgZXF1YWxpdGllcyA9IFtdLFxuICAgICAgICAgIHN0YXRlbWVudHMgPSBbXSxcbiAgICAgICAgICBhc3NlcnRpb25zID0gW10sXG4gICAgICAgICAgYXNzdW1wdGlvbnMgPSBbXSxcbiAgICAgICAgICBtZXRhdmFyaWFibGVzID0gW10sXG4gICAgICAgICAgc3Vic3RpdHV0aW9ucyA9IFtdLFxuICAgICAgICAgIG1uZW1pY0NvbnRleHQgPSBuZXcgTW5lbWljQ29udGV4dChjb250ZXh0LCB0ZXJtcywgbGlua3MsIGZyYW1lcywgZXF1YWxpdGllcywgYXNzZXJ0aW9ucywgc3RhdGVtZW50cywgYXNzdW1wdGlvbnMsIG1ldGF2YXJpYWJsZXMsIHN1YnN0aXR1dGlvbnMpO1xuXG4gICAgcmV0dXJuIG1uZW1pY0NvbnRleHQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJNbmVtaWNDb250ZXh0IiwicHVzaCIsImV4dHJhY3QiLCJhcnJheVV0aWxpdGllcyIsIkNvbnRleHQiLCJjb250ZXh0IiwidGVybXMiLCJsaW5rcyIsImZyYW1lcyIsImVxdWFsaXRpZXMiLCJhc3NlcnRpb25zIiwic3RhdGVtZW50cyIsImFzc3VtcHRpb25zIiwibWV0YXZhcmlhYmxlcyIsInN1YnN0aXR1dGlvbnMiLCJnZXRUZXJtcyIsImdldENvbnRleHQiLCJnZXRMaW5rcyIsImdldEZyYW1lcyIsImdldEVxdWFsaXRpZXMiLCJnZXRTdGF0ZW1lbnRzIiwiZ2V0QXNzZXJ0aW9ucyIsImdldEFzc3VtcHRpb25zIiwiZ2V0TWV0YXZhcmlhYmxlcyIsImdldFN1YnN0aXR1dGlvbnMiLCJhZGRUZXJtIiwidGVybSIsInRlcm1TdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsInRlcm1BIiwidGVybUIiLCJ0ZXJtQUVxdWFsVG9UZXJtQiIsImlzRXF1YWxUbyIsImRlYnVnIiwiYWRkTGluayIsImxpbmsiLCJsaW5rU3RyaW5nIiwibGlua0EiLCJsaW5rQiIsImxpbmtBRXF1YWxUb0xpbmtCIiwiYWRkRnJhbWUiLCJmcmFtZSIsImZyYW1lU3RyaW5nIiwiZnJhbWVBIiwiZnJhbWVCIiwiZnJhbWVBRXF1YWxUb0ZyYW1lQiIsImFkZEVxdWFsaXR5IiwiZXF1YWxpdHkiLCJlcXVhbGl0eVN0cmluZyIsImVxdWFsaXR5QSIsImVxdWFsaXR5QiIsImVxdWFsaXR5QUVxdWFsVG9FcXVhbGl0eUIiLCJhZGRBc3NlcnRpb24iLCJhc3NlcnRpb24iLCJhc3NlcnRpb25TdHJpbmciLCJhc3NlcnRpb25BIiwiYXNzZXJ0aW9uQiIsImFzc2VydGlvbkFFcXVhbFRvQXNzZXJ0aW9uQiIsImFkZFN0YXRlbWVudCIsInN0YXRlbWVudCIsInN0YXRlbWVudFN0cmluZyIsInN0YXRlbWVudEEiLCJzdGF0ZW1lbnRCIiwic3RhdGVtZW50QUVxdWFsVG9TdGF0ZW1lbnRCIiwiYWRkQXNzdW1wdGlvbiIsImFzc3VtcHRpb24iLCJhc3N1bXB0aW9uU3RyaW5nIiwiYXNzdW1wdGlvbkEiLCJhc3N1bXB0aW9uQiIsImFzc3VtcHRpb25BRXF1YWxUb0Fzc3VtcHRpb25CIiwiYWRkTWV0YXZhcmlhYmxlIiwibWV0YXZhcmlhYmxlIiwibWV0YXZhcmlhYmxlU3RyaW5nIiwibWV0YXZhcmlhYmxlQSIsIm1ldGF2YXJpYWJsZUIiLCJtZXRhdmFyaWFibGVBRXF1YWxUb01ldGF2YXJpYWJsZUIiLCJhZGRTdWJzdGl0dXRpb24iLCJzdWJzdGl0dXRpb24iLCJzdWJzdGl0dXRpb25TdHJpbmciLCJzdWJzdGl0dXRpb25BIiwic3Vic3RpdHV0aW9uQiIsInN1YnN0aXR1dGlvbkFFcXVhbFRvU3Vic3RpdHV0aW9uQiIsImFkZEFzc2lnbm1lbnQiLCJhc3NpZ25tZW50IiwiYWRkSW5mZXJyZWRTdWJzdGl0dXRpb25zIiwiaW5mZXJyZWRTdWJzdGl0dXRpb25zIiwiYWRkVGVybXMiLCJmb3JFYWNoIiwiYWRkTGlua3MiLCJhZGRGcmFtZXMiLCJhZGRFcXVhbGl0aWVzIiwiYWRkQXNzZXJ0aW9ucyIsImFkZFN0YXRlbWVudHMiLCJhZGRBc3N1bXB0aW9ucyIsImFkZE1ldGF2YXJpYWJsZXMiLCJmaW5kVGVybUJ5VGVybU5vZGUiLCJ0ZXJtTm9kZSIsImZpbmQiLCJ0ZXJtTm9kZU1hdGNoZXMiLCJtYXRjaFRlcm1Ob2RlIiwiZmluZExpbmtCeUxpbmtOb2RlIiwibGlua05vZGUiLCJsaW5rTm9kZU1hdGNoZXMiLCJtYXRjaExpbmtOb2RlIiwiZmluZEZyYW1lQnlGcmFtZU5vZGUiLCJmcmFtZU5vZGUiLCJmcmFtZU5vZGVNYXRjaGVzIiwibWF0Y2hGcmFtZU5vZGUiLCJmaW5kRXF1YWxpdHlCeUVxdWFsaXR5Tm9kZSIsImVxdWFsaXR5Tm9kZSIsImVxdWFsaXR5Tm9kZU1hdGNoZXMiLCJtYXRjaEVxdWFsaXR5Tm9kZSIsImZpbmRBc3NlcnRpb25CeUFzc2VydGlvbk5vZGUiLCJhc3NlcnRpb25Ob2RlIiwiYXNzZXJ0aW9uTm9kZU1hdGNoZXMiLCJtYXRjaEFzc2VydGlvbk5vZGUiLCJmaW5kU3RhdGVtZW50QnlTdGF0ZW1lbnROb2RlIiwic3RhdGVtZW50Tm9kZSIsInN0YXRlbWVudE5vZGVNYXRjaGVzIiwibWF0Y2hTdGF0ZW1lbnROb2RlIiwiZmluZEFzc3VtcHRpb25CeUFzc3VtcHRpb25Ob2RlIiwiYXNzdW1wdGlvbk5vZGUiLCJhc3N1bXB0aW9uTm9kZU1hdGNoZXMiLCJtYXRjaEFzc3VtcHRpb25Ob2RlIiwiZmluZE1ldGF2YXJpYWJsZUJ5TWV0YXZhcmlhYmxlTm9kZSIsIm1ldGF2YXJpYWJsZU5vZGUiLCJtZXRhdmFyaWFibGVOb2RlTWF0Y2hlcyIsIm1hdGNoTWV0YXZhcmlhYmxlTm9kZSIsImZpbmRTdWJzdGl0dXRpb25CeVN1YnN0aXR1dGlvbk5vZGUiLCJzdWJzdGl0dXRpb25Ob2RlIiwic3Vic3RpdHV0aW9uTm9kZU1hdGNoZXMiLCJtYXRjaFN1YnN0aXR1dGlvbk5vZGUiLCJpc1Rlcm1QcmVzZW50QnlUZXJtTm9kZSIsInRlcm1QcmVzZW50IiwiaXNMaW5rUHJlc2VudEJ5TGlua05vZGUiLCJsaW5rUHJlc2VudCIsImlzRnJhbWVQcmVzZW50QnlGcmFtZU5vZGUiLCJmcmFtZVByZXNlbnQiLCJpc0VxdWFsaXR5UHJlc2VudEJ5RXF1YWxpdHlOb2RlIiwiZXF1YWxpdHlQcmVzZW50IiwiaXNBc3NlcnRpb25QcmVzZW50QnlBc3NlcnRpb25Ob2RlIiwiYXNzZXJ0aW9uUHJlc2VudCIsImlzU3RhdGVtZW50UHJlc2VudEJ5U3RhdGVtZW50Tm9kZSIsInN0YXRlbWVudFByZXNlbnQiLCJpc0Fzc3VtcHRpb25QcmVzZW50QnlBc3N1bXB0aW9uTm9kZSIsImFzc3VtcHRpb25QcmVzZW50IiwiaXNNZXRhdmFyaWFibGVQcmVzZW50QnlNZXRhdmFyaWFibGVOb2RlIiwibWV0YXZhcmlhYmxlbiIsIm1ldGF2YXJpYWJsZW5QcmVzZW50IiwiaW5pdGlhbGlzZSIsImpzb24iLCJ0ZXJtc0Zyb21KU09OIiwibWV0YXZhcmlhYmxlc0Zyb21KU09OIiwic3RhdGVtZW50c0Zyb21KU09OIiwiZXF1YWxpdGllc0Zyb21KU09OIiwiYXNzdW1wdGlvbnNGcm9tSlNPTiIsImxpbmtzRnJvbUpTT04iLCJmcmFtZXNGcm9tSlNPTiIsImFzc2VydGlvbnNGcm9tSlNPTiIsInN1YnN0aXR1dGlvbnNGcm9tSlNPTiIsImNvbW1pdCIsInRvSlNPTiIsInRlcm1zSlNPTiIsInRlcm1zVG9UZXJtc0pTT04iLCJsaW5rc0pTT04iLCJsaW5rc1RvTGlua3NKU09OIiwiZnJhbWVzSlNPTiIsImZyYW1lc1RvRnJhbWVzSlNPTiIsImVxdWFsaXRpZXNKU09OIiwiZXF1YWxpdGllc1RvRXF1YWxpdGllc0pTT04iLCJhc3NlcnRpb25zSlNPTiIsImFzc2VydGlvbnNUb0Fzc2VydGlvbnNKU09OIiwic3RhdGVtZW50c0pTT04iLCJzdGF0ZW1lbnRzVG9TdGF0ZW1lbnRzSlNPTiIsImFzc3VtcHRpb25zSlNPTiIsImFzc3VtcHRpb25zVG9Bc3N1bXB0aW9uc0pTT04iLCJtZXRhdmFyaWFibGVzSlNPTiIsIm1ldGF2YXJpYWJsZXNUb01ldGF2YXJpYWJsZXNKU09OIiwic3Vic3RpdHV0aW9uc0pTT04iLCJzdWJzdGl0dXRpb25zVG9TdWJzdGl0dXRpb25zSlNPTiIsImZyb21KU09OIiwibW5lbWljQ29udGV4dCIsImZyb21Ob3RoaW5nIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkEyQkE7OztlQUFxQkE7OzsyQkF6QlU7Z0VBRVg7c0JBbUI2Qjs7Ozs7O0FBRWpELE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxPQUFPLEVBQUUsR0FBR0MseUJBQWM7QUFFekIsTUFBTUgsc0JBQXNCSSxnQkFBTztJQUNoRCxZQUFZQyxPQUFPLEVBQUVDLEtBQUssRUFBRUMsS0FBSyxFQUFFQyxNQUFNLEVBQUVDLFVBQVUsRUFBRUMsVUFBVSxFQUFFQyxVQUFVLEVBQUVDLFdBQVcsRUFBRUMsYUFBYSxFQUFFQyxhQUFhLENBQUU7UUFDeEgsS0FBSyxDQUFDVDtRQUVOLElBQUksQ0FBQ0MsS0FBSyxHQUFHQTtRQUNiLElBQUksQ0FBQ0MsS0FBSyxHQUFHQTtRQUNiLElBQUksQ0FBQ0MsTUFBTSxHQUFHQTtRQUNkLElBQUksQ0FBQ0MsVUFBVSxHQUFHQTtRQUNsQixJQUFJLENBQUNDLFVBQVUsR0FBR0E7UUFDbEIsSUFBSSxDQUFDQyxVQUFVLEdBQUdBO1FBQ2xCLElBQUksQ0FBQ0MsV0FBVyxHQUFHQTtRQUNuQixJQUFJLENBQUNDLGFBQWEsR0FBR0E7UUFDckIsSUFBSSxDQUFDQyxhQUFhLEdBQUdBO0lBQ3ZCO0lBRUFDLFNBQVNULFFBQVEsRUFBRSxFQUFFO1FBQ25CLE1BQU1ELFVBQVUsSUFBSSxDQUFDVyxVQUFVO1FBRS9CZixLQUFLSyxPQUFPLElBQUksQ0FBQ0EsS0FBSztRQUV0QkQsUUFBUVUsUUFBUSxDQUFDVDtRQUVqQixPQUFPQTtJQUNUO0lBRUFXLFNBQVNWLFFBQVEsRUFBRSxFQUFFO1FBQ25CLE1BQU1GLFVBQVUsSUFBSSxDQUFDVyxVQUFVO1FBRS9CZixLQUFLTSxPQUFPLElBQUksQ0FB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
|
|
436
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250ZXh0L21uZW1pYy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgYXJyYXlVdGlsaXRpZXMgfSBmcm9tIFwibmVjZXNzYXJ5XCI7XG5cbmltcG9ydCBDb250ZXh0IGZyb20gXCIuLi9jb250ZXh0XCI7XG5cbmltcG9ydCB7IHRlcm1zRnJvbUpTT04sXG4gICAgICAgICBsaW5rc0Zyb21KU09OLFxuICAgICAgICAgZnJhbWVzRnJvbUpTT04sXG4gICAgICAgICB0ZXJtc1RvVGVybXNKU09OLFxuICAgICAgICAgbGlua3NUb0xpbmtzSlNPTixcbiAgICAgICAgIGZyYW1lc1RvRnJhbWVzSlNPTixcbiAgICAgICAgIGVxdWFsaXRpZXNGcm9tSlNPTixcbiAgICAgICAgIHN0YXRlbWVudHNGcm9tSlNPTixcbiAgICAgICAgIGFzc2VydGlvbnNGcm9tSlNPTixcbiAgICAgICAgIGFzc3VtcHRpb25zRnJvbUpTT04sXG4gICAgICAgICBtZXRhdmFyaWFibGVzRnJvbUpTT04sXG4gICAgICAgICBzdWJzdGl0dXRpb25zRnJvbUpTT04sXG4gICAgICAgICBlcXVhbGl0aWVzVG9FcXVhbGl0aWVzSlNPTixcbiAgICAgICAgIHN0YXRlbWVudHNUb1N0YXRlbWVudHNKU09OLFxuICAgICAgICAgYXNzZXJ0aW9uc1RvQXNzZXJ0aW9uc0pTT04sXG4gICAgICAgICBhc3N1bXB0aW9uc1RvQXNzdW1wdGlvbnNKU09OLFxuICAgICAgICAgbWV0YXZhcmlhYmxlc1RvTWV0YXZhcmlhYmxlc0pTT04sXG4gICAgICAgICBzdWJzdGl0dXRpb25zVG9TdWJzdGl0dXRpb25zSlNPTiB9IGZyb20gXCIuLi91dGlsaXRpZXMvanNvblwiO1xuXG5jb25zdCB7IHB1c2gsIGV4dHJhY3QgfSA9IGFycmF5VXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBNbmVtaWNDb250ZXh0IGV4dGVuZHMgQ29udGV4dCB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHRlcm1zLCBsaW5rcywgZnJhbWVzLCBlcXVhbGl0aWVzLCBhc3NlcnRpb25zLCBzdGF0ZW1lbnRzLCBhc3N1bXB0aW9ucywgbWV0YXZhcmlhYmxlcywgc3Vic3RpdHV0aW9ucykge1xuICAgIHN1cGVyKGNvbnRleHQpO1xuXG4gICAgdGhpcy50ZXJtcyA9IHRlcm1zO1xuICAgIHRoaXMubGlua3MgPSBsaW5rcztcbiAgICB0aGlzLmZyYW1lcyA9IGZyYW1lcztcbiAgICB0aGlzLmVxdWFsaXRpZXMgPSBlcXVhbGl0aWVzO1xuICAgIHRoaXMuYXNzZXJ0aW9ucyA9IGFzc2VydGlvbnM7XG4gICAgdGhpcy5zdGF0ZW1lbnRzID0gc3RhdGVtZW50cztcbiAgICB0aGlzLmFzc3VtcHRpb25zID0gYXNzdW1wdGlvbnM7XG4gICAgdGhpcy5tZXRhdmFyaWFibGVzID0gbWV0YXZhcmlhYmxlcztcbiAgICB0aGlzLnN1YnN0aXR1dGlvbnMgPSBzdWJzdGl0dXRpb25zO1xuICB9XG5cbiAgZ2V0VGVybXModGVybXMgPSBbXSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIHB1c2godGVybXMsIHRoaXMudGVybXMpO1xuXG4gICAgY29udGV4dC5nZXRUZXJtcyh0ZXJtcyk7XG5cbiAgICByZXR1cm4gdGVybXM7XG4gIH1cblxuICBnZXRMaW5rcyhsaW5rcyA9IFtdKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgcHVzaChsaW5rcywgdGhpcy5saW5rcyk7XG5cbiAgICBjb250ZXh0LmdldExpbmtzKGxpbmtzKTtcblxuICAgIHJldHVybiBsaW5rcztcbiAgfVxuXG4gIGdldEZyYW1lcyhmcmFtZXMgPSBbXSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIHB1c2goZnJhbWVzLCB0aGlzLmZyYW1lcyk7XG5cbiAgICBjb250ZXh0LmdldEZyYW1lcyhmcmFtZXMpO1xuXG4gICAgcmV0dXJuIGZyYW1lcztcbiAgfVxuXG4gIGdldEVxdWFsaXRpZXMoZXF1YWxpdGllcyA9IFtdKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgcHVzaChlcXVhbGl0aWVzLCB0aGlzLmVxdWFsaXRpZXMpO1xuXG4gICAgY29udGV4dC5nZXRFcXVhbGl0aWVzKGVxdWFsaXRpZXMpO1xuXG4gICAgcmV0dXJuIGVxdWFsaXRpZXM7XG4gIH1cblxuICBnZXRTdGF0ZW1lbnRzKHN0YXRlbWVudHMgPSBbXSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIHB1c2goc3RhdGVtZW50cywgdGhpcy5zdGF0ZW1lbnRzKTtcblxuICAgIGNvbnRleHQuZ2V0U3RhdGVtZW50cyhzdGF0ZW1lbnRzKTtcblxuICAgIHJldHVybiBzdGF0ZW1lbnRzO1xuICB9XG5cbiAgZ2V0QXNzZXJ0aW9ucyhhc3NlcnRpb25zID0gW10pIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBwdXNoKGFzc2VydGlvbnMsIHRoaXMuYXNzZXJ0aW9ucyk7XG5cbiAgICBjb250ZXh0LmdldEFzc2VydGlvbnMoYXNzZXJ0aW9ucyk7XG5cbiAgICByZXR1cm4gYXNzZXJ0aW9ucztcbiAgfVxuXG4gIGdldEFzc3VtcHRpb25zKGFzc3VtcHRpb25zID0gW10pIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBwdXNoKGFzc3VtcHRpb25zLCB0aGlzLmFzc3VtcHRpb25zKTtcblxuICAgIGNvbnRleHQuZ2V0QXNzdW1wdGlvbnMoYXNzdW1wdGlvbnMpO1xuXG4gICAgcmV0dXJuIGFzc3VtcHRpb25zO1xuICB9XG5cbiAgZ2V0TWV0YXZhcmlhYmxlcyhtZXRhdmFyaWFibGVzID0gW10pIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBwdXNoKG1ldGF2YXJpYWJsZXMsIHRoaXMubWV0YXZhcmlhYmxlcyk7XG5cbiAgICBjb250ZXh0LmdldE1ldGF2YXJpYWJsZXMobWV0YXZhcmlhYmxlcyk7XG5cbiAgICByZXR1cm4gbWV0YXZhcmlhYmxlcztcbiAgfVxuXG4gIGdldFN1YnN0aXR1dGlvbnMoc3Vic3RpdHV0aW9ucyA9IFtdKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgcHVzaChzdWJzdGl0dXRpb25zLCB0aGlzLnN1YnN0aXR1dGlvbnMpO1xuXG4gICAgY29udGV4dC5nZXRTdWJzdGl0dXRpb25zKHN1YnN0aXR1dGlvbnMpO1xuXG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbnM7XG4gIH1cblxuICBhZGRUZXJtKHRlcm0pIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcywgLy8vXG4gICAgICAgICAgdGVybVN0cmluZyA9IHRlcm0uZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBBZGRpbmcgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtIHRvIHRoZSBtbmVtaWMgY29udGV4dC4uLmApO1xuXG4gICAgY29uc3QgdGVybUEgPSB0ZXJtOyAvLy9cblxuICAgIGV4dHJhY3QodGhpcy50ZXJtcywgKHRlcm0pID0+IHtcbiAgICAgIGNvbnN0IHRlcm1CID0gdGVybSwgLy8vXG4gICAgICAgICAgICB0ZXJtQUVxdWFsVG9UZXJtQiA9IHRlcm1BLmlzRXF1YWxUbyh0ZXJtQik7XG5cbiAgICAgIGlmICh0ZXJtQUVxdWFsVG9UZXJtQikge1xuICAgICAgICBjb25zdCB0ZXJtU3RyaW5nID0gdGVybS5nZXRTdHJpbmcoKTtcblxuICAgICAgICBjb250ZXh0LnRyYWNlKGBSZW1vdmVkIHRoZSBleGlzdGluZyAnJHt0ZXJtU3RyaW5nfScgdGVybSBmcm9tIHRoZSBtbmVtaWMgY29udGV4dC4uLmApO1xuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy50ZXJtcy5wdXNoKHRlcm0pO1xuXG4gICAgY29udGV4dC5kZWJ1ZyhgLi4uYWRkZWQgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtIHRvIHRoZSBtbmVtaWMgY29udGV4dC5gKTtcbiAgfVxuXG4gIGFkZExpbmsobGluaykge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLCAvLy9cbiAgICAgICAgICBsaW5rU3RyaW5nID0gbGluay5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYEFkZGluZyB0aGUgJyR7bGlua1N0cmluZ30nIGxpbmsgdG8gdGhlIG1uZW1pYyBjb250ZXh0Li4uYCk7XG5cbiAgICBjb25zdCBsaW5rQSA9IGxpbms7IC8vL1xuXG4gICAgZXh0cmFjdCh0aGlzLmxpbmtzLCAobGluaykgPT4ge1xuICAgICAgY29uc3QgbGlua0IgPSBsaW5rLCAvLy9cbiAgICAgICAgICAgIGxpbmtBRXF1YWxUb0xpbmtCID0gbGlua0EuaXNFcXVhbFRvKGxpbmtCKTtcblxuICAgICAgaWYgKGxpbmtBRXF1YWxUb0xpbmtCKSB7XG4gICAgICAgIGNvbnN0IGxpbmtTdHJpbmcgPSBsaW5rLmdldFN0cmluZygpO1xuXG4gICAgICAgIGNvbnRleHQudHJhY2UoYFJlbW92ZWQgdGhlIGV4aXN0aW5nICcke2xpbmtTdHJpbmd9JyBsaW5rIGZyb20gdGhlIG1uZW1pYyBjb250ZXh0Li4uYCk7XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLmxpbmtzLnB1c2gobGluayk7XG5cbiAgICBjb250ZXh0LmRlYnVnKGAuLi5hZGRlZCB0aGUgJyR7bGlua1N0cmluZ30nIGxpbmsgdG8gdGhlIG1uZW1pYyBjb250ZXh0LmApO1xuICB9XG5cbiAgYWRkRnJhbWUoZnJhbWUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcywgLy8vXG4gICAgICAgICAgZnJhbWVTdHJpbmcgPSBmcmFtZS5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYEFkZGluZyB0aGUgJyR7ZnJhbWVTdHJpbmd9JyBmcmFtZSB0byB0aGUgbW5lbWljIGNvbnRleHQuLi5gKTtcblxuICAgIGNvbnN0IGZyYW1lQSA9IGZyYW1lOyAvLy9cblxuICAgIGV4dHJhY3QodGhpcy5mcmFtZXMsIChmcmFtZSkgPT4ge1xuICAgICAgY29uc3QgZnJhbWVCID0gZnJhbWUsIC8vL1xuICAgICAgICAgICAgZnJhbWVBRXF1YWxUb0ZyYW1lQiA9IGZyYW1lQS5pc0VxdWFsVG8oZnJhbWVCKTtcblxuICAgICAgaWYgKGZyYW1lQUVxdWFsVG9GcmFtZUIpIHtcbiAgICAgICAgY29uc3QgZnJhbWVTdHJpbmcgPSBmcmFtZS5nZXRTdHJpbmcoKTtcblxuICAgICAgICBjb250ZXh0LnRyYWNlKGBSZW1vdmVkIHRoZSBleGlzdGluZyAnJHtmcmFtZVN0cmluZ30nIGZyYW1lIGZyb20gdGhlIG1uZW1pYyBjb250ZXh0Li4uYCk7XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLmZyYW1lcy5wdXNoKGZyYW1lKTtcblxuICAgIGNvbnRleHQuZGVidWcoYC4uLmFkZGVkIHRoZSAnJHtmcmFtZVN0cmluZ30nIGZyYW1lIHRvIHRoZSBtbmVtaWMgY29udGV4dC5gKTtcbiAgfVxuXG4gIGFkZEVxdWFsaXR5KGVxdWFsaXR5KSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMsIC8vL1xuICAgICAgICAgIGVxdWFsaXR5U3RyaW5nID0gZXF1YWxpdHkuZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBBZGRpbmcgdGhlICcke2VxdWFsaXR5U3RyaW5nfScgZXF1YWxpdHkgdG8gdGhlIG1uZW1pYyBjb250ZXh0Li4uYCk7XG5cbiAgICBjb25zdCBlcXVhbGl0eUEgPSBlcXVhbGl0eTsgLy8vXG5cbiAgICBleHRyYWN0KHRoaXMuZXF1YWxpdGllcywgKGVxdWFsaXR5KSA9PiB7XG4gICAgICBjb25zdCBlcXVhbGl0eUIgPSBlcXVhbGl0eSwgLy8vXG4gICAgICAgICAgICBlcXVhbGl0eUFFcXVhbFRvRXF1YWxpdHlCID0gZXF1YWxpdHlBLmlzRXF1YWxUbyhlcXVhbGl0eUIpO1xuXG4gICAgICBpZiAoZXF1YWxpdHlBRXF1YWxUb0VxdWFsaXR5Qikge1xuICAgICAgICBjb25zdCBlcXVhbGl0eVN0cmluZyA9IGVxdWFsaXR5LmdldFN0cmluZygpO1xuXG4gICAgICAgIGNvbnRleHQudHJhY2UoYFJlbW92ZWQgdGhlIGV4aXN0aW5nICcke2VxdWFsaXR5U3RyaW5nfScgZXF1YWxpdHkgZnJvbSB0aGUgbW5lbWljIGNvbnRleHQuLi5gKTtcblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuZXF1YWxpdGllcy5wdXNoKGVxdWFsaXR5KTtcblxuICAgIGNvbnRleHQuZGVidWcoYC4uLmFkZGVkIHRoZSAnJHtlcXVhbGl0eVN0cmluZ30nIGVxdWFsaXR5IHRvIHRoZSBtbmVtaWMgY29udGV4dC5gKTtcbiAgfVxuXG4gIGFkZEFzc2VydGlvbihhc3NlcnRpb24pIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcywgLy8vXG4gICAgICAgICAgYXNzZXJ0aW9uU3RyaW5nID0gYXNzZXJ0aW9uLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgQWRkaW5nIHRoZSAnJHthc3NlcnRpb25TdHJpbmd9JyBhc3NlcnRpb24gdG8gdGhlIG1uZW1pYyBjb250ZXh0Li4uYCk7XG5cbiAgICBjb25zdCBhc3NlcnRpb25BID0gYXNzZXJ0aW9uOyAvLy9cblxuICAgIGV4dHJhY3QodGhpcy5hc3NlcnRpb25zLCAoYXNzZXJ0aW9uKSA9PiB7XG4gICAgICBjb25zdCBhc3NlcnRpb25CID0gYXNzZXJ0aW9uLCAvLy9cbiAgICAgICAgICAgIGFzc2VydGlvbkFFcXVhbFRvQXNzZXJ0aW9uQiA9IGFzc2VydGlvbkEuaXNFcXVhbFRvKGFzc2VydGlvbkIpO1xuXG4gICAgICBpZiAoYXNzZXJ0aW9uQUVxdWFsVG9Bc3NlcnRpb25CKSB7XG4gICAgICAgIGNvbnN0IGFzc2VydGlvblN0cmluZyA9IGFzc2VydGlvbi5nZXRTdHJpbmcoKTtcblxuICAgICAgICBjb250ZXh0LnRyYWNlKGBSZW1vdmVkIHRoZSBleGlzdGluZyAnJHthc3NlcnRpb25TdHJpbmd9JyBhc3NlcnRpb24gZnJvbSB0aGUgbW5lbWljIGNvbnRleHQuLi5gKTtcblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuYXNzZXJ0aW9ucy5wdXNoKGFzc2VydGlvbik7XG5cbiAgICBjb250ZXh0LmRlYnVnKGAuLi5hZGRlZCB0aGUgJyR7YXNzZXJ0aW9uU3RyaW5nfScgYXNzZXJ0aW9uIHRvIHRoZSBtbmVtaWMgY29udGV4dC5gKTtcbiAgfVxuXG4gIGFkZFN0YXRlbWVudChzdGF0ZW1lbnQpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcywgLy8vXG4gICAgICAgICAgc3RhdGVtZW50U3RyaW5nID0gc3RhdGVtZW50LmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgQWRkaW5nIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgdG8gdGhlIG1uZW1pYyBjb250ZXh0Li4uYCk7XG5cbiAgICBjb25zdCBzdGF0ZW1lbnRBID0gc3RhdGVtZW50OyAvLy9cblxuICAgIGV4dHJhY3QodGhpcy5zdGF0ZW1lbnRzLCAoc3RhdGVtZW50KSA9PiB7XG4gICAgICBjb25zdCBzdGF0ZW1lbnRCID0gc3RhdGVtZW50LCAvLy9cbiAgICAgICAgICAgIHN0YXRlbWVudEFFcXVhbFRvU3RhdGVtZW50QiA9IHN0YXRlbWVudEEuaXNFcXVhbFRvKHN0YXRlbWVudEIpO1xuXG4gICAgICBpZiAoc3RhdGVtZW50QUVxdWFsVG9TdGF0ZW1lbnRCKSB7XG4gICAgICAgIGNvbnN0IHN0YXRlbWVudFN0cmluZyA9IHN0YXRlbWVudC5nZXRTdHJpbmcoKTtcblxuICAgICAgICBjb250ZXh0LnRyYWNlKGBSZW1vdmVkIHRoZSBleGlzdGluZyAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgZnJvbSB0aGUgbW5lbWljIGNvbnRleHQuLi5gKTtcblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuc3RhdGVtZW50cy5wdXNoKHN0YXRlbWVudCk7XG5cbiAgICBjb250ZXh0LmRlYnVnKGAuLi5hZGRlZCB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IHRvIHRoZSBtbmVtaWMgY29udGV4dC5gKTtcbiAgfVxuXG4gIGFkZEFzc3VtcHRpb24oYXNzdW1wdGlvbikge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLCAvLy9cbiAgICAgICAgICBhc3N1bXB0aW9uU3RyaW5nID0gYXNzdW1wdGlvbi5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYEFkZGluZyB0aGUgJyR7YXNzdW1wdGlvblN0cmluZ30nIGFzc3VtcHRpb24gdG8gdGhlIG1uZW1pYyBjb250ZXh0Li4uYCk7XG5cbiAgICBjb25zdCBhc3N1bXB0aW9uQSA9IGFzc3VtcHRpb247IC8vL1xuXG4gICAgZXh0cmFjdCh0aGlzLmFzc3VtcHRpb25zLCAoYXNzdW1wdGlvbikgPT4ge1xuICAgICAgY29uc3QgYXNzdW1wdGlvbkIgPSBhc3N1bXB0aW9uLCAvLy9cbiAgICAgICAgICAgIGFzc3VtcHRpb25BRXF1YWxUb0Fzc3VtcHRpb25CID0gYXNzdW1wdGlvbkEuaXNFcXVhbFRvKGFzc3VtcHRpb25CKTtcblxuICAgICAgaWYgKGFzc3VtcHRpb25BRXF1YWxUb0Fzc3VtcHRpb25CKSB7XG4gICAgICAgIGNvbnN0IGFzc3VtcHRpb25TdHJpbmcgPSBhc3N1bXB0aW9uLmdldFN0cmluZygpO1xuXG4gICAgICAgIGNvbnRleHQudHJhY2UoYFJlbW92ZWQgdGhlIGV4aXN0aW5nICcke2Fzc3VtcHRpb25TdHJpbmd9JyBhc3N1bXB0aW9uIGZyb20gdGhlIG1uZW1pYyBjb250ZXh0Li4uYCk7XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLmFzc3VtcHRpb25zLnB1c2goYXNzdW1wdGlvbik7XG5cbiAgICBjb250ZXh0LmRlYnVnKGAuLi5hZGRlZCB0aGUgJyR7YXNzdW1wdGlvblN0cmluZ30nIGFzc3VtcHRpb24gdG8gdGhlIG1uZW1pYyBjb250ZXh0LmApO1xuICB9XG5cbiAgYWRkTWV0YXZhcmlhYmxlKG1ldGF2YXJpYWJsZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLCAvLy9cbiAgICAgICAgICBtZXRhdmFyaWFibGVTdHJpbmcgPSBtZXRhdmFyaWFibGUuZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBBZGRpbmcgdGhlICcke21ldGF2YXJpYWJsZVN0cmluZ30nIG1ldGF2YXJpYWJsZSB0byB0aGUgbW5lbWljIGNvbnRleHQuLi5gKTtcblxuICAgIGNvbnN0IG1ldGF2YXJpYWJsZUEgPSBtZXRhdmFyaWFibGU7IC8vL1xuXG4gICAgZXh0cmFjdCh0aGlzLm1ldGF2YXJpYWJsZXMsIChtZXRhdmFyaWFibGUpID0+IHtcbiAgICAgIGNvbnN0IG1ldGF2YXJpYWJsZUIgPSBtZXRhdmFyaWFibGUsIC8vL1xuICAgICAgICAgICAgbWV0YXZhcmlhYmxlQUVxdWFsVG9NZXRhdmFyaWFibGVCID0gbWV0YXZhcmlhYmxlQS5pc0VxdWFsVG8obWV0YXZhcmlhYmxlQik7XG5cbiAgICAgIGlmIChtZXRhdmFyaWFibGVBRXF1YWxUb01ldGF2YXJpYWJsZUIpIHtcbiAgICAgICAgY29uc3QgbWV0YXZhcmlhYmxlU3RyaW5nID0gbWV0YXZhcmlhYmxlLmdldFN0cmluZygpO1xuXG4gICAgICAgIGNvbnRleHQudHJhY2UoYFJlbW92ZWQgdGhlIGV4aXN0aW5nICcke21ldGF2YXJpYWJsZVN0cmluZ30nIG1ldGF2YXJpYWJsZSBmcm9tIHRoZSBtbmVtaWMgY29udGV4dC4uLmApO1xuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5tZXRhdmFyaWFibGVzLnB1c2gobWV0YXZhcmlhYmxlKTtcblxuICAgIGNvbnRleHQuZGVidWcoYC4uLmFkZGVkIHRoZSAnJHttZXRhdmFyaWFibGVTdHJpbmd9JyBtZXRhdmFyaWFibGUgdG8gdGhlIG1uZW1pYyBjb250ZXh0LmApO1xuICB9XG5cbiAgYWRkU3Vic3RpdHV0aW9uKHN1YnN0aXR1dGlvbikge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLCAvLy9cbiAgICAgICAgICBzdWJzdGl0dXRpb25TdHJpbmcgPSBzdWJzdGl0dXRpb24uZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBBZGRpbmcgdGhlICcke3N1YnN0aXR1dGlvblN0cmluZ30nIHN1YnN0aXR1dGlvbiB0byB0aGUgbW5lbWljIGNvbnRleHQuLi5gKTtcblxuICAgIGNvbnN0IHN1YnN0aXR1dGlvbkEgPSBzdWJzdGl0dXRpb247IC8vL1xuXG4gICAgZXh0cmFjdCh0aGlzLnN1YnN0aXR1dGlvbnMsIChzdWJzdGl0dXRpb24pID0+IHtcbiAgICAgIGNvbnN0IHN1YnN0aXR1dGlvbkIgPSBzdWJzdGl0dXRpb24sIC8vL1xuICAgICAgICAgICAgc3Vic3RpdHV0aW9uQUVxdWFsVG9TdWJzdGl0dXRpb25CID0gc3Vic3RpdHV0aW9uQS5pc0VxdWFsVG8oc3Vic3RpdHV0aW9uQik7XG5cbiAgICAgIGlmIChzdWJzdGl0dXRpb25BRXF1YWxUb1N1YnN0aXR1dGlvbkIpIHtcbiAgICAgICAgY29uc3Qgc3Vic3RpdHV0aW9uU3RyaW5nID0gc3Vic3RpdHV0aW9uLmdldFN0cmluZygpO1xuXG4gICAgICAgIGNvbnRleHQudHJhY2UoYFJlbW92ZWQgdGhlIGV4aXN0aW5nICcke3N1YnN0aXR1dGlvblN0cmluZ30nIHN1YnN0aXR1dGlvbiBmcm9tIHRoZSBtbmVtaWMgY29udGV4dC4uLmApO1xuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5zdWJzdGl0dXRpb25zLnB1c2goc3Vic3RpdHV0aW9uKTtcblxuICAgIGNvbnRleHQuZGVidWcoYC4uLmFkZGVkIHRoZSAnJHtzdWJzdGl0dXRpb25TdHJpbmd9JyBzdWJzdGl0dXRpb24gdG8gdGhlIG1uZW1pYyBjb250ZXh0LmApO1xuICB9XG5cbiAgYWRkQXNzaWdubWVudChhc3NpZ25tZW50KSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgY29udGV4dC5hZGRBc3NpZ25tZW50KGFzc2lnbm1lbnQpO1xuICB9XG5cbiAgYWRkSW5mZXJyZWRTdWJzdGl0dXRpb25zKGluZmVycmVkU3Vic3RpdHV0aW9ucykge1xuICAgIC8vL1xuICB9XG5cbiAgYWRkVGVybXModGVybXMpIHtcbiAgICB0ZXJtcy5mb3JFYWNoKCh0ZXJtKSA9PiB7XG4gICAgICB0aGlzLmFkZFRlcm0odGVybSk7XG4gICAgfSk7XG4gIH1cblxuICBhZGRMaW5rcyhsaW5rcykge1xuICAgIGxpbmtzLmZvckVhY2goKGxpbmspID0+IHtcbiAgICAgIHRoaXMuYWRkTGluayhsaW5rKTtcbiAgICB9KTtcbiAgfVxuXG4gIGFkZEZyYW1lcyhmcmFtZXMpIHtcbiAgICBmcmFtZXMuZm9yRWFjaCgoZnJhbWUpID0+IHtcbiAgICAgIHRoaXMuYWRkRnJhbWUoZnJhbWUpO1xuICAgIH0pO1xuICB9XG5cbiAgYWRkRXF1YWxpdGllcyhlcXVhbGl0aWVzKSB7XG4gICAgZXF1YWxpdGllcy5mb3JFYWNoKChlcXVhbGl0eSkgPT4ge1xuICAgICAgdGhpcy5hZGRFcXVhbGl0eShlcXVhbGl0eSk7XG4gICAgfSk7XG4gIH1cblxuICBhZGRBc3NlcnRpb25zKGFzc2VydGlvbnMpIHtcbiAgICBhc3NlcnRpb25zLmZvckVhY2goKGFzc2VydGlvbikgPT4ge1xuICAgICAgdGhpcy5hZGRBc3NlcnRpb24oYXNzZXJ0aW9uKTtcbiAgICB9KTtcbiAgfVxuXG4gIGFkZFN0YXRlbWVudHMoc3RhdGVtZW50cykge1xuICAgIHN0YXRlbWVudHMuZm9yRWFjaCgoc3RhdGVtZW50KSA9PiB7XG4gICAgICB0aGlzLmFkZFN0YXRlbWVudChzdGF0ZW1lbnQpO1xuICAgIH0pO1xuICB9XG5cbiAgYWRkQXNzdW1wdGlvbnMoYXNzdW1wdGlvbnMpIHtcbiAgICBhc3N1bXB0aW9ucy5mb3JFYWNoKChhc3N1bXB0aW9uKSA9PiB7XG4gICAgICB0aGlzLmFkZEFzc3VtcHRpb24oYXNzdW1wdGlvbik7XG4gICAgfSk7XG4gIH1cblxuICBhZGRNZXRhdmFyaWFibGVzKG1ldGF2YXJpYWJsZXMpIHtcbiAgICBtZXRhdmFyaWFibGVzLmZvckVhY2goKG1ldGF2YXJpYWJsZSkgPT4ge1xuICAgICAgdGhpcy5hZGRNZXRhdmFyaWFibGUobWV0YXZhcmlhYmxlKTtcbiAgICB9KTtcbiAgfVxuXG4gIGZpbmRUZXJtQnlUZXJtTm9kZSh0ZXJtTm9kZSkge1xuICAgIGNvbnN0IHRlcm1zID0gdGhpcy5nZXRUZXJtcygpLFxuICAgICAgICAgIHRlcm0gPSB0ZXJtcy5maW5kKCh0ZXJtKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0ZXJtTm9kZU1hdGNoZXMgPSB0ZXJtLm1hdGNoVGVybU5vZGUodGVybU5vZGUpO1xuXG4gICAgICAgICAgICBpZiAodGVybU5vZGVNYXRjaGVzKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pIHx8IG51bGw7XG5cbiAgICByZXR1cm4gdGVybTtcbiAgfVxuXG4gIGZpbmRMaW5rQnlMaW5rTm9kZShsaW5rTm9kZSkge1xuICAgIGNvbnN0IGxpbmtzID0gdGhpcy5nZXRMaW5rcygpLFxuICAgICAgICAgIGxpbmsgPSBsaW5rcy5maW5kKChsaW5rKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBsaW5rTm9kZU1hdGNoZXMgPSBsaW5rLm1hdGNoTGlua05vZGUobGlua05vZGUpO1xuXG4gICAgICAgICAgICBpZiAobGlua05vZGVNYXRjaGVzKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pIHx8IG51bGw7XG5cbiAgICByZXR1cm4gbGluaztcbiAgfVxuXG4gIGZpbmRGcmFtZUJ5RnJhbWVOb2RlKGZyYW1lTm9kZSkge1xuICAgIGNvbnN0IGZyYW1lcyA9IHRoaXMuZ2V0RnJhbWVzKCksXG4gICAgICAgICAgZnJhbWUgPSBmcmFtZXMuZmluZCgoZnJhbWUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZyYW1lTm9kZU1hdGNoZXMgPSBmcmFtZS5tYXRjaEZyYW1lTm9kZShmcmFtZU5vZGUpO1xuXG4gICAgICAgICAgICBpZiAoZnJhbWVOb2RlTWF0Y2hlcykge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSB8fCBudWxsO1xuXG4gICAgcmV0dXJuIGZyYW1lO1xuICB9XG5cbiAgZmluZEVxdWFsaXR5QnlFcXVhbGl0eU5vZGUoZXF1YWxpdHlOb2RlKSB7XG4gICAgY29uc3QgZXF1YWxpdGllcyA9IHRoaXMuZ2V0RXF1YWxpdGllcygpLFxuICAgICAgZXF1YWxpdHkgPSBlcXVhbGl0aWVzLmZpbmQoKGVxdWFsaXR5KSA9PiB7XG4gICAgICAgIGNvbnN0IGVxdWFsaXR5Tm9kZU1hdGNoZXMgPSBlcXVhbGl0eS5tYXRjaEVxdWFsaXR5Tm9kZShlcXVhbGl0eU5vZGUpO1xuXG4gICAgICAgIGlmIChlcXVhbGl0eU5vZGVNYXRjaGVzKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pIHx8IG51bGw7XG5cbiAgICByZXR1cm4gZXF1YWxpdHk7XG4gIH1cblxuICBmaW5kQXNzZXJ0aW9uQnlBc3NlcnRpb25Ob2RlKGFzc2VydGlvbk5vZGUpIHtcbiAgICBjb25zdCBhc3NlcnRpb25zID0gdGhpcy5nZXRBc3NlcnRpb25zKCksXG4gICAgICAgICAgYXNzZXJ0aW9uID0gYXNzZXJ0aW9ucy5maW5kKChhc3NlcnRpb24pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGFzc2VydGlvbk5vZGVNYXRjaGVzID0gYXNzZXJ0aW9uLm1hdGNoQXNzZXJ0aW9uTm9kZShhc3NlcnRpb25Ob2RlKTtcblxuICAgICAgICAgICAgaWYgKGFzc2VydGlvbk5vZGVNYXRjaGVzKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pIHx8IG51bGw7XG5cbiAgICByZXR1cm4gYXNzZXJ0aW9uO1xuICB9XG5cbiAgZmluZFN0YXRlbWVudEJ5U3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlKSB7XG4gICAgY29uc3Qgc3RhdGVtZW50cyA9IHRoaXMuZ2V0U3RhdGVtZW50cygpLFxuICAgICAgICAgIHN0YXRlbWVudCA9IHN0YXRlbWVudHMuZmluZCgoc3RhdGVtZW50KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzdGF0ZW1lbnROb2RlTWF0Y2hlcyA9IHN0YXRlbWVudC5tYXRjaFN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSk7XG5cbiAgICAgICAgICAgIGlmIChzdGF0ZW1lbnROb2RlTWF0Y2hlcykge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSB8fCBudWxsO1xuXG4gICAgcmV0dXJuIHN0YXRlbWVudDtcbiAgfVxuXG4gIGZpbmRBc3N1bXB0aW9uQnlBc3N1bXB0aW9uTm9kZShhc3N1bXB0aW9uTm9kZSkge1xuICAgIGNvbnN0IGFzc3VtcHRpb25zID0gdGhpcy5nZXRBc3N1bXB0aW9ucygpLFxuICAgICAgICAgIGFzc3VtcHRpb24gPSBhc3N1bXB0aW9ucy5maW5kKChhc3N1bXB0aW9uKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBhc3N1bXB0aW9uTm9kZU1hdGNoZXMgPSBhc3N1bXB0aW9uLm1hdGNoQXNzdW1wdGlvbk5vZGUoYXNzdW1wdGlvbk5vZGUpO1xuXG4gICAgICAgICAgICBpZiAoYXNzdW1wdGlvbk5vZGVNYXRjaGVzKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pIHx8IG51bGw7XG5cbiAgICByZXR1cm4gYXNzdW1wdGlvbjtcbiAgfVxuXG4gIGZpbmRNZXRhdmFyaWFibGVCeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSkge1xuICAgIGNvbnN0IG1ldGF2YXJpYWJsZXMgPSB0aGlzLmdldE1ldGF2YXJpYWJsZXMoKSxcbiAgICAgICAgICBtZXRhdmFyaWFibGUgPSBtZXRhdmFyaWFibGVzLmZpbmQoKG1ldGF2YXJpYWJsZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbWV0YXZhcmlhYmxlTm9kZU1hdGNoZXMgPSBtZXRhdmFyaWFibGUubWF0Y2hNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpO1xuXG4gICAgICAgICAgICBpZiAobWV0YXZhcmlhYmxlTm9kZU1hdGNoZXMpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSkgfHwgbnVsbDtcblxuICAgIHJldHVybiBtZXRhdmFyaWFibGU7XG4gIH1cblxuICBmaW5kU3Vic3RpdHV0aW9uQnlTdWJzdGl0dXRpb25Ob2RlKHN1YnN0aXR1dGlvbk5vZGUpIHtcbiAgICBjb25zdCBzdWJzdGl0dXRpb25zID0gdGhpcy5nZXRTdWJzdGl0dXRpb25zKCksXG4gICAgICAgICAgc3Vic3RpdHV0aW9uID0gc3Vic3RpdHV0aW9ucy5maW5kKChzdWJzdGl0dXRpb24pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHN1YnN0aXR1dGlvbk5vZGVNYXRjaGVzID0gc3Vic3RpdHV0aW9uLm1hdGNoU3Vic3RpdHV0aW9uTm9kZShzdWJzdGl0dXRpb25Ob2RlKTtcblxuICAgICAgICAgICAgaWYgKHN1YnN0aXR1dGlvbk5vZGVNYXRjaGVzKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pIHx8IG51bGw7XG5cbiAgICByZXR1cm4gc3Vic3RpdHV0aW9uO1xuICB9XG5cbiAgaXNUZXJtUHJlc2VudEJ5VGVybU5vZGUodGVybU5vZGUpIHtcbiAgICBjb25zdCB0ZXJtID0gdGhpcy5maW5kVGVybUJ5VGVybU5vZGUodGVybU5vZGUpLFxuICAgICAgdGVybVByZXNlbnQgPSAodGVybSAhPT0gbnVsbCk7XG5cbiAgICByZXR1cm4gdGVybVByZXNlbnQ7XG4gIH1cblxuICBpc0xpbmtQcmVzZW50QnlMaW5rTm9kZShsaW5rTm9kZSkge1xuICAgIGNvbnN0IGxpbmsgPSB0aGlzLmZpbmRMaW5rQnlMaW5rTm9kZShsaW5rTm9kZSksXG4gICAgICAgICAgbGlua1ByZXNlbnQgPSAobGluayAhPT0gbnVsbCk7XG5cbiAgICByZXR1cm4gbGlua1ByZXNlbnQ7XG4gIH1cblxuICBpc0ZyYW1lUHJlc2VudEJ5RnJhbWVOb2RlKGZyYW1lTm9kZSkge1xuICAgIGNvbnN0IGZyYW1lID0gdGhpcy5maW5kRnJhbWVCeUZyYW1lTm9kZShmcmFtZU5vZGUpLFxuICAgICAgICAgIGZyYW1lUHJlc2VudCA9IChmcmFtZSAhPT0gbnVsbCk7XG5cbiAgICByZXR1cm4gZnJhbWVQcmVzZW50O1xuICB9XG5cbiAgaXNFcXVhbGl0eVByZXNlbnRCeUVxdWFsaXR5Tm9kZShlcXVhbGl0eU5vZGUpIHtcbiAgICBjb25zdCBlcXVhbGl0eSA9IHRoaXMuZmluZEVxdWFsaXR5QnlFcXVhbGl0eU5vZGUoZXF1YWxpdHlOb2RlKSxcbiAgICAgICAgICBlcXVhbGl0eVByZXNlbnQgPSAoZXF1YWxpdHkgIT09IG51bGwpO1xuXG4gICAgcmV0dXJuIGVxdWFsaXR5UHJlc2VudDtcbiAgfVxuXG4gIGlzQXNzZXJ0aW9uUHJlc2VudEJ5QXNzZXJ0aW9uTm9kZShhc3NlcnRpb25Ob2RlKSB7XG4gICAgY29uc3QgYXNzZXJ0aW9uID0gdGhpcy5maW5kQXNzZXJ0aW9uQnlBc3NlcnRpb25Ob2RlKGFzc2VydGlvbk5vZGUpLFxuICAgICAgICAgIGFzc2VydGlvblByZXNlbnQgPSAoYXNzZXJ0aW9uICE9PSBudWxsKTtcblxuICAgIHJldHVybiBhc3NlcnRpb25QcmVzZW50O1xuICB9XG5cbiAgaXNTdGF0ZW1lbnRQcmVzZW50QnlTdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnQgPSB0aGlzLmZpbmRTdGF0ZW1lbnRCeVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSksXG4gICAgICAgICAgc3RhdGVtZW50UHJlc2VudCA9IChzdGF0ZW1lbnQgIT09IG51bGwpO1xuXG4gICAgcmV0dXJuIHN0YXRlbWVudFByZXNlbnQ7XG4gIH1cblxuICBpc0Fzc3VtcHRpb25QcmVzZW50QnlBc3N1bXB0aW9uTm9kZShhc3N1bXB0aW9uTm9kZSkge1xuICAgIGNvbnN0IGFzc3VtcHRpb24gPSB0aGlzLmZpbmRBc3N1bXB0aW9uQnlBc3N1bXB0aW9uTm9kZShhc3N1bXB0aW9uTm9kZSksXG4gICAgICAgICAgYXNzdW1wdGlvblByZXNlbnQgPSAoYXNzdW1wdGlvbiAhPT0gbnVsbCk7XG5cbiAgICByZXR1cm4gYXNzdW1wdGlvblByZXNlbnQ7XG4gIH1cblxuICBpc01ldGF2YXJpYWJsZVByZXNlbnRCeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSkge1xuICAgIGNvbnN0IG1ldGF2YXJpYWJsZW4gPSB0aGlzLmZpbmRNZXRhdmFyaWFibGVCeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSksXG4gICAgICAgICAgbWV0YXZhcmlhYmxlblByZXNlbnQgPSAobWV0YXZhcmlhYmxlbiAhPT0gbnVsbCk7XG5cbiAgICByZXR1cm4gbWV0YXZhcmlhYmxlblByZXNlbnQ7XG4gIH1cblxuICBpbml0aWFsaXNlKGpzb24pIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpczsgLy8vXG5cbiAgICB0aGlzLnRlcm1zID0gdGVybXNGcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHRoaXMuc3RhdGVtZW50cyA9IHN0YXRlbWVudHNGcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHRoaXMubWV0YXZhcmlhYmxlcyA9IG1ldGF2YXJpYWJsZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHRoaXMuZXF1YWxpdGllcyA9IGVxdWFsaXRpZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KTtcbiAgICB0aGlzLmFzc3VtcHRpb25zID0gYXNzdW1wdGlvbnNGcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHRoaXMubGlua3MgPSBsaW5rc0Zyb21KU09OKGpzb24sIGNvbnRleHQpO1xuICAgIHRoaXMuZnJhbWVzID0gZnJhbWVzRnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICB0aGlzLmFzc2VydGlvbnMgPSBhc3NlcnRpb25zRnJvbUpTT04oanNvbiwgY29udGV4dCk7XG4gICAgdGhpcy5zdWJzdGl0dXRpb25zID0gc3Vic3RpdHV0aW9uc0Zyb21KU09OKGpzb24sIGNvbnRleHQpO1xuICB9XG5cbiAgY29tbWl0KCkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzO1xuXG4gICAgY29udGV4dC5kZWJ1ZyhgQ29tbWl0dGVkIHRoZSBtbmVtaWMgY29udGV4dC5gKTtcblxuICAgIHJldHVybiBjb250ZXh0O1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIGxldCBqc29uO1xuXG4gICAgbGV0IHRlcm1zID0gdGhpcy5nZXRUZXJtcygpLFxuICAgICAgICBsaW5rcyA9IHRoaXMuZ2V0TGlua3MoKSxcbiAgICAgICAgZnJhbWVzID0gdGhpcy5nZXRGcmFtZXMoKSxcbiAgICAgICAgZXF1YWxpdGllcyA9IHRoaXMuZ2V0RXF1YWxpdGllcygpLFxuICAgICAgICBhc3NlcnRpb25zID0gdGhpcy5nZXRBc3NlcnRpb25zKCksXG4gICAgICAgIHN0YXRlbWVudHMgPSB0aGlzLmdldFN0YXRlbWVudHMoKSxcbiAgICAgICAgYXNzdW1wdGlvbnMgPSB0aGlzLmdldEFzc3VtcHRpb25zKCksXG4gICAgICAgIG1ldGF2YXJpYWJsZXMgPSB0aGlzLmdldE1ldGF2YXJpYWJsZXMoKSxcbiAgICAgICAgc3Vic3RpdHV0aW9ucyA9IHRoaXMuZ2V0U3Vic3RpdHV0aW9ucygpO1xuXG4gICAgY29uc3QgdGVybXNKU09OID0gdGVybXNUb1Rlcm1zSlNPTih0ZXJtcyksXG4gICAgICAgICAgbGlua3NKU09OID0gbGlua3NUb0xpbmtzSlNPTihsaW5rcyksXG4gICAgICAgICAgZnJhbWVzSlNPTiA9IGZyYW1lc1RvRnJhbWVzSlNPTihmcmFtZXMpLFxuICAgICAgICAgIGVxdWFsaXRpZXNKU09OID0gZXF1YWxpdGllc1RvRXF1YWxpdGllc0pTT04oZXF1YWxpdGllcyksXG4gICAgICAgICAgYXNzZXJ0aW9uc0pTT04gPSBhc3NlcnRpb25zVG9Bc3NlcnRpb25zSlNPTihhc3NlcnRpb25zKSxcbiAgICAgICAgICBzdGF0ZW1lbnRzSlNPTiA9IHN0YXRlbWVudHNUb1N0YXRlbWVudHNKU09OKHN0YXRlbWVudHMpLFxuICAgICAgICAgIGFzc3VtcHRpb25zSlNPTiA9IGFzc3VtcHRpb25zVG9Bc3N1bXB0aW9uc0pTT04oYXNzdW1wdGlvbnMpLFxuICAgICAgICAgIG1ldGF2YXJpYWJsZXNKU09OID0gbWV0YXZhcmlhYmxlc1RvTWV0YXZhcmlhYmxlc0pTT04obWV0YXZhcmlhYmxlcyksXG4gICAgICAgICAgc3Vic3RpdHV0aW9uc0pTT04gPSBzdWJzdGl0dXRpb25zVG9TdWJzdGl0dXRpb25zSlNPTihzdWJzdGl0dXRpb25zKTtcblxuICAgIHRlcm1zID0gdGVybXNKU09OOyAvLy9cbiAgICBsaW5rcyA9IGxpbmtzSlNPTjsgLy8vXG4gICAgZnJhbWVzID0gZnJhbWVzSlNPTjsgLy8vXG4gICAgZXF1YWxpdGllcyA9IGVxdWFsaXRpZXNKU09OOyAvLy9cbiAgICBhc3NlcnRpb25zID0gYXNzZXJ0aW9uc0pTT047IC8vL1xuICAgIHN0YXRlbWVudHMgPSBzdGF0ZW1lbnRzSlNPTjsgLy8vXG4gICAgYXNzdW1wdGlvbnMgPSBhc3N1bXB0aW9uc0pTT047IC8vL1xuICAgIG1ldGF2YXJpYWJsZXMgPSBtZXRhdmFyaWFibGVzSlNPTjsgIC8vXG4gICAgc3Vic3RpdHV0aW9ucyA9IHN1YnN0aXR1dGlvbnNKU09OOyAvLy9cblxuICAgIGpzb24gPSB7XG4gICAgICB0ZXJtcyxcbiAgICAgIGxpbmtzLFxuICAgICAgZnJhbWVzLFxuICAgICAgZXF1YWxpdGllcyxcbiAgICAgIGFzc2VydGlvbnMsXG4gICAgICBzdGF0ZW1lbnRzLFxuICAgICAgYXNzdW1wdGlvbnMsXG4gICAgICBtZXRhdmFyaWFibGVzLFxuICAgICAgc3Vic3RpdHV0aW9uc1xuICAgIH07XG5cbiAgICByZXR1cm4ganNvbjtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gICAgY29uc3QgdGVybXMgPSBudWxsLFxuICAgICAgICAgIGxpbmtzID0gbnVsbCxcbiAgICAgICAgICBmcmFtZXMgPSBudWxsLFxuICAgICAgICAgIGVxdWFsaXRpZXMgPSBudWxsLFxuICAgICAgICAgIHN0YXRlbWVudHMgPSBudWxsLFxuICAgICAgICAgIGFzc2VydGlvbnMgPSBudWxsLFxuICAgICAgICAgIGFzc3VtcHRpb25zID0gbnVsbCxcbiAgICAgICAgICBtZXRhdmFyaWFibGVzID0gbnVsbCxcbiAgICAgICAgICBzdWJzdGl0dXRpb25zID0gbnVsbCxcbiAgICAgICAgICBtbmVtaWNDb250ZXh0ID0gbmV3IE1uZW1pY0NvbnRleHQoY29udGV4dCwgdGVybXMsIGxpbmtzLCBmcmFtZXMsIGVxdWFsaXRpZXMsIGFzc2VydGlvbnMsIHN0YXRlbWVudHMsIGFzc3VtcHRpb25zLCBtZXRhdmFyaWFibGVzLCBzdWJzdGl0dXRpb25zKTtcblxuICAgIG1uZW1pY0NvbnRleHQuaW5pdGlhbGlzZShqc29uKTtcblxuICAgIHJldHVybiBtbmVtaWNDb250ZXh0O1xuICB9XG5cbiAgc3RhdGljIGZyb21Ob3RoaW5nKGNvbnRleHQpIHtcbiAgICBjb25zdCB0ZXJtcyA9IFtdLFxuICAgICAgICAgIGxpbmtzID0gW10sXG4gICAgICAgICAgZnJhbWVzID0gW10sXG4gICAgICAgICAgZXF1YWxpdGllcyA9IFtdLFxuICAgICAgICAgIHN0YXRlbWVudHMgPSBbXSxcbiAgICAgICAgICBhc3NlcnRpb25zID0gW10sXG4gICAgICAgICAgYXNzdW1wdGlvbnMgPSBbXSxcbiAgICAgICAgICBtZXRhdmFyaWFibGVzID0gW10sXG4gICAgICAgICAgc3Vic3RpdHV0aW9ucyA9IFtdLFxuICAgICAgICAgIG1uZW1pY0NvbnRleHQgPSBuZXcgTW5lbWljQ29udGV4dChjb250ZXh0LCB0ZXJtcywgbGlua3MsIGZyYW1lcywgZXF1YWxpdGllcywgYXNzZXJ0aW9ucywgc3RhdGVtZW50cywgYXNzdW1wdGlvbnMsIG1ldGF2YXJpYWJsZXMsIHN1YnN0aXR1dGlvbnMpO1xuXG4gICAgcmV0dXJuIG1uZW1pY0NvbnRleHQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJNbmVtaWNDb250ZXh0IiwicHVzaCIsImV4dHJhY3QiLCJhcnJheVV0aWxpdGllcyIsIkNvbnRleHQiLCJjb250ZXh0IiwidGVybXMiLCJsaW5rcyIsImZyYW1lcyIsImVxdWFsaXRpZXMiLCJhc3NlcnRpb25zIiwic3RhdGVtZW50cyIsImFzc3VtcHRpb25zIiwibWV0YXZhcmlhYmxlcyIsInN1YnN0aXR1dGlvbnMiLCJnZXRUZXJtcyIsImdldENvbnRleHQiLCJnZXRMaW5rcyIsImdldEZyYW1lcyIsImdldEVxdWFsaXRpZXMiLCJnZXRTdGF0ZW1lbnRzIiwiZ2V0QXNzZXJ0aW9ucyIsImdldEFzc3VtcHRpb25zIiwiZ2V0TWV0YXZhcmlhYmxlcyIsImdldFN1YnN0aXR1dGlvbnMiLCJhZGRUZXJtIiwidGVybSIsInRlcm1TdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsInRlcm1BIiwidGVybUIiLCJ0ZXJtQUVxdWFsVG9UZXJtQiIsImlzRXF1YWxUbyIsImRlYnVnIiwiYWRkTGluayIsImxpbmsiLCJsaW5rU3RyaW5nIiwibGlua0EiLCJsaW5rQiIsImxpbmtBRXF1YWxUb0xpbmtCIiwiYWRkRnJhbWUiLCJmcmFtZSIsImZyYW1lU3RyaW5nIiwiZnJhbWVBIiwiZnJhbWVCIiwiZnJhbWVBRXF1YWxUb0ZyYW1lQiIsImFkZEVxdWFsaXR5IiwiZXF1YWxpdHkiLCJlcXVhbGl0eVN0cmluZyIsImVxdWFsaXR5QSIsImVxdWFsaXR5QiIsImVxdWFsaXR5QUVxdWFsVG9FcXVhbGl0eUIiLCJhZGRBc3NlcnRpb24iLCJhc3NlcnRpb24iLCJhc3NlcnRpb25TdHJpbmciLCJhc3NlcnRpb25BIiwiYXNzZXJ0aW9uQiIsImFzc2VydGlvbkFFcXVhbFRvQXNzZXJ0aW9uQiIsImFkZFN0YXRlbWVudCIsInN0YXRlbWVudCIsInN0YXRlbWVudFN0cmluZyIsInN0YXRlbWVudEEiLCJzdGF0ZW1lbnRCIiwic3RhdGVtZW50QUVxdWFsVG9TdGF0ZW1lbnRCIiwiYWRkQXNzdW1wdGlvbiIsImFzc3VtcHRpb24iLCJhc3N1bXB0aW9uU3RyaW5nIiwiYXNzdW1wdGlvbkEiLCJhc3N1bXB0aW9uQiIsImFzc3VtcHRpb25BRXF1YWxUb0Fzc3VtcHRpb25CIiwiYWRkTWV0YXZhcmlhYmxlIiwibWV0YXZhcmlhYmxlIiwibWV0YXZhcmlhYmxlU3RyaW5nIiwibWV0YXZhcmlhYmxlQSIsIm1ldGF2YXJpYWJsZUIiLCJtZXRhdmFyaWFibGVBRXF1YWxUb01ldGF2YXJpYWJsZUIiLCJhZGRTdWJzdGl0dXRpb24iLCJzdWJzdGl0dXRpb24iLCJzdWJzdGl0dXRpb25TdHJpbmciLCJzdWJzdGl0dXRpb25BIiwic3Vic3RpdHV0aW9uQiIsInN1YnN0aXR1dGlvbkFFcXVhbFRvU3Vic3RpdHV0aW9uQiIsImFkZEFzc2lnbm1lbnQiLCJhc3NpZ25tZW50IiwiYWRkSW5mZXJyZWRTdWJzdGl0dXRpb25zIiwiaW5mZXJyZWRTdWJzdGl0dXRpb25zIiwiYWRkVGVybXMiLCJmb3JFYWNoIiwiYWRkTGlua3MiLCJhZGRGcmFtZXMiLCJhZGRFcXVhbGl0aWVzIiwiYWRkQXNzZXJ0aW9ucyIsImFkZFN0YXRlbWVudHMiLCJhZGRBc3N1bXB0aW9ucyIsImFkZE1ldGF2YXJpYWJsZXMiLCJmaW5kVGVybUJ5VGVybU5vZGUiLCJ0ZXJtTm9kZSIsImZpbmQiLCJ0ZXJtTm9kZU1hdGNoZXMiLCJtYXRjaFRlcm1Ob2RlIiwiZmluZExpbmtCeUxpbmtOb2RlIiwibGlua05vZGUiLCJsaW5rTm9kZU1hdGNoZXMiLCJtYXRjaExpbmtOb2RlIiwiZmluZEZyYW1lQnlGcmFtZU5vZGUiLCJmcmFtZU5vZGUiLCJmcmFtZU5vZGVNYXRjaGVzIiwibWF0Y2hGcmFtZU5vZGUiLCJmaW5kRXF1YWxpdHlCeUVxdWFsaXR5Tm9kZSIsImVxdWFsaXR5Tm9kZSIsImVxdWFsaXR5Tm9kZU1hdGNoZXMiLCJtYXRjaEVxdWFsaXR5Tm9kZSIsImZpbmRBc3NlcnRpb25CeUFzc2VydGlvbk5vZGUiLCJhc3NlcnRpb25Ob2RlIiwiYXNzZXJ0aW9uTm9kZU1hdGNoZXMiLCJtYXRjaEFzc2VydGlvbk5vZGUiLCJmaW5kU3RhdGVtZW50QnlTdGF0ZW1lbnROb2RlIiwic3RhdGVtZW50Tm9kZSIsInN0YXRlbWVudE5vZGVNYXRjaGVzIiwibWF0Y2hTdGF0ZW1lbnROb2RlIiwiZmluZEFzc3VtcHRpb25CeUFzc3VtcHRpb25Ob2RlIiwiYXNzdW1wdGlvbk5vZGUiLCJhc3N1bXB0aW9uTm9kZU1hdGNoZXMiLCJtYXRjaEFzc3VtcHRpb25Ob2RlIiwiZmluZE1ldGF2YXJpYWJsZUJ5TWV0YXZhcmlhYmxlTm9kZSIsIm1ldGF2YXJpYWJsZU5vZGUiLCJtZXRhdmFyaWFibGVOb2RlTWF0Y2hlcyIsIm1hdGNoTWV0YXZhcmlhYmxlTm9kZSIsImZpbmRTdWJzdGl0dXRpb25CeVN1YnN0aXR1dGlvbk5vZGUiLCJzdWJzdGl0dXRpb25Ob2RlIiwic3Vic3RpdHV0aW9uTm9kZU1hdGNoZXMiLCJtYXRjaFN1YnN0aXR1dGlvbk5vZGUiLCJpc1Rlcm1QcmVzZW50QnlUZXJtTm9kZSIsInRlcm1QcmVzZW50IiwiaXNMaW5rUHJlc2VudEJ5TGlua05vZGUiLCJsaW5rUHJlc2VudCIsImlzRnJhbWVQcmVzZW50QnlGcmFtZU5vZGUiLCJmcmFtZVByZXNlbnQiLCJpc0VxdWFsaXR5UHJlc2VudEJ5RXF1YWxpdHlOb2RlIiwiZXF1YWxpdHlQcmVzZW50IiwiaXNBc3NlcnRpb25QcmVzZW50QnlBc3NlcnRpb25Ob2RlIiwiYXNzZXJ0aW9uUHJlc2VudCIsImlzU3RhdGVtZW50UHJlc2VudEJ5U3RhdGVtZW50Tm9kZSIsInN0YXRlbWVudFByZXNlbnQiLCJpc0Fzc3VtcHRpb25QcmVzZW50QnlBc3N1bXB0aW9uTm9kZSIsImFzc3VtcHRpb25QcmVzZW50IiwiaXNNZXRhdmFyaWFibGVQcmVzZW50QnlNZXRhdmFyaWFibGVOb2RlIiwibWV0YXZhcmlhYmxlbiIsIm1ldGF2YXJpYWJsZW5QcmVzZW50IiwiaW5pdGlhbGlzZSIsImpzb24iLCJ0ZXJtc0Zyb21KU09OIiwic3RhdGVtZW50c0Zyb21KU09OIiwibWV0YXZhcmlhYmxlc0Zyb21KU09OIiwiZXF1YWxpdGllc0Zyb21KU09OIiwiYXNzdW1wdGlvbnNGcm9tSlNPTiIsImxpbmtzRnJvbUpTT04iLCJmcmFtZXNGcm9tSlNPTiIsImFzc2VydGlvbnNGcm9tSlNPTiIsInN1YnN0aXR1dGlvbnNGcm9tSlNPTiIsImNvbW1pdCIsInRvSlNPTiIsInRlcm1zSlNPTiIsInRlcm1zVG9UZXJtc0pTT04iLCJsaW5rc0pTT04iLCJsaW5rc1RvTGlua3NKU09OIiwiZnJhbWVzSlNPTiIsImZyYW1lc1RvRnJhbWVzSlNPTiIsImVxdWFsaXRpZXNKU09OIiwiZXF1YWxpdGllc1RvRXF1YWxpdGllc0pTT04iLCJhc3NlcnRpb25zSlNPTiIsImFzc2VydGlvbnNUb0Fzc2VydGlvbnNKU09OIiwic3RhdGVtZW50c0pTT04iLCJzdGF0ZW1lbnRzVG9TdGF0ZW1lbnRzSlNPTiIsImFzc3VtcHRpb25zSlNPTiIsImFzc3VtcHRpb25zVG9Bc3N1bXB0aW9uc0pTT04iLCJtZXRhdmFyaWFibGVzSlNPTiIsIm1ldGF2YXJpYWJsZXNUb01ldGF2YXJpYWJsZXNKU09OIiwic3Vic3RpdHV0aW9uc0pTT04iLCJzdWJzdGl0dXRpb25zVG9TdWJzdGl0dXRpb25zSlNPTiIsImZyb21KU09OIiwibW5lbWljQ29udGV4dCIsImZyb21Ob3RoaW5nIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkEyQkE7OztlQUFxQkE7OzsyQkF6QlU7Z0VBRVg7c0JBbUI2Qjs7Ozs7O0FBRWpELE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxPQUFPLEVBQUUsR0FBR0MseUJBQWM7QUFFekIsTUFBTUgsc0JBQXNCSSxnQkFBTztJQUNoRCxZQUFZQyxPQUFPLEVBQUVDLEtBQUssRUFBRUMsS0FBSyxFQUFFQyxNQUFNLEVBQUVDLFVBQVUsRUFBRUMsVUFBVSxFQUFFQyxVQUFVLEVBQUVDLFdBQVcsRUFBRUMsYUFBYSxFQUFFQyxhQUFhLENBQUU7UUFDeEgsS0FBSyxDQUFDVDtRQUVOLElBQUksQ0FBQ0MsS0FBSyxHQUFHQTtRQUNiLElBQUksQ0FBQ0MsS0FBSyxHQUFHQTtRQUNiLElBQUksQ0FBQ0MsTUFBTSxHQUFHQTtRQUNkLElBQUksQ0FBQ0MsVUFBVSxHQUFHQTtRQUNsQixJQUFJLENBQUNDLFVBQVUsR0FBR0E7UUFDbEIsSUFBSSxDQUFDQyxVQUFVLEdBQUdBO1FBQ2xCLElBQUksQ0FBQ0MsV0FBVyxHQUFHQTtRQUNuQixJQUFJLENBQUNDLGFBQWEsR0FBR0E7UUFDckIsSUFBSSxDQUFDQyxhQUFhLEdBQUdBO0lBQ3ZCO0lBRUFDLFNBQVNULFFBQVEsRUFBRSxFQUFFO1FBQ25CLE1BQU1ELFVBQVUsSUFBSSxDQUFDVyxVQUFVO1FBRS9CZixLQUFLSyxPQUFPLElBQUksQ0FBQ0EsS0FBSztRQUV0QkQsUUFBUVUsUUFBUSxDQUFDVDtRQUVqQixPQUFPQTtJQUNUO0lBRUFXLFNBQVNWLFFBQVEsRUFBRSxFQUFFO1FBQ25CLE1BQU1GLFVBQVUsSUFBSSxDQUFDVyxVQUFVO1FBRS9CZixLQUFLTSxPQUFPLElBQUksQ0FB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
|
|
@@ -162,14 +162,10 @@ const _default = (0, _elements.define)(class ContainedAssertion extends _asserti
|
|
|
162
162
|
});
|
|
163
163
|
function validateWhenDerived(term, statement, negated, context, forward, back) {
|
|
164
164
|
const termContained = statement.isTermContained(term, context);
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
validatesWhenDerived = true;
|
|
168
|
-
}
|
|
169
|
-
if (negated && !termContained) {
|
|
170
|
-
validatesWhenDerived = true;
|
|
165
|
+
if (negated && termContained) {
|
|
166
|
+
return back();
|
|
171
167
|
}
|
|
172
|
-
if (!
|
|
168
|
+
if (!negated && !termContained) {
|
|
173
169
|
return back();
|
|
174
170
|
}
|
|
175
171
|
return forward(context, back);
|
|
@@ -187,4 +183,4 @@ function statementFromContainedAssertionNode(containedAssertionNode, context) {
|
|
|
187
183
|
return statement;
|
|
188
184
|
}
|
|
189
185
|
|
|
190
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2Fzc2VydGlvbi9jb250YWluZWQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IEFzc2VydGlvbiBmcm9tIFwiLi4vYXNzZXJ0aW9uXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi8uLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgaW5zdGFudGlhdGUgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2NvbnRleHRcIjtcbmltcG9ydCB7IGlzRGVyaXZlZCwgaXNEZWNsYXJlZCB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvc3RhdGVcIjtcbmltcG9ydCB7IGluc3RhbnRpYXRlQ29udGFpbmVkQXNzZXJ0aW9uIH0gZnJvbSBcIi4uLy4uL3Byb2Nlc3MvaW5zdGFudGlhdGVcIjtcbmltcG9ydCB7IGNvbnRhaW5lZEFzc2VydGlvbkZyb21TdGF0ZW1lbnROb2RlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9lbGVtZW50XCI7XG5pbXBvcnQgeyB0ZXJtRnJvbVRlcm1BbmRTdWJzdGl0dXRpb25zLCBzdGF0ZW1lbnRGcm9tU3RhdGVtZW50QW5kU3Vic3RpdHV0aW9ucyB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvc3Vic3RpdHV0aW9uc1wiO1xuXG5jb25zdCB7IGFsbCwgZXhpc3RzIH0gPSBjb250aW51YXRpb25VdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBDb250YWluZWRBc3NlcnRpb24gZXh0ZW5kcyBBc3NlcnRpb24ge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHRlcm0sIG5lZ2F0ZWQsIHN0YXRlbWVudCkge1xuICAgIHN1cGVyKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCk7XG5cbiAgICB0aGlzLnRlcm0gPSB0ZXJtO1xuICAgIHRoaXMubmVnYXRlZCA9IG5lZ2F0ZWQ7XG4gICAgdGhpcy5zdGF0ZW1lbnQgPSBzdGF0ZW1lbnQ7XG4gIH1cblxuICBnZXRUZXJtKCkge1xuICAgIHJldHVybiB0aGlzLnRlcm07XG4gIH1cblxuICBpc05lZ2F0ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMubmVnYXRlZDtcbiAgfVxuXG4gIGdldFN0YXRlbWVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZW1lbnQ7XG4gIH1cblxuICBnZXRDb250YWluZWRBc3NlcnRpb25Ob2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBjb250YWluZWRBc3NlcnRpb25Ob2RlID0gbm9kZTsgIC8vL1xuXG4gICAgcmV0dXJuIGNvbnRhaW5lZEFzc2VydGlvbk5vZGU7XG4gIH1cblxuICB2YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGxldCBhc3NlcnRpb247XG5cbiAgICBjb25zdCBjb250YWluZWRBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtjb250YWluZWRBc3NlcnRpb25TdHJpbmd9JyBjb250YWluZWQgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgICBhc3NlcnRpb24gPSB0aGlzLmZpbmRBc3NlcnRpb24oY29udGV4dCk7XG5cbiAgICBpZiAoYXNzZXJ0aW9uICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBjb250YWluZWRBc3NlcnRpb24gPSBhc3NlcnRpb247IC8vL1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7Y29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nfScgY29udGFpbmVkIGFzc2VydGlvbiBpcyBhbHJlYWR5IHByZXNlbnQuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRhaW5lZEFzc2VydGlvbiwgY29udGV4dCwgYmFjayk7XG4gICAgfVxuXG4gICAgYXNzZXJ0aW9uID0gdGhpczsgLy8vXG5cbiAgICBjb25zdCB2YWxpZGF0ZVRlcm0gPSB0aGlzLnZhbGlkYXRlVGVybS5iaW5kKHRoaXMpLFxuICAgICAgICAgIHZhbGlkYXRlU3RhdGVtZW50ID0gdGhpcy52YWxpZGF0ZVN0YXRlbWVudC5iaW5kKHRoaXMpO1xuXG4gICAgcmV0dXJuIGFsbChbXG4gICAgICB2YWxpZGF0ZVRlcm0sXG4gICAgICB2YWxpZGF0ZVN0YXRlbWVudFxuICAgIF0sIHN0YXRlLCBjb250ZXh0LCAoc3RhdGUsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnN0IHZhbGlkYXRlV2hlbkRlY2xhcmVkID0gdGhpcy52YWxpZGF0ZVdoZW5EZWNsYXJlZC5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgdmFsaWRhdGVXaGVuRGVyaXZlZCA9IHRoaXMudmFsaWRhdGVXaGVuRGVyaXZlZC5iaW5kKHRoaXMpO1xuXG4gICAgICByZXR1cm4gZXhpc3RzKFtcbiAgICAgICAgdmFsaWRhdGVXaGVuRGVjbGFyZWQsXG4gICAgICAgIHZhbGlkYXRlV2hlbkRlcml2ZWRcbiAgICAgIF0sIHN0YXRlLCBjb250ZXh0LCAoc3RhdGUsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgY29uc3QgY29udGFpbmVkQXNzZXJ0aW9uID0gYXNzZXJ0aW9uOyAvLy9cblxuICAgICAgICBjb250ZXh0LmFkZEFzc2VydGlvbihhc3NlcnRpb24pO1xuXG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7Y29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nfScgY29udGFpbmVkIGFzc2VydGlvbi5gKTtcblxuICAgICAgICByZXR1cm4gZm9yd2FyZChjb250YWluZWRBc3NlcnRpb24sIGNvbnRleHQsIGJhY2spO1xuICAgICAgfSwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB2YWxpZGF0ZVRlcm0oc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBjb250YWluZWRBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtjb250YWluZWRBc3NlcnRpb25TdHJpbmd9JyBjb250YWluZWQgYXNzZXJ0aW9uJ3MgdGVybS4uLmApO1xuXG4gICAgY29uc3QgdGVybVNpbmd1bGFyID0gdGhpcy50ZXJtLmlzU2luZ3VsYXIoKTtcblxuICAgIGlmICghdGVybVNpbmd1bGFyKSB7XG4gICAgICBjb25zdCB0ZXJtU3RyaW5nID0gdGhpcy50ZXJtLmdldFN0cmluZygpIC8vL1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7dGVybVN0cmluZ30nIHRlcm0gaXMgbm90IHNpbmd1bGFyLmApO1xuXG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnRlcm0udmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsICh0ZXJtLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICB0aGlzLnRlcm0gID0gdGVybTtcblxuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVzIHRoZSAnJHtjb250YWluZWRBc3NlcnRpb25TdHJpbmd9JyBjb250YWluZWQgYXNzZXJ0aW9uJ3MgdGVybS5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoc3RhdGUsIGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdmFsaWRhdGVTdGF0ZW1lbnQoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBjb250YWluZWRBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtjb250YWluZWRBc3NlcnRpb25TdHJpbmd9JyBjb250YWluZWQgYXNzZXJ0aW9uJ3Mgc3RhdGVtZW50Li4uYCk7XG5cbiAgICBjb25zdCBzdGF0ZW1lbnRTaW5ndWxhciA9IHRoaXMuc3RhdGVtZW50LmlzU2luZ3VsYXIoKTtcblxuICAgIGlmICghc3RhdGVtZW50U2luZ3VsYXIpIHtcbiAgICAgIGNvbnN0IHN0YXRlbWVudFN0cmluZyA9IHRoaXMuc3RhdGVtZW50LmdldFN0cmluZygpIC8vL1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IGlzIG5vdCBzaW5ndWxhci5gKTtcblxuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdGF0ZW1lbnQudmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIChzdGF0ZW1lbnQsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIHRoaXMuc3RhdGVtZW50ID0gc3RhdGVtZW50O1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZXMgdGhlICcke2NvbnRhaW5lZEFzc2VydGlvblN0cmluZ30nIGNvbnRhaW5lZCBhc3NlcnRpb24ncyBzdGF0ZW1lbnQuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHN0YXRlLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHZhbGlkYXRlV2hlbkRlY2xhcmVkKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgZGVjbGFyZWQgPSBpc0RlY2xhcmVkKHN0YXRlKTtcblxuICAgIGlmICghZGVjbGFyZWQpIHtcbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfVxuXG4gICAgY29uc3QgY29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtjb250YWluZWRBc3NlcnRpb25TdHJpbmd9JyBkZWNsYXJlZCBjb250YWluZWQgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2NvbnRhaW5lZEFzc2VydGlvblN0cmluZ30nIGRlY2xhcmVkIGNvbnRhaW5lZCBhc3NlcnRpb24uYCk7XG5cbiAgICByZXR1cm4gZm9yd2FyZChzdGF0ZSwgY29udGV4dCwgYmFjayk7XG4gIH1cblxuICB2YWxpZGF0ZVdoZW5EZXJpdmVkKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgZGVyaXZlZCA9IGlzRGVyaXZlZChzdGF0ZSk7XG5cbiAgICBpZiAoIWRlcml2ZWQpIHtcbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfVxuXG4gICAgY29uc3QgY29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtjb250YWluZWRBc3NlcnRpb25TdHJpbmd9JyBkZXJpdmVkIGNvbnRhaW5lZCBhc3NlcnRpb24uLi5gKTtcblxuICAgIHJldHVybiB2YWxpZGF0ZVdoZW5EZXJpdmVkKHRoaXMudGVybSwgdGhpcy5zdGF0ZW1lbnQsIHRoaXMubmVnYXRlZCwgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7Y29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nfScgZGVyaXZlZCBjb250YWluZWQgYXNzZXJ0aW9uLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChzdGF0ZSwgY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICBhcHBseUluZGVwZW5kZW50bHkoZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQsICAvLy9cbiAgICAgICAgICBjb250YWluZWRBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYEFwcGx5aW5nIHRoZSAnJHtjb250YWluZWRBc3NlcnRpb25TdHJpbmd9JyBjb250YWluZWQgYXNzZXJ0aW9uIGluZGVwZW5kZW50bHkuLi5gKTtcblxuICAgIGNvbnN0IHRlcm0gPSB0ZXJtRnJvbVRlcm1BbmRTdWJzdGl0dXRpb25zKHRoaXMudGVybSwgY29udGV4dCksXG4gICAgICAgICAgc3RhdGVtZW50ID0gc3RhdGVtZW50RnJvbVN0YXRlbWVudEFuZFN1YnN0aXR1dGlvbnModGhpcy5zdGF0ZW1lbnQsIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHZhbGlkYXRlV2hlbkRlcml2ZWQodGVybSwgc3RhdGVtZW50LCB0aGlzLm5lZ2F0ZWQsIGNvbnRleHQsIChjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi5hcHBsaWVkIHRoZSAnJHtjb250YWluZWRBc3NlcnRpb25TdHJpbmd9JyBjb250YWluZWQgYXNzZXJ0aW9uIGluZGVwZW5kZW50bHkuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIGxldCBqc29uO1xuXG4gICAgY29uc3QgbmFtZSA9IHRoaXMuZ2V0TmFtZSgpLFxuICAgICAgICAgIHN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7XG5cbiAgICBqc29uID0ge1xuICAgICAgbmFtZSxcbiAgICAgIHN0cmluZ1xuICAgIH07XG5cbiAgICByZXR1cm4ganNvbjtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJDb250YWluZWRBc3NlcnRpb25cIjtcblxuICBzdGF0aWMgZnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICAgIGxldCBjb250YWluZWRBc3NlcnRpb24gPSBudWxsO1xuXG4gICAgY29uc3QgeyBuYW1lIH0gPSBqc29uO1xuXG4gICAgaWYgKHRoaXMubmFtZSA9PT0gbmFtZSkge1xuICAgICAgaW5zdGFudGlhdGUoKGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgICAgIGNvbnRhaW5lZEFzc2VydGlvbk5vZGUgPSBpbnN0YW50aWF0ZUNvbnRhaW5lZEFzc2VydGlvbihzdHJpbmcsIGNvbnRleHQpLFxuICAgICAgICAgICAgICBub2RlID0gY29udGFpbmVkQXNzZXJ0aW9uTm9kZSwgIC8vL1xuICAgICAgICAgICAgICBicmVha1BvaW50ID0gbnVsbCxcbiAgICAgICAgICAgICAgdGVybSA9IHRlcm1Gcm9tQ29udGFpbmVkQXNzZXJ0aW9uTm9kZShjb250YWluZWRBc3NlcnRpb25Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgbmVnYXRlZCA9IG5lZ2F0ZWRGcm9tQ29udGFpbmVkQXNzZXJ0aW9uTm9kZShjb250YWluZWRBc3NlcnRpb25Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgc3RhdGVtZW50ID0gc3RhdGVtZW50RnJvbUNvbnRhaW5lZEFzc2VydGlvbk5vZGUoY29udGFpbmVkQXNzZXJ0aW9uTm9kZSwgY29udGV4dCk7XG5cbiAgICAgICAgY29udGV4dCA9IG51bGw7XG5cbiAgICAgICAgY29udGFpbmVkQXNzZXJ0aW9uID0gbmV3IENvbnRhaW5lZEFzc2VydGlvbihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHRlcm0sIG5lZ2F0ZWQsIHN0YXRlbWVudCk7XG4gICAgICB9LCBjb250ZXh0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29udGFpbmVkQXNzZXJ0aW9uO1xuICB9XG5cbiAgc3RhdGljIGZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KSB7XG4gICAgY29uc3Qgc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudC5nZXROb2RlKCksXG4gICAgICAgICAgY29udGFpbmVkQXNzZXJ0aW9uID0gY29udGFpbmVkQXNzZXJ0aW9uRnJvbVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gY29udGFpbmVkQXNzZXJ0aW9uO1xuICB9XG59KTtcblxuZnVuY3Rpb24gdmFsaWRhdGVXaGVuRGVyaXZlZCh0ZXJtLCBzdGF0ZW1lbnQsIG5lZ2F0ZWQsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgY29uc3QgdGVybUNvbnRhaW5lZCA9IHN0YXRlbWVudC5pc1Rlcm1Db250YWluZWQodGVybSwgY29udGV4dCk7XG5cbiAgbGV0IHZhbGlkYXRlc1doZW5EZXJpdmVkID0gZmFsc2U7XG5cbiAgaWYgKCFuZWdhdGVkICYmIHRlcm1Db250YWluZWQpIHtcbiAgICB2YWxpZGF0ZXNXaGVuRGVyaXZlZCA9IHRydWU7XG4gIH1cblxuICBpZiAobmVnYXRlZCAmJiAhdGVybUNvbnRhaW5lZCkge1xuICAgIHZhbGlkYXRlc1doZW5EZXJpdmVkID0gdHJ1ZTtcbiAgfVxuXG4gIGlmICghdmFsaWRhdGVzV2hlbkRlcml2ZWQpIHtcbiAgICByZXR1cm4gYmFjaygpO1xuICB9XG5cbiAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG59XG5cbmZ1bmN0aW9uIHRlcm1Gcm9tQ29udGFpbmVkQXNzZXJ0aW9uTm9kZShjb250YWluZWRBc3NlcnRpb25Ob2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHRlcm1Ob2RlID0gY29udGFpbmVkQXNzZXJ0aW9uTm9kZS5nZXRUZXJtTm9kZSgpLFxuICAgICAgICB0ZXJtID0gY29udGV4dC5maW5kVGVybUJ5VGVybU5vZGUodGVybU5vZGUpO1xuXG4gIHJldHVybiB0ZXJtO1xufVxuXG5mdW5jdGlvbiBuZWdhdGVkRnJvbUNvbnRhaW5lZEFzc2VydGlvbk5vZGUoY29udGFpbmVkQXNzZXJ0aW9uTm9kZSwgY29udGV4dCkge1xuICBjb25zdCBuZWdhdGVkID0gY29udGFpbmVkQXNzZXJ0aW9uTm9kZS5pc05lZ2F0ZWQoKTtcblxuICByZXR1cm4gbmVnYXRlZDtcbn1cblxuZnVuY3Rpb24gc3RhdGVtZW50RnJvbUNvbnRhaW5lZEFzc2VydGlvbk5vZGUoY29udGFpbmVkQXNzZXJ0aW9uTm9kZSwgY29udGV4dCkge1xuICBjb25zdCBzdGF0ZW1lbnROb2RlID0gY29udGFpbmVkQXNzZXJ0aW9uTm9kZS5nZXRTdGF0ZW1lbnROb2RlKCksXG4gICAgICAgIHN0YXRlbWVudCA9IGNvbnRleHQuZmluZFRlcm1CeVRlcm1Ob2RlKHN0YXRlbWVudE5vZGUpO1xuXG4gIHJldHVybiBzdGF0ZW1lbnQ7XG59XG4iXSwibmFtZXMiOlsiYWxsIiwiZXhpc3RzIiwiY29udGludWF0aW9uVXRpbGl0aWVzIiwiZGVmaW5lIiwiQ29udGFpbmVkQXNzZXJ0aW9uIiwiQXNzZXJ0aW9uIiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJicmVha1BvaW50IiwidGVybSIsIm5lZ2F0ZWQiLCJzdGF0ZW1lbnQiLCJnZXRUZXJtIiwiaXNOZWdhdGVkIiwiZ2V0U3RhdGVtZW50IiwiZ2V0Q29udGFpbmVkQXNzZXJ0aW9uTm9kZSIsImdldE5vZGUiLCJjb250YWluZWRBc3NlcnRpb25Ob2RlIiwidmFsaWRhdGUiLCJzdGF0ZSIsImZvcndhcmQiLCJiYWNrIiwiYXNzZXJ0aW9uIiwiY29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJmaW5kQXNzZXJ0aW9uIiwiY29udGFpbmVkQXNzZXJ0aW9uIiwiZGVidWciLCJ2YWxpZGF0ZVRlcm0iLCJiaW5kIiwidmFsaWRhdGVTdGF0ZW1lbnQiLCJ2YWxpZGF0ZVdoZW5EZWNsYXJlZCIsInZhbGlkYXRlV2hlbkRlcml2ZWQiLCJhZGRBc3NlcnRpb24iLCJ0ZXJtU2luZ3VsYXIiLCJpc1Npbmd1bGFyIiwidGVybVN0cmluZyIsInN0YXRlbWVudFNpbmd1bGFyIiwic3RhdGVtZW50U3RyaW5nIiwiZGVjbGFyZWQiLCJpc0RlY2xhcmVkIiwiZGVyaXZlZCIsImlzRGVyaXZlZCIsImFwcGx5SW5kZXBlbmRlbnRseSIsImdlbmVyYWxDb250ZXh0Iiwic3BlY2lmaWNDb250ZXh0IiwidGVybUZyb21UZXJtQW5kU3Vic3RpdHV0aW9ucyIsInN0YXRlbWVudEZyb21TdGF0ZW1lbnRBbmRTdWJzdGl0dXRpb25zIiwidG9KU09OIiwianNvbiIsIm5hbWUiLCJnZXROYW1lIiwiZnJvbUpTT04iLCJpbnN0YW50aWF0ZSIsImluc3RhbnRpYXRlQ29udGFpbmVkQXNzZXJ0aW9uIiwidGVybUZyb21Db250YWluZWRBc3NlcnRpb25Ob2RlIiwibmVnYXRlZEZyb21Db250YWluZWRBc3NlcnRpb25Ob2RlIiwic3RhdGVtZW50RnJvbUNvbnRhaW5lZEFzc2VydGlvbk5vZGUiLCJmcm9tU3RhdGVtZW50Iiwic3RhdGVtZW50Tm9kZSIsImNvbnRhaW5lZEFzc2VydGlvbkZyb21TdGF0ZW1lbnROb2RlIiwidGVybUNvbnRhaW5lZCIsImlzVGVybUNvbnRhaW5lZCIsInZhbGlkYXRlc1doZW5EZXJpdmVkIiwidGVybU5vZGUiLCJnZXRUZXJtTm9kZSIsImZpbmRUZXJtQnlUZXJtTm9kZSIsImdldFN0YXRlbWVudE5vZGUiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQWVBOzs7ZUFBQTs7O2dDQWJzQztrRUFFaEI7MEJBRUM7eUJBQ0s7dUJBQ1U7NkJBQ1E7eUJBQ007K0JBQ2lDOzs7Ozs7QUFFckYsTUFBTSxFQUFFQSxHQUFHLEVBQUVDLE1BQU0sRUFBRSxHQUFHQyxxQ0FBcUI7TUFFN0MsV0FBZUMsSUFBQUEsZ0JBQU0sRUFBQyxNQUFNQywyQkFBMkJDLGtCQUFTO0lBQzlELFlBQVlDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxJQUFJLEVBQUVDLFVBQVUsRUFBRUMsSUFBSSxFQUFFQyxPQUFPLEVBQUVDLFNBQVMsQ0FBRTtRQUN2RSxLQUFLLENBQUNOLFNBQVNDLFFBQVFDLE1BQU1DO1FBRTdCLElBQUksQ0FBQ0MsSUFBSSxHQUFHQTtRQUNaLElBQUksQ0FBQ0MsT0FBTyxHQUFHQTtRQUNmLElBQUksQ0FBQ0MsU0FBUyxHQUFHQTtJQUNuQjtJQUVBQyxVQUFVO1FBQ1IsT0FBTyxJ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
|
|
186
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2Fzc2VydGlvbi9jb250YWluZWQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IEFzc2VydGlvbiBmcm9tIFwiLi4vYXNzZXJ0aW9uXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi8uLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgaW5zdGFudGlhdGUgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2NvbnRleHRcIjtcbmltcG9ydCB7IGlzRGVyaXZlZCwgaXNEZWNsYXJlZCB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvc3RhdGVcIjtcbmltcG9ydCB7IGluc3RhbnRpYXRlQ29udGFpbmVkQXNzZXJ0aW9uIH0gZnJvbSBcIi4uLy4uL3Byb2Nlc3MvaW5zdGFudGlhdGVcIjtcbmltcG9ydCB7IGNvbnRhaW5lZEFzc2VydGlvbkZyb21TdGF0ZW1lbnROb2RlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9lbGVtZW50XCI7XG5pbXBvcnQgeyB0ZXJtRnJvbVRlcm1BbmRTdWJzdGl0dXRpb25zLCBzdGF0ZW1lbnRGcm9tU3RhdGVtZW50QW5kU3Vic3RpdHV0aW9ucyB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvc3Vic3RpdHV0aW9uc1wiO1xuXG5jb25zdCB7IGFsbCwgZXhpc3RzIH0gPSBjb250aW51YXRpb25VdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBDb250YWluZWRBc3NlcnRpb24gZXh0ZW5kcyBBc3NlcnRpb24ge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHRlcm0sIG5lZ2F0ZWQsIHN0YXRlbWVudCkge1xuICAgIHN1cGVyKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCk7XG5cbiAgICB0aGlzLnRlcm0gPSB0ZXJtO1xuICAgIHRoaXMubmVnYXRlZCA9IG5lZ2F0ZWQ7XG4gICAgdGhpcy5zdGF0ZW1lbnQgPSBzdGF0ZW1lbnQ7XG4gIH1cblxuICBnZXRUZXJtKCkge1xuICAgIHJldHVybiB0aGlzLnRlcm07XG4gIH1cblxuICBpc05lZ2F0ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMubmVnYXRlZDtcbiAgfVxuXG4gIGdldFN0YXRlbWVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZW1lbnQ7XG4gIH1cblxuICBnZXRDb250YWluZWRBc3NlcnRpb25Ob2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBjb250YWluZWRBc3NlcnRpb25Ob2RlID0gbm9kZTsgIC8vL1xuXG4gICAgcmV0dXJuIGNvbnRhaW5lZEFzc2VydGlvbk5vZGU7XG4gIH1cblxuICB2YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGxldCBhc3NlcnRpb247XG5cbiAgICBjb25zdCBjb250YWluZWRBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtjb250YWluZWRBc3NlcnRpb25TdHJpbmd9JyBjb250YWluZWQgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgICBhc3NlcnRpb24gPSB0aGlzLmZpbmRBc3NlcnRpb24oY29udGV4dCk7XG5cbiAgICBpZiAoYXNzZXJ0aW9uICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBjb250YWluZWRBc3NlcnRpb24gPSBhc3NlcnRpb247IC8vL1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7Y29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nfScgY29udGFpbmVkIGFzc2VydGlvbiBpcyBhbHJlYWR5IHByZXNlbnQuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRhaW5lZEFzc2VydGlvbiwgY29udGV4dCwgYmFjayk7XG4gICAgfVxuXG4gICAgYXNzZXJ0aW9uID0gdGhpczsgLy8vXG5cbiAgICBjb25zdCB2YWxpZGF0ZVRlcm0gPSB0aGlzLnZhbGlkYXRlVGVybS5iaW5kKHRoaXMpLFxuICAgICAgICAgIHZhbGlkYXRlU3RhdGVtZW50ID0gdGhpcy52YWxpZGF0ZVN0YXRlbWVudC5iaW5kKHRoaXMpO1xuXG4gICAgcmV0dXJuIGFsbChbXG4gICAgICB2YWxpZGF0ZVRlcm0sXG4gICAgICB2YWxpZGF0ZVN0YXRlbWVudFxuICAgIF0sIHN0YXRlLCBjb250ZXh0LCAoc3RhdGUsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnN0IHZhbGlkYXRlV2hlbkRlY2xhcmVkID0gdGhpcy52YWxpZGF0ZVdoZW5EZWNsYXJlZC5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgdmFsaWRhdGVXaGVuRGVyaXZlZCA9IHRoaXMudmFsaWRhdGVXaGVuRGVyaXZlZC5iaW5kKHRoaXMpO1xuXG4gICAgICByZXR1cm4gZXhpc3RzKFtcbiAgICAgICAgdmFsaWRhdGVXaGVuRGVjbGFyZWQsXG4gICAgICAgIHZhbGlkYXRlV2hlbkRlcml2ZWRcbiAgICAgIF0sIHN0YXRlLCBjb250ZXh0LCAoc3RhdGUsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgY29uc3QgY29udGFpbmVkQXNzZXJ0aW9uID0gYXNzZXJ0aW9uOyAvLy9cblxuICAgICAgICBjb250ZXh0LmFkZEFzc2VydGlvbihhc3NlcnRpb24pO1xuXG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7Y29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nfScgY29udGFpbmVkIGFzc2VydGlvbi5gKTtcblxuICAgICAgICByZXR1cm4gZm9yd2FyZChjb250YWluZWRBc3NlcnRpb24sIGNvbnRleHQsIGJhY2spO1xuICAgICAgfSwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB2YWxpZGF0ZVRlcm0oc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBjb250YWluZWRBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtjb250YWluZWRBc3NlcnRpb25TdHJpbmd9JyBjb250YWluZWQgYXNzZXJ0aW9uJ3MgdGVybS4uLmApO1xuXG4gICAgY29uc3QgdGVybVNpbmd1bGFyID0gdGhpcy50ZXJtLmlzU2luZ3VsYXIoKTtcblxuICAgIGlmICghdGVybVNpbmd1bGFyKSB7XG4gICAgICBjb25zdCB0ZXJtU3RyaW5nID0gdGhpcy50ZXJtLmdldFN0cmluZygpIC8vL1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7dGVybVN0cmluZ30nIHRlcm0gaXMgbm90IHNpbmd1bGFyLmApO1xuXG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnRlcm0udmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsICh0ZXJtLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICB0aGlzLnRlcm0gID0gdGVybTtcblxuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVzIHRoZSAnJHtjb250YWluZWRBc3NlcnRpb25TdHJpbmd9JyBjb250YWluZWQgYXNzZXJ0aW9uJ3MgdGVybS5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoc3RhdGUsIGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdmFsaWRhdGVTdGF0ZW1lbnQoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBjb250YWluZWRBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtjb250YWluZWRBc3NlcnRpb25TdHJpbmd9JyBjb250YWluZWQgYXNzZXJ0aW9uJ3Mgc3RhdGVtZW50Li4uYCk7XG5cbiAgICBjb25zdCBzdGF0ZW1lbnRTaW5ndWxhciA9IHRoaXMuc3RhdGVtZW50LmlzU2luZ3VsYXIoKTtcblxuICAgIGlmICghc3RhdGVtZW50U2luZ3VsYXIpIHtcbiAgICAgIGNvbnN0IHN0YXRlbWVudFN0cmluZyA9IHRoaXMuc3RhdGVtZW50LmdldFN0cmluZygpIC8vL1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IGlzIG5vdCBzaW5ndWxhci5gKTtcblxuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdGF0ZW1lbnQudmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIChzdGF0ZW1lbnQsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIHRoaXMuc3RhdGVtZW50ID0gc3RhdGVtZW50O1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZXMgdGhlICcke2NvbnRhaW5lZEFzc2VydGlvblN0cmluZ30nIGNvbnRhaW5lZCBhc3NlcnRpb24ncyBzdGF0ZW1lbnQuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHN0YXRlLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHZhbGlkYXRlV2hlbkRlY2xhcmVkKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgZGVjbGFyZWQgPSBpc0RlY2xhcmVkKHN0YXRlKTtcblxuICAgIGlmICghZGVjbGFyZWQpIHtcbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfVxuXG4gICAgY29uc3QgY29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtjb250YWluZWRBc3NlcnRpb25TdHJpbmd9JyBkZWNsYXJlZCBjb250YWluZWQgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2NvbnRhaW5lZEFzc2VydGlvblN0cmluZ30nIGRlY2xhcmVkIGNvbnRhaW5lZCBhc3NlcnRpb24uYCk7XG5cbiAgICByZXR1cm4gZm9yd2FyZChzdGF0ZSwgY29udGV4dCwgYmFjayk7XG4gIH1cblxuICB2YWxpZGF0ZVdoZW5EZXJpdmVkKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgZGVyaXZlZCA9IGlzRGVyaXZlZChzdGF0ZSk7XG5cbiAgICBpZiAoIWRlcml2ZWQpIHtcbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfVxuXG4gICAgY29uc3QgY29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtjb250YWluZWRBc3NlcnRpb25TdHJpbmd9JyBkZXJpdmVkIGNvbnRhaW5lZCBhc3NlcnRpb24uLi5gKTtcblxuICAgIHJldHVybiB2YWxpZGF0ZVdoZW5EZXJpdmVkKHRoaXMudGVybSwgdGhpcy5zdGF0ZW1lbnQsIHRoaXMubmVnYXRlZCwgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7Y29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nfScgZGVyaXZlZCBjb250YWluZWQgYXNzZXJ0aW9uLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChzdGF0ZSwgY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICBhcHBseUluZGVwZW5kZW50bHkoZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQsICAvLy9cbiAgICAgICAgICBjb250YWluZWRBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYEFwcGx5aW5nIHRoZSAnJHtjb250YWluZWRBc3NlcnRpb25TdHJpbmd9JyBjb250YWluZWQgYXNzZXJ0aW9uIGluZGVwZW5kZW50bHkuLi5gKTtcblxuICAgIGNvbnN0IHRlcm0gPSB0ZXJtRnJvbVRlcm1BbmRTdWJzdGl0dXRpb25zKHRoaXMudGVybSwgY29udGV4dCksXG4gICAgICAgICAgc3RhdGVtZW50ID0gc3RhdGVtZW50RnJvbVN0YXRlbWVudEFuZFN1YnN0aXR1dGlvbnModGhpcy5zdGF0ZW1lbnQsIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHZhbGlkYXRlV2hlbkRlcml2ZWQodGVybSwgc3RhdGVtZW50LCB0aGlzLm5lZ2F0ZWQsIGNvbnRleHQsIChjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi5hcHBsaWVkIHRoZSAnJHtjb250YWluZWRBc3NlcnRpb25TdHJpbmd9JyBjb250YWluZWQgYXNzZXJ0aW9uIGluZGVwZW5kZW50bHkuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIGxldCBqc29uO1xuXG4gICAgY29uc3QgbmFtZSA9IHRoaXMuZ2V0TmFtZSgpLFxuICAgICAgICAgIHN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7XG5cbiAgICBqc29uID0ge1xuICAgICAgbmFtZSxcbiAgICAgIHN0cmluZ1xuICAgIH07XG5cbiAgICByZXR1cm4ganNvbjtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJDb250YWluZWRBc3NlcnRpb25cIjtcblxuICBzdGF0aWMgZnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICAgIGxldCBjb250YWluZWRBc3NlcnRpb24gPSBudWxsO1xuXG4gICAgY29uc3QgeyBuYW1lIH0gPSBqc29uO1xuXG4gICAgaWYgKHRoaXMubmFtZSA9PT0gbmFtZSkge1xuICAgICAgaW5zdGFudGlhdGUoKGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgICAgIGNvbnRhaW5lZEFzc2VydGlvbk5vZGUgPSBpbnN0YW50aWF0ZUNvbnRhaW5lZEFzc2VydGlvbihzdHJpbmcsIGNvbnRleHQpLFxuICAgICAgICAgICAgICBub2RlID0gY29udGFpbmVkQXNzZXJ0aW9uTm9kZSwgIC8vL1xuICAgICAgICAgICAgICBicmVha1BvaW50ID0gbnVsbCxcbiAgICAgICAgICAgICAgdGVybSA9IHRlcm1Gcm9tQ29udGFpbmVkQXNzZXJ0aW9uTm9kZShjb250YWluZWRBc3NlcnRpb25Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgbmVnYXRlZCA9IG5lZ2F0ZWRGcm9tQ29udGFpbmVkQXNzZXJ0aW9uTm9kZShjb250YWluZWRBc3NlcnRpb25Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgc3RhdGVtZW50ID0gc3RhdGVtZW50RnJvbUNvbnRhaW5lZEFzc2VydGlvbk5vZGUoY29udGFpbmVkQXNzZXJ0aW9uTm9kZSwgY29udGV4dCk7XG5cbiAgICAgICAgY29udGV4dCA9IG51bGw7XG5cbiAgICAgICAgY29udGFpbmVkQXNzZXJ0aW9uID0gbmV3IENvbnRhaW5lZEFzc2VydGlvbihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHRlcm0sIG5lZ2F0ZWQsIHN0YXRlbWVudCk7XG4gICAgICB9LCBjb250ZXh0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29udGFpbmVkQXNzZXJ0aW9uO1xuICB9XG5cbiAgc3RhdGljIGZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KSB7XG4gICAgY29uc3Qgc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudC5nZXROb2RlKCksXG4gICAgICAgICAgY29udGFpbmVkQXNzZXJ0aW9uID0gY29udGFpbmVkQXNzZXJ0aW9uRnJvbVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gY29udGFpbmVkQXNzZXJ0aW9uO1xuICB9XG59KTtcblxuZnVuY3Rpb24gdmFsaWRhdGVXaGVuRGVyaXZlZCh0ZXJtLCBzdGF0ZW1lbnQsIG5lZ2F0ZWQsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgY29uc3QgdGVybUNvbnRhaW5lZCA9IHN0YXRlbWVudC5pc1Rlcm1Db250YWluZWQodGVybSwgY29udGV4dCk7XG5cbiAgaWYgKG5lZ2F0ZWQgJiYgdGVybUNvbnRhaW5lZCkge1xuICAgIHJldHVybiBiYWNrKCk7XG4gIH1cblxuICBpZiAoIW5lZ2F0ZWQgJiYgIXRlcm1Db250YWluZWQpIHtcbiAgICByZXR1cm4gYmFjaygpO1xuICB9XG5cbiAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG59XG5cbmZ1bmN0aW9uIHRlcm1Gcm9tQ29udGFpbmVkQXNzZXJ0aW9uTm9kZShjb250YWluZWRBc3NlcnRpb25Ob2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHRlcm1Ob2RlID0gY29udGFpbmVkQXNzZXJ0aW9uTm9kZS5nZXRUZXJtTm9kZSgpLFxuICAgICAgICB0ZXJtID0gY29udGV4dC5maW5kVGVybUJ5VGVybU5vZGUodGVybU5vZGUpO1xuXG4gIHJldHVybiB0ZXJtO1xufVxuXG5mdW5jdGlvbiBuZWdhdGVkRnJvbUNvbnRhaW5lZEFzc2VydGlvbk5vZGUoY29udGFpbmVkQXNzZXJ0aW9uTm9kZSwgY29udGV4dCkge1xuICBjb25zdCBuZWdhdGVkID0gY29udGFpbmVkQXNzZXJ0aW9uTm9kZS5pc05lZ2F0ZWQoKTtcblxuICByZXR1cm4gbmVnYXRlZDtcbn1cblxuZnVuY3Rpb24gc3RhdGVtZW50RnJvbUNvbnRhaW5lZEFzc2VydGlvbk5vZGUoY29udGFpbmVkQXNzZXJ0aW9uTm9kZSwgY29udGV4dCkge1xuICBjb25zdCBzdGF0ZW1lbnROb2RlID0gY29udGFpbmVkQXNzZXJ0aW9uTm9kZS5nZXRTdGF0ZW1lbnROb2RlKCksXG4gICAgICAgIHN0YXRlbWVudCA9IGNvbnRleHQuZmluZFRlcm1CeVRlcm1Ob2RlKHN0YXRlbWVudE5vZGUpO1xuXG4gIHJldHVybiBzdGF0ZW1lbnQ7XG59XG4iXSwibmFtZXMiOlsiYWxsIiwiZXhpc3RzIiwiY29udGludWF0aW9uVXRpbGl0aWVzIiwiZGVmaW5lIiwiQ29udGFpbmVkQXNzZXJ0aW9uIiwiQXNzZXJ0aW9uIiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJicmVha1BvaW50IiwidGVybSIsIm5lZ2F0ZWQiLCJzdGF0ZW1lbnQiLCJnZXRUZXJtIiwiaXNOZWdhdGVkIiwiZ2V0U3RhdGVtZW50IiwiZ2V0Q29udGFpbmVkQXNzZXJ0aW9uTm9kZSIsImdldE5vZGUiLCJjb250YWluZWRBc3NlcnRpb25Ob2RlIiwidmFsaWRhdGUiLCJzdGF0ZSIsImZvcndhcmQiLCJiYWNrIiwiYXNzZXJ0aW9uIiwiY29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJmaW5kQXNzZXJ0aW9uIiwiY29udGFpbmVkQXNzZXJ0aW9uIiwiZGVidWciLCJ2YWxpZGF0ZVRlcm0iLCJiaW5kIiwidmFsaWRhdGVTdGF0ZW1lbnQiLCJ2YWxpZGF0ZVdoZW5EZWNsYXJlZCIsInZhbGlkYXRlV2hlbkRlcml2ZWQiLCJhZGRBc3NlcnRpb24iLCJ0ZXJtU2luZ3VsYXIiLCJpc1Npbmd1bGFyIiwidGVybVN0cmluZyIsInN0YXRlbWVudFNpbmd1bGFyIiwic3RhdGVtZW50U3RyaW5nIiwiZGVjbGFyZWQiLCJpc0RlY2xhcmVkIiwiZGVyaXZlZCIsImlzRGVyaXZlZCIsImFwcGx5SW5kZXBlbmRlbnRseSIsImdlbmVyYWxDb250ZXh0Iiwic3BlY2lmaWNDb250ZXh0IiwidGVybUZyb21UZXJtQW5kU3Vic3RpdHV0aW9ucyIsInN0YXRlbWVudEZyb21TdGF0ZW1lbnRBbmRTdWJzdGl0dXRpb25zIiwidG9KU09OIiwianNvbiIsIm5hbWUiLCJnZXROYW1lIiwiZnJvbUpTT04iLCJpbnN0YW50aWF0ZSIsImluc3RhbnRpYXRlQ29udGFpbmVkQXNzZXJ0aW9uIiwidGVybUZyb21Db250YWluZWRBc3NlcnRpb25Ob2RlIiwibmVnYXRlZEZyb21Db250YWluZWRBc3NlcnRpb25Ob2RlIiwic3RhdGVtZW50RnJvbUNvbnRhaW5lZEFzc2VydGlvbk5vZGUiLCJmcm9tU3RhdGVtZW50Iiwic3RhdGVtZW50Tm9kZSIsImNvbnRhaW5lZEFzc2VydGlvbkZyb21TdGF0ZW1lbnROb2RlIiwidGVybUNvbnRhaW5lZCIsImlzVGVybUNvbnRhaW5lZCIsInRlcm1Ob2RlIiwiZ2V0VGVybU5vZGUiLCJmaW5kVGVybUJ5VGVybU5vZGUiLCJnZXRTdGF0ZW1lbnROb2RlIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFlQTs7O2VBQUE7OztnQ0Fic0M7a0VBRWhCOzBCQUVDO3lCQUNLO3VCQUNVOzZCQUNRO3lCQUNNOytCQUNpQzs7Ozs7O0FBRXJGLE1BQU0sRUFBRUEsR0FBRyxFQUFFQyxNQUFNLEVBQUUsR0FBR0MscUNBQXFCO01BRTdDLFdBQWVDLElBQUFBLGdCQUFNLEVBQUMsTUFBTUMsMkJBQTJCQyxrQkFBUztJQUM5RCxZQUFZQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxVQUFVLEVBQUVDLElBQUksRUFBRUMsT0FBTyxFQUFFQyxTQUFTLENBQUU7UUFDdkUsS0FBSyxDQUFDTixTQUFTQyxRQUFRQyxNQUFNQztRQUU3QixJQUFJLENBQUNDLElBQUksR0FBR0E7UUFDWixJQUFJLENBQUNDLE9BQU8sR0FBR0E7UUFDZixJQUFJLENBQUNDLFNBQVMsR0FBR0E7SUFDbkI7SUFFQUMsVUFBVTtRQUNSLE9BQU8sSUFBSSxDQUFDSCxJQUFJO0lBQ2xCO0lBRUFJLFlBQVk7UUFDVixPQUFPLElBQUksQ0FBQ0gsT0FBTztJQUNyQjtJQUVBSSxlQUFlO1FBQ2IsT0FBTyxJQUFJLENBQUNILFNBQVM7SUFDdkI7SUFFQUksNEJBQTRCO1FBQzFCLE1BQU1SLE9BQU8sSUFBSSxDQUFDUyxP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
|
|
@@ -153,14 +153,10 @@ function isVariableDefined(variable, context) {
|
|
|
153
153
|
}
|
|
154
154
|
function validateWhenDerived(term, negated, context, forward, back) {
|
|
155
155
|
const variableIdentifier = term.getVariableIdentifier(), declaredDariable = context.findDeclaredVariableByVariableIdentifier(variableIdentifier), declaredDariableDefined = isVariableDefined(declaredDariable, context);
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
validatesWhenDerived = true;
|
|
159
|
-
}
|
|
160
|
-
if (negated && !declaredDariableDefined) {
|
|
161
|
-
validatesWhenDerived = true;
|
|
156
|
+
if (negated && declaredDariableDefined) {
|
|
157
|
+
return back();
|
|
162
158
|
}
|
|
163
|
-
if (!
|
|
159
|
+
if (!negated && !declaredDariableDefined) {
|
|
164
160
|
return back();
|
|
165
161
|
}
|
|
166
162
|
return forward(context, back);
|
|
@@ -174,4 +170,4 @@ function negatedFromJDefinedAssertionNode(definedAssertionNode, context) {
|
|
|
174
170
|
return negated;
|
|
175
171
|
}
|
|
176
172
|
|
|
177
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2Fzc2VydGlvbi9kZWZpbmVkLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBjb250aW51YXRpb25VdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCBBc3NlcnRpb24gZnJvbSBcIi4uL2Fzc2VydGlvblwiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IGluc3RhbnRpYXRlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9jb250ZXh0XCI7XG5pbXBvcnQgeyBpc0Rlcml2ZWQsIGlzRGVjbGFyZWQgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL3N0YXRlXCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZURlZmluZWRBc3NlcnRpb24gfSBmcm9tIFwiLi4vLi4vcHJvY2Vzcy9pbnN0YW50aWF0ZVwiO1xuaW1wb3J0IHsgdGVybUZyb21UZXJtQW5kU3Vic3RpdHV0aW9ucyB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvc3Vic3RpdHV0aW9uc1wiO1xuaW1wb3J0IHsgZGVmaW5lZEFzc2VydGlvbkZyb21TdGF0ZW1lbnROb2RlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9lbGVtZW50XCI7XG5pbXBvcnQgeyBzZXBhcmF0ZUdyb3VuZGVkVGVybXNBbmREZWZpbmVkVmFyaWFibGVzIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9lcXVpdmFsZW5jZXNcIjtcblxuY29uc3QgeyBhbGwsIGV4aXN0cyB9ID0gY29udGludWF0aW9uVXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgRGVmaW5lZEFzc2VydGlvbiBleHRlbmRzIEFzc2VydGlvbiB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdGVybSwgbmVnYXRlZCkge1xuICAgIHN1cGVyKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCk7XG5cbiAgICB0aGlzLnRlcm0gPSB0ZXJtO1xuICAgIHRoaXMubmVnYXRlZCA9IG5lZ2F0ZWQ7XG4gIH1cblxuICBnZXRUZXJtKCkge1xuICAgIHJldHVybiB0aGlzLnRlcm07XG4gIH1cblxuICBpc05lZ2F0ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMubmVnYXRlZDtcbiAgfVxuXG4gIGdldERlZmluZWRBc3NlcnRpb25Ob2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBkZWZpbmVkQXNzZXJ0aW9uTm9kZSA9IG5vZGU7ICAvLy9cblxuICAgIHJldHVybiBkZWZpbmVkQXNzZXJ0aW9uTm9kZTtcbiAgfVxuXG4gIHZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgbGV0IGFzc2VydGlvbjtcblxuICAgIGNvbnN0IGRlZmluZWRBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtkZWZpbmVkQXNzZXJ0aW9uU3RyaW5nfScgZGVmaW5lZCBhc3NlcnRpb24uLi5gKTtcblxuICAgIGFzc2VydGlvbiA9IHRoaXMuZmluZEFzc2VydGlvbihjb250ZXh0KTtcblxuICAgIGlmIChhc3NlcnRpb24gIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGRlZmluZWRBc3NlcnRpb24gPSBhc3NlcnRpb247IC8vL1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7ZGVmaW5lZEFzc2VydGlvblN0cmluZ30nIGRlZmluZWQgYXNzZXJ0aW9uIGlzIGFscmVhZHkgcHJlc2VudC5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoZGVmaW5lZEFzc2VydGlvbiwgY29udGV4dCwgYmFjayk7XG4gICAgfVxuXG4gICAgYXNzZXJ0aW9uID0gdGhpcztcblxuICAgIGNvbnN0IHZhbGlkYXRlVGVybSA9IHRoaXMudmFsaWRhdGVUZXJtLmJpbmQodGhpcyk7XG5cbiAgICByZXR1cm4gYWxsKFtcbiAgICAgIHZhbGlkYXRlVGVybVxuICAgIF0sIHN0YXRlLCBjb250ZXh0LCAoc3RhdGUsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnN0IHZhbGlkYXRlV2hlbkRlY2xhcmVkID0gdGhpcy52YWxpZGF0ZVdoZW5EZWNsYXJlZC5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgdmFsaWRhdGVXaGVuRGVyaXZlZCA9IHRoaXMudmFsaWRhdGVXaGVuRGVyaXZlZC5iaW5kKHRoaXMpO1xuXG4gICAgICByZXR1cm4gZXhpc3RzKFtcbiAgICAgICAgdmFsaWRhdGVXaGVuRGVjbGFyZWQsXG4gICAgICAgIHZhbGlkYXRlV2hlbkRlcml2ZWRcbiAgICAgIF0sIHN0YXRlLCBjb250ZXh0LCAoc3RhdGUsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgY29uc3QgZGVmaW5lZEFzc2VydGlvbiA9IGFzc2VydGlvbjsgLy8vXG5cbiAgICAgICAgY29udGV4dC5hZGRBc3NlcnRpb24oYXNzZXJ0aW9uKTtcblxuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2RlZmluZWRBc3NlcnRpb25TdHJpbmd9JyBkZWZpbmVkIGFzc2VydGlvbi5gKTtcblxuICAgICAgICByZXR1cm4gZm9yd2FyZChkZWZpbmVkQXNzZXJ0aW9uLCBjb250ZXh0LCBiYWNrKTtcbiAgICAgIH0sIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdmFsaWRhdGVUZXJtKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgZGVmaW5lZEFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2RlZmluZWRBc3NlcnRpb25TdHJpbmd9JyBkZWZpbmVkIGFzc2VydGlvbidzIHRlcm0uLi5gKTtcblxuICAgIGNvbnN0IHRlcm1TaW5ndWxhciA9IHRoaXMudGVybS5pc1Npbmd1bGFyKCk7XG5cbiAgICBpZiAoIXRlcm1TaW5ndWxhcikge1xuICAgICAgY29uc3QgdGVybVN0cmluZyA9IHRoaXMudGVybS5nZXRTdHJpbmcoKSAvLy9cblxuICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtIGlzIG5vdCBzaW5ndWxhci5gKTtcblxuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy50ZXJtLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAodGVybSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgdGhpcy50ZXJtID0gdGVybTtcblxuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVzIHRoZSAnJHtkZWZpbmVkQXNzZXJ0aW9uU3RyaW5nfScgZGVmaW5lZCBhc3NlcnRpb24ncyB0ZXJtLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChzdGF0ZSwgY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB2YWxpZGF0ZVdoZW5EZWNsYXJlZChzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGRlY2xhcmVkID0gaXNEZWNsYXJlZChzdGF0ZSk7XG5cbiAgICBpZiAoIWRlY2xhcmVkKSB7XG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH1cblxuICAgIGNvbnN0IGRlZmluZWRBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2RlZmluZWRBc3NlcnRpb25TdHJpbmd9JyBkZWNsYXJlZCBkZWZpbmVkIGFzc2VydGlvbi4uLmApO1xuXG4gICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtkZWZpbmVkQXNzZXJ0aW9uU3RyaW5nfScgZGVjbGFyZWQgZGVmaW5lZCBhc3NlcnRpb24uYCk7XG5cbiAgICByZXR1cm4gZm9yd2FyZChzdGF0ZSwgY29udGV4dCwgYmFjayk7XG4gIH1cblxuICB2YWxpZGF0ZVdoZW5EZXJpdmVkKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgZGVyaXZlZCA9IGlzRGVyaXZlZChzdGF0ZSk7XG5cbiAgICBpZiAoIWRlcml2ZWQpIHtcbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfVxuXG4gICAgY29uc3QgZGVmaW5lZEFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7ZGVmaW5lZEFzc2VydGlvblN0cmluZ30nIGRlcml2ZWQgZGVmaW5lZCBhc3NlcnRpb24uLi5gKTtcblxuICAgIHJldHVybiB2YWxpZGF0ZVdoZW5EZXJpdmVkKHRoaXMudGVybSwgdGhpcy5uZWdhdGVkLCBjb250ZXh0LCAoY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtkZWZpbmVkQXNzZXJ0aW9uU3RyaW5nfScgZGVyaXZlZCBkZWZpbmVkIGFzc2VydGlvbi5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoc3RhdGUsIGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgYXBwbHlJbmRlcGVuZGVudGx5KGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0LCAvLy9cbiAgICAgICAgICBkZWZpbmVkQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBBcDBseWluZyB0aGUgJyR7ZGVmaW5lZEFzc2VydGlvblN0cmluZ30nIGRlZmluZWQgYXNzZXJ0aW9uIGluZGVwZW5kZW50bHkuLi5gKTtcblxuICAgIGNvbnN0IHRlcm0gPSB0ZXJtRnJvbVRlcm1BbmRTdWJzdGl0dXRpb25zKHRoaXMudGVybSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gdmFsaWRhdGVXaGVuRGVyaXZlZCh0ZXJtLCB0aGlzLm5lZ2F0ZWQsIGNvbnRleHQsIChjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi5hcHBsaWVkIHRoZSAnJHtkZWZpbmVkQXNzZXJ0aW9uU3RyaW5nfScgZGVmaW5lZCBhc3NlcnRpb24gaW5kZXBlbmRlbnRseS5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgbGV0IGpzb247XG5cbiAgICBjb25zdCBuYW1lID0gdGhpcy5nZXROYW1lKCksXG4gICAgICAgICAgc3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTtcblxuICAgIGpzb24gPSB7XG4gICAgICBuYW1lLFxuICAgICAgc3RyaW5nXG4gICAgfTtcblxuICAgIHJldHVybiBqc29uO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIkRlZmluZWRBc3NlcnRpb25cIjtcblxuICBzdGF0aWMgZnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICAgIGxldCBkZWZpbmVkQXNzZXJ0aW9uID0gbnVsbDtcblxuICAgIGNvbnN0IHsgbmFtZSB9ID0ganNvbjtcblxuICAgIGlmICh0aGlzLm5hbWUgPT09IG5hbWUpIHtcbiAgICAgIGluc3RhbnRpYXRlKChjb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IHsgc3RyaW5nIH0gPSBqc29uLFxuICAgICAgICAgICAgICBkZWZpbmVkQXNzZXJ0aW9uTm9kZSA9IGluc3RhbnRpYXRlRGVmaW5lZEFzc2VydGlvbihzdHJpbmcsIGNvbnRleHQpLFxuICAgICAgICAgICAgICBub2RlID0gZGVmaW5lZEFzc2VydGlvbk5vZGUsICAvLy9cbiAgICAgICAgICAgICAgYnJlYWtQb2ludCA9IG51bGwsXG4gICAgICAgICAgICAgIHRlcm0gPSB0ZXJtRnJvbUpEZWZpbmVkQXNzZXJ0aW9uTm9kZShkZWZpbmVkQXNzZXJ0aW9uTm9kZSwgY29udGV4dCksXG4gICAgICAgICAgICAgIG5lZ2F0ZWQgPSBuZWdhdGVkRnJvbUpEZWZpbmVkQXNzZXJ0aW9uTm9kZShkZWZpbmVkQXNzZXJ0aW9uTm9kZSwgY29udGV4dCk7XG5cbiAgICAgICAgY29udGV4dCA9IG51bGw7XG5cbiAgICAgICAgZGVmaW5lZEFzc2VydGlvbiA9IG5ldyBEZWZpbmVkQXNzZXJ0aW9uKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdGVybSwgbmVnYXRlZCk7XG4gICAgICB9LCBjb250ZXh0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGVmaW5lZEFzc2VydGlvbjtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCkge1xuICAgIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnQuZ2V0Tm9kZSgpLFxuICAgICAgICAgIGRlZmluZWRBc3NlcnRpb24gPSBkZWZpbmVkQXNzZXJ0aW9uRnJvbVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gZGVmaW5lZEFzc2VydGlvbjtcbiAgfVxufSk7XG5cbmZ1bmN0aW9uIGlzVmFyaWFibGVEZWZpbmVkKHZhcmlhYmxlLCBjb250ZXh0KSB7XG4gIGNvbnN0IGVxdWl2YWxlbmNlcyA9IGNvbnRleHQuZ2V0RXF1aXZhbGVuY2VzKCksXG4gICAgICAgIGdyb3VuZGVkVGVybXMgPSBbXSxcbiAgICAgICAgZGVmaW5lZFZhcmlhYmxlcyA9IFtdO1xuXG4gIHNlcGFyYXRlR3JvdW5kZWRUZXJtc0FuZERlZmluZWRWYXJpYWJsZXMoZXF1aXZhbGVuY2VzLCBncm91bmRlZFRlcm1zLCBkZWZpbmVkVmFyaWFibGVzLCBjb250ZXh0KTtcblxuICBjb25zdCB2YXJpYWJsZU1hdGNoZXNEZWZpbmVkVmFyaWFibGUgPSBkZWZpbmVkVmFyaWFibGVzLnNvbWUoKGRlZmluZWRWYXJpYWJsZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGRlZmluZWRWYXJpYWJsZUVxdWFsVG9WYXJpYWJsZSA9IGRlZmluZWRWYXJpYWJsZS5pc0VxdWFsVG8odmFyaWFibGUpO1xuXG4gICAgICAgICAgaWYgKGRlZmluZWRWYXJpYWJsZUVxdWFsVG9WYXJpYWJsZSA9PT0gdmFyaWFibGUpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICAgIHZhcmlhYmxlRGVmaW5lZCA9IHZhcmlhYmxlTWF0Y2hlc0RlZmluZWRWYXJpYWJsZTsgLy8vXG5cbiAgcmV0dXJuIHZhcmlhYmxlRGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVXaGVuRGVyaXZlZCh0ZXJtLCBuZWdhdGVkLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gIGNvbnN0IHZhcmlhYmxlSWRlbnRpZmllciA9IHRlcm0uZ2V0VmFyaWFibGVJZGVudGlmaWVyKCksXG4gICAgICAgIGRlY2xhcmVkRGFyaWFibGUgPSBjb250ZXh0LmZpbmREZWNsYXJlZFZhcmlhYmxlQnlWYXJpYWJsZUlkZW50aWZpZXIodmFyaWFibGVJZGVudGlmaWVyKSxcbiAgICAgICAgZGVjbGFyZWREYXJpYWJsZURlZmluZWQgPSBpc1ZhcmlhYmxlRGVmaW5lZChkZWNsYXJlZERhcmlhYmxlLCBjb250ZXh0KTtcblxuICBsZXQgdmFsaWRhdGVzV2hlbkRlcml2ZWQgPSBmYWxzZTtcblxuICBpZiAoIW5lZ2F0ZWQgJiYgZGVjbGFyZWREYXJpYWJsZURlZmluZWQpIHtcbiAgICB2YWxpZGF0ZXNXaGVuRGVyaXZlZCA9IHRydWU7XG4gIH1cblxuICBpZiAobmVnYXRlZCAmJiAhZGVjbGFyZWREYXJpYWJsZURlZmluZWQpIHtcbiAgICB2YWxpZGF0ZXNXaGVuRGVyaXZlZCA9IHRydWU7XG4gIH1cblxuICBpZiAoIXZhbGlkYXRlc1doZW5EZXJpdmVkKSB7XG4gICAgcmV0dXJuIGJhY2soKTtcbiAgfVxuXG4gIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xufVxuXG5mdW5jdGlvbiB0ZXJtRnJvbUpEZWZpbmVkQXNzZXJ0aW9uTm9kZShkZWZpbmVkQXNzZXJ0aW9uTm9kZSwgY29udGV4dCkge1xuICBjb25zdCB0ZXJtTm9kZSA9IGRlZmluZWRBc3NlcnRpb25Ob2RlLmdldFRlcm1Ob2RlKCksXG4gICAgICAgIHRlcm0gPSBjb250ZXh0LmZpbmRUZXJtQnlUZXJtTm9kZSh0ZXJtTm9kZSk7XG5cbiAgcmV0dXJuIHRlcm07XG59XG5cbmZ1bmN0aW9uIG5lZ2F0ZWRGcm9tSkRlZmluZWRBc3NlcnRpb25Ob2RlKGRlZmluZWRBc3NlcnRpb25Ob2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IG5lZ2F0ZWQgPSBkZWZpbmVkQXNzZXJ0aW9uTm9kZS5pc05lZ2F0ZWQoKTtcblxuICByZXR1cm4gbmVnYXRlZDtcbn1cbiJdLCJuYW1lcyI6WyJhbGwiLCJleGlzdHMiLCJjb250aW51YXRpb25VdGlsaXRpZXMiLCJkZWZpbmUiLCJEZWZpbmVkQXNzZXJ0aW9uIiwiQXNzZXJ0aW9uIiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJicmVha1BvaW50IiwidGVybSIsIm5lZ2F0ZWQiLCJnZXRUZXJtIiwiaXNOZWdhdGVkIiwiZ2V0RGVmaW5lZEFzc2VydGlvbk5vZGUiLCJnZXROb2RlIiwiZGVmaW5lZEFzc2VydGlvbk5vZGUiLCJ2YWxpZGF0ZSIsInN0YXRlIiwiZm9yd2FyZCIsImJhY2siLCJhc3NlcnRpb24iLCJkZWZpbmVkQXNzZXJ0aW9uU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJmaW5kQXNzZXJ0aW9uIiwiZGVmaW5lZEFzc2VydGlvbiIsImRlYnVnIiwidmFsaWRhdGVUZXJtIiwiYmluZCIsInZhbGlkYXRlV2hlbkRlY2xhcmVkIiwidmFsaWRhdGVXaGVuRGVyaXZlZCIsImFkZEFzc2VydGlvbiIsInRlcm1TaW5ndWxhciIsImlzU2luZ3VsYXIiLCJ0ZXJtU3RyaW5nIiwiZGVjbGFyZWQiLCJpc0RlY2xhcmVkIiwiZGVyaXZlZCIsImlzRGVyaXZlZCIsImFwcGx5SW5kZXBlbmRlbnRseSIsImdlbmVyYWxDb250ZXh0Iiwic3BlY2lmaWNDb250ZXh0IiwidGVybUZyb21UZXJtQW5kU3Vic3RpdHV0aW9ucyIsInRvSlNPTiIsImpzb24iLCJuYW1lIiwiZ2V0TmFtZSIsImZyb21KU09OIiwiaW5zdGFudGlhdGUiLCJpbnN0YW50aWF0ZURlZmluZWRBc3NlcnRpb24iLCJ0ZXJtRnJvbUpEZWZpbmVkQXNzZXJ0aW9uTm9kZSIsIm5lZ2F0ZWRGcm9tSkRlZmluZWRBc3NlcnRpb25Ob2RlIiwiZnJvbVN0YXRlbWVudCIsInN0YXRlbWVudCIsInN0YXRlbWVudE5vZGUiLCJkZWZpbmVkQXNzZXJ0aW9uRnJvbVN0YXRlbWVudE5vZGUiLCJpc1ZhcmlhYmxlRGVmaW5lZCIsInZhcmlhYmxlIiwiZXF1aXZhbGVuY2VzIiwiZ2V0RXF1aXZhbGVuY2VzIiwiZ3JvdW5kZWRUZXJtcyIsImRlZmluZWRWYXJpYWJsZXMiLCJzZXBhcmF0ZUdyb3VuZGVkVGVybXNBbmREZWZpbmVkVmFyaWFibGVzIiwidmFyaWFibGVNYXRjaGVzRGVmaW5lZFZhcmlhYmxlIiwic29tZSIsImRlZmluZWRWYXJpYWJsZSIsImRlZmluZWRWYXJpYWJsZUVxdWFsVG9WYXJpYWJsZSIsImlzRXF1YWxUbyIsInZhcmlhYmxlRGVmaW5lZCIsInZhcmlhYmxlSWRlbnRpZmllciIsImdldFZhcmlhYmxlSWRlbnRpZmllciIsImRlY2xhcmVkRGFyaWFibGUiLCJmaW5kRGVjbGFyZWRWYXJpYWJsZUJ5VmFyaWFibGVJZGVudGlmaWVyIiwiZGVjbGFyZWREYXJpYWJsZURlZmluZWQiLCJ2YWxpZGF0ZXNXaGVuRGVyaXZlZCIsInRlcm1Ob2RlIiwiZ2V0VGVybU5vZGUiLCJmaW5kVGVybUJ5VGVybU5vZGUiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytC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
|
|
173
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2Fzc2VydGlvbi9kZWZpbmVkLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBjb250aW51YXRpb25VdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCBBc3NlcnRpb24gZnJvbSBcIi4uL2Fzc2VydGlvblwiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IGluc3RhbnRpYXRlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9jb250ZXh0XCI7XG5pbXBvcnQgeyBpc0Rlcml2ZWQsIGlzRGVjbGFyZWQgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL3N0YXRlXCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZURlZmluZWRBc3NlcnRpb24gfSBmcm9tIFwiLi4vLi4vcHJvY2Vzcy9pbnN0YW50aWF0ZVwiO1xuaW1wb3J0IHsgdGVybUZyb21UZXJtQW5kU3Vic3RpdHV0aW9ucyB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvc3Vic3RpdHV0aW9uc1wiO1xuaW1wb3J0IHsgZGVmaW5lZEFzc2VydGlvbkZyb21TdGF0ZW1lbnROb2RlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9lbGVtZW50XCI7XG5pbXBvcnQgeyBzZXBhcmF0ZUdyb3VuZGVkVGVybXNBbmREZWZpbmVkVmFyaWFibGVzIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9lcXVpdmFsZW5jZXNcIjtcblxuY29uc3QgeyBhbGwsIGV4aXN0cyB9ID0gY29udGludWF0aW9uVXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgRGVmaW5lZEFzc2VydGlvbiBleHRlbmRzIEFzc2VydGlvbiB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdGVybSwgbmVnYXRlZCkge1xuICAgIHN1cGVyKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCk7XG5cbiAgICB0aGlzLnRlcm0gPSB0ZXJtO1xuICAgIHRoaXMubmVnYXRlZCA9IG5lZ2F0ZWQ7XG4gIH1cblxuICBnZXRUZXJtKCkge1xuICAgIHJldHVybiB0aGlzLnRlcm07XG4gIH1cblxuICBpc05lZ2F0ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMubmVnYXRlZDtcbiAgfVxuXG4gIGdldERlZmluZWRBc3NlcnRpb25Ob2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBkZWZpbmVkQXNzZXJ0aW9uTm9kZSA9IG5vZGU7ICAvLy9cblxuICAgIHJldHVybiBkZWZpbmVkQXNzZXJ0aW9uTm9kZTtcbiAgfVxuXG4gIHZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgbGV0IGFzc2VydGlvbjtcblxuICAgIGNvbnN0IGRlZmluZWRBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtkZWZpbmVkQXNzZXJ0aW9uU3RyaW5nfScgZGVmaW5lZCBhc3NlcnRpb24uLi5gKTtcblxuICAgIGFzc2VydGlvbiA9IHRoaXMuZmluZEFzc2VydGlvbihjb250ZXh0KTtcblxuICAgIGlmIChhc3NlcnRpb24gIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGRlZmluZWRBc3NlcnRpb24gPSBhc3NlcnRpb247IC8vL1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7ZGVmaW5lZEFzc2VydGlvblN0cmluZ30nIGRlZmluZWQgYXNzZXJ0aW9uIGlzIGFscmVhZHkgcHJlc2VudC5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoZGVmaW5lZEFzc2VydGlvbiwgY29udGV4dCwgYmFjayk7XG4gICAgfVxuXG4gICAgYXNzZXJ0aW9uID0gdGhpcztcblxuICAgIGNvbnN0IHZhbGlkYXRlVGVybSA9IHRoaXMudmFsaWRhdGVUZXJtLmJpbmQodGhpcyk7XG5cbiAgICByZXR1cm4gYWxsKFtcbiAgICAgIHZhbGlkYXRlVGVybVxuICAgIF0sIHN0YXRlLCBjb250ZXh0LCAoc3RhdGUsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnN0IHZhbGlkYXRlV2hlbkRlY2xhcmVkID0gdGhpcy52YWxpZGF0ZVdoZW5EZWNsYXJlZC5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgdmFsaWRhdGVXaGVuRGVyaXZlZCA9IHRoaXMudmFsaWRhdGVXaGVuRGVyaXZlZC5iaW5kKHRoaXMpO1xuXG4gICAgICByZXR1cm4gZXhpc3RzKFtcbiAgICAgICAgdmFsaWRhdGVXaGVuRGVjbGFyZWQsXG4gICAgICAgIHZhbGlkYXRlV2hlbkRlcml2ZWRcbiAgICAgIF0sIHN0YXRlLCBjb250ZXh0LCAoc3RhdGUsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgY29uc3QgZGVmaW5lZEFzc2VydGlvbiA9IGFzc2VydGlvbjsgLy8vXG5cbiAgICAgICAgY29udGV4dC5hZGRBc3NlcnRpb24oYXNzZXJ0aW9uKTtcblxuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2RlZmluZWRBc3NlcnRpb25TdHJpbmd9JyBkZWZpbmVkIGFzc2VydGlvbi5gKTtcblxuICAgICAgICByZXR1cm4gZm9yd2FyZChkZWZpbmVkQXNzZXJ0aW9uLCBjb250ZXh0LCBiYWNrKTtcbiAgICAgIH0sIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdmFsaWRhdGVUZXJtKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgZGVmaW5lZEFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2RlZmluZWRBc3NlcnRpb25TdHJpbmd9JyBkZWZpbmVkIGFzc2VydGlvbidzIHRlcm0uLi5gKTtcblxuICAgIGNvbnN0IHRlcm1TaW5ndWxhciA9IHRoaXMudGVybS5pc1Npbmd1bGFyKCk7XG5cbiAgICBpZiAoIXRlcm1TaW5ndWxhcikge1xuICAgICAgY29uc3QgdGVybVN0cmluZyA9IHRoaXMudGVybS5nZXRTdHJpbmcoKSAvLy9cblxuICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtIGlzIG5vdCBzaW5ndWxhci5gKTtcblxuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy50ZXJtLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAodGVybSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgdGhpcy50ZXJtID0gdGVybTtcblxuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVzIHRoZSAnJHtkZWZpbmVkQXNzZXJ0aW9uU3RyaW5nfScgZGVmaW5lZCBhc3NlcnRpb24ncyB0ZXJtLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChzdGF0ZSwgY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB2YWxpZGF0ZVdoZW5EZWNsYXJlZChzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGRlY2xhcmVkID0gaXNEZWNsYXJlZChzdGF0ZSk7XG5cbiAgICBpZiAoIWRlY2xhcmVkKSB7XG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH1cblxuICAgIGNvbnN0IGRlZmluZWRBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2RlZmluZWRBc3NlcnRpb25TdHJpbmd9JyBkZWNsYXJlZCBkZWZpbmVkIGFzc2VydGlvbi4uLmApO1xuXG4gICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtkZWZpbmVkQXNzZXJ0aW9uU3RyaW5nfScgZGVjbGFyZWQgZGVmaW5lZCBhc3NlcnRpb24uYCk7XG5cbiAgICByZXR1cm4gZm9yd2FyZChzdGF0ZSwgY29udGV4dCwgYmFjayk7XG4gIH1cblxuICB2YWxpZGF0ZVdoZW5EZXJpdmVkKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgZGVyaXZlZCA9IGlzRGVyaXZlZChzdGF0ZSk7XG5cbiAgICBpZiAoIWRlcml2ZWQpIHtcbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfVxuXG4gICAgY29uc3QgZGVmaW5lZEFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7ZGVmaW5lZEFzc2VydGlvblN0cmluZ30nIGRlcml2ZWQgZGVmaW5lZCBhc3NlcnRpb24uLi5gKTtcblxuICAgIHJldHVybiB2YWxpZGF0ZVdoZW5EZXJpdmVkKHRoaXMudGVybSwgdGhpcy5uZWdhdGVkLCBjb250ZXh0LCAoY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtkZWZpbmVkQXNzZXJ0aW9uU3RyaW5nfScgZGVyaXZlZCBkZWZpbmVkIGFzc2VydGlvbi5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoc3RhdGUsIGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgYXBwbHlJbmRlcGVuZGVudGx5KGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0LCAvLy9cbiAgICAgICAgICBkZWZpbmVkQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBBcDBseWluZyB0aGUgJyR7ZGVmaW5lZEFzc2VydGlvblN0cmluZ30nIGRlZmluZWQgYXNzZXJ0aW9uIGluZGVwZW5kZW50bHkuLi5gKTtcblxuICAgIGNvbnN0IHRlcm0gPSB0ZXJtRnJvbVRlcm1BbmRTdWJzdGl0dXRpb25zKHRoaXMudGVybSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gdmFsaWRhdGVXaGVuRGVyaXZlZCh0ZXJtLCB0aGlzLm5lZ2F0ZWQsIGNvbnRleHQsIChjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi5hcHBsaWVkIHRoZSAnJHtkZWZpbmVkQXNzZXJ0aW9uU3RyaW5nfScgZGVmaW5lZCBhc3NlcnRpb24gaW5kZXBlbmRlbnRseS5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgbGV0IGpzb247XG5cbiAgICBjb25zdCBuYW1lID0gdGhpcy5nZXROYW1lKCksXG4gICAgICAgICAgc3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTtcblxuICAgIGpzb24gPSB7XG4gICAgICBuYW1lLFxuICAgICAgc3RyaW5nXG4gICAgfTtcblxuICAgIHJldHVybiBqc29uO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIkRlZmluZWRBc3NlcnRpb25cIjtcblxuICBzdGF0aWMgZnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICAgIGxldCBkZWZpbmVkQXNzZXJ0aW9uID0gbnVsbDtcblxuICAgIGNvbnN0IHsgbmFtZSB9ID0ganNvbjtcblxuICAgIGlmICh0aGlzLm5hbWUgPT09IG5hbWUpIHtcbiAgICAgIGluc3RhbnRpYXRlKChjb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IHsgc3RyaW5nIH0gPSBqc29uLFxuICAgICAgICAgICAgICBkZWZpbmVkQXNzZXJ0aW9uTm9kZSA9IGluc3RhbnRpYXRlRGVmaW5lZEFzc2VydGlvbihzdHJpbmcsIGNvbnRleHQpLFxuICAgICAgICAgICAgICBub2RlID0gZGVmaW5lZEFzc2VydGlvbk5vZGUsICAvLy9cbiAgICAgICAgICAgICAgYnJlYWtQb2ludCA9IG51bGwsXG4gICAgICAgICAgICAgIHRlcm0gPSB0ZXJtRnJvbUpEZWZpbmVkQXNzZXJ0aW9uTm9kZShkZWZpbmVkQXNzZXJ0aW9uTm9kZSwgY29udGV4dCksXG4gICAgICAgICAgICAgIG5lZ2F0ZWQgPSBuZWdhdGVkRnJvbUpEZWZpbmVkQXNzZXJ0aW9uTm9kZShkZWZpbmVkQXNzZXJ0aW9uTm9kZSwgY29udGV4dCk7XG5cbiAgICAgICAgY29udGV4dCA9IG51bGw7XG5cbiAgICAgICAgZGVmaW5lZEFzc2VydGlvbiA9IG5ldyBEZWZpbmVkQXNzZXJ0aW9uKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdGVybSwgbmVnYXRlZCk7XG4gICAgICB9LCBjb250ZXh0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGVmaW5lZEFzc2VydGlvbjtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCkge1xuICAgIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnQuZ2V0Tm9kZSgpLFxuICAgICAgICAgIGRlZmluZWRBc3NlcnRpb24gPSBkZWZpbmVkQXNzZXJ0aW9uRnJvbVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gZGVmaW5lZEFzc2VydGlvbjtcbiAgfVxufSk7XG5cbmZ1bmN0aW9uIGlzVmFyaWFibGVEZWZpbmVkKHZhcmlhYmxlLCBjb250ZXh0KSB7XG4gIGNvbnN0IGVxdWl2YWxlbmNlcyA9IGNvbnRleHQuZ2V0RXF1aXZhbGVuY2VzKCksXG4gICAgICAgIGdyb3VuZGVkVGVybXMgPSBbXSxcbiAgICAgICAgZGVmaW5lZFZhcmlhYmxlcyA9IFtdO1xuXG4gIHNlcGFyYXRlR3JvdW5kZWRUZXJtc0FuZERlZmluZWRWYXJpYWJsZXMoZXF1aXZhbGVuY2VzLCBncm91bmRlZFRlcm1zLCBkZWZpbmVkVmFyaWFibGVzLCBjb250ZXh0KTtcblxuICBjb25zdCB2YXJpYWJsZU1hdGNoZXNEZWZpbmVkVmFyaWFibGUgPSBkZWZpbmVkVmFyaWFibGVzLnNvbWUoKGRlZmluZWRWYXJpYWJsZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGRlZmluZWRWYXJpYWJsZUVxdWFsVG9WYXJpYWJsZSA9IGRlZmluZWRWYXJpYWJsZS5pc0VxdWFsVG8odmFyaWFibGUpO1xuXG4gICAgICAgICAgaWYgKGRlZmluZWRWYXJpYWJsZUVxdWFsVG9WYXJpYWJsZSA9PT0gdmFyaWFibGUpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICAgIHZhcmlhYmxlRGVmaW5lZCA9IHZhcmlhYmxlTWF0Y2hlc0RlZmluZWRWYXJpYWJsZTsgLy8vXG5cbiAgcmV0dXJuIHZhcmlhYmxlRGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVXaGVuRGVyaXZlZCh0ZXJtLCBuZWdhdGVkLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gIGNvbnN0IHZhcmlhYmxlSWRlbnRpZmllciA9IHRlcm0uZ2V0VmFyaWFibGVJZGVudGlmaWVyKCksXG4gICAgICAgIGRlY2xhcmVkRGFyaWFibGUgPSBjb250ZXh0LmZpbmREZWNsYXJlZFZhcmlhYmxlQnlWYXJpYWJsZUlkZW50aWZpZXIodmFyaWFibGVJZGVudGlmaWVyKSxcbiAgICAgICAgZGVjbGFyZWREYXJpYWJsZURlZmluZWQgPSBpc1ZhcmlhYmxlRGVmaW5lZChkZWNsYXJlZERhcmlhYmxlLCBjb250ZXh0KTtcblxuICBpZiAobmVnYXRlZCAmJiBkZWNsYXJlZERhcmlhYmxlRGVmaW5lZCkge1xuICAgIHJldHVybiBiYWNrKCk7XG4gIH1cblxuICBpZiAoIW5lZ2F0ZWQgJiYgIWRlY2xhcmVkRGFyaWFibGVEZWZpbmVkKSB7XG4gICAgcmV0dXJuIGJhY2soKTtcbiAgfVxuXG4gIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xufVxuXG5mdW5jdGlvbiB0ZXJtRnJvbUpEZWZpbmVkQXNzZXJ0aW9uTm9kZShkZWZpbmVkQXNzZXJ0aW9uTm9kZSwgY29udGV4dCkge1xuICBjb25zdCB0ZXJtTm9kZSA9IGRlZmluZWRBc3NlcnRpb25Ob2RlLmdldFRlcm1Ob2RlKCksXG4gICAgICAgIHRlcm0gPSBjb250ZXh0LmZpbmRUZXJtQnlUZXJtTm9kZSh0ZXJtTm9kZSk7XG5cbiAgcmV0dXJuIHRlcm07XG59XG5cbmZ1bmN0aW9uIG5lZ2F0ZWRGcm9tSkRlZmluZWRBc3NlcnRpb25Ob2RlKGRlZmluZWRBc3NlcnRpb25Ob2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IG5lZ2F0ZWQgPSBkZWZpbmVkQXNzZXJ0aW9uTm9kZS5pc05lZ2F0ZWQoKTtcblxuICByZXR1cm4gbmVnYXRlZDtcbn1cbiJdLCJuYW1lcyI6WyJhbGwiLCJleGlzdHMiLCJjb250aW51YXRpb25VdGlsaXRpZXMiLCJkZWZpbmUiLCJEZWZpbmVkQXNzZXJ0aW9uIiwiQXNzZXJ0aW9uIiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJicmVha1BvaW50IiwidGVybSIsIm5lZ2F0ZWQiLCJnZXRUZXJtIiwiaXNOZWdhdGVkIiwiZ2V0RGVmaW5lZEFzc2VydGlvbk5vZGUiLCJnZXROb2RlIiwiZGVmaW5lZEFzc2VydGlvbk5vZGUiLCJ2YWxpZGF0ZSIsInN0YXRlIiwiZm9yd2FyZCIsImJhY2siLCJhc3NlcnRpb24iLCJkZWZpbmVkQXNzZXJ0aW9uU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJmaW5kQXNzZXJ0aW9uIiwiZGVmaW5lZEFzc2VydGlvbiIsImRlYnVnIiwidmFsaWRhdGVUZXJtIiwiYmluZCIsInZhbGlkYXRlV2hlbkRlY2xhcmVkIiwidmFsaWRhdGVXaGVuRGVyaXZlZCIsImFkZEFzc2VydGlvbiIsInRlcm1TaW5ndWxhciIsImlzU2luZ3VsYXIiLCJ0ZXJtU3RyaW5nIiwiZGVjbGFyZWQiLCJpc0RlY2xhcmVkIiwiZGVyaXZlZCIsImlzRGVyaXZlZCIsImFwcGx5SW5kZXBlbmRlbnRseSIsImdlbmVyYWxDb250ZXh0Iiwic3BlY2lmaWNDb250ZXh0IiwidGVybUZyb21UZXJtQW5kU3Vic3RpdHV0aW9ucyIsInRvSlNPTiIsImpzb24iLCJuYW1lIiwiZ2V0TmFtZSIsImZyb21KU09OIiwiaW5zdGFudGlhdGUiLCJpbnN0YW50aWF0ZURlZmluZWRBc3NlcnRpb24iLCJ0ZXJtRnJvbUpEZWZpbmVkQXNzZXJ0aW9uTm9kZSIsIm5lZ2F0ZWRGcm9tSkRlZmluZWRBc3NlcnRpb25Ob2RlIiwiZnJvbVN0YXRlbWVudCIsInN0YXRlbWVudCIsInN0YXRlbWVudE5vZGUiLCJkZWZpbmVkQXNzZXJ0aW9uRnJvbVN0YXRlbWVudE5vZGUiLCJpc1ZhcmlhYmxlRGVmaW5lZCIsInZhcmlhYmxlIiwiZXF1aXZhbGVuY2VzIiwiZ2V0RXF1aXZhbGVuY2VzIiwiZ3JvdW5kZWRUZXJtcyIsImRlZmluZWRWYXJpYWJsZXMiLCJzZXBhcmF0ZUdyb3VuZGVkVGVybXNBbmREZWZpbmVkVmFyaWFibGVzIiwidmFyaWFibGVNYXRjaGVzRGVmaW5lZFZhcmlhYmxlIiwic29tZSIsImRlZmluZWRWYXJpYWJsZSIsImRlZmluZWRWYXJpYWJsZUVxdWFsVG9WYXJpYWJsZSIsImlzRXF1YWxUbyIsInZhcmlhYmxlRGVmaW5lZCIsInZhcmlhYmxlSWRlbnRpZmllciIsImdldFZhcmlhYmxlSWRlbnRpZmllciIsImRlY2xhcmVkRGFyaWFibGUiLCJmaW5kRGVjbGFyZWRWYXJpYWJsZUJ5VmFyaWFibGVJZGVudGlmaWVyIiwiZGVjbGFyZWREYXJpYWJsZURlZmluZWQiLCJ0ZXJtTm9kZSIsImdldFRlcm1Ob2RlIiwiZmluZFRlcm1CeVRlcm1Ob2RlIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFnQkE7OztlQUFBOzs7Z0NBZHNDO2tFQUVoQjswQkFFQzt5QkFDSzt1QkFDVTs2QkFDTTsrQkFDQzt5QkFDSzs4QkFDTzs7Ozs7O0FBRXpELE1BQU0sRUFBRUEsR0FBRyxFQUFFQyxNQUFNLEVBQUUsR0FBR0MscUNBQXFCO01BRTdDLFdBQWVDLElBQUFBLGdCQUFN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
|
|
@@ -109,24 +109,26 @@ const _default = (0, _elements.define)(class SignatureAssertion extends _asserti
|
|
|
109
109
|
unifyClaim(claim, context, forward, back) {
|
|
110
110
|
const claimString = claim.getString(), signatureAssertionString = this.getString();
|
|
111
111
|
context.trace(`Unifying the '${claimString}' claim with the '${signatureAssertionString}' signature assertion...`);
|
|
112
|
-
return (0, _context.
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
return continuation(claimUnifies);
|
|
118
|
-
}
|
|
119
|
-
return axiom.unifyClaim(claim, context, (claimUnifies)=>{
|
|
120
|
-
if (claimUnifies) {
|
|
121
|
-
context.debug(`...unified the '${claimString}' claim with the '${signatureAssertionString}' signature assertion.`);
|
|
122
|
-
}
|
|
123
|
-
if (claimUnifies) {
|
|
112
|
+
return (0, _context.isolate)((claim, context, forward, back)=>{
|
|
113
|
+
return (0, _context.reconcile)((context)=>{
|
|
114
|
+
const axiom = context.findAxiomByLink(this.link);
|
|
115
|
+
return axiom.unifyTerms(this.terms, context, (context, back)=>{
|
|
116
|
+
return axiom.unifyClaim(claim, context, (context, back)=>{
|
|
124
117
|
context.commit();
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
});
|
|
128
|
-
});
|
|
129
|
-
}, context)
|
|
118
|
+
return forward(back);
|
|
119
|
+
}, back);
|
|
120
|
+
}, back);
|
|
121
|
+
}, context);
|
|
122
|
+
}, claim, context, (claim, context, back)=>{
|
|
123
|
+
context.debug(`...unified the '${claimString}' claim with the '${signatureAssertionString}' signature assertion.`);
|
|
124
|
+
return forward(context, back);
|
|
125
|
+
}, (exception)=>{
|
|
126
|
+
if (exception) {
|
|
127
|
+
return back(exception);
|
|
128
|
+
}
|
|
129
|
+
context.trace(`Unable to unify the '${claimString}' claim with the '${signatureAssertionString}' signature assertion.`);
|
|
130
|
+
return back();
|
|
131
|
+
});
|
|
130
132
|
}
|
|
131
133
|
toJSON() {
|
|
132
134
|
let json;
|
|
@@ -171,4 +173,4 @@ function termsFromSignatureAssertionNode(signatureAssertionNode, context) {
|
|
|
171
173
|
return terms;
|
|
172
174
|
}
|
|
173
175
|
|
|
174
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2Fzc2VydGlvbi9zaWduYXR1cmUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGJyZWFrUG9pbnRVdGlsaXRpZXMsIGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IEFzc2VydGlvbiBmcm9tIFwiLi4vYXNzZXJ0aW9uXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi8uLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgaW5zdGFudGlhdGVQcm9wZXJ0eUFzc2VydGlvbiB9IGZyb20gXCIuLi8uLi9wcm9jZXNzL2luc3RhbnRpYXRlXCI7XG5pbXBvcnQgeyBpc29sYXRlLCByZWNvbmNpbGUsIGluc3RhbnRpYXRlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9jb250ZXh0XCI7XG5pbXBvcnQgeyBzaWduYXR1cmVBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvZWxlbWVudFwiO1xuXG5jb25zdCB7IHVuYnJlYWthYmxlIH0gPSBicmVha1BvaW50VXRpbGl0aWVzLFxuICAgICAgeyBjdXQsIGFsbCwgZXZlcnkgfSA9IGNvbnRpbnVhdGlvblV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIFNpZ25hdHVyZUFzc2VydGlvbiBleHRlbmRzIEFzc2VydGlvbiB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgbGluaywgdGVybXMpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy5saW5rID0gbGluaztcbiAgICB0aGlzLnRlcm1zID0gdGVybXM7XG4gIH1cblxuICBnZXRUZXJtcygpIHtcbiAgICByZXR1cm4gdGhpcy50ZXJtcztcbiAgfVxuXG4gIGdldExpbmsoKSB7XG4gICAgcmV0dXJuIHRoaXMubGluaztcbiAgfVxuXG4gIGdldFNpZ25hdHVyZUFzc2VydGlvbk5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIHNpZ25hdHVyZUFzc2VydGlvbk5vZGUgPSBub2RlOyAgLy8vXG5cbiAgICByZXR1cm4gc2lnbmF0dXJlQXNzZXJ0aW9uTm9kZTtcbiAgfVxuXG4gIGFwcGx5ID0gdW5icmVha2FibGUoZnVuY3Rpb24gKHN0ZXAsIGZhY3RPclN1YnByb29mcywgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGZvcndhcmQgPSBjdXQoZm9yd2FyZCwgYmFjayk7IC8vL1xuXG4gICAgY29uc3Qgc2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgQXBwbHlpbmcgdGhlICcke3NpZ25hdHVyZUFzc2VydGlvblN0cmluZ30nIHNpZ25hdHVyZSBhc3NlcnRpb24uLi5gKTtcblxuICAgIHJldHVybiBpc29sYXRlKChzdGVwLCBmYWN0T3JTdWJwcm9vZnMsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spID0+IHtcbiAgICAgIHJldHVybiByZWNvbmNpbGUoKGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgYXhpb20gPSBjb250ZXh0LmZpbmRBeGlvbUJ5TGluayh0aGlzLmxpbmspLFxuICAgICAgICAgICAgICBzaWduYXR1cmVBc3NlcnRpb24gPSB0aGlzOyAgLy8vXG5cbiAgICAgICAgcmV0dXJuIGF4aW9tLnVuaWZ5U2lnbmF0dXJlQXNzZXJ0aW9uKHNpZ25hdHVyZUFzc2VydGlvbiwgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgICBheGlvbS5hcHBseShzdGVwLCBmYWN0T3JTdWJwcm9vZnMsIGNvbnRleHQsIChjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gZm9yd2FyZChiYWNrKTtcbiAgICAgICAgICB9LCBiYWNrKTtcbiAgICAgICAgfSwgYmFjayk7XG4gICAgICB9LCBjb250ZXh0KTtcbiAgICB9LCBzdGVwLCBmYWN0T3JTdWJwcm9vZnMsIGNvbnRleHQsIChzdGVwLCBmYWN0T3JTdWJwcm9vZnMsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQuZGVidWcoYGFwcGxpZWQgdGhlICcke3NpZ25hdHVyZUFzc2VydGlvblN0cmluZ30nIHNpZ25hdHVyZSBhc3NlcnRpb24uYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9KTtcblxuICB2YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGxldCBhc3NlcnRpb247XG5cbiAgICBjb25zdCBzaWduYXR1cmVBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtzaWduYXR1cmVBc3NlcnRpb25TdHJpbmd9JyBzaWduYXR1cmUgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgICBhc3NlcnRpb24gPSB0aGlzLmZpbmRBc3NlcnRpb24oY29udGV4dCk7XG5cbiAgICBpZiAoYXNzZXJ0aW9uICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBzaWduYXR1cmVBc3NlcnRpb24gPSBhc3NlcnRpb247IC8vL1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7c2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nfScgc2lnbmF0dXJlIGFzc2VydGlvbiBpcyBhbHJlYWR5IHByZXNlbnQuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHNpZ25hdHVyZUFzc2VydGlvbiwgY29udGV4dCwgYmFjayk7XG4gICAgfVxuXG4gICAgYXNzZXJ0aW9uID0gdGhpczsgLy8vXG5cbiAgICBjb25zdCB2YWxpZGF0ZUxpbmsgPSB0aGlzLnZhbGlkYXRlTGluay5iaW5kKHRoaXMpLFxuICAgICAgICAgIHZhbGlkYXRlVGVybXMgPSB0aGlzLnZhbGlkYXRlVGVybXMuYmluZCh0aGlzKTtcblxuICAgIHJldHVybiBhbGwoW1xuICAgICAgdmFsaWRhdGVMaW5rLFxuICAgICAgdmFsaWRhdGVUZXJtc1xuICAgIF0sIHN0YXRlLCBjb250ZXh0LCAoc3RhdGUsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQuYWRkQXNzZXJ0aW9uKGFzc2VydGlvbik7XG5cbiAgICAgIGNvbnN0IHNpZ25hdHVyZUFzc2VydGlvbiA9IGFzc2VydGlvbjsgLy8vXG5cbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7c2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nfScgc2lnbmF0dXJlIGFzc2VydGlvbi5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoc2lnbmF0dXJlQXNzZXJ0aW9uLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHZhbGlkYXRlVGVybSh0ZXJtLCB0ZXJtcywgc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCB0ZXJtU3RyaW5nID0gdGVybS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBzaWduYXR1cmVBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtzaWduYXR1cmVBc3NlcnRpb25TdHJpbmd9JyBzaWduYXR1cmUgYXNzZXJ0aW9uJ3MgJyR7dGVybVN0cmluZ30nIHRlcm0uLi5gKTtcblxuICAgIHJldHVybiB0ZXJtLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAodGVybSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgdGVybXMucHVzaCh0ZXJtKTtcblxuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtzaWduYXR1cmVBc3NlcnRpb25TdHJpbmd9JyBzaWduYXR1cmUgYXNzZXJ0aW9uJ3MgJyR7dGVybVN0cmluZ30nIHRlcm0uYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHRlcm1zLCBzdGF0ZSwgY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB2YWxpZGF0ZUxpbmsoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBzaWduYXR1cmVBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtzaWduYXR1cmVBc3NlcnRpb25TdHJpbmd9JyBzaWduYXR1cmUgYXNzZXJ0aW9uJ3MgbGluay4uLmApO1xuXG4gICAgcmV0dXJuIHRoaXMubGluay52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKGxpbmssIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIHRoaXMubGluayA9IGxpbms7XG5cbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7c2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nfScgc2lnbmF0dXJlIGFzc2VydGlvbidzIGxpbmsuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHN0YXRlLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHZhbGlkYXRlVGVybXMoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBzaWduYXR1cmVBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtzaWduYXR1cmVBc3NlcnRpb25TdHJpbmd9JyBzaWduYXR1cmUgYXNzZXJ0aW9uJ3MgdGVybXMuLi5gKTtcblxuICAgIGNvbnN0IHRlcm1zID0gW107XG5cbiAgICByZXR1cm4gZXZlcnkodGhpcy50ZXJtcywgKHRlcm0sIHRlcm1zLCBzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMudmFsaWRhdGVUZXJtKHRlcm0sIHRlcm1zLCBzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjayk7XG4gICAgfSwgdGVybXMsIHN0YXRlLCBjb250ZXh0LCAodGVybXMsIHN0YXRlLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICB0aGlzLnRlcm1zID0gdGVybXM7XG5cbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7c2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nfScgc2lnbmF0dXJlIGFzc2VydGlvbidzIHRlcm1zLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChzdGF0ZSwgY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB1bmlmeUNsYWltKGNsYWltLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgY2xhaW1TdHJpbmcgPSBjbGFpbS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBzaWduYXR1cmVBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke2NsYWltU3RyaW5nfScgY2xhaW0gd2l0aCB0aGUgJyR7c2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nfScgc2lnbmF0dXJlIGFzc2VydGlvbi4uLmApO1xuXG4gICAgcmV0dXJuIHJlY29uY2lsZSgoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3QgYXhpb20gPSBjb250ZXh0LmZpbmRBeGlvbUJ5TGluayh0aGlzLmxpbmspO1xuXG4gICAgICByZXR1cm4gYXhpb20udW5pZnlUZXJtcyh0aGlzLnRlcm1zLCBjb250ZXh0LCAodGVybXNVbmlmeSkgPT4ge1xuICAgICAgICBpZiAoIXRlcm1zVW5pZnkpIHtcbiAgICAgICAgICBjb25zdCBjbGFpbVVuaWZpZXMgPSBmYWxzZTtcblxuICAgICAgICAgIHJldHVybiBjb250aW51YXRpb24oY2xhaW1VbmlmaWVzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBheGlvbS51bmlmeUNsYWltKGNsYWltLCBjb250ZXh0LCAoY2xhaW1VbmlmaWVzKSA9PiB7XG4gICAgICAgICAgaWYgKGNsYWltVW5pZmllcykge1xuICAgICAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7Y2xhaW1TdHJpbmd9JyBjbGFpbSB3aXRoIHRoZSAnJHtzaWduYXR1cmVBc3NlcnRpb25TdHJpbmd9JyBzaWduYXR1cmUgYXNzZXJ0aW9uLmApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChjbGFpbVVuaWZpZXMpIHtcbiAgICAgICAgICAgIGNvbnRleHQuY29tbWl0KCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihjbGFpbVVuaWZpZXMpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0sIGNvbnRleHQpO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIGxldCBqc29uO1xuXG4gICAgY29uc3QgbmFtZSA9IHRoaXMuZ2V0TmFtZSgpLFxuICAgICAgICAgIHN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7XG5cbiAgICBqc29uID0ge1xuICAgICAgbmFtZSxcbiAgICAgIHN0cmluZ1xuICAgIH07XG5cbiAgICByZXR1cm4ganNvbjtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJTaWduYXR1cmVBc3NlcnRpb25cIjtcblxuICBzdGF0aWMgZnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICAgIGxldCBzaWduYXR1cmVBc3NlcnRpb24gPSBudWxsO1xuXG4gICAgY29uc3QgeyBuYW1lIH0gPSBqc29uO1xuXG4gICAgaWYgKHRoaXMubmFtZSA9PT0gbmFtZSkge1xuICAgICAgaW5zdGFudGlhdGUoKGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgICAgIHNpZ25hdHVyZUFzc2VydGlvbk5vZGUgPSBpbnN0YW50aWF0ZVByb3BlcnR5QXNzZXJ0aW9uKHN0cmluZywgY29udGV4dCksXG4gICAgICAgICAgICAgIG5vZGUgPSBzaWduYXR1cmVBc3NlcnRpb25Ob2RlLCAgLy8vXG4gICAgICAgICAgICAgIGJyZWFrUG9pbnQgPSBudWxsLFxuICAgICAgICAgICAgICBsaW5rID0gbGlua0Zyb21TaWduYXR1cmVBc3NlcnRpb25Ob2RlKHNpZ25hdHVyZUFzc2VydGlvbk5vZGUsIGNvbnRleHQpLFxuICAgICAgICAgICAgICB0ZXJtcyA9IHRlcm1zRnJvbVNpZ25hdHVyZUFzc2VydGlvbk5vZGUoc2lnbmF0dXJlQXNzZXJ0aW9uTm9kZSwgY29udGV4dCk7XG5cbiAgICAgICAgY29udGV4dCA9IG51bGw7XG5cbiAgICAgICAgc2lnbmF0dXJlQXNzZXJ0aW9uID0gbmV3IFNpZ25hdHVyZUFzc2VydGlvbihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIGxpbmssIHRlcm1zKTtcbiAgICAgIH0sIGNvbnRleHQpO1xuICAgIH1cblxuICAgIHJldHVybiBzaWduYXR1cmVBc3NlcnRpb247XG4gIH1cblxuICBzdGF0aWMgZnJvbVN0ZXAoc3RlcCwgY29udGV4dCkge1xuICAgIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzdGVwLmdldFN0YXRlbWVudE5vZGUoKSxcbiAgICAgICAgICBzaWduYXR1cmVBc3NlcnRpb24gPSBzaWduYXR1cmVBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBzaWduYXR1cmVBc3NlcnRpb247XG4gIH1cblxuICBzdGF0aWMgZnJvbVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50LmdldE5vZGUoKSxcbiAgICAgICAgICBzaWduYXR1cmVBc3NlcnRpb24gPSBzaWduYXR1cmVBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBzaWduYXR1cmVBc3NlcnRpb247XG4gIH1cbn0pO1xuXG5mdW5jdGlvbiBsaW5rRnJvbVNpZ25hdHVyZUFzc2VydGlvbk5vZGUoc2lnbmF0dXJlQXNzZXJ0aW9uTm9kZSwgY29udGV4dCkge1xuICBjb25zdCBsaW5rTm9kZSA9IHNpZ25hdHVyZUFzc2VydGlvbk5vZGUuZ2V0TGlua05vZGUoKSxcbiAgICAgICAgbGluayA9IGNvbnRleHQuZmluZExpbmtCeUxpbmtOb2RlKGxpbmtOb2RlKTtcblxuICByZXR1cm4gbGluaztcbn1cblxuZnVuY3Rpb24gdGVybXNGcm9tU2lnbmF0dXJlQXNzZXJ0aW9uTm9kZShzaWduYXR1cmVBc3NlcnRpb25Ob2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHRlcm1Ob2RlcyA9IHNpZ25hdHVyZUFzc2VydGlvbk5vZGUuZ2V0VGVybU5vZGVzKCksXG4gICAgICAgIHRlcm1zID0gdGVybU5vZGVzLm1hcCgodGVybU5vZGUpID0+IHtcbiAgICAgICAgICBjb25zdCB0ZXJtID0gY29udGV4dC5maW5kVGVybUJ5VGVybU5vZGUodGVybU5vZGUpO1xuXG4gICAgICAgICAgcmV0dXJuIHRlcm07XG4gICAgICAgIH0pO1xuXG4gIHJldHVybiB0ZXJtcztcbn1cbiJdLCJuYW1lcyI6WyJ1bmJyZWFrYWJsZSIsImJyZWFrUG9pbnRVdGlsaXRpZXMiLCJjdXQiLCJhbGwiLCJldmVyeSIsImNvbnRpbnVhdGlvblV0aWxpdGllcyIsImRlZmluZSIsIlNpZ25hdHVyZUFzc2VydGlvbiIsIkFzc2VydGlvbiIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsImxpbmsiLCJ0ZXJtcyIsImdldFRlcm1zIiwiZ2V0TGluayIsImdldFNpZ25hdHVyZUFzc2VydGlvbk5vZGUiLCJnZXROb2RlIiwic2lnbmF0dXJlQXNzZXJ0aW9uTm9kZSIsImFwcGx5Iiwic3RlcCIsImZhY3RPclN1YnByb29mcyIsImZvcndhcmQiLCJiYWNrIiwic2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJpc29sYXRlIiwicmVjb25jaWxlIiwiYXhpb20iLCJmaW5kQXhpb21CeUxpbmsiLCJzaWduYXR1cmVBc3NlcnRpb24iLCJ1bmlmeVNpZ25hdHVyZUFzc2VydGlvbiIsImRlYnVnIiwidmFsaWRhdGUiLCJzdGF0ZSIsImFzc2VydGlvbiIsImZpbmRBc3NlcnRpb24iLCJ2YWxpZGF0ZUxpbmsiLCJiaW5kIiwidmFsaWRhdGVUZXJtcyIsImFkZEFzc2VydGlvbiIsInZhbGlkYXRlVGVybSIsInRlcm0iLCJ0ZXJtU3RyaW5nIiwicHVzaCIsInVuaWZ5Q2xhaW0iLCJjbGFpbSIsImNsYWltU3RyaW5nIiwidW5pZnlUZXJtcyIsInRlcm1zVW5pZnkiLCJjbGFpbVVuaWZpZXMiLCJjb250aW51YXRpb24iLCJjb21taXQiLCJ0b0pTT04iLCJqc29uIiwibmFtZSIsImdldE5hbWUiLCJmcm9tSlNPTiIsImluc3RhbnRpYXRlIiwiaW5zdGFudGlhdGVQcm9wZXJ0eUFzc2VydGlvbiIsImxpbmtGcm9tU2lnbmF0dXJlQXNzZXJ0aW9uTm9kZSIsInRlcm1zRnJvbVNpZ25hdHVyZUFzc2VydGlvbk5vZGUiLCJmcm9tU3RlcCIsInN0YXRlbWVudE5vZGUiLCJnZXRTdGF0ZW1lbnROb2RlIiwic2lnbmF0dXJlQXNzZXJ0aW9uRnJvbVN0YXRlbWVudE5vZGUiLCJmcm9tU3RhdGVtZW50Iiwic3RhdGVtZW50IiwibGlua05vZGUiLCJnZXRMaW5rTm9kZSIsImZpbmRMaW5rQnlMaW5rTm9kZSIsInRlcm1Ob2RlcyIsImdldFRlcm1Ob2RlcyIsIm1hcCIsInRlcm1Ob2RlIiwiZmluZFRlcm1CeVRlcm1Ob2RlIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFjQTs7O2VBQUE7OztnQ0FaMkQ7a0VBRXJDOzBCQUVDOzZCQUNzQjt5QkFDRzt5QkFDSTs7Ozs7O0FBRXBELE1BQU0sRUFBRUEsV0FBVyxFQUFFLEdBQUdD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
|
|
176
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2Fzc2VydGlvbi9zaWduYXR1cmUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGJyZWFrUG9pbnRVdGlsaXRpZXMsIGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IEFzc2VydGlvbiBmcm9tIFwiLi4vYXNzZXJ0aW9uXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi8uLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgaW5zdGFudGlhdGVQcm9wZXJ0eUFzc2VydGlvbiB9IGZyb20gXCIuLi8uLi9wcm9jZXNzL2luc3RhbnRpYXRlXCI7XG5pbXBvcnQgeyBpc29sYXRlLCByZWNvbmNpbGUsIGluc3RhbnRpYXRlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9jb250ZXh0XCI7XG5pbXBvcnQgeyBzaWduYXR1cmVBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvZWxlbWVudFwiO1xuXG5jb25zdCB7IHVuYnJlYWthYmxlIH0gPSBicmVha1BvaW50VXRpbGl0aWVzLFxuICAgICAgeyBjdXQsIGFsbCwgZXZlcnkgfSA9IGNvbnRpbnVhdGlvblV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIFNpZ25hdHVyZUFzc2VydGlvbiBleHRlbmRzIEFzc2VydGlvbiB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgbGluaywgdGVybXMpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy5saW5rID0gbGluaztcbiAgICB0aGlzLnRlcm1zID0gdGVybXM7XG4gIH1cblxuICBnZXRUZXJtcygpIHtcbiAgICByZXR1cm4gdGhpcy50ZXJtcztcbiAgfVxuXG4gIGdldExpbmsoKSB7XG4gICAgcmV0dXJuIHRoaXMubGluaztcbiAgfVxuXG4gIGdldFNpZ25hdHVyZUFzc2VydGlvbk5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIHNpZ25hdHVyZUFzc2VydGlvbk5vZGUgPSBub2RlOyAgLy8vXG5cbiAgICByZXR1cm4gc2lnbmF0dXJlQXNzZXJ0aW9uTm9kZTtcbiAgfVxuXG4gIGFwcGx5ID0gdW5icmVha2FibGUoZnVuY3Rpb24gKHN0ZXAsIGZhY3RPclN1YnByb29mcywgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGZvcndhcmQgPSBjdXQoZm9yd2FyZCwgYmFjayk7IC8vL1xuXG4gICAgY29uc3Qgc2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgQXBwbHlpbmcgdGhlICcke3NpZ25hdHVyZUFzc2VydGlvblN0cmluZ30nIHNpZ25hdHVyZSBhc3NlcnRpb24uLi5gKTtcblxuICAgIHJldHVybiBpc29sYXRlKChzdGVwLCBmYWN0T3JTdWJwcm9vZnMsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spID0+IHtcbiAgICAgIHJldHVybiByZWNvbmNpbGUoKGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgYXhpb20gPSBjb250ZXh0LmZpbmRBeGlvbUJ5TGluayh0aGlzLmxpbmspLFxuICAgICAgICAgICAgICBzaWduYXR1cmVBc3NlcnRpb24gPSB0aGlzOyAgLy8vXG5cbiAgICAgICAgcmV0dXJuIGF4aW9tLnVuaWZ5U2lnbmF0dXJlQXNzZXJ0aW9uKHNpZ25hdHVyZUFzc2VydGlvbiwgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgICBheGlvbS5hcHBseShzdGVwLCBmYWN0T3JTdWJwcm9vZnMsIGNvbnRleHQsIChjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gZm9yd2FyZChiYWNrKTtcbiAgICAgICAgICB9LCBiYWNrKTtcbiAgICAgICAgfSwgYmFjayk7XG4gICAgICB9LCBjb250ZXh0KTtcbiAgICB9LCBzdGVwLCBmYWN0T3JTdWJwcm9vZnMsIGNvbnRleHQsIChzdGVwLCBmYWN0T3JTdWJwcm9vZnMsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQuZGVidWcoYGFwcGxpZWQgdGhlICcke3NpZ25hdHVyZUFzc2VydGlvblN0cmluZ30nIHNpZ25hdHVyZSBhc3NlcnRpb24uYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9KTtcblxuICB2YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGxldCBhc3NlcnRpb247XG5cbiAgICBjb25zdCBzaWduYXR1cmVBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtzaWduYXR1cmVBc3NlcnRpb25TdHJpbmd9JyBzaWduYXR1cmUgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgICBhc3NlcnRpb24gPSB0aGlzLmZpbmRBc3NlcnRpb24oY29udGV4dCk7XG5cbiAgICBpZiAoYXNzZXJ0aW9uICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBzaWduYXR1cmVBc3NlcnRpb24gPSBhc3NlcnRpb247IC8vL1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7c2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nfScgc2lnbmF0dXJlIGFzc2VydGlvbiBpcyBhbHJlYWR5IHByZXNlbnQuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHNpZ25hdHVyZUFzc2VydGlvbiwgY29udGV4dCwgYmFjayk7XG4gICAgfVxuXG4gICAgYXNzZXJ0aW9uID0gdGhpczsgLy8vXG5cbiAgICBjb25zdCB2YWxpZGF0ZUxpbmsgPSB0aGlzLnZhbGlkYXRlTGluay5iaW5kKHRoaXMpLFxuICAgICAgICAgIHZhbGlkYXRlVGVybXMgPSB0aGlzLnZhbGlkYXRlVGVybXMuYmluZCh0aGlzKTtcblxuICAgIHJldHVybiBhbGwoW1xuICAgICAgdmFsaWRhdGVMaW5rLFxuICAgICAgdmFsaWRhdGVUZXJtc1xuICAgIF0sIHN0YXRlLCBjb250ZXh0LCAoc3RhdGUsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQuYWRkQXNzZXJ0aW9uKGFzc2VydGlvbik7XG5cbiAgICAgIGNvbnN0IHNpZ25hdHVyZUFzc2VydGlvbiA9IGFzc2VydGlvbjsgLy8vXG5cbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7c2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nfScgc2lnbmF0dXJlIGFzc2VydGlvbi5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoc2lnbmF0dXJlQXNzZXJ0aW9uLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHZhbGlkYXRlVGVybSh0ZXJtLCB0ZXJtcywgc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCB0ZXJtU3RyaW5nID0gdGVybS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBzaWduYXR1cmVBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtzaWduYXR1cmVBc3NlcnRpb25TdHJpbmd9JyBzaWduYXR1cmUgYXNzZXJ0aW9uJ3MgJyR7dGVybVN0cmluZ30nIHRlcm0uLi5gKTtcblxuICAgIHJldHVybiB0ZXJtLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAodGVybSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgdGVybXMucHVzaCh0ZXJtKTtcblxuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtzaWduYXR1cmVBc3NlcnRpb25TdHJpbmd9JyBzaWduYXR1cmUgYXNzZXJ0aW9uJ3MgJyR7dGVybVN0cmluZ30nIHRlcm0uYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHRlcm1zLCBzdGF0ZSwgY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB2YWxpZGF0ZUxpbmsoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBzaWduYXR1cmVBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtzaWduYXR1cmVBc3NlcnRpb25TdHJpbmd9JyBzaWduYXR1cmUgYXNzZXJ0aW9uJ3MgbGluay4uLmApO1xuXG4gICAgcmV0dXJuIHRoaXMubGluay52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKGxpbmssIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIHRoaXMubGluayA9IGxpbms7XG5cbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7c2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nfScgc2lnbmF0dXJlIGFzc2VydGlvbidzIGxpbmsuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHN0YXRlLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHZhbGlkYXRlVGVybXMoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBzaWduYXR1cmVBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtzaWduYXR1cmVBc3NlcnRpb25TdHJpbmd9JyBzaWduYXR1cmUgYXNzZXJ0aW9uJ3MgdGVybXMuLi5gKTtcblxuICAgIGNvbnN0IHRlcm1zID0gW107XG5cbiAgICByZXR1cm4gZXZlcnkodGhpcy50ZXJtcywgKHRlcm0sIHRlcm1zLCBzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMudmFsaWRhdGVUZXJtKHRlcm0sIHRlcm1zLCBzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjayk7XG4gICAgfSwgdGVybXMsIHN0YXRlLCBjb250ZXh0LCAodGVybXMsIHN0YXRlLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICB0aGlzLnRlcm1zID0gdGVybXM7XG5cbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7c2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nfScgc2lnbmF0dXJlIGFzc2VydGlvbidzIHRlcm1zLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChzdGF0ZSwgY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB1bmlmeUNsYWltKGNsYWltLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgY2xhaW1TdHJpbmcgPSBjbGFpbS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBzaWduYXR1cmVBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke2NsYWltU3RyaW5nfScgY2xhaW0gd2l0aCB0aGUgJyR7c2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nfScgc2lnbmF0dXJlIGFzc2VydGlvbi4uLmApO1xuXG4gICAgcmV0dXJuIGlzb2xhdGUoKGNsYWltLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICByZXR1cm4gcmVjb25jaWxlKChjb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IGF4aW9tID0gY29udGV4dC5maW5kQXhpb21CeUxpbmsodGhpcy5saW5rKTtcblxuICAgICAgICByZXR1cm4gYXhpb20udW5pZnlUZXJtcyh0aGlzLnRlcm1zLCBjb250ZXh0LCAoY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICAgIHJldHVybiBheGlvbS51bmlmeUNsYWltKGNsYWltLCBjb250ZXh0LCAoY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICAgICAgY29udGV4dC5jb21taXQoKTtcblxuICAgICAgICAgICAgcmV0dXJuIGZvcndhcmQoYmFjayk7XG4gICAgICAgICAgfSwgYmFjayk7XG4gICAgICAgIH0sIGJhY2spO1xuICAgICAgfSwgY29udGV4dCk7XG4gICAgfSwgY2xhaW0sIGNvbnRleHQsIChjbGFpbSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7Y2xhaW1TdHJpbmd9JyBjbGFpbSB3aXRoIHRoZSAnJHtzaWduYXR1cmVBc3NlcnRpb25TdHJpbmd9JyBzaWduYXR1cmUgYXNzZXJ0aW9uLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICB9LCAoZXhjZXB0aW9uKSA9PiB7XG4gICAgICBpZiAoZXhjZXB0aW9uKSB7XG4gICAgICAgIHJldHVybiBiYWNrKGV4Y2VwdGlvbik7XG4gICAgICB9XG5cbiAgICAgIGNvbnRleHQudHJhY2UoYFVuYWJsZSB0byB1bmlmeSB0aGUgJyR7Y2xhaW1TdHJpbmd9JyBjbGFpbSB3aXRoIHRoZSAnJHtzaWduYXR1cmVBc3NlcnRpb25TdHJpbmd9JyBzaWduYXR1cmUgYXNzZXJ0aW9uLmApO1xuXG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH0pO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIGxldCBqc29uO1xuXG4gICAgY29uc3QgbmFtZSA9IHRoaXMuZ2V0TmFtZSgpLFxuICAgICAgICAgIHN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7XG5cbiAgICBqc29uID0ge1xuICAgICAgbmFtZSxcbiAgICAgIHN0cmluZ1xuICAgIH07XG5cbiAgICByZXR1cm4ganNvbjtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJTaWduYXR1cmVBc3NlcnRpb25cIjtcblxuICBzdGF0aWMgZnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICAgIGxldCBzaWduYXR1cmVBc3NlcnRpb24gPSBudWxsO1xuXG4gICAgY29uc3QgeyBuYW1lIH0gPSBqc29uO1xuXG4gICAgaWYgKHRoaXMubmFtZSA9PT0gbmFtZSkge1xuICAgICAgaW5zdGFudGlhdGUoKGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgICAgIHNpZ25hdHVyZUFzc2VydGlvbk5vZGUgPSBpbnN0YW50aWF0ZVByb3BlcnR5QXNzZXJ0aW9uKHN0cmluZywgY29udGV4dCksXG4gICAgICAgICAgICAgIG5vZGUgPSBzaWduYXR1cmVBc3NlcnRpb25Ob2RlLCAgLy8vXG4gICAgICAgICAgICAgIGJyZWFrUG9pbnQgPSBudWxsLFxuICAgICAgICAgICAgICBsaW5rID0gbGlua0Zyb21TaWduYXR1cmVBc3NlcnRpb25Ob2RlKHNpZ25hdHVyZUFzc2VydGlvbk5vZGUsIGNvbnRleHQpLFxuICAgICAgICAgICAgICB0ZXJtcyA9IHRlcm1zRnJvbVNpZ25hdHVyZUFzc2VydGlvbk5vZGUoc2lnbmF0dXJlQXNzZXJ0aW9uTm9kZSwgY29udGV4dCk7XG5cbiAgICAgICAgY29udGV4dCA9IG51bGw7XG5cbiAgICAgICAgc2lnbmF0dXJlQXNzZXJ0aW9uID0gbmV3IFNpZ25hdHVyZUFzc2VydGlvbihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIGxpbmssIHRlcm1zKTtcbiAgICAgIH0sIGNvbnRleHQpO1xuICAgIH1cblxuICAgIHJldHVybiBzaWduYXR1cmVBc3NlcnRpb247XG4gIH1cblxuICBzdGF0aWMgZnJvbVN0ZXAoc3RlcCwgY29udGV4dCkge1xuICAgIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzdGVwLmdldFN0YXRlbWVudE5vZGUoKSxcbiAgICAgICAgICBzaWduYXR1cmVBc3NlcnRpb24gPSBzaWduYXR1cmVBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBzaWduYXR1cmVBc3NlcnRpb247XG4gIH1cblxuICBzdGF0aWMgZnJvbVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50LmdldE5vZGUoKSxcbiAgICAgICAgICBzaWduYXR1cmVBc3NlcnRpb24gPSBzaWduYXR1cmVBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBzaWduYXR1cmVBc3NlcnRpb247XG4gIH1cbn0pO1xuXG5mdW5jdGlvbiBsaW5rRnJvbVNpZ25hdHVyZUFzc2VydGlvbk5vZGUoc2lnbmF0dXJlQXNzZXJ0aW9uTm9kZSwgY29udGV4dCkge1xuICBjb25zdCBsaW5rTm9kZSA9IHNpZ25hdHVyZUFzc2VydGlvbk5vZGUuZ2V0TGlua05vZGUoKSxcbiAgICAgICAgbGluayA9IGNvbnRleHQuZmluZExpbmtCeUxpbmtOb2RlKGxpbmtOb2RlKTtcblxuICByZXR1cm4gbGluaztcbn1cblxuZnVuY3Rpb24gdGVybXNGcm9tU2lnbmF0dXJlQXNzZXJ0aW9uTm9kZShzaWduYXR1cmVBc3NlcnRpb25Ob2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHRlcm1Ob2RlcyA9IHNpZ25hdHVyZUFzc2VydGlvbk5vZGUuZ2V0VGVybU5vZGVzKCksXG4gICAgICAgIHRlcm1zID0gdGVybU5vZGVzLm1hcCgodGVybU5vZGUpID0+IHtcbiAgICAgICAgICBjb25zdCB0ZXJtID0gY29udGV4dC5maW5kVGVybUJ5VGVybU5vZGUodGVybU5vZGUpO1xuXG4gICAgICAgICAgcmV0dXJuIHRlcm07XG4gICAgICAgIH0pO1xuXG4gIHJldHVybiB0ZXJtcztcbn1cbiJdLCJuYW1lcyI6WyJ1bmJyZWFrYWJsZSIsImJyZWFrUG9pbnRVdGlsaXRpZXMiLCJjdXQiLCJhbGwiLCJldmVyeSIsImNvbnRpbnVhdGlvblV0aWxpdGllcyIsImRlZmluZSIsIlNpZ25hdHVyZUFzc2VydGlvbiIsIkFzc2VydGlvbiIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsImxpbmsiLCJ0ZXJtcyIsImdldFRlcm1zIiwiZ2V0TGluayIsImdldFNpZ25hdHVyZUFzc2VydGlvbk5vZGUiLCJnZXROb2RlIiwic2lnbmF0dXJlQXNzZXJ0aW9uTm9kZSIsImFwcGx5Iiwic3RlcCIsImZhY3RPclN1YnByb29mcyIsImZvcndhcmQiLCJiYWNrIiwic2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJpc29sYXRlIiwicmVjb25jaWxlIiwiYXhpb20iLCJmaW5kQXhpb21CeUxpbmsiLCJzaWduYXR1cmVBc3NlcnRpb24iLCJ1bmlmeVNpZ25hdHVyZUFzc2VydGlvbiIsImRlYnVnIiwidmFsaWRhdGUiLCJzdGF0ZSIsImFzc2VydGlvbiIsImZpbmRBc3NlcnRpb24iLCJ2YWxpZGF0ZUxpbmsiLCJiaW5kIiwidmFsaWRhdGVUZXJtcyIsImFkZEFzc2VydGlvbiIsInZhbGlkYXRlVGVybSIsInRlcm0iLCJ0ZXJtU3RyaW5nIiwicHVzaCIsInVuaWZ5Q2xhaW0iLCJjbGFpbSIsImNsYWltU3RyaW5nIiwidW5pZnlUZXJtcyIsImNvbW1pdCIsImV4Y2VwdGlvbiIsInRvSlNPTiIsImpzb24iLCJuYW1lIiwiZ2V0TmFtZSIsImZyb21KU09OIiwiaW5zdGFudGlhdGUiLCJpbnN0YW50aWF0ZVByb3BlcnR5QXNzZXJ0aW9uIiwibGlua0Zyb21TaWduYXR1cmVBc3NlcnRpb25Ob2RlIiwidGVybXNGcm9tU2lnbmF0dXJlQXNzZXJ0aW9uTm9kZSIsImZyb21TdGVwIiwic3RhdGVtZW50Tm9kZSIsImdldFN0YXRlbWVudE5vZGUiLCJzaWduYXR1cmVBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZSIsImZyb21TdGF0ZW1lbnQiLCJzdGF0ZW1lbnQiLCJsaW5rTm9kZSIsImdldExpbmtOb2RlIiwiZmluZExpbmtCeUxpbmtOb2RlIiwidGVybU5vZGVz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
|