@kepler.gl/constants 3.1.0-alpha.1 → 3.1.0-alpha.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/color-palettes.d.ts +82 -0
- package/dist/color-palettes.js +440 -0
- package/dist/colors-by-theme.d.ts +11 -0
- package/dist/colors-by-theme.js +519 -0
- package/dist/default-settings.d.ts +842 -0
- package/dist/default-settings.js +1282 -0
- package/dist/dnd-layer-items.d.ts +8 -0
- package/dist/dnd-layer-items.js +18 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.js +125 -0
- package/dist/keyevent.d.ts +2 -0
- package/dist/keyevent.js +26 -0
- package/dist/layers.d.ts +41 -0
- package/dist/layers.js +546 -0
- package/dist/plot.d.ts +4 -0
- package/dist/plot.js +16 -0
- package/dist/time.d.ts +99 -0
- package/dist/time.js +194 -0
- package/dist/tooltip.d.ts +208 -0
- package/dist/tooltip.js +221 -0
- package/dist/user-feedbacks.d.ts +5 -0
- package/dist/user-feedbacks.js +15 -0
- package/dist/user-guides.d.ts +9 -0
- package/dist/user-guides.js +19 -0
- package/package.json +14 -4
- package/umd/keplergl.min.js +58 -0
|
@@ -0,0 +1,1282 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.PANEL_VIEW_TOGGLES = exports.PANELS = exports.OneXResolutionOption = exports.OVERWRITE_MAP_ID = exports.OVERLAY_BLENDINGS = exports.NO_VALUE_COLOR = exports.NO_MAP_ID = exports.NO_BASEMAP_ICON = exports.MAX_GPU_FILTERS = exports.MAX_DEFAULT_TOOLTIPS = exports.MAP_THUMBNAIL_DIMENSION = exports.MAP_INFO_CHARACTER = exports.MAP_CONTROLS = exports.LOADING_METHODS = exports.LIGHT_AND_SHADOW_EFFECT_TIME_MODES = exports.LIGHT_AND_SHADOW_EFFECT = exports.LAYER_BLENDINGS = exports.KEPLER_UNFOLDED_BUCKET = exports.KEPLER_GL_WEBSITE = exports.KEPLER_GL_VERSION = exports.KEPLER_GL_NAME = exports.INIT_FILTER_ITEMS_IN_DROPDOWN = exports.ICON_FIELDS = exports.HIGHLIGH_COLOR_3D = exports.GEOJSON_FIELDS = exports.GEOCODER_LAYER_ID = exports.GEOCODER_ICON_SIZE = exports.GEOCODER_ICON_COLOR = exports.GEOCODER_GEO_OFFSET = exports.GEOCODER_DATASET_NAME = exports.FourByThreeRatioOption = exports.FPS = exports.FILTER_VIEW_TYPES = exports.FILTER_TYPES = exports.FIELD_TYPE_DISPLAY = exports.FIELD_OPTS = exports.FIELD_COLORS = exports.EXPORT_MAP_ID = exports.EXPORT_MAP_FORMAT_OPTIONS = exports.EXPORT_MAP_FORMATS = exports.EXPORT_IMG_RESOLUTION_OPTIONS = exports.EXPORT_IMG_RATIO_OPTIONS = exports.EXPORT_IMG_RATIOS = exports.EXPORT_IMAGE_ID = exports.EXPORT_HTML_MAP_MODE_OPTIONS = exports.EXPORT_HTML_MAP_MODES = exports.EXPORT_DATA_TYPE_OPTIONS = exports.EXPORT_DATA_TYPE = exports.EXPORT_DATA_ID = exports.EMPTY_MAPBOX_STYLE = exports.EFFECT_DESCRIPTIONS = exports.EDITOR_MODES = exports.EDITOR_LAYER_PICKING_RADIUS = exports.EDITOR_LAYER_ID = exports.DIMENSIONS = exports.DELETE_DATA_ID = exports.DEFAULT_UUID_COUNT = exports.DEFAULT_TOOLTIP_FIELDS = exports.DEFAULT_TIME_FORMAT = exports.DEFAULT_TIMEZONE = exports.DEFAULT_SHADOW_INTENSITY = exports.DEFAULT_SHADOW_COLOR = exports.DEFAULT_POST_PROCESSING_EFFECT_TYPE = exports.DEFAULT_PICKING_RADIUS = exports.DEFAULT_NOTIFICATION_TYPES = exports.DEFAULT_NOTIFICATION_TOPICS = exports.DEFAULT_NOTIFICATION_MESSAGE = exports.DEFAULT_MAP_STYLES = exports.DEFAULT_MAPBOX_API_URL = exports.DEFAULT_LIGHT_INTENSITY = exports.DEFAULT_LIGHT_COLOR = exports.DEFAULT_LIGHT_AND_SHADOW_PROPS = exports.DEFAULT_LAYER_GROUPS = exports.DEFAULT_LAYER_COLOR_PALETTE_STEPS = exports.DEFAULT_LAYER_COLOR_PALETTE = exports.DEFAULT_LAYER_COLOR = exports.DEFAULT_FILTER_VIEW_TYPE = exports.DEFAULT_FEATURE_FLAGS = exports.DEFAULT_BLDG_COLOR = exports.DEFAULT_BACKGROUND_COLOR = exports.DEFAULT_AGGREGATION = exports.DATA_TABLE_ID = exports.DATASET_FORMATS = exports.CustomRatioOption = exports.CHANNEL_SCALE_SUPPORTED_FIELDS = exports.CHANNEL_SCALES = exports.BASE_SPEED = exports.BASE_MAP_COLOR_MODES = exports.BASE_MAP_BACKGROUND_LAYER_IDS = exports.BASEMAP_ICON_PREFIX = exports.BACKGROUND_LAYER_GROUP_SLUG = exports.BACKGROUND_LAYER_GROUP = exports.ANIMATION_WINDOW = exports.ALTITUDE_FIELDS = exports.ALL_FIELD_TYPES = exports.AGGREGATION_TYPE_OPTIONS = exports.AGGREGATION_TYPES = exports.ADD_MAP_STYLE_ID = exports.ADD_DATA_ID = exports.ACTION_PREFIX = void 0;
|
|
8
|
+
exports.dataTestIds = exports.TwoXResolutionOption = exports.TRIP_POINT_FIELDS = exports.TRIP_ARC_FIELDS = exports.TRANSITION_DURATION = exports.THROTTLE_NOTIFICATION_TIME = exports.THREE_D_BUILDING_LAYER_GROUP_SLUG = exports.THEME = exports.TEXT_OUTLINE_MULTIPLIER = exports.TABLE_OPTION_LIST = exports.TABLE_OPTION = exports.SixteenByNineRatioOption = exports.ScreenRatioOption = exports.SYNC_TIMELINE_MODES = exports.SPEED_CONTROL_STEP = exports.SPEED_CONTROL_RANGE = exports.SORT_ORDER = exports.SIDEBAR_PANELS = exports.SHARE_MAP_ID = exports.SCALE_TYPE_NAMES = exports.SCALE_TYPES = exports.SCALE_FUNC = exports.SAVE_MAP_ID = exports.RESOLUTIONS = exports.PROJECTED_PIXEL_SIZE_MULTIPLIER = exports.POSTPROCESSING_EFFECTS = exports.PLOT_TYPES = void 0;
|
|
9
|
+
exports.getHTMLMapModeTileUrl = getHTMLMapModeTileUrl;
|
|
10
|
+
exports.ordinalFieldScaleFunctions = exports.ordinalFieldAggrScaleFunctions = exports.notSupportedScaleOpts = exports.notSupportAggrOpts = exports.linearFieldScaleFunctions = exports.linearFieldAggrScaleFunctions = void 0;
|
|
11
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
12
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
13
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
14
|
+
var _keymirror = _interopRequireDefault(require("keymirror"));
|
|
15
|
+
var _d3Scale = require("d3-scale");
|
|
16
|
+
var _tooltip = require("./tooltip");
|
|
17
|
+
var _FIELD_TYPE_DISPLAY, _FIELD_OPTS; // SPDX-License-Identifier: MIT
|
|
18
|
+
// Copyright contributors to the kepler.gl project
|
|
19
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
20
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
21
|
+
var ACTION_PREFIX = exports.ACTION_PREFIX = '@@kepler.gl/';
|
|
22
|
+
var KEPLER_UNFOLDED_BUCKET = exports.KEPLER_UNFOLDED_BUCKET = 'https://studio-public-data.foursquare.com/statics/keplergl';
|
|
23
|
+
var BASEMAP_ICON_PREFIX = exports.BASEMAP_ICON_PREFIX = "".concat(KEPLER_UNFOLDED_BUCKET, "/geodude");
|
|
24
|
+
var DEFAULT_MAPBOX_API_URL = exports.DEFAULT_MAPBOX_API_URL = 'https://api.mapbox.com';
|
|
25
|
+
var TRANSITION_DURATION = exports.TRANSITION_DURATION = 0;
|
|
26
|
+
|
|
27
|
+
// Modal Ids
|
|
28
|
+
/**
|
|
29
|
+
* Modal id: data table
|
|
30
|
+
* @constant
|
|
31
|
+
* @type {string}
|
|
32
|
+
* @public
|
|
33
|
+
*/
|
|
34
|
+
var DATA_TABLE_ID = exports.DATA_TABLE_ID = 'dataTable';
|
|
35
|
+
/**
|
|
36
|
+
* Modal id: delete dataset confirm dialog
|
|
37
|
+
* @constant
|
|
38
|
+
* @type {string}
|
|
39
|
+
* @public
|
|
40
|
+
*/
|
|
41
|
+
var DELETE_DATA_ID = exports.DELETE_DATA_ID = 'deleteData';
|
|
42
|
+
/**
|
|
43
|
+
* Modal id: add data modal
|
|
44
|
+
* @constant
|
|
45
|
+
* @type {string}
|
|
46
|
+
* @public
|
|
47
|
+
*/
|
|
48
|
+
var ADD_DATA_ID = exports.ADD_DATA_ID = 'addData';
|
|
49
|
+
/**
|
|
50
|
+
* Modal id: export image modal
|
|
51
|
+
* @constant
|
|
52
|
+
* @type {string}
|
|
53
|
+
* @public
|
|
54
|
+
*/
|
|
55
|
+
var EXPORT_IMAGE_ID = exports.EXPORT_IMAGE_ID = 'exportImage';
|
|
56
|
+
/**
|
|
57
|
+
* Modal id: export data modal
|
|
58
|
+
* @constant
|
|
59
|
+
* @type {string}
|
|
60
|
+
* @public
|
|
61
|
+
*/
|
|
62
|
+
var EXPORT_DATA_ID = exports.EXPORT_DATA_ID = 'exportData';
|
|
63
|
+
/**
|
|
64
|
+
* Modal id: add custom map style modal
|
|
65
|
+
* @constant
|
|
66
|
+
* @type {string}
|
|
67
|
+
* @public
|
|
68
|
+
*/
|
|
69
|
+
var ADD_MAP_STYLE_ID = exports.ADD_MAP_STYLE_ID = 'addMapStyle';
|
|
70
|
+
/**
|
|
71
|
+
* Modal id: export map modal
|
|
72
|
+
* @constant
|
|
73
|
+
* @type {string}
|
|
74
|
+
* @public
|
|
75
|
+
*/
|
|
76
|
+
var EXPORT_MAP_ID = exports.EXPORT_MAP_ID = 'exportMap';
|
|
77
|
+
/**
|
|
78
|
+
* Modal id: save map modal
|
|
79
|
+
* @constant
|
|
80
|
+
* @type {string}
|
|
81
|
+
* @public
|
|
82
|
+
*/
|
|
83
|
+
var SAVE_MAP_ID = exports.SAVE_MAP_ID = 'saveMap';
|
|
84
|
+
/**
|
|
85
|
+
* Modal id: confirm to overwrite saved map
|
|
86
|
+
* @constant
|
|
87
|
+
* @type {string}
|
|
88
|
+
* @public
|
|
89
|
+
*/
|
|
90
|
+
var OVERWRITE_MAP_ID = exports.OVERWRITE_MAP_ID = 'overwriteMap';
|
|
91
|
+
/**
|
|
92
|
+
* Modal id: share map url modal
|
|
93
|
+
* @constant
|
|
94
|
+
* @type {string}
|
|
95
|
+
* @public
|
|
96
|
+
*/
|
|
97
|
+
var SHARE_MAP_ID = exports.SHARE_MAP_ID = 'shareMap';
|
|
98
|
+
var KEPLER_GL_NAME = exports.KEPLER_GL_NAME = 'kepler.gl';
|
|
99
|
+
|
|
100
|
+
// __PACKAGE_VERSION__ is automatically injected by Babel/Esbuild during the build process
|
|
101
|
+
// Since we are injecting this during the build process with babel
|
|
102
|
+
// while developing VERSION is not defined, we capture the exception and return
|
|
103
|
+
// an empty string which will allow us to retrieve the latest umd version
|
|
104
|
+
var KEPLER_GL_VERSION = exports.KEPLER_GL_VERSION = "3.1.0-alpha.3";
|
|
105
|
+
var KEPLER_GL_WEBSITE = exports.KEPLER_GL_WEBSITE = 'http://kepler.gl/';
|
|
106
|
+
var DIMENSIONS = exports.DIMENSIONS = {
|
|
107
|
+
sidePanel: {
|
|
108
|
+
width: 300,
|
|
109
|
+
margin: {
|
|
110
|
+
top: 20,
|
|
111
|
+
left: 20,
|
|
112
|
+
bottom: 30,
|
|
113
|
+
right: 20
|
|
114
|
+
},
|
|
115
|
+
headerHeight: 96
|
|
116
|
+
},
|
|
117
|
+
mapControl: {
|
|
118
|
+
width: 184,
|
|
119
|
+
padding: 12,
|
|
120
|
+
mapLegend: {
|
|
121
|
+
pinned: {
|
|
122
|
+
bottom: 22,
|
|
123
|
+
right: 12
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
};
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* Theme name that can be passed to `KeplerGl` `prop.theme`.
|
|
131
|
+
* Available themes are `THEME.light` and `THEME.dark`. Default theme is `THEME.dark`
|
|
132
|
+
* @constant
|
|
133
|
+
* @type {object}
|
|
134
|
+
* @public
|
|
135
|
+
* @example
|
|
136
|
+
* ```js
|
|
137
|
+
* const Map = () => <KeplerGl theme={THEME.light} id="map"/>
|
|
138
|
+
* ```
|
|
139
|
+
*/
|
|
140
|
+
var THEME = exports.THEME = (0, _keymirror["default"])({
|
|
141
|
+
light: null,
|
|
142
|
+
dark: null,
|
|
143
|
+
base: null
|
|
144
|
+
});
|
|
145
|
+
var SIDEBAR_PANELS = exports.SIDEBAR_PANELS = [{
|
|
146
|
+
id: 'layer',
|
|
147
|
+
label: 'sidebar.panels.layer',
|
|
148
|
+
onClick: null
|
|
149
|
+
}, {
|
|
150
|
+
id: 'filter',
|
|
151
|
+
label: 'sidebar.panels.filter',
|
|
152
|
+
onClick: null
|
|
153
|
+
}, {
|
|
154
|
+
id: 'interaction',
|
|
155
|
+
label: 'sidebar.panels.interaction',
|
|
156
|
+
onClick: null
|
|
157
|
+
}, {
|
|
158
|
+
id: 'map',
|
|
159
|
+
label: 'sidebar.panels.basemap',
|
|
160
|
+
onClick: null
|
|
161
|
+
}];
|
|
162
|
+
var PANEL_VIEW_TOGGLES = exports.PANEL_VIEW_TOGGLES = (0, _keymirror["default"])({
|
|
163
|
+
list: null,
|
|
164
|
+
byDataset: null
|
|
165
|
+
});
|
|
166
|
+
|
|
167
|
+
// backward compatibility
|
|
168
|
+
var PANELS = exports.PANELS = SIDEBAR_PANELS;
|
|
169
|
+
|
|
170
|
+
// MAP STYLES
|
|
171
|
+
|
|
172
|
+
var DEFAULT_BLDG_COLOR = exports.DEFAULT_BLDG_COLOR = '#D1CEC7';
|
|
173
|
+
var DEFAULT_BACKGROUND_COLOR = exports.DEFAULT_BACKGROUND_COLOR = '#000000';
|
|
174
|
+
|
|
175
|
+
// assists in identifying basemap background layers when auto-determining the backgroundColor
|
|
176
|
+
var BASE_MAP_BACKGROUND_LAYER_IDS = exports.BASE_MAP_BACKGROUND_LAYER_IDS = ['background', 'bg', 'land', 'water'];
|
|
177
|
+
var BACKGROUND_LAYER_GROUP_SLUG = exports.BACKGROUND_LAYER_GROUP_SLUG = 'Background';
|
|
178
|
+
var THREE_D_BUILDING_LAYER_GROUP_SLUG = exports.THREE_D_BUILDING_LAYER_GROUP_SLUG = '3d building';
|
|
179
|
+
var BACKGROUND_LAYER_GROUP = exports.BACKGROUND_LAYER_GROUP = {
|
|
180
|
+
slug: BACKGROUND_LAYER_GROUP_SLUG,
|
|
181
|
+
filter: function filter() {
|
|
182
|
+
return false;
|
|
183
|
+
},
|
|
184
|
+
defaultVisibility: false,
|
|
185
|
+
isVisibilityToggleAvailable: false,
|
|
186
|
+
isMoveToTopAvailable: false,
|
|
187
|
+
isColorPickerAvailable: true
|
|
188
|
+
};
|
|
189
|
+
var DEFAULT_LAYER_GROUPS = exports.DEFAULT_LAYER_GROUPS = [{
|
|
190
|
+
slug: 'label',
|
|
191
|
+
filter: function filter(_ref) {
|
|
192
|
+
var id = _ref.id;
|
|
193
|
+
return id.match(/(?=(label|place-|poi-))/);
|
|
194
|
+
},
|
|
195
|
+
defaultVisibility: true,
|
|
196
|
+
isVisibilityToggleAvailable: true,
|
|
197
|
+
isMoveToTopAvailable: true,
|
|
198
|
+
isColorPickerAvailable: false
|
|
199
|
+
}, {
|
|
200
|
+
slug: 'road',
|
|
201
|
+
filter: function filter(_ref2) {
|
|
202
|
+
var id = _ref2.id;
|
|
203
|
+
return id.match(/(?=(road|railway|tunnel|street|bridge))(?!.*label)/);
|
|
204
|
+
},
|
|
205
|
+
defaultVisibility: true,
|
|
206
|
+
isVisibilityToggleAvailable: true,
|
|
207
|
+
isMoveToTopAvailable: true,
|
|
208
|
+
isColorPickerAvailable: false
|
|
209
|
+
}, {
|
|
210
|
+
slug: 'border',
|
|
211
|
+
filter: function filter(_ref3) {
|
|
212
|
+
var id = _ref3.id;
|
|
213
|
+
return id.match(/border|boundaries|boundary/);
|
|
214
|
+
},
|
|
215
|
+
defaultVisibility: false,
|
|
216
|
+
isVisibilityToggleAvailable: true,
|
|
217
|
+
isMoveToTopAvailable: true,
|
|
218
|
+
isColorPickerAvailable: false
|
|
219
|
+
}, {
|
|
220
|
+
slug: 'building',
|
|
221
|
+
filter: function filter(_ref4) {
|
|
222
|
+
var id = _ref4.id;
|
|
223
|
+
return id.match(/building/);
|
|
224
|
+
},
|
|
225
|
+
defaultVisibility: true,
|
|
226
|
+
isVisibilityToggleAvailable: true,
|
|
227
|
+
isMoveToTopAvailable: true,
|
|
228
|
+
isColorPickerAvailable: false
|
|
229
|
+
}, {
|
|
230
|
+
slug: 'water',
|
|
231
|
+
filter: function filter(_ref5) {
|
|
232
|
+
var id = _ref5.id;
|
|
233
|
+
return id.match(/(?=(water|stream|ferry))/);
|
|
234
|
+
},
|
|
235
|
+
defaultVisibility: true,
|
|
236
|
+
isVisibilityToggleAvailable: true,
|
|
237
|
+
isMoveToTopAvailable: true,
|
|
238
|
+
isColorPickerAvailable: false
|
|
239
|
+
}, {
|
|
240
|
+
slug: 'land',
|
|
241
|
+
filter: function filter(_ref6) {
|
|
242
|
+
var id = _ref6.id;
|
|
243
|
+
return id.match(/(?=(parks|landcover|industrial|sand|hillshade))/);
|
|
244
|
+
},
|
|
245
|
+
defaultVisibility: true,
|
|
246
|
+
isVisibilityToggleAvailable: true,
|
|
247
|
+
isMoveToTopAvailable: true,
|
|
248
|
+
isColorPickerAvailable: false
|
|
249
|
+
}, {
|
|
250
|
+
slug: THREE_D_BUILDING_LAYER_GROUP_SLUG,
|
|
251
|
+
filter: function filter() {
|
|
252
|
+
return false;
|
|
253
|
+
},
|
|
254
|
+
defaultVisibility: false,
|
|
255
|
+
isVisibilityToggleAvailable: true,
|
|
256
|
+
isMoveToTopAvailable: true,
|
|
257
|
+
isColorPickerAvailable: true
|
|
258
|
+
}];
|
|
259
|
+
var BASE_MAP_COLOR_MODES = exports.BASE_MAP_COLOR_MODES = (0, _keymirror["default"])({
|
|
260
|
+
NONE: null,
|
|
261
|
+
DARK: null,
|
|
262
|
+
LIGHT: null
|
|
263
|
+
});
|
|
264
|
+
var NO_MAP_ID = exports.NO_MAP_ID = 'no_map';
|
|
265
|
+
|
|
266
|
+
// Fallback style to use when styles are being fetched, or when
|
|
267
|
+
// a style fails to fetch
|
|
268
|
+
var EMPTY_MAPBOX_STYLE = exports.EMPTY_MAPBOX_STYLE = {
|
|
269
|
+
version: 8,
|
|
270
|
+
sources: {},
|
|
271
|
+
layers: []
|
|
272
|
+
};
|
|
273
|
+
var NO_BASEMAP_ICON = exports.NO_BASEMAP_ICON = "".concat(BASEMAP_ICON_PREFIX, "/NO_BASEMAP.png");
|
|
274
|
+
var DEFAULT_MAP_STYLES = exports.DEFAULT_MAP_STYLES = [{
|
|
275
|
+
id: NO_MAP_ID,
|
|
276
|
+
label: 'No Basemap',
|
|
277
|
+
url: '',
|
|
278
|
+
icon: NO_BASEMAP_ICON,
|
|
279
|
+
layerGroups: [BACKGROUND_LAYER_GROUP],
|
|
280
|
+
colorMode: BASE_MAP_COLOR_MODES.NONE,
|
|
281
|
+
style: EMPTY_MAPBOX_STYLE
|
|
282
|
+
}, {
|
|
283
|
+
id: 'dark-matter',
|
|
284
|
+
label: 'DarkMatter',
|
|
285
|
+
url: 'https://basemaps.cartocdn.com/gl/dark-matter-gl-style/style.json',
|
|
286
|
+
icon: "".concat(BASEMAP_ICON_PREFIX, "/DARKMATTER.png"),
|
|
287
|
+
layerGroups: DEFAULT_LAYER_GROUPS,
|
|
288
|
+
colorMode: BASE_MAP_COLOR_MODES.DARK,
|
|
289
|
+
complimentaryStyleId: 'positron'
|
|
290
|
+
}, {
|
|
291
|
+
id: 'dark-matter-nolabels',
|
|
292
|
+
label: 'DarkMatterNoLabels',
|
|
293
|
+
url: 'https://basemaps.cartocdn.com/gl/dark-matter-nolabels-gl-style/style.json',
|
|
294
|
+
icon: "".concat(BASEMAP_ICON_PREFIX, "/DARKMATTER_NOLABELS.png"),
|
|
295
|
+
layerGroups: DEFAULT_LAYER_GROUPS,
|
|
296
|
+
colorMode: BASE_MAP_COLOR_MODES.DARK,
|
|
297
|
+
complimentaryStyleId: 'positron-nolabels'
|
|
298
|
+
}, {
|
|
299
|
+
id: 'positron',
|
|
300
|
+
label: 'Positron',
|
|
301
|
+
url: 'https://basemaps.cartocdn.com/gl/positron-gl-style/style.json',
|
|
302
|
+
icon: "".concat(BASEMAP_ICON_PREFIX, "/POSITRON.png"),
|
|
303
|
+
layerGroups: DEFAULT_LAYER_GROUPS,
|
|
304
|
+
colorMode: BASE_MAP_COLOR_MODES.LIGHT,
|
|
305
|
+
complimentaryStyleId: 'dark-matter'
|
|
306
|
+
}, {
|
|
307
|
+
id: 'positron-nolabels',
|
|
308
|
+
label: 'PositronNoLabels',
|
|
309
|
+
url: 'https://basemaps.cartocdn.com/gl/positron-nolabels-gl-style/style.json',
|
|
310
|
+
icon: "".concat(BASEMAP_ICON_PREFIX, "/POSITRON_NOLABELS.png"),
|
|
311
|
+
layerGroups: DEFAULT_LAYER_GROUPS,
|
|
312
|
+
colorMode: BASE_MAP_COLOR_MODES.LIGHT,
|
|
313
|
+
complimentaryStyleId: 'dark-matter-nolabels'
|
|
314
|
+
}, {
|
|
315
|
+
id: 'voyager',
|
|
316
|
+
label: 'Voyager',
|
|
317
|
+
url: 'https://basemaps.cartocdn.com/gl/voyager-gl-style/style.json',
|
|
318
|
+
icon: "".concat(BASEMAP_ICON_PREFIX, "/VOYAGER.png"),
|
|
319
|
+
layerGroups: DEFAULT_LAYER_GROUPS,
|
|
320
|
+
colorMode: BASE_MAP_COLOR_MODES.LIGHT,
|
|
321
|
+
complimentaryStyleId: 'dark-matter'
|
|
322
|
+
}, {
|
|
323
|
+
id: 'voyager-nolabels',
|
|
324
|
+
label: 'VoyagerNoLabels',
|
|
325
|
+
url: 'https://basemaps.cartocdn.com/gl/voyager-nolabels-gl-style/style.json',
|
|
326
|
+
icon: "".concat(BASEMAP_ICON_PREFIX, "/VOYAGER_NOLABELS.png"),
|
|
327
|
+
layerGroups: DEFAULT_LAYER_GROUPS,
|
|
328
|
+
colorMode: BASE_MAP_COLOR_MODES.LIGHT,
|
|
329
|
+
complimentaryStyleId: 'dark-matter-nolabels'
|
|
330
|
+
}];
|
|
331
|
+
var GEOJSON_FIELDS = exports.GEOJSON_FIELDS = {
|
|
332
|
+
geojson: ['_geojson', 'all_points', 'geojson']
|
|
333
|
+
};
|
|
334
|
+
var ICON_FIELDS = exports.ICON_FIELDS = {
|
|
335
|
+
icon: ['icon']
|
|
336
|
+
};
|
|
337
|
+
var TRIP_POINT_FIELDS = exports.TRIP_POINT_FIELDS = [['lat', 'lng'], ['lat', 'lon'], ['lat', 'long'], ['latitude', 'longitude']];
|
|
338
|
+
var ALTITUDE_FIELDS = exports.ALTITUDE_FIELDS = ['alt', 'altitude'];
|
|
339
|
+
var TRIP_ARC_FIELDS = exports.TRIP_ARC_FIELDS = {
|
|
340
|
+
lat0: 'begintrip',
|
|
341
|
+
lng0: 'begintrip',
|
|
342
|
+
lat1: 'dropoff',
|
|
343
|
+
lng1: 'dropoff'
|
|
344
|
+
};
|
|
345
|
+
var FILTER_TYPES = exports.FILTER_TYPES = (0, _keymirror["default"])({
|
|
346
|
+
range: null,
|
|
347
|
+
select: null,
|
|
348
|
+
input: null,
|
|
349
|
+
timeRange: null,
|
|
350
|
+
multiSelect: null,
|
|
351
|
+
polygon: null
|
|
352
|
+
});
|
|
353
|
+
var FILTER_VIEW_TYPES = exports.FILTER_VIEW_TYPES = (0, _keymirror["default"])({
|
|
354
|
+
side: null,
|
|
355
|
+
enlarged: null,
|
|
356
|
+
minified: null
|
|
357
|
+
});
|
|
358
|
+
var DEFAULT_FILTER_VIEW_TYPE = exports.DEFAULT_FILTER_VIEW_TYPE = FILTER_VIEW_TYPES.side;
|
|
359
|
+
var SCALE_TYPES = exports.SCALE_TYPES = (0, _keymirror["default"])({
|
|
360
|
+
ordinal: null,
|
|
361
|
+
quantile: null,
|
|
362
|
+
quantize: null,
|
|
363
|
+
linear: null,
|
|
364
|
+
sqrt: null,
|
|
365
|
+
log: null,
|
|
366
|
+
threshold: null,
|
|
367
|
+
custom: null,
|
|
368
|
+
// ordinal domain to linear range
|
|
369
|
+
point: null
|
|
370
|
+
});
|
|
371
|
+
var SCALE_TYPE_NAMES = exports.SCALE_TYPE_NAMES = {
|
|
372
|
+
ordinal: 'Ordinal',
|
|
373
|
+
quantile: 'Quantile',
|
|
374
|
+
quantize: 'Quantize',
|
|
375
|
+
linear: 'Linear',
|
|
376
|
+
sqrt: 'Sqrt',
|
|
377
|
+
log: 'Log',
|
|
378
|
+
threshold: 'Threshold',
|
|
379
|
+
custom: 'Custom Breaks',
|
|
380
|
+
point: 'Point'
|
|
381
|
+
};
|
|
382
|
+
var SCALE_FUNC = exports.SCALE_FUNC = (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, SCALE_TYPES.linear, _d3Scale.scaleLinear), SCALE_TYPES.quantize, _d3Scale.scaleQuantize), SCALE_TYPES.quantile, _d3Scale.scaleQuantile), SCALE_TYPES.ordinal, _d3Scale.scaleOrdinal), SCALE_TYPES.sqrt, _d3Scale.scaleSqrt), SCALE_TYPES.log, _d3Scale.scaleLog), SCALE_TYPES.point, _d3Scale.scalePoint), SCALE_TYPES.threshold, _d3Scale.scaleThreshold), SCALE_TYPES.custom, _d3Scale.scaleThreshold);
|
|
383
|
+
var ALL_FIELD_TYPES = exports.ALL_FIELD_TYPES = (0, _keymirror["default"])({
|
|
384
|
+
"boolean": null,
|
|
385
|
+
date: null,
|
|
386
|
+
geojson: null,
|
|
387
|
+
integer: null,
|
|
388
|
+
real: null,
|
|
389
|
+
string: null,
|
|
390
|
+
timestamp: null,
|
|
391
|
+
point: null,
|
|
392
|
+
array: null,
|
|
393
|
+
object: null,
|
|
394
|
+
geoarrow: null,
|
|
395
|
+
h3: null
|
|
396
|
+
});
|
|
397
|
+
|
|
398
|
+
// Data Table
|
|
399
|
+
var SORT_ORDER = exports.SORT_ORDER = (0, _keymirror["default"])({
|
|
400
|
+
ASCENDING: null,
|
|
401
|
+
DESCENDING: null,
|
|
402
|
+
UNSORT: null
|
|
403
|
+
});
|
|
404
|
+
var TABLE_OPTION = exports.TABLE_OPTION = (0, _keymirror["default"])({
|
|
405
|
+
SORT_ASC: null,
|
|
406
|
+
SORT_DES: null,
|
|
407
|
+
UNSORT: null,
|
|
408
|
+
PIN: null,
|
|
409
|
+
UNPIN: null,
|
|
410
|
+
COPY: null,
|
|
411
|
+
FORMAT_COLUMN: null
|
|
412
|
+
});
|
|
413
|
+
var TABLE_OPTION_LIST = exports.TABLE_OPTION_LIST = [{
|
|
414
|
+
value: TABLE_OPTION.SORT_ASC,
|
|
415
|
+
display: 'Sort Ascending',
|
|
416
|
+
icon: 'ArrowUp',
|
|
417
|
+
condition: function condition(props) {
|
|
418
|
+
return props.sortMode !== SORT_ORDER.ASCENDING;
|
|
419
|
+
}
|
|
420
|
+
}, {
|
|
421
|
+
value: TABLE_OPTION.SORT_DES,
|
|
422
|
+
display: 'Sort Descending',
|
|
423
|
+
icon: 'ArrowDown',
|
|
424
|
+
condition: function condition(props) {
|
|
425
|
+
return props.sortMode !== SORT_ORDER.DESCENDING;
|
|
426
|
+
}
|
|
427
|
+
}, {
|
|
428
|
+
value: TABLE_OPTION.UNSORT,
|
|
429
|
+
display: 'Unsort Column',
|
|
430
|
+
icon: 'Cancel',
|
|
431
|
+
condition: function condition(props) {
|
|
432
|
+
return props.isSorted;
|
|
433
|
+
}
|
|
434
|
+
}, {
|
|
435
|
+
value: TABLE_OPTION.PIN,
|
|
436
|
+
display: 'Pin Column',
|
|
437
|
+
icon: 'Pin',
|
|
438
|
+
condition: function condition(props) {
|
|
439
|
+
return !props.isPinned;
|
|
440
|
+
}
|
|
441
|
+
}, {
|
|
442
|
+
value: TABLE_OPTION.UNPIN,
|
|
443
|
+
display: 'Unpin Column',
|
|
444
|
+
icon: 'Cancel',
|
|
445
|
+
condition: function condition(props) {
|
|
446
|
+
return props.isPinned;
|
|
447
|
+
}
|
|
448
|
+
}, {
|
|
449
|
+
value: TABLE_OPTION.COPY,
|
|
450
|
+
display: 'Copy Column',
|
|
451
|
+
icon: 'Clipboard'
|
|
452
|
+
}, {
|
|
453
|
+
value: TABLE_OPTION.FORMAT_COLUMN,
|
|
454
|
+
display: 'Format Column',
|
|
455
|
+
icon: 'Hash'
|
|
456
|
+
}];
|
|
457
|
+
var YELLOW = '248, 194, 28';
|
|
458
|
+
var PINK = '242, 152, 163';
|
|
459
|
+
var PURPLE = '160, 106, 206';
|
|
460
|
+
var BLUE = '140, 210, 205';
|
|
461
|
+
var BLUE2 = '106, 160, 206';
|
|
462
|
+
var BLUE3 = '0, 172, 237';
|
|
463
|
+
var GREEN = '106, 160, 56';
|
|
464
|
+
var GREEN2 = '74, 165, 150';
|
|
465
|
+
var RED = '237, 88, 106';
|
|
466
|
+
var ORANGE = '231, 110, 58';
|
|
467
|
+
var FIELD_TYPE_DISPLAY = exports.FIELD_TYPE_DISPLAY = (_FIELD_TYPE_DISPLAY = {}, (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])(_FIELD_TYPE_DISPLAY, ALL_FIELD_TYPES["boolean"], {
|
|
468
|
+
label: 'bool',
|
|
469
|
+
color: PINK
|
|
470
|
+
}), ALL_FIELD_TYPES.date, {
|
|
471
|
+
label: 'date',
|
|
472
|
+
color: PURPLE
|
|
473
|
+
}), ALL_FIELD_TYPES.geojson, {
|
|
474
|
+
label: 'geo',
|
|
475
|
+
color: BLUE2
|
|
476
|
+
}), ALL_FIELD_TYPES.geoarrow, {
|
|
477
|
+
label: 'geo',
|
|
478
|
+
color: BLUE2
|
|
479
|
+
}), ALL_FIELD_TYPES.integer, {
|
|
480
|
+
label: 'int',
|
|
481
|
+
color: YELLOW
|
|
482
|
+
}), ALL_FIELD_TYPES.real, {
|
|
483
|
+
label: 'float',
|
|
484
|
+
color: YELLOW
|
|
485
|
+
}), ALL_FIELD_TYPES.string, {
|
|
486
|
+
label: 'string',
|
|
487
|
+
color: BLUE
|
|
488
|
+
}), ALL_FIELD_TYPES.timestamp, {
|
|
489
|
+
label: 'time',
|
|
490
|
+
color: GREEN
|
|
491
|
+
}), ALL_FIELD_TYPES.point, {
|
|
492
|
+
label: 'point',
|
|
493
|
+
color: BLUE3
|
|
494
|
+
}), ALL_FIELD_TYPES.array, {
|
|
495
|
+
label: 'array',
|
|
496
|
+
color: ORANGE
|
|
497
|
+
}), (0, _defineProperty2["default"])((0, _defineProperty2["default"])(_FIELD_TYPE_DISPLAY, ALL_FIELD_TYPES.object, {
|
|
498
|
+
label: 'object',
|
|
499
|
+
color: GREEN2
|
|
500
|
+
}), ALL_FIELD_TYPES.h3, {
|
|
501
|
+
label: 'h3',
|
|
502
|
+
color: BLUE
|
|
503
|
+
}));
|
|
504
|
+
var FIELD_COLORS = exports.FIELD_COLORS = {
|
|
505
|
+
"default": RED
|
|
506
|
+
};
|
|
507
|
+
var HIGHLIGH_COLOR_3D = exports.HIGHLIGH_COLOR_3D = [255, 255, 255, 60];
|
|
508
|
+
var CHANNEL_SCALES = exports.CHANNEL_SCALES = (0, _keymirror["default"])({
|
|
509
|
+
color: null,
|
|
510
|
+
radius: null,
|
|
511
|
+
size: null,
|
|
512
|
+
colorAggr: null,
|
|
513
|
+
sizeAggr: null
|
|
514
|
+
});
|
|
515
|
+
var AGGREGATION_TYPES = exports.AGGREGATION_TYPES = {
|
|
516
|
+
// default
|
|
517
|
+
count: 'count',
|
|
518
|
+
// linear
|
|
519
|
+
average: 'average',
|
|
520
|
+
maximum: 'maximum',
|
|
521
|
+
minimum: 'minimum',
|
|
522
|
+
median: 'median',
|
|
523
|
+
stdev: 'stdev',
|
|
524
|
+
sum: 'sum',
|
|
525
|
+
variance: 'variance',
|
|
526
|
+
// ordinal
|
|
527
|
+
mode: 'mode',
|
|
528
|
+
countUnique: 'countUnique'
|
|
529
|
+
};
|
|
530
|
+
var AGGREGATION_TYPE_OPTIONS = exports.AGGREGATION_TYPE_OPTIONS = Object.entries(AGGREGATION_TYPES).map(function (_ref7) {
|
|
531
|
+
var _ref8 = (0, _slicedToArray2["default"])(_ref7, 2),
|
|
532
|
+
key = _ref8[0],
|
|
533
|
+
value = _ref8[1];
|
|
534
|
+
return {
|
|
535
|
+
id: key,
|
|
536
|
+
label: key === 'stdev' ? 'Std Deviation' : key === 'countUnique' ? 'Count Unique' : typeof value === 'string' ? value.charAt(0).toUpperCase() + value.slice(1) : value
|
|
537
|
+
};
|
|
538
|
+
});
|
|
539
|
+
var linearFieldScaleFunctions = exports.linearFieldScaleFunctions = (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, CHANNEL_SCALES.color, [SCALE_TYPES.quantize, SCALE_TYPES.quantile, SCALE_TYPES.custom]), CHANNEL_SCALES.radius, [SCALE_TYPES.sqrt]), CHANNEL_SCALES.size, [SCALE_TYPES.linear, SCALE_TYPES.sqrt, SCALE_TYPES.log]);
|
|
540
|
+
var linearFieldAggrScaleFunctions = exports.linearFieldAggrScaleFunctions = (0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, CHANNEL_SCALES.colorAggr, (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, AGGREGATION_TYPES.average, [SCALE_TYPES.quantize, SCALE_TYPES.quantile]), AGGREGATION_TYPES.maximum, [SCALE_TYPES.quantize, SCALE_TYPES.quantile]), AGGREGATION_TYPES.minimum, [SCALE_TYPES.quantize, SCALE_TYPES.quantile]), AGGREGATION_TYPES.median, [SCALE_TYPES.quantize, SCALE_TYPES.quantile]), AGGREGATION_TYPES.stdev, [SCALE_TYPES.quantize, SCALE_TYPES.quantile]), AGGREGATION_TYPES.sum, [SCALE_TYPES.quantize, SCALE_TYPES.quantile]), AGGREGATION_TYPES.variance, [SCALE_TYPES.quantize, SCALE_TYPES.quantile])), CHANNEL_SCALES.sizeAggr, (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, AGGREGATION_TYPES.average, [SCALE_TYPES.linear, SCALE_TYPES.sqrt, SCALE_TYPES.log]), AGGREGATION_TYPES.maximum, [SCALE_TYPES.linear, SCALE_TYPES.sqrt, SCALE_TYPES.log]), AGGREGATION_TYPES.minimum, [SCALE_TYPES.linear, SCALE_TYPES.sqrt, SCALE_TYPES.log]), AGGREGATION_TYPES.median, [SCALE_TYPES.linear, SCALE_TYPES.sqrt, SCALE_TYPES.log]), AGGREGATION_TYPES.stdev, [SCALE_TYPES.linear, SCALE_TYPES.sqrt, SCALE_TYPES.log]), AGGREGATION_TYPES.sum, [SCALE_TYPES.linear, SCALE_TYPES.sqrt, SCALE_TYPES.log]), AGGREGATION_TYPES.variance, [SCALE_TYPES.linear, SCALE_TYPES.sqrt, SCALE_TYPES.log]));
|
|
541
|
+
var ordinalFieldScaleFunctions = exports.ordinalFieldScaleFunctions = (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, CHANNEL_SCALES.color, [SCALE_TYPES.ordinal]), CHANNEL_SCALES.radius, [SCALE_TYPES.point]), CHANNEL_SCALES.size, [SCALE_TYPES.point]);
|
|
542
|
+
var ordinalFieldAggrScaleFunctions = exports.ordinalFieldAggrScaleFunctions = (0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, CHANNEL_SCALES.colorAggr, (0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, AGGREGATION_TYPES.mode, [SCALE_TYPES.ordinal]), AGGREGATION_TYPES.countUnique, [SCALE_TYPES.quantize, SCALE_TYPES.quantile])), CHANNEL_SCALES.sizeAggr, {});
|
|
543
|
+
var notSupportedScaleOpts = exports.notSupportedScaleOpts = (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, CHANNEL_SCALES.color, []), CHANNEL_SCALES.radius, []), CHANNEL_SCALES.size, []);
|
|
544
|
+
var notSupportAggrOpts = exports.notSupportAggrOpts = (0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, CHANNEL_SCALES.colorAggr, {}), CHANNEL_SCALES.sizeAggr, {});
|
|
545
|
+
|
|
546
|
+
/**
|
|
547
|
+
* Default aggregation are based on ocunt
|
|
548
|
+
*/
|
|
549
|
+
var DEFAULT_AGGREGATION = exports.DEFAULT_AGGREGATION = (0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, CHANNEL_SCALES.colorAggr, (0, _defineProperty2["default"])({}, AGGREGATION_TYPES.count, [SCALE_TYPES.quantize, SCALE_TYPES.quantile])), CHANNEL_SCALES.sizeAggr, (0, _defineProperty2["default"])({}, AGGREGATION_TYPES.count, [SCALE_TYPES.linear, SCALE_TYPES.sqrt, SCALE_TYPES.log]));
|
|
550
|
+
|
|
551
|
+
/**
|
|
552
|
+
* Define what type of scale operation is allowed on each type of fields
|
|
553
|
+
*/
|
|
554
|
+
var FIELD_OPTS = exports.FIELD_OPTS = (_FIELD_OPTS = {}, (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])(_FIELD_OPTS, ALL_FIELD_TYPES.string, {
|
|
555
|
+
type: 'categorical',
|
|
556
|
+
scale: _objectSpread(_objectSpread({}, ordinalFieldScaleFunctions), ordinalFieldAggrScaleFunctions),
|
|
557
|
+
format: {
|
|
558
|
+
legend: function legend(d) {
|
|
559
|
+
return d;
|
|
560
|
+
},
|
|
561
|
+
tooltip: []
|
|
562
|
+
}
|
|
563
|
+
}), ALL_FIELD_TYPES.real, {
|
|
564
|
+
type: 'numerical',
|
|
565
|
+
scale: _objectSpread(_objectSpread({}, linearFieldScaleFunctions), linearFieldAggrScaleFunctions),
|
|
566
|
+
format: {
|
|
567
|
+
legend: function legend(d) {
|
|
568
|
+
return d;
|
|
569
|
+
},
|
|
570
|
+
tooltip: [_tooltip.TOOLTIP_FORMAT_TYPES.NONE, _tooltip.TOOLTIP_FORMAT_TYPES.DECIMAL, _tooltip.TOOLTIP_FORMAT_TYPES.PERCENTAGE]
|
|
571
|
+
}
|
|
572
|
+
}), ALL_FIELD_TYPES.timestamp, {
|
|
573
|
+
type: 'time',
|
|
574
|
+
scale: _objectSpread(_objectSpread({}, linearFieldScaleFunctions), notSupportAggrOpts),
|
|
575
|
+
format: {
|
|
576
|
+
legend: function legend(d) {
|
|
577
|
+
return d;
|
|
578
|
+
},
|
|
579
|
+
tooltip: [_tooltip.TOOLTIP_FORMAT_TYPES.NONE, _tooltip.TOOLTIP_FORMAT_TYPES.DATE, _tooltip.TOOLTIP_FORMAT_TYPES.DATE_TIME]
|
|
580
|
+
}
|
|
581
|
+
}), ALL_FIELD_TYPES.integer, {
|
|
582
|
+
type: 'numerical',
|
|
583
|
+
scale: _objectSpread(_objectSpread({}, linearFieldScaleFunctions), linearFieldAggrScaleFunctions),
|
|
584
|
+
format: {
|
|
585
|
+
legend: function legend(d) {
|
|
586
|
+
return d;
|
|
587
|
+
},
|
|
588
|
+
tooltip: [_tooltip.TOOLTIP_FORMAT_TYPES.NONE, _tooltip.TOOLTIP_FORMAT_TYPES.DECIMAL, _tooltip.TOOLTIP_FORMAT_TYPES.PERCENTAGE]
|
|
589
|
+
}
|
|
590
|
+
}), ALL_FIELD_TYPES["boolean"], {
|
|
591
|
+
type: 'boolean',
|
|
592
|
+
scale: _objectSpread(_objectSpread({}, ordinalFieldScaleFunctions), ordinalFieldAggrScaleFunctions),
|
|
593
|
+
format: {
|
|
594
|
+
legend: function legend(d) {
|
|
595
|
+
return d;
|
|
596
|
+
},
|
|
597
|
+
tooltip: [_tooltip.TOOLTIP_FORMAT_TYPES.NONE, _tooltip.TOOLTIP_FORMAT_TYPES.BOOLEAN]
|
|
598
|
+
}
|
|
599
|
+
}), ALL_FIELD_TYPES.date, {
|
|
600
|
+
type: 'time',
|
|
601
|
+
scale: _objectSpread(_objectSpread({}, ordinalFieldScaleFunctions), ordinalFieldAggrScaleFunctions),
|
|
602
|
+
format: {
|
|
603
|
+
legend: function legend(d) {
|
|
604
|
+
return d;
|
|
605
|
+
},
|
|
606
|
+
tooltip: [_tooltip.TOOLTIP_FORMAT_TYPES.NONE, _tooltip.TOOLTIP_FORMAT_TYPES.DATE]
|
|
607
|
+
}
|
|
608
|
+
}), ALL_FIELD_TYPES.geojson, {
|
|
609
|
+
type: 'geometry',
|
|
610
|
+
scale: _objectSpread(_objectSpread({}, notSupportedScaleOpts), notSupportAggrOpts),
|
|
611
|
+
format: {
|
|
612
|
+
legend: function legend() {
|
|
613
|
+
return '...';
|
|
614
|
+
},
|
|
615
|
+
tooltip: []
|
|
616
|
+
}
|
|
617
|
+
}), ALL_FIELD_TYPES.geoarrow, {
|
|
618
|
+
type: 'geometry',
|
|
619
|
+
scale: _objectSpread(_objectSpread({}, notSupportedScaleOpts), notSupportAggrOpts),
|
|
620
|
+
format: {
|
|
621
|
+
legend: function legend() {
|
|
622
|
+
return '...';
|
|
623
|
+
},
|
|
624
|
+
tooltip: []
|
|
625
|
+
}
|
|
626
|
+
}), ALL_FIELD_TYPES.object, {
|
|
627
|
+
type: 'numerical',
|
|
628
|
+
scale: {},
|
|
629
|
+
format: {
|
|
630
|
+
legend: function legend() {
|
|
631
|
+
return '...';
|
|
632
|
+
},
|
|
633
|
+
tooltip: []
|
|
634
|
+
}
|
|
635
|
+
}), ALL_FIELD_TYPES.array, {
|
|
636
|
+
type: 'numerical',
|
|
637
|
+
scale: {},
|
|
638
|
+
format: {
|
|
639
|
+
legend: function legend() {
|
|
640
|
+
return '...';
|
|
641
|
+
},
|
|
642
|
+
tooltip: []
|
|
643
|
+
}
|
|
644
|
+
}), (0, _defineProperty2["default"])(_FIELD_OPTS, ALL_FIELD_TYPES.h3, {
|
|
645
|
+
type: 'h3',
|
|
646
|
+
scale: _objectSpread(_objectSpread({}, notSupportedScaleOpts), notSupportAggrOpts),
|
|
647
|
+
format: {
|
|
648
|
+
legend: function legend(d) {
|
|
649
|
+
return '...';
|
|
650
|
+
},
|
|
651
|
+
tooltip: []
|
|
652
|
+
}
|
|
653
|
+
}));
|
|
654
|
+
var CHANNEL_SCALE_SUPPORTED_FIELDS = exports.CHANNEL_SCALE_SUPPORTED_FIELDS = Object.keys(CHANNEL_SCALES).reduce(function (accu, key) {
|
|
655
|
+
return _objectSpread(_objectSpread({}, accu), {}, (0, _defineProperty2["default"])({}, key, Object.keys(FIELD_OPTS).filter(function (ft) {
|
|
656
|
+
return FIELD_OPTS[ft].scale[key] && Object.keys(FIELD_OPTS[ft].scale[key]).length;
|
|
657
|
+
})));
|
|
658
|
+
}, {});
|
|
659
|
+
var DEFAULT_LAYER_COLOR = exports.DEFAULT_LAYER_COLOR = {
|
|
660
|
+
tripArc: '#9226C6',
|
|
661
|
+
begintrip_lat: '#1E96BE',
|
|
662
|
+
dropoff_lat: '#FF991F',
|
|
663
|
+
request_lat: '#52A353'
|
|
664
|
+
};
|
|
665
|
+
var DEFAULT_LAYER_COLOR_PALETTE = exports.DEFAULT_LAYER_COLOR_PALETTE = 'Global Warming';
|
|
666
|
+
var DEFAULT_LAYER_COLOR_PALETTE_STEPS = exports.DEFAULT_LAYER_COLOR_PALETTE_STEPS = 6;
|
|
667
|
+
|
|
668
|
+
// let user pass in default tooltip fields
|
|
669
|
+
var DEFAULT_TOOLTIP_FIELDS = exports.DEFAULT_TOOLTIP_FIELDS = [];
|
|
670
|
+
var NO_VALUE_COLOR = exports.NO_VALUE_COLOR = [0, 0, 0, 0];
|
|
671
|
+
var DEFAULT_PICKING_RADIUS = exports.DEFAULT_PICKING_RADIUS = 3;
|
|
672
|
+
var OVERLAY_BLENDINGS = exports.OVERLAY_BLENDINGS = {
|
|
673
|
+
normal: {
|
|
674
|
+
label: 'overlayBlending.normal',
|
|
675
|
+
value: 'normal'
|
|
676
|
+
},
|
|
677
|
+
screen: {
|
|
678
|
+
label: 'overlayBlending.screen',
|
|
679
|
+
value: 'screen'
|
|
680
|
+
},
|
|
681
|
+
darken: {
|
|
682
|
+
label: 'overlayBlending.darken',
|
|
683
|
+
value: 'darken'
|
|
684
|
+
}
|
|
685
|
+
};
|
|
686
|
+
var LAYER_BLENDINGS = exports.LAYER_BLENDINGS = {
|
|
687
|
+
additive: {
|
|
688
|
+
label: 'layerBlending.additive',
|
|
689
|
+
blendFunc: ['SRC_ALPHA', 'DST_ALPHA'],
|
|
690
|
+
blendEquation: 'FUNC_ADD'
|
|
691
|
+
},
|
|
692
|
+
normal: {
|
|
693
|
+
// reference to
|
|
694
|
+
// https://limnu.com/webgl-blending-youre-probably-wrong/
|
|
695
|
+
label: 'layerBlending.normal',
|
|
696
|
+
blendFunc: ['SRC_ALPHA', 'ONE_MINUS_SRC_ALPHA', 'ONE', 'ONE_MINUS_SRC_ALPHA'],
|
|
697
|
+
blendEquation: ['FUNC_ADD', 'FUNC_ADD']
|
|
698
|
+
},
|
|
699
|
+
subtractive: {
|
|
700
|
+
label: 'layerBlending.subtractive',
|
|
701
|
+
blendFunc: ['ONE', 'ONE_MINUS_DST_COLOR', 'SRC_ALPHA', 'DST_ALPHA'],
|
|
702
|
+
blendEquation: ['FUNC_SUBTRACT', 'FUNC_ADD']
|
|
703
|
+
}
|
|
704
|
+
};
|
|
705
|
+
var MAX_DEFAULT_TOOLTIPS = exports.MAX_DEFAULT_TOOLTIPS = 5;
|
|
706
|
+
var RESOLUTIONS = exports.RESOLUTIONS = (0, _keymirror["default"])({
|
|
707
|
+
ONE_X: null,
|
|
708
|
+
TWO_X: null
|
|
709
|
+
});
|
|
710
|
+
var EXPORT_IMG_RATIOS = exports.EXPORT_IMG_RATIOS = (0, _keymirror["default"])({
|
|
711
|
+
SCREEN: null,
|
|
712
|
+
FOUR_BY_THREE: null,
|
|
713
|
+
SIXTEEN_BY_NINE: null,
|
|
714
|
+
CUSTOM: null
|
|
715
|
+
});
|
|
716
|
+
var ScreenRatioOption = exports.ScreenRatioOption = {
|
|
717
|
+
id: EXPORT_IMG_RATIOS.SCREEN,
|
|
718
|
+
label: 'modal.exportImage.ratioOriginalScreen',
|
|
719
|
+
getSize: function getSize(screenW, screenH) {
|
|
720
|
+
return {
|
|
721
|
+
width: screenW,
|
|
722
|
+
height: screenH
|
|
723
|
+
};
|
|
724
|
+
}
|
|
725
|
+
};
|
|
726
|
+
var CustomRatioOption = exports.CustomRatioOption = {
|
|
727
|
+
id: EXPORT_IMG_RATIOS.CUSTOM,
|
|
728
|
+
hidden: true,
|
|
729
|
+
label: 'modal.exportImage.ratioCustom',
|
|
730
|
+
getSize: function getSize(mapW, mapH) {
|
|
731
|
+
return {
|
|
732
|
+
width: mapW,
|
|
733
|
+
height: mapH
|
|
734
|
+
};
|
|
735
|
+
}
|
|
736
|
+
};
|
|
737
|
+
var FourByThreeRatioOption = exports.FourByThreeRatioOption = {
|
|
738
|
+
id: EXPORT_IMG_RATIOS.FOUR_BY_THREE,
|
|
739
|
+
label: 'modal.exportImage.ratio4_3',
|
|
740
|
+
getSize: function getSize(screenW) {
|
|
741
|
+
return {
|
|
742
|
+
width: screenW,
|
|
743
|
+
height: Math.round(screenW * 0.75)
|
|
744
|
+
};
|
|
745
|
+
}
|
|
746
|
+
};
|
|
747
|
+
var SixteenByNineRatioOption = exports.SixteenByNineRatioOption = {
|
|
748
|
+
id: EXPORT_IMG_RATIOS.SIXTEEN_BY_NINE,
|
|
749
|
+
label: 'modal.exportImage.ratio16_9',
|
|
750
|
+
getSize: function getSize(screenW) {
|
|
751
|
+
return {
|
|
752
|
+
width: screenW,
|
|
753
|
+
height: Math.round(screenW * 0.5625)
|
|
754
|
+
};
|
|
755
|
+
}
|
|
756
|
+
};
|
|
757
|
+
var EXPORT_IMG_RATIO_OPTIONS = exports.EXPORT_IMG_RATIO_OPTIONS = [ScreenRatioOption, CustomRatioOption, FourByThreeRatioOption, SixteenByNineRatioOption];
|
|
758
|
+
var OneXResolutionOption = exports.OneXResolutionOption = {
|
|
759
|
+
id: RESOLUTIONS.ONE_X,
|
|
760
|
+
label: '1x',
|
|
761
|
+
available: true,
|
|
762
|
+
scale: 1,
|
|
763
|
+
getSize: function getSize(screenW, screenH) {
|
|
764
|
+
return {
|
|
765
|
+
width: screenW,
|
|
766
|
+
height: screenH
|
|
767
|
+
};
|
|
768
|
+
}
|
|
769
|
+
};
|
|
770
|
+
var TwoXResolutionOption = exports.TwoXResolutionOption = {
|
|
771
|
+
id: RESOLUTIONS.TWO_X,
|
|
772
|
+
label: '2x',
|
|
773
|
+
available: true,
|
|
774
|
+
scale: 2,
|
|
775
|
+
getSize: function getSize(screenW, screenH) {
|
|
776
|
+
return {
|
|
777
|
+
width: screenW * 2,
|
|
778
|
+
height: screenH * 2
|
|
779
|
+
};
|
|
780
|
+
}
|
|
781
|
+
};
|
|
782
|
+
var EXPORT_IMG_RESOLUTION_OPTIONS = exports.EXPORT_IMG_RESOLUTION_OPTIONS = [OneXResolutionOption, TwoXResolutionOption];
|
|
783
|
+
var EXPORT_DATA_TYPE = exports.EXPORT_DATA_TYPE = (0, _keymirror["default"])({
|
|
784
|
+
CSV: null
|
|
785
|
+
// SHAPEFILE: null,
|
|
786
|
+
// JSON: null,
|
|
787
|
+
// GEOJSON: null,
|
|
788
|
+
// TOPOJSON: null
|
|
789
|
+
});
|
|
790
|
+
var EXPORT_DATA_TYPE_OPTIONS = exports.EXPORT_DATA_TYPE_OPTIONS = [{
|
|
791
|
+
id: EXPORT_DATA_TYPE.CSV,
|
|
792
|
+
label: EXPORT_DATA_TYPE.CSV.toLowerCase(),
|
|
793
|
+
available: true
|
|
794
|
+
}
|
|
795
|
+
// {
|
|
796
|
+
// id: EXPORT_DATA_TYPE.SHAPEFILE,
|
|
797
|
+
// label: 'shapefile',
|
|
798
|
+
// available: false
|
|
799
|
+
// },
|
|
800
|
+
// {
|
|
801
|
+
// id: EXPORT_DATA_TYPE.JSON,
|
|
802
|
+
// label: 'json',
|
|
803
|
+
// available: false
|
|
804
|
+
// },
|
|
805
|
+
// {
|
|
806
|
+
// id: EXPORT_DATA_TYPE.GEOJSON,
|
|
807
|
+
// label: 'geojson',
|
|
808
|
+
// available: false
|
|
809
|
+
// },
|
|
810
|
+
// {
|
|
811
|
+
// id: EXPORT_DATA_TYPE.TOPOJSON,
|
|
812
|
+
// label: 'topojson',
|
|
813
|
+
// available: false
|
|
814
|
+
// }
|
|
815
|
+
];
|
|
816
|
+
|
|
817
|
+
// Export map types
|
|
818
|
+
var EXPORT_MAP_FORMATS = exports.EXPORT_MAP_FORMATS = (0, _keymirror["default"])({
|
|
819
|
+
HTML: null,
|
|
820
|
+
JSON: null
|
|
821
|
+
});
|
|
822
|
+
var EXPORT_HTML_MAP_MODES = exports.EXPORT_HTML_MAP_MODES = (0, _keymirror["default"])({
|
|
823
|
+
READ: null,
|
|
824
|
+
EDIT: null
|
|
825
|
+
});
|
|
826
|
+
|
|
827
|
+
// Export map options
|
|
828
|
+
var EXPORT_MAP_FORMAT_OPTIONS = exports.EXPORT_MAP_FORMAT_OPTIONS = Object.entries(EXPORT_MAP_FORMATS).map(function (entry) {
|
|
829
|
+
return {
|
|
830
|
+
id: entry[0],
|
|
831
|
+
label: entry[1].toLowerCase(),
|
|
832
|
+
available: true
|
|
833
|
+
};
|
|
834
|
+
});
|
|
835
|
+
function getHTMLMapModeTileUrl(mode) {
|
|
836
|
+
return "https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/map-".concat(mode.toLowerCase(), "-mode.png");
|
|
837
|
+
}
|
|
838
|
+
var EXPORT_HTML_MAP_MODE_OPTIONS = exports.EXPORT_HTML_MAP_MODE_OPTIONS = Object.entries(EXPORT_HTML_MAP_MODES).map(function (entry) {
|
|
839
|
+
return {
|
|
840
|
+
id: entry[0],
|
|
841
|
+
label: "modal.exportMap.html.".concat(entry[1].toLowerCase()),
|
|
842
|
+
available: true,
|
|
843
|
+
url: getHTMLMapModeTileUrl(entry[1])
|
|
844
|
+
};
|
|
845
|
+
});
|
|
846
|
+
var DEFAULT_UUID_COUNT = exports.DEFAULT_UUID_COUNT = 6;
|
|
847
|
+
var DEFAULT_NOTIFICATION_MESSAGE = exports.DEFAULT_NOTIFICATION_MESSAGE = 'MESSAGE_NOT_PROVIDED';
|
|
848
|
+
var DEFAULT_NOTIFICATION_TYPES = exports.DEFAULT_NOTIFICATION_TYPES = (0, _keymirror["default"])({
|
|
849
|
+
info: null,
|
|
850
|
+
error: null,
|
|
851
|
+
warning: null,
|
|
852
|
+
success: null
|
|
853
|
+
});
|
|
854
|
+
var DEFAULT_NOTIFICATION_TOPICS = exports.DEFAULT_NOTIFICATION_TOPICS = (0, _keymirror["default"])({
|
|
855
|
+
global: null,
|
|
856
|
+
file: null
|
|
857
|
+
});
|
|
858
|
+
|
|
859
|
+
// Minimum time between identical notifications about deck.gl errors
|
|
860
|
+
var THROTTLE_NOTIFICATION_TIME = exports.THROTTLE_NOTIFICATION_TIME = 330;
|
|
861
|
+
|
|
862
|
+
// Animation
|
|
863
|
+
var BASE_SPEED = exports.BASE_SPEED = 600;
|
|
864
|
+
var FPS = exports.FPS = 60;
|
|
865
|
+
|
|
866
|
+
/**
|
|
867
|
+
* 4 Animation Window Types
|
|
868
|
+
* 1. free
|
|
869
|
+
* |-> |->
|
|
870
|
+
* Current time is a fixed range, animation controller calls next animation frames continuously to animation a moving window
|
|
871
|
+
* The increment id based on domain / BASE_SPEED * SPEED
|
|
872
|
+
*
|
|
873
|
+
* 2. incremental
|
|
874
|
+
* | |->
|
|
875
|
+
* Same as free, current time is a growing range, only the max value of range increment during animation.
|
|
876
|
+
* The increment is also based on domain / BASE_SPEED * SPEED
|
|
877
|
+
*
|
|
878
|
+
* 3. point
|
|
879
|
+
* o -> o
|
|
880
|
+
* Current time is a point, animation controller calls next animation frame continuously to animation a moving point
|
|
881
|
+
* The increment is based on domain / BASE_SPEED * SPEED
|
|
882
|
+
*
|
|
883
|
+
* 4. interval
|
|
884
|
+
* o ~> o
|
|
885
|
+
* Current time is a point. An array of sorted time steps need to be provided.
|
|
886
|
+
* animation controller calls next animation at a interval when the point jumps to the next step
|
|
887
|
+
*/
|
|
888
|
+
var ANIMATION_WINDOW = exports.ANIMATION_WINDOW = (0, _keymirror["default"])({
|
|
889
|
+
free: null,
|
|
890
|
+
incremental: null,
|
|
891
|
+
point: null,
|
|
892
|
+
interval: null
|
|
893
|
+
});
|
|
894
|
+
var DEFAULT_TIME_FORMAT = exports.DEFAULT_TIME_FORMAT = 'MM/DD/YY HH:mm:ssa';
|
|
895
|
+
var SPEED_CONTROL_RANGE = exports.SPEED_CONTROL_RANGE = [0, 10];
|
|
896
|
+
var SPEED_CONTROL_STEP = exports.SPEED_CONTROL_STEP = 0.001;
|
|
897
|
+
|
|
898
|
+
// Geocoder
|
|
899
|
+
var GEOCODER_DATASET_NAME = exports.GEOCODER_DATASET_NAME = 'geocoder_dataset';
|
|
900
|
+
var GEOCODER_LAYER_ID = exports.GEOCODER_LAYER_ID = 'geocoder_layer';
|
|
901
|
+
var GEOCODER_GEO_OFFSET = exports.GEOCODER_GEO_OFFSET = 0.05;
|
|
902
|
+
var GEOCODER_ICON_COLOR = exports.GEOCODER_ICON_COLOR = [255, 0, 0];
|
|
903
|
+
var GEOCODER_ICON_SIZE = exports.GEOCODER_ICON_SIZE = 80;
|
|
904
|
+
|
|
905
|
+
// Editor
|
|
906
|
+
var EDITOR_LAYER_ID = exports.EDITOR_LAYER_ID = 'kepler_editor_layer';
|
|
907
|
+
var EDITOR_LAYER_PICKING_RADIUS = exports.EDITOR_LAYER_PICKING_RADIUS = 6;
|
|
908
|
+
var EDITOR_MODES = exports.EDITOR_MODES = {
|
|
909
|
+
DRAW_POLYGON: 'DRAW_POLYGON',
|
|
910
|
+
DRAW_RECTANGLE: 'DRAW_RECTANGLE',
|
|
911
|
+
EDIT: 'EDIT_VERTEX'
|
|
912
|
+
};
|
|
913
|
+
var PLOT_TYPES = exports.PLOT_TYPES = (0, _keymirror["default"])({
|
|
914
|
+
histogram: null,
|
|
915
|
+
lineChart: null
|
|
916
|
+
});
|
|
917
|
+
|
|
918
|
+
// Filter
|
|
919
|
+
var INIT_FILTER_ITEMS_IN_DROPDOWN = exports.INIT_FILTER_ITEMS_IN_DROPDOWN = 100;
|
|
920
|
+
|
|
921
|
+
// GPU Filtering
|
|
922
|
+
/**
|
|
923
|
+
* Max number of filter value buffers that deck.gl provides
|
|
924
|
+
*/
|
|
925
|
+
var MAX_GPU_FILTERS = exports.MAX_GPU_FILTERS = 4;
|
|
926
|
+
var MAP_THUMBNAIL_DIMENSION = exports.MAP_THUMBNAIL_DIMENSION = {
|
|
927
|
+
width: 300,
|
|
928
|
+
height: 200
|
|
929
|
+
};
|
|
930
|
+
var MAP_INFO_CHARACTER = exports.MAP_INFO_CHARACTER = {
|
|
931
|
+
title: 100,
|
|
932
|
+
description: 100
|
|
933
|
+
};
|
|
934
|
+
|
|
935
|
+
// Load data
|
|
936
|
+
var LOADING_METHODS = exports.LOADING_METHODS = (0, _keymirror["default"])({
|
|
937
|
+
upload: null,
|
|
938
|
+
storage: null,
|
|
939
|
+
tileset: null
|
|
940
|
+
});
|
|
941
|
+
var DEFAULT_FEATURE_FLAGS = exports.DEFAULT_FEATURE_FLAGS = {};
|
|
942
|
+
var DATASET_FORMATS = exports.DATASET_FORMATS = (0, _keymirror["default"])({
|
|
943
|
+
row: null,
|
|
944
|
+
geojson: null,
|
|
945
|
+
csv: null,
|
|
946
|
+
keplergl: null,
|
|
947
|
+
arrow: null
|
|
948
|
+
});
|
|
949
|
+
var MAP_CONTROLS = exports.MAP_CONTROLS = (0, _keymirror["default"])({
|
|
950
|
+
visibleLayers: null,
|
|
951
|
+
mapLegend: null,
|
|
952
|
+
toggle3d: null,
|
|
953
|
+
splitMap: null,
|
|
954
|
+
mapDraw: null,
|
|
955
|
+
mapLocale: null,
|
|
956
|
+
effect: null,
|
|
957
|
+
aiAssistant: null
|
|
958
|
+
});
|
|
959
|
+
|
|
960
|
+
/**
|
|
961
|
+
* A multiplier for screen-space width/scale for Arc, Line, Icon and Text layers.
|
|
962
|
+
* Required in order to maintain the same appearance after upgrading to deck.gl v8.5.
|
|
963
|
+
* https://github.com/visgl/deck.gl/blob/master/docs/upgrade-guide.md
|
|
964
|
+
*/
|
|
965
|
+
var PROJECTED_PIXEL_SIZE_MULTIPLIER = exports.PROJECTED_PIXEL_SIZE_MULTIPLIER = 2 / 3;
|
|
966
|
+
|
|
967
|
+
/**
|
|
968
|
+
* Maximum value for text outline width
|
|
969
|
+
*/
|
|
970
|
+
var TEXT_OUTLINE_MULTIPLIER = exports.TEXT_OUTLINE_MULTIPLIER = 5;
|
|
971
|
+
var dataTestIds = exports.dataTestIds = {
|
|
972
|
+
infoIcon: 'info-icon',
|
|
973
|
+
warningIcon: 'warning-icon',
|
|
974
|
+
errorIcon: 'error-icon',
|
|
975
|
+
successIcon: 'success-icon',
|
|
976
|
+
checkmarkIcon: 'checkmark-icon',
|
|
977
|
+
sortableLayerItem: 'sortable-layer-item',
|
|
978
|
+
staticLayerItem: 'static-layer-item',
|
|
979
|
+
layerTitleEditor: 'layer__title__editor',
|
|
980
|
+
removeLayerAction: 'remove-layer-action',
|
|
981
|
+
layerPanel: 'layer-panel',
|
|
982
|
+
sortableEffectItem: 'sortable-effect-item',
|
|
983
|
+
staticEffectItem: 'static-effect-item',
|
|
984
|
+
providerLoading: 'provider-loading',
|
|
985
|
+
providerMapInfoPanel: 'provider-map-info-panel',
|
|
986
|
+
providerSelect: 'provider-select',
|
|
987
|
+
cloudHeader: 'cloud-header',
|
|
988
|
+
providerShareMap: 'provider-share-map'
|
|
989
|
+
};
|
|
990
|
+
|
|
991
|
+
// Effects
|
|
992
|
+
var DEFAULT_TIMEZONE = exports.DEFAULT_TIMEZONE = 'UTC';
|
|
993
|
+
var DEFAULT_POST_PROCESSING_EFFECT_TYPE = exports.DEFAULT_POST_PROCESSING_EFFECT_TYPE = 'ink';
|
|
994
|
+
var DEFAULT_LIGHT_COLOR = exports.DEFAULT_LIGHT_COLOR = [255, 255, 255];
|
|
995
|
+
var DEFAULT_LIGHT_INTENSITY = exports.DEFAULT_LIGHT_INTENSITY = 1;
|
|
996
|
+
var DEFAULT_SHADOW_INTENSITY = exports.DEFAULT_SHADOW_INTENSITY = 0.5;
|
|
997
|
+
var DEFAULT_SHADOW_COLOR = exports.DEFAULT_SHADOW_COLOR = [0, 0, 0];
|
|
998
|
+
var LIGHT_AND_SHADOW_EFFECT_TIME_MODES = exports.LIGHT_AND_SHADOW_EFFECT_TIME_MODES = {
|
|
999
|
+
pick: 'pick',
|
|
1000
|
+
current: 'current',
|
|
1001
|
+
animation: 'animation'
|
|
1002
|
+
};
|
|
1003
|
+
var DEFAULT_LIGHT_AND_SHADOW_PROPS = exports.DEFAULT_LIGHT_AND_SHADOW_PROPS = {
|
|
1004
|
+
timestamp: Date.now(),
|
|
1005
|
+
timeMode: LIGHT_AND_SHADOW_EFFECT_TIME_MODES.pick,
|
|
1006
|
+
shadowIntensity: DEFAULT_SHADOW_INTENSITY,
|
|
1007
|
+
shadowColor: [].concat(DEFAULT_SHADOW_COLOR),
|
|
1008
|
+
sunLightColor: [].concat(DEFAULT_LIGHT_COLOR),
|
|
1009
|
+
sunLightIntensity: DEFAULT_LIGHT_INTENSITY,
|
|
1010
|
+
ambientLightColor: [].concat(DEFAULT_LIGHT_COLOR),
|
|
1011
|
+
ambientLightIntensity: DEFAULT_LIGHT_INTENSITY
|
|
1012
|
+
};
|
|
1013
|
+
var LIGHT_AND_SHADOW_EFFECT = exports.LIGHT_AND_SHADOW_EFFECT = {
|
|
1014
|
+
type: 'lightAndShadow',
|
|
1015
|
+
name: 'Light & Shadow',
|
|
1016
|
+
parameters: [{
|
|
1017
|
+
name: 'timestamp',
|
|
1018
|
+
min: 0,
|
|
1019
|
+
max: Number.MAX_SAFE_INTEGER
|
|
1020
|
+
}, {
|
|
1021
|
+
name: 'shadowIntensity',
|
|
1022
|
+
min: 0,
|
|
1023
|
+
max: 1,
|
|
1024
|
+
defaultValue: DEFAULT_SHADOW_INTENSITY
|
|
1025
|
+
}, {
|
|
1026
|
+
name: 'sunLightIntensity',
|
|
1027
|
+
min: 0,
|
|
1028
|
+
max: 1,
|
|
1029
|
+
defaultValue: DEFAULT_LIGHT_INTENSITY
|
|
1030
|
+
}, {
|
|
1031
|
+
name: 'ambientLightIntensity',
|
|
1032
|
+
min: 0,
|
|
1033
|
+
max: 1,
|
|
1034
|
+
defaultValue: DEFAULT_LIGHT_INTENSITY
|
|
1035
|
+
}, {
|
|
1036
|
+
name: 'shadowColor',
|
|
1037
|
+
type: 'color',
|
|
1038
|
+
min: 0,
|
|
1039
|
+
max: 255,
|
|
1040
|
+
defaultValue: DEFAULT_SHADOW_COLOR
|
|
1041
|
+
}, {
|
|
1042
|
+
name: 'sunLightColor',
|
|
1043
|
+
type: 'color',
|
|
1044
|
+
min: 0,
|
|
1045
|
+
max: 255,
|
|
1046
|
+
defaultValue: DEFAULT_LIGHT_COLOR
|
|
1047
|
+
}, {
|
|
1048
|
+
name: 'ambientLightColor',
|
|
1049
|
+
type: 'color',
|
|
1050
|
+
min: 0,
|
|
1051
|
+
max: 255,
|
|
1052
|
+
defaultValue: DEFAULT_LIGHT_COLOR
|
|
1053
|
+
}]
|
|
1054
|
+
};
|
|
1055
|
+
var POSTPROCESSING_EFFECTS = exports.POSTPROCESSING_EFFECTS = {
|
|
1056
|
+
ink: {
|
|
1057
|
+
type: 'ink',
|
|
1058
|
+
name: 'Ink',
|
|
1059
|
+
parameters: [{
|
|
1060
|
+
name: 'strength',
|
|
1061
|
+
min: 0,
|
|
1062
|
+
max: 1
|
|
1063
|
+
}]
|
|
1064
|
+
},
|
|
1065
|
+
brightnessContrast: {
|
|
1066
|
+
type: 'brightnessContrast',
|
|
1067
|
+
name: 'Brightness & Contrast',
|
|
1068
|
+
parameters: [{
|
|
1069
|
+
name: 'brightness',
|
|
1070
|
+
min: -1,
|
|
1071
|
+
max: 1
|
|
1072
|
+
}, {
|
|
1073
|
+
name: 'contrast',
|
|
1074
|
+
min: -1,
|
|
1075
|
+
max: 1
|
|
1076
|
+
}]
|
|
1077
|
+
},
|
|
1078
|
+
hueSaturation: {
|
|
1079
|
+
type: 'hueSaturation',
|
|
1080
|
+
name: 'Hue & Saturation',
|
|
1081
|
+
parameters: [{
|
|
1082
|
+
name: 'hue',
|
|
1083
|
+
min: -1,
|
|
1084
|
+
max: 1
|
|
1085
|
+
}, {
|
|
1086
|
+
name: 'saturation',
|
|
1087
|
+
defaultValue: 0.25,
|
|
1088
|
+
min: -1,
|
|
1089
|
+
max: 1
|
|
1090
|
+
}]
|
|
1091
|
+
},
|
|
1092
|
+
vibrance: {
|
|
1093
|
+
type: 'vibrance',
|
|
1094
|
+
name: 'Vibrance',
|
|
1095
|
+
parameters: [{
|
|
1096
|
+
name: 'amount',
|
|
1097
|
+
defaultValue: 0.5,
|
|
1098
|
+
min: -1,
|
|
1099
|
+
max: 1
|
|
1100
|
+
}]
|
|
1101
|
+
},
|
|
1102
|
+
sepia: {
|
|
1103
|
+
type: 'sepia',
|
|
1104
|
+
name: 'Sepia',
|
|
1105
|
+
parameters: [{
|
|
1106
|
+
name: 'amount',
|
|
1107
|
+
min: 0,
|
|
1108
|
+
max: 1
|
|
1109
|
+
}]
|
|
1110
|
+
},
|
|
1111
|
+
dotScreen: {
|
|
1112
|
+
type: 'dotScreen',
|
|
1113
|
+
name: 'Dot Screen',
|
|
1114
|
+
parameters: [{
|
|
1115
|
+
name: 'angle',
|
|
1116
|
+
min: 0,
|
|
1117
|
+
max: Math.PI / 2
|
|
1118
|
+
}, {
|
|
1119
|
+
name: 'size',
|
|
1120
|
+
min: 1,
|
|
1121
|
+
max: 20
|
|
1122
|
+
}, {
|
|
1123
|
+
name: 'center',
|
|
1124
|
+
type: 'array',
|
|
1125
|
+
label: ['Center X', 'Center Y'],
|
|
1126
|
+
defaultValue: [0.5, 0.5],
|
|
1127
|
+
min: 0,
|
|
1128
|
+
max: 1
|
|
1129
|
+
}]
|
|
1130
|
+
},
|
|
1131
|
+
colorHalftone: {
|
|
1132
|
+
type: 'colorHalftone',
|
|
1133
|
+
name: 'Color Halftone',
|
|
1134
|
+
parameters: [{
|
|
1135
|
+
name: 'angle',
|
|
1136
|
+
min: 0,
|
|
1137
|
+
max: Math.PI / 2
|
|
1138
|
+
}, {
|
|
1139
|
+
name: 'size',
|
|
1140
|
+
min: 1,
|
|
1141
|
+
max: 20
|
|
1142
|
+
}, {
|
|
1143
|
+
name: 'center',
|
|
1144
|
+
type: 'array',
|
|
1145
|
+
label: ['Center X', 'Center Y'],
|
|
1146
|
+
defaultValue: [0.5, 0.5],
|
|
1147
|
+
min: 0,
|
|
1148
|
+
max: 1
|
|
1149
|
+
}]
|
|
1150
|
+
},
|
|
1151
|
+
noise: {
|
|
1152
|
+
type: 'noise',
|
|
1153
|
+
name: 'Noise',
|
|
1154
|
+
parameters: [{
|
|
1155
|
+
name: 'amount',
|
|
1156
|
+
min: 0,
|
|
1157
|
+
max: 1
|
|
1158
|
+
}]
|
|
1159
|
+
},
|
|
1160
|
+
triangleBlur: {
|
|
1161
|
+
type: 'triangleBlur',
|
|
1162
|
+
name: 'Blur (Triangle)',
|
|
1163
|
+
parameters: [{
|
|
1164
|
+
name: 'radius',
|
|
1165
|
+
min: 0,
|
|
1166
|
+
max: 100
|
|
1167
|
+
}]
|
|
1168
|
+
},
|
|
1169
|
+
zoomBlur: {
|
|
1170
|
+
type: 'zoomBlur',
|
|
1171
|
+
name: 'Blur (Zoom)',
|
|
1172
|
+
parameters: [{
|
|
1173
|
+
name: 'strength',
|
|
1174
|
+
defaultValue: 0.05,
|
|
1175
|
+
min: 0,
|
|
1176
|
+
max: 1
|
|
1177
|
+
}, {
|
|
1178
|
+
name: 'center',
|
|
1179
|
+
type: 'array',
|
|
1180
|
+
label: ['Center X', 'Center Y'],
|
|
1181
|
+
defaultValue: [0.5, 0.5],
|
|
1182
|
+
min: 0,
|
|
1183
|
+
max: 1
|
|
1184
|
+
}]
|
|
1185
|
+
},
|
|
1186
|
+
tiltShift: {
|
|
1187
|
+
type: 'tiltShift',
|
|
1188
|
+
name: 'Blur (Tilt Shift)',
|
|
1189
|
+
parameters: [{
|
|
1190
|
+
name: 'blurRadius',
|
|
1191
|
+
label: 'Blur',
|
|
1192
|
+
min: 0,
|
|
1193
|
+
max: 50
|
|
1194
|
+
}, {
|
|
1195
|
+
name: 'gradientRadius',
|
|
1196
|
+
label: 'Gradient',
|
|
1197
|
+
min: 0,
|
|
1198
|
+
max: 400
|
|
1199
|
+
}, {
|
|
1200
|
+
name: 'start',
|
|
1201
|
+
type: 'array',
|
|
1202
|
+
label: ['Start', false],
|
|
1203
|
+
defaultValue: [0.0, 0.0],
|
|
1204
|
+
min: 0,
|
|
1205
|
+
max: 1
|
|
1206
|
+
}, {
|
|
1207
|
+
name: 'end',
|
|
1208
|
+
type: 'array',
|
|
1209
|
+
label: ['End', false],
|
|
1210
|
+
defaultValue: [1, 1],
|
|
1211
|
+
min: 0,
|
|
1212
|
+
max: 1
|
|
1213
|
+
}]
|
|
1214
|
+
},
|
|
1215
|
+
edgeWork: {
|
|
1216
|
+
type: 'edgeWork',
|
|
1217
|
+
name: 'Edge work',
|
|
1218
|
+
parameters: [{
|
|
1219
|
+
name: 'radius',
|
|
1220
|
+
min: 1,
|
|
1221
|
+
max: 50
|
|
1222
|
+
}]
|
|
1223
|
+
},
|
|
1224
|
+
vignette: {
|
|
1225
|
+
type: 'vignette',
|
|
1226
|
+
name: 'Vignette',
|
|
1227
|
+
parameters: [{
|
|
1228
|
+
name: 'amount',
|
|
1229
|
+
min: 0,
|
|
1230
|
+
max: 1
|
|
1231
|
+
}, {
|
|
1232
|
+
name: 'radius',
|
|
1233
|
+
min: 0,
|
|
1234
|
+
max: 1
|
|
1235
|
+
}]
|
|
1236
|
+
},
|
|
1237
|
+
magnify: {
|
|
1238
|
+
type: 'magnify',
|
|
1239
|
+
name: 'Magnify',
|
|
1240
|
+
parameters: [{
|
|
1241
|
+
name: 'screenXY',
|
|
1242
|
+
type: 'array',
|
|
1243
|
+
label: ['Position X', 'Position Y'],
|
|
1244
|
+
defaultValue: [0.5, 0.5],
|
|
1245
|
+
min: 0,
|
|
1246
|
+
max: 1
|
|
1247
|
+
}, {
|
|
1248
|
+
name: 'radiusPixels',
|
|
1249
|
+
label: 'Size',
|
|
1250
|
+
min: 10,
|
|
1251
|
+
max: 500
|
|
1252
|
+
}, {
|
|
1253
|
+
name: 'zoom',
|
|
1254
|
+
min: 0.5,
|
|
1255
|
+
max: 50
|
|
1256
|
+
}, {
|
|
1257
|
+
name: 'borderWidthPixels',
|
|
1258
|
+
label: 'Border Width',
|
|
1259
|
+
defaultValue: 3,
|
|
1260
|
+
min: 0,
|
|
1261
|
+
max: 50
|
|
1262
|
+
}]
|
|
1263
|
+
},
|
|
1264
|
+
hexagonalPixelate: {
|
|
1265
|
+
type: 'hexagonalPixelate',
|
|
1266
|
+
name: 'Hexagonal Pixelate',
|
|
1267
|
+
parameters: [{
|
|
1268
|
+
name: 'scale',
|
|
1269
|
+
defaultValue: 20,
|
|
1270
|
+
min: 1,
|
|
1271
|
+
max: 50
|
|
1272
|
+
}]
|
|
1273
|
+
}
|
|
1274
|
+
};
|
|
1275
|
+
var EFFECT_DESCRIPTIONS = exports.EFFECT_DESCRIPTIONS = [LIGHT_AND_SHADOW_EFFECT].concat((0, _toConsumableArray2["default"])(Object.keys(POSTPROCESSING_EFFECTS).map(function (keyName) {
|
|
1276
|
+
return POSTPROCESSING_EFFECTS[keyName];
|
|
1277
|
+
})));
|
|
1278
|
+
var SYNC_TIMELINE_MODES = exports.SYNC_TIMELINE_MODES = {
|
|
1279
|
+
start: 0,
|
|
1280
|
+
end: 1
|
|
1281
|
+
};
|
|
1282
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfa2V5bWlycm9yIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfZDNTY2FsZSIsIl90b29sdGlwIiwiX0ZJRUxEX1RZUEVfRElTUExBWSIsIl9GSUVMRF9PUFRTIiwib3duS2V5cyIsImUiLCJyIiwidCIsIk9iamVjdCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJvIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJBQ1RJT05fUFJFRklYIiwiZXhwb3J0cyIsIktFUExFUl9VTkZPTERFRF9CVUNLRVQiLCJCQVNFTUFQX0lDT05fUFJFRklYIiwiY29uY2F0IiwiREVGQVVMVF9NQVBCT1hfQVBJX1VSTCIsIlRSQU5TSVRJT05fRFVSQVRJT04iLCJEQVRBX1RBQkxFX0lEIiwiREVMRVRFX0RBVEFfSUQiLCJBRERfREFUQV9JRCIsIkVYUE9SVF9JTUFHRV9JRCIsIkVYUE9SVF9EQVRBX0lEIiwiQUREX01BUF9TVFlMRV9JRCIsIkVYUE9SVF9NQVBfSUQiLCJTQVZFX01BUF9JRCIsIk9WRVJXUklURV9NQVBfSUQiLCJTSEFSRV9NQVBfSUQiLCJLRVBMRVJfR0xfTkFNRSIsIktFUExFUl9HTF9WRVJTSU9OIiwiS0VQTEVSX0dMX1dFQlNJVEUiLCJESU1FTlNJT05TIiwic2lkZVBhbmVsIiwid2lkdGgiLCJtYXJnaW4iLCJ0b3AiLCJsZWZ0IiwiYm90dG9tIiwicmlnaHQiLCJoZWFkZXJIZWlnaHQiLCJtYXBDb250cm9sIiwicGFkZGluZyIsIm1hcExlZ2VuZCIsInBpbm5lZCIsIlRIRU1FIiwia2V5TWlycm9yIiwibGlnaHQiLCJkYXJrIiwiYmFzZSIsIlNJREVCQVJfUEFORUxTIiwiaWQiLCJsYWJlbCIsIm9uQ2xpY2siLCJQQU5FTF9WSUVXX1RPR0dMRVMiLCJsaXN0IiwiYnlEYXRhc2V0IiwiUEFORUxTIiwiREVGQVVMVF9CTERHX0NPTE9SIiwiREVGQVVMVF9CQUNLR1JPVU5EX0NPTE9SIiwiQkFTRV9NQVBfQkFDS0dST1VORF9MQVlFUl9JRFMiLCJCQUNLR1JPVU5EX0xBWUVSX0dST1VQX1NMVUciLCJUSFJFRV9EX0JVSUxESU5HX0xBWUVSX0dST1VQX1NMVUciLCJCQUNLR1JPVU5EX0xBWUVSX0dST1VQIiwic2x1ZyIsImRlZmF1bHRWaXNpYmlsaXR5IiwiaXNWaXNpYmlsaXR5VG9nZ2xlQXZhaWxhYmxlIiwiaXNNb3ZlVG9Ub3BBdmFpbGFibGUiLCJpc0NvbG9yUGlja2VyQXZhaWxhYmxlIiwiREVGQVVMVF9MQVlFUl9HUk9VUFMiLCJfcmVmIiwibWF0Y2giLCJfcmVmMiIsIl9yZWYzIiwiX3JlZjQiLCJfcmVmNSIsIl9yZWY2IiwiQkFTRV9NQVBfQ09MT1JfTU9ERVMiLCJOT05FIiwiREFSSyIsIkxJR0hUIiwiTk9fTUFQX0lEIiwiRU1QVFlfTUFQQk9YX1NUWUxFIiwidmVyc2lvbiIsInNvdXJjZXMiLCJsYXllcnMiLCJOT19CQVNFTUFQX0lDT04iLCJERUZBVUxUX01BUF9TVFlMRVMiLCJ1cmwiLCJpY29uIiwibGF5ZXJHcm91cHMiLCJjb2xvck1vZGUiLCJzdHlsZSIsImNvbXBsaW1lbnRhcnlTdHlsZUlkIiwiR0VPSlNPTl9GSUVMRFMiLCJnZW9qc29uIiwiSUNPTl9GSUVMRFMiLCJUUklQX1BPSU5UX0ZJRUxEUyIsIkFMVElUVURFX0ZJRUxEUyIsIlRSSVBfQVJDX0ZJRUxEUyIsImxhdDAiLCJsbmcwIiwibGF0MSIsImxuZzEiLCJGSUxURVJfVFlQRVMiLCJyYW5nZSIsInNlbGVjdCIsImlucHV0IiwidGltZVJhbmdlIiwibXVsdGlTZWxlY3QiLCJwb2x5Z29uIiwiRklMVEVSX1ZJRVdfVFlQRVMiLCJzaWRlIiwiZW5sYXJnZWQiLCJtaW5pZmllZCIsIkRFRkFVTFRfRklMVEVSX1ZJRVdfVFlQRSIsIlNDQUxFX1RZUEVTIiwib3JkaW5hbCIsInF1YW50aWxlIiwicXVhbnRpemUiLCJsaW5lYXIiLCJzcXJ0IiwibG9nIiwidGhyZXNob2xkIiwiY3VzdG9tIiwicG9pbnQiLCJTQ0FMRV9UWVBFX05BTUVTIiwiU0NBTEVfRlVOQyIsInNjYWxlTGluZWFyIiwic2NhbGVRdWFudGl6ZSIsInNjYWxlUXVhbnRpbGUiLCJzY2FsZU9yZGluYWwiLCJzY2FsZVNxcnQiLCJzY2FsZUxvZyIsInNjYWxlUG9pbnQiLCJzY2FsZVRocmVzaG9sZCIsIkFMTF9GSUVMRF9UWVBFUyIsImRhdGUiLCJpbnRlZ2VyIiwicmVhbCIsInN0cmluZyIsInRpbWVzdGFtcCIsImFycmF5Iiwib2JqZWN0IiwiZ2VvYXJyb3ciLCJoMyIsIlNPUlRfT1JERVIiLCJBU0NFTkRJTkciLCJERVNDRU5ESU5HIiwiVU5TT1JUIiwiVEFCTEVfT1BUSU9OIiwiU09SVF9BU0MiLCJTT1JUX0RFUyIsIlBJTiIsIlVOUElOIiwiQ09QWSIsIkZPUk1BVF9DT0xVTU4iLCJUQUJMRV9PUFRJT05fTElTVCIsInZhbHVlIiwiZGlzcGxheSIsImNvbmRpdGlvbiIsInByb3BzIiwic29ydE1vZGUiLCJpc1NvcnRlZCIsImlzUGlubmVkIiwiWUVMTE9XIiwiUElOSyIsIlBVUlBMRSIsIkJMVUUiLCJCTFVFMiIsIkJMVUUzIiwiR1JFRU4iLCJHUkVFTjIiLCJSRUQiLCJPUkFOR0UiLCJGSUVMRF9UWVBFX0RJU1BMQVkiLCJjb2xvciIsIkZJRUxEX0NPTE9SUyIsIkhJR0hMSUdIX0NPTE9SXzNEIiwiQ0hBTk5FTF9TQ0FMRVMiLCJyYWRpdXMiLCJzaXplIiwiY29sb3JBZ2dyIiwic2l6ZUFnZ3IiLCJBR0dSRUdBVElPTl9UWVBFUyIsImNvdW50IiwiYXZlcmFnZSIsIm1heGltdW0iLCJtaW5pbXVtIiwibWVkaWFuIiwic3RkZXYiLCJzdW0iLCJ2YXJpYW5jZSIsIm1vZGUiLCJjb3VudFVuaXF1ZSIsIkFHR1JFR0FUSU9OX1RZUEVfT1BUSU9OUyIsImVudHJpZXMiLCJtYXAiLCJfcmVmNyIsIl9yZWY4IiwiX3NsaWNlZFRvQXJyYXkyIiwia2V5IiwiY2hhckF0IiwidG9VcHBlckNhc2UiLCJzbGljZSIsImxpbmVhckZpZWxkU2NhbGVGdW5jdGlvbnMiLCJsaW5lYXJGaWVsZEFnZ3JTY2FsZUZ1bmN0aW9ucyIsIm9yZGluYWxGaWVsZFNjYWxlRnVuY3Rpb25zIiwib3JkaW5hbEZpZWxkQWdnclNjYWxlRnVuY3Rpb25zIiwibm90U3VwcG9ydGVkU2NhbGVPcHRzIiwibm90U3VwcG9ydEFnZ3JPcHRzIiwiREVGQVVMVF9BR0dSRUdBVElPTiIsIkZJRUxEX09QVFMiLCJ0eXBlIiwic2NhbGUiLCJmb3JtYXQiLCJsZWdlbmQiLCJkIiwidG9vbHRpcCIsIlRPT0xUSVBfRk9STUFUX1RZUEVTIiwiREVDSU1BTCIsIlBFUkNFTlRBR0UiLCJEQVRFIiwiREFURV9USU1FIiwiQk9PTEVBTiIsIkNIQU5ORUxfU0NBTEVfU1VQUE9SVEVEX0ZJRUxEUyIsInJlZHVjZSIsImFjY3UiLCJmdCIsIkRFRkFVTFRfTEFZRVJfQ09MT1IiLCJ0cmlwQXJjIiwiYmVnaW50cmlwX2xhdCIsImRyb3BvZmZfbGF0IiwicmVxdWVzdF9sYXQiLCJERUZBVUxUX0xBWUVSX0NPTE9SX1BBTEVUVEUiLCJERUZBVUxUX0xBWUVSX0NPTE9SX1BBTEVUVEVfU1RFUFMiLCJERUZBVUxUX1RPT0xUSVBfRklFTERTIiwiTk9fVkFMVUVfQ09MT1IiLCJERUZBVUxUX1BJQ0tJTkdfUkFESVVTIiwiT1ZFUkxBWV9CTEVORElOR1MiLCJub3JtYWwiLCJzY3JlZW4iLCJkYXJrZW4iLCJMQVlFUl9CTEVORElOR1MiLCJhZGRpdGl2ZSIsImJsZW5kRnVuYyIsImJsZW5kRXF1YXRpb24iLCJzdWJ0cmFjdGl2ZSIsIk1BWF9ERUZBVUxUX1RPT0xUSVBTIiwiUkVTT0xVVElPTlMiLCJPTkVfWCIsIlRXT19YIiwiRVhQT1JUX0lNR19SQVRJT1MiLCJTQ1JFRU4iLCJGT1VSX0JZX1RIUkVFIiwiU0lYVEVFTl9CWV9OSU5FIiwiQ1VTVE9NIiwiU2NyZWVuUmF0aW9PcHRpb24iLCJnZXRTaXplIiwic2NyZWVuVyIsInNjcmVlbkgiLCJoZWlnaHQiLCJDdXN0b21SYXRpb09wdGlvbiIsImhpZGRlbiIsIm1hcFciLCJtYXBIIiwiRm91ckJ5VGhyZWVSYXRpb09wdGlvbiIsIk1hdGgiLCJyb3VuZCIsIlNpeHRlZW5CeU5pbmVSYXRpb09wdGlvbiIsIkVYUE9SVF9JTUdfUkFUSU9fT1BUSU9OUyIsIk9uZVhSZXNvbHV0aW9uT3B0aW9uIiwiYXZhaWxhYmxlIiwiVHdvWFJlc29sdXRpb25PcHRpb24iLCJFWFBPUlRfSU1HX1JFU09MVVRJT05fT1BUSU9OUyIsIkVYUE9SVF9EQVRBX1RZUEUiLCJDU1YiLCJFWFBPUlRfREFUQV9UWVBFX09QVElPTlMiLCJ0b0xvd2VyQ2FzZSIsIkVYUE9SVF9NQVBfRk9STUFUUyIsIkhUTUwiLCJKU09OIiwiRVhQT1JUX0hUTUxfTUFQX01PREVTIiwiUkVBRCIsIkVESVQiLCJFWFBPUlRfTUFQX0ZPUk1BVF9PUFRJT05TIiwiZW50cnkiLCJnZXRIVE1MTWFwTW9kZVRpbGVVcmwiLCJFWFBPUlRfSFRNTF9NQVBfTU9ERV9PUFRJT05TIiwiREVGQVVMVF9VVUlEX0NPVU5UIiwiREVGQVVMVF9OT1RJRklDQVRJT05fTUVTU0FHRSIsIkRFRkFVTFRfTk9USUZJQ0FUSU9OX1RZUEVTIiwiaW5mbyIsImVycm9yIiwid2FybmluZyIsInN1Y2Nlc3MiLCJERUZBVUxUX05PVElGSUNBVElPTl9UT1BJQ1MiLCJnbG9iYWwiLCJmaWxlIiwiVEhST1RUTEVfTk9USUZJQ0FUSU9OX1RJTUUiLCJCQVNFX1NQRUVEIiwiRlBTIiwiQU5JTUFUSU9OX1dJTkRPVyIsImZyZWUiLCJpbmNyZW1lbnRhbCIsImludGVydmFsIiwiREVGQVVMVF9USU1FX0ZPUk1BVCIsIlNQRUVEX0NPTlRST0xfUkFOR0UiLCJTUEVFRF9DT05UUk9MX1NURVAiLCJHRU9DT0RFUl9EQVRBU0VUX05BTUUiLCJHRU9DT0RFUl9MQVlFUl9JRCIsIkdFT0NPREVSX0dFT19PRkZTRVQiLCJHRU9DT0RFUl9JQ09OX0NPTE9SIiwiR0VPQ09ERVJfSUNPTl9TSVpFIiwiRURJVE9SX0xBWUVSX0lEIiwiRURJVE9SX0xBWUVSX1BJQ0tJTkdfUkFESVVTIiwiRURJVE9SX01PREVTIiwiRFJBV19QT0xZR09OIiwiRFJBV19SRUNUQU5HTEUiLCJQTE9UX1RZUEVTIiwiaGlzdG9ncmFtIiwibGluZUNoYXJ0IiwiSU5JVF9GSUxURVJfSVRFTVNfSU5fRFJPUERPV04iLCJNQVhfR1BVX0ZJTFRFUlMiLCJNQVBfVEhVTUJOQUlMX0RJTUVOU0lPTiIsIk1BUF9JTkZPX0NIQVJBQ1RFUiIsInRpdGxlIiwiZGVzY3JpcHRpb24iLCJMT0FESU5HX01FVEhPRFMiLCJ1cGxvYWQiLCJzdG9yYWdlIiwidGlsZXNldCIsIkRFRkFVTFRfRkVBVFVSRV9GTEFHUyIsIkRBVEFTRVRfRk9STUFUUyIsInJvdyIsImNzdiIsImtlcGxlcmdsIiwiYXJyb3ciLCJNQVBfQ09OVFJPTFMiLCJ2aXNpYmxlTGF5ZXJzIiwidG9nZ2xlM2QiLCJzcGxpdE1hcCIsIm1hcERyYXciLCJtYXBMb2NhbGUiLCJlZmZlY3QiLCJhaUFzc2lzdGFudCIsIlBST0pFQ1RFRF9QSVhFTF9TSVpFX01VTFRJUExJRVIiLCJURVhUX09VVExJTkVfTVVMVElQTElFUiIsImRhdGFUZXN0SWRzIiwiaW5mb0ljb24iLCJ3YXJuaW5nSWNvbiIsImVycm9ySWNvbiIsInN1Y2Nlc3NJY29uIiwiY2hlY2ttYXJrSWNvbiIsInNvcnRhYmxlTGF5ZXJJdGVtIiwic3RhdGljTGF5ZXJJdGVtIiwibGF5ZXJUaXRsZUVkaXRvciIsInJlbW92ZUxheWVyQWN0aW9uIiwibGF5ZXJQYW5lbCIsInNvcnRhYmxlRWZmZWN0SXRlbSIsInN0YXRpY0VmZmVjdEl0ZW0iLCJwcm92aWRlckxvYWRpbmciLCJwcm92aWRlck1hcEluZm9QYW5lbCIsInByb3ZpZGVyU2VsZWN0IiwiY2xvdWRIZWFkZXIiLCJwcm92aWRlclNoYXJlTWFwIiwiREVGQVVMVF9USU1FWk9ORSIsIkRFRkFVTFRfUE9TVF9QUk9DRVNTSU5HX0VGRkVDVF9UWVBFIiwiREVGQVVMVF9MSUdIVF9DT0xPUiIsIkRFRkFVTFRfTElHSFRfSU5URU5TSVRZIiwiREVGQVVMVF9TSEFET1dfSU5URU5TSVRZIiwiREVGQVVMVF9TSEFET1dfQ09MT1IiLCJMSUdIVF9BTkRfU0hBRE9XX0VGRkVDVF9USU1FX01PREVTIiwicGljayIsImN1cnJlbnQiLCJhbmltYXRpb24iLCJERUZBVUxUX0xJR0hUX0FORF9TSEFET1dfUFJPUFMiLCJEYXRlIiwibm93IiwidGltZU1vZGUiLCJzaGFkb3dJbnRlbnNpdHkiLCJzaGFkb3dDb2xvciIsInN1bkxpZ2h0Q29sb3IiLCJzdW5MaWdodEludGVuc2l0eSIsImFtYmllbnRMaWdodENvbG9yIiwiYW1iaWVudExpZ2h0SW50ZW5zaXR5IiwiTElHSFRfQU5EX1NIQURPV19FRkZFQ1QiLCJuYW1lIiwicGFyYW1ldGVycyIsIm1pbiIsIm1heCIsIk51bWJlciIsIk1BWF9TQUZFX0lOVEVHRVIiLCJkZWZhdWx0VmFsdWUiLCJQT1NUUFJPQ0VTU0lOR19FRkZFQ1RTIiwiaW5rIiwiYnJpZ2h0bmVzc0NvbnRyYXN0IiwiaHVlU2F0dXJhdGlvbiIsInZpYnJhbmNlIiwic2VwaWEiLCJkb3RTY3JlZW4iLCJQSSIsImNvbG9ySGFsZnRvbmUiLCJub2lzZSIsInRyaWFuZ2xlQmx1ciIsInpvb21CbHVyIiwidGlsdFNoaWZ0IiwiZWRnZVdvcmsiLCJ2aWduZXR0ZSIsIm1hZ25pZnkiLCJoZXhhZ29uYWxQaXhlbGF0ZSIsIkVGRkVDVF9ERVNDUklQVElPTlMiLCJfdG9Db25zdW1hYmxlQXJyYXkyIiwia2V5TmFtZSIsIlNZTkNfVElNRUxJTkVfTU9ERVMiLCJzdGFydCIsImVuZCJdLCJzb3VyY2VzIjpbIi4uL3NyYy9kZWZhdWx0LXNldHRpbmdzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBrZXlNaXJyb3IgZnJvbSAna2V5bWlycm9yJztcblxuaW1wb3J0IHtCYXNlTWFwU3R5bGUsIEVmZmVjdERlc2NyaXB0aW9uLCBSR0JBQ29sb3IsIFN5bmNUaW1lbGluZU1vZGV9IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuaW1wb3J0IHtcbiAgc2NhbGVMaW5lYXIsXG4gIHNjYWxlTG9nLFxuICBzY2FsZU9yZGluYWwsXG4gIHNjYWxlUG9pbnQsXG4gIHNjYWxlUXVhbnRpbGUsXG4gIHNjYWxlUXVhbnRpemUsXG4gIHNjYWxlU3FydCxcbiAgc2NhbGVUaHJlc2hvbGRcbn0gZnJvbSAnZDMtc2NhbGUnO1xuaW1wb3J0IHtUT09MVElQX0ZPUk1BVF9UWVBFU30gZnJvbSAnLi90b29sdGlwJztcblxuZXhwb3J0IGNvbnN0IEFDVElPTl9QUkVGSVggPSAnQEBrZXBsZXIuZ2wvJztcbmV4cG9ydCBjb25zdCBLRVBMRVJfVU5GT0xERURfQlVDS0VUID0gJ2h0dHBzOi8vc3R1ZGlvLXB1YmxpYy1kYXRhLmZvdXJzcXVhcmUuY29tL3N0YXRpY3Mva2VwbGVyZ2wnO1xuZXhwb3J0IGNvbnN0IEJBU0VNQVBfSUNPTl9QUkVGSVggPSBgJHtLRVBMRVJfVU5GT0xERURfQlVDS0VUfS9nZW9kdWRlYDtcbmV4cG9ydCBjb25zdCBERUZBVUxUX01BUEJPWF9BUElfVVJMID0gJ2h0dHBzOi8vYXBpLm1hcGJveC5jb20nO1xuZXhwb3J0IGNvbnN0IFRSQU5TSVRJT05fRFVSQVRJT04gPSAwO1xuXG4vLyBNb2RhbCBJZHNcbi8qKlxuICogTW9kYWwgaWQ6IGRhdGEgdGFibGVcbiAqIEBjb25zdGFudFxuICogQHR5cGUge3N0cmluZ31cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IERBVEFfVEFCTEVfSUQgPSAnZGF0YVRhYmxlJztcbi8qKlxuICogTW9kYWwgaWQ6IGRlbGV0ZSBkYXRhc2V0IGNvbmZpcm0gZGlhbG9nXG4gKiBAY29uc3RhbnRcbiAqIEB0eXBlIHtzdHJpbmd9XG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBERUxFVEVfREFUQV9JRCA9ICdkZWxldGVEYXRhJztcbi8qKlxuICogTW9kYWwgaWQ6IGFkZCBkYXRhIG1vZGFsXG4gKiBAY29uc3RhbnRcbiAqIEB0eXBlIHtzdHJpbmd9XG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBBRERfREFUQV9JRCA9ICdhZGREYXRhJztcbi8qKlxuICogTW9kYWwgaWQ6IGV4cG9ydCBpbWFnZSBtb2RhbFxuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7c3RyaW5nfVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgRVhQT1JUX0lNQUdFX0lEID0gJ2V4cG9ydEltYWdlJztcbi8qKlxuICogTW9kYWwgaWQ6IGV4cG9ydCBkYXRhIG1vZGFsXG4gKiBAY29uc3RhbnRcbiAqIEB0eXBlIHtzdHJpbmd9XG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBFWFBPUlRfREFUQV9JRCA9ICdleHBvcnREYXRhJztcbi8qKlxuICogTW9kYWwgaWQ6IGFkZCBjdXN0b20gbWFwIHN0eWxlIG1vZGFsXG4gKiBAY29uc3RhbnRcbiAqIEB0eXBlIHtzdHJpbmd9XG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBBRERfTUFQX1NUWUxFX0lEID0gJ2FkZE1hcFN0eWxlJztcbi8qKlxuICogTW9kYWwgaWQ6IGV4cG9ydCBtYXAgbW9kYWxcbiAqIEBjb25zdGFudFxuICogQHR5cGUge3N0cmluZ31cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IEVYUE9SVF9NQVBfSUQgPSAnZXhwb3J0TWFwJztcbi8qKlxuICogTW9kYWwgaWQ6IHNhdmUgbWFwIG1vZGFsXG4gKiBAY29uc3RhbnRcbiAqIEB0eXBlIHtzdHJpbmd9XG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBTQVZFX01BUF9JRCA9ICdzYXZlTWFwJztcbi8qKlxuICogTW9kYWwgaWQ6IGNvbmZpcm0gdG8gb3ZlcndyaXRlIHNhdmVkIG1hcFxuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7c3RyaW5nfVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgT1ZFUldSSVRFX01BUF9JRCA9ICdvdmVyd3JpdGVNYXAnO1xuLyoqXG4gKiBNb2RhbCBpZDogc2hhcmUgbWFwIHVybCBtb2RhbFxuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7c3RyaW5nfVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgU0hBUkVfTUFQX0lEID0gJ3NoYXJlTWFwJztcblxuZXhwb3J0IGNvbnN0IEtFUExFUl9HTF9OQU1FID0gJ2tlcGxlci5nbCc7XG5cbi8vIF9fUEFDS0FHRV9WRVJTSU9OX18gaXMgYXV0b21hdGljYWxseSBpbmplY3RlZCBieSBCYWJlbC9Fc2J1aWxkIGR1cmluZyB0aGUgYnVpbGQgcHJvY2Vzc1xuLy8gU2luY2Ugd2UgYXJlIGluamVjdGluZyB0aGlzIGR1cmluZyB0aGUgYnVpbGQgcHJvY2VzcyB3aXRoIGJhYmVsXG4vLyB3aGlsZSBkZXZlbG9waW5nIFZFUlNJT04gaXMgbm90IGRlZmluZWQsIHdlIGNhcHR1cmUgdGhlIGV4Y2VwdGlvbiBhbmQgcmV0dXJuXG4vLyBhbiBlbXB0eSBzdHJpbmcgd2hpY2ggd2lsbCBhbGxvdyB1cyB0byByZXRyaWV2ZSB0aGUgbGF0ZXN0IHVtZCB2ZXJzaW9uXG5leHBvcnQgY29uc3QgS0VQTEVSX0dMX1ZFUlNJT04gPSAnX19QQUNLQUdFX1ZFUlNJT05fXyc7XG5leHBvcnQgY29uc3QgS0VQTEVSX0dMX1dFQlNJVEUgPSAnaHR0cDovL2tlcGxlci5nbC8nO1xuXG5leHBvcnQgY29uc3QgRElNRU5TSU9OUyA9IHtcbiAgc2lkZVBhbmVsOiB7XG4gICAgd2lkdGg6IDMwMCxcbiAgICBtYXJnaW46IHt0b3A6IDIwLCBsZWZ0OiAyMCwgYm90dG9tOiAzMCwgcmlnaHQ6IDIwfSxcbiAgICBoZWFkZXJIZWlnaHQ6IDk2XG4gIH0sXG4gIG1hcENvbnRyb2w6IHtcbiAgICB3aWR0aDogMTg0LFxuICAgIHBhZGRpbmc6IDEyLFxuICAgIG1hcExlZ2VuZDoge1xuICAgICAgcGlubmVkOiB7XG4gICAgICAgIGJvdHRvbTogMjIsXG4gICAgICAgIHJpZ2h0OiAxMlxuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxuLyoqXG4gKiBUaGVtZSBuYW1lIHRoYXQgY2FuIGJlIHBhc3NlZCB0byBgS2VwbGVyR2xgIGBwcm9wLnRoZW1lYC5cbiAqIEF2YWlsYWJsZSB0aGVtZXMgYXJlIGBUSEVNRS5saWdodGAgYW5kIGBUSEVNRS5kYXJrYC4gRGVmYXVsdCB0aGVtZSBpcyBgVEhFTUUuZGFya2BcbiAqIEBjb25zdGFudFxuICogQHR5cGUge29iamVjdH1cbiAqIEBwdWJsaWNcbiAqIEBleGFtcGxlXG4gKiBgYGBqc1xuICogY29uc3QgTWFwID0gKCkgPT4gPEtlcGxlckdsIHRoZW1lPXtUSEVNRS5saWdodH0gaWQ9XCJtYXBcIi8+XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNvbnN0IFRIRU1FID0ga2V5TWlycm9yKHtcbiAgbGlnaHQ6IG51bGwsXG4gIGRhcms6IG51bGwsXG4gIGJhc2U6IG51bGxcbn0pO1xuXG5leHBvcnQgY29uc3QgU0lERUJBUl9QQU5FTFMgPSBbXG4gIHtcbiAgICBpZDogJ2xheWVyJyxcbiAgICBsYWJlbDogJ3NpZGViYXIucGFuZWxzLmxheWVyJyxcbiAgICBvbkNsaWNrOiBudWxsXG4gIH0sXG4gIHtcbiAgICBpZDogJ2ZpbHRlcicsXG4gICAgbGFiZWw6ICdzaWRlYmFyLnBhbmVscy5maWx0ZXInLFxuICAgIG9uQ2xpY2s6IG51bGxcbiAgfSxcbiAge1xuICAgIGlkOiAnaW50ZXJhY3Rpb24nLFxuICAgIGxhYmVsOiAnc2lkZWJhci5wYW5lbHMuaW50ZXJhY3Rpb24nLFxuICAgIG9uQ2xpY2s6IG51bGxcbiAgfSxcbiAge1xuICAgIGlkOiAnbWFwJyxcbiAgICBsYWJlbDogJ3NpZGViYXIucGFuZWxzLmJhc2VtYXAnLFxuICAgIG9uQ2xpY2s6IG51bGxcbiAgfVxuXTtcblxuZXhwb3J0IGNvbnN0IFBBTkVMX1ZJRVdfVE9HR0xFUyA9IGtleU1pcnJvcih7XG4gIGxpc3Q6IG51bGwsXG4gIGJ5RGF0YXNldDogbnVsbFxufSk7XG5cbi8vIGJhY2t3YXJkIGNvbXBhdGliaWxpdHlcbmV4cG9ydCBjb25zdCBQQU5FTFMgPSBTSURFQkFSX1BBTkVMUztcblxuLy8gTUFQIFNUWUxFU1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9CTERHX0NPTE9SID0gJyNEMUNFQzcnO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9CQUNLR1JPVU5EX0NPTE9SID0gJyMwMDAwMDAnO1xuXG4vLyBhc3Npc3RzIGluIGlkZW50aWZ5aW5nIGJhc2VtYXAgYmFja2dyb3VuZCBsYXllcnMgd2hlbiBhdXRvLWRldGVybWluaW5nIHRoZSBiYWNrZ3JvdW5kQ29sb3JcbmV4cG9ydCBjb25zdCBCQVNFX01BUF9CQUNLR1JPVU5EX0xBWUVSX0lEUyA9IFsnYmFja2dyb3VuZCcsICdiZycsICdsYW5kJywgJ3dhdGVyJ107XG5cbmV4cG9ydCBjb25zdCBCQUNLR1JPVU5EX0xBWUVSX0dST1VQX1NMVUcgPSAnQmFja2dyb3VuZCc7XG5cbmV4cG9ydCBjb25zdCBUSFJFRV9EX0JVSUxESU5HX0xBWUVSX0dST1VQX1NMVUcgPSAnM2QgYnVpbGRpbmcnO1xuXG5leHBvcnQgdHlwZSBERUZBVUxUX0xBWUVSX0dST1VQID0ge1xuICBzbHVnOiBzdHJpbmc7XG4gIGZpbHRlcjogKHZhbHVlKSA9PiBib29sZWFuO1xuICBkZWZhdWx0VmlzaWJpbGl0eTogYm9vbGVhbjtcbiAgaXNWaXNpYmlsaXR5VG9nZ2xlQXZhaWxhYmxlPzogYm9vbGVhbjtcbiAgaXNNb3ZlVG9Ub3BBdmFpbGFibGU/OiBib29sZWFuO1xuICBpc0NvbG9yUGlja2VyQXZhaWxhYmxlPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCBjb25zdCBCQUNLR1JPVU5EX0xBWUVSX0dST1VQOiBERUZBVUxUX0xBWUVSX0dST1VQID0ge1xuICBzbHVnOiBCQUNLR1JPVU5EX0xBWUVSX0dST1VQX1NMVUcsXG4gIGZpbHRlcjogKCkgPT4gZmFsc2UsXG4gIGRlZmF1bHRWaXNpYmlsaXR5OiBmYWxzZSxcbiAgaXNWaXNpYmlsaXR5VG9nZ2xlQXZhaWxhYmxlOiBmYWxzZSxcbiAgaXNNb3ZlVG9Ub3BBdmFpbGFibGU6IGZhbHNlLFxuICBpc0NvbG9yUGlja2VyQXZhaWxhYmxlOiB0cnVlXG59O1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9MQVlFUl9HUk9VUFM6IERFRkFVTFRfTEFZRVJfR1JPVVBbXSA9IFtcbiAge1xuICAgIHNsdWc6ICdsYWJlbCcsXG4gICAgZmlsdGVyOiAoe2lkfSkgPT4gaWQubWF0Y2goLyg/PShsYWJlbHxwbGFjZS18cG9pLSkpLyksXG4gICAgZGVmYXVsdFZpc2liaWxpdHk6IHRydWUsXG4gICAgaXNWaXNpYmlsaXR5VG9nZ2xlQXZhaWxhYmxlOiB0cnVlLFxuICAgIGlzTW92ZVRvVG9wQXZhaWxhYmxlOiB0cnVlLFxuICAgIGlzQ29sb3JQaWNrZXJBdmFpbGFibGU6IGZhbHNlXG4gIH0sXG4gIHtcbiAgICBzbHVnOiAncm9hZCcsXG4gICAgZmlsdGVyOiAoe2lkfSkgPT4gaWQubWF0Y2goLyg/PShyb2FkfHJhaWx3YXl8dHVubmVsfHN0cmVldHxicmlkZ2UpKSg/IS4qbGFiZWwpLyksXG4gICAgZGVmYXVsdFZpc2liaWxpdHk6IHRydWUsXG4gICAgaXNWaXNpYmlsaXR5VG9nZ2xlQXZhaWxhYmxlOiB0cnVlLFxuICAgIGlzTW92ZVRvVG9wQXZhaWxhYmxlOiB0cnVlLFxuICAgIGlzQ29sb3JQaWNrZXJBdmFpbGFibGU6IGZhbHNlXG4gIH0sXG4gIHtcbiAgICBzbHVnOiAnYm9yZGVyJyxcbiAgICBmaWx0ZXI6ICh7aWR9KSA9PiBpZC5tYXRjaCgvYm9yZGVyfGJvdW5kYXJpZXN8Ym91bmRhcnkvKSxcbiAgICBkZWZhdWx0VmlzaWJpbGl0eTogZmFsc2UsXG4gICAgaXNWaXNpYmlsaXR5VG9nZ2xlQXZhaWxhYmxlOiB0cnVlLFxuICAgIGlzTW92ZVRvVG9wQXZhaWxhYmxlOiB0cnVlLFxuICAgIGlzQ29sb3JQaWNrZXJBdmFpbGFibGU6IGZhbHNlXG4gIH0sXG4gIHtcbiAgICBzbHVnOiAnYnVpbGRpbmcnLFxuICAgIGZpbHRlcjogKHtpZH0pID0+IGlkLm1hdGNoKC9idWlsZGluZy8pLFxuICAgIGRlZmF1bHRWaXNpYmlsaXR5OiB0cnVlLFxuICAgIGlzVmlzaWJpbGl0eVRvZ2dsZUF2YWlsYWJsZTogdHJ1ZSxcbiAgICBpc01vdmVUb1RvcEF2YWlsYWJsZTogdHJ1ZSxcbiAgICBpc0NvbG9yUGlja2VyQXZhaWxhYmxlOiBmYWxzZVxuICB9LFxuICB7XG4gICAgc2x1ZzogJ3dhdGVyJyxcbiAgICBmaWx0ZXI6ICh7aWR9KSA9PiBpZC5tYXRjaCgvKD89KHdhdGVyfHN0cmVhbXxmZXJyeSkpLyksXG4gICAgZGVmYXVsdFZpc2liaWxpdHk6IHRydWUsXG4gICAgaXNWaXNpYmlsaXR5VG9nZ2xlQXZhaWxhYmxlOiB0cnVlLFxuICAgIGlzTW92ZVRvVG9wQXZhaWxhYmxlOiB0cnVlLFxuICAgIGlzQ29sb3JQaWNrZXJBdmFpbGFibGU6IGZhbHNlXG4gIH0sXG4gIHtcbiAgICBzbHVnOiAnbGFuZCcsXG4gICAgZmlsdGVyOiAoe2lkfSkgPT4gaWQubWF0Y2goLyg/PShwYXJrc3xsYW5kY292ZXJ8aW5kdXN0cmlhbHxzYW5kfGhpbGxzaGFkZSkpLyksXG4gICAgZGVmYXVsdFZpc2liaWxpdHk6IHRydWUsXG4gICAgaXNWaXNpYmlsaXR5VG9nZ2xlQXZhaWxhYmxlOiB0cnVlLFxuICAgIGlzTW92ZVRvVG9wQXZhaWxhYmxlOiB0cnVlLFxuICAgIGlzQ29sb3JQaWNrZXJBdmFpbGFibGU6IGZhbHNlXG4gIH0sXG4gIHtcbiAgICBzbHVnOiBUSFJFRV9EX0JVSUxESU5HX0xBWUVSX0dST1VQX1NMVUcsXG4gICAgZmlsdGVyOiAoKSA9PiBmYWxzZSxcbiAgICBkZWZhdWx0VmlzaWJpbGl0eTogZmFsc2UsXG4gICAgaXNWaXNpYmlsaXR5VG9nZ2xlQXZhaWxhYmxlOiB0cnVlLFxuICAgIGlzTW92ZVRvVG9wQXZhaWxhYmxlOiB0cnVlLFxuICAgIGlzQ29sb3JQaWNrZXJBdmFpbGFibGU6IHRydWVcbiAgfVxuXTtcblxuZXhwb3J0IGNvbnN0IEJBU0VfTUFQX0NPTE9SX01PREVTID0ga2V5TWlycm9yKHtcbiAgTk9ORTogbnVsbCxcbiAgREFSSzogbnVsbCxcbiAgTElHSFQ6IG51bGxcbn0pO1xuXG5leHBvcnQgY29uc3QgTk9fTUFQX0lEID0gJ25vX21hcCc7XG5cbi8vIEZhbGxiYWNrIHN0eWxlIHRvIHVzZSB3aGVuIHN0eWxlcyBhcmUgYmVpbmcgZmV0Y2hlZCwgb3Igd2hlblxuLy8gYSBzdHlsZSBmYWlscyB0byBmZXRjaFxuZXhwb3J0IGNvbnN0IEVNUFRZX01BUEJPWF9TVFlMRSA9IHtcbiAgdmVyc2lvbjogOCxcbiAgc291cmNlczoge30sXG4gIGxheWVyczogW11cbn07XG5cbmV4cG9ydCBjb25zdCBOT19CQVNFTUFQX0lDT04gPSBgJHtCQVNFTUFQX0lDT05fUFJFRklYfS9OT19CQVNFTUFQLnBuZ2A7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX01BUF9TVFlMRVM6IEJhc2VNYXBTdHlsZVtdID0gW1xuICB7XG4gICAgaWQ6IE5PX01BUF9JRCxcbiAgICBsYWJlbDogJ05vIEJhc2VtYXAnLFxuICAgIHVybDogJycsXG4gICAgaWNvbjogTk9fQkFTRU1BUF9JQ09OLFxuICAgIGxheWVyR3JvdXBzOiBbQkFDS0dST1VORF9MQVlFUl9HUk9VUF0sXG4gICAgY29sb3JNb2RlOiBCQVNFX01BUF9DT0xPUl9NT0RFUy5OT05FLFxuICAgIHN0eWxlOiBFTVBUWV9NQVBCT1hfU1RZTEVcbiAgfSxcbiAge1xuICAgIGlkOiAnZGFyay1tYXR0ZXInLFxuICAgIGxhYmVsOiAnRGFya01hdHRlcicsXG4gICAgdXJsOiAnaHR0cHM6Ly9iYXNlbWFwcy5jYXJ0b2Nkbi5jb20vZ2wvZGFyay1tYXR0ZXItZ2wtc3R5bGUvc3R5bGUuanNvbicsXG4gICAgaWNvbjogYCR7QkFTRU1BUF9JQ09OX1BSRUZJWH0vREFSS01BVFRFUi5wbmdgLFxuICAgIGxheWVyR3JvdXBzOiBERUZBVUxUX0xBWUVSX0dST1VQUyxcbiAgICBjb2xvck1vZGU6IEJBU0VfTUFQX0NPTE9SX01PREVTLkRBUkssXG4gICAgY29tcGxpbWVudGFyeVN0eWxlSWQ6ICdwb3NpdHJvbidcbiAgfSxcbiAge1xuICAgIGlkOiAnZGFyay1tYXR0ZXItbm9sYWJlbHMnLFxuICAgIGxhYmVsOiAnRGFya01hdHRlck5vTGFiZWxzJyxcbiAgICB1cmw6ICdodHRwczovL2Jhc2VtYXBzLmNhcnRvY2RuLmNvbS9nbC9kYXJrLW1hdHRlci1ub2xhYmVscy1nbC1zdHlsZS9zdHlsZS5qc29uJyxcbiAgICBpY29uOiBgJHtCQVNFTUFQX0lDT05fUFJFRklYfS9EQVJLTUFUVEVSX05PTEFCRUxTLnBuZ2AsXG4gICAgbGF5ZXJHcm91cHM6IERFRkFVTFRfTEFZRVJfR1JPVVBTLFxuICAgIGNvbG9yTW9kZTogQkFTRV9NQVBfQ09MT1JfTU9ERVMuREFSSyxcbiAgICBjb21wbGltZW50YXJ5U3R5bGVJZDogJ3Bvc2l0cm9uLW5vbGFiZWxzJ1xuICB9LFxuICB7XG4gICAgaWQ6ICdwb3NpdHJvbicsXG4gICAgbGFiZWw6ICdQb3NpdHJvbicsXG4gICAgdXJsOiAnaHR0cHM6Ly9iYXNlbWFwcy5jYXJ0b2Nkbi5jb20vZ2wvcG9zaXRyb24tZ2wtc3R5bGUvc3R5bGUuanNvbicsXG4gICAgaWNvbjogYCR7QkFTRU1BUF9JQ09OX1BSRUZJWH0vUE9TSVRST04ucG5nYCxcbiAgICBsYXllckdyb3VwczogREVGQVVMVF9MQVlFUl9HUk9VUFMsXG4gICAgY29sb3JNb2RlOiBCQVNFX01BUF9DT0xPUl9NT0RFUy5MSUdIVCxcbiAgICBjb21wbGltZW50YXJ5U3R5bGVJZDogJ2RhcmstbWF0dGVyJ1xuICB9LFxuICB7XG4gICAgaWQ6ICdwb3NpdHJvbi1ub2xhYmVscycsXG4gICAgbGFiZWw6ICdQb3NpdHJvbk5vTGFiZWxzJyxcbiAgICB1cmw6ICdodHRwczovL2Jhc2VtYXBzLmNhcnRvY2RuLmNvbS9nbC9wb3NpdHJvbi1ub2xhYmVscy1nbC1zdHlsZS9zdHlsZS5qc29uJyxcbiAgICBpY29uOiBgJHtCQVNFTUFQX0lDT05fUFJFRklYfS9QT1NJVFJPTl9OT0xBQkVMUy5wbmdgLFxuICAgIGxheWVyR3JvdXBzOiBERUZBVUxUX0xBWUVSX0dST1VQUyxcbiAgICBjb2xvck1vZGU6IEJBU0VfTUFQX0NPTE9SX01PREVTLkxJR0hULFxuICAgIGNvbXBsaW1lbnRhcnlTdHlsZUlkOiAnZGFyay1tYXR0ZXItbm9sYWJlbHMnXG4gIH0sXG4gIHtcbiAgICBpZDogJ3ZveWFnZXInLFxuICAgIGxhYmVsOiAnVm95YWdlcicsXG4gICAgdXJsOiAnaHR0cHM6Ly9iYXNlbWFwcy5jYXJ0b2Nkbi5jb20vZ2wvdm95YWdlci1nbC1zdHlsZS9zdHlsZS5qc29uJyxcbiAgICBpY29uOiBgJHtCQVNFTUFQX0lDT05fUFJFRklYfS9WT1lBR0VSLnBuZ2AsXG4gICAgbGF5ZXJHcm91cHM6IERFRkFVTFRfTEFZRVJfR1JPVVBTLFxuICAgIGNvbG9yTW9kZTogQkFTRV9NQVBfQ09MT1JfTU9ERVMuTElHSFQsXG4gICAgY29tcGxpbWVudGFyeVN0eWxlSWQ6ICdkYXJrLW1hdHRlcidcbiAgfSxcbiAge1xuICAgIGlkOiAndm95YWdlci1ub2xhYmVscycsXG4gICAgbGFiZWw6ICdWb3lhZ2VyTm9MYWJlbHMnLFxuICAgIHVybDogJ2h0dHBzOi8vYmFzZW1hcHMuY2FydG9jZG4uY29tL2dsL3ZveWFnZXItbm9sYWJlbHMtZ2wtc3R5bGUvc3R5bGUuanNvbicsXG4gICAgaWNvbjogYCR7QkFTRU1BUF9JQ09OX1BSRUZJWH0vVk9ZQUdFUl9OT0xBQkVMUy5wbmdgLFxuICAgIGxheWVyR3JvdXBzOiBERUZBVUxUX0xBWUVSX0dST1VQUyxcbiAgICBjb2xvck1vZGU6IEJBU0VfTUFQX0NPTE9SX01PREVTLkxJR0hULFxuICAgIGNvbXBsaW1lbnRhcnlTdHlsZUlkOiAnZGFyay1tYXR0ZXItbm9sYWJlbHMnXG4gIH1cbl07XG5cbmV4cG9ydCBjb25zdCBHRU9KU09OX0ZJRUxEUyA9IHtcbiAgZ2VvanNvbjogWydfZ2VvanNvbicsICdhbGxfcG9pbnRzJywgJ2dlb2pzb24nXVxufTtcblxuZXhwb3J0IGNvbnN0IElDT05fRklFTERTID0ge1xuICBpY29uOiBbJ2ljb24nXVxufTtcblxuZXhwb3J0IGNvbnN0IFRSSVBfUE9JTlRfRklFTERTOiBbc3RyaW5nLCBzdHJpbmddW10gPSBbXG4gIFsnbGF0JywgJ2xuZyddLFxuICBbJ2xhdCcsICdsb24nXSxcbiAgWydsYXQnLCAnbG9uZyddLFxuICBbJ2xhdGl0dWRlJywgJ2xvbmdpdHVkZSddXG5dO1xuXG5leHBvcnQgY29uc3QgQUxUSVRVREVfRklFTERTID0gWydhbHQnLCAnYWx0aXR1ZGUnXTtcbmV4cG9ydCBjb25zdCBUUklQX0FSQ19GSUVMRFMgPSB7XG4gIGxhdDA6ICdiZWdpbnRyaXAnLFxuICBsbmcwOiAnYmVnaW50cmlwJyxcbiAgbGF0MTogJ2Ryb3BvZmYnLFxuICBsbmcxOiAnZHJvcG9mZidcbn07XG5cbmV4cG9ydCBjb25zdCBGSUxURVJfVFlQRVMgPSBrZXlNaXJyb3Ioe1xuICByYW5nZTogbnVsbCxcbiAgc2VsZWN0OiBudWxsLFxuICBpbnB1dDogbnVsbCxcbiAgdGltZVJhbmdlOiBudWxsLFxuICBtdWx0aVNlbGVjdDogbnVsbCxcbiAgcG9seWdvbjogbnVsbFxufSk7XG5cbmV4cG9ydCBjb25zdCBGSUxURVJfVklFV19UWVBFUyA9IGtleU1pcnJvcih7XG4gIHNpZGU6IG51bGwsXG4gIGVubGFyZ2VkOiBudWxsLFxuICBtaW5pZmllZDogbnVsbFxufSk7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0ZJTFRFUl9WSUVXX1RZUEUgPSBGSUxURVJfVklFV19UWVBFUy5zaWRlO1xuXG5leHBvcnQgdHlwZSBTQ0FMRV9UWVBFU19ERUYgPSB7XG4gIG9yZGluYWw6ICdvcmRpbmFsJztcbiAgcXVhbnRpbGU6ICdxdWFudGlsZSc7XG4gIHF1YW50aXplOiAncXVhbnRpemUnO1xuICBsaW5lYXI6ICdsaW5lYXInO1xuICBzcXJ0OiAnc3FydCc7XG4gIGxvZzogJ2xvZyc7XG4gIHBvaW50OiAncG9pbnQnO1xuICB0aHJlc2hvbGQ6ICd0aHJlc2hvbGQnO1xuICBjdXN0b206ICdjdXN0b20nO1xufTtcblxuZXhwb3J0IGNvbnN0IFNDQUxFX1RZUEVTOiBTQ0FMRV9UWVBFU19ERUYgPSBrZXlNaXJyb3Ioe1xuICBvcmRpbmFsOiBudWxsLFxuICBxdWFudGlsZTogbnVsbCxcbiAgcXVhbnRpemU6IG51bGwsXG4gIGxpbmVhcjogbnVsbCxcbiAgc3FydDogbnVsbCxcbiAgbG9nOiBudWxsLFxuICB0aHJlc2hvbGQ6IG51bGwsXG4gIGN1c3RvbTogbnVsbCxcbiAgLy8gb3JkaW5hbCBkb21haW4gdG8gbGluZWFyIHJhbmdlXG4gIHBvaW50OiBudWxsXG59KTtcbmV4cG9ydCBjb25zdCBTQ0FMRV9UWVBFX05BTUVTOiB7W2tleSBpbiBrZXlvZiBTQ0FMRV9UWVBFU19ERUZdOiBzdHJpbmd9ID0ge1xuICBvcmRpbmFsOiAnT3JkaW5hbCcsXG4gIHF1YW50aWxlOiAnUXVhbnRpbGUnLFxuICBxdWFudGl6ZTogJ1F1YW50aXplJyxcbiAgbGluZWFyOiAnTGluZWFyJyxcbiAgc3FydDogJ1NxcnQnLFxuICBsb2c6ICdMb2cnLFxuICB0aHJlc2hvbGQ6ICdUaHJlc2hvbGQnLFxuICBjdXN0b206ICdDdXN0b20gQnJlYWtzJyxcbiAgcG9pbnQ6ICdQb2ludCdcbn07XG5cbmV4cG9ydCB0eXBlIFNDQUxFX0ZVTkNfVFlQRSA9IHtcbiAgW2tleSBpbiBrZXlvZiBTQ0FMRV9UWVBFU19ERUZdOiAoKSA9PiBudW1iZXI7XG59O1xuXG5leHBvcnQgY29uc3QgU0NBTEVfRlVOQyA9IHtcbiAgW1NDQUxFX1RZUEVTLmxpbmVhcl06IHNjYWxlTGluZWFyLFxuICBbU0NBTEVfVFlQRVMucXVhbnRpemVdOiBzY2FsZVF1YW50aXplLFxuICBbU0NBTEVfVFlQRVMucXVhbnRpbGVdOiBzY2FsZVF1YW50aWxlLFxuICBbU0NBTEVfVFlQRVMub3JkaW5hbF06IHNjYWxlT3JkaW5hbCxcbiAgW1NDQUxFX1RZUEVTLnNxcnRdOiBzY2FsZVNxcnQsXG4gIFtTQ0FMRV9UWVBFUy5sb2ddOiBzY2FsZUxvZyxcbiAgW1NDQUxFX1RZUEVTLnBvaW50XTogc2NhbGVQb2ludCxcbiAgW1NDQUxFX1RZUEVTLnRocmVzaG9sZF06IHNjYWxlVGhyZXNob2xkLFxuICBbU0NBTEVfVFlQRVMuY3VzdG9tXTogc2NhbGVUaHJlc2hvbGRcbn07XG5cbmV4cG9ydCBjb25zdCBBTExfRklFTERfVFlQRVMgPSBrZXlNaXJyb3Ioe1xuICBib29sZWFuOiBudWxsLFxuICBkYXRlOiBudWxsLFxuICBnZW9qc29uOiBudWxsLFxuICBpbnRlZ2VyOiBudWxsLFxuICByZWFsOiBudWxsLFxuICBzdHJpbmc6IG51bGwsXG4gIHRpbWVzdGFtcDogbnVsbCxcbiAgcG9pbnQ6IG51bGwsXG4gIGFycmF5OiBudWxsLFxuICBvYmplY3Q6IG51bGwsXG4gIGdlb2Fycm93OiBudWxsLFxuICBoMzogbnVsbFxufSk7XG5cbi8vIERhdGEgVGFibGVcbmV4cG9ydCBjb25zdCBTT1JUX09SREVSID0ga2V5TWlycm9yKHtcbiAgQVNDRU5ESU5HOiBudWxsLFxuICBERVNDRU5ESU5HOiBudWxsLFxuICBVTlNPUlQ6IG51bGxcbn0pO1xuXG5leHBvcnQgY29uc3QgVEFCTEVfT1BUSU9OID0ga2V5TWlycm9yKHtcbiAgU09SVF9BU0M6IG51bGwsXG4gIFNPUlRfREVTOiBudWxsLFxuICBVTlNPUlQ6IG51bGwsXG4gIFBJTjogbnVsbCxcbiAgVU5QSU46IG51bGwsXG4gIENPUFk6IG51bGwsXG4gIEZPUk1BVF9DT0xVTU46IG51bGxcbn0pO1xuXG5leHBvcnQgdHlwZSBUYWJsZU9wdGlvbiA9IHtcbiAgdmFsdWU6ICdTT1JUX0FTQycgfCAnU09SVF9ERVMnIHwgJ1VOU09SVCcgfCAnUElOJyB8ICdVTlBJTicgfCAnQ09QWScgfCAnRk9STUFUX0NPTFVNTic7XG4gIGRpc3BsYXk6IHN0cmluZztcbiAgaWNvbjogc3RyaW5nO1xuICBjb25kaXRpb24/OiAocHJvcHM6IGFueSkgPT4gYm9vbGVhbjtcbn07XG5leHBvcnQgY29uc3QgVEFCTEVfT1BUSU9OX0xJU1Q6IFRhYmxlT3B0aW9uW10gPSBbXG4gIHtcbiAgICB2YWx1ZTogVEFCTEVfT1BUSU9OLlNPUlRfQVNDLFxuICAgIGRpc3BsYXk6ICdTb3J0IEFzY2VuZGluZycsXG4gICAgaWNvbjogJ0Fycm93VXAnLFxuICAgIGNvbmRpdGlvbjogcHJvcHMgPT4gcHJvcHMuc29ydE1vZGUgIT09IFNPUlRfT1JERVIuQVNDRU5ESU5HXG4gIH0sXG4gIHtcbiAgICB2YWx1ZTogVEFCTEVfT1BUSU9OLlNPUlRfREVTLFxuICAgIGRpc3BsYXk6ICdTb3J0IERlc2NlbmRpbmcnLFxuICAgIGljb246ICdBcnJvd0Rvd24nLFxuICAgIGNvbmRpdGlvbjogcHJvcHMgPT4gcHJvcHMuc29ydE1vZGUgIT09IFNPUlRfT1JERVIuREVTQ0VORElOR1xuICB9LFxuICB7XG4gICAgdmFsdWU6IFRBQkxFX09QVElPTi5VTlNPUlQsXG4gICAgZGlzcGxheTogJ1Vuc29ydCBDb2x1bW4nLFxuICAgIGljb246ICdDYW5jZWwnLFxuICAgIGNvbmRpdGlvbjogcHJvcHMgPT4gcHJvcHMuaXNTb3J0ZWRcbiAgfSxcbiAge1xuICAgIHZhbHVlOiBUQUJMRV9PUFRJT04uUElOLFxuICAgIGRpc3BsYXk6ICdQaW4gQ29sdW1uJyxcbiAgICBpY29uOiAnUGluJyxcbiAgICBjb25kaXRpb246IHByb3BzID0+ICFwcm9wcy5pc1Bpbm5lZFxuICB9LFxuICB7XG4gICAgdmFsdWU6IFRBQkxFX09QVElPTi5VTlBJTixcbiAgICBkaXNwbGF5OiAnVW5waW4gQ29sdW1uJyxcbiAgICBpY29uOiAnQ2FuY2VsJyxcbiAgICBjb25kaXRpb246IHByb3BzID0+IHByb3BzLmlzUGlubmVkXG4gIH0sXG4gIHt2YWx1ZTogVEFCTEVfT1BUSU9OLkNPUFksIGRpc3BsYXk6ICdDb3B5IENvbHVtbicsIGljb246ICdDbGlwYm9hcmQnfSxcbiAge3ZhbHVlOiBUQUJMRV9PUFRJT04uRk9STUFUX0NPTFVNTiwgZGlzcGxheTogJ0Zvcm1hdCBDb2x1bW4nLCBpY29uOiAnSGFzaCd9XG5dO1xuXG5jb25zdCBZRUxMT1cgPSAnMjQ4LCAxOTQsIDI4JztcbmNvbnN0IFBJTksgPSAnMjQyLCAxNTIsIDE2Myc7XG5jb25zdCBQVVJQTEUgPSAnMTYwLCAxMDYsIDIwNic7XG5jb25zdCBCTFVFID0gJzE0MCwgMjEwLCAyMDUnO1xuY29uc3QgQkxVRTIgPSAnMTA2LCAxNjAsIDIwNic7XG5jb25zdCBCTFVFMyA9ICcwLCAxNzIsIDIzNyc7XG5jb25zdCBHUkVFTiA9ICcxMDYsIDE2MCwgNTYnO1xuY29uc3QgR1JFRU4yID0gJzc0LCAxNjUsIDE1MCc7XG5jb25zdCBSRUQgPSAnMjM3LCA4OCwgMTA2JztcbmNvbnN0IE9SQU5HRSA9ICcyMzEsIDExMCwgNTgnO1xuXG5leHBvcnQgY29uc3QgRklFTERfVFlQRV9ESVNQTEFZID0ge1xuICBbQUxMX0ZJRUxEX1RZUEVTLmJvb2xlYW5dOiB7XG4gICAgbGFiZWw6ICdib29sJyxcbiAgICBjb2xvcjogUElOS1xuICB9LFxuICBbQUxMX0ZJRUxEX1RZUEVTLmRhdGVdOiB7XG4gICAgbGFiZWw6ICdkYXRlJyxcbiAgICBjb2xvcjogUFVSUExFXG4gIH0sXG4gIFtBTExfRklFTERfVFlQRVMuZ2VvanNvbl06IHtcbiAgICBsYWJlbDogJ2dlbycsXG4gICAgY29sb3I6IEJMVUUyXG4gIH0sXG4gIFtBTExfRklFTERfVFlQRVMuZ2VvYXJyb3ddOiB7XG4gICAgbGFiZWw6ICdnZW8nLFxuICAgIGNvbG9yOiBCTFVFMlxuICB9LFxuICBbQUxMX0ZJRUxEX1RZUEVTLmludGVnZXJdOiB7XG4gICAgbGFiZWw6ICdpbnQnLFxuICAgIGNvbG9yOiBZRUxMT1dcbiAgfSxcbiAgW0FMTF9GSUVMRF9UWVBFUy5yZWFsXToge1xuICAgIGxhYmVsOiAnZmxvYXQnLFxuICAgIGNvbG9yOiBZRUxMT1dcbiAgfSxcbiAgW0FMTF9GSUVMRF9UWVBFUy5zdHJpbmddOiB7XG4gICAgbGFiZWw6ICdzdHJpbmcnLFxuICAgIGNvbG9yOiBCTFVFXG4gIH0sXG4gIFtBTExfRklFTERfVFlQRVMudGltZXN0YW1wXToge1xuICAgIGxhYmVsOiAndGltZScsXG4gICAgY29sb3I6IEdSRUVOXG4gIH0sXG4gIC8vIGZpZWxkIHBhaXJzXG4gIFtBTExfRklFTERfVFlQRVMucG9pbnRdOiB7XG4gICAgbGFiZWw6ICdwb2ludCcsXG4gICAgY29sb3I6IEJMVUUzXG4gIH0sXG4gIFtBTExfRklFTERfVFlQRVMuYXJyYXldOiB7XG4gICAgbGFiZWw6ICdhcnJheScsXG4gICAgY29sb3I6IE9SQU5HRVxuICB9LFxuICBbQUxMX0ZJRUxEX1RZUEVTLm9iamVjdF06IHtcbiAgICBsYWJlbDogJ29iamVjdCcsXG4gICAgY29sb3I6IEdSRUVOMlxuICB9LFxuICBbQUxMX0ZJRUxEX1RZUEVTLmgzXToge1xuICAgIGxhYmVsOiAnaDMnLFxuICAgIGNvbG9yOiBCTFVFXG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBGSUVMRF9DT0xPUlMgPSB7XG4gIGRlZmF1bHQ6IFJFRFxufTtcbmV4cG9ydCBjb25zdCBISUdITElHSF9DT0xPUl8zRDogUkdCQUNvbG9yID0gWzI1NSwgMjU1LCAyNTUsIDYwXTtcbmV4cG9ydCBjb25zdCBDSEFOTkVMX1NDQUxFUyA9IGtleU1pcnJvcih7XG4gIGNvbG9yOiBudWxsLFxuICByYWRpdXM6IG51bGwsXG4gIHNpemU6IG51bGwsXG4gIGNvbG9yQWdncjogbnVsbCxcbiAgc2l6ZUFnZ3I6IG51bGxcbn0pO1xuXG5leHBvcnQgY29uc3QgQUdHUkVHQVRJT05fVFlQRVM6IHtcbiAgLy8gZGVmYXVsdFxuICBjb3VudDogJ2NvdW50JztcbiAgLy8gbGluZWFyXG4gIGF2ZXJhZ2U6ICdhdmVyYWdlJztcbiAgbWF4aW11bTogJ21heGltdW0nO1xuICBtaW5pbXVtOiAnbWluaW11bSc7XG4gIG1lZGlhbjogJ21lZGlhbic7XG4gIHN0ZGV2OiAnc3RkZXYnO1xuICBzdW06ICdzdW0nO1xuICB2YXJpYW5jZTogJ3ZhcmlhbmNlJztcbiAgLy8gb3JkaW5hbFxuICBtb2RlOiAnbW9kZSc7XG4gIGNvdW50VW5pcXVlOiAnY291bnRVbmlxdWUnO1xufSA9IHtcbiAgLy8gZGVmYXVsdFxuICBjb3VudDogJ2NvdW50JyxcbiAgLy8gbGluZWFyXG4gIGF2ZXJhZ2U6ICdhdmVyYWdlJyxcbiAgbWF4aW11bTogJ21heGltdW0nLFxuICBtaW5pbXVtOiAnbWluaW11bScsXG4gIG1lZGlhbjogJ21lZGlhbicsXG4gIHN0ZGV2OiAnc3RkZXYnLFxuICBzdW06ICdzdW0nLFxuICB2YXJpYW5jZTogJ3ZhcmlhbmNlJyxcbiAgLy8gb3JkaW5hbFxuICBtb2RlOiAnbW9kZScsXG4gIGNvdW50VW5pcXVlOiAnY291bnRVbmlxdWUnXG59O1xuXG5leHBvcnQgY29uc3QgQUdHUkVHQVRJT05fVFlQRV9PUFRJT05TOiB7aWQ6IHN0cmluZzsgbGFiZWw6IHN0cmluZ31bXSA9IE9iamVjdC5lbnRyaWVzKFxuICBBR0dSRUdBVElPTl9UWVBFU1xuKS5tYXAoKFtrZXksIHZhbHVlXSkgPT4gKHtcbiAgaWQ6IGtleSxcbiAgbGFiZWw6XG4gICAga2V5ID09PSAnc3RkZXYnXG4gICAgICA/ICdTdGQgRGV2aWF0aW9uJ1xuICAgICAgOiBrZXkgPT09ICdjb3VudFVuaXF1ZSdcbiAgICAgID8gJ0NvdW50IFVuaXF1ZSdcbiAgICAgIDogdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJ1xuICAgICAgPyB2YWx1ZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHZhbHVlLnNsaWNlKDEpXG4gICAgICA6IHZhbHVlXG59KSk7XG5cbmV4cG9ydCBjb25zdCBsaW5lYXJGaWVsZFNjYWxlRnVuY3Rpb25zID0ge1xuICBbQ0hBTk5FTF9TQ0FMRVMuY29sb3JdOiBbU0NBTEVfVFlQRVMucXVhbnRpemUsIFNDQUxFX1RZUEVTLnF1YW50aWxlLCBTQ0FMRV9UWVBFUy5jdXN0b21dLFxuICBbQ0hBTk5FTF9TQ0FMRVMucmFkaXVzXTogW1NDQUxFX1RZUEVTLnNxcnRdLFxuICBbQ0hBTk5FTF9TQ0FMRVMuc2l6ZV06IFtTQ0FMRV9UWVBFUy5saW5lYXIsIFNDQUxFX1RZUEVTLnNxcnQsIFNDQUxFX1RZUEVTLmxvZ11cbn07XG5cbmV4cG9ydCBjb25zdCBsaW5lYXJGaWVsZEFnZ3JTY2FsZUZ1bmN0aW9ucyA9IHtcbiAgW0NIQU5ORUxfU0NBTEVTLmNvbG9yQWdncl06IHtcbiAgICBbQUdHUkVHQVRJT05fVFlQRVMuYXZlcmFnZV06IFtTQ0FMRV9UWVBFUy5xdWFudGl6ZSwgU0NBTEVfVFlQRVMucXVhbnRpbGVdLFxuICAgIFtBR0dSRUdBVElPTl9UWVBFUy5tYXhpbXVtXTogW1NDQUxFX1RZUEVTLnF1YW50aXplLCBTQ0FMRV9UWVBFUy5xdWFudGlsZV0sXG4gICAgW0FHR1JFR0FUSU9OX1RZUEVTLm1pbmltdW1dOiBbU0NBTEVfVFlQRVMucXVhbnRpemUsIFNDQUxFX1RZUEVTLnF1YW50aWxlXSxcbiAgICBbQUdHUkVHQVRJT05fVFlQRVMubWVkaWFuXTogW1NDQUxFX1RZUEVTLnF1YW50aXplLCBTQ0FMRV9UWVBFUy5xdWFudGlsZV0sXG4gICAgW0FHR1JFR0FUSU9OX1RZUEVTLnN0ZGV2XTogW1NDQUxFX1RZUEVTLnF1YW50aXplLCBTQ0FMRV9UWVBFUy5xdWFudGlsZV0sXG4gICAgW0FHR1JFR0FUSU9OX1RZUEVTLnN1bV06IFtTQ0FMRV9UWVBFUy5xdWFudGl6ZSwgU0NBTEVfVFlQRVMucXVhbnRpbGVdLFxuICAgIFtBR0dSRUdBVElPTl9UWVBFUy52YXJpYW5jZV06IFtTQ0FMRV9UWVBFUy5xdWFudGl6ZSwgU0NBTEVfVFlQRVMucXVhbnRpbGVdXG4gIH0sXG5cbiAgW0NIQU5ORUxfU0NBTEVTLnNpemVBZ2dyXToge1xuICAgIFtBR0dSRUdBVElPTl9UWVBFUy5hdmVyYWdlXTogW1NDQUxFX1RZUEVTLmxpbmVhciwgU0NBTEVfVFlQRVMuc3FydCwgU0NBTEVfVFlQRVMubG9nXSxcbiAgICBbQUdHUkVHQVRJT05fVFlQRVMubWF4aW11bV06IFtTQ0FMRV9UWVBFUy5saW5lYXIsIFNDQUxFX1RZUEVTLnNxcnQsIFNDQUxFX1RZUEVTLmxvZ10sXG4gICAgW0FHR1JFR0FUSU9OX1RZUEVTLm1pbmltdW1dOiBbU0NBTEVfVFlQRVMubGluZWFyLCBTQ0FMRV9UWVBFUy5zcXJ0LCBTQ0FMRV9UWVBFUy5sb2ddLFxuICAgIFtBR0dSRUdBVElPTl9UWVBFUy5tZWRpYW5dOiBbU0NBTEVfVFlQRVMubGluZWFyLCBTQ0FMRV9UWVBFUy5zcXJ0LCBTQ0FMRV9UWVBFUy5sb2ddLFxuICAgIFtBR0dSRUdBVElPTl9UWVBFUy5zdGRldl06IFtTQ0FMRV9UWVBFUy5saW5lYXIsIFNDQUxFX1RZUEVTLnNxcnQsIFNDQUxFX1RZUEVTLmxvZ10sXG4gICAgW0FHR1JFR0FUSU9OX1RZUEVTLnN1bV06IFtTQ0FMRV9UWVBFUy5saW5lYXIsIFNDQUxFX1RZUEVTLnNxcnQsIFNDQUxFX1RZUEVTLmxvZ10sXG4gICAgW0FHR1JFR0FUSU9OX1RZUEVTLnZhcmlhbmNlXTogW1NDQUxFX1RZUEVTLmxpbmVhciwgU0NBTEVfVFlQRVMuc3FydCwgU0NBTEVfVFlQRVMubG9nXVxuICB9XG59O1xuXG5leHBvcnQgY29uc3Qgb3JkaW5hbEZpZWxkU2NhbGVGdW5jdGlvbnMgPSB7XG4gIFtDSEFOTkVMX1NDQUxFUy5jb2xvcl06IFtTQ0FMRV9UWVBFUy5vcmRpbmFsXSxcbiAgW0NIQU5ORUxfU0NBTEVTLnJhZGl1c106IFtTQ0FMRV9UWVBFUy5wb2ludF0sXG4gIFtDSEFOTkVMX1NDQUxFUy5zaXplXTogW1NDQUxFX1RZUEVTLnBvaW50XVxufTtcblxuZXhwb3J0IGNvbnN0IG9yZGluYWxGaWVsZEFnZ3JTY2FsZUZ1bmN0aW9ucyA9IHtcbiAgLy8gW0NIQU5ORUxfU0NBTEVTLmNvbG9yQWdncl06IFtTQ0FMRV9UWVBFUy5vcmRpbmFsLCBTQ0FMRV9UWVBFUy5saW5lYXJdLFxuICBbQ0hBTk5FTF9TQ0FMRVMuY29sb3JBZ2dyXToge1xuICAgIFtBR0dSRUdBVElPTl9UWVBFUy5tb2RlXTogW1NDQUxFX1RZUEVTLm9yZGluYWxdLFxuICAgIFtBR0dSRUdBVElPTl9UWVBFUy5jb3VudFVuaXF1ZV06IFtTQ0FMRV9UWVBFUy5xdWFudGl6ZSwgU0NBTEVfVFlQRVMucXVhbnRpbGVdXG4gIH0sXG5cbiAgLy8gQ3VycmVudGx5IGRvZXNuJ3Qgc3VwcG9ydCB5ZXRcbiAgW0NIQU5ORUxfU0NBTEVTLnNpemVBZ2dyXToge31cbn07XG5cbmV4cG9ydCBjb25zdCBub3RTdXBwb3J0ZWRTY2FsZU9wdHMgPSB7XG4gIFtDSEFOTkVMX1NDQUxFUy5jb2xvcl06IFtdLFxuICBbQ0hBTk5FTF9TQ0FMRVMucmFkaXVzXTogW10sXG4gIFtDSEFOTkVMX1NDQUxFUy5zaXplXTogW11cbn07XG5cbmV4cG9ydCBjb25zdCBub3RTdXBwb3J0QWdnck9wdHMgPSB7XG4gIFtDSEFOTkVMX1NDQUxFUy5jb2xvckFnZ3JdOiB7fSxcbiAgW0NIQU5ORUxfU0NBTEVTLnNpemVBZ2dyXToge31cbn07XG5cbi8qKlxuICogRGVmYXVsdCBhZ2dyZWdhdGlvbiBhcmUgYmFzZWQgb24gb2N1bnRcbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfQUdHUkVHQVRJT04gPSB7XG4gIFtDSEFOTkVMX1NDQUxFUy5jb2xvckFnZ3JdOiB7XG4gICAgW0FHR1JFR0FUSU9OX1RZUEVTLmNvdW50XTogW1NDQUxFX1RZUEVTLnF1YW50aXplLCBTQ0FMRV9UWVBFUy5xdWFudGlsZV1cbiAgfSxcbiAgW0NIQU5ORUxfU0NBTEVTLnNpemVBZ2dyXToge1xuICAgIFtBR0dSRUdBVElPTl9UWVBFUy5jb3VudF06IFtTQ0FMRV9UWVBFUy5saW5lYXIsIFNDQUxFX1RZUEVTLnNxcnQsIFNDQUxFX1RZUEVTLmxvZ11cbiAgfVxufTtcblxuLyoqXG4gKiBEZWZpbmUgd2hhdCB0eXBlIG9mIHNjYWxlIG9wZXJhdGlvbiBpcyBhbGxvd2VkIG9uIGVhY2ggdHlwZSBvZiBmaWVsZHNcbiAqL1xuZXhwb3J0IGNvbnN0IEZJRUxEX09QVFMgPSB7XG4gIFtBTExfRklFTERfVFlQRVMuc3RyaW5nXToge1xuICAgIHR5cGU6ICdjYXRlZ29yaWNhbCcsXG4gICAgc2NhbGU6IHtcbiAgICAgIC4uLm9yZGluYWxGaWVsZFNjYWxlRnVuY3Rpb25zLFxuICAgICAgLi4ub3JkaW5hbEZpZWxkQWdnclNjYWxlRnVuY3Rpb25zXG4gICAgfSxcbiAgICBmb3JtYXQ6IHtcbiAgICAgIGxlZ2VuZDogZCA9PiBkLFxuICAgICAgdG9vbHRpcDogW11cbiAgICB9XG4gIH0sXG4gIFtBTExfRklFTERfVFlQRVMucmVhbF06IHtcbiAgICB0eXBlOiAnbnVtZXJpY2FsJyxcbiAgICBzY2FsZToge1xuICAgICAgLi4ubGluZWFyRmllbGRTY2FsZUZ1bmN0aW9ucyxcbiAgICAgIC4uLmxpbmVhckZpZWxkQWdnclNjYWxlRnVuY3Rpb25zXG4gICAgfSxcbiAgICBmb3JtYXQ6IHtcbiAgICAgIGxlZ2VuZDogZCA9PiBkLFxuICAgICAgdG9vbHRpcDogW1xuICAgICAgICBUT09MVElQX0ZPUk1BVF9UWVBFUy5OT05FLFxuICAgICAgICBUT09MVElQX0ZPUk1BVF9UWVBFUy5ERUNJTUFMLFxuICAgICAgICBUT09MVElQX0ZPUk1BVF9UWVBFUy5QRVJDRU5UQUdFXG4gICAgICBdXG4gICAgfVxuICB9LFxuICBbQUxMX0ZJRUxEX1RZUEVTLnRpbWVzdGFtcF06IHtcbiAgICB0eXBlOiAndGltZScsXG4gICAgc2NhbGU6IHtcbiAgICAgIC4uLmxpbmVhckZpZWxkU2NhbGVGdW5jdGlvbnMsXG4gICAgICAuLi5ub3RTdXBwb3J0QWdnck9wdHNcbiAgICB9LFxuICAgIGZvcm1hdDoge1xuICAgICAgbGVnZW5kOiBkID0+IGQsXG4gICAgICB0b29sdGlwOiBbXG4gICAgICAgIFRPT0xUSVBfRk9STUFUX1RZUEVTLk5PTkUsXG4gICAgICAgIFRPT0xUSVBfRk9STUFUX1RZUEVTLkRBVEUsXG4gICAgICAgIFRPT0xUSVBfRk9STUFUX1RZUEVTLkRBVEVfVElNRVxuICAgICAgXVxuICAgIH1cbiAgfSxcbiAgW0FMTF9GSUVMRF9UWVBFUy5pbnRlZ2VyXToge1xuICAgIHR5cGU6ICdudW1lcmljYWwnLFxuICAgIHNjYWxlOiB7XG4gICAgICAuLi5saW5lYXJGaWVsZFNjYWxlRnVuY3Rpb25zLFxuICAgICAgLi4ubGluZWFyRmllbGRBZ2dyU2NhbGVGdW5jdGlvbnNcbiAgICB9LFxuICAgIGZvcm1hdDoge1xuICAgICAgbGVnZW5kOiBkID0+IGQsXG4gICAgICB0b29sdGlwOiBbXG4gICAgICAgIFRPT0xUSVBfRk9STUFUX1RZUEVTLk5PTkUsXG4gICAgICAgIFRPT0xUSVBfRk9STUFUX1RZUEVTLkRFQ0lNQUwsXG4gICAgICAgIFRPT0xUSVBfRk9STUFUX1RZUEVTLlBFUkNFTlRBR0VcbiAgICAgIF1cbiAgICB9XG4gIH0sXG4gIFtBTExfRklFTERfVFlQRVMuYm9vbGVhbl06IHtcbiAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgc2NhbGU6IHtcbiAgICAgIC4uLm9yZGluYWxGaWVsZFNjYWxlRnVuY3Rpb25zLFxuICAgICAgLi4ub3JkaW5hbEZpZWxkQWdnclNjYWxlRnVuY3Rpb25zXG4gICAgfSxcbiAgICBmb3JtYXQ6IHtcbiAgICAgIGxlZ2VuZDogZCA9PiBkLFxuICAgICAgdG9vbHRpcDogW1RPT0xUSVBfRk9STUFUX1RZUEVTLk5PTkUsIFRPT0xUSVBfRk9STUFUX1RZUEVTLkJPT0xFQU5dXG4gICAgfVxuICB9LFxuICBbQUxMX0ZJRUxEX1RZUEVTLmRhdGVdOiB7XG4gICAgdHlwZTogJ3RpbWUnLFxuICAgIHNjYWxlOiB7XG4gICAgICAuLi5vcmRpbmFsRmllbGRTY2FsZUZ1bmN0aW9ucyxcbiAgICAgIC4uLm9yZGluYWxGaWVsZEFnZ3JTY2FsZUZ1bmN0aW9uc1xuICAgIH0sXG4gICAgZm9ybWF0OiB7XG4gICAgICBsZWdlbmQ6IGQgPT4gZCxcbiAgICAgIHRvb2x0aXA6IFtUT09MVElQX0ZPUk1BVF9UWVBFUy5OT05FLCBUT09MVElQX0ZPUk1BVF9UWVBFUy5EQVRFXVxuICAgIH1cbiAgfSxcbiAgW0FMTF9GSUVMRF9UWVBFUy5nZW9qc29uXToge1xuICAgIHR5cGU6ICdnZW9tZXRyeScsXG4gICAgc2NhbGU6IHtcbiAgICAgIC4uLm5vdFN1cHBvcnRlZFNjYWxlT3B0cyxcbiAgICAgIC4uLm5vdFN1cHBvcnRBZ2dyT3B0c1xuICAgIH0sXG4gICAgZm9ybWF0OiB7XG4gICAgICBsZWdlbmQ6ICgpID0+ICcuLi4nLFxuICAgICAgdG9vbHRpcDogW11cbiAgICB9XG4gIH0sXG4gIFtBTExfRklFTERfVFlQRVMuZ2VvYXJyb3ddOiB7XG4gICAgdHlwZTogJ2dlb21ldHJ5JyxcbiAgICBzY2FsZToge1xuICAgICAgLi4ubm90U3VwcG9ydGVkU2NhbGVPcHRzLFxuICAgICAgLi4ubm90U3VwcG9ydEFnZ3JPcHRzXG4gICAgfSxcbiAgICBmb3JtYXQ6IHtcbiAgICAgIGxlZ2VuZDogKCkgPT4gJy4uLicsXG4gICAgICB0b29sdGlwOiBbXVxuICAgIH1cbiAgfSxcbiAgW0FMTF9GSUVMRF9UWVBFUy5vYmplY3RdOiB7XG4gICAgdHlwZTogJ251bWVyaWNhbCcsXG4gICAgc2NhbGU6IHt9LFxuICAgIGZvcm1hdDoge1xuICAgICAgbGVnZW5kOiAoKSA9PiAnLi4uJyxcbiAgICAgIHRvb2x0aXA6IFtdXG4gICAgfVxuICB9LFxuICBbQUxMX0ZJRUxEX1RZUEVTLmFycmF5XToge1xuICAgIHR5cGU6ICdudW1lcmljYWwnLFxuICAgIHNjYWxlOiB7fSxcbiAgICBmb3JtYXQ6IHtcbiAgICAgIGxlZ2VuZDogKCkgPT4gJy4uLicsXG4gICAgICB0b29sdGlwOiBbXVxuICAgIH1cbiAgfSxcbiAgW0FMTF9GSUVMRF9UWVBFUy5oM106IHtcbiAgICB0eXBlOiAnaDMnLFxuICAgIHNjYWxlOiB7XG4gICAgICAuLi5ub3RTdXBwb3J0ZWRTY2FsZU9wdHMsXG4gICAgICAuLi5ub3RTdXBwb3J0QWdnck9wdHNcbiAgICB9LFxuICAgIGZvcm1hdDoge1xuICAgICAgbGVnZW5kOiBkID0+ICcuLi4nLFxuICAgICAgdG9vbHRpcDogW11cbiAgICB9XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBDSEFOTkVMX1NDQUxFX1NVUFBPUlRFRF9GSUVMRFMgPSBPYmplY3Qua2V5cyhDSEFOTkVMX1NDQUxFUykucmVkdWNlKFxuICAoYWNjdSwga2V5KSA9PiAoe1xuICAgIC4uLmFjY3UsXG4gICAgW2tleV06IE9iamVjdC5rZXlzKEZJRUxEX09QVFMpLmZpbHRlcihcbiAgICAgIGZ0ID0+IEZJRUxEX09QVFNbZnRdLnNjYWxlW2tleV0gJiYgT2JqZWN0LmtleXMoRklFTERfT1BUU1tmdF0uc2NhbGVba2V5XSkubGVuZ3RoXG4gICAgKVxuICB9KSxcbiAge30gYXMge1tpZDogc3RyaW5nXTogc3RyaW5nW119XG4pO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9MQVlFUl9DT0xPUiA9IHtcbiAgdHJpcEFyYzogJyM5MjI2QzYnLFxuICBiZWdpbnRyaXBfbGF0OiAnIzFFOTZCRScsXG4gIGRyb3BvZmZfbGF0OiAnI0ZGOTkxRicsXG4gIHJlcXVlc3RfbGF0OiAnIzUyQTM1Mydcbn07XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0xBWUVSX0NPTE9SX1BBTEVUVEUgPSAnR2xvYmFsIFdhcm1pbmcnO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfTEFZRVJfQ09MT1JfUEFMRVRURV9TVEVQUyA9IDY7XG5cbi8vIGxldCB1c2VyIHBhc3MgaW4gZGVmYXVsdCB0b29sdGlwIGZpZWxkc1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfVE9PTFRJUF9GSUVMRFM6IGFueVtdID0gW107XG5cbmV4cG9ydCBjb25zdCBOT19WQUxVRV9DT0xPUjogUkdCQUNvbG9yID0gWzAsIDAsIDAsIDBdO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9QSUNLSU5HX1JBRElVUyA9IDM7XG5cbmV4cG9ydCBjb25zdCBPVkVSTEFZX0JMRU5ESU5HUyA9IHtcbiAgbm9ybWFsOiB7XG4gICAgbGFiZWw6ICdvdmVybGF5QmxlbmRpbmcubm9ybWFsJyxcbiAgICB2YWx1ZTogJ25vcm1hbCdcbiAgfSxcbiAgc2NyZWVuOiB7XG4gICAgbGFiZWw6ICdvdmVybGF5QmxlbmRpbmcuc2NyZWVuJyxcbiAgICB2YWx1ZTogJ3NjcmVlbidcbiAgfSxcbiAgZGFya2VuOiB7XG4gICAgbGFiZWw6ICdvdmVybGF5QmxlbmRpbmcuZGFya2VuJyxcbiAgICB2YWx1ZTogJ2RhcmtlbidcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IExBWUVSX0JMRU5ESU5HUyA9IHtcbiAgYWRkaXRpdmU6IHtcbiAgICBsYWJlbDogJ2xheWVyQmxlbmRpbmcuYWRkaXRpdmUnLFxuICAgIGJsZW5kRnVuYzogWydTUkNfQUxQSEEnLCAnRFNUX0FMUEhBJ10sXG4gICAgYmxlbmRFcXVhdGlvbjogJ0ZVTkNfQUREJ1xuICB9LFxuICBub3JtYWw6IHtcbiAgICAvLyByZWZlcmVuY2UgdG9cbiAgICAvLyBodHRwczovL2xpbW51LmNvbS93ZWJnbC1ibGVuZGluZy15b3VyZS1wcm9iYWJseS13cm9uZy9cbiAgICBsYWJlbDogJ2xheWVyQmxlbmRpbmcubm9ybWFsJyxcbiAgICBibGVuZEZ1bmM6IFsnU1JDX0FMUEhBJywgJ09ORV9NSU5VU19TUkNfQUxQSEEnLCAnT05FJywgJ09ORV9NSU5VU19TUkNfQUxQSEEnXSxcbiAgICBibGVuZEVxdWF0aW9uOiBbJ0ZVTkNfQUREJywgJ0ZVTkNfQUREJ11cbiAgfSxcbiAgc3VidHJhY3RpdmU6IHtcbiAgICBsYWJlbDogJ2xheWVyQmxlbmRpbmcuc3VidHJhY3RpdmUnLFxuICAgIGJsZW5kRnVuYzogWydPTkUnLCAnT05FX01JTlVTX0RTVF9DT0xPUicsICdTUkNfQUxQSEEnLCAnRFNUX0FMUEhBJ10sXG4gICAgYmxlbmRFcXVhdGlvbjogWydGVU5DX1NVQlRSQUNUJywgJ0ZVTkNfQUREJ11cbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IE1BWF9ERUZBVUxUX1RPT0xUSVBTID0gNTtcblxuZXhwb3J0IGNvbnN0IFJFU09MVVRJT05TID0ga2V5TWlycm9yKHtcbiAgT05FX1g6IG51bGwsXG4gIFRXT19YOiBudWxsXG59KTtcblxuZXhwb3J0IGNvbnN0IEVYUE9SVF9JTUdfUkFUSU9TID0ga2V5TWlycm9yKHtcbiAgU0NSRUVOOiBudWxsLFxuICBGT1VSX0JZX1RIUkVFOiBudWxsLFxuICBTSVhURUVOX0JZX05JTkU6IG51bGwsXG4gIENVU1RPTTogbnVsbFxufSk7XG5cbmV4cG9ydCB0eXBlIEV4cG9ydEltYWdlID0ge1xuICByYXRpbzoga2V5b2YgdHlwZW9mIEVYUE9SVF9JTUdfUkFUSU9TO1xuICByZXNvbHV0aW9uOiBrZXlvZiB0eXBlb2YgUkVTT0xVVElPTlM7XG4gIGxlZ2VuZDogYm9vbGVhbjtcbiAgbWFwSDogbnVtYmVyO1xuICBtYXBXOiBudW1iZXI7XG4gIGltYWdlU2l6ZToge1xuICAgIHpvb21PZmZzZXQ6IG51bWJlcjtcbiAgICBzY2FsZTogbnVtYmVyO1xuICAgIGltYWdlVzogbnVtYmVyO1xuICAgIGltYWdlSDogbnVtYmVyO1xuICB9O1xuICAvLyBleHBvcnRpbmcgc3RhdGVcbiAgaW1hZ2VEYXRhVXJpOiBzdHJpbmc7XG4gIGV4cG9ydGluZzogYm9vbGVhbjtcbiAgcHJvY2Vzc2luZzogYm9vbGVhbjtcbiAgZXJyb3I6IEVycm9yIHwgZmFsc2U7XG4gIGVzY2FwZVhodG1sRm9yV2VicGFjaz86IGJvb2xlYW47XG4gIC8vIFRoaXMgZmllbGQgd2FzIG5vdCBpbiB0aGUgLmQudHMgZmlsZVxuICBjZW50ZXI6IGJvb2xlYW47XG59O1xuXG5leHBvcnQgdHlwZSBJbWFnZVJhdGlvT3B0aW9uID0ge1xuICBpZDoga2V5b2YgdHlwZW9mIEVYUE9SVF9JTUdfUkFUSU9TO1xuICBsYWJlbDogc3RyaW5nO1xuICBoaWRkZW4/OiBib29sZWFuO1xuICBnZXRTaXplOiAoc2NyZWVuVzogbnVtYmVyLCBzY3JlZW5IOiBudW1iZXIpID0+IHt3aWR0aDogbnVtYmVyOyBoZWlnaHQ6IG51bWJlcn07XG59O1xuXG5leHBvcnQgY29uc3QgU2NyZWVuUmF0aW9PcHRpb246IEltYWdlUmF0aW9PcHRpb24gPSB7XG4gIGlkOiBFWFBPUlRfSU1HX1JBVElPUy5TQ1JFRU4sXG4gIGxhYmVsOiAnbW9kYWwuZXhwb3J0SW1hZ2UucmF0aW9PcmlnaW5hbFNjcmVlbicsXG4gIGdldFNpemU6IChzY3JlZW5XLCBzY3JlZW5IKSA9PiAoe3dpZHRoOiBzY3JlZW5XLCBoZWlnaHQ6IHNjcmVlbkh9KVxufTtcbmV4cG9ydCBjb25zdCBDdXN0b21SYXRpb09wdGlvbjogSW1hZ2VSYXRpb09wdGlvbiA9IHtcbiAgaWQ6IEVYUE9SVF9JTUdfUkFUSU9TLkNVU1RPTSxcbiAgaGlkZGVuOiB0cnVlLFxuICBsYWJlbDogJ21vZGFsLmV4cG9ydEltYWdlLnJhdGlvQ3VzdG9tJyxcbiAgZ2V0U2l6ZTogKG1hcFcsIG1hcEgpID0+ICh7d2lkdGg6IG1hcFcsIGhlaWdodDogbWFwSH0pXG59O1xuZXhwb3J0IGNvbnN0IEZvdXJCeVRocmVlUmF0aW9PcHRpb246IEltYWdlUmF0aW9PcHRpb24gPSB7XG4gIGlkOiBFWFBPUlRfSU1HX1JBVElPUy5GT1VSX0JZX1RIUkVFLFxuICBsYWJlbDogJ21vZGFsLmV4cG9ydEltYWdlLnJhdGlvNF8zJyxcbiAgZ2V0U2l6ZTogc2NyZWVuVyA9PiAoe1xuICAgIHdpZHRoOiBzY3JlZW5XLFxuICAgIGhlaWdodDogTWF0aC5yb3VuZChzY3JlZW5XICogMC43NSlcbiAgfSlcbn07XG5leHBvcnQgY29uc3QgU2l4dGVlbkJ5TmluZVJhdGlvT3B0aW9uOiBJbWFnZVJhdGlvT3B0aW9uID0ge1xuICBpZDogRVhQT1JUX0lNR19SQVRJT1MuU0lYVEVFTl9CWV9OSU5FLFxuICBsYWJlbDogJ21vZGFsLmV4cG9ydEltYWdlLnJhdGlvMTZfOScsXG4gIGdldFNpemU6IHNjcmVlblcgPT4gKHtcbiAgICB3aWR0aDogc2NyZWVuVyxcbiAgICBoZWlnaHQ6IE1hdGgucm91bmQoc2NyZWVuVyAqIDAuNTYyNSlcbiAgfSlcbn07XG5cbmV4cG9ydCBjb25zdCBFWFBPUlRfSU1HX1JBVElPX09QVElPTlM6IFJlYWRvbmx5QXJyYXk8SW1hZ2VSYXRpb09wdGlvbj4gPSBbXG4gIFNjcmVlblJhdGlvT3B0aW9uLFxuICBDdXN0b21SYXRpb09wdGlvbixcbiAgRm91ckJ5VGhyZWVSYXRpb09wdGlvbixcbiAgU2l4dGVlbkJ5TmluZVJhdGlvT3B0aW9uXG5dO1xuXG5leHBvcnQgdHlwZSBJbWFnZVJlc29sdXRpb25PcHRpb24gPSB7XG4gIGlkOiBrZXlvZiB0eXBlb2YgUkVTT0xVVElPTlM7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGF2YWlsYWJsZTogYm9vbGVhbjtcbiAgc2NhbGU6IG51bWJlcjtcbiAgZ2V0U2l6ZTogKHNjcmVlblc6IG51bWJlciwgc2NyZWVuSDogbnVtYmVyKSA9PiB7d2lkdGg6IG51bWJlcjsgaGVpZ2h0OiBudW1iZXJ9O1xufTtcblxuZXhwb3J0IGNvbnN0IE9uZVhSZXNvbHV0aW9uT3B0aW9uOiBJbWFnZVJlc29sdXRpb25PcHRpb24gPSB7XG4gIGlkOiBSRVNPTFVUSU9OUy5PTkVfWCxcbiAgbGFiZWw6ICcxeCcsXG4gIGF2YWlsYWJsZTogdHJ1ZSxcbiAgc2NhbGU6IDEsXG4gIGdldFNpemU6IChzY3JlZW5XLCBzY3JlZW5IKSA9PiAoe1xuICAgIHdpZHRoOiBzY3JlZW5XLFxuICAgIGhlaWdodDogc2NyZWVuSFxuICB9KVxufTtcblxuZXhwb3J0IGNvbnN0IFR3b1hSZXNvbHV0aW9uT3B0aW9uOiBJbWFnZVJlc29sdXRpb25PcHRpb24gPSB7XG4gIGlkOiBSRVNPTFVUSU9OUy5UV09fWCxcbiAgbGFiZWw6ICcyeCcsXG4gIGF2YWlsYWJsZTogdHJ1ZSxcbiAgc2NhbGU6IDIsXG4gIGdldFNpemU6IChzY3JlZW5XLCBzY3JlZW5IKSA9PiAoe1xuICAgIHdpZHRoOiBzY3JlZW5XICogMixcbiAgICBoZWlnaHQ6IHNjcmVlbkggKiAyXG4gIH0pXG59O1xuXG5leHBvcnQgY29uc3QgRVhQT1JUX0lNR19SRVNPTFVUSU9OX09QVElPTlM6IFJlYWRvbmx5QXJyYXk8SW1hZ2VSZXNvbHV0aW9uT3B0aW9uPiA9IFtcbiAgT25lWFJlc29sdXRpb25PcHRpb24sXG4gIFR3b1hSZXNvbHV0aW9uT3B0aW9uXG5dO1xuXG5leHBvcnQgY29uc3QgRVhQT1JUX0RBVEFfVFlQRSA9IGtleU1pcnJvcih7XG4gIENTVjogbnVsbFxuICAvLyBTSEFQRUZJTEU6IG51bGwsXG4gIC8vIEpTT046IG51bGwsXG4gIC8vIEdFT0pTT046IG51bGwsXG4gIC8vIFRPUE9KU09OOiBudWxsXG59KTtcblxuZXhwb3J0IGNvbnN0IEVYUE9SVF9EQVRBX1RZUEVfT1BUSU9OUyA9IFtcbiAge1xuICAgIGlkOiBFWFBPUlRfREFUQV9UWVBFLkNTVixcbiAgICBsYWJlbDogRVhQT1JUX0RBVEFfVFlQRS5DU1YudG9Mb3dlckNhc2UoKSxcbiAgICBhdmFpbGFibGU6IHRydWVcbiAgfVxuICAvLyB7XG4gIC8vICAgaWQ6IEVYUE9SVF9EQVRBX1RZUEUuU0hBUEVGSUxFLFxuICAvLyAgIGxhYmVsOiAnc2hhcGVmaWxlJyxcbiAgLy8gICBhdmFpbGFibGU6IGZhbHNlXG4gIC8vIH0sXG4gIC8vIHtcbiAgLy8gICBpZDogRVhQT1JUX0RBVEFfVFlQRS5KU09OLFxuICAvLyAgIGxhYmVsOiAnanNvbicsXG4gIC8vICAgYXZhaWxhYmxlOiBmYWxzZVxuICAvLyB9LFxuICAvLyB7XG4gIC8vICAgaWQ6IEVYUE9SVF9EQVRBX1RZUEUuR0VPSlNPTixcbiAgLy8gICBsYWJlbDogJ2dlb2pzb24nLFxuICAvLyAgIGF2YWlsYWJsZTogZmFsc2VcbiAgLy8gfSxcbiAgLy8ge1xuICAvLyAgIGlkOiBFWFBPUlRfREFUQV9UWVBFLlRPUE9KU09OLFxuICAvLyAgIGxhYmVsOiAndG9wb2pzb24nLFxuICAvLyAgIGF2YWlsYWJsZTogZmFsc2VcbiAgLy8gfVxuXTtcblxuLy8gRXhwb3J0IG1hcCB0eXBlc1xuZXhwb3J0IGNvbnN0IEVYUE9SVF9NQVBfRk9STUFUUyA9IGtleU1pcnJvcih7XG4gIEhUTUw6IG51bGwsXG4gIEpTT046IG51bGxcbn0pO1xuXG5leHBvcnQgY29uc3QgRVhQT1JUX0hUTUxfTUFQX01PREVTID0ga2V5TWlycm9yKHtcbiAgUkVBRDogbnVsbCxcbiAgRURJVDogbnVsbFxufSk7XG5cbi8vIEV4cG9ydCBtYXAgb3B0aW9uc1xuZXhwb3J0IGNvbnN0IEVYUE9SVF9NQVBfRk9STUFUX09QVElPTlMgPSBPYmplY3QuZW50cmllcyhFWFBPUlRfTUFQX0ZPUk1BVFMpLm1hcChcbiAgKGVudHJ5OiBbc3RyaW5nLCBhbnldKSA9PiAoe1xuICAgIGlkOiBlbnRyeVswXSxcbiAgICBsYWJlbDogZW50cnlbMV0udG9Mb3dlckNhc2UoKSxcbiAgICBhdmFpbGFibGU6IHRydWVcbiAgfSlcbik7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRIVE1MTWFwTW9kZVRpbGVVcmwobW9kZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGBodHRwczovL2QxYTNmNHNwYXp6cnA0LmNsb3VkZnJvbnQubmV0L2tlcGxlci5nbC9kb2N1bWVudGF0aW9uL21hcC0ke21vZGUudG9Mb3dlckNhc2UoKX0tbW9kZS5wbmdgO1xufVxuXG5leHBvcnQgY29uc3QgRVhQT1JUX0hUTUxfTUFQX01PREVfT1BUSU9OUyA9IE9iamVjdC5lbnRyaWVzKEVYUE9SVF9IVE1MX01BUF9NT0RFUykubWFwKFxuICAoZW50cnk6IFtzdHJpbmcsIGFueV0pID0+ICh7XG4gICAgaWQ6IGVudHJ5WzBdLFxuICAgIGxhYmVsOiBgbW9kYWwuZXhwb3J0TWFwLmh0bWwuJHtlbnRyeVsxXS50b0xvd2VyQ2FzZSgpfWAsXG4gICAgYXZhaWxhYmxlOiB0cnVlLFxuICAgIHVybDogZ2V0SFRNTE1hcE1vZGVUaWxlVXJsKGVudHJ5WzFdKVxuICB9KVxuKTtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfVVVJRF9DT1VOVCA9IDY7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX05PVElGSUNBVElPTl9NRVNTQUdFID0gJ01FU1NBR0VfTk9UX1BST1ZJREVEJztcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfTk9USUZJQ0FUSU9OX1RZUEVTID0ga2V5TWlycm9yKHtcbiAgaW5mbzogbnVsbCxcbiAgZXJyb3I6IG51bGwsXG4gIHdhcm5pbmc6IG51bGwsXG4gIHN1Y2Nlc3M6IG51bGxcbn0pO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9OT1RJRklDQVRJT05fVE9QSUNTID0ga2V5TWlycm9yKHtcbiAgZ2xvYmFsOiBudWxsLFxuICBmaWxlOiBudWxsXG59KTtcblxuLy8gTWluaW11bSB0aW1lIGJldHdlZW4gaWRlbnRpY2FsIG5vdGlmaWNhdGlvbnMgYWJvdXQgZGVjay5nbCBlcnJvcnNcbmV4cG9ydCBjb25zdCBUSFJPVFRMRV9OT1RJRklDQVRJT05fVElNRSA9IDMzMDtcblxuLy8gQW5pbWF0aW9uXG5leHBvcnQgY29uc3QgQkFTRV9TUEVFRCA9IDYwMDtcbmV4cG9ydCBjb25zdCBGUFMgPSA2MDtcblxuLyoqXG4gKiA0IEFuaW1hdGlvbiBXaW5kb3cgVHlwZXNcbiAqIDEuIGZyZWVcbiAqICB8LT4gIHwtPlxuICogQ3VycmVudCB0aW1lIGlzIGEgZml4ZWQgcmFuZ2UsIGFuaW1hdGlvbiBjb250cm9sbGVyIGNhbGxzIG5leHQgYW5pbWF0aW9uIGZyYW1lcyBjb250aW51b3VzbHkgdG8gYW5pbWF0aW9uIGEgbW92aW5nIHdpbmRvd1xuICogVGhlIGluY3JlbWVudCBpZCBiYXNlZCBvbiBkb21haW4gLyBCQVNFX1NQRUVEICogU1BFRURcbiAqXG4gKiAyLiBpbmNyZW1lbnRhbFxuICogfCAgICB8LT5cbiAqIFNhbWUgYXMgZnJlZSwgY3VycmVudCB0aW1lIGlzIGEgZ3Jvd2luZyByYW5nZSwgb25seSB0aGUgbWF4IHZhbHVlIG9mIHJhbmdlIGluY3JlbWVudCBkdXJpbmcgYW5pbWF0aW9uLlxuICogVGhlIGluY3JlbWVudCBpcyBhbHNvIGJhc2VkIG9uIGRvbWFpbiAvIEJBU0VfU1BFRUQgKiBTUEVFRFxuICpcbiAqIDMuIHBvaW50XG4gKiBvIC0+IG9cbiAqIEN1cnJlbnQgdGltZSBpcyBhIHBvaW50LCBhbmltYXRpb24gY29udHJvbGxlciBjYWxscyBuZXh0IGFuaW1hdGlvbiBmcmFtZSBjb250aW51b3VzbHkgdG8gYW5pbWF0aW9uIGEgbW92aW5nIHBvaW50XG4gKiBUaGUgaW5jcmVtZW50IGlzIGJhc2VkIG9uIGRvbWFpbiAvIEJBU0VfU1BFRUQgKiBTUEVFRFxuICpcbiAqIDQuIGludGVydmFsXG4gKiBvIH4+IG9cbiAqIEN1cnJlbnQgdGltZSBpcyBhIHBvaW50LiBBbiBhcnJheSBvZiBzb3J0ZWQgdGltZSBzdGVwcyBuZWVkIHRvIGJlIHByb3ZpZGVkLlxuICogYW5pbWF0aW9uIGNvbnRyb2xsZXIgY2FsbHMgbmV4dCBhbmltYXRpb24gYXQgYSBpbnRlcnZhbCB3aGVuIHRoZSBwb2ludCBqdW1wcyB0byB0aGUgbmV4dCBzdGVwXG4gKi9cbmV4cG9ydCBjb25zdCBBTklNQVRJT05fV0lORE9XID0ga2V5TWlycm9yKHtcbiAgZnJlZTogbnVsbCxcbiAgaW5jcmVtZW50YWw6IG51bGwsXG4gIHBvaW50OiBudWxsLFxuICBpbnRlcnZhbDogbnVsbFxufSk7XG5leHBvcnQgY29uc3QgREVGQVVMVF9USU1FX0ZPUk1BVCA9ICdNTS9ERC9ZWSBISDptbTpzc2EnO1xuZXhwb3J0IGNvbnN0IFNQRUVEX0NPTlRST0xfUkFOR0U6IFtudW1iZXIsIG51bWJlcl0gPSBbMCwgMTBdO1xuZXhwb3J0IGNvbnN0IFNQRUVEX0NPTlRST0xfU1RFUCA9IDAuMDAxO1xuXG4vLyBHZW9jb2RlclxuZXhwb3J0IGNvbnN0IEdFT0NPREVSX0RBVEFTRVRfTkFNRSA9ICdnZW9jb2Rlcl9kYXRhc2V0JztcbmV4cG9ydCBjb25zdCBHRU9DT0RFUl9MQVlFUl9JRCA9ICdnZW9jb2Rlcl9sYXllcic7XG5leHBvcnQgY29uc3QgR0VPQ09ERVJfR0VPX09GRlNFVCA9IDAuMDU7XG5leHBvcnQgY29uc3QgR0VPQ09ERVJfSUNPTl9DT0xPUjogW251bWJlciwgbnVtYmVyLCBudW1iZXJdID0gWzI1NSwgMCwgMF07XG5leHBvcnQgY29uc3QgR0VPQ09ERVJfSUNPTl9TSVpFID0gODA7XG5cbi8vIEVkaXRvclxuZXhwb3J0IGNvbnN0IEVESVRPUl9MQVlFUl9JRCA9ICdrZXBsZXJfZWRpdG9yX2xheWVyJztcbmV4cG9ydCBjb25zdCBFRElUT1JfTEFZRVJfUElDS0lOR19SQURJVVMgPSA2O1xuZXhwb3J0IGNvbnN0IEVESVRPUl9NT0RFUyA9IHtcbiAgRFJBV19QT0xZR09OOiAnRFJBV19QT0xZR09OJyxcbiAgRFJBV19SRUNUQU5HTEU6ICdEUkFXX1JFQ1RBTkdMRScsXG4gIEVESVQ6ICdFRElUX1ZFUlRFWCdcbn07XG5cbmV4cG9ydCBjb25zdCBQTE9UX1RZUEVTID0ga2V5TWlycm9yKHtcbiAgaGlzdG9ncmFtOiBudWxsLFxuICBsaW5lQ2hhcnQ6IG51bGxcbn0pO1xuXG4vLyBGaWx0ZXJcbmV4cG9ydCBjb25zdCBJTklUX0ZJTFRFUl9JVEVNU19JTl9EUk9QRE9XTiA9IDEwMDtcblxuLy8gR1BVIEZpbHRlcmluZ1xuLyoqXG4gKiBNYXggbnVtYmVyIG9mIGZpbHRlciB2YWx1ZSBidWZmZXJzIHRoYXQgZGVjay5nbCBwcm92aWRlc1xuICovXG5leHBvcnQgY29uc3QgTUFYX0dQVV9GSUxURVJTID0gNDtcbmV4cG9ydCBjb25zdCBNQVBfVEhVTUJOQUlMX0RJTUVOU0lPTiA9IHtcbiAgd2lkdGg6IDMwMCxcbiAgaGVpZ2h0OiAyMDBcbn07XG5cbmV4cG9ydCBjb25zdCBNQVBfSU5GT19DSEFSQUNURVIgPSB7XG4gIHRpdGxlOiAxMDAsXG4gIGRlc2NyaXB0aW9uOiAxMDBcbn07XG5cbi8vIExvYWQgZGF0YVxuZXhwb3J0IGNvbnN0IExPQURJTkdfTUVUSE9EUyA9IGtleU1pcnJvcih7XG4gIHVwbG9hZDogbnVsbCxcbiAgc3RvcmFnZTogbnVsbCxcbiAgdGlsZXNldDogbnVsbFxufSk7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0ZFQVRVUkVfRkxBR1MgPSB7fTtcblxuZXhwb3J0IGNvbnN0IERBVEFTRVRfRk9STUFUUyA9IGtleU1pcnJvcih7XG4gIHJvdzogbnVsbCxcbiAgZ2VvanNvbjogbnVsbCxcbiAgY3N2OiBudWxsLFxuICBrZXBsZXJnbDogbnVsbCxcbiAgYXJyb3c6IG51bGxcbn0pO1xuXG5leHBvcnQgY29uc3QgTUFQX0NPTlRST0xTID0ga2V5TWlycm9yKHtcbiAgdmlzaWJsZUxheWVyczogbnVsbCxcbiAgbWFwTGVnZW5kOiBudWxsLFxuICB0b2dnbGUzZDogbnVsbCxcbiAgc3BsaXRNYXA6IG51bGwsXG4gIG1hcERyYXc6IG51bGwsXG4gIG1hcExvY2FsZTogbnVsbCxcbiAgZWZmZWN0OiBudWxsLFxuICBhaUFzc2lzdGFudDogbnVsbFxufSk7XG5cbi8qKlxuICogQSBtdWx0aXBsaWVyIGZvciBzY3JlZW4tc3BhY2Ugd2lkdGgvc2NhbGUgZm9yIEFyYywgTGluZSwgSWNvbiBhbmQgVGV4dCBsYXllcnMuXG4gKiBSZXF1aXJlZCBpbiBvcmRlciB0byBtYWludGFpbiB0aGUgc2FtZSBhcHBlYXJhbmNlIGFmdGVyIHVwZ3JhZGluZyB0byBkZWNrLmdsIHY4LjUuXG4gKiBodHRwczovL2dpdGh1Yi5jb20vdmlzZ2wvZGVjay5nbC9ibG9iL21hc3Rlci9kb2NzL3VwZ3JhZGUtZ3VpZGUubWRcbiAqL1xuZXhwb3J0IGNvbnN0IFBST0pFQ1RFRF9QSVhFTF9TSVpFX01VTFRJUExJRVIgPSAyIC8gMztcblxuLyoqXG4gKiBNYXhpbXVtIHZhbHVlIGZvciB0ZXh0IG91dGxpbmUgd2lkdGhcbiAqL1xuZXhwb3J0IGNvbnN0IFRFWFRfT1VUTElORV9NVUxUSVBMSUVSID0gNTtcblxuZXhwb3J0IGNvbnN0IGRhdGFUZXN0SWRzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICBpbmZvSWNvbjogJ2luZm8taWNvbicsXG4gIHdhcm5pbmdJY29uOiAnd2FybmluZy1pY29uJyxcbiAgZXJyb3JJY29uOiAnZXJyb3ItaWNvbicsXG4gIHN1Y2Nlc3NJY29uOiAnc3VjY2Vzcy1pY29uJyxcbiAgY2hlY2ttYXJrSWNvbjogJ2NoZWNrbWFyay1pY29uJyxcbiAgc29ydGFibGVMYXllckl0ZW06ICdzb3J0YWJsZS1sYXllci1pdGVtJyxcbiAgc3RhdGljTGF5ZXJJdGVtOiAnc3RhdGljLWxheWVyLWl0ZW0nLFxuICBsYXllclRpdGxlRWRpdG9yOiAnbGF5ZXJfX3RpdGxlX19lZGl0b3InLFxuICByZW1vdmVMYXllckFjdGlvbjogJ3JlbW92ZS1sYXllci1hY3Rpb24nLFxuICBsYXllclBhbmVsOiAnbGF5ZXItcGFuZWwnLFxuICBzb3J0YWJsZUVmZmVjdEl0ZW06ICdzb3J0YWJsZS1lZmZlY3QtaXRlbScsXG4gIHN0YXRpY0VmZmVjdEl0ZW06ICdzdGF0aWMtZWZmZWN0LWl0ZW0nLFxuICBwcm92aWRlckxvYWRpbmc6ICdwcm92aWRlci1sb2FkaW5nJyxcbiAgcHJvdmlkZXJNYXBJbmZvUGFuZWw6ICdwcm92aWRlci1tYXAtaW5mby1wYW5lbCcsXG4gIHByb3ZpZGVyU2VsZWN0OiAncHJvdmlkZXItc2VsZWN0JyxcbiAgY2xvdWRIZWFkZXI6ICdjbG91ZC1oZWFkZXInLFxuICBwcm92aWRlclNoYXJlTWFwOiAncHJvdmlkZXItc2hhcmUtbWFwJ1xufTtcblxuLy8gRWZmZWN0c1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfVElNRVpPTkUgPSAnVVRDJztcbmV4cG9ydCBjb25zdCBERUZBVUxUX1BPU1RfUFJPQ0VTU0lOR19FRkZFQ1RfVFlQRSA9ICdpbmsnO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9MSUdIVF9DT0xPUjogW251bWJlciwgbnVtYmVyLCBudW1iZXJdID0gWzI1NSwgMjU1LCAyNTVdO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfTElHSFRfSU5URU5TSVRZID0gMTtcbmV4cG9ydCBjb25zdCBERUZBVUxUX1NIQURPV19JTlRFTlNJVFkgPSAwLjU7XG5leHBvcnQgY29uc3QgREVGQVVMVF9TSEFET1dfQ09MT1I6IFtudW1iZXIsIG51bWJlciwgbnVtYmVyXSA9IFswLCAwLCAwXTtcblxuZXhwb3J0IGNvbnN0IExJR0hUX0FORF9TSEFET1dfRUZGRUNUX1RJTUVfTU9ERVMgPSB7XG4gIHBpY2s6ICdwaWNrJyBhcyBjb25zdCxcbiAgY3VycmVudDogJ2N1cnJlbnQnIGFzIGNvbnN0LFxuICBhbmltYXRpb246ICdhbmltYXRpb24nIGFzIGNvbnN0XG59O1xuZXhwb3J0IHR5cGUgTGlnaHRBbmRTaGFkb3dFZmZlY3RUaW1lTW9kZSA9ICdwaWNrJyB8ICdjdXJyZW50JyB8ICdhbmltYXRpb24nO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfTElHSFRfQU5EX1NIQURPV19QUk9QUzoge1xuICB0aW1lc3RhbXA6IG51bWJlcjtcbiAgdGltZU1vZGU6IExpZ2h0QW5kU2hhZG93RWZmZWN0VGltZU1vZGU7XG4gIHNoYWRvd0ludGVuc2l0eTogbnVtYmVyO1xuICBzaGFkb3dDb2xvcjogW251bWJlciwgbnVtYmVyLCBudW1iZXJdO1xuICBzdW5MaWdodENvbG9yOiBbbnVtYmVyLCBudW1iZXIsIG51bWJlcl07XG4gIHN1bkxpZ2h0SW50ZW5zaXR5OiBudW1iZXI7XG4gIGFtYmllbnRMaWdodENvbG9yOiBbbnVtYmVyLCBudW1iZXIsIG51bWJlcl07XG4gIGFtYmllbnRMaWdodEludGVuc2l0eTogbnVtYmVyO1xufSA9IHtcbiAgdGltZXN0YW1wOiBEYXRlLm5vdygpLFxuICB0aW1lTW9kZTogTElHSFRfQU5EX1NIQURPV19FRkZFQ1RfVElNRV9NT0RFUy5waWNrIGFzIExpZ2h0QW5kU2hhZG93RWZmZWN0VGltZU1vZGUsXG4gIHNoYWRvd0ludGVuc2l0eTogREVGQVVMVF9TSEFET1dfSU5URU5TSVRZLFxuICBzaGFkb3dDb2xvcjogWy4uLkRFRkFVTFRfU0hBRE9XX0NPTE9SXSBhcyBbbnVtYmVyLCBudW1iZXIsIG51bWJlcl0sXG4gIHN1bkxpZ2h0Q29sb3I6IFsuLi5ERUZBVUxUX0xJR0hUX0NPTE9SXSBhcyBbbnVtYmVyLCBudW1iZXIsIG51bWJlcl0sXG4gIHN1bkxpZ2h0SW50ZW5zaXR5OiBERUZBVUxUX0xJR0hUX0lOVEVOU0lUWSxcbiAgYW1iaWVudExpZ2h0Q29sb3I6IFsuLi5ERUZBVUxUX0xJR0hUX0NPTE9SXSBhcyBbbnVtYmVyLCBudW1iZXIsIG51bWJlcl0sXG4gIGFtYmllbnRMaWdodEludGVuc2l0eTogREVGQVVMVF9MSUdIVF9JTlRFTlNJVFlcbn07XG5cbmV4cG9ydCBjb25zdCBMSUdIVF9BTkRfU0hBRE9XX0VGRkVDVDogRWZmZWN0RGVzY3JpcHRpb24gPSB7XG4gIHR5cGU6ICdsaWdodEFuZFNoYWRvdycsXG4gIG5hbWU6ICdMaWdodCAmIFNoYWRvdycsXG4gIHBhcmFtZXRlcnM6IFtcbiAgICB7bmFtZTogJ3RpbWVzdGFtcCcsIG1pbjogMCwgbWF4OiBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUn0sXG4gICAge25hbWU6ICdzaGFkb3dJbnRlbnNpdHknLCBtaW46IDAsIG1heDogMSwgZGVmYXVsdFZhbHVlOiBERUZBVUxUX1NIQURPV19JTlRFTlNJVFl9LFxuICAgIHtuYW1lOiAnc3VuTGlnaHRJbnRlbnNpdHknLCBtaW46IDAsIG1heDogMSwgZGVmYXVsdFZhbHVlOiBERUZBVUxUX0xJR0hUX0lOVEVOU0lUWX0sXG4gICAge25hbWU6ICdhbWJpZW50TGlnaHRJbnRlbnNpdHknLCBtaW46IDAsIG1heDogMSwgZGVmYXVsdFZhbHVlOiBERUZBVUxUX0xJR0hUX0lOVEVOU0lUWX0sXG4gICAge25hbWU6ICdzaGFkb3dDb2xvcicsIHR5cGU6ICdjb2xvcicsIG1pbjogMCwgbWF4OiAyNTUsIGRlZmF1bHRWYWx1ZTogREVGQVVMVF9TSEFET1dfQ09MT1J9LFxuICAgIHtuYW1lOiAnc3VuTGlnaHRDb2xvcicsIHR5cGU6ICdjb2xvcicsIG1pbjogMCwgbWF4OiAyNTUsIGRlZmF1bHRWYWx1ZTogREVGQVVMVF9MSUdIVF9DT0xPUn0sXG4gICAge25hbWU6ICdhbWJpZW50TGlnaHRDb2xvcicsIHR5cGU6ICdjb2xvcicsIG1pbjogMCwgbWF4OiAyNTUsIGRlZmF1bHRWYWx1ZTogREVGQVVMVF9MSUdIVF9DT0xPUn1cbiAgXVxufTtcblxuZXhwb3J0IGNvbnN0IFBPU1RQUk9DRVNTSU5HX0VGRkVDVFM6IHtba2V5OiBzdHJpbmddOiBFZmZlY3REZXNjcmlwdGlvbn0gPSB7XG4gIGluazoge1xuICAgIHR5cGU6ICdpbmsnLFxuICAgIG5hbWU6ICdJbmsnLFxuICAgIHBhcmFtZXRlcnM6IFt7bmFtZTogJ3N0cmVuZ3RoJywgbWluOiAwLCBtYXg6IDF9XVxuICB9LFxuICBicmlnaHRuZXNzQ29udHJhc3Q6IHtcbiAgICB0eXBlOiAnYnJpZ2h0bmVzc0NvbnRyYXN0JyxcbiAgICBuYW1lOiAnQnJpZ2h0bmVzcyAmIENvbnRyYXN0JyxcbiAgICBwYXJhbWV0ZXJzOiBbXG4gICAgICB7bmFtZTogJ2JyaWdodG5lc3MnLCBtaW46IC0xLCBtYXg6IDF9LFxuICAgICAge25hbWU6ICdjb250cmFzdCcsIG1pbjogLTEsIG1heDogMX1cbiAgICBdXG4gIH0sXG4gIGh1ZVNhdHVyYXRpb246IHtcbiAgICB0eXBlOiAnaHVlU2F0dXJhdGlvbicsXG4gICAgbmFtZTogJ0h1ZSAmIFNhdHVyYXRpb24nLFxuICAgIHBhcmFtZXRlcnM6IFtcbiAgICAgIHtuYW1lOiAnaHVlJywgbWluOiAtMSwgbWF4OiAxfSxcbiAgICAgIHtuYW1lOiAnc2F0dXJhdGlvbicsIGRlZmF1bHRWYWx1ZTogMC4yNSwgbWluOiAtMSwgbWF4OiAxfVxuICAgIF1cbiAgfSxcbiAgdmlicmFuY2U6IHtcbiAgICB0eXBlOiAndmlicmFuY2UnLFxuICAgIG5hbWU6ICdWaWJyYW5jZScsXG4gICAgcGFyYW1ldGVyczogW3tuYW1lOiAnYW1vdW50JywgZGVmYXVsdFZhbHVlOiAwLjUsIG1pbjogLTEsIG1heDogMX1dXG4gIH0sXG4gIHNlcGlhOiB7XG4gICAgdHlwZTogJ3NlcGlhJyxcbiAgICBuYW1lOiAnU2VwaWEnLFxuICAgIHBhcmFtZXRlcnM6IFt7bmFtZTogJ2Ftb3VudCcsIG1pbjogMCwgbWF4OiAxfV1cbiAgfSxcbiAgZG90U2NyZWVuOiB7XG4gICAgdHlwZTogJ2RvdFNjcmVlbicsXG4gICAgbmFtZTogJ0RvdCBTY3JlZW4nLFxuICAgIHBhcmFtZXRlcnM6IFtcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ2FuZ2xlJyxcbiAgICAgICAgbWluOiAwLFxuICAgICAgICBtYXg6IE1hdGguUEkgLyAyXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnc2l6ZScsXG4gICAgICAgIG1pbjogMSxcbiAgICAgICAgbWF4OiAyMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ2NlbnRlcicsXG4gICAgICAgIHR5cGU6ICdhcnJheScsXG4gICAgICAgIGxhYmVsOiBbJ0NlbnRlciBYJywgJ0NlbnRlciBZJ10sXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogWzAuNSwgMC41XSxcbiAgICAgICAgbWluOiAwLFxuICAgICAgICBtYXg6IDFcbiAgICAgIH1cbiAgICBdXG4gIH0sXG4gIGNvbG9ySGFsZnRvbmU6IHtcbiAgICB0eXBlOiAnY29sb3JIYWxmdG9uZScsXG4gICAgbmFtZTogJ0NvbG9yIEhhbGZ0b25lJyxcbiAgICBwYXJhbWV0ZXJzOiBbXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdhbmdsZScsXG4gICAgICAgIG1pbjogMCxcbiAgICAgICAgbWF4OiBNYXRoLlBJIC8gMlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ3NpemUnLFxuICAgICAgICBtaW46IDEsXG4gICAgICAgIG1heDogMjBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdjZW50ZXInLFxuICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICBsYWJlbDogWydDZW50ZXIgWCcsICdDZW50ZXIgWSddLFxuICAgICAgICBkZWZhdWx0VmFsdWU6IFswLjUsIDAuNV0sXG4gICAgICAgIG1pbjogMCxcbiAgICAgICAgbWF4OiAxXG4gICAgICB9XG4gICAgXVxuICB9LFxuICBub2lzZToge1xuICAgIHR5cGU6ICdub2lzZScsXG4gICAgbmFtZTogJ05vaXNlJyxcbiAgICBwYXJhbWV0ZXJzOiBbe25hbWU6ICdhbW91bnQnLCBtaW46IDAsIG1heDogMX1dXG4gIH0sXG4gIHRyaWFuZ2xlQmx1cjoge1xuICAgIHR5cGU6ICd0cmlhbmdsZUJsdXInLFxuICAgIG5hbWU6ICdCbHVyIChUcmlhbmdsZSknLFxuICAgIHBhcmFtZXRlcnM6IFt7bmFtZTogJ3JhZGl1cycsIG1pbjogMCwgbWF4OiAxMDB9XVxuICB9LFxuICB6b29tQmx1cjoge1xuICAgIHR5cGU6ICd6b29tQmx1cicsXG4gICAgbmFtZTogJ0JsdXIgKFpvb20pJyxcbiAgICBwYXJhbWV0ZXJzOiBbXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdzdHJlbmd0aCcsXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogMC4wNSxcbiAgICAgICAgbWluOiAwLFxuICAgICAgICBtYXg6IDFcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdjZW50ZXInLFxuICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICBsYWJlbDogWydDZW50ZXIgWCcsICdDZW50ZXIgWSddLFxuICAgICAgICBkZWZhdWx0VmFsdWU6IFswLjUsIDAuNV0sXG4gICAgICAgIG1pbjogMCxcbiAgICAgICAgbWF4OiAxXG4gICAgICB9XG4gICAgXVxuICB9LFxuICB0aWx0U2hpZnQ6IHtcbiAgICB0eXBlOiAndGlsdFNoaWZ0JyxcbiAgICBuYW1lOiAnQmx1ciAoVGlsdCBTaGlmdCknLFxuICAgIHBhcmFtZXRlcnM6IFtcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ2JsdXJSYWRpdXMnLFxuICAgICAgICBsYWJlbDogJ0JsdXInLFxuICAgICAgICBtaW46IDAsXG4gICAgICAgIG1heDogNTBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdncmFkaWVudFJhZGl1cycsXG4gICAgICAgIGxhYmVsOiAnR3JhZGllbnQnLFxuICAgICAgICBtaW46IDAsXG4gICAgICAgIG1heDogNDAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnc3RhcnQnLFxuICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICBsYWJlbDogWydTdGFydCcsIGZhbHNlXSxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBbMC4wLCAwLjBdLFxuICAgICAgICBtaW46IDAsXG4gICAgICAgIG1heDogMVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ2VuZCcsXG4gICAgICAgIHR5cGU6ICdhcnJheScsXG4gICAgICAgIGxhYmVsOiBbJ0VuZCcsIGZhbHNlXSxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBbMSwgMV0sXG4gICAgICAgIG1pbjogMCxcbiAgICAgICAgbWF4OiAxXG4gICAgICB9XG4gICAgXVxuICB9LFxuICBlZGdlV29yazoge1xuICAgIHR5cGU6ICdlZGdlV29yaycsXG4gICAgbmFtZTogJ0VkZ2Ugd29yaycsXG4gICAgcGFyYW1ldGVyczogW3tuYW1lOiAncmFkaXVzJywgbWluOiAxLCBtYXg6IDUwfV1cbiAgfSxcbiAgdmlnbmV0dGU6IHtcbiAgICB0eXBlOiAndmlnbmV0dGUnLFxuICAgIG5hbWU6ICdWaWduZXR0ZScsXG4gICAgcGFyYW1ldGVyczogW1xuICAgICAge25hbWU6ICdhbW91bnQnLCBtaW46IDAsIG1heDogMX0sXG4gICAgICB7bmFtZTogJ3JhZGl1cycsIG1pbjogMCwgbWF4OiAxfVxuICAgIF1cbiAgfSxcbiAgbWFnbmlmeToge1xuICAgIHR5cGU6ICdtYWduaWZ5JyxcbiAgICBuYW1lOiAnTWFnbmlmeScsXG4gICAgcGFyYW1ldGVyczogW1xuICAgICAge1xuICAgICAgICBuYW1lOiAnc2NyZWVuWFknLFxuICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICBsYWJlbDogWydQb3NpdGlvbiBYJywgJ1Bvc2l0aW9uIFknXSxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBbMC41LCAwLjVdLFxuICAgICAgICBtaW46IDAsXG4gICAgICAgIG1heDogMVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ3JhZGl1c1BpeGVscycsXG4gICAgICAgIGxhYmVsOiAnU2l6ZScsXG4gICAgICAgIG1pbjogMTAsXG4gICAgICAgIG1heDogNTAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnem9vbScsXG4gICAgICAgIG1pbjogMC41LFxuICAgICAgICBtYXg6IDUwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnYm9yZGVyV2lkdGhQaXhlbHMnLFxuICAgICAgICBsYWJlbDogJ0JvcmRlciBXaWR0aCcsXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogMyxcbiAgICAgICAgbWluOiAwLFxuICAgICAgICBtYXg6IDUwXG4gICAgICB9XG4gICAgXVxuICB9LFxuICBoZXhhZ29uYWxQaXhlbGF0ZToge1xuICAgIHR5cGU6ICdoZXhhZ29uYWxQaXhlbGF0ZScsXG4gICAgbmFtZTogJ0hleGFnb25hbCBQaXhlbGF0ZScsXG4gICAgcGFyYW1ldGVyczogW3tuYW1lOiAnc2NhbGUnLCBkZWZhdWx0VmFsdWU6IDIwLCBtaW46IDEsIG1heDogNTB9XVxuICB9XG59O1xuXG5leHBvcnQgY29uc3QgRUZGRUNUX0RFU0NSSVBUSU9OUzogRWZmZWN0RGVzY3JpcHRpb25bXSA9IFtcbiAgTElHSFRfQU5EX1NIQURPV19FRkZFQ1QsXG4gIC4uLk9iamVjdC5rZXlzKFBPU1RQUk9DRVNTSU5HX0VGRkVDVFMpLm1hcChrZXlOYW1lID0+IFBPU1RQUk9DRVNTSU5HX0VGRkVDVFNba2V5TmFtZV0pXG5dO1xuXG5leHBvcnQgdHlwZSBFZmZlY3RUeXBlID1cbiAgfCAnaW5rJ1xuICB8ICdicmlnaHRuZXNzQ29udHJhc3QnXG4gIHwgJ2h1ZVNhdHVyYXRpb24nXG4gIHwgJ3ZpYnJhbmNlJ1xuICB8ICdzZXBpYSdcbiAgfCAnZG90U2NyZWVuJ1xuICB8ICdjb2xvckhhbGZ0b25lJ1xuICB8ICdub2lzZSdcbiAgfCAndHJpYW5nbGVCbHVyJ1xuICB8ICd6b29tQmx1cidcbiAgfCAndGlsdFNoaWZ0J1xuICB8ICdlZGdlV29yaydcbiAgfCAndmlnbmV0dGUnXG4gIHwgJ21hZ25pZnknXG4gIHwgJ2hleGFnb25hbFBpeGVsYXRlJ1xuICB8ICdsaWdodEFuZFNoYWRvdyc7XG5cbmV4cG9ydCBjb25zdCBTWU5DX1RJTUVMSU5FX01PREVTOiBSZWNvcmQ8c3RyaW5nLCBTeW5jVGltZWxpbmVNb2RlPiA9IHtcbiAgc3RhcnQ6IDAsXG4gIGVuZDogMVxufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUdBLElBQUFBLFVBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUdBLElBQUFDLFFBQUEsR0FBQUQsT0FBQTtBQVVBLElBQUFFLFFBQUEsR0FBQUYsT0FBQTtBQUErQyxJQUFBRyxtQkFBQSxFQUFBQyxXQUFBLEVBaEIvQztBQUNBO0FBQUEsU0FBQUMsUUFBQUMsQ0FBQSxFQUFBQyxDQUFBLFFBQUFDLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxJQUFBLENBQUFKLENBQUEsT0FBQUcsTUFBQSxDQUFBRSxxQkFBQSxRQUFBQyxDQUFBLEdBQUFILE1BQUEsQ0FBQUUscUJBQUEsQ0FBQUwsQ0FBQSxHQUFBQyxDQUFBLEtBQUFLLENBQUEsR0FBQUEsQ0FBQSxDQUFBQyxNQUFBLFdBQUFOLENBQUEsV0FBQUUsTUFBQSxDQUFBSyx3QkFBQSxDQUFBUixDQUFBLEVBQUFDLENBQUEsRUFBQVEsVUFBQSxPQUFBUCxDQUFBLENBQUFRLElBQUEsQ0FBQUMsS0FBQSxDQUFBVCxDQUFBLEVBQUFJLENBQUEsWUFBQUosQ0FBQTtBQUFBLFNBQUFVLGNBQUFaLENBQUEsYUFBQUMsQ0FBQSxNQUFBQSxDQUFBLEdBQUFZLFNBQUEsQ0FBQUMsTUFBQSxFQUFBYixDQUFBLFVBQUFDLENBQUEsV0FB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
|