UNPKG

kepler.gl.geoiq

Version:

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

253 lines (224 loc) 24.3 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.toggleSidePanel = exports.toggleModal = exports.toggleMapControl = exports.toggleLegend = exports.startExportingImage = exports.showExportDropdown = exports.setUserMapboxAccessToken = exports.setResolution = exports.setRatio = exports.setExportSelectedDataset = exports.setExportMapFormat = exports.setExportImageError = exports.setExportImageDataUri = exports.setExportHTMLMapMode = exports.setExportFiltered = exports.setExportDataType = exports.setExportData = exports.removeNotification = exports.openDeleteModal = exports.hideExportDropdown = exports.cleanupExportImage = exports.addNotification = void 0; var _reduxActions = require("redux-actions"); var _actionTypes = _interopRequireDefault(require("../constants/action-types")); // Copyright (c) 2023 Uber Technologies, Inc. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. /** * Toggle active side panel * @memberof uiStateActions * @param {string} id id of side panel to be shown, one of `layer`, `filter`, `interaction`, `map` * @public */ var toggleSidePanel = exports.toggleSidePanel = (0, _reduxActions.createAction)(_actionTypes["default"].TOGGLE_SIDE_PANEL, function (id) { return id; }); /** * Show and hide modal dialog * @memberof uiStateActions * @param {string|null} id - id of modal to be shown, null to hide modals. One of: * * - [`DATA_TABLE_ID`](../constants/default-settings.md#data_table_id) * - [`DELETE_DATA_ID`](../constants/default-settings.md#delete_data_id) * - [`ADD_DATA_ID`](../constants/default-settings.md#add_data_id) * - [`EXPORT_IMAGE_ID`](../constants/default-settings.md#export_image_id) * - [`EXPORT_DATA_ID`](../constants/default-settings.md#export_data_id) * - [`ADD_MAP_STYLE_ID`](../constants/default-settings.md#add_map_style_id) * @public */ var toggleModal = exports.toggleModal = (0, _reduxActions.createAction)(_actionTypes["default"].TOGGLE_MODAL, function (id) { return id; }); /** * Hide and show side panel header dropdown, activated by clicking the share link on top of the side panel * @memberof uiStateActions * @param {string} id - id of the dropdown * @public */ var showExportDropdown = exports.showExportDropdown = (0, _reduxActions.createAction)(_actionTypes["default"].SHOW_EXPORT_DROPDOWN, function (id) { return id; }); /** * Hide side panel header dropdown, activated by clicking the share link on top of the side panel * @memberof uiStateActions * @public */ var hideExportDropdown = exports.hideExportDropdown = (0, _reduxActions.createAction)(_actionTypes["default"].HIDE_EXPORT_DROPDOWN); /** * Toggle active map control panel * @memberof uiStateActions * @param {string} panelId - map control panel id, one of the keys of: [`DEFAULT_MAP_CONTROLS`](#default_map_controls) * @public */ var toggleMapControl = exports.toggleMapControl = (0, _reduxActions.createAction)(_actionTypes["default"].TOGGLE_MAP_CONTROL, function (panelId) { return panelId; }); /** * Toggle active map control panel * @memberof uiStateActions * @param {string} datasetId - `id` of the dataset to be deleted * @public */ var openDeleteModal = exports.openDeleteModal = (0, _reduxActions.createAction)(_actionTypes["default"].OPEN_DELETE_MODAL, function (datasetId) { return datasetId; }); /** * Add a notification to be displayed * @memberof uiStateActions * @param {Object} notification - The `notification` object to be added * @public */ var addNotification = exports.addNotification = (0, _reduxActions.createAction)(_actionTypes["default"].ADD_NOTIFICATION, function (notification) { return notification; }); /** * Remove a notification * @memberof uiStateActions * @param {string} id - `id` of the notification to be removed * @public */ var removeNotification = exports.removeNotification = (0, _reduxActions.createAction)(_actionTypes["default"].REMOVE_NOTIFICATION, function (id) { return id; }); /** * Set `exportImage.ratio` * @memberof uiStateActions * @param {string} ratio - one of `'SCREEN'`, `'FOUR_BY_THREE'` and `'SIXTEEN_BY_NINE'` * @public */ var setRatio = exports.setRatio = (0, _reduxActions.createAction)(_actionTypes["default"].SET_RATIO, function (ratio) { return ratio; }); /** * Set `exportImage.resolution` * @memberof uiStateActions * @param {string} resolution - one of `'ONE_X'`, `'TWO_X'` * @public */ var setResolution = exports.setResolution = (0, _reduxActions.createAction)(_actionTypes["default"].SET_RESOLUTION, function (resolution) { return resolution; }); /** * Set `exportImage.legend` to true or false * @memberof uiStateActions * @public */ var toggleLegend = exports.toggleLegend = (0, _reduxActions.createAction)(_actionTypes["default"].TOGGLE_LEGEND); /** * Set `exportImage.exporting` to true * @memberof uiStateActions * @public */ var startExportingImage = exports.startExportingImage = (0, _reduxActions.createAction)(_actionTypes["default"].START_EXPORTING_IMAGE); /** * Set `exportImage.setExportImageDataUri` to a dataUri * @memberof uiStateActions * @param {string} dataUri - export image data uri * @public */ var setExportImageDataUri = exports.setExportImageDataUri = (0, _reduxActions.createAction)(_actionTypes["default"].SET_EXPORT_IMAGE_DATA_URI, function (dataUri) { return dataUri; }); var setExportImageError = exports.setExportImageError = (0, _reduxActions.createAction)(_actionTypes["default"].SET_EXPORT_IMAGE_ERROR, function (error) { return error; }); /** * Delete cached export image * @memberof uiStateActions * @public */ var cleanupExportImage = exports.cleanupExportImage = (0, _reduxActions.createAction)(_actionTypes["default"].CLEANUP_EXPORT_IMAGE); /** * Set selected dataset for export * @memberof uiStateActions * @param {string} datasetId - dataset id * @public */ var setExportSelectedDataset = exports.setExportSelectedDataset = (0, _reduxActions.createAction)(_actionTypes["default"].SET_EXPORT_SELECTED_DATASET, function (datasetId) { return datasetId; }); /** * Set data format for exporting data * @memberof uiStateActions * @param {string} dataType - one of `'text/csv'` * @public */ var setExportDataType = exports.setExportDataType = (0, _reduxActions.createAction)(_actionTypes["default"].SET_EXPORT_DATA_TYPE, function (dataType) { return dataType; }); /** * Whether to export filtered data, `true` or `false` * @memberof uiStateActions * @param {boolean} payload - set `true` to ony export filtered data * @public */ var setExportFiltered = exports.setExportFiltered = (0, _reduxActions.createAction)(_actionTypes["default"].SET_EXPORT_FILTERED, function (payload) { return payload; }); /** * Whether to including data in map config, toggle between `true` or `false` * @memberof uiStateActions * @public */ var setExportData = exports.setExportData = (0, _reduxActions.createAction)(_actionTypes["default"].SET_EXPORT_DATA); /** * Whether we export a mapbox access token used to create a single map html file * @memberof uiStateActions * @param {string} payload - mapbox access token * @public */ var setUserMapboxAccessToken = exports.setUserMapboxAccessToken = (0, _reduxActions.createAction)(_actionTypes["default"].SET_USER_MAPBOX_ACCESS_TOKEN, function (payload) { return payload; }); /** * Set the export map format (html, json) * @memberOf uiStateActions * @param {string} payload - map format * @public */ var setExportMapFormat = exports.setExportMapFormat = (0, _reduxActions.createAction)(_actionTypes["default"].SET_EXPORT_MAP_FORMAT, function (payload) { return payload; }); /** * Set the HTML mode to use to export HTML mode * @type {actionCreator} */ var setExportHTMLMapMode = exports.setExportHTMLMapMode = (0, _reduxActions.createAction)(_actionTypes["default"].SET_EXPORT_MAP_HTML_MODE, function (payload) { return payload; }); /** * This declaration is needed to group actions in docs */ /** * Actions handled mostly by `uiState` reducer. * They manage UI changes in tha app, such as open and close side panel, * switch between tabs in the side panel, open and close modal dialog for exporting data / images etc. * It also manges which settings are selected during image and map export * * @public */ /* eslint-disable no-unused-vars */ var uiStateActions = null; /* eslint-enable no-unused-vars */ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hY3Rpb25zL3VpLXN0YXRlLWFjdGlvbnMuanMiXSwibmFtZXMiOlsidG9nZ2xlU2lkZVBhbmVsIiwiQWN0aW9uVHlwZXMiLCJUT0dHTEVfU0lERV9QQU5FTCIsImlkIiwidG9nZ2xlTW9kYWwiLCJUT0dHTEVfTU9EQUwiLCJzaG93RXhwb3J0RHJvcGRvd24iLCJTSE9XX0VYUE9SVF9EUk9QRE9XTiIsImhpZGVFeHBvcnREcm9wZG93biIsIkhJREVfRVhQT1JUX0RST1BET1dOIiwidG9nZ2xlTWFwQ29udHJvbCIsIlRPR0dMRV9NQVBfQ09OVFJPTCIsInBhbmVsSWQiLCJvcGVuRGVsZXRlTW9kYWwiLCJPUEVOX0RFTEVURV9NT0RBTCIsImRhdGFzZXRJZCIsImFkZE5vdGlmaWNhdGlvbiIsIkFERF9OT1RJRklDQVRJT04iLCJub3RpZmljYXRpb24iLCJyZW1vdmVOb3RpZmljYXRpb24iLCJSRU1PVkVfTk9USUZJQ0FUSU9OIiwic2V0UmF0aW8iLCJTRVRfUkFUSU8iLCJyYXRpbyIsInNldFJlc29sdXRpb24iLCJTRVRfUkVTT0xVVElPTiIsInJlc29sdXRpb24iLCJ0b2dnbGVMZWdlbmQiLCJUT0dHTEVfTEVHRU5EIiwic3RhcnRFeHBvcnRpbmdJbWFnZSIsIlNUQVJUX0VYUE9SVElOR19JTUFHRSIsInNldEV4cG9ydEltYWdlRGF0YVVyaSIsIlNFVF9FWFBPUlRfSU1BR0VfREFUQV9VUkkiLCJkYXRhVXJpIiwic2V0RXhwb3J0SW1hZ2VFcnJvciIsIlNFVF9FWFBPUlRfSU1BR0VfRVJST1IiLCJlcnJvciIsImNsZWFudXBFeHBvcnRJbWFnZSIsIkNMRUFOVVBfRVhQT1JUX0lNQUdFIiwic2V0RXhwb3J0U2VsZWN0ZWREYXRhc2V0IiwiU0VUX0VYUE9SVF9TRUxFQ1RFRF9EQVRBU0VUIiwic2V0RXhwb3J0RGF0YVR5cGUiLCJTRVRfRVhQT1JUX0RBVEFfVFlQRSIsImRhdGFUeXBlIiwic2V0RXhwb3J0RmlsdGVyZWQiLCJTRVRfRVhQT1JUX0ZJTFRFUkVEIiwicGF5bG9hZCIsInNldEV4cG9ydERhdGEiLCJTRVRfRVhQT1JUX0RBVEEiLCJzZXRVc2VyTWFwYm94QWNjZXNzVG9rZW4iLCJTRVRfVVNFUl9NQVBCT1hfQUNDRVNTX1RPS0VOIiwic2V0RXhwb3J0TWFwRm9ybWF0IiwiU0VUX0VYUE9SVF9NQVBfRk9STUFUIiwic2V0RXhwb3J0SFRNTE1hcE1vZGUiLCJTRVRfRVhQT1JUX01BUF9IVE1MX01PREUiLCJ1aVN0YXRlQWN0aW9ucyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBb0JBOztBQUNBOztBQXJCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFLQTs7Ozs7O0FBTU8sSUFBTUEsZUFBZSw2QkFBRyxnQ0FDN0JDLHdCQUFZQyxpQkFEaUIsRUFFN0IsVUFBQUMsRUFBRTtBQUFBLFNBQUlBLEVBQUo7QUFBQSxDQUYyQixDQUF4QjtBQUtQOzs7Ozs7Ozs7Ozs7OztBQWFPLElBQU1DLFdBQVcseUJBQUcsZ0NBQWFILHdCQUFZSSxZQUF6QixFQUF1QyxVQUFBRixFQUFFO0FBQUEsU0FBSUEsRUFBSjtBQUFBLENBQXpDLENBQXBCO0FBRVA7Ozs7Ozs7QUFNTyxJQUFNRyxrQkFBa0IsZ0NBQUcsZ0NBQ2hDTCx3QkFBWU0sb0JBRG9CLEVBRWhDLFVBQUFKLEVBQUU7QUFBQSxTQUFJQSxFQUFKO0FBQUEsQ0FGOEIsQ0FBM0I7QUFLUDs7Ozs7O0FBS08sSUFBTUssa0JBQWtCLGdDQUFHLGdDQUNoQ1Asd0JBQVlRLG9CQURvQixDQUEzQjtBQUlQOzs7Ozs7O0FBTU8sSUFBTUMsZ0JBQWdCLDhCQUFHLGdDQUM5QlQsd0JBQVlVLGtCQURrQixFQUU5QixVQUFBQyxPQUFPO0FBQUEsU0FBSUEsT0FBSjtBQUFBLENBRnVCLENBQXpCO0FBS1A7Ozs7Ozs7QUFNTyxJQUFNQyxlQUFlLDZCQUFHLGdDQUM3Qlosd0JBQVlhLGlCQURpQixFQUU3QixVQUFBQyxTQUFTO0FBQUEsU0FBSUEsU0FBSjtBQUFBLENBRm9CLENBQXhCO0FBS1A7Ozs7Ozs7QUFNTyxJQUFNQyxlQUFlLDZCQUFHLGdDQUM3QmYsd0JBQVlnQixnQkFEaUIsRUFFN0IsVUFBQUMsWUFBWTtBQUFBLFNBQUlBLFlBQUo7QUFBQSxDQUZpQixDQUF4QjtBQUtQOzs7Ozs7O0FBTU8sSUFBTUMsa0JBQWtCLGdDQUFHLGdDQUNoQ2xCLHdCQUFZbUIsbUJBRG9CLEVBRWhDLFVBQUFqQixFQUFFO0FBQUEsU0FBSUEsRUFBSjtBQUFBLENBRjhCLENBQTNCO0FBS1A7Ozs7Ozs7QUFNTyxJQUFNa0IsUUFBUSxzQkFBRyxnQ0FBYXBCLHdCQUFZcUIsU0FBekIsRUFBb0MsVUFBQUMsS0FBSztBQUFBLFNBQUlBLEtBQUo7QUFBQSxDQUF6QyxDQUFqQjtBQUVQOzs7Ozs7O0FBTU8sSUFBTUMsYUFBYSwyQkFBRyxnQ0FDM0J2Qix3QkFBWXdCLGNBRGUsRUFFM0IsVUFBQUMsVUFBVTtBQUFBLFNBQUlBLFVBQUo7QUFBQSxDQUZpQixDQUF0QjtBQUtQOzs7Ozs7QUFLTyxJQUFNQyxZQUFZLDBCQUFHLGdDQUFhMUIsd0JBQVkyQixhQUF6QixDQUFyQjtBQUVQOzs7Ozs7QUFLTyxJQUFNQyxtQkFBbUIsaUNBQUcsZ0NBQ2pDNUIsd0JBQVk2QixxQkFEcUIsQ0FBNUI7QUFJUDs7Ozs7OztBQU1PLElBQU1DLHFCQUFxQixtQ0FBRyxnQ0FDbkM5Qix3QkFBWStCLHlCQUR1QixFQUVuQyxVQUFBQyxPQUFPO0FBQUEsU0FBSUEsT0FBSjtBQUFBLENBRjRCLENBQTlCO0FBS0EsSUFBTUMsbUJBQW1CLGlDQUFHLGdDQUNqQ2pDLHdCQUFZa0Msc0JBRHFCLEVBRWpDLFVBQUFDLEtBQUs7QUFBQSxTQUFJQSxLQUFKO0FBQUEsQ0FGNEIsQ0FBNUI7QUFLUDs7Ozs7O0FBS08sSUFBTUMsa0JBQWtCLGdDQUFHLGdDQUNoQ3BDLHdCQUFZcUMsb0JBRG9CLENBQTNCO0FBSVA7Ozs7Ozs7QUFNTyxJQUFNQyx3QkFBd0Isc0NBQUcsZ0NBQ3RDdEMsd0JBQVl1QywyQkFEMEIsRUFFdEMsVUFBQXpCLFNBQVM7QUFBQSxTQUFJQSxTQUFKO0FBQUEsQ0FGNkIsQ0FBakM7QUFLUDs7Ozs7OztBQU1PLElBQU0wQixpQkFBaUIsK0JBQUcsZ0NBQy9CeEMsd0JBQVl5QyxvQkFEbUIsRUFFL0IsVUFBQUMsUUFBUTtBQUFBLFNBQUlBLFFBQUo7QUFBQSxDQUZ1QixDQUExQjtBQUtQOzs7Ozs7O0FBTU8sSUFBTUMsaUJBQWlCLCtCQUFHLGdDQUMvQjNDLHdCQUFZNEMsbUJBRG1CLEVBRS9CLFVBQUFDLE9BQU87QUFBQSxTQUFJQSxPQUFKO0FBQUEsQ0FGd0IsQ0FBMUI7QUFLUDs7Ozs7O0FBS08sSUFBTUMsYUFBYSwyQkFBRyxnQ0FBYTlDLHdCQUFZK0MsZUFBekIsQ0FBdEI7QUFFUDs7Ozs7OztBQU1PLElBQU1DLHdCQUF3QixzQ0FBRyxnQ0FDdENoRCx3QkFBWWlELDRCQUQwQixFQUV0QyxVQUFBSixPQUFPO0FBQUEsU0FBSUEsT0FBSjtBQUFBLENBRitCLENBQWpDO0FBS1A7Ozs7Ozs7QUFNTyxJQUFNSyxrQkFBa0IsZ0NBQUcsZ0NBQ2hDbEQsd0JBQVltRCxxQkFEb0IsRUFFaEMsVUFBQU4sT0FBTztBQUFBLFNBQUlBLE9BQUo7QUFBQSxDQUZ5QixDQUEzQjtBQUtQOzs7OztBQUlPLElBQU1PLG9CQUFvQixrQ0FBRyxnQ0FDbENwRCx3QkFBWXFELHdCQURzQixFQUVsQyxVQUFBUixPQUFPO0FBQUEsU0FBSUEsT0FBSjtBQUFBLENBRjJCLENBQTdCO0FBS1A7Ozs7QUFHQTs7Ozs7Ozs7O0FBUUE7O0FBQ0EsSUFBTVMsY0FBYyxHQUFHLElBQXZCO0FBQ0EiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIDIwMjMgVWJlciBUZWNobm9sb2dpZXMsIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuXG5pbXBvcnQge2NyZWF0ZUFjdGlvbn0gZnJvbSAncmVkdXgtYWN0aW9ucyc7XG5pbXBvcnQgQWN0aW9uVHlwZXMgZnJvbSAnY29uc3RhbnRzL2FjdGlvbi10eXBlcyc7XG5cbi8qKlxuICogVG9nZ2xlIGFjdGl2ZSBzaWRlIHBhbmVsXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSB7c3RyaW5nfSBpZCAgaWQgb2Ygc2lkZSBwYW5lbCB0byBiZSBzaG93biwgb25lIG9mIGBsYXllcmAsIGBmaWx0ZXJgLCBgaW50ZXJhY3Rpb25gLCBgbWFwYFxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgdG9nZ2xlU2lkZVBhbmVsID0gY3JlYXRlQWN0aW9uKFxuICBBY3Rpb25UeXBlcy5UT0dHTEVfU0lERV9QQU5FTCxcbiAgaWQgPT4gaWRcbik7XG5cbi8qKlxuICogU2hvdyBhbmQgaGlkZSBtb2RhbCBkaWFsb2dcbiAqIEBtZW1iZXJvZiB1aVN0YXRlQWN0aW9uc1xuICogQHBhcmFtIHtzdHJpbmd8bnVsbH0gaWQgLSBpZCBvZiBtb2RhbCB0byBiZSBzaG93biwgbnVsbCB0byBoaWRlIG1vZGFscy4gT25lIG9mOlxuICpcbiAqICAtIFtgREFUQV9UQUJMRV9JRGBdKC4uL2NvbnN0YW50cy9kZWZhdWx0LXNldHRpbmdzLm1kI2RhdGFfdGFibGVfaWQpXG4gKiAgLSBbYERFTEVURV9EQVRBX0lEYF0oLi4vY29uc3RhbnRzL2RlZmF1bHQtc2V0dGluZ3MubWQjZGVsZXRlX2RhdGFfaWQpXG4gKiAgLSBbYEFERF9EQVRBX0lEYF0oLi4vY29uc3RhbnRzL2RlZmF1bHQtc2V0dGluZ3MubWQjYWRkX2RhdGFfaWQpXG4gKiAgLSBbYEVYUE9SVF9JTUFHRV9JRGBdKC4uL2NvbnN0YW50cy9kZWZhdWx0LXNldHRpbmdzLm1kI2V4cG9ydF9pbWFnZV9pZClcbiAqICAtIFtgRVhQT1JUX0RBVEFfSURgXSguLi9jb25zdGFudHMvZGVmYXVsdC1zZXR0aW5ncy5tZCNleHBvcnRfZGF0YV9pZClcbiAqICAtIFtgQUREX01BUF9TVFlMRV9JRGBdKC4uL2NvbnN0YW50cy9kZWZhdWx0LXNldHRpbmdzLm1kI2FkZF9tYXBfc3R5bGVfaWQpXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCB0b2dnbGVNb2RhbCA9IGNyZWF0ZUFjdGlvbihBY3Rpb25UeXBlcy5UT0dHTEVfTU9EQUwsIGlkID0+IGlkKTtcblxuLyoqXG4gKiBIaWRlIGFuZCBzaG93IHNpZGUgcGFuZWwgaGVhZGVyIGRyb3Bkb3duLCBhY3RpdmF0ZWQgYnkgY2xpY2tpbmcgdGhlIHNoYXJlIGxpbmsgb24gdG9wIG9mIHRoZSBzaWRlIHBhbmVsXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSB7c3RyaW5nfSBpZCAtIGlkIG9mIHRoZSBkcm9wZG93blxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2hvd0V4cG9ydERyb3Bkb3duID0gY3JlYXRlQWN0aW9uKFxuICBBY3Rpb25UeXBlcy5TSE9XX0VYUE9SVF9EUk9QRE9XTixcbiAgaWQgPT4gaWRcbik7XG5cbi8qKlxuICogSGlkZSBzaWRlIHBhbmVsIGhlYWRlciBkcm9wZG93biwgYWN0aXZhdGVkIGJ5IGNsaWNraW5nIHRoZSBzaGFyZSBsaW5rIG9uIHRvcCBvZiB0aGUgc2lkZSBwYW5lbFxuICogQG1lbWJlcm9mIHVpU3RhdGVBY3Rpb25zXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBoaWRlRXhwb3J0RHJvcGRvd24gPSBjcmVhdGVBY3Rpb24oXG4gIEFjdGlvblR5cGVzLkhJREVfRVhQT1JUX0RST1BET1dOXG4pO1xuXG4vKipcbiAqIFRvZ2dsZSBhY3RpdmUgbWFwIGNvbnRyb2wgcGFuZWxcbiAqIEBtZW1iZXJvZiB1aVN0YXRlQWN0aW9uc1xuICogQHBhcmFtIHtzdHJpbmd9IHBhbmVsSWQgLSBtYXAgY29udHJvbCBwYW5lbCBpZCwgb25lIG9mIHRoZSBrZXlzIG9mOiBbYERFRkFVTFRfTUFQX0NPTlRST0xTYF0oI2RlZmF1bHRfbWFwX2NvbnRyb2xzKVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgdG9nZ2xlTWFwQ29udHJvbCA9IGNyZWF0ZUFjdGlvbihcbiAgQWN0aW9uVHlwZXMuVE9HR0xFX01BUF9DT05UUk9MLFxuICBwYW5lbElkID0+IHBhbmVsSWRcbik7XG5cbi8qKlxuICogVG9nZ2xlIGFjdGl2ZSBtYXAgY29udHJvbCBwYW5lbFxuICogQG1lbWJlcm9mIHVpU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0ge3N0cmluZ30gZGF0YXNldElkIC0gYGlkYCBvZiB0aGUgZGF0YXNldCB0byBiZSBkZWxldGVkXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBvcGVuRGVsZXRlTW9kYWwgPSBjcmVhdGVBY3Rpb24oXG4gIEFjdGlvblR5cGVzLk9QRU5fREVMRVRFX01PREFMLFxuICBkYXRhc2V0SWQgPT4gZGF0YXNldElkXG4pO1xuXG4vKipcbiAqIEFkZCBhIG5vdGlmaWNhdGlvbiB0byBiZSBkaXNwbGF5ZWRcbiAqIEBtZW1iZXJvZiB1aVN0YXRlQWN0aW9uc1xuICogQHBhcmFtIHtPYmplY3R9IG5vdGlmaWNhdGlvbiAtIFRoZSBgbm90aWZpY2F0aW9uYCBvYmplY3QgdG8gYmUgYWRkZWRcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IGFkZE5vdGlmaWNhdGlvbiA9IGNyZWF0ZUFjdGlvbihcbiAgQWN0aW9uVHlwZXMuQUREX05PVElGSUNBVElPTixcbiAgbm90aWZpY2F0aW9uID0+IG5vdGlmaWNhdGlvblxuKTtcblxuLyoqXG4gKiBSZW1vdmUgYSBub3RpZmljYXRpb25cbiAqIEBtZW1iZXJvZiB1aVN0YXRlQWN0aW9uc1xuICogQHBhcmFtIHtzdHJpbmd9IGlkIC0gYGlkYCBvZiB0aGUgbm90aWZpY2F0aW9uIHRvIGJlIHJlbW92ZWRcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHJlbW92ZU5vdGlmaWNhdGlvbiA9IGNyZWF0ZUFjdGlvbihcbiAgQWN0aW9uVHlwZXMuUkVNT1ZFX05PVElGSUNBVElPTixcbiAgaWQgPT4gaWRcbik7XG5cbi8qKlxuICogU2V0IGBleHBvcnRJbWFnZS5yYXRpb2BcbiAqIEBtZW1iZXJvZiB1aVN0YXRlQWN0aW9uc1xuICogQHBhcmFtIHtzdHJpbmd9IHJhdGlvIC0gb25lIG9mIGAnU0NSRUVOJ2AsIGAnRk9VUl9CWV9USFJFRSdgIGFuZCBgJ1NJWFRFRU5fQllfTklORSdgXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRSYXRpbyA9IGNyZWF0ZUFjdGlvbihBY3Rpb25UeXBlcy5TRVRfUkFUSU8sIHJhdGlvID0+IHJhdGlvKTtcblxuLyoqXG4gKiBTZXQgYGV4cG9ydEltYWdlLnJlc29sdXRpb25gXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSB7c3RyaW5nfSByZXNvbHV0aW9uIC0gb25lIG9mIGAnT05FX1gnYCwgYCdUV09fWCdgXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRSZXNvbHV0aW9uID0gY3JlYXRlQWN0aW9uKFxuICBBY3Rpb25UeXBlcy5TRVRfUkVTT0xVVElPTixcbiAgcmVzb2x1dGlvbiA9PiByZXNvbHV0aW9uXG4pO1xuXG4vKipcbiAqIFNldCBgZXhwb3J0SW1hZ2UubGVnZW5kYCB0byB0cnVlIG9yIGZhbHNlXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZUFjdGlvbnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHRvZ2dsZUxlZ2VuZCA9IGNyZWF0ZUFjdGlvbihBY3Rpb25UeXBlcy5UT0dHTEVfTEVHRU5EKTtcblxuLyoqXG4gKiBTZXQgYGV4cG9ydEltYWdlLmV4cG9ydGluZ2AgdG8gdHJ1ZVxuICogQG1lbWJlcm9mIHVpU3RhdGVBY3Rpb25zXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzdGFydEV4cG9ydGluZ0ltYWdlID0gY3JlYXRlQWN0aW9uKFxuICBBY3Rpb25UeXBlcy5TVEFSVF9FWFBPUlRJTkdfSU1BR0Vcbik7XG5cbi8qKlxuICogU2V0IGBleHBvcnRJbWFnZS5zZXRFeHBvcnRJbWFnZURhdGFVcmlgIHRvIGEgZGF0YVVyaVxuICogQG1lbWJlcm9mIHVpU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0ge3N0cmluZ30gZGF0YVVyaSAtIGV4cG9ydCBpbWFnZSBkYXRhIHVyaVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2V0RXhwb3J0SW1hZ2VEYXRhVXJpID0gY3JlYXRlQWN0aW9uKFxuICBBY3Rpb25UeXBlcy5TRVRfRVhQT1JUX0lNQUdFX0RBVEFfVVJJLFxuICBkYXRhVXJpID0+IGRhdGFVcmlcbik7XG5cbmV4cG9ydCBjb25zdCBzZXRFeHBvcnRJbWFnZUVycm9yID0gY3JlYXRlQWN0aW9uKFxuICBBY3Rpb25UeXBlcy5TRVRfRVhQT1JUX0lNQUdFX0VSUk9SLFxuICBlcnJvciA9PiBlcnJvclxuKTtcblxuLyoqXG4gKiBEZWxldGUgY2FjaGVkIGV4cG9ydCBpbWFnZVxuICogQG1lbWJlcm9mIHVpU3RhdGVBY3Rpb25zXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBjbGVhbnVwRXhwb3J0SW1hZ2UgPSBjcmVhdGVBY3Rpb24oXG4gIEFjdGlvblR5cGVzLkNMRUFOVVBfRVhQT1JUX0lNQUdFXG4pO1xuXG4vKipcbiAqIFNldCBzZWxlY3RlZCBkYXRhc2V0IGZvciBleHBvcnRcbiAqIEBtZW1iZXJvZiB1aVN0YXRlQWN0aW9uc1xuICogQHBhcmFtIHtzdHJpbmd9IGRhdGFzZXRJZCAtIGRhdGFzZXQgaWRcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNldEV4cG9ydFNlbGVjdGVkRGF0YXNldCA9IGNyZWF0ZUFjdGlvbihcbiAgQWN0aW9uVHlwZXMuU0VUX0VYUE9SVF9TRUxFQ1RFRF9EQVRBU0VULFxuICBkYXRhc2V0SWQgPT4gZGF0YXNldElkXG4pO1xuXG4vKipcbiAqIFNldCBkYXRhIGZvcm1hdCBmb3IgZXhwb3J0aW5nIGRhdGFcbiAqIEBtZW1iZXJvZiB1aVN0YXRlQWN0aW9uc1xuICogQHBhcmFtIHtzdHJpbmd9IGRhdGFUeXBlIC0gb25lIG9mIGAndGV4dC9jc3YnYFxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2V0RXhwb3J0RGF0YVR5cGUgPSBjcmVhdGVBY3Rpb24oXG4gIEFjdGlvblR5cGVzLlNFVF9FWFBPUlRfREFUQV9UWVBFLFxuICBkYXRhVHlwZSA9PiBkYXRhVHlwZVxuKTtcblxuLyoqXG4gKiBXaGV0aGVyIHRvIGV4cG9ydCBmaWx0ZXJlZCBkYXRhLCBgdHJ1ZWAgb3IgYGZhbHNlYFxuICogQG1lbWJlcm9mIHVpU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0ge2Jvb2xlYW59IHBheWxvYWQgLSBzZXQgYHRydWVgIHRvIG9ueSBleHBvcnQgZmlsdGVyZWQgZGF0YVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2V0RXhwb3J0RmlsdGVyZWQgPSBjcmVhdGVBY3Rpb24oXG4gIEFjdGlvblR5cGVzLlNFVF9FWFBPUlRfRklMVEVSRUQsXG4gIHBheWxvYWQgPT4gcGF5bG9hZFxuKTtcblxuLyoqXG4gKiBXaGV0aGVyIHRvIGluY2x1ZGluZyBkYXRhIGluIG1hcCBjb25maWcsIHRvZ2dsZSBiZXR3ZWVuIGB0cnVlYCBvciBgZmFsc2VgXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZUFjdGlvbnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNldEV4cG9ydERhdGEgPSBjcmVhdGVBY3Rpb24oQWN0aW9uVHlwZXMuU0VUX0VYUE9SVF9EQVRBKTtcblxuLyoqXG4gKiBXaGV0aGVyIHdlIGV4cG9ydCBhIG1hcGJveCBhY2Nlc3MgdG9rZW4gdXNlZCB0byBjcmVhdGUgYSBzaW5nbGUgbWFwIGh0bWwgZmlsZVxuICogQG1lbWJlcm9mIHVpU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0ge3N0cmluZ30gcGF5bG9hZCAtIG1hcGJveCBhY2Nlc3MgdG9rZW5cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNldFVzZXJNYXBib3hBY2Nlc3NUb2tlbiA9IGNyZWF0ZUFjdGlvbihcbiAgQWN0aW9uVHlwZXMuU0VUX1VTRVJfTUFQQk9YX0FDQ0VTU19UT0tFTixcbiAgcGF5bG9hZCA9PiBwYXlsb2FkXG4pO1xuXG4vKipcbiAqIFNldCB0aGUgZXhwb3J0IG1hcCBmb3JtYXQgKGh0bWwsIGpzb24pXG4gKiBAbWVtYmVyT2YgdWlTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXlsb2FkIC0gbWFwIGZvcm1hdFxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2V0RXhwb3J0TWFwRm9ybWF0ID0gY3JlYXRlQWN0aW9uKFxuICBBY3Rpb25UeXBlcy5TRVRfRVhQT1JUX01BUF9GT1JNQVQsXG4gIHBheWxvYWQgPT4gcGF5bG9hZFxuKTtcblxuLyoqXG4gKiBTZXQgdGhlIEhUTUwgbW9kZSB0byB1c2UgdG8gZXhwb3J0IEhUTUwgbW9kZVxuICogQHR5cGUge2FjdGlvbkNyZWF0b3J9XG4gKi9cbmV4cG9ydCBjb25zdCBzZXRFeHBvcnRIVE1MTWFwTW9kZSA9IGNyZWF0ZUFjdGlvbihcbiAgQWN0aW9uVHlwZXMuU0VUX0VYUE9SVF9NQVBfSFRNTF9NT0RFLFxuICBwYXlsb2FkID0+IHBheWxvYWRcbik7XG5cbi8qKlxuICogVGhpcyBkZWNsYXJhdGlvbiBpcyBuZWVkZWQgdG8gZ3JvdXAgYWN0aW9ucyBpbiBkb2NzXG4gKi9cbi8qKlxuICogQWN0aW9ucyBoYW5kbGVkIG1vc3RseSBieSAgYHVpU3RhdGVgIHJlZHVjZXIuXG4gKiBUaGV5IG1hbmFnZSBVSSBjaGFuZ2VzIGluIHRoYSBhcHAsIHN1Y2ggYXMgb3BlbiBhbmQgY2xvc2Ugc2lkZSBwYW5lbCxcbiAqIHN3aXRjaCBiZXR3ZWVuIHRhYnMgaW4gdGhlIHNpZGUgcGFuZWwsIG9wZW4gYW5kIGNsb3NlIG1vZGFsIGRpYWxvZyBmb3IgZXhwb3J0aW5nIGRhdGEgLyBpbWFnZXMgZXRjLlxuICogSXQgYWxzbyBtYW5nZXMgd2hpY2ggc2V0dGluZ3MgYXJlIHNlbGVjdGVkIGR1cmluZyBpbWFnZSBhbmQgbWFwIGV4cG9ydFxuICpcbiAqIEBwdWJsaWNcbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tdW51c2VkLXZhcnMgKi9cbmNvbnN0IHVpU3RhdGVBY3Rpb25zID0gbnVsbDtcbi8qIGVzbGludC1lbmFibGUgbm8tdW51c2VkLXZhcnMgKi9cbiJdfQ==