@kepler.gl/components 3.3.0-alpha.1 → 3.3.0-alpha.3
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.
- package/dist/common/action-panel.js +1 -1
- package/dist/common/color-legend.d.ts +1 -1
- package/dist/common/data-table/canvas.d.ts +1 -1
- package/dist/common/data-table/index.d.ts +1 -1
- package/dist/common/dnd-layer-items.d.ts +4 -0
- package/dist/common/dnd-layer-items.js +6 -2
- package/dist/common/error-boundary.d.ts +1 -1
- package/dist/common/file-uploader/file-upload.d.ts +1 -1
- package/dist/common/flex-container.d.ts +15 -7
- package/dist/common/icon-button.d.ts +53 -6
- package/dist/common/icons/arrow-down-full.d.ts +2 -1
- package/dist/common/icons/arrow-down-full.js +1 -1
- package/dist/common/icons/folder.d.ts +10 -0
- package/dist/common/icons/folder.js +51 -0
- package/dist/common/icons/index.d.ts +1 -0
- package/dist/common/icons/index.js +8 -1
- package/dist/common/icons/timeline-marker.d.ts +2 -1
- package/dist/common/icons/timeline-marker.js +1 -1
- package/dist/common/item-selector/dropdown-list.d.ts +1 -1
- package/dist/common/item-selector/dropdown-list.js +1 -1
- package/dist/common/item-selector/dropdown-select.d.ts +13 -7
- package/dist/common/item-selector/item-selector.d.ts +1 -1
- package/dist/common/item-selector/item-selector.js +1 -1
- package/dist/common/item-selector/typeahead.d.ts +4 -4
- package/dist/common/item-selector/typeahead.js +1 -3
- package/dist/common/layout-splitter.d.ts +45 -0
- package/dist/common/layout-splitter.js +231 -0
- package/dist/common/line-chart.d.ts +7 -3
- package/dist/common/line-chart.js +179 -59
- package/dist/common/modal.d.ts +11 -5
- package/dist/common/modal.js +1 -1
- package/dist/common/portaled.d.ts +17 -17
- package/dist/common/range-slider.js +1 -3
- package/dist/common/slider/mouse-event.d.ts +1 -1
- package/dist/common/slider/mouse-event.js +1 -2
- package/dist/common/slider/slider-bar-handle.d.ts +1 -1
- package/dist/common/slider/slider-bar-handle.js +1 -1
- package/dist/common/slider/slider-handle.d.ts +3 -3
- package/dist/common/slider/slider-handle.js +1 -1
- package/dist/common/slider/slider.d.ts +4 -4
- package/dist/common/slider/slider.js +1 -1
- package/dist/common/styled-components.d.ts +627 -177
- package/dist/common/vertical-toolbar.d.ts +12 -2
- package/dist/container.d.ts +3 -2
- package/dist/container.js +2 -2
- package/dist/context.d.ts +1 -1
- package/dist/context.js +1 -1
- package/dist/dnd-context.d.ts +4 -3
- package/dist/dnd-context.js +64 -9
- package/dist/effects/compact-color-picker.d.ts +1 -1
- package/dist/effects/effect-configurator.d.ts +2 -4
- package/dist/effects/effect-time-configurator.js +1 -1
- package/dist/effects/effect-type-list-item.d.ts +1 -1
- package/dist/filters/components.d.ts +7 -5
- package/dist/filters/filter-panels/filter-synced-dataset-panel.d.ts +6 -2
- package/dist/geocoder-panel.d.ts +2 -2
- package/dist/geocoder-panel.js +6 -7
- package/dist/hooks/use-dnd-layers.d.ts +4 -3
- package/dist/hooks/use-dnd-layers.js +103 -42
- package/dist/index.d.ts +3 -2
- package/dist/index.js +38 -9
- package/dist/injector.d.ts +1 -1
- package/dist/kepler-gl.d.ts +167 -27
- package/dist/kepler-gl.js +3 -2
- package/dist/loading-indicator.d.ts +1 -1
- package/dist/map/layer-hover-info.d.ts +7 -3
- package/dist/map/layer-hover-info.js +58 -22
- package/dist/map/map-control-panel.js +3 -2
- package/dist/map/map-control-toolbar.d.ts +29 -4
- package/dist/map/map-control.d.ts +11 -4
- package/dist/map/map-control.js +7 -6
- package/dist/map/map-legend-panel.d.ts +11 -2
- package/dist/map/map-legend-panel.js +19 -2
- package/dist/map/map-legend.d.ts +19 -2
- package/dist/map/map-legend.js +141 -27
- package/dist/map/split-map-button.d.ts +6 -1
- package/dist/map/split-map-button.js +113 -19
- package/dist/map-container.js +20 -3
- package/dist/maps-layout.d.ts +3 -0
- package/dist/maps-layout.js +86 -26
- package/dist/modal-container.d.ts +1 -1
- package/dist/modals/cloud-tile.d.ts +1 -2
- package/dist/modals/export-map-modal/components.d.ts +9 -5
- package/dist/modals/export-video-modal.d.ts +3 -0
- package/dist/modals/export-video-modal.js +79 -46
- package/dist/modals/export-video-modal.spec.js +2 -2
- package/dist/modals/hubble-utils.d.ts +16 -0
- package/dist/modals/hubble-utils.js +98 -1
- package/dist/modals/modal-dialog.d.ts +1 -1
- package/dist/modals/share-map-modal.d.ts +2 -4
- package/dist/modals/swipe-composite-utils.d.ts +10 -0
- package/dist/modals/swipe-composite-utils.js +108 -0
- package/dist/modals/swipe-export-settings.d.ts +24 -0
- package/dist/modals/swipe-export-settings.js +370 -0
- package/dist/modals/swipe-export-video-container.d.ts +122 -0
- package/dist/modals/swipe-export-video-container.js +630 -0
- package/dist/modals/swipe-export-video-preview.d.ts +68 -0
- package/dist/modals/swipe-export-video-preview.js +339 -0
- package/dist/modals/tilesets-modals/tileset-raster-form.js +1 -5
- package/dist/side-panel/filter-panel/filter-panel-header.d.ts +7 -3
- package/dist/side-panel/layer-manager.d.ts +5 -4
- package/dist/side-panel/layer-manager.js +16 -4
- package/dist/side-panel/layer-panel/color-selector.d.ts +6 -4
- package/dist/side-panel/layer-panel/custom-palette.d.ts +3 -5
- package/dist/side-panel/layer-panel/dataset-layer-group.d.ts +2 -1
- package/dist/side-panel/layer-panel/dataset-layer-group.js +1 -1
- package/dist/side-panel/layer-panel/dataset-layer-section.d.ts +2 -1
- package/dist/side-panel/layer-panel/dataset-layer-section.js +1 -1
- package/dist/side-panel/layer-panel/layer-config-group.d.ts +5 -11
- package/dist/side-panel/layer-panel/layer-configurator.js +130 -82
- package/dist/side-panel/layer-panel/layer-group-header.d.ts +15 -0
- package/dist/side-panel/layer-panel/layer-group-header.js +179 -0
- package/dist/side-panel/layer-panel/layer-list.d.ts +9 -4
- package/dist/side-panel/layer-panel/layer-list.js +197 -40
- package/dist/side-panel/layer-panel/vector-tile-layer-configurator.js +2 -10
- package/dist/side-panel/panel-tab.d.ts +1 -3
- package/dist/side-panel/panel-view-list-toggle.d.ts +4 -4
- package/dist/side-panel/side-bar.d.ts +1 -6
- package/dist/side-panel.d.ts +1 -1
- package/dist/types.d.ts +2 -2
- package/dist/types.js +1 -1
- package/package.json +32 -36
- package/dist/map/layer-selector-panel.d.ts +0 -21
- package/dist/map/layer-selector-panel.js +0 -85
- package/dist/side-panel/layer-panel/radius-by-zoom-input.d.ts +0 -11
- package/dist/side-panel/layer-panel/radius-by-zoom-input.js +0 -220
package/dist/map/map-legend.js
CHANGED
|
@@ -28,7 +28,8 @@ var _localization = require("@kepler.gl/localization");
|
|
|
28
28
|
var _viewportMercatorProject = require("viewport-mercator-project");
|
|
29
29
|
var _icons = require("../common/icons");
|
|
30
30
|
var _panelHeaderAction = _interopRequireDefault(require("../side-panel/panel-header-action"));
|
|
31
|
-
var
|
|
31
|
+
var _reducers = require("@kepler.gl/reducers");
|
|
32
|
+
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6; // SPDX-License-Identifier: MIT
|
|
32
33
|
// Copyright contributors to the kepler.gl project
|
|
33
34
|
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); }
|
|
34
35
|
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; }
|
|
@@ -69,6 +70,13 @@ var StyledVisibilityToggle = _styledComponents["default"].div(_templateObject3 |
|
|
|
69
70
|
}, function (props) {
|
|
70
71
|
return props.theme.textColorHl;
|
|
71
72
|
});
|
|
73
|
+
var StyledSplitVisibilityControls = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n margin-left: 8px;\n gap: 4px;\n\n ", " {\n margin-left: 0;\n }\n"])), StyledVisibilityToggle);
|
|
74
|
+
var StyledSplitSeparator = _styledComponents["default"].div(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n width: 1px;\n height: 12px;\n background: ", ";\n opacity: 0.3;\n"])), function (props) {
|
|
75
|
+
return props.$isVisible ? props.theme.textColor : props.theme.subtextColor;
|
|
76
|
+
});
|
|
77
|
+
var StyledExpandToggle = _styledComponents["default"].div(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n cursor: pointer;\n display: flex;\n align-items: center;\n margin-left: 6px;\n color: ", ";\n opacity: 0.7;\n\n &:hover {\n opacity: 1;\n }\n"])), function (props) {
|
|
78
|
+
return props.theme.textColor;
|
|
79
|
+
});
|
|
72
80
|
var VisualChannelMetric = exports.VisualChannelMetric = function VisualChannelMetric(_ref) {
|
|
73
81
|
var name = _ref.name;
|
|
74
82
|
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
@@ -248,24 +256,67 @@ var isRadiusChannel = function isRadiusChannel(visualChannel) {
|
|
|
248
256
|
};
|
|
249
257
|
function LayerLegendHeaderFactory() {
|
|
250
258
|
var LayerLegendHeader = function LayerLegendHeader(_ref6) {
|
|
259
|
+
var _splitMaps$, _splitMaps$2;
|
|
251
260
|
var options = _ref6.options,
|
|
252
261
|
layer = _ref6.layer,
|
|
253
|
-
|
|
262
|
+
isExport = _ref6.isExport,
|
|
263
|
+
onToggleLayerVisibility = _ref6.onToggleLayerVisibility,
|
|
264
|
+
isSplit = _ref6.isSplit,
|
|
265
|
+
splitMaps = _ref6.splitMaps,
|
|
266
|
+
onMapToggleLayer = _ref6.onMapToggleLayer,
|
|
267
|
+
isExpanded = _ref6.isExpanded,
|
|
268
|
+
onToggleExpanded = _ref6.onToggleExpanded;
|
|
254
269
|
var isVisible = layer.config.isVisible;
|
|
255
270
|
var onToggle = (0, _react.useCallback)(function () {
|
|
256
271
|
if (onToggleLayerVisibility) {
|
|
257
272
|
onToggleLayerVisibility(layer);
|
|
258
273
|
}
|
|
259
274
|
}, [layer, onToggleLayerVisibility]);
|
|
275
|
+
var onToggleLeft = (0, _react.useCallback)(function () {
|
|
276
|
+
if (onMapToggleLayer) {
|
|
277
|
+
onMapToggleLayer(0, layer.id);
|
|
278
|
+
}
|
|
279
|
+
}, [layer, onMapToggleLayer]);
|
|
280
|
+
var onToggleRight = (0, _react.useCallback)(function () {
|
|
281
|
+
if (onMapToggleLayer) {
|
|
282
|
+
onMapToggleLayer(1, layer.id);
|
|
283
|
+
}
|
|
284
|
+
}, [layer, onMapToggleLayer]);
|
|
260
285
|
if ((options === null || options === void 0 ? void 0 : options.showLayerName) === false) {
|
|
261
286
|
return null;
|
|
262
287
|
}
|
|
288
|
+
var isLeftVisible = isSplit && splitMaps && splitMaps.length > 1 ? isVisible && Boolean((_splitMaps$ = splitMaps[0]) === null || _splitMaps$ === void 0 || (_splitMaps$ = _splitMaps$.layers) === null || _splitMaps$ === void 0 ? void 0 : _splitMaps$[layer.id]) : isVisible;
|
|
289
|
+
var isRightVisible = isSplit && splitMaps && splitMaps.length > 1 ? isVisible && Boolean((_splitMaps$2 = splitMaps[1]) === null || _splitMaps$2 === void 0 || (_splitMaps$2 = _splitMaps$2.layers) === null || _splitMaps$2 === void 0 ? void 0 : _splitMaps$2[layer.id]) : isVisible;
|
|
290
|
+
var isAnyVisible = isLeftVisible || isRightVisible;
|
|
263
291
|
return /*#__PURE__*/_react["default"].createElement(StyledLegendHeaderRow, null, /*#__PURE__*/_react["default"].createElement("div", {
|
|
264
292
|
className: "legend--layer_name",
|
|
265
293
|
style: {
|
|
266
|
-
opacity:
|
|
294
|
+
opacity: isAnyVisible ? 1 : 0.5,
|
|
295
|
+
flex: 1
|
|
267
296
|
}
|
|
268
|
-
}, layer.config.label),
|
|
297
|
+
}, layer.config.label), onToggleExpanded ? /*#__PURE__*/_react["default"].createElement(StyledExpandToggle, {
|
|
298
|
+
onClick: onToggleExpanded
|
|
299
|
+
}, isExpanded ? /*#__PURE__*/_react["default"].createElement(_icons.ArrowDown, {
|
|
300
|
+
height: "12px"
|
|
301
|
+
}) : /*#__PURE__*/_react["default"].createElement(_icons.ArrowRight, {
|
|
302
|
+
height: "12px"
|
|
303
|
+
})) : null, !isExport && onMapToggleLayer && isSplit && splitMaps && splitMaps.length > 1 ? /*#__PURE__*/_react["default"].createElement(StyledSplitVisibilityControls, null, /*#__PURE__*/_react["default"].createElement(StyledVisibilityToggle, {
|
|
304
|
+
$isVisible: isLeftVisible,
|
|
305
|
+
onClick: onToggleLeft
|
|
306
|
+
}, isLeftVisible ? /*#__PURE__*/_react["default"].createElement(_icons.EyeSeen, {
|
|
307
|
+
height: "12px"
|
|
308
|
+
}) : /*#__PURE__*/_react["default"].createElement(_icons.EyeUnseen, {
|
|
309
|
+
height: "12px"
|
|
310
|
+
})), /*#__PURE__*/_react["default"].createElement(StyledSplitSeparator, {
|
|
311
|
+
$isVisible: isAnyVisible
|
|
312
|
+
}), /*#__PURE__*/_react["default"].createElement(StyledVisibilityToggle, {
|
|
313
|
+
$isVisible: isRightVisible,
|
|
314
|
+
onClick: onToggleRight
|
|
315
|
+
}, isRightVisible ? /*#__PURE__*/_react["default"].createElement(_icons.EyeSeen, {
|
|
316
|
+
height: "12px"
|
|
317
|
+
}) : /*#__PURE__*/_react["default"].createElement(_icons.EyeUnseen, {
|
|
318
|
+
height: "12px"
|
|
319
|
+
}))) : !isExport && onToggleLayerVisibility ? /*#__PURE__*/_react["default"].createElement(StyledVisibilityToggle, {
|
|
269
320
|
$isVisible: isVisible,
|
|
270
321
|
onClick: onToggle
|
|
271
322
|
}, isVisible ? /*#__PURE__*/_react["default"].createElement(_icons.EyeSeen, {
|
|
@@ -349,48 +400,111 @@ function LayerLegendContentFactory(LayerColorLegend) {
|
|
|
349
400
|
}
|
|
350
401
|
MapLegendFactory.deps = [LayerLegendHeaderFactory, LayerLegendContentFactory];
|
|
351
402
|
function MapLegendFactory(LayerLegendHeader, LayerLegendContent) {
|
|
352
|
-
var
|
|
353
|
-
var
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
403
|
+
var LayerLegendItem = function LayerLegendItem(_ref8) {
|
|
404
|
+
var layer = _ref8.layer,
|
|
405
|
+
containerW = _ref8.containerW,
|
|
406
|
+
isLast = _ref8.isLast,
|
|
407
|
+
isLayerVisible = _ref8.isLayerVisible,
|
|
408
|
+
isExport = _ref8.isExport,
|
|
357
409
|
options = _ref8.options,
|
|
410
|
+
mapState = _ref8.mapState,
|
|
358
411
|
disableEdit = _ref8.disableEdit,
|
|
359
|
-
isExport = _ref8.isExport,
|
|
360
412
|
onLayerVisConfigChange = _ref8.onLayerVisConfigChange,
|
|
361
413
|
onToggleLayerVisibility = _ref8.onToggleLayerVisibility,
|
|
362
|
-
|
|
363
|
-
|
|
414
|
+
onMapToggleLayer = _ref8.onMapToggleLayer,
|
|
415
|
+
isSplit = _ref8.isSplit,
|
|
416
|
+
splitMaps = _ref8.splitMaps,
|
|
417
|
+
actionIcons = _ref8.actionIcons;
|
|
418
|
+
var _useState3 = (0, _react.useState)(true),
|
|
419
|
+
_useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
|
|
420
|
+
isExpanded = _useState4[0],
|
|
421
|
+
setIsExpanded = _useState4[1];
|
|
422
|
+
var handleToggleExpanded = (0, _react.useCallback)(function () {
|
|
423
|
+
return setIsExpanded(function (prev) {
|
|
424
|
+
return !prev;
|
|
425
|
+
});
|
|
426
|
+
}, []);
|
|
427
|
+
return /*#__PURE__*/_react["default"].createElement(StyledMapControlLegend, {
|
|
428
|
+
className: "legend--layer",
|
|
429
|
+
$last: isLast,
|
|
430
|
+
width: containerW
|
|
431
|
+
}, /*#__PURE__*/_react["default"].createElement(LayerLegendHeader, {
|
|
432
|
+
isExport: isExport,
|
|
433
|
+
options: options,
|
|
434
|
+
layer: layer,
|
|
435
|
+
onToggleLayerVisibility: onToggleLayerVisibility,
|
|
436
|
+
isSplit: isSplit,
|
|
437
|
+
splitMaps: splitMaps,
|
|
438
|
+
onMapToggleLayer: onMapToggleLayer,
|
|
439
|
+
isExpanded: isExpanded,
|
|
440
|
+
onToggleExpanded: isExport ? undefined : handleToggleExpanded
|
|
441
|
+
}), isExpanded ? /*#__PURE__*/_react["default"].createElement("div", {
|
|
442
|
+
style: {
|
|
443
|
+
opacity: isLayerVisible ? 1 : 0.5
|
|
444
|
+
}
|
|
445
|
+
}, /*#__PURE__*/_react["default"].createElement(LayerLegendContent, {
|
|
446
|
+
containerW: containerW,
|
|
447
|
+
layer: layer,
|
|
448
|
+
mapState: mapState,
|
|
449
|
+
disableEdit: disableEdit,
|
|
450
|
+
isExport: isExport,
|
|
451
|
+
onLayerVisConfigChange: onLayerVisConfigChange,
|
|
452
|
+
actionIcons: actionIcons
|
|
453
|
+
})) : null);
|
|
454
|
+
};
|
|
455
|
+
var MapLegend = function MapLegend(_ref9) {
|
|
456
|
+
var _ref9$layers = _ref9.layers,
|
|
457
|
+
layers = _ref9$layers === void 0 ? [] : _ref9$layers,
|
|
458
|
+
layerOrder = _ref9.layerOrder,
|
|
459
|
+
width = _ref9.width,
|
|
460
|
+
mapState = _ref9.mapState,
|
|
461
|
+
options = _ref9.options,
|
|
462
|
+
disableEdit = _ref9.disableEdit,
|
|
463
|
+
isExport = _ref9.isExport,
|
|
464
|
+
onLayerVisConfigChange = _ref9.onLayerVisConfigChange,
|
|
465
|
+
onToggleLayerVisibility = _ref9.onToggleLayerVisibility,
|
|
466
|
+
onMapToggleLayer = _ref9.onMapToggleLayer,
|
|
467
|
+
isSplit = _ref9.isSplit,
|
|
468
|
+
splitMaps = _ref9.splitMaps,
|
|
469
|
+
_ref9$actionIcons = _ref9.actionIcons,
|
|
470
|
+
actionIcons = _ref9$actionIcons === void 0 ? defaultActionIcons : _ref9$actionIcons;
|
|
471
|
+
var orderedLayers = layerOrder ? (0, _reducers.getFlatLayerOrder)(layerOrder).reduce(function (acc, id) {
|
|
472
|
+
var layer = layers.find(function (l) {
|
|
473
|
+
return l.id === id;
|
|
474
|
+
});
|
|
475
|
+
if (layer) acc.push(layer);
|
|
476
|
+
return acc;
|
|
477
|
+
}, []) : layers;
|
|
364
478
|
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
365
479
|
className: "map-legend"
|
|
366
|
-
},
|
|
480
|
+
}, orderedLayers.map(function (layer, index) {
|
|
481
|
+
var _splitMaps$3, _splitMaps$4;
|
|
367
482
|
if (!layer.isValidToSave() || layer.config.hidden) {
|
|
368
483
|
return null;
|
|
369
484
|
}
|
|
370
485
|
var containerW = width || _constants.DIMENSIONS.mapControl.width;
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
key: index,
|
|
375
|
-
width: containerW
|
|
376
|
-
}, /*#__PURE__*/_react["default"].createElement(LayerLegendHeader, {
|
|
377
|
-
isExport: isExport,
|
|
378
|
-
options: options,
|
|
486
|
+
var isLayerVisible = isSplit && splitMaps && splitMaps.length > 1 ? layer.config.isVisible && (Boolean((_splitMaps$3 = splitMaps[0]) === null || _splitMaps$3 === void 0 || (_splitMaps$3 = _splitMaps$3.layers) === null || _splitMaps$3 === void 0 ? void 0 : _splitMaps$3[layer.id]) || Boolean((_splitMaps$4 = splitMaps[1]) === null || _splitMaps$4 === void 0 || (_splitMaps$4 = _splitMaps$4.layers) === null || _splitMaps$4 === void 0 ? void 0 : _splitMaps$4[layer.id])) : layer.config.isVisible;
|
|
487
|
+
return /*#__PURE__*/_react["default"].createElement(LayerLegendItem, {
|
|
488
|
+
key: layer.id,
|
|
379
489
|
layer: layer,
|
|
380
|
-
onToggleLayerVisibility: onToggleLayerVisibility
|
|
381
|
-
}), /*#__PURE__*/_react["default"].createElement(LayerLegendContent, {
|
|
382
490
|
containerW: containerW,
|
|
383
|
-
|
|
491
|
+
isLast: index === orderedLayers.length - 1,
|
|
492
|
+
isLayerVisible: isLayerVisible,
|
|
493
|
+
isExport: isExport,
|
|
494
|
+
options: options,
|
|
384
495
|
mapState: mapState,
|
|
385
496
|
disableEdit: disableEdit,
|
|
386
|
-
isExport: isExport,
|
|
387
497
|
onLayerVisConfigChange: onLayerVisConfigChange,
|
|
498
|
+
onToggleLayerVisibility: onToggleLayerVisibility,
|
|
499
|
+
onMapToggleLayer: onMapToggleLayer,
|
|
500
|
+
isSplit: isSplit,
|
|
501
|
+
splitMaps: splitMaps,
|
|
388
502
|
actionIcons: actionIcons
|
|
389
|
-
})
|
|
503
|
+
});
|
|
390
504
|
}));
|
|
391
505
|
};
|
|
392
506
|
MapLegend.displayName = 'MapLegend';
|
|
393
507
|
return MapLegend;
|
|
394
508
|
}
|
|
395
509
|
var _default = exports["default"] = MapLegendFactory;
|
|
396
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfZDNDb2xvciIsIl9kM0Zvcm1hdCIsIl9yZWFjdEludGwiLCJfY29sb3JMZWdlbmQiLCJfcmFkaXVzTGVnZW5kIiwiX2NvbnN0YW50cyIsIl9sb2NhbGl6YXRpb24iLCJfdmlld3BvcnRNZXJjYXRvclByb2plY3QiLCJfaWNvbnMiLCJfcGFuZWxIZWFkZXJBY3Rpb24iLCJfdGVtcGxhdGVPYmplY3QiLCJfdGVtcGxhdGVPYmplY3QyIiwiX3RlbXBsYXRlT2JqZWN0MyIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIm93bktleXMiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsIlN0eWxlZE1hcENvbnRyb2xMZWdlbmQiLCJleHBvcnRzIiwic3R5bGVkIiwiZGl2IiwiX3RhZ2dlZFRlbXBsYXRlTGl0ZXJhbDIiLCJwcm9wcyIsInRoZW1lIiwibWFwQ29udHJvbCIsInBhZGRpbmciLCJmb250RmFtaWx5IiwicGFuZWxCb3JkZXJDb2xvciIsIiRsYXN0Iiwid2lkdGgiLCJ0ZXh0Q29sb3IiLCJzdWJ0ZXh0Q29sb3IiLCJ0ZXh0Q29sb3JIbCIsIlN0eWxlZExlZ2VuZEhlYWRlclJvdyIsIlN0eWxlZFZpc2liaWxpdHlUb2dnbGUiLCIkaXNWaXNpYmxlIiwiVmlzdWFsQ2hhbm5lbE1ldHJpYyIsIl9yZWYiLCJuYW1lIiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTmFtZSIsIkZvcm1hdHRlZE1lc3NhZ2UiLCJpZCIsIkxheWVyRGVmYXVsdExlZ2VuZCIsIl9yZWYyIiwibGFiZWwiLCJTaW5nbGVDb2xvckxlZ2VuZEZhY3RvcnkiLCJkZXBzIiwiTGVnZW5kUm93RmFjdG9yeSIsIkxlZ2VuZFJvdyIsIlNpbmdsZUNvbG9yTGVnZW5kIiwiX3JlZjMiLCJjb2xvciIsImRpc3BsYXlMYWJlbCIsIkJvb2xlYW4iLCJBcnJheSIsImlzQXJyYXkiLCJyZ2IiLCJfdG9Db25zdW1hYmxlQXJyYXkyIiwidG9TdHJpbmciLCJkaXNwbGF5TmFtZSIsIlJlYWN0IiwibWVtbyIsIkxheWVyQ29sb3JMZWdlbmRGYWN0b3J5IiwiQ29sb3JMZWdlbmRGYWN0b3J5IiwiUGFuZWxIZWFkZXJBY3Rpb25GYWN0b3J5IiwiQ29sb3JMZWdlbmQiLCJQYW5lbEhlYWRlckFjdGlvbiIsIkxheWVyQ29sb3JMZWdlbmQiLCJfcmVmNCIsImRlc2NyaXB0aW9uIiwiY29uZmlnIiwibGF5ZXIiLCJjb2xvckNoYW5uZWwiLCJkaXNhYmxlRWRpdCIsIm9uTGF5ZXJWaXNDb25maWdDaGFuZ2UiLCJpc0V4cG9ydCIsIm1hcFN0YXRlIiwiYWN0aW9uSWNvbnMiLCJpbnRsIiwidXNlSW50bCIsImVuYWJsZUNvbG9yQnkiLCJtZWFzdXJlIiwic2NhbGUiLCJmaWVsZCIsImRvbWFpbiIsInJhbmdlIiwicHJvcGVydHkiLCJmaXhlZCIsIl9tYXAiLCJtYXAiLCJrIiwiX21hcDIiLCJfc2xpY2VkVG9BcnJheTIiLCJjb2xvclNjYWxlIiwiY29sb3JGaWVsZCIsImNvbG9yRG9tYWluIiwiaXNGaXhlZCIsInZpc0NvbmZpZyIsImNvbG9yUmFuZ2UiLCJvblVwZGF0ZUNvbG9yTGVnZW5kIiwidXNlQ2FsbGJhY2siLCJjb2xvckxlZ2VuZHMiLCJfdXNlU3RhdGUiLCJ1c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJpc0V4cGFuZGVkIiwic2V0SXNFeHBhbmRlZCIsImhhbmRsZVRvZ2dsZUV4cGFuZGVkIiwib25DbGljayIsIkljb25Db21wb25lbnQiLCJleHBhbmRlZCIsImNvbGxhcHNlZCIsInNjYWxlVHlwZSIsImZpZWxkVHlwZSIsInR5cGUiLCJsYWJlbEZvcm1hdCIsImRpc3BsYXlGb3JtYXQiLCJkM0Zvcm1hdCIsImZvcm1hdE1lc3NhZ2UiLCJjb25jYXQiLCJrZXkiLCJkZWZhdWx0TWVzc2FnZSIsImdldExheWVyUmFkaXVzU2NhbGVNZXRlcnNUb1BpeGVsc011bHRpcGxpZXIiLCJfZ2V0RGlzdGFuY2VTY2FsZXMiLCJnZXREaXN0YW5jZVNjYWxlcyIsIm1ldGVyc1BlclBpeGVsIiwiZml4ZWRSYWRpdXMiLCJzaXplRmllbGQiLCJnZXRSYWRpdXNTY2FsZUJ5Wm9vbSIsIkxheWVyUmFkaXVzTGVnZW5kIiwiX3JlZjUiLCJ2aXN1YWxDaGFubmVsIiwiZ2V0VmlzdWFsQ2hhbm5lbERlc2NyaXB0aW9uIiwiZW5hYmxlU2l6ZUJ5IiwiX21hcDMiLCJfbWFwNCIsInNpemVTY2FsZSIsInNpemVEb21haW4iLCJzaXplUmFuZ2UiLCJyYWRpdXNNdWx0aXBsaWVyIiwidiIsImlzQ29sb3JDaGFubmVsIiwiQ0hBTk5FTF9TQ0FMRVMiLCJjb2xvckFnZ3IiLCJpbmNsdWRlcyIsImNoYW5uZWxTY2FsZVR5cGUiLCJpc1JhZGl1c0NoYW5uZWwiLCJyYWRpdXMiLCJMYXllckxlZ2VuZEhlYWRlckZhY3RvcnkiLCJMYXllckxlZ2VuZEhlYWRlciIsIl9yZWY2Iiwib3B0aW9ucyIsIm9uVG9nZ2xlTGF5ZXJWaXNpYmlsaXR5IiwiaXNWaXNpYmxlIiwib25Ub2dnbGUiLCJzaG93TGF5ZXJOYW1lIiwic3R5bGUiLCJvcGFjaXR5IiwiRXllU2VlbiIsImhlaWdodCIsIkV5ZVVuc2VlbiIsImRlZmF1bHRBY3Rpb25JY29ucyIsIkFycm93RG93biIsIkFycm93UmlnaHQiLCJMYXllckxlZ2VuZENvbnRlbnRGYWN0b3J5IiwiTGF5ZXJMZWdlbmRDb250ZW50IiwiX3JlZjciLCJjb250YWluZXJXIiwidmlzdWFsQ2hhbm5lbHMiLCJnZXRMZWdlbmRWaXN1YWxDaGFubmVscyIsImNoYW5uZWxLZXlzIiwidmFsdWVzIiwiY29sb3JDaGFubmVscyIsIm5vbkNvbG9yQ2hhbm5lbHMiLCJ2YyIsIkRJTUVOU0lPTlMiLCJjb2xvckNoYW5uZWxUb1JlbmRlciIsImNjIiwiX2xheWVyJGdldFZpc3VhbENoYW5uIiwiY29uZGl0aW9uIiwiRnJhZ21lbnQiLCJtYXRjaENvbmRpdGlvbiIsImVuYWJsZWQiLCJkZWZhdWx0TWVhc3VyZSIsIk1hcExlZ2VuZEZhY3RvcnkiLCJNYXBMZWdlbmQiLCJfcmVmOCIsIl9yZWY4JGxheWVycyIsImxheWVycyIsIl9yZWY4JGFjdGlvbkljb25zIiwiaW5kZXgiLCJpc1ZhbGlkVG9TYXZlIiwiaGlkZGVuIiwiX2RlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvbWFwL21hcC1sZWdlbmQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBSZWFjdCwge0ZDLCB1c2VDYWxsYmFjaywgdXNlU3RhdGUsIENvbXBvbmVudFR5cGV9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IHtyZ2J9IGZyb20gJ2QzLWNvbG9yJztcbmltcG9ydCB7Zm9ybWF0IGFzIGQzRm9ybWF0fSBmcm9tICdkMy1mb3JtYXQnO1xuaW1wb3J0IHt1c2VJbnRsfSBmcm9tICdyZWFjdC1pbnRsJztcbmltcG9ydCBDb2xvckxlZ2VuZEZhY3RvcnksIHtMZWdlbmRSb3dGYWN0b3J5fSBmcm9tICcuLi9jb21tb24vY29sb3ItbGVnZW5kJztcbmltcG9ydCBSYWRpdXNMZWdlbmQgZnJvbSAnLi4vY29tbW9uL3JhZGl1cy1sZWdlbmQnO1xuaW1wb3J0IHtDSEFOTkVMX1NDQUxFUywgRElNRU5TSU9OU30gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuaW1wb3J0IHtGb3JtYXR0ZWRNZXNzYWdlfSBmcm9tICdAa2VwbGVyLmdsL2xvY2FsaXphdGlvbic7XG5pbXBvcnQge0xheWVyLCBMYXllckJhc2VDb25maWcsIFZpc3VhbENoYW5uZWwsIFZpc3VhbENoYW5uZWxEZXNjcmlwdGlvbn0gZnJvbSAnQGtlcGxlci5nbC9sYXllcnMnO1xuaW1wb3J0IHtMYXllclZpc0NvbmZpZywgTWFwU3RhdGUsIFJHQkNvbG9yfSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcbmltcG9ydCB7Z2V0RGlzdGFuY2VTY2FsZXN9IGZyb20gJ3ZpZXdwb3J0LW1lcmNhdG9yLXByb2plY3QnO1xuaW1wb3J0IHtBcnJvd0Rvd24sIEFycm93UmlnaHQsIEV5ZVNlZW4sIEV5ZVVuc2Vlbn0gZnJvbSAnLi4vY29tbW9uL2ljb25zJztcbmltcG9ydCBQYW5lbEhlYWRlckFjdGlvbkZhY3RvcnkgZnJvbSAnLi4vc2lkZS1wYW5lbC9wYW5lbC1oZWFkZXItYWN0aW9uJztcblxuaW50ZXJmYWNlIFN0eWxlZE1hcENvbnRyb2xMZWdlbmRQcm9wcyB7XG4gIHdpZHRoPzogbnVtYmVyO1xuICAkbGFzdD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjb25zdCBTdHlsZWRNYXBDb250cm9sTGVnZW5kID0gc3R5bGVkLmRpdjxTdHlsZWRNYXBDb250cm9sTGVnZW5kUHJvcHM+YFxuICBwYWRkaW5nOiAxMHB4ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUubWFwQ29udHJvbC5wYWRkaW5nfXB4IDEwcHhcbiAgICAke3Byb3BzID0+IHByb3BzLnRoZW1lLm1hcENvbnRyb2wucGFkZGluZ31weDtcbiAgZm9udC1zaXplOiAxMXB4O1xuICBmb250LWZhbWlseTogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5mb250RmFtaWx5fTtcbiAgYm9yZGVyLWJvdHRvbS1jb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5wYW5lbEJvcmRlckNvbG9yfTtcbiAgYm9yZGVyLWJvdHRvbS1zdHlsZTogc29saWQ7XG4gIGJvcmRlci1ib3R0b20td2lkdGg6ICR7cHJvcHMgPT4gKHByb3BzLiRsYXN0ID8gMCA6ICcxcHgnKX07XG4gIHdpZHRoOiAke3Byb3BzID0+IHByb3BzLndpZHRofXB4O1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuXG4gIC5sZWdlbmQtLWxheWVyX25hbWUge1xuICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICBwYWRkaW5nLXJpZ2h0OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLm1hcENvbnRyb2wucGFkZGluZ31weDtcbiAgICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS50ZXh0Q29sb3J9O1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIH1cbiAgLmxlZ2VuZC0tbGF5ZXJfdHlwZSB7XG4gICAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3VidGV4dENvbG9yfTtcbiAgICBmb250LXdlaWdodDogNTAwO1xuICAgIGZvbnQtc2l6ZTogMTFweDtcbiAgICBwYWRkaW5nLXJpZ2h0OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLm1hcENvbnRyb2wucGFkZGluZ31weDtcbiAgfVxuXG4gIC5sZWdlbmQtLWxheWVyX3NpemUtdGl0bGUtcm93IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIG1hcmdpbi10b3A6IDRweDtcbiAgICBwYWRkaW5nLXJpZ2h0OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLm1hcENvbnRyb2wucGFkZGluZ31weDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICB9XG5cbiAgLmxlZ2VuZC0tbGF5ZXJfX3RpdGxlIHtcbiAgfVxuXG4gIC5sZWdlbmQtLWxheWVyX19pdGVtIHtcbiAgICBwYWRkaW5nLWJvdHRvbTogNHB4O1xuICB9XG4gIC5sZWdlbmQtLWxheWVyX2J5IHtcbiAgICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zdWJ0ZXh0Q29sb3J9O1xuICAgIG1hcmdpbi10b3A6IDRweDtcbiAgfVxuXG4gIC5sZWdlbmQtLWxheWVyX2NvbG9yX2ZpZWxkIHtcbiAgICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS50ZXh0Q29sb3JIbH07XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgfVxuXG4gIC5sZWdlbmQtLWxheWVyX2NvbG9yLWxlZ2VuZCB7XG4gICAgbWFyZ2luLXRvcDogNnB4O1xuICB9XG5gO1xuXG5jb25zdCBTdHlsZWRMZWdlbmRIZWFkZXJSb3cgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG5gO1xuXG5jb25zdCBTdHlsZWRWaXNpYmlsaXR5VG9nZ2xlID0gc3R5bGVkLmRpdjx7JGlzVmlzaWJsZTogYm9vbGVhbn0+YFxuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGNvbG9yOiAke3Byb3BzID0+IChwcm9wcy4kaXNWaXNpYmxlID8gcHJvcHMudGhlbWUudGV4dENvbG9yIDogcHJvcHMudGhlbWUuc3VidGV4dENvbG9yKX07XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIG1hcmdpbi1sZWZ0OiA4cHg7XG4gIG9wYWNpdHk6ICR7cHJvcHMgPT4gKHByb3BzLiRpc1Zpc2libGUgPyAxIDogMC41KX07XG5cbiAgJjpob3ZlciB7XG4gICAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUudGV4dENvbG9ySGx9O1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbmA7XG5cbmV4cG9ydCBjb25zdCBWaXN1YWxDaGFubmVsTWV0cmljID0gKHtuYW1lfSkgPT4ge1xuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwibGVnZW5kLS1sYXllcl9fdGl0bGVcIj5cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImxlZ2VuZC0tbGF5ZXJfY29sb3JfZmllbGRcIj5cbiAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9e25hbWV9IC8+XG4gICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5leHBvcnQgdHlwZSBMYXllclNpemVMZWdlbmRQcm9wcyA9IHtcbiAgbGFiZWw6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xufTtcblxuZXhwb3J0IGNvbnN0IExheWVyRGVmYXVsdExlZ2VuZDogUmVhY3QuRkM8TGF5ZXJTaXplTGVnZW5kUHJvcHM+ID0gKHtsYWJlbCwgbmFtZX0pID0+XG4gIGxhYmVsID8gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwibGVnZW5kLS1sYXllcl9zaXplLXNjaGVtYVwiPlxuICAgICAgPHA+XG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImxlZ2VuZC0tbGF5ZXJfYnlcIj57bGFiZWwgPyA8Rm9ybWF0dGVkTWVzc2FnZSBpZD17bGFiZWx9IC8+IDogbnVsbH08L3NwYW4+XG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImxlZ2VuZC0tbGF5ZXJfYnlcIj4gYnkgPC9zcGFuPlxuICAgICAgPC9wPlxuICAgICAge25hbWUgJiYgPFZpc3VhbENoYW5uZWxNZXRyaWMgbmFtZT17bmFtZX0gLz59XG4gICAgPC9kaXY+XG4gICkgOiBudWxsO1xuXG5leHBvcnQgdHlwZSBTaW5nbGVDb2xvckxlZ2VuZFByb3BzID0ge1xuICBjb2xvcjogUkdCQ29sb3I7XG4gIGxhYmVsPzogc3RyaW5nO1xufTtcblxuU2luZ2xlQ29sb3JMZWdlbmRGYWN0b3J5LmRlcHMgPSBbTGVnZW5kUm93RmFjdG9yeV07XG5cbmV4cG9ydCBmdW5jdGlvbiBTaW5nbGVDb2xvckxlZ2VuZEZhY3RvcnkoTGVnZW5kUm93OiBSZXR1cm5UeXBlPHR5cGVvZiBMZWdlbmRSb3dGYWN0b3J5Pikge1xuICBjb25zdCBTaW5nbGVDb2xvckxlZ2VuZDogUmVhY3QuRkM8U2luZ2xlQ29sb3JMZWdlbmRQcm9wcz4gPSAoe2NvbG9yLCBsYWJlbH0pID0+IChcbiAgICA8TGVnZW5kUm93XG4gICAgICBsYWJlbD17bGFiZWwgPz8gJyd9XG4gICAgICBkaXNwbGF5TGFiZWw9e0Jvb2xlYW4obGFiZWwpfVxuICAgICAgY29sb3I9e0FycmF5LmlzQXJyYXkoY29sb3IpID8gcmdiKC4uLmNvbG9yKS50b1N0cmluZygpIDogY29sb3J9XG4gICAgLz5cbiAgKTtcblxuICBTaW5nbGVDb2xvckxlZ2VuZC5kaXNwbGF5TmFtZSA9ICdTaW5nbGVDb2xvckxlZ2VuZCc7XG5cbiAgcmV0dXJuIFJlYWN0Lm1lbW8oU2luZ2xlQ29sb3JMZWdlbmQpO1xufVxuXG5leHBvcnQgdHlwZSBMYXllckNvbG9yTGVnZW5kUHJvcHMgPSB7XG4gIGRlc2NyaXB0aW9uOiBWaXN1YWxDaGFubmVsRGVzY3JpcHRpb247XG4gIGNvbmZpZzogTGF5ZXJCYXNlQ29uZmlnO1xuICBjb2xvckNoYW5uZWw6IFZpc3VhbENoYW5uZWw7XG4gIG9uTGF5ZXJWaXNDb25maWdDaGFuZ2U/OiAob2xkTGF5ZXI6IExheWVyLCBuZXdWaXNDb25maWc6IFBhcnRpYWw8TGF5ZXJWaXNDb25maWc+KSA9PiB2b2lkO1xuICBsYXllcjogTGF5ZXI7XG4gIGRpc2FibGVFZGl0PzogYm9vbGVhbjtcbiAgaXNFeHBvcnQ/OiBib29sZWFuO1xuICBtYXBTdGF0ZT86IE1hcFN0YXRlO1xuICBhY3Rpb25JY29uczogTWFwTGVnZW5kSWNvbnM7XG59O1xuXG5MYXllckNvbG9yTGVnZW5kRmFjdG9yeS5kZXBzID0gW1xuICBDb2xvckxlZ2VuZEZhY3RvcnksXG4gIFNpbmdsZUNvbG9yTGVnZW5kRmFjdG9yeSxcbiAgUGFuZWxIZWFkZXJBY3Rpb25GYWN0b3J5XG5dO1xuZXhwb3J0IGZ1bmN0aW9uIExheWVyQ29sb3JMZWdlbmRGYWN0b3J5KFxuICBDb2xvckxlZ2VuZDogUmV0dXJuVHlwZTx0eXBlb2YgQ29sb3JMZWdlbmRGYWN0b3J5PixcbiAgU2luZ2xlQ29sb3JMZWdlbmQ6IFJldHVyblR5cGU8dHlwZW9mIFNpbmdsZUNvbG9yTGVnZW5kRmFjdG9yeT4sXG4gIFBhbmVsSGVhZGVyQWN0aW9uOiBSZXR1cm5UeXBlPHR5cGVvZiBQYW5lbEhlYWRlckFjdGlvbkZhY3Rvcnk+XG4pIHtcbiAgY29uc3QgTGF5ZXJDb2xvckxlZ2VuZDogUmVhY3QuRkM8TGF5ZXJDb2xvckxlZ2VuZFByb3BzPiA9ICh7XG4gICAgZGVzY3JpcHRpb24sXG4gICAgY29uZmlnLFxuICAgIGxheWVyLFxuICAgIGNvbG9yQ2hhbm5lbCxcbiAgICBkaXNhYmxlRWRpdCxcbiAgICBvbkxheWVyVmlzQ29uZmlnQ2hhbmdlLFxuICAgIGlzRXhwb3J0LFxuICAgIG1hcFN0YXRlLFxuICAgIGFjdGlvbkljb25zXG4gIH0pID0+IHtcbiAgICBjb25zdCBpbnRsID0gdXNlSW50bCgpO1xuICAgIGNvbnN0IGVuYWJsZUNvbG9yQnkgPSBkZXNjcmlwdGlvbi5tZWFzdXJlO1xuICAgIGNvbnN0IHtzY2FsZSwgZmllbGQsIGRvbWFpbiwgcmFuZ2UsIHByb3BlcnR5LCBmaXhlZH0gPSBjb2xvckNoYW5uZWw7XG4gICAgY29uc3QgW2NvbG9yU2NhbGUsIGNvbG9yRmllbGQsIGNvbG9yRG9tYWluXSA9IFtzY2FsZSwgZmllbGQsIGRvbWFpbl0ubWFwKGsgPT4gY29uZmlnW2tdKTtcbiAgICBjb25zdCBpc0ZpeGVkID0gZml4ZWQgJiYgY29uZmlnLnZpc0NvbmZpZ1tmaXhlZF07XG5cbiAgICBjb25zdCBjb2xvclJhbmdlID0gY29uZmlnLnZpc0NvbmZpZ1tyYW5nZV07XG4gICAgY29uc3Qgb25VcGRhdGVDb2xvckxlZ2VuZCA9IHVzZUNhbGxiYWNrKFxuICAgICAgY29sb3JMZWdlbmRzID0+IHtcbiAgICAgICAgaWYgKG9uTGF5ZXJWaXNDb25maWdDaGFuZ2UpIHtcbiAgICAgICAgICBvbkxheWVyVmlzQ29uZmlnQ2hhbmdlKGxheWVyLCB7XG4gICAgICAgICAgICBbcmFuZ2VdOiB7XG4gICAgICAgICAgICAgIC4uLmNvbG9yUmFuZ2UsXG4gICAgICAgICAgICAgIGNvbG9yTGVnZW5kc1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgW2xheWVyLCBvbkxheWVyVmlzQ29uZmlnQ2hhbmdlLCBjb2xvclJhbmdlLCByYW5nZV1cbiAgICApO1xuICAgIGNvbnN0IFtpc0V4cGFuZGVkLCBzZXRJc0V4cGFuZGVkXSA9IHVzZVN0YXRlKGlzRXhwb3J0KTtcbiAgICBjb25zdCBoYW5kbGVUb2dnbGVFeHBhbmRlZCA9ICgpID0+IHNldElzRXhwYW5kZWQoIWlzRXhwYW5kZWQpO1xuICAgIHJldHVybiAoXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImxlZ2VuZC0tbGF5ZXJfX2l0ZW1cIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJsZWdlbmQtLWxheWVyX2NvbG9yLXNjaGVtYVwiPlxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICB7ZW5hYmxlQ29sb3JCeSA/IChcbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJsZWdlbmQtLWxheWVyX3NpemUtdGl0bGUtcm93XCI+XG4gICAgICAgICAgICAgICAgPFZpc3VhbENoYW5uZWxNZXRyaWMgbmFtZT17ZW5hYmxlQ29sb3JCeX0gLz5cbiAgICAgICAgICAgICAgICB7IWlzRXhwb3J0ID8gKFxuICAgICAgICAgICAgICAgICAgPFBhbmVsSGVhZGVyQWN0aW9uXG4gICAgICAgICAgICAgICAgICAgIGlkPVwibGVnZW5kLWNvbGxhcHNlLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZVRvZ2dsZUV4cGFuZGVkfVxuICAgICAgICAgICAgICAgICAgICBJY29uQ29tcG9uZW50PXtpc0V4cGFuZGVkID8gYWN0aW9uSWNvbnMuZXhwYW5kZWQgOiBhY3Rpb25JY29ucy5jb2xsYXBzZWR9XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJsZWdlbmQtLWxheWVyX2NvbG9yLWxlZ2VuZFwiPlxuICAgICAgICAgICAgICB7ZW5hYmxlQ29sb3JCeSA/IChcbiAgICAgICAgICAgICAgICA8Q29sb3JMZWdlbmRcbiAgICAgICAgICAgICAgICAgIGxheWVyPXtsYXllcn1cbiAgICAgICAgICAgICAgICAgIGlzRXhwYW5kZWQ9e2lzRXhwYW5kZWR9XG4gICAgICAgICAgICAgICAgICBzY2FsZVR5cGU9e2NvbG9yU2NhbGV9XG4gICAgICAgICAgICAgICAgICBkaXNwbGF5TGFiZWxcbiAgICAgICAgICAgICAgICAgIGRvbWFpbj17Y29sb3JEb21haW59XG4gICAgICAgICAgICAgICAgICBmaWVsZFR5cGU9eyhjb2xvckZpZWxkICYmIGNvbG9yRmllbGQudHlwZSkgfHwgJ3JlYWwnfVxuICAgICAgICAgICAgICAgICAgcmFuZ2U9e2NvbG9yUmFuZ2V9XG4gICAgICAgICAgICAgICAgICBvblVwZGF0ZUNvbG9yTGVnZW5kPXtvblVwZGF0ZUNvbG9yTGVnZW5kfVxuICAgICAgICAgICAgICAgICAgZGlzYWJsZUVkaXQ9e2Rpc2FibGVFZGl0IHx8IEJvb2xlYW4oaXNFeHBvcnQpfVxuICAgICAgICAgICAgICAgICAgaXNGaXhlZD17aXNGaXhlZH1cbiAgICAgICAgICAgICAgICAgIG1hcFN0YXRlPXttYXBTdGF0ZX1cbiAgICAgICAgICAgICAgICAgIGxhYmVsRm9ybWF0PXtcbiAgICAgICAgICAgICAgICAgICAgY29sb3JGaWVsZD8uZGlzcGxheUZvcm1hdCA/IGQzRm9ybWF0KGNvbG9yRmllbGQ/LmRpc3BsYXlGb3JtYXQpIDogbnVsbFxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgPFNpbmdsZUNvbG9yTGVnZW5kXG4gICAgICAgICAgICAgICAgICBjb2xvcj17Y29uZmlnLnZpc0NvbmZpZ1twcm9wZXJ0eV0gfHwgY29uZmlnW3Byb3BlcnR5XSB8fCBjb25maWcuY29sb3J9XG4gICAgICAgICAgICAgICAgICBsYWJlbD17aW50bC5mb3JtYXRNZXNzYWdlKHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IGBtYXBMZWdlbmQubGF5ZXJzLiR7bGF5ZXIudHlwZX0uc2luZ2xlQ29sb3IuJHtjb2xvckNoYW5uZWwua2V5fWAsXG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRNZXNzYWdlOiBpbnRsLmZvcm1hdE1lc3NhZ2Uoe1xuICAgICAgICAgICAgICAgICAgICAgIGlkOiBgbWFwTGVnZW5kLmxheWVycy5kZWZhdWx0LnNpbmdsZUNvbG9yLiR7Y29sb3JDaGFubmVsLmtleX1gLFxuICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRNZXNzYWdlOiAnICcgLy8gbXVzdG4ndCBiZSBlbXB0eSBzdHJpbmcgb3IgaWQgd2lsbCBiZSB1c2VkXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfTtcblxuICBMYXllckNvbG9yTGVnZW5kLmRpc3BsYXlOYW1lID0gJ0xheWVyQ29sb3JMZWdlbmQnO1xuICByZXR1cm4gUmVhY3QubWVtbyhMYXllckNvbG9yTGVnZW5kKTtcbn1cblxuZnVuY3Rpb24gZ2V0TGF5ZXJSYWRpdXNTY2FsZU1ldGVyc1RvUGl4ZWxzTXVsdGlwbGllcihsYXllciwgbWFwU3RhdGUpIHtcbiAgLy8gQHRzLWlnbm9yZSB0aGlzIGFjdHVhbGx5IGV4aXN0XG4gIGNvbnN0IHttZXRlcnNQZXJQaXhlbH0gPSBnZXREaXN0YW5jZVNjYWxlcyhtYXBTdGF0ZSk7XG4gIC8vIGlmIG5vIGZpZWxkIHNpemUgaXMgZGVmaW5lZCB3ZSBuZWVkIHRvIHBhc3MgZml4ZWQgcmFkaXVzID0gZmFsc2VcbiAgY29uc3QgZml4ZWRSYWRpdXMgPSBsYXllci5jb25maWcudmlzQ29uZmlnLmZpeGVkUmFkaXVzICYmIEJvb2xlYW4obGF5ZXIuY29uZmlnLnNpemVGaWVsZCk7XG4gIHJldHVybiBsYXllci5nZXRSYWRpdXNTY2FsZUJ5Wm9vbShtYXBTdGF0ZSwgZml4ZWRSYWRpdXMpIC8gbWV0ZXJzUGVyUGl4ZWxbMF07XG59XG5cbmV4cG9ydCB0eXBlIE1hcExlZ2VuZEljb25zID0ge1xuICBleHBhbmRlZDogQ29tcG9uZW50VHlwZTxhbnk+O1xuICBjb2xsYXBzZWQ6IENvbXBvbmVudFR5cGU8YW55Pjtcbn07XG5cbmV4cG9ydCB0eXBlIExheWVyUmFkaXVzTGVnZW5kUHJvcHMgPSB7XG4gIGxheWVyOiBMYXllcjtcbiAgbWFwU3RhdGU/OiBNYXBTdGF0ZTtcbiAgd2lkdGg6IG51bWJlcjtcbiAgaXNFeHBvcnQ/OiBib29sZWFuO1xuICB2aXN1YWxDaGFubmVsOiBWaXN1YWxDaGFubmVsO1xufTtcblxuZXhwb3J0IGNvbnN0IExheWVyUmFkaXVzTGVnZW5kOiBGQzxMYXllclJhZGl1c0xlZ2VuZFByb3BzPiA9IFJlYWN0Lm1lbW8oXG4gICh7bGF5ZXIsIHdpZHRoLCB2aXN1YWxDaGFubmVsLCBtYXBTdGF0ZX0pID0+IHtcbiAgICBjb25zdCBkZXNjcmlwdGlvbiA9IGxheWVyLmdldFZpc3VhbENoYW5uZWxEZXNjcmlwdGlvbih2aXN1YWxDaGFubmVsLmtleSk7XG4gICAgY29uc3QgY29uZmlnID0gbGF5ZXIuY29uZmlnO1xuXG4gICAgY29uc3QgZW5hYmxlU2l6ZUJ5ID0gZGVzY3JpcHRpb24ubWVhc3VyZTtcbiAgICBjb25zdCB7c2NhbGUsIGZpZWxkLCBkb21haW4sIHJhbmdlfSA9IHZpc3VhbENoYW5uZWw7XG4gICAgY29uc3QgW3NpemVTY2FsZSwgc2l6ZUZpZWxkLCBzaXplRG9tYWluXSA9IFtzY2FsZSwgZmllbGQsIGRvbWFpbl0ubWFwKGsgPT4gY29uZmlnW2tdKTtcbiAgICBsZXQgc2l6ZVJhbmdlID0gY29uZmlnLnZpc0NvbmZpZ1tyYW5nZV07XG5cbiAgICBpZiAobWFwU3RhdGUpIHtcbiAgICAgIGNvbnN0IHJhZGl1c011bHRpcGxpZXIgPSBnZXRMYXllclJhZGl1c1NjYWxlTWV0ZXJzVG9QaXhlbHNNdWx0aXBsaWVyKGxheWVyLCBtYXBTdGF0ZSk7XG4gICAgICBzaXplUmFuZ2UgPSBzaXplUmFuZ2UubWFwKHYgPT4gdiAqIHJhZGl1c011bHRpcGxpZXIpO1xuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICA8ZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImxlZ2VuZC0tbGF5ZXJfc2l6ZS1zY2hlbWFcIj5cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAge2VuYWJsZVNpemVCeSA/IDxWaXN1YWxDaGFubmVsTWV0cmljIG5hbWU9e2VuYWJsZVNpemVCeX0gLz4gOiBudWxsfVxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJsZWdlbmQtLWxheWVyX3NpemUtbGVnZW5kXCI+XG4gICAgICAgICAgICAgIHtlbmFibGVTaXplQnkgPyAoXG4gICAgICAgICAgICAgICAgPFJhZGl1c0xlZ2VuZFxuICAgICAgICAgICAgICAgICAgc2NhbGVUeXBlPXtzaXplU2NhbGV9XG4gICAgICAgICAgICAgICAgICBkb21haW49e3NpemVEb21haW59XG4gICAgICAgICAgICAgICAgICBmaWVsZFR5cGU9eyhzaXplRmllbGQgJiYgc2l6ZUZpZWxkLnR5cGUpIHx8ICdyZWFsJ31cbiAgICAgICAgICAgICAgICAgIHJhbmdlPXtzaXplUmFuZ2V9XG4gICAgICAgICAgICAgICAgICB3aWR0aD17d2lkdGh9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9XG4pO1xuXG5jb25zdCBpc0NvbG9yQ2hhbm5lbCA9IHZpc3VhbENoYW5uZWwgPT5cbiAgW0NIQU5ORUxfU0NBTEVTLmNvbG9yLCBDSEFOTkVMX1NDQUxFUy5jb2xvckFnZ3JdLmluY2x1ZGVzKHZpc3VhbENoYW5uZWwuY2hhbm5lbFNjYWxlVHlwZSk7XG5cbmV4cG9ydCB0eXBlIExheWVyTGVnZW5kSGVhZGVyUHJvcHMgPSB7XG4gIGxheWVyOiBMYXllcjtcbiAgb3B0aW9ucz86IHtcbiAgICBzaG93TGF5ZXJOYW1lPzogYm9vbGVhbjtcbiAgfTtcbiAgaXNFeHBvcnQ/OiBib29sZWFuO1xuICBvblRvZ2dsZUxheWVyVmlzaWJpbGl0eT86IChsYXllcjogTGF5ZXIpID0+IHZvaWQ7XG59O1xuXG5jb25zdCBpc1JhZGl1c0NoYW5uZWwgPSB2aXN1YWxDaGFubmVsID0+XG4gIFtDSEFOTkVMX1NDQUxFUy5yYWRpdXNdLmluY2x1ZGVzKHZpc3VhbENoYW5uZWwuY2hhbm5lbFNjYWxlVHlwZSk7XG5cbmV4cG9ydCBmdW5jdGlvbiBMYXllckxlZ2VuZEhlYWRlckZhY3RvcnkoKSB7XG4gIGNvbnN0IExheWVyTGVnZW5kSGVhZGVyOiBSZWFjdC5GQzxMYXllckxlZ2VuZEhlYWRlclByb3BzPiA9ICh7XG4gICAgb3B0aW9ucyxcbiAgICBsYXllcixcbiAgICBvblRvZ2dsZUxheWVyVmlzaWJpbGl0eVxuICB9KSA9PiB7XG4gICAgY29uc3QgaXNWaXNpYmxlID0gbGF5ZXIuY29uZmlnLmlzVmlzaWJsZTtcbiAgICBjb25zdCBvblRvZ2dsZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAgIGlmIChvblRvZ2dsZUxheWVyVmlzaWJpbGl0eSkge1xuICAgICAgICBvblRvZ2dsZUxheWVyVmlzaWJpbGl0eShsYXllcik7XG4gICAgICB9XG4gICAgfSwgW2xheWVyLCBvblRvZ2dsZUxheWVyVmlzaWJpbGl0eV0pO1xuXG4gICAgaWYgKG9wdGlvbnM/LnNob3dMYXllck5hbWUgPT09IGZhbHNlKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFN0eWxlZExlZ2VuZEhlYWRlclJvdz5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJsZWdlbmQtLWxheWVyX25hbWVcIiBzdHlsZT17e29wYWNpdHk6IGlzVmlzaWJsZSA/IDEgOiAwLjV9fT5cbiAgICAgICAgICB7bGF5ZXIuY29uZmlnLmxhYmVsfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAge29uVG9nZ2xlTGF5ZXJWaXNpYmlsaXR5ID8gKFxuICAgICAgICAgIDxTdHlsZWRWaXNpYmlsaXR5VG9nZ2xlICRpc1Zpc2libGU9e2lzVmlzaWJsZX0gb25DbGljaz17b25Ub2dnbGV9PlxuICAgICAgICAgICAge2lzVmlzaWJsZSA/IDxFeWVTZWVuIGhlaWdodD1cIjEycHhcIiAvPiA6IDxFeWVVbnNlZW4gaGVpZ2h0PVwiMTJweFwiIC8+fVxuICAgICAgICAgIDwvU3R5bGVkVmlzaWJpbGl0eVRvZ2dsZT5cbiAgICAgICAgKSA6IG51bGx9XG4gICAgICA8L1N0eWxlZExlZ2VuZEhlYWRlclJvdz5cbiAgICApO1xuICB9O1xuICByZXR1cm4gTGF5ZXJMZWdlbmRIZWFkZXI7XG59XG5cbmNvbnN0IGRlZmF1bHRBY3Rpb25JY29ucyA9IHtcbiAgZXhwYW5kZWQ6IEFycm93RG93bixcbiAgY29sbGFwc2VkOiBBcnJvd1JpZ2h0XG59O1xuXG5leHBvcnQgdHlwZSBMYXllckxlZ2VuZENvbnRlbnRQcm9wcyA9IHtcbiAgbGF5ZXI6IExheWVyO1xuICBjb250YWluZXJXOiBudW1iZXI7XG4gIG1hcFN0YXRlPzogTWFwU3RhdGU7XG4gIGRpc2FibGVFZGl0PzogYm9vbGVhbjtcbiAgaXNFeHBvcnQ/OiBib29sZWFuO1xuICBvbkxheWVyVmlzQ29uZmlnQ2hhbmdlPzogKG9sZExheWVyOiBMYXllciwgbmV3VmlzQ29uZmlnOiBQYXJ0aWFsPExheWVyVmlzQ29uZmlnPikgPT4gdm9pZDtcbiAgYWN0aW9uSWNvbnM6IE1hcExlZ2VuZEljb25zO1xufTtcblxuTGF5ZXJMZWdlbmRDb250ZW50RmFjdG9yeS5kZXBzID0gW0xheWVyQ29sb3JMZWdlbmRGYWN0b3J5XTtcblxuZXhwb3J0IGZ1bmN0aW9uIExheWVyTGVnZW5kQ29udGVudEZhY3RvcnkoXG4gIExheWVyQ29sb3JMZWdlbmQ6IFJldHVyblR5cGU8dHlwZW9mIExheWVyQ29sb3JMZWdlbmRGYWN0b3J5PlxuKSB7XG4gIGNvbnN0IExheWVyTGVnZW5kQ29udGVudDogUmVhY3QuRkM8TGF5ZXJMZWdlbmRDb250ZW50UHJvcHM+ID0gKHtcbiAgICBsYXllcixcbiAgICBjb250YWluZXJXLFxuICAgIG1hcFN0YXRlLFxuICAgIGRpc2FibGVFZGl0LFxuICAgIGlzRXhwb3J0LFxuICAgIG9uTGF5ZXJWaXNDb25maWdDaGFuZ2UsXG4gICAgYWN0aW9uSWNvbnNcbiAgfSkgPT4ge1xuICAgIGNvbnN0IHZpc3VhbENoYW5uZWxzID0gbGF5ZXIuZ2V0TGVnZW5kVmlzdWFsQ2hhbm5lbHMoKTtcbiAgICBjb25zdCBjaGFubmVsS2V5cyA9IE9iamVjdC52YWx1ZXModmlzdWFsQ2hhbm5lbHMpO1xuICAgIGNvbnN0IGNvbG9yQ2hhbm5lbHMgPSBjaGFubmVsS2V5cy5maWx0ZXIoaXNDb2xvckNoYW5uZWwpIGFzIFZpc3VhbENoYW5uZWxbXTtcbiAgICBjb25zdCBub25Db2xvckNoYW5uZWxzID0gY2hhbm5lbEtleXMuZmlsdGVyKHZjID0+ICFpc0NvbG9yQ2hhbm5lbCh2YykpO1xuICAgIGNvbnN0IHdpZHRoID0gY29udGFpbmVyVyAtIDIgKiBESU1FTlNJT05TLm1hcENvbnRyb2wucGFkZGluZztcblxuICAgIC8vIHJlbmRlciBjb2xvciBieSBjaGFuZWwgb25seVxuICAgIGxldCBjb2xvckNoYW5uZWxUb1JlbmRlciA9IGNvbG9yQ2hhbm5lbHMuZmlsdGVyKFxuICAgICAgY2MgPT5cbiAgICAgICAgKCFjYy5jb25kaXRpb24gfHwgY2MuY29uZGl0aW9uKGxheWVyLmNvbmZpZykpICYmXG4gICAgICAgIGxheWVyLmdldFZpc3VhbENoYW5uZWxEZXNjcmlwdGlvbihjYy5rZXkpPy5tZWFzdXJlXG4gICAgKTtcbiAgICAvLyBpZiBubyBjb2xvciBieSBjaGFuZWwsIHJlbmRlciByZXN0XG4gICAgaWYgKCFjb2xvckNoYW5uZWxUb1JlbmRlci5sZW5ndGgpIHtcbiAgICAgIGNvbG9yQ2hhbm5lbFRvUmVuZGVyID0gY29sb3JDaGFubmVscy5maWx0ZXIoXG4gICAgICAgIGNjID0+ICFjYy5jb25kaXRpb24gfHwgY2MuY29uZGl0aW9uKGxheWVyLmNvbmZpZylcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiAoXG4gICAgICA8PlxuICAgICAgICB7Y29sb3JDaGFubmVsVG9SZW5kZXIubWFwKGNvbG9yQ2hhbm5lbCA9PiAoXG4gICAgICAgICAgPExheWVyQ29sb3JMZWdlbmRcbiAgICAgICAgICAgIGtleT17Y29sb3JDaGFubmVsLmtleX1cbiAgICAgICAgICAgIGNvbG9yQ2hhbm5lbD17Y29sb3JDaGFubmVsfVxuICAgICAgICAgICAgY29uZmlnPXtsYXllci5jb25maWd9XG4gICAgICAgICAgICBkZXNjcmlwdGlvbj17bGF5ZXIuZ2V0VmlzdWFsQ2hhbm5lbERlc2NyaXB0aW9uKGNvbG9yQ2hhbm5lbC5rZXkpfVxuICAgICAgICAgICAgbGF5ZXI9e2xheWVyfVxuICAgICAgICAgICAgaXNFeHBvcnQ9e2lzRXhwb3J0fVxuICAgICAgICAgICAgZGlzYWJsZUVkaXQ9e2Rpc2FibGVFZGl0fVxuICAgICAgICAgICAgbWFwU3RhdGU9e21hcFN0YXRlfVxuICAgICAgICAgICAgb25MYXllclZpc0NvbmZpZ0NoYW5nZT17b25MYXllclZpc0NvbmZpZ0NoYW5nZX1cbiAgICAgICAgICAgIGFjdGlvbkljb25zPXthY3Rpb25JY29uc31cbiAgICAgICAgICAvPlxuICAgICAgICApKX1cbiAgICAgICAge25vbkNvbG9yQ2hhbm5lbHMubWFwKCh2aXN1YWxDaGFubmVsOiBWaXN1YWxDaGFubmVsKSA9PiB7XG4gICAgICAgICAgY29uc3QgbWF0Y2hDb25kaXRpb24gPSAhdmlzdWFsQ2hhbm5lbC5jb25kaXRpb24gfHwgdmlzdWFsQ2hhbm5lbC5jb25kaXRpb24obGF5ZXIuY29uZmlnKTtcbiAgICAgICAgICBjb25zdCBlbmFibGVkID0gbGF5ZXIuY29uZmlnW3Zpc3VhbENoYW5uZWwuZmllbGRdIHx8IHZpc3VhbENoYW5uZWwuZGVmYXVsdE1lYXN1cmU7XG5cbiAgICAgICAgICBpZiAobWF0Y2hDb25kaXRpb24gJiYgZW5hYmxlZCkge1xuICAgICAgICAgICAgY29uc3QgZGVzY3JpcHRpb24gPSBsYXllci5nZXRWaXN1YWxDaGFubmVsRGVzY3JpcHRpb24odmlzdWFsQ2hhbm5lbC5rZXkpO1xuICAgICAgICAgICAgaWYgKGlzUmFkaXVzQ2hhbm5lbCh2aXN1YWxDaGFubmVsKSkge1xuICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDxMYXllclJhZGl1c0xlZ2VuZFxuICAgICAgICAgICAgICAgICAga2V5PXt2aXN1YWxDaGFubmVsLmtleX1cbiAgICAgICAgICAgICAgICAgIGxheWVyPXtsYXllcn1cbiAgICAgICAgICAgICAgICAgIG1hcFN0YXRlPXttYXBTdGF0ZX1cbiAgICAgICAgICAgICAgICAgIHdpZHRoPXt3aWR0aH1cbiAgICAgICAgICAgICAgICAgIHZpc3VhbENoYW5uZWw9e3Zpc3VhbENoYW5uZWx9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIDxMYXllckRlZmF1bHRMZWdlbmRcbiAgICAgICAgICAgICAgICBrZXk9e3Zpc3VhbENoYW5uZWwua2V5fVxuICAgICAgICAgICAgICAgIGxhYmVsPXtkZXNjcmlwdGlvbi5sYWJlbH1cbiAgICAgICAgICAgICAgICBuYW1lPXtkZXNjcmlwdGlvbi5tZWFzdXJlfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH0pfVxuICAgICAgPC8+XG4gICAgKTtcbiAgfTtcblxuICByZXR1cm4gTGF5ZXJMZWdlbmRDb250ZW50O1xufVxuXG5leHBvcnQgdHlwZSBNYXBMZWdlbmRQcm9wcyA9IHtcbiAgbGF5ZXJzPzogUmVhZG9ubHlBcnJheTxMYXllcj47XG4gIHdpZHRoPzogbnVtYmVyO1xuICBtYXBTdGF0ZT86IE1hcFN0YXRlO1xuICBvcHRpb25zPzoge1xuICAgIHNob3dMYXllck5hbWU/OiBib29sZWFuO1xuICB9O1xuICBkaXNhYmxlRWRpdD86IGJvb2xlYW47XG4gIGlzRXhwb3J0PzogYm9vbGVhbjtcbiAgb25MYXllclZpc0NvbmZpZ0NoYW5nZT86IChvbGRMYXllcjogTGF5ZXIsIG5ld1Zpc0NvbmZpZzogUGFydGlhbDxMYXllclZpc0NvbmZpZz4pID0+IHZvaWQ7XG4gIG9uVG9nZ2xlTGF5ZXJWaXNpYmlsaXR5PzogKGxheWVyOiBMYXllcikgPT4gdm9pZDtcbiAgYWN0aW9uSWNvbnM/OiBNYXBMZWdlbmRJY29ucztcbn07XG5cbk1hcExlZ2VuZEZhY3RvcnkuZGVwcyA9IFtMYXllckxlZ2VuZEhlYWRlckZhY3RvcnksIExheWVyTGVnZW5kQ29udGVudEZhY3RvcnldO1xuXG5mdW5jdGlvbiBNYXBMZWdlbmRGYWN0b3J5KFxuICBMYXllckxlZ2VuZEhlYWRlcjogUmV0dXJuVHlwZTx0eXBlb2YgTGF5ZXJMZWdlbmRIZWFkZXJGYWN0b3J5PixcbiAgTGF5ZXJMZWdlbmRDb250ZW50OiBSZXR1cm5UeXBlPHR5cGVvZiBMYXllckxlZ2VuZENvbnRlbnRGYWN0b3J5PlxuKSB7XG4gIGNvbnN0IE1hcExlZ2VuZDogUmVhY3QuRkM8TWFwTGVnZW5kUHJvcHM+ID0gKHtcbiAgICBsYXllcnMgPSBbXSxcbiAgICB3aWR0aCxcbiAgICBtYXBTdGF0ZSxcbiAgICBvcHRpb25zLFxuICAgIGRpc2FibGVFZGl0LFxuICAgIGlzRXhwb3J0LFxuICAgIG9uTGF5ZXJWaXNDb25maWdDaGFuZ2UsXG4gICAgb25Ub2dnbGVMYXllclZpc2liaWxpdHksXG4gICAgYWN0aW9uSWNvbnMgPSBkZWZhdWx0QWN0aW9uSWNvbnNcbiAgfSkgPT4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwibWFwLWxlZ2VuZFwiPlxuICAgICAge2xheWVycy5tYXAoKGxheWVyLCBpbmRleCkgPT4ge1xuICAgICAgICBpZiAoIWxheWVyLmlzVmFsaWRUb1NhdmUoKSB8fCBsYXllci5jb25maWcuaGlkZGVuKSB7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY29udGFpbmVyVyA9IHdpZHRoIHx8IERJTUVOU0lPTlMubWFwQ29udHJvbC53aWR0aDtcblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIDxTdHlsZWRNYXBDb250cm9sTGVnZW5kXG4gICAgICAgICAgICBjbGFzc05hbWU9XCJsZWdlbmQtLWxheWVyXCJcbiAgICAgICAgICAgICRsYXN0PXtpbmRleCA9PT0gbGF5ZXJzLmxlbmd0aCAtIDF9XG4gICAgICAgICAgICBrZXk9e2luZGV4fVxuICAgICAgICAgICAgd2lkdGg9e2NvbnRhaW5lcld9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPExheWVyTGVnZW5kSGVhZGVyXG4gICAgICAgICAgICAgIGlzRXhwb3J0PXtpc0V4cG9ydH1cbiAgICAgICAgICAgICAgb3B0aW9ucz17b3B0aW9uc31cbiAgICAgICAgICAgICAgbGF5ZXI9e2xheWVyfVxuICAgICAgICAgICAgICBvblRvZ2dsZUxheWVyVmlzaWJpbGl0eT17b25Ub2dnbGVMYXllclZpc2liaWxpdHl9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPExheWVyTGVnZW5kQ29udGVudFxuICAgICAgICAgICAgICBjb250YWluZXJXPXtjb250YWluZXJXfVxuICAgICAgICAgICAgICBsYXllcj17bGF5ZXJ9XG4gICAgICAgICAgICAgIG1hcFN0YXRlPXttYXBTdGF0ZX1cbiAgICAgICAgICAgICAgZGlzYWJsZUVkaXQ9e2Rpc2FibGVFZGl0fVxuICAgICAgICAgICAgICBpc0V4cG9ydD17aXNFeHBvcnR9XG4gICAgICAgICAgICAgIG9uTGF5ZXJWaXNDb25maWdDaGFuZ2U9e29uTGF5ZXJWaXNDb25maWdDaGFuZ2V9XG4gICAgICAgICAgICAgIGFjdGlvbkljb25zPXthY3Rpb25JY29uc31cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9TdHlsZWRNYXBDb250cm9sTGVnZW5kPlxuICAgICAgICApO1xuICAgICAgfSl9XG4gICAgPC9kaXY+XG4gICk7XG5cbiAgTWFwTGVnZW5kLmRpc3BsYXlOYW1lID0gJ01hcExlZ2VuZCc7XG5cbiAgcmV0dXJuIE1hcExlZ2VuZDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgTWFwTGVnZW5kRmFjdG9yeTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBR0EsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsaUJBQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFHLFFBQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLFNBQUEsR0FBQUosT0FBQTtBQUNBLElBQUFLLFVBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLFlBQUEsR0FBQVAsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFPLGFBQUEsR0FBQUwsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFRLFVBQUEsR0FBQVIsT0FBQTtBQUNBLElBQUFTLGFBQUEsR0FBQVQsT0FBQTtBQUdBLElBQUFVLHdCQUFBLEdBQUFWLE9BQUE7QUFDQSxJQUFBVyxNQUFBLEdBQUFYLE9BQUE7QUFDQSxJQUFBWSxrQkFBQSxHQUFBVixzQkFBQSxDQUFBRixPQUFBO0FBQXlFLElBQUFhLGVBQUEsRUFBQUMsZ0JB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
|
|
510
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfZDNDb2xvciIsIl9kM0Zvcm1hdCIsIl9yZWFjdEludGwiLCJfY29sb3JMZWdlbmQiLCJfcmFkaXVzTGVnZW5kIiwiX2NvbnN0YW50cyIsIl9sb2NhbGl6YXRpb24iLCJfdmlld3BvcnRNZXJjYXRvclByb2plY3QiLCJfaWNvbnMiLCJfcGFuZWxIZWFkZXJBY3Rpb24iLCJfcmVkdWNlcnMiLCJfdGVtcGxhdGVPYmplY3QiLCJfdGVtcGxhdGVPYmplY3QyIiwiX3RlbXBsYXRlT2JqZWN0MyIsIl90ZW1wbGF0ZU9iamVjdDQiLCJfdGVtcGxhdGVPYmplY3Q1IiwiX3RlbXBsYXRlT2JqZWN0NiIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIm93bktleXMiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsIlN0eWxlZE1hcENvbnRyb2xMZWdlbmQiLCJleHBvcnRzIiwic3R5bGVkIiwiZGl2IiwiX3RhZ2dlZFRlbXBsYXRlTGl0ZXJhbDIiLCJwcm9wcyIsInRoZW1lIiwibWFwQ29udHJvbCIsInBhZGRpbmciLCJmb250RmFtaWx5IiwicGFuZWxCb3JkZXJDb2xvciIsIiRsYXN0Iiwid2lkdGgiLCJ0ZXh0Q29sb3IiLCJzdWJ0ZXh0Q29sb3IiLCJ0ZXh0Q29sb3JIbCIsIlN0eWxlZExlZ2VuZEhlYWRlclJvdyIsIlN0eWxlZFZpc2liaWxpdHlUb2dnbGUiLCIkaXNWaXNpYmxlIiwiU3R5bGVkU3BsaXRWaXNpYmlsaXR5Q29udHJvbHMiLCJTdHlsZWRTcGxpdFNlcGFyYXRvciIsIlN0eWxlZEV4cGFuZFRvZ2dsZSIsIlZpc3VhbENoYW5uZWxNZXRyaWMiLCJfcmVmIiwibmFtZSIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc05hbWUiLCJGb3JtYXR0ZWRNZXNzYWdlIiwiaWQiLCJMYXllckRlZmF1bHRMZWdlbmQiLCJfcmVmMiIsImxhYmVsIiwiU2luZ2xlQ29sb3JMZWdlbmRGYWN0b3J5IiwiZGVwcyIsIkxlZ2VuZFJvd0ZhY3RvcnkiLCJMZWdlbmRSb3ciLCJTaW5nbGVDb2xvckxlZ2VuZCIsIl9yZWYzIiwiY29sb3IiLCJkaXNwbGF5TGFiZWwiLCJCb29sZWFuIiwiQXJyYXkiLCJpc0FycmF5IiwicmdiIiwiX3RvQ29uc3VtYWJsZUFycmF5MiIsInRvU3RyaW5nIiwiZGlzcGxheU5hbWUiLCJSZWFjdCIsIm1lbW8iLCJMYXllckNvbG9yTGVnZW5kRmFjdG9yeSIsIkNvbG9yTGVnZW5kRmFjdG9yeSIsIlBhbmVsSGVhZGVyQWN0aW9uRmFjdG9yeSIsIkNvbG9yTGVnZW5kIiwiUGFuZWxIZWFkZXJBY3Rpb24iLCJMYXllckNvbG9yTGVnZW5kIiwiX3JlZjQiLCJkZXNjcmlwdGlvbiIsImNvbmZpZyIsImxheWVyIiwiY29sb3JDaGFubmVsIiwiZGlzYWJsZUVkaXQiLCJvbkxheWVyVmlzQ29uZmlnQ2hhbmdlIiwiaXNFeHBvcnQiLCJtYXBTdGF0ZSIsImFjdGlvbkljb25zIiwiaW50bCIsInVzZUludGwiLCJlbmFibGVDb2xvckJ5IiwibWVhc3VyZSIsInNjYWxlIiwiZmllbGQiLCJkb21haW4iLCJyYW5nZSIsInByb3BlcnR5IiwiZml4ZWQiLCJfbWFwIiwibWFwIiwiayIsIl9tYXAyIiwiX3NsaWNlZFRvQXJyYXkyIiwiY29sb3JTY2FsZSIsImNvbG9yRmllbGQiLCJjb2xvckRvbWFpbiIsImlzRml4ZWQiLCJ2aXNDb25maWciLCJjb2xvclJhbmdlIiwib25VcGRhdGVDb2xvckxlZ2VuZCIsInVzZUNhbGxiYWNrIiwiY29sb3JMZWdlbmRzIiwiX3VzZVN0YXRlIiwidXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiaXNFeHBhbmRlZCIsInNldElzRXhwYW5kZWQiLCJoYW5kbGVUb2dnbGVFeHBhbmRlZCIsIm9uQ2xpY2siLCJJY29uQ29tcG9uZW50IiwiZXhwYW5kZWQiLCJjb2xsYXBzZWQiLCJzY2FsZVR5cGUiLCJmaWVsZFR5cGUiLCJ0eXBlIiwibGFiZWxGb3JtYXQiLCJkaXNwbGF5Rm9ybWF0IiwiZDNGb3JtYXQiLCJmb3JtYXRNZXNzYWdlIiwiY29uY2F0Iiwia2V5IiwiZGVmYXVsdE1lc3NhZ2UiLCJnZXRMYXllclJhZGl1c1NjYWxlTWV0ZXJzVG9QaXhlbHNNdWx0aXBsaWVyIiwiX2dldERpc3RhbmNlU2NhbGVzIiwiZ2V0RGlzdGFuY2VTY2FsZXMiLCJtZXRlcnNQZXJQaXhlbCIsImZpeGVkUmFkaXVzIiwic2l6ZUZpZWxkIiwiZ2V0UmFkaXVzU2NhbGVCeVpvb20iLCJMYXllclJhZGl1c0xlZ2VuZCIsIl9yZWY1IiwidmlzdWFsQ2hhbm5lbCIsImdldFZpc3VhbENoYW5uZWxEZXNjcmlwdGlvbiIsImVuYWJsZVNpemVCeSIsIl9tYXAzIiwiX21hcDQiLCJzaXplU2NhbGUiLCJzaXplRG9tYWluIiwic2l6ZVJhbmdlIiwicmFkaXVzTXVsdGlwbGllciIsInYiLCJpc0NvbG9yQ2hhbm5lbCIsIkNIQU5ORUxfU0NBTEVTIiwiY29sb3JBZ2dyIiwiaW5jbHVkZXMiLCJjaGFubmVsU2NhbGVUeXBlIiwiaXNSYWRpdXNDaGFubmVsIiwicmFkaXVzIiwiTGF5ZXJMZWdlbmRIZWFkZXJGYWN0b3J5IiwiTGF5ZXJMZWdlbmRIZWFkZXIiLCJfcmVmNiIsIl9zcGxpdE1hcHMkIiwiX3NwbGl0TWFwcyQyIiwib3B0aW9ucyIsIm9uVG9nZ2xlTGF5ZXJWaXNpYmlsaXR5IiwiaXNTcGxpdCIsInNwbGl0TWFwcyIsIm9uTWFwVG9nZ2xlTGF5ZXIiLCJvblRvZ2dsZUV4cGFuZGVkIiwiaXNWaXNpYmxlIiwib25Ub2dnbGUiLCJvblRvZ2dsZUxlZnQiLCJvblRvZ2dsZVJpZ2h0Iiwic2hvd0xheWVyTmFtZSIsImlzTGVmdFZpc2libGUiLCJsYXllcnMiLCJpc1JpZ2h0VmlzaWJsZSIsImlzQW55VmlzaWJsZSIsInN0eWxlIiwib3BhY2l0eSIsImZsZXgiLCJBcnJvd0Rvd24iLCJoZWlnaHQiLCJBcnJvd1JpZ2h0IiwiRXllU2VlbiIsIkV5ZVVuc2VlbiIsImRlZmF1bHRBY3Rpb25JY29ucyIsIkxheWVyTGVnZW5kQ29udGVudEZhY3RvcnkiLCJMYXllckxlZ2VuZENvbnRlbnQiLCJfcmVmNyIsImNvbnRhaW5lclciLCJ2aXN1YWxDaGFubmVscyIsImdldExlZ2VuZFZpc3VhbENoYW5uZWxzIiwiY2hhbm5lbEtleXMiLCJ2YWx1ZXMiLCJjb2xvckNoYW5uZWxzIiwibm9uQ29sb3JDaGFubmVscyIsInZjIiwiRElNRU5TSU9OUyIsImNvbG9yQ2hhbm5lbFRvUmVuZGVyIiwiY2MiLCJfbGF5ZXIkZ2V0VmlzdWFsQ2hhbm4iLCJjb25kaXRpb24iLCJGcmFnbWVudCIsIm1hdGNoQ29uZGl0aW9uIiwiZW5hYmxlZCIsImRlZmF1bHRNZWFzdXJlIiwiTWFwTGVnZW5kRmFjdG9yeSIsIkxheWVyTGVnZW5kSXRlbSIsIl9yZWY4IiwiaXNMYXN0IiwiaXNMYXllclZpc2libGUiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsInByZXYiLCJ1bmRlZmluZWQiLCJNYXBMZWdlbmQiLCJfcmVmOSIsIl9yZWY5JGxheWVycyIsImxheWVyT3JkZXIiLCJfcmVmOSRhY3Rpb25JY29ucyIsIm9yZGVyZWRMYXllcnMiLCJnZXRGbGF0TGF5ZXJPcmRlciIsInJlZHVjZSIsImFjYyIsImZpbmQiLCJsIiwiaW5kZXgiLCJfc3BsaXRNYXBzJDMiLCJfc3BsaXRNYXBzJDQiLCJpc1ZhbGlkVG9TYXZlIiwiaGlkZGVuIiwiX2RlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvbWFwL21hcC1sZWdlbmQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBSZWFjdCwge0ZDLCB1c2VDYWxsYmFjaywgdXNlU3RhdGUsIENvbXBvbmVudFR5cGV9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IHtyZ2J9IGZyb20gJ2QzLWNvbG9yJztcbmltcG9ydCB7Zm9ybWF0IGFzIGQzRm9ybWF0fSBmcm9tICdkMy1mb3JtYXQnO1xuaW1wb3J0IHt1c2VJbnRsfSBmcm9tICdyZWFjdC1pbnRsJztcbmltcG9ydCBDb2xvckxlZ2VuZEZhY3RvcnksIHtMZWdlbmRSb3dGYWN0b3J5fSBmcm9tICcuLi9jb21tb24vY29sb3ItbGVnZW5kJztcbmltcG9ydCBSYWRpdXNMZWdlbmQgZnJvbSAnLi4vY29tbW9uL3JhZGl1cy1sZWdlbmQnO1xuaW1wb3J0IHtDSEFOTkVMX1NDQUxFUywgRElNRU5TSU9OU30gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuaW1wb3J0IHtGb3JtYXR0ZWRNZXNzYWdlfSBmcm9tICdAa2VwbGVyLmdsL2xvY2FsaXphdGlvbic7XG5pbXBvcnQge0xheWVyLCBMYXllckJhc2VDb25maWcsIFZpc3VhbENoYW5uZWwsIFZpc3VhbENoYW5uZWxEZXNjcmlwdGlvbn0gZnJvbSAnQGtlcGxlci5nbC9sYXllcnMnO1xuaW1wb3J0IHtMYXllclZpc0NvbmZpZywgTGF5ZXJPcmRlciwgTWFwU3RhdGUsIFJHQkNvbG9yfSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcbmltcG9ydCB7Z2V0RGlzdGFuY2VTY2FsZXN9IGZyb20gJ3ZpZXdwb3J0LW1lcmNhdG9yLXByb2plY3QnO1xuaW1wb3J0IHtBcnJvd0Rvd24sIEFycm93UmlnaHQsIEV5ZVNlZW4sIEV5ZVVuc2Vlbn0gZnJvbSAnLi4vY29tbW9uL2ljb25zJztcbmltcG9ydCBQYW5lbEhlYWRlckFjdGlvbkZhY3RvcnkgZnJvbSAnLi4vc2lkZS1wYW5lbC9wYW5lbC1oZWFkZXItYWN0aW9uJztcbmltcG9ydCB7Z2V0RmxhdExheWVyT3JkZXJ9IGZyb20gJ0BrZXBsZXIuZ2wvcmVkdWNlcnMnO1xuXG5pbnRlcmZhY2UgU3R5bGVkTWFwQ29udHJvbExlZ2VuZFByb3BzIHtcbiAgd2lkdGg/OiBudW1iZXI7XG4gICRsYXN0PzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNvbnN0IFN0eWxlZE1hcENvbnRyb2xMZWdlbmQgPSBzdHlsZWQuZGl2PFN0eWxlZE1hcENvbnRyb2xMZWdlbmRQcm9wcz5gXG4gIHBhZGRpbmc6IDEwcHggJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5tYXBDb250cm9sLnBhZGRpbmd9cHggMTBweFxuICAgICR7cHJvcHMgPT4gcHJvcHMudGhlbWUubWFwQ29udHJvbC5wYWRkaW5nfXB4O1xuICBmb250LXNpemU6IDExcHg7XG4gIGZvbnQtZmFtaWx5OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmZvbnRGYW1pbHl9O1xuICBib3JkZXItYm90dG9tLWNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnBhbmVsQm9yZGVyQ29sb3J9O1xuICBib3JkZXItYm90dG9tLXN0eWxlOiBzb2xpZDtcbiAgYm9yZGVyLWJvdHRvbS13aWR0aDogJHtwcm9wcyA9PiAocHJvcHMuJGxhc3QgPyAwIDogJzFweCcpfTtcbiAgd2lkdGg6ICR7cHJvcHMgPT4gcHJvcHMud2lkdGh9cHg7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5cbiAgLmxlZ2VuZC0tbGF5ZXJfbmFtZSB7XG4gICAgZm9udC1zaXplOiAxMnB4O1xuICAgIHBhZGRpbmctcmlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUubWFwQ29udHJvbC5wYWRkaW5nfXB4O1xuICAgIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnRleHRDb2xvcn07XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgfVxuICAubGVnZW5kLS1sYXllcl90eXBlIHtcbiAgICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zdWJ0ZXh0Q29sb3J9O1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgZm9udC1zaXplOiAxMXB4O1xuICAgIHBhZGRpbmctcmlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUubWFwQ29udHJvbC5wYWRkaW5nfXB4O1xuICB9XG5cbiAgLmxlZ2VuZC0tbGF5ZXJfc2l6ZS10aXRsZS1yb3cge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgbWFyZ2luLXRvcDogNHB4O1xuICAgIHBhZGRpbmctcmlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUubWFwQ29udHJvbC5wYWRkaW5nfXB4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIH1cblxuICAubGVnZW5kLS1sYXllcl9fdGl0bGUge1xuICB9XG5cbiAgLmxlZ2VuZC0tbGF5ZXJfX2l0ZW0ge1xuICAgIHBhZGRpbmctYm90dG9tOiA0cHg7XG4gIH1cbiAgLmxlZ2VuZC0tbGF5ZXJfYnkge1xuICAgIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnN1YnRleHRDb2xvcn07XG4gICAgbWFyZ2luLXRvcDogNHB4O1xuICB9XG5cbiAgLmxlZ2VuZC0tbGF5ZXJfY29sb3JfZmllbGQge1xuICAgIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnRleHRDb2xvckhsfTtcbiAgICBmb250LXdlaWdodDogNTAwO1xuICB9XG5cbiAgLmxlZ2VuZC0tbGF5ZXJfY29sb3ItbGVnZW5kIHtcbiAgICBtYXJnaW4tdG9wOiA2cHg7XG4gIH1cbmA7XG5cbmNvbnN0IFN0eWxlZExlZ2VuZEhlYWRlclJvdyA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbmA7XG5cbmNvbnN0IFN0eWxlZFZpc2liaWxpdHlUb2dnbGUgPSBzdHlsZWQuZGl2PHskaXNWaXNpYmxlOiBib29sZWFufT5gXG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgY29sb3I6ICR7cHJvcHMgPT4gKHByb3BzLiRpc1Zpc2libGUgPyBwcm9wcy50aGVtZS50ZXh0Q29sb3IgOiBwcm9wcy50aGVtZS5zdWJ0ZXh0Q29sb3IpfTtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgbWFyZ2luLWxlZnQ6IDhweDtcbiAgb3BhY2l0eTogJHtwcm9wcyA9PiAocHJvcHMuJGlzVmlzaWJsZSA/IDEgOiAwLjUpfTtcblxuICAmOmhvdmVyIHtcbiAgICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS50ZXh0Q29sb3JIbH07XG4gICAgb3BhY2l0eTogMTtcbiAgfVxuYDtcblxuY29uc3QgU3R5bGVkU3BsaXRWaXNpYmlsaXR5Q29udHJvbHMgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBtYXJnaW4tbGVmdDogOHB4O1xuICBnYXA6IDRweDtcblxuICAke1N0eWxlZFZpc2liaWxpdHlUb2dnbGV9IHtcbiAgICBtYXJnaW4tbGVmdDogMDtcbiAgfVxuYDtcblxuY29uc3QgU3R5bGVkU3BsaXRTZXBhcmF0b3IgPSBzdHlsZWQuZGl2PHskaXNWaXNpYmxlOiBib29sZWFufT5gXG4gIHdpZHRoOiAxcHg7XG4gIGhlaWdodDogMTJweDtcbiAgYmFja2dyb3VuZDogJHtwcm9wcyA9PiAocHJvcHMuJGlzVmlzaWJsZSA/IHByb3BzLnRoZW1lLnRleHRDb2xvciA6IHByb3BzLnRoZW1lLnN1YnRleHRDb2xvcil9O1xuICBvcGFjaXR5OiAwLjM7XG5gO1xuXG5jb25zdCBTdHlsZWRFeHBhbmRUb2dnbGUgPSBzdHlsZWQuZGl2YFxuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIG1hcmdpbi1sZWZ0OiA2cHg7XG4gIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnRleHRDb2xvcn07XG4gIG9wYWNpdHk6IDAuNztcblxuICAmOmhvdmVyIHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG5gO1xuXG5leHBvcnQgY29uc3QgVmlzdWFsQ2hhbm5lbE1ldHJpYyA9ICh7bmFtZX0pID0+IHtcbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cImxlZ2VuZC0tbGF5ZXJfX3RpdGxlXCI+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9XCJsZWdlbmQtLWxheWVyX2NvbG9yX2ZpZWxkXCI+XG4gICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIGlkPXtuYW1lfSAvPlxuICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuZXhwb3J0IHR5cGUgTGF5ZXJTaXplTGVnZW5kUHJvcHMgPSB7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZDtcbn07XG5cbmV4cG9ydCBjb25zdCBMYXllckRlZmF1bHRMZWdlbmQ6IFJlYWN0LkZDPExheWVyU2l6ZUxlZ2VuZFByb3BzPiA9ICh7bGFiZWwsIG5hbWV9KSA9PlxuICBsYWJlbCA/IChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cImxlZ2VuZC0tbGF5ZXJfc2l6ZS1zY2hlbWFcIj5cbiAgICAgIDxwPlxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJsZWdlbmQtLWxheWVyX2J5XCI+e2xhYmVsID8gPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9e2xhYmVsfSAvPiA6IG51bGx9PC9zcGFuPlxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJsZWdlbmQtLWxheWVyX2J5XCI+IGJ5IDwvc3Bhbj5cbiAgICAgIDwvcD5cbiAgICAgIHtuYW1lICYmIDxWaXN1YWxDaGFubmVsTWV0cmljIG5hbWU9e25hbWV9IC8+fVxuICAgIDwvZGl2PlxuICApIDogbnVsbDtcblxuZXhwb3J0IHR5cGUgU2luZ2xlQ29sb3JMZWdlbmRQcm9wcyA9IHtcbiAgY29sb3I6IFJHQkNvbG9yO1xuICBsYWJlbD86IHN0cmluZztcbn07XG5cblNpbmdsZUNvbG9yTGVnZW5kRmFjdG9yeS5kZXBzID0gW0xlZ2VuZFJvd0ZhY3RvcnldO1xuXG5leHBvcnQgZnVuY3Rpb24gU2luZ2xlQ29sb3JMZWdlbmRGYWN0b3J5KExlZ2VuZFJvdzogUmV0dXJuVHlwZTx0eXBlb2YgTGVnZW5kUm93RmFjdG9yeT4pIHtcbiAgY29uc3QgU2luZ2xlQ29sb3JMZWdlbmQ6IFJlYWN0LkZDPFNpbmdsZUNvbG9yTGVnZW5kUHJvcHM+ID0gKHtjb2xvciwgbGFiZWx9KSA9PiAoXG4gICAgPExlZ2VuZFJvd1xuICAgICAgbGFiZWw9e2xhYmVsID8/ICcnfVxuICAgICAgZGlzcGxheUxhYmVsPXtCb29sZWFuKGxhYmVsKX1cbiAgICAgIGNvbG9yPXtBcnJheS5pc0FycmF5KGNvbG9yKSA/IHJnYiguLi5jb2xvcikudG9TdHJpbmcoKSA6IGNvbG9yfVxuICAgIC8+XG4gICk7XG5cbiAgU2luZ2xlQ29sb3JMZWdlbmQuZGlzcGxheU5hbWUgPSAnU2luZ2xlQ29sb3JMZWdlbmQnO1xuXG4gIHJldHVybiBSZWFjdC5tZW1vKFNpbmdsZUNvbG9yTGVnZW5kKTtcbn1cblxuZXhwb3J0IHR5cGUgTGF5ZXJDb2xvckxlZ2VuZFByb3BzID0ge1xuICBkZXNjcmlwdGlvbjogVmlzdWFsQ2hhbm5lbERlc2NyaXB0aW9uO1xuICBjb25maWc6IExheWVyQmFzZUNvbmZpZztcbiAgY29sb3JDaGFubmVsOiBWaXN1YWxDaGFubmVsO1xuICBvbkxheWVyVmlzQ29uZmlnQ2hhbmdlPzogKG9sZExheWVyOiBMYXllciwgbmV3VmlzQ29uZmlnOiBQYXJ0aWFsPExheWVyVmlzQ29uZmlnPikgPT4gdm9pZDtcbiAgbGF5ZXI6IExheWVyO1xuICBkaXNhYmxlRWRpdD86IGJvb2xlYW47XG4gIGlzRXhwb3J0PzogYm9vbGVhbjtcbiAgbWFwU3RhdGU/OiBNYXBTdGF0ZTtcbiAgYWN0aW9uSWNvbnM6IE1hcExlZ2VuZEljb25zO1xufTtcblxuTGF5ZXJDb2xvckxlZ2VuZEZhY3RvcnkuZGVwcyA9IFtcbiAgQ29sb3JMZWdlbmRGYWN0b3J5LFxuICBTaW5nbGVDb2xvckxlZ2VuZEZhY3RvcnksXG4gIFBhbmVsSGVhZGVyQWN0aW9uRmFjdG9yeVxuXTtcbmV4cG9ydCBmdW5jdGlvbiBMYXllckNvbG9yTGVnZW5kRmFjdG9yeShcbiAgQ29sb3JMZWdlbmQ6IFJldHVyblR5cGU8dHlwZW9mIENvbG9yTGVnZW5kRmFjdG9yeT4sXG4gIFNpbmdsZUNvbG9yTGVnZW5kOiBSZXR1cm5UeXBlPHR5cGVvZiBTaW5nbGVDb2xvckxlZ2VuZEZhY3Rvcnk+LFxuICBQYW5lbEhlYWRlckFjdGlvbjogUmV0dXJuVHlwZTx0eXBlb2YgUGFuZWxIZWFkZXJBY3Rpb25GYWN0b3J5PlxuKSB7XG4gIGNvbnN0IExheWVyQ29sb3JMZWdlbmQ6IFJlYWN0LkZDPExheWVyQ29sb3JMZWdlbmRQcm9wcz4gPSAoe1xuICAgIGRlc2NyaXB0aW9uLFxuICAgIGNvbmZpZyxcbiAgICBsYXllcixcbiAgICBjb2xvckNoYW5uZWwsXG4gICAgZGlzYWJsZUVkaXQsXG4gICAgb25MYXllclZpc0NvbmZpZ0NoYW5nZSxcbiAgICBpc0V4cG9ydCxcbiAgICBtYXBTdGF0ZSxcbiAgICBhY3Rpb25JY29uc1xuICB9KSA9PiB7XG4gICAgY29uc3QgaW50bCA9IHVzZUludGwoKTtcbiAgICBjb25zdCBlbmFibGVDb2xvckJ5ID0gZGVzY3JpcHRpb24ubWVhc3VyZTtcbiAgICBjb25zdCB7c2NhbGUsIGZpZWxkLCBkb21haW4sIHJhbmdlLCBwcm9wZXJ0eSwgZml4ZWR9ID0gY29sb3JDaGFubmVsO1xuICAgIGNvbnN0IFtjb2xvclNjYWxlLCBjb2xvckZpZWxkLCBjb2xvckRvbWFpbl0gPSBbc2NhbGUsIGZpZWxkLCBkb21haW5dLm1hcChrID0+IGNvbmZpZ1trXSk7XG4gICAgY29uc3QgaXNGaXhlZCA9IGZpeGVkICYmIGNvbmZpZy52aXNDb25maWdbZml4ZWRdO1xuXG4gICAgY29uc3QgY29sb3JSYW5nZSA9IGNvbmZpZy52aXNDb25maWdbcmFuZ2VdO1xuICAgIGNvbnN0IG9uVXBkYXRlQ29sb3JMZWdlbmQgPSB1c2VDYWxsYmFjayhcbiAgICAgIGNvbG9yTGVnZW5kcyA9PiB7XG4gICAgICAgIGlmIChvbkxheWVyVmlzQ29uZmlnQ2hhbmdlKSB7XG4gICAgICAgICAgb25MYXllclZpc0NvbmZpZ0NoYW5nZShsYXllciwge1xuICAgICAgICAgICAgW3JhbmdlXToge1xuICAgICAgICAgICAgICAuLi5jb2xvclJhbmdlLFxuICAgICAgICAgICAgICBjb2xvckxlZ2VuZHNcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFtsYXllciwgb25MYXllclZpc0NvbmZpZ0NoYW5nZSwgY29sb3JSYW5nZSwgcmFuZ2VdXG4gICAgKTtcbiAgICBjb25zdCBbaXNFeHBhbmRlZCwgc2V0SXNFeHBhbmRlZF0gPSB1c2VTdGF0ZShpc0V4cG9ydCk7XG4gICAgY29uc3QgaGFuZGxlVG9nZ2xlRXhwYW5kZWQgPSAoKSA9PiBzZXRJc0V4cGFuZGVkKCFpc0V4cGFuZGVkKTtcbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJsZWdlbmQtLWxheWVyX19pdGVtXCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibGVnZW5kLS1sYXllcl9jb2xvci1zY2hlbWFcIj5cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAge2VuYWJsZUNvbG9yQnkgPyAoXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibGVnZW5kLS1sYXllcl9zaXplLXRpdGxlLXJvd1wiPlxuICAgICAgICAgICAgICAgIDxWaXN1YWxDaGFubmVsTWV0cmljIG5hbWU9e2VuYWJsZUNvbG9yQnl9IC8+XG4gICAgICAgICAgICAgICAgeyFpc0V4cG9ydCA/IChcbiAgICAgICAgICAgICAgICAgIDxQYW5lbEhlYWRlckFjdGlvblxuICAgICAgICAgICAgICAgICAgICBpZD1cImxlZ2VuZC1jb2xsYXBzZS1idXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVUb2dnbGVFeHBhbmRlZH1cbiAgICAgICAgICAgICAgICAgICAgSWNvbkNvbXBvbmVudD17aXNFeHBhbmRlZCA/IGFjdGlvbkljb25zLmV4cGFuZGVkIDogYWN0aW9uSWNvbnMuY29sbGFwc2VkfVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibGVnZW5kLS1sYXllcl9jb2xvci1sZWdlbmRcIj5cbiAgICAgICAgICAgICAge2VuYWJsZUNvbG9yQnkgPyAoXG4gICAgICAgICAgICAgICAgPENvbG9yTGVnZW5kXG4gICAgICAgICAgICAgICAgICBsYXllcj17bGF5ZXJ9XG4gICAgICAgICAgICAgICAgICBpc0V4cGFuZGVkPXtpc0V4cGFuZGVkfVxuICAgICAgICAgICAgICAgICAgc2NhbGVUeXBlPXtjb2xvclNjYWxlfVxuICAgICAgICAgICAgICAgICAgZGlzcGxheUxhYmVsXG4gICAgICAgICAgICAgICAgICBkb21haW49e2NvbG9yRG9tYWlufVxuICAgICAgICAgICAgICAgICAgZmllbGRUeXBlPXsoY29sb3JGaWVsZCAmJiBjb2xvckZpZWxkLnR5cGUpIHx8ICdyZWFsJ31cbiAgICAgICAgICAgICAgICAgIHJhbmdlPXtjb2xvclJhbmdlfVxuICAgICAgICAgICAgICAgICAgb25VcGRhdGVDb2xvckxlZ2VuZD17b25VcGRhdGVDb2xvckxlZ2VuZH1cbiAgICAgICAgICAgICAgICAgIGRpc2FibGVFZGl0PXtkaXNhYmxlRWRpdCB8fCBCb29sZWFuKGlzRXhwb3J0KX1cbiAgICAgICAgICAgICAgICAgIGlzRml4ZWQ9e2lzRml4ZWR9XG4gICAgICAgICAgICAgICAgICBtYXBTdGF0ZT17bWFwU3RhdGV9XG4gICAgICAgICAgICAgICAgICBsYWJlbEZvcm1hdD17XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yRmllbGQ/LmRpc3BsYXlGb3JtYXQgPyBkM0Zvcm1hdChjb2xvckZpZWxkPy5kaXNwbGF5Rm9ybWF0KSA6IG51bGxcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgIDxTaW5nbGVDb2xvckxlZ2VuZFxuICAgICAgICAgICAgICAgICAgY29sb3I9e2NvbmZpZy52aXNDb25maWdbcHJvcGVydHldIHx8IGNvbmZpZ1twcm9wZXJ0eV0gfHwgY29uZmlnLmNvbG9yfVxuICAgICAgICAgICAgICAgICAgbGFiZWw9e2ludGwuZm9ybWF0TWVzc2FnZSh7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBgbWFwTGVnZW5kLmxheWVycy4ke2xheWVyLnR5cGV9LnNpbmdsZUNvbG9yLiR7Y29sb3JDaGFubmVsLmtleX1gLFxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0TWVzc2FnZTogaW50bC5mb3JtYXRNZXNzYWdlKHtcbiAgICAgICAgICAgICAgICAgICAgICBpZDogYG1hcExlZ2VuZC5sYXllcnMuZGVmYXVsdC5zaW5nbGVDb2xvci4ke2NvbG9yQ2hhbm5lbC5rZXl9YCxcbiAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0TWVzc2FnZTogJyAnIC8vIG11c3RuJ3QgYmUgZW1wdHkgc3RyaW5nIG9yIGlkIHdpbGwgYmUgdXNlZFxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH07XG5cbiAgTGF5ZXJDb2xvckxlZ2VuZC5kaXNwbGF5TmFtZSA9ICdMYXllckNvbG9yTGVnZW5kJztcbiAgcmV0dXJuIFJlYWN0Lm1lbW8oTGF5ZXJDb2xvckxlZ2VuZCk7XG59XG5cbmZ1bmN0aW9uIGdldExheWVyUmFkaXVzU2NhbGVNZXRlcnNUb1BpeGVsc011bHRpcGxpZXIobGF5ZXIsIG1hcFN0YXRlKSB7XG4gIC8vIEB0cy1pZ25vcmUgdGhpcyBhY3R1YWxseSBleGlzdFxuICBjb25zdCB7bWV0ZXJzUGVyUGl4ZWx9ID0gZ2V0RGlzdGFuY2VTY2FsZXMobWFwU3RhdGUpO1xuICAvLyBpZiBubyBmaWVsZCBzaXplIGlzIGRlZmluZWQgd2UgbmVlZCB0byBwYXNzIGZpeGVkIHJhZGl1cyA9IGZhbHNlXG4gIGNvbnN0IGZpeGVkUmFkaXVzID0gbGF5ZXIuY29uZmlnLnZpc0NvbmZpZy5maXhlZFJhZGl1cyAmJiBCb29sZWFuKGxheWVyLmNvbmZpZy5zaXplRmllbGQpO1xuICByZXR1cm4gbGF5ZXIuZ2V0UmFkaXVzU2NhbGVCeVpvb20obWFwU3RhdGUsIGZpeGVkUmFkaXVzKSAvIG1ldGVyc1BlclBpeGVsWzBdO1xufVxuXG5leHBvcnQgdHlwZSBNYXBMZWdlbmRJY29ucyA9IHtcbiAgZXhwYW5kZWQ6IENvbXBvbmVudFR5cGU8YW55PjtcbiAgY29sbGFwc2VkOiBDb21wb25lbnRUeXBlPGFueT47XG59O1xuXG5leHBvcnQgdHlwZSBMYXllclJhZGl1c0xlZ2VuZFByb3BzID0ge1xuICBsYXllcjogTGF5ZXI7XG4gIG1hcFN0YXRlPzogTWFwU3RhdGU7XG4gIHdpZHRoOiBudW1iZXI7XG4gIGlzRXhwb3J0PzogYm9vbGVhbjtcbiAgdmlzdWFsQ2hhbm5lbDogVmlzdWFsQ2hhbm5lbDtcbn07XG5cbmV4cG9ydCBjb25zdCBMYXllclJhZGl1c0xlZ2VuZDogRkM8TGF5ZXJSYWRpdXNMZWdlbmRQcm9wcz4gPSBSZWFjdC5tZW1vKFxuICAoe2xheWVyLCB3aWR0aCwgdmlzdWFsQ2hhbm5lbCwgbWFwU3RhdGV9KSA9PiB7XG4gICAgY29uc3QgZGVzY3JpcHRpb24gPSBsYXllci5nZXRWaXN1YWxDaGFubmVsRGVzY3JpcHRpb24odmlzdWFsQ2hhbm5lbC5rZXkpO1xuICAgIGNvbnN0IGNvbmZpZyA9IGxheWVyLmNvbmZpZztcblxuICAgIGNvbnN0IGVuYWJsZVNpemVCeSA9IGRlc2NyaXB0aW9uLm1lYXN1cmU7XG4gICAgY29uc3Qge3NjYWxlLCBmaWVsZCwgZG9tYWluLCByYW5nZX0gPSB2aXN1YWxDaGFubmVsO1xuICAgIGNvbnN0IFtzaXplU2NhbGUsIHNpemVGaWVsZCwgc2l6ZURvbWFpbl0gPSBbc2NhbGUsIGZpZWxkLCBkb21haW5dLm1hcChrID0+IGNvbmZpZ1trXSk7XG4gICAgbGV0IHNpemVSYW5nZSA9IGNvbmZpZy52aXNDb25maWdbcmFuZ2VdO1xuXG4gICAgaWYgKG1hcFN0YXRlKSB7XG4gICAgICBjb25zdCByYWRpdXNNdWx0aXBsaWVyID0gZ2V0TGF5ZXJSYWRpdXNTY2FsZU1ldGVyc1RvUGl4ZWxzTXVsdGlwbGllcihsYXllciwgbWFwU3RhdGUpO1xuICAgICAgc2l6ZVJhbmdlID0gc2l6ZVJhbmdlLm1hcCh2ID0+IHYgKiByYWRpdXNNdWx0aXBsaWVyKTtcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgPGRpdj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJsZWdlbmQtLWxheWVyX3NpemUtc2NoZW1hXCI+XG4gICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIHtlbmFibGVTaXplQnkgPyA8VmlzdWFsQ2hhbm5lbE1ldHJpYyBuYW1lPXtlbmFibGVTaXplQnl9IC8+IDogbnVsbH1cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibGVnZW5kLS1sYXllcl9zaXplLWxlZ2VuZFwiPlxuICAgICAgICAgICAgICB7ZW5hYmxlU2l6ZUJ5ID8gKFxuICAgICAgICAgICAgICAgIDxSYWRpdXNMZWdlbmRcbiAgICAgICAgICAgICAgICAgIHNjYWxlVHlwZT17c2l6ZVNjYWxlfVxuICAgICAgICAgICAgICAgICAgZG9tYWluPXtzaXplRG9tYWlufVxuICAgICAgICAgICAgICAgICAgZmllbGRUeXBlPXsoc2l6ZUZpZWxkICYmIHNpemVGaWVsZC50eXBlKSB8fCAncmVhbCd9XG4gICAgICAgICAgICAgICAgICByYW5nZT17c2l6ZVJhbmdlfVxuICAgICAgICAgICAgICAgICAgd2lkdGg9e3dpZHRofVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfVxuKTtcblxuY29uc3QgaXNDb2xvckNoYW5uZWwgPSB2aXN1YWxDaGFubmVsID0+XG4gIFtDSEFOTkVMX1NDQUxFUy5jb2xvciwgQ0hBTk5FTF9TQ0FMRVMuY29sb3JBZ2dyXS5pbmNsdWRlcyh2aXN1YWxDaGFubmVsLmNoYW5uZWxTY2FsZVR5cGUpO1xuXG5leHBvcnQgdHlwZSBMYXllckxlZ2VuZEhlYWRlclByb3BzID0ge1xuICBsYXllcjogTGF5ZXI7XG4gIG9wdGlvbnM/OiB7XG4gICAgc2hvd0xheWVyTmFtZT86IGJvb2xlYW47XG4gIH07XG4gIGlzRXhwb3J0PzogYm9vbGVhbjtcbiAgb25Ub2dnbGVMYXllclZpc2liaWxpdHk/OiAobGF5ZXI6IExheWVyKSA9PiB2b2lkO1xuICBpc1NwbGl0PzogYm9vbGVhbjtcbiAgc3BsaXRNYXBzPzoge2xheWVyczoge1trZXk6IHN0cmluZ106IGJvb2xlYW59fVtdO1xuICBvbk1hcFRvZ2dsZUxheWVyPzogKG1hcEluZGV4OiBudW1iZXIsIGxheWVySWQ6IHN0cmluZykgPT4gdm9pZDtcbiAgaXNFeHBhbmRlZD86IGJvb2xlYW47XG4gIG9uVG9nZ2xlRXhwYW5kZWQ/OiAoKSA9PiB2b2lkO1xufTtcblxuY29uc3QgaXNSYWRpdXNDaGFubmVsID0gdmlzdWFsQ2hhbm5lbCA9PlxuICBbQ0hBTk5FTF9TQ0FMRVMucmFkaXVzXS5pbmNsdWRlcyh2aXN1YWxDaGFubmVsLmNoYW5uZWxTY2FsZVR5cGUpO1xuXG5leHBvcnQgZnVuY3Rpb24gTGF5ZXJMZWdlbmRIZWFkZXJGYWN0b3J5KCkge1xuICBjb25zdCBMYXllckxlZ2VuZEhlYWRlcjogUmVhY3QuRkM8TGF5ZXJMZWdlbmRIZWFkZXJQcm9wcz4gPSAoe1xuICAgIG9wdGlvbnMsXG4gICAgbGF5ZXIsXG4gICAgaXNFeHBvcnQsXG4gICAgb25Ub2dnbGVMYXllclZpc2liaWxpdHksXG4gICAgaXNTcGxpdCxcbiAgICBzcGxpdE1hcHMsXG4gICAgb25NYXBUb2dnbGVMYXllcixcbiAgICBpc0V4cGFuZGVkLFxuICAgIG9uVG9nZ2xlRXhwYW5kZWRcbiAgfSkgPT4ge1xuICAgIGNvbnN0IGlzVmlzaWJsZSA9IGxheWVyLmNvbmZpZy5pc1Zpc2libGU7XG5cbiAgICBjb25zdCBvblRvZ2dsZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAgIGlmIChvblRvZ2dsZUxheWVyVmlzaWJpbGl0eSkge1xuICAgICAgICBvblRvZ2dsZUxheWVyVmlzaWJpbGl0eShsYXllcik7XG4gICAgICB9XG4gICAgfSwgW2xheWVyLCBvblRvZ2dsZUxheWVyVmlzaWJpbGl0eV0pO1xuXG4gICAgY29uc3Qgb25Ub2dnbGVMZWZ0ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgaWYgKG9uTWFwVG9nZ2xlTGF5ZXIpIHtcbiAgICAgICAgb25NYXBUb2dnbGVMYXllcigwLCBsYXllci5pZCk7XG4gICAgICB9XG4gICAgfSwgW2xheWVyLCBvbk1hcFRvZ2dsZUxheWVyXSk7XG5cbiAgICBjb25zdCBvblRvZ2dsZVJpZ2h0ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgaWYgKG9uTWFwVG9nZ2xlTGF5ZXIpIHtcbiAgICAgICAgb25NYXBUb2dnbGVMYXllcigxLCBsYXllci5pZCk7XG4gICAgICB9XG4gICAgfSwgW2xheWVyLCBvbk1hcFRvZ2dsZUxheWVyXSk7XG5cbiAgICBpZiAob3B0aW9ucz8uc2hvd0xheWVyTmFtZSA9PT0gZmFsc2UpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IGlzTGVmdFZpc2libGUgPVxuICAgICAgaXNTcGxpdCAmJiBzcGxpdE1hcHMgJiYgc3BsaXRNYXBzLmxlbmd0aCA+IDFcbiAgICAgICAgPyBpc1Zpc2libGUgJiYgQm9vbGVhbihzcGxpdE1hcHNbMF0/LmxheWVycz8uW2xheWVyLmlkXSlcbiAgICAgICAgOiBpc1Zpc2libGU7XG4gICAgY29uc3QgaXNSaWdodFZpc2libGUgPVxuICAgICAgaXNTcGxpdCAmJiBzcGxpdE1hcHMgJiYgc3BsaXRNYXBzLmxlbmd0aCA+IDFcbiAgICAgICAgPyBpc1Zpc2libGUgJiYgQm9vbGVhbihzcGxpdE1hcHNbMV0/LmxheWVycz8uW2xheWVyLmlkXSlcbiAgICAgICAgOiBpc1Zpc2libGU7XG4gICAgY29uc3QgaXNBbnlWaXNpYmxlID0gaXNMZWZ0VmlzaWJsZSB8fCBpc1JpZ2h0VmlzaWJsZTtcblxuICAgIHJldHVybiAoXG4gICAgICA8U3R5bGVkTGVnZW5kSGVhZGVyUm93PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImxlZ2VuZC0tbGF5ZXJfbmFtZVwiIHN0eWxlPXt7b3BhY2l0eTogaXNBbnlWaXNpYmxlID8gMSA6IDAuNSwgZmxleDogMX19PlxuICAgICAgICAgIHtsYXllci5jb25maWcubGFiZWx9XG4gICAgICAgIDwvZGl2PlxuICAgICAgICB7b25Ub2dnbGVFeHBhbmRlZCA/IChcbiAgICAgICAgICA8U3R5bGVkRXhwYW5kVG9nZ2xlIG9uQ2xpY2s9e29uVG9nZ2xlRXhwYW5kZWR9PlxuICAgICAgICAgICAge2lzRXhwYW5kZWQgPyA8QXJyb3dEb3duIGhlaWdodD1cIjEycHhcIiAvPiA6IDxBcnJvd1JpZ2h0IGhlaWdodD1cIjEycHhcIiAvPn1cbiAgICAgICAgICA8L1N0eWxlZEV4cGFuZFRvZ2dsZT5cbiAgICAgICAgKSA6IG51bGx9XG4gICAgICAgIHshaXNFeHBvcnQgJiYgb25NYXBUb2dnbGVMYXllciAmJiBpc1NwbGl0ICYmIHNwbGl0TWFwcyAmJiBzcGxpdE1hcHMubGVuZ3RoID4gMSA/IChcbiAgICAgICAgICA8U3R5bGVkU3BsaXRWaXNpYmlsaXR5Q29udHJvbHM+XG4gICAgICAgICAgICA8U3R5bGVkVmlzaWJpbGl0eVRvZ2dsZSAkaXNWaXNpYmxlPXtpc0xlZnRWaXNpYmxlfSBvbkNsaWNrPXtvblRvZ2dsZUxlZnR9PlxuICAgICAgICAgICAgICB7aXNMZWZ0VmlzaWJsZSA/IDxFeWVTZWVuIGhlaWdodD1cIjEycHhcIiAvPiA6IDxFeWVVbnNlZW4gaGVpZ2h0PVwiMTJweFwiIC8+fVxuICAgICAgICAgICAgPC9TdHlsZWRWaXNpYmlsaXR5VG9nZ2xlPlxuICAgICAgICAgICAgPFN0eWxlZFNwbGl0U2VwYXJhdG9yICRpc1Zpc2libGU9e2lzQW55VmlzaWJsZX0gLz5cbiAgICAgICAgICAgIDxTdHlsZWRWaXNpYmlsaXR5VG9nZ2xlICRpc1Zpc2libGU9e2lzUmlnaHRWaXNpYmxlfSBvbkNsaWNrPXtvblRvZ2dsZVJpZ2h0fT5cbiAgICAgICAgICAgICAge2lzUmlnaHRWaXNpYmxlID8gPEV5ZVNlZW4gaGVpZ2h0PVwiMTJweFwiIC8+IDogPEV5ZVVuc2VlbiBoZWlnaHQ9XCIxMnB4XCIgLz59XG4gICAgICAgICAgICA8L1N0eWxlZFZpc2liaWxpdHlUb2dnbGU+XG4gICAgICAgICAgPC9TdHlsZWRTcGxpdFZpc2liaWxpdHlDb250cm9scz5cbiAgICAgICAgKSA6ICFpc0V4cG9ydCAmJiBvblRvZ2dsZUxheWVyVmlzaWJpbGl0eSA/IChcbiAgICAgICAgICA8U3R5bGVkVmlzaWJpbGl0eVRvZ2dsZSAkaXNWaXNpYmxlPXtpc1Zpc2libGV9IG9uQ2xpY2s9e29uVG9nZ2xlfT5cbiAgICAgICAgICAgIHtpc1Zpc2libGUgPyA8RXllU2VlbiBoZWlnaHQ9XCIxMnB4XCIgLz4gOiA8RXllVW5zZWVuIGhlaWdodD1cIjEycHhcIiAvPn1cbiAgICAgICAgICA8L1N0eWxlZFZpc2liaWxpdHlUb2dnbGU+XG4gICAgICAgICkgOiBudWxsfVxuICAgICAgPC9TdHlsZWRMZWdlbmRIZWFkZXJSb3c+XG4gICAgKTtcbiAgfTtcbiAgcmV0dXJuIExheWVyTGVnZW5kSGVhZGVyO1xufVxuXG5jb25zdCBkZWZhdWx0QWN0aW9uSWNvbnMgPSB7XG4gIGV4cGFuZGVkOiBBcnJvd0Rvd24sXG4gIGNvbGxhcHNlZDogQXJyb3dSaWdodFxufTtcblxuZXhwb3J0IHR5cGUgTGF5ZXJMZWdlbmRDb250ZW50UHJvcHMgPSB7XG4gIGxheWVyOiBMYXllcjtcbiAgY29udGFpbmVyVzogbnVtYmVyO1xuICBtYXBTdGF0ZT86IE1hcFN0YXRlO1xuICBkaXNhYmxlRWRpdD86IGJvb2xlYW47XG4gIGlzRXhwb3J0PzogYm9vbGVhbjtcbiAgb25MYXllclZpc0NvbmZpZ0NoYW5nZT86IChvbGRMYXllcjogTGF5ZXIsIG5ld1Zpc0NvbmZpZzogUGFydGlhbDxMYXllclZpc0NvbmZpZz4pID0+IHZvaWQ7XG4gIGFjdGlvbkljb25zOiBNYXBMZWdlbmRJY29ucztcbn07XG5cbkxheWVyTGVnZW5kQ29udGVudEZhY3RvcnkuZGVwcyA9IFtMYXllckNvbG9yTGVnZW5kRmFjdG9yeV07XG5cbmV4cG9ydCBmdW5jdGlvbiBMYXllckxlZ2VuZENvbnRlbnRGYWN0b3J5KFxuICBMYXllckNvbG9yTGVnZW5kOiBSZXR1cm5UeXBlPHR5cGVvZiBMYXllckNvbG9yTGVnZW5kRmFjdG9yeT5cbikge1xuICBjb25zdCBMYXllckxlZ2VuZENvbnRlbnQ6IFJlYWN0LkZDPExheWVyTGVnZW5kQ29udGVudFByb3BzPiA9ICh7XG4gICAgbGF5ZXIsXG4gICAgY29udGFpbmVyVyxcbiAgICBtYXBTdGF0ZSxcbiAgICBkaXNhYmxlRWRpdCxcbiAgICBpc0V4cG9ydCxcbiAgICBvbkxheWVyVmlzQ29uZmlnQ2hhbmdlLFxuICAgIGFjdGlvbkljb25zXG4gIH0pID0+IHtcbiAgICBjb25zdCB2aXN1YWxDaGFubmVscyA9IGxheWVyLmdldExlZ2VuZFZpc3VhbENoYW5uZWxzKCk7XG4gICAgY29uc3QgY2hhbm5lbEtleXMgPSBPYmplY3QudmFsdWVzKHZpc3VhbENoYW5uZWxzKTtcbiAgICBjb25zdCBjb2xvckNoYW5uZWxzID0gY2hhbm5lbEtleXMuZmlsdGVyKGlzQ29sb3JDaGFubmVsKSBhcyBWaXN1YWxDaGFubmVsW107XG4gICAgY29uc3Qgbm9uQ29sb3JDaGFubmVscyA9IGNoYW5uZWxLZXlzLmZpbHRlcih2YyA9PiAhaXNDb2xvckNoYW5uZWwodmMpKTtcbiAgICBjb25zdCB3aWR0aCA9IGNvbnRhaW5lclcgLSAyICogRElNRU5TSU9OUy5tYXBDb250cm9sLnBhZGRpbmc7XG5cbiAgICAvLyByZW5kZXIgY29sb3IgYnkgY2hhbmVsIG9ubHlcbiAgICBsZXQgY29sb3JDaGFubmVsVG9SZW5kZXIgPSBjb2xvckNoYW5uZWxzLmZpbHRlcihcbiAgICAgIGNjID0+XG4gICAgICAgICghY2MuY29uZGl0aW9uIHx8IGNjLmNvbmRpdGlvbihsYXllci5jb25maWcpKSAmJlxuICAgICAgICBsYXllci5nZXRWaXN1YWxDaGFubmVsRGVzY3JpcHRpb24oY2Mua2V5KT8ubWVhc3VyZVxuICAgICk7XG4gICAgLy8gaWYgbm8gY29sb3IgYnkgY2hhbmVsLCByZW5kZXIgcmVzdFxuICAgIGlmICghY29sb3JDaGFubmVsVG9SZW5kZXIubGVuZ3RoKSB7XG4gICAgICBjb2xvckNoYW5uZWxUb1JlbmRlciA9IGNvbG9yQ2hhbm5lbHMuZmlsdGVyKFxuICAgICAgICBjYyA9PiAhY2MuY29uZGl0aW9uIHx8IGNjLmNvbmRpdGlvbihsYXllci5jb25maWcpXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gKFxuICAgICAgPD5cbiAgICAgICAge2NvbG9yQ2hhbm5lbFRvUmVuZGVyLm1hcChjb2xvckNoYW5uZWwgPT4gKFxuICAgICAgICAgIDxMYXllckNvbG9yTGVnZW5kXG4gICAgICAgICAgICBrZXk9e2NvbG9yQ2hhbm5lbC5rZXl9XG4gICAgICAgICAgICBjb2xvckNoYW5uZWw9e2NvbG9yQ2hhbm5lbH1cbiAgICAgICAgICAgIGNvbmZpZz17bGF5ZXIuY29uZmlnfVxuICAgICAgICAgICAgZGVzY3JpcHRpb249e2xheWVyLmdldFZpc3VhbENoYW5uZWxEZXNjcmlwdGlvbihjb2xvckNoYW5uZWwua2V5KX1cbiAgICAgICAgICAgIGxheWVyPXtsYXllcn1cbiAgICAgICAgICAgIGlzRXhwb3J0PXtpc0V4cG9ydH1cbiAgICAgICAgICAgIGRpc2FibGVFZGl0PXtkaXNhYmxlRWRpdH1cbiAgICAgICAgICAgIG1hcFN0YXRlPXttYXBTdGF0ZX1cbiAgICAgICAgICAgIG9uTGF5ZXJWaXNDb25maWdDaGFuZ2U9e29uTGF5ZXJWaXNDb25maWdDaGFuZ2V9XG4gICAgICAgICAgICBhY3Rpb25JY29ucz17YWN0aW9uSWNvbnN9XG4gICAgICAgICAgLz5cbiAgICAgICAgKSl9XG4gICAgICAgIHtub25Db2xvckNoYW5uZWxzLm1hcCgodmlzdWFsQ2hhbm5lbDogVmlzdWFsQ2hhbm5lbCkgPT4ge1xuICAgICAgICAgIGNvbnN0IG1hdGNoQ29uZGl0aW9uID0gIXZpc3VhbENoYW5uZWwuY29uZGl0aW9uIHx8IHZpc3VhbENoYW5uZWwuY29uZGl0aW9uKGxheWVyLmNvbmZpZyk7XG4gICAgICAgICAgY29uc3QgZW5hYmxlZCA9IGxheWVyLmNvbmZpZ1t2aXN1YWxDaGFubmVsLmZpZWxkXSB8fCB2aXN1YWxDaGFubmVsLmRlZmF1bHRNZWFzdXJlO1xuXG4gICAgICAgICAgaWYgKG1hdGNoQ29uZGl0aW9uICYmIGVuYWJsZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gbGF5ZXIuZ2V0VmlzdWFsQ2hhbm5lbERlc2NyaXB0aW9uKHZpc3VhbENoYW5uZWwua2V5KTtcbiAgICAgICAgICAgIGlmIChpc1JhZGl1c0NoYW5uZWwodmlzdWFsQ2hhbm5lbCkpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICA8TGF5ZXJSYWRpdXNMZWdlbmRcbiAgICAgICAgICAgICAgICAgIGtleT17dmlzdWFsQ2hhbm5lbC5rZXl9XG4gICAgICAgICAgICAgICAgICBsYXllcj17bGF5ZXJ9XG4gICAgICAgICAgICAgICAgICBtYXBTdGF0ZT17bWFwU3RhdGV9XG4gICAgICAgICAgICAgICAgICB3aWR0aD17d2lkdGh9XG4gICAgICAgICAgICAgICAgICB2aXN1YWxDaGFubmVsPXt2aXN1YWxDaGFubmVsfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICA8TGF5ZXJEZWZhdWx0TGVnZW5kXG4gICAgICAgICAgICAgICAga2V5PXt2aXN1YWxDaGFubmVsLmtleX1cbiAgICAgICAgICAgICAgICBsYWJlbD17ZGVzY3JpcHRpb24ubGFiZWx9XG4gICAgICAgICAgICAgICAgbmFtZT17ZGVzY3JpcHRpb24ubWVhc3VyZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9KX1cbiAgICAgIDwvPlxuICAgICk7XG4gIH07XG5cbiAgcmV0dXJuIExheWVyTGVnZW5kQ29udGVudDtcbn1cblxuZXhwb3J0IHR5cGUgTWFwTGVnZW5kUHJvcHMgPSB7XG4gIGxheWVycz86IFJlYWRvbmx5QXJyYXk8TGF5ZXI+O1xuICBsYXllck9yZGVyPzogTGF5ZXJPcmRlcjtcbiAgd2lkdGg/OiBudW1iZXI7XG4gIG1hcFN0YXRlPzogTWFwU3RhdGU7XG4gIG9wdGlvbnM/OiB7XG4gICAgc2hvd0xheWVyTmFtZT86IGJvb2xlYW47XG4gIH07XG4gIGRpc2FibGVFZGl0PzogYm9vbGVhbjtcbiAgaXNFeHBvcnQ/OiBib29sZWFuO1xuICBvbkxheWVyVmlzQ29uZmlnQ2hhbmdlPzogKG9sZExheWVyOiBMYXllciwgbmV3VmlzQ29uZmlnOiBQYXJ0aWFsPExheWVyVmlzQ29uZmlnPikgPT4gdm9pZDtcbiAgb25Ub2dnbGVMYXllclZpc2liaWxpdHk/OiAobGF5ZXI6IExheWVyKSA9PiB2b2lkO1xuICBvbk1hcFRvZ2dsZUxheWVyPzogKG1hcEluZGV4OiBudW1iZXIsIGxheWVySWQ6IHN0cmluZykgPT4gdm9pZDtcbiAgaXNTcGxpdD86IGJvb2xlYW47XG4gIHNwbGl0TWFwcz86IHtsYXllcnM6IHtba2V5OiBzdHJpbmddOiBib29sZWFufX1bXTtcbiAgYWN0aW9uSWNvbnM/OiBNYXBMZWdlbmRJY29ucztcbn07XG5cbk1hcExlZ2VuZEZhY3RvcnkuZGVwcyA9IFtMYXllckxlZ2VuZEhlYWRlckZhY3RvcnksIExheWVyTGVnZW5kQ29udGVudEZhY3RvcnldO1xuXG5mdW5jdGlvbiBNYXBMZWdlbmRGYWN0b3J5KFxuICBMYXllckxlZ2VuZEhlYWRlcjogUmV0dXJuVHlwZTx0eXBlb2YgTGF5ZXJMZWdlbmRIZWFkZXJGYWN0b3J5PixcbiAgTGF5ZXJMZWdlbmRDb250ZW50OiBSZXR1cm5UeXBlPHR5cGVvZiBMYXllckxlZ2VuZENvbnRlbnRGYWN0b3J5PlxuKSB7XG4gIGNvbnN0IExheWVyTGVnZW5kSXRlbTogUmVhY3QuRkM8e1xuICAgIGxheWVyOiBMYXllcjtcbiAgICBjb250YWluZXJXOiBudW1iZXI7XG4gICAgaXNMYXN0OiBib29sZWFuO1xuICAgIGlzTGF5ZXJWaXNpYmxlOiBib29sZWFuO1xuICAgIGlzRXhwb3J0PzogYm9vbGVhbjtcbiAgICBvcHRpb25zPzoge3Nob3dMYXllck5hbWU/OiBib29sZWFufTtcbiAgICBtYXBTdGF0ZT86IE1hcFN0YXRlO1xuICAgIGRpc2FibGVFZGl0PzogYm9vbGVhbjtcbiAgICBvbkxheWVyVmlzQ29uZmlnQ2hhbmdlPzogKG9sZExheWVyOiBMYXllciwgbmV3VmlzQ29uZmlnOiBQYXJ0aWFsPExheWVyVmlzQ29uZmlnPikgPT4gdm9pZDtcbiAgICBvblRvZ2dsZUxheWVyVmlzaWJpbGl0eT86IChsYXllcjogTGF5ZXIpID0+IHZvaWQ7XG4gICAgb25NYXBUb2dnbGVMYXllcj86IChtYXBJbmRleDogbnVtYmVyLCBsYXllcklkOiBzdHJpbmcpID0+IHZvaWQ7XG4gICAgaXNTcGxpdD86IGJvb2xlYW47XG4gICAgc3BsaXRNYXBzPzoge2xheWVyczoge1trZXk6IHN0cmluZ106IGJvb2xlYW59fVtdO1xuICAgIGFjdGlvbkljb25zOiBNYXBMZWdlbmRJY29ucztcbiAgfT4gPSAoe1xuICAgIGxheWVyLFxuICAgIGNvbnRhaW5lclcsXG4gICAgaXNMYXN0LFxuICAgIGlzTGF5ZXJWaXNpYmxlLFxuICAgIGlzRXhwb3J0LFxuICAgIG9wdGlvbnMsXG4gICAgbWFwU3RhdGUsXG4gICAgZGlzYWJsZUVkaXQsXG4gICAgb25MYXllclZpc0NvbmZpZ0NoYW5nZSxcbiAgICBvblRvZ2dsZUxheWVyVmlzaWJpbGl0eSxcbiAgICBvbk1hcFRvZ2dsZUxheWVyLFxuICAgIGlzU3BsaXQsXG4gICAgc3BsaXRNYXBzLFxuICAgIGFjdGlvbkljb25zXG4gIH0pID0+IHtcbiAgICBjb25zdCBbaXNFeHBhbmRlZCwgc2V0SXNFeHBhbmRlZF0gPSB1c2VTdGF0ZSh0cnVlKTtcbiAgICBjb25zdCBoYW5kbGVUb2dnbGVFeHBhbmRlZCA9IHVzZUNhbGxiYWNrKCgpID0+IHNldElzRXhwYW5kZWQocHJldiA9PiAhcHJldiksIFtdKTtcblxuICAgIHJldHVybiAoXG4gICAgICA8U3R5bGVkTWFwQ29udHJvbExlZ2VuZCBjbGFzc05hbWU9XCJsZWdlbmQtLWxheWVyXCIgJGxhc3Q9e2lzTGFzdH0gd2lkdGg9e2NvbnRhaW5lcld9PlxuICAgICAgICA8TGF5ZXJMZWdlbmRIZWFkZXJcbiAgICAgICAgICBpc0V4cG9ydD17aXNFeHBvcnR9XG4gICAgICAgICAgb3B0aW9ucz17b3B0aW9uc31cbiAgICAgICAgICBsYXllcj17bGF5ZXJ9XG4gICAgICAgICAgb25Ub2dnbGVMYXllclZpc2liaWxpdHk9e29uVG9nZ2xlTGF5ZXJWaXNpYmlsaXR5fVxuICAgICAgICAgIGlzU3BsaXQ9e2lzU3BsaXR9XG4gICAgICAgICAgc3BsaXRNYXBzPXtzcGxpdE1hcHN9XG4gICAgICAgICAgb25NYXBUb2dnbGVMYXllcj17b25NYXBUb2dnbGVMYXllcn1cbiAgICAgICAgICBpc0V4cGFuZGVkPXtpc0V4cGFuZGVkfVxuICAgICAgICAgIG9uVG9nZ2xlRXhwYW5kZWQ9e2lzRXhwb3J0ID8gdW5kZWZpbmVkIDogaGFuZGxlVG9nZ2xlRXhwYW5kZWR9XG4gICAgICAgIC8+XG4gICAgICAgIHtpc0V4cGFuZGVkID8gKFxuICAgICAgICAgIDxkaXYgc3R5bGU9e3tvcGFjaXR5OiBpc0xheWVyVmlzaWJsZSA/IDEgOiAwLjV9fT5cbiAgICAgICAgICAgIDxMYXllckxlZ2VuZENvbnRlbnRcbiAgICAgICAgICAgICAgY29udGFpbmVyVz17Y29udGFpbmVyV31cbiAgICAgICAgICAgICAgbGF5ZXI9e2xheWVyfVxuICAgICAgICAgICAgICBtYXBTdGF0ZT17bWFwU3RhdGV9XG4gICAgICAgICAgICAgIGRpc2FibGVFZGl0PXtkaXNhYmxlRWRpdH1cbiAgICAgICAgICAgICAgaXNFeHBvcnQ9e2lzRXhwb3J0fVxuICAgICAgICAgICAgICBvbkxheWVyVmlzQ29uZmlnQ2hhbmdlPXtvbkxheWVyVmlzQ29uZmlnQ2hhbmdlfVxuICAgICAgICAgICAgICBhY3Rpb25JY29ucz17YWN0aW9uSWNvbnN9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApIDogbnVsbH1cbiAgICAgIDwvU3R5bGVkTWFwQ29udHJvbExlZ2VuZD5cbiAgICApO1xuICB9O1xuXG4gIGNvbnN0IE1hcExlZ2VuZDogUmVhY3QuRkM8TWFwTGVnZW5kUHJvcHM+ID0gKHtcbiAgICBsYXllcnMgPSBbXSxcbiAgICBsYXllck9yZGVyLFxuICAgIHdpZHRoLFxuICAgIG1hcFN0YXRlLFxuICAgIG9wdGlvbnMsXG4gICAgZGlzYWJsZUVkaXQsXG4gICAgaXNFeHBvcnQsXG4gICAgb25MYXllclZpc0NvbmZpZ0NoYW5nZSxcbiAgICBvblRvZ2dsZUxheWVyVmlzaWJpbGl0eSxcbiAgICBvbk1hcFRvZ2dsZUxheWVyLFxuICAgIGlzU3BsaXQsXG4gICAgc3BsaXRNYXBzLFxuICAgIGFjdGlvbkljb25zID0gZGVmYXVsdEFjdGlvbkljb25zXG4gIH0pID0+IHtcbiAgICBjb25zdCBvcmRlcmVkTGF5ZXJzID0gbGF5ZXJPcmRlclxuICAgICAgPyBnZXRGbGF0TGF5ZXJPcmRlcihsYXllck9yZGVyKS5yZWR1Y2U8TGF5ZXJbXT4oKGFjYywgaWQpID0+IHtcbiAgICAgICAgICBjb25zdCBsYXllciA9IGxheWVycy5maW5kKGwgPT4gbC5pZCA9PT0gaWQpO1xuICAgICAgICAgIGlmIChsYXllcikgYWNjLnB1c2gobGF5ZXIpO1xuICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgIH0sIFtdKVxuICAgICAgOiBsYXllcnM7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJtYXAtbGVnZW5kXCI+XG4gICAgICAgIHtvcmRlcmVkTGF5ZXJzLm1hcCgobGF5ZXIsIGluZGV4KSA9PiB7XG4gICAgICAgICAgaWYgKCFsYXllci5pc1ZhbGlkVG9TYXZlKCkgfHwgbGF5ZXIuY29uZmlnLmhpZGRlbikge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IGNvbnRhaW5lclcgPSB3aWR0aCB8fCBESU1FTlNJT05TLm1hcENvbnRyb2wud2lkdGg7XG5cbiAgICAgICAgICBjb25zdCBpc0xheWVyVmlzaWJsZSA9XG4gICAgICAgICAgICBpc1NwbGl0ICYmIHNwbGl0TWFwcyAmJiBzcGxpdE1hcHMubGVuZ3RoID4gMVxuICAgICAgICAgICAgICA/IGxheWVyLmNvbmZpZy5pc1Zpc2libGUgJiZcbiAgICAgICAgICAgICAgICAoQm9vbGVhbihzcGxpdE1hcHNbMF0/LmxheWVycz8uW2xheWVyLmlkXSkgfHxcbiAgICAgICAgICAgICAgICAgIEJvb2xlYW4oc3BsaXRNYXBzWzFdPy5sYXllcnM/LltsYXllci5pZF0pKVxuICAgICAgICAgICAgICA6IGxheWVyLmNvbmZpZy5pc1Zpc2libGU7XG5cbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPExheWVyTGVnZW5kSXRlbVxuICAgICAgICAgICAgICBrZXk9e2xheWVyLmlkfVxuICAgICAgICAgICAgICBsYXllcj17bGF5ZXJ9XG4gICAgICAgICAgICAgIGNvbnRhaW5lclc9e2NvbnRhaW5lcld9XG4gICAgICAgICAgICAgIGlzTGFzdD17aW5kZXggPT09IG9yZGVyZWRMYXllcnMubGVuZ3RoIC0gMX1cbiAgICAgICAgICAgICAgaXNMYXllclZpc2libGU9e2lzTGF5ZXJWaXNpYmxlfVxuICAgICAgICAgICAgICBpc0V4cG9ydD17aXNFeHBvcnR9XG4gICAgICAgICAgICAgIG9wdGlvbnM9e29wdGlvbnN9XG4gICAgICAgICAgICAgIG1hcFN0YXRlPXttYXBTdGF0ZX1cbiAgICAgICAgICAgICAgZGlzYWJsZUVkaXQ9e2Rpc2FibGVFZGl0fVxuICAgICAgICAgICAgICBvbkxheWVyVmlzQ29uZmlnQ2hhbmdlPXtvbkxheWVyVmlzQ29uZmlnQ2hhbmdlfVxuICAgICAgICAgICAgICBvblRvZ2dsZUxheWVyVmlzaWJpbGl0eT17b25Ub2dnbGVMYXllclZpc2liaWxpdHl9XG4gICAgICAgICAgICAgIG9uTWFwVG9nZ2xlTGF5ZXI9e29uTWFwVG9nZ2xlTGF5ZXJ9XG4gICAgICAgICAgICAgIGlzU3BsaXQ9e2lzU3BsaXR9XG4gICAgICAgICAgICAgIHNwbGl0TWFwcz17c3BsaXRNYXBzfVxuICAgICAgICAgICAgICBhY3Rpb25JY29ucz17YWN0aW9uSWNvbnN9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICk7XG4gICAgICAgIH0pfVxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfTtcblxuICBNYXBMZWdlbmQuZGlzcGxheU5hbWUgPSAnTWFwTGVnZW5kJztcblxuICByZXR1cm4gTWFwTGVnZW5kO1xufVxuXG5leHBvcnQgZGVmYXVsdCBNYXBMZWdlbmRGYWN0b3J5O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxpQkFBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUcsUUFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksU0FBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssVUFBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sWUFBQSxHQUFBUCx1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQU8sYUFBQSxHQUFBTCxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQVEsVUFBQSxHQUFBUixPQUFBO0FBQ0EsSUFBQVMsYUFBQSxHQUFBVCxPQUFBO0FBR0EsSUFBQVUsd0JBQUEsR0FBQVYsT0FBQTtBQUNBLElBQUFXLE1BQUEsR0FBQVgsT0FBQTtBQUNBLElBQUFZLGtCQUFBLEdBQUFWLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBYSxTQUFBLEdBQUFiLE9BQUE7QUFBc0QsSUFBQWMsZUFBQSxFQUFBQyxnQkFBQSxFQUFBQyxnQkFBQSxFQUFBQyxnQkFBQSxFQUFBQyxnQkFBQSxFQUFBQyxnQkFBQSxFQWpCdEQ7QUFDQTtBQUFBLFNBQUFDLHlCQUFBQyxDQUFBLDZCQUFBQyxPQUFBLG1CQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUFGLHdCQUFBLFlBQUFBLHlCQUFBQyxDQUFBLFdBQUFBLENBQUEsR0FBQUcsQ0FBQSxHQUFBRCxDQUFBLEtBQUFGLENBQUE7QUFBQSxTQUFBdEIsd0JBQUFzQixDQUFBLEVBQUFFLENBQUEsU0FBQUEsQ0FBQSxJQUFBRixDQUFB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
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import React, { ComponentType } from 'react';
|
|
2
2
|
import MapControlTooltipFactory from './map-control-tooltip';
|
|
3
|
-
import { MapControls } from '@kepler.gl/types';
|
|
3
|
+
import { MapControls, MapState } from '@kepler.gl/types';
|
|
4
|
+
import { MapSplitMode } from '@kepler.gl/constants';
|
|
4
5
|
interface SplitMapButtonIcons {
|
|
5
6
|
delete: ComponentType<any>;
|
|
6
7
|
split: ComponentType<any>;
|
|
@@ -9,9 +10,13 @@ export type SplitMapButtonProps = {
|
|
|
9
10
|
isSplit: boolean;
|
|
10
11
|
mapIndex: number;
|
|
11
12
|
onToggleSplitMap: (index?: number) => void;
|
|
13
|
+
onSetMapSplitMode?: (payload: {
|
|
14
|
+
mapSplitMode: MapSplitMode;
|
|
15
|
+
}) => void;
|
|
12
16
|
actionIcons: SplitMapButtonIcons;
|
|
13
17
|
readOnly: boolean;
|
|
14
18
|
mapControls: MapControls;
|
|
19
|
+
mapState?: MapState;
|
|
15
20
|
};
|
|
16
21
|
declare function SplitMapButtonFactory(MapControlTooltip: any): React.NamedExoticComponent<SplitMapButtonProps>;
|
|
17
22
|
declare namespace SplitMapButtonFactory {
|