israeli-bank-scrapers 6.1.0 → 6.1.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.
Files changed (79) hide show
  1. package/lib/assertNever.js +5 -7
  2. package/lib/constants.js +13 -16
  3. package/lib/definitions.js +109 -113
  4. package/lib/helpers/browser.js +9 -16
  5. package/lib/helpers/dates.js +18 -19
  6. package/lib/helpers/debug.js +9 -9
  7. package/lib/helpers/elements-interactions.js +78 -84
  8. package/lib/helpers/fetch.js +82 -89
  9. package/lib/helpers/navigation.js +24 -31
  10. package/lib/helpers/storage.js +10 -12
  11. package/lib/helpers/transactions.js +33 -35
  12. package/lib/helpers/waiting.js +45 -44
  13. package/lib/index.js +15 -82
  14. package/lib/scrapers/amex.js +11 -13
  15. package/lib/scrapers/base-beinleumi-group.js +233 -252
  16. package/lib/scrapers/base-isracard-amex.js +273 -286
  17. package/lib/scrapers/base-scraper-with-browser.js +240 -274
  18. package/lib/scrapers/base-scraper.js +82 -86
  19. package/lib/scrapers/behatsdaa.js +98 -107
  20. package/lib/scrapers/beinleumi.js +11 -20
  21. package/lib/scrapers/beyahad-bishvilha.js +132 -138
  22. package/lib/scrapers/discount.js +97 -103
  23. package/lib/scrapers/errors.js +22 -25
  24. package/lib/scrapers/factory.js +66 -67
  25. package/lib/scrapers/hapoalim.js +162 -182
  26. package/lib/scrapers/interface.js +2 -5
  27. package/lib/scrapers/isracard.js +11 -13
  28. package/lib/scrapers/leumi.js +167 -176
  29. package/lib/scrapers/massad.js +11 -20
  30. package/lib/scrapers/max.js +256 -268
  31. package/lib/scrapers/mercantile.js +14 -20
  32. package/lib/scrapers/mizrahi.js +158 -159
  33. package/lib/scrapers/one-zero-queries.js +4 -7
  34. package/lib/scrapers/one-zero.js +176 -240
  35. package/lib/scrapers/otsar-hahayal.js +11 -20
  36. package/lib/scrapers/pagi.js +11 -20
  37. package/lib/scrapers/union-bank.js +172 -179
  38. package/lib/scrapers/visa-cal.js +254 -263
  39. package/lib/scrapers/yahav.js +190 -211
  40. package/lib/transactions.js +13 -16
  41. package/package.json +12 -14
  42. package/lib/scrapers/amex.test.d.ts +0 -1
  43. package/lib/scrapers/amex.test.js +0 -54
  44. package/lib/scrapers/base-scraper-with-browser.test.d.ts +0 -1
  45. package/lib/scrapers/base-scraper-with-browser.test.js +0 -58
  46. package/lib/scrapers/behatsdaa.test.d.ts +0 -1
  47. package/lib/scrapers/behatsdaa.test.js +0 -50
  48. package/lib/scrapers/beinleumi.test.d.ts +0 -1
  49. package/lib/scrapers/beinleumi.test.js +0 -52
  50. package/lib/scrapers/beyahad-bishvilha.test.d.ts +0 -1
  51. package/lib/scrapers/beyahad-bishvilha.test.js +0 -52
  52. package/lib/scrapers/discount.test.d.ts +0 -1
  53. package/lib/scrapers/discount.test.js +0 -54
  54. package/lib/scrapers/factory.test.d.ts +0 -1
  55. package/lib/scrapers/factory.test.js +0 -19
  56. package/lib/scrapers/hapoalim.test.d.ts +0 -1
  57. package/lib/scrapers/hapoalim.test.js +0 -52
  58. package/lib/scrapers/isracard.test.d.ts +0 -1
  59. package/lib/scrapers/isracard.test.js +0 -54
  60. package/lib/scrapers/leumi.test.d.ts +0 -1
  61. package/lib/scrapers/leumi.test.js +0 -52
  62. package/lib/scrapers/max.test.d.ts +0 -1
  63. package/lib/scrapers/max.test.js +0 -71
  64. package/lib/scrapers/mercantile.test.d.ts +0 -1
  65. package/lib/scrapers/mercantile.test.js +0 -50
  66. package/lib/scrapers/mizrahi.test.d.ts +0 -1
  67. package/lib/scrapers/mizrahi.test.js +0 -58
  68. package/lib/scrapers/one-zero.test.d.ts +0 -1
  69. package/lib/scrapers/one-zero.test.js +0 -56
  70. package/lib/scrapers/otsar-hahayal.test.d.ts +0 -1
  71. package/lib/scrapers/otsar-hahayal.test.js +0 -52
  72. package/lib/scrapers/pagi.test.d.ts +0 -1
  73. package/lib/scrapers/pagi.test.js +0 -52
  74. package/lib/scrapers/union-bank.test.d.ts +0 -1
  75. package/lib/scrapers/union-bank.test.js +0 -52
  76. package/lib/scrapers/visa-cal.test.d.ts +0 -1
  77. package/lib/scrapers/visa-cal.test.js +0 -54
  78. package/lib/scrapers/yahav.test.d.ts +0 -1
  79. package/lib/scrapers/yahav.test.js +0 -54
@@ -1,22 +1,16 @@
1
1
  "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
- require("core-js/modules/es.array.iterator.js");
8
- require("core-js/modules/es.promise.js");
9
- require("core-js/modules/es.regexp.exec.js");
10
- require("core-js/modules/es.string.replace.js");
11
- var _moment = _interopRequireDefault(require("moment"));
12
- var _constants = require("../constants");
13
- var _debug = require("../helpers/debug");
14
- var _elementsInteractions = require("../helpers/elements-interactions");
15
- var _navigation = require("../helpers/navigation");
16
- var _transactions = require("../transactions");
17
- var _baseScraperWithBrowser = require("./base-scraper-with-browser");
18
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
19
- const debug = (0, _debug.getDebug)('leumi');
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const moment_1 = __importDefault(require("moment"));
7
+ const constants_1 = require("../constants");
8
+ const debug_1 = require("../helpers/debug");
9
+ const elements_interactions_1 = require("../helpers/elements-interactions");
10
+ const navigation_1 = require("../helpers/navigation");
11
+ const transactions_1 = require("../transactions");
12
+ const base_scraper_with_browser_1 = require("./base-scraper-with-browser");
13
+ const debug = (0, debug_1.getDebug)('leumi');
20
14
  const BASE_URL = 'https://hb2.bankleumi.co.il';
21
15
  const LOGIN_URL = 'https://www.leumi.co.il/';
22
16
  const TRANSACTIONS_URL = `${BASE_URL}/eBanking/SO/SPA.aspx#/ts/BusinessAccountTrx?WidgetPar=1`;
@@ -25,182 +19,179 @@ const DATE_FORMAT = 'DD.MM.YY';
25
19
  const ACCOUNT_BLOCKED_MSG = 'המנוי חסום';
26
20
  const INVALID_PASSWORD_MSG = 'אחד או יותר מפרטי ההזדהות שמסרת שגויים. ניתן לנסות שוב';
27
21
  function getPossibleLoginResults() {
28
- const urls = {
29
- [_baseScraperWithBrowser.LoginResults.Success]: [/ebanking\/SO\/SPA.aspx/i],
30
- [_baseScraperWithBrowser.LoginResults.InvalidPassword]: [async options => {
31
- if (!options || !options.page) {
32
- throw new Error('missing page options argument');
33
- }
34
- const errorMessage = await (0, _elementsInteractions.pageEvalAll)(options.page, 'svg#Capa_1', '', element => {
35
- var _element$;
36
- return (_element$ = element[0]) === null || _element$ === void 0 || (_element$ = _element$.parentElement) === null || _element$ === void 0 || (_element$ = _element$.children[1]) === null || _element$ === void 0 ? void 0 : _element$.innerText;
37
- });
38
- return errorMessage === null || errorMessage === void 0 ? void 0 : errorMessage.startsWith(INVALID_PASSWORD_MSG);
39
- }],
40
- [_baseScraperWithBrowser.LoginResults.AccountBlocked]: [
41
- // NOTICE - might not be relevant starting the Leumi re-design during 2022 Sep
42
- async options => {
43
- if (!options || !options.page) {
44
- throw new Error('missing page options argument');
45
- }
46
- const errorMessage = await (0, _elementsInteractions.pageEvalAll)(options.page, '.errHeader', '', label => {
47
- var _label$;
48
- return (_label$ = label[0]) === null || _label$ === void 0 ? void 0 : _label$.innerText;
49
- });
50
- return errorMessage === null || errorMessage === void 0 ? void 0 : errorMessage.startsWith(ACCOUNT_BLOCKED_MSG);
51
- }],
52
- [_baseScraperWithBrowser.LoginResults.ChangePassword]: ['https://hb2.bankleumi.co.il/authenticate'] // NOTICE - might not be relevant starting the Leumi re-design during 2022 Sep
53
- };
54
- return urls;
22
+ const urls = {
23
+ [base_scraper_with_browser_1.LoginResults.Success]: [/ebanking\/SO\/SPA.aspx/i],
24
+ [base_scraper_with_browser_1.LoginResults.InvalidPassword]: [
25
+ async (options) => {
26
+ if (!options || !options.page) {
27
+ throw new Error('missing page options argument');
28
+ }
29
+ const errorMessage = await (0, elements_interactions_1.pageEvalAll)(options.page, 'svg#Capa_1', '', element => {
30
+ return element[0]?.parentElement?.children[1]?.innerText;
31
+ });
32
+ return errorMessage?.startsWith(INVALID_PASSWORD_MSG);
33
+ },
34
+ ],
35
+ [base_scraper_with_browser_1.LoginResults.AccountBlocked]: [
36
+ // NOTICE - might not be relevant starting the Leumi re-design during 2022 Sep
37
+ async (options) => {
38
+ if (!options || !options.page) {
39
+ throw new Error('missing page options argument');
40
+ }
41
+ const errorMessage = await (0, elements_interactions_1.pageEvalAll)(options.page, '.errHeader', '', label => {
42
+ return label[0]?.innerText;
43
+ });
44
+ return errorMessage?.startsWith(ACCOUNT_BLOCKED_MSG);
45
+ },
46
+ ],
47
+ [base_scraper_with_browser_1.LoginResults.ChangePassword]: ['https://hb2.bankleumi.co.il/authenticate'], // NOTICE - might not be relevant starting the Leumi re-design during 2022 Sep
48
+ };
49
+ return urls;
55
50
  }
56
51
  function createLoginFields(credentials) {
57
- return [{
58
- selector: 'input[placeholder="שם משתמש"]',
59
- value: credentials.username
60
- }, {
61
- selector: 'input[placeholder="סיסמה"]',
62
- value: credentials.password
63
- }];
52
+ return [
53
+ { selector: 'input[placeholder="שם משתמש"]', value: credentials.username },
54
+ { selector: 'input[placeholder="סיסמה"]', value: credentials.password },
55
+ ];
64
56
  }
65
57
  function extractTransactionsFromPage(transactions, status) {
66
- if (transactions === null || transactions.length === 0) {
67
- return [];
68
- }
69
- const result = transactions.map(rawTransaction => {
70
- const date = (0, _moment.default)(rawTransaction.DateUTC).milliseconds(0).toISOString();
71
- const newTransaction = {
72
- status,
73
- type: _transactions.TransactionTypes.Normal,
74
- date,
75
- processedDate: date,
76
- description: rawTransaction.Description || '',
77
- identifier: rawTransaction.ReferenceNumberLong,
78
- memo: rawTransaction.AdditionalData || '',
79
- originalCurrency: _constants.SHEKEL_CURRENCY,
80
- chargedAmount: rawTransaction.Amount,
81
- originalAmount: rawTransaction.Amount
82
- };
83
- return newTransaction;
84
- });
85
- return result;
58
+ if (transactions === null || transactions.length === 0) {
59
+ return [];
60
+ }
61
+ const result = transactions.map(rawTransaction => {
62
+ const date = (0, moment_1.default)(rawTransaction.DateUTC).milliseconds(0).toISOString();
63
+ const newTransaction = {
64
+ status,
65
+ type: transactions_1.TransactionTypes.Normal,
66
+ date,
67
+ processedDate: date,
68
+ description: rawTransaction.Description || '',
69
+ identifier: rawTransaction.ReferenceNumberLong,
70
+ memo: rawTransaction.AdditionalData || '',
71
+ originalCurrency: constants_1.SHEKEL_CURRENCY,
72
+ chargedAmount: rawTransaction.Amount,
73
+ originalAmount: rawTransaction.Amount,
74
+ };
75
+ return newTransaction;
76
+ });
77
+ return result;
86
78
  }
