israeli-bank-scrapers 1.7.0 → 1.10.1
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/README.md +13 -1
- package/lib/definitions.d.ts +6 -1
- package/lib/definitions.js +6 -1
- package/lib/helpers/elements-interactions.js +2 -2
- package/lib/scrapers/base-beinleumi-group.js +2 -2
- package/lib/scrapers/base-scraper-with-browser.js +6 -1
- package/lib/scrapers/factory.d.ts +2 -1
- package/lib/scrapers/factory.js +6 -1
- package/lib/scrapers/hapoalim.js +33 -12
- package/lib/scrapers/max.js +22 -1
- package/lib/scrapers/otsar-hahayal.js +9 -2
- package/lib/scrapers/visa-cal.js +66 -55
- package/lib/scrapers/yahav.d.ts +21 -0
- package/lib/scrapers/yahav.js +272 -0
- package/lib/scrapers/yahav.test.d.ts +1 -0
- package/lib/scrapers/yahav.test.js +65 -0
- package/lib/transactions.d.ts +1 -0
- package/lib/transactions.js +1 -1
- package/package.json +1 -1
package/lib/scrapers/hapoalim.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
require("core-js/modules/es.array.iterator");
|
|
4
|
+
|
|
3
5
|
require("core-js/modules/es.promise");
|
|
4
6
|
|
|
5
7
|
Object.defineProperty(exports, "__esModule", {
|
|
@@ -21,8 +23,11 @@ var _fetch = require("../helpers/fetch");
|
|
|
21
23
|
|
|
22
24
|
var _transactions = require("../transactions");
|
|
23
25
|
|
|
26
|
+
var _debug = require("../helpers/debug");
|
|
27
|
+
|
|
24
28
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
25
29
|
|
|
30
|
+
const debug = (0, _debug.getDebug)('hapoalim');
|
|
26
31
|
const DATE_FORMAT = 'YYYYMMDD'; // eslint-disable-next-line @typescript-eslint/no-namespace
|
|
27
32
|
|
|
28
33
|
function convertTransactions(txns) {
|
|
@@ -101,11 +106,27 @@ async function fetchPoalimXSRFWithinPage(page, url, pageUuid) {
|
|
|
101
106
|
return (0, _fetch.fetchPostWithinPage)(page, url, [], headers);
|
|
102
107
|
}
|
|
103
108
|
|
|
109
|
+
async function getAccountTransactions(apiSiteUrl, page, accountNumber, startDate, endDate) {
|
|
110
|
+
var _txnsResult$transacti;
|
|
111
|
+
|
|
112
|
+
const txnsUrl = `${apiSiteUrl}/current-account/transactions?accountId=${accountNumber}&numItemsPerPage=150&retrievalEndDate=${endDate}&retrievalStartDate=${startDate}&sortCode=1`;
|
|
113
|
+
const txnsResult = await fetchPoalimXSRFWithinPage(page, txnsUrl, '/current-account/transactions');
|
|
114
|
+
return convertTransactions((_txnsResult$transacti = txnsResult === null || txnsResult === void 0 ? void 0 : txnsResult.transactions) !== null && _txnsResult$transacti !== void 0 ? _txnsResult$transacti : []);
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
async function getAccountBalance(apiSiteUrl, page, accountNumber) {
|
|
118
|
+
const balanceAndCreditLimitUrl = `${apiSiteUrl}/current-account/composite/balanceAndCreditLimit?accountId=${accountNumber}&view=details&lang=he`;
|
|
119
|
+
const balanceAndCreditLimit = await (0, _fetch.fetchGetWithinPage)(page, balanceAndCreditLimitUrl);
|
|
120
|
+
return balanceAndCreditLimit === null || balanceAndCreditLimit === void 0 ? void 0 : balanceAndCreditLimit.currentBalance;
|
|
121
|
+
}
|
|
122
|
+
|
|
104
123
|
async function fetchAccountData(page, baseUrl, options) {
|
|
105
124
|
const restContext = await getRestContext(page);
|
|
106
125
|
const apiSiteUrl = `${baseUrl}/${restContext}`;
|
|
107
126
|
const accountDataUrl = `${baseUrl}/ServerServices/general/accounts`;
|
|
127
|
+
debug('fetching accounts data');
|
|
108
128
|
const accountsInfo = (await (0, _fetch.fetchGetWithinPage)(page, accountDataUrl)) || [];
|
|
129
|
+
debug('got %d accounts, fetching txns and balance', accountsInfo.length);
|
|
109
130
|
const defaultStartMoment = (0, _moment.default)().subtract(1, 'years').add(1, 'day');
|
|
110
131
|
const startDate = options.startDate || defaultStartMoment.toDate();
|
|
111
132
|
|
|
@@ -115,19 +136,18 @@ async function fetchAccountData(page, baseUrl, options) {
|
|
|
115
136
|
const endDateStr = (0, _moment.default)().format(DATE_FORMAT);
|
|
116
137
|
const accounts = [];
|
|
117
138
|
|
|
118
|
-
for (
|
|
119
|
-
|
|
120
|
-
const
|
|
121
|
-
const
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
if (txnsResult) {
|
|
128
|
-
txns = convertTransactions(txnsResult.transactions);
|
|
139
|
+
for (const account of accountsInfo) {
|
|
140
|
+
let balance;
|
|
141
|
+
const accountNumber = `${account.bankNumber}-${account.branchNumber}-${account.accountNumber}`;
|
|
142
|
+
const isActiveAccount = account.accountClosingReasonCode === 0;
|
|
143
|
+
|
|
144
|
+
if (isActiveAccount) {
|
|
145
|
+
balance = await getAccountBalance(apiSiteUrl, page, accountNumber);
|
|
146
|
+
} else {
|
|
147
|
+
debug('Skipping balance for a closed account, balance will be undefined');
|
|
129
148
|
}
|
|
130
149
|
|
|
150
|
+
const txns = await getAccountTransactions(apiSiteUrl, page, accountNumber, startDateStr, endDateStr);
|
|
131
151
|
accounts.push({
|
|
132
152
|
accountNumber,
|
|
133
153
|
balance,
|
|
@@ -139,6 +159,7 @@ async function fetchAccountData(page, baseUrl, options) {
|
|
|
139
159
|
success: true,
|
|
140
160
|
accounts
|
|
141
161
|
};
|
|
162
|
+
debug('fetching ended');
|
|
142
163
|
return accountData;
|
|
143
164
|
}
|
|
144
165
|
|
|
@@ -184,4 +205,4 @@ class HapoalimScraper extends _baseScraperWithBrowser.BaseScraperWithBrowser {
|
|
|
184
205
|
|
|
185
206
|
var _default = HapoalimScraper;
|
|
186
207
|
exports.default = _default;
|
|
187
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JhcGVycy9oYXBvYWxpbS50cyJdLCJuYW1lcyI6WyJEQVRFX0ZPUk1BVCIsImNvbnZlcnRUcmFuc2FjdGlvbnMiLCJ0eG5zIiwibWFwIiwidHhuIiwiaXNPdXRib3VuZCIsImV2ZW50QWN0aXZpdHlUeXBlQ29kZSIsIm1lbW8iLCJiZW5lZmljaWFyeURldGFpbHNEYXRhIiwicGFydHlIZWFkbGluZSIsInBhcnR5TmFtZSIsIm1lc3NhZ2VIZWFkbGluZSIsIm1lc3NhZ2VEZXRhaWwiLCJtZW1vTGluZXMiLCJwdXNoIiwibGVuZ3RoIiwiam9pbiIsInJlc3VsdCIsInR5cGUiLCJUcmFuc2FjdGlvblR5cGVzIiwiTm9ybWFsIiwiaWRlbnRpZmllciIsInJlZmVyZW5jZU51bWJlciIsImRhdGUiLCJldmVudERhdGUiLCJ0b0lTT1N0cmluZyIsInByb2Nlc3NlZERhdGUiLCJ2YWx1ZURhdGUiLCJvcmlnaW5hbEFtb3VudCIsImV2ZW50QW1vdW50Iiwib3JpZ2luYWxDdXJyZW5jeSIsImNoYXJnZWRBbW91bnQiLCJkZXNjcmlwdGlvbiIsImFjdGl2aXR5RGVzY3JpcHRpb24iLCJzdGF0dXMiLCJzZXJpYWxOdW1iZXIiLCJUcmFuc2FjdGlvblN0YXR1c2VzIiwiUGVuZGluZyIsIkNvbXBsZXRlZCIsImdldFJlc3RDb250ZXh0IiwicGFnZSIsImV2YWx1YXRlIiwid2luZG93IiwiYm5ocEFwcCIsInJlc3RDb250ZXh0Iiwic2xpY2UiLCJmZXRjaFBvYWxpbVhTUkZXaXRoaW5QYWdlIiwidXJsIiwicGFnZVV1aWQiLCJjb29raWVzIiwiWFNSRkNvb2tpZSIsImZpbmQiLCJjb29raWUiLCJuYW1lIiwiaGVhZGVycyIsInZhbHVlIiwidXVpZCIsImZldGNoQWNjb3VudERhdGEiLCJiYXNlVXJsIiwib3B0aW9ucyIsImFwaVNpdGVVcmwiLCJhY2NvdW50RGF0YVVybCIsImFjY291bnRzSW5mbyIsImRlZmF1bHRTdGFydE1vbWVudCIsInN1YnRyYWN0IiwiYWRkIiwic3RhcnREYXRlIiwidG9EYXRlIiwic3RhcnRNb21lbnQiLCJtb21lbnQiLCJtYXgiLCJzdGFydERhdGVTdHIiLCJmb3JtYXQiLCJlbmREYXRlU3RyIiwiYWNjb3VudHMiLCJhY2NvdW50SW5kZXgiLCJhY2NvdW50TnVtYmVyIiwiYmFua051bWJlciIsImJyYW5jaE51bWJlciIsImJhbGFuY2VBbmRDcmVkaXRMaW1pdFVybCIsImJhbGFuY2VBbmRDcmVkaXRMaW1pdCIsImJhbGFuY2UiLCJjdXJyZW50QmFsYW5jZSIsInR4bnNVcmwiLCJ0eG5zUmVzdWx0IiwidHJhbnNhY3Rpb25zIiwiYWNjb3VudERhdGEiLCJzdWNjZXNzIiwiZ2V0UG9zc2libGVMb2dpblJlc3VsdHMiLCJ1cmxzIiwiTG9naW5SZXN1bHRzIiwiU3VjY2VzcyIsIkludmFsaWRQYXNzd29yZCIsIkNoYW5nZVBhc3N3b3JkIiwiY3JlYXRlTG9naW5GaWVsZHMiLCJjcmVkZW50aWFscyIsInNlbGVjdG9yIiwidXNlckNvZGUiLCJwYXNzd29yZCIsIkhhcG9hbGltU2NyYXBlciIsIkJhc2VTY3JhcGVyV2l0aEJyb3dzZXIiLCJnZXRMb2dpbk9wdGlvbnMiLCJsb2dpblVybCIsImZpZWxkcyIsInN1Ym1pdEJ1dHRvblNlbGVjdG9yIiwicG9zdEFjdGlvbiIsInBvc3NpYmxlUmVzdWx0cyIsImZldGNoRGF0YSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBR0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7QUFLQSxNQUFNQSxXQUFXLEdBQUcsVUFBcEIsQyxDQUVBOztBQTRDQSxTQUFTQyxtQkFBVCxDQUE2QkMsSUFBN0IsRUFBd0U7QUFDdEUsU0FBT0EsSUFBSSxDQUFDQyxHQUFMLENBQVVDLEdBQUQsSUFBUztBQUN2QixVQUFNQyxVQUFVLEdBQUdELEdBQUcsQ0FBQ0UscUJBQUosS0FBOEIsQ0FBakQ7QUFFQSxRQUFJQyxJQUFJLEdBQUcsRUFBWDs7QUFDQSxRQUFJSCxHQUFHLENBQUNJLHNCQUFS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aUNBQWdCLEtBQUtqRSxJQUFyQixDQUpuQjtBQUtMa0UsTUFBQUEsZUFBZSxFQUFFbEIsdUJBQXVCLENBQUMsS0FBSzlCLE9BQU47QUFMbkMsS0FBUDtBQU9EOztBQUVELFFBQU1pRCxTQUFOLEdBQWtCO0FBQ2hCLFdBQU9sRCxnQkFBZ0IsQ0FBQyxLQUFLakIsSUFBTixFQUFZLEtBQUtrQixPQUFqQixFQUEwQixLQUFLQyxPQUEvQixDQUF2QjtBQUNEOztBQWxCa0Q7O2VBcUJ0Q3dDLGUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgdXVpZDQgZnJvbSAndXVpZC92NCc7XG5cbmltcG9ydCB7IFBhZ2UgfSBmcm9tICdwdXBwZXRlZXInO1xuaW1wb3J0IHsgQmFzZVNjcmFwZXJXaXRoQnJvd3NlciwgTG9naW5SZXN1bHRzLCBQb3NzaWJsZUxvZ2luUmVzdWx0cyB9IGZyb20gJy4vYmFzZS1zY3JhcGVyLXdpdGgtYnJvd3Nlcic7XG5pbXBvcnQgeyB3YWl0Rm9yUmVkaXJlY3QgfSBmcm9tICcuLi9oZWxwZXJzL25hdmlnYXRpb24nO1xuaW1wb3J0IHsgd2FpdFVudGlsIH0gZnJvbSAnLi4vaGVscGVycy93YWl0aW5nJztcbmltcG9ydCB7IGZldGNoR2V0V2l0aGluUGFnZSwgZmV0Y2hQb3N0V2l0aGluUGFnZSB9IGZyb20gJy4uL2hlbHBlcnMvZmV0Y2gnO1xuaW1wb3J0IHtcbiAgVHJhbnNhY3Rpb25zQWNjb3VudCwgVHJhbnNhY3Rpb24sIFRyYW5zYWN0aW9uU3RhdHVzZXMsIFRyYW5zYWN0aW9uVHlwZXMsXG59IGZyb20gJy4uL3RyYW5zYWN0aW9ucyc7XG5pbXBvcnQgeyBTY2FwZXJPcHRpb25zLCBTY3JhcGVyQ3JlZGVudGlhbHMgfSBmcm9tICcuL2Jhc2Utc2NyYXBlcic7XG5cbmNvbnN0IERBVEVfRk9STUFUID0gJ1lZWVlNTUREJztcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1uYW1lc3BhY2VcbmRlY2xhcmUgbmFtZXNwYWNlIHdpbmRvdyB7XG4gIGNvbnN0IGJuaHBBcHA6IGFueTtcbn1cblxuaW50ZXJmYWNlIFNjcmFwZWRUcmFuc2FjdGlvbiB7XG4gIHNlcmlhbE51bWJlcj86IG51bWJlcjtcbiAgYWN0aXZpdHlEZXNjcmlwdGlvbj86IHN0cmluZztcbiAgZXZlbnRBbW91bnQ6IG51bWJlcjtcbiAgdmFsdWVEYXRlPzogc3RyaW5nO1xuICBldmVudERhdGU/OiBzdHJpbmc7XG4gIHJlZmVyZW5jZU51bWJlcj86IG51bWJlcjtcbiAgU2NyYXBlZFRyYW5zYWN0aW9uPzogc3RyaW5nO1xuICBldmVudEFjdGl2aXR5VHlwZUNvZGU6IG51bWJlcjtcbiAgY3VycmVudEJhbGFuY2U6IG51bWJlcjtcbiAgYmVuZWZpY2lhcnlEZXRhaWxzRGF0YT86IHtcbiAgICBwYXJ0eUhlYWRsaW5lPzogc3RyaW5nO1xuICAgIHBhcnR5TmFtZT86IHN0cmluZztcbiAgICBtZXNzYWdlSGVhZGxpbmU/OiBzdHJpbmc7XG4gICAgbWVzc2FnZURldGFpbD86IHN0cmluZztcbiAgfTtcbn1cblxudHlwZSBGZXRjaGVkQWNjb3VudERhdGEgPSB7XG4gIGJhbmtOdW1iZXI6IHN0cmluZztcbiAgYWNjb3VudE51bWJlcjogc3RyaW5nO1xuICBicmFuY2hOdW1iZXI6IHN0cmluZztcbn1bXTtcblxudHlwZSBGZXRjaGVkQWNjb3VudFRyYW5zYWN0aW9uc0RhdGEgPSB7XG4gIHRyYW5zYWN0aW9uczogU2NyYXBlZFRyYW5zYWN0aW9uW107XG59O1xuXG50eXBlIEJhbGFuY2VBbmRDcmVkaXRMaW1pdCA9IHtcbiAgY3JlZGl0TGltaXRBbW91bnQ6IG51bWJlcjtcbiAgY3JlZGl0TGltaXREZXNjcmlwdGlvbjogc3RyaW5nO1xuICBjcmVkaXRMaW1pdFV0aWxpemF0aW9uQW1vdW50OiBudW1iZXI7XG4gIGNyZWRpdExpbWl0VXRpbGl6YXRpb25FeGlzdGFuY2VDb2RlOiBudW1iZXI7XG4gIGNyZWRpdExpbWl0VXRpbGl6YXRpb25QZXJjZW50OiBudW1iZXI7XG4gIGN1cnJlbnRBY2NvdW50TGltaXRzQW1vdW50OiBudW1iZXI7XG4gIGN1cnJlbnRCYWxhbmNlOiBudW1iZXI7XG4gIHdpdGhkcmF3YWxCYWxhbmNlOiBudW1iZXI7XG59O1xuXG5mdW5jdGlvbiBjb252ZXJ0VHJhbnNhY3Rpb25zKHR4bnM6IFNjcmFwZWRUcmFuc2FjdGlvbltdKTogVHJhbnNhY3Rpb25bXSB7XG4gIHJldHVybiB0eG5zLm1hcCgodHhuKSA9PiB7XG4gICAgY29uc3QgaXNPdXRib3VuZCA9IHR4bi5ldmVudEFjdGl2aXR5VHlwZUNvZGUgPT09IDI7XG5cbiAgICBsZXQgbWVtbyA9ICcnO1xuICAgIGlmICh0eG4uYmVuZWZpY2lhcnlEZXRhaWxzRGF0YSkge1xuICAgICAgY29uc3Qge1xuICAgICAgICBwYXJ0eUhlYWRsaW5lLFxuICAgICAgICBwYXJ0eU5hbWUsXG4gICAgICAgIG1lc3NhZ2VIZWFkbGluZSxcbiAgICAgICAgbWVzc2FnZURldGFpbCxcbiAgICAgIH0gPSB0eG4uYmVuZWZpY2lhcnlEZXRhaWxzRGF0YTtcbiAgICAgIGNvbnN0IG1lbW9MaW5lczogc3RyaW5nW10gPSBbXTtcbiAgICAgIGlmIChwYXJ0eUhlYWRsaW5lKSB7XG4gICAgICAgIG1lbW9MaW5lcy5wdXNoKHBhcnR5SGVhZGxpbmUpO1xuICAgICAgfVxuXG4gICAgICBpZiAocGFydHlOYW1lKSB7XG4gICAgICAgIG1lbW9MaW5lcy5wdXNoKGAke3BhcnR5TmFtZX0uYCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChtZXNzYWdlSGVhZGxpbmUpIHtcbiAgICAgICAgbWVtb0xpbmVzLnB1c2gobWVzc2FnZUhlYWRsaW5lKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG1lc3NhZ2VEZXRhaWwpIHtcbiAgICAgICAgbWVtb0xpbmVzLnB1c2goYCR7bWVzc2FnZURldGFpbH0uYCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChtZW1vTGluZXMubGVuZ3RoKSB7XG4gICAgICAgIG1lbW8gPSBtZW1vTGluZXMuam9pbignICcpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHJlc3VsdDogVHJhbnNhY3Rpb24gPSB7XG4gICAgICB0eXBlOiBUcmFuc2FjdGlvblR5cGVzLk5vcm1hbCxcbiAgICAgIGlkZW50aWZpZXI6IHR4bi5yZWZlcmVuY2VOdW1iZXIsXG4gICAgICBkYXRlOiBtb21lbnQodHhuLmV2ZW50RGF0ZSwgREFURV9GT1JNQVQpLnRvSVNPU3RyaW5nKCksXG4gICAgICBwcm9jZXNzZWREYXRlOiBtb21lbnQodHhuLnZhbHVlRGF0ZSwgREFURV9GT1JNQVQpLnRvSVNPU3RyaW5nKCksXG4gICAgICBvcmlnaW5hbEFtb3VudDogaXNPdXRib3VuZCA/IC10eG4uZXZlbnRBbW91bnQgOiB0eG4uZXZlbnRBbW91bnQsXG4gICAgICBvcmlnaW5hbEN1cnJlbmN5OiAnSUxTJyxcbiAgICAgIGNoYXJnZWRBbW91bnQ6IGlzT3V0Ym91bmQgPyAtdHhuLmV2ZW50QW1vdW50IDogdHhuLmV2ZW50QW1vdW50LFxuICAgICAgZGVzY3JpcHRpb246IHR4bi5hY3Rpdml0eURlc2NyaXB0aW9uIHx8ICcnLFxuICAgICAgc3RhdHVzOiB0eG4uc2VyaWFsTnVtYmVyID09PSAwID8gVHJhbnNhY3Rpb25TdGF0dXNlcy5QZW5kaW5nIDogVHJhbnNhY3Rpb25TdGF0dXNlcy5Db21wbGV0ZWQsXG4gICAgICBtZW1vLFxuICAgIH07XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0UmVzdENvbnRleHQocGFnZTogUGFnZSkge1xuICBhd2FpdCB3YWl0VW50aWwoYXN5bmMgKCkgPT4ge1xuICAgIHJldHVybiBwYWdlLmV2YWx1YXRlKCgpID0+ICEhd2luZG93LmJuaHBBcHApO1xuICB9LCAnd2FpdGluZyBmb3IgYXBwIGRhdGEgbG9hZCcpO1xuXG4gIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHBhZ2UuZXZhbHVhdGUoKCkgPT4ge1xuICAgIHJldHVybiB3aW5kb3cuYm5ocEFwcC5yZXN0Q29udGV4dDtcbiAgfSk7XG5cbiAgcmV0dXJuIHJlc3VsdC5zbGljZSgxKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZmV0Y2hQb2FsaW1YU1JGV2l0aGluUGFnZShwYWdlOiBQYWdlLCB1cmw6IHN0cmluZywgcGFnZVV1aWQ6IHN0cmluZyk6IFByb21pc2U8RmV0Y2hlZEFjY291bnRUcmFuc2FjdGlvbnNEYXRhIHwgbnVsbD4ge1xuICBjb25zdCBjb29raWVzID0gYXdhaXQgcGFnZS5jb29raWVzKCk7XG4gIGNvbnN0IFhTUkZDb29raWUgPSBjb29raWVzLmZpbmQoKGNvb2tpZSkgPT4gY29va2llLm5hbWUgPT09ICdYU1JGLVRPS0VOJyk7XG4gIGNvbnN0IGhlYWRlcnM6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcbiAgaWYgKFhTUkZDb29raWUgIT0gbnVsbCkge1xuICAgIGhlYWRlcnNbJ1gtWFNSRi1UT0tFTiddID0gWFNSRkNvb2tpZS52YWx1ZTtcbiAgfVxuICBoZWFkZXJzLnBhZ2VVdWlkID0gcGFnZVV1aWQ7XG4gIGhlYWRlcnMudXVpZCA9IHV1aWQ0KCk7XG4gIGhlYWRlcnNbJ0NvbnRlbnQtVHlwZSddID0gJ2FwcGxpY2F0aW9uL2pzb247Y2hhcnNldD1VVEYtOCc7XG4gIHJldHVybiBmZXRjaFBvc3RXaXRoaW5QYWdlPEZldGNoZWRBY2NvdW50VHJhbnNhY3Rpb25zRGF0YT4ocGFnZSwgdXJsLCBbXSwgaGVhZGVycyk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGZldGNoQWNjb3VudERhdGEocGFnZTogUGFnZSwgYmFzZVVybDogc3RyaW5nLCBvcHRpb25zOiBTY2FwZXJPcHRpb25zKSB7XG4gIGNvbnN0IHJlc3RDb250ZXh0ID0gYXdhaXQgZ2V0UmVzdENvbnRleHQocGFnZSk7XG4gIGNvbnN0IGFwaVNpdGVVcmwgPSBgJHtiYXNlVXJsfS8ke3Jlc3RDb250ZXh0fWA7XG4gIGNvbnN0IGFjY291bnREYXRhVXJsID0gYCR7YmFzZVVybH0vU2VydmVyU2VydmljZXMvZ2VuZXJhbC9hY2NvdW50c2A7XG4gIGNvbnN0IGFjY291bnRzSW5mbyA9IGF3YWl0IGZldGNoR2V0V2l0aGluUGFnZTxGZXRjaGVkQWNjb3VudERhdGE+KHBhZ2UsIGFjY291bnREYXRhVXJsKSB8fCBbXTtcblxuICBjb25zdCBkZWZhdWx0U3RhcnRNb21lbnQgPSBtb21lbnQoKS5zdWJ0cmFjdCgxLCAneWVhcnMnKS5hZGQoMSwgJ2RheScpO1xuICBjb25zdCBzdGFydERhdGUgPSBvcHRpb25zLnN0YXJ0RGF0ZSB8fCBkZWZhdWx0U3RhcnRNb21lbnQudG9EYXRlKCk7XG4gIGNvbnN0IHN0YXJ0TW9tZW50ID0gbW9tZW50Lm1heChkZWZhdWx0U3RhcnRNb21lbnQsIG1vbWVudChzdGFydERhdGUpKTtcblxuICBjb25zdCBzdGFydERhdGVTdHIgPSBzdGFydE1vbWVudC5mb3JtYXQoREFURV9GT1JNQVQpO1xuICBjb25zdCBlbmREYXRlU3RyID0gbW9tZW50KCkuZm9ybWF0KERBVEVfRk9STUFUKTtcblxuICBjb25zdCBhY2NvdW50czogVHJhbnNhY3Rpb25zQWNjb3VudFtdID0gW107XG4gIGZvciAobGV0IGFjY291bnRJbmRleCA9IDA7IGFjY291bnRJbmRleCA8IGFjY291bnRzSW5mby5sZW5ndGg7IGFjY291bnRJbmRleCArPSAxKSB7XG4gICAgY29uc3QgYWNjb3VudE51bWJlciA9IGAke2FjY291bnRzSW5mb1thY2NvdW50SW5kZXhdLmJhbmtOdW1iZXJ9LSR7YWNjb3VudHNJbmZvW2FjY291bnRJbmRleF0uYnJhbmNoTnVtYmVyfS0ke2FjY291bnRzSW5mb1thY2NvdW50SW5kZXhdLmFjY291bnROdW1iZXJ9YDtcblxuICAgIGNvbnN0IGJhbGFuY2VBbmRDcmVkaXRMaW1pdFVybCA9IGAke2FwaVNpdGVVcmx9L2N1cnJlbnQtYWNjb3VudC9jb21wb3NpdGUvYmFsYW5jZUFuZENyZWRpdExpbWl0P2FjY291bnRJZD0ke2FjY291bnROdW1iZXJ9JnZpZXc9ZGV0YWlscyZsYW5nPWhlYDtcbiAgICBjb25zdCBiYWxhbmNlQW5kQ3JlZGl0TGltaXQgPSBhd2FpdCBmZXRjaEdldFdpdGhpblBhZ2UocGFnZSwgYmFsYW5jZUFuZENyZWRpdExpbWl0VXJsKSBhcyBCYWxhbmNlQW5kQ3JlZGl0TGltaXQ7XG4gICAgY29uc3QgYmFsYW5jZTogbnVtYmVyID0gYmFsYW5jZUFuZENyZWRpdExpbWl0Py5jdXJyZW50QmFsYW5jZTtcblxuICAgIGNvbnN0IHR4bnNVcmwgPSBgJHthcGlTaXRlVXJsfS9jdXJyZW50LWFjY291bnQvdHJhbnNhY3Rpb25zP2FjY291bnRJZD0ke2FjY291bnROdW1iZXJ9Jm51bUl0ZW1zUGVyUGFnZT0xNTAmcmV0cmlldmFsRW5kRGF0ZT0ke2VuZERhdGVTdHJ9JnJldHJpZXZhbFN0YXJ0RGF0ZT0ke3N0YXJ0RGF0ZVN0cn0mc29ydENvZGU9MWA7XG4gICAgY29uc3QgdHhuc1Jlc3VsdCA9IGF3YWl0IGZldGNoUG9hbGltWFNSRldpdGhpblBhZ2UocGFnZSwgdHhuc1VybCwgJy9jdXJyZW50LWFjY291bnQvdHJhbnNhY3Rpb25zJyk7XG4gICAgbGV0IHR4bnM6IFRyYW5zYWN0aW9uW10gPSBbXTtcblxuICAgIGlmICh0eG5zUmVzdWx0KSB7XG4gICAgICB0eG5zID0gY29udmVydFRyYW5zYWN0aW9ucyh0eG5zUmVzdWx0LnRyYW5zYWN0aW9ucyk7XG4gICAgfVxuXG4gICAgYWNjb3VudHMucHVzaCh7XG4gICAgICBhY2NvdW50TnVtYmVyLFxuICAgICAgYmFsYW5jZSxcbiAgICAgIHR4bnMsXG4gICAgfSk7XG4gIH1cblxuICBjb25zdCBhY2NvdW50RGF0YSA9IHtcbiAgICBzdWNjZXNzOiB0cnVlLFxuICAgIGFjY291bnRzLFxuICB9O1xuXG4gIHJldHVybiBhY2NvdW50RGF0YTtcbn1cblxuZnVuY3Rpb24gZ2V0UG9zc2libGVMb2dpblJlc3VsdHMoYmFzZVVybDogc3RyaW5nKSB7XG4gIGNvbnN0IHVybHM6IFBvc3NpYmxlTG9naW5SZXN1bHRzID0ge307XG4gIHVybHNbTG9naW5SZXN1bHRzLlN1Y2Nlc3NdID0gW1xuICAgIGAke2Jhc2VVcmx9L3BvcnRhbHNlcnZlci9Ib21lUGFnZWAsXG4gICAgYCR7YmFzZVVybH0vbmctcG9ydGFscy1idC9yYi9oZS9ob21lcGFnZWAsXG4gICAgYCR7YmFzZVVybH0vbmctcG9ydGFscy9yYi9oZS9ob21lcGFnZWBdO1xuICB1cmxzW0xvZ2luUmVzdWx0cy5JbnZhbGlkUGFzc3dvcmRdID0gW2Ake2Jhc2VVcmx9L0FVVEhFTlRJQ0FURS9MT0dPTj9mbG93PUFVVEhFTlRJQ0FURSZzdGF0ZT1MT0dPTiZlcnJvcmNvZGU9MS42JmNhbGxtZT1mYWxzZWBdO1xuICB1cmxzW0xvZ2luUmVzdWx0cy5DaGFuZ2VQYXNzd29yZF0gPSBbXG4gICAgYCR7YmFzZVVybH0vTUNQL1NUQVJUP2Zsb3c9TUNQJnN0YXRlPVNUQVJUJmV4cGlyZWREYXRlPW51bGxgLFxuICAgIC9cXC9BQk9VVFRPRVhQSVJFXFwvU1RBUlQvaSxcbiAgXTtcbiAgcmV0dXJuIHVybHM7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUxvZ2luRmllbGRzKGNyZWRlbnRpYWxzOiBTY3JhcGVyQ3JlZGVudGlhbHMpIHtcbiAgcmV0dXJuIFtcbiAgICB7IHNlbGVjdG9yOiAnI3VzZXJDb2RlJywgdmFsdWU6IGNyZWRlbnRpYWxzLnVzZXJDb2RlIH0sXG4gICAgeyBzZWxlY3RvcjogJyNwYXNzd29yZCcsIHZhbHVlOiBjcmVkZW50aWFscy5wYXNzd29yZCB9LFxuICBdO1xufVxuXG5jbGFzcyBIYXBvYWxpbVNjcmFwZXIgZXh0ZW5kcyBCYXNlU2NyYXBlcldpdGhCcm93c2VyIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNsYXNzLW1ldGhvZHMtdXNlLXRoaXNcbiAgZ2V0IGJhc2VVcmwoKSB7XG4gICAgcmV0dXJuICdodHRwczovL2xvZ2luLmJhbmtoYXBvYWxpbS5jby5pbCc7XG4gIH1cblxuICBnZXRMb2dpbk9wdGlvbnMoY3JlZGVudGlhbHM6IFNjcmFwZXJDcmVkZW50aWFscykge1xuICAgIHJldHVybiB7XG4gICAgICBsb2dpblVybDogYCR7dGhpcy5iYXNlVXJsfS9jZ2ktYmluL3BvYWx3d3djP3JlcU5hbWU9Z2V0TG9nb25QYWdlYCxcbiAgICAgIGZpZWxkczogY3JlYXRlTG9naW5GaWVsZHMoY3JlZGVudGlhbHMpLFxuICAgICAgc3VibWl0QnV0dG9uU2VsZWN0b3I6ICcubG9naW4tYnRuJyxcbiAgICAgIHBvc3RBY3Rpb246IGFzeW5jICgpID0+IHdhaXRGb3JSZWRpcmVjdCh0aGlzLnBhZ2UpLFxuICAgICAgcG9zc2libGVSZXN1bHRzOiBnZXRQb3NzaWJsZUxvZ2luUmVzdWx0cyh0aGlzLmJhc2VVcmwpLFxuICAgIH07XG4gIH1cblxuICBhc3luYyBmZXRjaERhdGEoKSB7XG4gICAgcmV0dXJuIGZldGNoQWNjb3VudERhdGEodGhpcy5wYWdlLCB0aGlzLmJhc2VVcmwsIHRoaXMub3B0aW9ucyk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgSGFwb2FsaW1TY3JhcGVyO1xuIl19
|
|
208
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JhcGVycy9oYXBvYWxpbS50cyJdLCJuYW1lcyI6WyJkZWJ1ZyIsIkRBVEVfRk9STUFUIiwiY29udmVydFRyYW5zYWN0aW9ucyIsInR4bnMiLCJtYXAiLCJ0eG4iLCJpc091dGJvdW5kIiwiZXZlbnRBY3Rpdml0eVR5cGVDb2RlIiwibWVtbyIsImJlbmVmaWNpYXJ5RGV0YWlsc0RhdGEiLCJwYXJ0eUhlYWRsaW5lIiwicGFydHlOYW1lIiwibWVzc2FnZUhlYWRsaW5lIiwibWVzc2FnZURldGFpbCIsIm1lbW9MaW5lcyIsInB1c2giLCJsZW5ndGgiLCJqb2luIiwicmVzdWx0IiwidHlwZSIsIlRyYW5zYWN0aW9uVHlwZXMiLCJOb3JtYWwiLCJpZGVudGlmaWVyIiwicmVmZXJlbmNlTnVtYmVyIiwiZGF0ZSIsImV2ZW50RGF0ZSIsInRvSVNPU3RyaW5nIiwicHJvY2Vzc2VkRGF0ZSIsInZhbHVlRGF0ZSIsIm9yaWdpbmFsQW1vdW50IiwiZXZlbnRBbW91bnQiLCJvcmlnaW5hbEN1cnJlbmN5IiwiY2hhcmdlZEFtb3VudCIsImRlc2NyaXB0aW9uIiwiYWN0aXZpdHlEZXNjcmlwdGlvbiIsInN0YXR1cyIsInNlcmlhbE51bWJlciIsIlRyYW5zYWN0aW9uU3RhdHVzZXMiLCJQZW5kaW5nIiwiQ29tcGxldGVkIiwiZ2V0UmVzdENvbnRleHQiLCJwYWdlIiwiZXZhbHVhdGUiLCJ3aW5kb3ciLCJibmhwQXBwIiwicmVzdENvbnRleHQiLCJzbGljZSIsImZldGNoUG9hbGltWFNSRldpdGhpblBhZ2UiLCJ1cmwiLCJwYWdlVXVpZCIsImNvb2tpZXMiLCJYU1JGQ29va2llIiwiZmluZCIsImNvb2tpZSIsIm5hbWUiLCJoZWFkZXJzIiwidmFsdWUiLCJ1dWlkIiwiZ2V0QWNjb3VudFRyYW5zYWN0aW9ucyIsImFwaVNpdGVVcmwiLCJhY2NvdW50TnVtYmVyIiwic3RhcnREYXRlIiwiZW5kRGF0ZSIsInR4bnNVcmwiLCJ0eG5zUmVzdWx0IiwidHJhbnNhY3Rpb25zIiwiZ2V0QWNjb3VudEJhbGFuY2UiLCJiYWxhbmNlQW5kQ3JlZGl0TGltaXRVcmwiLCJiYWxhbmNlQW5kQ3JlZGl0TGltaXQiLCJjdXJyZW50QmFsYW5jZSIsImZldGNoQWNjb3VudERhdGEiLCJiYXNlVXJsIiwib3B0aW9ucyIsImFjY291bnREYXRhVXJsIiwiYWNjb3VudHNJbmZvIiwiZGVmYXVsdFN0YXJ0TW9tZW50Iiwic3VidHJhY3QiLCJhZGQiLCJ0b0RhdGUiLCJzdGFydE1vbWVudCIsIm1vbWVudCIsIm1heCIsInN0YXJ0RGF0ZVN0ciIsImZvcm1hdCIsImVuZERhdGVTdHIiLCJhY2NvdW50cyIsImFjY291bnQiLCJiYWxhbmNlIiwiYmFua051bWJlciIsImJyYW5jaE51bWJlciIsImlzQWN0aXZlQWNjb3VudCIsImFjY291bnRDbG9zaW5nUmVhc29uQ29kZSIsImFjY291bnREYXRhIiwic3VjY2VzcyIsImdldFBvc3NpYmxlTG9naW5SZXN1bHRzIiwidXJscyIsIkxvZ2luUmVzdWx0cyIsIlN1Y2Nlc3MiLCJJbnZhbGlkUGFzc3dvcmQiLCJDaGFuZ2VQYXNzd29yZCIsImNyZWF0ZUxvZ2luRmllbGRzIiwiY3JlZGVudGlhbHMiLCJzZWxlY3RvciIsInVzZXJDb2RlIiwicGFzc3dvcmQiLCJIYXBvYWxpbVNjcmFwZXIiLCJCYXNlU2NyYXBlcldpdGhCcm93c2VyIiwiZ2V0TG9naW5PcHRpb25zIiwibG9naW5VcmwiLCJmaWVsZHMiLCJzdWJtaXRCdXR0b25TZWxlY3RvciIsInBvc3RBY3Rpb24iLCJwb3NzaWJsZVJlc3VsdHMiLCJmZXRjaERhdGEiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBR0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBSUE7Ozs7QUFFQSxNQUFNQSxLQUFLLEdBQUcscUJBQVMsVUFBVCxDQUFkO0FBRUEsTUFBTUMsV0FBVyxHQUFHLFVBQXBCLEMsQ0FFQTs7QUE2Q0EsU0FBU0MsbUJBQVQsQ0FBNkJDLElBQTdCLEVBQXdFO0FBQ3RFLFNBQU9BLElBQUksQ0FBQ0MsR0FBTCxDQUFVQyxHQUFELElBQVM7QUFDdkIsVUFBTUMsVUFBVSxHQUFHRCxHQUFHLENBQUNFLHFCQUFKLEtBQThCLENBQWpEO0FBRUEsUUFBSUMsSUFBSSxHQUFHLEVBQVg7O0FBQ0EsUUFBSUgsR0FBRyxDQUFDSSxzQkFBUixFQUFnQztBQUM5QixZQUFNO0FBQ0pDLFFBQUFBLGFBREk7QUFFSkMsUUFBQUEsU0FGSTtBQUdKQyxRQUFBQSxlQUhJO0FBSUpDLFFBQUFBO0FBSkksVUFLRlIsR0FBRyxDQUFDSSxzQkFMUjtBQU1BLFlBQU1LLFNBQW1CLEdBQUcsRUFBNUI7O0FBQ0EsVUFBSUosYUFBSixFQUFtQjtBQUNqQkksUUFBQUEsU0FBUyxDQUFDQyxJQUFWLENBQWVMLGFBQWY7QUFDRDs7QUFFRCxVQUFJQyxTQUFKLEVBQWU7QUFDYkcsUUFBQUEsU0FBUyxDQUFDQyxJQUFWLENBQWdCLEdBQUVKLFNBQVUsR0FBNUI7QUFDRDs7QUFFRCxVQUFJQyxlQUFKLEVBQXFCO0FBQ25CRSxRQUFBQSxTQUFTLENBQUNDLElBQVYsQ0FBZUgsZUFBZjtBQUNEOztBQUVELFVBQUlDLGFBQUosRUFBbUI7QUFDakJDLFFBQUFBLFNBQVMsQ0FBQ0MsSUFBVixDQUFnQixHQUFFRixhQUFjLEdBQWhDO0FBQ0Q7O0FBRUQsVUFBSUMsU0FBUyxDQUFDRSxNQUFkLEVBQXNCO0FBQ3BCUixRQUFBQSxJQUFJLEdBQUdNLFNBQVMsQ0FBQ0csSUFBVixDQUFlLEdBQWYsQ0FBUDtBQUNEO0FBQ0Y7O0FBRUQsVUFBTUMsTUFBbUIsR0FBRztBQUMxQkMsTUFBQUEsSUFBSSxFQUFFQywrQkFBaUJDLE1BREc7QUFFMUJDLE1BQUFBLFVBQVUsRUFBRWpCLEdBQUcsQ0FBQ2tCLGVBRlU7QUFHMUJDLE1BQUFBLElBQUksRUFBRSxxQkFBT25CLEdBQUcsQ0FBQ29CLFNBQVgsRUFBc0J4QixXQUF0QixFQUFtQ3lCLFdBQW5DLEVBSG9CO0FBSTFCQyxNQUFBQSxhQUFhLEVBQUUscUJBQU90QixHQUFHLENBQUN1QixTQUFYLEVBQXNCM0IsV0FBdEIsRUFBbUN5QixXQUFuQyxFQUpXO0FBSzFCRyxNQUFBQSxjQUFjLEVBQUV2QixVQUFVLEdBQUcsQ0FBQ0QsR0FBRyxDQUFDeUIsV0FBUixHQUFzQnpCLEdBQUcsQ0FBQ3lCLFdBTDFCO0FBTTFCQyxNQUFBQSxnQkFBZ0IsRUFBRSxLQU5RO0FBTzFCQyxNQUFBQSxhQUFhLEVBQUUxQixVQUFVLEdBQUcsQ0FBQ0QsR0FBRyxDQUFDeUIsV0FBUixHQUFzQnpCLEdBQUcsQ0FBQ3lCLFdBUHpCO0FBUTFCRyxNQUFBQSxXQUFXLEVBQUU1QixHQUFHLENBQUM2QixtQkFBSixJQUEyQixFQVJkO0FBUzFCQyxNQUFBQSxNQUFNLEVBQUU5QixHQUFHLENBQUMrQixZQUFKLEtBQXFCLENBQXJCLEdBQXlCQyxrQ0FBb0JDLE9BQTdDLEdBQXVERCxrQ0FBb0JFLFNBVHpEO0FBVTFCL0IsTUFBQUE7QUFWMEIsS0FBNUI7QUFhQSxXQUFPVSxNQUFQO0FBQ0QsR0EvQ00sQ0FBUDtBQWdERDs7QUFFRCxlQUFlc0IsY0FBZixDQUE4QkMsSUFBOUIsRUFBMEM7QUFDeEMsUUFBTSx3QkFBVSxZQUFZO0FBQzFCLFdBQU9BLElBQUksQ0FBQ0MsUUFBTCxDQUFjLE1BQU0sQ0FBQyxDQUFDQyxNQUFNLENBQUNDLE9BQTdCLENBQVA7QUFDRCxHQUZLLEVBRUgsMkJBRkcsQ0FBTjtBQUlBLFFBQU0xQixNQUFNLEdBQUcsTUFBTXVCLElBQUksQ0FBQ0MsUUFBTCxDQUFjLE1BQU07QUFDdkMsV0FBT0MsTUFBTSxDQUFDQyxPQUFQLENBQWVDLFdBQXRCO0FBQ0QsR0FGb0IsQ0FBckI7QUFJQSxTQUFPM0IsTUFBTSxDQUFDNEIsS0FBUCxDQUFhLENBQWIsQ0FBUDtBQUNEOztBQUVELGVBQWVDLHlCQUFmLENBQXlDTixJQUF6QyxFQUFxRE8sR0FBckQsRUFBa0VDLFFBQWxFLEVBQW9JO0FBQ2xJLFFBQU1DLE9BQU8sR0FBRyxNQUFNVCxJQUFJLENBQUNTLE9BQUwsRUFBdEI7QUFDQSxRQUFNQyxVQUFVLEdBQUdELE9BQU8sQ0FBQ0UsSUFBUixDQUFjQyxNQUFELElBQVlBLE1BQU0sQ0FBQ0MsSUFBUCxLQUFnQixZQUF6QyxDQUFuQjtBQUNBLFFBQU1DLE9BQTRCLEdBQUcsRUFBckM7O0FBQ0EsTUFBSUosVUFBVSxJQUFJLElBQWxCLEVBQXdCO0FBQ3RCSSxJQUFBQSxPQUFPLENBQUMsY0FBRCxDQUFQLEdBQTBCSixVQUFVLENBQUNLLEtBQXJDO0FBQ0Q7O0FBQ0RELEVBQUFBLE9BQU8sQ0FBQ04sUUFBUixHQUFtQkEsUUFBbkI7QUFDQU0sRUFBQUEsT0FBTyxDQUFDRSxJQUFSLEdBQWUsaUJBQWY7QUFDQUYsRUFBQUEsT0FBTyxDQUFDLGNBQUQsQ0FBUCxHQUEwQixnQ0FBMUI7QUFDQSxTQUFPLGdDQUFvRGQsSUFBcEQsRUFBMERPLEdBQTFELEVBQStELEVBQS9ELEVBQW1FTyxPQUFuRSxDQUFQO0FBQ0Q7O0FBRUQsZUFBZUcsc0JBQWYsQ0FBc0NDLFVBQXRDLEVBQTBEbEIsSUFBMUQsRUFBc0VtQixhQUF0RSxFQUE2RkMsU0FBN0YsRUFBZ0hDLE9BQWhILEVBQWlJO0FBQUE7O0FBQy9ILFFBQU1DLE9BQU8sR0FBSSxHQUFFSixVQUFXLDJDQUEwQ0MsYUFBYyx5Q0FBd0NFLE9BQVEsdUJBQXNCRCxTQUFVLGFBQXRLO0FBQ0EsUUFBTUcsVUFBVSxHQUFHLE1BQU1qQix5QkFBeUIsQ0FBQ04sSUFBRCxFQUFPc0IsT0FBUCxFQUFnQiwrQkFBaEIsQ0FBbEQ7QUFFQSxTQUFPN0QsbUJBQW1CLDBCQUFDOEQsVUFBRCxhQUFDQSxVQUFELHVCQUFDQSxVQUFVLENBQUVDLFlBQWIseUVBQTZCLEVBQTdCLENBQTFCO0FBQ0Q7O0FBRUQsZUFBZUMsaUJBQWYsQ0FBaUNQLFVBQWpDLEVBQXFEbEIsSUFBckQsRUFBaUVtQixhQUFqRSxFQUF3RjtBQUN0RixRQUFNTyx3QkFBd0IsR0FBSSxHQUFFUixVQUFXLDhEQUE2REMsYUFBYyx1QkFBMUg7QUFDQSxRQUFNUSxxQkFBcUIsR0FBRyxNQUFNLCtCQUEwQzNCLElBQTFDLEVBQWdEMEIsd0JBQWhELENBQXBDO0FBRUEsU0FBT0MscUJBQVAsYUFBT0EscUJBQVAsdUJBQU9BLHFCQUFxQixDQUFFQyxjQUE5QjtBQUNEOztBQUVELGVBQWVDLGdCQUFmLENBQWdDN0IsSUFBaEMsRUFBNEM4QixPQUE1QyxFQUE2REMsT0FBN0QsRUFBcUY7QUFDbkYsUUFBTTNCLFdBQVcsR0FBRyxNQUFNTCxjQUFjLENBQUNDLElBQUQsQ0FBeEM7QUFDQSxRQUFNa0IsVUFBVSxHQUFJLEdBQUVZLE9BQVEsSUFBRzFCLFdBQVksRUFBN0M7QUFDQSxRQUFNNEIsY0FBYyxHQUFJLEdBQUVGLE9BQVEsa0NBQWxDO0FBRUF2RSxFQUFBQSxLQUFLLENBQUMsd0JBQUQsQ0FBTDtBQUNBLFFBQU0wRSxZQUFZLEdBQUcsT0FBTSwrQkFBdUNqQyxJQUF2QyxFQUE2Q2dDLGNBQTdDLENBQU4sS0FBc0UsRUFBM0Y7QUFDQXpFLEVBQUFBLEtBQUssQ0FBQyw0Q0FBRCxFQUErQzBFLFlBQVksQ0FBQzFELE1BQTVELENBQUw7QUFFQSxRQUFNMkQsa0JBQWtCLEdBQUcsdUJBQVNDLFFBQVQsQ0FBa0IsQ0FBbEIsRUFBcUIsT0FBckIsRUFBOEJDLEdBQTlCLENBQWtDLENBQWxDLEVBQXFDLEtBQXJDLENBQTNCO0FBQ0EsUUFBTWhCLFNBQVMsR0FBR1csT0FBTyxDQUFDWCxTQUFSLElBQXFCYyxrQkFBa0IsQ0FBQ0csTUFBbkIsRUFBdkM7O0FBQ0EsUUFBTUMsV0FBVyxHQUFHQyxnQkFBT0MsR0FBUCxDQUFXTixrQkFBWCxFQUErQixxQkFBT2QsU0FBUCxDQUEvQixDQUFwQjs7QUFFQSxRQUFNcUIsWUFBWSxHQUFHSCxXQUFXLENBQUNJLE1BQVosQ0FBbUJsRixXQUFuQixDQUFyQjtBQUNBLFFBQU1tRixVQUFVLEdBQUcsdUJBQVNELE1BQVQsQ0FBZ0JsRixXQUFoQixDQUFuQjtBQUVBLFFBQU1vRixRQUErQixHQUFHLEVBQXhDOztBQUVBLE9BQUssTUFBTUMsT0FBWCxJQUFzQlosWUFBdEIsRUFBb0M7QUFDbEMsUUFBSWEsT0FBSjtBQUNBLFVBQU0zQixhQUFhLEdBQUksR0FBRTBCLE9BQU8sQ0FBQ0UsVUFBVyxJQUFHRixPQUFPLENBQUNHLFlBQWEsSUFBR0gsT0FBTyxDQUFDMUIsYUFBYyxFQUE3RjtBQUVBLFVBQU04QixlQUFlLEdBQUdKLE9BQU8sQ0FBQ0ssd0JBQVIsS0FBcUMsQ0FBN0Q7O0FBQ0EsUUFBSUQsZUFBSixFQUFxQjtBQUNuQkgsTUFBQUEsT0FBTyxHQUFHLE1BQU1yQixpQkFBaUIsQ0FBQ1AsVUFBRCxFQUFhbEIsSUFBYixFQUFtQm1CLGFBQW5CLENBQWpDO0FBQ0QsS0FGRCxNQUVPO0FBQ0w1RCxNQUFBQSxLQUFLLENBQUMsa0VBQUQsQ0FBTDtBQUNEOztBQUVELFVBQU1HLElBQUksR0FBRyxNQUFNdUQsc0JBQXNCLENBQUNDLFVBQUQsRUFBYWxCLElBQWIsRUFBbUJtQixhQUFuQixFQUFrQ3NCLFlBQWxDLEVBQWdERSxVQUFoRCxDQUF6QztBQUVBQyxJQUFBQSxRQUFRLENBQUN0RSxJQUFULENBQWM7QUFDWjZDLE1BQUFBLGFBRFk7QUFFWjJCLE1BQUFBLE9BRlk7QUFHWnBGLE1BQUFBO0FBSFksS0FBZDtBQUtEOztBQUVELFFBQU15RixXQUFXLEdBQUc7QUFDbEJDLElBQUFBLE9BQU8sRUFBRSxJQURTO0FBRWxCUixJQUFBQTtBQUZrQixHQUFwQjtBQUlBckYsRUFBQUEsS0FBSyxDQUFDLGdCQUFELENBQUw7QUFDQSxTQUFPNEYsV0FBUDtBQUNEOztBQUVELFNBQVNFLHVCQUFULENBQWlDdkIsT0FBakMsRUFBa0Q7QUFDaEQsUUFBTXdCLElBQTBCLEdBQUcsRUFBbkM7QUFDQUEsRUFBQUEsSUFBSSxDQUFDQyxxQ0FBYUMsT0FBZCxDQUFKLEdBQTZCLENBQzFCLEdBQUUxQixPQUFRLHdCQURnQixFQUUxQixHQUFFQSxPQUFRLCtCQUZnQixFQUcxQixHQUFFQSxPQUFRLDRCQUhnQixDQUE3QjtBQUlBd0IsRUFBQUEsSUFBSSxDQUFDQyxxQ0FBYUUsZUFBZCxDQUFKLEdBQXFDLENBQUUsR0FBRTNCLE9BQVEsOEVBQVosQ0FBckM7QUFDQXdCLEVBQUFBLElBQUksQ0FBQ0MscUNBQWFHLGNBQWQsQ0FBSixHQUFvQyxDQUNqQyxHQUFFNUIsT0FBUSxrREFEdUIsRUFFbEMseUJBRmtDLENBQXBDO0FBSUEsU0FBT3dCLElBQVA7QUFDRDs7QUFFRCxTQUFTSyxpQkFBVCxDQUEyQkMsV0FBM0IsRUFBNEQ7QUFDMUQsU0FBTyxDQUNMO0FBQUVDLElBQUFBLFFBQVEsRUFBRSxXQUFaO0FBQXlCOUMsSUFBQUEsS0FBSyxFQUFFNkMsV0FBVyxDQUFDRTtBQUE1QyxHQURLLEVBRUw7QUFBRUQsSUFBQUEsUUFBUSxFQUFFLFdBQVo7QUFBeUI5QyxJQUFBQSxLQUFLLEVBQUU2QyxXQUFXLENBQUNHO0FBQTVDLEdBRkssQ0FBUDtBQUlEOztBQUVELE1BQU1DLGVBQU4sU0FBOEJDLDhDQUE5QixDQUFxRDtBQUNuRDtBQUNBLE1BQUluQyxPQUFKLEdBQWM7QUFDWixXQUFPLGtDQUFQO0FBQ0Q7O0FBRURvQyxFQUFBQSxlQUFlLENBQUNOLFdBQUQsRUFBa0M7QUFDL0MsV0FBTztBQUNMTyxNQUFBQSxRQUFRLEVBQUcsR0FBRSxLQUFLckMsT0FBUSx3Q0FEckI7QUFFTHNDLE1BQUFBLE1BQU0sRUFBRVQsaUJBQWlCLENBQUNDLFdBQUQsQ0FGcEI7QUFHTFMsTUFBQUEsb0JBQW9CLEVBQUUsWUFIakI7QUFJTEMsTUFBQUEsVUFBVSxFQUFFLFlBQVksaUNBQWdCLEtBQUt0RSxJQUFyQixDQUpuQjtBQUtMdUUsTUFBQUEsZUFBZSxFQUFFbEIsdUJBQXVCLENBQUMsS0FBS3ZCLE9BQU47QUFMbkMsS0FBUDtBQU9EOztBQUVELFFBQU0wQyxTQUFOLEdBQWtCO0FBQ2hCLFdBQU8zQyxnQkFBZ0IsQ0FBQyxLQUFLN0IsSUFBTixFQUFZLEtBQUs4QixPQUFqQixFQUEwQixLQUFLQyxPQUEvQixDQUF2QjtBQUNEOztBQWxCa0Q7O2VBcUJ0Q2lDLGUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgdXVpZDQgZnJvbSAndXVpZC92NCc7XG5cbmltcG9ydCB7IFBhZ2UgfSBmcm9tICdwdXBwZXRlZXInO1xuaW1wb3J0IHsgQmFzZVNjcmFwZXJXaXRoQnJvd3NlciwgTG9naW5SZXN1bHRzLCBQb3NzaWJsZUxvZ2luUmVzdWx0cyB9IGZyb20gJy4vYmFzZS1zY3JhcGVyLXdpdGgtYnJvd3Nlcic7XG5pbXBvcnQgeyB3YWl0Rm9yUmVkaXJlY3QgfSBmcm9tICcuLi9oZWxwZXJzL25hdmlnYXRpb24nO1xuaW1wb3J0IHsgd2FpdFVudGlsIH0gZnJvbSAnLi4vaGVscGVycy93YWl0aW5nJztcbmltcG9ydCB7IGZldGNoR2V0V2l0aGluUGFnZSwgZmV0Y2hQb3N0V2l0aGluUGFnZSB9IGZyb20gJy4uL2hlbHBlcnMvZmV0Y2gnO1xuaW1wb3J0IHtcbiAgVHJhbnNhY3Rpb25zQWNjb3VudCwgVHJhbnNhY3Rpb24sIFRyYW5zYWN0aW9uU3RhdHVzZXMsIFRyYW5zYWN0aW9uVHlwZXMsXG59IGZyb20gJy4uL3RyYW5zYWN0aW9ucyc7XG5pbXBvcnQgeyBTY2FwZXJPcHRpb25zLCBTY3JhcGVyQ3JlZGVudGlhbHMgfSBmcm9tICcuL2Jhc2Utc2NyYXBlcic7XG5pbXBvcnQgeyBnZXREZWJ1ZyB9IGZyb20gJy4uL2hlbHBlcnMvZGVidWcnO1xuXG5jb25zdCBkZWJ1ZyA9IGdldERlYnVnKCdoYXBvYWxpbScpO1xuXG5jb25zdCBEQVRFX0ZPUk1BVCA9ICdZWVlZTU1ERCc7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbmFtZXNwYWNlXG5kZWNsYXJlIG5hbWVzcGFjZSB3aW5kb3cge1xuICBjb25zdCBibmhwQXBwOiBhbnk7XG59XG5cbmludGVyZmFjZSBTY3JhcGVkVHJhbnNhY3Rpb24ge1xuICBzZXJpYWxOdW1iZXI/OiBudW1iZXI7XG4gIGFjdGl2aXR5RGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIGV2ZW50QW1vdW50OiBudW1iZXI7XG4gIHZhbHVlRGF0ZT86IHN0cmluZztcbiAgZXZlbnREYXRlPzogc3RyaW5nO1xuICByZWZlcmVuY2VOdW1iZXI/OiBudW1iZXI7XG4gIFNjcmFwZWRUcmFuc2FjdGlvbj86IHN0cmluZztcbiAgZXZlbnRBY3Rpdml0eVR5cGVDb2RlOiBudW1iZXI7XG4gIGN1cnJlbnRCYWxhbmNlOiBudW1iZXI7XG4gIGJlbmVmaWNpYXJ5RGV0YWlsc0RhdGE/OiB7XG4gICAgcGFydHlIZWFkbGluZT86IHN0cmluZztcbiAgICBwYXJ0eU5hbWU/OiBzdHJpbmc7XG4gICAgbWVzc2FnZUhlYWRsaW5lPzogc3RyaW5nO1xuICAgIG1lc3NhZ2VEZXRhaWw/OiBzdHJpbmc7XG4gIH07XG59XG5cbnR5cGUgRmV0Y2hlZEFjY291bnREYXRhID0ge1xuICBiYW5rTnVtYmVyOiBzdHJpbmc7XG4gIGFjY291bnROdW1iZXI6IHN0cmluZztcbiAgYnJhbmNoTnVtYmVyOiBzdHJpbmc7XG4gIGFjY291bnRDbG9zaW5nUmVhc29uQ29kZTogbnVtYmVyO1xufVtdO1xuXG50eXBlIEZldGNoZWRBY2NvdW50VHJhbnNhY3Rpb25zRGF0YSA9IHtcbiAgdHJhbnNhY3Rpb25zOiBTY3JhcGVkVHJhbnNhY3Rpb25bXTtcbn07XG5cbnR5cGUgQmFsYW5jZUFuZENyZWRpdExpbWl0ID0ge1xuICBjcmVkaXRMaW1pdEFtb3VudDogbnVtYmVyO1xuICBjcmVkaXRMaW1pdERlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIGNyZWRpdExpbWl0VXRpbGl6YXRpb25BbW91bnQ6IG51bWJlcjtcbiAgY3JlZGl0TGltaXRVdGlsaXphdGlvbkV4aXN0YW5jZUNvZGU6IG51bWJlcjtcbiAgY3JlZGl0TGltaXRVdGlsaXphdGlvblBlcmNlbnQ6IG51bWJlcjtcbiAgY3VycmVudEFjY291bnRMaW1pdHNBbW91bnQ6IG51bWJlcjtcbiAgY3VycmVudEJhbGFuY2U6IG51bWJlcjtcbiAgd2l0aGRyYXdhbEJhbGFuY2U6IG51bWJlcjtcbn07XG5cbmZ1bmN0aW9uIGNvbnZlcnRUcmFuc2FjdGlvbnModHhuczogU2NyYXBlZFRyYW5zYWN0aW9uW10pOiBUcmFuc2FjdGlvbltdIHtcbiAgcmV0dXJuIHR4bnMubWFwKCh0eG4pID0+IHtcbiAgICBjb25zdCBpc091dGJvdW5kID0gdHhuLmV2ZW50QWN0aXZpdHlUeXBlQ29kZSA9PT0gMjtcblxuICAgIGxldCBtZW1vID0gJyc7XG4gICAgaWYgKHR4bi5iZW5lZmljaWFyeURldGFpbHNEYXRhKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHBhcnR5SGVhZGxpbmUsXG4gICAgICAgIHBhcnR5TmFtZSxcbiAgICAgICAgbWVzc2FnZUhlYWRsaW5lLFxuICAgICAgICBtZXNzYWdlRGV0YWlsLFxuICAgICAgfSA9IHR4bi5iZW5lZmljaWFyeURldGFpbHNEYXRhO1xuICAgICAgY29uc3QgbWVtb0xpbmVzOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgaWYgKHBhcnR5SGVhZGxpbmUpIHtcbiAgICAgICAgbWVtb0xpbmVzLnB1c2gocGFydHlIZWFkbGluZSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChwYXJ0eU5hbWUpIHtcbiAgICAgICAgbWVtb0xpbmVzLnB1c2goYCR7cGFydHlOYW1lfS5gKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG1lc3NhZ2VIZWFkbGluZSkge1xuICAgICAgICBtZW1vTGluZXMucHVzaChtZXNzYWdlSGVhZGxpbmUpO1xuICAgICAgfVxuXG4gICAgICBpZiAobWVzc2FnZURldGFpbCkge1xuICAgICAgICBtZW1vTGluZXMucHVzaChgJHttZXNzYWdlRGV0YWlsfS5gKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG1lbW9MaW5lcy5sZW5ndGgpIHtcbiAgICAgICAgbWVtbyA9IG1lbW9MaW5lcy5qb2luKCcgJyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0OiBUcmFuc2FjdGlvbiA9IHtcbiAgICAgIHR5cGU6IFRyYW5zYWN0aW9uVHlwZXMuTm9ybWFsLFxuICAgICAgaWRlbnRpZmllcjogdHhuLnJlZmVyZW5jZU51bWJlcixcbiAgICAgIGRhdGU6IG1vbWVudCh0eG4uZXZlbnREYXRlLCBEQVRFX0ZPUk1BVCkudG9JU09TdHJpbmcoKSxcbiAgICAgIHByb2Nlc3NlZERhdGU6IG1vbWVudCh0eG4udmFsdWVEYXRlLCBEQVRFX0ZPUk1BVCkudG9JU09TdHJpbmcoKSxcbiAgICAgIG9yaWdpbmFsQW1vdW50OiBpc091dGJvdW5kID8gLXR4bi5ldmVudEFtb3VudCA6IHR4bi5ldmVudEFtb3VudCxcbiAgICAgIG9yaWdpbmFsQ3VycmVuY3k6ICdJTFMnLFxuICAgICAgY2hhcmdlZEFtb3VudDogaXNPdXRib3VuZCA/IC10eG4uZXZlbnRBbW91bnQgOiB0eG4uZXZlbnRBbW91bnQsXG4gICAgICBkZXNjcmlwdGlvbjogdHhuLmFjdGl2aXR5RGVzY3JpcHRpb24gfHwgJycsXG4gICAgICBzdGF0dXM6IHR4bi5zZXJpYWxOdW1iZXIgPT09IDAgPyBUcmFuc2FjdGlvblN0YXR1c2VzLlBlbmRpbmcgOiBUcmFuc2FjdGlvblN0YXR1c2VzLkNvbXBsZXRlZCxcbiAgICAgIG1lbW8sXG4gICAgfTtcblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH0pO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRSZXN0Q29udGV4dChwYWdlOiBQYWdlKSB7XG4gIGF3YWl0IHdhaXRVbnRpbChhc3luYyAoKSA9PiB7XG4gICAgcmV0dXJuIHBhZ2UuZXZhbHVhdGUoKCkgPT4gISF3aW5kb3cuYm5ocEFwcCk7XG4gIH0sICd3YWl0aW5nIGZvciBhcHAgZGF0YSBsb2FkJyk7XG5cbiAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcGFnZS5ldmFsdWF0ZSgoKSA9PiB7XG4gICAgcmV0dXJuIHdpbmRvdy5ibmhwQXBwLnJlc3RDb250ZXh0O1xuICB9KTtcblxuICByZXR1cm4gcmVzdWx0LnNsaWNlKDEpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBmZXRjaFBvYWxpbVhTUkZXaXRoaW5QYWdlKHBhZ2U6IFBhZ2UsIHVybDogc3RyaW5nLCBwYWdlVXVpZDogc3RyaW5nKTogUHJvbWlzZTxGZXRjaGVkQWNjb3VudFRyYW5zYWN0aW9uc0RhdGEgfCBudWxsPiB7XG4gIGNvbnN0IGNvb2tpZXMgPSBhd2FpdCBwYWdlLmNvb2tpZXMoKTtcbiAgY29uc3QgWFNSRkNvb2tpZSA9IGNvb2tpZXMuZmluZCgoY29va2llKSA9PiBjb29raWUubmFtZSA9PT0gJ1hTUkYtVE9LRU4nKTtcbiAgY29uc3QgaGVhZGVyczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICBpZiAoWFNSRkNvb2tpZSAhPSBudWxsKSB7XG4gICAgaGVhZGVyc1snWC1YU1JGLVRPS0VOJ10gPSBYU1JGQ29va2llLnZhbHVlO1xuICB9XG4gIGhlYWRlcnMucGFnZVV1aWQgPSBwYWdlVXVpZDtcbiAgaGVhZGVycy51dWlkID0gdXVpZDQoKTtcbiAgaGVhZGVyc1snQ29udGVudC1UeXBlJ10gPSAnYXBwbGljYXRpb24vanNvbjtjaGFyc2V0PVVURi04JztcbiAgcmV0dXJuIGZldGNoUG9zdFdpdGhpblBhZ2U8RmV0Y2hlZEFjY291bnRUcmFuc2FjdGlvbnNEYXRhPihwYWdlLCB1cmwsIFtdLCBoZWFkZXJzKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0QWNjb3VudFRyYW5zYWN0aW9ucyhhcGlTaXRlVXJsOiBzdHJpbmcsIHBhZ2U6IFBhZ2UsIGFjY291bnROdW1iZXI6IHN0cmluZywgc3RhcnREYXRlOiBzdHJpbmcsIGVuZERhdGU6IHN0cmluZykge1xuICBjb25zdCB0eG5zVXJsID0gYCR7YXBpU2l0ZVVybH0vY3VycmVudC1hY2NvdW50L3RyYW5zYWN0aW9ucz9hY2NvdW50SWQ9JHthY2NvdW50TnVtYmVyfSZudW1JdGVtc1BlclBhZ2U9MTUwJnJldHJpZXZhbEVuZERhdGU9JHtlbmREYXRlfSZyZXRyaWV2YWxTdGFydERhdGU9JHtzdGFydERhdGV9JnNvcnRDb2RlPTFgO1xuICBjb25zdCB0eG5zUmVzdWx0ID0gYXdhaXQgZmV0Y2hQb2FsaW1YU1JGV2l0aGluUGFnZShwYWdlLCB0eG5zVXJsLCAnL2N1cnJlbnQtYWNjb3VudC90cmFuc2FjdGlvbnMnKTtcblxuICByZXR1cm4gY29udmVydFRyYW5zYWN0aW9ucyh0eG5zUmVzdWx0Py50cmFuc2FjdGlvbnMgPz8gW10pO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRBY2NvdW50QmFsYW5jZShhcGlTaXRlVXJsOiBzdHJpbmcsIHBhZ2U6IFBhZ2UsIGFjY291bnROdW1iZXI6IHN0cmluZykge1xuICBjb25zdCBiYWxhbmNlQW5kQ3JlZGl0TGltaXRVcmwgPSBgJHthcGlTaXRlVXJsfS9jdXJyZW50LWFjY291bnQvY29tcG9zaXRlL2JhbGFuY2VBbmRDcmVkaXRMaW1pdD9hY2NvdW50SWQ9JHthY2NvdW50TnVtYmVyfSZ2aWV3PWRldGFpbHMmbGFuZz1oZWA7XG4gIGNvbnN0IGJhbGFuY2VBbmRDcmVkaXRMaW1pdCA9IGF3YWl0IGZldGNoR2V0V2l0aGluUGFnZTxCYWxhbmNlQW5kQ3JlZGl0TGltaXQ+KHBhZ2UsIGJhbGFuY2VBbmRDcmVkaXRMaW1pdFVybCk7XG5cbiAgcmV0dXJuIGJhbGFuY2VBbmRDcmVkaXRMaW1pdD8uY3VycmVudEJhbGFuY2U7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGZldGNoQWNjb3VudERhdGEocGFnZTogUGFnZSwgYmFzZVVybDogc3RyaW5nLCBvcHRpb25zOiBTY2FwZXJPcHRpb25zKSB7XG4gIGNvbnN0IHJlc3RDb250ZXh0ID0gYXdhaXQgZ2V0UmVzdENvbnRleHQocGFnZSk7XG4gIGNvbnN0IGFwaVNpdGVVcmwgPSBgJHtiYXNlVXJsfS8ke3Jlc3RDb250ZXh0fWA7XG4gIGNvbnN0IGFjY291bnREYXRhVXJsID0gYCR7YmFzZVVybH0vU2VydmVyU2VydmljZXMvZ2VuZXJhbC9hY2NvdW50c2A7XG5cbiAgZGVidWcoJ2ZldGNoaW5nIGFjY291bnRzIGRhdGEnKTtcbiAgY29uc3QgYWNjb3VudHNJbmZvID0gYXdhaXQgZmV0Y2hHZXRXaXRoaW5QYWdlPEZldGNoZWRBY2NvdW50RGF0YT4ocGFnZSwgYWNjb3VudERhdGFVcmwpIHx8IFtdO1xuICBkZWJ1ZygnZ290ICVkIGFjY291bnRzLCBmZXRjaGluZyB0eG5zIGFuZCBiYWxhbmNlJywgYWNjb3VudHNJbmZvLmxlbmd0aCk7XG5cbiAgY29uc3QgZGVmYXVsdFN0YXJ0TW9tZW50ID0gbW9tZW50KCkuc3VidHJhY3QoMSwgJ3llYXJzJykuYWRkKDEsICdkYXknKTtcbiAgY29uc3Qgc3RhcnREYXRlID0gb3B0aW9ucy5zdGFydERhdGUgfHwgZGVmYXVsdFN0YXJ0TW9tZW50LnRvRGF0ZSgpO1xuICBjb25zdCBzdGFydE1vbWVudCA9IG1vbWVudC5tYXgoZGVmYXVsdFN0YXJ0TW9tZW50LCBtb21lbnQoc3RhcnREYXRlKSk7XG5cbiAgY29uc3Qgc3RhcnREYXRlU3RyID0gc3RhcnRNb21lbnQuZm9ybWF0KERBVEVfRk9STUFUKTtcbiAgY29uc3QgZW5kRGF0ZVN0ciA9IG1vbWVudCgpLmZvcm1hdChEQVRFX0ZPUk1BVCk7XG5cbiAgY29uc3QgYWNjb3VudHM6IFRyYW5zYWN0aW9uc0FjY291bnRbXSA9IFtdO1xuXG4gIGZvciAoY29uc3QgYWNjb3VudCBvZiBhY2NvdW50c0luZm8pIHtcbiAgICBsZXQgYmFsYW5jZTogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIGNvbnN0IGFjY291bnROdW1iZXIgPSBgJHthY2NvdW50LmJhbmtOdW1iZXJ9LSR7YWNjb3VudC5icmFuY2hOdW1iZXJ9LSR7YWNjb3VudC5hY2NvdW50TnVtYmVyfWA7XG5cbiAgICBjb25zdCBpc0FjdGl2ZUFjY291bnQgPSBhY2NvdW50LmFjY291bnRDbG9zaW5nUmVhc29uQ29kZSA9PT0gMDtcbiAgICBpZiAoaXNBY3RpdmVBY2NvdW50KSB7XG4gICAgICBiYWxhbmNlID0gYXdhaXQgZ2V0QWNjb3VudEJhbGFuY2UoYXBpU2l0ZVVybCwgcGFnZSwgYWNjb3VudE51bWJlcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRlYnVnKCdTa2lwcGluZyBiYWxhbmNlIGZvciBhIGNsb3NlZCBhY2NvdW50LCBiYWxhbmNlIHdpbGwgYmUgdW5kZWZpbmVkJyk7XG4gICAgfVxuXG4gICAgY29uc3QgdHhucyA9IGF3YWl0IGdldEFjY291bnRUcmFuc2FjdGlvbnMoYXBpU2l0ZVVybCwgcGFnZSwgYWNjb3VudE51bWJlciwgc3RhcnREYXRlU3RyLCBlbmREYXRlU3RyKTtcblxuICAgIGFjY291bnRzLnB1c2goe1xuICAgICAgYWNjb3VudE51bWJlcixcbiAgICAgIGJhbGFuY2UsXG4gICAgICB0eG5zLFxuICAgIH0pO1xuICB9XG5cbiAgY29uc3QgYWNjb3VudERhdGEgPSB7XG4gICAgc3VjY2VzczogdHJ1ZSxcbiAgICBhY2NvdW50cyxcbiAgfTtcbiAgZGVidWcoJ2ZldGNoaW5nIGVuZGVkJyk7XG4gIHJldHVybiBhY2NvdW50RGF0YTtcbn1cblxuZnVuY3Rpb24gZ2V0UG9zc2libGVMb2dpblJlc3VsdHMoYmFzZVVybDogc3RyaW5nKSB7XG4gIGNvbnN0IHVybHM6IFBvc3NpYmxlTG9naW5SZXN1bHRzID0ge307XG4gIHVybHNbTG9naW5SZXN1bHRzLlN1Y2Nlc3NdID0gW1xuICAgIGAke2Jhc2VVcmx9L3BvcnRhbHNlcnZlci9Ib21lUGFnZWAsXG4gICAgYCR7YmFzZVVybH0vbmctcG9ydGFscy1idC9yYi9oZS9ob21lcGFnZWAsXG4gICAgYCR7YmFzZVVybH0vbmctcG9ydGFscy9yYi9oZS9ob21lcGFnZWBdO1xuICB1cmxzW0xvZ2luUmVzdWx0cy5JbnZhbGlkUGFzc3dvcmRdID0gW2Ake2Jhc2VVcmx9L0FVVEhFTlRJQ0FURS9MT0dPTj9mbG93PUFVVEhFTlRJQ0FURSZzdGF0ZT1MT0dPTiZlcnJvcmNvZGU9MS42JmNhbGxtZT1mYWxzZWBdO1xuICB1cmxzW0xvZ2luUmVzdWx0cy5DaGFuZ2VQYXNzd29yZF0gPSBbXG4gICAgYCR7YmFzZVVybH0vTUNQL1NUQVJUP2Zsb3c9TUNQJnN0YXRlPVNUQVJUJmV4cGlyZWREYXRlPW51bGxgLFxuICAgIC9cXC9BQk9VVFRPRVhQSVJFXFwvU1RBUlQvaSxcbiAgXTtcbiAgcmV0dXJuIHVybHM7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUxvZ2luRmllbGRzKGNyZWRlbnRpYWxzOiBTY3JhcGVyQ3JlZGVudGlhbHMpIHtcbiAgcmV0dXJuIFtcbiAgICB7IHNlbGVjdG9yOiAnI3VzZXJDb2RlJywgdmFsdWU6IGNyZWRlbnRpYWxzLnVzZXJDb2RlIH0sXG4gICAgeyBzZWxlY3RvcjogJyNwYXNzd29yZCcsIHZhbHVlOiBjcmVkZW50aWFscy5wYXNzd29yZCB9LFxuICBdO1xufVxuXG5jbGFzcyBIYXBvYWxpbVNjcmFwZXIgZXh0ZW5kcyBCYXNlU2NyYXBlcldpdGhCcm93c2VyIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNsYXNzLW1ldGhvZHMtdXNlLXRoaXNcbiAgZ2V0IGJhc2VVcmwoKSB7XG4gICAgcmV0dXJuICdodHRwczovL2xvZ2luLmJhbmtoYXBvYWxpbS5jby5pbCc7XG4gIH1cblxuICBnZXRMb2dpbk9wdGlvbnMoY3JlZGVudGlhbHM6IFNjcmFwZXJDcmVkZW50aWFscykge1xuICAgIHJldHVybiB7XG4gICAgICBsb2dpblVybDogYCR7dGhpcy5iYXNlVXJsfS9jZ2ktYmluL3BvYWx3d3djP3JlcU5hbWU9Z2V0TG9nb25QYWdlYCxcbiAgICAgIGZpZWxkczogY3JlYXRlTG9naW5GaWVsZHMoY3JlZGVudGlhbHMpLFxuICAgICAgc3VibWl0QnV0dG9uU2VsZWN0b3I6ICcubG9naW4tYnRuJyxcbiAgICAgIHBvc3RBY3Rpb246IGFzeW5jICgpID0+IHdhaXRGb3JSZWRpcmVjdCh0aGlzLnBhZ2UpLFxuICAgICAgcG9zc2libGVSZXN1bHRzOiBnZXRQb3NzaWJsZUxvZ2luUmVzdWx0cyh0aGlzLmJhc2VVcmwpLFxuICAgIH07XG4gIH1cblxuICBhc3luYyBmZXRjaERhdGEoKSB7XG4gICAgcmV0dXJuIGZldGNoQWNjb3VudERhdGEodGhpcy5wYWdlLCB0aGlzLmJhc2VVcmwsIHRoaXMub3B0aW9ucyk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgSGFwb2FsaW1TY3JhcGVyO1xuIl19
|
package/lib/scrapers/max.js
CHANGED
|
@@ -31,6 +31,8 @@ var _transactions = require("../helpers/transactions");
|
|
|
31
31
|
|
|
32
32
|
var _transactions2 = require("../transactions");
|
|
33
33
|
|
|
34
|
+
var _debug = require("../helpers/debug");
|
|
35
|
+
|
|
34
36
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
35
37
|
|
|
36
38
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
|
@@ -39,6 +41,7 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
|
|
|
39
41
|
|
|
40
42
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
41
43
|
|
|
44
|
+
const debug = (0, _debug.getDebug)('max');
|
|
42
45
|
const BASE_ACTIONS_URL = 'https://online.max.co.il';
|
|
43
46
|
const BASE_API_ACTIONS_URL = 'https://onlinelcapi.max.co.il';
|
|
44
47
|
const BASE_WELCOME_URL = 'https://www.max.co.il';
|
|
@@ -63,6 +66,7 @@ const ACCUMULATING_BASKET = 'סל מצטבר';
|
|
|
63
66
|
const POSTPONED_TRANSACTION_INSTALLMENTS = 'פריסת העסקה הדחויה';
|
|
64
67
|
const INVALID_DETAILS_SELECTOR = '#popupWrongDetails';
|
|
65
68
|
const LOGIN_ERROR_SELECTOR = '#popupCardHoldersLoginError';
|
|
69
|
+
const categories = new Map();
|
|
66
70
|
|
|
67
71
|
function redirectOrDialog(page) {
|
|
68
72
|
return Promise.race([(0, _navigation.waitForRedirect)(page, 20000, false, [BASE_WELCOME_URL, `${BASE_WELCOME_URL}/`]), (0, _elementsInteractions.waitUntilElementFound)(page, INVALID_DETAILS_SELECTOR, true), (0, _elementsInteractions.waitUntilElementFound)(page, LOGIN_ERROR_SELECTOR, true)]);
|
|
@@ -84,6 +88,21 @@ function getTransactionsUrl(monthMoment) {
|
|
|
84
88
|
});
|
|
85
89
|
}
|
|
86
90
|
|
|
91
|
+
async function loadCategories(page) {
|
|
92
|
+
debug('Loading categories');
|
|
93
|
+
const res = await (0, _fetch.fetchGetWithinPage)(page, `${BASE_API_ACTIONS_URL}/api/contents/getCategories`);
|
|
94
|
+
|
|
95
|
+
if (res && Array.isArray(res.result)) {
|
|
96
|
+
var _res$result;
|
|
97
|
+
|
|
98
|
+
debug(`${res.result.length} categories loaded`);
|
|
99
|
+
(_res$result = res.result) === null || _res$result === void 0 ? void 0 : _res$result.forEach(({
|
|
100
|
+
id,
|
|
101
|
+
name
|
|
102
|
+
}) => categories.set(id, name));
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
87
106
|
function getTransactionType(txnTypeStr) {
|
|
88
107
|
const cleanedUpTxnTypeStr = txnTypeStr.replace('\t', ' ').trim();
|
|
89
108
|
|
|
@@ -143,6 +162,7 @@ function mapTransaction(rawTransaction) {
|
|
|
143
162
|
chargedAmount: -rawTransaction.actualPaymentAmount,
|
|
144
163
|
description: rawTransaction.merchantName.trim(),
|
|
145
164
|
memo: rawTransaction.comments,
|
|
165
|
+
category: categories.get(rawTransaction === null || rawTransaction === void 0 ? void 0 : rawTransaction.categoryId),
|
|
146
166
|
installments: getInstallmentsInfo(rawTransaction.comments) || undefined,
|
|
147
167
|
status
|
|
148
168
|
};
|
|
@@ -200,6 +220,7 @@ async function fetchTransactions(page, options) {
|
|
|
200
220
|
const startMoment = _moment.default.max(defaultStartMoment, (0, _moment.default)(startDate));
|
|
201
221
|
|
|
202
222
|
const allMonths = (0, _dates.default)(startMoment, futureMonthsToScrape);
|
|
223
|
+
await loadCategories(page);
|
|
203
224
|
let allResults = {};
|
|
204
225
|
|
|
205
226
|
for (let i = 0; i < allMonths.length; i += 1) {
|
|
@@ -280,4 +301,4 @@ class MaxScraper extends _baseScraperWithBrowser.BaseScraperWithBrowser {
|
|
|
280
301
|
|
|
281
302
|
var _default = MaxScraper;
|
|
282
303
|
exports.default = _default;
|
|
283
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JhcGVycy9tYXgudHMiXSwibmFtZXMiOlsiQkFTRV9BQ1RJT05TX1VSTCIsIkJBU0VfQVBJX0FDVElPTlNfVVJMIiwiQkFTRV9XRUxDT01FX1VSTCIsIkxPR0lOX1VSTCIsIlBBU1NXT1JEX0VYUElSRURfVVJMIiwiU1VDQ0VTU19VUkwiLCJOT1JNQUxfVFlQRV9OQU1FIiwiQVRNX1RZUEVfTkFNRSIsIklOVEVSTkVUX1NIT1BQSU5HX1RZUEVfTkFNRSIsIklOU1RBTExNRU5UU19UWVBFX05BTUUiLCJNT05USExZX0NIQVJHRV9UWVBFX05BTUUiLCJPTkVfTU9OVEhfUE9TVFBPTkVEX1RZUEVfTkFNRSIsIk1PTlRITFlfUE9TVFBPTkVEX1RZUEVfTkFNRSIsIk1PTlRITFlfUEFZTUVOVF9UWVBFX05BTUUiLCJGVVRVUkVfUFVSQ0hBU0VfRklOQU5DSU5HIiwiTU9OVEhMWV9QT1NUUE9ORURfSU5TVEFMTE1FTlRTX1RZUEVfTkFNRSIsIlRISVJUWV9EQVlTX1BMVVNfVFlQRV9OQU1FIiwiVFdPX01PTlRIU19QT1NUUE9ORURfVFlQRV9OQU1FIiwiTU9OVEhMWV9DSEFSR0VfUExVU19JTlRFUkVTVF9UWVBFX05BTUUiLCJDUkVESVRfVFlQRV9OQU1FIiwiQUNDVU1VTEFUSU5HX0JBU0tFVCIsIlBPU1RQT05FRF9UUkFOU0FDVElPTl9JTlNUQUxMTUVOVFMiLCJJTlZBTElEX0RFVEFJTFNfU0VMRUNUT1IiLCJMT0dJTl9FUlJPUl9TRUxFQ1RPUiIsInJlZGlyZWN0T3JEaWFsb2ciLCJwYWdlIiwiUHJvbWlzZSIsInJhY2UiLCJnZXRUcmFuc2FjdGlvbnNVcmwiLCJtb250aE1vbWVudCIsIm1vbnRoIiwieWVhciIsImRhdGUiLCJwYXRoIiwiZ2V0VHJhbnNhY3Rpb25UeXBlIiwidHhuVHlwZVN0ciIsImNsZWFuZWRVcFR4blR5cGVTdHIiLCJyZXBsYWNlIiwidHJpbSIsIlRyYW5zYWN0aW9uVHlwZXMiLCJOb3JtYWwiLCJJbnN0YWxsbWVudHMiLCJFcnJvciIsImdldEluc3RhbGxtZW50c0luZm8iLCJjb21tZW50cyIsIm1hdGNoZXMiLCJtYXRjaCIsImxlbmd0aCIsIm51bWJlciIsInBhcnNlSW50IiwidG90YWwiLCJtYXBUcmFuc2FjdGlvbiIsInJhd1RyYW5zYWN0aW9uIiwiaXNQZW5kaW5nIiwicGF5bWVudERhdGUiLCJwcm9jZXNzZWREYXRlIiwicHVyY2hhc2VEYXRlIiwidG9JU09TdHJpbmciLCJzdGF0dXMiLCJUcmFuc2FjdGlvblN0YXR1c2VzIiwiUGVuZGluZyIsIkNvbXBsZXRlZCIsInR5cGUiLCJwbGFuTmFtZSIsIm9yaWdpbmFsQW1vdW50Iiwib3JpZ2luYWxDdXJyZW5jeSIsImNoYXJnZWRBbW91bnQiLCJhY3R1YWxQYXltZW50QW1vdW50IiwiZGVzY3JpcHRpb24iLCJtZXJjaGFudE5hbWUiLCJtZW1vIiwiaW5zdGFsbG1lbnRzIiwidW5kZWZpbmVkIiwiZmV0Y2hUcmFuc2FjdGlvbnNGb3JNb250aCIsInVybCIsImRhdGEiLCJ0cmFuc2FjdGlvbnNCeUFjY291bnQiLCJyZXN1bHQiLCJ0cmFuc2FjdGlvbnMiLCJmaWx0ZXIiLCJ0cmFuc2FjdGlvbiIsImZvckVhY2giLCJzaG9ydENhcmROdW1iZXIiLCJtYXBwZWRUcmFuc2FjdGlvbiIsInB1c2giLCJhZGRSZXN1bHQiLCJhbGxSZXN1bHRzIiwiY2xvbmVkUmVzdWx0cyIsIk9iamVjdCIsImtleXMiLCJhY2NvdW50TnVtYmVyIiwicHJlcGFyZVRyYW5zYWN0aW9ucyIsInR4bnMiLCJzdGFydE1vbWVudCIsImNvbWJpbmVJbnN0YWxsbWVudHMiLCJjbG9uZWRUeG5zIiwiQXJyYXkiLCJmcm9tIiwiZmV0Y2hUcmFuc2FjdGlvbnMiLCJvcHRpb25zIiwiZnV0dXJlTW9udGhzVG9TY3JhcGUiLCJkZWZhdWx0U3RhcnRNb21lbnQiLCJzdWJ0cmFjdCIsInN0YXJ0RGF0ZSIsInRvRGF0ZSIsIm1vbWVudCIsIm1heCIsImFsbE1vbnRocyIsImkiLCJnZXRQb3NzaWJsZUxvZ2luUmVzdWx0cyIsInVybHMiLCJMb2dpblJlc3VsdHMiLCJTdWNjZXNzIiwiQ2hhbmdlUGFzc3dvcmQiLCJJbnZhbGlkUGFzc3dvcmQiLCJVbmtub3duRXJyb3IiLCJjcmVhdGVMb2dpbkZpZWxkcyIsImNyZWRlbnRpYWxzIiwic2VsZWN0b3IiLCJ2YWx1ZSIsInVzZXJuYW1lIiwicGFzc3dvcmQiLCJNYXhTY3JhcGVyIiwiQmFzZVNjcmFwZXJXaXRoQnJvd3NlciIsImdldExvZ2luT3B0aW9ucyIsImxvZ2luVXJsIiwiZmllbGRzIiwic3VibWl0QnV0dG9uU2VsZWN0b3IiLCJwcmVBY3Rpb24iLCJjaGVja1JlYWRpbmVzcyIsInBvc3RBY3Rpb24iLCJwb3NzaWJsZVJlc3VsdHMiLCJmZXRjaERhdGEiLCJyZXN1bHRzIiwiYWNjb3VudHMiLCJtYXAiLCJzdWNjZXNzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7OztBQWdCQSxNQUFNQSxnQkFBZ0IsR0FBRywwQkFBekI7QUFDQSxNQUFNQyxvQkFBb0IsR0FBRywrQkFBN0I7QUFDQSxNQUFNQyxnQkFBZ0IsR0FBRyx1QkFBekI7QUFFQSxNQUFNQyxTQUFTLEdBQUksR0FBRUQsZ0JBQWlCLG1CQUF0QztBQUNBLE1BQU1FLG9CQUFvQixHQUFJLEdBQUVKLGdCQUFpQix1Q0FBakQ7QUFDQSxNQUFNSyxXQUFXLEdBQUksR0FBRUgsZ0JBQWlCLG9CQUF4QztBQUVBLE1BQU1JLGdCQUFnQixHQUFHLE9BQXpCO0FBQ0EsTUFBTUMsYUFBYSxHQUFHLGtCQUF0QjtBQUNBLE1BQU1DLDJCQUEyQixHQUFHLGNBQXBDO0FBQ0EsTUFBTUMsc0JBQXNCLEdBQUcsU0FBL0I7QUFDQSxNQUFNQyx3QkFBd0IsR0FBRyxZQUFqQztBQUNBLE1BQU1DLDZCQUE2QixHQUFHLFdBQXRDO0FBQ0EsTUFBTUMsMkJBQTJCLEdBQUcsbUJBQXBDO0FBQ0EsTUFBTUMseUJBQXlC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QkQ7O0FBRUQsUUFBTTJHLFNBQU4sR0FBa0I7QUFDaEIsVUFBTUMsT0FBTyxHQUFHLE1BQU1uQyxpQkFBaUIsQ0FBQyxLQUFLekUsSUFBTixFQUFZLEtBQUswRSxPQUFqQixDQUF2QztBQUNBLFVBQU1tQyxRQUFRLEdBQUc5QyxNQUFNLENBQUNDLElBQVAsQ0FBWTRDLE9BQVosRUFBcUJFLEdBQXJCLENBQTBCN0MsYUFBRCxJQUFtQjtBQUMzRCxhQUFPO0FBQ0xBLFFBQUFBLGFBREs7QUFFTEUsUUFBQUEsSUFBSSxFQUFFeUMsT0FBTyxDQUFDM0MsYUFBRDtBQUZSLE9BQVA7QUFJRCxLQUxnQixDQUFqQjtBQU9BLFdBQU87QUFDTDhDLE1BQUFBLE9BQU8sRUFBRSxJQURKO0FBRUxGLE1BQUFBO0FBRkssS0FBUDtBQUlEOztBQXBDNkM7O2VBdUNqQ1osVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBidWlsZFVybCBmcm9tICdidWlsZC11cmwnO1xuaW1wb3J0IG1vbWVudCwgeyBNb21lbnQgfSBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHsgUGFnZSB9IGZyb20gJ3B1cHBldGVlcic7XG5pbXBvcnQgeyBmZXRjaEdldFdpdGhpblBhZ2UgfSBmcm9tICcuLi9oZWxwZXJzL2ZldGNoJztcbmltcG9ydCB7IEJhc2VTY3JhcGVyV2l0aEJyb3dzZXIsIExvZ2luUmVzdWx0cywgUG9zc2libGVMb2dpblJlc3VsdHMgfSBmcm9tICcuL2Jhc2Utc2NyYXBlci13aXRoLWJyb3dzZXInO1xuaW1wb3J0IHsgd2FpdEZvclJlZGlyZWN0IH0gZnJvbSAnLi4vaGVscGVycy9uYXZpZ2F0aW9uJztcbmltcG9ydCB7IHdhaXRVbnRpbEVsZW1lbnRGb3VuZCwgZWxlbWVudFByZXNlbnRPblBhZ2UsIGNsaWNrQnV0dG9uIH0gZnJvbSAnLi4vaGVscGVycy9lbGVtZW50cy1pbnRlcmFjdGlvbnMnO1xuaW1wb3J0IGdldEFsbE1vbnRoTW9tZW50cyBmcm9tICcuLi9oZWxwZXJzL2RhdGVzJztcbmltcG9ydCB7IGZpeEluc3RhbGxtZW50cywgc29ydFRyYW5zYWN0aW9uc0J5RGF0ZSwgZmlsdGVyT2xkVHJhbnNhY3Rpb25zIH0gZnJvbSAnLi4vaGVscGVycy90cmFuc2FjdGlvbnMnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24sIFRyYW5zYWN0aW9uU3RhdHVzZXMsIFRyYW5zYWN0aW9uVHlwZXMgfSBmcm9tICcuLi90cmFuc2FjdGlvbnMnO1xuaW1wb3J0IHsgU2NhcGVyT3B0aW9ucywgU2NyYXBlckNyZWRlbnRpYWxzIH0gZnJvbSAnLi9iYXNlLXNjcmFwZXInO1xuXG5cbmludGVyZmFjZSBTY3JhcGVkVHJhbnNhY3Rpb24ge1xuICBzaG9ydENhcmROdW1iZXI6IHN0cmluZztcbiAgcGF5bWVudERhdGU/OiBzdHJpbmc7XG4gIHB1cmNoYXNlRGF0ZTogc3RyaW5nO1xuICBhY3R1YWxQYXltZW50QW1vdW50OiBzdHJpbmc7XG4gIG9yaWdpbmFsQ3VycmVuY3k6IHN0cmluZztcbiAgb3JpZ2luYWxBbW91bnQ6IG51bWJlcjtcbiAgcGxhbk5hbWU6IHN0cmluZztcbiAgY29tbWVudHM6IHN0cmluZztcbiAgbWVyY2hhbnROYW1lOiBzdHJpbmc7XG59XG5cbmNvbnN0IEJBU0VfQUNUSU9OU19VUkwgPSAnaHR0cHM6Ly9vbmxpbmUubWF4LmNvLmlsJztcbmNvbnN0IEJBU0VfQVBJX0FDVElPTlNfVVJMID0gJ2h0dHBzOi8vb25saW5lbGNhcGkubWF4LmNvLmlsJztcbmNvbnN0IEJBU0VfV0VMQ09NRV9VUkwgPSAnaHR0cHM6Ly93d3cubWF4LmNvLmlsJztcblxuY29uc3QgTE9HSU5fVVJMID0gYCR7QkFTRV9XRUxDT01FX1VSTH0vaG9tZXBhZ2Uvd2VsY29tZWA7XG5jb25zdCBQQVNTV09SRF9FWFBJUkVEX1VSTCA9IGAke0JBU0VfQUNUSU9OU19VUkx9L0Fub255bW91cy9Mb2dpbi9QYXNzd29yZEV4cGlyZWQuYXNweGA7XG5jb25zdCBTVUNDRVNTX1VSTCA9IGAke0JBU0VfV0VMQ09NRV9VUkx9L2hvbWVwYWdlL3BlcnNvbmFsYDtcblxuY29uc3QgTk9STUFMX1RZUEVfTkFNRSA9ICfXqNeS15nXnNeUJztcbmNvbnN0IEFUTV9UWVBFX05BTUUgPSAn15fXmdeV15Eg16LXoden15XXqiDXnteZ15nXk9eZJztcbmNvbnN0IElOVEVSTkVUX1NIT1BQSU5HX1RZUEVfTkFNRSA9ICfXkNeZ16DXmNeo16DXmC/Xl9eVXCLXnCc7XG5jb25zdCBJTlNUQUxMTUVOVFNfVFlQRV9OQU1FID0gJ9eq16nXnNeV157XmdedJztcbmNvbnN0IE1PTlRITFlfQ0hBUkdFX1RZUEVfTkFNRSA9ICfXl9eZ15XXkSDXl9eV15PXqdeZJztcbmNvbnN0IE9ORV9NT05USF9QT1NUUE9ORURfVFlQRV9OQU1FID0gJ9eT15fXldeZINeX15XXk9epJztcbmNvbnN0IE1PTlRITFlfUE9TVFBPTkVEX1RZUEVfTkFNRSA9ICfXk9eX15XXmSDXnNeX15nXldeRINeU15fXldeT16nXmSc7XG5jb25zdCBNT05USExZX1BBWU1FTlRfVFlQRV9OQU1FID0gJ9eq16nXnNeV150g15fXldeT16nXmSc7XG5jb25zdCBGVVRVUkVfUFVSQ0hBU0VfRklOQU5DSU5HID0gJ9ee15nXnteV158g15zXqNeb15nXqdeUINei16rXmdeT15nXqic7XG5jb25zdCBNT05USExZX1BPU1RQT05FRF9JTlNUQUxMTUVOVFNfVFlQRV9OQU1FID0gJ9eT15fXldeZINeX15XXk9epINeq16nXnNeV157XmdedJztcbmNvbnN0IFRISVJUWV9EQVlTX1BMVVNfVFlQRV9OQU1FID0gJ9ei16HXp9eqIDMwINek15zXldehJztcbmNvbnN0IFRXT19NT05USFNfUE9TVFBPTkVEX1RZUEVfTkFNRSA9ICfXk9eX15XXmSDXl9eV15PXqdeZ15nXnSc7XG5jb25zdCBNT05USExZX0NIQVJHRV9QTFVTX0lOVEVSRVNUX1RZUEVfTkFNRSA9ICfXl9eV15PXqdeZICsg16jXmdeR15nXqic7XG5jb25zdCBDUkVESVRfVFlQRV9OQU1FID0gJ9en16jXk9eZ15gnO1xuY29uc3QgQUNDVU1VTEFUSU5HX0JBU0tFVCA9ICfXodecINee16bXmNeR16gnO1xuY29uc3QgUE9TVFBPTkVEX1RSQU5TQUNUSU9OX0lOU1RBTExNRU5UUyA9ICfXpNeo15nXodeqINeU16LXoden15Qg15TXk9eX15XXmdeUJztcblxuY29uc3QgSU5WQUxJRF9ERVRBSUxTX1NFTEVDVE9SID0gJyNwb3B1cFdyb25nRGV0YWlscyc7XG5jb25zdCBMT0dJTl9FUlJPUl9TRUxFQ1RPUiA9ICcjcG9wdXBDYXJkSG9sZGVyc0xvZ2luRXJyb3InO1xuXG5mdW5jdGlvbiByZWRpcmVjdE9yRGlhbG9nKHBhZ2U6IFBhZ2UpIHtcbiAgcmV0dXJuIFByb21pc2UucmFjZShbXG4gICAgd2FpdEZvclJlZGlyZWN0KHBhZ2UsIDIwMDAwLCBmYWxzZSwgW0JBU0VfV0VMQ09NRV9VUkwsIGAke0JBU0VfV0VMQ09NRV9VUkx9L2BdKSxcbiAgICB3YWl0VW50aWxFbGVtZW50Rm91bmQocGFnZSwgSU5WQUxJRF9ERVRBSUxTX1NFTEVDVE9SLCB0cnVlKSxcbiAgICB3YWl0VW50aWxFbGVtZW50Rm91bmQocGFnZSwgTE9HSU5fRVJST1JfU0VMRUNUT1IsIHRydWUpLFxuICBdKTtcbn1cblxuZnVuY3Rpb24gZ2V0VHJhbnNhY3Rpb25zVXJsKG1vbnRoTW9tZW50OiBNb21lbnQpIHtcbiAgY29uc3QgbW9udGggPSBtb250aE1vbWVudC5tb250aCgpICsgMTtcbiAgY29uc3QgeWVhciA9IG1vbnRoTW9tZW50LnllYXIoKTtcbiAgY29uc3QgZGF0ZSA9IGAke3llYXJ9LSR7bW9udGh9LTAxYDtcblxuICAvKipcbiAgICAgKiB1cmwgZXhwbGFuYXRpb246XG4gICAgICogdXNlckluZGV4OiAtMSBmb3IgYWxsIGFjY291bnQgb3duZXJzXG4gICAgICogY2FyZEluZGV4OiAtMSBmb3IgYWxsIGNhcmRzIHVuZGVyIHRoZSBhY2NvdW50XG4gICAgICogYWxsIG90aGVyIHF1ZXJ5IHBhcmFtcyBhcmUgc3RhdGljLCBiZXNpZGUgdGhlIGRhdGUgd2hpY2ggY2hhbmdlcyBmb3IgcmVxdWVzdCBwZXIgbW9udGhcbiAgICAgKi9cbiAgcmV0dXJuIGJ1aWxkVXJsKEJBU0VfQVBJX0FDVElPTlNfVVJMLCB7XG4gICAgcGF0aDogYC9hcGkvcmVnaXN0ZXJlZC90cmFuc2FjdGlvbkRldGFpbHMvZ2V0VHJhbnNhY3Rpb25zQW5kR3JhcGhzP2ZpbHRlckRhdGE9e1widXNlckluZGV4XCI6LTEsXCJjYXJkSW5kZXhcIjotMSxcIm1vbnRoVmlld1wiOnRydWUsXCJkYXRlXCI6XCIke2RhdGV9XCIsXCJkYXRlc1wiOntcInN0YXJ0RGF0ZVwiOlwiMFwiLFwiZW5kRGF0ZVwiOlwiMFwifSxcImJhbmtBY2NvdW50XCI6e1wiYmFua0FjY291bnRJbmRleFwiOi0xLFwiY2FyZHNcIjpudWxsfX0mZmlyc3RDYWxsQ2FyZEluZGV4PS0xJnY9VjMuNjktSEYtQ2FyTG9hbkxldmlNb2RlbC4yLjU3YCxcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGdldFRyYW5zYWN0aW9uVHlwZSh0eG5UeXBlU3RyOiBzdHJpbmcpIHtcbiAgY29uc3QgY2xlYW5lZFVwVHhuVHlwZVN0ciA9IHR4blR5cGVTdHIucmVwbGFjZSgnXFx0JywgJyAnKS50cmltKCk7XG4gIHN3aXRjaCAoY2xlYW5lZFVwVHhuVHlwZVN0cikge1xuICAgIGNhc2UgQVRNX1RZUEVfTkFNRTpcbiAgICBjYXNlIE5PUk1BTF9UWVBFX05BTUU6XG4gICAgY2FzZSBNT05USExZX0NIQVJHRV9UWVBFX05BTUU6XG4gICAgY2FzZSBPTkVfTU9OVEhfUE9TVFBPTkVEX1RZUEVfTkFNRTpcbiAgICBjYXNlIE1PTlRITFlfUE9TVFBPTkVEX1RZUEVfTkFNRTpcbiAgICBjYXNlIEZVVFVSRV9QVVJDSEFTRV9GSU5BTkNJTkc6XG4gICAgY2FzZSBNT05USExZX1BBWU1FTlRfVFlQRV9OQU1FOlxuICAgIGNhc2UgTU9OVEhMWV9QT1NUUE9ORURfSU5TVEFMTE1FTlRTX1RZUEVfTkFNRTpcbiAgICBjYXNlIFRISVJUWV9EQVlTX1BMVVNfVFlQRV9OQU1FOlxuICAgIGNhc2UgVFdPX01PTlRIU19QT1NUUE9ORURfVFlQRV9OQU1FOlxuICAgIGNhc2UgQUNDVU1VTEFUSU5HX0JBU0tFVDpcbiAgICBjYXNlIElOVEVSTkVUX1NIT1BQSU5HX1RZUEVfTkFNRTpcbiAgICBjYXNlIE1PTlRITFlfQ0hBUkdFX1BMVVNfSU5URVJFU1RfVFlQRV9OQU1FOlxuICAgIGNhc2UgUE9TVFBPTkVEX1RSQU5TQUNUSU9OX0lOU1RBTExNRU5UUzpcbiAgICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGVzLk5vcm1hbDtcbiAgICBjYXNlIElOU1RBTExNRU5UU19UWVBFX05BTUU6XG4gICAgY2FzZSBDUkVESVRfVFlQRV9OQU1FOlxuICAgICAgcmV0dXJuIFRyYW5zYWN0aW9uVHlwZXMuSW5zdGFsbG1lbnRzO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gdHJhbnNhY3Rpb24gdHlwZSAke2NsZWFuZWRVcFR4blR5cGVTdHJ9YCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0SW5zdGFsbG1lbnRzSW5mbyhjb21tZW50czogc3RyaW5nKSB7XG4gIGlmICghY29tbWVudHMpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBjb25zdCBtYXRjaGVzID0gY29tbWVudHMubWF0Y2goL1xcZCsvZyk7XG4gIGlmICghbWF0Y2hlcyB8fCBtYXRjaGVzLmxlbmd0aCA8IDIpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbnVtYmVyOiBwYXJzZUludChtYXRjaGVzWzBdLCAxMCksXG4gICAgdG90YWw6IHBhcnNlSW50KG1hdGNoZXNbMV0sIDEwKSxcbiAgfTtcbn1cbmZ1bmN0aW9uIG1hcFRyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uOiBTY3JhcGVkVHJhbnNhY3Rpb24pOiBUcmFuc2FjdGlvbiB7XG4gIGNvbnN0IGlzUGVuZGluZyA9IHJhd1RyYW5zYWN0aW9uLnBheW1lbnREYXRlID09PSBudWxsO1xuICBjb25zdCBwcm9jZXNzZWREYXRlID0gbW9tZW50KGlzUGVuZGluZyA/XG4gICAgcmF3VHJhbnNhY3Rpb24ucHVyY2hhc2VEYXRlIDpcbiAgICByYXdUcmFuc2FjdGlvbi5wYXltZW50RGF0ZSkudG9JU09TdHJpbmcoKTtcbiAgY29uc3Qgc3RhdHVzID0gaXNQZW5kaW5nID8gVHJhbnNhY3Rpb25TdGF0dXNlcy5QZW5kaW5nIDogVHJhbnNhY3Rpb25TdGF0dXNlcy5Db21wbGV0ZWQ7XG5cbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBnZXRUcmFuc2FjdGlvblR5cGUocmF3VHJhbnNhY3Rpb24ucGxhbk5hbWUpLFxuICAgIGRhdGU6IG1vbWVudChyYXdUcmFuc2FjdGlvbi5wdXJjaGFzZURhdGUpLnRvSVNPU3RyaW5nKCksXG4gICAgcHJvY2Vzc2VkRGF0ZSxcbiAgICBvcmlnaW5hbEFtb3VudDogLXJhd1RyYW5zYWN0aW9uLm9yaWdpbmFsQW1vdW50LFxuICAgIG9yaWdpbmFsQ3VycmVuY3k6IHJhd1RyYW5zYWN0aW9uLm9yaWdpbmFsQ3VycmVuY3ksXG4gICAgY2hhcmdlZEFtb3VudDogLXJhd1RyYW5zYWN0aW9uLmFjdHVhbFBheW1lbnRBbW91bnQsXG4gICAgZGVzY3JpcHRpb246IHJhd1RyYW5zYWN0aW9uLm1lcmNoYW50TmFtZS50cmltKCksXG4gICAgbWVtbzogcmF3VHJhbnNhY3Rpb24uY29tbWVudHMsXG4gICAgaW5zdGFsbG1lbnRzOiBnZXRJbnN0YWxsbWVudHNJbmZvKHJhd1RyYW5zYWN0aW9uLmNvbW1lbnRzKSB8fCB1bmRlZmluZWQsXG4gICAgc3RhdHVzLFxuICB9O1xufVxuaW50ZXJmYWNlIFNjcmFwZWRUcmFuc2FjdGlvbnNSZXN1bHR7XG4gIHJlc3VsdD86IHtcbiAgICB0cmFuc2FjdGlvbnM6IFNjcmFwZWRUcmFuc2FjdGlvbltdO1xuICB9O1xufVxuXG5hc3luYyBmdW5jdGlvbiBmZXRjaFRyYW5zYWN0aW9uc0Zvck1vbnRoKHBhZ2U6IFBhZ2UsIG1vbnRoTW9tZW50OiBNb21lbnQpIHtcbiAgY29uc3QgdXJsID0gZ2V0VHJhbnNhY3Rpb25zVXJsKG1vbnRoTW9tZW50KTtcblxuICBjb25zdCBkYXRhID0gYXdhaXQgZmV0Y2hHZXRXaXRoaW5QYWdlPFNjcmFwZWRUcmFuc2FjdGlvbnNSZXN1bHQ+KHBhZ2UsIHVybCk7XG4gIGNvbnN0IHRyYW5zYWN0aW9uc0J5QWNjb3VudDogUmVjb3JkPHN0cmluZywgVHJhbnNhY3Rpb25bXT4gPSB7fTtcblxuICBpZiAoIWRhdGEgfHwgIWRhdGEucmVzdWx0KSByZXR1cm4gdHJhbnNhY3Rpb25zQnlBY2NvdW50O1xuXG4gIGRhdGEucmVzdWx0LnRyYW5zYWN0aW9uc1xuICAgIC8vIEZpbHRlciBvdXQgbm9uLXRyYW5zYWN0aW9ucyB3aXRob3V0IGEgcGxhbiB0eXBlLCBlLmcuIHN1bW1hcnkgcm93c1xuICAgIC5maWx0ZXIoKHRyYW5zYWN0aW9uKSA9PiAhIXRyYW5zYWN0aW9uLnBsYW5OYW1lKVxuICAgIC5mb3JFYWNoKCh0cmFuc2FjdGlvbjogU2NyYXBlZFRyYW5zYWN0aW9uKSA9PiB7XG4gICAgICBpZiAoIXRyYW5zYWN0aW9uc0J5QWNjb3VudFt0cmFuc2FjdGlvbi5zaG9ydENhcmROdW1iZXJdKSB7XG4gICAgICAgIHRyYW5zYWN0aW9uc0J5QWNjb3VudFt0cmFuc2FjdGlvbi5zaG9ydENhcmROdW1iZXJdID0gW107XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1hcHBlZFRyYW5zYWN0aW9uID0gbWFwVHJhbnNhY3Rpb24odHJhbnNhY3Rpb24pO1xuICAgICAgdHJhbnNhY3Rpb25zQnlBY2NvdW50W3RyYW5zYWN0aW9uLnNob3J0Q2FyZE51bWJlcl0ucHVzaChtYXBwZWRUcmFuc2FjdGlvbik7XG4gICAgfSk7XG5cbiAgcmV0dXJuIHRyYW5zYWN0aW9uc0J5QWNjb3VudDtcbn1cblxuZnVuY3Rpb24gYWRkUmVzdWx0KGFsbFJlc3VsdHM6IFJlY29yZDxzdHJpbmcsIFRyYW5zYWN0aW9uW10+LCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIFRyYW5zYWN0aW9uW10+KSB7XG4gIGNvbnN0IGNsb25lZFJlc3VsdHM6IFJlY29yZDxzdHJpbmcsIFRyYW5zYWN0aW9uW10+ID0geyAuLi5hbGxSZXN1bHRzIH07XG4gIE9iamVjdC5rZXlzKHJlc3VsdCkuZm9yRWFjaCgoYWNjb3VudE51bWJlcikgPT4ge1xuICAgIGlmICghY2xvbmVkUmVzdWx0c1thY2NvdW50TnVtYmVyXSkge1xuICAgICAgY2xvbmVkUmVzdWx0c1thY2NvdW50TnVtYmVyXSA9IFtdO1xuICAgIH1cbiAgICBjbG9uZWRSZXN1bHRzW2FjY291bnROdW1iZXJdLnB1c2goLi4ucmVzdWx0W2FjY291bnROdW1iZXJdKTtcbiAgfSk7XG4gIHJldHVybiBjbG9uZWRSZXN1bHRzO1xufVxuXG5mdW5jdGlvbiBwcmVwYXJlVHJhbnNhY3Rpb25zKHR4bnM6IFRyYW5zYWN0aW9uW10sIHN0YXJ0TW9tZW50OiBtb21lbnQuTW9tZW50LCBjb21iaW5lSW5zdGFsbG1lbnRzOiBib29sZWFuKSB7XG4gIGxldCBjbG9uZWRUeG5zID0gQXJyYXkuZnJvbSh0eG5zKTtcbiAgaWYgKCFjb21iaW5lSW5zdGFsbG1lbnRzKSB7XG4gICAgY2xvbmVkVHhucyA9IGZpeEluc3RhbGxtZW50cyhjbG9uZWRUeG5zKTtcbiAgfVxuICBjbG9uZWRUeG5zID0gc29ydFRyYW5zYWN0aW9uc0J5RGF0ZShjbG9uZWRUeG5zKTtcbiAgY2xvbmVkVHhucyA9IGZpbHRlck9sZFRyYW5zYWN0aW9ucyhjbG9uZWRUeG5zLCBzdGFydE1vbWVudCwgY29tYmluZUluc3RhbGxtZW50cyB8fCBmYWxzZSk7XG4gIHJldHVybiBjbG9uZWRUeG5zO1xufVxuXG5hc3luYyBmdW5jdGlvbiBmZXRjaFRyYW5zYWN0aW9ucyhwYWdlOiBQYWdlLCBvcHRpb25zOiBTY2FwZXJPcHRpb25zKSB7XG4gIGNvbnN0IGZ1dHVyZU1vbnRoc1RvU2NyYXBlID0gb3B0aW9ucy5mdXR1cmVNb250aHNUb1NjcmFwZSA/PyAxO1xuICBjb25zdCBkZWZhdWx0U3RhcnRNb21lbnQgPSBtb21lbnQoKS5zdWJ0cmFjdCgxLCAneWVhcnMnKTtcbiAgY29uc3Qgc3RhcnREYXRlID0gb3B0aW9ucy5zdGFydERhdGUgfHwgZGVmYXVsdFN0YXJ0TW9tZW50LnRvRGF0ZSgpO1xuICBjb25zdCBzdGFydE1vbWVudCA9IG1vbWVudC5tYXgoZGVmYXVsdFN0YXJ0TW9tZW50LCBtb21lbnQoc3RhcnREYXRlKSk7XG4gIGNvbnN0IGFsbE1vbnRocyA9IGdldEFsbE1vbnRoTW9tZW50cyhzdGFydE1vbWVudCwgZnV0dXJlTW9udGhzVG9TY3JhcGUpO1xuXG4gIGxldCBhbGxSZXN1bHRzOiBSZWNvcmQ8c3RyaW5nLCBUcmFuc2FjdGlvbltdPiA9IHt9O1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGFsbE1vbnRocy5sZW5ndGg7IGkgKz0gMSkge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGZldGNoVHJhbnNhY3Rpb25zRm9yTW9udGgocGFnZSwgYWxsTW9udGhzW2ldKTtcbiAgICBhbGxSZXN1bHRzID0gYWRkUmVzdWx0KGFsbFJlc3VsdHMsIHJlc3VsdCk7XG4gIH1cblxuICBPYmplY3Qua2V5cyhhbGxSZXN1bHRzKS5mb3JFYWNoKChhY2NvdW50TnVtYmVyKSA9PiB7XG4gICAgbGV0IHR4bnMgPSBhbGxSZXN1bHRzW2FjY291bnROdW1iZXJdO1xuICAgIHR4bnMgPSBwcmVwYXJlVHJhbnNhY3Rpb25zKHR4bnMsIHN0YXJ0TW9tZW50LCBvcHRpb25zLmNvbWJpbmVJbnN0YWxsbWVudHMgfHwgZmFsc2UpO1xuICAgIGFsbFJlc3VsdHNbYWNjb3VudE51bWJlcl0gPSB0eG5zO1xuICB9KTtcblxuICByZXR1cm4gYWxsUmVzdWx0cztcbn1cblxuZnVuY3Rpb24gZ2V0UG9zc2libGVMb2dpblJlc3VsdHMocGFnZTogUGFnZSk6IFBvc3NpYmxlTG9naW5SZXN1bHRzIHtcbiAgY29uc3QgdXJsczogUG9zc2libGVMb2dpblJlc3VsdHMgPSB7fTtcbiAgdXJsc1tMb2dpblJlc3VsdHMuU3VjY2Vzc10gPSBbU1VDQ0VTU19VUkxdO1xuICB1cmxzW0xvZ2luUmVzdWx0cy5DaGFuZ2VQYXNzd29yZF0gPSBbUEFTU1dPUkRfRVhQSVJFRF9VUkxdO1xuICB1cmxzW0xvZ2luUmVzdWx0cy5JbnZhbGlkUGFzc3dvcmRdID0gW2FzeW5jICgpID0+IHtcbiAgICByZXR1cm4gZWxlbWVudFByZXNlbnRPblBhZ2UocGFnZSwgSU5WQUxJRF9ERVRBSUxTX1NFTEVDVE9SKTtcbiAgfV07XG4gIHVybHNbTG9naW5SZXN1bHRzLlVua25vd25FcnJvcl0gPSBbYXN5bmMgKCkgPT4ge1xuICAgIHJldHVybiBlbGVtZW50UHJlc2VudE9uUGFnZShwYWdlLCBMT0dJTl9FUlJPUl9TRUxFQ1RPUik7XG4gIH1dO1xuICByZXR1cm4gdXJscztcbn1cblxuZnVuY3Rpb24gY3JlYXRlTG9naW5GaWVsZHMoY3JlZGVudGlhbHM6IFNjcmFwZXJDcmVkZW50aWFscykge1xuICByZXR1cm4gW1xuICAgIHsgc2VsZWN0b3I6ICcjdXNlci1uYW1lJywgdmFsdWU6IGNyZWRlbnRpYWxzLnVzZXJuYW1lIH0sXG4gICAgeyBzZWxlY3RvcjogJyNwYXNzd29yZCcsIHZhbHVlOiBjcmVkZW50aWFscy5wYXNzd29yZCB9LFxuICBdO1xufVxuXG5jbGFzcyBNYXhTY3JhcGVyIGV4dGVuZHMgQmFzZVNjcmFwZXJXaXRoQnJvd3NlciB7XG4gIGdldExvZ2luT3B0aW9ucyhjcmVkZW50aWFsczogU2NyYXBlckNyZWRlbnRpYWxzKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxvZ2luVXJsOiBMT0dJTl9VUkwsXG4gICAgICBmaWVsZHM6IGNyZWF0ZUxvZ2luRmllbGRzKGNyZWRlbnRpYWxzKSxcbiAgICAgIHN1Ym1pdEJ1dHRvblNlbGVjdG9yOiAnI2xvZ2luLXBhc3N3b3JkICNzZW5kLWNvZGUnLFxuICAgICAgcHJlQWN0aW9uOiBhc3luYyAoKSA9PiB7XG4gICAgICAgIGlmIChhd2FpdCBlbGVtZW50UHJlc2VudE9uUGFnZSh0aGlzLnBhZ2UsICcjY2xvc2VQb3B1cCcpKSB7XG4gICAgICAgICAgYXdhaXQgY2xpY2tCdXR0b24odGhpcy5wYWdlLCAnI2Nsb3NlUG9wdXAnKTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCBjbGlja0J1dHRvbih0aGlzLnBhZ2UsICcucGVyc29uYWwtYXJlYSA+IGEuZ28tdG8tcGVyc29uYWwtYXJlYScpO1xuICAgICAgICBhd2FpdCB3YWl0VW50aWxFbGVtZW50Rm91bmQodGhpcy5wYWdlLCAnI2xvZ2luLXBhc3N3b3JkLWxpbmsnLCB0cnVlKTtcbiAgICAgICAgYXdhaXQgY2xpY2tCdXR0b24odGhpcy5wYWdlLCAnI2xvZ2luLXBhc3N3b3JkLWxpbmsnKTtcbiAgICAgICAgYXdhaXQgd2FpdFVudGlsRWxlbWVudEZvdW5kKHRoaXMucGFnZSwgJyNsb2dpbi1wYXNzd29yZC50YWItcGFuZS5hY3RpdmUgYXBwLXVzZXItbG9naW4tZm9ybScsIHRydWUpO1xuICAgICAgfSxcbiAgICAgIGNoZWNrUmVhZGluZXNzOiBhc3luYyAoKSA9PiB7XG4gICAgICAgIGF3YWl0IHdhaXRVbnRpbEVsZW1lbnRGb3VuZCh0aGlzLnBhZ2UsICcucGVyc29uYWwtYXJlYSA+IGEuZ28tdG8tcGVyc29uYWwtYXJlYScsIHRydWUpO1xuICAgICAgfSxcbiAgICAgIHBvc3RBY3Rpb246IGFzeW5jICgpID0+IHJlZGlyZWN0T3JEaWFsb2codGhpcy5wYWdlKSxcbiAgICAgIHBvc3NpYmxlUmVzdWx0czogZ2V0UG9zc2libGVMb2dpblJlc3VsdHModGhpcy5wYWdlKSxcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgZmV0Y2hEYXRhKCkge1xuICAgIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCBmZXRjaFRyYW5zYWN0aW9ucyh0aGlzLnBhZ2UsIHRoaXMub3B0aW9ucyk7XG4gICAgY29uc3QgYWNjb3VudHMgPSBPYmplY3Qua2V5cyhyZXN1bHRzKS5tYXAoKGFjY291bnROdW1iZXIpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGFjY291bnROdW1iZXIsXG4gICAgICAgIHR4bnM6IHJlc3VsdHNbYWNjb3VudE51bWJlcl0sXG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHN1Y2Nlc3M6IHRydWUsXG4gICAgICBhY2NvdW50cyxcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IE1heFNjcmFwZXI7XG4iXX0=
|
|
304
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JhcGVycy9tYXgudHMiXSwibmFtZXMiOlsiZGVidWciLCJCQVNFX0FDVElPTlNfVVJMIiwiQkFTRV9BUElfQUNUSU9OU19VUkwiLCJCQVNFX1dFTENPTUVfVVJMIiwiTE9HSU5fVVJMIiwiUEFTU1dPUkRfRVhQSVJFRF9VUkwiLCJTVUNDRVNTX1VSTCIsIk5PUk1BTF9UWVBFX05BTUUiLCJBVE1fVFlQRV9OQU1FIiwiSU5URVJORVRfU0hPUFBJTkdfVFlQRV9OQU1FIiwiSU5TVEFMTE1FTlRTX1RZUEVfTkFNRSIsIk1PTlRITFlfQ0hBUkdFX1RZUEVfTkFNRSIsIk9ORV9NT05USF9QT1NUUE9ORURfVFlQRV9OQU1FIiwiTU9OVEhMWV9QT1NUUE9ORURfVFlQRV9OQU1FIiwiTU9OVEhMWV9QQVlNRU5UX1RZUEVfTkFNRSIsIkZVVFVSRV9QVVJDSEFTRV9GSU5BTkNJTkciLCJNT05USExZX1BPU1RQT05FRF9JTlNUQUxMTUVOVFNfVFlQRV9OQU1FIiwiVEhJUlRZX0RBWVNfUExVU19UWVBFX05BTUUiLCJUV09fTU9OVEhTX1BPU1RQT05FRF9UWVBFX05BTUUiLCJNT05USExZX0NIQVJHRV9QTFVTX0lOVEVSRVNUX1RZUEVfTkFNRSIsIkNSRURJVF9UWVBFX05BTUUiLCJBQ0NVTVVMQVRJTkdfQkFTS0VUIiwiUE9TVFBPTkVEX1RSQU5TQUNUSU9OX0lOU1RBTExNRU5UUyIsIklOVkFMSURfREVUQUlMU19TRUxFQ1RPUiIsIkxPR0lOX0VSUk9SX1NFTEVDVE9SIiwiY2F0ZWdvcmllcyIsIk1hcCIsInJlZGlyZWN0T3JEaWFsb2ciLCJwYWdlIiwiUHJvbWlzZSIsInJhY2UiLCJnZXRUcmFuc2FjdGlvbnNVcmwiLCJtb250aE1vbWVudCIsIm1vbnRoIiwieWVhciIsImRhdGUiLCJwYXRoIiwibG9hZENhdGVnb3JpZXMiLCJyZXMiLCJBcnJheSIsImlzQXJyYXkiLCJyZXN1bHQiLCJsZW5ndGgiLCJmb3JFYWNoIiwiaWQiLCJuYW1lIiwic2V0IiwiZ2V0VHJhbnNhY3Rpb25UeXBlIiwidHhuVHlwZVN0ciIsImNsZWFuZWRVcFR4blR5cGVTdHIiLCJyZXBsYWNlIiwidHJpbSIsIlRyYW5zYWN0aW9uVHlwZXMiLCJOb3JtYWwiLCJJbnN0YWxsbWVudHMiLCJFcnJvciIsImdldEluc3RhbGxtZW50c0luZm8iLCJjb21tZW50cyIsIm1hdGNoZXMiLCJtYXRjaCIsIm51bWJlciIsInBhcnNlSW50IiwidG90YWwiLCJtYXBUcmFuc2FjdGlvbiIsInJhd1RyYW5zYWN0aW9uIiwiaXNQZW5kaW5nIiwicGF5bWVudERhdGUiLCJwcm9jZXNzZWREYXRlIiwicHVyY2hhc2VEYXRlIiwidG9JU09TdHJpbmciLCJzdGF0dXMiLCJUcmFuc2FjdGlvblN0YXR1c2VzIiwiUGVuZGluZyIsIkNvbXBsZXRlZCIsInR5cGUiLCJwbGFuTmFtZSIsIm9yaWdpbmFsQW1vdW50Iiwib3JpZ2luYWxDdXJyZW5jeSIsImNoYXJnZWRBbW91bnQiLCJhY3R1YWxQYXltZW50QW1vdW50IiwiZGVzY3JpcHRpb24iLCJtZXJjaGFudE5hbWUiLCJtZW1vIiwiY2F0ZWdvcnkiLCJnZXQiLCJjYXRlZ29yeUlkIiwiaW5zdGFsbG1lbnRzIiwidW5kZWZpbmVkIiwiZmV0Y2hUcmFuc2FjdGlvbnNGb3JNb250aCIsInVybCIsImRhdGEiLCJ0cmFuc2FjdGlvbnNCeUFjY291bnQiLCJ0cmFuc2FjdGlvbnMiLCJmaWx0ZXIiLCJ0cmFuc2FjdGlvbiIsInNob3J0Q2FyZE51bWJlciIsIm1hcHBlZFRyYW5zYWN0aW9uIiwicHVzaCIsImFkZFJlc3VsdCIsImFsbFJlc3VsdHMiLCJjbG9uZWRSZXN1bHRzIiwiT2JqZWN0Iiwia2V5cyIsImFjY291bnROdW1iZXIiLCJwcmVwYXJlVHJhbnNhY3Rpb25zIiwidHhucyIsInN0YXJ0TW9tZW50IiwiY29tYmluZUluc3RhbGxtZW50cyIsImNsb25lZFR4bnMiLCJmcm9tIiwiZmV0Y2hUcmFuc2FjdGlvbnMiLCJvcHRpb25zIiwiZnV0dXJlTW9udGhzVG9TY3JhcGUiLCJkZWZhdWx0U3RhcnRNb21lbnQiLCJzdWJ0cmFjdCIsInN0YXJ0RGF0ZSIsInRvRGF0ZSIsIm1vbWVudCIsIm1heCIsImFsbE1vbnRocyIsImkiLCJnZXRQb3NzaWJsZUxvZ2luUmVzdWx0cyIsInVybHMiLCJMb2dpblJlc3VsdHMiLCJTdWNjZXNzIiwiQ2hhbmdlUGFzc3dvcmQiLCJJbnZhbGlkUGFzc3dvcmQiLCJVbmtub3duRXJyb3IiLCJjcmVhdGVMb2dpbkZpZWxkcyIsImNyZWRlbnRpYWxzIiwic2VsZWN0b3IiLCJ2YWx1ZSIsInVzZXJuYW1lIiwicGFzc3dvcmQiLCJNYXhTY3JhcGVyIiwiQmFzZVNjcmFwZXJXaXRoQnJvd3NlciIsImdldExvZ2luT3B0aW9ucyIsImxvZ2luVXJsIiwiZmllbGRzIiwic3VibWl0QnV0dG9uU2VsZWN0b3IiLCJwcmVBY3Rpb24iLCJjaGVja1JlYWRpbmVzcyIsInBvc3RBY3Rpb24iLCJwb3NzaWJsZVJlc3VsdHMiLCJmZXRjaERhdGEiLCJyZXN1bHRzIiwiYWNjb3VudHMiLCJtYXAiLCJzdWNjZXNzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQTs7Ozs7Ozs7OztBQUVBLE1BQU1BLEtBQUssR0FBRyxxQkFBUyxLQUFULENBQWQ7QUFlQSxNQUFNQyxnQkFBZ0IsR0FBRywwQkFBekI7QUFDQSxNQUFNQyxvQkFBb0IsR0FBRywrQkFBN0I7QUFDQSxNQUFNQyxnQkFBZ0IsR0FBRyx1QkFBekI7QUFFQSxNQUFNQyxTQUFTLEdBQUksR0FBRUQsZ0JBQWlCLG1CQUF0QztBQUNBLE1BQU1FLG9CQUFvQixHQUFJLEdBQUVKLGdCQUFpQix1Q0FBakQ7QUFDQSxNQUFNSyxXQUFXLEdBQUksR0FBRUgsZ0JBQWlCLG9CQUF4QztBQUVBLE1BQU1JLGdCQUFnQixHQUFHLE9BQXpCO0FBQ0EsTUFBTUMsYUFBYSxHQUFHLGtCQUF0QjtBQUNBLE1BQU1DLDJCQUEyQixHQUFHLGNBQXBDO0FBQ0EsTUFBTUMsc0JBQXNCLEdBQUcsU0FBL0I7QUFDQSxNQUFNQyx3QkFBd0IsR0FBRyxZQUFqQztBQUNBLE1BQU1DLDZCQUE2QixHQUFHLFdBQXRDO0FBQ0EsTUFBTUMsMkJBQTJCLEdBQUcsbUJBQXBDO0FBQ0EsTUFBTUMseUJBQXlCLEdBQUcsYUFBbEM7QUFDQSxNQUFNQyx5QkFBeUIsR0FBRyxxQkFBbEM7QUFDQSxNQUFNQyx3Q0FBd0MsR0FBRyxtQkFBakQ7QUFDQSxNQUFNQywwQkFBMEIsR0FBRyxjQUFuQztBQUNBLE1BQU1DLDhCQUE4QixHQUFHLGNBQXZDO0FBQ0EsTUFBTUMsc0NBQXNDLEdBQUcsZUFBL0M7QUFDQSxNQUFNQyxnQkFBZ0IsR0FBRyxPQUF6QjtBQUNBLE1BQU1DLG1CQUFtQixHQUFHLFVBQTVCO0FBQ0EsTUFBTUMsa0NBQWtDLEdBQUcsb0JBQTNDO0FBRUEsTUFBTUMsd0JBQXdCLEdBQUcsb0JBQWpDO0FBQ0EsTUFBTUMsb0JBQW9CLEdBQUcsNkJBQTdCO0FBRUEsTUFBTUMsVUFBVSxHQUFHLElBQUlDLEdBQUosRUFBbkI7O0FBRUEsU0FBU0MsZ0JBQVQsQ0FBMEJDLElBQTFCLEVBQXNDO0FBQ3BDLFNBQU9DLE9BQU8sQ0FBQ0MsSUFBUixDQUFhLENBQ2xCLGlDQUFnQkYsSUFBaEIsRUFBc0IsS0FBdEIsRUFBNkIsS0FBN0IsRUFBb0MsQ0FBQ3pCLGdCQUFELEVBQW9CLEdBQUVBLGdCQUFpQixHQUF2QyxDQUFwQyxDQURrQixFQUVsQixpREFBc0J5QixJQUF0QixFQUE0Qkwsd0JBQTVCLEVBQXNELElBQXRELENBRmtCLEVBR2xCLGlEQUFzQkssSUFBdEIsRUFBNEJKLG9CQUE1QixFQUFrRCxJQUFsRCxDQUhrQixDQUFiLENBQVA7QUFLRDs7QUFFRCxTQUFTTyxrQkFBVCxDQUE0QkMsV0FBNUIsRUFBaUQ7QUFDL0MsUUFBTUMsS0FBSyxHQUFHRCxXQUFXLENBQUNDLEtBQVosS0FBc0IsQ0FBcEM7QUFDQSxRQUFNQyxJQUFJLEdBQUdGLFdBQVcsQ0FBQ0UsSUFBWixFQUFiO0FBQ0EsUUFBTUMsSUFBSSxHQUFJLEdBQUVELElBQUssSUFBR0QsS0FBTSxLQUE5QjtBQUVBOzs7Ozs7O0FBTUEsU0FBTyx1QkFBUy9CLG9CQUFULEVBQStCO0FBQ3BDa0MsSUFBQUEsSUFBSSxFQUFHLGtJQUFpSUQsSUFBSztBQUR6RyxHQUEvQixDQUFQO0FBR0Q7O0FBU0QsZUFBZUUsY0FBZixDQUE4QlQsSUFBOUIsRUFBMEM7QUFDeEM1QixFQUFBQSxLQUFLLENBQUMsb0JBQUQsQ0FBTDtBQUNBLFFBQU1zQyxHQUFHLEdBQUcsTUFBTSwrQkFBd0NWLElBQXhDLEVBQStDLEdBQUUxQixvQkFBcUIsNkJBQXRFLENBQWxCOztBQUNBLE1BQUlvQyxHQUFHLElBQUlDLEtBQUssQ0FBQ0MsT0FBTixDQUFjRixHQUFHLENBQUNHLE1BQWxCLENBQVgsRUFBc0M7QUFBQTs7QUFDcEN6QyxJQUFBQSxLQUFLLENBQUUsR0FBRXNDLEdBQUcsQ0FBQ0csTUFBSixDQUFXQyxNQUFPLG9CQUF0QixDQUFMO0FBQ0UsbUJBQUFKLEdBQUcsQ0FBQ0csTUFBSiw0REFBWUUsT0FBWixDQUFvQixDQUFDO0FBQUVDLE1BQUFBLEVBQUY7QUFBTUMsTUFBQUE7QUFBTixLQUFELEtBQWtCcEIsVUFBVSxDQUFDcUIsR0FBWCxDQUFlRixFQUFmLEVBQW1CQyxJQUFuQixDQUF0QztBQUNIO0FBQ0Y7O0FBRUQsU0FBU0Usa0JBQVQsQ0FBNEJDLFVBQTVCLEVBQWdEO0FBQzlDLFFBQU1DLG1CQUFtQixHQUFHRCxVQUFVLENBQUNFLE9BQVgsQ0FBbUIsSUFBbkIsRUFBeUIsR0FBekIsRUFBOEJDLElBQTlCLEVBQTVCOztBQUNBLFVBQVFGLG1CQUFSO0FBQ0UsU0FBS3pDLGFBQUw7QUFDQSxTQUFLRCxnQkFBTDtBQUNBLFNBQUtJLHdCQUFMO0FBQ0EsU0FBS0MsNkJBQUw7QUFDQSxTQUFLQywyQkFBTDtBQUNBLFNBQUtFLHlCQUFMO0FBQ0EsU0FBS0QseUJBQUw7QUFDQSxTQUFLRSx3Q0FBTDtBQUNBLFNBQUtDLDBCQUFMO0FBQ0EsU0FBS0MsOEJBQUw7QUFDQSxTQUFLRyxtQkFBTDtBQUNBLFNBQUtaLDJCQUFMO0FBQ0EsU0FBS1Usc0NBQUw7QUFDQSxTQUFLRyxrQ0FBTDtBQUNFLGFBQU84QixnQ0FBaUJDLE1BQXhCOztBQUNGLFNBQUszQyxzQkFBTDtBQUNBLFNBQUtVLGdCQUFMO0FBQ0UsYUFBT2dDLGdDQUFpQkUsWUFBeEI7O0FBQ0Y7QUFDRSxZQUFNLElBQUlDLEtBQUosQ0FBVyw0QkFBMkJOLG1CQUFvQixFQUExRCxDQUFOO0FBcEJKO0FBc0JEOztBQUVELFNBQVNPLG1CQUFULENBQTZCQyxRQUE3QixFQUErQztBQUM3QyxNQUFJLENBQUNBLFFBQUwsRUFBZTtBQUNiLFdBQU8sSUFBUDtBQUNEOztBQUNELFFBQU1DLE9BQU8sR0FBR0QsUUFBUSxDQUFDRSxLQUFULENBQWUsTUFBZixDQUFoQjs7QUFDQSxNQUFJLENBQUNELE9BQUQsSUFBWUEsT0FBTyxDQUFDaEIsTUFBUixHQUFpQixDQUFqQyxFQUFvQztBQUNsQyxXQUFPLElBQVA7QUFDRDs7QUFFRCxTQUFPO0FBQ0xrQixJQUFBQSxNQUFNLEVBQUVDLFFBQVEsQ0FBQ0gsT0FBTyxDQUFDLENBQUQsQ0FBUixFQUFhLEVBQWIsQ0FEWDtBQUVMSSxJQUFBQSxLQUFLLEVBQUVELFFBQVEsQ0FBQ0gsT0FBTyxDQUFDLENBQUQsQ0FBUixFQUFhLEVBQWI7QUFGVixHQUFQO0FBSUQ7O0FBQ0QsU0FBU0ssY0FBVCxDQUF3QkMsY0FBeEIsRUFBeUU7QUFDdkUsUUFBTUMsU0FBUyxHQUFHRCxjQUFjLENBQUNFLFdBQWYsS0FBK0IsSUFBakQ7QUFDQSxRQUFNQyxhQUFhLEdBQUcscUJBQU9GLFNBQVMsR0FDcENELGNBQWMsQ0FBQ0ksWUFEcUIsR0FFcENKLGNBQWMsQ0FBQ0UsV0FGSyxFQUVRRyxXQUZSLEVBQXRCO0FBR0EsUUFBTUMsTUFBTSxHQUFHTCxTQUFTLEdBQUdNLG1DQUFvQkMsT0FBdkIsR0FBaUNELG1DQUFvQkUsU0FBN0U7QUFFQSxTQUFPO0FBQ0xDLElBQUFBLElBQUksRUFBRTNCLGtCQUFrQixDQUFDaUIsY0FBYyxDQUFDVyxRQUFoQixDQURuQjtBQUVMeEMsSUFBQUEsSUFBSSxFQUFFLHFCQUFPNkIsY0FBYyxDQUFDSSxZQUF0QixFQUFvQ0MsV0FBcEMsRUFGRDtBQUdMRixJQUFBQSxhQUhLO0FBSUxTLElBQUFBLGNBQWMsRUFBRSxDQUFDWixjQUFjLENBQUNZLGNBSjNCO0FBS0xDLElBQUFBLGdCQUFnQixFQUFFYixjQUFjLENBQUNhLGdCQUw1QjtBQU1MQyxJQUFBQSxhQUFhLEVBQUUsQ0FBQ2QsY0FBYyxDQUFDZSxtQkFOMUI7QUFPTEMsSUFBQUEsV0FBVyxFQUFFaEIsY0FBYyxDQUFDaUIsWUFBZixDQUE0QjlCLElBQTVCLEVBUFI7QUFRTCtCLElBQUFBLElBQUksRUFBRWxCLGNBQWMsQ0FBQ1AsUUFSaEI7QUFTTDBCLElBQUFBLFFBQVEsRUFBRTFELFVBQVUsQ0FBQzJELEdBQVgsQ0FBZXBCLGNBQWYsYUFBZUEsY0FBZix1QkFBZUEsY0FBYyxDQUFFcUIsVUFBL0IsQ0FUTDtBQVVMQyxJQUFBQSxZQUFZLEVBQUU5QixtQkFBbUIsQ0FBQ1EsY0FBYyxDQUFDUCxRQUFoQixDQUFuQixJQUFnRDhCLFNBVnpEO0FBV0xqQixJQUFBQTtBQVhLLEdBQVA7QUFhRDs7QUFPRCxlQUFla0IseUJBQWYsQ0FBeUM1RCxJQUF6QyxFQUFxREksV0FBckQsRUFBMEU7QUFDeEUsUUFBTXlELEdBQUcsR0FBRzFELGtCQUFrQixDQUFDQyxXQUFELENBQTlCO0FBRUEsUUFBTTBELElBQUksR0FBRyxNQUFNLCtCQUE4QzlELElBQTlDLEVBQW9ENkQsR0FBcEQsQ0FBbkI7QUFDQSxRQUFNRSxxQkFBb0QsR0FBRyxFQUE3RDtBQUVBLE1BQUksQ0FBQ0QsSUFBRCxJQUFTLENBQUNBLElBQUksQ0FBQ2pELE1BQW5CLEVBQTJCLE9BQU9rRCxxQkFBUDtBQUUzQkQsRUFBQUEsSUFBSSxDQUFDakQsTUFBTCxDQUFZbUQsWUFBWixDQUNFO0FBREYsR0FFR0MsTUFGSCxDQUVXQyxXQUFELElBQWlCLENBQUMsQ0FBQ0EsV0FBVyxDQUFDbkIsUUFGekMsRUFHR2hDLE9BSEgsQ0FHWW1ELFdBQUQsSUFBcUM7QUFDNUMsUUFBSSxDQUFDSCxxQkFBcUIsQ0FBQ0csV0FBVyxDQUFDQyxlQUFiLENBQTFCLEVBQXlEO0FBQ3ZESixNQUFBQSxxQkFBcUIsQ0FBQ0csV0FBVyxDQUFDQyxlQUFiLENBQXJCLEdBQXFELEVBQXJEO0FBQ0Q7O0FBRUQsVUFBTUMsaUJBQWlCLEdBQUdqQyxjQUFjLENBQUMrQixXQUFELENBQXhDO0FBQ0FILElBQUFBLHFCQUFxQixDQUFDRyxXQUFXLENBQUNDLGVBQWIsQ0FBckIsQ0FBbURFLElBQW5ELENBQXdERCxpQkFBeEQ7QUFDRCxHQVZIO0FBWUEsU0FBT0wscUJBQVA7QUFDRDs7QUFFRCxTQUFTTyxTQUFULENBQW1CQyxVQUFuQixFQUE4RDFELE1BQTlELEVBQXFHO0FBQ25HLFFBQU0yRCxhQUE0QyxxQkFBUUQsVUFBUixDQUFsRDs7QUFDQUUsRUFBQUEsTUFBTSxDQUFDQyxJQUFQLENBQVk3RCxNQUFaLEVBQW9CRSxPQUFwQixDQUE2QjRELGFBQUQsSUFBbUI7QUFDN0MsUUFBSSxDQUFDSCxhQUFhLENBQUNHLGFBQUQsQ0FBbEIsRUFBbUM7QUFDakNILE1BQUFBLGFBQWEsQ0FBQ0csYUFBRCxDQUFiLEdBQStCLEVBQS9CO0FBQ0Q7O0FBQ0RILElBQUFBLGFBQWEsQ0FBQ0csYUFBRCxDQUFiLENBQTZCTixJQUE3QixDQUFrQyxHQUFHeEQsTUFBTSxDQUFDOEQsYUFBRCxDQUEzQztBQUNELEdBTEQ7QUFNQSxTQUFPSCxhQUFQO0FBQ0Q7O0FBRUQsU0FBU0ksbUJBQVQsQ0FBNkJDLElBQTdCLEVBQWtEQyxXQUFsRCxFQUE4RUMsbUJBQTlFLEVBQTRHO0FBQzFHLE1BQUlDLFVBQVUsR0FBR3JFLEtBQUssQ0FBQ3NFLElBQU4sQ0FBV0osSUFBWCxDQUFqQjs7QUFDQSxNQUFJLENBQUNFLG1CQUFMLEVBQTBCO0FBQ3hCQyxJQUFBQSxVQUFVLEdBQUcsbUNBQWdCQSxVQUFoQixDQUFiO0FBQ0Q7O0FBQ0RBLEVBQUFBLFVBQVUsR0FBRywwQ0FBdUJBLFVBQXZCLENBQWI7QUFDQUEsRUFBQUEsVUFBVSxHQUFHLHlDQUFzQkEsVUFBdEIsRUFBa0NGLFdBQWxDLEVBQStDQyxtQkFBbUIsSUFBSSxLQUF0RSxDQUFiO0FBQ0EsU0FBT0MsVUFBUDtBQUNEOztBQUVELGVBQWVFLGlCQUFmLENBQWlDbEYsSUFBakMsRUFBNkNtRixPQUE3QyxFQUFxRTtBQUFBOztBQUNuRSxRQUFNQyxvQkFBb0IsNEJBQUdELE9BQU8sQ0FBQ0Msb0JBQVgseUVBQW1DLENBQTdEO0FBQ0EsUUFBTUMsa0JBQWtCLEdBQUcsdUJBQVNDLFFBQVQsQ0FBa0IsQ0FBbEIsRUFBcUIsT0FBckIsQ0FBM0I7QUFDQSxRQUFNQyxTQUFTLEdBQUdKLE9BQU8sQ0FBQ0ksU0FBUixJQUFxQkYsa0JBQWtCLENBQUNHLE1BQW5CLEVBQXZDOztBQUNBLFFBQU1WLFdBQVcsR0FBR1csZ0JBQU9DLEdBQVAsQ0FBV0wsa0JBQVgsRUFBK0IscUJBQU9FLFNBQVAsQ0FBL0IsQ0FBcEI7O0FBQ0EsUUFBTUksU0FBUyxHQUFHLG9CQUFtQmIsV0FBbkIsRUFBZ0NNLG9CQUFoQyxDQUFsQjtBQUVBLFFBQU0zRSxjQUFjLENBQUNULElBQUQsQ0FBcEI7QUFFQSxNQUFJdUUsVUFBeUMsR0FBRyxFQUFoRDs7QUFDQSxPQUFLLElBQUlxQixDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHRCxTQUFTLENBQUM3RSxNQUE5QixFQUFzQzhFLENBQUMsSUFBSSxDQUEzQyxFQUE4QztBQUM1QyxVQUFNL0UsTUFBTSxHQUFHLE1BQU0rQyx5QkFBeUIsQ0FBQzVELElBQUQsRUFBTzJGLFNBQVMsQ0FBQ0MsQ0FBRCxDQUFoQixDQUE5QztBQUNBckIsSUFBQUEsVUFBVSxHQUFHRCxTQUFTLENBQUNDLFVBQUQsRUFBYTFELE1BQWIsQ0FBdEI7QUFDRDs7QUFFRDRELEVBQUFBLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZSCxVQUFaLEVBQXdCeEQsT0FBeEIsQ0FBaUM0RCxhQUFELElBQW1CO0FBQ2pELFFBQUlFLElBQUksR0FBR04sVUFBVSxDQUFDSSxhQUFELENBQXJCO0FBQ0FFLElBQUFBLElBQUksR0FBR0QsbUJBQW1CLENBQUNDLElBQUQsRUFBT0MsV0FBUCxFQUFvQkssT0FBTyxDQUFDSixtQkFBUixJQUErQixLQUFuRCxDQUExQjtBQUNBUixJQUFBQSxVQUFVLENBQUNJLGFBQUQsQ0FBVixHQUE0QkUsSUFBNUI7QUFDRCxHQUpEO0FBTUEsU0FBT04sVUFBUDtBQUNEOztBQUVELFNBQVNzQix1QkFBVCxDQUFpQzdGLElBQWpDLEVBQW1FO0FBQ2pFLFFBQU04RixJQUEwQixHQUFHLEVBQW5DO0FBQ0FBLEVBQUFBLElBQUksQ0FBQ0MscUNBQWFDLE9BQWQsQ0FBSixHQUE2QixDQUFDdEgsV0FBRCxDQUE3QjtBQUNBb0gsRUFBQUEsSUFBSSxDQUFDQyxxQ0FBYUUsY0FBZCxDQUFKLEdBQW9DLENBQUN4SCxvQkFBRCxDQUFwQztBQUNBcUgsRUFBQUEsSUFBSSxDQUFDQyxxQ0FBYUcsZUFBZCxDQUFKLEdBQXFDLENBQUMsWUFBWTtBQUNoRCxXQUFPLGdEQUFxQmxHLElBQXJCLEVBQTJCTCx3QkFBM0IsQ0FBUDtBQUNELEdBRm9DLENBQXJDO0FBR0FtRyxFQUFBQSxJQUFJLENBQUNDLHFDQUFhSSxZQUFkLENBQUosR0FBa0MsQ0FBQyxZQUFZO0FBQzdDLFdBQU8sZ0RBQXFCbkcsSUFBckIsRUFBMkJKLG9CQUEzQixDQUFQO0FBQ0QsR0FGaUMsQ0FBbEM7QUFHQSxTQUFPa0csSUFBUDtBQUNEOztBQUVELFNBQVNNLGlCQUFULENBQTJCQyxXQUEzQixFQUE0RDtBQUMxRCxTQUFPLENBQ0w7QUFBRUMsSUFBQUEsUUFBUSxFQUFFLFlBQVo7QUFBMEJDLElBQUFBLEtBQUssRUFBRUYsV0FBVyxDQUFDRztBQUE3QyxHQURLLEVBRUw7QUFBRUYsSUFBQUEsUUFBUSxFQUFFLFdBQVo7QUFBeUJDLElBQUFBLEtBQUssRUFBRUYsV0FBVyxDQUFDSTtBQUE1QyxHQUZLLENBQVA7QUFJRDs7QUFFRCxNQUFNQyxVQUFOLFNBQXlCQyw4Q0FBekIsQ0FBZ0Q7QUFDOUNDLEVBQUFBLGVBQWUsQ0FBQ1AsV0FBRCxFQUFrQztBQUMvQyxXQUFPO0FBQ0xRLE1BQUFBLFFBQVEsRUFBRXJJLFNBREw7QUFFTHNJLE1BQUFBLE1BQU0sRUFBRVYsaUJBQWlCLENBQUNDLFdBQUQsQ0FGcEI7QUFHTFUsTUFBQUEsb0JBQW9CLEVBQUUsNEJBSGpCO0FBSUxDLE1BQUFBLFNBQVMsRUFBRSxZQUFZO0FBQ3JCLFlBQUksTUFBTSxnREFBcUIsS0FBS2hILElBQTFCLEVBQWdDLGFBQWhDLENBQVYsRUFBMEQ7QUFDeEQsZ0JBQU0sdUNBQVksS0FBS0EsSUFBakIsRUFBdUIsYUFBdkIsQ0FBTjtBQUNEOztBQUNELGNBQU0sdUNBQVksS0FBS0EsSUFBakIsRUFBdUIsd0NBQXZCLENBQU47QUFDQSxjQUFNLGlEQUFzQixLQUFLQSxJQUEzQixFQUFpQyxzQkFBakMsRUFBeUQsSUFBekQsQ0FBTjtBQUNBLGNBQU0sdUNBQVksS0FBS0EsSUFBakIsRUFBdUIsc0JBQXZCLENBQU47QUFDQSxjQUFNLGlEQUFzQixLQUFLQSxJQUEzQixFQUFpQyxxREFBakMsRUFBd0YsSUFBeEYsQ0FBTjtBQUNELE9BWkk7QUFhTGlILE1BQUFBLGNBQWMsRUFBRSxZQUFZO0FBQzFCLGNBQU0saURBQXNCLEtBQUtqSCxJQUEzQixFQUFpQyx3Q0FBakMsRUFBMkUsSUFBM0UsQ0FBTjtBQUNELE9BZkk7QUFnQkxrSCxNQUFBQSxVQUFVLEVBQUUsWUFBWW5ILGdCQUFnQixDQUFDLEtBQUtDLElBQU4sQ0FoQm5DO0FBaUJMbUgsTUFBQUEsZUFBZSxFQUFFdEIsdUJBQXVCLENBQUMsS0FBSzdGLElBQU47QUFqQm5DLEtBQVA7QUFtQkQ7O0FBRUQsUUFBTW9ILFNBQU4sR0FBa0I7QUFDaEIsVUFBTUMsT0FBTyxHQUFHLE1BQU1uQyxpQkFBaUIsQ0FBQyxLQUFLbEYsSUFBTixFQUFZLEtBQUttRixPQUFqQixDQUF2QztBQUNBLFVBQU1tQyxRQUFRLEdBQUc3QyxNQUFNLENBQUNDLElBQVAsQ0FBWTJDLE9BQVosRUFBcUJFLEdBQXJCLENBQTBCNUMsYUFBRCxJQUFtQjtBQUMzRCxhQUFPO0FBQ0xBLFFBQUFBLGFBREs7QUFFTEUsUUFBQUEsSUFBSSxFQUFFd0MsT0FBTyxDQUFDMUMsYUFBRDtBQUZSLE9BQVA7QUFJRCxLQUxnQixDQUFqQjtBQU9BLFdBQU87QUFDTDZDLE1BQUFBLE9BQU8sRUFBRSxJQURKO0FBRUxGLE1BQUFBO0FBRkssS0FBUDtBQUlEOztBQXBDNkM7O2VBdUNqQ1osVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBidWlsZFVybCBmcm9tICdidWlsZC11cmwnO1xuaW1wb3J0IG1vbWVudCwgeyBNb21lbnQgfSBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHsgUGFnZSB9IGZyb20gJ3B1cHBldGVlcic7XG5pbXBvcnQgeyBmZXRjaEdldFdpdGhpblBhZ2UgfSBmcm9tICcuLi9oZWxwZXJzL2ZldGNoJztcbmltcG9ydCB7IEJhc2VTY3JhcGVyV2l0aEJyb3dzZXIsIExvZ2luUmVzdWx0cywgUG9zc2libGVMb2dpblJlc3VsdHMgfSBmcm9tICcuL2Jhc2Utc2NyYXBlci13aXRoLWJyb3dzZXInO1xuaW1wb3J0IHsgd2FpdEZvclJlZGlyZWN0IH0gZnJvbSAnLi4vaGVscGVycy9uYXZpZ2F0aW9uJztcbmltcG9ydCB7IHdhaXRVbnRpbEVsZW1lbnRGb3VuZCwgZWxlbWVudFByZXNlbnRPblBhZ2UsIGNsaWNrQnV0dG9uIH0gZnJvbSAnLi4vaGVscGVycy9lbGVtZW50cy1pbnRlcmFjdGlvbnMnO1xuaW1wb3J0IGdldEFsbE1vbnRoTW9tZW50cyBmcm9tICcuLi9oZWxwZXJzL2RhdGVzJztcbmltcG9ydCB7IGZpeEluc3RhbGxtZW50cywgc29ydFRyYW5zYWN0aW9uc0J5RGF0ZSwgZmlsdGVyT2xkVHJhbnNhY3Rpb25zIH0gZnJvbSAnLi4vaGVscGVycy90cmFuc2FjdGlvbnMnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24sIFRyYW5zYWN0aW9uU3RhdHVzZXMsIFRyYW5zYWN0aW9uVHlwZXMgfSBmcm9tICcuLi90cmFuc2FjdGlvbnMnO1xuaW1wb3J0IHsgU2NhcGVyT3B0aW9ucywgU2NyYXBlckNyZWRlbnRpYWxzIH0gZnJvbSAnLi9iYXNlLXNjcmFwZXInO1xuaW1wb3J0IHsgZ2V0RGVidWcgfSBmcm9tICcuLi9oZWxwZXJzL2RlYnVnJztcblxuY29uc3QgZGVidWcgPSBnZXREZWJ1ZygnbWF4Jyk7XG5cbmludGVyZmFjZSBTY3JhcGVkVHJhbnNhY3Rpb24ge1xuICBzaG9ydENhcmROdW1iZXI6IHN0cmluZztcbiAgcGF5bWVudERhdGU/OiBzdHJpbmc7XG4gIHB1cmNoYXNlRGF0ZTogc3RyaW5nO1xuICBhY3R1YWxQYXltZW50QW1vdW50OiBzdHJpbmc7XG4gIG9yaWdpbmFsQ3VycmVuY3k6IHN0cmluZztcbiAgb3JpZ2luYWxBbW91bnQ6IG51bWJlcjtcbiAgcGxhbk5hbWU6IHN0cmluZztcbiAgY29tbWVudHM6IHN0cmluZztcbiAgbWVyY2hhbnROYW1lOiBzdHJpbmc7XG4gIGNhdGVnb3J5SWQ6IG51bWJlcjtcbn1cblxuY29uc3QgQkFTRV9BQ1RJT05TX1VSTCA9ICdodHRwczovL29ubGluZS5tYXguY28uaWwnO1xuY29uc3QgQkFTRV9BUElfQUNUSU9OU19VUkwgPSAnaHR0cHM6Ly9vbmxpbmVsY2FwaS5tYXguY28uaWwnO1xuY29uc3QgQkFTRV9XRUxDT01FX1VSTCA9ICdodHRwczovL3d3dy5tYXguY28uaWwnO1xuXG5jb25zdCBMT0dJTl9VUkwgPSBgJHtCQVNFX1dFTENPTUVfVVJMfS9ob21lcGFnZS93ZWxjb21lYDtcbmNvbnN0IFBBU1NXT1JEX0VYUElSRURfVVJMID0gYCR7QkFTRV9BQ1RJT05TX1VSTH0vQW5vbnltb3VzL0xvZ2luL1Bhc3N3b3JkRXhwaXJlZC5hc3B4YDtcbmNvbnN0IFNVQ0NFU1NfVVJMID0gYCR7QkFTRV9XRUxDT01FX1VSTH0vaG9tZXBhZ2UvcGVyc29uYWxgO1xuXG5jb25zdCBOT1JNQUxfVFlQRV9OQU1FID0gJ9eo15LXmdec15QnO1xuY29uc3QgQVRNX1RZUEVfTkFNRSA9ICfXl9eZ15XXkSDXoteh16fXldeqINee15nXmdeT15knO1xuY29uc3QgSU5URVJORVRfU0hPUFBJTkdfVFlQRV9OQU1FID0gJ9eQ15nXoNeY16jXoNeYL9eX15VcItecJztcbmNvbnN0IElOU1RBTExNRU5UU19UWVBFX05BTUUgPSAn16rXqdec15XXnteZ150nO1xuY29uc3QgTU9OVEhMWV9DSEFSR0VfVFlQRV9OQU1FID0gJ9eX15nXldeRINeX15XXk9ep15knO1xuY29uc3QgT05FX01PTlRIX1BPU1RQT05FRF9UWVBFX05BTUUgPSAn15PXl9eV15kg15fXldeT16knO1xuY29uc3QgTU9OVEhMWV9QT1NUUE9ORURfVFlQRV9OQU1FID0gJ9eT15fXldeZINec15fXmdeV15Eg15TXl9eV15PXqdeZJztcbmNvbnN0IE1PTlRITFlfUEFZTUVOVF9UWVBFX05BTUUgPSAn16rXqdec15XXnSDXl9eV15PXqdeZJztcbmNvbnN0IEZVVFVSRV9QVVJDSEFTRV9GSU5BTkNJTkcgPSAn157Xmdee15XXnyDXnNeo15vXmdep15Qg16LXqteZ15PXmdeqJztcbmNvbnN0IE1PTlRITFlfUE9TVFBPTkVEX0lOU1RBTExNRU5UU19UWVBFX05BTUUgPSAn15PXl9eV15kg15fXldeT16kg16rXqdec15XXnteZ150nO1xuY29uc3QgVEhJUlRZX0RBWVNfUExVU19UWVBFX05BTUUgPSAn16LXoden16ogMzAg16TXnNeV16EnO1xuY29uc3QgVFdPX01PTlRIU19QT1NUUE9ORURfVFlQRV9OQU1FID0gJ9eT15fXldeZINeX15XXk9ep15nXmdedJztcbmNvbnN0IE1PTlRITFlfQ0hBUkdFX1BMVVNfSU5URVJFU1RfVFlQRV9OQU1FID0gJ9eX15XXk9ep15kgKyDXqNeZ15HXmdeqJztcbmNvbnN0IENSRURJVF9UWVBFX05BTUUgPSAn16fXqNeT15nXmCc7XG5jb25zdCBBQ0NVTVVMQVRJTkdfQkFTS0VUID0gJ9eh15wg157XpteY15HXqCc7XG5jb25zdCBQT1NUUE9ORURfVFJBTlNBQ1RJT05fSU5TVEFMTE1FTlRTID0gJ9ek16jXmdeh16og15TXoteh16fXlCDXlNeT15fXldeZ15QnO1xuXG5jb25zdCBJTlZBTElEX0RFVEFJTFNfU0VMRUNUT1IgPSAnI3BvcHVwV3JvbmdEZXRhaWxzJztcbmNvbnN0IExPR0lOX0VSUk9SX1NFTEVDVE9SID0gJyNwb3B1cENhcmRIb2xkZXJzTG9naW5FcnJvcic7XG5cbmNvbnN0IGNhdGVnb3JpZXMgPSBuZXcgTWFwPG51bWJlciwgc3RyaW5nPigpO1xuXG5mdW5jdGlvbiByZWRpcmVjdE9yRGlhbG9nKHBhZ2U6IFBhZ2UpIHtcbiAgcmV0dXJuIFByb21pc2UucmFjZShbXG4gICAgd2FpdEZvclJlZGlyZWN0KHBhZ2UsIDIwMDAwLCBmYWxzZSwgW0JBU0VfV0VMQ09NRV9VUkwsIGAke0JBU0VfV0VMQ09NRV9VUkx9L2BdKSxcbiAgICB3YWl0VW50aWxFbGVtZW50Rm91bmQocGFnZSwgSU5WQUxJRF9ERVRBSUxTX1NFTEVDVE9SLCB0cnVlKSxcbiAgICB3YWl0VW50aWxFbGVtZW50Rm91bmQocGFnZSwgTE9HSU5fRVJST1JfU0VMRUNUT1IsIHRydWUpLFxuICBdKTtcbn1cblxuZnVuY3Rpb24gZ2V0VHJhbnNhY3Rpb25zVXJsKG1vbnRoTW9tZW50OiBNb21lbnQpIHtcbiAgY29uc3QgbW9udGggPSBtb250aE1vbWVudC5tb250aCgpICsgMTtcbiAgY29uc3QgeWVhciA9IG1vbnRoTW9tZW50LnllYXIoKTtcbiAgY29uc3QgZGF0ZSA9IGAke3llYXJ9LSR7bW9udGh9LTAxYDtcblxuICAvKipcbiAgICAgKiB1cmwgZXhwbGFuYXRpb246XG4gICAgICogdXNlckluZGV4OiAtMSBmb3IgYWxsIGFjY291bnQgb3duZXJzXG4gICAgICogY2FyZEluZGV4OiAtMSBmb3IgYWxsIGNhcmRzIHVuZGVyIHRoZSBhY2NvdW50XG4gICAgICogYWxsIG90aGVyIHF1ZXJ5IHBhcmFtcyBhcmUgc3RhdGljLCBiZXNpZGUgdGhlIGRhdGUgd2hpY2ggY2hhbmdlcyBmb3IgcmVxdWVzdCBwZXIgbW9udGhcbiAgICAgKi9cbiAgcmV0dXJuIGJ1aWxkVXJsKEJBU0VfQVBJX0FDVElPTlNfVVJMLCB7XG4gICAgcGF0aDogYC9hcGkvcmVnaXN0ZXJlZC90cmFuc2FjdGlvbkRldGFpbHMvZ2V0VHJhbnNhY3Rpb25zQW5kR3JhcGhzP2ZpbHRlckRhdGE9e1widXNlckluZGV4XCI6LTEsXCJjYXJkSW5kZXhcIjotMSxcIm1vbnRoVmlld1wiOnRydWUsXCJkYXRlXCI6XCIke2RhdGV9XCIsXCJkYXRlc1wiOntcInN0YXJ0RGF0ZVwiOlwiMFwiLFwiZW5kRGF0ZVwiOlwiMFwifSxcImJhbmtBY2NvdW50XCI6e1wiYmFua0FjY291bnRJbmRleFwiOi0xLFwiY2FyZHNcIjpudWxsfX0mZmlyc3RDYWxsQ2FyZEluZGV4PS0xJnY9VjMuNjktSEYtQ2FyTG9hbkxldmlNb2RlbC4yLjU3YCxcbiAgfSk7XG59XG5cbmludGVyZmFjZSBGZXRjaENhdGVnb3J5UmVzdWx0IHtcbiAgcmVzdWx0PyA6IEFycmF5PHtcbiAgICBpZDogbnVtYmVyO1xuICAgIG5hbWU6IHN0cmluZztcbiAgfT47XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGxvYWRDYXRlZ29yaWVzKHBhZ2U6IFBhZ2UpIHtcbiAgZGVidWcoJ0xvYWRpbmcgY2F0ZWdvcmllcycpO1xuICBjb25zdCByZXMgPSBhd2FpdCBmZXRjaEdldFdpdGhpblBhZ2U8RmV0Y2hDYXRlZ29yeVJlc3VsdD4ocGFnZSwgYCR7QkFTRV9BUElfQUNUSU9OU19VUkx9L2FwaS9jb250ZW50cy9nZXRDYXRlZ29yaWVzYCk7XG4gIGlmIChyZXMgJiYgQXJyYXkuaXNBcnJheShyZXMucmVzdWx0KSkge1xuICAgIGRlYnVnKGAke3Jlcy5yZXN1bHQubGVuZ3RofSBjYXRlZ29yaWVzIGxvYWRlZGApO1xuICAgICAgcmVzLnJlc3VsdD8uZm9yRWFjaCgoeyBpZCwgbmFtZSB9KSA9PiBjYXRlZ29yaWVzLnNldChpZCwgbmFtZSkpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldFRyYW5zYWN0aW9uVHlwZSh0eG5UeXBlU3RyOiBzdHJpbmcpIHtcbiAgY29uc3QgY2xlYW5lZFVwVHhuVHlwZVN0ciA9IHR4blR5cGVTdHIucmVwbGFjZSgnXFx0JywgJyAnKS50cmltKCk7XG4gIHN3aXRjaCAoY2xlYW5lZFVwVHhuVHlwZVN0cikge1xuICAgIGNhc2UgQVRNX1RZUEVfTkFNRTpcbiAgICBjYXNlIE5PUk1BTF9UWVBFX05BTUU6XG4gICAgY2FzZSBNT05USExZX0NIQVJHRV9UWVBFX05BTUU6XG4gICAgY2FzZSBPTkVfTU9OVEhfUE9TVFBPTkVEX1RZUEVfTkFNRTpcbiAgICBjYXNlIE1PTlRITFlfUE9TVFBPTkVEX1RZUEVfTkFNRTpcbiAgICBjYXNlIEZVVFVSRV9QVVJDSEFTRV9GSU5BTkNJTkc6XG4gICAgY2FzZSBNT05USExZX1BBWU1FTlRfVFlQRV9OQU1FOlxuICAgIGNhc2UgTU9OVEhMWV9QT1NUUE9ORURfSU5TVEFMTE1FTlRTX1RZUEVfTkFNRTpcbiAgICBjYXNlIFRISVJUWV9EQVlTX1BMVVNfVFlQRV9OQU1FOlxuICAgIGNhc2UgVFdPX01PTlRIU19QT1NUUE9ORURfVFlQRV9OQU1FOlxuICAgIGNhc2UgQUNDVU1VTEFUSU5HX0JBU0tFVDpcbiAgICBjYXNlIElOVEVSTkVUX1NIT1BQSU5HX1RZUEVfTkFNRTpcbiAgICBjYXNlIE1PTlRITFlfQ0hBUkdFX1BMVVNfSU5URVJFU1RfVFlQRV9OQU1FOlxuICAgIGNhc2UgUE9TVFBPTkVEX1RSQU5TQUNUSU9OX0lOU1RBTExNRU5UUzpcbiAgICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGVzLk5vcm1hbDtcbiAgICBjYXNlIElOU1RBTExNRU5UU19UWVBFX05BTUU6XG4gICAgY2FzZSBDUkVESVRfVFlQRV9OQU1FOlxuICAgICAgcmV0dXJuIFRyYW5zYWN0aW9uVHlwZXMuSW5zdGFsbG1lbnRzO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gdHJhbnNhY3Rpb24gdHlwZSAke2NsZWFuZWRVcFR4blR5cGVTdHJ9YCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0SW5zdGFsbG1lbnRzSW5mbyhjb21tZW50czogc3RyaW5nKSB7XG4gIGlmICghY29tbWVudHMpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBjb25zdCBtYXRjaGVzID0gY29tbWVudHMubWF0Y2goL1xcZCsvZyk7XG4gIGlmICghbWF0Y2hlcyB8fCBtYXRjaGVzLmxlbmd0aCA8IDIpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbnVtYmVyOiBwYXJzZUludChtYXRjaGVzWzBdLCAxMCksXG4gICAgdG90YWw6IHBhcnNlSW50KG1hdGNoZXNbMV0sIDEwKSxcbiAgfTtcbn1cbmZ1bmN0aW9uIG1hcFRyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uOiBTY3JhcGVkVHJhbnNhY3Rpb24pOiBUcmFuc2FjdGlvbiB7XG4gIGNvbnN0IGlzUGVuZGluZyA9IHJhd1RyYW5zYWN0aW9uLnBheW1lbnREYXRlID09PSBudWxsO1xuICBjb25zdCBwcm9jZXNzZWREYXRlID0gbW9tZW50KGlzUGVuZGluZyA/XG4gICAgcmF3VHJhbnNhY3Rpb24ucHVyY2hhc2VEYXRlIDpcbiAgICByYXdUcmFuc2FjdGlvbi5wYXltZW50RGF0ZSkudG9JU09TdHJpbmcoKTtcbiAgY29uc3Qgc3RhdHVzID0gaXNQZW5kaW5nID8gVHJhbnNhY3Rpb25TdGF0dXNlcy5QZW5kaW5nIDogVHJhbnNhY3Rpb25TdGF0dXNlcy5Db21wbGV0ZWQ7XG5cbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBnZXRUcmFuc2FjdGlvblR5cGUocmF3VHJhbnNhY3Rpb24ucGxhbk5hbWUpLFxuICAgIGRhdGU6IG1vbWVudChyYXdUcmFuc2FjdGlvbi5wdXJjaGFzZURhdGUpLnRvSVNPU3RyaW5nKCksXG4gICAgcHJvY2Vzc2VkRGF0ZSxcbiAgICBvcmlnaW5hbEFtb3VudDogLXJhd1RyYW5zYWN0aW9uLm9yaWdpbmFsQW1vdW50LFxuICAgIG9yaWdpbmFsQ3VycmVuY3k6IHJhd1RyYW5zYWN0aW9uLm9yaWdpbmFsQ3VycmVuY3ksXG4gICAgY2hhcmdlZEFtb3VudDogLXJhd1RyYW5zYWN0aW9uLmFjdHVhbFBheW1lbnRBbW91bnQsXG4gICAgZGVzY3JpcHRpb246IHJhd1RyYW5zYWN0aW9uLm1lcmNoYW50TmFtZS50cmltKCksXG4gICAgbWVtbzogcmF3VHJhbnNhY3Rpb24uY29tbWVudHMsXG4gICAgY2F0ZWdvcnk6IGNhdGVnb3JpZXMuZ2V0KHJhd1RyYW5zYWN0aW9uPy5jYXRlZ29yeUlkKSxcbiAgICBpbnN0YWxsbWVudHM6IGdldEluc3RhbGxtZW50c0luZm8ocmF3VHJhbnNhY3Rpb24uY29tbWVudHMpIHx8IHVuZGVmaW5lZCxcbiAgICBzdGF0dXMsXG4gIH07XG59XG5pbnRlcmZhY2UgU2NyYXBlZFRyYW5zYWN0aW9uc1Jlc3VsdHtcbiAgcmVzdWx0Pzoge1xuICAgIHRyYW5zYWN0aW9uczogU2NyYXBlZFRyYW5zYWN0aW9uW107XG4gIH07XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGZldGNoVHJhbnNhY3Rpb25zRm9yTW9udGgocGFnZTogUGFnZSwgbW9udGhNb21lbnQ6IE1vbWVudCkge1xuICBjb25zdCB1cmwgPSBnZXRUcmFuc2FjdGlvbnNVcmwobW9udGhNb21lbnQpO1xuXG4gIGNvbnN0IGRhdGEgPSBhd2FpdCBmZXRjaEdldFdpdGhpblBhZ2U8U2NyYXBlZFRyYW5zYWN0aW9uc1Jlc3VsdD4ocGFnZSwgdXJsKTtcbiAgY29uc3QgdHJhbnNhY3Rpb25zQnlBY2NvdW50OiBSZWNvcmQ8c3RyaW5nLCBUcmFuc2FjdGlvbltdPiA9IHt9O1xuXG4gIGlmICghZGF0YSB8fCAhZGF0YS5yZXN1bHQpIHJldHVybiB0cmFuc2FjdGlvbnNCeUFjY291bnQ7XG5cbiAgZGF0YS5yZXN1bHQudHJhbnNhY3Rpb25zXG4gICAgLy8gRmlsdGVyIG91dCBub24tdHJhbnNhY3Rpb25zIHdpdGhvdXQgYSBwbGFuIHR5cGUsIGUuZy4gc3VtbWFyeSByb3dzXG4gICAgLmZpbHRlcigodHJhbnNhY3Rpb24pID0+ICEhdHJhbnNhY3Rpb24ucGxhbk5hbWUpXG4gICAgLmZvckVhY2goKHRyYW5zYWN0aW9uOiBTY3JhcGVkVHJhbnNhY3Rpb24pID0+IHtcbiAgICAgIGlmICghdHJhbnNhY3Rpb25zQnlBY2NvdW50W3RyYW5zYWN0aW9uLnNob3J0Q2FyZE51bWJlcl0pIHtcbiAgICAgICAgdHJhbnNhY3Rpb25zQnlBY2NvdW50W3RyYW5zYWN0aW9uLnNob3J0Q2FyZE51bWJlcl0gPSBbXTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbWFwcGVkVHJhbnNhY3Rpb24gPSBtYXBUcmFuc2FjdGlvbih0cmFuc2FjdGlvbik7XG4gICAgICB0cmFuc2FjdGlvbnNCeUFjY291bnRbdHJhbnNhY3Rpb24uc2hvcnRDYXJkTnVtYmVyXS5wdXNoKG1hcHBlZFRyYW5zYWN0aW9uKTtcbiAgICB9KTtcblxuICByZXR1cm4gdHJhbnNhY3Rpb25zQnlBY2NvdW50O1xufVxuXG5mdW5jdGlvbiBhZGRSZXN1bHQoYWxsUmVzdWx0czogUmVjb3JkPHN0cmluZywgVHJhbnNhY3Rpb25bXT4sIHJlc3VsdDogUmVjb3JkPHN0cmluZywgVHJhbnNhY3Rpb25bXT4pIHtcbiAgY29uc3QgY2xvbmVkUmVzdWx0czogUmVjb3JkPHN0cmluZywgVHJhbnNhY3Rpb25bXT4gPSB7IC4uLmFsbFJlc3VsdHMgfTtcbiAgT2JqZWN0LmtleXMocmVzdWx0KS5mb3JFYWNoKChhY2NvdW50TnVtYmVyKSA9PiB7XG4gICAgaWYgKCFjbG9uZWRSZXN1bHRzW2FjY291bnROdW1iZXJdKSB7XG4gICAgICBjbG9uZWRSZXN1bHRzW2FjY291bnROdW1iZXJdID0gW107XG4gICAgfVxuICAgIGNsb25lZFJlc3VsdHNbYWNjb3VudE51bWJlcl0ucHVzaCguLi5yZXN1bHRbYWNjb3VudE51bWJlcl0pO1xuICB9KTtcbiAgcmV0dXJuIGNsb25lZFJlc3VsdHM7XG59XG5cbmZ1bmN0aW9uIHByZXBhcmVUcmFuc2FjdGlvbnModHhuczogVHJhbnNhY3Rpb25bXSwgc3RhcnRNb21lbnQ6IG1vbWVudC5Nb21lbnQsIGNvbWJpbmVJbnN0YWxsbWVudHM6IGJvb2xlYW4pIHtcbiAgbGV0IGNsb25lZFR4bnMgPSBBcnJheS5mcm9tKHR4bnMpO1xuICBpZiAoIWNvbWJpbmVJbnN0YWxsbWVudHMpIHtcbiAgICBjbG9uZWRUeG5zID0gZml4SW5zdGFsbG1lbnRzKGNsb25lZFR4bnMpO1xuICB9XG4gIGNsb25lZFR4bnMgPSBzb3J0VHJhbnNhY3Rpb25zQnlEYXRlKGNsb25lZFR4bnMpO1xuICBjbG9uZWRUeG5zID0gZmlsdGVyT2xkVHJhbnNhY3Rpb25zKGNsb25lZFR4bnMsIHN0YXJ0TW9tZW50LCBjb21iaW5lSW5zdGFsbG1lbnRzIHx8IGZhbHNlKTtcbiAgcmV0dXJuIGNsb25lZFR4bnM7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGZldGNoVHJhbnNhY3Rpb25zKHBhZ2U6IFBhZ2UsIG9wdGlvbnM6IFNjYXBlck9wdGlvbnMpIHtcbiAgY29uc3QgZnV0dXJlTW9udGhzVG9TY3JhcGUgPSBvcHRpb25zLmZ1dHVyZU1vbnRoc1RvU2NyYXBlID8/IDE7XG4gIGNvbnN0IGRlZmF1bHRTdGFydE1vbWVudCA9IG1vbWVudCgpLnN1YnRyYWN0KDEsICd5ZWFycycpO1xuICBjb25zdCBzdGFydERhdGUgPSBvcHRpb25zLnN0YXJ0RGF0ZSB8fCBkZWZhdWx0U3RhcnRNb21lbnQudG9EYXRlKCk7XG4gIGNvbnN0IHN0YXJ0TW9tZW50ID0gbW9tZW50Lm1heChkZWZhdWx0U3RhcnRNb21lbnQsIG1vbWVudChzdGFydERhdGUpKTtcbiAgY29uc3QgYWxsTW9udGhzID0gZ2V0QWxsTW9udGhNb21lbnRzKHN0YXJ0TW9tZW50LCBmdXR1cmVNb250aHNUb1NjcmFwZSk7XG5cbiAgYXdhaXQgbG9hZENhdGVnb3JpZXMocGFnZSk7XG5cbiAgbGV0IGFsbFJlc3VsdHM6IFJlY29yZDxzdHJpbmcsIFRyYW5zYWN0aW9uW10+ID0ge307XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgYWxsTW9udGhzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZmV0Y2hUcmFuc2FjdGlvbnNGb3JNb250aChwYWdlLCBhbGxNb250aHNbaV0pO1xuICAgIGFsbFJlc3VsdHMgPSBhZGRSZXN1bHQoYWxsUmVzdWx0cywgcmVzdWx0KTtcbiAgfVxuXG4gIE9iamVjdC5rZXlzKGFsbFJlc3VsdHMpLmZvckVhY2goKGFjY291bnROdW1iZXIpID0+IHtcbiAgICBsZXQgdHhucyA9IGFsbFJlc3VsdHNbYWNjb3VudE51bWJlcl07XG4gICAgdHhucyA9IHByZXBhcmVUcmFuc2FjdGlvbnModHhucywgc3RhcnRNb21lbnQsIG9wdGlvbnMuY29tYmluZUluc3RhbGxtZW50cyB8fCBmYWxzZSk7XG4gICAgYWxsUmVzdWx0c1thY2NvdW50TnVtYmVyXSA9IHR4bnM7XG4gIH0pO1xuXG4gIHJldHVybiBhbGxSZXN1bHRzO1xufVxuXG5mdW5jdGlvbiBnZXRQb3NzaWJsZUxvZ2luUmVzdWx0cyhwYWdlOiBQYWdlKTogUG9zc2libGVMb2dpblJlc3VsdHMge1xuICBjb25zdCB1cmxzOiBQb3NzaWJsZUxvZ2luUmVzdWx0cyA9IHt9O1xuICB1cmxzW0xvZ2luUmVzdWx0cy5TdWNjZXNzXSA9IFtTVUNDRVNTX1VSTF07XG4gIHVybHNbTG9naW5SZXN1bHRzLkNoYW5nZVBhc3N3b3JkXSA9IFtQQVNTV09SRF9FWFBJUkVEX1VSTF07XG4gIHVybHNbTG9naW5SZXN1bHRzLkludmFsaWRQYXNzd29yZF0gPSBbYXN5bmMgKCkgPT4ge1xuICAgIHJldHVybiBlbGVtZW50UHJlc2VudE9uUGFnZShwYWdlLCBJTlZBTElEX0RFVEFJTFNfU0VMRUNUT1IpO1xuICB9XTtcbiAgdXJsc1tMb2dpblJlc3VsdHMuVW5rbm93bkVycm9yXSA9IFthc3luYyAoKSA9PiB7XG4gICAgcmV0dXJuIGVsZW1lbnRQcmVzZW50T25QYWdlKHBhZ2UsIExPR0lOX0VSUk9SX1NFTEVDVE9SKTtcbiAgfV07XG4gIHJldHVybiB1cmxzO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVMb2dpbkZpZWxkcyhjcmVkZW50aWFsczogU2NyYXBlckNyZWRlbnRpYWxzKSB7XG4gIHJldHVybiBbXG4gICAgeyBzZWxlY3RvcjogJyN1c2VyLW5hbWUnLCB2YWx1ZTogY3JlZGVudGlhbHMudXNlcm5hbWUgfSxcbiAgICB7IHNlbGVjdG9yOiAnI3Bhc3N3b3JkJywgdmFsdWU6IGNyZWRlbnRpYWxzLnBhc3N3b3JkIH0sXG4gIF07XG59XG5cbmNsYXNzIE1heFNjcmFwZXIgZXh0ZW5kcyBCYXNlU2NyYXBlcldpdGhCcm93c2VyIHtcbiAgZ2V0TG9naW5PcHRpb25zKGNyZWRlbnRpYWxzOiBTY3JhcGVyQ3JlZGVudGlhbHMpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbG9naW5Vcmw6IExPR0lOX1VSTCxcbiAgICAgIGZpZWxkczogY3JlYXRlTG9naW5GaWVsZHMoY3JlZGVudGlhbHMpLFxuICAgICAgc3VibWl0QnV0dG9uU2VsZWN0b3I6ICcjbG9naW4tcGFzc3dvcmQgI3NlbmQtY29kZScsXG4gICAgICBwcmVBY3Rpb246IGFzeW5jICgpID0+IHtcbiAgICAgICAgaWYgKGF3YWl0IGVsZW1lbnRQcmVzZW50T25QYWdlKHRoaXMucGFnZSwgJyNjbG9zZVBvcHVwJykpIHtcbiAgICAgICAgICBhd2FpdCBjbGlja0J1dHRvbih0aGlzLnBhZ2UsICcjY2xvc2VQb3B1cCcpO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IGNsaWNrQnV0dG9uKHRoaXMucGFnZSwgJy5wZXJzb25hbC1hcmVhID4gYS5nby10by1wZXJzb25hbC1hcmVhJyk7XG4gICAgICAgIGF3YWl0IHdhaXRVbnRpbEVsZW1lbnRGb3VuZCh0aGlzLnBhZ2UsICcjbG9naW4tcGFzc3dvcmQtbGluaycsIHRydWUpO1xuICAgICAgICBhd2FpdCBjbGlja0J1dHRvbih0aGlzLnBhZ2UsICcjbG9naW4tcGFzc3dvcmQtbGluaycpO1xuICAgICAgICBhd2FpdCB3YWl0VW50aWxFbGVtZW50Rm91bmQodGhpcy5wYWdlLCAnI2xvZ2luLXBhc3N3b3JkLnRhYi1wYW5lLmFjdGl2ZSBhcHAtdXNlci1sb2dpbi1mb3JtJywgdHJ1ZSk7XG4gICAgICB9LFxuICAgICAgY2hlY2tSZWFkaW5lc3M6IGFzeW5jICgpID0+IHtcbiAgICAgICAgYXdhaXQgd2FpdFVudGlsRWxlbWVudEZvdW5kKHRoaXMucGFnZSwgJy5wZXJzb25hbC1hcmVhID4gYS5nby10by1wZXJzb25hbC1hcmVhJywgdHJ1ZSk7XG4gICAgICB9LFxuICAgICAgcG9zdEFjdGlvbjogYXN5bmMgKCkgPT4gcmVkaXJlY3RPckRpYWxvZyh0aGlzLnBhZ2UpLFxuICAgICAgcG9zc2libGVSZXN1bHRzOiBnZXRQb3NzaWJsZUxvZ2luUmVzdWx0cyh0aGlzLnBhZ2UpLFxuICAgIH07XG4gIH1cblxuICBhc3luYyBmZXRjaERhdGEoKSB7XG4gICAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IGZldGNoVHJhbnNhY3Rpb25zKHRoaXMucGFnZSwgdGhpcy5vcHRpb25zKTtcbiAgICBjb25zdCBhY2NvdW50cyA9IE9iamVjdC5rZXlzKHJlc3VsdHMpLm1hcCgoYWNjb3VudE51bWJlcikgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYWNjb3VudE51bWJlcixcbiAgICAgICAgdHhuczogcmVzdWx0c1thY2NvdW50TnVtYmVyXSxcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgc3VjY2VzczogdHJ1ZSxcbiAgICAgIGFjY291bnRzLFxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgTWF4U2NyYXBlcjtcbiJdfQ==
|
|
@@ -28,6 +28,7 @@ var _transactions = require("../transactions");
|
|
|
28
28
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
29
29
|
|
|
30
30
|
const BASE_URL = 'https://online.bankotsar.co.il';
|
|
31
|
+
const LONG_DATE_FORMAT = 'DD/MM/YYYY';
|
|
31
32
|
const DATE_FORMAT = 'DD/MM/YY';
|
|
32
33
|
|
|
33
34
|
function getPossibleLoginResults(page) {
|
|
@@ -79,7 +80,13 @@ function getAmountData(amountStr, hasCurrency = false) {
|
|
|
79
80
|
|
|
80
81
|
function convertTransactions(txns) {
|
|
81
82
|
return txns.map(txn => {
|
|
82
|
-
const
|
|
83
|
+
const dateFormat = txn.date.length === 8 ? DATE_FORMAT : txn.date.length === 10 ? LONG_DATE_FORMAT : null;
|
|
84
|
+
|
|
85
|
+
if (!dateFormat) {
|
|
86
|
+
throw new Error('invalid date format');
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
const txnDate = (0, _moment.default)(txn.date, dateFormat).toISOString();
|
|
83
90
|
const credit = getAmountData(txn.credit || '').amount;
|
|
84
91
|
const debit = getAmountData(txn.debit || '').amount;
|
|
85
92
|
const amount = (Number.isNaN(credit) ? 0 : credit) - (Number.isNaN(debit) ? 0 : debit);
|
|
@@ -217,4 +224,4 @@ class OtsarHahayalScraper extends _baseScraperWithBrowser.BaseScraperWithBrowser
|
|
|
217
224
|
|
|
218
225
|
var _default = OtsarHahayalScraper;
|
|
219
226
|
exports.default = _default;
|
|
220
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JhcGVycy9vdHNhci1oYWhheWFsLnRzIl0sIm5hbWVzIjpbIkJBU0VfVVJMIiwiREFURV9GT1JNQVQiLCJnZXRQb3NzaWJsZUxvZ2luUmVzdWx0cyIsInBhZ2UiLCJ1cmxzIiwiTG9naW5SZXN1bHRzIiwiU3VjY2VzcyIsIkludmFsaWRQYXNzd29yZCIsImdldFRyYW5zYWN0aW9uc1VybCIsImNyZWF0ZUxvZ2luRmllbGRzIiwiY3JlZGVudGlhbHMiLCJzZWxlY3RvciIsInZhbHVlIiwidXNlcm5hbWUiLCJwYXNzd29yZCIsImdldEFtb3VudERhdGEiLCJhbW91bnRTdHIiLCJoYXNDdXJyZW5jeSIsImFtb3VudFN0ckNsbiIsInJlcGxhY2UiLCJjdXJyZW5jeSIsImFtb3VudCIsInBhcnNlRmxvYXQiLCJTSEVLRUxfQ1VSUkVOQ1kiLCJpbmNsdWRlcyIsIlNIRUtFTF9DVVJSRU5DWV9TWU1CT0wiLCJwYXJ0cyIsInNwbGl0IiwiY29udmVydFRyYW5zYWN0aW9ucyIsInR4bnMiLCJtYXAiLCJ0eG4iLCJ0eG5EYXRlIiwiZGF0ZSIsInRvSVNPU3RyaW5nIiwiY3JlZGl0IiwiZGViaXQiLCJOdW1iZXIiLCJpc05hTiIsInJlc3VsdCIsInR5cGUiLCJUcmFuc2FjdGlvblR5cGVzIiwiTm9ybWFsIiwic3RhdHVzIiwiVHJhbnNhY3Rpb25TdGF0dXNlcyIsIkNvbXBsZXRlZCIsImlkZW50aWZpZXIiLCJyZWZlcmVuY2UiLCJwYXJzZUludCIsInVuZGVmaW5lZCIsInByb2Nlc3NlZERhdGUiLCJvcmlnaW5hbEFtb3VudCIsIm9yaWdpbmFsQ3VycmVuY3kiLCJjaGFyZ2VkQW1vdW50IiwiZGVzY3JpcHRpb24iLCJtZW1vIiwicGFyc2VUcmFuc2FjdGlvblBhZ2UiLCJ0ZHNWYWx1ZXMiLCJ0cnMiLCJlbCIsInF1ZXJ5U2VsZWN0b3IiLCJpbm5lclRleHQiLCJiYWxhbmNlIiwiZ2V0QWNjb3VudFN1bW1hcnkiLCJiYWxhbmNlRWxtIiwiJCIsImJhbGFuY2VJbm5lclRleHRFbG0iLCJnZXRQcm9wZXJ0eSIsImJhbGFuY2VUZXh0IiwianNvblZhbHVlIiwiYmFsYW5jZVZhbHVlIiwiY3JlZGl0TGltaXQiLCJjcmVkaXRVdGlsaXphdGlvbiIsImJhbGFuY2VDdXJyZW5jeSIsImZldGNoVHJhbnNhY3Rpb25zRm9yQWNjb3VudCIsInN0YXJ0RGF0ZSIsInN1bW1hcnkiLCJicmFuY2hOdW0iLCIkZXZhbCIsInNwYW4iLCJhY2NvdW50Tm1iciIsImFjY291bnROdW1iZXIiLCJmb3JtYXQiLCJoYXNOZXh0UGFnZSIsIm5vVHJhbnNhY3Rpb25FbG0iLCJwYWdlVHhucyIsImNvbmNhdCIsImJ1dHRvbiIsInNsaWNlIiwiZmV0Y2hUcmFuc2FjdGlvbnMiLCJ3YWl0Rm9yUG9zdExvZ2luIiwiUHJvbWlzZSIsInJhY2UiLCJPdHNhckhhaGF5YWxTY3JhcGVyIiwiQmFzZVNjcmFwZXJXaXRoQnJvd3NlciIsImdldExvZ2luT3B0aW9ucyIsImxvZ2luVXJsIiwiZmllbGRzIiwic3VibWl0QnV0dG9uU2VsZWN0b3IiLCJwb3N0QWN0aW9uIiwicG9zc2libGVSZXN1bHRzIiwiZmV0Y2hEYXRhIiwiZGVmYXVsdFN0YXJ0TW9tZW50Iiwic3VidHJhY3QiLCJhZGQiLCJvcHRpb25zIiwidG9EYXRlIiwic3RhcnRNb21lbnQiLCJtb21lbnQiLCJtYXgiLCJ1cmwiLCJuYXZpZ2F0ZVRvIiwiYWNjb3VudHMiLCJzdWNjZXNzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFPQTs7QUFDQTs7OztBQUdBLE1BQU1BLFFBQVEsR0FBRyxnQ0FBakI7QUFDQSxNQUFNQyxXQUFXLEdBQUcsVUFBcEI7O0FBYUEsU0FBU0MsdUJBQVQsQ0FBaUNDLElBQWpDLEVBQTZDO0FBQzNDLFFBQU1DLElBQTBCLEdBQUcsRUFBbkM7QUFDQUEsRUFBQUEsSUFBSSxDQUFDQyxxQ0FBYUMsT0FBZCxDQUFKLEdBQTZCLENBQUUsR0FBRU4sUUFBUywrQkFB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RUFBcUMsS0FBckMsQ0FBM0I7QUFDQSxVQUFNN0IsU0FBUyxHQUFHLEtBQUs4QixPQUFMLENBQWE5QixTQUFiLElBQTBCMkIsa0JBQWtCLENBQUNJLE1BQW5CLEVBQTVDOztBQUNBLFVBQU1DLFdBQVcsR0FBR0MsZ0JBQU9DLEdBQVAsQ0FBV1Asa0JBQVgsRUFBK0IscUJBQU8zQixTQUFQLENBQS9CLENBQXBCOztBQUVBLFVBQU1tQyxHQUFHLEdBQUd0RyxrQkFBa0IsRUFBOUI7QUFDQSxVQUFNLEtBQUt1RyxVQUFMLENBQWdCRCxHQUFoQixDQUFOO0FBRUEsVUFBTUUsUUFBUSxHQUFHLE1BQU12QixpQkFBaUIsQ0FBQyxLQUFLdEYsSUFBTixFQUFZd0csV0FBWixDQUF4QztBQUVBLFdBQU87QUFDTE0sTUFBQUEsT0FBTyxFQUFFLElBREo7QUFFTEQsTUFBQUE7QUFGSyxLQUFQO0FBSUQ7O0FBekJzRDs7ZUE0QjFDbkIsbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbW9tZW50LCB7IE1vbWVudCB9IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBQYWdlIH0gZnJvbSAncHVwcGV0ZWVyJztcbmltcG9ydCB7IEJhc2VTY3JhcGVyV2l0aEJyb3dzZXIsIExvZ2luUmVzdWx0cywgUG9zc2libGVMb2dpblJlc3VsdHMgfSBmcm9tICcuL2Jhc2Utc2NyYXBlci13aXRoLWJyb3dzZXInO1xuaW1wb3J0IHsgd2FpdEZvck5hdmlnYXRpb24gfSBmcm9tICcuLi9oZWxwZXJzL25hdmlnYXRpb24nO1xuaW1wb3J0IHtcbiAgZmlsbElucHV0LFxuICBjbGlja0J1dHRvbixcbiAgd2FpdFVudGlsRWxlbWVudEZvdW5kLFxuICBwYWdlRXZhbEFsbCxcbiAgZWxlbWVudFByZXNlbnRPblBhZ2UsXG59IGZyb20gJy4uL2hlbHBlcnMvZWxlbWVudHMtaW50ZXJhY3Rpb25zJztcbmltcG9ydCB7IFNIRUtFTF9DVVJSRU5DWSwgU0hFS0VMX0NVUlJFTkNZX1NZTUJPTCB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiwgVHJhbnNhY3Rpb25TdGF0dXNlcywgVHJhbnNhY3Rpb25UeXBlcyB9IGZyb20gJy4uL3RyYW5zYWN0aW9ucyc7XG5pbXBvcnQgeyBTY3JhcGVyQ3JlZGVudGlhbHMgfSBmcm9tICcuL2Jhc2Utc2NyYXBlcic7XG5cbmNvbnN0IEJBU0VfVVJMID0gJ2h0dHBzOi8vb25saW5lLmJhbmtvdHNhci5jby5pbCc7XG5jb25zdCBEQVRFX0ZPUk1BVCA9ICdERC9NTS9ZWSc7XG5cbmludGVyZmFjZSBTY3JhcGVkVHJhbnNhY3Rpb24ge1xuICBiYWxhbmNlPzogc3RyaW5nO1xuICBkZWJpdD86IHN0cmluZztcbiAgY3JlZGl0Pzogc3RyaW5nO1xuICBtZW1vPzogc3RyaW5nO1xuICBzdGF0dXM/OiBzdHJpbmc7XG4gIHJlZmVyZW5jZT86IHN0cmluZztcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIGRhdGU6IHN0cmluZztcbn1cblxuZnVuY3Rpb24gZ2V0UG9zc2libGVMb2dpblJlc3VsdHMocGFnZTogUGFnZSkge1xuICBjb25zdCB1cmxzOiBQb3NzaWJsZUxvZ2luUmVzdWx0cyA9IHt9O1xuICB1cmxzW0xvZ2luUmVzdWx0cy5TdWNjZXNzXSA9IFtgJHtCQVNFX1VSTH0vd3BzL215cG9ydGFsL0ZpYmlNZW51L09ubGluZWBdO1xuICB1cmxzW0xvZ2luUmVzdWx0cy5JbnZhbGlkUGFzc3dvcmRdID0gWygpID0+IGVsZW1lbnRQcmVzZW50T25QYWdlKHBhZ2UsICcjdmFsaWRhdGlvbk1zZycpXTtcbiAgLy8gVE9ETzogc3VwcG9ydCBjaGFuZ2UgcGFzc3dvcmRcbiAgLyogdXJsc1tMT0dJTl9SRVNVTFQuQ0hBTkdFX1BBU1NXT1JEXSA9IFtgYF07ICovXG4gIHJldHVybiB1cmxzO1xufVxuXG5mdW5jdGlvbiBnZXRUcmFuc2FjdGlvbnNVcmwoKSB7XG4gIHJldHVybiBgJHtCQVNFX1VSTH0vd3BzL215cG9ydGFsL0ZpYmlNZW51L09ubGluZS9PbkFjY291bnRNbmdtZW50L09uQmFsYW5jZVRyYW5zL1ByaXZhdGVBY2NvdW50Rmxvd2A7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUxvZ2luRmllbGRzKGNyZWRlbnRpYWxzOiBTY3JhcGVyQ3JlZGVudGlhbHMpIHtcbiAgcmV0dXJuIFtcbiAgICB7IHNlbGVjdG9yOiAnI3VzZXJuYW1lJywgdmFsdWU6IGNyZWRlbnRpYWxzLnVzZXJuYW1lIH0sXG4gICAgeyBzZWxlY3RvcjogJyNwYXNzd29yZCcsIHZhbHVlOiBjcmVkZW50aWFscy5wYXNzd29yZCB9LFxuICBdO1xufVxuXG5mdW5jdGlvbiBnZXRBbW91bnREYXRhKGFtb3VudFN0cjogc3RyaW5nLCBoYXNDdXJyZW5jeSA9IGZhbHNlKSB7XG4gIGNvbnN0IGFtb3VudFN0ckNsbiA9IGFtb3VudFN0ci5yZXBsYWNlKCcsJywgJycpO1xuICBsZXQgY3VycmVuY3k6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICBsZXQgYW1vdW50OiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgaWYgKCFoYXNDdXJyZW5jeSkge1xuICAgIGFtb3VudCA9IHBhcnNlRmxvYXQoYW1vdW50U3RyQ2xuKTtcbiAgICBjdXJyZW5jeSA9IFNIRUtFTF9DVVJSRU5DWTtcbiAgfSBlbHNlIGlmIChhbW91bnRTdHJDbG4uaW5jbHVkZXMoU0hFS0VMX0NVUlJFTkNZX1NZTUJPTCkpIHtcbiAgICBhbW91bnQgPSBwYXJzZUZsb2F0KGFtb3VudFN0ckNsbi5yZXBsYWNlKFNIRUtFTF9DVVJSRU5DWV9TWU1CT0wsICcnKSk7XG4gICAgY3VycmVuY3kgPSBTSEVLRUxfQ1VSUkVOQ1k7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgcGFydHMgPSBhbW91bnRTdHJDbG4uc3BsaXQoJyAnKTtcbiAgICBhbW91bnQgPSBwYXJzZUZsb2F0KHBhcnRzWzBdKTtcbiAgICBbLCBjdXJyZW5jeV0gPSBwYXJ0cztcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgYW1vdW50LFxuICAgIGN1cnJlbmN5LFxuICB9O1xufVxuXG5mdW5jdGlvbiBjb252ZXJ0VHJhbnNhY3Rpb25zKHR4bnM6IFNjcmFwZWRUcmFuc2FjdGlvbltdKTogVHJhbnNhY3Rpb25bXSB7XG4gIHJldHVybiB0eG5zLm1hcCgodHhuKSA9PiB7XG4gICAgY29uc3QgdHhuRGF0ZSA9IG1vbWVudCh0eG4uZGF0ZSwgREFURV9GT1JNQVQpLnRvSVNPU3RyaW5nKCk7XG4gICAgY29uc3QgY3JlZGl0ID0gZ2V0QW1vdW50RGF0YSh0eG4uY3JlZGl0IHx8ICcnKS5hbW91bnQ7XG4gICAgY29uc3QgZGViaXQgPSBnZXRBbW91bnREYXRhKHR4bi5kZWJpdCB8fCAnJykuYW1vdW50O1xuICAgIGNvbnN0IGFtb3VudCA9IChOdW1iZXIuaXNOYU4oY3JlZGl0KSA/IDAgOiBjcmVkaXQpIC0gKE51bWJlci5pc05hTihkZWJpdCkgPyAwIDogZGViaXQpO1xuXG4gICAgY29uc3QgcmVzdWx0OiBUcmFuc2FjdGlvbiA9IHtcbiAgICAgIHR5cGU6IFRyYW5zYWN0aW9uVHlwZXMuTm9ybWFsLFxuICAgICAgc3RhdHVzOiBUcmFuc2FjdGlvblN0YXR1c2VzLkNvbXBsZXRlZCxcbiAgICAgIGlkZW50aWZpZXI6IHR4bi5yZWZlcmVuY2UgPyBwYXJzZUludCh0eG4ucmVmZXJlbmNlLCAxMCkgOiB1bmRlZmluZWQsXG4gICAgICBkYXRlOiB0eG5EYXRlLFxuICAgICAgcHJvY2Vzc2VkRGF0ZTogdHhuRGF0ZSxcbiAgICAgIG9yaWdpbmFsQW1vdW50OiBhbW91bnQsXG4gICAgICBvcmlnaW5hbEN1cnJlbmN5OiBTSEVLRUxfQ1VSUkVOQ1ksXG4gICAgICBjaGFyZ2VkQW1vdW50OiBhbW91bnQsXG4gICAgICBkZXNjcmlwdGlvbjogdHhuLmRlc2NyaXB0aW9uIHx8ICcnLFxuICAgICAgbWVtbzogJycsXG4gICAgfTtcblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH0pO1xufVxuXG5hc3luYyBmdW5jdGlvbiBwYXJzZVRyYW5zYWN0aW9uUGFnZShwYWdlOiBQYWdlKTogUHJvbWlzZTxTY3JhcGVkVHJhbnNhY3Rpb25bXT4ge1xuICBjb25zdCB0ZHNWYWx1ZXMgPSBhd2FpdCBwYWdlRXZhbEFsbChwYWdlLCAnI2RhdGFUYWJsZTA3NyB0Ym9keSB0cicsIFtdLCAodHJzKSA9PiB7XG4gICAgcmV0dXJuICh0cnMpLm1hcCgoZWwpID0+ICh7XG4gICAgICBkYXRlOiAoZWwucXVlcnlTZWxlY3RvcignLmRhdGUnKSBhcyBIVE1MRWxlbWVudCkuaW5uZXJUZXh0LFxuICAgICAgLy8gcmVmZXJlbmNlIGFuZCBkZXNjcmlwdGlvbiBoYXZlIHZpY2UtdmVyc2EgY2xhc3MgbmFtZVxuICAgICAgZGVzY3JpcHRpb246IChlbC5xdWVyeVNlbGVjdG9yKCcucmVmZXJlbmNlJykgYXMgSFRNTEVsZW1lbnQpLmlubmVyVGV4dCxcbiAgICAgIHJlZmVyZW5jZTogKGVsLnF1ZXJ5U2VsZWN0b3IoJy5kZXRhaWxzJykgYXMgSFRNTEVsZW1lbnQpLmlubmVyVGV4dCxcbiAgICAgIGNyZWRpdDogKGVsLnF1ZXJ5U2VsZWN0b3IoJy5jcmVkaXQnKSBhcyBIVE1MRWxlbWVudCkuaW5uZXJUZXh0LFxuICAgICAgZGViaXQ6IChlbC5xdWVyeVNlbGVjdG9yKCcuZGViaXQnKSBhcyBIVE1MRWxlbWVudCkuaW5uZXJUZXh0LFxuICAgICAgYmFsYW5jZTogKGVsLnF1ZXJ5U2VsZWN0b3IoJy5iYWxhbmNlJykgYXMgSFRNTEVsZW1lbnQpLmlubmVyVGV4dCxcbiAgICB9KSk7XG4gIH0pO1xuXG4gIHJldHVybiB0ZHNWYWx1ZXM7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldEFjY291bnRTdW1tYXJ5KHBhZ2U6IFBhZ2UpIHtcbiAgY29uc3QgYmFsYW5jZUVsbSA9IGF3YWl0IHBhZ2UuJCgnLmN1cnJlbnRfYmFsYW5jZScpO1xuICBjb25zdCBiYWxhbmNlSW5uZXJUZXh0RWxtID0gYXdhaXQgYmFsYW5jZUVsbSEuZ2V0UHJvcGVydHkoJ2lubmVyVGV4dCcpO1xuICBjb25zdCBiYWxhbmNlVGV4dCA9IGF3YWl0IGJhbGFuY2VJbm5lclRleHRFbG0uanNvblZhbHVlKCk7XG4gIGNvbnN0IGJhbGFuY2VWYWx1ZSA9IGdldEFtb3VudERhdGEoYmFsYW5jZVRleHQgYXMgc3RyaW5nLCB0cnVlKTtcbiAgLy8gVE9ETzogRmluZCB0aGUgY3JlZGl0IGZpZWxkIGluIGJhbmsgd2Vic2l0ZSAoY291bGQgc2VlIGl0IGluIG15IGFjY291bnQpXG4gIHJldHVybiB7XG4gICAgYmFsYW5jZTogTnVtYmVyLmlzTmFOKGJhbGFuY2VWYWx1ZS5hbW91bnQpID8gMCA6IGJhbGFuY2VWYWx1ZS5hbW91bnQsXG4gICAgY3JlZGl0TGltaXQ6IDAuMCxcbiAgICBjcmVkaXRVdGlsaXphdGlvbjogMC4wLFxuICAgIGJhbGFuY2VDdXJyZW5jeTogYmFsYW5jZVZhbHVlLmN1cnJlbmN5LFxuICB9O1xufVxuXG5hc3luYyBmdW5jdGlvbiBmZXRjaFRyYW5zYWN0aW9uc0ZvckFjY291bnQocGFnZTogUGFnZSwgc3RhcnREYXRlOiBNb21lbnQpIHtcbiAgY29uc3Qgc3VtbWFyeSA9IGF3YWl0IGdldEFjY291bnRTdW1tYXJ5KHBhZ2UpO1xuICBhd2FpdCB3YWl0VW50aWxFbGVtZW50Rm91bmQocGFnZSwgJ2lucHV0I2Zyb21EYXRlJyk7XG4gIC8vIEdldCBhY2NvdW50IG51bWJlclxuICBjb25zdCBicmFuY2hOdW0gPSBhd2FpdCBwYWdlLiRldmFsKCcuYnJhbmNoX251bScsIChzcGFuKSA9PiB7XG4gICAgcmV0dXJuIChzcGFuIGFzIEhUTUxFbGVtZW50KS5pbm5lclRleHQ7XG4gIH0pO1xuXG4gIGNvbnN0IGFjY291bnRObWJyID0gYXdhaXQgcGFnZS4kZXZhbCgnLmFjY19udW0nLCAoc3BhbikgPT4ge1xuICAgIHJldHVybiAoc3BhbiBhcyBIVE1MRWxlbWVudCkuaW5uZXJUZXh0O1xuICB9KTtcbiAgY29uc3QgYWNjb3VudE51bWJlciA9IGAxNC0ke2JyYW5jaE51bX0tJHthY2NvdW50Tm1icn1gO1xuICAvLyBTZWFyY2ggZm9yIHJlbGF2YW50IHRyYW5zYWN0aW9uIGZyb20gc3RhcnREYXRlXG4gIGF3YWl0IGNsaWNrQnV0dG9uKHBhZ2UsICcjdGFiSGVhZGVyNCcpO1xuICBhd2FpdCBmaWxsSW5wdXQoXG4gICAgcGFnZSxcbiAgICAnaW5wdXQjZnJvbURhdGUnLFxuICAgIHN0YXJ0RGF0ZS5mb3JtYXQoJ0REL01NL1lZWVknKSxcbiAgKTtcblxuICBhd2FpdCBjbGlja0J1dHRvbihwYWdlLCAnI2ZpYmlfdGFiX2RhdGVzIC5maWJpX2J0bjpudGgtY2hpbGQoMiknKTtcbiAgYXdhaXQgd2FpdEZvck5hdmlnYXRpb24ocGFnZSk7XG4gIGF3YWl0IHdhaXRVbnRpbEVsZW1lbnRGb3VuZChwYWdlLCAndGFibGUjZGF0YVRhYmxlMDc3LCAjTk9fREFUQTA3NycpO1xuICBsZXQgaGFzTmV4dFBhZ2UgPSB0cnVlO1xuICBsZXQgdHhuczogU2NyYXBlZFRyYW5zYWN0aW9uW10gPSBbXTtcblxuICBjb25zdCBub1RyYW5zYWN0aW9uRWxtID0gYXdhaXQgcGFnZS4kKCcjTk9fREFUQTA3NycpO1xuICBpZiAobm9UcmFuc2FjdGlvbkVsbSA9PSBudWxsKSB7XG4gICAgLy8gU2NhcGUgdHJhbnNhY3Rpb25zICh0aGlzIG1heWJlIHNwYW5uZWQgb24gbXVsdGlwbGUgcGFnZXMpXG4gICAgd2hpbGUgKGhhc05leHRQYWdlKSB7XG4gICAgICBjb25zdCBwYWdlVHhucyA9IGF3YWl0IHBhcnNlVHJhbnNhY3Rpb25QYWdlKHBhZ2UpO1xuICAgICAgdHhucyA9IHR4bnMuY29uY2F0KHBhZ2VUeG5zKTtcbiAgICAgIGNvbnN0IGJ1dHRvbiA9IGF3YWl0IHBhZ2UuJCgnI05wYWdlJyk7XG4gICAgICBoYXNOZXh0UGFnZSA9IGZhbHNlO1xuICAgICAgaWYgKGJ1dHRvbiAhPSBudWxsKSB7XG4gICAgICAgIGhhc05leHRQYWdlID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChoYXNOZXh0UGFnZSkge1xuICAgICAgICBhd2FpdCBjbGlja0J1dHRvbihwYWdlLCAnI05wYWdlJyk7XG4gICAgICAgIGF3YWl0IHdhaXRGb3JOYXZpZ2F0aW9uKHBhZ2UpO1xuICAgICAgICBhd2FpdCB3YWl0VW50aWxFbGVtZW50Rm91bmQocGFnZSwgJ3RhYmxlI2RhdGFUYWJsZTA3NycpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgYWNjb3VudE51bWJlcixcbiAgICBzdW1tYXJ5LFxuICAgIHR4bnM6IGNvbnZlcnRUcmFuc2FjdGlvbnModHhucy5zbGljZSgxKSksIC8vIFJlbW92ZSBmaXJzdCBsaW5lIHdoaWNoIGlzIFwib3BlbmluZyBiYWxhbmNlXCJcbiAgfTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZmV0Y2hUcmFuc2FjdGlvbnMocGFnZTogUGFnZSwgc3RhcnREYXRlOiBNb21lbnQpIHtcbiAgLy8gVE9ETyBuZWVkIHRvIGV4dGVuZCB0byBzdXBwb3J0IG11bHRpcGxlIGFjY291bnRzIGFuZCBmb3JlaWduIGFjY291bnRzXG4gIHJldHVybiBbYXdhaXQgZmV0Y2hUcmFuc2FjdGlvbnNGb3JBY2NvdW50KHBhZ2UsIHN0YXJ0RGF0ZSldO1xufVxuXG5hc3luYyBmdW5jdGlvbiB3YWl0Rm9yUG9zdExvZ2luKHBhZ2U6IFBhZ2UpIHtcbiAgLy8gVE9ETyBjaGVjayBmb3IgY29uZGl0aW9uIHRvIHByb3ZpZGUgbmV3IHBhc3N3b3JkXG4gIHJldHVybiBQcm9taXNlLnJhY2UoW1xuICAgIHdhaXRVbnRpbEVsZW1lbnRGb3VuZChwYWdlLCAnZGl2LmxvdHVzRnJhbWUnLCB0cnVlKSxcbiAgICB3YWl0VW50aWxFbGVtZW50Rm91bmQocGFnZSwgJyN2YWxpZGF0aW9uTXNnJyksXG4gIF0pO1xufVxuXG5jbGFzcyBPdHNhckhhaGF5YWxTY3JhcGVyIGV4dGVuZHMgQmFzZVNjcmFwZXJXaXRoQnJvd3NlciB7XG4gIGdldExvZ2luT3B0aW9ucyhjcmVkZW50aWFsczogU2NyYXBlckNyZWRlbnRpYWxzKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxvZ2luVXJsOiBgJHtCQVNFX1VSTH0vTWF0YWZMb2dpblNlcnZpY2UvTWF0YWZMb2dpblNlcnZsZXQ/YmFua0lkPU9UU0FSUFJUQUwmc2l0ZT1Qcml2YXRlJktPRFNBRkE9SEVgLFxuICAgICAgZmllbGRzOiBjcmVhdGVMb2dpbkZpZWxkcyhjcmVkZW50aWFscyksXG4gICAgICBzdWJtaXRCdXR0b25TZWxlY3RvcjogJyNjb250aW51ZUJ0bicsXG4gICAgICBwb3N0QWN0aW9uOiBhc3luYyAoKSA9PiB3YWl0Rm9yUG9zdExvZ2luKHRoaXMucGFnZSksXG4gICAgICBwb3NzaWJsZVJlc3VsdHM6IGdldFBvc3NpYmxlTG9naW5SZXN1bHRzKHRoaXMucGFnZSksXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIGZldGNoRGF0YSgpIHtcbiAgICBjb25zdCBkZWZhdWx0U3RhcnRNb21lbnQgPSBtb21lbnQoKS5zdWJ0cmFjdCgxLCAneWVhcnMnKS5hZGQoMSwgJ2RheScpO1xuICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IHRoaXMub3B0aW9ucy5zdGFydERhdGUgfHwgZGVmYXVsdFN0YXJ0TW9tZW50LnRvRGF0ZSgpO1xuICAgIGNvbnN0IHN0YXJ0TW9tZW50ID0gbW9tZW50Lm1heChkZWZhdWx0U3RhcnRNb21lbnQsIG1vbWVudChzdGFydERhdGUpKTtcblxuICAgIGNvbnN0IHVybCA9IGdldFRyYW5zYWN0aW9uc1VybCgpO1xuICAgIGF3YWl0IHRoaXMubmF2aWdhdGVUbyh1cmwpO1xuXG4gICAgY29uc3QgYWNjb3VudHMgPSBhd2FpdCBmZXRjaFRyYW5zYWN0aW9ucyh0aGlzLnBhZ2UsIHN0YXJ0TW9tZW50KTtcblxuICAgIHJldHVybiB7XG4gICAgICBzdWNjZXNzOiB0cnVlLFxuICAgICAgYWNjb3VudHMsXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBPdHNhckhhaGF5YWxTY3JhcGVyO1xuIl19
|
|
227
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JhcGVycy9vdHNhci1oYWhheWFsLnRzIl0sIm5hbWVzIjpbIkJBU0VfVVJMIiwiTE9OR19EQVRFX0ZPUk1BVCIsIkRBVEVfRk9STUFUIiwiZ2V0UG9zc2libGVMb2dpblJlc3VsdHMiLCJwYWdlIiwidXJscyIsIkxvZ2luUmVzdWx0cyIsIlN1Y2Nlc3MiLCJJbnZhbGlkUGFzc3dvcmQiLCJnZXRUcmFuc2FjdGlvbnNVcmwiLCJjcmVhdGVMb2dpbkZpZWxkcyIsImNyZWRlbnRpYWxzIiwic2VsZWN0b3IiLCJ2YWx1ZSIsInVzZXJuYW1lIiwicGFzc3dvcmQiLCJnZXRBbW91bnREYXRhIiwiYW1vdW50U3RyIiwiaGFzQ3VycmVuY3kiLCJhbW91bnRTdHJDbG4iLCJyZXBsYWNlIiwiY3VycmVuY3kiLCJhbW91bnQiLCJwYXJzZUZsb2F0IiwiU0hFS0VMX0NVUlJFTkNZIiwiaW5jbHVkZXMiLCJTSEVLRUxfQ1VSUkVOQ1lfU1lNQk9MIiwicGFydHMiLCJzcGxpdCIsImNvbnZlcnRUcmFuc2FjdGlvbnMiLCJ0eG5zIiwibWFwIiwidHhuIiwiZGF0ZUZvcm1hdCIsImRhdGUiLCJsZW5ndGgiLCJFcnJvciIsInR4bkRhdGUiLCJ0b0lTT1N0cmluZyIsImNyZWRpdCIsImRlYml0IiwiTnVtYmVyIiwiaXNOYU4iLCJyZXN1bHQiLCJ0eXBlIiwiVHJhbnNhY3Rpb25UeXBlcyIsIk5vcm1hbCIsInN0YXR1cyIsIlRyYW5zYWN0aW9uU3RhdHVzZXMiLCJDb21wbGV0ZWQiLCJpZGVudGlmaWVyIiwicmVmZXJlbmNlIiwicGFyc2VJbnQiLCJ1bmRlZmluZWQiLCJwcm9jZXNzZWREYXRlIiwib3JpZ2luYWxBbW91bnQiLCJvcmlnaW5hbEN1cnJlbmN5IiwiY2hhcmdlZEFtb3VudCIsImRlc2NyaXB0aW9uIiwibWVtbyIsInBhcnNlVHJhbnNhY3Rpb25QYWdlIiwidGRzVmFsdWVzIiwidHJzIiwiZWwiLCJxdWVyeVNlbGVjdG9yIiwiaW5uZXJUZXh0IiwiYmFsYW5jZSIsImdldEFjY291bnRTdW1tYXJ5IiwiYmFsYW5jZUVsbSIsIiQiLCJiYWxhbmNlSW5uZXJUZXh0RWxtIiwiZ2V0UHJvcGVydHkiLCJiYWxhbmNlVGV4dCIsImpzb25WYWx1ZSIsImJhbGFuY2VWYWx1ZSIsImNyZWRpdExpbWl0IiwiY3JlZGl0VXRpbGl6YXRpb24iLCJiYWxhbmNlQ3VycmVuY3kiLCJmZXRjaFRyYW5zYWN0aW9uc0ZvckFjY291bnQiLCJzdGFydERhdGUiLCJzdW1tYXJ5IiwiYnJhbmNoTnVtIiwiJGV2YWwiLCJzcGFuIiwiYWNjb3VudE5tYnIiLCJhY2NvdW50TnVtYmVyIiwiZm9ybWF0IiwiaGFzTmV4dFBhZ2UiLCJub1RyYW5zYWN0aW9uRWxtIiwicGFnZVR4bnMiLCJjb25jYXQiLCJidXR0b24iLCJzbGljZSIsImZldGNoVHJhbnNhY3Rpb25zIiwid2FpdEZvclBvc3RMb2dpbiIsIlByb21pc2UiLCJyYWNlIiwiT3RzYXJIYWhheWFsU2NyYXBlciIsIkJhc2VTY3JhcGVyV2l0aEJyb3dzZXIiLCJnZXRMb2dpbk9wdGlvbnMiLCJsb2dpblVybCIsImZpZWxkcyIsInN1Ym1pdEJ1dHRvblNlbGVjdG9yIiwicG9zdEFjdGlvbiIsInBvc3NpYmxlUmVzdWx0cyIsImZldGNoRGF0YSIsImRlZmF1bHRTdGFydE1vbWVudCIsInN1YnRyYWN0IiwiYWRkIiwib3B0aW9ucyIsInRvRGF0ZSIsInN0YXJ0TW9tZW50IiwibW9tZW50IiwibWF4IiwidXJsIiwibmF2aWdhdGVUbyIsImFjY291bnRzIiwic3VjY2VzcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBT0E7O0FBQ0E7Ozs7QUFHQSxNQUFNQSxRQUFRLEdBQUcsZ0NBQWpCO0FBQ0EsTUFBTUMsZ0JBQWdCLEdBQUcsWUFBekI7QUFDQSxNQUFNQyxXQUFXLEdBQUcsVUFBcEI7O0FBYUEsU0FBU0MsdUJBQVQsQ0FBaUNDLElBQWpDLEVBQTZDO0FBQzNDLFFBQU1DLElBQTBC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LEVBQUUzRixpQkFBaUIsQ0FBQ0MsV0FBRCxDQUZwQjtBQUdMMkYsTUFBQUEsb0JBQW9CLEVBQUUsY0FIakI7QUFJTEMsTUFBQUEsVUFBVSxFQUFFLFlBQVlULGdCQUFnQixDQUFDLEtBQUsxRixJQUFOLENBSm5DO0FBS0xvRyxNQUFBQSxlQUFlLEVBQUVyRyx1QkFBdUIsQ0FBQyxLQUFLQyxJQUFOO0FBTG5DLEtBQVA7QUFPRDs7QUFFRCxRQUFNcUcsU0FBTixHQUFrQjtBQUNoQixVQUFNQyxrQkFBa0IsR0FBRyx1QkFBU0MsUUFBVCxDQUFrQixDQUFsQixFQUFxQixPQUFyQixFQUE4QkMsR0FBOUIsQ0FBa0MsQ0FBbEMsRUFBcUMsS0FBckMsQ0FBM0I7QUFDQSxVQUFNN0IsU0FBUyxHQUFHLEtBQUs4QixPQUFMLENBQWE5QixTQUFiLElBQTBCMkIsa0JBQWtCLENBQUNJLE1BQW5CLEVBQTVDOztBQUNBLFVBQU1DLFdBQVcsR0FBR0MsZ0JBQU9DLEdBQVAsQ0FBV1Asa0JBQVgsRUFBK0IscUJBQU8zQixTQUFQLENBQS9CLENBQXBCOztBQUVBLFVBQU1tQyxHQUFHLEdBQUd6RyxrQkFBa0IsRUFBOUI7QUFDQSxVQUFNLEtBQUswRyxVQUFMLENBQWdCRCxHQUFoQixDQUFOO0FBRUEsVUFBTUUsUUFBUSxHQUFHLE1BQU12QixpQkFBaUIsQ0FBQyxLQUFLekYsSUFBTixFQUFZMkcsV0FBWixDQUF4QztBQUVBLFdBQU87QUFDTE0sTUFBQUEsT0FBTyxFQUFFLElBREo7QUFFTEQsTUFBQUE7QUFGSyxLQUFQO0FBSUQ7O0FBekJzRDs7ZUE0QjFDbkIsbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbW9tZW50LCB7IE1vbWVudCB9IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBQYWdlIH0gZnJvbSAncHVwcGV0ZWVyJztcbmltcG9ydCB7IEJhc2VTY3JhcGVyV2l0aEJyb3dzZXIsIExvZ2luUmVzdWx0cywgUG9zc2libGVMb2dpblJlc3VsdHMgfSBmcm9tICcuL2Jhc2Utc2NyYXBlci13aXRoLWJyb3dzZXInO1xuaW1wb3J0IHsgd2FpdEZvck5hdmlnYXRpb24gfSBmcm9tICcuLi9oZWxwZXJzL25hdmlnYXRpb24nO1xuaW1wb3J0IHtcbiAgZmlsbElucHV0LFxuICBjbGlja0J1dHRvbixcbiAgd2FpdFVudGlsRWxlbWVudEZvdW5kLFxuICBwYWdlRXZhbEFsbCxcbiAgZWxlbWVudFByZXNlbnRPblBhZ2UsXG59IGZyb20gJy4uL2hlbHBlcnMvZWxlbWVudHMtaW50ZXJhY3Rpb25zJztcbmltcG9ydCB7IFNIRUtFTF9DVVJSRU5DWSwgU0hFS0VMX0NVUlJFTkNZX1NZTUJPTCB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiwgVHJhbnNhY3Rpb25TdGF0dXNlcywgVHJhbnNhY3Rpb25UeXBlcyB9IGZyb20gJy4uL3RyYW5zYWN0aW9ucyc7XG5pbXBvcnQgeyBTY3JhcGVyQ3JlZGVudGlhbHMgfSBmcm9tICcuL2Jhc2Utc2NyYXBlcic7XG5cbmNvbnN0IEJBU0VfVVJMID0gJ2h0dHBzOi8vb25saW5lLmJhbmtvdHNhci5jby5pbCc7XG5jb25zdCBMT05HX0RBVEVfRk9STUFUID0gJ0REL01NL1lZWVknO1xuY29uc3QgREFURV9GT1JNQVQgPSAnREQvTU0vWVknO1xuXG5pbnRlcmZhY2UgU2NyYXBlZFRyYW5zYWN0aW9uIHtcbiAgYmFsYW5jZT86IHN0cmluZztcbiAgZGViaXQ/OiBzdHJpbmc7XG4gIGNyZWRpdD86IHN0cmluZztcbiAgbWVtbz86IHN0cmluZztcbiAgc3RhdHVzPzogc3RyaW5nO1xuICByZWZlcmVuY2U/OiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBkYXRlOiBzdHJpbmc7XG59XG5cbmZ1bmN0aW9uIGdldFBvc3NpYmxlTG9naW5SZXN1bHRzKHBhZ2U6IFBhZ2UpIHtcbiAgY29uc3QgdXJsczogUG9zc2libGVMb2dpblJlc3VsdHMgPSB7fTtcbiAgdXJsc1tMb2dpblJlc3VsdHMuU3VjY2Vzc10gPSBbYCR7QkFTRV9VUkx9L3dwcy9teXBvcnRhbC9GaWJpTWVudS9PbmxpbmVgXTtcbiAgdXJsc1tMb2dpblJlc3VsdHMuSW52YWxpZFBhc3N3b3JkXSA9IFsoKSA9PiBlbGVtZW50UHJlc2VudE9uUGFnZShwYWdlLCAnI3ZhbGlkYXRpb25Nc2cnKV07XG4gIC8vIFRPRE86IHN1cHBvcnQgY2hhbmdlIHBhc3N3b3JkXG4gIC8qIHVybHNbTE9HSU5fUkVTVUxULkNIQU5HRV9QQVNTV09SRF0gPSBbYGBdOyAqL1xuICByZXR1cm4gdXJscztcbn1cblxuZnVuY3Rpb24gZ2V0VHJhbnNhY3Rpb25zVXJsKCkge1xuICByZXR1cm4gYCR7QkFTRV9VUkx9L3dwcy9teXBvcnRhbC9GaWJpTWVudS9PbmxpbmUvT25BY2NvdW50TW5nbWVudC9PbkJhbGFuY2VUcmFucy9Qcml2YXRlQWNjb3VudEZsb3dgO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVMb2dpbkZpZWxkcyhjcmVkZW50aWFsczogU2NyYXBlckNyZWRlbnRpYWxzKSB7XG4gIHJldHVybiBbXG4gICAgeyBzZWxlY3RvcjogJyN1c2VybmFtZScsIHZhbHVlOiBjcmVkZW50aWFscy51c2VybmFtZSB9LFxuICAgIHsgc2VsZWN0b3I6ICcjcGFzc3dvcmQnLCB2YWx1ZTogY3JlZGVudGlhbHMucGFzc3dvcmQgfSxcbiAgXTtcbn1cblxuZnVuY3Rpb24gZ2V0QW1vdW50RGF0YShhbW91bnRTdHI6IHN0cmluZywgaGFzQ3VycmVuY3kgPSBmYWxzZSkge1xuICBjb25zdCBhbW91bnRTdHJDbG4gPSBhbW91bnRTdHIucmVwbGFjZSgnLCcsICcnKTtcbiAgbGV0IGN1cnJlbmN5OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgbGV0IGFtb3VudDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gIGlmICghaGFzQ3VycmVuY3kpIHtcbiAgICBhbW91bnQgPSBwYXJzZUZsb2F0KGFtb3VudFN0ckNsbik7XG4gICAgY3VycmVuY3kgPSBTSEVLRUxfQ1VSUkVOQ1k7XG4gIH0gZWxzZSBpZiAoYW1vdW50U3RyQ2xuLmluY2x1ZGVzKFNIRUtFTF9DVVJSRU5DWV9TWU1CT0wpKSB7XG4gICAgYW1vdW50ID0gcGFyc2VGbG9hdChhbW91bnRTdHJDbG4ucmVwbGFjZShTSEVLRUxfQ1VSUkVOQ1lfU1lNQk9MLCAnJykpO1xuICAgIGN1cnJlbmN5ID0gU0hFS0VMX0NVUlJFTkNZO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IHBhcnRzID0gYW1vdW50U3RyQ2xuLnNwbGl0KCcgJyk7XG4gICAgYW1vdW50ID0gcGFyc2VGbG9hdChwYXJ0c1swXSk7XG4gICAgWywgY3VycmVuY3ldID0gcGFydHM7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGFtb3VudCxcbiAgICBjdXJyZW5jeSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gY29udmVydFRyYW5zYWN0aW9ucyh0eG5zOiBTY3JhcGVkVHJhbnNhY3Rpb25bXSk6IFRyYW5zYWN0aW9uW10ge1xuICByZXR1cm4gdHhucy5tYXAoKHR4bikgPT4ge1xuICAgIGNvbnN0IGRhdGVGb3JtYXQgPVxuICAgICAgICB0eG4uZGF0ZS5sZW5ndGggPT09IDggP1xuICAgICAgICAgIERBVEVfRk9STUFUIDpcbiAgICAgICAgICB0eG4uZGF0ZS5sZW5ndGggPT09IDEwID9cbiAgICAgICAgICAgIExPTkdfREFURV9GT1JNQVQgOlxuICAgICAgICAgICAgbnVsbDtcbiAgICBpZiAoIWRhdGVGb3JtYXQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBkYXRlIGZvcm1hdCcpO1xuICAgIH1cbiAgICBjb25zdCB0eG5EYXRlID0gbW9tZW50KHR4bi5kYXRlLCBkYXRlRm9ybWF0KS50b0lTT1N0cmluZygpO1xuICAgIGNvbnN0IGNyZWRpdCA9IGdldEFtb3VudERhdGEodHhuLmNyZWRpdCB8fCAnJykuYW1vdW50O1xuICAgIGNvbnN0IGRlYml0ID0gZ2V0QW1vdW50RGF0YSh0eG4uZGViaXQgfHwgJycpLmFtb3VudDtcbiAgICBjb25zdCBhbW91bnQgPSAoTnVtYmVyLmlzTmFOKGNyZWRpdCkgPyAwIDogY3JlZGl0KSAtIChOdW1iZXIuaXNOYU4oZGViaXQpID8gMCA6IGRlYml0KTtcblxuICAgIGNvbnN0IHJlc3VsdDogVHJhbnNhY3Rpb24gPSB7XG4gICAgICB0eXBlOiBUcmFuc2FjdGlvblR5cGVzLk5vcm1hbCxcbiAgICAgIHN0YXR1czogVHJhbnNhY3Rpb25TdGF0dXNlcy5Db21wbGV0ZWQsXG4gICAgICBpZGVudGlmaWVyOiB0eG4ucmVmZXJlbmNlID8gcGFyc2VJbnQodHhuLnJlZmVyZW5jZSwgMTApIDogdW5kZWZpbmVkLFxuICAgICAgZGF0ZTogdHhuRGF0ZSxcbiAgICAgIHByb2Nlc3NlZERhdGU6IHR4bkRhdGUsXG4gICAgICBvcmlnaW5hbEFtb3VudDogYW1vdW50LFxuICAgICAgb3JpZ2luYWxDdXJyZW5jeTogU0hFS0VMX0NVUlJFTkNZLFxuICAgICAgY2hhcmdlZEFtb3VudDogYW1vdW50LFxuICAgICAgZGVzY3JpcHRpb246IHR4bi5kZXNjcmlwdGlvbiB8fCAnJyxcbiAgICAgIG1lbW86ICcnLFxuICAgIH07XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcGFyc2VUcmFuc2FjdGlvblBhZ2UocGFnZTogUGFnZSk6IFByb21pc2U8U2NyYXBlZFRyYW5zYWN0aW9uW10+IHtcbiAgY29uc3QgdGRzVmFsdWVzID0gYXdhaXQgcGFnZUV2YWxBbGwocGFnZSwgJyNkYXRhVGFibGUwNzcgdGJvZHkgdHInLCBbXSwgKHRycykgPT4ge1xuICAgIHJldHVybiAodHJzKS5tYXAoKGVsKSA9PiAoe1xuICAgICAgZGF0ZTogKGVsLnF1ZXJ5U2VsZWN0b3IoJy5kYXRlJykgYXMgSFRNTEVsZW1lbnQpLmlubmVyVGV4dCxcbiAgICAgIC8vIHJlZmVyZW5jZSBhbmQgZGVzY3JpcHRpb24gaGF2ZSB2aWNlLXZlcnNhIGNsYXNzIG5hbWVcbiAgICAgIGRlc2NyaXB0aW9uOiAoZWwucXVlcnlTZWxlY3RvcignLnJlZmVyZW5jZScpIGFzIEhUTUxFbGVtZW50KS5pbm5lclRleHQsXG4gICAgICByZWZlcmVuY2U6IChlbC5xdWVyeVNlbGVjdG9yKCcuZGV0YWlscycpIGFzIEhUTUxFbGVtZW50KS5pbm5lclRleHQsXG4gICAgICBjcmVkaXQ6IChlbC5xdWVyeVNlbGVjdG9yKCcuY3JlZGl0JykgYXMgSFRNTEVsZW1lbnQpLmlubmVyVGV4dCxcbiAgICAgIGRlYml0OiAoZWwucXVlcnlTZWxlY3RvcignLmRlYml0JykgYXMgSFRNTEVsZW1lbnQpLmlubmVyVGV4dCxcbiAgICAgIGJhbGFuY2U6IChlbC5xdWVyeVNlbGVjdG9yKCcuYmFsYW5jZScpIGFzIEhUTUxFbGVtZW50KS5pbm5lclRleHQsXG4gICAgfSkpO1xuICB9KTtcblxuICByZXR1cm4gdGRzVmFsdWVzO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRBY2NvdW50U3VtbWFyeShwYWdlOiBQYWdlKSB7XG4gIGNvbnN0IGJhbGFuY2VFbG0gPSBhd2FpdCBwYWdlLiQoJy5jdXJyZW50X2JhbGFuY2UnKTtcbiAgY29uc3QgYmFsYW5jZUlubmVyVGV4dEVsbSA9IGF3YWl0IGJhbGFuY2VFbG0hLmdldFByb3BlcnR5KCdpbm5lclRleHQnKTtcbiAgY29uc3QgYmFsYW5jZVRleHQgPSBhd2FpdCBiYWxhbmNlSW5uZXJUZXh0RWxtLmpzb25WYWx1ZSgpO1xuICBjb25zdCBiYWxhbmNlVmFsdWUgPSBnZXRBbW91bnREYXRhKGJhbGFuY2VUZXh0IGFzIHN0cmluZywgdHJ1ZSk7XG4gIC8vIFRPRE86IEZpbmQgdGhlIGNyZWRpdCBmaWVsZCBpbiBiYW5rIHdlYnNpdGUgKGNvdWxkIHNlZSBpdCBpbiBteSBhY2NvdW50KVxuICByZXR1cm4ge1xuICAgIGJhbGFuY2U6IE51bWJlci5pc05hTihiYWxhbmNlVmFsdWUuYW1vdW50KSA/IDAgOiBiYWxhbmNlVmFsdWUuYW1vdW50LFxuICAgIGNyZWRpdExpbWl0OiAwLjAsXG4gICAgY3JlZGl0VXRpbGl6YXRpb246IDAuMCxcbiAgICBiYWxhbmNlQ3VycmVuY3k6IGJhbGFuY2VWYWx1ZS5jdXJyZW5jeSxcbiAgfTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZmV0Y2hUcmFuc2FjdGlvbnNGb3JBY2NvdW50KHBhZ2U6IFBhZ2UsIHN0YXJ0RGF0ZTogTW9tZW50KSB7XG4gIGNvbnN0IHN1bW1hcnkgPSBhd2FpdCBnZXRBY2NvdW50U3VtbWFyeShwYWdlKTtcbiAgYXdhaXQgd2FpdFVudGlsRWxlbWVudEZvdW5kKHBhZ2UsICdpbnB1dCNmcm9tRGF0ZScpO1xuICAvLyBHZXQgYWNjb3VudCBudW1iZXJcbiAgY29uc3QgYnJhbmNoTnVtID0gYXdhaXQgcGFnZS4kZXZhbCgnLmJyYW5jaF9udW0nLCAoc3BhbikgPT4ge1xuICAgIHJldHVybiAoc3BhbiBhcyBIVE1MRWxlbWVudCkuaW5uZXJUZXh0O1xuICB9KTtcblxuICBjb25zdCBhY2NvdW50Tm1iciA9IGF3YWl0IHBhZ2UuJGV2YWwoJy5hY2NfbnVtJywgKHNwYW4pID0+IHtcbiAgICByZXR1cm4gKHNwYW4gYXMgSFRNTEVsZW1lbnQpLmlubmVyVGV4dDtcbiAgfSk7XG4gIGNvbnN0IGFjY291bnROdW1iZXIgPSBgMTQtJHticmFuY2hOdW19LSR7YWNjb3VudE5tYnJ9YDtcbiAgLy8gU2VhcmNoIGZvciByZWxhdmFudCB0cmFuc2FjdGlvbiBmcm9tIHN0YXJ0RGF0ZVxuICBhd2FpdCBjbGlja0J1dHRvbihwYWdlLCAnI3RhYkhlYWRlcjQnKTtcbiAgYXdhaXQgZmlsbElucHV0KFxuICAgIHBhZ2UsXG4gICAgJ2lucHV0I2Zyb21EYXRlJyxcbiAgICBzdGFydERhdGUuZm9ybWF0KCdERC9NTS9ZWVlZJyksXG4gICk7XG5cbiAgYXdhaXQgY2xpY2tCdXR0b24ocGFnZSwgJyNmaWJpX3RhYl9kYXRlcyAuZmliaV9idG46bnRoLWNoaWxkKDIpJyk7XG4gIGF3YWl0IHdhaXRGb3JOYXZpZ2F0aW9uKHBhZ2UpO1xuICBhd2FpdCB3YWl0VW50aWxFbGVtZW50Rm91bmQocGFnZSwgJ3RhYmxlI2RhdGFUYWJsZTA3NywgI05PX0RBVEEwNzcnKTtcbiAgbGV0IGhhc05leHRQYWdlID0gdHJ1ZTtcbiAgbGV0IHR4bnM6IFNjcmFwZWRUcmFuc2FjdGlvbltdID0gW107XG5cbiAgY29uc3Qgbm9UcmFuc2FjdGlvbkVsbSA9IGF3YWl0IHBhZ2UuJCgnI05PX0RBVEEwNzcnKTtcbiAgaWYgKG5vVHJhbnNhY3Rpb25FbG0gPT0gbnVsbCkge1xuICAgIC8vIFNjYXBlIHRyYW5zYWN0aW9ucyAodGhpcyBtYXliZSBzcGFubmVkIG9uIG11bHRpcGxlIHBhZ2VzKVxuICAgIHdoaWxlIChoYXNOZXh0UGFnZSkge1xuICAgICAgY29uc3QgcGFnZVR4bnMgPSBhd2FpdCBwYXJzZVRyYW5zYWN0aW9uUGFnZShwYWdlKTtcbiAgICAgIHR4bnMgPSB0eG5zLmNvbmNhdChwYWdlVHhucyk7XG4gICAgICBjb25zdCBidXR0b24gPSBhd2FpdCBwYWdlLiQoJyNOcGFnZScpO1xuICAgICAgaGFzTmV4dFBhZ2UgPSBmYWxzZTtcbiAgICAgIGlmIChidXR0b24gIT0gbnVsbCkge1xuICAgICAgICBoYXNOZXh0UGFnZSA9IHRydWU7XG4gICAgICB9XG4gICAgICBpZiAoaGFzTmV4dFBhZ2UpIHtcbiAgICAgICAgYXdhaXQgY2xpY2tCdXR0b24ocGFnZSwgJyNOcGFnZScpO1xuICAgICAgICBhd2FpdCB3YWl0Rm9yTmF2aWdhdGlvbihwYWdlKTtcbiAgICAgICAgYXdhaXQgd2FpdFVudGlsRWxlbWVudEZvdW5kKHBhZ2UsICd0YWJsZSNkYXRhVGFibGUwNzcnKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGFjY291bnROdW1iZXIsXG4gICAgc3VtbWFyeSxcbiAgICB0eG5zOiBjb252ZXJ0VHJhbnNhY3Rpb25zKHR4bnMuc2xpY2UoMSkpLCAvLyBSZW1vdmUgZmlyc3QgbGluZSB3aGljaCBpcyBcIm9wZW5pbmcgYmFsYW5jZVwiXG4gIH07XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGZldGNoVHJhbnNhY3Rpb25zKHBhZ2U6IFBhZ2UsIHN0YXJ0RGF0ZTogTW9tZW50KSB7XG4gIC8vIFRPRE8gbmVlZCB0byBleHRlbmQgdG8gc3VwcG9ydCBtdWx0aXBsZSBhY2NvdW50cyBhbmQgZm9yZWlnbiBhY2NvdW50c1xuICByZXR1cm4gW2F3YWl0IGZldGNoVHJhbnNhY3Rpb25zRm9yQWNjb3VudChwYWdlLCBzdGFydERhdGUpXTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gd2FpdEZvclBvc3RMb2dpbihwYWdlOiBQYWdlKSB7XG4gIC8vIFRPRE8gY2hlY2sgZm9yIGNvbmRpdGlvbiB0byBwcm92aWRlIG5ldyBwYXNzd29yZFxuICByZXR1cm4gUHJvbWlzZS5yYWNlKFtcbiAgICB3YWl0VW50aWxFbGVtZW50Rm91bmQocGFnZSwgJ2Rpdi5sb3R1c0ZyYW1lJywgdHJ1ZSksXG4gICAgd2FpdFVudGlsRWxlbWVudEZvdW5kKHBhZ2UsICcjdmFsaWRhdGlvbk1zZycpLFxuICBdKTtcbn1cblxuY2xhc3MgT3RzYXJIYWhheWFsU2NyYXBlciBleHRlbmRzIEJhc2VTY3JhcGVyV2l0aEJyb3dzZXIge1xuICBnZXRMb2dpbk9wdGlvbnMoY3JlZGVudGlhbHM6IFNjcmFwZXJDcmVkZW50aWFscykge1xuICAgIHJldHVybiB7XG4gICAgICBsb2dpblVybDogYCR7QkFTRV9VUkx9L01hdGFmTG9naW5TZXJ2aWNlL01hdGFmTG9naW5TZXJ2bGV0P2JhbmtJZD1PVFNBUlBSVEFMJnNpdGU9UHJpdmF0ZSZLT0RTQUZBPUhFYCxcbiAgICAgIGZpZWxkczogY3JlYXRlTG9naW5GaWVsZHMoY3JlZGVudGlhbHMpLFxuICAgICAgc3VibWl0QnV0dG9uU2VsZWN0b3I6ICcjY29udGludWVCdG4nLFxuICAgICAgcG9zdEFjdGlvbjogYXN5bmMgKCkgPT4gd2FpdEZvclBvc3RMb2dpbih0aGlzLnBhZ2UpLFxuICAgICAgcG9zc2libGVSZXN1bHRzOiBnZXRQb3NzaWJsZUxvZ2luUmVzdWx0cyh0aGlzLnBhZ2UpLFxuICAgIH07XG4gIH1cblxuICBhc3luYyBmZXRjaERhdGEoKSB7XG4gICAgY29uc3QgZGVmYXVsdFN0YXJ0TW9tZW50ID0gbW9tZW50KCkuc3VidHJhY3QoMSwgJ3llYXJzJykuYWRkKDEsICdkYXknKTtcbiAgICBjb25zdCBzdGFydERhdGUgPSB0aGlzLm9wdGlvbnMuc3RhcnREYXRlIHx8IGRlZmF1bHRTdGFydE1vbWVudC50b0RhdGUoKTtcbiAgICBjb25zdCBzdGFydE1vbWVudCA9IG1vbWVudC5tYXgoZGVmYXVsdFN0YXJ0TW9tZW50LCBtb21lbnQoc3RhcnREYXRlKSk7XG5cbiAgICBjb25zdCB1cmwgPSBnZXRUcmFuc2FjdGlvbnNVcmwoKTtcbiAgICBhd2FpdCB0aGlzLm5hdmlnYXRlVG8odXJsKTtcblxuICAgIGNvbnN0IGFjY291bnRzID0gYXdhaXQgZmV0Y2hUcmFuc2FjdGlvbnModGhpcy5wYWdlLCBzdGFydE1vbWVudCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgc3VjY2VzczogdHJ1ZSxcbiAgICAgIGFjY291bnRzLFxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgT3RzYXJIYWhheWFsU2NyYXBlcjtcbiJdfQ==
|