occam-nominal 1.0.569 → 1.0.571
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/context.js +1 -1
- package/lib/element/assertion/type.js +7 -3
- package/lib/element/combinator.js +7 -3
- package/lib/element/constraint.js +7 -3
- package/lib/element/constructor.js +8 -4
- package/lib/element/generator.js +8 -4
- package/lib/element/hypothesis.js +7 -3
- package/lib/element/metavariable.js +25 -4
- package/lib/element/procedureCall.js +3 -9
- package/lib/element/property.js +8 -4
- package/lib/element/statement.js +10 -3
- package/lib/element/substitution.js +2 -7
- package/lib/element/term.js +2 -3
- package/lib/node/assertion/type.js +5 -1
- package/lib/node/metavariable.js +9 -1
- package/lib/utilities/json.js +1 -1
- package/package.json +5 -5
- package/src/context/mnemic.js +2 -2
- package/src/context.js +1 -1
- package/src/element/assertion/type.js +9 -2
- package/src/element/combinator.js +9 -1
- package/src/element/constraint.js +8 -1
- package/src/element/constructor.js +10 -2
- package/src/element/generator.js +10 -2
- package/src/element/hypothesis.js +8 -1
- package/src/element/metavariable.js +35 -4
- package/src/element/procedureCall.js +3 -14
- package/src/element/property.js +10 -2
- package/src/element/statement.js +12 -1
- package/src/element/substitution.js +1 -10
- package/src/element/term.js +3 -4
- package/src/node/assertion/type.js +7 -0
- package/src/node/metavariable.js +12 -0
- package/src/utilities/json.js +4 -4
package/lib/context/mnemic.js
CHANGED
|
@@ -381,6 +381,7 @@ class MnemicContext extends _context.default {
|
|
|
381
381
|
}
|
|
382
382
|
initialise(json) {
|
|
383
383
|
const context = this; ///
|
|
384
|
+
this.substitutions = (0, _json.substitutionsFromJSON)(json, context);
|
|
384
385
|
this.terms = (0, _json.termsFromJSON)(json, context);
|
|
385
386
|
this.statements = (0, _json.statementsFromJSON)(json, context);
|
|
386
387
|
this.metavariables = (0, _json.metavariablesFromJSON)(json, context);
|
|
@@ -389,7 +390,6 @@ class MnemicContext extends _context.default {
|
|
|
389
390
|
this.assumptions = (0, _json.assumptionsFromJSON)(json, context);
|
|
390
391
|
this.frames = (0, _json.framesFromJSON)(json, context);
|
|
391
392
|
this.assertions = (0, _json.assertionsFromJSON)(json, context);
|
|
392
|
-
this.substitutions = (0, _json.substitutionsFromJSON)(json, context);
|
|
393
393
|
}
|
|
394
394
|
commit() {
|
|
395
395
|
const context = this;
|
|
@@ -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+IHtcbiAgICAgICAgICAgIGNvbnN0IHN1YnN0aXR1dGlvbk5vZGVNYXRjaGVzID0gc3Vic3RpdHV0aW9uLm1hdGNoU3Vic3RpdHV0aW9uTm9kZShzdWJzdGl0dXRpb25Ob2RlKTtcblxuICAgICAgICAgICAgaWYgKHN1YnN0aXR1dGlvbk5vZGVNYXRjaGVzKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pIHx8IG51bGw7XG5cbiAgICByZXR1cm4gc3Vic3RpdHV0aW9uO1xuICB9XG5cbiAgaXNUZXJtUHJlc2VudEJ5VGVybU5vZGUodGVybU5vZGUpIHtcbiAgICBjb25zdCB0ZXJtID0gdGhpcy5maW5kVGVybUJ5VGVybU5vZGUodGVybU5vZGUpLFxuICAgICAgdGVybVByZXNlbnQgPSAodGVybSAhPT0gbnVsbCk7XG5cbiAgICByZXR1cm4gdGVybVByZXNlbnQ7XG4gIH1cblxuICBpc0xpbmtQcmVzZW50QnlMaW5rTm9kZShsaW5rTm9kZSkge1xuICAgIGNvbnN0IGxpbmsgPSB0aGlzLmZpbmRMaW5rQnlMaW5rTm9kZShsaW5rTm9kZSksXG4gICAgICAgICAgbGlua1ByZXNlbnQgPSAobGluayAhPT0gbnVsbCk7XG5cbiAgICByZXR1cm4gbGlua1ByZXNlbnQ7XG4gIH1cblxuICBpc0ZyYW1lUHJlc2VudEJ5RnJhbWVOb2RlKGZyYW1lTm9kZSkge1xuICAgIGNvbnN0IGZyYW1lID0gdGhpcy5maW5kRnJhbWVCeUZyYW1lTm9kZShmcmFtZU5vZGUpLFxuICAgICAgICAgIGZyYW1lUHJlc2VudCA9IChmcmFtZSAhPT0gbnVsbCk7XG5cbiAgICByZXR1cm4gZnJhbWVQcmVzZW50O1xuICB9XG5cbiAgaXNFcXVhbGl0eVByZXNlbnRCeUVxdWFsaXR5Tm9kZShlcXVhbGl0eU5vZGUpIHtcbiAgICBjb25zdCBlcXVhbGl0eSA9IHRoaXMuZmluZEVxdWFsaXR5QnlFcXVhbGl0eU5vZGUoZXF1YWxpdHlOb2RlKSxcbiAgICAgICAgICBlcXVhbGl0eVByZXNlbnQgPSAoZXF1YWxpdHkgIT09IG51bGwpO1xuXG4gICAgcmV0dXJuIGVxdWFsaXR5UHJlc2VudDtcbiAgfVxuXG4gIGlzQXNzZXJ0aW9uUHJlc2VudEJ5QXNzZXJ0aW9uTm9kZShhc3NlcnRpb25Ob2RlKSB7XG4gICAgY29uc3QgYXNzZXJ0aW9uID0gdGhpcy5maW5kQXNzZXJ0aW9uQnlBc3NlcnRpb25Ob2RlKGFzc2VydGlvbk5vZGUpLFxuICAgICAgICAgIGFzc2VydGlvblByZXNlbnQgPSAoYXNzZXJ0aW9uICE9PSBudWxsKTtcblxuICAgIHJldHVybiBhc3NlcnRpb25QcmVzZW50O1xuICB9XG5cbiAgaXNTdGF0ZW1lbnRQcmVzZW50QnlTdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnQgPSB0aGlzLmZpbmRTdGF0ZW1lbnRCeVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSksXG4gICAgICAgICAgc3RhdGVtZW50UHJlc2VudCA9IChzdGF0ZW1lbnQgIT09IG51bGwpO1xuXG4gICAgcmV0dXJuIHN0YXRlbWVudFByZXNlbnQ7XG4gIH1cblxuICBpc0Fzc3VtcHRpb25QcmVzZW50QnlBc3N1bXB0aW9uTm9kZShhc3N1bXB0aW9uTm9kZSkge1xuICAgIGNvbnN0IGFzc3VtcHRpb24gPSB0aGlzLmZpbmRBc3N1bXB0aW9uQnlBc3N1bXB0aW9uTm9kZShhc3N1bXB0aW9uTm9kZSksXG4gICAgICAgICAgYXNzdW1wdGlvblByZXNlbnQgPSAoYXNzdW1wdGlvbiAhPT0gbnVsbCk7XG5cbiAgICByZXR1cm4gYXNzdW1wdGlvblByZXNlbnQ7XG4gIH1cblxuICBpc01ldGF2YXJpYWJsZVByZXNlbnRCeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSkge1xuICAgIGNvbnN0IG1ldGF2YXJpYWJsZW4gPSB0aGlzLmZpbmRNZXRhdmFyaWFibGVCeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSksXG4gICAgICAgICAgbWV0YXZhcmlhYmxlblByZXNlbnQgPSAobWV0YXZhcmlhYmxlbiAhPT0gbnVsbCk7XG5cbiAgICByZXR1cm4gbWV0YXZhcmlhYmxlblByZXNlbnQ7XG4gIH1cblxuICBpbml0aWFsaXNlKGpzb24pIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpczsgLy8vXG5cbiAgICB0aGlzLnRlcm1zID0gdGVybXNGcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHRoaXMuc3RhdGVtZW50cyA9IHN0YXRlbWVudHNGcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHRoaXMubWV0YXZhcmlhYmxlcyA9IG1ldGF2YXJpYWJsZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHRoaXMuZXF1YWxpdGllcyA9IGVxdWFsaXRpZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHRoaXMubGlua3MgPSBsaW5rc0Zyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgdGhpcy5hc3N1bXB0aW9ucyA9IGFzc3VtcHRpb25zRnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICB0aGlzLmZyYW1lcyA9IGZyYW1lc0Zyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgdGhpcy5hc3NlcnRpb25zID0gYXNzZXJ0aW9uc0Zyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgdGhpcy5zdWJzdGl0dXRpb25zID0gc3Vic3RpdHV0aW9uc0Zyb21KU09OKGpzb24sIGNvbnRleHQpO1xuICB9XG5cbiAgY29tbWl0KCkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzO1xuXG4gICAgY29udGV4dC5kZWJ1ZyhgQ29tbWl0dGVkIHRoZSBtbmVtaWMgY29udGV4dC5gKTtcblxuICAgIHJldHVybiBjb250ZXh0O1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIGxldCBqc29uO1xuXG4gICAgbGV0IHRlcm1zID0gdGhpcy5nZXRUZXJtcygpLFxuICAgICAgICBsaW5rcyA9IHRoaXMuZ2V0TGlua3MoKSxcbiAgICAgICAgZnJhbWVzID0gdGhpcy5nZXRGcmFtZXMoKSxcbiAgICAgICAgZXF1YWxpdGllcyA9IHRoaXMuZ2V0RXF1YWxpdGllcygpLFxuICAgICAgICBhc3NlcnRpb25zID0gdGhpcy5nZXRBc3NlcnRpb25zKCksXG4gICAgICAgIHN0YXRlbWVudHMgPSB0aGlzLmdldFN0YXRlbWVudHMoKSxcbiAgICAgICAgYXNzdW1wdGlvbnMgPSB0aGlzLmdldEFzc3VtcHRpb25zKCksXG4gICAgICAgIG1ldGF2YXJpYWJsZXMgPSB0aGlzLmdldE1ldGF2YXJpYWJsZXMoKSxcbiAgICAgICAgc3Vic3RpdHV0aW9ucyA9IHRoaXMuZ2V0U3Vic3RpdHV0aW9ucygpO1xuXG4gICAgY29uc3QgdGVybXNKU09OID0gdGVybXNUb1Rlcm1zSlNPTih0ZXJtcyksXG4gICAgICAgICAgbGlua3NKU09OID0gbGlua3NUb0xpbmtzSlNPTihsaW5rcyksXG4gICAgICAgICAgZnJhbWVzSlNPTiA9IGZyYW1lc1RvRnJhbWVzSlNPTihmcmFtZXMpLFxuICAgICAgICAgIGVxdWFsaXRpZXNKU09OID0gZXF1YWxpdGllc1RvRXF1YWxpdGllc0pTT04oZXF1YWxpdGllcyksXG4gICAgICAgICAgYXNzZXJ0aW9uc0pTT04gPSBhc3NlcnRpb25zVG9Bc3NlcnRpb25zSlNPTihhc3NlcnRpb25zKSxcbiAgICAgICAgICBzdGF0ZW1lbnRzSlNPTiA9IHN0YXRlbWVudHNUb1N0YXRlbWVudHNKU09OKHN0YXRlbWVudHMpLFxuICAgICAgICAgIGFzc3VtcHRpb25zSlNPTiA9IGFzc3VtcHRpb25zVG9Bc3N1bXB0aW9uc0pTT04oYXNzdW1wdGlvbnMpLFxuICAgICAgICAgIG1ldGF2YXJpYWJsZXNKU09OID0gbWV0YXZhcmlhYmxlc1RvTWV0YXZhcmlhYmxlc0pTT04obWV0YXZhcmlhYmxlcyksXG4gICAgICAgICAgc3Vic3RpdHV0aW9uc0pTT04gPSBzdWJzdGl0dXRpb25zVG9TdWJzdGl0dXRpb25zSlNPTihzdWJzdGl0dXRpb25zKTtcblxuICAgIHRlcm1zID0gdGVybXNKU09OOyAvLy9cbiAgICBsaW5rcyA9IGxpbmtzSlNPTjsgLy8vXG4gICAgZnJhbWVzID0gZnJhbWVzSlNPTjsgLy8vXG4gICAgZXF1YWxpdGllcyA9IGVxdWFsaXRpZXNKU09OOyAvLy9cbiAgICBhc3NlcnRpb25zID0gYXNzZXJ0aW9uc0pTT047IC8vL1xuICAgIHN0YXRlbWVudHMgPSBzdGF0ZW1lbnRzSlNPTjsgLy8vXG4gICAgYXNzdW1wdGlvbnMgPSBhc3N1bXB0aW9uc0pTT047IC8vL1xuICAgIG1ldGF2YXJpYWJsZXMgPSBtZXRhdmFyaWFibGVzSlNPTjsgIC8vXG4gICAgc3Vic3RpdHV0aW9ucyA9IHN1YnN0aXR1dGlvbnNKU09OOyAvLy9cblxuICAgIGpzb24gPSB7XG4gICAgICB0ZXJtcyxcbiAgICAgIGxpbmtzLFxuICAgICAgZnJhbWVzLFxuICAgICAgZXF1YWxpdGllcyxcbiAgICAgIGFzc2VydGlvbnMsXG4gICAgICBzdGF0ZW1lbnRzLFxuICAgICAgYXNzdW1wdGlvbnMsXG4gICAgICBtZXRhdmFyaWFibGVzLFxuICAgICAgc3Vic3RpdHV0aW9uc1xuICAgIH07XG5cbiAgICByZXR1cm4ganNvbjtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gICAgY29uc3QgdGVybXMgPSBudWxsLFxuICAgICAgICAgIGxpbmtzID0gbnVsbCxcbiAgICAgICAgICBmcmFtZXMgPSBudWxsLFxuICAgICAgICAgIGVxdWFsaXRpZXMgPSBudWxsLFxuICAgICAgICAgIHN0YXRlbWVudHMgPSBudWxsLFxuICAgICAgICAgIGFzc2VydGlvbnMgPSBudWxsLFxuICAgICAgICAgIGFzc3VtcHRpb25zID0gbnVsbCxcbiAgICAgICAgICBtZXRhdmFyaWFibGVzID0gbnVsbCxcbiAgICAgICAgICBzdWJzdGl0dXRpb25zID0gbnVsbCxcbiAgICAgICAgICBtbmVtaWNDb250ZXh0ID0gbmV3IE1uZW1pY0NvbnRleHQoY29udGV4dCwgdGVybXMsIGxpbmtzLCBmcmFtZXMsIGVxdWFsaXRpZXMsIGFzc2VydGlvbnMsIHN0YXRlbWVudHMsIGFzc3VtcHRpb25zLCBtZXRhdmFyaWFibGVzLCBzdWJzdGl0dXRpb25zKTtcblxuICAgIG1uZW1pY0NvbnRleHQuaW5pdGlhbGlzZShqc29uKTtcblxuICAgIHJldHVybiBtbmVtaWNDb250ZXh0O1xuICB9XG5cbiAgc3RhdGljIGZyb21Ob3RoaW5nKGNvbnRleHQpIHtcbiAgICBjb25zdCB0ZXJtcyA9IFtdLFxuICAgICAgICAgIGxpbmtzID0gW10sXG4gICAgICAgICAgZnJhbWVzID0gW10sXG4gICAgICAgICAgZXF1YWxpdGllcyA9IFtdLFxuICAgICAgICAgIHN0YXRlbWVudHMgPSBbXSxcbiAgICAgICAgICBhc3NlcnRpb25zID0gW10sXG4gICAgICAgICAgYXNzdW1wdGlvbnMgPSBbXSxcbiAgICAgICAgICBtZXRhdmFyaWFibGVzID0gW10sXG4gICAgICAgICAgc3Vic3RpdHV0aW9ucyA9IFtdLFxuICAgICAgICAgIG1uZW1pY0NvbnRleHQgPSBuZXcgTW5lbWljQ29udGV4dChjb250ZXh0LCB0ZXJtcywgbGlua3MsIGZyYW1lcywgZXF1YWxpdGllcywgYXNzZXJ0aW9ucywgc3RhdGVtZW50cywgYXNzdW1wdGlvbnMsIG1ldGF2YXJpYWJsZXMsIHN1YnN0aXR1dGlvbnMpO1xuXG4gICAgcmV0dXJuIG1uZW1pY0NvbnRleHQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJNbmVtaWNDb250ZXh0IiwicHVzaCIsImV4dHJhY3QiLCJhcnJheVV0aWxpdGllcyIsIkNvbnRleHQiLCJjb250ZXh0IiwidGVybXMiLCJsaW5rcyIsImZyYW1lcyIsImVxdWFsaXRpZXMiLCJhc3NlcnRpb25zIiwic3RhdGVtZW50cyIsImFzc3VtcHRpb25zIiwibWV0YXZhcmlhYmxlcyIsInN1YnN0aXR1dGlvbnMiLCJnZXRUZXJtcyIsImdldENvbnRleHQiLCJnZXRMaW5rcyIsImdldEZyYW1lcyIsImdldEVxdWFsaXRpZXMiLCJnZXRTdGF0ZW1lbnRzIiwiZ2V0QXNzZXJ0aW9ucyIsImdldEFzc3VtcHRpb25zIiwiZ2V0TWV0YXZhcmlhYmxlcyIsImdldFN1YnN0aXR1dGlvbnMiLCJhZGRUZXJtIiwidGVybSIsInRlcm1TdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsInRlcm1BIiwidGVybUIiLCJ0ZXJtQUVxdWFsVG9UZXJtQiIsImlzRXF1YWxUbyIsImRlYnVnIiwiYWRkTGluayIsImxpbmsiLCJsaW5rU3RyaW5nIiwibGlua0EiLCJsaW5rQiIsImxpbmtBRXF1YWxUb0xpbmtCIiwiYWRkRnJhbWUiLCJmcmFtZSIsImZyYW1lU3RyaW5nIiwiZnJhbWVBIiwiZnJhbWVCIiwiZnJhbWVBRXF1YWxUb0ZyYW1lQiIsImFkZEVxdWFsaXR5IiwiZXF1YWxpdHkiLCJlcXVhbGl0eVN0cmluZyIsImVxdWFsaXR5QSIsImVxdWFsaXR5QiIsImVxdWFsaXR5QUVxdWFsVG9FcXVhbGl0eUIiLCJhZGRBc3NlcnRpb24iLCJhc3NlcnRpb24iLCJhc3NlcnRpb25TdHJpbmciLCJhc3NlcnRpb25BIiwiYXNzZXJ0aW9uQiIsImFzc2VydGlvbkFFcXVhbFRvQXNzZXJ0aW9uQiIsImFkZFN0YXRlbWVudCIsInN0YXRlbWVudCIsInN0YXRlbWVudFN0cmluZyIsInN0YXRlbWVudEEiLCJzdGF0ZW1lbnRCIiwic3RhdGVtZW50QUVxdWFsVG9TdGF0ZW1lbnRCIiwiYWRkQXNzdW1wdGlvbiIsImFzc3VtcHRpb24iLCJhc3N1bXB0aW9uU3RyaW5nIiwiYXNzdW1wdGlvbkEiLCJhc3N1bXB0aW9uQiIsImFzc3VtcHRpb25BRXF1YWxUb0Fzc3VtcHRpb25CIiwiYWRkTWV0YXZhcmlhYmxlIiwibWV0YXZhcmlhYmxlIiwibWV0YXZhcmlhYmxlU3RyaW5nIiwibWV0YXZhcmlhYmxlQSIsIm1ldGF2YXJpYWJsZUIiLCJtZXRhdmFyaWFibGVBRXF1YWxUb01ldGF2YXJpYWJsZUIiLCJhZGRTdWJzdGl0dXRpb24iLCJzdWJzdGl0dXRpb24iLCJzdWJzdGl0dXRpb25TdHJpbmciLCJzdWJzdGl0dXRpb25BIiwic3Vic3RpdHV0aW9uQiIsInN1YnN0aXR1dGlvbkFFcXVhbFRvU3Vic3RpdHV0aW9uQiIsImFkZEFzc2lnbm1lbnQiLCJhc3NpZ25tZW50IiwiYWRkSW5mZXJyZWRTdWJzdGl0dXRpb25zIiwiaW5mZXJyZWRTdWJzdGl0dXRpb25zIiwiYWRkVGVybXMiLCJmb3JFYWNoIiwiYWRkTGlua3MiLCJhZGRGcmFtZXMiLCJhZGRFcXVhbGl0aWVzIiwiYWRkQXNzZXJ0aW9ucyIsImFkZFN0YXRlbWVudHMiLCJhZGRBc3N1bXB0aW9ucyIsImFkZE1ldGF2YXJpYWJsZXMiLCJmaW5kVGVybUJ5VGVybU5vZGUiLCJ0ZXJtTm9kZSIsImZpbmQiLCJ0ZXJtTm9kZU1hdGNoZXMiLCJtYXRjaFRlcm1Ob2RlIiwiZmluZExpbmtCeUxpbmtOb2RlIiwibGlua05vZGUiLCJsaW5rTm9kZU1hdGNoZXMiLCJtYXRjaExpbmtOb2RlIiwiZmluZEZyYW1lQnlGcmFtZU5vZGUiLCJmcmFtZU5vZGUiLCJmcmFtZU5vZGVNYXRjaGVzIiwibWF0Y2hGcmFtZU5vZGUiLCJmaW5kRXF1YWxpdHlCeUVxdWFsaXR5Tm9kZSIsImVxdWFsaXR5Tm9kZSIsImVxdWFsaXR5Tm9kZU1hdGNoZXMiLCJtYXRjaEVxdWFsaXR5Tm9kZSIsImZpbmRBc3NlcnRpb25CeUFzc2VydGlvbk5vZGUiLCJhc3NlcnRpb25Ob2RlIiwiYXNzZXJ0aW9uTm9kZU1hdGNoZXMiLCJtYXRjaEFzc2VydGlvbk5vZGUiLCJmaW5kU3RhdGVtZW50QnlTdGF0ZW1lbnROb2RlIiwic3RhdGVtZW50Tm9kZSIsInN0YXRlbWVudE5vZGVNYXRjaGVzIiwibWF0Y2hTdGF0ZW1lbnROb2RlIiwiZmluZEFzc3VtcHRpb25CeUFzc3VtcHRpb25Ob2RlIiwiYXNzdW1wdGlvbk5vZGUiLCJhc3N1bXB0aW9uTm9kZU1hdGNoZXMiLCJtYXRjaEFzc3VtcHRpb25Ob2RlIiwiZmluZE1ldGF2YXJpYWJsZUJ5TWV0YXZhcmlhYmxlTm9kZSIsIm1ldGF2YXJpYWJsZU5vZGUiLCJtZXRhdmFyaWFibGVOb2RlTWF0Y2hlcyIsIm1hdGNoTWV0YXZhcmlhYmxlTm9kZSIsImZpbmRTdWJzdGl0dXRpb25CeVN1YnN0aXR1dGlvbk5vZGUiLCJzdWJzdGl0dXRpb25Ob2RlIiwic3Vic3RpdHV0aW9uTm9kZU1hdGNoZXMiLCJtYXRjaFN1YnN0aXR1dGlvbk5vZGUiLCJpc1Rlcm1QcmVzZW50QnlUZXJtTm9kZSIsInRlcm1QcmVzZW50IiwiaXNMaW5rUHJlc2VudEJ5TGlua05vZGUiLCJsaW5rUHJlc2VudCIsImlzRnJhbWVQcmVzZW50QnlGcmFtZU5vZGUiLCJmcmFtZVByZXNlbnQiLCJpc0VxdWFsaXR5UHJlc2VudEJ5RXF1YWxpdHlOb2RlIiwiZXF1YWxpdHlQcmVzZW50IiwiaXNBc3NlcnRpb25QcmVzZW50QnlBc3NlcnRpb25Ob2RlIiwiYXNzZXJ0aW9uUHJlc2VudCIsImlzU3RhdGVtZW50UHJlc2VudEJ5U3RhdGVtZW50Tm9kZSIsInN0YXRlbWVudFByZXNlbnQiLCJpc0Fzc3VtcHRpb25QcmVzZW50QnlBc3N1bXB0aW9uTm9kZSIsImFzc3VtcHRpb25QcmVzZW50IiwiaXNNZXRhdmFyaWFibGVQcmVzZW50QnlNZXRhdmFyaWFibGVOb2RlIiwibWV0YXZhcmlhYmxlbiIsIm1ldGF2YXJpYWJsZW5QcmVzZW50IiwiaW5pdGlhbGlzZSIsImpzb24iLCJ0ZXJtc0Zyb21KU09OIiwic3RhdGVtZW50c0Zyb21KU09OIiwibWV0YXZhcmlhYmxlc0Zyb21KU09OIiwiZXF1YWxpdGllc0Zyb21KU09OIiwibGlua3NGcm9tSlNPTiIsImFzc3VtcHRpb25zRnJvbUpTT04iLCJmcmFtZXNGcm9tSlNPTiIsImFzc2VydGlvbnNGcm9tSlNPTiIsInN1YnN0aXR1dGlvbnNGcm9tSlNPTiIsImNvbW1pdCIsInRvSlNPTiIsInRlcm1zSlNPTiIsInRlcm1zVG9UZXJtc0pTT04iLCJsaW5rc0pTT04iLCJsaW5rc1RvTGlua3NKU09OIiwiZnJhbWVzSlNPTiIsImZyYW1lc1RvRnJhbWVzSlNPTiIsImVxdWFsaXRpZXNKU09OIiwiZXF1YWxpdGllc1RvRXF1YWxpdGllc0pTT04iLCJhc3NlcnRpb25zSlNPTiIsImFzc2VydGlvbnNUb0Fzc2VydGlvbnNKU09OIiwic3RhdGVtZW50c0pTT04iLCJzdGF0ZW1lbnRzVG9TdGF0ZW1lbnRzSlNPTiIsImFzc3VtcHRpb25zSlNPTiIsImFzc3VtcHRpb25zVG9Bc3N1bXB0aW9uc0pTT04iLCJtZXRhdmFyaWFibGVzSlNPTiIsIm1ldGF2YXJpYWJsZXNUb01ldGF2YXJpYWJsZXNKU09OIiwic3Vic3RpdHV0aW9uc0pTT04iLCJzdWJzdGl0dXRpb25zVG9TdWJzdGl0dXRpb25zSlNPTiIsImZyb21KU09OIiwibW5lbWljQ29udGV4dCIsImZyb21Ob3RoaW5nIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkEyQkE7OztlQUFxQkE7OzsyQkF6QlU7Z0VBRVg7c0JBbUI2Qjs7Ozs7O0FBRWpELE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxPQUFPLEVBQUUsR0FBR0MseUJBQWM7QUFFekIsTUFBTUgsc0JBQXNCSSxnQkFBTztJQUNoRCxZQUFZQyxPQUFPLEVBQUVDLEtBQUssRUFBRUMsS0FBSyxFQUFFQyxNQUFNLEVBQUVDLFVBQVUsRUFBRUMsVUFBVSxFQUFFQyxVQUFVLEVBQUVDLFdBQVcsRUFBRUMsYUFBYSxFQUFFQyxhQUFhLENBQUU7UUFDeEgsS0FBSyxDQUFDVDtRQUVOLElBQUksQ0FBQ0MsS0FBSyxHQUFHQTtRQUNiLElBQUksQ0FBQ0MsS0FBSyxHQUFHQTtRQUNiLElBQUksQ0FBQ0MsTUFBTSxHQUFHQTtRQUNkLElBQUksQ0FBQ0MsVUFBVSxHQUFHQTtRQUNsQixJQUFJLENBQUNDLFVBQVUsR0FBR0E7UUFDbEIsSUFBSSxDQUFDQyxVQUFVLEdBQUdBO1FBQ2xCLElBQUksQ0FBQ0MsV0FBVyxHQUFHQTtRQUNuQixJQUFJLENBQUNDLGFBQWEsR0FBR0E7UUFDckIsSUFBSSxDQUFDQyxhQUFhLEdBQUdBO0lBQ3ZCO0lBRUFDLFNBQVNULFFBQVEsRUFBRSxFQUFFO1FBQ25CLE1BQU1ELFVBQVUsSUFBSSxDQUFDVyxVQUFVO1FBRS9CZixLQUFLSyxPQUFPLElBQUksQ0FBQ0EsS0FBSztRQUV0QkQsUUFBUVUsUUFBUSxDQUFDVDtRQUVqQixPQUFPQTtJQUNUO0lBRUFXLFNBQVNWLFFBQVEsRUFBRSxFQUFFO1FBQ25CLE1BQU1GLFVBQVUsSUFBSSxDQUFDVyxVQUFVO1FBRS9CZixLQUFLTSxPQUFPLElB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
|
|
436
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250ZXh0L21uZW1pYy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgYXJyYXlVdGlsaXRpZXMgfSBmcm9tIFwibmVjZXNzYXJ5XCI7XG5cbmltcG9ydCBDb250ZXh0IGZyb20gXCIuLi9jb250ZXh0XCI7XG5cbmltcG9ydCB7IHRlcm1zRnJvbUpTT04sXG4gICAgICAgICBsaW5rc0Zyb21KU09OLFxuICAgICAgICAgZnJhbWVzRnJvbUpTT04sXG4gICAgICAgICB0ZXJtc1RvVGVybXNKU09OLFxuICAgICAgICAgbGlua3NUb0xpbmtzSlNPTixcbiAgICAgICAgIGZyYW1lc1RvRnJhbWVzSlNPTixcbiAgICAgICAgIGVxdWFsaXRpZXNGcm9tSlNPTixcbiAgICAgICAgIHN0YXRlbWVudHNGcm9tSlNPTixcbiAgICAgICAgIGFzc2VydGlvbnNGcm9tSlNPTixcbiAgICAgICAgIGFzc3VtcHRpb25zRnJvbUpTT04sXG4gICAgICAgICBtZXRhdmFyaWFibGVzRnJvbUpTT04sXG4gICAgICAgICBzdWJzdGl0dXRpb25zRnJvbUpTT04sXG4gICAgICAgICBlcXVhbGl0aWVzVG9FcXVhbGl0aWVzSlNPTixcbiAgICAgICAgIHN0YXRlbWVudHNUb1N0YXRlbWVudHNKU09OLFxuICAgICAgICAgYXNzZXJ0aW9uc1RvQXNzZXJ0aW9uc0pTT04sXG4gICAgICAgICBhc3N1bXB0aW9uc1RvQXNzdW1wdGlvbnNKU09OLFxuICAgICAgICAgbWV0YXZhcmlhYmxlc1RvTWV0YXZhcmlhYmxlc0pTT04sXG4gICAgICAgICBzdWJzdGl0dXRpb25zVG9TdWJzdGl0dXRpb25zSlNPTiB9IGZyb20gXCIuLi91dGlsaXRpZXMvanNvblwiO1xuXG5jb25zdCB7IHB1c2gsIGV4dHJhY3QgfSA9IGFycmF5VXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBNbmVtaWNDb250ZXh0IGV4dGVuZHMgQ29udGV4dCB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHRlcm1zLCBsaW5rcywgZnJhbWVzLCBlcXVhbGl0aWVzLCBhc3NlcnRpb25zLCBzdGF0ZW1lbnRzLCBhc3N1bXB0aW9ucywgbWV0YXZhcmlhYmxlcywgc3Vic3RpdHV0aW9ucykge1xuICAgIHN1cGVyKGNvbnRleHQpO1xuXG4gICAgdGhpcy50ZXJtcyA9IHRlcm1zO1xuICAgIHRoaXMubGlua3MgPSBsaW5rcztcbiAgICB0aGlzLmZyYW1lcyA9IGZyYW1lcztcbiAgICB0aGlzLmVxdWFsaXRpZXMgPSBlcXVhbGl0aWVzO1xuICAgIHRoaXMuYXNzZXJ0aW9ucyA9IGFzc2VydGlvbnM7XG4gICAgdGhpcy5zdGF0ZW1lbnRzID0gc3RhdGVtZW50cztcbiAgICB0aGlzLmFzc3VtcHRpb25zID0gYXNzdW1wdGlvbnM7XG4gICAgdGhpcy5tZXRhdmFyaWFibGVzID0gbWV0YXZhcmlhYmxlcztcbiAgICB0aGlzLnN1YnN0aXR1dGlvbnMgPSBzdWJzdGl0dXRpb25zO1xuICB9XG5cbiAgZ2V0VGVybXModGVybXMgPSBbXSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIHB1c2godGVybXMsIHRoaXMudGVybXMpO1xuXG4gICAgY29udGV4dC5nZXRUZXJtcyh0ZXJtcyk7XG5cbiAgICByZXR1cm4gdGVybXM7XG4gIH1cblxuICBnZXRMaW5rcyhsaW5rcyA9IFtdKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgcHVzaChsaW5rcywgdGhpcy5saW5rcyk7XG5cbiAgICBjb250ZXh0LmdldExpbmtzKGxpbmtzKTtcblxuICAgIHJldHVybiBsaW5rcztcbiAgfVxuXG4gIGdldEZyYW1lcyhmcmFtZXMgPSBbXSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIHB1c2goZnJhbWVzLCB0aGlzLmZyYW1lcyk7XG5cbiAgICBjb250ZXh0LmdldEZyYW1lcyhmcmFtZXMpO1xuXG4gICAgcmV0dXJuIGZyYW1lcztcbiAgfVxuXG4gIGdldEVxdWFsaXRpZXMoZXF1YWxpdGllcyA9IFtdKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgcHVzaChlcXVhbGl0aWVzLCB0aGlzLmVxdWFsaXRpZXMpO1xuXG4gICAgY29udGV4dC5nZXRFcXVhbGl0aWVzKGVxdWFsaXRpZXMpO1xuXG4gICAgcmV0dXJuIGVxdWFsaXRpZXM7XG4gIH1cblxuICBnZXRTdGF0ZW1lbnRzKHN0YXRlbWVudHMgPSBbXSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIHB1c2goc3RhdGVtZW50cywgdGhpcy5zdGF0ZW1lbnRzKTtcblxuICAgIGNvbnRleHQuZ2V0U3RhdGVtZW50cyhzdGF0ZW1lbnRzKTtcblxuICAgIHJldHVybiBzdGF0ZW1lbnRzO1xuICB9XG5cbiAgZ2V0QXNzZXJ0aW9ucyhhc3NlcnRpb25zID0gW10pIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBwdXNoKGFzc2VydGlvbnMsIHRoaXMuYXNzZXJ0aW9ucyk7XG5cbiAgICBjb250ZXh0LmdldEFzc2VydGlvbnMoYXNzZXJ0aW9ucyk7XG5cbiAgICByZXR1cm4gYXNzZXJ0aW9ucztcbiAgfVxuXG4gIGdldEFzc3VtcHRpb25zKGFzc3VtcHRpb25zID0gW10pIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBwdXNoKGFzc3VtcHRpb25zLCB0aGlzLmFzc3VtcHRpb25zKTtcblxuICAgIGNvbnRleHQuZ2V0QXNzdW1wdGlvbnMoYXNzdW1wdGlvbnMpO1xuXG4gICAgcmV0dXJuIGFzc3VtcHRpb25zO1xuICB9XG5cbiAgZ2V0TWV0YXZhcmlhYmxlcyhtZXRhdmFyaWFibGVzID0gW10pIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBwdXNoKG1ldGF2YXJpYWJsZXMsIHRoaXMubWV0YXZhcmlhYmxlcyk7XG5cbiAgICBjb250ZXh0LmdldE1ldGF2YXJpYWJsZXMobWV0YXZhcmlhYmxlcyk7XG5cbiAgICByZXR1cm4gbWV0YXZhcmlhYmxlcztcbiAgfVxuXG4gIGdldFN1YnN0aXR1dGlvbnMoc3Vic3RpdHV0aW9ucyA9IFtdKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgcHVzaChzdWJzdGl0dXRpb25zLCB0aGlzLnN1YnN0aXR1dGlvbnMpO1xuXG4gICAgY29udGV4dC5nZXRTdWJzdGl0dXRpb25zKHN1YnN0aXR1dGlvbnMpO1xuXG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbnM7XG4gIH1cblxuICBhZGRUZXJtKHRlcm0pIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcywgLy8vXG4gICAgICAgICAgdGVybVN0cmluZyA9IHRlcm0uZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBBZGRpbmcgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtIHRvIHRoZSBtbmVtaWMgY29udGV4dC4uLmApO1xuXG4gICAgY29uc3QgdGVybUEgPSB0ZXJtOyAvLy9cblxuICAgIGV4dHJhY3QodGhpcy50ZXJtcywgKHRlcm0pID0+IHtcbiAgICAgIGNvbnN0IHRlcm1CID0gdGVybSwgLy8vXG4gICAgICAgICAgICB0ZXJtQUVxdWFsVG9UZXJtQiA9IHRlcm1BLmlzRXF1YWxUbyh0ZXJtQik7XG5cbiAgICAgIGlmICh0ZXJtQUVxdWFsVG9UZXJtQikge1xuICAgICAgICBjb25zdCB0ZXJtU3RyaW5nID0gdGVybS5nZXRTdHJpbmcoKTtcblxuICAgICAgICBjb250ZXh0LnRyYWNlKGBSZW1vdmVkIHRoZSBleGlzdGluZyAnJHt0ZXJtU3RyaW5nfScgdGVybSBmcm9tIHRoZSBtbmVtaWMgY29udGV4dC4uLmApO1xuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy50ZXJtcy5wdXNoKHRlcm0pO1xuXG4gICAgY29udGV4dC5kZWJ1ZyhgLi4uYWRkZWQgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtIHRvIHRoZSBtbmVtaWMgY29udGV4dC5gKTtcbiAgfVxuXG4gIGFkZExpbmsobGluaykge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLCAvLy9cbiAgICAgICAgICBsaW5rU3RyaW5nID0gbGluay5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYEFkZGluZyB0aGUgJyR7bGlua1N0cmluZ30nIGxpbmsgdG8gdGhlIG1uZW1pYyBjb250ZXh0Li4uYCk7XG5cbiAgICBjb25zdCBsaW5rQSA9IGxpbms7IC8vL1xuXG4gICAgZXh0cmFjdCh0aGlzLmxpbmtzLCAobGluaykgPT4ge1xuICAgICAgY29uc3QgbGlua0IgPSBsaW5rLCAvLy9cbiAgICAgICAgICAgIGxpbmtBRXF1YWxUb0xpbmtCID0gbGlua0EuaXNFcXVhbFRvKGxpbmtCKTtcblxuICAgICAgaWYgKGxpbmtBRXF1YWxUb0xpbmtCKSB7XG4gICAgICAgIGNvbnN0IGxpbmtTdHJpbmcgPSBsaW5rLmdldFN0cmluZygpO1xuXG4gICAgICAgIGNvbnRleHQudHJhY2UoYFJlbW92ZWQgdGhlIGV4aXN0aW5nICcke2xpbmtTdHJpbmd9JyBsaW5rIGZyb20gdGhlIG1uZW1pYyBjb250ZXh0Li4uYCk7XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLmxpbmtzLnB1c2gobGluayk7XG5cbiAgICBjb250ZXh0LmRlYnVnKGAuLi5hZGRlZCB0aGUgJyR7bGlua1N0cmluZ30nIGxpbmsgdG8gdGhlIG1uZW1pYyBjb250ZXh0LmApO1xuICB9XG5cbiAgYWRkRnJhbWUoZnJhbWUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcywgLy8vXG4gICAgICAgICAgZnJhbWVTdHJpbmcgPSBmcmFtZS5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYEFkZGluZyB0aGUgJyR7ZnJhbWVTdHJpbmd9JyBmcmFtZSB0byB0aGUgbW5lbWljIGNvbnRleHQuLi5gKTtcblxuICAgIGNvbnN0IGZyYW1lQSA9IGZyYW1lOyAvLy9cblxuICAgIGV4dHJhY3QodGhpcy5mcmFtZXMsIChmcmFtZSkgPT4ge1xuICAgICAgY29uc3QgZnJhbWVCID0gZnJhbWUsIC8vL1xuICAgICAgICAgICAgZnJhbWVBRXF1YWxUb0ZyYW1lQiA9IGZyYW1lQS5pc0VxdWFsVG8oZnJhbWVCKTtcblxuICAgICAgaWYgKGZyYW1lQUVxdWFsVG9GcmFtZUIpIHtcbiAgICAgICAgY29uc3QgZnJhbWVTdHJpbmcgPSBmcmFtZS5nZXRTdHJpbmcoKTtcblxuICAgICAgICBjb250ZXh0LnRyYWNlKGBSZW1vdmVkIHRoZSBleGlzdGluZyAnJHtmcmFtZVN0cmluZ30nIGZyYW1lIGZyb20gdGhlIG1uZW1pYyBjb250ZXh0Li4uYCk7XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLmZyYW1lcy5wdXNoKGZyYW1lKTtcblxuICAgIGNvbnRleHQuZGVidWcoYC4uLmFkZGVkIHRoZSAnJHtmcmFtZVN0cmluZ30nIGZyYW1lIHRvIHRoZSBtbmVtaWMgY29udGV4dC5gKTtcbiAgfVxuXG4gIGFkZEVxdWFsaXR5KGVxdWFsaXR5KSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMsIC8vL1xuICAgICAgICAgIGVxdWFsaXR5U3RyaW5nID0gZXF1YWxpdHkuZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBBZGRpbmcgdGhlICcke2VxdWFsaXR5U3RyaW5nfScgZXF1YWxpdHkgdG8gdGhlIG1uZW1pYyBjb250ZXh0Li4uYCk7XG5cbiAgICBjb25zdCBlcXVhbGl0eUEgPSBlcXVhbGl0eTsgLy8vXG5cbiAgICBleHRyYWN0KHRoaXMuZXF1YWxpdGllcywgKGVxdWFsaXR5KSA9PiB7XG4gICAgICBjb25zdCBlcXVhbGl0eUIgPSBlcXVhbGl0eSwgLy8vXG4gICAgICAgICAgICBlcXVhbGl0eUFFcXVhbFRvRXF1YWxpdHlCID0gZXF1YWxpdHlBLmlzRXF1YWxUbyhlcXVhbGl0eUIpO1xuXG4gICAgICBpZiAoZXF1YWxpdHlBRXF1YWxUb0VxdWFsaXR5Qikge1xuICAgICAgICBjb25zdCBlcXVhbGl0eVN0cmluZyA9IGVxdWFsaXR5LmdldFN0cmluZygpO1xuXG4gICAgICAgIGNvbnRleHQudHJhY2UoYFJlbW92ZWQgdGhlIGV4aXN0aW5nICcke2VxdWFsaXR5U3RyaW5nfScgZXF1YWxpdHkgZnJvbSB0aGUgbW5lbWljIGNvbnRleHQuLi5gKTtcblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuZXF1YWxpdGllcy5wdXNoKGVxdWFsaXR5KTtcblxuICAgIGNvbnRleHQuZGVidWcoYC4uLmFkZGVkIHRoZSAnJHtlcXVhbGl0eVN0cmluZ30nIGVxdWFsaXR5IHRvIHRoZSBtbmVtaWMgY29udGV4dC5gKTtcbiAgfVxuXG4gIGFkZEFzc2VydGlvbihhc3NlcnRpb24pIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcywgLy8vXG4gICAgICAgICAgYXNzZXJ0aW9uU3RyaW5nID0gYXNzZXJ0aW9uLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgQWRkaW5nIHRoZSAnJHthc3NlcnRpb25TdHJpbmd9JyBhc3NlcnRpb24gdG8gdGhlIG1uZW1pYyBjb250ZXh0Li4uYCk7XG5cbiAgICBjb25zdCBhc3NlcnRpb25BID0gYXNzZXJ0aW9uOyAvLy9cblxuICAgIGV4dHJhY3QodGhpcy5hc3NlcnRpb25zLCAoYXNzZXJ0aW9uKSA9PiB7XG4gICAgICBjb25zdCBhc3NlcnRpb25CID0gYXNzZXJ0aW9uLCAvLy9cbiAgICAgICAgICAgIGFzc2VydGlvbkFFcXVhbFRvQXNzZXJ0aW9uQiA9IGFzc2VydGlvbkEuaXNFcXVhbFRvKGFzc2VydGlvbkIpO1xuXG4gICAgICBpZiAoYXNzZXJ0aW9uQUVxdWFsVG9Bc3NlcnRpb25CKSB7XG4gICAgICAgIGNvbnN0IGFzc2VydGlvblN0cmluZyA9IGFzc2VydGlvbi5nZXRTdHJpbmcoKTtcblxuICAgICAgICBjb250ZXh0LnRyYWNlKGBSZW1vdmVkIHRoZSBleGlzdGluZyAnJHthc3NlcnRpb25TdHJpbmd9JyBhc3NlcnRpb24gZnJvbSB0aGUgbW5lbWljIGNvbnRleHQuLi5gKTtcblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuYXNzZXJ0aW9ucy5wdXNoKGFzc2VydGlvbik7XG5cbiAgICBjb250ZXh0LmRlYnVnKGAuLi5hZGRlZCB0aGUgJyR7YXNzZXJ0aW9uU3RyaW5nfScgYXNzZXJ0aW9uIHRvIHRoZSBtbmVtaWMgY29udGV4dC5gKTtcbiAgfVxuXG4gIGFkZFN0YXRlbWVudChzdGF0ZW1lbnQpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcywgLy8vXG4gICAgICAgICAgc3RhdGVtZW50U3RyaW5nID0gc3RhdGVtZW50LmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgQWRkaW5nIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgdG8gdGhlIG1uZW1pYyBjb250ZXh0Li4uYCk7XG5cbiAgICBjb25zdCBzdGF0ZW1lbnRBID0gc3RhdGVtZW50OyAvLy9cblxuICAgIGV4dHJhY3QodGhpcy5zdGF0ZW1lbnRzLCAoc3RhdGVtZW50KSA9PiB7XG4gICAgICBjb25zdCBzdGF0ZW1lbnRCID0gc3RhdGVtZW50LCAvLy9cbiAgICAgICAgICAgIHN0YXRlbWVudEFFcXVhbFRvU3RhdGVtZW50QiA9IHN0YXRlbWVudEEuaXNFcXVhbFRvKHN0YXRlbWVudEIpO1xuXG4gICAgICBpZiAoc3RhdGVtZW50QUVxdWFsVG9TdGF0ZW1lbnRCKSB7XG4gICAgICAgIGNvbnN0IHN0YXRlbWVudFN0cmluZyA9IHN0YXRlbWVudC5nZXRTdHJpbmcoKTtcblxuICAgICAgICBjb250ZXh0LnRyYWNlKGBSZW1vdmVkIHRoZSBleGlzdGluZyAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgZnJvbSB0aGUgbW5lbWljIGNvbnRleHQuLi5gKTtcblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuc3RhdGVtZW50cy5wdXNoKHN0YXRlbWVudCk7XG5cbiAgICBjb250ZXh0LmRlYnVnKGAuLi5hZGRlZCB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IHRvIHRoZSBtbmVtaWMgY29udGV4dC5gKTtcbiAgfVxuXG4gIGFkZEFzc3VtcHRpb24oYXNzdW1wdGlvbikge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLCAvLy9cbiAgICAgICAgICBhc3N1bXB0aW9uU3RyaW5nID0gYXNzdW1wdGlvbi5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYEFkZGluZyB0aGUgJyR7YXNzdW1wdGlvblN0cmluZ30nIGFzc3VtcHRpb24gdG8gdGhlIG1uZW1pYyBjb250ZXh0Li4uYCk7XG5cbiAgICBjb25zdCBhc3N1bXB0aW9uQSA9IGFzc3VtcHRpb247IC8vL1xuXG4gICAgZXh0cmFjdCh0aGlzLmFzc3VtcHRpb25zLCAoYXNzdW1wdGlvbikgPT4ge1xuICAgICAgY29uc3QgYXNzdW1wdGlvbkIgPSBhc3N1bXB0aW9uLCAvLy9cbiAgICAgICAgICAgIGFzc3VtcHRpb25BRXF1YWxUb0Fzc3VtcHRpb25CID0gYXNzdW1wdGlvbkEuaXNFcXVhbFRvKGFzc3VtcHRpb25CKTtcblxuICAgICAgaWYgKGFzc3VtcHRpb25BRXF1YWxUb0Fzc3VtcHRpb25CKSB7XG4gICAgICAgIGNvbnN0IGFzc3VtcHRpb25TdHJpbmcgPSBhc3N1bXB0aW9uLmdldFN0cmluZygpO1xuXG4gICAgICAgIGNvbnRleHQudHJhY2UoYFJlbW92ZWQgdGhlIGV4aXN0aW5nICcke2Fzc3VtcHRpb25TdHJpbmd9JyBhc3N1bXB0aW9uIGZyb20gdGhlIG1uZW1pYyBjb250ZXh0Li4uYCk7XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLmFzc3VtcHRpb25zLnB1c2goYXNzdW1wdGlvbik7XG5cbiAgICBjb250ZXh0LmRlYnVnKGAuLi5hZGRlZCB0aGUgJyR7YXNzdW1wdGlvblN0cmluZ30nIGFzc3VtcHRpb24gdG8gdGhlIG1uZW1pYyBjb250ZXh0LmApO1xuICB9XG5cbiAgYWRkTWV0YXZhcmlhYmxlKG1ldGF2YXJpYWJsZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLCAvLy9cbiAgICAgICAgICBtZXRhdmFyaWFibGVTdHJpbmcgPSBtZXRhdmFyaWFibGUuZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBBZGRpbmcgdGhlICcke21ldGF2YXJpYWJsZVN0cmluZ30nIG1ldGF2YXJpYWJsZSB0byB0aGUgbW5lbWljIGNvbnRleHQuLi5gKTtcblxuICAgIGNvbnN0IG1ldGF2YXJpYWJsZUEgPSBtZXRhdmFyaWFibGU7IC8vL1xuXG4gICAgZXh0cmFjdCh0aGlzLm1ldGF2YXJpYWJsZXMsIChtZXRhdmFyaWFibGUpID0+IHtcbiAgICAgIGNvbnN0IG1ldGF2YXJpYWJsZUIgPSBtZXRhdmFyaWFibGUsIC8vL1xuICAgICAgICAgICAgbWV0YXZhcmlhYmxlQUVxdWFsVG9NZXRhdmFyaWFibGVCID0gbWV0YXZhcmlhYmxlQS5pc0VxdWFsVG8obWV0YXZhcmlhYmxlQik7XG5cbiAgICAgIGlmIChtZXRhdmFyaWFibGVBRXF1YWxUb01ldGF2YXJpYWJsZUIpIHtcbiAgICAgICAgY29uc3QgbWV0YXZhcmlhYmxlU3RyaW5nID0gbWV0YXZhcmlhYmxlLmdldFN0cmluZygpO1xuXG4gICAgICAgIGNvbnRleHQudHJhY2UoYFJlbW92ZWQgdGhlIGV4aXN0aW5nICcke21ldGF2YXJpYWJsZVN0cmluZ30nIG1ldGF2YXJpYWJsZSBmcm9tIHRoZSBtbmVtaWMgY29udGV4dC4uLmApO1xuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5tZXRhdmFyaWFibGVzLnB1c2gobWV0YXZhcmlhYmxlKTtcblxuICAgIGNvbnRleHQuZGVidWcoYC4uLmFkZGVkIHRoZSAnJHttZXRhdmFyaWFibGVTdHJpbmd9JyBtZXRhdmFyaWFibGUgdG8gdGhlIG1uZW1pYyBjb250ZXh0LmApO1xuICB9XG5cbiAgYWRkU3Vic3RpdHV0aW9uKHN1YnN0aXR1dGlvbikge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLCAvLy9cbiAgICAgICAgICBzdWJzdGl0dXRpb25TdHJpbmcgPSBzdWJzdGl0dXRpb24uZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBBZGRpbmcgdGhlICcke3N1YnN0aXR1dGlvblN0cmluZ30nIHN1YnN0aXR1dGlvbiB0byB0aGUgbW5lbWljIGNvbnRleHQuLi5gKTtcblxuICAgIGNvbnN0IHN1YnN0aXR1dGlvbkEgPSBzdWJzdGl0dXRpb247IC8vL1xuXG4gICAgZXh0cmFjdCh0aGlzLnN1YnN0aXR1dGlvbnMsIChzdWJzdGl0dXRpb24pID0+IHtcbiAgICAgIGNvbnN0IHN1YnN0aXR1dGlvbkIgPSBzdWJzdGl0dXRpb24sIC8vL1xuICAgICAgICAgICAgc3Vic3RpdHV0aW9uQUVxdWFsVG9TdWJzdGl0dXRpb25CID0gc3Vic3RpdHV0aW9uQS5pc0VxdWFsVG8oc3Vic3RpdHV0aW9uQik7XG5cbiAgICAgIGlmIChzdWJzdGl0dXRpb25BRXF1YWxUb1N1YnN0aXR1dGlvbkIpIHtcbiAgICAgICAgY29uc3Qgc3Vic3RpdHV0aW9uU3RyaW5nID0gc3Vic3RpdHV0aW9uLmdldFN0cmluZygpO1xuXG4gICAgICAgIGNvbnRleHQudHJhY2UoYFJlbW92ZWQgdGhlIGV4aXN0aW5nICcke3N1YnN0aXR1dGlvblN0cmluZ30nIHN1YnN0aXR1dGlvbiBmcm9tIHRoZSBtbmVtaWMgY29udGV4dC4uLmApO1xuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5zdWJzdGl0dXRpb25zLnB1c2goc3Vic3RpdHV0aW9uKTtcblxuICAgIGNvbnRleHQuZGVidWcoYC4uLmFkZGVkIHRoZSAnJHtzdWJzdGl0dXRpb25TdHJpbmd9JyBzdWJzdGl0dXRpb24gdG8gdGhlIG1uZW1pYyBjb250ZXh0LmApO1xuICB9XG5cbiAgYWRkQXNzaWdubWVudChhc3NpZ25tZW50KSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgY29udGV4dC5hZGRBc3NpZ25tZW50KGFzc2lnbm1lbnQpO1xuICB9XG5cbiAgYWRkSW5mZXJyZWRTdWJzdGl0dXRpb25zKGluZmVycmVkU3Vic3RpdHV0aW9ucykge1xuICAgIC8vL1xuICB9XG5cbiAgYWRkVGVybXModGVybXMpIHtcbiAgICB0ZXJtcy5mb3JFYWNoKCh0ZXJtKSA9PiB7XG4gICAgICB0aGlzLmFkZFRlcm0odGVybSk7XG4gICAgfSk7XG4gIH1cblxuICBhZGRMaW5rcyhsaW5rcykge1xuICAgIGxpbmtzLmZvckVhY2goKGxpbmspID0+IHtcbiAgICAgIHRoaXMuYWRkTGluayhsaW5rKTtcbiAgICB9KTtcbiAgfVxuXG4gIGFkZEZyYW1lcyhmcmFtZXMpIHtcbiAgICBmcmFtZXMuZm9yRWFjaCgoZnJhbWUpID0+IHtcbiAgICAgIHRoaXMuYWRkRnJhbWUoZnJhbWUpO1xuICAgIH0pO1xuICB9XG5cbiAgYWRkRXF1YWxpdGllcyhlcXVhbGl0aWVzKSB7XG4gICAgZXF1YWxpdGllcy5mb3JFYWNoKChlcXVhbGl0eSkgPT4ge1xuICAgICAgdGhpcy5hZGRFcXVhbGl0eShlcXVhbGl0eSk7XG4gICAgfSk7XG4gIH1cblxuICBhZGRBc3NlcnRpb25zKGFzc2VydGlvbnMpIHtcbiAgICBhc3NlcnRpb25zLmZvckVhY2goKGFzc2VydGlvbikgPT4ge1xuICAgICAgdGhpcy5hZGRBc3NlcnRpb24oYXNzZXJ0aW9uKTtcbiAgICB9KTtcbiAgfVxuXG4gIGFkZFN0YXRlbWVudHMoc3RhdGVtZW50cykge1xuICAgIHN0YXRlbWVudHMuZm9yRWFjaCgoc3RhdGVtZW50KSA9PiB7XG4gICAgICB0aGlzLmFkZFN0YXRlbWVudChzdGF0ZW1lbnQpO1xuICAgIH0pO1xuICB9XG5cbiAgYWRkQXNzdW1wdGlvbnMoYXNzdW1wdGlvbnMpIHtcbiAgICBhc3N1bXB0aW9ucy5mb3JFYWNoKChhc3N1bXB0aW9uKSA9PiB7XG4gICAgICB0aGlzLmFkZEFzc3VtcHRpb24oYXNzdW1wdGlvbik7XG4gICAgfSk7XG4gIH1cblxuICBhZGRNZXRhdmFyaWFibGVzKG1ldGF2YXJpYWJsZXMpIHtcbiAgICBtZXRhdmFyaWFibGVzLmZvckVhY2goKG1ldGF2YXJpYWJsZSkgPT4ge1xuICAgICAgdGhpcy5hZGRNZXRhdmFyaWFibGUobWV0YXZhcmlhYmxlKTtcbiAgICB9KTtcbiAgfVxuXG4gIGZpbmRUZXJtQnlUZXJtTm9kZSh0ZXJtTm9kZSkge1xuICAgIGNvbnN0IHRlcm1zID0gdGhpcy5nZXRUZXJtcygpLFxuICAgICAgICAgIHRlcm0gPSB0ZXJtcy5maW5kKCh0ZXJtKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0ZXJtTm9kZU1hdGNoZXMgPSB0ZXJtLm1hdGNoVGVybU5vZGUodGVybU5vZGUpO1xuXG4gICAgICAgICAgICBpZiAodGVybU5vZGVNYXRjaGVzKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pIHx8IG51bGw7XG5cbiAgICByZXR1cm4gdGVybTtcbiAgfVxuXG4gIGZpbmRMaW5rQnlMaW5rTm9kZShsaW5rTm9kZSkge1xuICAgIGNvbnN0IGxpbmtzID0gdGhpcy5nZXRMaW5rcygpLFxuICAgICAgICAgIGxpbmsgPSBsaW5rcy5maW5kKChsaW5rKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBsaW5rTm9kZU1hdGNoZXMgPSBsaW5rLm1hdGNoTGlua05vZGUobGlua05vZGUpO1xuXG4gICAgICAgICAgICBpZiAobGlua05vZGVNYXRjaGVzKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pIHx8IG51bGw7XG5cbiAgICByZXR1cm4gbGluaztcbiAgfVxuXG4gIGZpbmRGcmFtZUJ5RnJhbWVOb2RlKGZyYW1lTm9kZSkge1xuICAgIGNvbnN0IGZyYW1lcyA9IHRoaXMuZ2V0RnJhbWVzKCksXG4gICAgICAgICAgZnJhbWUgPSBmcmFtZXMuZmluZCgoZnJhbWUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZyYW1lTm9kZU1hdGNoZXMgPSBmcmFtZS5tYXRjaEZyYW1lTm9kZShmcmFtZU5vZGUpO1xuXG4gICAgICAgICAgICBpZiAoZnJhbWVOb2RlTWF0Y2hlcykge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSB8fCBudWxsO1xuXG4gICAgcmV0dXJuIGZyYW1lO1xuICB9XG5cbiAgZmluZEVxdWFsaXR5QnlFcXVhbGl0eU5vZGUoZXF1YWxpdHlOb2RlKSB7XG4gICAgY29uc3QgZXF1YWxpdGllcyA9IHRoaXMuZ2V0RXF1YWxpdGllcygpLFxuICAgICAgZXF1YWxpdHkgPSBlcXVhbGl0aWVzLmZpbmQoKGVxdWFsaXR5KSA9PiB7XG4gICAgICAgIGNvbnN0IGVxdWFsaXR5Tm9kZU1hdGNoZXMgPSBlcXVhbGl0eS5tYXRjaEVxdWFsaXR5Tm9kZShlcXVhbGl0eU5vZGUpO1xuXG4gICAgICAgIGlmIChlcXVhbGl0eU5vZGVNYXRjaGVzKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pIHx8IG51bGw7XG5cbiAgICByZXR1cm4gZXF1YWxpdHk7XG4gIH1cblxuICBmaW5kQXNzZXJ0aW9uQnlBc3NlcnRpb25Ob2RlKGFzc2VydGlvbk5vZGUpIHtcbiAgICBjb25zdCBhc3NlcnRpb25zID0gdGhpcy5nZXRBc3NlcnRpb25zKCksXG4gICAgICAgICAgYXNzZXJ0aW9uID0gYXNzZXJ0aW9ucy5maW5kKChhc3NlcnRpb24pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGFzc2VydGlvbk5vZGVNYXRjaGVzID0gYXNzZXJ0aW9uLm1hdGNoQXNzZXJ0aW9uTm9kZShhc3NlcnRpb25Ob2RlKTtcblxuICAgICAgICAgICAgaWYgKGFzc2VydGlvbk5vZGVNYXRjaGVzKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pIHx8IG51bGw7XG5cbiAgICByZXR1cm4gYXNzZXJ0aW9uO1xuICB9XG5cbiAgZmluZFN0YXRlbWVudEJ5U3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlKSB7XG4gICAgY29uc3Qgc3RhdGVtZW50cyA9IHRoaXMuZ2V0U3RhdGVtZW50cygpLFxuICAgICAgICAgIHN0YXRlbWVudCA9IHN0YXRlbWVudHMuZmluZCgoc3RhdGVtZW50KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzdGF0ZW1lbnROb2RlTWF0Y2hlcyA9IHN0YXRlbWVudC5tYXRjaFN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSk7XG5cbiAgICAgICAgICAgIGlmIChzdGF0ZW1lbnROb2RlTWF0Y2hlcykge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSB8fCBudWxsO1xuXG4gICAgcmV0dXJuIHN0YXRlbWVudDtcbiAgfVxuXG4gIGZpbmRBc3N1bXB0aW9uQnlBc3N1bXB0aW9uTm9kZShhc3N1bXB0aW9uTm9kZSkge1xuICAgIGNvbnN0IGFzc3VtcHRpb25zID0gdGhpcy5nZXRBc3N1bXB0aW9ucygpLFxuICAgICAgICAgIGFzc3VtcHRpb24gPSBhc3N1bXB0aW9ucy5maW5kKChhc3N1bXB0aW9uKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBhc3N1bXB0aW9uTm9kZU1hdGNoZXMgPSBhc3N1bXB0aW9uLm1hdGNoQXNzdW1wdGlvbk5vZGUoYXNzdW1wdGlvbk5vZGUpO1xuXG4gICAgICAgICAgICBpZiAoYXNzdW1wdGlvbk5vZGVNYXRjaGVzKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pIHx8IG51bGw7XG5cbiAgICByZXR1cm4gYXNzdW1wdGlvbjtcbiAgfVxuXG4gIGZpbmRNZXRhdmFyaWFibGVCeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSkge1xuICAgIGNvbnN0IG1ldGF2YXJpYWJsZXMgPSB0aGlzLmdldE1ldGF2YXJpYWJsZXMoKSxcbiAgICAgICAgICBtZXRhdmFyaWFibGUgPSBtZXRhdmFyaWFibGVzLmZpbmQoKG1ldGF2YXJpYWJsZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbWV0YXZhcmlhYmxlTm9kZU1hdGNoZXMgPSBtZXRhdmFyaWFibGUubWF0Y2hNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpO1xuXG4gICAgICAgICAgICBpZiAobWV0YXZhcmlhYmxlTm9kZU1hdGNoZXMpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSkgfHwgbnVsbDtcblxuICAgIHJldHVybiBtZXRhdmFyaWFibGU7XG4gIH1cblxuICBmaW5kU3Vic3RpdHV0aW9uQnlTdWJzdGl0dXRpb25Ob2RlKHN1YnN0aXR1dGlvbk5vZGUpIHtcbiAgICBjb25zdCBzdWJzdGl0dXRpb25zID0gdGhpcy5nZXRTdWJzdGl0dXRpb25zKCksXG4gICAgICAgICAgc3Vic3RpdHV0aW9uID0gc3Vic3RpdHV0aW9ucy5maW5kKChzdWJzdGl0dXRpb24pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHN1YnN0aXR1dGlvbk5vZGVNYXRjaGVzID0gc3Vic3RpdHV0aW9uLm1hdGNoU3Vic3RpdHV0aW9uTm9kZShzdWJzdGl0dXRpb25Ob2RlKTtcblxuICAgICAgICAgICAgaWYgKHN1YnN0aXR1dGlvbk5vZGVNYXRjaGVzKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pIHx8IG51bGw7XG5cbiAgICByZXR1cm4gc3Vic3RpdHV0aW9uO1xuICB9XG5cbiAgaXNUZXJtUHJlc2VudEJ5VGVybU5vZGUodGVybU5vZGUpIHtcbiAgICBjb25zdCB0ZXJtID0gdGhpcy5maW5kVGVybUJ5VGVybU5vZGUodGVybU5vZGUpLFxuICAgICAgdGVybVByZXNlbnQgPSAodGVybSAhPT0gbnVsbCk7XG5cbiAgICByZXR1cm4gdGVybVByZXNlbnQ7XG4gIH1cblxuICBpc0xpbmtQcmVzZW50QnlMaW5rTm9kZShsaW5rTm9kZSkge1xuICAgIGNvbnN0IGxpbmsgPSB0aGlzLmZpbmRMaW5rQnlMaW5rTm9kZShsaW5rTm9kZSksXG4gICAgICAgICAgbGlua1ByZXNlbnQgPSAobGluayAhPT0gbnVsbCk7XG5cbiAgICByZXR1cm4gbGlua1ByZXNlbnQ7XG4gIH1cblxuICBpc0ZyYW1lUHJlc2VudEJ5RnJhbWVOb2RlKGZyYW1lTm9kZSkge1xuICAgIGNvbnN0IGZyYW1lID0gdGhpcy5maW5kRnJhbWVCeUZyYW1lTm9kZShmcmFtZU5vZGUpLFxuICAgICAgICAgIGZyYW1lUHJlc2VudCA9IChmcmFtZSAhPT0gbnVsbCk7XG5cbiAgICByZXR1cm4gZnJhbWVQcmVzZW50O1xuICB9XG5cbiAgaXNFcXVhbGl0eVByZXNlbnRCeUVxdWFsaXR5Tm9kZShlcXVhbGl0eU5vZGUpIHtcbiAgICBjb25zdCBlcXVhbGl0eSA9IHRoaXMuZmluZEVxdWFsaXR5QnlFcXVhbGl0eU5vZGUoZXF1YWxpdHlOb2RlKSxcbiAgICAgICAgICBlcXVhbGl0eVByZXNlbnQgPSAoZXF1YWxpdHkgIT09IG51bGwpO1xuXG4gICAgcmV0dXJuIGVxdWFsaXR5UHJlc2VudDtcbiAgfVxuXG4gIGlzQXNzZXJ0aW9uUHJlc2VudEJ5QXNzZXJ0aW9uTm9kZShhc3NlcnRpb25Ob2RlKSB7XG4gICAgY29uc3QgYXNzZXJ0aW9uID0gdGhpcy5maW5kQXNzZXJ0aW9uQnlBc3NlcnRpb25Ob2RlKGFzc2VydGlvbk5vZGUpLFxuICAgICAgICAgIGFzc2VydGlvblByZXNlbnQgPSAoYXNzZXJ0aW9uICE9PSBudWxsKTtcblxuICAgIHJldHVybiBhc3NlcnRpb25QcmVzZW50O1xuICB9XG5cbiAgaXNTdGF0ZW1lbnRQcmVzZW50QnlTdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnQgPSB0aGlzLmZpbmRTdGF0ZW1lbnRCeVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSksXG4gICAgICAgICAgc3RhdGVtZW50UHJlc2VudCA9IChzdGF0ZW1lbnQgIT09IG51bGwpO1xuXG4gICAgcmV0dXJuIHN0YXRlbWVudFByZXNlbnQ7XG4gIH1cblxuICBpc0Fzc3VtcHRpb25QcmVzZW50QnlBc3N1bXB0aW9uTm9kZShhc3N1bXB0aW9uTm9kZSkge1xuICAgIGNvbnN0IGFzc3VtcHRpb24gPSB0aGlzLmZpbmRBc3N1bXB0aW9uQnlBc3N1bXB0aW9uTm9kZShhc3N1bXB0aW9uTm9kZSksXG4gICAgICAgICAgYXNzdW1wdGlvblByZXNlbnQgPSAoYXNzdW1wdGlvbiAhPT0gbnVsbCk7XG5cbiAgICByZXR1cm4gYXNzdW1wdGlvblByZXNlbnQ7XG4gIH1cblxuICBpc01ldGF2YXJpYWJsZVByZXNlbnRCeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSkge1xuICAgIGNvbnN0IG1ldGF2YXJpYWJsZW4gPSB0aGlzLmZpbmRNZXRhdmFyaWFibGVCeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSksXG4gICAgICAgICAgbWV0YXZhcmlhYmxlblByZXNlbnQgPSAobWV0YXZhcmlhYmxlbiAhPT0gbnVsbCk7XG5cbiAgICByZXR1cm4gbWV0YXZhcmlhYmxlblByZXNlbnQ7XG4gIH1cblxuICBpbml0aWFsaXNlKGpzb24pIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpczsgLy8vXG5cbiAgICB0aGlzLnN1YnN0aXR1dGlvbnMgPSBzdWJzdGl0dXRpb25zRnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICB0aGlzLnRlcm1zID0gdGVybXNGcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHRoaXMuc3RhdGVtZW50cyA9IHN0YXRlbWVudHNGcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHRoaXMubWV0YXZhcmlhYmxlcyA9IG1ldGF2YXJpYWJsZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHRoaXMuZXF1YWxpdGllcyA9IGVxdWFsaXRpZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHRoaXMubGlua3MgPSBsaW5rc0Zyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgdGhpcy5hc3N1bXB0aW9ucyA9IGFzc3VtcHRpb25zRnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICB0aGlzLmZyYW1lcyA9IGZyYW1lc0Zyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgdGhpcy5hc3NlcnRpb25zID0gYXNzZXJ0aW9uc0Zyb21KU09OKGpzb24sIGNvbnRleHQpO1xuICB9XG5cbiAgY29tbWl0KCkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzO1xuXG4gICAgY29udGV4dC5kZWJ1ZyhgQ29tbWl0dGVkIHRoZSBtbmVtaWMgY29udGV4dC5gKTtcblxuICAgIHJldHVybiBjb250ZXh0O1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIGxldCBqc29uO1xuXG4gICAgbGV0IHRlcm1zID0gdGhpcy5nZXRUZXJtcygpLFxuICAgICAgICBsaW5rcyA9IHRoaXMuZ2V0TGlua3MoKSxcbiAgICAgICAgZnJhbWVzID0gdGhpcy5nZXRGcmFtZXMoKSxcbiAgICAgICAgZXF1YWxpdGllcyA9IHRoaXMuZ2V0RXF1YWxpdGllcygpLFxuICAgICAgICBhc3NlcnRpb25zID0gdGhpcy5nZXRBc3NlcnRpb25zKCksXG4gICAgICAgIHN0YXRlbWVudHMgPSB0aGlzLmdldFN0YXRlbWVudHMoKSxcbiAgICAgICAgYXNzdW1wdGlvbnMgPSB0aGlzLmdldEFzc3VtcHRpb25zKCksXG4gICAgICAgIG1ldGF2YXJpYWJsZXMgPSB0aGlzLmdldE1ldGF2YXJpYWJsZXMoKSxcbiAgICAgICAgc3Vic3RpdHV0aW9ucyA9IHRoaXMuZ2V0U3Vic3RpdHV0aW9ucygpO1xuXG4gICAgY29uc3QgdGVybXNKU09OID0gdGVybXNUb1Rlcm1zSlNPTih0ZXJtcyksXG4gICAgICAgICAgbGlua3NKU09OID0gbGlua3NUb0xpbmtzSlNPTihsaW5rcyksXG4gICAgICAgICAgZnJhbWVzSlNPTiA9IGZyYW1lc1RvRnJhbWVzSlNPTihmcmFtZXMpLFxuICAgICAgICAgIGVxdWFsaXRpZXNKU09OID0gZXF1YWxpdGllc1RvRXF1YWxpdGllc0pTT04oZXF1YWxpdGllcyksXG4gICAgICAgICAgYXNzZXJ0aW9uc0pTT04gPSBhc3NlcnRpb25zVG9Bc3NlcnRpb25zSlNPTihhc3NlcnRpb25zKSxcbiAgICAgICAgICBzdGF0ZW1lbnRzSlNPTiA9IHN0YXRlbWVudHNUb1N0YXRlbWVudHNKU09OKHN0YXRlbWVudHMpLFxuICAgICAgICAgIGFzc3VtcHRpb25zSlNPTiA9IGFzc3VtcHRpb25zVG9Bc3N1bXB0aW9uc0pTT04oYXNzdW1wdGlvbnMpLFxuICAgICAgICAgIG1ldGF2YXJpYWJsZXNKU09OID0gbWV0YXZhcmlhYmxlc1RvTWV0YXZhcmlhYmxlc0pTT04obWV0YXZhcmlhYmxlcyksXG4gICAgICAgICAgc3Vic3RpdHV0aW9uc0pTT04gPSBzdWJzdGl0dXRpb25zVG9TdWJzdGl0dXRpb25zSlNPTihzdWJzdGl0dXRpb25zKTtcblxuICAgIHRlcm1zID0gdGVybXNKU09OOyAvLy9cbiAgICBsaW5rcyA9IGxpbmtzSlNPTjsgLy8vXG4gICAgZnJhbWVzID0gZnJhbWVzSlNPTjsgLy8vXG4gICAgZXF1YWxpdGllcyA9IGVxdWFsaXRpZXNKU09OOyAvLy9cbiAgICBhc3NlcnRpb25zID0gYXNzZXJ0aW9uc0pTT047IC8vL1xuICAgIHN0YXRlbWVudHMgPSBzdGF0ZW1lbnRzSlNPTjsgLy8vXG4gICAgYXNzdW1wdGlvbnMgPSBhc3N1bXB0aW9uc0pTT047IC8vL1xuICAgIG1ldGF2YXJpYWJsZXMgPSBtZXRhdmFyaWFibGVzSlNPTjsgIC8vXG4gICAgc3Vic3RpdHV0aW9ucyA9IHN1YnN0aXR1dGlvbnNKU09OOyAvLy9cblxuICAgIGpzb24gPSB7XG4gICAgICB0ZXJtcyxcbiAgICAgIGxpbmtzLFxuICAgICAgZnJhbWVzLFxuICAgICAgZXF1YWxpdGllcyxcbiAgICAgIGFzc2VydGlvbnMsXG4gICAgICBzdGF0ZW1lbnRzLFxuICAgICAgYXNzdW1wdGlvbnMsXG4gICAgICBtZXRhdmFyaWFibGVzLFxuICAgICAgc3Vic3RpdHV0aW9uc1xuICAgIH07XG5cbiAgICByZXR1cm4ganNvbjtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gICAgY29uc3QgdGVybXMgPSBudWxsLFxuICAgICAgICAgIGxpbmtzID0gbnVsbCxcbiAgICAgICAgICBmcmFtZXMgPSBudWxsLFxuICAgICAgICAgIGVxdWFsaXRpZXMgPSBudWxsLFxuICAgICAgICAgIHN0YXRlbWVudHMgPSBudWxsLFxuICAgICAgICAgIGFzc2VydGlvbnMgPSBudWxsLFxuICAgICAgICAgIGFzc3VtcHRpb25zID0gbnVsbCxcbiAgICAgICAgICBtZXRhdmFyaWFibGVzID0gbnVsbCxcbiAgICAgICAgICBzdWJzdGl0dXRpb25zID0gbnVsbCxcbiAgICAgICAgICBtbmVtaWNDb250ZXh0ID0gbmV3IE1uZW1pY0NvbnRleHQoY29udGV4dCwgdGVybXMsIGxpbmtzLCBmcmFtZXMsIGVxdWFsaXRpZXMsIGFzc2VydGlvbnMsIHN0YXRlbWVudHMsIGFzc3VtcHRpb25zLCBtZXRhdmFyaWFibGVzLCBzdWJzdGl0dXRpb25zKTtcblxuICAgIG1uZW1pY0NvbnRleHQuaW5pdGlhbGlzZShqc29uKTtcblxuICAgIHJldHVybiBtbmVtaWNDb250ZXh0O1xuICB9XG5cbiAgc3RhdGljIGZyb21Ob3RoaW5nKGNvbnRleHQpIHtcbiAgICBjb25zdCB0ZXJtcyA9IFtdLFxuICAgICAgICAgIGxpbmtzID0gW10sXG4gICAgICAgICAgZnJhbWVzID0gW10sXG4gICAgICAgICAgZXF1YWxpdGllcyA9IFtdLFxuICAgICAgICAgIHN0YXRlbWVudHMgPSBbXSxcbiAgICAgICAgICBhc3NlcnRpb25zID0gW10sXG4gICAgICAgICAgYXNzdW1wdGlvbnMgPSBbXSxcbiAgICAgICAgICBtZXRhdmFyaWFibGVzID0gW10sXG4gICAgICAgICAgc3Vic3RpdHV0aW9ucyA9IFtdLFxuICAgICAgICAgIG1uZW1pY0NvbnRleHQgPSBuZXcgTW5lbWljQ29udGV4dChjb250ZXh0LCB0ZXJtcywgbGlua3MsIGZyYW1lcywgZXF1YWxpdGllcywgYXNzZXJ0aW9ucywgc3RhdGVtZW50cywgYXNzdW1wdGlvbnMsIG1ldGF2YXJpYWJsZXMsIHN1YnN0aXR1dGlvbnMpO1xuXG4gICAgcmV0dXJuIG1uZW1pY0NvbnRleHQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJNbmVtaWNDb250ZXh0IiwicHVzaCIsImV4dHJhY3QiLCJhcnJheVV0aWxpdGllcyIsIkNvbnRleHQiLCJjb250ZXh0IiwidGVybXMiLCJsaW5rcyIsImZyYW1lcyIsImVxdWFsaXRpZXMiLCJhc3NlcnRpb25zIiwic3RhdGVtZW50cyIsImFzc3VtcHRpb25zIiwibWV0YXZhcmlhYmxlcyIsInN1YnN0aXR1dGlvbnMiLCJnZXRUZXJtcyIsImdldENvbnRleHQiLCJnZXRMaW5rcyIsImdldEZyYW1lcyIsImdldEVxdWFsaXRpZXMiLCJnZXRTdGF0ZW1lbnRzIiwiZ2V0QXNzZXJ0aW9ucyIsImdldEFzc3VtcHRpb25zIiwiZ2V0TWV0YXZhcmlhYmxlcyIsImdldFN1YnN0aXR1dGlvbnMiLCJhZGRUZXJtIiwidGVybSIsInRlcm1TdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsInRlcm1BIiwidGVybUIiLCJ0ZXJtQUVxdWFsVG9UZXJtQiIsImlzRXF1YWxUbyIsImRlYnVnIiwiYWRkTGluayIsImxpbmsiLCJsaW5rU3RyaW5nIiwibGlua0EiLCJsaW5rQiIsImxpbmtBRXF1YWxUb0xpbmtCIiwiYWRkRnJhbWUiLCJmcmFtZSIsImZyYW1lU3RyaW5nIiwiZnJhbWVBIiwiZnJhbWVCIiwiZnJhbWVBRXF1YWxUb0ZyYW1lQiIsImFkZEVxdWFsaXR5IiwiZXF1YWxpdHkiLCJlcXVhbGl0eVN0cmluZyIsImVxdWFsaXR5QSIsImVxdWFsaXR5QiIsImVxdWFsaXR5QUVxdWFsVG9FcXVhbGl0eUIiLCJhZGRBc3NlcnRpb24iLCJhc3NlcnRpb24iLCJhc3NlcnRpb25TdHJpbmciLCJhc3NlcnRpb25BIiwiYXNzZXJ0aW9uQiIsImFzc2VydGlvbkFFcXVhbFRvQXNzZXJ0aW9uQiIsImFkZFN0YXRlbWVudCIsInN0YXRlbWVudCIsInN0YXRlbWVudFN0cmluZyIsInN0YXRlbWVudEEiLCJzdGF0ZW1lbnRCIiwic3RhdGVtZW50QUVxdWFsVG9TdGF0ZW1lbnRCIiwiYWRkQXNzdW1wdGlvbiIsImFzc3VtcHRpb24iLCJhc3N1bXB0aW9uU3RyaW5nIiwiYXNzdW1wdGlvbkEiLCJhc3N1bXB0aW9uQiIsImFzc3VtcHRpb25BRXF1YWxUb0Fzc3VtcHRpb25CIiwiYWRkTWV0YXZhcmlhYmxlIiwibWV0YXZhcmlhYmxlIiwibWV0YXZhcmlhYmxlU3RyaW5nIiwibWV0YXZhcmlhYmxlQSIsIm1ldGF2YXJpYWJsZUIiLCJtZXRhdmFyaWFibGVBRXF1YWxUb01ldGF2YXJpYWJsZUIiLCJhZGRTdWJzdGl0dXRpb24iLCJzdWJzdGl0dXRpb24iLCJzdWJzdGl0dXRpb25TdHJpbmciLCJzdWJzdGl0dXRpb25BIiwic3Vic3RpdHV0aW9uQiIsInN1YnN0aXR1dGlvbkFFcXVhbFRvU3Vic3RpdHV0aW9uQiIsImFkZEFzc2lnbm1lbnQiLCJhc3NpZ25tZW50IiwiYWRkSW5mZXJyZWRTdWJzdGl0dXRpb25zIiwiaW5mZXJyZWRTdWJzdGl0dXRpb25zIiwiYWRkVGVybXMiLCJmb3JFYWNoIiwiYWRkTGlua3MiLCJhZGRGcmFtZXMiLCJhZGRFcXVhbGl0aWVzIiwiYWRkQXNzZXJ0aW9ucyIsImFkZFN0YXRlbWVudHMiLCJhZGRBc3N1bXB0aW9ucyIsImFkZE1ldGF2YXJpYWJsZXMiLCJmaW5kVGVybUJ5VGVybU5vZGUiLCJ0ZXJtTm9kZSIsImZpbmQiLCJ0ZXJtTm9kZU1hdGNoZXMiLCJtYXRjaFRlcm1Ob2RlIiwiZmluZExpbmtCeUxpbmtOb2RlIiwibGlua05vZGUiLCJsaW5rTm9kZU1hdGNoZXMiLCJtYXRjaExpbmtOb2RlIiwiZmluZEZyYW1lQnlGcmFtZU5vZGUiLCJmcmFtZU5vZGUiLCJmcmFtZU5vZGVNYXRjaGVzIiwibWF0Y2hGcmFtZU5vZGUiLCJmaW5kRXF1YWxpdHlCeUVxdWFsaXR5Tm9kZSIsImVxdWFsaXR5Tm9kZSIsImVxdWFsaXR5Tm9kZU1hdGNoZXMiLCJtYXRjaEVxdWFsaXR5Tm9kZSIsImZpbmRBc3NlcnRpb25CeUFzc2VydGlvbk5vZGUiLCJhc3NlcnRpb25Ob2RlIiwiYXNzZXJ0aW9uTm9kZU1hdGNoZXMiLCJtYXRjaEFzc2VydGlvbk5vZGUiLCJmaW5kU3RhdGVtZW50QnlTdGF0ZW1lbnROb2RlIiwic3RhdGVtZW50Tm9kZSIsInN0YXRlbWVudE5vZGVNYXRjaGVzIiwibWF0Y2hTdGF0ZW1lbnROb2RlIiwiZmluZEFzc3VtcHRpb25CeUFzc3VtcHRpb25Ob2RlIiwiYXNzdW1wdGlvbk5vZGUiLCJhc3N1bXB0aW9uTm9kZU1hdGNoZXMiLCJtYXRjaEFzc3VtcHRpb25Ob2RlIiwiZmluZE1ldGF2YXJpYWJsZUJ5TWV0YXZhcmlhYmxlTm9kZSIsIm1ldGF2YXJpYWJsZU5vZGUiLCJtZXRhdmFyaWFibGVOb2RlTWF0Y2hlcyIsIm1hdGNoTWV0YXZhcmlhYmxlTm9kZSIsImZpbmRTdWJzdGl0dXRpb25CeVN1YnN0aXR1dGlvbk5vZGUiLCJzdWJzdGl0dXRpb25Ob2RlIiwic3Vic3RpdHV0aW9uTm9kZU1hdGNoZXMiLCJtYXRjaFN1YnN0aXR1dGlvbk5vZGUiLCJpc1Rlcm1QcmVzZW50QnlUZXJtTm9kZSIsInRlcm1QcmVzZW50IiwiaXNMaW5rUHJlc2VudEJ5TGlua05vZGUiLCJsaW5rUHJlc2VudCIsImlzRnJhbWVQcmVzZW50QnlGcmFtZU5vZGUiLCJmcmFtZVByZXNlbnQiLCJpc0VxdWFsaXR5UHJlc2VudEJ5RXF1YWxpdHlOb2RlIiwiZXF1YWxpdHlQcmVzZW50IiwiaXNBc3NlcnRpb25QcmVzZW50QnlBc3NlcnRpb25Ob2RlIiwiYXNzZXJ0aW9uUHJlc2VudCIsImlzU3RhdGVtZW50UHJlc2VudEJ5U3RhdGVtZW50Tm9kZSIsInN0YXRlbWVudFByZXNlbnQiLCJpc0Fzc3VtcHRpb25QcmVzZW50QnlBc3N1bXB0aW9uTm9kZSIsImFzc3VtcHRpb25QcmVzZW50IiwiaXNNZXRhdmFyaWFibGVQcmVzZW50QnlNZXRhdmFyaWFibGVOb2RlIiwibWV0YXZhcmlhYmxlbiIsIm1ldGF2YXJpYWJsZW5QcmVzZW50IiwiaW5pdGlhbGlzZSIsImpzb24iLCJzdWJzdGl0dXRpb25zRnJvbUpTT04iLCJ0ZXJtc0Zyb21KU09OIiwic3RhdGVtZW50c0Zyb21KU09OIiwibWV0YXZhcmlhYmxlc0Zyb21KU09OIiwiZXF1YWxpdGllc0Zyb21KU09OIiwibGlua3NGcm9tSlNPTiIsImFzc3VtcHRpb25zRnJvbUpTT04iLCJmcmFtZXNGcm9tSlNPTiIsImFzc2VydGlvbnNGcm9tSlNPTiIsImNvbW1pdCIsInRvSlNPTiIsInRlcm1zSlNPTiIsInRlcm1zVG9UZXJtc0pTT04iLCJsaW5rc0pTT04iLCJsaW5rc1RvTGlua3NKU09OIiwiZnJhbWVzSlNPTiIsImZyYW1lc1RvRnJhbWVzSlNPTiIsImVxdWFsaXRpZXNKU09OIiwiZXF1YWxpdGllc1RvRXF1YWxpdGllc0pTT04iLCJhc3NlcnRpb25zSlNPTiIsImFzc2VydGlvbnNUb0Fzc2VydGlvbnNKU09OIiwic3RhdGVtZW50c0pTT04iLCJzdGF0ZW1lbnRzVG9TdGF0ZW1lbnRzSlNPTiIsImFzc3VtcHRpb25zSlNPTiIsImFzc3VtcHRpb25zVG9Bc3N1bXB0aW9uc0pTT04iLCJtZXRhdmFyaWFibGVzSlNPTiIsIm1ldGF2YXJpYWJsZXNUb01ldGF2YXJpYWJsZXNKU09OIiwic3Vic3RpdHV0aW9uc0pTT04iLCJzdWJzdGl0dXRpb25zVG9TdWJzdGl0dXRpb25zSlNPTiIsImZyb21KU09OIiwibW5lbWljQ29udGV4dCIsImZyb21Ob3RoaW5nIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkEyQkE7OztlQUFxQkE7OzsyQkF6QlU7Z0VBRVg7c0JBbUI2Qjs7Ozs7O0FBRWpELE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxPQUFPLEVBQUUsR0FBR0MseUJBQWM7QUFFekIsTUFBTUgsc0JBQXNCSSxnQkFBTztJQUNoRCxZQUFZQyxPQUFPLEVBQUVDLEtBQUssRUFBRUMsS0FBSyxFQUFFQyxNQUFNLEVBQUVDLFVBQVUsRUFBRUMsVUFBVSxFQUFFQyxVQUFVLEVBQUVDLFdBQVcsRUFBRUMsYUFBYSxFQUFFQyxhQUFhLENBQUU7UUFDeEgsS0FBSyxDQUFDVDtRQUVOLElBQUksQ0FBQ0MsS0FBSyxHQUFHQTtRQUNiLElBQUksQ0FBQ0MsS0FBSyxHQUFHQTtRQUNiLElBQUksQ0FBQ0MsTUFBTSxHQUFHQTtRQUNkLElBQUksQ0FBQ0MsVUFBVSxHQUFHQTtRQUNsQixJQUFJLENBQUNDLFVBQVUsR0FBR0E7UUFDbEIsSUFBSSxDQUFDQyxVQUFVLEdBQUdBO1FBQ2xCLElBQUksQ0FBQ0MsV0FBVyxHQUFHQTtRQUNuQixJQUFJLENBQUNDLGFBQWEsR0FBR0E7UUFDckIsSUFBSSxDQUFDQyxhQUFhLEdBQUdBO0lBQ3ZCO0lBRUFDLFNBQVNULFFBQVEsRUFBRSxFQUFFO1FBQ25CLE1BQU1ELFVBQVUsSUFBSSxDQUFDVyxVQUFVO1FBRS9CZixLQUFLSyxPQUFPLElBQUksQ0FBQ0EsS0FBSztRQUV0QkQsUUFBUVUsUUFBUSxDQUFDVDtRQUVqQixPQUFPQTtJQUNUO0lBRUFXLFNBQVNWLFFBQVEsRUFBRSxFQUFFO1FBQ25CLE1BQU1GLFVBQVUsSUFBSSxDQUFDVyxVQUFVO1FBRS9CZixLQUFLTSxPQUFPLElB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
|
package/lib/context.js
CHANGED
|
@@ -304,4 +304,4 @@ class Context extends _occamlanguages.Context {
|
|
|
304
304
|
}
|
|
305
305
|
}
|
|
306
306
|
|
|
307
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb250ZXh0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBDb250ZXh0IGFzIENvbnRleHRCYXNlIH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDb250ZXh0IGV4dGVuZHMgQ29udGV4dEJhc2Uge1xuICBnZXRMZXhlcigpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgbGV4ZXIgPSBjb250ZXh0LmdldExleGVyKCk7XG5cbiAgICByZXR1cm4gbGV4ZXI7XG4gIH1cblxuICBnZXRQYXJzZXIoKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIHBhcnNlciA9IGNvbnRleHQuZ2V0UGFyc2VyKCk7XG5cbiAgICByZXR1cm4gcGFyc2VyO1xuICB9XG5cbiAgZ2V0RmlsZVBhdGgoKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGZpbGVQYXRoID0gY29udGV4dC5nZXRGaWxlUGF0aCgpO1xuXG4gICAgcmV0dXJuIGZpbGVQYXRoO1xuICB9XG5cbiAgZ2V0VG9rZW5zKCkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICB0b2tlbnMgPSBjb250ZXh0LmdldFRva2VucygpO1xuXG4gICAgcmV0dXJuIHRva2VucztcbiAgfVxuXG4gIHNldFRva2Vucyh0b2tlbnMpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBjb250ZXh0LnNldFRva2Vucyh0b2tlbnMpO1xuICB9XG5cbiAgZ2V0VGVybXModGVybXMgPSBbXSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIGNvbnRleHQuZ2V0VGVybXModGVybXMpO1xuXG4gICAgcmV0dXJuIHRlcm1zO1xuICB9XG5cbiAgZ2V0TGlua3MobGlua3MgPSBbXSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIGNvbnRleHQuZ2V0TGlua3MobGlua3MpO1xuXG4gICAgcmV0dXJuIGxpbmtzO1xuICB9XG5cbiAgZ2V0RnJhbWVzKGZyYW1lcyA9IFtdKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgY29udGV4dC5nZXRGcmFtZXMoZnJhbWVzKTtcblxuICAgIHJldHVybiBmcmFtZXM7XG4gIH1cblxuICBnZXRFcXVhbGl0aWVzKGVxdWFsaXRpZXMgPSBbXSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIGNvbnRleHQuZ2V0RXF1YWxpdGllcyhlcXVhbGl0aWVzKTtcblxuICAgIHJldHVybiBlcXVhbGl0aWVzO1xuICB9XG5cbiAgZ2V0QXNzZXJ0aW9ucyhhc3NlcnRpb25zID0gW10pIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBjb250ZXh0LmdldEFzc2VydGlvbnMoYXNzZXJ0aW9ucyk7XG5cbiAgICByZXR1cm4gYXNzZXJ0aW9ucztcbiAgfVxuXG4gIGdldFN0YXRlbWVudHMoc3RhdGVtZW50cyA9IFtdKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgY29udGV4dC5nZXRTdGF0ZW1lbnRzKHN0YXRlbWVudHMpO1xuXG4gICAgcmV0dXJuIHN0YXRlbWVudHM7XG4gIH1cblxuICBnZXRTaWduYXR1cmVzKHNpZ25hdHVyZXMgPSBbXSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIGNvbnRleHQuZ2V0U2lnbmF0dXJlcyhzaWduYXR1cmVzKTtcblxuICAgIHJldHVybiBzaWduYXR1cmVzO1xuICB9XG5cbiAgZ2V0UmVmZXJlbmNlcyhyZWZlcmVuY2VzID0gW10pIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBjb250ZXh0LmdldFJlZmVyZW5jZXMocmVmZXJlbmNlcyk7XG5cbiAgICByZXR1cm4gcmVmZXJlbmNlcztcbiAgfVxuXG4gIGdldEFzc3VtcHRpb25zKGFzc3VtcHRpb25zID0gW10pIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBjb250ZXh0LmdldEFzc3VtcHRpb25zKGFzc3VtcHRpb25zKTtcblxuICAgIHJldHVybiBhc3N1bXB0aW9ucztcbiAgfVxuXG4gIGdldE1ldGF2YXJpYWJsZXMobWV0YXZhcmlhYmxlcyA9IFtdKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgY29udGV4dC5nZXRNZXRhdmFyaWFibGVzKG1ldGF2YXJpYWJsZXMpO1xuXG4gICAgcmV0dXJuIG1ldGF2YXJpYWJsZXM7XG4gIH1cblxuICBnZXRTdWJzdGl0dXRpb25zKHN1YnN0aXR1dGlvbnMgPSBbXSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIGNvbnRleHQuZ2V0U3Vic3RpdHV0aW9ucyhzdWJzdGl0dXRpb25zKTtcblxuICAgIHJldHVybiBzdWJzdGl0dXRpb25zO1xuICB9XG5cbiAgZ2V0SW5mZXJyZWRTdWJzdGl0dXRpb25zKGluZmVycmVkU3Vic3RpdHV0aW9ucyA9IFtdKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgY29udGV4dC5nZXRJbmZlcnJlZFN1YnN0aXR1dGlvbnMoaW5mZXJyZWRTdWJzdGl0dXRpb25zKTtcblxuICAgIHJldHVybiBpbmZlcnJlZFN1YnN0aXR1dGlvbnM7XG4gIH1cblxuICBnZXRHZW5lcmF0b3JzKGluY2x1ZGVSZWxlYXNlID0gdHJ1ZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBnZW5lcmF0b3JzID0gY29udGV4dC5nZXRHZW5lcmF0b3JzKGluY2x1ZGVSZWxlYXNlKTtcblxuICAgIHJldHVybiBnZW5lcmF0b3JzO1xuICB9XG5cbiAgZ2V0UHJvY2VkdXJlcyhpbmNsdWRlUmVsZWFzZSA9IHRydWUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgcHJvY2VkdXJlcyA9IGNvbnRleHQuZ2V0UHJvY2VkdXJlcyhpbmNsdWRlUmVsZWFzZSk7XG5cbiAgICByZXR1cm4gcHJvY2VkdXJlcztcbiAgfVxuXG4gIGdldENvbWJpbmF0b3JzKGluY2x1ZGVSZWxlYXNlID0gdHJ1ZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBjb21iaW5hdG9ycyA9IGNvbnRleHQuZ2V0Q29tYmluYXRvcnMoaW5jbHVkZVJlbGVhc2UpO1xuXG4gICAgcmV0dXJuIGNvbWJpbmF0b3JzO1xuICB9XG5cbiAgZ2V0Q29uc3RydWN0b3JzKGluY2x1ZGVSZWxlYXNlID0gdHJ1ZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBjb25zdHJ1Y3RvcnMgPSBjb250ZXh0LmdldENvbnN0cnVjdG9ycyhpbmNsdWRlUmVsZWFzZSk7XG5cbiAgICByZXR1cm4gY29uc3RydWN0b3JzO1xuICB9XG5cbiAgZ2V0Q2xhaW0oaW5jbHVkZVJlbGVhc2UgPSB0cnVlKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGNsYWltID0gY29udGV4dC5nZXRDbGFpbShpbmNsdWRlUmVsZWFzZSk7XG5cbiAgICByZXR1cm4gY2xhaW07XG4gIH1cblxuICBnZXRTY2hlbWFzKGluY2x1ZGVSZWxlYXNlID0gdHJ1ZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBzY2hlbWFzID0gY29udGV4dC5nZXRTY2hlbWFzKGluY2x1ZGVSZWxlYXNlKTtcblxuICAgIHJldHVybiBzY2hlbWFzO1xuICB9XG5cbiAgZ2V0VmFyaWFibGVzKG5lc3RlZCkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICB2YXJpYWJsZXMgPSBjb250ZXh0LmdldFZhcmlhYmxlcyhuZXN0ZWQpO1xuXG4gICAgcmV0dXJuIHZhcmlhYmxlcztcbiAgfVxuXG4gIGdldFN0ZXBzKCkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBzdGVwcyA9IGNvbnRleHQuZ2V0U3RlcHMoKTtcblxuICAgIHJldHVybiBzdGVwcztcbiAgfVxuXG4gIGdldEZhY3RzKCkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBmYWN0cyA9IGNvbnRleHQuZ2V0RmFjdHMoKTtcblxuICAgIHJldHVybiBmYWN0cztcbiAgfVxuXG4gIGdldEVxdWl2YWxlbmNlcygpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgZXF1aXZhbGVuY2VzID0gY29udGV4dC5nZXRFcXVpdmFsZW5jZXMoKTtcblxuICAgIHJldHVybiBlcXVpdmFsZW5jZXM7XG4gIH1cblxuICBnZXREZWNsYXJlZFZhcmlhYmxlcyhkZWNsYXJlZFZhcmlhYmxlcyA9IFtdKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgY29udGV4dC5nZXREZWNsYXJlZFZhcmlhYmxlcyhkZWNsYXJlZFZhcmlhYmxlcyk7XG5cbiAgICByZXR1cm4gZGVjbGFyZWRWYXJpYWJsZXM7XG4gIH1cblxuICBnZXREZWNsYXJlZE1ldGF2YXJpYWJsZXMoKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGRlY2xhcmVkTWV0YXZhcmlhYmxlcyA9IGNvbnRleHQuZ2V0RGVjbGFyZWRNZXRhdmFyaWFibGVzKCk7XG5cbiAgICByZXR1cm4gZGVjbGFyZWRNZXRhdmFyaWFibGVzO1xuICB9XG5cbiAgZ2V0RmFjdE9yU3VicHJvb2ZzKCkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBmYWN0T3JTdWJwcm9vZnMgPSBjb250ZXh0LmdldEZhY3RPclN1YnByb29mcygpO1xuXG4gICAgcmV0dXJuIGZhY3RPclN1YnByb29mcztcbiAgfVxuXG4gIGdldFByb3BlcnRpZXMoKSB7XG4gICAgY29uc3QgcHJvcGVydGllcyA9IFtdLFxuICAgICAgICAgIHR5cGVzID0gdGhpcy5nZXRUeXBlcygpO1xuXG4gICAgdHlwZXMuZm9yRWFjaCgodHlwZSkgPT4ge1xuICAgICAgdHlwZS5nZXRQcm9wZXJ0aWVzKHByb3BlcnRpZXMpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHByb3BlcnRpZXM7XG4gIH1cblxuICBnZXRUeXBlcygpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgdHlwZXMgPSBjb250ZXh0LmdldFR5cGVzKCk7XG5cbiAgICByZXR1cm4gdHlwZXM7XG4gIH1cblxuICBmaW5kUnVsZUJ5UmVmZXJlbmNlKHJlZmVyZW5jZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBydWxlID0gY29udGV4dC5maW5kUnVsZUJ5UmVmZXJlbmNlKHJlZmVyZW5jZSk7XG5cbiAgICByZXR1cm4gcnVsZTtcbiAgfVxuXG4gIGZpbmRBeGlvbUJ5TGluayhsaW5rKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGF4aW9tID0gY29udGV4dC5maW5kQXhpb21CeUxpbmsobGluayk7XG5cbiAgICByZXR1cm4gYXhpb207XG4gIH1cblxuICBmaW5kQ2xhaW1CeVJlZmVyZW5jZShyZWZlcmVuY2UpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgY2xhaW0gPSBjb250ZXh0LmZpbmRDbGFpbUJ5UmVmZXJlbmNlKHJlZmVyZW5jZSk7XG5cbiAgICByZXR1cm4gY2xhaW07XG4gIH1cblxuICBmaW5kVGVybUJ5VGVybU5vZGUodGVybU5vZGUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICB0ZXJtID0gY29udGV4dC5maW5kVGVybUJ5VGVybU5vZGUodGVybU5vZGUpO1xuXG4gICAgcmV0dXJuIHRlcm07XG4gIH1cblxuICBmaW5kTGlua0J5TGlua05vZGUobGlua05vZGUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgdGVybSA9IGNvbnRleHQuZmluZExpbmtCeUxpbmtOb2RlKGxpbmtOb2RlKTtcblxuICAgIHJldHVybiB0ZXJtO1xuICB9XG5cbiAgZmluZEZyYW1lQnlGcmFtZU5vZGUoZnJhbWVOb2RlKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGZyYW1lID0gY29udGV4dC5maW5kRnJhbWVCeUZyYW1lTm9kZShmcmFtZU5vZGUpO1xuXG4gICAgcmV0dXJuIGZyYW1lO1xuICB9XG5cbiAgZmluZEVxdWFsaXR5QnlFcXVhbGl0eU5vZGUoZXF1YWxpdHlOb2RlKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGVxdWFsaXR5ID0gY29udGV4dC5maW5kRXF1YWxpdHlCeUVxdWFsaXR5Tm9kZShlcXVhbGl0eU5vZGUpO1xuXG4gICAgcmV0dXJuIGVxdWFsaXR5O1xuICB9XG5cbiAgZmluZEFzc2VydGlvbkJ5QXNzZXJ0aW9uTm9kZShhc3NlcnRpb25Ob2RlKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGFzc2VydGlvbiA9IGNvbnRleHQuZmluZEFzc2VydGlvbkJ5QXNzZXJ0aW9uTm9kZShhc3NlcnRpb25Ob2RlKTtcblxuICAgIHJldHVybiBhc3NlcnRpb247XG4gIH1cblxuICBmaW5kU3RhdGVtZW50QnlTdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgc3RhdGVtZW50ID0gY29udGV4dC5maW5kU3RhdGVtZW50QnlTdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUpO1xuXG4gICAgcmV0dXJuIHN0YXRlbWVudDtcbiAgfVxuXG4gIGZpbmRBc3N1bXB0aW9uQnlBc3N1bXB0aW9uTm9kZShhc3N1bXB0aW9uTm9kZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBhc3N1bXB0aW9uID0gY29udGV4dC5maW5kQXNzdW1wdGlvbkJ5QXNzdW1wdGlvbk5vZGUoYXNzdW1wdGlvbk5vZGUpO1xuXG4gICAgcmV0dXJuIGFzc3VtcHRpb247XG4gIH1cblxuICBmaW5kUmVmZXJlbmNlQnlNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgcmVmZXJlbmNlID0gY29udGV4dC5maW5kUmVmZXJlbmNlQnlNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpO1xuXG4gICAgcmV0dXJuIHJlZmVyZW5jZTtcbiAgfVxuXG4gIGZpbmRNZXRhdmFyaWFibGVCeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBtZXRhdmFyaWFibGUgPSBjb250ZXh0LmZpbmRNZXRhdmFyaWFibGVCeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSk7XG5cbiAgICByZXR1cm4gbWV0YXZhcmlhYmxlO1xuICB9XG5cbiAgZmluZFN1YnN0aXR1dGlvbkJ5U3Vic3RpdHV0aW9uTm9kZShzdWJzdGl0dXRpb25Ob2RlKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIHN1YnN0aXR1dGlvbiA9IGNvbnRleHQuZmluZFN1YnN0aXR1dGlvbkJ5U3Vic3RpdHV0aW9uTm9kZShzdWJzdGl0dXRpb25Ob2RlKTtcblxuICAgIHJldHVybiBzdWJzdGl0dXRpb247XG4gIH1cblxuICBmaW5kSW5mZXJyZWRTdWJzdGl0dXRpb25CeVZhcmlhYmxlTm9kZSh2YXJpYWJsZU5vZGUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgaW5mZXJyZWRTdWJzdGl0dXRpb24gPSBjb250ZXh0LmZpbmRJbmZlcnJlZFN1YnN0aXR1dGlvbkJ5VmFyaWFibGVOb2RlKHZhcmlhYmxlTm9kZSk7XG5cbiAgICByZXR1cm4gaW5mZXJyZWRTdWJzdGl0dXRpb247XG4gIH1cblxuICBmaW5kSW5mZXJyZWRTdWJzdGl0dXRpb25CeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBpbmZlcnJlZFN1YnN0aXR1dGlvbiA9IGNvbnRleHQuZmluZEluZmVycmVkU3Vic3RpdHV0aW9uQnlNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpO1xuXG4gICAgcmV0dXJuIGluZmVycmVkU3Vic3RpdHV0aW9uO1xuICB9XG5cbiAgZmluZENvbnN0cmFpbnRCeUNvbnN0cmFpbnROb2RlKGNvbnN0cmFpbnROb2RlKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGNvbnN0cmFpbnQgPSBjb250ZXh0LmZpbmRDb25zdHJhaW50QnlDb25zdHJhaW50Tm9kZShjb25zdHJhaW50Tm9kZSk7XG5cbiAgICByZXR1cm4gY29uc3RyYWludDtcbiAgfVxuXG4gIGZpbmRUeXBlQnlUeXBlTmFtZSh0eXBlTmFtZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgIHR5cGUgPSBjb250ZXh0LmZpbmRUeXBlQnlUeXBlTmFtZSh0eXBlTmFtZSk7XG5cbiAgICByZXR1cm4gdHlwZTtcbiAgfVxuXG4gIGZpbmRUeXBlQnlOb21pbmFsVHlwZU5hbWUobm9taW5hbFR5cGVOYW1lKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIHR5cGUgPSBjb250ZXh0LmZpbmRUeXBlQnlOb21pbmFsVHlwZU5hbWUobm9taW5hbFR5cGVOYW1lKTtcblxuICAgIHJldHVybiB0eXBlO1xuICB9XG5cbiAgZmluZE1ldGFUeXBlQnlNZXRhVHlwZU5hbWUobWV0YVR5cGVOYW1lKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIG1ldGFUeXBlID0gY29udGV4dC5maW5kTWV0YVR5cGVCeU1ldGFUeXBlTmFtZShtZXRhVHlwZU5hbWUpO1xuXG4gICAgcmV0dXJuIG1ldGFUeXBlO1xuICB9XG5cbiAgZmluZFByb2NlZHVyZUJ5UHJvY2VkdXJlTmFtZShwcm9jZWR1cmVOYW1lKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIHByb2NlZHVyZSA9IGNvbnRleHQuZmluZFByb2NlZHVyZUJ5UHJvY2VkdXJlTmFtZShwcm9jZWR1cmVOYW1lKTtcblxuICAgIHJldHVybiBwcm9jZWR1cmU7XG4gIH1cblxuICBmaW5kRGVjbGFyZWRWYXJpYWJsZUJ5VmFyaWFibGVJZGVudGlmaWVyKHZhcmlhYmxlSWRlbnRpZmllcikge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBkZWNsYXJlZFZhcmlhYmxlID0gY29udGV4dC5maW5kRGVjbGFyZWRWYXJpYWJsZUJ5VmFyaWFibGVJZGVudGlmaWVyKHZhcmlhYmxlSWRlbnRpZmllcik7XG5cbiAgICByZXR1cm4gZGVjbGFyZWRWYXJpYWJsZTtcbiAgfVxuXG4gIGZpbmREZWNsYXJlZFZhcmlhYmxlc0J5VmFyaWFibGVJZGVudGlmaWVyKHZhcmlhYmxlSWRlbnRpZmllcikge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBkZWNsYXJlZFZhcmlhYmxlcyA9IGNvbnRleHQuZmluZERlY2xhcmVkVmFyaWFibGVzQnlWYXJpYWJsZUlkZW50aWZpZXIodmFyaWFibGVJZGVudGlmaWVyKTtcblxuICAgIHJldHVybiBkZWNsYXJlZFZhcmlhYmxlcztcbiAgfVxuXG4gIGZpbmREZWNsYXJlZE1ldGF2YXJpYWJsZUJ5TWV0YXZhcmlhYmxlTmFtZShtZXRhdmFyaWFibGVOYW1lKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGRlY2xhcmVkTWV0YXZhcmlhYmxlID0gY29udGV4dC5maW5kRGVjbGFyZWRNZXRhdmFyaWFibGVCeU1ldGF2YXJpYWJsZU5hbWUobWV0YXZhcmlhYmxlTmFtZSk7XG5cbiAgICByZXR1cm4gZGVjbGFyZWRNZXRhdmFyaWFibGU7XG4gIH1cblxuICBpc1Rlcm1QcmVzZW50QnlUZXJtTm9kZSh0ZXJtTm9kZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgIHRlcm1QcmVzZW50ID0gY29udGV4dC5pc1Rlcm1QcmVzZW50QnlUZXJtTm9kZSh0ZXJtTm9kZSk7XG5cbiAgICByZXR1cm4gdGVybVByZXNlbnQ7XG4gIH1cblxuICBpc0xhYmVsUHJlc2VudEJ5TGFiZWxOb2RlKGxhYmVsTm9kZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBsYWJlbFByZXNlbnQgPSBjb250ZXh0LmlzTGFiZWxQcmVzZW50QnlMYWJlbE5vZGUobGFiZWxOb2RlKTtcblxuICAgIHJldHVybiBsYWJlbFByZXNlbnQ7XG4gIH1cblxuICBpc0ZyYW1lUHJlc2VudEJ5RnJhbWVOb2RlKGZyYW1lTm9kZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBmcmFtZVByZXNlbnQgPSBjb250ZXh0LmlzRnJhbWVQcmVzZW50QnlGcmFtZU5vZGUoZnJhbWVOb2RlKTtcblxuICAgIHJldHVybiBmcmFtZVByZXNlbnQ7XG4gIH1cblxuICBpc0VxdWFsaXR5UHJlc2VudEJ5RXF1YWxpdHlOb2RlKGVxdWFsaXR5Tm9kZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBlcXVhbGl0eVByZXNlbnQgPSBjb250ZXh0LmlzRXF1YWxpdHlQcmVzZW50QnlFcXVhbGl0eU5vZGUoZXF1YWxpdHlOb2RlKTtcblxuICAgIHJldHVybiBlcXVhbGl0eVByZXNlbnQ7XG4gIH1cblxuICBpc0Fzc2VydGlvblByZXNlbnRCeUFzc2VydGlvbk5vZGUoYXNzZXJ0aW9uTm9kZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBhc3NlcnRpb25QcmVzZW50ID0gY29udGV4dC5pc0Fzc2VydGlvblByZXNlbnRCeUFzc2VydGlvbk5vZGUoYXNzZXJ0aW9uTm9kZSk7XG5cbiAgICByZXR1cm4gYXNzZXJ0aW9uUHJlc2VudDtcbiAgfVxuXG4gIGlzU3RhdGVtZW50UHJlc2VudEJ5U3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIHN0YXRlbWVudFByZXNlbnQgPSBjb250ZXh0LmlzU3RhdGVtZW50UHJlc2VudEJ5U3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlKTtcblxuICAgIHJldHVybiBzdGF0ZW1lbnRQcmVzZW50O1xuICB9XG5cbiAgaXNNZXRhdmFyaWFibGVQcmVzZW50QnlNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgbWV0YXZhcmlhYmxlUHJlc2VudCA9IGNvbnRleHQuaXNNZXRhdmFyaWFibGVQcmVzZW50QnlNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpO1xuXG4gICAgcmV0dXJuIG1ldGF2YXJpYWJsZVByZXNlbnQ7XG4gIH1cblxuICBpc1R5cGVQcmVzZW50QnlOb21pbmFsVHlwZU5hbWUobm9taW5hbFR5cGVOYW1lKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIHR5cGVQcmVzZW50ID0gY29udGV4dC5pc1R5cGVQcmVzZW50QnlOb21pbmFsVHlwZU5hbWUobm9taW5hbFR5cGVOYW1lKTtcblxuICAgIHJldHVybiB0eXBlUHJlc2VudDtcbiAgfVxuXG4gIGlzUHJvY2VkdXJlUHJlc2VudEJ5UHJvY2VkdXJlTmFtZShwcm9jZWR1cmVOYW1lKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIHByb2NlZHVyZVByZXNlbnQgPSBjb250ZXh0LmlzUHJvY2VkdXJlUHJlc2VudEJ5UHJvY2VkdXJlTmFtZShwcm9jZWR1cmVOYW1lKTtcblxuICAgIHJldHVybiBwcm9jZWR1cmVQcmVzZW50O1xuICB9XG5cbiAgaXNEZWNsYXJlZE1ldGF2YXJpYWJsZVByZXNlbnRCeU1ldGF2YXJpYWJsZU5hbWUobWV0YXZhcmlhYmxlTmFtZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBtZXRhdmFyaWFibGVQcmVzZW50ID0gY29udGV4dC5pc0RlY2xhcmVkTWV0YXZhcmlhYmxlUHJlc2VudEJ5TWV0YXZhcmlhYmxlTmFtZShtZXRhdmFyaWFibGVOYW1lKTtcblxuICAgIHJldHVybiBtZXRhdmFyaWFibGVQcmVzZW50O1xuICB9XG5cbiAgaXNSZWZlcmVuY2VQcmVzZW50QnlNZXRhdmFyaWFibGVOb2RlKG1ldHZ2YXJpYWJsZU5vZGUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgcmVmZXJlbmNlUHJlc2VudCA9IGNvbnRleHQuaXNSZWZlcmVuY2VQcmVzZW50QnlNZXRhdmFyaWFibGVOb2RlKG1ldHZ2YXJpYWJsZU5vZGUpO1xuXG4gICAgcmV0dXJuIHJlZmVyZW5jZVByZXNlbnQ7XG4gIH1cblxuICBpc0luZmVycmVkU3Vic3RpdHV0aW9uUHJlc2VudEJ5TWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGluZmVycmVkU3Vic3RpdHV0aW9uUHJlc2VudCA9IGNvbnRleHQuaXNJbmZlcnJlZFN1YnN0aXR1dGlvblByZXNlbnRCeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSk7XG5cbiAgICByZXR1cm4gaW5mZXJyZWRTdWJzdGl0dXRpb25QcmVzZW50O1xuICB9XG5cbiAgaXNJbmZlcnJlZFN1YnN0aXR1dGlvblByZXNlbnRCeU1ldGF2YXJpYWJsZU5vZGVBbmRTdWJzdGl0dXRpb25Ob2RlKG1ldGF2YXJpYWJsZU5vZGUsIHN1YnN0aXR1dGlvbk5vZGUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgaW5mZXJyZWRTdWJzdGl0dXRpb25QcmVzZW50ID0gY29udGV4dC5pc0luZmVycmVkU3Vic3RpdHV0aW9uUHJlc2VudEJ5TWV0YXZhcmlhYmxlTm9kZUFuZFN1YnN0aXR1dGlvbk5vZGUobWV0YXZhcmlhYmxlTm9kZSwgc3Vic3RpdHV0aW9uTm9kZSk7XG5cbiAgICByZXR1cm4gaW5mZXJyZWRTdWJzdGl0dXRpb25QcmVzZW50O1xuICB9XG5cbiAgaXNNZXRhTGV2ZWwoKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIG1ldGFMZXZlbCA9IGNvbnRleHQuaXNNZXRhTGV2ZWwoKTtcblxuICAgIHJldHVybiBtZXRhTGV2ZWw7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJDb250ZXh0IiwiQ29udGV4dEJhc2UiLCJnZXRMZXhlciIsImNvbnRleHQiLCJnZXRDb250ZXh0IiwibGV4ZXIiLCJnZXRQYXJzZXIiLCJwYXJzZXIiLCJnZXRGaWxlUGF0aCIsImZpbGVQYXRoIiwiZ2V0VG9rZW5zIiwidG9rZW5zIiwic2V0VG9rZW5zIiwiZ2V0VGVybXMiLCJ0ZXJtcyIsImdldExpbmtzIiwibGlua3MiLCJnZXRGcmFtZXMiLCJmcmFtZXMiLCJnZXRFcXVhbGl0aWVzIiwiZXF1YWxpdGllcyIsImdldEFzc2VydGlvbnMiLCJhc3NlcnRpb25zIiwiZ2V0U3RhdGVtZW50cyIsInN0YXRlbWVudHMiLCJnZXRTaWduYXR1cmVzIiwic2lnbmF0dXJlcyIsImdldFJlZmVyZW5jZXMiLCJyZWZlcmVuY2VzIiwiZ2V0QXNzdW1wdGlvbnMiLCJhc3N1bXB0aW9ucyIsImdldE1ldGF2YXJpYWJsZXMiLCJtZXRhdmFyaWFibGVzIiwiZ2V0U3Vic3RpdHV0aW9ucyIsInN1YnN0aXR1dGlvbnMiLCJnZXRJbmZlcnJlZFN1YnN0aXR1dGlvbnMiLCJpbmZlcnJlZFN1YnN0aXR1dGlvbnMiLCJnZXRHZW5lcmF0b3JzIiwiaW5jbHVkZVJlbGVhc2UiLCJnZW5lcmF0b3JzIiwiZ2V0UHJvY2VkdXJlcyIsInByb2NlZHVyZXMiLCJnZXRDb21iaW5hdG9ycyIsImNvbWJpbmF0b3JzIiwiZ2V0Q29uc3RydWN0b3JzIiwiY29uc3RydWN0b3JzIiwiZ2V0Q2xhaW0iLCJjbGFpbSIsImdldFNjaGVtYXMiLCJzY2hlbWFzIiwiZ2V0VmFyaWFibGVzIiwibmVzdGVkIiwidmFyaWFibGVzIiwiZ2V0U3RlcHMiLCJzdGVwcyIsImdldEZhY3RzIiwiZmFjdHMiLCJnZXRFcXVpdmFsZW5jZXMiLCJlcXVpdmFsZW5jZXMiLCJnZXREZWNsYXJlZFZhcmlhYmxlcyIsImRlY2xhcmVkVmFyaWFibGVzIiwiZ2V0RGVjbGFyZWRNZXRhdmFyaWFibGVzIiwiZGVjbGFyZWRNZXRhdmFyaWFibGVzIiwiZ2V0RmFjdE9yU3VicHJvb2ZzIiwiZmFjdE9yU3VicHJvb2ZzIiwiZ2V0UHJvcGVydGllcyIsInByb3BlcnRpZXMiLCJ0eXBlcyIsImdldFR5cGVzIiwiZm9yRWFjaCIsInR5cGUiLCJmaW5kUnVsZUJ5UmVmZXJlbmNlIiwicmVmZXJlbmNlIiwicnVsZSIsImZpbmRBeGlvbUJ5TGluayIsImxpbmsiLCJheGlvbSIsImZpbmRDbGFpbUJ5UmVmZXJlbmNlIiwiZmluZFRlcm1CeVRlcm1Ob2RlIiwidGVybU5vZGUiLCJ0ZXJtIiwiZmluZExpbmtCeUxpbmtOb2RlIiwibGlua05vZGUiLCJmaW5kRnJhbWVCeUZyYW1lTm9kZSIsImZyYW1lTm9kZSIsImZyYW1lIiwiZmluZEVxdWFsaXR5QnlFcXVhbGl0eU5vZGUiLCJlcXVhbGl0eU5vZGUiLCJlcXVhbGl0eSIsImZpbmRBc3NlcnRpb25CeUFzc2VydGlvbk5vZGUiLCJhc3NlcnRpb25Ob2RlIiwiYXNzZXJ0aW9uIiwiZmluZFN0YXRlbWVudEJ5U3RhdGVtZW50Tm9kZSIsInN0YXRlbWVudE5vZGUiLCJzdGF0ZW1lbnQiLCJmaW5kQXNzdW1wdGlvbkJ5QXNzdW1wdGlvbk5vZGUiLCJhc3N1bXB0aW9uTm9kZSIsImFzc3VtcHRpb24iLCJmaW5kUmVmZXJlbmNlQnlNZXRhdmFyaWFibGVOb2RlIiwibWV0YXZhcmlhYmxlTm9kZSIsImZpbmRNZXRhdmFyaWFibGVCeU1ldGF2YXJpYWJsZU5vZGUiLCJtZXRhdmFyaWFibGUiLCJmaW5kU3Vic3RpdHV0aW9uQnlTdWJzdGl0dXRpb25Ob2RlIiwic3Vic3RpdHV0aW9uTm9kZSIsInN1YnN0aXR1dGlvbiIsImZpbmRJbmZlcnJlZFN1YnN0aXR1dGlvbkJ5VmFyaWFibGVOb2RlIiwidmFyaWFibGVOb2RlIiwiaW5mZXJyZWRTdWJzdGl0dXRpb24iLCJmaW5kSW5mZXJyZWRTdWJzdGl0dXRpb25CeU1ldGF2YXJpYWJsZU5vZGUiLCJmaW5kQ29uc3RyYWludEJ5Q29uc3RyYWludE5vZGUiLCJjb25zdHJhaW50Tm9kZSIsImNvbnN0cmFpbnQiLCJmaW5kVHlwZUJ5VHlwZU5hbWUiLCJ0eXBlTmFtZSIsImZpbmRUeXBlQnlOb21pbmFsVHlwZU5hbWUiLCJub21pbmFsVHlwZU5hbWUiLCJmaW5kTWV0YVR5cGVCeU1ldGFUeXBlTmFtZSIsIm1ldGFUeXBlTmFtZSIsIm1ldGFUeXBlIiwiZmluZFByb2NlZHVyZUJ5UHJvY2VkdXJlTmFtZSIsInByb2NlZHVyZU5hbWUiLCJwcm9jZWR1cmUiLCJmaW5kRGVjbGFyZWRWYXJpYWJsZUJ5VmFyaWFibGVJZGVudGlmaWVyIiwidmFyaWFibGVJZGVudGlmaWVyIiwiZGVjbGFyZWRWYXJpYWJsZSIsImZpbmREZWNsYXJlZFZhcmlhYmxlc0J5VmFyaWFibGVJZGVudGlmaWVyIiwiZmluZERlY2xhcmVkTWV0YXZhcmlhYmxlQnlNZXRhdmFyaWFibGVOYW1lIiwibWV0YXZhcmlhYmxlTmFtZSIsImRlY2xhcmVkTWV0YXZhcmlhYmxlIiwiaXNUZXJtUHJlc2VudEJ5VGVybU5vZGUiLCJ0ZXJtUHJlc2VudCIsImlzTGFiZWxQcmVzZW50QnlMYWJlbE5vZGUiLCJsYWJlbE5vZGUiLCJsYWJlbFByZXNlbnQiLCJpc0ZyYW1lUHJlc2VudEJ5RnJhbWVOb2RlIiwiZnJhbWVQcmVzZW50IiwiaXNFcXVhbGl0eVByZXNlbnRCeUVxdWFsaXR5Tm9kZSIsImVxdWFsaXR5UHJlc2VudCIsImlzQXNzZXJ0aW9uUHJlc2VudEJ5QXNzZXJ0aW9uTm9kZSIsImFzc2VydGlvblByZXNlbnQiLCJpc1N0YXRlbWVudFByZXNlbnRCeVN0YXRlbWVudE5vZGUiLCJzdGF0ZW1lbnRQcmVzZW50IiwiaXNNZXRhdmFyaWFibGVQcmVzZW50QnlNZXRhdmFyaWFibGVOb2RlIiwibWV0YXZhcmlhYmxlUHJlc2VudCIsImlzVHlwZVByZXNlbnRCeU5vbWluYWxUeXBlTmFtZSIsInR5cGVQcmVzZW50IiwiaXNQcm9jZWR1cmVQcmVzZW50QnlQcm9jZWR1cmVOYW1lIiwicHJvY2VkdXJlUHJlc2VudCIsImlzRGVjbGFyZWRNZXRhdmFyaWFibGVQcmVzZW50QnlNZXRhdmFyaWFibGVOYW1lIiwiaXNSZWZlcmVuY2VQcmVzZW50QnlNZXRhdmFyaWFibGVOb2RlIiwibWV0dnZhcmlhYmxlTm9kZSIsInJlZmVyZW5jZVByZXNlbnQiLCJpc0luZmVycmVkU3Vic3RpdHV0aW9uUHJlc2VudEJ5TWV0YXZhcmlhYmxlTm9kZSIsImluZmVycmVkU3Vic3RpdHV0aW9uUHJlc2VudCIsImlzSW5mZXJyZWRTdWJzdGl0dXRpb25QcmVzZW50QnlNZXRhdmFyaWFibGVOb2RlQW5kU3Vic3RpdHV0aW9uTm9kZSIsImlzTWV0YUxldmVsIiwibWV0YUxldmVsIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFJQTs7O2VBQXFCQTs7O2dDQUZrQjtBQUV4QixNQUFNQSxnQkFBZ0JDLHVCQUFXO0lBQzlDQyxXQUFXO1FBQ1QsTUFBTUMsVUFBVSxJQUFJLENBQUNDLFVBQVUsSUFDekJDLFFBQVFGLFFBQVFELFFBQVE7UUFFOUIsT0FBT0c7SUFDVDtJQUVBQyxZQUFZO1FBQ1YsTUFBTUgsVUFBVSxJQUFJLENBQUNDLFVBQVUsSUFDekJHLFNBQVNKLFFBQVFHLFNBQVM7UUFFaEMsT0FBT0M7SUFDVDtJQUVBQyxjQUFjO1FBQ1osTUFBTUwsVUFBVSxJQUFJLENBQUNDLFVBQVUsSUFDekJLLFdBQVdOLFFBQVFLLFdBQVc7UUFFcEMsT0FBT0M7SUFDVDtJQUVBQyxZQUFZO1FBQ1YsTUFBTVAsVUFBVSxJQUFJLENBQUNDLFVBQVUsSUFDekJPLFNBQVNSLFFBQVFPLFNBQVM7UUFFaEMsT0FBT0M7SUFDVDtJQUVBQyxVQUFVRCxN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
|
|
307
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb250ZXh0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBDb250ZXh0IGFzIENvbnRleHRCYXNlIH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDb250ZXh0IGV4dGVuZHMgQ29udGV4dEJhc2Uge1xuICBnZXRMZXhlcigpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgbGV4ZXIgPSBjb250ZXh0LmdldExleGVyKCk7XG5cbiAgICByZXR1cm4gbGV4ZXI7XG4gIH1cblxuICBnZXRQYXJzZXIoKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIHBhcnNlciA9IGNvbnRleHQuZ2V0UGFyc2VyKCk7XG5cbiAgICByZXR1cm4gcGFyc2VyO1xuICB9XG5cbiAgZ2V0RmlsZVBhdGgoKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGZpbGVQYXRoID0gY29udGV4dC5nZXRGaWxlUGF0aCgpO1xuXG4gICAgcmV0dXJuIGZpbGVQYXRoO1xuICB9XG5cbiAgZ2V0VG9rZW5zKCkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICB0b2tlbnMgPSBjb250ZXh0LmdldFRva2VucygpO1xuXG4gICAgcmV0dXJuIHRva2VucztcbiAgfVxuXG4gIHNldFRva2Vucyh0b2tlbnMpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBjb250ZXh0LnNldFRva2Vucyh0b2tlbnMpO1xuICB9XG5cbiAgZ2V0VGVybXModGVybXMgPSBbXSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIGNvbnRleHQuZ2V0VGVybXModGVybXMpO1xuXG4gICAgcmV0dXJuIHRlcm1zO1xuICB9XG5cbiAgZ2V0TGlua3MobGlua3MgPSBbXSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIGNvbnRleHQuZ2V0TGlua3MobGlua3MpO1xuXG4gICAgcmV0dXJuIGxpbmtzO1xuICB9XG5cbiAgZ2V0RnJhbWVzKGZyYW1lcyA9IFtdKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgY29udGV4dC5nZXRGcmFtZXMoZnJhbWVzKTtcblxuICAgIHJldHVybiBmcmFtZXM7XG4gIH1cblxuICBnZXRFcXVhbGl0aWVzKGVxdWFsaXRpZXMgPSBbXSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIGNvbnRleHQuZ2V0RXF1YWxpdGllcyhlcXVhbGl0aWVzKTtcblxuICAgIHJldHVybiBlcXVhbGl0aWVzO1xuICB9XG5cbiAgZ2V0QXNzZXJ0aW9ucyhhc3NlcnRpb25zID0gW10pIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBjb250ZXh0LmdldEFzc2VydGlvbnMoYXNzZXJ0aW9ucyk7XG5cbiAgICByZXR1cm4gYXNzZXJ0aW9ucztcbiAgfVxuXG4gIGdldFN0YXRlbWVudHMoc3RhdGVtZW50cyA9IFtdKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgY29udGV4dC5nZXRTdGF0ZW1lbnRzKHN0YXRlbWVudHMpO1xuXG4gICAgcmV0dXJuIHN0YXRlbWVudHM7XG4gIH1cblxuICBnZXRTaWduYXR1cmVzKHNpZ25hdHVyZXMgPSBbXSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIGNvbnRleHQuZ2V0U2lnbmF0dXJlcyhzaWduYXR1cmVzKTtcblxuICAgIHJldHVybiBzaWduYXR1cmVzO1xuICB9XG5cbiAgZ2V0UmVmZXJlbmNlcyhyZWZlcmVuY2VzID0gW10pIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBjb250ZXh0LmdldFJlZmVyZW5jZXMocmVmZXJlbmNlcyk7XG5cbiAgICByZXR1cm4gcmVmZXJlbmNlcztcbiAgfVxuXG4gIGdldEFzc3VtcHRpb25zKGFzc3VtcHRpb25zID0gW10pIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBjb250ZXh0LmdldEFzc3VtcHRpb25zKGFzc3VtcHRpb25zKTtcblxuICAgIHJldHVybiBhc3N1bXB0aW9ucztcbiAgfVxuXG4gIGdldE1ldGF2YXJpYWJsZXMobWV0YXZhcmlhYmxlcyA9IFtdKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgY29udGV4dC5nZXRNZXRhdmFyaWFibGVzKG1ldGF2YXJpYWJsZXMpO1xuXG4gICAgcmV0dXJuIG1ldGF2YXJpYWJsZXM7XG4gIH1cblxuICBnZXRTdWJzdGl0dXRpb25zKHN1YnN0aXR1dGlvbnMgPSBbXSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIGNvbnRleHQuZ2V0U3Vic3RpdHV0aW9ucyhzdWJzdGl0dXRpb25zKTtcblxuICAgIHJldHVybiBzdWJzdGl0dXRpb25zO1xuICB9XG5cbiAgZ2V0SW5mZXJyZWRTdWJzdGl0dXRpb25zKGluZmVycmVkU3Vic3RpdHV0aW9ucyA9IFtdKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgY29udGV4dC5nZXRJbmZlcnJlZFN1YnN0aXR1dGlvbnMoaW5mZXJyZWRTdWJzdGl0dXRpb25zKTtcblxuICAgIHJldHVybiBpbmZlcnJlZFN1YnN0aXR1dGlvbnM7XG4gIH1cblxuICBnZXRHZW5lcmF0b3JzKGluY2x1ZGVSZWxlYXNlID0gdHJ1ZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBnZW5lcmF0b3JzID0gY29udGV4dC5nZXRHZW5lcmF0b3JzKGluY2x1ZGVSZWxlYXNlKTtcblxuICAgIHJldHVybiBnZW5lcmF0b3JzO1xuICB9XG5cbiAgZ2V0UHJvY2VkdXJlcyhpbmNsdWRlUmVsZWFzZSA9IHRydWUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgcHJvY2VkdXJlcyA9IGNvbnRleHQuZ2V0UHJvY2VkdXJlcyhpbmNsdWRlUmVsZWFzZSk7XG5cbiAgICByZXR1cm4gcHJvY2VkdXJlcztcbiAgfVxuXG4gIGdldENvbWJpbmF0b3JzKGluY2x1ZGVSZWxlYXNlID0gdHJ1ZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBjb21iaW5hdG9ycyA9IGNvbnRleHQuZ2V0Q29tYmluYXRvcnMoaW5jbHVkZVJlbGVhc2UpO1xuXG4gICAgcmV0dXJuIGNvbWJpbmF0b3JzO1xuICB9XG5cbiAgZ2V0Q29uc3RydWN0b3JzKGluY2x1ZGVSZWxlYXNlID0gdHJ1ZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBjb25zdHJ1Y3RvcnMgPSBjb250ZXh0LmdldENvbnN0cnVjdG9ycyhpbmNsdWRlUmVsZWFzZSk7XG5cbiAgICByZXR1cm4gY29uc3RydWN0b3JzO1xuICB9XG5cbiAgZ2V0Q2xhaW0oaW5jbHVkZVJlbGVhc2UgPSB0cnVlKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGNsYWltID0gY29udGV4dC5nZXRDbGFpbShpbmNsdWRlUmVsZWFzZSk7XG5cbiAgICByZXR1cm4gY2xhaW07XG4gIH1cblxuICBnZXRTY2hlbWFzKGluY2x1ZGVSZWxlYXNlID0gdHJ1ZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBzY2hlbWFzID0gY29udGV4dC5nZXRTY2hlbWFzKGluY2x1ZGVSZWxlYXNlKTtcblxuICAgIHJldHVybiBzY2hlbWFzO1xuICB9XG5cbiAgZ2V0VmFyaWFibGVzKG5lc3RlZCkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICB2YXJpYWJsZXMgPSBjb250ZXh0LmdldFZhcmlhYmxlcyhuZXN0ZWQpO1xuXG4gICAgcmV0dXJuIHZhcmlhYmxlcztcbiAgfVxuXG4gIGdldFN0ZXBzKCkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBzdGVwcyA9IGNvbnRleHQuZ2V0U3RlcHMoKTtcblxuICAgIHJldHVybiBzdGVwcztcbiAgfVxuXG4gIGdldEZhY3RzKCkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBmYWN0cyA9IGNvbnRleHQuZ2V0RmFjdHMoKTtcblxuICAgIHJldHVybiBmYWN0cztcbiAgfVxuXG4gIGdldEVxdWl2YWxlbmNlcygpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgZXF1aXZhbGVuY2VzID0gY29udGV4dC5nZXRFcXVpdmFsZW5jZXMoKTtcblxuICAgIHJldHVybiBlcXVpdmFsZW5jZXM7XG4gIH1cblxuICBnZXREZWNsYXJlZFZhcmlhYmxlcyhkZWNsYXJlZFZhcmlhYmxlcyA9IFtdKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgY29udGV4dC5nZXREZWNsYXJlZFZhcmlhYmxlcyhkZWNsYXJlZFZhcmlhYmxlcyk7XG5cbiAgICByZXR1cm4gZGVjbGFyZWRWYXJpYWJsZXM7XG4gIH1cblxuICBnZXREZWNsYXJlZE1ldGF2YXJpYWJsZXMoKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGRlY2xhcmVkTWV0YXZhcmlhYmxlcyA9IGNvbnRleHQuZ2V0RGVjbGFyZWRNZXRhdmFyaWFibGVzKCk7XG5cbiAgICByZXR1cm4gZGVjbGFyZWRNZXRhdmFyaWFibGVzO1xuICB9XG5cbiAgZ2V0RmFjdE9yU3VicHJvb2ZzKCkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBmYWN0T3JTdWJwcm9vZnMgPSBjb250ZXh0LmdldEZhY3RPclN1YnByb29mcygpO1xuXG4gICAgcmV0dXJuIGZhY3RPclN1YnByb29mcztcbiAgfVxuXG4gIGdldFByb3BlcnRpZXMoKSB7XG4gICAgY29uc3QgcHJvcGVydGllcyA9IFtdLFxuICAgICAgICAgIHR5cGVzID0gdGhpcy5nZXRUeXBlcygpO1xuXG4gICAgdHlwZXMuZm9yRWFjaCgodHlwZSkgPT4ge1xuICAgICAgdHlwZS5nZXRQcm9wZXJ0aWVzKHByb3BlcnRpZXMpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHByb3BlcnRpZXM7XG4gIH1cblxuICBnZXRUeXBlcygpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgdHlwZXMgPSBjb250ZXh0LmdldFR5cGVzKCk7XG5cbiAgICByZXR1cm4gdHlwZXM7XG4gIH1cblxuICBmaW5kUnVsZUJ5UmVmZXJlbmNlKHJlZmVyZW5jZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBydWxlID0gY29udGV4dC5maW5kUnVsZUJ5UmVmZXJlbmNlKHJlZmVyZW5jZSk7XG5cbiAgICByZXR1cm4gcnVsZTtcbiAgfVxuXG4gIGZpbmRBeGlvbUJ5TGluayhsaW5rKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGF4aW9tID0gY29udGV4dC5maW5kQXhpb21CeUxpbmsobGluayk7XG5cbiAgICByZXR1cm4gYXhpb207XG4gIH1cblxuICBmaW5kQ2xhaW1CeVJlZmVyZW5jZShyZWZlcmVuY2UpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgY2xhaW0gPSBjb250ZXh0LmZpbmRDbGFpbUJ5UmVmZXJlbmNlKHJlZmVyZW5jZSk7XG5cbiAgICByZXR1cm4gY2xhaW07XG4gIH1cblxuICBmaW5kVGVybUJ5VGVybU5vZGUodGVybU5vZGUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICB0ZXJtID0gY29udGV4dC5maW5kVGVybUJ5VGVybU5vZGUodGVybU5vZGUpO1xuXG4gICAgcmV0dXJuIHRlcm07XG4gIH1cblxuICBmaW5kTGlua0J5TGlua05vZGUobGlua05vZGUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgdGVybSA9IGNvbnRleHQuZmluZExpbmtCeUxpbmtOb2RlKGxpbmtOb2RlKTtcblxuICAgIHJldHVybiB0ZXJtO1xuICB9XG5cbiAgZmluZEZyYW1lQnlGcmFtZU5vZGUoZnJhbWVOb2RlKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGZyYW1lID0gY29udGV4dC5maW5kRnJhbWVCeUZyYW1lTm9kZShmcmFtZU5vZGUpO1xuXG4gICAgcmV0dXJuIGZyYW1lO1xuICB9XG5cbiAgZmluZEVxdWFsaXR5QnlFcXVhbGl0eU5vZGUoZXF1YWxpdHlOb2RlKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGVxdWFsaXR5ID0gY29udGV4dC5maW5kRXF1YWxpdHlCeUVxdWFsaXR5Tm9kZShlcXVhbGl0eU5vZGUpO1xuXG4gICAgcmV0dXJuIGVxdWFsaXR5O1xuICB9XG5cbiAgZmluZEFzc2VydGlvbkJ5QXNzZXJ0aW9uTm9kZShhc3NlcnRpb25Ob2RlKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGFzc2VydGlvbiA9IGNvbnRleHQuZmluZEFzc2VydGlvbkJ5QXNzZXJ0aW9uTm9kZShhc3NlcnRpb25Ob2RlKTtcblxuICAgIHJldHVybiBhc3NlcnRpb247XG4gIH1cblxuICBmaW5kU3RhdGVtZW50QnlTdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgc3RhdGVtZW50ID0gY29udGV4dC5maW5kU3RhdGVtZW50QnlTdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUpO1xuXG4gICAgcmV0dXJuIHN0YXRlbWVudDtcbiAgfVxuXG4gIGZpbmRBc3N1bXB0aW9uQnlBc3N1bXB0aW9uTm9kZShhc3N1bXB0aW9uTm9kZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBhc3N1bXB0aW9uID0gY29udGV4dC5maW5kQXNzdW1wdGlvbkJ5QXNzdW1wdGlvbk5vZGUoYXNzdW1wdGlvbk5vZGUpO1xuXG4gICAgcmV0dXJuIGFzc3VtcHRpb247XG4gIH1cblxuICBmaW5kUmVmZXJlbmNlQnlNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgcmVmZXJlbmNlID0gY29udGV4dC5maW5kUmVmZXJlbmNlQnlNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpO1xuXG4gICAgcmV0dXJuIHJlZmVyZW5jZTtcbiAgfVxuXG4gIGZpbmRNZXRhdmFyaWFibGVCeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBtZXRhdmFyaWFibGUgPSBjb250ZXh0LmZpbmRNZXRhdmFyaWFibGVCeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSk7XG5cbiAgICByZXR1cm4gbWV0YXZhcmlhYmxlO1xuICB9XG5cbiAgZmluZFN1YnN0aXR1dGlvbkJ5U3Vic3RpdHV0aW9uTm9kZShzdWJzdGl0dXRpb25Ob2RlKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIHN1YnN0aXR1dGlvbiA9IGNvbnRleHQuZmluZFN1YnN0aXR1dGlvbkJ5U3Vic3RpdHV0aW9uTm9kZShzdWJzdGl0dXRpb25Ob2RlKTtcblxuICAgIHJldHVybiBzdWJzdGl0dXRpb247XG4gIH1cblxuICBmaW5kSW5mZXJyZWRTdWJzdGl0dXRpb25CeVZhcmlhYmxlTm9kZSh2YXJpYWJsZU5vZGUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgaW5mZXJyZWRTdWJzdGl0dXRpb24gPSBjb250ZXh0LmZpbmRJbmZlcnJlZFN1YnN0aXR1dGlvbkJ5VmFyaWFibGVOb2RlKHZhcmlhYmxlTm9kZSk7XG5cbiAgICByZXR1cm4gaW5mZXJyZWRTdWJzdGl0dXRpb247XG4gIH1cblxuICBmaW5kSW5mZXJyZWRTdWJzdGl0dXRpb25CeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBpbmZlcnJlZFN1YnN0aXR1dGlvbiA9IGNvbnRleHQuZmluZEluZmVycmVkU3Vic3RpdHV0aW9uQnlNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpO1xuXG4gICAgcmV0dXJuIGluZmVycmVkU3Vic3RpdHV0aW9uO1xuICB9XG5cbiAgZmluZENvbnN0cmFpbnRCeUNvbnN0cmFpbnROb2RlKGNvbnN0cmFpbnROb2RlKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGNvbnN0cmFpbnQgPSBjb250ZXh0LmZpbmRDb25zdHJhaW50QnlDb25zdHJhaW50Tm9kZShjb25zdHJhaW50Tm9kZSk7XG5cbiAgICByZXR1cm4gY29uc3RyYWludDtcbiAgfVxuXG4gIGZpbmRUeXBlQnlUeXBlTmFtZSh0eXBlTmFtZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICB0eXBlID0gY29udGV4dC5maW5kVHlwZUJ5VHlwZU5hbWUodHlwZU5hbWUpO1xuXG4gICAgcmV0dXJuIHR5cGU7XG4gIH1cblxuICBmaW5kVHlwZUJ5Tm9taW5hbFR5cGVOYW1lKG5vbWluYWxUeXBlTmFtZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICB0eXBlID0gY29udGV4dC5maW5kVHlwZUJ5Tm9taW5hbFR5cGVOYW1lKG5vbWluYWxUeXBlTmFtZSk7XG5cbiAgICByZXR1cm4gdHlwZTtcbiAgfVxuXG4gIGZpbmRNZXRhVHlwZUJ5TWV0YVR5cGVOYW1lKG1ldGFUeXBlTmFtZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBtZXRhVHlwZSA9IGNvbnRleHQuZmluZE1ldGFUeXBlQnlNZXRhVHlwZU5hbWUobWV0YVR5cGVOYW1lKTtcblxuICAgIHJldHVybiBtZXRhVHlwZTtcbiAgfVxuXG4gIGZpbmRQcm9jZWR1cmVCeVByb2NlZHVyZU5hbWUocHJvY2VkdXJlTmFtZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBwcm9jZWR1cmUgPSBjb250ZXh0LmZpbmRQcm9jZWR1cmVCeVByb2NlZHVyZU5hbWUocHJvY2VkdXJlTmFtZSk7XG5cbiAgICByZXR1cm4gcHJvY2VkdXJlO1xuICB9XG5cbiAgZmluZERlY2xhcmVkVmFyaWFibGVCeVZhcmlhYmxlSWRlbnRpZmllcih2YXJpYWJsZUlkZW50aWZpZXIpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgZGVjbGFyZWRWYXJpYWJsZSA9IGNvbnRleHQuZmluZERlY2xhcmVkVmFyaWFibGVCeVZhcmlhYmxlSWRlbnRpZmllcih2YXJpYWJsZUlkZW50aWZpZXIpO1xuXG4gICAgcmV0dXJuIGRlY2xhcmVkVmFyaWFibGU7XG4gIH1cblxuICBmaW5kRGVjbGFyZWRWYXJpYWJsZXNCeVZhcmlhYmxlSWRlbnRpZmllcih2YXJpYWJsZUlkZW50aWZpZXIpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgZGVjbGFyZWRWYXJpYWJsZXMgPSBjb250ZXh0LmZpbmREZWNsYXJlZFZhcmlhYmxlc0J5VmFyaWFibGVJZGVudGlmaWVyKHZhcmlhYmxlSWRlbnRpZmllcik7XG5cbiAgICByZXR1cm4gZGVjbGFyZWRWYXJpYWJsZXM7XG4gIH1cblxuICBmaW5kRGVjbGFyZWRNZXRhdmFyaWFibGVCeU1ldGF2YXJpYWJsZU5hbWUobWV0YXZhcmlhYmxlTmFtZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBkZWNsYXJlZE1ldGF2YXJpYWJsZSA9IGNvbnRleHQuZmluZERlY2xhcmVkTWV0YXZhcmlhYmxlQnlNZXRhdmFyaWFibGVOYW1lKG1ldGF2YXJpYWJsZU5hbWUpO1xuXG4gICAgcmV0dXJuIGRlY2xhcmVkTWV0YXZhcmlhYmxlO1xuICB9XG5cbiAgaXNUZXJtUHJlc2VudEJ5VGVybU5vZGUodGVybU5vZGUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICB0ZXJtUHJlc2VudCA9IGNvbnRleHQuaXNUZXJtUHJlc2VudEJ5VGVybU5vZGUodGVybU5vZGUpO1xuXG4gICAgcmV0dXJuIHRlcm1QcmVzZW50O1xuICB9XG5cbiAgaXNMYWJlbFByZXNlbnRCeUxhYmVsTm9kZShsYWJlbE5vZGUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgbGFiZWxQcmVzZW50ID0gY29udGV4dC5pc0xhYmVsUHJlc2VudEJ5TGFiZWxOb2RlKGxhYmVsTm9kZSk7XG5cbiAgICByZXR1cm4gbGFiZWxQcmVzZW50O1xuICB9XG5cbiAgaXNGcmFtZVByZXNlbnRCeUZyYW1lTm9kZShmcmFtZU5vZGUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgZnJhbWVQcmVzZW50ID0gY29udGV4dC5pc0ZyYW1lUHJlc2VudEJ5RnJhbWVOb2RlKGZyYW1lTm9kZSk7XG5cbiAgICByZXR1cm4gZnJhbWVQcmVzZW50O1xuICB9XG5cbiAgaXNFcXVhbGl0eVByZXNlbnRCeUVxdWFsaXR5Tm9kZShlcXVhbGl0eU5vZGUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgZXF1YWxpdHlQcmVzZW50ID0gY29udGV4dC5pc0VxdWFsaXR5UHJlc2VudEJ5RXF1YWxpdHlOb2RlKGVxdWFsaXR5Tm9kZSk7XG5cbiAgICByZXR1cm4gZXF1YWxpdHlQcmVzZW50O1xuICB9XG5cbiAgaXNBc3NlcnRpb25QcmVzZW50QnlBc3NlcnRpb25Ob2RlKGFzc2VydGlvbk5vZGUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgYXNzZXJ0aW9uUHJlc2VudCA9IGNvbnRleHQuaXNBc3NlcnRpb25QcmVzZW50QnlBc3NlcnRpb25Ob2RlKGFzc2VydGlvbk5vZGUpO1xuXG4gICAgcmV0dXJuIGFzc2VydGlvblByZXNlbnQ7XG4gIH1cblxuICBpc1N0YXRlbWVudFByZXNlbnRCeVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBzdGF0ZW1lbnRQcmVzZW50ID0gY29udGV4dC5pc1N0YXRlbWVudFByZXNlbnRCeVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSk7XG5cbiAgICByZXR1cm4gc3RhdGVtZW50UHJlc2VudDtcbiAgfVxuXG4gIGlzTWV0YXZhcmlhYmxlUHJlc2VudEJ5TWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIG1ldGF2YXJpYWJsZVByZXNlbnQgPSBjb250ZXh0LmlzTWV0YXZhcmlhYmxlUHJlc2VudEJ5TWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKTtcblxuICAgIHJldHVybiBtZXRhdmFyaWFibGVQcmVzZW50O1xuICB9XG5cbiAgaXNUeXBlUHJlc2VudEJ5Tm9taW5hbFR5cGVOYW1lKG5vbWluYWxUeXBlTmFtZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICB0eXBlUHJlc2VudCA9IGNvbnRleHQuaXNUeXBlUHJlc2VudEJ5Tm9taW5hbFR5cGVOYW1lKG5vbWluYWxUeXBlTmFtZSk7XG5cbiAgICByZXR1cm4gdHlwZVByZXNlbnQ7XG4gIH1cblxuICBpc1Byb2NlZHVyZVByZXNlbnRCeVByb2NlZHVyZU5hbWUocHJvY2VkdXJlTmFtZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBwcm9jZWR1cmVQcmVzZW50ID0gY29udGV4dC5pc1Byb2NlZHVyZVByZXNlbnRCeVByb2NlZHVyZU5hbWUocHJvY2VkdXJlTmFtZSk7XG5cbiAgICByZXR1cm4gcHJvY2VkdXJlUHJlc2VudDtcbiAgfVxuXG4gIGlzRGVjbGFyZWRNZXRhdmFyaWFibGVQcmVzZW50QnlNZXRhdmFyaWFibGVOYW1lKG1ldGF2YXJpYWJsZU5hbWUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgbWV0YXZhcmlhYmxlUHJlc2VudCA9IGNvbnRleHQuaXNEZWNsYXJlZE1ldGF2YXJpYWJsZVByZXNlbnRCeU1ldGF2YXJpYWJsZU5hbWUobWV0YXZhcmlhYmxlTmFtZSk7XG5cbiAgICByZXR1cm4gbWV0YXZhcmlhYmxlUHJlc2VudDtcbiAgfVxuXG4gIGlzUmVmZXJlbmNlUHJlc2VudEJ5TWV0YXZhcmlhYmxlTm9kZShtZXR2dmFyaWFibGVOb2RlKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIHJlZmVyZW5jZVByZXNlbnQgPSBjb250ZXh0LmlzUmVmZXJlbmNlUHJlc2VudEJ5TWV0YXZhcmlhYmxlTm9kZShtZXR2dmFyaWFibGVOb2RlKTtcblxuICAgIHJldHVybiByZWZlcmVuY2VQcmVzZW50O1xuICB9XG5cbiAgaXNJbmZlcnJlZFN1YnN0aXR1dGlvblByZXNlbnRCeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBpbmZlcnJlZFN1YnN0aXR1dGlvblByZXNlbnQgPSBjb250ZXh0LmlzSW5mZXJyZWRTdWJzdGl0dXRpb25QcmVzZW50QnlNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpO1xuXG4gICAgcmV0dXJuIGluZmVycmVkU3Vic3RpdHV0aW9uUHJlc2VudDtcbiAgfVxuXG4gIGlzSW5mZXJyZWRTdWJzdGl0dXRpb25QcmVzZW50QnlNZXRhdmFyaWFibGVOb2RlQW5kU3Vic3RpdHV0aW9uTm9kZShtZXRhdmFyaWFibGVOb2RlLCBzdWJzdGl0dXRpb25Ob2RlKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGluZmVycmVkU3Vic3RpdHV0aW9uUHJlc2VudCA9IGNvbnRleHQuaXNJbmZlcnJlZFN1YnN0aXR1dGlvblByZXNlbnRCeU1ldGF2YXJpYWJsZU5vZGVBbmRTdWJzdGl0dXRpb25Ob2RlKG1ldGF2YXJpYWJsZU5vZGUsIHN1YnN0aXR1dGlvbk5vZGUpO1xuXG4gICAgcmV0dXJuIGluZmVycmVkU3Vic3RpdHV0aW9uUHJlc2VudDtcbiAgfVxuXG4gIGlzTWV0YUxldmVsKCkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBtZXRhTGV2ZWwgPSBjb250ZXh0LmlzTWV0YUxldmVsKCk7XG5cbiAgICByZXR1cm4gbWV0YUxldmVsO1xuICB9XG59XG4iXSwibmFtZXMiOlsiQ29udGV4dCIsIkNvbnRleHRCYXNlIiwiZ2V0TGV4ZXIiLCJjb250ZXh0IiwiZ2V0Q29udGV4dCIsImxleGVyIiwiZ2V0UGFyc2VyIiwicGFyc2VyIiwiZ2V0RmlsZVBhdGgiLCJmaWxlUGF0aCIsImdldFRva2VucyIsInRva2VucyIsInNldFRva2VucyIsImdldFRlcm1zIiwidGVybXMiLCJnZXRMaW5rcyIsImxpbmtzIiwiZ2V0RnJhbWVzIiwiZnJhbWVzIiwiZ2V0RXF1YWxpdGllcyIsImVxdWFsaXRpZXMiLCJnZXRBc3NlcnRpb25zIiwiYXNzZXJ0aW9ucyIsImdldFN0YXRlbWVudHMiLCJzdGF0ZW1lbnRzIiwiZ2V0U2lnbmF0dXJlcyIsInNpZ25hdHVyZXMiLCJnZXRSZWZlcmVuY2VzIiwicmVmZXJlbmNlcyIsImdldEFzc3VtcHRpb25zIiwiYXNzdW1wdGlvbnMiLCJnZXRNZXRhdmFyaWFibGVzIiwibWV0YXZhcmlhYmxlcyIsImdldFN1YnN0aXR1dGlvbnMiLCJzdWJzdGl0dXRpb25zIiwiZ2V0SW5mZXJyZWRTdWJzdGl0dXRpb25zIiwiaW5mZXJyZWRTdWJzdGl0dXRpb25zIiwiZ2V0R2VuZXJhdG9ycyIsImluY2x1ZGVSZWxlYXNlIiwiZ2VuZXJhdG9ycyIsImdldFByb2NlZHVyZXMiLCJwcm9jZWR1cmVzIiwiZ2V0Q29tYmluYXRvcnMiLCJjb21iaW5hdG9ycyIsImdldENvbnN0cnVjdG9ycyIsImNvbnN0cnVjdG9ycyIsImdldENsYWltIiwiY2xhaW0iLCJnZXRTY2hlbWFzIiwic2NoZW1hcyIsImdldFZhcmlhYmxlcyIsIm5lc3RlZCIsInZhcmlhYmxlcyIsImdldFN0ZXBzIiwic3RlcHMiLCJnZXRGYWN0cyIsImZhY3RzIiwiZ2V0RXF1aXZhbGVuY2VzIiwiZXF1aXZhbGVuY2VzIiwiZ2V0RGVjbGFyZWRWYXJpYWJsZXMiLCJkZWNsYXJlZFZhcmlhYmxlcyIsImdldERlY2xhcmVkTWV0YXZhcmlhYmxlcyIsImRlY2xhcmVkTWV0YXZhcmlhYmxlcyIsImdldEZhY3RPclN1YnByb29mcyIsImZhY3RPclN1YnByb29mcyIsImdldFByb3BlcnRpZXMiLCJwcm9wZXJ0aWVzIiwidHlwZXMiLCJnZXRUeXBlcyIsImZvckVhY2giLCJ0eXBlIiwiZmluZFJ1bGVCeVJlZmVyZW5jZSIsInJlZmVyZW5jZSIsInJ1bGUiLCJmaW5kQXhpb21CeUxpbmsiLCJsaW5rIiwiYXhpb20iLCJmaW5kQ2xhaW1CeVJlZmVyZW5jZSIsImZpbmRUZXJtQnlUZXJtTm9kZSIsInRlcm1Ob2RlIiwidGVybSIsImZpbmRMaW5rQnlMaW5rTm9kZSIsImxpbmtOb2RlIiwiZmluZEZyYW1lQnlGcmFtZU5vZGUiLCJmcmFtZU5vZGUiLCJmcmFtZSIsImZpbmRFcXVhbGl0eUJ5RXF1YWxpdHlOb2RlIiwiZXF1YWxpdHlOb2RlIiwiZXF1YWxpdHkiLCJmaW5kQXNzZXJ0aW9uQnlBc3NlcnRpb25Ob2RlIiwiYXNzZXJ0aW9uTm9kZSIsImFzc2VydGlvbiIsImZpbmRTdGF0ZW1lbnRCeVN0YXRlbWVudE5vZGUiLCJzdGF0ZW1lbnROb2RlIiwic3RhdGVtZW50IiwiZmluZEFzc3VtcHRpb25CeUFzc3VtcHRpb25Ob2RlIiwiYXNzdW1wdGlvbk5vZGUiLCJhc3N1bXB0aW9uIiwiZmluZFJlZmVyZW5jZUJ5TWV0YXZhcmlhYmxlTm9kZSIsIm1ldGF2YXJpYWJsZU5vZGUiLCJmaW5kTWV0YXZhcmlhYmxlQnlNZXRhdmFyaWFibGVOb2RlIiwibWV0YXZhcmlhYmxlIiwiZmluZFN1YnN0aXR1dGlvbkJ5U3Vic3RpdHV0aW9uTm9kZSIsInN1YnN0aXR1dGlvbk5vZGUiLCJzdWJzdGl0dXRpb24iLCJmaW5kSW5mZXJyZWRTdWJzdGl0dXRpb25CeVZhcmlhYmxlTm9kZSIsInZhcmlhYmxlTm9kZSIsImluZmVycmVkU3Vic3RpdHV0aW9uIiwiZmluZEluZmVycmVkU3Vic3RpdHV0aW9uQnlNZXRhdmFyaWFibGVOb2RlIiwiZmluZENvbnN0cmFpbnRCeUNvbnN0cmFpbnROb2RlIiwiY29uc3RyYWludE5vZGUiLCJjb25zdHJhaW50IiwiZmluZFR5cGVCeVR5cGVOYW1lIiwidHlwZU5hbWUiLCJmaW5kVHlwZUJ5Tm9taW5hbFR5cGVOYW1lIiwibm9taW5hbFR5cGVOYW1lIiwiZmluZE1ldGFUeXBlQnlNZXRhVHlwZU5hbWUiLCJtZXRhVHlwZU5hbWUiLCJtZXRhVHlwZSIsImZpbmRQcm9jZWR1cmVCeVByb2NlZHVyZU5hbWUiLCJwcm9jZWR1cmVOYW1lIiwicHJvY2VkdXJlIiwiZmluZERlY2xhcmVkVmFyaWFibGVCeVZhcmlhYmxlSWRlbnRpZmllciIsInZhcmlhYmxlSWRlbnRpZmllciIsImRlY2xhcmVkVmFyaWFibGUiLCJmaW5kRGVjbGFyZWRWYXJpYWJsZXNCeVZhcmlhYmxlSWRlbnRpZmllciIsImZpbmREZWNsYXJlZE1ldGF2YXJpYWJsZUJ5TWV0YXZhcmlhYmxlTmFtZSIsIm1ldGF2YXJpYWJsZU5hbWUiLCJkZWNsYXJlZE1ldGF2YXJpYWJsZSIsImlzVGVybVByZXNlbnRCeVRlcm1Ob2RlIiwidGVybVByZXNlbnQiLCJpc0xhYmVsUHJlc2VudEJ5TGFiZWxOb2RlIiwibGFiZWxOb2RlIiwibGFiZWxQcmVzZW50IiwiaXNGcmFtZVByZXNlbnRCeUZyYW1lTm9kZSIsImZyYW1lUHJlc2VudCIsImlzRXF1YWxpdHlQcmVzZW50QnlFcXVhbGl0eU5vZGUiLCJlcXVhbGl0eVByZXNlbnQiLCJpc0Fzc2VydGlvblByZXNlbnRCeUFzc2VydGlvbk5vZGUiLCJhc3NlcnRpb25QcmVzZW50IiwiaXNTdGF0ZW1lbnRQcmVzZW50QnlTdGF0ZW1lbnROb2RlIiwic3RhdGVtZW50UHJlc2VudCIsImlzTWV0YXZhcmlhYmxlUHJlc2VudEJ5TWV0YXZhcmlhYmxlTm9kZSIsIm1ldGF2YXJpYWJsZVByZXNlbnQiLCJpc1R5cGVQcmVzZW50QnlOb21pbmFsVHlwZU5hbWUiLCJ0eXBlUHJlc2VudCIsImlzUHJvY2VkdXJlUHJlc2VudEJ5UHJvY2VkdXJlTmFtZSIsInByb2NlZHVyZVByZXNlbnQiLCJpc0RlY2xhcmVkTWV0YXZhcmlhYmxlUHJlc2VudEJ5TWV0YXZhcmlhYmxlTmFtZSIsImlzUmVmZXJlbmNlUHJlc2VudEJ5TWV0YXZhcmlhYmxlTm9kZSIsIm1ldHZ2YXJpYWJsZU5vZGUiLCJyZWZlcmVuY2VQcmVzZW50IiwiaXNJbmZlcnJlZFN1YnN0aXR1dGlvblByZXNlbnRCeU1ldGF2YXJpYWJsZU5vZGUiLCJpbmZlcnJlZFN1YnN0aXR1dGlvblByZXNlbnQiLCJpc0luZmVycmVkU3Vic3RpdHV0aW9uUHJlc2VudEJ5TWV0YXZhcmlhYmxlTm9kZUFuZFN1YnN0aXR1dGlvbk5vZGUiLCJpc01ldGFMZXZlbCIsIm1ldGFMZXZlbCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBSUE7OztlQUFxQkE7OztnQ0FGa0I7QUFFeEIsTUFBTUEsZ0JBQWdCQyx1QkFBVztJQUM5Q0MsV0FBVztRQUNULE1BQU1DLFVBQVUsSUFBSSxDQUFDQyxVQUFVLElBQ3pCQyxRQUFRRixRQUFRRCxRQUFRO1FBRTlCLE9BQU9HO0lBQ1Q7SUFFQUMsWUFBWTtRQUNWLE1BQU1ILFVBQVUsSUFBSSxDQUFDQyxVQUFVLElBQ3pCRyxTQUFTSixRQUFRRyxTQUFTO1FBRWhDLE9BQU9DO0lBQ1Q7SUFFQUMsY0FBYztRQUNaLE1BQU1MLFVBQVUsSUFBSSxDQUFDQyxVQUFVLElBQ3pCSyxXQUFXTixRQUFRSyxXQUFXO1FBRXBDLE9BQU9DO0lBQ1Q7SUFFQUMsWUFBWTtRQUNWLE1BQU1QLFVBQVUsSUFBSSxDQUFDQyxVQUFVLElBQ3pCTyxTQUFTUixRQUFRTyxTQUFTO1FBRWhDLE9BQU9DO0lBQ1Q7SUFFQUMsVUFB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
|
|
@@ -12,8 +12,8 @@ const _occamlanguages = require("occam-languages");
|
|
|
12
12
|
const _assertion = /*#__PURE__*/ _interop_require_default(require("../assertion"));
|
|
13
13
|
const _elements = require("../../elements");
|
|
14
14
|
const _context = require("../../utilities/context");
|
|
15
|
-
const _instantiate = require("../../process/instantiate");
|
|
16
15
|
const _json = require("../../utilities/json");
|
|
16
|
+
const _instantiate = require("../../process/instantiate");
|
|
17
17
|
const _substitutions = require("../../utilities/substitutions");
|
|
18
18
|
const _element = require("../../utilities/element");
|
|
19
19
|
const _assign = require("../../process/assign");
|
|
@@ -172,7 +172,7 @@ const _default = (0, _elements.define)(class TypeAssertion extends _assertion.de
|
|
|
172
172
|
const { name } = json;
|
|
173
173
|
if (this.name === name) {
|
|
174
174
|
(0, _context.instantiate)((context)=>{
|
|
175
|
-
const { string } = json, typeAssertionNode = (0, _instantiate.instantiateTypeAssertion)(string, context), node = typeAssertionNode, breakPoint = null, term = termFromTypeAssertionNode(typeAssertionNode, context), type = (
|
|
175
|
+
const { string } = json, typeAssertionNode = (0, _instantiate.instantiateTypeAssertion)(string, context), node = typeAssertionNode, breakPoint = null, term = termFromTypeAssertionNode(typeAssertionNode, context), type = typeFromTypeAssertionNode(typeAssertionNode, context);
|
|
176
176
|
context = null;
|
|
177
177
|
typeAssertion = new TypeAssertion(context, string, node, breakPoint, term, type);
|
|
178
178
|
}, context);
|
|
@@ -201,5 +201,9 @@ function termFromTypeAssertionNode(typeAssertionNode, context) {
|
|
|
201
201
|
const termNode = typeAssertionNode.getTermNode(), term = context.findTermByTermNode(termNode);
|
|
202
202
|
return term;
|
|
203
203
|
}
|
|
204
|
+
function typeFromTypeAssertionNode(typeAssertionNode, context) {
|
|
205
|
+
const typeName = typeAssertionNode.getTypeName(), type = context.findTypeByTypeName(typeName);
|
|
206
|
+
return type;
|
|
207
|
+
}
|
|
204
208
|
|
|
205
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2Fzc2VydGlvbi90eXBlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBicmVha1BvaW50VXRpbGl0aWVzLCBjb250aW51YXRpb25VdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCBBc3NlcnRpb24gZnJvbSBcIi4uL2Fzc2VydGlvblwiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IGluc3RhbnRpYXRlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9jb250ZXh0XCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZVR5cGVBc3NlcnRpb24gfSBmcm9tIFwiLi4vLi4vcHJvY2Vzcy9pbnN0YW50aWF0ZVwiO1xuaW1wb3J0IHsgdHlwZUZyb21KU09OLCB0eXBlVG9UeXBlSlNPTiB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvanNvblwiO1xuaW1wb3J0IHsgdGVybUZyb21UZXJtQW5kU3Vic3RpdHV0aW9ucyB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvc3Vic3RpdHV0aW9uc1wiO1xuaW1wb3J0IHsgdHlwZUFzc2VydGlvbkZyb21TdGF0ZW1lbnROb2RlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9lbGVtZW50XCI7XG5pbXBvcnQgeyB2YXJpYWJsZUFzc2lnbm1lbnRGcm9tVHlwZUFzc2VydGlvbiB9IGZyb20gXCIuLi8uLi9wcm9jZXNzL2Fzc2lnblwiO1xuaW1wb3J0IHsgZGVyaXZlLCBpc0Rlcml2ZWQsIGlzRGVjbGFyZWQsIGlzVHJhbnNpZW50fSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL3N0YXRlXCI7XG5cbmNvbnN0IHsgdW5icmVha2FibGUgfSA9IGJyZWFrUG9pbnRVdGlsaXRpZXMsXG4gICAgICB7IGFsbCwgZXhpc3RzIH0gPSBjb250aW51YXRpb25VdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBUeXBlQXNzZXJ0aW9uIGV4dGVuZHMgQXNzZXJ0aW9uIHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB0ZXJtLCB0eXBlKSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50KTtcblxuICAgIHRoaXMudGVybSA9IHRlcm07XG4gICAgdGhpcy50eXBlID0gdHlwZTtcbiAgfVxuXG4gIGdldFRlcm0oKSB7XG4gICAgcmV0dXJuIHRoaXMudGVybTtcbiAgfVxuXG4gIGdldFR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudHlwZTtcbiAgfVxuXG4gIGdldFR5cGVBc3NlcnRpb25OQm9kZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5nZXROb2RlKCksXG4gICAgICAgICAgdHlwZUFzc2VydGlvbk5vZGUgPSBub2RlOyAvLy9cblxuICAgIHJldHVybiB0eXBlQXNzZXJ0aW9uTm9kZTtcbiAgfVxuXG4gIGRpc2NoYXJnZShnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dCwgLy8vXG4gICAgICAgICAgdHlwZUFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgRGlzY2hhcmdpbmcgdGhlICcke3R5cGVBc3NlcnRpb25TdHJpbmd9JyB0eXBlIGFzc2VydGlvbi4uLmApO1xuXG4gICAgY29uc3QgdGVybSA9IHRlcm1Gcm9tVGVybUFuZFN1YnN0aXR1dGlvbnModGhpcy50ZXJtLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBkZXJpdmUoKHN0YXRlKSA9PiB7XG4gICAgICByZXR1cm4gdmFsaWRhdGVXaGVuRGVyaXZlZCh0ZXJtLCB0aGlzLnR5cGUsIHN0YXRlLCBjb250ZXh0LCAodGVybSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICBzcGVjaWZpY0NvbnRleHQgPSBjb250ZXh0OyAgLy8vXG5cbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4uZGlzY2hhcmdlZCB0aGUgJyR7dHlwZUFzc2VydGlvblN0cmluZ30nIHR5cGUgYXNzZXJ0aW9uLmApO1xuXG4gICAgICAgIHJldHVybiBmb3J3YXJkKGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGJhY2spO1xuICAgICAgfSwgYmFjayk7XG4gICAgfSk7XG4gIH1cblxuICB2YWxpZGF0ZSA9IHVuYnJlYWthYmxlKGZ1bmN0aW9uIChzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGxldCBhc3NlcnRpb247XG5cbiAgICBjb25zdCB0eXBlQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7dHlwZUFzc2VydGlvblN0cmluZ30nIHR5cGUgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgICBhc3NlcnRpb24gPSB0aGlzLmZpbmRBc3NlcnRpb24oY29udGV4dCk7XG5cbiAgICBpZiAoYXNzZXJ0aW9uICE9PSBudWxsKSB7XG4gICAgICBjb25zdCB0eXBlQXNzZXJ0aW9uID0gYXNzZXJ0aW9uOyAvLy9cblxuICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke3R5cGVBc3NlcnRpb25TdHJpbmd9JyB0eXBlIGFzc2VydGlvbiBpcyBhbHJlYWR5IHByZXNlbnQuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHR5cGVBc3NlcnRpb24sIGNvbnRleHQsIGJhY2spO1xuICAgIH1cblxuICAgIGNvbnN0IHZhbGlkYXRlVHlwZSA9IHRoaXMudmFsaWRhdGVUeXBlLmJpbmQodGhpcyk7XG5cbiAgICByZXR1cm4gYWxsKFtcbiAgICAgIHZhbGlkYXRlVHlwZVxuICAgIF0sIHN0YXRlLCBjb250ZXh0LCAoc3RhdGUsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnN0IHZhbGlkYXRlV2hlbkRlY2xhcmVkID0gdGhpcy52YWxpZGF0ZVdoZW5EZWNsYXJlZC5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgdmFsaWRhdGVXaGVuRGVyaXZlZCA9IHRoaXMudmFsaWRhdGVXaGVuRGVyaXZlZC5iaW5kKHRoaXMpO1xuXG4gICAgICByZXR1cm4gZXhpc3RzKFtcbiAgICAgICAgdmFsaWRhdGVXaGVuRGVjbGFyZWQsXG4gICAgICAgIHZhbGlkYXRlV2hlbkRlcml2ZWRcbiAgICAgIF0sIHN0YXRlLCBjb250ZXh0LCAoc3RhdGUsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgYXNzZXJ0aW9uID0gdGhpczsgLy8vXG5cbiAgICAgICAgdGhpcy5hc3NpZ24oc3RhdGUsIGNvbnRleHQpO1xuXG4gICAgICAgIGNvbnRleHQuYWRkQXNzZXJ0aW9uKGFzc2VydGlvbik7XG5cbiAgICAgICAgY29uc3QgdHlwZUFzc2VydGlvbiA9IGFzc2VydGlvbjsgLy8vXG5cbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHt0eXBlQXNzZXJ0aW9uU3RyaW5nfScgdHlwZSBhc3NlcnRpb24uYCk7XG5cbiAgICAgICAgcmV0dXJuIGZvcndhcmQodHlwZUFzc2VydGlvbiwgY29udGV4dCwgYmFjayk7XG4gICAgICB9LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfSk7XG5cbiAgdmFsaWRhdGVUeXBlKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgdHlwZUFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3R5cGVBc3NlcnRpb25TdHJpbmd9JyB0eXBlIGFzc2VydGlvbidzIHR5cGUuLi5gKTtcblxuICAgIGNvbnN0IG5vbWluYWxUeXBlTmFtZSA9IHRoaXMudHlwZS5nZXROb21pbmFsVHlwZU5hbWUoKSxcbiAgICAgICAgICB0eXBlID0gY29udGV4dC5maW5kVHlwZUJ5Tm9taW5hbFR5cGVOYW1lKG5vbWluYWxUeXBlTmFtZSk7XG5cbiAgICBpZiAodHlwZSA9PT0gbnVsbCkge1xuICAgICAgY29uc3QgdHlwZVN0cmluZyA9IHRoaXMudHlwZS5nZXRTdHJpbmcoKTtcblxuICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke3R5cGVTdHJpbmd9JyB0eXBlIGlzIG5vdCBwcmVzZW50LmApO1xuXG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH1cblxuICAgIHRoaXMudHlwZSA9IHR5cGU7XG5cbiAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3R5cGVBc3NlcnRpb25TdHJpbmd9JyB0eXBlIGFzc2VydGlvbidzIHR5cGUuYCk7XG5cbiAgICByZXR1cm4gZm9yd2FyZChzdGF0ZSwgY29udGV4dCwgYmFjaylcbiAgfVxuXG4gIHZhbGlkYXRlV2hlbkRlY2xhcmVkKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgZGVjbGFyZWQgPSBpc0RlY2xhcmVkKHN0YXRlKTtcblxuICAgIGlmICghZGVjbGFyZWQpIHtcbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfVxuXG4gICAgY29uc3QgdHlwZUFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7dHlwZUFzc2VydGlvblN0cmluZ30nIGRlY2xhcmVkIHR5cGUgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgICByZXR1cm4gdGhpcy50ZXJtLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAodGVybSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgbGV0IHZhbGlkYXRlc1doZW5EZWNsYXJlZCA9IGZhbHNlO1xuXG4gICAgICBpZiAodGVybSAhPT0gbnVsbCkge1xuICAgICAgICBjb25zdCB0ZXJtVHlwZSA9IHRlcm0uZ2V0VHlwZSgpLFxuICAgICAgICAgICAgICB0ZXJtVHlwZUVxdWFsVG9UeXBlID0gdGVybVR5cGUuaXNFcXVhbFRvKHRoaXMudHlwZSksXG4gICAgICAgICAgICAgIHRlcm1UeXBlU3VwZXJUeXBlT2ZUeXBlID0gdGVybVR5cGUuaXNTdXBlclR5cGVPZih0aGlzLnR5cGUpO1xuXG4gICAgICAgIGlmIChmYWxzZSkge1xuICAgICAgICAgIC8vL1xuICAgICAgICB9IGVsc2UgaWYgKHRlcm1UeXBlRXF1YWxUb1R5cGUpIHtcbiAgICAgICAgICB2YWxpZGF0ZXNXaGVuRGVjbGFyZWQgPSB0cnVlO1xuICAgICAgICB9IGVsc2UgaWYgKHRlcm1UeXBlU3VwZXJUeXBlT2ZUeXBlKSB7XG4gICAgICAgICAgY29uc3QgdGVybUVzdGFibGlzaGVkID0gdGVybS5pc0VzdGFibGlzaGVkKCk7XG5cbiAgICAgICAgICBpZiAodGVybUVzdGFibGlzaGVkKSB7XG4gICAgICAgICAgICB2YWxpZGF0ZXNXaGVuRGVjbGFyZWQgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoIXZhbGlkYXRlc1doZW5EZWNsYXJlZCkge1xuICAgICAgICByZXR1cm4gYmFjaygpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnRlcm0gPSB0ZXJtO1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3R5cGVBc3NlcnRpb25TdHJpbmd9JyBkZWNsYXJlZCB0eXBlIGFzc2VydGlvbi5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoc3RhdGUsIGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdmFsaWRhdGVXaGVuRGVyaXZlZChzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGRlcml2ZWQgPSBpc0Rlcml2ZWQoc3RhdGUpO1xuXG4gICAgaWYgKCFkZXJpdmVkKSB7XG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH1cblxuICAgIGNvbnN0IHR5cGVBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3R5cGVBc3NlcnRpb25TdHJpbmd9JyBkZXJpdmVkIHR5cGUgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgICByZXR1cm4gdmFsaWRhdGVXaGVuRGVyaXZlZCh0aGlzLnRlcm0sIHRoaXMudHlwZSwgc3RhdGUsIGNvbnRleHQsICh0ZXJtLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICB0aGlzLnRlcm0gPSB0ZXJtO1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3R5cGVBc3NlcnRpb25TdHJpbmd9JyBkZXJpdmVkIHR5cGUgYXNzZXJ0aW9uLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChzdGF0ZSwgY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICBhcHBseUluZGVwZW5kZW50bHkoZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQsIC8vL1xuICAgICAgICAgIHR5cGVBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYEFwcGx5aW5nIHRoZSAnJHt0eXBlQXNzZXJ0aW9uU3RyaW5nfScgdHlwZSBhc3NlcnRpb24gaW5kZXBlbmRlbnRseS4uLmApO1xuXG4gICAgY29uc3QgdGVybSA9IHRlcm1Gcm9tVGVybUFuZFN1YnN0aXR1dGlvbnModGhpcy50ZXJtLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBkZXJpdmUoKHN0YXRlKSA9PiB7XG4gICAgICByZXR1cm4gdmFsaWRhdGVXaGVuRGVyaXZlZCh0ZXJtLCB0aGlzLnR5cGUsIHN0YXRlLCBjb250ZXh0LCAodGVybSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICBzcGVjaWZpY0NvbnRleHQgPSBjb250ZXh0OyAgLy8vXG5cbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4uYXBwbGllZCB0aGUgJyR7dHlwZUFzc2VydGlvblN0cmluZ30nIHR5cGUgYXNzZXJ0aW9uIGluZGVwZW5kZW50bHkuYCk7XG5cbiAgICAgICAgcmV0dXJuIGZvcndhcmQoZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgYmFjayk7XG4gICAgICB9LCBiYWNrKTtcbiAgICB9KTtcbiAgfVxuXG4gIGFzc2lnbihzdGF0ZSwgY29udGV4dCkge1xuICAgIGNvbnN0IGRlcml2ZWQgPSBpc0Rlcml2ZWQoc3RhdGUpLFxuICAgICAgICAgIHRyYW5zaWVudCA9IGlzVHJhbnNpZW50KHN0YXRlKTtcblxuICAgIGlmIChkZXJpdmVkIHx8IHRyYW5zaWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHR5cGVBc3NlcnRpb24gPSB0aGlzLCAvLy9cbiAgICAgICAgICB2YXJpYWJsZUFzc2lnbWVudCA9IHZhcmlhYmxlQXNzaWdubWVudEZyb21UeXBlQXNzZXJ0aW9uKHR5cGVBc3NlcnRpb24sIGNvbnRleHQpO1xuXG4gICAgY29udGV4dC5hZGRBc3NpZ25tZW50KHZhcmlhYmxlQXNzaWdtZW50KTtcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICBsZXQganNvbjtcblxuICAgIGNvbnN0IHR5cGVKU09OID0gdHlwZVRvVHlwZUpTT04odGhpcy50eXBlKSxcbiAgICAgICAgICBuYW1lID0gdGhpcy5nZXROYW1lKCksXG4gICAgICAgICAgc3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKSxcbiAgICAgICAgICB0eXBlID0gdHlwZUpTT047ICAvLy9cblxuICAgIGpzb24gPSB7XG4gICAgICBuYW1lLFxuICAgICAgc3RyaW5nLFxuICAgICAgdHlwZVxuICAgIH07XG5cbiAgICByZXR1cm4ganNvbjtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJUeXBlQXNzZXJ0aW9uXCI7XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgICBsZXQgdHlwZUFzc2VydGlvbiA9IG51bGw7XG5cbiAgICBjb25zdCB7IG5hbWUgfSA9IGpzb247XG5cbiAgICBpZiAodGhpcy5uYW1lID09PSBuYW1lKSB7XG4gICAgICBpbnN0YW50aWF0ZSgoY29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCB7IHN0cmluZyB9ID0ganNvbixcbiAgICAgICAgICAgICAgdHlwZUFzc2VydGlvbk5vZGUgPSBpbnN0YW50aWF0ZVR5cGVBc3NlcnRpb24oc3RyaW5nLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgbm9kZSA9IHR5cGVBc3NlcnRpb25Ob2RlLCAvLy9cbiAgICAgICAgICAgICAgYnJlYWtQb2ludCA9IG51bGwsXG4gICAgICAgICAgICAgIHRlcm0gPSB0ZXJtRnJvbVR5cGVBc3NlcnRpb25Ob2RlKHR5cGVBc3NlcnRpb25Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgdHlwZSA9IHR5cGVGcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgICAgICBjb250ZXh0ID0gbnVsbDtcblxuICAgICAgICB0eXBlQXNzZXJ0aW9uID0gbmV3IFR5cGVBc3NlcnRpb24oY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB0ZXJtLCB0eXBlKTtcbiAgICAgIH0sIGNvbnRleHQpO1xuICAgIH1cblxuICAgIHJldHVybiB0eXBlQXNzZXJ0aW9uO1xuICB9XG5cbiAgc3RhdGljIGZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KSB7XG4gICAgY29uc3Qgc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudC5nZXROb2RlKCksXG4gICAgICAgICAgdHlwZUFzc2VydGlvbiA9IHR5cGVBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlLCBjb250ZXh0KTtcblxuICAgIHJldHVybiB0eXBlQXNzZXJ0aW9uO1xuICB9XG59KTtcblxuZnVuY3Rpb24gdmFsaWRhdGVXaGVuRGVyaXZlZCh0ZXJtLCB0eXBlLCBzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICByZXR1cm4gdGVybS52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKHRlcm0sIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICBjb25zdCB0ZXJtVHlwZSA9IHRlcm0uZ2V0VHlwZSgpLFxuICAgICAgICAgIHRlcm1UeXBlRXF1YWxUb09yU3ViVHlwZU9mVHlwZSA9IHRlcm1UeXBlLmlzRXF1YWxUb09yU3ViVHlwZU9mKHR5cGUpO1xuXG4gICAgaWYgKCF0ZXJtVHlwZUVxdWFsVG9PclN1YlR5cGVPZlR5cGUpIHtcbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfVxuXG4gICAgY29uc3QgdGVybUVzdGFibGlzaGVkID0gdGVybS5pc0VzdGFibGlzaGVkKCk7XG5cbiAgICBpZiAoIXRlcm1Fc3RhYmxpc2hlZCkge1xuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZm9yd2FyZCh0ZXJtLCBjb250ZXh0LCBiYWNrKTtcbiAgfSwgYmFjayk7XG59XG5cbmZ1bmN0aW9uIHRlcm1Gcm9tVHlwZUFzc2VydGlvbk5vZGUodHlwZUFzc2VydGlvbk5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgdGVybU5vZGUgPSB0eXBlQXNzZXJ0aW9uTm9kZS5nZXRUZXJtTm9kZSgpLFxuICAgICAgICB0ZXJtID0gY29udGV4dC5maW5kVGVybUJ5VGVybU5vZGUodGVybU5vZGUpO1xuXG4gIHJldHVybiB0ZXJtO1xufSJdLCJuYW1lcyI6WyJ1bmJyZWFrYWJsZSIsImJyZWFrUG9pbnRVdGlsaXRpZXMiLCJhbGwiLCJleGlzdHMiLCJjb250aW51YXRpb25VdGlsaXRpZXMiLCJkZWZpbmUiLCJUeXBlQXNzZXJ0aW9uIiwiQXNzZXJ0aW9uIiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJicmVha1BvaW50IiwidGVybSIsInR5cGUiLCJnZXRUZXJtIiwiZ2V0VHlwZSIsImdldFR5cGVBc3NlcnRpb25OQm9kZSIsImdldE5vZGUiLCJ0eXBlQXNzZXJ0aW9uTm9kZSIsImRpc2NoYXJnZSIsImdlbmVyYWxDb250ZXh0Iiwic3BlY2lmaWNDb250ZXh0IiwiZm9yd2FyZCIsImJhY2siLCJ0eXBlQXNzZXJ0aW9uU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJ0ZXJtRnJvbVRlcm1BbmRTdWJzdGl0dXRpb25zIiwiZGVyaXZlIiwic3RhdGUiLCJ2YWxpZGF0ZVdoZW5EZXJpdmVkIiwiZGVidWciLCJ2YWxpZGF0ZSIsImFzc2VydGlvbiIsImZpbmRBc3NlcnRpb24iLCJ0eXBlQXNzZXJ0aW9uIiwidmFsaWRhdGVUeXBlIiwiYmluZCIsInZhbGlkYXRlV2hlbkRlY2xhcmVkIiwiYXNzaWduIiwiYWRkQXNzZXJ0aW9uIiwibm9taW5hbFR5cGVOYW1lIiwiZ2V0Tm9taW5hbFR5cGVOYW1lIiwiZmluZFR5cGVCeU5vbWluYWxUeXBlTmFtZSIsInR5cGVTdHJpbmciLCJkZWNsYXJlZCIsImlzRGVjbGFyZWQiLCJ2YWxpZGF0ZXNXaGVuRGVjbGFyZWQiLCJ0ZXJtVHlwZSIsInRlcm1UeXBlRXF1YWxUb1R5cGUiLCJpc0VxdWFsVG8iLCJ0ZXJtVHlwZVN1cGVyVHlwZU9mVHlwZSIsImlzU3VwZXJUeXBlT2YiLCJ0ZXJtRXN0YWJsaXNoZWQiLCJpc0VzdGFibGlzaGVkIiwiZGVyaXZlZCIsImlzRGVyaXZlZCIsImFwcGx5SW5kZXBlbmRlbnRseSIsInRyYW5zaWVudCIsImlzVHJhbnNpZW50IiwidmFyaWFibGVBc3NpZ21lbnQiLCJ2YXJpYWJsZUFzc2lnbm1lbnRGcm9tVHlwZUFzc2VydGlvbiIsImFkZEFzc2lnbm1lbnQiLCJ0b0pTT04iLCJqc29uIiwidHlwZUpTT04iLCJ0eXBlVG9UeXBlSlNPTiIsIm5hbWUiLCJnZXROYW1lIiwiZnJvbUpTT04iLCJpbnN0YW50aWF0ZSIsImluc3RhbnRpYXRlVHlwZUFzc2VydGlvbiIsInRlcm1Gcm9tVHlwZUFzc2VydGlvbk5vZGUiLCJ0eXBlRnJvbUpTT04iLCJmcm9tU3RhdGVtZW50Iiwic3RhdGVtZW50Iiwic3RhdGVtZW50Tm9kZSIsInR5cGVBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZSIsInRlcm1UeXBlRXF1YWxUb09yU3ViVHlwZU9mVHlwZSIsImlzRXF1YWxUb09yU3ViVHlwZU9mIiwidGVybU5vZGUiLCJnZXRUZXJtTm9kZSIsImZpbmRUZXJtQnlUZXJtTm9kZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBa0JBOzs7ZUFBQTs7O2dDQWhCMkQ7a0VBRXJDOzBCQUVDO3lCQUNLOzZCQUNhO3NCQUNJOytCQUNBO3lCQUNFO3dCQUNLO3VCQUNNOzs7Ozs7QUFFMUQsTUFBTSxFQUFFQSxXQUFXLEVBQUUsR0FBR0MsbUNBQW1CLEVBQ3JDLEVBQUVDLEdBQUcsRUFBRUMsTUFBTSxFQUFFLEdBQUdDLHFDQUFxQjtNQUU3QyxXQUFlQyxJQUFBQSxnQkFBTSxFQUFDLE1BQU1DLHNCQUFzQkMsa0JBQVM7SUFDekQsWUFBWUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLElBQUksRUFBRUMsVUFBVSxFQUFFQyxJQUFJLEVBQUVDLElBQUksQ0FBRTtRQUN6RCxLQUFLLENBQUNMLFNBQVNDLFFBQVFDLE1BQU1DO1FBRTdCLElBQUksQ0FBQ0MsSUFBSSxHQUFHQTtRQUNaLElBQUksQ0FBQ0MsSUFBSSxHQUFHQTtJQUNkO0lBRUFDLFVBQVU7UUFDUixPQUFPLElBQUksQ0FBQ0YsSUFBSTtJQUNsQjtJQUVBRyxVQUFVO1FBQ1IsT0FBTyxJQUFJLENBQUNGLElBQUk7SUFDbEI7SUFFQUcsd0JBQXdCO1FBQ3RCLE1BQU1OLE9BQU8sSUFBSSxDQUFDTyxPQUFPLElBQ25CQyxvQkFBb0JSLE1BQU0sR0FBRztRQUVuQyxPQUFPUTtJQUNUO0lBRUFDLFVBQVVDLGNBQWMsRUFBRUMsZUFBZSxFQUFFQyxPQUFPLEVBQUVDLElBQUksRUFBRTtRQUN4RCxNQUFNZixVQUFVYSxpQkFDVkcsc0JBQXNCLElBQUksQ0FBQ0MsU0FBUyxJQUFJLEdBQUc7UUFFakRqQixRQUFRa0IsS0FBSyxDQUFDLENBQUMsaUJBQWlCLEVBQUVGLG9CQUFvQixt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
|
|
209
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2Fzc2VydGlvbi90eXBlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBicmVha1BvaW50VXRpbGl0aWVzLCBjb250aW51YXRpb25VdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCBBc3NlcnRpb24gZnJvbSBcIi4uL2Fzc2VydGlvblwiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IGluc3RhbnRpYXRlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9jb250ZXh0XCI7XG5pbXBvcnQgeyB0eXBlVG9UeXBlSlNPTiB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvanNvblwiO1xuaW1wb3J0IHsgaW5zdGFudGlhdGVUeXBlQXNzZXJ0aW9uIH0gZnJvbSBcIi4uLy4uL3Byb2Nlc3MvaW5zdGFudGlhdGVcIjtcbmltcG9ydCB7IHRlcm1Gcm9tVGVybUFuZFN1YnN0aXR1dGlvbnMgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL3N1YnN0aXR1dGlvbnNcIjtcbmltcG9ydCB7IHR5cGVBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvZWxlbWVudFwiO1xuaW1wb3J0IHsgdmFyaWFibGVBc3NpZ25tZW50RnJvbVR5cGVBc3NlcnRpb24gfSBmcm9tIFwiLi4vLi4vcHJvY2Vzcy9hc3NpZ25cIjtcbmltcG9ydCB7IGRlcml2ZSwgaXNEZXJpdmVkLCBpc0RlY2xhcmVkLCBpc1RyYW5zaWVudH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9zdGF0ZVwiO1xuXG5jb25zdCB7IHVuYnJlYWthYmxlIH0gPSBicmVha1BvaW50VXRpbGl0aWVzLFxuICAgICAgeyBhbGwsIGV4aXN0cyB9ID0gY29udGludWF0aW9uVXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgVHlwZUFzc2VydGlvbiBleHRlbmRzIEFzc2VydGlvbiB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdGVybSwgdHlwZSkge1xuICAgIHN1cGVyKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCk7XG5cbiAgICB0aGlzLnRlcm0gPSB0ZXJtO1xuICAgIHRoaXMudHlwZSA9IHR5cGU7XG4gIH1cblxuICBnZXRUZXJtKCkge1xuICAgIHJldHVybiB0aGlzLnRlcm07XG4gIH1cblxuICBnZXRUeXBlKCkge1xuICAgIHJldHVybiB0aGlzLnR5cGU7XG4gIH1cblxuICBnZXRUeXBlQXNzZXJ0aW9uTkJvZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIHR5cGVBc3NlcnRpb25Ob2RlID0gbm9kZTsgLy8vXG5cbiAgICByZXR1cm4gdHlwZUFzc2VydGlvbk5vZGU7XG4gIH1cblxuICBkaXNjaGFyZ2UoZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQsIC8vL1xuICAgICAgICAgIHR5cGVBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYERpc2NoYXJnaW5nIHRoZSAnJHt0eXBlQXNzZXJ0aW9uU3RyaW5nfScgdHlwZSBhc3NlcnRpb24uLi5gKTtcblxuICAgIGNvbnN0IHRlcm0gPSB0ZXJtRnJvbVRlcm1BbmRTdWJzdGl0dXRpb25zKHRoaXMudGVybSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gZGVyaXZlKChzdGF0ZSkgPT4ge1xuICAgICAgcmV0dXJuIHZhbGlkYXRlV2hlbkRlcml2ZWQodGVybSwgdGhpcy50eXBlLCBzdGF0ZSwgY29udGV4dCwgKHRlcm0sIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgc3BlY2lmaWNDb250ZXh0ID0gY29udGV4dDsgIC8vL1xuXG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLmRpc2NoYXJnZWQgdGhlICcke3R5cGVBc3NlcnRpb25TdHJpbmd9JyB0eXBlIGFzc2VydGlvbi5gKTtcblxuICAgICAgICByZXR1cm4gZm9yd2FyZChnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBiYWNrKTtcbiAgICAgIH0sIGJhY2spO1xuICAgIH0pO1xuICB9XG5cbiAgdmFsaWRhdGUgPSB1bmJyZWFrYWJsZShmdW5jdGlvbiAoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBsZXQgYXNzZXJ0aW9uO1xuXG4gICAgY29uc3QgdHlwZUFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3R5cGVBc3NlcnRpb25TdHJpbmd9JyB0eXBlIGFzc2VydGlvbi4uLmApO1xuXG4gICAgYXNzZXJ0aW9uID0gdGhpcy5maW5kQXNzZXJ0aW9uKGNvbnRleHQpO1xuXG4gICAgaWYgKGFzc2VydGlvbiAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgdHlwZUFzc2VydGlvbiA9IGFzc2VydGlvbjsgLy8vXG5cbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHt0eXBlQXNzZXJ0aW9uU3RyaW5nfScgdHlwZSBhc3NlcnRpb24gaXMgYWxyZWFkeSBwcmVzZW50LmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZCh0eXBlQXNzZXJ0aW9uLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9XG5cbiAgICBjb25zdCB2YWxpZGF0ZVR5cGUgPSB0aGlzLnZhbGlkYXRlVHlwZS5iaW5kKHRoaXMpO1xuXG4gICAgcmV0dXJuIGFsbChbXG4gICAgICB2YWxpZGF0ZVR5cGVcbiAgICBdLCBzdGF0ZSwgY29udGV4dCwgKHN0YXRlLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb25zdCB2YWxpZGF0ZVdoZW5EZWNsYXJlZCA9IHRoaXMudmFsaWRhdGVXaGVuRGVjbGFyZWQuYmluZCh0aGlzKSxcbiAgICAgICAgICAgIHZhbGlkYXRlV2hlbkRlcml2ZWQgPSB0aGlzLnZhbGlkYXRlV2hlbkRlcml2ZWQuYmluZCh0aGlzKTtcblxuICAgICAgcmV0dXJuIGV4aXN0cyhbXG4gICAgICAgIHZhbGlkYXRlV2hlbkRlY2xhcmVkLFxuICAgICAgICB2YWxpZGF0ZVdoZW5EZXJpdmVkXG4gICAgICBdLCBzdGF0ZSwgY29udGV4dCwgKHN0YXRlLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICAgIGFzc2VydGlvbiA9IHRoaXM7IC8vL1xuXG4gICAgICAgIHRoaXMuYXNzaWduKHN0YXRlLCBjb250ZXh0KTtcblxuICAgICAgICBjb250ZXh0LmFkZEFzc2VydGlvbihhc3NlcnRpb24pO1xuXG4gICAgICAgIGNvbnN0IHR5cGVBc3NlcnRpb24gPSBhc3NlcnRpb247IC8vL1xuXG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7dHlwZUFzc2VydGlvblN0cmluZ30nIHR5cGUgYXNzZXJ0aW9uLmApO1xuXG4gICAgICAgIHJldHVybiBmb3J3YXJkKHR5cGVBc3NlcnRpb24sIGNvbnRleHQsIGJhY2spO1xuICAgICAgfSwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH0pO1xuXG4gIHZhbGlkYXRlVHlwZShzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHR5cGVBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHt0eXBlQXNzZXJ0aW9uU3RyaW5nfScgdHlwZSBhc3NlcnRpb24ncyB0eXBlLi4uYCk7XG5cbiAgICBjb25zdCBub21pbmFsVHlwZU5hbWUgPSB0aGlzLnR5cGUuZ2V0Tm9taW5hbFR5cGVOYW1lKCksXG4gICAgICAgICAgdHlwZSA9IGNvbnRleHQuZmluZFR5cGVCeU5vbWluYWxUeXBlTmFtZShub21pbmFsVHlwZU5hbWUpO1xuXG4gICAgaWYgKHR5cGUgPT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHR5cGVTdHJpbmcgPSB0aGlzLnR5cGUuZ2V0U3RyaW5nKCk7XG5cbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHt0eXBlU3RyaW5nfScgdHlwZSBpcyBub3QgcHJlc2VudC5gKTtcblxuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xuXG4gICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHt0eXBlQXNzZXJ0aW9uU3RyaW5nfScgdHlwZSBhc3NlcnRpb24ncyB0eXBlLmApO1xuXG4gICAgcmV0dXJuIGZvcndhcmQoc3RhdGUsIGNvbnRleHQsIGJhY2spXG4gIH1cblxuICB2YWxpZGF0ZVdoZW5EZWNsYXJlZChzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGRlY2xhcmVkID0gaXNEZWNsYXJlZChzdGF0ZSk7XG5cbiAgICBpZiAoIWRlY2xhcmVkKSB7XG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH1cblxuICAgIGNvbnN0IHR5cGVBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3R5cGVBc3NlcnRpb25TdHJpbmd9JyBkZWNsYXJlZCB0eXBlIGFzc2VydGlvbi4uLmApO1xuXG4gICAgcmV0dXJuIHRoaXMudGVybS52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKHRlcm0sIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGxldCB2YWxpZGF0ZXNXaGVuRGVjbGFyZWQgPSBmYWxzZTtcblxuICAgICAgaWYgKHRlcm0gIT09IG51bGwpIHtcbiAgICAgICAgY29uc3QgdGVybVR5cGUgPSB0ZXJtLmdldFR5cGUoKSxcbiAgICAgICAgICAgICAgdGVybVR5cGVFcXVhbFRvVHlwZSA9IHRlcm1UeXBlLmlzRXF1YWxUbyh0aGlzLnR5cGUpLFxuICAgICAgICAgICAgICB0ZXJtVHlwZVN1cGVyVHlwZU9mVHlwZSA9IHRlcm1UeXBlLmlzU3VwZXJUeXBlT2YodGhpcy50eXBlKTtcblxuICAgICAgICBpZiAoZmFsc2UpIHtcbiAgICAgICAgICAvLy9cbiAgICAgICAgfSBlbHNlIGlmICh0ZXJtVHlwZUVxdWFsVG9UeXBlKSB7XG4gICAgICAgICAgdmFsaWRhdGVzV2hlbkRlY2xhcmVkID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIGlmICh0ZXJtVHlwZVN1cGVyVHlwZU9mVHlwZSkge1xuICAgICAgICAgIGNvbnN0IHRlcm1Fc3RhYmxpc2hlZCA9IHRlcm0uaXNFc3RhYmxpc2hlZCgpO1xuXG4gICAgICAgICAgaWYgKHRlcm1Fc3RhYmxpc2hlZCkge1xuICAgICAgICAgICAgdmFsaWRhdGVzV2hlbkRlY2xhcmVkID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKCF2YWxpZGF0ZXNXaGVuRGVjbGFyZWQpIHtcbiAgICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy50ZXJtID0gdGVybTtcblxuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHt0eXBlQXNzZXJ0aW9uU3RyaW5nfScgZGVjbGFyZWQgdHlwZSBhc3NlcnRpb24uYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHN0YXRlLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHZhbGlkYXRlV2hlbkRlcml2ZWQoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBkZXJpdmVkID0gaXNEZXJpdmVkKHN0YXRlKTtcblxuICAgIGlmICghZGVyaXZlZCkge1xuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICBjb25zdCB0eXBlQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHt0eXBlQXNzZXJ0aW9uU3RyaW5nfScgZGVyaXZlZCB0eXBlIGFzc2VydGlvbi4uLmApO1xuXG4gICAgcmV0dXJuIHZhbGlkYXRlV2hlbkRlcml2ZWQodGhpcy50ZXJtLCB0aGlzLnR5cGUsIHN0YXRlLCBjb250ZXh0LCAodGVybSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgdGhpcy50ZXJtID0gdGVybTtcblxuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHt0eXBlQXNzZXJ0aW9uU3RyaW5nfScgZGVyaXZlZCB0eXBlIGFzc2VydGlvbi5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoc3RhdGUsIGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgYXBwbHlJbmRlcGVuZGVudGx5KGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0LCAvLy9cbiAgICAgICAgICB0eXBlQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBBcHBseWluZyB0aGUgJyR7dHlwZUFzc2VydGlvblN0cmluZ30nIHR5cGUgYXNzZXJ0aW9uIGluZGVwZW5kZW50bHkuLi5gKTtcblxuICAgIGNvbnN0IHRlcm0gPSB0ZXJtRnJvbVRlcm1BbmRTdWJzdGl0dXRpb25zKHRoaXMudGVybSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gZGVyaXZlKChzdGF0ZSkgPT4ge1xuICAgICAgcmV0dXJuIHZhbGlkYXRlV2hlbkRlcml2ZWQodGVybSwgdGhpcy50eXBlLCBzdGF0ZSwgY29udGV4dCwgKHRlcm0sIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgc3BlY2lmaWNDb250ZXh0ID0gY29udGV4dDsgIC8vL1xuXG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLmFwcGxpZWQgdGhlICcke3R5cGVBc3NlcnRpb25TdHJpbmd9JyB0eXBlIGFzc2VydGlvbiBpbmRlcGVuZGVudGx5LmApO1xuXG4gICAgICAgIHJldHVybiBmb3J3YXJkKGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGJhY2spO1xuICAgICAgfSwgYmFjayk7XG4gICAgfSk7XG4gIH1cblxuICBhc3NpZ24oc3RhdGUsIGNvbnRleHQpIHtcbiAgICBjb25zdCBkZXJpdmVkID0gaXNEZXJpdmVkKHN0YXRlKSxcbiAgICAgICAgICB0cmFuc2llbnQgPSBpc1RyYW5zaWVudChzdGF0ZSk7XG5cbiAgICBpZiAoZGVyaXZlZCB8fCB0cmFuc2llbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB0eXBlQXNzZXJ0aW9uID0gdGhpcywgLy8vXG4gICAgICAgICAgdmFyaWFibGVBc3NpZ21lbnQgPSB2YXJpYWJsZUFzc2lnbm1lbnRGcm9tVHlwZUFzc2VydGlvbih0eXBlQXNzZXJ0aW9uLCBjb250ZXh0KTtcblxuICAgIGNvbnRleHQuYWRkQXNzaWdubWVudCh2YXJpYWJsZUFzc2lnbWVudCk7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgbGV0IGpzb247XG5cbiAgICBjb25zdCB0eXBlSlNPTiA9IHR5cGVUb1R5cGVKU09OKHRoaXMudHlwZSksXG4gICAgICAgICAgbmFtZSA9IHRoaXMuZ2V0TmFtZSgpLFxuICAgICAgICAgIHN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgdHlwZSA9IHR5cGVKU09OOyAgLy8vXG5cbiAgICBqc29uID0ge1xuICAgICAgbmFtZSxcbiAgICAgIHN0cmluZyxcbiAgICAgIHR5cGVcbiAgICB9O1xuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiVHlwZUFzc2VydGlvblwiO1xuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gICAgbGV0IHR5cGVBc3NlcnRpb24gPSBudWxsO1xuXG4gICAgY29uc3QgeyBuYW1lIH0gPSBqc29uO1xuXG4gICAgaWYgKHRoaXMubmFtZSA9PT0gbmFtZSkge1xuICAgICAgaW5zdGFudGlhdGUoKGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgICAgIHR5cGVBc3NlcnRpb25Ob2RlID0gaW5zdGFudGlhdGVUeXBlQXNzZXJ0aW9uKHN0cmluZywgY29udGV4dCksXG4gICAgICAgICAgICAgIG5vZGUgPSB0eXBlQXNzZXJ0aW9uTm9kZSwgLy8vXG4gICAgICAgICAgICAgIGJyZWFrUG9pbnQgPSBudWxsLFxuICAgICAgICAgICAgICB0ZXJtID0gdGVybUZyb21UeXBlQXNzZXJ0aW9uTm9kZSh0eXBlQXNzZXJ0aW9uTm9kZSwgY29udGV4dCksXG4gICAgICAgICAgICAgIHR5cGUgPSB0eXBlRnJvbVR5cGVBc3NlcnRpb25Ob2RlKHR5cGVBc3NlcnRpb25Ob2RlLCBjb250ZXh0KTtcblxuICAgICAgICBjb250ZXh0ID0gbnVsbDtcblxuICAgICAgICB0eXBlQXNzZXJ0aW9uID0gbmV3IFR5cGVBc3NlcnRpb24oY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB0ZXJtLCB0eXBlKTtcbiAgICAgIH0sIGNvbnRleHQpO1xuICAgIH1cblxuICAgIHJldHVybiB0eXBlQXNzZXJ0aW9uO1xuICB9XG5cbiAgc3RhdGljIGZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KSB7XG4gICAgY29uc3Qgc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudC5nZXROb2RlKCksXG4gICAgICAgICAgdHlwZUFzc2VydGlvbiA9IHR5cGVBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlLCBjb250ZXh0KTtcblxuICAgIHJldHVybiB0eXBlQXNzZXJ0aW9uO1xuICB9XG59KTtcblxuZnVuY3Rpb24gdmFsaWRhdGVXaGVuRGVyaXZlZCh0ZXJtLCB0eXBlLCBzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICByZXR1cm4gdGVybS52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKHRlcm0sIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICBjb25zdCB0ZXJtVHlwZSA9IHRlcm0uZ2V0VHlwZSgpLFxuICAgICAgICAgIHRlcm1UeXBlRXF1YWxUb09yU3ViVHlwZU9mVHlwZSA9IHRlcm1UeXBlLmlzRXF1YWxUb09yU3ViVHlwZU9mKHR5cGUpO1xuXG4gICAgaWYgKCF0ZXJtVHlwZUVxdWFsVG9PclN1YlR5cGVPZlR5cGUpIHtcbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfVxuXG4gICAgY29uc3QgdGVybUVzdGFibGlzaGVkID0gdGVybS5pc0VzdGFibGlzaGVkKCk7XG5cbiAgICBpZiAoIXRlcm1Fc3RhYmxpc2hlZCkge1xuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZm9yd2FyZCh0ZXJtLCBjb250ZXh0LCBiYWNrKTtcbiAgfSwgYmFjayk7XG59XG5cbmZ1bmN0aW9uIHRlcm1Gcm9tVHlwZUFzc2VydGlvbk5vZGUodHlwZUFzc2VydGlvbk5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgdGVybU5vZGUgPSB0eXBlQXNzZXJ0aW9uTm9kZS5nZXRUZXJtTm9kZSgpLFxuICAgICAgICB0ZXJtID0gY29udGV4dC5maW5kVGVybUJ5VGVybU5vZGUodGVybU5vZGUpO1xuXG4gIHJldHVybiB0ZXJtO1xufVxuXG5mdW5jdGlvbiB0eXBlRnJvbVR5cGVBc3NlcnRpb25Ob2RlKHR5cGVBc3NlcnRpb25Ob2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHR5cGVOYW1lID0gdHlwZUFzc2VydGlvbk5vZGUuZ2V0VHlwZU5hbWUoKSxcbiAgICAgICAgdHlwZSA9IGNvbnRleHQuZmluZFR5cGVCeVR5cGVOYW1lKHR5cGVOYW1lKTtcblxuICByZXR1cm4gdHlwZTtcbn0iXSwibmFtZXMiOlsidW5icmVha2FibGUiLCJicmVha1BvaW50VXRpbGl0aWVzIiwiYWxsIiwiZXhpc3RzIiwiY29udGludWF0aW9uVXRpbGl0aWVzIiwiZGVmaW5lIiwiVHlwZUFzc2VydGlvbiIsIkFzc2VydGlvbiIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsInRlcm0iLCJ0eXBlIiwiZ2V0VGVybSIsImdldFR5cGUiLCJnZXRUeXBlQXNzZXJ0aW9uTkJvZGUiLCJnZXROb2RlIiwidHlwZUFzc2VydGlvbk5vZGUiLCJkaXNjaGFyZ2UiLCJnZW5lcmFsQ29udGV4dCIsInNwZWNpZmljQ29udGV4dCIsImZvcndhcmQiLCJiYWNrIiwidHlwZUFzc2VydGlvblN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwidGVybUZyb21UZXJtQW5kU3Vic3RpdHV0aW9ucyIsImRlcml2ZSIsInN0YXRlIiwidmFsaWRhdGVXaGVuRGVyaXZlZCIsImRlYnVnIiwidmFsaWRhdGUiLCJhc3NlcnRpb24iLCJmaW5kQXNzZXJ0aW9uIiwidHlwZUFzc2VydGlvbiIsInZhbGlkYXRlVHlwZSIsImJpbmQiLCJ2YWxpZGF0ZVdoZW5EZWNsYXJlZCIsImFzc2lnbiIsImFkZEFzc2VydGlvbiIsIm5vbWluYWxUeXBlTmFtZSIsImdldE5vbWluYWxUeXBlTmFtZSIsImZpbmRUeXBlQnlOb21pbmFsVHlwZU5hbWUiLCJ0eXBlU3RyaW5nIiwiZGVjbGFyZWQiLCJpc0RlY2xhcmVkIiwidmFsaWRhdGVzV2hlbkRlY2xhcmVkIiwidGVybVR5cGUiLCJ0ZXJtVHlwZUVxdWFsVG9UeXBlIiwiaXNFcXVhbFRvIiwidGVybVR5cGVTdXBlclR5cGVPZlR5cGUiLCJpc1N1cGVyVHlwZU9mIiwidGVybUVzdGFibGlzaGVkIiwiaXNFc3RhYmxpc2hlZCIsImRlcml2ZWQiLCJpc0Rlcml2ZWQiLCJhcHBseUluZGVwZW5kZW50bHkiLCJ0cmFuc2llbnQiLCJpc1RyYW5zaWVudCIsInZhcmlhYmxlQXNzaWdtZW50IiwidmFyaWFibGVBc3NpZ25tZW50RnJvbVR5cGVBc3NlcnRpb24iLCJhZGRBc3NpZ25tZW50IiwidG9KU09OIiwianNvbiIsInR5cGVKU09OIiwidHlwZVRvVHlwZUpTT04iLCJuYW1lIiwiZ2V0TmFtZSIsImZyb21KU09OIiwiaW5zdGFudGlhdGUiLCJpbnN0YW50aWF0ZVR5cGVBc3NlcnRpb24iLCJ0ZXJtRnJvbVR5cGVBc3NlcnRpb25Ob2RlIiwidHlwZUZyb21UeXBlQXNzZXJ0aW9uTm9kZSIsImZyb21TdGF0ZW1lbnQiLCJzdGF0ZW1lbnQiLCJzdGF0ZW1lbnROb2RlIiwidHlwZUFzc2VydGlvbkZyb21TdGF0ZW1lbnROb2RlIiwidGVybVR5cGVFcXVhbFRvT3JTdWJUeXBlT2ZUeXBlIiwiaXNFcXVhbFRvT3JTdWJUeXBlT2YiLCJ0ZXJtTm9kZSIsImdldFRlcm1Ob2RlIiwiZmluZFRlcm1CeVRlcm1Ob2RlIiwidHlwZU5hbWUiLCJnZXRUeXBlTmFtZSIsImZpbmRUeXBlQnlUeXBlTmFtZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBa0JBOzs7ZUFBQTs7O2dDQWhCMkQ7a0VBRXJDOzBCQUVDO3lCQUNLO3NCQUNHOzZCQUNVOytCQUNJO3lCQUNFO3dCQUNLO3VCQUNNOzs7Ozs7QUFFMUQsTUFBTSxFQUFFQSxXQUFXLEVBQUUsR0FBR0MsbUNBQW1CLEVBQ3JDLEVBQUVDLEdBQUcsRUFBRUMsTUFBTSxFQUFFLEdBQUdDLHFDQUFxQjtNQUU3QyxXQUFlQyxJQUFBQSxnQkFBTSxFQUFDLE1BQU1DLHNCQUFzQkMsa0JBQVM7SUFDekQsWUFBWUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLElBQUksRUFBRUMsVUFBVSxFQUFFQyxJQUFJLEVBQUVDLElBQUksQ0FBRTtRQUN6RCxLQUFLLENBQUNMLFNBQVNDLFFBQVFDLE1BQU1DO1FBRTdCLElBQUksQ0FBQ0MsSUFBSSxHQUFHQTtRQUNaLElBQUksQ0FBQ0MsSUFBSSxHQUFHQTtJQUNkO0lBRUFDLFVBQVU7UUFDUixPQUFPLElBQUksQ0FBQ0YsSUFBSTtJQUNsQjtJQUVBRyxVQUFVO1FBQ1IsT0FBTyxJQUFJLENB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
|
|
@@ -12,7 +12,6 @@ const _occamlanguages = require("occam-languages");
|
|
|
12
12
|
const _elements = require("../elements");
|
|
13
13
|
const _state = require("../utilities/state");
|
|
14
14
|
const _instantiate = require("../process/instantiate");
|
|
15
|
-
const _element = require("../utilities/element");
|
|
16
15
|
const _unify = require("../process/unify");
|
|
17
16
|
const _validate = require("../process/validate");
|
|
18
17
|
const _context = require("../utilities/context");
|
|
@@ -74,6 +73,7 @@ const _default = (0, _elements.define)(class Combinator extends _occamlanguages.
|
|
|
74
73
|
const includeType = false, combinatorString = this.getString(includeType); ///
|
|
75
74
|
context.trace(`Validating the '${combinatorString}' combinator's statement...`);
|
|
76
75
|
return (0, _validate.validateStatementAsCombinator)(this.statement, context, (context, back)=>{
|
|
76
|
+
context.addStatement(this.statement);
|
|
77
77
|
context.debug(`...validated the '${combinatorString}' combinator's statement.`);
|
|
78
78
|
return forward(state, context, back);
|
|
79
79
|
}, back);
|
|
@@ -105,12 +105,16 @@ const _default = (0, _elements.define)(class Combinator extends _occamlanguages.
|
|
|
105
105
|
let combinator;
|
|
106
106
|
(0, _context.instantiate)((context)=>{
|
|
107
107
|
(0, _context.unserialise)((json, context)=>{
|
|
108
|
-
const { string } = json, combinatorNode = (0, _instantiate.instantiateCombinator)(string, context), node = combinatorNode, breakPoint = null, statement =
|
|
108
|
+
const { string } = json, combinatorNode = (0, _instantiate.instantiateCombinator)(string, context), node = combinatorNode, breakPoint = null, statement = statementFromCombinatorNode(combinatorNode, context);
|
|
109
109
|
combinator = new Combinator(context, string, node, breakPoint, statement);
|
|
110
110
|
}, json, context);
|
|
111
111
|
}, context);
|
|
112
112
|
return combinator;
|
|
113
113
|
}
|
|
114
114
|
});
|
|
115
|
+
function statementFromCombinatorNode(combinatorNode, context) {
|
|
116
|
+
const statementNode = combinatorNode.getStatementNode(), statement = context.findStatementByStatementNode(statementNode);
|
|
117
|
+
return statement;
|
|
118
|
+
}
|
|
115
119
|
|
|
116
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2NvbWJpbmF0b3IuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IEVsZW1lbnQsIGJyZWFrUG9pbnRVdGlsaXRpZXMsIGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyBkZXNpc3QsIGRlY2xhcmUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3N0YXRlXCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZUNvbWJpbmF0b3IgfSBmcm9tIFwiLi4vcHJvY2Vzcy9pbnN0YW50aWF0ZVwiO1xuaW1wb3J0IHsgc3RhdGVtZW50RnJvbUNvbWJpbmF0b3JOb2RlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9lbGVtZW50XCI7XG5pbXBvcnQgeyB1bmlmeVN0YXRlbWVudFdpdGhDb21iaW5hdG9yIH0gZnJvbSBcIi4uL3Byb2Nlc3MvdW5pZnlcIjtcbmltcG9ydCB7IHZhbGlkYXRlU3RhdGVtZW50QXNDb21iaW5hdG9yIH0gZnJvbSBcIi4uL3Byb2Nlc3MvdmFsaWRhdGVcIjtcbmltcG9ydCB7IGlzb2xhdGUsIGF0dGVtcHQsIHNlcmlhbGlzZSwgdW5zZXJpYWxpc2UsIGluc3RhbnRpYXRlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9jb250ZXh0XCI7XG5cbmNvbnN0IHsgdW5icmVha2FibGUgfSA9IGJyZWFrUG9pbnRVdGlsaXRpZXMsXG4gICAgICB7IGN1dCwgZXhpc3RzIH0gPSBjb250aW51YXRpb25VdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBDb21iaW5hdG9yIGV4dGVuZHMgRWxlbWVudCB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgc3RhdGVtZW50KSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50KTtcblxuICAgIHRoaXMuc3RhdGVtZW50ID0gc3RhdGVtZW50O1xuICB9XG5cbiAgZ2V0U3RhdGVtZW50KCkge1xuICAgIHJldHVybiB0aGlzLnN0YXRlbWVudDtcbiAgfVxuXG4gIGdldENvbWJpbmF0b3J5Tm9kZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5nZXROb2RlKCksXG4gICAgICAgICAgY29tYmluYXRvck5vZGUgPSBub2RlOyAgLy8vXG5cbiAgICByZXR1cm4gY29tYmluYXRvck5vZGU7XG4gIH1cblxuICBpc01hbGZvcm1lZCgpIHtcbiAgICBjb25zdCBjb21iaW5hdG9yeU5vZGUgPSB0aGlzLmdldENvbWJpbmF0b3J5Tm9kZSgpLFxuICAgICAgICAgIG1hbGZvcm1lZCA9IGNvbWJpbmF0b3J5Tm9kZS5pc01hbGZvcm1lZCgpO1xuXG4gICAgcmV0dXJuIG1hbGZvcm1lZDtcbiAgfVxuXG4gIHZlcmlmeSA9IHVuYnJlYWthYmxlKGZ1bmN0aW9uIChjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgZm9yd2FyZCA9IGN1dChmb3J3YXJkLCBiYWNrKTsgLy8vXG5cbiAgICBjb25zdCBpbmNsdWRlVHlwZSA9IGZhbHNlLFxuICAgICAgICAgIGNibWJpbmF0b3JTdHJpbmcgPSB0aGlzLmdldFN0cmluZyhpbmNsdWRlVHlwZSk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7Y2JtYmluYXRvclN0cmluZ30nIGNibWJpbmF0b3IuLi5gKTtcblxuICAgIGNvbnN0IG1hbGZvcm1lZCA9IHRoaXMuaXNNYWxmb3JtZWQoKTtcblxuICAgIGlmIChtYWxmb3JtZWQpIHtcbiAgICAgIGNvbnRleHQudHJhY2UoYFVuYWJsZSB0byB2ZXJpZnkgdGhlICcke2NibWJpbmF0b3JTdHJpbmd9JyBjYm1iaW5hdG9yIGJlY2F1c2UgaXQgaXMgbWFsZm9ybWVkLmApO1xuXG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH1cblxuICAgIHJldHVybiBkZWNsYXJlKChzdGF0ZSkgPT4ge1xuICAgICAgcmV0dXJuIGRlc2lzdCgoc3RhdGUpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIChjYm1iaW5hdG9yLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke2NibWJpbmF0b3JTdHJpbmd9JyBjYm1iaW5hdG9yLmApO1xuXG4gICAgICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgICAgIH0sIGJhY2spO1xuICAgICAgfSwgc3RhdGUpO1xuICAgIH0pO1xuICB9KTtcblxuICB2YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGluY2x1ZGVUeXBlID0gZmFsc2UsXG4gICAgICAgICAgY29tYmluYXRvclN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKGluY2x1ZGVUeXBlKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7Y29tYmluYXRvclN0cmluZ30nIGNvbWJpbmF0b3IuLi5gKTtcblxuICAgIHJldHVybiBpc29sYXRlKChzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgICAgcmV0dXJuIGF0dGVtcHQoKGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgdmFsaWRhdGVTdGF0ZW1lbnRBc0NvbWJpbmF0b3IgPSB0aGlzLnZhbGlkYXRlU3RhdGVtZW50QXNDb21iaW5hdG9yLmJpbmQodGhpcyk7XG5cbiAgICAgICAgcmV0dXJuIGV4aXN0cyhbXG4gICAgICAgICAgdmFsaWRhdGVTdGF0ZW1lbnRBc0NvbWJpbmF0b3JcbiAgICAgICAgXSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICAgIHRoaXMuY29tbWl0KGNvbnRleHQpO1xuXG4gICAgICAgICAgcmV0dXJuIGZvcndhcmQoYmFjayk7XG4gICAgICAgIH0sIGJhY2spO1xuICAgICAgfSwgY29udGV4dCk7XG4gICAgfSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29uc3QgY29tYmluYXRvciA9IHRoaXM7ICAvLy9cblxuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtjb21iaW5hdG9yU3RyaW5nfScgY29tYmluYXRvci5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoY29tYmluYXRvciwgY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB2YWxpZGF0ZVN0YXRlbWVudEFzQ29tYmluYXRvcihzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGluY2x1ZGVUeXBlID0gZmFsc2UsXG4gICAgICAgICAgY29tYmluYXRvclN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKGluY2x1ZGVUeXBlKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7Y29tYmluYXRvclN0cmluZ30nIGNvbWJpbmF0b3IncyBzdGF0ZW1lbnQuLi5gKTtcblxuICAgIHJldHVybiB2YWxpZGF0ZVN0YXRlbWVudEFzQ29tYmluYXRvcih0aGlzLnN0YXRlbWVudCwgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7Y29tYmluYXRvclN0cmluZ30nIGNvbWJpbmF0b3IncyBzdGF0ZW1lbnQuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHN0YXRlLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHVuaWZ5U3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHN0YXRlbWVudFN0cmluZyA9IHN0YXRlbWVudC5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBjb21iaW5hdG9yU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCB3aXRoIHRoZSAnJHtjb21iaW5hdG9yU3RyaW5nfScgY29tYmluYXRvci4uLmApO1xuXG4gICAgY29uc3QgY29tYmluYXRvciA9IHRoaXMsIC8vL1xuICAgICAgICAgIGdlbmVyYWxDb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksIC8vL1xuICAgICAgICAgIHNwZWNpZmljQ29udGV4dCA9IGNvbnRleHQ7IC8vL1xuXG4gICAgcmV0dXJuIHVuaWZ5U3RhdGVtZW50V2l0aENvbWJpbmF0b3Ioc3RhdGVtZW50LCBjb21iaW5hdG9yLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCAoZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29uc3QgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dDsgLy8vXG5cbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCB3aXRoIHRoZSAnJHtjb21iaW5hdG9yU3RyaW5nfScgY29tYmluYXRvci5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoc3RhdGVtZW50LCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICBsZXQganNvbjtcblxuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIHNlcmlhbGlzZSgoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3Qgc3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTtcblxuICAgICAganNvbiA9IHtcbiAgICAgICAgY29udGV4dCxcbiAgICAgICAgc3RyaW5nXG4gICAgICB9O1xuICAgIH0sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiQ29tYmluYXRvclwiO1xuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gICAgbGV0IGNvbWJpbmF0b3I7XG5cbiAgICBpbnN0YW50aWF0ZSgoY29udGV4dCkgPT4ge1xuICAgICAgdW5zZXJpYWxpc2UoKGpzb24sIGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgICAgIGNvbWJpbmF0b3JOb2RlID0gaW5zdGFudGlhdGVDb21iaW5hdG9yKHN0cmluZywgY29udGV4dCksXG4gICAgICAgICAgICAgIG5vZGUgPSBjb21iaW5hdG9yTm9kZSwgIC8vL1xuICAgICAgICAgICAgICBicmVha1BvaW50ID0gbnVsbCxcbiAgICAgICAgICAgICAgc3RhdGVtZW50ID0gc3RhdGVtZW50RnJvbUNvbWJpbmF0b3JOb2RlKGNvbWJpbmF0b3JOb2RlLCBjb250ZXh0KTtcblxuICAgICAgICBjb21iaW5hdG9yID0gbmV3IENvbWJpbmF0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCBzdGF0ZW1lbnQpO1xuICAgICAgfSwganNvbiwgY29udGV4dCk7XG4gICAgfSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gY29tYmluYXRvcjtcbiAgfVxufSk7XG4iXSwibmFtZXMiOlsidW5icmVha2FibGUiLCJicmVha1BvaW50VXRpbGl0aWVzIiwiY3V0IiwiZXhpc3RzIiwiY29udGludWF0aW9uVXRpbGl0aWVzIiwiZGVmaW5lIiwiQ29tYmluYXRvciIsIkVsZW1lbnQiLCJjb250ZXh0Iiwic3RyaW5nIiwibm9kZSIsImJyZWFrUG9pbnQiLCJzdGF0ZW1lbnQiLCJnZXRTdGF0ZW1lbnQiLCJnZXRDb21iaW5hdG9yeU5vZGUiLCJnZXROb2RlIiwiY29tYmluYXRvck5vZGUiLCJpc01hbGZvcm1lZCIsImNvbWJpbmF0b3J5Tm9kZSIsIm1hbGZvcm1lZCIsInZlcmlmeSIsImZvcndhcmQiLCJiYWNrIiwiaW5jbHVkZVR5cGUiLCJjYm1iaW5hdG9yU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJkZWNsYXJlIiwic3RhdGUiLCJkZXNpc3QiLCJ2YWxpZGF0ZSIsImNibWJpbmF0b3IiLCJkZWJ1ZyIsImNvbWJpbmF0b3JTdHJpbmciLCJpc29sYXRlIiwiYXR0ZW1wdCIsInZhbGlkYXRlU3RhdGVtZW50QXNDb21iaW5hdG9yIiwiYmluZCIsImNvbW1pdCIsImNvbWJpbmF0b3IiLCJ1bmlmeVN0YXRlbWVudCIsInN0YXRlbWVudFN0cmluZyIsImdlbmVyYWxDb250ZXh0IiwiZ2V0Q29udGV4dCIsInNwZWNpZmljQ29udGV4dCIsInVuaWZ5U3RhdGVtZW50V2l0aENvbWJpbmF0b3IiLCJ0b0pTT04iLCJqc29uIiwic2VyaWFsaXNlIiwibmFtZSIsImZyb21KU09OIiwiaW5zdGFudGlhdGUiLCJ1bnNlcmlhbGlzZSIsImluc3RhbnRpYXRlQ29tYmluYXRvciIsInN0YXRlbWVudEZyb21Db21iaW5hdG9yTm9kZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBZUE7OztlQUFBOzs7Z0NBYm9FOzBCQUU3Qzt1QkFDUzs2QkFDTTt5QkFDTTt1QkFDQzswQkFDQzt5QkFDd0I7QUFFdEUsTUFBTSxFQUFFQSxXQUFXLEVBQUUsR0FBR0MsbUNBQW1CLEVBQ3JDLEVBQUVDLEdBQUcsRUFBRUMsTUFBTSxFQUFFLEdBQUdDLHFDQUFxQjtNQUU3QyxXQUFlQyxJQUFBQSxnQkFBTSxFQUFDLE1BQU1DLG1CQUFtQkMsdUJBQU87SUFDcEQsWUFBWUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLElBQUksRUFBRUMsVUFBVSxFQUFFQyxTQUFTLENBQUU7UUFDeEQsS0FBSyxDQUFDSixTQUFTQyxRQUFRQyxNQUFNQztRQUU3QixJQUFJLENBQUNDLFNBQVMsR0FBR0E7SUFDbkI7SUFFQUMsZUFBZTtRQUNiLE9BQU8sSUFBSSxDQUFDRCxTQUFTO0lBQ3ZCO0lBRUFFLHFCQUFxQjtRQUNu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
|
|
120
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2NvbWJpbmF0b3IuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IEVsZW1lbnQsIGJyZWFrUG9pbnRVdGlsaXRpZXMsIGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyBkZXNpc3QsIGRlY2xhcmUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3N0YXRlXCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZUNvbWJpbmF0b3IgfSBmcm9tIFwiLi4vcHJvY2Vzcy9pbnN0YW50aWF0ZVwiO1xuaW1wb3J0IHsgdW5pZnlTdGF0ZW1lbnRXaXRoQ29tYmluYXRvciB9IGZyb20gXCIuLi9wcm9jZXNzL3VuaWZ5XCI7XG5pbXBvcnQgeyB2YWxpZGF0ZVN0YXRlbWVudEFzQ29tYmluYXRvciB9IGZyb20gXCIuLi9wcm9jZXNzL3ZhbGlkYXRlXCI7XG5pbXBvcnQgeyBpc29sYXRlLCBhdHRlbXB0LCBzZXJpYWxpc2UsIHVuc2VyaWFsaXNlLCBpbnN0YW50aWF0ZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvY29udGV4dFwiO1xuXG5jb25zdCB7IHVuYnJlYWthYmxlIH0gPSBicmVha1BvaW50VXRpbGl0aWVzLFxuICAgICAgeyBjdXQsIGV4aXN0cyB9ID0gY29udGludWF0aW9uVXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgQ29tYmluYXRvciBleHRlbmRzIEVsZW1lbnQge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHN0YXRlbWVudCkge1xuICAgIHN1cGVyKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCk7XG5cbiAgICB0aGlzLnN0YXRlbWVudCA9IHN0YXRlbWVudDtcbiAgfVxuXG4gIGdldFN0YXRlbWVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZW1lbnQ7XG4gIH1cblxuICBnZXRDb21iaW5hdG9yeU5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIGNvbWJpbmF0b3JOb2RlID0gbm9kZTsgIC8vL1xuXG4gICAgcmV0dXJuIGNvbWJpbmF0b3JOb2RlO1xuICB9XG5cbiAgaXNNYWxmb3JtZWQoKSB7XG4gICAgY29uc3QgY29tYmluYXRvcnlOb2RlID0gdGhpcy5nZXRDb21iaW5hdG9yeU5vZGUoKSxcbiAgICAgICAgICBtYWxmb3JtZWQgPSBjb21iaW5hdG9yeU5vZGUuaXNNYWxmb3JtZWQoKTtcblxuICAgIHJldHVybiBtYWxmb3JtZWQ7XG4gIH1cblxuICB2ZXJpZnkgPSB1bmJyZWFrYWJsZShmdW5jdGlvbiAoY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGZvcndhcmQgPSBjdXQoZm9yd2FyZCwgYmFjayk7IC8vL1xuXG4gICAgY29uc3QgaW5jbHVkZVR5cGUgPSBmYWxzZSxcbiAgICAgICAgICBjYm1iaW5hdG9yU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoaW5jbHVkZVR5cGUpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke2NibWJpbmF0b3JTdHJpbmd9JyBjYm1iaW5hdG9yLi4uYCk7XG5cbiAgICBjb25zdCBtYWxmb3JtZWQgPSB0aGlzLmlzTWFsZm9ybWVkKCk7XG5cbiAgICBpZiAobWFsZm9ybWVkKSB7XG4gICAgICBjb250ZXh0LnRyYWNlKGBVbmFibGUgdG8gdmVyaWZ5IHRoZSAnJHtjYm1iaW5hdG9yU3RyaW5nfScgY2JtYmluYXRvciBiZWNhdXNlIGl0IGlzIG1hbGZvcm1lZC5gKTtcblxuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGVjbGFyZSgoc3RhdGUpID0+IHtcbiAgICAgIHJldHVybiBkZXNpc3QoKHN0YXRlKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAoY2JtYmluYXRvciwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtjYm1iaW5hdG9yU3RyaW5nfScgY2JtYmluYXRvci5gKTtcblxuICAgICAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgICAgICB9LCBiYWNrKTtcbiAgICAgIH0sIHN0YXRlKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgdmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBpbmNsdWRlVHlwZSA9IGZhbHNlLFxuICAgICAgICAgIGNvbWJpbmF0b3JTdHJpbmcgPSB0aGlzLmdldFN0cmluZyhpbmNsdWRlVHlwZSk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2NvbWJpbmF0b3JTdHJpbmd9JyBjb21iaW5hdG9yLi4uYCk7XG5cbiAgICByZXR1cm4gaXNvbGF0ZSgoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spID0+IHtcbiAgICAgIHJldHVybiBhdHRlbXB0KChjb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IHZhbGlkYXRlU3RhdGVtZW50QXNDb21iaW5hdG9yID0gdGhpcy52YWxpZGF0ZVN0YXRlbWVudEFzQ29tYmluYXRvci5iaW5kKHRoaXMpO1xuXG4gICAgICAgIHJldHVybiBleGlzdHMoW1xuICAgICAgICAgIHZhbGlkYXRlU3RhdGVtZW50QXNDb21iaW5hdG9yXG4gICAgICAgIF0sIHN0YXRlLCBjb250ZXh0LCAoc3RhdGUsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgICB0aGlzLmNvbW1pdChjb250ZXh0KTtcblxuICAgICAgICAgIHJldHVybiBmb3J3YXJkKGJhY2spO1xuICAgICAgICB9LCBiYWNrKTtcbiAgICAgIH0sIGNvbnRleHQpO1xuICAgIH0sIHN0YXRlLCBjb250ZXh0LCAoc3RhdGUsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnN0IGNvbWJpbmF0b3IgPSB0aGlzOyAgLy8vXG5cbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7Y29tYmluYXRvclN0cmluZ30nIGNvbWJpbmF0b3IuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGNvbWJpbmF0b3IsIGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdmFsaWRhdGVTdGF0ZW1lbnRBc0NvbWJpbmF0b3Ioc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBpbmNsdWRlVHlwZSA9IGZhbHNlLFxuICAgICAgICAgIGNvbWJpbmF0b3JTdHJpbmcgPSB0aGlzLmdldFN0cmluZyhpbmNsdWRlVHlwZSk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2NvbWJpbmF0b3JTdHJpbmd9JyBjb21iaW5hdG9yJ3Mgc3RhdGVtZW50Li4uYCk7XG5cbiAgICByZXR1cm4gdmFsaWRhdGVTdGF0ZW1lbnRBc0NvbWJpbmF0b3IodGhpcy5zdGF0ZW1lbnQsIGNvbnRleHQsIChjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb250ZXh0LmFkZFN0YXRlbWVudCh0aGlzLnN0YXRlbWVudCk7XG5cbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7Y29tYmluYXRvclN0cmluZ30nIGNvbWJpbmF0b3IncyBzdGF0ZW1lbnQuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHN0YXRlLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHVuaWZ5U3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHN0YXRlbWVudFN0cmluZyA9IHN0YXRlbWVudC5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBjb21iaW5hdG9yU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCB3aXRoIHRoZSAnJHtjb21iaW5hdG9yU3RyaW5nfScgY29tYmluYXRvci4uLmApO1xuXG4gICAgY29uc3QgY29tYmluYXRvciA9IHRoaXMsIC8vL1xuICAgICAgICAgIGdlbmVyYWxDb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksIC8vL1xuICAgICAgICAgIHNwZWNpZmljQ29udGV4dCA9IGNvbnRleHQ7IC8vL1xuXG4gICAgcmV0dXJuIHVuaWZ5U3RhdGVtZW50V2l0aENvbWJpbmF0b3Ioc3RhdGVtZW50LCBjb21iaW5hdG9yLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCAoZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29uc3QgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dDsgLy8vXG5cbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCB3aXRoIHRoZSAnJHtjb21iaW5hdG9yU3RyaW5nfScgY29tYmluYXRvci5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoc3RhdGVtZW50LCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICBsZXQganNvbjtcblxuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIHNlcmlhbGlzZSgoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3Qgc3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTtcblxuICAgICAganNvbiA9IHtcbiAgICAgICAgY29udGV4dCxcbiAgICAgICAgc3RyaW5nXG4gICAgICB9O1xuICAgIH0sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiQ29tYmluYXRvclwiO1xuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gICAgbGV0IGNvbWJpbmF0b3I7XG5cbiAgICBpbnN0YW50aWF0ZSgoY29udGV4dCkgPT4ge1xuICAgICAgdW5zZXJpYWxpc2UoKGpzb24sIGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgICAgIGNvbWJpbmF0b3JOb2RlID0gaW5zdGFudGlhdGVDb21iaW5hdG9yKHN0cmluZywgY29udGV4dCksXG4gICAgICAgICAgICAgIG5vZGUgPSBjb21iaW5hdG9yTm9kZSwgIC8vL1xuICAgICAgICAgICAgICBicmVha1BvaW50ID0gbnVsbCxcbiAgICAgICAgICAgICAgc3RhdGVtZW50ID0gc3RhdGVtZW50RnJvbUNvbWJpbmF0b3JOb2RlKGNvbWJpbmF0b3JOb2RlLCBjb250ZXh0KTtcblxuICAgICAgICBjb21iaW5hdG9yID0gbmV3IENvbWJpbmF0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCBzdGF0ZW1lbnQpO1xuICAgICAgfSwganNvbiwgY29udGV4dCk7XG4gICAgfSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gY29tYmluYXRvcjtcbiAgfVxufSk7XG5cbmZ1bmN0aW9uIHN0YXRlbWVudEZyb21Db21iaW5hdG9yTm9kZShjb21iaW5hdG9yTm9kZSwgY29udGV4dCkge1xuICBjb25zdCBzdGF0ZW1lbnROb2RlID0gY29tYmluYXRvck5vZGUuZ2V0U3RhdGVtZW50Tm9kZSgpLFxuICAgICAgICBzdGF0ZW1lbnQgPSBjb250ZXh0LmZpbmRTdGF0ZW1lbnRCeVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSk7XG5cbiAgcmV0dXJuIHN0YXRlbWVudDtcbn1cbiJdLCJuYW1lcyI6WyJ1bmJyZWFrYWJsZSIsImJyZWFrUG9pbnRVdGlsaXRpZXMiLCJjdXQiLCJleGlzdHMiLCJjb250aW51YXRpb25VdGlsaXRpZXMiLCJkZWZpbmUiLCJDb21iaW5hdG9yIiwiRWxlbWVudCIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsInN0YXRlbWVudCIsImdldFN0YXRlbWVudCIsImdldENvbWJpbmF0b3J5Tm9kZSIsImdldE5vZGUiLCJjb21iaW5hdG9yTm9kZSIsImlzTWFsZm9ybWVkIiwiY29tYmluYXRvcnlOb2RlIiwibWFsZm9ybWVkIiwidmVyaWZ5IiwiZm9yd2FyZCIsImJhY2siLCJpbmNsdWRlVHlwZSIsImNibWJpbmF0b3JTdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsImRlY2xhcmUiLCJzdGF0ZSIsImRlc2lzdCIsInZhbGlkYXRlIiwiY2JtYmluYXRvciIsImRlYnVnIiwiY29tYmluYXRvclN0cmluZyIsImlzb2xhdGUiLCJhdHRlbXB0IiwidmFsaWRhdGVTdGF0ZW1lbnRBc0NvbWJpbmF0b3IiLCJiaW5kIiwiY29tbWl0IiwiY29tYmluYXRvciIsImFkZFN0YXRlbWVudCIsInVuaWZ5U3RhdGVtZW50Iiwic3RhdGVtZW50U3RyaW5nIiwiZ2VuZXJhbENvbnRleHQiLCJnZXRDb250ZXh0Iiwic3BlY2lmaWNDb250ZXh0IiwidW5pZnlTdGF0ZW1lbnRXaXRoQ29tYmluYXRvciIsInRvSlNPTiIsImpzb24iLCJzZXJpYWxpc2UiLCJuYW1lIiwiZnJvbUpTT04iLCJpbnN0YW50aWF0ZSIsInVuc2VyaWFsaXNlIiwiaW5zdGFudGlhdGVDb21iaW5hdG9yIiwic3RhdGVtZW50RnJvbUNvbWJpbmF0b3JOb2RlIiwic3RhdGVtZW50Tm9kZSIsImdldFN0YXRlbWVudE5vZGUiLCJmaW5kU3RhdGVtZW50QnlTdGF0ZW1lbnROb2RlIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFjQTs7O2VBQUE7OztnQ0Fab0U7MEJBRTdDO3VCQUNTOzZCQUNNO3VCQUNPOzBCQUNDO3lCQUN3QjtBQUV0RSxNQUFNLEVBQUVBLFdBQVcsRUFBRSxHQUFHQyxtQ0FBbUIsRUFDckMsRUFBRUMs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
|