@flowmap.gl/layers 8.0.0-alpha.13 → 8.0.0-alpha.14

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.
Files changed (47) hide show
  1. package/package.json +4 -6
  2. package/dist-es5/AnimatedFlowLinesLayer/AnimatedFlowLinesLayer.d.ts +0 -76
  3. package/dist-es5/AnimatedFlowLinesLayer/AnimatedFlowLinesLayer.d.ts.map +0 -1
  4. package/dist-es5/AnimatedFlowLinesLayer/AnimatedFlowLinesLayer.js +0 -178
  5. package/dist-es5/AnimatedFlowLinesLayer/AnimatedFlowLinesLayerFragment.glsl.d.ts +0 -3
  6. package/dist-es5/AnimatedFlowLinesLayer/AnimatedFlowLinesLayerFragment.glsl.d.ts.map +0 -1
  7. package/dist-es5/AnimatedFlowLinesLayer/AnimatedFlowLinesLayerFragment.glsl.js +0 -21
  8. package/dist-es5/AnimatedFlowLinesLayer/AnimatedFlowLinesLayerVertex.glsl.d.ts +0 -3
  9. package/dist-es5/AnimatedFlowLinesLayer/AnimatedFlowLinesLayerVertex.glsl.d.ts.map +0 -1
  10. package/dist-es5/AnimatedFlowLinesLayer/AnimatedFlowLinesLayerVertex.glsl.js +0 -21
  11. package/dist-es5/AnimatedFlowLinesLayer/index.d.ts +0 -3
  12. package/dist-es5/AnimatedFlowLinesLayer/index.d.ts.map +0 -1
  13. package/dist-es5/AnimatedFlowLinesLayer/index.js +0 -8
  14. package/dist-es5/FlowCirclesLayer/FlowCirclesLayer.d.ts +0 -59
  15. package/dist-es5/FlowCirclesLayer/FlowCirclesLayer.d.ts.map +0 -1
  16. package/dist-es5/FlowCirclesLayer/FlowCirclesLayer.js +0 -149
  17. package/dist-es5/FlowCirclesLayer/FlowCirclesLayerFragment.glsl.d.ts +0 -3
  18. package/dist-es5/FlowCirclesLayer/FlowCirclesLayerFragment.glsl.d.ts.map +0 -1
  19. package/dist-es5/FlowCirclesLayer/FlowCirclesLayerFragment.glsl.js +0 -21
  20. package/dist-es5/FlowCirclesLayer/FlowCirclesLayerVertex.glsl.d.ts +0 -3
  21. package/dist-es5/FlowCirclesLayer/FlowCirclesLayerVertex.glsl.d.ts.map +0 -1
  22. package/dist-es5/FlowCirclesLayer/FlowCirclesLayerVertex.glsl.js +0 -21
  23. package/dist-es5/FlowCirclesLayer/index.d.ts +0 -3
  24. package/dist-es5/FlowCirclesLayer/index.d.ts.map +0 -1
  25. package/dist-es5/FlowCirclesLayer/index.js +0 -8
  26. package/dist-es5/FlowLinesLayer/FlowLinesLayer.d.ts +0 -64
  27. package/dist-es5/FlowLinesLayer/FlowLinesLayer.d.ts.map +0 -1
  28. package/dist-es5/FlowLinesLayer/FlowLinesLayer.js +0 -217
  29. package/dist-es5/FlowLinesLayer/FlowLinesLayerFragment.glsl.d.ts +0 -3
  30. package/dist-es5/FlowLinesLayer/FlowLinesLayerFragment.glsl.d.ts.map +0 -1
  31. package/dist-es5/FlowLinesLayer/FlowLinesLayerFragment.glsl.js +0 -21
  32. package/dist-es5/FlowLinesLayer/FlowLinesLayerVertex.glsl.d.ts +0 -3
  33. package/dist-es5/FlowLinesLayer/FlowLinesLayerVertex.glsl.d.ts.map +0 -1
  34. package/dist-es5/FlowLinesLayer/FlowLinesLayerVertex.glsl.js +0 -21
  35. package/dist-es5/FlowLinesLayer/index.d.ts +0 -3
  36. package/dist-es5/FlowLinesLayer/index.d.ts.map +0 -1
  37. package/dist-es5/FlowLinesLayer/index.js +0 -8
  38. package/dist-es5/FlowmapLayer.d.ts +0 -79
  39. package/dist-es5/FlowmapLayer.d.ts.map +0 -1
  40. package/dist-es5/FlowmapLayer.js +0 -476
  41. package/dist-es5/index.d.ts +0 -7
  42. package/dist-es5/index.d.ts.map +0 -1
  43. package/dist-es5/index.js +0 -26
  44. package/dist-es5/types.d.ts +0 -36
  45. package/dist-es5/types.d.ts.map +0 -1
  46. package/dist-es5/types.js +0 -23
  47. package/tsconfig.es5.json +0 -11
