israeli-bank-scrapers-core 6.4.2 → 6.5.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.
@@ -155,13 +155,13 @@ function getMemo({
155
155
  }
156
156
  return comments;
157
157
  }
158
- function mapTransaction(rawTransaction) {
158
+ function mapTransaction(rawTransaction, options) {
159
159
  const isPending = rawTransaction.paymentDate === null;
160
160
  const processedDate = (0, _moment.default)(isPending ? rawTransaction.purchaseDate : rawTransaction.paymentDate).toISOString();
161
161
  const status = isPending ? _transactions2.TransactionStatuses.Pending : _transactions2.TransactionStatuses.Completed;
162
162
  const installments = getInstallmentsInfo(rawTransaction.comments);
163
163
  const identifier = installments ? `${rawTransaction.dealData?.arn}_${installments.number}` : rawTransaction.dealData?.arn;
164
- return {
164
+ const result = {
165
165
  type: getTransactionType(rawTransaction.planName, rawTransaction.planTypeId),
166
166
  date: (0, _moment.default)(rawTransaction.purchaseDate).toISOString(),
167
167
  processedDate,
@@ -176,8 +176,12 @@ function mapTransaction(rawTransaction) {
176
176
  identifier,
177
177
  status
178
178
  };
179
+ if (options?.includeRawTransaction) {
180
+ result.rawTransaction = rawTransaction;
181
+ }
182
+ return result;
179
183
  }
180
- async function fetchTransactionsForMonth(page, monthMoment) {
184
+ async function fetchTransactionsForMonth(page, monthMoment, options) {
181
185
  const url = getTransactionsUrl(monthMoment);
182
186
  const data = await (0, _fetch.fetchGetWithinPage)(page, url);
183
187
  const transactionsByAccount = {};
@@ -188,7 +192,7 @@ async function fetchTransactionsForMonth(page, monthMoment) {
188
192
  if (!transactionsByAccount[transaction.shortCardNumber]) {
189
193
  transactionsByAccount[transaction.shortCardNumber] = [];
190
194
  }
191
- const mappedTransaction = mapTransaction(transaction);
195
+ const mappedTransaction = mapTransaction(transaction, options);
192
196
  transactionsByAccount[transaction.shortCardNumber].push(mappedTransaction);
193
197
  });
194
198
  return transactionsByAccount;
@@ -224,7 +228,7 @@ async function fetchTransactions(page, options) {
224
228
  await loadCategories(page);
225
229
  let allResults = {};
226
230
  for (let i = 0; i < allMonths.length; i += 1) {
227
- const result = await fetchTransactionsForMonth(page, allMonths[i]);
231
+ const result = await fetchTransactionsForMonth(page, allMonths[i], options);
228
232
  allResults = addResult(allResults, result);
229
233
  }
230
234
  Object.keys(allResults).forEach(accountNumber => {
@@ -296,4 +300,4 @@ class MaxScraper extends _baseScraperWithBrowser.BaseScraperWithBrowser {
296
300
  }
297
301
  }
298
302
  var _default = exports.default = MaxScraper;
299
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbW9tZW50IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfY29uc3RhbnRzIiwiX2RhdGVzIiwiX2RlYnVnIiwiX2VsZW1lbnRzSW50ZXJhY3Rpb25zIiwiX2ZldGNoIiwiX25hdmlnYXRpb24iLCJfdHJhbnNhY3Rpb25zIiwiX3RyYW5zYWN0aW9uczIiLCJfYmFzZVNjcmFwZXJXaXRoQnJvd3NlciIsImUiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImRlYnVnIiwiZ2V0RGVidWciLCJCQVNFX0FQSV9BQ1RJT05TX1VSTCIsIkJBU0VfV0VMQ09NRV9VUkwiLCJMT0dJTl9VUkwiLCJQQVNTV09SRF9FWFBJUkVEX1VSTCIsIlNVQ0NFU1NfVVJMIiwiTWF4UGxhbk5hbWUiLCJJTlZBTElEX0RFVEFJTFNfU0VMRUNUT1IiLCJMT0dJTl9FUlJPUl9TRUxFQ1RPUiIsImNhdGVnb3JpZXMiLCJNYXAiLCJyZWRpcmVjdE9yRGlhbG9nIiwicGFnZSIsIlByb21pc2UiLCJyYWNlIiwid2FpdEZvclJlZGlyZWN0Iiwid2FpdFVudGlsRWxlbWVudEZvdW5kIiwiZ2V0VHJhbnNhY3Rpb25zVXJsIiwibW9udGhNb21lbnQiLCJtb250aCIsInllYXIiLCJkYXRlIiwidXJsIiwiVVJMIiwic2VhcmNoUGFyYW1zIiwic2V0IiwidG9TdHJpbmciLCJsb2FkQ2F0ZWdvcmllcyIsInJlcyIsImZldGNoR2V0V2l0aGluUGFnZSIsIkFycmF5IiwiaXNBcnJheSIsInJlc3VsdCIsImxlbmd0aCIsImZvckVhY2giLCJpZCIsIm5hbWUiLCJnZXRUcmFuc2FjdGlvblR5cGUiLCJwbGFuTmFtZSIsInBsYW5UeXBlSWQiLCJjbGVhbmVkVXBUeG5UeXBlU3RyIiwicmVwbGFjZSIsInRyaW0iLCJJbW1lZGlhdGVDaGFyZ2UiLCJOb3JtYWwiLCJNb250aGx5Q2hhcmdlIiwiT25lTW9udGhQb3N0cG9uZWQiLCJNb250aGx5UG9zdHBvbmVkIiwiRnV0dXJlUHVyY2hhc2VGaW5hbmNpbmciLCJNb250aGx5UGF5bWVudCIsIk1vbnRobHlQb3N0cG9uZWRJbnN0YWxsbWVudHMiLCJUaGlydHlEYXlzUGx1cyIsIlR3b01vbnRoc1Bvc3Rwb25lZCIsIlR3b01vbnRoc1Bvc3Rwb25lZDIiLCJBY2N1bXVsYXRpbmdCYXNrZXQiLCJJbnRlcm5ldFNob3BwaW5nIiwiTW9udGhseUNoYXJnZVBsdXNJbnRlcmVzdCIsIlBvc3Rwb25lZFRyYW5zYWN0aW9uSW5zdGFsbG1lbnRzIiwiUmVwbGFjZW1lbnRDYXJkIiwiRWFybHlSZXBheW1lbnQiLCJNb250aGx5Q2FyZEZlZSIsIkN1cnJlbmN5UG9ja2V0IiwiVHJhbnNhY3Rpb25UeXBlcyIsIkluc3RhbGxtZW50cyIsIkNyZWRpdCIsIkNyZWRpdE91dHNpZGVUaGVMaW1pdCIsIkVycm9yIiwiZ2V0SW5zdGFsbG1lbnRzSW5mbyIsImNvbW1lbnRzIiwidW5kZWZpbmVkIiwibWF0Y2hlcyIsIm1hdGNoIiwibnVtYmVyIiwicGFyc2VJbnQiLCJ0b3RhbCIsImdldENoYXJnZWRDdXJyZW5jeSIsImN1cnJlbmN5SWQiLCJTSEVLRUxfQ1VSUkVOQ1kiLCJET0xMQVJfQ1VSUkVOQ1kiLCJFVVJPX0NVUlJFTkNZIiwiZ2V0TWVtbyIsImZ1bmRzVHJhbnNmZXJSZWNlaXZlck9yVHJhbnNmZXIiLCJmdW5kc1RyYW5zZmVyQ29tbWVudCIsIm1lbW8iLCJtYXBUcmFuc2FjdGlvbiIsInJhd1RyYW5zYWN0aW9uIiwiaXNQZW5kaW5nIiwicGF5bWVudERhdGUiLCJwcm9jZXNzZWREYXRlIiwibW9tZW50IiwicHVyY2hhc2VEYXRlIiwidG9JU09TdHJpbmciLCJzdGF0dXMiLCJUcmFuc2FjdGlvblN0YXR1c2VzIiwiUGVuZGluZyIsIkNvbXBsZXRlZCIsImluc3RhbGxtZW50cyIsImlkZW50aWZpZXIiLCJkZWFsRGF0YSIsImFybiIsInR5cGUiLCJvcmlnaW5hbEFtb3VudCIsIm9yaWdpbmFsQ3VycmVuY3kiLCJjaGFyZ2VkQW1vdW50IiwiYWN0dWFsUGF5bWVudEFtb3VudCIsImNoYXJnZWRDdXJyZW5jeSIsInBheW1lbnRDdXJyZW5jeSIsImRlc2NyaXB0aW9uIiwibWVyY2hhbnROYW1lIiwiY2F0ZWdvcnkiLCJnZXQiLCJjYXRlZ29yeUlkIiwiZmV0Y2hUcmFuc2FjdGlvbnNGb3JNb250aCIsImRhdGEiLCJ0cmFuc2FjdGlvbnNCeUFjY291bnQiLCJ0cmFuc2FjdGlvbnMiLCJmaWx0ZXIiLCJ0cmFuc2FjdGlvbiIsInNob3J0Q2FyZE51bWJlciIsIm1hcHBlZFRyYW5zYWN0aW9uIiwicHVzaCIsImFkZFJlc3VsdCIsImFsbFJlc3VsdHMiLCJjbG9uZWRSZXN1bHRzIiwiT2JqZWN0Iiwia2V5cyIsImFjY291bnROdW1iZXIiLCJwcmVwYXJlVHJhbnNhY3Rpb25zIiwidHhucyIsInN0YXJ0TW9tZW50IiwiY29tYmluZUluc3RhbGxtZW50cyIsImVuYWJsZVRyYW5zYWN0aW9uc0ZpbHRlckJ5RGF0ZSIsImNsb25lZFR4bnMiLCJmcm9tIiwiZml4SW5zdGFsbG1lbnRzIiwic29ydFRyYW5zYWN0aW9uc0J5RGF0ZSIsImZpbHRlck9sZFRyYW5zYWN0aW9ucyIsImZldGNoVHJhbnNhY3Rpb25zIiwib3B0aW9ucyIsImZ1dHVyZU1vbnRoc1RvU2NyYXBlIiwiZGVmYXVsdFN0YXJ0TW9tZW50Iiwic3VidHJhY3QiLCJzdGFydE1vbWVudExpbWl0Iiwic3RhcnREYXRlIiwidG9EYXRlIiwibWF4IiwiYWxsTW9udGhzIiwiZ2V0QWxsTW9udGhNb21lbnRzIiwiaSIsIm91dHB1dERhdGEiLCJnZXRQb3NzaWJsZUxvZ2luUmVzdWx0cyIsInVybHMiLCJMb2dpblJlc3VsdHMiLCJTdWNjZXNzIiwiQ2hhbmdlUGFzc3dvcmQiLCJJbnZhbGlkUGFzc3dvcmQiLCJlbGVtZW50UHJlc2VudE9uUGFnZSIsIlVua25vd25FcnJvciIsImNyZWF0ZUxvZ2luRmllbGRzIiwiY3JlZGVudGlhbHMiLCJzZWxlY3RvciIsInZhbHVlIiwidXNlcm5hbWUiLCJwYXNzd29yZCIsIk1heFNjcmFwZXIiLCJCYXNlU2NyYXBlcldpdGhCcm93c2VyIiwiZ2V0TG9naW5PcHRpb25zIiwibG9naW5VcmwiLCJmaWVsZHMiLCJzdWJtaXRCdXR0b25TZWxlY3RvciIsInByZUFjdGlvbiIsImNsaWNrQnV0dG9uIiwiY2hlY2tSZWFkaW5lc3MiLCJwb3N0QWN0aW9uIiwicG9zc2libGVSZXN1bHRzIiwid2FpdFVudGlsIiwiZmV0Y2hEYXRhIiwicmVzdWx0cyIsImFjY291bnRzIiwibWFwIiwic3VjY2VzcyIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JhcGVycy9tYXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG1vbWVudCwgeyB0eXBlIE1vbWVudCB9IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyB0eXBlIFBhZ2UgfSBmcm9tICdwdXBwZXRlZXItY29yZSc7XG5pbXBvcnQgeyBET0xMQVJfQ1VSUkVOQ1ksIEVVUk9fQ1VSUkVOQ1ksIFNIRUtFTF9DVVJSRU5DWSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgZ2V0QWxsTW9udGhNb21lbnRzIGZyb20gJy4uL2hlbHBlcnMvZGF0ZXMnO1xuaW1wb3J0IHsgZ2V0RGVidWcgfSBmcm9tICcuLi9oZWxwZXJzL2RlYnVnJztcbmltcG9ydCB7IGNsaWNrQnV0dG9uLCBlbGVtZW50UHJlc2VudE9uUGFnZSwgd2FpdFVudGlsRWxlbWVudEZvdW5kIH0gZnJvbSAnLi4vaGVscGVycy9lbGVtZW50cy1pbnRlcmFjdGlvbnMnO1xuaW1wb3J0IHsgZmV0Y2hHZXRXaXRoaW5QYWdlIH0gZnJvbSAnLi4vaGVscGVycy9mZXRjaCc7XG5pbXBvcnQgeyB3YWl0Rm9yUmVkaXJlY3QgfSBmcm9tICcuLi9oZWxwZXJzL25hdmlnYXRpb24nO1xuaW1wb3J0IHsgZmlsdGVyT2xkVHJhbnNhY3Rpb25zLCBmaXhJbnN0YWxsbWVudHMsIHNvcnRUcmFuc2FjdGlvbnNCeURhdGUgfSBmcm9tICcuLi9oZWxwZXJzL3RyYW5zYWN0aW9ucyc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvblN0YXR1c2VzLCBUcmFuc2FjdGlvblR5cGVzLCB0eXBlIFRyYW5zYWN0aW9uIH0gZnJvbSAnLi4vdHJhbnNhY3Rpb25zJztcbmltcG9ydCB7XG4gIEJhc2VTY3JhcGVyV2l0aEJyb3dzZXIsXG4gIExvZ2luUmVzdWx0cyxcbiAgdHlwZSBMb2dpbk9wdGlvbnMsXG4gIHR5cGUgUG9zc2libGVMb2dpblJlc3VsdHMsXG59IGZyb20gJy4vYmFzZS1zY3JhcGVyLXdpdGgtYnJvd3Nlcic7XG5pbXBvcnQgeyB0eXBlIFNjcmFwZXJPcHRpb25zIH0gZnJvbSAnLi9pbnRlcmZhY2UnO1xuXG5jb25zdCBkZWJ1ZyA9IGdldERlYnVnKCdtYXgnKTtcblxuZXhwb3J0IGludGVyZmFjZSBTY3JhcGVkVHJhbnNhY3Rpb24ge1xuICBzaG9ydENhcmROdW1iZXI6IHN0cmluZztcbiAgcGF5bWVudERhdGU/OiBzdHJpbmc7XG4gIHB1cmNoYXNlRGF0ZTogc3RyaW5nO1xuICBhY3R1YWxQYXltZW50QW1vdW50OiBzdHJpbmc7XG4gIHBheW1lbnRDdXJyZW5jeTogbnVtYmVyIHwgbnVsbDtcbiAgb3JpZ2luYWxDdXJyZW5jeTogc3RyaW5nO1xuICBvcmlnaW5hbEFtb3VudDogbnVtYmVyO1xuICBwbGFuTmFtZTogc3RyaW5nO1xuICBwbGFuVHlwZUlkOiBudW1iZXI7XG4gIGNvbW1lbnRzOiBzdHJpbmc7XG4gIG1lcmNoYW50TmFtZTogc3RyaW5nO1xuICBjYXRlZ29yeUlkOiBudW1iZXI7XG4gIGZ1bmRzVHJhbnNmZXJDb21tZW50Pzogc3RyaW5nO1xuICBmdW5kc1RyYW5zZmVyUmVjZWl2ZXJPclRyYW5zZmVyPzogc3RyaW5nO1xuICBkZWFsRGF0YT86IHtcbiAgICBhcm46IHN0cmluZztcbiAgfTtcbn1cblxuY29uc3QgQkFTRV9BUElfQUNUSU9OU19VUkwgPSAnaHR0cHM6Ly9vbmxpbmVsY2FwaS5tYXguY28uaWwnO1xuY29uc3QgQkFTRV9XRUxDT01FX1VSTCA9ICdodHRwczovL3d3dy5tYXguY28uaWwnO1xuXG5jb25zdCBMT0dJTl9VUkwgPSBgJHtCQVNFX1dFTENPTUVfVVJMfS9sb2dpbmA7XG5jb25zdCBQQVNTV09SRF9FWFBJUkVEX1VSTCA9IGAke0JBU0VfV0VMQ09NRV9VUkx9L3JlbmV3LXBhc3N3b3JkYDtcbmNvbnN0IFNVQ0NFU1NfVVJMID0gYCR7QkFTRV9XRUxDT01FX1VSTH0vaG9tZXBhZ2UvcGVyc29uYWxgO1xuXG5lbnVtIE1heFBsYW5OYW1lIHtcbiAgTm9ybWFsID0gJ9eo15LXmdec15QnLFxuICBJbW1lZGlhdGVDaGFyZ2UgPSAn15fXmdeV15Eg16LXoden15XXqiDXnteZ15nXk9eZJyxcbiAgSW50ZXJuZXRTaG9wcGluZyA9ICfXkNeZ16DXmNeo16DXmC/Xl9eVXCLXnCcsXG4gIEluc3RhbGxtZW50cyA9ICfXqtep15zXldee15nXnScsXG4gIE1vbnRobHlDaGFyZ2UgPSAn15fXmdeV15Eg15fXldeT16nXmScsXG4gIE9uZU1vbnRoUG9zdHBvbmVkID0gJ9eT15fXldeZINeX15XXk9epJyxcbiAgTW9udGhseVBvc3Rwb25lZCA9ICfXk9eX15XXmSDXnNeX15nXldeRINeU15fXldeT16nXmScsXG4gIE1vbnRobHlQYXltZW50ID0gJ9eq16nXnNeV150g15fXldeT16nXmScsXG4gIEZ1dHVyZVB1cmNoYXNlRmluYW5jaW5nID0gJ9ee15nXnteV158g15zXqNeb15nXqdeUINei16rXmdeT15nXqicsXG4gIE1vbnRobHlQb3N0cG9uZWRJbnN0YWxsbWVudHMgPSAn15PXl9eV15kg15fXldeT16kg16rXqdec15XXnteZ150nLFxuICBUaGlydHlEYXlzUGx1cyA9ICfXoteh16fXqiAzMCDXpNec15XXoScsXG4gIFR3b01vbnRoc1Bvc3Rwb25lZCA9ICfXk9eX15XXmSDXl9eV15PXqdeZ15nXnScsXG4gIFR3b01vbnRoc1Bvc3Rwb25lZDIgPSBcIteT15fXldeZIDIg15cnINeq16nXnNeV157XmdedXCIsXG4gIE1vbnRobHlDaGFyZ2VQbHVzSW50ZXJlc3QgPSAn15fXldeT16nXmSArINeo15nXkdeZ16onLFxuICBDcmVkaXQgPSAn16fXqNeT15nXmCcsXG4gIENyZWRpdE91dHNpZGVUaGVMaW1pdCA9ICfXp9eo15PXmdeYLdee15fXldelINec157XodeS16jXqicsXG4gIEFjY3VtdWxhdGluZ0Jhc2tldCA9ICfXodecINee16bXmNeR16gnLFxuICBQb3N0cG9uZWRUcmFuc2FjdGlvbkluc3RhbGxtZW50cyA9ICfXpNeo15nXodeqINeU16LXoden15Qg15TXk9eX15XXmdeUJyxcbiAgUmVwbGFjZW1lbnRDYXJkID0gJ9eb16jXmNeZ16Eg15fXnNeZ16TXmScsXG4gIEVhcmx5UmVwYXltZW50ID0gJ9ek16jXoteV158g157Xlden15PXnScsXG4gIE1vbnRobHlDYXJkRmVlID0gJ9eT157XmSDXm9eo15jXmdehJyxcbiAgQ3VycmVuY3lQb2NrZXQgPSAn15fXmdeV15Eg15DXqNeg16cg157XmNeXJyxcbn1cblxuY29uc3QgSU5WQUxJRF9ERVRBSUxTX1NFTEVDVE9SID0gJyNwb3B1cFdyb25nRGV0YWlscyc7XG5jb25zdCBMT0dJTl9FUlJPUl9TRUxFQ1RPUiA9ICcjcG9wdXBDYXJkSG9sZGVyc0xvZ2luRXJyb3InO1xuXG5jb25zdCBjYXRlZ29yaWVzID0gbmV3IE1hcDxudW1iZXIsIHN0cmluZz4oKTtcblxuZnVuY3Rpb24gcmVkaXJlY3RPckRpYWxvZyhwYWdlOiBQYWdlKSB7XG4gIHJldHVybiBQcm9taXNlLnJhY2UoW1xuICAgIHdhaXRGb3JSZWRpcmVjdChwYWdlLCAyMDAwMCwgZmFsc2UsIFtCQVNFX1dFTENPTUVfVVJMLCBgJHtCQVNFX1dFTENPTUVfVVJMfS9gXSksXG4gICAgd2FpdFVudGlsRWxlbWVudEZvdW5kKHBhZ2UsIElOVkFMSURfREVUQUlMU19TRUxFQ1RPUiwgdHJ1ZSksXG4gICAgd2FpdFVudGlsRWxlbWVudEZvdW5kKHBhZ2UsIExPR0lOX0VSUk9SX1NFTEVDVE9SLCB0cnVlKSxcbiAgXSk7XG59XG5cbmZ1bmN0aW9uIGdldFRyYW5zYWN0aW9uc1VybChtb250aE1vbWVudDogTW9tZW50KSB7XG4gIGNvbnN0IG1vbnRoID0gbW9udGhNb21lbnQubW9udGgoKSArIDE7XG4gIGNvbnN0IHllYXIgPSBtb250aE1vbWVudC55ZWFyKCk7XG4gIGNvbnN0IGRhdGUgPSBgJHt5ZWFyfS0ke21vbnRofS0wMWA7XG5cbiAgLyoqXG4gICAqIHVybCBleHBsYW5hdGlvbjpcbiAgICogdXNlckluZGV4OiAtMSBmb3IgYWxsIGFjY291bnQgb3duZXJzXG4gICAqIGNhcmRJbmRleDogLTEgZm9yIGFsbCBjYXJkcyB1bmRlciB0aGUgYWNjb3VudFxuICAgKiBhbGwgb3RoZXIgcXVlcnkgcGFyYW1zIGFyZSBzdGF0aWMsIGJlc2lkZSB0aGUgZGF0ZSB3aGljaCBjaGFuZ2VzIGZvciByZXF1ZXN0IHBlciBtb250aFxuICAgKi9cbiAgY29uc3QgdXJsID0gbmV3IFVSTChgJHtCQVNFX0FQSV9BQ1RJT05TX1VSTH0vYXBpL3JlZ2lzdGVyZWQvdHJhbnNhY3Rpb25EZXRhaWxzL2dldFRyYW5zYWN0aW9uc0FuZEdyYXBoc2ApO1xuICB1cmwuc2VhcmNoUGFyYW1zLnNldChcbiAgICAnZmlsdGVyRGF0YScsXG4gICAgYHtcInVzZXJJbmRleFwiOi0xLFwiY2FyZEluZGV4XCI6LTEsXCJtb250aFZpZXdcIjp0cnVlLFwiZGF0ZVwiOlwiJHtkYXRlfVwiLFwiZGF0ZXNcIjp7XCJzdGFydERhdGVcIjpcIjBcIixcImVuZERhdGVcIjpcIjBcIn0sXCJiYW5rQWNjb3VudFwiOntcImJhbmtBY2NvdW50SW5kZXhcIjotMSxcImNhcmRzXCI6bnVsbH19YCxcbiAgKTtcbiAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoJ2ZpcnN0Q2FsbENhcmRJbmRleCcsICctMScpO1xuICByZXR1cm4gdXJsLnRvU3RyaW5nKCk7XG59XG5cbmludGVyZmFjZSBGZXRjaENhdGVnb3J5UmVzdWx0IHtcbiAgcmVzdWx0PzogQXJyYXk8e1xuICAgIGlkOiBudW1iZXI7XG4gICAgbmFtZTogc3RyaW5nO1xuICB9Pjtcbn1cblxuYXN5bmMgZnVuY3Rpb24gbG9hZENhdGVnb3JpZXMocGFnZTogUGFnZSkge1xuICBkZWJ1ZygnTG9hZGluZyBjYXRlZ29yaWVzJyk7XG4gIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoR2V0V2l0aGluUGFnZTxGZXRjaENhdGVnb3J5UmVzdWx0PihwYWdlLCBgJHtCQVNFX0FQSV9BQ1RJT05TX1VSTH0vYXBpL2NvbnRlbnRzL2dldENhdGVnb3JpZXNgKTtcbiAgaWYgKHJlcyAmJiBBcnJheS5pc0FycmF5KHJlcy5yZXN1bHQpKSB7XG4gICAgZGVidWcoYCR7cmVzLnJlc3VsdC5sZW5ndGh9IGNhdGVnb3JpZXMgbG9hZGVkYCk7XG4gICAgcmVzLnJlc3VsdD8uZm9yRWFjaCgoeyBpZCwgbmFtZSB9KSA9PiBjYXRlZ29yaWVzLnNldChpZCwgbmFtZSkpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldFRyYW5zYWN0aW9uVHlwZShwbGFuTmFtZTogc3RyaW5nLCBwbGFuVHlwZUlkOiBudW1iZXIpIHtcbiAgY29uc3QgY2xlYW5lZFVwVHhuVHlwZVN0ciA9IHBsYW5OYW1lLnJlcGxhY2UoJ1xcdCcsICcgJykudHJpbSgpIGFzIE1heFBsYW5OYW1lO1xuICBzd2l0Y2ggKGNsZWFuZWRVcFR4blR5cGVTdHIpIHtcbiAgICBjYXNlIE1heFBsYW5OYW1lLkltbWVkaWF0ZUNoYXJnZTpcbiAgICBjYXNlIE1heFBsYW5OYW1lLk5vcm1hbDpcbiAgICBjYXNlIE1heFBsYW5OYW1lLk1vbnRobHlDaGFyZ2U6XG4gICAgY2FzZSBNYXhQbGFuTmFtZS5PbmVNb250aFBvc3Rwb25lZDpcbiAgICBjYXNlIE1heFBsYW5OYW1lLk1vbnRobHlQb3N0cG9uZWQ6XG4gICAgY2FzZSBNYXhQbGFuTmFtZS5GdXR1cmVQdXJjaGFzZUZpbmFuY2luZzpcbiAgICBjYXNlIE1heFBsYW5OYW1lLk1vbnRobHlQYXltZW50OlxuICAgIGNhc2UgTWF4UGxhbk5hbWUuTW9udGhseVBvc3Rwb25lZEluc3RhbGxtZW50czpcbiAgICBjYXNlIE1heFBsYW5OYW1lLlRoaXJ0eURheXNQbHVzOlxuICAgIGNhc2UgTWF4UGxhbk5hbWUuVHdvTW9udGhzUG9zdHBvbmVkOlxuICAgIGNhc2UgTWF4UGxhbk5hbWUuVHdvTW9udGhzUG9zdHBvbmVkMjpcbiAgICBjYXNlIE1heFBsYW5OYW1lLkFjY3VtdWxhdGluZ0Jhc2tldDpcbiAgICBjYXNlIE1heFBsYW5OYW1lLkludGVybmV0U2hvcHBpbmc6XG4gICAgY2FzZSBNYXhQbGFuTmFtZS5Nb250aGx5Q2hhcmdlUGx1c0ludGVyZXN0OlxuICAgIGNhc2UgTWF4UGxhbk5hbWUuUG9zdHBvbmVkVHJhbnNhY3Rpb25JbnN0YWxsbWVudHM6XG4gICAgY2FzZSBNYXhQbGFuTmFtZS5SZXBsYWNlbWVudENhcmQ6XG4gICAgY2FzZSBNYXhQbGFuTmFtZS5FYXJseVJlcGF5bWVudDpcbiAgICBjYXNlIE1heFBsYW5OYW1lLk1vbnRobHlDYXJkRmVlOlxuICAgIGNhc2UgTWF4UGxhbk5hbWUuQ3VycmVuY3lQb2NrZXQ6XG4gICAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlcy5Ob3JtYWw7XG4gICAgY2FzZSBNYXhQbGFuTmFtZS5JbnN0YWxsbWVudHM6XG4gICAgY2FzZSBNYXhQbGFuTmFtZS5DcmVkaXQ6XG4gICAgY2FzZSBNYXhQbGFuTmFtZS5DcmVkaXRPdXRzaWRlVGhlTGltaXQ6XG4gICAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlcy5JbnN0YWxsbWVudHM7XG4gICAgZGVmYXVsdDpcbiAgICAgIHN3aXRjaCAocGxhblR5cGVJZCkge1xuICAgICAgICBjYXNlIDI6XG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlcy5JbnN0YWxsbWVudHM7XG4gICAgICAgIGNhc2UgNTpcbiAgICAgICAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlcy5Ob3JtYWw7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIHRyYW5zYWN0aW9uIHR5cGUgJHtjbGVhbmVkVXBUeG5UeXBlU3RyIGFzIHN0cmluZ31gKTtcbiAgICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRJbnN0YWxsbWVudHNJbmZvKGNvbW1lbnRzOiBzdHJpbmcpIHtcbiAgaWYgKCFjb21tZW50cykge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgY29uc3QgbWF0Y2hlcyA9IGNvbW1lbnRzLm1hdGNoKC9cXGQrL2cpO1xuICBpZiAoIW1hdGNoZXMgfHwgbWF0Y2hlcy5sZW5ndGggPCAyKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbnVtYmVyOiBwYXJzZUludChtYXRjaGVzWzBdLCAxMCksXG4gICAgdG90YWw6IHBhcnNlSW50KG1hdGNoZXNbMV0sIDEwKSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0Q2hhcmdlZEN1cnJlbmN5KGN1cnJlbmN5SWQ6IG51bWJlciB8IG51bGwpIHtcbiAgc3dpdGNoIChjdXJyZW5jeUlkKSB7XG4gICAgY2FzZSAzNzY6XG4gICAgICByZXR1cm4gU0hFS0VMX0NVUlJFTkNZO1xuICAgIGNhc2UgODQwOlxuICAgICAgcmV0dXJuIERPTExBUl9DVVJSRU5DWTtcbiAgICBjYXNlIDk3ODpcbiAgICAgIHJldHVybiBFVVJPX0NVUlJFTkNZO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRNZW1vKHtcbiAgY29tbWVudHMsXG4gIGZ1bmRzVHJhbnNmZXJSZWNlaXZlck9yVHJhbnNmZXIsXG4gIGZ1bmRzVHJhbnNmZXJDb21tZW50LFxufTogUGljazxTY3JhcGVkVHJhbnNhY3Rpb24sICdjb21tZW50cycgfCAnZnVuZHNUcmFuc2ZlclJlY2VpdmVyT3JUcmFuc2ZlcicgfCAnZnVuZHNUcmFuc2ZlckNvbW1lbnQnPikge1xuICBpZiAoZnVuZHNUcmFuc2ZlclJlY2VpdmVyT3JUcmFuc2Zlcikge1xuICAgIGNvbnN0IG1lbW8gPSBjb21tZW50cyA/IGAke2NvbW1lbnRzfSAke2Z1bmRzVHJhbnNmZXJSZWNlaXZlck9yVHJhbnNmZXJ9YCA6IGZ1bmRzVHJhbnNmZXJSZWNlaXZlck9yVHJhbnNmZXI7XG4gICAgcmV0dXJuIGZ1bmRzVHJhbnNmZXJDb21tZW50ID8gYCR7bWVtb306ICR7ZnVuZHNUcmFuc2ZlckNvbW1lbnR9YCA6IG1lbW87XG4gIH1cblxuICByZXR1cm4gY29tbWVudHM7XG59XG5cbmZ1bmN0aW9uIG1hcFRyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uOiBTY3JhcGVkVHJhbnNhY3Rpb24pOiBUcmFuc2FjdGlvbiB7XG4gIGNvbnN0IGlzUGVuZGluZyA9IHJhd1RyYW5zYWN0aW9uLnBheW1lbnREYXRlID09PSBudWxsO1xuICBjb25zdCBwcm9jZXNzZWREYXRlID0gbW9tZW50KGlzUGVuZGluZyA/IHJhd1RyYW5zYWN0aW9uLnB1cmNoYXNlRGF0ZSA6IHJhd1RyYW5zYWN0aW9uLnBheW1lbnREYXRlKS50b0lTT1N0cmluZygpO1xuICBjb25zdCBzdGF0dXMgPSBpc1BlbmRpbmcgPyBUcmFuc2FjdGlvblN0YXR1c2VzLlBlbmRpbmcgOiBUcmFuc2FjdGlvblN0YXR1c2VzLkNvbXBsZXRlZDtcblxuICBjb25zdCBpbnN0YWxsbWVudHMgPSBnZXRJbnN0YWxsbWVudHNJbmZvKHJhd1RyYW5zYWN0aW9uLmNvbW1lbnRzKTtcbiAgY29uc3QgaWRlbnRpZmllciA9IGluc3RhbGxtZW50c1xuICAgID8gYCR7cmF3VHJhbnNhY3Rpb24uZGVhbERhdGE/LmFybn1fJHtpbnN0YWxsbWVudHMubnVtYmVyfWBcbiAgICA6IHJhd1RyYW5zYWN0aW9uLmRlYWxEYXRhPy5hcm47XG5cbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBnZXRUcmFuc2FjdGlvblR5cGUocmF3VHJhbnNhY3Rpb24ucGxhbk5hbWUsIHJhd1RyYW5zYWN0aW9uLnBsYW5UeXBlSWQpLFxuICAgIGRhdGU6IG1vbWVudChyYXdUcmFuc2FjdGlvbi5wdXJjaGFzZURhdGUpLnRvSVNPU3RyaW5nKCksXG4gICAgcHJvY2Vzc2VkRGF0ZSxcbiAgICBvcmlnaW5hbEFtb3VudDogLXJhd1RyYW5zYWN0aW9uLm9yaWdpbmFsQW1vdW50LFxuICAgIG9yaWdpbmFsQ3VycmVuY3k6IHJhd1RyYW5zYWN0aW9uLm9yaWdpbmFsQ3VycmVuY3ksXG4gICAgY2hhcmdlZEFtb3VudDogLXJhd1RyYW5zYWN0aW9uLmFjdHVhbFBheW1lbnRBbW91bnQsXG4gICAgY2hhcmdlZEN1cnJlbmN5OiBnZXRDaGFyZ2VkQ3VycmVuY3kocmF3VHJhbnNhY3Rpb24ucGF5bWVudEN1cnJlbmN5KSxcbiAgICBkZXNjcmlwdGlvbjogcmF3VHJhbnNhY3Rpb24ubWVyY2hhbnROYW1lLnRyaW0oKSxcbiAgICBtZW1vOiBnZXRNZW1vKHJhd1RyYW5zYWN0aW9uKSxcbiAgICBjYXRlZ29yeTogY2F0ZWdvcmllcy5nZXQocmF3VHJhbnNhY3Rpb24/LmNhdGVnb3J5SWQpLFxuICAgIGluc3RhbGxtZW50cyxcbiAgICBpZGVudGlmaWVyLFxuICAgIHN0YXR1cyxcbiAgfTtcbn1cbmludGVyZmFjZSBTY3JhcGVkVHJhbnNhY3Rpb25zUmVzdWx0IHtcbiAgcmVzdWx0Pzoge1xuICAgIHRyYW5zYWN0aW9uczogU2NyYXBlZFRyYW5zYWN0aW9uW107XG4gIH07XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGZldGNoVHJhbnNhY3Rpb25zRm9yTW9udGgocGFnZTogUGFnZSwgbW9udGhNb21lbnQ6IE1vbWVudCkge1xuICBjb25zdCB1cmwgPSBnZXRUcmFuc2FjdGlvbnNVcmwobW9udGhNb21lbnQpO1xuXG4gIGNvbnN0IGRhdGEgPSBhd2FpdCBmZXRjaEdldFdpdGhpblBhZ2U8U2NyYXBlZFRyYW5zYWN0aW9uc1Jlc3VsdD4ocGFnZSwgdXJsKTtcbiAgY29uc3QgdHJhbnNhY3Rpb25zQnlBY2NvdW50OiBSZWNvcmQ8c3RyaW5nLCBUcmFuc2FjdGlvbltdPiA9IHt9O1xuXG4gIGlmICghZGF0YSB8fCAhZGF0YS5yZXN1bHQpIHJldHVybiB0cmFuc2FjdGlvbnNCeUFjY291bnQ7XG5cbiAgZGF0YS5yZXN1bHQudHJhbnNhY3Rpb25zXG4gICAgLy8gRmlsdGVyIG91dCBub24tdHJhbnNhY3Rpb25zIHdpdGhvdXQgYSBwbGFuIHR5cGUsIGUuZy4gc3VtbWFyeSByb3dzXG4gICAgLmZpbHRlcih0cmFuc2FjdGlvbiA9PiAhIXRyYW5zYWN0aW9uLnBsYW5OYW1lKVxuICAgIC5mb3JFYWNoKCh0cmFuc2FjdGlvbjogU2NyYXBlZFRyYW5zYWN0aW9uKSA9PiB7XG4gICAgICBpZiAoIXRyYW5zYWN0aW9uc0J5QWNjb3VudFt0cmFuc2FjdGlvbi5zaG9ydENhcmROdW1iZXJdKSB7XG4gICAgICAgIHRyYW5zYWN0aW9uc0J5QWNjb3VudFt0cmFuc2FjdGlvbi5zaG9ydENhcmROdW1iZXJdID0gW107XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1hcHBlZFRyYW5zYWN0aW9uID0gbWFwVHJhbnNhY3Rpb24odHJhbnNhY3Rpb24pO1xuICAgICAgdHJhbnNhY3Rpb25zQnlBY2NvdW50W3RyYW5zYWN0aW9uLnNob3J0Q2FyZE51bWJlcl0ucHVzaChtYXBwZWRUcmFuc2FjdGlvbik7XG4gICAgfSk7XG5cbiAgcmV0dXJuIHRyYW5zYWN0aW9uc0J5QWNjb3VudDtcbn1cblxuZnVuY3Rpb24gYWRkUmVzdWx0KGFsbFJlc3VsdHM6IFJlY29yZDxzdHJpbmcsIFRyYW5zYWN0aW9uW10+LCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIFRyYW5zYWN0aW9uW10+KSB7XG4gIGNvbnN0IGNsb25lZFJlc3VsdHM6IFJlY29yZDxzdHJpbmcsIFRyYW5zYWN0aW9uW10+ID0geyAuLi5hbGxSZXN1bHRzIH07XG4gIE9iamVjdC5rZXlzKHJlc3VsdCkuZm9yRWFjaChhY2NvdW50TnVtYmVyID0+IHtcbiAgICBpZiAoIWNsb25lZFJlc3VsdHNbYWNjb3VudE51bWJlcl0pIHtcbiAgICAgIGNsb25lZFJlc3VsdHNbYWNjb3VudE51bWJlcl0gPSBbXTtcbiAgICB9XG4gICAgY2xvbmVkUmVzdWx0c1thY2NvdW50TnVtYmVyXS5wdXNoKC4uLnJlc3VsdFthY2NvdW50TnVtYmVyXSk7XG4gIH0pO1xuICByZXR1cm4gY2xvbmVkUmVzdWx0cztcbn1cblxuZnVuY3Rpb24gcHJlcGFyZVRyYW5zYWN0aW9ucyhcbiAgdHhuczogVHJhbnNhY3Rpb25bXSxcbiAgc3RhcnRNb21lbnQ6IG1vbWVudC5Nb21lbnQsXG4gIGNvbWJpbmVJbnN0YWxsbWVudHM6IGJvb2xlYW4sXG4gIGVuYWJsZVRyYW5zYWN0aW9uc0ZpbHRlckJ5RGF0ZTogYm9vbGVhbixcbikge1xuICBsZXQgY2xvbmVkVHhucyA9IEFycmF5LmZyb20odHhucyk7XG4gIGlmICghY29tYmluZUluc3RhbGxtZW50cykge1xuICAgIGNsb25lZFR4bnMgPSBmaXhJbnN0YWxsbWVudHMoY2xvbmVkVHhucyk7XG4gIH1cbiAgY2xvbmVkVHhucyA9IHNvcnRUcmFuc2FjdGlvbnNCeURhdGUoY2xvbmVkVHhucyk7XG4gIGNsb25lZFR4bnMgPSBlbmFibGVUcmFuc2FjdGlvbnNGaWx0ZXJCeURhdGVcbiAgICA/IGZpbHRlck9sZFRyYW5zYWN0aW9ucyhjbG9uZWRUeG5zLCBzdGFydE1vbWVudCwgY29tYmluZUluc3RhbGxtZW50cyB8fCBmYWxzZSlcbiAgICA6IGNsb25lZFR4bnM7XG4gIHJldHVybiBjbG9uZWRUeG5zO1xufVxuXG5hc3luYyBmdW5jdGlvbiBmZXRjaFRyYW5zYWN0aW9ucyhwYWdlOiBQYWdlLCBvcHRpb25zOiBTY3JhcGVyT3B0aW9ucykge1xuICBjb25zdCBmdXR1cmVNb250aHNUb1NjcmFwZSA9IG9wdGlvbnMuZnV0dXJlTW9udGhzVG9TY3JhcGUgPz8gMTtcbiAgY29uc3QgZGVmYXVsdFN0YXJ0TW9tZW50ID0gbW9tZW50KCkuc3VidHJhY3QoMSwgJ3llYXJzJyk7XG4gIGNvbnN0IHN0YXJ0TW9tZW50TGltaXQgPSBtb21lbnQoKS5zdWJ0cmFjdCg0LCAneWVhcnMnKTtcbiAgY29uc3Qgc3RhcnREYXRlID0gb3B0aW9ucy5zdGFydERhdGUgfHwgZGVmYXVsdFN0YXJ0TW9tZW50LnRvRGF0ZSgpO1xuICBjb25zdCBzdGFydE1vbWVudCA9IG1vbWVudC5tYXgoc3RhcnRNb21lbnRMaW1pdCwgbW9tZW50KHN0YXJ0RGF0ZSkpO1xuICBjb25zdCBhbGxNb250aHMgPSBnZXRBbGxNb250aE1vbWVudHMoc3RhcnRNb21lbnQsIGZ1dHVyZU1vbnRoc1RvU2NyYXBlKTtcblxuICBhd2FpdCBsb2FkQ2F0ZWdvcmllcyhwYWdlKTtcblxuICBsZXQgYWxsUmVzdWx0czogUmVjb3JkPHN0cmluZywgVHJhbnNhY3Rpb25bXT4gPSB7fTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBhbGxNb250aHMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBmZXRjaFRyYW5zYWN0aW9uc0Zvck1vbnRoKHBhZ2UsIGFsbE1vbnRoc1tpXSk7XG4gICAgYWxsUmVzdWx0cyA9IGFkZFJlc3VsdChhbGxSZXN1bHRzLCByZXN1bHQpO1xuICB9XG5cbiAgT2JqZWN0LmtleXMoYWxsUmVzdWx0cykuZm9yRWFjaChhY2NvdW50TnVtYmVyID0+IHtcbiAgICBsZXQgdHhucyA9IGFsbFJlc3VsdHNbYWNjb3VudE51bWJlcl07XG4gICAgdHhucyA9IHByZXBhcmVUcmFuc2FjdGlvbnMoXG4gICAgICB0eG5zLFxuICAgICAgc3RhcnRNb21lbnQsXG4gICAgICBvcHRpb25zLmNvbWJpbmVJbnN0YWxsbWVudHMgfHwgZmFsc2UsXG4gICAgICBvcHRpb25zLm91dHB1dERhdGE/LmVuYWJsZVRyYW5zYWN0aW9uc0ZpbHRlckJ5RGF0ZSA/PyB0cnVlLFxuICAgICk7XG4gICAgYWxsUmVzdWx0c1thY2NvdW50TnVtYmVyXSA9IHR4bnM7XG4gIH0pO1xuXG4gIHJldHVybiBhbGxSZXN1bHRzO1xufVxuXG5mdW5jdGlvbiBnZXRQb3NzaWJsZUxvZ2luUmVzdWx0cyhwYWdlOiBQYWdlKTogUG9zc2libGVMb2dpblJlc3VsdHMge1xuICBjb25zdCB1cmxzOiBQb3NzaWJsZUxvZ2luUmVzdWx0cyA9IHt9O1xuICB1cmxzW0xvZ2luUmVzdWx0cy5TdWNjZXNzXSA9IFtTVUNDRVNTX1VSTF07XG4gIHVybHNbTG9naW5SZXN1bHRzLkNoYW5nZVBhc3N3b3JkXSA9IFtQQVNTV09SRF9FWFBJUkVEX1VSTF07XG4gIHVybHNbTG9naW5SZXN1bHRzLkludmFsaWRQYXNzd29yZF0gPSBbXG4gICAgYXN5bmMgKCkgPT4ge1xuICAgICAgcmV0dXJuIGVsZW1lbnRQcmVzZW50T25QYWdlKHBhZ2UsIElOVkFMSURfREVUQUlMU19TRUxFQ1RPUik7XG4gICAgfSxcbiAgXTtcbiAgdXJsc1tMb2dpblJlc3VsdHMuVW5rbm93bkVycm9yXSA9IFtcbiAgICBhc3luYyAoKSA9PiB7XG4gICAgICByZXR1cm4gZWxlbWVudFByZXNlbnRPblBhZ2UocGFnZSwgTE9HSU5fRVJST1JfU0VMRUNUT1IpO1xuICAgIH0sXG4gIF07XG4gIHJldHVybiB1cmxzO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVMb2dpbkZpZWxkcyhjcmVkZW50aWFsczogU2NyYXBlclNwZWNpZmljQ3JlZGVudGlhbHMpIHtcbiAgcmV0dXJuIFtcbiAgICB7IHNlbGVjdG9yOiAnI3VzZXItbmFtZScsIHZhbHVlOiBjcmVkZW50aWFscy51c2VybmFtZSB9LFxuICAgIHsgc2VsZWN0b3I6ICcjcGFzc3dvcmQnLCB2YWx1ZTogY3JlZGVudGlhbHMucGFzc3dvcmQgfSxcbiAgXTtcbn1cblxudHlwZSBTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscyA9IHsgdXNlcm5hbWU6IHN0cmluZzsgcGFzc3dvcmQ6IHN0cmluZyB9O1xuXG5jbGFzcyBNYXhTY3JhcGVyIGV4dGVuZHMgQmFzZVNjcmFwZXJXaXRoQnJvd3NlcjxTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscz4ge1xuICBnZXRMb2dpbk9wdGlvbnMoY3JlZGVudGlhbHM6IFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzKTogTG9naW5PcHRpb25zIHtcbiAgICByZXR1cm4ge1xuICAgICAgbG9naW5Vcmw6IExPR0lOX1VSTCxcbiAgICAgIGZpZWxkczogY3JlYXRlTG9naW5GaWVsZHMoY3JlZGVudGlhbHMpLFxuICAgICAgc3VibWl0QnV0dG9uU2VsZWN0b3I6ICdhcHAtdXNlci1sb2dpbi1mb3JtIC5nZW5lcmFsLWJ1dHRvbi5zZW5kLW1lLWNvZGUnLFxuICAgICAgcHJlQWN0aW9uOiBhc3luYyAoKSA9PiB7XG4gICAgICAgIGlmIChhd2FpdCBlbGVtZW50UHJlc2VudE9uUGFnZSh0aGlzLnBhZ2UsICcjY2xvc2VQb3B1cCcpKSB7XG4gICAgICAgICAgYXdhaXQgY2xpY2tCdXR0b24odGhpcy5wYWdlLCAnI2Nsb3NlUG9wdXAnKTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCBjbGlja0J1dHRvbih0aGlzLnBhZ2UsICcucGVyc29uYWwtYXJlYSA+IGEuZ28tdG8tcGVyc29uYWwtYXJlYScpO1xuICAgICAgICBpZiAoYXdhaXQgZWxlbWVudFByZXNlbnRPblBhZ2UodGhpcy5wYWdlLCAnLmxvZ2luLWxpbmsjcHJpdmF0ZScpKSB7XG4gICAgICAgICAgYXdhaXQgY2xpY2tCdXR0b24odGhpcy5wYWdlLCAnLmxvZ2luLWxpbmsjcHJpdmF0ZScpO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IHdhaXRVbnRpbEVsZW1lbnRGb3VuZCh0aGlzLnBhZ2UsICcjbG9naW4tcGFzc3dvcmQtbGluaycsIHRydWUpO1xuICAgICAgICBhd2FpdCBjbGlja0J1dHRvbih0aGlzLnBhZ2UsICcjbG9naW4tcGFzc3dvcmQtbGluaycpO1xuICAgICAgICBhd2FpdCB3YWl0VW50aWxFbGVtZW50Rm91bmQodGhpcy5wYWdlLCAnI2xvZ2luLXBhc3N3b3JkLnRhYi1wYW5lLmFjdGl2ZSBhcHAtdXNlci1sb2dpbi1mb3JtJywgdHJ1ZSk7XG4gICAgICB9LFxuICAgICAgY2hlY2tSZWFkaW5lc3M6IGFzeW5jICgpID0+IHtcbiAgICAgICAgYXdhaXQgd2FpdFVudGlsRWxlbWVudEZvdW5kKHRoaXMucGFnZSwgJy5wZXJzb25hbC1hcmVhID4gYS5nby10by1wZXJzb25hbC1hcmVhJywgdHJ1ZSk7XG4gICAgICB9LFxuICAgICAgcG9zdEFjdGlvbjogYXN5bmMgKCkgPT4gcmVkaXJlY3RPckRpYWxvZyh0aGlzLnBhZ2UpLFxuICAgICAgcG9zc2libGVSZXN1bHRzOiBnZXRQb3NzaWJsZUxvZ2luUmVzdWx0cyh0aGlzLnBhZ2UpLFxuICAgICAgd2FpdFVudGlsOiAnZG9tY29udGVudGxvYWRlZCcsXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIGZldGNoRGF0YSgpIHtcbiAgICBjb25zdCByZXN1bHRzID0gYXdhaXQgZmV0Y2hUcmFuc2FjdGlvbnModGhpcy5wYWdlLCB0aGlzLm9wdGlvbnMpO1xuICAgIGNvbnN0IGFjY291bnRzID0gT2JqZWN0LmtleXMocmVzdWx0cykubWFwKGFjY291bnROdW1iZXIgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYWNjb3VudE51bWJlcixcbiAgICAgICAgdHhuczogcmVzdWx0c1thY2NvdW50TnVtYmVyXSxcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgc3VjY2VzczogdHJ1ZSxcbiAgICAgIGFjY291bnRzLFxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgTWF4U2NyYXBlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLElBQUFBLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFDLFVBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLE1BQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFHLE1BQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLHFCQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxNQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxXQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyxhQUFBLEdBQUFQLE9BQUE7QUFDQSxJQUFBUSxjQUFBLEdBQUFSLE9B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
303
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbW9tZW50IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfY29uc3RhbnRzIiwiX2RhdGVzIiwiX2RlYnVnIiwiX2VsZW1lbnRzSW50ZXJhY3Rpb25zIiwiX2ZldGNoIiwiX25hdmlnYXRpb24iLCJfdHJhbnNhY3Rpb25zIiwiX3RyYW5zYWN0aW9uczIiLCJfYmFzZVNjcmFwZXJXaXRoQnJvd3NlciIsImUiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImRlYnVnIiwiZ2V0RGVidWciLCJCQVNFX0FQSV9BQ1RJT05TX1VSTCIsIkJBU0VfV0VMQ09NRV9VUkwiLCJMT0dJTl9VUkwiLCJQQVNTV09SRF9FWFBJUkVEX1VSTCIsIlNVQ0NFU1NfVVJMIiwiTWF4UGxhbk5hbWUiLCJJTlZBTElEX0RFVEFJTFNfU0VMRUNUT1IiLCJMT0dJTl9FUlJPUl9TRUxFQ1RPUiIsImNhdGVnb3JpZXMiLCJNYXAiLCJyZWRpcmVjdE9yRGlhbG9nIiwicGFnZSIsIlByb21pc2UiLCJyYWNlIiwid2FpdEZvclJlZGlyZWN0Iiwid2FpdFVudGlsRWxlbWVudEZvdW5kIiwiZ2V0VHJhbnNhY3Rpb25zVXJsIiwibW9udGhNb21lbnQiLCJtb250aCIsInllYXIiLCJkYXRlIiwidXJsIiwiVVJMIiwic2VhcmNoUGFyYW1zIiwic2V0IiwidG9TdHJpbmciLCJsb2FkQ2F0ZWdvcmllcyIsInJlcyIsImZldGNoR2V0V2l0aGluUGFnZSIsIkFycmF5IiwiaXNBcnJheSIsInJlc3VsdCIsImxlbmd0aCIsImZvckVhY2giLCJpZCIsIm5hbWUiLCJnZXRUcmFuc2FjdGlvblR5cGUiLCJwbGFuTmFtZSIsInBsYW5UeXBlSWQiLCJjbGVhbmVkVXBUeG5UeXBlU3RyIiwicmVwbGFjZSIsInRyaW0iLCJJbW1lZGlhdGVDaGFyZ2UiLCJOb3JtYWwiLCJNb250aGx5Q2hhcmdlIiwiT25lTW9udGhQb3N0cG9uZWQiLCJNb250aGx5UG9zdHBvbmVkIiwiRnV0dXJlUHVyY2hhc2VGaW5hbmNpbmciLCJNb250aGx5UGF5bWVudCIsIk1vbnRobHlQb3N0cG9uZWRJbnN0YWxsbWVudHMiLCJUaGlydHlEYXlzUGx1cyIsIlR3b01vbnRoc1Bvc3Rwb25lZCIsIlR3b01vbnRoc1Bvc3Rwb25lZDIiLCJBY2N1bXVsYXRpbmdCYXNrZXQiLCJJbnRlcm5ldFNob3BwaW5nIiwiTW9udGhseUNoYXJnZVBsdXNJbnRlcmVzdCIsIlBvc3Rwb25lZFRyYW5zYWN0aW9uSW5zdGFsbG1lbnRzIiwiUmVwbGFjZW1lbnRDYXJkIiwiRWFybHlSZXBheW1lbnQiLCJNb250aGx5Q2FyZEZlZSIsIkN1cnJlbmN5UG9ja2V0IiwiVHJhbnNhY3Rpb25UeXBlcyIsIkluc3RhbGxtZW50cyIsIkNyZWRpdCIsIkNyZWRpdE91dHNpZGVUaGVMaW1pdCIsIkVycm9yIiwiZ2V0SW5zdGFsbG1lbnRzSW5mbyIsImNvbW1lbnRzIiwidW5kZWZpbmVkIiwibWF0Y2hlcyIsIm1hdGNoIiwibnVtYmVyIiwicGFyc2VJbnQiLCJ0b3RhbCIsImdldENoYXJnZWRDdXJyZW5jeSIsImN1cnJlbmN5SWQiLCJTSEVLRUxfQ1VSUkVOQ1kiLCJET0xMQVJfQ1VSUkVOQ1kiLCJFVVJPX0NVUlJFTkNZIiwiZ2V0TWVtbyIsImZ1bmRzVHJhbnNmZXJSZWNlaXZlck9yVHJhbnNmZXIiLCJmdW5kc1RyYW5zZmVyQ29tbWVudCIsIm1lbW8iLCJtYXBUcmFuc2FjdGlvbiIsInJhd1RyYW5zYWN0aW9uIiwib3B0aW9ucyIsImlzUGVuZGluZyIsInBheW1lbnREYXRlIiwicHJvY2Vzc2VkRGF0ZSIsIm1vbWVudCIsInB1cmNoYXNlRGF0ZSIsInRvSVNPU3RyaW5nIiwic3RhdHVzIiwiVHJhbnNhY3Rpb25TdGF0dXNlcyIsIlBlbmRpbmciLCJDb21wbGV0ZWQiLCJpbnN0YWxsbWVudHMiLCJpZGVudGlmaWVyIiwiZGVhbERhdGEiLCJhcm4iLCJ0eXBlIiwib3JpZ2luYWxBbW91bnQiLCJvcmlnaW5hbEN1cnJlbmN5IiwiY2hhcmdlZEFtb3VudCIsImFjdHVhbFBheW1lbnRBbW91bnQiLCJjaGFyZ2VkQ3VycmVuY3kiLCJwYXltZW50Q3VycmVuY3kiLCJkZXNjcmlwdGlvbiIsIm1lcmNoYW50TmFtZSIsImNhdGVnb3J5IiwiZ2V0IiwiY2F0ZWdvcnlJZCIsImluY2x1ZGVSYXdUcmFuc2FjdGlvbiIsImZldGNoVHJhbnNhY3Rpb25zRm9yTW9udGgiLCJkYXRhIiwidHJhbnNhY3Rpb25zQnlBY2NvdW50IiwidHJhbnNhY3Rpb25zIiwiZmlsdGVyIiwidHJhbnNhY3Rpb24iLCJzaG9ydENhcmROdW1iZXIiLCJtYXBwZWRUcmFuc2FjdGlvbiIsInB1c2giLCJhZGRSZXN1bHQiLCJhbGxSZXN1bHRzIiwiY2xvbmVkUmVzdWx0cyIsIk9iamVjdCIsImtleXMiLCJhY2NvdW50TnVtYmVyIiwicHJlcGFyZVRyYW5zYWN0aW9ucyIsInR4bnMiLCJzdGFydE1vbWVudCIsImNvbWJpbmVJbnN0YWxsbWVudHMiLCJlbmFibGVUcmFuc2FjdGlvbnNGaWx0ZXJCeURhdGUiLCJjbG9uZWRUeG5zIiwiZnJvbSIsImZpeEluc3RhbGxtZW50cyIsInNvcnRUcmFuc2FjdGlvbnNCeURhdGUiLCJmaWx0ZXJPbGRUcmFuc2FjdGlvbnMiLCJmZXRjaFRyYW5zYWN0aW9ucyIsImZ1dHVyZU1vbnRoc1RvU2NyYXBlIiwiZGVmYXVsdFN0YXJ0TW9tZW50Iiwic3VidHJhY3QiLCJzdGFydE1vbWVudExpbWl0Iiwic3RhcnREYXRlIiwidG9EYXRlIiwibWF4IiwiYWxsTW9udGhzIiwiZ2V0QWxsTW9udGhNb21lbnRzIiwiaSIsIm91dHB1dERhdGEiLCJnZXRQb3NzaWJsZUxvZ2luUmVzdWx0cyIsInVybHMiLCJMb2dpblJlc3VsdHMiLCJTdWNjZXNzIiwiQ2hhbmdlUGFzc3dvcmQiLCJJbnZhbGlkUGFzc3dvcmQiLCJlbGVtZW50UHJlc2VudE9uUGFnZSIsIlVua25vd25FcnJvciIsImNyZWF0ZUxvZ2luRmllbGRzIiwiY3JlZGVudGlhbHMiLCJzZWxlY3RvciIsInZhbHVlIiwidXNlcm5hbWUiLCJwYXNzd29yZCIsIk1heFNjcmFwZXIiLCJCYXNlU2NyYXBlcldpdGhCcm93c2VyIiwiZ2V0TG9naW5PcHRpb25zIiwibG9naW5VcmwiLCJmaWVsZHMiLCJzdWJtaXRCdXR0b25TZWxlY3RvciIsInByZUFjdGlvbiIsImNsaWNrQnV0dG9uIiwiY2hlY2tSZWFkaW5lc3MiLCJwb3N0QWN0aW9uIiwicG9zc2libGVSZXN1bHRzIiwid2FpdFVudGlsIiwiZmV0Y2hEYXRhIiwicmVzdWx0cyIsImFjY291bnRzIiwibWFwIiwic3VjY2VzcyIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JhcGVycy9tYXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG1vbWVudCwgeyB0eXBlIE1vbWVudCB9IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyB0eXBlIFBhZ2UgfSBmcm9tICdwdXBwZXRlZXItY29yZSc7XG5pbXBvcnQgeyBET0xMQVJfQ1VSUkVOQ1ksIEVVUk9fQ1VSUkVOQ1ksIFNIRUtFTF9DVVJSRU5DWSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgZ2V0QWxsTW9udGhNb21lbnRzIGZyb20gJy4uL2hlbHBlcnMvZGF0ZXMnO1xuaW1wb3J0IHsgZ2V0RGVidWcgfSBmcm9tICcuLi9oZWxwZXJzL2RlYnVnJztcbmltcG9ydCB7IGNsaWNrQnV0dG9uLCBlbGVtZW50UHJlc2VudE9uUGFnZSwgd2FpdFVudGlsRWxlbWVudEZvdW5kIH0gZnJvbSAnLi4vaGVscGVycy9lbGVtZW50cy1pbnRlcmFjdGlvbnMnO1xuaW1wb3J0IHsgZmV0Y2hHZXRXaXRoaW5QYWdlIH0gZnJvbSAnLi4vaGVscGVycy9mZXRjaCc7XG5pbXBvcnQgeyB3YWl0Rm9yUmVkaXJlY3QgfSBmcm9tICcuLi9oZWxwZXJzL25hdmlnYXRpb24nO1xuaW1wb3J0IHsgZmlsdGVyT2xkVHJhbnNhY3Rpb25zLCBmaXhJbnN0YWxsbWVudHMsIHNvcnRUcmFuc2FjdGlvbnNCeURhdGUgfSBmcm9tICcuLi9oZWxwZXJzL3RyYW5zYWN0aW9ucyc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvblN0YXR1c2VzLCBUcmFuc2FjdGlvblR5cGVzLCB0eXBlIFRyYW5zYWN0aW9uIH0gZnJvbSAnLi4vdHJhbnNhY3Rpb25zJztcbmltcG9ydCB7XG4gIEJhc2VTY3JhcGVyV2l0aEJyb3dzZXIsXG4gIExvZ2luUmVzdWx0cyxcbiAgdHlwZSBMb2dpbk9wdGlvbnMsXG4gIHR5cGUgUG9zc2libGVMb2dpblJlc3VsdHMsXG59IGZyb20gJy4vYmFzZS1zY3JhcGVyLXdpdGgtYnJvd3Nlcic7XG5pbXBvcnQgeyB0eXBlIFNjcmFwZXJPcHRpb25zIH0gZnJvbSAnLi9pbnRlcmZhY2UnO1xuXG5jb25zdCBkZWJ1ZyA9IGdldERlYnVnKCdtYXgnKTtcblxuZXhwb3J0IGludGVyZmFjZSBTY3JhcGVkVHJhbnNhY3Rpb24ge1xuICBzaG9ydENhcmROdW1iZXI6IHN0cmluZztcbiAgcGF5bWVudERhdGU/OiBzdHJpbmc7XG4gIHB1cmNoYXNlRGF0ZTogc3RyaW5nO1xuICBhY3R1YWxQYXltZW50QW1vdW50OiBzdHJpbmc7XG4gIHBheW1lbnRDdXJyZW5jeTogbnVtYmVyIHwgbnVsbDtcbiAgb3JpZ2luYWxDdXJyZW5jeTogc3RyaW5nO1xuICBvcmlnaW5hbEFtb3VudDogbnVtYmVyO1xuICBwbGFuTmFtZTogc3RyaW5nO1xuICBwbGFuVHlwZUlkOiBudW1iZXI7XG4gIGNvbW1lbnRzOiBzdHJpbmc7XG4gIG1lcmNoYW50TmFtZTogc3RyaW5nO1xuICBjYXRlZ29yeUlkOiBudW1iZXI7XG4gIGZ1bmRzVHJhbnNmZXJDb21tZW50Pzogc3RyaW5nO1xuICBmdW5kc1RyYW5zZmVyUmVjZWl2ZXJPclRyYW5zZmVyPzogc3RyaW5nO1xuICBkZWFsRGF0YT86IHtcbiAgICBhcm46IHN0cmluZztcbiAgfTtcbn1cblxuY29uc3QgQkFTRV9BUElfQUNUSU9OU19VUkwgPSAnaHR0cHM6Ly9vbmxpbmVsY2FwaS5tYXguY28uaWwnO1xuY29uc3QgQkFTRV9XRUxDT01FX1VSTCA9ICdodHRwczovL3d3dy5tYXguY28uaWwnO1xuXG5jb25zdCBMT0dJTl9VUkwgPSBgJHtCQVNFX1dFTENPTUVfVVJMfS9sb2dpbmA7XG5jb25zdCBQQVNTV09SRF9FWFBJUkVEX1VSTCA9IGAke0JBU0VfV0VMQ09NRV9VUkx9L3JlbmV3LXBhc3N3b3JkYDtcbmNvbnN0IFNVQ0NFU1NfVVJMID0gYCR7QkFTRV9XRUxDT01FX1VSTH0vaG9tZXBhZ2UvcGVyc29uYWxgO1xuXG5lbnVtIE1heFBsYW5OYW1lIHtcbiAgTm9ybWFsID0gJ9eo15LXmdec15QnLFxuICBJbW1lZGlhdGVDaGFyZ2UgPSAn15fXmdeV15Eg16LXoden15XXqiDXnteZ15nXk9eZJyxcbiAgSW50ZXJuZXRTaG9wcGluZyA9ICfXkNeZ16DXmNeo16DXmC/Xl9eVXCLXnCcsXG4gIEluc3RhbGxtZW50cyA9ICfXqtep15zXldee15nXnScsXG4gIE1vbnRobHlDaGFyZ2UgPSAn15fXmdeV15Eg15fXldeT16nXmScsXG4gIE9uZU1vbnRoUG9zdHBvbmVkID0gJ9eT15fXldeZINeX15XXk9epJyxcbiAgTW9udGhseVBvc3Rwb25lZCA9ICfXk9eX15XXmSDXnNeX15nXldeRINeU15fXldeT16nXmScsXG4gIE1vbnRobHlQYXltZW50ID0gJ9eq16nXnNeV150g15fXldeT16nXmScsXG4gIEZ1dHVyZVB1cmNoYXNlRmluYW5jaW5nID0gJ9ee15nXnteV158g15zXqNeb15nXqdeUINei16rXmdeT15nXqicsXG4gIE1vbnRobHlQb3N0cG9uZWRJbnN0YWxsbWVudHMgPSAn15PXl9eV15kg15fXldeT16kg16rXqdec15XXnteZ150nLFxuICBUaGlydHlEYXlzUGx1cyA9ICfXoteh16fXqiAzMCDXpNec15XXoScsXG4gIFR3b01vbnRoc1Bvc3Rwb25lZCA9ICfXk9eX15XXmSDXl9eV15PXqdeZ15nXnScsXG4gIFR3b01vbnRoc1Bvc3Rwb25lZDIgPSBcIteT15fXldeZIDIg15cnINeq16nXnNeV157XmdedXCIsXG4gIE1vbnRobHlDaGFyZ2VQbHVzSW50ZXJlc3QgPSAn15fXldeT16nXmSArINeo15nXkdeZ16onLFxuICBDcmVkaXQgPSAn16fXqNeT15nXmCcsXG4gIENyZWRpdE91dHNpZGVUaGVMaW1pdCA9ICfXp9eo15PXmdeYLdee15fXldelINec157XodeS16jXqicsXG4gIEFjY3VtdWxhdGluZ0Jhc2tldCA9ICfXodecINee16bXmNeR16gnLFxuICBQb3N0cG9uZWRUcmFuc2FjdGlvbkluc3RhbGxtZW50cyA9ICfXpNeo15nXodeqINeU16LXoden15Qg15TXk9eX15XXmdeUJyxcbiAgUmVwbGFjZW1lbnRDYXJkID0gJ9eb16jXmNeZ16Eg15fXnNeZ16TXmScsXG4gIEVhcmx5UmVwYXltZW50ID0gJ9ek16jXoteV158g157Xlden15PXnScsXG4gIE1vbnRobHlDYXJkRmVlID0gJ9eT157XmSDXm9eo15jXmdehJyxcbiAgQ3VycmVuY3lQb2NrZXQgPSAn15fXmdeV15Eg15DXqNeg16cg157XmNeXJyxcbn1cblxuY29uc3QgSU5WQUxJRF9ERVRBSUxTX1NFTEVDVE9SID0gJyNwb3B1cFdyb25nRGV0YWlscyc7XG5jb25zdCBMT0dJTl9FUlJPUl9TRUxFQ1RPUiA9ICcjcG9wdXBDYXJkSG9sZGVyc0xvZ2luRXJyb3InO1xuXG5jb25zdCBjYXRlZ29yaWVzID0gbmV3IE1hcDxudW1iZXIsIHN0cmluZz4oKTtcblxuZnVuY3Rpb24gcmVkaXJlY3RPckRpYWxvZyhwYWdlOiBQYWdlKSB7XG4gIHJldHVybiBQcm9taXNlLnJhY2UoW1xuICAgIHdhaXRGb3JSZWRpcmVjdChwYWdlLCAyMDAwMCwgZmFsc2UsIFtCQVNFX1dFTENPTUVfVVJMLCBgJHtCQVNFX1dFTENPTUVfVVJMfS9gXSksXG4gICAgd2FpdFVudGlsRWxlbWVudEZvdW5kKHBhZ2UsIElOVkFMSURfREVUQUlMU19TRUxFQ1RPUiwgdHJ1ZSksXG4gICAgd2FpdFVudGlsRWxlbWVudEZvdW5kKHBhZ2UsIExPR0lOX0VSUk9SX1NFTEVDVE9SLCB0cnVlKSxcbiAgXSk7XG59XG5cbmZ1bmN0aW9uIGdldFRyYW5zYWN0aW9uc1VybChtb250aE1vbWVudDogTW9tZW50KSB7XG4gIGNvbnN0IG1vbnRoID0gbW9udGhNb21lbnQubW9udGgoKSArIDE7XG4gIGNvbnN0IHllYXIgPSBtb250aE1vbWVudC55ZWFyKCk7XG4gIGNvbnN0IGRhdGUgPSBgJHt5ZWFyfS0ke21vbnRofS0wMWA7XG5cbiAgLyoqXG4gICAqIHVybCBleHBsYW5hdGlvbjpcbiAgICogdXNlckluZGV4OiAtMSBmb3IgYWxsIGFjY291bnQgb3duZXJzXG4gICAqIGNhcmRJbmRleDogLTEgZm9yIGFsbCBjYXJkcyB1bmRlciB0aGUgYWNjb3VudFxuICAgKiBhbGwgb3RoZXIgcXVlcnkgcGFyYW1zIGFyZSBzdGF0aWMsIGJlc2lkZSB0aGUgZGF0ZSB3aGljaCBjaGFuZ2VzIGZvciByZXF1ZXN0IHBlciBtb250aFxuICAgKi9cbiAgY29uc3QgdXJsID0gbmV3IFVSTChgJHtCQVNFX0FQSV9BQ1RJT05TX1VSTH0vYXBpL3JlZ2lzdGVyZWQvdHJhbnNhY3Rpb25EZXRhaWxzL2dldFRyYW5zYWN0aW9uc0FuZEdyYXBoc2ApO1xuICB1cmwuc2VhcmNoUGFyYW1zLnNldChcbiAgICAnZmlsdGVyRGF0YScsXG4gICAgYHtcInVzZXJJbmRleFwiOi0xLFwiY2FyZEluZGV4XCI6LTEsXCJtb250aFZpZXdcIjp0cnVlLFwiZGF0ZVwiOlwiJHtkYXRlfVwiLFwiZGF0ZXNcIjp7XCJzdGFydERhdGVcIjpcIjBcIixcImVuZERhdGVcIjpcIjBcIn0sXCJiYW5rQWNjb3VudFwiOntcImJhbmtBY2NvdW50SW5kZXhcIjotMSxcImNhcmRzXCI6bnVsbH19YCxcbiAgKTtcbiAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoJ2ZpcnN0Q2FsbENhcmRJbmRleCcsICctMScpO1xuICByZXR1cm4gdXJsLnRvU3RyaW5nKCk7XG59XG5cbmludGVyZmFjZSBGZXRjaENhdGVnb3J5UmVzdWx0IHtcbiAgcmVzdWx0PzogQXJyYXk8e1xuICAgIGlkOiBudW1iZXI7XG4gICAgbmFtZTogc3RyaW5nO1xuICB9Pjtcbn1cblxuYXN5bmMgZnVuY3Rpb24gbG9hZENhdGVnb3JpZXMocGFnZTogUGFnZSkge1xuICBkZWJ1ZygnTG9hZGluZyBjYXRlZ29yaWVzJyk7XG4gIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoR2V0V2l0aGluUGFnZTxGZXRjaENhdGVnb3J5UmVzdWx0PihwYWdlLCBgJHtCQVNFX0FQSV9BQ1RJT05TX1VSTH0vYXBpL2NvbnRlbnRzL2dldENhdGVnb3JpZXNgKTtcbiAgaWYgKHJlcyAmJiBBcnJheS5pc0FycmF5KHJlcy5yZXN1bHQpKSB7XG4gICAgZGVidWcoYCR7cmVzLnJlc3VsdC5sZW5ndGh9IGNhdGVnb3JpZXMgbG9hZGVkYCk7XG4gICAgcmVzLnJlc3VsdD8uZm9yRWFjaCgoeyBpZCwgbmFtZSB9KSA9PiBjYXRlZ29yaWVzLnNldChpZCwgbmFtZSkpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldFRyYW5zYWN0aW9uVHlwZShwbGFuTmFtZTogc3RyaW5nLCBwbGFuVHlwZUlkOiBudW1iZXIpIHtcbiAgY29uc3QgY2xlYW5lZFVwVHhuVHlwZVN0ciA9IHBsYW5OYW1lLnJlcGxhY2UoJ1xcdCcsICcgJykudHJpbSgpIGFzIE1heFBsYW5OYW1lO1xuICBzd2l0Y2ggKGNsZWFuZWRVcFR4blR5cGVTdHIpIHtcbiAgICBjYXNlIE1heFBsYW5OYW1lLkltbWVkaWF0ZUNoYXJnZTpcbiAgICBjYXNlIE1heFBsYW5OYW1lLk5vcm1hbDpcbiAgICBjYXNlIE1heFBsYW5OYW1lLk1vbnRobHlDaGFyZ2U6XG4gICAgY2FzZSBNYXhQbGFuTmFtZS5PbmVNb250aFBvc3Rwb25lZDpcbiAgICBjYXNlIE1heFBsYW5OYW1lLk1vbnRobHlQb3N0cG9uZWQ6XG4gICAgY2FzZSBNYXhQbGFuTmFtZS5GdXR1cmVQdXJjaGFzZUZpbmFuY2luZzpcbiAgICBjYXNlIE1heFBsYW5OYW1lLk1vbnRobHlQYXltZW50OlxuICAgIGNhc2UgTWF4UGxhbk5hbWUuTW9udGhseVBvc3Rwb25lZEluc3RhbGxtZW50czpcbiAgICBjYXNlIE1heFBsYW5OYW1lLlRoaXJ0eURheXNQbHVzOlxuICAgIGNhc2UgTWF4UGxhbk5hbWUuVHdvTW9udGhzUG9zdHBvbmVkOlxuICAgIGNhc2UgTWF4UGxhbk5hbWUuVHdvTW9udGhzUG9zdHBvbmVkMjpcbiAgICBjYXNlIE1heFBsYW5OYW1lLkFjY3VtdWxhdGluZ0Jhc2tldDpcbiAgICBjYXNlIE1heFBsYW5OYW1lLkludGVybmV0U2hvcHBpbmc6XG4gICAgY2FzZSBNYXhQbGFuTmFtZS5Nb250aGx5Q2hhcmdlUGx1c0ludGVyZXN0OlxuICAgIGNhc2UgTWF4UGxhbk5hbWUuUG9zdHBvbmVkVHJhbnNhY3Rpb25JbnN0YWxsbWVudHM6XG4gICAgY2FzZSBNYXhQbGFuTmFtZS5SZXBsYWNlbWVudENhcmQ6XG4gICAgY2FzZSBNYXhQbGFuTmFtZS5FYXJseVJlcGF5bWVudDpcbiAgICBjYXNlIE1heFBsYW5OYW1lLk1vbnRobHlDYXJkRmVlOlxuICAgIGNhc2UgTWF4UGxhbk5hbWUuQ3VycmVuY3lQb2NrZXQ6XG4gICAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlcy5Ob3JtYWw7XG4gICAgY2FzZSBNYXhQbGFuTmFtZS5JbnN0YWxsbWVudHM6XG4gICAgY2FzZSBNYXhQbGFuTmFtZS5DcmVkaXQ6XG4gICAgY2FzZSBNYXhQbGFuTmFtZS5DcmVkaXRPdXRzaWRlVGhlTGltaXQ6XG4gICAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlcy5JbnN0YWxsbWVudHM7XG4gICAgZGVmYXVsdDpcbiAgICAgIHN3aXRjaCAocGxhblR5cGVJZCkge1xuICAgICAgICBjYXNlIDI6XG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlcy5JbnN0YWxsbWVudHM7XG4gICAgICAgIGNhc2UgNTpcbiAgICAgICAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlcy5Ob3JtYWw7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIHRyYW5zYWN0aW9uIHR5cGUgJHtjbGVhbmVkVXBUeG5UeXBlU3RyIGFzIHN0cmluZ31gKTtcbiAgICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRJbnN0YWxsbWVudHNJbmZvKGNvbW1lbnRzOiBzdHJpbmcpIHtcbiAgaWYgKCFjb21tZW50cykge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgY29uc3QgbWF0Y2hlcyA9IGNvbW1lbnRzLm1hdGNoKC9cXGQrL2cpO1xuICBpZiAoIW1hdGNoZXMgfHwgbWF0Y2hlcy5sZW5ndGggPCAyKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbnVtYmVyOiBwYXJzZUludChtYXRjaGVzWzBdLCAxMCksXG4gICAgdG90YWw6IHBhcnNlSW50KG1hdGNoZXNbMV0sIDEwKSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0Q2hhcmdlZEN1cnJlbmN5KGN1cnJlbmN5SWQ6IG51bWJlciB8IG51bGwpIHtcbiAgc3dpdGNoIChjdXJyZW5jeUlkKSB7XG4gICAgY2FzZSAzNzY6XG4gICAgICByZXR1cm4gU0hFS0VMX0NVUlJFTkNZO1xuICAgIGNhc2UgODQwOlxuICAgICAgcmV0dXJuIERPTExBUl9DVVJSRU5DWTtcbiAgICBjYXNlIDk3ODpcbiAgICAgIHJldHVybiBFVVJPX0NVUlJFTkNZO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRNZW1vKHtcbiAgY29tbWVudHMsXG4gIGZ1bmRzVHJhbnNmZXJSZWNlaXZlck9yVHJhbnNmZXIsXG4gIGZ1bmRzVHJhbnNmZXJDb21tZW50LFxufTogUGljazxTY3JhcGVkVHJhbnNhY3Rpb24sICdjb21tZW50cycgfCAnZnVuZHNUcmFuc2ZlclJlY2VpdmVyT3JUcmFuc2ZlcicgfCAnZnVuZHNUcmFuc2ZlckNvbW1lbnQnPikge1xuICBpZiAoZnVuZHNUcmFuc2ZlclJlY2VpdmVyT3JUcmFuc2Zlcikge1xuICAgIGNvbnN0IG1lbW8gPSBjb21tZW50cyA/IGAke2NvbW1lbnRzfSAke2Z1bmRzVHJhbnNmZXJSZWNlaXZlck9yVHJhbnNmZXJ9YCA6IGZ1bmRzVHJhbnNmZXJSZWNlaXZlck9yVHJhbnNmZXI7XG4gICAgcmV0dXJuIGZ1bmRzVHJhbnNmZXJDb21tZW50ID8gYCR7bWVtb306ICR7ZnVuZHNUcmFuc2ZlckNvbW1lbnR9YCA6IG1lbW87XG4gIH1cblxuICByZXR1cm4gY29tbWVudHM7XG59XG5cbmZ1bmN0aW9uIG1hcFRyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uOiBTY3JhcGVkVHJhbnNhY3Rpb24sIG9wdGlvbnM/OiBTY3JhcGVyT3B0aW9ucyk6IFRyYW5zYWN0aW9uIHtcbiAgY29uc3QgaXNQZW5kaW5nID0gcmF3VHJhbnNhY3Rpb24ucGF5bWVudERhdGUgPT09IG51bGw7XG4gIGNvbnN0IHByb2Nlc3NlZERhdGUgPSBtb21lbnQoaXNQZW5kaW5nID8gcmF3VHJhbnNhY3Rpb24ucHVyY2hhc2VEYXRlIDogcmF3VHJhbnNhY3Rpb24ucGF5bWVudERhdGUpLnRvSVNPU3RyaW5nKCk7XG4gIGNvbnN0IHN0YXR1cyA9IGlzUGVuZGluZyA/IFRyYW5zYWN0aW9uU3RhdHVzZXMuUGVuZGluZyA6IFRyYW5zYWN0aW9uU3RhdHVzZXMuQ29tcGxldGVkO1xuXG4gIGNvbnN0IGluc3RhbGxtZW50cyA9IGdldEluc3RhbGxtZW50c0luZm8ocmF3VHJhbnNhY3Rpb24uY29tbWVudHMpO1xuICBjb25zdCBpZGVudGlmaWVyID0gaW5zdGFsbG1lbnRzXG4gICAgPyBgJHtyYXdUcmFuc2FjdGlvbi5kZWFsRGF0YT8uYXJufV8ke2luc3RhbGxtZW50cy5udW1iZXJ9YFxuICAgIDogcmF3VHJhbnNhY3Rpb24uZGVhbERhdGE/LmFybjtcblxuICBjb25zdCByZXN1bHQ6IFRyYW5zYWN0aW9uID0ge1xuICAgIHR5cGU6IGdldFRyYW5zYWN0aW9uVHlwZShyYXdUcmFuc2FjdGlvbi5wbGFuTmFtZSwgcmF3VHJhbnNhY3Rpb24ucGxhblR5cGVJZCksXG4gICAgZGF0ZTogbW9tZW50KHJhd1RyYW5zYWN0aW9uLnB1cmNoYXNlRGF0ZSkudG9JU09TdHJpbmcoKSxcbiAgICBwcm9jZXNzZWREYXRlLFxuICAgIG9yaWdpbmFsQW1vdW50OiAtcmF3VHJhbnNhY3Rpb24ub3JpZ2luYWxBbW91bnQsXG4gICAgb3JpZ2luYWxDdXJyZW5jeTogcmF3VHJhbnNhY3Rpb24ub3JpZ2luYWxDdXJyZW5jeSxcbiAgICBjaGFyZ2VkQW1vdW50OiAtcmF3VHJhbnNhY3Rpb24uYWN0dWFsUGF5bWVudEFtb3VudCxcbiAgICBjaGFyZ2VkQ3VycmVuY3k6IGdldENoYXJnZWRDdXJyZW5jeShyYXdUcmFuc2FjdGlvbi5wYXltZW50Q3VycmVuY3kpLFxuICAgIGRlc2NyaXB0aW9uOiByYXdUcmFuc2FjdGlvbi5tZXJjaGFudE5hbWUudHJpbSgpLFxuICAgIG1lbW86IGdldE1lbW8ocmF3VHJhbnNhY3Rpb24pLFxuICAgIGNhdGVnb3J5OiBjYXRlZ29yaWVzLmdldChyYXdUcmFuc2FjdGlvbj8uY2F0ZWdvcnlJZCksXG4gICAgaW5zdGFsbG1lbnRzLFxuICAgIGlkZW50aWZpZXIsXG4gICAgc3RhdHVzLFxuICB9O1xuXG4gIGlmIChvcHRpb25zPy5pbmNsdWRlUmF3VHJhbnNhY3Rpb24pIHtcbiAgICByZXN1bHQucmF3VHJhbnNhY3Rpb24gPSByYXdUcmFuc2FjdGlvbjtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5pbnRlcmZhY2UgU2NyYXBlZFRyYW5zYWN0aW9uc1Jlc3VsdCB7XG4gIHJlc3VsdD86IHtcbiAgICB0cmFuc2FjdGlvbnM6IFNjcmFwZWRUcmFuc2FjdGlvbltdO1xuICB9O1xufVxuXG5hc3luYyBmdW5jdGlvbiBmZXRjaFRyYW5zYWN0aW9uc0Zvck1vbnRoKHBhZ2U6IFBhZ2UsIG1vbnRoTW9tZW50OiBNb21lbnQsIG9wdGlvbnM/OiBTY3JhcGVyT3B0aW9ucykge1xuICBjb25zdCB1cmwgPSBnZXRUcmFuc2FjdGlvbnNVcmwobW9udGhNb21lbnQpO1xuXG4gIGNvbnN0IGRhdGEgPSBhd2FpdCBmZXRjaEdldFdpdGhpblBhZ2U8U2NyYXBlZFRyYW5zYWN0aW9uc1Jlc3VsdD4ocGFnZSwgdXJsKTtcbiAgY29uc3QgdHJhbnNhY3Rpb25zQnlBY2NvdW50OiBSZWNvcmQ8c3RyaW5nLCBUcmFuc2FjdGlvbltdPiA9IHt9O1xuXG4gIGlmICghZGF0YSB8fCAhZGF0YS5yZXN1bHQpIHJldHVybiB0cmFuc2FjdGlvbnNCeUFjY291bnQ7XG5cbiAgZGF0YS5yZXN1bHQudHJhbnNhY3Rpb25zXG4gICAgLy8gRmlsdGVyIG91dCBub24tdHJhbnNhY3Rpb25zIHdpdGhvdXQgYSBwbGFuIHR5cGUsIGUuZy4gc3VtbWFyeSByb3dzXG4gICAgLmZpbHRlcih0cmFuc2FjdGlvbiA9PiAhIXRyYW5zYWN0aW9uLnBsYW5OYW1lKVxuICAgIC5mb3JFYWNoKCh0cmFuc2FjdGlvbjogU2NyYXBlZFRyYW5zYWN0aW9uKSA9PiB7XG4gICAgICBpZiAoIXRyYW5zYWN0aW9uc0J5QWNjb3VudFt0cmFuc2FjdGlvbi5zaG9ydENhcmROdW1iZXJdKSB7XG4gICAgICAgIHRyYW5zYWN0aW9uc0J5QWNjb3VudFt0cmFuc2FjdGlvbi5zaG9ydENhcmROdW1iZXJdID0gW107XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1hcHBlZFRyYW5zYWN0aW9uID0gbWFwVHJhbnNhY3Rpb24odHJhbnNhY3Rpb24sIG9wdGlvbnMpO1xuICAgICAgdHJhbnNhY3Rpb25zQnlBY2NvdW50W3RyYW5zYWN0aW9uLnNob3J0Q2FyZE51bWJlcl0ucHVzaChtYXBwZWRUcmFuc2FjdGlvbik7XG4gICAgfSk7XG5cbiAgcmV0dXJuIHRyYW5zYWN0aW9uc0J5QWNjb3VudDtcbn1cblxuZnVuY3Rpb24gYWRkUmVzdWx0KGFsbFJlc3VsdHM6IFJlY29yZDxzdHJpbmcsIFRyYW5zYWN0aW9uW10+LCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIFRyYW5zYWN0aW9uW10+KSB7XG4gIGNvbnN0IGNsb25lZFJlc3VsdHM6IFJlY29yZDxzdHJpbmcsIFRyYW5zYWN0aW9uW10+ID0geyAuLi5hbGxSZXN1bHRzIH07XG4gIE9iamVjdC5rZXlzKHJlc3VsdCkuZm9yRWFjaChhY2NvdW50TnVtYmVyID0+IHtcbiAgICBpZiAoIWNsb25lZFJlc3VsdHNbYWNjb3VudE51bWJlcl0pIHtcbiAgICAgIGNsb25lZFJlc3VsdHNbYWNjb3VudE51bWJlcl0gPSBbXTtcbiAgICB9XG4gICAgY2xvbmVkUmVzdWx0c1thY2NvdW50TnVtYmVyXS5wdXNoKC4uLnJlc3VsdFthY2NvdW50TnVtYmVyXSk7XG4gIH0pO1xuICByZXR1cm4gY2xvbmVkUmVzdWx0cztcbn1cblxuZnVuY3Rpb24gcHJlcGFyZVRyYW5zYWN0aW9ucyhcbiAgdHhuczogVHJhbnNhY3Rpb25bXSxcbiAgc3RhcnRNb21lbnQ6IG1vbWVudC5Nb21lbnQsXG4gIGNvbWJpbmVJbnN0YWxsbWVudHM6IGJvb2xlYW4sXG4gIGVuYWJsZVRyYW5zYWN0aW9uc0ZpbHRlckJ5RGF0ZTogYm9vbGVhbixcbikge1xuICBsZXQgY2xvbmVkVHhucyA9IEFycmF5LmZyb20odHhucyk7XG4gIGlmICghY29tYmluZUluc3RhbGxtZW50cykge1xuICAgIGNsb25lZFR4bnMgPSBmaXhJbnN0YWxsbWVudHMoY2xvbmVkVHhucyk7XG4gIH1cbiAgY2xvbmVkVHhucyA9IHNvcnRUcmFuc2FjdGlvbnNCeURhdGUoY2xvbmVkVHhucyk7XG4gIGNsb25lZFR4bnMgPSBlbmFibGVUcmFuc2FjdGlvbnNGaWx0ZXJCeURhdGVcbiAgICA/IGZpbHRlck9sZFRyYW5zYWN0aW9ucyhjbG9uZWRUeG5zLCBzdGFydE1vbWVudCwgY29tYmluZUluc3RhbGxtZW50cyB8fCBmYWxzZSlcbiAgICA6IGNsb25lZFR4bnM7XG4gIHJldHVybiBjbG9uZWRUeG5zO1xufVxuXG5hc3luYyBmdW5jdGlvbiBmZXRjaFRyYW5zYWN0aW9ucyhwYWdlOiBQYWdlLCBvcHRpb25zOiBTY3JhcGVyT3B0aW9ucykge1xuICBjb25zdCBmdXR1cmVNb250aHNUb1NjcmFwZSA9IG9wdGlvbnMuZnV0dXJlTW9udGhzVG9TY3JhcGUgPz8gMTtcbiAgY29uc3QgZGVmYXVsdFN0YXJ0TW9tZW50ID0gbW9tZW50KCkuc3VidHJhY3QoMSwgJ3llYXJzJyk7XG4gIGNvbnN0IHN0YXJ0TW9tZW50TGltaXQgPSBtb21lbnQoKS5zdWJ0cmFjdCg0LCAneWVhcnMnKTtcbiAgY29uc3Qgc3RhcnREYXRlID0gb3B0aW9ucy5zdGFydERhdGUgfHwgZGVmYXVsdFN0YXJ0TW9tZW50LnRvRGF0ZSgpO1xuICBjb25zdCBzdGFydE1vbWVudCA9IG1vbWVudC5tYXgoc3RhcnRNb21lbnRMaW1pdCwgbW9tZW50KHN0YXJ0RGF0ZSkpO1xuICBjb25zdCBhbGxNb250aHMgPSBnZXRBbGxNb250aE1vbWVudHMoc3RhcnRNb21lbnQsIGZ1dHVyZU1vbnRoc1RvU2NyYXBlKTtcblxuICBhd2FpdCBsb2FkQ2F0ZWdvcmllcyhwYWdlKTtcblxuICBsZXQgYWxsUmVzdWx0czogUmVjb3JkPHN0cmluZywgVHJhbnNhY3Rpb25bXT4gPSB7fTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBhbGxNb250aHMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBmZXRjaFRyYW5zYWN0aW9uc0Zvck1vbnRoKHBhZ2UsIGFsbE1vbnRoc1tpXSwgb3B0aW9ucyk7XG4gICAgYWxsUmVzdWx0cyA9IGFkZFJlc3VsdChhbGxSZXN1bHRzLCByZXN1bHQpO1xuICB9XG5cbiAgT2JqZWN0LmtleXMoYWxsUmVzdWx0cykuZm9yRWFjaChhY2NvdW50TnVtYmVyID0+IHtcbiAgICBsZXQgdHhucyA9IGFsbFJlc3VsdHNbYWNjb3VudE51bWJlcl07XG4gICAgdHhucyA9IHByZXBhcmVUcmFuc2FjdGlvbnMoXG4gICAgICB0eG5zLFxuICAgICAgc3RhcnRNb21lbnQsXG4gICAgICBvcHRpb25zLmNvbWJpbmVJbnN0YWxsbWVudHMgfHwgZmFsc2UsXG4gICAgICBvcHRpb25zLm91dHB1dERhdGE/LmVuYWJsZVRyYW5zYWN0aW9uc0ZpbHRlckJ5RGF0ZSA/PyB0cnVlLFxuICAgICk7XG4gICAgYWxsUmVzdWx0c1thY2NvdW50TnVtYmVyXSA9IHR4bnM7XG4gIH0pO1xuXG4gIHJldHVybiBhbGxSZXN1bHRzO1xufVxuXG5mdW5jdGlvbiBnZXRQb3NzaWJsZUxvZ2luUmVzdWx0cyhwYWdlOiBQYWdlKTogUG9zc2libGVMb2dpblJlc3VsdHMge1xuICBjb25zdCB1cmxzOiBQb3NzaWJsZUxvZ2luUmVzdWx0cyA9IHt9O1xuICB1cmxzW0xvZ2luUmVzdWx0cy5TdWNjZXNzXSA9IFtTVUNDRVNTX1VSTF07XG4gIHVybHNbTG9naW5SZXN1bHRzLkNoYW5nZVBhc3N3b3JkXSA9IFtQQVNTV09SRF9FWFBJUkVEX1VSTF07XG4gIHVybHNbTG9naW5SZXN1bHRzLkludmFsaWRQYXNzd29yZF0gPSBbXG4gICAgYXN5bmMgKCkgPT4ge1xuICAgICAgcmV0dXJuIGVsZW1lbnRQcmVzZW50T25QYWdlKHBhZ2UsIElOVkFMSURfREVUQUlMU19TRUxFQ1RPUik7XG4gICAgfSxcbiAgXTtcbiAgdXJsc1tMb2dpblJlc3VsdHMuVW5rbm93bkVycm9yXSA9IFtcbiAgICBhc3luYyAoKSA9PiB7XG4gICAgICByZXR1cm4gZWxlbWVudFByZXNlbnRPblBhZ2UocGFnZSwgTE9HSU5fRVJST1JfU0VMRUNUT1IpO1xuICAgIH0sXG4gIF07XG4gIHJldHVybiB1cmxzO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVMb2dpbkZpZWxkcyhjcmVkZW50aWFsczogU2NyYXBlclNwZWNpZmljQ3JlZGVudGlhbHMpIHtcbiAgcmV0dXJuIFtcbiAgICB7IHNlbGVjdG9yOiAnI3VzZXItbmFtZScsIHZhbHVlOiBjcmVkZW50aWFscy51c2VybmFtZSB9LFxuICAgIHsgc2VsZWN0b3I6ICcjcGFzc3dvcmQnLCB2YWx1ZTogY3JlZGVudGlhbHMucGFzc3dvcmQgfSxcbiAgXTtcbn1cblxudHlwZSBTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscyA9IHsgdXNlcm5hbWU6IHN0cmluZzsgcGFzc3dvcmQ6IHN0cmluZyB9O1xuXG5jbGFzcyBNYXhTY3JhcGVyIGV4dGVuZHMgQmFzZVNjcmFwZXJXaXRoQnJvd3NlcjxTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscz4ge1xuICBnZXRMb2dpbk9wdGlvbnMoY3JlZGVudGlhbHM6IFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzKTogTG9naW5PcHRpb25zIHtcbiAgICByZXR1cm4ge1xuICAgICAgbG9naW5Vcmw6IExPR0lOX1VSTCxcbiAgICAgIGZpZWxkczogY3JlYXRlTG9naW5GaWVsZHMoY3JlZGVudGlhbHMpLFxuICAgICAgc3VibWl0QnV0dG9uU2VsZWN0b3I6ICdhcHAtdXNlci1sb2dpbi1mb3JtIC5nZW5lcmFsLWJ1dHRvbi5zZW5kLW1lLWNvZGUnLFxuICAgICAgcHJlQWN0aW9uOiBhc3luYyAoKSA9PiB7XG4gICAgICAgIGlmIChhd2FpdCBlbGVtZW50UHJlc2VudE9uUGFnZSh0aGlzLnBhZ2UsICcjY2xvc2VQb3B1cCcpKSB7XG4gICAgICAgICAgYXdhaXQgY2xpY2tCdXR0b24odGhpcy5wYWdlLCAnI2Nsb3NlUG9wdXAnKTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCBjbGlja0J1dHRvbih0aGlzLnBhZ2UsICcucGVyc29uYWwtYXJlYSA+IGEuZ28tdG8tcGVyc29uYWwtYXJlYScpO1xuICAgICAgICBpZiAoYXdhaXQgZWxlbWVudFByZXNlbnRPblBhZ2UodGhpcy5wYWdlLCAnLmxvZ2luLWxpbmsjcHJpdmF0ZScpKSB7XG4gICAgICAgICAgYXdhaXQgY2xpY2tCdXR0b24odGhpcy5wYWdlLCAnLmxvZ2luLWxpbmsjcHJpdmF0ZScpO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IHdhaXRVbnRpbEVsZW1lbnRGb3VuZCh0aGlzLnBhZ2UsICcjbG9naW4tcGFzc3dvcmQtbGluaycsIHRydWUpO1xuICAgICAgICBhd2FpdCBjbGlja0J1dHRvbih0aGlzLnBhZ2UsICcjbG9naW4tcGFzc3dvcmQtbGluaycpO1xuICAgICAgICBhd2FpdCB3YWl0VW50aWxFbGVtZW50Rm91bmQodGhpcy5wYWdlLCAnI2xvZ2luLXBhc3N3b3JkLnRhYi1wYW5lLmFjdGl2ZSBhcHAtdXNlci1sb2dpbi1mb3JtJywgdHJ1ZSk7XG4gICAgICB9LFxuICAgICAgY2hlY2tSZWFkaW5lc3M6IGFzeW5jICgpID0+IHtcbiAgICAgICAgYXdhaXQgd2FpdFVudGlsRWxlbWVudEZvdW5kKHRoaXMucGFnZSwgJy5wZXJzb25hbC1hcmVhID4gYS5nby10by1wZXJzb25hbC1hcmVhJywgdHJ1ZSk7XG4gICAgICB9LFxuICAgICAgcG9zdEFjdGlvbjogYXN5bmMgKCkgPT4gcmVkaXJlY3RPckRpYWxvZyh0aGlzLnBhZ2UpLFxuICAgICAgcG9zc2libGVSZXN1bHRzOiBnZXRQb3NzaWJsZUxvZ2luUmVzdWx0cyh0aGlzLnBhZ2UpLFxuICAgICAgd2FpdFVudGlsOiAnZG9tY29udGVudGxvYWRlZCcsXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIGZldGNoRGF0YSgpIHtcbiAgICBjb25zdCByZXN1bHRzID0gYXdhaXQgZmV0Y2hUcmFuc2FjdGlvbnModGhpcy5wYWdlLCB0aGlzLm9wdGlvbnMpO1xuICAgIGNvbnN0IGFjY291bnRzID0gT2JqZWN0LmtleXMocmVzdWx0cykubWFwKGFjY291bnROdW1iZXIgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYWNjb3VudE51bWJlcixcbiAgICAgICAgdHhuczogcmVzdWx0c1thY2NvdW50TnVtYmVyXSxcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgc3VjY2VzczogdHJ1ZSxcbiAgICAgIGFjY291bnRzLFxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgTWF4U2NyYXBlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLElBQUFBLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FB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
@@ -119,11 +119,11 @@ function createHeadersFromRequest(request) {
119
119
  'Content-Type': request.headers()['content-type']
120
120
  };
121
121
  }
122
- async function convertTransactions(txns, getMoreDetails, pendingIfTodayTransaction = false) {
122
+ async function convertTransactions(txns, getMoreDetails, pendingIfTodayTransaction = false, options) {
123
123
  return Promise.all(txns.map(async row => {
124
124
  const moreDetails = await getMoreDetails(row);
125
125
  const txnDate = (0, _moment.default)(row.MC02PeulaTaaEZ, _moment.default.HTML5_FMT.DATETIME_LOCAL_SECONDS).toISOString();
126
- return {
126
+ const result = {
127
127
  type: _transactions.TransactionTypes.Normal,
128
128
  identifier: row.MC02AsmahtaMekoritEZ ? parseInt(row.MC02AsmahtaMekoritEZ, 10) : undefined,
129
129
  date: txnDate,
@@ -135,6 +135,10 @@ async function convertTransactions(txns, getMoreDetails, pendingIfTodayTransacti
135
135
  memo: moreDetails?.memo,
136
136
  status: pendingIfTodayTransaction && row.IsTodayTransaction ? _transactions.TransactionStatuses.Pending : _transactions.TransactionStatuses.Completed
137
137
  };
138
+ if (options?.includeRawTransaction) {
139
+ result.rawTransaction = row;
140
+ }
141
+ return result;
138
142
  }));
139
143
  }
140
144
  async function extractPendingTransactions(page) {
@@ -233,7 +237,7 @@ class MizrahiScraper extends _baseScraperWithBrowser.BaseScraperWithBrowser {
233
237
  const oshTxn = await convertTransactions(relevantRows, this.options.additionalTransactionInformation ? row => getExtraTransactionDetails(this.page, row, apiHeaders) : () => Promise.resolve({
234
238
  entries: {},
235
239
  memo: undefined
236
- }), this.options.optInFeatures?.includes('mizrahi:pendingIfTodayTransaction'));
240
+ }), this.options.optInFeatures?.includes('mizrahi:pendingIfTodayTransaction'), this.options);
237
241
  oshTxn.filter(txn => this.shouldMarkAsPending(txn)).forEach(txn => {
238
242
  txn.status = _transactions.TransactionStatuses.Pending;
239
243
  });
@@ -262,4 +266,4 @@ class MizrahiScraper extends _baseScraperWithBrowser.BaseScraperWithBrowser {
262
266
  }
263
267
  }
264
268
  var _default = exports.default = MizrahiScraper;
265
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbW9tZW50IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfY29uc3RhbnRzIiwiX2VsZW1lbnRzSW50ZXJhY3Rpb25zIiwiX2ZldGNoIiwiX25hdmlnYXRpb24iLCJfdHJhbnNhY3Rpb25zIiwiX2Jhc2VTY3JhcGVyV2l0aEJyb3dzZXIiLCJfZXJyb3JzIiwiX2RlYnVnIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiZGVidWciLCJnZXREZWJ1ZyIsIkJBU0VfV0VCU0lURV9VUkwiLCJMT0dJTl9VUkwiLCJCQVNFX0FQUF9VUkwiLCJBRlRFUl9MT0dJTl9CQVNFX1VSTCIsIk9TSF9QQUdFIiwiVFJBTlNBQ1RJT05TX1BBR0UiLCJUUkFOU0FDVElPTlNfUkVRVUVTVF9VUkxTIiwiUEVORElOR19UUkFOU0FDVElPTlNfUEFHRSIsIlBFTkRJTkdfVFJBTlNBQ1RJT05TX0lGUkFNRSIsIk1PUkVfREVUQUlMU19VUkwiLCJDSEFOR0VfUEFTU1dPUkRfVVJMIiwiREFURV9GT1JNQVQiLCJNQVhfUk9XU19QRVJfUkVRVUVTVCIsInVzZXJuYW1lU2VsZWN0b3IiLCJwYXNzd29yZFNlbGVjdG9yIiwic3VibWl0QnV0dG9uU2VsZWN0b3IiLCJpbnZhbGlkUGFzc3dvcmRTZWxlY3RvciIsImFmdGVyTG9naW5TZWxlY3RvciIsImxvZ2luU3Bpbm5lclNlbGVjdG9yIiwiYWNjb3VudERyb3BEb3duSXRlbVNlbGVjdG9yIiwicGVuZGluZ1RyeElkZW50aWZpZXJJZCIsImNoZWNraW5nQWNjb3VudFRhYkhlYnJld05hbWUiLCJjaGVja2luZ0FjY291bnRUYWJFbmdsaXNoTmFtZSIsImdlbmVyaWNEZXNjcmlwdGlvbnMiLCJjcmVhdGVMb2dpbkZpZWxkcyIsImNyZWRlbnRpYWxzIiwic2VsZWN0b3IiLCJ2YWx1ZSIsInVzZXJuYW1lIiwicGFzc3dvcmQiLCJpc0xvZ2dlZEluIiwib3B0aW9ucyIsInBhZ2UiLCJvc2hYUGF0aCIsIm9zaFRhYiIsIiQkIiwibGVuZ3RoIiwiZ2V0UG9zc2libGVMb2dpblJlc3VsdHMiLCJMb2dpblJlc3VsdHMiLCJTdWNjZXNzIiwiSW52YWxpZFBhc3N3b3JkIiwiJCIsIkNoYW5nZVBhc3N3b3JkIiwiZ2V0U3RhcnRNb21lbnQiLCJvcHRpb25zU3RhcnREYXRlIiwiZGVmYXVsdFN0YXJ0TW9tZW50IiwibW9tZW50Iiwic3VidHJhY3QiLCJzdGFydERhdGUiLCJ0b0RhdGUiLCJtYXgiLCJnZXRFeHRyYVRyYW5zYWN0aW9uRGV0YWlscyIsIml0ZW0iLCJhcGlIZWFkZXJzIiwiTUMwMlNob3dEZXRhaWxzRVoiLCJ0YXJQZXVsYSIsIk1DMDJQZXVsYVRhYUVaIiwidGFyRXJlY2giLCJNQzAyRXJlaFRhYUVaIiwicGFyYW1zIiwiaW5Lb2RHb3JlbSIsIk1DMDJLb2RHb3JlbUVaIiwiaW5Bc21hY2h0YSIsIk1DMDJBc21haHRhTWVrb3JpdEVaIiwiaW5TY2h1bSIsIk1DMDJTY2h1bUVaIiwiaW5OYWt2YW5pdCIsImluU3VnVG51YSIsIk1DMDJTdWdUbnVhS2FzcGl0RVoiLCJpbkFnaWQiLCJNQzAyQWdpZEVaIiwiaW5UYXJQZXVsYUZvcm1hdHRlZCIsImZvcm1hdCIsImluVGFyRXJlY2hGb3JtYXR0ZWQiLCJ5ZWFyIiwiaW5Lb2ROb3NlIiwiTUMwMlNlaWZNYXJhbEVaIiwiaW5Lb2RUYXROb3NlIiwiTUMwMk5vc2VNYXJhbEVaIiwiaW5UcmFuc2FjdGlvbk51bWJlciIsIlRyYW5zYWN0aW9uTnVtYmVyIiwicmVzcG9uc2UiLCJmZXRjaFBvc3RXaXRoaW5QYWdlIiwiZGV0YWlscyIsImJvZHkiLCJmaWVsZHMiLCJSZWNvcmRzIiwiRmllbGRzIiwiQXJyYXkiLCJpc0FycmF5IiwiZW50cmllcyIsIm1hcCIsInJlY29yZCIsIkxhYmVsIiwidHJpbSIsIlZhbHVlIiwiT2JqZWN0IiwiZnJvbUVudHJpZXMiLCJtZW1vIiwiZmlsdGVyIiwibGFiZWwiLCJzb21lIiwia2V5Iiwic3RhcnRzV2l0aCIsImpvaW4iLCJlcnJvciIsInVuZGVmaW5lZCIsImNyZWF0ZURhdGFGcm9tUmVxdWVzdCIsInJlcXVlc3QiLCJkYXRhIiwiSlNPTiIsInBhcnNlIiwicG9zdERhdGEiLCJpbkZyb21EYXRlIiwiaW5Ub0RhdGUiLCJ0YWJsZSIsIm1heFJvdyIsImNyZWF0ZUhlYWRlcnNGcm9tUmVxdWVzdCIsIm1penJhaGl4c3JmdG9rZW4iLCJoZWFkZXJzIiwiY29udmVydFRyYW5zYWN0aW9ucyIsInR4bnMiLCJnZXRNb3JlRGV0YWlscyIsInBlbmRpbmdJZlRvZGF5VHJhbnNhY3Rpb24iLCJQcm9taXNlIiwiYWxsIiwicm93IiwibW9yZURldGFpbHMiLCJ0eG5EYXRlIiwiSFRNTDVfRk1UIiwiREFURVRJTUVfTE9DQUxfU0VDT05EUyIsInRvSVNPU3RyaW5nIiwidHlwZSIsIlRyYW5zYWN0aW9uVHlwZXMiLCJOb3JtYWwiLCJpZGVudGlmaWVyIiwicGFyc2VJbnQiLCJkYXRlIiwicHJvY2Vzc2VkRGF0ZSIsIm9yaWdpbmFsQW1vdW50Iiwib3JpZ2luYWxDdXJyZW5jeSIsIlNIRUtFTF9DVVJSRU5DWSIsImNoYXJnZWRBbW91bnQiLCJkZXNjcmlwdGlvbiIsIk1DMDJUbnVhVGV1ckVaIiwic3RhdHVzIiwiSXNUb2RheVRyYW5zYWN0aW9uIiwiVHJhbnNhY3Rpb25TdGF0dXNlcyIsIlBlbmRpbmciLCJDb21wbGV0ZWQiLCJleHRyYWN0UGVuZGluZ1RyYW5zYWN0aW9ucyIsInBlbmRpbmdUeG4iLCJwYWdlRXZhbEFsbCIsInRycyIsInRyIiwiZnJvbSIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJ0ZCIsInRleHRDb250ZW50IiwiZGF0ZVN0ciIsImluY29tZUFtb3VudFN0ciIsImFtb3VudFN0ciIsImFtb3VudCIsInBhcnNlRmxvYXQiLCJyZXBsYWNlQWxsIiwidHhuIiwicG9zdExvZ2luIiwicmFjZSIsIndhaXRVbnRpbEVsZW1lbnRGb3VuZCIsIndhaXRGb3JVcmwiLCJNaXpyYWhpU2NyYXBlciIsIkJhc2VTY3JhcGVyV2l0aEJyb3dzZXIiLCJnZXRMb2dpbk9wdGlvbnMiLCJsb2dpblVybCIsImNoZWNrUmVhZGluZXNzIiwid2FpdFVudGlsRWxlbWVudERpc2FwcGVhciIsInBvc3RBY3Rpb24iLCJwb3NzaWJsZVJlc3VsdHMiLCJmZXRjaERhdGEiLCIkZXZhbCIsImVsIiwiY2xpY2siLCJudW1PZkFjY291bnRzIiwicmVzdWx0cyIsImkiLCJwdXNoIiwiZmV0Y2hBY2NvdW50Iiwic3VjY2VzcyIsImFjY291bnRzIiwiZXJyb3JUeXBlIiwiU2NyYXBlckVycm9yVHlwZXMiLCJHZW5lcmljIiwiZXJyb3JNZXNzYWdlIiwibWVzc2FnZSIsImdldFBlbmRpbmdUcmFuc2FjdGlvbnMiLCJmcmFtZSIsIndhaXRVbnRpbElmcmFtZUZvdW5kIiwiZiIsInVybCIsImluY2x1ZGVzIiwiaXNQZW5kaW5nIiwidGhlbiIsImNhdGNoIiwid2FpdEZvclNlbGVjdG9yIiwiYWNjb3VudE51bWJlckVsZW1lbnQiLCJhY2NvdW50TnVtYmVySGFuZGxlIiwiZ2V0UHJvcGVydHkiLCJhY2NvdW50TnVtYmVyIiwianNvblZhbHVlIiwiRXJyb3IiLCJhbnkiLCJ3YWl0Rm9yUmVxdWVzdCIsImhlYWRlciIsIm1lc3NhZ2VzIiwidGV4dCIsInJlbGV2YW50Um93cyIsInJvd3MiLCJSZWNUeXBlU3BlY2lmaWVkIiwib3NoVHhuIiwiYWRkaXRpb25hbFRyYW5zYWN0aW9uSW5mb3JtYXRpb24iLCJyZXNvbHZlIiwib3B0SW5GZWF0dXJlcyIsInNob3VsZE1hcmtBc1BlbmRpbmciLCJmb3JFYWNoIiwic3RhcnRNb21lbnQiLCJvc2hUeG5BZnRlclN0YXJ0RGF0ZSIsImlzU2FtZU9yQWZ0ZXIiLCJhbGxUeG4iLCJjb25jYXQiLCJiYWxhbmNlIiwiWWl0cmEiLCJfZGVmYXVsdCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc2NyYXBlcnMvbWl6cmFoaS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyB0eXBlIEZyYW1lLCB0eXBlIEhUVFBSZXF1ZXN0LCB0eXBlIFBhZ2UgfSBmcm9tICdwdXBwZXRlZXItY29yZSc7XG5pbXBvcnQgeyBTSEVLRUxfQ1VSUkVOQ1kgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHtcbiAgcGFnZUV2YWxBbGwsXG4gIHdhaXRVbnRpbEVsZW1lbnREaXNhcHBlYXIsXG4gIHdhaXRVbnRpbEVsZW1lbnRGb3VuZCxcbiAgd2FpdFVudGlsSWZyYW1lRm91bmQsXG59IGZyb20gJy4uL2hlbHBlcnMvZWxlbWVudHMtaW50ZXJhY3Rpb25zJztcbmltcG9ydCB7IGZldGNoUG9zdFdpdGhpblBhZ2UgfSBmcm9tICcuLi9oZWxwZXJzL2ZldGNoJztcbmltcG9ydCB7IHdhaXRGb3JVcmwgfSBmcm9tICcuLi9oZWxwZXJzL25hdmlnYXRpb24nO1xuaW1wb3J0IHsgdHlwZSBUcmFuc2FjdGlvbiwgVHJhbnNhY3Rpb25TdGF0dXNlcywgVHJhbnNhY3Rpb25UeXBlcywgdHlwZSBUcmFuc2FjdGlvbnNBY2NvdW50IH0gZnJvbSAnLi4vdHJhbnNhY3Rpb25zJztcbmltcG9ydCB7IEJhc2VTY3JhcGVyV2l0aEJyb3dzZXIsIExvZ2luUmVzdWx0cywgdHlwZSBQb3NzaWJsZUxvZ2luUmVzdWx0cyB9IGZyb20gJy4vYmFzZS1zY3JhcGVyLXdpdGgtYnJvd3Nlcic7XG5pbXBvcnQgeyBTY3JhcGVyRXJyb3JUeXBlcyB9IGZyb20gJy4vZXJyb3JzJztcbmltcG9ydCB7IGdldERlYnVnIH0gZnJvbSAnLi4vaGVscGVycy9kZWJ1Zyc7XG5cbmNvbnN0IGRlYnVnID0gZ2V0RGVidWcoJ21penJhaGknKTtcblxuaW50ZXJmYWNlIFNjcmFwZWRUcmFuc2FjdGlvbiB7XG4gIFJlY1R5cGVTcGVjaWZpZWQ6IGJvb2xlYW47XG4gIE1DMDJQZXVsYVRhYUVaOiBzdHJpbmc7XG4gIE1DMDJTY2h1bUVaOiBudW1iZXI7XG4gIE1DMDJBc21haHRhTWVrb3JpdEVaOiBzdHJpbmc7XG4gIE1DMDJUbnVhVGV1ckVaOiBzdHJpbmc7XG4gIElzVG9kYXlUcmFuc2FjdGlvbjogYm9vbGVhbjtcbiAgTUMwMkVyZWhUYWFFWjogc3RyaW5nO1xuICBNQzAyU2hvd0RldGFpbHNFWj86IHN0cmluZztcbiAgTUMwMktvZEdvcmVtRVo6IGFueTtcbiAgTUMwMlN1Z1RudWFLYXNwaXRFWjogYW55O1xuICBNQzAyQWdpZEVaOiBhbnk7XG4gIE1DMDJTZWlmTWFyYWxFWjogYW55O1xuICBNQzAyTm9zZU1hcmFsRVo6IGFueTtcbiAgVHJhbnNhY3Rpb25OdW1iZXI6IGFueTtcbn1cblxuaW50ZXJmYWNlIFNjcmFwZWRUcmFuc2FjdGlvbnNSZXN1bHQge1xuICBoZWFkZXI6IHtcbiAgICBzdWNjZXNzOiBib29sZWFuO1xuICAgIG1lc3NhZ2VzOiB7IHRleHQ6IHN0cmluZyB9W107XG4gIH07XG4gIGJvZHk6IHtcbiAgICBmaWVsZHM6IHtcbiAgICAgIFlpdHJhOiBzdHJpbmc7XG4gICAgfTtcbiAgICB0YWJsZToge1xuICAgICAgcm93czogU2NyYXBlZFRyYW5zYWN0aW9uW107XG4gICAgfTtcbiAgfTtcbn1cblxudHlwZSBNb3JlRGV0YWlsc1Jlc3BvbnNlID0ge1xuICBib2R5OiB7XG4gICAgZmllbGRzOiBbXG4gICAgICBbXG4gICAgICAgIHtcbiAgICAgICAgICBSZWNvcmRzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIEZpZWxkczogQXJyYXk8e1xuICAgICAgICAgICAgICAgIExhYmVsOiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgVmFsdWU6IHN0cmluZztcbiAgICAgICAgICAgICAgfT47XG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF07XG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIF07XG4gIH07XG59O1xuXG50eXBlIE1vcmVEZXRhaWxzID0ge1xuICBlbnRyaWVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICBtZW1vOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59O1xuXG5jb25zdCBCQVNFX1dFQlNJVEVfVVJMID0gJ2h0dHBzOi8vd3d3Lm1penJhaGktdGVmYWhvdC5jby5pbCc7XG5jb25zdCBMT0dJTl9VUkwgPSBgJHtCQVNFX1dFQlNJVEVfVVJMfS9sb2dpbi9pbmRleC5odG1sIy9hdXRoLXBhZ2UtaGVgO1xuY29uc3QgQkFTRV9BUFBfVVJMID0gJ2h0dHBzOi8vbXRvLm1penJhaGktdGVmYWhvdC5jby5pbCc7XG5jb25zdCBBRlRFUl9MT0dJTl9CQVNFX1VSTCA9IC9odHRwczpcXC9cXC9tdG9cXC5taXpyYWhpLXRlZmFob3RcXC5jb1xcLmlsXFwvT25saW5lQXBwXFwvLiovO1xuY29uc3QgT1NIX1BBR0UgPSAnL29zaC9sZWdhY3kvbGVnYWN5LU9zaC1NYWluJztcbmNvbnN0IFRSQU5TQUNUSU9OU19QQUdFID0gJy9vc2gvbGVnYWN5L3Jvb3QtbWFpbi1vc2gtcDQyOE5ldyc7XG5jb25zdCBUUkFOU0FDVElPTlNfUkVRVUVTVF9VUkxTID0gW1xuICBgJHtCQVNFX0FQUF9VUkx9L09ubGluZVBpbG90L2FwaS9Ta3lPU0gvZ2V0NDI4SW5kZXhgLFxuICBgJHtCQVNFX0FQUF9VUkx9L09ubGluZS9hcGkvU2t5T1NIL2dldDQyOEluZGV4YCxcbl07XG5jb25zdCBQRU5ESU5HX1RSQU5TQUNUSU9OU19QQUdFID0gJy9vc2gvbGVnYWN5L2xlZ2FjeS1Pc2gtcDQyMCc7XG5jb25zdCBQRU5ESU5HX1RSQU5TQUNUSU9OU19JRlJBTUUgPSAncDQyMC5hc3B4JztcbmNvbnN0IE1PUkVfREVUQUlMU19VUkwgPSBgJHtCQVNFX0FQUF9VUkx9L09ubGluZS9hcGkvT1NIL2dldE1haGVyQmVydXJpbVNNRmA7XG5jb25zdCBDSEFOR0VfUEFTU1dPUkRfVVJMID0gL2h0dHBzOlxcL1xcL3d3d1xcLm1penJhaGktdGVmYWhvdFxcLmNvXFwuaWxcXC9sb2dpblxcL2luZGV4XFwuaHRtbCNcXC9jaGFuZ2UtcGFzcy87XG5jb25zdCBEQVRFX0ZPUk1BVCA9ICdERC9NTS9ZWVlZJztcbmNvbnN0IE1BWF9ST1dTX1BFUl9SRVFVRVNUID0gMTAwMDAwMDAwMDA7XG5cbmNvbnN0IHVzZXJuYW1lU2VsZWN0b3IgPSAnI3VzZXJOdW1iZXJEZXNrdG9wSGViJztcbmNvbnN0IHBhc3N3b3JkU2VsZWN0b3IgPSAnI3Bhc3N3b3JkRGVza3RvcEhlYic7XG5jb25zdCBzdWJtaXRCdXR0b25TZWxlY3RvciA9ICdidXR0b24uYnRuLmJ0bi1wcmltYXJ5JztcbmNvbnN0IGludmFsaWRQYXNzd29yZFNlbGVjdG9yID0gJ2FbaHJlZio9XCJodHRwczovL3NjLm1penJhaGktdGVmYWhvdC5jby5pbC9TQ1NlcnZpY2VzL1NDL1AwMTAuYXNweFwiXSc7XG5jb25zdCBhZnRlckxvZ2luU2VsZWN0b3IgPSAnI2Ryb3Bkb3duQmFzaWMnO1xuY29uc3QgbG9naW5TcGlubmVyU2VsZWN0b3IgPSAnZGl2Lm5neC1vdmVybGF5LmxvYWRpbmctZm9yZWdyb3VuZCc7XG5jb25zdCBhY2NvdW50RHJvcERvd25JdGVtU2VsZWN0b3IgPSAnI0FjY291bnRQaWNrZXIgLml0ZW0nO1xuY29uc3QgcGVuZGluZ1RyeElkZW50aWZpZXJJZCA9ICcjY3RsMDBfQ29udGVudFBsYWNlSG9sZGVyMl9wYW5lbDEnO1xuY29uc3QgY2hlY2tpbmdBY2NvdW50VGFiSGVicmV3TmFtZSA9ICfXoteV15HXqCDXldep15EnO1xuY29uc3QgY2hlY2tpbmdBY2NvdW50VGFiRW5nbGlzaE5hbWUgPSAnQ2hlY2tpbmcgQWNjb3VudCc7XG5jb25zdCBnZW5lcmljRGVzY3JpcHRpb25zID0gWyfXlNei15HXqNeqINeZ15XXntefINec15HXoNenINeW16gg157Xodeg15nXoyDXlteoJ107XG5cbmZ1bmN0aW9uIGNyZWF0ZUxvZ2luRmllbGRzKGNyZWRlbnRpYWxzOiBTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscykge1xuICByZXR1cm4gW1xuICAgIHsgc2VsZWN0b3I6IHVzZXJuYW1lU2VsZWN0b3IsIHZhbHVlOiBjcmVkZW50aWFscy51c2VybmFtZSB9LFxuICAgIHsgc2VsZWN0b3I6IHBhc3N3b3JkU2VsZWN0b3IsIHZhbHVlOiBjcmVkZW50aWFscy5wYXNzd29yZCB9LFxuICBdO1xufVxuXG5hc3luYyBmdW5jdGlvbiBpc0xvZ2dlZEluKG9wdGlvbnM6IHsgcGFnZT86IFBhZ2UgfCB1bmRlZmluZWQgfSB8IHVuZGVmaW5lZCkge1xuICBpZiAoIW9wdGlvbnM/LnBhZ2UpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgY29uc3Qgb3NoWFBhdGggPSBgLy9hLy9zcGFuW2NvbnRhaW5zKC4sIFwiJHtjaGVja2luZ0FjY291bnRUYWJIZWJyZXdOYW1lfVwiKSBvciBjb250YWlucyguLCBcIiR7Y2hlY2tpbmdBY2NvdW50VGFiRW5nbGlzaE5hbWV9XCIpXWA7XG4gIGNvbnN0IG9zaFRhYiA9IGF3YWl0IG9wdGlvbnMucGFnZS4kJChgeHBhdGgke29zaFhQYXRofWApO1xuICByZXR1cm4gb3NoVGFiLmxlbmd0aCA+IDA7XG59XG5cbmZ1bmN0aW9uIGdldFBvc3NpYmxlTG9naW5SZXN1bHRzKHBhZ2U6IFBhZ2UpOiBQb3NzaWJsZUxvZ2luUmVzdWx0cyB7XG4gIHJldHVybiB7XG4gICAgW0xvZ2luUmVzdWx0cy5TdWNjZXNzXTogW0FGVEVSX0xPR0lOX0JBU0VfVVJMLCBpc0xvZ2dlZEluXSxcbiAgICBbTG9naW5SZXN1bHRzLkludmFsaWRQYXNzd29yZF06IFthc3luYyAoKSA9PiAhIShhd2FpdCBwYWdlLiQoaW52YWxpZFBhc3N3b3JkU2VsZWN0b3IpKV0sXG4gICAgW0xvZ2luUmVzdWx0cy5DaGFuZ2VQYXNzd29yZF06IFtDSEFOR0VfUEFTU1dPUkRfVVJMXSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0U3RhcnRNb21lbnQob3B0aW9uc1N0YXJ0RGF0ZTogRGF0ZSkge1xuICBjb25zdCBkZWZhdWx0U3RhcnRNb21lbnQgPSBtb21lbnQoKS5zdWJ0cmFjdCgxLCAneWVhcnMnKTtcbiAgY29uc3Qgc3RhcnREYXRlID0gb3B0aW9uc1N0YXJ0RGF0ZSB8fCBkZWZhdWx0U3RhcnRNb21lbnQudG9EYXRlKCk7XG4gIHJldHVybiBtb21lbnQubWF4KGRlZmF1bHRTdGFydE1vbWVudCwgbW9tZW50KHN0YXJ0RGF0ZSkpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRFeHRyYVRyYW5zYWN0aW9uRGV0YWlscyhcbiAgcGFnZTogUGFnZSxcbiAgaXRlbTogU2NyYXBlZFRyYW5zYWN0aW9uLFxuICBhcGlIZWFkZXJzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LFxuKTogUHJvbWlzZTxNb3JlRGV0YWlscz4ge1xuICB0cnkge1xuICAgIGRlYnVnKCdnZXRFeHRyYVRyYW5zYWN0aW9uRGV0YWlscyBmb3IgaXRlbTonLCBpdGVtKTtcbiAgICBpZiAoaXRlbS5NQzAyU2hvd0RldGFpbHNFWiA9PT0gJzEnKSB7XG4gICAgICBjb25zdCB0YXJQZXVsYSA9IG1vbWVudChpdGVtLk1DMDJQZXVsYVRhYUVaKTtcbiAgICAgIGNvbnN0IHRhckVyZWNoID0gbW9tZW50KGl0ZW0uTUMwMkVyZWhUYWFFWik7XG5cbiAgICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgICAgaW5Lb2RHb3JlbTogaXRlbS5NQzAyS29kR29yZW1FWixcbiAgICAgICAgaW5Bc21hY2h0YTogaXRlbS5NQzAyQXNtYWh0YU1la29yaXRFWixcbiAgICAgICAgaW5TY2h1bTogaXRlbS5NQzAyU2NodW1FWixcbiAgICAgICAgaW5OYWt2YW5pdDogaXRlbS5NQzAyS29kR29yZW1FWixcbiAgICAgICAgaW5TdWdUbnVhOiBpdGVtLk1DMDJTdWdUbnVhS2FzcGl0RVosXG4gICAgICAgIGluQWdpZDogaXRlbS5NQzAyQWdpZEVaLFxuICAgICAgICBpblRhclBldWxhRm9ybWF0dGVkOiB0YXJQZXVsYS5mb3JtYXQoREFURV9GT1JNQVQpLFxuICAgICAgICBpblRhckVyZWNoRm9ybWF0dGVkOiAodGFyRXJlY2gueWVhcigpID4gMjAwMCA/IHRhckVyZWNoIDogdGFyUGV1bGEpLmZvcm1hdChEQVRFX0ZPUk1BVCksXG4gICAgICAgIGluS29kTm9zZTogaXRlbS5NQzAyU2VpZk1hcmFsRVosXG4gICAgICAgIGluS29kVGF0Tm9zZTogaXRlbS5NQzAyTm9zZU1hcmFsRVosXG4gICAgICAgIGluVHJhbnNhY3Rpb25OdW1iZXI6IGl0ZW0uVHJhbnNhY3Rpb25OdW1iZXIsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoUG9zdFdpdGhpblBhZ2U8TW9yZURldGFpbHNSZXNwb25zZT4ocGFnZSwgTU9SRV9ERVRBSUxTX1VSTCwgcGFyYW1zLCBhcGlIZWFkZXJzKTtcbiAgICAgIGNvbnN0IGRldGFpbHMgPSByZXNwb25zZT8uYm9keS5maWVsZHM/LlswXT8uWzBdPy5SZWNvcmRzPy5bMF0uRmllbGRzO1xuICAgICAgZGVidWcoJ2ZldGNoIGRldGFpbHMgZm9yJywgcGFyYW1zLCAnZGV0YWlsczonLCBkZXRhaWxzKTtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGRldGFpbHMpICYmIGRldGFpbHMubGVuZ3RoID4gMCkge1xuICAgICAgICBjb25zdCBlbnRyaWVzID0gZGV0YWlscy5tYXAocmVjb3JkID0+IFtyZWNvcmQuTGFiZWwudHJpbSgpLCByZWNvcmQuVmFsdWUudHJpbSgpXSk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZW50cmllczogT2JqZWN0LmZyb21FbnRyaWVzKGVudHJpZXMpLFxuICAgICAgICAgIG1lbW86IGVudHJpZXNcbiAgICAgICAgICAgIC5maWx0ZXIoKFtsYWJlbF0pID0+IFsn16nXnScsICfXnteU15XXqicsICfXl9ep15HXldefJ10uc29tZShrZXkgPT4gbGFiZWwuc3RhcnRzV2l0aChrZXkpKSlcbiAgICAgICAgICAgIC5tYXAoKFtsYWJlbCwgdmFsdWVdKSA9PiBgJHtsYWJlbH0gJHt2YWx1ZX1gKVxuICAgICAgICAgICAgLmpvaW4oJywgJyksXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGRlYnVnKCdFcnJvciBmZXRjaGluZyBleHRyYSB0cmFuc2FjdGlvbiBkZXRhaWxzOicsIGVycm9yKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgZW50cmllczoge30sXG4gICAgbWVtbzogdW5kZWZpbmVkLFxuICB9O1xufVxuXG5mdW5jdGlvbiBjcmVhdGVEYXRhRnJvbVJlcXVlc3QocmVxdWVzdDogSFRUUFJlcXVlc3QsIG9wdGlvbnNTdGFydERhdGU6IERhdGUpIHtcbiAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2UocmVxdWVzdC5wb3N0RGF0YSgpIHx8ICd7fScpO1xuXG4gIGRhdGEuaW5Gcm9tRGF0ZSA9IGdldFN0YXJ0TW9tZW50KG9wdGlvbnNTdGFydERhdGUpLmZvcm1hdChEQVRFX0ZPUk1BVCk7XG4gIGRhdGEuaW5Ub0RhdGUgPSBtb21lbnQoKS5mb3JtYXQoREFURV9GT1JNQVQpO1xuICBkYXRhLnRhYmxlLm1heFJvdyA9IE1BWF9ST1dTX1BFUl9SRVFVRVNUO1xuXG4gIHJldHVybiBkYXRhO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVIZWFkZXJzRnJvbVJlcXVlc3QocmVxdWVzdDogSFRUUFJlcXVlc3QpIHtcbiAgcmV0dXJuIHtcbiAgICBtaXpyYWhpeHNyZnRva2VuOiByZXF1ZXN0LmhlYWRlcnMoKS5taXpyYWhpeHNyZnRva2VuLFxuICAgICdDb250ZW50LVR5cGUnOiByZXF1ZXN0LmhlYWRlcnMoKVsnY29udGVudC10eXBlJ10sXG4gIH07XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGNvbnZlcnRUcmFuc2FjdGlvbnMoXG4gIHR4bnM6IFNjcmFwZWRUcmFuc2FjdGlvbltdLFxuICBnZXRNb3JlRGV0YWlsczogKHJvdzogU2NyYXBlZFRyYW5zYWN0aW9uKSA9PiBQcm9taXNlPE1vcmVEZXRhaWxzPixcbiAgcGVuZGluZ0lmVG9kYXlUcmFuc2FjdGlvbjogYm9vbGVhbiA9IGZhbHNlLFxuKTogUHJvbWlzZTxUcmFuc2FjdGlvbltdPiB7XG4gIHJldHVybiBQcm9taXNlLmFsbChcbiAgICB0eG5zLm1hcChhc3luYyByb3cgPT4ge1xuICAgICAgY29uc3QgbW9yZURldGFpbHMgPSBhd2FpdCBnZXRNb3JlRGV0YWlscyhyb3cpO1xuXG4gICAgICBjb25zdCB0eG5EYXRlID0gbW9tZW50KHJvdy5NQzAyUGV1bGFUYWFFWiwgbW9tZW50LkhUTUw1X0ZNVC5EQVRFVElNRV9MT0NBTF9TRUNPTkRTKS50b0lTT1N0cmluZygpO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiBUcmFuc2FjdGlvblR5cGVzLk5vcm1hbCxcbiAgICAgICAgaWRlbnRpZmllcjogcm93Lk1DMDJBc21haHRhTWVrb3JpdEVaID8gcGFyc2VJbnQocm93Lk1DMDJBc21haHRhTWVrb3JpdEVaLCAxMCkgOiB1bmRlZmluZWQsXG4gICAgICAgIGRhdGU6IHR4bkRhdGUsXG4gICAgICAgIHByb2Nlc3NlZERhdGU6IHR4bkRhdGUsXG4gICAgICAgIG9yaWdpbmFsQW1vdW50OiByb3cuTUMwMlNjaHVtRVosXG4gICAgICAgIG9yaWdpbmFsQ3VycmVuY3k6IFNIRUtFTF9DVVJSRU5DWSxcbiAgICAgICAgY2hhcmdlZEFtb3VudDogcm93Lk1DMDJTY2h1bUVaLFxuICAgICAgICBkZXNjcmlwdGlvbjogcm93Lk1DMDJUbnVhVGV1ckVaLFxuICAgICAgICBtZW1vOiBtb3JlRGV0YWlscz8ubWVtbyxcbiAgICAgICAgc3RhdHVzOlxuICAgICAgICAgIHBlbmRpbmdJZlRvZGF5VHJhbnNhY3Rpb24gJiYgcm93LklzVG9kYXlUcmFuc2FjdGlvblxuICAgICAgICAgICAgPyBUcmFuc2FjdGlvblN0YXR1c2VzLlBlbmRpbmdcbiAgICAgICAgICAgIDogVHJhbnNhY3Rpb25TdGF0dXNlcy5Db21wbGV0ZWQsXG4gICAgICB9O1xuICAgIH0pLFxuICApO1xufVxuXG5hc3luYyBmdW5jdGlvbiBleHRyYWN0UGVuZGluZ1RyYW5zYWN0aW9ucyhwYWdlOiBGcmFtZSk6IFByb21pc2U8VHJhbnNhY3Rpb25bXT4ge1xuICBjb25zdCBwZW5kaW5nVHhuID0gYXdhaXQgcGFnZUV2YWxBbGwocGFnZSwgJ3RyLnJnUm93LCB0ci5yZ0FsdFJvdycsIFtdLCB0cnMgPT4ge1xuICAgIHJldHVybiB0cnMubWFwKHRyID0+IEFycmF5LmZyb20odHIucXVlcnlTZWxlY3RvckFsbCgndGQnKSwgdGQgPT4gdGQudGV4dENvbnRlbnQgfHwgJycpKTtcbiAgfSk7XG5cbiAgcmV0dXJuIHBlbmRpbmdUeG5cbiAgICAubWFwKChbZGF0ZVN0ciwgZGVzY3JpcHRpb24sIGluY29tZUFtb3VudFN0ciwgYW1vdW50U3RyXSkgPT4gKHtcbiAgICAgIGRhdGU6IG1vbWVudChkYXRlU3RyLCAnREQvTU0vWVknKS50b0lTT1N0cmluZygpLFxuICAgICAgYW1vdW50OiBwYXJzZUZsb2F0KGFtb3VudFN0ci5yZXBsYWNlQWxsKCcsJywgJycpKSxcbiAgICAgIGRlc2NyaXB0aW9uLFxuICAgICAgaW5jb21lQW1vdW50U3RyLCAvLyBUT0RPOiBoYW5kbGUgaW5jb21lQW1vdW50U3RyIG9uY2Ugd2Uga25vdyB0aGUgc2lnbiBvZiBpdFxuICAgIH0pKVxuICAgIC5maWx0ZXIodHhuID0+IHR4bi5kYXRlKVxuICAgIC5tYXAoKHsgZGF0ZSwgZGVzY3JpcHRpb24sIGFtb3VudCB9KSA9PiAoe1xuICAgICAgdHlwZTogVHJhbnNhY3Rpb25UeXBlcy5Ob3JtYWwsXG4gICAgICBkYXRlLFxuICAgICAgcHJvY2Vzc2VkRGF0ZTogZGF0ZSxcbiAgICAgIG9yaWdpbmFsQW1vdW50OiBhbW91bnQsXG4gICAgICBvcmlnaW5hbEN1cnJlbmN5OiBTSEVLRUxfQ1VSUkVOQ1ksXG4gICAgICBjaGFyZ2VkQW1vdW50OiBhbW91bnQsXG4gICAgICBkZXNjcmlwdGlvbixcbiAgICAgIHN0YXR1czogVHJhbnNhY3Rpb25TdGF0dXNlcy5QZW5kaW5nLFxuICAgIH0pKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcG9zdExvZ2luKHBhZ2U6IFBhZ2UpIHtcbiAgYXdhaXQgUHJvbWlzZS5yYWNlKFtcbiAgICB3YWl0VW50aWxFbGVtZW50Rm91bmQocGFnZSwgYWZ0ZXJMb2dpblNlbGVjdG9yKSxcbiAgICB3YWl0VW50aWxFbGVtZW50Rm91bmQocGFnZSwgaW52YWxpZFBhc3N3b3JkU2VsZWN0b3IpLFxuICAgIHdhaXRGb3JVcmwocGFnZSwgQ0hBTkdFX1BBU1NXT1JEX1VSTCksXG4gIF0pO1xufVxuXG50eXBlIFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzID0geyB1c2VybmFtZTogc3RyaW5nOyBwYXNzd29yZDogc3RyaW5nIH07XG5cbmNsYXNzIE1penJhaGlTY3JhcGVyIGV4dGVuZHMgQmFzZVNjcmFwZXJXaXRoQnJvd3NlcjxTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscz4ge1xuICBnZXRMb2dpbk9wdGlvbnMoY3JlZGVudGlhbHM6IFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxvZ2luVXJsOiBMT0dJTl9VUkwsXG4gICAgICBmaWVsZHM6IGNyZWF0ZUxvZ2luRmllbGRzKGNyZWRlbnRpYWxzKSxcbiAgICAgIHN1Ym1pdEJ1dHRvblNlbGVjdG9yLFxuICAgICAgY2hlY2tSZWFkaW5lc3M6IGFzeW5jICgpID0+IHdhaXRVbnRpbEVsZW1lbnREaXNhcHBlYXIodGhpcy5wYWdlLCBsb2dpblNwaW5uZXJTZWxlY3RvciksXG4gICAgICBwb3N0QWN0aW9uOiBhc3luYyAoKSA9PiBwb3N0TG9naW4odGhpcy5wYWdlKSxcbiAgICAgIHBvc3NpYmxlUmVzdWx0czogZ2V0UG9zc2libGVMb2dpblJlc3VsdHModGhpcy5wYWdlKSxcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgZmV0Y2hEYXRhKCkge1xuICAgIGF3YWl0IHRoaXMucGFnZS4kZXZhbCgnI2Ryb3Bkb3duQmFzaWMsIC5pdGVtJywgZWwgPT4gKGVsIGFzIEhUTUxFbGVtZW50KS5jbGljaygpKTtcblxuICAgIGNvbnN0IG51bU9mQWNjb3VudHMgPSAoYXdhaXQgdGhpcy5wYWdlLiQkKGFjY291bnREcm9wRG93bkl0ZW1TZWxlY3RvcikpLmxlbmd0aDtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXN1bHRzOiBUcmFuc2FjdGlvbnNBY2NvdW50W10gPSBbXTtcblxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBudW1PZkFjY291bnRzOyBpICs9IDEpIHtcbiAgICAgICAgaWYgKGkgPiAwKSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5wYWdlLiRldmFsKCcjZHJvcGRvd25CYXNpYywgLml0ZW0nLCBlbCA9PiAoZWwgYXMgSFRNTEVsZW1lbnQpLmNsaWNrKCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgYXdhaXQgdGhpcy5wYWdlLiRldmFsKGAke2FjY291bnREcm9wRG93bkl0ZW1TZWxlY3Rvcn06bnRoLWNoaWxkKCR7aSArIDF9KWAsIGVsID0+IChlbCBhcyBIVE1MRWxlbWVudCkuY2xpY2soKSk7XG4gICAgICAgIHJlc3VsdHMucHVzaChhd2FpdCB0aGlzLmZldGNoQWNjb3VudCgpKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc3VjY2VzczogdHJ1ZSxcbiAgICAgICAgYWNjb3VudHM6IHJlc3VsdHMsXG4gICAgICB9O1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgICBlcnJvclR5cGU6IFNjcmFwZXJFcnJvclR5cGVzLkdlbmVyaWMsXG4gICAgICAgIGVycm9yTWVzc2FnZTogKGUgYXMgRXJyb3IpLm1lc3NhZ2UsXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2V0UGVuZGluZ1RyYW5zYWN0aW9ucygpOiBQcm9taXNlPFRyYW5zYWN0aW9uW10+IHtcbiAgICBhd2FpdCB0aGlzLnBhZ2UuJGV2YWwoYGFbaHJlZio9XCIke1BFTkRJTkdfVFJBTlNBQ1RJT05TX1BBR0V9XCJdYCwgZWwgPT4gKGVsIGFzIEhUTUxFbGVtZW50KS5jbGljaygpKTtcbiAgICBjb25zdCBmcmFtZSA9IGF3YWl0IHdhaXRVbnRpbElmcmFtZUZvdW5kKHRoaXMucGFnZSwgZiA9PiBmLnVybCgpLmluY2x1ZGVzKFBFTkRJTkdfVFJBTlNBQ1RJT05TX0lGUkFNRSkpO1xuICAgIGNvbnN0IGlzUGVuZGluZyA9IGF3YWl0IHdhaXRVbnRpbEVsZW1lbnRGb3VuZChmcmFtZSwgcGVuZGluZ1RyeElkZW50aWZpZXJJZClcbiAgICAgIC50aGVuKCgpID0+IHRydWUpXG4gICAgICAuY2F0Y2goKCkgPT4gZmFsc2UpO1xuICAgIGlmICghaXNQZW5kaW5nKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgY29uc3QgcGVuZGluZ1R4biA9IGF3YWl0IGV4dHJhY3RQZW5kaW5nVHJhbnNhY3Rpb25zKGZyYW1lKTtcbiAgICByZXR1cm4gcGVuZGluZ1R4bjtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZmV0Y2hBY2NvdW50KCkge1xuICAgIGF3YWl0IHRoaXMucGFnZS53YWl0Rm9yU2VsZWN0b3IoYGFbaHJlZio9XCIke09TSF9QQUdFfVwiXWApO1xuICAgIGF3YWl0IHRoaXMucGFnZS4kZXZhbChgYVtocmVmKj1cIiR7T1NIX1BBR0V9XCJdYCwgZWwgPT4gKGVsIGFzIEhUTUxFbGVtZW50KS5jbGljaygpKTtcbiAgICBhd2FpdCB3YWl0VW50aWxFbGVtZW50Rm91bmQodGhpcy5wYWdlLCBgYVtocmVmKj1cIiR7VFJBTlNBQ1RJT05TX1BBR0V9XCJdYCk7XG4gICAgYXdhaXQgdGhpcy5wYWdlLiRldmFsKGBhW2hyZWYqPVwiJHtUUkFOU0FDVElPTlNfUEFHRX1cIl1gLCBlbCA9PiAoZWwgYXMgSFRNTEVsZW1lbnQpLmNsaWNrKCkpO1xuXG4gICAgY29uc3QgYWNjb3VudE51bWJlckVsZW1lbnQgPSBhd2FpdCB0aGlzLnBhZ2UuJCgnI2Ryb3Bkb3duQmFzaWMgYiBzcGFuJyk7XG4gICAgY29uc3QgYWNjb3VudE51bWJlckhhbmRsZSA9IGF3YWl0IGFjY291bnROdW1iZXJFbGVtZW50Py5nZXRQcm9wZXJ0eSgndGl0bGUnKTtcbiAgICBjb25zdCBhY2NvdW50TnVtYmVyID0gKGF3YWl0IGFjY291bnROdW1iZXJIYW5kbGU/Lmpzb25WYWx1ZSgpKSBhcyBzdHJpbmc7XG4gICAgaWYgKCFhY2NvdW50TnVtYmVyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0FjY291bnQgbnVtYmVyIG5vdCBmb3VuZCcpO1xuICAgIH1cblxuICAgIGNvbnN0IFtyZXNwb25zZSwgYXBpSGVhZGVyc10gPSBhd2FpdCBQcm9taXNlLmFueShcbiAgICAgIFRSQU5TQUNUSU9OU19SRVFVRVNUX1VSTFMubWFwKGFzeW5jIHVybCA9PiB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSBhd2FpdCB0aGlzLnBhZ2Uud2FpdEZvclJlcXVlc3QodXJsKTtcbiAgICAgICAgY29uc3QgZGF0YSA9IGNyZWF0ZURhdGFGcm9tUmVxdWVzdChyZXF1ZXN0LCB0aGlzLm9wdGlvbnMuc3RhcnREYXRlKTtcbiAgICAgICAgY29uc3QgaGVhZGVycyA9IGNyZWF0ZUhlYWRlcnNGcm9tUmVxdWVzdChyZXF1ZXN0KTtcblxuICAgICAgICByZXR1cm4gW2F3YWl0IGZldGNoUG9zdFdpdGhpblBhZ2U8U2NyYXBlZFRyYW5zYWN0aW9uc1Jlc3VsdD4odGhpcy5wYWdlLCB1cmwsIGRhdGEsIGhlYWRlcnMpLCBoZWFkZXJzXSBhcyBjb25zdDtcbiAgICAgIH0pLFxuICAgICk7XG5cbiAgICBpZiAoIXJlc3BvbnNlIHx8IHJlc3BvbnNlLmhlYWRlci5zdWNjZXNzID09PSBmYWxzZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgRXJyb3IgZmV0Y2hpbmcgdHJhbnNhY3Rpb24uIFJlc3BvbnNlIG1lc3NhZ2U6ICR7cmVzcG9uc2UgPyByZXNwb25zZS5oZWFkZXIubWVzc2FnZXNbMF0udGV4dCA6ICcnfWAsXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IHJlbGV2YW50Um93cyA9IHJlc3BvbnNlLmJvZHkudGFibGUucm93cy5maWx0ZXIocm93ID0+IHJvdy5SZWNUeXBlU3BlY2lmaWVkKTtcbiAgICBjb25zdCBvc2hUeG4gPSBhd2FpdCBjb252ZXJ0VHJhbnNhY3Rpb25zKFxuICAgICAgcmVsZXZhbnRSb3dzLFxuICAgICAgdGhpcy5vcHRpb25zLmFkZGl0aW9uYWxUcmFuc2FjdGlvbkluZm9ybWF0aW9uXG4gICAgICAgID8gcm93ID0+IGdldEV4dHJhVHJhbnNhY3Rpb25EZXRhaWxzKHRoaXMucGFnZSwgcm93LCBhcGlIZWFkZXJzKVxuICAgICAgICA6ICgpID0+IFByb21pc2UucmVzb2x2ZSh7IGVudHJpZXM6IHt9LCBtZW1vOiB1bmRlZmluZWQgfSksXG4gICAgICB0aGlzLm9wdGlvbnMub3B0SW5GZWF0dXJlcz8uaW5jbHVkZXMoJ21penJhaGk6cGVuZGluZ0lmVG9kYXlUcmFuc2FjdGlvbicpLFxuICAgICk7XG5cbiAgICBvc2hUeG5cbiAgICAgIC5maWx0ZXIodHhuID0+IHRoaXMuc2hvdWxkTWFya0FzUGVuZGluZyh0eG4pKVxuICAgICAgLmZvckVhY2godHhuID0+IHtcbiAgICAgICAgdHhuLnN0YXR1cyA9IFRyYW5zYWN0aW9uU3RhdHVzZXMuUGVuZGluZztcbiAgICAgIH0pO1xuXG4gICAgLy8gd29ya2Fyb3VuZCBmb3IgYSBidWcgd2hpY2ggdGhlIGJhbmsncyBBUEkgcmV0dXJucyB0cmFuc2FjdGlvbnMgYmVmb3JlIHRoZSByZXF1ZXN0ZWQgc3RhcnQgZGF0ZVxuICAgIGNvbnN0IHN0YXJ0TW9tZW50ID0gZ2V0U3RhcnRNb21lbnQodGhpcy5vcHRpb25zLnN0YXJ0RGF0ZSk7XG4gICAgY29uc3Qgb3NoVHhuQWZ0ZXJTdGFydERhdGUgPSBvc2hUeG4uZmlsdGVyKHR4biA9PiBtb21lbnQodHhuLmRhdGUpLmlzU2FtZU9yQWZ0ZXIoc3RhcnRNb21lbnQpKTtcblxuICAgIGNvbnN0IHBlbmRpbmdUeG4gPSBhd2FpdCB0aGlzLmdldFBlbmRpbmdUcmFuc2FjdGlvbnMoKTtcbiAgICBjb25zdCBhbGxUeG4gPSBvc2hUeG5BZnRlclN0YXJ0RGF0ZS5jb25jYXQocGVuZGluZ1R4bik7XG5cbiAgICByZXR1cm4ge1xuICAgICAgYWNjb3VudE51bWJlcixcbiAgICAgIHR4bnM6IGFsbFR4bixcbiAgICAgIGJhbGFuY2U6ICtyZXNwb25zZS5ib2R5LmZpZWxkcz8uWWl0cmEsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgc2hvdWxkTWFya0FzUGVuZGluZyh0eG46IFRyYW5zYWN0aW9uKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMub3B0aW9ucy5vcHRJbkZlYXR1cmVzPy5pbmNsdWRlcygnbWl6cmFoaTpwZW5kaW5nSWZOb0lkZW50aWZpZXInKSAmJiAhdHhuLmlkZW50aWZpZXIpIHtcbiAgICAgIGRlYnVnKGBNYXJraW5nIHRyYW5zYWN0aW9uICcke3R4bi5kZXNjcmlwdGlvbn0nIGFzIHBlbmRpbmcgZHVlIHRvIG5vIGlkZW50aWZpZXIuYCk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICB0aGlzLm9wdGlvbnMub3B0SW5GZWF0dXJlcz8uaW5jbHVkZXMoJ21penJhaGk6cGVuZGluZ0lmSGFzR2VuZXJpY0Rlc2NyaXB0aW9uJykgJiZcbiAgICAgIGdlbmVyaWNEZXNjcmlwdGlvbnMuaW5jbHVkZXModHhuLmRlc2NyaXB0aW9uKVxuICAgICkge1xuICAgICAgZGVidWcoYE1hcmtpbmcgdHJhbnNhY3Rpb24gJyR7dHhuLmRlc2NyaXB0aW9ufScgYXMgcGVuZGluZyBkdWUgdG8gZ2VuZXJpYyBkZXNjcmlwdGlvbi5gKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBNaXpyYWhpU2NyYXBlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsT0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUMsVUFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUscUJBQUEsR0FBQUYsT0FBQTtBQU1BLElBQUFHLE1BQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLFdBQUEsR0FB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
269
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbW9tZW50IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfY29uc3RhbnRzIiwiX2VsZW1lbnRzSW50ZXJhY3Rpb25zIiwiX2ZldGNoIiwiX25hdmlnYXRpb24iLCJfdHJhbnNhY3Rpb25zIiwiX2Jhc2VTY3JhcGVyV2l0aEJyb3dzZXIiLCJfZXJyb3JzIiwiX2RlYnVnIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiZGVidWciLCJnZXREZWJ1ZyIsIkJBU0VfV0VCU0lURV9VUkwiLCJMT0dJTl9VUkwiLCJCQVNFX0FQUF9VUkwiLCJBRlRFUl9MT0dJTl9CQVNFX1VSTCIsIk9TSF9QQUdFIiwiVFJBTlNBQ1RJT05TX1BBR0UiLCJUUkFOU0FDVElPTlNfUkVRVUVTVF9VUkxTIiwiUEVORElOR19UUkFOU0FDVElPTlNfUEFHRSIsIlBFTkRJTkdfVFJBTlNBQ1RJT05TX0lGUkFNRSIsIk1PUkVfREVUQUlMU19VUkwiLCJDSEFOR0VfUEFTU1dPUkRfVVJMIiwiREFURV9GT1JNQVQiLCJNQVhfUk9XU19QRVJfUkVRVUVTVCIsInVzZXJuYW1lU2VsZWN0b3IiLCJwYXNzd29yZFNlbGVjdG9yIiwic3VibWl0QnV0dG9uU2VsZWN0b3IiLCJpbnZhbGlkUGFzc3dvcmRTZWxlY3RvciIsImFmdGVyTG9naW5TZWxlY3RvciIsImxvZ2luU3Bpbm5lclNlbGVjdG9yIiwiYWNjb3VudERyb3BEb3duSXRlbVNlbGVjdG9yIiwicGVuZGluZ1RyeElkZW50aWZpZXJJZCIsImNoZWNraW5nQWNjb3VudFRhYkhlYnJld05hbWUiLCJjaGVja2luZ0FjY291bnRUYWJFbmdsaXNoTmFtZSIsImdlbmVyaWNEZXNjcmlwdGlvbnMiLCJjcmVhdGVMb2dpbkZpZWxkcyIsImNyZWRlbnRpYWxzIiwic2VsZWN0b3IiLCJ2YWx1ZSIsInVzZXJuYW1lIiwicGFzc3dvcmQiLCJpc0xvZ2dlZEluIiwib3B0aW9ucyIsInBhZ2UiLCJvc2hYUGF0aCIsIm9zaFRhYiIsIiQkIiwibGVuZ3RoIiwiZ2V0UG9zc2libGVMb2dpblJlc3VsdHMiLCJMb2dpblJlc3VsdHMiLCJTdWNjZXNzIiwiSW52YWxpZFBhc3N3b3JkIiwiJCIsIkNoYW5nZVBhc3N3b3JkIiwiZ2V0U3RhcnRNb21lbnQiLCJvcHRpb25zU3RhcnREYXRlIiwiZGVmYXVsdFN0YXJ0TW9tZW50IiwibW9tZW50Iiwic3VidHJhY3QiLCJzdGFydERhdGUiLCJ0b0RhdGUiLCJtYXgiLCJnZXRFeHRyYVRyYW5zYWN0aW9uRGV0YWlscyIsIml0ZW0iLCJhcGlIZWFkZXJzIiwiTUMwMlNob3dEZXRhaWxzRVoiLCJ0YXJQZXVsYSIsIk1DMDJQZXVsYVRhYUVaIiwidGFyRXJlY2giLCJNQzAyRXJlaFRhYUVaIiwicGFyYW1zIiwiaW5Lb2RHb3JlbSIsIk1DMDJLb2RHb3JlbUVaIiwiaW5Bc21hY2h0YSIsIk1DMDJBc21haHRhTWVrb3JpdEVaIiwiaW5TY2h1bSIsIk1DMDJTY2h1bUVaIiwiaW5OYWt2YW5pdCIsImluU3VnVG51YSIsIk1DMDJTdWdUbnVhS2FzcGl0RVoiLCJpbkFnaWQiLCJNQzAyQWdpZEVaIiwiaW5UYXJQZXVsYUZvcm1hdHRlZCIsImZvcm1hdCIsImluVGFyRXJlY2hGb3JtYXR0ZWQiLCJ5ZWFyIiwiaW5Lb2ROb3NlIiwiTUMwMlNlaWZNYXJhbEVaIiwiaW5Lb2RUYXROb3NlIiwiTUMwMk5vc2VNYXJhbEVaIiwiaW5UcmFuc2FjdGlvbk51bWJlciIsIlRyYW5zYWN0aW9uTnVtYmVyIiwicmVzcG9uc2UiLCJmZXRjaFBvc3RXaXRoaW5QYWdlIiwiZGV0YWlscyIsImJvZHkiLCJmaWVsZHMiLCJSZWNvcmRzIiwiRmllbGRzIiwiQXJyYXkiLCJpc0FycmF5IiwiZW50cmllcyIsIm1hcCIsInJlY29yZCIsIkxhYmVsIiwidHJpbSIsIlZhbHVlIiwiT2JqZWN0IiwiZnJvbUVudHJpZXMiLCJtZW1vIiwiZmlsdGVyIiwibGFiZWwiLCJzb21lIiwia2V5Iiwic3RhcnRzV2l0aCIsImpvaW4iLCJlcnJvciIsInVuZGVmaW5lZCIsImNyZWF0ZURhdGFGcm9tUmVxdWVzdCIsInJlcXVlc3QiLCJkYXRhIiwiSlNPTiIsInBhcnNlIiwicG9zdERhdGEiLCJpbkZyb21EYXRlIiwiaW5Ub0RhdGUiLCJ0YWJsZSIsIm1heFJvdyIsImNyZWF0ZUhlYWRlcnNGcm9tUmVxdWVzdCIsIm1penJhaGl4c3JmdG9rZW4iLCJoZWFkZXJzIiwiY29udmVydFRyYW5zYWN0aW9ucyIsInR4bnMiLCJnZXRNb3JlRGV0YWlscyIsInBlbmRpbmdJZlRvZGF5VHJhbnNhY3Rpb24iLCJQcm9taXNlIiwiYWxsIiwicm93IiwibW9yZURldGFpbHMiLCJ0eG5EYXRlIiwiSFRNTDVfRk1UIiwiREFURVRJTUVfTE9DQUxfU0VDT05EUyIsInRvSVNPU3RyaW5nIiwicmVzdWx0IiwidHlwZSIsIlRyYW5zYWN0aW9uVHlwZXMiLCJOb3JtYWwiLCJpZGVudGlmaWVyIiwicGFyc2VJbnQiLCJkYXRlIiwicHJvY2Vzc2VkRGF0ZSIsIm9yaWdpbmFsQW1vdW50Iiwib3JpZ2luYWxDdXJyZW5jeSIsIlNIRUtFTF9DVVJSRU5DWSIsImNoYXJnZWRBbW91bnQiLCJkZXNjcmlwdGlvbiIsIk1DMDJUbnVhVGV1ckVaIiwic3RhdHVzIiwiSXNUb2RheVRyYW5zYWN0aW9uIiwiVHJhbnNhY3Rpb25TdGF0dXNlcyIsIlBlbmRpbmciLCJDb21wbGV0ZWQiLCJpbmNsdWRlUmF3VHJhbnNhY3Rpb24iLCJyYXdUcmFuc2FjdGlvbiIsImV4dHJhY3RQZW5kaW5nVHJhbnNhY3Rpb25zIiwicGVuZGluZ1R4biIsInBhZ2VFdmFsQWxsIiwidHJzIiwidHIiLCJmcm9tIiwicXVlcnlTZWxlY3RvckFsbCIsInRkIiwidGV4dENvbnRlbnQiLCJkYXRlU3RyIiwiaW5jb21lQW1vdW50U3RyIiwiYW1vdW50U3RyIiwiYW1vdW50IiwicGFyc2VGbG9hdCIsInJlcGxhY2VBbGwiLCJ0eG4iLCJwb3N0TG9naW4iLCJyYWNlIiwid2FpdFVudGlsRWxlbWVudEZvdW5kIiwid2FpdEZvclVybCIsIk1penJhaGlTY3JhcGVyIiwiQmFzZVNjcmFwZXJXaXRoQnJvd3NlciIsImdldExvZ2luT3B0aW9ucyIsImxvZ2luVXJsIiwiY2hlY2tSZWFkaW5lc3MiLCJ3YWl0VW50aWxFbGVtZW50RGlzYXBwZWFyIiwicG9zdEFjdGlvbiIsInBvc3NpYmxlUmVzdWx0cyIsImZldGNoRGF0YSIsIiRldmFsIiwiZWwiLCJjbGljayIsIm51bU9mQWNjb3VudHMiLCJyZXN1bHRzIiwiaSIsInB1c2giLCJmZXRjaEFjY291bnQiLCJzdWNjZXNzIiwiYWNjb3VudHMiLCJlcnJvclR5cGUiLCJTY3JhcGVyRXJyb3JUeXBlcyIsIkdlbmVyaWMiLCJlcnJvck1lc3NhZ2UiLCJtZXNzYWdlIiwiZ2V0UGVuZGluZ1RyYW5zYWN0aW9ucyIsImZyYW1lIiwid2FpdFVudGlsSWZyYW1lRm91bmQiLCJmIiwidXJsIiwiaW5jbHVkZXMiLCJpc1BlbmRpbmciLCJ0aGVuIiwiY2F0Y2giLCJ3YWl0Rm9yU2VsZWN0b3IiLCJhY2NvdW50TnVtYmVyRWxlbWVudCIsImFjY291bnROdW1iZXJIYW5kbGUiLCJnZXRQcm9wZXJ0eSIsImFjY291bnROdW1iZXIiLCJqc29uVmFsdWUiLCJFcnJvciIsImFueSIsIndhaXRGb3JSZXF1ZXN0IiwiaGVhZGVyIiwibWVzc2FnZXMiLCJ0ZXh0IiwicmVsZXZhbnRSb3dzIiwicm93cyIsIlJlY1R5cGVTcGVjaWZpZWQiLCJvc2hUeG4iLCJhZGRpdGlvbmFsVHJhbnNhY3Rpb25JbmZvcm1hdGlvbiIsInJlc29sdmUiLCJvcHRJbkZlYXR1cmVzIiwic2hvdWxkTWFya0FzUGVuZGluZyIsImZvckVhY2giLCJzdGFydE1vbWVudCIsIm9zaFR4bkFmdGVyU3RhcnREYXRlIiwiaXNTYW1lT3JBZnRlciIsImFsbFR4biIsImNvbmNhdCIsImJhbGFuY2UiLCJZaXRyYSIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JhcGVycy9taXpyYWhpLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcbmltcG9ydCB7IHR5cGUgRnJhbWUsIHR5cGUgSFRUUFJlcXVlc3QsIHR5cGUgUGFnZSB9IGZyb20gJ3B1cHBldGVlci1jb3JlJztcbmltcG9ydCB7IFNIRUtFTF9DVVJSRU5DWSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQge1xuICBwYWdlRXZhbEFsbCxcbiAgd2FpdFVudGlsRWxlbWVudERpc2FwcGVhcixcbiAgd2FpdFVudGlsRWxlbWVudEZvdW5kLFxuICB3YWl0VW50aWxJZnJhbWVGb3VuZCxcbn0gZnJvbSAnLi4vaGVscGVycy9lbGVtZW50cy1pbnRlcmFjdGlvbnMnO1xuaW1wb3J0IHsgZmV0Y2hQb3N0V2l0aGluUGFnZSB9IGZyb20gJy4uL2hlbHBlcnMvZmV0Y2gnO1xuaW1wb3J0IHsgd2FpdEZvclVybCB9IGZyb20gJy4uL2hlbHBlcnMvbmF2aWdhdGlvbic7XG5pbXBvcnQgeyB0eXBlIFRyYW5zYWN0aW9uLCBUcmFuc2FjdGlvblN0YXR1c2VzLCBUcmFuc2FjdGlvblR5cGVzLCB0eXBlIFRyYW5zYWN0aW9uc0FjY291bnQgfSBmcm9tICcuLi90cmFuc2FjdGlvbnMnO1xuaW1wb3J0IHsgQmFzZVNjcmFwZXJXaXRoQnJvd3NlciwgTG9naW5SZXN1bHRzLCB0eXBlIFBvc3NpYmxlTG9naW5SZXN1bHRzIH0gZnJvbSAnLi9iYXNlLXNjcmFwZXItd2l0aC1icm93c2VyJztcbmltcG9ydCB7IFNjcmFwZXJFcnJvclR5cGVzIH0gZnJvbSAnLi9lcnJvcnMnO1xuaW1wb3J0IHsgZ2V0RGVidWcgfSBmcm9tICcuLi9oZWxwZXJzL2RlYnVnJztcbmltcG9ydCB7IHR5cGUgU2NyYXBlck9wdGlvbnMgfSBmcm9tICcuL2ludGVyZmFjZSc7XG5cbmNvbnN0IGRlYnVnID0gZ2V0RGVidWcoJ21penJhaGknKTtcblxuaW50ZXJmYWNlIFNjcmFwZWRUcmFuc2FjdGlvbiB7XG4gIFJlY1R5cGVTcGVjaWZpZWQ6IGJvb2xlYW47XG4gIE1DMDJQZXVsYVRhYUVaOiBzdHJpbmc7XG4gIE1DMDJTY2h1bUVaOiBudW1iZXI7XG4gIE1DMDJBc21haHRhTWVrb3JpdEVaOiBzdHJpbmc7XG4gIE1DMDJUbnVhVGV1ckVaOiBzdHJpbmc7XG4gIElzVG9kYXlUcmFuc2FjdGlvbjogYm9vbGVhbjtcbiAgTUMwMkVyZWhUYWFFWjogc3RyaW5nO1xuICBNQzAyU2hvd0RldGFpbHNFWj86IHN0cmluZztcbiAgTUMwMktvZEdvcmVtRVo6IGFueTtcbiAgTUMwMlN1Z1RudWFLYXNwaXRFWjogYW55O1xuICBNQzAyQWdpZEVaOiBhbnk7XG4gIE1DMDJTZWlmTWFyYWxFWjogYW55O1xuICBNQzAyTm9zZU1hcmFsRVo6IGFueTtcbiAgVHJhbnNhY3Rpb25OdW1iZXI6IGFueTtcbn1cblxuaW50ZXJmYWNlIFNjcmFwZWRUcmFuc2FjdGlvbnNSZXN1bHQge1xuICBoZWFkZXI6IHtcbiAgICBzdWNjZXNzOiBib29sZWFuO1xuICAgIG1lc3NhZ2VzOiB7IHRleHQ6IHN0cmluZyB9W107XG4gIH07XG4gIGJvZHk6IHtcbiAgICBmaWVsZHM6IHtcbiAgICAgIFlpdHJhOiBzdHJpbmc7XG4gICAgfTtcbiAgICB0YWJsZToge1xuICAgICAgcm93czogU2NyYXBlZFRyYW5zYWN0aW9uW107XG4gICAgfTtcbiAgfTtcbn1cblxudHlwZSBNb3JlRGV0YWlsc1Jlc3BvbnNlID0ge1xuICBib2R5OiB7XG4gICAgZmllbGRzOiBbXG4gICAgICBbXG4gICAgICAgIHtcbiAgICAgICAgICBSZWNvcmRzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIEZpZWxkczogQXJyYXk8e1xuICAgICAgICAgICAgICAgIExhYmVsOiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgVmFsdWU6IHN0cmluZztcbiAgICAgICAgICAgICAgfT47XG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF07XG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIF07XG4gIH07XG59O1xuXG50eXBlIE1vcmVEZXRhaWxzID0ge1xuICBlbnRyaWVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICBtZW1vOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59O1xuXG5jb25zdCBCQVNFX1dFQlNJVEVfVVJMID0gJ2h0dHBzOi8vd3d3Lm1penJhaGktdGVmYWhvdC5jby5pbCc7XG5jb25zdCBMT0dJTl9VUkwgPSBgJHtCQVNFX1dFQlNJVEVfVVJMfS9sb2dpbi9pbmRleC5odG1sIy9hdXRoLXBhZ2UtaGVgO1xuY29uc3QgQkFTRV9BUFBfVVJMID0gJ2h0dHBzOi8vbXRvLm1penJhaGktdGVmYWhvdC5jby5pbCc7XG5jb25zdCBBRlRFUl9MT0dJTl9CQVNFX1VSTCA9IC9odHRwczpcXC9cXC9tdG9cXC5taXpyYWhpLXRlZmFob3RcXC5jb1xcLmlsXFwvT25saW5lQXBwXFwvLiovO1xuY29uc3QgT1NIX1BBR0UgPSAnL29zaC9sZWdhY3kvbGVnYWN5LU9zaC1NYWluJztcbmNvbnN0IFRSQU5TQUNUSU9OU19QQUdFID0gJy9vc2gvbGVnYWN5L3Jvb3QtbWFpbi1vc2gtcDQyOE5ldyc7XG5jb25zdCBUUkFOU0FDVElPTlNfUkVRVUVTVF9VUkxTID0gW1xuICBgJHtCQVNFX0FQUF9VUkx9L09ubGluZVBpbG90L2FwaS9Ta3lPU0gvZ2V0NDI4SW5kZXhgLFxuICBgJHtCQVNFX0FQUF9VUkx9L09ubGluZS9hcGkvU2t5T1NIL2dldDQyOEluZGV4YCxcbl07XG5jb25zdCBQRU5ESU5HX1RSQU5TQUNUSU9OU19QQUdFID0gJy9vc2gvbGVnYWN5L2xlZ2FjeS1Pc2gtcDQyMCc7XG5jb25zdCBQRU5ESU5HX1RSQU5TQUNUSU9OU19JRlJBTUUgPSAncDQyMC5hc3B4JztcbmNvbnN0IE1PUkVfREVUQUlMU19VUkwgPSBgJHtCQVNFX0FQUF9VUkx9L09ubGluZS9hcGkvT1NIL2dldE1haGVyQmVydXJpbVNNRmA7XG5jb25zdCBDSEFOR0VfUEFTU1dPUkRfVVJMID0gL2h0dHBzOlxcL1xcL3d3d1xcLm1penJhaGktdGVmYWhvdFxcLmNvXFwuaWxcXC9sb2dpblxcL2luZGV4XFwuaHRtbCNcXC9jaGFuZ2UtcGFzcy87XG5jb25zdCBEQVRFX0ZPUk1BVCA9ICdERC9NTS9ZWVlZJztcbmNvbnN0IE1BWF9ST1dTX1BFUl9SRVFVRVNUID0gMTAwMDAwMDAwMDA7XG5cbmNvbnN0IHVzZXJuYW1lU2VsZWN0b3IgPSAnI3VzZXJOdW1iZXJEZXNrdG9wSGViJztcbmNvbnN0IHBhc3N3b3JkU2VsZWN0b3IgPSAnI3Bhc3N3b3JkRGVza3RvcEhlYic7XG5jb25zdCBzdWJtaXRCdXR0b25TZWxlY3RvciA9ICdidXR0b24uYnRuLmJ0bi1wcmltYXJ5JztcbmNvbnN0IGludmFsaWRQYXNzd29yZFNlbGVjdG9yID0gJ2FbaHJlZio9XCJodHRwczovL3NjLm1penJhaGktdGVmYWhvdC5jby5pbC9TQ1NlcnZpY2VzL1NDL1AwMTAuYXNweFwiXSc7XG5jb25zdCBhZnRlckxvZ2luU2VsZWN0b3IgPSAnI2Ryb3Bkb3duQmFzaWMnO1xuY29uc3QgbG9naW5TcGlubmVyU2VsZWN0b3IgPSAnZGl2Lm5neC1vdmVybGF5LmxvYWRpbmctZm9yZWdyb3VuZCc7XG5jb25zdCBhY2NvdW50RHJvcERvd25JdGVtU2VsZWN0b3IgPSAnI0FjY291bnRQaWNrZXIgLml0ZW0nO1xuY29uc3QgcGVuZGluZ1RyeElkZW50aWZpZXJJZCA9ICcjY3RsMDBfQ29udGVudFBsYWNlSG9sZGVyMl9wYW5lbDEnO1xuY29uc3QgY2hlY2tpbmdBY2NvdW50VGFiSGVicmV3TmFtZSA9ICfXoteV15HXqCDXldep15EnO1xuY29uc3QgY2hlY2tpbmdBY2NvdW50VGFiRW5nbGlzaE5hbWUgPSAnQ2hlY2tpbmcgQWNjb3VudCc7XG5jb25zdCBnZW5lcmljRGVzY3JpcHRpb25zID0gWyfXlNei15HXqNeqINeZ15XXntefINec15HXoNenINeW16gg157Xodeg15nXoyDXlteoJ107XG5cbmZ1bmN0aW9uIGNyZWF0ZUxvZ2luRmllbGRzKGNyZWRlbnRpYWxzOiBTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscykge1xuICByZXR1cm4gW1xuICAgIHsgc2VsZWN0b3I6IHVzZXJuYW1lU2VsZWN0b3IsIHZhbHVlOiBjcmVkZW50aWFscy51c2VybmFtZSB9LFxuICAgIHsgc2VsZWN0b3I6IHBhc3N3b3JkU2VsZWN0b3IsIHZhbHVlOiBjcmVkZW50aWFscy5wYXNzd29yZCB9LFxuICBdO1xufVxuXG5hc3luYyBmdW5jdGlvbiBpc0xvZ2dlZEluKG9wdGlvbnM6IHsgcGFnZT86IFBhZ2UgfCB1bmRlZmluZWQgfSB8IHVuZGVmaW5lZCkge1xuICBpZiAoIW9wdGlvbnM/LnBhZ2UpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgY29uc3Qgb3NoWFBhdGggPSBgLy9hLy9zcGFuW2NvbnRhaW5zKC4sIFwiJHtjaGVja2luZ0FjY291bnRUYWJIZWJyZXdOYW1lfVwiKSBvciBjb250YWlucyguLCBcIiR7Y2hlY2tpbmdBY2NvdW50VGFiRW5nbGlzaE5hbWV9XCIpXWA7XG4gIGNvbnN0IG9zaFRhYiA9IGF3YWl0IG9wdGlvbnMucGFnZS4kJChgeHBhdGgke29zaFhQYXRofWApO1xuICByZXR1cm4gb3NoVGFiLmxlbmd0aCA+IDA7XG59XG5cbmZ1bmN0aW9uIGdldFBvc3NpYmxlTG9naW5SZXN1bHRzKHBhZ2U6IFBhZ2UpOiBQb3NzaWJsZUxvZ2luUmVzdWx0cyB7XG4gIHJldHVybiB7XG4gICAgW0xvZ2luUmVzdWx0cy5TdWNjZXNzXTogW0FGVEVSX0xPR0lOX0JBU0VfVVJMLCBpc0xvZ2dlZEluXSxcbiAgICBbTG9naW5SZXN1bHRzLkludmFsaWRQYXNzd29yZF06IFthc3luYyAoKSA9PiAhIShhd2FpdCBwYWdlLiQoaW52YWxpZFBhc3N3b3JkU2VsZWN0b3IpKV0sXG4gICAgW0xvZ2luUmVzdWx0cy5DaGFuZ2VQYXNzd29yZF06IFtDSEFOR0VfUEFTU1dPUkRfVVJMXSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0U3RhcnRNb21lbnQob3B0aW9uc1N0YXJ0RGF0ZTogRGF0ZSkge1xuICBjb25zdCBkZWZhdWx0U3RhcnRNb21lbnQgPSBtb21lbnQoKS5zdWJ0cmFjdCgxLCAneWVhcnMnKTtcbiAgY29uc3Qgc3RhcnREYXRlID0gb3B0aW9uc1N0YXJ0RGF0ZSB8fCBkZWZhdWx0U3RhcnRNb21lbnQudG9EYXRlKCk7XG4gIHJldHVybiBtb21lbnQubWF4KGRlZmF1bHRTdGFydE1vbWVudCwgbW9tZW50KHN0YXJ0RGF0ZSkpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRFeHRyYVRyYW5zYWN0aW9uRGV0YWlscyhcbiAgcGFnZTogUGFnZSxcbiAgaXRlbTogU2NyYXBlZFRyYW5zYWN0aW9uLFxuICBhcGlIZWFkZXJzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LFxuKTogUHJvbWlzZTxNb3JlRGV0YWlscz4ge1xuICB0cnkge1xuICAgIGRlYnVnKCdnZXRFeHRyYVRyYW5zYWN0aW9uRGV0YWlscyBmb3IgaXRlbTonLCBpdGVtKTtcbiAgICBpZiAoaXRlbS5NQzAyU2hvd0RldGFpbHNFWiA9PT0gJzEnKSB7XG4gICAgICBjb25zdCB0YXJQZXVsYSA9IG1vbWVudChpdGVtLk1DMDJQZXVsYVRhYUVaKTtcbiAgICAgIGNvbnN0IHRhckVyZWNoID0gbW9tZW50KGl0ZW0uTUMwMkVyZWhUYWFFWik7XG5cbiAgICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgICAgaW5Lb2RHb3JlbTogaXRlbS5NQzAyS29kR29yZW1FWixcbiAgICAgICAgaW5Bc21hY2h0YTogaXRlbS5NQzAyQXNtYWh0YU1la29yaXRFWixcbiAgICAgICAgaW5TY2h1bTogaXRlbS5NQzAyU2NodW1FWixcbiAgICAgICAgaW5OYWt2YW5pdDogaXRlbS5NQzAyS29kR29yZW1FWixcbiAgICAgICAgaW5TdWdUbnVhOiBpdGVtLk1DMDJTdWdUbnVhS2FzcGl0RVosXG4gICAgICAgIGluQWdpZDogaXRlbS5NQzAyQWdpZEVaLFxuICAgICAgICBpblRhclBldWxhRm9ybWF0dGVkOiB0YXJQZXVsYS5mb3JtYXQoREFURV9GT1JNQVQpLFxuICAgICAgICBpblRhckVyZWNoRm9ybWF0dGVkOiAodGFyRXJlY2gueWVhcigpID4gMjAwMCA/IHRhckVyZWNoIDogdGFyUGV1bGEpLmZvcm1hdChEQVRFX0ZPUk1BVCksXG4gICAgICAgIGluS29kTm9zZTogaXRlbS5NQzAyU2VpZk1hcmFsRVosXG4gICAgICAgIGluS29kVGF0Tm9zZTogaXRlbS5NQzAyTm9zZU1hcmFsRVosXG4gICAgICAgIGluVHJhbnNhY3Rpb25OdW1iZXI6IGl0ZW0uVHJhbnNhY3Rpb25OdW1iZXIsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoUG9zdFdpdGhpblBhZ2U8TW9yZURldGFpbHNSZXNwb25zZT4ocGFnZSwgTU9SRV9ERVRBSUxTX1VSTCwgcGFyYW1zLCBhcGlIZWFkZXJzKTtcbiAgICAgIGNvbnN0IGRldGFpbHMgPSByZXNwb25zZT8uYm9keS5maWVsZHM/LlswXT8uWzBdPy5SZWNvcmRzPy5bMF0uRmllbGRzO1xuICAgICAgZGVidWcoJ2ZldGNoIGRldGFpbHMgZm9yJywgcGFyYW1zLCAnZGV0YWlsczonLCBkZXRhaWxzKTtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGRldGFpbHMpICYmIGRldGFpbHMubGVuZ3RoID4gMCkge1xuICAgICAgICBjb25zdCBlbnRyaWVzID0gZGV0YWlscy5tYXAocmVjb3JkID0+IFtyZWNvcmQuTGFiZWwudHJpbSgpLCByZWNvcmQuVmFsdWUudHJpbSgpXSk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZW50cmllczogT2JqZWN0LmZyb21FbnRyaWVzKGVudHJpZXMpLFxuICAgICAgICAgIG1lbW86IGVudHJpZXNcbiAgICAgICAgICAgIC5maWx0ZXIoKFtsYWJlbF0pID0+IFsn16nXnScsICfXnteU15XXqicsICfXl9ep15HXldefJ10uc29tZShrZXkgPT4gbGFiZWwuc3RhcnRzV2l0aChrZXkpKSlcbiAgICAgICAgICAgIC5tYXAoKFtsYWJlbCwgdmFsdWVdKSA9PiBgJHtsYWJlbH0gJHt2YWx1ZX1gKVxuICAgICAgICAgICAgLmpvaW4oJywgJyksXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGRlYnVnKCdFcnJvciBmZXRjaGluZyBleHRyYSB0cmFuc2FjdGlvbiBkZXRhaWxzOicsIGVycm9yKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgZW50cmllczoge30sXG4gICAgbWVtbzogdW5kZWZpbmVkLFxuICB9O1xufVxuXG5mdW5jdGlvbiBjcmVhdGVEYXRhRnJvbVJlcXVlc3QocmVxdWVzdDogSFRUUFJlcXVlc3QsIG9wdGlvbnNTdGFydERhdGU6IERhdGUpIHtcbiAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2UocmVxdWVzdC5wb3N0RGF0YSgpIHx8ICd7fScpO1xuXG4gIGRhdGEuaW5Gcm9tRGF0ZSA9IGdldFN0YXJ0TW9tZW50KG9wdGlvbnNTdGFydERhdGUpLmZvcm1hdChEQVRFX0ZPUk1BVCk7XG4gIGRhdGEuaW5Ub0RhdGUgPSBtb21lbnQoKS5mb3JtYXQoREFURV9GT1JNQVQpO1xuICBkYXRhLnRhYmxlLm1heFJvdyA9IE1BWF9ST1dTX1BFUl9SRVFVRVNUO1xuXG4gIHJldHVybiBkYXRhO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVIZWFkZXJzRnJvbVJlcXVlc3QocmVxdWVzdDogSFRUUFJlcXVlc3QpIHtcbiAgcmV0dXJuIHtcbiAgICBtaXpyYWhpeHNyZnRva2VuOiByZXF1ZXN0LmhlYWRlcnMoKS5taXpyYWhpeHNyZnRva2VuLFxuICAgICdDb250ZW50LVR5cGUnOiByZXF1ZXN0LmhlYWRlcnMoKVsnY29udGVudC10eXBlJ10sXG4gIH07XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGNvbnZlcnRUcmFuc2FjdGlvbnMoXG4gIHR4bnM6IFNjcmFwZWRUcmFuc2FjdGlvbltdLFxuICBnZXRNb3JlRGV0YWlsczogKHJvdzogU2NyYXBlZFRyYW5zYWN0aW9uKSA9PiBQcm9taXNlPE1vcmVEZXRhaWxzPixcbiAgcGVuZGluZ0lmVG9kYXlUcmFuc2FjdGlvbjogYm9vbGVhbiA9IGZhbHNlLFxuICBvcHRpb25zPzogU2NyYXBlck9wdGlvbnMsXG4pOiBQcm9taXNlPFRyYW5zYWN0aW9uW10+IHtcbiAgcmV0dXJuIFByb21pc2UuYWxsKFxuICAgIHR4bnMubWFwKGFzeW5jIHJvdyA9PiB7XG4gICAgICBjb25zdCBtb3JlRGV0YWlscyA9IGF3YWl0IGdldE1vcmVEZXRhaWxzKHJvdyk7XG5cbiAgICAgIGNvbnN0IHR4bkRhdGUgPSBtb21lbnQocm93Lk1DMDJQZXVsYVRhYUVaLCBtb21lbnQuSFRNTDVfRk1ULkRBVEVUSU1FX0xPQ0FMX1NFQ09ORFMpLnRvSVNPU3RyaW5nKCk7XG5cbiAgICAgIGNvbnN0IHJlc3VsdDogVHJhbnNhY3Rpb24gPSB7XG4gICAgICAgIHR5cGU6IFRyYW5zYWN0aW9uVHlwZXMuTm9ybWFsLFxuICAgICAgICBpZGVudGlmaWVyOiByb3cuTUMwMkFzbWFodGFNZWtvcml0RVogPyBwYXJzZUludChyb3cuTUMwMkFzbWFodGFNZWtvcml0RVosIDEwKSA6IHVuZGVmaW5lZCxcbiAgICAgICAgZGF0ZTogdHhuRGF0ZSxcbiAgICAgICAgcHJvY2Vzc2VkRGF0ZTogdHhuRGF0ZSxcbiAgICAgICAgb3JpZ2luYWxBbW91bnQ6IHJvdy5NQzAyU2NodW1FWixcbiAgICAgICAgb3JpZ2luYWxDdXJyZW5jeTogU0hFS0VMX0NVUlJFTkNZLFxuICAgICAgICBjaGFyZ2VkQW1vdW50OiByb3cuTUMwMlNjaHVtRVosXG4gICAgICAgIGRlc2NyaXB0aW9uOiByb3cuTUMwMlRudWFUZXVyRVosXG4gICAgICAgIG1lbW86IG1vcmVEZXRhaWxzPy5tZW1vLFxuICAgICAgICBzdGF0dXM6XG4gICAgICAgICAgcGVuZGluZ0lmVG9kYXlUcmFuc2FjdGlvbiAmJiByb3cuSXNUb2RheVRyYW5zYWN0aW9uXG4gICAgICAgICAgICA/IFRyYW5zYWN0aW9uU3RhdHVzZXMuUGVuZGluZ1xuICAgICAgICAgICAgOiBUcmFuc2FjdGlvblN0YXR1c2VzLkNvbXBsZXRlZCxcbiAgICAgIH07XG5cbiAgICAgIGlmIChvcHRpb25zPy5pbmNsdWRlUmF3VHJhbnNhY3Rpb24pIHtcbiAgICAgICAgcmVzdWx0LnJhd1RyYW5zYWN0aW9uID0gcm93O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0pLFxuICApO1xufVxuXG5hc3luYyBmdW5jdGlvbiBleHRyYWN0UGVuZGluZ1RyYW5zYWN0aW9ucyhwYWdlOiBGcmFtZSk6IFByb21pc2U8VHJhbnNhY3Rpb25bXT4ge1xuICBjb25zdCBwZW5kaW5nVHhuID0gYXdhaXQgcGFnZUV2YWxBbGwocGFnZSwgJ3RyLnJnUm93LCB0ci5yZ0FsdFJvdycsIFtdLCB0cnMgPT4ge1xuICAgIHJldHVybiB0cnMubWFwKHRyID0+IEFycmF5LmZyb20odHIucXVlcnlTZWxlY3RvckFsbCgndGQnKSwgdGQgPT4gdGQudGV4dENvbnRlbnQgfHwgJycpKTtcbiAgfSk7XG5cbiAgcmV0dXJuIHBlbmRpbmdUeG5cbiAgICAubWFwKChbZGF0ZVN0ciwgZGVzY3JpcHRpb24sIGluY29tZUFtb3VudFN0ciwgYW1vdW50U3RyXSkgPT4gKHtcbiAgICAgIGRhdGU6IG1vbWVudChkYXRlU3RyLCAnREQvTU0vWVknKS50b0lTT1N0cmluZygpLFxuICAgICAgYW1vdW50OiBwYXJzZUZsb2F0KGFtb3VudFN0ci5yZXBsYWNlQWxsKCcsJywgJycpKSxcbiAgICAgIGRlc2NyaXB0aW9uLFxuICAgICAgaW5jb21lQW1vdW50U3RyLCAvLyBUT0RPOiBoYW5kbGUgaW5jb21lQW1vdW50U3RyIG9uY2Ugd2Uga25vdyB0aGUgc2lnbiBvZiBpdFxuICAgIH0pKVxuICAgIC5maWx0ZXIodHhuID0+IHR4bi5kYXRlKVxuICAgIC5tYXAoKHsgZGF0ZSwgZGVzY3JpcHRpb24sIGFtb3VudCB9KSA9PiAoe1xuICAgICAgdHlwZTogVHJhbnNhY3Rpb25UeXBlcy5Ob3JtYWwsXG4gICAgICBkYXRlLFxuICAgICAgcHJvY2Vzc2VkRGF0ZTogZGF0ZSxcbiAgICAgIG9yaWdpbmFsQW1vdW50OiBhbW91bnQsXG4gICAgICBvcmlnaW5hbEN1cnJlbmN5OiBTSEVLRUxfQ1VSUkVOQ1ksXG4gICAgICBjaGFyZ2VkQW1vdW50OiBhbW91bnQsXG4gICAgICBkZXNjcmlwdGlvbixcbiAgICAgIHN0YXR1czogVHJhbnNhY3Rpb25TdGF0dXNlcy5QZW5kaW5nLFxuICAgIH0pKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcG9zdExvZ2luKHBhZ2U6IFBhZ2UpIHtcbiAgYXdhaXQgUHJvbWlzZS5yYWNlKFtcbiAgICB3YWl0VW50aWxFbGVtZW50Rm91bmQocGFnZSwgYWZ0ZXJMb2dpblNlbGVjdG9yKSxcbiAgICB3YWl0VW50aWxFbGVtZW50Rm91bmQocGFnZSwgaW52YWxpZFBhc3N3b3JkU2VsZWN0b3IpLFxuICAgIHdhaXRGb3JVcmwocGFnZSwgQ0hBTkdFX1BBU1NXT1JEX1VSTCksXG4gIF0pO1xufVxuXG50eXBlIFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzID0geyB1c2VybmFtZTogc3RyaW5nOyBwYXNzd29yZDogc3RyaW5nIH07XG5cbmNsYXNzIE1penJhaGlTY3JhcGVyIGV4dGVuZHMgQmFzZVNjcmFwZXJXaXRoQnJvd3NlcjxTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscz4ge1xuICBnZXRMb2dpbk9wdGlvbnMoY3JlZGVudGlhbHM6IFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxvZ2luVXJsOiBMT0dJTl9VUkwsXG4gICAgICBmaWVsZHM6IGNyZWF0ZUxvZ2luRmllbGRzKGNyZWRlbnRpYWxzKSxcbiAgICAgIHN1Ym1pdEJ1dHRvblNlbGVjdG9yLFxuICAgICAgY2hlY2tSZWFkaW5lc3M6IGFzeW5jICgpID0+IHdhaXRVbnRpbEVsZW1lbnREaXNhcHBlYXIodGhpcy5wYWdlLCBsb2dpblNwaW5uZXJTZWxlY3RvciksXG4gICAgICBwb3N0QWN0aW9uOiBhc3luYyAoKSA9PiBwb3N0TG9naW4odGhpcy5wYWdlKSxcbiAgICAgIHBvc3NpYmxlUmVzdWx0czogZ2V0UG9zc2libGVMb2dpblJlc3VsdHModGhpcy5wYWdlKSxcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgZmV0Y2hEYXRhKCkge1xuICAgIGF3YWl0IHRoaXMucGFnZS4kZXZhbCgnI2Ryb3Bkb3duQmFzaWMsIC5pdGVtJywgZWwgPT4gKGVsIGFzIEhUTUxFbGVtZW50KS5jbGljaygpKTtcblxuICAgIGNvbnN0IG51bU9mQWNjb3VudHMgPSAoYXdhaXQgdGhpcy5wYWdlLiQkKGFjY291bnREcm9wRG93bkl0ZW1TZWxlY3RvcikpLmxlbmd0aDtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXN1bHRzOiBUcmFuc2FjdGlvbnNBY2NvdW50W10gPSBbXTtcblxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBudW1PZkFjY291bnRzOyBpICs9IDEpIHtcbiAgICAgICAgaWYgKGkgPiAwKSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5wYWdlLiRldmFsKCcjZHJvcGRvd25CYXNpYywgLml0ZW0nLCBlbCA9PiAoZWwgYXMgSFRNTEVsZW1lbnQpLmNsaWNrKCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgYXdhaXQgdGhpcy5wYWdlLiRldmFsKGAke2FjY291bnREcm9wRG93bkl0ZW1TZWxlY3Rvcn06bnRoLWNoaWxkKCR7aSArIDF9KWAsIGVsID0+IChlbCBhcyBIVE1MRWxlbWVudCkuY2xpY2soKSk7XG4gICAgICAgIHJlc3VsdHMucHVzaChhd2FpdCB0aGlzLmZldGNoQWNjb3VudCgpKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc3VjY2VzczogdHJ1ZSxcbiAgICAgICAgYWNjb3VudHM6IHJlc3VsdHMsXG4gICAgICB9O1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgICBlcnJvclR5cGU6IFNjcmFwZXJFcnJvclR5cGVzLkdlbmVyaWMsXG4gICAgICAgIGVycm9yTWVzc2FnZTogKGUgYXMgRXJyb3IpLm1lc3NhZ2UsXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2V0UGVuZGluZ1RyYW5zYWN0aW9ucygpOiBQcm9taXNlPFRyYW5zYWN0aW9uW10+IHtcbiAgICBhd2FpdCB0aGlzLnBhZ2UuJGV2YWwoYGFbaHJlZio9XCIke1BFTkRJTkdfVFJBTlNBQ1RJT05TX1BBR0V9XCJdYCwgZWwgPT4gKGVsIGFzIEhUTUxFbGVtZW50KS5jbGljaygpKTtcbiAgICBjb25zdCBmcmFtZSA9IGF3YWl0IHdhaXRVbnRpbElmcmFtZUZvdW5kKHRoaXMucGFnZSwgZiA9PiBmLnVybCgpLmluY2x1ZGVzKFBFTkRJTkdfVFJBTlNBQ1RJT05TX0lGUkFNRSkpO1xuICAgIGNvbnN0IGlzUGVuZGluZyA9IGF3YWl0IHdhaXRVbnRpbEVsZW1lbnRGb3VuZChmcmFtZSwgcGVuZGluZ1RyeElkZW50aWZpZXJJZClcbiAgICAgIC50aGVuKCgpID0+IHRydWUpXG4gICAgICAuY2F0Y2goKCkgPT4gZmFsc2UpO1xuICAgIGlmICghaXNQZW5kaW5nKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgY29uc3QgcGVuZGluZ1R4biA9IGF3YWl0IGV4dHJhY3RQZW5kaW5nVHJhbnNhY3Rpb25zKGZyYW1lKTtcbiAgICByZXR1cm4gcGVuZGluZ1R4bjtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZmV0Y2hBY2NvdW50KCkge1xuICAgIGF3YWl0IHRoaXMucGFnZS53YWl0Rm9yU2VsZWN0b3IoYGFbaHJlZio9XCIke09TSF9QQUdFfVwiXWApO1xuICAgIGF3YWl0IHRoaXMucGFnZS4kZXZhbChgYVtocmVmKj1cIiR7T1NIX1BBR0V9XCJdYCwgZWwgPT4gKGVsIGFzIEhUTUxFbGVtZW50KS5jbGljaygpKTtcbiAgICBhd2FpdCB3YWl0VW50aWxFbGVtZW50Rm91bmQodGhpcy5wYWdlLCBgYVtocmVmKj1cIiR7VFJBTlNBQ1RJT05TX1BBR0V9XCJdYCk7XG4gICAgYXdhaXQgdGhpcy5wYWdlLiRldmFsKGBhW2hyZWYqPVwiJHtUUkFOU0FDVElPTlNfUEFHRX1cIl1gLCBlbCA9PiAoZWwgYXMgSFRNTEVsZW1lbnQpLmNsaWNrKCkpO1xuXG4gICAgY29uc3QgYWNjb3VudE51bWJlckVsZW1lbnQgPSBhd2FpdCB0aGlzLnBhZ2UuJCgnI2Ryb3Bkb3duQmFzaWMgYiBzcGFuJyk7XG4gICAgY29uc3QgYWNjb3VudE51bWJlckhhbmRsZSA9IGF3YWl0IGFjY291bnROdW1iZXJFbGVtZW50Py5nZXRQcm9wZXJ0eSgndGl0bGUnKTtcbiAgICBjb25zdCBhY2NvdW50TnVtYmVyID0gKGF3YWl0IGFjY291bnROdW1iZXJIYW5kbGU/Lmpzb25WYWx1ZSgpKSBhcyBzdHJpbmc7XG4gICAgaWYgKCFhY2NvdW50TnVtYmVyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0FjY291bnQgbnVtYmVyIG5vdCBmb3VuZCcpO1xuICAgIH1cblxuICAgIGNvbnN0IFtyZXNwb25zZSwgYXBpSGVhZGVyc10gPSBhd2FpdCBQcm9taXNlLmFueShcbiAgICAgIFRSQU5TQUNUSU9OU19SRVFVRVNUX1VSTFMubWFwKGFzeW5jIHVybCA9PiB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSBhd2FpdCB0aGlzLnBhZ2Uud2FpdEZvclJlcXVlc3QodXJsKTtcbiAgICAgICAgY29uc3QgZGF0YSA9IGNyZWF0ZURhdGFGcm9tUmVxdWVzdChyZXF1ZXN0LCB0aGlzLm9wdGlvbnMuc3RhcnREYXRlKTtcbiAgICAgICAgY29uc3QgaGVhZGVycyA9IGNyZWF0ZUhlYWRlcnNGcm9tUmVxdWVzdChyZXF1ZXN0KTtcblxuICAgICAgICByZXR1cm4gW2F3YWl0IGZldGNoUG9zdFdpdGhpblBhZ2U8U2NyYXBlZFRyYW5zYWN0aW9uc1Jlc3VsdD4odGhpcy5wYWdlLCB1cmwsIGRhdGEsIGhlYWRlcnMpLCBoZWFkZXJzXSBhcyBjb25zdDtcbiAgICAgIH0pLFxuICAgICk7XG5cbiAgICBpZiAoIXJlc3BvbnNlIHx8IHJlc3BvbnNlLmhlYWRlci5zdWNjZXNzID09PSBmYWxzZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgRXJyb3IgZmV0Y2hpbmcgdHJhbnNhY3Rpb24uIFJlc3BvbnNlIG1lc3NhZ2U6ICR7cmVzcG9uc2UgPyByZXNwb25zZS5oZWFkZXIubWVzc2FnZXNbMF0udGV4dCA6ICcnfWAsXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IHJlbGV2YW50Um93cyA9IHJlc3BvbnNlLmJvZHkudGFibGUucm93cy5maWx0ZXIocm93ID0+IHJvdy5SZWNUeXBlU3BlY2lmaWVkKTtcbiAgICBjb25zdCBvc2hUeG4gPSBhd2FpdCBjb252ZXJ0VHJhbnNhY3Rpb25zKFxuICAgICAgcmVsZXZhbnRSb3dzLFxuICAgICAgdGhpcy5vcHRpb25zLmFkZGl0aW9uYWxUcmFuc2FjdGlvbkluZm9ybWF0aW9uXG4gICAgICAgID8gcm93ID0+IGdldEV4dHJhVHJhbnNhY3Rpb25EZXRhaWxzKHRoaXMucGFnZSwgcm93LCBhcGlIZWFkZXJzKVxuICAgICAgICA6ICgpID0+IFByb21pc2UucmVzb2x2ZSh7IGVudHJpZXM6IHt9LCBtZW1vOiB1bmRlZmluZWQgfSksXG4gICAgICB0aGlzLm9wdGlvbnMub3B0SW5GZWF0dXJlcz8uaW5jbHVkZXMoJ21penJhaGk6cGVuZGluZ0lmVG9kYXlUcmFuc2FjdGlvbicpLFxuICAgICAgdGhpcy5vcHRpb25zLFxuICAgICk7XG5cbiAgICBvc2hUeG5cbiAgICAgIC5maWx0ZXIodHhuID0+IHRoaXMuc2hvdWxkTWFya0FzUGVuZGluZyh0eG4pKVxuICAgICAgLmZvckVhY2godHhuID0+IHtcbiAgICAgICAgdHhuLnN0YXR1cyA9IFRyYW5zYWN0aW9uU3RhdHVzZXMuUGVuZGluZztcbiAgICAgIH0pO1xuXG4gICAgLy8gd29ya2Fyb3VuZCBmb3IgYSBidWcgd2hpY2ggdGhlIGJhbmsncyBBUEkgcmV0dXJucyB0cmFuc2FjdGlvbnMgYmVmb3JlIHRoZSByZXF1ZXN0ZWQgc3RhcnQgZGF0ZVxuICAgIGNvbnN0IHN0YXJ0TW9tZW50ID0gZ2V0U3RhcnRNb21lbnQodGhpcy5vcHRpb25zLnN0YXJ0RGF0ZSk7XG4gICAgY29uc3Qgb3NoVHhuQWZ0ZXJTdGFydERhdGUgPSBvc2hUeG4uZmlsdGVyKHR4biA9PiBtb21lbnQodHhuLmRhdGUpLmlzU2FtZU9yQWZ0ZXIoc3RhcnRNb21lbnQpKTtcblxuICAgIGNvbnN0IHBlbmRpbmdUeG4gPSBhd2FpdCB0aGlzLmdldFBlbmRpbmdUcmFuc2FjdGlvbnMoKTtcbiAgICBjb25zdCBhbGxUeG4gPSBvc2hUeG5BZnRlclN0YXJ0RGF0ZS5jb25jYXQocGVuZGluZ1R4bik7XG5cbiAgICByZXR1cm4ge1xuICAgICAgYWNjb3VudE51bWJlcixcbiAgICAgIHR4bnM6IGFsbFR4bixcbiAgICAgIGJhbGFuY2U6ICtyZXNwb25zZS5ib2R5LmZpZWxkcz8uWWl0cmEsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgc2hvdWxkTWFya0FzUGVuZGluZyh0eG46IFRyYW5zYWN0aW9uKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMub3B0aW9ucy5vcHRJbkZlYXR1cmVzPy5pbmNsdWRlcygnbWl6cmFoaTpwZW5kaW5nSWZOb0lkZW50aWZpZXInKSAmJiAhdHhuLmlkZW50aWZpZXIpIHtcbiAgICAgIGRlYnVnKGBNYXJraW5nIHRyYW5zYWN0aW9uICcke3R4bi5kZXNjcmlwdGlvbn0nIGFzIHBlbmRpbmcgZHVlIHRvIG5vIGlkZW50aWZpZXIuYCk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICB0aGlzLm9wdGlvbnMub3B0SW5GZWF0dXJlcz8uaW5jbHVkZXMoJ21penJhaGk6cGVuZGluZ0lmSGFzR2VuZXJpY0Rlc2NyaXB0aW9uJykgJiZcbiAgICAgIGdlbmVyaWNEZXNjcmlwdGlvbnMuaW5jbHVkZXModHhuLmRlc2NyaXB0aW9uKVxuICAgICkge1xuICAgICAgZGVidWcoYE1hcmtpbmcgdHJhbnNhY3Rpb24gJyR7dHhuLmRlc2NyaXB0aW9ufScgYXMgcGVuZGluZyBkdWUgdG8gZ2VuZXJpYyBkZXNjcmlwdGlvbi5gKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBNaXpyYWhpU2NyYXBlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsT0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUMsVUFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUscUJBQUEsR0FBQUYsT0FBQTtBQU1BLElBQUFHLE1BQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLFdBQUEsR0FBQUosT0FBQTtBQUNBLElBQUFLLGFBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLHVCQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyxPQUFBLEdBQUFQLE9BQUE7QUFDQSxJQUFBUSxNQUFBLEdBQUFSLE9BQUE7QUFBNEMsU0FBQUQsdUJBQUFVLENBQUEsV0FBQUEsQ0FBQSxJQUFBQSxDQUFBLENBQUFDLFVBQUEsR0FBQUQsQ0FBQSxLQUFBRSxPQUFBLEVBQUFGLENBQUE7QUFHNUMsTUFBTUcsS0FBSyxHQUFHLElBQUFDLGVBQVEsRUFBQyxTQUFTLENBQUM7QUEwRGpDLE1BQU1DLGdCQUFnQixHQUFHLG1DQUFtQztBQUM1RCxNQUFNQyxTQUFTLEdBQUcsR0FBR0QsZ0JBQWdCLGlDQUFpQztBQUN0RSxNQUFNRSxZQUFZLEdBQUcsbUNBQW1DO0FBQ3hELE1BQU1DLG9CQUFvQixHQUFHLHVEQUF1RDtBQUNwRixNQUFNQyxRQUFRLEdBQUcsNkJBQTZCO0FBQzlDLE1BQU1DLGlCQUFpQixHQUFHLG1DQUFtQztBQUM3RCxNQUFNQyx5QkFBeUIsR0FBRyxDQUNoQyxHQUFHSixZQUFZLHFDQUFxQyxFQUNwRCxHQUFHQSxZQUFZLGdDQUFnQyxDQUNoRDtBQUNELE1BQU1LLHlCQUF5QixHQUFHLDZCQUE2QjtBQUMvRCxNQUFNQywyQkFBMkIsR0FBRyxXQUFXO0FBQy9DLE1BQU1DLGdCQUFnQixHQUFHLEdBQUdQLFlBQVksb0NBQW9DO0FBQzVFLE1BQU1RLG1CQUFtQixHQUFHLDBFQUEwRTtBQUN0RyxNQUFNQyxXQUFXLEdBQUcsWUFBWTtBQUNoQyxNQUFNQyxvQkFBb0IsR0FBRyxXQUFXO0FBRXhDLE1BQU1DLGdCQUFnQixHQUFHLHVCQUF1QjtBQUNoRCxNQUFNQyxnQkFBZ0IsR0FBRyxxQkFBcUI7QUFDOUMsTUFBTUMsb0JBQW9CLEdBQUcsd0JBQXdCO0FBQ3JELE1BQU1DLHVCQUF1QixHQUFHLHFFQUFxRTtBQUNyRyxNQUFNQyxrQkFBa0IsR0FBRyxnQkFBZ0I7QUFDM0MsTUFBTUMsb0JBQW9CLEdBQUcsb0NBQW9DO0FBQ2pFLE1BQU1DLDJCQUEyQixHQUFHLHNCQUFzQjtBQUMxRCxNQUFNQyxzQkFBc0IsR0FBRyxtQ0FBbUM7QUFDbEUsTUFBTUMsNEJBQTRCLEdBQUcsVUFBVTtBQUMvQyxNQUFNQyw2QkFBNkIsR0FBRyxrQkFBa0I7QUFDeEQsTUFBTUMsbUJBQW1CLEdBQUcsQ0FBQyw2QkFBNkIsQ0FBQztBQUUzRCxTQUFTQyxpQkFBaUJBLENBQUNDLFdBQXVDLEVBQUU7RUFDbEUsT0FBTyxDQUNMO0lBQUVDLFFBQVEsRUFBRWIsZ0JBQWdCO0lBQUVjLEtBQUssRUFBRUYsV0FBVyxDQUFDRztFQUFTLENBQUMsRUFDM0Q7SUFBRUYsUUFBUSxFQUFFWixnQkFBZ0I7SUFBRWEsS0FBSyxFQUFFRixXQUFXLENBQUNJO0VBQVMsQ0FBQyxDQUM1RDtBQUNIO0FBRUEsZUFBZUMsVUFBVUEsQ0FBQ0MsT0FBZ0QsRUFBRTtFQUMxRSxJQUFJLENBQUNBLE9BQU8sRUFBRUMsSUFBSSxFQUFFO0lBQ2xCLE9BQU8sS0FBSztFQUNkO0VBQ0EsTUFBTUMsUUFBUSxHQUFHLDBCQUEwQlosNEJBQTRCLHNCQUFzQkMsNkJBQTZCLEtBQUs7RUFDL0gsTUFBTVksTUFBTSxHQUFHLE1BQU1ILE9BQU8sQ0FBQ0MsSUFBSSxDQUFDRyxFQUFFLENBQUMsUUFBUUYsUUFBUSxFQUFFLENBQUM7RUFDeEQsT0FBT0MsTUFBTSxDQUFDRSxNQUFNLEdBQUcsQ0FBQztBQUMxQjtBQUVBLFNBQVNDLHVCQUF1QkEsQ0FBQ0wsSUFBVSxFQUF3QjtFQUNqRSxPQUFPO0lBQ0wsQ0FBQ00sb0NBQVksQ0FBQ0MsT0FBTyxHQUFHLENBQUNwQyxvQkFBb0IsRUFBRTJCLFVBQVUsQ0FBQztJQUMxRCxDQUFDUSxvQ0FBWSxDQUFDRSxlQUFlLEdBQUcsQ0FBQyxZQUFZLENBQUMsRUFBRSxNQUFNUixJQUFJLENBQUNTLENBQUMsQ0FBQ3pCLHVCQUF1QixDQUFDLENBQUMsQ0FBQztJQUN2RixDQUFDc0Isb0NBQVksQ0FBQ0ksY0FBYyxHQUFHLENBQUNoQyxtQkFBbUI7RUFDckQsQ0FBQztBQUNIO0FBRUEsU0FBU2lDLGNBQWNBLENBQUNDLGdCQUFzQixFQUFFO0VBQzlDLE1BQU1DLGtCQUFrQixHQUFHLElBQUFDLGVBQU0sRUFBQyxDQUFDLENBQUNDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDO0VBQ3hELE1BQU1DLFNBQVMsR0FBR0osZ0JBQWdCLElBQUlDLGtCQUFrQixDQUFDSSxNQUFNLENBQUMsQ0FBQztFQUNqRSxPQUFPSCxlQUFNLENBQUNJLEdBQUcsQ0FBQ0wsa0JBQWtCLEVBQUUsSUFBQUMsZUFBTSxFQUFDRSxTQUFTLENBQUMsQ0FBQztBQUMxRDtBQUVBLGVBQWVHLDBCQUEwQkEsQ0FDdkNuQixJQUFVLEVBQ1ZvQixJQUF3QixFQUN4QkMsVUFBa0MsRUFDWjtFQUN0QixJQUFJO0lBQ0Z2RCxLQUFLLENBQUMsc0NBQXNDLEVBQUVzRCxJQUFJLENBQUM7SUFDbkQsSUFBSUEsSUFBSSxDQUFDRSxpQkFBaUIsS0FBSyxHQUFHLEVBQUU7TUFDbEMsTUFBTUMsUUFBUSxHQUFHLElBQUFULGVBQU0sRUFBQ00sSUFBSSxDQUFDSSxjQUFjLENBQUM7TUFDNUMsTUFBTUMsUUFBUSxHQUFHLElBQUFYLGVBQU0sRUFBQ00sSUFBSSxDQUFDTSxhQUFhLENBQUM7TUFFM0MsTUFBTUMsTUFBTSxHQUFHO1FBQ2JDLFVBQVUsRUFBRVIsSUFBSSxDQUFDUyxjQUFjO1FBQy9CQyxVQUFVLEVBQUVWLElBQUksQ0FBQ1csb0JBQW9CO1FBQ3JDQyxPQUFPLEVBQUVaLElBQUksQ0FBQ2EsV0FBVztRQUN6QkMsVUFBVSxFQUFFZCxJQUFJLENBQUNTLGNBQWM7UUFDL0JNLFNBQVMsRUFBRWYsSUFBSSxDQUFDZ0IsbUJBQW1CO1FBQ25DQyxNQUFNLEVBQUVqQixJQUFJLENBQUNrQixVQUFVO1FBQ3ZCQyxtQkFBbUIsRUFBRWhCLFFBQVEsQ0FBQ2lCLE1BQU0sQ0FBQzdELFdBQVcsQ0FBQztRQUNqRDhELG1CQUFtQixFQUFFLENBQUNoQixRQUFRLENBQUNpQixJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksR0FBR2pCLFFBQVEsR0FBR0YsUUFBUSxFQUFFaUIsTUFBTSxDQUFDN0QsV0FBVyxDQUFDO1FBQ3ZGZ0UsU0FBUyxFQUFFdkIsSUFBSSxDQUFDd0IsZUFBZTtRQUMvQkMsWUFBWSxFQUFFekIsSUFBSSxDQUFDMEIsZUFBZTtRQUNsQ0MsbUJBQW1CLEVBQUUzQixJQUFJLENBQUM0QjtNQUM1QixDQUFDO01BRUQsTUFBTUMsUUFBUSxHQUFHLE1BQU0sSUFBQUMsMEJBQW1CLEVBQXNCbEQsSUFBSSxFQUFFdkIsZ0JBQWdCLEVBQUVrRCxNQUFNLEVBQUVOLFVBQVUsQ0FBQztNQUMzRyxNQUFNOEIsT0FBTyxHQUFHRixRQUFRLEVBQUVHLElBQUksQ0FBQ0MsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUNDLE1BQU07TUFDcEV6RixLQUFLLENBQUMsbUJBQW1CLEVBQUU2RCxNQUFNLEVBQUUsVUFBVSxFQUFFd0IsT0FBTyxDQUFDO01BQ3ZELElBQUlLLEtBQUssQ0FBQ0MsT0FBTyxDQUFDTixPQUFPLENBQUMsSUFBSUEsT0FBTyxDQUFDL0MsTUFBTSxHQUFHLENBQUMsRUFBRTtRQUNoRCxNQUFNc0QsT0FBTyxHQUFHUCxPQUFPLENBQUNRLEdBQUcsQ0FBQ0MsTUFBTSxJQUFJLENBQUNBLE1BQU0sQ0FBQ0MsS0FBSyxDQUFDQyxJQUFJLENBQUMsQ0FBQyxFQUFFRixNQUFNLENBQUNHLEtBQUssQ0FBQ0QsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2pGLE9BQU87VUFDTEosT0FBTyxFQUFFTSxNQUFNLENBQUNDLFdBQVcsQ0FBQ1AsT0FBTyxDQUFDO1VBQ3BDUSxJQUFJLEVBQUVSLE9BQU8sQ0FDVlMsTUFBTSxDQUFDLENBQUMsQ0FBQ0MsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDQyxJQUFJLENBQUNDLEdBQUcsSUFBSUYsS0FBSyxDQUFDRyxVQUFVLENBQUNELEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FDL0VYLEdBQUcsQ0FBQyxDQUFDLENBQUNTLEtBQUssRUFBRXpFLEtBQUssQ0FBQyxLQUFLLEdBQUd5RSxLQUFLLElBQUl6RSxLQUFLLEVBQUUsQ0FBQyxDQUM1QzZFLElBQUksQ0FBQyxJQUFJO1FBQ2QsQ0FBQztNQUNIO0lBQ0Y7RUFDRixDQUFDLENBQUMsT0FBT0MsS0FBSyxFQUFFO0lBQ2QzRyxLQUFLLENBQUMsMkNBQTJDLEVBQUUyRyxLQUFLLENBQUM7RUFDM0Q7RUFFQSxPQUFPO0lBQ0xmLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDWFEsSUFBSSxFQUFFUTtFQUNSLENBQUM7QUFDSDtBQUVBLFNBQVNDLHFCQUFxQkEsQ0FBQ0MsT0FBb0IsRUFBRWhFLGdCQUFzQixFQUFFO0VBQzNFLE1BQU1pRSxJQUFJLEdBQUdDLElBQUksQ0FBQ0MsS0FBSyxDQUFDSCxPQUFPLENBQUNJLFFBQVEsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDO0VBRW5ESCxJQUFJLENBQUNJLFVBQVUsR0FBR3RFLGNBQWMsQ0FBQ0MsZ0JBQWdCLENBQUMsQ0FBQzRCLE1BQU0sQ0FBQzdELFdBQVcsQ0FBQztFQUN0RWtHLElBQUksQ0FBQ0ssUUFBUSxHQUFHLElBQUFwRSxlQUFNLEVBQUMsQ0FBQyxDQUFDMEIsTUFBTSxDQUFDN0QsV0FBVyxDQUFDO0VBQzVDa0csSUFBSSxDQUFDTSxLQUFLLENBQUNDLE1BQU0sR0FBR3hHLG9CQUFvQjtFQUV4QyxPQUFPaUcsSUFBSTtBQUNiO0FBRUEsU0FBU1Esd0JBQXdCQSxDQUFDVCxPQUFvQixFQUFFO0VBQ3RELE9BQU87SUFDTFUsZ0JBQWdCLEVBQUVWLE9BQU8sQ0FBQ1csT0FBTyxDQUFDLENBQUMsQ0FBQ0QsZ0JBQWdCO0lBQ3BELGNBQWMsRUFBRVYsT0FBTyxDQUFDVyxPQUFPLENBQUMsQ0FBQyxDQUFDLGNBQWM7RUFDbEQsQ0FBQztBQUNIO0FBRUEsZUFBZUMsbUJBQW1CQSxDQUNoQ0MsSUFBMEIsRUFDMUJDLGNBQWlFLEVBQ2pFQyx5QkFBa0MsR0FBRyxLQUFLLEVBQzFDNUYsT0FBd0IsRUFDQTtFQUN4QixPQUFPNkYsT0FBTyxDQUFDQyxHQUFHLENBQ2hCSixJQUFJLENBQUM5QixHQUFHLENBQUMsTUFBTW1DLEdBQUcsSUFBSTtJQUNwQixNQUFNQyxXQUFXLEdBQUcsTUFBTUwsY0FBYyxDQUFDSSxHQUFHLENBQUM7SUFFN0MsTUFBTUUsT0FBTyxHQUFHLElBQUFsRixlQUFNLEVBQUNnRixHQUFHLENBQUN0RSxjQUFjLEVBQUVWLGVBQU0sQ0FBQ21GLFNBQVMsQ0FBQ0Msc0JBQXNCLENBQUMsQ0FBQ0MsV0FBVyxDQUFDLENBQUM7SUFFakcsTUFBTUMsTUFBbUIsR0FBRztNQUMxQkMsSUFBSSxFQUFFQyw4QkFBZ0IsQ0FBQ0MsTUFBTTtNQUM3QkMsVUFBVSxFQUFFVixHQUFHLENBQUMvRCxvQkFBb0IsR0FBRzBFLFFBQVEsQ0FBQ1gsR0FBRyxDQUFDL0Qsb0JBQW9CLEVBQUUsRUFBRSxDQUFDLEdBQUcyQyxTQUFTO01BQ3pGZ0MsSUFBSSxFQUFFVixPQUFPO01BQ2JXLGFBQWEsRUFBRVgsT0FBTztNQUN0QlksY0FBYyxFQUFFZCxHQUFHLENBQUM3RCxXQUFXO01BQy9CNEUsZ0JBQWdCLEVBQUVDLDBCQUFlO01BQ2pDQyxhQUFhLEVBQUVqQixHQUFHLENBQUM3RCxXQUFXO01BQzlCK0UsV0FBVyxFQUFFbEIsR0FBRyxDQUFDbUIsY0FBYztNQUMvQi9DLElBQUksRUFBRTZCLFdBQVcsRUFBRTdCLElBQUk7TUFDdkJnRCxNQUFNLEVBQ0p2Qix5QkFBeUIsSUFBSUcsR0FBRyxDQUFDcUIsa0JBQWtCLEdBQy9DQyxpQ0FBbUIsQ0FBQ0MsT0FBTyxHQUMzQkQsaUNBQW1CLENBQUNFO0lBQzVCLENBQUM7SUFFRCxJQUFJdkgsT0FBTyxFQUFFd0gscUJBQXFCLEVBQUU7TUFDbENuQixNQUFNLENBQUNvQixjQUFjLEdBQUcxQixHQUFHO0lBQzdCO0lBRUEsT0FBT00sTUFBTTtFQUNmLENBQUMsQ0FDSCxDQUFDO0FBQ0g7QUFFQSxlQUFlcUIsMEJBQTBCQSxDQUFDekgsSUFBVyxFQUEwQjtFQUM3RSxNQUFNMEgsVUFBVSxHQUFHLE1BQU0sSUFBQUMsaUNBQVcsRUFBQzNILElBQUksRUFBRSx1QkFBdUIsRUFBRSxFQUFFLEVBQUU0SCxHQUFHLElBQUk7SUFDN0UsT0FBT0EsR0FBRyxDQUFDakUsR0FBRyxDQUFDa0UsRUFBRSxJQUFJckUsS0FBSyxDQUFDc0UsSUFBSSxDQUFDRCxFQUFFLENBQUNFLGdCQUFnQixDQUFDLElBQUksQ0FBQyxFQUFFQyxFQUFFLElBQUlBLEVBQUUsQ0FBQ0MsV0FBVyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0VBQ3pGLENBQUMsQ0FBQztFQUVGLE9BQU9QLFVBQVUsQ0FDZC9ELEdBQUcsQ0FBQyxDQUFDLENBQUN1RSxPQUFPLEVBQUVsQixXQUFXLEVBQUVtQixlQUFlLEVBQUVDLFNBQVMsQ0FBQyxNQUFNO0lBQzVEMUIsSUFBSSxFQUFFLElBQUE1RixlQUFNLEVBQUNvSCxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUMvQixXQUFXLENBQUMsQ0FBQztJQUMvQ2tDLE1BQU0sRUFBRUMsVUFBVSxDQUFDRixTQUFTLENBQUNHLFVBQVUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDakR2QixXQUFXO0lBQ1htQixlQUFlLENBQUU7RUFDbkIsQ0FBQyxDQUFDLENBQUMsQ0FDRmhFLE1BQU0sQ0FBQ3FFLEdBQUcsSUFBSUEsR0FBRyxDQUFDOUIsSUFBSSxDQUFDLENBQ3ZCL0MsR0FBRyxDQUFDLENBQUM7SUFBRStDLElBQUk7SUFBRU0sV0FBVztJQUFFcUI7RUFBTyxDQUFDLE1BQU07SUFDdkNoQyxJQUFJLEVBQUVDLDhCQUFnQixDQUFDQyxNQUFNO0lBQzdCRyxJQUFJO0lBQ0pDLGFBQWEsRUFBRUQsSUFBSTtJQUNuQkUsY0FBYyxFQUFFeUIsTUFBTTtJQUN0QnhCLGdCQUFnQixFQUFFQywwQkFBZTtJQUNqQ0MsYUFBYSxFQUFFc0IsTUFBTTtJQUNyQnJCLFdBQVc7SUFDWEUsTUFBTSxFQUFFRSxpQ0FBbUIsQ0FBQ0M7RUFDOUIsQ0FBQyxDQUFDLENBQUM7QUFDUDtBQUVBLGVBQWVvQixTQUFTQSxDQUFDekksSUFBVSxFQUFFO0VBQ25DLE1BQU00RixPQUFPLENBQUM4QyxJQUFJLENBQUMsQ0FDakIsSUFBQUMsMkNBQXFCLEVBQUMzSSxJQUFJLEVBQUVmLGtCQUFrQixDQUFDLEVBQy9DLElBQUEwSiwyQ0FBcUIsRUFBQzNJLElBQUksRUFBRWhCLHVCQUF1QixDQUFDLEVBQ3BELElBQUE0SixzQkFBVSxFQUFDNUksSUFBSSxFQUFFdEIsbUJBQW1CLENBQUMsQ0FDdEMsQ0FBQztBQUNKO0FBSUEsTUFBTW1LLGNBQWMsU0FBU0MsOENBQXNCLENBQTZCO0VBQzlFQyxlQUFlQSxDQUFDdEosV0FBdUMsRUFBRTtJQUN2RCxPQUFPO01BQ0x1SixRQUFRLEVBQUUvSyxTQUFTO01BQ25Cb0YsTUFBTSxFQUFFN0QsaUJBQWlCLENBQUNDLFdBQVcsQ0FBQztNQUN0Q1Ysb0JBQW9CO01BQ3BCa0ssY0FBYyxFQUFFLE1BQUFBLENBQUEsS0FBWSxJQUFBQywrQ0FBeUIsRUFBQyxJQUFJLENBQUNsSixJQUFJLEVBQUVkLG9CQUFvQixDQUFDO01BQ3RGaUssVUFBVSxFQUFFLE1BQUFBLENBQUEsS0FBWVYsU0FBUyxDQUFDLElBQUksQ0FBQ3pJLElBQUksQ0FBQztNQUM1Q29KLGVBQWUsRUFBRS9JLHVCQUF1QixDQUFDLElBQUksQ0FBQ0wsSUFBSTtJQUNwRCxDQUFDO0VBQ0g7RUFFQSxNQUFNcUosU0FBU0EsQ0FBQSxFQUFHO0lBQ2hCLE1BQU0sSUFBSSxDQUFDckosSUFBSSxDQUFDc0osS0FBSyxDQUFDLHVCQUF1QixFQUFFQyxFQUFFLElBQUtBLEVBQUUsQ0FBaUJDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFFakYsTUFBTUMsYUFBYSxHQUFHLENBQUMsTUFBTSxJQUFJLENBQUN6SixJQUFJLENBQUNHLEVBQUUsQ0FBQ2hCLDJCQUEyQixDQUFDLEVBQUVpQixNQUFNO0lBRTlFLElBQUk7TUFDRixNQUFNc0osT0FBOEIsR0FBRyxFQUFFO01BRXpDLEtBQUssSUFBSUMsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxHQUFHRixhQUFhLEVBQUVFLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDekMsSUFBSUEsQ0FBQyxHQUFHLENBQUMsRUFBRTtVQUNULE1BQU0sSUFBSSxDQUFDM0osSUFBSSxDQUFDc0osS0FBSyxDQUFDLHVCQUF1QixFQUFFQyxFQUFFLElBQUtBLEVBQUUsQ0FBaUJDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDbkY7UUFFQSxNQUFNLElBQUksQ0FBQ3hKLElBQUksQ0FBQ3NKLEtBQUssQ0FBQyxHQUFHbkssMkJBQTJCLGNBQWN3SyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUVKLEVBQUUsSUFBS0EsRUFBRSxDQUFpQkMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUM5R0UsT0FBTyxDQUFDRSxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUNDLFlBQVksQ0FBQyxDQUFDLENBQUM7TUFDekM7TUFFQSxPQUFPO1FBQ0xDLE9BQU8sRUFBRSxJQUFJO1FBQ2JDLFFBQVEsRUFBRUw7TUFDWixDQUFDO0lBQ0gsQ0FBQyxDQUFDLE9BQU8vTCxDQUFDLEVBQUU7TUFDVixPQUFPO1FBQ0xtTSxPQUFPLEVBQUUsS0FBSztRQUNkRSxTQUFTLEVBQUVDLHlCQUFpQixDQUFDQyxPQUFPO1FBQ3BDQyxZQUFZLEVBQUd4TSxDQUFDLENBQVd5TTtNQUM3QixDQUFDO0lBQ0g7RUFDRjtFQUVBLE1BQWNDLHNCQUFzQkEsQ0FBQSxFQUEyQjtJQUM3RCxNQUFNLElBQUksQ0FBQ3JLLElBQUksQ0FBQ3NKLEtBQUssQ0FBQyxZQUFZL0sseUJBQXlCLElBQUksRUFBRWdMLEVBQUUsSUFBS0EsRUFBRSxDQUFpQkMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNuRyxNQUFNYyxLQUFLLEdBQUcsTUFBTSxJQUFBQywwQ0FBb0IsRUFBQyxJQUFJLENBQUN2SyxJQUFJLEVBQUV3SyxDQUFDLElBQUlBLENBQUMsQ0FBQ0MsR0FBRyxDQUFDLENBQUMsQ0FBQ0MsUUFBUSxDQUFDbE0sMkJBQTJCLENBQUMsQ0FBQztJQUN2RyxNQUFNbU0sU0FBUyxHQUFHLE1BQU0sSUFBQWhDLDJDQUFxQixFQUFDMkIsS0FBSyxFQUFFbEwsc0JBQXNCLENBQUMsQ0FDekV3TCxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FDaEJDLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQztJQUNyQixJQUFJLENBQUNGLFNBQVMsRUFBRTtNQUNkLE9BQU8sRUFBRTtJQUNYO0lBRUEsTUFBTWpELFVBQVUsR0FBRyxNQUFNRCwwQkFBMEIsQ0FBQzZDLEtBQUssQ0FBQztJQUMxRCxPQUFPNUMsVUFBVTtFQUNuQjtFQUVBLE1BQWNtQyxZQUFZQSxDQUFBLEVBQUc7SUFDM0IsTUFBTSxJQUFJLENBQUM3SixJQUFJLENBQUM4SyxlQUFlLENBQUMsWUFBWTFNLFFBQVEsSUFBSSxDQUFDO0lBQ3pELE1BQU0sSUFBSSxDQUFDNEIsSUFBSSxDQUFDc0osS0FBSyxDQUFDLFlBQVlsTCxRQUFRLElBQUksRUFBRW1MLEVBQUUsSUFBS0EsRUFBRSxDQUFpQkMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNsRixNQUFNLElBQUFiLDJDQUFxQixFQUFDLElBQUksQ0FBQzNJLElBQUksRUFBRSxZQUFZM0IsaUJBQWlCLElBQUksQ0FBQztJQUN6RSxNQUFNLElBQUksQ0FBQzJCLElBQUksQ0FBQ3NKLEtBQUssQ0FBQyxZQUFZakwsaUJBQWlCLElBQUksRUFBRWtMLEVBQUUsSUFBS0EsRUFBRSxDQUFpQkMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUUzRixNQUFNdUIsb0JBQW9CLEdBQUcsTUFBTSxJQUFJLENBQUMvSyxJQUFJLENBQUNTLENBQUMsQ0FBQyx1QkFBdUIsQ0FBQztJQUN2RSxNQUFNdUssbUJBQW1CLEdBQUcsTUFBTUQsb0JBQW9CLEVBQUVFLFdBQVcsQ0FBQyxPQUFPLENBQUM7SUFDNUUsTUFBTUMsYUFBYSxHQUFJLE1BQU1GLG1CQUFtQixFQUFFRyxTQUFTLENBQUMsQ0FBWTtJQUN4RSxJQUFJLENBQUNELGFBQWEsRUFBRTtNQUNsQixNQUFNLElBQUlFLEtBQUssQ0FBQywwQkFBMEIsQ0FBQztJQUM3QztJQUVBLE1BQU0sQ0FBQ25JLFFBQVEsRUFBRTVCLFVBQVUsQ0FBQyxHQUFHLE1BQU11RSxPQUFPLENBQUN5RixHQUFHLENBQzlDL00seUJBQXlCLENBQUNxRixHQUFHLENBQUMsTUFBTThHLEdBQUcsSUFBSTtNQUN6QyxNQUFNN0YsT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDNUUsSUFBSSxDQUFDc0wsY0FBYyxDQUFDYixHQUFHLENBQUM7TUFDbkQsTUFBTTVGLElBQUksR0FBR0YscUJBQXFCLENBQUNDLE9BQU8sRUFBRSxJQUFJLENBQUM3RSxPQUFPLENBQUNpQixTQUFTLENBQUM7TUFDbkUsTUFBTXVFLE9BQU8sR0FBR0Ysd0JBQXdCLENBQUNULE9BQU8sQ0FBQztNQUVqRCxPQUFPLENBQUMsTUFBTSxJQUFBMUIsMEJBQW1CLEVBQTRCLElBQUksQ0FBQ2xELElBQUksRUFBRXlLLEdBQUcsRUFBRTVGLElBQUksRUFBRVUsT0FBTyxDQUFDLEVBQUVBLE9BQU8sQ0FBQztJQUN2RyxDQUFDLENBQ0gsQ0FBQztJQUVELElBQUksQ0FBQ3RDLFFBQVEsSUFBSUEsUUFBUSxDQUFDc0ksTUFBTSxDQUFDekIsT0FBTyxLQUFLLEtBQUssRUFBRTtNQUNsRCxNQUFNLElBQUlzQixLQUFLLENBQ2IsaURBQWlEbkksUUFBUSxHQUFHQSxRQUFRLENBQUNzSSxNQUFNLENBQUNDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQ0MsSUFBSSxHQUFHLEVBQUUsRUFDbkcsQ0FBQztJQUNIO0lBRUEsTUFBTUMsWUFBWSxHQUFHekksUUFBUSxDQUFDRyxJQUFJLENBQUMrQixLQUFLLENBQUN3RyxJQUFJLENBQUN4SCxNQUFNLENBQUMyQixHQUFHLElBQUlBLEdBQUcsQ0FBQzhGLGdCQUFnQixDQUFDO0lBQ2pGLE1BQU1DLE1BQU0sR0FBRyxNQUFNckcsbUJBQW1CLENBQ3RDa0csWUFBWSxFQUNaLElBQUksQ0FBQzNMLE9BQU8sQ0FBQytMLGdDQUFnQyxHQUN6Q2hHLEdBQUcsSUFBSTNFLDBCQUEwQixDQUFDLElBQUksQ0FBQ25CLElBQUksRUFBRThGLEdBQUcsRUFBRXpFLFVBQVUsQ0FBQyxHQUM3RCxNQUFNdUUsT0FBTyxDQUFDbUcsT0FBTyxDQUFDO01BQUVySSxPQUFPLEVBQUUsQ0FBQyxDQUFDO01BQUVRLElBQUksRUFBRVE7SUFBVSxDQUFDLENBQUMsRUFDM0QsSUFBSSxDQUFDM0UsT0FBTyxDQUFDaU0sYUFBYSxFQUFFdEIsUUFBUSxDQUFDLG1DQUFtQyxDQUFDLEVBQ3pFLElBQUksQ0FBQzNLLE9BQ1AsQ0FBQztJQUVEOEwsTUFBTSxDQUNIMUgsTUFBTSxDQUFDcUUsR0FBRyxJQUFJLElBQUksQ0FBQ3lELG1CQUFtQixDQUFDekQsR0FBRyxDQUFDLENBQUMsQ0FDNUMwRCxPQUFPLENBQUMxRCxHQUFHLElBQUk7TUFDZEEsR0FBRyxDQUFDdEIsTUFBTSxHQUFHRSxpQ0FBbUIsQ0FBQ0MsT0FBTztJQUMxQyxDQUFDLENBQUM7O0lBRUo7SUFDQSxNQUFNOEUsV0FBVyxHQUFHeEwsY0FBYyxDQUFDLElBQUksQ0FBQ1osT0FBTyxDQUFDaUIsU0FBUyxDQUFDO0lBQzFELE1BQU1vTCxvQkFBb0IsR0FBR1AsTUFBTSxDQUFDMUgsTUFBTSxDQUFDcUUsR0FBRyxJQUFJLElBQUExSCxlQUFNLEVBQUMwSCxHQUFHLENBQUM5QixJQUFJLENBQUMsQ0FBQzJGLGFBQWEsQ0FBQ0YsV0FBVyxDQUFDLENBQUM7SUFFOUYsTUFBTXpFLFVBQVUsR0FBRyxNQUFNLElBQUksQ0FBQzJDLHNCQUFzQixDQUFDLENBQUM7SUFDdEQsTUFBTWlDLE1BQU0sR0FBR0Ysb0JBQW9CLENBQUNHLE1BQU0sQ0FBQzdFLFVBQVUsQ0FBQztJQUV0RCxPQUFPO01BQ0x3RCxhQUFhO01BQ2J6RixJQUFJLEVBQUU2RyxNQUFNO01BQ1pFLE9BQU8sRUFBRSxDQUFDdkosUUFBUSxDQUFDRyxJQUFJLENBQUNDLE1BQU0sRUFBRW9KO0lBQ2xDLENBQUM7RUFDSDtFQUVRUixtQkFBbUJBLENBQUN6RCxHQUFnQixFQUFXO0lBQ3JELElBQUksSUFBSSxDQUFDekksT0FBTyxDQUFDaU0sYUFBYSxFQUFFdEIsUUFBUSxDQUFDLCtCQUErQixDQUFDLElBQUksQ0FBQ2xDLEdBQUcsQ0FBQ2hDLFVBQVUsRUFBRTtNQUM1RjFJLEtBQUssQ0FBQyx3QkFBd0IwSyxHQUFHLENBQUN4QixXQUFXLG9DQUFvQyxDQUFDO01BQ2xGLE9BQU8sSUFBSTtJQUNiO0lBRUEsSUFDRSxJQUFJLENBQUNqSCxPQUFPLENBQUNpTSxhQUFhLEVBQUV0QixRQUFRLENBQUMsd0NBQXdDLENBQUMsSUFDOUVuTCxtQkFBbUIsQ0FBQ21MLFFBQVEsQ0FBQ2xDLEdBQUcsQ0FBQ3hCLFdBQVcsQ0FBQyxFQUM3QztNQUNBbEosS0FBSyxDQUFDLHdCQUF3QjBLLEdBQUcsQ0FBQ3hCLFdBQVcsMENBQTBDLENBQUM7TUFDeEYsT0FBTyxJQUFJO0lBQ2I7SUFFQSxPQUFPLEtBQUs7RUFDZDtBQUNGO0FBQUMsSUFBQTBGLFFBQUEsR0FBQUMsT0FBQSxDQUFBOU8sT0FBQSxHQUVjZ0wsY0FBYyIsImlnbm9yZUxpc3QiOltdfQ==
@@ -171,7 +171,7 @@ class OneZeroScraper extends _baseScraper.BaseScraper {
171
171
  txns: matchingMovements.map(movement => {
172
172
  const hasInstallments = movement.transaction?.enrichment?.recurrences?.some(x => x.isRecurrent);
173
173
  const modifier = movement.creditDebit === 'DEBIT' ? -1 : 1;
174
- return {
174
+ const result = {
175
175
  identifier: movement.movementId,
176
176
  date: movement.valueDate,
177
177
  chargedAmount: +movement.movementAmount * modifier,
@@ -183,6 +183,10 @@ class OneZeroScraper extends _baseScraper.BaseScraper {
183
183
  status: _transactions.TransactionStatuses.Completed,
184
184
  type: hasInstallments ? _transactions.TransactionTypes.Installments : _transactions.TransactionTypes.Normal
185
185
  };
186
+ if (this.options?.includeRawTransaction) {
187
+ result.rawTransaction = movement;
188
+ }
189
+ return result;
186
190
  })
187
191
  };
188
192
  }
@@ -235,4 +239,4 @@ class OneZeroScraper extends _baseScraper.BaseScraper {
235
239
  }
236
240
  }
237
241
  exports.default = OneZeroScraper;
238
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbW9tZW50IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfZGVidWciLCJfZmV0Y2giLCJfdHJhbnNhY3Rpb25zIiwiX2Jhc2VTY3JhcGVyIiwiX2Vycm9ycyIsIl9vbmVaZXJvUXVlcmllcyIsImUiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIkhFQlJFV19XT1JEU19SRUdFWCIsImRlYnVnIiwiZ2V0RGVidWciLCJJREVOVElUWV9TRVJWRVJfVVJMIiwiR1JBUEhRTF9BUElfVVJMIiwiT25lWmVyb1NjcmFwZXIiLCJCYXNlU2NyYXBlciIsInRyaWdnZXJUd29GYWN0b3JBdXRoIiwicGhvbmVOdW1iZXIiLCJzdGFydHNXaXRoIiwiY3JlYXRlR2VuZXJpY0Vycm9yIiwiZGV2aWNlVG9rZW5SZXNwb25zZSIsImZldGNoUG9zdCIsImV4dENsaWVudElkIiwib3MiLCJyZXN1bHREYXRhIiwiZGV2aWNlVG9rZW4iLCJvdHBQcmVwYXJlUmVzcG9uc2UiLCJmYWN0b3JWYWx1ZSIsIm90cENoYW5uZWwiLCJvdHBDb250ZXh0Iiwic3VjY2VzcyIsImdldExvbmdUZXJtVHdvRmFjdG9yVG9rZW4iLCJvdHBDb2RlIiwib3RwVmVyaWZ5UmVzcG9uc2UiLCJvdHBUb2tlbiIsImxvbmdUZXJtVHdvRmFjdG9yQXV0aFRva2VuIiwicmVzb2x2ZU90cFRva2VuIiwiY3JlZGVudGlhbHMiLCJvdHBMb25nVGVybVRva2VuIiwib3RwQ29kZVJldHJpZXZlciIsImVycm9yVHlwZSIsIlNjcmFwZXJFcnJvclR5cGVzIiwiVHdvRmFjdG9yUmV0cmlldmVyTWlzc2luZyIsImVycm9yTWVzc2FnZSIsInRyaWdnZXJSZXN1bHQiLCJvdHBUb2tlblJlc3VsdCIsImxvZ2luIiwiZ2V0SWRUb2tlblJlc3BvbnNlIiwib3RwU21zVG9rZW4iLCJlbWFpbCIsInBhc3MiLCJwYXNzd29yZCIsInBpbkNvZGUiLCJpZFRva2VuIiwiZ2V0U2Vzc2lvblRva2VuUmVzcG9uc2UiLCJhY2Nlc3NUb2tlbiIsInBlcnNpc3RlbnRPdHBUb2tlbiIsImZldGNoUG9ydGZvbGlvTW92ZW1lbnRzIiwicG9ydGZvbGlvIiwic3RhcnREYXRlIiwiYWNjb3VudCIsImFjY291bnRzIiwiY3Vyc29yIiwibW92ZW1lbnRzIiwibGVuZ3RoIiwiRGF0ZSIsIm1vdmVtZW50VGltZXN0YW1wIiwicG9ydGZvbGlvTnVtIiwibmV3TW92ZW1lbnRzIiwicGFnaW5hdGlvbiIsImZldGNoR3JhcGhxbCIsIkdFVF9NT1ZFTUVOVFMiLCJwb3J0Zm9saW9JZCIsImFjY291bnRJZCIsImxhbmd1YWdlIiwibGltaXQiLCJhdXRob3JpemF0aW9uIiwidW5zaGlmdCIsImhhc01vcmUiLCJzb3J0IiwieCIsInkiLCJ2YWx1ZU9mIiwibWF0Y2hpbmdNb3ZlbWVudHMiLCJmaWx0ZXIiLCJtb3ZlbWVudCIsImFjY291bnROdW1iZXIiLCJiYWxhbmNlIiwicGFyc2VGbG9hdCIsInJ1bm5pbmdCYWxhbmNlIiwidHhucyIsIm1hcCIsImhhc0luc3RhbGxtZW50cyIsInRyYW5zYWN0aW9uIiwiZW5yaWNobWVudCIsInJlY3VycmVuY2VzIiwic29tZSIsImlzUmVjdXJyZW50IiwibW9kaWZpZXIiLCJjcmVkaXREZWJpdCIsImlkZW50aWZpZXIiLCJtb3ZlbWVudElkIiwiZGF0ZSIsInZhbHVlRGF0ZSIsImNoYXJnZWRBbW91bnQiLCJtb3ZlbWVudEFtb3VudCIsImNoYXJnZWRDdXJyZW5jeSIsIm1vdmVtZW50Q3VycmVuY3kiLCJvcmlnaW5hbEFtb3VudCIsIm9yaWdpbmFsQ3VycmVuY3kiLCJkZXNjcmlwdGlvbiIsInNhbml0aXplSGVicmV3IiwicHJvY2Vzc2VkRGF0ZSIsInN0YXR1cyIsIlRyYW5zYWN0aW9uU3RhdHVzZXMiLCJDb21wbGV0ZWQiLCJ0eXBlIiwiVHJhbnNhY3Rpb25UeXBlcyIsIkluc3RhbGxtZW50cyIsIk5vcm1hbCIsInRleHQiLCJpbmNsdWRlcyIsInRyaW0iLCJwbGFpblN0cmluZyIsInJlcGxhY2UiLCJoZWJyZXdTdWJTdHJpbmdzUmFuZ2VzIiwibWF0Y2hBbGwiLCJyYW5nZXNUb1JldmVyc2UiLCJzdHIiLCJzdGFydCIsImluZGV4IiwiZW5kIiwib3V0IiwicHVzaCIsInN1YnN0cmluZyIsInJldmVyc2VkIiwicmV2ZXJzZSIsImpvaW4iLCJmZXRjaERhdGEiLCJkZWZhdWx0U3RhcnRNb21lbnQiLCJtb21lbnQiLCJzdWJ0cmFjdCIsImFkZCIsIm9wdGlvbnMiLCJ0b0RhdGUiLCJzdGFydE1vbWVudCIsIm1heCIsInJlc3VsdCIsIkdFVF9DVVNUT01FUiIsInBvcnRmb2xpb3MiLCJjdXN0b21lciIsImZsYXRNYXAiLCJQcm9taXNlIiwiYWxsIiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JhcGVycy9vbmUtemVyby50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudC9tb21lbnQnO1xuaW1wb3J0IHsgZ2V0RGVidWcgfSBmcm9tICcuLi9oZWxwZXJzL2RlYnVnJztcbmltcG9ydCB7IGZldGNoR3JhcGhxbCwgZmV0Y2hQb3N0IH0gZnJvbSAnLi4vaGVscGVycy9mZXRjaCc7XG5pbXBvcnQge1xuICB0eXBlIFRyYW5zYWN0aW9uIGFzIFNjcmFwaW5nVHJhbnNhY3Rpb24sXG4gIFRyYW5zYWN0aW9uU3RhdHVzZXMsXG4gIFRyYW5zYWN0aW9uVHlwZXMsXG4gIHR5cGUgVHJhbnNhY3Rpb25zQWNjb3VudCxcbn0gZnJvbSAnLi4vdHJhbnNhY3Rpb25zJztcbmltcG9ydCB7IEJhc2VTY3JhcGVyIH0gZnJvbSAnLi9iYXNlLXNjcmFwZXInO1xuaW1wb3J0IHsgU2NyYXBlckVycm9yVHlwZXMsIGNyZWF0ZUdlbmVyaWNFcnJvciB9IGZyb20gJy4vZXJyb3JzJztcbmltcG9ydCB7XG4gIHR5cGUgU2NyYXBlckdldExvbmdUZXJtVHdvRmFjdG9yVG9rZW5SZXN1bHQsXG4gIHR5cGUgU2NyYXBlckxvZ2luUmVzdWx0LFxuICB0eXBlIFNjcmFwZXJTY3JhcGluZ1Jlc3VsdCxcbiAgdHlwZSBTY3JhcGVyVHdvRmFjdG9yQXV0aFRyaWdnZXJSZXN1bHQsXG59IGZyb20gJy4vaW50ZXJmYWNlJztcbmltcG9ydCB7IEdFVF9DVVNUT01FUiwgR0VUX01PVkVNRU5UUyB9IGZyb20gJy4vb25lLXplcm8tcXVlcmllcyc7XG5cbmNvbnN0IEhFQlJFV19XT1JEU19SRUdFWCA9IC9bXFx1MDU5MC1cXHUwNUZGXVtcXHUwNTkwLVxcdTA1RkZcIidcXC1fIC9cXFxcXSpbXFx1MDU5MC1cXHUwNUZGXS9nO1xuXG5jb25zdCBkZWJ1ZyA9IGdldERlYnVnKCdvbmUtemVybycpO1xuXG50eXBlIEFjY291bnQgPSB7XG4gIGFjY291bnRJZDogc3RyaW5nO1xufTtcblxudHlwZSBQb3J0Zm9saW8gPSB7XG4gIGFjY291bnRzOiBBcnJheTxBY2NvdW50PjtcbiAgcG9ydGZvbGlvSWQ6IHN0cmluZztcbiAgcG9ydGZvbGlvTnVtOiBzdHJpbmc7XG59O1xuXG50eXBlIEN1c3RvbWVyID0ge1xuICBjdXN0b21lcklkOiBzdHJpbmc7XG4gIHBvcnRmb2xpb3M/OiBBcnJheTxQb3J0Zm9saW8+IHwgbnVsbDtcbn07XG5cbmV4cG9ydCB0eXBlIENhdGVnb3J5ID0ge1xuICBjYXRlZ29yeUlkOiBudW1iZXI7XG4gIGRhdGFTb3VyY2U6IHN0cmluZztcbiAgc3ViQ2F0ZWdvcnlJZD86IG51bWJlciB8IG51bGw7XG59O1xuXG5leHBvcnQgdHlwZSBSZWN1cnJlbmNlID0ge1xuICBkYXRhU291cmNlOiBzdHJpbmc7XG4gIGlzUmVjdXJyZW50OiBib29sZWFuO1xufTtcblxudHlwZSBUcmFuc2FjdGlvbkVucmljaG1lbnQgPSB7XG4gIGNhdGVnb3JpZXM/OiBDYXRlZ29yeVtdIHwgbnVsbDtcbiAgcmVjdXJyZW5jZXM/OiBSZWN1cnJlbmNlW10gfCBudWxsO1xufTtcblxudHlwZSBUcmFuc2FjdGlvbiA9IHtcbiAgZW5yaWNobWVudD86IFRyYW5zYWN0aW9uRW5yaWNobWVudCB8IG51bGw7XG4gIC8vIFRPRE86IEdldCBpbnN0YWxsbWVudHMgaW5mb3JtYXRpb24gaGVyZVxuICAvLyB0cmFuc2FjdGlvbkRldGFpbHM6IFRyYW5zYWN0aW9uRGV0YWlscztcbn07XG5cbnR5cGUgTW92ZW1lbnQgPSB7XG4gIGFjY291bnRJZDogc3RyaW5nO1xuICBiYW5rQ3VycmVuY3lBbW91bnQ6IHN0cmluZztcbiAgYm9va2luZ0RhdGU6IHN0cmluZztcbiAgY29udmVyc2lvblJhdGU6IHN0cmluZztcbiAgY3JlZGl0RGViaXQ6IHN0cmluZztcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgaXNSZXZlcnNlZDogYm9vbGVhbjtcbiAgbW92ZW1lbnRBbW91bnQ6IHN0cmluZztcbiAgbW92ZW1lbnRDdXJyZW5jeTogc3RyaW5nO1xuICBtb3ZlbWVudElkOiBzdHJpbmc7XG4gIG1vdmVtZW50UmV2ZXJzZWRJZD86IHN0cmluZyB8IG51bGw7XG4gIG1vdmVtZW50VGltZXN0YW1wOiBzdHJpbmc7XG4gIG1vdmVtZW50VHlwZTogc3RyaW5nO1xuICBwb3J0Zm9saW9JZDogc3RyaW5nO1xuICBydW5uaW5nQmFsYW5jZTogc3RyaW5nO1xuICB0cmFuc2FjdGlvbj86IFRyYW5zYWN0aW9uIHwgbnVsbDtcbiAgdmFsdWVEYXRlOiBzdHJpbmc7XG59O1xuXG50eXBlIFF1ZXJ5UGFnaW5hdGlvbiA9IHsgaGFzTW9yZTogYm9vbGVhbjsgY3Vyc29yOiBzdHJpbmcgfTtcblxuY29uc3QgSURFTlRJVFlfU0VSVkVSX1VSTCA9ICdodHRwczovL2lkZW50aXR5LnRmZC1iYW5rLmNvbS92MS8nO1xuXG5jb25zdCBHUkFQSFFMX0FQSV9VUkwgPSAnaHR0cHM6Ly9tb2JpbGUudGZkLWJhbmsuY29tL21vYmlsZS1ncmFwaC9ncmFwaHFsJztcblxudHlwZSBTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscyA9IHsgZW1haWw6IHN0cmluZzsgcGFzc3dvcmQ6IHN0cmluZyB9ICYgKFxuICB8IHtcbiAgICAgIG90cENvZGVSZXRyaWV2ZXI6ICgpID0+IFByb21pc2U8c3RyaW5nPjtcbiAgICAgIHBob25lTnVtYmVyOiBzdHJpbmc7XG4gICAgfVxuICB8IHtcbiAgICAgIG90cExvbmdUZXJtVG9rZW46IHN0cmluZztcbiAgICB9XG4pO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBPbmVaZXJvU2NyYXBlciBleHRlbmRzIEJhc2VTY3JhcGVyPFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzPiB7XG4gIHByaXZhdGUgb3RwQ29udGV4dD86IHN0cmluZztcblxuICBwcml2YXRlIGFjY2Vzc1Rva2VuPzogc3RyaW5nO1xuXG4gIGFzeW5jIHRyaWdnZXJUd29GYWN0b3JBdXRoKHBob25lTnVtYmVyOiBzdHJpbmcpOiBQcm9taXNlPFNjcmFwZXJUd29GYWN0b3JBdXRoVHJpZ2dlclJlc3VsdD4ge1xuICAgIGlmICghcGhvbmVOdW1iZXIuc3RhcnRzV2l0aCgnKycpKSB7XG4gICAgICByZXR1cm4gY3JlYXRlR2VuZXJpY0Vycm9yKFxuICAgICAgICAnQSBmdWxsIGludGVybmF0aW9uYWwgcGhvbmUgbnVtYmVyIHN0YXJ0aW5nIHdpdGggKyBhbmQgYSB0aHJlZSBkaWdpdCBjb3VudHJ5IGNvZGUgaXMgcmVxdWlyZWQnLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBkZWJ1ZygnRmV0Y2hpbmcgZGV2aWNlIHRva2VuJyk7XG4gICAgY29uc3QgZGV2aWNlVG9rZW5SZXNwb25zZSA9IGF3YWl0IGZldGNoUG9zdChgJHtJREVOVElUWV9TRVJWRVJfVVJMfS9kZXZpY2VzL3Rva2VuYCwge1xuICAgICAgZXh0Q2xpZW50SWQ6ICdtb2JpbGUnLFxuICAgICAgb3M6ICdBbmRyb2lkJyxcbiAgICB9KTtcblxuICAgIGNvbnN0IHtcbiAgICAgIHJlc3VsdERhdGE6IHsgZGV2aWNlVG9rZW4gfSxcbiAgICB9ID0gZGV2aWNlVG9rZW5SZXNwb25zZTtcblxuICAgIGRlYnVnKGBTZW5kaW5nIE9UUCB0byBwaG9uZSBudW1iZXIgJHtwaG9uZU51bWJlcn1gKTtcblxuICAgIGNvbnN0IG90cFByZXBhcmVSZXNwb25zZSA9IGF3YWl0IGZldGNoUG9zdChgJHtJREVOVElUWV9TRVJWRVJfVVJMfS9vdHAvcHJlcGFyZWAsIHtcbiAgICAgIGZhY3RvclZhbHVlOiBwaG9uZU51bWJlcixcbiAgICAgIGRldmljZVRva2VuLFxuICAgICAgb3RwQ2hhbm5lbDogJ1NNU19PVFAnLFxuICAgIH0pO1xuXG4gICAgY29uc3Qge1xuICAgICAgcmVzdWx0RGF0YTogeyBvdHBDb250ZXh0IH0sXG4gICAgfSA9IG90cFByZXBhcmVSZXNwb25zZTtcblxuICAgIHRoaXMub3RwQ29udGV4dCA9IG90cENvbnRleHQ7XG5cbiAgICByZXR1cm4ge1xuICAgICAgc3VjY2VzczogdHJ1ZSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldExvbmdUZXJtVHdvRmFjdG9yVG9rZW4ob3RwQ29kZTogc3RyaW5nKTogUHJvbWlzZTxTY3JhcGVyR2V0TG9uZ1Rlcm1Ud29GYWN0b3JUb2tlblJlc3VsdD4ge1xuICAgIGlmICghdGhpcy5vdHBDb250ZXh0KSB7XG4gICAgICByZXR1cm4gY3JlYXRlR2VuZXJpY0Vycm9yKCd0cmlnZ2VyT3RwIHdhcyBub3QgY2FsbGVkIGJlZm9yZSBjYWxsaW5nIGdldFBlcm1lbmFudE90cFRva2VuKCknKTtcbiAgICB9XG5cbiAgICBkZWJ1ZygnUmVxdWVzdGluZyBPVFAgdG9rZW4nKTtcbiAgICBjb25zdCBvdHBWZXJpZnlSZXNwb25zZSA9IGF3YWl0IGZldGNoUG9zdChgJHtJREVOVElUWV9TRVJWRVJfVVJMfS9vdHAvdmVyaWZ5YCwge1xuICAgICAgb3RwQ29udGV4dDogdGhpcy5vdHBDb250ZXh0LFxuICAgICAgb3RwQ29kZSxcbiAgICB9KTtcblxuICAgIGNvbnN0IHtcbiAgICAgIHJlc3VsdERhdGE6IHsgb3RwVG9rZW4gfSxcbiAgICB9ID0gb3RwVmVyaWZ5UmVzcG9uc2U7XG4gICAgcmV0dXJuIHsgc3VjY2VzczogdHJ1ZSwgbG9uZ1Rlcm1Ud29GYWN0b3JBdXRoVG9rZW46IG90cFRva2VuIH07XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHJlc29sdmVPdHBUb2tlbihcbiAgICBjcmVkZW50aWFsczogU2NyYXBlclNwZWNpZmljQ3JlZGVudGlhbHMsXG4gICk6IFByb21pc2U8U2NyYXBlckdldExvbmdUZXJtVHdvRmFjdG9yVG9rZW5SZXN1bHQ+IHtcbiAgICBpZiAoJ290cExvbmdUZXJtVG9rZW4nIGluIGNyZWRlbnRpYWxzKSB7XG4gICAgICBpZiAoIWNyZWRlbnRpYWxzLm90cExvbmdUZXJtVG9rZW4pIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZUdlbmVyaWNFcnJvcignSW52YWxpZCBvdHBMb25nVGVybVRva2VuJyk7XG4gICAgICB9XG4gICAgICByZXR1cm4geyBzdWNjZXNzOiB0cnVlLCBsb25nVGVybVR3b0ZhY3RvckF1dGhUb2tlbjogY3JlZGVudGlhbHMub3RwTG9uZ1Rlcm1Ub2tlbiB9O1xuICAgIH1cblxuICAgIGlmICghY3JlZGVudGlhbHMub3RwQ29kZVJldHJpZXZlcikge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc3VjY2VzczogZmFsc2UsXG4gICAgICAgIGVycm9yVHlwZTogU2NyYXBlckVycm9yVHlwZXMuVHdvRmFjdG9yUmV0cmlldmVyTWlzc2luZyxcbiAgICAgICAgZXJyb3JNZXNzYWdlOiAnb3RwQ29kZVJldHJpZXZlciBpcyByZXF1aXJlZCB3aGVuIG90cFBlcm1hbmVudFRva2VuIGlzIG5vdCBwcm92aWRlZCcsXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmICghY3JlZGVudGlhbHMucGhvbmVOdW1iZXIpIHtcbiAgICAgIHJldHVybiBjcmVhdGVHZW5lcmljRXJyb3IoJ3Bob25lTnVtYmVyIGlzIHJlcXVpcmVkIHdoZW4gcHJvdmlkaW5nIGEgb3RwQ29kZVJldHJpZXZlciBjYWxsYmFjaycpO1xuICAgIH1cblxuICAgIGRlYnVnKCdUcmlnZ2VyaW5nIHVzZXIgc3VwcGxpZWQgb3RwQ29kZVJldHJpZXZlciBjYWxsYmFjaycpO1xuICAgIGNvbnN0IHRyaWdnZXJSZXN1bHQgPSBhd2FpdCB0aGlzLnRyaWdnZXJUd29GYWN0b3JBdXRoKGNyZWRlbnRpYWxzLnBob25lTnVtYmVyKTtcblxuICAgIGlmICghdHJpZ2dlclJlc3VsdC5zdWNjZXNzKSB7XG4gICAgICByZXR1cm4gdHJpZ2dlclJlc3VsdDtcbiAgICB9XG5cbiAgICBjb25zdCBvdHBDb2RlID0gYXdhaXQgY3JlZGVudGlhbHMub3RwQ29kZVJldHJpZXZlcigpO1xuXG4gICAgY29uc3Qgb3RwVG9rZW5SZXN1bHQgPSBhd2FpdCB0aGlzLmdldExvbmdUZXJtVHdvRmFjdG9yVG9rZW4ob3RwQ29kZSk7XG4gICAgaWYgKCFvdHBUb2tlblJlc3VsdC5zdWNjZXNzKSB7XG4gICAgICByZXR1cm4gb3RwVG9rZW5SZXN1bHQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgc3VjY2VzczogdHJ1ZSwgbG9uZ1Rlcm1Ud29GYWN0b3JBdXRoVG9rZW46IG90cFRva2VuUmVzdWx0LmxvbmdUZXJtVHdvRmFjdG9yQXV0aFRva2VuIH07XG4gIH1cblxuICBhc3luYyBsb2dpbihjcmVkZW50aWFsczogU2NyYXBlclNwZWNpZmljQ3JlZGVudGlhbHMpOiBQcm9taXNlPFNjcmFwZXJMb2dpblJlc3VsdD4ge1xuICAgIGNvbnN0IG90cFRva2VuUmVzdWx0ID0gYXdhaXQgdGhpcy5yZXNvbHZlT3RwVG9rZW4oY3JlZGVudGlhbHMpO1xuICAgIGlmICghb3RwVG9rZW5SZXN1bHQuc3VjY2Vzcykge1xuICAgICAgcmV0dXJuIG90cFRva2VuUmVzdWx0O1xuICAgIH1cblxuICAgIGRlYnVnKCdSZXF1ZXN0aW5nIGlkIHRva2VuJyk7XG4gICAgY29uc3QgZ2V0SWRUb2tlblJlc3BvbnNlID0gYXdhaXQgZmV0Y2hQb3N0KGAke0lERU5USVRZX1NFUlZFUl9VUkx9L2dldElkVG9rZW5gLCB7XG4gICAgICBvdHBTbXNUb2tlbjogb3RwVG9rZW5SZXN1bHQubG9uZ1Rlcm1Ud29GYWN0b3JBdXRoVG9rZW4sXG4gICAgICBlbWFpbDogY3JlZGVudGlhbHMuZW1haWwsXG4gICAgICBwYXNzOiBjcmVkZW50aWFscy5wYXNzd29yZCxcbiAgICAgIHBpbkNvZGU6ICcnLFxuICAgIH0pO1xuXG4gICAgY29uc3Qge1xuICAgICAgcmVzdWx0RGF0YTogeyBpZFRva2VuIH0sXG4gICAgfSA9IGdldElkVG9rZW5SZXNwb25zZTtcblxuICAgIGRlYnVnKCdSZXF1ZXN0aW5nIHNlc3Npb24gdG9rZW4nKTtcblxuICAgIGNvbnN0IGdldFNlc3Npb25Ub2tlblJlc3BvbnNlID0gYXdhaXQgZmV0Y2hQb3N0KGAke0lERU5USVRZX1NFUlZFUl9VUkx9L3Nlc3Npb25zL3Rva2VuYCwge1xuICAgICAgaWRUb2tlbixcbiAgICAgIHBhc3M6IGNyZWRlbnRpYWxzLnBhc3N3b3JkLFxuICAgIH0pO1xuXG4gICAgY29uc3Qge1xuICAgICAgcmVzdWx0RGF0YTogeyBhY2Nlc3NUb2tlbiB9LFxuICAgIH0gPSBnZXRTZXNzaW9uVG9rZW5SZXNwb25zZTtcblxuICAgIHRoaXMuYWNjZXNzVG9rZW4gPSBhY2Nlc3NUb2tlbjtcblxuICAgIHJldHVybiB7XG4gICAgICBzdWNjZXNzOiB0cnVlLFxuICAgICAgcGVyc2lzdGVudE90cFRva2VuOiBvdHBUb2tlblJlc3VsdC5sb25nVGVybVR3b0ZhY3RvckF1dGhUb2tlbixcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBmZXRjaFBvcnRmb2xpb01vdmVtZW50cyhwb3J0Zm9saW86IFBvcnRmb2xpbywgc3RhcnREYXRlOiBEYXRlKTogUHJvbWlzZTxUcmFuc2FjdGlvbnNBY2NvdW50PiB7XG4gICAgLy8gVE9ETzogRmluZCBvdXQgaWYgd2UgbmVlZCB0aGUgb3RoZXIgYWNjb3VudHMsIHRoZXJlIHNlZW1zIHRvIGFsd2F5cyBiZSBvbmVcbiAgICBjb25zdCBhY2NvdW50ID0gcG9ydGZvbGlvLmFjY291bnRzWzBdO1xuICAgIGxldCBjdXJzb3IgPSBudWxsO1xuICAgIGNvbnN0IG1vdmVtZW50cyA9IFtdO1xuXG4gICAgd2hpbGUgKCFtb3ZlbWVudHMubGVuZ3RoIHx8IG5ldyBEYXRlKG1vdmVtZW50c1swXS5tb3ZlbWVudFRpbWVzdGFtcCkgPj0gc3RhcnREYXRlKSB7XG4gICAgICBkZWJ1ZyhgRmV0Y2hpbmcgdHJhbnNhY3Rpb25zIGZvciBhY2NvdW50ICR7cG9ydGZvbGlvLnBvcnRmb2xpb051bX0uLi5gKTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgbW92ZW1lbnRzOiB7IG1vdmVtZW50czogbmV3TW92ZW1lbnRzLCBwYWdpbmF0aW9uIH0sXG4gICAgICB9OiB7IG1vdmVtZW50czogeyBtb3ZlbWVudHM6IE1vdmVtZW50W107IHBhZ2luYXRpb246IFF1ZXJ5UGFnaW5hdGlvbiB9IH0gPSBhd2FpdCBmZXRjaEdyYXBocWwoXG4gICAgICAgIEdSQVBIUUxfQVBJX1VSTCxcbiAgICAgICAgR0VUX01PVkVNRU5UUyxcbiAgICAgICAge1xuICAgICAgICAgIHBvcnRmb2xpb0lkOiBwb3J0Zm9saW8ucG9ydGZvbGlvSWQsXG4gICAgICAgICAgYWNjb3VudElkOiBhY2NvdW50LmFjY291bnRJZCxcbiAgICAgICAgICBsYW5ndWFnZTogJ0hFQlJFVycsXG4gICAgICAgICAgcGFnaW5hdGlvbjoge1xuICAgICAgICAgICAgY3Vyc29yLFxuICAgICAgICAgICAgbGltaXQ6IDUwLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHsgYXV0aG9yaXphdGlvbjogYEJlYXJlciAke3RoaXMuYWNjZXNzVG9rZW59YCB9LFxuICAgICAgKTtcblxuICAgICAgbW92ZW1lbnRzLnVuc2hpZnQoLi4ubmV3TW92ZW1lbnRzKTtcbiAgICAgIGN1cnNvciA9IHBhZ2luYXRpb24uY3Vyc29yO1xuICAgICAgaWYgKCFwYWdpbmF0aW9uLmhhc01vcmUpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbW92ZW1lbnRzLnNvcnQoKHgsIHkpID0+IG5ldyBEYXRlKHgubW92ZW1lbnRUaW1lc3RhbXApLnZhbHVlT2YoKSAtIG5ldyBEYXRlKHkubW92ZW1lbnRUaW1lc3RhbXApLnZhbHVlT2YoKSk7XG5cbiAgICBjb25zdCBtYXRjaGluZ01vdmVtZW50cyA9IG1vdmVtZW50cy5maWx0ZXIobW92ZW1lbnQgPT4gbmV3IERhdGUobW92ZW1lbnQubW92ZW1lbnRUaW1lc3RhbXApID49IHN0YXJ0RGF0ZSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGFjY291bnROdW1iZXI6IHBvcnRmb2xpby5wb3J0Zm9saW9OdW0sXG4gICAgICBiYWxhbmNlOiAhbW92ZW1lbnRzLmxlbmd0aCA/IDAgOiBwYXJzZUZsb2F0KG1vdmVtZW50c1ttb3ZlbWVudHMubGVuZ3RoIC0gMV0ucnVubmluZ0JhbGFuY2UpLFxuICAgICAgdHhuczogbWF0Y2hpbmdNb3ZlbWVudHMubWFwKChtb3ZlbWVudCk6IFNjcmFwaW5nVHJhbnNhY3Rpb24gPT4ge1xuICAgICAgICBjb25zdCBoYXNJbnN0YWxsbWVudHMgPSBtb3ZlbWVudC50cmFuc2FjdGlvbj8uZW5yaWNobWVudD8ucmVjdXJyZW5jZXM/LnNvbWUoeCA9PiB4LmlzUmVjdXJyZW50KTtcbiAgICAgICAgY29uc3QgbW9kaWZpZXIgPSBtb3ZlbWVudC5jcmVkaXREZWJpdCA9PT0gJ0RFQklUJyA/IC0xIDogMTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBpZGVudGlmaWVyOiBtb3ZlbWVudC5tb3ZlbWVudElkLFxuICAgICAgICAgIGRhdGU6IG1vdmVtZW50LnZhbHVlRGF0ZSxcbiAgICAgICAgICBjaGFyZ2VkQW1vdW50OiArbW92ZW1lbnQubW92ZW1lbnRBbW91bnQgKiBtb2RpZmllcixcbiAgICAgICAgICBjaGFyZ2VkQ3VycmVuY3k6IG1vdmVtZW50Lm1vdmVtZW50Q3VycmVuY3ksXG4gICAgICAgICAgb3JpZ2luYWxBbW91bnQ6ICttb3ZlbWVudC5tb3ZlbWVudEFtb3VudCAqIG1vZGlmaWVyLFxuICAgICAgICAgIG9yaWdpbmFsQ3VycmVuY3k6IG1vdmVtZW50Lm1vdmVtZW50Q3VycmVuY3ksXG4gICAgICAgICAgZGVzY3JpcHRpb246IHRoaXMuc2FuaXRpemVIZWJyZXcobW92ZW1lbnQuZGVzY3JpcHRpb24pLFxuICAgICAgICAgIHByb2Nlc3NlZERhdGU6IG1vdmVtZW50Lm1vdmVtZW50VGltZXN0YW1wLFxuICAgICAgICAgIHN0YXR1czogVHJhbnNhY3Rpb25TdGF0dXNlcy5Db21wbGV0ZWQsXG4gICAgICAgICAgdHlwZTogaGFzSW5zdGFsbG1lbnRzID8gVHJhbnNhY3Rpb25UeXBlcy5JbnN0YWxsbWVudHMgOiBUcmFuc2FjdGlvblR5cGVzLk5vcm1hbCxcbiAgICAgICAgfTtcbiAgICAgIH0pLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogb25lIHplcm8gaGVicmV3IHN0cmluZ3MgYXJlIHJldmVyc2VkIHdpdGggYSB1bmljb2RlIGNvbnRyb2wgY2hhcmFjdGVyIHRoYXQgZm9yY2VzIGRpc3BsYXkgaW4gTFRSIG9yZGVyXG4gICAqIFdlIG5lZWQgdG8gcmVtb3ZlIHRoZSB1bmljb2RlIGNvbnRyb2wgY2hhcmFjdGVyLCBhbmQgdGhlbiByZXZlcnNlIGhlYnJldyBzdWJzdHJpbmdzIGluc2lkZSB0aGUgc3RyaW5nXG4gICAqL1xuICBwcml2YXRlIHNhbml0aXplSGVicmV3KHRleHQ6IHN0cmluZykge1xuICAgIGlmICghdGV4dC5pbmNsdWRlcygnXFx1MjAyZCcpKSB7XG4gICAgICByZXR1cm4gdGV4dC50cmltKCk7XG4gICAgfVxuXG4gICAgY29uc3QgcGxhaW5TdHJpbmcgPSB0ZXh0LnJlcGxhY2UoL1xcdTIwMmQvZ2ksICcnKS50cmltKCk7XG4gICAgY29uc3QgaGVicmV3U3ViU3RyaW5nc1JhbmdlcyA9IFsuLi5wbGFpblN0cmluZy5tYXRjaEFsbChIRUJSRVdfV09SRFNfUkVHRVgpXTtcbiAgICBjb25zdCByYW5nZXNUb1JldmVyc2UgPSBoZWJyZXdTdWJTdHJpbmdzUmFuZ2VzLm1hcChzdHIgPT4gKHsgc3RhcnQ6IHN0ci5pbmRleCEsIGVuZDogc3RyLmluZGV4ISArIHN0clswXS5sZW5ndGggfSkpO1xuICAgIGNvbnN0IG91dCA9IFtdO1xuICAgIGxldCBpbmRleCA9IDA7XG5cbiAgICBmb3IgKGNvbnN0IHsgc3RhcnQsIGVuZCB9IG9mIHJhbmdlc1RvUmV2ZXJzZSkge1xuICAgICAgb3V0LnB1c2goLi4ucGxhaW5TdHJpbmcuc3Vic3RyaW5nKGluZGV4LCBzdGFydCkpO1xuICAgICAgaW5kZXggKz0gc3RhcnQgLSBpbmRleDtcbiAgICAgIGNvbnN0IHJldmVyc2VkID0gWy4uLnBsYWluU3RyaW5nLnN1YnN0cmluZyhzdGFydCwgZW5kKV0ucmV2ZXJzZSgpO1xuICAgICAgb3V0LnB1c2goLi4ucmV2ZXJzZWQpO1xuICAgICAgaW5kZXggKz0gZW5kIC0gc3RhcnQ7XG4gICAgfVxuXG4gICAgb3V0LnB1c2goLi4ucGxhaW5TdHJpbmcuc3Vic3RyaW5nKGluZGV4LCBwbGFpblN0cmluZy5sZW5ndGgpKTtcblxuICAgIHJldHVybiBvdXQuam9pbignJyk7XG4gIH1cblxuICBhc3luYyBmZXRjaERhdGEoKTogUHJvbWlzZTxTY3JhcGVyU2NyYXBpbmdSZXN1bHQ+IHtcbiAgICBpZiAoIXRoaXMuYWNjZXNzVG9rZW4pIHtcbiAgICAgIHJldHVybiBjcmVhdGVHZW5lcmljRXJyb3IoJ2xvZ2luKCkgd2FzIG5vdCBjYWxsZWQnKTtcbiAgICB9XG5cbiAgICBjb25zdCBkZWZhdWx0U3RhcnRNb21lbnQgPSBtb21lbnQoKS5zdWJ0cmFjdCgxLCAneWVhcnMnKS5hZGQoMSwgJ2RheScpO1xuICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IHRoaXMub3B0aW9ucy5zdGFydERhdGUgfHwgZGVmYXVsdFN0YXJ0TW9tZW50LnRvRGF0ZSgpO1xuICAgIGNvbnN0IHN0YXJ0TW9tZW50ID0gbW9tZW50Lm1heChkZWZhdWx0U3RhcnRNb21lbnQsIG1vbWVudChzdGFydERhdGUpKTtcblxuICAgIGRlYnVnKCdGZXRjaGluZyBhY2NvdW50IGxpc3QnKTtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBmZXRjaEdyYXBocWw8eyBjdXN0b21lcjogQ3VzdG9tZXJbXSB9PihcbiAgICAgIEdSQVBIUUxfQVBJX1VSTCxcbiAgICAgIEdFVF9DVVNUT01FUixcbiAgICAgIHt9LFxuICAgICAgeyBhdXRob3JpemF0aW9uOiBgQmVhcmVyICR7dGhpcy5hY2Nlc3NUb2tlbn1gIH0sXG4gICAgKTtcbiAgICBjb25zdCBwb3J0Zm9saW9zID0gcmVzdWx0LmN1c3RvbWVyLmZsYXRNYXAoY3VzdG9tZXIgPT4gY3VzdG9tZXIucG9ydGZvbGlvcyB8fCBbXSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgc3VjY2VzczogdHJ1ZSxcbiAgICAgIGFjY291bnRzOiBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgcG9ydGZvbGlvcy5tYXAocG9ydGZvbGlvID0+IHRoaXMuZmV0Y2hQb3J0Zm9saW9Nb3ZlbWVudHMocG9ydGZvbGlvLCBzdGFydE1vbWVudC50b0RhdGUoKSkpLFxuICAgICAgKSxcbiAgICB9O1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLE1BQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLE1BQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLGFBQUEsR0FBQUgsT0FBQTtBQU1BLElBQUFJLFlBQUEsR0FBQUosT0FBQTtBQUNBLElBQUFLLE9BQUEsR0FBQUwsT0FBQTtBQU9BLElBQUFNLGVBQUEsR0FBQU4sT0FBQTtBQUFpRSxTQUFBRCx1QkFBQVEsQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLEtBQUFFLE9BQUEsRUFBQUYsQ0FBQTtBQUVqRSxNQUFNRyxrQkFBa0IsR0FBRywwREFBMEQ7QUFFckYsTUFBTUMsS0FBSyxHQUFHLElBQUFDLGVBQVEsRUFBQyxVQUFVLENBQUM7QUE2RGxDLE1BQU1DLG1CQUFtQixHQUFHLG1DQUFtQztBQUUvRCxNQUFNQyxlQUFlLEdBQUcsa0RBQWtEO0FBWTNELE1BQU1DLGNBQWMsU0FBU0Msd0JBQVcsQ0FBNkI7RUFLbEYsTUFBTUMsb0JBQW9CQSxDQUFDQyxXQUFtQixFQUE4QztJQUMxRixJQUFJLENBQUNBLFdBQVcsQ0FBQ0MsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFO01BQ2hDLE9BQU8sSUFBQUMsMEJBQWtCLEVBQ3ZCLDhGQUNGLENBQUM7SUFDSDtJQUVBVCxLQUFLLENBQUMsdUJBQXVCLENBQUM7SUFDOUIsTUFBTVUsbUJBQW1CLEdBQUcsTUFBTSxJQUFBQyxnQkFBUyxFQUFDLEdBQUdULG1CQUFtQixnQkFBZ0IsRUFBRTtNQUNsRlUsV0FBVyxFQUFFLFFBQVE7TUFDckJDLEVBQUUsRUFBRTtJQUNOLENBQUMsQ0FBQztJQUVGLE1BQU07TUFDSkMsVUFBVSxFQUFFO1FBQUVDO01BQVk7SUFDNUIsQ0FBQyxHQUFHTCxtQkFBbUI7SUFFdkJWLEtBQUssQ0FBQywrQkFBK0JPLFdBQVcsRUFBRSxDQUFDO0lBRW5ELE1BQU1TLGtCQUFrQixHQUFHLE1BQU0sSUFBQUwsZ0JBQVMsRUFBQyxHQUFHVCxtQkFBbUIsY0FBYyxFQUFFO01BQy9FZSxXQUFXLEVBQUVWLFdBQVc7TUFDeEJRLFdBQVc7TUFDWEcsVUFBVSxFQUFFO0lBQ2QsQ0FBQyxDQUFDO0lBRUYsTUFBTTtNQUNKSixVQUFVLEVBQUU7UUFBRUs7TUFBVztJQUMzQixDQUFDLEdBQUdILGtCQUFrQjtJQUV0QixJQUFJLENBQUNHLFVBQVUsR0FBR0EsVUFBVTtJQUU1QixPQUFPO01BQ0xDLE9BQU8sRUFBRTtJQUNYLENBQUM7RUFDSDtFQUVBLE1BQWFDLHlCQUF5QkEsQ0FBQ0MsT0FBZSxFQUFtRDtJQUN2RyxJQUFJLENBQUMsSUFBSSxDQUFDSCxVQUFVLEVBQUU7TUFDcEIsT0FBTyxJQUFBViwwQkFBa0IsRUFBQyxpRUFBaUUsQ0FBQztJQUM5RjtJQUVBVCxLQUFLLENBQUMsc0JBQXNCLENBQUM7SUFDN0IsTUFBTXVCLGlCQUFpQixHQUFHLE1BQU0sSUFBQVosZ0JBQVMsRUFBQyxHQUFHVCxtQkFBbUIsYUFBYSxFQUFFO01BQzdFaUIsVUFBVSxFQUFFLElBQUksQ0FBQ0EsVUFBVTtNQUMzQkc7SUFDRixDQUFDLENBQUM7SUFFRixNQUFNO01BQ0pSLFVBQVUsRUFBRTtRQUFFVTtNQUFTO0lBQ3pCLENBQUMsR0FBR0QsaUJBQWlCO0lBQ3JCLE9BQU87TUFBRUgsT0FBTyxFQUFFLElBQUk7TUFBRUssMEJBQTBCLEVBQUVEO0lBQVMsQ0FBQztFQUNoRTtFQUVBLE1BQWNFLGVBQWVBLENBQzNCQyxXQUF1QyxFQUNVO0lBQ2pELElBQUksa0JBQWtCLElBQUlBLFdBQVcsRUFBRTtNQUNyQyxJQUFJLENBQUNBLFdBQVcsQ0FBQ0MsZ0JBQWdCLEVBQUU7UUFDakMsT0FBTyxJQUFBbkIsMEJBQWtCLEVBQUMsMEJBQTBCLENBQUM7TUFDdkQ7TUFDQSxPQUFPO1FBQUVXLE9BQU8sRUFBRSxJQUFJO1FBQUVLLDBCQUEwQixFQUFFRSxXQUFXLENBQUNDO01BQWlCLENBQUM7SUFDcEY7SUFFQSxJQUFJLENBQUNELFdBQVcsQ0FBQ0UsZ0JBQWdCLEVBQUU7TUFDakMsT0FBTztRQUNMVCxPQUFPLEVBQUUsS0FBSztRQUNkVSxTQUFTLEVBQUVDLHlCQUFpQixDQUFDQyx5QkFBeUI7UUFDdERDLFlBQVksRUFBRTtNQUNoQixDQUFDO0lBQ0g7SUFFQSxJQUFJLENBQUNOLFdBQVcsQ0FBQ3BCLFdBQVcsRUFBRTtNQUM1QixPQUFPLElBQUFFLDBCQUFrQixFQUFDLG9FQUFvRSxDQUFDO0lBQ2pHO0lBRUFULEtBQUssQ0FBQyxvREFBb0QsQ0FBQztJQUMzRCxNQUFNa0MsYUFBYSxHQUFHLE1BQU0sSUFBSSxDQUFDNUIsb0JBQW9CLENBQUNxQixXQUFXLENBQUNwQixXQUFXLENBQUM7SUFFOUUsSUFBSSxDQUFDMkIsYUFBYSxDQUFDZCxPQUFPLEVBQUU7TUFDMUIsT0FBT2MsYUFBYTtJQUN0QjtJQUVBLE1BQU1aLE9BQU8sR0FBRyxNQUFNSyxXQUFXLENBQUNFLGdCQUFnQixDQUFDLENBQUM7SUFFcEQsTUFBTU0sY0FBYyxHQUFHLE1BQU0sSUFBSSxDQUFDZCx5QkFBeUIsQ0FBQ0MsT0FBTyxDQUFDO0lBQ3BFLElBQUksQ0FBQ2EsY0FBYyxDQUFDZixPQUFPLEVBQUU7TUFDM0IsT0FBT2UsY0FBYztJQUN2QjtJQUVBLE9BQU87TUFBRWYsT0FBTyxFQUFFLElBQUk7TUFBRUssMEJBQTBCLEVBQUVVLGNBQWMsQ0FBQ1Y7SUFBMkIsQ0FBQztFQUNqRztFQUVBLE1BQU1XLEtBQUtBLENBQUNULFdBQXVDLEVBQStCO0lBQ2hGLE1BQU1RLGNBQWMsR0FBRyxNQUFNLElBQUksQ0FBQ1QsZUFBZSxDQUFDQyxXQUFXLENBQUM7SUFDOUQsSUFBSSxDQUFDUSxjQUFjLENBQUNmLE9BQU8sRUFBRTtNQUMzQixPQUFPZSxjQUFjO0lBQ3ZCO0lBRUFuQyxLQUFLLENBQUMscUJBQXFCLENBQUM7SUFDNUIsTUFBTXFDLGtCQUFrQixHQUFHLE1BQU0sSUFBQTFCLGdCQUFTLEVBQUMsR0FBR1QsbUJBQW1CLGFBQWEsRUFBRTtNQUM5RW9DLFdBQVcsRUFBRUgsY0FBYyxDQUFDViwwQkFBMEI7TUFDdERjLEtBQUssRUFBRVosV0FBVyxDQUFDWSxLQUFLO01BQ3hCQyxJQUFJLEVBQUViLFdBQVcsQ0FBQ2MsUUFBUTtNQUMxQkMsT0FBTyxFQUFFO0lBQ1gsQ0FBQyxDQUFDO0lBRUYsTUFBTTtNQUNKNUIsVUFBVSxFQUFFO1FBQUU2QjtNQUFRO0lBQ3hCLENBQUMsR0FBR04sa0JBQWtCO0lBRXRCckMsS0FBSyxDQUFDLDBCQUEwQixDQUFDO0lBRWpDLE1BQU00Qyx1QkFBdUIsR0FBRyxNQUFNLElBQUFqQyxnQkFBUyxFQUFDLEdBQUdULG1CQUFtQixpQkFBaUIsRUFBRTtNQUN2RnlDLE9BQU87TUFDUEgsSUFBSSxFQUFFYixXQUFXLENBQUNjO0lBQ3BCLENBQUMsQ0FBQztJQUVGLE1BQU07TUFDSjNCLFVBQVUsRUFBRTtRQUFFK0I7TUFBWTtJQUM1QixDQUFDLEdBQUdELHVCQUF1QjtJQUUzQixJQUFJLENBQUNDLFdBQVcsR0FBR0EsV0FBVztJQUU5QixPQUFPO01BQ0x6QixPQUFPLEVBQUUsSUFBSTtNQUNiMEIsa0JBQWtCLEVBQUVYLGNBQWMsQ0FBQ1Y7SUFDckMsQ0FBQztFQUNIO0VBRUEsTUFBY3NCLHVCQUF1QkEsQ0FBQ0MsU0FBb0IsRUFBRUMsU0FBZSxFQUFnQztJQUN6RztJQUNBLE1BQU1DLE9BQU8sR0FBR0YsU0FBUyxDQUFDRyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQ3JDLElBQUlDLE1BQU0sR0FBRyxJQUFJO0lBQ2pCLE1BQU1DLFNBQVMsR0FBRyxFQUFFO0lBRXBCLE9BQU8sQ0FBQ0EsU0FBUyxDQUFDQyxNQUFNLElBQUksSUFBSUMsSUFBSSxDQUFDRixTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUNHLGlCQUFpQixDQUFDLElBQUlQLFNBQVMsRUFBRTtNQUNqRmpELEtBQUssQ0FBQyxxQ0FBcUNnRCxTQUFTLENBQUNTLFlBQVksS0FBSyxDQUFDO01BQ3ZFLE1BQU07UUFDSkosU0FBUyxFQUFFO1VBQUVBLFNBQVMsRUFBRUssWUFBWTtVQUFFQztRQUFXO01BQ29CLENBQUMsR0FBRyxNQUFNLElBQUFDLG1CQUFZLEVBQzNGekQsZUFBZSxFQUNmMEQsNkJBQWEsRUFDYjtRQUNFQyxXQUFXLEVBQUVkLFNBQVMsQ0FBQ2MsV0FBVztRQUNsQ0MsU0FBUyxFQUFFYixPQUFPLENBQUNhLFNBQVM7UUFDNUJDLFFBQVEsRUFBRSxRQUFRO1FBQ2xCTCxVQUFVLEVBQUU7VUFDVlAsTUFBTTtVQUNOYSxLQUFLLEVBQUU7UUFDVDtNQUNGLENBQUMsRUFDRDtRQUFFQyxhQUFhLEVBQUUsVUFBVSxJQUFJLENBQUNyQixXQUFXO01BQUcsQ0FDaEQsQ0FBQztNQUVEUSxTQUFTLENBQUNjLE9BQU8sQ0FBQyxHQUFHVCxZQUFZLENBQUM7TUFDbENOLE1BQU0sR0FBR08sVUFBVSxDQUFDUCxNQUFNO01BQzFCLElBQUksQ0FBQ08sVUFBVSxDQUFDUyxPQUFPLEVBQUU7UUFDdkI7TUFDRjtJQUNGO0lBRUFmLFNBQVMsQ0FBQ2dCLElBQUksQ0FBQyxDQUFDQyxDQUFDLEVBQUVDLENBQUMsS0FBSyxJQUFJaEIsSUFBSSxDQUFDZSxDQUFDLENBQUNkLGlCQUFpQixDQUFDLENBQUNnQixPQUFPLENBQUMsQ0FBQyxHQUFHLElBQUlqQixJQUFJLENBQUNnQixDQUFDLENBQUNmLGlCQUFpQixDQUFDLENBQUNnQixPQUFPLENBQUMsQ0FBQyxDQUFDO0lBRTNHLE1BQU1DLGlCQUFpQixHQUFHcEIsU0FBUyxDQUFDcUIsTUFBTSxDQUFDQyxRQUFRLElBQUksSUFBSXBCLElBQUksQ0FBQ29CLFFBQVEsQ0FBQ25CLGlCQUFpQixDQUFDLElBQUlQLFNBQVMsQ0FBQztJQUN6RyxPQUFPO01BQ0wyQixhQUFhLEVBQUU1QixTQUFTLENBQUNTLFlBQVk7TUFDckNvQixPQUFPLEVBQUUsQ0FBQ3hCLFNBQVMsQ0FBQ0MsTUFBTSxHQUFHLENBQUMsR0FBR3dCLFVBQVUsQ0FBQ3pCLFNBQVMsQ0FBQ0EsU0FBUyxDQUFDQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUN5QixjQUFjLENBQUM7TUFDM0ZDLElBQUksRUFBRVAsaUJBQWlCLENBQUNRLEdBQUcsQ0FBRU4sUUFBUSxJQUEwQjtRQUM3RCxNQUFNTyxlQUFlLEdBQUdQLFFBQVEsQ0FBQ1EsV0FBVyxFQUFFQyxVQUFVLEVBQUVDLFdBQVcsRUFBRUMsSUFBSSxDQUFDaEIsQ0FBQyxJQUFJQSxDQUFDLENBQUNpQixXQUFXLENBQUM7UUFDL0YsTUFBTUMsUUFBUSxHQUFHYixRQUFRLENBQUNjLFdBQVcsS0FBSyxPQUFPLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQztRQUMxRCxPQUFPO1VBQ0xDLFVBQVUsRUFBRWYsUUFBUSxDQUFDZ0IsVUFBVTtVQUMvQkMsSUFBSSxFQUFFakIsUUFBUSxDQUFDa0IsU0FBUztVQUN4QkMsYUFBYSxFQUFFLENBQUNuQixRQUFRLENBQUNvQixjQUFjLEdBQUdQLFFBQVE7VUFDbERRLGVBQWUsRUFBRXJCLFFBQVEsQ0FBQ3NCLGdCQUFnQjtVQUMxQ0MsY0FBYyxFQUFFLENBQUN2QixRQUFRLENBQUNvQixjQUFjLEdBQUdQLFFBQVE7VUFDbkRXLGdCQUFnQixFQUFFeEIsUUFBUSxDQUFDc0IsZ0JBQWdCO1VBQzNDRyxXQUFXLEVBQUUsSUFBSSxDQUFDQyxjQUFjLENBQUMxQixRQUFRLENBQUN5QixXQUFXLENBQUM7VUFDdERFLGFBQWEsRUFBRTNCLFFBQVEsQ0FBQ25CLGlCQUFpQjtVQUN6QytDLE1BQU0sRUFBRUMsaUNBQW1CLENBQUNDLFNBQVM7VUFDckNDLElBQUksRUFBRXhCLGVBQWUsR0FBR3lCLDhCQUFnQixDQUFDQyxZQUFZLEdBQUdELDhCQUFnQixDQUFDRTtRQUMzRSxDQUFDO01BQ0gsQ0FBQztJQUNILENBQUM7RUFDSDs7RUFFQTtBQUNGO0FBQ0E7QUFDQTtFQUNVUixjQUFjQSxDQUFDUyxJQUFZLEVBQUU7SUFDbkMsSUFBSSxDQUFDQSxJQUFJLENBQUNDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRTtNQUM1QixPQUFPRCxJQUFJLENBQUNFLElBQUksQ0FBQyxDQUFDO0lBQ3BCO0lBRUEsTUFBTUMsV0FBVyxHQUFHSCxJQUFJLENBQUNJLE9BQU8sQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUNGLElBQUksQ0FBQyxDQUFDO0lBQ3ZELE1BQU1HLHNCQUFzQixHQUFHLENBQUMsR0FBR0YsV0FBVyxDQUFDRyxRQUFRLENBQUNySCxrQkFBa0IsQ0FBQyxDQUFDO0lBQzVFLE1BQU1zSCxlQUFlLEdBQUdGLHNCQUFzQixDQUFDbEMsR0FBRyxDQUFDcUMsR0FBRyxLQUFLO01BQUVDLEtBQUssRUFBRUQsR0FBRyxDQUFDRSxLQUFNO01BQUVDLEdBQUcsRUFBRUgsR0FBRyxDQUFDRSxLQUFLLEdBQUlGLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQ2hFO0lBQU8sQ0FBQyxDQUFDLENBQUM7SUFDbkgsTUFBTW9FLEdBQUcsR0FBRyxFQUFFO0lBQ2QsSUFBSUYsS0FBSyxHQUFHLENBQUM7SUFFYixLQUFLLE1BQU07TUFBRUQsS0FBSztNQUFFRTtJQUFJLENBQUMsSUFBSUosZUFBZSxFQUFFO01BQzVDSyxHQUFHLENBQUNDLElBQUksQ0FBQyxHQUFHVixXQUFXLENBQUNXLFNBQVMsQ0FBQ0osS0FBSyxFQUFFRCxLQUFLLENBQUMsQ0FBQztNQUNoREMsS0FBSyxJQUFJRCxLQUFLLEdBQUdDLEtBQUs7TUFDdEIsTUFBTUssUUFBUSxHQUFHLENBQUMsR0FBR1osV0FBVyxDQUFDVyxTQUFTLENBQUNMLEtBQUssRUFBRUUsR0FBRyxDQUFDLENBQUMsQ0FBQ0ssT0FBTyxDQUFDLENBQUM7TUFDakVKLEdBQUcsQ0FBQ0MsSUFBSSxDQUFDLEdBQUdFLFFBQVEsQ0FBQztNQUNyQkwsS0FBSyxJQUFJQyxHQUFHLEdBQUdGLEtBQUs7SUFDdEI7SUFFQUcsR0FBRyxDQUFDQyxJQUFJLENBQUMsR0FBR1YsV0FBVyxDQUFDVyxTQUFTLENBQUNKLEtBQUssRUFBRVAsV0FBVyxDQUFDM0QsTUFBTSxDQUFDLENBQUM7SUFFN0QsT0FBT29FLEdBQUcsQ0FBQ0ssSUFBSSxDQUFDLEVBQUUsQ0FBQztFQUNyQjtFQUVBLE1BQU1DLFNBQVNBLENBQUEsRUFBbUM7SUFDaEQsSUFBSSxDQUFDLElBQUksQ0FBQ25GLFdBQVcsRUFBRTtNQUNyQixPQUFPLElBQUFwQywwQkFBa0IsRUFBQyx3QkFBd0IsQ0FBQztJQUNyRDtJQUVBLE1BQU13SCxrQkFBa0IsR0FBRyxJQUFBQyxlQUFNLEVBQUMsQ0FBQyxDQUFDQyxRQUFRLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQztJQUN0RSxNQUFNbkYsU0FBUyxHQUFHLElBQUksQ0FBQ29GLE9BQU8sQ0FBQ3BGLFNBQVMsSUFBSWdGLGtCQUFrQixDQUFDSyxNQUFNLENBQUMsQ0FBQztJQUN2RSxNQUFNQyxXQUFXLEdBQUdMLGVBQU0sQ0FBQ00sR0FBRyxDQUFDUCxrQkFBa0IsRUFBRSxJQUFBQyxlQUFNLEVBQUNqRixTQUFTLENBQUMsQ0FBQztJQUVyRWpELEtBQUssQ0FBQyx1QkFBdUIsQ0FBQztJQUM5QixNQUFNeUksTUFBTSxHQUFHLE1BQU0sSUFBQTdFLG1CQUFZLEVBQy9CekQsZUFBZSxFQUNmdUksNEJBQVksRUFDWixDQUFDLENBQUMsRUFDRjtNQUFFeEUsYUFBYSxFQUFFLFVBQVUsSUFBSSxDQUFDckIsV0FBVztJQUFHLENBQ2hELENBQUM7SUFDRCxNQUFNOEYsVUFBVSxHQUFHRixNQUFNLENBQUNHLFFBQVEsQ0FBQ0MsT0FBTyxDQUFDRCxRQUFRLElBQUlBLFFBQVEsQ0FBQ0QsVUFBVSxJQUFJLEVBQUUsQ0FBQztJQUVqRixPQUFPO01BQ0x2SCxPQUFPLEVBQUUsSUFBSTtNQUNiK0IsUUFBUSxFQUFFLE1BQU0yRixPQUFPLENBQUNDLEdBQUcsQ0FDekJKLFVBQVUsQ0FBQzFELEdBQUcsQ0FBQ2pDLFNBQVMsSUFBSSxJQUFJLENBQUNELHVCQUF1QixDQUFDQyxTQUFTLEVBQUV1RixXQUFXLENBQUNELE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FDM0Y7SUFDRixDQUFDO0VBQ0g7QUFDRjtBQUFDVSxPQUFBLENBQUFsSixPQUFBLEdBQUFNLGNBQUEiLCJpZ25vcmVMaXN0IjpbXX0=
242
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbW9tZW50IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfZGVidWciLCJfZmV0Y2giLCJfdHJhbnNhY3Rpb25zIiwiX2Jhc2VTY3JhcGVyIiwiX2Vycm9ycyIsIl9vbmVaZXJvUXVlcmllcyIsImUiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIkhFQlJFV19XT1JEU19SRUdFWCIsImRlYnVnIiwiZ2V0RGVidWciLCJJREVOVElUWV9TRVJWRVJfVVJMIiwiR1JBUEhRTF9BUElfVVJMIiwiT25lWmVyb1NjcmFwZXIiLCJCYXNlU2NyYXBlciIsInRyaWdnZXJUd29GYWN0b3JBdXRoIiwicGhvbmVOdW1iZXIiLCJzdGFydHNXaXRoIiwiY3JlYXRlR2VuZXJpY0Vycm9yIiwiZGV2aWNlVG9rZW5SZXNwb25zZSIsImZldGNoUG9zdCIsImV4dENsaWVudElkIiwib3MiLCJyZXN1bHREYXRhIiwiZGV2aWNlVG9rZW4iLCJvdHBQcmVwYXJlUmVzcG9uc2UiLCJmYWN0b3JWYWx1ZSIsIm90cENoYW5uZWwiLCJvdHBDb250ZXh0Iiwic3VjY2VzcyIsImdldExvbmdUZXJtVHdvRmFjdG9yVG9rZW4iLCJvdHBDb2RlIiwib3RwVmVyaWZ5UmVzcG9uc2UiLCJvdHBUb2tlbiIsImxvbmdUZXJtVHdvRmFjdG9yQXV0aFRva2VuIiwicmVzb2x2ZU90cFRva2VuIiwiY3JlZGVudGlhbHMiLCJvdHBMb25nVGVybVRva2VuIiwib3RwQ29kZVJldHJpZXZlciIsImVycm9yVHlwZSIsIlNjcmFwZXJFcnJvclR5cGVzIiwiVHdvRmFjdG9yUmV0cmlldmVyTWlzc2luZyIsImVycm9yTWVzc2FnZSIsInRyaWdnZXJSZXN1bHQiLCJvdHBUb2tlblJlc3VsdCIsImxvZ2luIiwiZ2V0SWRUb2tlblJlc3BvbnNlIiwib3RwU21zVG9rZW4iLCJlbWFpbCIsInBhc3MiLCJwYXNzd29yZCIsInBpbkNvZGUiLCJpZFRva2VuIiwiZ2V0U2Vzc2lvblRva2VuUmVzcG9uc2UiLCJhY2Nlc3NUb2tlbiIsInBlcnNpc3RlbnRPdHBUb2tlbiIsImZldGNoUG9ydGZvbGlvTW92ZW1lbnRzIiwicG9ydGZvbGlvIiwic3RhcnREYXRlIiwiYWNjb3VudCIsImFjY291bnRzIiwiY3Vyc29yIiwibW92ZW1lbnRzIiwibGVuZ3RoIiwiRGF0ZSIsIm1vdmVtZW50VGltZXN0YW1wIiwicG9ydGZvbGlvTnVtIiwibmV3TW92ZW1lbnRzIiwicGFnaW5hdGlvbiIsImZldGNoR3JhcGhxbCIsIkdFVF9NT1ZFTUVOVFMiLCJwb3J0Zm9saW9JZCIsImFjY291bnRJZCIsImxhbmd1YWdlIiwibGltaXQiLCJhdXRob3JpemF0aW9uIiwidW5zaGlmdCIsImhhc01vcmUiLCJzb3J0IiwieCIsInkiLCJ2YWx1ZU9mIiwibWF0Y2hpbmdNb3ZlbWVudHMiLCJmaWx0ZXIiLCJtb3ZlbWVudCIsImFjY291bnROdW1iZXIiLCJiYWxhbmNlIiwicGFyc2VGbG9hdCIsInJ1bm5pbmdCYWxhbmNlIiwidHhucyIsIm1hcCIsImhhc0luc3RhbGxtZW50cyIsInRyYW5zYWN0aW9uIiwiZW5yaWNobWVudCIsInJlY3VycmVuY2VzIiwic29tZSIsImlzUmVjdXJyZW50IiwibW9kaWZpZXIiLCJjcmVkaXREZWJpdCIsInJlc3VsdCIsImlkZW50aWZpZXIiLCJtb3ZlbWVudElkIiwiZGF0ZSIsInZhbHVlRGF0ZSIsImNoYXJnZWRBbW91bnQiLCJtb3ZlbWVudEFtb3VudCIsImNoYXJnZWRDdXJyZW5jeSIsIm1vdmVtZW50Q3VycmVuY3kiLCJvcmlnaW5hbEFtb3VudCIsIm9yaWdpbmFsQ3VycmVuY3kiLCJkZXNjcmlwdGlvbiIsInNhbml0aXplSGVicmV3IiwicHJvY2Vzc2VkRGF0ZSIsInN0YXR1cyIsIlRyYW5zYWN0aW9uU3RhdHVzZXMiLCJDb21wbGV0ZWQiLCJ0eXBlIiwiVHJhbnNhY3Rpb25UeXBlcyIsIkluc3RhbGxtZW50cyIsIk5vcm1hbCIsIm9wdGlvbnMiLCJpbmNsdWRlUmF3VHJhbnNhY3Rpb24iLCJyYXdUcmFuc2FjdGlvbiIsInRleHQiLCJpbmNsdWRlcyIsInRyaW0iLCJwbGFpblN0cmluZyIsInJlcGxhY2UiLCJoZWJyZXdTdWJTdHJpbmdzUmFuZ2VzIiwibWF0Y2hBbGwiLCJyYW5nZXNUb1JldmVyc2UiLCJzdHIiLCJzdGFydCIsImluZGV4IiwiZW5kIiwib3V0IiwicHVzaCIsInN1YnN0cmluZyIsInJldmVyc2VkIiwicmV2ZXJzZSIsImpvaW4iLCJmZXRjaERhdGEiLCJkZWZhdWx0U3RhcnRNb21lbnQiLCJtb21lbnQiLCJzdWJ0cmFjdCIsImFkZCIsInRvRGF0ZSIsInN0YXJ0TW9tZW50IiwibWF4IiwiR0VUX0NVU1RPTUVSIiwicG9ydGZvbGlvcyIsImN1c3RvbWVyIiwiZmxhdE1hcCIsIlByb21pc2UiLCJhbGwiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmFwZXJzL29uZS16ZXJvLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50L21vbWVudCc7XG5pbXBvcnQgeyBnZXREZWJ1ZyB9IGZyb20gJy4uL2hlbHBlcnMvZGVidWcnO1xuaW1wb3J0IHsgZmV0Y2hHcmFwaHFsLCBmZXRjaFBvc3QgfSBmcm9tICcuLi9oZWxwZXJzL2ZldGNoJztcbmltcG9ydCB7XG4gIHR5cGUgVHJhbnNhY3Rpb24gYXMgU2NyYXBpbmdUcmFuc2FjdGlvbixcbiAgVHJhbnNhY3Rpb25TdGF0dXNlcyxcbiAgVHJhbnNhY3Rpb25UeXBlcyxcbiAgdHlwZSBUcmFuc2FjdGlvbnNBY2NvdW50LFxufSBmcm9tICcuLi90cmFuc2FjdGlvbnMnO1xuaW1wb3J0IHsgQmFzZVNjcmFwZXIgfSBmcm9tICcuL2Jhc2Utc2NyYXBlcic7XG5pbXBvcnQgeyBTY3JhcGVyRXJyb3JUeXBlcywgY3JlYXRlR2VuZXJpY0Vycm9yIH0gZnJvbSAnLi9lcnJvcnMnO1xuaW1wb3J0IHtcbiAgdHlwZSBTY3JhcGVyR2V0TG9uZ1Rlcm1Ud29GYWN0b3JUb2tlblJlc3VsdCxcbiAgdHlwZSBTY3JhcGVyTG9naW5SZXN1bHQsXG4gIHR5cGUgU2NyYXBlclNjcmFwaW5nUmVzdWx0LFxuICB0eXBlIFNjcmFwZXJUd29GYWN0b3JBdXRoVHJpZ2dlclJlc3VsdCxcbn0gZnJvbSAnLi9pbnRlcmZhY2UnO1xuaW1wb3J0IHsgR0VUX0NVU1RPTUVSLCBHRVRfTU9WRU1FTlRTIH0gZnJvbSAnLi9vbmUtemVyby1xdWVyaWVzJztcblxuY29uc3QgSEVCUkVXX1dPUkRTX1JFR0VYID0gL1tcXHUwNTkwLVxcdTA1RkZdW1xcdTA1OTAtXFx1MDVGRlwiJ1xcLV8gL1xcXFxdKltcXHUwNTkwLVxcdTA1RkZdL2c7XG5cbmNvbnN0IGRlYnVnID0gZ2V0RGVidWcoJ29uZS16ZXJvJyk7XG5cbnR5cGUgQWNjb3VudCA9IHtcbiAgYWNjb3VudElkOiBzdHJpbmc7XG59O1xuXG50eXBlIFBvcnRmb2xpbyA9IHtcbiAgYWNjb3VudHM6IEFycmF5PEFjY291bnQ+O1xuICBwb3J0Zm9saW9JZDogc3RyaW5nO1xuICBwb3J0Zm9saW9OdW06IHN0cmluZztcbn07XG5cbnR5cGUgQ3VzdG9tZXIgPSB7XG4gIGN1c3RvbWVySWQ6IHN0cmluZztcbiAgcG9ydGZvbGlvcz86IEFycmF5PFBvcnRmb2xpbz4gfCBudWxsO1xufTtcblxuZXhwb3J0IHR5cGUgQ2F0ZWdvcnkgPSB7XG4gIGNhdGVnb3J5SWQ6IG51bWJlcjtcbiAgZGF0YVNvdXJjZTogc3RyaW5nO1xuICBzdWJDYXRlZ29yeUlkPzogbnVtYmVyIHwgbnVsbDtcbn07XG5cbmV4cG9ydCB0eXBlIFJlY3VycmVuY2UgPSB7XG4gIGRhdGFTb3VyY2U6IHN0cmluZztcbiAgaXNSZWN1cnJlbnQ6IGJvb2xlYW47XG59O1xuXG50eXBlIFRyYW5zYWN0aW9uRW5yaWNobWVudCA9IHtcbiAgY2F0ZWdvcmllcz86IENhdGVnb3J5W10gfCBudWxsO1xuICByZWN1cnJlbmNlcz86IFJlY3VycmVuY2VbXSB8IG51bGw7XG59O1xuXG50eXBlIFRyYW5zYWN0aW9uID0ge1xuICBlbnJpY2htZW50PzogVHJhbnNhY3Rpb25FbnJpY2htZW50IHwgbnVsbDtcbiAgLy8gVE9ETzogR2V0IGluc3RhbGxtZW50cyBpbmZvcm1hdGlvbiBoZXJlXG4gIC8vIHRyYW5zYWN0aW9uRGV0YWlsczogVHJhbnNhY3Rpb25EZXRhaWxzO1xufTtcblxudHlwZSBNb3ZlbWVudCA9IHtcbiAgYWNjb3VudElkOiBzdHJpbmc7XG4gIGJhbmtDdXJyZW5jeUFtb3VudDogc3RyaW5nO1xuICBib29raW5nRGF0ZTogc3RyaW5nO1xuICBjb252ZXJzaW9uUmF0ZTogc3RyaW5nO1xuICBjcmVkaXREZWJpdDogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICBpc1JldmVyc2VkOiBib29sZWFuO1xuICBtb3ZlbWVudEFtb3VudDogc3RyaW5nO1xuICBtb3ZlbWVudEN1cnJlbmN5OiBzdHJpbmc7XG4gIG1vdmVtZW50SWQ6IHN0cmluZztcbiAgbW92ZW1lbnRSZXZlcnNlZElkPzogc3RyaW5nIHwgbnVsbDtcbiAgbW92ZW1lbnRUaW1lc3RhbXA6IHN0cmluZztcbiAgbW92ZW1lbnRUeXBlOiBzdHJpbmc7XG4gIHBvcnRmb2xpb0lkOiBzdHJpbmc7XG4gIHJ1bm5pbmdCYWxhbmNlOiBzdHJpbmc7XG4gIHRyYW5zYWN0aW9uPzogVHJhbnNhY3Rpb24gfCBudWxsO1xuICB2YWx1ZURhdGU6IHN0cmluZztcbn07XG5cbnR5cGUgUXVlcnlQYWdpbmF0aW9uID0geyBoYXNNb3JlOiBib29sZWFuOyBjdXJzb3I6IHN0cmluZyB9O1xuXG5jb25zdCBJREVOVElUWV9TRVJWRVJfVVJMID0gJ2h0dHBzOi8vaWRlbnRpdHkudGZkLWJhbmsuY29tL3YxLyc7XG5cbmNvbnN0IEdSQVBIUUxfQVBJX1VSTCA9ICdodHRwczovL21vYmlsZS50ZmQtYmFuay5jb20vbW9iaWxlLWdyYXBoL2dyYXBocWwnO1xuXG50eXBlIFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzID0geyBlbWFpbDogc3RyaW5nOyBwYXNzd29yZDogc3RyaW5nIH0gJiAoXG4gIHwge1xuICAgICAgb3RwQ29kZVJldHJpZXZlcjogKCkgPT4gUHJvbWlzZTxzdHJpbmc+O1xuICAgICAgcGhvbmVOdW1iZXI6IHN0cmluZztcbiAgICB9XG4gIHwge1xuICAgICAgb3RwTG9uZ1Rlcm1Ub2tlbjogc3RyaW5nO1xuICAgIH1cbik7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE9uZVplcm9TY3JhcGVyIGV4dGVuZHMgQmFzZVNjcmFwZXI8U2NyYXBlclNwZWNpZmljQ3JlZGVudGlhbHM+IHtcbiAgcHJpdmF0ZSBvdHBDb250ZXh0Pzogc3RyaW5nO1xuXG4gIHByaXZhdGUgYWNjZXNzVG9rZW4/OiBzdHJpbmc7XG5cbiAgYXN5bmMgdHJpZ2dlclR3b0ZhY3RvckF1dGgocGhvbmVOdW1iZXI6IHN0cmluZyk6IFByb21pc2U8U2NyYXBlclR3b0ZhY3RvckF1dGhUcmlnZ2VyUmVzdWx0PiB7XG4gICAgaWYgKCFwaG9uZU51bWJlci5zdGFydHNXaXRoKCcrJykpIHtcbiAgICAgIHJldHVybiBjcmVhdGVHZW5lcmljRXJyb3IoXG4gICAgICAgICdBIGZ1bGwgaW50ZXJuYXRpb25hbCBwaG9uZSBudW1iZXIgc3RhcnRpbmcgd2l0aCArIGFuZCBhIHRocmVlIGRpZ2l0IGNvdW50cnkgY29kZSBpcyByZXF1aXJlZCcsXG4gICAgICApO1xuICAgIH1cblxuICAgIGRlYnVnKCdGZXRjaGluZyBkZXZpY2UgdG9rZW4nKTtcbiAgICBjb25zdCBkZXZpY2VUb2tlblJlc3BvbnNlID0gYXdhaXQgZmV0Y2hQb3N0KGAke0lERU5USVRZX1NFUlZFUl9VUkx9L2RldmljZXMvdG9rZW5gLCB7XG4gICAgICBleHRDbGllbnRJZDogJ21vYmlsZScsXG4gICAgICBvczogJ0FuZHJvaWQnLFxuICAgIH0pO1xuXG4gICAgY29uc3Qge1xuICAgICAgcmVzdWx0RGF0YTogeyBkZXZpY2VUb2tlbiB9LFxuICAgIH0gPSBkZXZpY2VUb2tlblJlc3BvbnNlO1xuXG4gICAgZGVidWcoYFNlbmRpbmcgT1RQIHRvIHBob25lIG51bWJlciAke3Bob25lTnVtYmVyfWApO1xuXG4gICAgY29uc3Qgb3RwUHJlcGFyZVJlc3BvbnNlID0gYXdhaXQgZmV0Y2hQb3N0KGAke0lERU5USVRZX1NFUlZFUl9VUkx9L290cC9wcmVwYXJlYCwge1xuICAgICAgZmFjdG9yVmFsdWU6IHBob25lTnVtYmVyLFxuICAgICAgZGV2aWNlVG9rZW4sXG4gICAgICBvdHBDaGFubmVsOiAnU01TX09UUCcsXG4gICAgfSk7XG5cbiAgICBjb25zdCB7XG4gICAgICByZXN1bHREYXRhOiB7IG90cENvbnRleHQgfSxcbiAgICB9ID0gb3RwUHJlcGFyZVJlc3BvbnNlO1xuXG4gICAgdGhpcy5vdHBDb250ZXh0ID0gb3RwQ29udGV4dDtcblxuICAgIHJldHVybiB7XG4gICAgICBzdWNjZXNzOiB0cnVlLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0TG9uZ1Rlcm1Ud29GYWN0b3JUb2tlbihvdHBDb2RlOiBzdHJpbmcpOiBQcm9taXNlPFNjcmFwZXJHZXRMb25nVGVybVR3b0ZhY3RvclRva2VuUmVzdWx0PiB7XG4gICAgaWYgKCF0aGlzLm90cENvbnRleHQpIHtcbiAgICAgIHJldHVybiBjcmVhdGVHZW5lcmljRXJyb3IoJ3RyaWdnZXJPdHAgd2FzIG5vdCBjYWxsZWQgYmVmb3JlIGNhbGxpbmcgZ2V0UGVybWVuYW50T3RwVG9rZW4oKScpO1xuICAgIH1cblxuICAgIGRlYnVnKCdSZXF1ZXN0aW5nIE9UUCB0b2tlbicpO1xuICAgIGNvbnN0IG90cFZlcmlmeVJlc3BvbnNlID0gYXdhaXQgZmV0Y2hQb3N0KGAke0lERU5USVRZX1NFUlZFUl9VUkx9L290cC92ZXJpZnlgLCB7XG4gICAgICBvdHBDb250ZXh0OiB0aGlzLm90cENvbnRleHQsXG4gICAgICBvdHBDb2RlLFxuICAgIH0pO1xuXG4gICAgY29uc3Qge1xuICAgICAgcmVzdWx0RGF0YTogeyBvdHBUb2tlbiB9LFxuICAgIH0gPSBvdHBWZXJpZnlSZXNwb25zZTtcbiAgICByZXR1cm4geyBzdWNjZXNzOiB0cnVlLCBsb25nVGVybVR3b0ZhY3RvckF1dGhUb2tlbjogb3RwVG9rZW4gfTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcmVzb2x2ZU90cFRva2VuKFxuICAgIGNyZWRlbnRpYWxzOiBTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscyxcbiAgKTogUHJvbWlzZTxTY3JhcGVyR2V0TG9uZ1Rlcm1Ud29GYWN0b3JUb2tlblJlc3VsdD4ge1xuICAgIGlmICgnb3RwTG9uZ1Rlcm1Ub2tlbicgaW4gY3JlZGVudGlhbHMpIHtcbiAgICAgIGlmICghY3JlZGVudGlhbHMub3RwTG9uZ1Rlcm1Ub2tlbikge1xuICAgICAgICByZXR1cm4gY3JlYXRlR2VuZXJpY0Vycm9yKCdJbnZhbGlkIG90cExvbmdUZXJtVG9rZW4nKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7IHN1Y2Nlc3M6IHRydWUsIGxvbmdUZXJtVHdvRmFjdG9yQXV0aFRva2VuOiBjcmVkZW50aWFscy5vdHBMb25nVGVybVRva2VuIH07XG4gICAgfVxuXG4gICAgaWYgKCFjcmVkZW50aWFscy5vdHBDb2RlUmV0cmlldmVyKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgICAgZXJyb3JUeXBlOiBTY3JhcGVyRXJyb3JUeXBlcy5Ud29GYWN0b3JSZXRyaWV2ZXJNaXNzaW5nLFxuICAgICAgICBlcnJvck1lc3NhZ2U6ICdvdHBDb2RlUmV0cmlldmVyIGlzIHJlcXVpcmVkIHdoZW4gb3RwUGVybWFuZW50VG9rZW4gaXMgbm90IHByb3ZpZGVkJyxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKCFjcmVkZW50aWFscy5waG9uZU51bWJlcikge1xuICAgICAgcmV0dXJuIGNyZWF0ZUdlbmVyaWNFcnJvcigncGhvbmVOdW1iZXIgaXMgcmVxdWlyZWQgd2hlbiBwcm92aWRpbmcgYSBvdHBDb2RlUmV0cmlldmVyIGNhbGxiYWNrJyk7XG4gICAgfVxuXG4gICAgZGVidWcoJ1RyaWdnZXJpbmcgdXNlciBzdXBwbGllZCBvdHBDb2RlUmV0cmlldmVyIGNhbGxiYWNrJyk7XG4gICAgY29uc3QgdHJpZ2dlclJlc3VsdCA9IGF3YWl0IHRoaXMudHJpZ2dlclR3b0ZhY3RvckF1dGgoY3JlZGVudGlhbHMucGhvbmVOdW1iZXIpO1xuXG4gICAgaWYgKCF0cmlnZ2VyUmVzdWx0LnN1Y2Nlc3MpIHtcbiAgICAgIHJldHVybiB0cmlnZ2VyUmVzdWx0O1xuICAgIH1cblxuICAgIGNvbnN0IG90cENvZGUgPSBhd2FpdCBjcmVkZW50aWFscy5vdHBDb2RlUmV0cmlldmVyKCk7XG5cbiAgICBjb25zdCBvdHBUb2tlblJlc3VsdCA9IGF3YWl0IHRoaXMuZ2V0TG9uZ1Rlcm1Ud29GYWN0b3JUb2tlbihvdHBDb2RlKTtcbiAgICBpZiAoIW90cFRva2VuUmVzdWx0LnN1Y2Nlc3MpIHtcbiAgICAgIHJldHVybiBvdHBUb2tlblJlc3VsdDtcbiAgICB9XG5cbiAgICByZXR1cm4geyBzdWNjZXNzOiB0cnVlLCBsb25nVGVybVR3b0ZhY3RvckF1dGhUb2tlbjogb3RwVG9rZW5SZXN1bHQubG9uZ1Rlcm1Ud29GYWN0b3JBdXRoVG9rZW4gfTtcbiAgfVxuXG4gIGFzeW5jIGxvZ2luKGNyZWRlbnRpYWxzOiBTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscyk6IFByb21pc2U8U2NyYXBlckxvZ2luUmVzdWx0PiB7XG4gICAgY29uc3Qgb3RwVG9rZW5SZXN1bHQgPSBhd2FpdCB0aGlzLnJlc29sdmVPdHBUb2tlbihjcmVkZW50aWFscyk7XG4gICAgaWYgKCFvdHBUb2tlblJlc3VsdC5zdWNjZXNzKSB7XG4gICAgICByZXR1cm4gb3RwVG9rZW5SZXN1bHQ7XG4gICAgfVxuXG4gICAgZGVidWcoJ1JlcXVlc3RpbmcgaWQgdG9rZW4nKTtcbiAgICBjb25zdCBnZXRJZFRva2VuUmVzcG9uc2UgPSBhd2FpdCBmZXRjaFBvc3QoYCR7SURFTlRJVFlfU0VSVkVSX1VSTH0vZ2V0SWRUb2tlbmAsIHtcbiAgICAgIG90cFNtc1Rva2VuOiBvdHBUb2tlblJlc3VsdC5sb25nVGVybVR3b0ZhY3RvckF1dGhUb2tlbixcbiAgICAgIGVtYWlsOiBjcmVkZW50aWFscy5lbWFpbCxcbiAgICAgIHBhc3M6IGNyZWRlbnRpYWxzLnBhc3N3b3JkLFxuICAgICAgcGluQ29kZTogJycsXG4gICAgfSk7XG5cbiAgICBjb25zdCB7XG4gICAgICByZXN1bHREYXRhOiB7IGlkVG9rZW4gfSxcbiAgICB9ID0gZ2V0SWRUb2tlblJlc3BvbnNlO1xuXG4gICAgZGVidWcoJ1JlcXVlc3Rpbmcgc2Vzc2lvbiB0b2tlbicpO1xuXG4gICAgY29uc3QgZ2V0U2Vzc2lvblRva2VuUmVzcG9uc2UgPSBhd2FpdCBmZXRjaFBvc3QoYCR7SURFTlRJVFlfU0VSVkVSX1VSTH0vc2Vzc2lvbnMvdG9rZW5gLCB7XG4gICAgICBpZFRva2VuLFxuICAgICAgcGFzczogY3JlZGVudGlhbHMucGFzc3dvcmQsXG4gICAgfSk7XG5cbiAgICBjb25zdCB7XG4gICAgICByZXN1bHREYXRhOiB7IGFjY2Vzc1Rva2VuIH0sXG4gICAgfSA9IGdldFNlc3Npb25Ub2tlblJlc3BvbnNlO1xuXG4gICAgdGhpcy5hY2Nlc3NUb2tlbiA9IGFjY2Vzc1Rva2VuO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHN1Y2Nlc3M6IHRydWUsXG4gICAgICBwZXJzaXN0ZW50T3RwVG9rZW46IG90cFRva2VuUmVzdWx0LmxvbmdUZXJtVHdvRmFjdG9yQXV0aFRva2VuLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGZldGNoUG9ydGZvbGlvTW92ZW1lbnRzKHBvcnRmb2xpbzogUG9ydGZvbGlvLCBzdGFydERhdGU6IERhdGUpOiBQcm9taXNlPFRyYW5zYWN0aW9uc0FjY291bnQ+IHtcbiAgICAvLyBUT0RPOiBGaW5kIG91dCBpZiB3ZSBuZWVkIHRoZSBvdGhlciBhY2NvdW50cywgdGhlcmUgc2VlbXMgdG8gYWx3YXlzIGJlIG9uZVxuICAgIGNvbnN0IGFjY291bnQgPSBwb3J0Zm9saW8uYWNjb3VudHNbMF07XG4gICAgbGV0IGN1cnNvciA9IG51bGw7XG4gICAgY29uc3QgbW92ZW1lbnRzID0gW107XG5cbiAgICB3aGlsZSAoIW1vdmVtZW50cy5sZW5ndGggfHwgbmV3IERhdGUobW92ZW1lbnRzWzBdLm1vdmVtZW50VGltZXN0YW1wKSA+PSBzdGFydERhdGUpIHtcbiAgICAgIGRlYnVnKGBGZXRjaGluZyB0cmFuc2FjdGlvbnMgZm9yIGFjY291bnQgJHtwb3J0Zm9saW8ucG9ydGZvbGlvTnVtfS4uLmApO1xuICAgICAgY29uc3Qge1xuICAgICAgICBtb3ZlbWVudHM6IHsgbW92ZW1lbnRzOiBuZXdNb3ZlbWVudHMsIHBhZ2luYXRpb24gfSxcbiAgICAgIH06IHsgbW92ZW1lbnRzOiB7IG1vdmVtZW50czogTW92ZW1lbnRbXTsgcGFnaW5hdGlvbjogUXVlcnlQYWdpbmF0aW9uIH0gfSA9IGF3YWl0IGZldGNoR3JhcGhxbChcbiAgICAgICAgR1JBUEhRTF9BUElfVVJMLFxuICAgICAgICBHRVRfTU9WRU1FTlRTLFxuICAgICAgICB7XG4gICAgICAgICAgcG9ydGZvbGlvSWQ6IHBvcnRmb2xpby5wb3J0Zm9saW9JZCxcbiAgICAgICAgICBhY2NvdW50SWQ6IGFjY291bnQuYWNjb3VudElkLFxuICAgICAgICAgIGxhbmd1YWdlOiAnSEVCUkVXJyxcbiAgICAgICAgICBwYWdpbmF0aW9uOiB7XG4gICAgICAgICAgICBjdXJzb3IsXG4gICAgICAgICAgICBsaW1pdDogNTAsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgeyBhdXRob3JpemF0aW9uOiBgQmVhcmVyICR7dGhpcy5hY2Nlc3NUb2tlbn1gIH0sXG4gICAgICApO1xuXG4gICAgICBtb3ZlbWVudHMudW5zaGlmdCguLi5uZXdNb3ZlbWVudHMpO1xuICAgICAgY3Vyc29yID0gcGFnaW5hdGlvbi5jdXJzb3I7XG4gICAgICBpZiAoIXBhZ2luYXRpb24uaGFzTW9yZSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBtb3ZlbWVudHMuc29ydCgoeCwgeSkgPT4gbmV3IERhdGUoeC5tb3ZlbWVudFRpbWVzdGFtcCkudmFsdWVPZigpIC0gbmV3IERhdGUoeS5tb3ZlbWVudFRpbWVzdGFtcCkudmFsdWVPZigpKTtcblxuICAgIGNvbnN0IG1hdGNoaW5nTW92ZW1lbnRzID0gbW92ZW1lbnRzLmZpbHRlcihtb3ZlbWVudCA9PiBuZXcgRGF0ZShtb3ZlbWVudC5tb3ZlbWVudFRpbWVzdGFtcCkgPj0gc3RhcnREYXRlKTtcbiAgICByZXR1cm4ge1xuICAgICAgYWNjb3VudE51bWJlcjogcG9ydGZvbGlvLnBvcnRmb2xpb051bSxcbiAgICAgIGJhbGFuY2U6ICFtb3ZlbWVudHMubGVuZ3RoID8gMCA6IHBhcnNlRmxvYXQobW92ZW1lbnRzW21vdmVtZW50cy5sZW5ndGggLSAxXS5ydW5uaW5nQmFsYW5jZSksXG4gICAgICB0eG5zOiBtYXRjaGluZ01vdmVtZW50cy5tYXAoKG1vdmVtZW50KTogU2NyYXBpbmdUcmFuc2FjdGlvbiA9PiB7XG4gICAgICAgIGNvbnN0IGhhc0luc3RhbGxtZW50cyA9IG1vdmVtZW50LnRyYW5zYWN0aW9uPy5lbnJpY2htZW50Py5yZWN1cnJlbmNlcz8uc29tZSh4ID0+IHguaXNSZWN1cnJlbnQpO1xuICAgICAgICBjb25zdCBtb2RpZmllciA9IG1vdmVtZW50LmNyZWRpdERlYml0ID09PSAnREVCSVQnID8gLTEgOiAxO1xuICAgICAgICBjb25zdCByZXN1bHQ6IFNjcmFwaW5nVHJhbnNhY3Rpb24gPSB7XG4gICAgICAgICAgaWRlbnRpZmllcjogbW92ZW1lbnQubW92ZW1lbnRJZCxcbiAgICAgICAgICBkYXRlOiBtb3ZlbWVudC52YWx1ZURhdGUsXG4gICAgICAgICAgY2hhcmdlZEFtb3VudDogK21vdmVtZW50Lm1vdmVtZW50QW1vdW50ICogbW9kaWZpZXIsXG4gICAgICAgICAgY2hhcmdlZEN1cnJlbmN5OiBtb3ZlbWVudC5tb3ZlbWVudEN1cnJlbmN5LFxuICAgICAgICAgIG9yaWdpbmFsQW1vdW50OiArbW92ZW1lbnQubW92ZW1lbnRBbW91bnQgKiBtb2RpZmllcixcbiAgICAgICAgICBvcmlnaW5hbEN1cnJlbmN5OiBtb3ZlbWVudC5tb3ZlbWVudEN1cnJlbmN5LFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLnNhbml0aXplSGVicmV3KG1vdmVtZW50LmRlc2NyaXB0aW9uKSxcbiAgICAgICAgICBwcm9jZXNzZWREYXRlOiBtb3ZlbWVudC5tb3ZlbWVudFRpbWVzdGFtcCxcbiAgICAgICAgICBzdGF0dXM6IFRyYW5zYWN0aW9uU3RhdHVzZXMuQ29tcGxldGVkLFxuICAgICAgICAgIHR5cGU6IGhhc0luc3RhbGxtZW50cyA/IFRyYW5zYWN0aW9uVHlwZXMuSW5zdGFsbG1lbnRzIDogVHJhbnNhY3Rpb25UeXBlcy5Ob3JtYWwsXG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucz8uaW5jbHVkZVJhd1RyYW5zYWN0aW9uKSB7XG4gICAgICAgICAgcmVzdWx0LnJhd1RyYW5zYWN0aW9uID0gbW92ZW1lbnQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfSksXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBvbmUgemVybyBoZWJyZXcgc3RyaW5ncyBhcmUgcmV2ZXJzZWQgd2l0aCBhIHVuaWNvZGUgY29udHJvbCBjaGFyYWN0ZXIgdGhhdCBmb3JjZXMgZGlzcGxheSBpbiBMVFIgb3JkZXJcbiAgICogV2UgbmVlZCB0byByZW1vdmUgdGhlIHVuaWNvZGUgY29udHJvbCBjaGFyYWN0ZXIsIGFuZCB0aGVuIHJldmVyc2UgaGVicmV3IHN1YnN0cmluZ3MgaW5zaWRlIHRoZSBzdHJpbmdcbiAgICovXG4gIHByaXZhdGUgc2FuaXRpemVIZWJyZXcodGV4dDogc3RyaW5nKSB7XG4gICAgaWYgKCF0ZXh0LmluY2x1ZGVzKCdcXHUyMDJkJykpIHtcbiAgICAgIHJldHVybiB0ZXh0LnRyaW0oKTtcbiAgICB9XG5cbiAgICBjb25zdCBwbGFpblN0cmluZyA9IHRleHQucmVwbGFjZSgvXFx1MjAyZC9naSwgJycpLnRyaW0oKTtcbiAgICBjb25zdCBoZWJyZXdTdWJTdHJpbmdzUmFuZ2VzID0gWy4uLnBsYWluU3RyaW5nLm1hdGNoQWxsKEhFQlJFV19XT1JEU19SRUdFWCldO1xuICAgIGNvbnN0IHJhbmdlc1RvUmV2ZXJzZSA9IGhlYnJld1N1YlN0cmluZ3NSYW5nZXMubWFwKHN0ciA9PiAoeyBzdGFydDogc3RyLmluZGV4ISwgZW5kOiBzdHIuaW5kZXghICsgc3RyWzBdLmxlbmd0aCB9KSk7XG4gICAgY29uc3Qgb3V0ID0gW107XG4gICAgbGV0IGluZGV4ID0gMDtcblxuICAgIGZvciAoY29uc3QgeyBzdGFydCwgZW5kIH0gb2YgcmFuZ2VzVG9SZXZlcnNlKSB7XG4gICAgICBvdXQucHVzaCguLi5wbGFpblN0cmluZy5zdWJzdHJpbmcoaW5kZXgsIHN0YXJ0KSk7XG4gICAgICBpbmRleCArPSBzdGFydCAtIGluZGV4O1xuICAgICAgY29uc3QgcmV2ZXJzZWQgPSBbLi4ucGxhaW5TdHJpbmcuc3Vic3RyaW5nKHN0YXJ0LCBlbmQpXS5yZXZlcnNlKCk7XG4gICAgICBvdXQucHVzaCguLi5yZXZlcnNlZCk7XG4gICAgICBpbmRleCArPSBlbmQgLSBzdGFydDtcbiAgICB9XG5cbiAgICBvdXQucHVzaCguLi5wbGFpblN0cmluZy5zdWJzdHJpbmcoaW5kZXgsIHBsYWluU3RyaW5nLmxlbmd0aCkpO1xuXG4gICAgcmV0dXJuIG91dC5qb2luKCcnKTtcbiAgfVxuXG4gIGFzeW5jIGZldGNoRGF0YSgpOiBQcm9taXNlPFNjcmFwZXJTY3JhcGluZ1Jlc3VsdD4ge1xuICAgIGlmICghdGhpcy5hY2Nlc3NUb2tlbikge1xuICAgICAgcmV0dXJuIGNyZWF0ZUdlbmVyaWNFcnJvcignbG9naW4oKSB3YXMgbm90IGNhbGxlZCcpO1xuICAgIH1cblxuICAgIGNvbnN0IGRlZmF1bHRTdGFydE1vbWVudCA9IG1vbWVudCgpLnN1YnRyYWN0KDEsICd5ZWFycycpLmFkZCgxLCAnZGF5Jyk7XG4gICAgY29uc3Qgc3RhcnREYXRlID0gdGhpcy5vcHRpb25zLnN0YXJ0RGF0ZSB8fCBkZWZhdWx0U3RhcnRNb21lbnQudG9EYXRlKCk7XG4gICAgY29uc3Qgc3RhcnRNb21lbnQgPSBtb21lbnQubWF4KGRlZmF1bHRTdGFydE1vbWVudCwgbW9tZW50KHN0YXJ0RGF0ZSkpO1xuXG4gICAgZGVidWcoJ0ZldGNoaW5nIGFjY291bnQgbGlzdCcpO1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGZldGNoR3JhcGhxbDx7IGN1c3RvbWVyOiBDdXN0b21lcltdIH0+KFxuICAgICAgR1JBUEhRTF9BUElfVVJMLFxuICAgICAgR0VUX0NVU1RPTUVSLFxuICAgICAge30sXG4gICAgICB7IGF1dGhvcml6YXRpb246IGBCZWFyZXIgJHt0aGlzLmFjY2Vzc1Rva2VufWAgfSxcbiAgICApO1xuICAgIGNvbnN0IHBvcnRmb2xpb3MgPSByZXN1bHQuY3VzdG9tZXIuZmxhdE1hcChjdXN0b21lciA9PiBjdXN0b21lci5wb3J0Zm9saW9zIHx8IFtdKTtcblxuICAgIHJldHVybiB7XG4gICAgICBzdWNjZXNzOiB0cnVlLFxuICAgICAgYWNjb3VudHM6IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICBwb3J0Zm9saW9zLm1hcChwb3J0Zm9saW8gPT4gdGhpcy5mZXRjaFBvcnRmb2xpb01vdmVtZW50cyhwb3J0Zm9saW8sIHN0YXJ0TW9tZW50LnRvRGF0ZSgpKSksXG4gICAgICApLFxuICAgIH07XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsT0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsTUFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsTUFBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsYUFBQSxHQUFBSCxPQUFBO0FBTUEsSUFBQUksWUFBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssT0FBQSxHQUFBTCxPQUFBO0FBT0EsSUFBQU0sZUFBQSxHQUFBTixPQUFBO0FBQWlFLFNBQUFELHVCQUFBUSxDQUFBLFdBQUFBLENBQUEsSUFBQUEsQ0FBQSxDQUFBQyxVQUFBLEdBQUFELENBQUEsS0FBQUUsT0FBQSxFQUFBRixDQUFBO0FBRWpFLE1BQU1HLGtCQUFrQixHQUFHLDBEQUEwRDtBQUVyRixNQUFNQyxLQUFLLEdBQUcsSUFBQUMsZUFBUSxFQUFDLFVBQVUsQ0FBQztBQTZEbEMsTUFBTUMsbUJBQW1CLEdBQUcsbUNBQW1DO0FBRS9ELE1BQU1DLGVBQWUsR0FBRyxrREFBa0Q7QUFZM0QsTUFBTUMsY0FBYyxTQUFTQyx3QkFBVyxDQUE2QjtFQUtsRixNQUFNQyxvQkFBb0JBLENBQUNDLFdBQW1CLEVBQThDO0lBQzFGLElBQUksQ0FBQ0EsV0FBVyxDQUFDQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUU7TUFDaEMsT0FBTyxJQUFBQywwQkFBa0IsRUFDdkIsOEZBQ0YsQ0FBQztJQUNIO0lBRUFULEtBQUssQ0FBQyx1QkFBdUIsQ0FBQztJQUM5QixNQUFNVSxtQkFBbUIsR0FBRyxNQUFNLElBQUFDLGdCQUFTLEVBQUMsR0FBR1QsbUJBQW1CLGdCQUFnQixFQUFFO01BQ2xGVSxXQUFXLEVBQUUsUUFBUTtNQUNyQkMsRUFBRSxFQUFFO0lBQ04sQ0FBQyxDQUFDO0lBRUYsTUFBTTtNQUNKQyxVQUFVLEVBQUU7UUFBRUM7TUFBWTtJQUM1QixDQUFDLEdBQUdMLG1CQUFtQjtJQUV2QlYsS0FBSyxDQUFDLCtCQUErQk8sV0FBVyxFQUFFLENBQUM7SUFFbkQsTUFBTVMsa0JBQWtCLEdBQUcsTUFBTSxJQUFBTCxnQkFBUyxFQUFDLEdBQUdULG1CQUFtQixjQUFjLEVBQUU7TUFDL0VlLFdBQVcsRUFBRVYsV0FBVztNQUN4QlEsV0FBVztNQUNYRyxVQUFVLEVBQUU7SUFDZCxDQUFDLENBQUM7SUFFRixNQUFNO01BQ0pKLFVBQVUsRUFBRTtRQUFFSztNQUFXO0lBQzNCLENBQUMsR0FBR0gsa0JBQWtCO0lBRXRCLElBQUksQ0FBQ0csVUFBVSxHQUFHQSxVQUFVO0lBRTVCLE9BQU87TUFDTEMsT0FBTyxFQUFFO0lBQ1gsQ0FBQztFQUNIO0VBRUEsTUFBYUMseUJBQXlCQSxDQUFDQyxPQUFlLEVBQW1EO0lBQ3ZHLElBQUksQ0FBQyxJQUFJLENBQUNILFVBQVUsRUFBRTtNQUNwQixPQUFPLElBQUFWLDBCQUFrQixFQUFDLGlFQUFpRSxDQUFDO0lBQzlGO0lBRUFULEtBQUssQ0FBQyxzQkFBc0IsQ0FBQztJQUM3QixNQUFNdUIsaUJBQWlCLEdBQUcsTUFBTSxJQUFBWixnQkFBUyxFQUFDLEdBQUdULG1CQUFtQixhQUFhLEVBQUU7TUFDN0VpQixVQUFVLEVBQUUsSUFBSSxDQUFDQSxVQUFVO01BQzNCRztJQUNGLENBQUMsQ0FBQztJQUVGLE1BQU07TUFDSlIsVUFBVSxFQUFFO1FBQUVVO01BQVM7SUFDekIsQ0FBQyxHQUFHRCxpQkFBaUI7SUFDckIsT0FBTztNQUFFSCxPQUFPLEVBQUUsSUFBSTtNQUFFSywwQkFBMEIsRUFBRUQ7SUFBUyxDQUFDO0VBQ2hFO0VBRUEsTUFBY0UsZUFBZUEsQ0FDM0JDLFdBQXVDLEVBQ1U7SUFDakQsSUFBSSxrQkFBa0IsSUFBSUEsV0FBVyxFQUFFO01BQ3JDLElBQUksQ0FBQ0EsV0FBVyxDQUFDQyxnQkFBZ0IsRUFBRTtRQUNqQyxPQUFPLElBQUFuQiwwQkFBa0IsRUFBQywwQkFBMEIsQ0FBQztNQUN2RDtNQUNBLE9BQU87UUFBRVcsT0FBTyxFQUFFLElBQUk7UUFBRUssMEJBQTBCLEVBQUVFLFdBQVcsQ0FBQ0M7TUFBaUIsQ0FBQztJQUNwRjtJQUVBLElBQUksQ0FBQ0QsV0FBVyxDQUFDRSxnQkFBZ0IsRUFBRTtNQUNqQyxPQUFPO1FBQ0xULE9BQU8sRUFBRSxLQUFLO1FBQ2RVLFNBQVMsRUFBRUMseUJBQWlCLENBQUNDLHlCQUF5QjtRQUN0REMsWUFBWSxFQUFFO01BQ2hCLENBQUM7SUFDSDtJQUVBLElBQUksQ0FBQ04sV0FBVyxDQUFDcEIsV0FBVyxFQUFFO01BQzVCLE9BQU8sSUFBQUUsMEJBQWtCLEVBQUMsb0VBQW9FLENBQUM7SUFDakc7SUFFQVQsS0FBSyxDQUFDLG9EQUFvRCxDQUFDO0lBQzNELE1BQU1rQyxhQUFhLEdBQUcsTUFBTSxJQUFJLENBQUM1QixvQkFBb0IsQ0FBQ3FCLFdBQVcsQ0FBQ3BCLFdBQVcsQ0FBQztJQUU5RSxJQUFJLENBQUMyQixhQUFhLENBQUNkLE9BQU8sRUFBRTtNQUMxQixPQUFPYyxhQUFhO0lBQ3RCO0lBRUEsTUFBTVosT0FBTyxHQUFHLE1BQU1LLFdBQVcsQ0FBQ0UsZ0JBQWdCLENBQUMsQ0FBQztJQUVwRCxNQUFNTSxjQUFjLEdBQUcsTUFBTSxJQUFJLENBQUNkLHlCQUF5QixDQUFDQyxPQUFPLENBQUM7SUFDcEUsSUFBSSxDQUFDYSxjQUFjLENBQUNmLE9BQU8sRUFBRTtNQUMzQixPQUFPZSxjQUFjO0lBQ3ZCO0lBRUEsT0FBTztNQUFFZixPQUFPLEVBQUUsSUFBSTtNQUFFSywwQkFBMEIsRUFBRVUsY0FBYyxDQUFDVjtJQUEyQixDQUFDO0VBQ2pHO0VBRUEsTUFBTVcsS0FBS0EsQ0FBQ1QsV0FBdUMsRUFBK0I7SUFDaEYsTUFBTVEsY0FBYyxHQUFHLE1BQU0sSUFBSSxDQUFDVCxlQUFlLENBQUNDLFdBQVcsQ0FBQztJQUM5RCxJQUFJLENBQUNRLGNBQWMsQ0FBQ2YsT0FBTyxFQUFFO01BQzNCLE9BQU9lLGNBQWM7SUFDdkI7SUFFQW5DLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQztJQUM1QixNQUFNcUMsa0JBQWtCLEdBQUcsTUFBTSxJQUFBMUIsZ0JBQVMsRUFBQyxHQUFHVCxtQkFBbUIsYUFBYSxFQUFFO01BQzlFb0MsV0FBVyxFQUFFSCxjQUFjLENBQUNWLDBCQUEwQjtNQUN0RGMsS0FBSyxFQUFFWixXQUFXLENBQUNZLEtBQUs7TUFDeEJDLElBQUksRUFBRWIsV0FBVyxDQUFDYyxRQUFRO01BQzFCQyxPQUFPLEVBQUU7SUFDWCxDQUFDLENBQUM7SUFFRixNQUFNO01BQ0o1QixVQUFVLEVBQUU7UUFBRTZCO01BQVE7SUFDeEIsQ0FBQyxHQUFHTixrQkFBa0I7SUFFdEJyQyxLQUFLLENBQUMsMEJBQTBCLENBQUM7SUFFakMsTUFBTTRDLHVCQUF1QixHQUFHLE1BQU0sSUFBQWpDLGdCQUFTLEVBQUMsR0FBR1QsbUJBQW1CLGlCQUFpQixFQUFFO01BQ3ZGeUMsT0FBTztNQUNQSCxJQUFJLEVBQUViLFdBQVcsQ0FBQ2M7SUFDcEIsQ0FBQyxDQUFDO0lBRUYsTUFBTTtNQUNKM0IsVUFBVSxFQUFFO1FBQUUrQjtNQUFZO0lBQzVCLENBQUMsR0FBR0QsdUJBQXVCO0lBRTNCLElBQUksQ0FBQ0MsV0FBVyxHQUFHQSxXQUFXO0lBRTlCLE9BQU87TUFDTHpCLE9BQU8sRUFBRSxJQUFJO01BQ2IwQixrQkFBa0IsRUFBRVgsY0FBYyxDQUFDVjtJQUNyQyxDQUFDO0VBQ0g7RUFFQSxNQUFjc0IsdUJBQXVCQSxDQUFDQyxTQUFvQixFQUFFQyxTQUFlLEVBQWdDO0lBQ3pHO0lBQ0EsTUFBTUMsT0FBTyxHQUFHRixTQUFTLENBQUNHLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDckMsSUFBSUMsTUFBTSxHQUFHLElBQUk7SUFDakIsTUFBTUMsU0FBUyxHQUFHLEVBQUU7SUFFcEIsT0FBTyxDQUFDQSxTQUFTLENBQUNDLE1BQU0sSUFBSSxJQUFJQyxJQUFJLENBQUNGLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQ0csaUJBQWlCLENBQUMsSUFBSVAsU0FBUyxFQUFFO01BQ2pGakQsS0FBSyxDQUFDLHFDQUFxQ2dELFNBQVMsQ0FBQ1MsWUFBWSxLQUFLLENBQUM7TUFDdkUsTUFBTTtRQUNKSixTQUFTLEVBQUU7VUFBRUEsU0FBUyxFQUFFSyxZQUFZO1VBQUVDO1FBQVc7TUFDb0IsQ0FBQyxHQUFHLE1BQU0sSUFBQUMsbUJBQVksRUFDM0Z6RCxlQUFlLEVBQ2YwRCw2QkFBYSxFQUNiO1FBQ0VDLFdBQVcsRUFBRWQsU0FBUyxDQUFDYyxXQUFXO1FBQ2xDQyxTQUFTLEVBQUViLE9BQU8sQ0FBQ2EsU0FBUztRQUM1QkMsUUFBUSxFQUFFLFFBQVE7UUFDbEJMLFVBQVUsRUFBRTtVQUNWUCxNQUFNO1VBQ05hLEtBQUssRUFBRTtRQUNUO01BQ0YsQ0FBQyxFQUNEO1FBQUVDLGFBQWEsRUFBRSxVQUFVLElBQUksQ0FBQ3JCLFdBQVc7TUFBRyxDQUNoRCxDQUFDO01BRURRLFNBQVMsQ0FBQ2MsT0FBTyxDQUFDLEdBQUdULFlBQVksQ0FBQztNQUNsQ04sTUFBTSxHQUFHTyxVQUFVLENBQUNQLE1BQU07TUFDMUIsSUFBSSxDQUFDTyxVQUFVLENBQUNTLE9BQU8sRUFBRTtRQUN2QjtNQUNGO0lBQ0Y7SUFFQWYsU0FBUyxDQUFDZ0IsSUFBSSxDQUFDLENBQUNDLENBQUMsRUFBRUMsQ0FBQyxLQUFLLElBQUloQixJQUFJLENBQUNlLENBQUMsQ0FBQ2QsaUJBQWlCLENBQUMsQ0FBQ2dCLE9BQU8sQ0FBQyxDQUFDLEdBQUcsSUFBSWpCLElBQUksQ0FBQ2dCLENBQUMsQ0FBQ2YsaUJBQWlCLENBQUMsQ0FBQ2dCLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFFM0csTUFBTUMsaUJBQWlCLEdBQUdwQixTQUFTLENBQUNxQixNQUFNLENBQUNDLFFBQVEsSUFBSSxJQUFJcEIsSUFBSSxDQUFDb0IsUUFBUSxDQUFDbkIsaUJBQWlCLENBQUMsSUFBSVAsU0FBUyxDQUFDO0lBQ3pHLE9BQU87TUFDTDJCLGFBQWEsRUFBRTVCLFNBQVMsQ0FBQ1MsWUFBWTtNQUNyQ29CLE9BQU8sRUFBRSxDQUFDeEIsU0FBUyxDQUFDQyxNQUFNLEdBQUcsQ0FBQyxHQUFHd0IsVUFBVSxDQUFDekIsU0FBUyxDQUFDQSxTQUFTLENBQUNDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQ3lCLGNBQWMsQ0FBQztNQUMzRkMsSUFBSSxFQUFFUCxpQkFBaUIsQ0FBQ1EsR0FBRyxDQUFFTixRQUFRLElBQTBCO1FBQzdELE1BQU1PLGVBQWUsR0FBR1AsUUFBUSxDQUFDUSxXQUFXLEVBQUVDLFVBQVUsRUFBRUMsV0FBVyxFQUFFQyxJQUFJLENBQUNoQixDQUFDLElBQUlBLENBQUMsQ0FBQ2lCLFdBQVcsQ0FBQztRQUMvRixNQUFNQyxRQUFRLEdBQUdiLFFBQVEsQ0FBQ2MsV0FBVyxLQUFLLE9BQU8sR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDO1FBQzFELE1BQU1DLE1BQTJCLEdBQUc7VUFDbENDLFVBQVUsRUFBRWhCLFFBQVEsQ0FBQ2lCLFVBQVU7VUFDL0JDLElBQUksRUFBRWxCLFFBQVEsQ0FBQ21CLFNBQVM7VUFDeEJDLGFBQWEsRUFBRSxDQUFDcEIsUUFBUSxDQUFDcUIsY0FBYyxHQUFHUixRQUFRO1VBQ2xEUyxlQUFlLEVBQUV0QixRQUFRLENBQUN1QixnQkFBZ0I7VUFDMUNDLGNBQWMsRUFBRSxDQUFDeEIsUUFBUSxDQUFDcUIsY0FBYyxHQUFHUixRQUFRO1VBQ25EWSxnQkFBZ0IsRUFBRXpCLFFBQVEsQ0FBQ3VCLGdCQUFnQjtVQUMzQ0csV0FBVyxFQUFFLElBQUksQ0FBQ0MsY0FBYyxDQUFDM0IsUUFBUSxDQUFDMEIsV0FBVyxDQUFDO1VBQ3RERSxhQUFhLEVBQUU1QixRQUFRLENBQUNuQixpQkFBaUI7VUFDekNnRCxNQUFNLEVBQUVDLGlDQUFtQixDQUFDQyxTQUFTO1VBQ3JDQyxJQUFJLEVBQUV6QixlQUFlLEdBQUcwQiw4QkFBZ0IsQ0FBQ0MsWUFBWSxHQUFHRCw4QkFBZ0IsQ0FBQ0U7UUFDM0UsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDQyxPQUFPLEVBQUVDLHFCQUFxQixFQUFFO1VBQ3ZDdEIsTUFBTSxDQUFDdUIsY0FBYyxHQUFHdEMsUUFBUTtRQUNsQztRQUVBLE9BQU9lLE1BQU07TUFDZixDQUFDO0lBQ0gsQ0FBQztFQUNIOztFQUVBO0FBQ0Y7QUFDQTtBQUNBO0VBQ1VZLGNBQWNBLENBQUNZLElBQVksRUFBRTtJQUNuQyxJQUFJLENBQUNBLElBQUksQ0FBQ0MsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFO01BQzVCLE9BQU9ELElBQUksQ0FBQ0UsSUFBSSxDQUFDLENBQUM7SUFDcEI7SUFFQSxNQUFNQyxXQUFXLEdBQUdILElBQUksQ0FBQ0ksT0FBTyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQ0YsSUFBSSxDQUFDLENBQUM7SUFDdkQsTUFBTUcsc0JBQXNCLEdBQUcsQ0FBQyxHQUFHRixXQUFXLENBQUNHLFFBQVEsQ0FBQ3pILGtCQUFrQixDQUFDLENBQUM7SUFDNUUsTUFBTTBILGVBQWUsR0FBR0Ysc0JBQXNCLENBQUN0QyxHQUFHLENBQUN5QyxHQUFHLEtBQUs7TUFBRUMsS0FBSyxFQUFFRCxHQUFHLENBQUNFLEtBQU07TUFBRUMsR0FBRyxFQUFFSCxHQUFHLENBQUNFLEtBQUssR0FBSUYsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDcEU7SUFBTyxDQUFDLENBQUMsQ0FBQztJQUNuSCxNQUFNd0UsR0FBRyxHQUFHLEVBQUU7SUFDZCxJQUFJRixLQUFLLEdBQUcsQ0FBQztJQUViLEtBQUssTUFBTTtNQUFFRCxLQUFLO01BQUVFO0lBQUksQ0FBQyxJQUFJSixlQUFlLEVBQUU7TUFDNUNLLEdBQUcsQ0FBQ0MsSUFBSSxDQUFDLEdBQUdWLFdBQVcsQ0FBQ1csU0FBUyxDQUFDSixLQUFLLEVBQUVELEtBQUssQ0FBQyxDQUFDO01BQ2hEQyxLQUFLLElBQUlELEtBQUssR0FBR0MsS0FBSztNQUN0QixNQUFNSyxRQUFRLEdBQUcsQ0FBQyxHQUFHWixXQUFXLENBQUNXLFNBQVMsQ0FBQ0wsS0FBSyxFQUFFRSxHQUFHLENBQUMsQ0FBQyxDQUFDSyxPQUFPLENBQUMsQ0FBQztNQUNqRUosR0FBRyxDQUFDQyxJQUFJLENBQUMsR0FBR0UsUUFBUSxDQUFDO01BQ3JCTCxLQUFLLElBQUlDLEdBQUcsR0FBR0YsS0FBSztJQUN0QjtJQUVBRyxHQUFHLENBQUNDLElBQUksQ0FBQyxHQUFHVixXQUFXLENBQUNXLFNBQVMsQ0FBQ0osS0FBSyxFQUFFUCxXQUFXLENBQUMvRCxNQUFNLENBQUMsQ0FBQztJQUU3RCxPQUFPd0UsR0FBRyxDQUFDSyxJQUFJLENBQUMsRUFBRSxDQUFDO0VBQ3JCO0VBRUEsTUFBTUMsU0FBU0EsQ0FBQSxFQUFtQztJQUNoRCxJQUFJLENBQUMsSUFBSSxDQUFDdkYsV0FBVyxFQUFFO01BQ3JCLE9BQU8sSUFBQXBDLDBCQUFrQixFQUFDLHdCQUF3QixDQUFDO0lBQ3JEO0lBRUEsTUFBTTRILGtCQUFrQixHQUFHLElBQUFDLGVBQU0sRUFBQyxDQUFDLENBQUNDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUNDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDO0lBQ3RFLE1BQU12RixTQUFTLEdBQUcsSUFBSSxDQUFDOEQsT0FBTyxDQUFDOUQsU0FBUyxJQUFJb0Ysa0JBQWtCLENBQUNJLE1BQU0sQ0FBQyxDQUFDO0lBQ3ZFLE1BQU1DLFdBQVcsR0FBR0osZUFBTSxDQUFDSyxHQUFHLENBQUNOLGtCQUFrQixFQUFFLElBQUFDLGVBQU0sRUFBQ3JGLFNBQVMsQ0FBQyxDQUFDO0lBRXJFakQsS0FBSyxDQUFDLHVCQUF1QixDQUFDO0lBQzlCLE1BQU0wRixNQUFNLEdBQUcsTUFBTSxJQUFBOUIsbUJBQVksRUFDL0J6RCxlQUFlLEVBQ2Z5SSw0QkFBWSxFQUNaLENBQUMsQ0FBQyxFQUNGO01BQUUxRSxhQUFhLEVBQUUsVUFBVSxJQUFJLENBQUNyQixXQUFXO0lBQUcsQ0FDaEQsQ0FBQztJQUNELE1BQU1nRyxVQUFVLEdBQUduRCxNQUFNLENBQUNvRCxRQUFRLENBQUNDLE9BQU8sQ0FBQ0QsUUFBUSxJQUFJQSxRQUFRLENBQUNELFVBQVUsSUFBSSxFQUFFLENBQUM7SUFFakYsT0FBTztNQUNMekgsT0FBTyxFQUFFLElBQUk7TUFDYitCLFFBQVEsRUFBRSxNQUFNNkYsT0FBTyxDQUFDQyxHQUFHLENBQ3pCSixVQUFVLENBQUM1RCxHQUFHLENBQUNqQyxTQUFTLElBQUksSUFBSSxDQUFDRCx1QkFBdUIsQ0FBQ0MsU0FBUyxFQUFFMEYsV0FBVyxDQUFDRCxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQzNGO0lBQ0YsQ0FBQztFQUNIO0FBQ0Y7QUFBQ1MsT0FBQSxDQUFBcEosT0FBQSxHQUFBTSxjQUFBIiwiaWdub3JlTGlzdCI6W119