@kepler.gl/components 3.1.8 → 3.1.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/dist/common/image-preview.d.ts +3 -3
  2. package/dist/common/image-preview.js +17 -13
  3. package/dist/common/link-renderer.d.ts +6 -2
  4. package/dist/common/link-renderer.js +1 -1
  5. package/dist/common/loading-spinner.js +2 -2
  6. package/dist/index.d.ts +1 -0
  7. package/dist/index.js +44 -1
  8. package/dist/kepler-gl.d.ts +28 -10
  9. package/dist/kepler-gl.js +19 -8
  10. package/dist/map/layer-hover-info.js +38 -15
  11. package/dist/map-container.d.ts +1 -0
  12. package/dist/map-container.js +7 -2
  13. package/dist/modal-container.d.ts +1 -1
  14. package/dist/modals/export-data-modal.js +2 -2
  15. package/dist/modals/export-image-modal.d.ts +1 -1
  16. package/dist/modals/export-image-modal.js +1 -1
  17. package/dist/modals/save-map-modal.d.ts +1 -2
  18. package/dist/modals/save-map-modal.js +1 -1
  19. package/dist/modals/tilesets-modals/common.d.ts +2 -1
  20. package/dist/modals/tilesets-modals/common.js +1 -1
  21. package/dist/modals/tilesets-modals/load-data-footer.d.ts +1 -1
  22. package/dist/modals/tilesets-modals/load-data-footer.js +11 -5
  23. package/dist/modals/tilesets-modals/load-tileset.js +21 -3
  24. package/dist/modals/tilesets-modals/tileset-raster-form.js +20 -14
  25. package/dist/modals/tilesets-modals/tileset-wms-form.d.ts +7 -0
  26. package/dist/modals/tilesets-modals/tileset-wms-form.js +163 -0
  27. package/dist/plot-container.d.ts +10 -7
  28. package/dist/plot-container.js +171 -170
  29. package/dist/side-panel/common/dataset-info.js +2 -2
  30. package/dist/side-panel/layer-manager.d.ts +1 -0
  31. package/dist/side-panel/layer-manager.js +25 -10
  32. package/dist/side-panel/layer-panel/color-scale-selector.js +16 -9
  33. package/dist/side-panel/layer-panel/custom-palette.d.ts +1 -6
  34. package/dist/side-panel/layer-panel/custom-palette.js +132 -88
  35. package/dist/side-panel/layer-panel/dataset-layer-section.js +21 -8
  36. package/dist/side-panel/layer-panel/layer-configurator.js +56 -14
  37. package/dist/side-panel/layer-panel/raster-tile-layer-configurator.js +10 -10
  38. package/package.json +17 -16
@@ -24,7 +24,8 @@ var _styledComponents2 = require("../common/styled-components");
24
24
  var _infoHelper = _interopRequireDefault(require("../common/info-helper"));
25
25
  var _constants = require("@kepler.gl/constants");
26
26
  var _utils = require("@kepler.gl/utils");
27
- var _excluded = ["rasterTile"];
27
+ var _excluded = ["rasterTile"],
28
+ _excluded2 = ["wms"];
28
29
  var _templateObject, _templateObject2;
29
30
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
30
31
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
@@ -100,6 +101,8 @@ function LayerManagerFactory(LayerList, DatasetLayerGroup, PanelViewListToggle,
100
101
  layerBlending = _ref3.layerBlending,
101
102
  overlayBlending = _ref3.overlayBlending,
102
103
  showAddDataModal = _ref3.showAddDataModal,
104
+ _ref3$showDeleteDatas = _ref3.showDeleteDataset,
105
+ showDeleteDataset = _ref3$showDeleteDatas === void 0 ? true : _ref3$showDeleteDatas,
103
106
  updateTableColor = _ref3.updateTableColor,
104
107
  showDatasetTable = _ref3.showDatasetTable,
105
108
  removeDataset = _ref3.removeDataset,
@@ -118,14 +121,26 @@ function LayerManagerFactory(LayerList, DatasetLayerGroup, PanelViewListToggle,
118
121
  });
119
122
  }, [togglePanelListView]);
120
123
  var isSortByDatasetMode = panelListView === _constants.PANEL_VIEW_TOGGLES.byDataset;
124
+
125
+ // temp patch to hide layers that are in development
121
126
  var enableRasterTileLayer = (0, _utils.getApplicationConfig)().enableRasterTileLayer;