87
79
  function hangProcess(timeout) {
88
- return new Promise(resolve => {
89
- setTimeout(() => {
90
- resolve();
91
- }, timeout);
92
- });
80
+ return new Promise(resolve => {
81
+ setTimeout(() => {
82
+ resolve();
83
+ }, timeout);
84
+ });
93
85
  }
94
86
  async function clickByXPath(page, xpath) {
95
- await page.waitForSelector(xpath, {
96
- timeout: 30000,
97
- visible: true
98
- });
99
- const elm = await page.$$(xpath);
100
- await elm[0].click();
87
+ await page.waitForSelector(xpath, { timeout: 30000, visible: true });
88
+ const elm = await page.$$(xpath);
89
+ await elm[0].click();
101
90
  }
102
91
  function removeSpecialCharacters(str) {
103
- return str.replace(/[^0-9/-]/g, '');
92
+ return str.replace(/[^0-9/-]/g, '');
104
93
  }
105
94
  async function fetchTransactionsForAccount(page, startDate, accountId) {
106
- // DEVELOPER NOTICE the account number received from the server is being altered at
107
- // runtime for some accounts after 1-2 seconds so we need to hang the process for a short while.
108
- await hangProcess(4000);
109
- await (0, _elementsInteractions.waitUntilElementFound)(page, 'button[title="חיפוש מתקדם"]', true);
110
- await (0, _elementsInteractions.clickButton)(page, 'button[title="חיפוש מתקדם"]');
111
- await (0, _elementsInteractions.waitUntilElementFound)(page, 'bll-radio-button', true);
112
- await (0, _elementsInteractions.clickButton)(page, 'bll-radio-button:not([checked])');
113
- await (0, _elementsInteractions.waitUntilElementFound)(page, 'input[formcontrolname="txtInputFrom"]', true);
114
- await (0, _elementsInteractions.fillInput)(page, 'input[formcontrolname="txtInputFrom"]', startDate.format(DATE_FORMAT));
115
-
116
- // we must blur the from control otherwise the search will use the previous value
117
- await page.focus("button[aria-label='סנן']");
118
- await (0, _elementsInteractions.clickButton)(page, "button[aria-label='סנן']");
119
- const finalResponse = await page.waitForResponse(response => {
120
- return response.url() === FILTERED_TRANSACTIONS_URL && response.request().method() === 'POST';
121
- });
122
- const responseJson = await finalResponse.json();
123
- const accountNumber = accountId.replace('/', '_').replace(/[^\d-_]/g, '');
124
- const response = JSON.parse(responseJson.jsonResp);
125
- const pendingTransactions = response.TodayTransactionsItems;
126
- const transactions = response.HistoryTransactionsItems;
127
- const balance = response.BalanceDisplay ? parseFloat(response.BalanceDisplay) : undefined;
128
- const pendingTxns = extractTransactionsFromPage(pendingTransactions, _transactions.TransactionStatuses.Pending);
129
- const completedTxns = extractTransactionsFromPage(transactions, _transactions.TransactionStatuses.Completed);
130
- const txns = [...pendingTxns, ...completedTxns];
131
- return {
132
- accountNumber,
133
- balance,
134
- txns
135
- };
95
+ // DEVELOPER NOTICE the account number received from the server is being altered at
96
+ // runtime for some accounts after 1-2 seconds so we need to hang the process for a short while.
97
+ await hangProcess(4000);
98
+ await (0, elements_interactions_1.waitUntilElementFound)(page, 'button[title="חיפוש מתקדם"]', true);
99
+ await (0, elements_interactions_1.clickButton)(page, 'button[title="חיפוש מתקדם"]');
100
+ await (0, elements_interactions_1.waitUntilElementFound)(page, 'bll-radio-button', true);
101
+ await (0, elements_interactions_1.clickButton)(page, 'bll-radio-button:not([checked])');
102
+ await (0, elements_interactions_1.waitUntilElementFound)(page, 'input[formcontrolname="txtInputFrom"]', true);
103
+ await (0, elements_interactions_1.fillInput)(page, 'input[formcontrolname="txtInputFrom"]', startDate.format(DATE_FORMAT));
104
+ // we must blur the from control otherwise the search will use the previous value
105
+ await page.focus("button[aria-label='סנן']");
106
+ await (0, elements_interactions_1.clickButton)(page, "button[aria-label='סנן']");
107
+ const finalResponse = await page.waitForResponse(response => {
108
+ return response.url() === FILTERED_TRANSACTIONS_URL && response.request().method() === 'POST';
109
+ });
110
+ const responseJson = await finalResponse.json();
111
+ const accountNumber = accountId.replace('/', '_').replace(/[^\d-_]/g, '');
112
+ const response = JSON.parse(responseJson.jsonResp);
113
+ const pendingTransactions = response.TodayTransactionsItems;
114
+ const transactions = response.HistoryTransactionsItems;
115
+ const balance = response.BalanceDisplay ? parseFloat(response.BalanceDisplay) : undefined;
116
+ const pendingTxns = extractTransactionsFromPage(pendingTransactions, transactions_1.TransactionStatuses.Pending);
117
+ const completedTxns = extractTransactionsFromPage(transactions, transactions_1.TransactionStatuses.Completed);
118
+ const txns = [...pendingTxns, ...completedTxns];
119
+ return {
120
+ accountNumber,
121
+ balance,
122
+ txns,
123
+ };
136
124
  }
