@kepler.gl/constants 3.0.0-alpha.0

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/layers.js ADDED
@@ -0,0 +1,506 @@
1
+ // Copyright (c) 2022 Uber Technologies, Inc.
2
+ //
3
+ // Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ // of this software and associated documentation files (the "Software"), to deal
5
+ // in the Software without restriction, including without limitation the rights
6
+ // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
+ // copies of the Software, and to permit persons to whom the Software is
8
+ // furnished to do so, subject to the following conditions:
9
+ //
10
+ // The above copyright notice and this permission notice shall be included in
11
+ // all copies or substantial portions of the Software.
12
+ //
13
+ // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
+ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
+ // THE SOFTWARE.
20
+
21
+ "use strict";
22
+
23
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
24
+
25
+ Object.defineProperty(exports, "__esModule", {
26
+ value: true
27
+ });
28
+ Object.defineProperty(exports, "DEFAULT_COLOR_RANGE", {
29
+ enumerable: true,
30
+ get: function get() {
31
+ return _colorRanges.DEFAULT_COLOR_RANGE;
32
+ }
33
+ });
34
+ exports.EDITOR_AVAILABLE_LAYERS = exports.LAYER_TYPES = exports.LAYER_TEXT_CONFIGS = exports.LAYER_VIS_CONFIGS = exports.DEFAULT_COLOR_UI = exports.UNKNOWN_COLOR_KEY = exports.DEFAULT_CUSTOM_PALETTE = exports.DEFAULT_TEXT_LABEL = exports.DEFAULT_LAYER_LABEL = exports.DEFAULT_HIGHLIGHT_COLOR = exports.DEFAULT_LAYER_OPACITY = exports.PROPERTY_GROUPS = void 0;
35
+
36
+ var _keymirror = _interopRequireDefault(require("keymirror"));
37
+
38
+ var _colorRanges = require("./color-ranges");
39
+
40
+ var _defaultSettings = require("./default-settings");var PROPERTY_GROUPS = (0, _keymirror["default"])({
41
+ color: null,
42
+ stroke: null,
43
+ radius: null,
44
+ height: null,
45
+ angle: null,
46
+ // for heatmap aggregation
47
+ cell: null,
48
+ precision: null,
49
+ display: null
50
+ });
51
+ exports.PROPERTY_GROUPS = PROPERTY_GROUPS;
52
+ var DEFAULT_LAYER_OPACITY = 0.8;
53
+ exports.DEFAULT_LAYER_OPACITY = DEFAULT_LAYER_OPACITY;
54
+ var DEFAULT_HIGHLIGHT_COLOR = [252, 242, 26, 255];
55
+ exports.DEFAULT_HIGHLIGHT_COLOR = DEFAULT_HIGHLIGHT_COLOR;
56
+ var DEFAULT_LAYER_LABEL = 'new layer';
57
+ exports.DEFAULT_LAYER_LABEL = DEFAULT_LAYER_LABEL;
58
+ var DEFAULT_TEXT_LABEL = {
59
+ field: null,
60
+ color: [255, 255, 255],
61
+ size: 18,
62
+ offset: [0, 0],
63
+ anchor: 'start',
64
+ alignment: 'center'
65
+ };
66
+ exports.DEFAULT_TEXT_LABEL = DEFAULT_TEXT_LABEL;
67
+ var DEFAULT_CUSTOM_PALETTE = {
68
+ name: 'color.customPalette',
69
+ type: 'custom',
70
+ category: 'Custom',
71
+ colors: []
72
+ };
73
+ exports.DEFAULT_CUSTOM_PALETTE = DEFAULT_CUSTOM_PALETTE;
74
+ var UNKNOWN_COLOR_KEY = '__unknownColor__';
75
+ exports.UNKNOWN_COLOR_KEY = UNKNOWN_COLOR_KEY;
76
+ var DEFAULT_COLOR_UI = {
77
+ // customPalette in edit
78
+ customPalette: DEFAULT_CUSTOM_PALETTE,
79
+ // show color sketcher modal
80
+ showSketcher: false,
81
+ // show color range selection panel
82
+ showDropdown: false,
83
+ // color range selector config
84
+ colorRangeConfig: {
85
+ type: 'all',
86
+ steps: 6,
87
+ reversed: false,
88
+ custom: false
89
+ }
90
+ };
91
+ exports.DEFAULT_COLOR_UI = DEFAULT_COLOR_UI;
92
+ var LAYER_VIS_CONFIGS = {
93
+ thickness: {
94
+ type: 'number',
95
+ defaultValue: 2,
96
+ label: 'layerVisConfigs.strokeWidth',
97
+ isRanged: false,
98
+ range: [0, 100],
99
+ step: 0.1,
100
+ group: PROPERTY_GROUPS.stroke,
101
+ property: 'thickness',
102
+ allowCustomValue: true
103
+ },
104
+ strokeWidthRange: {
105
+ type: 'number',
106
+ defaultValue: [0, 10],
107
+ label: 'layerVisConfigs.strokeWidthRange',
108
+ isRanged: true,
109
+ range: [0, 200],
110
+ step: 0.1,
111
+ group: PROPERTY_GROUPS.stroke,
112
+ property: 'sizeRange',
113
+ allowCustomValue: true
114
+ },
115
+ trailLength: {
116
+ type: 'number',
117
+ defaultValue: 180,
118
+ label: 'layerVisConfigs.strokeWidth',
119
+ isRanged: false,
120
+ range: [1, 1000],
121
+ step: 1,
122
+ group: PROPERTY_GROUPS.stroke,
123
+ property: 'trailLength',
124
+ allowCustomValue: true
125
+ },
126
+ // radius is actually radiusScale in deck.gl
127
+ radius: {
128
+ type: 'number',
129
+ defaultValue: 10,
130
+ label: 'layerVisConfigs.radius',
131
+ isRanged: false,
132
+ range: [0, 100],
133
+ step: 0.1,
134
+ group: PROPERTY_GROUPS.radius,
135
+ property: 'radius',
136
+ allowCustomValue: true
137
+ },
138
+ fixedRadius: {
139
+ defaultValue: false,
140
+ type: 'boolean',
141
+ label: 'layerVisConfigs.fixedRadius',
142
+ description: 'layerVisConfigs.fixedRadiusDescription',
143
+ group: PROPERTY_GROUPS.radius,
144
+ property: 'fixedRadius'
145
+ },
146
+ radiusRange: {
147
+ type: 'number',
148
+ defaultValue: [0, 50],
149
+ isRanged: true,
150
+ range: [0, 500],
151
+ step: 0.1,
152
+ label: 'layerVisConfigs.radiusRange',
153
+ group: PROPERTY_GROUPS.radius,
154
+ property: 'radiusRange',
155
+ allowCustomValue: true
156
+ },
157
+ clusterRadius: {
158
+ type: 'number',
159
+ label: 'layerVisConfigs.clusterRadius',
160
+ defaultValue: 40,
161
+ isRanged: false,
162
+ range: [1, 500],
163
+ step: 0.1,
164
+ group: PROPERTY_GROUPS.radius,
165
+ property: 'clusterRadius',
166
+ allowCustomValue: true
167
+ },
168
+ clusterRadiusRange: {
169
+ type: 'number',
170
+ label: 'layerVisConfigs.radiusRangePixels',
171
+ defaultValue: [1, 40],
172
+ isRanged: true,
173
+ range: [1, 150],
174
+ step: 0.1,
175
+ group: PROPERTY_GROUPS.radius,
176
+ property: 'radiusRange',
177
+ allowCustomValue: true
178
+ },
179
+ opacity: {
180
+ type: 'number',
181
+ defaultValue: DEFAULT_LAYER_OPACITY,
182
+ label: 'layerVisConfigs.opacity',
183
+ isRanged: false,
184
+ range: [0, 1],
185
+ step: 0.01,
186
+ group: PROPERTY_GROUPS.color,
187
+ property: 'opacity',
188
+ allowCustomValue: false
189
+ },
190
+ coverage: {
191
+ type: 'number',
192
+ defaultValue: 1,
193
+ label: 'layerVisConfigs.coverage',
194
+ isRanged: false,
195
+ range: [0, 1],
196
+ step: 0.01,
197
+ group: PROPERTY_GROUPS.cell,
198
+ property: 'coverage',
199
+ allowCustomValue: false
200
+ },
201
+ // used in point layer
202
+ outline: {
203
+ type: 'boolean',
204
+ defaultValue: false,
205
+ label: 'layer.outline',
206
+ group: PROPERTY_GROUPS.display,
207
+ property: 'outline'
208
+ },
209
+ colorRange: {
210
+ type: 'color-range-select',
211
+ defaultValue: _colorRanges.DEFAULT_COLOR_RANGE,
212
+ label: 'layerVisConfigs.colorRange',
213
+ group: PROPERTY_GROUPS.color,
214
+ property: 'colorRange'
215
+ },
216
+ strokeColorRange: {
217
+ type: 'color-range-select',
218
+ defaultValue: _colorRanges.DEFAULT_COLOR_RANGE,
219
+ label: 'layerVisConfigs.strokeColorRange',
220
+ group: PROPERTY_GROUPS.color,
221
+ property: 'strokeColorRange'
222
+ },
223
+ targetColor: {
224
+ type: 'color-select',
225
+ label: 'layerVisConfigs.targetColor',
226
+ defaultValue: null,
227
+ group: PROPERTY_GROUPS.color,
228
+ property: 'targetColor'
229
+ },
230
+ strokeColor: {
231
+ type: 'color-select',
232
+ label: 'layerVisConfigs.strokeColor',
233
+ defaultValue: null,
234
+ group: PROPERTY_GROUPS.color,
235
+ property: 'strokeColor'
236
+ },
237
+ colorAggregation: {
238
+ type: 'select',
239
+ defaultValue: _defaultSettings.AGGREGATION_TYPES.average,
240
+ label: 'layerVisConfigs.colorAggregation',
241
+ // aggregation options are based on color field types
242
+ options: Object.keys(_defaultSettings.AGGREGATION_TYPES),
243
+ group: PROPERTY_GROUPS.color,
244
+ property: 'colorAggregation',
245
+ condition: function condition(config) {
246
+ return Boolean(config.colorField);
247
+ }
248
+ },
249
+ sizeAggregation: {
250
+ type: 'select',
251
+ defaultValue: _defaultSettings.AGGREGATION_TYPES.average,
252
+ label: 'layerVisConfigs.heightAggregation',
253
+ // aggregation options are based on color field types
254
+ options: Object.keys(_defaultSettings.AGGREGATION_TYPES),
255
+ group: PROPERTY_GROUPS.height,
256
+ property: 'sizeAggregation',
257
+ condition: function condition(config) {
258
+ return Boolean(config.sizeField);
259
+ }
260
+ },
261
+ percentile: {
262
+ type: 'number',
263
+ defaultValue: [0, 100],
264
+ label: function label(config) {
265
+ return "Filter by ".concat(config.colorField ? "".concat(config.visConfig.colorAggregation, " ").concat(config.colorField.name) : 'count', " percentile");
266
+ },
267
+ isRanged: true,
268
+ range: [0, 100],
269
+ step: 0.01,
270
+ group: PROPERTY_GROUPS.color,
271
+ property: 'percentile',
272
+ // percentile filter only makes sense with linear aggregation
273
+ condition: function condition(config) {
274
+ return config.colorScale !== 'ordinal';
275
+ },
276
+ allowCustomValue: false
277
+ },
278
+ elevationPercentile: {
279
+ type: 'number',
280
+ defaultValue: [0, 100],
281
+ label: function label(config) {
282
+ return "Filter by ".concat(config.sizeField ? "".concat(config.visConfig.sizeAggregation, " ").concat(config.sizeField.name) : 'count', " percentile");
283
+ },
284
+ isRanged: true,
285
+ range: [0, 100],
286
+ step: 0.01,
287
+ group: PROPERTY_GROUPS.height,
288
+ property: 'elevationPercentile',
289
+ // percentile filter only makes sense with linear aggregation
290
+ condition: function condition(config) {
291
+ return Boolean(config.visConfig.enable3d && (config.colorField || config.sizeField));
292
+ },
293
+ allowCustomValue: false
294
+ },
295
+ resolution: {
296
+ type: 'number',
297
+ defaultValue: 8,
298
+ label: 'layerVisConfigs.resolution',
299
+ isRanged: false,
300
+ range: [0, 13],
301
+ step: 1,
302
+ group: PROPERTY_GROUPS.cell,
303
+ property: 'resolution',
304
+ allowCustomValue: true
305
+ },
306
+ sizeScale: {
307
+ type: 'number',
308
+ defaultValue: 10,
309
+ label: 'layerVisConfigs.sizeScale',
310
+ isRanged: false,
311
+ range: [1, 1000],
312
+ step: 1,
313
+ group: PROPERTY_GROUPS.stroke,
314
+ property: 'sizeScale',
315
+ allowCustomValue: true
316
+ },
317
+ angle: {
318
+ type: 'number',
319
+ label: 'layerVisConfigs.angle',
320
+ defaultValue: 0,
321
+ isRanged: false,
322
+ range: [0, 360],
323
+ group: PROPERTY_GROUPS.angle,
324
+ step: 1,
325
+ property: 'angle',
326
+ allowCustomValue: true
327
+ },
328
+ worldUnitSize: {
329
+ type: 'number',
330
+ defaultValue: 1,
331
+ label: 'layerVisConfigs.worldUnitSize',
332
+ isRanged: false,
333
+ range: [0, 500],
334
+ step: 0.0001,
335
+ group: PROPERTY_GROUPS.cell,
336
+ property: 'worldUnitSize',
337
+ allowCustomValue: true
338
+ },
339
+ elevationScale: {
340
+ type: 'number',
341
+ defaultValue: 5,
342
+ label: 'layerVisConfigs.elevationScale',
343
+ isRanged: false,
344
+ range: [0, 100],
345
+ step: 0.1,
346
+ group: PROPERTY_GROUPS.height,
347
+ property: 'elevationScale',
348
+ allowCustomValue: true
349
+ },
350
+ enableElevationZoomFactor: {
351
+ type: 'boolean',
352
+ defaultValue: true,
353
+ label: 'layerVisConfigs.enableElevationZoomFactor',
354
+ group: PROPERTY_GROUPS.height,
355
+ property: 'enableElevationZoomFactor',
356
+ description: 'layerVisConfigs.enableElevationZoomFactorDescription'
357
+ },
358
+ elevationRange: {
359
+ type: 'number',
360
+ defaultValue: [0, 500],
361
+ label: 'layerVisConfigs.heightScale',
362
+ isRanged: true,
363
+ range: [0, 1000],
364
+ step: 0.01,
365
+ group: PROPERTY_GROUPS.height,
366
+ property: 'sizeRange',
367
+ allowCustomValue: true
368
+ },
369
+ heightRange: {
370
+ type: 'number',
371
+ defaultValue: [0, 500],
372
+ label: 'Height Scale',
373
+ isRanged: true,
374
+ range: [0, 1000],
375
+ step: 0.01,
376
+ group: PROPERTY_GROUPS.height,
377
+ property: 'heightRange',
378
+ allowCustomValue: true
379
+ },
380
+ coverageRange: {
381
+ type: 'number',
382
+ defaultValue: [0, 1],
383
+ label: 'layerVisConfigs.coverageRange',
384
+ isRanged: true,
385
+ range: [0, 1],
386
+ step: 0.01,
387
+ group: PROPERTY_GROUPS.radius,
388
+ property: 'coverageRange',
389
+ allowCustomValue: false
390
+ },
391
+ // hi precision is deprecated by deck.gl
392
+ 'hi-precision': {
393
+ type: 'boolean',
394
+ defaultValue: false,
395
+ label: 'layerVisConfigs.highPrecisionRendering',
396
+ group: PROPERTY_GROUPS.precision,
397
+ property: 'hi-precision',
398
+ description: 'layerVisConfigs.highPrecisionRenderingDescription'
399
+ },
400
+ enable3d: {
401
+ type: 'boolean',
402
+ defaultValue: false,
403
+ label: 'layerVisConfigs.height',
404
+ group: PROPERTY_GROUPS.height,
405
+ property: 'enable3d',
406
+ description: 'layerVisConfigs.heightDescription'
407
+ },
408
+ stroked: {
409
+ type: 'boolean',
410
+ label: 'layerVisConfigs.stroke',
411
+ defaultValue: true,
412
+ group: PROPERTY_GROUPS.display,
413
+ property: 'stroked'
414
+ },
415
+ filled: {
416
+ type: 'boolean',
417
+ label: 'layerVisConfigs.fill',
418
+ defaultValue: false,
419
+ group: PROPERTY_GROUPS.display,
420
+ property: 'filled'
421
+ },
422
+ extruded: {
423
+ type: 'boolean',
424
+ defaultValue: false,
425
+ label: 'layerVisConfigs.enablePolygonHeight',
426
+ group: PROPERTY_GROUPS.display,
427
+ property: 'extruded'
428
+ },
429
+ wireframe: {
430
+ type: 'boolean',
431
+ defaultValue: false,
432
+ label: 'layerVisConfigs.showWireframe',
433
+ group: PROPERTY_GROUPS.display,
434
+ property: 'wireframe'
435
+ },
436
+ // used for heatmap
437
+ weight: {
438
+ type: 'number',
439
+ defaultValue: 1,
440
+ label: 'layerVisConfigs.weightIntensity',
441
+ isRanged: false,
442
+ range: [0.01, 500],
443
+ step: 0.01,
444
+ group: PROPERTY_GROUPS.cell,
445
+ property: 'weight',
446
+ condition: function condition(config) {
447
+ return Boolean(config.weightField);
448
+ },
449
+ allowCustomValue: true
450
+ },
451
+ heatmapRadius: {
452
+ type: 'number',
453
+ defaultValue: 20,
454
+ label: 'layerVisConfigs.radius',
455
+ isRanged: false,
456
+ range: [0, 100],
457
+ step: 0.1,
458
+ group: PROPERTY_GROUPS.cell,
459
+ property: 'radius',
460
+ allowCustomValue: true
461
+ }
462
+ };
463
+ exports.LAYER_VIS_CONFIGS = LAYER_VIS_CONFIGS;
464
+ var LAYER_TEXT_CONFIGS = {
465
+ fontSize: {
466
+ type: 'number',
467
+ range: [1, 100],
468
+ value0: 1,
469
+ step: 1,
470
+ isRanged: false,
471
+ label: 'Font size',
472
+ showInput: true
473
+ },
474
+ textAnchor: {
475
+ type: 'select',
476
+ options: ['start', 'middle', 'end'],
477
+ multiSelect: false,
478
+ searchable: false
479
+ },
480
+ textAlignment: {
481
+ type: 'select',
482
+ options: ['top', 'center', 'bottom'],
483
+ multiSelect: false,
484
+ searchable: false
485
+ }
486
+ };
487
+ exports.LAYER_TEXT_CONFIGS = LAYER_TEXT_CONFIGS;
488
+ var LAYER_TYPES = (0, _keymirror["default"])({
489
+ point: null,
490
+ arc: null,
491
+ line: null,
492
+ grid: null,
493
+ hexagon: null,
494
+ geojson: null,
495
+ cluster: null,
496
+ icon: null,
497
+ heatmap: null,
498
+ hexagonId: null,
499
+ '3D': null,
500
+ trip: null,
501
+ s2: null
502
+ });
503
+ exports.LAYER_TYPES = LAYER_TYPES;
504
+ var EDITOR_AVAILABLE_LAYERS = [LAYER_TYPES.point, LAYER_TYPES.hexagon, LAYER_TYPES.arc, LAYER_TYPES.line, LAYER_TYPES.hexagonId];
505
+ exports.EDITOR_AVAILABLE_LAYERS = EDITOR_AVAILABLE_LAYERS;
506
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9sYXllcnMudHMiXSwibmFtZXMiOlsiUFJPUEVSVFlfR1JPVVBTIiwiY29sb3IiLCJzdHJva2UiLCJyYWRpdXMiLCJoZWlnaHQiLCJhbmdsZSIsImNlbGwiLCJwcmVjaXNpb24iLCJkaXNwbGF5IiwiREVGQVVMVF9MQVlFUl9PUEFDSVRZIiwiREVGQVVMVF9ISUdITElHSFRfQ09MT1IiLCJERUZBVUxUX0xBWUVSX0xBQkVMIiwiREVGQVVMVF9URVhUX0xBQkVMIiwiZmllbGQiLCJzaXplIiwib2Zmc2V0IiwiYW5jaG9yIiwiYWxpZ25tZW50IiwiREVGQVVMVF9DVVNUT01fUEFMRVRURSIsIm5hbWUiLCJ0eXBlIiwiY2F0ZWdvcnkiLCJjb2xvcnMiLCJVTktOT1dOX0NPTE9SX0tFWSIsIkRFRkFVTFRfQ09MT1JfVUkiLCJjdXN0b21QYWxldHRlIiwic2hvd1NrZXRjaGVyIiwic2hvd0Ryb3Bkb3duIiwiY29sb3JSYW5nZUNvbmZpZyIsInN0ZXBzIiwicmV2ZXJzZWQiLCJjdXN0b20iLCJMQVlFUl9WSVNfQ09ORklHUyIsInRoaWNrbmVzcyIsImRlZmF1bHRWYWx1ZSIsImxhYmVsIiwiaXNSYW5nZWQiLCJyYW5nZSIsInN0ZXAiLCJncm91cCIsInByb3BlcnR5IiwiYWxsb3dDdXN0b21WYWx1ZSIsInN0cm9rZVdpZHRoUmFuZ2UiLCJ0cmFpbExlbmd0aCIsImZpeGVkUmFkaXVzIiwiZGVzY3JpcHRpb24iLCJyYWRpdXNSYW5nZSIsImNsdXN0ZXJSYWRpdXMiLCJjbHVzdGVyUmFkaXVzUmFuZ2UiLCJvcGFjaXR5IiwiY292ZXJhZ2UiLCJvdXRsaW5lIiwiY29sb3JSYW5nZSIsIkRFRkFVTFRfQ09MT1JfUkFOR0UiLCJzdHJva2VDb2xvclJhbmdlIiwidGFyZ2V0Q29sb3IiLCJzdHJva2VDb2xvciIsImNvbG9yQWdncmVnYXRpb24iLCJBR0dSRUdBVElPTl9UWVBFUyIsImF2ZXJhZ2UiLCJvcHRpb25zIiwiT2JqZWN0Iiwia2V5cyIsImNvbmRpdGlvbiIsImNvbmZpZyIsIkJvb2xlYW4iLCJjb2xvckZpZWxkIiwic2l6ZUFnZ3JlZ2F0aW9uIiwic2l6ZUZpZWxkIiwicGVyY2VudGlsZSIsInZpc0NvbmZpZyIsImNvbG9yU2NhbGUiLCJlbGV2YXRpb25QZXJjZW50aWxlIiwiZW5hYmxlM2QiLCJyZXNvbHV0aW9uIiwic2l6ZVNjYWxlIiwid29ybGRVbml0U2l6ZSIsImVsZXZhdGlvblNjYWxlIiwiZW5hYmxlRWxldmF0aW9uWm9vbUZhY3RvciIsImVsZXZhdGlvblJhbmdlIiwiaGVpZ2h0UmFuZ2UiLCJjb3ZlcmFnZVJhbmdlIiwic3Ryb2tlZCIsImZpbGxlZCIsImV4dHJ1ZGVkIiwid2lyZWZyYW1lIiwid2VpZ2h0Iiwid2VpZ2h0RmllbGQiLCJoZWF0bWFwUmFkaXVzIiwiTEFZRVJfVEVYVF9DT05GSUdTIiwiZm9udFNpemUiLCJ2YWx1ZTAiLCJzaG93SW5wdXQiLCJ0ZXh0QW5jaG9yIiwibXVsdGlTZWxlY3QiLCJzZWFyY2hhYmxlIiwidGV4dEFsaWdubWVudCIsIkxBWUVSX1RZUEVTIiwicG9pbnQiLCJhcmMiLCJsaW5lIiwiZ3JpZCIsImhleGFnb24iLCJnZW9qc29uIiwiY2x1c3RlciIsImljb24iLCJoZWF0bWFwIiwiaGV4YWdvbklkIiwidHJpcCIsInMyIiwiRURJVE9SX0FWQUlMQUJMRV9MQVlFUlMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQW9CQTs7QUFFQTs7QUFDQTs7QUF2QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFpQk8sSUFBTUEsZUFBZSxHQUFHLDJCQUFVO0FBQ3ZDQyxFQUFBQSxLQUFLLEVBQUUsSUFEZ0M7QUFFdkNDLEVBQUFBLE1BQU0sRUFBRSxJQUYrQjtBQUd2Q0MsRUFBQUEsTUFBTSxFQUFFLElBSCtCO0FBSXZDQyxFQUFBQSxNQUFNLEVBQUUsSUFKK0I7QUFLdkNDLEVBQUFBLEtB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Qjs7QUFnQkEsSUFBTUMsdUJBQWlDLEdBQUcsQ0FDL0NiLFdBQVcsQ0FBQ0MsS0FEbUMsRUFFL0NELFdBQVcsQ0FBQ0ssT0FGbUMsRUFHL0NMLFdBQVcsQ0FBQ0UsR0FIbUMsRUFJL0NGLFdBQVcsQ0FBQ0csSUFKbUMsRUFLL0NILFdBQVcsQ0FBQ1UsU0FMbUMsQ0FBMUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIDIwMjIgVWJlciBUZWNobm9sb2dpZXMsIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuXG5pbXBvcnQga2V5TWlycm9yIGZyb20gJ2tleW1pcnJvcic7XG5cbmltcG9ydCB7Q29sb3JSYW5nZSwgREVGQVVMVF9DT0xPUl9SQU5HRX0gZnJvbSAnLi9jb2xvci1yYW5nZXMnO1xuaW1wb3J0IHtBR0dSRUdBVElPTl9UWVBFU30gZnJvbSAnLi9kZWZhdWx0LXNldHRpbmdzJztcblxuaW1wb3J0IHtcbiAgQ29sb3JVSSxcbiAgTGF5ZXJUZXh0Q29uZmlnLFxuICBMYXllclRleHRMYWJlbCxcbiAgTGF5ZXJWaXNDb25maWdTZXR0aW5ncyxcbiAgUkdCQUNvbG9yXG59IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuXG5leHBvcnQgdHlwZSBBZ2dyZWdhdGlvblR5cGVzID0ga2V5b2YgdHlwZW9mIEFHR1JFR0FUSU9OX1RZUEVTO1xuXG5leHBvcnQgY29uc3QgUFJPUEVSVFlfR1JPVVBTID0ga2V5TWlycm9yKHtcbiAgY29sb3I6IG51bGwsXG4gIHN0cm9rZTogbnVsbCxcbiAgcmFkaXVzOiBudWxsLFxuICBoZWlnaHQ6IG51bGwsXG4gIGFuZ2xlOiBudWxsLFxuICAvLyBmb3IgaGVhdG1hcCBhZ2dyZWdhdGlvblxuICBjZWxsOiBudWxsLFxuICBwcmVjaXNpb246IG51bGwsXG4gIGRpc3BsYXk6IG51bGxcbn0pO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9MQVlFUl9PUEFDSVRZID0gMC44O1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfSElHSExJR0hUX0NPTE9SOiBSR0JBQ29sb3IgPSBbMjUyLCAyNDIsIDI2LCAyNTVdO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfTEFZRVJfTEFCRUwgPSAnbmV3IGxheWVyJztcbmV4cG9ydCB7REVGQVVMVF9DT0xPUl9SQU5HRX07XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX1RFWFRfTEFCRUw6IExheWVyVGV4dExhYmVsID0ge1xuICBmaWVsZDogbnVsbCxcbiAgY29sb3I6IFsyNTUsIDI1NSwgMjU1XSxcbiAgc2l6ZTogMTgsXG4gIG9mZnNldDogWzAsIDBdLFxuICBhbmNob3I6ICdzdGFydCcsXG4gIGFsaWdubWVudDogJ2NlbnRlcidcbn07XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0NVU1RPTV9QQUxFVFRFOiBDb2xvclJhbmdlID0ge1xuICBuYW1lOiAnY29sb3IuY3VzdG9tUGFsZXR0ZScsXG4gIHR5cGU6ICdjdXN0b20nLFxuICBjYXRlZ29yeTogJ0N1c3RvbScsXG4gIGNvbG9yczogW11cbn07XG5cbmV4cG9ydCBjb25zdCBVTktOT1dOX0NPTE9SX0tFWSA9ICdfX3Vua25vd25Db2xvcl9fJztcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfQ09MT1JfVUk6IENvbG9yVUkgPSB7XG4gIC8vIGN1c3RvbVBhbGV0dGUgaW4gZWRpdFxuICBjdXN0b21QYWxldHRlOiBERUZBVUxUX0NVU1RPTV9QQUxFVFRFLFxuICAvLyBzaG93IGNvbG9yIHNrZXRjaGVyIG1vZGFsXG4gIHNob3dTa2V0Y2hlcjogZmFsc2UsXG4gIC8vIHNob3cgY29sb3IgcmFuZ2Ugc2VsZWN0aW9uIHBhbmVsXG4gIHNob3dEcm9wZG93bjogZmFsc2UsXG4gIC8vIGNvbG9yIHJhbmdlIHNlbGVjdG9yIGNvbmZpZ1xuICBjb2xvclJhbmdlQ29uZmlnOiB7XG4gICAgdHlwZTogJ2FsbCcsXG4gICAgc3RlcHM6IDYsXG4gICAgcmV2ZXJzZWQ6IGZhbHNlLFxuICAgIGN1c3RvbTogZmFsc2VcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IExBWUVSX1ZJU19DT05GSUdTOiBMYXllclZpc0NvbmZpZ1NldHRpbmdzID0ge1xuICB0aGlja25lc3M6IHtcbiAgICB0eXBlOiAnbnVtYmVyJyxcbiAgICBkZWZhdWx0VmFsdWU6IDIsXG4gICAgbGFiZWw6ICdsYXllclZpc0NvbmZpZ3Muc3Ryb2tlV2lkdGgnLFxuICAgIGlzUmFuZ2VkOiBmYWxzZSxcbiAgICByYW5nZTogWzAsIDEwMF0sXG4gICAgc3RlcDogMC4xLFxuICAgIGdyb3VwOiBQUk9QRVJUWV9HUk9VUFMuc3Ryb2tlLFxuICAgIHByb3BlcnR5OiAndGhpY2tuZXNzJyxcbiAgICBhbGxvd0N1c3RvbVZhbHVlOiB0cnVlXG4gIH0sXG4gIHN0cm9rZVdpZHRoUmFuZ2U6IHtcbiAgICB0eXBlOiAnbnVtYmVyJyxcbiAgICBkZWZhdWx0VmFsdWU6IFswLCAxMF0sXG4gICAgbGFiZWw6ICdsYXllclZpc0NvbmZpZ3Muc3Ryb2tlV2lkdGhSYW5nZScsXG4gICAgaXNSYW5nZWQ6IHRydWUsXG4gICAgcmFuZ2U6IFswLCAyMDBdLFxuICAgIHN0ZXA6IDAuMSxcbiAgICBncm91cDogUFJPUEVSVFlfR1JPVVBTLnN0cm9rZSxcbiAgICBwcm9wZXJ0eTogJ3NpemVSYW5nZScsXG4gICAgYWxsb3dDdXN0b21WYWx1ZTogdHJ1ZVxuICB9LFxuICB0cmFpbExlbmd0aDoge1xuICAgIHR5cGU6ICdudW1iZXInLFxuICAgIGRlZmF1bHRWYWx1ZTogMTgwLFxuICAgIGxhYmVsOiAnbGF5ZXJWaXNDb25maWdzLnN0cm9rZVdpZHRoJyxcbiAgICBpc1JhbmdlZDogZmFsc2UsXG4gICAgcmFuZ2U6IFsxLCAxMDAwXSxcbiAgICBzdGVwOiAxLFxuICAgIGdyb3VwOiBQUk9QRVJUWV9HUk9VUFMuc3Ryb2tlLFxuICAgIHByb3BlcnR5OiAndHJhaWxMZW5ndGgnLFxuICAgIGFsbG93Q3VzdG9tVmFsdWU6IHRydWVcbiAgfSxcbiAgLy8gcmFkaXVzIGlzIGFjdHVhbGx5IHJhZGl1c1NjYWxlIGluIGRlY2suZ2xcbiAgcmFkaXVzOiB7XG4gICAgdHlwZTogJ251bWJlcicsXG4gICAgZGVmYXVsdFZhbHVlOiAxMCxcbiAgICBsYWJlbDogJ2xheWVyVmlzQ29uZmlncy5yYWRpdXMnLFxuICAgIGlzUmFuZ2VkOiBmYWxzZSxcbiAgICByYW5nZTogWzAsIDEwMF0sXG4gICAgc3RlcDogMC4xLFxuICAgIGdyb3VwOiBQUk9QRVJUWV9HUk9VUFMucmFkaXVzLFxuICAgIHByb3BlcnR5OiAncmFkaXVzJyxcbiAgICBhbGxvd0N1c3RvbVZhbHVlOiB0cnVlXG4gIH0sXG4gIGZpeGVkUmFkaXVzOiB7XG4gICAgZGVmYXVsdFZhbHVlOiBmYWxzZSxcbiAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgbGFiZWw6ICdsYXllclZpc0NvbmZpZ3MuZml4ZWRSYWRpdXMnLFxuICAgIGRlc2NyaXB0aW9uOiAnbGF5ZXJWaXNDb25maWdzLmZpeGVkUmFkaXVzRGVzY3JpcHRpb24nLFxuICAgIGdyb3VwOiBQUk9QRVJUWV9HUk9VUFMucmFkaXVzLFxuICAgIHByb3BlcnR5OiAnZml4ZWRSYWRpdXMnXG4gIH0sXG4gIHJhZGl1c1JhbmdlOiB7XG4gICAgdHlwZTogJ251bWJlcicsXG4gICAgZGVmYXVsdFZhbHVlOiBbMCwgNTBdLFxuICAgIGlzUmFuZ2VkOiB0cnVlLFxuICAgIHJhbmdlOiBbMCwgNTAwXSxcbiAgICBzdGVwOiAwLjEsXG4gICAgbGFiZWw6ICdsYXllclZpc0NvbmZpZ3MucmFkaXVzUmFuZ2UnLFxuICAgIGdyb3VwOiBQUk9QRVJUWV9HUk9VUFMucmFkaXVzLFxuICAgIHByb3BlcnR5OiAncmFkaXVzUmFuZ2UnLFxuICAgIGFsbG93Q3VzdG9tVmFsdWU6IHRydWVcbiAgfSxcbiAgY2x1c3RlclJhZGl1czoge1xuICAgIHR5cGU6ICdudW1iZXInLFxuICAgIGxhYmVsOiAnbGF5ZXJWaXNDb25maWdzLmNsdXN0ZXJSYWRpdXMnLFxuICAgIGRlZmF1bHRWYWx1ZTogNDAsXG4gICAgaXNSYW5nZWQ6IGZhbHNlLFxuICAgIHJhbmdlOiBbMSwgNTAwXSxcbiAgICBzdGVwOiAwLjEsXG4gICAgZ3JvdXA6IFBST1BFUlRZX0dST1VQUy5yYWRpdXMsXG4gICAgcHJvcGVydHk6ICdjbHVzdGVyUmFkaXVzJyxcbiAgICBhbGxvd0N1c3RvbVZhbHVlOiB0cnVlXG4gIH0sXG4gIGNsdXN0ZXJSYWRpdXNSYW5nZToge1xuICAgIHR5cGU6ICdudW1iZXInLFxuICAgIGxhYmVsOiAnbGF5ZXJWaXNDb25maWdzLnJhZGl1c1JhbmdlUGl4ZWxzJyxcbiAgICBkZWZhdWx0VmFsdWU6IFsxLCA0MF0sXG4gICAgaXNSYW5nZWQ6IHRydWUsXG4gICAgcmFuZ2U6IFsxLCAxNTBdLFxuICAgIHN0ZXA6IDAuMSxcbiAgICBncm91cDogUFJPUEVSVFlfR1JPVVBTLnJhZGl1cyxcbiAgICBwcm9wZXJ0eTogJ3JhZGl1c1JhbmdlJyxcbiAgICBhbGxvd0N1c3RvbVZhbHVlOiB0cnVlXG4gIH0sXG4gIG9wYWNpdHk6IHtcbiAgICB0eXBlOiAnbnVtYmVyJyxcbiAgICBkZWZhdWx0VmFsdWU6IERFRkFVTFRfTEFZRVJfT1BBQ0lUWSxcbiAgICBsYWJlbDogJ2xheWVyVmlzQ29uZmlncy5vcGFjaXR5JyxcbiAgICBpc1JhbmdlZDogZmFsc2UsXG4gICAgcmFuZ2U6IFswLCAxXSxcbiAgICBzdGVwOiAwLjAxLFxuICAgIGdyb3VwOiBQUk9QRVJUWV9HUk9VUFMuY29sb3IsXG4gICAgcHJvcGVydHk6ICdvcGFjaXR5JyxcbiAgICBhbGxvd0N1c3RvbVZhbHVlOiBmYWxzZVxuICB9LFxuICBjb3ZlcmFnZToge1xuICAgIHR5cGU6ICdudW1iZXInLFxuICAgIGRlZmF1bHRWYWx1ZTogMSxcbiAgICBsYWJlbDogJ2xheWVyVmlzQ29uZmlncy5jb3ZlcmFnZScsXG4gICAgaXNSYW5nZWQ6IGZhbHNlLFxuICAgIHJhbmdlOiBbMCwgMV0sXG4gICAgc3RlcDogMC4wMSxcbiAgICBncm91cDogUFJPUEVSVFlfR1JPVVBTLmNlbGwsXG4gICAgcHJvcGVydHk6ICdjb3ZlcmFnZScsXG4gICAgYWxsb3dDdXN0b21WYWx1ZTogZmFsc2VcbiAgfSxcbiAgLy8gdXNlZCBpbiBwb2ludCBsYXllclxuICBvdXRsaW5lOiB7XG4gICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgIGRlZmF1bHRWYWx1ZTogZmFsc2UsXG4gICAgbGFiZWw6ICdsYXllci5vdXRsaW5lJyxcbiAgICBncm91cDogUFJPUEVSVFlfR1JPVVBTLmRpc3BsYXksXG4gICAgcHJvcGVydHk6ICdvdXRsaW5lJ1xuICB9LFxuICBjb2xvclJhbmdlOiB7XG4gICAgdHlwZTogJ2NvbG9yLXJhbmdlLXNlbGVjdCcsXG4gICAgZGVmYXVsdFZhbHVlOiBERUZBVUxUX0NPTE9SX1JBTkdFLFxuICAgIGxhYmVsOiAnbGF5ZXJWaXNDb25maWdzLmNvbG9yUmFuZ2UnLFxuICAgIGdyb3VwOiBQUk9QRVJUWV9HUk9VUFMuY29sb3IsXG4gICAgcHJvcGVydHk6ICdjb2xvclJhbmdlJ1xuICB9LFxuICBzdHJva2VDb2xvclJhbmdlOiB7XG4gICAgdHlwZTogJ2NvbG9yLXJhbmdlLXNlbGVjdCcsXG4gICAgZGVmYXVsdFZhbHVlOiBERUZBVUxUX0NPTE9SX1JBTkdFLFxuICAgIGxhYmVsOiAnbGF5ZXJWaXNDb25maWdzLnN0cm9rZUNvbG9yUmFuZ2UnLFxuICAgIGdyb3VwOiBQUk9QRVJUWV9HUk9VUFMuY29sb3IsXG4gICAgcHJvcGVydHk6ICdzdHJva2VDb2xvclJhbmdlJ1xuICB9LFxuICB0YXJnZXRDb2xvcjoge1xuICAgIHR5cGU6ICdjb2xvci1zZWxlY3QnLFxuICAgIGxhYmVsOiAnbGF5ZXJWaXNDb25maWdzLnRhcmdldENvbG9yJyxcbiAgICBkZWZhdWx0VmFsdWU6IG51bGwsXG4gICAgZ3JvdXA6IFBST1BFUlRZX0dST1VQUy5jb2xvcixcbiAgICBwcm9wZXJ0eTogJ3RhcmdldENvbG9yJ1xuICB9LFxuICBzdHJva2VDb2xvcjoge1xuICAgIHR5cGU6ICdjb2xvci1zZWxlY3QnLFxuICAgIGxhYmVsOiAnbGF5ZXJWaXNDb25maWdzLnN0cm9rZUNvbG9yJyxcbiAgICBkZWZhdWx0VmFsdWU6IG51bGwsXG4gICAgZ3JvdXA6IFBST1BFUlRZX0dST1VQUy5jb2xvcixcbiAgICBwcm9wZXJ0eTogJ3N0cm9rZUNvbG9yJ1xuICB9LFxuICBjb2xvckFnZ3JlZ2F0aW9uOiB7XG4gICAgdHlwZTogJ3NlbGVjdCcsXG4gICAgZGVmYXVsdFZhbHVlOiBBR0dSRUdBVElPTl9UWVBFUy5hdmVyYWdlLFxuICAgIGxhYmVsOiAnbGF5ZXJWaXNDb25maWdzLmNvbG9yQWdncmVnYXRpb24nLFxuICAgIC8vIGFnZ3JlZ2F0aW9uIG9wdGlvbnMgYXJlIGJhc2VkIG9uIGNvbG9yIGZpZWxkIHR5cGVzXG4gICAgb3B0aW9uczogT2JqZWN0LmtleXMoQUdHUkVHQVRJT05fVFlQRVMpIGFzIEFnZ3JlZ2F0aW9uVHlwZXNbXSxcbiAgICBncm91cDogUFJPUEVSVFlfR1JPVVBTLmNvbG9yLFxuICAgIHByb3BlcnR5OiAnY29sb3JBZ2dyZWdhdGlvbicsXG4gICAgY29uZGl0aW9uOiBjb25maWcgPT4gQm9vbGVhbihjb25maWcuY29sb3JGaWVsZClcbiAgfSxcbiAgc2l6ZUFnZ3JlZ2F0aW9uOiB7XG4gICAgdHlwZTogJ3NlbGVjdCcsXG4gICAgZGVmYXVsdFZhbHVlOiBBR0dSRUdBVElPTl9UWVBFUy5hdmVyYWdlLFxuICAgIGxhYmVsOiAnbGF5ZXJWaXNDb25maWdzLmhlaWdodEFnZ3JlZ2F0aW9uJyxcbiAgICAvLyBhZ2dyZWdhdGlvbiBvcHRpb25zIGFyZSBiYXNlZCBvbiBjb2xvciBmaWVsZCB0eXBlc1xuICAgIG9wdGlvbnM6IE9iamVjdC5rZXlzKEFHR1JFR0FUSU9OX1RZUEVTKSBhcyBBZ2dyZWdhdGlvblR5cGVzW10sXG4gICAgZ3JvdXA6IFBST1BFUlRZX0dST1VQUy5oZWlnaHQsXG4gICAgcHJvcGVydHk6ICdzaXplQWdncmVnYXRpb24nLFxuICAgIGNvbmRpdGlvbjogY29uZmlnID0+IEJvb2xlYW4oY29uZmlnLnNpemVGaWVsZClcbiAgfSxcbiAgcGVyY2VudGlsZToge1xuICAgIHR5cGU6ICdudW1iZXInLFxuICAgIGRlZmF1bHRWYWx1ZTogWzAsIDEwMF0sXG4gICAgbGFiZWw6IGNvbmZpZyA9PlxuICAgICAgYEZpbHRlciBieSAke1xuICAgICAgICBjb25maWcuY29sb3JGaWVsZFxuICAgICAgICAgID8gYCR7Y29uZmlnLnZpc0NvbmZpZy5jb2xvckFnZ3JlZ2F0aW9ufSAke2NvbmZpZy5jb2xvckZpZWxkLm5hbWV9YFxuICAgICAgICAgIDogJ2NvdW50J1xuICAgICAgfSBwZXJjZW50aWxlYCxcbiAgICBpc1JhbmdlZDogdHJ1ZSxcbiAgICByYW5nZTogWzAsIDEwMF0sXG4gICAgc3RlcDogMC4wMSxcbiAgICBncm91cDogUFJPUEVSVFlfR1JPVVBTLmNvbG9yLFxuICAgIHByb3BlcnR5OiAncGVyY2VudGlsZScsXG5cbiAgICAvLyBwZXJjZW50aWxlIGZpbHRlciBvbmx5IG1ha2VzIHNlbnNlIHdpdGggbGluZWFyIGFnZ3JlZ2F0aW9uXG4gICAgY29uZGl0aW9uOiBjb25maWcgPT4gY29uZmlnLmNvbG9yU2NhbGUgIT09ICdvcmRpbmFsJyxcbiAgICBhbGxvd0N1c3RvbVZhbHVlOiBmYWxzZVxuICB9LFxuICBlbGV2YXRpb25QZXJjZW50aWxlOiB7XG4gICAgdHlwZTogJ251bWJlcicsXG4gICAgZGVmYXVsdFZhbHVlOiBbMCwgMTAwXSxcbiAgICBsYWJlbDogY29uZmlnID0+XG4gICAgICBgRmlsdGVyIGJ5ICR7XG4gICAgICAgIGNvbmZpZy5zaXplRmllbGQgPyBgJHtjb25maWcudmlzQ29uZmlnLnNpemVBZ2dyZWdhdGlvbn0gJHtjb25maWcuc2l6ZUZpZWxkLm5hbWV9YCA6ICdjb3VudCdcbiAgICAgIH0gcGVyY2VudGlsZWAsXG4gICAgaXNSYW5nZWQ6IHRydWUsXG4gICAgcmFuZ2U6IFswLCAxMDBdLFxuICAgIHN0ZXA6IDAuMDEsXG4gICAgZ3JvdXA6IFBST1BFUlRZX0dST1VQUy5oZWlnaHQsXG4gICAgcHJvcGVydHk6ICdlbGV2YXRpb25QZXJjZW50aWxlJyxcbiAgICAvLyBwZXJjZW50aWxlIGZpbHRlciBvbmx5IG1ha2VzIHNlbnNlIHdpdGggbGluZWFyIGFnZ3JlZ2F0aW9uXG4gICAgY29uZGl0aW9uOiBjb25maWcgPT5cbiAgICAgIEJvb2xlYW4oY29uZmlnLnZpc0NvbmZpZy5lbmFibGUzZCAmJiAoY29uZmlnLmNvbG9yRmllbGQgfHwgY29uZmlnLnNpemVGaWVsZCkpLFxuICAgIGFsbG93Q3VzdG9tVmFsdWU6IGZhbHNlXG4gIH0sXG4gIHJlc29sdXRpb246IHtcbiAgICB0eXBlOiAnbnVtYmVyJyxcbiAgICBkZWZhdWx0VmFsdWU6IDgsXG4gICAgbGFiZWw6ICdsYXllclZpc0NvbmZpZ3MucmVzb2x1dGlvbicsXG4gICAgaXNSYW5nZWQ6IGZhbHNlLFxuICAgIHJhbmdlOiBbMCwgMTNdLFxuICAgIHN0ZXA6IDEsXG4gICAgZ3JvdXA6IFBST1BFUlRZX0dST1VQUy5jZWxsLFxuICAgIHByb3BlcnR5OiAncmVzb2x1dGlvbicsXG4gICAgYWxsb3dDdXN0b21WYWx1ZTogdHJ1ZVxuICB9LFxuICBzaXplU2NhbGU6IHtcbiAgICB0eXBlOiAnbnVtYmVyJyxcbiAgICBkZWZhdWx0VmFsdWU6IDEwLFxuICAgIGxhYmVsOiAnbGF5ZXJWaXNDb25maWdzLnNpemVTY2FsZScsXG4gICAgaXNSYW5nZWQ6IGZhbHNlLFxuICAgIHJhbmdlOiBbMSwgMTAwMF0sXG4gICAgc3RlcDogMSxcbiAgICBncm91cDogUFJPUEVSVFlfR1JPVVBTLnN0cm9rZSxcbiAgICBwcm9wZXJ0eTogJ3NpemVTY2FsZScsXG4gICAgYWxsb3dDdXN0b21WYWx1ZTogdHJ1ZVxuICB9LFxuICBhbmdsZToge1xuICAgIHR5cGU6ICdudW1iZXInLFxuICAgIGxhYmVsOiAnbGF5ZXJWaXNDb25maWdzLmFuZ2xlJyxcbiAgICBkZWZhdWx0VmFsdWU6IDAsXG4gICAgaXNSYW5nZWQ6IGZhbHNlLFxuICAgIHJhbmdlOiBbMCwgMzYwXSxcbiAgICBncm91cDogUFJPUEVSVFlfR1JPVVBTLmFuZ2xlLFxuICAgIHN0ZXA6IDEsXG4gICAgcHJvcGVydHk6ICdhbmdsZScsXG4gICAgYWxsb3dDdXN0b21WYWx1ZTogdHJ1ZVxuICB9LFxuICB3b3JsZFVuaXRTaXplOiB7XG4gICAgdHlwZTogJ251bWJlcicsXG4gICAgZGVmYXVsdFZhbHVlOiAxLFxuICAgIGxhYmVsOiAnbGF5ZXJWaXNDb25maWdzLndvcmxkVW5pdFNpemUnLFxuICAgIGlzUmFuZ2VkOiBmYWxzZSxcbiAgICByYW5nZTogWzAsIDUwMF0sXG4gICAgc3RlcDogMC4wMDAxLFxuICAgIGdyb3VwOiBQUk9QRVJUWV9HUk9VUFMuY2VsbCxcbiAgICBwcm9wZXJ0eTogJ3dvcmxkVW5pdFNpemUnLFxuICAgIGFsbG93Q3VzdG9tVmFsdWU6IHRydWVcbiAgfSxcbiAgZWxldmF0aW9uU2NhbGU6IHtcbiAgICB0eXBlOiAnbnVtYmVyJyxcbiAgICBkZWZhdWx0VmFsdWU6IDUsXG4gICAgbGFiZWw6ICdsYXllclZpc0NvbmZpZ3MuZWxldmF0aW9uU2NhbGUnLFxuICAgIGlzUmFuZ2VkOiBmYWxzZSxcbiAgICByYW5nZTogWzAsIDEwMF0sXG4gICAgc3RlcDogMC4xLFxuICAgIGdyb3VwOiBQUk9QRVJUWV9HUk9VUFMuaGVpZ2h0LFxuICAgIHByb3BlcnR5OiAnZWxldmF0aW9uU2NhbGUnLFxuICAgIGFsbG93Q3VzdG9tVmFsdWU6IHRydWVcbiAgfSxcbiAgZW5hYmxlRWxldmF0aW9uWm9vbUZhY3Rvcjoge1xuICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICBkZWZhdWx0VmFsdWU6IHRydWUsXG4gICAgbGFiZWw6ICdsYXllclZpc0NvbmZpZ3MuZW5hYmxlRWxldmF0aW9uWm9vbUZhY3RvcicsXG4gICAgZ3JvdXA6IFBST1BFUlRZX0dST1VQUy5oZWlnaHQsXG4gICAgcHJvcGVydHk6ICdlbmFibGVFbGV2YXRpb25ab29tRmFjdG9yJyxcbiAgICBkZXNjcmlwdGlvbjogJ2xheWVyVmlzQ29uZmlncy5lbmFibGVFbGV2YXRpb25ab29tRmFjdG9yRGVzY3JpcHRpb24nXG4gIH0sXG4gIGVsZXZhdGlvblJhbmdlOiB7XG4gICAgdHlwZTogJ251bWJlcicsXG4gICAgZGVmYXVsdFZhbHVlOiBbMCwgNTAwXSxcbiAgICBsYWJlbDogJ2xheWVyVmlzQ29uZmlncy5oZWlnaHRTY2FsZScsXG4gICAgaXNSYW5nZWQ6IHRydWUsXG4gICAgcmFuZ2U6IFswLCAxMDAwXSxcbiAgICBzdGVwOiAwLjAxLFxuICAgIGdyb3VwOiBQUk9QRVJUWV9HUk9VUFMuaGVpZ2h0LFxuICAgIHByb3BlcnR5OiAnc2l6ZVJhbmdlJyxcbiAgICBhbGxvd0N1c3RvbVZhbHVlOiB0cnVlXG4gIH0sXG4gIGhlaWdodFJhbmdlOiB7XG4gICAgdHlwZTogJ251bWJlcicsXG4gICAgZGVmYXVsdFZhbHVlOiBbMCwgNTAwXSxcbiAgICBsYWJlbDogJ0hlaWdodCBTY2FsZScsXG4gICAgaXNSYW5nZWQ6IHRydWUsXG4gICAgcmFuZ2U6IFswLCAxMDAwXSxcbiAgICBzdGVwOiAwLjAxLFxuICAgIGdyb3VwOiBQUk9QRVJUWV9HUk9VUFMuaGVpZ2h0LFxuICAgIHByb3BlcnR5OiAnaGVpZ2h0UmFuZ2UnLFxuICAgIGFsbG93Q3VzdG9tVmFsdWU6IHRydWVcbiAgfSxcbiAgY292ZXJhZ2VSYW5nZToge1xuICAgIHR5cGU6ICdudW1iZXInLFxuICAgIGRlZmF1bHRWYWx1ZTogWzAsIDFdLFxuICAgIGxhYmVsOiAnbGF5ZXJWaXNDb25maWdzLmNvdmVyYWdlUmFuZ2UnLFxuICAgIGlzUmFuZ2VkOiB0cnVlLFxuICAgIHJhbmdlOiBbMCwgMV0sXG4gICAgc3RlcDogMC4wMSxcbiAgICBncm91cDogUFJPUEVSVFlfR1JPVVBTLnJhZGl1cyxcbiAgICBwcm9wZXJ0eTogJ2NvdmVyYWdlUmFuZ2UnLFxuICAgIGFsbG93Q3VzdG9tVmFsdWU6IGZhbHNlXG4gIH0sXG4gIC8vIGhpIHByZWNpc2lvbiBpcyBkZXByZWNhdGVkIGJ5IGRlY2suZ2xcbiAgJ2hpLXByZWNpc2lvbic6IHtcbiAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgZGVmYXVsdFZhbHVlOiBmYWxzZSxcbiAgICBsYWJlbDogJ2xheWVyVmlzQ29uZmlncy5oaWdoUHJlY2lzaW9uUmVuZGVyaW5nJyxcbiAgICBncm91cDogUFJPUEVSVFlfR1JPVVBTLnByZWNpc2lvbixcbiAgICBwcm9wZXJ0eTogJ2hpLXByZWNpc2lvbicsXG4gICAgZGVzY3JpcHRpb246ICdsYXllclZpc0NvbmZpZ3MuaGlnaFByZWNpc2lvblJlbmRlcmluZ0Rlc2NyaXB0aW9uJ1xuICB9LFxuICBlbmFibGUzZDoge1xuICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICBkZWZhdWx0VmFsdWU6IGZhbHNlLFxuICAgIGxhYmVsOiAnbGF5ZXJWaXNDb25maWdzLmhlaWdodCcsXG4gICAgZ3JvdXA6IFBST1BFUlRZX0dST1VQUy5oZWlnaHQsXG4gICAgcHJvcGVydHk6ICdlbmFibGUzZCcsXG4gICAgZGVzY3JpcHRpb246ICdsYXllclZpc0NvbmZpZ3MuaGVpZ2h0RGVzY3JpcHRpb24nXG4gIH0sXG4gIHN0cm9rZWQ6IHtcbiAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgbGFiZWw6ICdsYXllclZpc0NvbmZpZ3Muc3Ryb2tlJyxcbiAgICBkZWZhdWx0VmFsdWU6IHRydWUsXG4gICAgZ3JvdXA6IFBST1BFUlRZX0dST1VQUy5kaXNwbGF5LFxuICAgIHByb3BlcnR5OiAnc3Ryb2tlZCdcbiAgfSxcbiAgZmlsbGVkOiB7XG4gICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgIGxhYmVsOiAnbGF5ZXJWaXNDb25maWdzLmZpbGwnLFxuICAgIGRlZmF1bHRWYWx1ZTogZmFsc2UsXG4gICAgZ3JvdXA6IFBST1BFUlRZX0dST1VQUy5kaXNwbGF5LFxuICAgIHByb3BlcnR5OiAnZmlsbGVkJ1xuICB9LFxuICBleHRydWRlZDoge1xuICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICBkZWZhdWx0VmFsdWU6IGZhbHNlLFxuICAgIGxhYmVsOiAnbGF5ZXJWaXNDb25maWdzLmVuYWJsZVBvbHlnb25IZWlnaHQnLFxuICAgIGdyb3VwOiBQUk9QRVJUWV9HUk9VUFMuZGlzcGxheSxcbiAgICBwcm9wZXJ0eTogJ2V4dHJ1ZGVkJ1xuICB9LFxuICB3aXJlZnJhbWU6IHtcbiAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgZGVmYXVsdFZhbHVlOiBmYWxzZSxcbiAgICBsYWJlbDogJ2xheWVyVmlzQ29uZmlncy5zaG93V2lyZWZyYW1lJyxcbiAgICBncm91cDogUFJPUEVSVFlfR1JPVVBTLmRpc3BsYXksXG4gICAgcHJvcGVydHk6ICd3aXJlZnJhbWUnXG4gIH0sXG4gIC8vIHVzZWQgZm9yIGhlYXRtYXBcbiAgd2VpZ2h0OiB7XG4gICAgdHlwZTogJ251bWJlcicsXG4gICAgZGVmYXVsdFZhbHVlOiAxLFxuICAgIGxhYmVsOiAnbGF5ZXJWaXNDb25maWdzLndlaWdodEludGVuc2l0eScsXG4gICAgaXNSYW5nZWQ6IGZhbHNlLFxuICAgIHJhbmdlOiBbMC4wMSwgNTAwXSxcbiAgICBzdGVwOiAwLjAxLFxuICAgIGdyb3VwOiBQUk9QRVJUWV9HUk9VUFMuY2VsbCxcbiAgICBwcm9wZXJ0eTogJ3dlaWdodCcsXG4gICAgY29uZGl0aW9uOiBjb25maWcgPT4gQm9vbGVhbihjb25maWcud2VpZ2h0RmllbGQpLFxuICAgIGFsbG93Q3VzdG9tVmFsdWU6IHRydWVcbiAgfSxcbiAgaGVhdG1hcFJhZGl1czoge1xuICAgIHR5cGU6ICdudW1iZXInLFxuICAgIGRlZmF1bHRWYWx1ZTogMjAsXG4gICAgbGFiZWw6ICdsYXllclZpc0NvbmZpZ3MucmFkaXVzJyxcbiAgICBpc1JhbmdlZDogZmFsc2UsXG4gICAgcmFuZ2U6IFswLCAxMDBdLFxuICAgIHN0ZXA6IDAuMSxcbiAgICBncm91cDogUFJPUEVSVFlfR1JPVVBTLmNlbGwsXG4gICAgcHJvcGVydHk6ICdyYWRpdXMnLFxuICAgIGFsbG93Q3VzdG9tVmFsdWU6IHRydWVcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IExBWUVSX1RFWFRfQ09ORklHUzogTGF5ZXJUZXh0Q29uZmlnID0ge1xuICBmb250U2l6ZToge1xuICAgIHR5cGU6ICdudW1iZXInLFxuICAgIHJhbmdlOiBbMSwgMTAwXSxcbiAgICB2YWx1ZTA6IDEsXG4gICAgc3RlcDogMSxcbiAgICBpc1JhbmdlZDogZmFsc2UsXG4gICAgbGFiZWw6ICdGb250IHNpemUnLFxuICAgIHNob3dJbnB1dDogdHJ1ZVxuICB9LFxuICB0ZXh0QW5jaG9yOiB7XG4gICAgdHlwZTogJ3NlbGVjdCcsXG4gICAgb3B0aW9uczogWydzdGFydCcsICdtaWRkbGUnLCAnZW5kJ10sXG4gICAgbXVsdGlTZWxlY3Q6IGZhbHNlLFxuICAgIHNlYXJjaGFibGU6IGZhbHNlXG4gIH0sXG4gIHRleHRBbGlnbm1lbnQ6IHtcbiAgICB0eXBlOiAnc2VsZWN0JyxcbiAgICBvcHRpb25zOiBbJ3RvcCcsICdjZW50ZXInLCAnYm90dG9tJ10sXG4gICAgbXVsdGlTZWxlY3Q6IGZhbHNlLFxuICAgIHNlYXJjaGFibGU6IGZhbHNlXG4gIH1cbn07XG5leHBvcnQgY29uc3QgTEFZRVJfVFlQRVMgPSBrZXlNaXJyb3Ioe1xuICBwb2ludDogbnVsbCxcbiAgYXJjOiBudWxsLFxuICBsaW5lOiBudWxsLFxuICBncmlkOiBudWxsLFxuICBoZXhhZ29uOiBudWxsLFxuICBnZW9qc29uOiBudWxsLFxuICBjbHVzdGVyOiBudWxsLFxuICBpY29uOiBudWxsLFxuICBoZWF0bWFwOiBudWxsLFxuICBoZXhhZ29uSWQ6IG51bGwsXG4gICczRCc6IG51bGwsXG4gIHRyaXA6IG51bGwsXG4gIHMyOiBudWxsXG59KTtcblxuZXhwb3J0IGNvbnN0IEVESVRPUl9BVkFJTEFCTEVfTEFZRVJTOiBzdHJpbmdbXSA9IFtcbiAgTEFZRVJfVFlQRVMucG9pbnQsXG4gIExBWUVSX1RZUEVTLmhleGFnb24sXG4gIExBWUVSX1RZUEVTLmFyYyxcbiAgTEFZRVJfVFlQRVMubGluZSxcbiAgTEFZRVJfVFlQRVMuaGV4YWdvbklkXG5dO1xuIl19