127
+ var enableWMSLayer = (0, _utils.getApplicationConfig)().enableWMSLayer;
122
128
  var filteredLayerClasses = (0, _react.useMemo)(function () {
123
- if (enableRasterTileLayer) return layerClasses;
124
- /* eslint-disable @typescript-eslint/no-unused-vars */
125
- var rasterTile = layerClasses.rasterTile,
126
- restClasses = (0, _objectWithoutProperties2["default"])(layerClasses, _excluded);
127
- return restClasses;
128
- }, [enableRasterTileLayer, layerClasses]);
129
+ var filteredClasses = layerClasses;
130
+ if (!enableRasterTileLayer) {
131
+ var _filteredClasses = filteredClasses,
132
+ _rasterTile = _filteredClasses.rasterTile,
133
+ rest = (0, _objectWithoutProperties2["default"])(_filteredClasses, _excluded);
134
+ filteredClasses = rest;
135
+ }
136
+ if (!enableWMSLayer) {
137
+ var _filteredClasses2 = filteredClasses,
138
+ _wms = _filteredClasses2.wms,
139
+ _rest = (0, _objectWithoutProperties2["default"])(_filteredClasses2, _excluded2);
140
+ filteredClasses = _rest;
141
+ }
142
+ return filteredClasses;
143
+ }, [enableRasterTileLayer, enableWMSLayer, layerClasses]);
129
144
  return /*#__PURE__*/_react["default"].createElement("div", {
130
145
  className: "layer-manager"
131
146
  }, /*#__PURE__*/_react["default"].createElement(_styledComponents2.SidePanelSection, null, /*#__PURE__*/_react["default"].createElement(PanelViewListToggle, {
@@ -136,7 +151,7 @@ function LayerManagerFactory(LayerList, DatasetLayerGroup, PanelViewListToggle,
136
151
  showDatasetTable: showDatasetTable,
137
152
  updateTableColor: updateTableColor,
138
153
  removeDataset: removeDataset,
139
- showDeleteDataset: true,
154
+ showDeleteDataset: showDeleteDataset,
140
155
  showDatasetList: !isSortByDatasetMode,
141
156
  showAddDataModal: showAddDataModal
142
157
  }), /*#__PURE__*/_react["default"].createElement(_styledComponents2.SidePanelDivider, null), /*#__PURE__*/_react["default"].createElement(_styledComponents2.SidePanelSection, null, /*#__PURE__*/_react["default"].createElement(PanelTitle, {
@@ -158,7 +173,7 @@ function LayerManagerFactory(LayerList, DatasetLayerGroup, PanelViewListToggle,
158
173
  uiStateActions: uiStateActions,
159
174
  visStateActions: visStateActions,
160
175
  mapStateActions: mapStateActions,
161
- showDeleteDataset: true
176
+ showDeleteDataset: showDeleteDataset
162
177
  }) : /*#__PURE__*/_react["default"].createElement(LayerList, {
163
178
  layers: layers,
164
179
  datasets: datasets,
@@ -184,4 +199,4 @@ function LayerManagerFactory(LayerList, DatasetLayerGroup, PanelViewListToggle,
184
199
  return (0, _reactIntl.injectIntl)(LayerManager);
185
200
  }
186
201
  var _default = exports["default"] = LayerManagerFactory;
187
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfcmVhY3RJbnRsIiwiX3N0eWxlZENvbXBvbmVudHMiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX2xvY2FsaXphdGlvbiIsIl9sYXllckxpc3QiLCJfZGF0YXNldExheWVyR3JvdXAiLCJfcGFuZWxWaWV3TGlzdFRvZ2dsZSIsIl9wYW5lbFRpdGxlIiwiX2RhdGFzZXRTZWN0aW9uIiwiX2FkZExheWVyQnV0dG9uIiwiX2l0ZW1TZWxlY3RvciIsIl9zdHlsZWRDb21wb25lbnRzMiIsIl9pbmZvSGVscGVyIiwiX2NvbnN0YW50cyIsIl91dGlscyIsIl9leGNsdWRlZCIsIl90ZW1wbGF0ZU9iamVjdCIsIl90ZW1wbGF0ZU9iamVjdDIiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJvd25LZXlzIiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJMYXllckJsZW5kaW5nU2VsZWN0b3IiLCJleHBvcnRzIiwiUmVhY3QiLCJtZW1vIiwiX3JlZiIsImxheWVyQmxlbmRpbmciLCJ1cGRhdGVMYXllckJsZW5kaW5nIiwiaW50bCIsImNsYXNzTmFtZSIsImxhYmVsZWRMYXllckJsZW5kaW5ncyIsIkxBWUVSX0JMRU5ESU5HUyIsInJlZHVjZSIsImFjYyIsImN1cnJlbnQiLCJmb3JtYXRNZXNzYWdlIiwiaWQiLCJsYWJlbCIsIm9uQ2hhbmdlIiwidXNlQ2FsbGJhY2siLCJibGVuZGluZyIsImNyZWF0ZUVsZW1lbnQiLCJTaWRlUGFuZWxTZWN0aW9uIiwiUGFuZWxMYWJlbCIsIkZvcm1hdHRlZE1lc3NhZ2UiLCJzZWxlY3RlZEl0ZW1zIiwib3B0aW9ucyIsIm11bHRpU2VsZWN0Iiwic2VhcmNoYWJsZSIsImRpc3BsYXlOYW1lIiwiSW5mb0hlbHBlcldyYXBwZXIiLCJzdHlsZWQiLCJkaXYiLCJfdGFnZ2VkVGVtcGxhdGVMaXRlcmFsMiIsIk92ZXJsYXlCbGVuZGluZ1NlbGVjdG9yVGl0bGVSb3ciLCJPdmVybGF5QmxlbmRpbmdTZWxlY3RvciIsIl9yZWYyIiwib3ZlcmxheUJsZW5kaW5nIiwidXBkYXRlT3ZlcmxheUJsZW5kaW5nIiwiaW5mb0hlbHBlciIsImxhYmVsZWRPdmVybGF5QmxlbmRpbmdzIiwiT1ZFUkxBWV9CTEVORElOR1MiLCJMYXllck1hbmFnZXJGYWN0b3J5IiwiZGVwcyIsIkxheWVyTGlzdEZhY3RvcnkiLCJEYXRhc2V0TGF5ZXJHcm91cEZhY3RvcnkiLCJQYW5lbFZpZXdMaXN0VG9nZ2xlRmFjdG9yeSIsIlBhbmVsVGl0bGVGYWN0b3J5IiwiRGF0YXNldFNlY3Rpb25GYWN0b3J5IiwiQWRkTGF5ZXJCdXR0b25GYWN0b3J5IiwiSW5mb0hlbHBlckZhY3RvcnkiLCJMYXllckxpc3QiLCJEYXRhc2V0TGF5ZXJHcm91cCIsIlBhbmVsVmlld0xpc3RUb2dnbGUiLCJQYW5lbFRpdGxlIiwiRGF0YXNldFNlY3Rpb24iLCJBZGRMYXllckJ1dHRvbiIsIkluZm9IZWxwZXIiLCJMYXllck1hbmFnZXIiLCJfcmVmMyIsImxheWVycyIsImRhdGFzZXRzIiwibGF5ZXJPcmRlciIsInBhbmVsTGlzdFZpZXciLCJwYW5lbE1ldGFkYXRhIiwibGF5ZXJDbGFzc2VzIiwic2hvd0FkZERhdGFNb2RhbCIsInVwZGF0ZVRhYmxlQ29sb3IiLCJzaG93RGF0YXNldFRhYmxlIiwicmVtb3ZlRGF0YXNldCIsInVpU3RhdGVBY3Rpb25zIiwidmlzU3RhdGVBY3Rpb25zIiwibWFwU3RhdGVBY3Rpb25zIiwiYWRkTGF5ZXIiLCJ0b2dnbGVQYW5lbExpc3RWaWV3Iiwib25BZGRMYXllciIsImRhdGFzZXQiLCJ1bmRlZmluZWQiLCJvblRvZ2dsZVBhbmVsTGlzdFZpZXciLCJsaXN0VmlldyIsInBhbmVsSWQiLCJpc1NvcnRCeURhdGFzZXRNb2RlIiwiUEFORUxfVklFV19UT0dHTEVTIiwiYnlEYXRhc2V0IiwiZW5hYmxlUmFzdGVyVGlsZUxheWVyIiwiZ2V0QXBwbGljYXRpb25Db25maWciLCJmaWx0ZXJlZExheWVyQ2xhc3NlcyIsInVzZU1lbW8iLCJyYXN0ZXJUaWxlIiwicmVzdENsYXNzZXMiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMyIiwibW9kZSIsInNob3dEZWxldGVEYXRhc2V0Iiwic2hvd0RhdGFzZXRMaXN0IiwiU2lkZVBhbmVsRGl2aWRlciIsInRpdGxlIiwib25BZGQiLCJkZXNjcmlwdGlvbiIsImluamVjdEludGwiLCJfZGVmYXVsdCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zaWRlLXBhbmVsL2xheWVyLW1hbmFnZXIudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBSZWFjdCwge3VzZUNhbGxiYWNrLCB1c2VNZW1vfSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB7aW5qZWN0SW50bCwgV3JhcHBlZENvbXBvbmVudFByb3BzfSBmcm9tICdyZWFjdC1pbnRsJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IHtGb3JtYXR0ZWRNZXNzYWdlfSBmcm9tICdAa2VwbGVyLmdsL2xvY2FsaXphdGlvbic7XG5cbmltcG9ydCBMYXllckxpc3RGYWN0b3J5IGZyb20gJy4vbGF5ZXItcGFuZWwvbGF5ZXItbGlzdCc7XG5pbXBvcnQgRGF0YXNldExheWVyR3JvdXBGYWN0b3J5IGZyb20gJy4vbGF5ZXItcGFuZWwvZGF0YXNldC1sYXllci1ncm91cCc7XG5pbXBvcnQgUGFuZWxWaWV3TGlzdFRvZ2dsZUZhY3RvcnkgZnJvbSAnLi9wYW5lbC12aWV3LWxpc3QtdG9nZ2xlJztcbmltcG9ydCBQYW5lbFRpdGxlRmFjdG9yeSBmcm9tICcuL3BhbmVsLXRpdGxlJztcbmltcG9ydCBEYXRhc2V0U2VjdGlvbkZhY3RvcnkgZnJvbSAnLi9sYXllci1wYW5lbC9kYXRhc2V0LXNlY3Rpb24nO1xuaW1wb3J0IEFkZExheWVyQnV0dG9uRmFjdG9yeSBmcm9tICcuL2xheWVyLXBhbmVsL2FkZC1sYXllci1idXR0b24nO1xuXG5pbXBvcnQgSXRlbVNlbGVjdG9yIGZyb20gJy4uL2NvbW1vbi9pdGVtLXNlbGVjdG9yL2l0ZW0tc2VsZWN0b3InO1xuaW1wb3J0IHtQYW5lbExhYmVsLCBTaWRlUGFuZWxEaXZpZGVyLCBTaWRlUGFuZWxTZWN0aW9ufSBmcm9tICcuLi9jb21tb24vc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IEluZm9IZWxwZXJGYWN0b3J5IGZyb20gJy4uL2NvbW1vbi9pbmZvLWhlbHBlcic7XG5cbmltcG9ydCB7TEFZRVJfQkxFTkRJTkdTLCBPVkVSTEFZX0JMRU5ESU5HUywgUEFORUxfVklFV19UT0dHTEVTfSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5pbXBvcnQge0xheWVyLCBMYXllckNsYXNzZXNUeXBlfSBmcm9tICdAa2VwbGVyLmdsL2xheWVycyc7XG5pbXBvcnQge1VJU3RhdGVBY3Rpb25zLCBWaXNTdGF0ZUFjdGlvbnMsIE1hcFN0YXRlQWN0aW9ucywgQWN0aW9uSGFuZGxlcn0gZnJvbSAnQGtlcGxlci5nbC9hY3Rpb25zJztcbmltcG9ydCB7U2lkZVBhbmVsSXRlbX0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHtQYW5lbExpc3RWaWV3fSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcbmltcG9ydCB7RGF0YXNldHN9IGZyb20gJ0BrZXBsZXIuZ2wvdGFibGUnO1xuaW1wb3J0IHtnZXRBcHBsaWNhdGlvbkNvbmZpZ30gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5cbnR5cGUgTGF5ZXJCbGVuZGluZ1NlbGVjdG9yUHJvcHMgPSB7XG4gIGxheWVyQmxlbmRpbmc6IHN0cmluZztcbiAgdXBkYXRlTGF5ZXJCbGVuZGluZzogQWN0aW9uSGFuZGxlcjx0eXBlb2YgVmlzU3RhdGVBY3Rpb25zLnVwZGF0ZUxheWVyQmxlbmRpbmc+O1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG59ICYgV3JhcHBlZENvbXBvbmVudFByb3BzO1xuXG50eXBlIE92ZXJsYXlCbGVuZGluZ1NlbGVjdG9yUHJvcHMgPSB7XG4gIG92ZXJsYXlCbGVuZGluZzogc3RyaW5nO1xuICB1cGRhdGVPdmVybGF5QmxlbmRpbmc6IEFjdGlvbkhhbmRsZXI8dHlwZW9mIFZpc1N0YXRlQWN0aW9ucy51cGRhdGVPdmVybGF5QmxlbmRpbmc+O1xuICBpbmZvSGVscGVyOiBSZWFjdC5SZWFjdE5vZGU7XG59ICYgV3JhcHBlZENvbXBvbmVudFByb3BzO1xuXG50eXBlIExheWVyTWFuYWdlclByb3BzID0ge1xuICBkYXRhc2V0czogRGF0YXNldHM7XG4gIGxheWVyczogTGF5ZXJbXTtcbiAgbGF5ZXJPcmRlcjogc3RyaW5nW107XG4gIGxheWVyQ2xhc3NlczogTGF5ZXJDbGFzc2VzVHlwZTtcbiAgbGF5ZXJCbGVuZGluZzogc3RyaW5nO1xuICBvdmVybGF5QmxlbmRpbmc6IHN0cmluZztcbiAgdWlTdGF0ZUFjdGlvbnM6IHR5cGVvZiBVSVN0YXRlQWN0aW9ucztcbiAgdmlzU3RhdGVBY3Rpb25zOiB0eXBlb2YgVmlzU3RhdGVBY3Rpb25zO1xuICBtYXBTdGF0ZUFjdGlvbnM6IHR5cGVvZiBNYXBTdGF0ZUFjdGlvbnM7XG4gIHNob3dBZGREYXRhTW9kYWw6ICgpID0+IHZvaWQ7XG4gIHJlbW92ZURhdGFzZXQ6IEFjdGlvbkhhbmRsZXI8dHlwZW9mIFVJU3RhdGVBY3Rpb25zLm9wZW5EZWxldGVNb2RhbD47XG4gIHNob3dEYXRhc2V0VGFibGU6IEFjdGlvbkhhbmRsZXI8dHlwZW9mIFZpc1N0YXRlQWN0aW9ucy5zaG93RGF0YXNldFRhYmxlPjtcbiAgdXBkYXRlVGFibGVDb2xvcjogQWN0aW9uSGFuZGxlcjx0eXBlb2YgVmlzU3RhdGVBY3Rpb25zLnVwZGF0ZVRhYmxlQ29sb3I+O1xuICBwYW5lbExpc3RWaWV3OiBQYW5lbExpc3RWaWV3O1xuICBwYW5lbE1ldGFkYXRhOiBTaWRlUGFuZWxJdGVtO1xufSAmIFdyYXBwZWRDb21wb25lbnRQcm9wcztcblxuZXhwb3J0IGNvbnN0IExheWVyQmxlbmRpbmdTZWxlY3RvciA9IFJlYWN0Lm1lbW8oXG4gICh7bGF5ZXJCbGVuZGluZywgdXBkYXRlTGF5ZXJCbGVuZGluZywgaW50bCwgY2xhc3NOYW1lfTogTGF5ZXJCbGVuZGluZ1NlbGVjdG9yUHJvcHMpID0+IHtcbiAgICBjb25zdCBsYWJlbGVkTGF5ZXJCbGVuZGluZ3MgPSBPYmplY3Qua2V5cyhMQVlFUl9CTEVORElOR1MpLnJlZHVjZShcbiAgICAgIChhY2MsIGN1cnJlbnQpID0+ICh7XG4gICAgICAgIC4uLmFjYyxcbiAgICAgICAgW2ludGwuZm9ybWF0TWVzc2FnZSh7aWQ6IExBWUVSX0JMRU5ESU5HU1tjdXJyZW50XS5sYWJlbH0pXTogY3VycmVudFxuICAgICAgfSksXG4gICAgICB7fVxuICAgICk7XG5cbiAgICBjb25zdCBvbkNoYW5nZSA9IHVzZUNhbGxiYWNrKFxuICAgICAgYmxlbmRpbmcgPT4gdXBkYXRlTGF5ZXJCbGVuZGluZyhsYWJlbGVkTGF5ZXJCbGVuZGluZ3NbYmxlbmRpbmddKSxcbiAgICAgIFt1cGRhdGVMYXllckJsZW5kaW5nLCBsYWJlbGVkTGF5ZXJCbGVuZGluZ3NdXG4gICAgKTtcblxuICAgIHJldHVybiAoXG4gICAgICA8U2lkZVBhbmVsU2VjdGlvbiBjbGFzc05hbWU9e2NsYXNzTmFtZX0+XG4gICAgICAgIDxQYW5lbExhYmVsPlxuICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIGlkPVwibGF5ZXJCbGVuZGluZy50aXRsZVwiIC8+XG4gICAgICAgIDwvUGFuZWxMYWJlbD5cbiAgICAgICAgPEl0ZW1TZWxlY3RvclxuICAgICAgICAgIHNlbGVjdGVkSXRlbXM9e2ludGwuZm9ybWF0TWVzc2FnZSh7aWQ6IExBWUVSX0JMRU5ESU5HU1tsYXllckJsZW5kaW5nXS5sYWJlbH0pfVxuICAgICAgICAgIG9wdGlvbnM9e09iamVjdC5rZXlzKGxhYmVsZWRMYXllckJsZW5kaW5ncyl9XG4gICAgICAgICAgbXVsdGlTZWxlY3Q9e2ZhbHNlfVxuICAgICAgICAgIHNlYXJjaGFibGU9e2ZhbHNlfVxuICAgICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZX1cbiAgICAgICAgLz5cbiAgICAgIDwvU2lkZVBhbmVsU2VjdGlvbj5cbiAgICApO1xuICB9XG4pO1xuTGF5ZXJCbGVuZGluZ1NlbGVjdG9yLmRpc3BsYXlOYW1lID0gJ0xheWVyQmxlbmRpbmdTZWxlY3Rvcic7XG5cbmNvbnN0IEluZm9IZWxwZXJXcmFwcGVyID0gc3R5bGVkLmRpdmBcbiAgZmxvYXQ6IHJpZ2h0O1xuYDtcblxuY29uc3QgT3ZlcmxheUJsZW5kaW5nU2VsZWN0b3JUaXRsZVJvdyA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5gO1xuXG5jb25zdCBPdmVybGF5QmxlbmRpbmdTZWxlY3RvciA9IFJlYWN0Lm1lbW8oXG4gICh7b3ZlcmxheUJsZW5kaW5nLCB1cGRhdGVPdmVybGF5QmxlbmRpbmcsIGludGwsIGluZm9IZWxwZXJ9OiBPdmVybGF5QmxlbmRpbmdTZWxlY3RvclByb3BzKSA9PiB7XG4gICAgY29uc3QgbGFiZWxlZE92ZXJsYXlCbGVuZGluZ3MgPSBPYmplY3Qua2V5cyhPVkVSTEFZX0JMRU5ESU5HUykucmVkdWNlKFxuICAgICAgKGFjYywgY3VycmVudCkgPT4gKHtcbiAgICAgICAgLi4uYWNjLFxuICAgICAgICBbaW50bC5mb3JtYXRNZXNzYWdlKHtpZDogT1ZFUkxBWV9CTEVORElOR1NbY3VycmVudF0ubGFiZWx9KV06IGN1cnJlbnRcbiAgICAgIH0pLFxuICAgICAge31cbiAgICApO1xuXG4gICAgY29uc3Qgb25DaGFuZ2UgPSB1c2VDYWxsYmFjayhcbiAgICAgIGJsZW5kaW5nID0+IHVwZGF0ZU92ZXJsYXlCbGVuZGluZyhsYWJlbGVkT3ZlcmxheUJsZW5kaW5nc1tibGVuZGluZ10pLFxuICAgICAgW3VwZGF0ZU92ZXJsYXlCbGVuZGluZywgbGFiZWxlZE92ZXJsYXlCbGVuZGluZ3NdXG4gICAgKTtcblxuICAgIHJldHVybiAoXG4gICAgICA8U2lkZVBhbmVsU2VjdGlvbj5cbiAgICAgICAgPE92ZXJsYXlCbGVuZGluZ1NlbGVjdG9yVGl0bGVSb3c+XG4gICAgICAgICAgPFBhbmVsTGFiZWw+XG4gICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cIm92ZXJsYXlCbGVuZGluZy50aXRsZVwiIC8+XG4gICAgICAgICAgPC9QYW5lbExhYmVsPlxuICAgICAgICAgIDxJbmZvSGVscGVyV3JhcHBlcj57aW5mb0hlbHBlcn08L0luZm9IZWxwZXJXcmFwcGVyPlxuICAgICAgICA8L092ZXJsYXlCbGVuZGluZ1NlbGVjdG9yVGl0bGVSb3c+XG4gICAgICAgIDxJdGVtU2VsZWN0b3JcbiAgICAgICAgICBzZWxlY3RlZEl0ZW1zPXtpbnRsLmZvcm1hdE1lc3NhZ2Uoe2lkOiBPVkVSTEFZX0JMRU5ESU5HU1tvdmVybGF5QmxlbmRpbmddLmxhYmVsfSl9XG4gICAgICAgICAgb3B0aW9ucz17T2JqZWN0LmtleXMobGFiZWxlZE92ZXJsYXlCbGVuZGluZ3MpfVxuICAgICAgICAgIG11bHRpU2VsZWN0PXtmYWxzZX1cbiAgICAgICAgICBzZWFyY2hhYmxlPXtmYWxzZX1cbiAgICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2V9XG4gICAgICAgIC8+XG4gICAgICA8L1NpZGVQYW5lbFNlY3Rpb24+XG4gICAgKTtcbiAgfVxuKTtcbk92ZXJsYXlCbGVuZGluZ1NlbGVjdG9yLmRpc3BsYXlOYW1lID0gJ092ZXJsYXlCbGVuZGluZ1NlbGVjdG9yJztcblxuTGF5ZXJNYW5hZ2VyRmFjdG9yeS5kZXBzID0gW1xuICBMYXllckxpc3RGYWN0b3J5LFxuICBEYXRhc2V0TGF5ZXJHcm91cEZhY3RvcnksXG4gIFBhbmVsVmlld0xpc3RUb2dnbGVGYWN0b3J5LFxuICBQYW5lbFRpdGxlRmFjdG9yeSxcbiAgRGF0YXNldFNlY3Rpb25GYWN0b3J5LFxuICBBZGRMYXllckJ1dHRvbkZhY3RvcnksXG4gIEluZm9IZWxwZXJGYWN0b3J5XG5dO1xuXG5mdW5jdGlvbiBMYXllck1hbmFnZXJGYWN0b3J5KFxuICBMYXllckxpc3Q6IFJldHVyblR5cGU8dHlwZW9mIExheWVyTGlzdEZhY3Rvcnk+LFxuICBEYXRhc2V0TGF5ZXJHcm91cDogUmV0dXJuVHlwZTx0eXBlb2YgRGF0YXNldExheWVyR3JvdXBGYWN0b3J5PixcbiAgUGFuZWxWaWV3TGlzdFRvZ2dsZTogUmV0dXJuVHlwZTx0eXBlb2YgUGFuZWxWaWV3TGlzdFRvZ2dsZUZhY3Rvcnk+LFxuICBQYW5lbFRpdGxlOiBSZXR1cm5UeXBlPHR5cGVvZiBQYW5lbFRpdGxlRmFjdG9yeT4sXG4gIERhdGFzZXRTZWN0aW9uOiBSZXR1cm5UeXBlPHR5cGVvZiBEYXRhc2V0U2VjdGlvbkZhY3Rvcnk+LFxuICBBZGRMYXllckJ1dHRvbjogUmV0dXJuVHlwZTx0eXBlb2YgQWRkTGF5ZXJCdXR0b25GYWN0b3J5PixcbiAgSW5mb0hlbHBlcjogUmV0dXJuVHlwZTx0eXBlb2YgSW5mb0hlbHBlckZhY3Rvcnk+XG4pIHtcbiAgY29uc3QgTGF5ZXJNYW5hZ2VyOiBSZWFjdC5GQzxMYXllck1hbmFnZXJQcm9wcz4gPSAoe1xuICAgIGxheWVycyxcbiAgICBkYXRhc2V0cyxcbiAgICBpbnRsLFxuICAgIGxheWVyT3JkZXIsXG4gICAgcGFuZWxMaXN0VmlldyxcbiAgICBwYW5lbE1ldGFkYXRhLFxuICAgIGxheWVyQ2xhc3NlcyxcbiAgICBsYXllckJsZW5kaW5nLFxuICAgIG92ZXJsYXlCbGVuZGluZyxcbiAgICBzaG93QWRkRGF0YU1vZGFsLFxuICAgIHVwZGF0ZVRhYmxlQ29sb3IsXG4gICAgc2hvd0RhdGFzZXRUYWJsZSxcbiAgICByZW1vdmVEYXRhc2V0LFxuICAgIHVpU3RhdGVBY3Rpb25zLFxuICAgIHZpc1N0YXRlQWN0aW9ucyxcbiAgICBtYXBTdGF0ZUFjdGlvbnNcbiAgfSkgPT4ge1xuICAgIGNvbnN0IHthZGRMYXllcn0gPSB2aXNTdGF0ZUFjdGlvbnM7XG4gICAgY29uc3Qge3RvZ2dsZVBhbmVsTGlzdFZpZXd9ID0gdWlTdGF0ZUFjdGlvbnM7XG4gICAgY29uc3Qgb25BZGRMYXllciA9IHVzZUNhbGxiYWNrKFxuICAgICAgKGRhdGFzZXQ6IHN0cmluZykgPT4ge1xuICAgICAgICBhZGRMYXllcih1bmRlZmluZWQsIGRhdGFzZXQpO1xuICAgICAgfSxcbiAgICAgIFthZGRMYXllcl1cbiAgICApO1xuXG4gICAgY29uc3Qgb25Ub2dnbGVQYW5lbExpc3RWaWV3ID0gdXNlQ2FsbGJhY2soXG4gICAgICAobGlzdFZpZXc6IHN0cmluZykgPT4ge1xuICAgICAgICB0b2dnbGVQYW5lbExpc3RWaWV3KHtwYW5lbElkOiAnbGF5ZXInLCBsaXN0Vmlld30pO1xuICAgICAgfSxcbiAgICAgIFt0b2dnbGVQYW5lbExpc3RWaWV3XVxuICAgICk7XG5cbiAgICBjb25zdCBpc1NvcnRCeURhdGFzZXRNb2RlID0gcGFuZWxMaXN0VmlldyA9PT0gUEFORUxfVklFV19UT0dHTEVTLmJ5RGF0YXNldDtcblxuICAgIGNvbnN0IGVuYWJsZVJhc3RlclRpbGVMYXllciA9IGdldEFwcGxpY2F0aW9uQ29uZmlnKCkuZW5hYmxlUmFzdGVyVGlsZUxheWVyO1xuICAgIGNvbnN0IGZpbHRlcmVkTGF5ZXJDbGFzc2VzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICBpZiAoZW5hYmxlUmFzdGVyVGlsZUxheWVyKSByZXR1cm4gbGF5ZXJDbGFzc2VzO1xuICAgICAgLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzICovXG4gICAgICBjb25zdCB7cmFzdGVyVGlsZSwgLi4ucmVzdENsYXNzZXN9ID0gbGF5ZXJDbGFzc2VzO1xuICAgICAgcmV0dXJuIHJlc3RDbGFzc2VzIGFzIExheWVyQ2xhc3Nlc1R5cGU7XG4gICAgfSwgW2VuYWJsZVJhc3RlclRpbGVMYXllciwgbGF5ZXJDbGFzc2VzXSk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJsYXllci1tYW5hZ2VyXCI+XG4gICAgICAgIDxTaWRlUGFuZWxTZWN0aW9uPlxuICAgICAgICAgIDxQYW5lbFZpZXdMaXN0VG9nZ2xlIHRvZ2dsZVBhbmVsTGlzdFZpZXc9e29uVG9nZ2xlUGFuZWxMaXN0Vmlld30gbW9kZT17cGFuZWxMaXN0Vmlld30gLz5cbiAgICAgICAgPC9TaWRlUGFuZWxTZWN0aW9uPlxuICAgICAgICA8RGF0YXNldFNlY3Rpb25cbiAgICAgICAgICBkYXRhc2V0cz17ZGF0YXNldHN9XG4gICAgICAgICAgc2hvd0RhdGFzZXRUYWJsZT17c2hvd0RhdGFzZXRUYWJsZX1cbiAgICAgICAgICB1cGRhdGVUYWJsZUNvbG9yPXt1cGRhdGVUYWJsZUNvbG9yfVxuICAgICAgICAgIHJlbW92ZURhdGFzZXQ9e3JlbW92ZURhdGFzZXR9XG4gICAgICAgICAgc2hvd0RlbGV0ZURhdGFzZXRcbiAgICAgICAgICBzaG93RGF0YXNldExpc3Q9eyFpc1NvcnRCeURhdGFzZXRNb2RlfVxuICAgICAgICAgIHNob3dBZGREYXRhTW9kYWw9e3Nob3dBZGREYXRhTW9kYWx9XG4gICAgICAgIC8+XG4gICAgICAgIDxTaWRlUGFuZWxEaXZpZGVyIC8+XG4gICAgICAgIDxTaWRlUGFuZWxTZWN0aW9uPlxuICAgICAgICAgIDxQYW5lbFRpdGxlXG4gICAgICAgICAgICBjbGFzc05hbWU9XCJsYXllci1tYW5hZ2VyLXRpdGxlXCJcbiAgICAgICAgICAgIHRpdGxlPXtpbnRsLmZvcm1hdE1lc3NhZ2Uoe2lkOiBwYW5lbE1ldGFkYXRhLmxhYmVsfSl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPEFkZExheWVyQnV0dG9uIGRhdGFzZXRzPXtkYXRhc2V0c30gb25BZGQ9e29uQWRkTGF5ZXJ9IC8+XG4gICAgICAgICAgPC9QYW5lbFRpdGxlPlxuICAgICAgICA8L1NpZGVQYW5lbFNlY3Rpb24+XG4gICAgICAgIDxTaWRlUGFuZWxTZWN0aW9uPlxuICAgICAgICAgIHtpc1NvcnRCeURhdGFzZXRNb2RlID8gKFxuICAgICAgICAgICAgPERhdGFzZXRMYXllckdyb3VwXG4gICAgICAgICAgICAgIGRhdGFzZXRzPXtkYXRhc2V0c31cbiAgICAgICAgICAgICAgc2hvd0RhdGFzZXRUYWJsZT17c2hvd0RhdGFzZXRUYWJsZX1cbiAgICAgICAgICAgICAgbGF5ZXJzPXtsYXllcnN9XG4gICAgICAgICAgICAgIHVwZGF0ZVRhYmxlQ29sb3I9e3VwZGF0ZVRhYmxlQ29sb3J9XG4gICAgICAgICAgICAgIHJlbW92ZURhdGFzZXQ9e3JlbW92ZURhdGFzZXR9XG4gICAgICAgICAgICAgIGxheWVyT3JkZXI9e2xheWVyT3JkZXJ9XG4gICAgICAgICAgICAgIGxheWVyQ2xhc3Nlcz17ZmlsdGVyZWRMYXllckNsYXNzZXN9XG4gICAgICAgICAgICAgIHVpU3RhdGVBY3Rpb25zPXt1aVN0YXRlQWN0aW9uc31cbiAgICAgICAgICAgICAgdmlzU3RhdGVBY3Rpb25zPXt2aXNTdGF0ZUFjdGlvbnN9XG4gICAgICAgICAgICAgIG1hcFN0YXRlQWN0aW9ucz17bWFwU3RhdGVBY3Rpb25zfVxuICAgICAgICAgICAgICBzaG93RGVsZXRlRGF0YXNldFxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApIDogKFxuICAgICAgICAgICAgPExheWVyTGlzdFxuICAgICAgICAgICAgICBsYXllcnM9e2xheWVyc31cbiAgICAgICAgICAgICAgZGF0YXNldHM9e2RhdGFzZXRzfVxuICAgICAgICAgICAgICBsYXllck9yZGVyPXtsYXllck9yZGVyfVxuICAgICAgICAgICAgICB1aVN0YXRlQWN0aW9ucz17dWlTdGF0ZUFjdGlvbnN9XG4gICAgICAgICAgICAgIHZpc1N0YXRlQWN0aW9ucz17dmlzU3RhdGVBY3Rpb25zfVxuICAgICAgICAgICAgICBtYXBTdGF0ZUFjdGlvbnM9e21hcFN0YXRlQWN0aW9uc31cbiAgICAgICAgICAgICAgbGF5ZXJDbGFzc2VzPXtmaWx0ZXJlZExheWVyQ2xhc3Nlc31cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9TaWRlUGFuZWxTZWN0aW9uPlxuICAgICAgICA8TGF5ZXJCbGVuZGluZ1NlbGVjdG9yXG4gICAgICAgICAgbGF5ZXJCbGVuZGluZz17bGF5ZXJCbGVuZGluZ31cbiAgICAgICAgICB1cGRhdGVMYXllckJsZW5kaW5nPXt2aXNTdGF0ZUFjdGlvbnMudXBkYXRlTGF5ZXJCbGVuZGluZ31cbiAgICAgICAgICBpbnRsPXtpbnRsfVxuICAgICAgICAvPlxuICAgICAgICA8T3ZlcmxheUJsZW5kaW5nU2VsZWN0b3JcbiAgICAgICAgICBvdmVybGF5QmxlbmRpbmc9e292ZXJsYXlCbGVuZGluZ31cbiAgICAgICAgICB1cGRhdGVPdmVybGF5QmxlbmRpbmc9e3Zpc1N0YXRlQWN0aW9ucy51cGRhdGVPdmVybGF5QmxlbmRpbmd9XG4gICAgICAgICAgaW50bD17aW50bH1cbiAgICAgICAgICBpbmZvSGVscGVyPXtcbiAgICAgICAgICAgIDxJbmZvSGVscGVyXG4gICAgICAgICAgICAgIGlkPXtgb3ZlcmxheUJsZW5kaW5nLWRlc2NyaXB0aW9uYH1cbiAgICAgICAgICAgICAgZGVzY3JpcHRpb249eydvdmVybGF5QmxlbmRpbmcuZGVzY3JpcHRpb24nfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICB9XG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9O1xuXG4gIHJldHVybiBpbmplY3RJbnRsKExheWVyTWFuYWdlcik7XG59XG5cbmV4cG9ydCBkZWZhdWx0IExheWVyTWFuYWdlckZhY3Rvcnk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBR0EsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUMsVUFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsaUJBQUEsR0FBQUMsc0JBQUEsQ0FBQUgsT0FBQTtBQUNBLElBQUFJLGFBQUEsR0FBQUosT0FBQTtBQUVBLElBQUFLLFVBQUEsR0FBQUYsc0JBQUEsQ0FBQUgsT0FBQTtBQUNBLElBQUFNLGtCQUFBLEdBQUFILHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBTyxvQkFBQSxHQUFBSixzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQVEsV0FBQSxHQUFBTCxzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQVMsZUFBQSxHQUFBTixzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQVUsZUFBQSxHQUFBUCxzQkFBQSxDQUFBSCxPQUFBO0FBRUEsSUFBQVcsYUFBQSxHQUFBUixzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQVksa0JBQUEsR0FBQVosT0FBQTtBQUNBLElBQUFhLFdBQUEsR0FBQVYsc0JBQUEsQ0FBQUgsT0FBQTtBQUVBLElBQUFjLFVBQUEsR0FBQWQsT0FBQTtBQU1BLElBQUFlLE1BQUEsR0FBQWYsT0FBQTtBQUFzRCxJQUFBZ0IsU0FBQTtBQUFBLElBQUFDLGVBQUEsRUFBQUMsZ0JBQUE7QUFBQSxTQUFBQyx5QkFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxtQkFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBRix3QkFBQSxZQUFBQSx5QkFBQUMsQ0FBQSxXQUFBQSxDQUFBLEdBQUFHLENBQUEsR0FBQUQsQ0FBQSxLQUFBRixDQUFBO0FBQUEsU0FBQXJCLHdCQUFBcUIsQ0FBQSxFQUFBRSxDQUFBLFNBQUFBLENBQUEsSUFBQUYsQ0FBQSxJQUFBQSxDQUFBLENBQUFJLFVBQUEsU0FBQUosQ0FBQSxlQUFBQSxDQUFBLGdCQUFBSyxPQUFBLENBQUFMLENBQUEsMEJBQUFBLENBQUEsc0JBQUFBLENBQUEsUUFBQUcsQ0FBQSxHQUFBSix3QkFBQSxDQUFBRyxDQUFBLE9BQUFDLENBQUEsSUFBQUEsQ0FBQSxDQUFBRyxHQUFBLENBQUFOLENBQUEsVUFBQUcsQ0FBQSxDQUFBSSxHQUFBLENBQUFQLENBQUEsT0FBQVEsQ0FBQSxLQUFBQyxTQUFBLFVBQUFDLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxjQUFBLElBQUFELE1BQUEsQ0FBQUUsd0JBQUEsV0FBQUMsQ0FBQSxJQUFBZCxDQUFBLG9CQUFBYyxDQUFBLE9BQUFDLGNBQUEsQ0FBQUMsSUFBQSxDQUFBaEIsQ0FBQSxFQUFBYyxDQUFBLFNBQUFHLENBQUEsR0FBQVAsQ0FBQSxHQUFBQyxNQUFBLENBQUFFLHdCQUFBLENBQUFiLENBQUEsRUFBQWMsQ0FBQSxVQUFBRyxDQUFBLEtBQUFBLENBQUEsQ0FBQVYsR0FBQSxJQUFBVSxDQUFBLENBQUFDLEdBQUEsSUFBQVAsTUFBQSxDQUFBQyxjQUFBLENBQUFKLENBQUEsRUFBQU0sQ0FBQSxFQUFBRyxDQUFBLElBQUFULENBQUEsQ0FBQU0sQ0FBQSxJQUFBZCxDQUFBLENBQUFjLENBQUEsWUFBQU4sQ0FBQSxjQUFBUixDQUFBLEVBQUFHLENBQUEsSUFBQUEsQ0FBQSxDQUFBZSxHQUFBLENBQUFsQixDQUFBLEVBQUFRLENBQUEsR0FBQUEsQ0FBQTtBQUFBLFNBQUFXLFFBQUFuQixDQUFBLEVBQUFFLENBQUEsUUFBQUMsQ0FBQSxHQUFBUSxNQUFBLENBQUFTLElBQUEsQ0FBQXBCLENBQUEsT0FBQVcsTUFBQSxDQUFBVSxxQkFBQSxRQUFBQyxDQUFBLEdBQUFYLE1BQUEsQ0FBQVUscUJBQUEsQ0FBQXJCLENBQUEsR0FBQUUsQ0FBQSxLQUFBb0IsQ0FBQSxHQUFBQSxDQUFBLENBQUFDLE1BQUEsV0FBQXJCLENBQUEsV0FBQVMsTUFBQSxDQUFBRSx3QkFBQSxDQUFBYixDQUFBLEVBQUFFLENBQUEsRUFBQXNCLFVBQUEsT0FBQXJCLENBQUEsQ0FBQXNCLElBQUEsQ0FBQUMsS0FBQSxDQUFBdkIsQ0FBQSxFQUFBbUIsQ0FBQSxZQUFBbkIsQ0FBQTtBQUFBLFNBQUF3QixjQUFBM0IsQ0FBQSxhQUFBRSxDQUFBLE1BQUFBLENBQUEsR0FBQTBCLFNBQUEsQ0FBQUMsTUFBQSxFQUFBM0IsQ0FBQSxVQUFBQyxDQUFBLFdBQUF5QixTQUFBLENBQUExQixDQUFBLElBQUEwQixTQUFBLENBQUExQixDQUFBLFFBQUFBLENBQUEsT0FBQWlCLE9BQUEsQ0FBQVIsTUFBQSxDQUFBUixDQUFBLE9BQUEyQixPQUFBLFdBQUE1QixDQUFBLFFBQUE2QixnQkFBQSxhQUFBL0IsQ0FBQSxFQUFBRSxDQUFBLEVBQUFDLENBQUEsQ0FBQUQsQ0FBQSxTQUFBUyxNQUFBLENBQUFxQix5QkFBQSxHQUFBckIsTUFBQSxDQUFBc0IsZ0JBQUEsQ0FBQWpDLENBQUEsRUFBQVcsTUFBQSxDQUFBcUIseUJBQUEsQ0FBQTdCLENBQUEsS0FBQWdCLE9BQUEsQ0FBQVIsTUFBQSxDQUFBUixDQUFBLEdBQUEyQixPQUFBLFdBQUE1QixDQUFBLElBQUFTLE1BQUEsQ0FBQUMsY0FBQSxDQUFBWixDQUFBLEVBQUFFLENBQUEsRUFBQVMsTUFBQSxDQUFBRSx3QkFBQSxDQUFBVixDQUFBLEVBQUFELENBQUEsaUJBQUFGLENBQUEsSUExQnREO0FBQ0E7QUF5RE8sSUFBTWtDLHFCQUFxQixHQUFBQyxPQUFBLENBQUFELHFCQUFBLGdCQUFHRSxpQkFBSyxDQUFDQyxJQUFJLENBQzdDLFVBQUFDLElBQUEsRUFBdUY7RUFBQSxJQUFyRkMsYUFBYSxHQUFBRCxJQUFBLENBQWJDLGFBQWE7SUFBRUMsbUJBQW1CLEdBQUFGLElBQUEsQ0FBbkJFLG1CQUFtQjtJQUFFQyxJQUFJLEdBQUFILElBQUEsQ0FBSkcsSUFBSTtJQUFFQyxTQUFTLEdBQUFKLElBQUEsQ0FBVEksU0FBUztFQUNuRCxJQUFNQyxxQkFBcUIsR0FBR2hDLE1BQU0sQ0FBQ1MsSUFBSSxDQUFDd0IsMEJBQWUsQ0FBQyxDQUFDQyxNQUFNLENBQy9ELFVBQUNDLEdBQUcsRUFBRUMsT0FBTztJQUFBLE9BQUFwQixhQUFBLENBQUFBLGFBQUEsS0FDUm1CLEdBQUcsV0FBQWYsZ0JBQUEsaUJBQ0xVLElBQUksQ0FBQ08sYUFBYSxDQUFDO01BQUNDLEVBQUUsRUFBRUwsMEJBQWUsQ0FBQ0csT0FBTyxDQUFDLENBQUNHO0lBQUssQ0FBQyxDQUFDLEVBQUdILE9BQU87RUFBQSxDQUNuRSxFQUNGLENBQUMsQ0FDSCxDQUFDO0VBRUQsSUFBTUksUUFBUSxHQUFHLElBQUFDLGtCQUFXLEVBQzFCLFVBQUFDLFFBQVE7SUFBQSxPQUFJYixtQkFBbUIsQ0FBQ0cscUJBQXFCLENBQUNVLFFBQVEsQ0FBQyxDQUFDO0VBQUEsR0FDaEUsQ0FBQ2IsbUJBQW1CLEVBQUVHLHFCQUFxQixDQUM3QyxDQUFDO0VBRUQsb0JBQ0VqRSxNQUFBLFlBQUE0RSxhQUFBLENBQUM5RCxrQkFBQSxDQUFBK0QsZ0JBQWdCO0lBQUNiLFNBQVMsRUFBRUE7RUFBVSxnQkFDckNoRSxNQUFBLFlBQUE0RSxhQUFBLENBQUM5RCxrQkFBQSxDQUFBZ0UsVUFBVSxxQkFDVDlFLE1BQUEsWUFBQTRFLGFBQUEsQ0FBQ3RFLGFBQUEsQ0FBQXlFLGdCQUFnQjtJQUFDUixFQUFFLEVBQUM7RUFBcUIsQ0FBRSxDQUNsQyxDQUFDLGVBQ2J2RSxNQUFBLFlBQUE0RSxhQUFBLENBQUMvRCxhQUFBLFdBQVk7SUFDWG1FLGFBQWEsRUFBRWpCLElBQUksQ0FBQ08sYUFBYSxDQUFDO01BQUNDLEVBQUUsRUFBRUwsMEJBQWUsQ0FBQ0wsYUFBYSxDQUFDLENBQUNXO0lBQUssQ0FBQyxDQUFFO0lBQzlFUyxPQUFPLEVBQUVoRCxNQUFNLENBQUNTLElBQUksQ0FBQ3VCLHFCQUFxQixDQUFFO0lBQzVDaUIsV0FBVyxFQUFFLEtBQU07SUFDbkJDLFVBQVUsRUFBRSxLQUFNO0lBQ2xCVixRQUFRLEVBQUVBO0VBQVMsQ0FDcEIsQ0FDZSxDQUFDO0FBRXZCLENBQ0YsQ0FBQztBQUNEakIscUJBQXFCLENBQUM0QixXQUFXLEdBQUcsdUJBQXVCO0FBRTNELElBQU1DLGlCQUFpQixHQUFHQyw0QkFBTSxDQUFDQyxHQUFHLENBQUFwRSxlQUFBLEtBQUFBLGVBQUEsT0FBQXFFLHVCQUFBLHVDQUVuQztBQUVELElBQU1DLCtCQUErQixHQUFHSCw0QkFBTSxDQUFDQyxHQUFHLENBQUFuRSxnQkFBQSxLQUFBQSxnQkFBQSxPQUFBb0UsdUJBQUEsd0ZBSWpEO0FBRUQsSUFBTUUsdUJBQXVCLGdCQUFHaEMsaUJBQUssQ0FBQ0MsSUFBSSxDQUN4QyxVQUFBZ0MsS0FBQSxFQUE4RjtFQUFBLElBQTVGQyxlQUFlLEdBQUFELEtBQUEsQ0FBZkMsZUFBZTtJQUFFQyxxQkFBcUIsR0FBQUYsS0FBQSxDQUFyQkUscUJBQXFCO0lBQUU5QixJQUFJLEdBQUE0QixLQUFBLENBQUo1QixJQUFJO0lBQUUrQixVQUFVLEdBQUFILEtBQUEsQ0FBVkcsVUFBVTtFQUN4RCxJQUFNQyx1QkFBdUIsR0FBRzlELE1BQU0sQ0FBQ1MsSUFBSSxDQUFDc0QsNEJBQWlCLENBQUMsQ0FBQzdCLE1BQU0sQ0FDbkUsVUFBQ0MsR0FBRyxFQUFFQyxPQUFPO0lBQUEsT0FBQXBCLGFBQUEsQ0FBQUEsYUFBQSxLQUNSbUIsR0FBRyxXQUFBZixnQkFBQSxpQkFDTFUsSUFBSSxDQUFDTyxhQUFhLENBQUM7TUFBQ0MsRUFBRSxFQUFFeUIsNEJBQWlCLENBQUMzQixPQUFPLENBQUMsQ0FBQ0c7SUFBSyxDQUFDLENBQUMsRUFBR0gsT0FBTztFQUFBLENBQ3JFLEVBQ0YsQ0FBQyxDQUNILENBQUM7RUFFRCxJQUFNSSxRQUFRLEdBQUcsSUFBQUMsa0JBQVcsRUFDMUIsVUFBQUMsUUFBUTtJQUFBLE9BQUlrQixxQkFBcUIsQ0FBQ0UsdUJBQXVCLENBQUNwQixRQUFRLENBQUMsQ0FBQztFQUFBLEdBQ3BFLENBQUNrQixxQkFBcUIsRUFBRUUsdUJBQXVCLENBQ2pELENBQUM7RUFFRCxvQkFDRS9GLE1BQUEsWUFBQTRFLGFBQUEsQ0FBQzlELGtCQUFBLENBQUErRCxnQkFBZ0IscUJBQ2Y3RSxNQUFBLFlBQUE0RSxhQUFBLENBQUNhLCtCQUErQixxQkFDOUJ6RixNQUFBLFlBQUE0RSxhQUFBLENBQUM5RCxrQkFBQSxDQUFBZ0UsVUFBVSxxQkFDVDlFLE1BQUEsWUFBQTRFLGFBQUEsQ0FBQ3RFLGFBQUEsQ0FBQXlFLGdCQUFnQjtJQUFDUixFQUFFLEVBQUM7RUFBdUIsQ0FBRSxDQUNwQyxDQUFDLGVBQ2J2RSxNQUFBLFlBQUE0RSxhQUFBLENBQUNTLGlCQUFpQixRQUFFUyxVQUE4QixDQUNuQixDQUFDLGVBQ2xDOUYsTUFBQSxZQUFBNEUsYUFBQSxDQUFDL0QsYUFBQSxXQUFZO0lBQ1htRSxhQUFhLEVBQUVqQixJQUFJLENBQUNPLGFBQWEsQ0FBQztNQUFDQyxFQUFFLEVBQUV5Qiw0QkFBaUIsQ0FBQ0osZUFBZSxDQUFDLENBQUNwQjtJQUFLLENBQUMsQ0FBRTtJQUNsRlMsT0FBTyxFQUFFaEQsTUFBTSxDQUFDUyxJQUFJLENBQUNxRCx1QkFBdUIsQ0FBRTtJQUM5Q2IsV0FBVyxFQUFFLEtBQU07SUFDbkJDLFVBQVUsRUFBRSxLQUFNO0lBQ2xCVixRQUFRLEVBQUVBO0VBQVMsQ0FDcEIsQ0FDZSxDQUFDO0FBRXZCLENBQ0YsQ0FBQztBQUNEaUIsdUJBQXVCLENBQUNOLFdBQVcsR0FBRyx5QkFBeUI7QUFFL0RhLG1CQUFtQixDQUFDQyxJQUFJLEdBQUcsQ0FDekJDLHFCQUFnQixFQUNoQkMsNkJBQXdCLEVBQ3hCQywrQkFBMEIsRUFDMUJDLHNCQUFpQixFQUNqQkMsMEJBQXFCLEVBQ3JCQywwQkFBcUIsRUFDckJDLHNCQUFpQixDQUNsQjtBQUVELFNBQVNSLG1CQUFtQkEsQ0FDMUJTLFNBQThDLEVBQzlDQyxpQkFBOEQsRUFDOURDLG1CQUFrRSxFQUNsRUMsVUFBZ0QsRUFDaERDLGNBQXdELEVBQ3hEQyxjQUF3RCxFQUN4REMsVUFBZ0QsRUFDaEQ7RUFDQSxJQUFNQyxZQUF5QyxHQUFHLFNBQTVDQSxZQUF5Q0EsQ0FBQUMsS0FBQSxFQWlCekM7SUFBQSxJQWhCSkMsTUFBTSxHQUFBRCxLQUFBLENBQU5DLE1BQU07TUFDTkMsUUFBUSxHQUFBRixLQUFBLENBQVJFLFFBQVE7TUFDUnJELElBQUksR0FBQW1ELEtBQUEsQ0FBSm5ELElBQUk7TUFDSnNELFVBQVUsR0FBQUgsS0FBQSxDQUFWRyxVQUFVO01BQ1ZDLGFBQWEsR0FBQUosS0FBQSxDQUFiSSxhQUFhO01BQ2JDLGFBQWEsR0FBQUwsS0FBQSxDQUFiSyxhQUFhO01BQ2JDLFlBQVksR0FBQU4sS0FBQSxDQUFaTSxZQUFZO01BQ1ozRCxhQUFhLEdBQUFxRCxLQUFBLENBQWJyRCxhQUFhO01BQ2IrQixlQUFlLEdBQUFzQixLQUFBLENBQWZ0QixlQUFlO01BQ2Y2QixnQkFBZ0IsR0FBQVAsS0FBQSxDQUFoQk8sZ0JBQWdCO01BQ2hCQyxnQkFBZ0IsR0FBQVIsS0FBQSxDQUFoQlEsZ0JBQWdCO01BQ2hCQyxnQkFBZ0IsR0FBQVQsS0FBQSxDQUFoQlMsZ0JBQWdCO01BQ2hCQyxhQUFhLEdBQUFWLEtBQUEsQ0FBYlUsYUFBYTtNQUNiQyxjQUFjLEdBQUFYLEtBQUEsQ0FBZFcsY0FBYztNQUNkQyxlQUFlLEdBQUFaLEtBQUEsQ0FBZlksZUFBZTtNQUNmQyxlQUFlLEdBQUFiLEtBQUEsQ0FBZmEsZUFBZTtJQUVmLElBQU9DLFFBQVEsR0FBSUYsZUFBZSxDQUEzQkUsUUFBUTtJQUNmLElBQU9DLG1CQUFtQixHQUFJSixjQUFjLENBQXJDSSxtQkFBbUI7SUFDMUIsSUFBTUMsVUFBVSxHQUFHLElBQUF4RCxrQkFBVyxFQUM1QixVQUFDeUQsT0FBZSxFQUFLO01BQ25CSCxRQUFRLENBQUNJLFNBQVMsRUFBRUQsT0FBTyxDQUFDO0lBQzlCLENBQUMsRUFDRCxDQUFDSCxRQUFRLENBQ1gsQ0FBQztJQUVELElBQU1LLHFCQUFxQixHQUFHLElBQUEzRCxrQkFBVyxFQUN2QyxVQUFDNEQsUUFBZ0IsRUFBSztNQUNwQkwsbUJBQW1CLENBQUM7UUFBQ00sT0FBTyxFQUFFLE9BQU87UUFBRUQsUUFBUSxFQUFSQTtNQUFRLENBQUMsQ0FBQztJQUNuRCxDQUFDLEVBQ0QsQ0FBQ0wsbUJBQW1CLENBQ3RCLENBQUM7SUFFRCxJQUFNTyxtQkFBbUIsR0FBR2xCLGFBQWEsS0FBS21CLDZCQUFrQixDQUFDQyxTQUFTO0lBRTFFLElBQU1DLHFCQUFxQixHQUFHLElBQUFDLDJCQUFvQixFQUFDLENBQUMsQ0FBQ0QscUJBQXFCO0lBQzFFLElBQU1FLG9CQUFvQixHQUFHLElBQUFDLGNBQU8sRUFBQyxZQUFNO01BQ3pDLElBQUlILHFCQUFxQixFQUFFLE9BQU9uQixZQUFZO01BQzlDO01BQ0EsSUFBT3VCLFVBQVUsR0FBb0J2QixZQUFZLENBQTFDdUIsVUFBVTtRQUFLQyxXQUFXLE9BQUFDLHlCQUFBLGFBQUl6QixZQUFZLEVBQUF0RyxTQUFBO01BQ2pELE9BQU84SCxXQUFXO0lBQ3BCLENBQUMsRUFBRSxDQUFDTCxxQkFBcUIsRUFBRW5CLFlBQVksQ0FBQyxDQUFDO0lBRXpDLG9CQUNFeEgsTUFBQSxZQUFBNEUsYUFBQTtNQUFLWixTQUFTLEVBQUM7SUFBZSxnQkFDNUJoRSxNQUFBLFlBQUE0RSxhQUFBLENBQUM5RCxrQkFBQSxDQUFBK0QsZ0JBQWdCLHFCQUNmN0UsTUFBQSxZQUFBNEUsYUFBQSxDQUFDZ0MsbUJBQW1CO01BQUNxQixtQkFBbUIsRUFBRUkscUJBQXNCO01BQUNhLElBQUksRUFBRTVCO0lBQWMsQ0FBRSxDQUN2RSxDQUFDLGVBQ25CdEgsTUFBQSxZQUFBNEUsYUFBQSxDQUFDa0MsY0FBYztNQUNiTSxRQUFRLEVBQUVBLFFBQVM7TUFDbkJPLGdCQUFnQixFQUFFQSxnQkFBaUI7TUFDbkNELGdCQUFnQixFQUFFQSxnQkFBaUI7TUFDbkNFLGFBQWEsRUFBRUEsYUFBYztNQUM3QnVCLGlCQUFpQjtNQUNqQkMsZUFBZSxFQUFFLENBQUNaLG1CQUFvQjtNQUN0Q2YsZ0JBQWdCLEVBQUVBO0lBQWlCLENBQ3BDLENBQUMsZUFDRnpILE1BQUEsWUFBQTRFLGFBQUEsQ0FBQzlELGtCQUFBLENBQUF1SSxnQkFBZ0IsTUFBRSxDQUFDLGVBQ3BCckosTUFBQSxZQUFBNEUsYUFBQSxDQUFDOUQsa0JBQUEsQ0FBQStELGdCQUFnQixxQkFDZjdFLE1BQUEsWUFBQTRFLGFBQUEsQ0FBQ2lDLFVBQVU7TUFDVDdDLFNBQVMsRUFBQyxxQkFBcUI7TUFDL0JzRixLQUFLLEVBQUV2RixJQUFJLENBQUNPLGFBQWEsQ0FBQztRQUFDQyxFQUFFLEVBQUVnRCxhQUFhLENBQUMvQztNQUFLLENBQUM7SUFBRSxnQkFFckR4RSxNQUFBLFlBQUE0RSxhQUFBLENBQUNtQyxjQUFjO01BQUNLLFFBQVEsRUFBRUEsUUFBUztNQUFDbUMsS0FBSyxFQUFFckI7SUFBVyxDQUFFLENBQzlDLENBQ0ksQ0FBQyxlQUNuQmxJLE1BQUEsWUFBQTRFLGFBQUEsQ0FBQzlELGtCQUFBLENBQUErRCxnQkFBZ0IsUUFDZDJELG1CQUFtQixnQkFDbEJ4SSxNQUFBLFlBQUE0RSxhQUFBLENBQUMrQixpQkFBaUI7TUFDaEJTLFFBQVEsRUFBRUEsUUFBUztNQUNuQk8sZ0JBQWdCLEVBQUVBLGdCQUFpQjtNQUNuQ1IsTUFBTSxFQUFFQSxNQUFPO01BQ2ZPLGdCQUFnQixFQUFFQSxnQkFBaUI7TUFDbkNFLGFBQWEsRUFBRUEsYUFBYztNQUM3QlAsVUFBVSxFQUFFQSxVQUFXO01BQ3ZCRyxZQUFZLEVBQUVxQixvQkFBcUI7TUFDbkNoQixjQUFjLEVBQUVBLGNBQWU7TUFDL0JDLGVBQWUsRUFBRUEsZUFBZ0I7TUFDakNDLGVBQWUsRUFBRUEsZUFBZ0I7TUFDakNvQixpQkFBaUI7SUFBQSxDQUNsQixDQUFDLGdCQUVGbkosTUFBQSxZQUFBNEUsYUFBQSxDQUFDOEIsU0FBUztNQUNSUyxNQUFNLEVBQUVBLE1BQU87TUFDZkMsUUFBUSxFQUFFQSxRQUFTO01BQ25CQyxVQUFVLEVBQUVBLFVBQVc7TUFDdkJRLGNBQWMsRUFBRUEsY0FBZTtNQUMvQkMsZUFBZSxFQUFFQSxlQUFnQjtNQUNqQ0MsZUFBZSxFQUFFQSxlQUFnQjtNQUNqQ1AsWUFBWSxFQUFFcUI7SUFBcUIsQ0FDcEMsQ0FFYSxDQUFDLGVBQ25CN0ksTUFBQSxZQUFBNEUsYUFBQSxDQUFDcEIscUJBQXFCO01BQ3BCSyxhQUFhLEVBQUVBLGFBQWM7TUFDN0JDLG1CQUFtQixFQUFFZ0UsZUFBZSxDQUFDaEUsbUJBQW9CO01BQ3pEQyxJQUFJLEVBQUVBO0lBQUssQ0FDWixDQUFDLGVBQ0YvRCxNQUFBLFlBQUE0RSxhQUFBLENBQUNjLHVCQUF1QjtNQUN0QkUsZUFBZSxFQUFFQSxlQUFnQjtNQUNqQ0MscUJBQXFCLEVBQUVpQyxlQUFlLENBQUNqQyxxQkFBc0I7TUFDN0Q5QixJQUFJLEVBQUVBLElBQUs7TUFDWCtCLFVBQVUsZUFDUjlGLE1BQUEsWUFBQTRFLGFBQUEsQ0FBQ29DLFVBQVU7UUFDVHpDLEVBQUUsK0JBQWdDO1FBQ2xDaUYsV0FBVyxFQUFFO01BQThCLENBQzVDO0lBQ0YsQ0FDRixDQUNFLENBQUM7RUFFVixDQUFDO0VBRUQsT0FBTyxJQUFBQyxxQkFBVSxFQUFDeEMsWUFBWSxDQUFDO0FBQ2pDO0FBQUMsSUFBQXlDLFFBQUEsR0FBQWpHLE9BQUEsY0FFY3dDLG1CQUFtQiIsImlnbm9yZUxpc3QiOltdfQ==
202
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfcmVhY3RJbnRsIiwiX3N0eWxlZENvbXBvbmVudHMiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX2xvY2FsaXphdGlvbiIsIl9sYXllckxpc3QiLCJfZGF0YXNldExheWVyR3JvdXAiLCJfcGFuZWxWaWV3TGlzdFRvZ2dsZSIsIl9wYW5lbFRpdGxlIiwiX2RhdGFzZXRTZWN0aW9uIiwiX2FkZExheWVyQnV0dG9uIiwiX2l0ZW1TZWxlY3RvciIsIl9zdHlsZWRDb21wb25lbnRzMiIsIl9pbmZvSGVscGVyIiwiX2NvbnN0YW50cyIsIl91dGlscyIsIl9leGNsdWRlZCIsIl9leGNsdWRlZDIiLCJfdGVtcGxhdGVPYmplY3QiLCJfdGVtcGxhdGVPYmplY3QyIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0Iiwib3duS2V5cyIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJvIiwiZmlsdGVyIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiTGF5ZXJCbGVuZGluZ1NlbGVjdG9yIiwiZXhwb3J0cyIsIlJlYWN0IiwibWVtbyIsIl9yZWYiLCJsYXllckJsZW5kaW5nIiwidXBkYXRlTGF5ZXJCbGVuZGluZyIsImludGwiLCJjbGFzc05hbWUiLCJsYWJlbGVkTGF5ZXJCbGVuZGluZ3MiLCJMQVlFUl9CTEVORElOR1MiLCJyZWR1Y2UiLCJhY2MiLCJjdXJyZW50IiwiZm9ybWF0TWVzc2FnZSIsImlkIiwibGFiZWwiLCJvbkNoYW5nZSIsInVzZUNhbGxiYWNrIiwiYmxlbmRpbmciLCJjcmVhdGVFbGVtZW50IiwiU2lkZVBhbmVsU2VjdGlvbiIsIlBhbmVsTGFiZWwiLCJGb3JtYXR0ZWRNZXNzYWdlIiwic2VsZWN0ZWRJdGVtcyIsIm9wdGlvbnMiLCJtdWx0aVNlbGVjdCIsInNlYXJjaGFibGUiLCJkaXNwbGF5TmFtZSIsIkluZm9IZWxwZXJXcmFwcGVyIiwic3R5bGVkIiwiZGl2IiwiX3RhZ2dlZFRlbXBsYXRlTGl0ZXJhbDIiLCJPdmVybGF5QmxlbmRpbmdTZWxlY3RvclRpdGxlUm93IiwiT3ZlcmxheUJsZW5kaW5nU2VsZWN0b3IiLCJfcmVmMiIsIm92ZXJsYXlCbGVuZGluZyIsInVwZGF0ZU92ZXJsYXlCbGVuZGluZyIsImluZm9IZWxwZXIiLCJsYWJlbGVkT3ZlcmxheUJsZW5kaW5ncyIsIk9WRVJMQVlfQkxFTkRJTkdTIiwiTGF5ZXJNYW5hZ2VyRmFjdG9yeSIsImRlcHMiLCJMYXllckxpc3RGYWN0b3J5IiwiRGF0YXNldExheWVyR3JvdXBGYWN0b3J5IiwiUGFuZWxWaWV3TGlzdFRvZ2dsZUZhY3RvcnkiLCJQYW5lbFRpdGxlRmFjdG9yeSIsIkRhdGFzZXRTZWN0aW9uRmFjdG9yeSIsIkFkZExheWVyQnV0dG9uRmFjdG9yeSIsIkluZm9IZWxwZXJGYWN0b3J5IiwiTGF5ZXJMaXN0IiwiRGF0YXNldExheWVyR3JvdXAiLCJQYW5lbFZpZXdMaXN0VG9nZ2xlIiwiUGFuZWxUaXRsZSIsIkRhdGFzZXRTZWN0aW9uIiwiQWRkTGF5ZXJCdXR0b24iLCJJbmZvSGVscGVyIiwiTGF5ZXJNYW5hZ2VyIiwiX3JlZjMiLCJsYXllcnMiLCJkYXRhc2V0cyIsImxheWVyT3JkZXIiLCJwYW5lbExpc3RWaWV3IiwicGFuZWxNZXRhZGF0YSIsImxheWVyQ2xhc3NlcyIsInNob3dBZGREYXRhTW9kYWwiLCJfcmVmMyRzaG93RGVsZXRlRGF0YXMiLCJzaG93RGVsZXRlRGF0YXNldCIsInVwZGF0ZVRhYmxlQ29sb3IiLCJzaG93RGF0YXNldFRhYmxlIiwicmVtb3ZlRGF0YXNldCIsInVpU3RhdGVBY3Rpb25zIiwidmlzU3RhdGVBY3Rpb25zIiwibWFwU3RhdGVBY3Rpb25zIiwiYWRkTGF5ZXIiLCJ0b2dnbGVQYW5lbExpc3RWaWV3Iiwib25BZGRMYXllciIsImRhdGFzZXQiLCJ1bmRlZmluZWQiLCJvblRvZ2dsZVBhbmVsTGlzdFZpZXciLCJsaXN0VmlldyIsInBhbmVsSWQiLCJpc1NvcnRCeURhdGFzZXRNb2RlIiwiUEFORUxfVklFV19UT0dHTEVTIiwiYnlEYXRhc2V0IiwiZW5hYmxlUmFzdGVyVGlsZUxheWVyIiwiZ2V0QXBwbGljYXRpb25Db25maWciLCJlbmFibGVXTVNMYXllciIsImZpbHRlcmVkTGF5ZXJDbGFzc2VzIiwidXNlTWVtbyIsImZpbHRlcmVkQ2xhc3NlcyIsIl9maWx0ZXJlZENsYXNzZXMiLCJfcmFzdGVyVGlsZSIsInJhc3RlclRpbGUiLCJyZXN0IiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzMiIsIl9maWx0ZXJlZENsYXNzZXMyIiwiX3dtcyIsIndtcyIsIm1vZGUiLCJzaG93RGF0YXNldExpc3QiLCJTaWRlUGFuZWxEaXZpZGVyIiwidGl0bGUiLCJvbkFkZCIsImRlc2NyaXB0aW9uIiwiaW5qZWN0SW50bCIsIl9kZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NpZGUtcGFuZWwvbGF5ZXItbWFuYWdlci50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IFJlYWN0LCB7dXNlQ2FsbGJhY2ssIHVzZU1lbW99IGZyb20gJ3JlYWN0JztcblxuaW1wb3J0IHtpbmplY3RJbnRsLCBXcmFwcGVkQ29tcG9uZW50UHJvcHN9IGZyb20gJ3JlYWN0LWludGwnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQge0Zvcm1hdHRlZE1lc3NhZ2V9IGZyb20gJ0BrZXBsZXIuZ2wvbG9jYWxpemF0aW9uJztcblxuaW1wb3J0IExheWVyTGlzdEZhY3RvcnkgZnJvbSAnLi9sYXllci1wYW5lbC9sYXllci1saXN0JztcbmltcG9ydCBEYXRhc2V0TGF5ZXJHcm91cEZhY3RvcnkgZnJvbSAnLi9sYXllci1wYW5lbC9kYXRhc2V0LWxheWVyLWdyb3VwJztcbmltcG9ydCBQYW5lbFZpZXdMaXN0VG9nZ2xlRmFjdG9yeSBmcm9tICcuL3BhbmVsLXZpZXctbGlzdC10b2dnbGUnO1xuaW1wb3J0IFBhbmVsVGl0bGVGYWN0b3J5IGZyb20gJy4vcGFuZWwtdGl0bGUnO1xuaW1wb3J0IERhdGFzZXRTZWN0aW9uRmFjdG9yeSBmcm9tICcuL2xheWVyLXBhbmVsL2RhdGFzZXQtc2VjdGlvbic7XG5pbXBvcnQgQWRkTGF5ZXJCdXR0b25GYWN0b3J5IGZyb20gJy4vbGF5ZXItcGFuZWwvYWRkLWxheWVyLWJ1dHRvbic7XG5cbmltcG9ydCBJdGVtU2VsZWN0b3IgZnJvbSAnLi4vY29tbW9uL2l0ZW0tc2VsZWN0b3IvaXRlbS1zZWxlY3Rvcic7XG5pbXBvcnQge1BhbmVsTGFiZWwsIFNpZGVQYW5lbERpdmlkZXIsIFNpZGVQYW5lbFNlY3Rpb259IGZyb20gJy4uL2NvbW1vbi9zdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQgSW5mb0hlbHBlckZhY3RvcnkgZnJvbSAnLi4vY29tbW9uL2luZm8taGVscGVyJztcblxuaW1wb3J0IHtMQVlFUl9CTEVORElOR1MsIE9WRVJMQVlfQkxFTkRJTkdTLCBQQU5FTF9WSUVXX1RPR0dMRVN9IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcbmltcG9ydCB7TGF5ZXIsIExheWVyQ2xhc3Nlc1R5cGV9IGZyb20gJ0BrZXBsZXIuZ2wvbGF5ZXJzJztcbmltcG9ydCB7VUlTdGF0ZUFjdGlvbnMsIFZpc1N0YXRlQWN0aW9ucywgTWFwU3RhdGVBY3Rpb25zLCBBY3Rpb25IYW5kbGVyfSBmcm9tICdAa2VwbGVyLmdsL2FjdGlvbnMnO1xuaW1wb3J0IHtTaWRlUGFuZWxJdGVtfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQge1BhbmVsTGlzdFZpZXd9IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuaW1wb3J0IHtEYXRhc2V0c30gZnJvbSAnQGtlcGxlci5nbC90YWJsZSc7XG5pbXBvcnQge2dldEFwcGxpY2F0aW9uQ29uZmlnfSBmcm9tICdAa2VwbGVyLmdsL3V0aWxzJztcblxudHlwZSBMYXllckJsZW5kaW5nU2VsZWN0b3JQcm9wcyA9IHtcbiAgbGF5ZXJCbGVuZGluZzogc3RyaW5nO1xuICB1cGRhdGVMYXllckJsZW5kaW5nOiBBY3Rpb25IYW5kbGVyPHR5cGVvZiBWaXNTdGF0ZUFjdGlvbnMudXBkYXRlTGF5ZXJCbGVuZGluZz47XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbn0gJiBXcmFwcGVkQ29tcG9uZW50UHJvcHM7XG5cbnR5cGUgT3ZlcmxheUJsZW5kaW5nU2VsZWN0b3JQcm9wcyA9IHtcbiAgb3ZlcmxheUJsZW5kaW5nOiBzdHJpbmc7XG4gIHVwZGF0ZU92ZXJsYXlCbGVuZGluZzogQWN0aW9uSGFuZGxlcjx0eXBlb2YgVmlzU3RhdGVBY3Rpb25zLnVwZGF0ZU92ZXJsYXlCbGVuZGluZz47XG4gIGluZm9IZWxwZXI6IFJlYWN0LlJlYWN0Tm9kZTtcbn0gJiBXcmFwcGVkQ29tcG9uZW50UHJvcHM7XG5cbnR5cGUgTGF5ZXJNYW5hZ2VyUHJvcHMgPSB7XG4gIGRhdGFzZXRzOiBEYXRhc2V0cztcbiAgbGF5ZXJzOiBMYXllcltdO1xuICBsYXllck9yZGVyOiBzdHJpbmdbXTtcbiAgbGF5ZXJDbGFzc2VzOiBMYXllckNsYXNzZXNUeXBlO1xuICBsYXllckJsZW5kaW5nOiBzdHJpbmc7XG4gIG92ZXJsYXlCbGVuZGluZzogc3RyaW5nO1xuICB1aVN0YXRlQWN0aW9uczogdHlwZW9mIFVJU3RhdGVBY3Rpb25zO1xuICB2aXNTdGF0ZUFjdGlvbnM6IHR5cGVvZiBWaXNTdGF0ZUFjdGlvbnM7XG4gIG1hcFN0YXRlQWN0aW9uczogdHlwZW9mIE1hcFN0YXRlQWN0aW9ucztcbiAgc2hvd0FkZERhdGFNb2RhbDogKCkgPT4gdm9pZDtcbiAgcmVtb3ZlRGF0YXNldDogQWN0aW9uSGFuZGxlcjx0eXBlb2YgVUlTdGF0ZUFjdGlvbnMub3BlbkRlbGV0ZU1vZGFsPjtcbiAgc2hvd0RhdGFzZXRUYWJsZTogQWN0aW9uSGFuZGxlcjx0eXBlb2YgVmlzU3RhdGVBY3Rpb25zLnNob3dEYXRhc2V0VGFibGU+O1xuICB1cGRhdGVUYWJsZUNvbG9yOiBBY3Rpb25IYW5kbGVyPHR5cGVvZiBWaXNTdGF0ZUFjdGlvbnMudXBkYXRlVGFibGVDb2xvcj47XG4gIHBhbmVsTGlzdFZpZXc6IFBhbmVsTGlzdFZpZXc7XG4gIHBhbmVsTWV0YWRhdGE6IFNpZGVQYW5lbEl0ZW07XG4gIHNob3dEZWxldGVEYXRhc2V0PzogYm9vbGVhbjtcbn0gJiBXcmFwcGVkQ29tcG9uZW50UHJvcHM7XG5cbmV4cG9ydCBjb25zdCBMYXllckJsZW5kaW5nU2VsZWN0b3IgPSBSZWFjdC5tZW1vKFxuICAoe2xheWVyQmxlbmRpbmcsIHVwZGF0ZUxheWVyQmxlbmRpbmcsIGludGwsIGNsYXNzTmFtZX06IExheWVyQmxlbmRpbmdTZWxlY3RvclByb3BzKSA9PiB7XG4gICAgY29uc3QgbGFiZWxlZExheWVyQmxlbmRpbmdzID0gT2JqZWN0LmtleXMoTEFZRVJfQkxFTkRJTkdTKS5yZWR1Y2UoXG4gICAgICAoYWNjLCBjdXJyZW50KSA9PiAoe1xuICAgICAgICAuLi5hY2MsXG4gICAgICAgIFtpbnRsLmZvcm1hdE1lc3NhZ2Uoe2lkOiBMQVlFUl9CTEVORElOR1NbY3VycmVudF0ubGFiZWx9KV06IGN1cnJlbnRcbiAgICAgIH0pLFxuICAgICAge31cbiAgICApO1xuXG4gICAgY29uc3Qgb25DaGFuZ2UgPSB1c2VDYWxsYmFjayhcbiAgICAgIGJsZW5kaW5nID0+IHVwZGF0ZUxheWVyQmxlbmRpbmcobGFiZWxlZExheWVyQmxlbmRpbmdzW2JsZW5kaW5nXSksXG4gICAgICBbdXBkYXRlTGF5ZXJCbGVuZGluZywgbGFiZWxlZExheWVyQmxlbmRpbmdzXVxuICAgICk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFNpZGVQYW5lbFNlY3Rpb24gY2xhc3NOYW1lPXtjbGFzc05hbWV9PlxuICAgICAgICA8UGFuZWxMYWJlbD5cbiAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImxheWVyQmxlbmRpbmcudGl0bGVcIiAvPlxuICAgICAgICA8L1BhbmVsTGFiZWw+XG4gICAgICAgIDxJdGVtU2VsZWN0b3JcbiAgICAgICAgICBzZWxlY3RlZEl0ZW1zPXtpbnRsLmZvcm1hdE1lc3NhZ2Uoe2lkOiBMQVlFUl9CTEVORElOR1NbbGF5ZXJCbGVuZGluZ10ubGFiZWx9KX1cbiAgICAgICAgICBvcHRpb25zPXtPYmplY3Qua2V5cyhsYWJlbGVkTGF5ZXJCbGVuZGluZ3MpfVxuICAgICAgICAgIG11bHRpU2VsZWN0PXtmYWxzZX1cbiAgICAgICAgICBzZWFyY2hhYmxlPXtmYWxzZX1cbiAgICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2V9XG4gICAgICAgIC8+XG4gICAgICA8L1NpZGVQYW5lbFNlY3Rpb24+XG4gICAgKTtcbiAgfVxuKTtcbkxheWVyQmxlbmRpbmdTZWxlY3Rvci5kaXNwbGF5TmFtZSA9ICdMYXllckJsZW5kaW5nU2VsZWN0b3InO1xuXG5jb25zdCBJbmZvSGVscGVyV3JhcHBlciA9IHN0eWxlZC5kaXZgXG4gIGZsb2F0OiByaWdodDtcbmA7XG5cbmNvbnN0IE92ZXJsYXlCbGVuZGluZ1NlbGVjdG9yVGl0bGVSb3cgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuYDtcblxuY29uc3QgT3ZlcmxheUJsZW5kaW5nU2VsZWN0b3IgPSBSZWFjdC5tZW1vKFxuICAoe292ZXJsYXlCbGVuZGluZywgdXBkYXRlT3ZlcmxheUJsZW5kaW5nLCBpbnRsLCBpbmZvSGVscGVyfTogT3ZlcmxheUJsZW5kaW5nU2VsZWN0b3JQcm9wcykgPT4ge1xuICAgIGNvbnN0IGxhYmVsZWRPdmVybGF5QmxlbmRpbmdzID0gT2JqZWN0LmtleXMoT1ZFUkxBWV9CTEVORElOR1MpLnJlZHVjZShcbiAgICAgIChhY2MsIGN1cnJlbnQpID0+ICh7XG4gICAgICAgIC4uLmFjYyxcbiAgICAgICAgW2ludGwuZm9ybWF0TWVzc2FnZSh7aWQ6IE9WRVJMQVlfQkxFTkRJTkdTW2N1cnJlbnRdLmxhYmVsfSldOiBjdXJyZW50XG4gICAgICB9KSxcbiAgICAgIHt9XG4gICAgKTtcblxuICAgIGNvbnN0IG9uQ2hhbmdlID0gdXNlQ2FsbGJhY2soXG4gICAgICBibGVuZGluZyA9PiB1cGRhdGVPdmVybGF5QmxlbmRpbmcobGFiZWxlZE92ZXJsYXlCbGVuZGluZ3NbYmxlbmRpbmddKSxcbiAgICAgIFt1cGRhdGVPdmVybGF5QmxlbmRpbmcsIGxhYmVsZWRPdmVybGF5QmxlbmRpbmdzXVxuICAgICk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFNpZGVQYW5lbFNlY3Rpb24+XG4gICAgICAgIDxPdmVybGF5QmxlbmRpbmdTZWxlY3RvclRpdGxlUm93PlxuICAgICAgICAgIDxQYW5lbExhYmVsPlxuICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJvdmVybGF5QmxlbmRpbmcudGl0bGVcIiAvPlxuICAgICAgICAgIDwvUGFuZWxMYWJlbD5cbiAgICAgICAgICA8SW5mb0hlbHBlcldyYXBwZXI+e2luZm9IZWxwZXJ9PC9JbmZvSGVscGVyV3JhcHBlcj5cbiAgICAgICAgPC9PdmVybGF5QmxlbmRpbmdTZWxlY3RvclRpdGxlUm93PlxuICAgICAgICA8SXRlbVNlbGVjdG9yXG4gICAgICAgICAgc2VsZWN0ZWRJdGVtcz17aW50bC5mb3JtYXRNZXNzYWdlKHtpZDogT1ZFUkxBWV9CTEVORElOR1Nbb3ZlcmxheUJsZW5kaW5nXS5sYWJlbH0pfVxuICAgICAgICAgIG9wdGlvbnM9e09iamVjdC5rZXlzKGxhYmVsZWRPdmVybGF5QmxlbmRpbmdzKX1cbiAgICAgICAgICBtdWx0aVNlbGVjdD17ZmFsc2V9XG4gICAgICAgICAgc2VhcmNoYWJsZT17ZmFsc2V9XG4gICAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlfVxuICAgICAgICAvPlxuICAgICAgPC9TaWRlUGFuZWxTZWN0aW9uPlxuICAgICk7XG4gIH1cbik7XG5PdmVybGF5QmxlbmRpbmdTZWxlY3Rvci5kaXNwbGF5TmFtZSA9ICdPdmVybGF5QmxlbmRpbmdTZWxlY3Rvcic7XG5cbkxheWVyTWFuYWdlckZhY3RvcnkuZGVwcyA9IFtcbiAgTGF5ZXJMaXN0RmFjdG9yeSxcbiAgRGF0YXNldExheWVyR3JvdXBGYWN0b3J5LFxuICBQYW5lbFZpZXdMaXN0VG9nZ2xlRmFjdG9yeSxcbiAgUGFuZWxUaXRsZUZhY3RvcnksXG4gIERhdGFzZXRTZWN0aW9uRmFjdG9yeSxcbiAgQWRkTGF5ZXJCdXR0b25GYWN0b3J5LFxuICBJbmZvSGVscGVyRmFjdG9yeVxuXTtcblxuZnVuY3Rpb24gTGF5ZXJNYW5hZ2VyRmFjdG9yeShcbiAgTGF5ZXJMaXN0OiBSZXR1cm5UeXBlPHR5cGVvZiBMYXllckxpc3RGYWN0b3J5PixcbiAgRGF0YXNldExheWVyR3JvdXA6IFJldHVyblR5cGU8dHlwZW9mIERhdGFzZXRMYXllckdyb3VwRmFjdG9yeT4sXG4gIFBhbmVsVmlld0xpc3RUb2dnbGU6IFJldHVyblR5cGU8dHlwZW9mIFBhbmVsVmlld0xpc3RUb2dnbGVGYWN0b3J5PixcbiAgUGFuZWxUaXRsZTogUmV0dXJuVHlwZTx0eXBlb2YgUGFuZWxUaXRsZUZhY3Rvcnk+LFxuICBEYXRhc2V0U2VjdGlvbjogUmV0dXJuVHlwZTx0eXBlb2YgRGF0YXNldFNlY3Rpb25GYWN0b3J5PixcbiAgQWRkTGF5ZXJCdXR0b246IFJldHVyblR5cGU8dHlwZW9mIEFkZExheWVyQnV0dG9uRmFjdG9yeT4sXG4gIEluZm9IZWxwZXI6IFJldHVyblR5cGU8dHlwZW9mIEluZm9IZWxwZXJGYWN0b3J5PlxuKSB7XG4gIGNvbnN0IExheWVyTWFuYWdlcjogUmVhY3QuRkM8TGF5ZXJNYW5hZ2VyUHJvcHM+ID0gKHtcbiAgICBsYXllcnMsXG4gICAgZGF0YXNldHMsXG4gICAgaW50bCxcbiAgICBsYXllck9yZGVyLFxuICAgIHBhbmVsTGlzdFZpZXcsXG4gICAgcGFuZWxNZXRhZGF0YSxcbiAgICBsYXllckNsYXNzZXMsXG4gICAgbGF5ZXJCbGVuZGluZyxcbiAgICBvdmVybGF5QmxlbmRpbmcsXG4gICAgc2hvd0FkZERhdGFNb2RhbCxcbiAgICBzaG93RGVsZXRlRGF0YXNldCA9IHRydWUsXG4gICAgdXBkYXRlVGFibGVDb2xvcixcbiAgICBzaG93RGF0YXNldFRhYmxlLFxuICAgIHJlbW92ZURhdGFzZXQsXG4gICAgdWlTdGF0ZUFjdGlvbnMsXG4gICAgdmlzU3RhdGVBY3Rpb25zLFxuICAgIG1hcFN0YXRlQWN0aW9uc1xuICB9KSA9PiB7XG4gICAgY29uc3Qge2FkZExheWVyfSA9IHZpc1N0YXRlQWN0aW9ucztcbiAgICBjb25zdCB7dG9nZ2xlUGFuZWxMaXN0Vmlld30gPSB1aVN0YXRlQWN0aW9ucztcbiAgICBjb25zdCBvbkFkZExheWVyID0gdXNlQ2FsbGJhY2soXG4gICAgICAoZGF0YXNldDogc3RyaW5nKSA9PiB7XG4gICAgICAgIGFkZExheWVyKHVuZGVmaW5lZCwgZGF0YXNldCk7XG4gICAgICB9LFxuICAgICAgW2FkZExheWVyXVxuICAgICk7XG5cbiAgICBjb25zdCBvblRvZ2dsZVBhbmVsTGlzdFZpZXcgPSB1c2VDYWxsYmFjayhcbiAgICAgIChsaXN0Vmlldzogc3RyaW5nKSA9PiB7XG4gICAgICAgIHRvZ2dsZVBhbmVsTGlzdFZpZXcoe3BhbmVsSWQ6ICdsYXllcicsIGxpc3RWaWV3fSk7XG4gICAgICB9LFxuICAgICAgW3RvZ2dsZVBhbmVsTGlzdFZpZXddXG4gICAgKTtcblxuICAgIGNvbnN0IGlzU29ydEJ5RGF0YXNldE1vZGUgPSBwYW5lbExpc3RWaWV3ID09PSBQQU5FTF9WSUVXX1RPR0dMRVMuYnlEYXRhc2V0O1xuXG4gICAgLy8gdGVtcCBwYXRjaCB0byBoaWRlIGxheWVycyB0aGF0IGFyZSBpbiBkZXZlbG9wbWVudFxuICAgIGNvbnN0IGVuYWJsZVJhc3RlclRpbGVMYXllciA9IGdldEFwcGxpY2F0aW9uQ29uZmlnKCkuZW5hYmxlUmFzdGVyVGlsZUxheWVyO1xuICAgIGNvbnN0IGVuYWJsZVdNU0xheWVyID0gZ2V0QXBwbGljYXRpb25Db25maWcoKS5lbmFibGVXTVNMYXllcjtcbiAgICBjb25zdCBmaWx0ZXJlZExheWVyQ2xhc3NlcyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgbGV0IGZpbHRlcmVkQ2xhc3NlcyA9IGxheWVyQ2xhc3NlcztcbiAgICAgIGlmICghZW5hYmxlUmFzdGVyVGlsZUxheWVyKSB7XG4gICAgICAgIGNvbnN0IHtyYXN0ZXJUaWxlOiBfcmFzdGVyVGlsZSwgLi4ucmVzdH0gPSBmaWx0ZXJlZENsYXNzZXM7XG4gICAgICAgIGZpbHRlcmVkQ2xhc3NlcyA9IHJlc3QgYXMgTGF5ZXJDbGFzc2VzVHlwZTtcbiAgICAgIH1cbiAgICAgIGlmICghZW5hYmxlV01TTGF5ZXIpIHtcbiAgICAgICAgY29uc3Qge3dtczogX3dtcywgLi4ucmVzdH0gPSBmaWx0ZXJlZENsYXNzZXM7XG4gICAgICAgIGZpbHRlcmVkQ2xhc3NlcyA9IHJlc3QgYXMgTGF5ZXJDbGFzc2VzVHlwZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmaWx0ZXJlZENsYXNzZXMgYXMgTGF5ZXJDbGFzc2VzVHlwZTtcbiAgICB9LCBbZW5hYmxlUmFzdGVyVGlsZUxheWVyLCBlbmFibGVXTVNMYXllciwgbGF5ZXJDbGFzc2VzXSk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJsYXllci1tYW5hZ2VyXCI+XG4gICAgICAgIDxTaWRlUGFuZWxTZWN0aW9uPlxuICAgICAgICAgIDxQYW5lbFZpZXdMaXN0VG9nZ2xlIHRvZ2dsZVBhbmVsTGlzdFZpZXc9e29uVG9nZ2xlUGFuZWxMaXN0Vmlld30gbW9kZT17cGFuZWxMaXN0Vmlld30gLz5cbiAgICAgICAgPC9TaWRlUGFuZWxTZWN0aW9uPlxuICAgICAgICA8RGF0YXNldFNlY3Rpb25cbiAgICAgICAgICBkYXRhc2V0cz17ZGF0YXNldHN9XG4gICAgICAgICAgc2hvd0RhdGFzZXRUYWJsZT17c2hvd0RhdGFzZXRUYWJsZX1cbiAgICAgICAgICB1cGRhdGVUYWJsZUNvbG9yPXt1cGRhdGVUYWJsZUNvbG9yfVxuICAgICAgICAgIHJlbW92ZURhdGFzZXQ9e3JlbW92ZURhdGFzZXR9XG4gICAgICAgICAgc2hvd0RlbGV0ZURhdGFzZXQ9e3Nob3dEZWxldGVEYXRhc2V0fVxuICAgICAgICAgIHNob3dEYXRhc2V0TGlzdD17IWlzU29ydEJ5RGF0YXNldE1vZGV9XG4gICAgICAgICAgc2hvd0FkZERhdGFNb2RhbD17c2hvd0FkZERhdGFNb2RhbH1cbiAgICAgICAgLz5cbiAgICAgICAgPFNpZGVQYW5lbERpdmlkZXIgLz5cbiAgICAgICAgPFNpZGVQYW5lbFNlY3Rpb24+XG4gICAgICAgICAgPFBhbmVsVGl0bGVcbiAgICAgICAgICAgIGNsYXNzTmFtZT1cImxheWVyLW1hbmFnZXItdGl0bGVcIlxuICAgICAgICAgICAgdGl0bGU9e2ludGwuZm9ybWF0TWVzc2FnZSh7aWQ6IHBhbmVsTWV0YWRhdGEubGFiZWx9KX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8QWRkTGF5ZXJCdXR0b24gZGF0YXNldHM9e2RhdGFzZXRzfSBvbkFkZD17b25BZGRMYXllcn0gLz5cbiAgICAgICAgICA8L1BhbmVsVGl0bGU+XG4gICAgICAgIDwvU2lkZVBhbmVsU2VjdGlvbj5cbiAgICAgICAgPFNpZGVQYW5lbFNlY3Rpb24+XG4gICAgICAgICAge2lzU29ydEJ5RGF0YXNldE1vZGUgPyAoXG4gICAgICAgICAgICA8RGF0YXNldExheWVyR3JvdXBcbiAgICAgICAgICAgICAgZGF0YXNldHM9e2RhdGFzZXRzfVxuICAgICAgICAgICAgICBzaG93RGF0YXNldFRhYmxlPXtzaG93RGF0YXNldFRhYmxlfVxuICAgICAgICAgICAgICBsYXllcnM9e2xheWVyc31cbiAgICAgICAgICAgICAgdXBkYXRlVGFibGVDb2xvcj17dXBkYXRlVGFibGVDb2xvcn1cbiAgICAgICAgICAgICAgcmVtb3ZlRGF0YXNldD17cmVtb3ZlRGF0YXNldH1cbiAgICAgICAgICAgICAgbGF5ZXJPcmRlcj17bGF5ZXJPcmRlcn1cbiAgICAgICAgICAgICAgbGF5ZXJDbGFzc2VzPXtmaWx0ZXJlZExheWVyQ2xhc3Nlc31cbiAgICAgICAgICAgICAgdWlTdGF0ZUFjdGlvbnM9e3VpU3RhdGVBY3Rpb25zfVxuICAgICAgICAgICAgICB2aXNTdGF0ZUFjdGlvbnM9e3Zpc1N0YXRlQWN0aW9uc31cbiAgICAgICAgICAgICAgbWFwU3RhdGVBY3Rpb25zPXttYXBTdGF0ZUFjdGlvbnN9XG4gICAgICAgICAgICAgIHNob3dEZWxldGVEYXRhc2V0PXtzaG93RGVsZXRlRGF0YXNldH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSA6IChcbiAgICAgICAgICAgIDxMYXllckxpc3RcbiAgICAgICAgICAgICAgbGF5ZXJzPXtsYXllcnN9XG4gICAgICAgICAgICAgIGRhdGFzZXRzPXtkYXRhc2V0c31cbiAgICAgICAgICAgICAgbGF5ZXJPcmRlcj17bGF5ZXJPcmRlcn1cbiAgICAgICAgICAgICAgdWlTdGF0ZUFjdGlvbnM9e3VpU3RhdGVBY3Rpb25zfVxuICAgICAgICAgICAgICB2aXNTdGF0ZUFjdGlvbnM9e3Zpc1N0YXRlQWN0aW9uc31cbiAgICAgICAgICAgICAgbWFwU3RhdGVBY3Rpb25zPXttYXBTdGF0ZUFjdGlvbnN9XG4gICAgICAgICAgICAgIGxheWVyQ2xhc3Nlcz17ZmlsdGVyZWRMYXllckNsYXNzZXN9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvU2lkZVBhbmVsU2VjdGlvbj5cbiAgICAgICAgPExheWVyQmxlbmRpbmdTZWxlY3RvclxuICAgICAgICAgIGxheWVyQmxlbmRpbmc9e2xheWVyQmxlbmRpbmd9XG4gICAgICAgICAgdXBkYXRlTGF5ZXJCbGVuZGluZz17dmlzU3RhdGVBY3Rpb25zLnVwZGF0ZUxheWVyQmxlbmRpbmd9XG4gICAgICAgICAgaW50bD17aW50bH1cbiAgICAgICAgLz5cbiAgICAgICAgPE92ZXJsYXlCbGVuZGluZ1NlbGVjdG9yXG4gICAgICAgICAgb3ZlcmxheUJsZW5kaW5nPXtvdmVybGF5QmxlbmRpbmd9XG4gICAgICAgICAgdXBkYXRlT3ZlcmxheUJsZW5kaW5nPXt2aXNTdGF0ZUFjdGlvbnMudXBkYXRlT3ZlcmxheUJsZW5kaW5nfVxuICAgICAgICAgIGludGw9e2ludGx9XG4gICAgICAgICAgaW5mb0hlbHBlcj17XG4gICAgICAgICAgICA8SW5mb0hlbHBlclxuICAgICAgICAgICAgICBpZD17YG92ZXJsYXlCbGVuZGluZy1kZXNjcmlwdGlvbmB9XG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uPXsnb3ZlcmxheUJsZW5kaW5nLmRlc2NyaXB0aW9uJ31cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgfVxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfTtcblxuICByZXR1cm4gaW5qZWN0SW50bChMYXllck1hbmFnZXIpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBMYXllck1hbmFnZXJGYWN0b3J5O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUdBLElBQUFBLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFDLFVBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLGlCQUFBLEdBQUFDLHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBSSxhQUFBLEdBQUFKLE9BQUE7QUFFQSxJQUFBSyxVQUFBLEdBQUFGLHNCQUFBLENBQUFILE9BQUE7QUFD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
@@ -111,9 +111,16 @@ function ColorScaleSelectorFactory(ColorBreaksPanel) {
111
111
  return dataset.dataContainer.rowAsArray(idx);
112
112
  };
113
113
  }, [dataset, field]);
114
+ var ordinalDomain = (0, _react.useMemo)(function () {
115
+ return layer.config[layer.visualChannels[channelKey].domain] || [];
116
+ }, [channelKey, layer.config, layer.visualChannels]);
114
117
 
115
118
  // aggregatedBins should be the raw data
116
119
  var allBins = (0, _react.useMemo)(function () {
120
+ if ((field === null || field === void 0 ? void 0 : field.type) === _constants.ALL_FIELD_TYPES.string) {
121
+ // Use ordinal bins for string columns, as d3 could potentially generate invalid numeric bins, and crash
122
+ return (0, _utils.histogramFromOrdinal)(ordinalDomain, dataset.allIndexes, fieldValueAccessor);
123
+ }
117
124
  if (aggregatedBins) {
118
125
  return (0, _utils.histogramFromValues)(Object.values(aggregatedBins).map(function (bin) {
119
126
  return bin.i;
@@ -122,7 +129,7 @@ function ColorScaleSelectorFactory(ColorBreaksPanel) {
122
129
  });
123
130
  }
124
131
  return columnStats !== null && columnStats !== void 0 && columnStats.bins ? columnStats === null || columnStats === void 0 ? void 0 : columnStats.bins : (0, _utils.histogramFromValues)(dataset.allIndexes, HISTOGRAM_BINS, fieldValueAccessor);
125
- }, [aggregatedBins, columnStats, dataset, fieldValueAccessor]);
132
+ }, [aggregatedBins, columnStats, dataset, fieldValueAccessor, field === null || field === void 0 ? void 0 : field.type, ordinalDomain]);
126
133
  var histogramDomain = (0, _react.useMemo)(function () {
127
134
  return (0, _utils.getHistogramDomain)({
128
135
  aggregatedBins: aggregatedBins,
@@ -131,9 +138,6 @@ function ColorScaleSelectorFactory(ColorBreaksPanel) {
131
138
  fieldValueAccessor: fieldValueAccessor
132
139
  });
133
140
  }, [dataset, fieldValueAccessor, aggregatedBins, columnStats]);
134
- var ordinalDomain = (0, _react.useMemo)(function () {
135
- return layer.config[layer.visualChannels[channelKey].domain] || [];
136
- }, [channelKey, layer.config, layer.visualChannels]);
137
141
  var isFiltered = aggregatedBins ? false : dataset.filteredIndexForDomain.length !== dataset.allIndexes.length;
138
142
 
139
143
  // get filteredBins (not apply to aggregate layer)
@@ -141,13 +145,16 @@ function ColorScaleSelectorFactory(ColorBreaksPanel) {
141
145
  if (!isFiltered) {
142
146
  return allBins;
143
147
  }
144
- // get threholds
148
+ if ((field === null || field === void 0 ? void 0 : field.type) === _constants.ALL_FIELD_TYPES.string) {
149
+ return (0, _utils.histogramFromOrdinal)(ordinalDomain, dataset.filteredIndexForDomain, fieldValueAccessor);
150
+ }
151
+ // numeric thresholds
145
152
  var filterEmptyBins = false;
146
- var threholds = allBins.map(function (b) {
153
+ var thresholds = allBins.map(function (b) {
147
154
  return b.x0;
148
155
  });
149
- return (0, _utils.histogramFromThreshold)(threholds, dataset.filteredIndexForDomain, fieldValueAccessor, filterEmptyBins);
150
- }, [dataset, fieldValueAccessor, allBins, isFiltered]);
156
+ return (0, _utils.histogramFromThreshold)(thresholds, dataset.filteredIndexForDomain, fieldValueAccessor, filterEmptyBins);
157
+ }, [dataset, fieldValueAccessor, allBins, isFiltered, field === null || field === void 0 ? void 0 : field.type, ordinalDomain]);
151
158
  var onSelectScale = (0, _react.useCallback)(function (val) {
152
159
  // highlight selected option
153
160
  if (!val || isEditingColorBreaks) return;
@@ -233,4 +240,4 @@ function ColorScaleSelectorFactory(ColorBreaksPanel) {
233
240
  return ColorScaleSelector;
234
241
  }
235
242
  var _default = exports["default"] = ColorScaleSelectorFactory;
236
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfY29uc3RhbnRzIiwiX3V0aWxzIiwiX2NvbG9yQnJlYWtzUGFuZWwiLCJfZHJvcGRvd25TZWxlY3QiLCJfYWNjZXNzb3IiLCJfZHJvcGRvd25MaXN0IiwiX2xhenlUaXBweSIsIl90eXBlYWhlYWQiLCJfZXhjbHVkZWQiLCJfZXhjbHVkZWQyIiwiX3RlbXBsYXRlT2JqZWN0IiwiX3RlbXBsYXRlT2JqZWN0MiIsIl90ZW1wbGF0ZU9iamVjdDMiLCJfdGVtcGxhdGVPYmplY3Q0IiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0IiwiSElTVE9HUkFNX0JJTlMiLCJEcm9wZG93blByb3BDb250ZXh0IiwiUmVhY3QiLCJjcmVhdGVDb250ZXh0IiwiUE9QUEVSX09QVElPTlMiLCJtb2RpZmllcnMiLCJuYW1lIiwib3B0aW9ucyIsIm9mZnNldCIsIkRyb3Bkb3duQm90dG9tIiwic3R5bGVkIiwiZGl2IiwiX3RhZ2dlZFRlbXBsYXRlTGl0ZXJhbDIiLCJwcm9wcyIsImxpZ2h0IiwidGhlbWUiLCJkcm9wZG93bkxpc3RCb3JkZXJUb3BMVCIsImRyb3Bkb3duTGlzdEJvcmRlclRvcCIsIlN0eWxlZFNjYWxlU2VsZWN0RHJvcGRvd24iLCJkcm9wZG93bkxpc3RTaGFkb3ciLCJEcm9wZG93bldyYXBwZXIiLCJkcm9wZG93bldyYXBwZXJaIiwiZHJvcGRvd25XYXBwZXJNYXJnaW4iLCJTdHlsZWRDb2xvclNjYWxlU2VsZWN0b3IiLCJoaWRlVGlwcHkiLCJ0aXBweUluc3RhbmNlIiwiaGlkZSIsIkNvbG9yU2NhbGVTZWxlY3RvckZhY3RvcnkiLCJkZXBzIiwiQ29sb3JCcmVha3NQYW5lbEZhY3RvcnkiLCJDb2xvckJyZWFrc1BhbmVsIiwiQ29sb3JTY2FsZVNlbGVjdERyb3Bkb3duIiwiY3JlYXRlRWxlbWVudCIsIkNvbnN1bWVyIiwiY29udGV4dCIsIkNvbG9yU2NhbGVTZWxlY3RvciIsIl9yZWYiLCJfY29sb3JVSUNvbmZpZyRjb2xvclIiLCJfZmllbGQkZmlsdGVyUHJvcHMiLCJsYXllciIsImZpZWxkIiwiZGF0YXNldCIsIm9uU2VsZWN0Iiwic2NhbGVUeXBlIiwiZG9tYWluIiwiYWdncmVnYXRlZEJpbnMiLCJyYW5nZSIsInNldENvbG9yVUkiLCJjb2xvclVJQ29uZmlnIiwiY2hhbm5lbEtleSIsImRyb3Bkb3duU2VsZWN0UHJvcHMiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMyIiwiZGlzcGxheU9wdGlvbiIsIkFjY2Vzc29yIiwiZ2VuZXJhdGVPcHRpb25Ub1N0cmluZ0ZvciIsImdldE9wdGlvblZhbHVlIiwidXNlTWVtbyIsIl91c2VTdGF0ZSIsInVzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5MiIsInNldFRpcHB5SW5zdGFuY2UiLCJpc0VkaXRpbmdDb2xvckJyZWFrcyIsImNvbG9yUmFuZ2VDb25maWciLCJjdXN0b21CcmVha3MiLCJjb2xvclNjYWxlIiwiZ2V0TGF5ZXJDb2xvclNjYWxlIiwiY29sb3JCcmVha3MiLCJfZmllbGQkdHlwZSIsImdldExlZ2VuZE9mU2NhbGUiLCJzY2FsZSIsImJ5Wm9vbSIsImxlbmd0aCIsImZpZWxkVHlwZSIsInR5cGUiLCJBTExfRklFTERfVFlQRVMiLCJyZWFsIiwiY29sdW1uU3RhdHMiLCJmaWx0ZXJQcm9wcyIsImZpZWxkVmFsdWVBY2Nlc3NvciIsImlkeCIsImdldFZhbHVlIiwiZGF0YUNvbnRhaW5lciIsInJvd0FzQXJyYXkiLCJhbGxCaW5zIiwiaGlzdG9ncmFtRnJvbVZhbHVlcyIsInZhbHVlcyIsIm1hcCIsImJpbiIsInZhbHVlIiwiYmlucyIsImFsbEluZGV4ZXMiLCJoaXN0b2dyYW1Eb21haW4iLCJnZXRIaXN0b2dyYW1Eb21haW4iLCJvcmRpbmFsRG9tYWluIiwiY29uZmlnIiwidmlzdWFsQ2hhbm5lbHMiLCJpc0ZpbHRlcmVkIiwiZmlsdGVyZWRJbmRleEZvckRvbWFpbiIsImZpbHRlcmVkQmlucyIsImZpbHRlckVtcHR5QmlucyIsInRocmVob2xkcyIsImIiLCJ4MCIsImhpc3RvZ3JhbUZyb21UaHJlc2hvbGQiLCJvblNlbGVjdFNjYWxlIiwidXNlQ2FsbGJhY2siLCJ2YWwiLCJzZWxlY3RlZFNjYWxlIiwiU0NBTEVfVFlQRVMiLCJjdXN0b20iLCJjdXN0b21QYWxldHRlIiwiaW5pdEN1c3RvbVBhbGV0dGVCeUN1c3RvbVNjYWxlIiwic2hvd0NvbG9yQ2hhcnQiLCJoYXNDb2xvck1hcCIsImN1c3RvbU9yZGluYWwiLCJfIiwiY29sb3JNYXAiLCJuZXdSYW5nZSIsIm9uQXBwbHkiLCJvbkNhbmNlbCIsImlzQ3VzdG9tQnJlYWtzIiwiUHJvdmlkZXIiLCJjb2xvckZpZWxkIiwib25TY2FsZUNoYW5nZSIsInRyaWdnZXIiLCJwbGFjZW1lbnQiLCJhcHBlbmRUbyIsImludGVyYWN0aXZlIiwiaGlkZU9uQ2xpY2siLCJvbkNyZWF0ZSIsInBvcHBlck9wdGlvbnMiLCJyZW5kZXIiLCJhdHRycyIsImRpc2FibGVkIiwiX2V4dGVuZHMyIiwib25PcHRpb25TZWxlY3RlZCIsImN1c3RvbUxpc3RDb21wb25lbnQiLCJzZWFyY2hhYmxlIiwic2hvd09wdGlvbnNXaGVuRW1wdHkiLCJjbGFzc05hbWUiLCJzZWxlY3RlZEl0ZW1zIiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NpZGUtcGFuZWwvbGF5ZXItcGFuZWwvY29sb3Itc2NhbGUtc2VsZWN0b3IudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBSZWFjdCwge3VzZUNhbGxiYWNrLCB1c2VNZW1vLCB1c2VTdGF0ZX0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5cbmltcG9ydCB7QUxMX0ZJRUxEX1RZUEVTLCBTQ0FMRV9UWVBFU30gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuaW1wb3J0IHtBZ2dyZWdhdGVkQmluLCBMYXllciwgVmlzdWFsQ2hhbm5lbERvbWFpbn0gZnJvbSAnQGtlcGxlci5nbC9sYXllcnMnO1xuaW1wb3J0IHtLZXBsZXJUYWJsZX0gZnJvbSAnQGtlcGxlci5nbC90YWJsZSc7XG5pbXBvcnQge0NvbG9yUmFuZ2UsIENvbG9yVUksIEZpZWxkfSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcbmltcG9ydCB7XG4gIGdldExheWVyQ29sb3JTY2FsZSxcbiAgZ2V0TGVnZW5kT2ZTY2FsZSxcbiAgaW5pdEN1c3RvbVBhbGV0dGVCeUN1c3RvbVNjYWxlLFxuICBoaXN0b2dyYW1Gcm9tVmFsdWVzLFxuICBoaXN0b2dyYW1Gcm9tVGhyZXNob2xkLFxuICBnZXRIaXN0b2dyYW1Eb21haW4sXG4gIGhhc0NvbG9yTWFwXG59IGZyb20gJ0BrZXBsZXIuZ2wvdXRpbHMnO1xuXG5pbXBvcnQgQ29sb3JCcmVha3NQYW5lbEZhY3RvcnksIHtDb2xvckJyZWFrc1BhbmVsUHJvcHN9IGZyb20gJy4vY29sb3ItYnJlYWtzLXBhbmVsJztcbmltcG9ydCB7U2V0Q29sb3JVSUZ1bmN9IGZyb20gJy4vY3VzdG9tLXBhbGV0dGUnO1xuaW1wb3J0IERyb3Bkb3duU2VsZWN0IGZyb20gJy4uLy4uL2NvbW1vbi9pdGVtLXNlbGVjdG9yL2Ryb3Bkb3duLXNlbGVjdCc7XG5pbXBvcnQgQWNjZXNzb3IgZnJvbSAnLi4vLi4vY29tbW9uL2l0ZW0tc2VsZWN0b3IvYWNjZXNzb3InO1xuaW1wb3J0IERyb3Bkb3duTGlzdCBmcm9tICcuLi8uLi9jb21tb24vaXRlbS1zZWxlY3Rvci9kcm9wZG93bi1saXN0JztcbmltcG9ydCBMYXp5VGlwcHkgZnJvbSAnLi4vLi4vbWFwL2xhenktdGlwcHknO1xuaW1wb3J0IFR5cGVhaGVhZCBmcm9tICcuLi8uLi9jb21tb24vaXRlbS1zZWxlY3Rvci90eXBlYWhlYWQnO1xuXG50eXBlIFRpcHB5SW5zdGFuY2UgPSBhbnk7IC8vICd0aXBweS1qcydcblxuY29uc3QgSElTVE9HUkFNX0JJTlMgPSAzMDtcblxuZXhwb3J0IHR5cGUgU2NhbGVPcHRpb24gPSB7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIHZhbHVlOiBzdHJpbmc7XG59O1xuZXhwb3J0IHR5cGUgT25TZWxlY3RGdW5jID0gKHY6IHN0cmluZywgdmlzQ29uZmc/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB2b2lkO1xuXG5leHBvcnQgdHlwZSBDb250ZXh0UHJvcHMgPSBDb2xvckJyZWFrc1BhbmVsUHJvcHM7XG5cbmV4cG9ydCB0eXBlIENvbG9yU2NhbGVTZWxlY3RvclByb3BzID0ge1xuICBsYXllcjogTGF5ZXI7XG4gIGZpZWxkOiBGaWVsZDtcbiAgZGF0YXNldDogS2VwbGVyVGFibGU7XG4gIHNjYWxlVHlwZTogc3RyaW5nO1xuICBkb21haW46IFZpc3VhbENoYW5uZWxEb21haW47XG4gIHJhbmdlOiBDb2xvclJhbmdlO1xuICBvblNlbGVjdDogT25TZWxlY3RGdW5jO1xuICBzZXRDb2xvclVJOiBTZXRDb2xvclVJRnVuYztcbiAgY29sb3JVSUNvbmZpZzogQ29sb3JVSTtcbiAgb3B0aW9uczogU2NhbGVPcHRpb25bXTtcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICBzZWxlY3RlZEl0ZW1zOiBTY2FsZU9wdGlvbltdO1xuICBtdWx0aVNlbGVjdDogYm9vbGVhbjtcbiAgc2VhcmNoYWJsZTogYm9vbGVhbjtcbiAgZGlzcGxheU9wdGlvbjogc3RyaW5nO1xuICBnZXRPcHRpb25WYWx1ZTogc3RyaW5nO1xuICBhZ2dyZWdhdGVkQmlucz86IEFnZ3JlZ2F0ZWRCaW5bXTtcbiAgY2hhbm5lbEtleTogc3RyaW5nO1xufTtcblxuY29uc3QgRHJvcGRvd25Qcm9wQ29udGV4dCA9IFJlYWN0LmNyZWF0ZUNvbnRleHQoe30pO1xuY29uc3QgUE9QUEVSX09QVElPTlMgPSB7XG4gIG1vZGlmaWVyczogW1xuICAgIC8vIHplcm8gb2Zmc2V0cyBzaW5jZSB0aGV5IGFyZSBhbHJlYWR5IGFkZGVkIGluIFZlcnRpY2FsVG9vbGJhclxuICAgIHtuYW1lOiAnb2Zmc2V0Jywgb3B0aW9uczoge29mZnNldDogWzAsIDBdfX1cbiAgXVxufTtcblxuY29uc3QgRHJvcGRvd25Cb3R0b20gPSBzdHlsZWQuZGl2PHtsaWdodD86IGJvb2xlYW59PmBcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkXG4gICAgJHtwcm9wcyA9PlxuICAgICAgcHJvcHMubGlnaHQgPyBwcm9wcy50aGVtZS5kcm9wZG93bkxpc3RCb3JkZXJUb3BMVCA6IHByb3BzLnRoZW1lLmRyb3Bkb3duTGlzdEJvcmRlclRvcH07XG5gO1xuXG5jb25zdCBTdHlsZWRTY2FsZVNlbGVjdERyb3Bkb3duID0gc3R5bGVkLmRpdmBcbiAgYm94LXNoYWRvdzogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5kcm9wZG93bkxpc3RTaGFkb3d9O1xuICAubGlzdC1zZWxlY3RvciB7XG4gICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICBib3JkZXItdG9wOiAwO1xuICB9XG4gIC5saXN0X19pdGVtIHtcbiAgICBwYWRkaW5nOiA0cHggOXB4O1xuICB9XG5gO1xuY29uc3QgRHJvcGRvd25XcmFwcGVyID0gc3R5bGVkLmRpdmBcbiAgYm9yZGVyOiAwO1xuICB3aWR0aDogMTAwJTtcbiAgbGVmdDogMDtcbiAgei1pbmRleDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5kcm9wZG93bldyYXBwZXJafTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBtYXJnaW4tdG9wOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmRyb3Bkb3duV2FwcGVyTWFyZ2lufXB4O1xuYDtcblxuY29uc3QgU3R5bGVkQ29sb3JTY2FsZVNlbGVjdG9yID0gc3R5bGVkLmRpdmBcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAudHlwZWFoZWFkIHtcbiAgICAvLyBhZGRzIHBhZGRpbmcgdG8gYm90dG9tIG9mIGRyb3Bkb3duXG4gICAgbWFyZ2luLWJvdHRvbTogNDBweDtcbiAgfVxuICBbZGF0YS10aXBweS1yb290XSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cbmA7XG5cbmZ1bmN0aW9uIGhpZGVUaXBweSh0aXBweUluc3RhbmNlKSB7XG4gIGlmICh0aXBweUluc3RhbmNlKSB7XG4gICAgdGlwcHlJbnN0YW5jZS5oaWRlKCk7XG4gIH1cbn1cbkNvbG9yU2NhbGVTZWxlY3RvckZhY3RvcnkuZGVwcyA9IFtDb2xvckJyZWFrc1BhbmVsRmFjdG9yeV07XG5cbmZ1bmN0aW9uIENvbG9yU2NhbGVTZWxlY3RvckZhY3RvcnkoXG4gIENvbG9yQnJlYWtzUGFuZWw6IFJldHVyblR5cGU8dHlwZW9mIENvbG9yQnJlYWtzUGFuZWxGYWN0b3J5PlxuKTogUmVhY3QuRkM8Q29sb3JTY2FsZVNlbGVjdG9yUHJvcHM+IHtcbiAgY29uc3QgQ29sb3JTY2FsZVNlbGVjdERyb3Bkb3duID0gcHJvcHMgPT4gKFxuICAgIDxTdHlsZWRTY2FsZVNlbGVjdERyb3Bkb3duPlxuICAgICAgPERyb3Bkb3duTGlzdCB7Li4ucHJvcHN9IC8+XG4gICAgICA8RHJvcGRvd25Qcm9wQ29udGV4dC5Db25zdW1lcj5cbiAgICAgICAgeyhjb250ZXh0OiBhbnkpID0+IChcbiAgICAgICAgICA8RHJvcGRvd25Cb3R0b20+XG4gICAgICAgICAgICA8Q29sb3JCcmVha3NQYW5lbCB7Li4uY29udGV4dH0gLz5cbiAgICAgICAgICA8L0Ryb3Bkb3duQm90dG9tPlxuICAgICAgICApfVxuICAgICAgPC9Ecm9wZG93blByb3BDb250ZXh0LkNvbnN1bWVyPlxuICAgIDwvU3R5bGVkU2NhbGVTZWxlY3REcm9wZG93bj5cbiAgKTtcblxuICBjb25zdCBDb2xvclNjYWxlU2VsZWN0b3I6IFJlYWN0LkZDPENvbG9yU2NhbGVTZWxlY3RvclByb3BzPiA9ICh7XG4gICAgbGF5ZXIsXG4gICAgZmllbGQsXG4gICAgZGF0YXNldCxcbiAgICBvblNlbGVjdCxcbiAgICBzY2FsZVR5cGUsXG4gICAgZG9tYWluLFxuICAgIGFnZ3JlZ2F0ZWRCaW5zLFxuICAgIHJhbmdlLFxuICAgIHNldENvbG9yVUksXG4gICAgY29sb3JVSUNvbmZpZyxcbiAgICBjaGFubmVsS2V5LFxuICAgIC4uLmRyb3Bkb3duU2VsZWN0UHJvcHNcbiAgfSkgPT4ge1xuICAgIGNvbnN0IGRpc3BsYXlPcHRpb24gPSBBY2Nlc3Nvci5nZW5lcmF0ZU9wdGlvblRvU3RyaW5nRm9yKGRyb3Bkb3duU2VsZWN0UHJvcHMuZGlzcGxheU9wdGlvbik7XG4gICAgY29uc3QgZ2V0T3B0aW9uVmFsdWUgPSB1c2VNZW1vKFxuICAgICAgKCkgPT4gQWNjZXNzb3IuZ2VuZXJhdGVPcHRpb25Ub1N0cmluZ0Zvcihkcm9wZG93blNlbGVjdFByb3BzLmdldE9wdGlvblZhbHVlKSxcbiAgICAgIFtkcm9wZG93blNlbGVjdFByb3BzLmdldE9wdGlvblZhbHVlXVxuICAgICk7XG4gICAgY29uc3QgW3RpcHB5SW5zdGFuY2UsIHNldFRpcHB5SW5zdGFuY2VdID0gdXNlU3RhdGU8VGlwcHlJbnN0YW5jZT4oKTtcbiAgICBjb25zdCBpc0VkaXRpbmdDb2xvckJyZWFrcyA9IGNvbG9yVUlDb25maWc/LmNvbG9yUmFuZ2VDb25maWc/LmN1c3RvbUJyZWFrcztcbiAgICBjb25zdCBjb2xvclNjYWxlID0gdXNlTWVtbyhcbiAgICAgICgpID0+XG4gICAgICAgIGdldExheWVyQ29sb3JTY2FsZSh7XG4gICAgICAgICAgcmFuZ2UsXG4gICAgICAgICAgZG9tYWluLFxuICAgICAgICAgIHNjYWxlVHlwZSxcbiAgICAgICAgICBsYXllclxuICAgICAgICB9KSxcbiAgICAgIFtyYW5nZSwgZG9tYWluLCBzY2FsZVR5cGUsIGxheWVyXVxuICAgICk7XG5cbiAgICBjb25zdCBjb2xvckJyZWFrcyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgcmV0dXJuIGNvbG9yU2NhbGVcbiAgICAgICAgPyBnZXRMZWdlbmRPZlNjYWxlKHtcbiAgICAgICAgICAgIHNjYWxlOiBjb2xvclNjYWxlLmJ5Wm9vbSAmJiBkb21haW4gPyBjb2xvclNjYWxlKGRvbWFpbj8ubGVuZ3RoIC0gMSkgOiBjb2xvclNjYWxlLFxuICAgICAgICAgICAgc2NhbGVUeXBlLFxuICAgICAgICAgICAgZmllbGRUeXBlOiBmaWVsZD8udHlwZSA/PyBBTExfRklFTERfVFlQRVMucmVhbFxuICAgICAgICAgIH0pXG4gICAgICAgIDogbnVsbDtcbiAgICB9LCBbY29sb3JTY2FsZSwgc2NhbGVUeXBlLCBmaWVsZD8udHlwZSwgZG9tYWluXSk7XG5cbiAgICBjb25zdCBjb2x1bW5TdGF0cyA9IGZpZWxkPy5maWx0ZXJQcm9wcz8uY29sdW1uU3RhdHM7XG5cbiAgICBjb25zdCBmaWVsZFZhbHVlQWNjZXNzb3IgPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgIHJldHVybiBmaWVsZFxuICAgICAgICA/IGlkeCA9PiBkYXRhc2V0LmdldFZhbHVlKGZpZWxkLm5hbWUsIGlkeClcbiAgICAgICAgOiBpZHggPT4gZGF0YXNldC5kYXRhQ29udGFpbmVyLnJvd0FzQXJyYXkoaWR4KTtcbiAgICB9LCBbZGF0YXNldCwgZmllbGRdKTtcblxuICAgIC8vIGFnZ3JlZ2F0ZWRCaW5zIHNob3VsZCBiZSB0aGUgcmF3IGRhdGFcbiAgICBjb25zdCBhbGxCaW5zID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICBpZiAoYWdncmVnYXRlZEJpbnMpIHtcbiAgICAgICAgcmV0dXJuIGhpc3RvZ3JhbUZyb21WYWx1ZXMoXG4gICAgICAgICAgT2JqZWN0LnZhbHVlcyhhZ2dyZWdhdGVkQmlucykubWFwKGJpbiA9PiBiaW4uaSksXG4gICAgICAgICAgSElTVE9HUkFNX0JJTlMsXG4gICAgICAgICAgaWR4ID0+IGFnZ3JlZ2F0ZWRCaW5zW2lkeF0udmFsdWVcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBjb2x1bW5TdGF0cz8uYmluc1xuICAgICAgICA/IGNvbHVtblN0YXRzPy5iaW5zXG4gICAgICAgIDogaGlzdG9ncmFtRnJvbVZhbHVlcyhkYXRhc2V0LmFsbEluZGV4ZXMsIEhJU1RPR1JBTV9CSU5TLCBmaWVsZFZhbHVlQWNjZXNzb3IpO1xuICAgIH0sIFthZ2dyZWdhdGVkQmlucywgY29sdW1uU3RhdHMsIGRhdGFzZXQsIGZpZWxkVmFsdWVBY2Nlc3Nvcl0pO1xuXG4gICAgY29uc3QgaGlzdG9ncmFtRG9tYWluID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICByZXR1cm4gZ2V0SGlzdG9ncmFtRG9tYWluKHthZ2dyZWdhdGVkQmlucywgY29sdW1uU3RhdHMsIGRhdGFzZXQsIGZpZWxkVmFsdWVBY2Nlc3Nvcn0pO1xuICAgIH0sIFtkYXRhc2V0LCBmaWVsZFZhbHVlQWNjZXNzb3IsIGFnZ3JlZ2F0ZWRCaW5zLCBjb2x1bW5TdGF0c10pO1xuXG4gICAgY29uc3Qgb3JkaW5hbERvbWFpbiA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgcmV0dXJuIGxheWVyLmNvbmZpZ1tsYXllci52aXN1YWxDaGFubmVsc1tjaGFubmVsS2V5XS5kb21haW5dIHx8IFtdO1xuICAgIH0sIFtjaGFubmVsS2V5LCBsYXllci5jb25maWcsIGxheWVyLnZpc3VhbENoYW5uZWxzXSk7XG5cbiAgICBjb25zdCBpc0ZpbHRlcmVkID0gYWdncmVnYXRlZEJpbnNcbiAgICAgID8gZmFsc2VcbiAgICAgIDogZGF0YXNldC5maWx0ZXJlZEluZGV4Rm9yRG9tYWluLmxlbmd0aCAhPT0gZGF0YXNldC5hbGxJbmRleGVzLmxlbmd0aDtcblxuICAgIC8vIGdldCBmaWx0ZXJlZEJpbnMgKG5vdCBhcHBseSB0byBhZ2dyZWdhdGUgbGF5ZXIpXG4gICAgY29uc3QgZmlsdGVyZWRCaW5zID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICBpZiAoIWlzRmlsdGVyZWQpIHtcbiAgICAgICAgcmV0dXJuIGFsbEJpbnM7XG4gICAgICB9XG4gICAgICAvLyBnZXQgdGhyZWhvbGRzXG4gICAgICBjb25zdCBmaWx0ZXJFbXB0eUJpbnMgPSBmYWxzZTtcbiAgICAgIGNvbnN0IHRocmVob2xkcyA9IGFsbEJpbnMubWFwKGIgPT4gYi54MCk7XG4gICAgICByZXR1cm4gaGlzdG9ncmFtRnJvbVRocmVzaG9sZChcbiAgICAgICAgdGhyZWhvbGRzLFxuICAgICAgICBkYXRhc2V0LmZpbHRlcmVkSW5kZXhGb3JEb21haW4sXG4gICAgICAgIGZpZWxkVmFsdWVBY2Nlc3NvcixcbiAgICAgICAgZmlsdGVyRW1wdHlCaW5zXG4gICAgICApO1xuICAgIH0sIFtkYXRhc2V0LCBmaWVsZFZhbHVlQWNjZXNzb3IsIGFsbEJpbnMsIGlzRmlsdGVyZWRdKTtcblxuICAgIGNvbnN0IG9uU2VsZWN0U2NhbGUgPSB1c2VDYWxsYmFjayhcbiAgICAgIHZhbCA9PiB7XG4gICAgICAgIC8vIGhpZ2hsaWdodCBzZWxlY3RlZCBvcHRpb25cbiAgICAgICAgaWYgKCF2YWwgfHwgaXNFZGl0aW5nQ29sb3JCcmVha3MpIHJldHVybjtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRTY2FsZSA9IGdldE9wdGlvblZhbHVlKHZhbCk7XG4gICAgICAgIGlmIChzZWxlY3RlZFNjYWxlID09PSBTQ0FMRV9UWVBFUy5jdXN0b20pIHtcbiAgICAgICAgICBjb25zdCBjdXN0b21QYWxldHRlID0gaW5pdEN1c3RvbVBhbGV0dGVCeUN1c3RvbVNjYWxlKHtcbiAgICAgICAgICAgIHNjYWxlOiBzZWxlY3RlZFNjYWxlLFxuICAgICAgICAgICAgZmllbGQsXG4gICAgICAgICAgICByYW5nZSxcbiAgICAgICAgICAgIGNvbG9yQnJlYWtzXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgc2V0Q29sb3JVSSh7XG4gICAgICAgICAgICBzaG93Q29sb3JDaGFydDogdHJ1ZSxcbiAgICAgICAgICAgIGNvbG9yUmFuZ2VDb25maWc6IHtcbiAgICAgICAgICAgICAgY3VzdG9tQnJlYWtzOiB0cnVlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY3VzdG9tUGFsZXR0ZVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIG9uU2VsZWN0KHNlbGVjdGVkU2NhbGUsIGN1c3RvbVBhbGV0dGUpO1xuICAgICAgICB9IGVsc2UgaWYgKGhhc0NvbG9yTWFwKHJhbmdlKSAmJiBzZWxlY3RlZFNjYWxlICE9PSBTQ0FMRV9UWVBFUy5jdXN0b21PcmRpbmFsKSB7XG4gICAgICAgICAgLy8gbm90IGN1c3RvbVxuICAgICAgICAgIC8vIHJlbW92ZSBjb2xvck1hcFxuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xuICAgICAgICAgIGNvbnN0IHtjb2xvck1hcDogXywgLi4ubmV3UmFuZ2V9ID0gcmFuZ2U7XG4gICAgICAgICAgb25TZWxlY3Qoc2VsZWN0ZWRTY2FsZSwgbmV3UmFuZ2UpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG9uU2VsZWN0KHNlbGVjdGVkU2NhbGUpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgW2lzRWRpdGluZ0NvbG9yQnJlYWtzLCBmaWVsZCwgc2V0Q29sb3JVSSwgb25TZWxlY3QsIHJhbmdlLCBnZXRPcHRpb25WYWx1ZSwgY29sb3JCcmVha3NdXG4gICAgKTtcblxuICAgIGNvbnN0IG9uQXBwbHkgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICBvblNlbGVjdChzY2FsZVR5cGUsIGNvbG9yVUlDb25maWcuY3VzdG9tUGFsZXR0ZSk7XG4gICAgICBoaWRlVGlwcHkodGlwcHlJbnN0YW5jZSk7XG4gICAgfSwgW29uU2VsZWN0LCBjb2xvclVJQ29uZmlnLmN1c3RvbVBhbGV0dGUsIHRpcHB5SW5zdGFuY2UsIHNjYWxlVHlwZV0pO1xuXG4gICAgY29uc3Qgb25DYW5jZWwgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICBoaWRlVGlwcHkodGlwcHlJbnN0YW5jZSk7XG4gICAgfSwgW3RpcHB5SW5zdGFuY2VdKTtcblxuICAgIGNvbnN0IGlzQ3VzdG9tQnJlYWtzID1cbiAgICAgIHNjYWxlVHlwZSA9PT0gU0NBTEVfVFlQRVMuY3VzdG9tIHx8IHNjYWxlVHlwZSA9PT0gU0NBTEVfVFlQRVMuY3VzdG9tT3JkaW5hbDtcblxuICAgIHJldHVybiAoXG4gICAgICA8RHJvcGRvd25Qcm9wQ29udGV4dC5Qcm92aWRlclxuICAgICAgICB2YWx1ZT17e1xuICAgICAgICAgIHNldENvbG9yVUksXG4gICAgICAgICAgY29sb3JGaWVsZDogZmllbGQsXG4gICAgICAgICAgZGF0YXNldCxcbiAgICAgICAgICBjb2xvclVJQ29uZmlnLFxuICAgICAgICAgIGNvbG9yQnJlYWtzLFxuICAgICAgICAgIGlzQ3VzdG9tQnJlYWtzLFxuICAgICAgICAgIGFsbEJpbnMsXG4gICAgICAgICAgZmlsdGVyZWRCaW5zLFxuICAgICAgICAgIGlzRmlsdGVyZWQsXG4gICAgICAgICAgaGlzdG9ncmFtRG9tYWluLFxuICAgICAgICAgIG9yZGluYWxEb21haW4sXG4gICAgICAgICAgb25TY2FsZUNoYW5nZTogb25TZWxlY3QsXG4gICAgICAgICAgb25BcHBseSxcbiAgICAgICAgICBvbkNhbmNlbFxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICA8U3R5bGVkQ29sb3JTY2FsZVNlbGVjdG9yPlxuICAgICAgICAgIDxMYXp5VGlwcHlcbiAgICAgICAgICAgIHRyaWdnZXI9XCJjbGlja1wiXG4gICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tc3RhcnRcIlxuICAgICAgICAgICAgYXBwZW5kVG89XCJwYXJlbnRcIlxuICAgICAgICAgICAgaW50ZXJhY3RpdmU9e3RydWV9XG4gICAgICAgICAgICBoaWRlT25DbGljaz17IWlzRWRpdGluZ0NvbG9yQnJlYWtzfVxuICAgICAgICAgICAgb25DcmVhdGU9e3NldFRpcHB5SW5zdGFuY2V9XG4gICAgICAgICAgICBwb3BwZXJPcHRpb25zPXtQT1BQRVJfT1BUSU9OU31cbiAgICAgICAgICAgIHJlbmRlcj17YXR0cnMgPT4gKFxuICAgICAgICAgICAgICA8RHJvcGRvd25XcmFwcGVyIHsuLi5hdHRyc30+XG4gICAgICAgICAgICAgICAgey8qIEB0cy1pZ25vcmUqL31cbiAgICAgICAgICAgICAgICB7IWRyb3Bkb3duU2VsZWN0UHJvcHMuZGlzYWJsZWQgJiYgKFxuICAgICAgICAgICAgICAgICAgPFR5cGVhaGVhZFxuICAgICAgICAgICAgICAgICAgICB7Li4uZHJvcGRvd25TZWxlY3RQcm9wc31cbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheU9wdGlvbj17ZGlzcGxheU9wdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgICBnZXRPcHRpb25WYWx1ZT17Z2V0T3B0aW9uVmFsdWV9XG4gICAgICAgICAgICAgICAgICAgIG9uT3B0aW9uU2VsZWN0ZWQ9e29uU2VsZWN0U2NhbGV9XG4gICAgICAgICAgICAgICAgICAgIGN1c3RvbUxpc3RDb21wb25lbnQ9e0NvbG9yU2NhbGVTZWxlY3REcm9wZG93bn1cbiAgICAgICAgICAgICAgICAgICAgc2VhcmNoYWJsZT17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgIHNob3dPcHRpb25zV2hlbkVtcHR5XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIDwvRHJvcGRvd25XcmFwcGVyPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImRyb3Bkb3duLXNlbGVjdFwiPlxuICAgICAgICAgICAgICB7LyogQHRzLWlnbm9yZSovfVxuICAgICAgICAgICAgICA8RHJvcGRvd25TZWxlY3RcbiAgICAgICAgICAgICAgICB7Li4uZHJvcGRvd25TZWxlY3RQcm9wc31cbiAgICAgICAgICAgICAgICBkaXNwbGF5T3B0aW9uPXtkaXNwbGF5T3B0aW9ufVxuICAgICAgICAgICAgICAgIHZhbHVlPXtkcm9wZG93blNlbGVjdFByb3BzLnNlbGVjdGVkSXRlbXNbMF19XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L0xhenlUaXBweT5cbiAgICAgICAgPC9TdHlsZWRDb2xvclNjYWxlU2VsZWN0b3I+XG4gICAgICA8L0Ryb3Bkb3duUHJvcENvbnRleHQuUHJvdmlkZXI+XG4gICAgKTtcbiAgfTtcbiAgcmV0dXJuIENvbG9yU2NhbGVTZWxlY3Rvcjtcbn1cbmV4cG9ydCBkZWZhdWx0IENvbG9yU2NhbGVTZWxlY3RvckZhY3Rvcnk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUdBLElBQUFBLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLGlCQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFFQSxJQUFBRyxVQUFBLEdBQUFILE9BQUE7QUFJQSxJQUFBSSxNQUFBLEdBQUFKLE9BQUE7QUFVQSxJQUFBSyxpQkFBQSxHQUFBSCxzQkFBQSxDQUFBRixPQUFBO0FBRUEsSUFBQU0sZUFBQSxHQUFBSixzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQU8sU0FBQSxHQUFBTCxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQVEsYUFBQSxHQUFBTixzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQVMsVUFBQSxHQUFBUCxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQVUsVUFBQSxHQUFBUixzQkFBQSxDQUFBRixPQUFBO0FBQTZELElBQUFXLFNBQUE7RUFBQUMsVUFBQTtBQUFBLElBQUFDLGVBQUEsRUFBQUMsZ0JBQUEsRUFBQUMsZ0JBQUEsRUFBQUMsZ0JBQUEsRUExQjdEO0FBQ0E7QUFBQSxTQUFBQyx5QkFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxtQkFBQUMsQ0FBQSxPQUFBRCxPQUFB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
243
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfY29uc3RhbnRzIiwiX3V0aWxzIiwiX2NvbG9yQnJlYWtzUGFuZWwiLCJfZHJvcGRvd25TZWxlY3QiLCJfYWNjZXNzb3IiLCJfZHJvcGRvd25MaXN0IiwiX2xhenlUaXBweSIsIl90eXBlYWhlYWQiLCJfZXhjbHVkZWQiLCJfZXhjbHVkZWQyIiwiX3RlbXBsYXRlT2JqZWN0IiwiX3RlbXBsYXRlT2JqZWN0MiIsIl90ZW1wbGF0ZU9iamVjdDMiLCJfdGVtcGxhdGVPYmplY3Q0IiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0IiwiSElTVE9HUkFNX0JJTlMiLCJEcm9wZG93blByb3BDb250ZXh0IiwiUmVhY3QiLCJjcmVhdGVDb250ZXh0IiwiUE9QUEVSX09QVElPTlMiLCJtb2RpZmllcnMiLCJuYW1lIiwib3B0aW9ucyIsIm9mZnNldCIsIkRyb3Bkb3duQm90dG9tIiwic3R5bGVkIiwiZGl2IiwiX3RhZ2dlZFRlbXBsYXRlTGl0ZXJhbDIiLCJwcm9wcyIsImxpZ2h0IiwidGhlbWUiLCJkcm9wZG93bkxpc3RCb3JkZXJUb3BMVCIsImRyb3Bkb3duTGlzdEJvcmRlclRvcCIsIlN0eWxlZFNjYWxlU2VsZWN0RHJvcGRvd24iLCJkcm9wZG93bkxpc3RTaGFkb3ciLCJEcm9wZG93bldyYXBwZXIiLCJkcm9wZG93bldyYXBwZXJaIiwiZHJvcGRvd25XYXBwZXJNYXJnaW4iLCJTdHlsZWRDb2xvclNjYWxlU2VsZWN0b3IiLCJoaWRlVGlwcHkiLCJ0aXBweUluc3RhbmNlIiwiaGlkZSIsIkNvbG9yU2NhbGVTZWxlY3RvckZhY3RvcnkiLCJkZXBzIiwiQ29sb3JCcmVha3NQYW5lbEZhY3RvcnkiLCJDb2xvckJyZWFrc1BhbmVsIiwiQ29sb3JTY2FsZVNlbGVjdERyb3Bkb3duIiwiY3JlYXRlRWxlbWVudCIsIkNvbnN1bWVyIiwiY29udGV4dCIsIkNvbG9yU2NhbGVTZWxlY3RvciIsIl9yZWYiLCJfY29sb3JVSUNvbmZpZyRjb2xvclIiLCJfZmllbGQkZmlsdGVyUHJvcHMiLCJsYXllciIsImZpZWxkIiwiZGF0YXNldCIsIm9uU2VsZWN0Iiwic2NhbGVUeXBlIiwiZG9tYWluIiwiYWdncmVnYXRlZEJpbnMiLCJyYW5nZSIsInNldENvbG9yVUkiLCJjb2xvclVJQ29uZmlnIiwiY2hhbm5lbEtleSIsImRyb3Bkb3duU2VsZWN0UHJvcHMiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMyIiwiZGlzcGxheU9wdGlvbiIsIkFjY2Vzc29yIiwiZ2VuZXJhdGVPcHRpb25Ub1N0cmluZ0ZvciIsImdldE9wdGlvblZhbHVlIiwidXNlTWVtbyIsIl91c2VTdGF0ZSIsInVzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5MiIsInNldFRpcHB5SW5zdGFuY2UiLCJpc0VkaXRpbmdDb2xvckJyZWFrcyIsImNvbG9yUmFuZ2VDb25maWciLCJjdXN0b21CcmVha3MiLCJjb2xvclNjYWxlIiwiZ2V0TGF5ZXJDb2xvclNjYWxlIiwiY29sb3JCcmVha3MiLCJfZmllbGQkdHlwZSIsImdldExlZ2VuZE9mU2NhbGUiLCJzY2FsZSIsImJ5Wm9vbSIsImxlbmd0aCIsImZpZWxkVHlwZSIsInR5cGUiLCJBTExfRklFTERfVFlQRVMiLCJyZWFsIiwiY29sdW1uU3RhdHMiLCJmaWx0ZXJQcm9wcyIsImZpZWxkVmFsdWVBY2Nlc3NvciIsImlkeCIsImdldFZhbHVlIiwiZGF0YUNvbnRhaW5lciIsInJvd0FzQXJyYXkiLCJvcmRpbmFsRG9tYWluIiwiY29uZmlnIiwidmlzdWFsQ2hhbm5lbHMiLCJhbGxCaW5zIiwic3RyaW5nIiwiaGlzdG9ncmFtRnJvbU9yZGluYWwiLCJhbGxJbmRleGVzIiwiaGlzdG9ncmFtRnJvbVZhbHVlcyIsInZhbHVlcyIsIm1hcCIsImJpbiIsInZhbHVlIiwiYmlucyIsImhpc3RvZ3JhbURvbWFpbiIsImdldEhpc3RvZ3JhbURvbWFpbiIsImlzRmlsdGVyZWQiLCJmaWx0ZXJlZEluZGV4Rm9yRG9tYWluIiwiZmlsdGVyZWRCaW5zIiwiZmlsdGVyRW1wdHlCaW5zIiwidGhyZXNob2xkcyIsImIiLCJ4MCIsImhpc3RvZ3JhbUZyb21UaHJlc2hvbGQiLCJvblNlbGVjdFNjYWxlIiwidXNlQ2FsbGJhY2siLCJ2YWwiLCJzZWxlY3RlZFNjYWxlIiwiU0NBTEVfVFlQRVMiLCJjdXN0b20iLCJjdXN0b21QYWxldHRlIiwiaW5pdEN1c3RvbVBhbGV0dGVCeUN1c3RvbVNjYWxlIiwic2hvd0NvbG9yQ2hhcnQiLCJoYXNDb2xvck1hcCIsImN1c3RvbU9yZGluYWwiLCJfIiwiY29sb3JNYXAiLCJuZXdSYW5nZSIsIm9uQXBwbHkiLCJvbkNhbmNlbCIsImlzQ3VzdG9tQnJlYWtzIiwiUHJvdmlkZXIiLCJjb2xvckZpZWxkIiwib25TY2FsZUNoYW5nZSIsInRyaWdnZXIiLCJwbGFjZW1lbnQiLCJhcHBlbmRUbyIsImludGVyYWN0aXZlIiwiaGlkZU9uQ2xpY2siLCJvbkNyZWF0ZSIsInBvcHBlck9wdGlvbnMiLCJyZW5kZXIiLCJhdHRycyIsImRpc2FibGVkIiwiX2V4dGVuZHMyIiwib25PcHRpb25TZWxlY3RlZCIsImN1c3RvbUxpc3RDb21wb25lbnQiLCJzZWFyY2hhYmxlIiwic2hvd09wdGlvbnNXaGVuRW1wdHkiLCJjbGFzc05hbWUiLCJzZWxlY3RlZEl0ZW1zIiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NpZGUtcGFuZWwvbGF5ZXItcGFuZWwvY29sb3Itc2NhbGUtc2VsZWN0b3IudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBSZWFjdCwge3VzZUNhbGxiYWNrLCB1c2VNZW1vLCB1c2VTdGF0ZX0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5cbmltcG9ydCB7QUxMX0ZJRUxEX1RZUEVTLCBTQ0FMRV9UWVBFU30gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuaW1wb3J0IHtBZ2dyZWdhdGVkQmluLCBMYXllciwgVmlzdWFsQ2hhbm5lbERvbWFpbn0gZnJvbSAnQGtlcGxlci5nbC9sYXllcnMnO1xuaW1wb3J0IHtLZXBsZXJUYWJsZX0gZnJvbSAnQGtlcGxlci5nbC90YWJsZSc7XG5pbXBvcnQge0NvbG9yUmFuZ2UsIENvbG9yVUksIEZpZWxkfSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcbmltcG9ydCB7XG4gIGdldExheWVyQ29sb3JTY2FsZSxcbiAgZ2V0TGVnZW5kT2ZTY2FsZSxcbiAgaW5pdEN1c3RvbVBhbGV0dGVCeUN1c3RvbVNjYWxlLFxuICBoaXN0b2dyYW1Gcm9tVmFsdWVzLFxuICBoaXN0b2dyYW1Gcm9tT3JkaW5hbCxcbiAgaGlzdG9ncmFtRnJvbVRocmVzaG9sZCxcbiAgZ2V0SGlzdG9ncmFtRG9tYWluLFxuICBoYXNDb2xvck1hcFxufSBmcm9tICdAa2VwbGVyLmdsL3V0aWxzJztcblxuaW1wb3J0IENvbG9yQnJlYWtzUGFuZWxGYWN0b3J5LCB7Q29sb3JCcmVha3NQYW5lbFByb3BzfSBmcm9tICcuL2NvbG9yLWJyZWFrcy1wYW5lbCc7XG5pbXBvcnQge1NldENvbG9yVUlGdW5jfSBmcm9tICcuL2N1c3RvbS1wYWxldHRlJztcbmltcG9ydCBEcm9wZG93blNlbGVjdCBmcm9tICcuLi8uLi9jb21tb24vaXRlbS1zZWxlY3Rvci9kcm9wZG93bi1zZWxlY3QnO1xuaW1wb3J0IEFjY2Vzc29yIGZyb20gJy4uLy4uL2NvbW1vbi9pdGVtLXNlbGVjdG9yL2FjY2Vzc29yJztcbmltcG9ydCBEcm9wZG93bkxpc3QgZnJvbSAnLi4vLi4vY29tbW9uL2l0ZW0tc2VsZWN0b3IvZHJvcGRvd24tbGlzdCc7XG5pbXBvcnQgTGF6eVRpcHB5IGZyb20gJy4uLy4uL21hcC9sYXp5LXRpcHB5JztcbmltcG9ydCBUeXBlYWhlYWQgZnJvbSAnLi4vLi4vY29tbW9uL2l0ZW0tc2VsZWN0b3IvdHlwZWFoZWFkJztcblxudHlwZSBUaXBweUluc3RhbmNlID0gYW55OyAvLyAndGlwcHktanMnXG5cbmNvbnN0IEhJU1RPR1JBTV9CSU5TID0gMzA7XG5cbmV4cG9ydCB0eXBlIFNjYWxlT3B0aW9uID0ge1xuICBsYWJlbDogc3RyaW5nO1xuICB2YWx1ZTogc3RyaW5nO1xufTtcbmV4cG9ydCB0eXBlIE9uU2VsZWN0RnVuYyA9ICh2OiBzdHJpbmcsIHZpc0NvbmZnPzogUmVjb3JkPHN0cmluZywgYW55PikgPT4gdm9pZDtcblxuZXhwb3J0IHR5cGUgQ29udGV4dFByb3BzID0gQ29sb3JCcmVha3NQYW5lbFByb3BzO1xuXG5leHBvcnQgdHlwZSBDb2xvclNjYWxlU2VsZWN0b3JQcm9wcyA9IHtcbiAgbGF5ZXI6IExheWVyO1xuICBmaWVsZDogRmllbGQ7XG4gIGRhdGFzZXQ6IEtlcGxlclRhYmxlO1xuICBzY2FsZVR5cGU6IHN0cmluZztcbiAgZG9tYWluOiBWaXN1YWxDaGFubmVsRG9tYWluO1xuICByYW5nZTogQ29sb3JSYW5nZTtcbiAgb25TZWxlY3Q6IE9uU2VsZWN0RnVuYztcbiAgc2V0Q29sb3JVSTogU2V0Q29sb3JVSUZ1bmM7XG4gIGNvbG9yVUlDb25maWc6IENvbG9yVUk7XG4gIG9wdGlvbnM6IFNjYWxlT3B0aW9uW107XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgc2VsZWN0ZWRJdGVtczogU2NhbGVPcHRpb25bXTtcbiAgbXVsdGlTZWxlY3Q6IGJvb2xlYW47XG4gIHNlYXJjaGFibGU6IGJvb2xlYW47XG4gIGRpc3BsYXlPcHRpb246IHN0cmluZztcbiAgZ2V0T3B0aW9uVmFsdWU6IHN0cmluZztcbiAgYWdncmVnYXRlZEJpbnM/OiBBZ2dyZWdhdGVkQmluW107XG4gIGNoYW5uZWxLZXk6IHN0cmluZztcbn07XG5cbmNvbnN0IERyb3Bkb3duUHJvcENvbnRleHQgPSBSZWFjdC5jcmVhdGVDb250ZXh0KHt9KTtcbmNvbnN0IFBPUFBFUl9PUFRJT05TID0ge1xuICBtb2RpZmllcnM6IFtcbiAgICAvLyB6ZXJvIG9mZnNldHMgc2luY2UgdGhleSBhcmUgYWxyZWFkeSBhZGRlZCBpbiBWZXJ0aWNhbFRvb2xiYXJcbiAgICB7bmFtZTogJ29mZnNldCcsIG9wdGlvbnM6IHtvZmZzZXQ6IFswLCAwXX19XG4gIF1cbn07XG5cbmNvbnN0IERyb3Bkb3duQm90dG9tID0gc3R5bGVkLmRpdjx7bGlnaHQ/OiBib29sZWFufT5gXG4gIGJvcmRlci10b3A6IDFweCBzb2xpZFxuICAgICR7cHJvcHMgPT5cbiAgICAgIHByb3BzLmxpZ2h0ID8gcHJvcHMudGhlbWUuZHJvcGRvd25MaXN0Qm9yZGVyVG9wTFQgOiBwcm9wcy50aGVtZS5kcm9wZG93bkxpc3RCb3JkZXJUb3B9O1xuYDtcblxuY29uc3QgU3R5bGVkU2NhbGVTZWxlY3REcm9wZG93biA9IHN0eWxlZC5kaXZgXG4gIGJveC1zaGFkb3c6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuZHJvcGRvd25MaXN0U2hhZG93fTtcbiAgLmxpc3Qtc2VsZWN0b3Ige1xuICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgYm9yZGVyLXRvcDogMDtcbiAgfVxuICAubGlzdF9faXRlbSB7XG4gICAgcGFkZGluZzogNHB4IDlweDtcbiAgfVxuYDtcbmNvbnN0IERyb3Bkb3duV3JhcHBlciA9IHN0eWxlZC5kaXZgXG4gIGJvcmRlcjogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIGxlZnQ6IDA7XG4gIHotaW5kZXg6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuZHJvcGRvd25XcmFwcGVyWn07XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbWFyZ2luLXRvcDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5kcm9wZG93bldhcHBlck1hcmdpbn1weDtcbmA7XG5cbmNvbnN0IFN0eWxlZENvbG9yU2NhbGVTZWxlY3RvciA9IHN0eWxlZC5kaXZgXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgLnR5cGVhaGVhZCB7XG4gICAgLy8gYWRkcyBwYWRkaW5nIHRvIGJvdHRvbSBvZiBkcm9wZG93blxuICAgIG1hcmdpbi1ib3R0b206IDQwcHg7XG4gIH1cbiAgW2RhdGEtdGlwcHktcm9vdF0ge1xuICAgIHdpZHRoOiAxMDAlO1xuICB9XG5gO1xuXG5mdW5jdGlvbiBoaWRlVGlwcHkodGlwcHlJbnN0YW5jZSkge1xuICBpZiAodGlwcHlJbnN0YW5jZSkge1xuICAgIHRpcHB5SW5zdGFuY2UuaGlkZSgpO1xuICB9XG59XG5Db2xvclNjYWxlU2VsZWN0b3JGYWN0b3J5LmRlcHMgPSBbQ29sb3JCcmVha3NQYW5lbEZhY3RvcnldO1xuXG5mdW5jdGlvbiBDb2xvclNjYWxlU2VsZWN0b3JGYWN0b3J5KFxuICBDb2xvckJyZWFrc1BhbmVsOiBSZXR1cm5UeXBlPHR5cGVvZiBDb2xvckJyZWFrc1BhbmVsRmFjdG9yeT5cbik6IFJlYWN0LkZDPENvbG9yU2NhbGVTZWxlY3RvclByb3BzPiB7XG4gIGNvbnN0IENvbG9yU2NhbGVTZWxlY3REcm9wZG93biA9IHByb3BzID0+IChcbiAgICA8U3R5bGVkU2NhbGVTZWxlY3REcm9wZG93bj5cbiAgICAgIDxEcm9wZG93bkxpc3Qgey4uLnByb3BzfSAvPlxuICAgICAgPERyb3Bkb3duUHJvcENvbnRleHQuQ29uc3VtZXI+XG4gICAgICAgIHsoY29udGV4dDogYW55KSA9PiAoXG4gICAgICAgICAgPERyb3Bkb3duQm90dG9tPlxuICAgICAgICAgICAgPENvbG9yQnJlYWtzUGFuZWwgey4uLmNvbnRleHR9IC8+XG4gICAgICAgICAgPC9Ecm9wZG93bkJvdHRvbT5cbiAgICAgICAgKX1cbiAgICAgIDwvRHJvcGRvd25Qcm9wQ29udGV4dC5Db25zdW1lcj5cbiAgICA8L1N0eWxlZFNjYWxlU2VsZWN0RHJvcGRvd24+XG4gICk7XG5cbiAgY29uc3QgQ29sb3JTY2FsZVNlbGVjdG9yOiBSZWFjdC5GQzxDb2xvclNjYWxlU2VsZWN0b3JQcm9wcz4gPSAoe1xuICAgIGxheWVyLFxuICAgIGZpZWxkLFxuICAgIGRhdGFzZXQsXG4gICAgb25TZWxlY3QsXG4gICAgc2NhbGVUeXBlLFxuICAgIGRvbWFpbixcbiAgICBhZ2dyZWdhdGVkQmlucyxcbiAgICByYW5nZSxcbiAgICBzZXRDb2xvclVJLFxuICAgIGNvbG9yVUlDb25maWcsXG4gICAgY2hhbm5lbEtleSxcbiAgICAuLi5kcm9wZG93blNlbGVjdFByb3BzXG4gIH0pID0+IHtcbiAgICBjb25zdCBkaXNwbGF5T3B0aW9uID0gQWNjZXNzb3IuZ2VuZXJhdGVPcHRpb25Ub1N0cmluZ0Zvcihkcm9wZG93blNlbGVjdFByb3BzLmRpc3BsYXlPcHRpb24pO1xuICAgIGNvbnN0IGdldE9wdGlvblZhbHVlID0gdXNlTWVtbyhcbiAgICAgICgpID0+IEFjY2Vzc29yLmdlbmVyYXRlT3B0aW9uVG9TdHJpbmdGb3IoZHJvcGRvd25TZWxlY3RQcm9wcy5nZXRPcHRpb25WYWx1ZSksXG4gICAgICBbZHJvcGRvd25TZWxlY3RQcm9wcy5nZXRPcHRpb25WYWx1ZV1cbiAgICApO1xuICAgIGNvbnN0IFt0aXBweUluc3RhbmNlLCBzZXRUaXBweUluc3RhbmNlXSA9IHVzZVN0YXRlPFRpcHB5SW5zdGFuY2U+KCk7XG4gICAgY29uc3QgaXNFZGl0aW5nQ29sb3JCcmVha3MgPSBjb2xvclVJQ29uZmlnPy5jb2xvclJhbmdlQ29uZmlnPy5jdXN0b21CcmVha3M7XG4gICAgY29uc3QgY29sb3JTY2FsZSA9IHVzZU1lbW8oXG4gICAgICAoKSA9PlxuICAgICAgICBnZXRMYXllckNvbG9yU2NhbGUoe1xuICAgICAgICAgIHJhbmdlLFxuICAgICAgICAgIGRvbWFpbixcbiAgICAgICAgICBzY2FsZVR5cGUsXG4gICAgICAgICAgbGF5ZXJcbiAgICAgICAgfSksXG4gICAgICBbcmFuZ2UsIGRvbWFpbiwgc2NhbGVUeXBlLCBsYXllcl1cbiAgICApO1xuXG4gICAgY29uc3QgY29sb3JCcmVha3MgPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgIHJldHVybiBjb2xvclNjYWxlXG4gICAgICAgID8gZ2V0TGVnZW5kT2ZTY2FsZSh7XG4gICAgICAgICAgICBzY2FsZTogY29sb3JTY2FsZS5ieVpvb20gJiYgZG9tYWluID8gY29sb3JTY2FsZShkb21haW4/Lmxlbmd0aCAtIDEpIDogY29sb3JTY2FsZSxcbiAgICAgICAgICAgIHNjYWxlVHlwZSxcbiAgICAgICAgICAgIGZpZWxkVHlwZTogZmllbGQ/LnR5cGUgPz8gQUxMX0ZJRUxEX1RZUEVTLnJlYWxcbiAgICAgICAgICB9KVxuICAgICAgICA6IG51bGw7XG4gICAgfSwgW2NvbG9yU2NhbGUsIHNjYWxlVHlwZSwgZmllbGQ/LnR5cGUsIGRvbWFpbl0pO1xuXG4gICAgY29uc3QgY29sdW1uU3RhdHMgPSBmaWVsZD8uZmlsdGVyUHJvcHM/LmNvbHVtblN0YXRzO1xuXG4gICAgY29uc3QgZmllbGRWYWx1ZUFjY2Vzc29yID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICByZXR1cm4gZmllbGRcbiAgICAgICAgPyBpZHggPT4gZGF0YXNldC5nZXRWYWx1ZShmaWVsZC5uYW1lLCBpZHgpXG4gICAgICAgIDogaWR4ID0+IGRhdGFzZXQuZGF0YUNvbnRhaW5lci5yb3dBc0FycmF5KGlkeCk7XG4gICAgfSwgW2RhdGFzZXQsIGZpZWxkXSk7XG5cbiAgICBjb25zdCBvcmRpbmFsRG9tYWluID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICByZXR1cm4gbGF5ZXIuY29uZmlnW2xheWVyLnZpc3VhbENoYW5uZWxzW2NoYW5uZWxLZXldLmRvbWFpbl0gfHwgW107XG4gICAgfSwgW2NoYW5uZWxLZXksIGxheWVyLmNvbmZpZywgbGF5ZXIudmlzdWFsQ2hhbm5lbHNdKTtcblxuICAgIC8vIGFnZ3JlZ2F0ZWRCaW5zIHNob3VsZCBiZSB0aGUgcmF3IGRhdGFcbiAgICBjb25zdCBhbGxCaW5zID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICBpZiAoZmllbGQ/LnR5cGUgPT09IEFMTF9GSUVMRF9UWVBFUy5zdHJpbmcpIHtcbiAgICAgICAgLy8gVXNlIG9yZGluYWwgYmlucyBmb3Igc3RyaW5nIGNvbHVtbnMsIGFzIGQzIGNvdWxkIHBvdGVudGlhbGx5IGdlbmVyYXRlIGludmFsaWQgbnVtZXJpYyBiaW5zLCBhbmQgY3Jhc2hcbiAgICAgICAgcmV0dXJuIGhpc3RvZ3JhbUZyb21PcmRpbmFsKG9yZGluYWxEb21haW4sIGRhdGFzZXQuYWxsSW5kZXhlcywgZmllbGRWYWx1ZUFjY2Vzc29yKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFnZ3JlZ2F0ZWRCaW5zKSB7XG4gICAgICAgIHJldHVybiBoaXN0b2dyYW1Gcm9tVmFsdWVzKFxuICAgICAgICAgIE9iamVjdC52YWx1ZXMoYWdncmVnYXRlZEJpbnMpLm1hcChiaW4gPT4gYmluLmkpLFxuICAgICAgICAgIEhJU1RPR1JBTV9CSU5TLFxuICAgICAgICAgIGlkeCA9PiBhZ2dyZWdhdGVkQmluc1tpZHhdLnZhbHVlXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICByZXR1cm4gY29sdW1uU3RhdHM/LmJpbnNcbiAgICAgICAgPyBjb2x1bW5TdGF0cz8uYmluc1xuICAgICAgICA6IGhpc3RvZ3JhbUZyb21WYWx1ZXMoZGF0YXNldC5hbGxJbmRleGVzLCBISVNUT0dSQU1fQklOUywgZmllbGRWYWx1ZUFjY2Vzc29yKTtcbiAgICB9LCBbYWdncmVnYXRlZEJpbnMsIGNvbHVtblN0YXRzLCBkYXRhc2V0LCBmaWVsZFZhbHVlQWNjZXNzb3IsIGZpZWxkPy50eXBlLCBvcmRpbmFsRG9tYWluXSk7XG5cbiAgICBjb25zdCBoaXN0b2dyYW1Eb21haW4gPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgIHJldHVybiBnZXRIaXN0b2dyYW1Eb21haW4oe2FnZ3JlZ2F0ZWRCaW5zLCBjb2x1bW5TdGF0cywgZGF0YXNldCwgZmllbGRWYWx1ZUFjY2Vzc29yfSk7XG4gICAgfSwgW2RhdGFzZXQsIGZpZWxkVmFsdWVBY2Nlc3NvciwgYWdncmVnYXRlZEJpbnMsIGNvbHVtblN0YXRzXSk7XG5cbiAgICBjb25zdCBpc0ZpbHRlcmVkID0gYWdncmVnYXRlZEJpbnNcbiAgICAgID8gZmFsc2VcbiAgICAgIDogZGF0YXNldC5maWx0ZXJlZEluZGV4Rm9yRG9tYWluLmxlbmd0aCAhPT0gZGF0YXNldC5hbGxJbmRleGVzLmxlbmd0aDtcblxuICAgIC8vIGdldCBmaWx0ZXJlZEJpbnMgKG5vdCBhcHBseSB0byBhZ2dyZWdhdGUgbGF5ZXIpXG4gICAgY29uc3QgZmlsdGVyZWRCaW5zID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICBpZiAoIWlzRmlsdGVyZWQpIHtcbiAgICAgICAgcmV0dXJuIGFsbEJpbnM7XG4gICAgICB9XG4gICAgICBpZiAoZmllbGQ/LnR5cGUgPT09IEFMTF9GSUVMRF9UWVBFUy5zdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIGhpc3RvZ3JhbUZyb21PcmRpbmFsKFxuICAgICAgICAgIG9yZGluYWxEb21haW4gYXMgYW55LFxuICAgICAgICAgIGRhdGFzZXQuZmlsdGVyZWRJbmRleEZvckRvbWFpbixcbiAgICAgICAgICBmaWVsZFZhbHVlQWNjZXNzb3JcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIC8vIG51bWVyaWMgdGhyZXNob2xkc1xuICAgICAgY29uc3QgZmlsdGVyRW1wdHlCaW5zID0gZmFsc2U7XG4gICAgICBjb25zdCB0aHJlc2hvbGRzID0gYWxsQmlucy5tYXAoYiA9PiBiLngwKTtcbiAgICAgIHJldHVybiBoaXN0b2dyYW1Gcm9tVGhyZXNob2xkKFxuICAgICAgICB0aHJlc2hvbGRzLFxuICAgICAgICBkYXRhc2V0LmZpbHRlcmVkSW5kZXhGb3JEb21haW4sXG4gICAgICAgIGZpZWxkVmFsdWVBY2Nlc3NvcixcbiAgICAgICAgZmlsdGVyRW1wdHlCaW5zXG4gICAgICApO1xuICAgIH0sIFtkYXRhc2V0LCBmaWVsZFZhbHVlQWNjZXNzb3IsIGFsbEJpbnMsIGlzRmlsdGVyZWQsIGZpZWxkPy50eXBlLCBvcmRpbmFsRG9tYWluXSk7XG5cbiAgICBjb25zdCBvblNlbGVjdFNjYWxlID0gdXNlQ2FsbGJhY2soXG4gICAgICB2YWwgPT4ge1xuICAgICAgICAvLyBoaWdobGlnaHQgc2VsZWN0ZWQgb3B0aW9uXG4gICAgICAgIGlmICghdmFsIHx8IGlzRWRpdGluZ0NvbG9yQnJlYWtzKSByZXR1cm47XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkU2NhbGUgPSBnZXRPcHRpb25WYWx1ZSh2YWwpO1xuICAgICAgICBpZiAoc2VsZWN0ZWRTY2FsZSA9PT0gU0NBTEVfVFlQRVMuY3VzdG9tKSB7XG4gICAgICAgICAgY29uc3QgY3VzdG9tUGFsZXR0ZSA9IGluaXRDdXN0b21QYWxldHRlQnlDdXN0b21TY2FsZSh7XG4gICAgICAgICAgICBzY2FsZTogc2VsZWN0ZWRTY2FsZSxcbiAgICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgICAgcmFuZ2UsXG4gICAgICAgICAgICBjb2xvckJyZWFrc1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHNldENvbG9yVUkoe1xuICAgICAgICAgICAgc2hvd0NvbG9yQ2hhcnQ6IHRydWUsXG4gICAgICAgICAgICBjb2xvclJhbmdlQ29uZmlnOiB7XG4gICAgICAgICAgICAgIGN1c3RvbUJyZWFrczogdHJ1ZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGN1c3RvbVBhbGV0dGVcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBvblNlbGVjdChzZWxlY3RlZFNjYWxlLCBjdXN0b21QYWxldHRlKTtcbiAgICAgICAgfSBlbHNlIGlmIChoYXNDb2xvck1hcChyYW5nZSkgJiYgc2VsZWN0ZWRTY2FsZSAhPT0gU0NBTEVfVFlQRVMuY3VzdG9tT3JkaW5hbCkge1xuICAgICAgICAgIC8vIG5vdCBjdXN0b21cbiAgICAgICAgICAvLyByZW1vdmUgY29sb3JNYXBcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgICAgICAgICBjb25zdCB7Y29sb3JNYXA6IF8sIC4uLm5ld1JhbmdlfSA9IHJhbmdlO1xuICAgICAgICAgIG9uU2VsZWN0KHNlbGVjdGVkU2NhbGUsIG5ld1JhbmdlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvblNlbGVjdChzZWxlY3RlZFNjYWxlKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFtpc0VkaXRpbmdDb2xvckJyZWFrcywgZmllbGQsIHNldENvbG9yVUksIG9uU2VsZWN0LCByYW5nZSwgZ2V0T3B0aW9uVmFsdWUsIGNvbG9yQnJlYWtzXVxuICAgICk7XG5cbiAgICBjb25zdCBvbkFwcGx5ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgb25TZWxlY3Qoc2NhbGVUeXBlLCBjb2xvclVJQ29uZmlnLmN1c3RvbVBhbGV0dGUpO1xuICAgICAgaGlkZVRpcHB5KHRpcHB5SW5zdGFuY2UpO1xuICAgIH0sIFtvblNlbGVjdCwgY29sb3JVSUNvbmZpZy5jdXN0b21QYWxldHRlLCB0aXBweUluc3RhbmNlLCBzY2FsZVR5cGVdKTtcblxuICAgIGNvbnN0IG9uQ2FuY2VsID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgaGlkZVRpcHB5KHRpcHB5SW5zdGFuY2UpO1xuICAgIH0sIFt0aXBweUluc3RhbmNlXSk7XG5cbiAgICBjb25zdCBpc0N1c3RvbUJyZWFrcyA9XG4gICAgICBzY2FsZVR5cGUgPT09IFNDQUxFX1RZUEVTLmN1c3RvbSB8fCBzY2FsZVR5cGUgPT09IFNDQUxFX1RZUEVTLmN1c3RvbU9yZGluYWw7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPERyb3Bkb3duUHJvcENvbnRleHQuUHJvdmlkZXJcbiAgICAgICAgdmFsdWU9e3tcbiAgICAgICAgICBzZXRDb2xvclVJLFxuICAgICAgICAgIGNvbG9yRmllbGQ6IGZpZWxkLFxuICAgICAgICAgIGRhdGFzZXQsXG4gICAgICAgICAgY29sb3JVSUNvbmZpZyxcbiAgICAgICAgICBjb2xvckJyZWFrcyxcbiAgICAgICAgICBpc0N1c3RvbUJyZWFrcyxcbiAgICAgICAgICBhbGxCaW5zLFxuICAgICAgICAgIGZpbHRlcmVkQmlucyxcbiAgICAgICAgICBpc0ZpbHRlcmVkLFxuICAgICAgICAgIGhpc3RvZ3JhbURvbWFpbixcbiAgICAgICAgICBvcmRpbmFsRG9tYWluLFxuICAgICAgICAgIG9uU2NhbGVDaGFuZ2U6IG9uU2VsZWN0LFxuICAgICAgICAgIG9uQXBwbHksXG4gICAgICAgICAgb25DYW5jZWxcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAgPFN0eWxlZENvbG9yU2NhbGVTZWxlY3Rvcj5cbiAgICAgICAgICA8TGF6eVRpcHB5XG4gICAgICAgICAgICB0cmlnZ2VyPVwiY2xpY2tcIlxuICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLXN0YXJ0XCJcbiAgICAgICAgICAgIGFwcGVuZFRvPVwicGFyZW50XCJcbiAgICAgICAgICAgIGludGVyYWN0aXZlPXt0cnVlfVxuICAgICAgICAgICAgaGlkZU9uQ2xpY2s9eyFpc0VkaXRpbmdDb2xvckJyZWFrc31cbiAgICAgICAgICAgIG9uQ3JlYXRlPXtzZXRUaXBweUluc3RhbmNlfVxuICAgICAgICAgICAgcG9wcGVyT3B0aW9ucz17UE9QUEVSX09QVElPTlN9XG4gICAgICAgICAgICByZW5kZXI9e2F0dHJzID0+IChcbiAgICAgICAgICAgICAgPERyb3Bkb3duV3JhcHBlciB7Li4uYXR0cnN9PlxuICAgICAgICAgICAgICAgIHsvKiBAdHMtaWdub3JlKi99XG4gICAgICAgICAgICAgICAgeyFkcm9wZG93blNlbGVjdFByb3BzLmRpc2FibGVkICYmIChcbiAgICAgICAgICAgICAgICAgIDxUeXBlYWhlYWRcbiAgICAgICAgICAgICAgICAgICAgey4uLmRyb3Bkb3duU2VsZWN0UHJvcHN9XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXlPcHRpb249e2Rpc3BsYXlPcHRpb259XG4gICAgICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICAgICAgZ2V0T3B0aW9uVmFsdWU9e2dldE9wdGlvblZhbHVlfVxuICAgICAgICAgICAgICAgICAgICBvbk9wdGlvblNlbGVjdGVkPXtvblNlbGVjdFNjYWxlfVxuICAgICAgICAgICAgICAgICAgICBjdXN0b21MaXN0Q29tcG9uZW50PXtDb2xvclNjYWxlU2VsZWN0RHJvcGRvd259XG4gICAgICAgICAgICAgICAgICAgIHNlYXJjaGFibGU9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICBzaG93T3B0aW9uc1doZW5FbXB0eVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICA8L0Ryb3Bkb3duV3JhcHBlcj5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJkcm9wZG93bi1zZWxlY3RcIj5cbiAgICAgICAgICAgICAgey8qIEB0cy1pZ25vcmUqL31cbiAgICAgICAgICAgICAgPERyb3Bkb3duU2VsZWN0XG4gICAgICAgICAgICAgICAgey4uLmRyb3Bkb3duU2VsZWN0UHJvcHN9XG4gICAgICAgICAgICAgICAgZGlzcGxheU9wdGlvbj17ZGlzcGxheU9wdGlvbn1cbiAgICAgICAgICAgICAgICB2YWx1ZT17ZHJvcGRvd25TZWxlY3RQcm9wcy5zZWxlY3RlZEl0ZW1zWzBdfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9MYXp5VGlwcHk+XG4gICAgICAgIDwvU3R5bGVkQ29sb3JTY2FsZVNlbGVjdG9yPlxuICAgICAgPC9Ecm9wZG93blByb3BDb250ZXh0LlByb3ZpZGVyPlxuICAgICk7XG4gIH07XG4gIHJldHVybiBDb2xvclNjYWxlU2VsZWN0b3I7XG59XG5leHBvcnQgZGVmYXVsdCBDb2xvclNjYWxlU2VsZWN0b3JGYWN0b3J5O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxpQkFBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBRUEsSUFBQUcsVUFBQSxHQUFBSCxPQUFBO0FBSUEsSUFBQUksTUFBQSxHQUFBSixPQUFBO0FBV0EsSUFBQUssaUJBQUEsR0FBQUgsc0JBQUEsQ0FBQUYsT0FBQTtBQUVBLElBQUFNLGVBQUEsR0FBQUosc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFPLFNBQUEsR0FBQUwsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFRLGFBQUEsR0FBQU4sc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFTLFVBQUEsR0FBQVAsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFVLFVBQUEsR0FBQVIsc0JBQUEsQ0FBQUYsT0FBQTtBQUE2RCxJQUFBVyxTQUFBO0VBQUFDLFVBQUE7QUFBQSxJQUFBQyxlQUFBLEVBQUFDLGdCQUFBLEVBQUFDLGdCQUFBLEVBQUFDLGdCQUFBLEVBM0I3RDtBQUNBO0FBQUEsU0FBQUMseUJBQUFDLENBQUEsNkJBQUFDLE9BQUEsbUJBQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEseUJBQUFDLENBQUEsV0FBQUEsQ0FBQSxHQUFBRyxDQUFBLEdBQUFELENBQUEsS0FBQUYsQ0FBQTtBQUFBLFNBQUFuQix3QkFBQW1CLENBQUEsRUFBQUUsQ0FBQSxTQUFBQSxDQUFBLElBQUFGLENBQUEsSUFBQUEsQ0FBQSxDQUFBSSxVQUFBLFNBQUFKLENBQUEsZUFBQUEsQ0FBQSxnQkFBQUssT0FBQSxDQUFBTCxDQUFBLDBCQUFBQSxDQUFBLHNCQUFBQSxDQUFBLFFBQUFHLENBQUEsR0FBQUosd0JBQUEsQ0FBQUcsQ0FBQSxPQUFBQyxDQUFB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
@@ -1,4 +1,4 @@
1
- import React, { ElementType, PropsWithChildren } from 'react';
1
+ import React, { ElementType } from 'react';
2
2
  import { ColorMap, ColorUI, HexColor, NestedPartial } from '@kepler.gl/types';
3
3
  import { ColorBreak, ColorBreakOrdinal } from '@kepler.gl/utils';
4
4
  export declare type ActionIcons = {
@@ -46,11 +46,6 @@ export declare const DividerLine: import("styled-components").IStyledComponent<"
46
46
  export declare const ColorSwatch: import("styled-components").IStyledComponent<"web", import("styled-components/dist/types").FastOmit<import("styled-components/dist/types").FastOmit<import("styled-components/dist/types").Substitute<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
47
47
  ref?: ((instance: HTMLDivElement | null) => void) | React.RefObject<HTMLDivElement> | null | undefined;
48
48
  }>, never>, never>>;
49
- declare type DragHandleProps = PropsWithChildren<{
50
- className?: string;
51
- listeners?: unknown;
52
- }>;
53
- export declare const DragHandle: React.ComponentClass<DragHandleProps, any>;
54
49
  export declare type ColorPaletteInputProps = {
55
50
  value: string | number;
56
51
  onChange: (val: unknown) => void;