@kepler.gl/reducers 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/combined-updaters.d.ts +5 -1
- package/dist/combined-updaters.js +51 -2
- package/dist/composers.d.ts +1 -0
- package/dist/composers.js +2 -2
- package/dist/layer-utils.d.ts +23 -5
- package/dist/layer-utils.js +278 -21
- package/dist/map-state-updaters.d.ts +14 -21
- package/dist/map-state-updaters.js +88 -10
- package/dist/map-state.d.ts +2 -78
- package/dist/map-state.js +2 -2
- package/dist/ui-state-updaters.d.ts +1 -1
- package/dist/ui-state-updaters.js +7 -4
- package/dist/vis-state-merger.d.ts +7 -0
- package/dist/vis-state-merger.js +169 -8
- package/dist/vis-state-selectors.d.ts +42 -6
- package/dist/vis-state-updaters.d.ts +38 -1
- package/dist/vis-state-updaters.js +278 -22
- package/dist/vis-state.d.ts +8 -4
- package/dist/vis-state.js +2 -2
- package/package.json +21 -21
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { MapStateActions, ReceiveMapConfigPayload, ActionTypes } from '@kepler.gl/actions';
|
|
2
|
-
import { MapState,
|
|
2
|
+
import { MapState, Viewport } from '@kepler.gl/types';
|
|
3
3
|
/**
|
|
4
4
|
* Default initial `mapState`
|
|
5
5
|
* @memberof mapStateUpdaters
|
|
@@ -62,31 +62,24 @@ export declare const receiveMapConfigUpdater: (state: MapState, { payload: { con
|
|
|
62
62
|
* @public
|
|
63
63
|
*/
|
|
64
64
|
export declare const toggleSplitMapUpdater: (state: MapState) => MapState;
|
|
65
|
+
/**
|
|
66
|
+
* Set the map split mode (single, dual, or swipe)
|
|
67
|
+
* @memberof mapStateUpdaters
|
|
68
|
+
* @public
|
|
69
|
+
*/
|
|
70
|
+
export declare const setMapSplitModeUpdater: (state: MapState, action: MapStateActions.SetMapSplitModeUpdaterAction) => MapState;
|
|
71
|
+
/**
|
|
72
|
+
* Set the swipe compare percentage
|
|
73
|
+
* @memberof mapStateUpdaters
|
|
74
|
+
* @public
|
|
75
|
+
*/
|
|
76
|
+
export declare const setSwipeComparePercentageUpdater: (state: MapState, action: MapStateActions.SetSwipeComparePercentageUpdaterAction) => MapState;
|
|
65
77
|
/**
|
|
66
78
|
* Toggle between locked and unlocked split viewports
|
|
67
79
|
* @memberof mapStateUpdaters
|
|
68
80
|
* @public
|
|
69
81
|
*/
|
|
70
|
-
export declare const toggleSplitMapViewportUpdater: (state: MapState, action: MapStateActions.ToggleSplitMapViewportUpdaterAction) =>
|
|
71
|
-
isViewportSynced: boolean;
|
|
72
|
-
isZoomLocked: boolean;
|
|
73
|
-
pitch: number;
|
|
74
|
-
bearing: number;
|
|
75
|
-
latitude: number;
|
|
76
|
-
longitude: number;
|
|
77
|
-
zoom: number;
|
|
78
|
-
dragRotate: boolean;
|
|
79
|
-
width: number;
|
|
80
|
-
height: number;
|
|
81
|
-
minZoom?: number;
|
|
82
|
-
maxZoom?: number;
|
|
83
|
-
maxPitch?: number;
|
|
84
|
-
maxBounds?: Bounds;
|
|
85
|
-
initialState?: any;
|
|
86
|
-
scale?: number;
|
|
87
|
-
isSplit: boolean;
|
|
88
|
-
splitMapViewports: Viewport[];
|
|
89
|
-
};
|
|
82
|
+
export declare const toggleSplitMapViewportUpdater: (state: MapState, action: MapStateActions.ToggleSplitMapViewportUpdaterAction) => MapState;
|
|
90
83
|
export declare function getMapDimForSplitMap(isSplit: any, state: any): {
|
|
91
84
|
width?: undefined;
|
|
92
85
|
} | {
|
|
@@ -7,16 +7,17 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
exports.fitBoundsUpdater = exports.INITIAL_MAP_STATE = void 0;
|
|
8
8
|
exports.getMapDimForSplitMap = getMapDimForSplitMap;
|
|
9
9
|
exports.pickViewportPropsFromMapState = pickViewportPropsFromMapState;
|
|
10
|
-
exports.updateMapUpdater = exports.toggleSplitMapViewportUpdater = exports.toggleSplitMapUpdater = exports.togglePerspectiveUpdater = exports.resetMapConfigUpdater = exports.receiveMapConfigUpdater = void 0;
|
|
10
|
+
exports.updateMapUpdater = exports.toggleSplitMapViewportUpdater = exports.toggleSplitMapUpdater = exports.togglePerspectiveUpdater = exports.setSwipeComparePercentageUpdater = exports.setMapSplitModeUpdater = exports.resetMapConfigUpdater = exports.receiveMapConfigUpdater = void 0;
|
|
11
11
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
12
12
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
13
13
|
var _geoViewport = _interopRequireDefault(require("@mapbox/geo-viewport"));
|
|
14
|
-
var _booleanWithin =
|
|
15
|
-
var _bboxPolygon =
|
|
14
|
+
var _booleanWithin = require("@turf/boolean-within");
|
|
15
|
+
var _bboxPolygon = require("@turf/bbox-polygon");
|
|
16
16
|
var _webMercator = require("@math.gl/web-mercator");
|
|
17
17
|
var _deepmerge = _interopRequireDefault(require("deepmerge"));
|
|
18
18
|
var _pick = _interopRequireDefault(require("lodash/pick"));
|
|
19
19
|
var _utils = require("@kepler.gl/utils");
|
|
20
|
+
var _constants = require("@kepler.gl/constants");
|
|
20
21
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
21
22
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } // SPDX-License-Identifier: MIT
|
|
22
23
|
// Copyright contributors to the kepler.gl project
|
|
@@ -98,7 +99,9 @@ var INITIAL_MAP_STATE = exports.INITIAL_MAP_STATE = {
|
|
|
98
99
|
isSplit: false,
|
|
99
100
|
isViewportSynced: true,
|
|
100
101
|
isZoomLocked: false,
|
|
101
|
-
splitMapViewports: []
|
|
102
|
+
splitMapViewports: [],
|
|
103
|
+
mapSplitMode: _constants.MapSplitMode.SINGLE_MAP,
|
|
104
|
+
swipeComparePercentage: 50
|
|
102
105
|
};
|
|
103
106
|
|
|
104
107
|
/* Updaters */
|
|
@@ -274,7 +277,8 @@ var receiveMapConfigUpdater = exports.receiveMapConfigUpdater = function receive
|
|
|
274
277
|
*/
|
|
275
278
|
var toggleSplitMapUpdater = exports.toggleSplitMapUpdater = function toggleSplitMapUpdater(state) {
|
|
276
279
|
return _objectSpread(_objectSpread(_objectSpread({}, state), getMapDimForSplitMap(!state.isSplit, state)), {}, {
|
|
277
|
-
isSplit: !state.isSplit
|
|
280
|
+
isSplit: !state.isSplit,
|
|
281
|
+
mapSplitMode: !state.isSplit ? _constants.MapSplitMode.DUAL_MAP : _constants.MapSplitMode.SINGLE_MAP
|
|
278
282
|
}, !state.isSplit === false ? {
|
|
279
283
|
// if toggling to no longer split (single mode) then reset a few properties
|
|
280
284
|
isViewportSynced: true,
|
|
@@ -283,12 +287,81 @@ var toggleSplitMapUpdater = exports.toggleSplitMapUpdater = function toggleSplit
|
|
|
283
287
|
} : {});
|
|
284
288
|
};
|
|
285
289
|
|
|
290
|
+
/**
|
|
291
|
+
* Set the map split mode (single, dual, or swipe)
|
|
292
|
+
* @memberof mapStateUpdaters
|
|
293
|
+
* @public
|
|
294
|
+
*/
|
|
295
|
+
var setMapSplitModeUpdater = exports.setMapSplitModeUpdater = function setMapSplitModeUpdater(state, action) {
|
|
296
|
+
var mapSplitMode = action.payload.mapSplitMode;
|
|
297
|
+
var prevMode = state.mapSplitMode;
|
|
298
|
+
if (mapSplitMode === prevMode) {
|
|
299
|
+
return state;
|
|
300
|
+
}
|
|
301
|
+
switch (mapSplitMode) {
|
|
302
|
+
case _constants.MapSplitMode.SINGLE_MAP:
|
|
303
|
+
return _objectSpread(_objectSpread(_objectSpread({}, state), {}, {
|
|
304
|
+
mapSplitMode: mapSplitMode,
|
|
305
|
+
isSplit: false
|
|
306
|
+
}, prevMode === _constants.MapSplitMode.DUAL_MAP && {
|
|
307
|
+
width: state.width * 2
|
|
308
|
+
}), {}, {
|
|
309
|
+
isViewportSynced: true,
|
|
310
|
+
isZoomLocked: false,
|
|
311
|
+
splitMapViewports: []
|
|
312
|
+
});
|
|
313
|
+
case _constants.MapSplitMode.DUAL_MAP:
|
|
314
|
+
return _objectSpread(_objectSpread(_objectSpread({}, state), {}, {
|
|
315
|
+
mapSplitMode: mapSplitMode,
|
|
316
|
+
isSplit: true
|
|
317
|
+
}, prevMode === _constants.MapSplitMode.SINGLE_MAP && {
|
|
318
|
+
width: state.width / 2
|
|
319
|
+
}), prevMode === _constants.MapSplitMode.SWIPE_COMPARE && {
|
|
320
|
+
width: state.width / 2
|
|
321
|
+
});
|
|
322
|
+
case _constants.MapSplitMode.SWIPE_COMPARE:
|
|
323
|
+
return _objectSpread(_objectSpread(_objectSpread({}, state), {}, {
|
|
324
|
+
mapSplitMode: mapSplitMode,
|
|
325
|
+
isSplit: true
|
|
326
|
+
}, prevMode === _constants.MapSplitMode.DUAL_MAP && {
|
|
327
|
+
width: state.width * 2
|
|
328
|
+
}), {}, {
|
|
329
|
+
isViewportSynced: true,
|
|
330
|
+
isZoomLocked: false,
|
|
331
|
+
splitMapViewports: []
|
|
332
|
+
});
|
|
333
|
+
default:
|
|
334
|
+
return state;
|
|
335
|
+
}
|
|
336
|
+
};
|
|
337
|
+
|
|
338
|
+
/**
|
|
339
|
+
* Set the swipe compare percentage
|
|
340
|
+
* @memberof mapStateUpdaters
|
|
341
|
+
* @public
|
|
342
|
+
*/
|
|
343
|
+
var setSwipeComparePercentageUpdater = exports.setSwipeComparePercentageUpdater = function setSwipeComparePercentageUpdater(state, action) {
|
|
344
|
+
var percentage = action.payload.percentage;
|
|
345
|
+
var clamped = Math.min(100, Math.max(0, percentage));
|
|
346
|
+
if (clamped === state.swipeComparePercentage) {
|
|
347
|
+
return state;
|
|
348
|
+
}
|
|
349
|
+
return _objectSpread(_objectSpread({}, state), {}, {
|
|
350
|
+
swipeComparePercentage: clamped
|
|
351
|
+
});
|
|
352
|
+
};
|
|
353
|
+
|
|
286
354
|
/**
|
|
287
355
|
* Toggle between locked and unlocked split viewports
|
|
288
356
|
* @memberof mapStateUpdaters
|
|
289
357
|
* @public
|
|
290
358
|
*/
|
|
291
359
|
var toggleSplitMapViewportUpdater = exports.toggleSplitMapViewportUpdater = function toggleSplitMapViewportUpdater(state, action) {
|
|
360
|
+
// Swipe mode always uses synced viewports
|
|
361
|
+
if (state.mapSplitMode === _constants.MapSplitMode.SWIPE_COMPARE) {
|
|
362
|
+
return state;
|
|
363
|
+
}
|
|
364
|
+
|
|
292
365
|
// new map state immediately gets the new, optional payload values for isViewportSynced and/or isZoomLocked
|
|
293
366
|
var newMapState = _objectSpread(_objectSpread({}, state), action.payload || {});
|
|
294
367
|
if (newMapState.isViewportSynced) {
|
|
@@ -348,6 +421,11 @@ function getMapDimForSplitMap(isSplit, state) {
|
|
|
348
421
|
if (state.isSplit === isSplit) {
|
|
349
422
|
return {};
|
|
350
423
|
}
|
|
424
|
+
|
|
425
|
+
// In swipe mode, both maps use full width (overlapping with clip)
|
|
426
|
+
if (state.mapSplitMode === _constants.MapSplitMode.SWIPE_COMPARE) {
|
|
427
|
+
return {};
|
|
428
|
+
}
|
|
351
429
|
var width = state.isSplit && !isSplit ?
|
|
352
430
|
// 3. state split: true - isSplit: false
|
|
353
431
|
// double width
|
|
@@ -363,11 +441,11 @@ function updateViewportBasedOnBounds(state, newMapState) {
|
|
|
363
441
|
// Get the new viewport bounds
|
|
364
442
|
var viewportBounds = _geoViewport["default"].bounds([newMapState.longitude, newMapState.latitude], newMapState.zoom, [newMapState.width, newMapState.height], _utils.MAPBOX_TILE_SIZE);
|
|
365
443
|
// Generate turf Polygon from bounds for comparison
|
|
366
|
-
var viewportBoundsPolygon = (0, _bboxPolygon
|
|
444
|
+
var viewportBoundsPolygon = (0, _bboxPolygon.bboxPolygon)(viewportBounds);
|
|
367
445
|
// @ts-ignore
|
|
368
446
|
var newStateMaxBounds = newMapState.maxBounds;
|
|
369
447
|
// @ts-ignore
|
|
370
|
-
var maxBoundsPolygon = (0, _bboxPolygon
|
|
448
|
+
var maxBoundsPolygon = (0, _bboxPolygon.bboxPolygon)(newStateMaxBounds);
|
|
371
449
|
|
|
372
450
|
// If maxBounds has changed reset the viewport to snap to bounds
|
|
373
451
|
var hasMaxBoundsChanged = !state.maxBounds || !state.maxBounds.every(function (val, idx) {
|
|
@@ -375,7 +453,7 @@ function updateViewportBasedOnBounds(state, newMapState) {
|
|
|
375
453
|
});
|
|
376
454
|
if (hasMaxBoundsChanged) {
|
|
377
455
|
// Check if the newMapState viewport is within maxBounds
|
|
378
|
-
if (!(0, _booleanWithin
|
|
456
|
+
if (!(0, _booleanWithin.booleanWithin)(viewportBoundsPolygon, maxBoundsPolygon)) {
|
|
379
457
|
var _fitBounds = (0, _webMercator.fitBounds)({
|
|
380
458
|
width: newMapState.width,
|
|
381
459
|
height: newMapState.height,
|
|
@@ -395,7 +473,7 @@ function updateViewportBasedOnBounds(state, newMapState) {
|
|
|
395
473
|
}
|
|
396
474
|
|
|
397
475
|
// Check if the newMapState viewport is within maxBounds
|
|
398
|
-
if (!(0, _booleanWithin
|
|
476
|
+
if (!(0, _booleanWithin.booleanWithin)(viewportBoundsPolygon, maxBoundsPolygon)) {
|
|
399
477
|
newMapState = _objectSpread(_objectSpread({}, newMapState), {}, {
|
|
400
478
|
longitude: state.longitude,
|
|
401
479
|
latitude: state.latitude,
|
|
@@ -435,4 +513,4 @@ function updateViewport(originalViewport, viewportUpdates) {
|
|
|
435
513
|
}
|
|
436
514
|
return newViewport;
|
|
437
515
|
}
|
|
438
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZ2VvVmlld3BvcnQiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9ib29sZWFuV2l0aGluIiwiX2Jib3hQb2x5Z29uIiwiX3dlYk1lcmNhdG9yIiwiX2RlZXBtZXJnZSIsIl9waWNrIiwiX3V0aWxzIiwib3duS2V5cyIsImUiLCJyIiwidCIsIk9iamVjdCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJvIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJtYXBTdGF0ZVVwZGF0ZXJzIiwiSU5JVElBTF9NQVBfU1RBVEUiLCJleHBvcnRzIiwicGl0Y2giLCJiZWFyaW5nIiwibGF0aXR1ZGUiLCJsb25naXR1ZGUiLCJ6b29tIiwiZHJhZ1JvdGF0ZSIsIndpZHRoIiwiaGVpZ2h0IiwibWluWm9vbSIsInVuZGVmaW5lZCIsIm1heFpvb20iLCJtYXhQaXRjaCIsIm1heEJvdW5kcyIsImlzU3BsaXQiLCJpc1ZpZXdwb3J0U3luY2VkIiwiaXNab29tTG9ja2VkIiwic3BsaXRNYXBWaWV3cG9ydHMiLCJ1cGRhdGVNYXBVcGRhdGVyIiwic3RhdGUiLCJhY3Rpb24iLCJfYWN0aW9uJHBheWxvYWQiLCJwYXlsb2FkIiwiaW5wdXRWaWV3cG9ydCIsInZpZXdwb3J0IiwiX2FjdGlvbiRwYXlsb2FkJG1hcEluIiwibWFwSW5kZXgiLCJ2YWxpZGF0ZVZpZXdQb3J0IiwidXBkYXRlVmlld3BvcnQiLCJvdGhlclZpZXdwb3J0TWFwSW5kZXgiLCJtYXAiLCJjdXJyZW50Vmlld3BvcnQiLCJpIiwiTnVtYmVyIiwiaXNGaW5pdGUiLCJmaXRCb3VuZHNVcGRhdGVyIiwiY2VudGVyQW5kWm9vbSIsImdldENlbnRlckFuZFpvb21Gcm9tQm91bmRzIiwibmV3U3RhdGUiLCJjZW50ZXIiLCJ0b2dnbGVQZXJzcGVjdGl2ZVVwZGF0ZXIiLCJyZXNldE1hcENvbmZpZ1VwZGF0ZXIiLCJpbml0aWFsU3RhdGUiLCJyZWNlaXZlTWFwQ29uZmlnVXBkYXRlciIsIl9yZWYiLCJfcmVmJHBheWxvYWQiLCJfcmVmJHBheWxvYWQkY29uZmlnIiwiY29uZmlnIiwiX3JlZiRwYXlsb2FkJG9wdGlvbnMiLCJvcHRpb25zIiwiX3JlZiRwYXlsb2FkJGJvdW5kcyIsImJvdW5kcyIsIm1hcFN0YXRlIiwibWVyZ2VkU3RhdGUiLCJkZWVwbWVyZ2UiLCJhcnJheU1lcmdlIiwiX2Rlc3RpbmF0aW9uQXJyYXkiLCJzb3VyY2VBcnJheSIsImNlbnRlck1hcCIsImdldE1hcERpbUZvclNwbGl0TWFwIiwidG9nZ2xlU3BsaXRNYXBVcGRhdGVyIiwidG9nZ2xlU3BsaXRNYXBWaWV3cG9ydFVwZGF0ZXIiLCJuZXdNYXBTdGF0ZSIsImxhc3RVcGRhdGVkVmlld3BvcnRJbmRleCIsImZpbmRJbmRleCIsInYiLCJsZWZ0Vmlld3BvcnQiLCJwaWNrVmlld3BvcnRQcm9wc0Zyb21NYXBTdGF0ZSIsInJpZ2h0Vmlld3BvcnQiLCJ1cGRhdGVWaWV3cG9ydEJhc2VkT25Cb3VuZHMiLCJ2aWV3cG9ydEJvdW5kcyIsImdlb1ZpZXdwb3J0IiwiTUFQQk9YX1RJTEVfU0laRSIsInZpZXdwb3J0Qm91bmRzUG9seWdvbiIsImJib3hQb2x5Z29uIiwibmV3U3RhdGVNYXhCb3VuZHMiLCJtYXhCb3VuZHNQb2x5Z29uIiwiaGFzTWF4Qm91bmRzQ2hhbmdlZCIsImV2ZXJ5IiwidmFsIiwiaWR4IiwiYm9vbGVhbldpdGhpbiIsIl9maXRCb3VuZHMiLCJmaXRCb3VuZHMiLCJwaWNrIiwiZGVmaW5lZFByb3BzIiwib2JqIiwiZW50cmllcyIsInJlZHVjZSIsImFjY3UiLCJfcmVmMiIsIl9yZWYzIiwiX3NsaWNlZFRvQXJyYXkyIiwiayIsIm9yaWdpbmFsVmlld3BvcnQiLCJ2aWV3cG9ydFVwZGF0ZXMiLCJuZXdWaWV3cG9ydCIsInZhbGlkYXRlQm91bmRzIl0sInNvdXJjZXMiOlsiLi4vc3JjL21hcC1zdGF0ZS11cGRhdGVycy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgZ2VvVmlld3BvcnQgZnJvbSAnQG1hcGJveC9nZW8tdmlld3BvcnQnO1xuaW1wb3J0IGJvb2xlYW5XaXRoaW4gZnJvbSAnQHR1cmYvYm9vbGVhbi13aXRoaW4nO1xuaW1wb3J0IGJib3hQb2x5Z29uIGZyb20gJ0B0dXJmL2Jib3gtcG9seWdvbic7XG5pbXBvcnQge2ZpdEJvdW5kc30gZnJvbSAnQG1hdGguZ2wvd2ViLW1lcmNhdG9yJztcbmltcG9ydCBkZWVwbWVyZ2UgZnJvbSAnZGVlcG1lcmdlJztcbmltcG9ydCBwaWNrIGZyb20gJ2xvZGFzaC9waWNrJztcblxuaW1wb3J0IHtcbiAgZ2V0Q2VudGVyQW5kWm9vbUZyb21Cb3VuZHMsXG4gIHZhbGlkYXRlQm91bmRzLFxuICBNQVBCT1hfVElMRV9TSVpFLFxuICB2YWxpZGF0ZVZpZXdQb3J0XG59IGZyb20gJ0BrZXBsZXIuZ2wvdXRpbHMnO1xuaW1wb3J0IHtNYXBTdGF0ZUFjdGlvbnMsIFJlY2VpdmVNYXBDb25maWdQYXlsb2FkLCBBY3Rpb25UeXBlc30gZnJvbSAnQGtlcGxlci5nbC9hY3Rpb25zJztcbmltcG9ydCB7TWFwU3RhdGUsIEJvdW5kcywgVmlld3BvcnR9IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuXG4vKipcbiAqIFVwZGF0ZXJzIGZvciBgbWFwU3RhdGVgIHJlZHVjZXIuIENhbiBiZSB1c2VkIGluIHlvdXIgcm9vdCByZWR1Y2VyIHRvIGRpcmVjdGx5IG1vZGlmeSBrZXBsZXIuZ2wncyBzdGF0ZS5cbiAqIFJlYWQgbW9yZSBhYm91dCBbVXNpbmcgdXBkYXRlcnNdKC4uL2FkdmFuY2VkLXVzYWdlL3VzaW5nLXVwZGF0ZXJzLm1kKVxuICogQHB1YmxpY1xuICogQGV4YW1wbGVcbiAqXG4gKiBpbXBvcnQga2VwbGVyR2xSZWR1Y2VyLCB7bWFwU3RhdGVVcGRhdGVyc30gZnJvbSAnQGtlcGxlci5nbC9yZWR1Y2Vycyc7XG4gKiAvLyBSb290IFJlZHVjZXJcbiAqIGNvbnN0IHJlZHVjZXJzID0gY29tYmluZVJlZHVjZXJzKHtcbiAqICBrZXBsZXJHbDoga2VwbGVyR2xSZWR1Y2VyLFxuICogIGFwcDogYXBwUmVkdWNlclxuICogfSk7XG4gKlxuICogY29uc3QgY29tcG9zZWRSZWR1Y2VyID0gKHN0YXRlLCBhY3Rpb24pID0+IHtcbiAqICBzd2l0Y2ggKGFjdGlvbi50eXBlKSB7XG4gKiAgICAvLyBjbGljayBidXR0b24gdG8gY2xvc2Ugc2lkZSBwYW5lbFxuICogICAgY2FzZSAnQ0xJQ0tfQlVUVE9OJzpcbiAqICAgICAgcmV0dXJuIHtcbiAqICAgICAgICAuLi5zdGF0ZSxcbiAqICAgICAgICBrZXBsZXJHbDoge1xuICogICAgICAgICAgLi4uc3RhdGUua2VwbGVyR2wsXG4gKiAgICAgICAgICBmb286IHtcbiAqICAgICAgICAgICAgIC4uLnN0YXRlLmtlcGxlckdsLmZvbyxcbiAqICAgICAgICAgICAgIG1hcFN0YXRlOiBtYXBTdGF0ZVVwZGF0ZXJzLmZpdEJvdW5kc1VwZGF0ZXIoXG4gKiAgICAgICAgICAgICAgIG1hcFN0YXRlLCB7cGF5bG9hZDogWzEyNy4zNCwgMzEuMDksIDEyNy41NiwgMzEuNTldXX1cbiAqICAgICAgICAgICAgIClcbiAqICAgICAgICAgIH1cbiAqICAgICAgICB9XG4gKiAgICAgIH07XG4gKiAgfVxuICogIHJldHVybiByZWR1Y2VycyhzdGF0ZSwgYWN0aW9uKTtcbiAqIH07XG4gKlxuICogZXhwb3J0IGRlZmF1bHQgY29tcG9zZWRSZWR1Y2VyO1xuICovXG5cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFycyAqL1xuLy8gQHRzLWlnbm9yZVxuY29uc3QgbWFwU3RhdGVVcGRhdGVycyA9IG51bGw7XG4vKiBlc2xpbnQtZW5hYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFycyAqL1xuLyoqXG4gKiBEZWZhdWx0IGluaXRpYWwgYG1hcFN0YXRlYFxuICogQG1lbWJlcm9mIG1hcFN0YXRlVXBkYXRlcnNcbiAqIEBjb25zdGFudFxuICogQHByb3BlcnR5IHBpdGNoIERlZmF1bHQ6IGAwYFxuICogQHByb3BlcnR5IGJlYXJpbmcgRGVmYXVsdDogYDBgXG4gKiBAcHJvcGVydHkgbGF0aXR1ZGUgRGVmYXVsdDogYDM3Ljc1MDQzYFxuICogQHByb3BlcnR5IGxvbmdpdHVkZSBEZWZhdWx0OiBgLTEyMi4zNDY3OWBcbiAqIEBwcm9wZXJ0eSB6b29tIERlZmF1bHQ6IGA5YFxuICogQHByb3BlcnR5IGRyYWdSb3RhdGUgRGVmYXVsdDogYGZhbHNlYFxuICogQHByb3BlcnR5IHdpZHRoIERlZmF1bHQ6IGA4MDBgXG4gKiBAcHJvcGVydHkgaGVpZ2h0IERlZmF1bHQ6IGA4MDBgXG4gKiBAcHJvcGVydHkgbWluWm9vbTogYHVuZGVmaW5lZGAsXG4gKiBAcHJvcGVydHkgbWF4Wm9vbTogYHVuZGVmaW5lZGAsXG4gKiBAcHJvcGVydHkgbWF4UGl0Y2g6IGB1bmRlZmluZWRgIChkZWZhdWx0cyB0byBhcHBsaWNhdGlvbiBjb25maWcgdmFsdWUsIGRlY2suZ2wgZGVmYXVsdCBpcyA2MClcbiAqIEBwcm9wZXJ0eSBtYXhCb3VuZHM6IGB1bmRlZmluZWRgLFxuICogQHByb3BlcnR5IGlzU3BsaXQ6IGBmYWxzZWAsXG4gKiBAcHJvcGVydHkgaXNWaWV3cG9ydFN5bmNlZDogYHRydWVgLFxuICogQHByb3BlcnR5IGlzWm9vbUxvY2tlZDogYGZhbHNlYCxcbiAqIEBwcm9wZXJ0eSBzcGxpdE1hcFZpZXdwb3J0czogYFtdYFxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgSU5JVElBTF9NQVBfU1RBVEU6IE1hcFN0YXRlID0ge1xuICBwaXRjaDogMCxcbiAgYmVhcmluZzogMCxcbiAgbGF0aXR1ZGU6IDM3Ljc1MDQzLFxuICBsb25naXR1ZGU6IC0xMjIuMzQ2NzksXG4gIHpvb206IDksXG4gIGRyYWdSb3RhdGU6IGZhbHNlLFxuICB3aWR0aDogODAwLFxuICBoZWlnaHQ6IDgwMCxcbiAgbWluWm9vbTogdW5kZWZpbmVkLFxuICBtYXhab29tOiB1bmRlZmluZWQsXG4gIG1heFBpdGNoOiB1bmRlZmluZWQsXG4gIG1heEJvdW5kczogdW5kZWZpbmVkLFxuICBpc1NwbGl0OiBmYWxzZSxcbiAgaXNWaWV3cG9ydFN5bmNlZDogdHJ1ZSxcbiAgaXNab29tTG9ja2VkOiBmYWxzZSxcbiAgc3BsaXRNYXBWaWV3cG9ydHM6IFtdXG59O1xuXG4vKiBVcGRhdGVycyAqL1xuLyoqXG4gKiBVcGRhdGUgbWFwIHZpZXdwb3J0XG4gKiBAbWVtYmVyb2YgbWFwU3RhdGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgdXBkYXRlTWFwVXBkYXRlciA9IChcbiAgc3RhdGU6IE1hcFN0YXRlLFxuICBhY3Rpb246IE1hcFN0YXRlQWN0aW9ucy5VcGRhdGVNYXBVcGRhdGVyQWN0aW9uXG4pOiBNYXBTdGF0ZSA9PiB7XG4gIGNvbnN0IHt2aWV3cG9ydDogaW5wdXRWaWV3cG9ydCwgbWFwSW5kZXggPSAwfSA9IGFjdGlvbi5wYXlsb2FkO1xuICBjb25zdCB2aWV3cG9ydCA9IHZhbGlkYXRlVmlld1BvcnQoaW5wdXRWaWV3cG9ydCk7XG5cbiAgaWYgKHN0YXRlLmlzVmlld3BvcnRTeW5jZWQpIHtcbiAgICAvLyBUaGUgYHVwZGF0ZVZpZXdwb3J0YCBmdW5jdGlvbiBpcyB0eXBlZCBhcyAoVmlld3BvcnQsIFZpZXdwb3J0KSAtPiBWaWV3cG9ydCBidXQgaGVyZSB0aGVcbiAgICAvLyBleHBlY3RlZCB0eXBpbmcgaXMgKE1hcFN0YXRlLCBWaWV3cG9ydCkgLT4gTWFwU3RhdGUuXG4gICAgLy8gdGhpcyBjb3VsZCBiZSBhIHBvdGVudGlhbCBidWcgYXMgd2UgdHJlYXQgVmlld3BvcnQgYW5kIE1hcFN0YXRlIGFzIGVxdWFsIHNlZW1pbmdseVxuICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgVHlwZSAnVmlld3BvcnQnIGlzIG1pc3NpbmcgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzIGZyb20gdHlwZSAnTWFwU3RhdGUnOiBpc1NwbGl0LCBpc1ZpZXdwb3J0U3luY2VkLCBpc1pvb21Mb2NrZWQsIHNwbGl0TWFwVmlld3BvcnRzXG4gICAgcmV0dXJuIHVwZGF0ZVZpZXdwb3J0KHN0YXRlLCB2aWV3cG9ydCk7XG4gIH1cblxuICBsZXQgb3RoZXJWaWV3cG9ydE1hcEluZGV4ID0gLTE7XG4gIGNvbnN0IHNwbGl0TWFwVmlld3BvcnRzID0gc3RhdGUuc3BsaXRNYXBWaWV3cG9ydHMubWFwKChjdXJyZW50Vmlld3BvcnQsIGkpID0+IHtcbiAgICBpZiAoaSA9PT0gbWFwSW5kZXgpIHtcbiAgICAgIC8vIHVwZGF0ZSB0aGUgbWF0Y2hpbmcgdmlld3BvcnQgd2l0aCB0aGUgbmV3Vmlld3BvcnQgaW5mbyBpbiB0aGUgYWN0aW9uIHBheWxvYWRcbiAgICAgIHJldHVybiB1cGRhdGVWaWV3cG9ydChjdXJyZW50Vmlld3BvcnQsIHZpZXdwb3J0KTtcbiAgICB9XG5cbiAgICBvdGhlclZpZXdwb3J0TWFwSW5kZXggPSBpO1xuICAgIC8vIG1ha2Ugbm8gY2hhbmdlcyB0byB0aGUgb3RoZXIgdmlld3BvcnQgKHlldClcbiAgICByZXR1cm4gY3VycmVudFZpZXdwb3J0O1xuICB9KTtcblxuICAvLyBtYWtlIGNvbmRpdGlvbmFsIHVwZGF0ZXMgdG8gdGhlIG90aGVyIHZpZXdwb3J0IG5vdCBtYXRjaGluZyB0aGlzIHBheWxvYWQncyBgbWFwSW5kZXhgXG4gIGlmIChOdW1iZXIuaXNGaW5pdGUob3RoZXJWaWV3cG9ydE1hcEluZGV4KSAmJiBvdGhlclZpZXdwb3J0TWFwSW5kZXggPiAtMSkge1xuICAgIC8vIHdpZHRoIGFuZCBoZWlnaHQgYXJlIGEgc3BlY2lhbCBjYXNlIGFuZCBhcmUgYWx3YXlzIHVwZGF0ZWRcbiAgICBzcGxpdE1hcFZpZXdwb3J0c1tvdGhlclZpZXdwb3J0TWFwSW5kZXhdID0ge1xuICAgICAgLi4uc3BsaXRNYXBWaWV3cG9ydHNbb3RoZXJWaWV3cG9ydE1hcEluZGV4XSxcbiAgICAgIHdpZHRoOiBzcGxpdE1hcFZpZXdwb3J0c1ttYXBJbmRleF0ud2lkdGgsXG4gICAgICBoZWlnaHQ6IHNwbGl0TWFwVmlld3BvcnRzW21hcEluZGV4XS5oZWlnaHRcbiAgICB9O1xuXG4gICAgaWYgKHN0YXRlLmlzWm9vbUxvY2tlZCkge1xuICAgICAgLy8gdXBkYXRlIHRoZSBvdGhlciB2aWV3cG9ydCB3aXRoIHRoZSBuZXcgem9vbSBmcm9tIHRoZSBzcGxpdCB2aWV3cG9ydCB0aGF0IHdhcyB1cGRhdGVkIHdpdGggdGhpcyBwYXlsb2FkJ3MgYG1hcEluZGV4YFxuICAgICAgc3BsaXRNYXBWaWV3cG9ydHNbb3RoZXJWaWV3cG9ydE1hcEluZGV4XSA9IHtcbiAgICAgICAgLi4uc3BsaXRNYXBWaWV3cG9ydHNbb3RoZXJWaWV3cG9ydE1hcEluZGV4XSxcbiAgICAgICAgem9vbTogc3BsaXRNYXBWaWV3cG9ydHNbbWFwSW5kZXhdLnpvb21cbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAvLyB1cGRhdGUgdGhlIHRvcC1sZXZlbCBtYXBTdGF0ZSB2aWV3cG9ydCB3aXRoIHRoZSBtb3N0IHJlY2VudGx5IGludGVyYWN0ZWQtd2l0aCBzcGxpdCB2aWV3cG9ydFxuICAgIC8vIFdIWT8gdGhpcyBhdm9pZHMgem9vbSBhbmQgYm91bmRzIFwianVtcGluZ1wiIGR1ZSB0byBhIFwic3RhbGVcIiB0b3AtbGV2ZWwgbWFwU3RhdGUgdmlld3BvcnQgd2hlbjpcbiAgICAvLyAgMS4gdG9nZ2xpbmcgb2ZmIHRoZSB1bnN5bmNlZCB2aWV3cG9ydHMgbW9kZSB0byBzd2l0Y2ggdG8gdGhlIHN5bmNlZCB2aWV3cG9ydHMgbW9kZVxuICAgIC8vICAyLiB0b2dnbGluZyBvbiB0aGUgem9vbSBsb2NrIGR1cmluZyBhbiB1bnN5bmNlZCB2aWV3cG9ydHMgbW9kZVxuICAgIC4uLnN0YXRlLFxuICAgIC4uLnNwbGl0TWFwVmlld3BvcnRzW21hcEluZGV4XSxcbiAgICAvLyB1cGRhdGUgdGhlIG1hcFN0YXRlIHdpdGggdGhlIG5ldyBhcnJheSBvZiBzcGxpdCB2aWV3cG9ydHNcbiAgICBzcGxpdE1hcFZpZXdwb3J0c1xuICB9O1xufTtcblxuLyoqXG4gKiBGaXQgbWFwIHZpZXdwb3J0IHRvIGJvdW5kc1xuICogQG1lbWJlcm9mIG1hcFN0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IGZpdEJvdW5kc1VwZGF0ZXIgPSAoXG4gIHN0YXRlOiBNYXBTdGF0ZSxcbiAgYWN0aW9uOiBNYXBTdGF0ZUFjdGlvbnMuRml0Qm91bmRzVXBkYXRlckFjdGlvblxuKTogTWFwU3RhdGUgPT4ge1xuICBjb25zdCBjZW50ZXJBbmRab29tID0gZ2V0Q2VudGVyQW5kWm9vbUZyb21Cb3VuZHMoYWN0aW9uLnBheWxvYWQsIHtcbiAgICB3aWR0aDogc3RhdGUud2lkdGgsXG4gICAgaGVpZ2h0OiBzdGF0ZS5oZWlnaHRcbiAgfSk7XG4gIGlmICghY2VudGVyQW5kWm9vbSkge1xuICAgIC8vIGJvdW5kcyBpcyBpbnZhbGlkXG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG5cbiAgY29uc3QgbmV3U3RhdGUgPSB7XG4gICAgLi4uc3RhdGUsXG4gICAgbGF0aXR1ZGU6IGNlbnRlckFuZFpvb20uY2VudGVyWzFdLFxuICAgIGxvbmdpdHVkZTogY2VudGVyQW5kWm9vbS5jZW50ZXJbMF0sXG4gICAgLy8gRm9yIG1hcmdpbmFsIG9yIGludmFsaWQgYm91bmRzLCB6b29tIG1heSBiZSBOYU4uIE1ha2Ugc3VyZSB0byBwcm92aWRlIGEgdmFsaWQgdmFsdWUgaW4gb3JkZXJcbiAgICAvLyB0byBhdm9pZCBjb3JydXB0IHN0YXRlIGFuZCBwb3RlbnRpYWwgY3Jhc2hlcyBhcyB6b29tIGlzIGV4cGVjdGVkIHRvIGJlIGEgbnVtYmVyXG4gICAgLi4uKE51bWJlci5pc0Zpbml0ZShjZW50ZXJBbmRab29tLnpvb20pID8ge3pvb206IGNlbnRlckFuZFpvb20uem9vbX0gOiB7fSlcbiAgfTtcblxuICAvLyBpZiBmaXR0aW5nIHRvIGJvdW5kcyB3aGlsZSBzcGxpdCBhbmQgdW5zeW5jZWRcbiAgLy8gY29weSB0aGUgbmV3IGxhdGl0dWRlLCBsb25naXR1ZGUsIGFuZCB6b29tIHZhbHVlcyB0byBlYWNoIHNwbGl0IHZpZXdwb3J0XG4gIGlmIChuZXdTdGF0ZS5zcGxpdE1hcFZpZXdwb3J0cy5sZW5ndGgpIHtcbiAgICBuZXdTdGF0ZS5zcGxpdE1hcFZpZXdwb3J0cyA9IG5ld1N0YXRlLnNwbGl0TWFwVmlld3BvcnRzLm1hcChjdXJyZW50Vmlld3BvcnQgPT4gKHtcbiAgICAgIC4uLmN1cnJlbnRWaWV3cG9ydCxcbiAgICAgIGxhdGl0dWRlOiBuZXdTdGF0ZS5sYXRpdHVkZSxcbiAgICAgIGxvbmdpdHVkZTogbmV3U3RhdGUubG9uZ2l0dWRlLFxuICAgICAgem9vbTogbmV3U3RhdGUuem9vbVxuICAgIH0pKTtcbiAgfVxuXG4gIHJldHVybiBuZXdTdGF0ZTtcbn07XG5cbi8qKlxuICogVG9nZ2xlIGJldHdlZW4gM2QgYW5kIDJkIG1hcC5cbiAqIEBtZW1iZXJvZiBtYXBTdGF0ZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCB0b2dnbGVQZXJzcGVjdGl2ZVVwZGF0ZXIgPSAoc3RhdGU6IE1hcFN0YXRlKTogTWFwU3RhdGUgPT4ge1xuICBjb25zdCBuZXdTdGF0ZSA9IHtcbiAgICAuLi5zdGF0ZSxcbiAgICAuLi57XG4gICAgICBwaXRjaDogc3RhdGUuZHJhZ1JvdGF0ZSA/IDAgOiA1MCxcbiAgICAgIGJlYXJpbmc6IHN0YXRlLmRyYWdSb3RhdGUgPyAwIDogMjRcbiAgICB9LFxuICAgIGRyYWdSb3RhdGU6ICFzdGF0ZS5kcmFnUm90YXRlXG4gIH07XG5cbiAgLy8gaWYgdG9nZ2xpbmcgM2QgYW5kIDJkIHdoaWxlIHNwbGl0IGFuZCB1bnN5bmNlZFxuICAvLyBjb3B5IHRoZSBuZXcgcGl0Y2gsIGJlYXJpbmcsIGFuZCBkcmFnUm90YXRlIHZhbHVlcyB0byBlYWNoIHNwbGl0IHZpZXdwb3J0XG4gIGlmIChuZXdTdGF0ZS5zcGxpdE1hcFZpZXdwb3J0cy5sZW5ndGgpIHtcbiAgICBuZXdTdGF0ZS5zcGxpdE1hcFZpZXdwb3J0cyA9IG5ld1N0YXRlLnNwbGl0TWFwVmlld3BvcnRzLm1hcChjdXJyZW50Vmlld3BvcnQgPT4gKHtcbiAgICAgIC4uLmN1cnJlbnRWaWV3cG9ydCxcbiAgICAgIHBpdGNoOiBuZXdTdGF0ZS5waXRjaCxcbiAgICAgIGJlYXJpbmc6IG5ld1N0YXRlLmJlYXJpbmcsXG4gICAgICBkcmFnUm90YXRlOiBuZXdTdGF0ZS5kcmFnUm90YXRlXG4gICAgfSkpO1xuICB9XG5cbiAgcmV0dXJuIG5ld1N0YXRlO1xufTtcblxuLyoqXG4gKiByZXNldCBtYXBTdGF0ZSB0byBpbml0aWFsIFN0YXRlXG4gKiBAbWVtYmVyb2YgbWFwU3RhdGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgcmVzZXRNYXBDb25maWdVcGRhdGVyID0gKHN0YXRlOiBNYXBTdGF0ZSk6IE1hcFN0YXRlID0+ICh7XG4gIC4uLklOSVRJQUxfTUFQX1NUQVRFLFxuICAuLi5zdGF0ZS5pbml0aWFsU3RhdGUsXG4gIGluaXRpYWxTdGF0ZTogc3RhdGUuaW5pdGlhbFN0YXRlXG59KTtcblxuLy8gY29uc2lkZXIgY2FzZSB3aGVyZSB5b3UgaGF2ZSBhIHNwbGl0IG1hcCBhbmQgdXNlciB3YW50cyB0byByZXNldFxuLyoqXG4gKiBVcGRhdGUgYG1hcFN0YXRlYCB0byBwcm9wYWdhdGUgYSBuZXcgY29uZmlnXG4gKiBAbWVtYmVyb2YgbWFwU3RhdGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgcmVjZWl2ZU1hcENvbmZpZ1VwZGF0ZXIgPSAoXG4gIHN0YXRlOiBNYXBTdGF0ZSxcbiAge1xuICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICBwYXlsb2FkOiB7Y29uZmlnID0ge30sIG9wdGlvbnMgPSB7fSwgYm91bmRzID0gbnVsbH1cbiAgfToge1xuICAgIHR5cGU/OiB0eXBlb2YgQWN0aW9uVHlwZXMuUkVDRUlWRV9NQVBfQ09ORklHO1xuICAgIHBheWxvYWQ6IFJlY2VpdmVNYXBDb25maWdQYXlsb2FkO1xuICB9XG4pOiBNYXBTdGF0ZSA9PiB7XG4gIC8qKlxuICAgKiBAdHlwZSB7UGFydGlhbDxNYXBTdGF0ZT59XG4gICAqL1xuICBjb25zdCBtYXBTdGF0ZSA9IChjb25maWcgfHwge30pLm1hcFN0YXRlIHx8IHt9O1xuICAvLyBtZXJnZWQgcmVjZWl2ZWQgbWFwU3RhdGUgd2l0aCBwcmV2aW91cyBzdGF0ZVxuICAvLyBzdGF0ZSBhbHNvIG1heSBpbmNsdWRlIHByb3BlcnRpZXMgdGhhdCBhcmUgbmV3IHRvIGFuIGV4aXN0aW5nLCBzYXZlZCBwcm9qZWN0J3MgbWFwU3RhdGVcblxuICBsZXQgbWVyZ2VkU3RhdGUgPSBkZWVwbWVyZ2U8TWFwU3RhdGU+KHN0YXRlLCBtYXBTdGF0ZSwge1xuICAgIC8vIG5vdGU6IGRlZXBtZXJnZSBieSBkZWZhdWx0IHdpbGwgbWVyZ2UgYXJyYXlzIGJ5IGNvbmNhdGVuYXRpbmcgdGhlbVxuICAgIC8vIGJ1dCB3ZSBuZWVkIHRvIG92ZXJ3cml0ZSBkZXN0aW5hdGlvbiBhcnJheXMgd2l0aCBzb3VyY2UgYXJyYXlzLCBpZiBwcmVzZW50XG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL1RlaFNocmlrZS9kZWVwbWVyZ2UjYXJyYXltZXJnZS1leGFtcGxlLW92ZXJ3cml0ZS10YXJnZXQtYXJyYXlcbiAgICBhcnJheU1lcmdlOiAoX2Rlc3RpbmF0aW9uQXJyYXksIHNvdXJjZUFycmF5KSA9PiBzb3VyY2VBcnJheVxuICB9KTtcblxuICAvLyBpZiBjZW50ZXIgbWFwXG4gIC8vIGNlbnRlciBtYXAgd2lsbCBvdmVycmlkZSBtYXBTdGF0ZSBjb25maWdcbiAgaWYgKG9wdGlvbnMuY2VudGVyTWFwICYmIGJvdW5kcykge1xuICAgIG1lcmdlZFN0YXRlID0gZml0Qm91bmRzVXBkYXRlcihtZXJnZWRTdGF0ZSwge1xuICAgICAgcGF5bG9hZDogYm91bmRzXG4gICAgfSk7XG4gIH1cblxuICAvLyBtYWtlIHN1cmUgd2UgdmFsaWRhdGUgbWFwIHN0YXRlIGJlZm9yZSB3ZSBtZXJnZVxuICBtZXJnZWRTdGF0ZSA9IHZhbGlkYXRlVmlld1BvcnQobWVyZ2VkU3RhdGUpO1xuXG4gIHJldHVybiB7XG4gICAgLi4ubWVyZ2VkU3RhdGUsXG4gICAgLy8gdXBkYXRlIHdpZHRoIGlmIGBpc1NwbGl0YCBoYXMgY2hhbmdlZFxuICAgIC4uLmdldE1hcERpbUZvclNwbGl0TWFwKG1lcmdlZFN0YXRlLmlzU3BsaXQsIHN0YXRlKVxuICB9O1xufTtcblxuLyoqXG4gKiBUb2dnbGUgYmV0d2VlbiBvbmUgb3Igc3BsaXQgbWFwc1xuICogQG1lbWJlcm9mIG1hcFN0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHRvZ2dsZVNwbGl0TWFwVXBkYXRlciA9IChzdGF0ZTogTWFwU3RhdGUpOiBNYXBTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgLi4uZ2V0TWFwRGltRm9yU3BsaXRNYXAoIXN0YXRlLmlzU3BsaXQsIHN0YXRlKSxcbiAgaXNTcGxpdDogIXN0YXRlLmlzU3BsaXQsXG4gIC4uLighc3RhdGUuaXNTcGxpdCA9PT0gZmFsc2VcbiAgICA/IHtcbiAgICAgICAgLy8gaWYgdG9nZ2xpbmcgdG8gbm8gbG9uZ2VyIHNwbGl0IChzaW5nbGUgbW9kZSkgdGhlbiByZXNldCBhIGZldyBwcm9wZXJ0aWVzXG4gICAgICAgIGlzVmlld3BvcnRTeW5jZWQ6IHRydWUsXG4gICAgICAgIGlzWm9vbUxvY2tlZDogZmFsc2UsXG4gICAgICAgIHNwbGl0TWFwVmlld3BvcnRzOiBbXVxuICAgICAgfVxuICAgIDoge30pXG59KTtcblxuLyoqXG4gKiBUb2dnbGUgYmV0d2VlbiBsb2NrZWQgYW5kIHVubG9ja2VkIHNwbGl0IHZpZXdwb3J0c1xuICogQG1lbWJlcm9mIG1hcFN0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHRvZ2dsZVNwbGl0TWFwVmlld3BvcnRVcGRhdGVyID0gKFxuICBzdGF0ZTogTWFwU3RhdGUsXG4gIGFjdGlvbjogTWFwU3RhdGVBY3Rpb25zLlRvZ2dsZVNwbGl0TWFwVmlld3BvcnRVcGRhdGVyQWN0aW9uXG4pID0+IHtcbiAgLy8gbmV3IG1hcCBzdGF0ZSBpbW1lZGlhdGVseSBnZXRzIHRoZSBuZXcsIG9wdGlvbmFsIHBheWxvYWQgdmFsdWVzIGZvciBpc1ZpZXdwb3J0U3luY2VkIGFuZC9vciBpc1pvb21Mb2NrZWRcbiAgY29uc3QgbmV3TWFwU3RhdGUgPSB7XG4gICAgLi4uc3RhdGUsXG4gICAgLi4uKGFjdGlvbi5wYXlsb2FkIHx8IHt9KVxuICB9O1xuXG4gIGlmIChuZXdNYXBTdGF0ZS5pc1ZpZXdwb3J0U3luY2VkKSB7XG4gICAgLy8gc3dpdGNoaW5nIGZyb20gdW5zeW5jZWQgdG8gc3luY2VkIHZpZXdwb3J0c1xuICAgIG5ld01hcFN0YXRlLnNwbGl0TWFwVmlld3BvcnRzID0gW107XG4gIH0gZWxzZSB7XG4gICAgLy8gc3dpdGNoaW5nIGZyb20gc3luY2VkIHRvIHVuc3luY2VkIHZpZXdwb3J0c1xuICAgIC8vIG9yIGFscmVhZHkgaW4gdW5zeW5jZWQgbW9kZSBhbmQgdG9nZ2xpbmcgbG9ja2VkIHpvb21cblxuICAgIGlmIChzdGF0ZS5pc1pvb21Mb2NrZWQgJiYgIW5ld01hcFN0YXRlLmlzWm9vbUxvY2tlZCkge1xuICAgICAgLy8gc3dpdGNoaW5nIG9mZiBsb2NrZWQgem9vbSB3aGlsZSB1bnN5bmNlZFxuICAgICAgLy8gZG9uJ3QgY29weSB0aGUgbWFwU3RhdGVzIHRvIGxlZnQgYW5kIHJpZ2h0IHZpZXdwb3J0cyBiZWNhdXNlIHRoZXJlIHdpbGwgYmUgem9vbSBcImp1bXBpbmdcIlxuICAgICAgcmV0dXJuIG5ld01hcFN0YXRlO1xuICAgIH1cblxuICAgIGlmICghc3RhdGUuaXNab29tTG9ja2VkICYmIG5ld01hcFN0YXRlLmlzWm9vbUxvY2tlZCkge1xuICAgICAgLy8gc3dpdGNoaW5nIG9uIGxvY2tlZCB6b29tIHdoaWxlIHVuc3luY2VkXG4gICAgICAvLyBvbmx5IGNvcHkgem9vbSB2aWV3cG9ydCBwcm9wZXJ0eSBmcm9tIHRoZSBtb3N0IHJlY2VudGx5IGludGVyYWN0ZWQtd2l0aCB2aWV3cG9ydCB0byB0aGUgb3RoZXJcbiAgICAgIC8vIFRPRE86IGRvIHdlIHdhbnQgdG8gY2hlY2sgZm9yIGEgbWF0Y2ggYSBkaWZmZXJlbnQgd2F5LCBzdWNoIGFzIGEgY29tYm8gb2YgYGxhdGl0dWRlYCBhbmQgYGxvbmdpdHVkZWA/XG4gICAgICBjb25zdCBsYXN0VXBkYXRlZFZpZXdwb3J0SW5kZXggPSBuZXdNYXBTdGF0ZS5zcGxpdE1hcFZpZXdwb3J0cy5maW5kSW5kZXgoXG4gICAgICAgIHYgPT4gbmV3TWFwU3RhdGUuem9vbSA9PT0gdi56b29tXG4gICAgICApO1xuXG4gICAgICBjb25zdCBzcGxpdE1hcFZpZXdwb3J0cyA9IG5ld01hcFN0YXRlLnNwbGl0TWFwVmlld3BvcnRzLm1hcCgoY3VycmVudFZpZXdwb3J0LCBpKSA9PiB7XG4gICAgICAgIGlmIChpID09PSBsYXN0VXBkYXRlZFZpZXdwb3J0SW5kZXgpIHtcbiAgICAgICAgICAvLyBubyB6b29tIHRvIG1vZGlmeSBoZXJlXG4gICAgICAgICAgcmV0dXJuIGN1cnJlbnRWaWV3cG9ydDtcbiAgICAgICAgfVxuICAgICAgICAvLyB0aGUgb3RoZXIgdmlld3BvcnQgZ2V0cyB0aGUgbW9zdCByZWNlbnRseSBpbnRlcmFjdGVkLXdpdGggdmlld3BvcnQncyB6b29tXG4gICAgICAgIC8vIFdIWT8gdGhlIHZpZXdwb3J0IHRoZSB1c2VyIHdhcyBsYXN0IGludGVyYWN0aW5nIHdpdGggd2lsbCBzZXQgem9vbSBhY3Jvc3MgdGhlIGJvYXJkIGZvciBzbW9vdGggVVhcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5jdXJyZW50Vmlld3BvcnQsXG4gICAgICAgICAgem9vbTogbmV3TWFwU3RhdGUuc3BsaXRNYXBWaWV3cG9ydHNbbGFzdFVwZGF0ZWRWaWV3cG9ydEluZGV4XS56b29tXG4gICAgICAgIH07XG4gICAgICB9KTtcblxuICAgICAgbmV3TWFwU3RhdGUuc3BsaXRNYXBWaWV3cG9ydHMgPSBzcGxpdE1hcFZpZXdwb3J0cztcblxuICAgICAgcmV0dXJuIG5ld01hcFN0YXRlO1xuICAgIH1cblxuICAgIC8vIGlmIGN1cnJlbnQgdmlld3BvcnQgaXMgc3luY2VkLCBhbmQgd2UgYXJlIHVuc3luY2luZyBpdFxuICAgIC8vIG9yIGFscmVhZHkgaW4gdW5zeW5jZWQgbW9kZSBhbmQgTk9UIHRvZ2dsaW5nIGxvY2tlZCB6b29tXG4gICAgLy8gbWFrZSBhIGZyZXNoIGNvcHkgb2YgdGhlIGN1cnJlbnQgdmlld3BvcnQgb2JqZWN0LCBhc3NpZ24gaXQgdG8gc3BsaXRNYXBWaWV3cG9ydHNbXVxuICAgIC8vIHBpY2tWaWV3cG9ydFByb3BzRnJvbU1hcFN0YXRlIGlzIGNhbGxlZCB0d2ljZSB0byBhdm9pZCBtZW1vcnkgYWxsb2NhdGlvbiBjb25mbGljdHNcbiAgICBjb25zdCBsZWZ0Vmlld3BvcnQgPSBwaWNrVmlld3BvcnRQcm9wc0Zyb21NYXBTdGF0ZShuZXdNYXBTdGF0ZSk7XG4gICAgY29uc3QgcmlnaHRWaWV3cG9ydCA9IHBpY2tWaWV3cG9ydFByb3BzRnJvbU1hcFN0YXRlKG5ld01hcFN0YXRlKTtcbiAgICBuZXdNYXBTdGF0ZS5zcGxpdE1hcFZpZXdwb3J0cyA9IFtsZWZ0Vmlld3BvcnQsIHJpZ2h0Vmlld3BvcnRdO1xuICB9XG5cbiAgLy8gcmV0dXJuIG5ldyBzdGF0ZVxuICByZXR1cm4gbmV3TWFwU3RhdGU7XG59O1xuXG4vLyBIZWxwZXJzXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWFwRGltRm9yU3BsaXRNYXAoaXNTcGxpdCwgc3RhdGUpIHtcbiAgLy8gY2FzZXM6XG4gIC8vIDEuIHN0YXRlIHNwbGl0OiB0cnVlIC0gaXNTcGxpdDogdHJ1ZVxuICAvLyBkbyBub3RoaW5nXG4gIC8vIDIuIHN0YXRlIHNwbGl0OiBmYWxzZSAtIGlzU3BsaXQ6IGZhbHNlXG4gIC8vIGRvIG5vdGhpbmdcbiAgaWYgKHN0YXRlLmlzU3BsaXQgPT09IGlzU3BsaXQpIHtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICBjb25zdCB3aWR0aCA9XG4gICAgc3RhdGUuaXNTcGxpdCAmJiAhaXNTcGxpdFxuICAgICAgPyAvLyAzLiBzdGF0ZSBzcGxpdDogdHJ1ZSAtIGlzU3BsaXQ6IGZhbHNlXG4gICAgICAgIC8vIGRvdWJsZSB3aWR0aFxuICAgICAgICBzdGF0ZS53aWR0aCAqIDJcbiAgICAgIDogLy8gNC4gc3RhdGUgc3BsaXQ6IGZhbHNlIC0gaXNTcGxpdDogdHJ1ZVxuICAgICAgICAvLyBzcGxpdCB3aWR0aFxuICAgICAgICBzdGF0ZS53aWR0aCAvIDI7XG5cbiAgcmV0dXJuIHtcbiAgICB3aWR0aFxuICB9O1xufVxuXG5mdW5jdGlvbiB1cGRhdGVWaWV3cG9ydEJhc2VkT25Cb3VuZHMoc3RhdGU6IE1hcFN0YXRlLCBuZXdNYXBTdGF0ZTogTWFwU3RhdGUpIHtcbiAgLy8gR2V0IHRoZSBuZXcgdmlld3BvcnQgYm91bmRzXG4gIGNvbnN0IHZpZXdwb3J0Qm91bmRzID0gZ2VvVmlld3BvcnQuYm91bmRzKFxuICAgIFtuZXdNYXBTdGF0ZS5sb25naXR1ZGUsIG5ld01hcFN0YXRlLmxhdGl0dWRlXSxcbiAgICBuZXdNYXBTdGF0ZS56b29tLFxuICAgIFtuZXdNYXBTdGF0ZS53aWR0aCwgbmV3TWFwU3RhdGUuaGVpZ2h0XSxcbiAgICBNQVBCT1hfVElMRV9TSVpFXG4gICk7XG4gIC8vIEdlbmVyYXRlIHR1cmYgUG9seWdvbiBmcm9tIGJvdW5kcyBmb3IgY29tcGFyaXNvblxuICBjb25zdCB2aWV3cG9ydEJvdW5kc1BvbHlnb24gPSBiYm94UG9seWdvbih2aWV3cG9ydEJvdW5kcyk7XG4gIC8vIEB0cy1pZ25vcmVcbiAgY29uc3QgbmV3U3RhdGVNYXhCb3VuZHM6IEJvdW5kcyA9IG5ld01hcFN0YXRlLm1heEJvdW5kcztcbiAgLy8gQHRzLWlnbm9yZVxuICBjb25zdCBtYXhCb3VuZHNQb2x5Z29uID0gYmJveFBvbHlnb24obmV3U3RhdGVNYXhCb3VuZHMpO1xuXG4gIC8vIElmIG1heEJvdW5kcyBoYXMgY2hhbmdlZCByZXNldCB0aGUgdmlld3BvcnQgdG8gc25hcCB0byBib3VuZHNcbiAgY29uc3QgaGFzTWF4Qm91bmRzQ2hhbmdlZCA9XG4gICAgIXN0YXRlLm1heEJvdW5kcyB8fCAhc3RhdGUubWF4Qm91bmRzLmV2ZXJ5KCh2YWwsIGlkeCkgPT4gdmFsID09PSBuZXdTdGF0ZU1heEJvdW5kc1tpZHhdKTtcbiAgaWYgKGhhc01heEJvdW5kc0NoYW5nZWQpIHtcbiAgICAvLyBDaGVjayBpZiB0aGUgbmV3TWFwU3RhdGUgdmlld3BvcnQgaXMgd2l0aGluIG1heEJvdW5kc1xuICAgIGlmICghYm9vbGVhbldpdGhpbih2aWV3cG9ydEJvdW5kc1BvbHlnb24sIG1heEJvdW5kc1BvbHlnb24pKSB7XG4gICAgICBjb25zdCB7bGF0aXR1ZGUsIGxvbmdpdHVkZSwgem9vbX0gPSBmaXRCb3VuZHMoe1xuICAgICAgICB3aWR0aDogbmV3TWFwU3RhdGUud2lkdGgsXG4gICAgICAgIGhlaWdodDogbmV3TWFwU3RhdGUuaGVpZ2h0LFxuICAgICAgICBib3VuZHM6IFtcbiAgICAgICAgICBbbmV3U3RhdGVNYXhCb3VuZHNbMF0sIG5ld1N0YXRlTWF4Qm91bmRzWzFdXSxcbiAgICAgICAgICBbbmV3U3RhdGVNYXhCb3VuZHNbMl0sIG5ld1N0YXRlTWF4Qm91bmRzWzNdXVxuICAgICAgICBdXG4gICAgICB9KTtcblxuICAgICAgbmV3TWFwU3RhdGUgPSB7XG4gICAgICAgIC4uLm5ld01hcFN0YXRlLFxuICAgICAgICBsYXRpdHVkZSxcbiAgICAgICAgbG9uZ2l0dWRlLFxuICAgICAgICAvLyBGb3IgbWFyZ2luYWwgb3IgaW52YWxpZCBib3VuZHMsIHpvb20gbWF5IGJlIE5hTi4gTWFrZSBzdXJlIHRvIHByb3ZpZGUgYSB2YWxpZCB2YWx1ZSBpbiBvcmRlclxuICAgICAgICAvLyB0byBhdm9pZCBjb3JydXB0IHN0YXRlIGFuZCBwb3RlbnRpYWwgY3Jhc2hlcyBhcyB6b29tIGlzIGV4cGVjdGVkIHRvIGJlIGEgbnVtYmVyXG4gICAgICAgIC4uLihOdW1iZXIuaXNGaW5pdGUoem9vbSkgPyB7em9vbX0gOiB7fSlcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBuZXdNYXBTdGF0ZTtcbiAgfVxuXG4gIC8vIENoZWNrIGlmIHRoZSBuZXdNYXBTdGF0ZSB2aWV3cG9ydCBpcyB3aXRoaW4gbWF4Qm91bmRzXG4gIGlmICghYm9vbGVhbldpdGhpbih2aWV3cG9ydEJvdW5kc1BvbHlnb24sIG1heEJvdW5kc1BvbHlnb24pKSB7XG4gICAgbmV3TWFwU3RhdGUgPSB7XG4gICAgICAuLi5uZXdNYXBTdGF0ZSxcbiAgICAgIGxvbmdpdHVkZTogc3RhdGUubG9uZ2l0dWRlLFxuICAgICAgbGF0aXR1ZGU6IHN0YXRlLmxhdGl0dWRlLFxuICAgICAgem9vbTogc3RhdGUuem9vbVxuICAgIH07XG4gIH1cblxuICByZXR1cm4gbmV3TWFwU3RhdGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwaWNrVmlld3BvcnRQcm9wc0Zyb21NYXBTdGF0ZShzdGF0ZTogTWFwU3RhdGUpOiBWaWV3cG9ydCB7XG4gIHJldHVybiBwaWNrKHN0YXRlLCBbXG4gICAgJ3dpZHRoJyxcbiAgICAnaGVpZ2h0JyxcbiAgICAnem9vbScsXG4gICAgJ3BpdGNoJyxcbiAgICAnYmVhcmluZycsXG4gICAgJ2xhdGl0dWRlJyxcbiAgICAnbG9uZ2l0dWRlJyxcbiAgICAnZHJhZ1JvdGF0ZScsXG4gICAgJ21pblpvb20nLFxuICAgICdtYXhab29tJyxcbiAgICAnbWF4UGl0Y2gnLFxuICAgICdtYXhCb3VuZHMnXG4gIF0pO1xufVxuXG4vKiogU2VsZWN0IGl0ZW1zIGZyb20gb2JqZWN0IHdob3NlIHZhbHVlIGlzIG5vdCB1bmRlZmluZWQgKi9cbmNvbnN0IGRlZmluZWRQcm9wcyA9IG9iaiA9PlxuICBPYmplY3QuZW50cmllcyhvYmopLnJlZHVjZShcbiAgICAoYWNjdSwgW2ssIHZdKSA9PiAoey4uLmFjY3UsIC4uLih2ICE9PSB1bmRlZmluZWQgPyB7W2tdOiB2fSA6IHt9KX0pLFxuICAgIHt9XG4gICk7XG5cbmZ1bmN0aW9uIHVwZGF0ZVZpZXdwb3J0KG9yaWdpbmFsVmlld3BvcnQ6IFZpZXdwb3J0LCB2aWV3cG9ydFVwZGF0ZXM6IFZpZXdwb3J0KTogVmlld3BvcnQge1xuICBsZXQgbmV3Vmlld3BvcnQgPSB7XG4gICAgLi4ub3JpZ2luYWxWaWV3cG9ydCxcbiAgICAuLi4oZGVmaW5lZFByb3BzKHZpZXdwb3J0VXBkYXRlcykgfHwge30pXG4gIH07XG5cbiAgLy8gTWFrZSBzdXJlIHpvb20gbGV2ZWwgZG9lc24ndCBnbyBiZWxsb3cgbWluWm9vbSBpZiBkZWZpbmVkXG4gIGlmIChuZXdWaWV3cG9ydC5taW5ab29tICYmIG5ld1ZpZXdwb3J0Lnpvb20gJiYgbmV3Vmlld3BvcnQuem9vbSA8IG5ld1ZpZXdwb3J0Lm1pblpvb20pIHtcbiAgICBuZXdWaWV3cG9ydC56b29tID0gbmV3Vmlld3BvcnQubWluWm9vbTtcbiAgfVxuICAvLyBNYWtlIHN1cmUgem9vbSBsZXZlbCBkb2Vzbid0IGdvIGFib3ZlIG1heFpvb20gaWYgZGVmaW5lZFxuICBpZiAobmV3Vmlld3BvcnQubWF4Wm9vbSAmJiBuZXdWaWV3cG9ydC56b29tICYmIG5ld1ZpZXdwb3J0Lnpvb20gPiBuZXdWaWV3cG9ydC5tYXhab29tKSB7XG4gICAgbmV3Vmlld3BvcnQuem9vbSA9IG5ld1ZpZXdwb3J0Lm1heFpvb207XG4gIH1cbiAgLy8gTGltaXQgdmlld3BvcnQgdXBkYXRlIGJhc2VkIG9uIG1heEJvdW5kc1xuICBpZiAobmV3Vmlld3BvcnQubWF4Qm91bmRzICYmIHZhbGlkYXRlQm91bmRzKG5ld1ZpZXdwb3J0Lm1heEJvdW5kcykpIHtcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yIFR5cGUgJ1ZpZXdwb3J0JyBpcyBtaXNzaW5nIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllcyBmcm9tIHR5cGUgJ01hcFN0YXRlJzogaXNTcGxpdCwgaXNWaWV3cG9ydFN5bmNlZCwgaXNab29tTG9ja2VkLCBzcGxpdE1hcFZpZXdwb3J0c1xuICAgIG5ld1ZpZXdwb3J0ID0gdXBkYXRlVmlld3BvcnRCYXNlZE9uQm91bmRzKG9yaWdpbmFsVmlld3BvcnQsIG5ld1ZpZXdwb3J0KTtcbiAgfVxuXG4gIHJldHVybiBuZXdWaWV3cG9ydDtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBR0EsSUFBQUEsWUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsY0FBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUsWUFBQSxHQUFBSCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUcsWUFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksVUFBQSxHQUFBTCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUssS0FBQSxHQUFBTixzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQU0sTUFBQSxHQUFBTixPQUFBO0FBSzBCLFNBQUFPLFFBQUFDLENBQUEsRUFBQUMsQ0FBQSxRQUFBQyxDQUFBLEdBQUFDLE1BQUEsQ0FBQUMsSUFBQSxDQUFBSixDQUFBLE9BQUFHLE1BQUEsQ0FBQUUscUJBQUEsUUFBQUMsQ0FBQSxHQUFBSCxNQUFBLENBQUFFLHFCQUFBLENBQUFMLENBQUEsR0FBQUMsQ0FBQSxLQUFBSyxDQUFBLEdBQUFBLENBQUEsQ0FBQUMsTUFBQSxXQUFBTixDQUFBLFdBQUFFLE1BQUEsQ0FBQUssd0JBQUEsQ0FBQVIsQ0FBQSxFQUFBQyxDQUFBLEVBQUFRLFVBQUEsT0FBQVAsQ0FBQSxDQUFB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
|
|
516
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZ2VvVmlld3BvcnQiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9ib29sZWFuV2l0aGluIiwiX2Jib3hQb2x5Z29uIiwiX3dlYk1lcmNhdG9yIiwiX2RlZXBtZXJnZSIsIl9waWNrIiwiX3V0aWxzIiwiX2NvbnN0YW50cyIsIm93bktleXMiLCJlIiwiciIsInQiLCJPYmplY3QiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwibWFwU3RhdGVVcGRhdGVycyIsIklOSVRJQUxfTUFQX1NUQVRFIiwiZXhwb3J0cyIsInBpdGNoIiwiYmVhcmluZyIsImxhdGl0dWRlIiwibG9uZ2l0dWRlIiwiem9vbSIsImRyYWdSb3RhdGUiLCJ3aWR0aCIsImhlaWdodCIsIm1pblpvb20iLCJ1bmRlZmluZWQiLCJtYXhab29tIiwibWF4UGl0Y2giLCJtYXhCb3VuZHMiLCJpc1NwbGl0IiwiaXNWaWV3cG9ydFN5bmNlZCIsImlzWm9vbUxvY2tlZCIsInNwbGl0TWFwVmlld3BvcnRzIiwibWFwU3BsaXRNb2RlIiwiTWFwU3BsaXRNb2RlIiwiU0lOR0xFX01BUCIsInN3aXBlQ29tcGFyZVBlcmNlbnRhZ2UiLCJ1cGRhdGVNYXBVcGRhdGVyIiwic3RhdGUiLCJhY3Rpb24iLCJfYWN0aW9uJHBheWxvYWQiLCJwYXlsb2FkIiwiaW5wdXRWaWV3cG9ydCIsInZpZXdwb3J0IiwiX2FjdGlvbiRwYXlsb2FkJG1hcEluIiwibWFwSW5kZXgiLCJ2YWxpZGF0ZVZpZXdQb3J0IiwidXBkYXRlVmlld3BvcnQiLCJvdGhlclZpZXdwb3J0TWFwSW5kZXgiLCJtYXAiLCJjdXJyZW50Vmlld3BvcnQiLCJpIiwiTnVtYmVyIiwiaXNGaW5pdGUiLCJmaXRCb3VuZHNVcGRhdGVyIiwiY2VudGVyQW5kWm9vbSIsImdldENlbnRlckFuZFpvb21Gcm9tQm91bmRzIiwibmV3U3RhdGUiLCJjZW50ZXIiLCJ0b2dnbGVQZXJzcGVjdGl2ZVVwZGF0ZXIiLCJyZXNldE1hcENvbmZpZ1VwZGF0ZXIiLCJpbml0aWFsU3RhdGUiLCJyZWNlaXZlTWFwQ29uZmlnVXBkYXRlciIsIl9yZWYiLCJfcmVmJHBheWxvYWQiLCJfcmVmJHBheWxvYWQkY29uZmlnIiwiY29uZmlnIiwiX3JlZiRwYXlsb2FkJG9wdGlvbnMiLCJvcHRpb25zIiwiX3JlZiRwYXlsb2FkJGJvdW5kcyIsImJvdW5kcyIsIm1hcFN0YXRlIiwibWVyZ2VkU3RhdGUiLCJkZWVwbWVyZ2UiLCJhcnJheU1lcmdlIiwiX2Rlc3RpbmF0aW9uQXJyYXkiLCJzb3VyY2VBcnJheSIsImNlbnRlck1hcCIsImdldE1hcERpbUZvclNwbGl0TWFwIiwidG9nZ2xlU3BsaXRNYXBVcGRhdGVyIiwiRFVBTF9NQVAiLCJzZXRNYXBTcGxpdE1vZGVVcGRhdGVyIiwicHJldk1vZGUiLCJTV0lQRV9DT01QQVJFIiwic2V0U3dpcGVDb21wYXJlUGVyY2VudGFnZVVwZGF0ZXIiLCJwZXJjZW50YWdlIiwiY2xhbXBlZCIsIk1hdGgiLCJtaW4iLCJtYXgiLCJ0b2dnbGVTcGxpdE1hcFZpZXdwb3J0VXBkYXRlciIsIm5ld01hcFN0YXRlIiwibGFzdFVwZGF0ZWRWaWV3cG9ydEluZGV4IiwiZmluZEluZGV4IiwidiIsImxlZnRWaWV3cG9ydCIsInBpY2tWaWV3cG9ydFByb3BzRnJvbU1hcFN0YXRlIiwicmlnaHRWaWV3cG9ydCIsInVwZGF0ZVZpZXdwb3J0QmFzZWRPbkJvdW5kcyIsInZpZXdwb3J0Qm91bmRzIiwiZ2VvVmlld3BvcnQiLCJNQVBCT1hfVElMRV9TSVpFIiwidmlld3BvcnRCb3VuZHNQb2x5Z29uIiwiYmJveFBvbHlnb24iLCJuZXdTdGF0ZU1heEJvdW5kcyIsIm1heEJvdW5kc1BvbHlnb24iLCJoYXNNYXhCb3VuZHNDaGFuZ2VkIiwiZXZlcnkiLCJ2YWwiLCJpZHgiLCJib29sZWFuV2l0aGluIiwiX2ZpdEJvdW5kcyIsImZpdEJvdW5kcyIsInBpY2siLCJkZWZpbmVkUHJvcHMiLCJvYmoiLCJlbnRyaWVzIiwicmVkdWNlIiwiYWNjdSIsIl9yZWYyIiwiX3JlZjMiLCJfc2xpY2VkVG9BcnJheTIiLCJrIiwib3JpZ2luYWxWaWV3cG9ydCIsInZpZXdwb3J0VXBkYXRlcyIsIm5ld1ZpZXdwb3J0IiwidmFsaWRhdGVCb3VuZHMiXSwic291cmNlcyI6WyIuLi9zcmMvbWFwLXN0YXRlLXVwZGF0ZXJzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBnZW9WaWV3cG9ydCBmcm9tICdAbWFwYm94L2dlby12aWV3cG9ydCc7XG5pbXBvcnQge2Jvb2xlYW5XaXRoaW59IGZyb20gJ0B0dXJmL2Jvb2xlYW4td2l0aGluJztcbmltcG9ydCB7YmJveFBvbHlnb259IGZyb20gJ0B0dXJmL2Jib3gtcG9seWdvbic7XG5pbXBvcnQge2ZpdEJvdW5kc30gZnJvbSAnQG1hdGguZ2wvd2ViLW1lcmNhdG9yJztcbmltcG9ydCBkZWVwbWVyZ2UgZnJvbSAnZGVlcG1lcmdlJztcbmltcG9ydCBwaWNrIGZyb20gJ2xvZGFzaC9waWNrJztcblxuaW1wb3J0IHtcbiAgZ2V0Q2VudGVyQW5kWm9vbUZyb21Cb3VuZHMsXG4gIHZhbGlkYXRlQm91bmRzLFxuICBNQVBCT1hfVElMRV9TSVpFLFxuICB2YWxpZGF0ZVZpZXdQb3J0XG59IGZyb20gJ0BrZXBsZXIuZ2wvdXRpbHMnO1xuaW1wb3J0IHtNYXBTdGF0ZUFjdGlvbnMsIFJlY2VpdmVNYXBDb25maWdQYXlsb2FkLCBBY3Rpb25UeXBlc30gZnJvbSAnQGtlcGxlci5nbC9hY3Rpb25zJztcbmltcG9ydCB7TWFwU3RhdGUsIEJvdW5kcywgVmlld3BvcnR9IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuaW1wb3J0IHtNYXBTcGxpdE1vZGV9IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcblxuLyoqXG4gKiBVcGRhdGVycyBmb3IgYG1hcFN0YXRlYCByZWR1Y2VyLiBDYW4gYmUgdXNlZCBpbiB5b3VyIHJvb3QgcmVkdWNlciB0byBkaXJlY3RseSBtb2RpZnkga2VwbGVyLmdsJ3Mgc3RhdGUuXG4gKiBSZWFkIG1vcmUgYWJvdXQgW1VzaW5nIHVwZGF0ZXJzXSguLi9hZHZhbmNlZC11c2FnZS91c2luZy11cGRhdGVycy5tZClcbiAqIEBwdWJsaWNcbiAqIEBleGFtcGxlXG4gKlxuICogaW1wb3J0IGtlcGxlckdsUmVkdWNlciwge21hcFN0YXRlVXBkYXRlcnN9IGZyb20gJ0BrZXBsZXIuZ2wvcmVkdWNlcnMnO1xuICogLy8gUm9vdCBSZWR1Y2VyXG4gKiBjb25zdCByZWR1Y2VycyA9IGNvbWJpbmVSZWR1Y2Vycyh7XG4gKiAga2VwbGVyR2w6IGtlcGxlckdsUmVkdWNlcixcbiAqICBhcHA6IGFwcFJlZHVjZXJcbiAqIH0pO1xuICpcbiAqIGNvbnN0IGNvbXBvc2VkUmVkdWNlciA9IChzdGF0ZSwgYWN0aW9uKSA9PiB7XG4gKiAgc3dpdGNoIChhY3Rpb24udHlwZSkge1xuICogICAgLy8gY2xpY2sgYnV0dG9uIHRvIGNsb3NlIHNpZGUgcGFuZWxcbiAqICAgIGNhc2UgJ0NMSUNLX0JVVFRPTic6XG4gKiAgICAgIHJldHVybiB7XG4gKiAgICAgICAgLi4uc3RhdGUsXG4gKiAgICAgICAga2VwbGVyR2w6IHtcbiAqICAgICAgICAgIC4uLnN0YXRlLmtlcGxlckdsLFxuICogICAgICAgICAgZm9vOiB7XG4gKiAgICAgICAgICAgICAuLi5zdGF0ZS5rZXBsZXJHbC5mb28sXG4gKiAgICAgICAgICAgICBtYXBTdGF0ZTogbWFwU3RhdGVVcGRhdGVycy5maXRCb3VuZHNVcGRhdGVyKFxuICogICAgICAgICAgICAgICBtYXBTdGF0ZSwge3BheWxvYWQ6IFsxMjcuMzQsIDMxLjA5LCAxMjcuNTYsIDMxLjU5XV19XG4gKiAgICAgICAgICAgICApXG4gKiAgICAgICAgICB9XG4gKiAgICAgICAgfVxuICogICAgICB9O1xuICogIH1cbiAqICByZXR1cm4gcmVkdWNlcnMoc3RhdGUsIGFjdGlvbik7XG4gKiB9O1xuICpcbiAqIGV4cG9ydCBkZWZhdWx0IGNvbXBvc2VkUmVkdWNlcjtcbiAqL1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnMgKi9cbi8vIEB0cy1pZ25vcmVcbmNvbnN0IG1hcFN0YXRlVXBkYXRlcnMgPSBudWxsO1xuLyogZXNsaW50LWVuYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnMgKi9cbi8qKlxuICogRGVmYXVsdCBpbml0aWFsIGBtYXBTdGF0ZWBcbiAqIEBtZW1iZXJvZiBtYXBTdGF0ZVVwZGF0ZXJzXG4gKiBAY29uc3RhbnRcbiAqIEBwcm9wZXJ0eSBwaXRjaCBEZWZhdWx0OiBgMGBcbiAqIEBwcm9wZXJ0eSBiZWFyaW5nIERlZmF1bHQ6IGAwYFxuICogQHByb3BlcnR5IGxhdGl0dWRlIERlZmF1bHQ6IGAzNy43NTA0M2BcbiAqIEBwcm9wZXJ0eSBsb25naXR1ZGUgRGVmYXVsdDogYC0xMjIuMzQ2NzlgXG4gKiBAcHJvcGVydHkgem9vbSBEZWZhdWx0OiBgOWBcbiAqIEBwcm9wZXJ0eSBkcmFnUm90YXRlIERlZmF1bHQ6IGBmYWxzZWBcbiAqIEBwcm9wZXJ0eSB3aWR0aCBEZWZhdWx0OiBgODAwYFxuICogQHByb3BlcnR5IGhlaWdodCBEZWZhdWx0OiBgODAwYFxuICogQHByb3BlcnR5IG1pblpvb206IGB1bmRlZmluZWRgLFxuICogQHByb3BlcnR5IG1heFpvb206IGB1bmRlZmluZWRgLFxuICogQHByb3BlcnR5IG1heFBpdGNoOiBgdW5kZWZpbmVkYCAoZGVmYXVsdHMgdG8gYXBwbGljYXRpb24gY29uZmlnIHZhbHVlLCBkZWNrLmdsIGRlZmF1bHQgaXMgNjApXG4gKiBAcHJvcGVydHkgbWF4Qm91bmRzOiBgdW5kZWZpbmVkYCxcbiAqIEBwcm9wZXJ0eSBpc1NwbGl0OiBgZmFsc2VgLFxuICogQHByb3BlcnR5IGlzVmlld3BvcnRTeW5jZWQ6IGB0cnVlYCxcbiAqIEBwcm9wZXJ0eSBpc1pvb21Mb2NrZWQ6IGBmYWxzZWAsXG4gKiBAcHJvcGVydHkgc3BsaXRNYXBWaWV3cG9ydHM6IGBbXWBcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IElOSVRJQUxfTUFQX1NUQVRFOiBNYXBTdGF0ZSA9IHtcbiAgcGl0Y2g6IDAsXG4gIGJlYXJpbmc6IDAsXG4gIGxhdGl0dWRlOiAzNy43NTA0MyxcbiAgbG9uZ2l0dWRlOiAtMTIyLjM0Njc5LFxuICB6b29tOiA5LFxuICBkcmFnUm90YXRlOiBmYWxzZSxcbiAgd2lkdGg6IDgwMCxcbiAgaGVpZ2h0OiA4MDAsXG4gIG1pblpvb206IHVuZGVmaW5lZCxcbiAgbWF4Wm9vbTogdW5kZWZpbmVkLFxuICBtYXhQaXRjaDogdW5kZWZpbmVkLFxuICBtYXhCb3VuZHM6IHVuZGVmaW5lZCxcbiAgaXNTcGxpdDogZmFsc2UsXG4gIGlzVmlld3BvcnRTeW5jZWQ6IHRydWUsXG4gIGlzWm9vbUxvY2tlZDogZmFsc2UsXG4gIHNwbGl0TWFwVmlld3BvcnRzOiBbXSxcbiAgbWFwU3BsaXRNb2RlOiBNYXBTcGxpdE1vZGUuU0lOR0xFX01BUCxcbiAgc3dpcGVDb21wYXJlUGVyY2VudGFnZTogNTBcbn07XG5cbi8qIFVwZGF0ZXJzICovXG4vKipcbiAqIFVwZGF0ZSBtYXAgdmlld3BvcnRcbiAqIEBtZW1iZXJvZiBtYXBTdGF0ZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCB1cGRhdGVNYXBVcGRhdGVyID0gKFxuICBzdGF0ZTogTWFwU3RhdGUsXG4gIGFjdGlvbjogTWFwU3RhdGVBY3Rpb25zLlVwZGF0ZU1hcFVwZGF0ZXJBY3Rpb25cbik6IE1hcFN0YXRlID0+IHtcbiAgY29uc3Qge3ZpZXdwb3J0OiBpbnB1dFZpZXdwb3J0LCBtYXBJbmRleCA9IDB9ID0gYWN0aW9uLnBheWxvYWQ7XG4gIGNvbnN0IHZpZXdwb3J0ID0gdmFsaWRhdGVWaWV3UG9ydChpbnB1dFZpZXdwb3J0KTtcblxuICBpZiAoc3RhdGUuaXNWaWV3cG9ydFN5bmNlZCkge1xuICAgIC8vIFRoZSBgdXBkYXRlVmlld3BvcnRgIGZ1bmN0aW9uIGlzIHR5cGVkIGFzIChWaWV3cG9ydCwgVmlld3BvcnQpIC0+IFZpZXdwb3J0IGJ1dCBoZXJlIHRoZVxuICAgIC8vIGV4cGVjdGVkIHR5cGluZyBpcyAoTWFwU3RhdGUsIFZpZXdwb3J0KSAtPiBNYXBTdGF0ZS5cbiAgICAvLyB0aGlzIGNvdWxkIGJlIGEgcG90ZW50aWFsIGJ1ZyBhcyB3ZSB0cmVhdCBWaWV3cG9ydCBhbmQgTWFwU3RhdGUgYXMgZXF1YWwgc2VlbWluZ2x5XG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvciBUeXBlICdWaWV3cG9ydCcgaXMgbWlzc2luZyB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXMgZnJvbSB0eXBlICdNYXBTdGF0ZSc6IGlzU3BsaXQsIGlzVmlld3BvcnRTeW5jZWQsIGlzWm9vbUxvY2tlZCwgc3BsaXRNYXBWaWV3cG9ydHNcbiAgICByZXR1cm4gdXBkYXRlVmlld3BvcnQoc3RhdGUsIHZpZXdwb3J0KTtcbiAgfVxuXG4gIGxldCBvdGhlclZpZXdwb3J0TWFwSW5kZXggPSAtMTtcbiAgY29uc3Qgc3BsaXRNYXBWaWV3cG9ydHMgPSBzdGF0ZS5zcGxpdE1hcFZpZXdwb3J0cy5tYXAoKGN1cnJlbnRWaWV3cG9ydCwgaSkgPT4ge1xuICAgIGlmIChpID09PSBtYXBJbmRleCkge1xuICAgICAgLy8gdXBkYXRlIHRoZSBtYXRjaGluZyB2aWV3cG9ydCB3aXRoIHRoZSBuZXdWaWV3cG9ydCBpbmZvIGluIHRoZSBhY3Rpb24gcGF5bG9hZFxuICAgICAgcmV0dXJuIHVwZGF0ZVZpZXdwb3J0KGN1cnJlbnRWaWV3cG9ydCwgdmlld3BvcnQpO1xuICAgIH1cblxuICAgIG90aGVyVmlld3BvcnRNYXBJbmRleCA9IGk7XG4gICAgLy8gbWFrZSBubyBjaGFuZ2VzIHRvIHRoZSBvdGhlciB2aWV3cG9ydCAoeWV0KVxuICAgIHJldHVybiBjdXJyZW50Vmlld3BvcnQ7XG4gIH0pO1xuXG4gIC8vIG1ha2UgY29uZGl0aW9uYWwgdXBkYXRlcyB0byB0aGUgb3RoZXIgdmlld3BvcnQgbm90IG1hdGNoaW5nIHRoaXMgcGF5bG9hZCdzIGBtYXBJbmRleGBcbiAgaWYgKE51bWJlci5pc0Zpbml0ZShvdGhlclZpZXdwb3J0TWFwSW5kZXgpICYmIG90aGVyVmlld3BvcnRNYXBJbmRleCA+IC0xKSB7XG4gICAgLy8gd2lkdGggYW5kIGhlaWdodCBhcmUgYSBzcGVjaWFsIGNhc2UgYW5kIGFyZSBhbHdheXMgdXBkYXRlZFxuICAgIHNwbGl0TWFwVmlld3BvcnRzW290aGVyVmlld3BvcnRNYXBJbmRleF0gPSB7XG4gICAgICAuLi5zcGxpdE1hcFZpZXdwb3J0c1tvdGhlclZpZXdwb3J0TWFwSW5kZXhdLFxuICAgICAgd2lkdGg6IHNwbGl0TWFwVmlld3BvcnRzW21hcEluZGV4XS53aWR0aCxcbiAgICAgIGhlaWdodDogc3BsaXRNYXBWaWV3cG9ydHNbbWFwSW5kZXhdLmhlaWdodFxuICAgIH07XG5cbiAgICBpZiAoc3RhdGUuaXNab29tTG9ja2VkKSB7XG4gICAgICAvLyB1cGRhdGUgdGhlIG90aGVyIHZpZXdwb3J0IHdpdGggdGhlIG5ldyB6b29tIGZyb20gdGhlIHNwbGl0IHZpZXdwb3J0IHRoYXQgd2FzIHVwZGF0ZWQgd2l0aCB0aGlzIHBheWxvYWQncyBgbWFwSW5kZXhgXG4gICAgICBzcGxpdE1hcFZpZXdwb3J0c1tvdGhlclZpZXdwb3J0TWFwSW5kZXhdID0ge1xuICAgICAgICAuLi5zcGxpdE1hcFZpZXdwb3J0c1tvdGhlclZpZXdwb3J0TWFwSW5kZXhdLFxuICAgICAgICB6b29tOiBzcGxpdE1hcFZpZXdwb3J0c1ttYXBJbmRleF0uem9vbVxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIC8vIHVwZGF0ZSB0aGUgdG9wLWxldmVsIG1hcFN0YXRlIHZpZXdwb3J0IHdpdGggdGhlIG1vc3QgcmVjZW50bHkgaW50ZXJhY3RlZC13aXRoIHNwbGl0IHZpZXdwb3J0XG4gICAgLy8gV0hZPyB0aGlzIGF2b2lkcyB6b29tIGFuZCBib3VuZHMgXCJqdW1waW5nXCIgZHVlIHRvIGEgXCJzdGFsZVwiIHRvcC1sZXZlbCBtYXBTdGF0ZSB2aWV3cG9ydCB3aGVuOlxuICAgIC8vICAxLiB0b2dnbGluZyBvZmYgdGhlIHVuc3luY2VkIHZpZXdwb3J0cyBtb2RlIHRvIHN3aXRjaCB0byB0aGUgc3luY2VkIHZpZXdwb3J0cyBtb2RlXG4gICAgLy8gIDIuIHRvZ2dsaW5nIG9uIHRoZSB6b29tIGxvY2sgZHVyaW5nIGFuIHVuc3luY2VkIHZpZXdwb3J0cyBtb2RlXG4gICAgLi4uc3RhdGUsXG4gICAgLi4uc3BsaXRNYXBWaWV3cG9ydHNbbWFwSW5kZXhdLFxuICAgIC8vIHVwZGF0ZSB0aGUgbWFwU3RhdGUgd2l0aCB0aGUgbmV3IGFycmF5IG9mIHNwbGl0IHZpZXdwb3J0c1xuICAgIHNwbGl0TWFwVmlld3BvcnRzXG4gIH07XG59O1xuXG4vKipcbiAqIEZpdCBtYXAgdmlld3BvcnQgdG8gYm91bmRzXG4gKiBAbWVtYmVyb2YgbWFwU3RhdGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgZml0Qm91bmRzVXBkYXRlciA9IChcbiAgc3RhdGU6IE1hcFN0YXRlLFxuICBhY3Rpb246IE1hcFN0YXRlQWN0aW9ucy5GaXRCb3VuZHNVcGRhdGVyQWN0aW9uXG4pOiBNYXBTdGF0ZSA9PiB7XG4gIGNvbnN0IGNlbnRlckFuZFpvb20gPSBnZXRDZW50ZXJBbmRab29tRnJvbUJvdW5kcyhhY3Rpb24ucGF5bG9hZCwge1xuICAgIHdpZHRoOiBzdGF0ZS53aWR0aCxcbiAgICBoZWlnaHQ6IHN0YXRlLmhlaWdodFxuICB9KTtcbiAgaWYgKCFjZW50ZXJBbmRab29tKSB7XG4gICAgLy8gYm91bmRzIGlzIGludmFsaWRcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cblxuICBjb25zdCBuZXdTdGF0ZSA9IHtcbiAgICAuLi5zdGF0ZSxcbiAgICBsYXRpdHVkZTogY2VudGVyQW5kWm9vbS5jZW50ZXJbMV0sXG4gICAgbG9uZ2l0dWRlOiBjZW50ZXJBbmRab29tLmNlbnRlclswXSxcbiAgICAvLyBGb3IgbWFyZ2luYWwgb3IgaW52YWxpZCBib3VuZHMsIHpvb20gbWF5IGJlIE5hTi4gTWFrZSBzdXJlIHRvIHByb3ZpZGUgYSB2YWxpZCB2YWx1ZSBpbiBvcmRlclxuICAgIC8vIHRvIGF2b2lkIGNvcnJ1cHQgc3RhdGUgYW5kIHBvdGVudGlhbCBjcmFzaGVzIGFzIHpvb20gaXMgZXhwZWN0ZWQgdG8gYmUgYSBudW1iZXJcbiAgICAuLi4oTnVtYmVyLmlzRmluaXRlKGNlbnRlckFuZFpvb20uem9vbSkgPyB7em9vbTogY2VudGVyQW5kWm9vbS56b29tfSA6IHt9KVxuICB9O1xuXG4gIC8vIGlmIGZpdHRpbmcgdG8gYm91bmRzIHdoaWxlIHNwbGl0IGFuZCB1bnN5bmNlZFxuICAvLyBjb3B5IHRoZSBuZXcgbGF0aXR1ZGUsIGxvbmdpdHVkZSwgYW5kIHpvb20gdmFsdWVzIHRvIGVhY2ggc3BsaXQgdmlld3BvcnRcbiAgaWYgKG5ld1N0YXRlLnNwbGl0TWFwVmlld3BvcnRzLmxlbmd0aCkge1xuICAgIG5ld1N0YXRlLnNwbGl0TWFwVmlld3BvcnRzID0gbmV3U3RhdGUuc3BsaXRNYXBWaWV3cG9ydHMubWFwKGN1cnJlbnRWaWV3cG9ydCA9PiAoe1xuICAgICAgLi4uY3VycmVudFZpZXdwb3J0LFxuICAgICAgbGF0aXR1ZGU6IG5ld1N0YXRlLmxhdGl0dWRlLFxuICAgICAgbG9uZ2l0dWRlOiBuZXdTdGF0ZS5sb25naXR1ZGUsXG4gICAgICB6b29tOiBuZXdTdGF0ZS56b29tXG4gICAgfSkpO1xuICB9XG5cbiAgcmV0dXJuIG5ld1N0YXRlO1xufTtcblxuLyoqXG4gKiBUb2dnbGUgYmV0d2VlbiAzZCBhbmQgMmQgbWFwLlxuICogQG1lbWJlcm9mIG1hcFN0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHRvZ2dsZVBlcnNwZWN0aXZlVXBkYXRlciA9IChzdGF0ZTogTWFwU3RhdGUpOiBNYXBTdGF0ZSA9PiB7XG4gIGNvbnN0IG5ld1N0YXRlID0ge1xuICAgIC4uLnN0YXRlLFxuICAgIC4uLntcbiAgICAgIHBpdGNoOiBzdGF0ZS5kcmFnUm90YXRlID8gMCA6IDUwLFxuICAgICAgYmVhcmluZzogc3RhdGUuZHJhZ1JvdGF0ZSA/IDAgOiAyNFxuICAgIH0sXG4gICAgZHJhZ1JvdGF0ZTogIXN0YXRlLmRyYWdSb3RhdGVcbiAgfTtcblxuICAvLyBpZiB0b2dnbGluZyAzZCBhbmQgMmQgd2hpbGUgc3BsaXQgYW5kIHVuc3luY2VkXG4gIC8vIGNvcHkgdGhlIG5ldyBwaXRjaCwgYmVhcmluZywgYW5kIGRyYWdSb3RhdGUgdmFsdWVzIHRvIGVhY2ggc3BsaXQgdmlld3BvcnRcbiAgaWYgKG5ld1N0YXRlLnNwbGl0TWFwVmlld3BvcnRzLmxlbmd0aCkge1xuICAgIG5ld1N0YXRlLnNwbGl0TWFwVmlld3BvcnRzID0gbmV3U3RhdGUuc3BsaXRNYXBWaWV3cG9ydHMubWFwKGN1cnJlbnRWaWV3cG9ydCA9PiAoe1xuICAgICAgLi4uY3VycmVudFZpZXdwb3J0LFxuICAgICAgcGl0Y2g6IG5ld1N0YXRlLnBpdGNoLFxuICAgICAgYmVhcmluZzogbmV3U3RhdGUuYmVhcmluZyxcbiAgICAgIGRyYWdSb3RhdGU6IG5ld1N0YXRlLmRyYWdSb3RhdGVcbiAgICB9KSk7XG4gIH1cblxuICByZXR1cm4gbmV3U3RhdGU7XG59O1xuXG4vKipcbiAqIHJlc2V0IG1hcFN0YXRlIHRvIGluaXRpYWwgU3RhdGVcbiAqIEBtZW1iZXJvZiBtYXBTdGF0ZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCByZXNldE1hcENvbmZpZ1VwZGF0ZXIgPSAoc3RhdGU6IE1hcFN0YXRlKTogTWFwU3RhdGUgPT4gKHtcbiAgLi4uSU5JVElBTF9NQVBfU1RBVEUsXG4gIC4uLnN0YXRlLmluaXRpYWxTdGF0ZSxcbiAgaW5pdGlhbFN0YXRlOiBzdGF0ZS5pbml0aWFsU3RhdGVcbn0pO1xuXG4vLyBjb25zaWRlciBjYXNlIHdoZXJlIHlvdSBoYXZlIGEgc3BsaXQgbWFwIGFuZCB1c2VyIHdhbnRzIHRvIHJlc2V0XG4vKipcbiAqIFVwZGF0ZSBgbWFwU3RhdGVgIHRvIHByb3BhZ2F0ZSBhIG5ldyBjb25maWdcbiAqIEBtZW1iZXJvZiBtYXBTdGF0ZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCByZWNlaXZlTWFwQ29uZmlnVXBkYXRlciA9IChcbiAgc3RhdGU6IE1hcFN0YXRlLFxuICB7XG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgIHBheWxvYWQ6IHtjb25maWcgPSB7fSwgb3B0aW9ucyA9IHt9LCBib3VuZHMgPSBudWxsfVxuICB9OiB7XG4gICAgdHlwZT86IHR5cGVvZiBBY3Rpb25UeXBlcy5SRUNFSVZFX01BUF9DT05GSUc7XG4gICAgcGF5bG9hZDogUmVjZWl2ZU1hcENvbmZpZ1BheWxvYWQ7XG4gIH1cbik6IE1hcFN0YXRlID0+IHtcbiAgLyoqXG4gICAqIEB0eXBlIHtQYXJ0aWFsPE1hcFN0YXRlPn1cbiAgICovXG4gIGNvbnN0IG1hcFN0YXRlID0gKGNvbmZpZyB8fCB7fSkubWFwU3RhdGUgfHwge307XG4gIC8vIG1lcmdlZCByZWNlaXZlZCBtYXBTdGF0ZSB3aXRoIHByZXZpb3VzIHN0YXRlXG4gIC8vIHN0YXRlIGFsc28gbWF5IGluY2x1ZGUgcHJvcGVydGllcyB0aGF0IGFyZSBuZXcgdG8gYW4gZXhpc3RpbmcsIHNhdmVkIHByb2plY3QncyBtYXBTdGF0ZVxuXG4gIGxldCBtZXJnZWRTdGF0ZSA9IGRlZXBtZXJnZTxNYXBTdGF0ZT4oc3RhdGUsIG1hcFN0YXRlLCB7XG4gICAgLy8gbm90ZTogZGVlcG1lcmdlIGJ5IGRlZmF1bHQgd2lsbCBtZXJnZSBhcnJheXMgYnkgY29uY2F0ZW5hdGluZyB0aGVtXG4gICAgLy8gYnV0IHdlIG5lZWQgdG8gb3ZlcndyaXRlIGRlc3RpbmF0aW9uIGFycmF5cyB3aXRoIHNvdXJjZSBhcnJheXMsIGlmIHByZXNlbnRcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vVGVoU2hyaWtlL2RlZXBtZXJnZSNhcnJheW1lcmdlLWV4YW1wbGUtb3ZlcndyaXRlLXRhcmdldC1hcnJheVxuICAgIGFycmF5TWVyZ2U6IChfZGVzdGluYXRpb25BcnJheSwgc291cmNlQXJyYXkpID0+IHNvdXJjZUFycmF5XG4gIH0pO1xuXG4gIC8vIGlmIGNlbnRlciBtYXBcbiAgLy8gY2VudGVyIG1hcCB3aWxsIG92ZXJyaWRlIG1hcFN0YXRlIGNvbmZpZ1xuICBpZiAob3B0aW9ucy5jZW50ZXJNYXAgJiYgYm91bmRzKSB7XG4gICAgbWVyZ2VkU3RhdGUgPSBmaXRCb3VuZHNVcGRhdGVyKG1lcmdlZFN0YXRlLCB7XG4gICAgICBwYXlsb2FkOiBib3VuZHNcbiAgICB9KTtcbiAgfVxuXG4gIC8vIG1ha2Ugc3VyZSB3ZSB2YWxpZGF0ZSBtYXAgc3RhdGUgYmVmb3JlIHdlIG1lcmdlXG4gIG1lcmdlZFN0YXRlID0gdmFsaWRhdGVWaWV3UG9ydChtZXJnZWRTdGF0ZSk7XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5tZXJnZWRTdGF0ZSxcbiAgICAvLyB1cGRhdGUgd2lkdGggaWYgYGlzU3BsaXRgIGhhcyBjaGFuZ2VkXG4gICAgLi4uZ2V0TWFwRGltRm9yU3BsaXRNYXAobWVyZ2VkU3RhdGUuaXNTcGxpdCwgc3RhdGUpXG4gIH07XG59O1xuXG4vKipcbiAqIFRvZ2dsZSBiZXR3ZWVuIG9uZSBvciBzcGxpdCBtYXBzXG4gKiBAbWVtYmVyb2YgbWFwU3RhdGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgdG9nZ2xlU3BsaXRNYXBVcGRhdGVyID0gKHN0YXRlOiBNYXBTdGF0ZSk6IE1hcFN0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICAuLi5nZXRNYXBEaW1Gb3JTcGxpdE1hcCghc3RhdGUuaXNTcGxpdCwgc3RhdGUpLFxuICBpc1NwbGl0OiAhc3RhdGUuaXNTcGxpdCxcbiAgbWFwU3BsaXRNb2RlOiAhc3RhdGUuaXNTcGxpdCA/IE1hcFNwbGl0TW9kZS5EVUFMX01BUCA6IE1hcFNwbGl0TW9kZS5TSU5HTEVfTUFQLFxuICAuLi4oIXN0YXRlLmlzU3BsaXQgPT09IGZhbHNlXG4gICAgPyB7XG4gICAgICAgIC8vIGlmIHRvZ2dsaW5nIHRvIG5vIGxvbmdlciBzcGxpdCAoc2luZ2xlIG1vZGUpIHRoZW4gcmVzZXQgYSBmZXcgcHJvcGVydGllc1xuICAgICAgICBpc1ZpZXdwb3J0U3luY2VkOiB0cnVlLFxuICAgICAgICBpc1pvb21Mb2NrZWQ6IGZhbHNlLFxuICAgICAgICBzcGxpdE1hcFZpZXdwb3J0czogW11cbiAgICAgIH1cbiAgICA6IHt9KVxufSk7XG5cbi8qKlxuICogU2V0IHRoZSBtYXAgc3BsaXQgbW9kZSAoc2luZ2xlLCBkdWFsLCBvciBzd2lwZSlcbiAqIEBtZW1iZXJvZiBtYXBTdGF0ZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRNYXBTcGxpdE1vZGVVcGRhdGVyID0gKFxuICBzdGF0ZTogTWFwU3RhdGUsXG4gIGFjdGlvbjogTWFwU3RhdGVBY3Rpb25zLlNldE1hcFNwbGl0TW9kZVVwZGF0ZXJBY3Rpb25cbik6IE1hcFN0YXRlID0+IHtcbiAgY29uc3Qge21hcFNwbGl0TW9kZX0gPSBhY3Rpb24ucGF5bG9hZDtcbiAgY29uc3QgcHJldk1vZGUgPSBzdGF0ZS5tYXBTcGxpdE1vZGU7XG5cbiAgaWYgKG1hcFNwbGl0TW9kZSA9PT0gcHJldk1vZGUpIHtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cblxuICBzd2l0Y2ggKG1hcFNwbGl0TW9kZSkge1xuICAgIGNhc2UgTWFwU3BsaXRNb2RlLlNJTkdMRV9NQVA6XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgbWFwU3BsaXRNb2RlLFxuICAgICAgICBpc1NwbGl0OiBmYWxzZSxcbiAgICAgICAgLi4uKHByZXZNb2RlID09PSBNYXBTcGxpdE1vZGUuRFVBTF9NQVAgJiYge1xuICAgICAgICAgIHdpZHRoOiBzdGF0ZS53aWR0aCAqIDJcbiAgICAgICAgfSksXG4gICAgICAgIGlzVmlld3BvcnRTeW5jZWQ6IHRydWUsXG4gICAgICAgIGlzWm9vbUxvY2tlZDogZmFsc2UsXG4gICAgICAgIHNwbGl0TWFwVmlld3BvcnRzOiBbXVxuICAgICAgfTtcbiAgICBjYXNlIE1hcFNwbGl0TW9kZS5EVUFMX01BUDpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBtYXBTcGxpdE1vZGUsXG4gICAgICAgIGlzU3BsaXQ6IHRydWUsXG4gICAgICAgIC4uLihwcmV2TW9kZSA9PT0gTWFwU3BsaXRNb2RlLlNJTkdMRV9NQVAgJiYge1xuICAgICAgICAgIHdpZHRoOiBzdGF0ZS53aWR0aCAvIDJcbiAgICAgICAgfSksXG4gICAgICAgIC4uLihwcmV2TW9kZSA9PT0gTWFwU3BsaXRNb2RlLlNXSVBFX0NPTVBBUkUgJiYge1xuICAgICAgICAgIHdpZHRoOiBzdGF0ZS53aWR0aCAvIDJcbiAgICAgICAgfSlcbiAgICAgIH07XG4gICAgY2FzZSBNYXBTcGxpdE1vZGUuU1dJUEVfQ09NUEFSRTpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBtYXBTcGxpdE1vZGUsXG4gICAgICAgIGlzU3BsaXQ6IHRydWUsXG4gICAgICAgIC4uLihwcmV2TW9kZSA9PT0gTWFwU3BsaXRNb2RlLkRVQUxfTUFQICYmIHtcbiAgICAgICAgICB3aWR0aDogc3RhdGUud2lkdGggKiAyXG4gICAgICAgIH0pLFxuICAgICAgICBpc1ZpZXdwb3J0U3luY2VkOiB0cnVlLFxuICAgICAgICBpc1pvb21Mb2NrZWQ6IGZhbHNlLFxuICAgICAgICBzcGxpdE1hcFZpZXdwb3J0czogW11cbiAgICAgIH07XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBzdGF0ZTtcbiAgfVxufTtcblxuLyoqXG4gKiBTZXQgdGhlIHN3aXBlIGNvbXBhcmUgcGVyY2VudGFnZVxuICogQG1lbWJlcm9mIG1hcFN0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNldFN3aXBlQ29tcGFyZVBlcmNlbnRhZ2VVcGRhdGVyID0gKFxuICBzdGF0ZTogTWFwU3RhdGUsXG4gIGFjdGlvbjogTWFwU3RhdGVBY3Rpb25zLlNldFN3aXBlQ29tcGFyZVBlcmNlbnRhZ2VVcGRhdGVyQWN0aW9uXG4pOiBNYXBTdGF0ZSA9PiB7XG4gIGNvbnN0IHtwZXJjZW50YWdlfSA9IGFjdGlvbi5wYXlsb2FkO1xuICBjb25zdCBjbGFtcGVkID0gTWF0aC5taW4oMTAwLCBNYXRoLm1heCgwLCBwZXJjZW50YWdlKSk7XG4gIGlmIChjbGFtcGVkID09PSBzdGF0ZS5zd2lwZUNvbXBhcmVQZXJjZW50YWdlKSB7XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG4gIHJldHVybiB7XG4gICAgLi4uc3RhdGUsXG4gICAgc3dpcGVDb21wYXJlUGVyY2VudGFnZTogY2xhbXBlZFxuICB9O1xufTtcblxuLyoqXG4gKiBUb2dnbGUgYmV0d2VlbiBsb2NrZWQgYW5kIHVubG9ja2VkIHNwbGl0IHZpZXdwb3J0c1xuICogQG1lbWJlcm9mIG1hcFN0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHRvZ2dsZVNwbGl0TWFwVmlld3BvcnRVcGRhdGVyID0gKFxuICBzdGF0ZTogTWFwU3RhdGUsXG4gIGFjdGlvbjogTWFwU3RhdGVBY3Rpb25zLlRvZ2dsZVNwbGl0TWFwVmlld3BvcnRVcGRhdGVyQWN0aW9uXG4pID0+IHtcbiAgLy8gU3dpcGUgbW9kZSBhbHdheXMgdXNlcyBzeW5jZWQgdmlld3BvcnRzXG4gIGlmIChzdGF0ZS5tYXBTcGxpdE1vZGUgPT09IE1hcFNwbGl0TW9kZS5TV0lQRV9DT01QQVJFKSB7XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG5cbiAgLy8gbmV3IG1hcCBzdGF0ZSBpbW1lZGlhdGVseSBnZXRzIHRoZSBuZXcsIG9wdGlvbmFsIHBheWxvYWQgdmFsdWVzIGZvciBpc1ZpZXdwb3J0U3luY2VkIGFuZC9vciBpc1pvb21Mb2NrZWRcbiAgY29uc3QgbmV3TWFwU3RhdGUgPSB7XG4gICAgLi4uc3RhdGUsXG4gICAgLi4uKGFjdGlvbi5wYXlsb2FkIHx8IHt9KVxuICB9O1xuXG4gIGlmIChuZXdNYXBTdGF0ZS5pc1ZpZXdwb3J0U3luY2VkKSB7XG4gICAgLy8gc3dpdGNoaW5nIGZyb20gdW5zeW5jZWQgdG8gc3luY2VkIHZpZXdwb3J0c1xuICAgIG5ld01hcFN0YXRlLnNwbGl0TWFwVmlld3BvcnRzID0gW107XG4gIH0gZWxzZSB7XG4gICAgLy8gc3dpdGNoaW5nIGZyb20gc3luY2VkIHRvIHVuc3luY2VkIHZpZXdwb3J0c1xuICAgIC8vIG9yIGFscmVhZHkgaW4gdW5zeW5jZWQgbW9kZSBhbmQgdG9nZ2xpbmcgbG9ja2VkIHpvb21cblxuICAgIGlmIChzdGF0ZS5pc1pvb21Mb2NrZWQgJiYgIW5ld01hcFN0YXRlLmlzWm9vbUxvY2tlZCkge1xuICAgICAgLy8gc3dpdGNoaW5nIG9mZiBsb2NrZWQgem9vbSB3aGlsZSB1bnN5bmNlZFxuICAgICAgLy8gZG9uJ3QgY29weSB0aGUgbWFwU3RhdGVzIHRvIGxlZnQgYW5kIHJpZ2h0IHZpZXdwb3J0cyBiZWNhdXNlIHRoZXJlIHdpbGwgYmUgem9vbSBcImp1bXBpbmdcIlxuICAgICAgcmV0dXJuIG5ld01hcFN0YXRlO1xuICAgIH1cblxuICAgIGlmICghc3RhdGUuaXNab29tTG9ja2VkICYmIG5ld01hcFN0YXRlLmlzWm9vbUxvY2tlZCkge1xuICAgICAgLy8gc3dpdGNoaW5nIG9uIGxvY2tlZCB6b29tIHdoaWxlIHVuc3luY2VkXG4gICAgICAvLyBvbmx5IGNvcHkgem9vbSB2aWV3cG9ydCBwcm9wZXJ0eSBmcm9tIHRoZSBtb3N0IHJlY2VudGx5IGludGVyYWN0ZWQtd2l0aCB2aWV3cG9ydCB0byB0aGUgb3RoZXJcbiAgICAgIC8vIFRPRE86IGRvIHdlIHdhbnQgdG8gY2hlY2sgZm9yIGEgbWF0Y2ggYSBkaWZmZXJlbnQgd2F5LCBzdWNoIGFzIGEgY29tYm8gb2YgYGxhdGl0dWRlYCBhbmQgYGxvbmdpdHVkZWA/XG4gICAgICBjb25zdCBsYXN0VXBkYXRlZFZpZXdwb3J0SW5kZXggPSBuZXdNYXBTdGF0ZS5zcGxpdE1hcFZpZXdwb3J0cy5maW5kSW5kZXgoXG4gICAgICAgIHYgPT4gbmV3TWFwU3RhdGUuem9vbSA9PT0gdi56b29tXG4gICAgICApO1xuXG4gICAgICBjb25zdCBzcGxpdE1hcFZpZXdwb3J0cyA9IG5ld01hcFN0YXRlLnNwbGl0TWFwVmlld3BvcnRzLm1hcCgoY3VycmVudFZpZXdwb3J0LCBpKSA9PiB7XG4gICAgICAgIGlmIChpID09PSBsYXN0VXBkYXRlZFZpZXdwb3J0SW5kZXgpIHtcbiAgICAgICAgICAvLyBubyB6b29tIHRvIG1vZGlmeSBoZXJlXG4gICAgICAgICAgcmV0dXJuIGN1cnJlbnRWaWV3cG9ydDtcbiAgICAgICAgfVxuICAgICAgICAvLyB0aGUgb3RoZXIgdmlld3BvcnQgZ2V0cyB0aGUgbW9zdCByZWNlbnRseSBpbnRlcmFjdGVkLXdpdGggdmlld3BvcnQncyB6b29tXG4gICAgICAgIC8vIFdIWT8gdGhlIHZpZXdwb3J0IHRoZSB1c2VyIHdhcyBsYXN0IGludGVyYWN0aW5nIHdpdGggd2lsbCBzZXQgem9vbSBhY3Jvc3MgdGhlIGJvYXJkIGZvciBzbW9vdGggVVhcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5jdXJyZW50Vmlld3BvcnQsXG4gICAgICAgICAgem9vbTogbmV3TWFwU3RhdGUuc3BsaXRNYXBWaWV3cG9ydHNbbGFzdFVwZGF0ZWRWaWV3cG9ydEluZGV4XS56b29tXG4gICAgICAgIH07XG4gICAgICB9KTtcblxuICAgICAgbmV3TWFwU3RhdGUuc3BsaXRNYXBWaWV3cG9ydHMgPSBzcGxpdE1hcFZpZXdwb3J0cztcblxuICAgICAgcmV0dXJuIG5ld01hcFN0YXRlO1xuICAgIH1cblxuICAgIC8vIGlmIGN1cnJlbnQgdmlld3BvcnQgaXMgc3luY2VkLCBhbmQgd2UgYXJlIHVuc3luY2luZyBpdFxuICAgIC8vIG9yIGFscmVhZHkgaW4gdW5zeW5jZWQgbW9kZSBhbmQgTk9UIHRvZ2dsaW5nIGxvY2tlZCB6b29tXG4gICAgLy8gbWFrZSBhIGZyZXNoIGNvcHkgb2YgdGhlIGN1cnJlbnQgdmlld3BvcnQgb2JqZWN0LCBhc3NpZ24gaXQgdG8gc3BsaXRNYXBWaWV3cG9ydHNbXVxuICAgIC8vIHBpY2tWaWV3cG9ydFByb3BzRnJvbU1hcFN0YXRlIGlzIGNhbGxlZCB0d2ljZSB0byBhdm9pZCBtZW1vcnkgYWxsb2NhdGlvbiBjb25mbGljdHNcbiAgICBjb25zdCBsZWZ0Vmlld3BvcnQgPSBwaWNrVmlld3BvcnRQcm9wc0Zyb21NYXBTdGF0ZShuZXdNYXBTdGF0ZSk7XG4gICAgY29uc3QgcmlnaHRWaWV3cG9ydCA9IHBpY2tWaWV3cG9ydFByb3BzRnJvbU1hcFN0YXRlKG5ld01hcFN0YXRlKTtcbiAgICBuZXdNYXBTdGF0ZS5zcGxpdE1hcFZpZXdwb3J0cyA9IFtsZWZ0Vmlld3BvcnQsIHJpZ2h0Vmlld3BvcnRdO1xuICB9XG5cbiAgLy8gcmV0dXJuIG5ldyBzdGF0ZVxuICByZXR1cm4gbmV3TWFwU3RhdGU7XG59O1xuXG4vLyBIZWxwZXJzXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWFwRGltRm9yU3BsaXRNYXAoaXNTcGxpdCwgc3RhdGUpIHtcbiAgLy8gY2FzZXM6XG4gIC8vIDEuIHN0YXRlIHNwbGl0OiB0cnVlIC0gaXNTcGxpdDogdHJ1ZVxuICAvLyBkbyBub3RoaW5nXG4gIC8vIDIuIHN0YXRlIHNwbGl0OiBmYWxzZSAtIGlzU3BsaXQ6IGZhbHNlXG4gIC8vIGRvIG5vdGhpbmdcbiAgaWYgKHN0YXRlLmlzU3BsaXQgPT09IGlzU3BsaXQpIHtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICAvLyBJbiBzd2lwZSBtb2RlLCBib3RoIG1hcHMgdXNlIGZ1bGwgd2lkdGggKG92ZXJsYXBwaW5nIHdpdGggY2xpcClcbiAgaWYgKHN0YXRlLm1hcFNwbGl0TW9kZSA9PT0gTWFwU3BsaXRNb2RlLlNXSVBFX0NPTVBBUkUpIHtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICBjb25zdCB3aWR0aCA9XG4gICAgc3RhdGUuaXNTcGxpdCAmJiAhaXNTcGxpdFxuICAgICAgPyAvLyAzLiBzdGF0ZSBzcGxpdDogdHJ1ZSAtIGlzU3BsaXQ6IGZhbHNlXG4gICAgICAgIC8vIGRvdWJsZSB3aWR0aFxuICAgICAgICBzdGF0ZS53aWR0aCAqIDJcbiAgICAgIDogLy8gNC4gc3RhdGUgc3BsaXQ6IGZhbHNlIC0gaXNTcGxpdDogdHJ1ZVxuICAgICAgICAvLyBzcGxpdCB3aWR0aFxuICAgICAgICBzdGF0ZS53aWR0aCAvIDI7XG5cbiAgcmV0dXJuIHtcbiAgICB3aWR0aFxuICB9O1xufVxuXG5mdW5jdGlvbiB1cGRhdGVWaWV3cG9ydEJhc2VkT25Cb3VuZHMoc3RhdGU6IE1hcFN0YXRlLCBuZXdNYXBTdGF0ZTogTWFwU3RhdGUpIHtcbiAgLy8gR2V0IHRoZSBuZXcgdmlld3BvcnQgYm91bmRzXG4gIGNvbnN0IHZpZXdwb3J0Qm91bmRzID0gZ2VvVmlld3BvcnQuYm91bmRzKFxuICAgIFtuZXdNYXBTdGF0ZS5sb25naXR1ZGUsIG5ld01hcFN0YXRlLmxhdGl0dWRlXSxcbiAgICBuZXdNYXBTdGF0ZS56b29tLFxuICAgIFtuZXdNYXBTdGF0ZS53aWR0aCwgbmV3TWFwU3RhdGUuaGVpZ2h0XSxcbiAgICBNQVBCT1hfVElMRV9TSVpFXG4gICk7XG4gIC8vIEdlbmVyYXRlIHR1cmYgUG9seWdvbiBmcm9tIGJvdW5kcyBmb3IgY29tcGFyaXNvblxuICBjb25zdCB2aWV3cG9ydEJvdW5kc1BvbHlnb24gPSBiYm94UG9seWdvbih2aWV3cG9ydEJvdW5kcyk7XG4gIC8vIEB0cy1pZ25vcmVcbiAgY29uc3QgbmV3U3RhdGVNYXhCb3VuZHM6IEJvdW5kcyA9IG5ld01hcFN0YXRlLm1heEJvdW5kcztcbiAgLy8gQHRzLWlnbm9yZVxuICBjb25zdCBtYXhCb3VuZHNQb2x5Z29uID0gYmJveFBvbHlnb24obmV3U3RhdGVNYXhCb3VuZHMpO1xuXG4gIC8vIElmIG1heEJvdW5kcyBoYXMgY2hhbmdlZCByZXNldCB0aGUgdmlld3BvcnQgdG8gc25hcCB0byBib3VuZHNcbiAgY29uc3QgaGFzTWF4Qm91bmRzQ2hhbmdlZCA9XG4gICAgIXN0YXRlLm1heEJvdW5kcyB8fCAhc3RhdGUubWF4Qm91bmRzLmV2ZXJ5KCh2YWwsIGlkeCkgPT4gdmFsID09PSBuZXdTdGF0ZU1heEJvdW5kc1tpZHhdKTtcbiAgaWYgKGhhc01heEJvdW5kc0NoYW5nZWQpIHtcbiAgICAvLyBDaGVjayBpZiB0aGUgbmV3TWFwU3RhdGUgdmlld3BvcnQgaXMgd2l0aGluIG1heEJvdW5kc1xuICAgIGlmICghYm9vbGVhbldpdGhpbih2aWV3cG9ydEJvdW5kc1BvbHlnb24sIG1heEJvdW5kc1BvbHlnb24pKSB7XG4gICAgICBjb25zdCB7bGF0aXR1ZGUsIGxvbmdpdHVkZSwgem9vbX0gPSBmaXRCb3VuZHMoe1xuICAgICAgICB3aWR0aDogbmV3TWFwU3RhdGUud2lkdGgsXG4gICAgICAgIGhlaWdodDogbmV3TWFwU3RhdGUuaGVpZ2h0LFxuICAgICAgICBib3VuZHM6IFtcbiAgICAgICAgICBbbmV3U3RhdGVNYXhCb3VuZHNbMF0sIG5ld1N0YXRlTWF4Qm91bmRzWzFdXSxcbiAgICAgICAgICBbbmV3U3RhdGVNYXhCb3VuZHNbMl0sIG5ld1N0YXRlTWF4Qm91bmRzWzNdXVxuICAgICAgICBdXG4gICAgICB9KTtcblxuICAgICAgbmV3TWFwU3RhdGUgPSB7XG4gICAgICAgIC4uLm5ld01hcFN0YXRlLFxuICAgICAgICBsYXRpdHVkZSxcbiAgICAgICAgbG9uZ2l0dWRlLFxuICAgICAgICAvLyBGb3IgbWFyZ2luYWwgb3IgaW52YWxpZCBib3VuZHMsIHpvb20gbWF5IGJlIE5hTi4gTWFrZSBzdXJlIHRvIHByb3ZpZGUgYSB2YWxpZCB2YWx1ZSBpbiBvcmRlclxuICAgICAgICAvLyB0byBhdm9pZCBjb3JydXB0IHN0YXRlIGFuZCBwb3RlbnRpYWwgY3Jhc2hlcyBhcyB6b29tIGlzIGV4cGVjdGVkIHRvIGJlIGEgbnVtYmVyXG4gICAgICAgIC4uLihOdW1iZXIuaXNGaW5pdGUoem9vbSkgPyB7em9vbX0gOiB7fSlcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBuZXdNYXBTdGF0ZTtcbiAgfVxuXG4gIC8vIENoZWNrIGlmIHRoZSBuZXdNYXBTdGF0ZSB2aWV3cG9ydCBpcyB3aXRoaW4gbWF4Qm91bmRzXG4gIGlmICghYm9vbGVhbldpdGhpbih2aWV3cG9ydEJvdW5kc1BvbHlnb24sIG1heEJvdW5kc1BvbHlnb24pKSB7XG4gICAgbmV3TWFwU3RhdGUgPSB7XG4gICAgICAuLi5uZXdNYXBTdGF0ZSxcbiAgICAgIGxvbmdpdHVkZTogc3RhdGUubG9uZ2l0dWRlLFxuICAgICAgbGF0aXR1ZGU6IHN0YXRlLmxhdGl0dWRlLFxuICAgICAgem9vbTogc3RhdGUuem9vbVxuICAgIH07XG4gIH1cblxuICByZXR1cm4gbmV3TWFwU3RhdGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwaWNrVmlld3BvcnRQcm9wc0Zyb21NYXBTdGF0ZShzdGF0ZTogTWFwU3RhdGUpOiBWaWV3cG9ydCB7XG4gIHJldHVybiBwaWNrKHN0YXRlLCBbXG4gICAgJ3dpZHRoJyxcbiAgICAnaGVpZ2h0JyxcbiAgICAnem9vbScsXG4gICAgJ3BpdGNoJyxcbiAgICAnYmVhcmluZycsXG4gICAgJ2xhdGl0dWRlJyxcbiAgICAnbG9uZ2l0dWRlJyxcbiAgICAnZHJhZ1JvdGF0ZScsXG4gICAgJ21pblpvb20nLFxuICAgICdtYXhab29tJyxcbiAgICAnbWF4UGl0Y2gnLFxuICAgICdtYXhCb3VuZHMnXG4gIF0pO1xufVxuXG4vKiogU2VsZWN0IGl0ZW1zIGZyb20gb2JqZWN0IHdob3NlIHZhbHVlIGlzIG5vdCB1bmRlZmluZWQgKi9cbmNvbnN0IGRlZmluZWRQcm9wcyA9IG9iaiA9PlxuICBPYmplY3QuZW50cmllcyhvYmopLnJlZHVjZShcbiAgICAoYWNjdSwgW2ssIHZdKSA9PiAoey4uLmFjY3UsIC4uLih2ICE9PSB1bmRlZmluZWQgPyB7W2tdOiB2fSA6IHt9KX0pLFxuICAgIHt9XG4gICk7XG5cbmZ1bmN0aW9uIHVwZGF0ZVZpZXdwb3J0KG9yaWdpbmFsVmlld3BvcnQ6IFZpZXdwb3J0LCB2aWV3cG9ydFVwZGF0ZXM6IFZpZXdwb3J0KTogVmlld3BvcnQge1xuICBsZXQgbmV3Vmlld3BvcnQgPSB7XG4gICAgLi4ub3JpZ2luYWxWaWV3cG9ydCxcbiAgICAuLi4oZGVmaW5lZFByb3BzKHZpZXdwb3J0VXBkYXRlcykgfHwge30pXG4gIH07XG5cbiAgLy8gTWFrZSBzdXJlIHpvb20gbGV2ZWwgZG9lc24ndCBnbyBiZWxsb3cgbWluWm9vbSBpZiBkZWZpbmVkXG4gIGlmIChuZXdWaWV3cG9ydC5taW5ab29tICYmIG5ld1ZpZXdwb3J0Lnpvb20gJiYgbmV3Vmlld3BvcnQuem9vbSA8IG5ld1ZpZXdwb3J0Lm1pblpvb20pIHtcbiAgICBuZXdWaWV3cG9ydC56b29tID0gbmV3Vmlld3BvcnQubWluWm9vbTtcbiAgfVxuICAvLyBNYWtlIHN1cmUgem9vbSBsZXZlbCBkb2Vzbid0IGdvIGFib3ZlIG1heFpvb20gaWYgZGVmaW5lZFxuICBpZiAobmV3Vmlld3BvcnQubWF4Wm9vbSAmJiBuZXdWaWV3cG9ydC56b29tICYmIG5ld1ZpZXdwb3J0Lnpvb20gPiBuZXdWaWV3cG9ydC5tYXhab29tKSB7XG4gICAgbmV3Vmlld3BvcnQuem9vbSA9IG5ld1ZpZXdwb3J0Lm1heFpvb207XG4gIH1cbiAgLy8gTGltaXQgdmlld3BvcnQgdXBkYXRlIGJhc2VkIG9uIG1heEJvdW5kc1xuICBpZiAobmV3Vmlld3BvcnQubWF4Qm91bmRzICYmIHZhbGlkYXRlQm91bmRzKG5ld1ZpZXdwb3J0Lm1heEJvdW5kcykpIHtcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yIFR5cGUgJ1ZpZXdwb3J0JyBpcyBtaXNzaW5nIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllcyBmcm9tIHR5cGUgJ01hcFN0YXRlJzogaXNTcGxpdCwgaXNWaWV3cG9ydFN5bmNlZCwgaXNab29tTG9ja2VkLCBzcGxpdE1hcFZpZXdwb3J0c1xuICAgIG5ld1ZpZXdwb3J0ID0gdXBkYXRlVmlld3BvcnRCYXNlZE9uQm91bmRzKG9yaWdpbmFsVmlld3BvcnQsIG5ld1ZpZXdwb3J0KTtcbiAgfVxuXG4gIHJldHVybiBuZXdWaWV3cG9ydDtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBR0EsSUFBQUEsWUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsY0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsWUFBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsWUFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksVUFBQSxHQUFBTCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUssS0FBQSxHQUFBTixzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQU0sTUFBQSxHQUFBTixPQUFBO0FBUUEsSUFBQU8sVUFBQSxHQUFBUCxPQUFBO0FBQWtELFNBQUFRLFFBQUFDLENBQUEsRUFBQUMsQ0FBQSxRQUFBQyxDQUFBLEdBQUFDLE1BQUEsQ0FBQUMsSUFBQSxDQUFBSixDQUFBLE9BQUFHLE1BQUEsQ0FBQUUscUJBQUEsUUFBQUMsQ0FBQSxHQUFBSCxNQUFBLENBQUFFLHFCQUFBLENBQUFMLENBQUEsR0FBQUMsQ0FBQSxLQUFBSyxDQUFBLEdBQUFBLENBQUEsQ0FBQUMsTUFBQSxXQUFBTixDQUFBLFdBQUFFLE1BQUEsQ0FBQUssd0JBQUEsQ0FBQVIsQ0FBQSxFQUFBQyxDQUFBLEVBQUFRLFVBQUEsT0FBQVAsQ0FBQSxDQUFBUSxJQUFBLENBQUFDLEtBQUEsQ0FBQVQsQ0FBQSxFQUFBSSxDQUFBLFlBQUFKLENB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
|
package/dist/map-state.d.ts
CHANGED
|
@@ -1,79 +1,3 @@
|
|
|
1
|
-
export declare const mapStateReducerFactory: (initialState?: {}) => import("redux-actions").ReduxCompatibleReducer<
|
|
2
|
-
|
|
3
|
-
isZoomLocked: boolean;
|
|
4
|
-
pitch: number;
|
|
5
|
-
bearing: number;
|
|
6
|
-
latitude: number;
|
|
7
|
-
longitude: number;
|
|
8
|
-
zoom: number;
|
|
9
|
-
dragRotate: boolean;
|
|
10
|
-
width: number;
|
|
11
|
-
height: number;
|
|
12
|
-
minZoom?: number;
|
|
13
|
-
maxZoom?: number;
|
|
14
|
-
maxPitch?: number;
|
|
15
|
-
maxBounds?: import("@kepler.gl/types").Bounds;
|
|
16
|
-
initialState?: any;
|
|
17
|
-
scale?: number;
|
|
18
|
-
isSplit: boolean;
|
|
19
|
-
splitMapViewports: import("@kepler.gl/types").Viewport[];
|
|
20
|
-
}, {
|
|
21
|
-
isViewportSynced: boolean;
|
|
22
|
-
isZoomLocked: boolean;
|
|
23
|
-
pitch: number;
|
|
24
|
-
bearing: number;
|
|
25
|
-
latitude: number;
|
|
26
|
-
longitude: number;
|
|
27
|
-
zoom: number;
|
|
28
|
-
dragRotate: boolean;
|
|
29
|
-
width: number;
|
|
30
|
-
height: number;
|
|
31
|
-
minZoom?: number;
|
|
32
|
-
maxZoom?: number;
|
|
33
|
-
maxPitch?: number;
|
|
34
|
-
maxBounds?: import("@kepler.gl/types").Bounds;
|
|
35
|
-
initialState?: any;
|
|
36
|
-
scale?: number;
|
|
37
|
-
isSplit: boolean;
|
|
38
|
-
splitMapViewports: import("@kepler.gl/types").Viewport[];
|
|
39
|
-
}>;
|
|
40
|
-
declare const _default: import("redux-actions").ReduxCompatibleReducer<{
|
|
41
|
-
isViewportSynced: boolean;
|
|
42
|
-
isZoomLocked: boolean;
|
|
43
|
-
pitch: number;
|
|
44
|
-
bearing: number;
|
|
45
|
-
latitude: number;
|
|
46
|
-
longitude: number;
|
|
47
|
-
zoom: number;
|
|
48
|
-
dragRotate: boolean;
|
|
49
|
-
width: number;
|
|
50
|
-
height: number;
|
|
51
|
-
minZoom?: number;
|
|
52
|
-
maxZoom?: number;
|
|
53
|
-
maxPitch?: number;
|
|
54
|
-
maxBounds?: import("@kepler.gl/types").Bounds;
|
|
55
|
-
initialState?: any;
|
|
56
|
-
scale?: number;
|
|
57
|
-
isSplit: boolean;
|
|
58
|
-
splitMapViewports: import("@kepler.gl/types").Viewport[];
|
|
59
|
-
}, {
|
|
60
|
-
isViewportSynced: boolean;
|
|
61
|
-
isZoomLocked: boolean;
|
|
62
|
-
pitch: number;
|
|
63
|
-
bearing: number;
|
|
64
|
-
latitude: number;
|
|
65
|
-
longitude: number;
|
|
66
|
-
zoom: number;
|
|
67
|
-
dragRotate: boolean;
|
|
68
|
-
width: number;
|
|
69
|
-
height: number;
|
|
70
|
-
minZoom?: number;
|
|
71
|
-
maxZoom?: number;
|
|
72
|
-
maxPitch?: number;
|
|
73
|
-
maxBounds?: import("@kepler.gl/types").Bounds;
|
|
74
|
-
initialState?: any;
|
|
75
|
-
scale?: number;
|
|
76
|
-
isSplit: boolean;
|
|
77
|
-
splitMapViewports: import("@kepler.gl/types").Viewport[];
|
|
78
|
-
}>;
|
|
1
|
+
export declare const mapStateReducerFactory: (initialState?: {}) => import("redux-actions").ReduxCompatibleReducer<import("@kepler.gl/types").MapState, import("@kepler.gl/types").MapState>;
|
|
2
|
+
declare const _default: import("redux-actions").ReduxCompatibleReducer<import("@kepler.gl/types").MapState, import("@kepler.gl/types").MapState>;
|
|
79
3
|
export default _default;
|
package/dist/map-state.js
CHANGED
|
@@ -19,7 +19,7 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
|
|
|
19
19
|
* Important: Do not rename `actionHandler` or the assignment pattern of property value.
|
|
20
20
|
* It is used to generate documentation
|
|
21
21
|
*/
|
|
22
|
-
var actionHandler = (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, _actions.ActionTypes.UPDATE_MAP, mapStateUpdaters.updateMapUpdater), _actions.ActionTypes.FIT_BOUNDS, mapStateUpdaters.fitBoundsUpdater), _actions.ActionTypes.TOGGLE_PERSPECTIVE, mapStateUpdaters.togglePerspectiveUpdater), _actions.ActionTypes.RECEIVE_MAP_CONFIG, mapStateUpdaters.receiveMapConfigUpdater), _actions.ActionTypes.RESET_MAP_CONFIG, mapStateUpdaters.resetMapConfigUpdater), _actions.ActionTypes.TOGGLE_SPLIT_MAP, mapStateUpdaters.toggleSplitMapUpdater), _actions.ActionTypes.TOGGLE_SPLIT_MAP_VIEWPORT, mapStateUpdaters.toggleSplitMapViewportUpdater);
|
|
22
|
+
var actionHandler = (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, _actions.ActionTypes.UPDATE_MAP, mapStateUpdaters.updateMapUpdater), _actions.ActionTypes.FIT_BOUNDS, mapStateUpdaters.fitBoundsUpdater), _actions.ActionTypes.TOGGLE_PERSPECTIVE, mapStateUpdaters.togglePerspectiveUpdater), _actions.ActionTypes.RECEIVE_MAP_CONFIG, mapStateUpdaters.receiveMapConfigUpdater), _actions.ActionTypes.RESET_MAP_CONFIG, mapStateUpdaters.resetMapConfigUpdater), _actions.ActionTypes.TOGGLE_SPLIT_MAP, mapStateUpdaters.toggleSplitMapUpdater), _actions.ActionTypes.TOGGLE_SPLIT_MAP_VIEWPORT, mapStateUpdaters.toggleSplitMapViewportUpdater), _actions.ActionTypes.SET_MAP_SPLIT_MODE, mapStateUpdaters.setMapSplitModeUpdater), _actions.ActionTypes.SET_SWIPE_COMPARE_PERCENTAGE, mapStateUpdaters.setSwipeComparePercentageUpdater);
|
|
23
23
|
|
|
24
24
|
/* Reducer */
|
|
25
25
|
var mapStateReducerFactory = exports.mapStateReducerFactory = function mapStateReducerFactory() {
|
|
@@ -32,4 +32,4 @@ var mapStateReducerFactory = exports.mapStateReducerFactory = function mapStateR
|
|
|
32
32
|
);
|
|
33
33
|
};
|
|
34
34
|
var _default = exports["default"] = mapStateReducerFactory();
|
|
35
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
35
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVkdXhBY3Rpb25zIiwicmVxdWlyZSIsIl9hY3Rpb25zIiwibWFwU3RhdGVVcGRhdGVycyIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0Iiwib3duS2V5cyIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJvIiwiZmlsdGVyIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiYWN0aW9uSGFuZGxlciIsIkFjdGlvblR5cGVzIiwiVVBEQVRFX01BUCIsInVwZGF0ZU1hcFVwZGF0ZXIiLCJGSVRfQk9VTkRTIiwiZml0Qm91bmRzVXBkYXRlciIsIlRPR0dMRV9QRVJTUEVDVElWRSIsInRvZ2dsZVBlcnNwZWN0aXZlVXBkYXRlciIsIlJFQ0VJVkVfTUFQX0NPTkZJRyIsInJlY2VpdmVNYXBDb25maWdVcGRhdGVyIiwiUkVTRVRfTUFQX0NPTkZJRyIsInJlc2V0TWFwQ29uZmlnVXBkYXRlciIsIlRPR0dMRV9TUExJVF9NQVAiLCJ0b2dnbGVTcGxpdE1hcFVwZGF0ZXIiLCJUT0dHTEVfU1BMSVRfTUFQX1ZJRVdQT1JUIiwidG9nZ2xlU3BsaXRNYXBWaWV3cG9ydFVwZGF0ZXIiLCJTRVRfTUFQX1NQTElUX01PREUiLCJzZXRNYXBTcGxpdE1vZGVVcGRhdGVyIiwiU0VUX1NXSVBFX0NPTVBBUkVfUEVSQ0VOVEFHRSIsInNldFN3aXBlQ29tcGFyZVBlcmNlbnRhZ2VVcGRhdGVyIiwibWFwU3RhdGVSZWR1Y2VyRmFjdG9yeSIsImV4cG9ydHMiLCJpbml0aWFsU3RhdGUiLCJ1bmRlZmluZWQiLCJoYW5kbGVBY3Rpb25zIiwiSU5JVElBTF9NQVBfU1RBVEUiLCJfZGVmYXVsdCJdLCJzb3VyY2VzIjpbIi4uL3NyYy9tYXAtc3RhdGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IHtoYW5kbGVBY3Rpb25zfSBmcm9tICdyZWR1eC1hY3Rpb25zJztcbmltcG9ydCB7QWN0aW9uVHlwZXN9IGZyb20gJ0BrZXBsZXIuZ2wvYWN0aW9ucyc7XG5pbXBvcnQgKiBhcyBtYXBTdGF0ZVVwZGF0ZXJzIGZyb20gJy4vbWFwLXN0YXRlLXVwZGF0ZXJzJztcblxuLyoqXG4gKiBJbXBvcnRhbnQ6IERvIG5vdCByZW5hbWUgYGFjdGlvbkhhbmRsZXJgIG9yIHRoZSBhc3NpZ25tZW50IHBhdHRlcm4gb2YgcHJvcGVydHkgdmFsdWUuXG4gKiBJdCBpcyB1c2VkIHRvIGdlbmVyYXRlIGRvY3VtZW50YXRpb25cbiAqL1xuY29uc3QgYWN0aW9uSGFuZGxlciA9IHtcbiAgW0FjdGlvblR5cGVzLlVQREFURV9NQVBdOiBtYXBTdGF0ZVVwZGF0ZXJzLnVwZGF0ZU1hcFVwZGF0ZXIsXG4gIFtBY3Rpb25UeXBlcy5GSVRfQk9VTkRTXTogbWFwU3RhdGVVcGRhdGVycy5maXRCb3VuZHNVcGRhdGVyLFxuICBbQWN0aW9uVHlwZXMuVE9HR0xFX1BFUlNQRUNUSVZFXTogbWFwU3RhdGVVcGRhdGVycy50b2dnbGVQZXJzcGVjdGl2ZVVwZGF0ZXIsXG4gIFtBY3Rpb25UeXBlcy5SRUNFSVZFX01BUF9DT05GSUddOiBtYXBTdGF0ZVVwZGF0ZXJzLnJlY2VpdmVNYXBDb25maWdVcGRhdGVyLFxuICBbQWN0aW9uVHlwZXMuUkVTRVRfTUFQX0NPTkZJR106IG1hcFN0YXRlVXBkYXRlcnMucmVzZXRNYXBDb25maWdVcGRhdGVyLFxuICBbQWN0aW9uVHlwZXMuVE9HR0xFX1NQTElUX01BUF06IG1hcFN0YXRlVXBkYXRlcnMudG9nZ2xlU3BsaXRNYXBVcGRhdGVyLFxuICBbQWN0aW9uVHlwZXMuVE9HR0xFX1NQTElUX01BUF9WSUVXUE9SVF06IG1hcFN0YXRlVXBkYXRlcnMudG9nZ2xlU3BsaXRNYXBWaWV3cG9ydFVwZGF0ZXIsXG4gIFtBY3Rpb25UeXBlcy5TRVRfTUFQX1NQTElUX01PREVdOiBtYXBTdGF0ZVVwZGF0ZXJzLnNldE1hcFNwbGl0TW9kZVVwZGF0ZXIsXG4gIFtBY3Rpb25UeXBlcy5TRVRfU1dJUEVfQ09NUEFSRV9QRVJDRU5UQUdFXTogbWFwU3RhdGVVcGRhdGVycy5zZXRTd2lwZUNvbXBhcmVQZXJjZW50YWdlVXBkYXRlclxufTtcblxuLyogUmVkdWNlciAqL1xuZXhwb3J0IGNvbnN0IG1hcFN0YXRlUmVkdWNlckZhY3RvcnkgPSAoaW5pdGlhbFN0YXRlID0ge30pID0+XG4gIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgaGFuZGxlQWN0aW9ucyhhY3Rpb25IYW5kbGVyLCB7XG4gICAgLi4ubWFwU3RhdGVVcGRhdGVycy5JTklUSUFMX01BUF9TVEFURSxcbiAgICAuLi5pbml0aWFsU3RhdGUsXG4gICAgaW5pdGlhbFN0YXRlXG4gIH0pO1xuXG5leHBvcnQgZGVmYXVsdCBtYXBTdGF0ZVJlZHVjZXJGYWN0b3J5KCk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUdBLElBQUFBLGFBQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLFFBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLGdCQUFBLEdBQUFDLHVCQUFBLENBQUFILE9BQUE7QUFBeUQsU0FBQUkseUJBQUFDLENBQUEsNkJBQUFDLE9BQUEsbUJBQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JB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
|
|
@@ -79,7 +79,7 @@ export declare const DEFAULT_EXPORT_MAP: ExportMap;
|
|
|
79
79
|
* @property mediaType Default: `'webm'`
|
|
80
80
|
* @property cameraPreset Default: `'None'`
|
|
81
81
|
* @property fileName Default: `'kepler.gl'`
|
|
82
|
-
* @property resolution Default: `''`
|
|
82
|
+
* @property resolution Default: `'1280x720'`
|
|
83
83
|
* @property durationMs Default: `1000`
|
|
84
84
|
* @public
|
|
85
85
|
*/
|