UNPKG

kepler.gl.geoiq

Version:

kepler.gl is a webgl based application to visualize large scale location data in the browser

229 lines (180 loc) 20.3 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.removeNotificationUpdater = exports.addNotificationUpdater = exports.setExportDataUpdater = exports.setExportConfigUpdater = exports.setExportFilteredUpdater = exports.setExportDataTypeUpdater = exports.setExportSelectedDatasetUpdater = exports.cleanupExportImage = exports.setExportImageDataUri = exports.startExportingImage = exports.setResolutionUpdater = exports.setRatioUpdater = exports.toggleLegendUpdater = exports.openDeleteModalUpdater = exports.toggleMapControlUpdater = exports.hideExportDropdownUpdater = exports.showExportDropdownUpdater = exports.toggleModalUpdater = exports.toggleSidePanelUpdater = void 0; var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray")); var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _defaultSettings = require("../constants/default-settings"); var _notificationsUtils = require("../utils/notifications-utils"); function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } /* Updaters */ var toggleSidePanelUpdater = function toggleSidePanelUpdater(state, _ref) { var id = _ref.payload; if (id === state.activeSidePanel) { return state; } if (id === _defaultSettings.LAYER_CONFIG_ID) { return _objectSpread({}, state, { currentModal: id }); } return _objectSpread({}, state, { activeSidePanel: id }); }; exports.toggleSidePanelUpdater = toggleSidePanelUpdater; var toggleModalUpdater = function toggleModalUpdater(state, _ref2) { var id = _ref2.payload; return _objectSpread({}, state, { currentModal: id }); }; exports.toggleModalUpdater = toggleModalUpdater; var showExportDropdownUpdater = function showExportDropdownUpdater(state, _ref3) { var id = _ref3.payload; return _objectSpread({}, state, { visibleDropdown: id }); }; exports.showExportDropdownUpdater = showExportDropdownUpdater; var hideExportDropdownUpdater = function hideExportDropdownUpdater(state, _ref4) { var payload = _ref4.payload; return _objectSpread({}, state, { visibleDropdown: null }); }; exports.hideExportDropdownUpdater = hideExportDropdownUpdater; var toggleMapControlUpdater = function toggleMapControlUpdater(state, _ref5) { var panelId = _ref5.payload; return _objectSpread({}, state, { mapControls: _objectSpread({}, state.mapControls, (0, _defineProperty2["default"])({}, panelId, _objectSpread({}, state.mapControls[panelId], { active: !state.mapControls[panelId].active }))) }); }; exports.toggleMapControlUpdater = toggleMapControlUpdater; var openDeleteModalUpdater = function openDeleteModalUpdater(state, _ref6) { var datasetKeyToRemove = _ref6.payload; return _objectSpread({}, state, { currentModal: _defaultSettings.DELETE_DATA_ID, datasetKeyToRemove: datasetKeyToRemove }); }; exports.openDeleteModalUpdater = openDeleteModalUpdater; var toggleLegendUpdater = function toggleLegendUpdater(state) { return _objectSpread({}, state, { exportImage: _objectSpread({}, state.exportImage, { legend: !state.exportImage.legend }) }); }; exports.toggleLegendUpdater = toggleLegendUpdater; var setRatioUpdater = function setRatioUpdater(state, _ref7) { var payload = _ref7.payload; return _objectSpread({}, state, { exportImage: _objectSpread({}, state.exportImage, { ratio: payload.ratio }) }); }; exports.setRatioUpdater = setRatioUpdater; var setResolutionUpdater = function setResolutionUpdater(state, _ref8) { var payload = _ref8.payload; return _objectSpread({}, state, { exportImage: _objectSpread({}, state.exportImage, { resolution: payload.resolution }) }); }; exports.setResolutionUpdater = setResolutionUpdater; var startExportingImage = function startExportingImage(state) { return _objectSpread({}, state, { exportImage: _objectSpread({}, state.exportImage, { exporting: true, imageDataUri: '' }) }); }; exports.startExportingImage = startExportingImage; var setExportImageDataUri = function setExportImageDataUri(state, _ref9) { var payload = _ref9.payload; return _objectSpread({}, state, { exportImage: _objectSpread({}, state.exportImage, { exporting: false, imageDataUri: payload.dataUri }) }); }; exports.setExportImageDataUri = setExportImageDataUri; var cleanupExportImage = function cleanupExportImage(state) { return _objectSpread({}, state, { exportImage: _objectSpread({}, state.exportImage, { exporting: false, imageDataUri: '' }) }); }; exports.cleanupExportImage = cleanupExportImage; var setExportSelectedDatasetUpdater = function setExportSelectedDatasetUpdater(state, _ref10) { var payload = _ref10.payload; return _objectSpread({}, state, { exportData: _objectSpread({}, state.exportData, { selectedDataset: payload.dataset }) }); }; exports.setExportSelectedDatasetUpdater = setExportSelectedDatasetUpdater; var setExportDataTypeUpdater = function setExportDataTypeUpdater(state, _ref11) { var payload = _ref11.payload; return _objectSpread({}, state, { exportData: _objectSpread({}, state.exportData, { dataType: payload.dataType }) }); }; exports.setExportDataTypeUpdater = setExportDataTypeUpdater; var setExportFilteredUpdater = function setExportFilteredUpdater(state, _ref12) { var payload = _ref12.payload; return _objectSpread({}, state, { exportData: _objectSpread({}, state.exportData, { filtered: payload.filtered }) }); }; exports.setExportFilteredUpdater = setExportFilteredUpdater; var setExportConfigUpdater = function setExportConfigUpdater(state, action) { return _objectSpread({}, state, { exportData: _objectSpread({}, state.exportData, { config: !state.exportData.config }) }); }; exports.setExportConfigUpdater = setExportConfigUpdater; var setExportDataUpdater = function setExportDataUpdater(state, action) { return _objectSpread({}, state, { exportData: _objectSpread({}, state.exportData, { data: !state.exportData.data }) }); }; exports.setExportDataUpdater = setExportDataUpdater; var addNotificationUpdater = function addNotificationUpdater(state, _ref13) { var payload = _ref13.payload; return _objectSpread({}, state, { notifications: [].concat((0, _toConsumableArray2["default"])(state.notifications || []), [(0, _notificationsUtils.createNotification)(payload)]) }); }; exports.addNotificationUpdater = addNotificationUpdater; var removeNotificationUpdater = function removeNotificationUpdater(state, _ref14) { var payload = _ref14.payload; return _objectSpread({}, state, { notifications: state.notifications.filter(function (n) { return n.id !== payload; }) }); }; exports.removeNotificationUpdater = removeNotificationUpdater; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9yZWR1Y2Vycy91aS1zdGF0ZS11cGRhdGVycy5qcyJdLCJuYW1lcyI6WyJ0b2dnbGVTaWRlUGFuZWxVcGRhdGVyIiwic3RhdGUiLCJpZCIsInBheWxvYWQiLCJhY3RpdmVTaWRlUGFuZWwiLCJMQVlFUl9DT05GSUdfSUQiLCJjdXJyZW50TW9kYWwiLCJ0b2dnbGVNb2RhbFVwZGF0ZXIiLCJzaG93RXhwb3J0RHJvcGRvd25VcGRhdGVyIiwidmlzaWJsZURyb3Bkb3duIiwiaGlkZUV4cG9ydERyb3Bkb3duVXBkYXRlciIsInRvZ2dsZU1hcENvbnRyb2xVcGRhdGVyIiwicGFuZWxJZCIsIm1hcENvbnRyb2xzIiwiYWN0aXZlIiwib3BlbkRlbGV0ZU1vZGFsVXBkYXRlciIsImRhdGFzZXRLZXlUb1JlbW92ZSIsIkRFTEVURV9EQVRBX0lEIiwidG9nZ2xlTGVnZW5kVXBkYXRlciIsImV4cG9ydEltYWdlIiwibGVnZW5kIiwic2V0UmF0aW9VcGRhdGVyIiwicmF0aW8iLCJzZXRSZXNvbHV0aW9uVXBkYXRlciIsInJlc29sdXRpb24iLCJzdGFydEV4cG9ydGluZ0ltYWdlIiwiZXhwb3J0aW5nIiwiaW1hZ2VEYXRhVXJpIiwic2V0RXhwb3J0SW1hZ2VEYXRhVXJpIiwiZGF0YVVyaSIsImNsZWFudXBFeHBvcnRJbWFnZSIsInNldEV4cG9ydFNlbGVjdGVkRGF0YXNldFVwZGF0ZXIiLCJleHBvcnREYXRhIiwic2VsZWN0ZWREYXRhc2V0IiwiZGF0YXNldCIsInNldEV4cG9ydERhdGFUeXBlVXBkYXRlciIsImRhdGFUeXBlIiwic2V0RXhwb3J0RmlsdGVyZWRVcGRhdGVyIiwiZmlsdGVyZWQiLCJzZXRFeHBvcnRDb25maWdVcGRhdGVyIiwiYWN0aW9uIiwiY29uZmlnIiwic2V0RXhwb3J0RGF0YVVwZGF0ZXIiLCJkYXRhIiwiYWRkTm90aWZpY2F0aW9uVXBkYXRlciIsIm5vdGlmaWNhdGlvbnMiLCJyZW1vdmVOb3RpZmljYXRpb25VcGRhdGVyIiwiZmls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Q0FGVztBQUZ1QjtBQUFBLENBQS9COzs7O0FBUUEsSUFBTTJDLHlCQUF5QixHQUFHLFNBQTVCQSx5QkFBNEIsQ0FBQzdDLEtBQUQ7QUFBQSxNQUFTRSxPQUFULFVBQVNBLE9BQVQ7QUFBQSwyQkFDcENGLEtBRG9DO0FBRXZDNEMsSUFBQUEsYUFBYSxFQUFFNUMsS0FBSyxDQUFDNEMsYUFBTixDQUFvQkUsTUFBcEIsQ0FBMkIsVUFBQUMsQ0FBQztBQUFBLGFBQUlBLENBQUMsQ0FBQzlDLEVBQUYsS0FBU0MsT0FBYjtBQUFBLEtBQTVCO0FBRndCO0FBQUEsQ0FBbEMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIDIwMTkgVWJlciBUZWNobm9sb2dpZXMsIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuXG5pbXBvcnQge0xBWUVSX0NPTkZJR19JRCwgREVMRVRFX0RBVEFfSUR9IGZyb20gJ2NvbnN0YW50cy9kZWZhdWx0LXNldHRpbmdzJztcbmltcG9ydCB7Y3JlYXRlTm90aWZpY2F0aW9ufSBmcm9tICd1dGlscy9ub3RpZmljYXRpb25zLXV0aWxzJztcblxuLyogVXBkYXRlcnMgKi9cbmV4cG9ydCBjb25zdCB0b2dnbGVTaWRlUGFuZWxVcGRhdGVyID0gKHN0YXRlLCB7cGF5bG9hZDogaWR9KSA9PiB7XG4gIGlmIChpZCA9PT0gc3RhdGUuYWN0aXZlU2lkZVBhbmVsKSB7XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG5cbiAgaWYgKGlkID09PSBMQVlFUl9DT05GSUdfSUQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBjdXJyZW50TW9kYWw6IGlkXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgLi4uc3RhdGUsXG4gICAgYWN0aXZlU2lkZVBhbmVsOiBpZFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHRvZ2dsZU1vZGFsVXBkYXRlciA9IChzdGF0ZSwge3BheWxvYWQ6IGlkfSkgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGN1cnJlbnRNb2RhbDogaWRcbn0pO1xuXG5leHBvcnQgY29uc3Qgc2hvd0V4cG9ydERyb3Bkb3duVXBkYXRlciA9IChzdGF0ZSwge3BheWxvYWQ6IGlkfSkgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIHZpc2libGVEcm9wZG93bjogaWRcbn0pO1xuXG5leHBvcnQgY29uc3QgaGlkZUV4cG9ydERyb3Bkb3duVXBkYXRlciA9IChzdGF0ZSwge3BheWxvYWR9KSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgdmlzaWJsZURyb3Bkb3duOiBudWxsXG59KTtcblxuZXhwb3J0IGNvbnN0IHRvZ2dsZU1hcENvbnRyb2xVcGRhdGVyID0gKHN0YXRlLCB7cGF5bG9hZDogcGFuZWxJZH0pID0+ICh7XG4gIC4uLnN0YXRlLFxuICBtYXBDb250cm9sczoge1xuICAgIC4uLnN0YXRlLm1hcENvbnRyb2xzLFxuICAgIFtwYW5lbElkXToge1xuICAgICAgLi4uc3RhdGUubWFwQ29udHJvbHNbcGFuZWxJZF0sXG4gICAgICBhY3RpdmU6ICFzdGF0ZS5tYXBDb250cm9sc1twYW5lbElkXS5hY3RpdmVcbiAgICB9XG4gIH1cbn0pO1xuXG5leHBvcnQgY29uc3Qgb3BlbkRlbGV0ZU1vZGFsVXBkYXRlciA9IChcbiAgc3RhdGUsXG4gIHtwYXlsb2FkOiBkYXRhc2V0S2V5VG9SZW1vdmV9XG4pID0+ICh7XG4gIC4uLnN0YXRlLFxuICBjdXJyZW50TW9kYWw6IERFTEVURV9EQVRBX0lELFxuICBkYXRhc2V0S2V5VG9SZW1vdmVcbn0pO1xuXG5leHBvcnQgY29uc3QgdG9nZ2xlTGVnZW5kVXBkYXRlciA9IHN0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICBleHBvcnRJbWFnZToge1xuICAgIC4uLnN0YXRlLmV4cG9ydEltYWdlLFxuICAgIGxlZ2VuZDogIXN0YXRlLmV4cG9ydEltYWdlLmxlZ2VuZFxuICB9XG59KTtcblxuZXhwb3J0IGNvbnN0IHNldFJhdGlvVXBkYXRlciA9IChzdGF0ZSwge3BheWxvYWR9KSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgZXhwb3J0SW1hZ2U6IHtcbiAgICAuLi5zdGF0ZS5leHBvcnRJbWFnZSxcbiAgICByYXRpbzogcGF5bG9hZC5yYXRpb1xuICB9XG59KTtcblxuZXhwb3J0IGNvbnN0IHNldFJlc29sdXRpb25VcGRhdGVyID0gKHN0YXRlLCB7cGF5bG9hZH0pID0+ICh7XG4gIC4uLnN0YXRlLFxuICBleHBvcnRJbWFnZToge1xuICAgIC4uLnN0YXRlLmV4cG9ydEltYWdlLFxuICAgIHJlc29sdXRpb246IHBheWxvYWQucmVzb2x1dGlvblxuICB9XG59KTtcblxuZXhwb3J0IGNvbnN0IHN0YXJ0RXhwb3J0aW5nSW1hZ2UgPSBzdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgZXhwb3J0SW1hZ2U6IHtcbiAgICAuLi5zdGF0ZS5leHBvcnRJbWFnZSxcbiAgICBleHBvcnRpbmc6IHRydWUsXG4gICAgaW1hZ2VEYXRhVXJpOiAnJ1xuICB9XG59KTtcblxuZXhwb3J0IGNvbnN0IHNldEV4cG9ydEltYWdlRGF0YVVyaSA9IChzdGF0ZSwge3BheWxvYWR9KSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgZXhwb3J0SW1hZ2U6IHtcbiAgICAuLi5zdGF0ZS5leHBvcnRJbWFnZSxcbiAgICBleHBvcnRpbmc6IGZhbHNlLFxuICAgIGltYWdlRGF0YVVyaTogcGF5bG9hZC5kYXRhVXJpXG4gIH1cbn0pO1xuXG5leHBvcnQgY29uc3QgY2xlYW51cEV4cG9ydEltYWdlID0gc3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGV4cG9ydEltYWdlOiB7XG4gICAgLi4uc3RhdGUuZXhwb3J0SW1hZ2UsXG4gICAgZXhwb3J0aW5nOiBmYWxzZSxcbiAgICBpbWFnZURhdGFVcmk6ICcnXG4gIH1cbn0pO1xuXG5leHBvcnQgY29uc3Qgc2V0RXhwb3J0U2VsZWN0ZWREYXRhc2V0VXBkYXRlciA9IChzdGF0ZSwge3BheWxvYWR9KSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgZXhwb3J0RGF0YToge1xuICAgIC4uLnN0YXRlLmV4cG9ydERhdGEsXG4gICAgc2VsZWN0ZWREYXRhc2V0OiBwYXlsb2FkLmRhdGFzZXRcbiAgfVxufSk7XG5cbmV4cG9ydCBjb25zdCBzZXRFeHBvcnREYXRhVHlwZVVwZGF0ZXIgPSAoc3RhdGUsIHtwYXlsb2FkfSkgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGV4cG9ydERhdGE6IHtcbiAgICAuLi5zdGF0ZS5leHBvcnREYXRhLFxuICAgIGRhdGFUeXBlOiBwYXlsb2FkLmRhdGFUeXBlXG4gIH1cbn0pO1xuXG5leHBvcnQgY29uc3Qgc2V0RXhwb3J0RmlsdGVyZWRVcGRhdGVyID0gKHN0YXRlLCB7cGF5bG9hZH0pID0+ICh7XG4gIC4uLnN0YXRlLFxuICBleHBvcnREYXRhOiB7XG4gICAgLi4uc3RhdGUuZXhwb3J0RGF0YSxcbiAgICBmaWx0ZXJlZDogcGF5bG9hZC5maWx0ZXJlZFxuICB9XG59KTtcblxuZXhwb3J0IGNvbnN0IHNldEV4cG9ydENvbmZpZ1VwZGF0ZXIgPSAoc3RhdGUsIGFjdGlvbikgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGV4cG9ydERhdGE6IHtcbiAgICAuLi5zdGF0ZS5leHBvcnREYXRhLFxuICAgIGNvbmZpZzogIXN0YXRlLmV4cG9ydERhdGEuY29uZmlnXG4gIH1cbn0pO1xuXG5leHBvcnQgY29uc3Qgc2V0RXhwb3J0RGF0YVVwZGF0ZXIgPSAoc3RhdGUsIGFjdGlvbikgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGV4cG9ydERhdGE6IHtcbiAgICAuLi5zdGF0ZS5leHBvcnREYXRhLFxuICAgIGRhdGE6ICFzdGF0ZS5leHBvcnREYXRhLmRhdGFcbiAgfVxufSk7XG5cbmV4cG9ydCBjb25zdCBhZGROb3RpZmljYXRpb25VcGRhdGVyID0gKHN0YXRlLCB7cGF5bG9hZH0pID0+ICh7XG4gIC4uLnN0YXRlLFxuICBub3RpZmljYXRpb25zOiBbXG4gICAgLi4uc3RhdGUubm90aWZpY2F0aW9ucyB8fCBbXSxcbiAgICBjcmVhdGVOb3RpZmljYXRpb24ocGF5bG9hZClcbiAgXVxufSk7XG5cbmV4cG9ydCBjb25zdCByZW1vdmVOb3RpZmljYXRpb25VcGRhdGVyID0gKHN0YXRlLCB7cGF5bG9hZH0pID0+ICh7XG4gIC4uLnN0YXRlLFxuICBub3RpZmljYXRpb25zOiBzdGF0ZS5ub3RpZmljYXRpb25zLmZpbHRlcihuID0+IG4uaWQgIT09IHBheWxvYWQpXG59KTtcbiJdfQ==