kepler.gl
Version:
kepler.gl is a webgl based application to visualize large scale location data in the browser
271 lines (241 loc) • 20 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.layerConfigChange = layerConfigChange;
exports.layerTypeChange = layerTypeChange;
exports.layerVisualChannelConfigChange = layerVisualChannelConfigChange;
exports.layerVisConfigChange = layerVisConfigChange;
exports.updateLayerBlending = updateLayerBlending;
exports.interactionConfigChange = interactionConfigChange;
exports.setFilter = setFilter;
exports.addFilter = addFilter;
exports.addLayer = addLayer;
exports.reorderLayer = reorderLayer;
exports.removeFilter = removeFilter;
exports.removeLayer = removeLayer;
exports.removeDataset = removeDataset;
exports.showDatasetTable = showDatasetTable;
exports.updateVisData = updateVisData;
exports.toggleAnimation = toggleAnimation;
exports.updateAnimationSpeed = updateAnimationSpeed;
exports.enlargeFilter = enlargeFilter;
exports.onLayerHover = onLayerHover;
exports.onLayerClick = onLayerClick;
exports.onMapClick = onMapClick;
exports.toggleLayerForMap = toggleLayerForMap;
exports.setVisibleLayersForMap = setVisibleLayersForMap;
exports.setFilterPlot = setFilterPlot;
exports.loadFiles = loadFiles;
exports.loadFilesErr = loadFilesErr;
var _actionTypes = require('../constants/action-types');
var _actionTypes2 = _interopRequireDefault(_actionTypes);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function layerConfigChange(oldLayer, newConfig) {
return {
type: _actionTypes2.default.LAYER_CONFIG_CHANGE,
oldLayer: oldLayer,
newConfig: newConfig
};
} // Copyright (c) 2018 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.
// vis-state-reducer
function layerTypeChange(oldLayer, newType) {
return {
type: _actionTypes2.default.LAYER_TYPE_CHANGE,
oldLayer: oldLayer,
newType: newType
};
}
function layerVisualChannelConfigChange(oldLayer, newConfig, channel) {
return {
type: _actionTypes2.default.LAYER_VISUAL_CHANNEL_CHANGE,
oldLayer: oldLayer,
newConfig: newConfig,
channel: channel
};
}
function layerVisConfigChange(oldLayer, newVisConfig) {
return {
type: _actionTypes2.default.LAYER_VIS_CONFIG_CHANGE,
oldLayer: oldLayer,
newVisConfig: newVisConfig
};
}
function updateLayerBlending(mode) {
return {
type: _actionTypes2.default.UPDATE_LAYER_BLENDING,
mode: mode
};
}
function interactionConfigChange(config) {
return {
type: _actionTypes2.default.INTERACTION_CONFIG_CHANGE,
config: config
};
}
function setFilter(idx, prop, value) {
return {
type: _actionTypes2.default.SET_FILTER,
idx: idx,
prop: prop,
value: value
};
}
function addFilter(dataId) {
return {
type: _actionTypes2.default.ADD_FILTER,
dataId: dataId
};
}
function addLayer(props) {
return {
type: _actionTypes2.default.ADD_LAYER,
props: props
};
}
function reorderLayer(order) {
return {
type: _actionTypes2.default.REORDER_LAYER,
order: order
};
}
function removeFilter(idx) {
return {
type: _actionTypes2.default.REMOVE_FILTER,
idx: idx
};
}
function removeLayer(idx) {
return {
type: _actionTypes2.default.REMOVE_LAYER,
idx: idx
};
}
function removeDataset(key) {
return {
type: _actionTypes2.default.REMOVE_DATASET,
key: key
};
}
function showDatasetTable(dataId) {
return {
type: _actionTypes2.default.SHOW_DATASET_TABLE,
dataId: dataId
};
}
/**
*
* @param datasets - Array of datasets :
* {info: {id: '', color: hex, label: '']}, data: {fields: [], rows: []}}
* @param options {centerMap, readOnly}
* @param config {visState, mapState, mapStyle}
* @returns {{type: null, datasets: *, options: *}}
*/
function updateVisData(datasets, options, config) {
return {
type: _actionTypes2.default.UPDATE_VIS_DATA,
datasets: datasets,
options: options,
config: config
};
}
function toggleAnimation(idx) {
return {
type: _actionTypes2.default.TOGGLE_FILTER_ANIMATION,
idx: idx
};
}
function updateAnimationSpeed(idx, speed) {
return {
type: _actionTypes2.default.UPDATE_FILTER_ANIMATION_SPEED,
idx: idx,
speed: speed
};
}
function enlargeFilter(idx) {
return {
type: _actionTypes2.default.ENLARGE_FILTER,
idx: idx
};
}
function onLayerHover(info) {
return {
type: _actionTypes2.default.LAYER_HOVER,
info: info
};
}
function onLayerClick(info) {
return {
type: _actionTypes2.default.LAYER_CLICK,
info: info
};
}
function onMapClick() {
return {
type: _actionTypes2.default.MAP_CLICK
};
}
/**
* Toggle a single layer for a give map
* @param mapIndex
* @param layerId
* @returns {{type: *, mapIndex: *, layerId: *}}
*/
function toggleLayerForMap(mapIndex, layerId) {
return {
type: _actionTypes2.default.TOGGLE_LAYER_FOR_MAP,
mapIndex: mapIndex,
layerId: layerId
};
}
/**
* Toggle layer visibility on split views
* @param layerIndex the layer we want to toggle visibility on
* @param mapIndex the map index
* @returns {{type: null, layerIndex: *, mapIndex: *}}
*/
function setVisibleLayersForMap(mapIndex, layerIds) {
return {
type: _actionTypes2.default.SET_VISIBLE_LAYERS_FOR_MAP,
mapIndex: mapIndex,
layerIds: layerIds
};
}
function setFilterPlot(idx, newProp) {
return {
type: _actionTypes2.default.SET_FILTER_PLOT,
idx: idx,
newProp: newProp
};
}
function loadFiles(files) {
return {
type: _actionTypes2.default.LOAD_FILES,
files: files
};
}
function loadFilesErr(error) {
return {
type: _actionTypes2.default.LOAD_FILES_ERR,
error: error
};
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hY3Rpb25zL3Zpcy1zdGF0ZS1hY3Rpb25zLmpzIl0sIm5hbWVzIjpbImxheWVyQ29uZmlnQ2hhbmdlIiwibGF5ZXJUeXBlQ2hhbmdlIiwibGF5ZXJWaXN1YWxDaGFubmVsQ29uZmlnQ2hhbmdlIiwibGF5ZXJWaXNDb25maWdDaGFuZ2UiLCJ1cGRhdGVMYXllckJsZW5kaW5nIiwiaW50ZXJhY3Rpb25Db25maWdDaGFuZ2UiLCJzZXRGaWx0ZXIiLCJhZGRGaWx0ZXIiLCJhZGRMYXllciIsInJlb3JkZXJMYXllciIsInJlbW92ZUZpbHRlciIsInJlbW92ZUxheWVyIiwicmVtb3ZlRGF0YXNldCIsInNob3dEYXRhc2V0VGFibGUiLCJ1cGRhdGVWaXNEYXRhIiwidG9nZ2xlQW5pbWF0aW9uIiwidXBkYXRlQW5pbWF0aW9uU3BlZWQiLCJlbmxhcmdlRmlsdGVyIiwib25MYXllckhvdmVyIiwib25MYXllckNsaWNrIiwib25NYXBDbGljayIsInRvZ2dsZUxheWVyRm9yTWFwIiwic2V0VmlzaWJsZUxheWVyc0Zvck1hcCIsInNldEZpbHRlclBsb3QiLCJsb2FkRmlsZXMiLCJsb2FkRmlsZXNFcnIiLCJvbGRMYXllciIsIm5ld0NvbmZpZyIsInR5cGUiLCJBY3Rpb25UeXBlcyIsIkxBWUVSX0NPTkZJR19DSEFOR0UiLCJuZXdUeXBlIiwiTEFZRVJfVFlQRV9DSEFOR0UiLCJjaGFubmVsIiwiTEFZRVJfVklTVUFMX0NIQU5ORUxfQ0hBTkdFIiwibmV3VmlzQ29uZmlnIiwiTEFZRVJfVklTX0NPTkZJR19DSEFOR0UiLCJtb2RlIiwiVVBEQVRFX0xBWUVSX0JMRU5ESU5HIiwiY29uZmlnIiwiSU5URVJBQ1RJT05fQ09ORklHX0NIQU5HRSIsImlkeCIsInByb3AiLCJ2YWx1ZSIsIlNFVF9GSUxURVIiLCJkYXRhSWQiLCJBRERfRklMVEVSIiwicHJvcHMiLCJBRERfTEFZRVIiLCJvcmRlciIsIlJFT1JERVJfTEFZRVIiLCJSRU1PVkVfRklMVEVSIiwiUkVNT1ZFX0xBWUVSIiwia2V5IiwiUkVNT1ZFX0RBVEFTRVQiLCJTSE9XX0RBVEFTRVRfVEFCTEUiLCJkYXRhc2V0cyIsIm9wdGlvbnMiLCJVUERBVEVfVklTX0RBVEEiLCJUT0dHTEVfRklMVEVSX0FOSU1BVElPTiIsInNwZWVkIiwiVVBEQVRFX0ZJTFRFUl9BTklNQVRJT05fU1BFRUQiLCJFTkxBUkdFX0ZJTFRFUiIsImluZm8iLCJMQVlFUl9IT1ZFUiIsIkxBWUVSX0NMSUNLIiwiTUFQX0NMSUNLIiwibWFwSW5kZXgiLCJsYXllcklkIiwiVE9HR0xFX0xBWUVSX0ZPUl9NQVAiLCJsYXllcklkcyIsIlNFVF9WSVNJQkxFX0xBWUVSU19GT1JfTUFQIiwibmV3UHJvcCIsIlNFVF9GSUxURVJfUExPVCIsImZpbGVzIiwiTE9BRF9GSUxFUyIsImVycm9yIiwiTE9BRF9GSUxFU19FUlIiXSwibWFwcGluZ3MiOiI7Ozs7O1FBdUJnQkEsaUIsR0FBQUEsaUI7UUFRQUMsZSxHQUFBQSxlO1FBUUFDLDhCLEdBQUFBLDhCO1FBU0FDLG9CLEdBQUFBLG9CO1FBUUFDLG1CLEdBQUFBLG1CO1FBT0FDLHVCLEdBQUFBLHVCO1FBT0FDLFMsR0FBQUEsUztRQVNBQyxTLEdBQUFBLFM7UUFPQUMsUSxHQUFBQSxRO1FBT0FDLFksR0FBQUEsWTtRQU9BQyxZLEdBQUFBLFk7UUFPQUMsVyxHQUFBQSxXO1FBT0FDLGEsR0FBQUEsYTtRQU9BQyxnQixHQUFBQSxnQjtRQWVBQyxhLEdBQUFBLGE7UUFTQUMsZSxHQUFBQSxlO1FBT0FDLG9CLEdBQUFBLG9CO1FBUUFDLGEsR0FBQUEsYTtRQU9BQyxZLEdBQUFBLFk7UUFPQUMsWSxHQUFBQSxZO1FBT0FDLFUsR0FBQUEsVTtRQVlBQyxpQixHQUFBQSxpQjtRQWNBQyxzQixHQUFBQSxzQjtRQVFBQyxhLEdBQUFBLGE7UUFRQUMsUyxHQUFBQSxTO1FBT0FDLFksR0FBQUEsWTs7QUFqTmhCOzs7Ozs7QUFFTyxTQUFTekIsaUJBQVQsQ0FBMkIwQixRQUEzQixFQUFxQ0MsU0FBckMsRUFBZ0Q7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QUFTaEQsU0FBVCxDQUFtQmtELEtBQW5CLEVBQTBCO0FBQy9CLFNBQU87QUFDTDlDLFVBQU1DLHNCQUFZOEMsVUFEYjtBQUVMRDtBQUZLLEdBQVA7QUFJRDs7QUFFTSxTQUFTakQsWUFBVCxDQUFzQm1ELEtBQXRCLEVBQTZCO0FBQ2xDLFNBQU87QUFDTGhELFVBQU1DLHNCQUFZZ0QsY0FEYjtBQUVMRDtBQUZLLEdBQVA7QUFJRCIsImZpbGUiOiJ2aXMtc3RhdGUtYWN0aW9ucy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgMjAxOCBVYmVyIFRlY2hub2xvZ2llcywgSW5jLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyBUSEUgU09GVFdBUkUuXG5cbi8vIHZpcy1zdGF0ZS1yZWR1Y2VyXG5pbXBvcnQgQWN0aW9uVHlwZXMgZnJvbSAnY29uc3RhbnRzL2FjdGlvbi10eXBlcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBsYXllckNvbmZpZ0NoYW5nZShvbGRMYXllciwgbmV3Q29uZmlnKSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuTEFZRVJfQ09ORklHX0NIQU5HRSxcbiAgICBvbGRMYXllcixcbiAgICBuZXdDb25maWdcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxheWVyVHlwZUNoYW5nZShvbGRMYXllciwgbmV3VHlwZSkge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLkxBWUVSX1RZUEVfQ0hBTkdFLFxuICAgIG9sZExheWVyLFxuICAgIG5ld1R5cGVcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxheWVyVmlzdWFsQ2hhbm5lbENvbmZpZ0NoYW5nZShvbGRMYXllciwgbmV3Q29uZmlnLCBjaGFubmVsKSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuTEFZRVJfVklTVUFMX0NIQU5ORUxfQ0hBTkdFLFxuICAgIG9sZExheWVyLFxuICAgIG5ld0NvbmZpZyxcbiAgICBjaGFubmVsXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsYXllclZpc0NvbmZpZ0NoYW5nZShvbGRMYXllciwgbmV3VmlzQ29uZmlnKSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuTEFZRVJfVklTX0NPTkZJR19DSEFOR0UsXG4gICAgb2xkTGF5ZXIsXG4gICAgbmV3VmlzQ29uZmlnXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1cGRhdGVMYXllckJsZW5kaW5nKG1vZGUpIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5VUERBVEVfTEFZRVJfQkxFTkRJTkcsXG4gICAgbW9kZVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW50ZXJhY3Rpb25Db25maWdDaGFuZ2UoY29uZmlnKSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuSU5URVJBQ1RJT05fQ09ORklHX0NIQU5HRSxcbiAgICBjb25maWdcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldEZpbHRlcihpZHgsIHByb3AsIHZhbHVlKSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuU0VUX0ZJTFRFUixcbiAgICBpZHgsXG4gICAgcHJvcCxcbiAgICB2YWx1ZVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYWRkRmlsdGVyKGRhdGFJZCkge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLkFERF9GSUxURVIsXG4gICAgZGF0YUlkXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhZGRMYXllcihwcm9wcykge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLkFERF9MQVlFUixcbiAgICBwcm9wc1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVvcmRlckxheWVyKG9yZGVyKSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuUkVPUkRFUl9MQVlFUixcbiAgICBvcmRlclxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlRmlsdGVyKGlkeCkge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLlJFTU9WRV9GSUxURVIsXG4gICAgaWR4XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVMYXllcihpZHgpIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5SRU1PVkVfTEFZRVIsXG4gICAgaWR4XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVEYXRhc2V0KGtleSkge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLlJFTU9WRV9EQVRBU0VULFxuICAgIGtleVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2hvd0RhdGFzZXRUYWJsZShkYXRhSWQpIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5TSE9XX0RBVEFTRVRfVEFCTEUsXG4gICAgZGF0YUlkXG4gIH07XG59XG5cbi8qKlxuICpcbiAqIEBwYXJhbSBkYXRhc2V0cyAtIEFycmF5IG9mIGRhdGFzZXRzIDpcbiAqIHtpbmZvOiB7aWQ6ICcnLCBjb2xvcjogaGV4LCBsYWJlbDogJyddfSwgZGF0YToge2ZpZWxkczogW10sIHJvd3M6IFtdfX1cbiAqIEBwYXJhbSBvcHRpb25zIHtjZW50ZXJNYXAsIHJlYWRPbmx5fVxuICogQHBhcmFtIGNvbmZpZyB7dmlzU3RhdGUsIG1hcFN0YXRlLCBtYXBTdHlsZX1cbiAqIEByZXR1cm5zIHt7dHlwZTogbnVsbCwgZGF0YXNldHM6ICosIG9wdGlvbnM6ICp9fVxuICovXG5leHBvcnQgZnVuY3Rpb24gdXBkYXRlVmlzRGF0YShkYXRhc2V0cywgb3B0aW9ucywgY29uZmlnKSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuVVBEQVRFX1ZJU19EQVRBLFxuICAgIGRhdGFzZXRzLFxuICAgIG9wdGlvbnMsXG4gICAgY29uZmlnXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0b2dnbGVBbmltYXRpb24oaWR4KSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuVE9HR0xFX0ZJTFRFUl9BTklNQVRJT04sXG4gICAgaWR4XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1cGRhdGVBbmltYXRpb25TcGVlZChpZHgsIHNwZWVkKSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuVVBEQVRFX0ZJTFRFUl9BTklNQVRJT05fU1BFRUQsXG4gICAgaWR4LFxuICAgIHNwZWVkXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlbmxhcmdlRmlsdGVyKGlkeCkge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLkVOTEFSR0VfRklMVEVSLFxuICAgIGlkeFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gb25MYXllckhvdmVyKGluZm8pIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5MQVlFUl9IT1ZFUixcbiAgICBpbmZvXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBvbkxheWVyQ2xpY2soaW5mbykge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLkxBWUVSX0NMSUNLLFxuICAgIGluZm9cbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG9uTWFwQ2xpY2soKSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuTUFQX0NMSUNLXG4gIH07XG59XG5cbi8qKlxuICogVG9nZ2xlIGEgc2luZ2xlIGxheWVyIGZvciBhIGdpdmUgbWFwXG4gKiBAcGFyYW0gbWFwSW5kZXhcbiAqIEBwYXJhbSBsYXllcklkXG4gKiBAcmV0dXJucyB7e3R5cGU6ICosIG1hcEluZGV4OiAqLCBsYXllcklkOiAqfX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvZ2dsZUxheWVyRm9yTWFwKG1hcEluZGV4LCBsYXllcklkKSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuVE9HR0xFX0xBWUVSX0ZPUl9NQVAsXG4gICAgbWFwSW5kZXgsXG4gICAgbGF5ZXJJZFxuICB9O1xufVxuXG4vKipcbiAqIFRvZ2dsZSBsYXllciB2aXNpYmlsaXR5IG9uIHNwbGl0IHZpZXdzXG4gKiBAcGFyYW0gbGF5ZXJJbmRleCB0aGUgbGF5ZXIgd2Ugd2FudCB0byB0b2dnbGUgdmlzaWJpbGl0eSBvblxuICogQHBhcmFtIG1hcEluZGV4IHRoZSBtYXAgaW5kZXhcbiAqIEByZXR1cm5zIHt7dHlwZTogbnVsbCwgbGF5ZXJJbmRleDogKiwgbWFwSW5kZXg6ICp9fVxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0VmlzaWJsZUxheWVyc0Zvck1hcChtYXBJbmRleCwgbGF5ZXJJZHMpIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5TRVRfVklTSUJMRV9MQVlFUlNfRk9SX01BUCxcbiAgICBtYXBJbmRleCxcbiAgICBsYXllcklkc1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0RmlsdGVyUGxvdChpZHgsIG5ld1Byb3ApIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5TRVRfRklMVEVSX1BMT1QsXG4gICAgaWR4LFxuICAgIG5ld1Byb3BcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxvYWRGaWxlcyhmaWxlcykge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLkxPQURfRklMRVMsXG4gICAgZmlsZXNcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxvYWRGaWxlc0VycihlcnJvcikge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLkxPQURfRklMRVNfRVJSLFxuICAgIGVycm9yXG4gIH07XG59XG4iXX0=
;