@glimmer/application-test-helpers
Advanced tools
Comparing version 0.14.0-alpha.8 to 0.14.0-alpha.9
@@ -224,2 +224,2 @@ 'use strict'; | ||
exports.buildApp = buildApp; | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2FwcGxpY2F0aW9uLXRlc3QtaGVscGVycy9zcmMvYXBwLWJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFFQTs7OztBQUNBOztBQUNBOzs7O0FBVUE7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBR0E7O0FBRUE7Ozs7OztBQWFNLE1BQU8sZUFBUCxTQUErQixxQkFBL0IsQ0FBMEM7UUFBbkMsZSxHQUFBLGU7QUFZYixTQUFTLFVBQVQsQ0FBb0IsTUFBcEIsRUFBb0MsSUFBcEMsRUFBZ0Q7QUFDOUMsV0FBTztBQUNMLGNBQU0sVUFERDtBQUVMLGNBRks7QUFHTCxZQUhLO0FBSUwsY0FBTTtBQUNKLGtCQURJO0FBRUo7QUFGSTtBQUpELEtBQVA7QUFTRDtBQUVLLE1BQU8sVUFBUCxDQUFpQjtBQU1yQixnQkFBWSxJQUFaLEVBQTBCLE9BQTFCLEVBQXVEO0FBSnZELGFBQUEsT0FBQSxHQUF5QixFQUF6QjtBQUNBLGFBQUEsU0FBQSxHQUEwQixFQUExQjtBQUlFLGFBQUssUUFBTCxHQUFnQixJQUFoQjtBQUNBLGFBQUssT0FBTCxHQUFlLE9BQWY7QUFDQSxhQUFLLE9BQUwsQ0FDRSxzQkFBc0IsS0FBSyxRQUFRLDBCQURyQyxJQUVJLEtBQUssT0FBTCxDQUFhLGdCQUZqQjtBQUdBLGFBQUssUUFBTCxDQUFjLE1BQWQsRUFBc0IsU0FBdEI7QUFDQSxhQUFLLE1BQUwsQ0FBWSxRQUFaLEVBQXNCLHdCQUF0QixFQUFtQyxJQUFuQztBQUNEO0FBRUQsYUFBUyxJQUFULEVBQXVCLFFBQXZCLEVBQXVDO0FBQ3JDLDBCQUNFLEtBQUssTUFBTCxDQUFZLENBQVosTUFBbUIsS0FBSyxNQUFMLENBQVksQ0FBWixFQUFlLFdBQWYsRUFEckIsRUFFRSxpREFGRjtBQUtBLFlBQUksWUFBWSxhQUFhLEtBQUssUUFBUSxlQUFlLElBQUksRUFBN0Q7QUFDQSxhQUFLLE9BQUwsQ0FBYSxTQUFiLElB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Q0FBNkMsVUFBZ0MsRUFBN0UsRUFBK0U7QUFDN0UsWUFBUSxPQUFSLEdBQWtCLFFBQVEsT0FBUixJQUFtQixVQUFyQztBQUNBLFlBQVEsTUFBUixHQUFpQixRQUFRLE1BQVIsSUFBa0Isa0JBQW5DO0FBQ0EsWUFBUSxnQkFBUixHQUEyQixRQUFRLGdCQUFSLElBQTRCLDJCQUF2RDtBQUNBLFlBQVEsZ0JBQVIsR0FDRSxRQUFRLGdCQUFSLElBQTZCLGVBRC9CO0FBR0EsV0FBTyxJQUFJLFVBQUosQ0FBZSxRQUFRLE9BQXZCLEVBQWdDLE9BQWhDLENBQVA7QUFDRDtRQUVRLFEsR0FBQSxRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlc29sdmVyLCB7IEJhc2ljTW9kdWxlUmVnaXN0cnksIFJlc29sdmVyQ29uZmlndXJhdGlvbiB9IGZyb20gJ0BnbGltbWVyL3Jlc29sdmVyJztcbmltcG9ydCB7IERpY3QsIE1vZHVsZUxvY2F0b3IsIFRlbXBsYXRlTG9jYXRvciB9IGZyb20gJ0BnbGltbWVyL2ludGVyZmFjZXMnO1xuaW1wb3J0IGRlZmF1bHRSZXNvbHZlckNvbmZpZ3VyYXRpb24gZnJvbSAnLi9kZWZhdWx0LXJlc29sdmVyLWNvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IHsgcHJlY29tcGlsZSB9IGZyb20gJy4vY29tcGlsZXInO1xuaW1wb3J0IEFwcGxpY2F0aW9uLCB7XG4gIEFwcGxpY2F0aW9uQ29uc3RydWN0b3IsXG4gIEJ5dGVjb2RlTG9hZGVyLFxuICBET01CdWlsZGVyLFxuICBMb2FkZXIsXG4gIFJ1bnRpbWVDb21waWxlckxvYWRlcixcbiAgU3luY1JlbmRlcmVyLFxuICBNb2R1bGVUeXBlcyxcbiAgSU5URVJOQUxfRFlOQU1JQ19TQ09QRVxufSBmcm9tICdAZ2xpbW1lci9hcHBsaWNhdGlvbic7XG5pbXBvcnQgeyBDb21wb25lbnRNYW5hZ2VyLCBDQVBBQklMSVRJRVMgfSBmcm9tICdAZ2xpbW1lci9jb21wb25lbnQnO1xuaW1wb3J0IHsgYXNzZXJ0IH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQgeyBCdW5kbGVDb21waWxlciwgQ29tcGlsZXJEZWxlZ2F0ZSBhcyBJQ29tcGlsZXJEZWxlZ2F0ZSB9IGZyb20gJ0BnbGltbWVyL2J1bmRsZS1jb21waWxlcic7XG5pbXBvcnQgeyBidWlsZEFjdGlvbiwgbWFpblRlbXBsYXRlIH0gZnJvbSAnQGdsaW1tZXIvYXBwbGljYXRpb24nO1xuaW1wb3J0IHsgY29tcGlsYWJsZSB9IGZyb20gJ0BnbGltbWVyL29wY29kZS1jb21waWxlcic7XG5pbXBvcnQgeyBNZXRhZGF0YSB9IGZyb20gJy4uLy4uL2FwcGxpY2F0aW9uL3NyYy9sb2FkZXJzL2J5dGVjb2RlL2xvYWRlcic7XG5pbXBvcnQgeyBTaW1wbGVEb2N1bWVudCB9IGZyb20gJ0BzaW1wbGUtZG9tL2ludGVyZmFjZSc7XG5pbXBvcnQgeyBTU1JBcHBsaWNhdGlvbiB9IGZyb20gJ0BnbGltbWVyL3Nzcic7XG5cbmltcG9ydCBkaWRSZW5kZXIgZnJvbSAnLi9kaWQtcmVuZGVyJztcblxuZXhwb3J0IGludGVyZmFjZSBBcHBCdWlsZGVyT3B0aW9uczxUPiB7XG4gIGFwcE5hbWU/OiBzdHJpbmc7XG4gIGxvYWRlcj86IHN0cmluZztcbiAgQXBwbGljYXRpb25DbGFzcz86IEFwcGxpY2F0aW9uQ29uc3RydWN0b3I8VD47XG4gIENvbXBvbmVudE1hbmFnZXI/OiBhbnk7IC8vIFRPRE8gLSB0eXBpbmdcbiAgcmVzb2x2ZXJDb25maWd1cmF0aW9uPzogUmVzb2x2ZXJDb25maWd1cmF0aW9uO1xuICBkb2N1bWVudD86IFNpbXBsZURvY3VtZW50O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudEZhY3Rvcnkge31cblxuZXhwb3J0IGNsYXNzIFRlc3RBcHBsaWNhdGlvbiBleHRlbmRzIEFwcGxpY2F0aW9uIHtcbiAgcm9vdEVsZW1lbnQ6IEVsZW1lbnQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXBwQnVpbGRlclRlbXBsYXRlTWV0YSB7XG4gIHNwZWNpZmllcjogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgSGVscGVyRnVuY3Rpb24gZXh0ZW5kcyBGdW5jdGlvbiB7XG4gIGlzRmFjdG9yeT86IGJvb2xlYW47XG59XG5cbmZ1bmN0aW9uIGxvY2F0b3JGb3IobW9kdWxlOiBzdHJpbmcsIG5hbWU6IHN0cmluZyk6IFRlbXBsYXRlTG9jYXRvcjxNb2R1bGVMb2NhdG9yPiB7XG4gIHJldHVybiB7XG4gICAga2luZDogJ3RlbXBsYXRlJyxcbiAgICBtb2R1bGUsXG4gICAgbmFtZSxcbiAgICBtZXRhOiB7XG4gICAgICBtb2R1bGUsXG4gICAgICBuYW1lLFxuICAgIH0sXG4gIH07XG59XG5cbmV4cG9ydCBjbGFzcyBBcHBCdWlsZGVyPFQgZXh0ZW5kcyBUZXN0QXBwbGljYXRpb24+IHtcbiAgcm9vdE5hbWU6IHN0cmluZztcbiAgbW9kdWxlczogRGljdDx1bmtub3duPiA9IHt9O1xuICB0ZW1wbGF0ZXM6IERpY3Q8c3RyaW5nPiA9IHt9O1xuICBvcHRpb25zOiBBcHBCdWlsZGVyT3B0aW9uczxUPjtcblxuICBjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmcsIG9wdGlvbnM6IEFwcEJ1aWxkZXJPcHRpb25zPFQ+KSB7XG4gICAgdGhpcy5yb290TmFtZSA9IG5hbWU7XG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgICB0aGlzLm1vZHVsZXNbXG4gICAgICBgY29tcG9uZW50LW1hbmFnZXI6LyR7dGhpcy5yb290TmFtZX0vY29tcG9uZW50LW1hbmFnZXJzL21haW5gXG4gICAgXSA9IHRoaXMub3B0aW9ucy5Db21wb25lbnRNYW5hZ2VyO1xuICAgIHRoaXMudGVtcGxhdGUoJ01haW4nLCAnPGRpdiAvPicpO1xuICAgIHRoaXMuaGVscGVyKCdhY3Rpb24nLCBidWlsZEFjdGlvbiwgdHJ1ZSk7XG4gIH1cblxuICB0ZW1wbGF0ZShuYW1lOiBzdHJpbmcsIHRlbXBsYXRlOiBzdHJpbmcpIHtcbiAgICBhc3NlcnQoXG4gICAgICBuYW1lLmNoYXJBdCgwKSA9PT0gbmFtZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSxcbiAgICAgICd0ZW1wbGF0ZSBuYW1lcyBtdXN0IHN0YXJ0IHdpdGggYSBjYXBpdGFsIGxldHRlcidcbiAgICApO1xuXG4gICAgbGV0IHNwZWNpZmllciA9IGB0ZW1wbGF0ZTovJHt0aGlzLnJvb3ROYW1lfS9jb21wb25lbnRzLyR7bmFtZX1gO1xuICAgIHRoaXMubW9kdWxlc1tzcGVjaWZpZXJdID0gcHJlY29tcGlsZSh0ZW1wbGF0ZSwgeyBtZXRhOiB7IHNwZWNpZmllciB9IH0pO1xuICAgIHRoaXMudGVtcGxhdGVzW3NwZWNpZmllcl0gPSB0ZW1wbGF0ZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGNvbXBvbmVudChuYW1lOiBzdHJpbmcsIGNvbXBvbmVudEZhY3Rvcnk6IENvbXBvbmVudEZhY3RvcnkpIHtcbiAgICBsZXQgc3BlY2lmaWVyID0gYGNvbXBvbmVudDovJHt0aGlzLnJvb3ROYW1lfS9jb21wb25lbnRzLyR7bmFtZX1gO1xuICAgIHRoaXMubW9kdWxlc1tzcGVjaWZpZXJdID0gY29tcG9uZW50RmFjdG9yeTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGhlbHBlcihuYW1lOiBzdHJpbmcsIGhlbHBlckZ1bmM6IEhlbHBlckZ1bmN0aW9uLCBpc0ZhY3RvcnkgPSBmYWxzZSkge1xuICAgIGxldCBzcGVjaWZpZXIgPSBgaGVscGVyOi8ke3RoaXMucm9vdE5hbWV9L2NvbXBvbmVudHMvJHtuYW1lfWA7XG4gICAgaGVscGVyRnVuYy5pc0ZhY3RvcnkgPSBpc0ZhY3Rvcnk7XG4gICAgdGhpcy5tb2R1bGVzW3NwZWNpZmllcl0gPSBoZWxwZXJGdW5jO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHJvdGVjdGVkIGJ1aWxkUmVzb2x2ZXIoKTogUmVzb2x2ZXIge1xuICAgIGxldCByZXNvbHZlckNvbmZpZ3VyYXRpb24gPSB0aGlzLm9wdGlvbnMucmVzb2x2ZXJDb25maWd1cmF0aW9uIHx8IGRlZmF1bHRSZXNvbHZlckNvbmZpZ3VyYXRpb247XG4gICAgcmVzb2x2ZXJDb25maWd1cmF0aW9uLmFwcCA9IHJlc29sdmVyQ29uZmlndXJhdGlvbi5hcHAgfHwge1xuICAgICAgbmFtZTogdGhpcy5yb290TmFtZSxcbiAgICAgIHJvb3ROYW1lOiB0aGlzLnJvb3ROYW1lLFxuICAgIH07XG5cbiAgICBsZXQgcmVnaXN0cnkgPSBuZXcgQmFzaWNNb2R1bGVSZWdpc3RyeSh0aGlzLm1vZHVsZXMpO1xuICAgIHJldHVybiBuZXcgUmVzb2x2ZXIocmVzb2x2ZXJDb25maWd1cmF0aW9uLCByZWdpc3RyeSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYnVpbGRSdW50aW1lQ29tcGlsZXJMb2FkZXIoKTogTG9hZGVyIHtcbiAgICByZXR1cm4gbmV3IFJ1bnRpbWVDb21waWxlckxvYWRlcigpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGJ1aWxkQnl0ZWNvZGVMb2FkZXIocmVzb2x2ZXI6IFJlc29sdmVyKSB7XG4gICAgbGV0IGRlbGVnYXRlID0gbmV3IENvbXBpbGVyRGVsZWdhdGUocmVzb2x2ZXIpO1xuICAgIGxldCBjb21waWxlciA9IG5ldyBCdW5kbGVDb21waWxlcihkZWxlZ2F0ZSk7XG5cbiAgICBsZXQgbWFpbkxvY2F0b3IgPSBsb2NhdG9yRm9yKCd0ZW1wbGF0ZTptYWluVGVtcGxhdGUnLCAnZGVmYXVsdCcpO1xuICAgIG1haW5Mb2NhdG9yLm1ldGEubW9kdWxlID0gJ3RlbXBsYXRlOm1haW5UZW1wbGF0ZSc7XG5cbiAgICBsZXQgYmxvY2sgPSBKU09OLnBhcnNlKG1haW5UZW1wbGF0ZS5ibG9jayk7XG4gICAgbGV0IGNvbXBpbGFibGVUZW1wbGF0ZSA9IGNvbXBpbGFibGUoe1xuICAgICAgYmxvY2ssXG4gICAgICByZWZlcnJlcjogbWFpbkxvY2F0b3IubWV0YSxcbiAgICB9KTtcblxuICAgIGNvbXBpbGVyLmFkZENvbXBpbGFibGVUZW1wbGF0ZShtYWluTG9jYXRvciwgY29tcGlsYWJsZVRlbXBsYXRlKTtcblxuICAgIGZvciAobGV0IG1vZHVsZSBpbiB0aGlzLnRlbXBsYXRlcykge1xuICAgICAgY29tcGlsZXIuYWRkVGVtcGxhdGVTb3VyY2UobG9jYXRvckZvcihtb2R1bGUsICdkZWZhdWx0JyksIHRoaXMudGVtcGxhdGVzW21vZHVsZV0pO1xuICAgIH1cblxuICAgIGxldCB7IGhlYXAsIHBvb2wsIHRhYmxlIH0gPSBjb21waWxlci5jb21waWxlKCk7XG5cbiAgICBsZXQgcmVzb2x2ZXJUYWJsZTogdW5rbm93bltdID0gW107XG5cbiAgICBsZXQgbWV0YTogRGljdDxNZXRhZGF0YT4gPSB7fTtcblxuICAgIHRhYmxlLnZtSGFuZGxlQnlNb2R1bGVMb2NhdG9yLmZvckVhY2goKHZtSGFuZGxlLCBsb2NhdG9yKSA9PiB7XG4gICAgICBsZXQgaGFuZGxlID0gdGFibGUuYnlNb2R1bGVMb2NhdG9yLmdldChsb2NhdG9yKTtcbiAgICAgIGxldCB0ZW1wbGF0ZSA9IGNvbXBpbGVyLmdldFRlbXBsYXRlKGxvY2F0b3IpO1xuXG4gICAgICBtZXRhW2xvY2F0b3IubW9kdWxlXSA9IHtcbiAgICAgICAgdjogdm1IYW5kbGUsXG4gICAgICAgIGg6IGhhbmRsZSxcbiAgICAgICAgdGFibGU6IHRlbXBsYXRlLnN5bWJvbFRhYmxlLFxuICAgICAgfTtcbiAgICB9KTtcblxuICAgIHRhYmxlLmJ5SGFuZGxlLmZvckVhY2goKGxvY2F0b3IsIGhhbmRsZSkgPT4ge1xuICAgICAgbGV0IG1vZHVsZSA9IGxvY2F0b3IubW9kdWxlLnJlcGxhY2UoJ3RlbXBsYXRlOi8nLCAnY29tcG9uZW50Oi8nKTtcbiAgICAgIGlmICh0aGlzLm1vZHVsZXNbbW9kdWxlXSkge1xuICAgICAgICBpZiAobW9kdWxlLmluZGV4T2YoJ2hlbHBlcjonKSA9PT0gMCkge1xuICAgICAgICAgIGNvbnN0IG1vZHVsZVR5cGUgPSAodGhpcy5tb2R1bGVzW21vZHVsZV0gYXMgSGVscGVyRnVuY3Rpb24pLmlzRmFjdG9yeSA/IE1vZHVsZVR5cGVzLkhFTFBFUl9GQUNUT1JZIDogTW9kdWxlVHlwZXMuSEVMUEVSO1xuICAgICAgICAgIHJlc29sdmVyVGFibGVbaGFuZGxlXSA9IFttb2R1bGVUeXBlLCB0aGlzLm1vZHVsZXNbbW9kdWxlXV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzb2x2ZXJUYWJsZVtoYW5kbGVdID0gdGhpcy5tb2R1bGVzW21vZHVsZV07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGxldCBieXRlY29kZSA9IGhlYXAuYnVmZmVyO1xuICAgIGxldCBkYXRhID0ge1xuICAgICAgcHJlZml4OiAnJyxcbiAgICAgIG1haW5FbnRyeTogdGFibGUudm1IYW5kbGVCeU1vZHVsZUxvY2F0b3IuZ2V0KG1haW5Mb2NhdG9yKSxcbiAgICAgIHBvb2wsXG4gICAgICB0YWJsZTogcmVzb2x2ZXJUYWJsZSxcbiAgICAgIG1ldGEsXG4gICAgICBoZWFwOiB7XG4gICAgICAgIHRhYmxlOiBoZWFwLnRhYmxlLFxuICAgICAgICBoYW5kbGU6IGhlYXAuaGFuZGxlLFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIG5ldyBCeXRlY29kZUxvYWRlcih7IGJ5dGVjb2RlLCBkYXRhIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGJ1aWxkTG9hZGVyKHJlc29sdmVyKTogTG9hZGVyIHtcbiAgICBzd2l0Y2ggKHRoaXMub3B0aW9ucy5sb2FkZXIpIHtcbiAgICAgIGNhc2UgJ3J1bnRpbWUtY29tcGlsZXInOlxuICAgICAgICByZXR1cm4gdGhpcy5idWlsZFJ1bnRpbWVDb21waWxlckxvYWRlcigpO1xuICAgICAgY2FzZSAnYnl0ZWNvZGUnOlxuICAgICAgICByZXR1cm4gdGhpcy5idWlsZEJ5dGVjb2RlTG9hZGVyKHJlc29sdmVyKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5yZWNvZ25pemVkIGxvYWRlciAke3RoaXMub3B0aW9ucy5sb2FkZXJ9YCk7XG4gICAgfVxuICB9XG5cbiAgcmVuZGVyVG9TdHJpbmcoY29tcG9uZW50TmFtZTogc3RyaW5nLCBkYXRhOiBEaWN0PHVua25vd24+LCBvcHRpb25zPzogeyBbSU5URVJOQUxfRFlOQU1JQ19TQ09QRV06IERpY3Q8dW5rbm93bj4gfSk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3QgcmVzb2x2ZXIgPSB0aGlzLmJ1aWxkUmVzb2x2ZXIoKTtcbiAgICBsZXQgbG9hZGVyID0gdGhpcy5idWlsZExvYWRlcihyZXNvbHZlcik7XG5cbiAgICByZXR1cm4gU1NSQXBwbGljYXRpb24ucmVuZGVyVG9TdHJpbmcoY29tcG9uZW50TmFtZSwgZGF0YSwge1xuICAgICAgcm9vdE5hbWU6IHRoaXMucm9vdE5hbWUsXG4gICAgICByZXNvbHZlcixcbiAgICAgIGxvYWRlcixcbiAgICAgIHJlbmRlcmVyOiBuZXcgU3luY1JlbmRlcmVyKCksXG4gICAgICAuLi5vcHRpb25zXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBib290KCk6IFByb21pc2U8VD4ge1xuICAgIGxldCByZXNvbHZlciA9IHRoaXMuYnVpbGRSZXNvbHZlcigpO1xuICAgIGxldCBsb2FkZXI6IExvYWRlciA9IHRoaXMuYnVpbGRMb2FkZXIocmVzb2x2ZXIpO1xuXG4gICAgbGV0IGRvYzogRG9jdW1lbnQgPSAodGhpcy5vcHRpb25zLmRvY3VtZW50IGFzIERvY3VtZW50KSB8fCBkb2N1bWVudDtcbiAgICBsZXQgZWxlbWVudCA9IGRvYy5ib2R5O1xuICAgIGxldCBidWlsZGVyID0gbmV3IERPTUJ1aWxkZXIoeyBlbGVtZW50IH0pO1xuICAgIGxldCByZW5kZXJlciA9IG5ldyBTeW5jUmVuZGVyZXIoKTtcblxuICAgIGxldCBhcHAgPSBuZXcgdGhpcy5vcHRpb25zLkFwcGxpY2F0aW9uQ2xhc3Moe1xuICAgICAgcmVzb2x2ZXIsXG4gICAgICBidWlsZGVyLFxuICAgICAgbG9hZGVyLFxuICAgICAgcmVuZGVyZXIsXG4gICAgICByb290TmFtZTogdGhpcy5yb290TmFtZSxcbiAgICAgIGRvY3VtZW50OiB0aGlzLm9wdGlvbnMuZG9jdW1lbnQsXG4gICAgfSk7XG5cbiAgICBsZXQgcm9vdEVsZW1lbnQgPSBkb2MuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgYXBwLnJvb3RFbGVtZW50ID0gcm9vdEVsZW1lbnQ7XG4gICAgYXBwLnJlbmRlckNvbXBvbmVudCgnTWFpbicsIHJvb3RFbGVtZW50KTtcbiAgICBhcHAuYm9vdCgpO1xuXG4gICAgYXdhaXQgZGlkUmVuZGVyKGFwcCk7XG5cbiAgICByZXR1cm4gYXBwO1xuICB9XG59XG5cbmNsYXNzIENvbXBpbGVyRGVsZWdhdGUgaW1wbGVtZW50cyBJQ29tcGlsZXJEZWxlZ2F0ZTxNb2R1bGVMb2NhdG9yPiB7XG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCByZXNvbHZlcjogUmVzb2x2ZXIpIHt9XG5cbiAgaGFzQ29tcG9uZW50SW5TY29wZShuYW1lOiBzdHJpbmcsIHJlZmVycmVyOiBNb2R1bGVMb2NhdG9yKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5yZXNvbHZlci5pZGVudGlmeShgdGVtcGxhdGU6JHtuYW1lfWAsIHJlZmVycmVyLm1vZHVsZSk7XG4gIH1cblxuICByZXNvbHZlQ29tcG9uZW50KG5hbWU6IHN0cmluZywgcmVmZXJyZXI6IE1vZHVsZUxvY2F0b3IpOiBNb2R1bGVMb2NhdG9yIHtcbiAgICBsZXQgcmVzb2x2ZWQgPSB0aGlzLnJlc29sdmVyLmlkZW50aWZ5KGB0ZW1wbGF0ZToke25hbWV9YCwgcmVmZXJyZXIubW9kdWxlKTtcbiAgICByZXR1cm4geyBtb2R1bGU6IHJlc29sdmVkLCBuYW1lOiAnZGVmYXVsdCcgfTtcbiAgfVxuXG4gIGdldENvbXBvbmVudENhcGFiaWxpdGllcygpIHtcbiAgICByZXR1cm4gQ0FQQUJJTElUSUVTO1xuICB9XG5cbiAgaGFzSGVscGVySW5TY29wZShoZWxwZXJOYW1lOiBzdHJpbmcsIHJlZmVycmVyOiBNb2R1bGVMb2NhdG9yKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5yZXNvbHZlci5pZGVudGlmeShgaGVscGVyOiR7aGVscGVyTmFtZX1gLCByZWZlcnJlci5tb2R1bGUpO1xuICB9XG5cbiAgcmVzb2x2ZUhlbHBlcihoZWxwZXJOYW1lOiBzdHJpbmcsIHJlZmVycmVyOiBNb2R1bGVMb2NhdG9yKTogTW9kdWxlTG9jYXRvciB7XG4gICAgbGV0IHJlc29sdmVkID0gdGhpcy5yZXNvbHZlci5pZGVudGlmeShgaGVscGVyOiR7aGVscGVyTmFtZX1gLCByZWZlcnJlci5tb2R1bGUpO1xuICAgIHJldHVybiB7IG1vZHVsZTogcmVzb2x2ZWQsIG5hbWU6ICdkZWZhdWx0JyB9O1xuICB9XG5cbiAgaGFzUGFydGlhbEluU2NvcGUocGFydGlhbE5hbWU6IHN0cmluZywgcmVmZXJyZXI6IE1vZHVsZUxvY2F0b3IpOiBib29sZWFuIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cblxuICByZXNvbHZlUGFydGlhbChwYXJ0aWFsTmFtZTogc3RyaW5nLCByZWZlcnJlcjogTW9kdWxlTG9jYXRvcik6IE1vZHVsZUxvY2F0b3Ige1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuXG4gIGhhc01vZGlmaWVySW5TY29wZShtb2RpZmllck5hbWU6IHN0cmluZywgcmVmZXJyZXI6IE1vZHVsZUxvY2F0b3IpOiBib29sZWFuIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cblxuICByZXNvbHZlTW9kaWZpZXIobW9kaWZpZXJOYW1lOiBzdHJpbmcsIHJlZmVycmVyOiBNb2R1bGVMb2NhdG9yKTogTW9kdWxlTG9jYXRvciB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGJ1aWxkQXBwPFQgZXh0ZW5kcyBUZXN0QXBwbGljYXRpb24+KG9wdGlvbnM6IEFwcEJ1aWxkZXJPcHRpb25zPFQ+ID0ge30pOiBBcHBCdWlsZGVyPFQ+IHtcbiAgb3B0aW9ucy5hcHBOYW1lID0gb3B0aW9ucy5hcHBOYW1lIHx8ICd0ZXN0LWFwcCc7XG4gIG9wdGlvbnMubG9hZGVyID0gb3B0aW9ucy5sb2FkZXIgfHwgJ3J1bnRpbWUtY29tcGlsZXInO1xuICBvcHRpb25zLkNvbXBvbmVudE1hbmFnZXIgPSBvcHRpb25zLkNvbXBvbmVudE1hbmFnZXIgfHwgQ29tcG9uZW50TWFuYWdlcjtcbiAgb3B0aW9ucy5BcHBsaWNhdGlvbkNsYXNzID1cbiAgICBvcHRpb25zLkFwcGxpY2F0aW9uQ2xhc3MgfHwgKFRlc3RBcHBsaWNhdGlvbiBhcyBBcHBsaWNhdGlvbkNvbnN0cnVjdG9yPFQ+KTtcblxuICByZXR1cm4gbmV3IEFwcEJ1aWxkZXIob3B0aW9ucy5hcHBOYW1lLCBvcHRpb25zKTtcbn1cblxuZXhwb3J0IHsgYnVpbGRBcHAgfTtcbiJdLCJzb3VyY2VSb290IjoiIn0= | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2FwcGxpY2F0aW9uLXRlc3QtaGVscGVycy9zcmMvYXBwLWJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFFQTs7OztBQUNBOztBQUNBOzs7O0FBVUE7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBR0E7O0FBRUE7Ozs7OztBQWVNLE1BQU8sZUFBUCxTQUErQixxQkFBL0IsQ0FBMEM7UUFBbkMsZSxHQUFBLGU7QUFxQmIsU0FBUyxVQUFULENBQW9CLE1BQXBCLEVBQW9DLElBQXBDLEVBQWdEO0FBQzlDLFdBQU87QUFDTCxjQUFNLFVBREQ7QUFFTCxjQUZLO0FBR0wsWUFISztBQUlMLGNBQU07QUFDSixrQkFESTtBQUVKO0FBRkk7QUFKRCxLQUFQO0FBU0Q7QUFFSyxNQUFPLFVBQVAsQ0FBaUI7QUFNckIsZ0JBQVksSUFBWixFQUEwQixPQUExQixFQUF1RDtBQUp2RCxhQUFBLE9BQUEsR0FBeUIsRUFBekI7QUFDQSxhQUFBLFNBQUEsR0FBMEIsRUFBMUI7QUFJRSxhQUFLLFFBQUwsR0FBZ0IsSUFBaEI7QUFDQSxhQUFLLE9BQUwsR0FBZSxPQUFmO0FBQ0EsYUFBSyxPQUFMLENBQ0Usc0JBQXNCLEtBQUssUUFBUSwwQkFEckMsSUFFSSxLQUFLLE9BQUwsQ0FBYSxnQkFGakI7QUFHQSxhQUFLLFFBQUwsQ0FBYyxNQUFkLEVBQXNCLFNBQXRCO0FBQ0EsYUFBSyxNQUFMLENBQVksUUFBWixFQUFzQix3QkFBdEIsRUFBbUMsSUFBbkM7QUFDRDtBQUVELGFBQVMsSUFBVCxFQUF1QixRQUF2QixFQUF1QztBQUNyQywwQkFDRSxLQUFLLE1BQUwsQ0FBWSxDQUFaLE1BQW1CLEtBQUssTUFBTCxDQUFZLENBQVosRUFBZSxXQUFmLEVBRHJCLEVBRUUsaURBRkY7QUFLQSxZQUFJLFlBQVksYUFBYSxLQUFLLFFBQVEsZUFBZSxJQUFJLEVBQTdEO0FBQ0EsYUFBSyxPQUFMLENBQWEsU0FBYixJ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LENBQTZDLFVBQWdDLEVBQTdFLEVBQStFO0FBQzdFLFlBQVEsT0FBUixHQUFrQixRQUFRLE9BQVIsSUFBbUIsVUFBckM7QUFDQSxZQUFRLE1BQVIsR0FBaUIsUUFBUSxNQUFSLElBQWtCLGtCQUFuQztBQUNBLFlBQVEsZ0JBQVIsR0FBMkIsUUFBUSxnQkFBUixJQUE0QiwyQkFBdkQ7QUFDQSxZQUFRLGdCQUFSLEdBQ0UsUUFBUSxnQkFBUixJQUE2QixlQUQvQjtBQUdBLFdBQU8sSUFBSSxVQUFKLENBQWUsUUFBUSxPQUF2QixFQUFnQyxPQUFoQyxDQUFQO0FBQ0Q7UUFFUSxRLEdBQUEsUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZXNvbHZlciwgeyBCYXNpY01vZHVsZVJlZ2lzdHJ5LCBSZXNvbHZlckNvbmZpZ3VyYXRpb24gfSBmcm9tICdAZ2xpbW1lci9yZXNvbHZlcic7XG5pbXBvcnQgeyBEaWN0LCBNb2R1bGVMb2NhdG9yLCBUZW1wbGF0ZUxvY2F0b3IgfSBmcm9tICdAZ2xpbW1lci9pbnRlcmZhY2VzJztcbmltcG9ydCBkZWZhdWx0UmVzb2x2ZXJDb25maWd1cmF0aW9uIGZyb20gJy4vZGVmYXVsdC1yZXNvbHZlci1jb25maWd1cmF0aW9uJztcbmltcG9ydCB7IHByZWNvbXBpbGUgfSBmcm9tICcuL2NvbXBpbGVyJztcbmltcG9ydCBBcHBsaWNhdGlvbiwge1xuICBBcHBsaWNhdGlvbkNvbnN0cnVjdG9yLFxuICBCeXRlY29kZUxvYWRlcixcbiAgRE9NQnVpbGRlcixcbiAgTG9hZGVyLFxuICBSdW50aW1lQ29tcGlsZXJMb2FkZXIsXG4gIFN5bmNSZW5kZXJlcixcbiAgTW9kdWxlVHlwZXMsXG4gIElOVEVSTkFMX0RZTkFNSUNfU0NPUEVcbn0gZnJvbSAnQGdsaW1tZXIvYXBwbGljYXRpb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50TWFuYWdlciwgQ0FQQUJJTElUSUVTIH0gZnJvbSAnQGdsaW1tZXIvY29tcG9uZW50JztcbmltcG9ydCB7IGFzc2VydCB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHsgQnVuZGxlQ29tcGlsZXIsIENvbXBpbGVyRGVsZWdhdGUgYXMgSUNvbXBpbGVyRGVsZWdhdGUgfSBmcm9tICdAZ2xpbW1lci9idW5kbGUtY29tcGlsZXInO1xuaW1wb3J0IHsgYnVpbGRBY3Rpb24sIG1haW5UZW1wbGF0ZSB9IGZyb20gJ0BnbGltbWVyL2FwcGxpY2F0aW9uJztcbmltcG9ydCB7IGNvbXBpbGFibGUgfSBmcm9tICdAZ2xpbW1lci9vcGNvZGUtY29tcGlsZXInO1xuaW1wb3J0IHsgTWV0YWRhdGEgfSBmcm9tICcuLi8uLi9hcHBsaWNhdGlvbi9zcmMvbG9hZGVycy9ieXRlY29kZS9sb2FkZXInO1xuaW1wb3J0IHsgU2ltcGxlRG9jdW1lbnQgfSBmcm9tICdAc2ltcGxlLWRvbS9pbnRlcmZhY2UnO1xuaW1wb3J0IHsgU1NSQXBwbGljYXRpb24gfSBmcm9tICdAZ2xpbW1lci9zc3InO1xuXG5pbXBvcnQgZGlkUmVuZGVyIGZyb20gJy4vZGlkLXJlbmRlcic7XG5pbXBvcnQgSFRNTFNlcmlhbGl6ZXIgZnJvbSAnQHNpbXBsZS1kb20vc2VyaWFsaXplcic7XG5pbXBvcnQgeyBSZW5kZXJlciB9IGZyb20gJ0BnbGltbWVyL2FwcGxpY2F0aW9uL3NyYy9iYXNlLWFwcGxpY2F0aW9uJztcblxuZXhwb3J0IGludGVyZmFjZSBBcHBCdWlsZGVyT3B0aW9uczxUPiB7XG4gIGFwcE5hbWU/OiBzdHJpbmc7XG4gIGxvYWRlcj86IHN0cmluZztcbiAgQXBwbGljYXRpb25DbGFzcz86IEFwcGxpY2F0aW9uQ29uc3RydWN0b3I8VD47XG4gIENvbXBvbmVudE1hbmFnZXI/OiBhbnk7IC8vIFRPRE8gLSB0eXBpbmdcbiAgcmVzb2x2ZXJDb25maWd1cmF0aW9uPzogUmVzb2x2ZXJDb25maWd1cmF0aW9uO1xuICBkb2N1bWVudD86IFNpbXBsZURvY3VtZW50O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudEZhY3Rvcnkge31cblxuZXhwb3J0IGNsYXNzIFRlc3RBcHBsaWNhdGlvbiBleHRlbmRzIEFwcGxpY2F0aW9uIHtcbiAgcm9vdEVsZW1lbnQ6IEVsZW1lbnQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXBwQnVpbGRlclRlbXBsYXRlTWV0YSB7XG4gIHNwZWNpZmllcjogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgSGVscGVyRnVuY3Rpb24gZXh0ZW5kcyBGdW5jdGlvbiB7XG4gIGlzRmFjdG9yeT86IGJvb2xlYW47XG59XG5cbmludGVyZmFjZSBUZXN0U1NSQXBwbGljYXRpb25PcHRpb25zIHtcbiAgcm9vdE5hbWU/OiBzdHJpbmc7XG4gIHJlc29sdmVyPzogUmVzb2x2ZXI7XG4gIGxvYWRlcj86IExvYWRlcjtcbiAgcmVuZGVyZXI/OiBSZW5kZXJlcjtcbiAgc2VyaWFsaXplcj86IEhUTUxTZXJpYWxpemVyO1xuICBbSU5URVJOQUxfRFlOQU1JQ19TQ09QRV0/OiBEaWN0PHVua25vd24+O1xufVxuXG5mdW5jdGlvbiBsb2NhdG9yRm9yKG1vZHVsZTogc3RyaW5nLCBuYW1lOiBzdHJpbmcpOiBUZW1wbGF0ZUxvY2F0b3I8TW9kdWxlTG9jYXRvcj4ge1xuICByZXR1cm4ge1xuICAgIGtpbmQ6ICd0ZW1wbGF0ZScsXG4gICAgbW9kdWxlLFxuICAgIG5hbWUsXG4gICAgbWV0YToge1xuICAgICAgbW9kdWxlLFxuICAgICAgbmFtZSxcbiAgICB9LFxuICB9O1xufVxuXG5leHBvcnQgY2xhc3MgQXBwQnVpbGRlcjxUIGV4dGVuZHMgVGVzdEFwcGxpY2F0aW9uPiB7XG4gIHJvb3ROYW1lOiBzdHJpbmc7XG4gIG1vZHVsZXM6IERpY3Q8dW5rbm93bj4gPSB7fTtcbiAgdGVtcGxhdGVzOiBEaWN0PHN0cmluZz4gPSB7fTtcbiAgb3B0aW9uczogQXBwQnVpbGRlck9wdGlvbnM8VD47XG5cbiAgY29uc3RydWN0b3IobmFtZTogc3RyaW5nLCBvcHRpb25zOiBBcHBCdWlsZGVyT3B0aW9uczxUPikge1xuICAgIHRoaXMucm9vdE5hbWUgPSBuYW1lO1xuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgdGhpcy5tb2R1bGVzW1xuICAgICAgYGNvbXBvbmVudC1tYW5hZ2VyOi8ke3RoaXMucm9vdE5hbWV9L2NvbXBvbmVudC1tYW5hZ2Vycy9tYWluYFxuICAgIF0gPSB0aGlzLm9wdGlvbnMuQ29tcG9uZW50TWFuYWdlcjtcbiAgICB0aGlzLnRlbXBsYXRlKCdNYWluJywgJzxkaXYgLz4nKTtcbiAgICB0aGlzLmhlbHBlcignYWN0aW9uJywgYnVpbGRBY3Rpb24sIHRydWUpO1xuICB9XG5cbiAgdGVtcGxhdGUobmFtZTogc3RyaW5nLCB0ZW1wbGF0ZTogc3RyaW5nKSB7XG4gICAgYXNzZXJ0KFxuICAgICAgbmFtZS5jaGFyQXQoMCkgPT09IG5hbWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCksXG4gICAgICAndGVtcGxhdGUgbmFtZXMgbXVzdCBzdGFydCB3aXRoIGEgY2FwaXRhbCBsZXR0ZXInXG4gICAgKTtcblxuICAgIGxldCBzcGVjaWZpZXIgPSBgdGVtcGxhdGU6LyR7dGhpcy5yb290TmFtZX0vY29tcG9uZW50cy8ke25hbWV9YDtcbiAgICB0aGlzLm1vZHVsZXNbc3BlY2lmaWVyXSA9IHByZWNvbXBpbGUodGVtcGxhdGUsIHsgbWV0YTogeyBzcGVjaWZpZXIgfSB9KTtcbiAgICB0aGlzLnRlbXBsYXRlc1tzcGVjaWZpZXJdID0gdGVtcGxhdGU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBjb21wb25lbnQobmFtZTogc3RyaW5nLCBjb21wb25lbnRGYWN0b3J5OiBDb21wb25lbnRGYWN0b3J5KSB7XG4gICAgbGV0IHNwZWNpZmllciA9IGBjb21wb25lbnQ6LyR7dGhpcy5yb290TmFtZX0vY29tcG9uZW50cy8ke25hbWV9YDtcbiAgICB0aGlzLm1vZHVsZXNbc3BlY2lmaWVyXSA9IGNvbXBvbmVudEZhY3Rvcnk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBoZWxwZXIobmFtZTogc3RyaW5nLCBoZWxwZXJGdW5jOiBIZWxwZXJGdW5jdGlvbiwgaXNGYWN0b3J5ID0gZmFsc2UpIHtcbiAgICBsZXQgc3BlY2lmaWVyID0gYGhlbHBlcjovJHt0aGlzLnJvb3ROYW1lfS9jb21wb25lbnRzLyR7bmFtZX1gO1xuICAgIGhlbHBlckZ1bmMuaXNGYWN0b3J5ID0gaXNGYWN0b3J5O1xuICAgIHRoaXMubW9kdWxlc1tzcGVjaWZpZXJdID0gaGVscGVyRnVuYztcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHByb3RlY3RlZCBidWlsZFJlc29sdmVyKCk6IFJlc29sdmVyIHtcbiAgICBsZXQgcmVzb2x2ZXJDb25maWd1cmF0aW9uID0gdGhpcy5vcHRpb25zLnJlc29sdmVyQ29uZmlndXJhdGlvbiB8fCBkZWZhdWx0UmVzb2x2ZXJDb25maWd1cmF0aW9uO1xuICAgIHJlc29sdmVyQ29uZmlndXJhdGlvbi5hcHAgPSByZXNvbHZlckNvbmZpZ3VyYXRpb24uYXBwIHx8IHtcbiAgICAgIG5hbWU6IHRoaXMucm9vdE5hbWUsXG4gICAgICByb290TmFtZTogdGhpcy5yb290TmFtZSxcbiAgICB9O1xuXG4gICAgbGV0IHJlZ2lzdHJ5ID0gbmV3IEJhc2ljTW9kdWxlUmVnaXN0cnkodGhpcy5tb2R1bGVzKTtcbiAgICByZXR1cm4gbmV3IFJlc29sdmVyKHJlc29sdmVyQ29uZmlndXJhdGlvbiwgcmVnaXN0cnkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGJ1aWxkUnVudGltZUNvbXBpbGVyTG9hZGVyKCk6IExvYWRlciB7XG4gICAgcmV0dXJuIG5ldyBSdW50aW1lQ29tcGlsZXJMb2FkZXIoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBidWlsZEJ5dGVjb2RlTG9hZGVyKHJlc29sdmVyOiBSZXNvbHZlcikge1xuICAgIGxldCBkZWxlZ2F0ZSA9IG5ldyBDb21waWxlckRlbGVnYXRlKHJlc29sdmVyKTtcbiAgICBsZXQgY29tcGlsZXIgPSBuZXcgQnVuZGxlQ29tcGlsZXIoZGVsZWdhdGUpO1xuXG4gICAgbGV0IG1haW5Mb2NhdG9yID0gbG9jYXRvckZvcigndGVtcGxhdGU6bWFpblRlbXBsYXRlJywgJ2RlZmF1bHQnKTtcbiAgICBtYWluTG9jYXRvci5tZXRhLm1vZHVsZSA9ICd0ZW1wbGF0ZTptYWluVGVtcGxhdGUnO1xuXG4gICAgbGV0IGJsb2NrID0gSlNPTi5wYXJzZShtYWluVGVtcGxhdGUuYmxvY2spO1xuICAgIGxldCBjb21waWxhYmxlVGVtcGxhdGUgPSBjb21waWxhYmxlKHtcbiAgICAgIGJsb2NrLFxuICAgICAgcmVmZXJyZXI6IG1haW5Mb2NhdG9yLm1ldGEsXG4gICAgfSk7XG5cbiAgICBjb21waWxlci5hZGRDb21waWxhYmxlVGVtcGxhdGUobWFpbkxvY2F0b3IsIGNvbXBpbGFibGVUZW1wbGF0ZSk7XG5cbiAgICBmb3IgKGxldCBtb2R1bGUgaW4gdGhpcy50ZW1wbGF0ZXMpIHtcbiAgICAgIGNvbXBpbGVyLmFkZFRlbXBsYXRlU291cmNlKGxvY2F0b3JGb3IobW9kdWxlLCAnZGVmYXVsdCcpLCB0aGlzLnRlbXBsYXRlc1ttb2R1bGVdKTtcbiAgICB9XG5cbiAgICBsZXQgeyBoZWFwLCBwb29sLCB0YWJsZSB9ID0gY29tcGlsZXIuY29tcGlsZSgpO1xuXG4gICAgbGV0IHJlc29sdmVyVGFibGU6IHVua25vd25bXSA9IFtdO1xuXG4gICAgbGV0IG1ldGE6IERpY3Q8TWV0YWRhdGE+ID0ge307XG5cbiAgICB0YWJsZS52bUhhbmRsZUJ5TW9kdWxlTG9jYXRvci5mb3JFYWNoKCh2bUhhbmRsZSwgbG9jYXRvcikgPT4ge1xuICAgICAgbGV0IGhhbmRsZSA9IHRhYmxlLmJ5TW9kdWxlTG9jYXRvci5nZXQobG9jYXRvcik7XG4gICAgICBsZXQgdGVtcGxhdGUgPSBjb21waWxlci5nZXRUZW1wbGF0ZShsb2NhdG9yKTtcblxuICAgICAgbWV0YVtsb2NhdG9yLm1vZHVsZV0gPSB7XG4gICAgICAgIHY6IHZtSGFuZGxlLFxuICAgICAgICBoOiBoYW5kbGUsXG4gICAgICAgIHRhYmxlOiB0ZW1wbGF0ZS5zeW1ib2xUYWJsZSxcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICB0YWJsZS5ieUhhbmRsZS5mb3JFYWNoKChsb2NhdG9yLCBoYW5kbGUpID0+IHtcbiAgICAgIGxldCBtb2R1bGUgPSBsb2NhdG9yLm1vZHVsZS5yZXBsYWNlKCd0ZW1wbGF0ZTovJywgJ2NvbXBvbmVudDovJyk7XG4gICAgICBpZiAodGhpcy5tb2R1bGVzW21vZHVsZV0pIHtcbiAgICAgICAgaWYgKG1vZHVsZS5pbmRleE9mKCdoZWxwZXI6JykgPT09IDApIHtcbiAgICAgICAgICBjb25zdCBtb2R1bGVUeXBlID0gKHRoaXMubW9kdWxlc1ttb2R1bGVdIGFzIEhlbHBlckZ1bmN0aW9uKS5pc0ZhY3RvcnkgPyBNb2R1bGVUeXBlcy5IRUxQRVJfRkFDVE9SWSA6IE1vZHVsZVR5cGVzLkhFTFBFUjtcbiAgICAgICAgICByZXNvbHZlclRhYmxlW2hhbmRsZV0gPSBbbW9kdWxlVHlwZSwgdGhpcy5tb2R1bGVzW21vZHVsZV1dO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc29sdmVyVGFibGVbaGFuZGxlXSA9IHRoaXMubW9kdWxlc1ttb2R1bGVdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBsZXQgYnl0ZWNvZGUgPSBoZWFwLmJ1ZmZlcjtcbiAgICBsZXQgZGF0YSA9IHtcbiAgICAgIHByZWZpeDogJycsXG4gICAgICBtYWluRW50cnk6IHRhYmxlLnZtSGFuZGxlQnlNb2R1bGVMb2NhdG9yLmdldChtYWluTG9jYXRvciksXG4gICAgICBwb29sLFxuICAgICAgdGFibGU6IHJlc29sdmVyVGFibGUsXG4gICAgICBtZXRhLFxuICAgICAgaGVhcDoge1xuICAgICAgICB0YWJsZTogaGVhcC50YWJsZSxcbiAgICAgICAgaGFuZGxlOiBoZWFwLmhhbmRsZSxcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIHJldHVybiBuZXcgQnl0ZWNvZGVMb2FkZXIoeyBieXRlY29kZSwgZGF0YSB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBidWlsZExvYWRlcihyZXNvbHZlcik6IExvYWRlciB7XG4gICAgc3dpdGNoICh0aGlzLm9wdGlvbnMubG9hZGVyKSB7XG4gICAgICBjYXNlICdydW50aW1lLWNvbXBpbGVyJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuYnVpbGRSdW50aW1lQ29tcGlsZXJMb2FkZXIoKTtcbiAgICAgIGNhc2UgJ2J5dGVjb2RlJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuYnVpbGRCeXRlY29kZUxvYWRlcihyZXNvbHZlcik7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVucmVjb2duaXplZCBsb2FkZXIgJHt0aGlzLm9wdGlvbnMubG9hZGVyfWApO1xuICAgIH1cbiAgfVxuXG4gIHJlbmRlclRvU3RyaW5nKGNvbXBvbmVudE5hbWU6IHN0cmluZywgZGF0YTogRGljdDx1bmtub3duPiwgb3B0aW9ucz86IFRlc3RTU1JBcHBsaWNhdGlvbk9wdGlvbnMpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IHJlc29sdmVyID0gdGhpcy5idWlsZFJlc29sdmVyKCk7XG4gICAgbGV0IGxvYWRlciA9IHRoaXMuYnVpbGRMb2FkZXIocmVzb2x2ZXIpO1xuXG4gICAgcmV0dXJuIFNTUkFwcGxpY2F0aW9uLnJlbmRlclRvU3RyaW5nKGNvbXBvbmVudE5hbWUsIGRhdGEsIHtcbiAgICAgIHJvb3ROYW1lOiB0aGlzLnJvb3ROYW1lLFxuICAgICAgcmVzb2x2ZXIsXG4gICAgICBsb2FkZXIsXG4gICAgICByZW5kZXJlcjogbmV3IFN5bmNSZW5kZXJlcigpLFxuICAgICAgLi4ub3B0aW9uc1xuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgYm9vdCgpOiBQcm9taXNlPFQ+IHtcbiAgICBsZXQgcmVzb2x2ZXIgPSB0aGlzLmJ1aWxkUmVzb2x2ZXIoKTtcbiAgICBsZXQgbG9hZGVyOiBMb2FkZXIgPSB0aGlzLmJ1aWxkTG9hZGVyKHJlc29sdmVyKTtcblxuICAgIGxldCBkb2M6IERvY3VtZW50ID0gKHRoaXMub3B0aW9ucy5kb2N1bWVudCBhcyBEb2N1bWVudCkgfHwgZG9jdW1lbnQ7XG4gICAgbGV0IGVsZW1lbnQgPSBkb2MuYm9keTtcbiAgICBsZXQgYnVpbGRlciA9IG5ldyBET01CdWlsZGVyKHsgZWxlbWVudCB9KTtcbiAgICBsZXQgcmVuZGVyZXIgPSBuZXcgU3luY1JlbmRlcmVyKCk7XG5cbiAgICBsZXQgYXBwID0gbmV3IHRoaXMub3B0aW9ucy5BcHBsaWNhdGlvbkNsYXNzKHtcbiAgICAgIHJlc29sdmVyLFxuICAgICAgYnVpbGRlcixcbiAgICAgIGxvYWRlcixcbiAgICAgIHJlbmRlcmVyLFxuICAgICAgcm9vdE5hbWU6IHRoaXMucm9vdE5hbWUsXG4gICAgICBkb2N1bWVudDogdGhpcy5vcHRpb25zLmRvY3VtZW50LFxuICAgIH0pO1xuXG4gICAgbGV0IHJvb3RFbGVtZW50ID0gZG9jLmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIGFwcC5yb290RWxlbWVudCA9IHJvb3RFbGVtZW50O1xuICAgIGFwcC5yZW5kZXJDb21wb25lbnQoJ01haW4nLCByb290RWxlbWVudCk7XG4gICAgYXBwLmJvb3QoKTtcblxuICAgIGF3YWl0IGRpZFJlbmRlcihhcHApO1xuXG4gICAgcmV0dXJuIGFwcDtcbiAgfVxufVxuXG5jbGFzcyBDb21waWxlckRlbGVnYXRlIGltcGxlbWVudHMgSUNvbXBpbGVyRGVsZWdhdGU8TW9kdWxlTG9jYXRvcj4ge1xuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgcmVzb2x2ZXI6IFJlc29sdmVyKSB7fVxuXG4gIGhhc0NvbXBvbmVudEluU2NvcGUobmFtZTogc3RyaW5nLCByZWZlcnJlcjogTW9kdWxlTG9jYXRvcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMucmVzb2x2ZXIuaWRlbnRpZnkoYHRlbXBsYXRlOiR7bmFtZX1gLCByZWZlcnJlci5tb2R1bGUpO1xuICB9XG5cbiAgcmVzb2x2ZUNvbXBvbmVudChuYW1lOiBzdHJpbmcsIHJlZmVycmVyOiBNb2R1bGVMb2NhdG9yKTogTW9kdWxlTG9jYXRvciB7XG4gICAgbGV0IHJlc29sdmVkID0gdGhpcy5yZXNvbHZlci5pZGVudGlmeShgdGVtcGxhdGU6JHtuYW1lfWAsIHJlZmVycmVyLm1vZHVsZSk7XG4gICAgcmV0dXJuIHsgbW9kdWxlOiByZXNvbHZlZCwgbmFtZTogJ2RlZmF1bHQnIH07XG4gIH1cblxuICBnZXRDb21wb25lbnRDYXBhYmlsaXRpZXMoKSB7XG4gICAgcmV0dXJuIENBUEFCSUxJVElFUztcbiAgfVxuXG4gIGhhc0hlbHBlckluU2NvcGUoaGVscGVyTmFtZTogc3RyaW5nLCByZWZlcnJlcjogTW9kdWxlTG9jYXRvcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMucmVzb2x2ZXIuaWRlbnRpZnkoYGhlbHBlcjoke2hlbHBlck5hbWV9YCwgcmVmZXJyZXIubW9kdWxlKTtcbiAgfVxuXG4gIHJlc29sdmVIZWxwZXIoaGVscGVyTmFtZTogc3RyaW5nLCByZWZlcnJlcjogTW9kdWxlTG9jYXRvcik6IE1vZHVsZUxvY2F0b3Ige1xuICAgIGxldCByZXNvbHZlZCA9IHRoaXMucmVzb2x2ZXIuaWRlbnRpZnkoYGhlbHBlcjoke2hlbHBlck5hbWV9YCwgcmVmZXJyZXIubW9kdWxlKTtcbiAgICByZXR1cm4geyBtb2R1bGU6IHJlc29sdmVkLCBuYW1lOiAnZGVmYXVsdCcgfTtcbiAgfVxuXG4gIGhhc1BhcnRpYWxJblNjb3BlKHBhcnRpYWxOYW1lOiBzdHJpbmcsIHJlZmVycmVyOiBNb2R1bGVMb2NhdG9yKTogYm9vbGVhbiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgcmVzb2x2ZVBhcnRpYWwocGFydGlhbE5hbWU6IHN0cmluZywgcmVmZXJyZXI6IE1vZHVsZUxvY2F0b3IpOiBNb2R1bGVMb2NhdG9yIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cblxuICBoYXNNb2RpZmllckluU2NvcGUobW9kaWZpZXJOYW1lOiBzdHJpbmcsIHJlZmVycmVyOiBNb2R1bGVMb2NhdG9yKTogYm9vbGVhbiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgcmVzb2x2ZU1vZGlmaWVyKG1vZGlmaWVyTmFtZTogc3RyaW5nLCByZWZlcnJlcjogTW9kdWxlTG9jYXRvcik6IE1vZHVsZUxvY2F0b3Ige1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBidWlsZEFwcDxUIGV4dGVuZHMgVGVzdEFwcGxpY2F0aW9uPihvcHRpb25zOiBBcHBCdWlsZGVyT3B0aW9uczxUPiA9IHt9KTogQXBwQnVpbGRlcjxUPiB7XG4gIG9wdGlvbnMuYXBwTmFtZSA9IG9wdGlvbnMuYXBwTmFtZSB8fCAndGVzdC1hcHAnO1xuICBvcHRpb25zLmxvYWRlciA9IG9wdGlvbnMubG9hZGVyIHx8ICdydW50aW1lLWNvbXBpbGVyJztcbiAgb3B0aW9ucy5Db21wb25lbnRNYW5hZ2VyID0gb3B0aW9ucy5Db21wb25lbnRNYW5hZ2VyIHx8IENvbXBvbmVudE1hbmFnZXI7XG4gIG9wdGlvbnMuQXBwbGljYXRpb25DbGFzcyA9XG4gICAgb3B0aW9ucy5BcHBsaWNhdGlvbkNsYXNzIHx8IChUZXN0QXBwbGljYXRpb24gYXMgQXBwbGljYXRpb25Db25zdHJ1Y3RvcjxUPik7XG5cbiAgcmV0dXJuIG5ldyBBcHBCdWlsZGVyKG9wdGlvbnMuYXBwTmFtZSwgb3B0aW9ucyk7XG59XG5cbmV4cG9ydCB7IGJ1aWxkQXBwIH07XG4iXSwic291cmNlUm9vdCI6IiJ9 |
@@ -331,2 +331,2 @@ "use strict"; | ||
exports.buildApp = buildApp; | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2FwcGxpY2F0aW9uLXRlc3QtaGVscGVycy9zcmMvYXBwLWJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOzs7O0FBRUE7Ozs7QUFDQTs7QUFDQTs7OztBQVVBOztBQUNBOztBQUNBOztBQUVBOztBQUdBOztBQUVBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFhQSxJQUFBLDRDQUFBLFVBQUEsWUFBQSxFQUFBO0FBQUEsY0FBQSxlQUFBLEVBQUEsWUFBQTs7QUFBQSxhQUFBLGVBQUEsR0FBQTtBQUFBLHdCQUFBLElBQUEsRUFBQSxlQUFBOztBQUFBLGVBQUEsMkJBQUEsSUFBQSxFQUFBLGFBQUEsS0FBQSxDQUFBLElBQUEsRUFBQSxTQUFBLENBQUEsQ0FBQTtBQUFBOztBQUFBLFdBQUEsZUFBQTtBQUFBLENBQUEsQ0FBQSxxQkFBQSxDQUFBO0FBWUEsU0FBQSxVQUFBLENBQUEsTUFBQSxFQUFBLElBQUEsRUFBZ0Q7QUFDOUMsV0FBTztBQUNMLGNBREssVUFBQTtBQUVMLGdCQUZLLE1BQUE7QUFHTCxjQUhLLElBQUE7QUFJTCxjQUFNO0FBQ0osb0JBREksTUFBQTtBQUVKLGtCQUFBO0FBRkk7QUFKRCxLQUFQO0FBU0Q7O0lBRVksYTtBQU1YLGFBQUEsVUFBQSxDQUFBLElBQUEsRUFBQSxPQUFBLEVBQXVEO0FBQUEsd0JBQUEsSUFBQSxFQUFBLFVBQUE7O0FBSnZELGFBQUEsT0FBQSxHQUFBLEVBQUE7QUFDQSxhQUFBLFNBQUEsR0FBQSxFQUFBO0FBSUUsYUFBQSxRQUFBLEdBQUEsSUFBQTtBQUNBLGFBQUEsT0FBQSxHQUFBLE9BQUE7QUFDQSxhQUFBLE9BQUEsQ0FBQSx3QkFDd0IsS0FEeEIsUUFBQSxHQUFBLDBCQUFBLElBRUksS0FBQSxPQUFBLENBRkosZ0JBQUE7QUFHQSxhQUFBLFFBQUEsQ0FBQSxNQUFBLEVB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QUEzQixTQUFPLEVBQVA7OzsrQkFHRixpQiw4QkFBa0IsVyxFQUFxQixRLEVBQXVCO0FBQzVELGNBQU0sSUFBQSxLQUFBLENBQU4seUJBQU0sQ0FBTjs7OytCQUdGLGMsMkJBQWUsVyxFQUFxQixRLEVBQXVCO0FBQ3pELGNBQU0sSUFBQSxLQUFBLENBQU4seUJBQU0sQ0FBTjs7OytCQUdGLGtCLCtCQUFtQixZLEVBQXNCLFEsRUFBdUI7QUFDOUQsY0FBTSxJQUFBLEtBQUEsQ0FBTix5QkFBTSxDQUFOOzs7K0JBR0YsZSw0QkFBZ0IsWSxFQUFzQixRLEVBQXVCO0FBQzNELGNBQU0sSUFBQSxLQUFBLENBQU4seUJBQU0sQ0FBTjs7Ozs7O0FBSUosU0FBQSxRQUFBLEdBQStFO0FBQUEsUUFBbEMsVUFBa0MsVUFBQSxNQUFBLEdBQUEsQ0FBQSxJQUFBLFVBQUEsQ0FBQSxNQUFBLFNBQUEsR0FBQSxVQUFBLENBQUEsQ0FBQSxHQUFGLEVBQUU7O0FBQzdFLFlBQUEsT0FBQSxHQUFrQixRQUFBLE9BQUEsSUFBbEIsVUFBQTtBQUNBLFlBQUEsTUFBQSxHQUFpQixRQUFBLE1BQUEsSUFBakIsa0JBQUE7QUFDQSxZQUFBLGdCQUFBLEdBQTJCLFFBQUEsZ0JBQUEsSUFBM0IsMkJBQUE7QUFDQSxZQUFBLGdCQUFBLEdBQ0UsUUFBQSxnQkFBQSxJQURGLGVBQUE7QUFHQSxXQUFPLElBQUEsVUFBQSxDQUFlLFFBQWYsT0FBQSxFQUFQLE9BQU8sQ0FBUDtBQUNEO1FBRUQsUSxHQUFBLFEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVzb2x2ZXIsIHsgQmFzaWNNb2R1bGVSZWdpc3RyeSwgUmVzb2x2ZXJDb25maWd1cmF0aW9uIH0gZnJvbSAnQGdsaW1tZXIvcmVzb2x2ZXInO1xuaW1wb3J0IHsgRGljdCwgTW9kdWxlTG9jYXRvciwgVGVtcGxhdGVMb2NhdG9yIH0gZnJvbSAnQGdsaW1tZXIvaW50ZXJmYWNlcyc7XG5pbXBvcnQgZGVmYXVsdFJlc29sdmVyQ29uZmlndXJhdGlvbiBmcm9tICcuL2RlZmF1bHQtcmVzb2x2ZXItY29uZmlndXJhdGlvbic7XG5pbXBvcnQgeyBwcmVjb21waWxlIH0gZnJvbSAnLi9jb21waWxlcic7XG5pbXBvcnQgQXBwbGljYXRpb24sIHtcbiAgQXBwbGljYXRpb25Db25zdHJ1Y3RvcixcbiAgQnl0ZWNvZGVMb2FkZXIsXG4gIERPTUJ1aWxkZXIsXG4gIExvYWRlcixcbiAgUnVudGltZUNvbXBpbGVyTG9hZGVyLFxuICBTeW5jUmVuZGVyZXIsXG4gIE1vZHVsZVR5cGVzLFxuICBJTlRFUk5BTF9EWU5BTUlDX1NDT1BFXG59IGZyb20gJ0BnbGltbWVyL2FwcGxpY2F0aW9uJztcbmltcG9ydCB7IENvbXBvbmVudE1hbmFnZXIsIENBUEFCSUxJVElFUyB9IGZyb20gJ0BnbGltbWVyL2NvbXBvbmVudCc7XG5pbXBvcnQgeyBhc3NlcnQgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCB7IEJ1bmRsZUNvbXBpbGVyLCBDb21waWxlckRlbGVnYXRlIGFzIElDb21waWxlckRlbGVnYXRlIH0gZnJvbSAnQGdsaW1tZXIvYnVuZGxlLWNvbXBpbGVyJztcbmltcG9ydCB7IGJ1aWxkQWN0aW9uLCBtYWluVGVtcGxhdGUgfSBmcm9tICdAZ2xpbW1lci9hcHBsaWNhdGlvbic7XG5pbXBvcnQgeyBjb21waWxhYmxlIH0gZnJvbSAnQGdsaW1tZXIvb3Bjb2RlLWNvbXBpbGVyJztcbmltcG9ydCB7IE1ldGFkYXRhIH0gZnJvbSAnLi4vLi4vYXBwbGljYXRpb24vc3JjL2xvYWRlcnMvYnl0ZWNvZGUvbG9hZGVyJztcbmltcG9ydCB7IFNpbXBsZURvY3VtZW50IH0gZnJvbSAnQHNpbXBsZS1kb20vaW50ZXJmYWNlJztcbmltcG9ydCB7IFNTUkFwcGxpY2F0aW9uIH0gZnJvbSAnQGdsaW1tZXIvc3NyJztcblxuaW1wb3J0IGRpZFJlbmRlciBmcm9tICcuL2RpZC1yZW5kZXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFwcEJ1aWxkZXJPcHRpb25zPFQ+IHtcbiAgYXBwTmFtZT86IHN0cmluZztcbiAgbG9hZGVyPzogc3RyaW5nO1xuICBBcHBsaWNhdGlvbkNsYXNzPzogQXBwbGljYXRpb25Db25zdHJ1Y3RvcjxUPjtcbiAgQ29tcG9uZW50TWFuYWdlcj86IGFueTsgLy8gVE9ETyAtIHR5cGluZ1xuICByZXNvbHZlckNvbmZpZ3VyYXRpb24/OiBSZXNvbHZlckNvbmZpZ3VyYXRpb247XG4gIGRvY3VtZW50PzogU2ltcGxlRG9jdW1lbnQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50RmFjdG9yeSB7fVxuXG5leHBvcnQgY2xhc3MgVGVzdEFwcGxpY2F0aW9uIGV4dGVuZHMgQXBwbGljYXRpb24ge1xuICByb290RWxlbWVudDogRWxlbWVudDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBcHBCdWlsZGVyVGVtcGxhdGVNZXRhIHtcbiAgc3BlY2lmaWVyOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBIZWxwZXJGdW5jdGlvbiBleHRlbmRzIEZ1bmN0aW9uIHtcbiAgaXNGYWN0b3J5PzogYm9vbGVhbjtcbn1cblxuZnVuY3Rpb24gbG9jYXRvckZvcihtb2R1bGU6IHN0cmluZywgbmFtZTogc3RyaW5nKTogVGVtcGxhdGVMb2NhdG9yPE1vZHVsZUxvY2F0b3I+IHtcbiAgcmV0dXJuIHtcbiAgICBraW5kOiAndGVtcGxhdGUnLFxuICAgIG1vZHVsZSxcbiAgICBuYW1lLFxuICAgIG1ldGE6IHtcbiAgICAgIG1vZHVsZSxcbiAgICAgIG5hbWUsXG4gICAgfSxcbiAgfTtcbn1cblxuZXhwb3J0IGNsYXNzIEFwcEJ1aWxkZXI8VCBleHRlbmRzIFRlc3RBcHBsaWNhdGlvbj4ge1xuICByb290TmFtZTogc3RyaW5nO1xuICBtb2R1bGVzOiBEaWN0PHVua25vd24+ID0ge307XG4gIHRlbXBsYXRlczogRGljdDxzdHJpbmc+ID0ge307XG4gIG9wdGlvbnM6IEFwcEJ1aWxkZXJPcHRpb25zPFQ+O1xuXG4gIGNvbnN0cnVjdG9yKG5hbWU6IHN0cmluZywgb3B0aW9uczogQXBwQnVpbGRlck9wdGlvbnM8VD4pIHtcbiAgICB0aGlzLnJvb3ROYW1lID0gbmFtZTtcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgIHRoaXMubW9kdWxlc1tcbiAgICAgIGBjb21wb25lbnQtbWFuYWdlcjovJHt0aGlzLnJvb3ROYW1lfS9jb21wb25lbnQtbWFuYWdlcnMvbWFpbmBcbiAgICBdID0gdGhpcy5vcHRpb25zLkNvbXBvbmVudE1hbmFnZXI7XG4gICAgdGhpcy50ZW1wbGF0ZSgnTWFpbicsICc8ZGl2IC8+Jyk7XG4gICAgdGhpcy5oZWxwZXIoJ2FjdGlvbicsIGJ1aWxkQWN0aW9uLCB0cnVlKTtcbiAgfVxuXG4gIHRlbXBsYXRlKG5hbWU6IHN0cmluZywgdGVtcGxhdGU6IHN0cmluZykge1xuICAgIGFzc2VydChcbiAgICAgIG5hbWUuY2hhckF0KDApID09PSBuYW1lLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpLFxuICAgICAgJ3RlbXBsYXRlIG5hbWVzIG11c3Qgc3RhcnQgd2l0aCBhIGNhcGl0YWwgbGV0dGVyJ1xuICAgICk7XG5cbiAgICBsZXQgc3BlY2lmaWVyID0gYHRlbXBsYXRlOi8ke3RoaXMucm9vdE5hbWV9L2NvbXBvbmVudHMvJHtuYW1lfWA7XG4gICAgdGhpcy5tb2R1bGVzW3NwZWNpZmllcl0gPSBwcmVjb21waWxlKHRlbXBsYXRlLCB7IG1ldGE6IHsgc3BlY2lmaWVyIH0gfSk7XG4gICAgdGhpcy50ZW1wbGF0ZXNbc3BlY2lmaWVyXSA9IHRlbXBsYXRlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgY29tcG9uZW50KG5hbWU6IHN0cmluZywgY29tcG9uZW50RmFjdG9yeTogQ29tcG9uZW50RmFjdG9yeSkge1xuICAgIGxldCBzcGVjaWZpZXIgPSBgY29tcG9uZW50Oi8ke3RoaXMucm9vdE5hbWV9L2NvbXBvbmVudHMvJHtuYW1lfWA7XG4gICAgdGhpcy5tb2R1bGVzW3NwZWNpZmllcl0gPSBjb21wb25lbnRGYWN0b3J5O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgaGVscGVyKG5hbWU6IHN0cmluZywgaGVscGVyRnVuYzogSGVscGVyRnVuY3Rpb24sIGlzRmFjdG9yeSA9IGZhbHNlKSB7XG4gICAgbGV0IHNwZWNpZmllciA9IGBoZWxwZXI6LyR7dGhpcy5yb290TmFtZX0vY29tcG9uZW50cy8ke25hbWV9YDtcbiAgICBoZWxwZXJGdW5jLmlzRmFjdG9yeSA9IGlzRmFjdG9yeTtcbiAgICB0aGlzLm1vZHVsZXNbc3BlY2lmaWVyXSA9IGhlbHBlckZ1bmM7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwcm90ZWN0ZWQgYnVpbGRSZXNvbHZlcigpOiBSZXNvbHZlciB7XG4gICAgbGV0IHJlc29sdmVyQ29uZmlndXJhdGlvbiA9IHRoaXMub3B0aW9ucy5yZXNvbHZlckNvbmZpZ3VyYXRpb24gfHwgZGVmYXVsdFJlc29sdmVyQ29uZmlndXJhdGlvbjtcbiAgICByZXNvbHZlckNvbmZpZ3VyYXRpb24uYXBwID0gcmVzb2x2ZXJDb25maWd1cmF0aW9uLmFwcCB8fCB7XG4gICAgICBuYW1lOiB0aGlzLnJvb3ROYW1lLFxuICAgICAgcm9vdE5hbWU6IHRoaXMucm9vdE5hbWUsXG4gICAgfTtcblxuICAgIGxldCByZWdpc3RyeSA9IG5ldyBCYXNpY01vZHVsZVJlZ2lzdHJ5KHRoaXMubW9kdWxlcyk7XG4gICAgcmV0dXJuIG5ldyBSZXNvbHZlcihyZXNvbHZlckNvbmZpZ3VyYXRpb24sIHJlZ2lzdHJ5KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBidWlsZFJ1bnRpbWVDb21waWxlckxvYWRlcigpOiBMb2FkZXIge1xuICAgIHJldHVybiBuZXcgUnVudGltZUNvbXBpbGVyTG9hZGVyKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYnVpbGRCeXRlY29kZUxvYWRlcihyZXNvbHZlcjogUmVzb2x2ZXIpIHtcbiAgICBsZXQgZGVsZWdhdGUgPSBuZXcgQ29tcGlsZXJEZWxlZ2F0ZShyZXNvbHZlcik7XG4gICAgbGV0IGNvbXBpbGVyID0gbmV3IEJ1bmRsZUNvbXBpbGVyKGRlbGVnYXRlKTtcblxuICAgIGxldCBtYWluTG9jYXRvciA9IGxvY2F0b3JGb3IoJ3RlbXBsYXRlOm1haW5UZW1wbGF0ZScsICdkZWZhdWx0Jyk7XG4gICAgbWFpbkxvY2F0b3IubWV0YS5tb2R1bGUgPSAndGVtcGxhdGU6bWFpblRlbXBsYXRlJztcblxuICAgIGxldCBibG9jayA9IEpTT04ucGFyc2UobWFpblRlbXBsYXRlLmJsb2NrKTtcbiAgICBsZXQgY29tcGlsYWJsZVRlbXBsYXRlID0gY29tcGlsYWJsZSh7XG4gICAgICBibG9jayxcbiAgICAgIHJlZmVycmVyOiBtYWluTG9jYXRvci5tZXRhLFxuICAgIH0pO1xuXG4gICAgY29tcGlsZXIuYWRkQ29tcGlsYWJsZVRlbXBsYXRlKG1haW5Mb2NhdG9yLCBjb21waWxhYmxlVGVtcGxhdGUpO1xuXG4gICAgZm9yIChsZXQgbW9kdWxlIGluIHRoaXMudGVtcGxhdGVzKSB7XG4gICAgICBjb21waWxlci5hZGRUZW1wbGF0ZVNvdXJjZShsb2NhdG9yRm9yKG1vZHVsZSwgJ2RlZmF1bHQnKSwgdGhpcy50ZW1wbGF0ZXNbbW9kdWxlXSk7XG4gICAgfVxuXG4gICAgbGV0IHsgaGVhcCwgcG9vbCwgdGFibGUgfSA9IGNvbXBpbGVyLmNvbXBpbGUoKTtcblxuICAgIGxldCByZXNvbHZlclRhYmxlOiB1bmtub3duW10gPSBbXTtcblxuICAgIGxldCBtZXRhOiBEaWN0PE1ldGFkYXRhPiA9IHt9O1xuXG4gICAgdGFibGUudm1IYW5kbGVCeU1vZHVsZUxvY2F0b3IuZm9yRWFjaCgodm1IYW5kbGUsIGxvY2F0b3IpID0+IHtcbiAgICAgIGxldCBoYW5kbGUgPSB0YWJsZS5ieU1vZHVsZUxvY2F0b3IuZ2V0KGxvY2F0b3IpO1xuICAgICAgbGV0IHRlbXBsYXRlID0gY29tcGlsZXIuZ2V0VGVtcGxhdGUobG9jYXRvcik7XG5cbiAgICAgIG1ldGFbbG9jYXRvci5tb2R1bGVdID0ge1xuICAgICAgICB2OiB2bUhhbmRsZSxcbiAgICAgICAgaDogaGFuZGxlLFxuICAgICAgICB0YWJsZTogdGVtcGxhdGUuc3ltYm9sVGFibGUsXG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgdGFibGUuYnlIYW5kbGUuZm9yRWFjaCgobG9jYXRvciwgaGFuZGxlKSA9PiB7XG4gICAgICBsZXQgbW9kdWxlID0gbG9jYXRvci5tb2R1bGUucmVwbGFjZSgndGVtcGxhdGU6LycsICdjb21wb25lbnQ6LycpO1xuICAgICAgaWYgKHRoaXMubW9kdWxlc1ttb2R1bGVdKSB7XG4gICAgICAgIGlmIChtb2R1bGUuaW5kZXhPZignaGVscGVyOicpID09PSAwKSB7XG4gICAgICAgICAgY29uc3QgbW9kdWxlVHlwZSA9ICh0aGlzLm1vZHVsZXNbbW9kdWxlXSBhcyBIZWxwZXJGdW5jdGlvbikuaXNGYWN0b3J5ID8gTW9kdWxlVHlwZXMuSEVMUEVSX0ZBQ1RPUlkgOiBNb2R1bGVUeXBlcy5IRUxQRVI7XG4gICAgICAgICAgcmVzb2x2ZXJUYWJsZVtoYW5kbGVdID0gW21vZHVsZVR5cGUsIHRoaXMubW9kdWxlc1ttb2R1bGVdXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXNvbHZlclRhYmxlW2hhbmRsZV0gPSB0aGlzLm1vZHVsZXNbbW9kdWxlXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgbGV0IGJ5dGVjb2RlID0gaGVhcC5idWZmZXI7XG4gICAgbGV0IGRhdGEgPSB7XG4gICAgICBwcmVmaXg6ICcnLFxuICAgICAgbWFpbkVudHJ5OiB0YWJsZS52bUhhbmRsZUJ5TW9kdWxlTG9jYXRvci5nZXQobWFpbkxvY2F0b3IpLFxuICAgICAgcG9vbCxcbiAgICAgIHRhYmxlOiByZXNvbHZlclRhYmxlLFxuICAgICAgbWV0YSxcbiAgICAgIGhlYXA6IHtcbiAgICAgICAgdGFibGU6IGhlYXAudGFibGUsXG4gICAgICAgIGhhbmRsZTogaGVhcC5oYW5kbGUsXG4gICAgICB9LFxuICAgIH07XG5cbiAgICByZXR1cm4gbmV3IEJ5dGVjb2RlTG9hZGVyKHsgYnl0ZWNvZGUsIGRhdGEgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYnVpbGRMb2FkZXIocmVzb2x2ZXIpOiBMb2FkZXIge1xuICAgIHN3aXRjaCAodGhpcy5vcHRpb25zLmxvYWRlcikge1xuICAgICAgY2FzZSAncnVudGltZS1jb21waWxlcic6XG4gICAgICAgIHJldHVybiB0aGlzLmJ1aWxkUnVudGltZUNvbXBpbGVyTG9hZGVyKCk7XG4gICAgICBjYXNlICdieXRlY29kZSc6XG4gICAgICAgIHJldHVybiB0aGlzLmJ1aWxkQnl0ZWNvZGVMb2FkZXIocmVzb2x2ZXIpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbnJlY29nbml6ZWQgbG9hZGVyICR7dGhpcy5vcHRpb25zLmxvYWRlcn1gKTtcbiAgICB9XG4gIH1cblxuICByZW5kZXJUb1N0cmluZyhjb21wb25lbnROYW1lOiBzdHJpbmcsIGRhdGE6IERpY3Q8dW5rbm93bj4sIG9wdGlvbnM/OiB7IFtJTlRFUk5BTF9EWU5BTUlDX1NDT1BFXTogRGljdDx1bmtub3duPiB9KTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBjb25zdCByZXNvbHZlciA9IHRoaXMuYnVpbGRSZXNvbHZlcigpO1xuICAgIGxldCBsb2FkZXIgPSB0aGlzLmJ1aWxkTG9hZGVyKHJlc29sdmVyKTtcblxuICAgIHJldHVybiBTU1JBcHBsaWNhdGlvbi5yZW5kZXJUb1N0cmluZyhjb21wb25lbnROYW1lLCBkYXRhLCB7XG4gICAgICByb290TmFtZTogdGhpcy5yb290TmFtZSxcbiAgICAgIHJlc29sdmVyLFxuICAgICAgbG9hZGVyLFxuICAgICAgcmVuZGVyZXI6IG5ldyBTeW5jUmVuZGVyZXIoKSxcbiAgICAgIC4uLm9wdGlvbnNcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIGJvb3QoKTogUHJvbWlzZTxUPiB7XG4gICAgbGV0IHJlc29sdmVyID0gdGhpcy5idWlsZFJlc29sdmVyKCk7XG4gICAgbGV0IGxvYWRlcjogTG9hZGVyID0gdGhpcy5idWlsZExvYWRlcihyZXNvbHZlcik7XG5cbiAgICBsZXQgZG9jOiBEb2N1bWVudCA9ICh0aGlzLm9wdGlvbnMuZG9jdW1lbnQgYXMgRG9jdW1lbnQpIHx8IGRvY3VtZW50O1xuICAgIGxldCBlbGVtZW50ID0gZG9jLmJvZHk7XG4gICAgbGV0IGJ1aWxkZXIgPSBuZXcgRE9NQnVpbGRlcih7IGVsZW1lbnQgfSk7XG4gICAgbGV0IHJlbmRlcmVyID0gbmV3IFN5bmNSZW5kZXJlcigpO1xuXG4gICAgbGV0IGFwcCA9IG5ldyB0aGlzLm9wdGlvbnMuQXBwbGljYXRpb25DbGFzcyh7XG4gICAgICByZXNvbHZlcixcbiAgICAgIGJ1aWxkZXIsXG4gICAgICBsb2FkZXIsXG4gICAgICByZW5kZXJlcixcbiAgICAgIHJvb3ROYW1lOiB0aGlzLnJvb3ROYW1lLFxuICAgICAgZG9jdW1lbnQ6IHRoaXMub3B0aW9ucy5kb2N1bWVudCxcbiAgICB9KTtcblxuICAgIGxldCByb290RWxlbWVudCA9IGRvYy5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICBhcHAucm9vdEVsZW1lbnQgPSByb290RWxlbWVudDtcbiAgICBhcHAucmVuZGVyQ29tcG9uZW50KCdNYWluJywgcm9vdEVsZW1lbnQpO1xuICAgIGFwcC5ib290KCk7XG5cbiAgICBhd2FpdCBkaWRSZW5kZXIoYXBwKTtcblxuICAgIHJldHVybiBhcHA7XG4gIH1cbn1cblxuY2xhc3MgQ29tcGlsZXJEZWxlZ2F0ZSBpbXBsZW1lbnRzIElDb21waWxlckRlbGVnYXRlPE1vZHVsZUxvY2F0b3I+IHtcbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIHJlc29sdmVyOiBSZXNvbHZlcikge31cblxuICBoYXNDb21wb25lbnRJblNjb3BlKG5hbWU6IHN0cmluZywgcmVmZXJyZXI6IE1vZHVsZUxvY2F0b3IpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLnJlc29sdmVyLmlkZW50aWZ5KGB0ZW1wbGF0ZToke25hbWV9YCwgcmVmZXJyZXIubW9kdWxlKTtcbiAgfVxuXG4gIHJlc29sdmVDb21wb25lbnQobmFtZTogc3RyaW5nLCByZWZlcnJlcjogTW9kdWxlTG9jYXRvcik6IE1vZHVsZUxvY2F0b3Ige1xuICAgIGxldCByZXNvbHZlZCA9IHRoaXMucmVzb2x2ZXIuaWRlbnRpZnkoYHRlbXBsYXRlOiR7bmFtZX1gLCByZWZlcnJlci5tb2R1bGUpO1xuICAgIHJldHVybiB7IG1vZHVsZTogcmVzb2x2ZWQsIG5hbWU6ICdkZWZhdWx0JyB9O1xuICB9XG5cbiAgZ2V0Q29tcG9uZW50Q2FwYWJpbGl0aWVzKCkge1xuICAgIHJldHVybiBDQVBBQklMSVRJRVM7XG4gIH1cblxuICBoYXNIZWxwZXJJblNjb3BlKGhlbHBlck5hbWU6IHN0cmluZywgcmVmZXJyZXI6IE1vZHVsZUxvY2F0b3IpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLnJlc29sdmVyLmlkZW50aWZ5KGBoZWxwZXI6JHtoZWxwZXJOYW1lfWAsIHJlZmVycmVyLm1vZHVsZSk7XG4gIH1cblxuICByZXNvbHZlSGVscGVyKGhlbHBlck5hbWU6IHN0cmluZywgcmVmZXJyZXI6IE1vZHVsZUxvY2F0b3IpOiBNb2R1bGVMb2NhdG9yIHtcbiAgICBsZXQgcmVzb2x2ZWQgPSB0aGlzLnJlc29sdmVyLmlkZW50aWZ5KGBoZWxwZXI6JHtoZWxwZXJOYW1lfWAsIHJlZmVycmVyLm1vZHVsZSk7XG4gICAgcmV0dXJuIHsgbW9kdWxlOiByZXNvbHZlZCwgbmFtZTogJ2RlZmF1bHQnIH07XG4gIH1cblxuICBoYXNQYXJ0aWFsSW5TY29wZShwYXJ0aWFsTmFtZTogc3RyaW5nLCByZWZlcnJlcjogTW9kdWxlTG9jYXRvcik6IGJvb2xlYW4ge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuXG4gIHJlc29sdmVQYXJ0aWFsKHBhcnRpYWxOYW1lOiBzdHJpbmcsIHJlZmVycmVyOiBNb2R1bGVMb2NhdG9yKTogTW9kdWxlTG9jYXRvciB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgaGFzTW9kaWZpZXJJblNjb3BlKG1vZGlmaWVyTmFtZTogc3RyaW5nLCByZWZlcnJlcjogTW9kdWxlTG9jYXRvcik6IGJvb2xlYW4ge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuXG4gIHJlc29sdmVNb2RpZmllcihtb2RpZmllck5hbWU6IHN0cmluZywgcmVmZXJyZXI6IE1vZHVsZUxvY2F0b3IpOiBNb2R1bGVMb2NhdG9yIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gYnVpbGRBcHA8VCBleHRlbmRzIFRlc3RBcHBsaWNhdGlvbj4ob3B0aW9uczogQXBwQnVpbGRlck9wdGlvbnM8VD4gPSB7fSk6IEFwcEJ1aWxkZXI8VD4ge1xuICBvcHRpb25zLmFwcE5hbWUgPSBvcHRpb25zLmFwcE5hbWUgfHwgJ3Rlc3QtYXBwJztcbiAgb3B0aW9ucy5sb2FkZXIgPSBvcHRpb25zLmxvYWRlciB8fCAncnVudGltZS1jb21waWxlcic7XG4gIG9wdGlvbnMuQ29tcG9uZW50TWFuYWdlciA9IG9wdGlvbnMuQ29tcG9uZW50TWFuYWdlciB8fCBDb21wb25lbnRNYW5hZ2VyO1xuICBvcHRpb25zLkFwcGxpY2F0aW9uQ2xhc3MgPVxuICAgIG9wdGlvbnMuQXBwbGljYXRpb25DbGFzcyB8fCAoVGVzdEFwcGxpY2F0aW9uIGFzIEFwcGxpY2F0aW9uQ29uc3RydWN0b3I8VD4pO1xuXG4gIHJldHVybiBuZXcgQXBwQnVpbGRlcihvcHRpb25zLmFwcE5hbWUsIG9wdGlvbnMpO1xufVxuXG5leHBvcnQgeyBidWlsZEFwcCB9O1xuIl0sInNvdXJjZVJvb3QiOiIifQ== | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2FwcGxpY2F0aW9uLXRlc3QtaGVscGVycy9zcmMvYXBwLWJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOzs7O0FBRUE7Ozs7QUFDQTs7QUFDQTs7OztBQVVBOztBQUNBOztBQUNBOztBQUVBOztBQUdBOztBQUVBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFlQSxJQUFBLDRDQUFBLFVBQUEsWUFBQSxFQUFBO0FBQUEsY0FBQSxlQUFBLEVBQUEsWUFBQTs7QUFBQSxhQUFBLGVBQUEsR0FBQTtBQUFBLHdCQUFBLElBQUEsRUFBQSxlQUFBOztBQUFBLGVBQUEsMkJBQUEsSUFBQSxFQUFBLGFBQUEsS0FBQSxDQUFBLElBQUEsRUFBQSxTQUFBLENBQUEsQ0FBQTtBQUFBOztBQUFBLFdBQUEsZUFBQTtBQUFBLENBQUEsQ0FBQSxxQkFBQSxDQUFBO0FBcUJBLFNBQUEsVUFBQSxDQUFBLE1BQUEsRUFBQSxJQUFBLEVBQWdEO0FBQzlDLFdBQU87QUFDTCxjQURLLFVBQUE7QUFFTCxnQkFGSyxNQUFBO0FBR0wsY0FISyxJQUFBO0FBSUwsY0FBTTtBQUNKLG9CQURJLE1BQUE7QUFFSixrQkFBQTtBQUZJO0FBSkQsS0FBUDtBQVNEOztJQUVZLGE7QUFNWCxhQUFBLFVBQUEsQ0FBQSxJQUFBLEVBQUEsT0FBQSxFQUF1RDtBQUFBLHdCQUFBLElBQUEsRUFBQSxVQUFBOztBQUp2RCxhQUFBLE9BQUEsR0FBQSxFQUFBO0FBQ0EsYUFBQSxTQUFBLEdBQUEsRUFBQTtBQUlFLGFBQUEsUUFBQSxHQUFBLElBQUE7QUFDQSxhQUFBLE9BQUEsR0FBQSxPQUFBO0FBQ0EsYUFBQSxPQUFBLENBQUEsd0JBQ3dCLEtBRHhCLFFBQUEsR0FBQSwwQkFBQSxJQUVJLEtBQUEsT0FBQSxDQUZKLGdCQUFBO0FBR0EsYUFBQSxRQUFBLENBQUEsTUFBQSxF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TUFBM0IsU0FBTyxFQUFQOzs7K0JBR0YsaUIsOEJBQWtCLFcsRUFBcUIsUSxFQUF1QjtBQUM1RCxjQUFNLElBQUEsS0FBQSxDQUFOLHlCQUFNLENBQU47OzsrQkFHRixjLDJCQUFlLFcsRUFBcUIsUSxFQUF1QjtBQUN6RCxjQUFNLElBQUEsS0FBQSxDQUFOLHlCQUFNLENBQU47OzsrQkFHRixrQiwrQkFBbUIsWSxFQUFzQixRLEVBQXVCO0FBQzlELGNBQU0sSUFBQSxLQUFBLENBQU4seUJBQU0sQ0FBTjs7OytCQUdGLGUsNEJBQWdCLFksRUFBc0IsUSxFQUF1QjtBQUMzRCxjQUFNLElBQUEsS0FBQSxDQUFOLHlCQUFNLENBQU47Ozs7OztBQUlKLFNBQUEsUUFBQSxHQUErRTtBQUFBLFFBQWxDLFVBQWtDLFVBQUEsTUFBQSxHQUFBLENBQUEsSUFBQSxVQUFBLENBQUEsTUFBQSxTQUFBLEdBQUEsVUFBQSxDQUFBLENBQUEsR0FBRixFQUFFOztBQUM3RSxZQUFBLE9BQUEsR0FBa0IsUUFBQSxPQUFBLElBQWxCLFVBQUE7QUFDQSxZQUFBLE1BQUEsR0FBaUIsUUFBQSxNQUFBLElBQWpCLGtCQUFBO0FBQ0EsWUFBQSxnQkFBQSxHQUEyQixRQUFBLGdCQUFBLElBQTNCLDJCQUFBO0FBQ0EsWUFBQSxnQkFBQSxHQUNFLFFBQUEsZ0JBQUEsSUFERixlQUFBO0FBR0EsV0FBTyxJQUFBLFVBQUEsQ0FBZSxRQUFmLE9BQUEsRUFBUCxPQUFPLENBQVA7QUFDRDtRQUVELFEsR0FBQSxRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlc29sdmVyLCB7IEJhc2ljTW9kdWxlUmVnaXN0cnksIFJlc29sdmVyQ29uZmlndXJhdGlvbiB9IGZyb20gJ0BnbGltbWVyL3Jlc29sdmVyJztcbmltcG9ydCB7IERpY3QsIE1vZHVsZUxvY2F0b3IsIFRlbXBsYXRlTG9jYXRvciB9IGZyb20gJ0BnbGltbWVyL2ludGVyZmFjZXMnO1xuaW1wb3J0IGRlZmF1bHRSZXNvbHZlckNvbmZpZ3VyYXRpb24gZnJvbSAnLi9kZWZhdWx0LXJlc29sdmVyLWNvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IHsgcHJlY29tcGlsZSB9IGZyb20gJy4vY29tcGlsZXInO1xuaW1wb3J0IEFwcGxpY2F0aW9uLCB7XG4gIEFwcGxpY2F0aW9uQ29uc3RydWN0b3IsXG4gIEJ5dGVjb2RlTG9hZGVyLFxuICBET01CdWlsZGVyLFxuICBMb2FkZXIsXG4gIFJ1bnRpbWVDb21waWxlckxvYWRlcixcbiAgU3luY1JlbmRlcmVyLFxuICBNb2R1bGVUeXBlcyxcbiAgSU5URVJOQUxfRFlOQU1JQ19TQ09QRVxufSBmcm9tICdAZ2xpbW1lci9hcHBsaWNhdGlvbic7XG5pbXBvcnQgeyBDb21wb25lbnRNYW5hZ2VyLCBDQVBBQklMSVRJRVMgfSBmcm9tICdAZ2xpbW1lci9jb21wb25lbnQnO1xuaW1wb3J0IHsgYXNzZXJ0IH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQgeyBCdW5kbGVDb21waWxlciwgQ29tcGlsZXJEZWxlZ2F0ZSBhcyBJQ29tcGlsZXJEZWxlZ2F0ZSB9IGZyb20gJ0BnbGltbWVyL2J1bmRsZS1jb21waWxlcic7XG5pbXBvcnQgeyBidWlsZEFjdGlvbiwgbWFpblRlbXBsYXRlIH0gZnJvbSAnQGdsaW1tZXIvYXBwbGljYXRpb24nO1xuaW1wb3J0IHsgY29tcGlsYWJsZSB9IGZyb20gJ0BnbGltbWVyL29wY29kZS1jb21waWxlcic7XG5pbXBvcnQgeyBNZXRhZGF0YSB9IGZyb20gJy4uLy4uL2FwcGxpY2F0aW9uL3NyYy9sb2FkZXJzL2J5dGVjb2RlL2xvYWRlcic7XG5pbXBvcnQgeyBTaW1wbGVEb2N1bWVudCB9IGZyb20gJ0BzaW1wbGUtZG9tL2ludGVyZmFjZSc7XG5pbXBvcnQgeyBTU1JBcHBsaWNhdGlvbiB9IGZyb20gJ0BnbGltbWVyL3Nzcic7XG5cbmltcG9ydCBkaWRSZW5kZXIgZnJvbSAnLi9kaWQtcmVuZGVyJztcbmltcG9ydCBIVE1MU2VyaWFsaXplciBmcm9tICdAc2ltcGxlLWRvbS9zZXJpYWxpemVyJztcbmltcG9ydCB7IFJlbmRlcmVyIH0gZnJvbSAnQGdsaW1tZXIvYXBwbGljYXRpb24vc3JjL2Jhc2UtYXBwbGljYXRpb24nO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFwcEJ1aWxkZXJPcHRpb25zPFQ+IHtcbiAgYXBwTmFtZT86IHN0cmluZztcbiAgbG9hZGVyPzogc3RyaW5nO1xuICBBcHBsaWNhdGlvbkNsYXNzPzogQXBwbGljYXRpb25Db25zdHJ1Y3RvcjxUPjtcbiAgQ29tcG9uZW50TWFuYWdlcj86IGFueTsgLy8gVE9ETyAtIHR5cGluZ1xuICByZXNvbHZlckNvbmZpZ3VyYXRpb24/OiBSZXNvbHZlckNvbmZpZ3VyYXRpb247XG4gIGRvY3VtZW50PzogU2ltcGxlRG9jdW1lbnQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50RmFjdG9yeSB7fVxuXG5leHBvcnQgY2xhc3MgVGVzdEFwcGxpY2F0aW9uIGV4dGVuZHMgQXBwbGljYXRpb24ge1xuICByb290RWxlbWVudDogRWxlbWVudDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBcHBCdWlsZGVyVGVtcGxhdGVNZXRhIHtcbiAgc3BlY2lmaWVyOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBIZWxwZXJGdW5jdGlvbiBleHRlbmRzIEZ1bmN0aW9uIHtcbiAgaXNGYWN0b3J5PzogYm9vbGVhbjtcbn1cblxuaW50ZXJmYWNlIFRlc3RTU1JBcHBsaWNhdGlvbk9wdGlvbnMge1xuICByb290TmFtZT86IHN0cmluZztcbiAgcmVzb2x2ZXI/OiBSZXNvbHZlcjtcbiAgbG9hZGVyPzogTG9hZGVyO1xuICByZW5kZXJlcj86IFJlbmRlcmVyO1xuICBzZXJpYWxpemVyPzogSFRNTFNlcmlhbGl6ZXI7XG4gIFtJTlRFUk5BTF9EWU5BTUlDX1NDT1BFXT86IERpY3Q8dW5rbm93bj47XG59XG5cbmZ1bmN0aW9uIGxvY2F0b3JGb3IobW9kdWxlOiBzdHJpbmcsIG5hbWU6IHN0cmluZyk6IFRlbXBsYXRlTG9jYXRvcjxNb2R1bGVMb2NhdG9yPiB7XG4gIHJldHVybiB7XG4gICAga2luZDogJ3RlbXBsYXRlJyxcbiAgICBtb2R1bGUsXG4gICAgbmFtZSxcbiAgICBtZXRhOiB7XG4gICAgICBtb2R1bGUsXG4gICAgICBuYW1lLFxuICAgIH0sXG4gIH07XG59XG5cbmV4cG9ydCBjbGFzcyBBcHBCdWlsZGVyPFQgZXh0ZW5kcyBUZXN0QXBwbGljYXRpb24+IHtcbiAgcm9vdE5hbWU6IHN0cmluZztcbiAgbW9kdWxlczogRGljdDx1bmtub3duPiA9IHt9O1xuICB0ZW1wbGF0ZXM6IERpY3Q8c3RyaW5nPiA9IHt9O1xuICBvcHRpb25zOiBBcHBCdWlsZGVyT3B0aW9uczxUPjtcblxuICBjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmcsIG9wdGlvbnM6IEFwcEJ1aWxkZXJPcHRpb25zPFQ+KSB7XG4gICAgdGhpcy5yb290TmFtZSA9IG5hbWU7XG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgICB0aGlzLm1vZHVsZXNbXG4gICAgICBgY29tcG9uZW50LW1hbmFnZXI6LyR7dGhpcy5yb290TmFtZX0vY29tcG9uZW50LW1hbmFnZXJzL21haW5gXG4gICAgXSA9IHRoaXMub3B0aW9ucy5Db21wb25lbnRNYW5hZ2VyO1xuICAgIHRoaXMudGVtcGxhdGUoJ01haW4nLCAnPGRpdiAvPicpO1xuICAgIHRoaXMuaGVscGVyKCdhY3Rpb24nLCBidWlsZEFjdGlvbiwgdHJ1ZSk7XG4gIH1cblxuICB0ZW1wbGF0ZShuYW1lOiBzdHJpbmcsIHRlbXBsYXRlOiBzdHJpbmcpIHtcbiAgICBhc3NlcnQoXG4gICAgICBuYW1lLmNoYXJBdCgwKSA9PT0gbmFtZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSxcbiAgICAgICd0ZW1wbGF0ZSBuYW1lcyBtdXN0IHN0YXJ0IHdpdGggYSBjYXBpdGFsIGxldHRlcidcbiAgICApO1xuXG4gICAgbGV0IHNwZWNpZmllciA9IGB0ZW1wbGF0ZTovJHt0aGlzLnJvb3ROYW1lfS9jb21wb25lbnRzLyR7bmFtZX1gO1xuICAgIHRoaXMubW9kdWxlc1tzcGVjaWZpZXJdID0gcHJlY29tcGlsZSh0ZW1wbGF0ZSwgeyBtZXRhOiB7IHNwZWNpZmllciB9IH0pO1xuICAgIHRoaXMudGVtcGxhdGVzW3NwZWNpZmllcl0gPSB0ZW1wbGF0ZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGNvbXBvbmVudChuYW1lOiBzdHJpbmcsIGNvbXBvbmVudEZhY3Rvcnk6IENvbXBvbmVudEZhY3RvcnkpIHtcbiAgICBsZXQgc3BlY2lmaWVyID0gYGNvbXBvbmVudDovJHt0aGlzLnJvb3ROYW1lfS9jb21wb25lbnRzLyR7bmFtZX1gO1xuICAgIHRoaXMubW9kdWxlc1tzcGVjaWZpZXJdID0gY29tcG9uZW50RmFjdG9yeTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGhlbHBlcihuYW1lOiBzdHJpbmcsIGhlbHBlckZ1bmM6IEhlbHBlckZ1bmN0aW9uLCBpc0ZhY3RvcnkgPSBmYWxzZSkge1xuICAgIGxldCBzcGVjaWZpZXIgPSBgaGVscGVyOi8ke3RoaXMucm9vdE5hbWV9L2NvbXBvbmVudHMvJHtuYW1lfWA7XG4gICAgaGVscGVyRnVuYy5pc0ZhY3RvcnkgPSBpc0ZhY3Rvcnk7XG4gICAgdGhpcy5tb2R1bGVzW3NwZWNpZmllcl0gPSBoZWxwZXJGdW5jO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHJvdGVjdGVkIGJ1aWxkUmVzb2x2ZXIoKTogUmVzb2x2ZXIge1xuICAgIGxldCByZXNvbHZlckNvbmZpZ3VyYXRpb24gPSB0aGlzLm9wdGlvbnMucmVzb2x2ZXJDb25maWd1cmF0aW9uIHx8IGRlZmF1bHRSZXNvbHZlckNvbmZpZ3VyYXRpb247XG4gICAgcmVzb2x2ZXJDb25maWd1cmF0aW9uLmFwcCA9IHJlc29sdmVyQ29uZmlndXJhdGlvbi5hcHAgfHwge1xuICAgICAgbmFtZTogdGhpcy5yb290TmFtZSxcbiAgICAgIHJvb3ROYW1lOiB0aGlzLnJvb3ROYW1lLFxuICAgIH07XG5cbiAgICBsZXQgcmVnaXN0cnkgPSBuZXcgQmFzaWNNb2R1bGVSZWdpc3RyeSh0aGlzLm1vZHVsZXMpO1xuICAgIHJldHVybiBuZXcgUmVzb2x2ZXIocmVzb2x2ZXJDb25maWd1cmF0aW9uLCByZWdpc3RyeSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYnVpbGRSdW50aW1lQ29tcGlsZXJMb2FkZXIoKTogTG9hZGVyIHtcbiAgICByZXR1cm4gbmV3IFJ1bnRpbWVDb21waWxlckxvYWRlcigpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGJ1aWxkQnl0ZWNvZGVMb2FkZXIocmVzb2x2ZXI6IFJlc29sdmVyKSB7XG4gICAgbGV0IGRlbGVnYXRlID0gbmV3IENvbXBpbGVyRGVsZWdhdGUocmVzb2x2ZXIpO1xuICAgIGxldCBjb21waWxlciA9IG5ldyBCdW5kbGVDb21waWxlcihkZWxlZ2F0ZSk7XG5cbiAgICBsZXQgbWFpbkxvY2F0b3IgPSBsb2NhdG9yRm9yKCd0ZW1wbGF0ZTptYWluVGVtcGxhdGUnLCAnZGVmYXVsdCcpO1xuICAgIG1haW5Mb2NhdG9yLm1ldGEubW9kdWxlID0gJ3RlbXBsYXRlOm1haW5UZW1wbGF0ZSc7XG5cbiAgICBsZXQgYmxvY2sgPSBKU09OLnBhcnNlKG1haW5UZW1wbGF0ZS5ibG9jayk7XG4gICAgbGV0IGNvbXBpbGFibGVUZW1wbGF0ZSA9IGNvbXBpbGFibGUoe1xuICAgICAgYmxvY2ssXG4gICAgICByZWZlcnJlcjogbWFpbkxvY2F0b3IubWV0YSxcbiAgICB9KTtcblxuICAgIGNvbXBpbGVyLmFkZENvbXBpbGFibGVUZW1wbGF0ZShtYWluTG9jYXRvciwgY29tcGlsYWJsZVRlbXBsYXRlKTtcblxuICAgIGZvciAobGV0IG1vZHVsZSBpbiB0aGlzLnRlbXBsYXRlcykge1xuICAgICAgY29tcGlsZXIuYWRkVGVtcGxhdGVTb3VyY2UobG9jYXRvckZvcihtb2R1bGUsICdkZWZhdWx0JyksIHRoaXMudGVtcGxhdGVzW21vZHVsZV0pO1xuICAgIH1cblxuICAgIGxldCB7IGhlYXAsIHBvb2wsIHRhYmxlIH0gPSBjb21waWxlci5jb21waWxlKCk7XG5cbiAgICBsZXQgcmVzb2x2ZXJUYWJsZTogdW5rbm93bltdID0gW107XG5cbiAgICBsZXQgbWV0YTogRGljdDxNZXRhZGF0YT4gPSB7fTtcblxuICAgIHRhYmxlLnZtSGFuZGxlQnlNb2R1bGVMb2NhdG9yLmZvckVhY2goKHZtSGFuZGxlLCBsb2NhdG9yKSA9PiB7XG4gICAgICBsZXQgaGFuZGxlID0gdGFibGUuYnlNb2R1bGVMb2NhdG9yLmdldChsb2NhdG9yKTtcbiAgICAgIGxldCB0ZW1wbGF0ZSA9IGNvbXBpbGVyLmdldFRlbXBsYXRlKGxvY2F0b3IpO1xuXG4gICAgICBtZXRhW2xvY2F0b3IubW9kdWxlXSA9IHtcbiAgICAgICAgdjogdm1IYW5kbGUsXG4gICAgICAgIGg6IGhhbmRsZSxcbiAgICAgICAgdGFibGU6IHRlbXBsYXRlLnN5bWJvbFRhYmxlLFxuICAgICAgfTtcbiAgICB9KTtcblxuICAgIHRhYmxlLmJ5SGFuZGxlLmZvckVhY2goKGxvY2F0b3IsIGhhbmRsZSkgPT4ge1xuICAgICAgbGV0IG1vZHVsZSA9IGxvY2F0b3IubW9kdWxlLnJlcGxhY2UoJ3RlbXBsYXRlOi8nLCAnY29tcG9uZW50Oi8nKTtcbiAgICAgIGlmICh0aGlzLm1vZHVsZXNbbW9kdWxlXSkge1xuICAgICAgICBpZiAobW9kdWxlLmluZGV4T2YoJ2hlbHBlcjonKSA9PT0gMCkge1xuICAgICAgICAgIGNvbnN0IG1vZHVsZVR5cGUgPSAodGhpcy5tb2R1bGVzW21vZHVsZV0gYXMgSGVscGVyRnVuY3Rpb24pLmlzRmFjdG9yeSA/IE1vZHVsZVR5cGVzLkhFTFBFUl9GQUNUT1JZIDogTW9kdWxlVHlwZXMuSEVMUEVSO1xuICAgICAgICAgIHJlc29sdmVyVGFibGVbaGFuZGxlXSA9IFttb2R1bGVUeXBlLCB0aGlzLm1vZHVsZXNbbW9kdWxlXV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzb2x2ZXJUYWJsZVtoYW5kbGVdID0gdGhpcy5tb2R1bGVzW21vZHVsZV07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGxldCBieXRlY29kZSA9IGhlYXAuYnVmZmVyO1xuICAgIGxldCBkYXRhID0ge1xuICAgICAgcHJlZml4OiAnJyxcbiAgICAgIG1haW5FbnRyeTogdGFibGUudm1IYW5kbGVCeU1vZHVsZUxvY2F0b3IuZ2V0KG1haW5Mb2NhdG9yKSxcbiAgICAgIHBvb2wsXG4gICAgICB0YWJsZTogcmVzb2x2ZXJUYWJsZSxcbiAgICAgIG1ldGEsXG4gICAgICBoZWFwOiB7XG4gICAgICAgIHRhYmxlOiBoZWFwLnRhYmxlLFxuICAgICAgICBoYW5kbGU6IGhlYXAuaGFuZGxlLFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIG5ldyBCeXRlY29kZUxvYWRlcih7IGJ5dGVjb2RlLCBkYXRhIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGJ1aWxkTG9hZGVyKHJlc29sdmVyKTogTG9hZGVyIHtcbiAgICBzd2l0Y2ggKHRoaXMub3B0aW9ucy5sb2FkZXIpIHtcbiAgICAgIGNhc2UgJ3J1bnRpbWUtY29tcGlsZXInOlxuICAgICAgICByZXR1cm4gdGhpcy5idWlsZFJ1bnRpbWVDb21waWxlckxvYWRlcigpO1xuICAgICAgY2FzZSAnYnl0ZWNvZGUnOlxuICAgICAgICByZXR1cm4gdGhpcy5idWlsZEJ5dGVjb2RlTG9hZGVyKHJlc29sdmVyKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5yZWNvZ25pemVkIGxvYWRlciAke3RoaXMub3B0aW9ucy5sb2FkZXJ9YCk7XG4gICAgfVxuICB9XG5cbiAgcmVuZGVyVG9TdHJpbmcoY29tcG9uZW50TmFtZTogc3RyaW5nLCBkYXRhOiBEaWN0PHVua25vd24+LCBvcHRpb25zPzogVGVzdFNTUkFwcGxpY2F0aW9uT3B0aW9ucyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3QgcmVzb2x2ZXIgPSB0aGlzLmJ1aWxkUmVzb2x2ZXIoKTtcbiAgICBsZXQgbG9hZGVyID0gdGhpcy5idWlsZExvYWRlcihyZXNvbHZlcik7XG5cbiAgICByZXR1cm4gU1NSQXBwbGljYXRpb24ucmVuZGVyVG9TdHJpbmcoY29tcG9uZW50TmFtZSwgZGF0YSwge1xuICAgICAgcm9vdE5hbWU6IHRoaXMucm9vdE5hbWUsXG4gICAgICByZXNvbHZlcixcbiAgICAgIGxvYWRlcixcbiAgICAgIHJlbmRlcmVyOiBuZXcgU3luY1JlbmRlcmVyKCksXG4gICAgICAuLi5vcHRpb25zXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBib290KCk6IFByb21pc2U8VD4ge1xuICAgIGxldCByZXNvbHZlciA9IHRoaXMuYnVpbGRSZXNvbHZlcigpO1xuICAgIGxldCBsb2FkZXI6IExvYWRlciA9IHRoaXMuYnVpbGRMb2FkZXIocmVzb2x2ZXIpO1xuXG4gICAgbGV0IGRvYzogRG9jdW1lbnQgPSAodGhpcy5vcHRpb25zLmRvY3VtZW50IGFzIERvY3VtZW50KSB8fCBkb2N1bWVudDtcbiAgICBsZXQgZWxlbWVudCA9IGRvYy5ib2R5O1xuICAgIGxldCBidWlsZGVyID0gbmV3IERPTUJ1aWxkZXIoeyBlbGVtZW50IH0pO1xuICAgIGxldCByZW5kZXJlciA9IG5ldyBTeW5jUmVuZGVyZXIoKTtcblxuICAgIGxldCBhcHAgPSBuZXcgdGhpcy5vcHRpb25zLkFwcGxpY2F0aW9uQ2xhc3Moe1xuICAgICAgcmVzb2x2ZXIsXG4gICAgICBidWlsZGVyLFxuICAgICAgbG9hZGVyLFxuICAgICAgcmVuZGVyZXIsXG4gICAgICByb290TmFtZTogdGhpcy5yb290TmFtZSxcbiAgICAgIGRvY3VtZW50OiB0aGlzLm9wdGlvbnMuZG9jdW1lbnQsXG4gICAgfSk7XG5cbiAgICBsZXQgcm9vdEVsZW1lbnQgPSBkb2MuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgYXBwLnJvb3RFbGVtZW50ID0gcm9vdEVsZW1lbnQ7XG4gICAgYXBwLnJlbmRlckNvbXBvbmVudCgnTWFpbicsIHJvb3RFbGVtZW50KTtcbiAgICBhcHAuYm9vdCgpO1xuXG4gICAgYXdhaXQgZGlkUmVuZGVyKGFwcCk7XG5cbiAgICByZXR1cm4gYXBwO1xuICB9XG59XG5cbmNsYXNzIENvbXBpbGVyRGVsZWdhdGUgaW1wbGVtZW50cyBJQ29tcGlsZXJEZWxlZ2F0ZTxNb2R1bGVMb2NhdG9yPiB7XG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCByZXNvbHZlcjogUmVzb2x2ZXIpIHt9XG5cbiAgaGFzQ29tcG9uZW50SW5TY29wZShuYW1lOiBzdHJpbmcsIHJlZmVycmVyOiBNb2R1bGVMb2NhdG9yKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5yZXNvbHZlci5pZGVudGlmeShgdGVtcGxhdGU6JHtuYW1lfWAsIHJlZmVycmVyLm1vZHVsZSk7XG4gIH1cblxuICByZXNvbHZlQ29tcG9uZW50KG5hbWU6IHN0cmluZywgcmVmZXJyZXI6IE1vZHVsZUxvY2F0b3IpOiBNb2R1bGVMb2NhdG9yIHtcbiAgICBsZXQgcmVzb2x2ZWQgPSB0aGlzLnJlc29sdmVyLmlkZW50aWZ5KGB0ZW1wbGF0ZToke25hbWV9YCwgcmVmZXJyZXIubW9kdWxlKTtcbiAgICByZXR1cm4geyBtb2R1bGU6IHJlc29sdmVkLCBuYW1lOiAnZGVmYXVsdCcgfTtcbiAgfVxuXG4gIGdldENvbXBvbmVudENhcGFiaWxpdGllcygpIHtcbiAgICByZXR1cm4gQ0FQQUJJTElUSUVTO1xuICB9XG5cbiAgaGFzSGVscGVySW5TY29wZShoZWxwZXJOYW1lOiBzdHJpbmcsIHJlZmVycmVyOiBNb2R1bGVMb2NhdG9yKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5yZXNvbHZlci5pZGVudGlmeShgaGVscGVyOiR7aGVscGVyTmFtZX1gLCByZWZlcnJlci5tb2R1bGUpO1xuICB9XG5cbiAgcmVzb2x2ZUhlbHBlcihoZWxwZXJOYW1lOiBzdHJpbmcsIHJlZmVycmVyOiBNb2R1bGVMb2NhdG9yKTogTW9kdWxlTG9jYXRvciB7XG4gICAgbGV0IHJlc29sdmVkID0gdGhpcy5yZXNvbHZlci5pZGVudGlmeShgaGVscGVyOiR7aGVscGVyTmFtZX1gLCByZWZlcnJlci5tb2R1bGUpO1xuICAgIHJldHVybiB7IG1vZHVsZTogcmVzb2x2ZWQsIG5hbWU6ICdkZWZhdWx0JyB9O1xuICB9XG5cbiAgaGFzUGFydGlhbEluU2NvcGUocGFydGlhbE5hbWU6IHN0cmluZywgcmVmZXJyZXI6IE1vZHVsZUxvY2F0b3IpOiBib29sZWFuIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cblxuICByZXNvbHZlUGFydGlhbChwYXJ0aWFsTmFtZTogc3RyaW5nLCByZWZlcnJlcjogTW9kdWxlTG9jYXRvcik6IE1vZHVsZUxvY2F0b3Ige1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuXG4gIGhhc01vZGlmaWVySW5TY29wZShtb2RpZmllck5hbWU6IHN0cmluZywgcmVmZXJyZXI6IE1vZHVsZUxvY2F0b3IpOiBib29sZWFuIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cblxuICByZXNvbHZlTW9kaWZpZXIobW9kaWZpZXJOYW1lOiBzdHJpbmcsIHJlZmVycmVyOiBNb2R1bGVMb2NhdG9yKTogTW9kdWxlTG9jYXRvciB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGJ1aWxkQXBwPFQgZXh0ZW5kcyBUZXN0QXBwbGljYXRpb24+KG9wdGlvbnM6IEFwcEJ1aWxkZXJPcHRpb25zPFQ+ID0ge30pOiBBcHBCdWlsZGVyPFQ+IHtcbiAgb3B0aW9ucy5hcHBOYW1lID0gb3B0aW9ucy5hcHBOYW1lIHx8ICd0ZXN0LWFwcCc7XG4gIG9wdGlvbnMubG9hZGVyID0gb3B0aW9ucy5sb2FkZXIgfHwgJ3J1bnRpbWUtY29tcGlsZXInO1xuICBvcHRpb25zLkNvbXBvbmVudE1hbmFnZXIgPSBvcHRpb25zLkNvbXBvbmVudE1hbmFnZXIgfHwgQ29tcG9uZW50TWFuYWdlcjtcbiAgb3B0aW9ucy5BcHBsaWNhdGlvbkNsYXNzID1cbiAgICBvcHRpb25zLkFwcGxpY2F0aW9uQ2xhc3MgfHwgKFRlc3RBcHBsaWNhdGlvbiBhcyBBcHBsaWNhdGlvbkNvbnN0cnVjdG9yPFQ+KTtcblxuICByZXR1cm4gbmV3IEFwcEJ1aWxkZXIob3B0aW9ucy5hcHBOYW1lLCBvcHRpb25zKTtcbn1cblxuZXhwb3J0IHsgYnVpbGRBcHAgfTtcbiJdLCJzb3VyY2VSb290IjoiIn0= |
@@ -199,2 +199,2 @@ import Resolver, { BasicModuleRegistry } from '@glimmer/resolver'; | ||
export { buildApp }; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLWJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9hcHBsaWNhdGlvbi10ZXN0LWhlbHBlcnMvc3JjL2FwcC1idWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sUUFBUSxFQUFFLEVBQUUsbUJBQW1CLEVBQXlCLE1BQU0sbUJBQW1CLENBQUM7QUFFekYsT0FBTyw0QkFBNEIsTUFBTSxrQ0FBa0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3hDLE9BQU8sV0FBVyxFQUFFLEVBRWxCLGNBQWMsRUFDZCxVQUFVLEVBRVYscUJBQXFCLEVBQ3JCLFlBQVksRUFFWixzQkFBc0IsRUFDdkIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsY0FBYyxFQUF5QyxNQUFNLDBCQUEwQixDQUFDO0FBQ2pHLE9BQU8sRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDakUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBR3RELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFOUMsT0FBTyxTQUFTLE1BQU0sY0FBYyxDQUFDO0FBYXJDLE1BQU0sT0FBTyxlQUFnQixTQUFRLFdBQVc7Q0FFL0M7QUFVRCxTQUFTLFVBQVUsQ0FBQyxNQUFjLEVBQUUsSUFBWTtJQUM5QyxPQUFPO1FBQ0wsSUFBSSxFQUFFLFVBQVU7UUFDaEIsTUFBTTtRQUNOLElBQUk7UUFDSixJQUFJLEVBQUU7WUFDSixNQUFNO1lBQ04sSUFBSTtTQUNMO0tBQ0YsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLE9B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VUFBVSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDbEQsQ0FBQztBQUVELE9BQU8sRUFBRSxRQUFRLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZXNvbHZlciwgeyBCYXNpY01vZHVsZVJlZ2lzdHJ5LCBSZXNvbHZlckNvbmZpZ3VyYXRpb24gfSBmcm9tICdAZ2xpbW1lci9yZXNvbHZlcic7XG5pbXBvcnQgeyBEaWN0LCBNb2R1bGVMb2NhdG9yLCBUZW1wbGF0ZUxvY2F0b3IgfSBmcm9tICdAZ2xpbW1lci9pbnRlcmZhY2VzJztcbmltcG9ydCBkZWZhdWx0UmVzb2x2ZXJDb25maWd1cmF0aW9uIGZyb20gJy4vZGVmYXVsdC1yZXNvbHZlci1jb25maWd1cmF0aW9uJztcbmltcG9ydCB7IHByZWNvbXBpbGUgfSBmcm9tICcuL2NvbXBpbGVyJztcbmltcG9ydCBBcHBsaWNhdGlvbiwge1xuICBBcHBsaWNhdGlvbkNvbnN0cnVjdG9yLFxuICBCeXRlY29kZUxvYWRlcixcbiAgRE9NQnVpbGRlcixcbiAgTG9hZGVyLFxuICBSdW50aW1lQ29tcGlsZXJMb2FkZXIsXG4gIFN5bmNSZW5kZXJlcixcbiAgTW9kdWxlVHlwZXMsXG4gIElOVEVSTkFMX0RZTkFNSUNfU0NPUEVcbn0gZnJvbSAnQGdsaW1tZXIvYXBwbGljYXRpb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50TWFuYWdlciwgQ0FQQUJJTElUSUVTIH0gZnJvbSAnQGdsaW1tZXIvY29tcG9uZW50JztcbmltcG9ydCB7IGFzc2VydCB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHsgQnVuZGxlQ29tcGlsZXIsIENvbXBpbGVyRGVsZWdhdGUgYXMgSUNvbXBpbGVyRGVsZWdhdGUgfSBmcm9tICdAZ2xpbW1lci9idW5kbGUtY29tcGlsZXInO1xuaW1wb3J0IHsgYnVpbGRBY3Rpb24sIG1haW5UZW1wbGF0ZSB9IGZyb20gJ0BnbGltbWVyL2FwcGxpY2F0aW9uJztcbmltcG9ydCB7IGNvbXBpbGFibGUgfSBmcm9tICdAZ2xpbW1lci9vcGNvZGUtY29tcGlsZXInO1xuaW1wb3J0IHsgTWV0YWRhdGEgfSBmcm9tICcuLi8uLi9hcHBsaWNhdGlvbi9zcmMvbG9hZGVycy9ieXRlY29kZS9sb2FkZXInO1xuaW1wb3J0IHsgU2ltcGxlRG9jdW1lbnQgfSBmcm9tICdAc2ltcGxlLWRvbS9pbnRlcmZhY2UnO1xuaW1wb3J0IHsgU1NSQXBwbGljYXRpb24gfSBmcm9tICdAZ2xpbW1lci9zc3InO1xuXG5pbXBvcnQgZGlkUmVuZGVyIGZyb20gJy4vZGlkLXJlbmRlcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXBwQnVpbGRlck9wdGlvbnM8VD4ge1xuICBhcHBOYW1lPzogc3RyaW5nO1xuICBsb2FkZXI/OiBzdHJpbmc7XG4gIEFwcGxpY2F0aW9uQ2xhc3M/OiBBcHBsaWNhdGlvbkNvbnN0cnVjdG9yPFQ+O1xuICBDb21wb25lbnRNYW5hZ2VyPzogYW55OyAvLyBUT0RPIC0gdHlwaW5nXG4gIHJlc29sdmVyQ29uZmlndXJhdGlvbj86IFJlc29sdmVyQ29uZmlndXJhdGlvbjtcbiAgZG9jdW1lbnQ/OiBTaW1wbGVEb2N1bWVudDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnRGYWN0b3J5IHt9XG5cbmV4cG9ydCBjbGFzcyBUZXN0QXBwbGljYXRpb24gZXh0ZW5kcyBBcHBsaWNhdGlvbiB7XG4gIHJvb3RFbGVtZW50OiBFbGVtZW50O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFwcEJ1aWxkZXJUZW1wbGF0ZU1ldGEge1xuICBzcGVjaWZpZXI6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIEhlbHBlckZ1bmN0aW9uIGV4dGVuZHMgRnVuY3Rpb24ge1xuICBpc0ZhY3Rvcnk/OiBib29sZWFuO1xufVxuXG5mdW5jdGlvbiBsb2NhdG9yRm9yKG1vZHVsZTogc3RyaW5nLCBuYW1lOiBzdHJpbmcpOiBUZW1wbGF0ZUxvY2F0b3I8TW9kdWxlTG9jYXRvcj4ge1xuICByZXR1cm4ge1xuICAgIGtpbmQ6ICd0ZW1wbGF0ZScsXG4gICAgbW9kdWxlLFxuICAgIG5hbWUsXG4gICAgbWV0YToge1xuICAgICAgbW9kdWxlLFxuICAgICAgbmFtZSxcbiAgICB9LFxuICB9O1xufVxuXG5leHBvcnQgY2xhc3MgQXBwQnVpbGRlcjxUIGV4dGVuZHMgVGVzdEFwcGxpY2F0aW9uPiB7XG4gIHJvb3ROYW1lOiBzdHJpbmc7XG4gIG1vZHVsZXM6IERpY3Q8dW5rbm93bj4gPSB7fTtcbiAgdGVtcGxhdGVzOiBEaWN0PHN0cmluZz4gPSB7fTtcbiAgb3B0aW9uczogQXBwQnVpbGRlck9wdGlvbnM8VD47XG5cbiAgY29uc3RydWN0b3IobmFtZTogc3RyaW5nLCBvcHRpb25zOiBBcHBCdWlsZGVyT3B0aW9uczxUPikge1xuICAgIHRoaXMucm9vdE5hbWUgPSBuYW1lO1xuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgdGhpcy5tb2R1bGVzW1xuICAgICAgYGNvbXBvbmVudC1tYW5hZ2VyOi8ke3RoaXMucm9vdE5hbWV9L2NvbXBvbmVudC1tYW5hZ2Vycy9tYWluYFxuICAgIF0gPSB0aGlzLm9wdGlvbnMuQ29tcG9uZW50TWFuYWdlcjtcbiAgICB0aGlzLnRlbXBsYXRlKCdNYWluJywgJzxkaXYgLz4nKTtcbiAgICB0aGlzLmhlbHBlcignYWN0aW9uJywgYnVpbGRBY3Rpb24sIHRydWUpO1xuICB9XG5cbiAgdGVtcGxhdGUobmFtZTogc3RyaW5nLCB0ZW1wbGF0ZTogc3RyaW5nKSB7XG4gICAgYXNzZXJ0KFxuICAgICAgbmFtZS5jaGFyQXQoMCkgPT09IG5hbWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCksXG4gICAgICAndGVtcGxhdGUgbmFtZXMgbXVzdCBzdGFydCB3aXRoIGEgY2FwaXRhbCBsZXR0ZXInXG4gICAgKTtcblxuICAgIGxldCBzcGVjaWZpZXIgPSBgdGVtcGxhdGU6LyR7dGhpcy5yb290TmFtZX0vY29tcG9uZW50cy8ke25hbWV9YDtcbiAgICB0aGlzLm1vZHVsZXNbc3BlY2lmaWVyXSA9IHByZWNvbXBpbGUodGVtcGxhdGUsIHsgbWV0YTogeyBzcGVjaWZpZXIgfSB9KTtcbiAgICB0aGlzLnRlbXBsYXRlc1tzcGVjaWZpZXJdID0gdGVtcGxhdGU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBjb21wb25lbnQobmFtZTogc3RyaW5nLCBjb21wb25lbnRGYWN0b3J5OiBDb21wb25lbnRGYWN0b3J5KSB7XG4gICAgbGV0IHNwZWNpZmllciA9IGBjb21wb25lbnQ6LyR7dGhpcy5yb290TmFtZX0vY29tcG9uZW50cy8ke25hbWV9YDtcbiAgICB0aGlzLm1vZHVsZXNbc3BlY2lmaWVyXSA9IGNvbXBvbmVudEZhY3Rvcnk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBoZWxwZXIobmFtZTogc3RyaW5nLCBoZWxwZXJGdW5jOiBIZWxwZXJGdW5jdGlvbiwgaXNGYWN0b3J5ID0gZmFsc2UpIHtcbiAgICBsZXQgc3BlY2lmaWVyID0gYGhlbHBlcjovJHt0aGlzLnJvb3ROYW1lfS9jb21wb25lbnRzLyR7bmFtZX1gO1xuICAgIGhlbHBlckZ1bmMuaXNGYWN0b3J5ID0gaXNGYWN0b3J5O1xuICAgIHRoaXMubW9kdWxlc1tzcGVjaWZpZXJdID0gaGVscGVyRnVuYztcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHByb3RlY3RlZCBidWlsZFJlc29sdmVyKCk6IFJlc29sdmVyIHtcbiAgICBsZXQgcmVzb2x2ZXJDb25maWd1cmF0aW9uID0gdGhpcy5vcHRpb25zLnJlc29sdmVyQ29uZmlndXJhdGlvbiB8fCBkZWZhdWx0UmVzb2x2ZXJDb25maWd1cmF0aW9uO1xuICAgIHJlc29sdmVyQ29uZmlndXJhdGlvbi5hcHAgPSByZXNvbHZlckNvbmZpZ3VyYXRpb24uYXBwIHx8IHtcbiAgICAgIG5hbWU6IHRoaXMucm9vdE5hbWUsXG4gICAgICByb290TmFtZTogdGhpcy5yb290TmFtZSxcbiAgICB9O1xuXG4gICAgbGV0IHJlZ2lzdHJ5ID0gbmV3IEJhc2ljTW9kdWxlUmVnaXN0cnkodGhpcy5tb2R1bGVzKTtcbiAgICByZXR1cm4gbmV3IFJlc29sdmVyKHJlc29sdmVyQ29uZmlndXJhdGlvbiwgcmVnaXN0cnkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGJ1aWxkUnVudGltZUNvbXBpbGVyTG9hZGVyKCk6IExvYWRlciB7XG4gICAgcmV0dXJuIG5ldyBSdW50aW1lQ29tcGlsZXJMb2FkZXIoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBidWlsZEJ5dGVjb2RlTG9hZGVyKHJlc29sdmVyOiBSZXNvbHZlcikge1xuICAgIGxldCBkZWxlZ2F0ZSA9IG5ldyBDb21waWxlckRlbGVnYXRlKHJlc29sdmVyKTtcbiAgICBsZXQgY29tcGlsZXIgPSBuZXcgQnVuZGxlQ29tcGlsZXIoZGVsZWdhdGUpO1xuXG4gICAgbGV0IG1haW5Mb2NhdG9yID0gbG9jYXRvckZvcigndGVtcGxhdGU6bWFpblRlbXBsYXRlJywgJ2RlZmF1bHQnKTtcbiAgICBtYWluTG9jYXRvci5tZXRhLm1vZHVsZSA9ICd0ZW1wbGF0ZTptYWluVGVtcGxhdGUnO1xuXG4gICAgbGV0IGJsb2NrID0gSlNPTi5wYXJzZShtYWluVGVtcGxhdGUuYmxvY2spO1xuICAgIGxldCBjb21waWxhYmxlVGVtcGxhdGUgPSBjb21waWxhYmxlKHtcbiAgICAgIGJsb2NrLFxuICAgICAgcmVmZXJyZXI6IG1haW5Mb2NhdG9yLm1ldGEsXG4gICAgfSk7XG5cbiAgICBjb21waWxlci5hZGRDb21waWxhYmxlVGVtcGxhdGUobWFpbkxvY2F0b3IsIGNvbXBpbGFibGVUZW1wbGF0ZSk7XG5cbiAgICBmb3IgKGxldCBtb2R1bGUgaW4gdGhpcy50ZW1wbGF0ZXMpIHtcbiAgICAgIGNvbXBpbGVyLmFkZFRlbXBsYXRlU291cmNlKGxvY2F0b3JGb3IobW9kdWxlLCAnZGVmYXVsdCcpLCB0aGlzLnRlbXBsYXRlc1ttb2R1bGVdKTtcbiAgICB9XG5cbiAgICBsZXQgeyBoZWFwLCBwb29sLCB0YWJsZSB9ID0gY29tcGlsZXIuY29tcGlsZSgpO1xuXG4gICAgbGV0IHJlc29sdmVyVGFibGU6IHVua25vd25bXSA9IFtdO1xuXG4gICAgbGV0IG1ldGE6IERpY3Q8TWV0YWRhdGE+ID0ge307XG5cbiAgICB0YWJsZS52bUhhbmRsZUJ5TW9kdWxlTG9jYXRvci5mb3JFYWNoKCh2bUhhbmRsZSwgbG9jYXRvcikgPT4ge1xuICAgICAgbGV0IGhhbmRsZSA9IHRhYmxlLmJ5TW9kdWxlTG9jYXRvci5nZXQobG9jYXRvcik7XG4gICAgICBsZXQgdGVtcGxhdGUgPSBjb21waWxlci5nZXRUZW1wbGF0ZShsb2NhdG9yKTtcblxuICAgICAgbWV0YVtsb2NhdG9yLm1vZHVsZV0gPSB7XG4gICAgICAgIHY6IHZtSGFuZGxlLFxuICAgICAgICBoOiBoYW5kbGUsXG4gICAgICAgIHRhYmxlOiB0ZW1wbGF0ZS5zeW1ib2xUYWJsZSxcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICB0YWJsZS5ieUhhbmRsZS5mb3JFYWNoKChsb2NhdG9yLCBoYW5kbGUpID0+IHtcbiAgICAgIGxldCBtb2R1bGUgPSBsb2NhdG9yLm1vZHVsZS5yZXBsYWNlKCd0ZW1wbGF0ZTovJywgJ2NvbXBvbmVudDovJyk7XG4gICAgICBpZiAodGhpcy5tb2R1bGVzW21vZHVsZV0pIHtcbiAgICAgICAgaWYgKG1vZHVsZS5pbmRleE9mKCdoZWxwZXI6JykgPT09IDApIHtcbiAgICAgICAgICBjb25zdCBtb2R1bGVUeXBlID0gKHRoaXMubW9kdWxlc1ttb2R1bGVdIGFzIEhlbHBlckZ1bmN0aW9uKS5pc0ZhY3RvcnkgPyBNb2R1bGVUeXBlcy5IRUxQRVJfRkFDVE9SWSA6IE1vZHVsZVR5cGVzLkhFTFBFUjtcbiAgICAgICAgICByZXNvbHZlclRhYmxlW2hhbmRsZV0gPSBbbW9kdWxlVHlwZSwgdGhpcy5tb2R1bGVzW21vZHVsZV1dO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc29sdmVyVGFibGVbaGFuZGxlXSA9IHRoaXMubW9kdWxlc1ttb2R1bGVdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBsZXQgYnl0ZWNvZGUgPSBoZWFwLmJ1ZmZlcjtcbiAgICBsZXQgZGF0YSA9IHtcbiAgICAgIHByZWZpeDogJycsXG4gICAgICBtYWluRW50cnk6IHRhYmxlLnZtSGFuZGxlQnlNb2R1bGVMb2NhdG9yLmdldChtYWluTG9jYXRvciksXG4gICAgICBwb29sLFxuICAgICAgdGFibGU6IHJlc29sdmVyVGFibGUsXG4gICAgICBtZXRhLFxuICAgICAgaGVhcDoge1xuICAgICAgICB0YWJsZTogaGVhcC50YWJsZSxcbiAgICAgICAgaGFuZGxlOiBoZWFwLmhhbmRsZSxcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIHJldHVybiBuZXcgQnl0ZWNvZGVMb2FkZXIoeyBieXRlY29kZSwgZGF0YSB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBidWlsZExvYWRlcihyZXNvbHZlcik6IExvYWRlciB7XG4gICAgc3dpdGNoICh0aGlzLm9wdGlvbnMubG9hZGVyKSB7XG4gICAgICBjYXNlICdydW50aW1lLWNvbXBpbGVyJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuYnVpbGRSdW50aW1lQ29tcGlsZXJMb2FkZXIoKTtcbiAgICAgIGNhc2UgJ2J5dGVjb2RlJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuYnVpbGRCeXRlY29kZUxvYWRlcihyZXNvbHZlcik7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVucmVjb2duaXplZCBsb2FkZXIgJHt0aGlzLm9wdGlvbnMubG9hZGVyfWApO1xuICAgIH1cbiAgfVxuXG4gIHJlbmRlclRvU3RyaW5nKGNvbXBvbmVudE5hbWU6IHN0cmluZywgZGF0YTogRGljdDx1bmtub3duPiwgb3B0aW9ucz86IHsgW0lOVEVSTkFMX0RZTkFNSUNfU0NPUEVdOiBEaWN0PHVua25vd24+IH0pOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IHJlc29sdmVyID0gdGhpcy5idWlsZFJlc29sdmVyKCk7XG4gICAgbGV0IGxvYWRlciA9IHRoaXMuYnVpbGRMb2FkZXIocmVzb2x2ZXIpO1xuXG4gICAgcmV0dXJuIFNTUkFwcGxpY2F0aW9uLnJlbmRlclRvU3RyaW5nKGNvbXBvbmVudE5hbWUsIGRhdGEsIHtcbiAgICAgIHJvb3ROYW1lOiB0aGlzLnJvb3ROYW1lLFxuICAgICAgcmVzb2x2ZXIsXG4gICAgICBsb2FkZXIsXG4gICAgICByZW5kZXJlcjogbmV3IFN5bmNSZW5kZXJlcigpLFxuICAgICAgLi4ub3B0aW9uc1xuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgYm9vdCgpOiBQcm9taXNlPFQ+IHtcbiAgICBsZXQgcmVzb2x2ZXIgPSB0aGlzLmJ1aWxkUmVzb2x2ZXIoKTtcbiAgICBsZXQgbG9hZGVyOiBMb2FkZXIgPSB0aGlzLmJ1aWxkTG9hZGVyKHJlc29sdmVyKTtcblxuICAgIGxldCBkb2M6IERvY3VtZW50ID0gKHRoaXMub3B0aW9ucy5kb2N1bWVudCBhcyBEb2N1bWVudCkgfHwgZG9jdW1lbnQ7XG4gICAgbGV0IGVsZW1lbnQgPSBkb2MuYm9keTtcbiAgICBsZXQgYnVpbGRlciA9IG5ldyBET01CdWlsZGVyKHsgZWxlbWVudCB9KTtcbiAgICBsZXQgcmVuZGVyZXIgPSBuZXcgU3luY1JlbmRlcmVyKCk7XG5cbiAgICBsZXQgYXBwID0gbmV3IHRoaXMub3B0aW9ucy5BcHBsaWNhdGlvbkNsYXNzKHtcbiAgICAgIHJlc29sdmVyLFxuICAgICAgYnVpbGRlcixcbiAgICAgIGxvYWRlcixcbiAgICAgIHJlbmRlcmVyLFxuICAgICAgcm9vdE5hbWU6IHRoaXMucm9vdE5hbWUsXG4gICAgICBkb2N1bWVudDogdGhpcy5vcHRpb25zLmRvY3VtZW50LFxuICAgIH0pO1xuXG4gICAgbGV0IHJvb3RFbGVtZW50ID0gZG9jLmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIGFwcC5yb290RWxlbWVudCA9IHJvb3RFbGVtZW50O1xuICAgIGFwcC5yZW5kZXJDb21wb25lbnQoJ01haW4nLCByb290RWxlbWVudCk7XG4gICAgYXBwLmJvb3QoKTtcblxuICAgIGF3YWl0IGRpZFJlbmRlcihhcHApO1xuXG4gICAgcmV0dXJuIGFwcDtcbiAgfVxufVxuXG5jbGFzcyBDb21waWxlckRlbGVnYXRlIGltcGxlbWVudHMgSUNvbXBpbGVyRGVsZWdhdGU8TW9kdWxlTG9jYXRvcj4ge1xuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgcmVzb2x2ZXI6IFJlc29sdmVyKSB7fVxuXG4gIGhhc0NvbXBvbmVudEluU2NvcGUobmFtZTogc3RyaW5nLCByZWZlcnJlcjogTW9kdWxlTG9jYXRvcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMucmVzb2x2ZXIuaWRlbnRpZnkoYHRlbXBsYXRlOiR7bmFtZX1gLCByZWZlcnJlci5tb2R1bGUpO1xuICB9XG5cbiAgcmVzb2x2ZUNvbXBvbmVudChuYW1lOiBzdHJpbmcsIHJlZmVycmVyOiBNb2R1bGVMb2NhdG9yKTogTW9kdWxlTG9jYXRvciB7XG4gICAgbGV0IHJlc29sdmVkID0gdGhpcy5yZXNvbHZlci5pZGVudGlmeShgdGVtcGxhdGU6JHtuYW1lfWAsIHJlZmVycmVyLm1vZHVsZSk7XG4gICAgcmV0dXJuIHsgbW9kdWxlOiByZXNvbHZlZCwgbmFtZTogJ2RlZmF1bHQnIH07XG4gIH1cblxuICBnZXRDb21wb25lbnRDYXBhYmlsaXRpZXMoKSB7XG4gICAgcmV0dXJuIENBUEFCSUxJVElFUztcbiAgfVxuXG4gIGhhc0hlbHBlckluU2NvcGUoaGVscGVyTmFtZTogc3RyaW5nLCByZWZlcnJlcjogTW9kdWxlTG9jYXRvcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMucmVzb2x2ZXIuaWRlbnRpZnkoYGhlbHBlcjoke2hlbHBlck5hbWV9YCwgcmVmZXJyZXIubW9kdWxlKTtcbiAgfVxuXG4gIHJlc29sdmVIZWxwZXIoaGVscGVyTmFtZTogc3RyaW5nLCByZWZlcnJlcjogTW9kdWxlTG9jYXRvcik6IE1vZHVsZUxvY2F0b3Ige1xuICAgIGxldCByZXNvbHZlZCA9IHRoaXMucmVzb2x2ZXIuaWRlbnRpZnkoYGhlbHBlcjoke2hlbHBlck5hbWV9YCwgcmVmZXJyZXIubW9kdWxlKTtcbiAgICByZXR1cm4geyBtb2R1bGU6IHJlc29sdmVkLCBuYW1lOiAnZGVmYXVsdCcgfTtcbiAgfVxuXG4gIGhhc1BhcnRpYWxJblNjb3BlKHBhcnRpYWxOYW1lOiBzdHJpbmcsIHJlZmVycmVyOiBNb2R1bGVMb2NhdG9yKTogYm9vbGVhbiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgcmVzb2x2ZVBhcnRpYWwocGFydGlhbE5hbWU6IHN0cmluZywgcmVmZXJyZXI6IE1vZHVsZUxvY2F0b3IpOiBNb2R1bGVMb2NhdG9yIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cblxuICBoYXNNb2RpZmllckluU2NvcGUobW9kaWZpZXJOYW1lOiBzdHJpbmcsIHJlZmVycmVyOiBNb2R1bGVMb2NhdG9yKTogYm9vbGVhbiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgcmVzb2x2ZU1vZGlmaWVyKG1vZGlmaWVyTmFtZTogc3RyaW5nLCByZWZlcnJlcjogTW9kdWxlTG9jYXRvcik6IE1vZHVsZUxvY2F0b3Ige1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBidWlsZEFwcDxUIGV4dGVuZHMgVGVzdEFwcGxpY2F0aW9uPihvcHRpb25zOiBBcHBCdWlsZGVyT3B0aW9uczxUPiA9IHt9KTogQXBwQnVpbGRlcjxUPiB7XG4gIG9wdGlvbnMuYXBwTmFtZSA9IG9wdGlvbnMuYXBwTmFtZSB8fCAndGVzdC1hcHAnO1xuICBvcHRpb25zLmxvYWRlciA9IG9wdGlvbnMubG9hZGVyIHx8ICdydW50aW1lLWNvbXBpbGVyJztcbiAgb3B0aW9ucy5Db21wb25lbnRNYW5hZ2VyID0gb3B0aW9ucy5Db21wb25lbnRNYW5hZ2VyIHx8IENvbXBvbmVudE1hbmFnZXI7XG4gIG9wdGlvbnMuQXBwbGljYXRpb25DbGFzcyA9XG4gICAgb3B0aW9ucy5BcHBsaWNhdGlvbkNsYXNzIHx8IChUZXN0QXBwbGljYXRpb24gYXMgQXBwbGljYXRpb25Db25zdHJ1Y3RvcjxUPik7XG5cbiAgcmV0dXJuIG5ldyBBcHBCdWlsZGVyKG9wdGlvbnMuYXBwTmFtZSwgb3B0aW9ucyk7XG59XG5cbmV4cG9ydCB7IGJ1aWxkQXBwIH07XG4iXX0= | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLWJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9hcHBsaWNhdGlvbi10ZXN0LWhlbHBlcnMvc3JjL2FwcC1idWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sUUFBUSxFQUFFLEVBQUUsbUJBQW1CLEVBQXlCLE1BQU0sbUJBQW1CLENBQUM7QUFFekYsT0FBTyw0QkFBNEIsTUFBTSxrQ0FBa0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3hDLE9BQU8sV0FBVyxFQUFFLEVBRWxCLGNBQWMsRUFDZCxVQUFVLEVBRVYscUJBQXFCLEVBQ3JCLFlBQVksRUFFWixzQkFBc0IsRUFDdkIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsY0FBYyxFQUF5QyxNQUFNLDBCQUEwQixDQUFDO0FBQ2pHLE9BQU8sRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDakUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBR3RELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFOUMsT0FBTyxTQUFTLE1BQU0sY0FBYyxDQUFDO0FBZXJDLE1BQU0sT0FBTyxlQUFnQixTQUFRLFdBQVc7Q0FFL0M7QUFtQkQsU0FBUyxVQUFVLENBQUMsTUFBYyxFQUFFLElBQVk7SUFDOUMsT0FBTztRQUNMLElBQUksRUFBRSxVQUFVO1FBQ2hCLE1BQU07UUFDTixJQUFJO1FBQ0osSUFBSSxFQUFFO1lBQ0osTUFBTTtZQUNOLElBQUk7U0FDTDtLQUNGLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxP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LFVBQVUsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ2xELENBQUM7QUFFRCxPQUFPLEVBQUUsUUFBUSxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVzb2x2ZXIsIHsgQmFzaWNNb2R1bGVSZWdpc3RyeSwgUmVzb2x2ZXJDb25maWd1cmF0aW9uIH0gZnJvbSAnQGdsaW1tZXIvcmVzb2x2ZXInO1xuaW1wb3J0IHsgRGljdCwgTW9kdWxlTG9jYXRvciwgVGVtcGxhdGVMb2NhdG9yIH0gZnJvbSAnQGdsaW1tZXIvaW50ZXJmYWNlcyc7XG5pbXBvcnQgZGVmYXVsdFJlc29sdmVyQ29uZmlndXJhdGlvbiBmcm9tICcuL2RlZmF1bHQtcmVzb2x2ZXItY29uZmlndXJhdGlvbic7XG5pbXBvcnQgeyBwcmVjb21waWxlIH0gZnJvbSAnLi9jb21waWxlcic7XG5pbXBvcnQgQXBwbGljYXRpb24sIHtcbiAgQXBwbGljYXRpb25Db25zdHJ1Y3RvcixcbiAgQnl0ZWNvZGVMb2FkZXIsXG4gIERPTUJ1aWxkZXIsXG4gIExvYWRlcixcbiAgUnVudGltZUNvbXBpbGVyTG9hZGVyLFxuICBTeW5jUmVuZGVyZXIsXG4gIE1vZHVsZVR5cGVzLFxuICBJTlRFUk5BTF9EWU5BTUlDX1NDT1BFXG59IGZyb20gJ0BnbGltbWVyL2FwcGxpY2F0aW9uJztcbmltcG9ydCB7IENvbXBvbmVudE1hbmFnZXIsIENBUEFCSUxJVElFUyB9IGZyb20gJ0BnbGltbWVyL2NvbXBvbmVudCc7XG5pbXBvcnQgeyBhc3NlcnQgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCB7IEJ1bmRsZUNvbXBpbGVyLCBDb21waWxlckRlbGVnYXRlIGFzIElDb21waWxlckRlbGVnYXRlIH0gZnJvbSAnQGdsaW1tZXIvYnVuZGxlLWNvbXBpbGVyJztcbmltcG9ydCB7IGJ1aWxkQWN0aW9uLCBtYWluVGVtcGxhdGUgfSBmcm9tICdAZ2xpbW1lci9hcHBsaWNhdGlvbic7XG5pbXBvcnQgeyBjb21waWxhYmxlIH0gZnJvbSAnQGdsaW1tZXIvb3Bjb2RlLWNvbXBpbGVyJztcbmltcG9ydCB7IE1ldGFkYXRhIH0gZnJvbSAnLi4vLi4vYXBwbGljYXRpb24vc3JjL2xvYWRlcnMvYnl0ZWNvZGUvbG9hZGVyJztcbmltcG9ydCB7IFNpbXBsZURvY3VtZW50IH0gZnJvbSAnQHNpbXBsZS1kb20vaW50ZXJmYWNlJztcbmltcG9ydCB7IFNTUkFwcGxpY2F0aW9uIH0gZnJvbSAnQGdsaW1tZXIvc3NyJztcblxuaW1wb3J0IGRpZFJlbmRlciBmcm9tICcuL2RpZC1yZW5kZXInO1xuaW1wb3J0IEhUTUxTZXJpYWxpemVyIGZyb20gJ0BzaW1wbGUtZG9tL3NlcmlhbGl6ZXInO1xuaW1wb3J0IHsgUmVuZGVyZXIgfSBmcm9tICdAZ2xpbW1lci9hcHBsaWNhdGlvbi9zcmMvYmFzZS1hcHBsaWNhdGlvbic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXBwQnVpbGRlck9wdGlvbnM8VD4ge1xuICBhcHBOYW1lPzogc3RyaW5nO1xuICBsb2FkZXI/OiBzdHJpbmc7XG4gIEFwcGxpY2F0aW9uQ2xhc3M/OiBBcHBsaWNhdGlvbkNvbnN0cnVjdG9yPFQ+O1xuICBDb21wb25lbnRNYW5hZ2VyPzogYW55OyAvLyBUT0RPIC0gdHlwaW5nXG4gIHJlc29sdmVyQ29uZmlndXJhdGlvbj86IFJlc29sdmVyQ29uZmlndXJhdGlvbjtcbiAgZG9jdW1lbnQ/OiBTaW1wbGVEb2N1bWVudDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnRGYWN0b3J5IHt9XG5cbmV4cG9ydCBjbGFzcyBUZXN0QXBwbGljYXRpb24gZXh0ZW5kcyBBcHBsaWNhdGlvbiB7XG4gIHJvb3RFbGVtZW50OiBFbGVtZW50O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFwcEJ1aWxkZXJUZW1wbGF0ZU1ldGEge1xuICBzcGVjaWZpZXI6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIEhlbHBlckZ1bmN0aW9uIGV4dGVuZHMgRnVuY3Rpb24ge1xuICBpc0ZhY3Rvcnk/OiBib29sZWFuO1xufVxuXG5pbnRlcmZhY2UgVGVzdFNTUkFwcGxpY2F0aW9uT3B0aW9ucyB7XG4gIHJvb3ROYW1lPzogc3RyaW5nO1xuICByZXNvbHZlcj86IFJlc29sdmVyO1xuICBsb2FkZXI/OiBMb2FkZXI7XG4gIHJlbmRlcmVyPzogUmVuZGVyZXI7XG4gIHNlcmlhbGl6ZXI/OiBIVE1MU2VyaWFsaXplcjtcbiAgW0lOVEVSTkFMX0RZTkFNSUNfU0NPUEVdPzogRGljdDx1bmtub3duPjtcbn1cblxuZnVuY3Rpb24gbG9jYXRvckZvcihtb2R1bGU6IHN0cmluZywgbmFtZTogc3RyaW5nKTogVGVtcGxhdGVMb2NhdG9yPE1vZHVsZUxvY2F0b3I+IHtcbiAgcmV0dXJuIHtcbiAgICBraW5kOiAndGVtcGxhdGUnLFxuICAgIG1vZHVsZSxcbiAgICBuYW1lLFxuICAgIG1ldGE6IHtcbiAgICAgIG1vZHVsZSxcbiAgICAgIG5hbWUsXG4gICAgfSxcbiAgfTtcbn1cblxuZXhwb3J0IGNsYXNzIEFwcEJ1aWxkZXI8VCBleHRlbmRzIFRlc3RBcHBsaWNhdGlvbj4ge1xuICByb290TmFtZTogc3RyaW5nO1xuICBtb2R1bGVzOiBEaWN0PHVua25vd24+ID0ge307XG4gIHRlbXBsYXRlczogRGljdDxzdHJpbmc+ID0ge307XG4gIG9wdGlvbnM6IEFwcEJ1aWxkZXJPcHRpb25zPFQ+O1xuXG4gIGNvbnN0cnVjdG9yKG5hbWU6IHN0cmluZywgb3B0aW9uczogQXBwQnVpbGRlck9wdGlvbnM8VD4pIHtcbiAgICB0aGlzLnJvb3ROYW1lID0gbmFtZTtcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgIHRoaXMubW9kdWxlc1tcbiAgICAgIGBjb21wb25lbnQtbWFuYWdlcjovJHt0aGlzLnJvb3ROYW1lfS9jb21wb25lbnQtbWFuYWdlcnMvbWFpbmBcbiAgICBdID0gdGhpcy5vcHRpb25zLkNvbXBvbmVudE1hbmFnZXI7XG4gICAgdGhpcy50ZW1wbGF0ZSgnTWFpbicsICc8ZGl2IC8+Jyk7XG4gICAgdGhpcy5oZWxwZXIoJ2FjdGlvbicsIGJ1aWxkQWN0aW9uLCB0cnVlKTtcbiAgfVxuXG4gIHRlbXBsYXRlKG5hbWU6IHN0cmluZywgdGVtcGxhdGU6IHN0cmluZykge1xuICAgIGFzc2VydChcbiAgICAgIG5hbWUuY2hhckF0KDApID09PSBuYW1lLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpLFxuICAgICAgJ3RlbXBsYXRlIG5hbWVzIG11c3Qgc3RhcnQgd2l0aCBhIGNhcGl0YWwgbGV0dGVyJ1xuICAgICk7XG5cbiAgICBsZXQgc3BlY2lmaWVyID0gYHRlbXBsYXRlOi8ke3RoaXMucm9vdE5hbWV9L2NvbXBvbmVudHMvJHtuYW1lfWA7XG4gICAgdGhpcy5tb2R1bGVzW3NwZWNpZmllcl0gPSBwcmVjb21waWxlKHRlbXBsYXRlLCB7IG1ldGE6IHsgc3BlY2lmaWVyIH0gfSk7XG4gICAgdGhpcy50ZW1wbGF0ZXNbc3BlY2lmaWVyXSA9IHRlbXBsYXRlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgY29tcG9uZW50KG5hbWU6IHN0cmluZywgY29tcG9uZW50RmFjdG9yeTogQ29tcG9uZW50RmFjdG9yeSkge1xuICAgIGxldCBzcGVjaWZpZXIgPSBgY29tcG9uZW50Oi8ke3RoaXMucm9vdE5hbWV9L2NvbXBvbmVudHMvJHtuYW1lfWA7XG4gICAgdGhpcy5tb2R1bGVzW3NwZWNpZmllcl0gPSBjb21wb25lbnRGYWN0b3J5O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgaGVscGVyKG5hbWU6IHN0cmluZywgaGVscGVyRnVuYzogSGVscGVyRnVuY3Rpb24sIGlzRmFjdG9yeSA9IGZhbHNlKSB7XG4gICAgbGV0IHNwZWNpZmllciA9IGBoZWxwZXI6LyR7dGhpcy5yb290TmFtZX0vY29tcG9uZW50cy8ke25hbWV9YDtcbiAgICBoZWxwZXJGdW5jLmlzRmFjdG9yeSA9IGlzRmFjdG9yeTtcbiAgICB0aGlzLm1vZHVsZXNbc3BlY2lmaWVyXSA9IGhlbHBlckZ1bmM7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwcm90ZWN0ZWQgYnVpbGRSZXNvbHZlcigpOiBSZXNvbHZlciB7XG4gICAgbGV0IHJlc29sdmVyQ29uZmlndXJhdGlvbiA9IHRoaXMub3B0aW9ucy5yZXNvbHZlckNvbmZpZ3VyYXRpb24gfHwgZGVmYXVsdFJlc29sdmVyQ29uZmlndXJhdGlvbjtcbiAgICByZXNvbHZlckNvbmZpZ3VyYXRpb24uYXBwID0gcmVzb2x2ZXJDb25maWd1cmF0aW9uLmFwcCB8fCB7XG4gICAgICBuYW1lOiB0aGlzLnJvb3ROYW1lLFxuICAgICAgcm9vdE5hbWU6IHRoaXMucm9vdE5hbWUsXG4gICAgfTtcblxuICAgIGxldCByZWdpc3RyeSA9IG5ldyBCYXNpY01vZHVsZVJlZ2lzdHJ5KHRoaXMubW9kdWxlcyk7XG4gICAgcmV0dXJuIG5ldyBSZXNvbHZlcihyZXNvbHZlckNvbmZpZ3VyYXRpb24sIHJlZ2lzdHJ5KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBidWlsZFJ1bnRpbWVDb21waWxlckxvYWRlcigpOiBMb2FkZXIge1xuICAgIHJldHVybiBuZXcgUnVudGltZUNvbXBpbGVyTG9hZGVyKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYnVpbGRCeXRlY29kZUxvYWRlcihyZXNvbHZlcjogUmVzb2x2ZXIpIHtcbiAgICBsZXQgZGVsZWdhdGUgPSBuZXcgQ29tcGlsZXJEZWxlZ2F0ZShyZXNvbHZlcik7XG4gICAgbGV0IGNvbXBpbGVyID0gbmV3IEJ1bmRsZUNvbXBpbGVyKGRlbGVnYXRlKTtcblxuICAgIGxldCBtYWluTG9jYXRvciA9IGxvY2F0b3JGb3IoJ3RlbXBsYXRlOm1haW5UZW1wbGF0ZScsICdkZWZhdWx0Jyk7XG4gICAgbWFpbkxvY2F0b3IubWV0YS5tb2R1bGUgPSAndGVtcGxhdGU6bWFpblRlbXBsYXRlJztcblxuICAgIGxldCBibG9jayA9IEpTT04ucGFyc2UobWFpblRlbXBsYXRlLmJsb2NrKTtcbiAgICBsZXQgY29tcGlsYWJsZVRlbXBsYXRlID0gY29tcGlsYWJsZSh7XG4gICAgICBibG9jayxcbiAgICAgIHJlZmVycmVyOiBtYWluTG9jYXRvci5tZXRhLFxuICAgIH0pO1xuXG4gICAgY29tcGlsZXIuYWRkQ29tcGlsYWJsZVRlbXBsYXRlKG1haW5Mb2NhdG9yLCBjb21waWxhYmxlVGVtcGxhdGUpO1xuXG4gICAgZm9yIChsZXQgbW9kdWxlIGluIHRoaXMudGVtcGxhdGVzKSB7XG4gICAgICBjb21waWxlci5hZGRUZW1wbGF0ZVNvdXJjZShsb2NhdG9yRm9yKG1vZHVsZSwgJ2RlZmF1bHQnKSwgdGhpcy50ZW1wbGF0ZXNbbW9kdWxlXSk7XG4gICAgfVxuXG4gICAgbGV0IHsgaGVhcCwgcG9vbCwgdGFibGUgfSA9IGNvbXBpbGVyLmNvbXBpbGUoKTtcblxuICAgIGxldCByZXNvbHZlclRhYmxlOiB1bmtub3duW10gPSBbXTtcblxuICAgIGxldCBtZXRhOiBEaWN0PE1ldGFkYXRhPiA9IHt9O1xuXG4gICAgdGFibGUudm1IYW5kbGVCeU1vZHVsZUxvY2F0b3IuZm9yRWFjaCgodm1IYW5kbGUsIGxvY2F0b3IpID0+IHtcbiAgICAgIGxldCBoYW5kbGUgPSB0YWJsZS5ieU1vZHVsZUxvY2F0b3IuZ2V0KGxvY2F0b3IpO1xuICAgICAgbGV0IHRlbXBsYXRlID0gY29tcGlsZXIuZ2V0VGVtcGxhdGUobG9jYXRvcik7XG5cbiAgICAgIG1ldGFbbG9jYXRvci5tb2R1bGVdID0ge1xuICAgICAgICB2OiB2bUhhbmRsZSxcbiAgICAgICAgaDogaGFuZGxlLFxuICAgICAgICB0YWJsZTogdGVtcGxhdGUuc3ltYm9sVGFibGUsXG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgdGFibGUuYnlIYW5kbGUuZm9yRWFjaCgobG9jYXRvciwgaGFuZGxlKSA9PiB7XG4gICAgICBsZXQgbW9kdWxlID0gbG9jYXRvci5tb2R1bGUucmVwbGFjZSgndGVtcGxhdGU6LycsICdjb21wb25lbnQ6LycpO1xuICAgICAgaWYgKHRoaXMubW9kdWxlc1ttb2R1bGVdKSB7XG4gICAgICAgIGlmIChtb2R1bGUuaW5kZXhPZignaGVscGVyOicpID09PSAwKSB7XG4gICAgICAgICAgY29uc3QgbW9kdWxlVHlwZSA9ICh0aGlzLm1vZHVsZXNbbW9kdWxlXSBhcyBIZWxwZXJGdW5jdGlvbikuaXNGYWN0b3J5ID8gTW9kdWxlVHlwZXMuSEVMUEVSX0ZBQ1RPUlkgOiBNb2R1bGVUeXBlcy5IRUxQRVI7XG4gICAgICAgICAgcmVzb2x2ZXJUYWJsZVtoYW5kbGVdID0gW21vZHVsZVR5cGUsIHRoaXMubW9kdWxlc1ttb2R1bGVdXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXNvbHZlclRhYmxlW2hhbmRsZV0gPSB0aGlzLm1vZHVsZXNbbW9kdWxlXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgbGV0IGJ5dGVjb2RlID0gaGVhcC5idWZmZXI7XG4gICAgbGV0IGRhdGEgPSB7XG4gICAgICBwcmVmaXg6ICcnLFxuICAgICAgbWFpbkVudHJ5OiB0YWJsZS52bUhhbmRsZUJ5TW9kdWxlTG9jYXRvci5nZXQobWFpbkxvY2F0b3IpLFxuICAgICAgcG9vbCxcbiAgICAgIHRhYmxlOiByZXNvbHZlclRhYmxlLFxuICAgICAgbWV0YSxcbiAgICAgIGhlYXA6IHtcbiAgICAgICAgdGFibGU6IGhlYXAudGFibGUsXG4gICAgICAgIGhhbmRsZTogaGVhcC5oYW5kbGUsXG4gICAgICB9LFxuICAgIH07XG5cbiAgICByZXR1cm4gbmV3IEJ5dGVjb2RlTG9hZGVyKHsgYnl0ZWNvZGUsIGRhdGEgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYnVpbGRMb2FkZXIocmVzb2x2ZXIpOiBMb2FkZXIge1xuICAgIHN3aXRjaCAodGhpcy5vcHRpb25zLmxvYWRlcikge1xuICAgICAgY2FzZSAncnVudGltZS1jb21waWxlcic6XG4gICAgICAgIHJldHVybiB0aGlzLmJ1aWxkUnVudGltZUNvbXBpbGVyTG9hZGVyKCk7XG4gICAgICBjYXNlICdieXRlY29kZSc6XG4gICAgICAgIHJldHVybiB0aGlzLmJ1aWxkQnl0ZWNvZGVMb2FkZXIocmVzb2x2ZXIpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbnJlY29nbml6ZWQgbG9hZGVyICR7dGhpcy5vcHRpb25zLmxvYWRlcn1gKTtcbiAgICB9XG4gIH1cblxuICByZW5kZXJUb1N0cmluZyhjb21wb25lbnROYW1lOiBzdHJpbmcsIGRhdGE6IERpY3Q8dW5rbm93bj4sIG9wdGlvbnM/OiBUZXN0U1NSQXBwbGljYXRpb25PcHRpb25zKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBjb25zdCByZXNvbHZlciA9IHRoaXMuYnVpbGRSZXNvbHZlcigpO1xuICAgIGxldCBsb2FkZXIgPSB0aGlzLmJ1aWxkTG9hZGVyKHJlc29sdmVyKTtcblxuICAgIHJldHVybiBTU1JBcHBsaWNhdGlvbi5yZW5kZXJUb1N0cmluZyhjb21wb25lbnROYW1lLCBkYXRhLCB7XG4gICAgICByb290TmFtZTogdGhpcy5yb290TmFtZSxcbiAgICAgIHJlc29sdmVyLFxuICAgICAgbG9hZGVyLFxuICAgICAgcmVuZGVyZXI6IG5ldyBTeW5jUmVuZGVyZXIoKSxcbiAgICAgIC4uLm9wdGlvbnNcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIGJvb3QoKTogUHJvbWlzZTxUPiB7XG4gICAgbGV0IHJlc29sdmVyID0gdGhpcy5idWlsZFJlc29sdmVyKCk7XG4gICAgbGV0IGxvYWRlcjogTG9hZGVyID0gdGhpcy5idWlsZExvYWRlcihyZXNvbHZlcik7XG5cbiAgICBsZXQgZG9jOiBEb2N1bWVudCA9ICh0aGlzLm9wdGlvbnMuZG9jdW1lbnQgYXMgRG9jdW1lbnQpIHx8IGRvY3VtZW50O1xuICAgIGxldCBlbGVtZW50ID0gZG9jLmJvZHk7XG4gICAgbGV0IGJ1aWxkZXIgPSBuZXcgRE9NQnVpbGRlcih7IGVsZW1lbnQgfSk7XG4gICAgbGV0IHJlbmRlcmVyID0gbmV3IFN5bmNSZW5kZXJlcigpO1xuXG4gICAgbGV0IGFwcCA9IG5ldyB0aGlzLm9wdGlvbnMuQXBwbGljYXRpb25DbGFzcyh7XG4gICAgICByZXNvbHZlcixcbiAgICAgIGJ1aWxkZXIsXG4gICAgICBsb2FkZXIsXG4gICAgICByZW5kZXJlcixcbiAgICAgIHJvb3ROYW1lOiB0aGlzLnJvb3ROYW1lLFxuICAgICAgZG9jdW1lbnQ6IHRoaXMub3B0aW9ucy5kb2N1bWVudCxcbiAgICB9KTtcblxuICAgIGxldCByb290RWxlbWVudCA9IGRvYy5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICBhcHAucm9vdEVsZW1lbnQgPSByb290RWxlbWVudDtcbiAgICBhcHAucmVuZGVyQ29tcG9uZW50KCdNYWluJywgcm9vdEVsZW1lbnQpO1xuICAgIGFwcC5ib290KCk7XG5cbiAgICBhd2FpdCBkaWRSZW5kZXIoYXBwKTtcblxuICAgIHJldHVybiBhcHA7XG4gIH1cbn1cblxuY2xhc3MgQ29tcGlsZXJEZWxlZ2F0ZSBpbXBsZW1lbnRzIElDb21waWxlckRlbGVnYXRlPE1vZHVsZUxvY2F0b3I+IHtcbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIHJlc29sdmVyOiBSZXNvbHZlcikge31cblxuICBoYXNDb21wb25lbnRJblNjb3BlKG5hbWU6IHN0cmluZywgcmVmZXJyZXI6IE1vZHVsZUxvY2F0b3IpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLnJlc29sdmVyLmlkZW50aWZ5KGB0ZW1wbGF0ZToke25hbWV9YCwgcmVmZXJyZXIubW9kdWxlKTtcbiAgfVxuXG4gIHJlc29sdmVDb21wb25lbnQobmFtZTogc3RyaW5nLCByZWZlcnJlcjogTW9kdWxlTG9jYXRvcik6IE1vZHVsZUxvY2F0b3Ige1xuICAgIGxldCByZXNvbHZlZCA9IHRoaXMucmVzb2x2ZXIuaWRlbnRpZnkoYHRlbXBsYXRlOiR7bmFtZX1gLCByZWZlcnJlci5tb2R1bGUpO1xuICAgIHJldHVybiB7IG1vZHVsZTogcmVzb2x2ZWQsIG5hbWU6ICdkZWZhdWx0JyB9O1xuICB9XG5cbiAgZ2V0Q29tcG9uZW50Q2FwYWJpbGl0aWVzKCkge1xuICAgIHJldHVybiBDQVBBQklMSVRJRVM7XG4gIH1cblxuICBoYXNIZWxwZXJJblNjb3BlKGhlbHBlck5hbWU6IHN0cmluZywgcmVmZXJyZXI6IE1vZHVsZUxvY2F0b3IpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLnJlc29sdmVyLmlkZW50aWZ5KGBoZWxwZXI6JHtoZWxwZXJOYW1lfWAsIHJlZmVycmVyLm1vZHVsZSk7XG4gIH1cblxuICByZXNvbHZlSGVscGVyKGhlbHBlck5hbWU6IHN0cmluZywgcmVmZXJyZXI6IE1vZHVsZUxvY2F0b3IpOiBNb2R1bGVMb2NhdG9yIHtcbiAgICBsZXQgcmVzb2x2ZWQgPSB0aGlzLnJlc29sdmVyLmlkZW50aWZ5KGBoZWxwZXI6JHtoZWxwZXJOYW1lfWAsIHJlZmVycmVyLm1vZHVsZSk7XG4gICAgcmV0dXJuIHsgbW9kdWxlOiByZXNvbHZlZCwgbmFtZTogJ2RlZmF1bHQnIH07XG4gIH1cblxuICBoYXNQYXJ0aWFsSW5TY29wZShwYXJ0aWFsTmFtZTogc3RyaW5nLCByZWZlcnJlcjogTW9kdWxlTG9jYXRvcik6IGJvb2xlYW4ge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuXG4gIHJlc29sdmVQYXJ0aWFsKHBhcnRpYWxOYW1lOiBzdHJpbmcsIHJlZmVycmVyOiBNb2R1bGVMb2NhdG9yKTogTW9kdWxlTG9jYXRvciB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgaGFzTW9kaWZpZXJJblNjb3BlKG1vZGlmaWVyTmFtZTogc3RyaW5nLCByZWZlcnJlcjogTW9kdWxlTG9jYXRvcik6IGJvb2xlYW4ge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuXG4gIHJlc29sdmVNb2RpZmllcihtb2RpZmllck5hbWU6IHN0cmluZywgcmVmZXJyZXI6IE1vZHVsZUxvY2F0b3IpOiBNb2R1bGVMb2NhdG9yIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gYnVpbGRBcHA8VCBleHRlbmRzIFRlc3RBcHBsaWNhdGlvbj4ob3B0aW9uczogQXBwQnVpbGRlck9wdGlvbnM8VD4gPSB7fSk6IEFwcEJ1aWxkZXI8VD4ge1xuICBvcHRpb25zLmFwcE5hbWUgPSBvcHRpb25zLmFwcE5hbWUgfHwgJ3Rlc3QtYXBwJztcbiAgb3B0aW9ucy5sb2FkZXIgPSBvcHRpb25zLmxvYWRlciB8fCAncnVudGltZS1jb21waWxlcic7XG4gIG9wdGlvbnMuQ29tcG9uZW50TWFuYWdlciA9IG9wdGlvbnMuQ29tcG9uZW50TWFuYWdlciB8fCBDb21wb25lbnRNYW5hZ2VyO1xuICBvcHRpb25zLkFwcGxpY2F0aW9uQ2xhc3MgPVxuICAgIG9wdGlvbnMuQXBwbGljYXRpb25DbGFzcyB8fCAoVGVzdEFwcGxpY2F0aW9uIGFzIEFwcGxpY2F0aW9uQ29uc3RydWN0b3I8VD4pO1xuXG4gIHJldHVybiBuZXcgQXBwQnVpbGRlcihvcHRpb25zLmFwcE5hbWUsIG9wdGlvbnMpO1xufVxuXG5leHBvcnQgeyBidWlsZEFwcCB9O1xuIl19 |
@@ -266,2 +266,2 @@ function _defaults(obj, defaults) { var keys = Object.getOwnPropertyNames(defaults); for (var i = 0; i < keys.length; i++) { var key = keys[i]; var value = Object.getOwnPropertyDescriptor(defaults, key); if (value && value.configurable && obj[key] === undefined) { Object.defineProperty(obj, key, value); } } return obj; } | ||
export { buildApp }; | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2FwcGxpY2F0aW9uLXRlc3QtaGVscGVycy9zcmMvYXBwLWJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBLE9BQU8sUUFBUCxJQUFtQixtQkFBbkIsUUFBcUUsbUJBQXJFO0FBRUEsT0FBTyw0QkFBUCxNQUF5QyxrQ0FBekM7QUFDQSxTQUFTLFVBQVQsUUFBMkIsWUFBM0I7QUFDQSxPQUFPLFdBQVAsSUFFRSxjQUZGLEVBR0UsVUFIRixFQUtFLHFCQUxGLEVBTUUsWUFORixFQVFFLHNCQVJGLFFBU08sc0JBVFA7QUFVQSxTQUFTLGdCQUFULEVBQTJCLFlBQTNCLFFBQStDLG9CQUEvQztBQUNBLFNBQVMsTUFBVCxRQUF1QixlQUF2QjtBQUNBLFNBQVMsY0FBVCxRQUFzRSwwQkFBdEU7QUFDQSxTQUFTLFdBQVQsRUFBc0IsWUFBdEIsUUFBMEMsc0JBQTFDO0FBQ0EsU0FBUyxVQUFULFFBQTJCLDBCQUEzQjtBQUdBLFNBQVMsY0FBVCxRQUErQixjQUEvQjtBQUVBLE9BQU8sU0FBUCxNQUFzQixjQUF0QjtBQWFBLFdBQWEsZUFBYjtBQUFBOztBQUFBO0FBQUE7O0FBQUE7QUFBQTs7QUFBQTtBQUFBLEVBQXFDLFdBQXJDO0FBWUEsU0FBUyxVQUFULENBQW9CLE1BQXBCLEVBQW9DLElBQXBDLEVBQWdEO0FBQzlDLFdBQU87QUFDTCxjQUFNLFVBREQ7QUFFTCxzQkFGSztBQUdMLGtCQUhLO0FBSUwsY0FBTTtBQUNKLDBCQURJO0FBRUo7QUFGSTtBQUpELEtBQVA7QUFTRDs7SUFFWSxVO0FBTVgsd0JBQVksSUFBWixFQUEwQixPQUExQixFQUF1RDtBQUFBOztBQUp2RCxhQUFBLE9BQUEsR0FBeUIsRUFBekI7QUFDQSxhQUFBLFNBQUEsR0FBMEIsRUFBMUI7QUFJRSxhQUFLLFFBQUwsR0FBZ0IsSUFBaEI7QUFDQSxhQUFLLE9BQUwsR0FBZSxPQUFmO0FBQ0EsYUFBSyxPQUFM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U0FBMUIsRUFBUDtBQUNELEs7OytCQUVELGlCLDhCQUFrQixXLEVBQXFCLFEsRUFBdUI7QUFDNUQsY0FBTSxJQUFJLEtBQUosQ0FBVSx5QkFBVixDQUFOO0FBQ0QsSzs7K0JBRUQsYywyQkFBZSxXLEVBQXFCLFEsRUFBdUI7QUFDekQsY0FBTSxJQUFJLEtBQUosQ0FBVSx5QkFBVixDQUFOO0FBQ0QsSzs7K0JBRUQsa0IsK0JBQW1CLFksRUFBc0IsUSxFQUF1QjtBQUM5RCxjQUFNLElBQUksS0FBSixDQUFVLHlCQUFWLENBQU47QUFDRCxLOzsrQkFFRCxlLDRCQUFnQixZLEVBQXNCLFEsRUFBdUI7QUFDM0QsY0FBTSxJQUFJLEtBQUosQ0FBVSx5QkFBVixDQUFOO0FBQ0QsSzs7Ozs7QUFHSCxTQUFTLFFBQVQsR0FBK0U7QUFBQSxRQUFsQyxPQUFrQyx1RUFBRixFQUFFOztBQUM3RSxZQUFRLE9BQVIsR0FBa0IsUUFBUSxPQUFSLElBQW1CLFVBQXJDO0FBQ0EsWUFBUSxNQUFSLEdBQWlCLFFBQVEsTUFBUixJQUFrQixrQkFBbkM7QUFDQSxZQUFRLGdCQUFSLEdBQTJCLFFBQVEsZ0JBQVIsSUFBNEIsZ0JBQXZEO0FBQ0EsWUFBUSxnQkFBUixHQUNFLFFBQVEsZ0JBQVIsSUFBNkIsZUFEL0I7QUFHQSxXQUFPLElBQUksVUFBSixDQUFlLFFBQVEsT0FBdkIsRUFBZ0MsT0FBaEMsQ0FBUDtBQUNEO0FBRUQsU0FBUyxRQUFUIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlc29sdmVyLCB7IEJhc2ljTW9kdWxlUmVnaXN0cnksIFJlc29sdmVyQ29uZmlndXJhdGlvbiB9IGZyb20gJ0BnbGltbWVyL3Jlc29sdmVyJztcbmltcG9ydCB7IERpY3QsIE1vZHVsZUxvY2F0b3IsIFRlbXBsYXRlTG9jYXRvciB9IGZyb20gJ0BnbGltbWVyL2ludGVyZmFjZXMnO1xuaW1wb3J0IGRlZmF1bHRSZXNvbHZlckNvbmZpZ3VyYXRpb24gZnJvbSAnLi9kZWZhdWx0LXJlc29sdmVyLWNvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IHsgcHJlY29tcGlsZSB9IGZyb20gJy4vY29tcGlsZXInO1xuaW1wb3J0IEFwcGxpY2F0aW9uLCB7XG4gIEFwcGxpY2F0aW9uQ29uc3RydWN0b3IsXG4gIEJ5dGVjb2RlTG9hZGVyLFxuICBET01CdWlsZGVyLFxuICBMb2FkZXIsXG4gIFJ1bnRpbWVDb21waWxlckxvYWRlcixcbiAgU3luY1JlbmRlcmVyLFxuICBNb2R1bGVUeXBlcyxcbiAgSU5URVJOQUxfRFlOQU1JQ19TQ09QRVxufSBmcm9tICdAZ2xpbW1lci9hcHBsaWNhdGlvbic7XG5pbXBvcnQgeyBDb21wb25lbnRNYW5hZ2VyLCBDQVBBQklMSVRJRVMgfSBmcm9tICdAZ2xpbW1lci9jb21wb25lbnQnO1xuaW1wb3J0IHsgYXNzZXJ0IH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQgeyBCdW5kbGVDb21waWxlciwgQ29tcGlsZXJEZWxlZ2F0ZSBhcyBJQ29tcGlsZXJEZWxlZ2F0ZSB9IGZyb20gJ0BnbGltbWVyL2J1bmRsZS1jb21waWxlcic7XG5pbXBvcnQgeyBidWlsZEFjdGlvbiwgbWFpblRlbXBsYXRlIH0gZnJvbSAnQGdsaW1tZXIvYXBwbGljYXRpb24nO1xuaW1wb3J0IHsgY29tcGlsYWJsZSB9IGZyb20gJ0BnbGltbWVyL29wY29kZS1jb21waWxlcic7XG5pbXBvcnQgeyBNZXRhZGF0YSB9IGZyb20gJy4uLy4uL2FwcGxpY2F0aW9uL3NyYy9sb2FkZXJzL2J5dGVjb2RlL2xvYWRlcic7XG5pbXBvcnQgeyBTaW1wbGVEb2N1bWVudCB9IGZyb20gJ0BzaW1wbGUtZG9tL2ludGVyZmFjZSc7XG5pbXBvcnQgeyBTU1JBcHBsaWNhdGlvbiB9IGZyb20gJ0BnbGltbWVyL3Nzcic7XG5cbmltcG9ydCBkaWRSZW5kZXIgZnJvbSAnLi9kaWQtcmVuZGVyJztcblxuZXhwb3J0IGludGVyZmFjZSBBcHBCdWlsZGVyT3B0aW9uczxUPiB7XG4gIGFwcE5hbWU/OiBzdHJpbmc7XG4gIGxvYWRlcj86IHN0cmluZztcbiAgQXBwbGljYXRpb25DbGFzcz86IEFwcGxpY2F0aW9uQ29uc3RydWN0b3I8VD47XG4gIENvbXBvbmVudE1hbmFnZXI/OiBhbnk7IC8vIFRPRE8gLSB0eXBpbmdcbiAgcmVzb2x2ZXJDb25maWd1cmF0aW9uPzogUmVzb2x2ZXJDb25maWd1cmF0aW9uO1xuICBkb2N1bWVudD86IFNpbXBsZURvY3VtZW50O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudEZhY3Rvcnkge31cblxuZXhwb3J0IGNsYXNzIFRlc3RBcHBsaWNhdGlvbiBleHRlbmRzIEFwcGxpY2F0aW9uIHtcbiAgcm9vdEVsZW1lbnQ6IEVsZW1lbnQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXBwQnVpbGRlclRlbXBsYXRlTWV0YSB7XG4gIHNwZWNpZmllcjogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgSGVscGVyRnVuY3Rpb24gZXh0ZW5kcyBGdW5jdGlvbiB7XG4gIGlzRmFjdG9yeT86IGJvb2xlYW47XG59XG5cbmZ1bmN0aW9uIGxvY2F0b3JGb3IobW9kdWxlOiBzdHJpbmcsIG5hbWU6IHN0cmluZyk6IFRlbXBsYXRlTG9jYXRvcjxNb2R1bGVMb2NhdG9yPiB7XG4gIHJldHVybiB7XG4gICAga2luZDogJ3RlbXBsYXRlJyxcbiAgICBtb2R1bGUsXG4gICAgbmFtZSxcbiAgICBtZXRhOiB7XG4gICAgICBtb2R1bGUsXG4gICAgICBuYW1lLFxuICAgIH0sXG4gIH07XG59XG5cbmV4cG9ydCBjbGFzcyBBcHBCdWlsZGVyPFQgZXh0ZW5kcyBUZXN0QXBwbGljYXRpb24+IHtcbiAgcm9vdE5hbWU6IHN0cmluZztcbiAgbW9kdWxlczogRGljdDx1bmtub3duPiA9IHt9O1xuICB0ZW1wbGF0ZXM6IERpY3Q8c3RyaW5nPiA9IHt9O1xuICBvcHRpb25zOiBBcHBCdWlsZGVyT3B0aW9uczxUPjtcblxuICBjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmcsIG9wdGlvbnM6IEFwcEJ1aWxkZXJPcHRpb25zPFQ+KSB7XG4gICAgdGhpcy5yb290TmFtZSA9IG5hbWU7XG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgICB0aGlzLm1vZHVsZXNbXG4gICAgICBgY29tcG9uZW50LW1hbmFnZXI6LyR7dGhpcy5yb290TmFtZX0vY29tcG9uZW50LW1hbmFnZXJzL21haW5gXG4gICAgXSA9IHRoaXMub3B0aW9ucy5Db21wb25lbnRNYW5hZ2VyO1xuICAgIHRoaXMudGVtcGxhdGUoJ01haW4nLCAnPGRpdiAvPicpO1xuICAgIHRoaXMuaGVscGVyKCdhY3Rpb24nLCBidWlsZEFjdGlvbiwgdHJ1ZSk7XG4gIH1cblxuICB0ZW1wbGF0ZShuYW1lOiBzdHJpbmcsIHRlbXBsYXRlOiBzdHJpbmcpIHtcbiAgICBhc3NlcnQoXG4gICAgICBuYW1lLmNoYXJBdCgwKSA9PT0gbmFtZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSxcbiAgICAgICd0ZW1wbGF0ZSBuYW1lcyBtdXN0IHN0YXJ0IHdpdGggYSBjYXBpdGFsIGxldHRlcidcbiAgICApO1xuXG4gICAgbGV0IHNwZWNpZmllciA9IGB0ZW1wbGF0ZTovJHt0aGlzLnJvb3ROYW1lfS9jb21wb25lbnRzLyR7bmFtZX1gO1xuICAgIHRoaXMubW9kdWxlc1tzcGVjaWZpZXJdID0gcHJlY29tcGlsZSh0ZW1wbGF0ZSwgeyBtZXRhOiB7IHNwZWNpZmllciB9IH0pO1xuICAgIHRoaXMudGVtcGxhdGVzW3NwZWNpZmllcl0gPSB0ZW1wbGF0ZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGNvbXBvbmVudChuYW1lOiBzdHJpbmcsIGNvbXBvbmVudEZhY3Rvcnk6IENvbXBvbmVudEZhY3RvcnkpIHtcbiAgICBsZXQgc3BlY2lmaWVyID0gYGNvbXBvbmVudDovJHt0aGlzLnJvb3ROYW1lfS9jb21wb25lbnRzLyR7bmFtZX1gO1xuICAgIHRoaXMubW9kdWxlc1tzcGVjaWZpZXJdID0gY29tcG9uZW50RmFjdG9yeTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGhlbHBlcihuYW1lOiBzdHJpbmcsIGhlbHBlckZ1bmM6IEhlbHBlckZ1bmN0aW9uLCBpc0ZhY3RvcnkgPSBmYWxzZSkge1xuICAgIGxldCBzcGVjaWZpZXIgPSBgaGVscGVyOi8ke3RoaXMucm9vdE5hbWV9L2NvbXBvbmVudHMvJHtuYW1lfWA7XG4gICAgaGVscGVyRnVuYy5pc0ZhY3RvcnkgPSBpc0ZhY3Rvcnk7XG4gICAgdGhpcy5tb2R1bGVzW3NwZWNpZmllcl0gPSBoZWxwZXJGdW5jO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHJvdGVjdGVkIGJ1aWxkUmVzb2x2ZXIoKTogUmVzb2x2ZXIge1xuICAgIGxldCByZXNvbHZlckNvbmZpZ3VyYXRpb24gPSB0aGlzLm9wdGlvbnMucmVzb2x2ZXJDb25maWd1cmF0aW9uIHx8IGRlZmF1bHRSZXNvbHZlckNvbmZpZ3VyYXRpb247XG4gICAgcmVzb2x2ZXJDb25maWd1cmF0aW9uLmFwcCA9IHJlc29sdmVyQ29uZmlndXJhdGlvbi5hcHAgfHwge1xuICAgICAgbmFtZTogdGhpcy5yb290TmFtZSxcbiAgICAgIHJvb3ROYW1lOiB0aGlzLnJvb3ROYW1lLFxuICAgIH07XG5cbiAgICBsZXQgcmVnaXN0cnkgPSBuZXcgQmFzaWNNb2R1bGVSZWdpc3RyeSh0aGlzLm1vZHVsZXMpO1xuICAgIHJldHVybiBuZXcgUmVzb2x2ZXIocmVzb2x2ZXJDb25maWd1cmF0aW9uLCByZWdpc3RyeSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYnVpbGRSdW50aW1lQ29tcGlsZXJMb2FkZXIoKTogTG9hZGVyIHtcbiAgICByZXR1cm4gbmV3IFJ1bnRpbWVDb21waWxlckxvYWRlcigpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGJ1aWxkQnl0ZWNvZGVMb2FkZXIocmVzb2x2ZXI6IFJlc29sdmVyKSB7XG4gICAgbGV0IGRlbGVnYXRlID0gbmV3IENvbXBpbGVyRGVsZWdhdGUocmVzb2x2ZXIpO1xuICAgIGxldCBjb21waWxlciA9IG5ldyBCdW5kbGVDb21waWxlcihkZWxlZ2F0ZSk7XG5cbiAgICBsZXQgbWFpbkxvY2F0b3IgPSBsb2NhdG9yRm9yKCd0ZW1wbGF0ZTptYWluVGVtcGxhdGUnLCAnZGVmYXVsdCcpO1xuICAgIG1haW5Mb2NhdG9yLm1ldGEubW9kdWxlID0gJ3RlbXBsYXRlOm1haW5UZW1wbGF0ZSc7XG5cbiAgICBsZXQgYmxvY2sgPSBKU09OLnBhcnNlKG1haW5UZW1wbGF0ZS5ibG9jayk7XG4gICAgbGV0IGNvbXBpbGFibGVUZW1wbGF0ZSA9IGNvbXBpbGFibGUoe1xuICAgICAgYmxvY2ssXG4gICAgICByZWZlcnJlcjogbWFpbkxvY2F0b3IubWV0YSxcbiAgICB9KTtcblxuICAgIGNvbXBpbGVyLmFkZENvbXBpbGFibGVUZW1wbGF0ZShtYWluTG9jYXRvciwgY29tcGlsYWJsZVRlbXBsYXRlKTtcblxuICAgIGZvciAobGV0IG1vZHVsZSBpbiB0aGlzLnRlbXBsYXRlcykge1xuICAgICAgY29tcGlsZXIuYWRkVGVtcGxhdGVTb3VyY2UobG9jYXRvckZvcihtb2R1bGUsICdkZWZhdWx0JyksIHRoaXMudGVtcGxhdGVzW21vZHVsZV0pO1xuICAgIH1cblxuICAgIGxldCB7IGhlYXAsIHBvb2wsIHRhYmxlIH0gPSBjb21waWxlci5jb21waWxlKCk7XG5cbiAgICBsZXQgcmVzb2x2ZXJUYWJsZTogdW5rbm93bltdID0gW107XG5cbiAgICBsZXQgbWV0YTogRGljdDxNZXRhZGF0YT4gPSB7fTtcblxuICAgIHRhYmxlLnZtSGFuZGxlQnlNb2R1bGVMb2NhdG9yLmZvckVhY2goKHZtSGFuZGxlLCBsb2NhdG9yKSA9PiB7XG4gICAgICBsZXQgaGFuZGxlID0gdGFibGUuYnlNb2R1bGVMb2NhdG9yLmdldChsb2NhdG9yKTtcbiAgICAgIGxldCB0ZW1wbGF0ZSA9IGNvbXBpbGVyLmdldFRlbXBsYXRlKGxvY2F0b3IpO1xuXG4gICAgICBtZXRhW2xvY2F0b3IubW9kdWxlXSA9IHtcbiAgICAgICAgdjogdm1IYW5kbGUsXG4gICAgICAgIGg6IGhhbmRsZSxcbiAgICAgICAgdGFibGU6IHRlbXBsYXRlLnN5bWJvbFRhYmxlLFxuICAgICAgfTtcbiAgICB9KTtcblxuICAgIHRhYmxlLmJ5SGFuZGxlLmZvckVhY2goKGxvY2F0b3IsIGhhbmRsZSkgPT4ge1xuICAgICAgbGV0IG1vZHVsZSA9IGxvY2F0b3IubW9kdWxlLnJlcGxhY2UoJ3RlbXBsYXRlOi8nLCAnY29tcG9uZW50Oi8nKTtcbiAgICAgIGlmICh0aGlzLm1vZHVsZXNbbW9kdWxlXSkge1xuICAgICAgICBpZiAobW9kdWxlLmluZGV4T2YoJ2hlbHBlcjonKSA9PT0gMCkge1xuICAgICAgICAgIGNvbnN0IG1vZHVsZVR5cGUgPSAodGhpcy5tb2R1bGVzW21vZHVsZV0gYXMgSGVscGVyRnVuY3Rpb24pLmlzRmFjdG9yeSA/IE1vZHVsZVR5cGVzLkhFTFBFUl9GQUNUT1JZIDogTW9kdWxlVHlwZXMuSEVMUEVSO1xuICAgICAgICAgIHJlc29sdmVyVGFibGVbaGFuZGxlXSA9IFttb2R1bGVUeXBlLCB0aGlzLm1vZHVsZXNbbW9kdWxlXV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzb2x2ZXJUYWJsZVtoYW5kbGVdID0gdGhpcy5tb2R1bGVzW21vZHVsZV07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGxldCBieXRlY29kZSA9IGhlYXAuYnVmZmVyO1xuICAgIGxldCBkYXRhID0ge1xuICAgICAgcHJlZml4OiAnJyxcbiAgICAgIG1haW5FbnRyeTogdGFibGUudm1IYW5kbGVCeU1vZHVsZUxvY2F0b3IuZ2V0KG1haW5Mb2NhdG9yKSxcbiAgICAgIHBvb2wsXG4gICAgICB0YWJsZTogcmVzb2x2ZXJUYWJsZSxcbiAgICAgIG1ldGEsXG4gICAgICBoZWFwOiB7XG4gICAgICAgIHRhYmxlOiBoZWFwLnRhYmxlLFxuICAgICAgICBoYW5kbGU6IGhlYXAuaGFuZGxlLFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIG5ldyBCeXRlY29kZUxvYWRlcih7IGJ5dGVjb2RlLCBkYXRhIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGJ1aWxkTG9hZGVyKHJlc29sdmVyKTogTG9hZGVyIHtcbiAgICBzd2l0Y2ggKHRoaXMub3B0aW9ucy5sb2FkZXIpIHtcbiAgICAgIGNhc2UgJ3J1bnRpbWUtY29tcGlsZXInOlxuICAgICAgICByZXR1cm4gdGhpcy5idWlsZFJ1bnRpbWVDb21waWxlckxvYWRlcigpO1xuICAgICAgY2FzZSAnYnl0ZWNvZGUnOlxuICAgICAgICByZXR1cm4gdGhpcy5idWlsZEJ5dGVjb2RlTG9hZGVyKHJlc29sdmVyKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5yZWNvZ25pemVkIGxvYWRlciAke3RoaXMub3B0aW9ucy5sb2FkZXJ9YCk7XG4gICAgfVxuICB9XG5cbiAgcmVuZGVyVG9TdHJpbmcoY29tcG9uZW50TmFtZTogc3RyaW5nLCBkYXRhOiBEaWN0PHVua25vd24+LCBvcHRpb25zPzogeyBbSU5URVJOQUxfRFlOQU1JQ19TQ09QRV06IERpY3Q8dW5rbm93bj4gfSk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3QgcmVzb2x2ZXIgPSB0aGlzLmJ1aWxkUmVzb2x2ZXIoKTtcbiAgICBsZXQgbG9hZGVyID0gdGhpcy5idWlsZExvYWRlcihyZXNvbHZlcik7XG5cbiAgICByZXR1cm4gU1NSQXBwbGljYXRpb24ucmVuZGVyVG9TdHJpbmcoY29tcG9uZW50TmFtZSwgZGF0YSwge1xuICAgICAgcm9vdE5hbWU6IHRoaXMucm9vdE5hbWUsXG4gICAgICByZXNvbHZlcixcbiAgICAgIGxvYWRlcixcbiAgICAgIHJlbmRlcmVyOiBuZXcgU3luY1JlbmRlcmVyKCksXG4gICAgICAuLi5vcHRpb25zXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBib290KCk6IFByb21pc2U8VD4ge1xuICAgIGxldCByZXNvbHZlciA9IHRoaXMuYnVpbGRSZXNvbHZlcigpO1xuICAgIGxldCBsb2FkZXI6IExvYWRlciA9IHRoaXMuYnVpbGRMb2FkZXIocmVzb2x2ZXIpO1xuXG4gICAgbGV0IGRvYzogRG9jdW1lbnQgPSAodGhpcy5vcHRpb25zLmRvY3VtZW50IGFzIERvY3VtZW50KSB8fCBkb2N1bWVudDtcbiAgICBsZXQgZWxlbWVudCA9IGRvYy5ib2R5O1xuICAgIGxldCBidWlsZGVyID0gbmV3IERPTUJ1aWxkZXIoeyBlbGVtZW50IH0pO1xuICAgIGxldCByZW5kZXJlciA9IG5ldyBTeW5jUmVuZGVyZXIoKTtcblxuICAgIGxldCBhcHAgPSBuZXcgdGhpcy5vcHRpb25zLkFwcGxpY2F0aW9uQ2xhc3Moe1xuICAgICAgcmVzb2x2ZXIsXG4gICAgICBidWlsZGVyLFxuICAgICAgbG9hZGVyLFxuICAgICAgcmVuZGVyZXIsXG4gICAgICByb290TmFtZTogdGhpcy5yb290TmFtZSxcbiAgICAgIGRvY3VtZW50OiB0aGlzLm9wdGlvbnMuZG9jdW1lbnQsXG4gICAgfSk7XG5cbiAgICBsZXQgcm9vdEVsZW1lbnQgPSBkb2MuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgYXBwLnJvb3RFbGVtZW50ID0gcm9vdEVsZW1lbnQ7XG4gICAgYXBwLnJlbmRlckNvbXBvbmVudCgnTWFpbicsIHJvb3RFbGVtZW50KTtcbiAgICBhcHAuYm9vdCgpO1xuXG4gICAgYXdhaXQgZGlkUmVuZGVyKGFwcCk7XG5cbiAgICByZXR1cm4gYXBwO1xuICB9XG59XG5cbmNsYXNzIENvbXBpbGVyRGVsZWdhdGUgaW1wbGVtZW50cyBJQ29tcGlsZXJEZWxlZ2F0ZTxNb2R1bGVMb2NhdG9yPiB7XG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCByZXNvbHZlcjogUmVzb2x2ZXIpIHt9XG5cbiAgaGFzQ29tcG9uZW50SW5TY29wZShuYW1lOiBzdHJpbmcsIHJlZmVycmVyOiBNb2R1bGVMb2NhdG9yKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5yZXNvbHZlci5pZGVudGlmeShgdGVtcGxhdGU6JHtuYW1lfWAsIHJlZmVycmVyLm1vZHVsZSk7XG4gIH1cblxuICByZXNvbHZlQ29tcG9uZW50KG5hbWU6IHN0cmluZywgcmVmZXJyZXI6IE1vZHVsZUxvY2F0b3IpOiBNb2R1bGVMb2NhdG9yIHtcbiAgICBsZXQgcmVzb2x2ZWQgPSB0aGlzLnJlc29sdmVyLmlkZW50aWZ5KGB0ZW1wbGF0ZToke25hbWV9YCwgcmVmZXJyZXIubW9kdWxlKTtcbiAgICByZXR1cm4geyBtb2R1bGU6IHJlc29sdmVkLCBuYW1lOiAnZGVmYXVsdCcgfTtcbiAgfVxuXG4gIGdldENvbXBvbmVudENhcGFiaWxpdGllcygpIHtcbiAgICByZXR1cm4gQ0FQQUJJTElUSUVTO1xuICB9XG5cbiAgaGFzSGVscGVySW5TY29wZShoZWxwZXJOYW1lOiBzdHJpbmcsIHJlZmVycmVyOiBNb2R1bGVMb2NhdG9yKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5yZXNvbHZlci5pZGVudGlmeShgaGVscGVyOiR7aGVscGVyTmFtZX1gLCByZWZlcnJlci5tb2R1bGUpO1xuICB9XG5cbiAgcmVzb2x2ZUhlbHBlcihoZWxwZXJOYW1lOiBzdHJpbmcsIHJlZmVycmVyOiBNb2R1bGVMb2NhdG9yKTogTW9kdWxlTG9jYXRvciB7XG4gICAgbGV0IHJlc29sdmVkID0gdGhpcy5yZXNvbHZlci5pZGVudGlmeShgaGVscGVyOiR7aGVscGVyTmFtZX1gLCByZWZlcnJlci5tb2R1bGUpO1xuICAgIHJldHVybiB7IG1vZHVsZTogcmVzb2x2ZWQsIG5hbWU6ICdkZWZhdWx0JyB9O1xuICB9XG5cbiAgaGFzUGFydGlhbEluU2NvcGUocGFydGlhbE5hbWU6IHN0cmluZywgcmVmZXJyZXI6IE1vZHVsZUxvY2F0b3IpOiBib29sZWFuIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cblxuICByZXNvbHZlUGFydGlhbChwYXJ0aWFsTmFtZTogc3RyaW5nLCByZWZlcnJlcjogTW9kdWxlTG9jYXRvcik6IE1vZHVsZUxvY2F0b3Ige1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuXG4gIGhhc01vZGlmaWVySW5TY29wZShtb2RpZmllck5hbWU6IHN0cmluZywgcmVmZXJyZXI6IE1vZHVsZUxvY2F0b3IpOiBib29sZWFuIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cblxuICByZXNvbHZlTW9kaWZpZXIobW9kaWZpZXJOYW1lOiBzdHJpbmcsIHJlZmVycmVyOiBNb2R1bGVMb2NhdG9yKTogTW9kdWxlTG9jYXRvciB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGJ1aWxkQXBwPFQgZXh0ZW5kcyBUZXN0QXBwbGljYXRpb24+KG9wdGlvbnM6IEFwcEJ1aWxkZXJPcHRpb25zPFQ+ID0ge30pOiBBcHBCdWlsZGVyPFQ+IHtcbiAgb3B0aW9ucy5hcHBOYW1lID0gb3B0aW9ucy5hcHBOYW1lIHx8ICd0ZXN0LWFwcCc7XG4gIG9wdGlvbnMubG9hZGVyID0gb3B0aW9ucy5sb2FkZXIgfHwgJ3J1bnRpbWUtY29tcGlsZXInO1xuICBvcHRpb25zLkNvbXBvbmVudE1hbmFnZXIgPSBvcHRpb25zLkNvbXBvbmVudE1hbmFnZXIgfHwgQ29tcG9uZW50TWFuYWdlcjtcbiAgb3B0aW9ucy5BcHBsaWNhdGlvbkNsYXNzID1cbiAgICBvcHRpb25zLkFwcGxpY2F0aW9uQ2xhc3MgfHwgKFRlc3RBcHBsaWNhdGlvbiBhcyBBcHBsaWNhdGlvbkNvbnN0cnVjdG9yPFQ+KTtcblxuICByZXR1cm4gbmV3IEFwcEJ1aWxkZXIob3B0aW9ucy5hcHBOYW1lLCBvcHRpb25zKTtcbn1cblxuZXhwb3J0IHsgYnVpbGRBcHAgfTtcbiJdLCJzb3VyY2VSb290IjoiIn0= | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2FwcGxpY2F0aW9uLXRlc3QtaGVscGVycy9zcmMvYXBwLWJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBLE9BQU8sUUFBUCxJQUFtQixtQkFBbkIsUUFBcUUsbUJBQXJFO0FBRUEsT0FBTyw0QkFBUCxNQUF5QyxrQ0FBekM7QUFDQSxTQUFTLFVBQVQsUUFBMkIsWUFBM0I7QUFDQSxPQUFPLFdBQVAsSUFFRSxjQUZGLEVBR0UsVUFIRixFQUtFLHFCQUxGLEVBTUUsWUFORixFQVFFLHNCQVJGLFFBU08sc0JBVFA7QUFVQSxTQUFTLGdCQUFULEVBQTJCLFlBQTNCLFFBQStDLG9CQUEvQztBQUNBLFNBQVMsTUFBVCxRQUF1QixlQUF2QjtBQUNBLFNBQVMsY0FBVCxRQUFzRSwwQkFBdEU7QUFDQSxTQUFTLFdBQVQsRUFBc0IsWUFBdEIsUUFBMEMsc0JBQTFDO0FBQ0EsU0FBUyxVQUFULFFBQTJCLDBCQUEzQjtBQUdBLFNBQVMsY0FBVCxRQUErQixjQUEvQjtBQUVBLE9BQU8sU0FBUCxNQUFzQixjQUF0QjtBQWVBLFdBQWEsZUFBYjtBQUFBOztBQUFBO0FBQUE7O0FBQUE7QUFBQTs7QUFBQTtBQUFBLEVBQXFDLFdBQXJDO0FBcUJBLFNBQVMsVUFBVCxDQUFvQixNQUFwQixFQUFvQyxJQUFwQyxFQUFnRDtBQUM5QyxXQUFPO0FBQ0wsY0FBTSxVQUREO0FBRUwsc0JBRks7QUFHTCxrQkFISztBQUlMLGNBQU07QUFDSiwwQkFESTtBQUVKO0FBRkk7QUFKRCxLQUFQO0FBU0Q7O0lBRVksVTtBQU1YLHdCQUFZLElBQVosRUFBMEIsT0FBMUIsRUFBdUQ7QUFBQTs7QUFKdkQsYUFBQSxPQUFBLEdBQXlCLEVBQXpCO0FBQ0EsYUFBQSxTQUFBLEdBQTBCLEVBQTFCO0FBSUUsYUFBSyxRQUFMLEdBQWdCLElBQWhCO0FBQ0EsYUFBSyxPQUFMLEdBQWUsT0FBZjtBQUNBLGFBQUssT0FB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LFNBQTFCLEVBQVA7QUFDRCxLOzsrQkFFRCxpQiw4QkFBa0IsVyxFQUFxQixRLEVBQXVCO0FBQzVELGNBQU0sSUFBSSxLQUFKLENBQVUseUJBQVYsQ0FBTjtBQUNELEs7OytCQUVELGMsMkJBQWUsVyxFQUFxQixRLEVBQXVCO0FBQ3pELGNBQU0sSUFBSSxLQUFKLENBQVUseUJBQVYsQ0FBTjtBQUNELEs7OytCQUVELGtCLCtCQUFtQixZLEVBQXNCLFEsRUFBdUI7QUFDOUQsY0FBTSxJQUFJLEtBQUosQ0FBVSx5QkFBVixDQUFOO0FBQ0QsSzs7K0JBRUQsZSw0QkFBZ0IsWSxFQUFzQixRLEVBQXVCO0FBQzNELGNBQU0sSUFBSSxLQUFKLENBQVUseUJBQVYsQ0FBTjtBQUNELEs7Ozs7O0FBR0gsU0FBUyxRQUFULEdBQStFO0FBQUEsUUFBbEMsT0FBa0MsdUVBQUYsRUFBRTs7QUFDN0UsWUFBUSxPQUFSLEdBQWtCLFFBQVEsT0FBUixJQUFtQixVQUFyQztBQUNBLFlBQVEsTUFBUixHQUFpQixRQUFRLE1BQVIsSUFBa0Isa0JBQW5DO0FBQ0EsWUFBUSxnQkFBUixHQUEyQixRQUFRLGdCQUFSLElBQTRCLGdCQUF2RDtBQUNBLFlBQVEsZ0JBQVIsR0FDRSxRQUFRLGdCQUFSLElBQTZCLGVBRC9CO0FBR0EsV0FBTyxJQUFJLFVBQUosQ0FBZSxRQUFRLE9BQXZCLEVBQWdDLE9BQWhDLENBQVA7QUFDRDtBQUVELFNBQVMsUUFBVCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZXNvbHZlciwgeyBCYXNpY01vZHVsZVJlZ2lzdHJ5LCBSZXNvbHZlckNvbmZpZ3VyYXRpb24gfSBmcm9tICdAZ2xpbW1lci9yZXNvbHZlcic7XG5pbXBvcnQgeyBEaWN0LCBNb2R1bGVMb2NhdG9yLCBUZW1wbGF0ZUxvY2F0b3IgfSBmcm9tICdAZ2xpbW1lci9pbnRlcmZhY2VzJztcbmltcG9ydCBkZWZhdWx0UmVzb2x2ZXJDb25maWd1cmF0aW9uIGZyb20gJy4vZGVmYXVsdC1yZXNvbHZlci1jb25maWd1cmF0aW9uJztcbmltcG9ydCB7IHByZWNvbXBpbGUgfSBmcm9tICcuL2NvbXBpbGVyJztcbmltcG9ydCBBcHBsaWNhdGlvbiwge1xuICBBcHBsaWNhdGlvbkNvbnN0cnVjdG9yLFxuICBCeXRlY29kZUxvYWRlcixcbiAgRE9NQnVpbGRlcixcbiAgTG9hZGVyLFxuICBSdW50aW1lQ29tcGlsZXJMb2FkZXIsXG4gIFN5bmNSZW5kZXJlcixcbiAgTW9kdWxlVHlwZXMsXG4gIElOVEVSTkFMX0RZTkFNSUNfU0NPUEVcbn0gZnJvbSAnQGdsaW1tZXIvYXBwbGljYXRpb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50TWFuYWdlciwgQ0FQQUJJTElUSUVTIH0gZnJvbSAnQGdsaW1tZXIvY29tcG9uZW50JztcbmltcG9ydCB7IGFzc2VydCB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHsgQnVuZGxlQ29tcGlsZXIsIENvbXBpbGVyRGVsZWdhdGUgYXMgSUNvbXBpbGVyRGVsZWdhdGUgfSBmcm9tICdAZ2xpbW1lci9idW5kbGUtY29tcGlsZXInO1xuaW1wb3J0IHsgYnVpbGRBY3Rpb24sIG1haW5UZW1wbGF0ZSB9IGZyb20gJ0BnbGltbWVyL2FwcGxpY2F0aW9uJztcbmltcG9ydCB7IGNvbXBpbGFibGUgfSBmcm9tICdAZ2xpbW1lci9vcGNvZGUtY29tcGlsZXInO1xuaW1wb3J0IHsgTWV0YWRhdGEgfSBmcm9tICcuLi8uLi9hcHBsaWNhdGlvbi9zcmMvbG9hZGVycy9ieXRlY29kZS9sb2FkZXInO1xuaW1wb3J0IHsgU2ltcGxlRG9jdW1lbnQgfSBmcm9tICdAc2ltcGxlLWRvbS9pbnRlcmZhY2UnO1xuaW1wb3J0IHsgU1NSQXBwbGljYXRpb24gfSBmcm9tICdAZ2xpbW1lci9zc3InO1xuXG5pbXBvcnQgZGlkUmVuZGVyIGZyb20gJy4vZGlkLXJlbmRlcic7XG5pbXBvcnQgSFRNTFNlcmlhbGl6ZXIgZnJvbSAnQHNpbXBsZS1kb20vc2VyaWFsaXplcic7XG5pbXBvcnQgeyBSZW5kZXJlciB9IGZyb20gJ0BnbGltbWVyL2FwcGxpY2F0aW9uL3NyYy9iYXNlLWFwcGxpY2F0aW9uJztcblxuZXhwb3J0IGludGVyZmFjZSBBcHBCdWlsZGVyT3B0aW9uczxUPiB7XG4gIGFwcE5hbWU/OiBzdHJpbmc7XG4gIGxvYWRlcj86IHN0cmluZztcbiAgQXBwbGljYXRpb25DbGFzcz86IEFwcGxpY2F0aW9uQ29uc3RydWN0b3I8VD47XG4gIENvbXBvbmVudE1hbmFnZXI/OiBhbnk7IC8vIFRPRE8gLSB0eXBpbmdcbiAgcmVzb2x2ZXJDb25maWd1cmF0aW9uPzogUmVzb2x2ZXJDb25maWd1cmF0aW9uO1xuICBkb2N1bWVudD86IFNpbXBsZURvY3VtZW50O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudEZhY3Rvcnkge31cblxuZXhwb3J0IGNsYXNzIFRlc3RBcHBsaWNhdGlvbiBleHRlbmRzIEFwcGxpY2F0aW9uIHtcbiAgcm9vdEVsZW1lbnQ6IEVsZW1lbnQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXBwQnVpbGRlclRlbXBsYXRlTWV0YSB7XG4gIHNwZWNpZmllcjogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgSGVscGVyRnVuY3Rpb24gZXh0ZW5kcyBGdW5jdGlvbiB7XG4gIGlzRmFjdG9yeT86IGJvb2xlYW47XG59XG5cbmludGVyZmFjZSBUZXN0U1NSQXBwbGljYXRpb25PcHRpb25zIHtcbiAgcm9vdE5hbWU/OiBzdHJpbmc7XG4gIHJlc29sdmVyPzogUmVzb2x2ZXI7XG4gIGxvYWRlcj86IExvYWRlcjtcbiAgcmVuZGVyZXI/OiBSZW5kZXJlcjtcbiAgc2VyaWFsaXplcj86IEhUTUxTZXJpYWxpemVyO1xuICBbSU5URVJOQUxfRFlOQU1JQ19TQ09QRV0/OiBEaWN0PHVua25vd24+O1xufVxuXG5mdW5jdGlvbiBsb2NhdG9yRm9yKG1vZHVsZTogc3RyaW5nLCBuYW1lOiBzdHJpbmcpOiBUZW1wbGF0ZUxvY2F0b3I8TW9kdWxlTG9jYXRvcj4ge1xuICByZXR1cm4ge1xuICAgIGtpbmQ6ICd0ZW1wbGF0ZScsXG4gICAgbW9kdWxlLFxuICAgIG5hbWUsXG4gICAgbWV0YToge1xuICAgICAgbW9kdWxlLFxuICAgICAgbmFtZSxcbiAgICB9LFxuICB9O1xufVxuXG5leHBvcnQgY2xhc3MgQXBwQnVpbGRlcjxUIGV4dGVuZHMgVGVzdEFwcGxpY2F0aW9uPiB7XG4gIHJvb3ROYW1lOiBzdHJpbmc7XG4gIG1vZHVsZXM6IERpY3Q8dW5rbm93bj4gPSB7fTtcbiAgdGVtcGxhdGVzOiBEaWN0PHN0cmluZz4gPSB7fTtcbiAgb3B0aW9uczogQXBwQnVpbGRlck9wdGlvbnM8VD47XG5cbiAgY29uc3RydWN0b3IobmFtZTogc3RyaW5nLCBvcHRpb25zOiBBcHBCdWlsZGVyT3B0aW9uczxUPikge1xuICAgIHRoaXMucm9vdE5hbWUgPSBuYW1lO1xuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgdGhpcy5tb2R1bGVzW1xuICAgICAgYGNvbXBvbmVudC1tYW5hZ2VyOi8ke3RoaXMucm9vdE5hbWV9L2NvbXBvbmVudC1tYW5hZ2Vycy9tYWluYFxuICAgIF0gPSB0aGlzLm9wdGlvbnMuQ29tcG9uZW50TWFuYWdlcjtcbiAgICB0aGlzLnRlbXBsYXRlKCdNYWluJywgJzxkaXYgLz4nKTtcbiAgICB0aGlzLmhlbHBlcignYWN0aW9uJywgYnVpbGRBY3Rpb24sIHRydWUpO1xuICB9XG5cbiAgdGVtcGxhdGUobmFtZTogc3RyaW5nLCB0ZW1wbGF0ZTogc3RyaW5nKSB7XG4gICAgYXNzZXJ0KFxuICAgICAgbmFtZS5jaGFyQXQoMCkgPT09IG5hbWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCksXG4gICAgICAndGVtcGxhdGUgbmFtZXMgbXVzdCBzdGFydCB3aXRoIGEgY2FwaXRhbCBsZXR0ZXInXG4gICAgKTtcblxuICAgIGxldCBzcGVjaWZpZXIgPSBgdGVtcGxhdGU6LyR7dGhpcy5yb290TmFtZX0vY29tcG9uZW50cy8ke25hbWV9YDtcbiAgICB0aGlzLm1vZHVsZXNbc3BlY2lmaWVyXSA9IHByZWNvbXBpbGUodGVtcGxhdGUsIHsgbWV0YTogeyBzcGVjaWZpZXIgfSB9KTtcbiAgICB0aGlzLnRlbXBsYXRlc1tzcGVjaWZpZXJdID0gdGVtcGxhdGU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBjb21wb25lbnQobmFtZTogc3RyaW5nLCBjb21wb25lbnRGYWN0b3J5OiBDb21wb25lbnRGYWN0b3J5KSB7XG4gICAgbGV0IHNwZWNpZmllciA9IGBjb21wb25lbnQ6LyR7dGhpcy5yb290TmFtZX0vY29tcG9uZW50cy8ke25hbWV9YDtcbiAgICB0aGlzLm1vZHVsZXNbc3BlY2lmaWVyXSA9IGNvbXBvbmVudEZhY3Rvcnk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBoZWxwZXIobmFtZTogc3RyaW5nLCBoZWxwZXJGdW5jOiBIZWxwZXJGdW5jdGlvbiwgaXNGYWN0b3J5ID0gZmFsc2UpIHtcbiAgICBsZXQgc3BlY2lmaWVyID0gYGhlbHBlcjovJHt0aGlzLnJvb3ROYW1lfS9jb21wb25lbnRzLyR7bmFtZX1gO1xuICAgIGhlbHBlckZ1bmMuaXNGYWN0b3J5ID0gaXNGYWN0b3J5O1xuICAgIHRoaXMubW9kdWxlc1tzcGVjaWZpZXJdID0gaGVscGVyRnVuYztcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHByb3RlY3RlZCBidWlsZFJlc29sdmVyKCk6IFJlc29sdmVyIHtcbiAgICBsZXQgcmVzb2x2ZXJDb25maWd1cmF0aW9uID0gdGhpcy5vcHRpb25zLnJlc29sdmVyQ29uZmlndXJhdGlvbiB8fCBkZWZhdWx0UmVzb2x2ZXJDb25maWd1cmF0aW9uO1xuICAgIHJlc29sdmVyQ29uZmlndXJhdGlvbi5hcHAgPSByZXNvbHZlckNvbmZpZ3VyYXRpb24uYXBwIHx8IHtcbiAgICAgIG5hbWU6IHRoaXMucm9vdE5hbWUsXG4gICAgICByb290TmFtZTogdGhpcy5yb290TmFtZSxcbiAgICB9O1xuXG4gICAgbGV0IHJlZ2lzdHJ5ID0gbmV3IEJhc2ljTW9kdWxlUmVnaXN0cnkodGhpcy5tb2R1bGVzKTtcbiAgICByZXR1cm4gbmV3IFJlc29sdmVyKHJlc29sdmVyQ29uZmlndXJhdGlvbiwgcmVnaXN0cnkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGJ1aWxkUnVudGltZUNvbXBpbGVyTG9hZGVyKCk6IExvYWRlciB7XG4gICAgcmV0dXJuIG5ldyBSdW50aW1lQ29tcGlsZXJMb2FkZXIoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBidWlsZEJ5dGVjb2RlTG9hZGVyKHJlc29sdmVyOiBSZXNvbHZlcikge1xuICAgIGxldCBkZWxlZ2F0ZSA9IG5ldyBDb21waWxlckRlbGVnYXRlKHJlc29sdmVyKTtcbiAgICBsZXQgY29tcGlsZXIgPSBuZXcgQnVuZGxlQ29tcGlsZXIoZGVsZWdhdGUpO1xuXG4gICAgbGV0IG1haW5Mb2NhdG9yID0gbG9jYXRvckZvcigndGVtcGxhdGU6bWFpblRlbXBsYXRlJywgJ2RlZmF1bHQnKTtcbiAgICBtYWluTG9jYXRvci5tZXRhLm1vZHVsZSA9ICd0ZW1wbGF0ZTptYWluVGVtcGxhdGUnO1xuXG4gICAgbGV0IGJsb2NrID0gSlNPTi5wYXJzZShtYWluVGVtcGxhdGUuYmxvY2spO1xuICAgIGxldCBjb21waWxhYmxlVGVtcGxhdGUgPSBjb21waWxhYmxlKHtcbiAgICAgIGJsb2NrLFxuICAgICAgcmVmZXJyZXI6IG1haW5Mb2NhdG9yLm1ldGEsXG4gICAgfSk7XG5cbiAgICBjb21waWxlci5hZGRDb21waWxhYmxlVGVtcGxhdGUobWFpbkxvY2F0b3IsIGNvbXBpbGFibGVUZW1wbGF0ZSk7XG5cbiAgICBmb3IgKGxldCBtb2R1bGUgaW4gdGhpcy50ZW1wbGF0ZXMpIHtcbiAgICAgIGNvbXBpbGVyLmFkZFRlbXBsYXRlU291cmNlKGxvY2F0b3JGb3IobW9kdWxlLCAnZGVmYXVsdCcpLCB0aGlzLnRlbXBsYXRlc1ttb2R1bGVdKTtcbiAgICB9XG5cbiAgICBsZXQgeyBoZWFwLCBwb29sLCB0YWJsZSB9ID0gY29tcGlsZXIuY29tcGlsZSgpO1xuXG4gICAgbGV0IHJlc29sdmVyVGFibGU6IHVua25vd25bXSA9IFtdO1xuXG4gICAgbGV0IG1ldGE6IERpY3Q8TWV0YWRhdGE+ID0ge307XG5cbiAgICB0YWJsZS52bUhhbmRsZUJ5TW9kdWxlTG9jYXRvci5mb3JFYWNoKCh2bUhhbmRsZSwgbG9jYXRvcikgPT4ge1xuICAgICAgbGV0IGhhbmRsZSA9IHRhYmxlLmJ5TW9kdWxlTG9jYXRvci5nZXQobG9jYXRvcik7XG4gICAgICBsZXQgdGVtcGxhdGUgPSBjb21waWxlci5nZXRUZW1wbGF0ZShsb2NhdG9yKTtcblxuICAgICAgbWV0YVtsb2NhdG9yLm1vZHVsZV0gPSB7XG4gICAgICAgIHY6IHZtSGFuZGxlLFxuICAgICAgICBoOiBoYW5kbGUsXG4gICAgICAgIHRhYmxlOiB0ZW1wbGF0ZS5zeW1ib2xUYWJsZSxcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICB0YWJsZS5ieUhhbmRsZS5mb3JFYWNoKChsb2NhdG9yLCBoYW5kbGUpID0+IHtcbiAgICAgIGxldCBtb2R1bGUgPSBsb2NhdG9yLm1vZHVsZS5yZXBsYWNlKCd0ZW1wbGF0ZTovJywgJ2NvbXBvbmVudDovJyk7XG4gICAgICBpZiAodGhpcy5tb2R1bGVzW21vZHVsZV0pIHtcbiAgICAgICAgaWYgKG1vZHVsZS5pbmRleE9mKCdoZWxwZXI6JykgPT09IDApIHtcbiAgICAgICAgICBjb25zdCBtb2R1bGVUeXBlID0gKHRoaXMubW9kdWxlc1ttb2R1bGVdIGFzIEhlbHBlckZ1bmN0aW9uKS5pc0ZhY3RvcnkgPyBNb2R1bGVUeXBlcy5IRUxQRVJfRkFDVE9SWSA6IE1vZHVsZVR5cGVzLkhFTFBFUjtcbiAgICAgICAgICByZXNvbHZlclRhYmxlW2hhbmRsZV0gPSBbbW9kdWxlVHlwZSwgdGhpcy5tb2R1bGVzW21vZHVsZV1dO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc29sdmVyVGFibGVbaGFuZGxlXSA9IHRoaXMubW9kdWxlc1ttb2R1bGVdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBsZXQgYnl0ZWNvZGUgPSBoZWFwLmJ1ZmZlcjtcbiAgICBsZXQgZGF0YSA9IHtcbiAgICAgIHByZWZpeDogJycsXG4gICAgICBtYWluRW50cnk6IHRhYmxlLnZtSGFuZGxlQnlNb2R1bGVMb2NhdG9yLmdldChtYWluTG9jYXRvciksXG4gICAgICBwb29sLFxuICAgICAgdGFibGU6IHJlc29sdmVyVGFibGUsXG4gICAgICBtZXRhLFxuICAgICAgaGVhcDoge1xuICAgICAgICB0YWJsZTogaGVhcC50YWJsZSxcbiAgICAgICAgaGFuZGxlOiBoZWFwLmhhbmRsZSxcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIHJldHVybiBuZXcgQnl0ZWNvZGVMb2FkZXIoeyBieXRlY29kZSwgZGF0YSB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBidWlsZExvYWRlcihyZXNvbHZlcik6IExvYWRlciB7XG4gICAgc3dpdGNoICh0aGlzLm9wdGlvbnMubG9hZGVyKSB7XG4gICAgICBjYXNlICdydW50aW1lLWNvbXBpbGVyJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuYnVpbGRSdW50aW1lQ29tcGlsZXJMb2FkZXIoKTtcbiAgICAgIGNhc2UgJ2J5dGVjb2RlJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuYnVpbGRCeXRlY29kZUxvYWRlcihyZXNvbHZlcik7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVucmVjb2duaXplZCBsb2FkZXIgJHt0aGlzLm9wdGlvbnMubG9hZGVyfWApO1xuICAgIH1cbiAgfVxuXG4gIHJlbmRlclRvU3RyaW5nKGNvbXBvbmVudE5hbWU6IHN0cmluZywgZGF0YTogRGljdDx1bmtub3duPiwgb3B0aW9ucz86IFRlc3RTU1JBcHBsaWNhdGlvbk9wdGlvbnMpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IHJlc29sdmVyID0gdGhpcy5idWlsZFJlc29sdmVyKCk7XG4gICAgbGV0IGxvYWRlciA9IHRoaXMuYnVpbGRMb2FkZXIocmVzb2x2ZXIpO1xuXG4gICAgcmV0dXJuIFNTUkFwcGxpY2F0aW9uLnJlbmRlclRvU3RyaW5nKGNvbXBvbmVudE5hbWUsIGRhdGEsIHtcbiAgICAgIHJvb3ROYW1lOiB0aGlzLnJvb3ROYW1lLFxuICAgICAgcmVzb2x2ZXIsXG4gICAgICBsb2FkZXIsXG4gICAgICByZW5kZXJlcjogbmV3IFN5bmNSZW5kZXJlcigpLFxuICAgICAgLi4ub3B0aW9uc1xuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgYm9vdCgpOiBQcm9taXNlPFQ+IHtcbiAgICBsZXQgcmVzb2x2ZXIgPSB0aGlzLmJ1aWxkUmVzb2x2ZXIoKTtcbiAgICBsZXQgbG9hZGVyOiBMb2FkZXIgPSB0aGlzLmJ1aWxkTG9hZGVyKHJlc29sdmVyKTtcblxuICAgIGxldCBkb2M6IERvY3VtZW50ID0gKHRoaXMub3B0aW9ucy5kb2N1bWVudCBhcyBEb2N1bWVudCkgfHwgZG9jdW1lbnQ7XG4gICAgbGV0IGVsZW1lbnQgPSBkb2MuYm9keTtcbiAgICBsZXQgYnVpbGRlciA9IG5ldyBET01CdWlsZGVyKHsgZWxlbWVudCB9KTtcbiAgICBsZXQgcmVuZGVyZXIgPSBuZXcgU3luY1JlbmRlcmVyKCk7XG5cbiAgICBsZXQgYXBwID0gbmV3IHRoaXMub3B0aW9ucy5BcHBsaWNhdGlvbkNsYXNzKHtcbiAgICAgIHJlc29sdmVyLFxuICAgICAgYnVpbGRlcixcbiAgICAgIGxvYWRlcixcbiAgICAgIHJlbmRlcmVyLFxuICAgICAgcm9vdE5hbWU6IHRoaXMucm9vdE5hbWUsXG4gICAgICBkb2N1bWVudDogdGhpcy5vcHRpb25zLmRvY3VtZW50LFxuICAgIH0pO1xuXG4gICAgbGV0IHJvb3RFbGVtZW50ID0gZG9jLmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIGFwcC5yb290RWxlbWVudCA9IHJvb3RFbGVtZW50O1xuICAgIGFwcC5yZW5kZXJDb21wb25lbnQoJ01haW4nLCByb290RWxlbWVudCk7XG4gICAgYXBwLmJvb3QoKTtcblxuICAgIGF3YWl0IGRpZFJlbmRlcihhcHApO1xuXG4gICAgcmV0dXJuIGFwcDtcbiAgfVxufVxuXG5jbGFzcyBDb21waWxlckRlbGVnYXRlIGltcGxlbWVudHMgSUNvbXBpbGVyRGVsZWdhdGU8TW9kdWxlTG9jYXRvcj4ge1xuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgcmVzb2x2ZXI6IFJlc29sdmVyKSB7fVxuXG4gIGhhc0NvbXBvbmVudEluU2NvcGUobmFtZTogc3RyaW5nLCByZWZlcnJlcjogTW9kdWxlTG9jYXRvcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMucmVzb2x2ZXIuaWRlbnRpZnkoYHRlbXBsYXRlOiR7bmFtZX1gLCByZWZlcnJlci5tb2R1bGUpO1xuICB9XG5cbiAgcmVzb2x2ZUNvbXBvbmVudChuYW1lOiBzdHJpbmcsIHJlZmVycmVyOiBNb2R1bGVMb2NhdG9yKTogTW9kdWxlTG9jYXRvciB7XG4gICAgbGV0IHJlc29sdmVkID0gdGhpcy5yZXNvbHZlci5pZGVudGlmeShgdGVtcGxhdGU6JHtuYW1lfWAsIHJlZmVycmVyLm1vZHVsZSk7XG4gICAgcmV0dXJuIHsgbW9kdWxlOiByZXNvbHZlZCwgbmFtZTogJ2RlZmF1bHQnIH07XG4gIH1cblxuICBnZXRDb21wb25lbnRDYXBhYmlsaXRpZXMoKSB7XG4gICAgcmV0dXJuIENBUEFCSUxJVElFUztcbiAgfVxuXG4gIGhhc0hlbHBlckluU2NvcGUoaGVscGVyTmFtZTogc3RyaW5nLCByZWZlcnJlcjogTW9kdWxlTG9jYXRvcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMucmVzb2x2ZXIuaWRlbnRpZnkoYGhlbHBlcjoke2hlbHBlck5hbWV9YCwgcmVmZXJyZXIubW9kdWxlKTtcbiAgfVxuXG4gIHJlc29sdmVIZWxwZXIoaGVscGVyTmFtZTogc3RyaW5nLCByZWZlcnJlcjogTW9kdWxlTG9jYXRvcik6IE1vZHVsZUxvY2F0b3Ige1xuICAgIGxldCByZXNvbHZlZCA9IHRoaXMucmVzb2x2ZXIuaWRlbnRpZnkoYGhlbHBlcjoke2hlbHBlck5hbWV9YCwgcmVmZXJyZXIubW9kdWxlKTtcbiAgICByZXR1cm4geyBtb2R1bGU6IHJlc29sdmVkLCBuYW1lOiAnZGVmYXVsdCcgfTtcbiAgfVxuXG4gIGhhc1BhcnRpYWxJblNjb3BlKHBhcnRpYWxOYW1lOiBzdHJpbmcsIHJlZmVycmVyOiBNb2R1bGVMb2NhdG9yKTogYm9vbGVhbiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgcmVzb2x2ZVBhcnRpYWwocGFydGlhbE5hbWU6IHN0cmluZywgcmVmZXJyZXI6IE1vZHVsZUxvY2F0b3IpOiBNb2R1bGVMb2NhdG9yIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cblxuICBoYXNNb2RpZmllckluU2NvcGUobW9kaWZpZXJOYW1lOiBzdHJpbmcsIHJlZmVycmVyOiBNb2R1bGVMb2NhdG9yKTogYm9vbGVhbiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgcmVzb2x2ZU1vZGlmaWVyKG1vZGlmaWVyTmFtZTogc3RyaW5nLCByZWZlcnJlcjogTW9kdWxlTG9jYXRvcik6IE1vZHVsZUxvY2F0b3Ige1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBidWlsZEFwcDxUIGV4dGVuZHMgVGVzdEFwcGxpY2F0aW9uPihvcHRpb25zOiBBcHBCdWlsZGVyT3B0aW9uczxUPiA9IHt9KTogQXBwQnVpbGRlcjxUPiB7XG4gIG9wdGlvbnMuYXBwTmFtZSA9IG9wdGlvbnMuYXBwTmFtZSB8fCAndGVzdC1hcHAnO1xuICBvcHRpb25zLmxvYWRlciA9IG9wdGlvbnMubG9hZGVyIHx8ICdydW50aW1lLWNvbXBpbGVyJztcbiAgb3B0aW9ucy5Db21wb25lbnRNYW5hZ2VyID0gb3B0aW9ucy5Db21wb25lbnRNYW5hZ2VyIHx8IENvbXBvbmVudE1hbmFnZXI7XG4gIG9wdGlvbnMuQXBwbGljYXRpb25DbGFzcyA9XG4gICAgb3B0aW9ucy5BcHBsaWNhdGlvbkNsYXNzIHx8IChUZXN0QXBwbGljYXRpb24gYXMgQXBwbGljYXRpb25Db25zdHJ1Y3RvcjxUPik7XG5cbiAgcmV0dXJuIG5ldyBBcHBCdWlsZGVyKG9wdGlvbnMuYXBwTmFtZSwgb3B0aW9ucyk7XG59XG5cbmV4cG9ydCB7IGJ1aWxkQXBwIH07XG4iXSwic291cmNlUm9vdCI6IiJ9 |
@@ -5,2 +5,4 @@ import Resolver, { ResolverConfiguration } from '@glimmer/resolver'; | ||
import { SimpleDocument } from '@simple-dom/interface'; | ||
import HTMLSerializer from '@simple-dom/serializer'; | ||
import { Renderer } from '@glimmer/application/src/base-application'; | ||
export interface AppBuilderOptions<T> { | ||
@@ -25,2 +27,10 @@ appName?: string; | ||
} | ||
interface TestSSRApplicationOptions { | ||
rootName?: string; | ||
resolver?: Resolver; | ||
loader?: Loader; | ||
renderer?: Renderer; | ||
serializer?: HTMLSerializer; | ||
[INTERNAL_DYNAMIC_SCOPE]?: Dict<unknown>; | ||
} | ||
export declare class AppBuilder<T extends TestApplication> { | ||
@@ -39,5 +49,3 @@ rootName: string; | ||
protected buildLoader(resolver: any): Loader; | ||
renderToString(componentName: string, data: Dict<unknown>, options?: { | ||
[INTERNAL_DYNAMIC_SCOPE]: Dict<unknown>; | ||
}): Promise<string>; | ||
renderToString(componentName: string, data: Dict<unknown>, options?: TestSSRApplicationOptions): Promise<string>; | ||
boot(): Promise<T>; | ||
@@ -44,0 +52,0 @@ } |
{ | ||
"name": "@glimmer/application-test-helpers", | ||
"version": "0.14.0-alpha.8", | ||
"version": "0.14.0-alpha.9", | ||
"description": "Test helpers for developing @glimmer/component and @glimmer/application", | ||
@@ -5,0 +5,0 @@ "contributors": [ |
211093
1976