vxe-table-plugin-export-xlsx-xhx 1.0.7 → 1.0.9

Sign up to get free protection for your applications and to get access to all the features.
package/README.md CHANGED
@@ -18,6 +18,7 @@ npm install xe-utils vxe-table vxe-table-plugin-export-xlsx xlsx
18
18
  import Vue from 'vue'
19
19
  import VXETable from 'vxe-table'
20
20
  import VXETablePluginExportXLSX from 'vxe-table-plugin-export-xlsx'
21
+ import 'vxe-table/lib/index.css'
21
22
 
22
23
  Vue.use(VXETable)
23
24
  VXETable.use(VXETablePluginExportXLSX)
@@ -15,8 +15,7 @@ function getCellLabel(column, cellValue) {
15
15
  if (cellValue) {
16
16
  switch (column.cellType) {
17
17
  case 'string':
18
- // return _xeUtils["default"].toValueString(cellValue);
19
- return _xeUtils.toValueString(cellValue);
18
+ return _xeUtils["default"].toValueString(cellValue);
20
19
  case 'number':
21
20
  if (!isNaN(cellValue)) {
22
21
  return Number(cellValue);
@@ -32,9 +31,7 @@ function getCellLabel(column, cellValue) {
32
31
  return cellValue;
33
32
  }
34
33
  function getFooterCellValue($table, opts, rows, column) {
35
- // var cellValue = _xeUtils["default"].toString(rows[$table.$getColumnIndex(column)]);
36
- var cellValue = _xeUtils.toString(rows[$table.$getColumnIndex(column)]);
37
-
34
+ var cellValue = _xeUtils["default"].toString(rows[$table.$getColumnIndex(column)]);
38
35
  return cellValue;
39
36
  }
40
37
  function toBuffer(wbout) {
@@ -51,7 +48,6 @@ function exportXLSX(params) {
51
48
  columns = params.columns,
52
49
  datas = params.datas;
53
50
  var sheetName = options.sheetName,
54
- type = options.type,
55
51
  isHeader = options.isHeader,
56
52
  isFooter = options.isFooter,
57
53
  original = options.original,
@@ -62,8 +58,7 @@ function exportXLSX(params) {
62
58
  // const rowList = datas
63
59
  if (isHeader) {
64
60
  columns.forEach(function (column) {
65
- // colHead[column.id] = XEUtils.toString(original ? column.property : column.getTitle())
66
- colHead[column.id] = _xeUtils.toString(original ? column.property : column.getTitle());
61
+ colHead[column.id] = _xeUtils["default"].toString(original ? column.property : column.getTitle());
67
62
  });
68
63
  }
69
64
  // 新增部分
@@ -86,14 +81,14 @@ function exportXLSX(params) {
86
81
  footList.push(item);
87
82
  });
88
83
  }
89
- var book = _xlsx.utils.book_new();
90
- var sheet = _xlsx.utils.json_to_sheet((isHeader ? [colHead] : []).concat(rowList).concat(footList), {
84
+ var book = _xlsx["default"].utils.book_new();
85
+ var sheet = _xlsx["default"].utils.json_to_sheet((isHeader ? [colHead] : []).concat(rowList).concat(footList), {
91
86
  skipHeader: true
92
87
  });
93
88
  // 转换数据
94
- _xlsx.utils.book_append_sheet(book, sheet, sheetName);
95
- var wbout = _xlsx.write(book, {
96
- bookType: type,
89
+ _xlsx["default"].utils.book_append_sheet(book, sheet, sheetName);
90
+ var wbout = _xlsx["default"].write(book, {
91
+ bookType: 'xlsx',
97
92
  bookSST: false,
98
93
  type: 'binary'
99
94
  });
@@ -244,4 +239,4 @@ if (typeof window !== 'undefined' && window.VXETable) {
244
239
  }
245
240
  var _default = VXETablePluginExportXLSX;
246
241
  exports["default"] = _default;
247
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LnRzIiwiaW5kZXguanMiXSwibmFtZXMiOlsiX3Z4ZXRhYmxlIiwiZ2V0Q2VsbExhYmVsIiwiY29sdW1uIiwiY2VsbFZhbHVlIiwiY2VsbFR5cGUiLCJYRVV0aWxzIiwidG9WYWx1ZVN0cmluZyIsImlzTmFOIiwiTnVtYmVyIiwibGVuZ3RoIiwiZ2V0Rm9vdGVyQ2VsbFZhbHVlIiwiJHRhYmxlIiwib3B0cyIsInJvd3MiLCJ0b1N0cmluZyIsIiRnZXRDb2x1bW5JbmRleCIsInRvQnVmZmVyIiwid2JvdXQiLCJidWYiLCJBcnJheUJ1ZmZlciIsInZpZXciLCJVaW50OEFycmF5IiwiaW5kZXgiLCJjaGFyQ29kZUF0IiwiZXhwb3J0WExTWCIsInBhcmFtcyIsIm9wdGlvbnMiLCJjb2x1bW5zIiwiZGF0YXMiLCJzaGVldE5hbWUiLCJ0eXBlIiwiaXNIZWFkZXIiLCJpc0Zvb3RlciIsIm9yaWdpbmFsIiwibWVzc2FnZSIsImZvb3RlckZpbHRlck1ldGhvZCIsImNvbEhlYWQiLCJmb290TGlzdCIsImZvckVhY2giLCJpZCIsInByb3BlcnR5IiwiZ2V0VGl0bGUiLCJyb3dMaXN0IiwibWFwIiwiaXRlbSIsInJlc3QiLCJnZXRUYWJsZURhdGEiLCJmb290ZXJEYXRhIiwiZm9vdGVycyIsImZpbHRlciIsInB1c2giLCJib29rIiwiWExTWCIsInV0aWxzIiwiYm9va19uZXciLCJzaGVldCIsImpzb25fdG9fc2hlZXQiLCJjb25jYXQiLCJza2lwSGVhZGVyIiwiYm9va19hcHBlbmRfc2hlZXQiLCJ3cml0ZSIsImJvb2tUeXBlIiwiYm9va1NTVCIsImJsb2IiLCJCbG9iIiwiZG93bmxvYWRGaWxlIiwibW9kYWwiLCJ0Iiwic3RhdHVzIiwid2luZG93IiwiZmlsZW5hbWUiLCJuYXZpZ2F0b3IiLCJtc1NhdmVCbG9iIiwibGlua0VsZW0iLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJ0YXJnZXQiLCJkb3dubG9hZCIsImhyZWYiLCJVUkwiLCJjcmVhdGVPYmplY3RVUkwiLCJib2R5IiwiYXBwZW5kQ2hpbGQiLCJjbGljayIsInJlbW92ZUNoaWxkIiwiY29uc29sZSIsImVycm9yIiwicmVwbGFjZURvdWJsZVF1b3RhdGlvbiIsInZhbCIsInJlcGxhY2UiLCJwYXJzZUNzdiIsImNvbnRlbnQiLCJsaXN0Iiwic3BsaXQiLCJmaWVsZHMiLCJyTGlzdCIsInNsaWNlIiwiciIsImNvbEluZGV4IiwiY2hlY2tJbXBvcnREYXRhIiwidGFibGVGaWVsZHMiLCJmaWVsZCIsImV2ZXJ5IiwiaW5jbHVkZXMiLCJpbXBvcnRYTFNYIiwiZmlsZSIsIl9pbXBvcnRSZXNvbHZlIiwiZmlsZVJlYWRlciIsIkZpbGVSZWFkZXIiLCJvbmxvYWQiLCJlIiwid29ya2Jvb2siLCJyZWFkIiwicmVzdWx0IiwiY3N2RGF0YSIsInNoZWV0X3RvX2NzdiIsIlNoZWV0cyIsIlNoZWV0MSIsImNyZWF0ZURhdGEiLCJ0aGVuIiwiZGF0YSIsIm1vZGUiLCJpbnNlcnRBdCIsInJlbG9hZERhdGEiLCJ0ZW1wbGF0ZSIsInJlYWRBc0JpbmFyeVN0cmluZyIsImhhbmRsZUltcG9ydEV2ZW50IiwiaGFuZGxlRXhwb3J0RXZlbnQiLCJWWEVUYWJsZVBsdWdpbkV4cG9ydFhMU1giLCJpbnN0YWxsIiwieHRhYmxlIiwiaW50ZXJjZXB0b3IiLCJPYmplY3QiLCJhc3NpZ24iLCJ0eXBlcyIsInhsc3giLCJtaXhpbiIsIlZYRVRhYmxlIiwidXNlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFDQTtBQVNBO0FBQXVCO0FBVnZCOztBQVdBO0FBRUEsSUFBSUEsU0FBMEI7QUFHOUIsU0FBU0MsWUFBWSxDQUFFQyxNQUFvQixFQUFFQyxTQUFjLEVBQUE7RUFDekQsSUFBSUEsU0FBUyxFQUFFO0lBQ2IsUUFBUUQsTUFBTSxDQUFDRSxRQUFRO01BQ3JCLEtBQUssUUFBUTtRQUNYLE9BQU9DLG1CQUFPLENBQUNDLGFBQWEsQ0FBQ0gsU0FBUyxDQUFDO01BQ3pDLEtBQUssUUFBUTtRQUNYLElBQUksQ0FBQ0ksS0FBSyxDQUFDSixT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Q29FLFFBQVEsRUFBRTtFQUNwRHBFLE1BQU0sQ0FBQ29FLFFBQVEsQ0FBQ0MsR0FBRyxDQUFDVix3QkFBd0IsQ0FBQztBQ3RCL0M7QUR1QkMsZUFFY0Esd0JBQXdCO0FBQUEiLCJmaWxlIjoiaW5kZXguY29tbW9uLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tdW51c2VkLXZhcnMgKi9cclxuaW1wb3J0IFhFVXRpbHMgZnJvbSAneGUtdXRpbHMvbWV0aG9kcy94ZS11dGlscydcclxuaW1wb3J0IHtcclxuICBWWEVUYWJsZSxcclxuICBUYWJsZSxcclxuICBJbnRlcmNlcHRvckV4cG9ydFBhcmFtcyxcclxuICBJbnRlcmNlcHRvckltcG9ydFBhcmFtcyxcclxuICBDb2x1bW5Db25maWcsXHJcbiAgRXhwb3J0T3B0b25zXHJcbn0gZnJvbSAndnhlLXRhYmxlL2xpYi92eGUtdGFibGUnXHJcbmltcG9ydCBYTFNYIGZyb20gJ3hsc3gnXHJcbi8qIGVzbGludC1lbmFibGUgbm8tdW51c2VkLXZhcnMgKi9cclxuXHJcbmxldCBfdnhldGFibGU6IHR5cGVvZiBWWEVUYWJsZVxyXG5cclxuXHJcbmZ1bmN0aW9uIGdldENlbGxMYWJlbCAoY29sdW1uOiBDb2x1bW5Db25maWcsIGNlbGxWYWx1ZTogYW55KSB7XHJcbiAgaWYgKGNlbGxWYWx1ZSkge1xyXG4gICAgc3dpdGNoIChjb2x1bW4uY2VsbFR5cGUpIHtcclxuICAgICAgY2FzZSAnc3RyaW5nJzpcclxuICAgICAgICByZXR1cm4gWEVVdGlscy50b1ZhbHVlU3RyaW5nKGNlbGxWYWx1ZSlcclxuICAgICAgY2FzZSAnbnVtYmVyJzpcclxuICAgICAgICBpZiAoIWlzTmFOKGNlbGxWYWx1ZSkpIHtcclxuICAgICAgICAgIHJldHVybiBOdW1iZXIoY2VsbFZhbHVlKVxyXG4gICAgICAgIH1cclxuICAgICAgICBicmVha1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGlmIChjZWxsVmFsdWUubGVuZ3RoIDwgMTIgJiYgIWlzTmFOKGNlbGxWYWx1ZSkpIHtcclxuICAgICAgICAgIHJldHVybiBOdW1iZXIoY2VsbFZhbHVlKVxyXG4gICAgICAgIH1cclxuICAgICAgICBicmVha1xyXG4gICAgfVxyXG4gIH1cclxuICByZXR1cm4gY2VsbFZhbHVlXHJcbn1cclxuXHJcblxyXG5cclxuZnVuY3Rpb24gZ2V0Rm9vdGVyQ2VsbFZhbHVlICgkdGFibGU6IFRhYmxlLCBvcHRzOiBFeHBvcnRPcHRvbnMsIHJvd3M6IGFueVtdLCBjb2x1bW46IENvbHVtbkNvbmZpZykge1xyXG4gIHZhciBjZWxsVmFsdWUgPSBYRVV0aWxzLnRvU3RyaW5nKHJvd3NbJHRhYmxlLiRnZXRDb2x1bW5JbmRleChjb2x1bW4pXSlcclxuICByZXR1cm4gY2VsbFZhbHVlXHJcbn1cclxuXHJcbmZ1bmN0aW9uIHRvQnVmZmVyICh3Ym91dDogYW55KSB7XHJcbiAgbGV0IGJ1ZiA9IG5ldyBBcnJheUJ1ZmZlcih3Ym91dC5sZW5ndGgpXHJcbiAgbGV0IHZpZXcgPSBuZXcgVWludDhBcnJheShidWYpXHJcbiAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCAhPT0gd2JvdXQubGVuZ3RoOyArK2luZGV4KSB2aWV3W2luZGV4XSA9IHdib3V0LmNoYXJDb2RlQXQoaW5kZXgpICYgMHhGRlxyXG4gIHJldHVybiBidWZcclxufVxyXG5cclxuZnVuY3Rpb24gZXhwb3J0WExTWCAocGFyYW1zOiBJbnRlcmNlcHRvckV4cG9ydFBhcmFtcykge1xyXG4gIGNvbnN0IHsgJHRhYmxlLCBvcHRpb25zLCBjb2x1bW5zLCBkYXRhcyB9ID0gcGFyYW1zXHJcbiAgY29uc3QgeyBzaGVldE5hbWUsIHR5cGUsIGlzSGVhZGVyLCBpc0Zvb3Rlciwgb3JpZ2luYWwsIG1lc3NhZ2UsIGZvb3RlckZpbHRlck1ldGhvZCB9ID0gb3B0aW9uc1xyXG4gIGNvbnN0IGNvbEhlYWQ6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPSB7fVxyXG4gIGNvbnN0IGZvb3RMaXN0OiB7IFtrZXk6IHN0cmluZ106IGFueSB9W10gPSBbXVxyXG4gIC8vIGNvbnN0IHJvd0xpc3QgPSBkYXRhc1xyXG5cclxuICBpZiAoaXNIZWFkZXIpIHtcclxuICAgIGNvbHVtbnMuZm9yRWFjaCgoY29sdW1uKSA9PiB7XHJcbiAgICAgIC8vIGNvbEhlYWRbY29sdW1uLmlkXSA9IFhFVXRpbHMudG9TdHJpbmcob3JpZ2luYWwgPyBjb2x1bW4ucHJvcGVydHkgOiBjb2x1bW4uZ2V0VGl0bGUoKSlcclxuICAgICAgY29sSGVhZFtjb2x1bW4uaWRdID0gWEVVdGlscy50b1N0cmluZyhvcmlnaW5hbCA/IGNvbHVtbi5wcm9wZXJ0eSA6IGNvbHVtbi5nZXRUaXRsZSgpKVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIC8vIOaWsOWinumDqOWIhlxyXG4gIGNvbnN0IHJvd0xpc3QgPSBkYXRhcy5tYXAoaXRlbSA9PiB7XHJcbiAgICBjb25zdCByZXN0OiBhbnkgPSB7fVxyXG4gICAgY29sdW1ucy5mb3JFYWNoKChjb2x1bW4pID0+IHtcclxuICAgICAgcmVzdFtjb2x1bW4uaWRdID0gZ2V0Q2VsbExhYmVsKGNvbHVtbiwgaXRlbVtjb2x1bW4uaWRdKVxyXG4gICAgfSlcclxuICAgIHJldHVybiByZXN0XHJcbiAgfSlcclxuXHJcbiAgaWYgKGlzRm9vdGVyKSB7XHJcbiAgICBjb25zdCB7IGZvb3RlckRhdGEgfSA9ICR0YWJsZS5nZXRUYWJsZURhdGEoKVxyXG4gICAgY29uc3QgZm9vdGVycyA9IGZvb3RlckZpbHRlck1ldGhvZCA/IGZvb3RlckRhdGEuZmlsdGVyKGZvb3RlckZpbHRlck1ldGhvZCkgOiBmb290ZXJEYXRhXHJcbiAgICBmb290ZXJzLmZvckVhY2goKHJvd3MpID0+IHtcclxuICAgICAgY29uc3QgaXRlbTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IHt9XHJcbiAgICAgIGNvbHVtbnMuZm9yRWFjaCgoY29sdW1uKSA9PiB7XHJcbiAgICAgICAgaXRlbVtjb2x1bW4uaWRdID0gZ2V0Rm9vdGVyQ2VsbFZhbHVlKCR0YWJsZSwgb3B0aW9ucywgcm93cywgY29sdW1uKVxyXG4gICAgICB9KVxyXG4gICAgICBmb290TGlzdC5wdXNoKGl0ZW0pXHJcbiAgICB9KVxyXG4gIH1cclxuICBjb25zdCBib29rID0gWExTWC51dGlscy5ib29rX25ldygpXHJcbiAgY29uc3Qgc2hlZXQgPSBYTFNYLnV0aWxzLmpzb25fdG9fc2hlZXQoKGlzSGVhZGVyID8gW2NvbEhlYWRdIDogW10pLmNvbmNhdChyb3dMaXN0KS5jb25jYXQoZm9vdExpc3QpLCB7IHNraXBIZWFkZXI6IHRydWUgfSlcclxuICAvLyDovazmjaLmlbDmja5cclxuICBYTFNYLnV0aWxzLmJvb2tfYXBwZW5kX3NoZWV0KGJvb2ssIHNoZWV0LCBzaGVldE5hbWUpXHJcbiAgY29uc3Qgd2JvdXQgPSBYTFNYLndyaXRlKGJvb2ssIHsgYm9va1R5cGU6IHR5cGUsIGJvb2tTU1Q6IGZhbHNlLCB0eXBlOiAnYmluYXJ5JyB9KVxyXG4gIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbdG9CdWZmZXIod2JvdXQpXSwgeyB0eXBlOiAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJyB9KVxyXG4gIC8vIOS/neWtmOWvvOWHulxyXG4gIGRvd25sb2FkRmlsZShibG9iLCBvcHRpb25zKVxyXG4gIGlmIChtZXNzYWdlICE9PSBmYWxzZSkge1xyXG4gICAgX3Z4ZXRhYmxlLm1vZGFsLm1lc3NhZ2UoeyBtZXNzYWdlOiBfdnhldGFibGUudCgndnhlLnRhYmxlLmV4cFN1Y2Nlc3MnKSwgc3RhdHVzOiAnc3VjY2VzcycgfSlcclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGRvd25sb2FkRmlsZSAoYmxvYjogQmxvYiwgb3B0aW9uczogRXhwb3J0T3B0b25zKSB7XHJcbiAgaWYgKHdpbmRvdy5CbG9iKSB7XHJcbiAgICBjb25zdCB7IGZpbGVuYW1lLCB0eXBlIH0gPSBvcHRpb25zXHJcbiAgICBpZiAobmF2aWdhdG9yLm1zU2F2ZUJsb2IpIHtcclxuICAgICAgbmF2aWdhdG9yLm1zU2F2ZUJsb2IoYmxvYiwgYCR7ZmlsZW5hbWV9LiR7dHlwZX1gKVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdmFyIGxpbmtFbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpXHJcbiAgICAgIGxpbmtFbGVtLnRhcmdldCA9ICdfYmxhbmsnXHJcbiAgICAgIGxpbmtFbGVtLmRvd25sb2FkID0gYCR7ZmlsZW5hbWV9LiR7dHlwZX1gXHJcbiAgICAgIGxpbmtFbGVtLmhyZWYgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpXHJcbiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobGlua0VsZW0pXHJcbiAgICAgIGxpbmtFbGVtLmNsaWNrKClcclxuICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChsaW5rRWxlbSlcclxuICAgIH1cclxuICB9IGVsc2Uge1xyXG4gICAgY29uc29sZS5lcnJvcihfdnhldGFibGUudCgndnhlLmVycm9yLm5vdEV4cCcpKVxyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gcmVwbGFjZURvdWJsZVF1b3RhdGlvbiAodmFsOiBzdHJpbmcpIHtcclxuICByZXR1cm4gdmFsLnJlcGxhY2UoL15cIi8sICcnKS5yZXBsYWNlKC9cIiQvLCAnJylcclxufVxyXG5cclxuZnVuY3Rpb24gcGFyc2VDc3YgKGNvbHVtbnM6IENvbHVtbkNvbmZpZ1tdLCBjb250ZW50OiBzdHJpbmcpIHtcclxuICBjb25zdCBsaXN0ID0gY29udGVudC5zcGxpdCgnXFxuJylcclxuICBjb25zdCBmaWVsZHM6IHN0cmluZ1tdID0gW11cclxuICBjb25zdCByb3dzOiBhbnlbXSA9IFtdXHJcbiAgaWYgKGxpc3QubGVuZ3RoKSB7XHJcbiAgICBjb25zdCByTGlzdCA9IGxpc3Quc2xpY2UoMSlcclxuICAgIGxpc3RbMF0uc3BsaXQoJywnKS5tYXAocmVwbGFjZURvdWJsZVF1b3RhdGlvbilcclxuICAgIHJMaXN0LmZvckVhY2goKHIpID0+IHtcclxuICAgICAgaWYgKHIpIHtcclxuICAgICAgICBjb25zdCBpdGVtOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge31cclxuICAgICAgICByLnNwbGl0KCcsJykuZm9yRWFjaCgodmFsLCBjb2xJbmRleCkgPT4ge1xyXG4gICAgICAgICAgaWYgKGZpZWxkc1tjb2xJbmRleF0pIHtcclxuICAgICAgICAgICAgaXRlbVtmaWVsZHNbY29sSW5kZXhdXSA9IHJlcGxhY2VEb3VibGVRdW90YXRpb24odmFsKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgcm93cy5wdXNoKGl0ZW0pXHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG4gIHJldHVybiB7IGZpZWxkcywgcm93cyB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGNoZWNrSW1wb3J0RGF0YSAoY29sdW1uczogQ29sdW1uQ29uZmlnW10sIGZpZWxkczogc3RyaW5nW10sIHJvd3M6IGFueVtdKSB7XHJcbiAgbGV0IHRhYmxlRmllbGRzOiBzdHJpbmdbXSA9IFtdXHJcbiAgY29sdW1ucy5mb3JFYWNoKChjb2x1bW4pID0+IHtcclxuICAgIGxldCBmaWVsZCA9IGNvbHVtbi5wcm9wZXJ0eVxyXG4gICAgaWYgKGZpZWxkKSB7XHJcbiAgICAgIHRhYmxlRmllbGRzLnB1c2goZmllbGQpXHJcbiAgICB9XHJcbiAgfSlcclxuICByZXR1cm4gdGFibGVGaWVsZHMuZXZlcnkoKGZpZWxkKSA9PiBmaWVsZHMuaW5jbHVkZXMoZmllbGQpKVxyXG59XHJcblxyXG5mdW5jdGlvbiBpbXBvcnRYTFNYIChwYXJhbXM6IEludGVyY2VwdG9ySW1wb3J0UGFyYW1zKSB7XHJcbiAgY29uc3QgeyBjb2x1bW5zLCBvcHRpb25zLCBmaWxlIH0gPSBwYXJhbXNcclxuICBjb25zdCAkdGFibGU6IGFueSA9IHBhcmFtcy4kdGFibGVcclxuICBjb25zdCB7IF9pbXBvcnRSZXNvbHZlIH0gPSAkdGFibGVcclxuICBjb25zdCBmaWxlUmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKVxyXG4gIGZpbGVSZWFkZXIub25sb2FkID0gKGU6IGFueSkgPT4ge1xyXG4gICAgY29uc3Qgd29ya2Jvb2sgPSBYTFNYLnJlYWQoZS50YXJnZXQucmVzdWx0LCB7IHR5cGU6ICdiaW5hcnknIH0pXHJcbiAgICBjb25zdCBjc3ZEYXRhOiBzdHJpbmcgPSBYTFNYLnV0aWxzLnNoZWV0X3RvX2Nzdih3b3JrYm9vay5TaGVldHMuU2hlZXQxKVxyXG4gICAgY29uc3QgeyBmaWVsZHMsIHJvd3MgfSA9IHBhcnNlQ3N2KGNvbHVtbnMsIGNzdkRhdGEpXHJcbiAgICBjb25zdCBzdGF0dXMgPSBjaGVja0ltcG9ydERhdGEoY29sdW1ucywgZmllbGRzLCByb3dzKVxyXG4gICAgaWYgKHN0YXR1cykge1xyXG4gICAgICAkdGFibGUuY3JlYXRlRGF0YShyb3dzKVxyXG4gICAgICAgIC50aGVuKChkYXRhOiBhbnlbXSkgPT4ge1xyXG4gICAgICAgICAgaWYgKG9wdGlvbnMubW9kZSA9PT0gJ2FwcGVuZCcpIHtcclxuICAgICAgICAgICAgJHRhYmxlLmluc2VydEF0KGRhdGEsIC0xKVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgJHRhYmxlLnJlbG9hZERhdGEoZGF0YSlcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICBpZiAob3B0aW9ucy5tZXNzYWdlICE9PSBmYWxzZSkge1xyXG4gICAgICAgIF92eGV0YWJsZS5tb2RhbC5tZXNzYWdlKHsgbWVzc2FnZTogWEVVdGlscy50ZW1wbGF0ZShfdnhldGFibGUudCgndnhlLnRhYmxlLmltcFN1Y2Nlc3MnKSwgW3Jvd3MubGVuZ3RoXSksIHN0YXR1czogJ3N1Y2Nlc3MnIH0pXHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAob3B0aW9ucy5tZXNzYWdlICE9PSBmYWxzZSkge1xyXG4gICAgICBfdnhldGFibGUubW9kYWwubWVzc2FnZSh7IG1lc3NhZ2U6IF92eGV0YWJsZS50KCd2eGUuZXJyb3IuaW1wRmllbGRzJyksIHN0YXR1czogJ2Vycm9yJyB9KVxyXG4gICAgfVxyXG4gICAgaWYgKF9pbXBvcnRSZXNvbHZlKSB7XHJcbiAgICAgIF9pbXBvcnRSZXNvbHZlKHN0YXR1cylcclxuICAgICAgJHRhYmxlLl9pbXBvcnRSZXNvbHZlID0gbnVsbFxyXG4gICAgfVxyXG4gIH1cclxuICBmaWxlUmVhZGVyLnJlYWRBc0JpbmFyeVN0cmluZyhmaWxlKVxyXG59XHJcblxyXG5mdW5jdGlvbiBoYW5kbGVJbXBvcnRFdmVudCAocGFyYW1zOiBJbnRlcmNlcHRvckltcG9ydFBhcmFtcykge1xyXG4gIGlmIChwYXJhbXMub3B0aW9ucy50eXBlID09PSAneGxzeCcpIHtcclxuICAgIGltcG9ydFhMU1gocGFyYW1zKVxyXG4gICAgcmV0dXJuIGZhbHNlXHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBoYW5kbGVFeHBvcnRFdmVudCAocGFyYW1zOiBJbnRlcmNlcHRvckV4cG9ydFBhcmFtcykge1xyXG4gIGlmIChwYXJhbXMub3B0aW9ucy50eXBlID09PSAneGxzeCcpIHtcclxuICAgIGV4cG9ydFhMU1gocGFyYW1zKVxyXG4gICAgcmV0dXJuIGZhbHNlXHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuICog5Z+65LqOIHZ4ZS10YWJsZSDooajmoLznmoTlop7lvLrmj5Lku7bvvIzmlK/mjIHlr7zlh7ogeGxzeCDmoLzlvI9cclxuICovXHJcbmV4cG9ydCBjb25zdCBWWEVUYWJsZVBsdWdpbkV4cG9ydFhMU1ggPSB7XHJcbiAgaW5zdGFsbCAoeHRhYmxlOiB0eXBlb2YgVlhFVGFibGUpIHtcclxuICAgIGNvbnN0IHsgaW50ZXJjZXB0b3IgfSA9IHh0YWJsZVxyXG4gICAgX3Z4ZXRhYmxlID0geHRhYmxlXHJcbiAgICBPYmplY3QuYXNzaWduKHh0YWJsZS50eXBlcywgeyB4bHN4OiAxIH0pXHJcbiAgICBpbnRlcmNlcHRvci5taXhpbih7XHJcbiAgICAgICdldmVudC5pbXBvcnQnOiBoYW5kbGVJbXBvcnRFdmVudCxcclxuICAgICAgJ2V2ZW50LmV4cG9ydCc6IGhhbmRsZUV4cG9ydEV2ZW50XHJcbiAgICB9KVxyXG4gIH1cclxufVxyXG5cclxuaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHdpbmRvdy5WWEVUYWJsZSkge1xyXG4gIHdpbmRvdy5WWEVUYWJsZS51c2UoVlhFVGFibGVQbHVnaW5FeHBvcnRYTFNYKVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBWWEVUYWJsZVBsdWdpbkV4cG9ydFhMU1hcclxuIiwiLyogZXNsaW50LWRpc2FibGUgbm8tdW51c2VkLXZhcnMgKi9cbmltcG9ydCBYRVV0aWxzIGZyb20gJ3hlLXV0aWxzL21ldGhvZHMveGUtdXRpbHMnO1xuaW1wb3J0IFhMU1ggZnJvbSAneGxzeCc7XG4vKiBlc2xpbnQtZW5hYmxlIG5vLXVudXNlZC12YXJzICovXG5sZXQgX3Z4ZXRhYmxlO1xuZnVuY3Rpb24gZ2V0Q2VsbExhYmVsKGNvbHVtbiwgY2VsbFZhbHVlKSB7XG4gICAgaWYgKGNlbGxWYWx1ZSkge1xuICAgICAgICBzd2l0Y2ggKGNvbHVtbi5jZWxsVHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWEVVdGlscy50b1ZhbHVlU3RyaW5nKGNlbGxWYWx1ZSk7XG4gICAgICAgICAgICBjYXNlICdudW1iZXInOlxuICAgICAgICAgICAgICAgIGlmICghaXNOYU4oY2VsbFZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gTnVtYmVyKGNlbGxWYWx1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBpZiAoY2VsbFZhbHVlLmxlbmd0aCA8IDEyICYmICFpc05hTihjZWxsVmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBOdW1iZXIoY2VsbFZhbHVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNlbGxWYWx1ZTtcbn1cbmZ1bmN0aW9uIGdldEZvb3RlckNlbGxWYWx1ZSgkdGFibGUsIG9wdHMsIHJvd3MsIGNvbHVtbikge1xuICAgIHZhciBjZWxsVmFsdWUgPSBYRVV0aWxzLnRvU3RyaW5nKHJvd3NbJHRhYmxlLiRnZXRDb2x1bW5JbmRleChjb2x1bW4pXSk7XG4gICAgcmV0dXJuIGNlbGxWYWx1ZTtcbn1cbmZ1bmN0aW9uIHRvQnVmZmVyKHdib3V0KSB7XG4gICAgbGV0IGJ1ZiA9IG5ldyBBcnJheUJ1ZmZlcih3Ym91dC5sZW5ndGgpO1xuICAgIGxldCB2aWV3ID0gbmV3IFVpbnQ4QXJyYXkoYnVmKTtcbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4ICE9PSB3Ym91dC5sZW5ndGg7ICsraW5kZXgpXG4gICAgICAgIHZpZXdbaW5kZXhdID0gd2JvdXQuY2hhckNvZGVBdChpbmRleCkgJiAweEZGO1xuICAgIHJldHVybiBidWY7XG59XG5mdW5jdGlvbiBleHBvcnRYTFNYKHBhcmFtcykge1xuICAgIGNvbnN0IHsgJHRhYmxlLCBvcHRpb25zLCBjb2x1bW5zLCBkYXRhcyB9ID0gcGFyYW1zO1xuICAgIGNvbnN0IHsgc2hlZXROYW1lLCB0eXBlLCBpc0hlYWRlciwgaXNGb290ZXIsIG9yaWdpbmFsLCBtZXNzYWdlLCBmb290ZXJGaWx0ZXJNZXRob2QgfSA9IG9wdGlvbnM7XG4gICAgY29uc3QgY29sSGVhZCA9IHt9O1xuICAgIGNvbnN0IGZvb3RMaXN0ID0gW107XG4gICAgLy8gY29uc3Qgcm93TGlzdCA9IGRhdGFzXG4gICAgaWYgKGlzSGVhZGVyKSB7XG4gICAgICAgIGNvbHVtbnMuZm9yRWFjaCgoY29sdW1uKSA9PiB7XG4gICAgICAgICAgICAvLyBjb2xIZWFkW2NvbHVtbi5pZF0gPSBYRVV0aWxzLnRvU3RyaW5nKG9yaWdpbmFsID8gY29sdW1uLnByb3BlcnR5IDogY29sdW1uLmdldFRpdGxlKCkpXG4gICAgICAgICAgICBjb2xIZWFkW2NvbHVtbi5pZF0gPSBYRVV0aWxzLnRvU3RyaW5nKG9yaWdpbmFsID8gY29sdW1uLnByb3BlcnR5IDogY29sdW1uLmdldFRpdGxlKCkpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgLy8g5paw5aKe6YOo5YiGXG4gICAgY29uc3Qgcm93TGlzdCA9IGRhdGFzLm1hcChpdGVtID0+IHtcbiAgICAgICAgY29uc3QgcmVzdCA9IHt9O1xuICAgICAgICBjb2x1bW5zLmZvckVhY2goKGNvbHVtbikgPT4ge1xuICAgICAgICAgICAgcmVzdFtjb2x1bW4uaWRdID0gZ2V0Q2VsbExhYmVsKGNvbHVtbiwgaXRlbVtjb2x1bW4uaWRdKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiByZXN0O1xuICAgIH0pO1xuICAgIGlmIChpc0Zvb3Rlcikge1xuICAgICAgICBjb25zdCB7IGZvb3RlckRhdGEgfSA9ICR0YWJsZS5nZXRUYWJsZURhdGEoKTtcbiAgICAgICAgY29uc3QgZm9vdGVycyA9IGZvb3RlckZpbHRlck1ldGhvZCA/IGZvb3RlckRhdGEuZmlsdGVyKGZvb3RlckZpbHRlck1ldGhvZCkgOiBmb290ZXJEYXRhO1xuICAgICAgICBmb290ZXJzLmZvckVhY2goKHJvd3MpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSB7fTtcbiAgICAgICAgICAgIGNvbHVtbnMuZm9yRWFjaCgoY29sdW1uKSA9PiB7XG4gICAgICAgICAgICAgICAgaXRlbVtjb2x1bW4uaWRdID0gZ2V0Rm9vdGVyQ2VsbFZhbHVlKCR0YWJsZSwgb3B0aW9ucywgcm93cywgY29sdW1uKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgZm9vdExpc3QucHVzaChpdGVtKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnN0IGJvb2sgPSBYTFNYLnV0aWxzLmJvb2tfbmV3KCk7XG4gICAgY29uc3Qgc2hlZXQgPSBYTFNYLnV0aWxzLmpzb25fdG9fc2hlZXQoKGlzSGVhZGVyID8gW2NvbEhlYWRdIDogW10pLmNvbmNhdChyb3dMaXN0KS5jb25jYXQoZm9vdExpc3QpLCB7IHNraXBIZWFkZXI6IHRydWUgfSk7XG4gICAgLy8g6L2s5o2i5pWw5o2uXG4gICAgWExTWC51dGlscy5ib29rX2FwcGVuZF9zaGVldChib29rLCBzaGVldCwgc2hlZXROYW1lKTtcbiAgICBjb25zdCB3Ym91dCA9IFhMU1gud3JpdGUoYm9vaywgeyBib29rVHlwZTogdHlwZSwgYm9va1NTVDogZmFsc2UsIHR5cGU6ICdiaW5hcnknIH0pO1xuICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbdG9CdWZmZXIod2JvdXQpXSwgeyB0eXBlOiAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJyB9KTtcbiAgICAvLyDkv53lrZjlr7zlh7pcbiAgICBkb3dubG9hZEZpbGUoYmxvYiwgb3B0aW9ucyk7XG4gICAgaWYgKG1lc3NhZ2UgIT09IGZhbHNlKSB7XG4gICAgICAgIF92eGV0YWJsZS5tb2RhbC5tZXNzYWdlKHsgbWVzc2FnZTogX3Z4ZXRhYmxlLnQoJ3Z4ZS50YWJsZS5leHBTdWNjZXNzJyksIHN0YXR1czogJ3N1Y2Nlc3MnIH0pO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGRvd25sb2FkRmlsZShibG9iLCBvcHRpb25zKSB7XG4gICAgaWYgKHdpbmRvdy5CbG9iKSB7XG4gICAgICAgIGNvbnN0IHsgZmlsZW5hbWUsIHR5cGUgfSA9IG9wdGlvbnM7XG4gICAgICAgIGlmIChuYXZpZ2F0b3IubXNTYXZlQmxvYikge1xuICAgICAgICAgICAgbmF2aWdhdG9yLm1zU2F2ZUJsb2IoYmxvYiwgYCR7ZmlsZW5hbWV9LiR7dHlwZX1gKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHZhciBsaW5rRWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICAgICAgICAgIGxpbmtFbGVtLnRhcmdldCA9ICdfYmxhbmsnO1xuICAgICAgICAgICAgbGlua0VsZW0uZG93bmxvYWQgPSBgJHtmaWxlbmFtZX0uJHt0eXBlfWA7XG4gICAgICAgICAgICBsaW5rRWxlbS5ocmVmID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobGlua0VsZW0pO1xuICAgICAgICAgICAgbGlua0VsZW0uY2xpY2soKTtcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobGlua0VsZW0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBjb25zb2xlLmVycm9yKF92eGV0YWJsZS50KCd2eGUuZXJyb3Iubm90RXhwJykpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIHJlcGxhY2VEb3VibGVRdW90YXRpb24odmFsKSB7XG4gICAgcmV0dXJuIHZhbC5yZXBsYWNlKC9eXCIvLCAnJykucmVwbGFjZSgvXCIkLywgJycpO1xufVxuZnVuY3Rpb24gcGFyc2VDc3YoY29sdW1ucywgY29udGVudCkge1xuICAgIGNvbnN0IGxpc3QgPSBjb250ZW50LnNwbGl0KCdcXG4nKTtcbiAgICBjb25zdCBmaWVsZHMgPSBbXTtcbiAgICBjb25zdCByb3dzID0gW107XG4gICAgaWYgKGxpc3QubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IHJMaXN0ID0gbGlzdC5zbGljZSgxKTtcbiAgICAgICAgbGlzdFswXS5zcGxpdCgnLCcpLm1hcChyZXBsYWNlRG91YmxlUXVvdGF0aW9uKTtcbiAgICAgICAgckxpc3QuZm9yRWFjaCgocikgPT4ge1xuICAgICAgICAgICAgaWYgKHIpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpdGVtID0ge307XG4gICAgICAgICAgICAgICAgci5zcGxpdCgnLCcpLmZvckVhY2goKHZhbCwgY29sSW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpZWxkc1tjb2xJbmRleF0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1bZmllbGRzW2NvbEluZGV4XV0gPSByZXBsYWNlRG91YmxlUXVvdGF0aW9uKHZhbCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICByb3dzLnB1c2goaXRlbSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4geyBmaWVsZHMsIHJvd3MgfTtcbn1cbmZ1bmN0aW9uIGNoZWNrSW1wb3J0RGF0YShjb2x1bW5zLCBmaWVsZHMsIHJvd3MpIHtcbiAgICBsZXQgdGFibGVGaWVsZHMgPSBbXTtcbiAgICBjb2x1bW5zLmZvckVhY2goKGNvbHVtbikgPT4ge1xuICAgICAgICBsZXQgZmllbGQgPSBjb2x1bW4ucHJvcGVydHk7XG4gICAgICAgIGlmIChmaWVsZCkge1xuICAgICAgICAgICAgdGFibGVGaWVsZHMucHVzaChmaWVsZCk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gdGFibGVGaWVsZHMuZXZlcnkoKGZpZWxkKSA9PiBmaWVsZHMuaW5jbHVkZXMoZmllbGQpKTtcbn1cbmZ1bmN0aW9uIGltcG9ydFhMU1gocGFyYW1zKSB7XG4gICAgY29uc3QgeyBjb2x1bW5zLCBvcHRpb25zLCBmaWxlIH0gPSBwYXJhbXM7XG4gICAgY29uc3QgJHRhYmxlID0gcGFyYW1zLiR0YWJsZTtcbiAgICBjb25zdCB7IF9pbXBvcnRSZXNvbHZlIH0gPSAkdGFibGU7XG4gICAgY29uc3QgZmlsZVJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgZmlsZVJlYWRlci5vbmxvYWQgPSAoZSkgPT4ge1xuICAgICAgICBjb25zdCB3b3JrYm9vayA9IFhMU1gucmVhZChlLnRhcmdldC5yZXN1bHQsIHsgdHlwZTogJ2JpbmFyeScgfSk7XG4gICAgICAgIGNvbnN0IGNzdkRhdGEgPSBYTFNYLnV0aWxzLnNoZWV0X3RvX2Nzdih3b3JrYm9vay5TaGVldHMuU2hlZXQxKTtcbiAgICAgICAgY29uc3QgeyBmaWVsZHMsIHJvd3MgfSA9IHBhcnNlQ3N2KGNvbHVtbnMsIGNzdkRhdGEpO1xuICAgICAgICBjb25zdCBzdGF0dXMgPSBjaGVja0ltcG9ydERhdGEoY29sdW1ucywgZmllbGRzLCByb3dzKTtcbiAgICAgICAgaWYgKHN0YXR1cykge1xuICAgICAgICAgICAgJHRhYmxlLmNyZWF0ZURhdGEocm93cylcbiAgICAgICAgICAgICAgICAudGhlbigoZGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLm1vZGUgPT09ICdhcHBlbmQnKSB7XG4gICAgICAgICAgICAgICAgICAgICR0YWJsZS5pbnNlcnRBdChkYXRhLCAtMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAkdGFibGUucmVsb2FkRGF0YShkYXRhKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLm1lc3NhZ2UgIT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgX3Z4ZXRhYmxlLm1vZGFsLm1lc3NhZ2UoeyBtZXNzYWdlOiBYRVV0aWxzLnRlbXBsYXRlKF92eGV0YWJsZS50KCd2eGUudGFibGUuaW1wU3VjY2VzcycpLCBbcm93cy5sZW5ndGhdKSwgc3RhdHVzOiAnc3VjY2VzcycgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAob3B0aW9ucy5tZXNzYWdlICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgX3Z4ZXRhYmxlLm1vZGFsLm1lc3NhZ2UoeyBtZXNzYWdlOiBfdnhldGFibGUudCgndnhlLmVycm9yLmltcEZpZWxkcycpLCBzdGF0dXM6ICdlcnJvcicgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKF9pbXBvcnRSZXNvbHZlKSB7XG4gICAgICAgICAgICBfaW1wb3J0UmVzb2x2ZShzdGF0dXMpO1xuICAgICAgICAgICAgJHRhYmxlLl9pbXBvcnRSZXNvbHZlID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH07XG4gICAgZmlsZVJlYWRlci5yZWFkQXNCaW5hcnlTdHJpbmcoZmlsZSk7XG59XG5mdW5jdGlvbiBoYW5kbGVJbXBvcnRFdmVudChwYXJhbXMpIHtcbiAgICBpZiAocGFyYW1zLm9wdGlvbnMudHlwZSA9PT0gJ3hsc3gnKSB7XG4gICAgICAgIGltcG9ydFhMU1gocGFyYW1zKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGhhbmRsZUV4cG9ydEV2ZW50KHBhcmFtcykge1xuICAgIGlmIChwYXJhbXMub3B0aW9ucy50eXBlID09PSAneGxzeCcpIHtcbiAgICAgICAgZXhwb3J0WExTWChwYXJhbXMpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxufVxuLyoqXG4gKiDln7rkuo4gdnhlLXRhYmxlIOihqOagvOeahOWinuW8uuaPkuS7tu+8jOaUr+aMgeWvvOWHuiB4bHN4IOagvOW8j1xuICovXG5leHBvcnQgY29uc3QgVlhFVGFibGVQbHVnaW5FeHBvcnRYTFNYID0ge1xuICAgIGluc3RhbGwoeHRhYmxlKSB7XG4gICAgICAgIGNvbnN0IHsgaW50ZXJjZXB0b3IgfSA9IHh0YWJsZTtcbiAgICAgICAgX3Z4ZXRhYmxlID0geHRhYmxlO1xuICAgICAgICBPYmplY3QuYXNzaWduKHh0YWJsZS50eXBlcywgeyB4bHN4OiAxIH0pO1xuICAgICAgICBpbnRlcmNlcHRvci5taXhpbih7XG4gICAgICAgICAgICAnZXZlbnQuaW1wb3J0JzogaGFuZGxlSW1wb3J0RXZlbnQsXG4gICAgICAgICAgICAnZXZlbnQuZXhwb3J0JzogaGFuZGxlRXhwb3J0RXZlbnRcbiAgICAgICAgfSk7XG4gICAgfVxufTtcbmlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB3aW5kb3cuVlhFVGFibGUpIHtcbiAgICB3aW5kb3cuVlhFVGFibGUudXNlKFZYRVRhYmxlUGx1Z2luRXhwb3J0WExTWCk7XG59XG5leHBvcnQgZGVmYXVsdCBWWEVUYWJsZVBsdWdpbkV4cG9ydFhMU1g7XG4iXX0=
242
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LnRzIiwiaW5kZXguanMiXSwibmFtZXMiOlsiX3Z4ZXRhYmxlIiwiZ2V0Q2VsbExhYmVsIiwiY29sdW1uIiwiY2VsbFZhbHVlIiwiY2VsbFR5cGUiLCJYRVV0aWxzIiwidG9WYWx1ZVN0cmluZyIsImlzTmFOIiwiTnVtYmVyIiwibGVuZ3RoIiwiZ2V0Rm9vdGVyQ2VsbFZhbHVlIiwiJHRhYmxlIiwib3B0cyIsInJvd3MiLCJ0b1N0cmluZyIsIiRnZXRDb2x1bW5JbmRleCIsInRvQnVmZmVyIiwid2JvdXQiLCJidWYiLCJBcnJheUJ1ZmZlciIsInZpZXciLCJVaW50OEFycmF5IiwiaW5kZXgiLCJjaGFyQ29kZUF0IiwiZXhwb3J0WExTWCIsInBhcmFtcyIsIm9wdGlvbnMiLCJjb2x1bW5zIiwiZGF0YXMiLCJzaGVldE5hbWUiLCJpc0hlYWRlciIsImlzRm9vdGVyIiwib3JpZ2luYWwiLCJtZXNzYWdlIiwiZm9vdGVyRmlsdGVyTWV0aG9kIiwiY29sSGVhZCIsImZvb3RMaXN0IiwiZm9yRWFjaCIsImlkIiwicHJvcGVydHkiLCJnZXRUaXRsZSIsInJvd0xpc3QiLCJtYXAiLCJpdGVtIiwicmVzdCIsImdldFRhYmxlRGF0YSIsImZvb3RlckRhdGEiLCJmb290ZXJzIiwiZmlsdGVyIiwicHVzaCIsImJvb2siLCJYTFNYIiwidXRpbHMiLCJib29rX25ldyIsInNoZWV0IiwianNvbl90b19zaGVldCIsImNvbmNhdCIsInNraXBIZWFkZXIiLCJib29rX2FwcGVuZF9zaGVldCIsIndyaXRlIiwiYm9va1R5cGUiLCJib29rU1NUIiwidHlwZSIsImJsb2IiLCJCbG9iIiwiZG93bmxvYWRGaWxlIiwibW9kYWwiLCJ0Iiwic3RhdHVzIiwid2luZG93IiwiZmlsZW5hbWUiLCJuYXZpZ2F0b3IiLCJtc1NhdmVCbG9iIiwibGlua0VsZW0iLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJ0YXJnZXQiLCJkb3dubG9hZCIsImhyZWYiLCJVUkwiLCJjcmVhdGVPYmplY3RVUkwiLCJib2R5IiwiYXBwZW5kQ2hpbGQiLCJjbGljayIsInJlbW92ZUNoaWxkIiwiY29uc29sZSIsImVycm9yIiwicmVwbGFjZURvdWJsZVF1b3RhdGlvbiIsInZhbCIsInJlcGxhY2UiLCJwYXJzZUNzdiIsImNvbnRlbnQiLCJsaXN0Iiwic3BsaXQiLCJmaWVsZHMiLCJyTGlzdCIsInNsaWNlIiwiciIsImNvbEluZGV4IiwiY2hlY2tJbXBvcnREYXRhIiwidGFibGVGaWVsZHMiLCJmaWVsZCIsImV2ZXJ5IiwiaW5jbHVkZXMiLCJpbXBvcnRYTFNYIiwiZmlsZSIsIl9pbXBvcnRSZXNvbHZlIiwiZmlsZVJlYWRlciIsIkZpbGVSZWFkZXIiLCJvbmxvYWQiLCJlIiwid29ya2Jvb2siLCJyZWFkIiwicmVzdWx0IiwiY3N2RGF0YSIsInNoZWV0X3RvX2NzdiIsIlNoZWV0cyIsIlNoZWV0MSIsImNyZWF0ZURhdGEiLCJ0aGVuIiwiZGF0YSIsIm1vZGUiLCJpbnNlcnRBdCIsInJlbG9hZERhdGEiLCJ0ZW1wbGF0ZSIsInJlYWRBc0JpbmFyeVN0cmluZyIsImhhbmRsZUltcG9ydEV2ZW50IiwiaGFuZGxlRXhwb3J0RXZlbnQiLCJWWEVUYWJsZVBsdWdpbkV4cG9ydFhMU1giLCJpbnN0YWxsIiwieHRhYmxlIiwiaW50ZXJjZXB0b3IiLCJPYmplY3QiLCJhc3NpZ24iLCJ0eXBlcyIsInhsc3giLCJtaXhpbiIsIlZYRVRhYmxlIiwidXNlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFDQTtBQVNBO0FBQXVCO0FBVnZCOztBQVdBO0FBRUEsSUFBSUEsU0FBMEI7QUFHOUIsU0FBU0MsWUFBWSxDQUFFQyxNQUFvQixFQUFFQyxTQUFjLEVBQUE7RUFDekQsSUFBSUEsU0FBUyxFQUFFO0lBQ2IsUUFBUUQsTUFBTSxDQUFDRSxRQUFRO01BQ3JCLEtBQUssUUFBUTtRQUNYLE9BQU9DLG1CQUFPLENBQUNDLGFBQWEsQ0FBQ0gsU0FBUyxDQUFDO01BQ3pDLEtBQUssUUFBUTtRQUNYLElBQUksQ0FBQ0ksS0FBSyxDQUFDSixT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QUFHLENBQUNWLHdCQUF3QixDQUFDO0FDdEIvQztBRHVCQyxlQUVjQSx3QkFBd0I7QUFBQSIsImZpbGUiOiJpbmRleC5jb21tb24uanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby11bnVzZWQtdmFycyAqL1xyXG5pbXBvcnQgWEVVdGlscyBmcm9tICd4ZS11dGlscy9tZXRob2RzL3hlLXV0aWxzJ1xyXG5pbXBvcnQge1xyXG4gIFZYRVRhYmxlLFxyXG4gIFRhYmxlLFxyXG4gIEludGVyY2VwdG9yRXhwb3J0UGFyYW1zLFxyXG4gIEludGVyY2VwdG9ySW1wb3J0UGFyYW1zLFxyXG4gIENvbHVtbkNvbmZpZyxcclxuICBFeHBvcnRPcHRvbnNcclxufSBmcm9tICd2eGUtdGFibGUvbGliL3Z4ZS10YWJsZSdcclxuaW1wb3J0IFhMU1ggZnJvbSAneGxzeCdcclxuLyogZXNsaW50LWVuYWJsZSBuby11bnVzZWQtdmFycyAqL1xyXG5cclxubGV0IF92eGV0YWJsZTogdHlwZW9mIFZYRVRhYmxlXHJcblxyXG5cclxuZnVuY3Rpb24gZ2V0Q2VsbExhYmVsIChjb2x1bW46IENvbHVtbkNvbmZpZywgY2VsbFZhbHVlOiBhbnkpIHtcclxuICBpZiAoY2VsbFZhbHVlKSB7XHJcbiAgICBzd2l0Y2ggKGNvbHVtbi5jZWxsVHlwZSkge1xyXG4gICAgICBjYXNlICdzdHJpbmcnOlxyXG4gICAgICAgIHJldHVybiBYRVV0aWxzLnRvVmFsdWVTdHJpbmcoY2VsbFZhbHVlKVxyXG4gICAgICBjYXNlICdudW1iZXInOlxyXG4gICAgICAgIGlmICghaXNOYU4oY2VsbFZhbHVlKSkge1xyXG4gICAgICAgICAgcmV0dXJuIE51bWJlcihjZWxsVmFsdWUpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrXHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgaWYgKGNlbGxWYWx1ZS5sZW5ndGggPCAxMiAmJiAhaXNOYU4oY2VsbFZhbHVlKSkge1xyXG4gICAgICAgICAgcmV0dXJuIE51bWJlcihjZWxsVmFsdWUpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrXHJcbiAgICB9XHJcbiAgfVxyXG4gIHJldHVybiBjZWxsVmFsdWVcclxufVxyXG5cclxuXHJcblxyXG5mdW5jdGlvbiBnZXRGb290ZXJDZWxsVmFsdWUgKCR0YWJsZTogVGFibGUsIG9wdHM6IEV4cG9ydE9wdG9ucywgcm93czogYW55W10sIGNvbHVtbjogQ29sdW1uQ29uZmlnKSB7XHJcbiAgdmFyIGNlbGxWYWx1ZSA9IFhFVXRpbHMudG9TdHJpbmcocm93c1skdGFibGUuJGdldENvbHVtbkluZGV4KGNvbHVtbildKVxyXG4gIHJldHVybiBjZWxsVmFsdWVcclxufVxyXG5cclxuZnVuY3Rpb24gdG9CdWZmZXIgKHdib3V0OiBhbnkpIHtcclxuICBsZXQgYnVmID0gbmV3IEFycmF5QnVmZmVyKHdib3V0Lmxlbmd0aClcclxuICBsZXQgdmlldyA9IG5ldyBVaW50OEFycmF5KGJ1ZilcclxuICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4ICE9PSB3Ym91dC5sZW5ndGg7ICsraW5kZXgpIHZpZXdbaW5kZXhdID0gd2JvdXQuY2hhckNvZGVBdChpbmRleCkgJiAweEZGXHJcbiAgcmV0dXJuIGJ1ZlxyXG59XHJcblxyXG5mdW5jdGlvbiBleHBvcnRYTFNYIChwYXJhbXM6IEludGVyY2VwdG9yRXhwb3J0UGFyYW1zKSB7XHJcbiAgY29uc3QgeyAkdGFibGUsIG9wdGlvbnMsIGNvbHVtbnMsIGRhdGFzIH0gPSBwYXJhbXNcclxuICBjb25zdCB7IHNoZWV0TmFtZSwgaXNIZWFkZXIsIGlzRm9vdGVyLCBvcmlnaW5hbCwgbWVzc2FnZSwgZm9vdGVyRmlsdGVyTWV0aG9kIH0gPSBvcHRpb25zXHJcbiAgY29uc3QgY29sSGVhZDogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IHt9XHJcbiAgY29uc3QgZm9vdExpc3Q6IHsgW2tleTogc3RyaW5nXTogYW55IH1bXSA9IFtdXHJcbiAgLy8gY29uc3Qgcm93TGlzdCA9IGRhdGFzXHJcblxyXG4gIGlmIChpc0hlYWRlcikge1xyXG4gICAgY29sdW1ucy5mb3JFYWNoKChjb2x1bW4pID0+IHtcclxuICAgICAgY29sSGVhZFtjb2x1bW4uaWRdID0gWEVVdGlscy50b1N0cmluZyhvcmlnaW5hbCA/IGNvbHVtbi5wcm9wZXJ0eSA6IGNvbHVtbi5nZXRUaXRsZSgpKVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIC8vIOaWsOWinumDqOWIhlxyXG4gIGNvbnN0IHJvd0xpc3QgPSBkYXRhcy5tYXAoaXRlbSA9PiB7XHJcbiAgICBjb25zdCByZXN0OiBhbnkgPSB7fVxyXG4gICAgY29sdW1ucy5mb3JFYWNoKChjb2x1bW4pID0+IHtcclxuICAgICAgcmVzdFtjb2x1bW4uaWRdID0gZ2V0Q2VsbExhYmVsKGNvbHVtbiwgaXRlbVtjb2x1bW4uaWRdKVxyXG4gICAgfSlcclxuICAgIHJldHVybiByZXN0XHJcbiAgfSlcclxuXHJcbiAgaWYgKGlzRm9vdGVyKSB7XHJcbiAgICBjb25zdCB7IGZvb3RlckRhdGEgfSA9ICR0YWJsZS5nZXRUYWJsZURhdGEoKVxyXG4gICAgY29uc3QgZm9vdGVycyA9IGZvb3RlckZpbHRlck1ldGhvZCA/IGZvb3RlckRhdGEuZmlsdGVyKGZvb3RlckZpbHRlck1ldGhvZCkgOiBmb290ZXJEYXRhXHJcbiAgICBmb290ZXJzLmZvckVhY2goKHJvd3MpID0+IHtcclxuICAgICAgY29uc3QgaXRlbTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IHt9XHJcbiAgICAgIGNvbHVtbnMuZm9yRWFjaCgoY29sdW1uKSA9PiB7XHJcbiAgICAgICAgaXRlbVtjb2x1bW4uaWRdID0gZ2V0Rm9vdGVyQ2VsbFZhbHVlKCR0YWJsZSwgb3B0aW9ucywgcm93cywgY29sdW1uKVxyXG4gICAgICB9KVxyXG4gICAgICBmb290TGlzdC5wdXNoKGl0ZW0pXHJcbiAgICB9KVxyXG4gIH1cclxuICBjb25zdCBib29rID0gWExTWC51dGlscy5ib29rX25ldygpXHJcbiAgY29uc3Qgc2hlZXQgPSBYTFNYLnV0aWxzLmpzb25fdG9fc2hlZXQoKGlzSGVhZGVyID8gW2NvbEhlYWRdIDogW10pLmNvbmNhdChyb3dMaXN0KS5jb25jYXQoZm9vdExpc3QpLCB7IHNraXBIZWFkZXI6IHRydWUgfSlcclxuICAvLyDovazmjaLmlbDmja5cclxuICBYTFNYLnV0aWxzLmJvb2tfYXBwZW5kX3NoZWV0KGJvb2ssIHNoZWV0LCBzaGVldE5hbWUpXHJcbiAgY29uc3Qgd2JvdXQgPSBYTFNYLndyaXRlKGJvb2ssIHsgYm9va1R5cGU6ICd4bHN4JywgYm9va1NTVDogZmFsc2UsIHR5cGU6ICdiaW5hcnknIH0pXHJcbiAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFt0b0J1ZmZlcih3Ym91dCldLCB7IHR5cGU6ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nIH0pXHJcbiAgLy8g5L+d5a2Y5a+85Ye6XHJcbiAgZG93bmxvYWRGaWxlKGJsb2IsIG9wdGlvbnMpXHJcbiAgaWYgKG1lc3NhZ2UgIT09IGZhbHNlKSB7XHJcbiAgICBfdnhldGFibGUubW9kYWwubWVzc2FnZSh7IG1lc3NhZ2U6IF92eGV0YWJsZS50KCd2eGUudGFibGUuZXhwU3VjY2VzcycpLCBzdGF0dXM6ICdzdWNjZXNzJyB9KVxyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gZG93bmxvYWRGaWxlIChibG9iOiBCbG9iLCBvcHRpb25zOiBFeHBvcnRPcHRvbnMpIHtcclxuICBpZiAod2luZG93LkJsb2IpIHtcclxuICAgIGNvbnN0IHsgZmlsZW5hbWUsIHR5cGUgfSA9IG9wdGlvbnNcclxuICAgIGlmIChuYXZpZ2F0b3IubXNTYXZlQmxvYikge1xyXG4gICAgICBuYXZpZ2F0b3IubXNTYXZlQmxvYihibG9iLCBgJHtmaWxlbmFtZX0uJHt0eXBlfWApXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB2YXIgbGlua0VsZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJylcclxuICAgICAgbGlua0VsZW0udGFyZ2V0ID0gJ19ibGFuaydcclxuICAgICAgbGlua0VsZW0uZG93bmxvYWQgPSBgJHtmaWxlbmFtZX0uJHt0eXBlfWBcclxuICAgICAgbGlua0VsZW0uaHJlZiA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYilcclxuICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChsaW5rRWxlbSlcclxuICAgICAgbGlua0VsZW0uY2xpY2soKVxyXG4gICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGxpbmtFbGVtKVxyXG4gICAgfVxyXG4gIH0gZWxzZSB7XHJcbiAgICBjb25zb2xlLmVycm9yKF92eGV0YWJsZS50KCd2eGUuZXJyb3Iubm90RXhwJykpXHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiByZXBsYWNlRG91YmxlUXVvdGF0aW9uICh2YWw6IHN0cmluZykge1xyXG4gIHJldHVybiB2YWwucmVwbGFjZSgvXlwiLywgJycpLnJlcGxhY2UoL1wiJC8sICcnKVxyXG59XHJcblxyXG5mdW5jdGlvbiBwYXJzZUNzdiAoY29sdW1uczogQ29sdW1uQ29uZmlnW10sIGNvbnRlbnQ6IHN0cmluZykge1xyXG4gIGNvbnN0IGxpc3QgPSBjb250ZW50LnNwbGl0KCdcXG4nKVxyXG4gIGNvbnN0IGZpZWxkczogc3RyaW5nW10gPSBbXVxyXG4gIGNvbnN0IHJvd3M6IGFueVtdID0gW11cclxuICBpZiAobGlzdC5sZW5ndGgpIHtcclxuICAgIGNvbnN0IHJMaXN0ID0gbGlzdC5zbGljZSgxKVxyXG4gICAgbGlzdFswXS5zcGxpdCgnLCcpLm1hcChyZXBsYWNlRG91YmxlUXVvdGF0aW9uKVxyXG4gICAgckxpc3QuZm9yRWFjaCgocikgPT4ge1xyXG4gICAgICBpZiAocikge1xyXG4gICAgICAgIGNvbnN0IGl0ZW06IHsgW2tleTogc3RyaW5nXTogYW55IH0gPSB7fVxyXG4gICAgICAgIHIuc3BsaXQoJywnKS5mb3JFYWNoKCh2YWwsIGNvbEluZGV4KSA9PiB7XHJcbiAgICAgICAgICBpZiAoZmllbGRzW2NvbEluZGV4XSkge1xyXG4gICAgICAgICAgICBpdGVtW2ZpZWxkc1tjb2xJbmRleF1dID0gcmVwbGFjZURvdWJsZVF1b3RhdGlvbih2YWwpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgICByb3dzLnB1c2goaXRlbSlcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcbiAgcmV0dXJuIHsgZmllbGRzLCByb3dzIH1cclxufVxyXG5cclxuZnVuY3Rpb24gY2hlY2tJbXBvcnREYXRhIChjb2x1bW5zOiBDb2x1bW5Db25maWdbXSwgZmllbGRzOiBzdHJpbmdbXSwgcm93czogYW55W10pIHtcclxuICBsZXQgdGFibGVGaWVsZHM6IHN0cmluZ1tdID0gW11cclxuICBjb2x1bW5zLmZvckVhY2goKGNvbHVtbikgPT4ge1xyXG4gICAgbGV0IGZpZWxkID0gY29sdW1uLnByb3BlcnR5XHJcbiAgICBpZiAoZmllbGQpIHtcclxuICAgICAgdGFibGVGaWVsZHMucHVzaChmaWVsZClcclxuICAgIH1cclxuICB9KVxyXG4gIHJldHVybiB0YWJsZUZpZWxkcy5ldmVyeSgoZmllbGQpID0+IGZpZWxkcy5pbmNsdWRlcyhmaWVsZCkpXHJcbn1cclxuXHJcbmZ1bmN0aW9uIGltcG9ydFhMU1ggKHBhcmFtczogSW50ZXJjZXB0b3JJbXBvcnRQYXJhbXMpIHtcclxuICBjb25zdCB7IGNvbHVtbnMsIG9wdGlvbnMsIGZpbGUgfSA9IHBhcmFtc1xyXG4gIGNvbnN0ICR0YWJsZTogYW55ID0gcGFyYW1zLiR0YWJsZVxyXG4gIGNvbnN0IHsgX2ltcG9ydFJlc29sdmUgfSA9ICR0YWJsZVxyXG4gIGNvbnN0IGZpbGVSZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpXHJcbiAgZmlsZVJlYWRlci5vbmxvYWQgPSAoZTogYW55KSA9PiB7XHJcbiAgICBjb25zdCB3b3JrYm9vayA9IFhMU1gucmVhZChlLnRhcmdldC5yZXN1bHQsIHsgdHlwZTogJ2JpbmFyeScgfSlcclxuICAgIGNvbnN0IGNzdkRhdGE6IHN0cmluZyA9IFhMU1gudXRpbHMuc2hlZXRfdG9fY3N2KHdvcmtib29rLlNoZWV0cy5TaGVldDEpXHJcbiAgICBjb25zdCB7IGZpZWxkcywgcm93cyB9ID0gcGFyc2VDc3YoY29sdW1ucywgY3N2RGF0YSlcclxuICAgIGNvbnN0IHN0YXR1cyA9IGNoZWNrSW1wb3J0RGF0YShjb2x1bW5zLCBmaWVsZHMsIHJvd3MpXHJcbiAgICBpZiAoc3RhdHVzKSB7XHJcbiAgICAgICR0YWJsZS5jcmVhdGVEYXRhKHJvd3MpXHJcbiAgICAgICAgLnRoZW4oKGRhdGE6IGFueVtdKSA9PiB7XHJcbiAgICAgICAgICBpZiAob3B0aW9ucy5tb2RlID09PSAnYXBwZW5kJykge1xyXG4gICAgICAgICAgICAkdGFibGUuaW5zZXJ0QXQoZGF0YSwgLTEpXHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAkdGFibGUucmVsb2FkRGF0YShkYXRhKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgIGlmIChvcHRpb25zLm1lc3NhZ2UgIT09IGZhbHNlKSB7XHJcbiAgICAgICAgX3Z4ZXRhYmxlLm1vZGFsLm1lc3NhZ2UoeyBtZXNzYWdlOiBYRVV0aWxzLnRlbXBsYXRlKF92eGV0YWJsZS50KCd2eGUudGFibGUuaW1wU3VjY2VzcycpLCBbcm93cy5sZW5ndGhdKSwgc3RhdHVzOiAnc3VjY2VzcycgfSlcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmIChvcHRpb25zLm1lc3NhZ2UgIT09IGZhbHNlKSB7XHJcbiAgICAgIF92eGV0YWJsZS5tb2RhbC5tZXNzYWdlKHsgbWVzc2FnZTogX3Z4ZXRhYmxlLnQoJ3Z4ZS5lcnJvci5pbXBGaWVsZHMnKSwgc3RhdHVzOiAnZXJyb3InIH0pXHJcbiAgICB9XHJcbiAgICBpZiAoX2ltcG9ydFJlc29sdmUpIHtcclxuICAgICAgX2ltcG9ydFJlc29sdmUoc3RhdHVzKVxyXG4gICAgICAkdGFibGUuX2ltcG9ydFJlc29sdmUgPSBudWxsXHJcbiAgICB9XHJcbiAgfVxyXG4gIGZpbGVSZWFkZXIucmVhZEFzQmluYXJ5U3RyaW5nKGZpbGUpXHJcbn1cclxuXHJcbmZ1bmN0aW9uIGhhbmRsZUltcG9ydEV2ZW50IChwYXJhbXM6IEludGVyY2VwdG9ySW1wb3J0UGFyYW1zKSB7XHJcbiAgaWYgKHBhcmFtcy5vcHRpb25zLnR5cGUgPT09ICd4bHN4Jykge1xyXG4gICAgaW1wb3J0WExTWChwYXJhbXMpXHJcbiAgICByZXR1cm4gZmFsc2VcclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGhhbmRsZUV4cG9ydEV2ZW50IChwYXJhbXM6IEludGVyY2VwdG9yRXhwb3J0UGFyYW1zKSB7XHJcbiAgaWYgKHBhcmFtcy5vcHRpb25zLnR5cGUgPT09ICd4bHN4Jykge1xyXG4gICAgZXhwb3J0WExTWChwYXJhbXMpXHJcbiAgICByZXR1cm4gZmFsc2VcclxuICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiDln7rkuo4gdnhlLXRhYmxlIOihqOagvOeahOWinuW8uuaPkuS7tu+8jOaUr+aMgeWvvOWHuiB4bHN4IOagvOW8j1xyXG4gKi9cclxuZXhwb3J0IGNvbnN0IFZYRVRhYmxlUGx1Z2luRXhwb3J0WExTWCA9IHtcclxuICBpbnN0YWxsICh4dGFibGU6IHR5cGVvZiBWWEVUYWJsZSkge1xyXG4gICAgY29uc3QgeyBpbnRlcmNlcHRvciB9ID0geHRhYmxlXHJcbiAgICBfdnhldGFibGUgPSB4dGFibGVcclxuICAgIE9iamVjdC5hc3NpZ24oeHRhYmxlLnR5cGVzLCB7IHhsc3g6IDEgfSlcclxuICAgIGludGVyY2VwdG9yLm1peGluKHtcclxuICAgICAgJ2V2ZW50LmltcG9ydCc6IGhhbmRsZUltcG9ydEV2ZW50LFxyXG4gICAgICAnZXZlbnQuZXhwb3J0JzogaGFuZGxlRXhwb3J0RXZlbnRcclxuICAgIH0pXHJcbiAgfVxyXG59XHJcblxyXG5pZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LlZYRVRhYmxlKSB7XHJcbiAgd2luZG93LlZYRVRhYmxlLnVzZShWWEVUYWJsZVBsdWdpbkV4cG9ydFhMU1gpXHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IFZYRVRhYmxlUGx1Z2luRXhwb3J0WExTWFxyXG4iLCIvKiBlc2xpbnQtZGlzYWJsZSBuby11bnVzZWQtdmFycyAqL1xuaW1wb3J0IFhFVXRpbHMgZnJvbSAneGUtdXRpbHMvbWV0aG9kcy94ZS11dGlscyc7XG5pbXBvcnQgWExTWCBmcm9tICd4bHN4Jztcbi8qIGVzbGludC1lbmFibGUgbm8tdW51c2VkLXZhcnMgKi9cbmxldCBfdnhldGFibGU7XG5mdW5jdGlvbiBnZXRDZWxsTGFiZWwoY29sdW1uLCBjZWxsVmFsdWUpIHtcbiAgICBpZiAoY2VsbFZhbHVlKSB7XG4gICAgICAgIHN3aXRjaCAoY29sdW1uLmNlbGxUeXBlKSB7XG4gICAgICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICAgICAgICAgIHJldHVybiBYRVV0aWxzLnRvVmFsdWVTdHJpbmcoY2VsbFZhbHVlKTtcbiAgICAgICAgICAgIGNhc2UgJ251bWJlcic6XG4gICAgICAgICAgICAgICAgaWYgKCFpc05hTihjZWxsVmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBOdW1iZXIoY2VsbFZhbHVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGlmIChjZWxsVmFsdWUubGVuZ3RoIDwgMTIgJiYgIWlzTmFOKGNlbGxWYWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE51bWJlcihjZWxsVmFsdWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY2VsbFZhbHVlO1xufVxuZnVuY3Rpb24gZ2V0Rm9vdGVyQ2VsbFZhbHVlKCR0YWJsZSwgb3B0cywgcm93cywgY29sdW1uKSB7XG4gICAgdmFyIGNlbGxWYWx1ZSA9IFhFVXRpbHMudG9TdHJpbmcocm93c1skdGFibGUuJGdldENvbHVtbkluZGV4KGNvbHVtbildKTtcbiAgICByZXR1cm4gY2VsbFZhbHVlO1xufVxuZnVuY3Rpb24gdG9CdWZmZXIod2JvdXQpIHtcbiAgICBsZXQgYnVmID0gbmV3IEFycmF5QnVmZmVyKHdib3V0Lmxlbmd0aCk7XG4gICAgbGV0IHZpZXcgPSBuZXcgVWludDhBcnJheShidWYpO1xuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggIT09IHdib3V0Lmxlbmd0aDsgKytpbmRleClcbiAgICAgICAgdmlld1tpbmRleF0gPSB3Ym91dC5jaGFyQ29kZUF0KGluZGV4KSAmIDB4RkY7XG4gICAgcmV0dXJuIGJ1Zjtcbn1cbmZ1bmN0aW9uIGV4cG9ydFhMU1gocGFyYW1zKSB7XG4gICAgY29uc3QgeyAkdGFibGUsIG9wdGlvbnMsIGNvbHVtbnMsIGRhdGFzIH0gPSBwYXJhbXM7XG4gICAgY29uc3QgeyBzaGVldE5hbWUsIGlzSGVhZGVyLCBpc0Zvb3Rlciwgb3JpZ2luYWwsIG1lc3NhZ2UsIGZvb3RlckZpbHRlck1ldGhvZCB9ID0gb3B0aW9ucztcbiAgICBjb25zdCBjb2xIZWFkID0ge307XG4gICAgY29uc3QgZm9vdExpc3QgPSBbXTtcbiAgICAvLyBjb25zdCByb3dMaXN0ID0gZGF0YXNcbiAgICBpZiAoaXNIZWFkZXIpIHtcbiAgICAgICAgY29sdW1ucy5mb3JFYWNoKChjb2x1bW4pID0+IHtcbiAgICAgICAgICAgIGNvbEhlYWRbY29sdW1uLmlkXSA9IFhFVXRpbHMudG9TdHJpbmcob3JpZ2luYWwgPyBjb2x1bW4ucHJvcGVydHkgOiBjb2x1bW4uZ2V0VGl0bGUoKSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvLyDmlrDlop7pg6jliIZcbiAgICBjb25zdCByb3dMaXN0ID0gZGF0YXMubWFwKGl0ZW0gPT4ge1xuICAgICAgICBjb25zdCByZXN0ID0ge307XG4gICAgICAgIGNvbHVtbnMuZm9yRWFjaCgoY29sdW1uKSA9PiB7XG4gICAgICAgICAgICByZXN0W2NvbHVtbi5pZF0gPSBnZXRDZWxsTGFiZWwoY29sdW1uLCBpdGVtW2NvbHVtbi5pZF0pO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3Q7XG4gICAgfSk7XG4gICAgaWYgKGlzRm9vdGVyKSB7XG4gICAgICAgIGNvbnN0IHsgZm9vdGVyRGF0YSB9ID0gJHRhYmxlLmdldFRhYmxlRGF0YSgpO1xuICAgICAgICBjb25zdCBmb290ZXJzID0gZm9vdGVyRmlsdGVyTWV0aG9kID8gZm9vdGVyRGF0YS5maWx0ZXIoZm9vdGVyRmlsdGVyTWV0aG9kKSA6IGZvb3RlckRhdGE7XG4gICAgICAgIGZvb3RlcnMuZm9yRWFjaCgocm93cykgPT4ge1xuICAgICAgICAgICAgY29uc3QgaXRlbSA9IHt9O1xuICAgICAgICAgICAgY29sdW1ucy5mb3JFYWNoKChjb2x1bW4pID0+IHtcbiAgICAgICAgICAgICAgICBpdGVtW2NvbHVtbi5pZF0gPSBnZXRGb290ZXJDZWxsVmFsdWUoJHRhYmxlLCBvcHRpb25zLCByb3dzLCBjb2x1bW4pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBmb290TGlzdC5wdXNoKGl0ZW0pO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgY29uc3QgYm9vayA9IFhMU1gudXRpbHMuYm9va19uZXcoKTtcbiAgICBjb25zdCBzaGVldCA9IFhMU1gudXRpbHMuanNvbl90b19zaGVldCgoaXNIZWFkZXIgPyBbY29sSGVhZF0gOiBbXSkuY29uY2F0KHJvd0xpc3QpLmNvbmNhdChmb290TGlzdCksIHsgc2tpcEhlYWRlcjogdHJ1ZSB9KTtcbiAgICAvLyDovazmjaLmlbDmja5cbiAgICBYTFNYLnV0aWxzLmJvb2tfYXBwZW5kX3NoZWV0KGJvb2ssIHNoZWV0LCBzaGVldE5hbWUpO1xuICAgIGNvbnN0IHdib3V0ID0gWExTWC53cml0ZShib29rLCB7IGJvb2tUeXBlOiAneGxzeCcsIGJvb2tTU1Q6IGZhbHNlLCB0eXBlOiAnYmluYXJ5JyB9KTtcbiAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW3RvQnVmZmVyKHdib3V0KV0sIHsgdHlwZTogJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbScgfSk7XG4gICAgLy8g5L+d5a2Y5a+85Ye6XG4gICAgZG93bmxvYWRGaWxlKGJsb2IsIG9wdGlvbnMpO1xuICAgIGlmIChtZXNzYWdlICE9PSBmYWxzZSkge1xuICAgICAgICBfdnhldGFibGUubW9kYWwubWVzc2FnZSh7IG1lc3NhZ2U6IF92eGV0YWJsZS50KCd2eGUudGFibGUuZXhwU3VjY2VzcycpLCBzdGF0dXM6ICdzdWNjZXNzJyB9KTtcbiAgICB9XG59XG5mdW5jdGlvbiBkb3dubG9hZEZpbGUoYmxvYiwgb3B0aW9ucykge1xuICAgIGlmICh3aW5kb3cuQmxvYikge1xuICAgICAgICBjb25zdCB7IGZpbGVuYW1lLCB0eXBlIH0gPSBvcHRpb25zO1xuICAgICAgICBpZiAobmF2aWdhdG9yLm1zU2F2ZUJsb2IpIHtcbiAgICAgICAgICAgIG5hdmlnYXRvci5tc1NhdmVCbG9iKGJsb2IsIGAke2ZpbGVuYW1lfS4ke3R5cGV9YCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB2YXIgbGlua0VsZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgICAgICAgICBsaW5rRWxlbS50YXJnZXQgPSAnX2JsYW5rJztcbiAgICAgICAgICAgIGxpbmtFbGVtLmRvd25sb2FkID0gYCR7ZmlsZW5hbWV9LiR7dHlwZX1gO1xuICAgICAgICAgICAgbGlua0VsZW0uaHJlZiA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxpbmtFbGVtKTtcbiAgICAgICAgICAgIGxpbmtFbGVtLmNsaWNrKCk7XG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGxpbmtFbGVtKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihfdnhldGFibGUudCgndnhlLmVycm9yLm5vdEV4cCcpKTtcbiAgICB9XG59XG5mdW5jdGlvbiByZXBsYWNlRG91YmxlUXVvdGF0aW9uKHZhbCkge1xuICAgIHJldHVybiB2YWwucmVwbGFjZSgvXlwiLywgJycpLnJlcGxhY2UoL1wiJC8sICcnKTtcbn1cbmZ1bmN0aW9uIHBhcnNlQ3N2KGNvbHVtbnMsIGNvbnRlbnQpIHtcbiAgICBjb25zdCBsaXN0ID0gY29udGVudC5zcGxpdCgnXFxuJyk7XG4gICAgY29uc3QgZmllbGRzID0gW107XG4gICAgY29uc3Qgcm93cyA9IFtdO1xuICAgIGlmIChsaXN0Lmxlbmd0aCkge1xuICAgICAgICBjb25zdCByTGlzdCA9IGxpc3Quc2xpY2UoMSk7XG4gICAgICAgIGxpc3RbMF0uc3BsaXQoJywnKS5tYXAocmVwbGFjZURvdWJsZVF1b3RhdGlvbik7XG4gICAgICAgIHJMaXN0LmZvckVhY2goKHIpID0+IHtcbiAgICAgICAgICAgIGlmIChyKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXRlbSA9IHt9O1xuICAgICAgICAgICAgICAgIHIuc3BsaXQoJywnKS5mb3JFYWNoKCh2YWwsIGNvbEluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaWVsZHNbY29sSW5kZXhdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtW2ZpZWxkc1tjb2xJbmRleF1dID0gcmVwbGFjZURvdWJsZVF1b3RhdGlvbih2YWwpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgcm93cy5wdXNoKGl0ZW0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHsgZmllbGRzLCByb3dzIH07XG59XG5mdW5jdGlvbiBjaGVja0ltcG9ydERhdGEoY29sdW1ucywgZmllbGRzLCByb3dzKSB7XG4gICAgbGV0IHRhYmxlRmllbGRzID0gW107XG4gICAgY29sdW1ucy5mb3JFYWNoKChjb2x1bW4pID0+IHtcbiAgICAgICAgbGV0IGZpZWxkID0gY29sdW1uLnByb3BlcnR5O1xuICAgICAgICBpZiAoZmllbGQpIHtcbiAgICAgICAgICAgIHRhYmxlRmllbGRzLnB1c2goZmllbGQpO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHRhYmxlRmllbGRzLmV2ZXJ5KChmaWVsZCkgPT4gZmllbGRzLmluY2x1ZGVzKGZpZWxkKSk7XG59XG5mdW5jdGlvbiBpbXBvcnRYTFNYKHBhcmFtcykge1xuICAgIGNvbnN0IHsgY29sdW1ucywgb3B0aW9ucywgZmlsZSB9ID0gcGFyYW1zO1xuICAgIGNvbnN0ICR0YWJsZSA9IHBhcmFtcy4kdGFibGU7XG4gICAgY29uc3QgeyBfaW1wb3J0UmVzb2x2ZSB9ID0gJHRhYmxlO1xuICAgIGNvbnN0IGZpbGVSZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgIGZpbGVSZWFkZXIub25sb2FkID0gKGUpID0+IHtcbiAgICAgICAgY29uc3Qgd29ya2Jvb2sgPSBYTFNYLnJlYWQoZS50YXJnZXQucmVzdWx0LCB7IHR5cGU6ICdiaW5hcnknIH0pO1xuICAgICAgICBjb25zdCBjc3ZEYXRhID0gWExTWC51dGlscy5zaGVldF90b19jc3Yod29ya2Jvb2suU2hlZXRzLlNoZWV0MSk7XG4gICAgICAgIGNvbnN0IHsgZmllbGRzLCByb3dzIH0gPSBwYXJzZUNzdihjb2x1bW5zLCBjc3ZEYXRhKTtcbiAgICAgICAgY29uc3Qgc3RhdHVzID0gY2hlY2tJbXBvcnREYXRhKGNvbHVtbnMsIGZpZWxkcywgcm93cyk7XG4gICAgICAgIGlmIChzdGF0dXMpIHtcbiAgICAgICAgICAgICR0YWJsZS5jcmVhdGVEYXRhKHJvd3MpXG4gICAgICAgICAgICAgICAgLnRoZW4oKGRhdGEpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5tb2RlID09PSAnYXBwZW5kJykge1xuICAgICAgICAgICAgICAgICAgICAkdGFibGUuaW5zZXJ0QXQoZGF0YSwgLTEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgJHRhYmxlLnJlbG9hZERhdGEoZGF0YSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAob3B0aW9ucy5tZXNzYWdlICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgIF92eGV0YWJsZS5tb2RhbC5tZXNzYWdlKHsgbWVzc2FnZTogWEVVdGlscy50ZW1wbGF0ZShfdnhldGFibGUudCgndnhlLnRhYmxlLmltcFN1Y2Nlc3MnKSwgW3Jvd3MubGVuZ3RoXSksIHN0YXR1czogJ3N1Y2Nlc3MnIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKG9wdGlvbnMubWVzc2FnZSAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgIF92eGV0YWJsZS5tb2RhbC5tZXNzYWdlKHsgbWVzc2FnZTogX3Z4ZXRhYmxlLnQoJ3Z4ZS5lcnJvci5pbXBGaWVsZHMnKSwgc3RhdHVzOiAnZXJyb3InIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChfaW1wb3J0UmVzb2x2ZSkge1xuICAgICAgICAgICAgX2ltcG9ydFJlc29sdmUoc3RhdHVzKTtcbiAgICAgICAgICAgICR0YWJsZS5faW1wb3J0UmVzb2x2ZSA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIGZpbGVSZWFkZXIucmVhZEFzQmluYXJ5U3RyaW5nKGZpbGUpO1xufVxuZnVuY3Rpb24gaGFuZGxlSW1wb3J0RXZlbnQocGFyYW1zKSB7XG4gICAgaWYgKHBhcmFtcy5vcHRpb25zLnR5cGUgPT09ICd4bHN4Jykge1xuICAgICAgICBpbXBvcnRYTFNYKHBhcmFtcyk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG59XG5mdW5jdGlvbiBoYW5kbGVFeHBvcnRFdmVudChwYXJhbXMpIHtcbiAgICBpZiAocGFyYW1zLm9wdGlvbnMudHlwZSA9PT0gJ3hsc3gnKSB7XG4gICAgICAgIGV4cG9ydFhMU1gocGFyYW1zKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbn1cbi8qKlxuICog5Z+65LqOIHZ4ZS10YWJsZSDooajmoLznmoTlop7lvLrmj5Lku7bvvIzmlK/mjIHlr7zlh7ogeGxzeCDmoLzlvI9cbiAqL1xuZXhwb3J0IGNvbnN0IFZYRVRhYmxlUGx1Z2luRXhwb3J0WExTWCA9IHtcbiAgICBpbnN0YWxsKHh0YWJsZSkge1xuICAgICAgICBjb25zdCB7IGludGVyY2VwdG9yIH0gPSB4dGFibGU7XG4gICAgICAgIF92eGV0YWJsZSA9IHh0YWJsZTtcbiAgICAgICAgT2JqZWN0LmFzc2lnbih4dGFibGUudHlwZXMsIHsgeGxzeDogMSB9KTtcbiAgICAgICAgaW50ZXJjZXB0b3IubWl4aW4oe1xuICAgICAgICAgICAgJ2V2ZW50LmltcG9ydCc6IGhhbmRsZUltcG9ydEV2ZW50LFxuICAgICAgICAgICAgJ2V2ZW50LmV4cG9ydCc6IGhhbmRsZUV4cG9ydEV2ZW50XG4gICAgICAgIH0pO1xuICAgIH1cbn07XG5pZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LlZYRVRhYmxlKSB7XG4gICAgd2luZG93LlZYRVRhYmxlLnVzZShWWEVUYWJsZVBsdWdpbkV4cG9ydFhMU1gpO1xufVxuZXhwb3J0IGRlZmF1bHQgVlhFVGFibGVQbHVnaW5FeHBvcnRYTFNYO1xuIl19
package/dist/index.js CHANGED
@@ -61,7 +61,6 @@
61
61
  columns = params.columns,
62
62
  datas = params.datas;
63
63
  var sheetName = options.sheetName,
64
- type = options.type,
65
64
  isHeader = options.isHeader,
66
65
  isFooter = options.isFooter,
67
66
  original = options.original,
@@ -72,7 +71,6 @@
72
71
  // const rowList = datas
73
72
  if (isHeader) {
74
73
  columns.forEach(function (column) {
75
- // colHead[column.id] = XEUtils.toString(original ? column.property : column.getTitle())
76
74
  colHead[column.id] = _xeUtils["default"].toString(original ? column.property : column.getTitle());
77
75
  });
78
76
  }
@@ -103,7 +101,7 @@
103
101
  // 转换数据
104
102
  _xlsx["default"].utils.book_append_sheet(book, sheet, sheetName);
105
103
  var wbout = _xlsx["default"].write(book, {
106
- bookType: type,
104
+ bookType: 'xlsx',
107
105
  bookSST: false,
108
106
  type: 'binary'
109
107
  });
package/dist/index.min.js CHANGED
@@ -1 +1 @@
1
- !function(e,t){"function"==typeof define&&define.amd?define("vxe-table-plugin-export-xlsx-xhx",["exports","xe-utils","xlsx"],t):"undefined"!=typeof exports?t(exports,require("xe-utils"),require("xlsx")):(t((t={exports:{}}).exports,e.XEUtils,e.XLSX),e.VXETablePluginExportXLSX=t.exports.default)}("undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:this,function(e,p,m){"use strict";function t(e){return e&&e.__esModule?e:{default:e}}var x;function n(e){var o=e.$table,t=e.options,a=e.columns,e=e.datas,n=t.sheetName,r=t.type,i=t.isHeader,s=t.isFooter,l=t.original,u=t.message,c=t.footerFilterMethod,f={},d=[],e=(i&&a.forEach(function(e){f[e.id]=p.default.toString(l?e.property:e.getTitle())}),e.map(function(t){var n={};return a.forEach(function(e){n[e.id]=function(e,t){if(t)switch(e.cellType){case"string":return p.default.toValueString(t);case"number":if(isNaN(t))break;return Number(t);default:if(t.length<12&&!isNaN(t))return Number(t)}return t}(e,t[e.id])}),n})),c=(s&&(s=o.getTableData().footerData,(c?s.filter(c):s).forEach(function(t){var n={};a.forEach(function(e){n[e.id]=p.default.toString(t[o.$getColumnIndex(e)])}),d.push(n)})),m.default.utils.book_new()),s=m.default.utils.json_to_sheet((i?[f]:[]).concat(e).concat(d),{skipHeader:!0}),i=(m.default.utils.book_append_sheet(c,s,n),m.default.write(c,{bookType:r,bookSST:!1,type:"binary"})),e=new Blob([function(e){for(var t=new ArrayBuffer(e.length),n=new Uint8Array(t),o=0;o!==e.length;++o)n[o]=255&e.charCodeAt(o);return t}(i)],{type:"application/octet-stream"}),s=t;window.Blob?(n=s.filename,s=s.type,navigator.msSaveBlob?navigator.msSaveBlob(e,"".concat(n,".").concat(s)):((c=document.createElement("a")).target="_blank",c.download="".concat(n,".").concat(s),c.href=URL.createObjectURL(e),document.body.appendChild(c),c.click(),document.body.removeChild(c))):console.error(x.t("vxe.error.notExp")),!1!==u&&x.modal.message({message:x.t("vxe.table.expSuccess"),status:"success"})}function c(e){return e.replace(/^"/,"").replace(/"$/,"")}function o(e){var i=e.columns,s=e.options,t=e.file,l=e.$table,u=l._importResolve,e=new FileReader;e.onload=function(e){var o,t,n,a,e=m.default.read(e.target.result,{type:"binary"}),e=m.default.utils.sheet_to_csv(e.Sheets.Sheet1),e=(e=(e=e).split("\n"),o=[],t=[],e.length&&(r=e.slice(1),e[0].split(",").map(c),r.forEach(function(e){var n;e&&(n={},e.split(",").forEach(function(e,t){o[t]&&(n[o[t]]=c(e))}),t.push(n))})),{fields:o,rows:t}),r=e.rows,e=(n=e.fields,a=[],i.forEach(function(e){e=e.property;e&&a.push(e)}),a.every(function(e){return n.includes(e)}));e?(l.createData(r).then(function(e){"append"===s.mode?l.insertAt(e,-1):l.reloadData(e)}),!1!==s.message&&x.modal.message({message:p.default.template(x.t("vxe.table.impSuccess"),[r.length]),status:"success"})):!1!==s.message&&x.modal.message({message:x.t("vxe.error.impFields"),status:"error"}),u&&(u(e),l._importResolve=null)},e.readAsBinaryString(t)}function a(e){if("xlsx"===e.options.type)return o(e),!1}function r(e){if("xlsx"===e.options.type)return n(e),!1}Object.defineProperty(e,"__esModule",{value:!0}),e.default=e.VXETablePluginExportXLSX=void 0,p=t(p),m=t(m);var i={install:function(e){var t=e.interceptor;x=e,Object.assign(e.types,{xlsx:1}),t.mixin({"event.import":a,"event.export":r})}};e.VXETablePluginExportXLSX=i,"undefined"!=typeof window&&window.VXETable&&window.VXETable.use(i);e.default=i});
1
+ !function(e,t){"function"==typeof define&&define.amd?define("vxe-table-plugin-export-xlsx-xhx",["exports","xe-utils","xlsx"],t):"undefined"!=typeof exports?t(exports,require("xe-utils"),require("xlsx")):(t((t={exports:{}}).exports,e.XEUtils,e.XLSX),e.VXETablePluginExportXLSX=t.exports.default)}("undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:this,function(e,d,p){"use strict";function t(e){return e&&e.__esModule?e:{default:e}}var m;function n(e){var o=e.$table,t=e.options,a=e.columns,e=e.datas,n=t.sheetName,r=t.isHeader,i=t.isFooter,s=t.original,l=t.message,u=t.footerFilterMethod,c={},f=[],e=(r&&a.forEach(function(e){c[e.id]=d.default.toString(s?e.property:e.getTitle())}),e.map(function(t){var n={};return a.forEach(function(e){n[e.id]=function(e,t){if(t)switch(e.cellType){case"string":return d.default.toValueString(t);case"number":if(isNaN(t))break;return Number(t);default:if(t.length<12&&!isNaN(t))return Number(t)}return t}(e,t[e.id])}),n})),u=(i&&(i=o.getTableData().footerData,(u?i.filter(u):i).forEach(function(t){var n={};a.forEach(function(e){n[e.id]=d.default.toString(t[o.$getColumnIndex(e)])}),f.push(n)})),p.default.utils.book_new()),i=p.default.utils.json_to_sheet((r?[c]:[]).concat(e).concat(f),{skipHeader:!0}),r=(p.default.utils.book_append_sheet(u,i,n),p.default.write(u,{bookType:"xlsx",bookSST:!1,type:"binary"})),e=new Blob([function(e){for(var t=new ArrayBuffer(e.length),n=new Uint8Array(t),o=0;o!==e.length;++o)n[o]=255&e.charCodeAt(o);return t}(r)],{type:"application/octet-stream"}),i=t;window.Blob?(n=i.filename,i=i.type,navigator.msSaveBlob?navigator.msSaveBlob(e,"".concat(n,".").concat(i)):((u=document.createElement("a")).target="_blank",u.download="".concat(n,".").concat(i),u.href=URL.createObjectURL(e),document.body.appendChild(u),u.click(),document.body.removeChild(u))):console.error(m.t("vxe.error.notExp")),!1!==l&&m.modal.message({message:m.t("vxe.table.expSuccess"),status:"success"})}function c(e){return e.replace(/^"/,"").replace(/"$/,"")}function o(e){var i=e.columns,s=e.options,t=e.file,l=e.$table,u=l._importResolve,e=new FileReader;e.onload=function(e){var o,t,n,a,e=p.default.read(e.target.result,{type:"binary"}),e=p.default.utils.sheet_to_csv(e.Sheets.Sheet1),e=(e=(e=e).split("\n"),o=[],t=[],e.length&&(r=e.slice(1),e[0].split(",").map(c),r.forEach(function(e){var n;e&&(n={},e.split(",").forEach(function(e,t){o[t]&&(n[o[t]]=c(e))}),t.push(n))})),{fields:o,rows:t}),r=e.rows,e=(n=e.fields,a=[],i.forEach(function(e){e=e.property;e&&a.push(e)}),a.every(function(e){return n.includes(e)}));e?(l.createData(r).then(function(e){"append"===s.mode?l.insertAt(e,-1):l.reloadData(e)}),!1!==s.message&&m.modal.message({message:d.default.template(m.t("vxe.table.impSuccess"),[r.length]),status:"success"})):!1!==s.message&&m.modal.message({message:m.t("vxe.error.impFields"),status:"error"}),u&&(u(e),l._importResolve=null)},e.readAsBinaryString(t)}function a(e){if("xlsx"===e.options.type)return o(e),!1}function r(e){if("xlsx"===e.options.type)return n(e),!1}Object.defineProperty(e,"__esModule",{value:!0}),e.default=e.VXETablePluginExportXLSX=void 0,d=t(d),p=t(p);var i={install:function(e){var t=e.interceptor;m=e,Object.assign(e.types,{xlsx:1}),t.mixin({"event.import":a,"event.export":r})}};e.VXETablePluginExportXLSX=i,"undefined"!=typeof window&&window.VXETable&&window.VXETable.use(i);e.default=i});
package/index.ts CHANGED
@@ -50,14 +50,13 @@ function toBuffer (wbout: any) {
50
50
 
51
51
  function exportXLSX (params: InterceptorExportParams) {
52
52
  const { $table, options, columns, datas } = params
53
- const { sheetName, type, isHeader, isFooter, original, message, footerFilterMethod } = options
53
+ const { sheetName, isHeader, isFooter, original, message, footerFilterMethod } = options
54
54
  const colHead: { [key: string]: any } = {}
55
55
  const footList: { [key: string]: any }[] = []
56
56
  // const rowList = datas
57
57
 
58
58
  if (isHeader) {
59
59
  columns.forEach((column) => {
60
- // colHead[column.id] = XEUtils.toString(original ? column.property : column.getTitle())
61
60
  colHead[column.id] = XEUtils.toString(original ? column.property : column.getTitle())
62
61
  })
63
62
  }
@@ -86,7 +85,7 @@ function exportXLSX (params: InterceptorExportParams) {
86
85
  const sheet = XLSX.utils.json_to_sheet((isHeader ? [colHead] : []).concat(rowList).concat(footList), { skipHeader: true })
87
86
  // 转换数据
88
87
  XLSX.utils.book_append_sheet(book, sheet, sheetName)
89
- const wbout = XLSX.write(book, { bookType: type, bookSST: false, type: 'binary' })
88
+ const wbout = XLSX.write(book, { bookType: 'xlsx', bookSST: false, type: 'binary' })
90
89
  const blob = new Blob([toBuffer(wbout)], { type: 'application/octet-stream' })
91
90
  // 保存导出
92
91
  downloadFile(blob, options)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vxe-table-plugin-export-xlsx-xhx",
3
- "version": "1.0.7",
3
+ "version": "1.0.9",
4
4
  "description": "基于 vxe-table 表格的增强插件,支持导出 xlsx 格式",
5
5
  "scripts": {
6
6
  "lib": "gulp build"
@@ -16,44 +16,44 @@
16
16
  "jsdelivr": "dist/index.min.js",
17
17
  "typings": "index.ts",
18
18
  "devDependencies": {
19
- "@babel/core": "7.4.4",
20
- "@babel/plugin-transform-runtime": "7.4.4",
21
- "@babel/preset-env": "7.4.4",
22
- "@babel/runtime": "7.4.4",
23
- "@typescript-eslint/eslint-plugin": "2.3.1",
24
- "@typescript-eslint/parser": "2.3.1",
25
- "del": "5.1.0",
26
- "eslint": "5.15.1",
27
- "eslint-config-prettier": "6.3.0",
28
- "eslint-config-standard": "12.0.0",
29
- "eslint-friendly-formatter": "4.0.1",
30
- "eslint-plugin-import": "2.16.0",
31
- "eslint-plugin-node": "8.0.1",
32
- "eslint-plugin-prettier": "3.1.1",
33
- "eslint-plugin-promise": "4.0.1",
34
- "eslint-plugin-standard": "4.0.0",
35
- "eslint-plugin-typescript": "0.14.0",
36
- "gulp": "4.0.2",
37
- "gulp-autoprefixer": "6.1.0",
38
- "gulp-babel": "8.0.0",
39
- "gulp-clean-css": "4.2.0",
40
- "gulp-concat": "2.6.1",
41
- "gulp-rename": "1.4.0",
42
- "gulp-replace": "1.0.0",
43
- "gulp-sass": "4.0.2",
44
- "gulp-sourcemaps": "2.6.5",
45
- "gulp-typescript": "5.0.1",
46
- "gulp-uglify": "3.0.2",
47
- "markdown-doctest": "0.9.1",
48
- "prettier": "1.18.2",
49
- "typescript": "3.8.3",
19
+ "@babel/core": "^7.4.4",
20
+ "@babel/plugin-transform-runtime": "^7.4.4",
21
+ "@babel/preset-env": "^7.4.4",
22
+ "@babel/runtime": "^7.4.4",
23
+ "@typescript-eslint/eslint-plugin": "^2.3.1",
24
+ "@typescript-eslint/parser": "^2.3.1",
25
+ "del": "^5.1.0",
26
+ "eslint": "^5.15.1",
27
+ "eslint-config-prettier": "^6.3.0",
28
+ "eslint-config-standard": "^12.0.0",
29
+ "eslint-friendly-formatter": "^4.0.1",
30
+ "eslint-plugin-import": "^2.16.0",
31
+ "eslint-plugin-node": "^8.0.1",
32
+ "eslint-plugin-prettier": "^3.1.1",
33
+ "eslint-plugin-promise": "^4.0.1",
34
+ "eslint-plugin-standard": "^4.0.0",
35
+ "eslint-plugin-typescript": "^0.14.0",
36
+ "gulp": "^4.0.2",
37
+ "gulp-autoprefixer": "^6.1.0",
38
+ "gulp-babel": "^8.0.0",
39
+ "gulp-clean-css": "^4.2.0",
40
+ "gulp-concat": "^2.6.1",
41
+ "gulp-rename": "^1.4.0",
42
+ "gulp-replace": "^1.0.0",
43
+ "gulp-sass": "^4.0.2",
44
+ "gulp-sourcemaps": "^2.6.5",
45
+ "gulp-typescript": "^5.0.1",
46
+ "gulp-uglify": "^3.0.2",
47
+ "markdown-doctest": "^0.9.1",
48
+ "prettier": "^1.18.2",
49
+ "typescript": "^3.8.3",
50
50
  "vue": "2.6.11",
51
51
  "vxe-table": "2.9.9",
52
52
  "xe-utils": "2.4.5",
53
- "xlsx": "0.15.6"
53
+ "xlsx": "^0.15.6"
54
54
  },
55
55
  "peerDependencies": {
56
- "vxe-table": ">=2.8.0",
56
+ "vxe-table": ">=2.9.0",
57
57
  "xe-utils": ">=2.4.0",
58
58
  "xlsx": ">=0.15.0"
59
59
  },