@@ -1,476 +0,0 @@
1
- "use strict";
2
- var __extends = (this && this.__extends) || (function () {
3
- var extendStatics = function (d, b) {
4
- extendStatics = Object.setPrototypeOf ||
5
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
- function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
- return extendStatics(d, b);
8
- };
9
- return function (d, b) {
10
- if (typeof b !== "function" && b !== null)
11
- throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
- extendStatics(d, b);
13
- function __() { this.constructor = d; }
14
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
- };
16
- })();
17
- var __assign = (this && this.__assign) || function () {
18
- __assign = Object.assign || function(t) {
19
- for (var s, i = 1, n = arguments.length; i < n; i++) {
20
- s = arguments[i];
21
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
22
- t[p] = s[p];
23
- }
24
- return t;
25
- };
26
- return __assign.apply(this, arguments);
27
- };
28
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
29
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
30
- return new (P || (P = Promise))(function (resolve, reject) {
31
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
32
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
33
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
34
- step((generator = generator.apply(thisArg, _arguments || [])).next());
35
- });
36
- };
37
- var __generator = (this && this.__generator) || function (thisArg, body) {
38
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
39
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
40
- function verb(n) { return function (v) { return step([n, v]); }; }
41
- function step(op) {
42
- if (f) throw new TypeError("Generator is already executing.");
43
- while (_) try {
44
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
45
- if (y = 0, t) op = [op[0] & 2, t.value];
46
- switch (op[0]) {
47
- case 0: case 1: t = op; break;
48
- case 4: _.label++; return { value: op[1], done: false };
49
- case 5: _.label++; y = op[1]; op = [0]; continue;
50
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
51
- default:
52
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
53
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
54
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
55
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
56
- if (t[2]) _.ops.pop();
57
- _.trys.pop(); continue;
58
- }
59
- op = body.call(thisArg, _);
60
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
61
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
62
- }
63
- };
64
- var __read = (this && this.__read) || function (o, n) {
65
- var m = typeof Symbol === "function" && o[Symbol.iterator];
66
- if (!m) return o;
67
- var i = m.call(o), r, ar = [], e;
68
- try {
69
- while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
70
- }
71
- catch (error) { e = { error: error }; }
72
- finally {
73
- try {
74
- if (r && !r.done && (m = i["return"])) m.call(i);
75
- }
76
- finally { if (e) throw e.error; }
77
- }
78
- return ar;
79
- };
80
- var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
81
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
82
- if (ar || !(i in from)) {
83
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
84
- ar[i] = from[i];
85
- }
86
- }
87
- return to.concat(ar || Array.prototype.slice.call(from));
88
- };
89
- var __importDefault = (this && this.__importDefault) || function (mod) {
90
- return (mod && mod.__esModule) ? mod : { "default": mod };
91
- };
92
- Object.defineProperty(exports, "__esModule", { value: true });
93
- /*
94
- * Copyright 2022 FlowmapBlue
95
- *
96
- * Licensed under the Apache License, Version 2.0 (the "License");
97
- * you may not use this file except in compliance with the License.
98
- * You may obtain a copy of the License at
99
- *
100
- * http://www.apache.org/licenses/LICENSE-2.0
101
- *
102
- * Unless required by applicable law or agreed to in writing, software
103
- * distributed under the License is distributed on an "AS IS" BASIS,
104
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
105
- * See the License for the specific language governing permissions and
106
- * limitations under the License.
107
- *
108
- */
109
- var core_1 = require("@deck.gl/core");
110
- var layers_1 = require("@deck.gl/layers");
111
- var data_1 = require("@flowmap.gl/data");
112
- var AnimatedFlowLinesLayer_1 = __importDefault(require("./AnimatedFlowLinesLayer"));
113
- var FlowCirclesLayer_1 = __importDefault(require("./FlowCirclesLayer"));
114
- var FlowLinesLayer_1 = __importDefault(require("./FlowLinesLayer"));
115
- var types_1 = require("./types");
116
- var HighlightType;
117
- (function (HighlightType) {
118
- HighlightType["LOCATION"] = "location";
119
- HighlightType["FLOW"] = "flow";
120
- })(HighlightType || (HighlightType = {}));
121
- var FlowmapLayer = /** @class */ (function (_super) {
122
- __extends(FlowmapLayer, _super);
123
- function FlowmapLayer(props) {
124
- var _this = _super.call(this, __assign(__assign({}, props), { dataProvider: {
125
- // To avoid deck.gl props diffing on comlink worker proxy causing an exception
126
- dataProvider: props.dataProvider,
127
- }, onHover: function (info, event) {
128
- // TODO: if (lastHoverEventStartTimeRef > startTime) {
129
- // // Skipping, because this is not the latest hover event
130
- // return;
131
- // }
132
- _this.setState({ highlightedObject: _this._getHighlightedObject(info) });
133
- var onHover = props.onHover;
134
- if (onHover) {
135
- _this._getFlowmapLayerPickingInfo(info).then(function (info) {
136
- _this.setState({ pickingInfo: info });
137
- onHover(info, event);
138
- });
139
- }
140
- }, onClick: function (info, event) {
141
- var onClick = props.onClick;
142
- if (onClick) {
143
- _this._getFlowmapLayerPickingInfo(info).then(function (info) {
144
- _this.setState({ pickingInfo: info });
145
- if (info) {
146
- onClick(info, event);
147
- }
148
- });
149
- }
150
- } })) || this;
151
- return _this;
152
- }
153
- FlowmapLayer.prototype.initializeState = function () {
154
- this.state = {
155
- accessors: new data_1.FlowmapAggregateAccessors(this.props),
156
- dataProvider: this._getOrMakeDataProvider(),
157
- layersData: undefined,
158
- highlightedObject: undefined,
159
- pickingInfo: undefined,
160
- };
161
- };
162
- FlowmapLayer.prototype.getPickingInfo = function (_a) {
163
- var _b, _c;
164
- var info = _a.info;
165
- // This is for onHover event handlers set on the <DeckGL> component
166
- if (!info.object) {
167
- var object = (_c = (_b = this.state) === null || _b === void 0 ? void 0 : _b.pickingInfo) === null || _c === void 0 ? void 0 : _c.object;
168
- if (object) {
169
- return __assign(__assign({}, info), { object: object, picked: true });
170
- }
171
- }
172
- return info;
173
- };
174
- FlowmapLayer.prototype._updateAccessors = function () {
175
- var _a, _b;
176
- (_b = (_a = this.state) === null || _a === void 0 ? void 0 : _a.dataProvider) === null || _b === void 0 ? void 0 : _b.setAccessors(this.props);
177
- this.setState({ accessors: new data_1.FlowmapAggregateAccessors(this.props) });
178
- };
179
- FlowmapLayer.prototype._getOrMakeDataProvider = function () {
180
- var _a = this.props, data = _a.data, dataProvider = _a.dataProvider;
181
- if ((0, data_1.isFlowmapDataProvider)(dataProvider === null || dataProvider === void 0 ? void 0 : dataProvider.dataProvider)) {
182
- return dataProvider.dataProvider;
183
- }
184
- else if ((0, data_1.isFlowmapData)(data)) {
185
- var dataProvider_1 = new data_1.LocalFlowmapDataProvider(this.props);
186
- dataProvider_1.setFlowmapData(data);
187
- return dataProvider_1;
188
- }
189
- throw new Error('FlowmapLayer: data must be a FlowmapDataProvider or FlowmapData');
190
- };
191
- FlowmapLayer.prototype._updateDataProvider = function () {
192
- this.setState({ dataProvider: this._getOrMakeDataProvider() });
193
- };
194
- FlowmapLayer.prototype.shouldUpdateState = function (params) {
195
- var changeFlags = params.changeFlags;
196
- // if (this._viewportChanged()) {
197
- // return true;
198
- // }
199
- if (changeFlags.viewportChanged) {
200
- return true;
201
- }
202
- return _super.prototype.shouldUpdateState.call(this, params);
203
- // TODO: be smarter on when to update
204
- // (e.g. ignore viewport changes when adaptiveScalesEnabled and clustering are false)
205
- };
206
- FlowmapLayer.prototype.updateState = function (_a) {
207
- var _this = this;
208
- var oldProps = _a.oldProps, props = _a.props, changeFlags = _a.changeFlags;
209
- var _b = this.state || {}, dataProvider = _b.dataProvider, highlightedObject = _b.highlightedObject;
210
- if (!dataProvider) {
211
- return;
212
- }
213
- if (changeFlags.propsChanged) {
214
- // this._updateAccessors();
215
- }
216
- if (changeFlags.dataChanged) {
217
- this._updateDataProvider();
218
- }
219
- if (changeFlags.viewportChanged || changeFlags.dataChanged) {
220
- this.setState({
221
- highlightedObject: undefined,
222
- });
223
- }
224
- if (changeFlags.viewportChanged ||
225
- changeFlags.propsOrDataChanged // TODO can we ignore accessor props changes?
226
- ) {
227
- dataProvider.setFlowmapState(this._getFlowmapState());
228
- (function () { return __awaiter(_this, void 0, void 0, function () {
229
- var layersData;
230
- return __generator(this, function (_a) {
231
- switch (_a.label) {
232
- case 0: return [4 /*yield*/, dataProvider.getLayersData()];
233
- case 1:
234
- layersData = _a.sent();
235
- this.setState({ layersData: layersData });
236
- return [2 /*return*/];
237
- }
238
- });
239
- }); })();
240
- }
241
- };
242
- FlowmapLayer.prototype._getSettingsState = function () {
243
- var _a = this.props, locationTotalsEnabled = _a.locationTotalsEnabled, adaptiveScalesEnabled = _a.adaptiveScalesEnabled, animationEnabled = _a.animationEnabled, clusteringEnabled = _a.clusteringEnabled, clusteringLevel = _a.clusteringLevel, fadeEnabled = _a.fadeEnabled, fadeOpacityEnabled = _a.fadeOpacityEnabled, clusteringAuto = _a.clusteringAuto, darkMode = _a.darkMode, fadeAmount = _a.fadeAmount, colorScheme = _a.colorScheme, highlightColor = _a.highlightColor, maxTopFlowsDisplayNum = _a.maxTopFlowsDisplayNum;
244
- return {
245
- locationTotalsEnabled: locationTotalsEnabled,
246
- adaptiveScalesEnabled: adaptiveScalesEnabled,
247
- animationEnabled: animationEnabled,
248
- clusteringEnabled: clusteringEnabled,
249
- clusteringLevel: clusteringLevel,
250
- fadeEnabled: fadeEnabled,
251
- fadeOpacityEnabled: fadeOpacityEnabled,
252
- clusteringAuto: clusteringAuto,
253
- darkMode: darkMode,
254
- fadeAmount: fadeAmount,
255
- colorScheme: colorScheme,
256
- highlightColor: highlightColor,
257
- maxTopFlowsDisplayNum: maxTopFlowsDisplayNum,
258
- };
259
- };
260
- FlowmapLayer.prototype._getFlowmapState = function () {
261
- return {
262
- viewport: pickViewportProps(this.context.viewport),
263
- filterState: {
264
- selectedLocations: undefined,
265
- locationFilterMode: data_1.LocationFilterMode.ALL,
266
- selectedTimeRange: undefined,
267
- },
268
- settingsState: this._getSettingsState(),
269
- };
270
- };
271
- FlowmapLayer.prototype._getFlowmapLayerPickingInfo = function (info) {
272
- var _a;
273
- return __awaiter(this, void 0, void 0, function () {
274
- var index, sourceLayer, _b, dataProvider, accessors, commonInfo, flow, _c, origin_1, dest, location_1, _d, id, name_1, totals, circleAttributes, circleRadius;
275
- return __generator(this, function (_e) {
276
- switch (_e.label) {
277
- case 0:
278
- index = info.index, sourceLayer = info.sourceLayer;
279
- _b = this.state || {}, dataProvider = _b.dataProvider, accessors = _b.accessors;
280
- if (!dataProvider || !accessors) {
281
- return [2 /*return*/, undefined];
282
- }
283
- commonInfo = __assign(__assign({}, info), { picked: info.picked, layer: info.layer, index: info.index, x: info.x, y: info.y, coordinate: info.coordinate, event: info.event });
284
- if (!(sourceLayer instanceof FlowLinesLayer_1.default ||
285
- sourceLayer instanceof AnimatedFlowLinesLayer_1.default)) return [3 /*break*/, 7];
286
- if (!(index === -1)) return [3 /*break*/, 1];
287
- _c = undefined;
288
- return [3 /*break*/, 3];
289
- case 1: return [4 /*yield*/, dataProvider.getFlowByIndex(index)];
290
- case 2:
291
- _c = _e.sent();
292
- _e.label = 3;
293
- case 3:
294
- flow = _c;
295
- if (!flow) return [3 /*break*/, 6];
296
- return [4 /*yield*/, dataProvider.getLocationById(accessors.getFlowOriginId(flow))];
297
- case 4:
298
- origin_1 = _e.sent();
299
- return [4 /*yield*/, dataProvider.getLocationById(accessors.getFlowDestId(flow))];
300
- case 5:
301
- dest = _e.sent();
302
- if (origin_1 && dest) {
303
- return [2 /*return*/, __assign(__assign({}, commonInfo), { object: {
304
- type: types_1.PickingType.FLOW,
305
- flow: flow,
306
- origin: origin_1,
307
- dest: dest,
308
- count: accessors.getFlowMagnitude(flow),
309
- } })];
310
- }
311
- _e.label = 6;
312
- case 6: return [3 /*break*/, 12];
313
- case 7:
314
- if (!(sourceLayer instanceof FlowCirclesLayer_1.default)) return [3 /*break*/, 12];
315
- if (!(index === -1)) return [3 /*break*/, 8];
316
- _d = undefined;
317
- return [3 /*break*/, 10];
318
- case 8: return [4 /*yield*/, dataProvider.getLocationByIndex(index)];
319
- case 9:
320
- _d = _e.sent();
321
- _e.label = 10;
322
- case 10:
323
- location_1 = _d;
324
- if (!location_1) return [3 /*break*/, 12];
325
- id = accessors.getLocationId(location_1);
326
- name_1 = accessors.getLocationName(location_1);
327
- return [4 /*yield*/, dataProvider.getTotalsForLocation(id)];
328
- case 11:
329
- totals = _e.sent();
330
- circleAttributes = (((_a = this.state) === null || _a === void 0 ? void 0 : _a.layersData) || {}).circleAttributes;
331
- if (totals && circleAttributes) {
332
- circleRadius = (0, data_1.getOuterCircleRadiusByIndex)(circleAttributes, info.index);
333
- return [2 /*return*/, __assign(__assign({}, commonInfo), { object: {
334
- type: types_1.PickingType.LOCATION,
335
- location: location_1,
336
- id: id,
337
- name: name_1,
338
- totals: totals,
339
- circleRadius: circleRadius,
340
- } })];
341
- }
342
- _e.label = 12;
343
- case 12: return [2 /*return*/, undefined];
344
- }
345
- });
346
- });
347
- };
348
- FlowmapLayer.prototype._getHighlightedObject = function (info) {
349
- var _a, _b;
350
- var index = info.index, sourceLayer = info.sourceLayer;
351
- if (index < 0)
352
- return undefined;
353
- if (sourceLayer instanceof FlowLinesLayer_1.default ||
354
- sourceLayer instanceof AnimatedFlowLinesLayer_1.default) {
355
- var lineAttributes = (((_a = this.state) === null || _a === void 0 ? void 0 : _a.layersData) || {}).lineAttributes;
356
- if (lineAttributes) {
357
- var attrs = (0, data_1.getFlowLineAttributesByIndex)(lineAttributes, index);
358
- if (this.props.fadeOpacityEnabled) {
359
- attrs = __assign(__assign({}, attrs), { attributes: __assign(__assign({}, attrs.attributes), { getColor: __assign(__assign({}, attrs.attributes.getColor), { value: new Uint8Array(__spreadArray(__spreadArray([], __read(attrs.attributes.getColor.value.slice(0, 3)), false), [
360
- 255, // the highlight color should be always opaque
361
- ], false)) }) }) });
362
- }
363
- return {
364
- type: HighlightType.FLOW,
365
- lineAttributes: attrs,
366
- };
367
- }
368
- }
369
- else if (sourceLayer instanceof FlowCirclesLayer_1.default) {
370
- var circleAttributes = (((_b = this.state) === null || _b === void 0 ? void 0 : _b.layersData) || {}).circleAttributes;
371
- if (circleAttributes) {
372
- return {
373
- type: HighlightType.LOCATION,
374
- coords: (0, data_1.getLocationCoordsByIndex)(circleAttributes, index),
375
- radius: (0, data_1.getOuterCircleRadiusByIndex)(circleAttributes, index),
376
- };
377
- }
378
- }
379
- return undefined;
380
- };
381
- FlowmapLayer.prototype.renderLayers = function () {
382
- var _a;
383
- var layers = [];
384
- if ((_a = this.state) === null || _a === void 0 ? void 0 : _a.layersData) {
385
- var _b = this.state, layersData = _b.layersData, highlightedObject = _b.highlightedObject;
386
- var _c = layersData || {}, circleAttributes = _c.circleAttributes, lineAttributes = _c.lineAttributes;
387
- if (circleAttributes && lineAttributes) {
388
- var flowmapColors = (0, data_1.getFlowmapColors)(this._getSettingsState());
389
- var outlineColor = (0, data_1.colorAsRgba)(flowmapColors.outlineColor || (this.props.darkMode ? '#000' : '#fff'));
390
- var commonLineLayerProps = {
391
- data: lineAttributes,
392
- parameters: __assign(__assign({}, this.props.parameters), {
393
- // prevent z-fighting at non-zero bearing/pitch
394
- depthTest: false }),
395
- };
396
- if (this.props.animationEnabled) {
397
- layers.push(
398
- // @ts-ignore
399
- new AnimatedFlowLinesLayer_1.default(__assign({}, this.getSubLayerProps(__assign(__assign({}, commonLineLayerProps), { id: 'animated-flow-lines', drawOutline: false, thicknessUnit: 20 })))));
400
- }
401
- else {
402
- layers.push(new FlowLinesLayer_1.default(__assign({}, this.getSubLayerProps(__assign(__assign({}, commonLineLayerProps), { id: 'flow-lines', drawOutline: true, outlineColor: outlineColor })))));
403
- }
404
- layers.push(new FlowCirclesLayer_1.default(this.getSubLayerProps({
405
- id: 'circles',
406
- data: circleAttributes,
407
- emptyColor: this.props.darkMode
408
- ? [0, 0, 0, 255]
409
- : [255, 255, 255, 255],
410
- outlineEmptyMix: 0.4,
411
- })));
412
- if (highlightedObject) {
413
- switch (highlightedObject.type) {
414
- case HighlightType.LOCATION:
415
- layers.push(new layers_1.ScatterplotLayer(__assign({}, this.getSubLayerProps({
416
- id: 'location-highlight',
417
- data: [highlightedObject],
418
- pickable: false,
419
- antialiasing: true,
420
- stroked: true,
421
- filled: false,
422
- lineWidthUnits: 'pixels',
423
- getLineWidth: 2,
424
- radiusUnits: 'pixels',
425
- getRadius: function (d) { return d.radius; },
426
- getLineColor: (0, data_1.colorAsRgba)(this.props.highlightColor),
427
- getPosition: function (d) { return d.coords; },
428
- }))));
429
- break;
430
- case HighlightType.FLOW:
431
- layers.push(new FlowLinesLayer_1.default(__assign({}, this.getSubLayerProps({
432
- id: 'flow-highlight',
433
- data: highlightedObject.lineAttributes,
434
- drawOutline: true,
435
- pickable: false,
436
- outlineColor: (0, data_1.colorAsRgba)(this.props.highlightColor),
437
- outlineThickness: 1,
438
- }))));
439
- break;
440
- }
441
- }
442
- }
443
- }
444
- return layers;
445
- };
446
- FlowmapLayer.defaultProps = {
447
- darkMode: true,
448
- fadeAmount: 50,
449
- locationTotalsEnabled: true,
450
- animationEnabled: false,
451
- clusteringEnabled: true,
452
- fadeEnabled: true,
453
- fadeOpacityEnabled: false,
454
- clusteringAuto: true,
455
- clusteringLevel: undefined,
456
- adaptiveScalesEnabled: true,
457
- colorScheme: 'Teal',
458
- highlightColor: 'orange',
459
- maxTopFlowsDisplayNum: 5000,
460
- };
461
- return FlowmapLayer;
462
- }(core_1.CompositeLayer));
463
- exports.default = FlowmapLayer;
464
- function pickViewportProps(viewport) {
465
- var width = viewport.width, height = viewport.height, longitude = viewport.longitude, latitude = viewport.latitude, zoom = viewport.zoom, pitch = viewport.pitch, bearing = viewport.bearing;
466
- return {
467
- width: width,
468
- height: height,
469
- longitude: longitude,
470
- latitude: latitude,
471
- zoom: zoom,
472
- pitch: pitch,
473
- bearing: bearing,
474
- };
475
- }
476
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmxvd21hcExheWVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL0Zsb3dtYXBMYXllci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUNILHNDQUE2QztBQUM3QywwQ0FBaUQ7QUFDakQseUNBaUIwQjtBQUMxQixvRkFBOEQ7QUFDOUQsd0VBQWtEO0FBQ2xELG9FQUE4QztBQUM5QyxpQ0FLaUI7QUEwQmpCLElBQUssYUFHSjtBQUhELFdBQUssYUFBYTtJQUNoQixzQ0FBcUIsQ0FBQTtJQUNyQiw4QkFBYSxDQUFBO0FBQ2YsQ0FBQyxFQUhJLGFBQWEsS0FBYixhQUFhLFFBR2pCO0FBeUJEO0lBQWdELGdDQUFjO0lBa0I1RCxzQkFBbUIsS0FBOEI7UUFBakQsWUFDRSx3Q0FDSyxLQUFLLEtBQ1IsWUFBWSxFQUFFO2dCQUNaLDhFQUE4RTtnQkFDOUUsWUFBWSxFQUFFLEtBQUssQ0FBQyxZQUFZO2FBQ2pDLEVBQ0QsT0FBTyxFQUFFLFVBQUMsSUFBc0IsRUFBRSxLQUFrQjtnQkFDbEQsc0RBQXNEO2dCQUN0RCw0REFBNEQ7Z0JBQzVELFlBQVk7Z0JBQ1osSUFBSTtnQkFDSixLQUFJLENBQUMsUUFBUSxDQUFDLEVBQUMsaUJBQWlCLEVBQUUsS0FBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxFQUFDLENBQUMsQ0FBQztnQkFDOUQsSUFBQSxPQUFPLEdBQUksS0FBSyxRQUFULENBQVU7Z0JBQ3hCLElBQUksT0FBTyxFQUFFO29CQUNYLEtBQUksQ0FBQywyQkFBMkIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBQyxJQUFJO3dCQUMvQyxLQUFJLENBQUMsUUFBUSxDQUFDLEVBQUMsV0FBVyxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7d0JBQ25DLE9BQU8sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7b0JBQ3ZCLENBQUMsQ0FBQyxDQUFDO2lCQUNKO1lBQ0gsQ0FBQyxFQUNELE9BQU8sRUFBRSxVQUFDLElBQXNCLEVBQUUsS0FBa0I7Z0JBQzNDLElBQUEsT0FBTyxHQUFJLEtBQUssUUFBVCxDQUFVO2dCQUN4QixJQUFJLE9BQU8sRUFBRTtvQkFDWCxLQUFJLENBQUMsMkJBQTJCLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQUMsSUFBSTt3QkFDL0MsS0FBSSxDQUFDLFFBQVEsQ0FBQyxFQUFDLFdBQVcsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO3dCQUNuQyxJQUFJLElBQUksRUFBRTs0QkFDUixPQUFPLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO3lCQUN0QjtvQkFDSCxDQUFDLENBQUMsQ0FBQztpQkFDSjtZQUNILENBQUMsSUFDRCxTQUNIOztJQUFELENBQUM7SUFFRCxzQ0FBZSxHQUFmO1FBQ0UsSUFBSSxDQUFDLEtBQUssR0FBRztZQUNYLFNBQVMsRUFBRSxJQUFJLGdDQUF5QixDQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7WUFDMUQsWUFBWSxFQUFFLElBQUksQ0FBQyxzQkFBc0IsRUFBRTtZQUMzQyxVQUFVLEVBQUUsU0FBUztZQUNyQixpQkFBaUIsRUFBRSxTQUFTO1lBQzVCLFdBQVcsRUFBRSxTQUFTO1NBQ3ZCLENBQUM7SUFDSixDQUFDO0lBRUQscUNBQWMsR0FBZCxVQUFlLEVBQTJCOztZQUExQixJQUFJLFVBQUE7UUFDbEIsbUVBQW1FO1FBQ25FLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2hCLElBQU0sTUFBTSxHQUFHLE1BQUEsTUFBQSxJQUFJLENBQUMsS0FBSywwQ0FBRSxXQUFXLDBDQUFFLE1BQU0sQ0FBQztZQUMvQyxJQUFJLE1BQU0sRUFBRTtnQkFDViw2QkFDSyxJQUFJLEtBQ1AsTUFBTSxRQUFBLEVBQ04sTUFBTSxFQUFFLElBQUksSUFDWjthQUNIO1NBQ0Y7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTyx1Q0FBZ0IsR0FBeEI7O1FBQ0UsTUFBQSxNQUFBLElBQUksQ0FBQyxLQUFLLDBDQUFFLFlBQVksMENBQUUsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUMsU0FBUyxFQUFFLElBQUksZ0NBQXlCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFDLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRU8sNkNBQXNCLEdBQTlCO1FBQ1EsSUFBQSxLQUF1QixJQUFJLENBQUMsS0FBSyxFQUFoQyxJQUFJLFVBQUEsRUFBRSxZQUFZLGtCQUFjLENBQUM7UUFDeEMsSUFBSSxJQUFBLDRCQUFxQixFQUFPLFlBQVksYUFBWixZQUFZLHVCQUFaLFlBQVksQ0FBRSxZQUFZLENBQUMsRUFBRTtZQUMzRCxPQUFPLFlBQVksQ0FBQyxZQUFZLENBQUM7U0FDbEM7YUFBTSxJQUFJLElBQUEsb0JBQWEsRUFBTyxJQUFJLENBQUMsRUFBRTtZQUNwQyxJQUFNLGNBQVksR0FBRyxJQUFJLCtCQUF3QixDQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNwRSxjQUFZLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2xDLE9BQU8sY0FBWSxDQUFDO1NBQ3JCO1FBQ0QsTUFBTSxJQUFJLEtBQUssQ0FDYixpRUFBaUUsQ0FDbEUsQ0FBQztJQUNKLENBQUM7SUFFTywwQ0FBbUIsR0FBM0I7UUFDRSxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxFQUFDLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRUQsd0NBQWlCLEdBQWpCLFVBQWtCLE1BQTJCO1FBQ3BDLElBQUEsV0FBVyxHQUFJLE1BQU0sWUFBVixDQUFXO1FBQzdCLGlDQUFpQztRQUNqQyxpQkFBaUI7UUFDakIsSUFBSTtRQUNKLElBQUksV0FBVyxDQUFDLGVBQWUsRUFBRTtZQUMvQixPQUFPLElBQUksQ0FBQztTQUNiO1FBQ0QsT0FBTyxpQkFBTSxpQkFBaUIsWUFBQyxNQUFNLENBQUMsQ0FBQztRQUN2QyxxQ0FBcUM7UUFDckMscUZBQXFGO0lBQ3ZGLENBQUM7SUFFRCxrQ0FBVyxHQUFYLFVBQVksRUFBbUQ7UUFBL0QsaUJBNEJDO1lBNUJZLFFBQVEsY0FBQSxFQUFFLEtBQUssV0FBQSxFQUFFLFdBQVcsaUJBQUE7UUFDakMsSUFBQSxLQUFvQyxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUUsRUFBbkQsWUFBWSxrQkFBQSxFQUFFLGlCQUFpQix1QkFBb0IsQ0FBQztRQUMzRCxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ2pCLE9BQU87U0FDUjtRQUVELElBQUksV0FBVyxDQUFDLFlBQVksRUFBRTtZQUM1QiwyQkFBMkI7U0FDNUI7UUFDRCxJQUFJLFdBQVcsQ0FBQyxXQUFXLEVBQUU7WUFDM0IsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7U0FDNUI7UUFDRCxJQUFJLFdBQVcsQ0FBQyxlQUFlLElBQUksV0FBVyxDQUFDLFdBQVcsRUFBRTtZQUMxRCxJQUFJLENBQUMsUUFBUSxDQUFDO2dCQUNaLGlCQUFpQixFQUFFLFNBQVM7YUFDN0IsQ0FBQyxDQUFDO1NBQ0o7UUFFRCxJQUNFLFdBQVcsQ0FBQyxlQUFlO1lBQzNCLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyw2Q0FBNkM7VUFDNUU7WUFDQSxZQUFZLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7WUFDdEQsQ0FBQzs7OztnQ0FDb0IscUJBQU0sWUFBWSxDQUFDLGFBQWEsRUFBRSxFQUFBOzs0QkFBL0MsVUFBVSxHQUFHLFNBQWtDOzRCQUNyRCxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUMsVUFBVSxZQUFBLEVBQUMsQ0FBQyxDQUFDOzs7O2lCQUM3QixDQUFDLEVBQUUsQ0FBQztTQUNOO0lBQ0gsQ0FBQztJQUVPLHdDQUFpQixHQUF6QjtRQUNRLElBQUEsS0FjRixJQUFJLENBQUMsS0FBSyxFQWJaLHFCQUFxQiwyQkFBQSxFQUNyQixxQkFBcUIsMkJBQUEsRUFDckIsZ0JBQWdCLHNCQUFBLEVBQ2hCLGlCQUFpQix1QkFBQSxFQUNqQixlQUFlLHFCQUFBLEVBQ2YsV0FBVyxpQkFBQSxFQUNYLGtCQUFrQix3QkFBQSxFQUNsQixjQUFjLG9CQUFBLEVBQ2QsUUFBUSxjQUFBLEVBQ1IsVUFBVSxnQkFBQSxFQUNWLFdBQVcsaUJBQUEsRUFDWCxjQUFjLG9CQUFBLEVBQ2QscUJBQXFCLDJCQUNULENBQUM7UUFDZixPQUFPO1lBQ0wscUJBQXFCLHVCQUFBO1lBQ3JCLHFCQUFxQix1QkFBQTtZQUNyQixnQkFBZ0Isa0JBQUE7WUFDaEIsaUJBQWlCLG1CQUFBO1lBQ2pCLGVBQWUsaUJBQUE7WUFDZixXQUFXLGFBQUE7WUFDWCxrQkFBa0Isb0JBQUE7WUFDbEIsY0FBYyxnQkFBQTtZQUNkLFFBQVEsVUFBQTtZQUNSLFVBQVUsWUFBQTtZQUNWLFdBQVcsYUFBQTtZQUNYLGNBQWMsZ0JBQUE7WUFDZCxxQkFBcUIsdUJBQUE7U0FDdEIsQ0FBQztJQUNKLENBQUM7SUFFTyx1Q0FBZ0IsR0FBeEI7UUFDRSxPQUFPO1lBQ0wsUUFBUSxFQUFFLGlCQUFpQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDO1lBQ2xELFdBQVcsRUFBRTtnQkFDWCxpQkFBaUIsRUFBRSxTQUFTO2dCQUM1QixrQkFBa0IsRUFBRSx5QkFBa0IsQ0FBQyxHQUFHO2dCQUMxQyxpQkFBaUIsRUFBRSxTQUFTO2FBQzdCO1lBQ0QsYUFBYSxFQUFFLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtTQUN4QyxDQUFDO0lBQ0osQ0FBQztJQUVhLGtEQUEyQixHQUF6QyxVQUNFLElBQXlCOzs7Ozs7O3dCQUVsQixLQUFLLEdBQWlCLElBQUksTUFBckIsRUFBRSxXQUFXLEdBQUksSUFBSSxZQUFSLENBQVM7d0JBQzVCLEtBQTRCLElBQUksQ0FBQyxLQUFLLElBQUksRUFBRSxFQUEzQyxZQUFZLGtCQUFBLEVBQUUsU0FBUyxlQUFBLENBQXFCO3dCQUNuRCxJQUFJLENBQUMsWUFBWSxJQUFJLENBQUMsU0FBUyxFQUFFOzRCQUMvQixzQkFBTyxTQUFTLEVBQUM7eUJBQ2xCO3dCQUNLLFVBQVUseUJBQ1gsSUFBSSxLQUNQLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxFQUNuQixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFDakIsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQ2pCLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUNULENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUNULFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUMzQixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssR0FDbEIsQ0FBQzs2QkFFQSxDQUFBLFdBQVcsWUFBWSx3QkFBYzs0QkFDckMsV0FBVyxZQUFZLGdDQUFzQixDQUFBLEVBRDdDLHdCQUM2Qzs2QkFHM0MsQ0FBQSxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUEsRUFBWix3QkFBWTt3QkFBRyxLQUFBLFNBQVMsQ0FBQTs7NEJBQUcscUJBQU0sWUFBWSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsRUFBQTs7d0JBQXhDLEtBQUEsU0FBd0MsQ0FBQTs7O3dCQUQvRCxJQUFJLEtBQzJEOzZCQUNqRSxJQUFJLEVBQUosd0JBQUk7d0JBQ1MscUJBQU0sWUFBWSxDQUFDLGVBQWUsQ0FDL0MsU0FBUyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FDaEMsRUFBQTs7d0JBRkssV0FBUyxTQUVkO3dCQUNZLHFCQUFNLFlBQVksQ0FBQyxlQUFlLENBQzdDLFNBQVMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQzlCLEVBQUE7O3dCQUZLLElBQUksR0FBRyxTQUVaO3dCQUNELElBQUksUUFBTSxJQUFJLElBQUksRUFBRTs0QkFDbEIsNENBQ0ssVUFBVSxLQUNiLE1BQU0sRUFBRTt3Q0FDTixJQUFJLEVBQUUsbUJBQVcsQ0FBQyxJQUFJO3dDQUN0QixJQUFJLE1BQUE7d0NBQ0osTUFBTSxFQUFFLFFBQU07d0NBQ2QsSUFBSSxFQUFFLElBQUk7d0NBQ1YsS0FBSyxFQUFFLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUM7cUNBQ3hDLEtBQ0Q7eUJBQ0g7Ozs7NkJBRU0sQ0FBQSxXQUFXLFlBQVksMEJBQWdCLENBQUEsRUFBdkMseUJBQXVDOzZCQUU5QyxDQUFBLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQSxFQUFaLHdCQUFZO3dCQUFHLEtBQUEsU0FBUyxDQUFBOzs0QkFBRyxxQkFBTSxZQUFZLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLEVBQUE7O3dCQUE1QyxLQUFBLFNBQTRDLENBQUE7Ozt3QkFEbkUsZUFDbUU7NkJBRXJFLFVBQVEsRUFBUix5QkFBUTt3QkFDSixFQUFFLEdBQUcsU0FBUyxDQUFDLGFBQWEsQ0FBQyxVQUFRLENBQUMsQ0FBQzt3QkFDdkMsU0FBTyxTQUFTLENBQUMsZUFBZSxDQUFDLFVBQVEsQ0FBQyxDQUFDO3dCQUNsQyxxQkFBTSxZQUFZLENBQUMsb0JBQW9CLENBQUMsRUFBRSxDQUFDLEVBQUE7O3dCQUFwRCxNQUFNLEdBQUcsU0FBMkM7d0JBQ25ELGdCQUFnQixHQUFJLENBQUEsQ0FBQSxNQUFBLElBQUksQ0FBQyxLQUFLLDBDQUFFLFVBQVUsS0FBSSxFQUFFLENBQUEsaUJBQWhDLENBQWlDO3dCQUN4RCxJQUFJLE1BQU0sSUFBSSxnQkFBZ0IsRUFBRTs0QkFDeEIsWUFBWSxHQUFHLElBQUEsa0NBQTJCLEVBQzlDLGdCQUFnQixFQUNoQixJQUFJLENBQUMsS0FBSyxDQUNYLENBQUM7NEJBQ0YsNENBQ0ssVUFBVSxLQUNiLE1BQU0sRUFBRTt3Q0FDTixJQUFJLEVBQUUsbUJBQVcsQ0FBQyxRQUFRO3dDQUMxQixRQUFRLFlBQUE7d0NBQ1IsRUFBRSxJQUFBO3dDQUNGLElBQUksUUFBQTt3Q0FDSixNQUFNLFFBQUE7d0NBQ04sWUFBWSxFQUFFLFlBQVk7cUNBQzNCLEtBQ0Q7eUJBQ0g7OzZCQUlMLHNCQUFPLFNBQVMsRUFBQzs7OztLQUNsQjtJQUVPLDRDQUFxQixHQUE3QixVQUNFLElBQXlCOztRQUVsQixJQUFBLEtBQUssR0FBaUIsSUFBSSxNQUFyQixFQUFFLFdBQVcsR0FBSSxJQUFJLFlBQVIsQ0FBUztRQUNsQyxJQUFJLEtBQUssR0FBRyxDQUFDO1lBQUUsT0FBTyxTQUFTLENBQUM7UUFDaEMsSUFDRSxXQUFXLFlBQVksd0JBQWM7WUFDckMsV0FBVyxZQUFZLGdDQUFzQixFQUM3QztZQUNPLElBQUEsY0FBYyxHQUFJLENBQUEsQ0FBQSxNQUFBLElBQUksQ0FBQyxLQUFLLDBDQUFFLFVBQVUsS0FBSSxFQUFFLENBQUEsZUFBaEMsQ0FBaUM7WUFDdEQsSUFBSSxjQUFjLEVBQUU7Z0JBQ2xCLElBQUksS0FBSyxHQUFHLElBQUEsbUNBQTRCLEVBQUMsY0FBYyxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUNoRSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsa0JBQWtCLEVBQUU7b0JBQ2pDLEtBQUsseUJBQ0EsS0FBSyxLQUNSLFVBQVUsd0JBQ0wsS0FBSyxDQUFDLFVBQVUsS0FDbkIsUUFBUSx3QkFDSCxLQUFLLENBQUMsVUFBVSxDQUFDLFFBQVEsS0FDNUIsS0FBSyxFQUFFLElBQUksVUFBVSx3Q0FDaEIsS0FBSyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO29DQUM5QyxHQUFHLEVBQUUsOENBQThDOzBDQUNuRCxTQUdQLENBQUM7aUJBQ0g7Z0JBQ0QsT0FBTztvQkFDTCxJQUFJLEVBQUUsYUFBYSxDQUFDLElBQUk7b0JBQ3hCLGNBQWMsRUFBRSxLQUFLO2lCQUN0QixDQUFDO2FBQ0g7U0FDRjthQUFNLElBQUksV0FBVyxZQUFZLDBCQUFnQixFQUFFO1lBQzNDLElBQUEsZ0JBQWdCLEdBQUksQ0FBQSxDQUFBLE1BQUEsSUFBSSxDQUFDLEtBQUssMENBQUUsVUFBVSxLQUFJLEVBQUUsQ0FBQSxpQkFBaEMsQ0FBaUM7WUFDeEQsSUFBSSxnQkFBZ0IsRUFBRTtnQkFDcEIsT0FBTztvQkFDTCxJQUFJLEVBQUUsYUFBYSxDQUFDLFFBQVE7b0JBQzVCLE1BQU0sRUFBRSxJQUFBLCtCQUF3QixFQUFDLGdCQUFnQixFQUFFLEtBQUssQ0FBQztvQkFDekQsTUFBTSxFQUFFLElBQUEsa0NBQTJCLEVBQUMsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDO2lCQUM3RCxDQUFDO2FBQ0g7U0FDRjtRQUNELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFRCxtQ0FBWSxHQUFaOztRQUNFLElBQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUNsQixJQUFJLE1BQUEsSUFBSSxDQUFDLEtBQUssMENBQUUsVUFBVSxFQUFFO1lBQ3BCLElBQUEsS0FBa0MsSUFBSSxDQUFDLEtBQUssRUFBM0MsVUFBVSxnQkFBQSxFQUFFLGlCQUFpQix1QkFBYyxDQUFDO1lBQzdDLElBQUEsS0FBcUMsVUFBVSxJQUFJLEVBQUUsRUFBcEQsZ0JBQWdCLHNCQUFBLEVBQUUsY0FBYyxvQkFBb0IsQ0FBQztZQUM1RCxJQUFJLGdCQUFnQixJQUFJLGNBQWMsRUFBRTtnQkFDdEMsSUFBTSxhQUFhLEdBQUcsSUFBQSx1QkFBZ0IsRUFBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDO2dCQUNqRSxJQUFNLFlBQVksR0FBRyxJQUFBLGtCQUFXLEVBQzlCLGFBQWEsQ0FBQyxZQUFZLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FDdEUsQ0FBQztnQkFDRixJQUFNLG9CQUFvQixHQUFHO29CQUMzQixJQUFJLEVBQUUsY0FBYztvQkFDcEIsVUFBVSx3QkFDTCxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVU7d0JBQ3hCLCtDQUErQzt3QkFDL0MsU0FBUyxFQUFFLEtBQUssR0FDakI7aUJBQ0YsQ0FBQztnQkFDRixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLEVBQUU7b0JBQy9CLE1BQU0sQ0FBQyxJQUFJO29CQUNULGFBQWE7b0JBQ2IsSUFBSSxnQ0FBc0IsY0FDckIsSUFBSSxDQUFDLGdCQUFnQix1QkFDbkIsb0JBQW9CLEtBQ3ZCLEVBQUUsRUFBRSxxQkFBcUIsRUFDekIsV0FBVyxFQUFFLEtBQUssRUFDbEIsYUFBYSxFQUFFLEVBQUUsSUFDakIsRUFDRixDQUNILENBQUM7aUJBQ0g7cUJBQU07b0JBQ0wsTUFBTSxDQUFDLElBQUksQ0FDVCxJQUFJLHdCQUFjLGNBQ2IsSUFBSSxDQUFDLGdCQUFnQix1QkFDbkIsb0JBQW9CLEtBQ3ZCLEVBQUUsRUFBRSxZQUFZLEVBQ2hCLFdBQVcsRUFBRSxJQUFJLEVBQ2pCLFlBQVksRUFBRSxZQUFZLElBQzFCLEVBQ0YsQ0FDSCxDQUFDO2lCQUNIO2dCQUNELE1BQU0sQ0FBQyxJQUFJLENBQ1QsSUFBSSwwQkFBZ0IsQ0FDbEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDO29CQUNwQixFQUFFLEVBQUUsU0FBUztvQkFDYixJQUFJLEVBQUUsZ0JBQWdCO29CQUN0QixVQUFVLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRO3dCQUM3QixDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUM7d0JBQ2hCLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztvQkFDeEIsZUFBZSxFQUFFLEdBQUc7aUJBQ3JCLENBQUMsQ0FDSCxDQUNGLENBQUM7Z0JBQ0YsSUFBSSxpQkFBaUIsRUFBRTtvQkFDckIsUUFBUSxpQkFBaUIsQ0FBQyxJQUFJLEVBQUU7d0JBQzlCLEtBQUssYUFBYSxDQUFDLFFBQVE7NEJBQ3pCLE1BQU0sQ0FBQyxJQUFJLENBQ1QsSUFBSSx5QkFBZ0IsY0FDZixJQUFJLENBQUMsZ0JBQWdCLENBQUM7Z0NBQ3ZCLEVBQUUsRUFBRSxvQkFBb0I7Z0NBQ3hCLElBQUksRUFBRSxDQUFDLGlCQUFpQixDQUFDO2dDQUN6QixRQUFRLEVBQUUsS0FBSztnQ0FDZixZQUFZLEVBQUUsSUFBSTtnQ0FDbEIsT0FBTyxFQUFFLElBQUk7Z0NBQ2IsTUFBTSxFQUFFLEtBQUs7Z0NBQ2IsY0FBYyxFQUFFLFFBQVE7Z0NBQ3hCLFlBQVksRUFBRSxDQUFDO2dDQUNmLFdBQVcsRUFBRSxRQUFRO2dDQUNyQixTQUFTLEVBQUUsVUFBQyxDQUE0QixJQUFLLE9BQUEsQ0FBQyxDQUFDLE1BQU0sRUFBUixDQUFRO2dDQUNyRCxZQUFZLEVBQUUsSUFBQSxrQkFBVyxFQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDO2dDQUNwRCxXQUFXLEVBQUUsVUFBQyxDQUE0QixJQUFLLE9BQUEsQ0FBQyxDQUFDLE1BQU0sRUFBUixDQUFROzZCQUN4RCxDQUFDLEVBQ0YsQ0FDSCxDQUFDOzRCQUNGLE1BQU07d0JBQ1IsS0FBSyxhQUFhLENBQUMsSUFBSTs0QkFDckIsTUFBTSxDQUFDLElBQUksQ0FDVCxJQUFJLHdCQUFjLGNBQ2IsSUFBSSxDQUFDLGdCQUFnQixDQUFDO2dDQUN2QixFQUFFLEVBQUUsZ0JBQWdCO2dDQUNwQixJQUFJLEVBQUUsaUJBQWlCLENBQUMsY0FBYztnQ0FDdEMsV0FBVyxFQUFFLElBQUk7Z0NBQ2pCLFFBQVEsRUFBRSxLQUFLO2dDQUNmLFlBQVksRUFBRSxJQUFBLGtCQUFXLEVBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUM7Z0NBQ3BELGdCQUFnQixFQUFFLENBQUM7NkJBQ3BCLENBQUMsRUFDRixDQUNILENBQUM7NEJBQ0YsTUFBTTtxQkFDVDtpQkFDRjthQUNGO1NBQ0Y7UUFFRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBclpNLHlCQUFZLEdBQUc7UUFDcEIsUUFBUSxFQUFFLElBQUk7UUFDZCxVQUFVLEVBQUUsRUFBRTtRQUNkLHFCQUFxQixFQUFFLElBQUk7UUFDM0IsZ0JBQWdCLEVBQUUsS0FBSztRQUN2QixpQkFBaUIsRUFBRSxJQUFJO1FBQ3ZCLFdBQVcsRUFBRSxJQUFJO1FBQ2pCLGtCQUFrQixFQUFFLEtBQUs7UUFDekIsY0FBYyxFQUFFLElBQUk7UUFDcEIsZUFBZSxFQUFFLFNBQVM7UUFDMUIscUJBQXFCLEVBQUUsSUFBSTtRQUMzQixXQUFXLEVBQUUsTUFBTTtRQUNuQixjQUFjLEVBQUUsUUFBUTtRQUN4QixxQkFBcUIsRUFBRSxJQUFJO0tBQzVCLENBQUM7SUF3WUosbUJBQUM7Q0FBQSxBQXZaRCxDQUFnRCxxQkFBYyxHQXVaN0Q7a0JBdlpvQixZQUFZO0FBeVpqQyxTQUFTLGlCQUFpQixDQUFDLFFBQTZCO0lBQy9DLElBQUEsS0FBSyxHQUF1RCxRQUFRLE1BQS9ELEVBQUUsTUFBTSxHQUErQyxRQUFRLE9BQXZELEVBQUUsU0FBUyxHQUFvQyxRQUFRLFVBQTVDLEVBQUUsUUFBUSxHQUEwQixRQUFRLFNBQWxDLEVBQUUsSUFBSSxHQUFvQixRQUFRLEtBQTVCLEVBQUUsS0FBSyxHQUFhLFFBQVEsTUFBckIsRUFBRSxPQUFPLEdBQUksUUFBUSxRQUFaLENBQWE7SUFDNUUsT0FBTztRQUNMLEtBQUssT0FBQTtRQUNMLE1BQU0sUUFBQTtRQUNOLFNBQVMsV0FBQTtRQUNULFFBQVEsVUFBQTtRQUNSLElBQUksTUFBQTtRQUNKLEtBQUssT0FBQTtRQUNMLE9BQU8sU0FBQTtLQUNSLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDIyIEZsb3dtYXBCbHVlXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKlxuICovXG5pbXBvcnQge0NvbXBvc2l0ZUxheWVyfSBmcm9tICdAZGVjay5nbC9jb3JlJztcbmltcG9ydCB7U2NhdHRlcnBsb3RMYXllcn0gZnJvbSAnQGRlY2suZ2wvbGF5ZXJzJztcbmltcG9ydCB7XG4gIGNvbG9yQXNSZ2JhLFxuICBGbG93TGluZXNMYXllckF0dHJpYnV0ZXMsXG4gIEZsb3dtYXBEYXRhLFxuICBGbG93bWFwRGF0YUFjY2Vzc29ycyxcbiAgRmxvd21hcERhdGFQcm92aWRlcixcbiAgZ2V0Rmxvd0xpbmVBdHRyaWJ1dGVzQnlJbmRleCxcbiAgZ2V0Rmxvd21hcENvbG9ycyxcbiAgZ2V0T3V0ZXJDaXJjbGVSYWRpdXNCeUluZGV4LFxuICBnZXRMb2NhdGlvbkNvb3Jkc0J5SW5kZXgsXG4gIGlzRmxvd21hcERhdGEsXG4gIGlzRmxvd21hcERhdGFQcm92aWRlcixcbiAgTGF5ZXJzRGF0YSxcbiAgTG9jYWxGbG93bWFwRGF0YVByb3ZpZGVyLFxuICBMb2NhdGlvbkZpbHRlck1vZGUsXG4gIFZpZXdwb3J0UHJvcHMsXG4gIEZsb3dtYXBBZ2dyZWdhdGVBY2Nlc3NvcnMsXG59IGZyb20gJ0BmbG93bWFwLmdsL2RhdGEnO1xuaW1wb3J0IEFuaW1hdGVkRmxvd0xpbmVzTGF5ZXIgZnJvbSAnLi9BbmltYXRlZEZsb3dMaW5lc0xheWVyJztcbmltcG9ydCBGbG93Q2lyY2xlc0xheWVyIGZyb20gJy4vRmxvd0NpcmNsZXNMYXllcic7XG5pbXBvcnQgRmxvd0xpbmVzTGF5ZXIgZnJvbSAnLi9GbG93TGluZXNMYXllcic7XG5pbXBvcnQge1xuICBGbG93bWFwTGF5ZXJQaWNraW5nSW5mbyxcbiAgTGF5ZXJQcm9wcyxcbiAgUGlja2luZ0luZm8sXG4gIFBpY2tpbmdUeXBlLFxufSBmcm9tICcuL3R5cGVzJztcblxuZXhwb3J0IHR5cGUgRmxvd21hcExheWVyUHJvcHM8TCwgRj4gPSB7XG4gIGRhdGE/OiBGbG93bWFwRGF0YTxMLCBGPjtcbiAgZGF0YVByb3ZpZGVyPzogRmxvd21hcERhdGFQcm92aWRlcjxMLCBGPjtcbiAgbG9jYXRpb25Ub3RhbHNFbmFibGVkPzogYm9vbGVhbjtcbiAgYWRhcHRpdmVTY2FsZXNFbmFibGVkPzogYm9vbGVhbjtcbiAgYW5pbWF0aW9uRW5hYmxlZD86IGJvb2xlYW47XG4gIGNsdXN0ZXJpbmdFbmFibGVkPzogYm9vbGVhbjtcbiAgY2x1c3RlcmluZ0xldmVsPzogbnVtYmVyO1xuICBmYWRlRW5hYmxlZD86IGJvb2xlYW47XG4gIGZhZGVPcGFjaXR5RW5hYmxlZD86IGJvb2xlYW47XG4gIGNsdXN0ZXJpbmdBdXRvPzogYm9vbGVhbjtcbiAgZGFya01vZGU/OiBib29sZWFuO1xuICBmYWRlQW1vdW50PzogbnVtYmVyO1xuICBjb2xvclNjaGVtZT86IHN0cmluZyB8IHN0cmluZ1tdO1xuICBoaWdobGlnaHRDb2xvcj86IHN0cmluZyB8IG51bWJlcltdO1xuICBtYXhUb3BGbG93c0Rpc3BsYXlOdW0/OiBudW1iZXI7XG4gIG9uSG92ZXI/OiAoXG4gICAgaW5mbzogRmxvd21hcExheWVyUGlja2luZ0luZm88TCwgRj4gfCB1bmRlZmluZWQsXG4gICAgZXZlbnQ6IFNvdXJjZUV2ZW50LFxuICApID0+IHZvaWQ7XG4gIG9uQ2xpY2s/OiAoaW5mbzogRmxvd21hcExheWVyUGlja2luZ0luZm88TCwgRj4sIGV2ZW50OiBTb3VyY2VFdmVudCkgPT4gdm9pZDtcbn0gJiBQYXJ0aWFsPEZsb3dtYXBEYXRhQWNjZXNzb3JzPEwsIEY+PiAmXG4gIExheWVyUHJvcHM7XG5cbmVudW0gSGlnaGxpZ2h0VHlwZSB7XG4gIExPQ0FUSU9OID0gJ2xvY2F0aW9uJyxcbiAgRkxPVyA9ICdmbG93Jyxcbn1cblxudHlwZSBIaWdobGlnaHRlZExvY2F0aW9uT2JqZWN0ID0ge1xuICB0eXBlOiBIaWdobGlnaHRUeXBlLkxPQ0FUSU9OO1xuICBjb29yZHM6IFtudW1iZXIsIG51bWJlcl07XG4gIHJhZGl1czogbnVtYmVyO1xufTtcblxudHlwZSBIaWdobGlnaHRlZEZsb3dPYmplY3QgPSB7XG4gIHR5cGU6IEhpZ2hsaWdodFR5cGUuRkxPVztcbiAgbGluZUF0dHJpYnV0ZXM6IEZsb3dMaW5lc0xheWVyQXR0cmlidXRlcztcbn07XG5cbnR5cGUgSGlnaGxpZ2h0ZWRPYmplY3QgPSBIaWdobGlnaHRlZExvY2F0aW9uT2JqZWN0IHwgSGlnaGxpZ2h0ZWRGbG93T2JqZWN0O1xuXG50eXBlIFN0YXRlPEwsIEY+ID0ge1xuICBhY2Nlc3NvcnM6IEZsb3dtYXBBZ2dyZWdhdGVBY2Nlc3NvcnM8TCwgRj47XG4gIGRhdGFQcm92aWRlcjogRmxvd21hcERhdGFQcm92aWRlcjxMLCBGPjtcbiAgbGF5ZXJzRGF0YTogTGF5ZXJzRGF0YSB8IHVuZGVmaW5lZDtcbiAgaGlnaGxpZ2h0ZWRPYmplY3Q6IEhpZ2hsaWdodGVkT2JqZWN0IHwgdW5kZWZpbmVkO1xuICBwaWNraW5nSW5mbzogRmxvd21hcExheWVyUGlja2luZ0luZm88TCwgRj4gfCB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgdHlwZSBTb3VyY2VFdmVudCA9IHtzcmNFdmVudDogTW91c2VFdmVudH07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEZsb3dtYXBMYXllcjxMLCBGPiBleHRlbmRzIENvbXBvc2l0ZUxheWVyIHtcbiAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IHtcbiAgICBkYXJrTW9kZTogdHJ1ZSxcbiAgICBmYWRlQW1vdW50OiA1MCxcbiAgICBsb2NhdGlvblRvdGFsc0VuYWJsZWQ6IHRydWUsXG4gICAgYW5pbWF0aW9uRW5hYmxlZDogZmFsc2UsXG4gICAgY2x1c3RlcmluZ0VuYWJsZWQ6IHRydWUsXG4gICAgZmFkZUVuYWJsZWQ6IHRydWUsXG4gICAgZmFkZU9wYWNpdHlFbmFibGVkOiBmYWxzZSxcbiAgICBjbHVzdGVyaW5nQXV0bzogdHJ1ZSxcbiAgICBjbHVzdGVyaW5nTGV2ZWw6IHVuZGVmaW5lZCxcbiAgICBhZGFwdGl2ZVNjYWxlc0VuYWJsZWQ6IHRydWUsXG4gICAgY29sb3JTY2hlbWU6ICdUZWFsJyxcbiAgICBoaWdobGlnaHRDb2xvcjogJ29yYW5nZScsXG4gICAgbWF4VG9wRmxvd3NEaXNwbGF5TnVtOiA1MDAwLFxuICB9O1xuICBzdGF0ZTogU3RhdGU8TCwgRj4gfCB1bmRlZmluZWQ7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKHByb3BzOiBGbG93bWFwTGF5ZXJQcm9wczxMLCBGPikge1xuICAgIHN1cGVyKHtcbiAgICAgIC4uLnByb3BzLFxuICAgICAgZGF0YVByb3ZpZGVyOiB7XG4gICAgICAgIC8vIFRvIGF2b2lkIGRlY2suZ2wgcHJvcHMgZGlmZmluZyBvbiBjb21saW5rIHdvcmtlciBwcm94eSBjYXVzaW5nIGFuIGV4Y2VwdGlvblxuICAgICAgICBkYXRhUHJvdmlkZXI6IHByb3BzLmRhdGFQcm92aWRlcixcbiAgICAgIH0sXG4gICAgICBvbkhvdmVyOiAoaW5mbzogUGlja2luZ0luZm88YW55PiwgZXZlbnQ6IFNvdXJjZUV2ZW50KSA9PiB7XG4gICAgICAgIC8vIFRPRE86IGlmIChsYXN0SG92ZXJFdmVudFN0YXJ0VGltZVJlZiA+IHN0YXJ0VGltZSkge1xuICAgICAgICAvLyAgIC8vIFNraXBwaW5nLCBiZWNhdXNlIHRoaXMgaXMgbm90IHRoZSBsYXRlc3QgaG92ZXIgZXZlbnRcbiAgICAgICAgLy8gICByZXR1cm47XG4gICAgICAgIC8vIH1cbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7aGlnaGxpZ2h0ZWRPYmplY3Q6IHRoaXMuX2dldEhpZ2hsaWdodGVkT2JqZWN0KGluZm8pfSk7XG4gICAgICAgIGNvbnN0IHtvbkhvdmVyfSA9IHByb3BzO1xuICAgICAgICBpZiAob25Ib3Zlcikge1xuICAgICAgICAgIHRoaXMuX2dldEZsb3dtYXBMYXllclBpY2tpbmdJbmZvKGluZm8pLnRoZW4oKGluZm8pID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe3BpY2tpbmdJbmZvOiBpbmZvfSk7XG4gICAgICAgICAgICBvbkhvdmVyKGluZm8sIGV2ZW50KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIG9uQ2xpY2s6IChpbmZvOiBQaWNraW5nSW5mbzxhbnk+LCBldmVudDogU291cmNlRXZlbnQpID0+IHtcbiAgICAgICAgY29uc3Qge29uQ2xpY2t9ID0gcHJvcHM7XG4gICAgICAgIGlmIChvbkNsaWNrKSB7XG4gICAgICAgICAgdGhpcy5fZ2V0Rmxvd21hcExheWVyUGlja2luZ0luZm8oaW5mbykudGhlbigoaW5mbykgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7cGlja2luZ0luZm86IGluZm99KTtcbiAgICAgICAgICAgIGlmIChpbmZvKSB7XG4gICAgICAgICAgICAgIG9uQ2xpY2soaW5mbywgZXZlbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgaW5pdGlhbGl6ZVN0YXRlKCkge1xuICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICBhY2Nlc3NvcnM6IG5ldyBGbG93bWFwQWdncmVnYXRlQWNjZXNzb3JzPEwsIEY+KHRoaXMucHJvcHMpLFxuICAgICAgZGF0YVByb3ZpZGVyOiB0aGlzLl9nZXRPck1ha2VEYXRhUHJvdmlkZXIoKSxcbiAgICAgIGxheWVyc0RhdGE6IHVuZGVmaW5lZCxcbiAgICAgIGhpZ2hsaWdodGVkT2JqZWN0OiB1bmRlZmluZWQsXG4gICAgICBwaWNraW5nSW5mbzogdW5kZWZpbmVkLFxuICAgIH07XG4gIH1cblxuICBnZXRQaWNraW5nSW5mbyh7aW5mb306IFJlY29yZDxzdHJpbmcsIGFueT4pIHtcbiAgICAvLyBUaGlzIGlzIGZvciBvbkhvdmVyIGV2ZW50IGhhbmRsZXJzIHNldCBvbiB0aGUgPERlY2tHTD4gY29tcG9uZW50XG4gICAgaWYgKCFpbmZvLm9iamVjdCkge1xuICAgICAgY29uc3Qgb2JqZWN0ID0gdGhpcy5zdGF0ZT8ucGlja2luZ0luZm8/Lm9iamVjdDtcbiAgICAgIGlmIChvYmplY3QpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5pbmZvLFxuICAgICAgICAgIG9iamVjdCxcbiAgICAgICAgICBwaWNrZWQ6IHRydWUsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBpbmZvO1xuICB9XG5cbiAgcHJpdmF0ZSBfdXBkYXRlQWNjZXNzb3JzKCkge1xuICAgIHRoaXMuc3RhdGU/LmRhdGFQcm92aWRlcj8uc2V0QWNjZXNzb3JzKHRoaXMucHJvcHMpO1xuICAgIHRoaXMuc2V0U3RhdGUoe2FjY2Vzc29yczogbmV3IEZsb3dtYXBBZ2dyZWdhdGVBY2Nlc3NvcnModGhpcy5wcm9wcyl9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldE9yTWFrZURhdGFQcm92aWRlcigpIHtcbiAgICBjb25zdCB7ZGF0YSwgZGF0YVByb3ZpZGVyfSA9IHRoaXMucHJvcHM7XG4gICAgaWYgKGlzRmxvd21hcERhdGFQcm92aWRlcjxMLCBGPihkYXRhUHJvdmlkZXI/LmRhdGFQcm92aWRlcikpIHtcbiAgICAgIHJldHVybiBkYXRhUHJvdmlkZXIuZGF0YVByb3ZpZGVyO1xuICAgIH0gZWxzZSBpZiAoaXNGbG93bWFwRGF0YTxMLCBGPihkYXRhKSkge1xuICAgICAgY29uc3QgZGF0YVByb3ZpZGVyID0gbmV3IExvY2FsRmxvd21hcERhdGFQcm92aWRlcjxMLCBGPih0aGlzLnByb3BzKTtcbiAgICAgIGRhdGFQcm92aWRlci5zZXRGbG93bWFwRGF0YShkYXRhKTtcbiAgICAgIHJldHVybiBkYXRhUHJvdmlkZXI7XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICdGbG93bWFwTGF5ZXI6IGRhdGEgbXVzdCBiZSBhIEZsb3dtYXBEYXRhUHJvdmlkZXIgb3IgRmxvd21hcERhdGEnLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIF91cGRhdGVEYXRhUHJvdmlkZXIoKSB7XG4gICAgdGhpcy5zZXRTdGF0ZSh7ZGF0YVByb3ZpZGVyOiB0aGlzLl9nZXRPck1ha2VEYXRhUHJvdmlkZXIoKX0pO1xuICB9XG5cbiAgc2hvdWxkVXBkYXRlU3RhdGUocGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KTogYm9vbGVhbiB7XG4gICAgY29uc3Qge2NoYW5nZUZsYWdzfSA9IHBhcmFtcztcbiAgICAvLyBpZiAodGhpcy5fdmlld3BvcnRDaGFuZ2VkKCkpIHtcbiAgICAvLyAgIHJldHVybiB0cnVlO1xuICAgIC8vIH1cbiAgICBpZiAoY2hhbmdlRmxhZ3Mudmlld3BvcnRDaGFuZ2VkKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHN1cGVyLnNob3VsZFVwZGF0ZVN0YXRlKHBhcmFtcyk7XG4gICAgLy8gVE9ETzogYmUgc21hcnRlciBvbiB3aGVuIHRvIHVwZGF0ZVxuICAgIC8vIChlLmcuIGlnbm9yZSB2aWV3cG9ydCBjaGFuZ2VzIHdoZW4gYWRhcHRpdmVTY2FsZXNFbmFibGVkIGFuZCBjbHVzdGVyaW5nIGFyZSBmYWxzZSlcbiAgfVxuXG4gIHVwZGF0ZVN0YXRlKHtvbGRQcm9wcywgcHJvcHMsIGNoYW5nZUZsYWdzfTogUmVjb3JkPHN0cmluZywgYW55Pik6IHZvaWQge1xuICAgIGNvbnN0IHtkYXRhUHJvdmlkZXIsIGhpZ2hsaWdodGVkT2JqZWN0fSA9IHRoaXMuc3RhdGUgfHwge307XG4gICAgaWYgKCFkYXRhUHJvdmlkZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlRmxhZ3MucHJvcHNDaGFuZ2VkKSB7XG4gICAgICAvLyB0aGlzLl91cGRhdGVBY2Nlc3NvcnMoKTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZUZsYWdzLmRhdGFDaGFuZ2VkKSB7XG4gICAgICB0aGlzLl91cGRhdGVEYXRhUHJvdmlkZXIoKTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZUZsYWdzLnZpZXdwb3J0Q2hhbmdlZCB8fCBjaGFuZ2VGbGFncy5kYXRhQ2hhbmdlZCkge1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIGhpZ2hsaWdodGVkT2JqZWN0OiB1bmRlZmluZWQsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBjaGFuZ2VGbGFncy52aWV3cG9ydENoYW5nZWQgfHxcbiAgICAgIGNoYW5nZUZsYWdzLnByb3BzT3JEYXRhQ2hhbmdlZCAvLyBUT0RPIGNhbiB3ZSBpZ25vcmUgYWNjZXNzb3IgcHJvcHMgY2hhbmdlcz9cbiAgICApIHtcbiAgICAgIGRhdGFQcm92aWRlci5zZXRGbG93bWFwU3RhdGUodGhpcy5fZ2V0Rmxvd21hcFN0YXRlKCkpO1xuICAgICAgKGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgbGF5ZXJzRGF0YSA9IGF3YWl0IGRhdGFQcm92aWRlci5nZXRMYXllcnNEYXRhKCk7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe2xheWVyc0RhdGF9KTtcbiAgICAgIH0pKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0U2V0dGluZ3NTdGF0ZSgpIHtcbiAgICBjb25zdCB7XG4gICAgICBsb2NhdGlvblRvdGFsc0VuYWJsZWQsXG4gICAgICBhZGFwdGl2ZVNjYWxlc0VuYWJsZWQsXG4gICAgICBhbmltYXRpb25FbmFibGVkLFxuICAgICAgY2x1c3RlcmluZ0VuYWJsZWQsXG4gICAgICBjbHVzdGVyaW5nTGV2ZWwsXG4gICAgICBmYWRlRW5hYmxlZCxcbiAgICAgIGZhZGVPcGFjaXR5RW5hYmxlZCxcbiAgICAgIGNsdXN0ZXJpbmdBdXRvLFxuICAgICAgZGFya01vZGUsXG4gICAgICBmYWRlQW1vdW50LFxuICAgICAgY29sb3JTY2hlbWUsXG4gICAgICBoaWdobGlnaHRDb2xvcixcbiAgICAgIG1heFRvcEZsb3dzRGlzcGxheU51bSxcbiAgICB9ID0gdGhpcy5wcm9wcztcbiAgICByZXR1cm4ge1xuICAgICAgbG9jYXRpb25Ub3RhbHNFbmFibGVkLFxuICAgICAgYWRhcHRpdmVTY2FsZXNFbmFibGVkLFxuICAgICAgYW5pbWF0aW9uRW5hYmxlZCxcbiAgICAgIGNsdXN0ZXJpbmdFbmFibGVkLFxuICAgICAgY2x1c3RlcmluZ0xldmVsLFxuICAgICAgZmFkZUVuYWJsZWQsXG4gICAgICBmYWRlT3BhY2l0eUVuYWJsZWQsXG4gICAgICBjbHVzdGVyaW5nQXV0byxcbiAgICAgIGRhcmtNb2RlLFxuICAgICAgZmFkZUFtb3VudCxcbiAgICAgIGNvbG9yU2NoZW1lLFxuICAgICAgaGlnaGxpZ2h0Q29sb3IsXG4gICAgICBtYXhUb3BGbG93c0Rpc3BsYXlOdW0sXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldEZsb3dtYXBTdGF0ZSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdmlld3BvcnQ6IHBpY2tWaWV3cG9ydFByb3BzKHRoaXMuY29udGV4dC52aWV3cG9ydCksXG4gICAgICBmaWx0ZXJTdGF0ZToge1xuICAgICAgICBzZWxlY3RlZExvY2F0aW9uczogdW5kZWZpbmVkLFxuICAgICAgICBsb2NhdGlvbkZpbHRlck1vZGU6IExvY2F0aW9uRmlsdGVyTW9kZS5BTEwsXG4gICAgICAgIHNlbGVjdGVkVGltZVJhbmdlOiB1bmRlZmluZWQsXG4gICAgICB9LFxuICAgICAgc2V0dGluZ3NTdGF0ZTogdGhpcy5fZ2V0U2V0dGluZ3NTdGF0ZSgpLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIF9nZXRGbG93bWFwTGF5ZXJQaWNraW5nSW5mbyhcbiAgICBpbmZvOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICApOiBQcm9taXNlPEZsb3dtYXBMYXllclBpY2tpbmdJbmZvPEwsIEY+IHwgdW5kZWZpbmVkPiB7XG4gICAgY29uc3Qge2luZGV4LCBzb3VyY2VMYXllcn0gPSBpbmZvO1xuICAgIGNvbnN0IHtkYXRhUHJvdmlkZXIsIGFjY2Vzc29yc30gPSB0aGlzLnN0YXRlIHx8IHt9O1xuICAgIGlmICghZGF0YVByb3ZpZGVyIHx8ICFhY2Nlc3NvcnMpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGNvbnN0IGNvbW1vbkluZm8gPSB7XG4gICAgICAuLi5pbmZvLFxuICAgICAgcGlja2VkOiBpbmZvLnBpY2tlZCxcbiAgICAgIGxheWVyOiBpbmZvLmxheWVyLFxuICAgICAgaW5kZXg6IGluZm8uaW5kZXgsXG4gICAgICB4OiBpbmZvLngsXG4gICAgICB5OiBpbmZvLnksXG4gICAgICBjb29yZGluYXRlOiBpbmZvLmNvb3JkaW5hdGUsXG4gICAgICBldmVudDogaW5mby5ldmVudCxcbiAgICB9O1xuICAgIGlmIChcbiAgICAgIHNvdXJjZUxheWVyIGluc3RhbmNlb2YgRmxvd0xpbmVzTGF5ZXIgfHxcbiAgICAgIHNvdXJjZUxheWVyIGluc3RhbmNlb2YgQW5pbWF0ZWRGbG93TGluZXNMYXllclxuICAgICkge1xuICAgICAgY29uc3QgZmxvdyA9XG4gICAgICAgIGluZGV4ID09PSAtMSA/IHVuZGVmaW5lZCA6IGF3YWl0IGRhdGFQcm92aWRlci5nZXRGbG93QnlJbmRleChpbmRleCk7XG4gICAgICBpZiAoZmxvdykge1xuICAgICAgICBjb25zdCBvcmlnaW4gPSBhd2FpdCBkYXRhUHJvdmlkZXIuZ2V0TG9jYXRpb25CeUlkKFxuICAgICAgICAgIGFjY2Vzc29ycy5nZXRGbG93T3JpZ2luSWQoZmxvdyksXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGRlc3QgPSBhd2FpdCBkYXRhUHJvdmlkZXIuZ2V0TG9jYXRpb25CeUlkKFxuICAgICAgICAgIGFjY2Vzc29ycy5nZXRGbG93RGVzdElkKGZsb3cpLFxuICAgICAgICApO1xuICAgICAgICBpZiAob3JpZ2luICYmIGRlc3QpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4uY29tbW9uSW5mbyxcbiAgICAgICAgICAgIG9iamVjdDoge1xuICAgICAgICAgICAgICB0eXBlOiBQaWNraW5nVHlwZS5GTE9XLFxuICAgICAgICAgICAgICBmbG93LFxuICAgICAgICAgICAgICBvcmlnaW46IG9yaWdpbixcbiAgICAgICAgICAgICAgZGVzdDogZGVzdCxcbiAgICAgICAgICAgICAgY291bnQ6IGFjY2Vzc29ycy5nZXRGbG93TWFnbml0dWRlKGZsb3cpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChzb3VyY2VMYXllciBpbnN0YW5jZW9mIEZsb3dDaXJjbGVzTGF5ZXIpIHtcbiAgICAgIGNvbnN0IGxvY2F0aW9uID1cbiAgICAgICAgaW5kZXggPT09IC0xID8gdW5kZWZpbmVkIDogYXdhaXQgZGF0YVByb3ZpZGVyLmdldExvY2F0aW9uQnlJbmRleChpbmRleCk7XG5cbiAgICAgIGlmIChsb2NhdGlvbikge1xuICAgICAgICBjb25zdCBpZCA9IGFjY2Vzc29ycy5nZXRMb2NhdGlvbklkKGxvY2F0aW9uKTtcbiAgICAgICAgY29uc3QgbmFtZSA9IGFjY2Vzc29ycy5nZXRMb2NhdGlvbk5hbWUobG9jYXRpb24pO1xuICAgICAgICBjb25zdCB0b3RhbHMgPSBhd2FpdCBkYXRhUHJvdmlkZXIuZ2V0VG90YWxzRm9yTG9jYXRpb24oaWQpO1xuICAgICAgICBjb25zdCB7Y2lyY2xlQXR0cmlidXRlc30gPSB0aGlzLnN0YXRlPy5sYXllcnNEYXRhIHx8IHt9O1xuICAgICAgICBpZiAodG90YWxzICYmIGNpcmNsZUF0dHJpYnV0ZXMpIHtcbiAgICAgICAgICBjb25zdCBjaXJjbGVSYWRpdXMgPSBnZXRPdXRlckNpcmNsZVJhZGl1c0J5SW5kZXgoXG4gICAgICAgICAgICBjaXJjbGVBdHRyaWJ1dGVzLFxuICAgICAgICAgICAgaW5mby5pbmRleCxcbiAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5jb21tb25JbmZvLFxuICAgICAgICAgICAgb2JqZWN0OiB7XG4gICAgICAgICAgICAgIHR5cGU6IFBpY2tpbmdUeXBlLkxPQ0FUSU9OLFxuICAgICAgICAgICAgICBsb2NhdGlvbixcbiAgICAgICAgICAgICAgaWQsXG4gICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgIHRvdGFscyxcbiAgICAgICAgICAgICAgY2lyY2xlUmFkaXVzOiBjaXJjbGVSYWRpdXMsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0SGlnaGxpZ2h0ZWRPYmplY3QoXG4gICAgaW5mbzogUmVjb3JkPHN0cmluZywgYW55PixcbiAgKTogSGlnaGxpZ2h0ZWRPYmplY3QgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IHtpbmRleCwgc291cmNlTGF5ZXJ9ID0gaW5mbztcbiAgICBpZiAoaW5kZXggPCAwKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGlmIChcbiAgICAgIHNvdXJjZUxheWVyIGluc3RhbmNlb2YgRmxvd0xpbmVzTGF5ZXIgfHxcbiAgICAgIHNvdXJjZUxheWVyIGluc3RhbmNlb2YgQW5pbWF0ZWRGbG93TGluZXNMYXllclxuICAgICkge1xuICAgICAgY29uc3Qge2xpbmVBdHRyaWJ1dGVzfSA9IHRoaXMuc3RhdGU/LmxheWVyc0RhdGEgfHwge307XG4gICAgICBpZiAobGluZUF0dHJpYnV0ZXMpIHtcbiAgICAgICAgbGV0IGF0dHJzID0gZ2V0Rmxvd0xpbmVBdHRyaWJ1dGVzQnlJbmRleChsaW5lQXR0cmlidXRlcywgaW5kZXgpO1xuICAgICAgICBpZiAodGhpcy5wcm9wcy5mYWRlT3BhY2l0eUVuYWJsZWQpIHtcbiAgICAgICAgICBhdHRycyA9IHtcbiAgICAgICAgICAgIC4uLmF0dHJzLFxuICAgICAgICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAgICAgICAuLi5hdHRycy5hdHRyaWJ1dGVzLFxuICAgICAgICAgICAgICBnZXRDb2xvcjoge1xuICAgICAgICAgICAgICAgIC4uLmF0dHJzLmF0dHJpYnV0ZXMuZ2V0Q29sb3IsXG4gICAgICAgICAgICAgICAgdmFsdWU6IG5ldyBVaW50OEFycmF5KFtcbiAgICAgICAgICAgICAgICAgIC4uLmF0dHJzLmF0dHJpYnV0ZXMuZ2V0Q29sb3IudmFsdWUuc2xpY2UoMCwgMyksXG4gICAgICAgICAgICAgICAgICAyNTUsIC8vIHRoZSBoaWdobGlnaHQgY29sb3Igc2hvdWxkIGJlIGFsd2F5cyBvcGFxdWVcbiAgICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHR5cGU6IEhpZ2hsaWdodFR5cGUuRkxPVyxcbiAgICAgICAgICBsaW5lQXR0cmlidXRlczogYXR0cnMsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChzb3VyY2VMYXllciBpbnN0YW5jZW9mIEZsb3dDaXJjbGVzTGF5ZXIpIHtcbiAgICAgIGNvbnN0IHtjaXJjbGVBdHRyaWJ1dGVzfSA9IHRoaXMuc3RhdGU/LmxheWVyc0RhdGEgfHwge307XG4gICAgICBpZiAoY2lyY2xlQXR0cmlidXRlcykge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHR5cGU6IEhpZ2hsaWdodFR5cGUuTE9DQVRJT04sXG4gICAgICAgICAgY29vcmRzOiBnZXRMb2NhdGlvbkNvb3Jkc0J5SW5kZXgoY2lyY2xlQXR0cmlidXRlcywgaW5kZXgpLFxuICAgICAgICAgIHJhZGl1czogZ2V0T3V0ZXJDaXJjbGVSYWRpdXNCeUluZGV4KGNpcmNsZUF0dHJpYnV0ZXMsIGluZGV4KSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHJlbmRlckxheWVycygpOiBBcnJheTxhbnk+IHtcbiAgICBjb25zdCBsYXllcnMgPSBbXTtcbiAgICBpZiAodGhpcy5zdGF0ZT8ubGF5ZXJzRGF0YSkge1xuICAgICAgY29uc3Qge2xheWVyc0RhdGEsIGhpZ2hsaWdodGVkT2JqZWN0fSA9IHRoaXMuc3RhdGU7XG4gICAgICBjb25zdCB7Y2lyY2xlQXR0cmlidXRlcywgbGluZUF0dHJpYnV0ZXN9ID0gbGF5ZXJzRGF0YSB8fCB7fTtcbiAgICAgIGlmIChjaXJjbGVBdHRyaWJ1dGVzICYmIGxpbmVBdHRyaWJ1dGVzKSB7XG4gICAgICAgIGNvbnN0IGZsb3dtYXBDb2xvcnMgPSBnZXRGbG93bWFwQ29sb3JzKHRoaXMuX2dldFNldHRpbmdzU3RhdGUoKSk7XG4gICAgICAgIGNvbnN0IG91dGxpbmVDb2xvciA9IGNvbG9yQXNSZ2JhKFxuICAgICAgICAgIGZsb3dtYXBDb2xvcnMub3V0bGluZUNvbG9yIHx8ICh0aGlzLnByb3BzLmRhcmtNb2RlID8gJyMwMDAnIDogJyNmZmYnKSxcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgY29tbW9uTGluZUxheWVyUHJvcHMgPSB7XG4gICAgICAgICAgZGF0YTogbGluZUF0dHJpYnV0ZXMsXG4gICAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgICAgLi4udGhpcy5wcm9wcy5wYXJhbWV0ZXJzLFxuICAgICAgICAgICAgLy8gcHJldmVudCB6LWZpZ2h0aW5nIGF0IG5vbi16ZXJvIGJlYXJpbmcvcGl0Y2hcbiAgICAgICAgICAgIGRlcHRoVGVzdDogZmFsc2UsXG4gICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKHRoaXMucHJvcHMuYW5pbWF0aW9uRW5hYmxlZCkge1xuICAgICAgICAgIGxheWVycy5wdXNoKFxuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgbmV3IEFuaW1hdGVkRmxvd0xpbmVzTGF5ZXIoe1xuICAgICAgICAgICAgICAuLi50aGlzLmdldFN1YkxheWVyUHJvcHMoe1xuICAgICAgICAgICAgICAgIC4uLmNvbW1vbkxpbmVMYXllclByb3BzLFxuICAgICAgICAgICAgICAgIGlkOiAnYW5pbWF0ZWQtZmxvdy1saW5lcycsXG4gICAgICAgICAgICAgICAgZHJhd091dGxpbmU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHRoaWNrbmVzc1VuaXQ6IDIwLFxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbGF5ZXJzLnB1c2goXG4gICAgICAgICAgICBuZXcgRmxvd0xpbmVzTGF5ZXIoe1xuICAgICAgICAgICAgICAuLi50aGlzLmdldFN1YkxheWVyUHJvcHMoe1xuICAgICAgICAgICAgICAgIC4uLmNvbW1vbkxpbmVMYXllclByb3BzLFxuICAgICAgICAgICAgICAgIGlkOiAnZmxvdy1saW5lcycsXG4gICAgICAgICAgICAgICAgZHJhd091dGxpbmU6IHRydWUsXG4gICAgICAgICAgICAgICAgb3V0bGluZUNvbG9yOiBvdXRsaW5lQ29sb3IsXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBsYXllcnMucHVzaChcbiAgICAgICAgICBuZXcgRmxvd0NpcmNsZXNMYXllcihcbiAgICAgICAgICAgIHRoaXMuZ2V0U3ViTGF5ZXJQcm9wcyh7XG4gICAgICAgICAgICAgIGlkOiAnY2lyY2xlcycsXG4gICAgICAgICAgICAgIGRhdGE6IGNpcmNsZUF0dHJpYnV0ZXMsXG4gICAgICAgICAgICAgIGVtcHR5Q29sb3I6IHRoaXMucHJvcHMuZGFya01vZGVcbiAgICAgICAgICAgICAgICA/IFswLCAwLCAwLCAyNTVdXG4gICAgICAgICAgICAgICAgOiBbMjU1LCAyNTUsIDI1NSwgMjU1XSxcbiAgICAgICAgICAgICAgb3V0bGluZUVtcHR5TWl4OiAwLjQsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICApLFxuICAgICAgICApO1xuICAgICAgICBpZiAoaGlnaGxpZ2h0ZWRPYmplY3QpIHtcbiAgICAgICAgICBzd2l0Y2ggKGhpZ2hsaWdodGVkT2JqZWN0LnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgSGlnaGxpZ2h0VHlwZS5MT0NBVElPTjpcbiAgICAgICAgICAgICAgbGF5ZXJzLnB1c2goXG4gICAgICAgICAgICAgICAgbmV3IFNjYXR0ZXJwbG90TGF5ZXIoe1xuICAgICAgICAgICAgICAgICAgLi4udGhpcy5nZXRTdWJMYXllclByb3BzKHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6ICdsb2NhdGlvbi1oaWdobGlnaHQnLFxuICAgICAgICAgICAgICAgICAgICBkYXRhOiBbaGlnaGxpZ2h0ZWRPYmplY3RdLFxuICAgICAgICAgICAgICAgICAgICBwaWNrYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIGFudGlhbGlhc2luZzogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgZmlsbGVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgbGluZVdpZHRoVW5pdHM6ICdwaXhlbHMnLFxuICAgICAgICAgICAgICAgICAgICBnZXRMaW5lV2lkdGg6IDIsXG4gICAgICAgICAgICAgICAgICAgIHJhZGl1c1VuaXRzOiAncGl4ZWxzJyxcbiAgICAgICAgICAgICAgICAgICAgZ2V0UmFkaXVzOiAoZDogSGlnaGxpZ2h0ZWRMb2NhdGlvbk9iamVjdCkgPT4gZC5yYWRpdXMsXG4gICAgICAgICAgICAgICAgICAgIGdldExpbmVDb2xvcjogY29sb3JBc1JnYmEodGhpcy5wcm9wcy5oaWdobGlnaHRDb2xvciksXG4gICAgICAgICAgICAgICAgICAgIGdldFBvc2l0aW9uOiAoZDogSGlnaGxpZ2h0ZWRMb2NhdGlvbk9iamVjdCkgPT4gZC5jb29yZHMsXG4gICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIEhpZ2hsaWdodFR5cGUuRkxPVzpcbiAgICAgICAgICAgICAgbGF5ZXJzLnB1c2goXG4gICAgICAgICAgICAgICAgbmV3IEZsb3dMaW5lc0xheWVyKHtcbiAgICAgICAgICAgICAgICAgIC4uLnRoaXMuZ2V0U3ViTGF5ZXJQcm9wcyh7XG4gICAgICAgICAgICAgICAgICAgIGlkOiAnZmxvdy1oaWdobGlnaHQnLFxuICAgICAgICAgICAgICAgICAgICBkYXRhOiBoaWdobGlnaHRlZE9iamVjdC5saW5lQXR0cmlidXRlcyxcbiAgICAgICAgICAgICAgICAgICAgZHJhd091dGxpbmU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIHBpY2thYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgb3V0bGluZUNvbG9yOiBjb2xvckFzUmdiYSh0aGlzLnByb3BzLmhpZ2hsaWdodENvbG9yKSxcbiAgICAgICAgICAgICAgICAgICAgb3V0bGluZVRoaWNrbmVzczogMSxcbiAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbGF5ZXJzO1xuICB9XG59XG5cbmZ1bmN0aW9uIHBpY2tWaWV3cG9ydFByb3BzKHZpZXdwb3J0OiBSZWNvcmQ8c3RyaW5nLCBhbnk+KTogVmlld3BvcnRQcm9wcyB7XG4gIGNvbnN0IHt3aWR0aCwgaGVpZ2h0LCBsb25naXR1ZGUsIGxhdGl0dWRlLCB6b29tLCBwaXRjaCwgYmVhcmluZ30gPSB2aWV3cG9ydDtcbiAgcmV0dXJuIHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQsXG4gICAgbG9uZ2l0dWRlLFxuICAgIGxhdGl0dWRlLFxuICAgIHpvb20sXG4gICAgcGl0Y2gsXG4gICAgYmVhcmluZyxcbiAgfTtcbn1cbiJdfQ==
@@ -1,7 +0,0 @@
1
- export { default as AnimatedFlowLinesLayer } from './AnimatedFlowLinesLayer';
2
- export { default as FlowLinesLayer } from './FlowLinesLayer';
3
- export { default as FlowCirclesLayer } from './FlowCirclesLayer';
4
- export { default as FlowmapLayer } from './FlowmapLayer';
5
- export type { FlowmapLayerProps } from './FlowmapLayer';
6
- export * from './types';
7
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,IAAI,sBAAsB,EAAC,MAAM,0BAA0B,CAAC;AAC3E,OAAO,EAAC,OAAO,IAAI,cAAc,EAAC,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAC,OAAO,IAAI,gBAAgB,EAAC,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAC,OAAO,IAAI,YAAY,EAAC,MAAM,gBAAgB,CAAC;AACvD,YAAY,EAAC,iBAAiB,EAAC,MAAM,gBAAgB,CAAC;AAEtD,cAAc,SAAS,CAAC"}
package/dist-es5/index.js DELETED
@@ -1,26 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
- }) : (function(o, m, k, k2) {
6
- if (k2 === undefined) k2 = k;
7
- o[k2] = m[k];
8
- }));
9
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
- };
12
- var __importDefault = (this && this.__importDefault) || function (mod) {
13
- return (mod && mod.__esModule) ? mod : { "default": mod };
14
- };
15
- Object.defineProperty(exports, "__esModule", { value: true });
16
- exports.FlowmapLayer = exports.FlowCirclesLayer = exports.FlowLinesLayer = exports.AnimatedFlowLinesLayer = void 0;
17
- var AnimatedFlowLinesLayer_1 = require("./AnimatedFlowLinesLayer");
18
- Object.defineProperty(exports, "AnimatedFlowLinesLayer", { enumerable: true, get: function () { return __importDefault(AnimatedFlowLinesLayer_1).default; } });
19
- var FlowLinesLayer_1 = require("./FlowLinesLayer");
20
- Object.defineProperty(exports, "FlowLinesLayer", { enumerable: true, get: function () { return __importDefault(FlowLinesLayer_1).default; } });
21
- var FlowCirclesLayer_1 = require("./FlowCirclesLayer");
22
- Object.defineProperty(exports, "FlowCirclesLayer", { enumerable: true, get: function () { return __importDefault(FlowCirclesLayer_1).default; } });
23
- var FlowmapLayer_1 = require("./FlowmapLayer");
24
- Object.defineProperty(exports, "FlowmapLayer", { enumerable: true, get: function () { return __importDefault(FlowmapLayer_1).default; } });
25
- __exportStar(require("./types"), exports);
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG1FQUEyRTtBQUFuRSxpSkFBQSxPQUFPLE9BQTBCO0FBQ3pDLG1EQUEyRDtBQUFuRCxpSUFBQSxPQUFPLE9BQWtCO0FBQ2pDLHVEQUErRDtBQUF2RCxxSUFBQSxPQUFPLE9BQW9CO0FBQ25DLCtDQUF1RDtBQUEvQyw2SEFBQSxPQUFPLE9BQWdCO0FBRy9CLDBDQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7ZGVmYXVsdCBhcyBBbmltYXRlZEZsb3dMaW5lc0xheWVyfSBmcm9tICcuL0FuaW1hdGVkRmxvd0xpbmVzTGF5ZXInO1xuZXhwb3J0IHtkZWZhdWx0IGFzIEZsb3dMaW5lc0xheWVyfSBmcm9tICcuL0Zsb3dMaW5lc0xheWVyJztcbmV4cG9ydCB7ZGVmYXVsdCBhcyBGbG93Q2lyY2xlc0xheWVyfSBmcm9tICcuL0Zsb3dDaXJjbGVzTGF5ZXInO1xuZXhwb3J0IHtkZWZhdWx0IGFzIEZsb3dtYXBMYXllcn0gZnJvbSAnLi9GbG93bWFwTGF5ZXInO1xuZXhwb3J0IHR5cGUge0Zsb3dtYXBMYXllclByb3BzfSBmcm9tICcuL0Zsb3dtYXBMYXllcic7XG5cbmV4cG9ydCAqIGZyb20gJy4vdHlwZXMnO1xuIl19
@@ -1,36 +0,0 @@
1
- import { AggregateFlow, ClusterNode, LocationTotals } from '@flowmap.gl/data';
2
- export declare type LayerProps = Record<string, unknown>;
3
- export declare enum PickingType {
4
- LOCATION = "location",
5
- FLOW = "flow"
6
- }
7
- export declare type DeckGLLayer = Record<string, any>;
8
- export interface PickingInfo<T> {
9
- layer: DeckGLLayer;
10
- index: number;
11
- picked: boolean;
12
- object: T | undefined;
13
- x: number;
14
- y: number;
15
- coordinate: [number, number];
16
- event: MouseEvent | undefined;
17
- }
18
- export interface LocationPickingInfoObject<L> {
19
- id: string;
20
- type: PickingType.LOCATION;
21
- location: L | ClusterNode;
22
- name: string;
23
- totals: LocationTotals;
24
- circleRadius: number;
25
- }
26
- export declare type LocationPickingInfo<L> = PickingInfo<LocationPickingInfoObject<L>>;
27
- export interface FlowPickingInfoObject<L, F> {
28
- type: PickingType.FLOW;
29
- flow: F | AggregateFlow;
30
- origin: L | ClusterNode;
31
- dest: L | ClusterNode;
32
- count: number;
33
- }
34
- export declare type FlowPickingInfo<L, F> = PickingInfo<FlowPickingInfoObject<L, F>>;
35
- export declare type FlowmapLayerPickingInfo<L, F> = LocationPickingInfo<L> | FlowPickingInfo<L, F>;
36
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EAEb,WAAW,EACX,cAAc,EACf,MAAM,kBAAkB,CAAC;AAE1B,oBAAY,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEjD,oBAAY,WAAW;IACrB,QAAQ,aAAa;IACrB,IAAI,SAAS;CAEd;AAED,oBAAY,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAE9C,MAAM,WAAW,WAAW,CAAC,CAAC;IAC5B,KAAK,EAAE,WAAW,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,CAAC,GAAG,SAAS,CAAC;IACtB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,KAAK,EAAE,UAAU,GAAG,SAAS,CAAC;CAC/B;AAED,MAAM,WAAW,yBAAyB,CAAC,CAAC;IAC1C,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,WAAW,CAAC,QAAQ,CAAC;IAC3B,QAAQ,EAAE,CAAC,GAAG,WAAW,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,cAAc,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,oBAAY,mBAAmB,CAAC,CAAC,IAAI,WAAW,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAC;AAE/E,MAAM,WAAW,qBAAqB,CAAC,CAAC,EAAE,CAAC;IACzC,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC;IACvB,IAAI,EAAE,CAAC,GAAG,aAAa,CAAC;IACxB,MAAM,EAAE,CAAC,GAAG,WAAW,CAAC;IACxB,IAAI,EAAE,CAAC,GAAG,WAAW,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,oBAAY,eAAe,CAAC,CAAC,EAAE,CAAC,IAAI,WAAW,CAAC,qBAAqB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAO7E,oBAAY,uBAAuB,CAAC,CAAC,EAAE,CAAC,IACpC,mBAAmB,CAAC,CAAC,CAAC,GAEtB,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC"}