israeli-bank-scrapers 2.2.1 → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -129,11 +129,12 @@ function convertTransactions(txns, processedDate) {
|
|
|
129
129
|
const isOutbound = txn.dealSumOutbound;
|
|
130
130
|
const txnDateStr = isOutbound ? txn.fullPurchaseDateOutbound : txn.fullPurchaseDate;
|
|
131
131
|
const txnMoment = (0, _moment.default)(txnDateStr, DATE_FORMAT);
|
|
132
|
+
const currentProcessedDate = txn.fullPaymentDate ? (0, _moment.default)(txn.fullPaymentDate, DATE_FORMAT).toISOString() : processedDate;
|
|
132
133
|
const result = {
|
|
133
134
|
type: getTransactionType(txn),
|
|
134
135
|
identifier: parseInt(isOutbound ? txn.voucherNumberRatzOutbound : txn.voucherNumberRatz, 10),
|
|
135
136
|
date: txnMoment.toISOString(),
|
|
136
|
-
processedDate,
|
|
137
|
+
processedDate: currentProcessedDate,
|
|
137
138
|
originalAmount: isOutbound ? -txn.dealSumOutbound : -txn.dealSum,
|
|
138
139
|
originalCurrency: convertCurrency(txn.currencyId),
|
|
139
140
|
chargedAmount: isOutbound ? -txn.paymentSumOutbound : -txn.paymentSum,
|
|
@@ -337,4 +338,4 @@ class IsracardAmexBaseScraper extends _baseScraperWithBrowser.BaseScraperWithBro
|
|
|
337
338
|
|
|
338
339
|
var _default = IsracardAmexBaseScraper;
|
|
339
340
|
exports.default = _default;
|
|
340
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JhcGVycy9iYXNlLWlzcmFjYXJkLWFtZXgudHMiXSwibmFtZXMiOlsiQ09VTlRSWV9DT0RFIiwiSURfVFlQRSIsIklOU1RBTExNRU5UU19LRVlXT1JEIiwiREFURV9GT1JNQVQiLCJkZWJ1ZyIsImdldEFjY291bnRzVXJsIiwic2VydmljZXNVcmwiLCJtb250aE1vbWVudCIsImJpbGxpbmdEYXRlIiwiZm9ybWF0IiwicXVlcnlQYXJhbXMiLCJyZXFOYW1lIiwiYWN0aW9uQ29kZSIsImZldGNoQWNjb3VudHMiLCJwYWdlIiwiZGF0YVVybCIsImRhdGFSZXN1bHQiLCJfIiwiZ2V0IiwiRGFzaGJvYXJkTW9udGhCZWFuIiwiY2FyZHNDaGFyZ2VzIiwibWFwIiwiY2FyZENoYXJnZSIsImluZGV4IiwicGFyc2VJbnQiLCJjYXJkSW5kZXgiLCJhY2NvdW50TnVtYmVyIiwiY2FyZE51bWJlciIsInByb2Nlc3NlZERhdGUiLCJ0b0lTT1N0cmluZyIsImdldFRyYW5zYWN0aW9uc1VybCIsIm1vbnRoIiwieWVhciIsIm1vbnRoU3RyIiwidG9TdHJpbmciLCJyZXF1aXJlZERhdGUiLCJjb252ZXJ0Q3VycmVuY3kiLCJjdXJyZW5jeVN0ciIsIlNIRUtFTF9DVVJSRU5DWV9LRVlXT1JEIiwiQUxUX1NIRUtFTF9DVVJSRU5DWSIsIlNIRUtFTF9DVVJSRU5DWSIsImdldEluc3RhbGxtZW50c0luZm8iLCJ0eG4iLCJtb3JlSW5mbyIsImluY2x1ZGVzIiwidW5kZWZpbmVkIiwibWF0Y2hlcyIsIm1hdGNoIiwibGVuZ3RoIiwibnVtYmVyIiwidG90YWwiLCJnZXRUcmFuc2FjdGlvblR5cGUiLCJUcmFuc2FjdGlvblR5cGVzIiwiSW5zdGFsbG1lbnRzIiwiTm9ybWFsIiwiY29udmVydFRyYW5zYWN0aW9ucyIsInR4bnMiLCJmaWx0ZXJlZFR4bnMiLCJmaWx0ZXIiLCJkZWFsU3VtVHlwZSIsInZvdWNoZXJOdW1iZXJSYXR6Iiwidm91Y2hlck51bWJlclJhdHpPdXRib3VuZCIsImlzT3V0Ym91bmQiLCJkZWFsU3VtT3V0Ym91bmQiLCJ0eG5EYXRlU3RyIiwiZnVsbFB1cmNoYXNlRGF0ZU91dGJvdW5kIiwiZnVsbFB1cmNoYXNlRGF0ZSIsInR4bk1vbWVudCIsInJlc3VsdCIsInR5cGUiLCJpZGVudGlmaWVyIiwiZGF0ZSIsIm9yaWdpbmFsQW1vdW50IiwiZGVhbFN1bSIsIm9yaWdpbmFsQ3VycmVuY3kiLCJjdXJyZW5jeUlkIiwiY2hhcmdlZEFtb3VudCIsInBheW1lbnRTdW1PdXRib3VuZCIsInBheW1lbnRTdW0iLCJkZXNjcmlwdGlvbiIsImZ1bGxTdXBwbGllck5hbWVPdXRib3VuZCIsImZ1bGxTdXBwbGllck5hbWVIZWIiLCJtZW1vIiwiaW5zdGFsbG1lbnRzIiwic3RhdHVzIiwiVHJhbnNhY3Rpb25TdGF0dXNlcyIsIkNvbXBsZXRlZCIsImZldGNoVHJhbnNhY3Rpb25zIiwib3B0aW9ucyIsInN0YXJ0TW9tZW50IiwiYWNjb3VudHMiLCJDYXJkc1RyYW5zYWN0aW9uc0xpc3RCZWFuIiwiYWNjb3VudFR4bnMiLCJmb3JFYWNoIiwiYWNjb3VudCIsInR4bkdyb3VwcyIsImFsbFR4bnMiLCJ0eG5Hcm91cCIsInR4bklzcmFlbCIsInB1c2giLCJ0eG5BYnJvYWQiLCJjb21iaW5lSW5zdGFsbG1lbnRzIiwiZmV0Y2hBbGxUcmFuc2FjdGlvbnMiLCJmdXR1cmVNb250aHNUb1NjcmFwZSIsImFsbE1vbnRocyIsInJlc3VsdHMiLCJQcm9taXNlIiwiYWxsIiwiY29tYmluZWRUeG5zIiwiT2JqZWN0Iiwia2V5cyIsInR4bnNGb3JBY2NvdW50IiwidG9CZUFkZGVkVHhucyIsInN1Y2Nlc3MiLCJJc3JhY2FyZEFtZXhCYXNlU2NyYXBlciIsIkJhc2VTY3JhcGVyV2l0aEJyb3dzZXIiLCJjb25zdHJ1Y3RvciIsImJhc2VVcmwiLCJjb21wYW55Q29kZSIsImxvZ2luIiwiY3JlZGVudGlhbHMiLCJzZXRSZXF1ZXN0SW50ZXJjZXB0aW9uIiwib24iLCJyZXF1ZXN0IiwidXJsIiwiYWJvcnQiLCJjb250aW51ZSIsIm5hdmlnYXRlVG8iLCJlbWl0UHJvZ3Jlc3MiLCJTY2FwZXJQcm9ncmVzc1R5cGVzIiwiTG9nZ2luZ0luIiwidmFsaWRhdGVVcmwiLCJ2YWxpZGF0ZVJlcXVlc3QiLCJpZCIsImNhcmRTdWZmaXgiLCJjYXJkNkRpZ2l0cyIsImNvdW50cnlDb2RlIiwiaWRUeXBlIiwiY2hlY2tMZXZlbCIsInZhbGlkYXRlUmVzdWx0IiwiSGVhZGVyIiwiU3RhdHVzIiwiVmFsaWRhdGVJZERhdGFCZWFuIiwiRXJyb3IiLCJ2YWxpZGF0ZVJldHVybkNvZGUiLCJyZXR1cm5Db2RlIiwidXNlck5hbWUiLCJsb2dpblVybCIsIktvZE1pc2h0YW1lc2giLCJNaXNwYXJaaWh1eSIsIlNpc21hIiwicGFzc3dvcmQiLCJsb2dpblJlc3VsdCIsIkxvZ2luU3VjY2VzcyIsIkNoYW5nZVBhc3N3b3JkIiwiZXJyb3JUeXBlIiwiU2NyYXBlckVycm9yVHlwZXMiLCJMb2dpbkZhaWxlZCIsIkludmFsaWRQYXNzd29yZCIsImZldGNoRGF0YSIsImRlZmF1bHRTdGFydE1vbWVudCIsInN1YnRyYWN0Iiwic3RhcnREYXRlIiwidG9EYXRlIiwibW9tZW50IiwibWF4Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUdBOztBQUNBOztBQUNBOztBQUtBOztBQUNBOztBQUNBOztBQUlBOztBQUtBOzs7Ozs7Ozs7O0FBRUEsTUFBTUEsWUFBWSxHQUFHLEtBQXJCO0FBQ0EsTUFBTUMsT0FBTyxHQUFHLEdBQWhCO0FBQ0EsTUFBTUMsb0JBQW9CLEdBQUcsT0FBN0I7QUFFQSxNQUFNQyxXQUFXLEdBQUcsWUFBcEI7QUFFQSxNQUFNQyxLQUFLLEdBQUcscUJBQVMsb0JBQVQsQ0FBZDs7QUFxRUEsU0FBU0MsY0FBVCxDQUF3QkMsV0FBeEIsRUFBNkNDLFdBQTdDLEVBQWtFO0FBQ2hFLFFBQU1DLFdBQVcsR0FBR0QsV0FBVyxDQUFDRSxNQUFaLENBQW1CLFlBQW5CLENBQXBCO0FBQ0Es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QixjQUF0QztBQUNBLGFBQU87QUFDTHpDLFFBQUFBLE9BQU8sRUFBRSxLQURKO0FBRUwwQyxRQUFBQSxTQUFTLEVBQUVDLCtCQUFrQkY7QUFGeEIsT0FBUDtBQUlEOztBQUVELFNBQUsxQixZQUFMLENBQWtCQyxpQ0FBb0I0QixXQUF0QztBQUNBLFdBQU87QUFDTDVDLE1BQUFBLE9BQU8sRUFBRSxLQURKO0FBRUwwQyxNQUFBQSxTQUFTLEVBQUVDLCtCQUFrQkU7QUFGeEIsS0FBUDtBQUlEOztBQUVELFFBQU1DLFNBQU4sR0FBa0I7QUFDaEIsVUFBTUMsa0JBQWtCLEdBQUcsdUJBQVNDLFFBQVQsQ0FBa0IsQ0FBbEIsRUFBcUIsT0FBckIsQ0FBM0I7QUFDQSxVQUFNQyxTQUFTLEdBQUcsS0FBSzFFLE9BQUwsQ0FBYTBFLFNBQWIsSUFBMEJGLGtCQUFrQixDQUFDRyxNQUFuQixFQUE1Qzs7QUFDQSxVQUFNMUUsV0FBVyxHQUFHMkUsZ0JBQU9DLEdBQVAsQ0FBV0wsa0JBQVgsRUFBK0IscUJBQU9FLFNBQVAsQ0FBL0IsQ0FBcEI7O0FBRUEsV0FBTzVELG9CQUFvQixDQUFDLEtBQUt4RixJQUFOLG9CQUN0QixLQUFLMEUsT0FEaUI7QUFFekJsRixNQUFBQSxXQUFXLEVBQUUsS0FBS0EsV0FGTztBQUd6QmdILE1BQUFBLFdBQVcsRUFBRSxLQUFLQTtBQUhPLFFBSXhCN0IsV0FKd0IsQ0FBM0I7QUFLRDs7QUEzRzBEOztlQThHOUN5Qix1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgYnVpbGRVcmwgZnJvbSAnYnVpbGQtdXJsJztcbmltcG9ydCBtb21lbnQsIHsgTW9tZW50IH0gZnJvbSAnbW9tZW50JztcblxuaW1wb3J0IHsgUGFnZSB9IGZyb20gJ3B1cHBldGVlcic7XG5pbXBvcnQgeyBCYXNlU2NyYXBlcldpdGhCcm93c2VyIH0gZnJvbSAnLi9iYXNlLXNjcmFwZXItd2l0aC1icm93c2VyJztcbmltcG9ydCB7IGZldGNoR2V0V2l0aGluUGFnZSwgZmV0Y2hQb3N0V2l0aGluUGFnZSB9IGZyb20gJy4uL2hlbHBlcnMvZmV0Y2gnO1xuaW1wb3J0IHtcbiAgU0hFS0VMX0NVUlJFTkNZX0tFWVdPUkQsXG4gIFNIRUtFTF9DVVJSRU5DWSxcbiAgQUxUX1NIRUtFTF9DVVJSRU5DWSxcbn0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCBnZXRBbGxNb250aE1vbWVudHMgZnJvbSAnLi4vaGVscGVycy9kYXRlcyc7XG5pbXBvcnQgeyBmaXhJbnN0YWxsbWVudHMsIGZpbHRlck9sZFRyYW5zYWN0aW9ucyB9IGZyb20gJy4uL2hlbHBlcnMvdHJhbnNhY3Rpb25zJztcbmltcG9ydCB7XG4gIFRyYW5zYWN0aW9uc0FjY291bnQsIFRyYW5zYWN0aW9uLCBUcmFuc2FjdGlvbkluc3RhbGxtZW50cyxcbiAgVHJhbnNhY3Rpb25TdGF0dXNlcywgVHJhbnNhY3Rpb25UeXBlcyxcbn0gZnJvbSAnLi4vdHJhbnNhY3Rpb25zJztcbmltcG9ydCB7XG4gIFNjcmFwZXJFcnJvclR5cGVzLFxuICBTY3JhcGVyT3B0aW9ucywgU2NhcGVyU2NyYXBpbmdSZXN1bHQsIFNjYXBlclByb2dyZXNzVHlwZXMsXG4gIFNjcmFwZXJDcmVkZW50aWFscyxcbn0gZnJvbSAnLi9iYXNlLXNjcmFwZXInO1xuaW1wb3J0IHsgZ2V0RGVidWcgfSBmcm9tICcuLi9oZWxwZXJzL2RlYnVnJztcblxuY29uc3QgQ09VTlRSWV9DT0RFID0gJzIxMic7XG5jb25zdCBJRF9UWVBFID0gJzEnO1xuY29uc3QgSU5TVEFMTE1FTlRTX0tFWVdPUkQgPSAn16rXqdec15XXnSc7XG5cbmNvbnN0IERBVEVfRk9STUFUID0gJ0REL01NL1lZWVknO1xuXG5jb25zdCBkZWJ1ZyA9IGdldERlYnVnKCdiYXNlLWlzcmFjYXJkLWFtZXgnKTtcblxuaW50ZXJmYWNlIEV4dGVuZGVkU2NyYXBlck9wdGlvbnMgZXh0ZW5kcyBTY3JhcGVyT3B0aW9ucyB7XG4gIHNlcnZpY2VzVXJsOiBzdHJpbmc7XG4gIGNvbXBhbnlDb2RlOiBzdHJpbmc7XG59XG5cbnR5cGUgU2NyYXBlZEFjY291bnRzV2l0aEluZGV4ID0gUmVjb3JkPHN0cmluZywgVHJhbnNhY3Rpb25zQWNjb3VudCAmIHsgaW5kZXg6IG51bWJlciB9PjtcblxuaW50ZXJmYWNlIFNjcmFwZWRUcmFuc2FjdGlvbiB7XG4gIGRlYWxTdW1UeXBlOiBzdHJpbmc7XG4gIHZvdWNoZXJOdW1iZXJSYXR6T3V0Ym91bmQ6IHN0cmluZztcbiAgdm91Y2hlck51bWJlclJhdHo6IHN0cmluZztcbiAgbW9yZUluZm8/OiBzdHJpbmc7XG4gIGRlYWxTdW1PdXRib3VuZDogYm9vbGVhbjtcbiAgY3VycmVuY3lJZDogc3RyaW5nO1xuICBkZWFsU3VtOiBudW1iZXI7XG4gIGZ1bGxQdXJjaGFzZURhdGU/OiBzdHJpbmc7XG4gIGZ1bGxQdXJjaGFzZURhdGVPdXRib3VuZD86IHN0cmluZztcbiAgZnVsbFN1cHBsaWVyTmFtZUhlYjogc3RyaW5nO1xuICBmdWxsU3VwcGxpZXJOYW1lT3V0Ym91bmQ6IHN0cmluZztcbiAgcGF5bWVudFN1bTogbnVtYmVyO1xuICBwYXltZW50U3VtT3V0Ym91bmQ6IG51bWJlcjtcbn1cblxuXG5pbnRlcmZhY2UgU2NyYXBlZEFjY291bnQge1xuICBpbmRleDogbnVtYmVyO1xuICBhY2NvdW50TnVtYmVyOiBzdHJpbmc7XG4gIHByb2Nlc3NlZERhdGU6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIFNjcmFwZWRMb2dpblZhbGlkYXRpb24ge1xuICBIZWFkZXI6IHtcbiAgICBTdGF0dXM6IHN0cmluZztcbiAgfTtcbiAgVmFsaWRhdGVJZERhdGFCZWFuPzoge1xuICAgIHVzZXJOYW1lPzogc3RyaW5nO1xuICAgIHJldHVybkNvZGU6IHN0cmluZztcbiAgfTtcbn1cblxuaW50ZXJmYWNlIFNjcmFwZWRBY2NvdW50c1dpdGhpblBhZ2VSZXNwb25zZSB7XG4gIEhlYWRlcjoge1xuICAgIFN0YXR1czogc3RyaW5nO1xuICB9O1xuICBEYXNoYm9hcmRNb250aEJlYW4/OiB7XG4gICAgY2FyZHNDaGFyZ2VzOiB7XG4gICAgICBjYXJkSW5kZXg6IHN0cmluZztcbiAgICAgIGNhcmROdW1iZXI6IHN0cmluZztcbiAgICAgIGJpbGxpbmdEYXRlOiBzdHJpbmc7XG4gICAgfVtdO1xuICB9O1xufVxuXG5pbnRlcmZhY2UgU2NyYXBlZEN1cnJlbnRDYXJkVHJhbnNhY3Rpb25zIHtcbiAgdHhuSXNyYWVsPzogU2NyYXBlZFRyYW5zYWN0aW9uW107XG4gIHR4bkFicm9hZD86IFNjcmFwZWRUcmFuc2FjdGlvbltdO1xufVxuXG5pbnRlcmZhY2UgU2NyYXBlZFRyYW5zYWN0aW9uRGF0YSB7XG4gIEhlYWRlcj86IHtcbiAgICBTdGF0dXM6IHN0cmluZztcbiAgfTtcbiAgQ2FyZHNUcmFuc2FjdGlvbnNMaXN0QmVhbj86IFJlY29yZDxzdHJpbmcsIHtcbiAgICBDdXJyZW50Q2FyZFRyYW5zYWN0aW9uczogU2NyYXBlZEN1cnJlbnRDYXJkVHJhbnNhY3Rpb25zW107XG4gIH0+O1xufVxuXG5mdW5jdGlvbiBnZXRBY2NvdW50c1VybChzZXJ2aWNlc1VybDogc3RyaW5nLCBtb250aE1vbWVudDogTW9tZW50KSB7XG4gIGNvbnN0IGJpbGxpbmdEYXRlID0gbW9udGhNb21lbnQuZm9ybWF0KCdZWVlZLU1NLUREJyk7XG4gIHJldHVybiBidWlsZFVybChzZXJ2aWNlc1VybCwge1xuICAgIHF1ZXJ5UGFyYW1zOiB7XG4gICAgICByZXFOYW1lOiAnRGFzaGJvYXJkTW9udGgnLFxuICAgICAgYWN0aW9uQ29kZTogJzAnLFxuICAgICAgYmlsbGluZ0RhdGUsXG4gICAgICBmb3JtYXQ6ICdKc29uJyxcbiAgICB9LFxuICB9KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZmV0Y2hBY2NvdW50cyhwYWdlOiBQYWdlLCBzZXJ2aWNlc1VybDogc3RyaW5nLCBtb250aE1vbWVudDogTW9tZW50KTogUHJvbWlzZTxTY3JhcGVkQWNjb3VudFtdPiB7XG4gIGNvbnN0IGRhdGFVcmwgPSBnZXRBY2NvdW50c1VybChzZXJ2aWNlc1VybCwgbW9udGhNb21lbnQpO1xuICBjb25zdCBkYXRhUmVzdWx0ID0gYXdhaXQgZmV0Y2hHZXRXaXRoaW5QYWdlPFNjcmFwZWRBY2NvdW50c1dpdGhpblBhZ2VSZXNwb25zZT4ocGFnZSwgZGF0YVVybCk7XG4gIGlmIChkYXRhUmVzdWx0ICYmIF8uZ2V0KGRhdGFSZXN1bHQsICdIZWFkZXIuU3RhdHVzJykgPT09ICcxJyAmJiBkYXRhUmVzdWx0LkRhc2hib2FyZE1vbnRoQmVhbikge1xuICAgIGNvbnN0IHsgY2FyZHNDaGFyZ2VzIH0gPSBkYXRhUmVzdWx0LkRhc2hib2FyZE1vbnRoQmVhbjtcbiAgICBpZiAoY2FyZHNDaGFyZ2VzKSB7XG4gICAgICByZXR1cm4gY2FyZHNDaGFyZ2VzLm1hcCgoY2FyZENoYXJnZSkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGluZGV4OiBwYXJzZUludChjYXJkQ2hhcmdlLmNhcmRJbmRleCwgMTApLFxuICAgICAgICAgIGFjY291bnROdW1iZXI6IGNhcmRDaGFyZ2UuY2FyZE51bWJlcixcbiAgICAgICAgICBwcm9jZXNzZWREYXRlOiBtb21lbnQoY2FyZENoYXJnZS5iaWxsaW5nRGF0ZSwgREFURV9GT1JNQVQpLnRvSVNPU3RyaW5nKCksXG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIFtdO1xufVxuXG5mdW5jdGlvbiBnZXRUcmFuc2FjdGlvbnNVcmwoc2VydmljZXNVcmw6IHN0cmluZywgbW9udGhNb21lbnQ6IE1vbWVudCkge1xuICBjb25zdCBtb250aCA9IG1vbnRoTW9tZW50Lm1vbnRoKCkgKyAxO1xuICBjb25zdCB5ZWFyID0gbW9udGhNb21lbnQueWVhcigpO1xuICBjb25zdCBtb250aFN0ciA9IG1vbnRoIDwgMTAgPyBgMCR7bW9udGh9YCA6IG1vbnRoLnRvU3RyaW5nKCk7XG4gIHJldHVybiBidWlsZFVybChzZXJ2aWNlc1VybCwge1xuICAgIHF1ZXJ5UGFyYW1zOiB7XG4gICAgICByZXFOYW1lOiAnQ2FyZHNUcmFuc2FjdGlvbnNMaXN0JyxcbiAgICAgIG1vbnRoOiBtb250aFN0cixcbiAgICAgIHllYXI6IGAke3llYXJ9YCxcbiAgICAgIHJlcXVpcmVkRGF0ZTogJ04nLFxuICAgIH0sXG4gIH0pO1xufVxuXG5mdW5jdGlvbiBjb252ZXJ0Q3VycmVuY3koY3VycmVuY3lTdHI6IHN0cmluZykge1xuICBpZiAoY3VycmVuY3lTdHIgPT09IFNIRUtFTF9DVVJSRU5DWV9LRVlXT1JEIHx8IGN1cnJlbmN5U3RyID09PSBBTFRfU0hFS0VMX0NVUlJFTkNZKSB7XG4gICAgcmV0dXJuIFNIRUtFTF9DVVJSRU5DWTtcbiAgfVxuICByZXR1cm4gY3VycmVuY3lTdHI7XG59XG5cbmZ1bmN0aW9uIGdldEluc3RhbGxtZW50c0luZm8odHhuOiBTY3JhcGVkVHJhbnNhY3Rpb24pOiBUcmFuc2FjdGlvbkluc3RhbGxtZW50cyB8IHVuZGVmaW5lZCB7XG4gIGlmICghdHhuLm1vcmVJbmZvIHx8ICF0eG4ubW9yZUluZm8uaW5jbHVkZXMoSU5TVEFMTE1FTlRTX0tFWVdPUkQpKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBjb25zdCBtYXRjaGVzID0gdHhuLm1vcmVJbmZvLm1hdGNoKC9cXGQrL2cpO1xuICBpZiAoIW1hdGNoZXMgfHwgbWF0Y2hlcy5sZW5ndGggPCAyKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbnVtYmVyOiBwYXJzZUludChtYXRjaGVzWzBdLCAxMCksXG4gICAgdG90YWw6IHBhcnNlSW50KG1hdGNoZXNbMV0sIDEwKSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0VHJhbnNhY3Rpb25UeXBlKHR4bjogU2NyYXBlZFRyYW5zYWN0aW9uKSB7XG4gIHJldHVybiBnZXRJbnN0YWxsbWVudHNJbmZvKHR4bikgPyBUcmFuc2FjdGlvblR5cGVzLkluc3RhbGxtZW50cyA6IFRyYW5zYWN0aW9uVHlwZXMuTm9ybWFsO1xufVxuXG5mdW5jdGlvbiBjb252ZXJ0VHJhbnNhY3Rpb25zKHR4bnM6IFNjcmFwZWRUcmFuc2FjdGlvbltdLCBwcm9jZXNzZWREYXRlOiBzdHJpbmcpOiBUcmFuc2FjdGlvbltdIHtcbiAgY29uc3QgZmlsdGVyZWRUeG5zID0gdHhucy5maWx0ZXIoKHR4bikgPT4gdHhuLmRlYWxTdW1UeXBlICE9PSAnMScgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHhuLnZvdWNoZXJOdW1iZXJSYXR6ICE9PSAnMDAwMDAwMDAwJyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eG4udm91Y2hlck51bWJlclJhdHpPdXRib3VuZCAhPT0gJzAwMDAwMDAwMCcpO1xuXG4gIHJldHVybiBmaWx0ZXJlZFR4bnMubWFwKCh0eG4pID0+IHtcbiAgICBjb25zdCBpc091dGJvdW5kID0gdHhuLmRlYWxTdW1PdXRib3VuZDtcbiAgICBjb25zdCB0eG5EYXRlU3RyID0gaXNPdXRib3VuZCA/IHR4bi5mdWxsUHVyY2hhc2VEYXRlT3V0Ym91bmQgOiB0eG4uZnVsbFB1cmNoYXNlRGF0ZTtcbiAgICBjb25zdCB0eG5Nb21lbnQgPSBtb21lbnQodHhuRGF0ZVN0ciwgREFURV9GT1JNQVQpO1xuXG4gICAgY29uc3QgcmVzdWx0OiBUcmFuc2FjdGlvbiA9IHtcbiAgICAgIHR5cGU6IGdldFRyYW5zYWN0aW9uVHlwZSh0eG4pLFxuICAgICAgaWRlbnRpZmllcjogcGFyc2VJbnQoaXNPdXRib3VuZCA/IHR4bi52b3VjaGVyTnVtYmVyUmF0ek91dGJvdW5kIDogdHhuLnZvdWNoZXJOdW1iZXJSYXR6LCAxMCksXG4gICAgICBkYXRlOiB0eG5Nb21lbnQudG9JU09TdHJpbmcoKSxcbiAgICAgIHByb2Nlc3NlZERhdGUsXG4gICAgICBvcmlnaW5hbEFtb3VudDogaXNPdXRib3VuZCA/IC10eG4uZGVhbFN1bU91dGJvdW5kIDogLXR4bi5kZWFsU3VtLFxuICAgICAgb3JpZ2luYWxDdXJyZW5jeTogY29udmVydEN1cnJlbmN5KHR4bi5jdXJyZW5jeUlkKSxcbiAgICAgIGNoYXJnZWRBbW91bnQ6IGlzT3V0Ym91bmQgPyAtdHhuLnBheW1lbnRTdW1PdXRib3VuZCA6IC10eG4ucGF5bWVudFN1bSxcbiAgICAgIGRlc2NyaXB0aW9uOiBpc091dGJvdW5kID8gdHhuLmZ1bGxTdXBwbGllck5hbWVPdXRib3VuZCA6IHR4bi5mdWxsU3VwcGxpZXJOYW1lSGViLFxuICAgICAgbWVtbzogdHhuLm1vcmVJbmZvIHx8ICcnLFxuICAgICAgaW5zdGFsbG1lbnRzOiBnZXRJbnN0YWxsbWVudHNJbmZvKHR4bikgfHwgdW5kZWZpbmVkLFxuICAgICAgc3RhdHVzOiBUcmFuc2FjdGlvblN0YXR1c2VzLkNvbXBsZXRlZCxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGZldGNoVHJhbnNhY3Rpb25zKHBhZ2U6IFBhZ2UsIG9wdGlvbnM6IEV4dGVuZGVkU2NyYXBlck9wdGlvbnMsIHN0YXJ0TW9tZW50OiBNb21lbnQsIG1vbnRoTW9tZW50OiBNb21lbnQpOiBQcm9taXNlPFNjcmFwZWRBY2NvdW50c1dpdGhJbmRleD4ge1xuICBjb25zdCBhY2NvdW50cyA9IGF3YWl0IGZldGNoQWNjb3VudHMocGFnZSwgb3B0aW9ucy5zZXJ2aWNlc1VybCwgbW9udGhNb21lbnQpO1xuICBjb25zdCBkYXRhVXJsID0gZ2V0VHJhbnNhY3Rpb25zVXJsKG9wdGlvbnMuc2VydmljZXNVcmwsIG1vbnRoTW9tZW50KTtcbiAgY29uc3QgZGF0YVJlc3VsdCA9IGF3YWl0IGZldGNoR2V0V2l0aGluUGFnZTxTY3JhcGVkVHJhbnNhY3Rpb25EYXRhPihwYWdlLCBkYXRhVXJsKTtcbiAgaWYgKGRhdGFSZXN1bHQgJiYgXy5nZXQoZGF0YVJlc3VsdCwgJ0hlYWRlci5TdGF0dXMnKSA9PT0gJzEnICYmIGRhdGFSZXN1bHQuQ2FyZHNUcmFuc2FjdGlvbnNMaXN0QmVhbikge1xuICAgIGNvbnN0IGFjY291bnRUeG5zOiBTY3JhcGVkQWNjb3VudHNXaXRoSW5kZXggPSB7fTtcbiAgICBhY2NvdW50cy5mb3JFYWNoKChhY2NvdW50KSA9PiB7XG4gICAgICBjb25zdCB0eG5Hcm91cHM6IFNjcmFwZWRDdXJyZW50Q2FyZFRyYW5zYWN0aW9uc1tdID0gXy5nZXQoZGF0YVJlc3VsdCwgYENhcmRzVHJhbnNhY3Rpb25zTGlzdEJlYW4uSW5kZXgke2FjY291bnQuaW5kZXh9LkN1cnJlbnRDYXJkVHJhbnNhY3Rpb25zYCk7XG4gICAgICBpZiAodHhuR3JvdXBzKSB7XG4gICAgICAgIGxldCBhbGxUeG5zOiBUcmFuc2FjdGlvbltdID0gW107XG4gICAgICAgIHR4bkdyb3Vwcy5mb3JFYWNoKCh0eG5Hcm91cCkgPT4ge1xuICAgICAgICAgIGlmICh0eG5Hcm91cC50eG5Jc3JhZWwpIHtcbiAgICAgICAgICAgIGNvbnN0IHR4bnMgPSBjb252ZXJ0VHJhbnNhY3Rpb25zKHR4bkdyb3VwLnR4bklzcmFlbCwgYWNjb3VudC5wcm9jZXNzZWREYXRlKTtcbiAgICAgICAgICAgIGFsbFR4bnMucHVzaCguLi50eG5zKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHR4bkdyb3VwLnR4bkFicm9hZCkge1xuICAgICAgICAgICAgY29uc3QgdHhucyA9IGNvbnZlcnRUcmFuc2FjdGlvbnModHhuR3JvdXAudHhuQWJyb2FkLCBhY2NvdW50LnByb2Nlc3NlZERhdGUpO1xuICAgICAgICAgICAgYWxsVHhucy5wdXNoKC4uLnR4bnMpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKCFvcHRpb25zLmNvbWJpbmVJbnN0YWxsbWVudHMpIHtcbiAgICAgICAgICBhbGxUeG5zID0gZml4SW5zdGFsbG1lbnRzKGFsbFR4bnMpO1xuICAgICAgICB9XG4gICAgICAgIGFsbFR4bnMgPSBmaWx0ZXJPbGRUcmFuc2FjdGlvbnMoYWxsVHhucywgc3RhcnRNb21lbnQsIG9wdGlvbnMuY29tYmluZUluc3RhbGxtZW50cyB8fCBmYWxzZSk7XG5cbiAgICAgICAgYWNjb3VudFR4bnNbYWNjb3VudC5hY2NvdW50TnVtYmVyXSA9IHtcbiAgICAgICAgICBhY2NvdW50TnVtYmVyOiBhY2NvdW50LmFjY291bnROdW1iZXIsXG4gICAgICAgICAgaW5kZXg6IGFjY291bnQuaW5kZXgsXG4gICAgICAgICAgdHhuczogYWxsVHhucyxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gYWNjb3VudFR4bnM7XG4gIH1cblxuICByZXR1cm4ge307XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGZldGNoQWxsVHJhbnNhY3Rpb25zKHBhZ2U6IFBhZ2UsIG9wdGlvbnM6IEV4dGVuZGVkU2NyYXBlck9wdGlvbnMsIHN0YXJ0TW9tZW50OiBNb21lbnQpIHtcbiAgY29uc3QgZnV0dXJlTW9udGhzVG9TY3JhcGUgPSBvcHRpb25zLmZ1dHVyZU1vbnRoc1RvU2NyYXBlID8/IDE7XG4gIGNvbnN0IGFsbE1vbnRocyA9IGdldEFsbE1vbnRoTW9tZW50cyhzdGFydE1vbWVudCwgZnV0dXJlTW9udGhzVG9TY3JhcGUpO1xuICBjb25zdCByZXN1bHRzOiBTY3JhcGVkQWNjb3VudHNXaXRoSW5kZXhbXSA9IGF3YWl0IFByb21pc2UuYWxsKGFsbE1vbnRocy5tYXAoYXN5bmMgKG1vbnRoTW9tZW50KSA9PiB7XG4gICAgcmV0dXJuIGZldGNoVHJhbnNhY3Rpb25zKHBhZ2UsIG9wdGlvbnMsIHN0YXJ0TW9tZW50LCBtb250aE1vbWVudCk7XG4gIH0pKTtcblxuICBjb25zdCBjb21iaW5lZFR4bnM6IFJlY29yZDxzdHJpbmcsIFRyYW5zYWN0aW9uW10+ID0ge307XG5cbiAgcmVzdWx0cy5mb3JFYWNoKChyZXN1bHQpID0+IHtcbiAgICBPYmplY3Qua2V5cyhyZXN1bHQpLmZvckVhY2goKGFjY291bnROdW1iZXIpID0+IHtcbiAgICAgIGxldCB0eG5zRm9yQWNjb3VudCA9IGNvbWJpbmVkVHhuc1thY2NvdW50TnVtYmVyXTtcbiAgICAgIGlmICghdHhuc0ZvckFjY291bnQpIHtcbiAgICAgICAgdHhuc0ZvckFjY291bnQgPSBbXTtcbiAgICAgICAgY29tYmluZWRUeG5zW2FjY291bnROdW1iZXJdID0gdHhuc0ZvckFjY291bnQ7XG4gICAgICB9XG4gICAgICBjb25zdCB0b0JlQWRkZWRUeG5zID0gcmVzdWx0W2FjY291bnROdW1iZXJdLnR4bnM7XG4gICAgICBjb21iaW5lZFR4bnNbYWNjb3VudE51bWJlcl0ucHVzaCguLi50b0JlQWRkZWRUeG5zKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgY29uc3QgYWNjb3VudHMgPSBPYmplY3Qua2V5cyhjb21iaW5lZFR4bnMpLm1hcCgoYWNjb3VudE51bWJlcikgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICBhY2NvdW50TnVtYmVyLFxuICAgICAgdHhuczogY29tYmluZWRUeG5zW2FjY291bnROdW1iZXJdLFxuICAgIH07XG4gIH0pO1xuXG4gIHJldHVybiB7XG4gICAgc3VjY2VzczogdHJ1ZSxcbiAgICBhY2NvdW50cyxcbiAgfTtcbn1cblxuXG5jbGFzcyBJc3JhY2FyZEFtZXhCYXNlU2NyYXBlciBleHRlbmRzIEJhc2VTY3JhcGVyV2l0aEJyb3dzZXIge1xuICBwcml2YXRlIGJhc2VVcmw6IHN0cmluZztcblxuICBwcml2YXRlIGNvbXBhbnlDb2RlOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBzZXJ2aWNlc1VybDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IFNjcmFwZXJPcHRpb25zLCBiYXNlVXJsOiBzdHJpbmcsIGNvbXBhbnlDb2RlOiBzdHJpbmcpIHtcbiAgICBzdXBlcihvcHRpb25zKTtcblxuICAgIHRoaXMuYmFzZVVybCA9IGJhc2VVcmw7XG4gICAgdGhpcy5jb21wYW55Q29kZSA9IGNvbXBhbnlDb2RlO1xuICAgIHRoaXMuc2VydmljZXNVcmwgPSBgJHtiYXNlVXJsfS9zZXJ2aWNlcy9Qcm94eVJlcXVlc3RIYW5kbGVyLmFzaHhgO1xuICB9XG5cbiAgYXN5bmMgbG9naW4oY3JlZGVudGlhbHM6IFNjcmFwZXJDcmVkZW50aWFscyk6IFByb21pc2U8U2NhcGVyU2NyYXBpbmdSZXN1bHQ+IHtcbiAgICBhd2FpdCB0aGlzLnBhZ2Uuc2V0UmVxdWVzdEludGVyY2VwdGlvbih0cnVlKTtcbiAgICB0aGlzLnBhZ2Uub24oJ3JlcXVlc3QnLCAocmVxdWVzdCkgPT4ge1xuICAgICAgaWYgKHJlcXVlc3QudXJsKCkuaW5jbHVkZXMoJ2RldGVjdG9yLWRvbS5taW4uanMnKSkge1xuICAgICAgICBkZWJ1ZygnZm9yY2UgYWJvcnQgZm9yIHJlcXVlc3QgZG8gZG93bmxvYWQgZGV0ZWN0b3ItZG9tLm1pbi5qcyByZXNvdXJjZScpO1xuICAgICAgICByZXF1ZXN0LmFib3J0KCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXF1ZXN0LmNvbnRpbnVlKCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBkZWJ1ZygnbmF2aWdhdGUgdG8gbG9naW4gcGFnZScpO1xuICAgIGF3YWl0IHRoaXMubmF2aWdhdGVUbyhgJHt0aGlzLmJhc2VVcmx9L3BlcnNvbmFsYXJlYS9Mb2dpbmApO1xuXG4gICAgdGhpcy5lbWl0UHJvZ3Jlc3MoU2NhcGVyUHJvZ3Jlc3NUeXBlcy5Mb2dnaW5nSW4pO1xuXG4gICAgY29uc3QgdmFsaWRhdGVVcmwgPSBgJHt0aGlzLnNlcnZpY2VzVXJsfT9yZXFOYW1lPVZhbGlkYXRlSWREYXRhYDtcbiAgICBjb25zdCB2YWxpZGF0ZVJlcXVlc3QgPSB7XG4gICAgICBpZDogY3JlZGVudGlhbHMuaWQsXG4gICAgICBjYXJkU3VmZml4OiBjcmVkZW50aWFscy5jYXJkNkRpZ2l0cyxcbiAgICAgIGNvdW50cnlDb2RlOiBDT1VOVFJZX0NPREUsXG4gICAgICBpZFR5cGU6IElEX1RZUEUsXG4gICAgICBjaGVja0xldmVsOiAnMScsXG4gICAgICBjb21wYW55Q29kZTogdGhpcy5jb21wYW55Q29kZSxcbiAgICB9O1xuICAgIGNvbnN0IHZhbGlkYXRlUmVzdWx0ID0gYXdhaXQgZmV0Y2hQb3N0V2l0aGluUGFnZTxTY3JhcGVkTG9naW5WYWxpZGF0aW9uPih0aGlzLnBhZ2UsIHZhbGlkYXRlVXJsLCB2YWxpZGF0ZVJlcXVlc3QpO1xuICAgIGlmICghdmFsaWRhdGVSZXN1bHQgfHwgIXZhbGlkYXRlUmVzdWx0LkhlYWRlciB8fCB2YWxpZGF0ZVJlc3VsdC5IZWFkZXIuU3RhdHVzICE9PSAnMScgfHwgIXZhbGlkYXRlUmVzdWx0LlZhbGlkYXRlSWREYXRhQmVhbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd1bmtub3duIGVycm9yIGR1cmluZyBsb2dpbicpO1xuICAgIH1cblxuICAgIGNvbnN0IHZhbGlkYXRlUmV0dXJuQ29kZSA9IHZhbGlkYXRlUmVzdWx0LlZhbGlkYXRlSWREYXRhQmVhbi5yZXR1cm5Db2RlO1xuICAgIGRlYnVnKGB1c2VyIHZhbGlkYXRlIHdpdGggcmV0dXJuIGNvZGUgJyR7dmFsaWRhdGVSZXR1cm5Db2RlfSdgKTtcbiAgICBpZiAodmFsaWRhdGVSZXR1cm5Db2RlID09PSAnMScpIHtcbiAgICAgIGNvbnN0IHsgdXNlck5hbWUgfSA9IHZhbGlkYXRlUmVzdWx0LlZhbGlkYXRlSWREYXRhQmVhbjtcblxuICAgICAgY29uc3QgbG9naW5VcmwgPSBgJHt0aGlzLnNlcnZpY2VzVXJsfT9yZXFOYW1lPXBlcmZvcm1Mb2dvbklgO1xuICAgICAgY29uc3QgcmVxdWVzdCA9IHtcbiAgICAgICAgS29kTWlzaHRhbWVzaDogdXNlck5hbWUsXG4gICAgICAgIE1pc3BhclppaHV5OiBjcmVkZW50aWFscy5pZCxcbiAgICAgICAgU2lzbWE6IGNyZWRlbnRpYWxzLnBhc3N3b3JkLFxuICAgICAgICBjYXJkU3VmZml4OiBjcmVkZW50aWFscy5jYXJkNkRpZ2l0cyxcbiAgICAgICAgY291bnRyeUNvZGU6IENPVU5UUllfQ09ERSxcbiAgICAgICAgaWRUeXBlOiBJRF9UWVBFLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IGxvZ2luUmVzdWx0ID0gYXdhaXQgZmV0Y2hQb3N0V2l0aGluUGFnZTx7c3RhdHVzOiBzdHJpbmd9Pih0aGlzLnBhZ2UsIGxvZ2luVXJsLCByZXF1ZXN0KTtcbiAgICAgIGRlYnVnKGB1c2VyIGxvZ2luIHdpdGggc3RhdHVzICcke2xvZ2luUmVzdWx0Py5zdGF0dXN9J2ApO1xuXG4gICAgICBpZiAobG9naW5SZXN1bHQgJiYgbG9naW5SZXN1bHQuc3RhdHVzID09PSAnMScpIHtcbiAgICAgICAgdGhpcy5lbWl0UHJvZ3Jlc3MoU2NhcGVyUHJvZ3Jlc3NUeXBlcy5Mb2dpblN1Y2Nlc3MpO1xuICAgICAgICByZXR1cm4geyBzdWNjZXNzOiB0cnVlIH07XG4gICAgICB9XG5cbiAgICAgIGlmIChsb2dpblJlc3VsdCAmJiBsb2dpblJlc3VsdC5zdGF0dXMgPT09ICczJykge1xuICAgICAgICB0aGlzLmVtaXRQcm9ncmVzcyhTY2FwZXJQcm9ncmVzc1R5cGVzLkNoYW5nZVBhc3N3b3JkKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgICAgICBlcnJvclR5cGU6IFNjcmFwZXJFcnJvclR5cGVzLkNoYW5nZVBhc3N3b3JkLFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICB0aGlzLmVtaXRQcm9ncmVzcyhTY2FwZXJQcm9ncmVzc1R5cGVzLkxvZ2luRmFpbGVkKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgICBlcnJvclR5cGU6IFNjcmFwZXJFcnJvclR5cGVzLkludmFsaWRQYXNzd29yZCxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKHZhbGlkYXRlUmV0dXJuQ29kZSA9PT0gJzQnKSB7XG4gICAgICB0aGlzLmVtaXRQcm9ncmVzcyhTY2FwZXJQcm9ncmVzc1R5cGVzLkNoYW5nZVBhc3N3b3JkKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgICBlcnJvclR5cGU6IFNjcmFwZXJFcnJvclR5cGVzLkNoYW5nZVBhc3N3b3JkLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICB0aGlzLmVtaXRQcm9ncmVzcyhTY2FwZXJQcm9ncmVzc1R5cGVzLkxvZ2luRmFpbGVkKTtcbiAgICByZXR1cm4ge1xuICAgICAgc3VjY2VzczogZmFsc2UsXG4gICAgICBlcnJvclR5cGU6IFNjcmFwZXJFcnJvclR5cGVzLkludmFsaWRQYXNzd29yZCxcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgZmV0Y2hEYXRhKCkge1xuICAgIGNvbnN0IGRlZmF1bHRTdGFydE1vbWVudCA9IG1vbWVudCgpLnN1YnRyYWN0KDEsICd5ZWFycycpO1xuICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IHRoaXMub3B0aW9ucy5zdGFydERhdGUgfHwgZGVmYXVsdFN0YXJ0TW9tZW50LnRvRGF0ZSgpO1xuICAgIGNvbnN0IHN0YXJ0TW9tZW50ID0gbW9tZW50Lm1heChkZWZhdWx0U3RhcnRNb21lbnQsIG1vbWVudChzdGFydERhdGUpKTtcblxuICAgIHJldHVybiBmZXRjaEFsbFRyYW5zYWN0aW9ucyh0aGlzLnBhZ2UsIHtcbiAgICAgIC4uLnRoaXMub3B0aW9ucyxcbiAgICAgIHNlcnZpY2VzVXJsOiB0aGlzLnNlcnZpY2VzVXJsLFxuICAgICAgY29tcGFueUNvZGU6IHRoaXMuY29tcGFueUNvZGUsXG4gICAgfSwgc3RhcnRNb21lbnQpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IElzcmFjYXJkQW1leEJhc2VTY3JhcGVyO1xuIl19
|
|
341
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JhcGVycy9iYXNlLWlzcmFjYXJkLWFtZXgudHMiXSwibmFtZXMiOlsiQ09VTlRSWV9DT0RFIiwiSURfVFlQRSIsIklOU1RBTExNRU5UU19LRVlXT1JEIiwiREFURV9GT1JNQVQiLCJkZWJ1ZyIsImdldEFjY291bnRzVXJsIiwic2VydmljZXNVcmwiLCJtb250aE1vbWVudCIsImJpbGxpbmdEYXRlIiwiZm9ybWF0IiwicXVlcnlQYXJhbXMiLCJyZXFOYW1lIiwiYWN0aW9uQ29kZSIsImZldGNoQWNjb3VudHMiLCJwYWdlIiwiZGF0YVVybCIsImRhdGFSZXN1bHQiLCJfIiwiZ2V0IiwiRGFzaGJvYXJkTW9udGhCZWFuIiwiY2FyZHNDaGFyZ2VzIiwibWFwIiwiY2FyZENoYXJnZSIsImluZGV4IiwicGFyc2VJbnQiLCJjYXJkSW5kZXgiLCJhY2NvdW50TnVtYmVyIiwiY2FyZE51bWJlciIsInByb2Nlc3NlZERhdGUiLCJ0b0lTT1N0cmluZyIsImdldFRyYW5zYWN0aW9uc1VybCIsIm1vbnRoIiwieWVhciIsIm1vbnRoU3RyIiwidG9TdHJpbmciLCJyZXF1aXJlZERhdGUiLCJjb252ZXJ0Q3VycmVuY3kiLCJjdXJyZW5jeVN0ciIsIlNIRUtFTF9DVVJSRU5DWV9LRVlXT1JEIiwiQUxUX1NIRUtFTF9DVVJSRU5DWSIsIlNIRUtFTF9DVVJSRU5DWSIsImdldEluc3RhbGxtZW50c0luZm8iLCJ0eG4iLCJtb3JlSW5mbyIsImluY2x1ZGVzIiwidW5kZWZpbmVkIiwibWF0Y2hlcyIsIm1hdGNoIiwibGVuZ3RoIiwibnVtYmVyIiwidG90YWwiLCJnZXRUcmFuc2FjdGlvblR5cGUiLCJUcmFuc2FjdGlvblR5cGVzIiwiSW5zdGFsbG1lbnRzIiwiTm9ybWFsIiwiY29udmVydFRyYW5zYWN0aW9ucyIsInR4bnMiLCJmaWx0ZXJlZFR4bnMiLCJmaWx0ZXIiLCJkZWFsU3VtVHlwZSIsInZvdWNoZXJOdW1iZXJSYXR6Iiwidm91Y2hlck51bWJlclJhdHpPdXRib3VuZCIsImlzT3V0Ym91bmQiLCJkZWFsU3VtT3V0Ym91bmQiLCJ0eG5EYXRlU3RyIiwiZnVsbFB1cmNoYXNlRGF0ZU91dGJvdW5kIiwiZnVsbFB1cmNoYXNlRGF0ZSIsInR4bk1vbWVudCIsImN1cnJlbnRQcm9jZXNzZWREYXRlIiwiZnVsbFBheW1lbnREYXRlIiwicmVzdWx0IiwidHlwZSIsImlkZW50aWZpZXIiLCJkYXRlIiwib3JpZ2luYWxBbW91bnQiLCJkZWFsU3VtIiwib3JpZ2luYWxDdXJyZW5jeSIsImN1cnJlbmN5SWQiLCJjaGFyZ2VkQW1vdW50IiwicGF5bWVudFN1bU91dGJvdW5kIiwicGF5bWVudFN1bSIsImRlc2NyaXB0aW9uIiwiZnVsbFN1cHBsaWVyTmFtZU91dGJvdW5kIiwiZnVsbFN1cHBsaWVyTmFtZUhlYiIsIm1lbW8iLCJpbnN0YWxsbWVudHMiLCJzdGF0dXMiLCJUcmFuc2FjdGlvblN0YXR1c2VzIiwiQ29tcGxldGVkIiwiZmV0Y2hUcmFuc2FjdGlvbnMiLCJvcHRpb25zIiwic3RhcnRNb21lbnQiLCJhY2NvdW50cyIsIkNhcmRzVHJhbnNhY3Rpb25zTGlzdEJlYW4iLCJhY2NvdW50VHhucyIsImZvckVhY2giLCJhY2NvdW50IiwidHhuR3JvdXBzIiwiYWxsVHhucyIsInR4bkdyb3VwIiwidHhuSXNyYWVsIiwicHVzaCIsInR4bkFicm9hZCIsImNvbWJpbmVJbnN0YWxsbWVudHMiLCJmZXRjaEFsbFRyYW5zYWN0aW9ucyIsImZ1dHVyZU1vbnRoc1RvU2NyYXBlIiwiYWxsTW9udGhzIiwicmVzdWx0cyIsIlByb21pc2UiLCJhbGwiLCJjb21iaW5lZFR4bnMiLCJPYmplY3QiLCJrZXlzIiwidHhuc0ZvckFjY291bnQiLCJ0b0JlQWRkZWRUeG5zIiwic3VjY2VzcyIsIklzcmFjYXJkQW1leEJhc2VTY3JhcGVyIiwiQmFzZVNjcmFwZXJXaXRoQnJvd3NlciIsImNvbnN0cnVjdG9yIiwiYmFzZVVybCIsImNvbXBhbnlDb2RlIiwibG9naW4iLCJjcmVkZW50aWFscyIsInNldFJlcXVlc3RJbnRlcmNlcHRpb24iLCJvbiIsInJlcXVlc3QiLCJ1cmwiLCJhYm9ydCIsImNvbnRpbnVlIiwibmF2aWdhdGVUbyIsImVtaXRQcm9ncmVzcyIsIlNjYXBlclByb2dyZXNzVHlwZXMiLCJMb2dnaW5nSW4iLCJ2YWxpZGF0ZVVybCIsInZhbGlkYXRlUmVxdWVzdCIsImlkIiwiY2FyZFN1ZmZpeCIsImNhcmQ2RGlnaXRzIiwiY291bnRyeUNvZGUiLCJpZFR5cGUiLCJjaGVja0xldmVsIiwidmFsaWRhdGVSZXN1bHQiLCJIZWFkZXIiLCJTdGF0dXMiLCJWYWxpZGF0ZUlkRGF0YUJlYW4iLCJFcnJvciIsInZhbGlkYXRlUmV0dXJuQ29kZSIsInJldHVybkNvZGUiLCJ1c2VyTmFtZSIsImxvZ2luVXJsIiwiS29kTWlzaHRhbWVzaCIsIk1pc3BhclppaHV5IiwiU2lzbWEiLCJwYXNzd29yZCIsImxvZ2luUmVzdWx0IiwiTG9naW5TdWNjZXNzIiwiQ2hhbmdlUGFzc3dvcmQiLCJlcnJvclR5cGUiLCJTY3JhcGVyRXJyb3JUeXBlcyIsIkxvZ2luRmFpbGVkIiwiSW52YWxpZFBhc3N3b3JkIiwiZmV0Y2hEYXRhIiwiZGVmYXVsdFN0YXJ0TW9tZW50Iiwic3VidHJhY3QiLCJzdGFydERhdGUiLCJ0b0RhdGUiLCJtb21lbnQiLCJtYXgiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBR0E7O0FBQ0E7O0FBQ0E7O0FBS0E7O0FBQ0E7O0FBQ0E7O0FBSUE7O0FBS0E7Ozs7Ozs7Ozs7QUFFQSxNQUFNQSxZQUFZLEdBQUcsS0FBckI7QUFDQSxNQUFNQyxPQUFPLEdBQUcsR0FBaEI7QUFDQSxNQUFNQyxvQkFBb0IsR0FBRyxPQUE3QjtBQUVBLE1BQU1DLFdBQVcsR0FBRyxZQUFwQjtBQUVBLE1BQU1DLEtBQUssR0FBRyxxQkFBUyxvQkFBVCxDQUFkOztBQXNFQSxTQUFTQyxjQUFULENBQXdCQyxXQUF4QixFQUE2Q0MsV0FBN0MsRUFBa0U7QUFDaEUsUUFBTUMsV0FBVyxHQUFH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a0JDLGlDQUFvQjRCLFdBQXRDO0FBQ0EsYUFBTztBQUNMNUMsUUFBQUEsT0FBTyxFQUFFLEtBREo7QUFFTDBDLFFBQUFBLFNBQVMsRUFBRUMsK0JBQWtCRTtBQUZ4QixPQUFQO0FBSUQ7O0FBRUQsUUFBSWQsa0JBQWtCLEtBQUssR0FBM0IsRUFBZ0M7QUFDOUIsV0FBS2hCLFlBQUwsQ0FBa0JDLGlDQUFvQnlCLGNBQXRDO0FBQ0EsYUFBTztBQUNMekMsUUFBQUEsT0FBTyxFQUFFLEtBREo7QUFFTDBDLFFBQUFBLFNBQVMsRUFBRUMsK0JBQWtCRjtBQUZ4QixPQUFQO0FBSUQ7O0FBRUQsU0FBSzFCLFlBQUwsQ0FBa0JDLGlDQUFvQjRCLFdBQXRDO0FBQ0EsV0FBTztBQUNMNUMsTUFBQUEsT0FBTyxFQUFFLEtBREo7QUFFTDBDLE1BQUFBLFNBQVMsRUFBRUMsK0JBQWtCRTtBQUZ4QixLQUFQO0FBSUQ7O0FBRUQsUUFBTUMsU0FBTixHQUFrQjtBQUNoQixVQUFNQyxrQkFBa0IsR0FBRyx1QkFBU0MsUUFBVCxDQUFrQixDQUFsQixFQUFxQixPQUFyQixDQUEzQjtBQUNBLFVBQU1DLFNBQVMsR0FBRyxLQUFLMUUsT0FBTCxDQUFhMEUsU0FBYixJQUEwQkYsa0JBQWtCLENBQUNHLE1BQW5CLEVBQTVDOztBQUNBLFVBQU0xRSxXQUFXLEdBQUcyRSxnQkFBT0MsR0FBUCxDQUFXTCxrQkFBWCxFQUErQixxQkFBT0UsU0FBUCxDQUEvQixDQUFwQjs7QUFFQSxXQUFPNUQsb0JBQW9CLENBQUMsS0FBSzFGLElBQU4sb0JBQ3RCLEtBQUs0RSxPQURpQjtBQUV6QnBGLE1BQUFBLFdBQVcsRUFBRSxLQUFLQSxXQUZPO0FBR3pCa0gsTUFBQUEsV0FBVyxFQUFFLEtBQUtBO0FBSE8sUUFJeEI3QixXQUp3QixDQUEzQjtBQUtEOztBQTNHMEQ7O2VBOEc5Q3lCLHVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBidWlsZFVybCBmcm9tICdidWlsZC11cmwnO1xuaW1wb3J0IG1vbWVudCwgeyBNb21lbnQgfSBmcm9tICdtb21lbnQnO1xuXG5pbXBvcnQgeyBQYWdlIH0gZnJvbSAncHVwcGV0ZWVyJztcbmltcG9ydCB7IEJhc2VTY3JhcGVyV2l0aEJyb3dzZXIgfSBmcm9tICcuL2Jhc2Utc2NyYXBlci13aXRoLWJyb3dzZXInO1xuaW1wb3J0IHsgZmV0Y2hHZXRXaXRoaW5QYWdlLCBmZXRjaFBvc3RXaXRoaW5QYWdlIH0gZnJvbSAnLi4vaGVscGVycy9mZXRjaCc7XG5pbXBvcnQge1xuICBTSEVLRUxfQ1VSUkVOQ1lfS0VZV09SRCxcbiAgU0hFS0VMX0NVUlJFTkNZLFxuICBBTFRfU0hFS0VMX0NVUlJFTkNZLFxufSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IGdldEFsbE1vbnRoTW9tZW50cyBmcm9tICcuLi9oZWxwZXJzL2RhdGVzJztcbmltcG9ydCB7IGZpeEluc3RhbGxtZW50cywgZmlsdGVyT2xkVHJhbnNhY3Rpb25zIH0gZnJvbSAnLi4vaGVscGVycy90cmFuc2FjdGlvbnMnO1xuaW1wb3J0IHtcbiAgVHJhbnNhY3Rpb25zQWNjb3VudCwgVHJhbnNhY3Rpb24sIFRyYW5zYWN0aW9uSW5zdGFsbG1lbnRzLFxuICBUcmFuc2FjdGlvblN0YXR1c2VzLCBUcmFuc2FjdGlvblR5cGVzLFxufSBmcm9tICcuLi90cmFuc2FjdGlvbnMnO1xuaW1wb3J0IHtcbiAgU2NyYXBlckVycm9yVHlwZXMsXG4gIFNjcmFwZXJPcHRpb25zLCBTY2FwZXJTY3JhcGluZ1Jlc3VsdCwgU2NhcGVyUHJvZ3Jlc3NUeXBlcyxcbiAgU2NyYXBlckNyZWRlbnRpYWxzLFxufSBmcm9tICcuL2Jhc2Utc2NyYXBlcic7XG5pbXBvcnQgeyBnZXREZWJ1ZyB9IGZyb20gJy4uL2hlbHBlcnMvZGVidWcnO1xuXG5jb25zdCBDT1VOVFJZX0NPREUgPSAnMjEyJztcbmNvbnN0IElEX1RZUEUgPSAnMSc7XG5jb25zdCBJTlNUQUxMTUVOVFNfS0VZV09SRCA9ICfXqtep15zXldedJztcblxuY29uc3QgREFURV9GT1JNQVQgPSAnREQvTU0vWVlZWSc7XG5cbmNvbnN0IGRlYnVnID0gZ2V0RGVidWcoJ2Jhc2UtaXNyYWNhcmQtYW1leCcpO1xuXG5pbnRlcmZhY2UgRXh0ZW5kZWRTY3JhcGVyT3B0aW9ucyBleHRlbmRzIFNjcmFwZXJPcHRpb25zIHtcbiAgc2VydmljZXNVcmw6IHN0cmluZztcbiAgY29tcGFueUNvZGU6IHN0cmluZztcbn1cblxudHlwZSBTY3JhcGVkQWNjb3VudHNXaXRoSW5kZXggPSBSZWNvcmQ8c3RyaW5nLCBUcmFuc2FjdGlvbnNBY2NvdW50ICYgeyBpbmRleDogbnVtYmVyIH0+O1xuXG5pbnRlcmZhY2UgU2NyYXBlZFRyYW5zYWN0aW9uIHtcbiAgZGVhbFN1bVR5cGU6IHN0cmluZztcbiAgdm91Y2hlck51bWJlclJhdHpPdXRib3VuZDogc3RyaW5nO1xuICB2b3VjaGVyTnVtYmVyUmF0ejogc3RyaW5nO1xuICBtb3JlSW5mbz86IHN0cmluZztcbiAgZGVhbFN1bU91dGJvdW5kOiBib29sZWFuO1xuICBjdXJyZW5jeUlkOiBzdHJpbmc7XG4gIGRlYWxTdW06IG51bWJlcjtcbiAgZnVsbFBheW1lbnREYXRlPzogc3RyaW5nO1xuICBmdWxsUHVyY2hhc2VEYXRlPzogc3RyaW5nO1xuICBmdWxsUHVyY2hhc2VEYXRlT3V0Ym91bmQ/OiBzdHJpbmc7XG4gIGZ1bGxTdXBwbGllck5hbWVIZWI6IHN0cmluZztcbiAgZnVsbFN1cHBsaWVyTmFtZU91dGJvdW5kOiBzdHJpbmc7XG4gIHBheW1lbnRTdW06IG51bWJlcjtcbiAgcGF5bWVudFN1bU91dGJvdW5kOiBudW1iZXI7XG59XG5cblxuaW50ZXJmYWNlIFNjcmFwZWRBY2NvdW50IHtcbiAgaW5kZXg6IG51bWJlcjtcbiAgYWNjb3VudE51bWJlcjogc3RyaW5nO1xuICBwcm9jZXNzZWREYXRlOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBTY3JhcGVkTG9naW5WYWxpZGF0aW9uIHtcbiAgSGVhZGVyOiB7XG4gICAgU3RhdHVzOiBzdHJpbmc7XG4gIH07XG4gIFZhbGlkYXRlSWREYXRhQmVhbj86IHtcbiAgICB1c2VyTmFtZT86IHN0cmluZztcbiAgICByZXR1cm5Db2RlOiBzdHJpbmc7XG4gIH07XG59XG5cbmludGVyZmFjZSBTY3JhcGVkQWNjb3VudHNXaXRoaW5QYWdlUmVzcG9uc2Uge1xuICBIZWFkZXI6IHtcbiAgICBTdGF0dXM6IHN0cmluZztcbiAgfTtcbiAgRGFzaGJvYXJkTW9udGhCZWFuPzoge1xuICAgIGNhcmRzQ2hhcmdlczoge1xuICAgICAgY2FyZEluZGV4OiBzdHJpbmc7XG4gICAgICBjYXJkTnVtYmVyOiBzdHJpbmc7XG4gICAgICBiaWxsaW5nRGF0ZTogc3RyaW5nO1xuICAgIH1bXTtcbiAgfTtcbn1cblxuaW50ZXJmYWNlIFNjcmFwZWRDdXJyZW50Q2FyZFRyYW5zYWN0aW9ucyB7XG4gIHR4bklzcmFlbD86IFNjcmFwZWRUcmFuc2FjdGlvbltdO1xuICB0eG5BYnJvYWQ/OiBTY3JhcGVkVHJhbnNhY3Rpb25bXTtcbn1cblxuaW50ZXJmYWNlIFNjcmFwZWRUcmFuc2FjdGlvbkRhdGEge1xuICBIZWFkZXI/OiB7XG4gICAgU3RhdHVzOiBzdHJpbmc7XG4gIH07XG4gIENhcmRzVHJhbnNhY3Rpb25zTGlzdEJlYW4/OiBSZWNvcmQ8c3RyaW5nLCB7XG4gICAgQ3VycmVudENhcmRUcmFuc2FjdGlvbnM6IFNjcmFwZWRDdXJyZW50Q2FyZFRyYW5zYWN0aW9uc1tdO1xuICB9Pjtcbn1cblxuZnVuY3Rpb24gZ2V0QWNjb3VudHNVcmwoc2VydmljZXNVcmw6IHN0cmluZywgbW9udGhNb21lbnQ6IE1vbWVudCkge1xuICBjb25zdCBiaWxsaW5nRGF0ZSA9IG1vbnRoTW9tZW50LmZvcm1hdCgnWVlZWS1NTS1ERCcpO1xuICByZXR1cm4gYnVpbGRVcmwoc2VydmljZXNVcmwsIHtcbiAgICBxdWVyeVBhcmFtczoge1xuICAgICAgcmVxTmFtZTogJ0Rhc2hib2FyZE1vbnRoJyxcbiAgICAgIGFjdGlvbkNvZGU6ICcwJyxcbiAgICAgIGJpbGxpbmdEYXRlLFxuICAgICAgZm9ybWF0OiAnSnNvbicsXG4gICAgfSxcbiAgfSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGZldGNoQWNjb3VudHMocGFnZTogUGFnZSwgc2VydmljZXNVcmw6IHN0cmluZywgbW9udGhNb21lbnQ6IE1vbWVudCk6IFByb21pc2U8U2NyYXBlZEFjY291bnRbXT4ge1xuICBjb25zdCBkYXRhVXJsID0gZ2V0QWNjb3VudHNVcmwoc2VydmljZXNVcmwsIG1vbnRoTW9tZW50KTtcbiAgY29uc3QgZGF0YVJlc3VsdCA9IGF3YWl0IGZldGNoR2V0V2l0aGluUGFnZTxTY3JhcGVkQWNjb3VudHNXaXRoaW5QYWdlUmVzcG9uc2U+KHBhZ2UsIGRhdGFVcmwpO1xuICBpZiAoZGF0YVJlc3VsdCAmJiBfLmdldChkYXRhUmVzdWx0LCAnSGVhZGVyLlN0YXR1cycpID09PSAnMScgJiYgZGF0YVJlc3VsdC5EYXNoYm9hcmRNb250aEJlYW4pIHtcbiAgICBjb25zdCB7IGNhcmRzQ2hhcmdlcyB9ID0gZGF0YVJlc3VsdC5EYXNoYm9hcmRNb250aEJlYW47XG4gICAgaWYgKGNhcmRzQ2hhcmdlcykge1xuICAgICAgcmV0dXJuIGNhcmRzQ2hhcmdlcy5tYXAoKGNhcmRDaGFyZ2UpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBpbmRleDogcGFyc2VJbnQoY2FyZENoYXJnZS5jYXJkSW5kZXgsIDEwKSxcbiAgICAgICAgICBhY2NvdW50TnVtYmVyOiBjYXJkQ2hhcmdlLmNhcmROdW1iZXIsXG4gICAgICAgICAgcHJvY2Vzc2VkRGF0ZTogbW9tZW50KGNhcmRDaGFyZ2UuYmlsbGluZ0RhdGUsIERBVEVfRk9STUFUKS50b0lTT1N0cmluZygpLFxuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBbXTtcbn1cblxuZnVuY3Rpb24gZ2V0VHJhbnNhY3Rpb25zVXJsKHNlcnZpY2VzVXJsOiBzdHJpbmcsIG1vbnRoTW9tZW50OiBNb21lbnQpIHtcbiAgY29uc3QgbW9udGggPSBtb250aE1vbWVudC5tb250aCgpICsgMTtcbiAgY29uc3QgeWVhciA9IG1vbnRoTW9tZW50LnllYXIoKTtcbiAgY29uc3QgbW9udGhTdHIgPSBtb250aCA8IDEwID8gYDAke21vbnRofWAgOiBtb250aC50b1N0cmluZygpO1xuICByZXR1cm4gYnVpbGRVcmwoc2VydmljZXNVcmwsIHtcbiAgICBxdWVyeVBhcmFtczoge1xuICAgICAgcmVxTmFtZTogJ0NhcmRzVHJhbnNhY3Rpb25zTGlzdCcsXG4gICAgICBtb250aDogbW9udGhTdHIsXG4gICAgICB5ZWFyOiBgJHt5ZWFyfWAsXG4gICAgICByZXF1aXJlZERhdGU6ICdOJyxcbiAgICB9LFxuICB9KTtcbn1cblxuZnVuY3Rpb24gY29udmVydEN1cnJlbmN5KGN1cnJlbmN5U3RyOiBzdHJpbmcpIHtcbiAgaWYgKGN1cnJlbmN5U3RyID09PSBTSEVLRUxfQ1VSUkVOQ1lfS0VZV09SRCB8fCBjdXJyZW5jeVN0ciA9PT0gQUxUX1NIRUtFTF9DVVJSRU5DWSkge1xuICAgIHJldHVybiBTSEVLRUxfQ1VSUkVOQ1k7XG4gIH1cbiAgcmV0dXJuIGN1cnJlbmN5U3RyO1xufVxuXG5mdW5jdGlvbiBnZXRJbnN0YWxsbWVudHNJbmZvKHR4bjogU2NyYXBlZFRyYW5zYWN0aW9uKTogVHJhbnNhY3Rpb25JbnN0YWxsbWVudHMgfCB1bmRlZmluZWQge1xuICBpZiAoIXR4bi5tb3JlSW5mbyB8fCAhdHhuLm1vcmVJbmZvLmluY2x1ZGVzKElOU1RBTExNRU5UU19LRVlXT1JEKSkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgY29uc3QgbWF0Y2hlcyA9IHR4bi5tb3JlSW5mby5tYXRjaCgvXFxkKy9nKTtcbiAgaWYgKCFtYXRjaGVzIHx8IG1hdGNoZXMubGVuZ3RoIDwgMikge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIG51bWJlcjogcGFyc2VJbnQobWF0Y2hlc1swXSwgMTApLFxuICAgIHRvdGFsOiBwYXJzZUludChtYXRjaGVzWzFdLCAxMCksXG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldFRyYW5zYWN0aW9uVHlwZSh0eG46IFNjcmFwZWRUcmFuc2FjdGlvbikge1xuICByZXR1cm4gZ2V0SW5zdGFsbG1lbnRzSW5mbyh0eG4pID8gVHJhbnNhY3Rpb25UeXBlcy5JbnN0YWxsbWVudHMgOiBUcmFuc2FjdGlvblR5cGVzLk5vcm1hbDtcbn1cblxuZnVuY3Rpb24gY29udmVydFRyYW5zYWN0aW9ucyh0eG5zOiBTY3JhcGVkVHJhbnNhY3Rpb25bXSwgcHJvY2Vzc2VkRGF0ZTogc3RyaW5nKTogVHJhbnNhY3Rpb25bXSB7XG4gIGNvbnN0IGZpbHRlcmVkVHhucyA9IHR4bnMuZmlsdGVyKCh0eG4pID0+IHR4bi5kZWFsU3VtVHlwZSAhPT0gJzEnICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR4bi52b3VjaGVyTnVtYmVyUmF0eiAhPT0gJzAwMDAwMDAwMCcgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHhuLnZvdWNoZXJOdW1iZXJSYXR6T3V0Ym91bmQgIT09ICcwMDAwMDAwMDAnKTtcblxuICByZXR1cm4gZmlsdGVyZWRUeG5zLm1hcCgodHhuKSA9PiB7XG4gICAgY29uc3QgaXNPdXRib3VuZCA9IHR4bi5kZWFsU3VtT3V0Ym91bmQ7XG4gICAgY29uc3QgdHhuRGF0ZVN0ciA9IGlzT3V0Ym91bmQgPyB0eG4uZnVsbFB1cmNoYXNlRGF0ZU91dGJvdW5kIDogdHhuLmZ1bGxQdXJjaGFzZURhdGU7XG4gICAgY29uc3QgdHhuTW9tZW50ID0gbW9tZW50KHR4bkRhdGVTdHIsIERBVEVfRk9STUFUKTtcblxuICAgIGNvbnN0IGN1cnJlbnRQcm9jZXNzZWREYXRlID0gdHhuLmZ1bGxQYXltZW50RGF0ZSA/XG4gICAgICBtb21lbnQodHhuLmZ1bGxQYXltZW50RGF0ZSwgREFURV9GT1JNQVQpLnRvSVNPU3RyaW5nKCkgOlxuICAgICAgcHJvY2Vzc2VkRGF0ZTtcbiAgICBjb25zdCByZXN1bHQ6IFRyYW5zYWN0aW9uID0ge1xuICAgICAgdHlwZTogZ2V0VHJhbnNhY3Rpb25UeXBlKHR4biksXG4gICAgICBpZGVudGlmaWVyOiBwYXJzZUludChpc091dGJvdW5kID8gdHhuLnZvdWNoZXJOdW1iZXJSYXR6T3V0Ym91bmQgOiB0eG4udm91Y2hlck51bWJlclJhdHosIDEwKSxcbiAgICAgIGRhdGU6IHR4bk1vbWVudC50b0lTT1N0cmluZygpLFxuICAgICAgcHJvY2Vzc2VkRGF0ZTogY3VycmVudFByb2Nlc3NlZERhdGUsXG4gICAgICBvcmlnaW5hbEFtb3VudDogaXNPdXRib3VuZCA/IC10eG4uZGVhbFN1bU91dGJvdW5kIDogLXR4bi5kZWFsU3VtLFxuICAgICAgb3JpZ2luYWxDdXJyZW5jeTogY29udmVydEN1cnJlbmN5KHR4bi5jdXJyZW5jeUlkKSxcbiAgICAgIGNoYXJnZWRBbW91bnQ6IGlzT3V0Ym91bmQgPyAtdHhuLnBheW1lbnRTdW1PdXRib3VuZCA6IC10eG4ucGF5bWVudFN1bSxcbiAgICAgIGRlc2NyaXB0aW9uOiBpc091dGJvdW5kID8gdHhuLmZ1bGxTdXBwbGllck5hbWVPdXRib3VuZCA6IHR4bi5mdWxsU3VwcGxpZXJOYW1lSGViLFxuICAgICAgbWVtbzogdHhuLm1vcmVJbmZvIHx8ICcnLFxuICAgICAgaW5zdGFsbG1lbnRzOiBnZXRJbnN0YWxsbWVudHNJbmZvKHR4bikgfHwgdW5kZWZpbmVkLFxuICAgICAgc3RhdHVzOiBUcmFuc2FjdGlvblN0YXR1c2VzLkNvbXBsZXRlZCxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGZldGNoVHJhbnNhY3Rpb25zKHBhZ2U6IFBhZ2UsIG9wdGlvbnM6IEV4dGVuZGVkU2NyYXBlck9wdGlvbnMsIHN0YXJ0TW9tZW50OiBNb21lbnQsIG1vbnRoTW9tZW50OiBNb21lbnQpOiBQcm9taXNlPFNjcmFwZWRBY2NvdW50c1dpdGhJbmRleD4ge1xuICBjb25zdCBhY2NvdW50cyA9IGF3YWl0IGZldGNoQWNjb3VudHMocGFnZSwgb3B0aW9ucy5zZXJ2aWNlc1VybCwgbW9udGhNb21lbnQpO1xuICBjb25zdCBkYXRhVXJsID0gZ2V0VHJhbnNhY3Rpb25zVXJsKG9wdGlvbnMuc2VydmljZXNVcmwsIG1vbnRoTW9tZW50KTtcbiAgY29uc3QgZGF0YVJlc3VsdCA9IGF3YWl0IGZldGNoR2V0V2l0aGluUGFnZTxTY3JhcGVkVHJhbnNhY3Rpb25EYXRhPihwYWdlLCBkYXRhVXJsKTtcbiAgaWYgKGRhdGFSZXN1bHQgJiYgXy5nZXQoZGF0YVJlc3VsdCwgJ0hlYWRlci5TdGF0dXMnKSA9PT0gJzEnICYmIGRhdGFSZXN1bHQuQ2FyZHNUcmFuc2FjdGlvbnNMaXN0QmVhbikge1xuICAgIGNvbnN0IGFjY291bnRUeG5zOiBTY3JhcGVkQWNjb3VudHNXaXRoSW5kZXggPSB7fTtcbiAgICBhY2NvdW50cy5mb3JFYWNoKChhY2NvdW50KSA9PiB7XG4gICAgICBjb25zdCB0eG5Hcm91cHM6IFNjcmFwZWRDdXJyZW50Q2FyZFRyYW5zYWN0aW9uc1tdID0gXy5nZXQoZGF0YVJlc3VsdCwgYENhcmRzVHJhbnNhY3Rpb25zTGlzdEJlYW4uSW5kZXgke2FjY291bnQuaW5kZXh9LkN1cnJlbnRDYXJkVHJhbnNhY3Rpb25zYCk7XG4gICAgICBpZiAodHhuR3JvdXBzKSB7XG4gICAgICAgIGxldCBhbGxUeG5zOiBUcmFuc2FjdGlvbltdID0gW107XG4gICAgICAgIHR4bkdyb3Vwcy5mb3JFYWNoKCh0eG5Hcm91cCkgPT4ge1xuICAgICAgICAgIGlmICh0eG5Hcm91cC50eG5Jc3JhZWwpIHtcbiAgICAgICAgICAgIGNvbnN0IHR4bnMgPSBjb252ZXJ0VHJhbnNhY3Rpb25zKHR4bkdyb3VwLnR4bklzcmFlbCwgYWNjb3VudC5wcm9jZXNzZWREYXRlKTtcbiAgICAgICAgICAgIGFsbFR4bnMucHVzaCguLi50eG5zKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHR4bkdyb3VwLnR4bkFicm9hZCkge1xuICAgICAgICAgICAgY29uc3QgdHhucyA9IGNvbnZlcnRUcmFuc2FjdGlvbnModHhuR3JvdXAudHhuQWJyb2FkLCBhY2NvdW50LnByb2Nlc3NlZERhdGUpO1xuICAgICAgICAgICAgYWxsVHhucy5wdXNoKC4uLnR4bnMpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKCFvcHRpb25zLmNvbWJpbmVJbnN0YWxsbWVudHMpIHtcbiAgICAgICAgICBhbGxUeG5zID0gZml4SW5zdGFsbG1lbnRzKGFsbFR4bnMpO1xuICAgICAgICB9XG4gICAgICAgIGFsbFR4bnMgPSBmaWx0ZXJPbGRUcmFuc2FjdGlvbnMoYWxsVHhucywgc3RhcnRNb21lbnQsIG9wdGlvbnMuY29tYmluZUluc3RhbGxtZW50cyB8fCBmYWxzZSk7XG5cbiAgICAgICAgYWNjb3VudFR4bnNbYWNjb3VudC5hY2NvdW50TnVtYmVyXSA9IHtcbiAgICAgICAgICBhY2NvdW50TnVtYmVyOiBhY2NvdW50LmFjY291bnROdW1iZXIsXG4gICAgICAgICAgaW5kZXg6IGFjY291bnQuaW5kZXgsXG4gICAgICAgICAgdHhuczogYWxsVHhucyxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gYWNjb3VudFR4bnM7XG4gIH1cblxuICByZXR1cm4ge307XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGZldGNoQWxsVHJhbnNhY3Rpb25zKHBhZ2U6IFBhZ2UsIG9wdGlvbnM6IEV4dGVuZGVkU2NyYXBlck9wdGlvbnMsIHN0YXJ0TW9tZW50OiBNb21lbnQpIHtcbiAgY29uc3QgZnV0dXJlTW9udGhzVG9TY3JhcGUgPSBvcHRpb25zLmZ1dHVyZU1vbnRoc1RvU2NyYXBlID8/IDE7XG4gIGNvbnN0IGFsbE1vbnRocyA9IGdldEFsbE1vbnRoTW9tZW50cyhzdGFydE1vbWVudCwgZnV0dXJlTW9udGhzVG9TY3JhcGUpO1xuICBjb25zdCByZXN1bHRzOiBTY3JhcGVkQWNjb3VudHNXaXRoSW5kZXhbXSA9IGF3YWl0IFByb21pc2UuYWxsKGFsbE1vbnRocy5tYXAoYXN5bmMgKG1vbnRoTW9tZW50KSA9PiB7XG4gICAgcmV0dXJuIGZldGNoVHJhbnNhY3Rpb25zKHBhZ2UsIG9wdGlvbnMsIHN0YXJ0TW9tZW50LCBtb250aE1vbWVudCk7XG4gIH0pKTtcblxuICBjb25zdCBjb21iaW5lZFR4bnM6IFJlY29yZDxzdHJpbmcsIFRyYW5zYWN0aW9uW10+ID0ge307XG5cbiAgcmVzdWx0cy5mb3JFYWNoKChyZXN1bHQpID0+IHtcbiAgICBPYmplY3Qua2V5cyhyZXN1bHQpLmZvckVhY2goKGFjY291bnROdW1iZXIpID0+IHtcbiAgICAgIGxldCB0eG5zRm9yQWNjb3VudCA9IGNvbWJpbmVkVHhuc1thY2NvdW50TnVtYmVyXTtcbiAgICAgIGlmICghdHhuc0ZvckFjY291bnQpIHtcbiAgICAgICAgdHhuc0ZvckFjY291bnQgPSBbXTtcbiAgICAgICAgY29tYmluZWRUeG5zW2FjY291bnROdW1iZXJdID0gdHhuc0ZvckFjY291bnQ7XG4gICAgICB9XG4gICAgICBjb25zdCB0b0JlQWRkZWRUeG5zID0gcmVzdWx0W2FjY291bnROdW1iZXJdLnR4bnM7XG4gICAgICBjb21iaW5lZFR4bnNbYWNjb3VudE51bWJlcl0ucHVzaCguLi50b0JlQWRkZWRUeG5zKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgY29uc3QgYWNjb3VudHMgPSBPYmplY3Qua2V5cyhjb21iaW5lZFR4bnMpLm1hcCgoYWNjb3VudE51bWJlcikgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICBhY2NvdW50TnVtYmVyLFxuICAgICAgdHhuczogY29tYmluZWRUeG5zW2FjY291bnROdW1iZXJdLFxuICAgIH07XG4gIH0pO1xuXG4gIHJldHVybiB7XG4gICAgc3VjY2VzczogdHJ1ZSxcbiAgICBhY2NvdW50cyxcbiAgfTtcbn1cblxuXG5jbGFzcyBJc3JhY2FyZEFtZXhCYXNlU2NyYXBlciBleHRlbmRzIEJhc2VTY3JhcGVyV2l0aEJyb3dzZXIge1xuICBwcml2YXRlIGJhc2VVcmw6IHN0cmluZztcblxuICBwcml2YXRlIGNvbXBhbnlDb2RlOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBzZXJ2aWNlc1VybDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IFNjcmFwZXJPcHRpb25zLCBiYXNlVXJsOiBzdHJpbmcsIGNvbXBhbnlDb2RlOiBzdHJpbmcpIHtcbiAgICBzdXBlcihvcHRpb25zKTtcblxuICAgIHRoaXMuYmFzZVVybCA9IGJhc2VVcmw7XG4gICAgdGhpcy5jb21wYW55Q29kZSA9IGNvbXBhbnlDb2RlO1xuICAgIHRoaXMuc2VydmljZXNVcmwgPSBgJHtiYXNlVXJsfS9zZXJ2aWNlcy9Qcm94eVJlcXVlc3RIYW5kbGVyLmFzaHhgO1xuICB9XG5cbiAgYXN5bmMgbG9naW4oY3JlZGVudGlhbHM6IFNjcmFwZXJDcmVkZW50aWFscyk6IFByb21pc2U8U2NhcGVyU2NyYXBpbmdSZXN1bHQ+IHtcbiAgICBhd2FpdCB0aGlzLnBhZ2Uuc2V0UmVxdWVzdEludGVyY2VwdGlvbih0cnVlKTtcbiAgICB0aGlzLnBhZ2Uub24oJ3JlcXVlc3QnLCAocmVxdWVzdCkgPT4ge1xuICAgICAgaWYgKHJlcXVlc3QudXJsKCkuaW5jbHVkZXMoJ2RldGVjdG9yLWRvbS5taW4uanMnKSkge1xuICAgICAgICBkZWJ1ZygnZm9yY2UgYWJvcnQgZm9yIHJlcXVlc3QgZG8gZG93bmxvYWQgZGV0ZWN0b3ItZG9tLm1pbi5qcyByZXNvdXJjZScpO1xuICAgICAgICByZXF1ZXN0LmFib3J0KCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXF1ZXN0LmNvbnRpbnVlKCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBkZWJ1ZygnbmF2aWdhdGUgdG8gbG9naW4gcGFnZScpO1xuICAgIGF3YWl0IHRoaXMubmF2aWdhdGVUbyhgJHt0aGlzLmJhc2VVcmx9L3BlcnNvbmFsYXJlYS9Mb2dpbmApO1xuXG4gICAgdGhpcy5lbWl0UHJvZ3Jlc3MoU2NhcGVyUHJvZ3Jlc3NUeXBlcy5Mb2dnaW5nSW4pO1xuXG4gICAgY29uc3QgdmFsaWRhdGVVcmwgPSBgJHt0aGlzLnNlcnZpY2VzVXJsfT9yZXFOYW1lPVZhbGlkYXRlSWREYXRhYDtcbiAgICBjb25zdCB2YWxpZGF0ZVJlcXVlc3QgPSB7XG4gICAgICBpZDogY3JlZGVudGlhbHMuaWQsXG4gICAgICBjYXJkU3VmZml4OiBjcmVkZW50aWFscy5jYXJkNkRpZ2l0cyxcbiAgICAgIGNvdW50cnlDb2RlOiBDT1VOVFJZX0NPREUsXG4gICAgICBpZFR5cGU6IElEX1RZUEUsXG4gICAgICBjaGVja0xldmVsOiAnMScsXG4gICAgICBjb21wYW55Q29kZTogdGhpcy5jb21wYW55Q29kZSxcbiAgICB9O1xuICAgIGNvbnN0IHZhbGlkYXRlUmVzdWx0ID0gYXdhaXQgZmV0Y2hQb3N0V2l0aGluUGFnZTxTY3JhcGVkTG9naW5WYWxpZGF0aW9uPih0aGlzLnBhZ2UsIHZhbGlkYXRlVXJsLCB2YWxpZGF0ZVJlcXVlc3QpO1xuICAgIGlmICghdmFsaWRhdGVSZXN1bHQgfHwgIXZhbGlkYXRlUmVzdWx0LkhlYWRlciB8fCB2YWxpZGF0ZVJlc3VsdC5IZWFkZXIuU3RhdHVzICE9PSAnMScgfHwgIXZhbGlkYXRlUmVzdWx0LlZhbGlkYXRlSWREYXRhQmVhbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd1bmtub3duIGVycm9yIGR1cmluZyBsb2dpbicpO1xuICAgIH1cblxuICAgIGNvbnN0IHZhbGlkYXRlUmV0dXJuQ29kZSA9IHZhbGlkYXRlUmVzdWx0LlZhbGlkYXRlSWREYXRhQmVhbi5yZXR1cm5Db2RlO1xuICAgIGRlYnVnKGB1c2VyIHZhbGlkYXRlIHdpdGggcmV0dXJuIGNvZGUgJyR7dmFsaWRhdGVSZXR1cm5Db2RlfSdgKTtcbiAgICBpZiAodmFsaWRhdGVSZXR1cm5Db2RlID09PSAnMScpIHtcbiAgICAgIGNvbnN0IHsgdXNlck5hbWUgfSA9IHZhbGlkYXRlUmVzdWx0LlZhbGlkYXRlSWREYXRhQmVhbjtcblxuICAgICAgY29uc3QgbG9naW5VcmwgPSBgJHt0aGlzLnNlcnZpY2VzVXJsfT9yZXFOYW1lPXBlcmZvcm1Mb2dvbklgO1xuICAgICAgY29uc3QgcmVxdWVzdCA9IHtcbiAgICAgICAgS29kTWlzaHRhbWVzaDogdXNlck5hbWUsXG4gICAgICAgIE1pc3BhclppaHV5OiBjcmVkZW50aWFscy5pZCxcbiAgICAgICAgU2lzbWE6IGNyZWRlbnRpYWxzLnBhc3N3b3JkLFxuICAgICAgICBjYXJkU3VmZml4OiBjcmVkZW50aWFscy5jYXJkNkRpZ2l0cyxcbiAgICAgICAgY291bnRyeUNvZGU6IENPVU5UUllfQ09ERSxcbiAgICAgICAgaWRUeXBlOiBJRF9UWVBFLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IGxvZ2luUmVzdWx0ID0gYXdhaXQgZmV0Y2hQb3N0V2l0aGluUGFnZTx7c3RhdHVzOiBzdHJpbmd9Pih0aGlzLnBhZ2UsIGxvZ2luVXJsLCByZXF1ZXN0KTtcbiAgICAgIGRlYnVnKGB1c2VyIGxvZ2luIHdpdGggc3RhdHVzICcke2xvZ2luUmVzdWx0Py5zdGF0dXN9J2ApO1xuXG4gICAgICBpZiAobG9naW5SZXN1bHQgJiYgbG9naW5SZXN1bHQuc3RhdHVzID09PSAnMScpIHtcbiAgICAgICAgdGhpcy5lbWl0UHJvZ3Jlc3MoU2NhcGVyUHJvZ3Jlc3NUeXBlcy5Mb2dpblN1Y2Nlc3MpO1xuICAgICAgICByZXR1cm4geyBzdWNjZXNzOiB0cnVlIH07XG4gICAgICB9XG5cbiAgICAgIGlmIChsb2dpblJlc3VsdCAmJiBsb2dpblJlc3VsdC5zdGF0dXMgPT09ICczJykge1xuICAgICAgICB0aGlzLmVtaXRQcm9ncmVzcyhTY2FwZXJQcm9ncmVzc1R5cGVzLkNoYW5nZVBhc3N3b3JkKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgICAgICBlcnJvclR5cGU6IFNjcmFwZXJFcnJvclR5cGVzLkNoYW5nZVBhc3N3b3JkLFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICB0aGlzLmVtaXRQcm9ncmVzcyhTY2FwZXJQcm9ncmVzc1R5cGVzLkxvZ2luRmFpbGVkKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgICBlcnJvclR5cGU6IFNjcmFwZXJFcnJvclR5cGVzLkludmFsaWRQYXNzd29yZCxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKHZhbGlkYXRlUmV0dXJuQ29kZSA9PT0gJzQnKSB7XG4gICAgICB0aGlzLmVtaXRQcm9ncmVzcyhTY2FwZXJQcm9ncmVzc1R5cGVzLkNoYW5nZVBhc3N3b3JkKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgICBlcnJvclR5cGU6IFNjcmFwZXJFcnJvclR5cGVzLkNoYW5nZVBhc3N3b3JkLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICB0aGlzLmVtaXRQcm9ncmVzcyhTY2FwZXJQcm9ncmVzc1R5cGVzLkxvZ2luRmFpbGVkKTtcbiAgICByZXR1cm4ge1xuICAgICAgc3VjY2VzczogZmFsc2UsXG4gICAgICBlcnJvclR5cGU6IFNjcmFwZXJFcnJvclR5cGVzLkludmFsaWRQYXNzd29yZCxcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgZmV0Y2hEYXRhKCkge1xuICAgIGNvbnN0IGRlZmF1bHRTdGFydE1vbWVudCA9IG1vbWVudCgpLnN1YnRyYWN0KDEsICd5ZWFycycpO1xuICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IHRoaXMub3B0aW9ucy5zdGFydERhdGUgfHwgZGVmYXVsdFN0YXJ0TW9tZW50LnRvRGF0ZSgpO1xuICAgIGNvbnN0IHN0YXJ0TW9tZW50ID0gbW9tZW50Lm1heChkZWZhdWx0U3RhcnRNb21lbnQsIG1vbWVudChzdGFydERhdGUpKTtcblxuICAgIHJldHVybiBmZXRjaEFsbFRyYW5zYWN0aW9ucyh0aGlzLnBhZ2UsIHtcbiAgICAgIC4uLnRoaXMub3B0aW9ucyxcbiAgICAgIHNlcnZpY2VzVXJsOiB0aGlzLnNlcnZpY2VzVXJsLFxuICAgICAgY29tcGFueUNvZGU6IHRoaXMuY29tcGFueUNvZGUsXG4gICAgfSwgc3RhcnRNb21lbnQpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IElzcmFjYXJkQW1leEJhc2VTY3JhcGVyO1xuIl19
|
|
@@ -153,13 +153,17 @@ class BaseScraperWithBrowser extends _baseScraper.BaseScraper {
|
|
|
153
153
|
} else {
|
|
154
154
|
const executablePath = this.options.executablePath || undefined;
|
|
155
155
|
const args = this.options.args || [];
|
|
156
|
+
const {
|
|
157
|
+
timeout
|
|
158
|
+
} = this.options;
|
|
156
159
|
const headless = !this.options.showBrowser;
|
|
157
160
|
debug(`launch a browser with headless mode = ${headless}`);
|
|
158
161
|
this.browser = await _puppeteer.default.launch({
|
|
159
162
|
env,
|
|
160
163
|
headless,
|
|
161
164
|
executablePath,
|
|
162
|
-
args
|
|
165
|
+
args,
|
|
166
|
+
timeout
|
|
163
167
|
});
|
|
164
168
|
}
|
|
165
169
|
|
|
@@ -323,4 +327,4 @@ class BaseScraperWithBrowser extends _baseScraper.BaseScraper {
|
|
|
323
327
|
}
|
|
324
328
|
|
|
325
329
|
exports.BaseScraperWithBrowser = BaseScraperWithBrowser;
|
|
326
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JhcGVycy9iYXNlLXNjcmFwZXItd2l0aC1icm93c2VyLnRzIl0sIm5hbWVzIjpbIlZJRVdQT1JUX1dJRFRIIiwiVklFV1BPUlRfSEVJR0hUIiwiT0tfU1RBVFVTIiwiZGVidWciLCJMb2dpbkJhc2VSZXN1bHRzIiwiVGltZW91dCIsIkdlbmVyaWMiLCJHZW5lcmFsIiwiU2NyYXBlckVycm9yVHlwZXMiLCJyZXN0IiwiTG9naW5SZXN1bHRzIiwiZ2V0S2V5QnlWYWx1ZSIsIm9iamVjdCIsInZhbHVlIiwicGFnZSIsImtleXMiLCJPYmplY3QiLCJrZXkiLCJjb25kaXRpb25zIiwiY29uZGl0aW9uIiwicmVzdWx0IiwiUmVnRXhwIiwidGVzdCIsInRvTG93ZXJDYXNlIiwiUHJvbWlzZSIsInJlc29sdmUiLCJVbmtub3duRXJyb3IiLCJoYW5kbGVMb2dpblJlc3VsdCIsInNjcmFwZXIiLCJsb2dpblJlc3VsdCIsIlN1Y2Nlc3MiLCJlbWl0UHJvZ3Jlc3MiLCJTY2FwZXJQcm9ncmVzc1R5cGVzIiwiTG9naW5TdWNjZXNzIiwic3VjY2VzcyIsIkludmFsaWRQYXNzd29yZCIsIkxvZ2luRmFpbGVkIiwiZXJyb3JUeXBlIiwiZXJyb3JNZXNzYWdlIiwiQ2hhbmdlUGFzc3dvcmQiLCJFcnJvciIsImNyZWF0ZUdlbmVyYWxFcnJvciIsIkJhc2VTY3JhcGVyV2l0aEJyb3dzZXIiLCJCYXNlU2NyYXBlciIsImdldFZpZXdQb3J0Iiwid2lkdGgiLCJoZWlnaHQiLCJpbml0aWFsaXplIiwiZW52Iiwib3B0aW9ucyIsInZlcmJvc2UiLCJERUJVRyIsInByb2Nlc3MiLCJicm93c2VyIiwiZXhlY3V0YWJsZVBhdGgiLCJ1bmRlZmluZWQiLCJhcmdzIiwiaGVhZGxlc3MiLCJzaG93QnJvd3NlciIsInB1cHBldGVlciIsImxhdW5jaCIsInByZXBhcmVCcm93c2VyIiwicGFnZXMiLCJsZW5ndGgiLCJuZXdQYWdlIiwiZGVmYXVsdFRpbWVvdXQiLCJzZXREZWZhdWx0VGltZW91dCIsInByZXBhcmVQYWdlIiwidmlld3BvcnQiLCJzZXRWaWV3cG9ydCIsIm9uIiwicmVxdWVzdCIsImZhaWx1cmUiLCJlcnJvclRleHQiLCJ1cmwiLCJuYXZpZ2F0ZVRvIiwidGltZW91dCIsInBhZ2VUb1VzZSIsInJlc3BvbnNlIiwiZ290byIsInN0YXR1cyIsImdldExvZ2luT3B0aW9ucyIsIl9jcmVkZW50aWFscyIsImNvbXBhbnlJZCIsImZpbGxJbnB1dHMiLCJwYWdlT3JGcmFtZSIsImZpZWxkcyIsIm1vZGlmaWVkIiwiaW5wdXQiLCJzaGlmdCIsInNlbGVjdG9yIiwibG9naW4iLCJjcmVkZW50aWFscyIsImxvZ2luT3B0aW9ucyIsInVzZXJBZ2VudCIsInNldFVzZXJBZ2VudCIsImxvZ2luVXJsIiwiY2hlY2tSZWFkaW5lc3MiLCJzdWJtaXRCdXR0b25TZWxlY3RvciIsImxvZ2luRnJhbWVPclBhZ2UiLCJwcmVBY3Rpb24iLCJMb2dnaW5nSW4iLCJwb3N0QWN0aW9uIiwiY3VycmVudCIsInBvc3NpYmxlUmVzdWx0cyIsInRlcm1pbmF0ZSIsIl9zdWNjZXNzIiwiVGVybWluYXRpbmciLCJzdG9yZUZhaWx1cmVTY3JlZW5TaG90UGF0aCIsInNjcmVlbnNob3QiLCJwYXRoIiwiZnVsbFBhZ2UiLCJjbG9zZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFFQTs7QUFLQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7QUFFQSxNQUFNQSxjQUFjLEdBQUcsSUFBdkI7QUFDQSxNQUFNQyxlQUFlLEdBQUcsR0FBeEI7QUFDQSxNQUFNQyxTQUFTLEdBQUcsR0FBbEI7QUFFQSxNQUFNQyxLQUFLLEdBQUcscUJBQVMsMkJBQVQsQ0FBZDtJQUVLQyxnQjs7V0FBQUEsZ0I7QUFBQUEsRUFBQUEsZ0I7QUFBQUEsRUFBQUEsZ0I7R0FBQUEsZ0IsS0FBQUEsZ0I7O0FBS0wsTUFBTTtBQUNKQyxFQUFBQSxPQURJO0FBQ0tDLEVBQUFBLE9BREw7QUFDY0MsRUFBQUE7QUFEZCxJQUVGQyw4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LElBQTdDLENBQXZDO0FBQ0FYLElBQUFBLEtBQUssQ0FBRSx3QkFBdUIwQixXQUFZLEVBQXJDLENBQUw7QUFDQSxXQUFPRixpQkFBaUIsQ0FBQyxJQUFELEVBQU9FLFdBQVAsQ0FBeEI7QUFDRDs7QUFFRCxRQUFNNEUsU0FBTixDQUFnQkMsUUFBaEIsRUFBbUM7QUFDakN2RyxJQUFBQSxLQUFLLENBQUUsc0NBQXFDdUcsUUFBUyxFQUFoRCxDQUFMO0FBQ0EsU0FBSzNFLFlBQUwsQ0FBa0JDLGlDQUFvQjJFLFdBQXRDOztBQUVBLFFBQUksQ0FBQ0QsUUFBRCxJQUFhLENBQUMsQ0FBQyxLQUFLekQsT0FBTCxDQUFhMkQsMEJBQWhDLEVBQTREO0FBQzFEekcsTUFBQUEsS0FBSyxDQUFFLDBDQUF5QyxLQUFLOEMsT0FBTCxDQUFhMkQsMEJBQTJCLEVBQW5GLENBQUw7QUFDQSxZQUFNLEtBQUs5RixJQUFMLENBQVUrRixVQUFWLENBQXFCO0FBQ3pCQyxRQUFBQSxJQUFJLEVBQUUsS0FBSzdELE9BQUwsQ0FBYTJELDBCQURNO0FBRXpCRyxRQUFBQSxRQUFRLEVBQUU7QUFGZSxPQUFyQixDQUFOO0FBSUQ7O0FBRUQsUUFBSSxDQUFDLEtBQUsxRCxPQUFWLEVBQW1CO0FBQ2pCO0FBQ0Q7O0FBRUQsVUFBTSxLQUFLQSxPQUFMLENBQWEyRCxLQUFiLEVBQU47QUFDRDs7QUEzTDhDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHB1cHBldGVlciwgeyBCcm93c2VyLCBGcmFtZSwgUGFnZSB9IGZyb20gJ3B1cHBldGVlcic7XG5cbmltcG9ydCB7XG4gIFNjcmFwZXJFcnJvclR5cGVzLFxuICBCYXNlU2NyYXBlciwgU2NhcGVyU2NyYXBpbmdSZXN1bHQsIFNjYXBlclByb2dyZXNzVHlwZXMsXG4gIFNjcmFwZXJDcmVkZW50aWFscyxcbn0gZnJvbSAnLi9iYXNlLXNjcmFwZXInO1xuaW1wb3J0IHsgZ2V0Q3VycmVudFVybCwgd2FpdEZvck5hdmlnYXRpb24gfSBmcm9tICcuLi9oZWxwZXJzL25hdmlnYXRpb24nO1xuaW1wb3J0IHsgY2xpY2tCdXR0b24sIGZpbGxJbnB1dCwgd2FpdFVudGlsRWxlbWVudEZvdW5kIH0gZnJvbSAnLi4vaGVscGVycy9lbGVtZW50cy1pbnRlcmFjdGlvbnMnO1xuaW1wb3J0IHsgZ2V0RGVidWcgfSBmcm9tICcuLi9oZWxwZXJzL2RlYnVnJztcblxuY29uc3QgVklFV1BPUlRfV0lEVEggPSAxMDI0O1xuY29uc3QgVklFV1BPUlRfSEVJR0hUID0gNzY4O1xuY29uc3QgT0tfU1RBVFVTID0gMjAwO1xuXG5jb25zdCBkZWJ1ZyA9IGdldERlYnVnKCdiYXNlLXNjcmFwZXItd2l0aC1icm93c2VyJyk7XG5cbmVudW0gTG9naW5CYXNlUmVzdWx0cyB7XG4gIFN1Y2Nlc3MgPSAnU1VDQ0VTUycsXG4gIFVua25vd25FcnJvciA9ICdVTktOT1dOX0VSUk9SJ1xufVxuXG5jb25zdCB7XG4gIFRpbWVvdXQsIEdlbmVyaWMsIEdlbmVyYWwsIC4uLnJlc3Rcbn0gPSBTY3JhcGVyRXJyb3JUeXBlcztcbmV4cG9ydCBjb25zdCBMb2dpblJlc3VsdHMgPSB7XG4gIC4uLnJlc3QsXG4gIC4uLkxvZ2luQmFzZVJlc3VsdHMsXG59O1xuXG5leHBvcnQgdHlwZSBMb2dpblJlc3VsdHMgPSBFeGNsdWRlPFNjcmFwZXJFcnJvclR5cGVzLFxuU2NyYXBlckVycm9yVHlwZXMuVGltZW91dFxufCBTY3JhcGVyRXJyb3JUeXBlcy5HZW5lcmljXG58IFNjcmFwZXJFcnJvclR5cGVzLkdlbmVyYWw+IHwgTG9naW5CYXNlUmVzdWx0cztcblxuZXhwb3J0IHR5cGUgUG9zc2libGVMb2dpblJlc3VsdHMgPSB7XG4gIFtrZXkgaW4gTG9naW5SZXN1bHRzXT86IChzdHJpbmcgfCBSZWdFeHAgfCAoKG9wdGlvbnM/OiB7IHBhZ2U/OiBQYWdlfSkgPT4gUHJvbWlzZTxib29sZWFuPikpW11cbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgTG9naW5PcHRpb25zIHtcbiAgbG9naW5Vcmw6IHN0cmluZztcbiAgY2hlY2tSZWFkaW5lc3M/OiAoKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBmaWVsZHM6IHtzZWxlY3Rvcjogc3RyaW5nLCB2YWx1ZTogc3RyaW5nfVtdO1xuICBzdWJtaXRCdXR0b25TZWxlY3Rvcjogc3RyaW5nIHwgKCgpID0+IFByb21pc2U8dm9pZD4pO1xuICBwcmVBY3Rpb24/OiAoKSA9PiBQcm9taXNlPEZyYW1lIHwgdm9pZD47XG4gIHBvc3RBY3Rpb24/OiAoKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBwb3NzaWJsZVJlc3VsdHM6IFBvc3NpYmxlTG9naW5SZXN1bHRzO1xuICB1c2VyQWdlbnQ/OiBzdHJpbmc7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldEtleUJ5VmFsdWUob2JqZWN0OiBQb3NzaWJsZUxvZ2luUmVzdWx0cywgdmFsdWU6IHN0cmluZywgcGFnZTogUGFnZSk6IFByb21pc2U8TG9naW5SZXN1bHRzPiB7XG4gIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpO1xuICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IGNvbmRpdGlvbnMgPSBvYmplY3Rba2V5XTtcblxuICAgIGZvciAoY29uc3QgY29uZGl0aW9uIG9mIGNvbmRpdGlvbnMpIHtcbiAgICAgIGxldCByZXN1bHQgPSBmYWxzZTtcblxuICAgICAgaWYgKGNvbmRpdGlvbiBpbnN0YW5jZW9mIFJlZ0V4cCkge1xuICAgICAgICByZXN1bHQgPSBjb25kaXRpb24udGVzdCh2YWx1ZSk7XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiBjb25kaXRpb24gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmVzdWx0ID0gYXdhaXQgY29uZGl0aW9uKHsgcGFnZSwgdmFsdWUgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXN1bHQgPSB2YWx1ZS50b0xvd2VyQ2FzZSgpID09PSBjb25kaXRpb24udG9Mb3dlckNhc2UoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoa2V5KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKExvZ2luUmVzdWx0cy5Vbmtub3duRXJyb3IpO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVMb2dpblJlc3VsdChzY3JhcGVyOiBCYXNlU2NyYXBlcldpdGhCcm93c2VyLCBsb2dpblJlc3VsdDogTG9naW5SZXN1bHRzKSB7XG4gIHN3aXRjaCAobG9naW5SZXN1bHQpIHtcbiAgICBjYXNlIExvZ2luUmVzdWx0cy5TdWNjZXNzOlxuICAgICAgc2NyYXBlci5lbWl0UHJvZ3Jlc3MoU2NhcGVyUHJvZ3Jlc3NUeXBlcy5Mb2dpblN1Y2Nlc3MpO1xuICAgICAgcmV0dXJuIHsgc3VjY2VzczogdHJ1ZSB9O1xuICAgIGNhc2UgTG9naW5SZXN1bHRzLkludmFsaWRQYXNzd29yZDpcbiAgICBjYXNlIExvZ2luUmVzdWx0cy5Vbmtub3duRXJyb3I6XG4gICAgICBzY3JhcGVyLmVtaXRQcm9ncmVzcyhTY2FwZXJQcm9ncmVzc1R5cGVzLkxvZ2luRmFpbGVkKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgICBlcnJvclR5cGU6IGxvZ2luUmVzdWx0ID09PSBMb2dpblJlc3VsdHMuSW52YWxpZFBhc3N3b3JkID8gU2NyYXBlckVycm9yVHlwZXMuSW52YWxpZFBhc3N3b3JkIDpcbiAgICAgICAgICBTY3JhcGVyRXJyb3JUeXBlcy5HZW5lcmFsLFxuICAgICAgICBlcnJvck1lc3NhZ2U6IGBMb2dpbiBmYWlsZWQgd2l0aCAke2xvZ2luUmVzdWx0fSBlcnJvcmAsXG4gICAgICB9O1xuICAgIGNhc2UgTG9naW5SZXN1bHRzLkNoYW5nZVBhc3N3b3JkOlxuICAgICAgc2NyYXBlci5lbWl0UHJvZ3Jlc3MoU2NhcGVyUHJvZ3Jlc3NUeXBlcy5DaGFuZ2VQYXNzd29yZCk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgICAgZXJyb3JUeXBlOiBTY3JhcGVyRXJyb3JUeXBlcy5DaGFuZ2VQYXNzd29yZCxcbiAgICAgIH07XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBFcnJvcihgdW5leHBlY3RlZCBsb2dpbiByZXN1bHQgXCIke2xvZ2luUmVzdWx0fVwiYCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gY3JlYXRlR2VuZXJhbEVycm9yKCk6IFNjYXBlclNjcmFwaW5nUmVzdWx0IHtcbiAgcmV0dXJuIHtcbiAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICBlcnJvclR5cGU6IFNjcmFwZXJFcnJvclR5cGVzLkdlbmVyYWwsXG4gIH07XG59XG5cbmNsYXNzIEJhc2VTY3JhcGVyV2l0aEJyb3dzZXIgZXh0ZW5kcyBCYXNlU2NyYXBlciB7XG4gIC8vIE5PVElDRSAtIGl0IGlzIGRpc2NvdXJhZ2UgdG8gdXNlIGJhbmcgKCEpIGluIGdlbmVyYWwuIEl0IGlzIHVzZWQgaGVyZSBiZWNhdXNlXG4gIC8vIGFsbCB0aGUgY2xhc3NlcyB0aGF0IGluaGVyaXQgZnJvbSB0aGlzIGJhc2UgYXNzdW1lIGlzIGl0IG1hbmRhdG9yeS5cbiAgcHJvdGVjdGVkIGJyb3dzZXIhOiBCcm93c2VyO1xuXG4gIC8vIE5PVElDRSAtIGl0IGlzIGRpc2NvdXJhZ2UgdG8gdXNlIGJhbmcgKCEpIGluIGdlbmVyYWwuIEl0IGlzIHVzZWQgaGVyZSBiZWNhdXNlXG4gIC8vIGFsbCB0aGUgY2xhc3NlcyB0aGF0IGluaGVyaXQgZnJvbSB0aGlzIGJhc2UgYXNzdW1lIGlzIGl0IG1hbmRhdG9yeS5cbiAgcHJvdGVjdGVkIHBhZ2UhOiBQYWdlO1xuXG4gIHByb3RlY3RlZCBnZXRWaWV3UG9ydCgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgd2lkdGg6IFZJRVdQT1JUX1dJRFRILFxuICAgICAgaGVpZ2h0OiBWSUVXUE9SVF9IRUlHSFQsXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIGluaXRpYWxpemUoKSB7XG4gICAgYXdhaXQgc3VwZXIuaW5pdGlhbGl6ZSgpO1xuICAgIGRlYnVnKCdpbml0aWFsaXplIHNjcmFwZXInKTtcblxuICAgIGxldCBlbnY6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQ7XG4gICAgaWYgKHRoaXMub3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICBlbnYgPSB7IERFQlVHOiAnKicsIC4uLnByb2Nlc3MuZW52IH07XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiB0aGlzLm9wdGlvbnMuYnJvd3NlciAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5vcHRpb25zLmJyb3dzZXIgIT09IG51bGwpIHtcbiAgICAgIGRlYnVnKCd1c2UgY3VzdG9tIGJyb3dzZXIgaW5zdGFuY2UgcHJvdmlkZWQgaW4gb3B0aW9ucycpO1xuICAgICAgdGhpcy5icm93c2VyID0gdGhpcy5vcHRpb25zLmJyb3dzZXI7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGV4ZWN1dGFibGVQYXRoID0gdGhpcy5vcHRpb25zLmV4ZWN1dGFibGVQYXRoIHx8IHVuZGVmaW5lZDtcbiAgICAgIGNvbnN0IGFyZ3MgPSB0aGlzLm9wdGlvbnMuYXJncyB8fCBbXTtcblxuICAgICAgY29uc3QgaGVhZGxlc3MgPSAhdGhpcy5vcHRpb25zLnNob3dCcm93c2VyO1xuICAgICAgZGVidWcoYGxhdW5jaCBhIGJyb3dzZXIgd2l0aCBoZWFkbGVzcyBtb2RlID0gJHtoZWFkbGVzc31gKTtcbiAgICAgIHRoaXMuYnJvd3NlciA9IGF3YWl0IHB1cHBldGVlci5sYXVuY2goe1xuICAgICAgICBlbnYsXG4gICAgICAgIGhlYWRsZXNzLFxuICAgICAgICBleGVjdXRhYmxlUGF0aCxcbiAgICAgICAgYXJncyxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdGlvbnMucHJlcGFyZUJyb3dzZXIpIHtcbiAgICAgIGRlYnVnKCdleGVjdXRlIFxcJ3ByZXBhcmVCcm93c2VyXFwnIGludGVyY2VwdG9yIHByb3ZpZGVkIGluIG9wdGlvbnMnKTtcbiAgICAgIGF3YWl0IHRoaXMub3B0aW9ucy5wcmVwYXJlQnJvd3Nlcih0aGlzLmJyb3dzZXIpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5icm93c2VyKSB7XG4gICAgICBkZWJ1ZygnZmFpbGVkIHRvIGluaXRpYXRlIGEgYnJvd3NlciwgZXhpdCcpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHBhZ2VzID0gYXdhaXQgdGhpcy5icm93c2VyLnBhZ2VzKCk7XG4gICAgaWYgKHBhZ2VzLmxlbmd0aCkge1xuICAgICAgZGVidWcoJ2Jyb3dzZXIgaGFzIGFscmVhZHkgcGFnZXMgb3BlbiwgdXNlIHRoZSBmaXJzdCBvbmUnKTtcbiAgICAgIFt0aGlzLnBhZ2VdID0gcGFnZXM7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRlYnVnKCdjcmVhdGUgYSBuZXcgYnJvd3NlciBwYWdlJyk7XG4gICAgICB0aGlzLnBhZ2UgPSBhd2FpdCB0aGlzLmJyb3dzZXIubmV3UGFnZSgpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdGlvbnMuZGVmYXVsdFRpbWVvdXQpIHtcbiAgICAgIHRoaXMucGFnZS5zZXREZWZhdWx0VGltZW91dCh0aGlzLm9wdGlvbnMuZGVmYXVsdFRpbWVvdXQpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdGlvbnMucHJlcGFyZVBhZ2UpIHtcbiAgICAgIGRlYnVnKCdleGVjdXRlIFxcJ3ByZXBhcmVQYWdlXFwnIGludGVyY2VwdG9yIHByb3ZpZGVkIGluIG9wdGlvbnMnKTtcbiAgICAgIGF3YWl0IHRoaXMub3B0aW9ucy5wcmVwYXJlUGFnZSh0aGlzLnBhZ2UpO1xuICAgIH1cblxuICAgIGNvbnN0IHZpZXdwb3J0ID0gdGhpcy5nZXRWaWV3UG9ydCgpO1xuICAgIGRlYnVnKGBzZXQgdmlld3BvcnQgdG8gd2lkdGggJHt2aWV3cG9ydC53aWR0aH0sIGhlaWdodCAke3ZpZXdwb3J0LmhlaWdodH1gKTtcbiAgICBhd2FpdCB0aGlzLnBhZ2Uuc2V0Vmlld3BvcnQoe1xuICAgICAgd2lkdGg6IHZpZXdwb3J0LndpZHRoLFxuICAgICAgaGVpZ2h0OiB2aWV3cG9ydC5oZWlnaHQsXG4gICAgfSk7XG5cbiAgICB0aGlzLnBhZ2Uub24oJ3JlcXVlc3RmYWlsZWQnLCAocmVxdWVzdCkgPT4ge1xuICAgICAgZGVidWcoJ1JlcXVlc3QgZmFpbGVkOiAlcyAlcycsIHJlcXVlc3QuZmFpbHVyZSgpPy5lcnJvclRleHQsIHJlcXVlc3QudXJsKCkpO1xuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgbmF2aWdhdGVUbyh1cmw6IHN0cmluZywgcGFnZT86IFBhZ2UsIHRpbWVvdXQ/OiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBwYWdlVG9Vc2UgPSBwYWdlIHx8IHRoaXMucGFnZTtcblxuICAgIGlmICghcGFnZVRvVXNlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgb3B0aW9ucyA9IHsgLi4uKHRpbWVvdXQgPT09IG51bGwgPyBudWxsIDogeyB0aW1lb3V0IH0pIH07XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBwYWdlVG9Vc2UuZ290byh1cmwsIG9wdGlvbnMpO1xuXG4gICAgLy8gbm90ZTogcmVzcG9uc2Ugd2lsbCBiZSBudWxsIHdoZW4gbmF2aWdhdGluZyB0byBzYW1lIHVybCB3aGlsZSBjaGFuZ2luZyB0aGUgaGFzaCBwYXJ0LiB0aGUgY29uZGl0aW9uIGJlbG93IHdpbGwgYWx3YXlzIGFjY2VwdCBudWxsIGFzIHZhbGlkIHJlc3VsdC5cbiAgICBpZiAocmVzcG9uc2UgIT09IG51bGwgJiYgKHJlc3BvbnNlID09PSB1bmRlZmluZWQgfHwgcmVzcG9uc2Uuc3RhdHVzKCkgIT09IE9LX1NUQVRVUykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRXJyb3Igd2hpbGUgdHJ5aW5nIHRvIG5hdmlnYXRlIHRvIHVybCAke3VybH1gKTtcbiAgICB9XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gIGdldExvZ2luT3B0aW9ucyhfY3JlZGVudGlhbHM6IFNjcmFwZXJDcmVkZW50aWFscyk6IExvZ2luT3B0aW9ucyB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBnZXRMb2dpbk9wdGlvbnMoKSBpcyBub3QgY3JlYXRlZCBpbiAke3RoaXMub3B0aW9ucy5jb21wYW55SWR9YCk7XG4gIH1cblxuICBhc3luYyBmaWxsSW5wdXRzKHBhZ2VPckZyYW1lOiBQYWdlIHwgRnJhbWUsIGZpZWxkczogeyBzZWxlY3Rvcjogc3RyaW5nLCB2YWx1ZTogc3RyaW5nfVtdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgbW9kaWZpZWQgPSBbLi4uZmllbGRzXTtcbiAgICBjb25zdCBpbnB1dCA9IG1vZGlmaWVkLnNoaWZ0KCk7XG5cbiAgICBpZiAoIWlucHV0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGF3YWl0IGZpbGxJbnB1dChwYWdlT3JGcmFtZSwgaW5wdXQuc2VsZWN0b3IsIGlucHV0LnZhbHVlKTtcbiAgICBpZiAobW9kaWZpZWQubGVuZ3RoKSB7XG4gICAgICBhd2FpdCB0aGlzLmZpbGxJbnB1dHMocGFnZU9yRnJhbWUsIG1vZGlmaWVkKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBsb2dpbihjcmVkZW50aWFsczogUmVjb3JkPHN0cmluZywgc3RyaW5nPik6IFByb21pc2U8U2NhcGVyU2NyYXBpbmdSZXN1bHQ+IHtcbiAgICBpZiAoIWNyZWRlbnRpYWxzIHx8ICF0aGlzLnBhZ2UpIHtcbiAgICAgIHJldHVybiBjcmVhdGVHZW5lcmFsRXJyb3IoKTtcbiAgICB9XG5cbiAgICBkZWJ1ZygnZXhlY3V0ZSBsb2dpbiBwcm9jZXNzJyk7XG4gICAgY29uc3QgbG9naW5PcHRpb25zID0gdGhpcy5nZXRMb2dpbk9wdGlvbnMoY3JlZGVudGlhbHMpO1xuXG4gICAgaWYgKGxvZ2luT3B0aW9ucy51c2VyQWdlbnQpIHtcbiAgICAgIGRlYnVnKCdzZXQgY3VzdG9tIHVzZXIgYWdlbnQgcHJvdmlkZWQgaW4gb3B0aW9ucycpO1xuICAgICAgYXdhaXQgdGhpcy5wYWdlLnNldFVzZXJBZ2VudChsb2dpbk9wdGlvbnMudXNlckFnZW50KTtcbiAgICB9XG5cbiAgICBkZWJ1ZygnbmF2aWdhdGUgdG8gbG9naW4gdXJsJyk7XG4gICAgYXdhaXQgdGhpcy5uYXZpZ2F0ZVRvKGxvZ2luT3B0aW9ucy5sb2dpblVybCk7XG4gICAgaWYgKGxvZ2luT3B0aW9ucy5jaGVja1JlYWRpbmVzcykge1xuICAgICAgZGVidWcoJ2V4ZWN1dGUgXFwnY2hlY2tSZWFkaW5lc3NcXCcgaW50ZXJjZXB0b3IgcHJvdmlkZWQgaW4gbG9naW4gb3B0aW9ucycpO1xuICAgICAgYXdhaXQgbG9naW5PcHRpb25zLmNoZWNrUmVhZGluZXNzKCk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgbG9naW5PcHRpb25zLnN1Ym1pdEJ1dHRvblNlbGVjdG9yID09PSAnc3RyaW5nJykge1xuICAgICAgZGVidWcoJ3dhaXQgdW50aWwgc3VibWl0IGJ1dHRvbiBpcyBhdmFpbGFibGUnKTtcbiAgICAgIGF3YWl0IHdhaXRVbnRpbEVsZW1lbnRGb3VuZCh0aGlzLnBhZ2UsIGxvZ2luT3B0aW9ucy5zdWJtaXRCdXR0b25TZWxlY3Rvcik7XG4gICAgfVxuXG4gICAgbGV0IGxvZ2luRnJhbWVPclBhZ2U6IChQYWdlIHwgRnJhbWUgfCBudWxsKSA9IHRoaXMucGFnZTtcbiAgICBpZiAobG9naW5PcHRpb25zLnByZUFjdGlvbikge1xuICAgICAgZGVidWcoJ2V4ZWN1dGUgXFwncHJlQWN0aW9uXFwnIGludGVyY2VwdG9yIHByb3ZpZGVkIGluIGxvZ2luIG9wdGlvbnMnKTtcbiAgICAgIGxvZ2luRnJhbWVPclBhZ2UgPSBhd2FpdCBsb2dpbk9wdGlvbnMucHJlQWN0aW9uKCkgfHwgdGhpcy5wYWdlO1xuICAgIH1cblxuICAgIGRlYnVnKCdmaWxsIGxvZ2luIGNvbXBvbmVudHMgaW5wdXQgd2l0aCByZWxldmFudCB2YWx1ZXMnKTtcbiAgICBhd2FpdCB0aGlzLmZpbGxJbnB1dHMobG9naW5GcmFtZU9yUGFnZSwgbG9naW5PcHRpb25zLmZpZWxkcyk7XG4gICAgZGVidWcoJ2NsaWNrIG9uIGxvZ2luIHN1Ym1pdCBidXR0b24nKTtcbiAgICBpZiAodHlwZW9mIGxvZ2luT3B0aW9ucy5zdWJtaXRCdXR0b25TZWxlY3RvciA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGF3YWl0IGNsaWNrQnV0dG9uKGxvZ2luRnJhbWVPclBhZ2UsIGxvZ2luT3B0aW9ucy5zdWJtaXRCdXR0b25TZWxlY3Rvcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGF3YWl0IGxvZ2luT3B0aW9ucy5zdWJtaXRCdXR0b25TZWxlY3RvcigpO1xuICAgIH1cbiAgICB0aGlzLmVtaXRQcm9ncmVzcyhTY2FwZXJQcm9ncmVzc1R5cGVzLkxvZ2dpbmdJbik7XG5cbiAgICBpZiAobG9naW5PcHRpb25zLnBvc3RBY3Rpb24pIHtcbiAgICAgIGRlYnVnKCdleGVjdXRlIFxcJ3Bvc3RBY3Rpb25cXCcgaW50ZXJjZXB0b3IgcHJvdmlkZWQgaW4gbG9naW4gb3B0aW9ucycpO1xuICAgICAgYXdhaXQgbG9naW5PcHRpb25zLnBvc3RBY3Rpb24oKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZGVidWcoJ3dhaXQgZm9yIHBhZ2UgbmF2aWdhdGlvbicpO1xuICAgICAgYXdhaXQgd2FpdEZvck5hdmlnYXRpb24odGhpcy5wYWdlKTtcbiAgICB9XG5cbiAgICBkZWJ1ZygnY2hlY2sgbG9naW4gcmVzdWx0Jyk7XG4gICAgY29uc3QgY3VycmVudCA9IGF3YWl0IGdldEN1cnJlbnRVcmwodGhpcy5wYWdlLCB0cnVlKTtcbiAgICBjb25zdCBsb2dpblJlc3VsdCA9IGF3YWl0IGdldEtleUJ5VmFsdWUobG9naW5PcHRpb25zLnBvc3NpYmxlUmVzdWx0cywgY3VycmVudCwgdGhpcy5wYWdlKTtcbiAgICBkZWJ1ZyhgaGFuZGxlIGxvZ2luIHJlc3VsdHMgJHtsb2dpblJlc3VsdH1gKTtcbiAgICByZXR1cm4gaGFuZGxlTG9naW5SZXN1bHQodGhpcywgbG9naW5SZXN1bHQpO1xuICB9XG5cbiAgYXN5bmMgdGVybWluYXRlKF9zdWNjZXNzOiBib29sZWFuKSB7XG4gICAgZGVidWcoYHRlcm1pbmF0aW5nIGJyb3dzZXIgd2l0aCBzdWNjZXNzID0gJHtfc3VjY2Vzc31gKTtcbiAgICB0aGlzLmVtaXRQcm9ncmVzcyhTY2FwZXJQcm9ncmVzc1R5cGVzLlRlcm1pbmF0aW5nKTtcblxuICAgIGlmICghX3N1Y2Nlc3MgJiYgISF0aGlzLm9wdGlvbnMuc3RvcmVGYWlsdXJlU2NyZWVuU2hvdFBhdGgpIHtcbiAgICAgIGRlYnVnKGBjcmVhdGUgYSBzbmFwc2hvdCBiZWZvcmUgdGVybWluYXRlZCBpbiAke3RoaXMub3B0aW9ucy5zdG9yZUZhaWx1cmVTY3JlZW5TaG90UGF0aH1gKTtcbiAgICAgIGF3YWl0IHRoaXMucGFnZS5zY3JlZW5zaG90KHtcbiAgICAgICAgcGF0aDogdGhpcy5vcHRpb25zLnN0b3JlRmFpbHVyZVNjcmVlblNob3RQYXRoLFxuICAgICAgICBmdWxsUGFnZTogdHJ1ZSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5icm93c2VyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgYXdhaXQgdGhpcy5icm93c2VyLmNsb3NlKCk7XG4gIH1cbn1cblxuZXhwb3J0IHsgQmFzZVNjcmFwZXJXaXRoQnJvd3NlciB9O1xuIl19
|
|
330
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JhcGVycy9iYXNlLXNjcmFwZXItd2l0aC1icm93c2VyLnRzIl0sIm5hbWVzIjpbIlZJRVdQT1JUX1dJRFRIIiwiVklFV1BPUlRfSEVJR0hUIiwiT0tfU1RBVFVTIiwiZGVidWciLCJMb2dpbkJhc2VSZXN1bHRzIiwiVGltZW91dCIsIkdlbmVyaWMiLCJHZW5lcmFsIiwiU2NyYXBlckVycm9yVHlwZXMiLCJyZXN0IiwiTG9naW5SZXN1bHRzIiwiZ2V0S2V5QnlWYWx1ZSIsIm9iamVjdCIsInZhbHVlIiwicGFnZSIsImtleXMiLCJPYmplY3QiLCJrZXkiLCJjb25kaXRpb25zIiwiY29uZGl0aW9uIiwicmVzdWx0IiwiUmVnRXhwIiwidGVzdCIsInRvTG93ZXJDYXNlIiwiUHJvbWlzZSIsInJlc29sdmUiLCJVbmtub3duRXJyb3IiLCJoYW5kbGVMb2dpblJlc3VsdCIsInNjcmFwZXIiLCJsb2dpblJlc3VsdCIsIlN1Y2Nlc3MiLCJlbWl0UHJvZ3Jlc3MiLCJTY2FwZXJQcm9ncmVzc1R5cGVzIiwiTG9naW5TdWNjZXNzIiwic3VjY2VzcyIsIkludmFsaWRQYXNzd29yZCIsIkxvZ2luRmFpbGVkIiwiZXJyb3JUeXBlIiwiZXJyb3JNZXNzYWdlIiwiQ2hhbmdlUGFzc3dvcmQiLCJFcnJvciIsImNyZWF0ZUdlbmVyYWxFcnJvciIsIkJhc2VTY3JhcGVyV2l0aEJyb3dzZXIiLCJCYXNlU2NyYXBlciIsImdldFZpZXdQb3J0Iiwid2lkdGgiLCJoZWlnaHQiLCJpbml0aWFsaXplIiwiZW52Iiwib3B0aW9ucyIsInZlcmJvc2UiLCJERUJVRyIsInByb2Nlc3MiLCJicm93c2VyIiwiZXhlY3V0YWJsZVBhdGgiLCJ1bmRlZmluZWQiLCJhcmdzIiwidGltZW91dCIsImhlYWRsZXNzIiwic2hvd0Jyb3dzZXIiLCJwdXBwZXRlZXIiLCJsYXVuY2giLCJwcmVwYXJlQnJvd3NlciIsInBhZ2VzIiwibGVuZ3RoIiwibmV3UGFnZSIsImRlZmF1bHRUaW1lb3V0Iiwic2V0RGVmYXVsdFRpbWVvdXQiLCJwcmVwYXJlUGFnZSIsInZpZXdwb3J0Iiwic2V0Vmlld3BvcnQiLCJvbiIsInJlcXVlc3QiLCJmYWlsdXJlIiwiZXJyb3JUZXh0IiwidXJsIiwibmF2aWdhdGVUbyIsInBhZ2VUb1VzZSIsInJlc3BvbnNlIiwiZ290byIsInN0YXR1cyIsImdldExvZ2luT3B0aW9ucyIsIl9jcmVkZW50aWFscyIsImNvbXBhbnlJZCIsImZpbGxJbnB1dHMiLCJwYWdlT3JGcmFtZSIsImZpZWxkcyIsIm1vZGlmaWVkIiwiaW5wdXQiLCJzaGlmdCIsInNlbGVjdG9yIiwibG9naW4iLCJjcmVkZW50aWFscyIsImxvZ2luT3B0aW9ucyIsInVzZXJBZ2VudCIsInNldFVzZXJBZ2VudCIsImxvZ2luVXJsIiwiY2hlY2tSZWFkaW5lc3MiLCJzdWJtaXRCdXR0b25TZWxlY3RvciIsImxvZ2luRnJhbWVPclBhZ2UiLCJwcmVBY3Rpb24iLCJMb2dnaW5nSW4iLCJwb3N0QWN0aW9uIiwiY3VycmVudCIsInBvc3NpYmxlUmVzdWx0cyIsInRlcm1pbmF0ZSIsIl9zdWNjZXNzIiwiVGVybWluYXRpbmciLCJzdG9yZUZhaWx1cmVTY3JlZW5TaG90UGF0aCIsInNjcmVlbnNob3QiLCJwYXRoIiwiZnVsbFBhZ2UiLCJjbG9zZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFFQTs7QUFLQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7QUFFQSxNQUFNQSxjQUFjLEdBQUcsSUFBdkI7QUFDQSxNQUFNQyxlQUFlLEdBQUcsR0FBeEI7QUFDQSxNQUFNQyxTQUFTLEdBQUcsR0FBbEI7QUFFQSxNQUFNQyxLQUFLLEdBQUcscUJBQVMsMkJBQVQsQ0FBZDtJQUVLQyxnQjs7V0FBQUEsZ0I7QUFBQUEsRUFBQUEsZ0I7QUFBQUEsRUFBQUEsZ0I7R0FBQUEsZ0IsS0FBQUEsZ0I7O0FBS0wsTUFBTTtBQUNKQyxFQUFBQSxPQURJO0FBQ0tDLEVBQUFBLE9BREw7QUFDY0MsRUFBQUE7QUFEZCxJQUVGQyw4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R0FBRyxNQUFNbEIsYUFBYSxDQUFDa0YsWUFBWSxDQUFDVyxlQUFkLEVBQStCRCxPQUEvQixFQUF3QyxLQUFLekYsSUFBN0MsQ0FBdkM7QUFDQVgsSUFBQUEsS0FBSyxDQUFFLHdCQUF1QjBCLFdBQVksRUFBckMsQ0FBTDtBQUNBLFdBQU9GLGlCQUFpQixDQUFDLElBQUQsRUFBT0UsV0FBUCxDQUF4QjtBQUNEOztBQUVELFFBQU00RSxTQUFOLENBQWdCQyxRQUFoQixFQUFtQztBQUNqQ3ZHLElBQUFBLEtBQUssQ0FBRSxzQ0FBcUN1RyxRQUFTLEVBQWhELENBQUw7QUFDQSxTQUFLM0UsWUFBTCxDQUFrQkMsaUNBQW9CMkUsV0FBdEM7O0FBRUEsUUFBSSxDQUFDRCxRQUFELElBQWEsQ0FBQyxDQUFDLEtBQUt6RCxPQUFMLENBQWEyRCwwQkFBaEMsRUFBNEQ7QUFDMUR6RyxNQUFBQSxLQUFLLENBQUUsMENBQXlDLEtBQUs4QyxPQUFMLENBQWEyRCwwQkFBMkIsRUFBbkYsQ0FBTDtBQUNBLFlBQU0sS0FBSzlGLElBQUwsQ0FBVStGLFVBQVYsQ0FBcUI7QUFDekJDLFFBQUFBLElBQUksRUFBRSxLQUFLN0QsT0FBTCxDQUFhMkQsMEJBRE07QUFFekJHLFFBQUFBLFFBQVEsRUFBRTtBQUZlLE9BQXJCLENBQU47QUFJRDs7QUFFRCxRQUFJLENBQUMsS0FBSzFELE9BQVYsRUFBbUI7QUFDakI7QUFDRDs7QUFFRCxVQUFNLEtBQUtBLE9BQUwsQ0FBYTJELEtBQWIsRUFBTjtBQUNEOztBQTdMOEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcHVwcGV0ZWVyLCB7IEJyb3dzZXIsIEZyYW1lLCBQYWdlIH0gZnJvbSAncHVwcGV0ZWVyJztcblxuaW1wb3J0IHtcbiAgU2NyYXBlckVycm9yVHlwZXMsXG4gIEJhc2VTY3JhcGVyLCBTY2FwZXJTY3JhcGluZ1Jlc3VsdCwgU2NhcGVyUHJvZ3Jlc3NUeXBlcyxcbiAgU2NyYXBlckNyZWRlbnRpYWxzLFxufSBmcm9tICcuL2Jhc2Utc2NyYXBlcic7XG5pbXBvcnQgeyBnZXRDdXJyZW50VXJsLCB3YWl0Rm9yTmF2aWdhdGlvbiB9IGZyb20gJy4uL2hlbHBlcnMvbmF2aWdhdGlvbic7XG5pbXBvcnQgeyBjbGlja0J1dHRvbiwgZmlsbElucHV0LCB3YWl0VW50aWxFbGVtZW50Rm91bmQgfSBmcm9tICcuLi9oZWxwZXJzL2VsZW1lbnRzLWludGVyYWN0aW9ucyc7XG5pbXBvcnQgeyBnZXREZWJ1ZyB9IGZyb20gJy4uL2hlbHBlcnMvZGVidWcnO1xuXG5jb25zdCBWSUVXUE9SVF9XSURUSCA9IDEwMjQ7XG5jb25zdCBWSUVXUE9SVF9IRUlHSFQgPSA3Njg7XG5jb25zdCBPS19TVEFUVVMgPSAyMDA7XG5cbmNvbnN0IGRlYnVnID0gZ2V0RGVidWcoJ2Jhc2Utc2NyYXBlci13aXRoLWJyb3dzZXInKTtcblxuZW51bSBMb2dpbkJhc2VSZXN1bHRzIHtcbiAgU3VjY2VzcyA9ICdTVUNDRVNTJyxcbiAgVW5rbm93bkVycm9yID0gJ1VOS05PV05fRVJST1InXG59XG5cbmNvbnN0IHtcbiAgVGltZW91dCwgR2VuZXJpYywgR2VuZXJhbCwgLi4ucmVzdFxufSA9IFNjcmFwZXJFcnJvclR5cGVzO1xuZXhwb3J0IGNvbnN0IExvZ2luUmVzdWx0cyA9IHtcbiAgLi4ucmVzdCxcbiAgLi4uTG9naW5CYXNlUmVzdWx0cyxcbn07XG5cbmV4cG9ydCB0eXBlIExvZ2luUmVzdWx0cyA9IEV4Y2x1ZGU8U2NyYXBlckVycm9yVHlwZXMsXG5TY3JhcGVyRXJyb3JUeXBlcy5UaW1lb3V0XG58IFNjcmFwZXJFcnJvclR5cGVzLkdlbmVyaWNcbnwgU2NyYXBlckVycm9yVHlwZXMuR2VuZXJhbD4gfCBMb2dpbkJhc2VSZXN1bHRzO1xuXG5leHBvcnQgdHlwZSBQb3NzaWJsZUxvZ2luUmVzdWx0cyA9IHtcbiAgW2tleSBpbiBMb2dpblJlc3VsdHNdPzogKHN0cmluZyB8IFJlZ0V4cCB8ICgob3B0aW9ucz86IHsgcGFnZT86IFBhZ2V9KSA9PiBQcm9taXNlPGJvb2xlYW4+KSlbXVxufTtcblxuZXhwb3J0IGludGVyZmFjZSBMb2dpbk9wdGlvbnMge1xuICBsb2dpblVybDogc3RyaW5nO1xuICBjaGVja1JlYWRpbmVzcz86ICgpID0+IFByb21pc2U8dm9pZD47XG4gIGZpZWxkczoge3NlbGVjdG9yOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmd9W107XG4gIHN1Ym1pdEJ1dHRvblNlbGVjdG9yOiBzdHJpbmcgfCAoKCkgPT4gUHJvbWlzZTx2b2lkPik7XG4gIHByZUFjdGlvbj86ICgpID0+IFByb21pc2U8RnJhbWUgfCB2b2lkPjtcbiAgcG9zdEFjdGlvbj86ICgpID0+IFByb21pc2U8dm9pZD47XG4gIHBvc3NpYmxlUmVzdWx0czogUG9zc2libGVMb2dpblJlc3VsdHM7XG4gIHVzZXJBZ2VudD86IHN0cmluZztcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0S2V5QnlWYWx1ZShvYmplY3Q6IFBvc3NpYmxlTG9naW5SZXN1bHRzLCB2YWx1ZTogc3RyaW5nLCBwYWdlOiBQYWdlKTogUHJvbWlzZTxMb2dpblJlc3VsdHM+IHtcbiAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKG9iamVjdCk7XG4gIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgY29uZGl0aW9ucyA9IG9iamVjdFtrZXldO1xuXG4gICAgZm9yIChjb25zdCBjb25kaXRpb24gb2YgY29uZGl0aW9ucykge1xuICAgICAgbGV0IHJlc3VsdCA9IGZhbHNlO1xuXG4gICAgICBpZiAoY29uZGl0aW9uIGluc3RhbmNlb2YgUmVnRXhwKSB7XG4gICAgICAgIHJlc3VsdCA9IGNvbmRpdGlvbi50ZXN0KHZhbHVlKTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGNvbmRpdGlvbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXN1bHQgPSBhd2FpdCBjb25kaXRpb24oeyBwYWdlLCB2YWx1ZSB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdCA9IHZhbHVlLnRvTG93ZXJDYXNlKCkgPT09IGNvbmRpdGlvbi50b0xvd2VyQ2FzZSgpO1xuICAgICAgfVxuXG4gICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShrZXkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBQcm9taXNlLnJlc29sdmUoTG9naW5SZXN1bHRzLlVua25vd25FcnJvcik7XG59XG5cbmZ1bmN0aW9uIGhhbmRsZUxvZ2luUmVzdWx0KHNjcmFwZXI6IEJhc2VTY3JhcGVyV2l0aEJyb3dzZXIsIGxvZ2luUmVzdWx0OiBMb2dpblJlc3VsdHMpIHtcbiAgc3dpdGNoIChsb2dpblJlc3VsdCkge1xuICAgIGNhc2UgTG9naW5SZXN1bHRzLlN1Y2Nlc3M6XG4gICAgICBzY3JhcGVyLmVtaXRQcm9ncmVzcyhTY2FwZXJQcm9ncmVzc1R5cGVzLkxvZ2luU3VjY2Vzcyk7XG4gICAgICByZXR1cm4geyBzdWNjZXNzOiB0cnVlIH07XG4gICAgY2FzZSBMb2dpblJlc3VsdHMuSW52YWxpZFBhc3N3b3JkOlxuICAgIGNhc2UgTG9naW5SZXN1bHRzLlVua25vd25FcnJvcjpcbiAgICAgIHNjcmFwZXIuZW1pdFByb2dyZXNzKFNjYXBlclByb2dyZXNzVHlwZXMuTG9naW5GYWlsZWQpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc3VjY2VzczogZmFsc2UsXG4gICAgICAgIGVycm9yVHlwZTogbG9naW5SZXN1bHQgPT09IExvZ2luUmVzdWx0cy5JbnZhbGlkUGFzc3dvcmQgPyBTY3JhcGVyRXJyb3JUeXBlcy5JbnZhbGlkUGFzc3dvcmQgOlxuICAgICAgICAgIFNjcmFwZXJFcnJvclR5cGVzLkdlbmVyYWwsXG4gICAgICAgIGVycm9yTWVzc2FnZTogYExvZ2luIGZhaWxlZCB3aXRoICR7bG9naW5SZXN1bHR9IGVycm9yYCxcbiAgICAgIH07XG4gICAgY2FzZSBMb2dpblJlc3VsdHMuQ2hhbmdlUGFzc3dvcmQ6XG4gICAgICBzY3JhcGVyLmVtaXRQcm9ncmVzcyhTY2FwZXJQcm9ncmVzc1R5cGVzLkNoYW5nZVBhc3N3b3JkKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgICBlcnJvclR5cGU6IFNjcmFwZXJFcnJvclR5cGVzLkNoYW5nZVBhc3N3b3JkLFxuICAgICAgfTtcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IEVycm9yKGB1bmV4cGVjdGVkIGxvZ2luIHJlc3VsdCBcIiR7bG9naW5SZXN1bHR9XCJgKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjcmVhdGVHZW5lcmFsRXJyb3IoKTogU2NhcGVyU2NyYXBpbmdSZXN1bHQge1xuICByZXR1cm4ge1xuICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgIGVycm9yVHlwZTogU2NyYXBlckVycm9yVHlwZXMuR2VuZXJhbCxcbiAgfTtcbn1cblxuY2xhc3MgQmFzZVNjcmFwZXJXaXRoQnJvd3NlciBleHRlbmRzIEJhc2VTY3JhcGVyIHtcbiAgLy8gTk9USUNFIC0gaXQgaXMgZGlzY291cmFnZSB0byB1c2UgYmFuZyAoISkgaW4gZ2VuZXJhbC4gSXQgaXMgdXNlZCBoZXJlIGJlY2F1c2VcbiAgLy8gYWxsIHRoZSBjbGFzc2VzIHRoYXQgaW5oZXJpdCBmcm9tIHRoaXMgYmFzZSBhc3N1bWUgaXMgaXQgbWFuZGF0b3J5LlxuICBwcm90ZWN0ZWQgYnJvd3NlciE6IEJyb3dzZXI7XG5cbiAgLy8gTk9USUNFIC0gaXQgaXMgZGlzY291cmFnZSB0byB1c2UgYmFuZyAoISkgaW4gZ2VuZXJhbC4gSXQgaXMgdXNlZCBoZXJlIGJlY2F1c2VcbiAgLy8gYWxsIHRoZSBjbGFzc2VzIHRoYXQgaW5oZXJpdCBmcm9tIHRoaXMgYmFzZSBhc3N1bWUgaXMgaXQgbWFuZGF0b3J5LlxuICBwcm90ZWN0ZWQgcGFnZSE6IFBhZ2U7XG5cbiAgcHJvdGVjdGVkIGdldFZpZXdQb3J0KCkge1xuICAgIHJldHVybiB7XG4gICAgICB3aWR0aDogVklFV1BPUlRfV0lEVEgsXG4gICAgICBoZWlnaHQ6IFZJRVdQT1JUX0hFSUdIVCxcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgaW5pdGlhbGl6ZSgpIHtcbiAgICBhd2FpdCBzdXBlci5pbml0aWFsaXplKCk7XG4gICAgZGVidWcoJ2luaXRpYWxpemUgc2NyYXBlcicpO1xuXG4gICAgbGV0IGVudjogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZDtcbiAgICBpZiAodGhpcy5vcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgIGVudiA9IHsgREVCVUc6ICcqJywgLi4ucHJvY2Vzcy5lbnYgfTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHRoaXMub3B0aW9ucy5icm93c2VyICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLm9wdGlvbnMuYnJvd3NlciAhPT0gbnVsbCkge1xuICAgICAgZGVidWcoJ3VzZSBjdXN0b20gYnJvd3NlciBpbnN0YW5jZSBwcm92aWRlZCBpbiBvcHRpb25zJyk7XG4gICAgICB0aGlzLmJyb3dzZXIgPSB0aGlzLm9wdGlvbnMuYnJvd3NlcjtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgZXhlY3V0YWJsZVBhdGggPSB0aGlzLm9wdGlvbnMuZXhlY3V0YWJsZVBhdGggfHwgdW5kZWZpbmVkO1xuICAgICAgY29uc3QgYXJncyA9IHRoaXMub3B0aW9ucy5hcmdzIHx8IFtdO1xuICAgICAgY29uc3QgeyB0aW1lb3V0IH0gPSB0aGlzLm9wdGlvbnM7XG5cbiAgICAgIGNvbnN0IGhlYWRsZXNzID0gIXRoaXMub3B0aW9ucy5zaG93QnJvd3NlcjtcbiAgICAgIGRlYnVnKGBsYXVuY2ggYSBicm93c2VyIHdpdGggaGVhZGxlc3MgbW9kZSA9ICR7aGVhZGxlc3N9YCk7XG4gICAgICB0aGlzLmJyb3dzZXIgPSBhd2FpdCBwdXBwZXRlZXIubGF1bmNoKHtcbiAgICAgICAgZW52LFxuICAgICAgICBoZWFkbGVzcyxcbiAgICAgICAgZXhlY3V0YWJsZVBhdGgsXG4gICAgICAgIGFyZ3MsXG4gICAgICAgIHRpbWVvdXQsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLnByZXBhcmVCcm93c2VyKSB7XG4gICAgICBkZWJ1ZygnZXhlY3V0ZSBcXCdwcmVwYXJlQnJvd3NlclxcJyBpbnRlcmNlcHRvciBwcm92aWRlZCBpbiBvcHRpb25zJyk7XG4gICAgICBhd2FpdCB0aGlzLm9wdGlvbnMucHJlcGFyZUJyb3dzZXIodGhpcy5icm93c2VyKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuYnJvd3Nlcikge1xuICAgICAgZGVidWcoJ2ZhaWxlZCB0byBpbml0aWF0ZSBhIGJyb3dzZXIsIGV4aXQnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBwYWdlcyA9IGF3YWl0IHRoaXMuYnJvd3Nlci5wYWdlcygpO1xuICAgIGlmIChwYWdlcy5sZW5ndGgpIHtcbiAgICAgIGRlYnVnKCdicm93c2VyIGhhcyBhbHJlYWR5IHBhZ2VzIG9wZW4sIHVzZSB0aGUgZmlyc3Qgb25lJyk7XG4gICAgICBbdGhpcy5wYWdlXSA9IHBhZ2VzO1xuICAgIH0gZWxzZSB7XG4gICAgICBkZWJ1ZygnY3JlYXRlIGEgbmV3IGJyb3dzZXIgcGFnZScpO1xuICAgICAgdGhpcy5wYWdlID0gYXdhaXQgdGhpcy5icm93c2VyLm5ld1BhZ2UoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLmRlZmF1bHRUaW1lb3V0KSB7XG4gICAgICB0aGlzLnBhZ2Uuc2V0RGVmYXVsdFRpbWVvdXQodGhpcy5vcHRpb25zLmRlZmF1bHRUaW1lb3V0KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLnByZXBhcmVQYWdlKSB7XG4gICAgICBkZWJ1ZygnZXhlY3V0ZSBcXCdwcmVwYXJlUGFnZVxcJyBpbnRlcmNlcHRvciBwcm92aWRlZCBpbiBvcHRpb25zJyk7XG4gICAgICBhd2FpdCB0aGlzLm9wdGlvbnMucHJlcGFyZVBhZ2UodGhpcy5wYWdlKTtcbiAgICB9XG5cbiAgICBjb25zdCB2aWV3cG9ydCA9IHRoaXMuZ2V0Vmlld1BvcnQoKTtcbiAgICBkZWJ1Zyhgc2V0IHZpZXdwb3J0IHRvIHdpZHRoICR7dmlld3BvcnQud2lkdGh9LCBoZWlnaHQgJHt2aWV3cG9ydC5oZWlnaHR9YCk7XG4gICAgYXdhaXQgdGhpcy5wYWdlLnNldFZpZXdwb3J0KHtcbiAgICAgIHdpZHRoOiB2aWV3cG9ydC53aWR0aCxcbiAgICAgIGhlaWdodDogdmlld3BvcnQuaGVpZ2h0LFxuICAgIH0pO1xuXG4gICAgdGhpcy5wYWdlLm9uKCdyZXF1ZXN0ZmFpbGVkJywgKHJlcXVlc3QpID0+IHtcbiAgICAgIGRlYnVnKCdSZXF1ZXN0IGZhaWxlZDogJXMgJXMnLCByZXF1ZXN0LmZhaWx1cmUoKT8uZXJyb3JUZXh0LCByZXF1ZXN0LnVybCgpKTtcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIG5hdmlnYXRlVG8odXJsOiBzdHJpbmcsIHBhZ2U/OiBQYWdlLCB0aW1lb3V0PzogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgcGFnZVRvVXNlID0gcGFnZSB8fCB0aGlzLnBhZ2U7XG5cbiAgICBpZiAoIXBhZ2VUb1VzZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG9wdGlvbnMgPSB7IC4uLih0aW1lb3V0ID09PSBudWxsID8gbnVsbCA6IHsgdGltZW91dCB9KSB9O1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgcGFnZVRvVXNlLmdvdG8odXJsLCBvcHRpb25zKTtcblxuICAgIC8vIG5vdGU6IHJlc3BvbnNlIHdpbGwgYmUgbnVsbCB3aGVuIG5hdmlnYXRpbmcgdG8gc2FtZSB1cmwgd2hpbGUgY2hhbmdpbmcgdGhlIGhhc2ggcGFydC4gdGhlIGNvbmRpdGlvbiBiZWxvdyB3aWxsIGFsd2F5cyBhY2NlcHQgbnVsbCBhcyB2YWxpZCByZXN1bHQuXG4gICAgaWYgKHJlc3BvbnNlICE9PSBudWxsICYmIChyZXNwb25zZSA9PT0gdW5kZWZpbmVkIHx8IHJlc3BvbnNlLnN0YXR1cygpICE9PSBPS19TVEFUVVMpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEVycm9yIHdoaWxlIHRyeWluZyB0byBuYXZpZ2F0ZSB0byB1cmwgJHt1cmx9YCk7XG4gICAgfVxuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICBnZXRMb2dpbk9wdGlvbnMoX2NyZWRlbnRpYWxzOiBTY3JhcGVyQ3JlZGVudGlhbHMpOiBMb2dpbk9wdGlvbnMge1xuICAgIHRocm93IG5ldyBFcnJvcihgZ2V0TG9naW5PcHRpb25zKCkgaXMgbm90IGNyZWF0ZWQgaW4gJHt0aGlzLm9wdGlvbnMuY29tcGFueUlkfWApO1xuICB9XG5cbiAgYXN5bmMgZmlsbElucHV0cyhwYWdlT3JGcmFtZTogUGFnZSB8IEZyYW1lLCBmaWVsZHM6IHsgc2VsZWN0b3I6IHN0cmluZywgdmFsdWU6IHN0cmluZ31bXSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IG1vZGlmaWVkID0gWy4uLmZpZWxkc107XG4gICAgY29uc3QgaW5wdXQgPSBtb2RpZmllZC5zaGlmdCgpO1xuXG4gICAgaWYgKCFpbnB1dCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBhd2FpdCBmaWxsSW5wdXQocGFnZU9yRnJhbWUsIGlucHV0LnNlbGVjdG9yLCBpbnB1dC52YWx1ZSk7XG4gICAgaWYgKG1vZGlmaWVkLmxlbmd0aCkge1xuICAgICAgYXdhaXQgdGhpcy5maWxsSW5wdXRzKHBhZ2VPckZyYW1lLCBtb2RpZmllZCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgbG9naW4oY3JlZGVudGlhbHM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4pOiBQcm9taXNlPFNjYXBlclNjcmFwaW5nUmVzdWx0PiB7XG4gICAgaWYgKCFjcmVkZW50aWFscyB8fCAhdGhpcy5wYWdlKSB7XG4gICAgICByZXR1cm4gY3JlYXRlR2VuZXJhbEVycm9yKCk7XG4gICAgfVxuXG4gICAgZGVidWcoJ2V4ZWN1dGUgbG9naW4gcHJvY2VzcycpO1xuICAgIGNvbnN0IGxvZ2luT3B0aW9ucyA9IHRoaXMuZ2V0TG9naW5PcHRpb25zKGNyZWRlbnRpYWxzKTtcblxuICAgIGlmIChsb2dpbk9wdGlvbnMudXNlckFnZW50KSB7XG4gICAgICBkZWJ1Zygnc2V0IGN1c3RvbSB1c2VyIGFnZW50IHByb3ZpZGVkIGluIG9wdGlvbnMnKTtcbiAgICAgIGF3YWl0IHRoaXMucGFnZS5zZXRVc2VyQWdlbnQobG9naW5PcHRpb25zLnVzZXJBZ2VudCk7XG4gICAgfVxuXG4gICAgZGVidWcoJ25hdmlnYXRlIHRvIGxvZ2luIHVybCcpO1xuICAgIGF3YWl0IHRoaXMubmF2aWdhdGVUbyhsb2dpbk9wdGlvbnMubG9naW5VcmwpO1xuICAgIGlmIChsb2dpbk9wdGlvbnMuY2hlY2tSZWFkaW5lc3MpIHtcbiAgICAgIGRlYnVnKCdleGVjdXRlIFxcJ2NoZWNrUmVhZGluZXNzXFwnIGludGVyY2VwdG9yIHByb3ZpZGVkIGluIGxvZ2luIG9wdGlvbnMnKTtcbiAgICAgIGF3YWl0IGxvZ2luT3B0aW9ucy5jaGVja1JlYWRpbmVzcygpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGxvZ2luT3B0aW9ucy5zdWJtaXRCdXR0b25TZWxlY3RvciA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGRlYnVnKCd3YWl0IHVudGlsIHN1Ym1pdCBidXR0b24gaXMgYXZhaWxhYmxlJyk7XG4gICAgICBhd2FpdCB3YWl0VW50aWxFbGVtZW50Rm91bmQodGhpcy5wYWdlLCBsb2dpbk9wdGlvbnMuc3VibWl0QnV0dG9uU2VsZWN0b3IpO1xuICAgIH1cblxuICAgIGxldCBsb2dpbkZyYW1lT3JQYWdlOiAoUGFnZSB8IEZyYW1lIHwgbnVsbCkgPSB0aGlzLnBhZ2U7XG4gICAgaWYgKGxvZ2luT3B0aW9ucy5wcmVBY3Rpb24pIHtcbiAgICAgIGRlYnVnKCdleGVjdXRlIFxcJ3ByZUFjdGlvblxcJyBpbnRlcmNlcHRvciBwcm92aWRlZCBpbiBsb2dpbiBvcHRpb25zJyk7XG4gICAgICBsb2dpbkZyYW1lT3JQYWdlID0gYXdhaXQgbG9naW5PcHRpb25zLnByZUFjdGlvbigpIHx8IHRoaXMucGFnZTtcbiAgICB9XG5cbiAgICBkZWJ1ZygnZmlsbCBsb2dpbiBjb21wb25lbnRzIGlucHV0IHdpdGggcmVsZXZhbnQgdmFsdWVzJyk7XG4gICAgYXdhaXQgdGhpcy5maWxsSW5wdXRzKGxvZ2luRnJhbWVPclBhZ2UsIGxvZ2luT3B0aW9ucy5maWVsZHMpO1xuICAgIGRlYnVnKCdjbGljayBvbiBsb2dpbiBzdWJtaXQgYnV0dG9uJyk7XG4gICAgaWYgKHR5cGVvZiBsb2dpbk9wdGlvbnMuc3VibWl0QnV0dG9uU2VsZWN0b3IgPT09ICdzdHJpbmcnKSB7XG4gICAgICBhd2FpdCBjbGlja0J1dHRvbihsb2dpbkZyYW1lT3JQYWdlLCBsb2dpbk9wdGlvbnMuc3VibWl0QnV0dG9uU2VsZWN0b3IpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhd2FpdCBsb2dpbk9wdGlvbnMuc3VibWl0QnV0dG9uU2VsZWN0b3IoKTtcbiAgICB9XG4gICAgdGhpcy5lbWl0UHJvZ3Jlc3MoU2NhcGVyUHJvZ3Jlc3NUeXBlcy5Mb2dnaW5nSW4pO1xuXG4gICAgaWYgKGxvZ2luT3B0aW9ucy5wb3N0QWN0aW9uKSB7XG4gICAgICBkZWJ1ZygnZXhlY3V0ZSBcXCdwb3N0QWN0aW9uXFwnIGludGVyY2VwdG9yIHByb3ZpZGVkIGluIGxvZ2luIG9wdGlvbnMnKTtcbiAgICAgIGF3YWl0IGxvZ2luT3B0aW9ucy5wb3N0QWN0aW9uKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRlYnVnKCd3YWl0IGZvciBwYWdlIG5hdmlnYXRpb24nKTtcbiAgICAgIGF3YWl0IHdhaXRGb3JOYXZpZ2F0aW9uKHRoaXMucGFnZSk7XG4gICAgfVxuXG4gICAgZGVidWcoJ2NoZWNrIGxvZ2luIHJlc3VsdCcpO1xuICAgIGNvbnN0IGN1cnJlbnQgPSBhd2FpdCBnZXRDdXJyZW50VXJsKHRoaXMucGFnZSwgdHJ1ZSk7XG4gICAgY29uc3QgbG9naW5SZXN1bHQgPSBhd2FpdCBnZXRLZXlCeVZhbHVlKGxvZ2luT3B0aW9ucy5wb3NzaWJsZVJlc3VsdHMsIGN1cnJlbnQsIHRoaXMucGFnZSk7XG4gICAgZGVidWcoYGhhbmRsZSBsb2dpbiByZXN1bHRzICR7bG9naW5SZXN1bHR9YCk7XG4gICAgcmV0dXJuIGhhbmRsZUxvZ2luUmVzdWx0KHRoaXMsIGxvZ2luUmVzdWx0KTtcbiAgfVxuXG4gIGFzeW5jIHRlcm1pbmF0ZShfc3VjY2VzczogYm9vbGVhbikge1xuICAgIGRlYnVnKGB0ZXJtaW5hdGluZyBicm93c2VyIHdpdGggc3VjY2VzcyA9ICR7X3N1Y2Nlc3N9YCk7XG4gICAgdGhpcy5lbWl0UHJvZ3Jlc3MoU2NhcGVyUHJvZ3Jlc3NUeXBlcy5UZXJtaW5hdGluZyk7XG5cbiAgICBpZiAoIV9zdWNjZXNzICYmICEhdGhpcy5vcHRpb25zLnN0b3JlRmFpbHVyZVNjcmVlblNob3RQYXRoKSB7XG4gICAgICBkZWJ1ZyhgY3JlYXRlIGEgc25hcHNob3QgYmVmb3JlIHRlcm1pbmF0ZWQgaW4gJHt0aGlzLm9wdGlvbnMuc3RvcmVGYWlsdXJlU2NyZWVuU2hvdFBhdGh9YCk7XG4gICAgICBhd2FpdCB0aGlzLnBhZ2Uuc2NyZWVuc2hvdCh7XG4gICAgICAgIHBhdGg6IHRoaXMub3B0aW9ucy5zdG9yZUZhaWx1cmVTY3JlZW5TaG90UGF0aCxcbiAgICAgICAgZnVsbFBhZ2U6IHRydWUsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuYnJvd3Nlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGF3YWl0IHRoaXMuYnJvd3Nlci5jbG9zZSgpO1xuICB9XG59XG5cbmV4cG9ydCB7IEJhc2VTY3JhcGVyV2l0aEJyb3dzZXIgfTtcbiJdfQ==
|
|
@@ -70,6 +70,11 @@ export interface ScraperOptions {
|
|
|
70
70
|
* https://peter.sh/experiments/chromium-command-line-switches/
|
|
71
71
|
*/
|
|
72
72
|
args?: string[];
|
|
73
|
+
/**
|
|
74
|
+
* Maximum navigation time in milliseconds, pass 0 to disable timeout.
|
|
75
|
+
* @default 30000
|
|
76
|
+
*/
|
|
77
|
+
timeout?: number | undefined;
|
|
73
78
|
/**
|
|
74
79
|
* adjust the browser instance before it is being used
|
|
75
80
|
*
|
|
@@ -140,4 +140,4 @@ class BaseScraper {
|
|
|
140
140
|
}
|
|
141
141
|
|
|
142
142
|
exports.BaseScraper = BaseScraper;
|
|
143
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JhcGVycy9iYXNlLXNjcmFwZXIudHMiXSwibmFtZXMiOlsiU0NSQVBFX1BST0dSRVNTIiwiU2NyYXBlckVycm9yVHlwZXMiLCJTY2FwZXJQcm9ncmVzc1R5cGVzIiwiY3JlYXRlRXJyb3JSZXN1bHQiLCJlcnJvclR5cGUiLCJlcnJvck1lc3NhZ2UiLCJzdWNjZXNzIiwiY3JlYXRlVGltZW91dEVycm9yIiwiVGltZW91dCIsImNyZWF0ZUdlbmVyaWNFcnJvciIsIkdlbmVyaWMiLCJCYXNlU2NyYXBlciIsImNvbnN0cnVjdG9yIiwib3B0aW9ucyIsIkV2ZW50RW1pdHRlciIsImluaXRpYWxpemUiLCJlbWl0UHJvZ3Jlc3MiLCJJbml0aWFsaXppbmciLCJtb21lbnQiLCJ0eiIsInNldERlZmF1bHQiLCJzY3JhcGUiLCJjcmVkZW50aWFscyIsIlN0YXJ0U2NyYXBpbmciLCJsb2dpblJlc3VsdCIsImxvZ2luIiwiZSIsIlRpbWVvdXRFcnJvciIsIm1lc3NhZ2UiLCJzY3JhcGVSZXN1bHQiLCJmZXRjaERhdGEiLCJ0ZXJtaW5hdGUiLCJFbmRTY3JhcGluZyIsIl9jcmVkZW50aWFscyIsIkVycm9yIiwiY29tcGFueUlkIiwiX3N1Y2Nlc3MiLCJUZXJtaW5hdGluZyIsInR5cGUiLCJlbWl0IiwiZXZlbnROYW1lIiwicGF5bG9hZCIsImV2ZW50RW1pdHRlciIsIm9uUHJvZ3Jlc3MiLCJmdW5jIiwib24iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOztBQUVBOztBQUNBOzs7Ozs7QUFJQSxNQUFNQSxlQUFlLEdBQUcsaUJBQXhCO0lBRVlDLGlCOzs7V0FBQUEsaUI7QUFBQUEsRUFBQUEsaUI7QUFBQUEsRUFBQUEsaUI7QUFBQUEsRUFBQUEsaUI7QUFBQUEsRUFBQUEsaUI7QUFBQUEsRUFBQUEsaUI7QUFBQUEsRUFBQUEsaUI7R0FBQUEsaUIsaUNBQUFBLGlCOztJQTZHQUMsbUI7OztXQUFBQSxtQjtBQUFBQSxFQUFBQSxtQjtBQUFBQSxFQUFB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LFNBQU4sR0FBaUQ7QUFDL0MsVUFBTSxJQUFJSSxLQUFKLENBQVcsaUNBQWdDLEtBQUtyQixPQUFMLENBQWFzQixTQUFVLEVBQWxFLENBQU47QUFDRCxHQTFEc0IsQ0E0RHZCOzs7QUFDQSxRQUFNSixTQUFOLENBQWdCSyxRQUFoQixFQUFtQztBQUNqQyxTQUFLcEIsWUFBTCxDQUFrQmQsbUJBQW1CLENBQUNtQyxXQUF0QztBQUNEOztBQUVEckIsRUFBQUEsWUFBWSxDQUFDc0IsSUFBRCxFQUE0QjtBQUN0QyxTQUFLQyxJQUFMLENBQVV2QyxlQUFWLEVBQTJCO0FBQUVzQyxNQUFBQTtBQUFGLEtBQTNCO0FBQ0Q7O0FBRURDLEVBQUFBLElBQUksQ0FBQ0MsU0FBRCxFQUFvQkMsT0FBcEIsRUFBa0Q7QUFDcEQsU0FBS0MsWUFBTCxDQUFrQkgsSUFBbEIsQ0FBdUJDLFNBQXZCLEVBQWtDLEtBQUszQixPQUFMLENBQWFzQixTQUEvQyxFQUEwRE0sT0FBMUQ7QUFDRDs7QUFFREUsRUFBQUEsVUFBVSxDQUFDQyxJQUFELEVBQWlDO0FBQ3pDLFNBQUtGLFlBQUwsQ0FBa0JHLEVBQWxCLENBQXFCN0MsZUFBckIsRUFBc0M0QyxJQUF0QztBQUNEOztBQTNFc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFdmVudEVtaXR0ZXIgfSBmcm9tICdldmVudHMnO1xuaW1wb3J0IHsgQnJvd3NlciwgUGFnZSB9IGZyb20gJ3B1cHBldGVlcic7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudC10aW1lem9uZSc7XG5pbXBvcnQgeyBUaW1lb3V0RXJyb3IgfSBmcm9tICcuLi9oZWxwZXJzL3dhaXRpbmcnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25zQWNjb3VudCB9IGZyb20gJy4uL3RyYW5zYWN0aW9ucyc7XG5pbXBvcnQgeyBDb21wYW55VHlwZXMgfSBmcm9tICcuLi9kZWZpbml0aW9ucyc7XG5cbmNvbnN0IFNDUkFQRV9QUk9HUkVTUyA9ICdTQ1JBUEVfUFJPR1JFU1MnO1xuXG5leHBvcnQgZW51bSBTY3JhcGVyRXJyb3JUeXBlcyB7XG4gIEludmFsaWRQYXNzd29yZCA9J0lOVkFMSURfUEFTU1dPUkQnLFxuICBDaGFuZ2VQYXNzd29yZCA9ICdDSEFOR0VfUEFTU1dPUkQnLFxuICBUaW1lb3V0ID0gJ1RJTUVPVVQnLFxuICBBY2NvdW50QmxvY2tlZCA9ICdBQ0NPVU5UX0JMT0NLRUQnLFxuICBHZW5lcmljID0gJ0dFTkVSSUMnLFxuICBHZW5lcmFsID0gJ0dFTkVSQUxfRVJST1InXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2NhcGVyTG9naW5SZXN1bHQge1xuICBzdWNjZXNzOiBib29sZWFuO1xuICBlcnJvclR5cGU/OiBTY3JhcGVyRXJyb3JUeXBlcztcbiAgZXJyb3JNZXNzYWdlPzogc3RyaW5nOyAvLyBvbmx5IG9uIHN1Y2Nlc3M9ZmFsc2Vcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGdXR1cmVEZWJpdCB7XG4gIGFtb3VudDogbnVtYmVyO1xuICBhbW91bnRDdXJyZW5jeTogc3RyaW5nO1xuICBjaGFyZ2VEYXRlPzogc3RyaW5nO1xuICBiYW5rQWNjb3VudE51bWJlcj86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTY2FwZXJTY3JhcGluZ1Jlc3VsdCB7XG4gIHN1Y2Nlc3M6IGJvb2xlYW47XG4gIGFjY291bnRzPzogVHJhbnNhY3Rpb25zQWNjb3VudFtdO1xuICBmdXR1cmVEZWJpdHM/OiBGdXR1cmVEZWJpdFtdO1xuICBlcnJvclR5cGU/OiBTY3JhcGVyRXJyb3JUeXBlcztcbiAgZXJyb3JNZXNzYWdlPzogc3RyaW5nOyAvLyBvbmx5IG9uIHN1Y2Nlc3M9ZmFsc2Vcbn1cblxuZXhwb3J0IHR5cGUgU2NyYXBlckNyZWRlbnRpYWxzID0gUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcblxuZXhwb3J0IGludGVyZmFjZSBTY3JhcGVyT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgY29tcGFueSB5b3Ugd2FudCB0byBzY3JhcGVcbiAgICovXG4gIGNvbXBhbnlJZDogQ29tcGFueVR5cGVzO1xuXG4gIC8qKlxuICAgKiBpbmNsdWRlIG1vcmUgZGVidWcgaW5mbyBhYm91dCBpbiB0aGUgb3V0cHV0XG4gICAqL1xuICB2ZXJib3NlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogdGhlIGRhdGUgdG8gZmV0Y2ggdHJhbnNhY3Rpb25zIGZyb20gKGNhbid0IGJlIGJlZm9yZSB0aGUgbWluaW11bSBhbGxvd2VkIHRpbWUgZGlmZmVyZW5jZSBmb3IgdGhlIHNjcmFwZXIpXG4gICAqL1xuICBzdGFydERhdGU6IERhdGU7XG5cbiAgLyoqXG4gICAqIHNob3dzIHRoZSBicm93c2VyIHdoaWxlIHNjcmFwaW5nLCBnb29kIGZvciBkZWJ1Z2dpbmcgKGRlZmF1bHQgZmFsc2UpXG4gICAqL1xuICBzaG93QnJvd3Nlcj86IGJvb2xlYW47XG5cblxuICAvKipcbiAgICogc2NyYXBlIHRyYW5zYWN0aW9ucyB0byBiZSBwcm9jZXNzZWQgWCBtb250aHMgaW4gdGhlIGZ1dHVyZVxuICAgKi9cbiAgZnV0dXJlTW9udGhzVG9TY3JhcGU/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIG9wdGlvbiBmcm9tIGluaXQgcHVwcGV0ZWVyIGJyb3dzZXIgaW5zdGFuY2Ugb3V0c2lkZSB0aGUgbGliYXJ5IHNjb3BlLiB5b3UgY2FuIGdldFxuICAgKiBicm93c2VyIGRpcmV0bHkgZnJvbSBwdXBwZXRlZXIgdmlhIGBwdXBwZXRlZXIubGF1bmNoKClgXG4gICAqL1xuICBicm93c2VyPzogYW55O1xuXG4gIC8qKlxuICAgKiBwcm92aWRlIGEgcGF0Y2ggdG8gbG9jYWwgY2hyb21pdW0gdG8gYmUgdXNlZCBieSBwdXBwZXRlZXIuIFJlbGV2YW50IHdoZW4gdXNpbmdcbiAgICogYGlzcmFlbGktYmFuay1zY3JhcGVycy1jb3JlYCBsaWJyYXJ5XG4gICAqL1xuICBleGVjdXRhYmxlUGF0aD86IHN0cmluZztcblxuICAvKipcbiAgICogaWYgc2V0IHRvIHRydWUsIGFsbCBpbnN0YWxsbWVudCB0cmFuc2FjdGlvbnMgd2lsbCBiZSBjb21iaW5lIGludG8gdGhlIGZpcnN0IG9uZVxuICAgKi9cbiAgY29tYmluZUluc3RhbGxtZW50cz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIGFkZGl0aW9uYWwgYXJndW1lbnRzIHRvIHBhc3MgdG8gdGhlIGJyb3dzZXIgaW5zdGFuY2UuIFRoZSBsaXN0IG9mIGZsYWdzIGNhbiBiZSBmb3VuZCBpblxuICAgKlxuICAgKiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL01vemlsbGEvQ29tbWFuZF9MaW5lX09wdGlvbnNcbiAgICogaHR0cHM6Ly9wZXRlci5zaC9leHBlcmltZW50cy9jaHJvbWl1bS1jb21tYW5kLWxpbmUtc3dpdGNoZXMvXG4gICAqL1xuICBhcmdzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIGFkanVzdCB0aGUgYnJvd3NlciBpbnN0YW5jZSBiZWZvcmUgaXQgaXMgYmVpbmcgdXNlZFxuICAgKlxuICAgKiBAcGFyYW0gYnJvd3NlclxuICAgKi9cbiAgcHJlcGFyZUJyb3dzZXI/OiAoYnJvd3NlcjogQnJvd3NlcikgPT4gUHJvbWlzZTx2b2lkPjtcblxuICAvKipcbiAgICogYWRqdXN0IHRoZSBwYWdlIGluc3RhbmNlIGJlZm9yZSBpdCBpcyBiZWluZyB1c2VkLlxuICAgKlxuICAgKiBAcGFyYW0gcGFnZVxuICAgKi9cbiAgcHJlcGFyZVBhZ2U/OiAocGFnZTogUGFnZSkgPT4gUHJvbWlzZTx2b2lkPjtcblxuICAvKipcbiAgICogaWYgc2V0LCBzdG9yZSBhIHNjcmVlbnNob3QgaWYgZmFpbGVkIHRvIHNjcmFwZS4gVXNlZCBmb3IgZGVidWcgcHVycG9zZXNcbiAgICovXG4gIHN0b3JlRmFpbHVyZVNjcmVlblNob3RQYXRoPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBpZiBzZXQsIHdpbGwgc2V0IHRoZSB0aW1lb3V0IGluIG1pbGxpc2Vjb25kcyBvZiBwdXBwZXRlZXIncyBgcGFnZS5zZXREZWZhdWx0VGltZW91dGAuXG4gICAqL1xuICBkZWZhdWx0VGltZW91dD86IG51bWJlcjtcbn1cblxuZXhwb3J0IGVudW0gU2NhcGVyUHJvZ3Jlc3NUeXBlcyB7XG4gIEluaXRpYWxpemluZyA9ICdJTklUSUFMSVpJTkcnLFxuICBTdGFydFNjcmFwaW5nID0gJ1NUQVJUX1NDUkFQSU5HJyxcbiAgTG9nZ2luZ0luID0gJ0xPR0dJTkdfSU4nLFxuICBMb2dpblN1Y2Nlc3MgPSAnTE9HSU5fU1VDQ0VTUycsXG4gIExvZ2luRmFpbGVkID0gJ0xPR0lOX0ZBSUxFRCcsXG4gIENoYW5nZVBhc3N3b3JkID0gJ0NIQU5HRV9QQVNTV09SRCcsXG4gIEVuZFNjcmFwaW5nID0gJ0VORF9TQ1JBUElORycsXG4gIFRlcm1pbmF0aW5nID0gJ1RFUk1JTkFUSU5HJyxcbn1cblxuZnVuY3Rpb24gY3JlYXRlRXJyb3JSZXN1bHQoZXJyb3JUeXBlOiBTY3JhcGVyRXJyb3JUeXBlcywgZXJyb3JNZXNzYWdlOiBzdHJpbmcpIHtcbiAgcmV0dXJuIHtcbiAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICBlcnJvclR5cGUsXG4gICAgZXJyb3JNZXNzYWdlLFxuICB9O1xufVxuXG5mdW5jdGlvbiBjcmVhdGVUaW1lb3V0RXJyb3IoZXJyb3JNZXNzYWdlOiBzdHJpbmcpIHtcbiAgcmV0dXJuIGNyZWF0ZUVycm9yUmVzdWx0KFNjcmFwZXJFcnJvclR5cGVzLlRpbWVvdXQsIGVycm9yTWVzc2FnZSk7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUdlbmVyaWNFcnJvcihlcnJvck1lc3NhZ2U6IHN0cmluZykge1xuICByZXR1cm4gY3JlYXRlRXJyb3JSZXN1bHQoU2NyYXBlckVycm9yVHlwZXMuR2VuZXJpYywgZXJyb3JNZXNzYWdlKTtcbn1cblxuZXhwb3J0IGNsYXNzIEJhc2VTY3JhcGVyIHtcbiAgcHJpdmF0ZSBldmVudEVtaXR0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgY29uc3RydWN0b3IocHVibGljIG9wdGlvbnM6IFNjcmFwZXJPcHRpb25zKSB7XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgIEB0eXBlc2NyaXB0LWVzbGludC9yZXF1aXJlLWF3YWl0XG4gIGFzeW5jIGluaXRpYWxpemUoKSB7XG4gICAgdGhpcy5lbWl0UHJvZ3Jlc3MoU2NhcGVyUHJvZ3Jlc3NUeXBlcy5Jbml0aWFsaXppbmcpO1xuICAgIG1vbWVudC50ei5zZXREZWZhdWx0KCdBc2lhL0plcnVzYWxlbScpO1xuICB9XG5cbiAgYXN5bmMgc2NyYXBlKGNyZWRlbnRpYWxzOiBTY3JhcGVyQ3JlZGVudGlhbHMpOiBQcm9taXNlPFNjYXBlclNjcmFwaW5nUmVzdWx0PiB7XG4gICAgdGhpcy5lbWl0UHJvZ3Jlc3MoU2NhcGVyUHJvZ3Jlc3NUeXBlcy5TdGFydFNjcmFwaW5nKTtcbiAgICBhd2FpdCB0aGlzLmluaXRpYWxpemUoKTtcblxuICAgIGxldCBsb2dpblJlc3VsdDtcbiAgICB0cnkge1xuICAgICAgbG9naW5SZXN1bHQgPSBhd2FpdCB0aGlzLmxvZ2luKGNyZWRlbnRpYWxzKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBsb2dpblJlc3VsdCA9IGUgaW5zdGFuY2VvZiBUaW1lb3V0RXJyb3IgP1xuICAgICAgICBjcmVhdGVUaW1lb3V0RXJyb3IoZS5tZXNzYWdlKSA6XG4gICAgICAgIGNyZWF0ZUdlbmVyaWNFcnJvcihlLm1lc3NhZ2UpO1xuICAgIH1cblxuICAgIGxldCBzY3JhcGVSZXN1bHQ7XG4gICAgaWYgKGxvZ2luUmVzdWx0LnN1Y2Nlc3MpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHNjcmFwZVJlc3VsdCA9IGF3YWl0IHRoaXMuZmV0Y2hEYXRhKCk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHNjcmFwZVJlc3VsdCA9XG4gICAgICAgICAgZSBpbnN0YW5jZW9mIFRpbWVvdXRFcnJvciA/XG4gICAgICAgICAgICBjcmVhdGVUaW1lb3V0RXJyb3IoZS5tZXNzYWdlKSA6XG4gICAgICAgICAgICBjcmVhdGVHZW5lcmljRXJyb3IoZS5tZXNzYWdlKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgc2NyYXBlUmVzdWx0ID0gbG9naW5SZXN1bHQ7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHN1Y2Nlc3MgPSBzY3JhcGVSZXN1bHQgJiYgc2NyYXBlUmVzdWx0LnN1Y2Nlc3MgPT09IHRydWU7XG4gICAgICBhd2FpdCB0aGlzLnRlcm1pbmF0ZShzdWNjZXNzKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBzY3JhcGVSZXN1bHQgPSBjcmVhdGVHZW5lcmljRXJyb3IoZS5tZXNzYWdlKTtcbiAgICB9XG4gICAgdGhpcy5lbWl0UHJvZ3Jlc3MoU2NhcGVyUHJvZ3Jlc3NUeXBlcy5FbmRTY3JhcGluZyk7XG5cbiAgICByZXR1cm4gc2NyYXBlUmVzdWx0O1xuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFycywgQHR5cGVzY3JpcHQtZXNsaW50L3JlcXVpcmUtYXdhaXRcbiAgYXN5bmMgbG9naW4oX2NyZWRlbnRpYWxzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KTogUHJvbWlzZTxTY2FwZXJMb2dpblJlc3VsdD4ge1xuICAgIHRocm93IG5ldyBFcnJvcihgbG9naW4oKSBpcyBub3QgY3JlYXRlZCBpbiAke3RoaXMub3B0aW9ucy5jb21wYW55SWR9YCk7XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgIEB0eXBlc2NyaXB0LWVzbGludC9yZXF1aXJlLWF3YWl0XG4gIGFzeW5jIGZldGNoRGF0YSgpOiBQcm9taXNlPFNjYXBlclNjcmFwaW5nUmVzdWx0PiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBmZXRjaERhdGEoKSBpcyBub3QgY3JlYXRlZCBpbiAke3RoaXMub3B0aW9ucy5jb21wYW55SWR9YCk7XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzLCBAdHlwZXNjcmlwdC1lc2xpbnQvcmVxdWlyZS1hd2FpdFxuICBhc3luYyB0ZXJtaW5hdGUoX3N1Y2Nlc3M6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmVtaXRQcm9ncmVzcyhTY2FwZXJQcm9ncmVzc1R5cGVzLlRlcm1pbmF0aW5nKTtcbiAgfVxuXG4gIGVtaXRQcm9ncmVzcyh0eXBlOiBTY2FwZXJQcm9ncmVzc1R5cGVzKSB7XG4gICAgdGhpcy5lbWl0KFNDUkFQRV9QUk9HUkVTUywgeyB0eXBlIH0pO1xuICB9XG5cbiAgZW1pdChldmVudE5hbWU6IHN0cmluZywgcGF5bG9hZDogUmVjb3JkPHN0cmluZywgYW55Pikge1xuICAgIHRoaXMuZXZlbnRFbWl0dGVyLmVtaXQoZXZlbnROYW1lLCB0aGlzLm9wdGlvbnMuY29tcGFueUlkLCBwYXlsb2FkKTtcbiAgfVxuXG4gIG9uUHJvZ3Jlc3MoZnVuYzogKC4uLmFyZ3M6IGFueVtdKSA9PiB2b2lkKSB7XG4gICAgdGhpcy5ldmVudEVtaXR0ZXIub24oU0NSQVBFX1BST0dSRVNTLCBmdW5jKTtcbiAgfVxufVxuIl19
|
|
143
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JhcGVycy9iYXNlLXNjcmFwZXIudHMiXSwibmFtZXMiOlsiU0NSQVBFX1BST0dSRVNTIiwiU2NyYXBlckVycm9yVHlwZXMiLCJTY2FwZXJQcm9ncmVzc1R5cGVzIiwiY3JlYXRlRXJyb3JSZXN1bHQiLCJlcnJvclR5cGUiLCJlcnJvck1lc3NhZ2UiLCJzdWNjZXNzIiwiY3JlYXRlVGltZW91dEVycm9yIiwiVGltZW91dCIsImNyZWF0ZUdlbmVyaWNFcnJvciIsIkdlbmVyaWMiLCJCYXNlU2NyYXBlciIsImNvbnN0cnVjdG9yIiwib3B0aW9ucyIsIkV2ZW50RW1pdHRlciIsImluaXRpYWxpemUiLCJlbWl0UHJvZ3Jlc3MiLCJJbml0aWFsaXppbmciLCJtb21lbnQiLCJ0eiIsInNldERlZmF1bHQiLCJzY3JhcGUiLCJjcmVkZW50aWFscyIsIlN0YXJ0U2NyYXBpbmciLCJsb2dpblJlc3VsdCIsImxvZ2luIiwiZSIsIlRpbWVvdXRFcnJvciIsIm1lc3NhZ2UiLCJzY3JhcGVSZXN1bHQiLCJmZXRjaERhdGEiLCJ0ZXJtaW5hdGUiLCJFbmRTY3JhcGluZyIsIl9jcmVkZW50aWFscyIsIkVycm9yIiwiY29tcGFueUlkIiwiX3N1Y2Nlc3MiLCJUZXJtaW5hdGluZyIsInR5cGUiLCJlbWl0IiwiZXZlbnROYW1lIiwicGF5bG9hZCIsImV2ZW50RW1pdHRlciIsIm9uUHJvZ3Jlc3MiLCJmdW5jIiwib24iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOztBQUVBOztBQUNBOzs7Ozs7QUFJQSxNQUFNQSxlQUFlLEdBQUcsaUJBQXhCO0lBRVlDLGlCOzs7V0FBQUEsaUI7QUFBQUEsRUFBQUEsaUI7QUFBQUEsRUFBQUEsaUI7QUFBQUEsRUFBQUEsaUI7QUFBQUEsRUFBQUEsaUI7QUFBQUEsRUFBQUEsaUI7QUFBQUEsRUFBQUEsaUI7R0FBQUEsaUIsaUNBQUFBLGlCOztJQW1IQUMsbUI7OztXQUFBQSxtQjtBQUFBQSxFQUFBQSxtQjtBQUFBQSxFQUFB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LFNBQU4sR0FBaUQ7QUFDL0MsVUFBTSxJQUFJSSxLQUFKLENBQVcsaUNBQWdDLEtBQUtyQixPQUFMLENBQWFzQixTQUFVLEVBQWxFLENBQU47QUFDRCxHQTFEc0IsQ0E0RHZCOzs7QUFDQSxRQUFNSixTQUFOLENBQWdCSyxRQUFoQixFQUFtQztBQUNqQyxTQUFLcEIsWUFBTCxDQUFrQmQsbUJBQW1CLENBQUNtQyxXQUF0QztBQUNEOztBQUVEckIsRUFBQUEsWUFBWSxDQUFDc0IsSUFBRCxFQUE0QjtBQUN0QyxTQUFLQyxJQUFMLENBQVV2QyxlQUFWLEVBQTJCO0FBQUVzQyxNQUFBQTtBQUFGLEtBQTNCO0FBQ0Q7O0FBRURDLEVBQUFBLElBQUksQ0FBQ0MsU0FBRCxFQUFvQkMsT0FBcEIsRUFBa0Q7QUFDcEQsU0FBS0MsWUFBTCxDQUFrQkgsSUFBbEIsQ0FBdUJDLFNBQXZCLEVBQWtDLEtBQUszQixPQUFMLENBQWFzQixTQUEvQyxFQUEwRE0sT0FBMUQ7QUFDRDs7QUFFREUsRUFBQUEsVUFBVSxDQUFDQyxJQUFELEVBQWlDO0FBQ3pDLFNBQUtGLFlBQUwsQ0FBa0JHLEVBQWxCLENBQXFCN0MsZUFBckIsRUFBc0M0QyxJQUF0QztBQUNEOztBQTNFc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFdmVudEVtaXR0ZXIgfSBmcm9tICdldmVudHMnO1xuaW1wb3J0IHsgQnJvd3NlciwgUGFnZSB9IGZyb20gJ3B1cHBldGVlcic7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudC10aW1lem9uZSc7XG5pbXBvcnQgeyBUaW1lb3V0RXJyb3IgfSBmcm9tICcuLi9oZWxwZXJzL3dhaXRpbmcnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25zQWNjb3VudCB9IGZyb20gJy4uL3RyYW5zYWN0aW9ucyc7XG5pbXBvcnQgeyBDb21wYW55VHlwZXMgfSBmcm9tICcuLi9kZWZpbml0aW9ucyc7XG5cbmNvbnN0IFNDUkFQRV9QUk9HUkVTUyA9ICdTQ1JBUEVfUFJPR1JFU1MnO1xuXG5leHBvcnQgZW51bSBTY3JhcGVyRXJyb3JUeXBlcyB7XG4gIEludmFsaWRQYXNzd29yZCA9J0lOVkFMSURfUEFTU1dPUkQnLFxuICBDaGFuZ2VQYXNzd29yZCA9ICdDSEFOR0VfUEFTU1dPUkQnLFxuICBUaW1lb3V0ID0gJ1RJTUVPVVQnLFxuICBBY2NvdW50QmxvY2tlZCA9ICdBQ0NPVU5UX0JMT0NLRUQnLFxuICBHZW5lcmljID0gJ0dFTkVSSUMnLFxuICBHZW5lcmFsID0gJ0dFTkVSQUxfRVJST1InXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2NhcGVyTG9naW5SZXN1bHQge1xuICBzdWNjZXNzOiBib29sZWFuO1xuICBlcnJvclR5cGU/OiBTY3JhcGVyRXJyb3JUeXBlcztcbiAgZXJyb3JNZXNzYWdlPzogc3RyaW5nOyAvLyBvbmx5IG9uIHN1Y2Nlc3M9ZmFsc2Vcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGdXR1cmVEZWJpdCB7XG4gIGFtb3VudDogbnVtYmVyO1xuICBhbW91bnRDdXJyZW5jeTogc3RyaW5nO1xuICBjaGFyZ2VEYXRlPzogc3RyaW5nO1xuICBiYW5rQWNjb3VudE51bWJlcj86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTY2FwZXJTY3JhcGluZ1Jlc3VsdCB7XG4gIHN1Y2Nlc3M6IGJvb2xlYW47XG4gIGFjY291bnRzPzogVHJhbnNhY3Rpb25zQWNjb3VudFtdO1xuICBmdXR1cmVEZWJpdHM/OiBGdXR1cmVEZWJpdFtdO1xuICBlcnJvclR5cGU/OiBTY3JhcGVyRXJyb3JUeXBlcztcbiAgZXJyb3JNZXNzYWdlPzogc3RyaW5nOyAvLyBvbmx5IG9uIHN1Y2Nlc3M9ZmFsc2Vcbn1cblxuZXhwb3J0IHR5cGUgU2NyYXBlckNyZWRlbnRpYWxzID0gUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcblxuZXhwb3J0IGludGVyZmFjZSBTY3JhcGVyT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgY29tcGFueSB5b3Ugd2FudCB0byBzY3JhcGVcbiAgICovXG4gIGNvbXBhbnlJZDogQ29tcGFueVR5cGVzO1xuXG4gIC8qKlxuICAgKiBpbmNsdWRlIG1vcmUgZGVidWcgaW5mbyBhYm91dCBpbiB0aGUgb3V0cHV0XG4gICAqL1xuICB2ZXJib3NlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogdGhlIGRhdGUgdG8gZmV0Y2ggdHJhbnNhY3Rpb25zIGZyb20gKGNhbid0IGJlIGJlZm9yZSB0aGUgbWluaW11bSBhbGxvd2VkIHRpbWUgZGlmZmVyZW5jZSBmb3IgdGhlIHNjcmFwZXIpXG4gICAqL1xuICBzdGFydERhdGU6IERhdGU7XG5cbiAgLyoqXG4gICAqIHNob3dzIHRoZSBicm93c2VyIHdoaWxlIHNjcmFwaW5nLCBnb29kIGZvciBkZWJ1Z2dpbmcgKGRlZmF1bHQgZmFsc2UpXG4gICAqL1xuICBzaG93QnJvd3Nlcj86IGJvb2xlYW47XG5cblxuICAvKipcbiAgICogc2NyYXBlIHRyYW5zYWN0aW9ucyB0byBiZSBwcm9jZXNzZWQgWCBtb250aHMgaW4gdGhlIGZ1dHVyZVxuICAgKi9cbiAgZnV0dXJlTW9udGhzVG9TY3JhcGU/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIG9wdGlvbiBmcm9tIGluaXQgcHVwcGV0ZWVyIGJyb3dzZXIgaW5zdGFuY2Ugb3V0c2lkZSB0aGUgbGliYXJ5IHNjb3BlLiB5b3UgY2FuIGdldFxuICAgKiBicm93c2VyIGRpcmV0bHkgZnJvbSBwdXBwZXRlZXIgdmlhIGBwdXBwZXRlZXIubGF1bmNoKClgXG4gICAqL1xuICBicm93c2VyPzogYW55O1xuXG4gIC8qKlxuICAgKiBwcm92aWRlIGEgcGF0Y2ggdG8gbG9jYWwgY2hyb21pdW0gdG8gYmUgdXNlZCBieSBwdXBwZXRlZXIuIFJlbGV2YW50IHdoZW4gdXNpbmdcbiAgICogYGlzcmFlbGktYmFuay1zY3JhcGVycy1jb3JlYCBsaWJyYXJ5XG4gICAqL1xuICBleGVjdXRhYmxlUGF0aD86IHN0cmluZztcblxuICAvKipcbiAgICogaWYgc2V0IHRvIHRydWUsIGFsbCBpbnN0YWxsbWVudCB0cmFuc2FjdGlvbnMgd2lsbCBiZSBjb21iaW5lIGludG8gdGhlIGZpcnN0IG9uZVxuICAgKi9cbiAgY29tYmluZUluc3RhbGxtZW50cz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIGFkZGl0aW9uYWwgYXJndW1lbnRzIHRvIHBhc3MgdG8gdGhlIGJyb3dzZXIgaW5zdGFuY2UuIFRoZSBsaXN0IG9mIGZsYWdzIGNhbiBiZSBmb3VuZCBpblxuICAgKlxuICAgKiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL01vemlsbGEvQ29tbWFuZF9MaW5lX09wdGlvbnNcbiAgICogaHR0cHM6Ly9wZXRlci5zaC9leHBlcmltZW50cy9jaHJvbWl1bS1jb21tYW5kLWxpbmUtc3dpdGNoZXMvXG4gICAqL1xuICBhcmdzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIE1heGltdW0gbmF2aWdhdGlvbiB0aW1lIGluIG1pbGxpc2Vjb25kcywgcGFzcyAwIHRvIGRpc2FibGUgdGltZW91dC5cbiAgICogQGRlZmF1bHQgMzAwMDBcbiAgICovXG4gIHRpbWVvdXQ/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIGFkanVzdCB0aGUgYnJvd3NlciBpbnN0YW5jZSBiZWZvcmUgaXQgaXMgYmVpbmcgdXNlZFxuICAgKlxuICAgKiBAcGFyYW0gYnJvd3NlclxuICAgKi9cbiAgcHJlcGFyZUJyb3dzZXI/OiAoYnJvd3NlcjogQnJvd3NlcikgPT4gUHJvbWlzZTx2b2lkPjtcblxuICAvKipcbiAgICogYWRqdXN0IHRoZSBwYWdlIGluc3RhbmNlIGJlZm9yZSBpdCBpcyBiZWluZyB1c2VkLlxuICAgKlxuICAgKiBAcGFyYW0gcGFnZVxuICAgKi9cbiAgcHJlcGFyZVBhZ2U/OiAocGFnZTogUGFnZSkgPT4gUHJvbWlzZTx2b2lkPjtcblxuICAvKipcbiAgICogaWYgc2V0LCBzdG9yZSBhIHNjcmVlbnNob3QgaWYgZmFpbGVkIHRvIHNjcmFwZS4gVXNlZCBmb3IgZGVidWcgcHVycG9zZXNcbiAgICovXG4gIHN0b3JlRmFpbHVyZVNjcmVlblNob3RQYXRoPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBpZiBzZXQsIHdpbGwgc2V0IHRoZSB0aW1lb3V0IGluIG1pbGxpc2Vjb25kcyBvZiBwdXBwZXRlZXIncyBgcGFnZS5zZXREZWZhdWx0VGltZW91dGAuXG4gICAqL1xuICBkZWZhdWx0VGltZW91dD86IG51bWJlcjtcbn1cblxuZXhwb3J0IGVudW0gU2NhcGVyUHJvZ3Jlc3NUeXBlcyB7XG4gIEluaXRpYWxpemluZyA9ICdJTklUSUFMSVpJTkcnLFxuICBTdGFydFNjcmFwaW5nID0gJ1NUQVJUX1NDUkFQSU5HJyxcbiAgTG9nZ2luZ0luID0gJ0xPR0dJTkdfSU4nLFxuICBMb2dpblN1Y2Nlc3MgPSAnTE9HSU5fU1VDQ0VTUycsXG4gIExvZ2luRmFpbGVkID0gJ0xPR0lOX0ZBSUxFRCcsXG4gIENoYW5nZVBhc3N3b3JkID0gJ0NIQU5HRV9QQVNTV09SRCcsXG4gIEVuZFNjcmFwaW5nID0gJ0VORF9TQ1JBUElORycsXG4gIFRlcm1pbmF0aW5nID0gJ1RFUk1JTkFUSU5HJyxcbn1cblxuZnVuY3Rpb24gY3JlYXRlRXJyb3JSZXN1bHQoZXJyb3JUeXBlOiBTY3JhcGVyRXJyb3JUeXBlcywgZXJyb3JNZXNzYWdlOiBzdHJpbmcpIHtcbiAgcmV0dXJuIHtcbiAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICBlcnJvclR5cGUsXG4gICAgZXJyb3JNZXNzYWdlLFxuICB9O1xufVxuXG5mdW5jdGlvbiBjcmVhdGVUaW1lb3V0RXJyb3IoZXJyb3JNZXNzYWdlOiBzdHJpbmcpIHtcbiAgcmV0dXJuIGNyZWF0ZUVycm9yUmVzdWx0KFNjcmFwZXJFcnJvclR5cGVzLlRpbWVvdXQsIGVycm9yTWVzc2FnZSk7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUdlbmVyaWNFcnJvcihlcnJvck1lc3NhZ2U6IHN0cmluZykge1xuICByZXR1cm4gY3JlYXRlRXJyb3JSZXN1bHQoU2NyYXBlckVycm9yVHlwZXMuR2VuZXJpYywgZXJyb3JNZXNzYWdlKTtcbn1cblxuZXhwb3J0IGNsYXNzIEJhc2VTY3JhcGVyIHtcbiAgcHJpdmF0ZSBldmVudEVtaXR0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgY29uc3RydWN0b3IocHVibGljIG9wdGlvbnM6IFNjcmFwZXJPcHRpb25zKSB7XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgIEB0eXBlc2NyaXB0LWVzbGludC9yZXF1aXJlLWF3YWl0XG4gIGFzeW5jIGluaXRpYWxpemUoKSB7XG4gICAgdGhpcy5lbWl0UHJvZ3Jlc3MoU2NhcGVyUHJvZ3Jlc3NUeXBlcy5Jbml0aWFsaXppbmcpO1xuICAgIG1vbWVudC50ei5zZXREZWZhdWx0KCdBc2lhL0plcnVzYWxlbScpO1xuICB9XG5cbiAgYXN5bmMgc2NyYXBlKGNyZWRlbnRpYWxzOiBTY3JhcGVyQ3JlZGVudGlhbHMpOiBQcm9taXNlPFNjYXBlclNjcmFwaW5nUmVzdWx0PiB7XG4gICAgdGhpcy5lbWl0UHJvZ3Jlc3MoU2NhcGVyUHJvZ3Jlc3NUeXBlcy5TdGFydFNjcmFwaW5nKTtcbiAgICBhd2FpdCB0aGlzLmluaXRpYWxpemUoKTtcblxuICAgIGxldCBsb2dpblJlc3VsdDtcbiAgICB0cnkge1xuICAgICAgbG9naW5SZXN1bHQgPSBhd2FpdCB0aGlzLmxvZ2luKGNyZWRlbnRpYWxzKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBsb2dpblJlc3VsdCA9IGUgaW5zdGFuY2VvZiBUaW1lb3V0RXJyb3IgP1xuICAgICAgICBjcmVhdGVUaW1lb3V0RXJyb3IoZS5tZXNzYWdlKSA6XG4gICAgICAgIGNyZWF0ZUdlbmVyaWNFcnJvcihlLm1lc3NhZ2UpO1xuICAgIH1cblxuICAgIGxldCBzY3JhcGVSZXN1bHQ7XG4gICAgaWYgKGxvZ2luUmVzdWx0LnN1Y2Nlc3MpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHNjcmFwZVJlc3VsdCA9IGF3YWl0IHRoaXMuZmV0Y2hEYXRhKCk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHNjcmFwZVJlc3VsdCA9XG4gICAgICAgICAgZSBpbnN0YW5jZW9mIFRpbWVvdXRFcnJvciA/XG4gICAgICAgICAgICBjcmVhdGVUaW1lb3V0RXJyb3IoZS5tZXNzYWdlKSA6XG4gICAgICAgICAgICBjcmVhdGVHZW5lcmljRXJyb3IoZS5tZXNzYWdlKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgc2NyYXBlUmVzdWx0ID0gbG9naW5SZXN1bHQ7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHN1Y2Nlc3MgPSBzY3JhcGVSZXN1bHQgJiYgc2NyYXBlUmVzdWx0LnN1Y2Nlc3MgPT09IHRydWU7XG4gICAgICBhd2FpdCB0aGlzLnRlcm1pbmF0ZShzdWNjZXNzKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBzY3JhcGVSZXN1bHQgPSBjcmVhdGVHZW5lcmljRXJyb3IoZS5tZXNzYWdlKTtcbiAgICB9XG4gICAgdGhpcy5lbWl0UHJvZ3Jlc3MoU2NhcGVyUHJvZ3Jlc3NUeXBlcy5FbmRTY3JhcGluZyk7XG5cbiAgICByZXR1cm4gc2NyYXBlUmVzdWx0O1xuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFycywgQHR5cGVzY3JpcHQtZXNsaW50L3JlcXVpcmUtYXdhaXRcbiAgYXN5bmMgbG9naW4oX2NyZWRlbnRpYWxzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KTogUHJvbWlzZTxTY2FwZXJMb2dpblJlc3VsdD4ge1xuICAgIHRocm93IG5ldyBFcnJvcihgbG9naW4oKSBpcyBub3QgY3JlYXRlZCBpbiAke3RoaXMub3B0aW9ucy5jb21wYW55SWR9YCk7XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgIEB0eXBlc2NyaXB0LWVzbGludC9yZXF1aXJlLWF3YWl0XG4gIGFzeW5jIGZldGNoRGF0YSgpOiBQcm9taXNlPFNjYXBlclNjcmFwaW5nUmVzdWx0PiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBmZXRjaERhdGEoKSBpcyBub3QgY3JlYXRlZCBpbiAke3RoaXMub3B0aW9ucy5jb21wYW55SWR9YCk7XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzLCBAdHlwZXNjcmlwdC1lc2xpbnQvcmVxdWlyZS1hd2FpdFxuICBhc3luYyB0ZXJtaW5hdGUoX3N1Y2Nlc3M6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmVtaXRQcm9ncmVzcyhTY2FwZXJQcm9ncmVzc1R5cGVzLlRlcm1pbmF0aW5nKTtcbiAgfVxuXG4gIGVtaXRQcm9ncmVzcyh0eXBlOiBTY2FwZXJQcm9ncmVzc1R5cGVzKSB7XG4gICAgdGhpcy5lbWl0KFNDUkFQRV9QUk9HUkVTUywgeyB0eXBlIH0pO1xuICB9XG5cbiAgZW1pdChldmVudE5hbWU6IHN0cmluZywgcGF5bG9hZDogUmVjb3JkPHN0cmluZywgYW55Pikge1xuICAgIHRoaXMuZXZlbnRFbWl0dGVyLmVtaXQoZXZlbnROYW1lLCB0aGlzLm9wdGlvbnMuY29tcGFueUlkLCBwYXlsb2FkKTtcbiAgfVxuXG4gIG9uUHJvZ3Jlc3MoZnVuYzogKC4uLmFyZ3M6IGFueVtdKSA9PiB2b2lkKSB7XG4gICAgdGhpcy5ldmVudEVtaXR0ZXIub24oU0NSQVBFX1BST0dSRVNTLCBmdW5jKTtcbiAgfVxufVxuIl19
|