israeli-bank-scrapers 1.10.3 → 1.10.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/scrapers/visa-cal.js +16 -6
- package/package.json +1 -1
package/lib/scrapers/visa-cal.js
CHANGED
|
@@ -178,6 +178,7 @@ async function fetchTransactionsForAccount(page, startDate, accountNumber, scrap
|
|
|
178
178
|
const buttonSelector = '[id$="FormAreaNoBorder_FormArea_ctlSubmitRequest"]';
|
|
179
179
|
const nextPageSelector = '[id$="FormAreaNoBorder_FormArea_ctlGridPager_btnNext"]';
|
|
180
180
|
const billingLabelSelector = '[id$=FormAreaNoBorder_FormArea_ctlMainToolBar_lblCaption]';
|
|
181
|
+
const secondaryBillingLabelSelector = '[id$=FormAreaNoBorder_FormArea_ctlSecondaryToolBar_lblCaption]';
|
|
181
182
|
const noDataSelector = '[id$=FormAreaNoBorder_FormArea_msgboxErrorMessages]';
|
|
182
183
|
debug('find the start date index in the dropbox');
|
|
183
184
|
const options = await (0, _elementsInteractions.pageEvalAll)(page, '[id$="FormAreaNoBorder_FormArea_clndrDebitDateScope_OptionList"] li', [], items => {
|
|
@@ -207,13 +208,22 @@ async function fetchTransactionsForAccount(page, startDate, accountNumber, scrap
|
|
|
207
208
|
if (pageHasNoTransactions) {
|
|
208
209
|
debug('page has no transactions');
|
|
209
210
|
} else {
|
|
210
|
-
var
|
|
211
|
+
var _settlementDateRegex$;
|
|
211
212
|
|
|
212
213
|
debug('find the billing date');
|
|
213
|
-
|
|
214
|
+
let billingDateLabel = await (0, _elementsInteractions.pageEval)(page, billingLabelSelector, '', element => {
|
|
214
215
|
return element.innerText;
|
|
215
216
|
});
|
|
216
|
-
|
|
217
|
+
let settlementDateRegex = /\d{1,2}[/]\d{2}[/]\d{2,4}/;
|
|
218
|
+
|
|
219
|
+
if (billingDateLabel === '') {
|
|
220
|
+
billingDateLabel = await (0, _elementsInteractions.pageEval)(page, secondaryBillingLabelSelector, '', element => {
|
|
221
|
+
return element.innerText;
|
|
222
|
+
});
|
|
223
|
+
settlementDateRegex = /\d{1,2}[/]\d{2,4}/;
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
const billingDate = (_settlementDateRegex$ = settlementDateRegex.exec(billingDateLabel)) === null || _settlementDateRegex$ === void 0 ? void 0 : _settlementDateRegex$[0];
|
|
217
227
|
|
|
218
228
|
if (!billingDate) {
|
|
219
229
|
throw new Error('failed to fetch process date');
|
|
@@ -279,9 +289,9 @@ async function fetchTransactionsForAccount(page, startDate, accountNumber, scrap
|
|
|
279
289
|
|
|
280
290
|
async function getAccountNumbers(page) {
|
|
281
291
|
return (0, _elementsInteractions.pageEvalAll)(page, '[id$=lnkItem]', [], elements => elements.map(e => e.text)).then(res => res.map(text => {
|
|
282
|
-
var _$exec$, _$
|
|
292
|
+
var _$exec$, _$exec;
|
|
283
293
|
|
|
284
|
-
return (_$exec$ = (_$
|
|
294
|
+
return (_$exec$ = (_$exec = /\d+$/.exec(text.trim())) === null || _$exec === void 0 ? void 0 : _$exec[0]) !== null && _$exec$ !== void 0 ? _$exec$ : '';
|
|
285
295
|
}));
|
|
286
296
|
}
|
|
287
297
|
|
|
@@ -366,4 +376,4 @@ class VisaCalScraper extends _baseScraperWithBrowser.BaseScraperWithBrowser {
|
|
|
366
376
|
|
|
367
377
|
var _default = VisaCalScraper;
|
|
368
378
|
exports.default = _default;
|
|
369
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JhcGVycy92aXNhLWNhbC50cyJdLCJuYW1lcyI6WyJMT0dJTl9VUkwiLCJUUkFOU0FDVElPTlNfVVJMIiwiTE9OR19EQVRFX0ZPUk1BVCIsIkRBVEVfRk9STUFUIiwiSW52YWxpZFBhc3N3b3JkTWVzc2FnZSIsImRlYnVnIiwiZ2V0TG9naW5GcmFtZSIsInBhZ2UiLCJmcmFtZSIsImZyYW1lcyIsImZpbmQiLCJmIiwidXJsIiwiaW5jbHVkZXMiLCJQcm9taXNlIiwicmVzb2x2ZSIsIkVycm9yIiwiaGFzSW52YWxpZFBhc3N3b3JkRXJyb3IiLCJlcnJvckZvdW5kIiwiZXJyb3JNZXNzYWdlIiwiaXRlbSIsImlubmVyVGV4dCIsImdldFBvc3NpYmxlTG9naW5SZXN1bHRzIiwidXJscyIsIkxvZ2luUmVzdWx0cyIsIlN1Y2Nlc3MiLCJJbnZhbGlkUGFzc3dvcmQiLCJvcHRpb25zIiwiY3JlYXRlTG9naW5GaWVsZHMiLCJjcmVkZW50aWFscyIsInNlbGVjdG9yIiwidmFsdWUiLCJ1c2VybmFtZSIsInBhc3N3b3JkIiwiZ2V0QW1vdW50RGF0YSIsImFtb3VudFN0ciIsImFtb3VudFN0ckNsbiIsInJlcGxhY2UiLCJjdXJyZW5jeSIsImFtb3VudCIsIlNIRUtFTF9DVVJSRU5DWV9TWU1CT0wiLCJwYXJzZUZsb2F0IiwiU0hFS0VMX0NVUlJFTkNZIiwiRE9MTEFSX0NVUlJFTkNZX1NZTUJPTCIsIkRPTExBUl9DVVJSRU5DWSIsIkVVUk9fQ1VSUkVOQ1lfU1lNQk9MIiwiRVVST19DVVJSRU5DWSIsInBhcnRzIiwic3BsaXQiLCJnZXRUcmFuc2FjdGlvbkluc3RhbGxtZW50cyIsIm1lbW8iLCJwYXJzZWRNZW1vIiwiZXhlYyIsImxlbmd0aCIsIm51bWJlciIsInBhcnNlSW50IiwidG90YWwiLCJjb252ZXJ0VHJhbnNhY3Rpb25zIiwidHhucyIsIm1hcCIsInR4biIsIm9yaWdpbmFsQW1vdW50VHVwbGUiLCJvcmlnaW5hbEFtb3VudCIsImNoYXJnZWRBbW91bnRUdXBsZSIsImNoYXJnZWRBbW91bnQiLCJpbnN0YWxsbWVudHMiLCJ0eG5EYXRlIiwiZGF0ZSIsInByb2Nlc3NlZERhdGVGb3JtYXQiLCJwcm9jZXNzZWREYXRlIiwidHhuUHJvY2Vzc2VkRGF0ZSIsInJlc3VsdCIsInR5cGUiLCJUcmFuc2FjdGlvblR5cGVzIiwiSW5zdGFsbG1lbnRzIiwiTm9ybWFsIiwic3RhdHVzIiwiVHJhbnNhY3Rpb25TdGF0dXNlcyIsIkNvbXBsZXRlZCIsImFkZCIsInRvSVNPU3RyaW5nIiwib3JpZ2luYWxDdXJyZW5jeSIsImNoYXJnZWRDdXJyZW5jeSIsImRlc2NyaXB0aW9uIiwiZmV0Y2hUcmFuc2FjdGlvbnNGb3JBY2NvdW50Iiwic3RhcnREYXRlIiwiYWNjb3VudE51bWJlciIsInNjcmFwZXJPcHRpb25zIiwic3RhcnREYXRlVmFsdWUiLCJmb3JtYXQiLCJkYXRlU2VsZWN0b3IiLCJkYXRlSGlkZGVuRmllbGRTZWxlY3RvciIsImJ1dHRvblNlbGVjdG9yIiwibmV4dFBhZ2VTZWxlY3RvciIsImJpbGxpbmdMYWJlbFNlbGVjdG9yIiwibm9EYXRhU2VsZWN0b3IiLCJpdGVtcyIsImVsIiwic3RhcnREYXRlSW5kZXgiLCJmaW5kSW5kZXgiLCJvcHRpb24iLCJhY2NvdW50VHJhbnNhY3Rpb25zIiwiY3VycmVudERhdGVJbmRleCIsIndhaXRGb3IiLCJhbGwiLCJ3YWl0Rm9yTmF2aWdhdGlvbiIsIndhaXRVbnRpbCIsInBhZ2VIYXNOb1RyYW5zYWN0aW9ucyIsImVsZW1lbnQiLCJzaXRlVmFsdWUiLCJiaWxsaW5nRGF0ZUxhYmVsIiwiYmlsbGluZ0RhdGUiLCJoYXNOZXh0UGFnZSIsInJhd1RyYW5zYWN0aW9ucyIsImNvbHVtbnMiLCJnZXRFbGVtZW50c0J5VGFnTmFtZSIsInB1c2giLCJmaWx0ZXIiLCJjb21iaW5lSW5zdGFsbG1lbnRzIiwic3Vic3RyaW5nIiwiZ2V0QWNjb3VudE51bWJlcnMiLCJlbGVtZW50cyIsImUiLCJ0ZXh0IiwidGhlbiIsInJlcyIsInRyaW0iLCJzZXRBY2NvdW50IiwiYWNjb3VudCIsImVsZW0iLCJhIiwiY2xpY2siLCJmZXRjaFRyYW5zYWN0aW9ucyIsImFjY291bnROdW1iZXJzIiwiYWNjb3VudHMiLCJWaXNhQ2FsU2NyYXBlciIsIkJhc2VTY3JhcGVyV2l0aEJyb3dzZXIiLCJnZXRMb2dpbk9wdGlvbnMiLCJsb2dpblVybCIsImZpZWxkcyIsInN1Ym1pdEJ1dHRvblNlbGVjdG9yIiwicG9zc2libGVSZXN1bHRzIiwiY2hlY2tSZWFkaW5lc3MiLCJwcmVBY3Rpb24iLCJvcGVuTG9naW5Qb3B1cCIsInVzZXJBZ2VudCIsImZldGNoRGF0YSIsImRlZmF1bHRTdGFydE1vbWVudCIsInN1YnRyYWN0IiwidG9EYXRlIiwic3RhcnRNb21lbnQiLCJtb21lbnQiLCJtYXgiLCJuYXZpZ2F0ZVRvIiwidW5kZWZpbmVkIiwic3VjY2VzcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFFQTs7QUFDQTs7QUFHQTs7QUFRQTs7QUFHQTs7QUFDQTs7QUFDQTs7Ozs7O0FBRUEsTUFBTUEsU0FBUyxHQUFHLCtCQUFsQjtBQUNBLE1BQU1DLGdCQUFnQixHQUFHLHVGQUF6QjtBQUNBLE1BQU1DLGdCQUFnQixHQUFHLFlBQXpCO0FBQ0EsTUFBTUMsV0FBVyxHQUFHLFVBQXBCO0FBQ0EsTUFBTUMsc0JBQXNCLEdBQUcsbUNBQS9CO0FBRUEsTUFBTUMsS0FBSyxHQUFHLHFCQUFTLFVBQVQsQ0FBZDs7QUFXQSxlQUFlQyxhQUFmLENBQTZCQyxJQUE3QixFQUF5QztBQUN2QyxNQUFJQyxLQUFtQixHQUFHLElBQTFCO0FBQ0FILEVBQUFBLEtBQUssQ0FBQyw4QkFBRCxDQUFMO0FBQ0EsUUFBTSx3QkFBVSxNQUFNO0FBQ3BCRyxJQUFBQSxLQUFLLEdBQUdELElBQUksQ0FDVEUsTUFESyxHQUVMQyxJQUZLLENBRUNDLENBQUQsSUFBT0EsQ0FBQyxDQUFDQyxHQUFGLEdBQVFDLFFBQVIsQ0FBaUIsb0JBQWpCLENBRlAsS0FFa0QsSUFGMUQ7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ZnJvbSAnbW9tZW50JztcbmltcG9ydCB7IEZyYW1lLCBQYWdlIH0gZnJvbSAncHVwcGV0ZWVyJztcbmltcG9ydCB7IEJhc2VTY3JhcGVyV2l0aEJyb3dzZXIsIExvZ2luT3B0aW9ucywgTG9naW5SZXN1bHRzIH0gZnJvbSAnLi9iYXNlLXNjcmFwZXItd2l0aC1icm93c2VyJztcbmltcG9ydCB7XG4gIGNsaWNrQnV0dG9uLCBlbGVtZW50UHJlc2VudE9uUGFnZSwgcGFnZUV2YWwsIHBhZ2VFdmFsQWxsLCBzZXRWYWx1ZSwgd2FpdFVudGlsRWxlbWVudEZvdW5kLFxufSBmcm9tICcuLi9oZWxwZXJzL2VsZW1lbnRzLWludGVyYWN0aW9ucyc7XG5pbXBvcnQge1xuICBUcmFuc2FjdGlvbixcbiAgVHJhbnNhY3Rpb25JbnN0YWxsbWVudHMsXG4gIFRyYW5zYWN0aW9uc0FjY291bnQsXG4gIFRyYW5zYWN0aW9uU3RhdHVzZXMsXG4gIFRyYW5zYWN0aW9uVHlwZXMsXG59IGZyb20gJy4uL3RyYW5zYWN0aW9ucyc7XG5pbXBvcnQgeyBTY2FwZXJPcHRpb25zLCBTY2FwZXJTY3JhcGluZ1Jlc3VsdCwgU2NyYXBlckNyZWRlbnRpYWxzIH0gZnJvbSAnLi9iYXNlLXNjcmFwZXInO1xuaW1wb3J0IHtcbiAgRE9MTEFSX0NVUlJFTkNZLCBET0xMQVJfQ1VSUkVOQ1lfU1lNQk9MLCBFVVJPX0NVUlJFTkNZLCBFVVJPX0NVUlJFTkNZX1NZTUJPTCwgU0hFS0VMX0NVUlJFTkNZLCBTSEVLRUxfQ1VSUkVOQ1lfU1lNQk9MLFxufSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgd2FpdFVudGlsIH0gZnJvbSAnLi4vaGVscGVycy93YWl0aW5nJztcbmltcG9ydCB7IGZpbHRlck9sZFRyYW5zYWN0aW9ucyB9IGZyb20gJy4uL2hlbHBlcnMvdHJhbnNhY3Rpb25zJztcbmltcG9ydCB7IGdldERlYnVnIH0gZnJvbSAnLi4vaGVscGVycy9kZWJ1Zyc7XG5cbmNvbnN0IExPR0lOX1VSTCA9ICdodHRwczovL3d3dy5jYWwtb25saW5lLmNvLmlsLyc7XG5jb25zdCBUUkFOU0FDVElPTlNfVVJMID0gJ2h0dHBzOi8vc2VydmljZXMuY2FsLW9ubGluZS5jby5pbC9DYXJkLUhvbGRlcnMvU2NyZWVucy9UcmFuc2FjdGlvbnMvVHJhbnNhY3Rpb25zLmFzcHgnO1xuY29uc3QgTE9OR19EQVRFX0ZPUk1BVCA9ICdERC9NTS9ZWVlZJztcbmNvbnN0IERBVEVfRk9STUFUID0gJ0REL01NL1lZJztcbmNvbnN0IEludmFsaWRQYXNzd29yZE1lc3NhZ2UgPSAn16nXnSDXlNee16nXqtee16kg15DXlSDXlNeh15nXodee15Qg16nXlNeV15bXoNeVINep15LXldeZ15nXnSc7XG5cbmNvbnN0IGRlYnVnID0gZ2V0RGVidWcoJ3Zpc2EtY2FsJyk7XG5cbmludGVyZmFjZSBTY3JhcGVkVHJhbnNhY3Rpb24ge1xuICBkYXRlOiBzdHJpbmc7XG4gIHByb2Nlc3NlZERhdGU6IHN0cmluZztcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgb3JpZ2luYWxBbW91bnQ6IHN0cmluZztcbiAgY2hhcmdlZEFtb3VudDogc3RyaW5nO1xuICBtZW1vOiBzdHJpbmc7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldExvZ2luRnJhbWUocGFnZTogUGFnZSkge1xuICBsZXQgZnJhbWU6IEZyYW1lIHwgbnVsbCA9IG51bGw7XG4gIGRlYnVnKCd3YWl0IHVudGlsIGxvZ2luIGZyYW1lIGZvdW5kJyk7XG4gIGF3YWl0IHdhaXRVbnRpbCgoKSA9PiB7XG4gICAgZnJhbWUgPSBwYWdlXG4gICAgICAuZnJhbWVzKClcbiAgICAgIC5maW5kKChmKSA9PiBmLnVybCgpLmluY2x1ZGVzKCdjb25uZWN0LmNhbC1vbmxpbmUnKSkgfHwgbnVsbDtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCEhZnJhbWUpO1xuICB9LCAnd2FpdCBmb3IgaWZyYW1lIHdpdGggbG9naW4gZm9ybScsIDEwMDAwLCAxMDAwKTtcblxuICBpZiAoIWZyYW1lKSB7XG4gICAgZGVidWcoJ2ZhaWxlZCB0byBmaW5kIGxvZ2luIGZyYW1lIGZvciAxMCBzZWNvbmRzJyk7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdmYWlsZWQgdG8gZXh0cmFjdCBsb2dpbiBpZnJhbWUnKTtcbiAgfVxuXG4gIHJldHVybiBmcmFtZTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gaGFzSW52YWxpZFBhc3N3b3JkRXJyb3IocGFnZTogUGFnZSkge1xuICBjb25zdCBmcmFtZSA9IGF3YWl0IGdldExvZ2luRnJhbWUocGFnZSk7XG4gIGNvbnN0IGVycm9yRm91bmQgPSBhd2FpdCBlbGVtZW50UHJlc2VudE9uUGFnZShmcmFtZSwgJ2Rpdi5nZW5lcmFsLWVycm9yID4gZGl2Jyk7XG4gIGNvbnN0IGVycm9yTWVzc2FnZSA9IGVycm9yRm91bmQgPyBhd2FpdCBwYWdlRXZhbChmcmFtZSwgJ2Rpdi5nZW5lcmFsLWVycm9yID4gZGl2JywgJycsIChpdGVtKSA9PiB7XG4gICAgcmV0dXJuIChpdGVtIGFzIEhUTUxEaXZFbGVtZW50KS5pbm5lclRleHQ7XG4gIH0pIDogJyc7XG4gIHJldHVybiBlcnJvck1lc3NhZ2UgPT09IEludmFsaWRQYXNzd29yZE1lc3NhZ2U7XG59XG5cbmZ1bmN0aW9uIGdldFBvc3NpYmxlTG9naW5SZXN1bHRzKCkge1xuICBkZWJ1ZygncmV0dXJuIHBvc3NpYmxlIGxvZ2luIHJlc3VsdHMnKTtcbiAgY29uc3QgdXJsczogTG9naW5PcHRpb25zWydwb3NzaWJsZVJlc3VsdHMnXSA9IHtcbiAgICBbTG9naW5SZXN1bHRzLlN1Y2Nlc3NdOiBbL0FjY291bnRNYW5hZ2VtZW50L2ldLFxuICAgIFtMb2dpblJlc3VsdHMuSW52YWxpZFBhc3N3b3JkXTogW2FzeW5jIChvcHRpb25zPzogeyBwYWdlPzogUGFnZX0pID0+IHtcbiAgICAgIGNvbnN0IHBhZ2UgPSBvcHRpb25zPy5wYWdlO1xuICAgICAgaWYgKCFwYWdlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBoYXNJbnZhbGlkUGFzc3dvcmRFcnJvcihwYWdlKTtcbiAgICB9XSxcbiAgICAvLyBbTG9naW5SZXN1bHRzLkFjY291bnRCbG9ja2VkXTogW10sIC8vIFRPRE8gYWRkIHdoZW4gcmVhY2hpbmcgdGhpcyBzY2VuYXJpb1xuICAgIC8vIFtMb2dpblJlc3VsdHMuQ2hhbmdlUGFzc3dvcmRdOiBbXSwgLy8gVE9ETyBhZGQgd2hlbiByZWFjaGluZyB0aGlzIHNjZW5hcmlvXG4gIH07XG4gIHJldHVybiB1cmxzO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVMb2dpbkZpZWxkcyhjcmVkZW50aWFsczogU2NyYXBlckNyZWRlbnRpYWxzKSB7XG4gIGRlYnVnKCdjcmVhdGUgbG9naW4gZmllbGRzIGZvciB1c2VybmFtZSBhbmQgcGFzc3dvcmQnKTtcbiAgcmV0dXJuIFtcbiAgICB7IHNlbGVjdG9yOiAnW2Zvcm1jb250cm9sbmFtZT1cInVzZXJOYW1lXCJdJywgdmFsdWU6IGNyZWRlbnRpYWxzLnVzZXJuYW1lIH0sXG4gICAgeyBzZWxlY3RvcjogJ1tmb3JtY29udHJvbG5hbWU9XCJwYXNzd29yZFwiXScsIHZhbHVlOiBjcmVkZW50aWFscy5wYXNzd29yZCB9LFxuICBdO1xufVxuXG5cbmZ1bmN0aW9uIGdldEFtb3VudERhdGEoYW1vdW50U3RyOiBzdHJpbmcpIHtcbiAgY29uc3QgYW1vdW50U3RyQ2xuID0gYW1vdW50U3RyLnJlcGxhY2UoJywnLCAnJyk7XG4gIGxldCBjdXJyZW5jeTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIGxldCBhbW91bnQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICBpZiAoYW1vdW50U3RyQ2xuLmluY2x1ZGVzKFNIRUtFTF9DVVJSRU5DWV9TWU1CT0wpKSB7XG4gICAgYW1vdW50ID0gLXBhcnNlRmxvYXQoYW1vdW50U3RyQ2xuLnJlcGxhY2UoU0hFS0VMX0NVUlJFTkNZX1NZTUJPTCwgJycpKTtcbiAgICBjdXJyZW5jeSA9IFNIRUtFTF9DVVJSRU5DWTtcbiAgfSBlbHNlIGlmIChhbW91bnRTdHJDbG4uaW5jbHVkZXMoRE9MTEFSX0NVUlJFTkNZX1NZTUJPTCkpIHtcbiAgICBhbW91bnQgPSAtcGFyc2VGbG9hdChhbW91bnRTdHJDbG4ucmVwbGFjZShET0xMQVJfQ1VSUkVOQ1lfU1lNQk9MLCAnJykpO1xuICAgIGN1cnJlbmN5ID0gRE9MTEFSX0NVUlJFTkNZO1xuICB9IGVsc2UgaWYgKGFtb3VudFN0ckNsbi5pbmNsdWRlcyhFVVJPX0NVUlJFTkNZX1NZTUJPTCkpIHtcbiAgICBhbW91bnQgPSAtcGFyc2VGbG9hdChhbW91bnRTdHJDbG4ucmVwbGFjZShFVVJPX0NVUlJFTkNZX1NZTUJPTCwgJycpKTtcbiAgICBjdXJyZW5jeSA9IEVVUk9fQ1VSUkVOQ1k7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgcGFydHMgPSBhbW91bnRTdHJDbG4uc3BsaXQoJyAnKTtcbiAgICBbY3VycmVuY3ldID0gcGFydHM7XG4gICAgYW1vdW50ID0gLXBhcnNlRmxvYXQocGFydHNbMV0pO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBhbW91bnQsXG4gICAgY3VycmVuY3ksXG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldFRyYW5zYWN0aW9uSW5zdGFsbG1lbnRzKG1lbW86IHN0cmluZyk6IFRyYW5zYWN0aW9uSW5zdGFsbG1lbnRzIHwgbnVsbCB7XG4gIGNvbnN0IHBhcnNlZE1lbW8gPSAoL9eq16nXnNeV150gKFxcZCspINee16rXldeaIChcXGQrKS8pLmV4ZWMobWVtbyB8fCAnJyk7XG5cbiAgaWYgKCFwYXJzZWRNZW1vIHx8IHBhcnNlZE1lbW8ubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIG51bWJlcjogcGFyc2VJbnQocGFyc2VkTWVtb1sxXSwgMTApLFxuICAgIHRvdGFsOiBwYXJzZUludChwYXJzZWRNZW1vWzJdLCAxMCksXG4gIH07XG59XG5mdW5jdGlvbiBjb252ZXJ0VHJhbnNhY3Rpb25zKHR4bnM6IFNjcmFwZWRUcmFuc2FjdGlvbltdKTogVHJhbnNhY3Rpb25bXSB7XG4gIGRlYnVnKGBjb252ZXJ0ICR7dHhucy5sZW5ndGh9IHJhdyB0cmFuc2FjdGlvbnMgdG8gb2ZmaWNpYWwgVHJhbnNhY3Rpb24gc3RydWN0dXJlYCk7XG4gIHJldHVybiB0eG5zLm1hcCgodHhuKSA9PiB7XG4gICAgY29uc3Qgb3JpZ2luYWxBbW91bnRUdXBsZSA9IGdldEFtb3VudERhdGEodHhuLm9yaWdpbmFsQW1vdW50IHx8ICcnKTtcbiAgICBjb25zdCBjaGFyZ2VkQW1vdW50VHVwbGUgPSBnZXRBbW91bnREYXRhKHR4bi5jaGFyZ2VkQW1vdW50IHx8ICcnKTtcblxuICAgIGNvbnN0IGluc3RhbGxtZW50cyA9IGdldFRyYW5zYWN0aW9uSW5zdGFsbG1lbnRzKHR4bi5tZW1vKTtcbiAgICBjb25zdCB0eG5EYXRlID0gbW9tZW50KHR4bi5kYXRlLCBEQVRFX0ZPUk1BVCk7XG4gICAgY29uc3QgcHJvY2Vzc2VkRGF0ZUZvcm1hdCA9XG4gICAgICB0eG4ucHJvY2Vzc2VkRGF0ZS5sZW5ndGggPT09IDggP1xuICAgICAgICBEQVRFX0ZPUk1BVCA6XG4gICAgICAgIHR4bi5wcm9jZXNzZWREYXRlLmxlbmd0aCA9PT0gOSB8fCB0eG4ucHJvY2Vzc2VkRGF0ZS5sZW5ndGggPT09IDEwID9cbiAgICAgICAgICBMT05HX0RBVEVfRk9STUFUIDpcbiAgICAgICAgICBudWxsO1xuICAgIGlmICghcHJvY2Vzc2VkRGF0ZUZvcm1hdCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIHByb2Nlc3NlZCBkYXRlJyk7XG4gICAgfVxuICAgIGNvbnN0IHR4blByb2Nlc3NlZERhdGUgPSBtb21lbnQodHhuLnByb2Nlc3NlZERhdGUsIHByb2Nlc3NlZERhdGVGb3JtYXQpO1xuXG4gICAgY29uc3QgcmVzdWx0OiBUcmFuc2FjdGlvbiA9IHtcbiAgICAgIHR5cGU6IGluc3RhbGxtZW50cyA/IFRyYW5zYWN0aW9uVHlwZXMuSW5zdGFsbG1lbnRzIDogVHJhbnNhY3Rpb25UeXBlcy5Ob3JtYWwsXG4gICAgICBzdGF0dXM6IFRyYW5zYWN0aW9uU3RhdHVzZXMuQ29tcGxldGVkLFxuICAgICAgZGF0ZTogaW5zdGFsbG1lbnRzID8gdHhuRGF0ZS5hZGQoaW5zdGFsbG1lbnRzLm51bWJlciAtIDEsICdtb250aCcpLnRvSVNPU3RyaW5nKCkgOiB0eG5EYXRlLnRvSVNPU3RyaW5nKCksXG4gICAgICBwcm9jZXNzZWREYXRlOiB0eG5Qcm9jZXNzZWREYXRlLnRvSVNPU3RyaW5nKCksXG4gICAgICBvcmlnaW5hbEFtb3VudDogb3JpZ2luYWxBbW91bnRUdXBsZS5hbW91bnQsXG4gICAgICBvcmlnaW5hbEN1cnJlbmN5OiBvcmlnaW5hbEFtb3VudFR1cGxlLmN1cnJlbmN5LFxuICAgICAgY2hhcmdlZEFtb3VudDogY2hhcmdlZEFtb3VudFR1cGxlLmFtb3VudCxcbiAgICAgIGNoYXJnZWRDdXJyZW5jeTogY2hhcmdlZEFtb3VudFR1cGxlLmN1cnJlbmN5LFxuICAgICAgZGVzY3JpcHRpb246IHR4bi5kZXNjcmlwdGlvbiB8fCAnJyxcbiAgICAgIG1lbW86IHR4bi5tZW1vIHx8ICcnLFxuICAgIH07XG5cbiAgICBpZiAoaW5zdGFsbG1lbnRzKSB7XG4gICAgICByZXN1bHQuaW5zdGFsbG1lbnRzID0gaW5zdGFsbG1lbnRzO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH0pO1xufVxuXG5hc3luYyBmdW5jdGlvbiBmZXRjaFRyYW5zYWN0aW9uc0ZvckFjY291bnQocGFnZTogUGFnZSwgc3RhcnREYXRlOiBNb21lbnQsIGFjY291bnROdW1iZXI6IHN0cmluZywgc2NyYXBlck9wdGlvbnM6IFNjYXBlck9wdGlvbnMpOiBQcm9taXNlPFRyYW5zYWN0aW9uc0FjY291bnQ+IHtcbiAgY29uc3Qgc3RhcnREYXRlVmFsdWUgPSBzdGFydERhdGUuZm9ybWF0KCdNTS9ZWVlZJyk7XG4gIGNvbnN0IGRhdGVTZWxlY3RvciA9ICdbaWQkPVwiRm9ybUFyZWFOb0JvcmRlcl9Gb3JtQXJlYV9jbG5kckRlYml0RGF0ZVNjb3BlX1RleHRCb3hcIl0nO1xuICBjb25zdCBkYXRlSGlkZGVuRmllbGRTZWxlY3RvciA9ICdbaWQkPVwiRm9ybUFyZWFOb0JvcmRlcl9Gb3JtQXJlYV9jbG5kckRlYml0RGF0ZVNjb3BlX0hpZGRlbkZpZWxkXCJdJztcbiAgY29uc3QgYnV0dG9uU2VsZWN0b3IgPSAnW2lkJD1cIkZvcm1BcmVhTm9Cb3JkZXJfRm9ybUFyZWFfY3RsU3VibWl0UmVxdWVzdFwiXSc7XG4gIGNvbnN0IG5leHRQYWdlU2VsZWN0b3IgPSAnW2lkJD1cIkZvcm1BcmVhTm9Cb3JkZXJfRm9ybUFyZWFfY3RsR3JpZFBhZ2VyX2J0bk5leHRcIl0nO1xuICBjb25zdCBiaWxsaW5nTGFiZWxTZWxlY3RvciA9ICdbaWQkPUZvcm1BcmVhTm9Cb3JkZXJfRm9ybUFyZWFfY3RsTWFpblRvb2xCYXJfbGJsQ2FwdGlvbl0nO1xuICBjb25zdCBub0RhdGFTZWxlY3RvciA9ICdbaWQkPUZvcm1BcmVhTm9Cb3JkZXJfRm9ybUFyZWFfbXNnYm94RXJyb3JNZXNzYWdlc10nO1xuXG4gIGRlYnVnKCdmaW5kIHRoZSBzdGFydCBkYXRlIGluZGV4IGluIHRoZSBkcm9wYm94Jyk7XG4gIGNvbnN0IG9wdGlvbnMgPSBhd2FpdCBwYWdlRXZhbEFsbChwYWdlLCAnW2lkJD1cIkZvcm1BcmVhTm9Cb3JkZXJfRm9ybUFyZWFfY2xuZHJEZWJpdERhdGVTY29wZV9PcHRpb25MaXN0XCJdIGxpJywgW10sIChpdGVtcykgPT4ge1xuICAgIHJldHVybiBpdGVtcy5tYXAoKGVsOiBhbnkpID0+IGVsLmlubmVyVGV4dCk7XG4gIH0pO1xuICBjb25zdCBzdGFydERhdGVJbmRleCA9IG9wdGlvbnMuZmluZEluZGV4KChvcHRpb24pID0+IG9wdGlvbiA9PT0gc3RhcnREYXRlVmFsdWUpO1xuXG4gIGRlYnVnKGBzY3JhcGUgJHtvcHRpb25zLmxlbmd0aCAtIHN0YXJ0RGF0ZUluZGV4fSBiaWxsaW5nIGN5Y2xlc2ApO1xuICBjb25zdCBhY2NvdW50VHJhbnNhY3Rpb25zOiBUcmFuc2FjdGlvbltdID0gW107XG4gIGZvciAobGV0IGN1cnJlbnREYXRlSW5kZXggPSBzdGFydERhdGVJbmRleDsgY3VycmVudERhdGVJbmRleCA8IG9wdGlvbnMubGVuZ3RoOyBjdXJyZW50RGF0ZUluZGV4ICs9IDEpIHtcbiAgICBkZWJ1Zygnd2FpdCBmb3IgZGF0ZSBzZWxlY3RvciB0byBiZSBmb3VuZCcpO1xuICAgIGF3YWl0IHdhaXRVbnRpbEVsZW1lbnRGb3VuZChwYWdlLCBkYXRlU2VsZWN0b3IsIHRydWUpO1xuICAgIGRlYnVnKGBzZXQgaGlkZGVuIHZhbHVlIG9mIHRoZSBkYXRlIHNlbGVjdG9yIHRvIGJlIHRoZSBpbmRleCAke2N1cnJlbnREYXRlSW5kZXh9YCk7XG4gICAgYXdhaXQgc2V0VmFsdWUocGFnZSwgZGF0ZUhpZGRlbkZpZWxkU2VsZWN0b3IsIGAke2N1cnJlbnREYXRlSW5kZXh9YCk7XG4gICAgZGVidWcoJ3dhaXQgYSBzZWNvbmQgdG8gd29ya2Fyb3VuZCBuYXZpZ2F0aW9uIGlzc3VlIGluIGhlYWRsZXNzIGJyb3dzZXIgbW9kZScpO1xuICAgIGF3YWl0IHBhZ2Uud2FpdEZvcigxMDAwKTtcbiAgICBkZWJ1ZygnY2xpY2sgb24gdGhlIGZpbHRlciBzdWJtaXQgYnV0dG9uIGFuZCB3YWl0IGZvciBuYXZpZ2F0aW9uJyk7XG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgICAgcGFnZS53YWl0Rm9yTmF2aWdhdGlvbih7IHdhaXRVbnRpbDogJ2RvbWNvbnRlbnRsb2FkZWQnIH0pLFxuICAgICAgY2xpY2tCdXR0b24ocGFnZSwgYnV0dG9uU2VsZWN0b3IpLFxuICAgIF0pO1xuICAgIGRlYnVnKCdjaGVjayBpZiBtb250aCBoYXMgbm8gdHJhbnNhY3Rpb25zJyk7XG4gICAgY29uc3QgcGFnZUhhc05vVHJhbnNhY3Rpb25zID0gYXdhaXQgcGFnZUV2YWwocGFnZSwgbm9EYXRhU2VsZWN0b3IsIGZhbHNlLCAoKGVsZW1lbnQpID0+IHtcbiAgICAgIGNvbnN0IHNpdGVWYWx1ZSA9ICgoZWxlbWVudCBhcyBIVE1MU3BhbkVsZW1lbnQpLmlubmVyVGV4dCB8fCAnJykucmVwbGFjZSgvW14g15At16pdL2csICcnKTtcbiAgICAgIHJldHVybiBzaXRlVmFsdWUgPT09ICfXnNeQINeg157XpteQ15Ug16DXqteV16DXmdedJztcbiAgICB9KSk7XG5cbiAgICBpZiAocGFnZUhhc05vVHJhbnNhY3Rpb25zKSB7XG4gICAgICBkZWJ1ZygncGFnZSBoYXMgbm8gdHJhbnNhY3Rpb25zJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRlYnVnKCdmaW5kIHRoZSBiaWxsaW5nIGRhdGUnKTtcbiAgICAgIGNvbnN0IGJpbGxpbmdEYXRlTGFiZWwgPSBhd2FpdCBwYWdlRXZhbChwYWdlLCBiaWxsaW5nTGFiZWxTZWxlY3RvciwgJycsICgoZWxlbWVudCkgPT4ge1xuICAgICAgICByZXR1cm4gKGVsZW1lbnQgYXMgSFRNTFNwYW5FbGVtZW50KS5pbm5lclRleHQ7XG4gICAgICB9KSk7XG5cbiAgICAgIGNvbnN0IGJpbGxpbmdEYXRlID0gL1xcZHsxLDJ9Wy9dXFxkezJ9Wy9dXFxkezIsNH0vLmV4ZWMoYmlsbGluZ0RhdGVMYWJlbCk/LlswXTtcblxuICAgICAgaWYgKCFiaWxsaW5nRGF0ZSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ZhaWxlZCB0byBmZXRjaCBwcm9jZXNzIGRhdGUnKTtcbiAgICAgIH1cblxuICAgICAgZGVidWcoYGZvdW5kIHRoZSBiaWxsaW5nIGRhdGUgZm9yIHRoYXQgbW9udGggJHtiaWxsaW5nRGF0ZX1gKTtcbiAgICAgIGxldCBoYXNOZXh0UGFnZSA9IGZhbHNlO1xuICAgICAgZG8ge1xuICAgICAgICBkZWJ1ZygnZmV0Y2ggcmF3IHRyYW5zYWN0aW9ucyBmcm9tIHBhZ2UnKTtcbiAgICAgICAgY29uc3QgcmF3VHJhbnNhY3Rpb25zID0gYXdhaXQgcGFnZUV2YWxBbGw8KFNjcmFwZWRUcmFuc2FjdGlvbiB8IG51bGwpW10+KHBhZ2UsICcjY3RsTWFpbkdyaWQgPiB0Ym9keSB0ciwgI2N0bFNlY29uZGFyeUdyaWQgPiB0Ym9keSB0cicsIFtdLCAoaXRlbXMsIGJpbGxpbmdEYXRlKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIChpdGVtcykubWFwKChlbCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY29sdW1ucyA9IGVsLmdldEVsZW1lbnRzQnlUYWdOYW1lKCd0ZCcpO1xuICAgICAgICAgICAgaWYgKGNvbHVtbnMubGVuZ3RoID09PSA2KSB7XG4gICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgcHJvY2Vzc2VkRGF0ZTogY29sdW1uc1swXS5pbm5lclRleHQsXG4gICAgICAgICAgICAgICAgZGF0ZTogY29sdW1uc1sxXS5pbm5lclRleHQsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGNvbHVtbnNbMl0uaW5uZXJUZXh0LFxuICAgICAgICAgICAgICAgIG9yaWdpbmFsQW1vdW50OiBjb2x1bW5zWzNdLmlubmVyVGV4dCxcbiAgICAgICAgICAgICAgICBjaGFyZ2VkQW1vdW50OiBjb2x1bW5zWzRdLmlubmVyVGV4dCxcbiAgICAgICAgICAgICAgICBtZW1vOiBjb2x1bW5zWzVdLmlubmVyVGV4dCxcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjb2x1bW5zLmxlbmd0aCA9PT0gNSkge1xuICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHByb2Nlc3NlZERhdGU6IGJpbGxpbmdEYXRlLFxuICAgICAgICAgICAgICAgIGRhdGU6IGNvbHVtbnNbMF0uaW5uZXJUZXh0LFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBjb2x1bW5zWzFdLmlubmVyVGV4dCxcbiAgICAgICAgICAgICAgICBvcmlnaW5hbEFtb3VudDogY29sdW1uc1syXS5pbm5lclRleHQsXG4gICAgICAgICAgICAgICAgY2hhcmdlZEFtb3VudDogY29sdW1uc1szXS5pbm5lclRleHQsXG4gICAgICAgICAgICAgICAgbWVtbzogY29sdW1uc1s0XS5pbm5lclRleHQsXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSwgYmlsbGluZ0RhdGUpO1xuICAgICAgICBkZWJ1ZyhgZmV0Y2hlZCAke3Jhd1RyYW5zYWN0aW9ucy5sZW5ndGh9IHJhdyB0cmFuc2FjdGlvbnMgZnJvbSBwYWdlYCk7XG4gICAgICAgIGFjY291bnRUcmFuc2FjdGlvbnMucHVzaCguLi5jb252ZXJ0VHJhbnNhY3Rpb25zKChyYXdUcmFuc2FjdGlvbnMgYXMgU2NyYXBlZFRyYW5zYWN0aW9uW10pXG4gICAgICAgICAgLmZpbHRlcigoaXRlbSkgPT4gISFpdGVtKSkpO1xuXG4gICAgICAgIGRlYnVnKCdjaGVjayBmb3IgZXhpc3RhbmNlIG9mIGFub3RoZXIgcGFnZScpO1xuICAgICAgICBoYXNOZXh0UGFnZSA9IGF3YWl0IGVsZW1lbnRQcmVzZW50T25QYWdlKHBhZ2UsIG5leHRQYWdlU2VsZWN0b3IpO1xuICAgICAgICBpZiAoaGFzTmV4dFBhZ2UpIHtcbiAgICAgICAgICBkZWJ1ZygnaGFzIGFub3RoZXIgcGFnZSwgY2xpY2sgb24gYnV0dG9uIG5leHQgYW5kIHdhaXQgZm9yIHBhZ2UgbmF2aWdhdGlvbicpO1xuICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICAgICAgICAgIHBhZ2Uud2FpdEZvck5hdmlnYXRpb24oeyB3YWl0VW50aWw6ICdkb21jb250ZW50bG9hZGVkJyB9KSxcbiAgICAgICAgICAgIGF3YWl0IGNsaWNrQnV0dG9uKHBhZ2UsICdbaWQkPUZvcm1BcmVhTm9Cb3JkZXJfRm9ybUFyZWFfY3RsR3JpZFBhZ2VyX2J0bk5leHRdJyksXG4gICAgICAgICAgXSk7XG4gICAgICAgIH1cbiAgICAgIH0gd2hpbGUgKGhhc05leHRQYWdlKTtcbiAgICB9XG4gIH1cblxuICBkZWJ1ZygnZmlsZXIgb3V0IG9sZCB0cmFuc2FjdGlvbnMnKTtcbiAgY29uc3QgdHhucyA9IGZpbHRlck9sZFRyYW5zYWN0aW9ucyhhY2NvdW50VHJhbnNhY3Rpb25zLCBzdGFydERhdGUsIHNjcmFwZXJPcHRpb25zLmNvbWJpbmVJbnN0YWxsbWVudHMgfHwgZmFsc2UpO1xuICBkZWJ1ZyhgZm91bmQgJHt0eG5zLmxlbmd0aH0gdmFsaWQgdHJhbnNhY3Rpb25zIG91dCBvZiAke2FjY291bnRUcmFuc2FjdGlvbnMubGVuZ3RofSB0cmFuc2FjdGlvbnMgZm9yIGFjY291bnQgZW5kaW5nIHdpdGggJHthY2NvdW50TnVtYmVyLnN1YnN0cmluZyhhY2NvdW50TnVtYmVyLmxlbmd0aCAtIDIpfWApO1xuICByZXR1cm4ge1xuICAgIGFjY291bnROdW1iZXIsXG4gICAgdHhucyxcbiAgfTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0QWNjb3VudE51bWJlcnMocGFnZTogUGFnZSk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgcmV0dXJuIHBhZ2VFdmFsQWxsKHBhZ2UsICdbaWQkPWxua0l0ZW1dJywgW10sIChlbGVtZW50cykgPT4gZWxlbWVudHMubWFwKChlKSA9PiAoZSBhcyBIVE1MQW5jaG9yRWxlbWVudCkudGV4dCkpLnRoZW4oKHJlcykgPT4gcmVzLm1hcCgodGV4dCkgPT4gL1xcZCskLy5leGVjKHRleHQudHJpbSgpKT8uWzBdID8/ICcnKSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHNldEFjY291bnQocGFnZTogUGFnZSwgYWNjb3VudDogc3RyaW5nKSB7XG4gIGF3YWl0IHBhZ2VFdmFsQWxsKFxuICAgIHBhZ2UsXG4gICAgJ1tpZCQ9bG5rSXRlbV0nLFxuICAgIG51bGwsXG4gICAgKGVsZW1lbnRzLCBhY2NvdW50KSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IGVsZW0gb2YgZWxlbWVudHMpIHtcbiAgICAgICAgY29uc3QgYSA9IGVsZW0gYXMgSFRNTEFuY2hvckVsZW1lbnQ7XG4gICAgICAgIGlmIChhLnRleHQuaW5jbHVkZXMoYWNjb3VudCkpIHtcbiAgICAgICAgICBhLmNsaWNrKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIGFjY291bnQsXG4gICk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGZldGNoVHJhbnNhY3Rpb25zKHBhZ2U6IFBhZ2UsIHN0YXJ0RGF0ZTogTW9tZW50LCBzY3JhcGVyT3B0aW9uczogU2NhcGVyT3B0aW9ucyk6IFByb21pc2U8VHJhbnNhY3Rpb25zQWNjb3VudFtdPiB7XG4gIGNvbnN0IGFjY291bnROdW1iZXJzOiBzdHJpbmdbXSA9IGF3YWl0IGdldEFjY291bnROdW1iZXJzKHBhZ2UpO1xuICBjb25zdCBhY2NvdW50czogVHJhbnNhY3Rpb25zQWNjb3VudFtdID0gW107XG5cbiAgZm9yIChjb25zdCBhY2NvdW50IG9mIGFjY291bnROdW1iZXJzKSB7XG4gICAgZGVidWcoYHNldHRpbmcgYWNjb3VudDogJHthY2NvdW50fWApO1xuICAgIGF3YWl0IHNldEFjY291bnQocGFnZSwgYWNjb3VudCk7XG4gICAgYXdhaXQgcGFnZS53YWl0Rm9yKDEwMDApO1xuICAgIGFjY291bnRzLnB1c2goXG4gICAgICBhd2FpdCBmZXRjaFRyYW5zYWN0aW9uc0ZvckFjY291bnQoXG4gICAgICAgIHBhZ2UsXG4gICAgICAgIHN0YXJ0RGF0ZSxcbiAgICAgICAgYWNjb3VudCxcbiAgICAgICAgc2NyYXBlck9wdGlvbnMsXG4gICAgICApLFxuICAgICk7XG4gIH1cblxuICByZXR1cm4gYWNjb3VudHM7XG59XG5cblxuY2xhc3MgVmlzYUNhbFNjcmFwZXIgZXh0ZW5kcyBCYXNlU2NyYXBlcldpdGhCcm93c2VyIHtcbiAgb3BlbkxvZ2luUG9wdXAgPSBhc3luYyAoKSA9PiB7XG4gICAgZGVidWcoJ29wZW4gbG9naW4gcG9wdXAsIHdhaXQgdW50aWwgbG9naW4gYnV0dG9uIGF2YWlsYWJsZScpO1xuICAgIGF3YWl0IHdhaXRVbnRpbEVsZW1lbnRGb3VuZCh0aGlzLnBhZ2UsICcjY2NMb2dpbkRlc2t0b3BCdG4nLCB0cnVlKTtcbiAgICBkZWJ1ZygnY2xpY2sgb24gdGhlIGxvZ2luIGJ1dHRvbicpO1xuICAgIGF3YWl0IGNsaWNrQnV0dG9uKHRoaXMucGFnZSwgJyNjY0xvZ2luRGVza3RvcEJ0bicpO1xuICAgIGRlYnVnKCdnZXQgdGhlIGZyYW1lIHRoYXQgaG9sZHMgdGhlIGxvZ2luJyk7XG4gICAgY29uc3QgZnJhbWUgPSBhd2FpdCBnZXRMb2dpbkZyYW1lKHRoaXMucGFnZSk7XG4gICAgZGVidWcoJ3dhaXQgdW50aWwgdGhlIHBhc3N3b3JkIGxvZ2luIHRhYiBoZWFkZXIgaXMgYXZhaWxhYmxlJyk7XG4gICAgYXdhaXQgd2FpdFVudGlsRWxlbWVudEZvdW5kKGZyYW1lLCAnI3JlZ3VsYXItbG9naW4nKTtcbiAgICBkZWJ1ZygnbmF2aWdhdGUgdG8gdGhlIHBhc3N3b3JkIGxvZ2luIHRhYicpO1xuICAgIGF3YWl0IGNsaWNrQnV0dG9uKGZyYW1lLCAnI3JlZ3VsYXItbG9naW4nKTtcbiAgICBkZWJ1Zygnd2FpdCB1bnRpbCB0aGUgcGFzc3dvcmQgbG9naW4gdGFiIGlzIGFjdGl2ZScpO1xuICAgIGF3YWl0IHdhaXRVbnRpbEVsZW1lbnRGb3VuZChmcmFtZSwgJ3JlZ3VsYXItbG9naW4nKTtcblxuICAgIHJldHVybiBmcmFtZTtcbiAgfTtcblxuICBnZXRMb2dpbk9wdGlvbnMoY3JlZGVudGlhbHM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4pIHtcbiAgICByZXR1cm4ge1xuICAgICAgbG9naW5Vcmw6IGAke0xPR0lOX1VSTH1gLFxuICAgICAgZmllbGRzOiBjcmVhdGVMb2dpbkZpZWxkcyhjcmVkZW50aWFscyksXG4gICAgICBzdWJtaXRCdXR0b25TZWxlY3RvcjogJ2J1dHRvblt0eXBlPVwic3VibWl0XCJdJyxcbiAgICAgIHBvc3NpYmxlUmVzdWx0czogZ2V0UG9zc2libGVMb2dpblJlc3VsdHMoKSxcbiAgICAgIGNoZWNrUmVhZGluZXNzOiBhc3luYyAoKSA9PiB3YWl0VW50aWxFbGVtZW50Rm91bmQodGhpcy5wYWdlLCAnI2NjTG9naW5EZXNrdG9wQnRuJyksXG4gICAgICBwcmVBY3Rpb246IHRoaXMub3BlbkxvZ2luUG9wdXAsXG4gICAgICB1c2VyQWdlbnQ6ICdNb3ppbGxhLzUuMCAoWDExOyBMaW51eCB4ODZfNjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS83OC4wLjM5MDQuMTA4IFNhZmFyaS81MzcuMzYnLFxuICAgIH07XG4gIH1cblxuICBhc3luYyBmZXRjaERhdGEoKTogUHJvbWlzZTxTY2FwZXJTY3JhcGluZ1Jlc3VsdD4ge1xuICAgIGNvbnN0IGRlZmF1bHRTdGFydE1vbWVudCA9IG1vbWVudCgpLnN1YnRyYWN0KDEsICd5ZWFycycpLmFkZCgxLCAnZGF5Jyk7XG4gICAgY29uc3Qgc3RhcnREYXRlID0gdGhpcy5vcHRpb25zLnN0YXJ0RGF0ZSB8fCBkZWZhdWx0U3RhcnRNb21lbnQudG9EYXRlKCk7XG4gICAgY29uc3Qgc3RhcnRNb21lbnQgPSBtb21lbnQubWF4KGRlZmF1bHRTdGFydE1vbWVudCwgbW9tZW50KHN0YXJ0RGF0ZSkpO1xuICAgIGRlYnVnKGBmZXRjaCB0cmFuc2FjdGlvbnMgc3RhcnRpbmcgJHtzdGFydE1vbWVudC5mb3JtYXQoKX1gKTtcblxuICAgIGRlYnVnKCduYXZpZ2F0ZSB0byB0cmFuc2FjdGlvbnMgcGFnZScpO1xuICAgIGF3YWl0IHRoaXMubmF2aWdhdGVUbyhUUkFOU0FDVElPTlNfVVJMLCB1bmRlZmluZWQsIDYwMDAwKTtcblxuICAgIGRlYnVnKCdmZXRjaCBhY2NvdW50cyB0cmFuc2FjdGlvbnMnKTtcbiAgICBjb25zdCBhY2NvdW50cyA9IGF3YWl0IGZldGNoVHJhbnNhY3Rpb25zKHRoaXMucGFnZSwgc3RhcnRNb21lbnQsIHRoaXMub3B0aW9ucyk7XG4gICAgZGVidWcoJ3JldHVybiB0aGUgc2NyYXBlZCBhY2NvdW50cycpO1xuICAgIHJldHVybiB7XG4gICAgICBzdWNjZXNzOiB0cnVlLFxuICAgICAgYWNjb3VudHMsXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBWaXNhQ2FsU2NyYXBlcjtcbiJdfQ==
|
|
379
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JhcGVycy92aXNhLWNhbC50cyJdLCJuYW1lcyI6WyJMT0dJTl9VUkwiLCJUUkFOU0FDVElPTlNfVVJMIiwiTE9OR19EQVRFX0ZPUk1BVCIsIkRBVEVfRk9STUFUIiwiSW52YWxpZFBhc3N3b3JkTWVzc2FnZSIsImRlYnVnIiwiZ2V0TG9naW5GcmFtZSIsInBhZ2UiLCJmcmFtZSIsImZyYW1lcyIsImZpbmQiLCJmIiwidXJsIiwiaW5jbHVkZXMiLCJQcm9taXNlIiwicmVzb2x2ZSIsIkVycm9yIiwiaGFzSW52YWxpZFBhc3N3b3JkRXJyb3IiLCJlcnJvckZvdW5kIiwiZXJyb3JNZXNzYWdlIiwiaXRlbSIsImlubmVyVGV4dCIsImdldFBvc3NpYmxlTG9naW5SZXN1bHRzIiwidXJscyIsIkxvZ2luUmVzdWx0cyIsIlN1Y2Nlc3MiLCJJbnZhbGlkUGFzc3dvcmQiLCJvcHRpb25zIiwiY3JlYXRlTG9naW5GaWVsZHMiLCJjcmVkZW50aWFscyIsInNlbGVjdG9yIiwidmFsdWUiLCJ1c2VybmFtZSIsInBhc3N3b3JkIiwiZ2V0QW1vdW50RGF0YSIsImFtb3VudFN0ciIsImFtb3VudFN0ckNsbiIsInJlcGxhY2UiLCJjdXJyZW5jeSIsImFtb3VudCIsIlNIRUtFTF9DVVJSRU5DWV9TWU1CT0wiLCJwYXJzZUZsb2F0IiwiU0hFS0VMX0NVUlJFTkNZIiwiRE9MTEFSX0NVUlJFTkNZX1NZTUJPTCIsIkRPTExBUl9DVVJSRU5DWSIsIkVVUk9fQ1VSUkVOQ1lfU1lNQk9MIiwiRVVST19DVVJSRU5DWSIsInBhcnRzIiwic3BsaXQiLCJnZXRUcmFuc2FjdGlvbkluc3RhbGxtZW50cyIsIm1lbW8iLCJwYXJzZWRNZW1vIiwiZXhlYyIsImxlbmd0aCIsIm51bWJlciIsInBhcnNlSW50IiwidG90YWwiLCJjb252ZXJ0VHJhbnNhY3Rpb25zIiwidHhucyIsIm1hcCIsInR4biIsIm9yaWdpbmFsQW1vdW50VHVwbGUiLCJvcmlnaW5hbEFtb3VudCIsImNoYXJnZWRBbW91bnRUdXBsZSIsImNoYXJnZWRBbW91bnQiLCJpbnN0YWxsbWVudHMiLCJ0eG5EYXRlIiwiZGF0ZSIsInByb2Nlc3NlZERhdGVGb3JtYXQiLCJwcm9jZXNzZWREYXRlIiwidHhuUHJvY2Vzc2VkRGF0ZSIsInJlc3VsdCIsInR5cGUiLCJUcmFuc2FjdGlvblR5cGVzIiwiSW5zdGFsbG1lbnRzIiwiTm9ybWFsIiwic3RhdHVzIiwiVHJhbnNhY3Rpb25TdGF0dXNlcyIsIkNvbXBsZXRlZCIsImFkZCIsInRvSVNPU3RyaW5nIiwib3JpZ2luYWxDdXJyZW5jeSIsImNoYXJnZWRDdXJyZW5jeSIsImRlc2NyaXB0aW9uIiwiZmV0Y2hUcmFuc2FjdGlvbnNGb3JBY2NvdW50Iiwic3RhcnREYXRlIiwiYWNjb3VudE51bWJlciIsInNjcmFwZXJPcHRpb25zIiwic3RhcnREYXRlVmFsdWUiLCJmb3JtYXQiLCJkYXRlU2VsZWN0b3IiLCJkYXRlSGlkZGVuRmllbGRTZWxlY3RvciIsImJ1dHRvblNlbGVjdG9yIiwibmV4dFBhZ2VTZWxlY3RvciIsImJpbGxpbmdMYWJlbFNlbGVjdG9yIiwic2Vjb25kYXJ5QmlsbGluZ0xhYmVsU2VsZWN0b3IiLCJub0RhdGFTZWxlY3RvciIsIml0ZW1zIiwiZWwiLCJzdGFydERhdGVJbmRleCIsImZpbmRJbmRleCIsIm9wdGlvbiIsImFjY291bnRUcmFuc2FjdGlvbnMiLCJjdXJyZW50RGF0ZUluZGV4Iiwid2FpdEZvciIsImFsbCIsIndhaXRGb3JOYXZpZ2F0aW9uIiwid2FpdFVudGlsIiwicGFnZUhhc05vVHJhbnNhY3Rpb25zIiwiZWxlbWVudCIsInNpdGVWYWx1ZSIsImJpbGxpbmdEYXRlTGFiZWwiLCJzZXR0bGVtZW50RGF0ZVJlZ2V4IiwiYmlsbGluZ0RhdGUiLCJoYXNOZXh0UGFnZSIsInJhd1RyYW5zYWN0aW9ucyIsImNvbHVtbnMiLCJnZXRFbGVtZW50c0J5VGFnTmFtZSIsInB1c2giLCJmaWx0ZXIiLCJjb21iaW5lSW5zdGFsbG1lbnRzIiwic3Vic3RyaW5nIiwiZ2V0QWNjb3VudE51bWJlcnMiLCJlbGVtZW50cyIsImUiLCJ0ZXh0IiwidGhlbiIsInJlcyIsInRyaW0iLCJzZXRBY2NvdW50IiwiYWNjb3VudCIsImVsZW0iLCJhIiwiY2xpY2siLCJmZXRjaFRyYW5zYWN0aW9ucyIsImFjY291bnROdW1iZXJzIiwiYWNjb3VudHMiLCJWaXNhQ2FsU2NyYXBlciIsIkJhc2VTY3JhcGVyV2l0aEJyb3dzZXIiLCJnZXRMb2dpbk9wdGlvbnMiLCJsb2dpblVybCIsImZpZWxkcyIsInN1Ym1pdEJ1dHRvblNlbGVjdG9yIiwicG9zc2libGVSZXN1bHRzIiwiY2hlY2tSZWFkaW5lc3MiLCJwcmVBY3Rpb24iLCJvcGVuTG9naW5Qb3B1cCIsInVzZXJBZ2VudCIsImZldGNoRGF0YSIsImRlZmF1bHRTdGFydE1vbWVudCIsInN1YnRyYWN0IiwidG9EYXRlIiwic3RhcnRNb21lbnQiLCJtb21lbnQiLCJtYXgiLCJuYXZpZ2F0ZVRvIiwidW5kZWZpbmVkIiwic3VjY2VzcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFFQTs7QUFDQTs7QUFHQTs7QUFRQTs7QUFHQTs7QUFDQTs7QUFDQTs7Ozs7O0FBRUEsTUFBTUEsU0FBUyxHQUFHLCtCQUFsQjtBQUNBLE1BQU1DLGdCQUFnQixHQUFHLHVGQUF6QjtBQUNBLE1BQU1DLGdCQUFnQixHQUFHLFlBQXpCO0FBQ0EsTUFBTUMsV0FBVyxHQUFHLFVBQXBCO0FBQ0EsTUFBTUMsc0JBQXNCLEdBQUcsbUNBQS9CO0FBRUEsTUFBTUMsS0FBSyxHQUFHLHFCQUFTLFVBQVQsQ0FBZDs7QUFXQSxlQUFlQyxhQUFmLENBQTZCQyxJQUE3QixFQUF5QztBQUN2QyxNQUFJQyxLQUFtQixHQUFHLElBQTFCO0FBQ0FILEVBQUFBLEtBQUssQ0FBQyw4QkFBRCxDQUFMO0FBQ0EsUUFBTSx3QkFBVSxNQUFNO0FBQ3BCRyxJQUFBQSxLQUFLLEdBQUdELElBQUksQ0FDVEUsTUFESyxHQUVMQyxJQUZLLENBRUNDLENBQUQsSUFBT0EsQ0FB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QUFnQjFKLGdCQUFoQixFQUFrQzJKLFNBQWxDLEVBQTZDLEtBQTdDLENBQU47QUFFQXZKLElBQUFBLEtBQUssQ0FBQyw2QkFBRCxDQUFMO0FBQ0EsVUFBTW1JLFFBQVEsR0FBRyxNQUFNRixpQkFBaUIsQ0FBQyxLQUFLL0gsSUFBTixFQUFZaUosV0FBWixFQUF5QixLQUFLN0gsT0FBOUIsQ0FBeEM7QUFDQXRCLElBQUFBLEtBQUssQ0FBQyw2QkFBRCxDQUFMO0FBQ0EsV0FBTztBQUNMd0osTUFBQUEsT0FBTyxFQUFFLElBREo7QUFFTHJCLE1BQUFBO0FBRkssS0FBUDtBQUlEOztBQTlDaUQ7O2VBaURyQ0MsYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb21lbnQsIHsgTW9tZW50IH0gZnJvbSAnbW9tZW50JztcbmltcG9ydCB7IEZyYW1lLCBQYWdlIH0gZnJvbSAncHVwcGV0ZWVyJztcbmltcG9ydCB7IEJhc2VTY3JhcGVyV2l0aEJyb3dzZXIsIExvZ2luT3B0aW9ucywgTG9naW5SZXN1bHRzIH0gZnJvbSAnLi9iYXNlLXNjcmFwZXItd2l0aC1icm93c2VyJztcbmltcG9ydCB7XG4gIGNsaWNrQnV0dG9uLCBlbGVtZW50UHJlc2VudE9uUGFnZSwgcGFnZUV2YWwsIHBhZ2VFdmFsQWxsLCBzZXRWYWx1ZSwgd2FpdFVudGlsRWxlbWVudEZvdW5kLFxufSBmcm9tICcuLi9oZWxwZXJzL2VsZW1lbnRzLWludGVyYWN0aW9ucyc7XG5pbXBvcnQge1xuICBUcmFuc2FjdGlvbixcbiAgVHJhbnNhY3Rpb25JbnN0YWxsbWVudHMsXG4gIFRyYW5zYWN0aW9uc0FjY291bnQsXG4gIFRyYW5zYWN0aW9uU3RhdHVzZXMsXG4gIFRyYW5zYWN0aW9uVHlwZXMsXG59IGZyb20gJy4uL3RyYW5zYWN0aW9ucyc7XG5pbXBvcnQgeyBTY2FwZXJPcHRpb25zLCBTY2FwZXJTY3JhcGluZ1Jlc3VsdCwgU2NyYXBlckNyZWRlbnRpYWxzIH0gZnJvbSAnLi9iYXNlLXNjcmFwZXInO1xuaW1wb3J0IHtcbiAgRE9MTEFSX0NVUlJFTkNZLCBET0xMQVJfQ1VSUkVOQ1lfU1lNQk9MLCBFVVJPX0NVUlJFTkNZLCBFVVJPX0NVUlJFTkNZX1NZTUJPTCwgU0hFS0VMX0NVUlJFTkNZLCBTSEVLRUxfQ1VSUkVOQ1lfU1lNQk9MLFxufSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgd2FpdFVudGlsIH0gZnJvbSAnLi4vaGVscGVycy93YWl0aW5nJztcbmltcG9ydCB7IGZpbHRlck9sZFRyYW5zYWN0aW9ucyB9IGZyb20gJy4uL2hlbHBlcnMvdHJhbnNhY3Rpb25zJztcbmltcG9ydCB7IGdldERlYnVnIH0gZnJvbSAnLi4vaGVscGVycy9kZWJ1Zyc7XG5cbmNvbnN0IExPR0lOX1VSTCA9ICdodHRwczovL3d3dy5jYWwtb25saW5lLmNvLmlsLyc7XG5jb25zdCBUUkFOU0FDVElPTlNfVVJMID0gJ2h0dHBzOi8vc2VydmljZXMuY2FsLW9ubGluZS5jby5pbC9DYXJkLUhvbGRlcnMvU2NyZWVucy9UcmFuc2FjdGlvbnMvVHJhbnNhY3Rpb25zLmFzcHgnO1xuY29uc3QgTE9OR19EQVRFX0ZPUk1BVCA9ICdERC9NTS9ZWVlZJztcbmNvbnN0IERBVEVfRk9STUFUID0gJ0REL01NL1lZJztcbmNvbnN0IEludmFsaWRQYXNzd29yZE1lc3NhZ2UgPSAn16nXnSDXlNee16nXqtee16kg15DXlSDXlNeh15nXodee15Qg16nXlNeV15bXoNeVINep15LXldeZ15nXnSc7XG5cbmNvbnN0IGRlYnVnID0gZ2V0RGVidWcoJ3Zpc2EtY2FsJyk7XG5cbmludGVyZmFjZSBTY3JhcGVkVHJhbnNhY3Rpb24ge1xuICBkYXRlOiBzdHJpbmc7XG4gIHByb2Nlc3NlZERhdGU6IHN0cmluZztcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgb3JpZ2luYWxBbW91bnQ6IHN0cmluZztcbiAgY2hhcmdlZEFtb3VudDogc3RyaW5nO1xuICBtZW1vOiBzdHJpbmc7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldExvZ2luRnJhbWUocGFnZTogUGFnZSkge1xuICBsZXQgZnJhbWU6IEZyYW1lIHwgbnVsbCA9IG51bGw7XG4gIGRlYnVnKCd3YWl0IHVudGlsIGxvZ2luIGZyYW1lIGZvdW5kJyk7XG4gIGF3YWl0IHdhaXRVbnRpbCgoKSA9PiB7XG4gICAgZnJhbWUgPSBwYWdlXG4gICAgICAuZnJhbWVzKClcbiAgICAgIC5maW5kKChmKSA9PiBmLnVybCgpLmluY2x1ZGVzKCdjb25uZWN0LmNhbC1vbmxpbmUnKSkgfHwgbnVsbDtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCEhZnJhbWUpO1xuICB9LCAnd2FpdCBmb3IgaWZyYW1lIHdpdGggbG9naW4gZm9ybScsIDEwMDAwLCAxMDAwKTtcblxuICBpZiAoIWZyYW1lKSB7XG4gICAgZGVidWcoJ2ZhaWxlZCB0byBmaW5kIGxvZ2luIGZyYW1lIGZvciAxMCBzZWNvbmRzJyk7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdmYWlsZWQgdG8gZXh0cmFjdCBsb2dpbiBpZnJhbWUnKTtcbiAgfVxuXG4gIHJldHVybiBmcmFtZTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gaGFzSW52YWxpZFBhc3N3b3JkRXJyb3IocGFnZTogUGFnZSkge1xuICBjb25zdCBmcmFtZSA9IGF3YWl0IGdldExvZ2luRnJhbWUocGFnZSk7XG4gIGNvbnN0IGVycm9yRm91bmQgPSBhd2FpdCBlbGVtZW50UHJlc2VudE9uUGFnZShmcmFtZSwgJ2Rpdi5nZW5lcmFsLWVycm9yID4gZGl2Jyk7XG4gIGNvbnN0IGVycm9yTWVzc2FnZSA9IGVycm9yRm91bmQgPyBhd2FpdCBwYWdlRXZhbChmcmFtZSwgJ2Rpdi5nZW5lcmFsLWVycm9yID4gZGl2JywgJycsIChpdGVtKSA9PiB7XG4gICAgcmV0dXJuIChpdGVtIGFzIEhUTUxEaXZFbGVtZW50KS5pbm5lclRleHQ7XG4gIH0pIDogJyc7XG4gIHJldHVybiBlcnJvck1lc3NhZ2UgPT09IEludmFsaWRQYXNzd29yZE1lc3NhZ2U7XG59XG5cbmZ1bmN0aW9uIGdldFBvc3NpYmxlTG9naW5SZXN1bHRzKCkge1xuICBkZWJ1ZygncmV0dXJuIHBvc3NpYmxlIGxvZ2luIHJlc3VsdHMnKTtcbiAgY29uc3QgdXJsczogTG9naW5PcHRpb25zWydwb3NzaWJsZVJlc3VsdHMnXSA9IHtcbiAgICBbTG9naW5SZXN1bHRzLlN1Y2Nlc3NdOiBbL0FjY291bnRNYW5hZ2VtZW50L2ldLFxuICAgIFtMb2dpblJlc3VsdHMuSW52YWxpZFBhc3N3b3JkXTogW2FzeW5jIChvcHRpb25zPzogeyBwYWdlPzogUGFnZX0pID0+IHtcbiAgICAgIGNvbnN0IHBhZ2UgPSBvcHRpb25zPy5wYWdlO1xuICAgICAgaWYgKCFwYWdlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBoYXNJbnZhbGlkUGFzc3dvcmRFcnJvcihwYWdlKTtcbiAgICB9XSxcbiAgICAvLyBbTG9naW5SZXN1bHRzLkFjY291bnRCbG9ja2VkXTogW10sIC8vIFRPRE8gYWRkIHdoZW4gcmVhY2hpbmcgdGhpcyBzY2VuYXJpb1xuICAgIC8vIFtMb2dpblJlc3VsdHMuQ2hhbmdlUGFzc3dvcmRdOiBbXSwgLy8gVE9ETyBhZGQgd2hlbiByZWFjaGluZyB0aGlzIHNjZW5hcmlvXG4gIH07XG4gIHJldHVybiB1cmxzO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVMb2dpbkZpZWxkcyhjcmVkZW50aWFsczogU2NyYXBlckNyZWRlbnRpYWxzKSB7XG4gIGRlYnVnKCdjcmVhdGUgbG9naW4gZmllbGRzIGZvciB1c2VybmFtZSBhbmQgcGFzc3dvcmQnKTtcbiAgcmV0dXJuIFtcbiAgICB7IHNlbGVjdG9yOiAnW2Zvcm1jb250cm9sbmFtZT1cInVzZXJOYW1lXCJdJywgdmFsdWU6IGNyZWRlbnRpYWxzLnVzZXJuYW1lIH0sXG4gICAgeyBzZWxlY3RvcjogJ1tmb3JtY29udHJvbG5hbWU9XCJwYXNzd29yZFwiXScsIHZhbHVlOiBjcmVkZW50aWFscy5wYXNzd29yZCB9LFxuICBdO1xufVxuXG5cbmZ1bmN0aW9uIGdldEFtb3VudERhdGEoYW1vdW50U3RyOiBzdHJpbmcpIHtcbiAgY29uc3QgYW1vdW50U3RyQ2xuID0gYW1vdW50U3RyLnJlcGxhY2UoJywnLCAnJyk7XG4gIGxldCBjdXJyZW5jeTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIGxldCBhbW91bnQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICBpZiAoYW1vdW50U3RyQ2xuLmluY2x1ZGVzKFNIRUtFTF9DVVJSRU5DWV9TWU1CT0wpKSB7XG4gICAgYW1vdW50ID0gLXBhcnNlRmxvYXQoYW1vdW50U3RyQ2xuLnJlcGxhY2UoU0hFS0VMX0NVUlJFTkNZX1NZTUJPTCwgJycpKTtcbiAgICBjdXJyZW5jeSA9IFNIRUtFTF9DVVJSRU5DWTtcbiAgfSBlbHNlIGlmIChhbW91bnRTdHJDbG4uaW5jbHVkZXMoRE9MTEFSX0NVUlJFTkNZX1NZTUJPTCkpIHtcbiAgICBhbW91bnQgPSAtcGFyc2VGbG9hdChhbW91bnRTdHJDbG4ucmVwbGFjZShET0xMQVJfQ1VSUkVOQ1lfU1lNQk9MLCAnJykpO1xuICAgIGN1cnJlbmN5ID0gRE9MTEFSX0NVUlJFTkNZO1xuICB9IGVsc2UgaWYgKGFtb3VudFN0ckNsbi5pbmNsdWRlcyhFVVJPX0NVUlJFTkNZX1NZTUJPTCkpIHtcbiAgICBhbW91bnQgPSAtcGFyc2VGbG9hdChhbW91bnRTdHJDbG4ucmVwbGFjZShFVVJPX0NVUlJFTkNZX1NZTUJPTCwgJycpKTtcbiAgICBjdXJyZW5jeSA9IEVVUk9fQ1VSUkVOQ1k7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgcGFydHMgPSBhbW91bnRTdHJDbG4uc3BsaXQoJyAnKTtcbiAgICBbY3VycmVuY3ldID0gcGFydHM7XG4gICAgYW1vdW50ID0gLXBhcnNlRmxvYXQocGFydHNbMV0pO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBhbW91bnQsXG4gICAgY3VycmVuY3ksXG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldFRyYW5zYWN0aW9uSW5zdGFsbG1lbnRzKG1lbW86IHN0cmluZyk6IFRyYW5zYWN0aW9uSW5zdGFsbG1lbnRzIHwgbnVsbCB7XG4gIGNvbnN0IHBhcnNlZE1lbW8gPSAoL9eq16nXnNeV150gKFxcZCspINee16rXldeaIChcXGQrKS8pLmV4ZWMobWVtbyB8fCAnJyk7XG5cbiAgaWYgKCFwYXJzZWRNZW1vIHx8IHBhcnNlZE1lbW8ubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIG51bWJlcjogcGFyc2VJbnQocGFyc2VkTWVtb1sxXSwgMTApLFxuICAgIHRvdGFsOiBwYXJzZUludChwYXJzZWRNZW1vWzJdLCAxMCksXG4gIH07XG59XG5mdW5jdGlvbiBjb252ZXJ0VHJhbnNhY3Rpb25zKHR4bnM6IFNjcmFwZWRUcmFuc2FjdGlvbltdKTogVHJhbnNhY3Rpb25bXSB7XG4gIGRlYnVnKGBjb252ZXJ0ICR7dHhucy5sZW5ndGh9IHJhdyB0cmFuc2FjdGlvbnMgdG8gb2ZmaWNpYWwgVHJhbnNhY3Rpb24gc3RydWN0dXJlYCk7XG4gIHJldHVybiB0eG5zLm1hcCgodHhuKSA9PiB7XG4gICAgY29uc3Qgb3JpZ2luYWxBbW91bnRUdXBsZSA9IGdldEFtb3VudERhdGEodHhuLm9yaWdpbmFsQW1vdW50IHx8ICcnKTtcbiAgICBjb25zdCBjaGFyZ2VkQW1vdW50VHVwbGUgPSBnZXRBbW91bnREYXRhKHR4bi5jaGFyZ2VkQW1vdW50IHx8ICcnKTtcblxuICAgIGNvbnN0IGluc3RhbGxtZW50cyA9IGdldFRyYW5zYWN0aW9uSW5zdGFsbG1lbnRzKHR4bi5tZW1vKTtcbiAgICBjb25zdCB0eG5EYXRlID0gbW9tZW50KHR4bi5kYXRlLCBEQVRFX0ZPUk1BVCk7XG4gICAgY29uc3QgcHJvY2Vzc2VkRGF0ZUZvcm1hdCA9XG4gICAgICB0eG4ucHJvY2Vzc2VkRGF0ZS5sZW5ndGggPT09IDggP1xuICAgICAgICBEQVRFX0ZPUk1BVCA6XG4gICAgICAgIHR4bi5wcm9jZXNzZWREYXRlLmxlbmd0aCA9PT0gOSB8fCB0eG4ucHJvY2Vzc2VkRGF0ZS5sZW5ndGggPT09IDEwID9cbiAgICAgICAgICBMT05HX0RBVEVfRk9STUFUIDpcbiAgICAgICAgICBudWxsO1xuICAgIGlmICghcHJvY2Vzc2VkRGF0ZUZvcm1hdCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIHByb2Nlc3NlZCBkYXRlJyk7XG4gICAgfVxuICAgIGNvbnN0IHR4blByb2Nlc3NlZERhdGUgPSBtb21lbnQodHhuLnByb2Nlc3NlZERhdGUsIHByb2Nlc3NlZERhdGVGb3JtYXQpO1xuXG4gICAgY29uc3QgcmVzdWx0OiBUcmFuc2FjdGlvbiA9IHtcbiAgICAgIHR5cGU6IGluc3RhbGxtZW50cyA/IFRyYW5zYWN0aW9uVHlwZXMuSW5zdGFsbG1lbnRzIDogVHJhbnNhY3Rpb25UeXBlcy5Ob3JtYWwsXG4gICAgICBzdGF0dXM6IFRyYW5zYWN0aW9uU3RhdHVzZXMuQ29tcGxldGVkLFxuICAgICAgZGF0ZTogaW5zdGFsbG1lbnRzID8gdHhuRGF0ZS5hZGQoaW5zdGFsbG1lbnRzLm51bWJlciAtIDEsICdtb250aCcpLnRvSVNPU3RyaW5nKCkgOiB0eG5EYXRlLnRvSVNPU3RyaW5nKCksXG4gICAgICBwcm9jZXNzZWREYXRlOiB0eG5Qcm9jZXNzZWREYXRlLnRvSVNPU3RyaW5nKCksXG4gICAgICBvcmlnaW5hbEFtb3VudDogb3JpZ2luYWxBbW91bnRUdXBsZS5hbW91bnQsXG4gICAgICBvcmlnaW5hbEN1cnJlbmN5OiBvcmlnaW5hbEFtb3VudFR1cGxlLmN1cnJlbmN5LFxuICAgICAgY2hhcmdlZEFtb3VudDogY2hhcmdlZEFtb3VudFR1cGxlLmFtb3VudCxcbiAgICAgIGNoYXJnZWRDdXJyZW5jeTogY2hhcmdlZEFtb3VudFR1cGxlLmN1cnJlbmN5LFxuICAgICAgZGVzY3JpcHRpb246IHR4bi5kZXNjcmlwdGlvbiB8fCAnJyxcbiAgICAgIG1lbW86IHR4bi5tZW1vIHx8ICcnLFxuICAgIH07XG5cbiAgICBpZiAoaW5zdGFsbG1lbnRzKSB7XG4gICAgICByZXN1bHQuaW5zdGFsbG1lbnRzID0gaW5zdGFsbG1lbnRzO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH0pO1xufVxuXG5hc3luYyBmdW5jdGlvbiBmZXRjaFRyYW5zYWN0aW9uc0ZvckFjY291bnQocGFnZTogUGFnZSwgc3RhcnREYXRlOiBNb21lbnQsIGFjY291bnROdW1iZXI6IHN0cmluZywgc2NyYXBlck9wdGlvbnM6IFNjYXBlck9wdGlvbnMpOiBQcm9taXNlPFRyYW5zYWN0aW9uc0FjY291bnQ+IHtcbiAgY29uc3Qgc3RhcnREYXRlVmFsdWUgPSBzdGFydERhdGUuZm9ybWF0KCdNTS9ZWVlZJyk7XG4gIGNvbnN0IGRhdGVTZWxlY3RvciA9ICdbaWQkPVwiRm9ybUFyZWFOb0JvcmRlcl9Gb3JtQXJlYV9jbG5kckRlYml0RGF0ZVNjb3BlX1RleHRCb3hcIl0nO1xuICBjb25zdCBkYXRlSGlkZGVuRmllbGRTZWxlY3RvciA9ICdbaWQkPVwiRm9ybUFyZWFOb0JvcmRlcl9Gb3JtQXJlYV9jbG5kckRlYml0RGF0ZVNjb3BlX0hpZGRlbkZpZWxkXCJdJztcbiAgY29uc3QgYnV0dG9uU2VsZWN0b3IgPSAnW2lkJD1cIkZvcm1BcmVhTm9Cb3JkZXJfRm9ybUFyZWFfY3RsU3VibWl0UmVxdWVzdFwiXSc7XG4gIGNvbnN0IG5leHRQYWdlU2VsZWN0b3IgPSAnW2lkJD1cIkZvcm1BcmVhTm9Cb3JkZXJfRm9ybUFyZWFfY3RsR3JpZFBhZ2VyX2J0bk5leHRcIl0nO1xuICBjb25zdCBiaWxsaW5nTGFiZWxTZWxlY3RvciA9ICdbaWQkPUZvcm1BcmVhTm9Cb3JkZXJfRm9ybUFyZWFfY3RsTWFpblRvb2xCYXJfbGJsQ2FwdGlvbl0nO1xuICBjb25zdCBzZWNvbmRhcnlCaWxsaW5nTGFiZWxTZWxlY3RvciA9ICdbaWQkPUZvcm1BcmVhTm9Cb3JkZXJfRm9ybUFyZWFfY3RsU2Vjb25kYXJ5VG9vbEJhcl9sYmxDYXB0aW9uXSc7XG4gIGNvbnN0IG5vRGF0YVNlbGVjdG9yID0gJ1tpZCQ9Rm9ybUFyZWFOb0JvcmRlcl9Gb3JtQXJlYV9tc2dib3hFcnJvck1lc3NhZ2VzXSc7XG5cbiAgZGVidWcoJ2ZpbmQgdGhlIHN0YXJ0IGRhdGUgaW5kZXggaW4gdGhlIGRyb3Bib3gnKTtcbiAgY29uc3Qgb3B0aW9ucyA9IGF3YWl0IHBhZ2VFdmFsQWxsKHBhZ2UsICdbaWQkPVwiRm9ybUFyZWFOb0JvcmRlcl9Gb3JtQXJlYV9jbG5kckRlYml0RGF0ZVNjb3BlX09wdGlvbkxpc3RcIl0gbGknLCBbXSwgKGl0ZW1zKSA9PiB7XG4gICAgcmV0dXJuIGl0ZW1zLm1hcCgoZWw6IGFueSkgPT4gZWwuaW5uZXJUZXh0KTtcbiAgfSk7XG4gIGNvbnN0IHN0YXJ0RGF0ZUluZGV4ID0gb3B0aW9ucy5maW5kSW5kZXgoKG9wdGlvbikgPT4gb3B0aW9uID09PSBzdGFydERhdGVWYWx1ZSk7XG5cbiAgZGVidWcoYHNjcmFwZSAke29wdGlvbnMubGVuZ3RoIC0gc3RhcnREYXRlSW5kZXh9IGJpbGxpbmcgY3ljbGVzYCk7XG4gIGNvbnN0IGFjY291bnRUcmFuc2FjdGlvbnM6IFRyYW5zYWN0aW9uW10gPSBbXTtcbiAgZm9yIChsZXQgY3VycmVudERhdGVJbmRleCA9IHN0YXJ0RGF0ZUluZGV4OyBjdXJyZW50RGF0ZUluZGV4IDwgb3B0aW9ucy5sZW5ndGg7IGN1cnJlbnREYXRlSW5kZXggKz0gMSkge1xuICAgIGRlYnVnKCd3YWl0IGZvciBkYXRlIHNlbGVjdG9yIHRvIGJlIGZvdW5kJyk7XG4gICAgYXdhaXQgd2FpdFVudGlsRWxlbWVudEZvdW5kKHBhZ2UsIGRhdGVTZWxlY3RvciwgdHJ1ZSk7XG4gICAgZGVidWcoYHNldCBoaWRkZW4gdmFsdWUgb2YgdGhlIGRhdGUgc2VsZWN0b3IgdG8gYmUgdGhlIGluZGV4ICR7Y3VycmVudERhdGVJbmRleH1gKTtcbiAgICBhd2FpdCBzZXRWYWx1ZShwYWdlLCBkYXRlSGlkZGVuRmllbGRTZWxlY3RvciwgYCR7Y3VycmVudERhdGVJbmRleH1gKTtcbiAgICBkZWJ1Zygnd2FpdCBhIHNlY29uZCB0byB3b3JrYXJvdW5kIG5hdmlnYXRpb24gaXNzdWUgaW4gaGVhZGxlc3MgYnJvd3NlciBtb2RlJyk7XG4gICAgYXdhaXQgcGFnZS53YWl0Rm9yKDEwMDApO1xuICAgIGRlYnVnKCdjbGljayBvbiB0aGUgZmlsdGVyIHN1Ym1pdCBidXR0b24gYW5kIHdhaXQgZm9yIG5hdmlnYXRpb24nKTtcbiAgICBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgICBwYWdlLndhaXRGb3JOYXZpZ2F0aW9uKHsgd2FpdFVudGlsOiAnZG9tY29udGVudGxvYWRlZCcgfSksXG4gICAgICBjbGlja0J1dHRvbihwYWdlLCBidXR0b25TZWxlY3RvciksXG4gICAgXSk7XG4gICAgZGVidWcoJ2NoZWNrIGlmIG1vbnRoIGhhcyBubyB0cmFuc2FjdGlvbnMnKTtcbiAgICBjb25zdCBwYWdlSGFzTm9UcmFuc2FjdGlvbnMgPSBhd2FpdCBwYWdlRXZhbChwYWdlLCBub0RhdGFTZWxlY3RvciwgZmFsc2UsICgoZWxlbWVudCkgPT4ge1xuICAgICAgY29uc3Qgc2l0ZVZhbHVlID0gKChlbGVtZW50IGFzIEhUTUxTcGFuRWxlbWVudCkuaW5uZXJUZXh0IHx8ICcnKS5yZXBsYWNlKC9bXiDXkC3Xql0vZywgJycpO1xuICAgICAgcmV0dXJuIHNpdGVWYWx1ZSA9PT0gJ9ec15Ag16DXntem15DXlSDXoNeq15XXoNeZ150nO1xuICAgIH0pKTtcblxuICAgIGlmIChwYWdlSGFzTm9UcmFuc2FjdGlvbnMpIHtcbiAgICAgIGRlYnVnKCdwYWdlIGhhcyBubyB0cmFuc2FjdGlvbnMnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZGVidWcoJ2ZpbmQgdGhlIGJpbGxpbmcgZGF0ZScpO1xuICAgICAgbGV0IGJpbGxpbmdEYXRlTGFiZWwgPSBhd2FpdCBwYWdlRXZhbChwYWdlLCBiaWxsaW5nTGFiZWxTZWxlY3RvciwgJycsICgoZWxlbWVudCkgPT4ge1xuICAgICAgICByZXR1cm4gKGVsZW1lbnQgYXMgSFRNTFNwYW5FbGVtZW50KS5pbm5lclRleHQ7XG4gICAgICB9KSk7XG4gICAgICBsZXQgc2V0dGxlbWVudERhdGVSZWdleCA9IC9cXGR7MSwyfVsvXVxcZHsyfVsvXVxcZHsyLDR9LztcblxuICAgICAgaWYgKGJpbGxpbmdEYXRlTGFiZWwgPT09ICcnKSB7XG4gICAgICAgIGJpbGxpbmdEYXRlTGFiZWwgPSBhd2FpdCBwYWdlRXZhbChwYWdlLCBzZWNvbmRhcnlCaWxsaW5nTGFiZWxTZWxlY3RvciwgJycsICgoZWxlbWVudCkgPT4ge1xuICAgICAgICAgIHJldHVybiAoZWxlbWVudCBhcyBIVE1MU3BhbkVsZW1lbnQpLmlubmVyVGV4dDtcbiAgICAgICAgfSkpO1xuICAgICAgICBzZXR0bGVtZW50RGF0ZVJlZ2V4ID0gL1xcZHsxLDJ9Wy9dXFxkezIsNH0vO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBiaWxsaW5nRGF0ZSA9IHNldHRsZW1lbnREYXRlUmVnZXguZXhlYyhiaWxsaW5nRGF0ZUxhYmVsKT8uWzBdO1xuXG4gICAgICBpZiAoIWJpbGxpbmdEYXRlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignZmFpbGVkIHRvIGZldGNoIHByb2Nlc3MgZGF0ZScpO1xuICAgICAgfVxuXG4gICAgICBkZWJ1ZyhgZm91bmQgdGhlIGJpbGxpbmcgZGF0ZSBmb3IgdGhhdCBtb250aCAke2JpbGxpbmdEYXRlfWApO1xuICAgICAgbGV0IGhhc05leHRQYWdlID0gZmFsc2U7XG4gICAgICBkbyB7XG4gICAgICAgIGRlYnVnKCdmZXRjaCByYXcgdHJhbnNhY3Rpb25zIGZyb20gcGFnZScpO1xuICAgICAgICBjb25zdCByYXdUcmFuc2FjdGlvbnMgPSBhd2FpdCBwYWdlRXZhbEFsbDwoU2NyYXBlZFRyYW5zYWN0aW9uIHwgbnVsbClbXT4ocGFnZSwgJyNjdGxNYWluR3JpZCA+IHRib2R5IHRyLCAjY3RsU2Vjb25kYXJ5R3JpZCA+IHRib2R5IHRyJywgW10sIChpdGVtcywgYmlsbGluZ0RhdGUpID0+IHtcbiAgICAgICAgICByZXR1cm4gKGl0ZW1zKS5tYXAoKGVsKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb2x1bW5zID0gZWwuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3RkJyk7XG4gICAgICAgICAgICBpZiAoY29sdW1ucy5sZW5ndGggPT09IDYpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBwcm9jZXNzZWREYXRlOiBjb2x1bW5zWzBdLmlubmVyVGV4dCxcbiAgICAgICAgICAgICAgICBkYXRlOiBjb2x1bW5zWzFdLmlubmVyVGV4dCxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogY29sdW1uc1syXS5pbm5lclRleHQsXG4gICAgICAgICAgICAgICAgb3JpZ2luYWxBbW91bnQ6IGNvbHVtbnNbM10uaW5uZXJUZXh0LFxuICAgICAgICAgICAgICAgIGNoYXJnZWRBbW91bnQ6IGNvbHVtbnNbNF0uaW5uZXJUZXh0LFxuICAgICAgICAgICAgICAgIG1lbW86IGNvbHVtbnNbNV0uaW5uZXJUZXh0LFxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGNvbHVtbnMubGVuZ3RoID09PSA1KSB7XG4gICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgcHJvY2Vzc2VkRGF0ZTogYmlsbGluZ0RhdGUsXG4gICAgICAgICAgICAgICAgZGF0ZTogY29sdW1uc1swXS5pbm5lclRleHQsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGNvbHVtbnNbMV0uaW5uZXJUZXh0LFxuICAgICAgICAgICAgICAgIG9yaWdpbmFsQW1vdW50OiBjb2x1bW5zWzJdLmlubmVyVGV4dCxcbiAgICAgICAgICAgICAgICBjaGFyZ2VkQW1vdW50OiBjb2x1bW5zWzNdLmlubmVyVGV4dCxcbiAgICAgICAgICAgICAgICBtZW1vOiBjb2x1bW5zWzRdLmlubmVyVGV4dCxcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9LCBiaWxsaW5nRGF0ZSk7XG4gICAgICAgIGRlYnVnKGBmZXRjaGVkICR7cmF3VHJhbnNhY3Rpb25zLmxlbmd0aH0gcmF3IHRyYW5zYWN0aW9ucyBmcm9tIHBhZ2VgKTtcbiAgICAgICAgYWNjb3VudFRyYW5zYWN0aW9ucy5wdXNoKC4uLmNvbnZlcnRUcmFuc2FjdGlvbnMoKHJhd1RyYW5zYWN0aW9ucyBhcyBTY3JhcGVkVHJhbnNhY3Rpb25bXSlcbiAgICAgICAgICAuZmlsdGVyKChpdGVtKSA9PiAhIWl0ZW0pKSk7XG5cbiAgICAgICAgZGVidWcoJ2NoZWNrIGZvciBleGlzdGFuY2Ugb2YgYW5vdGhlciBwYWdlJyk7XG4gICAgICAgIGhhc05leHRQYWdlID0gYXdhaXQgZWxlbWVudFByZXNlbnRPblBhZ2UocGFnZSwgbmV4dFBhZ2VTZWxlY3Rvcik7XG4gICAgICAgIGlmIChoYXNOZXh0UGFnZSkge1xuICAgICAgICAgIGRlYnVnKCdoYXMgYW5vdGhlciBwYWdlLCBjbGljayBvbiBidXR0b24gbmV4dCBhbmQgd2FpdCBmb3IgcGFnZSBuYXZpZ2F0aW9uJyk7XG4gICAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgICAgICAgICAgcGFnZS53YWl0Rm9yTmF2aWdhdGlvbih7IHdhaXRVbnRpbDogJ2RvbWNvbnRlbnRsb2FkZWQnIH0pLFxuICAgICAgICAgICAgYXdhaXQgY2xpY2tCdXR0b24ocGFnZSwgJ1tpZCQ9Rm9ybUFyZWFOb0JvcmRlcl9Gb3JtQXJlYV9jdGxHcmlkUGFnZXJfYnRuTmV4dF0nKSxcbiAgICAgICAgICBdKTtcbiAgICAgICAgfVxuICAgICAgfSB3aGlsZSAoaGFzTmV4dFBhZ2UpO1xuICAgIH1cbiAgfVxuXG4gIGRlYnVnKCdmaWxlciBvdXQgb2xkIHRyYW5zYWN0aW9ucycpO1xuICBjb25zdCB0eG5zID0gZmlsdGVyT2xkVHJhbnNhY3Rpb25zKGFjY291bnRUcmFuc2FjdGlvbnMsIHN0YXJ0RGF0ZSwgc2NyYXBlck9wdGlvbnMuY29tYmluZUluc3RhbGxtZW50cyB8fCBmYWxzZSk7XG4gIGRlYnVnKGBmb3VuZCAke3R4bnMubGVuZ3RofSB2YWxpZCB0cmFuc2FjdGlvbnMgb3V0IG9mICR7YWNjb3VudFRyYW5zYWN0aW9ucy5sZW5ndGh9IHRyYW5zYWN0aW9ucyBmb3IgYWNjb3VudCBlbmRpbmcgd2l0aCAke2FjY291bnROdW1iZXIuc3Vic3RyaW5nKGFjY291bnROdW1iZXIubGVuZ3RoIC0gMil9YCk7XG4gIHJldHVybiB7XG4gICAgYWNjb3VudE51bWJlcixcbiAgICB0eG5zLFxuICB9O1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRBY2NvdW50TnVtYmVycyhwYWdlOiBQYWdlKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICByZXR1cm4gcGFnZUV2YWxBbGwocGFnZSwgJ1tpZCQ9bG5rSXRlbV0nLCBbXSwgKGVsZW1lbnRzKSA9PiBlbGVtZW50cy5tYXAoKGUpID0+IChlIGFzIEhUTUxBbmNob3JFbGVtZW50KS50ZXh0KSkudGhlbigocmVzKSA9PiByZXMubWFwKCh0ZXh0KSA9PiAvXFxkKyQvLmV4ZWModGV4dC50cmltKCkpPy5bMF0gPz8gJycpKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gc2V0QWNjb3VudChwYWdlOiBQYWdlLCBhY2NvdW50OiBzdHJpbmcpIHtcbiAgYXdhaXQgcGFnZUV2YWxBbGwoXG4gICAgcGFnZSxcbiAgICAnW2lkJD1sbmtJdGVtXScsXG4gICAgbnVsbCxcbiAgICAoZWxlbWVudHMsIGFjY291bnQpID0+IHtcbiAgICAgIGZvciAoY29uc3QgZWxlbSBvZiBlbGVtZW50cykge1xuICAgICAgICBjb25zdCBhID0gZWxlbSBhcyBIVE1MQW5jaG9yRWxlbWVudDtcbiAgICAgICAgaWYgKGEudGV4dC5pbmNsdWRlcyhhY2NvdW50KSkge1xuICAgICAgICAgIGEuY2xpY2soKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgYWNjb3VudCxcbiAgKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZmV0Y2hUcmFuc2FjdGlvbnMocGFnZTogUGFnZSwgc3RhcnREYXRlOiBNb21lbnQsIHNjcmFwZXJPcHRpb25zOiBTY2FwZXJPcHRpb25zKTogUHJvbWlzZTxUcmFuc2FjdGlvbnNBY2NvdW50W10+IHtcbiAgY29uc3QgYWNjb3VudE51bWJlcnM6IHN0cmluZ1tdID0gYXdhaXQgZ2V0QWNjb3VudE51bWJlcnMocGFnZSk7XG4gIGNvbnN0IGFjY291bnRzOiBUcmFuc2FjdGlvbnNBY2NvdW50W10gPSBbXTtcblxuICBmb3IgKGNvbnN0IGFjY291bnQgb2YgYWNjb3VudE51bWJlcnMpIHtcbiAgICBkZWJ1Zyhgc2V0dGluZyBhY2NvdW50OiAke2FjY291bnR9YCk7XG4gICAgYXdhaXQgc2V0QWNjb3VudChwYWdlLCBhY2NvdW50KTtcbiAgICBhd2FpdCBwYWdlLndhaXRGb3IoMTAwMCk7XG4gICAgYWNjb3VudHMucHVzaChcbiAgICAgIGF3YWl0IGZldGNoVHJhbnNhY3Rpb25zRm9yQWNjb3VudChcbiAgICAgICAgcGFnZSxcbiAgICAgICAgc3RhcnREYXRlLFxuICAgICAgICBhY2NvdW50LFxuICAgICAgICBzY3JhcGVyT3B0aW9ucyxcbiAgICAgICksXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBhY2NvdW50cztcbn1cblxuXG5jbGFzcyBWaXNhQ2FsU2NyYXBlciBleHRlbmRzIEJhc2VTY3JhcGVyV2l0aEJyb3dzZXIge1xuICBvcGVuTG9naW5Qb3B1cCA9IGFzeW5jICgpID0+IHtcbiAgICBkZWJ1Zygnb3BlbiBsb2dpbiBwb3B1cCwgd2FpdCB1bnRpbCBsb2dpbiBidXR0b24gYXZhaWxhYmxlJyk7XG4gICAgYXdhaXQgd2FpdFVudGlsRWxlbWVudEZvdW5kKHRoaXMucGFnZSwgJyNjY0xvZ2luRGVza3RvcEJ0bicsIHRydWUpO1xuICAgIGRlYnVnKCdjbGljayBvbiB0aGUgbG9naW4gYnV0dG9uJyk7XG4gICAgYXdhaXQgY2xpY2tCdXR0b24odGhpcy5wYWdlLCAnI2NjTG9naW5EZXNrdG9wQnRuJyk7XG4gICAgZGVidWcoJ2dldCB0aGUgZnJhbWUgdGhhdCBob2xkcyB0aGUgbG9naW4nKTtcbiAgICBjb25zdCBmcmFtZSA9IGF3YWl0IGdldExvZ2luRnJhbWUodGhpcy5wYWdlKTtcbiAgICBkZWJ1Zygnd2FpdCB1bnRpbCB0aGUgcGFzc3dvcmQgbG9naW4gdGFiIGhlYWRlciBpcyBhdmFpbGFibGUnKTtcbiAgICBhd2FpdCB3YWl0VW50aWxFbGVtZW50Rm91bmQoZnJhbWUsICcjcmVndWxhci1sb2dpbicpO1xuICAgIGRlYnVnKCduYXZpZ2F0ZSB0byB0aGUgcGFzc3dvcmQgbG9naW4gdGFiJyk7XG4gICAgYXdhaXQgY2xpY2tCdXR0b24oZnJhbWUsICcjcmVndWxhci1sb2dpbicpO1xuICAgIGRlYnVnKCd3YWl0IHVudGlsIHRoZSBwYXNzd29yZCBsb2dpbiB0YWIgaXMgYWN0aXZlJyk7XG4gICAgYXdhaXQgd2FpdFVudGlsRWxlbWVudEZvdW5kKGZyYW1lLCAncmVndWxhci1sb2dpbicpO1xuXG4gICAgcmV0dXJuIGZyYW1lO1xuICB9O1xuXG4gIGdldExvZ2luT3B0aW9ucyhjcmVkZW50aWFsczogUmVjb3JkPHN0cmluZywgc3RyaW5nPikge1xuICAgIHJldHVybiB7XG4gICAgICBsb2dpblVybDogYCR7TE9HSU5fVVJMfWAsXG4gICAgICBmaWVsZHM6IGNyZWF0ZUxvZ2luRmllbGRzKGNyZWRlbnRpYWxzKSxcbiAgICAgIHN1Ym1pdEJ1dHRvblNlbGVjdG9yOiAnYnV0dG9uW3R5cGU9XCJzdWJtaXRcIl0nLFxuICAgICAgcG9zc2libGVSZXN1bHRzOiBnZXRQb3NzaWJsZUxvZ2luUmVzdWx0cygpLFxuICAgICAgY2hlY2tSZWFkaW5lc3M6IGFzeW5jICgpID0+IHdhaXRVbnRpbEVsZW1lbnRGb3VuZCh0aGlzLnBhZ2UsICcjY2NMb2dpbkRlc2t0b3BCdG4nKSxcbiAgICAgIHByZUFjdGlvbjogdGhpcy5vcGVuTG9naW5Qb3B1cCxcbiAgICAgIHVzZXJBZ2VudDogJ01vemlsbGEvNS4wIChYMTE7IExpbnV4IHg4Nl82NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzc4LjAuMzkwNC4xMDggU2FmYXJpLzUzNy4zNicsXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIGZldGNoRGF0YSgpOiBQcm9taXNlPFNjYXBlclNjcmFwaW5nUmVzdWx0PiB7XG4gICAgY29uc3QgZGVmYXVsdFN0YXJ0TW9tZW50ID0gbW9tZW50KCkuc3VidHJhY3QoMSwgJ3llYXJzJykuYWRkKDEsICdkYXknKTtcbiAgICBjb25zdCBzdGFydERhdGUgPSB0aGlzLm9wdGlvbnMuc3RhcnREYXRlIHx8IGRlZmF1bHRTdGFydE1vbWVudC50b0RhdGUoKTtcbiAgICBjb25zdCBzdGFydE1vbWVudCA9IG1vbWVudC5tYXgoZGVmYXVsdFN0YXJ0TW9tZW50LCBtb21lbnQoc3RhcnREYXRlKSk7XG4gICAgZGVidWcoYGZldGNoIHRyYW5zYWN0aW9ucyBzdGFydGluZyAke3N0YXJ0TW9tZW50LmZvcm1hdCgpfWApO1xuXG4gICAgZGVidWcoJ25hdmlnYXRlIHRvIHRyYW5zYWN0aW9ucyBwYWdlJyk7XG4gICAgYXdhaXQgdGhpcy5uYXZpZ2F0ZVRvKFRSQU5TQUNUSU9OU19VUkwsIHVuZGVmaW5lZCwgNjAwMDApO1xuXG4gICAgZGVidWcoJ2ZldGNoIGFjY291bnRzIHRyYW5zYWN0aW9ucycpO1xuICAgIGNvbnN0IGFjY291bnRzID0gYXdhaXQgZmV0Y2hUcmFuc2FjdGlvbnModGhpcy5wYWdlLCBzdGFydE1vbWVudCwgdGhpcy5vcHRpb25zKTtcbiAgICBkZWJ1ZygncmV0dXJuIHRoZSBzY3JhcGVkIGFjY291bnRzJyk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN1Y2Nlc3M6IHRydWUsXG4gICAgICBhY2NvdW50cyxcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFZpc2FDYWxTY3JhcGVyO1xuIl19
|