137
125
  async function fetchTransactions(page, startDate) {
138
- const accounts = [];
139
-
140
- // DEVELOPER NOTICE the account number received from the server is being altered at
141
- // runtime for some accounts after 1-2 seconds so we need to hang the process for a short while.
142
- await hangProcess(4000);
143
- const accountsIds = await page.evaluate(() => Array.from(document.querySelectorAll('app-masked-number-combo span.display-number-li'), e => e.textContent));
144
-
145
- // due to a bug, the altered value might include undesired signs like & that should be removed
146
-
147
- if (!accountsIds.length) {
148
- throw new Error('Failed to extract or parse the account number');
149
- }
150
- for (const accountId of accountsIds) {
151
- if (accountsIds.length > 1) {
152
- // get list of accounts and check accountId
153
- await clickByXPath(page, 'xpath///*[contains(@class, "number") and contains(@class, "combo-inner")]');
154
- await clickByXPath(page, `xpath///span[contains(text(), '${accountId}')]`);
126
+ const accounts = [];
127
+ // DEVELOPER NOTICE the account number received from the server is being altered at
128
+ // runtime for some accounts after 1-2 seconds so we need to hang the process for a short while.
129
+ await hangProcess(4000);
130
+ const accountsIds = (await page.evaluate(() => Array.from(document.querySelectorAll('app-masked-number-combo span.display-number-li'), e => e.textContent)));
131
+ // due to a bug, the altered value might include undesired signs like & that should be removed
132
+ if (!accountsIds.length) {
133
+ throw new Error('Failed to extract or parse the account number');
134
+ }
135
+ for (const accountId of accountsIds) {
136
+ if (accountsIds.length > 1) {
137
+ // get list of accounts and check accountId
138
+ await clickByXPath(page, 'xpath///*[contains(@class, "number") and contains(@class, "combo-inner")]');
139
+ await clickByXPath(page, `xpath///span[contains(text(), '${accountId}')]`);
140
+ }
141
+ accounts.push(await fetchTransactionsForAccount(page, startDate, removeSpecialCharacters(accountId)));
155
142
  }
156
- accounts.push(await fetchTransactionsForAccount(page, startDate, removeSpecialCharacters(accountId)));
157
- }
158
- return accounts;
143
+ return accounts;
159
144
  }
160
145
  async function navigateToLogin(page) {
161
- const loginButtonSelector = '.enter-account a[originaltitle="כניסה לחשבונך"]';
162
- debug('wait for homepage to click on login button');
163
- await (0, _elementsInteractions.waitUntilElementFound)(page, loginButtonSelector);
164
- debug('navigate to login page');
165
- const loginUrl = await (0, _elementsInteractions.pageEval)(page, loginButtonSelector, null, element => {
166
- return element.href;
167
- });
168
- debug(`navigating to page (${loginUrl})`);
169
- await page.goto(loginUrl);
170
- debug('waiting for page to be loaded (networkidle2)');
171
- await (0, _navigation.waitForNavigation)(page, {
172
- waitUntil: 'networkidle2'
173
- });
174
- debug('waiting for components of login to enter credentials');
175
- await Promise.all([(0, _elementsInteractions.waitUntilElementFound)(page, 'input[placeholder="שם משתמש"]', true), (0, _elementsInteractions.waitUntilElementFound)(page, 'input[placeholder="סיסמה"]', true), (0, _elementsInteractions.waitUntilElementFound)(page, 'button[type="submit"]', true)]);
146
+ const loginButtonSelector = '.enter-account a[originaltitle="כניסה לחשבונך"]';
147
+ debug('wait for homepage to click on login button');
148
+ await (0, elements_interactions_1.waitUntilElementFound)(page, loginButtonSelector);
149
+ debug('navigate to login page');
150
+ const loginUrl = await (0, elements_interactions_1.pageEval)(page, loginButtonSelector, null, element => {
151
+ return element.href;
152
+ });
153
+ debug(`navigating to page (${loginUrl})`);
154
+ await page.goto(loginUrl);
155
+ debug('waiting for page to be loaded (networkidle2)');
156
+ await (0, navigation_1.waitForNavigation)(page, { waitUntil: 'networkidle2' });
157
+ debug('waiting for components of login to enter credentials');
158
+ await Promise.all([
159
+ (0, elements_interactions_1.waitUntilElementFound)(page, 'input[placeholder="שם משתמש"]', true),
160
+ (0, elements_interactions_1.waitUntilElementFound)(page, 'input[placeholder="סיסמה"]', true),
161
+ (0, elements_interactions_1.waitUntilElementFound)(page, 'button[type="submit"]', true),
162
+ ]);
176
163
  }
177
164
  async function waitForPostLogin(page) {
178
- await Promise.race([(0, _elementsInteractions.waitUntilElementFound)(page, 'a[title="דלג לחשבון"]', true, 60000), (0, _elementsInteractions.waitUntilElementFound)(page, 'div.main-content', false, 60000), page.waitForSelector(`xpath//div[contains(string(),"${INVALID_PASSWORD_MSG}")]`), (0, _elementsInteractions.waitUntilElementFound)(page, 'form[action="/changepassword"]', true, 60000) // not sure if they kept this one
179
- ]);
165
+ await Promise.race([
166
+ (0, elements_interactions_1.waitUntilElementFound)(page, 'a[title="דלג לחשבון"]', true, 60000),
167
+ (0, elements_interactions_1.waitUntilElementFound)(page, 'div.main-content', false, 60000),
168
+ page.waitForSelector(`xpath//div[contains(string(),"${INVALID_PASSWORD_MSG}")]`),
169
+ (0, elements_interactions_1.waitUntilElementFound)(page, 'form[action="/changepassword"]', true, 60000), // not sure if they kept this one
170
+ ]);
180
171
  }
181
- class LeumiScraper extends _baseScraperWithBrowser.BaseScraperWithBrowser {
182
- getLoginOptions(credentials) {
183
- return {
184
- loginUrl: LOGIN_URL,
185
- fields: createLoginFields(credentials),
186
- submitButtonSelector: "button[type='submit']",
187
- checkReadiness: async () => navigateToLogin(this.page),
188
- postAction: async () => waitForPostLogin(this.page),
189
- possibleResults: getPossibleLoginResults()
190
- };
191
- }
192
- async fetchData() {
193
- const minimumStartMoment = (0, _moment.default)().subtract(3, 'years').add(1, 'day');
194
- const defaultStartMoment = (0, _moment.default)().subtract(1, 'years').add(1, 'day');
195
- const startDate = this.options.startDate || defaultStartMoment.toDate();
196
- const startMoment = _moment.default.max(minimumStartMoment, (0, _moment.default)(startDate));
197
- await this.navigateTo(TRANSACTIONS_URL);
198
- const accounts = await fetchTransactions(this.page, startMoment);
199
- return {
200
- success: true,
201
- accounts
202
- };
203
- }
172
+ class LeumiScraper extends base_scraper_with_browser_1.BaseScraperWithBrowser {
173
+ getLoginOptions(credentials) {
174
+ return {
175
+ loginUrl: LOGIN_URL,
176
+ fields: createLoginFields(credentials),
177
+ submitButtonSelector: "button[type='submit']",
178
+ checkReadiness: async () => navigateToLogin(this.page),
179
+ postAction: async () => waitForPostLogin(this.page),
180
+ possibleResults: getPossibleLoginResults(),
181
+ };
182
+ }
183
+ async fetchData() {
184
+ const minimumStartMoment = (0, moment_1.default)().subtract(3, 'years').add(1, 'day');
185
+ const defaultStartMoment = (0, moment_1.default)().subtract(1, 'years').add(1, 'day');
186
+ const startDate = this.options.startDate || defaultStartMoment.toDate();
187
+ const startMoment = moment_1.default.max(minimumStartMoment, (0, moment_1.default)(startDate));
188
+ await this.navigateTo(TRANSACTIONS_URL);
189
+ const accounts = await fetchTransactions(this.page, startMoment);
190
+ return {
191
+ success: true,
192
+ accounts,
193
+ };
194
+ }
204
195
  }
205
- var _default = exports.default = LeumiScraper;
206
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbW9tZW50IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfY29uc3RhbnRzIiwiX2RlYnVnIiwiX2VsZW1lbnRzSW50ZXJhY3Rpb25zIiwiX25hdmlnYXRpb24iLCJfdHJhbnNhY3Rpb25zIiwiX2Jhc2VTY3JhcGVyV2l0aEJyb3dzZXIiLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJkZWJ1ZyIsImdldERlYnVnIiwiQkFTRV9VUkwiLCJMT0dJTl9VUkwiLCJUUkFOU0FDVElPTlNfVVJMIiwiRklMVEVSRURfVFJBTlNBQ1RJT05TX1VSTCIsIkRBVEVfRk9STUFUIiwiQUNDT1VOVF9CTE9DS0VEX01TRyIsIklOVkFMSURfUEFTU1dPUkRfTVNHIiwiZ2V0UG9zc2libGVMb2dpblJlc3VsdHMiLCJ1cmxzIiwiTG9naW5SZXN1bHRzIiwiU3VjY2VzcyIsIkludmFsaWRQYXNzd29yZCIsIm9wdGlvbnMiLCJwYWdlIiwiRXJyb3IiLCJlcnJvck1lc3NhZ2UiLCJwYWdlRXZhbEFsbCIsImVsZW1lbnQiLCJfZWxlbWVudCQiLCJwYXJlbnRFbGVtZW50IiwiY2hpbGRyZW4iLCJpbm5lclRleHQiLCJzdGFydHNXaXRoIiwiQWNjb3VudEJsb2NrZWQiLCJsYWJlbCIsIl9sYWJlbCQiLCJDaGFuZ2VQYXNzd29yZCIsImNyZWF0ZUxvZ2luRmllbGRzIiwiY3JlZGVudGlhbHMiLCJzZWxlY3RvciIsInZhbHVlIiwidXNlcm5hbWUiLCJwYXNzd29yZCIsImV4dHJhY3RUcmFuc2FjdGlvbnNGcm9tUGFnZSIsInRyYW5zYWN0aW9ucyIsInN0YXR1cyIsImxlbmd0aCIsInJlc3VsdCIsIm1hcCIsInJhd1RyYW5zYWN0aW9uIiwiZGF0ZSIsIm1vbWVudCIsIkRhdGVVVEMiLCJtaWxsaXNlY29uZHMiLCJ0b0lTT1N0cmluZyIsIm5ld1RyYW5zYWN0aW9uIiwidHlwZSIsIlRyYW5zYWN0aW9uVHlwZXMiLCJOb3JtYWwiLCJwcm9jZXNzZWREYXRlIiwiZGVzY3JpcHRpb24iLCJEZXNjcmlwdGlvbiIsImlkZW50aWZpZXIiLCJSZWZlcmVuY2VOdW1iZXJMb25nIiwibWVtbyIsIkFkZGl0aW9uYWxEYXRhIiwib3JpZ2luYWxDdXJyZW5jeSIsIlNIRUtFTF9DVVJSRU5DWSIsImNoYXJnZWRBbW91bnQiLCJBbW91bnQiLCJvcmlnaW5hbEFtb3VudCIsImhhbmdQcm9jZXNzIiwidGltZW91dCIsIlByb21pc2UiLCJyZXNvbHZlIiwic2V0VGltZW91dCIsImNsaWNrQnlYUGF0aCIsInhwYXRoIiwid2FpdEZvclNlbGVjdG9yIiwidmlzaWJsZSIsImVsbSIsIiQkIiwiY2xpY2siLCJyZW1vdmVTcGVjaWFsQ2hhcmFjdGVycyIsInN0ciIsInJlcGxhY2UiLCJmZXRjaFRyYW5zYWN0aW9uc0ZvckFjY291bnQiLCJzdGFydERhdGUiLCJhY2NvdW50SWQiLCJ3YWl0VW50aWxFbGVtZW50Rm91bmQiLCJjbGlja0J1dHRvbiIsImZpbGxJbnB1dCIsImZvcm1hdCIsImZvY3VzIiwiZmluYWxSZXNwb25zZSIsIndhaXRGb3JSZXNwb25zZSIsInJlc3BvbnNlIiwidXJsIiwicmVxdWVzdCIsIm1ldGhvZCIsInJlc3BvbnNlSnNvbiIsImpzb24iLCJhY2NvdW50TnVtYmVyIiwiSlNPTiIsInBhcnNlIiwianNvblJlc3AiLCJwZW5kaW5nVHJhbnNhY3Rpb25zIiwiVG9kYXlUcmFuc2FjdGlvbnNJdGVtcyIsIkhpc3RvcnlUcmFuc2FjdGlvbnNJdGVtcyIsImJhbGFuY2UiLCJCYWxhbmNlRGlzcGxheSIsInBhcnNlRmxvYXQiLCJ1bmRlZmluZWQiLCJwZW5kaW5nVHhucyIsIlRyYW5zYWN0aW9uU3RhdHVzZXMiLCJQZW5kaW5nIiwiY29tcGxldGVkVHhucyIsIkNvbXBsZXRlZCIsInR4bnMiLCJmZXRjaFRyYW5zYWN0aW9ucyIsImFjY291bnRzIiwiYWNjb3VudHNJZHMiLCJldmFsdWF0ZSIsIkFycmF5IiwiZnJvbSIsImRvY3VtZW50IiwicXVlcnlTZWxlY3RvckFsbCIsInRleHRDb250ZW50IiwicHVzaCIsIm5hdmlnYXRlVG9Mb2dpbiIsImxvZ2luQnV0dG9uU2VsZWN0b3IiLCJsb2dpblVybCIsInBhZ2VFdmFsIiwiaHJlZiIsImdvdG8iLCJ3YWl0Rm9yTmF2aWdhdGlvbiIsIndhaXRVbnRpbCIsImFsbCIsIndhaXRGb3JQb3N0TG9naW4iLCJyYWNlIiwiTGV1bWlTY3JhcGVyIiwiQmFzZVNjcmFwZXJXaXRoQnJvd3NlciIsImdldExvZ2luT3B0aW9ucyIsImZpZWxkcyIsInN1Ym1pdEJ1dHRvblNlbGVjdG9yIiwiY2hlY2tSZWFkaW5lc3MiLCJwb3N0QWN0aW9uIiwicG9zc2libGVSZXN1bHRzIiwiZmV0Y2hEYXRhIiwibWluaW11bVN0YXJ0TW9tZW50Iiwic3VidHJhY3QiLCJhZGQiLCJkZWZhdWx0U3RhcnRNb21lbnQiLCJ0b0RhdGUiLCJzdGFydE1vbWVudCIsIm1heCIsIm5hdmlnYXRlVG8iLCJzdWNjZXNzIiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmFwZXJzL2xldW1pLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb21lbnQsIHsgdHlwZSBNb21lbnQgfSBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHsgdHlwZSBQYWdlIH0gZnJvbSAncHVwcGV0ZWVyJztcbmltcG9ydCB7IFNIRUtFTF9DVVJSRU5DWSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBnZXREZWJ1ZyB9IGZyb20gJy4uL2hlbHBlcnMvZGVidWcnO1xuaW1wb3J0IHtcbiAgY2xpY2tCdXR0b24sXG4gIGZpbGxJbnB1dCxcbiAgcGFnZUV2YWwsXG4gIHBhZ2VFdmFsQWxsLFxuICB3YWl0VW50aWxFbGVtZW50Rm91bmQsXG59IGZyb20gJy4uL2hlbHBlcnMvZWxlbWVudHMtaW50ZXJhY3Rpb25zJztcbmltcG9ydCB7IHdhaXRGb3JOYXZpZ2F0aW9uIH0gZnJvbSAnLi4vaGVscGVycy9uYXZpZ2F0aW9uJztcbmltcG9ydCB7XG4gIFRyYW5zYWN0aW9uU3RhdHVzZXMsIFRyYW5zYWN0aW9uVHlwZXMsXG4gIHR5cGUgVHJhbnNhY3Rpb24sXG4gIHR5cGUgVHJhbnNhY3Rpb25zQWNjb3VudCxcbn0gZnJvbSAnLi4vdHJhbnNhY3Rpb25zJztcbmltcG9ydCB7IEJhc2VTY3JhcGVyV2l0aEJyb3dzZXIsIExvZ2luUmVzdWx0cywgdHlwZSBMb2dpbk9wdGlvbnMgfSBmcm9tICcuL2Jhc2Utc2NyYXBlci13aXRoLWJyb3dzZXInO1xuaW1wb3J0IHsgdHlwZSBTY3JhcGVyU2NyYXBpbmdSZXN1bHQgfSBmcm9tICcuL2ludGVyZmFjZSc7XG5cbmNvbnN0IGRlYnVnID0gZ2V0RGVidWcoJ2xldW1pJyk7XG5jb25zdCBCQVNFX1VSTCA9ICdodHRwczovL2hiMi5iYW5rbGV1bWkuY28uaWwnO1xuY29uc3QgTE9HSU5fVVJMID0gJ2h0dHBzOi8vd3d3LmxldW1pLmNvLmlsLyc7XG5jb25zdCBUUkFOU0FDVElPTlNfVVJMID0gYCR7QkFTRV9VUkx9L2VCYW5raW5nL1NPL1NQQS5hc3B4Iy90cy9CdXNpbmVzc0FjY291bnRUcng/V2lkZ2V0UGFyPTFgO1xuY29uc3QgRklMVEVSRURfVFJBTlNBQ1RJT05TX1VSTCA9IGAke0JBU0VfVVJMfS9DaGFubmVsV0NGL0Jyb2tlci5zdmMvUHJvY2Vzc1JlcXVlc3Q/bW9kdWxlTmFtZT1VQ19TT18yN19HZXRCdXNpbmVzc0FjY291bnRUcnhgO1xuXG5jb25zdCBEQVRFX0ZPUk1BVCA9ICdERC5NTS5ZWSc7XG5jb25zdCBBQ0NPVU5UX0JMT0NLRURfTVNHID0gJ9eU157XoNeV15kg15fXodeV150nO1xuY29uc3QgSU5WQUxJRF9QQVNTV09SRF9NU0cgPSAn15DXl9eTINeQ15Ug15nXldeq16gg157XpNeo15jXmSDXlNeU15bXk9eU15XXqiDXqdee16HXqNeqINep15LXldeZ15nXnS4g16DXmdeq158g15zXoNeh15XXqiDXqdeV15EnO1xuXG5mdW5jdGlvbiBnZXRQb3NzaWJsZUxvZ2luUmVzdWx0cygpIHtcbiAgY29uc3QgdXJsczogTG9naW5PcHRpb25zWydwb3NzaWJsZVJlc3VsdHMnXSA9IHtcbiAgICBbTG9naW5SZXN1bHRzLlN1Y2Nlc3NdOiBbL2ViYW5raW5nXFwvU09cXC9TUEEuYXNweC9pXSxcbiAgICBbTG9naW5SZXN1bHRzLkludmFsaWRQYXNzd29yZF06IFtcbiAgICAgIGFzeW5jIChvcHRpb25zKSA9PiB7XG4gICAgICAgIGlmICghb3B0aW9ucyB8fCAhb3B0aW9ucy5wYWdlKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdtaXNzaW5nIHBhZ2Ugb3B0aW9ucyBhcmd1bWVudCcpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IGF3YWl0IHBhZ2VFdmFsQWxsKG9wdGlvbnMucGFnZSwgJ3N2ZyNDYXBhXzEnLCAnJywgKGVsZW1lbnQpID0+IHtcbiAgICAgICAgICByZXR1cm4gKGVsZW1lbnRbMF0/LnBhcmVudEVsZW1lbnQ/LmNoaWxkcmVuWzFdIGFzIEhUTUxEaXZFbGVtZW50KT8uaW5uZXJUZXh0O1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gZXJyb3JNZXNzYWdlPy5zdGFydHNXaXRoKElOVkFMSURfUEFTU1dPUkRfTVNHKTtcbiAgICAgIH0sXG4gICAgXSxcbiAgICBbTG9naW5SZXN1bHRzLkFjY291bnRCbG9ja2VkXTogWyAvLyBOT1RJQ0UgLSBtaWdodCBub3QgYmUgcmVsZXZhbnQgc3RhcnRpbmcgdGhlIExldW1pIHJlLWRlc2lnbiBkdXJpbmcgMjAyMiBTZXBcbiAgICAgIGFzeW5jIChvcHRpb25zKSA9PiB7XG4gICAgICAgIGlmICghb3B0aW9ucyB8fCAhb3B0aW9ucy5wYWdlKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdtaXNzaW5nIHBhZ2Ugb3B0aW9ucyBhcmd1bWVudCcpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IGF3YWl0IHBhZ2VFdmFsQWxsKG9wdGlvbnMucGFnZSwgJy5lcnJIZWFkZXInLCAnJywgKGxhYmVsKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIChsYWJlbFswXSBhcyBIVE1MRWxlbWVudCk/LmlubmVyVGV4dDtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGVycm9yTWVzc2FnZT8uc3RhcnRzV2l0aChBQ0NPVU5UX0JMT0NLRURfTVNHKTtcbiAgICAgIH0sXG4gICAgXSxcbiAgICBbTG9naW5SZXN1bHRzLkNoYW5nZVBhc3N3b3JkXTogWydodHRwczovL2hiMi5iYW5rbGV1bWkuY28uaWwvYXV0aGVudGljYXRlJ10sIC8vIE5PVElDRSAtIG1pZ2h0IG5vdCBiZSByZWxldmFudCBzdGFydGluZyB0aGUgTGV1bWkgcmUtZGVzaWduIGR1cmluZyAyMDIyIFNlcFxuICB9O1xuICByZXR1cm4gdXJscztcbn1cblxuZnVuY3Rpb24gY3JlYXRlTG9naW5GaWVsZHMoY3JlZGVudGlhbHM6IFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzKSB7XG4gIHJldHVybiBbXG4gICAgeyBzZWxlY3RvcjogJ2lucHV0W3BsYWNlaG9sZGVyPVwi16nXnSDXntep16rXntepXCJdJywgdmFsdWU6IGNyZWRlbnRpYWxzLnVzZXJuYW1lIH0sXG4gICAgeyBzZWxlY3RvcjogJ2lucHV0W3BsYWNlaG9sZGVyPVwi16HXmdeh157XlFwiXScsIHZhbHVlOiBjcmVkZW50aWFscy5wYXNzd29yZCB9LFxuICBdO1xufVxuXG5mdW5jdGlvbiBleHRyYWN0VHJhbnNhY3Rpb25zRnJvbVBhZ2UodHJhbnNhY3Rpb25zOiBhbnlbXSwgc3RhdHVzOiBUcmFuc2FjdGlvblN0YXR1c2VzKTogVHJhbnNhY3Rpb25bXSB7XG4gIGlmICh0cmFuc2FjdGlvbnMgPT09IG51bGwgfHwgdHJhbnNhY3Rpb25zLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGNvbnN0IHJlc3VsdDogVHJhbnNhY3Rpb25bXSA9IHRyYW5zYWN0aW9ucy5tYXAoKHJhd1RyYW5zYWN0aW9uKSA9PiB7XG4gICAgY29uc3QgZGF0ZSA9IG1vbWVudChyYXdUcmFuc2FjdGlvbi5EYXRlVVRDKS5taWxsaXNlY29uZHMoMCkudG9JU09TdHJpbmcoKTtcbiAgICBjb25zdCBuZXdUcmFuc2FjdGlvbjogVHJhbnNhY3Rpb24gPSB7XG4gICAgICBzdGF0dXMsXG4gICAgICB0eXBlOiBUcmFuc2FjdGlvblR5cGVzLk5vcm1hbCxcbiAgICAgIGRhdGUsXG4gICAgICBwcm9jZXNzZWREYXRlOiBkYXRlLFxuICAgICAgZGVzY3JpcHRpb246IHJhd1RyYW5zYWN0aW9uLkRlc2NyaXB0aW9uIHx8ICcnLFxuICAgICAgaWRlbnRpZmllcjogcmF3VHJhbnNhY3Rpb24uUmVmZXJlbmNlTnVtYmVyTG9uZyxcbiAgICAgIG1lbW86IHJhd1RyYW5zYWN0aW9uLkFkZGl0aW9uYWxEYXRhIHx8ICcnLFxuICAgICAgb3JpZ2luYWxDdXJyZW5jeTogU0hFS0VMX0NVUlJFTkNZLFxuICAgICAgY2hhcmdlZEFtb3VudDogcmF3VHJhbnNhY3Rpb24uQW1vdW50LFxuICAgICAgb3JpZ2luYWxBbW91bnQ6IHJhd1RyYW5zYWN0aW9uLkFtb3VudCxcbiAgICB9O1xuXG4gICAgcmV0dXJuIG5ld1RyYW5zYWN0aW9uO1xuICB9KTtcblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiBoYW5nUHJvY2Vzcyh0aW1lb3V0OiBudW1iZXIpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlKSA9PiB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICByZXNvbHZlKCk7XG4gICAgfSwgdGltZW91dCk7XG4gIH0pO1xufVxuXG5hc3luYyBmdW5jdGlvbiBjbGlja0J5WFBhdGgocGFnZTogUGFnZSwgeHBhdGg6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICBhd2FpdCBwYWdlLndhaXRGb3JTZWxlY3Rvcih4cGF0aCwgeyB0aW1lb3V0OiAzMDAwMCwgdmlzaWJsZTogdHJ1ZSB9KTtcbiAgY29uc3QgZWxtID0gYXdhaXQgcGFnZS4kJCh4cGF0aCk7XG4gIGF3YWl0IGVsbVswXS5jbGljaygpO1xufVxuXG5mdW5jdGlvbiByZW1vdmVTcGVjaWFsQ2hhcmFjdGVycyhzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBzdHIucmVwbGFjZSgvW14wLTkvLV0vZywgJycpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBmZXRjaFRyYW5zYWN0aW9uc0ZvckFjY291bnQocGFnZTogUGFnZSwgc3RhcnREYXRlOiBNb21lbnQsIGFjY291bnRJZDogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvbnNBY2NvdW50PiB7XG4gIC8vIERFVkVMT1BFUiBOT1RJQ0UgdGhlIGFjY291bnQgbnVtYmVyIHJlY2VpdmVkIGZyb20gdGhlIHNlcnZlciBpcyBiZWluZyBhbHRlcmVkIGF0XG4gIC8vIHJ1bnRpbWUgZm9yIHNvbWUgYWNjb3VudHMgYWZ0ZXIgMS0yIHNlY29uZHMgc28gd2UgbmVlZCB0byBoYW5nIHRoZSBwcm9jZXNzIGZvciBhIHNob3J0IHdoaWxlLlxuICBhd2FpdCBoYW5nUHJvY2Vzcyg0MDAwKTtcblxuICBhd2FpdCB3YWl0VW50aWxFbGVtZW50Rm91bmQocGFnZSwgJ2J1dHRvblt0aXRsZT1cIteX15nXpNeV16kg157Xqten15PXnVwiXScsIHRydWUpO1xuICBhd2FpdCBjbGlja0J1dHRvbihwYWdlLCAnYnV0dG9uW3RpdGxlPVwi15fXmdek15XXqSDXnteq16fXk9edXCJdJyk7XG4gIGF3YWl0IHdhaXRVbnRpbEVsZW1lbnRGb3VuZChwYWdlLCAnYmxsLXJhZGlvLWJ1dHRvbicsIHRydWUpO1xuICBhd2FpdCBjbGlja0J1dHRvbihwYWdlLCAnYmxsLXJhZGlvLWJ1dHRvbjpub3QoW2NoZWNrZWRdKScpO1xuXG4gIGF3YWl0IHdhaXRVbnRpbEVsZW1lbnRGb3VuZChwYWdlLCAnaW5wdXRbZm9ybWNvbnRyb2xuYW1lPVwidHh0SW5wdXRGcm9tXCJdJywgdHJ1ZSk7XG5cbiAgYXdhaXQgZmlsbElucHV0KFxuICAgIHBhZ2UsXG4gICAgJ2lucHV0W2Zvcm1jb250cm9sbmFtZT1cInR4dElucHV0RnJvbVwiXScsXG4gICAgc3RhcnREYXRlLmZvcm1hdChEQVRFX0ZPUk1BVCksXG4gICk7XG5cbiAgLy8gd2UgbXVzdCBibHVyIHRoZSBmcm9tIGNvbnRyb2wgb3RoZXJ3aXNlIHRoZSBzZWFyY2ggd2lsbCB1c2UgdGhlIHByZXZpb3VzIHZhbHVlXG4gIGF3YWl0IHBhZ2UuZm9jdXMoXCJidXR0b25bYXJpYS1sYWJlbD0n16HXoNefJ11cIik7XG5cbiAgYXdhaXQgY2xpY2tCdXR0b24ocGFnZSwgXCJidXR0b25bYXJpYS1sYWJlbD0n16HXoNefJ11cIik7XG4gIGNvbnN0IGZpbmFsUmVzcG9uc2UgPSBhd2FpdCBwYWdlLndhaXRGb3JSZXNwb25zZSgocmVzcG9uc2UpID0+IHtcbiAgICByZXR1cm4gcmVzcG9uc2UudXJsKCkgPT09IEZJTFRFUkVEX1RSQU5TQUNUSU9OU19VUkwgJiZcbiAgICAgIHJlc3BvbnNlLnJlcXVlc3QoKS5tZXRob2QoKSA9PT0gJ1BPU1QnO1xuICB9KTtcblxuICBjb25zdCByZXNwb25zZUpzb246IGFueSA9IGF3YWl0IGZpbmFsUmVzcG9uc2UuanNvbigpO1xuXG4gIGNvbnN0IGFjY291bnROdW1iZXIgPSBhY2NvdW50SWQucmVwbGFjZSgnLycsICdfJykucmVwbGFjZSgvW15cXGQtX10vZywgJycpO1xuXG4gIGNvbnN0IHJlc3BvbnNlID0gSlNPTi5wYXJzZShyZXNwb25zZUpzb24uanNvblJlc3ApO1xuXG4gIGNvbnN0IHBlbmRpbmdUcmFuc2FjdGlvbnMgPSByZXNwb25zZS5Ub2RheVRyYW5zYWN0aW9uc0l0ZW1zO1xuICBjb25zdCB0cmFuc2FjdGlvbnMgPSByZXNwb25zZS5IaXN0b3J5VHJhbnNhY3Rpb25zSXRlbXM7XG4gIGNvbnN0IGJhbGFuY2UgPSByZXNwb25zZS5CYWxhbmNlRGlzcGxheSA/IHBhcnNlRmxvYXQocmVzcG9uc2UuQmFsYW5jZURpc3BsYXkpIDogdW5kZWZpbmVkO1xuXG4gIGNvbnN0IHBlbmRpbmdUeG5zID0gZXh0cmFjdFRyYW5zYWN0aW9uc0Zyb21QYWdlKHBlbmRpbmdUcmFuc2FjdGlvbnMsIFRyYW5zYWN0aW9uU3RhdHVzZXMuUGVuZGluZyk7XG4gIGNvbnN0IGNvbXBsZXRlZFR4bnMgPSBleHRyYWN0VHJhbnNhY3Rpb25zRnJvbVBhZ2UodHJhbnNhY3Rpb25zLCBUcmFuc2FjdGlvblN0YXR1c2VzLkNvbXBsZXRlZCk7XG4gIGNvbnN0IHR4bnMgPSBbXG4gICAgLi4ucGVuZGluZ1R4bnMsXG4gICAgLi4uY29tcGxldGVkVHhucyxcbiAgXTtcblxuICByZXR1cm4ge1xuICAgIGFjY291bnROdW1iZXIsXG4gICAgYmFsYW5jZSxcbiAgICB0eG5zLFxuICB9O1xufVxuXG5hc3luYyBmdW5jdGlvbiBmZXRjaFRyYW5zYWN0aW9ucyhwYWdlOiBQYWdlLCBzdGFydERhdGU6IE1vbWVudCk6IFByb21pc2U8VHJhbnNhY3Rpb25zQWNjb3VudFtdPiB7XG4gIGNvbnN0IGFjY291bnRzOiBUcmFuc2FjdGlvbnNBY2NvdW50W10gPSBbXTtcblxuICAvLyBERVZFTE9QRVIgTk9USUNFIHRoZSBhY2NvdW50IG51bWJlciByZWNlaXZlZCBmcm9tIHRoZSBzZXJ2ZXIgaXMgYmVpbmcgYWx0ZXJlZCBhdFxuICAvLyBydW50aW1lIGZvciBzb21lIGFjY291bnRzIGFmdGVyIDEtMiBzZWNvbmRzIHNvIHdlIG5lZWQgdG8gaGFuZyB0aGUgcHJvY2VzcyBmb3IgYSBzaG9ydCB3aGlsZS5cbiAgYXdhaXQgaGFuZ1Byb2Nlc3MoNDAwMCk7XG5cbiAgY29uc3QgYWNjb3VudHNJZHMgPSBhd2FpdCBwYWdlLmV2YWx1YXRlKCgpID0+IEFycmF5LmZyb20oZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnYXBwLW1hc2tlZC1udW1iZXItY29tYm8gc3Bhbi5kaXNwbGF5LW51bWJlci1saScpLCAoZSkgPT4gZS50ZXh0Q29udGVudCkpIGFzIHN0cmluZ1tdO1xuXG4gIC8vIGR1ZSB0byBhIGJ1ZywgdGhlIGFsdGVyZWQgdmFsdWUgbWlnaHQgaW5jbHVkZSB1bmRlc2lyZWQgc2lnbnMgbGlrZSAmIHRoYXQgc2hvdWxkIGJlIHJlbW92ZWRcblxuICBpZiAoIWFjY291bnRzSWRzLmxlbmd0aCkge1xuICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIGV4dHJhY3Qgb3IgcGFyc2UgdGhlIGFjY291bnQgbnVtYmVyJyk7XG4gIH1cblxuICBmb3IgKGNvbnN0IGFjY291bnRJZCBvZiBhY2NvdW50c0lkcykge1xuICAgIGlmIChhY2NvdW50c0lkcy5sZW5ndGggPiAxKSB7XG4gICAgICAvLyBnZXQgbGlzdCBvZiBhY2NvdW50cyBhbmQgY2hlY2sgYWNjb3VudElkXG4gICAgICBhd2FpdCBjbGlja0J5WFBhdGgocGFnZSwgJ3hwYXRoLy8vKltjb250YWlucyhAY2xhc3MsIFwibnVtYmVyXCIpIGFuZCBjb250YWlucyhAY2xhc3MsIFwiY29tYm8taW5uZXJcIildJyk7XG4gICAgICBhd2FpdCBjbGlja0J5WFBhdGgocGFnZSwgYHhwYXRoLy8vc3Bhbltjb250YWlucyh0ZXh0KCksICcke2FjY291bnRJZH0nKV1gKTtcbiAgICB9XG5cbiAgICBhY2NvdW50cy5wdXNoKGF3YWl0IGZldGNoVHJhbnNhY3Rpb25zRm9yQWNjb3VudChwYWdlLCBzdGFydERhdGUsIHJlbW92ZVNwZWNpYWxDaGFyYWN0ZXJzKGFjY291bnRJZCkpKTtcbiAgfVxuXG4gIHJldHVybiBhY2NvdW50cztcbn1cblxuYXN5bmMgZnVuY3Rpb24gbmF2aWdhdGVUb0xvZ2luKHBhZ2U6IFBhZ2UpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgbG9naW5CdXR0b25TZWxlY3RvciA9ICcuZW50ZXItYWNjb3VudCBhW29yaWdpbmFsdGl0bGU9XCLXm9eg15nXodeUINec15fXqdeR15XXoNeaXCJdJztcbiAgZGVidWcoJ3dhaXQgZm9yIGhvbWVwYWdlIHRvIGNsaWNrIG9uIGxvZ2luIGJ1dHRvbicpO1xuICBhd2FpdCB3YWl0VW50aWxFbGVtZW50Rm91bmQocGFnZSwgbG9naW5CdXR0b25TZWxlY3Rvcik7XG4gIGRlYnVnKCduYXZpZ2F0ZSB0byBsb2dpbiBwYWdlJyk7XG4gIGNvbnN0IGxvZ2luVXJsID0gYXdhaXQgcGFnZUV2YWwocGFnZSwgbG9naW5CdXR0b25TZWxlY3RvciwgbnVsbCwgKGVsZW1lbnQpID0+IHtcbiAgICByZXR1cm4gKGVsZW1lbnQgYXMgYW55KS5ocmVmO1xuICB9KTtcbiAgZGVidWcoYG5hdmlnYXRpbmcgdG8gcGFnZSAoJHtsb2dpblVybH0pYCk7XG4gIGF3YWl0IHBhZ2UuZ290byhsb2dpblVybCk7XG4gIGRlYnVnKCd3YWl0aW5nIGZvciBwYWdlIHRvIGJlIGxvYWRlZCAobmV0d29ya2lkbGUyKScpO1xuICBhd2FpdCB3YWl0Rm9yTmF2aWdhdGlvbihwYWdlLCB7IHdhaXRVbnRpbDogJ25ldHdvcmtpZGxlMicgfSk7XG4gIGRlYnVnKCd3YWl0aW5nIGZvciBjb21wb25lbnRzIG9mIGxvZ2luIHRvIGVudGVyIGNyZWRlbnRpYWxzJyk7XG4gIGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICB3YWl0VW50aWxFbGVtZW50Rm91bmQocGFnZSwgJ2lucHV0W3BsYWNlaG9sZGVyPVwi16nXnSDXntep16rXntepXCJdJywgdHJ1ZSksXG4gICAgd2FpdFVudGlsRWxlbWVudEZvdW5kKHBhZ2UsICdpbnB1dFtwbGFjZWhvbGRlcj1cIteh15nXodee15RcIl0nLCB0cnVlKSxcbiAgICB3YWl0VW50aWxFbGVtZW50Rm91bmQocGFnZSwgJ2J1dHRvblt0eXBlPVwic3VibWl0XCJdJywgdHJ1ZSksXG4gIF0pO1xufVxuXG5hc3luYyBmdW5jdGlvbiB3YWl0Rm9yUG9zdExvZ2luKHBhZ2U6IFBhZ2UpOiBQcm9taXNlPHZvaWQ+IHtcbiAgYXdhaXQgUHJvbWlzZS5yYWNlKFtcbiAgICB3YWl0VW50aWxFbGVtZW50Rm91bmQocGFnZSwgJ2FbdGl0bGU9XCLXk9ec15Ig15zXl9ep15HXldefXCJdJywgdHJ1ZSwgNjAwMDApLFxuICAgIHdhaXRVbnRpbEVsZW1lbnRGb3VuZChwYWdlLCAnZGl2Lm1haW4tY29udGVudCcsIGZhbHNlLCA2MDAwMCksXG4gICAgcGFnZS53YWl0Rm9yU2VsZWN0b3IoYHhwYXRoLy9kaXZbY29udGFpbnMoc3RyaW5nKCksXCIke0lOVkFMSURfUEFTU1dPUkRfTVNHfVwiKV1gKSxcbiAgICB3YWl0VW50aWxFbGVtZW50Rm91bmQocGFnZSwgJ2Zvcm1bYWN0aW9uPVwiL2NoYW5nZXBhc3N3b3JkXCJdJywgdHJ1ZSwgNjAwMDApLCAvLyBub3Qgc3VyZSBpZiB0aGV5IGtlcHQgdGhpcyBvbmVcbiAgXSk7XG59XG5cbnR5cGUgU2NyYXBlclNwZWNpZmljQ3JlZGVudGlhbHMgPSB7IHVzZXJuYW1lOiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmcgfTtcblxuY2xhc3MgTGV1bWlTY3JhcGVyIGV4dGVuZHMgQmFzZVNjcmFwZXJXaXRoQnJvd3NlcjxTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscz4ge1xuICBnZXRMb2dpbk9wdGlvbnMoY3JlZGVudGlhbHM6IFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxvZ2luVXJsOiBMT0dJTl9VUkwsXG4gICAgICBmaWVsZHM6IGNyZWF0ZUxvZ2luRmllbGRzKGNyZWRlbnRpYWxzKSxcbiAgICAgIHN1Ym1pdEJ1dHRvblNlbGVjdG9yOiBcImJ1dHRvblt0eXBlPSdzdWJtaXQnXVwiLFxuICAgICAgY2hlY2tSZWFkaW5lc3M6IGFzeW5jICgpID0+IG5hdmlnYXRlVG9Mb2dpbih0aGlzLnBhZ2UpLFxuICAgICAgcG9zdEFjdGlvbjogYXN5bmMgKCkgPT4gd2FpdEZvclBvc3RMb2dpbih0aGlzLnBhZ2UpLFxuICAgICAgcG9zc2libGVSZXN1bHRzOiBnZXRQb3NzaWJsZUxvZ2luUmVzdWx0cygpLFxuICAgIH07XG4gIH1cblxuICBhc3luYyBmZXRjaERhdGEoKTogUHJvbWlzZTxTY3JhcGVyU2NyYXBpbmdSZXN1bHQ+IHtcbiAgICBjb25zdCBtaW5pbXVtU3RhcnRNb21lbnQgPSBtb21lbnQoKS5zdWJ0cmFjdCgzLCAneWVhcnMnKS5hZGQoMSwgJ2RheScpO1xuICAgIGNvbnN0IGRlZmF1bHRTdGFydE1vbWVudCA9IG1vbWVudCgpLnN1YnRyYWN0KDEsICd5ZWFycycpLmFkZCgxLCAnZGF5Jyk7XG4gICAgY29uc3Qgc3RhcnREYXRlID0gdGhpcy5vcHRpb25zLnN0YXJ0RGF0ZSB8fCBkZWZhdWx0U3RhcnRNb21lbnQudG9EYXRlKCk7XG4gICAgY29uc3Qgc3RhcnRNb21lbnQgPSBtb21lbnQubWF4KG1pbmltdW1TdGFydE1vbWVudCwgbW9tZW50KHN0YXJ0RGF0ZSkpO1xuXG4gICAgYXdhaXQgdGhpcy5uYXZpZ2F0ZVRvKFRSQU5TQUNUSU9OU19VUkwpO1xuXG4gICAgY29uc3QgYWNjb3VudHMgPSBhd2FpdCBmZXRjaFRyYW5zYWN0aW9ucyh0aGlzLnBhZ2UsIHN0YXJ0TW9tZW50KTtcblxuICAgIHJldHVybiB7XG4gICAgICBzdWNjZXNzOiB0cnVlLFxuICAgICAgYWNjb3VudHMsXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBMZXVtaVNjcmFwZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQSxJQUFBQSxPQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBQyxVQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxNQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxxQkFBQSxHQUFBSCxPQUFBO0FBT0EsSUFBQUksV0FBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssYUFBQSxHQUFBTCxPQUFBO0FBS0EsSUFBQU0sdUJBQUEsR0FBQU4sT0FBQTtBQUFzRyxTQUFBRCx1QkFBQVEsQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLEtBQUFFLE9BQUEsRUFBQUYsQ0FBQTtBQUd0RyxNQUFNRyxLQUFLLEdBQUcsSUFBQUMsZUFBUSxFQUFDLE9BQU8sQ0FBQztBQUMvQixNQUFNQyxRQUFRLEdBQUcsNkJBQTZCO0FBQzlDLE1BQU1DLFNB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
196
+ exports.default = LeumiScraper;
197
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGV1bWkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2NyYXBlcnMvbGV1bWkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxvREFBNkM7QUFFN0MsNENBQStDO0FBQy9DLDRDQUE0QztBQUM1Qyw0RUFBd0g7QUFDeEgsc0RBQTBEO0FBQzFELGtEQUFvSDtBQUNwSCwyRUFBc0c7QUFHdEcsTUFBTSxLQUFLLEdBQUcsSUFBQSxnQkFBUSxFQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ2hDLE1BQU0sUUFBUSxHQUFHLDZCQUE2QixDQUFDO0FBQy9DLE1BQU0sU0FBUyxHQUFHLDBCQUEwQixDQUFDO0FBQzdDLE1BQU0sZ0JBQWdCLEdBQUcsR0FBRyxRQUFRLDBEQUEwRCxDQUFDO0FBQy9GLE1BQU0seUJBQXlCLEdBQUcsR0FBRyxRQUFRLGlGQUFpRixDQUFDO0FBRS9ILE1BQU0sV0FBVyxHQUFHLFVBQVUsQ0FBQztBQUMvQixNQUFNLG1CQUFtQixHQUFHLFlBQVksQ0FBQztBQUN6QyxNQUFNLG9CQUFvQixHQUFHLHdEQUF3RCxDQUFDO0FBRXRGLFNBQVMsdUJBQXVCO0lBQzlCLE1BQU0sSUFBSSxHQUFvQztRQUM1QyxDQUFDLHdDQUFZLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQztRQUNuRCxDQUFDLHdDQUFZLENBQUMsZUFBZSxDQUFDLEVBQUU7WUFDOUIsS0FBSyxFQUFDLE9BQU8sRUFBQyxFQUFFO2dCQUNkLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFO29CQUM3QixNQUFNLElBQUksS0FBSyxDQUFDLCtCQUErQixDQUFDLENBQUM7aUJBQ2xEO2dCQUNELE1BQU0sWUFBWSxHQUFHLE1BQU0sSUFBQSxtQ0FBVyxFQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRSxPQUFPLENBQUMsRUFBRTtvQkFDL0UsT0FBUSxPQUFPLENBQUMsQ0FB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Q0FBQztJQUNKLENBQUM7Q0FDRjtBQUVELGtCQUFlLFlBQVksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb21lbnQsIHsgdHlwZSBNb21lbnQgfSBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHsgdHlwZSBQYWdlIH0gZnJvbSAncHVwcGV0ZWVyJztcbmltcG9ydCB7IFNIRUtFTF9DVVJSRU5DWSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBnZXREZWJ1ZyB9IGZyb20gJy4uL2hlbHBlcnMvZGVidWcnO1xuaW1wb3J0IHsgY2xpY2tCdXR0b24sIGZpbGxJbnB1dCwgcGFnZUV2YWwsIHBhZ2VFdmFsQWxsLCB3YWl0VW50aWxFbGVtZW50Rm91bmQgfSBmcm9tICcuLi9oZWxwZXJzL2VsZW1lbnRzLWludGVyYWN0aW9ucyc7XG5pbXBvcnQgeyB3YWl0Rm9yTmF2aWdhdGlvbiB9IGZyb20gJy4uL2hlbHBlcnMvbmF2aWdhdGlvbic7XG5pbXBvcnQgeyBUcmFuc2FjdGlvblN0YXR1c2VzLCBUcmFuc2FjdGlvblR5cGVzLCB0eXBlIFRyYW5zYWN0aW9uLCB0eXBlIFRyYW5zYWN0aW9uc0FjY291bnQgfSBmcm9tICcuLi90cmFuc2FjdGlvbnMnO1xuaW1wb3J0IHsgQmFzZVNjcmFwZXJXaXRoQnJvd3NlciwgTG9naW5SZXN1bHRzLCB0eXBlIExvZ2luT3B0aW9ucyB9IGZyb20gJy4vYmFzZS1zY3JhcGVyLXdpdGgtYnJvd3Nlcic7XG5pbXBvcnQgeyB0eXBlIFNjcmFwZXJTY3JhcGluZ1Jlc3VsdCB9IGZyb20gJy4vaW50ZXJmYWNlJztcblxuY29uc3QgZGVidWcgPSBnZXREZWJ1ZygnbGV1bWknKTtcbmNvbnN0IEJBU0VfVVJMID0gJ2h0dHBzOi8vaGIyLmJhbmtsZXVtaS5jby5pbCc7XG5jb25zdCBMT0dJTl9VUkwgPSAnaHR0cHM6Ly93d3cubGV1bWkuY28uaWwvJztcbmNvbnN0IFRSQU5TQUNUSU9OU19VUkwgPSBgJHtCQVNFX1VSTH0vZUJhbmtpbmcvU08vU1BBLmFzcHgjL3RzL0J1c2luZXNzQWNjb3VudFRyeD9XaWRnZXRQYXI9MWA7XG5jb25zdCBGSUxURVJFRF9UUkFOU0FDVElPTlNfVVJMID0gYCR7QkFTRV9VUkx9L0NoYW5uZWxXQ0YvQnJva2VyLnN2Yy9Qcm9jZXNzUmVxdWVzdD9tb2R1bGVOYW1lPVVDX1NPXzI3X0dldEJ1c2luZXNzQWNjb3VudFRyeGA7XG5cbmNvbnN0IERBVEVfRk9STUFUID0gJ0RELk1NLllZJztcbmNvbnN0IEFDQ09VTlRfQkxPQ0tFRF9NU0cgPSAn15TXnteg15XXmSDXl9eh15XXnSc7XG5jb25zdCBJTlZBTElEX1BBU1NXT1JEX01TRyA9ICfXkNeX15Mg15DXlSDXmdeV16rXqCDXntek16jXmNeZINeU15TXlteT15TXldeqINep157Xodeo16og16nXkteV15nXmdedLiDXoNeZ16rXnyDXnNeg16HXldeqINep15XXkSc7XG5cbmZ1bmN0aW9uIGdldFBvc3NpYmxlTG9naW5SZXN1bHRzKCkge1xuICBjb25zdCB1cmxzOiBMb2dpbk9wdGlvbnNbJ3Bvc3NpYmxlUmVzdWx0cyddID0ge1xuICAgIFtMb2dpblJlc3VsdHMuU3VjY2Vzc106IFsvZWJhbmtpbmdcXC9TT1xcL1NQQS5hc3B4L2ldLFxuICAgIFtMb2dpblJlc3VsdHMuSW52YWxpZFBhc3N3b3JkXTogW1xuICAgICAgYXN5bmMgb3B0aW9ucyA9PiB7XG4gICAgICAgIGlmICghb3B0aW9ucyB8fCAhb3B0aW9ucy5wYWdlKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdtaXNzaW5nIHBhZ2Ugb3B0aW9ucyBhcmd1bWVudCcpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IGF3YWl0IHBhZ2VFdmFsQWxsKG9wdGlvbnMucGFnZSwgJ3N2ZyNDYXBhXzEnLCAnJywgZWxlbWVudCA9PiB7XG4gICAgICAgICAgcmV0dXJuIChlbGVtZW50WzBdPy5wYXJlbnRFbGVtZW50Py5jaGlsZHJlblsxXSBhcyBIVE1MRGl2RWxlbWVudCk/LmlubmVyVGV4dDtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGVycm9yTWVzc2FnZT8uc3RhcnRzV2l0aChJTlZBTElEX1BBU1NXT1JEX01TRyk7XG4gICAgICB9LFxuICAgIF0sXG4gICAgW0xvZ2luUmVzdWx0cy5BY2NvdW50QmxvY2tlZF06IFtcbiAgICAgIC8vIE5PVElDRSAtIG1pZ2h0IG5vdCBiZSByZWxldmFudCBzdGFydGluZyB0aGUgTGV1bWkgcmUtZGVzaWduIGR1cmluZyAyMDIyIFNlcFxuICAgICAgYXN5bmMgb3B0aW9ucyA9PiB7XG4gICAgICAgIGlmICghb3B0aW9ucyB8fCAhb3B0aW9ucy5wYWdlKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdtaXNzaW5nIHBhZ2Ugb3B0aW9ucyBhcmd1bWVudCcpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IGF3YWl0IHBhZ2VFdmFsQWxsKG9wdGlvbnMucGFnZSwgJy5lcnJIZWFkZXInLCAnJywgbGFiZWwgPT4ge1xuICAgICAgICAgIHJldHVybiAobGFiZWxbMF0gYXMgSFRNTEVsZW1lbnQpPy5pbm5lclRleHQ7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBlcnJvck1lc3NhZ2U/LnN0YXJ0c1dpdGgoQUNDT1VOVF9CTE9DS0VEX01TRyk7XG4gICAgICB9LFxuICAgIF0sXG4gICAgW0xvZ2luUmVzdWx0cy5DaGFuZ2VQYXNzd29yZF06IFsnaHR0cHM6Ly9oYjIuYmFua2xldW1pLmNvLmlsL2F1dGhlbnRpY2F0ZSddLCAvLyBOT1RJQ0UgLSBtaWdodCBub3QgYmUgcmVsZXZhbnQgc3RhcnRpbmcgdGhlIExldW1pIHJlLWRlc2lnbiBkdXJpbmcgMjAyMiBTZXBcbiAgfTtcbiAgcmV0dXJuIHVybHM7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUxvZ2luRmllbGRzKGNyZWRlbnRpYWxzOiBTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscykge1xuICByZXR1cm4gW1xuICAgIHsgc2VsZWN0b3I6ICdpbnB1dFtwbGFjZWhvbGRlcj1cItep150g157Xqdeq157XqVwiXScsIHZhbHVlOiBjcmVkZW50aWFscy51c2VybmFtZSB9LFxuICAgIHsgc2VsZWN0b3I6ICdpbnB1dFtwbGFjZWhvbGRlcj1cIteh15nXodee15RcIl0nLCB2YWx1ZTogY3JlZGVudGlhbHMucGFzc3dvcmQgfSxcbiAgXTtcbn1cblxuZnVuY3Rpb24gZXh0cmFjdFRyYW5zYWN0aW9uc0Zyb21QYWdlKHRyYW5zYWN0aW9uczogYW55W10sIHN0YXR1czogVHJhbnNhY3Rpb25TdGF0dXNlcyk6IFRyYW5zYWN0aW9uW10ge1xuICBpZiAodHJhbnNhY3Rpb25zID09PSBudWxsIHx8IHRyYW5zYWN0aW9ucy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICBjb25zdCByZXN1bHQ6IFRyYW5zYWN0aW9uW10gPSB0cmFuc2FjdGlvbnMubWFwKHJhd1RyYW5zYWN0aW9uID0+IHtcbiAgICBjb25zdCBkYXRlID0gbW9tZW50KHJhd1RyYW5zYWN0aW9uLkRhdGVVVEMpLm1pbGxpc2Vjb25kcygwKS50b0lTT1N0cmluZygpO1xuICAgIGNvbnN0IG5ld1RyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbiA9IHtcbiAgICAgIHN0YXR1cyxcbiAgICAgIHR5cGU6IFRyYW5zYWN0aW9uVHlwZXMuTm9ybWFsLFxuICAgICAgZGF0ZSxcbiAgICAgIHByb2Nlc3NlZERhdGU6IGRhdGUsXG4gICAgICBkZXNjcmlwdGlvbjogcmF3VHJhbnNhY3Rpb24uRGVzY3JpcHRpb24gfHwgJycsXG4gICAgICBpZGVudGlmaWVyOiByYXdUcmFuc2FjdGlvbi5SZWZlcmVuY2VOdW1iZXJMb25nLFxuICAgICAgbWVtbzogcmF3VHJhbnNhY3Rpb24uQWRkaXRpb25hbERhdGEgfHwgJycsXG4gICAgICBvcmlnaW5hbEN1cnJlbmN5OiBTSEVLRUxfQ1VSUkVOQ1ksXG4gICAgICBjaGFyZ2VkQW1vdW50OiByYXdUcmFuc2FjdGlvbi5BbW91bnQsXG4gICAgICBvcmlnaW5hbEFtb3VudDogcmF3VHJhbnNhY3Rpb24uQW1vdW50LFxuICAgIH07XG5cbiAgICByZXR1cm4gbmV3VHJhbnNhY3Rpb247XG4gIH0pO1xuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIGhhbmdQcm9jZXNzKHRpbWVvdXQ6IG51bWJlcikge1xuICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4ocmVzb2x2ZSA9PiB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICByZXNvbHZlKCk7XG4gICAgfSwgdGltZW91dCk7XG4gIH0pO1xufVxuXG5hc3luYyBmdW5jdGlvbiBjbGlja0J5WFBhdGgocGFnZTogUGFnZSwgeHBhdGg6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICBhd2FpdCBwYWdlLndhaXRGb3JTZWxlY3Rvcih4cGF0aCwgeyB0aW1lb3V0OiAzMDAwMCwgdmlzaWJsZTogdHJ1ZSB9KTtcbiAgY29uc3QgZWxtID0gYXdhaXQgcGFnZS4kJCh4cGF0aCk7XG4gIGF3YWl0IGVsbVswXS5jbGljaygpO1xufVxuXG5mdW5jdGlvbiByZW1vdmVTcGVjaWFsQ2hhcmFjdGVycyhzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBzdHIucmVwbGFjZSgvW14wLTkvLV0vZywgJycpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBmZXRjaFRyYW5zYWN0aW9uc0ZvckFjY291bnQoXG4gIHBhZ2U6IFBhZ2UsXG4gIHN0YXJ0RGF0ZTogTW9tZW50LFxuICBhY2NvdW50SWQ6IHN0cmluZyxcbik6IFByb21pc2U8VHJhbnNhY3Rpb25zQWNjb3VudD4ge1xuICAvLyBERVZFTE9QRVIgTk9USUNFIHRoZSBhY2NvdW50IG51bWJlciByZWNlaXZlZCBmcm9tIHRoZSBzZXJ2ZXIgaXMgYmVpbmcgYWx0ZXJlZCBhdFxuICAvLyBydW50aW1lIGZvciBzb21lIGFjY291bnRzIGFmdGVyIDEtMiBzZWNvbmRzIHNvIHdlIG5lZWQgdG8gaGFuZyB0aGUgcHJvY2VzcyBmb3IgYSBzaG9ydCB3aGlsZS5cbiAgYXdhaXQgaGFuZ1Byb2Nlc3MoNDAwMCk7XG5cbiAgYXdhaXQgd2FpdFVudGlsRWxlbWVudEZvdW5kKHBhZ2UsICdidXR0b25bdGl0bGU9XCLXl9eZ16TXldepINee16rXp9eT151cIl0nLCB0cnVlKTtcbiAgYXdhaXQgY2xpY2tCdXR0b24ocGFnZSwgJ2J1dHRvblt0aXRsZT1cIteX15nXpNeV16kg157Xqten15PXnVwiXScpO1xuICBhd2FpdCB3YWl0VW50aWxFbGVtZW50Rm91bmQocGFnZSwgJ2JsbC1yYWRpby1idXR0b24nLCB0cnVlKTtcbiAgYXdhaXQgY2xpY2tCdXR0b24ocGFnZSwgJ2JsbC1yYWRpby1idXR0b246bm90KFtjaGVja2VkXSknKTtcblxuICBhd2FpdCB3YWl0VW50aWxFbGVtZW50Rm91bmQocGFnZSwgJ2lucHV0W2Zvcm1jb250cm9sbmFtZT1cInR4dElucHV0RnJvbVwiXScsIHRydWUpO1xuXG4gIGF3YWl0IGZpbGxJbnB1dChwYWdlLCAnaW5wdXRbZm9ybWNvbnRyb2xuYW1lPVwidHh0SW5wdXRGcm9tXCJdJywgc3RhcnREYXRlLmZvcm1hdChEQVRFX0ZPUk1BVCkpO1xuXG4gIC8vIHdlIG11c3QgYmx1ciB0aGUgZnJvbSBjb250cm9sIG90aGVyd2lzZSB0aGUgc2VhcmNoIHdpbGwgdXNlIHRoZSBwcmV2aW91cyB2YWx1ZVxuICBhd2FpdCBwYWdlLmZvY3VzKFwiYnV0dG9uW2FyaWEtbGFiZWw9J9eh16DXnyddXCIpO1xuXG4gIGF3YWl0IGNsaWNrQnV0dG9uKHBhZ2UsIFwiYnV0dG9uW2FyaWEtbGFiZWw9J9eh16DXnyddXCIpO1xuICBjb25zdCBmaW5hbFJlc3BvbnNlID0gYXdhaXQgcGFnZS53YWl0Rm9yUmVzcG9uc2UocmVzcG9uc2UgPT4ge1xuICAgIHJldHVybiByZXNwb25zZS51cmwoKSA9PT0gRklMVEVSRURfVFJBTlNBQ1RJT05TX1VSTCAmJiByZXNwb25zZS5yZXF1ZXN0KCkubWV0aG9kKCkgPT09ICdQT1NUJztcbiAgfSk7XG5cbiAgY29uc3QgcmVzcG9uc2VKc29uOiBhbnkgPSBhd2FpdCBmaW5hbFJlc3BvbnNlLmpzb24oKTtcblxuICBjb25zdCBhY2NvdW50TnVtYmVyID0gYWNjb3VudElkLnJlcGxhY2UoJy8nLCAnXycpLnJlcGxhY2UoL1teXFxkLV9dL2csICcnKTtcblxuICBjb25zdCByZXNwb25zZSA9IEpTT04ucGFyc2UocmVzcG9uc2VKc29uLmpzb25SZXNwKTtcblxuICBjb25zdCBwZW5kaW5nVHJhbnNhY3Rpb25zID0gcmVzcG9uc2UuVG9kYXlUcmFuc2FjdGlvbnNJdGVtcztcbiAgY29uc3QgdHJhbnNhY3Rpb25zID0gcmVzcG9uc2UuSGlzdG9yeVRyYW5zYWN0aW9uc0l0ZW1zO1xuICBjb25zdCBiYWxhbmNlID0gcmVzcG9uc2UuQmFsYW5jZURpc3BsYXkgPyBwYXJzZUZsb2F0KHJlc3BvbnNlLkJhbGFuY2VEaXNwbGF5KSA6IHVuZGVmaW5lZDtcblxuICBjb25zdCBwZW5kaW5nVHhucyA9IGV4dHJhY3RUcmFuc2FjdGlvbnNGcm9tUGFnZShwZW5kaW5nVHJhbnNhY3Rpb25zLCBUcmFuc2FjdGlvblN0YXR1c2VzLlBlbmRpbmcpO1xuICBjb25zdCBjb21wbGV0ZWRUeG5zID0gZXh0cmFjdFRyYW5zYWN0aW9uc0Zyb21QYWdlKHRyYW5zYWN0aW9ucywgVHJhbnNhY3Rpb25TdGF0dXNlcy5Db21wbGV0ZWQpO1xuICBjb25zdCB0eG5zID0gWy4uLnBlbmRpbmdUeG5zLCAuLi5jb21wbGV0ZWRUeG5zXTtcblxuICByZXR1cm4ge1xuICAgIGFjY291bnROdW1iZXIsXG4gICAgYmFsYW5jZSxcbiAgICB0eG5zLFxuICB9O1xufVxuXG5hc3luYyBmdW5jdGlvbiBmZXRjaFRyYW5zYWN0aW9ucyhwYWdlOiBQYWdlLCBzdGFydERhdGU6IE1vbWVudCk6IFByb21pc2U8VHJhbnNhY3Rpb25zQWNjb3VudFtdPiB7XG4gIGNvbnN0IGFjY291bnRzOiBUcmFuc2FjdGlvbnNBY2NvdW50W10gPSBbXTtcblxuICAvLyBERVZFTE9QRVIgTk9USUNFIHRoZSBhY2NvdW50IG51bWJlciByZWNlaXZlZCBmcm9tIHRoZSBzZXJ2ZXIgaXMgYmVpbmcgYWx0ZXJlZCBhdFxuICAvLyBydW50aW1lIGZvciBzb21lIGFjY291bnRzIGFmdGVyIDEtMiBzZWNvbmRzIHNvIHdlIG5lZWQgdG8gaGFuZyB0aGUgcHJvY2VzcyBmb3IgYSBzaG9ydCB3aGlsZS5cbiAgYXdhaXQgaGFuZ1Byb2Nlc3MoNDAwMCk7XG5cbiAgY29uc3QgYWNjb3VudHNJZHMgPSAoYXdhaXQgcGFnZS5ldmFsdWF0ZSgoKSA9PlxuICAgIEFycmF5LmZyb20oZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnYXBwLW1hc2tlZC1udW1iZXItY29tYm8gc3Bhbi5kaXNwbGF5LW51bWJlci1saScpLCBlID0+IGUudGV4dENvbnRlbnQpLFxuICApKSBhcyBzdHJpbmdbXTtcblxuICAvLyBkdWUgdG8gYSBidWcsIHRoZSBhbHRlcmVkIHZhbHVlIG1pZ2h0IGluY2x1ZGUgdW5kZXNpcmVkIHNpZ25zIGxpa2UgJiB0aGF0IHNob3VsZCBiZSByZW1vdmVkXG5cbiAgaWYgKCFhY2NvdW50c0lkcy5sZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZhaWxlZCB0byBleHRyYWN0IG9yIHBhcnNlIHRoZSBhY2NvdW50IG51bWJlcicpO1xuICB9XG5cbiAgZm9yIChjb25zdCBhY2NvdW50SWQgb2YgYWNjb3VudHNJZHMpIHtcbiAgICBpZiAoYWNjb3VudHNJZHMubGVuZ3RoID4gMSkge1xuICAgICAgLy8gZ2V0IGxpc3Qgb2YgYWNjb3VudHMgYW5kIGNoZWNrIGFjY291bnRJZFxuICAgICAgYXdhaXQgY2xpY2tCeVhQYXRoKHBhZ2UsICd4cGF0aC8vLypbY29udGFpbnMoQGNsYXNzLCBcIm51bWJlclwiKSBhbmQgY29udGFpbnMoQGNsYXNzLCBcImNvbWJvLWlubmVyXCIpXScpO1xuICAgICAgYXdhaXQgY2xpY2tCeVhQYXRoKHBhZ2UsIGB4cGF0aC8vL3NwYW5bY29udGFpbnModGV4dCgpLCAnJHthY2NvdW50SWR9JyldYCk7XG4gICAgfVxuXG4gICAgYWNjb3VudHMucHVzaChhd2FpdCBmZXRjaFRyYW5zYWN0aW9uc0ZvckFjY291bnQocGFnZSwgc3RhcnREYXRlLCByZW1vdmVTcGVjaWFsQ2hhcmFjdGVycyhhY2NvdW50SWQpKSk7XG4gIH1cblxuICByZXR1cm4gYWNjb3VudHM7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIG5hdmlnYXRlVG9Mb2dpbihwYWdlOiBQYWdlKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IGxvZ2luQnV0dG9uU2VsZWN0b3IgPSAnLmVudGVyLWFjY291bnQgYVtvcmlnaW5hbHRpdGxlPVwi15vXoNeZ16HXlCDXnNeX16nXkdeV16DXmlwiXSc7XG4gIGRlYnVnKCd3YWl0IGZvciBob21lcGFnZSB0byBjbGljayBvbiBsb2dpbiBidXR0b24nKTtcbiAgYXdhaXQgd2FpdFVudGlsRWxlbWVudEZvdW5kKHBhZ2UsIGxvZ2luQnV0dG9uU2VsZWN0b3IpO1xuICBkZWJ1ZygnbmF2aWdhdGUgdG8gbG9naW4gcGFnZScpO1xuICBjb25zdCBsb2dpblVybCA9IGF3YWl0IHBhZ2VFdmFsKHBhZ2UsIGxvZ2luQnV0dG9uU2VsZWN0b3IsIG51bGwsIGVsZW1lbnQgPT4ge1xuICAgIHJldHVybiAoZWxlbWVudCBhcyBhbnkpLmhyZWY7XG4gIH0pO1xuICBkZWJ1ZyhgbmF2aWdhdGluZyB0byBwYWdlICgke2xvZ2luVXJsfSlgKTtcbiAgYXdhaXQgcGFnZS5nb3RvKGxvZ2luVXJsKTtcbiAgZGVidWcoJ3dhaXRpbmcgZm9yIHBhZ2UgdG8gYmUgbG9hZGVkIChuZXR3b3JraWRsZTIpJyk7XG4gIGF3YWl0IHdhaXRGb3JOYXZpZ2F0aW9uKHBhZ2UsIHsgd2FpdFVudGlsOiAnbmV0d29ya2lkbGUyJyB9KTtcbiAgZGVidWcoJ3dhaXRpbmcgZm9yIGNvbXBvbmVudHMgb2YgbG9naW4gdG8gZW50ZXIgY3JlZGVudGlhbHMnKTtcbiAgYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgIHdhaXRVbnRpbEVsZW1lbnRGb3VuZChwYWdlLCAnaW5wdXRbcGxhY2Vob2xkZXI9XCLXqdedINee16nXqtee16lcIl0nLCB0cnVlKSxcbiAgICB3YWl0VW50aWxFbGVtZW50Rm91bmQocGFnZSwgJ2lucHV0W3BsYWNlaG9sZGVyPVwi16HXmdeh157XlFwiXScsIHRydWUpLFxuICAgIHdhaXRVbnRpbEVsZW1lbnRGb3VuZChwYWdlLCAnYnV0dG9uW3R5cGU9XCJzdWJtaXRcIl0nLCB0cnVlKSxcbiAgXSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHdhaXRGb3JQb3N0TG9naW4ocGFnZTogUGFnZSk6IFByb21pc2U8dm9pZD4ge1xuICBhd2FpdCBQcm9taXNlLnJhY2UoW1xuICAgIHdhaXRVbnRpbEVsZW1lbnRGb3VuZChwYWdlLCAnYVt0aXRsZT1cIteT15zXkiDXnNeX16nXkdeV159cIl0nLCB0cnVlLCA2MDAwMCksXG4gICAgd2FpdFVudGlsRWxlbWVudEZvdW5kKHBhZ2UsICdkaXYubWFpbi1jb250ZW50JywgZmFsc2UsIDYwMDAwKSxcbiAgICBwYWdlLndhaXRGb3JTZWxlY3RvcihgeHBhdGgvL2Rpdltjb250YWlucyhzdHJpbmcoKSxcIiR7SU5WQUxJRF9QQVNTV09SRF9NU0d9XCIpXWApLFxuICAgIHdhaXRVbnRpbEVsZW1lbnRGb3VuZChwYWdlLCAnZm9ybVthY3Rpb249XCIvY2hhbmdlcGFzc3dvcmRcIl0nLCB0cnVlLCA2MDAwMCksIC8vIG5vdCBzdXJlIGlmIHRoZXkga2VwdCB0aGlzIG9uZVxuICBdKTtcbn1cblxudHlwZSBTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscyA9IHsgdXNlcm5hbWU6IHN0cmluZzsgcGFzc3dvcmQ6IHN0cmluZyB9O1xuXG5jbGFzcyBMZXVtaVNjcmFwZXIgZXh0ZW5kcyBCYXNlU2NyYXBlcldpdGhCcm93c2VyPFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzPiB7XG4gIGdldExvZ2luT3B0aW9ucyhjcmVkZW50aWFsczogU2NyYXBlclNwZWNpZmljQ3JlZGVudGlhbHMpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbG9naW5Vcmw6IExPR0lOX1VSTCxcbiAgICAgIGZpZWxkczogY3JlYXRlTG9naW5GaWVsZHMoY3JlZGVudGlhbHMpLFxuICAgICAgc3VibWl0QnV0dG9uU2VsZWN0b3I6IFwiYnV0dG9uW3R5cGU9J3N1Ym1pdCddXCIsXG4gICAgICBjaGVja1JlYWRpbmVzczogYXN5bmMgKCkgPT4gbmF2aWdhdGVUb0xvZ2luKHRoaXMucGFnZSksXG4gICAgICBwb3N0QWN0aW9uOiBhc3luYyAoKSA9PiB3YWl0Rm9yUG9zdExvZ2luKHRoaXMucGFnZSksXG4gICAgICBwb3NzaWJsZVJlc3VsdHM6IGdldFBvc3NpYmxlTG9naW5SZXN1bHRzKCksXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIGZldGNoRGF0YSgpOiBQcm9taXNlPFNjcmFwZXJTY3JhcGluZ1Jlc3VsdD4ge1xuICAgIGNvbnN0IG1pbmltdW1TdGFydE1vbWVudCA9IG1vbWVudCgpLnN1YnRyYWN0KDMsICd5ZWFycycpLmFkZCgxLCAnZGF5Jyk7XG4gICAgY29uc3QgZGVmYXVsdFN0YXJ0TW9tZW50ID0gbW9tZW50KCkuc3VidHJhY3QoMSwgJ3llYXJzJykuYWRkKDEsICdkYXknKTtcbiAgICBjb25zdCBzdGFydERhdGUgPSB0aGlzLm9wdGlvbnMuc3RhcnREYXRlIHx8IGRlZmF1bHRTdGFydE1vbWVudC50b0RhdGUoKTtcbiAgICBjb25zdCBzdGFydE1vbWVudCA9IG1vbWVudC5tYXgobWluaW11bVN0YXJ0TW9tZW50LCBtb21lbnQoc3RhcnREYXRlKSk7XG5cbiAgICBhd2FpdCB0aGlzLm5hdmlnYXRlVG8oVFJBTlNBQ1RJT05TX1VSTCk7XG5cbiAgICBjb25zdCBhY2NvdW50cyA9IGF3YWl0IGZldGNoVHJhbnNhY3Rpb25zKHRoaXMucGFnZSwgc3RhcnRNb21lbnQpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHN1Y2Nlc3M6IHRydWUsXG4gICAgICBhY2NvdW50cyxcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IExldW1pU2NyYXBlcjtcbiJdfQ==
@@ -1,22 +1,13 @@
1
1
  "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
- require("core-js/modules/es.array.iterator.js");
8
- var _baseBeinleumiGroup = _interopRequireDefault(require("./base-beinleumi-group"));
9
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
10
- function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
11
- function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
12
- function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
13
- class MassadScraper extends _baseBeinleumiGroup.default {
14
- constructor(...args) {
15
- super(...args);
16
- _defineProperty(this, "BASE_URL", 'https://online.bankmassad.co.il');
17
- _defineProperty(this, "LOGIN_URL", `${this.BASE_URL}/MatafLoginService/MatafLoginServlet?bankId=MASADPRTAL&site=Private&KODSAFA=HE`);
18
- _defineProperty(this, "TRANSACTIONS_URL", `${this.BASE_URL}/wps/myportal/FibiMenu/Online/OnAccountMngment/OnBalanceTrans/PrivateAccountFlow`);
19
- }
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const base_beinleumi_group_1 = __importDefault(require("./base-beinleumi-group"));
7
+ class MassadScraper extends base_beinleumi_group_1.default {
8
+ BASE_URL = 'https://online.bankmassad.co.il';
9
+ LOGIN_URL = `${this.BASE_URL}/MatafLoginService/MatafLoginServlet?bankId=MASADPRTAL&site=Private&KODSAFA=HE`;
10
+ TRANSACTIONS_URL = `${this.BASE_URL}/wps/myportal/FibiMenu/Online/OnAccountMngment/OnBalanceTrans/PrivateAccountFlow`;
20
11
  }
21
- var _default = exports.default = MassadScraper;
22
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYmFzZUJlaW5sZXVtaUdyb3VwIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJfZGVmaW5lUHJvcGVydHkiLCJyIiwidCIsIl90b1Byb3BlcnR5S2V5IiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJ2YWx1ZSIsImVudW1lcmFibGUiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsImkiLCJfdG9QcmltaXRpdmUiLCJTeW1ib2wiLCJ0b1ByaW1pdGl2ZSIsImNhbGwiLCJUeXBlRXJyb3IiLCJTdHJpbmciLCJOdW1iZXIiLCJNYXNzYWRTY3JhcGVyIiwiQmVpbmxldW1pR3JvdXBCYXNlU2NyYXBlciIsImNvbnN0cnVjdG9yIiwiYXJncyIsIkJBU0VfVVJMIiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmFwZXJzL21hc3NhZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQmVpbmxldW1pR3JvdXBCYXNlU2NyYXBlciBmcm9tICcuL2Jhc2UtYmVpbmxldW1pLWdyb3VwJztcblxuY2xhc3MgTWFzc2FkU2NyYXBlciBleHRlbmRzIEJlaW5sZXVtaUdyb3VwQmFzZVNjcmFwZXIge1xuICBCQVNFX1VSTCA9ICdodHRwczovL29ubGluZS5iYW5rbWFzc2FkLmNvLmlsJztcblxuICBMT0dJTl9VUkwgPSBgJHt0aGlzLkJBU0VfVVJMfS9NYXRhZkxvZ2luU2VydmljZS9NYXRhZkxvZ2luU2VydmxldD9iYW5rSWQ9TUFTQURQUlRBTCZzaXRlPVByaXZhdGUmS09EU0FGQT1IRWA7XG5cbiAgVFJBTlNBQ1RJT05TX1VSTCA9IGAke3RoaXMuQkFTRV9VUkx9L3dwcy9teXBvcnRhbC9GaWJpTWVudS9PbmxpbmUvT25BY2NvdW50TW5nbWVudC9PbkJhbGFuY2VUcmFucy9Qcml2YXRlQWNjb3VudEZsb3dgO1xufVxuXG5leHBvcnQgZGVmYXVsdCBNYXNzYWRTY3JhcGVyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsSUFBQUEsbUJBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUErRCxTQUFBRCx1QkFBQUUsQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLEtBQUFFLE9BQUEsRUFBQUYsQ0FBQTtBQUFBLFNBQUFHLGdCQUFBSCxDQUFBLEVBQUFJLENBQUEsRUFBQUMsQ0FBQSxZQUFBRCxDQUFBLEdBQUFFLGNBQUEsQ0FBQUYsQ0FBQSxNQUFBSixDQUFBLEdBQUFPLE1BQUEsQ0FBQUMsY0FBQSxDQUFBUixDQUFBLEVBQUFJLENBQUEsSUFBQUssS0FBQSxFQUFBSixDQUFBLEVBQUFLLFVBQUEsTUFBQUMsWUFBQSxNQUFBQyxRQUFBLFVBQUFaLENBQUEsQ0FBQUksQ0FBQSxJQUFBQyxDQUFBLEVBQUFMLENBQUE7QUFBQSxTQUFBTSxlQUFBRCxDQUFBLFFBQUFRLENBQUEsR0FBQUMsWUFBQSxDQUFBVCxDQUFBLHVDQUFBUSxDQUFBLEdBQUFBLENBQUEsR0FBQUEsQ0FBQTtBQUFBLFNBQUFDLGFBQUFULENBQUEsRUFBQUQsQ0FBQSwyQkFBQUMsQ0FBQSxLQUFBQSxDQUFBLFNBQUFBLENBQUEsTUFBQUwsQ0FBQSxHQUFBSyxDQUFBLENBQUFVLE1BQUEsQ0FBQUMsV0FBQSxrQkFBQWhCLENBQUEsUUFBQWEsQ0FBQSxHQUFBYixDQUFBLENBQUFpQixJQUFBLENBQUFaLENBQUEsRUFBQUQsQ0FBQSx1Q0FBQVMsQ0FBQSxTQUFBQSxDQUFBLFlBQUFLLFNBQUEseUVBQUFkLENBQUEsR0FBQWUsTUFBQSxHQUFBQyxNQUFBLEVBQUFmLENBQUE7QUFFL0QsTUFBTWdCLGFBQWEsU0FBU0MsMkJBQXlCLENBQUM7RUFBQUMsWUFBQSxHQUFBQyxJQUFBO0lBQUEsU0FBQUEsSUFBQTtJQUFBckIsZUFBQSxtQkFDekMsaUNBQWlDO0lBQUFBLGVBQUEsb0JBRWhDLEdBQUcsSUFBSSxDQUFDc0IsUUFBUSxnRkFBZ0Y7SUFBQXRCLGVBQUEsMkJBRXpGLEdBQUcsSUFBSSxDQUFDc0IsUUFBUSxrRkFBa0Y7RUFBQTtBQUN2SDtBQUFDLElBQUFDLFFBQUEsR0FBQUMsT0FBQSxDQUFBekIsT0FBQSxHQUVjbUIsYUFBYSIsImlnbm9yZUxpc3QiOltdfQ==
12
+ exports.default = MassadScraper;
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFzc2FkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmFwZXJzL21hc3NhZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLGtGQUErRDtBQUUvRCxNQUFNLGFBQWMsU0FBUSw4QkFBeUI7SUFDbkQsUUFBUSxHQUFHLGlDQUFpQyxDQUFDO0lBRTdDLFNBQVMsR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLGdGQUFnRixDQUFDO0lBRTdHLGdCQUFnQixHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsa0ZBQWtGLENBQUM7Q0FDdkg7QUFFRCxrQkFBZSxhQUFhLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQmVpbmxldW1pR3JvdXBCYXNlU2NyYXBlciBmcm9tICcuL2Jhc2UtYmVpbmxldW1pLWdyb3VwJztcblxuY2xhc3MgTWFzc2FkU2NyYXBlciBleHRlbmRzIEJlaW5sZXVtaUdyb3VwQmFzZVNjcmFwZXIge1xuICBCQVNFX1VSTCA9ICdodHRwczovL29ubGluZS5iYW5rbWFzc2FkLmNvLmlsJztcblxuICBMT0dJTl9VUkwgPSBgJHt0aGlzLkJBU0VfVVJMfS9NYXRhZkxvZ2luU2VydmljZS9NYXRhZkxvZ2luU2VydmxldD9iYW5rSWQ9TUFTQURQUlRBTCZzaXRlPVByaXZhdGUmS09EU0FGQT1IRWA7XG5cbiAgVFJBTlNBQ1RJT05TX1VSTCA9IGAke3RoaXMuQkFTRV9VUkx9L3dwcy9teXBvcnRhbC9GaWJpTWVudS9PbmxpbmUvT25BY2NvdW50TW5nbWVudC9PbkJhbGFuY2VUcmFucy9Qcml2YXRlQWNjb3VudEZsb3dgO1xufVxuXG5leHBvcnQgZGVmYXVsdCBNYXNzYWRTY3JhcGVyO1xuIl19